From e51829e77a02a5d9468b3a221039baef03bf8858 Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Thu, 25 Nov 2021 20:08:59 +0800
Subject: [PATCH] 文件删除

---
 /dev/null |  136 ---------------------------------------------
 1 files changed, 0 insertions(+), 136 deletions(-)

diff --git a/.eslintignore b/.eslintignore
deleted file mode 100644
index 8ec7403..0000000
--- a/.eslintignore
+++ /dev/null
@@ -1,3 +0,0 @@
-unpackage
-node_modules
-uview-ui
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index baba63b..0000000
--- a/.gitignore
+++ /dev/null
@@ -1,27 +0,0 @@
-.DS_Store
-node_modules/
-dist/
-unpackage/
-.hbuilderx/
-
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-**/*.log
-
-tests/**/coverage/
-tests/e2e/reports
-selenium-debug.log
-
-# Editor directories and files
-.idea
-.vscode
-*.suo
-*.ntvs*
-*.njsproj
-*.sln
-*.local
-.env.development
-
-package-lock.json
-yarn.lock
diff --git a/.project b/.project
deleted file mode 100644
index 64e13ad..0000000
--- a/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>exam-app</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>com.aptana.ide.core.unifiedBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>com.aptana.projects.webnature</nature>
-	</natures>
-</projectDescription>
diff --git a/App.vue b/App.vue
deleted file mode 100644
index 2ceb0f3..0000000
--- a/App.vue
+++ /dev/null
@@ -1,197 +0,0 @@
-<script>
-	import WxStorage from "./static/lib/wxStorage.js" //微信Storage
-	export default {
-		data() {
-			return {
-				login: '',
-
-				show: true,
-				name: 'a',
-				list: [{
-					"name": 'tip',
-					"msg": 'The first content!'
-				}],
-				content: '123456'
-			}
-		},
-		methods: {
-			judgeAdmin() {
-				var scss = this.$route.path == "/pages/loging/loging";
-				wx.getSystemInfo({
-					success(res) {
-						console.log(res)
-					}
-				})
-				console.log(this.$store.state.logPath, 'scss')
-				if (scss) {
-					return
-				}
-				this.login = WxStorage.get("init");
-				// console.log(this.login, 'login')
-				if (this.login == "false") {
-					wx.navigateTo({
-						url: 'pages/loging/loging?id=1',
-					})
-				}
-			},
-			//发送消息
-			send: function() {
-				if (this.content) {
-					this.list.push({
-						"name": this.name,
-						"msg": this.content
-					})
-					console.log(this.list)
-					this.socket.emit('sendMessage', {
-						"name": this.name,
-						"msg": this.content
-					});
-					this.content = ''
-					uni.pageScrollTo({
-						duration: 0,
-						scrollTop: this.list.length * 100
-					})
-				} else {
-					uni.showToast({
-						title: '请输入内容',
-						icon: 'none'
-					})
-				}
-			},
-			//提交姓名
-			onSubmitName: function() {
-				console.log(this.name)
-				if (this.name) {
-					this.show = false
-					this.socket.emit('newPeople', this.name);
-				}
-			},
-			getLocationFn() {
-				const _this = this
-				uni.getLocation({
-					type: 'gcj02', // <map> 组件默认为国测局坐标gcj02
-					altitude: true,
-					success(res) {
-						console.log('返回的位置信息', res, _this)
-						_this.globalData.userInfo = {
-							latitude: res.latitude,
-							longitude: res.longitude
-						}
-					}
-				})
-			},
-			handleAuthorize() {
-				const _this = this // 下边this 为undefined
-				uni.authorize({
-					scope: 'scope.userLocation', // 获取地理信息必填的参数,其它参数见文档
-					success(res) {
-						_this.getLocationFn()
-					},
-					// 授权失败
-					fail(err) {
-						err = err['errMsg']
-						uni.showModal({
-								title: '温馨提示',
-								content: '为获取位置信息,您必须授权!',
-								showCancel: false,
-								confirmText: '确认授权'
-							})
-							// 这里只设置了确认按钮,没有取消按钮
-							.then(res => {
-								//res : [null, {cancel: false, confirm: true, errMsg: 'showModal: ok'}]
-								if (res[1]['confirm']) { // 点击了确认按钮时
-									// 调用下边方法时,会弹出 【使用我的地理位置】界面, 未设置直接返回,还是会走fail授权失败的函数,
-									// 还是会弹出上边的温馨提示!!!
-									// 如果设置, scope.userLocation: true
-									uni.openSetting({
-										success(res) {
-											// 如果不设置,res结果:
-											// {errMsg: "openSetting:ok", authSetting: {scope.userLocation: false}}
-											// 如果设置, res结果: 
-											// {errMsg: "openSetting:ok", authSetting: {scope.userLocation: true}}
-											// console.log('小程序设置界面:', res)
-										}
-									})
-								}
-							})
-					}
-				})
-			}
-		},
-		watch: {},
-		mounted() {
-			// 加载长连接服务器
-			// this.socket.on('connect', () => {
-			// 	console.log('connection created.');
-			// 	// that.onSubmitName();
-			// });
-
-
-
-		},
-		onLaunch: function() { //初始化完成时触发(全局只触发一次)
-			var that = this;
-			if (WxStorage.get("init") == '') {
-				WxStorage.set("init", 'false');
-				console.log('第一次进入');
-
-				// uni.connectSocket({
-				// 	url: 'ws://192.168.0.111:9034/websocket'
-				// });
-
-				// uni.onSocketOpen(function(res) {
-				// 	socketOpen = true;
-				// 	sendSocketMessage();
-				// });
-
-				// function sendSocketMessage() {
-				// 	var data = {
-				// 				type: that.$store.state.puserName,
-				// 				id: that.$store.state.puserID
-				// 			}
-				// 	if (socketOpen) {
-				// 		uni.sendSocketMessage({
-				// 			data: JSON.stringify(data)
-				// 		});
-				// 	}
-				// }
-
-				// 加载长连接服务器
-				// this.socket.on('connect', () => {
-				// 	console.log('connection created.');
-				// 	that.onSubmitName();
-				// });
-
-			}
-			// this.judgeAdmin();
-		},
-		onShow: function() { //当 uni-app 启动,或从后台进入前台显示 //监听用户进入小程序
-			// console.log('App Show')
-			// this.judgeAdmin();
-			// this.handleAuthorize()
-		},
-		onHide: function() {
-			// console.log('App Hide')
-		}
-	}
-</script>
-
-<style lang="scss">
-	// @import '@smallwei/avue/lib/index.css';
-	/*uview全局样式*/
-	@import "uview-ui/index.scss";
-	/*app全局样式*/
-	@import 'static/style/app.scss';
-
-	uni-page-wrapper {
-		width: 100%;
-		height: 100%;
-	}
-
-	uni-page-body {
-		width: 100%;
-		height: 100%;
-	}
-
-	/*每个页面公共css */
-</style>
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index cd712f3..0000000
--- a/LICENSE
+++ /dev/null
@@ -1,34 +0,0 @@
-BladeX商业授权许可协议
-
-一、 知识产权:
-BladeX系列产品知识产权归上海布雷德网络科技独立所有
-
-二、 许可:
-1. 在您完全接受并遵守本协议的基础上,本协议授予您使用BladeX的某些权利和非独占性许可。
-2. 本协议中,将本产品使用用途分为“专业版用途”和“企业版用途”。
-3. “专业版用途”定义:指个人在非团体机构中出于任何目的使用本产品(任何目的包括商业目的或非盈利目的)。
-4. “企业版用途”定义:指团体机构(例如公司企业、政府、学校、军队、医院、社会团体等各类组织)(不包含集团,若集团使用则需为各个子公司分别购买企业授权)出于任何目的使用本产品(任何目的包括商业目的或非盈利目的)。
-
-三、 约束和限制:
-1. 本产品只能由您为本协议许可的目的而使用,您不得透露给任何第三方;
-2. 从本产品取得的任何信息、软件、产品或服务,您不得对其进行修改、改编或基于以上内容创建同种类别的衍生产品并售卖。
-3. 您不得对本产品以及与之关联的商业授权进行发布、出租、销售、分销、抵押、转让、许可或发放子许可证。
-4. 本产品商业授权版可能包含一些独立功能或特性,这些功能只有在您购买商业授权后才可以使用。在未取得商业授权的情况下,您不得使用、尝试使用或复制这些授权版独立功能。
-5. 若您的客户要求以源码方式交付软件,需缴纳企业版授权费用,否则本产品部分不得提供源码。
-
-四、 不得用于非法或禁止的用途:
-您在使用本产品或服务时,不得将本产品产品或服务用于任何非法用途或本协议条款、条件和声明禁止的用途。
-
-五、 免责说明:
-1. 本产品按“现状”授予许可,您须自行承担使用本产品的风险。BladeX团队不对此提供任何明示、暗示或任何其它形式的担保和表示。在任何情况下,对于因使用或无法使用本软件而导致的任何损失(包括但不仅限于商业利润损失、业务中断或业务信息丢失),BladeX团队无需向您或任何第三方负责,即使BladeX团队已被告知可能会造成此类损失。在任何情况下, BladeX团队均不就任何直接的、间接的、附带的、后果性的、特别的、惩戒性的和处罚性的损害赔偿承担任何责任,无论该主张是基于保证、合同、侵权(包括疏忽)或是基于其他原因作出。
-2. 本产品可能内置有第三方服务,您应自行评估使用这些第三方服务的风险,由使用此类第三方服务而产生的纠纷,全部责任由您自行承担。
-3. BladeX团队不对使用本产品构建的网站中任何信息内容以及导致的任何版权纠纷、法律争议和后果承担任何责任,全部责任由您自行承担。
-4. BladeX团队可能会经常提供产品更新或升级,但BladeX团队没有为根据本协议许可的产品提供维护或更新的责任。
-5. BladeX团队可能会按照官方制定的答疑规则为您进行答疑,但BladeX团队没有为根据本协议许可的产品提供技术支持的义务或责任。
-
-六、 权利和所有权的保留:
-BladeX团队保留所有未在本协议中明确授予您的所有权利。BladeX团队保留随时更新本协议的权利,并只需公示于对应产品项目的LICENSE文件,无需征得您的事先同意且无需另行通知,更新后的内容应于公示即时生效。您可以随时访问产品地址并查阅最新版许可条款,在更新生效后您继续使用本产品则被视作您已接受了新的条款。
-
-七、 协议终止
-1. 您一旦开始复制、下载、安装或者使用本产品,即被视为完全理解并接受本协议的各项条款,在享有上述条款授予的许可权力同时,也受到相关的约束和限制,本协议许可范围以外的行为,将直接违反本协议并构成侵权。
-2. 一旦您违反本协议的条款,BladeX团队随时可能终止本协议、收回许可和授权,并要求您承担相应法律和经济责任。
diff --git a/README.md b/README.md
deleted file mode 100644
index 0f59c98..0000000
--- a/README.md
+++ /dev/null
@@ -1,43 +0,0 @@
-## 版权声明
-* BladeX是一个商业化软件,系列产品知识产权归**上海布雷德网络科技**独立所有
-* 您一旦开始复制、下载、安装或者使用本产品,即被视为完全理解并接受本协议的各项条款
-* 更多详情请看:[BladeX商业授权许可协议](/LICENSE)
-
-## 答疑流程
->1. 遇到问题或Bug
->2. 业务型问题打断点调试尝试找出问题所在
->3. 系统型问题通过百度、谷歌、社区查找解决方案
->4. 未解决问题则进入技术社区进行发帖提问:[https://sns.bladex.vip/](https://sns.bladex.vip/)
->5. 将帖子地址发至商业群,特别简单三言两语就能描述清楚的也可在答疑时间内发至商业群提问
->6. 发帖的时候一定要描述清楚,详细描述遇到问题的**重现步骤**、**报错详细信息**、**相关代码与逻辑**、**使用软件版本**以及**操作系统版本**,否则随意发帖提问将会提高我们的答疑难度。
-
-## 答疑时间
-* 工作日:9:00 ~ 17:00 提供答疑,周末、节假日休息,暂停答疑
-* 请勿**私聊提问**,以免被其他用户的消息覆盖从而无法获得答疑
-* 答疑时间外遇到问题可以将问题发帖至[技术社区](https://sns.bladex.vip/),我们后续会逐个回复
-
-## 授权范围
-* 专业版:只可用于**个人学习**及**个人私活**项目,不可用于公司或团队,不可泄露给任何第三方
-* 企业版:可用于**企业名下**的任何项目,企业版员工在**未购买**专业版授权前,只授权开发**所在授权企业名下**的项目,**不得将BladeX用于个人私活**
-* 共同遵守:若甲方需要您提供项目源码,则需代为甲方购买BladeX企业授权,甲方购买后续的所有项目都无需再次购买授权
-
-## 商用权益
-* ✔️ 遵守[商业协议](/LICENSE)的前提下,将BladeX系列产品用于授权范围内的商用项目,并上线运营
-* ✔️ 遵守[商业协议](/LICENSE)的前提下,不限制项目数,不限制服务器数
-* ✔️ 遵守[商业协议](/LICENSE)的前提下,将自行编写的业务代码申请软件著作权
-
-## 何为侵权
-* ❌ 不遵守商业协议,私自销售商业源码
-* ❌ 以任何理由将BladeX源码用于申请软件著作权
-* ❌ 将商业源码以任何途径任何理由泄露给未授权的单位或个人
-* ❌ 开发完毕项目,没有为甲方购买企业授权,向甲方提供了BladeX代码
-* ❌ 基于BladeX拓展研发与BladeX有竞争关系的衍生框架,并将其开源或销售
-
-## 侵权后果
-* 情节较轻:第一次发现警告处理
-* 情节较重:封禁账号,踢出商业群,并保留追究法律责任的权利
-* 情节严重:与本地律师事务所合作,以公司名义起诉侵犯计算机软件著作权
-
-## 举报有奖
-* 向官方提供有用线索并成功捣毁盗版个人或窝点,将会看成果给予 500~10000 不等的现金奖励
-* 官方唯一指定QQ:1272154962
\ No newline at end of file
diff --git a/api/demo.js b/api/demo.js
deleted file mode 100644
index 986933b..0000000
--- a/api/demo.js
+++ /dev/null
@@ -1,14 +0,0 @@
-import http from '@/http/api.js'
-
-// 获取验证码
-const captcha = (data) => {
-	return http.request({
-		url: '/blade-auth/oauth/captcha',
-		method: 'GET',
-		data
-	})
-}
-
-export default {
-	captcha,
-}
\ No newline at end of file
diff --git a/api/mock/home.js b/api/mock/home.js
deleted file mode 100644
index 285985d..0000000
--- a/api/mock/home.js
+++ /dev/null
@@ -1,152 +0,0 @@
-// 获取部门数据
-export function fakePosition() {
-	return new Promise((resolute, reject) => {
-		try {
-			const detail = {
-				position: "保安",
-				positionArr: ['保安', '民警']
-			}
-			resolute(detail);
-		} catch (e) {
-			//模拟接口请求失败
-			reject(e);
-		}
-	})
-}
-
-// 获取公告数据
-export function fakeBannerList() {
-	return new Promise((resolute, reject) => {
-		try {
-			const list = [{
-				id: '1',
-				img: '/static/images/home/banner.png',
-				url: ''
-			}, {
-				id: '2',
-				img: '/static/images/home/banner.png',
-				url: ''
-			}, {
-				id: '3',
-				img: '/static/images/home/banner.png',
-				url: ''
-			}];
-			resolute(list);
-		} catch (e) {
-			//模拟接口请求失败
-			reject(e);
-		}
-	})
-}
-
-// 获取公告数据
-export function fakeNoticeList() {
-	return new Promise((resolute, reject) => {
-		try {
-			const list = [{
-				id: '1',
-				img: '/static/images/home/focus.png',
-				title: '神舟十二号载人发射任务取得圆满成功'
-			}, {
-				id: '2',
-				img: '/static/images/home/service.png',
-				title: '全国累计报告接种新冠疫苗超9亿剂次'
-			}];
-			resolute(list);
-		} catch (e) {
-			//模拟接口请求失败
-			reject(e);
-		}
-	})
-}
-
-// 获取顶部按钮数据
-export function fakeNavButton() {
-	return new Promise((resolute, reject) => {
-		try {
-			const list = [{
-					name: '公积金',
-					img: '/static/images/home/n1.png',
-					url: ''
-				},
-				{
-					name: '社保',
-					img: '/static/images/home/n2.png',
-					url: ''
-				},
-				{
-					name: '医保',
-					img: '/static/images/home/n3.png',
-					url: ''
-				},
-				{
-					name: '企业',
-					img: '/static/images/home/n4.png',
-					url: ''
-				},
-				{
-					name: '教育',
-					img: '/static/images/home/n5.png',
-					url: ''
-				}
-			];
-			resolute(list);
-		} catch (e) {
-			//模拟接口请求失败
-			reject(e);
-		}
-	})
-}
-
-// 获取服务按钮数据
-export function fakeServiceButton() {
-	return new Promise((resolute, reject) => {
-		try {
-			const list = [{
-					name: '保安单位',
-					img: '/static/images/home/s1.png',
-					url: '../company/company'
-				},
-				{
-					name: '保安管理',
-					img: '/static/images/home/s2.png',
-					url: '../securityStaff/exhibition'
-				},
-				// {
-				// 	name: '调度指令',
-				// 	img: '/static/images/home/s4.png',
-				// 	url: ''
-				// },
-				{
-					name: '工作汇报',
-					img: '/static/images/home/report001.png',
-					url: '../report/report'
-				},
-				{
-					name: '调度指令',
-					img: '/static/images/home/s11.png',
-					url: '../dispatch/dispatch'
-				},
-				{
-					name: '通知通告',
-					img: '/static/images/home/s10.png',
-					url: '../message/message'
-				},
-				{
-					name: '现场检查',
-					img: '/static/images/home/s5.png',
-					url: '../examine/examine'
-				},
-				{
-					name: '保安员位置',
-					img: '/static/images/wz.png',
-					url: '../map/map'
-				}
-			];
-			resolute(list);
-		} catch (e) {
-			//模拟接口请求失败
-			reject(e);
-		}
-	})
-}
diff --git a/api/mock/service.js b/api/mock/service.js
deleted file mode 100644
index 77787cd..0000000
--- a/api/mock/service.js
+++ /dev/null
@@ -1,152 +0,0 @@
-// 获取服务数据
-export function fakeSubscribeList() {
-	return new Promise((resolute, reject) => {
-		try {
-			const list = [{
-					img: '/static/images/service/s1.png',
-					name: '违章查询',
-					url: ''
-				},
-				{
-					img: '/static/images/service/s2.png',
-					name: '限行信息',
-					url: ''
-				},
-				{
-					img: '/static/images/service/s3.png',
-					name: '油价查询',
-					url: ''
-				},
-				{
-					img: '/static/images/service/s4.png',
-					name: '消费记录',
-					url: ''
-				},
-				{
-					img: '/static/images/service/s5.png',
-					name: '保养记录',
-					url: ''
-				},
-				{
-					img: '/static/images/service/s6.png',
-					name: '油耗记录',
-					url: ''
-				},
-				{
-					img: '/static/images/service/s7.png',
-					name: '周边查询',
-					url: ''
-				},
-				{
-					img: '/static/images/service/s8.png',
-					name: '教育咨询',
-					url: ''
-				}
-			];
-			resolute(list);
-		} catch (e) {
-			//模拟接口请求失败
-			reject(e);
-		}
-	})
-}
-
-export function fakeServiceList() {
-	return new Promise((resolute, reject) => {
-		try {
-			const list = [{
-					name: '交通出行',
-					list: [{
-							img: '/static/images/service/t1.png',
-							name: '地铁',
-							url: ''
-						},
-						{
-							img: '/static/images/service/t2.png',
-							name: '公交',
-							url: ''
-						},
-						{
-							img: '/static/images/service/t3.png',
-							name: '自驾',
-							url: ''
-						},
-						{
-							img: '/static/images/service/t4.png',
-							name: '飞机',
-							url: ''
-						},
-						{
-							img: '/static/images/service/t5.png',
-							name: '动车',
-							url: ''
-						},
-						{
-							img: '/static/images/service/t6.png',
-							name: '火车',
-							url: ''
-						},
-						{
-							img: '/static/images/service/t7.png',
-							name: '摩托车',
-							url: ''
-						},
-						{
-							img: '/static/images/service/t8.png',
-							name: '自行车',
-							url: ''
-						}
-					]
-				},
-				{
-					name: '社会保险',
-					list: [{
-							img: '/static/images/service/b1.png',
-							name: '人身保险',
-							url: ''
-						},
-						{
-							img: '/static/images/service/b2.png',
-							name: '财产保险',
-							url: ''
-						},
-						{
-							img: '/static/images/service/b3.png',
-							name: '火灾保险',
-							url: ''
-						},
-						{
-							img: '/static/images/service/b4.png',
-							name: '运输保险',
-							url: ''
-						},
-						{
-							img: '/static/images/service/b5.png',
-							name: '工程保险',
-							url: ''
-						},
-						{
-							img: '/static/images/service/b6.png',
-							name: '盗窃保险',
-							url: ''
-						},
-						{
-							img: '/static/images/service/b7.png',
-							name: '农业保险',
-							url: ''
-						},
-						{
-							img: '/static/images/service/b8.png',
-							name: '信用保险',
-							url: ''
-						}
-					]
-				},
-			]
-			resolute(list);
-		} catch (e) {
-			//模拟接口请求失败
-			reject(e);
-		}
-	})
-}
diff --git a/api/user.js b/api/user.js
deleted file mode 100644
index 7595a27..0000000
--- a/api/user.js
+++ /dev/null
@@ -1,33 +0,0 @@
-import http from '@/http/api.js'
-
-// 获取token
-const token = (tenantId, username, password, type) => {
-	return http.request({
-		url: '/blade-auth/oauth/token',
-		method: 'POST',
-		header: {
-			'Tenant-Id': tenantId
-		},
-		params: {
-			tenantId,
-			username,
-			password,
-			grant_type: "password",
-			scope: "all",
-			type
-		}
-	})
-}
-
-// 获取用户信息
-const userInfo = () => {
-	return http.request({
-		url: '/blade-user/info',
-		method: 'GET',
-	})
-}
-
-export default {
-	token,
-	userInfo
-}
diff --git a/common/css/mycss.scss b/common/css/mycss.scss
deleted file mode 100644
index 967cc3d..0000000
--- a/common/css/mycss.scss
+++ /dev/null
@@ -1,78 +0,0 @@
-//页面撑开头部样式
-.content {
-	padding-top: var(--status-bar-height);
-}
-.tb_solt {
-	display: inline-block;
-	font-weight: normal;
-	height: 88rpx;
-	line-height: 88rpx;
-	box-sizing: border-box;
-	padding-left: 30rpx;
-}
-
-.main {
-	padding-top: 104rpx;
-	padding-bottom: $uni-spacing-col-base;
-	//border: 1px solid red;
-}
-.top-bar{
-	position: fixed;
-	z-index: 1001;
-	top: 0;
-	left: 0;
-	width: 100%;
-	height: 88rpx;
-	background: rgba(255, 255, 255, 1);
-}
-.tb_solt {
-	height: 88rpx;
-	line-height: 88rpx;
-	padding-left: 26rpx;
-}
-//底部样式
-.bottom-bar {
-	position: fixed;
-	bottom: 0;
-	width: 100%;
-	height: 90rpx;
-	padding-top: 10rpx;
-	padding-bottom: var(--status-bar-height);
-	//background-color: rgba(255,255,255,0.96);
-}
-
-//btn1样式
-.btn1 {
-	text-align: center;
-	line-height: 80rpx;
-	font-size: $uni-font-size-lg;
-	color: $uni-text-color;
-	height: 80rpx;
-	border-radius: $uni-border-radius-sm;
-}
-.comtarbar{
-	position: fixed;
-	top: var(--status-bar-height);
-	right: 0;
-	left: 0;
-	height: 88rpx;
-	z-index: 1001;
-	.title {
-		line-height: 88rpx;
-		padding: 0rpx 20rpx;
-		view{
-			display: inline-block;
-		}
-	}
-	.info {
-		width: 60rpx;
-		height: 88rpx;
-		display: flex;
-		justify-content: center;
-		align-items: center;
-		image {
-			width: 100%;
-			height: auto;
-		}
-	}
-}
\ No newline at end of file
diff --git a/common/setting.js b/common/setting.js
deleted file mode 100644
index 040cb9c..0000000
--- a/common/setting.js
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
- * 全局变量配置
- */
-module.exports = {
-	// 应用名
-	name: 'Rider',
-	// 应用logo,支持本地路径和网络路径
-	logo: '/static/images/logo.png',
-	// 版本号
-	version: '1.0.0',
-	// 开发环境接口Url
-	devUrl: 'https://api.bladex.vip',
-	// 线上环境接口Url
-	prodUrl: 'https://api.bladex.vip',
-	// 后端数据的接收方式application/json;charset=UTF-8或者application/x-www-form-urlencoded;charset=UTF-8
-	contentType: 'application/json;charset=UTF-8',
-	// 后端返回状态码
-	codeName: 'code',
-	// 操作正常code
-	successCode: 200,
-	// 登录失效code
-	invalidCode: 401,
-	// 客户端ID
-	clientId: 'rider',
-	// 客户端密钥
-	clientSecret: 'rider_secret'
-}
diff --git a/common/style/common.scss b/common/style/common.scss
deleted file mode 100644
index cc368cc..0000000
--- a/common/style/common.scss
+++ /dev/null
@@ -1,108 +0,0 @@
-// 页面开头公共样式
-.content {
-	padding-top: var(--status-bar-height);
-	}
-
-
-// 头部公共样式
-.top-bar {
-			height: 88rpx;
-			position: fixed;
-			left: 0;
-			top: 0;
-			width: 100%;			
-			display: flex;
-			align-items: center;
-			z-index: 999;
-			padding-top: var(--status-bar-height);
-
-			
-			.top-bar-left {
-				margin-left: 32rpx;
-				justify-content: left;
-				flex: 1;
-							
-				image {
-					width: 68rpx;
-					height: 68rpx;
-					border-radius: 16rpx;
-				}
-								
-				.back-img {
-					left: 0;
-					width: 88rpx;
-					height : 88rpx;
-					
-					image {
-						width: 26rpx;
-						height: 45rpx;
-						margin-top: 22rpx;
-					}
-				}
-
-			}
-			.top-bar-center {
-				
-				.logo {
-					font-weight: bold;
-					color: grey;
-				}
-			}
-			
-			.top-bar-right {
-				margin-right: 32rpx;
-				flex: 1;
-				text-align: right;
-				justify-content: right;
-				
-				image {
-					width: 52rpx;
-					height: 52rpx;
-					margin-left: 52rpx;
-				}
-				
-				.text {
-					font-size: $uni-font-size-lg;
-					font-weight: 500;
-					color: $uni-text-color;
-				}
-				
-				.more-img {
-					padding-right: $uni-spacing-col-base;
-					position: relative;
-					
-					image {
-						width: 52rpx;
-						height: 12rpx;
-						top: 0;
-						right: 0;
-						position: absolute;
-					}
-				}
-			}
-		}
-		
-		// 底部样式
-		.bottom-bar {
-			position: fixed;
-			bottom: 0;
-			height: 90rpx;
-			width: 100%;
-			// padding: 12rpx $uni-spacing-col-base;
-			padding-top: 10rpx;
-			padding-bottom: var(--status-bar-height);
-				
-		}
-		
-		// 按钮公共样式1
-		.btn1 {
-			margin: 0 $uni-spacing-col-base;
-			line-height: 80rpx;			
-			height: 80rpx;
-			border-radius: $uni-border-radius-sm;
-			font-size: 32rpx;
-			color: $uni-text-color;
-			text-align: center;
-		}
-		
-		
\ No newline at end of file
diff --git a/components/contacts/contacts.vue b/components/contacts/contacts.vue
deleted file mode 100644
index b581882..0000000
--- a/components/contacts/contacts.vue
+++ /dev/null
@@ -1,222 +0,0 @@
-<template>
-	<view class="main">
-		<view v-if="fromW == 0">
-			<view class="friend-list" @click="chating">
-
-				<view class="head-wrap">
-					<image :src=Pdata.avatar class="head" />
-					<!-- <view v-if="1 != ''" class="tip">233</view> -->
-				</view>
-				<view class="content-wrap">
-					<text class="name">{{Pdata.recipientName}}</text>
-					<text class="mess">{{isJSON(Pdata.postMessage) == true ?  '[语音]' : Pdata.postMessage}}</text>
-				</view>
-				<view class="data-wrap">
-					<text class="data">{{Pdata.postTime}}</text>
-				</view>
-
-			</view>
-		</view>
-
-		<view v-if="fromW == 1">
-			<view class="friend-list" @click="TXLchating">
-
-				<view class="head-wrap">
-					<image :src=Pdata.avatar class="head" />
-					<!-- <view v-if="1 != ''" class="tip">233</view> -->
-				</view>
-				<view class="content-wrap">
-					<text class="name">{{Pdata.realName}}</text>
-					<text class="mess">电话:{{Pdata.phone}}</text>
-				</view>
-				<view class="data-wrap">
-					<!-- <text class="data">{{Pdata.postTime}}</text> -->
-				</view>
-
-			</view>
-		</view>
-		
-		<view v-if="fromW == 2">
-			<view class="friend-list" @click="QZchating">
-
-				<view class="head-wrap">
-					<image :src=Pdata.avatar class="head" />
-					<!-- <view v-if="1 != ''" class="tip">233</view> -->
-				</view>
-				<view class="content-wrap">
-					<text class="name">{{Pdata.GroupName}}</text>
-					<text class="mess">{{Pdata.GroupContent}}</text>
-				</view>
-				<view class="data-wrap">
-					<!-- <text class="data">{{Pdata.time}}</text> -->
-				</view>
-
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	export default {
-		props: ['fromW', 'Pdata'],
-		data() {
-			return {
-				popuShow: false,
-				bmainb: ''
-			}
-		},
-		methods: {
-			isJSON(str) {
-				
-				if (typeof str == 'string') {
-					try {
-						var obj = JSON.parse(str);
-						if (typeof obj == 'object' && obj) {
-							return true;
-						} else {
-							return false;
-						}
-			
-					} catch (e) {
-						return false;
-					}
-				}
-				
-			},
-			beginObj() {
-				this.bmainb = '3rem';
-				//#ifdef MP-WEIXIN
-				this.bmainb = '0';
-				//#endif
-			},
-			chating() {
-				//发起聊天
-				var datas = this.Pdata;
-				//alert(datas.name)
-				uni.navigateTo({
-					url: '/pages/groupChat/chating?chatID=' + datas.recipientId.toString() + '&data=' + JSON.stringify(
-						datas)
-				});
-			},
-			QZchating() {
-				//发起聊天
-				var datas = this.Pdata;
-				console.log(datas)
-				uni.navigateTo({
-					url: '/pages/groupChat/chatingQZ?chatID=' + datas.id.toString()+ '&data=' + JSON.stringify(
-						datas)
-				});
-			},
-			TXLchating() {
-				//发起聊天
-				var datas = this.Pdata;
-				//alert(datas.name)
-				uni.navigateTo({
-					url: '/pages/groupChat/chating?chatID=' + datas.friendid.toString() + '&data=' + JSON.stringify(
-						datas)
-				});
-			},
-			onClose() { //触摸遮罩事件
-				this.setData({
-					popuShow: false
-				});
-			},
-		},
-		mounted() {
-			this.beginObj();
-		}
-
-	}
-</script>
-
-<style lang="scss" scoped>
-	.top-bar {
-		background-color: rgba(255, 255, 255, .96);
-		// background-color: #42B983;
-		box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, .1);
-	}
-
-	.main {
-		// margin-top: 108rpx;
-		// padding: 0 32upx ;
-
-		.friend-list,
-		.apply {
-			display: flex;
-			// margin: 40rpx 0;
-			// padding: 20rpx 0;
-			height: 130rpx;
-			// padding: 16upx 0;
-			align-items: center;
-			border-bottom: 1px solid rgba(0, 0, 0, .1);
-
-			&:active {
-				background-color: rgba(243,244,246,1);
-			}
-
-			.head-wrap {
-				position: relative;
-
-
-				image {
-					width: 96rpx;
-					height: 96rpx;
-					border-radius: 20upx;
-					// background-color: rgba(255,228,49,1);
-				}
-
-				.tip {
-					position: absolute;
-					top: -6rpx;
-					left: 68rpx;
-					height: 36rpx;
-					min-width: 20rpx;
-					min-height: 20rpx;
-					background-color: rgba(255,93,91,1);
-					border-radius: 18rpx;
-					padding: 0 6rpx;
-					font-size: 24upx;
-					color: rgba(255,228,49,1);
-					line-height: 36rpx;
-					text-align: center;
-				}
-			}
-
-			.content-wrap {
-				margin-left: 32rpx;
-				flex: 1;
-
-				.name {
-					display: block;
-					color: rgba(39,40,50,1);
-					font-size: 36rpx;
-					font-weight: 400;
-					line-height: 50rpx;
-				}
-
-				.mess {
-					display: block;
-					color: rgba(39,40,50,.6);
-					font-size: 28upx;
-					line-height: 40rpx;
-					display: -webkit-box;
-					-webkit-box-orient: vertical;
-					-webkit-line-clamp: 1;
-					overflow: hidden;
-				}
-			}
-
-			.data-wrap {
-
-				justify-content: right;
-
-				.data {
-					font-size: 24upx;
-					color: rgba(39,40,50,0.4);
-					line-height: 50rpx;
-				}
-			}
-		}
-
-	}
-</style>
diff --git a/components/e-picker/e-picker.js b/components/e-picker/e-picker.js
deleted file mode 100644
index 9d724c7..0000000
--- a/components/e-picker/e-picker.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";function getDayArr(e,t){for(var r=e%4==0&&e%100!=0&&e%400!=0,a=[31,r?29:28,31,30,31,30,31,31,30,31,30,31],n=[],o=0;o<a[t-1];o++)n.push(fmt(o+1)+"日");return n}function getArr(e){var t=[],r=1,a=13,n="月";e>2&&(r=0,3==e&&(a=24,n="时"),e>3&&(a=60,4==e&&(n="分"),5==e&&(n="秒")));for(var o=r;o<a;o++)t.push(fmt(o)+n);return t}function fmt(e){return e>9?e:"0"+e}function checkShowValue(e,t){if("date"!=e&&"dateTime"!=e&&"time"!=e)throw Error("mode无"+e+"该选项配置");if("date"==e&&10!=t.length||"time"==e&&8!=t.length||"dateTime"==e&&19!=t.length)throw Error("'showValue'有误,请根据当前mode 正确设置格式")}function getDateTimeValue(e,t){var r=fmt(parseInt(e[0])),a=fmt(parseInt(e[1])),n=fmt(parseInt(e[2])),o=fmt(parseInt(e[3])),m=fmt(parseInt(e[4])),u=fmt(parseInt(e[5]));return"date"==t?r+"-"+a+"-"+n:"dateTime"==t?r+"-"+a+"-"+n+" "+o+":"+m+":"+u:r+":"+a+":"+n}function getLocalTime(e){var t=new Date;switch(e){case"dateTime":return t.getFullYear()+"-"+fmt(t.getMonth()+1)+"-"+fmt(t.getDate())+" "+fmt(t.getHours())+":"+fmt(t.getMinutes())+":"+fmt(t.getSeconds());case"time":return fmt(t.getHours())+":"+fmt(t.getMinutes())+":"+fmt(t.getSeconds());default:return t.getFullYear()+"-"+fmt(t.getMonth()+1)+"-"+fmt(t.getDate())}}Object.defineProperty(exports,"__esModule",{value:!0}),exports.getDayArr=getDayArr,exports.getArr=getArr,exports.checkShowValue=checkShowValue,exports.getDateTimeValue=getDateTimeValue,exports.getLocalTime=getLocalTime;
\ No newline at end of file
diff --git a/components/e-picker/e-picker.vue b/components/e-picker/e-picker.vue
deleted file mode 100644
index 6a7b1bb..0000000
--- a/components/e-picker/e-picker.vue
+++ /dev/null
@@ -1,138 +0,0 @@
-<template>
-	<picker mode="multiSelector" :range="range" :value="value" @change="change" @columnchange="columnchange">
-		<slot></slot>
-	</picker>
-</template>
-
-<script>
-	import * as utils from "./e-picker.js";
-	let defaultValue;
-	export default {
-		data() {
-			return {
-				range: [],
-				value: []
-			};
-		},
-		props: {
-			mode: {
-				type: String,
-				default: "date"
-			},
-			showValue: String,
-			startYear: {
-				type: [Number, String],
-				default: 1949
-			},
-			endYear: {
-				type: [String, Number],
-				default: new Date().getFullYear()
-			}
-		},
-		watch: {
-			showValue(v) {
-				this.init()
-			}
-		},
-		created() {
-			this.init();
-		},
-		methods: {
-			init() {
-				this.range = [];
-				this.value = [];
-				let l;
-				defaultValue = utils.getLocalTime(this.mode)
-				if (this.showValue) {
-					defaultValue = this.showValue
-				}
-				utils.checkShowValue(this.mode, defaultValue);
-				this.mode == "dateTime" ? (l = 6) : (l = 3);
-				for (let i = 0; i < l; i++) {
-					this.range.push([]);
-					this.value.push(0);
-					this.setColumns(i);
-				}
-			},
-			setColumns(index) {
-				const m = this.mode;
-				if (m != "time") {
-					const showYear = defaultValue.substring(0, 4),
-						showMonth = defaultValue.substring(5, 7),
-						showDay = defaultValue.substring(8, 10);
-					switch (index) {
-						case 0:
-							const s = +this.startYear,
-								e = +this.endYear;
-							for (let i = s; i < e + 1; i++) {
-								this.range[index].push(i + "年");
-							}
-							this.value[index] = this.range[index].indexOf(showYear + "年");
-							break;
-						case 1:
-							this.range[index] = utils.getArr(1);
-							this.value[index] = this.range[index].indexOf(showMonth + "月");
-							break;
-						case 2:
-							this.range[index] = utils.getDayArr(+showYear, +showMonth);
-							this.value[index] = this.range[index].indexOf(showDay + "日");
-							break;
-						case 3:
-							const show_h = defaultValue.substring(11, 13);
-							this.range[index] = utils.getArr(3);
-							this.value[index] = this.range[index].indexOf(show_h + "时");
-							break;
-						case 4:
-							const show_m = defaultValue.substring(14, 16);
-							this.range[index] = utils.getArr(4);
-							this.value[index] = this.range[index].indexOf(show_m + "分");
-							break;
-						case 5:
-							const show_s = defaultValue.substring(17, 19);
-							this.range[index] = utils.getArr(5);
-							this.value[index] = this.range[index].indexOf(show_s + "秒");
-							break;
-					}
-				} else {
-					switch (index) {
-						case 0:
-							const show_h = defaultValue.substring(0, 2);
-							this.range[index] = utils.getArr(3);
-							this.value[index] = this.range[index].indexOf(show_h + "时");
-							break;
-						case 1:
-							const show_m = defaultValue.substring(3, 5);
-							this.range[index] = utils.getArr(4);
-							this.value[index] = this.range[index].indexOf(show_m + "分");
-							break;
-						case 2:
-							const show_s = defaultValue.substring(6, 8);
-							this.range[index] = utils.getArr(5);
-							this.value[index] = this.range[index].indexOf(show_s + "秒");
-							break;
-					}
-				}
-				this.$forceUpdate()
-			},
-			columnchange(e) {
-				if (this.mode == "time") return;
-				const column = e.detail.column,
-					value = e.detail.value;
-				if (column == 1 || !column) {
-					this.value[column] = value;
-				}
-				const y = parseInt(this.range[0][this.value[0]]),
-					m = parseInt(this.range[1][this.value[1]]);
-				this.range[2] = utils.getDayArr(y, m);
-				this.$forceUpdate()
-			},
-			change(e) {
-				const value = e.detail.value;
-				const timeArr = value.map((v, i) => {
-					return this.range[i][v];
-				});
-				this.$emit("change", utils.getDateTimeValue(timeArr, this.mode));
-			}
-		}
-	};
-</script>
diff --git a/components/feng-parse/components/wxParseAudio.vue b/components/feng-parse/components/wxParseAudio.vue
deleted file mode 100644
index b277717..0000000
--- a/components/feng-parse/components/wxParseAudio.vue
+++ /dev/null
@@ -1,28 +0,0 @@
-<template>
-	<!-- '<audio/>' 组件不再维护,建议使用能力更强的 'uni.createInnerAudioContext' 接口 有时间再改-->
-  <!--增加audio标签支持-->
-  <audio
-    :id="node.attr.id"
-    :class="node.classStr"
-    :style="node.styleStr"
-    :src="node.attr.src"
-    :loop="node.attr.loop"
-    :poster="node.attr.poster"
-    :name="node.attr.name"
-    :author="node.attr.author"
-    controls></audio>
-</template>
-
-<script>
-export default {
-  name: 'wxParseAudio',
-  props: {
-    node: {
-      type: Object,
-      default() {
-        return {};
-      },
-    },
-  },
-};
-</script>
diff --git a/components/feng-parse/components/wxParseImg.vue b/components/feng-parse/components/wxParseImg.vue
deleted file mode 100644
index 50893c1..0000000
--- a/components/feng-parse/components/wxParseImg.vue
+++ /dev/null
@@ -1,94 +0,0 @@
-<template>
-	<image
-		mode="widthFix"
-		:lazy-load="node.attr.lazyLoad"
-		:class="node.classStr"
-		:style="newStyleStr || node.styleStr"
-		:data-src="node.attr.src"
-		:src="node.attr.src"
-		@tap="wxParseImgTap"
-		@load="wxParseImgLoad"
-	/>
-</template>
-
-<script>
-export default {
-	name: 'wxParseImg',
-	data() {
-		return {
-			newStyleStr: '',
-			preview: true
-		};
-	},
-	inject: ['parseWidth'],
-	mounted() {},
-	props: {
-		node: {
-			type: Object,
-			default() {
-				return {};
-			}
-		}
-	},
-	
-	methods: {
-		wxParseImgTap(e) {
-			if (!this.preview) return;
-			const { src } = e.currentTarget.dataset;
-			if (!src) return;
-			let parent = this.$parent;
-			while (!parent.preview || typeof parent.preview !== 'function') {
-				// TODO 遍历获取父节点执行方法
-				parent = parent.$parent;
-			}
-			parent.preview(src, e);
-		},
-		// 图片视觉宽高计算函数区
-		wxParseImgLoad(e) {
-			const { src } = e.currentTarget.dataset;
-			if (!src) return;
-			let { width, height } = e.mp.detail;
-
-			const recal = this.wxAutoImageCal(width, height);
-
-			const { imageheight, imageWidth } = recal;
-			const { padding, mode } = this.node.attr;//删除padding
-			// const { mode } = this.node.attr;
-
-			const { styleStr } = this.node;
-			const imageHeightStyle = mode === 'widthFix' ? '' : `height: ${imageheight}px;`;
-
-			if(!styleStr) this.newStyleStr = `${styleStr}; ${imageHeightStyle}; width: ${imageWidth}px; padding: 0 ${+padding}px;`;//删除padding
-			// this.newStyleStr = `${styleStr}; ${imageHeightStyle}; width: ${imageWidth}px;`;
-		},
-		// 计算视觉优先的图片宽高
-		wxAutoImageCal(originalWidth, originalHeight) {
-			// 获取图片的原始长宽
-			const windowWidth = this.parseWidth.value;
-			const results = {};
-
-			if (originalWidth < 60 || originalHeight < 60) {
-				const { src } = this.node.attr;
-				let parent = this.$parent;
-				while (!parent.preview || typeof parent.preview !== 'function') {
-					parent = parent.$parent;
-				}
-				parent.removeImageUrl(src);
-				this.preview = false;
-			}
-
-			// 判断按照那种方式进行缩放
-			if (originalWidth > windowWidth) {
-				// 在图片width大于手机屏幕width时候
-				results.imageWidth = windowWidth;
-				results.imageheight = windowWidth * (originalHeight / originalWidth);
-			} else {
-				// 否则展示原来的数据
-				results.imageWidth = originalWidth;
-				results.imageheight = originalHeight;
-			}
-			return results;
-		}
-	}
-};
-</script>
diff --git a/components/feng-parse/components/wxParseTable.vue b/components/feng-parse/components/wxParseTable.vue
deleted file mode 100644
index 18278c9..0000000
--- a/components/feng-parse/components/wxParseTable.vue
+++ /dev/null
@@ -1,56 +0,0 @@
-<template>
-	<div class='tablebox'>
-		<rich-text :nodes="nodes" :class="node.classStr" :style="'user-select:' + parseSelect"></rich-text>
-	</div>
-</template>
-<script>
-export default {
-	name: 'wxParseTable',
-	props: {
-		node: {
-			type: Object,
-			default() {
-				return {};
-			},
-		},
-	},
-	inject: ['parseSelect'],
-	data() {
-		return {
-			nodes:[]
-		};
-	},
-	mounted() {
-		this.nodes=this.loadNode([this.node]);
-	},
-	methods: {
-		loadNode(node) {
-			console.log(node)
-			let obj = [];
-			for (let children of node) {
-				if (children.node=='element') {
-					let t = {
-						name:children.tag,
-						attrs: {
-							class: children.classStr,
-							style: children.styleStr,
-						},
-						children: children.nodes?this.loadNode(children.nodes):[]
-					}
-					
-					obj.push(t)
-				} else if(children.node=='text'){
-					obj.push({
-						type: 'text',
-						text: children.text
-					})
-				}
-			}
-			return obj
-		}
-	}
-};
-</script>
-<style>
-	@import url("../parse.css");
-</style>
\ No newline at end of file
diff --git a/components/feng-parse/components/wxParseTemplate0.vue b/components/feng-parse/components/wxParseTemplate0.vue
deleted file mode 100644
index 5cbe790..0000000
--- a/components/feng-parse/components/wxParseTemplate0.vue
+++ /dev/null
@@ -1,116 +0,0 @@
-<template>
-	<!--判断是否是标签节点-->
-	<block v-if="node.node == 'element'">
-		<!--button类型-->
-		<button v-if="node.tag == 'button'" type="default" size="mini" :class="node.classStr" :style="node.styleStr">
-			<wx-parse-template :node="node" />
-		</button>
-		
-		<!--a类型-->
-		<view v-else-if="node.tag == 'a'" @click="wxParseATap(node.attr,$event)" :class="node.classStr" :data-href="node.attr.href" :style="node.styleStr" style="display: inline; border-bottom: 1px solid #555555;">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node" />
-			</block>
-		</view>
-		
-		<!--li类型-->
-		<view v-else-if="node.tag == 'li'" :class="node.classStr" :style="node.styleStr">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node" />
-			</block>
-		</view>
-		
-		<!--table类型-->
-		<wx-parse-table v-else-if="node.tag == 'table'" :class="node.classStr" :style="node.styleStr" :node="node" />
-		
-		<!--br类型-->
-		<!-- #ifndef H5 -->
-			<text v-else-if="node.tag == 'br'">\n</text>
-		<!-- #endif -->
-		<!-- #ifdef H5 -->
-			<br v-else-if="node.tag == 'br'">
-		<!-- #endif -->
-		
-		<!--video类型-->
-		<wx-parse-video :node="node" v-else-if="node.tag == 'video'"/>
-	
-		<!--audio类型-->
-		<wx-parse-audio :node="node" v-else-if="node.tag == 'audio'"/>
-	
-		<!--img类型-->
-		<wx-parse-img :node="node" v-else-if="node.tag == 'img'" :style="node.styleStr"/>
-	
-		<!--strong标签-->
-		<view v-else-if="node.tag == 'strong'" :class="node.classStr" :style="node.styleStr" style="font-weight: 700;display: inline;">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node"/>
-			</block>
-		</view>
-		<!--span标签-->
-		<view v-else-if="node.tag == 'span'" :class="node.classStr"  :style="node.styleStr" style="display: inline;">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node"/>
-			</block>
-		</view>
-		<!--em标签-->
-		<view v-else-if="node.tag == 'em'" :class="node.classStr"  :style="node.styleStr" style="display: inline;font-style: italic;">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node"/>
-			</block>
-		</view>
-		<!--其他标签-->
-		<view v-else :class="node.classStr" :style="node.styleStr">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node"/>
-			</block>
-		</view>
-	</block>
-	
-	<!--判断是否是文本节点-->
-	<block v-else-if="node.node == 'text'">{{node.text}}</block>
-</template>
-
-<script>
-	// #ifdef APP-PLUS | H5
-	import wxParseTemplate from './wxParseTemplate0';
-	// #endif
-	// #ifdef MP
-	import wxParseTemplate from './wxParseTemplate1';
-	// #endif
-	import wxParseImg from './wxParseImg';
-	import wxParseVideo from './wxParseVideo';
-	import wxParseAudio from './wxParseAudio';
-	import wxParseTable from './wxParseTable';
-
-	export default {
-		// #ifdef APP-PLUS | H5
-		name: 'wxParseTemplate',
-		// #endif
-		// #ifdef MP
-		name: 'wxParseTemplate0',
-		// #endif
-		props: {
-			node: {},
-		},
-		components: {
-			wxParseTemplate,
-			wxParseImg,
-			wxParseVideo,
-			wxParseAudio,
-			wxParseTable
-		},
-		methods: {
-			wxParseATap(attr,e) {
-				const {
-					href
-				} = e.currentTarget.dataset;// TODO currentTarget才有dataset
-				if (!href) return;
-				let parent = this.$parent;
-				while(!parent.preview || typeof parent.preview !== 'function') {// TODO 遍历获取父节点执行方法
-					parent = parent.$parent;
-				}
-				parent.navigate(href, e, attr);
-			}
-		}
-	};
-</script>
diff --git a/components/feng-parse/components/wxParseTemplate1.vue b/components/feng-parse/components/wxParseTemplate1.vue
deleted file mode 100644
index 70779e3..0000000
--- a/components/feng-parse/components/wxParseTemplate1.vue
+++ /dev/null
@@ -1,107 +0,0 @@
-<template>
-	<!--判断是否是标签节点-->
-	<block v-if="node.node == 'element'">
-		<!--button类型-->
-		<button v-if="node.tag == 'button'" type="default" size="mini" :class="node.classStr" :style="node.styleStr">
-			<wx-parse-template :node="node" />
-		</button>
-		
-		<!--a类型-->
-		<view v-else-if="node.tag == 'a'" @click="wxParseATap(node.attr,$event)" :class="node.classStr" :data-href="node.attr.href" :style="node.styleStr" style="display: inline; border-bottom: 1px solid #555555;">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node" />
-			</block>
-		</view>
-		
-		<!--li类型-->
-		<view v-else-if="node.tag == 'li'" :class="node.classStr" :style="node.styleStr">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node" />
-			</block>
-		</view>
-		
-		<!--table类型-->
-		<wx-parse-table v-else-if="node.tag == 'table'" :class="node.classStr" :style="node.styleStr" :node="node" />
-		
-		<!--br类型-->
-		<!-- #ifndef H5 -->
-			<text v-else-if="node.tag == 'br'">\n</text>
-		<!-- #endif -->
-		<!-- #ifdef H5 -->
-			<br v-else-if="node.tag == 'br'">
-		<!-- #endif -->
-		
-		<!--strong标签-->
-		<view v-else-if="node.tag == 'strong'" :class="node.classStr" :style="node.styleStr" style="font-weight: 700;display: inline;">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node"/>
-			</block>
-		</view>
-		<!--span标签-->
-		<view v-else-if="node.tag == 'span'" :class="node.classStr"  :style="node.styleStr" style="display: inline;">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node"/>
-			</block>
-		</view>
-		<!--em标签-->
-		<view v-else-if="node.tag == 'em'" :class="node.classStr"  :style="node.styleStr" style="display: inline;font-style: italic;">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node"/>
-			</block>
-		</view>
-		
-		<!--video类型-->
-		<wx-parse-video :node="node" v-else-if="node.tag == 'video'"/>
-	
-		<!--audio类型-->
-		<wx-parse-audio :node="node" v-else-if="node.tag == 'audio'"/>
-	
-		<!--img类型-->
-		<wx-parse-img :node="node" v-else-if="node.tag == 'img'" :style="node.styleStr"/>
-	
-		<!--其他标签-->
-		<view v-else :class="node.classStr" :style="node.styleStr">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node" />
-			</block>
-		</view>
-	</block>
-	
-	<!--判断是否是文本节点-->
-	<block v-else-if="node.node == 'text'">{{node.text}}</block>
-</template>
-
-<script>
-	import wxParseTemplate from './wxParseTemplate2';
-	import wxParseImg from './wxParseImg';
-	import wxParseVideo from './wxParseVideo';
-	import wxParseAudio from './wxParseAudio';
-	import wxParseTable from './wxParseTable';
-	
-	export default {
-		name: 'wxParseTemplate1',
-		props: {
-			node: {},
-		},
-		components: {
-			wxParseTemplate,
-			wxParseImg,
-			wxParseVideo,
-			wxParseAudio,
-			wxParseTable
-		},
-		methods: {
-			wxParseATap(attr,e) {
-				const {
-					href
-				} = e.currentTarget.dataset;
-				if (!href) return;
-				let parent = this.$parent;
-				while(!parent.preview || typeof parent.preview !== 'function') {
-					parent = parent.$parent;
-				}
-				parent.navigate(href, e, attr);
-			}
-		}
-	};
-</script>
diff --git a/components/feng-parse/components/wxParseTemplate10.vue b/components/feng-parse/components/wxParseTemplate10.vue
deleted file mode 100644
index 891c8c3..0000000
--- a/components/feng-parse/components/wxParseTemplate10.vue
+++ /dev/null
@@ -1,107 +0,0 @@
-<template>
-		<!--判断是否是标签节点-->
-	<block v-if="node.node == 'element'">
-		<!--button类型-->
-		<button v-if="node.tag == 'button'" type="default" size="mini" :class="node.classStr" :style="node.styleStr">
-			<wx-parse-template :node="node" />
-		</button>
-		
-		<!--a类型-->
-		<view v-else-if="node.tag == 'a'" @click="wxParseATap(node.attr,$event)" :class="node.classStr" :data-href="node.attr.href" :style="node.styleStr" style="display: inline; border-bottom: 1px solid #555555;">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node" />
-			</block>
-		</view>
-		
-		<!--li类型-->
-		<view v-else-if="node.tag == 'li'" :class="node.classStr" :style="node.styleStr">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node" />
-			</block>
-		</view>
-		
-		<!--table类型-->
-		<wx-parse-table v-else-if="node.tag == 'table'" :class="node.classStr" :style="node.styleStr" :node="node" />
-		
-		<!--br类型-->
-		<!-- #ifndef H5 -->
-			<text v-else-if="node.tag == 'br'">\n</text>
-		<!-- #endif -->
-		<!-- #ifdef H5 -->
-			<br v-else-if="node.tag == 'br'">
-		<!-- #endif -->
-		
-		<!--video类型-->
-		<wx-parse-video :node="node" v-else-if="node.tag == 'video'"/>
-	
-		<!--audio类型-->
-		<wx-parse-audio :node="node" v-else-if="node.tag == 'audio'"/>
-	
-		<!--img类型-->
-		<wx-parse-img :node="node" v-else-if="node.tag == 'img'" :style="node.styleStr"/>
-		
-		<!--strong标签-->
-		<view v-else-if="node.tag == 'strong'" :class="node.classStr" :style="node.styleStr" style="font-weight: 700;display: inline;">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node"/>
-			</block>
-		</view>
-		<!--span标签-->
-		<view v-else-if="node.tag == 'span'" :class="node.classStr"  :style="node.styleStr" style="display: inline;">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node"/>
-			</block>
-		</view>
-		<!--em标签-->
-		<view v-else-if="node.tag == 'em'" :class="node.classStr"  :style="node.styleStr" style="display: inline;font-style: italic;">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node"/>
-			</block>
-		</view>
-	
-		<!--其他标签-->
-		<view v-else :class="node.classStr" :style="node.styleStr">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node" />
-			</block>
-		</view>
-	</block>
-	
-	<!--判断是否是文本节点-->
-	<block v-else-if="node.node == 'text' ">{{node.text}}</block>
-</template>
-
-<script>
-	import wxParseTemplate from './wxParseTemplate11';
-	import wxParseImg from './wxParseImg';
-	import wxParseVideo from './wxParseVideo';
-	import wxParseAudio from './wxParseAudio';
-	import wxParseTable from './wxParseTable';
-	
-	export default {
-		name: 'wxParseTemplate10',
-		props: {
-			node: {},
-		},
-		components: {
-			wxParseTemplate,
-			wxParseImg,
-			wxParseVideo,
-			wxParseAudio,
-			wxParseTable
-		},
-		methods: {
-			wxParseATap(attr,e) {
-				const {
-					href
-				} = e.currentTarget.dataset;
-				if (!href) return;
-				let parent = this.$parent;
-				while(!parent.preview || typeof parent.preview !== 'function') {
-					parent = parent.$parent;
-				}
-				parent.navigate(href, e, attr);
-			}
-		}
-	};
-</script>
diff --git a/components/feng-parse/components/wxParseTemplate11.vue b/components/feng-parse/components/wxParseTemplate11.vue
deleted file mode 100644
index d38efbd..0000000
--- a/components/feng-parse/components/wxParseTemplate11.vue
+++ /dev/null
@@ -1,105 +0,0 @@
-<template>
-		<!--判断是否是标签节点-->
-	<block v-if="node.node == 'element'">
-		<!--button类型-->
-		<button v-if="node.tag == 'button'" type="default" size="mini" :class="node.classStr" :style="node.styleStr">
-			<rich-text :nodes="node" :class="node.classStr" :style="'user-select:' + parseSelect"></rich-text>
-		</button>
-		
-		<!--a类型-->
-		<view v-else-if="node.tag == 'a'" @click="wxParseATap(node.attr,$event)" :class="node.classStr" :data-href="node.attr.href" :style="node.styleStr" style="display: inline; border-bottom: 1px solid #555555;">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node" />
-			</block>
-		</view>
-		
-		<!--li类型-->
-		<view v-else-if="node.tag == 'li'" :class="node.classStr" :style="node.styleStr">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<rich-text :nodes="node" :class="node.classStr" :style="'user-select:' + parseSelect"></rich-text>
-			</block>
-		</view>
-		
-		<!--table类型-->
-		<wx-parse-table v-else-if="node.tag == 'table'" :class="node.classStr" :style="node.styleStr" :node="node" />
-
-		<!--br类型-->
-		<!-- #ifndef H5 -->
-			<text v-else-if="node.tag == 'br'">\n</text>
-		<!-- #endif -->
-		<!-- #ifdef H5 -->
-			<br v-else-if="node.tag == 'br'">
-		<!-- #endif -->
-		
-		<!--video类型-->
-		<wx-parse-video :node="node" v-else-if="node.tag == 'video'"/>
-	
-		<!--audio类型-->
-		<wx-parse-audio :node="node" v-else-if="node.tag == 'audio'"/>
-	
-		<!--img类型-->
-		<wx-parse-img :node="node" v-else-if="node.tag == 'img'"/>
-		
-		<!--strong标签-->
-		<view v-else-if="node.tag == 'strong'" :class="node.classStr" :style="node.styleStr" style="font-weight: 700;display: inline;">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node"/>
-			</block>
-		</view>
-		<!--span标签-->
-		<view v-else-if="node.tag == 'span'" :class="node.classStr"  :style="node.styleStr" style="display: inline;">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node"/>
-			</block>
-		</view>
-		<!--em标签-->
-		<view v-else-if="node.tag == 'em'" :class="node.classStr"  :style="node.styleStr" style="display: inline;font-style: italic;">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node"/>
-			</block>
-		</view>
-	
-		<!--其他标签-->
-		<view v-else :class="node.classStr" :style="node.styleStr">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<rich-text :nodes="node" :class="node.classStr" :style="'user-select:' + parseSelect"></rich-text>
-			</block>
-		</view>
-	</block>
-	
-	<!--判断是否是文本节点-->
-	<block v-else-if="node.node == 'text' ">{{node.text}}</block>
-</template>
-
-<script>
-	import wxParseImg from './wxParseImg';
-	import wxParseVideo from './wxParseVideo';
-	import wxParseAudio from './wxParseAudio';
-	import wxParseTable from './wxParseTable';
-	
-	export default {
-		name: 'wxParseTemplate11',
-		props: {
-			node: {},
-		},
-		components: {
-			wxParseImg,
-			wxParseVideo,
-			wxParseAudio,
-			wxParseTable
-		},
-		methods: {
-			wxParseATap(attr,e) {
-				const {
-					href
-				} = e.currentTarget.dataset;
-				if (!href) return;
-				let parent = this.$parent;
-				while(!parent.preview || typeof parent.preview !== 'function') {
-					parent = parent.$parent;
-				}
-				parent.navigate(href, e, attr);
-			}
-		}
-	};
-</script>
diff --git a/components/feng-parse/components/wxParseTemplate2.vue b/components/feng-parse/components/wxParseTemplate2.vue
deleted file mode 100644
index c68b226..0000000
--- a/components/feng-parse/components/wxParseTemplate2.vue
+++ /dev/null
@@ -1,107 +0,0 @@
-<template>
-		<!--判断是否是标签节点-->
-	<block v-if="node.node == 'element'">
-		<!--button类型-->
-		<button v-if="node.tag == 'button'" type="default" size="mini" :class="node.classStr" :style="node.styleStr">
-			<wx-parse-template :node="node" />
-		</button>
-		
-		<!--a类型-->
-		<view v-else-if="node.tag == 'a'" @click="wxParseATap(node.attr,$event)" :class="node.classStr" :data-href="node.attr.href" :style="node.styleStr" style="display: inline; border-bottom: 1px solid #555555;">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node" />
-			</block>
-		</view>
-		
-		<!--li类型-->
-		<view v-else-if="node.tag == 'li'" :class="node.classStr" :style="node.styleStr">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node" />
-			</block>
-		</view>
-		
-		<!--table类型-->
-		<wx-parse-table v-else-if="node.tag == 'table'" :class="node.classStr" :style="node.styleStr" :node="node" />
-		
-		<!--br类型-->
-		<!-- #ifndef H5 -->
-			<text v-else-if="node.tag == 'br'">\n</text>
-		<!-- #endif -->
-		<!-- #ifdef H5 -->
-			<br v-else-if="node.tag == 'br'">
-		<!-- #endif -->
-		
-		<!--video类型-->
-		<wx-parse-video :node="node" v-else-if="node.tag == 'video'"/>
-	
-		<!--audio类型-->
-		<wx-parse-audio :node="node" v-else-if="node.tag == 'audio'"/>
-	
-		<!--img类型-->
-		<wx-parse-img :node="node" v-else-if="node.tag == 'img'" :style="node.styleStr"/>
-		
-		<!--strong标签-->
-		<view v-else-if="node.tag == 'strong'" :class="node.classStr" :style="node.styleStr" style="font-weight: 700;display: inline;">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node"/>
-			</block>
-		</view>
-		<!--span标签-->
-		<view v-else-if="node.tag == 'span'" :class="node.classStr"  :style="node.styleStr" style="display: inline;">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node"/>
-			</block>
-		</view>
-		<!--em标签-->
-		<view v-else-if="node.tag == 'em'" :class="node.classStr"  :style="node.styleStr" style="display: inline;font-style: italic;">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node"/>
-			</block>
-		</view>
-	
-		<!--其他标签-->
-		<view v-else :class="node.classStr" :style="node.styleStr">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node" />
-			</block>
-		</view>
-	</block>
-	
-	<!--判断是否是文本节点-->
-	<block v-else-if="node.node == 'text'">{{node.text}}</block>
-</template>
-
-<script>
-	import wxParseTemplate from './wxParseTemplate3';
-	import wxParseImg from './wxParseImg';
-	import wxParseVideo from './wxParseVideo';
-	import wxParseAudio from './wxParseAudio';
-	import wxParseTable from './wxParseTable';
-	
-	export default {
-		name: 'wxParseTemplate2',
-		props: {
-			node: {},
-		},
-		components: {
-			wxParseTemplate,
-			wxParseImg,
-			wxParseVideo,
-			wxParseAudio,
-			wxParseTable
-		},
-		methods: {
-			wxParseATap(attr,e) {
-				const {
-					href
-				} = e.currentTarget.dataset;
-				if (!href) return;
-				let parent = this.$parent;
-				while(!parent.preview || typeof parent.preview !== 'function') {
-					parent = parent.$parent;
-				}
-				parent.navigate(href, e, attr);
-			}
-		}
-	};
-</script>
diff --git a/components/feng-parse/components/wxParseTemplate3.vue b/components/feng-parse/components/wxParseTemplate3.vue
deleted file mode 100644
index 1a1bb29..0000000
--- a/components/feng-parse/components/wxParseTemplate3.vue
+++ /dev/null
@@ -1,107 +0,0 @@
-<template>
-		<!--判断是否是标签节点-->
-	<block v-if="node.node == 'element'">
-		<!--button类型-->
-		<button v-if="node.tag == 'button'" type="default" size="mini" :class="node.classStr" :style="node.styleStr">
-			<wx-parse-template :node="node" />
-		</button>
-		
-		<!--a类型-->
-		<view v-else-if="node.tag == 'a'" @click="wxParseATap(node.attr,$event)" :class="node.classStr" :data-href="node.attr.href" :style="node.styleStr" style="display: inline; border-bottom: 1px solid #555555;">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node" />
-			</block>
-		</view>
-		
-		<!--li类型-->
-		<view v-else-if="node.tag == 'li'" :class="node.classStr" :style="node.styleStr">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node" />
-			</block>
-		</view>
-		
-		<!--table类型-->
-		<wx-parse-table v-else-if="node.tag == 'table'" :class="node.classStr" :style="node.styleStr" :node="node" />
-		
-		<!--br类型-->
-		<!-- #ifndef H5 -->
-			<text v-else-if="node.tag == 'br'">\n</text>
-		<!-- #endif -->
-		<!-- #ifdef H5 -->
-			<br v-else-if="node.tag == 'br'">
-		<!-- #endif -->
-		
-		<!--strong标签-->
-		<view v-else-if="node.tag == 'strong'" :class="node.classStr" :style="node.styleStr" style="font-weight: 700;display: inline;">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node"/>
-			</block>
-		</view>
-		<!--span标签-->
-		<view v-else-if="node.tag == 'span'" :class="node.classStr"  :style="node.styleStr" style="display: inline;">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node"/>
-			</block>
-		</view>
-		<!--em标签-->
-		<view v-else-if="node.tag == 'em'" :class="node.classStr"  :style="node.styleStr" style="display: inline;font-style: italic;">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node"/>
-			</block>
-		</view>
-		
-		<!--video类型-->
-		<wx-parse-video :node="node" v-else-if="node.tag == 'video'"/>
-	
-		<!--audio类型-->
-		<wx-parse-audio :node="node" v-else-if="node.tag == 'audio'"/>
-	
-		<!--img类型-->
-		<wx-parse-img :node="node" v-else-if="node.tag == 'img'" :style="node.styleStr"/>
-	
-		<!--其他标签-->
-		<view v-else :class="node.classStr" :style="node.styleStr">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node" />
-			</block>
-		</view>
-	</block>
-	
-	<!--判断是否是文本节点-->
-	<block v-else-if="node.node == 'text' ">{{node.text}}</block>
-</template>
-
-<script>
-	import wxParseTemplate from './wxParseTemplate4';
-	import wxParseImg from './wxParseImg';
-	import wxParseVideo from './wxParseVideo';
-	import wxParseAudio from './wxParseAudio';
-	import wxParseTable from './wxParseTable';
-	
-	export default {
-		name: 'wxParseTemplate3',
-		props: {
-			node: {},
-		},
-		components: {
-			wxParseTemplate,
-			wxParseImg,
-			wxParseVideo,
-			wxParseAudio,
-			wxParseTable
-		},
-		methods: {
-			wxParseATap(attr,e) {
-				const {
-					href
-				} = e.currentTarget.dataset;
-				if (!href) return;
-				let parent = this.$parent;
-				while(!parent.preview || typeof parent.preview !== 'function') {
-					parent = parent.$parent;
-				}
-				parent.navigate(href, e, attr);
-			}
-		}
-	};
-</script>
diff --git a/components/feng-parse/components/wxParseTemplate4.vue b/components/feng-parse/components/wxParseTemplate4.vue
deleted file mode 100644
index c3497b8..0000000
--- a/components/feng-parse/components/wxParseTemplate4.vue
+++ /dev/null
@@ -1,107 +0,0 @@
-<template>
-		<!--判断是否是标签节点-->
-	<block v-if="node.node == 'element'">
-		<!--button类型-->
-		<button v-if="node.tag == 'button'" type="default" size="mini" :class="node.classStr" :style="node.styleStr">
-			<wx-parse-template :node="node" />
-		</button>
-		
-		<!--a类型-->
-		<view v-else-if="node.tag == 'a'" @click="wxParseATap(node.attr,$event)" :class="node.classStr" :data-href="node.attr.href" :style="node.styleStr" style="display: inline; border-bottom: 1px solid #555555;">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node" />
-			</block>
-		</view>
-		
-		<!--li类型-->
-		<view v-else-if="node.tag == 'li'" :class="node.classStr" :style="node.styleStr">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node" />
-			</block>
-		</view>
-		
-		<!--table类型-->
-		<wx-parse-table v-else-if="node.tag == 'table'" :class="node.classStr" :style="node.styleStr" :node="node" />
-		
-		<!--br类型-->
-		<!-- #ifndef H5 -->
-			<text v-else-if="node.tag == 'br'">\n</text>
-		<!-- #endif -->
-		<!-- #ifdef H5 -->
-			<br v-else-if="node.tag == 'br'">
-		<!-- #endif -->
-		
-		<!--video类型-->
-		<wx-parse-video :node="node" v-else-if="node.tag == 'video'"/>
-	
-		<!--audio类型-->
-		<wx-parse-audio :node="node" v-else-if="node.tag == 'audio'"/>
-	
-		<!--img类型-->
-		<wx-parse-img :node="node" v-else-if="node.tag == 'img'" :style="node.styleStr"/>
-		
-		<!--strong标签-->
-		<view v-else-if="node.tag == 'strong'" :class="node.classStr" :style="node.styleStr" style="font-weight: 700;display: inline;">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node"/>
-			</block>
-		</view>
-		<!--span标签-->
-		<view v-else-if="node.tag == 'span'" :class="node.classStr"  :style="node.styleStr" style="display: inline;">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node"/>
-			</block>
-		</view>
-		<!--em标签-->
-		<view v-else-if="node.tag == 'em'" :class="node.classStr"  :style="node.styleStr" style="display: inline;font-style: italic;">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node"/>
-			</block>
-		</view>
-	
-		<!--其他标签-->
-		<view v-else :class="node.classStr" :style="node.styleStr">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node" />
-			</block>
-		</view>
-	</block>
-	
-	<!--判断是否是文本节点-->
-	<block v-else-if="node.node == 'text' ">{{node.text}}</block>
-</template>
-
-<script>
-	import wxParseTemplate from './wxParseTemplate5';
-	import wxParseImg from './wxParseImg';
-	import wxParseVideo from './wxParseVideo';
-	import wxParseAudio from './wxParseAudio';
-	import wxParseTable from './wxParseTable';
-	
-	export default {
-		name: 'wxParseTemplate4',
-		props: {
-			node: {},
-		},
-		components: {
-			wxParseTemplate,
-			wxParseImg,
-			wxParseVideo,
-			wxParseAudio,
-			wxParseTable
-		},
-		methods: {
-			wxParseATap(attr,e) {
-				const {
-					href
-				} = e.currentTarget.dataset;
-				if (!href) return;
-				let parent = this.$parent;
-				while(!parent.preview || typeof parent.preview !== 'function') {
-					parent = parent.$parent;
-				}
-				parent.navigate(href, e, attr);
-			}
-		}
-	};
-</script>
diff --git a/components/feng-parse/components/wxParseTemplate5.vue b/components/feng-parse/components/wxParseTemplate5.vue
deleted file mode 100644
index 5e66618..0000000
--- a/components/feng-parse/components/wxParseTemplate5.vue
+++ /dev/null
@@ -1,107 +0,0 @@
-<template>
-		<!--判断是否是标签节点-->
-	<block v-if="node.node == 'element'">
-		<!--button类型-->
-		<button v-if="node.tag == 'button'" type="default" size="mini" :class="node.classStr" :style="node.styleStr">
-			<wx-parse-template :node="node" />
-		</button>
-		
-		<!--a类型-->
-		<view v-else-if="node.tag == 'a'" @click="wxParseATap(node.attr,$event)" :class="node.classStr" :data-href="node.attr.href" :style="node.styleStr" style="display: inline; border-bottom: 1px solid #555555;">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node" />
-			</block>
-		</view>
-		
-		<!--li类型-->
-		<view v-else-if="node.tag == 'li'" :class="node.classStr" :style="node.styleStr">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node" />
-			</block>
-		</view>
-		
-		<!--table类型-->
-		<wx-parse-table v-else-if="node.tag == 'table'" :class="node.classStr" :style="node.styleStr" :node="node" />
-		
-		<!--br类型-->
-		<!-- #ifndef H5 -->
-			<text v-else-if="node.tag == 'br'">\n</text>
-		<!-- #endif -->
-		<!-- #ifdef H5 -->
-			<br v-else-if="node.tag == 'br'">
-		<!-- #endif -->
-		
-		<!--video类型-->
-		<wx-parse-video :node="node" v-else-if="node.tag == 'video'"/>
-	
-		<!--audio类型-->
-		<wx-parse-audio :node="node" v-else-if="node.tag == 'audio'"/>
-	
-		<!--img类型-->
-		<wx-parse-img :node="node" v-else-if="node.tag == 'img'" :style="node.styleStr"/>
-		
-		<!--strong标签-->
-		<view v-else-if="node.tag == 'strong'" :class="node.classStr" :style="node.styleStr" style="font-weight: 700;display: inline;">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node"/>
-			</block>
-		</view>
-		<!--span标签-->
-		<view v-else-if="node.tag == 'span'" :class="node.classStr"  :style="node.styleStr" style="display: inline;">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node"/>
-			</block>
-		</view>
-		<!--em标签-->
-		<view v-else-if="node.tag == 'em'" :class="node.classStr"  :style="node.styleStr" style="display: inline;font-style: italic;">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node"/>
-			</block>
-		</view>
-	
-		<!--其他标签-->
-		<view v-else :class="node.classStr" :style="node.styleStr">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node" />
-			</block>
-		</view>
-	</block>
-	
-	<!--判断是否是文本节点-->
-	<block v-else-if="node.node == 'text' ">{{node.text}}</block>
-</template>
-
-<script>
-	import wxParseTemplate from './wxParseTemplate6';
-	import wxParseImg from './wxParseImg';
-	import wxParseVideo from './wxParseVideo';
-	import wxParseAudio from './wxParseAudio';
-	import wxParseTable from './wxParseTable';
-	
-	export default {
-		name: 'wxParseTemplate5',
-		props: {
-			node: {},
-		},
-		components: {
-			wxParseTemplate,
-			wxParseImg,
-			wxParseVideo,
-			wxParseAudio,
-			wxParseTable
-		},
-		methods: {
-			wxParseATap(attr,e) {
-				const {
-					href
-				} = e.currentTarget.dataset;
-				if (!href) return;
-				let parent = this.$parent;
-				while(!parent.preview || typeof parent.preview !== 'function') {
-					parent = parent.$parent;
-				}
-				parent.navigate(href, e, attr);
-			}
-		}
-	};
-</script>
diff --git a/components/feng-parse/components/wxParseTemplate6.vue b/components/feng-parse/components/wxParseTemplate6.vue
deleted file mode 100644
index dc44621..0000000
--- a/components/feng-parse/components/wxParseTemplate6.vue
+++ /dev/null
@@ -1,107 +0,0 @@
-<template>
-		<!--判断是否是标签节点-->
-	<block v-if="node.node == 'element'">
-		<!--button类型-->
-		<button v-if="node.tag == 'button'" type="default" size="mini" :class="node.classStr" :style="node.styleStr">
-			<wx-parse-template :node="node" />
-		</button>
-		
-		<!--a类型-->
-		<view v-else-if="node.tag == 'a'" @click="wxParseATap(node.attr,$event)" :class="node.classStr" :data-href="node.attr.href" :style="node.styleStr" style="display: inline; border-bottom: 1px solid #555555;">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node" />
-			</block>
-		</view>
-		
-		<!--li类型-->
-		<view v-else-if="node.tag == 'li'" :class="node.classStr" :style="node.styleStr">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node" />
-			</block>
-		</view>
-		
-		<!--table类型-->
-		<wx-parse-table v-else-if="node.tag == 'table'" :class="node.classStr" :style="node.styleStr" :node="node" />
-		
-		<!--br类型-->
-		<!-- #ifndef H5 -->
-			<text v-else-if="node.tag == 'br'">\n</text>
-		<!-- #endif -->
-		<!-- #ifdef H5 -->
-			<br v-else-if="node.tag == 'br'">
-		<!-- #endif -->
-		
-		<!--video类型-->
-		<wx-parse-video :node="node" v-else-if="node.tag == 'video'"/>
-	
-		<!--audio类型-->
-		<wx-parse-audio :node="node" v-else-if="node.tag == 'audio'"/>
-	
-		<!--img类型-->
-		<wx-parse-img :node="node" v-else-if="node.tag == 'img'" :style="node.styleStr"/>
-		
-		<!--strong标签-->
-		<view v-else-if="node.tag == 'strong'" :class="node.classStr" :style="node.styleStr" style="font-weight: 700;display: inline;">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node"/>
-			</block>
-		</view>
-		<!--span标签-->
-		<view v-else-if="node.tag == 'span'" :class="node.classStr"  :style="node.styleStr" style="display: inline;">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node"/>
-			</block>
-		</view>
-		<!--em标签-->
-		<view v-else-if="node.tag == 'em'" :class="node.classStr"  :style="node.styleStr" style="display: inline;font-style: italic;">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node"/>
-			</block>
-		</view>
-	
-		<!--其他标签-->
-		<view v-else :class="node.classStr" :style="node.styleStr">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node" />
-			</block>
-		</view>
-	</block>
-	
-	<!--判断是否是文本节点-->
-	<block v-else-if="node.node == 'text' ">{{node.text}}</block>
-</template>
-
-<script>
-	import wxParseTemplate from './wxParseTemplate7';
-	import wxParseImg from './wxParseImg';
-	import wxParseVideo from './wxParseVideo';
-	import wxParseAudio from './wxParseAudio';
-	import wxParseTable from './wxParseTable';
-	
-	export default {
-		name: 'wxParseTemplate6',
-		props: {
-			node: {},
-		},
-		components: {
-			wxParseTemplate,
-			wxParseImg,
-			wxParseVideo,
-			wxParseAudio,
-			wxParseTable
-		},
-		methods: {
-			wxParseATap(attr,e) {
-				const {
-					href
-				} = e.currentTarget.dataset;
-				if (!href) return;
-				let parent = this.$parent;
-				while(!parent.preview || typeof parent.preview !== 'function') {
-					parent = parent.$parent;
-				}
-				parent.navigate(href, e, attr);
-			}
-		}
-	};
-</script>
diff --git a/components/feng-parse/components/wxParseTemplate7.vue b/components/feng-parse/components/wxParseTemplate7.vue
deleted file mode 100644
index 71636dc..0000000
--- a/components/feng-parse/components/wxParseTemplate7.vue
+++ /dev/null
@@ -1,107 +0,0 @@
-<template>
-		<!--判断是否是标签节点-->
-	<block v-if="node.node == 'element'">
-		<!--button类型-->
-		<button v-if="node.tag == 'button'" type="default" size="mini" :class="node.classStr" :style="node.styleStr">
-			<wx-parse-template :node="node" />
-		</button>
-		
-		<!--a类型-->
-		<view v-else-if="node.tag == 'a'" @click="wxParseATap(node.attr,$event)" :class="node.classStr" :data-href="node.attr.href" :style="node.styleStr" style="display: inline; border-bottom: 1px solid #555555;">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node" />
-			</block>
-		</view>
-		
-		<!--li类型-->
-		<view v-else-if="node.tag == 'li'" :class="node.classStr" :style="node.styleStr">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node" />
-			</block>
-		</view>
-		
-		<!--table类型-->
-		<wx-parse-table v-else-if="node.tag == 'table'" :class="node.classStr" :style="node.styleStr" :node="node" />
-		
-		<!--br类型-->
-		<!-- #ifndef H5 -->
-			<text v-else-if="node.tag == 'br'">\n</text>
-		<!-- #endif -->
-		<!-- #ifdef H5 -->
-			<br v-else-if="node.tag == 'br'">
-		<!-- #endif -->
-		
-		<!--video类型-->
-		<wx-parse-video :node="node" v-else-if="node.tag == 'video'"/>
-	
-		<!--audio类型-->
-		<wx-parse-audio :node="node" v-else-if="node.tag == 'audio'"/>
-	
-		<!--img类型-->
-		<wx-parse-img :node="node" v-else-if="node.tag == 'img'" :style="node.styleStr"/>
-		
-		<!--strong标签-->
-		<view v-else-if="node.tag == 'strong'" :class="node.classStr" :style="node.styleStr" style="font-weight: 700;display: inline;">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node"/>
-			</block>
-		</view>
-		<!--span标签-->
-		<view v-else-if="node.tag == 'span'" :class="node.classStr"  :style="node.styleStr" style="display: inline;">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node"/>
-			</block>
-		</view>
-		<!--em标签-->
-		<view v-else-if="node.tag == 'em'" :class="node.classStr"  :style="node.styleStr" style="display: inline;font-style: italic;">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node"/>
-			</block>
-		</view>
-	
-		<!--其他标签-->
-		<view v-else :class="node.classStr" :style="node.styleStr">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node" />
-			</block>
-		</view>
-	</block>
-	
-	<!--判断是否是文本节点-->
-	<block v-else-if="node.node == 'text' ">{{node.text}}</block>
-</template>
-
-<script>
-	import wxParseTemplate from './wxParseTemplate8';
-	import wxParseImg from './wxParseImg';
-	import wxParseVideo from './wxParseVideo';
-	import wxParseAudio from './wxParseAudio';
-	import wxParseTable from './wxParseTable';
-	
-	export default {
-		name: 'wxParseTemplate7',
-		props: {
-			node: {},
-		},
-		components: {
-			wxParseTemplate,
-			wxParseImg,
-			wxParseVideo,
-			wxParseAudio,
-			wxParseTable
-		},
-		methods: {
-			wxParseATap(attr,e) {
-				const {
-					href
-				} = e.currentTarget.dataset;
-				if (!href) return;
-				let parent = this.$parent;
-				while(!parent.preview || typeof parent.preview !== 'function') {
-					parent = parent.$parent;
-				}
-				parent.navigate(href, e, attr);
-			}
-		}
-	};
-</script>
diff --git a/components/feng-parse/components/wxParseTemplate8.vue b/components/feng-parse/components/wxParseTemplate8.vue
deleted file mode 100644
index 326115d..0000000
--- a/components/feng-parse/components/wxParseTemplate8.vue
+++ /dev/null
@@ -1,107 +0,0 @@
-<template>
-		<!--判断是否是标签节点-->
-	<block v-if="node.node == 'element'">
-		<!--button类型-->
-		<button v-if="node.tag == 'button'" type="default" size="mini" :class="node.classStr" :style="node.styleStr">
-			<wx-parse-template :node="node" />
-		</button>
-		
-		<!--a类型-->
-		<view v-else-if="node.tag == 'a'" @click="wxParseATap(node.attr,$event)" :class="node.classStr" :data-href="node.attr.href" :style="node.styleStr" style="display: inline; border-bottom: 1px solid #555555;">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node" />
-			</block>
-		</view>
-		
-		<!--li类型-->
-		<view v-else-if="node.tag == 'li'" :class="node.classStr" :style="node.styleStr">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node" />
-			</block>
-		</view>
-		
-		<!--table类型-->
-		<wx-parse-table v-else-if="node.tag == 'table'" :class="node.classStr" :style="node.styleStr" :node="node" />
-		
-		<!--br类型-->
-		<!-- #ifndef H5 -->
-			<text v-else-if="node.tag == 'br'">\n</text>
-		<!-- #endif -->
-		<!-- #ifdef H5 -->
-			<br v-else-if="node.tag == 'br'">
-		<!-- #endif -->
-		
-		<!--video类型-->
-		<wx-parse-video :node="node" v-else-if="node.tag == 'video'"/>
-	
-		<!--audio类型-->
-		<wx-parse-audio :node="node" v-else-if="node.tag == 'audio'"/>
-	
-		<!--img类型-->
-		<wx-parse-img :node="node" v-else-if="node.tag == 'img'" :style="node.styleStr"/>
-		
-		<!--strong标签-->
-		<view v-else-if="node.tag == 'strong'" :class="node.classStr" :style="node.styleStr" style="font-weight: 700;display: inline;">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node"/>
-			</block>
-		</view>
-		<!--span标签-->
-		<view v-else-if="node.tag == 'span'" :class="node.classStr"  :style="node.styleStr" style="display: inline;">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node"/>
-			</block>
-		</view>
-		<!--em标签-->
-		<view v-else-if="node.tag == 'em'" :class="node.classStr"  :style="node.styleStr" style="display: inline;font-style: italic;">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node"/>
-			</block>
-		</view>
-	
-		<!--其他标签-->
-		<view v-else :class="node.classStr" :style="node.styleStr">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node" />
-			</block>
-		</view>
-	</block>
-	
-	<!--判断是否是文本节点-->
-	<block v-else-if="node.node == 'text' ">{{node.text}}</block>
-</template>
-
-<script>
-	import wxParseTemplate from './wxParseTemplate9';
-	import wxParseImg from './wxParseImg';
-	import wxParseVideo from './wxParseVideo';
-	import wxParseAudio from './wxParseAudio';
-	import wxParseTable from './wxParseTable';
-	
-	export default {
-		name: 'wxParseTemplate8',
-		props: {
-			node: {},
-		},
-		components: {
-			wxParseTemplate,
-			wxParseImg,
-			wxParseVideo,
-			wxParseAudio,
-			wxParseTable
-		},
-		methods: {
-			wxParseATap(attr,e) {
-				const {
-					href
-				} = e.currentTarget.dataset;
-				if (!href) return;
-				let parent = this.$parent;
-				while(!parent.preview || typeof parent.preview !== 'function') {
-					parent = parent.$parent;
-				}
-				parent.navigate(href, e, attr);
-			}
-		}
-	};
-</script>
diff --git a/components/feng-parse/components/wxParseTemplate9.vue b/components/feng-parse/components/wxParseTemplate9.vue
deleted file mode 100644
index f1224a3..0000000
--- a/components/feng-parse/components/wxParseTemplate9.vue
+++ /dev/null
@@ -1,107 +0,0 @@
-<template>
-		<!--判断是否是标签节点-->
-	<block v-if="node.node == 'element'">
-		<!--button类型-->
-		<button v-if="node.tag == 'button'" type="default" size="mini" :class="node.classStr" :style="node.styleStr">
-			<wx-parse-template :node="node" />
-		</button>
-		
-		<!--a类型-->
-		<view v-else-if="node.tag == 'a'" @click="wxParseATap(node.attr,$event)" :class="node.classStr" :data-href="node.attr.href" :style="node.styleStr" style="display: inline; border-bottom: 1px solid #555555;">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node" />
-			</block>
-		</view>
-		
-		<!--li类型-->
-		<view v-else-if="node.tag == 'li'" :class="node.classStr" :style="node.styleStr">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node" />
-			</block>
-		</view>
-		
-		<!--table类型-->
-		<wx-parse-table v-else-if="node.tag == 'table'" :class="node.classStr" :style="node.styleStr" :node="node" />
-		
-		<!--br类型-->
-		<!-- #ifndef H5 -->
-			<text v-else-if="node.tag == 'br'">\n</text>
-		<!-- #endif -->
-		<!-- #ifdef H5 -->
-			<br v-else-if="node.tag == 'br'">
-		<!-- #endif -->
-		
-		<!--video类型-->
-		<wx-parse-video :node="node" v-else-if="node.tag == 'video'"/>
-	
-		<!--audio类型-->
-		<wx-parse-audio :node="node" v-else-if="node.tag == 'audio'"/>
-	
-		<!--img类型-->
-		<wx-parse-img :node="node" v-else-if="node.tag == 'img'" :style="node.styleStr"/>
-		
-		<!--strong标签-->
-		<view v-else-if="node.tag == 'strong'" :class="node.classStr" :style="node.styleStr" style="font-weight: 700;display: inline;">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node"/>
-			</block>
-		</view>
-		<!--span标签-->
-		<view v-else-if="node.tag == 'span'" :class="node.classStr"  :style="node.styleStr" style="display: inline;">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node"/>
-			</block>
-		</view>
-		<!--em标签-->
-		<view v-else-if="node.tag == 'em'" :class="node.classStr"  :style="node.styleStr" style="display: inline;font-style: italic;">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node"/>
-			</block>
-		</view>
-	
-		<!--其他标签-->
-		<view v-else :class="node.classStr" :style="node.styleStr">
-			<block v-for="(node, index) of node.nodes" :key="index">
-				<wx-parse-template :node="node" />
-			</block>
-		</view>
-	</block>
-	
-	<!--判断是否是文本节点-->
-	<block v-else-if="node.node == 'text' ">{{node.text}}</block>
-</template>
-
-<script>
-	import wxParseTemplate from './wxParseTemplate10';
-	import wxParseImg from './wxParseImg';
-	import wxParseVideo from './wxParseVideo';
-	import wxParseAudio from './wxParseAudio';
-	import wxParseTable from './wxParseTable';
-	
-	export default {
-		name: 'wxParseTemplate9',
-		props: {
-			node: {},
-		},
-		components: {
-			wxParseTemplate,
-			wxParseImg,
-			wxParseVideo,
-			wxParseAudio,
-			wxParseTable
-		},
-		methods: {
-			wxParseATap(attr,e) {
-				const {
-					href
-				} = e.currentTarget.dataset;
-				if (!href) return;
-				let parent = this.$parent;
-				while(!parent.preview || typeof parent.preview !== 'function') {
-					parent = parent.$parent;
-				}
-				parent.navigate(href, e, attr);
-			}
-		}
-	};
-</script>
diff --git a/components/feng-parse/components/wxParseVideo.vue b/components/feng-parse/components/wxParseVideo.vue
deleted file mode 100644
index 1cd9b70..0000000
--- a/components/feng-parse/components/wxParseVideo.vue
+++ /dev/null
@@ -1,55 +0,0 @@
-<template>
-	<!-- 这个模板用来解决原生video总是浮在最上层的问题,使用view替换video,播放是再替换回,监听一个事件,用来被遮盖时做替换video -->
-  <!--增加video标签支持,并循环添加-->
-  <view @click="play">
-	  <view v-if="!playState" :class="node.classStr" :style="node.styleStr" style="display: inline-block;margin: auto;max-width: 100%;" class="video-video">
-		  <view style="display: flex;width: 100%;height:100%;flex-direction: row; justify-content: center;align-items: center;">
-			  <image src="https://gwbj.tongwenkeji.com/html/static/play.png" style="width: 20%;" mode="widthFix"></image>
-		  </view>
-	  </view>
-	  <video
-	  :autoplay="false" 
-	  :class="node.classStr" 
-	  :style="node.styleStr" 
-	  class="video-video"
-	  v-if="playState"
-	  :src="node.attr.src"></video>
-	  
-  </view>
-  
-</template>
-
-<script>
-export default {
-  name: 'wxParseVideo',
-  props: {
-    node: {},
-  },
-  data(){
-	  return{
-		  playState:true,
-		  videoStyle:'width: 100%;'
-	  }
-  },
-  methods:{
-	  play(){
-		  console.log('点击了video 播放')
-		  //显示播放器并播放播放器
-		  this.playState = !this.playState
-	  }
-  },
-  mounted() {
-	  //捕获侧滑菜单的遮盖行为,隐藏video
-  	uni.$on('slideMenuShow',e=>{
-		console.log('捕获事件:'+e)
-		if(e == 'show' && this.playState){
-			//正在播放则停止
-			this.playState = false
-		}
-	})
-  }
-};
-</script>
-<style>
-	.video-video{background: #000000;}
-</style>
diff --git a/components/feng-parse/components/wxParseVideo1.vue b/components/feng-parse/components/wxParseVideo1.vue
deleted file mode 100644
index 0d37e10..0000000
--- a/components/feng-parse/components/wxParseVideo1.vue
+++ /dev/null
@@ -1,25 +0,0 @@
-<template>
-	<!-- 这个模板用来渲染原生video -->
-  <!--增加video标签支持,并循环添加-->
-  <view style="max-width: 100%;">
-	<video
-	:autoplay="playState" 
-	:class="node.classStr" 
-	:style="node.styleStr" 
-	class="video-video"
-	v-if="playState"
-	:src="node.attr.src"></video>
-  </view>
-</template>
-
-<script>
-export default {
-  name: 'wxParseVideo',
-  props: {
-    node: {},
-  }
-};
-</script>
-<style>
-	.video-video{z-index: 1;}
-</style>
diff --git a/components/feng-parse/libs/html2json.js b/components/feng-parse/libs/html2json.js
deleted file mode 100644
index bf3082d..0000000
--- a/components/feng-parse/libs/html2json.js
+++ /dev/null
@@ -1,308 +0,0 @@
-/**
- * html2Json 改造来自: https://github.com/Jxck/html2json
- *
- *
- * author: Di (微信小程序开发工程师)
- * organization: WeAppDev(微信小程序开发论坛)(http://weappdev.com)
- *               垂直微信小程序开发交流社区
- *
- * github地址: https://github.com/icindy/wxParse
- *
- * for: 微信小程序富文本解析
- * detail : http://weappdev.com/t/wxparse-alpha0-1-html-markdown/184
- */
-
-import wxDiscode from './wxDiscode';
-import HTMLParser from './htmlparser';
-
-function makeMap(str) {
-	const obj = {};
-	const items = str.split(',');
-	for (let i = 0; i < items.length; i += 1) obj[items[i]] = true;
-	return obj;
-}
-
-// Block Elements - HTML 5
-const block = makeMap(
-	'br,code,address,article,applet,aside,audio,blockquote,button,canvas,center,dd,del,dir,div,dl,dt,fieldset,figcaption,figure,footer,form,frameset,h1,h2,h3,h4,h5,h6,header,hgroup,hr,iframe,ins,isindex,li,map,menu,noframes,noscript,object,ol,output,p,pre,section,script,table,tbody,td,tfoot,th,thead,tr,ul,video'
-);
-
-// Inline Elements - HTML 5
-const inline = makeMap(
-	'a,abbr,acronym,applet,b,basefont,bdo,big,button,cite,del,dfn,em,font,i,iframe,img,input,ins,kbd,label,map,object,q,s,samp,script,select,small,span,strike,strong,sub,sup,textarea,tt,u,var'
-);
-
-// Elements that you can, intentionally, leave open
-// (and which close themselves)
-const closeSelf = makeMap('colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr');
-
-function removeDOCTYPE(html) {
-	const isDocument = /<body.*>([^]*)<\/body>/.test(html);
-	return isDocument ? RegExp.$1 : html;
-}
-
-function trimHtml(html) {
-	return html
-		.replace(/<!--.*?-->/gi, '')
-		.replace(/\/\*.*?\*\//gi, '')
-		// .replace(/[ ]+</gi, '<')
-		.replace(/<script[^]*<\/script>/gi, '')
-		.replace(/<style[^]*<\/style>/gi, '');
-}
-
-function getScreenInfo() {
-	const screen = {};
-	wx.getSystemInfo({
-		success: (res) => {
-			screen.width = res.windowWidth;
-			screen.height = res.windowHeight;
-		},
-	});
-	return screen;
-}
-
-function html2json(html, customHandler, imageProp, host) {
-	// 处理字符串
-	html = removeDOCTYPE(html);
-	html = trimHtml(html);
-	html = wxDiscode.strDiscode(html);
-	// 生成node节点
-	const bufArray = [];
-	const results = {
-		nodes: [],
-		imageUrls: [],
-	};
-
-	const screen = getScreenInfo();
-
-	function Node(tag) {
-		this.node = 'element';
-		this.tag = tag;
-
-		this.$screen = screen;
-	}
-
-	HTMLParser(html, {
-		start(tag, attrs, unary) {
-			// node for this element
-			const node = new Node(tag);
-
-			if (bufArray.length !== 0) {
-				const parent = bufArray[0];
-				if (parent.nodes === undefined) {
-					parent.nodes = [];
-				}
-			}
-
-			if (block[tag]) {
-				node.tagType = 'block';
-			} else if (inline[tag]) {
-				node.tagType = 'inline';
-			} else if (closeSelf[tag]) {
-				node.tagType = 'closeSelf';
-			}
-
-			node.attr = attrs.reduce((pre, attr) => {
-				const {
-					name
-				} = attr;
-				let {
-					value
-				} = attr;
-				if (name === 'class') {
-					node.classStr = value;
-				}
-				// has multi attibutes
-				// make it array of attribute
-				if (name === 'style') {
-					node.styleStr = value;
-				}
-				if (value.match(/ /)) {
-					value = value.split(' ');
-				}
-
-				// if attr already exists
-				// merge it
-				if (pre[name]) {
-					if (Array.isArray(pre[name])) {
-						// already array, push to last
-						pre[name].push(value);
-					} else {
-						// single value, make it array
-						pre[name] = [pre[name], value];
-					}
-				} else {
-					// not exist, put it
-					pre[name] = value;
-				}
-
-				return pre;
-			}, {});
-
-			// 优化样式相关属性
-			if (node.classStr) {
-				node.classStr += ` ${node.tag}`;
-			} else {
-				node.classStr = node.tag;
-			}
-			if (node.tagType === 'inline') {
-				node.classStr += ' inline';
-			}
-
-			// 对img添加额外数据
-			if (node.tag === 'img') {
-				let imgUrl = node.attr.src;
-				imgUrl = wxDiscode.urlToHttpUrl(imgUrl, imageProp.domain);
-				Object.assign(node.attr, imageProp, {
-					src: imgUrl || '',
-				});
-				if (imgUrl) {
-					results.imageUrls.push(imgUrl);
-				}
-			}
-
-			// 处理a标签属性
-			if (node.tag === 'a') {
-				node.attr.href = node.attr.href || '';
-			}
-
-			//处理table
-			if (node.tag === 'table' || node.tag === 'tr' || node.tag === 'td') {
-				node.styleStr = ""
-				if (node.attr.width) {
-					node.styleStr += "width:" + node.attr.width + 'px;'
-					if (node.attr.width > node.$screen.width) {
-						//等比缩放height
-						if (node.attr.height) {
-							node.attr.height = (node.$screen.width * node.attr.height) / node.attr.width
-						}
-					}
-				}
-				if (node.attr.height) {
-					node.styleStr += "height:" + node.attr.height + 'px;'
-				}
-
-			}
-			//处理video
-			if (node.tag === 'video') {
-				node.styleStr = ""
-				if (node.attr.width) {
-					node.styleStr += "width:" + node.attr.width + 'px;'
-					if (node.attr.width > node.$screen.width) {
-						//等比缩放height
-						if (node.attr.height) {
-							node.attr.height = (node.$screen.width * node.attr.height) / node.attr.width
-						}
-					}
-				}
-				if (node.attr.height) {
-					node.styleStr += "height:" + node.attr.height + 'px;'
-				}
-
-			}
-
-			// 处理font标签样式属性
-			if (node.tag === 'font') {
-				const fontSize = [
-					'x-small',
-					'small',
-					'medium',
-					'large',
-					'x-large',
-					'xx-large',
-					'-webkit-xxx-large',
-				];
-				const styleAttrs = {
-					color: 'color',
-					face: 'font-family',
-					size: 'font-size',
-				};
-				if (!node.styleStr) node.styleStr = '';
-				Object.keys(styleAttrs).forEach((key) => {
-					if (node.attr[key]) {
-						const value = key === 'size' ? fontSize[node.attr[key] - 1] : node.attr[key];
-						node.styleStr += `${styleAttrs[key]}: ${value};`;
-					}
-				});
-			}
-
-			// 临时记录source资源
-			if (node.tag === 'source') {
-				results.source = node.attr.src;
-			}
-			//#ifndef MP-BAIDU
-			if (customHandler.start) {
-				customHandler.start(node, results);
-			}
-			//#endif
-
-			if (unary) {
-				// if this tag doesn't have end tag
-				// like <img src="hoge.png"/>
-				// add to parents
-				const parent = bufArray[0] || results;
-				if (parent.nodes === undefined) {
-					parent.nodes = [];
-				}
-				parent.nodes.push(node);
-			} else {
-				bufArray.unshift(node);
-			}
-		},
-		end(tag) {
-			// merge into parent tag
-			const node = bufArray.shift();
-			if (node.tag !== tag) {
-				console.error('invalid state: mismatch end tag');
-			}
-
-			// 当有缓存source资源时于于video补上src资源
-			if (node.tag === 'video' && results.source) {
-				node.attr.src = results.source;
-				delete results.source;
-			}
-			//#ifndef MP-BAIDU
-			if (customHandler && customHandler.end) {
-				customHandler.end(node, results);
-			}
-			//#endif
-
-			if (bufArray.length === 0) {
-				results.nodes.push(node);
-			} else {
-				const parent = bufArray[0];
-				if (!parent.nodes) {
-					parent.nodes = [];
-				}
-				parent.nodes.push(node);
-			}
-		},
-		chars(text) {
-			if (!text.trim()) return;
-
-			const node = {
-				node: 'text',
-				text,
-			};
-			//#ifndef MP-BAIDU
-			if (customHandler.chars) {
-				customHandler.chars(node, results);
-			}
-			//#endif
-
-			if (bufArray.length === 0) {
-				results.nodes.push(node);
-			} else {
-				const parent = bufArray[0];
-				if (parent.nodes === undefined) {
-					parent.nodes = [];
-				}
-				parent.nodes.push(node);
-			}
-		},
-	});
-
-	return results;
-}
-
-export default html2json;
diff --git a/components/feng-parse/libs/htmlparser.js b/components/feng-parse/libs/htmlparser.js
deleted file mode 100644
index 2939da3..0000000
--- a/components/feng-parse/libs/htmlparser.js
+++ /dev/null
@@ -1,156 +0,0 @@
-/**
- *
- * htmlParser改造自: https://github.com/blowsie/Pure-JavaScript-HTML5-Parser
- *
- * author: Di (微信小程序开发工程师)
- * organization: WeAppDev(微信小程序开发论坛)(http://weappdev.com)
- *               垂直微信小程序开发交流社区
- *
- * github地址: https://github.com/icindy/wxParse
- *
- * for: 微信小程序富文本解析
- * detail : http://weappdev.com/t/wxparse-alpha0-1-html-markdown/184
- */
-// Regular Expressions for parsing tags and attributes
-
-const startTag = /^<([-A-Za-z0-9_]+)((?:\s+[a-zA-Z0-9_:][-a-zA-Z0-9_:.]*(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)>/;
-const endTag = /^<\/([-A-Za-z0-9_]+)[^>]*>/;
-const attr = /([a-zA-Z0-9_:][-a-zA-Z0-9_:.]*)(?:\s*=\s*(?:(?:"((?:\\.|[^"])*)")|(?:'((?:\\.|[^'])*)')|([^>\s]+)))?/g;
-
-function makeMap(str) {
-  const obj = {};
-  const items = str.split(',');
-  for (let i = 0; i < items.length; i += 1) obj[items[i]] = true;
-  return obj;
-}
-
-// Empty Elements - HTML 5
-const empty = makeMap('area,base,basefont,br,col,frame,hr,img,input,link,meta,param,embed,command,keygen,source,track,wbr');
-
-// Block Elements - HTML 5
-const block = makeMap('address,code,article,applet,aside,audio,blockquote,button,canvas,center,dd,del,dir,div,dl,dt,fieldset,figcaption,figure,footer,form,frameset,h1,h2,h3,h4,h5,h6,header,hgroup,hr,iframe,ins,isindex,li,map,menu,noframes,noscript,object,ol,output,p,pre,section,script,table,tbody,td,tfoot,th,thead,tr,ul,video');
-
-// Inline Elements - HTML 5
-const inline = makeMap('a,abbr,acronym,applet,b,basefont,bdo,big,br,button,cite,del,dfn,em,font,i,iframe,img,input,ins,kbd,label,map,object,q,s,samp,script,select,small,span,strike,strong,sub,sup,textarea,tt,u,var');
-
-// Elements that you can, intentionally, leave open
-// (and which close themselves)
-const closeSelf = makeMap('colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr');
-
-// Attributes that have their values filled in disabled="disabled"
-const fillAttrs = makeMap('checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected');
-
-function HTMLParser(html, handler) {
-  let index;
-  let chars;
-  let match;
-  let last = html;
-  const stack = [];
-
-  stack.last = () => stack[stack.length - 1];
-
-  function parseEndTag(tag, tagName) {
-    // If no tag name is provided, clean shop
-    let pos;
-    if (!tagName) {
-      pos = 0;
-    } else {
-      // Find the closest opened tag of the same type
-      tagName = tagName.toLowerCase();
-      for (pos = stack.length - 1; pos >= 0; pos -= 1) {
-        if (stack[pos] === tagName) break;
-      }
-    }
-    if (pos >= 0) {
-      // Close all the open elements, up the stack
-      for (let i = stack.length - 1; i >= pos; i -= 1) {
-        if (handler.end) handler.end(stack[i]);
-      }
-
-      // Remove the open elements from the stack
-      stack.length = pos;
-    }
-  }
-
-  function parseStartTag(tag, tagName, rest, unary) {
-    tagName = tagName.toLowerCase();
-
-    if (block[tagName]) {
-      while (stack.last() && inline[stack.last()]) {
-        parseEndTag('', stack.last());
-      }
-    }
-
-    if (closeSelf[tagName] && stack.last() === tagName) {
-      parseEndTag('', tagName);
-    }
-
-    unary = empty[tagName] || !!unary;
-
-    if (!unary) stack.push(tagName);
-
-    if (handler.start) {
-      const attrs = [];
-
-      rest.replace(attr, function genAttr(matches, name) {
-        const value = arguments[2] || arguments[3] || arguments[4] || (fillAttrs[name] ? name : '');
-
-        attrs.push({
-          name,
-          value,
-          escaped: value.replace(/(^|[^\\])"/g, '$1\\"'), // "
-        });
-      });
-
-      if (handler.start) {
-        handler.start(tagName, attrs, unary);
-      }
-    }
-  }
-
-  while (html) {
-    chars = true;
-
-    if (html.indexOf('</') === 0) {
-      match = html.match(endTag);
-
-      if (match) {
-        html = html.substring(match[0].length);
-        match[0].replace(endTag, parseEndTag);
-        chars = false;
-      }
-
-      // start tag
-    } else if (html.indexOf('<') === 0) {
-      match = html.match(startTag);
-
-      if (match) {
-        html = html.substring(match[0].length);
-        match[0].replace(startTag, parseStartTag);
-        chars = false;
-      }
-    }
-
-    if (chars) {
-      index = html.indexOf('<');
-      let text = '';
-      while (index === 0) {
-        text += '<';
-        html = html.substring(1);
-        index = html.indexOf('<');
-      }
-      text += index < 0 ? html : html.substring(0, index);
-      html = index < 0 ? '' : html.substring(index);
-
-      if (handler.chars) handler.chars(text);
-    }
-
-    if (html === last) throw new Error(`Parse Error: ${html}`);
-    last = html;
-  }
-
-  // Clean up any remaining tags
-  parseEndTag();
-}
-
-export default HTMLParser;
diff --git a/components/feng-parse/libs/wxDiscode.js b/components/feng-parse/libs/wxDiscode.js
deleted file mode 100644
index 15d9a95..0000000
--- a/components/feng-parse/libs/wxDiscode.js
+++ /dev/null
@@ -1,209 +0,0 @@
-// HTML 支持的数学符号
-function strNumDiscode(str) {
-str = str.replace(/&forall;|&#8704;|&#x2200;/g, '∀');
-str = str.replace(/&part;|&#8706;|&#x2202;/g, '∂');
-str = str.replace(/&exist;|&#8707;|&#x2203;/g, '∃');
-str = str.replace(/&empty;|&#8709;|&#x2205;/g, '∅');
-str = str.replace(/&nabla;|&#8711;|&#x2207;/g, '∇');
-str = str.replace(/&isin;|&#8712;|&#x2208;/g, '∈');
-str = str.replace(/&notin;|&#8713;|&#x2209;/g, '∉');
-str = str.replace(/&ni;|&#8715;|&#x220b;/g, '∋');
-str = str.replace(/&prod;|&#8719;|&#x220f;/g, '∏');
-str = str.replace(/&sum;|&#8721;|&#x2211;/g, '∑');
-str = str.replace(/&minus;|&#8722;|&#x2212;/g, '−');
-str = str.replace(/&lowast;|&#8727;|&#x2217;/g, '∗');
-str = str.replace(/&radic;|&#8730;|&#x221a;/g, '√');
-str = str.replace(/&prop;|&#8733;|&#x221d;/g, '∝');
-str = str.replace(/&infin;|&#8734;|&#x221e;/g, '∞');
-str = str.replace(/&ang;|&#8736;|&#x2220;/g, '∠');
-str = str.replace(/&and;|&#8743;|&#x2227;/g, '∧');
-str = str.replace(/&or;|&#8744;|&#x2228;/g, '∨');
-str = str.replace(/&cap;|&#8745;|&#x2229;/g, '∩');
-str = str.replace(/&cup;|&#8746;|&#x222a;/g, '∪');
-str = str.replace(/&int;|&#8747;|&#x222b;/g, '∫');
-str = str.replace(/&there4;|&#8756;|&#x2234;/g, '∴');
-str = str.replace(/&sim;|&#8764;|&#x223c;/g, '∼');
-str = str.replace(/&cong;|&#8773;|&#x2245;/g, '≅');
-str = str.replace(/&asymp;|&#8776;|&#x2248;/g, '≈');
-str = str.replace(/&ne;|&#8800;|&#x2260;/g, '≠');
-str = str.replace(/&le;|&#8804;|&#x2264;/g, '≤');
-str = str.replace(/&ge;|&#8805;|&#x2265;/g, '≥');
-str = str.replace(/&sub;|&#8834;|&#x2282;/g, '⊂');
-str = str.replace(/&sup;|&#8835;|&#x2283;/g, '⊃');
-str = str.replace(/&nsub;|&#8836;|&#x2284;/g, '⊄');
-str = str.replace(/&sube;|&#8838;|&#x2286;/g, '⊆');
-str = str.replace(/&supe;|&#8839;|&#x2287;/g, '⊇');
-str = str.replace(/&oplus;|&#8853;|&#x2295;/g, '⊕');
-str = str.replace(/&otimes;|&#8855;|&#x2297;/g, '⊗');
-str = str.replace(/&perp;|&#8869;|&#x22a5;/g, '⊥');
-str = str.replace(/&sdot;|&#8901;|&#x22c5;/g, '⋅');
-return str;
-}
-
-// HTML 支持的希腊字母
-function strGreeceDiscode(str) {
-str = str.replace(/&Alpha;|&#913;|&#x391;/g, 'Α');
-str = str.replace(/&Beta;|&#914;|&#x392;/g, 'Β');
-str = str.replace(/&Gamma;|&#915;|&#x393;/g, 'Γ');
-str = str.replace(/&Delta;|&#916;|&#x394;/g, 'Δ');
-str = str.replace(/&Epsilon;|&#917;|&#x395;/g, 'Ε');
-str = str.replace(/&Zeta;|&#918;|&#x396;/g, 'Ζ');
-str = str.replace(/&Eta;|&#919;|&#x397;/g, 'Η');
-str = str.replace(/&Theta;|&#920;|&#x398;/g, 'Θ');
-str = str.replace(/&Iota;|&#921;|&#x399;/g, 'Ι');
-str = str.replace(/&Kappa;|&#922;|&#x39a;/g, 'Κ');
-str = str.replace(/&Lambda;|&#923;|&#x39b;/g, 'Λ');
-str = str.replace(/&Mu;|&#924;|&#x39c;/g, 'Μ');
-str = str.replace(/&Nu;|&#925;|&#x39d;/g, 'Ν');
-str = str.replace(/&Xi;|&#925;|&#x39d;/g, 'Ν');
-str = str.replace(/&Omicron;|&#927;|&#x39f;/g, 'Ο');
-str = str.replace(/&Pi;|&#928;|&#x3a0;/g, 'Π');
-str = str.replace(/&Rho;|&#929;|&#x3a1;/g, 'Ρ');
-str = str.replace(/&Sigma;|&#931;|&#x3a3;/g, 'Σ');
-str = str.replace(/&Tau;|&#932;|&#x3a4;/g, 'Τ');
-str = str.replace(/&Upsilon;|&#933;|&#x3a5;/g, 'Υ');
-str = str.replace(/&Phi;|&#934;|&#x3a6;/g, 'Φ');
-str = str.replace(/&Chi;|&#935;|&#x3a7;/g, 'Χ');
-str = str.replace(/&Psi;|&#936;|&#x3a8;/g, 'Ψ');
-str = str.replace(/&Omega;|&#937;|&#x3a9;/g, 'Ω');
-
-str = str.replace(/&alpha;|&#945;|&#x3b1;/g, 'α');
-str = str.replace(/&beta;|&#946;|&#x3b2;/g, 'β');
-str = str.replace(/&gamma;|&#947;|&#x3b3;/g, 'γ');
-str = str.replace(/&delta;|&#948;|&#x3b4;/g, 'δ');
-str = str.replace(/&epsilon;|&#949;|&#x3b5;/g, 'ε');
-str = str.replace(/&zeta;|&#950;|&#x3b6;/g, 'ζ');
-str = str.replace(/&eta;|&#951;|&#x3b7;/g, 'η');
-str = str.replace(/&theta;|&#952;|&#x3b8;/g, 'θ');
-str = str.replace(/&iota;|&#953;|&#x3b9;/g, 'ι');
-str = str.replace(/&kappa;|&#954;|&#x3ba;/g, 'κ');
-str = str.replace(/&lambda;|&#955;|&#x3bb;/g, 'λ');
-str = str.replace(/&mu;|&#956;|&#x3bc;/g, 'μ');
-str = str.replace(/&nu;|&#957;|&#x3bd;/g, 'ν');
-str = str.replace(/&xi;|&#958;|&#x3be;/g, 'ξ');
-str = str.replace(/&omicron;|&#959;|&#x3bf;/g, 'ο');
-str = str.replace(/&pi;|&#960;|&#x3c0;/g, 'π');
-str = str.replace(/&rho;|&#961;|&#x3c1;/g, 'ρ');
-str = str.replace(/&sigmaf;|&#962;|&#x3c2;/g, 'ς');
-str = str.replace(/&sigma;|&#963;|&#x3c3;/g, 'σ');
-str = str.replace(/&tau;|&#964;|&#x3c4;/g, 'τ');
-str = str.replace(/&upsilon;|&#965;|&#x3c5;/g, 'υ');
-str = str.replace(/&phi;|&#966;|&#x3c6;/g, 'φ');
-str = str.replace(/&chi;|&#967;|&#x3c7;/g, 'χ');
-str = str.replace(/&psi;|&#968;|&#x3c8;/g, 'ψ');
-str = str.replace(/&omega;|&#969;|&#x3c9;/g, 'ω');
-str = str.replace(/&thetasym;|&#977;|&#x3d1;/g, 'ϑ');
-str = str.replace(/&upsih;|&#978;|&#x3d2;/g, 'ϒ');
-str = str.replace(/&piv;|&#982;|&#x3d6;/g, 'ϖ');
-str = str.replace(/&middot;|&#183;|&#xb7;/g, '·');
-return str;
-}
-
-function strcharacterDiscode(str) {
-// 加入常用解析
-
-str = str.replace(/&nbsp;|&#32;|&#x20;/g, "&nbsp;");
-str = str.replace(/&ensp;|&#8194;|&#x2002;/g, '&ensp;');
-str = str.replace(/&#12288;|&#x3000;/g, '<span class=\'spaceshow\'> </span>');
-str = str.replace(/&emsp;|&#8195;|&#x2003;/g, '&emsp;');
-str = str.replace(/&quot;|&#34;|&#x22;/g, "\"");
-str = str.replace(/&apos;|&#39;|&#x27;/g, "&apos;");
-str = str.replace(/&acute;|&#180;|&#xB4;/g, "´");
-str = str.replace(/&times;|&#215;|&#xD7;/g, "×");
-str = str.replace(/&divide;|&#247;|&#xF7;/g, "÷");
-str = str.replace(/&amp;|&#38;|&#x26;/g, '&amp;');
-str = str.replace(/&lt;|&#60;|&#x3c;/g, '&lt;');
-str = str.replace(/&gt;|&#62;|&#x3e;/g, '&gt;');
-
-
-
-
-str = str.replace(/&nbsp;|&#32;|&#x20;/g, "<span class='spaceshow'> </span>");
-str = str.replace(/&ensp;|&#8194;|&#x2002;/g, '<span class=\'spaceshow\'> </span>');
-str = str.replace(/&#12288;|&#x3000;/g, '<span class=\'spaceshow\'> </span>');
-str = str.replace(/&emsp;|&#8195;|&#x2003;/g, '<span class=\'spaceshow\'> </span>');
-str = str.replace(/&quot;|&#34;|&#x22;/g, "\"");
-str = str.replace(/&quot;|&#39;|&#x27;/g, "'");
-str = str.replace(/&acute;|&#180;|&#xB4;/g, "´");
-str = str.replace(/&times;|&#215;|&#xD7;/g, "×");
-str = str.replace(/&divide;|&#247;|&#xF7;/g, "÷");
-str = str.replace(/&amp;|&#38;|&#x26;/g, '&');
-str = str.replace(/&lt;|&#60;|&#x3c;/g, '<');
-str = str.replace(/&gt;|&#62;|&#x3e;/g, '>');
-return str;
-}
-
-// HTML 支持的其他实体
-function strOtherDiscode(str) {
-str = str.replace(/&OElig;|&#338;|&#x152;/g, 'Œ');
-str = str.replace(/&oelig;|&#339;|&#x153;/g, 'œ');
-str = str.replace(/&Scaron;|&#352;|&#x160;/g, 'Š');
-str = str.replace(/&scaron;|&#353;|&#x161;/g, 'š');
-str = str.replace(/&Yuml;|&#376;|&#x178;/g, 'Ÿ');
-str = str.replace(/&fnof;|&#402;|&#x192;/g, 'ƒ');
-str = str.replace(/&circ;|&#710;|&#x2c6;/g, 'ˆ');
-str = str.replace(/&tilde;|&#732;|&#x2dc;/g, '˜');
-str = str.replace(/&thinsp;|$#8201;|&#x2009;/g, '<span class=\'spaceshow\'> </span>');
-str = str.replace(/&zwnj;|&#8204;|&#x200C;/g, '<span class=\'spaceshow\'>‌</span>');
-str = str.replace(/&zwj;|$#8205;|&#x200D;/g, '<span class=\'spaceshow\'>‍</span>');
-str = str.replace(/&lrm;|$#8206;|&#x200E;/g, '<span class=\'spaceshow\'>‎</span>');
-str = str.replace(/&rlm;|&#8207;|&#x200F;/g, '<span class=\'spaceshow\'>‏</span>');
-str = str.replace(/&ndash;|&#8211;|&#x2013;/g, '–');
-str = str.replace(/&mdash;|&#8212;|&#x2014;/g, '—');
-str = str.replace(/&lsquo;|&#8216;|&#x2018;/g, '‘');
-str = str.replace(/&rsquo;|&#8217;|&#x2019;/g, '’');
-str = str.replace(/&sbquo;|&#8218;|&#x201a;/g, '‚');
-str = str.replace(/&ldquo;|&#8220;|&#x201c;/g, '“');
-str = str.replace(/&rdquo;|&#8221;|&#x201d;/g, '”');
-str = str.replace(/&bdquo;|&#8222;|&#x201e;/g, '„');
-str = str.replace(/&dagger;|&#8224;|&#x2020;/g, '†');
-str = str.replace(/&Dagger;|&#8225;|&#x2021;/g, '‡');
-str = str.replace(/&bull;|&#8226;|&#x2022;/g, '•');
-str = str.replace(/&hellip;|&#8230;|&#x2026;/g, '…');
-str = str.replace(/&permil;|&#8240;|&#x2030;/g, '‰');
-str = str.replace(/&prime;|&#8242;|&#x2032;/g, '′');
-str = str.replace(/&Prime;|&#8243;|&#x2033;/g, '″');
-str = str.replace(/&lsaquo;|&#8249;|&#x2039;/g, '‹');
-str = str.replace(/&rsaquo;|&#8250;|&#x203a;/g, '›');
-str = str.replace(/&oline;|&#8254;|&#x203e;/g, '‾');
-str = str.replace(/&euro;|&#8364;|&#x20ac;/g, '€');
-str = str.replace(/&trade;|&#8482;|&#x2122;/g, '™');
-str = str.replace(/&larr;|&#8592;|&#x2190;/g, '←');
-str = str.replace(/&uarr;|&#8593;|&#x2191;/g, '↑');
-str = str.replace(/&rarr;|&#8594;|&#x2192;/g, '→');
-str = str.replace(/&darr;|&#8595;|&#x2193;/g, '↓');
-str = str.replace(/&harr;|&#8596;|&#x2194;/g, '↔');
-str = str.replace(/&crarr;|&#8629;|&#x21b5;/g, '↵');
-str = str.replace(/&lceil;|&#8968;|&#x2308;/g, '⌈');
-str = str.replace(/&rceil;|&#8969;|&#x2309;/g, '⌉');
-str = str.replace(/&lfloor;|&#8970;|&#x230a;/g, '⌊');
-str = str.replace(/&rfloor;|&#8971;|&#x230b;/g, '⌋');
-str = str.replace(/&loz;|&#9674;|&#x25ca;/g, '◊');
-str = str.replace(/&spades;|&#9824;|&#x2660;/g, '♠');
-str = str.replace(/&clubs;|&#9827;|&#x2663;/g, '♣');
-str = str.replace(/&hearts;|&#9829;|&#x2665;/g, '♥');
-str = str.replace(/&diams;|&#9830;|&#x2666;/g, '♦');
-return str;
-}
-
-function strDiscode(str) {
-  str = strNumDiscode(str);
-  str = strGreeceDiscode(str);
-  str = strcharacterDiscode(str);
-  str = strOtherDiscode(str);
-  return str;
-}
-
-function urlToHttpUrl(url, domain) {
-  if (/^\/\//.test(url)) {
-    return `https:${url}`;
-  } else if (/^\//.test(url)) {
-    return `https://${domain}${url}`;
-  }
-  return url;
-}
-
-export default {
-  strDiscode,
-  urlToHttpUrl,
-};
diff --git a/components/feng-parse/parse.css b/components/feng-parse/parse.css
deleted file mode 100644
index e7adce1..0000000
--- a/components/feng-parse/parse.css
+++ /dev/null
@@ -1,258 +0,0 @@
-/**
- * author: Di (微信小程序开发工程师)
- * organization: WeAppDev(微信小程序开发论坛)(http://weappdev.com)
- *         垂直微信小程序开发交流社区
- *
- * github地址: https://github.com/icindy/wxParse
- *
- * for: 微信小程序富文本解析
- * detail : http://weappdev.com/t/wxparse-alpha0-1-html-markdown/184
- */
-/**
- * 请在全局下引入该文件,@import '/static/wxParse.css';
- */
-.wxParse {
-	user-select:none;
-	width: 100%;
-	font-family: Helvetica, "PingFangSC", 'Microsoft Yahei', '微软雅黑', Arial, sans-serif;
-	color: #333;
-	line-height: 1.5;
-	font-size: 1em;
-	text-align:justify;/* //左右两端对齐 */
-}
-.wxParse view ,.wxParse uni-view{
-	word-break: break-word;
-}
-.wxParse .p {
-	padding-bottom: 0.5em;
-	clear: both;
-	/* letter-spacing: 0;//字间距 */
-}
-.wxParse .inline {
-  display: inline;
-  margin: 0;
-  padding: 0;
-}
-
-.wxParse .div {
-  margin: 0;
-  padding: 0;
-  display: block;
-}
-
-.wxParse .h1{
-  font-size: 2em;
-  line-height: 1.2em;
-  margin: 0.67em 0;
-}
-.wxParse .h2{
-  font-size: 1.5em;
-  margin: 0.83em 0;
-}
-.wxParse .h3{
-  font-size: 1.17em;
-  margin: 1em 0;
-}
-.wxParse .h4{
-  margin: 1.33em 0;
-}
-.wxParse .h5{
-  font-size: 0.83em;
-  margin: 1.67em 0;
-}
-.wxParse .h6{
-  font-size: 0.83em;
-  margin: 1.67em 0;
-}
-
-.wxParse .h1,
-.wxParse .h2,
-.wxParse .h3,
-.wxParse .h4,
-.wxParse .h5,
-.wxParse .h6,
-.wxParse .b,
-.wxParse .strong{
-  font-weight: bolder;
-}
-
-.wxParse .i,
-.wxParse .cite,
-.wxParse .em,
-.wxParse .var,
-.wxParse .address {
-  font-style: italic;
-}
-.wxParse .spaceshow{
-	  white-space: pre;
-}
-.wxParse .pre,
-.wxParse .tt,
-.wxParse .code,
-.wxParse .kbd,
-.wxParse .samp {
-  font-family: monospace;
-}
-.wxParse .pre {
-  overflow: auto;
-  background: #f5f5f5;
-  padding: 16upx;
-  white-space: pre;
-  margin: 1em 0upx;
-  font-size: 24upx;
-}
-.wxParse .code {
-	overflow: auto;
-	padding: 16upx;
-	white-space: pre;
-	margin: 1em 0upx;
-	background: #f5f5f5;
-	font-size: 24upx;
-}
-
-.wxParse .big {
-  font-size: 1.17em;
-}
-
-.wxParse .small,
-.wxParse .sub,
-.wxParse .sup {
-  font-size: 0.83em;
-}
-
-.wxParse .sub {
-  vertical-align: sub;
-}
-.wxParse .sup {
-  vertical-align: super;
-}
-
-.wxParse .s,
-.wxParse .strike,
-.wxParse .del {
-  text-decoration: line-through;
-}
-
-.wxParse .strong,
-.wxParse .text,
-.wxParse .span,
-.wxParse .s {
-  display: inline;
-}
-
-.wxParse .a {
-  color: deepskyblue;
-}
-
-.wxParse .video {
-  text-align: center;
-  margin: 22upx 0;
-}
-
-.wxParse .video-video {
-  width: 100%;
-}
-.wxParse .uni-image{
-	max-width: 100%;
-}
-.wxParse .img {
-  display: block;
-  max-width: 100%;
-  margin-bottom: 0em;/* //与p标签底部padding同时修改 */
-  overflow: hidden;
-}
-
-.wxParse .blockquote {
-  margin: 10upx 0;
-  padding: 22upx 0 22upx 22upx;
-  font-family: Courier, Calibri, "宋体";
-  background: #f5f5f5;
-  border-left: 6upx solid #dbdbdb;
-}
-.wxParse .blockquote .p {
-  margin: 0;
-}
-.wxParse .ul, .wxParse .ol {
-  display: block;
-  margin: 1em 0;
-  padding-left: 2em;
-}
-.wxParse .ol {
-  list-style-type: disc;
-}
-.wxParse .ol {
-  list-style-type: decimal;
-}
-.wxParse .ol>weixin-parse-template,.wxParse .ul>weixin-parse-template {
-  display: list-item;
-  align-items: baseline;
-  text-align: match-parent;
-}
-
-.wxParse .ol>.li,.wxParse .ul>.li {
-  display: list-item;
-  align-items: baseline;
-  text-align: match-parent;
-}
-.wxParse .ul .ul, .wxParse .ol .ul {
-  list-style-type: circle;
-}
-.wxParse .ol .ol .ul, .wxParse .ol .ul .ul, .wxParse .ul .ol .ul, .wxParse .ul .ul .ul {
-    list-style-type: square;
-}
-
-.wxParse .u {
-  text-decoration: underline;
-}
-.wxParse .hide {
-  display: none;
-}
-.wxParse .del {
-  display: inline;
-}
-.wxParse .figure {
-  overflow: hidden;
-}
-.wxParse .tablebox{
-	overflow: auto;
-	background-color: #f5f5f5;
-	background: #f5f5f5;
-	font-size: 13px;
-	padding: 8px;
-}
-.wxParse .table .table,.wxParse .table{
-	border-collapse:collapse;
-	box-sizing: border-box;
-	/* 内边框 */
-	/* width: 100%; */
-	overflow: auto;
-	white-space: pre;
-}
-.wxParse .tbody{
-	border-collapse:collapse;
-	box-sizing: border-box;
-	/* 内边框 */
-	border: 1px solid #dadada;
-}
-.wxParse .table  .thead, .wxParse  .table .tfoot, .wxParse  .table .th{
-	border-collapse:collapse;
-	box-sizing: border-box;
-	background: #ececec;
-	font-weight: 40;
-}
-.wxParse  .table .tr {
-	border-collapse:collapse;
-	box-sizing: border-box;
-	/* border: 2px solid #F0AD4E; */
-	overflow:auto;
-}
-.wxParse  .table .th,
-.wxParse  .table .td{
-	border-collapse:collapse;
-	box-sizing: border-box;
-	border: 2upx solid #dadada;
-	overflow:auto;
-}
-.wxParse .audio, .wxParse .uni-audio-default{
-	display: block;
-}
\ No newline at end of file
diff --git a/components/feng-parse/parse.vue b/components/feng-parse/parse.vue
deleted file mode 100644
index 38adc4f..0000000
--- a/components/feng-parse/parse.vue
+++ /dev/null
@@ -1,237 +0,0 @@
-<!--**
- * forked from:https://github.com/F-loat/mpvue-wxParse
- *
- * github地址: https://github.com/dcloudio/uParse
- *
- * for: uni-app框架下 富文本解析
- * 
- * 优化 by zhiqiang.feng@qq.com
- */-->
-
-<template>
-	
-	<!--基础元素-->
-	<view class="wxParse" :class="className" :style="'user-select:' + userSelect">
-		<block v-for="(node, index) of nodes" :key="index" v-if="!loading">
-			<wxParseTemplate :node="node" />
-		</block>
-	</view>
-</template>
-
-<script>
-import HtmlToJson from './libs/html2json';
-import wxParseTemplate from './components/wxParseTemplate0';
-
-	export default {
-		name: 'wxParse',
-		props: {
-			// user-select:none;
-			userSelect: {
-				type: String,
-				default: 'text' //none |text| all | element
-			},
-			imgOptions: {
-				type: [Object, Boolean],
-				default: function() {
-					return {
-						loop: false,
-						indicator: 'number',
-						longPressActions: false
-						// longPressActions: {
-						// 	 itemList: ['发送给朋友', '保存图片', '收藏'],
-						// 		success: function (res) {
-						// 			console.log('选中了第' + (res.tapIndex + 1) + '个按钮');
-						// 		},
-						// 		fail: function (res) {
-						// 			console.log(res.errMsg);
-						// 		}    
-						// 	}
-						// }
-					}
-				}
-			},
-			loading: {
-				type: Boolean,
-				default: false
-			},
-			className: {
-				type: String,
-				default: ''
-			},
-			content: {
-				type: String,
-				default: ''
-			},
-			noData: {
-				type: String,
-				default: ''
-			},
-			startHandler: {
-				type: Function,
-				default () {
-					return node => {
-						node.attr.class = null;
-						node.attr.style = null;
-					};
-				}
-			},
-			endHandler: {
-				type: Function,
-				default() {
-					return node => {
-						node = node
-					};
-				}
-			},
-			charsHandler: {
-				type: Function,
-				default() {
-					return node => {
-						node = node
-					};
-				}
-			},
-			imageProp: {
-				type: Object,
-				default () {
-					return {
-						mode: 'aspectFit',
-						padding: 0,
-						lazyLoad: false,
-						domain: ''
-					};
-				}
-			}
-		},
-		components: {
-			wxParseTemplate
-		},
-		data() {
-			return {
-				nodes: {},
-				imageUrls: [],
-				wxParseWidth: {
-					value: 0
-				}
-			};
-		},
-		computed: {},
-		mounted() {
-			this.setHtml()
-		},
-		methods: {
-			setHtml() {
-				this.getWidth().then((data) => {
-					this.wxParseWidth.value = data;
-				})
-				let {
-					content,
-					noData,
-					imageProp,
-					startHandler,
-					endHandler,
-					charsHandler
-				} = this;
-				let parseData = content || noData;
-				let customHandler = {
-					start: startHandler,
-					end: endHandler,
-					chars: charsHandler
-				};
-				let results = HtmlToJson(parseData, customHandler, imageProp, this);
-
-				this.imageUrls = results.imageUrls;
-				// this.nodes = results.nodes;
-				
-				this.nodes = [];
-				results.nodes.forEach((item) => {
-					setTimeout(() => {
-						if(item.node){
-							this.nodes.push(item)
-						}
-					}, 0);
-				})
-				
-			},
-			getWidth() {
-				return new Promise((res, rej) => {
-					// #ifndef MP-ALIPAY || MP-BAIDU
-					uni.createSelectorQuery()
-						.in(this)
-						.select('.wxParse')
-						.fields({
-								size: true,
-								scrollOffset: true
-							},
-							data => {
-								res(data.width);
-							}
-						).exec();
-					// #endif
-					// #ifdef MP-BAIDU
-					const query = swan.createSelectorQuery();
-					query.select('.wxParse').boundingClientRect();
-					query.exec(obj => {
-						const rect = obj[0]
-						if (rect) {
-							res(rect.width);
-						}
-					});
-					// #endif
-					// #ifdef MP-ALIPAY
-					my.createSelectorQuery()
-						.select('.wxParse')
-						.boundingClientRect().exec((ret) => {
-							res(ret[0].width);
-						});
-					// #endif
-				});
-			},
-			navigate(href, $event, attr) {
-				console.log(href, attr);
-				this.$emit('navigate', href, $event);
-			},
-			preview(src, $event) {
-				if (!this.imageUrls.length || typeof this.imgOptions === 'boolean') {
-
-				} else {
-					uni.previewImage({
-						current: src,
-						urls: this.imageUrls,
-						loop: this.imgOptions.loop,
-						indicator: this.imgOptions.indicator,
-						longPressActions: this.imgOptions.longPressActions
-					});
-				}
-				this.$emit('preview', src, $event);
-			},
-			removeImageUrl(src) {
-				const {
-					imageUrls
-				} = this;
-				imageUrls.splice(imageUrls.indexOf(src), 1);
-			}
-		},
-		// 父组件中提供
-		provide() {
-			return {
-				parseWidth: this.wxParseWidth,
-				parseSelect: this.userSelect
-				// 提示:provide 和 inject 绑定并不是可响应的。这是刻意为之的。然而,如果你传入了一个可监听的对象,那么其对象的属性还是可响应的。
-			};
-		},
-		watch: {
-			content(val){
-				this.setHtml()
-			}
-			// content: {
-			// 	handler: function(newVal, oldVal) {
-			// 		if (newVal !== oldVal) {
-			// 			
-			// 		}
-			// 	},
-			// 	deep: true
-			// }
-		}
-	};
-</script>
diff --git a/components/friend/friend.vue b/components/friend/friend.vue
deleted file mode 100644
index 6e2506a..0000000
--- a/components/friend/friend.vue
+++ /dev/null
@@ -1,21 +0,0 @@
-<template>
-	<view>
-		{{data}}
-	</view>
-</template>
-
-<script>
-	export default {
-		name:"friend",
-		props:['data'],
-		data() {
-			return {
-				
-			};
-		}
-	}
-</script>
-
-<style lang="scss">
-
-</style>
diff --git a/components/nav-bar-top/nav-bar-top.vue b/components/nav-bar-top/nav-bar-top.vue
deleted file mode 100644
index 28a9944..0000000
--- a/components/nav-bar-top/nav-bar-top.vue
+++ /dev/null
@@ -1,72 +0,0 @@
-<template name="navBarTop">
-	<!-- 自定义顶部导航栏 -->
-	<!-- <view class="nav-bar-top" @click="gotoMyself()">
-		<view class="nav-bar-top-left">
-			<image :src="navBarImage" />
-		</view>
-		<view class="nav-bar-top-title">我要查</view>
-	</view> -->
-	
-	<uni-nav-bar class="uni-nav-bar-info" :fixed="true"  :status-bar="true" >
-		<view class="title" slot="default">{{title}}</view>
-		<view slot="left" class="uni-nav-bar-left" @click="gotoMyself()">
-			<image :src="avatarImage"></image>
-		</view>
-	</uni-nav-bar>
-</template>
-
-<script>
-	import uniNavBar from '../../components/uni-nav-bar/uni-nav-bar.vue'
-	export default{
-		props:['title'],
-		components:{uniNavBar},
-		name:"navBarTop",
-		data(){
-			// console.log(title);
-			return{
-				avatarImage:this.$store.state.avatar,
-			}
-		},
-		methods:{
-			//跳转至我的页面
-			gotoMyself(){
-				uni.navigateTo({
-					url:'../myself/myself'
-					// animationType: 'pop-in',
-					// animationDuration: 200
-				})
-				
-				// uni.navigateBack({
-				//     delta:1,
-				//     animationType:'pop-out',
-				//     animationDuration:200
-				// });
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	.uni-nav-bar-info {
-		// font-weight: 550;
-		
-		.title{
-			position: fixed;
-			right: 45%;
-			font-weight: 550;
-		}
-		
-		.uni-nav-bar-left{
-			display: flex;
-			justify-items: center;
-			
-			image{
-				// background-color: #00BFFF;
-				margin-left: 1rem;
-				width: 1.8rem;
-				height: 1.8rem;
-				border-radius: 100px;
-			}
-		}
-	}
-</style>
diff --git a/components/outAdmin/uni-Popup.vue b/components/outAdmin/uni-Popup.vue
deleted file mode 100644
index 5d03f1f..0000000
--- a/components/outAdmin/uni-Popup.vue
+++ /dev/null
@@ -1,121 +0,0 @@
-<template>
-    <view>
-        <view class="show-box-bg wx-login-box" @tap.self="$emit('cancel')">
-            <view class="conten">
-                <view class="titl">
-                    {{ textmsg.title }}
-                </view>
-                <view class="text">
-                    {{ textmsg.content }}
-                </view>
-                <view class="text" style="margin-bottom: 50rpx;">
-                    {{ textmsg.contentTwo || '' }}
-                </view>
-                <view class="btn-box">
-                    <view class="cancel" @tap="$emit('cancel')">
-                        {{ textmsg.cancel }}
-                    </view>
-                    <view class="confirm" @tap="$emit('confirm',textmsg.type)">
-                        {{ textmsg.confirm }}
-                    </view>
-                </view>
-            </view>
-        </view>
-    </view>
-</template>
-
-<script>
-    export default {
-        props:['textmsg'],
-        data() {
-            return {
-                
-            }
-        },
-        methods:{
-            operation(e){
-                let type = e
-                this.$emit('operation',type);
-            },
-        }
-    }
-</script>
-
-<style scoped lang="scss">
-    .wx-login-box {
-        width: 100%;
-        position: fixed;
-        top: 0;
-        left: 0;
-        height: 100%;
-        background-color: rgba(0, 0, 0, 0.6);
-        z-index: 901;
-        .conten {
-            width: 78%;
-            // height: 400upx;
-            background-color: #ffffff;
-            z-index: 1000;
-            position: absolute;
-            top: 50%;
-            left: 50%;
-            transform: translate(-50%,-50%);
-            border-radius: 14upx;
-            overflow: hidden;
-            .titl {
-                width: 90%;
-                height: 110rpx;
-                font-size: 40rpx;
-                padding: 0 5%;
-                color: #000000;
-                text-align: center;
-                line-height: 140rpx;
-            }
-            .text {
-                width: 90%;
-                font-size: 28rpx;
-                color: #000000;
-                padding: 0 5%;
-                text-align: center;
-            }
-            .memberY {
-                width: 90%;
-                font-size: 28rpx;
-                color: #07c1ea;
-                padding: 0 5%;
-                text-align: center;
-            }
-            .memberB {
-                width: 90%;
-                font-size: 28rpx;
-                color: #007AFF;
-                padding: 0 5%;
-                text-align: center;
-            }
-            .btn-box {
-                width: 100%;
-                height: 90rpx;
-                display: flex;
-                border-top: 2rpx solid #969696;
-                .cancel {
-                    width: 50%;
-                    height: 100%;
-                    font-size: 40rpx;
-                    color: #999;
-                    text-align: center;
-                    line-height: 89rpx;
-                    border-right: 2rpx solid #969696;
-                }
-                .confirm {
-                    width: 50%;
-                    height: 100%;
-                    font-size: 40rpx;
-                    color: #07c1ea;
-                    text-align: center;
-                    line-height: 99rpx;
-                }
-            }
-        }
-        
-    }
-    
-</style>
\ No newline at end of file
diff --git a/components/pColumn/pColumn.vue b/components/pColumn/pColumn.vue
deleted file mode 100644
index a10ff47..0000000
--- a/components/pColumn/pColumn.vue
+++ /dev/null
@@ -1,275 +0,0 @@
-<template>
-	<view class="pColumn">
-		<view class="inPColumn">
-			<view class="left">
-				<view class="top">
-					<view class="t-type">{{Pdata.alarmType}} </view>
-					<view class="t-id"> 警单编号:{{Pdata.id}}</view>
-				</view>
-				<view class="image-time">
-					<image src="../../static/images/pColumn/alarm.png"></image>
-					<view class="t-time"> {{Pdata.alarmTime}}</view>
-				</view>
-				<view class="image-place">
-					<image src="../../static/images/pColumn/position-bule.png"></image>
-					<view class="place">{{Pdata.place}}</view>
-				</view>
-			</view>
-			<view class="right">
-				<button type="default" @click="PClick">{{fromW == 0?'详情':fromW == 1?'接受':""}}</button>
-				<view class="butPopup" v-show="popuShow">
-					<view class="b-main" :style="{bottom: bmainb}">
-						<view class="b-m-title">
-							是否接该任务
-						</view>
-						<button class="b-m-Y" hover-class='b-m-Y-hove' type="default" @click="popupBY">接受</button>
-						<button class="b-m-N" hover-class='b-m-N-hove' type="default" @click="popupBN">取消</button>
-					</view>
-				</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	export default {
-		props: ['fromW', 'Pdata'],
-		data() {
-			return {
-				popuShow: false,
-				bmainb: ''
-			}
-		},
-		methods: {
-			beginObj() {
-				this.bmainb = '3rem';
-				//#ifdef MP-WEIXIN
-				this.bmainb = '0';
-				//#endif
-			},
-			receives() {
-				var url = this.$store.state.piAPI + "/alarm/alarm/APP-setAlarm",
-					Pid = this.Pdata.id,
-					id = this.$store.state.puserID, //警察id
-					name = this.$store.state.puserName, //警察id
-					data = {
-						id: Pid,
-						securityId: id,
-						alarmPeople: name
-					},
-					that = this;
-				// console.log(data);
-				wx.request({
-					url: url,
-					data: data,
-					header: {
-						"content-type": "application/x-www-form-urlencoded"
-					},
-					method: 'POST',
-					success(res) {
-						// console.log(res.data.msg);
-					}
-				})
-			},
-			PClick(val) {
-				if (this.fromW == 0) { //打开详情页面
-					// wx.navigateTo({url: '/pages/map/map'});
-					var datas = this.Pdata;
-					datas.state = 0;
-					datas.dtype = 0;
-					datas.size = 300;
-					// console.log(datas)
-					var data = [datas]; //传给地图的参数
-					wx.navigateTo({
-						url: '/pages/map/map?data=' + JSON.stringify(data)
-					});
-				} else if (this.fromW == 1) { //打开提交弹窗
-					this.popuShow = true;
-				}
-			},
-			onClose() { //触摸遮罩事件
-				this.setData({
-					popuShow: false
-				});
-			},
-			popupBY() {
-				this.receives();
-				// console.log('接收成功');
-				this.$emit('refreshTask', this.fromW)
-				// this.triggerEvent('myevent', this.data.fromW);
-				this.popuShow = false;
-			},
-			popupBN() {
-				// console.log('接收取消');
-				this.popuShow = false;
-			}
-		},
-		mounted() {
-			this.beginObj();
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	/* components/pColumn/pColumn.wxss */
-	.pColumn,
-	.inPColumn,
-	.left,
-	.right,
-	.image-time,
-	.image-place,
-	.top {
-		display: flex;
-	}
-
-	.pColumn {
-		width: 100%;
-		align-items: center;
-		justify-content: center;
-		padding-top: 0.8rem;
-
-		.inPColumn {
-			// background-color: #00BFFF;
-			margin: 0.2rem 0 0.4rem 0;
-			width: 95%;
-			height: 5rem;
-			border-bottom: 1px rgb(207, 207, 207) solid;
-			align-items: center;
-			justify-content: space-between;
-
-			.left {
-				width: 80%;
-				/* border: 1px rgb(114, 250, 159) solid; */
-				flex-direction: column;
-
-				.top {
-					.t-type {
-						font-size: 1.1rem;
-						color: #ff0000;
-						letter-spacing: 1px;
-					}
-				
-					.t-id {
-						color: #00aaff;
-						font-size: 0.8rem;
-						line-height: 1.6rem;
-						position: relative;
-						left: 0.7rem;
-					}
-				}
-
-				.image-time{
-					align-items: center;
-					height: 30px;
-					
-					image{
-						width: 35rpx;
-						height: 35rpx;
-					}
-					
-					.t-time{
-						font-size: 0.8rem;
-						color: #808080;
-						height: 20rpx;
-						line-height: 20rpx;
-						margin-left: 15rpx;
-					}
-				}
-				
-				.image-place{
-					align-items: center;
-					height: 20px;
-					
-					image{
-						width: 35rpx;
-						height: 35rpx;
-					}
-					
-					.place {
-						font-size: 0.8rem;
-						margin-left: 15rpx;
-						color: #808080;
-						height: 20rpx;
-						line-height: 20rpx;
-					}
-				}
-				
-			}
-
-			.right {
-				width: 20%;
-				/* border: 1px rgb(143, 114, 250) solid; */
-				justify-content: space-around;
-
-				/* align-items: center; */
-				.butPopup {
-					z-index: 4;
-					position: fixed;
-					top: 0;
-					left: 0;
-					width: 100%;
-					height: 100%;
-					background-color: rgba($color: #000000, $alpha: 0.5);
-
-					.b-main {
-						position: absolute;
-						z-index: 2;
-						// bottom: 3rem;//小程序不兼容
-						width: 100%;
-						// border: 1px solid #007AFF;
-						border-radius: 1.5rem;
-						background-color: #fff;
-
-						// height: 20rem;
-						.b-m-title {
-							display: flex;
-							align-items: center;
-							justify-content: center;
-							width: 100%;
-							height: 2.8rem;
-						}
-
-						.b-m-Y,
-						.b-m-N {
-							color: #fff;
-							border-radius: 0;
-						}
-
-						.b-m-Y {
-							background-color: #07C160 !important;
-						}
-
-						.b-m-Y-hove {
-							background-color: #048c44 !important;
-						}
-
-						.b-m-N {
-							background-color: #FF976A !important;
-						}
-
-						.b-m-N-hove {
-							background-color: #e1855d !important;
-						}
-					}
-				}
-			}
-		}
-	}
-
-
-
-
-	// .buttitle {
-	// 	display: flex;
-	// 	align-items: center;
-	// 	justify-content: center;
-	// 	width: 100%;
-	// 	height: 2.8rem;
-	// }
-
-	// .popups {
-	// 	width: 100%;
-	// 	padding-bottom: 0 !important;
-	// 	/* border: 1px solid seagreen; */
-	// }
-</style>
diff --git a/components/page-nav/page-nav.vue b/components/page-nav/page-nav.vue
deleted file mode 100644
index 4712cda..0000000
--- a/components/page-nav/page-nav.vue
+++ /dev/null
@@ -1,77 +0,0 @@
-<template>
-	<view class="nav-wrap">
-		<view class="nav-title">
-			<image class="logo" src="/static/images/logo.png" mode="widthFix"></image>
-			<view class="nav-info">
-				<view class="nav-title__text">
-					{{title}}
-				</view>
-			</view>
-		</view>
-		<view class="nav-desc">
-			{{desc}}
-		</view>
-	</view>
-</template>
-
-<script>
-	export default {
-		props: {
-			desc: String,
-			title: String,
-		},
-	}
-</script>
-
-<style lang="scss" scoped>
-	.nav-wrap {
-		margin-top: 15px;
-		padding: 15px;
-		position: relative;
-	}
-	
-	.lang {
-		position: absolute;
-		top: 15px;
-		right: 15px;
-	}
-	
-	.nav-title {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-		align-items: center;
-	}
-	
-	.nav-info {
-		margin-left: 15px;
-	}
-	
-	.nav-title__text {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		color: $u-main-color;
-		font-size: 20px;
-		font-weight: bold;
-	}
-	
-	.logo {
-		width: 100px;
-		/* #ifndef APP-NVUE */
-		height: auto;
-		/* #endif */
-	}
-	
-	.nav-slogan {
-		color: $u-tips-color;
-		font-size: 14px;
-	}
-	
-	.nav-desc {
-		margin-top: 10px;
-		font-size: 14px;
-		color: $u-content-color;
-	}
-</style>
diff --git a/components/pick-regions/pick-regions.vue b/components/pick-regions/pick-regions.vue
deleted file mode 100644
index 532eeb7..0000000
--- a/components/pick-regions/pick-regions.vue
+++ /dev/null
@@ -1,153 +0,0 @@
-<template>
-	<picker
-		mode="multiSelector"
-		:value="multiIndex"
-		:range="multiArray"
-		@change="handleValueChange"
-		@columnchange="handleColumnChange"
-	>
-		<slot></slot>
-	</picker>
-</template>
-
-<script>
-const CHINA_REGIONS = require('./regions.json');
-export default {
-	props: {
-		defaultRegions: {
-			type: Array,
-			default() {
-				return [];
-			}
-		},
-		defaultRegionCode: {
-			type: String
-		},
-		defaultRegion: [String, Array],
-		value: [String, Array]
-	},
-	data() {
-		return {
-			cityArr: CHINA_REGIONS[0].childs,
-			districtArr: CHINA_REGIONS[0].childs[0].childs,
-			multiIndex: [0, 0, 0],
-			isInitMultiArray: true
-		};
-	},
-	watch: {
-		defaultRegion: {
-			handler(region, oldRegion) {
-				if (Array.isArray(region)) {
-					// 避免传的是字面量的时候重复触发
-					oldRegion = oldRegion || [];
-					if (region.join('') !== oldRegion.join('')) {
-						this.handleDefaultRegion(region);
-					}
-				} else if (region && region.length == 6) {
-					this.handleDefaultRegion(region);
-				} else {
-					console.warn('defaultRegion非有效格式');
-				}
-			},
-			immediate: true
-		}
-	},
-	computed: {
-		multiArray() {
-			return this.pickedArr.map(arr => arr.map(item => item.name));
-		},
-		pickedArr() {
-			// 进行初始化
-			if (this.isInitMultiArray) {
-				return [
-					CHINA_REGIONS,
-					CHINA_REGIONS[0].childs,
-					CHINA_REGIONS[0].childs[0].childs
-				];
-			}
-			return [CHINA_REGIONS, this.cityArr, this.districtArr];
-		}
-	},
-	methods: {
-		handleColumnChange(e) {
-			// console.log(e);
-			this.isInitMultiArray = false;
-			const that = this;
-			let col = e.detail.column;
-			let row = e.detail.value;
-			that.multiIndex[col] = row;
-			try {
-				switch (col) {
-					case 0:
-						if (CHINA_REGIONS[that.multiIndex[0]].childs.length == 0) {
-							that.cityArr = that.districtArr = [
-								CHINA_REGIONS[that.multiIndex[0]]
-							];
-							break;
-						}
-						that.cityArr = CHINA_REGIONS[that.multiIndex[0]].childs;
-						that.districtArr =
-							CHINA_REGIONS[that.multiIndex[0]].childs[
-								that.multiIndex[1]
-							].childs;
-						break;
-					case 1:
-						that.districtArr =
-							CHINA_REGIONS[that.multiIndex[0]].childs[
-								that.multiIndex[1]
-							].childs;
-						break;
-					case 2:
-						break;
-				}
-			} catch (e) {
-				// console.log(e);
-				that.districtArr = CHINA_REGIONS[that.multiIndex[0]].childs[0].childs;
-			}
-		},
-		handleValueChange(e) {
-			// 结构赋值
-			let [index0, index1, index2] = e.detail.value;
-			let [arr0, arr1, arr2] = this.pickedArr;
-			let address = [arr0[index0], arr1[index1], arr2[index2]];
-			// console.log(address);
-			this.$emit('getRegion', address);
-			this.$emit(
-				'input',
-				`${address[0].name}${address[1].name}${address[2].name}`
-			);
-		},
-		handleDefaultRegion(region) {
-			const isCode = !Array.isArray(region);
-			this.isInitMultiArray = false;
-			let children = CHINA_REGIONS;
-			for (let i = 0; i < 3; i++) {
-				for (let j = 0; j < children.length; j++) {
-					let condition = isCode
-						? children[j].code == region.slice(0, (i + 1) * 2)
-						: children[j].name.includes(region[i]);
-					if (condition) {
-						// 匹配成功进行赋值
-						// console.log(i,j,children.length-1);
-						children = children[j].childs;
-						if (i == 0) {
-							this.cityArr = children;
-						} else if (i == 1) {
-							this.districtArr = children;
-						}
-						this.$set(this.multiIndex, i, j);
-						// console.log(this.multiIndex);
-						break;
-					} else {
-						// 首次匹配失败就用默认的初始化
-						// console.log(i,j,children.length-1);
-						if (i == 0 && j == children.length - 1) {
-							this.isInitMultiArray = true;
-						}
-					}
-				}
-			}
-		}
-	}
-};
-</script>
diff --git a/components/pick-regions/regions.json b/components/pick-regions/regions.json
deleted file mode 100644
index 310abee..0000000
--- a/components/pick-regions/regions.json
+++ /dev/null
@@ -1 +0,0 @@
-[{"code":"11","name":"北京市","childs":[{"code":"1101","name":"市辖区","childs":[{"code":"110101","name":"东城区"},{"code":"110102","name":"西城区"},{"code":"110105","name":"朝阳区"},{"code":"110106","name":"丰台区"},{"code":"110107","name":"石景山区"},{"code":"110108","name":"海淀区"},{"code":"110109","name":"门头沟区"},{"code":"110111","name":"房山区"},{"code":"110112","name":"通州区"},{"code":"110113","name":"顺义区"},{"code":"110114","name":"昌平区"},{"code":"110115","name":"大兴区"},{"code":"110116","name":"怀柔区"},{"code":"110117","name":"平谷区"},{"code":"110118","name":"密云区"},{"code":"110119","name":"延庆区"}]}]},{"code":"12","name":"天津市","childs":[{"code":"1201","name":"市辖区","childs":[{"code":"120101","name":"和平区"},{"code":"120102","name":"河东区"},{"code":"120103","name":"河西区"},{"code":"120104","name":"南开区"},{"code":"120105","name":"河北区"},{"code":"120106","name":"红桥区"},{"code":"120110","name":"东丽区"},{"code":"120111","name":"西青区"},{"code":"120112","name":"津南区"},{"code":"120113","name":"北辰区"},{"code":"120114","name":"武清区"},{"code":"120115","name":"宝坻区"},{"code":"120116","name":"滨海新区"},{"code":"120117","name":"宁河区"},{"code":"120118","name":"静海区"},{"code":"120119","name":"蓟州区"}]}]},{"code":"13","name":"河北省","childs":[{"code":"1301","name":"石家庄市","childs":[{"code":"130102","name":"长安区"},{"code":"130104","name":"桥西区"},{"code":"130105","name":"新华区"},{"code":"130107","name":"井陉矿区"},{"code":"130108","name":"裕华区"},{"code":"130109","name":"藁城区"},{"code":"130110","name":"鹿泉区"},{"code":"130111","name":"栾城区"},{"code":"130121","name":"井陉县"},{"code":"130123","name":"正定县"},{"code":"130125","name":"行唐县"},{"code":"130126","name":"灵寿县"},{"code":"130127","name":"高邑县"},{"code":"130128","name":"深泽县"},{"code":"130129","name":"赞皇县"},{"code":"130130","name":"无极县"},{"code":"130131","name":"平山县"},{"code":"130132","name":"元氏县"},{"code":"130133","name":"赵县"},{"code":"130183","name":"晋州市"},{"code":"130184","name":"新乐市"}]},{"code":"1302","name":"唐山市","childs":[{"code":"130202","name":"路南区"},{"code":"130203","name":"路北区"},{"code":"130204","name":"古冶区"},{"code":"130205","name":"开平区"},{"code":"130207","name":"丰南区"},{"code":"130208","name":"丰润区"},{"code":"130209","name":"曹妃甸区"},{"code":"130223","name":"滦县"},{"code":"130224","name":"滦南县"},{"code":"130225","name":"乐亭县"},{"code":"130227","name":"迁西县"},{"code":"130229","name":"玉田县"},{"code":"130281","name":"遵化市"},{"code":"130283","name":"迁安市"}]},{"code":"1303","name":"秦皇岛市","childs":[{"code":"130302","name":"海港区"},{"code":"130303","name":"山海关区"},{"code":"130304","name":"北戴河区"},{"code":"130306","name":"抚宁区"},{"code":"130321","name":"青龙满族自治县"},{"code":"130322","name":"昌黎县"},{"code":"130324","name":"卢龙县"}]},{"code":"1304","name":"邯郸市","childs":[{"code":"130402","name":"邯山区"},{"code":"130403","name":"丛台区"},{"code":"130404","name":"复兴区"},{"code":"130406","name":"峰峰矿区"},{"code":"130421","name":"邯郸县"},{"code":"130423","name":"临漳县"},{"code":"130424","name":"成安县"},{"code":"130425","name":"大名县"},{"code":"130426","name":"涉县"},{"code":"130427","name":"磁县"},{"code":"130428","name":"肥乡县"},{"code":"130429","name":"永年县"},{"code":"130430","name":"邱县"},{"code":"130431","name":"鸡泽县"},{"code":"130432","name":"广平县"},{"code":"130433","name":"馆陶县"},{"code":"130434","name":"魏县"},{"code":"130435","name":"曲周县"},{"code":"130481","name":"武安市"}]},{"code":"1305","name":"邢台市","childs":[{"code":"130502","name":"桥东区"},{"code":"130503","name":"桥西区"},{"code":"130521","name":"邢台县"},{"code":"130522","name":"临城县"},{"code":"130523","name":"内丘县"},{"code":"130524","name":"柏乡县"},{"code":"130525","name":"隆尧县"},{"code":"130526","name":"任县"},{"code":"130527","name":"南和县"},{"code":"130528","name":"宁晋县"},{"code":"130529","name":"巨鹿县"},{"code":"130530","name":"新河县"},{"code":"130531","name":"广宗县"},{"code":"130532","name":"平乡县"},{"code":"130533","name":"威县"},{"code":"130534","name":"清河县"},{"code":"130535","name":"临西县"},{"code":"130581","name":"南宫市"},{"code":"130582","name":"沙河市"}]},{"code":"1306","name":"保定市","childs":[{"code":"130602","name":"竞秀区"},{"code":"130606","name":"莲池区"},{"code":"130607","name":"满城区"},{"code":"130608","name":"清苑区"},{"code":"130609","name":"徐水区"},{"code":"130623","name":"涞水县"},{"code":"130624","name":"阜平县"},{"code":"130626","name":"定兴县"},{"code":"130627","name":"唐县"},{"code":"130628","name":"高阳县"},{"code":"130629","name":"容城县"},{"code":"130630","name":"涞源县"},{"code":"130631","name":"望都县"},{"code":"130632","name":"安新县"},{"code":"130633","name":"易县"},{"code":"130634","name":"曲阳县"},{"code":"130635","name":"蠡县"},{"code":"130636","name":"顺平县"},{"code":"130637","name":"博野县"},{"code":"130638","name":"雄县"},{"code":"130681","name":"涿州市"},{"code":"130683","name":"安国市"},{"code":"130684","name":"高碑店市"}]},{"code":"1307","name":"张家口市","childs":[{"code":"130702","name":"桥东区"},{"code":"130703","name":"桥西区"},{"code":"130705","name":"宣化区"},{"code":"130706","name":"下花园区"},{"code":"130708","name":"万全区"},{"code":"130709","name":"崇礼区"},{"code":"130722","name":"张北县"},{"code":"130723","name":"康保县"},{"code":"130724","name":"沽源县"},{"code":"130725","name":"尚义县"},{"code":"130726","name":"蔚县"},{"code":"130727","name":"阳原县"},{"code":"130728","name":"怀安县"},{"code":"130730","name":"怀来县"},{"code":"130731","name":"涿鹿县"},{"code":"130732","name":"赤城县"}]},{"code":"1308","name":"承德市","childs":[{"code":"130802","name":"双桥区"},{"code":"130803","name":"双滦区"},{"code":"130804","name":"鹰手营子矿区"},{"code":"130821","name":"承德县"},{"code":"130822","name":"兴隆县"},{"code":"130823","name":"平泉县"},{"code":"130824","name":"滦平县"},{"code":"130825","name":"隆化县"},{"code":"130826","name":"丰宁满族自治县"},{"code":"130827","name":"宽城满族自治县"},{"code":"130828","name":"围场满族蒙古族自治县"}]},{"code":"1309","name":"沧州市","childs":[{"code":"130902","name":"新华区"},{"code":"130903","name":"运河区"},{"code":"130921","name":"沧县"},{"code":"130922","name":"青县"},{"code":"130923","name":"东光县"},{"code":"130924","name":"海兴县"},{"code":"130925","name":"盐山县"},{"code":"130926","name":"肃宁县"},{"code":"130927","name":"南皮县"},{"code":"130928","name":"吴桥县"},{"code":"130929","name":"献县"},{"code":"130930","name":"孟村回族自治县"},{"code":"130981","name":"泊头市"},{"code":"130982","name":"任丘市"},{"code":"130983","name":"黄骅市"},{"code":"130984","name":"河间市"}]},{"code":"1310","name":"廊坊市","childs":[{"code":"131002","name":"安次区"},{"code":"131003","name":"广阳区"},{"code":"131022","name":"固安县"},{"code":"131023","name":"永清县"},{"code":"131024","name":"香河县"},{"code":"131025","name":"大城县"},{"code":"131026","name":"文安县"},{"code":"131028","name":"大厂回族自治县"},{"code":"131081","name":"霸州市"},{"code":"131082","name":"三河市"}]},{"code":"1311","name":"衡水市","childs":[{"code":"131102","name":"桃城区"},{"code":"131103","name":"冀州区"},{"code":"131121","name":"枣强县"},{"code":"131122","name":"武邑县"},{"code":"131123","name":"武强县"},{"code":"131124","name":"饶阳县"},{"code":"131125","name":"安平县"},{"code":"131126","name":"故城县"},{"code":"131127","name":"景县"},{"code":"131128","name":"阜城县"},{"code":"131182","name":"深州市"}]},{"code":"1390","name":"省直辖县级行政区划","childs":[{"code":"139001","name":"定州市"},{"code":"139002","name":"辛集市"}]}]},{"code":"14","name":"山西省","childs":[{"code":"1401","name":"太原市","childs":[{"code":"140105","name":"小店区"},{"code":"140106","name":"迎泽区"},{"code":"140107","name":"杏花岭区"},{"code":"140108","name":"尖草坪区"},{"code":"140109","name":"万柏林区"},{"code":"140110","name":"晋源区"},{"code":"140121","name":"清徐县"},{"code":"140122","name":"阳曲县"},{"code":"140123","name":"娄烦县"},{"code":"140181","name":"古交市"}]},{"code":"1402","name":"大同市","childs":[{"code":"140202","name":"城区"},{"code":"140203","name":"矿区"},{"code":"140211","name":"南郊区"},{"code":"140212","name":"新荣区"},{"code":"140221","name":"阳高县"},{"code":"140222","name":"天镇县"},{"code":"140223","name":"广灵县"},{"code":"140224","name":"灵丘县"},{"code":"140225","name":"浑源县"},{"code":"140226","name":"左云县"},{"code":"140227","name":"大同县"}]},{"code":"1403","name":"阳泉市","childs":[{"code":"140302","name":"城区"},{"code":"140303","name":"矿区"},{"code":"140311","name":"郊区"},{"code":"140321","name":"平定县"},{"code":"140322","name":"盂县"}]},{"code":"1404","name":"长治市","childs":[{"code":"140402","name":"城区"},{"code":"140411","name":"郊区"},{"code":"140421","name":"长治县"},{"code":"140423","name":"襄垣县"},{"code":"140424","name":"屯留县"},{"code":"140425","name":"平顺县"},{"code":"140426","name":"黎城县"},{"code":"140427","name":"壶关县"},{"code":"140428","name":"长子县"},{"code":"140429","name":"武乡县"},{"code":"140430","name":"沁县"},{"code":"140431","name":"沁源县"},{"code":"140481","name":"潞城市"}]},{"code":"1405","name":"晋城市","childs":[{"code":"140502","name":"城区"},{"code":"140521","name":"沁水县"},{"code":"140522","name":"阳城县"},{"code":"140524","name":"陵川县"},{"code":"140525","name":"泽州县"},{"code":"140581","name":"高平市"}]},{"code":"1406","name":"朔州市","childs":[{"code":"140602","name":"朔城区"},{"code":"140603","name":"平鲁区"},{"code":"140621","name":"山阴县"},{"code":"140622","name":"应县"},{"code":"140623","name":"右玉县"},{"code":"140624","name":"怀仁县"}]},{"code":"1407","name":"晋中市","childs":[{"code":"140702","name":"榆次区"},{"code":"140721","name":"榆社县"},{"code":"140722","name":"左权县"},{"code":"140723","name":"和顺县"},{"code":"140724","name":"昔阳县"},{"code":"140725","name":"寿阳县"},{"code":"140726","name":"太谷县"},{"code":"140727","name":"祁县"},{"code":"140728","name":"平遥县"},{"code":"140729","name":"灵石县"},{"code":"140781","name":"介休市"}]},{"code":"1408","name":"运城市","childs":[{"code":"140802","name":"盐湖区"},{"code":"140821","name":"临猗县"},{"code":"140822","name":"万荣县"},{"code":"140823","name":"闻喜县"},{"code":"140824","name":"稷山县"},{"code":"140825","name":"新绛县"},{"code":"140826","name":"绛县"},{"code":"140827","name":"垣曲县"},{"code":"140828","name":"夏县"},{"code":"140829","name":"平陆县"},{"code":"140830","name":"芮城县"},{"code":"140881","name":"永济市"},{"code":"140882","name":"河津市"}]},{"code":"1409","name":"忻州市","childs":[{"code":"140902","name":"忻府区"},{"code":"140921","name":"定襄县"},{"code":"140922","name":"五台县"},{"code":"140923","name":"代县"},{"code":"140924","name":"繁峙县"},{"code":"140925","name":"宁武县"},{"code":"140926","name":"静乐县"},{"code":"140927","name":"神池县"},{"code":"140928","name":"五寨县"},{"code":"140929","name":"岢岚县"},{"code":"140930","name":"河曲县"},{"code":"140931","name":"保德县"},{"code":"140932","name":"偏关县"},{"code":"140981","name":"原平市"}]},{"code":"1410","name":"临汾市","childs":[{"code":"141002","name":"尧都区"},{"code":"141021","name":"曲沃县"},{"code":"141022","name":"翼城县"},{"code":"141023","name":"襄汾县"},{"code":"141024","name":"洪洞县"},{"code":"141025","name":"古县"},{"code":"141026","name":"安泽县"},{"code":"141027","name":"浮山县"},{"code":"141028","name":"吉县"},{"code":"141029","name":"乡宁县"},{"code":"141030","name":"大宁县"},{"code":"141031","name":"隰县"},{"code":"141032","name":"永和县"},{"code":"141033","name":"蒲县"},{"code":"141034","name":"汾西县"},{"code":"141081","name":"侯马市"},{"code":"141082","name":"霍州市"}]},{"code":"1411","name":"吕梁市","childs":[{"code":"141102","name":"离石区"},{"code":"141121","name":"文水县"},{"code":"141122","name":"交城县"},{"code":"141123","name":"兴县"},{"code":"141124","name":"临县"},{"code":"141125","name":"柳林县"},{"code":"141126","name":"石楼县"},{"code":"141127","name":"岚县"},{"code":"141128","name":"方山县"},{"code":"141129","name":"中阳县"},{"code":"141130","name":"交口县"},{"code":"141181","name":"孝义市"},{"code":"141182","name":"汾阳市"}]}]},{"code":"15","name":"内蒙古自治区","childs":[{"code":"1501","name":"呼和浩特市","childs":[{"code":"150102","name":"新城区"},{"code":"150103","name":"回民区"},{"code":"150104","name":"玉泉区"},{"code":"150105","name":"赛罕区"},{"code":"150121","name":"土默特左旗"},{"code":"150122","name":"托克托县"},{"code":"150123","name":"和林格尔县"},{"code":"150124","name":"清水河县"},{"code":"150125","name":"武川县"}]},{"code":"1502","name":"包头市","childs":[{"code":"150202","name":"东河区"},{"code":"150203","name":"昆都仑区"},{"code":"150204","name":"青山区"},{"code":"150205","name":"石拐区"},{"code":"150206","name":"白云鄂博矿区"},{"code":"150207","name":"九原区"},{"code":"150221","name":"土默特右旗"},{"code":"150222","name":"固阳县"},{"code":"150223","name":"达尔罕茂明安联合旗"}]},{"code":"1503","name":"乌海市","childs":[{"code":"150302","name":"海勃湾区"},{"code":"150303","name":"海南区"},{"code":"150304","name":"乌达区"}]},{"code":"1504","name":"赤峰市","childs":[{"code":"150402","name":"红山区"},{"code":"150403","name":"元宝山区"},{"code":"150404","name":"松山区"},{"code":"150421","name":"阿鲁科尔沁旗"},{"code":"150422","name":"巴林左旗"},{"code":"150423","name":"巴林右旗"},{"code":"150424","name":"林西县"},{"code":"150425","name":"克什克腾旗"},{"code":"150426","name":"翁牛特旗"},{"code":"150428","name":"喀喇沁旗"},{"code":"150429","name":"宁城县"},{"code":"150430","name":"敖汉旗"}]},{"code":"1505","name":"通辽市","childs":[{"code":"150502","name":"科尔沁区"},{"code":"150521","name":"科尔沁左翼中旗"},{"code":"150522","name":"科尔沁左翼后旗"},{"code":"150523","name":"开鲁县"},{"code":"150524","name":"库伦旗"},{"code":"150525","name":"奈曼旗"},{"code":"150526","name":"扎鲁特旗"},{"code":"150581","name":"霍林郭勒市"}]},{"code":"1506","name":"鄂尔多斯市","childs":[{"code":"150602","name":"东胜区"},{"code":"150603","name":"康巴什区"},{"code":"150621","name":"达拉特旗"},{"code":"150622","name":"准格尔旗"},{"code":"150623","name":"鄂托克前旗"},{"code":"150624","name":"鄂托克旗"},{"code":"150625","name":"杭锦旗"},{"code":"150626","name":"乌审旗"},{"code":"150627","name":"伊金霍洛旗"}]},{"code":"1507","name":"呼伦贝尔市","childs":[{"code":"150702","name":"海拉尔区"},{"code":"150703","name":"扎赉诺尔区"},{"code":"150721","name":"阿荣旗"},{"code":"150722","name":"莫力达瓦达斡尔族自治旗"},{"code":"150723","name":"鄂伦春自治旗"},{"code":"150724","name":"鄂温克族自治旗"},{"code":"150725","name":"陈巴尔虎旗"},{"code":"150726","name":"新巴尔虎左旗"},{"code":"150727","name":"新巴尔虎右旗"},{"code":"150781","name":"满洲里市"},{"code":"150782","name":"牙克石市"},{"code":"150783","name":"扎兰屯市"},{"code":"150784","name":"额尔古纳市"},{"code":"150785","name":"根河市"}]},{"code":"1508","name":"巴彦淖尔市","childs":[{"code":"150802","name":"临河区"},{"code":"150821","name":"五原县"},{"code":"150822","name":"磴口县"},{"code":"150823","name":"乌拉特前旗"},{"code":"150824","name":"乌拉特中旗"},{"code":"150825","name":"乌拉特后旗"},{"code":"150826","name":"杭锦后旗"}]},{"code":"1509","name":"乌兰察布市","childs":[{"code":"150902","name":"集宁区"},{"code":"150921","name":"卓资县"},{"code":"150922","name":"化德县"},{"code":"150923","name":"商都县"},{"code":"150924","name":"兴和县"},{"code":"150925","name":"凉城县"},{"code":"150926","name":"察哈尔右翼前旗"},{"code":"150927","name":"察哈尔右翼中旗"},{"code":"150928","name":"察哈尔右翼后旗"},{"code":"150929","name":"四子王旗"},{"code":"150981","name":"丰镇市"}]},{"code":"1522","name":"兴安盟","childs":[{"code":"152201","name":"乌兰浩特市"},{"code":"152202","name":"阿尔山市"},{"code":"152221","name":"科尔沁右翼前旗"},{"code":"152222","name":"科尔沁右翼中旗"},{"code":"152223","name":"扎赉特旗"},{"code":"152224","name":"突泉县"}]},{"code":"1525","name":"锡林郭勒盟","childs":[{"code":"152501","name":"二连浩特市"},{"code":"152502","name":"锡林浩特市"},{"code":"152522","name":"阿巴嘎旗"},{"code":"152523","name":"苏尼特左旗"},{"code":"152524","name":"苏尼特右旗"},{"code":"152525","name":"东乌珠穆沁旗"},{"code":"152526","name":"西乌珠穆沁旗"},{"code":"152527","name":"太仆寺旗"},{"code":"152528","name":"镶黄旗"},{"code":"152529","name":"正镶白旗"},{"code":"152530","name":"正蓝旗"},{"code":"152531","name":"多伦县"}]},{"code":"1529","name":"阿拉善盟","childs":[{"code":"152921","name":"阿拉善左旗"},{"code":"152922","name":"阿拉善右旗"},{"code":"152923","name":"额济纳旗"}]}]},{"code":"21","name":"辽宁省","childs":[{"code":"2101","name":"沈阳市","childs":[{"code":"210102","name":"和平区"},{"code":"210103","name":"沈河区"},{"code":"210104","name":"大东区"},{"code":"210105","name":"皇姑区"},{"code":"210106","name":"铁西区"},{"code":"210111","name":"苏家屯区"},{"code":"210112","name":"浑南区"},{"code":"210113","name":"沈北新区"},{"code":"210114","name":"于洪区"},{"code":"210115","name":"辽中区"},{"code":"210123","name":"康平县"},{"code":"210124","name":"法库县"},{"code":"210181","name":"新民市"}]},{"code":"2102","name":"大连市","childs":[{"code":"210202","name":"中山区"},{"code":"210203","name":"西岗区"},{"code":"210204","name":"沙河口区"},{"code":"210211","name":"甘井子区"},{"code":"210212","name":"旅顺口区"},{"code":"210213","name":"金州区"},{"code":"210214","name":"普兰店区"},{"code":"210224","name":"长海县"},{"code":"210281","name":"瓦房店市"},{"code":"210283","name":"庄河市"}]},{"code":"2103","name":"鞍山市","childs":[{"code":"210302","name":"铁东区"},{"code":"210303","name":"铁西区"},{"code":"210304","name":"立山区"},{"code":"210311","name":"千山区"},{"code":"210321","name":"台安县"},{"code":"210323","name":"岫岩满族自治县"},{"code":"210381","name":"海城市"}]},{"code":"2104","name":"抚顺市","childs":[{"code":"210402","name":"新抚区"},{"code":"210403","name":"东洲区"},{"code":"210404","name":"望花区"},{"code":"210411","name":"顺城区"},{"code":"210421","name":"抚顺县"},{"code":"210422","name":"新宾满族自治县"},{"code":"210423","name":"清原满族自治县"}]},{"code":"2105","name":"本溪市","childs":[{"code":"210502","name":"平山区"},{"code":"210503","name":"溪湖区"},{"code":"210504","name":"明山区"},{"code":"210505","name":"南芬区"},{"code":"210521","name":"本溪满族自治县"},{"code":"210522","name":"桓仁满族自治县"}]},{"code":"2106","name":"丹东市","childs":[{"code":"210602","name":"元宝区"},{"code":"210603","name":"振兴区"},{"code":"210604","name":"振安区"},{"code":"210624","name":"宽甸满族自治县"},{"code":"210681","name":"东港市"},{"code":"210682","name":"凤城市"}]},{"code":"2107","name":"锦州市","childs":[{"code":"210702","name":"古塔区"},{"code":"210703","name":"凌河区"},{"code":"210711","name":"太和区"},{"code":"210726","name":"黑山县"},{"code":"210727","name":"义县"},{"code":"210781","name":"凌海市"},{"code":"210782","name":"北镇市"}]},{"code":"2108","name":"营口市","childs":[{"code":"210802","name":"站前区"},{"code":"210803","name":"西市区"},{"code":"210804","name":"鲅鱼圈区"},{"code":"210811","name":"老边区"},{"code":"210881","name":"盖州市"},{"code":"210882","name":"大石桥市"}]},{"code":"2109","name":"阜新市","childs":[{"code":"210902","name":"海州区"},{"code":"210903","name":"新邱区"},{"code":"210904","name":"太平区"},{"code":"210905","name":"清河门区"},{"code":"210911","name":"细河区"},{"code":"210921","name":"阜新蒙古族自治县"},{"code":"210922","name":"彰武县"}]},{"code":"2110","name":"辽阳市","childs":[{"code":"211002","name":"白塔区"},{"code":"211003","name":"文圣区"},{"code":"211004","name":"宏伟区"},{"code":"211005","name":"弓长岭区"},{"code":"211011","name":"太子河区"},{"code":"211021","name":"辽阳县"},{"code":"211081","name":"灯塔市"}]},{"code":"2111","name":"盘锦市","childs":[{"code":"211102","name":"双台子区"},{"code":"211103","name":"兴隆台区"},{"code":"211104","name":"大洼区"},{"code":"211122","name":"盘山县"}]},{"code":"2112","name":"铁岭市","childs":[{"code":"211202","name":"银州区"},{"code":"211204","name":"清河区"},{"code":"211221","name":"铁岭县"},{"code":"211223","name":"西丰县"},{"code":"211224","name":"昌图县"},{"code":"211281","name":"调兵山市"},{"code":"211282","name":"开原市"}]},{"code":"2113","name":"朝阳市","childs":[{"code":"211302","name":"双塔区"},{"code":"211303","name":"龙城区"},{"code":"211321","name":"朝阳县"},{"code":"211322","name":"建平县"},{"code":"211324","name":"喀喇沁左翼蒙古族自治县"},{"code":"211381","name":"北票市"},{"code":"211382","name":"凌源市"}]},{"code":"2114","name":"葫芦岛市","childs":[{"code":"211402","name":"连山区"},{"code":"211403","name":"龙港区"},{"code":"211404","name":"南票区"},{"code":"211421","name":"绥中县"},{"code":"211422","name":"建昌县"},{"code":"211481","name":"兴城市"}]}]},{"code":"22","name":"吉林省","childs":[{"code":"2201","name":"长春市","childs":[{"code":"220102","name":"南关区"},{"code":"220103","name":"宽城区"},{"code":"220104","name":"朝阳区"},{"code":"220105","name":"二道区"},{"code":"220106","name":"绿园区"},{"code":"220112","name":"双阳区"},{"code":"220113","name":"九台区"},{"code":"220122","name":"农安县"},{"code":"220182","name":"榆树市"},{"code":"220183","name":"德惠市"}]},{"code":"2202","name":"吉林市","childs":[{"code":"220202","name":"昌邑区"},{"code":"220203","name":"龙潭区"},{"code":"220204","name":"船营区"},{"code":"220211","name":"丰满区"},{"code":"220221","name":"永吉县"},{"code":"220281","name":"蛟河市"},{"code":"220282","name":"桦甸市"},{"code":"220283","name":"舒兰市"},{"code":"220284","name":"磐石市"}]},{"code":"2203","name":"四平市","childs":[{"code":"220302","name":"铁西区"},{"code":"220303","name":"铁东区"},{"code":"220322","name":"梨树县"},{"code":"220323","name":"伊通满族自治县"},{"code":"220381","name":"公主岭市"},{"code":"220382","name":"双辽市"}]},{"code":"2204","name":"辽源市","childs":[{"code":"220402","name":"龙山区"},{"code":"220403","name":"西安区"},{"code":"220421","name":"东丰县"},{"code":"220422","name":"东辽县"}]},{"code":"2205","name":"通化市","childs":[{"code":"220502","name":"东昌区"},{"code":"220503","name":"二道江区"},{"code":"220521","name":"通化县"},{"code":"220523","name":"辉南县"},{"code":"220524","name":"柳河县"},{"code":"220581","name":"梅河口市"},{"code":"220582","name":"集安市"}]},{"code":"2206","name":"白山市","childs":[{"code":"220602","name":"浑江区"},{"code":"220605","name":"江源区"},{"code":"220621","name":"抚松县"},{"code":"220622","name":"靖宇县"},{"code":"220623","name":"长白朝鲜族自治县"},{"code":"220681","name":"临江市"}]},{"code":"2207","name":"松原市","childs":[{"code":"220702","name":"宁江区"},{"code":"220721","name":"前郭尔罗斯蒙古族自治县"},{"code":"220722","name":"长岭县"},{"code":"220723","name":"乾安县"},{"code":"220781","name":"扶余市"}]},{"code":"2208","name":"白城市","childs":[{"code":"220802","name":"洮北区"},{"code":"220821","name":"镇赉县"},{"code":"220822","name":"通榆县"},{"code":"220881","name":"洮南市"},{"code":"220882","name":"大安市"}]},{"code":"2224","name":"延边朝鲜族自治州","childs":[{"code":"222401","name":"延吉市"},{"code":"222402","name":"图们市"},{"code":"222403","name":"敦化市"},{"code":"222404","name":"珲春市"},{"code":"222405","name":"龙井市"},{"code":"222406","name":"和龙市"},{"code":"222424","name":"汪清县"},{"code":"222426","name":"安图县"}]}]},{"code":"23","name":"黑龙江省","childs":[{"code":"2301","name":"哈尔滨市","childs":[{"code":"230102","name":"道里区"},{"code":"230103","name":"南岗区"},{"code":"230104","name":"道外区"},{"code":"230108","name":"平房区"},{"code":"230109","name":"松北区"},{"code":"230110","name":"香坊区"},{"code":"230111","name":"呼兰区"},{"code":"230112","name":"阿城区"},{"code":"230113","name":"双城区"},{"code":"230123","name":"依兰县"},{"code":"230124","name":"方正县"},{"code":"230125","name":"宾县"},{"code":"230126","name":"巴彦县"},{"code":"230127","name":"木兰县"},{"code":"230128","name":"通河县"},{"code":"230129","name":"延寿县"},{"code":"230183","name":"尚志市"},{"code":"230184","name":"五常市"}]},{"code":"2302","name":"齐齐哈尔市","childs":[{"code":"230202","name":"龙沙区"},{"code":"230203","name":"建华区"},{"code":"230204","name":"铁锋区"},{"code":"230205","name":"昂昂溪区"},{"code":"230206","name":"富拉尔基区"},{"code":"230207","name":"碾子山区"},{"code":"230208","name":"梅里斯达斡尔族区"},{"code":"230221","name":"龙江县"},{"code":"230223","name":"依安县"},{"code":"230224","name":"泰来县"},{"code":"230225","name":"甘南县"},{"code":"230227","name":"富裕县"},{"code":"230229","name":"克山县"},{"code":"230230","name":"克东县"},{"code":"230231","name":"拜泉县"},{"code":"230281","name":"讷河市"}]},{"code":"2303","name":"鸡西市","childs":[{"code":"230302","name":"鸡冠区"},{"code":"230303","name":"恒山区"},{"code":"230304","name":"滴道区"},{"code":"230305","name":"梨树区"},{"code":"230306","name":"城子河区"},{"code":"230307","name":"麻山区"},{"code":"230321","name":"鸡东县"},{"code":"230381","name":"虎林市"},{"code":"230382","name":"密山市"}]},{"code":"2304","name":"鹤岗市","childs":[{"code":"230402","name":"向阳区"},{"code":"230403","name":"工农区"},{"code":"230404","name":"南山区"},{"code":"230405","name":"兴安区"},{"code":"230406","name":"东山区"},{"code":"230407","name":"兴山区"},{"code":"230421","name":"萝北县"},{"code":"230422","name":"绥滨县"}]},{"code":"2305","name":"双鸭山市","childs":[{"code":"230502","name":"尖山区"},{"code":"230503","name":"岭东区"},{"code":"230505","name":"四方台区"},{"code":"230506","name":"宝山区"},{"code":"230521","name":"集贤县"},{"code":"230522","name":"友谊县"},{"code":"230523","name":"宝清县"},{"code":"230524","name":"饶河县"}]},{"code":"2306","name":"大庆市","childs":[{"code":"230602","name":"萨尔图区"},{"code":"230603","name":"龙凤区"},{"code":"230604","name":"让胡路区"},{"code":"230605","name":"红岗区"},{"code":"230606","name":"大同区"},{"code":"230621","name":"肇州县"},{"code":"230622","name":"肇源县"},{"code":"230623","name":"林甸县"},{"code":"230624","name":"杜尔伯特蒙古族自治县"}]},{"code":"2307","name":"伊春市","childs":[{"code":"230702","name":"伊春区"},{"code":"230703","name":"南岔区"},{"code":"230704","name":"友好区"},{"code":"230705","name":"西林区"},{"code":"230706","name":"翠峦区"},{"code":"230707","name":"新青区"},{"code":"230708","name":"美溪区"},{"code":"230709","name":"金山屯区"},{"code":"230710","name":"五营区"},{"code":"230711","name":"乌马河区"},{"code":"230712","name":"汤旺河区"},{"code":"230713","name":"带岭区"},{"code":"230714","name":"乌伊岭区"},{"code":"230715","name":"红星区"},{"code":"230716","name":"上甘岭区"},{"code":"230722","name":"嘉荫县"},{"code":"230781","name":"铁力市"}]},{"code":"2308","name":"佳木斯市","childs":[{"code":"230803","name":"向阳区"},{"code":"230804","name":"前进区"},{"code":"230805","name":"东风区"},{"code":"230811","name":"郊区"},{"code":"230822","name":"桦南县"},{"code":"230826","name":"桦川县"},{"code":"230828","name":"汤原县"},{"code":"230881","name":"同江市"},{"code":"230882","name":"富锦市"},{"code":"230883","name":"抚远市"}]},{"code":"2309","name":"七台河市","childs":[{"code":"230902","name":"新兴区"},{"code":"230903","name":"桃山区"},{"code":"230904","name":"茄子河区"},{"code":"230921","name":"勃利县"}]},{"code":"2310","name":"牡丹江市","childs":[{"code":"231002","name":"东安区"},{"code":"231003","name":"阳明区"},{"code":"231004","name":"爱民区"},{"code":"231005","name":"西安区"},{"code":"231025","name":"林口县"},{"code":"231081","name":"绥芬河市"},{"code":"231083","name":"海林市"},{"code":"231084","name":"宁安市"},{"code":"231085","name":"穆棱市"},{"code":"231086","name":"东宁市"}]},{"code":"2311","name":"黑河市","childs":[{"code":"231102","name":"爱辉区"},{"code":"231121","name":"嫩江县"},{"code":"231123","name":"逊克县"},{"code":"231124","name":"孙吴县"},{"code":"231181","name":"北安市"},{"code":"231182","name":"五大连池市"}]},{"code":"2312","name":"绥化市","childs":[{"code":"231202","name":"北林区"},{"code":"231221","name":"望奎县"},{"code":"231222","name":"兰西县"},{"code":"231223","name":"青冈县"},{"code":"231224","name":"庆安县"},{"code":"231225","name":"明水县"},{"code":"231226","name":"绥棱县"},{"code":"231281","name":"安达市"},{"code":"231282","name":"肇东市"},{"code":"231283","name":"海伦市"}]},{"code":"2327","name":"大兴安岭地区","childs":[{"code":"232721","name":"呼玛县"},{"code":"232722","name":"塔河县"},{"code":"232723","name":"漠河县"}]}]},{"code":"31","name":"上海市","childs":[{"code":"3101","name":"市辖区","childs":[{"code":"310101","name":"黄浦区"},{"code":"310104","name":"徐汇区"},{"code":"310105","name":"长宁区"},{"code":"310106","name":"静安区"},{"code":"310107","name":"普陀区"},{"code":"310109","name":"虹口区"},{"code":"310110","name":"杨浦区"},{"code":"310112","name":"闵行区"},{"code":"310113","name":"宝山区"},{"code":"310114","name":"嘉定区"},{"code":"310115","name":"浦东新区"},{"code":"310116","name":"金山区"},{"code":"310117","name":"松江区"},{"code":"310118","name":"青浦区"},{"code":"310120","name":"奉贤区"},{"code":"310151","name":"崇明区"}]}]},{"code":"32","name":"江苏省","childs":[{"code":"3201","name":"南京市","childs":[{"code":"320102","name":"玄武区"},{"code":"320104","name":"秦淮区"},{"code":"320105","name":"建邺区"},{"code":"320106","name":"鼓楼区"},{"code":"320111","name":"浦口区"},{"code":"320113","name":"栖霞区"},{"code":"320114","name":"雨花台区"},{"code":"320115","name":"江宁区"},{"code":"320116","name":"六合区"},{"code":"320117","name":"溧水区"},{"code":"320118","name":"高淳区"}]},{"code":"3202","name":"无锡市","childs":[{"code":"320205","name":"锡山区"},{"code":"320206","name":"惠山区"},{"code":"320211","name":"滨湖区"},{"code":"320213","name":"梁溪区"},{"code":"320214","name":"新吴区"},{"code":"320281","name":"江阴市"},{"code":"320282","name":"宜兴市"}]},{"code":"3203","name":"徐州市","childs":[{"code":"320302","name":"鼓楼区"},{"code":"320303","name":"云龙区"},{"code":"320305","name":"贾汪区"},{"code":"320311","name":"泉山区"},{"code":"320312","name":"铜山区"},{"code":"320321","name":"丰县"},{"code":"320322","name":"沛县"},{"code":"320324","name":"睢宁县"},{"code":"320381","name":"新沂市"},{"code":"320382","name":"邳州市"}]},{"code":"3204","name":"常州市","childs":[{"code":"320402","name":"天宁区"},{"code":"320404","name":"钟楼区"},{"code":"320411","name":"新北区"},{"code":"320412","name":"武进区"},{"code":"320413","name":"金坛区"},{"code":"320481","name":"溧阳市"}]},{"code":"3205","name":"苏州市","childs":[{"code":"320505","name":"虎丘区"},{"code":"320506","name":"吴中区"},{"code":"320507","name":"相城区"},{"code":"320508","name":"姑苏区"},{"code":"320509","name":"吴江区"},{"code":"320581","name":"常熟市"},{"code":"320582","name":"张家港市"},{"code":"320583","name":"昆山市"},{"code":"320585","name":"太仓市"}]},{"code":"3206","name":"南通市","childs":[{"code":"320602","name":"崇川区"},{"code":"320611","name":"港闸区"},{"code":"320612","name":"通州区"},{"code":"320621","name":"海安县"},{"code":"320623","name":"如东县"},{"code":"320681","name":"启东市"},{"code":"320682","name":"如皋市"},{"code":"320684","name":"海门市"}]},{"code":"3207","name":"连云港市","childs":[{"code":"320703","name":"连云区"},{"code":"320706","name":"海州区"},{"code":"320707","name":"赣榆区"},{"code":"320722","name":"东海县"},{"code":"320723","name":"灌云县"},{"code":"320724","name":"灌南县"}]},{"code":"3208","name":"淮安市","childs":[{"code":"320803","name":"淮安区"},{"code":"320804","name":"淮阴区"},{"code":"320812","name":"清江浦区"},{"code":"320813","name":"洪泽区"},{"code":"320826","name":"涟水县"},{"code":"320830","name":"盱眙县"},{"code":"320831","name":"金湖县"}]},{"code":"3209","name":"盐城市","childs":[{"code":"320902","name":"亭湖区"},{"code":"320903","name":"盐都区"},{"code":"320904","name":"大丰区"},{"code":"320921","name":"响水县"},{"code":"320922","name":"滨海县"},{"code":"320923","name":"阜宁县"},{"code":"320924","name":"射阳县"},{"code":"320925","name":"建湖县"},{"code":"320981","name":"东台市"}]},{"code":"3210","name":"扬州市","childs":[{"code":"321002","name":"广陵区"},{"code":"321003","name":"邗江区"},{"code":"321012","name":"江都区"},{"code":"321023","name":"宝应县"},{"code":"321081","name":"仪征市"},{"code":"321084","name":"高邮市"}]},{"code":"3211","name":"镇江市","childs":[{"code":"321102","name":"京口区"},{"code":"321111","name":"润州区"},{"code":"321112","name":"丹徒区"},{"code":"321181","name":"丹阳市"},{"code":"321182","name":"扬中市"},{"code":"321183","name":"句容市"}]},{"code":"3212","name":"泰州市","childs":[{"code":"321202","name":"海陵区"},{"code":"321203","name":"高港区"},{"code":"321204","name":"姜堰区"},{"code":"321281","name":"兴化市"},{"code":"321282","name":"靖江市"},{"code":"321283","name":"泰兴市"}]},{"code":"3213","name":"宿迁市","childs":[{"code":"321302","name":"宿城区"},{"code":"321311","name":"宿豫区"},{"code":"321322","name":"沭阳县"},{"code":"321323","name":"泗阳县"},{"code":"321324","name":"泗洪县"}]}]},{"code":"33","name":"浙江省","childs":[{"code":"3301","name":"杭州市","childs":[{"code":"330102","name":"上城区"},{"code":"330103","name":"下城区"},{"code":"330104","name":"江干区"},{"code":"330105","name":"拱墅区"},{"code":"330106","name":"西湖区"},{"code":"330108","name":"滨江区"},{"code":"330109","name":"萧山区"},{"code":"330110","name":"余杭区"},{"code":"330111","name":"富阳区"},{"code":"330122","name":"桐庐县"},{"code":"330127","name":"淳安县"},{"code":"330182","name":"建德市"},{"code":"330185","name":"临安市"}]},{"code":"3302","name":"宁波市","childs":[{"code":"330203","name":"海曙区"},{"code":"330204","name":"江东区"},{"code":"330205","name":"江北区"},{"code":"330206","name":"北仑区"},{"code":"330211","name":"镇海区"},{"code":"330212","name":"鄞州区"},{"code":"330225","name":"象山县"},{"code":"330226","name":"宁海县"},{"code":"330281","name":"余姚市"},{"code":"330282","name":"慈溪市"},{"code":"330283","name":"奉化市"}]},{"code":"3303","name":"温州市","childs":[{"code":"330302","name":"鹿城区"},{"code":"330303","name":"龙湾区"},{"code":"330304","name":"瓯海区"},{"code":"330305","name":"洞头区"},{"code":"330324","name":"永嘉县"},{"code":"330326","name":"平阳县"},{"code":"330327","name":"苍南县"},{"code":"330328","name":"文成县"},{"code":"330329","name":"泰顺县"},{"code":"330381","name":"瑞安市"},{"code":"330382","name":"乐清市"}]},{"code":"3304","name":"嘉兴市","childs":[{"code":"330402","name":"南湖区"},{"code":"330411","name":"秀洲区"},{"code":"330421","name":"嘉善县"},{"code":"330424","name":"海盐县"},{"code":"330481","name":"海宁市"},{"code":"330482","name":"平湖市"},{"code":"330483","name":"桐乡市"}]},{"code":"3305","name":"湖州市","childs":[{"code":"330502","name":"吴兴区"},{"code":"330503","name":"南浔区"},{"code":"330521","name":"德清县"},{"code":"330522","name":"长兴县"},{"code":"330523","name":"安吉县"}]},{"code":"3306","name":"绍兴市","childs":[{"code":"330602","name":"越城区"},{"code":"330603","name":"柯桥区"},{"code":"330604","name":"上虞区"},{"code":"330624","name":"新昌县"},{"code":"330681","name":"诸暨市"},{"code":"330683","name":"嵊州市"}]},{"code":"3307","name":"金华市","childs":[{"code":"330702","name":"婺城区"},{"code":"330703","name":"金东区"},{"code":"330723","name":"武义县"},{"code":"330726","name":"浦江县"},{"code":"330727","name":"磐安县"},{"code":"330781","name":"兰溪市"},{"code":"330782","name":"义乌市"},{"code":"330783","name":"东阳市"},{"code":"330784","name":"永康市"}]},{"code":"3308","name":"衢州市","childs":[{"code":"330802","name":"柯城区"},{"code":"330803","name":"衢江区"},{"code":"330822","name":"常山县"},{"code":"330824","name":"开化县"},{"code":"330825","name":"龙游县"},{"code":"330881","name":"江山市"}]},{"code":"3309","name":"舟山市","childs":[{"code":"330902","name":"定海区"},{"code":"330903","name":"普陀区"},{"code":"330921","name":"岱山县"},{"code":"330922","name":"嵊泗县"}]},{"code":"3310","name":"台州市","childs":[{"code":"331002","name":"椒江区"},{"code":"331003","name":"黄岩区"},{"code":"331004","name":"路桥区"},{"code":"331021","name":"玉环县"},{"code":"331022","name":"三门县"},{"code":"331023","name":"天台县"},{"code":"331024","name":"仙居县"},{"code":"331081","name":"温岭市"},{"code":"331082","name":"临海市"}]},{"code":"3311","name":"丽水市","childs":[{"code":"331102","name":"莲都区"},{"code":"331121","name":"青田县"},{"code":"331122","name":"缙云县"},{"code":"331123","name":"遂昌县"},{"code":"331124","name":"松阳县"},{"code":"331125","name":"云和县"},{"code":"331126","name":"庆元县"},{"code":"331127","name":"景宁畲族自治县"},{"code":"331181","name":"龙泉市"}]}]},{"code":"34","name":"安徽省","childs":[{"code":"3401","name":"合肥市","childs":[{"code":"340102","name":"瑶海区"},{"code":"340103","name":"庐阳区"},{"code":"340104","name":"蜀山区"},{"code":"340111","name":"包河区"},{"code":"340121","name":"长丰县"},{"code":"340122","name":"肥东县"},{"code":"340123","name":"肥西县"},{"code":"340124","name":"庐江县"},{"code":"340181","name":"巢湖市"}]},{"code":"3402","name":"芜湖市","childs":[{"code":"340202","name":"镜湖区"},{"code":"340203","name":"弋江区"},{"code":"340207","name":"鸠江区"},{"code":"340208","name":"三山区"},{"code":"340221","name":"芜湖县"},{"code":"340222","name":"繁昌县"},{"code":"340223","name":"南陵县"},{"code":"340225","name":"无为县"}]},{"code":"3403","name":"蚌埠市","childs":[{"code":"340302","name":"龙子湖区"},{"code":"340303","name":"蚌山区"},{"code":"340304","name":"禹会区"},{"code":"340311","name":"淮上区"},{"code":"340321","name":"怀远县"},{"code":"340322","name":"五河县"},{"code":"340323","name":"固镇县"}]},{"code":"3404","name":"淮南市","childs":[{"code":"340402","name":"大通区"},{"code":"340403","name":"田家庵区"},{"code":"340404","name":"谢家集区"},{"code":"340405","name":"八公山区"},{"code":"340406","name":"潘集区"},{"code":"340421","name":"凤台县"},{"code":"340422","name":"寿县"}]},{"code":"3405","name":"马鞍山市","childs":[{"code":"340503","name":"花山区"},{"code":"340504","name":"雨山区"},{"code":"340506","name":"博望区"},{"code":"340521","name":"当涂县"},{"code":"340522","name":"含山县"},{"code":"340523","name":"和县"}]},{"code":"3406","name":"淮北市","childs":[{"code":"340602","name":"杜集区"},{"code":"340603","name":"相山区"},{"code":"340604","name":"烈山区"},{"code":"340621","name":"濉溪县"}]},{"code":"3407","name":"铜陵市","childs":[{"code":"340705","name":"铜官区"},{"code":"340706","name":"义安区"},{"code":"340711","name":"郊区"},{"code":"340722","name":"枞阳县"}]},{"code":"3408","name":"安庆市","childs":[{"code":"340802","name":"迎江区"},{"code":"340803","name":"大观区"},{"code":"340811","name":"宜秀区"},{"code":"340822","name":"怀宁县"},{"code":"340824","name":"潜山县"},{"code":"340825","name":"太湖县"},{"code":"340826","name":"宿松县"},{"code":"340827","name":"望江县"},{"code":"340828","name":"岳西县"},{"code":"340881","name":"桐城市"}]},{"code":"3410","name":"黄山市","childs":[{"code":"341002","name":"屯溪区"},{"code":"341003","name":"黄山区"},{"code":"341004","name":"徽州区"},{"code":"341021","name":"歙县"},{"code":"341022","name":"休宁县"},{"code":"341023","name":"黟县"},{"code":"341024","name":"祁门县"}]},{"code":"3411","name":"滁州市","childs":[{"code":"341102","name":"琅琊区"},{"code":"341103","name":"南谯区"},{"code":"341122","name":"来安县"},{"code":"341124","name":"全椒县"},{"code":"341125","name":"定远县"},{"code":"341126","name":"凤阳县"},{"code":"341181","name":"天长市"},{"code":"341182","name":"明光市"}]},{"code":"3412","name":"阜阳市","childs":[{"code":"341202","name":"颍州区"},{"code":"341203","name":"颍东区"},{"code":"341204","name":"颍泉区"},{"code":"341221","name":"临泉县"},{"code":"341222","name":"太和县"},{"code":"341225","name":"阜南县"},{"code":"341226","name":"颍上县"},{"code":"341282","name":"界首市"}]},{"code":"3413","name":"宿州市","childs":[{"code":"341302","name":"埇桥区"},{"code":"341321","name":"砀山县"},{"code":"341322","name":"萧县"},{"code":"341323","name":"灵璧县"},{"code":"341324","name":"泗县"}]},{"code":"3415","name":"六安市","childs":[{"code":"341502","name":"金安区"},{"code":"341503","name":"裕安区"},{"code":"341504","name":"叶集区"},{"code":"341522","name":"霍邱县"},{"code":"341523","name":"舒城县"},{"code":"341524","name":"金寨县"},{"code":"341525","name":"霍山县"}]},{"code":"3416","name":"亳州市","childs":[{"code":"341602","name":"谯城区"},{"code":"341621","name":"涡阳县"},{"code":"341622","name":"蒙城县"},{"code":"341623","name":"利辛县"}]},{"code":"3417","name":"池州市","childs":[{"code":"341702","name":"贵池区"},{"code":"341721","name":"东至县"},{"code":"341722","name":"石台县"},{"code":"341723","name":"青阳县"}]},{"code":"3418","name":"宣城市","childs":[{"code":"341802","name":"宣州区"},{"code":"341821","name":"郎溪县"},{"code":"341822","name":"广德县"},{"code":"341823","name":"泾县"},{"code":"341824","name":"绩溪县"},{"code":"341825","name":"旌德县"},{"code":"341881","name":"宁国市"}]}]},{"code":"35","name":"福建省","childs":[{"code":"3501","name":"福州市","childs":[{"code":"350102","name":"鼓楼区"},{"code":"350103","name":"台江区"},{"code":"350104","name":"仓山区"},{"code":"350105","name":"马尾区"},{"code":"350111","name":"晋安区"},{"code":"350121","name":"闽侯县"},{"code":"350122","name":"连江县"},{"code":"350123","name":"罗源县"},{"code":"350124","name":"闽清县"},{"code":"350125","name":"永泰县"},{"code":"350128","name":"平潭县"},{"code":"350181","name":"福清市"},{"code":"350182","name":"长乐市"}]},{"code":"3502","name":"厦门市","childs":[{"code":"350203","name":"思明区"},{"code":"350205","name":"海沧区"},{"code":"350206","name":"湖里区"},{"code":"350211","name":"集美区"},{"code":"350212","name":"同安区"},{"code":"350213","name":"翔安区"}]},{"code":"3503","name":"莆田市","childs":[{"code":"350302","name":"城厢区"},{"code":"350303","name":"涵江区"},{"code":"350304","name":"荔城区"},{"code":"350305","name":"秀屿区"},{"code":"350322","name":"仙游县"}]},{"code":"3504","name":"三明市","childs":[{"code":"350402","name":"梅列区"},{"code":"350403","name":"三元区"},{"code":"350421","name":"明溪县"},{"code":"350423","name":"清流县"},{"code":"350424","name":"宁化县"},{"code":"350425","name":"大田县"},{"code":"350426","name":"尤溪县"},{"code":"350427","name":"沙县"},{"code":"350428","name":"将乐县"},{"code":"350429","name":"泰宁县"},{"code":"350430","name":"建宁县"},{"code":"350481","name":"永安市"}]},{"code":"3505","name":"泉州市","childs":[{"code":"350502","name":"鲤城区"},{"code":"350503","name":"丰泽区"},{"code":"350504","name":"洛江区"},{"code":"350505","name":"泉港区"},{"code":"350521","name":"惠安县"},{"code":"350524","name":"安溪县"},{"code":"350525","name":"永春县"},{"code":"350526","name":"德化县"},{"code":"350527","name":"金门县"},{"code":"350581","name":"石狮市"},{"code":"350582","name":"晋江市"},{"code":"350583","name":"南安市"}]},{"code":"3506","name":"漳州市","childs":[{"code":"350602","name":"芗城区"},{"code":"350603","name":"龙文区"},{"code":"350622","name":"云霄县"},{"code":"350623","name":"漳浦县"},{"code":"350624","name":"诏安县"},{"code":"350625","name":"长泰县"},{"code":"350626","name":"东山县"},{"code":"350627","name":"南靖县"},{"code":"350628","name":"平和县"},{"code":"350629","name":"华安县"},{"code":"350681","name":"龙海市"}]},{"code":"3507","name":"南平市","childs":[{"code":"350702","name":"延平区"},{"code":"350703","name":"建阳区"},{"code":"350721","name":"顺昌县"},{"code":"350722","name":"浦城县"},{"code":"350723","name":"光泽县"},{"code":"350724","name":"松溪县"},{"code":"350725","name":"政和县"},{"code":"350781","name":"邵武市"},{"code":"350782","name":"武夷山市"},{"code":"350783","name":"建瓯市"}]},{"code":"3508","name":"龙岩市","childs":[{"code":"350802","name":"新罗区"},{"code":"350803","name":"永定区"},{"code":"350821","name":"长汀县"},{"code":"350823","name":"上杭县"},{"code":"350824","name":"武平县"},{"code":"350825","name":"连城县"},{"code":"350881","name":"漳平市"}]},{"code":"3509","name":"宁德市","childs":[{"code":"350902","name":"蕉城区"},{"code":"350921","name":"霞浦县"},{"code":"350922","name":"古田县"},{"code":"350923","name":"屏南县"},{"code":"350924","name":"寿宁县"},{"code":"350925","name":"周宁县"},{"code":"350926","name":"柘荣县"},{"code":"350981","name":"福安市"},{"code":"350982","name":"福鼎市"}]}]},{"code":"36","name":"江西省","childs":[{"code":"3601","name":"南昌市","childs":[{"code":"360102","name":"东湖区"},{"code":"360103","name":"西湖区"},{"code":"360104","name":"青云谱区"},{"code":"360105","name":"湾里区"},{"code":"360111","name":"青山湖区"},{"code":"360112","name":"新建区"},{"code":"360121","name":"南昌县"},{"code":"360123","name":"安义县"},{"code":"360124","name":"进贤县"}]},{"code":"3602","name":"景德镇市","childs":[{"code":"360202","name":"昌江区"},{"code":"360203","name":"珠山区"},{"code":"360222","name":"浮梁县"},{"code":"360281","name":"乐平市"}]},{"code":"3603","name":"萍乡市","childs":[{"code":"360302","name":"安源区"},{"code":"360313","name":"湘东区"},{"code":"360321","name":"莲花县"},{"code":"360322","name":"上栗县"},{"code":"360323","name":"芦溪县"}]},{"code":"3604","name":"九江市","childs":[{"code":"360402","name":"濂溪区"},{"code":"360403","name":"浔阳区"},{"code":"360421","name":"九江县"},{"code":"360423","name":"武宁县"},{"code":"360424","name":"修水县"},{"code":"360425","name":"永修县"},{"code":"360426","name":"德安县"},{"code":"360428","name":"都昌县"},{"code":"360429","name":"湖口县"},{"code":"360430","name":"彭泽县"},{"code":"360481","name":"瑞昌市"},{"code":"360482","name":"共青城市"},{"code":"360483","name":"庐山市"}]},{"code":"3605","name":"新余市","childs":[{"code":"360502","name":"渝水区"},{"code":"360521","name":"分宜县"}]},{"code":"3606","name":"鹰潭市","childs":[{"code":"360602","name":"月湖区"},{"code":"360622","name":"余江县"},{"code":"360681","name":"贵溪市"}]},{"code":"3607","name":"赣州市","childs":[{"code":"360702","name":"章贡区"},{"code":"360703","name":"南康区"},{"code":"360721","name":"赣县"},{"code":"360722","name":"信丰县"},{"code":"360723","name":"大余县"},{"code":"360724","name":"上犹县"},{"code":"360725","name":"崇义县"},{"code":"360726","name":"安远县"},{"code":"360727","name":"龙南县"},{"code":"360728","name":"定南县"},{"code":"360729","name":"全南县"},{"code":"360730","name":"宁都县"},{"code":"360731","name":"于都县"},{"code":"360732","name":"兴国县"},{"code":"360733","name":"会昌县"},{"code":"360734","name":"寻乌县"},{"code":"360735","name":"石城县"},{"code":"360781","name":"瑞金市"}]},{"code":"3608","name":"吉安市","childs":[{"code":"360802","name":"吉州区"},{"code":"360803","name":"青原区"},{"code":"360821","name":"吉安县"},{"code":"360822","name":"吉水县"},{"code":"360823","name":"峡江县"},{"code":"360824","name":"新干县"},{"code":"360825","name":"永丰县"},{"code":"360826","name":"泰和县"},{"code":"360827","name":"遂川县"},{"code":"360828","name":"万安县"},{"code":"360829","name":"安福县"},{"code":"360830","name":"永新县"},{"code":"360881","name":"井冈山市"}]},{"code":"3609","name":"宜春市","childs":[{"code":"360902","name":"袁州区"},{"code":"360921","name":"奉新县"},{"code":"360922","name":"万载县"},{"code":"360923","name":"上高县"},{"code":"360924","name":"宜丰县"},{"code":"360925","name":"靖安县"},{"code":"360926","name":"铜鼓县"},{"code":"360981","name":"丰城市"},{"code":"360982","name":"樟树市"},{"code":"360983","name":"高安市"}]},{"code":"3610","name":"抚州市","childs":[{"code":"361002","name":"临川区"},{"code":"361021","name":"南城县"},{"code":"361022","name":"黎川县"},{"code":"361023","name":"南丰县"},{"code":"361024","name":"崇仁县"},{"code":"361025","name":"乐安县"},{"code":"361026","name":"宜黄县"},{"code":"361027","name":"金溪县"},{"code":"361028","name":"资溪县"},{"code":"361029","name":"东乡县"},{"code":"361030","name":"广昌县"}]},{"code":"3611","name":"上饶市","childs":[{"code":"361102","name":"信州区"},{"code":"361103","name":"广丰区"},{"code":"361121","name":"上饶县"},{"code":"361123","name":"玉山县"},{"code":"361124","name":"铅山县"},{"code":"361125","name":"横峰县"},{"code":"361126","name":"弋阳县"},{"code":"361127","name":"余干县"},{"code":"361128","name":"鄱阳县"},{"code":"361129","name":"万年县"},{"code":"361130","name":"婺源县"},{"code":"361181","name":"德兴市"}]}]},{"code":"37","name":"山东省","childs":[{"code":"3701","name":"济南市","childs":[{"code":"370102","name":"历下区"},{"code":"370103","name":"市中区"},{"code":"370104","name":"槐荫区"},{"code":"370105","name":"天桥区"},{"code":"370112","name":"历城区"},{"code":"370113","name":"长清区"},{"code":"370124","name":"平阴县"},{"code":"370125","name":"济阳县"},{"code":"370126","name":"商河县"},{"code":"370181","name":"章丘市"}]},{"code":"3702","name":"青岛市","childs":[{"code":"370202","name":"市南区"},{"code":"370203","name":"市北区"},{"code":"370211","name":"黄岛区"},{"code":"370212","name":"崂山区"},{"code":"370213","name":"李沧区"},{"code":"370214","name":"城阳区"},{"code":"370281","name":"胶州市"},{"code":"370282","name":"即墨市"},{"code":"370283","name":"平度市"},{"code":"370285","name":"莱西市"}]},{"code":"3703","name":"淄博市","childs":[{"code":"370302","name":"淄川区"},{"code":"370303","name":"张店区"},{"code":"370304","name":"博山区"},{"code":"370305","name":"临淄区"},{"code":"370306","name":"周村区"},{"code":"370321","name":"桓台县"},{"code":"370322","name":"高青县"},{"code":"370323","name":"沂源县"}]},{"code":"3704","name":"枣庄市","childs":[{"code":"370402","name":"市中区"},{"code":"370403","name":"薛城区"},{"code":"370404","name":"峄城区"},{"code":"370405","name":"台儿庄区"},{"code":"370406","name":"山亭区"},{"code":"370481","name":"滕州市"}]},{"code":"3705","name":"东营市","childs":[{"code":"370502","name":"东营区"},{"code":"370503","name":"河口区"},{"code":"370505","name":"垦利区"},{"code":"370522","name":"利津县"},{"code":"370523","name":"广饶县"}]},{"code":"3706","name":"烟台市","childs":[{"code":"370602","name":"芝罘区"},{"code":"370611","name":"福山区"},{"code":"370612","name":"牟平区"},{"code":"370613","name":"莱山区"},{"code":"370634","name":"长岛县"},{"code":"370681","name":"龙口市"},{"code":"370682","name":"莱阳市"},{"code":"370683","name":"莱州市"},{"code":"370684","name":"蓬莱市"},{"code":"370685","name":"招远市"},{"code":"370686","name":"栖霞市"},{"code":"370687","name":"海阳市"}]},{"code":"3707","name":"潍坊市","childs":[{"code":"370702","name":"潍城区"},{"code":"370703","name":"寒亭区"},{"code":"370704","name":"坊子区"},{"code":"370705","name":"奎文区"},{"code":"370724","name":"临朐县"},{"code":"370725","name":"昌乐县"},{"code":"370781","name":"青州市"},{"code":"370782","name":"诸城市"},{"code":"370783","name":"寿光市"},{"code":"370784","name":"安丘市"},{"code":"370785","name":"高密市"},{"code":"370786","name":"昌邑市"}]},{"code":"3708","name":"济宁市","childs":[{"code":"370811","name":"任城区"},{"code":"370812","name":"兖州区"},{"code":"370826","name":"微山县"},{"code":"370827","name":"鱼台县"},{"code":"370828","name":"金乡县"},{"code":"370829","name":"嘉祥县"},{"code":"370830","name":"汶上县"},{"code":"370831","name":"泗水县"},{"code":"370832","name":"梁山县"},{"code":"370881","name":"曲阜市"},{"code":"370883","name":"邹城市"}]},{"code":"3709","name":"泰安市","childs":[{"code":"370902","name":"泰山区"},{"code":"370911","name":"岱岳区"},{"code":"370921","name":"宁阳县"},{"code":"370923","name":"东平县"},{"code":"370982","name":"新泰市"},{"code":"370983","name":"肥城市"}]},{"code":"3710","name":"威海市","childs":[{"code":"371002","name":"环翠区"},{"code":"371003","name":"文登区"},{"code":"371082","name":"荣成市"},{"code":"371083","name":"乳山市"}]},{"code":"3711","name":"日照市","childs":[{"code":"371102","name":"东港区"},{"code":"371103","name":"岚山区"},{"code":"371121","name":"五莲县"},{"code":"371122","name":"莒县"}]},{"code":"3712","name":"莱芜市","childs":[{"code":"371202","name":"莱城区"},{"code":"371203","name":"钢城区"}]},{"code":"3713","name":"临沂市","childs":[{"code":"371302","name":"兰山区"},{"code":"371311","name":"罗庄区"},{"code":"371312","name":"河东区"},{"code":"371321","name":"沂南县"},{"code":"371322","name":"郯城县"},{"code":"371323","name":"沂水县"},{"code":"371324","name":"兰陵县"},{"code":"371325","name":"费县"},{"code":"371326","name":"平邑县"},{"code":"371327","name":"莒南县"},{"code":"371328","name":"蒙阴县"},{"code":"371329","name":"临沭县"}]},{"code":"3714","name":"德州市","childs":[{"code":"371402","name":"德城区"},{"code":"371403","name":"陵城区"},{"code":"371422","name":"宁津县"},{"code":"371423","name":"庆云县"},{"code":"371424","name":"临邑县"},{"code":"371425","name":"齐河县"},{"code":"371426","name":"平原县"},{"code":"371427","name":"夏津县"},{"code":"371428","name":"武城县"},{"code":"371481","name":"乐陵市"},{"code":"371482","name":"禹城市"}]},{"code":"3715","name":"聊城市","childs":[{"code":"371502","name":"东昌府区"},{"code":"371521","name":"阳谷县"},{"code":"371522","name":"莘县"},{"code":"371523","name":"茌平县"},{"code":"371524","name":"东阿县"},{"code":"371525","name":"冠县"},{"code":"371526","name":"高唐县"},{"code":"371581","name":"临清市"}]},{"code":"3716","name":"滨州市","childs":[{"code":"371602","name":"滨城区"},{"code":"371603","name":"沾化区"},{"code":"371621","name":"惠民县"},{"code":"371622","name":"阳信县"},{"code":"371623","name":"无棣县"},{"code":"371625","name":"博兴县"},{"code":"371626","name":"邹平县"}]},{"code":"3717","name":"菏泽市","childs":[{"code":"371702","name":"牡丹区"},{"code":"371703","name":"定陶区"},{"code":"371721","name":"曹县"},{"code":"371722","name":"单县"},{"code":"371723","name":"成武县"},{"code":"371724","name":"巨野县"},{"code":"371725","name":"郓城县"},{"code":"371726","name":"鄄城县"},{"code":"371728","name":"东明县"}]}]},{"code":"41","name":"河南省","childs":[{"code":"4101","name":"郑州市","childs":[{"code":"410102","name":"中原区"},{"code":"410103","name":"二七区"},{"code":"410104","name":"管城回族区"},{"code":"410105","name":"金水区"},{"code":"410106","name":"上街区"},{"code":"410108","name":"惠济区"},{"code":"410122","name":"中牟县"},{"code":"410181","name":"巩义市"},{"code":"410182","name":"荥阳市"},{"code":"410183","name":"新密市"},{"code":"410184","name":"新郑市"},{"code":"410185","name":"登封市"}]},{"code":"4102","name":"开封市","childs":[{"code":"410202","name":"龙亭区"},{"code":"410203","name":"顺河回族区"},{"code":"410204","name":"鼓楼区"},{"code":"410205","name":"禹王台区"},{"code":"410211","name":"金明区"},{"code":"410212","name":"祥符区"},{"code":"410221","name":"杞县"},{"code":"410222","name":"通许县"},{"code":"410223","name":"尉氏县"},{"code":"410225","name":"兰考县"}]},{"code":"4103","name":"洛阳市","childs":[{"code":"410302","name":"老城区"},{"code":"410303","name":"西工区"},{"code":"410304","name":"瀍河回族区"},{"code":"410305","name":"涧西区"},{"code":"410306","name":"吉利区"},{"code":"410311","name":"洛龙区"},{"code":"410322","name":"孟津县"},{"code":"410323","name":"新安县"},{"code":"410324","name":"栾川县"},{"code":"410325","name":"嵩县"},{"code":"410326","name":"汝阳县"},{"code":"410327","name":"宜阳县"},{"code":"410328","name":"洛宁县"},{"code":"410329","name":"伊川县"},{"code":"410381","name":"偃师市"}]},{"code":"4104","name":"平顶山市","childs":[{"code":"410402","name":"新华区"},{"code":"410403","name":"卫东区"},{"code":"410404","name":"石龙区"},{"code":"410411","name":"湛河区"},{"code":"410421","name":"宝丰县"},{"code":"410422","name":"叶县"},{"code":"410423","name":"鲁山县"},{"code":"410425","name":"郏县"},{"code":"410481","name":"舞钢市"},{"code":"410482","name":"汝州市"}]},{"code":"4105","name":"安阳市","childs":[{"code":"410502","name":"文峰区"},{"code":"410503","name":"北关区"},{"code":"410505","name":"殷都区"},{"code":"410506","name":"龙安区"},{"code":"410522","name":"安阳县"},{"code":"410523","name":"汤阴县"},{"code":"410526","name":"滑县"},{"code":"410527","name":"内黄县"},{"code":"410581","name":"林州市"}]},{"code":"4106","name":"鹤壁市","childs":[{"code":"410602","name":"鹤山区"},{"code":"410603","name":"山城区"},{"code":"410611","name":"淇滨区"},{"code":"410621","name":"浚县"},{"code":"410622","name":"淇县"}]},{"code":"4107","name":"新乡市","childs":[{"code":"410702","name":"红旗区"},{"code":"410703","name":"卫滨区"},{"code":"410704","name":"凤泉区"},{"code":"410711","name":"牧野区"},{"code":"410721","name":"新乡县"},{"code":"410724","name":"获嘉县"},{"code":"410725","name":"原阳县"},{"code":"410726","name":"延津县"},{"code":"410727","name":"封丘县"},{"code":"410728","name":"长垣县"},{"code":"410781","name":"卫辉市"},{"code":"410782","name":"辉县市"}]},{"code":"4108","name":"焦作市","childs":[{"code":"410802","name":"解放区"},{"code":"410803","name":"中站区"},{"code":"410804","name":"马村区"},{"code":"410811","name":"山阳区"},{"code":"410821","name":"修武县"},{"code":"410822","name":"博爱县"},{"code":"410823","name":"武陟县"},{"code":"410825","name":"温县"},{"code":"410882","name":"沁阳市"},{"code":"410883","name":"孟州市"}]},{"code":"4109","name":"濮阳市","childs":[{"code":"410902","name":"华龙区"},{"code":"410922","name":"清丰县"},{"code":"410923","name":"南乐县"},{"code":"410926","name":"范县"},{"code":"410927","name":"台前县"},{"code":"410928","name":"濮阳县"}]},{"code":"4110","name":"许昌市","childs":[{"code":"411002","name":"魏都区"},{"code":"411023","name":"许昌县"},{"code":"411024","name":"鄢陵县"},{"code":"411025","name":"襄城县"},{"code":"411081","name":"禹州市"},{"code":"411082","name":"长葛市"}]},{"code":"4111","name":"漯河市","childs":[{"code":"411102","name":"源汇区"},{"code":"411103","name":"郾城区"},{"code":"411104","name":"召陵区"},{"code":"411121","name":"舞阳县"},{"code":"411122","name":"临颍县"}]},{"code":"4112","name":"三门峡市","childs":[{"code":"411202","name":"湖滨区"},{"code":"411203","name":"陕州区"},{"code":"411221","name":"渑池县"},{"code":"411224","name":"卢氏县"},{"code":"411281","name":"义马市"},{"code":"411282","name":"灵宝市"}]},{"code":"4113","name":"南阳市","childs":[{"code":"411302","name":"宛城区"},{"code":"411303","name":"卧龙区"},{"code":"411321","name":"南召县"},{"code":"411322","name":"方城县"},{"code":"411323","name":"西峡县"},{"code":"411324","name":"镇平县"},{"code":"411325","name":"内乡县"},{"code":"411326","name":"淅川县"},{"code":"411327","name":"社旗县"},{"code":"411328","name":"唐河县"},{"code":"411329","name":"新野县"},{"code":"411330","name":"桐柏县"},{"code":"411381","name":"邓州市"}]},{"code":"4114","name":"商丘市","childs":[{"code":"411402","name":"梁园区"},{"code":"411403","name":"睢阳区"},{"code":"411421","name":"民权县"},{"code":"411422","name":"睢县"},{"code":"411423","name":"宁陵县"},{"code":"411424","name":"柘城县"},{"code":"411425","name":"虞城县"},{"code":"411426","name":"夏邑县"},{"code":"411481","name":"永城市"}]},{"code":"4115","name":"信阳市","childs":[{"code":"411502","name":"浉河区"},{"code":"411503","name":"平桥区"},{"code":"411521","name":"罗山县"},{"code":"411522","name":"光山县"},{"code":"411523","name":"新县"},{"code":"411524","name":"商城县"},{"code":"411525","name":"固始县"},{"code":"411526","name":"潢川县"},{"code":"411527","name":"淮滨县"},{"code":"411528","name":"息县"}]},{"code":"4116","name":"周口市","childs":[{"code":"411602","name":"川汇区"},{"code":"411621","name":"扶沟县"},{"code":"411622","name":"西华县"},{"code":"411623","name":"商水县"},{"code":"411624","name":"沈丘县"},{"code":"411625","name":"郸城县"},{"code":"411626","name":"淮阳县"},{"code":"411627","name":"太康县"},{"code":"411628","name":"鹿邑县"},{"code":"411681","name":"项城市"}]},{"code":"4117","name":"驻马店市","childs":[{"code":"411702","name":"驿城区"},{"code":"411721","name":"西平县"},{"code":"411722","name":"上蔡县"},{"code":"411723","name":"平舆县"},{"code":"411724","name":"正阳县"},{"code":"411725","name":"确山县"},{"code":"411726","name":"泌阳县"},{"code":"411727","name":"汝南县"},{"code":"411728","name":"遂平县"},{"code":"411729","name":"新蔡县"}]},{"code":"4190","name":"省直辖县级行政区划","childs":[{"code":"419001","name":"济源市"}]}]},{"code":"42","name":"湖北省","childs":[{"code":"4201","name":"武汉市","childs":[{"code":"420102","name":"江岸区"},{"code":"420103","name":"江汉区"},{"code":"420104","name":"硚口区"},{"code":"420105","name":"汉阳区"},{"code":"420106","name":"武昌区"},{"code":"420107","name":"青山区"},{"code":"420111","name":"洪山区"},{"code":"420112","name":"东西湖区"},{"code":"420113","name":"汉南区"},{"code":"420114","name":"蔡甸区"},{"code":"420115","name":"江夏区"},{"code":"420116","name":"黄陂区"},{"code":"420117","name":"新洲区"}]},{"code":"4202","name":"黄石市","childs":[{"code":"420202","name":"黄石港区"},{"code":"420203","name":"西塞山区"},{"code":"420204","name":"下陆区"},{"code":"420205","name":"铁山区"},{"code":"420222","name":"阳新县"},{"code":"420281","name":"大冶市"}]},{"code":"4203","name":"十堰市","childs":[{"code":"420302","name":"茅箭区"},{"code":"420303","name":"张湾区"},{"code":"420304","name":"郧阳区"},{"code":"420322","name":"郧西县"},{"code":"420323","name":"竹山县"},{"code":"420324","name":"竹溪县"},{"code":"420325","name":"房县"},{"code":"420381","name":"丹江口市"}]},{"code":"4205","name":"宜昌市","childs":[{"code":"420502","name":"西陵区"},{"code":"420503","name":"伍家岗区"},{"code":"420504","name":"点军区"},{"code":"420505","name":"猇亭区"},{"code":"420506","name":"夷陵区"},{"code":"420525","name":"远安县"},{"code":"420526","name":"兴山县"},{"code":"420527","name":"秭归县"},{"code":"420528","name":"长阳土家族自治县"},{"code":"420529","name":"五峰土家族自治县"},{"code":"420581","name":"宜都市"},{"code":"420582","name":"当阳市"},{"code":"420583","name":"枝江市"}]},{"code":"4206","name":"襄阳市","childs":[{"code":"420602","name":"襄城区"},{"code":"420606","name":"樊城区"},{"code":"420607","name":"襄州区"},{"code":"420624","name":"南漳县"},{"code":"420625","name":"谷城县"},{"code":"420626","name":"保康县"},{"code":"420682","name":"老河口市"},{"code":"420683","name":"枣阳市"},{"code":"420684","name":"宜城市"}]},{"code":"4207","name":"鄂州市","childs":[{"code":"420702","name":"梁子湖区"},{"code":"420703","name":"华容区"},{"code":"420704","name":"鄂城区"}]},{"code":"4208","name":"荆门市","childs":[{"code":"420802","name":"东宝区"},{"code":"420804","name":"掇刀区"},{"code":"420821","name":"京山县"},{"code":"420822","name":"沙洋县"},{"code":"420881","name":"钟祥市"}]},{"code":"4209","name":"孝感市","childs":[{"code":"420902","name":"孝南区"},{"code":"420921","name":"孝昌县"},{"code":"420922","name":"大悟县"},{"code":"420923","name":"云梦县"},{"code":"420981","name":"应城市"},{"code":"420982","name":"安陆市"},{"code":"420984","name":"汉川市"}]},{"code":"4210","name":"荆州市","childs":[{"code":"421002","name":"沙市区"},{"code":"421003","name":"荆州区"},{"code":"421022","name":"公安县"},{"code":"421023","name":"监利县"},{"code":"421024","name":"江陵县"},{"code":"421081","name":"石首市"},{"code":"421083","name":"洪湖市"},{"code":"421087","name":"松滋市"}]},{"code":"4211","name":"黄冈市","childs":[{"code":"421102","name":"黄州区"},{"code":"421121","name":"团风县"},{"code":"421122","name":"红安县"},{"code":"421123","name":"罗田县"},{"code":"421124","name":"英山县"},{"code":"421125","name":"浠水县"},{"code":"421126","name":"蕲春县"},{"code":"421127","name":"黄梅县"},{"code":"421181","name":"麻城市"},{"code":"421182","name":"武穴市"}]},{"code":"4212","name":"咸宁市","childs":[{"code":"421202","name":"咸安区"},{"code":"421221","name":"嘉鱼县"},{"code":"421222","name":"通城县"},{"code":"421223","name":"崇阳县"},{"code":"421224","name":"通山县"},{"code":"421281","name":"赤壁市"}]},{"code":"4213","name":"随州市","childs":[{"code":"421303","name":"曾都区"},{"code":"421321","name":"随县"},{"code":"421381","name":"广水市"}]},{"code":"4228","name":"恩施土家族苗族自治州","childs":[{"code":"422801","name":"恩施市"},{"code":"422802","name":"利川市"},{"code":"422822","name":"建始县"},{"code":"422823","name":"巴东县"},{"code":"422825","name":"宣恩县"},{"code":"422826","name":"咸丰县"},{"code":"422827","name":"来凤县"},{"code":"422828","name":"鹤峰县"}]},{"code":"4290","name":"省直辖县级行政区划","childs":[{"code":"429004","name":"仙桃市"},{"code":"429005","name":"潜江市"},{"code":"429006","name":"天门市"},{"code":"429021","name":"神农架林区"}]}]},{"code":"43","name":"湖南省","childs":[{"code":"4301","name":"长沙市","childs":[{"code":"430102","name":"芙蓉区"},{"code":"430103","name":"天心区"},{"code":"430104","name":"岳麓区"},{"code":"430105","name":"开福区"},{"code":"430111","name":"雨花区"},{"code":"430112","name":"望城区"},{"code":"430121","name":"长沙县"},{"code":"430124","name":"宁乡县"},{"code":"430181","name":"浏阳市"}]},{"code":"4302","name":"株洲市","childs":[{"code":"430202","name":"荷塘区"},{"code":"430203","name":"芦淞区"},{"code":"430204","name":"石峰区"},{"code":"430211","name":"天元区"},{"code":"430221","name":"株洲县"},{"code":"430223","name":"攸县"},{"code":"430224","name":"茶陵县"},{"code":"430225","name":"炎陵县"},{"code":"430281","name":"醴陵市"}]},{"code":"4303","name":"湘潭市","childs":[{"code":"430302","name":"雨湖区"},{"code":"430304","name":"岳塘区"},{"code":"430321","name":"湘潭县"},{"code":"430381","name":"湘乡市"},{"code":"430382","name":"韶山市"}]},{"code":"4304","name":"衡阳市","childs":[{"code":"430405","name":"珠晖区"},{"code":"430406","name":"雁峰区"},{"code":"430407","name":"石鼓区"},{"code":"430408","name":"蒸湘区"},{"code":"430412","name":"南岳区"},{"code":"430421","name":"衡阳县"},{"code":"430422","name":"衡南县"},{"code":"430423","name":"衡山县"},{"code":"430424","name":"衡东县"},{"code":"430426","name":"祁东县"},{"code":"430481","name":"耒阳市"},{"code":"430482","name":"常宁市"}]},{"code":"4305","name":"邵阳市","childs":[{"code":"430502","name":"双清区"},{"code":"430503","name":"大祥区"},{"code":"430511","name":"北塔区"},{"code":"430521","name":"邵东县"},{"code":"430522","name":"新邵县"},{"code":"430523","name":"邵阳县"},{"code":"430524","name":"隆回县"},{"code":"430525","name":"洞口县"},{"code":"430527","name":"绥宁县"},{"code":"430528","name":"新宁县"},{"code":"430529","name":"城步苗族自治县"},{"code":"430581","name":"武冈市"}]},{"code":"4306","name":"岳阳市","childs":[{"code":"430602","name":"岳阳楼区"},{"code":"430603","name":"云溪区"},{"code":"430611","name":"君山区"},{"code":"430621","name":"岳阳县"},{"code":"430623","name":"华容县"},{"code":"430624","name":"湘阴县"},{"code":"430626","name":"平江县"},{"code":"430681","name":"汨罗市"},{"code":"430682","name":"临湘市"}]},{"code":"4307","name":"常德市","childs":[{"code":"430702","name":"武陵区"},{"code":"430703","name":"鼎城区"},{"code":"430721","name":"安乡县"},{"code":"430722","name":"汉寿县"},{"code":"430723","name":"澧县"},{"code":"430724","name":"临澧县"},{"code":"430725","name":"桃源县"},{"code":"430726","name":"石门县"},{"code":"430781","name":"津市市"}]},{"code":"4308","name":"张家界市","childs":[{"code":"430802","name":"永定区"},{"code":"430811","name":"武陵源区"},{"code":"430821","name":"慈利县"},{"code":"430822","name":"桑植县"}]},{"code":"4309","name":"益阳市","childs":[{"code":"430902","name":"资阳区"},{"code":"430903","name":"赫山区"},{"code":"430921","name":"南县"},{"code":"430922","name":"桃江县"},{"code":"430923","name":"安化县"},{"code":"430981","name":"沅江市"}]},{"code":"4310","name":"郴州市","childs":[{"code":"431002","name":"北湖区"},{"code":"431003","name":"苏仙区"},{"code":"431021","name":"桂阳县"},{"code":"431022","name":"宜章县"},{"code":"431023","name":"永兴县"},{"code":"431024","name":"嘉禾县"},{"code":"431025","name":"临武县"},{"code":"431026","name":"汝城县"},{"code":"431027","name":"桂东县"},{"code":"431028","name":"安仁县"},{"code":"431081","name":"资兴市"}]},{"code":"4311","name":"永州市","childs":[{"code":"431102","name":"零陵区"},{"code":"431103","name":"冷水滩区"},{"code":"431121","name":"祁阳县"},{"code":"431122","name":"东安县"},{"code":"431123","name":"双牌县"},{"code":"431124","name":"道县"},{"code":"431125","name":"江永县"},{"code":"431126","name":"宁远县"},{"code":"431127","name":"蓝山县"},{"code":"431128","name":"新田县"},{"code":"431129","name":"江华瑶族自治县"}]},{"code":"4312","name":"怀化市","childs":[{"code":"431202","name":"鹤城区"},{"code":"431221","name":"中方县"},{"code":"431222","name":"沅陵县"},{"code":"431223","name":"辰溪县"},{"code":"431224","name":"溆浦县"},{"code":"431225","name":"会同县"},{"code":"431226","name":"麻阳苗族自治县"},{"code":"431227","name":"新晃侗族自治县"},{"code":"431228","name":"芷江侗族自治县"},{"code":"431229","name":"靖州苗族侗族自治县"},{"code":"431230","name":"通道侗族自治县"},{"code":"431281","name":"洪江市"}]},{"code":"4313","name":"娄底市","childs":[{"code":"431302","name":"娄星区"},{"code":"431321","name":"双峰县"},{"code":"431322","name":"新化县"},{"code":"431381","name":"冷水江市"},{"code":"431382","name":"涟源市"}]},{"code":"4331","name":"湘西土家族苗族自治州","childs":[{"code":"433101","name":"吉首市"},{"code":"433122","name":"泸溪县"},{"code":"433123","name":"凤凰县"},{"code":"433124","name":"花垣县"},{"code":"433125","name":"保靖县"},{"code":"433126","name":"古丈县"},{"code":"433127","name":"永顺县"},{"code":"433130","name":"龙山县"}]}]},{"code":"44","name":"广东省","childs":[{"code":"4401","name":"广州市","childs":[{"code":"440103","name":"荔湾区"},{"code":"440104","name":"越秀区"},{"code":"440105","name":"海珠区"},{"code":"440106","name":"天河区"},{"code":"440111","name":"白云区"},{"code":"440112","name":"黄埔区"},{"code":"440113","name":"番禺区"},{"code":"440114","name":"花都区"},{"code":"440115","name":"南沙区"},{"code":"440117","name":"从化区"},{"code":"440118","name":"增城区"}]},{"code":"4402","name":"韶关市","childs":[{"code":"440203","name":"武江区"},{"code":"440204","name":"浈江区"},{"code":"440205","name":"曲江区"},{"code":"440222","name":"始兴县"},{"code":"440224","name":"仁化县"},{"code":"440229","name":"翁源县"},{"code":"440232","name":"乳源瑶族自治县"},{"code":"440233","name":"新丰县"},{"code":"440281","name":"乐昌市"},{"code":"440282","name":"南雄市"}]},{"code":"4403","name":"深圳市","childs":[{"code":"440303","name":"罗湖区"},{"code":"440304","name":"福田区"},{"code":"440305","name":"南山区"},{"code":"440306","name":"宝安区"},{"code":"440307","name":"龙岗区"},{"code":"440308","name":"盐田区"}]},{"code":"4404","name":"珠海市","childs":[{"code":"440402","name":"香洲区"},{"code":"440403","name":"斗门区"},{"code":"440404","name":"金湾区"}]},{"code":"4405","name":"汕头市","childs":[{"code":"440507","name":"龙湖区"},{"code":"440511","name":"金平区"},{"code":"440512","name":"濠江区"},{"code":"440513","name":"潮阳区"},{"code":"440514","name":"潮南区"},{"code":"440515","name":"澄海区"},{"code":"440523","name":"南澳县"}]},{"code":"4406","name":"佛山市","childs":[{"code":"440604","name":"禅城区"},{"code":"440605","name":"南海区"},{"code":"440606","name":"顺德区"},{"code":"440607","name":"三水区"},{"code":"440608","name":"高明区"}]},{"code":"4407","name":"江门市","childs":[{"code":"440703","name":"蓬江区"},{"code":"440704","name":"江海区"},{"code":"440705","name":"新会区"},{"code":"440781","name":"台山市"},{"code":"440783","name":"开平市"},{"code":"440784","name":"鹤山市"},{"code":"440785","name":"恩平市"}]},{"code":"4408","name":"湛江市","childs":[{"code":"440802","name":"赤坎区"},{"code":"440803","name":"霞山区"},{"code":"440804","name":"坡头区"},{"code":"440811","name":"麻章区"},{"code":"440823","name":"遂溪县"},{"code":"440825","name":"徐闻县"},{"code":"440881","name":"廉江市"},{"code":"440882","name":"雷州市"},{"code":"440883","name":"吴川市"}]},{"code":"4409","name":"茂名市","childs":[{"code":"440902","name":"茂南区"},{"code":"440904","name":"电白区"},{"code":"440981","name":"高州市"},{"code":"440982","name":"化州市"},{"code":"440983","name":"信宜市"}]},{"code":"4412","name":"肇庆市","childs":[{"code":"441202","name":"端州区"},{"code":"441203","name":"鼎湖区"},{"code":"441204","name":"高要区"},{"code":"441223","name":"广宁县"},{"code":"441224","name":"怀集县"},{"code":"441225","name":"封开县"},{"code":"441226","name":"德庆县"},{"code":"441284","name":"四会市"}]},{"code":"4413","name":"惠州市","childs":[{"code":"441302","name":"惠城区"},{"code":"441303","name":"惠阳区"},{"code":"441322","name":"博罗县"},{"code":"441323","name":"惠东县"},{"code":"441324","name":"龙门县"}]},{"code":"4414","name":"梅州市","childs":[{"code":"441402","name":"梅江区"},{"code":"441403","name":"梅县区"},{"code":"441422","name":"大埔县"},{"code":"441423","name":"丰顺县"},{"code":"441424","name":"五华县"},{"code":"441426","name":"平远县"},{"code":"441427","name":"蕉岭县"},{"code":"441481","name":"兴宁市"}]},{"code":"4415","name":"汕尾市","childs":[{"code":"441502","name":"城区"},{"code":"441521","name":"海丰县"},{"code":"441523","name":"陆河县"},{"code":"441581","name":"陆丰市"}]},{"code":"4416","name":"河源市","childs":[{"code":"441602","name":"源城区"},{"code":"441621","name":"紫金县"},{"code":"441622","name":"龙川县"},{"code":"441623","name":"连平县"},{"code":"441624","name":"和平县"},{"code":"441625","name":"东源县"}]},{"code":"4417","name":"阳江市","childs":[{"code":"441702","name":"江城区"},{"code":"441704","name":"阳东区"},{"code":"441721","name":"阳西县"},{"code":"441781","name":"阳春市"}]},{"code":"4418","name":"清远市","childs":[{"code":"441802","name":"清城区"},{"code":"441803","name":"清新区"},{"code":"441821","name":"佛冈县"},{"code":"441823","name":"阳山县"},{"code":"441825","name":"连山壮族瑶族自治县"},{"code":"441826","name":"连南瑶族自治县"},{"code":"441881","name":"英德市"},{"code":"441882","name":"连州市"}]},{"code":"441900","name":"东莞市","childs":[{"code":"441900003","name":"东城街道办事处"},{"code":"441900004","name":"南城街道办事处"},{"code":"441900005","name":"万江街道办事处"},{"code":"441900006","name":"莞城街道办事处"},{"code":"441900101","name":"石碣镇"},{"code":"441900102","name":"石龙镇"},{"code":"441900103","name":"茶山镇"},{"code":"441900104","name":"石排镇"},{"code":"441900105","name":"企石镇"},{"code":"441900106","name":"横沥镇"},{"code":"441900107","name":"桥头镇"},{"code":"441900108","name":"谢岗镇"},{"code":"441900109","name":"东坑镇"},{"code":"441900110","name":"常平镇"},{"code":"441900111","name":"寮步镇"},{"code":"441900112","name":"樟木头镇"},{"code":"441900113","name":"大朗镇"},{"code":"441900114","name":"黄江镇"},{"code":"441900115","name":"清溪镇"},{"code":"441900116","name":"塘厦镇"},{"code":"441900117","name":"凤岗镇"},{"code":"441900118","name":"大岭山镇"},{"code":"441900119","name":"长安镇"},{"code":"441900121","name":"虎门镇"},{"code":"441900122","name":"厚街镇"},{"code":"441900123","name":"沙田镇"},{"code":"441900124","name":"道滘镇"},{"code":"441900125","name":"洪梅镇"},{"code":"441900126","name":"麻涌镇"},{"code":"441900127","name":"望牛墩镇"},{"code":"441900128","name":"中堂镇"},{"code":"441900129","name":"高埗镇"},{"code":"441900401","name":"松山湖管委会"},{"code":"441900402","name":"虎门港管委会"},{"code":"441900403","name":"东莞生态园"}]},{"code":"442000","name":"中山市","childs":[{"code":"442000001","name":"石岐区街道办事处"},{"code":"442000002","name":"东区街道办事处"},{"code":"442000003","name":"火炬开发区街道办事处"},{"code":"442000004","name":"西区街道办事处"},{"code":"442000005","name":"南区街道办事处"},{"code":"442000006","name":"五桂山街道办事处"},{"code":"442000100","name":"小榄镇"},{"code":"442000101","name":"黄圃镇"},{"code":"442000102","name":"民众镇"},{"code":"442000103","name":"东凤镇"},{"code":"442000104","name":"东升镇"},{"code":"442000105","name":"古镇镇"},{"code":"442000106","name":"沙溪镇"},{"code":"442000107","name":"坦洲镇"},{"code":"442000108","name":"港口镇"},{"code":"442000109","name":"三角镇"},{"code":"442000110","name":"横栏镇"},{"code":"442000111","name":"南头镇"},{"code":"442000112","name":"阜沙镇"},{"code":"442000113","name":"南朗镇"},{"code":"442000114","name":"三乡镇"},{"code":"442000115","name":"板芙镇"},{"code":"442000116","name":"大涌镇"},{"code":"442000117","name":"神湾镇"}]},{"code":"4451","name":"潮州市","childs":[{"code":"445102","name":"湘桥区"},{"code":"445103","name":"潮安区"},{"code":"445122","name":"饶平县"}]},{"code":"4452","name":"揭阳市","childs":[{"code":"445202","name":"榕城区"},{"code":"445203","name":"揭东区"},{"code":"445222","name":"揭西县"},{"code":"445224","name":"惠来县"},{"code":"445281","name":"普宁市"}]},{"code":"4453","name":"云浮市","childs":[{"code":"445302","name":"云城区"},{"code":"445303","name":"云安区"},{"code":"445321","name":"新兴县"},{"code":"445322","name":"郁南县"},{"code":"445381","name":"罗定市"}]}]},{"code":"45","name":"广西壮族自治区","childs":[{"code":"4501","name":"南宁市","childs":[{"code":"450102","name":"兴宁区"},{"code":"450103","name":"青秀区"},{"code":"450105","name":"江南区"},{"code":"450107","name":"西乡塘区"},{"code":"450108","name":"良庆区"},{"code":"450109","name":"邕宁区"},{"code":"450110","name":"武鸣区"},{"code":"450123","name":"隆安县"},{"code":"450124","name":"马山县"},{"code":"450125","name":"上林县"},{"code":"450126","name":"宾阳县"},{"code":"450127","name":"横县"}]},{"code":"4502","name":"柳州市","childs":[{"code":"450202","name":"城中区"},{"code":"450203","name":"鱼峰区"},{"code":"450204","name":"柳南区"},{"code":"450205","name":"柳北区"},{"code":"450206","name":"柳江区"},{"code":"450222","name":"柳城县"},{"code":"450223","name":"鹿寨县"},{"code":"450224","name":"融安县"},{"code":"450225","name":"融水苗族自治县"},{"code":"450226","name":"三江侗族自治县"}]},{"code":"4503","name":"桂林市","childs":[{"code":"450302","name":"秀峰区"},{"code":"450303","name":"叠彩区"},{"code":"450304","name":"象山区"},{"code":"450305","name":"七星区"},{"code":"450311","name":"雁山区"},{"code":"450312","name":"临桂区"},{"code":"450321","name":"阳朔县"},{"code":"450323","name":"灵川县"},{"code":"450324","name":"全州县"},{"code":"450325","name":"兴安县"},{"code":"450326","name":"永福县"},{"code":"450327","name":"灌阳县"},{"code":"450328","name":"龙胜各族自治县"},{"code":"450329","name":"资源县"},{"code":"450330","name":"平乐县"},{"code":"450331","name":"荔浦县"},{"code":"450332","name":"恭城瑶族自治县"}]},{"code":"4504","name":"梧州市","childs":[{"code":"450403","name":"万秀区"},{"code":"450405","name":"长洲区"},{"code":"450406","name":"龙圩区"},{"code":"450421","name":"苍梧县"},{"code":"450422","name":"藤县"},{"code":"450423","name":"蒙山县"},{"code":"450481","name":"岑溪市"}]},{"code":"4505","name":"北海市","childs":[{"code":"450502","name":"海城区"},{"code":"450503","name":"银海区"},{"code":"450512","name":"铁山港区"},{"code":"450521","name":"合浦县"}]},{"code":"4506","name":"防城港市","childs":[{"code":"450602","name":"港口区"},{"code":"450603","name":"防城区"},{"code":"450621","name":"上思县"},{"code":"450681","name":"东兴市"}]},{"code":"4507","name":"钦州市","childs":[{"code":"450702","name":"钦南区"},{"code":"450703","name":"钦北区"},{"code":"450721","name":"灵山县"},{"code":"450722","name":"浦北县"}]},{"code":"4508","name":"贵港市","childs":[{"code":"450802","name":"港北区"},{"code":"450803","name":"港南区"},{"code":"450804","name":"覃塘区"},{"code":"450821","name":"平南县"},{"code":"450881","name":"桂平市"}]},{"code":"4509","name":"玉林市","childs":[{"code":"450902","name":"玉州区"},{"code":"450903","name":"福绵区"},{"code":"450921","name":"容县"},{"code":"450922","name":"陆川县"},{"code":"450923","name":"博白县"},{"code":"450924","name":"兴业县"},{"code":"450981","name":"北流市"}]},{"code":"4510","name":"百色市","childs":[{"code":"451002","name":"右江区"},{"code":"451021","name":"田阳县"},{"code":"451022","name":"田东县"},{"code":"451023","name":"平果县"},{"code":"451024","name":"德保县"},{"code":"451026","name":"那坡县"},{"code":"451027","name":"凌云县"},{"code":"451028","name":"乐业县"},{"code":"451029","name":"田林县"},{"code":"451030","name":"西林县"},{"code":"451031","name":"隆林各族自治县"},{"code":"451081","name":"靖西市"}]},{"code":"4511","name":"贺州市","childs":[{"code":"451102","name":"八步区"},{"code":"451103","name":"平桂区"},{"code":"451121","name":"昭平县"},{"code":"451122","name":"钟山县"},{"code":"451123","name":"富川瑶族自治县"}]},{"code":"4512","name":"河池市","childs":[{"code":"451202","name":"金城江区"},{"code":"451221","name":"南丹县"},{"code":"451222","name":"天峨县"},{"code":"451223","name":"凤山县"},{"code":"451224","name":"东兰县"},{"code":"451225","name":"罗城仫佬族自治县"},{"code":"451226","name":"环江毛南族自治县"},{"code":"451227","name":"巴马瑶族自治县"},{"code":"451228","name":"都安瑶族自治县"},{"code":"451229","name":"大化瑶族自治县"},{"code":"451281","name":"宜州市"}]},{"code":"4513","name":"来宾市","childs":[{"code":"451302","name":"兴宾区"},{"code":"451321","name":"忻城县"},{"code":"451322","name":"象州县"},{"code":"451323","name":"武宣县"},{"code":"451324","name":"金秀瑶族自治县"},{"code":"451381","name":"合山市"}]},{"code":"4514","name":"崇左市","childs":[{"code":"451402","name":"江州区"},{"code":"451421","name":"扶绥县"},{"code":"451422","name":"宁明县"},{"code":"451423","name":"龙州县"},{"code":"451424","name":"大新县"},{"code":"451425","name":"天等县"},{"code":"451481","name":"凭祥市"}]}]},{"code":"46","name":"海南省","childs":[{"code":"4601","name":"海口市","childs":[{"code":"460105","name":"秀英区"},{"code":"460106","name":"龙华区"},{"code":"460107","name":"琼山区"},{"code":"460108","name":"美兰区"}]},{"code":"4602","name":"三亚市","childs":[{"code":"460202","name":"海棠区"},{"code":"460203","name":"吉阳区"},{"code":"460204","name":"天涯区"},{"code":"460205","name":"崖州区"}]},{"code":"4603","name":"三沙市","childs":[{"code":"460321","name":"西沙群岛"},{"code":"460322","name":"南沙群岛"},{"code":"460323","name":"中沙群岛的岛礁及其海域"}]},{"code":"460400","name":"儋州市","childs":[{"code":"460400100","name":"那大镇"},{"code":"460400101","name":"和庆镇"},{"code":"460400102","name":"南丰镇"},{"code":"460400103","name":"大成镇"},{"code":"460400104","name":"雅星镇"},{"code":"460400105","name":"兰洋镇"},{"code":"460400106","name":"光村镇"},{"code":"460400107","name":"木棠镇"},{"code":"460400108","name":"海头镇"},{"code":"460400109","name":"峨蔓镇"},{"code":"460400110","name":"三都镇"},{"code":"460400111","name":"王五镇"},{"code":"460400112","name":"白马井镇"},{"code":"460400113","name":"中和镇"},{"code":"460400114","name":"排浦镇"},{"code":"460400115","name":"东成镇"},{"code":"460400116","name":"新州镇"},{"code":"460400400","name":"国营西培农场"},{"code":"460400404","name":"国营西联农场"},{"code":"460400405","name":"国营蓝洋农场"},{"code":"460400407","name":"国营八一农场"},{"code":"460400499","name":"洋浦经济开发区"},{"code":"460400500","name":"华南热作学院"}]},{"code":"4690","name":"省直辖县级行政区划","childs":[{"code":"469001","name":"五指山市"},{"code":"469002","name":"琼海市"},{"code":"469005","name":"文昌市"},{"code":"469006","name":"万宁市"},{"code":"469007","name":"东方市"},{"code":"469021","name":"定安县"},{"code":"469022","name":"屯昌县"},{"code":"469023","name":"澄迈县"},{"code":"469024","name":"临高县"},{"code":"469025","name":"白沙黎族自治县"},{"code":"469026","name":"昌江黎族自治县"},{"code":"469027","name":"乐东黎族自治县"},{"code":"469028","name":"陵水黎族自治县"},{"code":"469029","name":"保亭黎族苗族自治县"},{"code":"469030","name":"琼中黎族苗族自治县"}]}]},{"code":"50","name":"重庆市","childs":[{"code":"5001","name":"市辖区","childs":[{"code":"500101","name":"万州区"},{"code":"500102","name":"涪陵区"},{"code":"500103","name":"渝中区"},{"code":"500104","name":"大渡口区"},{"code":"500105","name":"江北区"},{"code":"500106","name":"沙坪坝区"},{"code":"500107","name":"九龙坡区"},{"code":"500108","name":"南岸区"},{"code":"500109","name":"北碚区"},{"code":"500110","name":"綦江区"},{"code":"500111","name":"大足区"},{"code":"500112","name":"渝北区"},{"code":"500113","name":"巴南区"},{"code":"500114","name":"黔江区"},{"code":"500115","name":"长寿区"},{"code":"500116","name":"江津区"},{"code":"500117","name":"合川区"},{"code":"500118","name":"永川区"},{"code":"500119","name":"南川区"},{"code":"500120","name":"璧山区"},{"code":"500151","name":"铜梁区"},{"code":"500152","name":"潼南区"},{"code":"500153","name":"荣昌区"},{"code":"500154","name":"开州区"}]},{"code":"5002","name":"县","childs":[{"code":"500228","name":"梁平县"},{"code":"500229","name":"城口县"},{"code":"500230","name":"丰都县"},{"code":"500231","name":"垫江县"},{"code":"500232","name":"武隆县"},{"code":"500233","name":"忠县"},{"code":"500235","name":"云阳县"},{"code":"500236","name":"奉节县"},{"code":"500237","name":"巫山县"},{"code":"500238","name":"巫溪县"},{"code":"500240","name":"石柱土家族自治县"},{"code":"500241","name":"秀山土家族苗族自治县"},{"code":"500242","name":"酉阳土家族苗族自治县"},{"code":"500243","name":"彭水苗族土家族自治县"}]}]},{"code":"51","name":"四川省","childs":[{"code":"5101","name":"成都市","childs":[{"code":"510104","name":"锦江区"},{"code":"510105","name":"青羊区"},{"code":"510106","name":"金牛区"},{"code":"510107","name":"武侯区"},{"code":"510108","name":"成华区"},{"code":"510112","name":"龙泉驿区"},{"code":"510113","name":"青白江区"},{"code":"510114","name":"新都区"},{"code":"510115","name":"温江区"},{"code":"510116","name":"双流区"},{"code":"510121","name":"金堂县"},{"code":"510124","name":"郫县"},{"code":"510129","name":"大邑县"},{"code":"510131","name":"蒲江县"},{"code":"510132","name":"新津县"},{"code":"510181","name":"都江堰市"},{"code":"510182","name":"彭州市"},{"code":"510183","name":"邛崃市"},{"code":"510184","name":"崇州市"},{"code":"510185","name":"简阳市"}]},{"code":"5103","name":"自贡市","childs":[{"code":"510302","name":"自流井区"},{"code":"510303","name":"贡井区"},{"code":"510304","name":"大安区"},{"code":"510311","name":"沿滩区"},{"code":"510321","name":"荣县"},{"code":"510322","name":"富顺县"}]},{"code":"5104","name":"攀枝花市","childs":[{"code":"510402","name":"东区"},{"code":"510403","name":"西区"},{"code":"510411","name":"仁和区"},{"code":"510421","name":"米易县"},{"code":"510422","name":"盐边县"}]},{"code":"5105","name":"泸州市","childs":[{"code":"510502","name":"江阳区"},{"code":"510503","name":"纳溪区"},{"code":"510504","name":"龙马潭区"},{"code":"510521","name":"泸县"},{"code":"510522","name":"合江县"},{"code":"510524","name":"叙永县"},{"code":"510525","name":"古蔺县"}]},{"code":"5106","name":"德阳市","childs":[{"code":"510603","name":"旌阳区"},{"code":"510623","name":"中江县"},{"code":"510626","name":"罗江县"},{"code":"510681","name":"广汉市"},{"code":"510682","name":"什邡市"},{"code":"510683","name":"绵竹市"}]},{"code":"5107","name":"绵阳市","childs":[{"code":"510703","name":"涪城区"},{"code":"510704","name":"游仙区"},{"code":"510705","name":"安州区"},{"code":"510722","name":"三台县"},{"code":"510723","name":"盐亭县"},{"code":"510725","name":"梓潼县"},{"code":"510726","name":"北川羌族自治县"},{"code":"510727","name":"平武县"},{"code":"510781","name":"江油市"}]},{"code":"5108","name":"广元市","childs":[{"code":"510802","name":"利州区"},{"code":"510811","name":"昭化区"},{"code":"510812","name":"朝天区"},{"code":"510821","name":"旺苍县"},{"code":"510822","name":"青川县"},{"code":"510823","name":"剑阁县"},{"code":"510824","name":"苍溪县"}]},{"code":"5109","name":"遂宁市","childs":[{"code":"510903","name":"船山区"},{"code":"510904","name":"安居区"},{"code":"510921","name":"蓬溪县"},{"code":"510922","name":"射洪县"},{"code":"510923","name":"大英县"}]},{"code":"5110","name":"内江市","childs":[{"code":"511002","name":"市中区"},{"code":"511011","name":"东兴区"},{"code":"511024","name":"威远县"},{"code":"511025","name":"资中县"},{"code":"511028","name":"隆昌县"}]},{"code":"5111","name":"乐山市","childs":[{"code":"511102","name":"市中区"},{"code":"511111","name":"沙湾区"},{"code":"511112","name":"五通桥区"},{"code":"511113","name":"金口河区"},{"code":"511123","name":"犍为县"},{"code":"511124","name":"井研县"},{"code":"511126","name":"夹江县"},{"code":"511129","name":"沐川县"},{"code":"511132","name":"峨边彝族自治县"},{"code":"511133","name":"马边彝族自治县"},{"code":"511181","name":"峨眉山市"}]},{"code":"5113","name":"南充市","childs":[{"code":"511302","name":"顺庆区"},{"code":"511303","name":"高坪区"},{"code":"511304","name":"嘉陵区"},{"code":"511321","name":"南部县"},{"code":"511322","name":"营山县"},{"code":"511323","name":"蓬安县"},{"code":"511324","name":"仪陇县"},{"code":"511325","name":"西充县"},{"code":"511381","name":"阆中市"}]},{"code":"5114","name":"眉山市","childs":[{"code":"511402","name":"东坡区"},{"code":"511403","name":"彭山区"},{"code":"511421","name":"仁寿县"},{"code":"511423","name":"洪雅县"},{"code":"511424","name":"丹棱县"},{"code":"511425","name":"青神县"}]},{"code":"5115","name":"宜宾市","childs":[{"code":"511502","name":"翠屏区"},{"code":"511503","name":"南溪区"},{"code":"511521","name":"宜宾县"},{"code":"511523","name":"江安县"},{"code":"511524","name":"长宁县"},{"code":"511525","name":"高县"},{"code":"511526","name":"珙县"},{"code":"511527","name":"筠连县"},{"code":"511528","name":"兴文县"},{"code":"511529","name":"屏山县"}]},{"code":"5116","name":"广安市","childs":[{"code":"511602","name":"广安区"},{"code":"511603","name":"前锋区"},{"code":"511621","name":"岳池县"},{"code":"511622","name":"武胜县"},{"code":"511623","name":"邻水县"},{"code":"511681","name":"华蓥市"}]},{"code":"5117","name":"达州市","childs":[{"code":"511702","name":"通川区"},{"code":"511703","name":"达川区"},{"code":"511722","name":"宣汉县"},{"code":"511723","name":"开江县"},{"code":"511724","name":"大竹县"},{"code":"511725","name":"渠县"},{"code":"511781","name":"万源市"}]},{"code":"5118","name":"雅安市","childs":[{"code":"511802","name":"雨城区"},{"code":"511803","name":"名山区"},{"code":"511822","name":"荥经县"},{"code":"511823","name":"汉源县"},{"code":"511824","name":"石棉县"},{"code":"511825","name":"天全县"},{"code":"511826","name":"芦山县"},{"code":"511827","name":"宝兴县"}]},{"code":"5119","name":"巴中市","childs":[{"code":"511902","name":"巴州区"},{"code":"511903","name":"恩阳区"},{"code":"511921","name":"通江县"},{"code":"511922","name":"南江县"},{"code":"511923","name":"平昌县"}]},{"code":"5120","name":"资阳市","childs":[{"code":"512002","name":"雁江区"},{"code":"512021","name":"安岳县"},{"code":"512022","name":"乐至县"}]},{"code":"5132","name":"阿坝藏族羌族自治州","childs":[{"code":"513201","name":"马尔康市"},{"code":"513221","name":"汶川县"},{"code":"513222","name":"理县"},{"code":"513223","name":"茂县"},{"code":"513224","name":"松潘县"},{"code":"513225","name":"九寨沟县"},{"code":"513226","name":"金川县"},{"code":"513227","name":"小金县"},{"code":"513228","name":"黑水县"},{"code":"513230","name":"壤塘县"},{"code":"513231","name":"阿坝县"},{"code":"513232","name":"若尔盖县"},{"code":"513233","name":"红原县"}]},{"code":"5133","name":"甘孜藏族自治州","childs":[{"code":"513301","name":"康定市"},{"code":"513322","name":"泸定县"},{"code":"513323","name":"丹巴县"},{"code":"513324","name":"九龙县"},{"code":"513325","name":"雅江县"},{"code":"513326","name":"道孚县"},{"code":"513327","name":"炉霍县"},{"code":"513328","name":"甘孜县"},{"code":"513329","name":"新龙县"},{"code":"513330","name":"德格县"},{"code":"513331","name":"白玉县"},{"code":"513332","name":"石渠县"},{"code":"513333","name":"色达县"},{"code":"513334","name":"理塘县"},{"code":"513335","name":"巴塘县"},{"code":"513336","name":"乡城县"},{"code":"513337","name":"稻城县"},{"code":"513338","name":"得荣县"}]},{"code":"5134","name":"凉山彝族自治州","childs":[{"code":"513401","name":"西昌市"},{"code":"513422","name":"木里藏族自治县"},{"code":"513423","name":"盐源县"},{"code":"513424","name":"德昌县"},{"code":"513425","name":"会理县"},{"code":"513426","name":"会东县"},{"code":"513427","name":"宁南县"},{"code":"513428","name":"普格县"},{"code":"513429","name":"布拖县"},{"code":"513430","name":"金阳县"},{"code":"513431","name":"昭觉县"},{"code":"513432","name":"喜德县"},{"code":"513433","name":"冕宁县"},{"code":"513434","name":"越西县"},{"code":"513435","name":"甘洛县"},{"code":"513436","name":"美姑县"},{"code":"513437","name":"雷波县"}]}]},{"code":"52","name":"贵州省","childs":[{"code":"5201","name":"贵阳市","childs":[{"code":"520102","name":"南明区"},{"code":"520103","name":"云岩区"},{"code":"520111","name":"花溪区"},{"code":"520112","name":"乌当区"},{"code":"520113","name":"白云区"},{"code":"520115","name":"观山湖区"},{"code":"520121","name":"开阳县"},{"code":"520122","name":"息烽县"},{"code":"520123","name":"修文县"},{"code":"520181","name":"清镇市"}]},{"code":"5202","name":"六盘水市","childs":[{"code":"520201","name":"钟山区"},{"code":"520203","name":"六枝特区"},{"code":"520221","name":"水城县"},{"code":"520222","name":"盘县"}]},{"code":"5203","name":"遵义市","childs":[{"code":"520302","name":"红花岗区"},{"code":"520303","name":"汇川区"},{"code":"520304","name":"播州区"},{"code":"520322","name":"桐梓县"},{"code":"520323","name":"绥阳县"},{"code":"520324","name":"正安县"},{"code":"520325","name":"道真仡佬族苗族自治县"},{"code":"520326","name":"务川仡佬族苗族自治县"},{"code":"520327","name":"凤冈县"},{"code":"520328","name":"湄潭县"},{"code":"520329","name":"余庆县"},{"code":"520330","name":"习水县"},{"code":"520381","name":"赤水市"},{"code":"520382","name":"仁怀市"}]},{"code":"5204","name":"安顺市","childs":[{"code":"520402","name":"西秀区"},{"code":"520403","name":"平坝区"},{"code":"520422","name":"普定县"},{"code":"520423","name":"镇宁布依族苗族自治县"},{"code":"520424","name":"关岭布依族苗族自治县"},{"code":"520425","name":"紫云苗族布依族自治县"}]},{"code":"5205","name":"毕节市","childs":[{"code":"520502","name":"七星关区"},{"code":"520521","name":"大方县"},{"code":"520522","name":"黔西县"},{"code":"520523","name":"金沙县"},{"code":"520524","name":"织金县"},{"code":"520525","name":"纳雍县"},{"code":"520526","name":"威宁彝族回族苗族自治县"},{"code":"520527","name":"赫章县"}]},{"code":"5206","name":"铜仁市","childs":[{"code":"520602","name":"碧江区"},{"code":"520603","name":"万山区"},{"code":"520621","name":"江口县"},{"code":"520622","name":"玉屏侗族自治县"},{"code":"520623","name":"石阡县"},{"code":"520624","name":"思南县"},{"code":"520625","name":"印江土家族苗族自治县"},{"code":"520626","name":"德江县"},{"code":"520627","name":"沿河土家族自治县"},{"code":"520628","name":"松桃苗族自治县"}]},{"code":"5223","name":"黔西南布依族苗族自治州","childs":[{"code":"522301","name":"兴义市"},{"code":"522322","name":"兴仁县"},{"code":"522323","name":"普安县"},{"code":"522324","name":"晴隆县"},{"code":"522325","name":"贞丰县"},{"code":"522326","name":"望谟县"},{"code":"522327","name":"册亨县"},{"code":"522328","name":"安龙县"}]},{"code":"5226","name":"黔东南苗族侗族自治州","childs":[{"code":"522601","name":"凯里市"},{"code":"522622","name":"黄平县"},{"code":"522623","name":"施秉县"},{"code":"522624","name":"三穗县"},{"code":"522625","name":"镇远县"},{"code":"522626","name":"岑巩县"},{"code":"522627","name":"天柱县"},{"code":"522628","name":"锦屏县"},{"code":"522629","name":"剑河县"},{"code":"522630","name":"台江县"},{"code":"522631","name":"黎平县"},{"code":"522632","name":"榕江县"},{"code":"522633","name":"从江县"},{"code":"522634","name":"雷山县"},{"code":"522635","name":"麻江县"},{"code":"522636","name":"丹寨县"}]},{"code":"5227","name":"黔南布依族苗族自治州","childs":[{"code":"522701","name":"都匀市"},{"code":"522702","name":"福泉市"},{"code":"522722","name":"荔波县"},{"code":"522723","name":"贵定县"},{"code":"522725","name":"瓮安县"},{"code":"522726","name":"独山县"},{"code":"522727","name":"平塘县"},{"code":"522728","name":"罗甸县"},{"code":"522729","name":"长顺县"},{"code":"522730","name":"龙里县"},{"code":"522731","name":"惠水县"},{"code":"522732","name":"三都水族自治县"}]}]},{"code":"53","name":"云南省","childs":[{"code":"5301","name":"昆明市","childs":[{"code":"530102","name":"五华区"},{"code":"530103","name":"盘龙区"},{"code":"530111","name":"官渡区"},{"code":"530112","name":"西山区"},{"code":"530113","name":"东川区"},{"code":"530114","name":"呈贡区"},{"code":"530122","name":"晋宁县"},{"code":"530124","name":"富民县"},{"code":"530125","name":"宜良县"},{"code":"530126","name":"石林彝族自治县"},{"code":"530127","name":"嵩明县"},{"code":"530128","name":"禄劝彝族苗族自治县"},{"code":"530129","name":"寻甸回族彝族自治县"},{"code":"530181","name":"安宁市"}]},{"code":"5303","name":"曲靖市","childs":[{"code":"530302","name":"麒麟区"},{"code":"530303","name":"沾益区"},{"code":"530321","name":"马龙县"},{"code":"530322","name":"陆良县"},{"code":"530323","name":"师宗县"},{"code":"530324","name":"罗平县"},{"code":"530325","name":"富源县"},{"code":"530326","name":"会泽县"},{"code":"530381","name":"宣威市"}]},{"code":"5304","name":"玉溪市","childs":[{"code":"530402","name":"红塔区"},{"code":"530403","name":"江川区"},{"code":"530422","name":"澄江县"},{"code":"530423","name":"通海县"},{"code":"530424","name":"华宁县"},{"code":"530425","name":"易门县"},{"code":"530426","name":"峨山彝族自治县"},{"code":"530427","name":"新平彝族傣族自治县"},{"code":"530428","name":"元江哈尼族彝族傣族自治县"}]},{"code":"5305","name":"保山市","childs":[{"code":"530502","name":"隆阳区"},{"code":"530521","name":"施甸县"},{"code":"530523","name":"龙陵县"},{"code":"530524","name":"昌宁县"},{"code":"530581","name":"腾冲市"}]},{"code":"5306","name":"昭通市","childs":[{"code":"530602","name":"昭阳区"},{"code":"530621","name":"鲁甸县"},{"code":"530622","name":"巧家县"},{"code":"530623","name":"盐津县"},{"code":"530624","name":"大关县"},{"code":"530625","name":"永善县"},{"code":"530626","name":"绥江县"},{"code":"530627","name":"镇雄县"},{"code":"530628","name":"彝良县"},{"code":"530629","name":"威信县"},{"code":"530630","name":"水富县"}]},{"code":"5307","name":"丽江市","childs":[{"code":"530702","name":"古城区"},{"code":"530721","name":"玉龙纳西族自治县"},{"code":"530722","name":"永胜县"},{"code":"530723","name":"华坪县"},{"code":"530724","name":"宁蒗彝族自治县"}]},{"code":"5308","name":"普洱市","childs":[{"code":"530802","name":"思茅区"},{"code":"530821","name":"宁洱哈尼族彝族自治县"},{"code":"530822","name":"墨江哈尼族自治县"},{"code":"530823","name":"景东彝族自治县"},{"code":"530824","name":"景谷傣族彝族自治县"},{"code":"530825","name":"镇沅彝族哈尼族拉祜族自治县"},{"code":"530826","name":"江城哈尼族彝族自治县"},{"code":"530827","name":"孟连傣族拉祜族佤族自治县"},{"code":"530828","name":"澜沧拉祜族自治县"},{"code":"530829","name":"西盟佤族自治县"}]},{"code":"5309","name":"临沧市","childs":[{"code":"530902","name":"临翔区"},{"code":"530921","name":"凤庆县"},{"code":"530922","name":"云县"},{"code":"530923","name":"永德县"},{"code":"530924","name":"镇康县"},{"code":"530925","name":"双江拉祜族佤族布朗族傣族自治县"},{"code":"530926","name":"耿马傣族佤族自治县"},{"code":"530927","name":"沧源佤族自治县"}]},{"code":"5323","name":"楚雄彝族自治州","childs":[{"code":"532301","name":"楚雄市"},{"code":"532322","name":"双柏县"},{"code":"532323","name":"牟定县"},{"code":"532324","name":"南华县"},{"code":"532325","name":"姚安县"},{"code":"532326","name":"大姚县"},{"code":"532327","name":"永仁县"},{"code":"532328","name":"元谋县"},{"code":"532329","name":"武定县"},{"code":"532331","name":"禄丰县"}]},{"code":"5325","name":"红河哈尼族彝族自治州","childs":[{"code":"532501","name":"个旧市"},{"code":"532502","name":"开远市"},{"code":"532503","name":"蒙自市"},{"code":"532504","name":"弥勒市"},{"code":"532523","name":"屏边苗族自治县"},{"code":"532524","name":"建水县"},{"code":"532525","name":"石屏县"},{"code":"532527","name":"泸西县"},{"code":"532528","name":"元阳县"},{"code":"532529","name":"红河县"},{"code":"532530","name":"金平苗族瑶族傣族自治县"},{"code":"532531","name":"绿春县"},{"code":"532532","name":"河口瑶族自治县"}]},{"code":"5326","name":"文山壮族苗族自治州","childs":[{"code":"532601","name":"文山市"},{"code":"532622","name":"砚山县"},{"code":"532623","name":"西畴县"},{"code":"532624","name":"麻栗坡县"},{"code":"532625","name":"马关县"},{"code":"532626","name":"丘北县"},{"code":"532627","name":"广南县"},{"code":"532628","name":"富宁县"}]},{"code":"5328","name":"西双版纳傣族自治州","childs":[{"code":"532801","name":"景洪市"},{"code":"532822","name":"勐海县"},{"code":"532823","name":"勐腊县"}]},{"code":"5329","name":"大理白族自治州","childs":[{"code":"532901","name":"大理市"},{"code":"532922","name":"漾濞彝族自治县"},{"code":"532923","name":"祥云县"},{"code":"532924","name":"宾川县"},{"code":"532925","name":"弥渡县"},{"code":"532926","name":"南涧彝族自治县"},{"code":"532927","name":"巍山彝族回族自治县"},{"code":"532928","name":"永平县"},{"code":"532929","name":"云龙县"},{"code":"532930","name":"洱源县"},{"code":"532931","name":"剑川县"},{"code":"532932","name":"鹤庆县"}]},{"code":"5331","name":"德宏傣族景颇族自治州","childs":[{"code":"533102","name":"瑞丽市"},{"code":"533103","name":"芒市"},{"code":"533122","name":"梁河县"},{"code":"533123","name":"盈江县"},{"code":"533124","name":"陇川县"}]},{"code":"5333","name":"怒江傈僳族自治州","childs":[{"code":"533301","name":"泸水市"},{"code":"533323","name":"福贡县"},{"code":"533324","name":"贡山独龙族怒族自治县"},{"code":"533325","name":"兰坪白族普米族自治县"}]},{"code":"5334","name":"迪庆藏族自治州","childs":[{"code":"533401","name":"香格里拉市"},{"code":"533422","name":"德钦县"},{"code":"533423","name":"维西傈僳族自治县"}]}]},{"code":"54","name":"西藏自治区","childs":[{"code":"5401","name":"拉萨市","childs":[{"code":"540102","name":"城关区"},{"code":"540103","name":"堆龙德庆区"},{"code":"540121","name":"林周县"},{"code":"540122","name":"当雄县"},{"code":"540123","name":"尼木县"},{"code":"540124","name":"曲水县"},{"code":"540126","name":"达孜县"},{"code":"540127","name":"墨竹工卡县"}]},{"code":"5402","name":"日喀则市","childs":[{"code":"540202","name":"桑珠孜区"},{"code":"540221","name":"南木林县"},{"code":"540222","name":"江孜县"},{"code":"540223","name":"定日县"},{"code":"540224","name":"萨迦县"},{"code":"540225","name":"拉孜县"},{"code":"540226","name":"昂仁县"},{"code":"540227","name":"谢通门县"},{"code":"540228","name":"白朗县"},{"code":"540229","name":"仁布县"},{"code":"540230","name":"康马县"},{"code":"540231","name":"定结县"},{"code":"540232","name":"仲巴县"},{"code":"540233","name":"亚东县"},{"code":"540234","name":"吉隆县"},{"code":"540235","name":"聂拉木县"},{"code":"540236","name":"萨嘎县"},{"code":"540237","name":"岗巴县"}]},{"code":"5403","name":"昌都市","childs":[{"code":"540302","name":"卡若区"},{"code":"540321","name":"江达县"},{"code":"540322","name":"贡觉县"},{"code":"540323","name":"类乌齐县"},{"code":"540324","name":"丁青县"},{"code":"540325","name":"察雅县"},{"code":"540326","name":"八宿县"},{"code":"540327","name":"左贡县"},{"code":"540328","name":"芒康县"},{"code":"540329","name":"洛隆县"},{"code":"540330","name":"边坝县"}]},{"code":"5404","name":"林芝市","childs":[{"code":"540402","name":"巴宜区"},{"code":"540421","name":"工布江达县"},{"code":"540422","name":"米林县"},{"code":"540423","name":"墨脱县"},{"code":"540424","name":"波密县"},{"code":"540425","name":"察隅县"},{"code":"540426","name":"朗县"}]},{"code":"5405","name":"山南市","childs":[{"code":"540502","name":"乃东区"},{"code":"540521","name":"扎囊县"},{"code":"540522","name":"贡嘎县"},{"code":"540523","name":"桑日县"},{"code":"540524","name":"琼结县"},{"code":"540525","name":"曲松县"},{"code":"540526","name":"措美县"},{"code":"540527","name":"洛扎县"},{"code":"540528","name":"加查县"},{"code":"540529","name":"隆子县"},{"code":"540530","name":"错那县"},{"code":"540531","name":"浪卡子县"}]},{"code":"5424","name":"那曲地区","childs":[{"code":"542421","name":"那曲县"},{"code":"542422","name":"嘉黎县"},{"code":"542423","name":"比如县"},{"code":"542424","name":"聂荣县"},{"code":"542425","name":"安多县"},{"code":"542426","name":"申扎县"},{"code":"542427","name":"索县"},{"code":"542428","name":"班戈县"},{"code":"542429","name":"巴青县"},{"code":"542430","name":"尼玛县"},{"code":"542431","name":"双湖县"}]},{"code":"5425","name":"阿里地区","childs":[{"code":"542521","name":"普兰县"},{"code":"542522","name":"札达县"},{"code":"542523","name":"噶尔县"},{"code":"542524","name":"日土县"},{"code":"542525","name":"革吉县"},{"code":"542526","name":"改则县"},{"code":"542527","name":"措勤县"}]}]},{"code":"61","name":"陕西省","childs":[{"code":"6101","name":"西安市","childs":[{"code":"610102","name":"新城区"},{"code":"610103","name":"碑林区"},{"code":"610104","name":"莲湖区"},{"code":"610111","name":"灞桥区"},{"code":"610112","name":"未央区"},{"code":"610113","name":"雁塔区"},{"code":"610114","name":"阎良区"},{"code":"610115","name":"临潼区"},{"code":"610116","name":"长安区"},{"code":"610117","name":"高陵区"},{"code":"610122","name":"蓝田县"},{"code":"610124","name":"周至县"},{"code":"610125","name":"户县"}]},{"code":"6102","name":"铜川市","childs":[{"code":"610202","name":"王益区"},{"code":"610203","name":"印台区"},{"code":"610204","name":"耀州区"},{"code":"610222","name":"宜君县"}]},{"code":"6103","name":"宝鸡市","childs":[{"code":"610302","name":"渭滨区"},{"code":"610303","name":"金台区"},{"code":"610304","name":"陈仓区"},{"code":"610322","name":"凤翔县"},{"code":"610323","name":"岐山县"},{"code":"610324","name":"扶风县"},{"code":"610326","name":"眉县"},{"code":"610327","name":"陇县"},{"code":"610328","name":"千阳县"},{"code":"610329","name":"麟游县"},{"code":"610330","name":"凤县"},{"code":"610331","name":"太白县"}]},{"code":"6104","name":"咸阳市","childs":[{"code":"610402","name":"秦都区"},{"code":"610403","name":"杨陵区"},{"code":"610404","name":"渭城区"},{"code":"610422","name":"三原县"},{"code":"610423","name":"泾阳县"},{"code":"610424","name":"乾县"},{"code":"610425","name":"礼泉县"},{"code":"610426","name":"永寿县"},{"code":"610427","name":"彬县"},{"code":"610428","name":"长武县"},{"code":"610429","name":"旬邑县"},{"code":"610430","name":"淳化县"},{"code":"610431","name":"武功县"},{"code":"610481","name":"兴平市"}]},{"code":"6105","name":"渭南市","childs":[{"code":"610502","name":"临渭区"},{"code":"610503","name":"华州区"},{"code":"610522","name":"潼关县"},{"code":"610523","name":"大荔县"},{"code":"610524","name":"合阳县"},{"code":"610525","name":"澄城县"},{"code":"610526","name":"蒲城县"},{"code":"610527","name":"白水县"},{"code":"610528","name":"富平县"},{"code":"610581","name":"韩城市"},{"code":"610582","name":"华阴市"}]},{"code":"6106","name":"延安市","childs":[{"code":"610602","name":"宝塔区"},{"code":"610603","name":"安塞区"},{"code":"610621","name":"延长县"},{"code":"610622","name":"延川县"},{"code":"610623","name":"子长县"},{"code":"610625","name":"志丹县"},{"code":"610626","name":"吴起县"},{"code":"610627","name":"甘泉县"},{"code":"610628","name":"富县"},{"code":"610629","name":"洛川县"},{"code":"610630","name":"宜川县"},{"code":"610631","name":"黄龙县"},{"code":"610632","name":"黄陵县"}]},{"code":"6107","name":"汉中市","childs":[{"code":"610702","name":"汉台区"},{"code":"610721","name":"南郑县"},{"code":"610722","name":"城固县"},{"code":"610723","name":"洋县"},{"code":"610724","name":"西乡县"},{"code":"610725","name":"勉县"},{"code":"610726","name":"宁强县"},{"code":"610727","name":"略阳县"},{"code":"610728","name":"镇巴县"},{"code":"610729","name":"留坝县"},{"code":"610730","name":"佛坪县"}]},{"code":"6108","name":"榆林市","childs":[{"code":"610802","name":"榆阳区"},{"code":"610803","name":"横山区"},{"code":"610821","name":"神木县"},{"code":"610822","name":"府谷县"},{"code":"610824","name":"靖边县"},{"code":"610825","name":"定边县"},{"code":"610826","name":"绥德县"},{"code":"610827","name":"米脂县"},{"code":"610828","name":"佳县"},{"code":"610829","name":"吴堡县"},{"code":"610830","name":"清涧县"},{"code":"610831","name":"子洲县"}]},{"code":"6109","name":"安康市","childs":[{"code":"610902","name":"汉滨区"},{"code":"610921","name":"汉阴县"},{"code":"610922","name":"石泉县"},{"code":"610923","name":"宁陕县"},{"code":"610924","name":"紫阳县"},{"code":"610925","name":"岚皋县"},{"code":"610926","name":"平利县"},{"code":"610927","name":"镇坪县"},{"code":"610928","name":"旬阳县"},{"code":"610929","name":"白河县"}]},{"code":"6110","name":"商洛市","childs":[{"code":"611002","name":"商州区"},{"code":"611021","name":"洛南县"},{"code":"611022","name":"丹凤县"},{"code":"611023","name":"商南县"},{"code":"611024","name":"山阳县"},{"code":"611025","name":"镇安县"},{"code":"611026","name":"柞水县"}]}]},{"code":"62","name":"甘肃省","childs":[{"code":"6201","name":"兰州市","childs":[{"code":"620102","name":"城关区"},{"code":"620103","name":"七里河区"},{"code":"620104","name":"西固区"},{"code":"620105","name":"安宁区"},{"code":"620111","name":"红古区"},{"code":"620121","name":"永登县"},{"code":"620122","name":"皋兰县"},{"code":"620123","name":"榆中县"}]},{"code":"620201","name":"嘉峪关市","childs":[{"code":"620201100","name":"新城镇"},{"code":"620201101","name":"峪泉镇"},{"code":"620201102","name":"文殊镇"},{"code":"620201401","name":"雄关区"},{"code":"620201402","name":"镜铁区"},{"code":"620201403","name":"长城区"}]},{"code":"6203","name":"金昌市","childs":[{"code":"620302","name":"金川区"},{"code":"620321","name":"永昌县"}]},{"code":"6204","name":"白银市","childs":[{"code":"620402","name":"白银区"},{"code":"620403","name":"平川区"},{"code":"620421","name":"靖远县"},{"code":"620422","name":"会宁县"},{"code":"620423","name":"景泰县"}]},{"code":"6205","name":"天水市","childs":[{"code":"620502","name":"秦州区"},{"code":"620503","name":"麦积区"},{"code":"620521","name":"清水县"},{"code":"620522","name":"秦安县"},{"code":"620523","name":"甘谷县"},{"code":"620524","name":"武山县"},{"code":"620525","name":"张家川回族自治县"}]},{"code":"6206","name":"武威市","childs":[{"code":"620602","name":"凉州区"},{"code":"620621","name":"民勤县"},{"code":"620622","name":"古浪县"},{"code":"620623","name":"天祝藏族自治县"}]},{"code":"6207","name":"张掖市","childs":[{"code":"620702","name":"甘州区"},{"code":"620721","name":"肃南裕固族自治县"},{"code":"620722","name":"民乐县"},{"code":"620723","name":"临泽县"},{"code":"620724","name":"高台县"},{"code":"620725","name":"山丹县"}]},{"code":"6208","name":"平凉市","childs":[{"code":"620802","name":"崆峒区"},{"code":"620821","name":"泾川县"},{"code":"620822","name":"灵台县"},{"code":"620823","name":"崇信县"},{"code":"620824","name":"华亭县"},{"code":"620825","name":"庄浪县"},{"code":"620826","name":"静宁县"}]},{"code":"6209","name":"酒泉市","childs":[{"code":"620902","name":"肃州区"},{"code":"620921","name":"金塔县"},{"code":"620922","name":"瓜州县"},{"code":"620923","name":"肃北蒙古族自治县"},{"code":"620924","name":"阿克塞哈萨克族自治县"},{"code":"620981","name":"玉门市"},{"code":"620982","name":"敦煌市"}]},{"code":"6210","name":"庆阳市","childs":[{"code":"621002","name":"西峰区"},{"code":"621021","name":"庆城县"},{"code":"621022","name":"环县"},{"code":"621023","name":"华池县"},{"code":"621024","name":"合水县"},{"code":"621025","name":"正宁县"},{"code":"621026","name":"宁县"},{"code":"621027","name":"镇原县"}]},{"code":"6211","name":"定西市","childs":[{"code":"621102","name":"安定区"},{"code":"621121","name":"通渭县"},{"code":"621122","name":"陇西县"},{"code":"621123","name":"渭源县"},{"code":"621124","name":"临洮县"},{"code":"621125","name":"漳县"},{"code":"621126","name":"岷县"}]},{"code":"6212","name":"陇南市","childs":[{"code":"621202","name":"武都区"},{"code":"621221","name":"成县"},{"code":"621222","name":"文县"},{"code":"621223","name":"宕昌县"},{"code":"621224","name":"康县"},{"code":"621225","name":"西和县"},{"code":"621226","name":"礼县"},{"code":"621227","name":"徽县"},{"code":"621228","name":"两当县"}]},{"code":"6229","name":"临夏回族自治州","childs":[{"code":"622901","name":"临夏市"},{"code":"622921","name":"临夏县"},{"code":"622922","name":"康乐县"},{"code":"622923","name":"永靖县"},{"code":"622924","name":"广河县"},{"code":"622925","name":"和政县"},{"code":"622926","name":"东乡族自治县"},{"code":"622927","name":"积石山保安族东乡族撒拉族自治县"}]},{"code":"6230","name":"甘南藏族自治州","childs":[{"code":"623001","name":"合作市"},{"code":"623021","name":"临潭县"},{"code":"623022","name":"卓尼县"},{"code":"623023","name":"舟曲县"},{"code":"623024","name":"迭部县"},{"code":"623025","name":"玛曲县"},{"code":"623026","name":"碌曲县"},{"code":"623027","name":"夏河县"}]}]},{"code":"63","name":"青海省","childs":[{"code":"6301","name":"西宁市","childs":[{"code":"630102","name":"城东区"},{"code":"630103","name":"城中区"},{"code":"630104","name":"城西区"},{"code":"630105","name":"城北区"},{"code":"630121","name":"大通回族土族自治县"},{"code":"630122","name":"湟中县"},{"code":"630123","name":"湟源县"}]},{"code":"6302","name":"海东市","childs":[{"code":"630202","name":"乐都区"},{"code":"630203","name":"平安区"},{"code":"630222","name":"民和回族土族自治县"},{"code":"630223","name":"互助土族自治县"},{"code":"630224","name":"化隆回族自治县"},{"code":"630225","name":"循化撒拉族自治县"}]},{"code":"6322","name":"海北藏族自治州","childs":[{"code":"632221","name":"门源回族自治县"},{"code":"632222","name":"祁连县"},{"code":"632223","name":"海晏县"},{"code":"632224","name":"刚察县"}]},{"code":"6323","name":"黄南藏族自治州","childs":[{"code":"632321","name":"同仁县"},{"code":"632322","name":"尖扎县"},{"code":"632323","name":"泽库县"},{"code":"632324","name":"河南蒙古族自治县"}]},{"code":"6325","name":"海南藏族自治州","childs":[{"code":"632521","name":"共和县"},{"code":"632522","name":"同德县"},{"code":"632523","name":"贵德县"},{"code":"632524","name":"兴海县"},{"code":"632525","name":"贵南县"}]},{"code":"6326","name":"果洛藏族自治州","childs":[{"code":"632621","name":"玛沁县"},{"code":"632622","name":"班玛县"},{"code":"632623","name":"甘德县"},{"code":"632624","name":"达日县"},{"code":"632625","name":"久治县"},{"code":"632626","name":"玛多县"}]},{"code":"6327","name":"玉树藏族自治州","childs":[{"code":"632701","name":"玉树市"},{"code":"632722","name":"杂多县"},{"code":"632723","name":"称多县"},{"code":"632724","name":"治多县"},{"code":"632725","name":"囊谦县"},{"code":"632726","name":"曲麻莱县"}]},{"code":"6328","name":"海西蒙古族藏族自治州","childs":[{"code":"632801","name":"格尔木市"},{"code":"632802","name":"德令哈市"},{"code":"632821","name":"乌兰县"},{"code":"632822","name":"都兰县"},{"code":"632823","name":"天峻县"}]}]},{"code":"64","name":"宁夏回族自治区","childs":[{"code":"6401","name":"银川市","childs":[{"code":"640104","name":"兴庆区"},{"code":"640105","name":"西夏区"},{"code":"640106","name":"金凤区"},{"code":"640121","name":"永宁县"},{"code":"640122","name":"贺兰县"},{"code":"640181","name":"灵武市"}]},{"code":"6402","name":"石嘴山市","childs":[{"code":"640202","name":"大武口区"},{"code":"640205","name":"惠农区"},{"code":"640221","name":"平罗县"}]},{"code":"6403","name":"吴忠市","childs":[{"code":"640302","name":"利通区"},{"code":"640303","name":"红寺堡区"},{"code":"640323","name":"盐池县"},{"code":"640324","name":"同心县"},{"code":"640381","name":"青铜峡市"}]},{"code":"6404","name":"固原市","childs":[{"code":"640402","name":"原州区"},{"code":"640422","name":"西吉县"},{"code":"640423","name":"隆德县"},{"code":"640424","name":"泾源县"},{"code":"640425","name":"彭阳县"}]},{"code":"6405","name":"中卫市","childs":[{"code":"640502","name":"沙坡头区"},{"code":"640521","name":"中宁县"},{"code":"640522","name":"海原县"}]}]},{"code":"65","name":"新疆维吾尔自治区","childs":[{"code":"6501","name":"乌鲁木齐市","childs":[{"code":"650102","name":"天山区"},{"code":"650103","name":"沙依巴克区"},{"code":"650104","name":"新市区"},{"code":"650105","name":"水磨沟区"},{"code":"650106","name":"头屯河区"},{"code":"650107","name":"达坂城区"},{"code":"650109","name":"米东区"},{"code":"650121","name":"乌鲁木齐县"}]},{"code":"6502","name":"克拉玛依市","childs":[{"code":"650202","name":"独山子区"},{"code":"650203","name":"克拉玛依区"},{"code":"650204","name":"白碱滩区"},{"code":"650205","name":"乌尔禾区"}]},{"code":"6504","name":"吐鲁番市","childs":[{"code":"650402","name":"高昌区"},{"code":"650421","name":"鄯善县"},{"code":"650422","name":"托克逊县"}]},{"code":"6505","name":"哈密市","childs":[{"code":"650502","name":"伊州区"},{"code":"650521","name":"巴里坤哈萨克自治县"},{"code":"650522","name":"伊吾县"}]},{"code":"6523","name":"昌吉回族自治州","childs":[{"code":"652301","name":"昌吉市"},{"code":"652302","name":"阜康市"},{"code":"652323","name":"呼图壁县"},{"code":"652324","name":"玛纳斯县"},{"code":"652325","name":"奇台县"},{"code":"652327","name":"吉木萨尔县"},{"code":"652328","name":"木垒哈萨克自治县"}]},{"code":"6527","name":"博尔塔拉蒙古自治州","childs":[{"code":"652701","name":"博乐市"},{"code":"652702","name":"阿拉山口市"},{"code":"652722","name":"精河县"},{"code":"652723","name":"温泉县"}]},{"code":"6528","name":"巴音郭楞蒙古自治州","childs":[{"code":"652801","name":"库尔勒市"},{"code":"652822","name":"轮台县"},{"code":"652823","name":"尉犁县"},{"code":"652824","name":"若羌县"},{"code":"652825","name":"且末县"},{"code":"652826","name":"焉耆回族自治县"},{"code":"652827","name":"和静县"},{"code":"652828","name":"和硕县"},{"code":"652829","name":"博湖县"}]},{"code":"6529","name":"阿克苏地区","childs":[{"code":"652901","name":"阿克苏市"},{"code":"652922","name":"温宿县"},{"code":"652923","name":"库车县"},{"code":"652924","name":"沙雅县"},{"code":"652925","name":"新和县"},{"code":"652926","name":"拜城县"},{"code":"652927","name":"乌什县"},{"code":"652928","name":"阿瓦提县"},{"code":"652929","name":"柯坪县"}]},{"code":"6530","name":"克孜勒苏柯尔克孜自治州","childs":[{"code":"653001","name":"阿图什市"},{"code":"653022","name":"阿克陶县"},{"code":"653023","name":"阿合奇县"},{"code":"653024","name":"乌恰县"}]},{"code":"6531","name":"喀什地区","childs":[{"code":"653101","name":"喀什市"},{"code":"653121","name":"疏附县"},{"code":"653122","name":"疏勒县"},{"code":"653123","name":"英吉沙县"},{"code":"653124","name":"泽普县"},{"code":"653125","name":"莎车县"},{"code":"653126","name":"叶城县"},{"code":"653127","name":"麦盖提县"},{"code":"653128","name":"岳普湖县"},{"code":"653129","name":"伽师县"},{"code":"653130","name":"巴楚县"},{"code":"653131","name":"塔什库尔干塔吉克自治县"}]},{"code":"6532","name":"和田地区","childs":[{"code":"653201","name":"和田市"},{"code":"653221","name":"和田县"},{"code":"653222","name":"墨玉县"},{"code":"653223","name":"皮山县"},{"code":"653224","name":"洛浦县"},{"code":"653225","name":"策勒县"},{"code":"653226","name":"于田县"},{"code":"653227","name":"民丰县"}]},{"code":"6540","name":"伊犁哈萨克自治州","childs":[{"code":"654002","name":"伊宁市"},{"code":"654003","name":"奎屯市"},{"code":"654004","name":"霍尔果斯市"},{"code":"654021","name":"伊宁县"},{"code":"654022","name":"察布查尔锡伯自治县"},{"code":"654023","name":"霍城县"},{"code":"654024","name":"巩留县"},{"code":"654025","name":"新源县"},{"code":"654026","name":"昭苏县"},{"code":"654027","name":"特克斯县"},{"code":"654028","name":"尼勒克县"}]},{"code":"6542","name":"塔城地区","childs":[{"code":"654201","name":"塔城市"},{"code":"654202","name":"乌苏市"},{"code":"654221","name":"额敏县"},{"code":"654223","name":"沙湾县"},{"code":"654224","name":"托里县"},{"code":"654225","name":"裕民县"},{"code":"654226","name":"和布克赛尔蒙古自治县"}]},{"code":"6543","name":"阿勒泰地区","childs":[{"code":"654301","name":"阿勒泰市"},{"code":"654321","name":"布尔津县"},{"code":"654322","name":"富蕴县"},{"code":"654323","name":"福海县"},{"code":"654324","name":"哈巴河县"},{"code":"654325","name":"青河县"},{"code":"654326","name":"吉木乃县"}]},{"code":"6590","name":"自治区直辖县级行政区划","childs":[{"code":"659001","name":"石河子市"},{"code":"659002","name":"阿拉尔市"},{"code":"659003","name":"图木舒克市"},{"code":"659004","name":"五家渠市"},{"code":"659006","name":"铁门关市"}]}]},{"code":"71","name":"台湾省","childs":[]},{"code":"81","name":"香港特别行政区","childs":[]},{"code":"82","name":"澳门特别行政区","childs":[]}]
\ No newline at end of file
diff --git a/components/securityStaffs/securityStaffs.vue b/components/securityStaffs/securityStaffs.vue
deleted file mode 100644
index 1b793fa..0000000
--- a/components/securityStaffs/securityStaffs.vue
+++ /dev/null
@@ -1,38 +0,0 @@
-<template>
-	<view class="securityStaffs">
-		<view class="container u-skeleton">
-			<view style="margin: 20px 0">
-				<view v-for="(item,key,index) in datas" :key="index" class="lists">
-					<!--u-skeleton-rect 绘制矩形-->
-					<text class="u-skeleton-rect">{{key}}:{{item}}</text>
-				</view>
-			</view>
-		</view>
-		<!--引用组件-->
-		<u-skeleton :loading="loading" :animation="true" bgColor="#FFF"></u-skeleton>
-	</view>
-</template>
-
-<script>
-	export default {
-		name: "securityStaffs",
-		props: ['datas'],
-		data() {
-			return {
-				loading: true,
-			};
-		},
-		watch:{
-			datas(){
-				console.log(this.datas);
-				this.loading = false;
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-.container {
-		padding: 20rpx 60rpx;
-	}
-</style>
diff --git a/components/seeImges/seeImges.vue b/components/seeImges/seeImges.vue
deleted file mode 100644
index 1817d7f..0000000
--- a/components/seeImges/seeImges.vue
+++ /dev/null
@@ -1,168 +0,0 @@
-<template>
-	<view class="seeImgs" v-if="imgs.length != 0 || videos.length != 0 ">
-		<view class="imgs" v-for="(item, index) in imgs" :key="index" v-if="type == 'imgs'">
-			<image :src="item.src" mode="scaleToFill" @click="previewImage(index)"></image>
-			<view class="close" @click="delelteImg(index)">
-				X
-			</view>
-		</view>
-		<view class="videos" v-for="(item, index) in videos" :key="index" v-if="type == 'videos'">
-
-			<!-- <image :src="item.src" mode="scaleToFill" @click="previewImage(index)"></image> -->
-			<video :src="item.src" controls></video>
-
-			<view class="close" @click="deleltevideo(index)">
-				X
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	export default {
-		props: ['imgs', 'videos', 'type'],
-		// props: [{
-		// 	imgs:{
-		// 		type: Array,
-		// 		default: []
-		// 	},
-		// 	videos:{
-		// 		type: Object,
-		// 		default: []
-		// 	},
-		// 	type:{
-		// 		type: String,
-		// 		default: null
-		// 	},
-		// }],
-		data() {
-			return {
-
-			}
-		},
-		methods: {
-			//图片删除
-			delelteImg(index) {
-				var that = this;
-				wx.showModal({
-					title: '提示',
-					content: '确定要删除该照片吗?',
-					cancelText: '取消',
-					confirmText: '确定',
-					success: res => {
-						if (res.confirm) {
-							// console.log(index)
-							// that.imgs.splice(index, 1);
-							that.$emit('del', index);
-						}
-					}
-				});
-			},
-
-			//图片预览
-			previewImage(index) {
-				let photoList = this.imgs.map(item => {
-					return item.src;
-				});
-				// console.log(index)
-				// console.log(photoList)
-				wx.previewImage({
-					current: photoList[index],
-					urls: photoList
-				});
-			},
-
-			//视频删除
-			deleltevideo(index) {
-				var that = this;
-				wx.showModal({
-					title: '提示',
-					content: '确定要删除该视频吗?',
-					cancelText: '取消',
-					confirmText: '确定',
-					success: res => {
-						if (res.confirm) {
-							// console.log(index)
-							// that.imgs.splice(index, 1);
-							that.$emit('del', index);
-						}
-					}
-				});
-			},
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	.seeImgs {
-		width: auto;
-		height: auto;
-		// border: 1px solid #0000FF;
-		white-space: pre-wrap;
-		box-sizing: border-box;
-		overflow: auto;
-		// display: flex;
-		// align-items: center;
-		// position: absolute;
-		// right: 0;
-		// z-index: 110;
-
-		.imgs {
-			display: inline-block;
-			width: 4rem;
-			height: 4rem;
-			padding: 0 0.1rem 0 0.1rem;
-			margin: 0 0.3rem 0 0.3rem;
-			// border-right: 1px solid rgba($color: #000000, $alpha: 0.5);
-			position: relative;
-			// border: 1px solid #0000FF;
-			top: 0.3rem;
-
-			image {
-				width: 100%;
-				height: 100%;
-			}
-
-
-		}
-
-		.videos {
-			display: inline-block;
-			padding-top: 0.5rem;
-			width: 4rem;
-			height: 4rem;
-			padding: 0 0.2rem 0 0.2rem;
-			margin: 0 0.2rem 0 0.2rem;
-			// border-right: 1px solid rgba($color: #000000, $alpha: 0.5);
-			position: relative;
-			// border: 1px solid #0000FF;
-			top: 0.22rem;
-
-			video {
-				width: 100%;
-				height: 100%;
-			}
-		}
-	}
-
-	.close {
-		background-color: #fff;
-		width: 0.9rem;
-		height: 0.9rem;
-		text-align: center;
-		line-height: 0.8rem;
-		position: absolute;
-		top: 0.1rem;
-		right: 0.2rem;
-		font-size: 0.5rem;
-		color: red;
-		border-radius: 1.5rem;
-		border: 1px solid red;
-		z-index: 111;
-
-		&:hover {
-			color: red;
-			border: 1px solid red;
-		}
-	}
-</style>
diff --git a/components/squareBut/squareBut.vue b/components/squareBut/squareBut.vue
deleted file mode 100644
index c162d9d..0000000
--- a/components/squareBut/squareBut.vue
+++ /dev/null
@@ -1,61 +0,0 @@
-<template>
-	<view class="squareBut">
-		<view class="once" v-for="(item,index) in data" :key="index" @click="goHref(index)">
-			<view class="imgs">
-				<image :src="item.imgSrc" mode=""></image>
-			</view>
-			<view class="title">
-				{{item.title}}
-			</view>
-		</view>
-		<view style="clear:left"></view>
-	</view>
-</template>
-
-<script>
-	export default {
-		props: ['data'],
-		methods:{
-			goHref(index){
-				// console.log(this.data[index].goHref)
-				wx.navigateTo({
-					url:this.data[index].goHref
-				})
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	.squareBut {
-		width: 95%;
-		margin: 0 auto;
-		border: 1px solid rgba($color: #000000, $alpha: 0.03);
-		border-radius: 1rem;
-		.once {
-			width: 6rem;
-			height: 6rem;
-			border-right: 1px solid rgba($color: #000000, $alpha: 0.3);
-			display: flex;
-			align-items: center;
-			justify-content: center;
-			flex-direction: column;
-			border-radius: 1rem;
-			box-shadow: 0.1rem 0.1rem 0.5rem 0.01rem #dadada;
-			float: left;
-			margin: 0.65rem;
-
-			.imgs {
-				width: 4rem;
-				height: 4rem;
-
-				image {
-					width: 100%;
-					height: 100%;
-				}
-			}
-
-			.title {}
-		}
-	}
-</style>
diff --git a/components/submit/emoji/emoji.vue b/components/submit/emoji/emoji.vue
deleted file mode 100644
index f9970d0..0000000
--- a/components/submit/emoji/emoji.vue
+++ /dev/null
@@ -1,75 +0,0 @@
-<template>
-	<view class="emoji"
-				:style="{height:height + 'px'}">
-		<view class="emoji-line"
-					v-for="(line, i) in emoji"
-					:key="i">
-			<view class="emoji-line-item"
-						v-for="(item, index) in line"
-						:key="index"
-						@tap="clickEmoji(item)">
-				{{ item }}		
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	export default {
-		props:{
-			height: {
-				type: Number,
-				default: 260
-			}
-		},
-		data() {
-			return {
-				emoji:[
-					['😀', '😁', '😂', '🤣', '😃', '😅'],
-					['😆', '😉', '😊', '😋', '😎', '😍'],
-					['😘', '😗', '😙', '😚', '🙂', '🤗'],
-					['🤔', '😐', '😑', '😶', '🙄', '😏'],
-					['😣', '😥', '😮', '🤐', '😯', '😪'],
-					['😫', '😴', '😌', '😛', '😜', '😝'],
-					['🤤', '😓', '😔', '😕', '🙃', '🤑'],
-					['😲', '🙁', '😖', '😞', '😟', '😤'],
-					['😢', '😭', '😦', '😧', '😨', '😩'],
-					['😬', '😱', '😳', '😵', '😳', '😵'],
-					['💼', '🌂', '💍', '💄', '⛑', '🎓'],
-					['👒', '🎩', '👑', '👢', '👡', '👠'],
-					['👟', '👞', '👝', '👜', '👛', '👚'],
-					['🍇', '🍈', '🍉', '🍊', '🍌', '🍒'],
-					['☠', '🛀', '💣', '⏰', '🎎', '📻'],
-					['💘', '❤', '💔', '💢', '💮', '🕜'],
-				]
-			};
-		},
-		methods: {
-			clickEmoji(e) {
-				this.$emit('emotion', e)
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	.emoji{
-		width: 100%;
-		padding: 16rpx 10rpx 180rpx 10rpx;
-		box-sizing: border-box;
-		overflow: hidden;
-		overflow-y: auto;
-		
-		.emoji-line {
-			display: flex;
-			
-			.emoji-line-item {
-				flex: 1;
-				text-align: center;
-				font-size: 52rpx;
-				line-height: 80rpx;
-			}
-		}
-	}
-
-</style>
diff --git a/components/submit/submit.vue b/components/submit/submit.vue
deleted file mode 100644
index 583d649..0000000
--- a/components/submit/submit.vue
+++ /dev/null
@@ -1,502 +0,0 @@
-<template>
-	<view>
-		<view class="submit">
-			<view class="submit-chat">
-				<view class="bt-img">
-					<image :src="audio" mode="" @tap="records" />
-				</view>
-				<textarea auto-height="true" class="chat-send btn" :class="{displaynone: isrecord}" @input="inputs"
-					v-model="msg" @focus="focus" />
-				<view class="record btn" :class="{displaynone: !isrecord}" @touchstart="touchstart" @touchend="touchend"
-					@touchmove="touchmove">
-					按住说话
-				</view>
-				<view class="bt-img">
-					<image src="../../static/images/chatroom/emoji.png" mode="" @tap="emoji" />
-				</view>
-				<view class="bt-img">
-					<image src="../../static/images/chatroom/add.png" mode="" @tap="more" />
-				</view>
-			</view>
-			<view class="emoji" :class="{ displaynone: !isemoji }">
-				<view class="emoji-send">
-					<view class="emoji-send-del" @tap="emojiBack">
-						删除
-					</view>
-					<view class="emoji-send-bt" @tap="emojiSend">
-						发送
-					</view>
-				</view>
-				<emoji @emotion="emotion" :height="260" />
-			</view>
-
-			<view class="more" :class="{ displaynone: !ismore }">
-				<view class="more-list" @tap="sendImg('album')">
-					<image src="../../static/images/chatroom/photo.png" />
-					<text class="more-list-title">图片</text>
-				</view>
-				<view class="more-list" @tap="sendImg('camera')">
-					<image src="../../static/images/chatroom/camera.png" />
-					<text class="more-list-title">拍照</text>
-				</view>
-				<view class="more-list">
-					<image src="../../static/images/chatroom/file.png" />
-					<text class="more-list-title">文件</text>
-				</view>
-				<view class="more-list" @tap="chooseLocation()">
-					<image src="../../static/images/chatroom/location.png" />
-					<text class="more-list-title">位置</text>
-				</view>
-				<view class="more-list" @click="openAudio('Mains')">
-					<image src="../../static/images/chatroom/phone.png" />
-					<text class="more-list-title">语音</text>
-				</view>
-				<view class="more-list" @click="openVideo('Mains')">
-					<image src="../../static/images/chatroom/vedio.png" />
-					<text class="more-list-title">视频</text>
-				</view>
-			</view>
-		</view>
-
-		<!-- 录制语音遮罩 -->
-		<view class="voice-bg" :class="{displaynone: !voicebg}">
-			<view class="voice-bg-len">
-				<view class="voice-bg-time" :style="{width:vlength/0.6 + '%'}">
-					{{ vlength }} "
-				</view>
-			</view>
-			<view class="voice-del">上滑取消取消录音</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	import emoji from './emoji/emoji.vue'
-
-	const recorderManager = uni.getRecorderManager()
-
-	export default {
-		props: ['names','callname'],
-		data() {
-			return {
-				isrecord: false,
-				isemoji: false,
-				ismore: false,
-				voicebg: false,
-				msg: '',
-				timer: '',
-				vlength: 0,
-				pageY: 0,
-				audio: "../../static/start-audio.png"
-			};
-		},
-		mounted() {
-			console.log(this.callname,1111)
-		},
-		components: {
-			emoji,
-		},
-		methods: {
-			// 获取高度
-			_getElementHeight() {
-				const query = uni.createSelectorQuery().in(this);
-				query.select('.submit').boundingClientRect(data => {
-					this.$emit('heights', data.height)
-				}).exec();
-			},
-			// 点击切换音频
-			records() {
-				if (this.audio == "../../static/start-audio.png") {
-					this.audio = "../../static/start-input.png"
-				} else {
-					this.audio = "../../static/start-audio.png"
-				}
-				this.isrecord = !this.isrecord
-				this.isemoji = false
-				this.ismore = false
-				
-				setTimeout(() => {
-					this._getElementHeight()
-				}, 10)
-				
-			},
-			// 点击弹出表情
-			emoji() {
-				this.isemoji = !this.isemoji
-				this.ismore = false
-				this.isrecord = false
-				setTimeout(() => {
-					this._getElementHeight()
-				}, 10)
-			},
-			// 点击弹出更多
-			more() {
-				this.ismore = !this.ismore
-				this.isemoji = false
-				this.isrecord = false
-				setTimeout(() => {
-					this._getElementHeight()
-				}, 10)
-			},
-			// 接收表情
-			emotion(e) {
-				this.msg = this.msg + e
-			},
-			// 文字发送
-			inputs(e) {
-				let chatm = e.detail.value
-				let pos = chatm.indexOf('\n')
-				if (pos != -1 && chatm.length > 1) {
-					this.send(this.msg, 0)
-				}
-				setTimeout(() => {
-					this._getElementHeight()
-				}, 10)
-			},
-			// 输入框聚焦
-			focus() {
-				this.isemoji = false;
-				this.ismore = false;
-				setTimeout(() => {
-					this._getElementHeight()
-				}, 10)
-			},
-			// 表情内发送
-			emojiSend() {
-				if (this.msg.length > 0) {
-					this.send(this.msg, 0)
-				}
-				setTimeout(() => {
-					this._getElementHeight()
-				}, 10)
-			},
-			// 表情退格
-			emojiBack() {
-				if (this.msg.length > 0) {
-					this.msg = this.msg.substring(0, this.msg.length - 1)
-				}
-			},
-			// 发送消息
-			send(msg, type) {
-
-				let data = {
-					message: msg,
-					types: type
-				}
-				
-				this.$emit('inputs', data)
-				setTimeout(() => {
-					this.msg = ''
-				}, 0)
-				setTimeout(() => {
-					this._getElementHeight()
-				}, 10)
-			},
-			// 发送图片
-			sendImg(e) {
-				let count = 9;
-				if (e == 'album') {
-					count = 9
-				} else {
-					count = 1
-				}
-				uni.chooseImage({
-					count: count,
-					sizeType: ['original', 'comperssed'],
-					sourceType: [e],
-					success: (res) => {
-						const filePath = res.tempFilePaths
-						for (let i in filePath) {
-							this.send(filePath[i], 1)
-						}
-					}
-				})
-				setTimeout(() => {
-					this._getElementHeight()
-				}, 10)
-			},
-			// 音频处理
-			touchstart(e) {
-				// 此时的Y轴位置
-				this.pageY = e.changedTouches[0].pageY
-				let startIndex = 1
-				this.voicebg = true
-				this.timer = setInterval(() => {
-					this.vlength = startIndex
-					startIndex++
-					if (startIndex > 60) {
-						clearInterval(this.timer)
-						this.touchend();
-					}
-				}, 1000)
-				recorderManager.start()
-			},
-			touchend() {
-				clearInterval(this.timer)
-				recorderManager.stop()
-				recorderManager.onStop((res) => {
-					let data = {
-						voice: res.tempFilePath,
-						time: this.vlength
-					}
-					if (this.voicebg) {
-						this.send(data, 2);
-					}
-					this.vlength = 0
-					this.voicebg = false
-				})
-			},
-			touchmove(e) {
-				if (this.pageY - e.changedTouches[0].pageY > 200) {
-					this.voicebg = false
-				}
-			},
-			// 定位
-			chooseLocation() {
-				uni.chooseLocation({
-					success: (res) => {
-						let data = {
-							name: res.name,
-							address: res.address,
-							latitude: res.latitude,
-							longitude: res.longitude
-						}
-						console.log('位置名称' + res.name)
-						console.log('详细地址' + res.address)
-						console.log('维度' + res.latitude)
-						console.log('经度' + res.longitude)
-					}
-				})
-			},
-			//开始音频
-			openAudio(val) { //Mains
-				// console.log(this.names)
-				// var socketOpen = false;
-
-
-				uni.navigateTo({
-					url: '../videoCall/videoCall?state=' + val + '&type=audio'
-				});
-			},
-			//接收音频
-			receiveAudio(val) { //Receiver
-				uni.navigateTo({
-					url: '../videoCall/videoCall?state=' + val + '&type=audio'
-				});
-			},
-			//开始视频
-			openVideo(val) { //Mains
-				// uni.onSocketOpen(function(res) {
-				// 	// socketOpen = true;
-				// 	console.log('持续连接成功')
-				// 	sendSocketMessage();
-				// });
-
-				// function sendSocketMessage() {
-				// 	var data = {
-				// 		name: this.$store.state.puserName,
-				// 		id: this.names[1],
-				// 		// id: state.puserID,
-				// 		type: 'video'
-				// 	}
-				// 	// if (socketOpen) {
-				// 	uni.sendSocketMessage({
-				// 		data: JSON.stringify(data)
-				// 	});
-				// 	// }
-				// }
-				var url = '../videoCall/videoCall?state=' + val + '&type=video' + '&myname=' + this.names[0] +
-						'&toname=' + this.names[1] + '&callname=' + this.callname
-			console.log(url)
-				uni.navigateTo({
-					url: url
-				});
-			},
-			//接收视频
-			// receiveVideo(val, room) { //Receiver
-			// 	uni.navigateTo({
-			// 		url: '../videoCall/videoCall?state=' + val + '&type=video' + '&room=' + room
-			// 	});
-			// }
-		},
-		mounted() {
-			// uni.onSocketMessage(function(res) {
-			// 	console.log(res.data)
-			// 	if (res.data.type == 'video') {
-			// 		this.receiveVideo('Receiver', );
-			// 	}
-			// 	// console.log('收到服务器内容:' + res.data);
-			// });
-		}
-	}
-</script>
-
-<style lang="scss">
-	.submit {
-		background-color: rgba(244, 244, 244, .96);
-		border-top: 1px solid $uni-border-color;
-		width: 100%;
-		position: fixed;
-		bottom: 0;
-		left: 0;
-		z-index: 1002;
-		padding-bottom: env(safe-area-inset-bottom);
-	}
-
-	.submit-chat {
-		width: 100%;
-		display: flex;
-		align-items: flex-end;
-		box-sizing: border-box;
-		padding: 14rpx 10rpx;
-
-		image {
-			width: 56rpx;
-			height: 56rpx;
-			margin: 0 10rpx;
-			flex: auto;
-		}
-
-		.btn {
-			flex: auto;
-			background-color: #fff;
-			border-radius: 10rpx;
-			padding: 20rpx;
-			max-height: 160rpx;
-			margin: 0 10rpx;
-		}
-
-		.chat-send {
-			line-height: 44rpx !important;
-		}
-
-		.record {
-			text-align: center;
-			font-size: $uni-font-size-lg;
-			color: $uni-text-color-grey;
-			font-weight: bold;
-		}
-
-	}
-
-	.displaynone {
-		display: none;
-	}
-
-	.emoji {
-		width: 100%;
-		height: 460rpx;
-		background: rgba(236, 237, 238, 1);
-		box-shadow: 0 -1rpx 0 0 rgba(0, 0, 0, 1);
-
-		.emoji-send {
-			width: 260rpx;
-			height: 104rpx;
-			background: rgba(236, 237, 238, .9);
-			position: fixed;
-			bottom: env(safe-area-inset-bottom);
-			right: 0;
-			padding-top: 24rpx;
-			display: flex;
-
-			.emoji-send-bt {
-				flex: 1;
-				height: 80rpx;
-				margin: 0 32rpx 0 20rpx;
-				background: rgba(255, 228, 49, 1);
-				border-radius: 240rpx;
-				font-size: 32rpx;
-				text-align: center;
-				line-height: 80rpx;
-				border-radius: 12rpx;
-			}
-
-			.emoji-send-del {
-				flex: 1;
-				height: 80rpx;
-				background: #fff;
-				border-radius: 240rpx;
-				font-size: 32rpx;
-				text-align: center;
-				line-height: 80rpx;
-				border-radius: 12rpx;
-				margin-left: 24rpx;
-			}
-		}
-	}
-
-	.more {
-		width: 100%;
-		height: 436rpx;
-		background: rgba(236, 237, 238, 1);
-		box-shadow: rgba(0, 0, 0, .1);
-		bottom: env(safe-area-inset-bottom);
-		padding: 0 20rpx;
-		box-sizing: border-box;
-
-		.more-list {
-			width: 25%;
-			text-align: center;
-			float: left;
-			margin-top: 32rpx;
-
-			image {
-				width: 72rpx;
-				height: 72rpx;
-				padding: 24rpx;
-				background: rgba(255, 255, 255, 1);
-				border-radius: 24rpx;
-			}
-
-			.more-list-title {
-				color: rgba(30, 40, 50, .5);
-				line-height: 34rpx;
-				font-size: 24rpx;
-				display: block;
-			}
-		}
-	}
-
-	.voice-bg {
-		height: 100%;
-		width: 100%;
-		background: rgba(0, 0, 0, .3);
-		position: fixed;
-		top: 0;
-		bottom: 0;
-		z-index: 1001;
-		// position: relative;
-
-		.voice-bg-len {
-			height: 84rpx;
-			width: 600rpx;
-			position: absolute;
-			top: 0;
-			left: 0;
-			bottom: 0;
-			right: 0;
-			margin: auto;
-			background: rgba(255, 255, 255, .2);
-			border-radius: 42rpx;
-			text-align: center;
-
-			.voice-bg-time {
-				display: inline-block;
-				line-height: 84rpx;
-				background-color: $uni-color-primary;
-				border-radius: 42rpx;
-				min-width: 120rpx;
-			}
-		}
-
-		.voice-del {
-			position: absolute;
-			bottom: 148rpx;
-			margin-bottom: env(safe-area-inset-bottom);
-			width: 100%;
-			text-align: center;
-			color: #fff;
-			font-size: $uni-font-size-base;
-		}
-	}
-</style>
diff --git a/components/uni-load-more/uni-load-more.vue b/components/uni-load-more/uni-load-more.vue
deleted file mode 100644
index a53a843..0000000
--- a/components/uni-load-more/uni-load-more.vue
+++ /dev/null
@@ -1,362 +0,0 @@
-<template>
-	<view class="uni-load-more" @click="onClick">
-		<!-- #ifdef APP-NVUE -->
-		<loading-indicator v-if="!webviewHide && status === 'loading' && showIcon" :style="{color: color,width:iconSize+'px',height:iconSize+'px'}" :animating="true" class="uni-load-more__img uni-load-more__img--nvue"></loading-indicator>
-		<!-- #endif -->
-		<!-- #ifdef H5 -->
-		<svg width="24" height="24" viewBox="25 25 50 50" v-if="!webviewHide && (iconType==='circle' || iconType==='auto' && platform === 'android') && status === 'loading' && showIcon"
-		:style="{width:iconSize+'px',height:iconSize+'px'}" class="uni-load-more__img uni-load-more__img--android-H5">
-			<circle cx="50" cy="50" r="20" fill="none" :style="{color:color}" :stroke-width="3"></circle>
-		</svg>
-		<!-- #endif -->
-		<!-- #ifndef APP-NVUE || H5 -->
-		<view v-if="!webviewHide && (iconType==='circle' || iconType==='auto' && platform === 'android') && status === 'loading' && showIcon"
-		:style="{width:iconSize+'px',height:iconSize+'px'}" class="uni-load-more__img uni-load-more__img--android-MP">
-			<view :style="{borderTopColor:color,borderTopWidth:iconSize/12}"></view>
-			<view :style="{borderTopColor:color,borderTopWidth:iconSize/12}"></view>
-			<view :style="{borderTopColor:color,borderTopWidth:iconSize/12}"></view>
-		</view>
-		<!-- #endif -->
-		<!-- #ifndef APP-NVUE -->
-		<view v-else-if="!webviewHide && status === 'loading' && showIcon" :style="{width:iconSize+'px',height:iconSize+'px'}" class="uni-load-more__img uni-load-more__img--ios-H5">
-			<image src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QzlBMzU3OTlEOUM0MTFFOUI0NTZDNERBQURBQzI4RkUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QzlBMzU3OUFEOUM0MTFFOUI0NTZDNERBQURBQzI4RkUiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpDOUEzNTc5N0Q5QzQxMUU5QjQ1NkM0REFBREFDMjhGRSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpDOUEzNTc5OEQ5QzQxMUU5QjQ1NkM0REFBREFDMjhGRSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pt+ALSwAAA6CSURBVHja1FsLkFZVHb98LM+F5bHL8khA1iSeiyQBCRM+YGqKUnnJTDLGI0BGZlKDIU2MMglUiDApEZvSsZnQtBRJtKwQNKQMFYeRDR10WOLd8ljYXdh+v8v5fR3Od+797t1dnOnO/Ofce77z+J//+b/P+ZqtXbs2sJ9MJhNUV1cHJ06cCJo3bx7EPc2aNcvpy7pWrVoF+/fvDyoqKoI2bdoE9fX1F7TjN8a+EXBn/fkfvw942Tf+wYMHg9mzZwfjxo0LDhw4EPa1x2MbFw/fOGfPng1qa2tzcCkILsLDydq2bRsunpOTMM7TD/W/tZDZhPdeKD+yGxHhdu3aBV27dg3OnDlzMVANMheLAO3btw8KCwuDmpoaX5OxbgUIMEq7K8IcPnw4KCsrC/r37x8cP378/4cAXAB3vqSkJMuiDhTkw+XcuXNhOWbMmKBly5YhUT8xArhyFvP0BfwRsAuwxJZJsm/nzp2DTp06he/OU+cZ64K6o0ePBkOHDg2GDx8e6gEbJ5Q/NHNuAJQ1hgBeHUDlR7nVTkY8rQAvAi4z34vR/mPs1FoRsaCgIJThI0eOBC1atEiFGGV+5MiRoS45efJkqFjJFXV1dQuA012m2WcwTw98fy6CqBdsaiIO4CScrGPHjvk4odhavPquRtFWXEC25VgkREKOCh/qDSq+vn37htzD/mZTOmOc5U7zKzBPEedygWshcDyWvs30igAbU+6oyMgJBCFhwQE0fccxN60Ay9iebbjoDh06hMowjQxT4fXq1SskArmHZpkArvixp/kWzHdMeArExSJEaiXIjjRjRJ4DaAGWpibLzXN3Fm1vA5teBgh3j1Rv3bp1YgKwPdmf2p9zcyNYYgPKMfY0T5f5nNYdw158nJ8QawW4CLKwiOBSEgO/hok2eBydR+3dYH+PLxA5J8Vv0KBBwenTp0P2JWAx6+yFEBfs8lMY+y0SWMBNI9E4ThKi58VKTg3FQZS1RQF1cz27eC0QHMu+3E0SkUowjhVt5VdaWhp07949ZHv2Qd1EjDXM2cla1M0nl3GxAs3J9yREzyTdFVKVFOaE9qRA8GM0WebRuo9JGZKA7Mv2SeS/Z8+eoQ9BArMfFrLGo6jvxbhHbJZnKX2Rzz1O7QhJJ9Cs2ZMaWIyq/zhdeqPNfIoHd58clIQD+JSXl4dKlyIAuBdVXZwFVWKspSSoxE++h8x4k3uCnEhE4I5KwRiFWGOU0QWKiCYLbdoRMRKAu2kQ9vkfLU6dOhX06NEjlH+yMRZSinnuyWnYosVcji8CEA/6Cg2JF+IIUBqnGKUTCNwtwBN4f89RiK1R96DEgO2o0NDmtEdvVFdVVYV+P3UAPUEs6GFwV3PHmXkD4vh74iDFJysVI/MlaQhwKeBNTLYX5VuA8T4/gZxA4MRGFxDB6R7OmYPfyykGRJbyie+XnGYnQIC/coH9+vULiYrxrkL9ZA9+0ykaHIfEpM7ge8TiJ2CsHYwyMfafAF1yCGBHYIbCVDjDjKt7BeB51D+LgQa6OkG7IDYEEtvQ7lnXLKLtLdLuJBpE4gPUXcW2+PkZwOex+4cGDhwYDBkyRL7/HFcEwUGPo/8uWRUpYnfxGHco8HkewLHLyYmAawAPuIFZxhOpDfJQ8gbUv41yORAptMWBNr6oqMhWird5+u+iHmBb2nhjDV7HWBNQTgK8y11l5NetWzc5ULscAtSj7nbNI0skhWeUZCc0W4nyH/jO4Vz0u1IeYhbk4AiwM6tjxIWByHsoZ9qcIBPJd/y+DwPfBESOmCa/QF3WiZHucLlEDpNxcNhmheEOPgdQNx6/VZFQzFZ5TN08AHXQt2Ii3EdyFuUsPtTcGPhW5iMiCNELvz+Gdn9huG4HUJaW/w3g0wxV0XaG7arG2WeKiUWYM4Y7GO5ezshTARbbWGw/DvXkpp/ivVvE0JVoMxN4rpGzJMhE5Pl+xlATsDIqikP9F9D2z3h9nOksEUFhK+qO4rcPkoalMQ/HqJLIyb3F3JdjrCcw1yZ8joyJLR5gCo54etlag7qIoeNh1N1BRYj3DTFJ0elotxPlVzkGuYAmL0VSJVGAJA41c4Z6A3BzTLfn0HYwYKEI6CUAMzZEWvLsIcQOo1AmmyyM72nHJCfYsogflGV6jEk9vyQZXSuq6w4c16NsGcGZbwOPr+H1RkOk2LEzjNepxQkihHSCQ4ynAYNRx2zMKV92CQMWqj8J0BRE8EShxRFN6YrfCRhC0x3r/Zm4IbQCcmJoV0kMamllccR6FjHqUC5F2R/wS2dcymOlfAKOS4KmzQb5cpNC2MC7JhVn5wjXoJ44rYhLh8n0eXOCorJxa7POjbSlCGVczr34/RsAmrcvo9s+wGp3tzVhntxiXiJ4nvEYb4FJkf0O8HocAePmLvCxnL0AORraVekJk6TYjDabRVXfRE2lCN1h6ZQRN1+InUbsCpKwoBZHh0dODN9JBCUffItXxEavTQkUtnfTVAplCWL3JISz29h4NjotnuSsQKJCk8dF+kJR6RARjrqFVmfPnj3ZbK8cIJ0msd6jgHPGtfVTQ8VLmlvh4mct9sobRmPic0DyDQQnx/NlfYUgyz59+oScsH379pAwXABD32nTpoUHIToESeI5mnbE/UqDdyLcafEBf2MCqgC7NwxIbMREJQ0g4D4sfJwnD+AmRrII05cfMWJE+L1169bQr+fip06dGp4oJ83lmYd5wj/EmMa4TaHivo4EeCguYZBnkB5g2aWA69OIEnUHOaGysjIYMGBAMGnSpODYsWPZwCpFmm4lNq+4gSLQA7jcX8DwtjEyRC8wjabnXEx9kfWnTJkSJkAo90xpJVV+FmcVNeYAF5zWngS4C4O91MBxmAv8blLEpbjI5sz9MTdAhcgkCT1RO8mZkAjfiYpTEvStAS53Uw1vAiUGgZ3GpuQEYvoiBqlIan7kSDHnTwJQFNiPu0+5VxCVYhcZIjNrdXUDdp+Eq5AZ3Gkg8QAyVZRZIk4Tl4QAbF9cXJxNYZMAtAokgs4BrNxEpCtteXg7DDTMDKYNSuQdKsnJBek7HxewvxaosWxLYXtw+cJp18217wql4aKCfBNoEu0O5VU+PhctJ0YeXD4C6JQpyrlpSLTojpGGGN5YwNziChdIZLk4lvLcFJ9jMX3QdiImY9bmGQU+TRUL5CHITTRlgF8D9ouD1MfmLoEPl5xokIumZ2cfgMpHt47IW9N64Hsh7wQYYjyIugWuF5fCqYncXRd5vPMWyizzvhi/32+nvG0dZc9vR6fZOu0md5e+uC408FvKSIOZwXlGvxPv95izA2Vtvg1xKFWARI+vMX66HUhpQQb643uW1bSjuTWyw2SBvDrBvjFic1eGGlz5esq3ko9uSIlBRqPuFcCv8F4WIcN12nVaBd0SaYwI6PDDImR11JkqgHcPmQssjxIn6bUshygDFJUTxPMpHk+jfjPgupgdnYV2R/g7xSjtpah8RJBewhwf0gGK6XI92u4wXFEU40afJ4DN4h5LcAd+40HI3JgJecuT0c062W0i2hQJUTcxan3/CMW1PF2K6bbA+Daz4xRs1D3Br1Cm0OihKCqizW78/nXAF/G5TXrEcVzaNMH6CyMswqsAHqDyDLEyou8lwOXnKF8DjI6KjV3KzMBiXkDH8ij/H214J5A596ekrZ3F0zXlWeL7+P5eUrNo3/QwC15uxthuzidy7DzKRwEDaAViiDgKbTbz7CJnzo0bN7pIfIiid8SuPwn25o3QCmpnyjlZkyxPP8EomCJzrGb7GJMx7tNsq4MT2xMUYaiErZOluTzKsnz3gwCeCZyVRZJfYplNEokEjwrPtxlxjeYAk+F1F74VAzPxQRNYYdtpOUvWs8J1sGhBJMNsb7igN8plJs1eSmLIhLKE4rvaCX27gOhLpLOsIzJ7qn/i+wZzcvSOZ23/du8TZjwV8zHIXoP4R3ifBxiFz1dcVpa3aPntPE+c6TmIWE9EtcMmAcPdWAhYhAXxcLOQi9L1WhD1Sc8p1d2oL7XGiRKp8F4A2i8K/nfI+y/gsTDJ/YC/8+AD5Uh04KHiGl+cIFPnBDDrPMjwRGkLXyxO4VGbfQWnDH2v0bVWE3C9QOXlepbgjEfIJQI6XDG3z5ahD9cw2pS78ipB85wyScNTvsVzlzzhL8/jRrnmVjfFJK/m3m4nj9vbgQTguT8XZTjsm672R5uJKEaQmBI/c58gyus8ZDagLpEVSJBIyHp4jn++xqPV71OgQgJYEWOtZ/haxRtKmWOBu8xdBLftWltsY84zE6WIEy/eIOWL+BaayMx+KHtL7EAkqdNDLiEXmEMUHniedtJqg9HmZtfvt26vNi0BdG3Ft3g8ZOf7PAu59TxtzivLNIekyi+wD1i8CuUiD9FXAa8C+/xS3JPmZnomyc7H+fb4/Se0bk41Fel621r4cgVxbq91V4jVqwB7HTe2M7jgB+QWHavZkDRPmZcASoZEmBx6i75bGjPcMdL4/VKGFAGWZkGzPG0XAbdL9A81G5LOmUnC9hHKJeO7dcUMjblSl12867ElFTtaGl20xvvLGPdVz/8TVuU7y0x1PG7vtNg24oz9Uo/Z412++VFWI7Fcog9tu9Lm6gvRmIPv9x1xmQAu6RDkXtbOtlGEmpgD5Nvnyc0dcv0EE6cfdi1HmhMf9wDF3k3gtRvEedhxjpgfqPb9PU9iEJHnyOUA7bQUXh6kq/D7l2iTjWv7XOD530BDr8jIrus+srXjt4MzumJMHuTsBa63YKE1+RR5lBjEikCCnWKWiHdzOgKO+nRIBAF88za/IFmJ3eMZov4CYxGBabcpGL8EYx+SeMXJeRwHNsV/h+vdxeuhEpN3ZyNY78Gm2fknJxVGhyjixPiQvVkNzT1elD9Py/aTAL64Hb9vcYmC9zfdXdT/C1LeGbg4rnBaAihDFJH12W5ulfNCNe/xTsP3bp8ikzJs5BF+5PNfAQYAPaseTdsEcaYAAAAASUVORK5CYII="
-						 mode="widthFix"></image>
-		</view>
-		<!-- #endif -->
-		<text class="uni-load-more__text" :style="{color: color}">{{ status === 'more' ? contentText.contentdown : status === 'loading' ? contentText.contentrefresh : contentText.contentnomore }}</text>
-	</view>
-</template>
-
-<script>
-	let platform
-	setTimeout(() => {
-			platform = uni.getSystemInfoSync().platform
-	}, 16)
-
-	/**
-	 * LoadMore 加载更多
-	 * @description 用于列表中,做滚动加载使用,展示 loading 的各种状态
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=29
-	 * @property {String} status = [more|loading|noMore] loading 的状态
-	 * 	@value more loading前
-	 * 	@value loading loading中
-	 * 	@value noMore 没有更多了
-	 * @property {Number} iconSize 指定图标大小
-	 * @property {Boolean} iconSize = [true|false] 是否显示 loading 图标
-	 * @property {String} iconType = [snow|circle|auto] 指定图标样式
-	 * 	@value snow ios雪花加载样式
-	 * 	@value circle 安卓唤醒加载样式
-	 * 	@value auto 根据平台自动选择加载样式
-	 * @property {String} color 图标和文字颜色
-	 * @property {Object} contentText 各状态文字说明,值为:{contentdown: "上拉显示更多",contentrefresh: "正在加载...",contentnomore: "没有更多数据了"}
-	 * @event {Function} clickLoadMore 点击加载更多时触发
-	 */
-	export default {
-		name: 'UniLoadMore',
-		props: {
-			status: {
-				// 上拉的状态:more-loading前;loading-loading中;noMore-没有更多了
-				type: String,
-				default: 'more'
-			},
-			showIcon: {
-				type: Boolean,
-				default: true
-			},
-			iconType: {
-				type: String,
-				default: 'auto'
-			},
-			iconSize: {
-				type: Number,
-				default: 24
-			},
-			color: {
-				type: String,
-				default: '#777777'
-			},
-			contentText: {
-				type: Object,
-				default () {
-					return {
-						contentdown: '上拉显示更多',
-						contentrefresh: '正在加载...',
-						contentnomore: '没有更多数据了'
-					}
-				}
-			}
-		},
-		data() {
-			return {
-                webviewHide: false,
-				platform: platform
-			}
-		},
-		// #ifndef APP-NVUE
-		computed:{
-			iconSnowWidth(){
-				return (Math.floor(this.iconSize/24)||1)*2
-			}
-		},
-		// #endif
-		mounted() {
-			// #ifdef APP-PLUS
-			var pages = getCurrentPages();
-			var page = pages[pages.length - 1];
-			var currentWebview = page.$getAppWebview();
-			currentWebview.addEventListener('hide', () => {
-				this.webviewHide = true
-			})
-			currentWebview.addEventListener('show', () => {
-				this.webviewHide = false
-			})
-			// #endif
-		},
-		methods: {
-			onClick() {
-				this.$emit('clickLoadMore', {
-					detail: {
-						status: this.status,
-					}
-				})
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-
-	.uni-load-more {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-		height: 40px;
-		align-items: center;
-		justify-content: center;
-	}
-
-	.uni-load-more__text {
-		font-size: 15px;
-	}
-
-	.uni-load-more__img {
-		width: 24px;
-		height: 24px;
-		margin-right: 8px;
-	}
-
-	.uni-load-more__img--nvue {
-		color: #666666;
-	}
-
-	.uni-load-more__img--android,
-	.uni-load-more__img--ios {
-		width: 24px;
-		height: 24px;
-		transform: rotate(0deg);
-	}
-
-	/* #ifndef APP-NVUE */
-	.uni-load-more__img--android {
-		animation: loading-ios 1s 0s linear infinite;
-	}
-
-	@keyframes loading-android {
-		0% {
-			transform: rotate(0deg);
-		}
-
-		100% {
-			transform: rotate(360deg);
-		}
-	}
-
-	.uni-load-more__img--ios-H5 {
-		position: relative;
-		animation: loading-ios-H5 1s 0s step-end infinite;
-	}
-
-	.uni-load-more__img--ios-H5>image {
-		position: absolute;
-		width: 100%;
-		height: 100%;
-		left: 0;
-		top: 0;
-	}
-
-	@keyframes loading-ios-H5 {
-		0% {
-			transform: rotate(0deg);
-		}
-
-		8% {
-			transform: rotate(30deg);
-		}
-
-		16% {
-			transform: rotate(60deg);
-		}
-
-		24% {
-			transform: rotate(90deg);
-		}
-
-		32% {
-			transform: rotate(120deg);
-		}
-
-		40% {
-			transform: rotate(150deg);
-		}
-
-		48% {
-			transform: rotate(180deg);
-		}
-
-		56% {
-			transform: rotate(210deg);
-		}
-
-		64% {
-			transform: rotate(240deg);
-		}
-
-		73% {
-			transform: rotate(270deg);
-		}
-
-		82% {
-			transform: rotate(300deg);
-		}
-
-		91% {
-			transform: rotate(330deg);
-		}
-
-		100% {
-			transform: rotate(360deg);
-		}
-	}
-
-	/* #endif */
-
-	/* #ifdef H5 */
-	.uni-load-more__img--android-H5 {
-		animation: loading-android-H5-rotate 2s linear infinite;
-		transform-origin: center center;
-	}
-
-	.uni-load-more__img--android-H5>circle {
-		display: inline-block;
-		animation: loading-android-H5-dash 1.5s ease-in-out infinite;
-		stroke: currentColor;
-		stroke-linecap: round;
-	}
-
-	@keyframes loading-android-H5-rotate {
-		0% {
-			transform: rotate(0deg);
-		}
-
-		100% {
-			transform: rotate(360deg);
-		}
-	}
-
-	@keyframes loading-android-H5-dash {
-		0% {
-			stroke-dasharray: 1, 200;
-			stroke-dashoffset: 0;
-		}
-
-		50% {
-			stroke-dasharray: 90, 150;
-			stroke-dashoffset: -40;
-		}
-
-		100% {
-			stroke-dasharray: 90, 150;
-			stroke-dashoffset: -120;
-		}
-	}
-
-	/* #endif */
-
-	/* #ifndef APP-NVUE || H5 */
-	.uni-load-more__img--android-MP {
-		position: relative;
-		width: 24px;
-		height: 24px;
-		transform: rotate(0deg);
-		animation: loading-ios 1s 0s ease infinite;
-	}
-
-	.uni-load-more__img--android-MP>view {
-		position: absolute;
-		box-sizing: border-box;
-		width: 100%;
-		height: 100%;
-		border-radius: 50%;
-		border: solid 2px transparent;
-		border-top: solid 2px #777777;
-		transform-origin: center;
-	}
-
-	.uni-load-more__img--android-MP>view:nth-child(1){
-		animation: loading-android-MP-1 1s 0s linear infinite;
-	}
-
-	.uni-load-more__img--android-MP>view:nth-child(2){
-		animation: loading-android-MP-2 1s 0s linear infinite;
-	}
-
-	.uni-load-more__img--android-MP>view:nth-child(3){
-		animation: loading-android-MP-3 1s 0s linear infinite;
-	}
-
-	@keyframes loading-android {
-		0% {
-			transform: rotate(0deg);
-		}
-
-		100% {
-			transform: rotate(360deg);
-		}
-	}
-
-	@keyframes loading-android-MP-1{
-		0%{
-			transform: rotate(0deg);
-		}
-		50%{
-			transform: rotate(90deg);
-		}
-		100%{
-			transform: rotate(360deg);
-		}
-	}
-	@keyframes loading-android-MP-2{
-		0%{
-			transform: rotate(0deg);
-		}
-		50%{
-			transform: rotate(180deg);
-		}
-		100%{
-			transform: rotate(360deg);
-		}
-	}
-	@keyframes loading-android-MP-3{
-		0%{
-			transform: rotate(0deg);
-		}
-		50%{
-			transform: rotate(270deg);
-		}
-		100%{
-			transform: rotate(360deg);
-		}
-	}
-	/* #endif */
-</style>
diff --git a/components/uni-nav-bar/uni-nav-bar.vue b/components/uni-nav-bar/uni-nav-bar.vue
deleted file mode 100644
index 30aa6eb..0000000
--- a/components/uni-nav-bar/uni-nav-bar.vue
+++ /dev/null
@@ -1,251 +0,0 @@
-<template>
-	<view class="uni-navbar">
-		<view :class="{ 'uni-navbar--fixed': fixed, 'uni-navbar--shadow': shadow, 'uni-navbar--border': border }" :style="{ 'background-color': backgroundColor }"
-		 class="uni-navbar__content">
-			<status-bar v-if="statusBar" />
-			<view :style="{ color: color,backgroundColor: backgroundColor }" class="uni-navbar__header uni-navbar__content_view">
-				<view @tap="onClickLeft" class="uni-navbar__header-btns uni-navbar__header-btns-left uni-navbar__content_view">
-					<view class="uni-navbar__content_view" v-if="leftIcon.length">
-						<uni-icons :color="color" :type="leftIcon" size="24" />
-					</view>
-					<view :class="{ 'uni-navbar-btn-icon-left': !leftIcon.length }" class="uni-navbar-btn-text uni-navbar__content_view"
-					 v-if="leftText.length">
-						<text :style="{ color: color, fontSize: '14px' }">{{ leftText }}</text>
-					</view>
-					<slot name="left" />
-				</view>
-				<view class="uni-navbar__header-container uni-navbar__content_view" @tap="onClickTitle">
-					<view class="uni-navbar__header-container-inner uni-navbar__content_view" v-if="title.length">
-						<text class="uni-nav-bar-text" :style="{color: color }">{{ title }}</text>
-					</view>
-					<!-- 标题插槽 -->
-					<slot />
-				</view>
-				<view :class="title.length ? 'uni-navbar__header-btns-right' : ''" @tap="onClickRight" class="uni-navbar__header-btns uni-navbar__content_view">
-					<view class="uni-navbar__content_view" v-if="rightIcon.length">
-						<uni-icons :color="color" :type="rightIcon" size="24" />
-					</view>
-					<!-- 优先显示图标 -->
-					<view class="uni-navbar-btn-text uni-navbar__content_view" v-if="rightText.length && !rightIcon.length">
-						<text class="uni-nav-bar-right-text">{{ rightText }}</text>
-					</view>
-					<slot name="right" />
-				</view>
-			</view>
-		</view>
-		<view class="uni-navbar__placeholder" v-if="fixed">
-			<status-bar v-if="statusBar" />
-			<view class="uni-navbar__placeholder-view" />
-		</view>
-	</view>
-</template>
-
-<script>
-	import statusBar from "./uni-status-bar.vue";
-
-	/**
-	 * NavBar 自定义导航栏
-	 * @description 导航栏组件,主要用于头部导航
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=52
-	 * @property {String} title 标题文字
-	 * @property {String} leftText 左侧按钮文本
-	 * @property {String} rightText 右侧按钮文本
-	 * @property {String} leftIcon 左侧按钮图标(图标类型参考 [Icon 图标](http://ext.dcloud.net.cn/plugin?id=28) type 属性)
-	 * @property {String} rightIcon 右侧按钮图标(图标类型参考 [Icon 图标](http://ext.dcloud.net.cn/plugin?id=28) type 属性)
-	 * @property {String} color 图标和文字颜色
-	 * @property {String} backgroundColor 导航栏背景颜色
-	 * @property {Boolean} fixed = [true|false] 是否固定顶部
-	 * @property {Boolean} statusBar = [true|false] 是否包含状态栏
-	 * @property {Boolean} shadow = [true|false] 导航栏下是否有阴影
-	 * @event {Function} clickLeft 左侧按钮点击时触发
-	 * @event {Function} clickRight 右侧按钮点击时触发
-	 * @event {Function} clickTitle 中间标题点击时触发
-	 */
-	export default {
-		name: "UniNavBar",
-		components: {
-			statusBar
-		},
-		props: {
-			title: {
-				type: String,
-				default: ""
-			},
-			leftText: {
-				type: String,
-				default: ""
-			},
-			rightText: {
-				type: String,
-				default: ""
-			},
-			leftIcon: {
-				type: String,
-				default: ""
-			},
-			rightIcon: {
-				type: String,
-				default: ""
-			},
-			fixed: {
-				type: [Boolean, String],
-				default: false
-			},
-			color: {
-				type: String,
-				default: "#000000"
-			},
-			backgroundColor: {
-				type: String,
-				default: "#FFFFFF"
-			},
-			statusBar: {
-				type: [Boolean, String],
-				default: false
-			},
-			shadow: {
-				type: [Boolean, String],
-				default: false
-			},
-			border: {
-				type: [Boolean, String],
-				default: true
-			}
-		},
-        mounted() {
-          if(uni.report && this.title !== '') {
-              uni.report('title', this.title)
-          }
-        },
-		methods: {
-			onClickLeft() {
-				this.$emit("clickLeft");
-			},
-			onClickRight() {
-				this.$emit("clickRight");
-			},
-			onClickTitle() {
-				this.$emit("clickTitle");
-			}
-		}
-	};
-</script>
-
-<style lang="scss" scoped>
-	$nav-height: 44px;
-	.uni-nav-bar-text {
-		/* #ifdef APP-PLUS */
-		font-size: 34rpx;
-		/* #endif */
-		/* #ifndef APP-PLUS */
-		font-size: $uni-font-size-lg;
-		/* #endif */
-	}
-
-	.uni-nav-bar-right-text {
-		font-size: $uni-font-size-base;
-	}
-
-	.uni-navbar__content {
-		position: relative;
-		background-color: $uni-bg-color;
-		overflow: hidden;
-		// width: 750rpx;
-	}
-
-	.uni-navbar__content_view {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		align-items: center;
-		flex-direction: row;
-		// background-color: #FFFFFF;
-	}
-
-	.uni-navbar__header {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-		height: $nav-height;
-		line-height: $nav-height;
-		font-size: 16px;
-		// background-color: #ffffff;
-	}
-
-	.uni-navbar__header-btns {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-wrap: nowrap;
-		width: 120rpx;
-		padding: 0 6px;
-		justify-content: center;
-		align-items: center;
-		/* #ifdef H5 */
-		cursor: pointer;
-		/* #endif */
-	}
-
-	.uni-navbar__header-btns-left {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		width: 150rpx;
-		justify-content: flex-start;
-	}
-
-	.uni-navbar__header-btns-right {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		width: 150rpx;
-		padding-right: 30rpx;
-		justify-content: flex-end;
-	}
-
-	.uni-navbar__header-container {
-		flex: 1;
-	}
-
-	.uni-navbar__header-container-inner {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex: 1;
-		align-items: center;
-		justify-content: center;
-		font-size: $uni-font-size-base;
-	}
-
-
-	.uni-navbar__placeholder-view {
-		height: $nav-height;
-	}
-
-	.uni-navbar--fixed {
-		position: fixed;
-		z-index: 998;
-		/* #ifdef H5 */
-		left: var(--window-left);
-		right: var(--window-right);
-		/* #endif */
-		/* #ifndef H5 */
-		left:0;
-		right: 0;
-		/* #endif */
-
-	}
-
-	.uni-navbar--shadow {
-		/* #ifndef APP-NVUE */
-		box-shadow: 0 1px 6px #ccc;
-		/* #endif */
-	}
-
-	.uni-navbar--border {
-		border-bottom-width: 1rpx;
-		border-bottom-style: solid;
-		border-bottom-color: $uni-border-color;
-	}
-</style>
diff --git a/components/uni-nav-bar/uni-status-bar.vue b/components/uni-nav-bar/uni-status-bar.vue
deleted file mode 100644
index 47179d3..0000000
--- a/components/uni-nav-bar/uni-status-bar.vue
+++ /dev/null
@@ -1,25 +0,0 @@
-<template>
-	<view :style="{ height: statusBarHeight }" class="uni-status-bar">
-		<slot />
-	</view>
-</template>
-
-<script>
-	var statusBarHeight = uni.getSystemInfoSync().statusBarHeight + 'px'
-	export default {
-		name: 'UniStatusBar',
-		data() {
-			return {
-				statusBarHeight: statusBarHeight
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	.uni-status-bar {
-		// width: 750rpx;
-		height: 20px;
-		// height: var(--status-bar-height);
-	}
-</style>
diff --git a/components/uni-popup-dialog/uni-popup-dialog.vue b/components/uni-popup-dialog/uni-popup-dialog.vue
deleted file mode 100644
index c91123c..0000000
--- a/components/uni-popup-dialog/uni-popup-dialog.vue
+++ /dev/null
@@ -1,243 +0,0 @@
-<template>
-	<view class="uni-popup-dialog">
-		<view class="uni-dialog-title">
-			<text class="uni-dialog-title-text" :class="['uni-popup__'+dialogType]">{{title}}</text>
-		</view>
-		<view class="uni-dialog-content">
-			<text class="uni-dialog-content-text" v-if="mode === 'base'">{{content}}</text>
-			<input v-else class="uni-dialog-input" v-model="val" type="text" :placeholder="placeholder" :focus="focus" >
-		</view>
-		<view class="uni-dialog-button-group">
-			<view class="uni-dialog-button" @click="close">
-				<text class="uni-dialog-button-text">取消</text>
-			</view>
-			<view class="uni-dialog-button uni-border-left" @click="onOk">
-				<text class="uni-dialog-button-text uni-button-color">确定</text>
-			</view>
-		</view>
-
-	</view>
-</template>
-
-<script>
-	/**
-	 * PopUp 弹出层-对话框样式
-	 * @description 弹出层-对话框样式
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=329
-	 * @property {String} value input 模式下的默认值
-	 * @property {String} placeholder input 模式下输入提示
-	 * @property {String} type = [success|warning|info|error] 主题样式
-	 *  @value success 成功
-	 * 	@value warning 提示
-	 * 	@value info 消息
-	 * 	@value error 错误
-	 * @property {String} mode = [base|input] 模式、
-	 * 	@value base 基础对话框
-	 * 	@value input 可输入对话框
-	 * @property {String} content 对话框内容
-	 * @property {Boolean} beforeClose 是否拦截取消事件
-	 * @event {Function} confirm 点击确认按钮触发
-	 * @event {Function} close 点击取消按钮触发
-	 */
-
-	export default {
-		name: "uniPopupDialog",
-		props: {
-			value: {
-				type: [String, Number],
-				default: ''
-			},
-			placeholder: {
-				type: [String, Number],
-				default: '请输入内容'
-			},
-			/**
-			 * 对话框主题 success/warning/info/error	  默认 success
-			 */
-			type: {
-				type: String,
-				default: 'error'
-			},
-			/**
-			 * 对话框模式 base/input
-			 */
-			mode: {
-				type: String,
-				default: 'base'
-			},
-			/**
-			 * 对话框标题
-			 */
-			title: {
-				type: String,
-				default: '提示'
-			},
-			/**
-			 * 对话框内容
-			 */
-			content: {
-				type: String,
-				default: ''
-			},
-			/**
-			 * 拦截取消事件 ,如果拦截取消事件,必须监听close事件,执行 done()
-			 */
-			beforeClose: {
-				type: Boolean,
-				default: false
-			}
-		},
-		data() {
-			return {
-				dialogType: 'error',
-				focus: false,
-				val: ""
-			}
-		},
-		inject: ['popup'],
-		watch: {
-			type(val) {
-				this.dialogType = val
-			},
-			mode(val) {
-				if (val === 'input') {
-					this.dialogType = 'info'
-				}
-			},
-			value(val) {
-				this.val = val
-			}
-		},
-		created() {
-			// 对话框遮罩不可点击
-			this.popup.mkclick = false
-			if (this.mode === 'input') {
-				this.dialogType = 'info'
-				this.val = this.value
-			} else {
-				this.dialogType = this.type
-			}
-		},
-		mounted() {
-			this.focus = true
-		},
-		methods: {
-			/**
-			 * 点击确认按钮
-			 */
-			onOk() {
-				this.$emit('confirm', () => {
-					this.popup.close()
-					if (this.mode === 'input') this.val = this.value
-				}, this.mode === 'input' ? this.val : '')
-			},
-			/**
-			 * 点击取消按钮
-			 */
-			close() {
-				if (this.beforeClose) {
-					this.$emit('close', () => {
-						this.popup.close()
-					})
-					return
-				}
-				this.popup.close()
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	.uni-popup-dialog {
-		width: 300px;
-		border-radius: 15px;
-		background-color: #fff;
-	}
-
-	.uni-dialog-title {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-		justify-content: center;
-		padding-top: 15px;
-		padding-bottom: 5px;
-	}
-
-	.uni-dialog-title-text {
-		font-size: 16px;
-		font-weight: 500;
-	}
-
-	.uni-dialog-content {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-		justify-content: center;
-		align-items: center;
-		padding: 5px 15px 15px 15px;
-	}
-
-	.uni-dialog-content-text {
-		font-size: 14px;
-		color: #6e6e6e;
-	}
-
-	.uni-dialog-button-group {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-		border-top-color: #f5f5f5;
-		border-top-style: solid;
-		border-top-width: 1px;
-	}
-
-	.uni-dialog-button {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-
-		flex: 1;
-		flex-direction: row;
-		justify-content: center;
-		align-items: center;
-		height: 45px;
-	}
-
-	.uni-border-left {
-		border-left-color: #f0f0f0;
-		border-left-style: solid;
-		border-left-width: 1px;
-	}
-
-	.uni-dialog-button-text {
-		font-size: 14px;
-	}
-
-	.uni-button-color {
-		color: $uni-color-primary;
-	}
-
-	.uni-dialog-input {
-		flex: 1;
-		font-size: 14px;
-	}
-
-	.uni-popup__success {
-		color: $uni-color-success;
-	}
-
-	.uni-popup__warn {
-		color: $uni-color-warning;
-	}
-
-	.uni-popup__error {
-		color: $uni-color-error;
-	}
-
-	.uni-popup__info {
-		color: #909399;
-	}
-</style>
diff --git a/components/uni-popup-message/uni-popup-message.vue b/components/uni-popup-message/uni-popup-message.vue
deleted file mode 100644
index a32bd00..0000000
--- a/components/uni-popup-message/uni-popup-message.vue
+++ /dev/null
@@ -1,116 +0,0 @@
-<template>
-	<view class="uni-popup-message" :class="'uni-popup__'+[type]">
-		<text class="uni-popup-message-text" :class="'uni-popup__'+[type]+'-text'">{{message}}</text>
-	</view>
-</template>
-
-<script>
-	
-	/**
-	 * PopUp 弹出层-消息提示
-	 * @description 弹出层-消息提示
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=329
-	 * @property {String} type = [success|warning|info|error] 主题样式
-	 *  @value success 成功
-	 * 	@value warning 提示
-	 * 	@value info 消息
-	 * 	@value error 错误
-	 * @property {String} message 消息提示文字
-	 * @property {String} duration 显示时间,设置为 0 则不会自动关闭
-	 */
-	
-	export default {
-		name: 'UniPopupMessage',
-		props: {
-			/**
-			 * 主题 success/warning/info/error	  默认 success
-			 */
-			type: {
-				type: String,
-				default: 'success'
-			},
-			/**
-			 * 消息文字
-			 */
-			message: {
-				type: String,
-				default: ''
-			},
-			/**
-			 * 显示时间,设置为 0 则不会自动关闭
-			 */
-			duration: {
-				type: Number,
-				default: 3000
-			}
-		},
-		inject: ['popup'],
-		data() {
-			return {}
-		},
-		created() {
-			this.popup.childrenMsg = this
-		},
-		methods: {
-			open() {
-				if (this.duration === 0) return
-				clearTimeout(this.popuptimer)
-				this.popuptimer = setTimeout(() => {
-					this.popup.close()
-				}, this.duration)
-			},
-			close() {
-				clearTimeout(this.popuptimer)
-			}
-		}
-	}
-</script>
-<style lang="scss" scoped>
-	.uni-popup-message {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-		background-color: #e1f3d8;
-		padding: 10px 15px;
-		border-color: #eee;
-		border-style: solid;
-		border-width: 1px;
-	}
-	.uni-popup-message-text {
-		font-size: 14px;
-		padding: 0;
-	}
-
-	.uni-popup__success {
-		background-color: #e1f3d8;
-	}
-
-	.uni-popup__success-text {
-		color: #67C23A;
-	}
-
-	.uni-popup__warn {
-		background-color: #faecd8;
-	}
-
-	.uni-popup__warn-text {
-		color: #E6A23C;
-	}
-
-	.uni-popup__error {
-		background-color: #fde2e2;
-	}
-
-	.uni-popup__error-text {
-		color: #F56C6C;
-	}
-
-	.uni-popup__info {
-		background-color: #F2F6FC;
-	}
-
-	.uni-popup__info-text {
-		color: #909399;
-	}
-</style>
diff --git a/components/uni-popup/message.js b/components/uni-popup/message.js
deleted file mode 100644
index 0ff9a02..0000000
--- a/components/uni-popup/message.js
+++ /dev/null
@@ -1,22 +0,0 @@
-export default {
-	created() {
-		if (this.type === 'message') {
-			// 不显示遮罩
-			this.maskShow = false 
-			// 获取子组件对象
-			this.childrenMsg = null
-		}
-	},
-	methods: {
-		customOpen() {
-			if (this.childrenMsg) {
-				this.childrenMsg.open()
-			}
-		},
-		customClose() {
-			if (this.childrenMsg) {
-				this.childrenMsg.close()
-			}
-		}
-	}
-}
diff --git a/components/uni-popup/popup.js b/components/uni-popup/popup.js
deleted file mode 100644
index 14d4b77..0000000
--- a/components/uni-popup/popup.js
+++ /dev/null
@@ -1,25 +0,0 @@
-import message from './message.js';
-// 定义 type 类型:弹出类型:top/bottom/center
-const config = {
-	// 顶部弹出
-	top:'top',
-	// 底部弹出
-	bottom:'bottom',
-	// 居中弹出
-	center:'center',
-	// 消息提示
-	message:'top',
-	// 对话框
-	dialog:'center',
-	// 分享
-	share:'bottom',
-}
-
-export default {
-	data(){
-		return {
-			config:config
-		}
-	},
-	mixins: [message]
-}
diff --git a/components/uni-popup/share.js b/components/uni-popup/share.js
deleted file mode 100644
index 462bb83..0000000
--- a/components/uni-popup/share.js
+++ /dev/null
@@ -1,16 +0,0 @@
-export default {
-	created() {
-		if (this.type === 'share') {
-			// 关闭点击
-			this.mkclick = false
-		}
-	},
-	methods: {
-		customOpen() {
-			console.log('share 打开了');
-		},
-		customClose() {
-			console.log('share 关闭了');
-		}
-	}
-}
diff --git a/components/uni-popup/uni-popup.vue b/components/uni-popup/uni-popup.vue
deleted file mode 100644
index ae40d03..0000000
--- a/components/uni-popup/uni-popup.vue
+++ /dev/null
@@ -1,297 +0,0 @@
-<template>
-	<view v-if="showPopup" class="uni-popup" :class="[popupstyle]" @touchmove.stop.prevent="clear">
-		<uni-transition v-if="maskShow" class="uni-mask--hook" :mode-class="['fade']" :styles="maskClass" :duration="duration" :show="showTrans"
-		 @click="onTap" />
-		<uni-transition :mode-class="ani" :styles="transClass" :duration="duration" :show="showTrans" @click="onTap">
-			<view class="uni-popup__wrapper-box" @click.stop="clear">
-				<slot />
-			</view>
-		</uni-transition>
-	</view>
-</template>
-
-<script>
-	import uniTransition from '../uni-transition/uni-transition.vue'
-	import popup from './popup.js'
-	/**
-	 * PopUp 弹出层
-	 * @description 弹出层组件,为了解决遮罩弹层的问题
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=329
-	 * @property {String} type = [top|center|bottom] 弹出方式
-	 * 	@value top 顶部弹出
-	 * 	@value center 中间弹出
-	 * 	@value bottom 底部弹出
-	 * 	@value message 消息提示
-	 * 	@value dialog 对话框
-	 * 	@value share 底部分享示例
-	 * @property {Boolean} animation = [ture|false] 是否开启动画
-	 * @property {Boolean} maskClick = [ture|false] 蒙版点击是否关闭弹窗
-	 * @event {Function} change 打开关闭弹窗触发,e={show: false}
-	 */
-
-	export default {
-		name: 'UniPopup',
-		components: {
-			uniTransition
-		},
-		props: {
-			// 开启动画
-			animation: {
-				type: Boolean,
-				default: true
-			},
-			// 弹出层类型,可选值,top: 顶部弹出层;bottom:底部弹出层;center:全屏弹出层
-			// message: 消息提示 ; dialog : 对话框
-			type: {
-				type: String,
-				default: 'center'
-			},
-			// maskClick
-			maskClick: {
-				type: Boolean,
-				default: true
-			}
-		},
-		provide() {
-			return {
-				popup: this
-			}
-		},
-		mixins: [popup],
-		watch: {
-			/**
-			 * 监听type类型
-			 */
-			type: {
-				handler: function(newVal) {
-					this[this.config[newVal]]()
-				},
-				immediate: true
-			},
-			/**
-			 * 监听遮罩是否可点击
-			 * @param {Object} val
-			 */
-			maskClick: {
-				handler: function(val) {
-					this.mkclick = val
-				},
-				immediate: true
-			}
-		},
-		data() {
-			return {
-				duration: 300,
-				ani: [],
-				showPopup: false,
-				showTrans: false,
-				maskClass: {
-					'position': 'fixed',
-					'bottom': 0,
-					'top': 0,
-					'left': 0,
-					'right': 0,
-					'backgroundColor': 'rgba(0, 0, 0, 0.4)'
-				},
-				transClass: {
-					'position': 'fixed',
-					'left': 0,
-					'right': 0,
-				},
-				maskShow: true,
-				mkclick: true,
-				popupstyle: 'top'
-			}
-		},
-		created() {
-			this.mkclick = this.maskClick
-			if (this.animation) {
-				this.duration = 300
-			} else {
-				this.duration = 0
-			}
-		},
-		methods: {
-			clear(e) {
-				// TODO nvue 取消冒泡
-				e.stopPropagation()
-			},
-			open() {
-				this.showPopup = true
-				this.$nextTick(() => {
-					new Promise(resolve => {
-						clearTimeout(this.timer)
-						this.timer = setTimeout(() => {
-							this.showTrans = true
-							// fixed by mehaotian 兼容 app 端
-							this.$nextTick(() => {
-								resolve();
-							})
-						}, 50);
-					}).then(res => {
-						// 自定义打开事件
-						clearTimeout(this.msgtimer)
-						this.msgtimer = setTimeout(() => {
-							this.customOpen && this.customOpen()
-						}, 100)
-						this.$emit('change', {
-							show: true,
-							type: this.type
-						})
-					})
-				})
-			},
-			close(type) {
-				this.showTrans = false
-				this.$nextTick(() => {
-					this.$emit('change', {
-						show: false,
-						type: this.type
-					})
-					clearTimeout(this.timer)
-					// 自定义关闭事件
-					this.customOpen && this.customClose()
-					this.timer = setTimeout(() => {
-						this.showPopup = false
-					}, 300)
-				})
-			},
-			onTap() {
-				if (!this.mkclick) return
-				this.close()
-			},
-			/**
-			 * 顶部弹出样式处理
-			 */
-			top() {
-				this.popupstyle = 'top'
-				this.ani = ['slide-top']
-				this.transClass = {
-					'position': 'fixed',
-					'left': 0,
-					'right': 0,
-				}
-			},
-			/**
-			 * 底部弹出样式处理
-			 */
-			bottom() {
-				this.popupstyle = 'bottom'
-				this.ani = ['slide-bottom']
-				this.transClass = {
-					'position': 'fixed',
-					'left': 0,
-					'right': 0,
-					'bottom': 0
-				}
-			},
-			/**
-			 * 中间弹出样式处理
-			 */
-			center() {
-				this.popupstyle = 'center'
-				this.ani = ['zoom-out', 'fade']
-				this.transClass = {
-					'position': 'fixed',
-					/* #ifndef APP-NVUE */
-					'display': 'flex',
-					'flexDirection': 'column',
-					/* #endif */
-					'bottom': 0,
-					'left': 0,
-					'right': 0,
-					'top': 0,
-					'justifyContent': 'center',
-					'alignItems': 'center'
-				}
-			}
-		}
-	}
-</script>
-<style lang="scss" scoped>
-	.uni-popup {
-		position: fixed;
-		/* #ifndef APP-NVUE */
-		z-index: 99;
-		/* #endif */
-	}
-
-	.uni-popup__mask {
-		position: absolute;
-		top: 0;
-		bottom: 0;
-		left: 0;
-		right: 0;
-		background-color: $uni-bg-color-mask;
-		opacity: 0;
-	}
-
-	.mask-ani {
-		transition-property: opacity;
-		transition-duration: 0.2s;
-	}
-
-	.uni-top-mask {
-		opacity: 1;
-	}
-
-	.uni-bottom-mask {
-		opacity: 1;
-	}
-
-	.uni-center-mask {
-		opacity: 1;
-	}
-
-	.uni-popup__wrapper {
-		/* #ifndef APP-NVUE */
-		display: block;
-		/* #endif */
-		position: absolute;
-	}
-
-	.top {
-		/* #ifdef H5 */
-		top: var(--window-top);
-		/* #endif */
-		/* #ifndef H5 */
-		top: 0;
-		/* #endif */
-	}
-
-	.bottom {
-		bottom: 0;
-	}
-
-	.uni-popup__wrapper-box {
-		/* #ifndef APP-NVUE */
-		display: block;
-		/* #endif */
-		position: relative;
-		/* iphonex 等安全区设置,底部安全区适配 */
-		/* #ifndef APP-NVUE */
-		padding-bottom: constant(safe-area-inset-bottom);
-		padding-bottom: env(safe-area-inset-bottom);
-		/* #endif */
-	}
-
-	.content-ani {
-		// transition: transform 0.3s;
-		transition-property: transform, opacity;
-		transition-duration: 0.2s;
-	}
-
-
-	.uni-top-content {
-		transform: translateY(0);
-	}
-
-	.uni-bottom-content {
-		transform: translateY(0);
-	}
-
-	.uni-center-content {
-		transform: scale(1);
-		opacity: 1;
-	}
-</style>
diff --git a/components/uni-transition/uni-transition.vue b/components/uni-transition/uni-transition.vue
deleted file mode 100644
index 908a939..0000000
--- a/components/uni-transition/uni-transition.vue
+++ /dev/null
@@ -1,279 +0,0 @@
-<template>
-	<view v-if="isShow" ref="ani" class="uni-transition" :class="[ani.in]" :style="'transform:' +transform+';'+stylesObject"
-	 @click="change">
-		 <slot></slot>
-	</view>
-</template>
-
-<script>
-	// #ifdef APP-NVUE
-	const animation = uni.requireNativePlugin('animation');
-	// #endif
-	/**
-	 * Transition 过渡动画
-	 * @description 简单过渡动画组件
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=985
-	 * @property {Boolean} show = [false|true] 控制组件显示或隐藏
-     * @property {Array} modeClass = [fade|slide-top|slide-right|slide-bottom|slide-left|zoom-in|zoom-out] 过渡动画类型
-     *  @value fade 渐隐渐出过渡
-     *  @value slide-top 由上至下过渡
-     *  @value slide-right 由右至左过渡
-     *  @value slide-bottom 由下至上过渡
-     *  @value slide-left 由左至右过渡
-     *  @value zoom-in 由小到大过渡
-     *  @value zoom-out 由大到小过渡
-	 * @property {Number} duration 过渡动画持续时间
-	 * @property {Object} styles 组件样式,同 css 样式,注意带’-‘连接符的属性需要使用小驼峰写法如:`backgroundColor:red`
-	 */
-	export default {
-		name: 'uniTransition',
-		props: {
-			show: {
-				type: Boolean,
-				default: false
-			},
-			modeClass: {
-				type: Array,
-				default () {
-					return []
-				}
-			},
-			duration: {
-				type: Number,
-				default: 300
-			},
-			styles: {
-				type: Object,
-				default () {
-					return {}
-				}
-			}
-		},
-		data() {
-			return {
-				isShow: false,
-				transform: '',
-				ani: { in: '',
-					active: ''
-				}
-			};
-		},
-		watch: {
-			show: {
-				handler(newVal) {
-					if (newVal) {
-						this.open()
-					} else {
-						this.close()
-					}
-				},
-				immediate: true
-			}
-		},
-		computed: {
-			stylesObject() {
-				let styles = {
-					...this.styles,
-					'transition-duration': this.duration / 1000 + 's'
-				}
-				let transfrom = ''
-				for (let i in styles) {
-					let line = this.toLine(i)
-					transfrom += line + ':' + styles[i] + ';'
-				}
-				return transfrom
-			}
-		},
-		created() {
-			// this.timer = null
-			// this.nextTick = (time = 50) => new Promise(resolve => {
-			// 	clearTimeout(this.timer)
-			// 	this.timer = setTimeout(resolve, time)
-			// 	return this.timer
-			// });
-		},
-		methods: {
-			change() {
-				this.$emit('click', {
-					detail: this.isShow
-				})
-			},
-			open() {
-				clearTimeout(this.timer)
-				this.isShow = true
-				this.transform = ''
-				this.ani.in = ''
-				for (let i in this.getTranfrom(false)) {
-					if (i === 'opacity') {
-						this.ani.in = 'fade-in'
-					} else {
-						this.transform += `${this.getTranfrom(false)[i]} `
-					}
-				}
-				this.$nextTick(() => {
-					setTimeout(() => {
-						this._animation(true)
-					}, 50)
-				})
-
-			},
-			close(type) {
-				clearTimeout(this.timer)
-				this._animation(false)
-			},
-			_animation(type) {
-				let styles = this.getTranfrom(type)
-				// #ifdef APP-NVUE
-				if(!this.$refs['ani']) return
-				animation.transition(this.$refs['ani'].ref, {
-					styles,
-					duration: this.duration, //ms
-					timingFunction: 'ease',
-					needLayout: false,
-					delay: 0 //ms
-				}, () => {
-					if (!type) {
-						this.isShow = false
-					}
-					this.$emit('change', {
-						detail: this.isShow
-					})
-				})
-				// #endif
-				// #ifndef APP-NVUE
-				this.transform = ''
-				for (let i in styles) {
-					if (i === 'opacity') {
-						this.ani.in = `fade-${type?'out':'in'}`
-					} else {
-						this.transform += `${styles[i]} `
-					}
-				}
-				this.timer = setTimeout(() => {
-					if (!type) {
-						this.isShow = false
-					}
-					this.$emit('change', {
-						detail: this.isShow
-					})
-
-				}, this.duration)
-				// #endif
-
-			},
-			getTranfrom(type) {
-				let styles = {
-					transform: ''
-				}
-				this.modeClass.forEach((mode) => {
-					switch (mode) {
-						case 'fade':
-							styles.opacity = type ? 1 : 0
-							break;
-						case 'slide-top':
-							styles.transform += `translateY(${type?'0':'-100%'}) `
-							break;
-						case 'slide-right':
-							styles.transform += `translateX(${type?'0':'100%'}) `
-							break;
-						case 'slide-bottom':
-							styles.transform += `translateY(${type?'0':'100%'}) `
-							break;
-						case 'slide-left':
-							styles.transform += `translateX(${type?'0':'-100%'}) `
-							break;
-						case 'zoom-in':
-							styles.transform += `scale(${type?1:0.8}) `
-							break;
-						case 'zoom-out':
-							styles.transform += `scale(${type?1:1.2}) `
-							break;
-					}
-				})
-				return styles
-			},
-			_modeClassArr(type) {
-				let mode = this.modeClass
-				if (typeof(mode) !== "string") {
-					let modestr = ''
-					mode.forEach((item) => {
-						modestr += (item + '-' + type + ',')
-					})
-					return modestr.substr(0, modestr.length - 1)
-				} else {
-					return mode + '-' + type
-				}
-			},
-			// getEl(el) {
-			// 	console.log(el || el.ref || null);
-			// 	return el || el.ref || null
-			// },
-			toLine(name) {
-				return name.replace(/([A-Z])/g, "-$1").toLowerCase();
-			}
-		}
-	}
-</script>
-
-<style>
-	.uni-transition {
-		transition-timing-function: ease;
-		transition-duration: 0.3s;
-		transition-property: transform, opacity;
-	}
-
-	.fade-in {
-		opacity: 0;
-	}
-
-	.fade-active {
-		opacity: 1;
-	}
-
-	.slide-top-in {
-		/* transition-property: transform, opacity; */
-		transform: translateY(-100%);
-	}
-
-	.slide-top-active {
-		transform: translateY(0);
-		/* opacity: 1; */
-	}
-
-	.slide-right-in {
-		transform: translateX(100%);
-	}
-
-	.slide-right-active {
-		transform: translateX(0);
-	}
-
-	.slide-bottom-in {
-		transform: translateY(100%);
-	}
-
-	.slide-bottom-active {
-		transform: translateY(0);
-	}
-
-	.slide-left-in {
-		transform: translateX(-100%);
-	}
-
-	.slide-left-active {
-		transform: translateX(0);
-		opacity: 1;
-	}
-
-	.zoom-in-in {
-		transform: scale(0.8);
-	}
-
-	.zoom-out-active {
-		transform: scale(1);
-	}
-
-	.zoom-out-in {
-		transform: scale(1.2);
-	}
-</style>
diff --git a/config/filter.js b/config/filter.js
deleted file mode 100644
index 8ea2527..0000000
--- a/config/filter.js
+++ /dev/null
@@ -1,93 +0,0 @@
-// tip值>99显示99+
-import Vue from 'vue'
-// tip值>99显示99+
-Vue.filter('tip', function (tip) {
-  if (tip > 99) {
-    return '99+'
-  }
-  return tip
-})
-
-
-
-export default {
-	date(time){
-		let oldDate = new Date(time)
-		let newDate = new Date()
-		var dayNum = "";
-		var getTime = (newDate.getTime() - oldDate.getTime())/1000;
-	
-		if(getTime < 60*5){
-				dayNum = "刚刚";
-		}else if(getTime >= 60*5 && getTime < 60*60){
-				dayNum = parseInt(getTime / 60) + "分钟前";
-		}else if(getTime >= 3600 && getTime < 3600*24){
-				dayNum = parseInt(getTime / 3600) + "小时前";
-		}else if(getTime >= 3600 * 24 && getTime < 3600 * 24 * 30){
-				dayNum = parseInt(getTime / 3600 / 24 ) + "天前";
-		}else if(getTime >= 3600 * 24 * 30 && getTime < 3600 * 24 * 30 * 12){
-				dayNum = parseInt(getTime / 3600 / 24 / 30 ) + "个月前";  
-		}else if(time >= 3600 * 24 * 30 * 12){
-				dayNum = parseInt(getTime / 3600 / 24 / 30 / 12 ) + "年前";  
-		}
-	
-		let year   = oldDate.getFullYear();
-		let month  = oldDate.getMonth()+1;
-		let day    = oldDate.getDate();
-		let hour   = oldDate.getHours(); 
-		let minute = oldDate.getMinutes(); 
-		let second = oldDate.getSeconds(); 
-		if(getTime < 60 * 5) {
-			return dayNum+" "+hour+":"+minute;
-		}else {
-			return dayNum+" "+year+"-"+month+"-"+day+" "+hour+":"+minute;
-		}
-	},
-	
-	Msgdate(time){
-		let oldDate = new Date(time)
-		let newDate = new Date()
-		var dayNum = "";
-		var getTime = (newDate.getTime() - oldDate.getTime())/1000;
-	
-		if(getTime < 60*5){
-				dayNum = "刚刚";
-		}else if(getTime >= 60*5 && getTime < 60*60){
-				dayNum = parseInt(getTime / 60) + "分钟前";
-		}else if(getTime >= 3600 && getTime < 3600*24){
-				dayNum = parseInt(getTime / 3600) + "小时前";
-		}else if(getTime >= 3600 * 24 && getTime < 3600 * 24 * 30){
-				dayNum = parseInt(getTime / 3600 / 24 ) + "天前";
-		}else if(getTime >= 3600 * 24 * 30 && getTime < 3600 * 24 * 30 * 12){
-				dayNum = parseInt(getTime / 3600 / 24 / 30 ) + "个月前";  
-		}else if(time >= 3600 * 24 * 30 * 12){
-				dayNum = parseInt(getTime / 3600 / 24 / 30 / 12 ) + "年前";  
-		}
-	
-		let year   = oldDate.getFullYear();
-		let month  = oldDate.getMonth()+1;
-		let day    = oldDate.getDate();
-		let hour   = oldDate.getHours(); 
-		let minute = oldDate.getMinutes(); 
-		let second = oldDate.getSeconds(); 
-		if(getTime < 60 * 60 * 12) {
-			return dayNum;
-		}else if(getTime < 60 * 60 * 24){
-			return "昨天" + " " + hour + ":" +minute;
-		}else{
-			return dayNum+" "+year+"-"+month+"-"+day+" "+hour+":"+minute;
-		}
-	},
-	spaceTime(old, now) {
-		old = new Date(old)
-		now = new Date(now)
-		let told = old.getTime()
-		let tnow = now.getTime()
-		if(told > (tnow + 1000 * 60 * 5)) {
-			return now
-		}else {
-			return ''
-		}
-	}
-}
-
diff --git a/debugdate/debugdate.js b/debugdate/debugdate.js
deleted file mode 100644
index b22430e..0000000
--- a/debugdate/debugdate.js
+++ /dev/null
@@ -1,357 +0,0 @@
-export default {
-	friends() {
-		let friendArr = [
-			{
-				id: 1,
-				name: '王野未',
-				head: require('@/static/images/index/top-bar/me.jpg'),
-				mess: '做个好梦',
-				data: new Date(),
-				tip: 1,
-				email: 'wangyewei1@foxmail.com',
-				intro: '求知若渴,虚心若愚',
-				sex: 'male',
-				sexImg: require('@/static/images/userhome/male.png')
-			},
-			{
-				id: 2,
-				name: '孟子',
-				head: require('@/static/images/index/friend-list/mengzi.jpg'),
-				mess: '所以我也想不通我要睡啥子觉,为了他们晓得',
-				data: new Date(),
-				tip: 0,
-				email: 'mengzi@163.com',
-				intro: '我的身体还有我的灵魂都没法知足,所以我也想不通我要睡啥子觉,为了他们晓得,为了妈跟老汉儿,如果我起不来就该被驾驶骂',
-				sex: 'male',
-				sexImg: require('@/static/images/userhome/male.png')
-			},
-			{
-				id: 3,
-				name: '谢帝',
-				head: require('@/static/images/index/friend-list/xiedi.jpg'),
-				mess: '是学校的赘肉,试卷上躺了我的遗骸,我拿起笔来',
-				data: new Date(),
-				tip: 2,
-				email: 'xiedi@163.com',
-				intro: '说唱在我心中还是一如既往的根本不用去想的去讲的保持一贯风靡',
-				sex: 'male',
-				sexImg: require('@/static/images/userhome/male.png')
-			},
-			{
-				id: 4,
-				name: '水原希子',
-				head: require('@/static/images/index/friend-list/kiko.jpg'),
-				mess: '早点休息哦宝贝',
-				data: new Date(),
-				tip: 208,
-				email: 'kiko@163.com',
-				intro: '水原希子(Mizuhara Kiko),1990年10月15日出生于美国德克萨斯州达拉斯。演员、模特。曾是日本杂志《ViVi》及日版《Seventeen》的专属模特',
-				sex: 'famale',
-				sexImg: require('@/static/images/userhome/famale.png')
-			},
-			{
-				id: 5,
-				mess: '吃点串呀',
-				data: new Date(),
-				tip: 1,
-				name: '撸串研究生',
-				email: 'luchuanyanjiusheng@foxmail.com',
-				head: require('@/static/images/search/searchresultImg1.jpg'),
-				intro: '我爱吃串',
-				sex: 'male',
-				sexImg: require('@/static/images/userhome/male.png')
-			},
-			{
-				id: 6,
-				mess: '你发现我了呀',
-				data: new Date(),
-				tip: 1,
-				name: '港城宝藏女孩',
-				email: 'gangchengbaozangnvhai@foxmail.com',
-				head: require('@/static/images/search/searchresultImg2.jpg'),
-				intro: '你在看我主页吗?',
-				sex: 'famale',
-				sexImg: require('@/static/images/userhome/famale.png')
-			},
-			{
-				id: 7,
-				mess: '哦',
-				data: new Date(),
-				tip: 1,
-				name: '不解风情的老妖怪',
-				email: 'yimiwuxiaokeai@foxmail.com',
-				head: require('@/static/images/search/searchresultImg3.jpg'),
-				intro: '为什么给我分配一些情侣头像啊',
-				sex: 'male',
-				sexImg: require('@/static/images/userhome/male.png')
-			},
-			{
-				id: 8,
-				mess: '晚上好呀~',
-				data: new Date(),
-				tip: 1,
-				name: '一米五的小可爱',
-				email: 'bujiefengqinglaotaoguai@foxmail.com',
-				head: require('@/static/images/search/searchresultImg4.jpg'),
-				intro: '个子矮矮,可可爱爱',
-				sex: 'famale',
-				sexImg: require('@/static/images/userhome/famale.png')
-			},
-			{
-				id: 9,
-				mess: '没钱还花呗了呀',
-				data: new Date(),
-				tip: 5,
-				name: '马云背后的女人',
-				email: 'ziwofoudingxianquzhe@foxmail.com',
-				head: require('@/static/images/search/searchresultImg5.jpg'),
-				intro: '马云靠我养',
-				sex: 'famale',
-				sexImg: require('@/static/images/userhome/famale.png')
-			},
-			{
-				id: 10,
-				mess: '我不行',
-				data: new Date(),
-				tip: 1,
-				name: '自我否定先驱者',
-				email: 'mayunbeihoudenvren@foxmail.com',
-				head: require('@/static/images/search/searchresultImg6.jpg'),
-				intro: '国际一级退堂鼓演奏家',
-				sex: 'male',
-				sexImg: require('@/static/images/userhome/male.png')
-			},
-			{
-				id: 11,
-				mess: '乖哦~',
-				data: new Date(),
-				tip: 5,
-				name: '联合国认证小可爱',
-				email: 'guojiatejibubaohudongwu@foxmail.com',
-				head: require('@/static/images/search/searchresultImg7.jpg'),
-				sex: 'famale',
-				sexImg: require('@/static/images/userhome/famale.png')
-			},
-			{
-				id: 12,
-				mess: '我又被打了',
-				data: new Date(),
-				tip: 20,
-				name: '国家特级不保护动物',
-				email: 'lianheguorenzhengxiaokeai@foxmail.com',
-				head: require('@/static/images/search/searchresultImg8.jpg'),
-				intro: '针对我?',
-				sex: 'male',
-				sexImg: require('@/static/images/userhome/male.png')
-			}
-			
-			
-		]
-		return friendArr
-	},
-	applys(){
-		let applyArr = [
-			{
-				name:'好友申请',
-				head: require('@/static/images/index/friend-list/apply.png'),
-				mess: '若人生只如初见~',
-				tip: '3'
-			}
-		]
-		return applyArr
-	},
-	isFriend(){
-		let isfriend = [
-			{
-				userid:1,
-				friend:2
-			},
-			{
-				userid:1,
-				friend:3
-			},
-			{
-				userid:1,
-				friend:4
-			},
-			{
-				userid:1,
-				friend:5
-			},
-			{
-				userid:1,
-				friend:9
-			},
-			{
-				userid:1,
-				friend:1,
-			}
-		]
-		return isfriend
-	},
-	firendsRequest(){
-		let friendRequests = [
-			{
-				name: '马云',
-				head: require('@/static/images/friendrequest/mayun.jpg'),
-				message: '王总您好,我是阿里巴巴马云,刚才有跟你致电。',
-				date: new Date()
-			},
-			{
-				name: '尤雨溪 Evan You',
-				head: require('@/static/images/friendrequest/evanyou.jpg'),
-				message: '我是Vue.js尤雨溪',
-				date: new Date()
-			},
-			{
-				name: '福布斯·中国',
-				head: require('@/static/images/friendrequest/Forbes.jpg'),
-				message: '王总您好,恭喜您入围2020福布斯富豪排行榜',
-				date: new Date()
-			}
-		]
-		return friendRequests
-	},
-	// 聊天消息
-	message(){
-		let msgs = [
-			// {
-			// 	id: 1,
-			// 	imgUrl; 'me.jpg',
-			// 	message: 'I miss u TaoXingyu',
-			// 	types: 0,
-			// 	time: new Date(),
-			// 	tip: ''
-			// },
-			{
-				id: 4,
-				imgUrl: 'kiko.jpg',
-				message: '增加数据条数',
-				types: 0,
-				time: new Date(),
-				tip: 13
-			},
-			{
-				id: 4,
-				imgUrl: 'kiko.jpg',
-				message: '开始写分页加载 2020/8/24',
-				types: 0,
-				time: new Date(),
-				tip: 12
-			},
-			{
-				id: 4,
-				imgUrl: 'kiko.jpg',
-				message: {
-					name: 'Komehyo',
-					address: '〒104-0061 東京都中央区銀座5丁目6−12 1F~4F みゆきビル',
-					latitude: '35.40159',
-					longitude: '139.45488'
-				},
-				types:3,
-				time:new Date(),
-				tip: 11
-			},
-			{
-				id: 1,
-				imgUrl: 'me.jpg',
-				message: {
-					name: '春熙路',
-					address: '四川省成都市锦江区春熙路',
-					latitude: '30.65331',
-					longitude: '104.07775'
-				},
-				types:3,
-				time:new Date(),
-				tip: 10
-			},
-			{
-				id: 1,
-				message: {
-					voice: 'b',
-					time: 5
-				},
-				imgUrl: 'me.jpg',
-				types: 2,
-				time: new Date(),
-				tip: 9
-			},
-			{
-				id: 4,
-				message: {
-					voice: 'a',
-					time: 60
-				},
-				imgUrl: 'kiko.jpg',
-				types: 2,
-				time: new Date(),
-				tip: 8
-			},
-			{
-				id: 1,
-				message: '我在写BUG',
-				imgUrl: 'me.jpg',
-				types: 0,
-				time: new Date() - 1000 * 60 * 10,
-				tip: 7
-			},
-			{
-				id: 4,
-				message: '你还在写代码吗?',
-				imgUrl: 'kiko.jpg',
-				types: 0,
-				time: new Date() - 1000 * 60 * 10,
-				tip: 6
-			},
-			{
-				id: 1,
-				message: '你每天都好看',
-				imgUrl: 'me.jpg',
-				types: 0,
-				time: new Date() - 1000,
-				tip: 5
-			},
-			{
-				id: 4,
-				message: 'kiko.jpg',
-				imgUrl: 'kiko.jpg',
-				types: 1,
-				time: new Date() - 1000,
-				tip: 4
-			},
-			{
-				id: 4,
-				message: '嘻嘻,你看我今天好不好看',
-				imgUrl: 'kiko.jpg',
-				types: 0,
-				time: new Date() - 1000 * 60 * 60,
-				tip: 3
-			},
-			{
-				id: 1,
-				message: '傻瓜,端午要说安康哦',
-				imgUrl: 'me.jpg',
-				types: 0,
-				time: new Date() - 1000 * 60 * 60,
-				tip: 2
-			},
-			{
-				id: 4,
-				message: '今天是端午节哦,端午节快乐',
-				imgUrl: 'kiko.jpg',
-				types: 0,
-				time: new Date() - 1000 * 60 * 600 ,
-				tip: 1
-			},
-			{
-				id: 4,
-				message: '早哦,宝贝',
-				imgUrl: 'kiko.jpg',
-				types: 0,
-				time: new Date() - 1000 * 60 * 600,
-				tip: 0
-			},
-		]
-		return msgs
-	}
-}
\ No newline at end of file
diff --git a/exam-app.iml b/exam-app.iml
deleted file mode 100644
index 48426fc..0000000
--- a/exam-app.iml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module type="JAVA_MODULE" version="4">
-  <component name="NewModuleRootManager">
-    <output url="file://$MODULE_DIR$/bin" />
-    <exclude-output />
-    <content url="file://$MODULE_DIR$" />
-    <orderEntry type="sourceFolder" forTests="false" />
-  </component>
-</module>
\ No newline at end of file
diff --git a/http/api.js b/http/api.js
deleted file mode 100644
index 93043ac..0000000
--- a/http/api.js
+++ /dev/null
@@ -1,62 +0,0 @@
-import {
-	clientId,
-	clientSecret
-} from '@/common/setting'
-import {
-	options
-} from '@/http/config.js';
-import {
-	Base64
-} from '@/utils/base64.js';
-import Request from '@/utils/luch-request/index.js';
-const http = new Request(options);
-http.interceptors.request.use((config) => { // 可使用async await 做异步操作
-	// 假设有token值需要在头部需要携带
-	let accessToken = uni.getStorageSync('accessToken');
-	if (accessToken) {
-		config.header['Blade-Auth'] = 'bearer ' + accessToken;
-	}
-	// 客户端认证参数
-	config.header['Authorization'] = 'Basic ' + Base64.encode(clientId + ':' + clientSecret);
-
-	// 额外参数
-	// config.data = config.data || {};
-	// config.data.pf = uni.getSystemInfoSync().platform;
-	// config.data.sys = uni.getSystemInfoSync().system;
-
-	// 演示custom 用处
-	// if (config.custom.auth) {
-	//   config.header.token = 'token'
-	// }
-	// if (config.custom.loading) {
-	//  uni.showLoading()
-	// }
-	/**
-	 /* 演示
-	 if (!token) { // 如果token不存在,return Promise.reject(config) 会取消本次请求
-	    return Promise.reject(config)
-	  }
-	 **/
-	return config
-}, config => { // 可使用async await 做异步操作
-	return Promise.reject(config)
-})
-http.interceptors.response.use((response) => {
-	// 若有数据返回则通过
-	if (response.data.access_token || response.data.key) {
-		return response.data
-	}
-	// 服务端返回的状态码不等于200,则reject()
-	if (response.data.code !== 200) {
-		return Promise.reject(response);
-	}
-	return response.data;
-}, (response) => {
-	/*  对响应错误做点什么 (statusCode !== 200)*/
-	uni.showToast({
-		title: response.data.msg,
-		icon: 'none'
-	});
-	return Promise.reject(response)
-})
-export default http;
diff --git a/http/config.js b/http/config.js
deleted file mode 100644
index ed8840a..0000000
--- a/http/config.js
+++ /dev/null
@@ -1,44 +0,0 @@
-import {
-	devUrl,
-	prodUrl,
-	contentType
-} from '@/common/setting'
-
-var options = {
-	baseURL: process.env.NODE_ENV === 'development' ? devUrl : prodUrl,
-	header: {
-		'Content-Type': contentType
-	},
-	method: 'POST',
-	dataType: 'json',
-	// #ifndef MP-ALIPAY || APP-PLUS
-	responseType: 'text',
-	// #endif
-	// 注:如果局部custom与全局custom有同名属性,则后面的属性会覆盖前面的属性,相当于Object.assign(全局,局部)
-	custom: {}, // 全局自定义参数默认值
-	// #ifdef MP-ALIPAY || MP-WEIXIN
-	timeout: 30000,
-	// #endif
-	// #ifdef APP-PLUS
-	sslVerify: true,
-	// #endif
-	// #ifdef H5
-	// 跨域请求时是否携带凭证(cookies)仅H5支持(HBuilderX 2.6.15+)
-	//withCredentials: false,
-	// #endif
-	// #ifdef APP-PLUS
-	firstIpv4: false, // DNS解析时优先使用ipv4 仅 App-Android 支持 (HBuilderX 2.8.0+)
-	// #endif
-	// 局部优先级高于全局,返回当前请求的task,options。请勿在此处修改options。非必填
-	// getTask: (task, options) => {
-	// 相当于设置了请求超时时间500ms
-	//   setTimeout(() => {
-	//     task.abort()
-	//   }, 500)
-	// },
-	// 全局自定义验证器。参数为statusCode 且必存在,不用判断空情况。
-	// validateStatus: (statusCode) => { // statusCode 必存在。此处示例为全局默认配置
-	// 	return statusCode >= 200 && statusCode < 300
-	// }
-};
-export { options };
diff --git a/http/install.js b/http/install.js
deleted file mode 100644
index 9deb318..0000000
--- a/http/install.js
+++ /dev/null
@@ -1,18 +0,0 @@
-// 获取api目录所有js文件
-const files = require.context('@/api', false, /\.js$/)
-// 此处第二个参数vm,就是我们在页面使用的this,可以通过vm获取vuex等操作
-const install = (Vue, vm) => {
-	// 将各个定义的接口名称,统一放进对象挂载到vm.$u.api下(因为vm就是this,也即this.$u.api)
-	// 自动将所有api挂载到vm.$u.api中
-	vm.$u.api = {}
-	files.keys().forEach(key => {
-		const api = files(key).default
-		for (let item in api) {
-			vm.$u.api[item] = api[item]
-		}
-	})
-}
-
-export default {
-	install
-}
diff --git a/js_sdk/wa-permission/permission.js b/js_sdk/wa-permission/permission.js
deleted file mode 100644
index 9981504..0000000
--- a/js_sdk/wa-permission/permission.js
+++ /dev/null
@@ -1,272 +0,0 @@
-/**
- * 本模块封装了Android、iOS的应用权限判断、打开应用权限设置界面、以及位置系统服务是否开启
- */
-
-var isIos
-// #ifdef APP-PLUS
-isIos = (plus.os.name == "iOS")
-// #endif
-
-// 判断推送权限是否开启
-function judgeIosPermissionPush() {
-	var result = false;
-	var UIApplication = plus.ios.import("UIApplication");
-	var app = UIApplication.sharedApplication();
-	var enabledTypes = 0;
-	if (app.currentUserNotificationSettings) {
-		var settings = app.currentUserNotificationSettings();
-		enabledTypes = settings.plusGetAttribute("types");
-		console.log("enabledTypes1:" + enabledTypes);
-		if (enabledTypes == 0) {
-			console.log("推送权限没有开启");
-		} else {
-			result = true;
-			console.log("已经开启推送功能!")
-		}
-		plus.ios.deleteObject(settings);
-	} else {
-		enabledTypes = app.enabledRemoteNotificationTypes();
-		if (enabledTypes == 0) {
-			console.log("推送权限没有开启!");
-		} else {
-			result = true;
-			console.log("已经开启推送功能!")
-		}
-		console.log("enabledTypes2:" + enabledTypes);
-	}
-	plus.ios.deleteObject(app);
-	plus.ios.deleteObject(UIApplication);
-	return result;
-}
-
-// 判断定位权限是否开启
-function judgeIosPermissionLocation() {
-	var result = false;
-	var cllocationManger = plus.ios.import("CLLocationManager");
-	var status = cllocationManger.authorizationStatus();
-	result = (status != 2)
-	console.log("定位权限开启:" + result);
-	// 以下代码判断了手机设备的定位是否关闭,推荐另行使用方法 checkSystemEnableLocation
-	/* var enable = cllocationManger.locationServicesEnabled();
-	var status = cllocationManger.authorizationStatus();
-	console.log("enable:" + enable);
-	console.log("status:" + status);
-	if (enable && status != 2) {
-		result = true;
-		console.log("手机定位服务已开启且已授予定位权限");
-	} else {
-		console.log("手机系统的定位没有打开或未给予定位权限");
-	} */
-	plus.ios.deleteObject(cllocationManger);
-	return result;
-}
-
-// 判断麦克风权限是否开启
-function judgeIosPermissionRecord() {
-	var result = false;
-	var avaudiosession = plus.ios.import("AVAudioSession");
-	var avaudio = avaudiosession.sharedInstance();
-	var permissionStatus = avaudio.recordPermission();
-	console.log("permissionStatus:" + permissionStatus);
-	if (permissionStatus == 1684369017 || permissionStatus == 1970168948) {
-		console.log("麦克风权限没有开启");
-	} else {
-		result = true;
-		console.log("麦克风权限已经开启");
-	}
-	plus.ios.deleteObject(avaudiosession);
-	return result;
-}
-
-// 判断相机权限是否开启
-function judgeIosPermissionCamera() {
-	var result = false;
-	var AVCaptureDevice = plus.ios.import("AVCaptureDevice");
-	var authStatus = AVCaptureDevice.authorizationStatusForMediaType('vide');
-	console.log("authStatus:" + authStatus);
-	if (authStatus == 3) {
-		result = true;
-		console.log("相机权限已经开启");
-	} else {
-		console.log("相机权限没有开启");
-	}
-	plus.ios.deleteObject(AVCaptureDevice);
-	return result;
-}
-
-// 判断相册权限是否开启
-function judgeIosPermissionPhotoLibrary() {
-	var result = false;
-	var PHPhotoLibrary = plus.ios.import("PHPhotoLibrary");
-	var authStatus = PHPhotoLibrary.authorizationStatus();
-	console.log("authStatus:" + authStatus);
-	if (authStatus == 3) {
-		result = true;
-		console.log("相册权限已经开启");
-	} else {
-		console.log("相册权限没有开启");
-	}
-	plus.ios.deleteObject(PHPhotoLibrary);
-	return result;
-}
-
-// 判断通讯录权限是否开启
-function judgeIosPermissionContact() {
-	var result = false;
-	var CNContactStore = plus.ios.import("CNContactStore");
-	var cnAuthStatus = CNContactStore.authorizationStatusForEntityType(0);
-	if (cnAuthStatus == 3) {
-		result = true;
-		console.log("通讯录权限已经开启");
-	} else {
-		console.log("通讯录权限没有开启");
-	}
-	plus.ios.deleteObject(CNContactStore);
-	return result;
-}
-
-// 判断日历权限是否开启
-function judgeIosPermissionCalendar() {
-	var result = false;
-	var EKEventStore = plus.ios.import("EKEventStore");
-	var ekAuthStatus = EKEventStore.authorizationStatusForEntityType(0);
-	if (ekAuthStatus == 3) {
-		result = true;
-		console.log("日历权限已经开启");
-	} else {
-		console.log("日历权限没有开启");
-	}
-	plus.ios.deleteObject(EKEventStore);
-	return result;
-}
-
-// 判断备忘录权限是否开启
-function judgeIosPermissionMemo() {
-	var result = false;
-	var EKEventStore = plus.ios.import("EKEventStore");
-	var ekAuthStatus = EKEventStore.authorizationStatusForEntityType(1);
-	if (ekAuthStatus == 3) {
-		result = true;
-		console.log("备忘录权限已经开启");
-	} else {
-		console.log("备忘录权限没有开启");
-	}
-	plus.ios.deleteObject(EKEventStore);
-	return result;
-}
-
-// Android权限查询
-function requestAndroidPermission(permissionID) {
-	return new Promise((resolve, reject) => {
-		plus.android.requestPermissions(
-			[permissionID], // 理论上支持多个权限同时查询,但实际上本函数封装只处理了一个权限的情况。有需要的可自行扩展封装
-			function(resultObj) {
-				var result = 0;
-				for (var i = 0; i < resultObj.granted.length; i++) {
-					var grantedPermission = resultObj.granted[i];
-					console.log('已获取的权限:' + grantedPermission);
-					result = 1
-				}
-				for (var i = 0; i < resultObj.deniedPresent.length; i++) {
-					var deniedPresentPermission = resultObj.deniedPresent[i];
-					console.log('拒绝本次申请的权限:' + deniedPresentPermission);
-					result = 0
-				}
-				for (var i = 0; i < resultObj.deniedAlways.length; i++) {
-					var deniedAlwaysPermission = resultObj.deniedAlways[i];
-					console.log('永久拒绝申请的权限:' + deniedAlwaysPermission);
-					result = -1
-				}
-				resolve(result);
-				// 若所需权限被拒绝,则打开APP设置界面,可以在APP设置界面打开相应权限
-				// if (result != 1) {
-				// gotoAppPermissionSetting()
-				// }
-			},
-			function(error) {
-				console.log('申请权限错误:' + error.code + " = " + error.message);
-				resolve({
-					code: error.code,
-					message: error.message
-				});
-			}
-		);
-	});
-}
-
-// 使用一个方法,根据参数判断权限
-function judgeIosPermission(permissionID) {
-	if (permissionID == "location") {
-		return judgeIosPermissionLocation()
-	} else if (permissionID == "camera") {
-		return judgeIosPermissionCamera()
-	} else if (permissionID == "photoLibrary") {
-		return judgeIosPermissionPhotoLibrary()
-	} else if (permissionID == "record") {
-		return judgeIosPermissionRecord()
-	} else if (permissionID == "push") {
-		return judgeIosPermissionPush()
-	} else if (permissionID == "contact") {
-		return judgeIosPermissionContact()
-	} else if (permissionID == "calendar") {
-		return judgeIosPermissionCalendar()
-	} else if (permissionID == "memo") {
-		return judgeIosPermissionMemo()
-	}
-	return false;
-}
-
-// 跳转到**应用**的权限页面
-function gotoAppPermissionSetting() {
-	if (isIos) {
-		var UIApplication = plus.ios.import("UIApplication");
-		var application2 = UIApplication.sharedApplication();
-		var NSURL2 = plus.ios.import("NSURL");
-		// var setting2 = NSURL2.URLWithString("prefs:root=LOCATION_SERVICES");		
-		var setting2 = NSURL2.URLWithString("app-settings:");
-		application2.openURL(setting2);
-
-		plus.ios.deleteObject(setting2);
-		plus.ios.deleteObject(NSURL2);
-		plus.ios.deleteObject(application2);
-	} else {
-		// console.log(plus.device.vendor);
-		var Intent = plus.android.importClass("android.content.Intent");
-		var Settings = plus.android.importClass("android.provider.Settings");
-		var Uri = plus.android.importClass("android.net.Uri");
-		var mainActivity = plus.android.runtimeMainActivity();
-		var intent = new Intent();
-		intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
-		var uri = Uri.fromParts("package", mainActivity.getPackageName(), null);
-		intent.setData(uri);
-		mainActivity.startActivity(intent);
-	}
-}
-
-// 检查系统的设备服务是否开启
-// var checkSystemEnableLocation = async function () {
-function checkSystemEnableLocation() {
-	if (isIos) {
-		var result = false;
-		var cllocationManger = plus.ios.import("CLLocationManager");
-		var result = cllocationManger.locationServicesEnabled();
-		console.log("系统定位开启:" + result);
-		plus.ios.deleteObject(cllocationManger);
-		return result;
-	} else {
-		var context = plus.android.importClass("android.content.Context");
-		var locationManager = plus.android.importClass("android.location.LocationManager");
-		var main = plus.android.runtimeMainActivity();
-		var mainSvr = main.getSystemService(context.LOCATION_SERVICE);
-		var result = mainSvr.isProviderEnabled(locationManager.GPS_PROVIDER);
-		console.log("系统定位开启:" + result);
-		return result
-	}
-}
-
-module.exports = {
-	judgeIosPermission: judgeIosPermission,
-	requestAndroidPermission: requestAndroidPermission,
-	checkSystemEnableLocation: checkSystemEnableLocation,
-	gotoAppPermissionSetting: gotoAppPermissionSetting
-}
diff --git a/main.js b/main.js
deleted file mode 100644
index fafec06..0000000
--- a/main.js
+++ /dev/null
@@ -1,33 +0,0 @@
-import Vue from 'vue'
-import App from './App'
-import store from '@/store';
-
-Vue.config.productionTip = false;
-
-App.mpType = 'app';
-
-// 引入全局uView
-import uView from 'uview-ui'
-Vue.use(uView);
-
-// 引入vuex
-const vuexStore = require("@/store/$u.mixin.js");
-Vue.mixin(vuexStore);
-
-// 创建对象
-const app = new Vue({
-	store,
-    ...App
-});
-
-// 接口集中管理
-import httpInstall from '@/http/install.js'
-Vue.use(httpInstall, app)
-
-
- 
-// 公共函数
-import globalFunc from '@/utils/func.js'
-Vue.use(globalFunc, app);
-
-app.$mount()
diff --git a/manifest.json b/manifest.json
deleted file mode 100644
index 5ca46f2..0000000
--- a/manifest.json
+++ /dev/null
@@ -1,148 +0,0 @@
-{
-    "name" : "智慧保安",
-    "appid" : "__UNI__6A6A0FC",
-    "description" : "",
-    "versionName" : "1.0.0",
-    "versionCode" : "100",
-    "transformPx" : false,
-    /* 5+App特有相关 */
-    "app-plus" : {
-        "safearea" : {
-            "bottom" : {
-                "offset" : "none"
-            }
-        },
-        "usingComponents" : true,
-        "nvueCompiler" : "uni-app",
-        "compilerVersion" : 3,
-        "splashscreen" : {
-            "alwaysShowBeforeRender" : true,
-            "waiting" : true,
-            "autoclose" : true,
-            "delay" : 0
-        },
-        /* 模块配置 */
-        "modules" : {
-            "Geolocation" : {},
-            "Maps" : {}
-        },
-        /* 应用发布信息 */
-        "distribute" : {
-            /* android打包配置 */
-            "android" : {
-                "permissions" : [
-                    "<uses-feature android:name=\"android.hardware.camera\"/>",
-                    "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
-                    "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",
-                    "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
-                    "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
-                    "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
-                    "<uses-permission android:name=\"android.permission.CALL_PHONE\"/>",
-                    "<uses-permission android:name=\"android.permission.CAMERA\"/>",
-                    "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
-                    "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
-                    "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
-                    "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
-                    "<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>",
-                    "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
-                    "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
-                    "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
-                    "<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>",
-                    "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
-                    "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
-                    "<uses-permission android:name=\"android.permission.WRITE_CONTACTS\"/>",
-                    "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
-                ],
-                "abiFilters" : [ "armeabi-v7a", "arm64-v8a", "x86" ]
-            },
-            /* ios打包配置 */
-            "ios" : {},
-            /* SDK配置 */
-            "sdkConfigs" : {
-                "ad" : {},
-                "geolocation" : {
-                    "baidu" : {
-                        "__platform__" : [ "ios", "android" ],
-                        "appkey_ios" : "T7RBZ-62U3X-RSQ4P-ZZVCB-WE7JT-HRBOG",
-                        "appkey_android" : "T7RBZ-62U3X-RSQ4P-ZZVCB-WE7JT-HRBOG"
-                    }
-                },
-                "maps" : {}
-            },
-            "icons" : {
-                "android" : {
-                    "hdpi" : "unpackage/res/icons/72x72.png",
-                    "xhdpi" : "unpackage/res/icons/96x96.png",
-                    "xxhdpi" : "unpackage/res/icons/144x144.png",
-                    "xxxhdpi" : "unpackage/res/icons/192x192.png"
-                },
-                "ios" : {
-                    "appstore" : "unpackage/res/icons/1024x1024.png",
-                    "ipad" : {
-                        "app" : "unpackage/res/icons/76x76.png",
-                        "app@2x" : "unpackage/res/icons/152x152.png",
-                        "notification" : "unpackage/res/icons/20x20.png",
-                        "notification@2x" : "unpackage/res/icons/40x40.png",
-                        "proapp@2x" : "unpackage/res/icons/167x167.png",
-                        "settings" : "unpackage/res/icons/29x29.png",
-                        "settings@2x" : "unpackage/res/icons/58x58.png",
-                        "spotlight" : "unpackage/res/icons/40x40.png",
-                        "spotlight@2x" : "unpackage/res/icons/80x80.png"
-                    },
-                    "iphone" : {
-                        "app@2x" : "unpackage/res/icons/120x120.png",
-                        "app@3x" : "unpackage/res/icons/180x180.png",
-                        "notification@2x" : "unpackage/res/icons/40x40.png",
-                        "notification@3x" : "unpackage/res/icons/60x60.png",
-                        "settings@2x" : "unpackage/res/icons/58x58.png",
-                        "settings@3x" : "unpackage/res/icons/87x87.png",
-                        "spotlight@2x" : "unpackage/res/icons/80x80.png",
-                        "spotlight@3x" : "unpackage/res/icons/120x120.png"
-                    }
-                }
-            }
-        },
-        "nativePlugins" : {
-            "AR-RtcModule" : {
-                "__plugin_info__" : {
-                    "name" : "AR-RtcModule",
-                    "description" : "anyRTC音视频插件提供音视频功能,支持Android、iOS。",
-                    "platforms" : "Android,iOS",
-                    "url" : "",
-                    "android_package_name" : "",
-                    "ios_bundle_id" : "",
-                    "isCloud" : false,
-                    "bought" : -1,
-                    "pid" : "",
-                    "parameters" : {}
-                }
-            }
-        }
-    },
-    /* 快应用特有相关 */
-    "quickapp" : {},
-    /* 小程序特有相关 */
-    "mp-weixin" : {
-        "appid" : "wxc256e348c4032ebd",
-        "setting" : {
-            "urlCheck" : false
-        },
-        "usingComponents" : true
-    },
-    "mp-alipay" : {
-        "usingComponents" : true
-    },
-    "mp-baidu" : {
-        "usingComponents" : true
-    },
-    "mp-toutiao" : {
-        "usingComponents" : true
-    },
-    "h5" : {
-        "template" : "template.h5.html",
-        "router" : {
-            "mode" : "hash",
-            "base" : "/rider/"
-        }
-    }
-}
diff --git a/map/lib/FlareClusterLayer_v3.js b/map/lib/FlareClusterLayer_v3.js
deleted file mode 100644
index 55b84c2..0000000
--- a/map/lib/FlareClusterLayer_v3.js
+++ /dev/null
@@ -1,1336 +0,0 @@
-define([
-  "dojo/_base/declare",
-  "dojo/_base/lang",
-  "dojo/_base/array",
-  "dojo/on",
-  "dojo/fx",
-  "dojox/gfx",
-  "dojox/gfx/fx",
-  "dojox/gesture/tap",
-  "esri/SpatialReference",
-  "esri/geometry/Extent",
-  "esri/geometry/Multipoint",
-  "esri/geometry/Point",
-  "esri/geometry/Polygon",
-  "esri/geometry/ScreenPoint",
-  "esri/geometry/webMercatorUtils",
-  "esri/geometry/geometryEngine",
-  "esri/graphic",
-  "esri/Color",
-  "esri/renderers/ClassBreaksRenderer",
-  "esri/symbols/Font",
-  "esri/symbols/SimpleMarkerSymbol",
-  "esri/symbols/SimpleFillSymbol",
-  "esri/symbols/SimpleLineSymbol",
-  "esri/symbols/TextSymbol",
-  "esri/dijit/PopupTemplate",
-  "esri/layers/GraphicsLayer"
-], function (
-  declare, lang, arrayUtils, on, coreFx, gfx, fx, tap,
-  SpatialReference, Extent, Multipoint, Point, Polygon, ScreenPoint, webMercatorUtils, geometryEngine, Graphic,
-  Color, ClassBreaksRenderer, Font, SimpleMarkerSymbol, SimpleFillSymbol, SimpleLineSymbol, TextSymbol,
-  PopupTemplate, GraphicsLayer
-) {
-  return declare([GraphicsLayer], {
-    constructor: function (options) {
-      /* options description:
-        spatialReference: default 102100. A SpatialReference object using the wkid of that data.
-        preClustered (boolean) : default false. Whether the data is pre-clustered or not. If true the addPreClusteredData method should be used to add data.
-                                  If false use addData method and clusters will be calculated within the layer.
-        clusterRatio (number): default 75. When not pre clustered this is the ratio to divide the width and height of the map by which is used to draw up a grid to represent cluster areas. Experiment based on your data.
-        displaySubTypeFlares (boolean): default false. Whether to dipslay flares for sub types (ie the count of a property). If this is true, then subTypeFlareProperty must also be set
-        subTypeFlareProperty (string): default null. If specified and displaySubTypeFlares is true, layer will display flares that contain a count of the objects that have the same value for the configured property.
-        flareColor (esri/Color) : default new Color([0, 0, 0, 0.5]). The color for flares.
-        maxFlareCount (number): default 8. The max number of flares to display. If this is too high they may overlap, depends on the size of the cluster symbols.
-        displaySingleFlaresAtCount (number): default 8. If a cluster contains this count or less it will display flare that represent single objects. If it contains greater than this count it will display sub type flares if they have been configured to be displayed.
-        singleFlareTooltipProperty (string): default null. Property name to get the values for display in a single point flares tooltips.
-        textSymbol (esri/symbols/TextSymbol): default set below. The text symbol to use in clusters
-        flareShowMode (string): default 'mouse'. Must be 'mouse' or 'tap'. On a mouse enabled device whether to show the flares on mouse enter and hide on mouse leave, or on tap / click. Devices with no mouse will behave like 'tap' anyway.
-        clusteringBegin (function): default null. A basic callback function that get's fired when clustering is beginning.
-        clusteringComplete (function): default null. A basic callback function that get's fired when clustering is complete.
-        clusterAreaDisplay (string): default null. Can be either 'always' or 'hover'. 'always' will constantly display the cluster area, 'hover' will only display it on hover of cluster object
-                                                   The cluster area is a ploygon of the total area covered by the points in a cluster. If using preClustered data, each cluster object must contain a property called 'points' which is an array of points for every point in the cluster. example: cluster.points = [[x1, y1], [x2, y2], [x3, y3]];
-        clusterAreaRenderer (Renderer): default null. This is required if clusterAreaDisplay is set. This can be set in options constructor object or by calling setRenderer as the second argument.
-        xPropertyName (string): default 'x'.  This is the name of the field in the dataset that represents the x coordinate.
-        yPropertyName (string): default 'y'.  This is the name of the field in the dataset that represents the y coordinate.
-        idPropertyName (string): default null. This is the name of the field in the dataset that represents a unique id which can be used to identify the flare.  This is usefull when you may have multiple points with the same lat/long.
-      */
-
-      //set options from constructor parameter or set defaults
-      options = options || {};
-      this.spatialRef = options.spatialReference || new SpatialReference({"wkid": 102100});
-      this.preClustered = options.preClustered === true;
-      this.clusterRatio = options.clusterRatio || 75;
-
-      this.displaySubTypeFlares = options.displaySubTypeFlares === true;
-      this.subTypeFlareProperty = options.subTypeFlareProperty || null;
-
-      this.flareColor = options.flareColor || new Color([0, 0, 0, 0.5]);
-      this.maxFlareCount = options.maxFlareCount || 8;
-      this.displaySingleFlaresAtCount = options.displaySingleFlaresAtCount || 8;
-      this.singleFlareTooltipProperty = options.singleFlareTooltipProperty || null;
-      var defaultTextSymbol = new TextSymbol()
-        .setColor(new Color([255, 255, 255]))
-        .setAlign(Font.ALIGN_START)
-        .setFont(new Font("10pt").setWeight(Font.WEIGHT_BOLD).setFamily("calibri"))
-        .setVerticalAlignment("middle");
-      defaultTextSymbol.font.size = 14;
-      this.textSymbol = options.textSymbol || defaultTextSymbol;
-      this.flareShowMode = options.flareShowMode || "mouse";
-
-      //a couple of callbacks - could make them into events on the layer, and/or have the clustering return deferreds.
-      this.clusteringBegin = options.clusteringBegin;
-      this.clusteringComplete = options.clusteringComplete;
-
-      this.clusterAreaDisplay = options.clusterAreaDisplay;
-      this.clusterAreaRenderer = options.clusterAreaRenderer;
-
-      this.xPropertyName = options.xPropertyName || 'x';
-      this.yPropertyName = options.yPropertyName || 'y';
-      this.idPropertyName = options.idPropertyName || null;
-
-      if (this.clusterAreaDisplay && (this.clusterAreaDisplay !== 'always' && this.clusterAreaDisplay !== 'hover')) {
-        console.error("clusterAreaDisplay can only be 'always' or 'hover'.");
-        return;
-      }
-
-
-      if (this.flareShowMode !== "mouse" && this.flareShowMode !== "tap") {
-        console.error("flareShowMode option can only be 'mouse' or 'tap'");
-        return;
-      }
-
-      //init some stuff
-      this.animationMultipleType = {
-        combine: "combine",
-        chain: "chain"
-      };
-
-      this.events = [];
-      this.graphicEvents = [];
-      this.animationsRunning = [];
-      this.clusters = [];
-      this.singles = [];
-
-    },
-
-
-    //#region override some GraphicsLayer methods
-
-    //add an extra argument to setRenderer. It is an optional renderer for displaying the cluster areas. The clusterAreaRenderer can also be set in constructor.
-    setRenderer: function (renderer, clusterAreaRenderer) {
-      if (clusterAreaRenderer) {
-        this.clusterAreaRenderer = clusterAreaRenderer;
-      }
-
-      return this.inherited(arguments);
-    },
-
-    _setMap: function (map, surface) {
-      this.map = map;
-      this.surface = surface;
-
-      this.events.push(on(this.map, "resize", lang.hitch(this, this._mapResize)));
-
-      //add pan and zoom events to limit to recluster
-      this.events.push(on(this.map, "extent-change", lang.hitch(this, this._clusterData)));
-
-      //Handle click event at the map level
-      this.events.push(on(this.map, "click", lang.hitch(this, this._mapClick)));
-
-      this.events.push(on(this.map.infoWindow, "show", lang.hitch(this, this._infoWindowShow)));
-      this.events.push(on(this.map.infoWindow, "hide", lang.hitch(this, this._infoWindowHide)));
-
-      this.events.push(on(this, "graphic-draw", this._graphicDraw));
-      this.events.push(on(this, "graphic-node-remove", this._graphicNodeRemove));
-
-      this.events.push(on(this, "mouse-over", this._graphicMouseOver));
-      this.events.push(on(this, "mouse-out", this._graphicMouseOut));
-
-      return this.inherited(arguments);
-    },
-
-
-    _unsetMap: function () {
-      this.inherited(arguments);
-      //remove events
-      for (var i = 0, len = this.events.length; i < len; i++) {
-        if (this.events[i]) {
-          this.events[i].remove();
-        }
-      }
-
-      for (i = 0, len = this.graphicEvents.length; i < len; i++) {
-        if (this.graphicEvents[i]) {
-          this.graphicEvents[i].remove();
-        }
-      }
-    },
-
-    onClick: function (evt) {
-      this._restoreInfoWindowSettings();
-
-      if (evt.graphic.attributes.isCluster) {
-        evt.stopPropagation();
-        //this._activateCluster(evt.graphic);
-        this.map.infoWindow.hide();
-      } else if (evt.graphic.attributes.isFlare) {
-        evt.stopPropagation();
-
-        var flareObject = this._getFlareFromGraphic(evt.graphic);
-        if (!flareObject) {
-          this._hideFlareDetail();
-          this.map.infoWindow.hide();
-          return;
-        }
-
-        if (flareObject.isSummaryFlare || !flareObject.singleData) {
-          this._showFlareDetail(evt.graphic);
-          this.map.infoWindow.hide();
-          return;
-        }
-
-        //if we're clicking on a single data flare then show an info window
-        var graphic = evt.graphic;
-
-        this.originalInfoWindow = {
-          highlight: lang.clone(this.map.infoWindow.get("highlight")),
-          anchor: lang.clone(this.map.infoWindow.anchor)
-        };
-
-        this.map.infoWindow.hide();
-        this.map.infoWindow.clearFeatures();
-        this.map.infoWindow.set("highlight", false);
-        this.map.infoWindow.setFeatures([graphic]);
-
-        //when getting screen point make sure we use the location of the flare on screen, by converting the map point on the object.
-        var sp = this.map.toScreen({x: flareObject.mapPoint.x, y: flareObject.mapPoint.y});
-
-        //Could do something with the anchor of the info window here if wanted. The offsets can be a bit wacky as well.
-        //var anchor = this._getInfoWindowAnchor(flareObject.degree);
-        //this.map.infoWindow.anchor = anchor;
-
-        this.map.infoWindow.cluster = this.activeCluster;
-
-        //reset the geometry of the flare feature in the info window to be the actual location of the flared object, not the location of the flare graphic.
-        var p = webMercatorUtils.geographicToWebMercator(new Point(flareObject.singleData[this.xPropertyName], flareObject.singleData[this.yPropertyName], this.spatialRef));
-        this.map.infoWindow.features[0].geometry = p;
-        this.map.infoWindow.show(sp);
-
-      }
-    },
-
-    //Add a data point to be clustered.
-    //Each object passed in must contain an x and y property.
-    //Data should also contain whatever property is set in singleFlareTooltipProperty, so the flare tooltip has something to display for summary flares if needed
-    add: function (p) {
-
-
-      // if passed a graphic, just use the base GraphicsLayer's add method
-      if (p.declaredClass) {
-        this.inherited(arguments);
-        return;
-      }
-
-      //if we got here, then we're adding a single object
-      //NOTE: Use this sparingly - better to use addData (or even better addPreClusteredData).
-      //If using add() to add a large amount of objects (eg: in a long loop), clusters and their elements will be removed and recreated when changes are applied to them,this can be expensive
-      //If you use addData and pass in an array clusters will only be created in the DOM once they have been fully calculated
-
-      //can't add client side if preClustered is being used
-      if (this.preClustered) {
-        return;
-      }
-
-      //get an extent that is in web mercator to make sure it's flat for extent checking
-      var webExtent = webMercatorUtils.project(map.extent, new SpatialReference({"wkid": 102100}));
-      if (!this.gridClusters || this.gridClusters.length === 0) {
-        this._createClusterGrid();
-      }
-
-      var obj = p;
-      if (!this.allData) {
-        this.allData = [];
-      }
-
-      this.allData.push(obj);
-
-      var xVal = obj[this.xPropertyName];
-      var yVal = obj[this.yPropertyName];
-
-      //get a web merc lng/lat for extent checking. Use web merc as it's flat to cater for longitude pole
-      if (this.spatialRef.isWebMercator()) {
-        web = [xVal, yVal];
-      } else {
-        web = webMercatorUtils.lngLatToXY(xVal, yVal);
-      }
-
-      //filter by visible extent first
-      if (web[0] < webExtent.xmin || web[0] > webExtent.xmax || web[1] < webExtent.ymin || web[1] > webExtent.ymax) {
-        return; //not in the visible extent
-      }
-
-      //loop cluster grid to see if it should be added to one
-      for (var j = 0, jLen = this.gridClusters.length; j < jLen; j++) {
-        var cl = this.gridClusters[j];
-
-        if (web[0] < cl.extent.xmin || web[0] > cl.extent.xmax || web[1] < cl.extent.ymin || web[1] > cl.extent.ymax) {
-          continue; //not here so carry on
-        }
-
-        //recalc the x and y of the cluster by averaging the points again
-        cl.x = cl.clusterCount > 0 ? (xVal + (cl.x * cl.clusterCount)) / (cl.clusterCount + 1) : xVal;
-        cl.y = cl.clusterCount > 0 ? (yVal + (cl.y * cl.clusterCount)) / (cl.clusterCount + 1) : yVal;
-
-        //push every point into the cluster so we have it for area display if required. This could be omitted if never checking areas, or on demand at least
-        if (this.clusterAreaDisplay) {
-          cl.points.push([xVal, yVal]);
-        }
-
-        cl.clusterCount++;
-
-        var subTypeExists = false;
-        for (var s = 0, sLen = cl.subTypeCounts.length; s < sLen; s++) {
-          if (cl.subTypeCounts[s].name === obj[this.subTypeFlareProperty]) {
-            cl.subTypeCounts[s].count++;
-            subTypeExists = true;
-            break;
-          }
-        }
-        if (!subTypeExists) {
-          cl.subTypeCounts.push({name: obj[this.subTypeFlareProperty], count: 1});
-        }
-
-        cl.singles.push(obj);
-
-        if (cl.clusterCount === 1) {
-          //this was the only point in this cluster area so add a single
-          this._createSingle(obj);
-        } else {
-          if (cl.clusterCount === 2) {
-            //if it was previously a single remove the single.
-            var index = this.singles.indexOf(cl.singles[0]);
-            this.remove(cl.singles[0].graphic);
-            this.singles.splice(index, 1);
-            delete cl.singles[0].graphic;
-          } else {
-            //only remove if the count is > 2. Would have been a single previously.
-            this._removeCluster(cl);
-          }
-          this._createCluster(cl);
-        }
-      }
-    },
-
-    clear: function () {
-      // Summary:  Remove all clusters and data points.
-
-      this.inherited(arguments);
-
-      this.activeCluster = null;
-      this.activeFlareObject = null;
-
-      //stop any animations that may still be running while clearing graphics
-      this._stopAnimations();
-
-      //remove all created cluster group elements
-      var node = this.getNode();
-      dojo.query("g.cluster-group", node).forEach(dojo.destroy);
-
-      //clear any graphic events
-      for (var i = 0, len = this.graphicEvents.length; i < len; i++) {
-        if (this.graphicEvents[i]) {
-          this.graphicEvents[i].remove();
-        }
-      }
-
-      // this.map.infoWindow.hide();
-      // this.map.infoWindow.clearFeatures();
-
-      this.gridClusters = [];
-      this.clusters = [];
-      this.singles = [];
-    },
-
-    //#endregion
-
-    //#region other event handlers
-
-    _mapResize: function () {
-      //destroy any orphaned cluster group nodes
-      dojo.query("g.cluster-group:empty", this.getNode()).forEach(dojo.destroy);
-    },
-
-    _mapClick: function (e) {
-      if (!e.target) {
-        return;
-      }
-
-      var targetClass = e.target.getAttribute("class");
-      if (!targetClass || targetClass.indexOf("cluster-object") === -1) {
-        //if this was not a cluster object at all then clear any active one and return
-        this._clearActiveCluster();
-      } else if (targetClass.indexOf("cluster-object") !== -1) {
-        //if click reached map click event and it is a cluster object, make sure an info window doesn't display for the cluster graphic
-        if (this.map.infoWindow.cluster) {
-          this._restoreInfoWindowSettings();
-        }
-        this.map.infoWindow.hide();
-      }
-    },
-
-    _graphicDraw: function (e) {
-      var g = e.graphic;
-      if (g.attributes.isCluster) {
-        //create the cluster graphics if this is a cluster being drawn
-        var cl = this._getClusterFromGraphic(g);
-        this._createClusterGraphic(cl);
-        if (this.activeCluster === cl) {
-          this._clearActiveCluster();
-        }
-      } else if (g.attributes.isClusterArea) {
-        var sh = g.getShape();
-        sh.moveToBack();
-      }
-
-
-      return this.inherited(arguments);
-    },
-
-    _graphicNodeRemove: function (e) {
-      var g = e.graphic;
-      if (g.attributes.isCluster) {
-        //remove any group graphics related to this cluster as they'll be recreated when the node is redrawn.
-        var cl = this._getClusterFromGraphic(g);
-        if (cl) {
-          dojo.destroy(cl.groupShape.rawNode);
-        }
-      }
-    },
-
-    _graphicMouseOver: function (e) {
-      if (this.flareShowMode === "mouse") {
-        if (e.graphic.attributes.isCluster) {
-          //this._activateCluster(e.graphic);
-        } else if (e.graphic.attributes.isFlare) {
-          this._showFlareDetail(e.graphic);
-        }
-      }
-    },
-
-    _graphicMouseOut: function (e) {
-      if (e.graphic.attributes.isFlare) {
-        this._hideFlareDetail();
-      }
-    },
-
-
-    _infoWindowShow: function (e) {
-      if (typeof (this.map.infoWindow.features !== 'undefined') && this.map.infoWindow.features !== null) {
-        for (var i = 0; i < this.map.infoWindow.features.length; i++) {
-          if (typeof (this.map.infoWindow.features[i].attributes) !== 'undefined' && (this.map.infoWindow.features[i].attributes.isCluster || this.map.infoWindow.features[i].attributes.isClusterArea)) {
-            this.map.infoWindow.hide(); //if a cluster never show an info window
-            return;
-          }
-        }
-      }
-    },
-
-    _infoWindowHide: function (e) {
-      this.map.infoWindow.cluster = null;
-    },
-
-
-    //#endregion
-
-
-    //#region extra public methods
-
-    addPreClusteredData: function (data) {
-      /*
-          Add data that is preclustered - (ie clustered server side).
-          Data is an array, clusters must contain an x and y property as well as a clusterCount property. subTypeCounts is optional.
-          Clusters that have a count less than the this.displaySingleFlaresAtCount option must all contain the data for the single points in an array called singles
-         Singles should also be in the array, they only need to contain an x and y property. Singles should also contain whatever property is set in singleFlareTooltipProperty, so the flare tooltip has something to display for summary flares if needed
-      */
-
-      if (this.clusteringBegin) {
-        this.clusteringBegin();
-      }
-
-      this.allData = [];
-      this.preClustered = true; //if we're adding preclustered data, force this flag to true
-      for (var i = 0, len = data.length; i < len; i++) {
-        if (data[i].clusterCount) {
-          //this is a cluster as it contains clusterCount
-          var cl = data[i];
-          this._createCluster(cl);
-        } else {
-          this._createSingle(data[i]);
-        }
-      }
-
-      if (this.clusteringComplete) {
-        this.clusteringComplete();
-      }
-    },
-
-
-    addData: function (data) {
-      /*
-          Add data to be clustered.
-          Data is an array of objects. Each object passed in must contain an x and y property.
-          Data should also contain whatever property is set in singleFlareTooltipProperty if one is set, so the flare tooltip has something to display for summary flares if needed
-          This will also clear all data first. add() can be used to add single objects at any time.
-      */
-      this.allData = data;
-      this._clusterData();
-    },
-
-
-    //#endregion
-
-
-    //#region internal stuff
-
-    _restoreInfoWindowSettings: function () {
-      if (this.originalInfoWindow) {
-        this.map.infoWindow.set("highlight", this.originalInfoWindow.highlight);
-        this.map.infoWindow.anchor = this.originalInfoWindow.anchor;
-      }
-    },
-
-    _clusterData: function () {
-
-      //this function currently only applies if not using preclustered data
-      if (this.preClustered) {
-        return;
-      }
-
-      if (this.clusteringBegin) {
-        this.clusteringBegin();
-      }
-
-      this.clear();
-
-      //get an extent that is in web mercator to make sure it's flat for extent checking
-      //The webextent will need to be normalized since panning over the international dateline will cause
-      //cause the extent to shift outside the -180 to 180 degree window.  If we don't normalize then the
-      //clusters will not be drawn if the map pans over the international dateline.
-      var webExtent = !this.map.extent.spatialReference.isWebMercator() ? webMercatorUtils.project(this.map.extent, new SpatialReference({"wkid": 102100})) : this.map.extent;
-      var normalizedWebExtent = webExtent.normalize();
-      webExtent = normalizedWebExtent[0];
-
-      if (normalizedWebExtent.length > 1) {
-        webExtent = webExtent.union(normalizedWebExtent[1]);
-        this.extentIsUnioned = true;
-      } else {
-        this.extentIsUnioned = true;
-      }
-
-      this._createClusterGrid(webExtent);
-
-      var dataLength = this.allData.length;
-      var web, obj, xVal, yVal;
-      for (var i = 0; i < dataLength; i++) {
-        obj = this.allData[i];
-        xVal = obj[this.xPropertyName];
-        yVal = obj[this.yPropertyName];
-
-        //get a web merc lng/lat for extent checking. Use web merc as it's flat to cater for longitude pole
-        if (this.spatialRef.isWebMercator()) {
-          web = [xVal, yVal];
-        } else {
-          web = webMercatorUtils.lngLatToXY(xVal, yVal);
-        }
-
-        //filter by visible extent first
-        if (web[0] < webExtent.xmin || web[0] > webExtent.xmax || web[1] < webExtent.ymin || web[1] > webExtent.ymax) {
-          continue;
-        }
-
-        //loop cluster grid to see if it should be added to one
-        for (var j = 0, jLen = this.gridClusters.length; j < jLen; j++) {
-          var cl = this.gridClusters[j];
-
-          if (web[0] < cl.extent.xmin || web[0] > cl.extent.xmax || web[1] < cl.extent.ymin || web[1] > cl.extent.ymax) {
-            continue; //not here so carry on
-          }
-
-          //recalc the x and y of the cluster by averaging the points again
-          cl.x = cl.clusterCount > 0 ? (xVal + (cl.x * cl.clusterCount)) / (cl.clusterCount + 1) : xVal;
-          cl.y = cl.clusterCount > 0 ? (yVal + (cl.y * cl.clusterCount)) / (cl.clusterCount + 1) : yVal;
-
-          //push every point into the cluster so we have it for area display if required. This could be omitted if never checking areas, or on demand at least
-          if (this.clusterAreaDisplay) {
-            cl.points.push([xVal, yVal]);
-          }
-
-          cl.clusterCount++;
-
-          var subTypeExists = false;
-          for (var s = 0, sLen = cl.subTypeCounts.length; s < sLen; s++) {
-            if (cl.subTypeCounts[s].name === obj[this.subTypeFlareProperty]) {
-              cl.subTypeCounts[s].count++;
-              subTypeExists = true;
-              break;
-            }
-          }
-          if (!subTypeExists) {
-            cl.subTypeCounts.push({name: obj[this.subTypeFlareProperty], count: 1});
-          }
-
-          cl.singles.push(obj);
-        }
-      }
-
-      for (i = 0, len = this.gridClusters.length; i < len; i++) {
-        if (this.gridClusters[i].clusterCount === 1) {
-          this._createSingle(this.gridClusters[i].singles[0]);
-        } else if (this.gridClusters[i].clusterCount > 0) {
-          this._createCluster(this.gridClusters[i]);
-        }
-      }
-
-    },
-
-    _createClusterGrid: function (webExtent) {
-
-      //get the total amount of grid spaces based on the height and width of the map (divide it by clusterRatio) - then get the degrees for x and y
-      var xCount = Math.round(this.map.width / this.clusterRatio);
-      var yCount = Math.round(this.map.height / this.clusterRatio);
-
-      //if the extent has been unioned due to normalization, double the count of x in the cluster grid as the unioning will halve it.
-      if (this.extentIsUnioned) {
-        xCount *= 2;
-      }
-
-      var xw = (webExtent.xmax - webExtent.xmin) / xCount;
-      var yh = (webExtent.ymax - webExtent.ymin) / yCount;
-
-      var gsxmin, gsxmax, gsymin, gsymax;
-
-      //create an array of clusters that is a grid over the visible extent. Each cluster contains the extent (in web merc) that bounds the grid space for it.
-      this.gridClusters = [];
-      for (var i = 0; i < xCount; i++) {
-        gsxmin = webExtent.xmin + (xw * i);
-        gsxmax = gsxmin + xw;
-        for (var j = 0; j < yCount; j++) {
-          gsymin = webExtent.ymin + (yh * j);
-          gsymax = gsymin + yh;
-          var ext = new Extent({xmin: gsxmin, xmax: gsxmax, ymin: gsymin, ymax: gsymax});
-          ext.setSpatialReference(new SpatialReference({"wkid": 102100}));
-          this.gridClusters.push({
-            extent: ext,
-            clusterCount: 0,
-            subTypeCounts: [],
-            singles: [],
-            points: []
-          });
-        }
-      }
-    },
-
-    _createSingle: function (single) {
-      this.singles.push(single);
-      delete single.graphic;
-      var point = new Point(single[this.xPropertyName], single[this.yPropertyName], this.spatialRef);
-      var attributes = lang.clone(single);
-      var graphic = new Graphic(point, null, attributes, null);
-      single.graphic = graphic;
-      this.add(graphic);
-    },
-
-    _createCluster: function (cluster) {
-
-      this.clusters.push(cluster);
-
-      //add the graphic using the Graphics Layer add
-      var point = new Point(cluster.x, cluster.y, this.spatialRef);
-
-      //clear some props as we may be recreating the cluster
-      delete cluster.graphic;
-      delete cluster.graphicShape;
-      delete cluster.groupShape;
-
-      var attributes = {
-        x: cluster.x,
-        y: cluster.y,
-        clusterCount: cluster.clusterCount
-      }
-
-      var areaGraphic;
-      if (this.clusterAreaDisplay && cluster.points && cluster.points.length > 0) {
-        if (!this.clusterAreaRenderer) {
-          console.error("_createCluster: clusterAreaRenderer must be set if clusterAreaDisplay is set.");
-          return;
-        }
-
-        var mp = new Multipoint(this.spatialRef);
-        mp.points = cluster.points;
-        var area = geometryEngine.convexHull(mp, true); //use convex hull on the points to get the boundary
-        var areaAttr = lang.clone(attributes);
-        areaAttr.isClusterArea = true;
-        areaGraphic = new Graphic(area, null, areaAttr, null);
-        areaGraphic.setSymbol(this.clusterAreaRenderer.getSymbol(areaGraphic));
-        this.add(areaGraphic);
-        areaGraphic.hide();
-      }
-
-      attributes.isCluster = true;
-      var graphic = new Graphic(point, null, attributes, null);
-      cluster.graphic = graphic;
-      cluster.areaGraphic = areaGraphic;
-      this.add(graphic);
-
-    },
-
-    _createClusterGraphic: function (cluster) {
-
-      if (cluster.groupShape) {
-        dojo.destroy(cluster.groupShape.rawNode);
-      }
-
-      //create a group element to hold the cluster and text and other things
-      var groupShape = this.surface.createGroup();
-
-      //Note: dojo.addClass() doesn't seem to work on svg elements, that's why all the setAttributes for each shape.
-      groupShape.rawNode.setAttribute("class", "cluster-group cluster-object");
-      cluster.groupShape = groupShape;
-
-      //append the group to this layer's node
-      var layerNode = this.getNode();
-      layerNode.appendChild(groupShape.rawNode);
-
-      var gShape = cluster.graphic.getShape();
-      if (!gShape) {
-        return; //couldn't get the graphic shape that was just added, it's probably not visible on the map
-      }
-
-      //add an area graphic first if one has been set
-      var areaShape;
-      if (cluster.areaGraphic) {
-        if (this.clusterAreaDisplay === 'always') {
-          cluster.areaGraphic.show();
-        }
-        areaShape = cluster.areaGraphic.getShape();
-        if (areaShape) {
-          areaShape.rawNode.setAttribute("pointer-events", "none");
-        }
-      }
-
-      cluster.graphicShape = gShape;
-      cluster.graphicShape.rawNode.setAttribute("class", "cluster-object");
-      groupShape.add(cluster.graphicShape);
-
-      //add a text element for the label to display the count and add to the group
-      var shapeCenter = this._getShapeCenter(cluster.graphicShape);
-      var textShape = groupShape.createText({
-        x: shapeCenter.x,
-        y: shapeCenter.y + (this.textSymbol.font.size / 2 - 2),
-        text: cluster.clusterCount,
-        align: 'middle'
-      })
-        .setFont({
-          size: this.textSymbol.font.size,
-          family: this.textSymbol.font.family,
-          weight: this.textSymbol.font.weight
-        })
-        .setFill(this.textSymbol.color);
-      textShape.rawNode.setAttribute("class", "cluster-text-counts");
-      textShape.rawNode.setAttribute("pointer-events", "none"); //remove pointer events from text
-      groupShape.add(textShape);
-      cluster.textShape = textShape;
-
-      var anims = [];
-      //animate drawing of the cluster.
-      var create = fx.animateTransform({
-        duration: 200,
-        shape: groupShape,
-        transform: [
-          {
-            name: "scaleAt",
-            start: [0, 0, shapeCenter.x, shapeCenter.y],
-            end: [1, 1, shapeCenter.x, shapeCenter.y]
-          }
-        ],
-        onEnd: dojo.partial(this._animationEnd, this)
-      });
-      anims.push(create);
-
-      //animate area drawing if it is visible now
-      if (this.clusterAreaDisplay === 'always' && areaShape) {
-        var areaCenter = this._getShapeCenter(areaShape);
-        var areaCreate = fx.animateTransform({
-          duration: 200,
-          shape: areaShape,
-          transform: [
-            {
-              name: "scaleAt",
-              start: [0, 0, areaCenter.x, areaCenter.y],
-              end: [1, 1, areaCenter.x, areaCenter.y]
-            }
-          ],
-          onEnd: dojo.partial(this._animationEnd, this)
-        });
-        anims.push(areaCreate);
-      }
-
-      this._playAnimations(anims, this.animationMultipleType.combine);
-
-      //add events
-      if (this.flareShowMode === "mouse") {
-        this.graphicEvents.push(on(groupShape, "mouseleave", lang.hitch(this, this._clearActiveCluster)));
-      }
-    },
-
-    _activateCluster: function (graphic) {
-
-      var cluster = this._getClusterFromGraphic(graphic);
-      if (!cluster) {
-        return;
-      }
-
-      if (this.activeCluster) {
-        this._clearActiveCluster();
-      }
-
-      this.activeCluster = cluster;
-
-      var groupShape = cluster.groupShape;
-      var graphicShape = cluster.graphicShape;
-      groupShape.moveToFront();
-      var center = this._getShapeCenter(graphicShape);
-
-      var scaleAnims = [];
-      if (this.clusterAreaDisplay === 'hover') {
-        cluster.areaGraphic.show();
-        var areaDisplay = fx.animateTransform({
-          duration: 300,
-          shape: cluster.areaGraphic.getShape(),
-          transform: [
-            {name: "scaleAt", start: [0, 0, center.x, center.y], end: [1, 1, center.x, center.y]}
-          ],
-          onEnd: dojo.partial(this._animationEnd, this)
-        });
-        scaleAnims.push(areaDisplay);
-      }
-
-      var scaleUp = fx.animateTransform({
-        duration: 400,
-        shape: groupShape,
-        transform: [
-          {name: "scaleAt", start: [1, 1, center.x, center.y], end: [1.3, 1.3, center.x, center.y]}
-        ],
-        onEnd: dojo.partial(this._animationEnd, this)
-      });
-
-      scaleAnims.push(scaleUp);
-
-      this._playAnimations(scaleAnims, this.animationMultipleType.combine);
-
-      //Add applicable flare graphics
-
-      //array to hold the flare object data
-      this.flareObjects = [];
-
-      //check if we need to create flares for the cluster
-      var singleFlares = (cluster.singles && cluster.singles.length > 0) && (cluster.clusterCount <= this.displaySingleFlaresAtCount);
-      var subTypeFlares = !singleFlares && (this.displaySubTypeFlares && this.subTypeFlareProperty && (cluster.subTypeCounts && cluster.subTypeCounts.length > 0));
-
-      if (!singleFlares && !subTypeFlares) {
-        return;
-      }
-
-      //create and add a graphic to represent the flare circle
-      var bbox = graphicShape.getBoundingBox();
-      var radius = 8;
-      var buffer = 4;
-
-      var flareSymbol = new SimpleMarkerSymbol()
-        .setStyle(SimpleMarkerSymbol.STYLE_CIRCLE)
-        .setSize(radius * 2);
-
-      //create a transparent circle that contains the boundary of the flares, this is to make sure the mouse events don't fire moving in between flares
-      var conCircleRadius = (center.x - (bbox.x - radius - buffer)) + radius; //get the radius of the circle to contain everything
-      var containerCircle = groupShape.createCircle({cx: center.x, cy: center.y, r: conCircleRadius})
-        //.setStroke({ width: 1, color: "000" })
-        .setFill(new Color([0, 0, 0, 0]));
-      containerCircle.rawNode.setAttribute("class", "flare-object cluster-object");
-
-      //array to hold the animations for displaying flares
-      var stAnims = [];
-
-      if (singleFlares) {
-        for (var i = 0, len = cluster.singles.length; i < len; i++) {
-          delete cluster.singles[i].graphic;
-          this.flareObjects.push({
-            tooltipText: cluster.singles[i][this.singleFlareTooltipProperty],
-            flareText: "",
-            color: this.flareColor,
-            singleData: cluster.singles[i],
-            strokeWidth: 2
-          });
-        }
-      } else if (subTypeFlares) {
-
-        //sort sub types by highest count first
-        var subTypes = cluster.subTypeCounts.sort(function (a, b) {
-          return b.count - a.count;
-        });
-
-        for (i = 0, len = subTypes.length; i < len; i++) {
-          this.flareObjects.push({
-            tooltipText: subTypes[i].count + " - " + subTypes[i].name,
-            flareText: subTypes[i].count,
-            color: this.flareColor,
-            strokeWidth: 1
-          });
-        }
-      }
-
-      //if there are more flare objects to create that the maxFlareCount and this is a one of those - create a summary flare that contains '...' as the text and make this one part of it
-      var willContainSummaryFlare = this.flareObjects.length > this.maxFlareCount;
-      var flareCount = willContainSummaryFlare ? this.maxFlareCount : this.flareObjects.length;
-
-      //get the surface translate values if any
-      var surfaceTranslate = this._getSurfaceTranslate();
-
-      //if there's an even amount of flares, position the first flare to the left, minus 180 from degree to do this.
-      //for an add amount position the first flare on top, -90 to do this. Looks more symmetrical this way.
-      var degreeVariance = (flareCount % 2 === 0) ? -180 : -90;
-      for (i = 0, len = flareCount; i < len; i++) {
-
-        //exit if we've hit the maxFlareCount - a summary would have been created on the last one
-        if (i >= this.maxFlareCount) {
-          break;
-        }
-
-        var fo = this.flareObjects[i];
-
-        //Do a couple of things differently if this is a summary flare or not
-        var tooltipText = "";
-        var isSummaryFlare = willContainSummaryFlare && i >= this.maxFlareCount - 1;
-        if (isSummaryFlare) {
-          fo.color = this.flareColor;
-          fo.isSummaryFlare = true;
-
-          //multiline tooltip for summary flares, ie: greater than this.maxFlareCount flares per cluster
-          for (var j = this.maxFlareCount - 1, jlen = this.flareObjects.length; j < jlen; j++) {
-            tooltipText += j > (this.maxFlareCount - 1) ? "\n" : "";
-            tooltipText += this.flareObjects[j].tooltipText;
-          }
-        } else {
-          tooltipText = fo.tooltipText;
-        }
-
-        //get the position of the flare to be placed around the container circle.
-        var degree = parseInt(((360 / len) * i).toFixed());
-        degree = degree + degreeVariance;
-
-        var radian = degree * (Math.PI / 180);
-        fo.degree = degree;
-        fo.radius = radius;
-        fo.center = {
-          x: center.x + (conCircleRadius - radius) * Math.cos(radian),
-          y: center.y + (conCircleRadius - radius) * Math.sin(radian)
-        };
-
-        //create a group to hold the flare objects
-        var flareGroup = groupShape.createGroup();
-
-        //add a graphic for the flare
-        var sym = lang.clone(flareSymbol);
-        sym.setColor(fo.color).setOutline(new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, this.textSymbol.color, fo.strokeWidth));
-
-        //get the map point from the flare group center
-        var matrix = flareGroup.rawNode.getScreenCTM();
-        var pt = this.surface.rawNode.createSVGPoint();
-        pt.x = fo.center.x;
-        pt.y = fo.center.y;
-        var screenPoint = pt.matrixTransform(matrix);
-
-        //ScreenPoint needs to be relative to the top-left corner of the map control.
-        //The matrixTransform on pt gives us a point based on the screen coordinate system.
-        //Therefore if the map has a top offset applied to it the fo object will appear in
-        //an incorrect spot on the map.  We must apply the offset to both the x and y points
-        //to ensure the point is relative to the map control.
-        //As of v3.18 also apply need to apply the surface translate values that may have been created by the api during panning.
-        var offsets = this.surface.rawNode.getBoundingClientRect();
-        var sp = new ScreenPoint(screenPoint.x - offsets.left + surfaceTranslate.x, screenPoint.y - offsets.top + surfaceTranslate.y);
-        fo.mapPoint = this.map.toMap(sp);
-
-        var attributes = fo.singleData ? lang.clone(fo.singleData) : {};
-        attributes.isFlare = true;
-        var flareGraphic = new Graphic(fo.mapPoint, sym, attributes, null);
-        this.add(flareGraphic);
-        var flareCircle = flareGraphic.getShape();
-        if (!flareCircle) {
-          return;
-        }
-        flareGroup.rawNode.appendChild(flareCircle.rawNode);
-
-        if (fo.flareText) {
-          //if displaying text in the flare,
-          flareGroup.flareText = {
-            location: {x: fo.center.x, y: fo.center.y + (radius / 2 - 1)},
-            text: !isSummaryFlare ? fo.flareText : "...",
-            textSize: !isSummaryFlare ? 7 : 10
-          };
-        }
-
-        flareGroup.setTransform({xx: 0, yy: 0});//scale to 0 to start with
-        flareGroup.rawNode.setAttribute("class", "flare-object cluster-object");
-        flareCircle.rawNode.setAttribute("class", "flare-graphic cluster-object");
-        flareGroup.rawNode.setAttribute("data-tooltip", tooltipText);
-
-        //add an animation to display the flare
-        var anim = fx.animateTransform({
-          duration: 50,
-          shape: flareGroup,
-          transform: [
-            {
-              name: "scaleAt",
-              start: [0, 0, fo.center.x, fo.center.y],
-              end: [1, 1, fo.center.x, fo.center.y]
-            }
-          ],
-          onEnd: dojo.partial(this._animationEnd, this)
-        });
-
-        stAnims.push(anim);
-
-        flareGroup.rawNode.setAttribute("data-center-x", fo.center.x);
-        flareGroup.rawNode.setAttribute("data-center-y", fo.center.y);
-        fo.flareGroupShape = flareGroup;
-      }
-
-      this._playAnimations(stAnims, this.animationMultipleType.chain);
-
-    },
-
-    _showFlareDetail: function (graphic) {
-      var flareObject = this._getFlareFromGraphic(graphic);
-
-      if (this.activeFlareObject && flareObject !== this.activeFlareObject) {
-        this._hideFlareDetail();
-      }
-
-      this.activeFlareObject = flareObject;
-      this._createTooltip(flareObject.flareGroupShape);
-
-    },
-
-    _getInfoWindowAnchor: function (degree) {
-      //set the anchor based on the degree, so the cluster is not covered by the info window
-      if (degree === -180) {
-        return "left";
-      } else if (degree > -10 && degree < 10) {
-        return "right";
-      } else if (degree > -260 && degree < -170) {
-        return "left";
-      } else if (degree <= -90) {
-        return "top-left";
-      } else if (degree > -90 && degree <= 0) {
-        return "top-right";
-      } else if (degree > 0 && degree <= 90) {
-        return "bottom-right";
-      } else {
-        return "bottom-left";
-      }
-    },
-
-    _hideFlareDetail: function () {
-
-      if (!this.activeFlareObject) {
-        return;
-      }
-
-      var flareObject = this.activeFlareObject;
-      this._destroyTooltip(flareObject.flareGroupShape);
-      this.activeFlareObject = null;
-
-    },
-
-    _clearActiveCluster: function (e) {
-
-      if (!this.activeCluster) {
-        return;
-      }
-      if (e) {
-        var currentElement = e.toElement || e.relatedTarget;
-        if (currentElement && (currentElement.parentElement === this.map.infoWindow.domNode || (currentElement.parentElement && currentElement.parentElement.parentElement === this.map.infoWindow.domNode))) {
-          return;
-        }
-      }
-
-      if (this.map.infoWindow.cluster) {
-        this.map.infoWindow.hide();
-      }
-
-      var cluster = this.activeCluster;
-      this._hideFlareDetail();
-
-      var groupShape = cluster.groupShape;
-      var graphicShape = cluster.graphicShape;
-
-      var center = this._getShapeCenter(graphicShape);
-
-      var scaleAnims = [];
-      if (this.clusterAreaDisplay === 'hover') {
-        var areaHide = fx.animateTransform({
-          duration: 600,
-          shape: cluster.areaGraphic.getShape(),
-          transform: [
-            {name: "scaleAt", start: [1, 1, center.x, center.y], end: [0, 0, center.x, center.y]}
-          ],
-          onEnd: dojo.partial(this._animationEnd, this)
-        });
-
-        scaleAnims.push(areaHide);
-      }
-
-      var scaleDown = fx.animateTransform({
-        duration: 400,
-        shape: groupShape,
-        transform: [
-          {name: "scaleAt", start: [1.3, 1.3, center.x, center.y], end: [1, 1, center.x, center.y]}
-        ],
-        onEnd: dojo.partial(this._animationEnd, this)
-      });
-
-      scaleAnims.push(scaleDown);
-
-      this._playAnimations(scaleAnims, this.animationMultipleType.combine);
-
-      //destroy any flares
-      for (var i = 0, len = this.graphics.length; i < len; i++) {
-        if (this.graphics[i].attributes.isFlare) {
-          this.remove(this.graphics[i]);
-          len--;
-          i--;
-        }
-      }
-      dojo.query(".flare-object", groupShape.rawNode).forEach(dojo.destroy);
-      this.activeCluster = null;
-    },
-
-    _createTooltip: function (shape) {
-
-      var tooltipLength = dojo.query(".tooltip-text", shape.rawNode).length;
-      if (tooltipLength > 0) {
-        return;
-      }
-
-      //get the text from the data-tooltip attribute of the shape object
-      var text = shape.rawNode.getAttribute("data-tooltip");
-      if (!text) {
-        console.log("no data-tooltip attribute on element");
-        return;
-      }
-
-      //split on /n character that should be in tooltip to signify multiple lines
-      var lines = text.split("\n");
-
-      //read the center positions from the shape, attributes must be set on whatever node is being passed in. Calculating from getboundingBox wasn't working for some reason
-      var xPos = parseInt(shape.rawNode.getAttribute("data-center-x"));
-      var yPos = parseInt(shape.rawNode.getAttribute("data-center-y")) + 18; //align underneath, could be changed to be wherever
-
-      //create a group to hold the tooltip elements
-      var tooltipGroup = shape.createGroup({x: xPos, y: yPos});
-      tooltipGroup.rawNode.setAttribute("class", "tooltip-text");
-
-      var textShapes = [];
-      for (var i = 0, len = lines.length; i < len; i++) {
-        var textShape = tooltipGroup.createText({x: xPos, y: yPos + (i * 10), text: lines[i], align: 'middle'})
-          .setFill("#000")
-          .setFont({size: 8, family: this.textSymbol.font.family, weight: this.textSymbol.font.weight});
-        textShapes.push(textShape);
-        textShape.rawNode.setAttribute("pointer-events", "none");
-      }
-
-      var rectPadding = 2;
-      var textBox = tooltipGroup.getBoundingBox();
-      var rectShape = tooltipGroup.createRect({
-        x: textBox.x - rectPadding,
-        y: textBox.y - rectPadding,
-        width: textBox.width + (rectPadding * 2),
-        height: textBox.height + (rectPadding * 2),
-        r: 0
-      })
-        .setFill(new Color([255, 255, 255, 0.9]))
-        .setStroke({color: "#000", width: 0.5});
-      rectShape.rawNode.setAttribute("pointer-events", "none");
-
-      shape.moveToFront();
-      for (i = 0, len = textShapes.length; i < len; i++) {
-        textShapes[i].moveToFront();
-      }
-
-    },
-
-    _destroyTooltip: function (shape) {
-      dojo.query(".tooltip-text", shape.rawNode).forEach(dojo.destroy);
-    },
-
-    _removeCluster: function (cluster) {
-      //remove the cluster completely
-      for (var i = 0, len = this.clusters.length; i < len; i++) {
-        if (this.clusters[i] === cluster) {
-          this.clusters.splice(i, 1);
-          i--;
-          len--;
-        }
-      }
-      this.remove(cluster.graphic);
-      dojo.destroy(cluster.groupShape.rawNode);
-    },
-
-    //#endregion
-
-    //#region helper methods
-
-    _getGraphicFromObject: function (obj) {
-      //return the graphic from the obj which could be a single or cluster object
-      for (var i = 0, len = this.graphics.length; i < len; i++) {
-        var g = this.graphics[i];
-        if (g.attributes[this.xPropertyName] === obj[this.xPropertyName] && g.attributes[this.yPropertyName] === obj[this.yPropertyName]) {
-          return g;
-        }
-      }
-      return null;
-    },
-
-    _getClusterFromGraphic: function (graphic) {
-      //return the obj which could be a single or cluster object, based on the graphic
-      for (var i = 0, len = this.clusters.length; i < len; i++) {
-        var cl = this.clusters[i];
-        if (cl.graphic === graphic || (graphic.attributes.x === cl.x && graphic.attributes.y === cl.y)) {
-          cl.graphic = graphic;
-          return cl;
-        }
-      }
-      return null;
-    },
-
-    _getClusterFromGroupNode: function (groupNode) {
-      for (var i = 0, len = this.clusters.length; i < len; i++) {
-        if (this.clusters[i].groupShape.rawNode === groupNode) {
-          return this.clusters[i];
-        }
-      }
-    },
-
-    _getFlareFromGraphic: function (graphic) {
-      //return the obj which could be a single or cluster object, based on the graphic
-      for (var i = 0, len = this.flareObjects.length; i < len; i++) {
-        var fl = this.flareObjects[i];
-        if (fl.singleData && (fl.singleData[this.xPropertyName] === graphic.attributes[this.xPropertyName] && fl.singleData[this.yPropertyName] === graphic.attributes[this.yPropertyName]) &&
-          (this.idPropertyName === null || fl.singleData[this.idPropertyName] === graphic.attributes[this.idPropertyName])) {
-          return fl;
-        }
-
-        if (graphic.geometry.x === fl.mapPoint.x && graphic.geometry.y === fl.mapPoint.y) {
-          return fl;
-        }
-      }
-      return null;
-    },
-
-    _getShapeCenter: function (shape) {
-      var bbox = shape.getBoundingBox();
-      x = bbox.x + bbox.width / 2;
-      y = bbox.y + bbox.height / 2
-      return {x: x, y: y};
-    },
-
-    _getSurfaceTranslate: function () {
-      var translate = {
-        x: 0,
-        y: 0
-      };
-
-      //check if we could find a translate style property on the surface.
-      if (!this.surface || !this.surface.rawNode || !this.surface.rawNode.style.transform || this.surface.rawNode.style.transform.indexOf("translate") === -1) return translate;
-
-      //parse the values from the translate string. Using some basic string manipulation, some regex guru could tidy this up I would think.
-      var transform = this.surface.rawNode.style.transform;
-      transform = transform.replace("translate(", "").replace(")", "");
-      var vals = transform.split(",");
-      if (vals.length !== 2) return translate;
-      vals[0] = parseInt(vals[0].replace("px", ""));
-      vals[1] = parseInt(vals[1].replace("px", ""));
-      translate.x = vals[0];
-      translate.y = vals[1];
-      return translate;
-    },
-
-    _animationEnd: function (layer) {
-      //scope: 'this' is the animation that triggered the event, 'layer' is the flare cluster layer object instance
-
-      //IE10 and below Fix - have to manually set transform back to 1 on elements. They don't seem to appear all of the time again after beign animated back to
-      //a scale of 1. IE sucks.
-      dojo.query("> *", this.shape.rawNode).forEach(function (elem) {
-        if (!elem.__gfxObject__) return;
-        //put this in a slight timeout, otherwise the display can get a tiny bit jittery.
-        setTimeout(function () {
-          if (elem.__gfxObject__) {
-            elem.__gfxObject__.setTransform({xx: 1, yy: 1});
-          }
-        }, 50);
-      });
-
-      //Here's a hack for Edge. Good to see there's no need to do special hacks for MS browsers anymore. WTF.
-      //Have to add the flare text after the flare group animation otherwise Edge just reloads the page and dies for some reason?
-      if (this.shape.flareText) {
-        var flareText = this.shape.createText({
-          x: this.shape.flareText.location.x,
-          y: this.shape.flareText.location.y,
-          text: this.shape.flareText.text,
-          align: 'middle'
-        })
-          .setFill(layer.textSymbol.color)
-          .setFont({
-            size: this.shape.flareText.textSize,
-            family: layer.textSymbol.font.family,
-            weight: layer.textSymbol.font.weight
-          });
-
-        flareText.rawNode.setAttribute("class", "flare-text-counts");
-        flareText.rawNode.setAttribute("pointer-events", "none"); //remove pointer events from text
-        flareText.moveToFront();
-      }
-
-      for (var i = 0, len = layer.animationsRunning.length; i < len; i++) {
-        if (layer.animationsRunning[i] === this) {
-          layer.animationsRunning.splice(i, 1);
-          return;
-        }
-      }
-
-    },
-
-    _playAnimations: function (animations, type) {
-      if (type === this.animationMultipleType.combine) {
-        coreFx.combine(animations).play();
-      } else if (type === this.animationMultipleType.chain) {
-        coreFx.chain(animations).play();
-      } else {
-        for (var i = 0, len = animations.length; i < len; i++) {
-          animations[i].play();
-        }
-      }
-
-      this.animationsRunning = this.animationsRunning.concat(animations);
-    },
-
-    _stopAnimations: function () {
-      for (var i = 0, len = this.animationsRunning.length; i < len; i++) {
-        this.animationsRunning[i].stop();
-      }
-      this.animationsRunning = [];
-    },
-
-    //#endregion
-  });
-});
diff --git a/map/lib/axios.js b/map/lib/axios.js
deleted file mode 100644
index fc6c8b6..0000000
--- a/map/lib/axios.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/* axios v0.21.1 | (c) 2020 by Matt Zabriskie */
-!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.axios=t():e.axios=t()}(this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={exports:{},id:r,loaded:!1};return e[r].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){e.exports=n(1)},function(e,t,n){"use strict";function r(e){var t=new i(e),n=s(i.prototype.request,t);return o.extend(n,i.prototype,t),o.extend(n,t),n}var o=n(2),s=n(3),i=n(4),a=n(22),u=n(10),c=r(u);c.Axios=i,c.create=function(e){return r(a(c.defaults,e))},c.Cancel=n(23),c.CancelToken=n(24),c.isCancel=n(9),c.all=function(e){return Promise.all(e)},c.spread=n(25),c.isAxiosError=n(26),e.exports=c,e.exports.default=c},function(e,t,n){"use strict";function r(e){return"[object Array]"===R.call(e)}function o(e){return"undefined"==typeof e}function s(e){return null!==e&&!o(e)&&null!==e.constructor&&!o(e.constructor)&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}function i(e){return"[object ArrayBuffer]"===R.call(e)}function a(e){return"undefined"!=typeof FormData&&e instanceof FormData}function u(e){var t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer}function c(e){return"string"==typeof e}function f(e){return"number"==typeof e}function p(e){return null!==e&&"object"==typeof e}function d(e){if("[object Object]"!==R.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function l(e){return"[object Date]"===R.call(e)}function h(e){return"[object File]"===R.call(e)}function m(e){return"[object Blob]"===R.call(e)}function y(e){return"[object Function]"===R.call(e)}function g(e){return p(e)&&y(e.pipe)}function v(e){return"undefined"!=typeof URLSearchParams&&e instanceof URLSearchParams}function x(e){return e.replace(/^\s*/,"").replace(/\s*$/,"")}function w(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)}function b(e,t){if(null!==e&&"undefined"!=typeof e)if("object"!=typeof e&&(e=[e]),r(e))for(var n=0,o=e.length;n<o;n++)t.call(null,e[n],n,e);else for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&t.call(null,e[s],s,e)}function E(){function e(e,n){d(t[n])&&d(e)?t[n]=E(t[n],e):d(e)?t[n]=E({},e):r(e)?t[n]=e.slice():t[n]=e}for(var t={},n=0,o=arguments.length;n<o;n++)b(arguments[n],e);return t}function j(e,t,n){return b(t,function(t,r){n&&"function"==typeof t?e[r]=S(t,n):e[r]=t}),e}function C(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e}var S=n(3),R=Object.prototype.toString;e.exports={isArray:r,isArrayBuffer:i,isBuffer:s,isFormData:a,isArrayBufferView:u,isString:c,isNumber:f,isObject:p,isPlainObject:d,isUndefined:o,isDate:l,isFile:h,isBlob:m,isFunction:y,isStream:g,isURLSearchParams:v,isStandardBrowserEnv:w,forEach:b,merge:E,extend:j,trim:x,stripBOM:C}},function(e,t){"use strict";e.exports=function(e,t){return function(){for(var n=new Array(arguments.length),r=0;r<n.length;r++)n[r]=arguments[r];return e.apply(t,n)}}},function(e,t,n){"use strict";function r(e){this.defaults=e,this.interceptors={request:new i,response:new i}}var o=n(2),s=n(5),i=n(6),a=n(7),u=n(22);r.prototype.request=function(e){"string"==typeof e?(e=arguments[1]||{},e.url=arguments[0]):e=e||{},e=u(this.defaults,e),e.method?e.method=e.method.toLowerCase():this.defaults.method?e.method=this.defaults.method.toLowerCase():e.method="get";var t=[a,void 0],n=Promise.resolve(e);for(this.interceptors.request.forEach(function(e){t.unshift(e.fulfilled,e.rejected)}),this.interceptors.response.forEach(function(e){t.push(e.fulfilled,e.rejected)});t.length;)n=n.then(t.shift(),t.shift());return n},r.prototype.getUri=function(e){return e=u(this.defaults,e),s(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},o.forEach(["delete","get","head","options"],function(e){r.prototype[e]=function(t,n){return this.request(u(n||{},{method:e,url:t,data:(n||{}).data}))}}),o.forEach(["post","put","patch"],function(e){r.prototype[e]=function(t,n,r){return this.request(u(r||{},{method:e,url:t,data:n}))}}),e.exports=r},function(e,t,n){"use strict";function r(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var o=n(2);e.exports=function(e,t,n){if(!t)return e;var s;if(n)s=n(t);else if(o.isURLSearchParams(t))s=t.toString();else{var i=[];o.forEach(t,function(e,t){null!==e&&"undefined"!=typeof e&&(o.isArray(e)?t+="[]":e=[e],o.forEach(e,function(e){o.isDate(e)?e=e.toISOString():o.isObject(e)&&(e=JSON.stringify(e)),i.push(r(t)+"="+r(e))}))}),s=i.join("&")}if(s){var a=e.indexOf("#");a!==-1&&(e=e.slice(0,a)),e+=(e.indexOf("?")===-1?"?":"&")+s}return e}},function(e,t,n){"use strict";function r(){this.handlers=[]}var o=n(2);r.prototype.use=function(e,t){return this.handlers.push({fulfilled:e,rejected:t}),this.handlers.length-1},r.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},r.prototype.forEach=function(e){o.forEach(this.handlers,function(t){null!==t&&e(t)})},e.exports=r},function(e,t,n){"use strict";function r(e){e.cancelToken&&e.cancelToken.throwIfRequested()}var o=n(2),s=n(8),i=n(9),a=n(10);e.exports=function(e){r(e),e.headers=e.headers||{},e.data=s(e.data,e.headers,e.transformRequest),e.headers=o.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),o.forEach(["delete","get","head","post","put","patch","common"],function(t){delete e.headers[t]});var t=e.adapter||a.adapter;return t(e).then(function(t){return r(e),t.data=s(t.data,t.headers,e.transformResponse),t},function(t){return i(t)||(r(e),t&&t.response&&(t.response.data=s(t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)})}},function(e,t,n){"use strict";var r=n(2);e.exports=function(e,t,n){return r.forEach(n,function(n){e=n(e,t)}),e}},function(e,t){"use strict";e.exports=function(e){return!(!e||!e.__CANCEL__)}},function(e,t,n){"use strict";function r(e,t){!s.isUndefined(e)&&s.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}function o(){var e;return"undefined"!=typeof XMLHttpRequest?e=n(12):"undefined"!=typeof process&&"[object process]"===Object.prototype.toString.call(process)&&(e=n(12)),e}var s=n(2),i=n(11),a={"Content-Type":"application/x-www-form-urlencoded"},u={adapter:o(),transformRequest:[function(e,t){return i(t,"Accept"),i(t,"Content-Type"),s.isFormData(e)||s.isArrayBuffer(e)||s.isBuffer(e)||s.isStream(e)||s.isFile(e)||s.isBlob(e)?e:s.isArrayBufferView(e)?e.buffer:s.isURLSearchParams(e)?(r(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):s.isObject(e)?(r(t,"application/json;charset=utf-8"),JSON.stringify(e)):e}],transformResponse:[function(e){if("string"==typeof e)try{e=JSON.parse(e)}catch(e){}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,validateStatus:function(e){return e>=200&&e<300}};u.headers={common:{Accept:"application/json, text/plain, */*"}},s.forEach(["delete","get","head"],function(e){u.headers[e]={}}),s.forEach(["post","put","patch"],function(e){u.headers[e]=s.merge(a)}),e.exports=u},function(e,t,n){"use strict";var r=n(2);e.exports=function(e,t){r.forEach(e,function(n,r){r!==t&&r.toUpperCase()===t.toUpperCase()&&(e[t]=n,delete e[r])})}},function(e,t,n){"use strict";var r=n(2),o=n(13),s=n(16),i=n(5),a=n(17),u=n(20),c=n(21),f=n(14);e.exports=function(e){return new Promise(function(t,n){var p=e.data,d=e.headers;r.isFormData(p)&&delete d["Content-Type"];var l=new XMLHttpRequest;if(e.auth){var h=e.auth.username||"",m=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";d.Authorization="Basic "+btoa(h+":"+m)}var y=a(e.baseURL,e.url);if(l.open(e.method.toUpperCase(),i(y,e.params,e.paramsSerializer),!0),l.timeout=e.timeout,l.onreadystatechange=function(){if(l&&4===l.readyState&&(0!==l.status||l.responseURL&&0===l.responseURL.indexOf("file:"))){var r="getAllResponseHeaders"in l?u(l.getAllResponseHeaders()):null,s=e.responseType&&"text"!==e.responseType?l.response:l.responseText,i={data:s,status:l.status,statusText:l.statusText,headers:r,config:e,request:l};o(t,n,i),l=null}},l.onabort=function(){l&&(n(f("Request aborted",e,"ECONNABORTED",l)),l=null)},l.onerror=function(){n(f("Network Error",e,null,l)),l=null},l.ontimeout=function(){var t="timeout of "+e.timeout+"ms exceeded";e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),n(f(t,e,"ECONNABORTED",l)),l=null},r.isStandardBrowserEnv()){var g=(e.withCredentials||c(y))&&e.xsrfCookieName?s.read(e.xsrfCookieName):void 0;g&&(d[e.xsrfHeaderName]=g)}if("setRequestHeader"in l&&r.forEach(d,function(e,t){"undefined"==typeof p&&"content-type"===t.toLowerCase()?delete d[t]:l.setRequestHeader(t,e)}),r.isUndefined(e.withCredentials)||(l.withCredentials=!!e.withCredentials),e.responseType)try{l.responseType=e.responseType}catch(t){if("json"!==e.responseType)throw t}"function"==typeof e.onDownloadProgress&&l.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&l.upload&&l.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then(function(e){l&&(l.abort(),n(e),l=null)}),p||(p=null),l.send(p)})}},function(e,t,n){"use strict";var r=n(14);e.exports=function(e,t,n){var o=n.config.validateStatus;n.status&&o&&!o(n.status)?t(r("Request failed with status code "+n.status,n.config,null,n.request,n)):e(n)}},function(e,t,n){"use strict";var r=n(15);e.exports=function(e,t,n,o,s){var i=new Error(e);return r(i,t,n,o,s)}},function(e,t){"use strict";e.exports=function(e,t,n,r,o){return e.config=t,n&&(e.code=n),e.request=r,e.response=o,e.isAxiosError=!0,e.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},e}},function(e,t,n){"use strict";var r=n(2);e.exports=r.isStandardBrowserEnv()?function(){return{write:function(e,t,n,o,s,i){var a=[];a.push(e+"="+encodeURIComponent(t)),r.isNumber(n)&&a.push("expires="+new Date(n).toGMTString()),r.isString(o)&&a.push("path="+o),r.isString(s)&&a.push("domain="+s),i===!0&&a.push("secure"),document.cookie=a.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}}():function(){return{write:function(){},read:function(){return null},remove:function(){}}}()},function(e,t,n){"use strict";var r=n(18),o=n(19);e.exports=function(e,t){return e&&!r(t)?o(e,t):t}},function(e,t){"use strict";e.exports=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)}},function(e,t){"use strict";e.exports=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}},function(e,t,n){"use strict";var r=n(2),o=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];e.exports=function(e){var t,n,s,i={};return e?(r.forEach(e.split("\n"),function(e){if(s=e.indexOf(":"),t=r.trim(e.substr(0,s)).toLowerCase(),n=r.trim(e.substr(s+1)),t){if(i[t]&&o.indexOf(t)>=0)return;"set-cookie"===t?i[t]=(i[t]?i[t]:[]).concat([n]):i[t]=i[t]?i[t]+", "+n:n}}),i):i}},function(e,t,n){"use strict";var r=n(2);e.exports=r.isStandardBrowserEnv()?function(){function e(e){var t=e;return n&&(o.setAttribute("href",t),t=o.href),o.setAttribute("href",t),{href:o.href,protocol:o.protocol?o.protocol.replace(/:$/,""):"",host:o.host,search:o.search?o.search.replace(/^\?/,""):"",hash:o.hash?o.hash.replace(/^#/,""):"",hostname:o.hostname,port:o.port,pathname:"/"===o.pathname.charAt(0)?o.pathname:"/"+o.pathname}}var t,n=/(msie|trident)/i.test(navigator.userAgent),o=document.createElement("a");return t=e(window.location.href),function(n){var o=r.isString(n)?e(n):n;return o.protocol===t.protocol&&o.host===t.host}}():function(){return function(){return!0}}()},function(e,t,n){"use strict";var r=n(2);e.exports=function(e,t){function n(e,t){return r.isPlainObject(e)&&r.isPlainObject(t)?r.merge(e,t):r.isPlainObject(t)?r.merge({},t):r.isArray(t)?t.slice():t}function o(o){r.isUndefined(t[o])?r.isUndefined(e[o])||(s[o]=n(void 0,e[o])):s[o]=n(e[o],t[o])}t=t||{};var s={},i=["url","method","data"],a=["headers","auth","proxy","params"],u=["baseURL","transformRequest","transformResponse","paramsSerializer","timeout","timeoutMessage","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","decompress","maxContentLength","maxBodyLength","maxRedirects","transport","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding"],c=["validateStatus"];r.forEach(i,function(e){r.isUndefined(t[e])||(s[e]=n(void 0,t[e]))}),r.forEach(a,o),r.forEach(u,function(o){r.isUndefined(t[o])?r.isUndefined(e[o])||(s[o]=n(void 0,e[o])):s[o]=n(void 0,t[o])}),r.forEach(c,function(r){r in t?s[r]=n(e[r],t[r]):r in e&&(s[r]=n(void 0,e[r]))});var f=i.concat(a).concat(u).concat(c),p=Object.keys(e).concat(Object.keys(t)).filter(function(e){return f.indexOf(e)===-1});return r.forEach(p,o),s}},function(e,t){"use strict";function n(e){this.message=e}n.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},n.prototype.__CANCEL__=!0,e.exports=n},function(e,t,n){"use strict";function r(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise(function(e){t=e});var n=this;e(function(e){n.reason||(n.reason=new o(e),t(n.reason))})}var o=n(23);r.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},r.source=function(){var e,t=new r(function(t){e=t});return{token:t,cancel:e}},e.exports=r},function(e,t){"use strict";e.exports=function(e){return function(t){return e.apply(null,t)}}},function(e,t){"use strict";e.exports=function(e){return"object"==typeof e&&e.isAxiosError===!0}}])});
-//# sourceMappingURL=axios.min.map
\ No newline at end of file
diff --git a/map/lib/echarts.min.js b/map/lib/echarts.min.js
deleted file mode 100644
index 384f232..0000000
--- a/map/lib/echarts.min.js
+++ /dev/null
@@ -1,22 +0,0 @@
-
-/*
-* Licensed to the Apache Software Foundation (ASF) under one
-* or more contributor license agreements.  See the NOTICE file
-* distributed with this work for additional information
-* regarding copyright ownership.  The ASF licenses this file
-* to you under the Apache License, Version 2.0 (the
-* "License"); you may not use this file except in compliance
-* with the License.  You may obtain a copy of the License at
-*
-*   http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing,
-* software distributed under the License is distributed on an
-* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-* KIND, either express or implied.  See the License for the
-* specific language governing permissions and limitations
-* under the License.
-*/
-
-
-!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e(t.echarts={})}(this,function(t){"use strict";var e=2311,n=function(){return e++},v="object"==typeof wx&&"function"==typeof wx.getSystemInfoSync?{browser:{},os:{},node:!1,wxa:!0,canvasSupported:!0,svgSupported:!1,touchEventsSupported:!0,domSupported:!1}:"undefined"==typeof document&&"undefined"!=typeof self?{browser:{},os:{},node:!1,worker:!0,canvasSupported:!0,domSupported:!1}:"undefined"==typeof navigator?{browser:{},os:{},node:!0,worker:!1,canvasSupported:!0,svgSupported:!0,domSupported:!1}:function(t){var e={},i=t.match(/Firefox\/([\d.]+)/),n=t.match(/MSIE\s([\d.]+)/)||t.match(/Trident\/.+?rv:(([\d.]+))/),a=t.match(/Edge\/([\d.]+)/),o=/micromessenger/i.test(t);i&&(e.firefox=!0,e.version=i[1]);n&&(e.ie=!0,e.version=n[1]);a&&(e.edge=!0,e.version=a[1]);o&&(e.weChat=!0);return{browser:e,os:{},node:!1,canvasSupported:!!document.createElement("canvas").getContext,svgSupported:"undefined"!=typeof SVGRect,touchEventsSupported:"ontouchstart"in window&&!e.ie&&!e.edge,pointerEventsSupported:"onpointerdown"in window&&(e.edge||e.ie&&11<=e.version),domSupported:"undefined"!=typeof document}}(navigator.userAgent);var s={"[object Function]":1,"[object RegExp]":1,"[object Date]":1,"[object Error]":1,"[object CanvasGradient]":1,"[object CanvasPattern]":1,"[object Image]":1,"[object Canvas]":1},l={"[object Int8Array]":1,"[object Uint8Array]":1,"[object Uint8ClampedArray]":1,"[object Int16Array]":1,"[object Uint16Array]":1,"[object Int32Array]":1,"[object Uint32Array]":1,"[object Float32Array]":1,"[object Float64Array]":1},u=Object.prototype.toString,i=Array.prototype,r=i.forEach,h=i.filter,a=i.slice,c=i.map,d=i.reduce,o={};function f(t,e){"createCanvas"===t&&(y=null),o[t]=e}function D(t){if(null==t||"object"!=typeof t)return t;var e=t,i=u.call(t);if("[object Array]"===i){if(!$(t)){e=[];for(var n=0,a=t.length;n<a;n++)e[n]=D(t[n])}}else if(l[i]){if(!$(t)){var o=t.constructor;if(t.constructor.from)e=o.from(t);else{e=new o(t.length);for(n=0,a=t.length;n<a;n++)e[n]=D(t[n])}}}else if(!s[i]&&!$(t)&&!G(t))for(var r in e={},t)t.hasOwnProperty(r)&&(e[r]=D(t[r]));return e}function m(t,e,i){if(!z(e)||!z(t))return i?D(e):t;for(var n in e)if(e.hasOwnProperty(n)){var a=t[n],o=e[n];!z(o)||!z(a)||k(o)||k(a)||G(o)||G(a)||B(o)||B(a)||$(o)||$(a)?!i&&n in t||(t[n]=D(e[n])):m(a,o,i)}return t}function p(t,e){for(var i=t[0],n=1,a=t.length;n<a;n++)i=m(i,t[n],e);return i}function L(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i]);return t}function C(t,e,i){for(var n in e)e.hasOwnProperty(n)&&(i?null!=e[n]:null==t[n])&&(t[n]=e[n]);return t}function g(){return o.createCanvas()}var y;function x(){return y=y||g().getContext("2d")}function _(t,e){if(t){if(t.indexOf)return t.indexOf(e);for(var i=0,n=t.length;i<n;i++)if(t[i]===e)return i}return-1}function w(t,e){var i=t.prototype;function n(){}for(var a in n.prototype=e.prototype,t.prototype=new n,i)i.hasOwnProperty(a)&&(t.prototype[a]=i[a]);(t.prototype.constructor=t).superClass=e}function b(t,e,i){C(t="prototype"in t?t.prototype:t,e="prototype"in e?e.prototype:e,i)}function P(t){if(t)return"string"!=typeof t&&"number"==typeof t.length}function E(t,e,i){if(t&&e)if(t.forEach&&t.forEach===r)t.forEach(e,i);else if(t.length===+t.length)for(var n=0,a=t.length;n<a;n++)e.call(i,t[n],n,t);else for(var o in t)t.hasOwnProperty(o)&&e.call(i,t[o],o,t)}function N(t,e,i){if(t&&e){if(t.map&&t.map===c)return t.map(e,i);for(var n=[],a=0,o=t.length;a<o;a++)n.push(e.call(i,t[a],a,t));return n}}function S(t,e,i,n){if(t&&e){if(t.reduce&&t.reduce===d)return t.reduce(e,i,n);for(var a=0,o=t.length;a<o;a++)i=e.call(n,i,t[a],a,t);return i}}function M(t,e,i){if(t&&e){if(t.filter&&t.filter===h)return t.filter(e,i);for(var n=[],a=0,o=t.length;a<o;a++)e.call(i,t[a],a,t)&&n.push(t[a]);return n}}function I(t,e,i){if(t&&e)for(var n=0,a=t.length;n<a;n++)if(e.call(i,t[n],n,t))return t[n]}function T(t,e){var i=a.call(arguments,2);return function(){return t.apply(e,i.concat(a.call(arguments)))}}function A(t){var e=a.call(arguments,1);return function(){return t.apply(this,e.concat(a.call(arguments)))}}function k(t){return"[object Array]"===u.call(t)}function O(t){return"function"==typeof t}function R(t){return"[object String]"===u.call(t)}function z(t){var e=typeof t;return"function"==e||!!t&&"object"==e}function B(t){return!!s[u.call(t)]}function V(t){return!!l[u.call(t)]}function G(t){return"object"==typeof t&&"number"==typeof t.nodeType&&"object"==typeof t.ownerDocument}function F(t){return t!=t}function W(t){for(var e=0,i=arguments.length;e<i;e++)if(null!=arguments[e])return arguments[e]}function H(t,e){return null!=t?t:e}function Z(t,e,i){return null!=t?t:null!=e?e:i}function U(){return Function.call.apply(a,arguments)}function X(t){if("number"==typeof t)return[t,t,t,t];var e=t.length;return 2===e?[t[0],t[1],t[0],t[1]]:3===e?[t[0],t[1],t[2],t[1]]:t}function Y(t,e){if(!t)throw new Error(e)}function j(t){return null==t?null:"function"==typeof t.trim?t.trim():t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")}o.createCanvas=function(){return document.createElement("canvas")};var q="__ec_primitive__";function K(t){t[q]=!0}function $(t){return t[q]}function J(t){var i=k(t);this.data={};var n=this;function e(t,e){i?n.set(t,e):n.set(e,t)}t instanceof J?t.each(e):t&&E(t,e)}function Q(t){return new J(t)}function tt(t,e){for(var i=new t.constructor(t.length+e.length),n=0;n<t.length;n++)i[n]=t[n];var a=t.length;for(n=0;n<e.length;n++)i[n+a]=e[n];return i}function et(){}J.prototype={constructor:J,get:function(t){return this.data.hasOwnProperty(t)?this.data[t]:null},set:function(t,e){return this.data[t]=e},each:function(t,e){for(var i in void 0!==e&&(t=T(t,e)),this.data)this.data.hasOwnProperty(i)&&t(this.data[i],i)},removeKey:function(t){delete this.data[t]}};var it=(Object.freeze||Object)({$override:f,clone:D,merge:m,mergeAll:p,extend:L,defaults:C,createCanvas:g,getContext:x,indexOf:_,inherits:w,mixin:b,isArrayLike:P,each:E,map:N,reduce:S,filter:M,find:I,bind:T,curry:A,isArray:k,isFunction:O,isString:R,isObject:z,isBuiltInObject:B,isTypedArray:V,isDom:G,eqNaN:F,retrieve:W,retrieve2:H,retrieve3:Z,slice:U,normalizeCssArray:X,assert:Y,trim:j,setAsPrimitive:K,isPrimitive:$,createHashMap:Q,concatArray:tt,noop:et}),nt="undefined"==typeof Float32Array?Array:Float32Array;function at(t,e){var i=new nt(2);return null==t&&(t=0),null==e&&(e=0),i[0]=t,i[1]=e,i}function ot(t,e){return t[0]=e[0],t[1]=e[1],t}function rt(t){var e=new nt(2);return e[0]=t[0],e[1]=t[1],e}function st(t,e,i){return t[0]=e,t[1]=i,t}function lt(t,e,i){return t[0]=e[0]+i[0],t[1]=e[1]+i[1],t}function ut(t,e,i,n){return t[0]=e[0]+i[0]*n,t[1]=e[1]+i[1]*n,t}function ht(t,e,i){return t[0]=e[0]-i[0],t[1]=e[1]-i[1],t}function ct(t){return Math.sqrt(ft(t))}var dt=ct;function ft(t){return t[0]*t[0]+t[1]*t[1]}var pt=ft;function gt(t,e,i){return t[0]=e[0]*i,t[1]=e[1]*i,t}function mt(t,e){var i=ct(e);return 0===i?(t[0]=0,t[1]=0):(t[0]=e[0]/i,t[1]=e[1]/i),t}function vt(t,e){return Math.sqrt((t[0]-e[0])*(t[0]-e[0])+(t[1]-e[1])*(t[1]-e[1]))}var yt=vt;function xt(t,e){return(t[0]-e[0])*(t[0]-e[0])+(t[1]-e[1])*(t[1]-e[1])}var _t=xt;function wt(t,e,i,n){return t[0]=e[0]+n*(i[0]-e[0]),t[1]=e[1]+n*(i[1]-e[1]),t}function bt(t,e,i){var n=e[0],a=e[1];return t[0]=i[0]*n+i[2]*a+i[4],t[1]=i[1]*n+i[3]*a+i[5],t}function St(t,e,i){return t[0]=Math.min(e[0],i[0]),t[1]=Math.min(e[1],i[1]),t}function Mt(t,e,i){return t[0]=Math.max(e[0],i[0]),t[1]=Math.max(e[1],i[1]),t}var It=(Object.freeze||Object)({create:at,copy:ot,clone:rt,set:st,add:lt,scaleAndAdd:ut,sub:ht,len:ct,length:dt,lenSquare:ft,lengthSquare:pt,mul:function(t,e,i){return t[0]=e[0]*i[0],t[1]=e[1]*i[1],t},div:function(t,e,i){return t[0]=e[0]/i[0],t[1]=e[1]/i[1],t},dot:function(t,e){return t[0]*e[0]+t[1]*e[1]},scale:gt,normalize:mt,distance:vt,dist:yt,distanceSquare:xt,distSquare:_t,negate:function(t,e){return t[0]=-e[0],t[1]=-e[1],t},lerp:wt,applyTransform:bt,min:St,max:Mt});function At(){this.on("mousedown",this._dragStart,this),this.on("mousemove",this._drag,this),this.on("mouseup",this._dragEnd,this),this.on("globalout",this._dragEnd,this)}function Tt(t,e){return{target:t,topTarget:e&&e.topTarget}}At.prototype={constructor:At,_dragStart:function(t){var e=t.target;e&&e.draggable&&((this._draggingTarget=e).dragging=!0,this._x=t.offsetX,this._y=t.offsetY,this.dispatchToElement(Tt(e,t),"dragstart",t.event))},_drag:function(t){var e=this._draggingTarget;if(e){var i=t.offsetX,n=t.offsetY,a=i-this._x,o=n-this._y;this._x=i,this._y=n,e.drift(a,o,t),this.dispatchToElement(Tt(e,t),"drag",t.event);var r=this.findHover(i,n,e).target,s=this._dropTarget;e!==(this._dropTarget=r)&&(s&&r!==s&&this.dispatchToElement(Tt(s,t),"dragleave",t.event),r&&r!==s&&this.dispatchToElement(Tt(r,t),"dragenter",t.event))}},_dragEnd:function(t){var e=this._draggingTarget;e&&(e.dragging=!1),this.dispatchToElement(Tt(e,t),"dragend",t.event),this._dropTarget&&this.dispatchToElement(Tt(this._dropTarget,t),"drop",t.event),this._draggingTarget=null,this._dropTarget=null}};var Dt=Array.prototype.slice,Ct=function(t){this._$handlers={},this._$eventProcessor=t};function Lt(t,e,i,n,a,o){var r=t._$handlers;if("function"==typeof i&&(a=n,n=i,i=null),!n||!e)return t;i=function(t,e){var i=t._$eventProcessor;return null!=e&&i&&i.normalizeQuery&&(e=i.normalizeQuery(e)),e}(t,i),r[e]||(r[e]=[]);for(var s=0;s<r[e].length;s++)if(r[e][s].h===n)return t;var l={h:n,one:o,query:i,ctx:a||t,callAtLast:n.zrEventfulCallAtLast},u=r[e].length-1,h=r[e][u];return h&&h.callAtLast?r[e].splice(u,0,l):r[e].push(l),t}Ct.prototype={constructor:Ct,one:function(t,e,i,n){return Lt(this,t,e,i,n,!0)},on:function(t,e,i,n){return Lt(this,t,e,i,n,!1)},isSilent:function(t){var e=this._$handlers;return!e[t]||!e[t].length},off:function(t,e){var i=this._$handlers;if(!t)return this._$handlers={},this;if(e){if(i[t]){for(var n=[],a=0,o=i[t].length;a<o;a++)i[t][a].h!==e&&n.push(i[t][a]);i[t]=n}i[t]&&0===i[t].length&&delete i[t]}else delete i[t];return this},trigger:function(t){var e=this._$handlers[t],i=this._$eventProcessor;if(e){var n=arguments,a=n.length;3<a&&(n=Dt.call(n,1));for(var o=e.length,r=0;r<o;){var s=e[r];if(i&&i.filter&&null!=s.query&&!i.filter(t,s.query))r++;else{switch(a){case 1:s.h.call(s.ctx);break;case 2:s.h.call(s.ctx,n[1]);break;case 3:s.h.call(s.ctx,n[1],n[2]);break;default:s.h.apply(s.ctx,n)}s.one?(e.splice(r,1),o--):r++}}}return i&&i.afterTrigger&&i.afterTrigger(t),this},triggerWithContext:function(t){var e=this._$handlers[t],i=this._$eventProcessor;if(e){var n=arguments,a=n.length;4<a&&(n=Dt.call(n,1,n.length-1));for(var o=n[n.length-1],r=e.length,s=0;s<r;){var l=e[s];if(i&&i.filter&&null!=l.query&&!i.filter(t,l.query))s++;else{switch(a){case 1:l.h.call(o);break;case 2:l.h.call(o,n[1]);break;case 3:l.h.call(o,n[1],n[2]);break;default:l.h.apply(o,n)}l.one?(e.splice(s,1),r--):s++}}}return i&&i.afterTrigger&&i.afterTrigger(t),this}};var kt=Math.log(2);function Pt(t,e,i,n,a,o){var r=n+"-"+a,s=t.length;if(o.hasOwnProperty(r))return o[r];if(1===e){var l=Math.round(Math.log((1<<s)-1&~a)/kt);return t[i][l]}for(var u=n|1<<i,h=i+1;n&1<<h;)h++;for(var c=0,d=0,f=0;d<s;d++){var p=1<<d;p&a||(c+=(f%2?-1:1)*t[i][d]*Pt(t,e-1,h,u,a|p,o),f++)}return o[r]=c}var Nt="undefined"!=typeof window&&!!window.addEventListener,Ot=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Et="___zrEVENTSAVED",Rt=[];function zt(t,e,i,n){return i=i||{},n||!v.canvasSupported?Bt(t,e,i):v.browser.firefox&&null!=e.layerX&&e.layerX!==e.offsetX?(i.zrX=e.layerX,i.zrY=e.layerY):null!=e.offsetX?(i.zrX=e.offsetX,i.zrY=e.offsetY):Bt(t,e,i),i}function Bt(t,e,i){if(t.getBoundingClientRect&&v.domSupported){var n=e.clientX,a=e.clientY;if("CANVAS"===t.nodeName.toUpperCase()){var o=t.getBoundingClientRect();return i.zrX=n-o.left,void(i.zrY=a-o.top)}var r=t[Et]||(t[Et]={}),s=function(t,e){for(var i=e.transformer,n=e.srcCoords,a=!0,o=[],r=[],s=0;s<4;s++){var l=t[s].getBoundingClientRect(),u=2*s,h=l.left,c=l.top;o.push(h,c),a&=n&&h===n[u]&&c===n[1+u],r.push(t[s].offsetLeft,t[s].offsetTop)}return a?i:(e.srcCoords=o,e.transformer=function(t,e){var i=[[t[0],t[1],1,0,0,0,-e[0]*t[0],-e[0]*t[1]],[0,0,0,t[0],t[1],1,-e[1]*t[0],-e[1]*t[1]],[t[2],t[3],1,0,0,0,-e[2]*t[2],-e[2]*t[3]],[0,0,0,t[2],t[3],1,-e[3]*t[2],-e[3]*t[3]],[t[4],t[5],1,0,0,0,-e[4]*t[4],-e[4]*t[5]],[0,0,0,t[4],t[5],1,-e[5]*t[4],-e[5]*t[5]],[t[6],t[7],1,0,0,0,-e[6]*t[6],-e[6]*t[7]],[0,0,0,t[6],t[7],1,-e[7]*t[6],-e[7]*t[7]]],n={},a=Pt(i,8,0,0,0,n);if(0!==a){for(var o=[],r=0;r<8;r++)for(var s=0;s<8;s++)null==o[s]&&(o[s]=0),o[s]+=((r+s)%2?-1:1)*Pt(i,7,0===r?1:0,1<<r,1<<s,n)/a*e[r];return function(t,e,i){var n=e*o[6]+i*o[7]+1;t[0]=(e*o[0]+i*o[1]+o[2])/n,t[1]=(e*o[3]+i*o[4]+o[5])/n}}}(o,r))}(function(t,e){var i=e.markers;if(i)return i;i=e.markers=[];for(var n=["left","right"],a=["top","bottom"],o=0;o<4;o++){var r=document.createElement("div"),s=r.style,l=o%2,u=(o>>1)%2;s.cssText=["position:absolute","visibility: hidden","padding: 0","margin: 0","border-width: 0","width:0","height:0",n[l]+":0",a[u]+":0",n[1-l]+":auto",a[1-u]+":auto",""].join("!important;"),t.appendChild(r),i.push(r)}return i}(t,r),r);if(s)return s(Rt,n,a),i.zrX=Rt[0],void(i.zrY=Rt[1])}i.zrX=i.zrY=0}function Vt(t,e,i){if(null!=(e=e||window.event).zrX)return e;var n=e.type;if(n&&0<=n.indexOf("touch")){var a="touchend"!==n?e.targetTouches[0]:e.changedTouches[0];a&&zt(t,a,e,i)}else zt(t,e,e,i),e.zrDelta=e.wheelDelta?e.wheelDelta/120:-(e.detail||0)/3;var o=e.button;return null==e.which&&void 0!==o&&Ot.test(e.type)&&(e.which=1&o?1:2&o?3:4&o?2:0),e}function Gt(t,e,i){Nt?t.addEventListener(e,i):t.attachEvent("on"+e,i)}var Ft=Nt?function(t){t.preventDefault(),t.stopPropagation(),t.cancelBubble=!0}:function(t){t.returnValue=!1,t.cancelBubble=!0};function Wt(t){return 2===t.which||3===t.which}function Ht(){this._track=[]}function Zt(t){var e=t[1][0]-t[0][0],i=t[1][1]-t[0][1];return Math.sqrt(e*e+i*i)}Ht.prototype={constructor:Ht,recognize:function(t,e,i){return this._doTrack(t,e,i),this._recognize(t)},clear:function(){return this._track.length=0,this},_doTrack:function(t,e,i){var n=t.touches;if(n){for(var a={points:[],touches:[],target:e,event:t},o=0,r=n.length;o<r;o++){var s=n[o],l=zt(i,s,{});a.points.push([l.zrX,l.zrY]),a.touches.push(s)}this._track.push(a)}},_recognize:function(t){for(var e in Ut)if(Ut.hasOwnProperty(e)){var i=Ut[e](this._track,t);if(i)return i}}};var Ut={pinch:function(t,e){var i=t.length;if(i){var n=(t[i-1]||{}).points,a=(t[i-2]||{}).points||n;if(a&&1<a.length&&n&&1<n.length){var o=Zt(n)/Zt(a);isFinite(o)||(o=1),e.pinchScale=o;var r=function(t){return[(t[0][0]+t[1][0])/2,(t[0][1]+t[1][1])/2]}(n);return e.pinchX=r[0],e.pinchY=r[1],{type:"pinch",target:t[0].target,event:e}}}}},Xt="silent";function Yt(t){Ft(this.event)}function jt(){}jt.prototype.dispose=function(){};function qt(t,e,i,n){Ct.call(this),this.storage=t,this.painter=e,this.painterRoot=n,i=i||new jt,this.proxy=null,this._hovered={},this._lastTouchMoment,this._lastX,this._lastY,this._gestureMgr,At.call(this),this.setHandlerProxy(i)}var Kt=["click","dblclick","mousewheel","mouseout","mouseup","mousedown","mousemove","contextmenu"];function $t(t,e,i){if(t[t.rectHover?"rectContain":"contain"](e,i)){for(var n,a=t;a;){if(a.clipPath&&!a.clipPath.contain(e,i))return!1;a.silent&&(n=!0),a=a.parent}return!n||Xt}return!1}qt.prototype={constructor:qt,setHandlerProxy:function(e){this.proxy&&this.proxy.dispose(),e&&(E(Kt,function(t){e.on&&e.on(t,this[t],this)},this),e.handler=this),this.proxy=e},mousemove:function(t){var e=t.zrX,i=t.zrY,n=this._hovered,a=n.target;a&&!a.__zr&&(a=(n=this.findHover(n.x,n.y)).target);var o=this._hovered=this.findHover(e,i),r=o.target,s=this.proxy;s.setCursor&&s.setCursor(r?r.cursor:"default"),a&&r!==a&&this.dispatchToElement(n,"mouseout",t),this.dispatchToElement(o,"mousemove",t),r&&r!==a&&this.dispatchToElement(o,"mouseover",t)},mouseout:function(t){this.dispatchToElement(this._hovered,"mouseout",t);for(var e,i=t.toElement||t.relatedTarget;(i=i&&i.parentNode)&&9!==i.nodeType&&!(e=i===this.painterRoot););e||this.trigger("globalout",{event:t})},resize:function(t){this._hovered={}},dispatch:function(t,e){var i=this[t];i&&i.call(this,e)},dispose:function(){this.proxy.dispose(),this.storage=this.proxy=this.painter=null},setCursorStyle:function(t){var e=this.proxy;e.setCursor&&e.setCursor(t)},dispatchToElement:function(t,e,i){var n=(t=t||{}).target;if(!n||!n.silent){for(var a="on"+e,o=function(t,e,i){return{type:t,event:i,target:e.target,topTarget:e.topTarget,cancelBubble:!1,offsetX:i.zrX,offsetY:i.zrY,gestureEvent:i.gestureEvent,pinchX:i.pinchX,pinchY:i.pinchY,pinchScale:i.pinchScale,wheelDelta:i.zrDelta,zrByTouch:i.zrByTouch,which:i.which,stop:Yt}}(e,t,i);n&&(n[a]&&(o.cancelBubble=n[a].call(n,o)),n.trigger(e,o),n=n.parent,!o.cancelBubble););o.cancelBubble||(this.trigger(e,o),this.painter&&this.painter.eachOtherLayer(function(t){"function"==typeof t[a]&&t[a].call(t,o),t.trigger&&t.trigger(e,o)}))}},findHover:function(t,e,i){for(var n=this.storage.getDisplayList(),a={x:t,y:e},o=n.length-1;0<=o;o--){var r;if(n[o]!==i&&!n[o].ignore&&(r=$t(n[o],t,e))&&(a.topTarget||(a.topTarget=n[o]),r!==Xt)){a.target=n[o];break}}return a},processGesture:function(t,e){this._gestureMgr||(this._gestureMgr=new Ht);var i=this._gestureMgr;"start"===e&&i.clear();var n=i.recognize(t,this.findHover(t.zrX,t.zrY,null).target,this.proxy.dom);if("end"===e&&i.clear(),n){var a=n.type;t.gestureEvent=a,this.dispatchToElement({target:n.target},a,n.event)}}},E(["click","mousedown","mouseup","mousewheel","dblclick","contextmenu"],function(n){qt.prototype[n]=function(t){var e=this.findHover(t.zrX,t.zrY),i=e.target;if("mousedown"===n)this._downEl=i,this._downPoint=[t.zrX,t.zrY],this._upEl=i;else if("mouseup"===n)this._upEl=i;else if("click"===n){if(this._downEl!==this._upEl||!this._downPoint||4<yt(this._downPoint,[t.zrX,t.zrY]))return;this._downPoint=null}this.dispatchToElement(e,n,t)}}),b(qt,Ct),b(qt,At);var Jt="undefined"==typeof Float32Array?Array:Float32Array;function Qt(){var t=new Jt(6);return te(t),t}function te(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t}function ee(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t}function ie(t,e,i){var n=e[0]*i[0]+e[2]*i[1],a=e[1]*i[0]+e[3]*i[1],o=e[0]*i[2]+e[2]*i[3],r=e[1]*i[2]+e[3]*i[3],s=e[0]*i[4]+e[2]*i[5]+e[4],l=e[1]*i[4]+e[3]*i[5]+e[5];return t[0]=n,t[1]=a,t[2]=o,t[3]=r,t[4]=s,t[5]=l,t}function ne(t,e,i){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4]+i[0],t[5]=e[5]+i[1],t}function ae(t,e,i){var n=e[0],a=e[2],o=e[4],r=e[1],s=e[3],l=e[5],u=Math.sin(i),h=Math.cos(i);return t[0]=n*h+r*u,t[1]=-n*u+r*h,t[2]=a*h+s*u,t[3]=-a*u+h*s,t[4]=h*o+u*l,t[5]=h*l-u*o,t}function oe(t,e,i){var n=i[0],a=i[1];return t[0]=e[0]*n,t[1]=e[1]*a,t[2]=e[2]*n,t[3]=e[3]*a,t[4]=e[4]*n,t[5]=e[5]*a,t}function re(t,e){var i=e[0],n=e[2],a=e[4],o=e[1],r=e[3],s=e[5],l=i*r-o*n;return l?(l=1/l,t[0]=r*l,t[1]=-o*l,t[2]=-n*l,t[3]=i*l,t[4]=(n*s-r*a)*l,t[5]=(o*a-i*s)*l,t):null}function se(t){var e=Qt();return ee(e,t),e}var le=(Object.freeze||Object)({create:Qt,identity:te,copy:ee,mul:ie,translate:ne,rotate:ae,scale:oe,invert:re,clone:se}),ue=te;function he(t){return 5e-5<t||t<-5e-5}var ce=function(t){(t=t||{}).position||(this.position=[0,0]),null==t.rotation&&(this.rotation=0),t.scale||(this.scale=[1,1]),this.origin=this.origin||null},de=ce.prototype;de.transform=null,de.needLocalTransform=function(){return he(this.rotation)||he(this.position[0])||he(this.position[1])||he(this.scale[0]-1)||he(this.scale[1]-1)};var fe=[];de.updateTransform=function(){var t=this.parent,e=t&&t.transform,i=this.needLocalTransform(),n=this.transform;if(i||e){n=n||Qt(),i?this.getLocalTransform(n):ue(n),e&&(i?ie(n,t.transform,n):ee(n,t.transform)),this.transform=n;var a=this.globalScaleRatio;if(null!=a&&1!==a){this.getGlobalScale(fe);var o=fe[0]<0?-1:1,r=fe[1]<0?-1:1,s=((fe[0]-o)*a+o)/fe[0]||0,l=((fe[1]-r)*a+r)/fe[1]||0;n[0]*=s,n[1]*=s,n[2]*=l,n[3]*=l}this.invTransform=this.invTransform||Qt(),re(this.invTransform,n)}else n&&ue(n)},de.getLocalTransform=function(t){return ce.getLocalTransform(this,t)},de.setTransform=function(t){var e=this.transform,i=t.dpr||1;e?t.setTransform(i*e[0],i*e[1],i*e[2],i*e[3],i*e[4],i*e[5]):t.setTransform(i,0,0,i,0,0)},de.restoreTransform=function(t){var e=t.dpr||1;t.setTransform(e,0,0,e,0,0)};var pe=[],ge=Qt();de.setLocalTransform=function(t){if(t){var e=t[0]*t[0]+t[1]*t[1],i=t[2]*t[2]+t[3]*t[3],n=this.position,a=this.scale;he(e-1)&&(e=Math.sqrt(e)),he(i-1)&&(i=Math.sqrt(i)),t[0]<0&&(e=-e),t[3]<0&&(i=-i),n[0]=t[4],n[1]=t[5],a[0]=e,a[1]=i,this.rotation=Math.atan2(-t[1]/i,t[0]/e)}},de.decomposeTransform=function(){if(this.transform){var t=this.parent,e=this.transform;t&&t.transform&&(ie(pe,t.invTransform,e),e=pe);var i=this.origin;i&&(i[0]||i[1])&&(ge[4]=i[0],ge[5]=i[1],ie(pe,e,ge),pe[4]-=i[0],pe[5]-=i[1],e=pe),this.setLocalTransform(e)}},de.getGlobalScale=function(t){var e=this.transform;return t=t||[],e?(t[0]=Math.sqrt(e[0]*e[0]+e[1]*e[1]),t[1]=Math.sqrt(e[2]*e[2]+e[3]*e[3]),e[0]<0&&(t[0]=-t[0]),e[3]<0&&(t[1]=-t[1])):(t[0]=1,t[1]=1),t},de.transformCoordToLocal=function(t,e){var i=[t,e],n=this.invTransform;return n&&bt(i,i,n),i},de.transformCoordToGlobal=function(t,e){var i=[t,e],n=this.transform;return n&&bt(i,i,n),i},ce.getLocalTransform=function(t,e){ue(e=e||[]);var i=t.origin,n=t.scale||[1,1],a=t.rotation||0,o=t.position||[0,0];return i&&(e[4]-=i[0],e[5]-=i[1]),oe(e,e,n),a&&ae(e,e,a),i&&(e[4]+=i[0],e[5]+=i[1]),e[4]+=o[0],e[5]+=o[1],e};var me={linear:function(t){return t},quadraticIn:function(t){return t*t},quadraticOut:function(t){return t*(2-t)},quadraticInOut:function(t){return(t*=2)<1?.5*t*t:-.5*(--t*(t-2)-1)},cubicIn:function(t){return t*t*t},cubicOut:function(t){return--t*t*t+1},cubicInOut:function(t){return(t*=2)<1?.5*t*t*t:.5*((t-=2)*t*t+2)},quarticIn:function(t){return t*t*t*t},quarticOut:function(t){return 1- --t*t*t*t},quarticInOut:function(t){return(t*=2)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2)},quinticIn:function(t){return t*t*t*t*t},quinticOut:function(t){return--t*t*t*t*t+1},quinticInOut:function(t){return(t*=2)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)},sinusoidalIn:function(t){return 1-Math.cos(t*Math.PI/2)},sinusoidalOut:function(t){return Math.sin(t*Math.PI/2)},sinusoidalInOut:function(t){return.5*(1-Math.cos(Math.PI*t))},exponentialIn:function(t){return 0===t?0:Math.pow(1024,t-1)},exponentialOut:function(t){return 1===t?1:1-Math.pow(2,-10*t)},exponentialInOut:function(t){return 0===t?0:1===t?1:(t*=2)<1?.5*Math.pow(1024,t-1):.5*(2-Math.pow(2,-10*(t-1)))},circularIn:function(t){return 1-Math.sqrt(1-t*t)},circularOut:function(t){return Math.sqrt(1- --t*t)},circularInOut:function(t){return(t*=2)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},elasticIn:function(t){var e,i=.1;return 0===t?0:1===t?1:(e=!i||i<1?(i=1,.1):.4*Math.asin(1/i)/(2*Math.PI),-i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/.4))},elasticOut:function(t){var e,i=.1;return 0===t?0:1===t?1:(e=!i||i<1?(i=1,.1):.4*Math.asin(1/i)/(2*Math.PI),i*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/.4)+1)},elasticInOut:function(t){var e,i=.1;return 0===t?0:1===t?1:(e=!i||i<1?(i=1,.1):.4*Math.asin(1/i)/(2*Math.PI),(t*=2)<1?i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/.4)*-.5:i*Math.pow(2,-10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/.4)*.5+1)},backIn:function(t){return t*t*(2.70158*t-1.70158)},backOut:function(t){return--t*t*(2.70158*t+1.70158)+1},backInOut:function(t){var e=2.5949095;return(t*=2)<1?t*t*((1+e)*t-e)*.5:.5*((t-=2)*t*((1+e)*t+e)+2)},bounceIn:function(t){return 1-me.bounceOut(1-t)},bounceOut:function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},bounceInOut:function(t){return t<.5?.5*me.bounceIn(2*t):.5*me.bounceOut(2*t-1)+.5}};function ve(t){this._target=t.target,this._life=t.life||1e3,this._delay=t.delay||0,this._initialized=!1,this.loop=null!=t.loop&&t.loop,this.gap=t.gap||0,this.easing=t.easing||"Linear",this.onframe=t.onframe,this.ondestroy=t.ondestroy,this.onrestart=t.onrestart,this._pausedTime=0,this._paused=!1}ve.prototype={constructor:ve,step:function(t,e){if(this._initialized||(this._startTime=t+this._delay,this._initialized=!0),this._paused)this._pausedTime+=e;else{var i=(t-this._startTime-this._pausedTime)/this._life;if(!(i<0)){i=Math.min(i,1);var n=this.easing,a="string"==typeof n?me[n]:n,o="function"==typeof a?a(i):i;return this.fire("frame",o),1===i?this.loop?(this.restart(t),"restart"):(this._needsRemove=!0,"destroy"):null}}},restart:function(t){var e=(t-this._startTime-this._pausedTime)%this._life;this._startTime=t-e+this.gap,this._pausedTime=0,this._needsRemove=!1},fire:function(t,e){this[t="on"+t]&&this[t](this._target,e)},pause:function(){this._paused=!0},resume:function(){this._paused=!1}};function ye(){this.head=null,this.tail=null,this._len=0}var xe=ye.prototype;xe.insert=function(t){var e=new we(t);return this.insertEntry(e),e},xe.insertEntry=function(t){this.head?((this.tail.next=t).prev=this.tail,t.next=null,this.tail=t):this.head=this.tail=t,this._len++},xe.remove=function(t){var e=t.prev,i=t.next;e?e.next=i:this.head=i,i?i.prev=e:this.tail=e,t.next=t.prev=null,this._len--},xe.len=function(){return this._len},xe.clear=function(){this.head=this.tail=null,this._len=0};function _e(t){this._list=new ye,this._map={},this._maxSize=t||10,this._lastRemovedEntry=null}var we=function(t){this.value=t,this.next,this.prev},be=_e.prototype;be.put=function(t,e){var i=this._list,n=this._map,a=null;if(null==n[t]){var o=i.len(),r=this._lastRemovedEntry;if(o>=this._maxSize&&0<o){var s=i.head;i.remove(s),delete n[s.key],a=s.value,this._lastRemovedEntry=s}r?r.value=e:r=new we(e),r.key=t,i.insertEntry(r),n[t]=r}return a},be.get=function(t){var e=this._map[t],i=this._list;if(null!=e)return e!==i.tail&&(i.remove(e),i.insertEntry(e)),e.value},be.clear=function(){this._list.clear(),this._map={}};var Se={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]};function Me(t){return(t=Math.round(t))<0?0:255<t?255:t}function Ie(t){return t<0?0:1<t?1:t}function Ae(t){return t.length&&"%"===t.charAt(t.length-1)?Me(parseFloat(t)/100*255):Me(parseInt(t,10))}function Te(t){return t.length&&"%"===t.charAt(t.length-1)?Ie(parseFloat(t)/100):Ie(parseFloat(t))}function De(t,e,i){return i<0?i+=1:1<i&&(i-=1),6*i<1?t+(e-t)*i*6:2*i<1?e:3*i<2?t+(e-t)*(2/3-i)*6:t}function Ce(t,e,i){return t+(e-t)*i}function Le(t,e,i,n,a){return t[0]=e,t[1]=i,t[2]=n,t[3]=a,t}function ke(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t}var Pe=new _e(20),Ne=null;function Oe(t,e){Ne&&ke(Ne,e),Ne=Pe.put(t,Ne||e.slice())}function Ee(t,e){if(t){e=e||[];var i=Pe.get(t);if(i)return ke(e,i);var n,a=(t+="").replace(/ /g,"").toLowerCase();if(a in Se)return ke(e,Se[a]),Oe(t,e),e;if("#"===a.charAt(0))return 4===a.length?0<=(n=parseInt(a.substr(1),16))&&n<=4095?(Le(e,(3840&n)>>4|(3840&n)>>8,240&n|(240&n)>>4,15&n|(15&n)<<4,1),Oe(t,e),e):void Le(e,0,0,0,1):7===a.length?0<=(n=parseInt(a.substr(1),16))&&n<=16777215?(Le(e,(16711680&n)>>16,(65280&n)>>8,255&n,1),Oe(t,e),e):void Le(e,0,0,0,1):void 0;var o=a.indexOf("("),r=a.indexOf(")");if(-1!==o&&r+1===a.length){var s=a.substr(0,o),l=a.substr(o+1,r-(o+1)).split(","),u=1;switch(s){case"rgba":if(4!==l.length)return void Le(e,0,0,0,1);u=Te(l.pop());case"rgb":return 3!==l.length?void Le(e,0,0,0,1):(Le(e,Ae(l[0]),Ae(l[1]),Ae(l[2]),u),Oe(t,e),e);case"hsla":return 4!==l.length?void Le(e,0,0,0,1):(l[3]=Te(l[3]),Re(l,e),Oe(t,e),e);case"hsl":return 3!==l.length?void Le(e,0,0,0,1):(Re(l,e),Oe(t,e),e);default:return}}Le(e,0,0,0,1)}}function Re(t,e){var i=(parseFloat(t[0])%360+360)%360/360,n=Te(t[1]),a=Te(t[2]),o=a<=.5?a*(n+1):a+n-a*n,r=2*a-o;return Le(e=e||[],Me(255*De(r,o,i+1/3)),Me(255*De(r,o,i)),Me(255*De(r,o,i-1/3)),1),4===t.length&&(e[3]=t[3]),e}function ze(t,e){var i=Ee(t);if(i){for(var n=0;n<3;n++)i[n]=e<0?i[n]*(1-e)|0:(255-i[n])*e+i[n]|0,255<i[n]?i[n]=255:t[n]<0&&(i[n]=0);return Ue(i,4===i.length?"rgba":"rgb")}}function Be(t){var e=Ee(t);if(e)return((1<<24)+(e[0]<<16)+(e[1]<<8)+ +e[2]).toString(16).slice(1)}function Ve(t,e,i){if(e&&e.length&&0<=t&&t<=1){i=i||[];var n=t*(e.length-1),a=Math.floor(n),o=Math.ceil(n),r=e[a],s=e[o],l=n-a;return i[0]=Me(Ce(r[0],s[0],l)),i[1]=Me(Ce(r[1],s[1],l)),i[2]=Me(Ce(r[2],s[2],l)),i[3]=Ie(Ce(r[3],s[3],l)),i}}var Ge=Ve;function Fe(t,e,i){if(e&&e.length&&0<=t&&t<=1){var n=t*(e.length-1),a=Math.floor(n),o=Math.ceil(n),r=Ee(e[a]),s=Ee(e[o]),l=n-a,u=Ue([Me(Ce(r[0],s[0],l)),Me(Ce(r[1],s[1],l)),Me(Ce(r[2],s[2],l)),Ie(Ce(r[3],s[3],l))],"rgba");return i?{color:u,leftIndex:a,rightIndex:o,value:n}:u}}var We=Fe;function He(t,e,i,n){if(t=Ee(t))return t=function(t){if(t){var e,i,n=t[0]/255,a=t[1]/255,o=t[2]/255,r=Math.min(n,a,o),s=Math.max(n,a,o),l=s-r,u=(s+r)/2;if(0==l)i=e=0;else{i=u<.5?l/(s+r):l/(2-s-r);var h=((s-n)/6+l/2)/l,c=((s-a)/6+l/2)/l,d=((s-o)/6+l/2)/l;n===s?e=d-c:a===s?e=1/3+h-d:o===s&&(e=2/3+c-h),e<0&&(e+=1),1<e&&(e-=1)}var f=[360*e,i,u];return null!=t[3]&&f.push(t[3]),f}}(t),null!=e&&(t[0]=function(t){return(t=Math.round(t))<0?0:360<t?360:t}(e)),null!=i&&(t[1]=Te(i)),null!=n&&(t[2]=Te(n)),Ue(Re(t),"rgba")}function Ze(t,e){if((t=Ee(t))&&null!=e)return t[3]=Ie(e),Ue(t,"rgba")}function Ue(t,e){if(t&&t.length){var i=t[0]+","+t[1]+","+t[2];return"rgba"!==e&&"hsva"!==e&&"hsla"!==e||(i+=","+t[3]),e+"("+i+")"}}var Xe=(Object.freeze||Object)({parse:Ee,lift:ze,toHex:Be,fastLerp:Ve,fastMapToColor:Ge,lerp:Fe,mapToColor:We,modifyHSL:He,modifyAlpha:Ze,stringify:Ue}),Ye=Array.prototype.slice;function je(t,e){return t[e]}function qe(t,e,i){t[e]=i}function Ke(t,e,i){return(e-t)*i+t}function $e(t,e,i){return.5<i?e:t}function Je(t,e,i,n,a){var o=t.length;if(1===a)for(var r=0;r<o;r++)n[r]=Ke(t[r],e[r],i);else{var s=o&&t[0].length;for(r=0;r<o;r++)for(var l=0;l<s;l++)n[r][l]=Ke(t[r][l],e[r][l],i)}}function Qe(t,e,i){var n=t.length,a=e.length;if(n!==a)if(a<n)t.length=a;else for(var o=n;o<a;o++)t.push(1===i?e[o]:Ye.call(e[o]));var r=t[0]&&t[0].length;for(o=0;o<t.length;o++)if(1===i)isNaN(t[o])&&(t[o]=e[o]);else for(var s=0;s<r;s++)isNaN(t[o][s])&&(t[o][s]=e[o][s])}function ti(t,e,i){if(t===e)return!0;var n=t.length;if(n!==e.length)return!1;if(1===i){for(var a=0;a<n;a++)if(t[a]!==e[a])return!1}else{var o=t[0].length;for(a=0;a<n;a++)for(var r=0;r<o;r++)if(t[a][r]!==e[a][r])return!1}return!0}function ei(t,e,i,n,a,o,r,s,l){var u=t.length;if(1===l)for(var h=0;h<u;h++)s[h]=ii(t[h],e[h],i[h],n[h],a,o,r);else{var c=t[0].length;for(h=0;h<u;h++)for(var d=0;d<c;d++)s[h][d]=ii(t[h][d],e[h][d],i[h][d],n[h][d],a,o,r)}}function ii(t,e,i,n,a,o,r){var s=.5*(i-t),l=.5*(n-e);return(2*(e-i)+s+l)*r+(-3*(e-i)-2*s-l)*o+s*a+e}function ni(t){if(P(t)){var e=t.length;if(P(t[0])){for(var i=[],n=0;n<e;n++)i.push(Ye.call(t[n]));return i}return Ye.call(t)}return t}function ai(t){return t[0]=Math.floor(t[0]),t[1]=Math.floor(t[1]),t[2]=Math.floor(t[2]),"rgba("+t.join(",")+")"}function oi(t,e,i,n,o,a){var r=t._getter,s=t._setter,l="spline"===e,u=n.length;if(u){var h,c=P(n[0].value),d=!1,f=!1,p=c?function(t){var e=t[t.length-1].value;return P(e&&e[0])?2:1}(n):0;n.sort(function(t,e){return t.time-e.time}),h=n[u-1].time;for(var g=[],m=[],v=n[0].value,y=!0,x=0;x<u;x++){g.push(n[x].time/h);var _=n[x].value;if(c&&ti(_,v,p)||!c&&_===v||(y=!1),"string"==typeof(v=_)){var w=Ee(_);w?(_=w,d=!0):f=!0}m.push(_)}if(a||!y){var b=m[u-1];for(x=0;x<u-1;x++)c?Qe(m[x],b,p):!isNaN(m[x])||isNaN(b)||f||d||(m[x]=b);c&&Qe(r(t._target,o),b,p);var S,M,I,A,T,D=0,C=0;if(d)var L=[0,0,0,0];var k=new ve({target:t._target,life:h,loop:t._loop,delay:t._delay,onframe:function(t,e){var i;if(e<0)i=0;else if(e<C){for(i=Math.min(D+1,u-1);0<=i&&!(g[i]<=e);i--);i=Math.min(i,u-2)}else{for(i=D;i<u&&!(g[i]>e);i++);i=Math.min(i-1,u-2)}C=e;var n=g[(D=i)+1]-g[i];if(0!=n)if(S=(e-g[i])/n,l)if(I=m[i],M=m[0===i?i:i-1],A=m[u-2<i?u-1:i+1],T=m[u-3<i?u-1:i+2],c)ei(M,I,A,T,S,S*S,S*S*S,r(t,o),p);else{if(d)a=ei(M,I,A,T,S,S*S,S*S*S,L,1),a=ai(L);else{if(f)return $e(I,A,S);a=ii(M,I,A,T,S,S*S,S*S*S)}s(t,o,a)}else if(c)Je(m[i],m[i+1],S,r(t,o),p);else{var a;if(d)Je(m[i],m[i+1],S,L,1),a=ai(L);else{if(f)return $e(m[i],m[i+1],S);a=Ke(m[i],m[i+1],S)}s(t,o,a)}},ondestroy:i});return e&&"spline"!==e&&(k.easing=e),k}}}function ri(t,e,i,n){this._tracks={},this._target=t,this._loop=e||!1,this._getter=i||je,this._setter=n||qe,this._clipCount=0,this._delay=0,this._doneList=[],this._onframeList=[],this._clipList=[]}ri.prototype={when:function(t,e){var i=this._tracks;for(var n in e)if(e.hasOwnProperty(n)){if(!i[n]){i[n]=[];var a=this._getter(this._target,n);if(null==a)continue;0!==t&&i[n].push({time:0,value:ni(a)})}i[n].push({time:t,value:e[n]})}return this},during:function(t){return this._onframeList.push(t),this},pause:function(){for(var t=0;t<this._clipList.length;t++)this._clipList[t].pause();this._paused=!0},resume:function(){for(var t=0;t<this._clipList.length;t++)this._clipList[t].resume();this._paused=!1},isPaused:function(){return!!this._paused},_doneCallback:function(){this._tracks={},this._clipList.length=0;for(var t=this._doneList,e=t.length,i=0;i<e;i++)t[i].call(this)},start:function(t,e){function i(){--o||a._doneCallback()}var n,a=this,o=0;for(var r in this._tracks)if(this._tracks.hasOwnProperty(r)){var s=oi(this,t,i,this._tracks[r],r,e);s&&(this._clipList.push(s),o++,this.animation&&this.animation.addClip(s),n=s)}if(n){var l=n.onframe;n.onframe=function(t,e){l(t,e);for(var i=0;i<a._onframeList.length;i++)a._onframeList[i](t,e)}}return o||this._doneCallback(),this},stop:function(t){for(var e=this._clipList,i=this.animation,n=0;n<e.length;n++){var a=e[n];t&&a.onframe(this._target,1),i&&i.removeClip(a)}e.length=0},delay:function(t){return this._delay=t,this},done:function(t){return t&&this._doneList.push(t),this},getClips:function(){return this._clipList}};var si=1;"undefined"!=typeof window&&(si=Math.max(window.devicePixelRatio||1,1));var li=si,ui=function(){};function hi(){this.animators=[]}var ci=ui;function di(t,e,i,n,a,o,r,s){R(n)?(o=a,a=n,n=0):O(a)?(o=a,a="linear",n=0):O(n)?(o=n,n=0):i=O(i)?(o=i,500):i||500,t.stopAnimation(),function t(e,i,n,a,o,r,s){var l={};var u=0;for(var h in a)a.hasOwnProperty(h)&&(null!=n[h]?z(a[h])&&!P(a[h])?t(e,i?i+"."+h:h,n[h],a[h],o,r,s):(s?(l[h]=n[h],fi(e,i,h,a[h])):l[h]=a[h],u++):null==a[h]||s||fi(e,i,h,a[h]));0<u&&e.animate(i,!1).when(null==o?500:o,l).delay(r||0)}(t,"",t,e,i,n,s);var l=t.animators.slice(),u=l.length;function h(){--u||o&&o()}u||o&&o();for(var c=0;c<l.length;c++)l[c].done(h).start(a,r)}function fi(t,e,i,n){if(e){var a={};a[e]={},a[e][i]=n,t.attr(a)}else t.attr(i,n)}hi.prototype={constructor:hi,animate:function(t,e){var i,n=!1,a=this,o=this.__zr;if(t){var r=t.split("."),s=a;n="shape"===r[0];for(var l=0,u=r.length;l<u;l++)s=s&&s[r[l]];s&&(i=s)}else i=a;if(i){var h=a.animators,c=new ri(i,e);return c.during(function(t){a.dirty(n)}).done(function(){h.splice(_(h,c),1)}),h.push(c),o&&o.animation.addAnimator(c),c}ci('Property "'+t+'" is not existed in element '+a.id)},stopAnimation:function(t){for(var e=this.animators,i=e.length,n=0;n<i;n++)e[n].stop(t);return e.length=0,this},animateTo:function(t,e,i,n,a,o){di(this,t,e,i,n,a,o)},animateFrom:function(t,e,i,n,a,o){di(this,t,e,i,n,a,o,!0)}};var pi=function(t){ce.call(this,t),Ct.call(this,t),hi.call(this,t),this.id=t.id||n()};pi.prototype={type:"element",name:"",__zr:null,ignore:!1,clipPath:null,isGroup:!1,drift:function(t,e){switch(this.draggable){case"horizontal":e=0;break;case"vertical":t=0}var i=this.transform;(i=i||(this.transform=[1,0,0,1,0,0]))[4]+=t,i[5]+=e,this.decomposeTransform(),this.dirty(!1)},beforeUpdate:function(){},afterUpdate:function(){},update:function(){this.updateTransform()},traverse:function(t,e){},attrKV:function(t,e){if("position"===t||"scale"===t||"origin"===t){if(e){var i=this[t];(i=i||(this[t]=[]))[0]=e[0],i[1]=e[1]}}else this[t]=e},hide:function(){this.ignore=!0,this.__zr&&this.__zr.refresh()},show:function(){this.ignore=!1,this.__zr&&this.__zr.refresh()},attr:function(t,e){if("string"==typeof t)this.attrKV(t,e);else if(z(t))for(var i in t)t.hasOwnProperty(i)&&this.attrKV(i,t[i]);return this.dirty(!1),this},setClipPath:function(t){var e=this.__zr;e&&t.addSelfToZr(e),this.clipPath&&this.clipPath!==t&&this.removeClipPath(),(this.clipPath=t).__zr=e,(t.__clipTarget=this).dirty(!1)},removeClipPath:function(){var t=this.clipPath;t&&(t.__zr&&t.removeSelfFromZr(t.__zr),t.__zr=null,t.__clipTarget=null,this.clipPath=null,this.dirty(!1))},addSelfToZr:function(t){this.__zr=t;var e=this.animators;if(e)for(var i=0;i<e.length;i++)t.animation.addAnimator(e[i]);this.clipPath&&this.clipPath.addSelfToZr(t)},removeSelfFromZr:function(t){this.__zr=null;var e=this.animators;if(e)for(var i=0;i<e.length;i++)t.animation.removeAnimator(e[i]);this.clipPath&&this.clipPath.removeSelfFromZr(t)}},b(pi,hi),b(pi,ce),b(pi,Ct);var gi,mi,vi,yi,xi=bt,_i=Math.min,wi=Math.max;function bi(t,e,i,n){i<0&&(t+=i,i=-i),n<0&&(e+=n,n=-n),this.x=t,this.y=e,this.width=i,this.height=n}bi.prototype={constructor:bi,union:function(t){var e=_i(t.x,this.x),i=_i(t.y,this.y);this.width=wi(t.x+t.width,this.x+this.width)-e,this.height=wi(t.y+t.height,this.y+this.height)-i,this.x=e,this.y=i},applyTransform:(gi=[],mi=[],vi=[],yi=[],function(t){if(t){gi[0]=vi[0]=this.x,gi[1]=yi[1]=this.y,mi[0]=yi[0]=this.x+this.width,mi[1]=vi[1]=this.y+this.height,xi(gi,gi,t),xi(mi,mi,t),xi(vi,vi,t),xi(yi,yi,t),this.x=_i(gi[0],mi[0],vi[0],yi[0]),this.y=_i(gi[1],mi[1],vi[1],yi[1]);var e=wi(gi[0],mi[0],vi[0],yi[0]),i=wi(gi[1],mi[1],vi[1],yi[1]);this.width=e-this.x,this.height=i-this.y}}),calculateTransform:function(t){var e=t.width/this.width,i=t.height/this.height,n=Qt();return ne(n,n,[-this.x,-this.y]),oe(n,n,[e,i]),ne(n,n,[t.x,t.y]),n},intersect:function(t){if(!t)return!1;t instanceof bi||(t=bi.create(t));var e=this,i=e.x,n=e.x+e.width,a=e.y,o=e.y+e.height,r=t.x,s=t.x+t.width,l=t.y,u=t.y+t.height;return!(n<r||s<i||o<l||u<a)},contain:function(t,e){var i=this;return t>=i.x&&t<=i.x+i.width&&e>=i.y&&e<=i.y+i.height},clone:function(){return new bi(this.x,this.y,this.width,this.height)},copy:function(t){this.x=t.x,this.y=t.y,this.width=t.width,this.height=t.height},plain:function(){return{x:this.x,y:this.y,width:this.width,height:this.height}}},bi.create=function(t){return new bi(t.x,t.y,t.width,t.height)};var Si=function(t){for(var e in t=t||{},pi.call(this,t),t)t.hasOwnProperty(e)&&(this[e]=t[e]);this._children=[],this.__storage=null,this.__dirty=!0};Si.prototype={constructor:Si,isGroup:!0,type:"group",silent:!1,children:function(){return this._children.slice()},childAt:function(t){return this._children[t]},childOfName:function(t){for(var e=this._children,i=0;i<e.length;i++)if(e[i].name===t)return e[i]},childCount:function(){return this._children.length},add:function(t){return t&&t!==this&&t.parent!==this&&(this._children.push(t),this._doAdd(t)),this},addBefore:function(t,e){if(t&&t!==this&&t.parent!==this&&e&&e.parent===this){var i=this._children,n=i.indexOf(e);0<=n&&(i.splice(n,0,t),this._doAdd(t))}return this},_doAdd:function(t){t.parent&&t.parent.remove(t);var e=(t.parent=this).__storage,i=this.__zr;e&&e!==t.__storage&&(e.addToStorage(t),t instanceof Si&&t.addChildrenToStorage(e)),i&&i.refresh()},remove:function(t){var e=this.__zr,i=this.__storage,n=this._children,a=_(n,t);return a<0||(n.splice(a,1),t.parent=null,i&&(i.delFromStorage(t),t instanceof Si&&t.delChildrenFromStorage(i)),e&&e.refresh()),this},removeAll:function(){var t,e,i=this._children,n=this.__storage;for(e=0;e<i.length;e++)t=i[e],n&&(n.delFromStorage(t),t instanceof Si&&t.delChildrenFromStorage(n)),t.parent=null;return i.length=0,this},eachChild:function(t,e){for(var i=this._children,n=0;n<i.length;n++){var a=i[n];t.call(e,a,n)}return this},traverse:function(t,e){for(var i=0;i<this._children.length;i++){var n=this._children[i];t.call(e,n),"group"===n.type&&n.traverse(t,e)}return this},addChildrenToStorage:function(t){for(var e=0;e<this._children.length;e++){var i=this._children[e];t.addToStorage(i),i instanceof Si&&i.addChildrenToStorage(t)}},delChildrenFromStorage:function(t){for(var e=0;e<this._children.length;e++){var i=this._children[e];t.delFromStorage(i),i instanceof Si&&i.delChildrenFromStorage(t)}},dirty:function(){return this.__dirty=!0,this.__zr&&this.__zr.refresh(),this},getBoundingRect:function(t){for(var e=null,i=new bi(0,0,0,0),n=t||this._children,a=[],o=0;o<n.length;o++){var r=n[o];if(!r.ignore&&!r.invisible){var s=r.getBoundingRect(),l=r.getLocalTransform(a);l?(i.copy(s),i.applyTransform(l),(e=e||i.clone()).union(i)):(e=e||s.clone()).union(s)}}return e||i}},w(Si,pi);var Mi=32,Ii=7;function Ai(t,e,i,n){var a=e+1;if(a===i)return 1;if(n(t[a++],t[e])<0){for(;a<i&&n(t[a],t[a-1])<0;)a++;!function(t,e,i){i--;for(;e<i;){var n=t[e];t[e++]=t[i],t[i--]=n}}(t,e,a)}else for(;a<i&&0<=n(t[a],t[a-1]);)a++;return a-e}function Ti(t,e,i,n,a){for(n===e&&n++;n<i;n++){for(var o,r=t[n],s=e,l=n;s<l;)a(r,t[o=s+l>>>1])<0?l=o:s=1+o;var u=n-s;switch(u){case 3:t[s+3]=t[s+2];case 2:t[s+2]=t[s+1];case 1:t[s+1]=t[s];break;default:for(;0<u;)t[s+u]=t[s+u-1],u--}t[s]=r}}function Di(t,e,i,n,a,o){var r=0,s=0,l=1;if(0<o(t,e[i+a])){for(s=n-a;l<s&&0<o(t,e[i+a+l]);)(l=1+((r=l)<<1))<=0&&(l=s);s<l&&(l=s),r+=a,l+=a}else{for(s=a+1;l<s&&o(t,e[i+a-l])<=0;)(l=1+((r=l)<<1))<=0&&(l=s);s<l&&(l=s);var u=r;r=a-l,l=a-u}for(r++;r<l;){var h=r+(l-r>>>1);0<o(t,e[i+h])?r=h+1:l=h}return l}function Ci(t,e,i,n,a,o){var r=0,s=0,l=1;if(o(t,e[i+a])<0){for(s=a+1;l<s&&o(t,e[i+a-l])<0;)(l=1+((r=l)<<1))<=0&&(l=s);s<l&&(l=s);var u=r;r=a-l,l=a-u}else{for(s=n-a;l<s&&0<=o(t,e[i+a+l]);)(l=1+((r=l)<<1))<=0&&(l=s);s<l&&(l=s),r+=a,l+=a}for(r++;r<l;){var h=r+(l-r>>>1);o(t,e[i+h])<0?l=h:r=h+1}return l}function Li(p,g){var r,s,m=Ii,l=0,v=[];function e(t){var e=r[t],i=s[t],n=r[t+1],a=s[t+1];s[t]=i+a,t===l-3&&(r[t+1]=r[t+2],s[t+1]=s[t+2]),l--;var o=Ci(p[n],p,e,i,0,g);e+=o,0!==(i-=o)&&0!==(a=Di(p[e+i-1],p,n,a,a-1,g))&&(i<=a?function(t,e,i,n){var a=0;for(a=0;a<e;a++)v[a]=p[t+a];var o=0,r=i,s=t;if(p[s++]=p[r++],0==--n){for(a=0;a<e;a++)p[s+a]=v[o+a];return}if(1===e){for(a=0;a<n;a++)p[s+a]=p[r+a];return p[s+n]=v[o]}var l,u,h,c=m;for(;;){u=l=0,h=!1;do{if(g(p[r],v[o])<0){if(p[s++]=p[r++],u++,(l=0)==--n){h=!0;break}}else if(p[s++]=v[o++],l++,u=0,1==--e){h=!0;break}}while((l|u)<c);if(h)break;do{if(0!==(l=Ci(p[r],v,o,e,0,g))){for(a=0;a<l;a++)p[s+a]=v[o+a];if(s+=l,o+=l,(e-=l)<=1){h=!0;break}}if(p[s++]=p[r++],0==--n){h=!0;break}if(0!==(u=Di(v[o],p,r,n,0,g))){for(a=0;a<u;a++)p[s+a]=p[r+a];if(s+=u,r+=u,0===(n-=u)){h=!0;break}}if(p[s++]=v[o++],1==--e){h=!0;break}c--}while(Ii<=l||Ii<=u);if(h)break;c<0&&(c=0),c+=2}if((m=c)<1&&(m=1),1===e){for(a=0;a<n;a++)p[s+a]=p[r+a];p[s+n]=v[o]}else{if(0===e)throw new Error;for(a=0;a<e;a++)p[s+a]=v[o+a]}}(e,i,n,a):function(t,e,i,n){var a=0;for(a=0;a<n;a++)v[a]=p[i+a];var o=t+e-1,r=n-1,s=i+n-1,l=0,u=0;if(p[s--]=p[o--],0==--e){for(l=s-(n-1),a=0;a<n;a++)p[l+a]=v[a];return}if(1===n){for(u=(s-=e)+1,l=(o-=e)+1,a=e-1;0<=a;a--)p[u+a]=p[l+a];return p[s]=v[r]}var h=m;for(;;){var c=0,d=0,f=!1;do{if(g(v[r],p[o])<0){if(p[s--]=p[o--],c++,(d=0)==--e){f=!0;break}}else if(p[s--]=v[r--],d++,c=0,1==--n){f=!0;break}}while((c|d)<h);if(f)break;do{if(0!==(c=e-Ci(v[r],p,t,e,e-1,g))){for(e-=c,u=(s-=c)+1,l=(o-=c)+1,a=c-1;0<=a;a--)p[u+a]=p[l+a];if(0===e){f=!0;break}}if(p[s--]=v[r--],1==--n){f=!0;break}if(0!==(d=n-Di(p[o],v,0,n,n-1,g))){for(n-=d,u=(s-=d)+1,l=(r-=d)+1,a=0;a<d;a++)p[u+a]=v[l+a];if(n<=1){f=!0;break}}if(p[s--]=p[o--],0==--e){f=!0;break}h--}while(Ii<=c||Ii<=d);if(f)break;h<0&&(h=0),h+=2}(m=h)<1&&(m=1);if(1===n){for(u=(s-=e)+1,l=(o-=e)+1,a=e-1;0<=a;a--)p[u+a]=p[l+a];p[s]=v[r]}else{if(0===n)throw new Error;for(l=s-(n-1),a=0;a<n;a++)p[l+a]=v[a]}}(e,i,n,a))}r=[],s=[],this.mergeRuns=function(){for(;1<l;){var t=l-2;if(1<=t&&s[t-1]<=s[t]+s[t+1]||2<=t&&s[t-2]<=s[t]+s[t-1])s[t-1]<s[t+1]&&t--;else if(s[t]>s[t+1])break;e(t)}},this.forceMergeRuns=function(){for(;1<l;){var t=l-2;0<t&&s[t-1]<s[t+1]&&t--,e(t)}},this.pushRun=function(t,e){r[l]=t,s[l]=e,l+=1}}function ki(t,e,i,n){i=i||0;var a=(n=n||t.length)-i;if(!(a<2)){var o=0;if(a<Mi)Ti(t,i,n,i+(o=Ai(t,i,n,e)),e);else{var r=new Li(t,e),s=function(t){for(var e=0;Mi<=t;)e|=1&t,t>>=1;return t+e}(a);do{if((o=Ai(t,i,n,e))<s){var l=a;s<l&&(l=s),Ti(t,i,i+l,i+o,e),o=l}r.pushRun(i,o),r.mergeRuns(),a-=o,i+=o}while(0!==a);r.forceMergeRuns()}}}function Pi(t,e){return t.zlevel===e.zlevel?t.z===e.z?t.z2-e.z2:t.z-e.z:t.zlevel-e.zlevel}function Ni(){this._roots=[],this._displayList=[],this._displayListLen=0}Ni.prototype={constructor:Ni,traverse:function(t,e){for(var i=0;i<this._roots.length;i++)this._roots[i].traverse(t,e)},getDisplayList:function(t,e){return e=e||!1,t&&this.updateDisplayList(e),this._displayList},updateDisplayList:function(t){this._displayListLen=0;for(var e=this._roots,i=this._displayList,n=0,a=e.length;n<a;n++)this._updateAndAddDisplayable(e[n],null,t);i.length=this._displayListLen,v.canvasSupported&&ki(i,Pi)},_updateAndAddDisplayable:function(t,e,i){if(!t.ignore||i){t.beforeUpdate(),t.__dirty&&t.update(),t.afterUpdate();var n=t.clipPath;if(n){e=e?e.slice():[];for(var a=n,o=t;a;)a.parent=o,a.updateTransform(),e.push(a),a=(o=a).clipPath}if(t.isGroup){for(var r=t._children,s=0;s<r.length;s++){var l=r[s];t.__dirty&&(l.__dirty=!0),this._updateAndAddDisplayable(l,e,i)}t.__dirty=!1}else t.__clipPaths=e,this._displayList[this._displayListLen++]=t}},addRoot:function(t){t.__storage!==this&&(t instanceof Si&&t.addChildrenToStorage(this),this.addToStorage(t),this._roots.push(t))},delRoot:function(t){if(null==t){for(var e=0;e<this._roots.length;e++){var i=this._roots[e];i instanceof Si&&i.delChildrenFromStorage(this)}return this._roots=[],this._displayList=[],void(this._displayListLen=0)}if(t instanceof Array){e=0;for(var n=t.length;e<n;e++)this.delRoot(t[e])}else{var a=_(this._roots,t);0<=a&&(this.delFromStorage(t),this._roots.splice(a,1),t instanceof Si&&t.delChildrenFromStorage(this))}},addToStorage:function(t){return t&&(t.__storage=this,t.dirty(!1)),this},delFromStorage:function(t){return t&&(t.__storage=null),this},dispose:function(){this._renderList=this._roots=null},displayableSortFunc:Pi};var Oi={shadowBlur:1,shadowOffsetX:1,shadowOffsetY:1,textShadowBlur:1,textShadowOffsetX:1,textShadowOffsetY:1,textBoxShadowBlur:1,textBoxShadowOffsetX:1,textBoxShadowOffsetY:1},Ei=function(t,e,i){return Oi.hasOwnProperty(e)?i*t.dpr:i},Ri={NONE:0,STYLE_BIND:1,PLAIN_TEXT:2},zi=9,Bi=[["shadowBlur",0],["shadowOffsetX",0],["shadowOffsetY",0],["shadowColor","#000"],["lineCap","butt"],["lineJoin","miter"],["miterLimit",10]],Vi=function(t){this.extendFrom(t,!1)};function Gi(t,e,i){var n=null==e.x?0:e.x,a=null==e.x2?1:e.x2,o=null==e.y?0:e.y,r=null==e.y2?0:e.y2;return e.global||(n=n*i.width+i.x,a=a*i.width+i.x,o=o*i.height+i.y,r=r*i.height+i.y),n=isNaN(n)?0:n,a=isNaN(a)?1:a,o=isNaN(o)?0:o,r=isNaN(r)?0:r,t.createLinearGradient(n,o,a,r)}function Fi(t,e,i){var n=i.width,a=i.height,o=Math.min(n,a),r=null==e.x?.5:e.x,s=null==e.y?.5:e.y,l=null==e.r?.5:e.r;return e.global||(r=r*n+i.x,s=s*a+i.y,l*=o),t.createRadialGradient(r,s,0,r,s,l)}Vi.prototype={constructor:Vi,fill:"#000",stroke:null,opacity:1,fillOpacity:null,strokeOpacity:null,lineDash:null,lineDashOffset:0,shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0,lineWidth:1,strokeNoScale:!1,text:null,font:null,textFont:null,fontStyle:null,fontWeight:null,fontSize:null,fontFamily:null,textTag:null,textFill:"#000",textStroke:null,textWidth:null,textHeight:null,textStrokeWidth:0,textLineHeight:null,textPosition:"inside",textRect:null,textOffset:null,textAlign:null,textVerticalAlign:null,textDistance:5,textShadowColor:"transparent",textShadowBlur:0,textShadowOffsetX:0,textShadowOffsetY:0,textBoxShadowColor:"transparent",textBoxShadowBlur:0,textBoxShadowOffsetX:0,textBoxShadowOffsetY:0,transformText:!1,textRotation:0,textOrigin:null,textBackgroundColor:null,textBorderColor:null,textBorderWidth:0,textBorderRadius:0,textPadding:null,rich:null,truncate:null,blend:null,bind:function(t,e,i){var n=this,a=i&&i.style,o=!a||t.__attrCachedBy!==Ri.STYLE_BIND;t.__attrCachedBy=Ri.STYLE_BIND;for(var r=0;r<Bi.length;r++){var s=Bi[r],l=s[0];!o&&n[l]===a[l]||(t[l]=Ei(t,l,n[l]||s[1]))}if(!o&&n.fill===a.fill||(t.fillStyle=n.fill),!o&&n.stroke===a.stroke||(t.strokeStyle=n.stroke),!o&&n.opacity===a.opacity||(t.globalAlpha=null==n.opacity?1:n.opacity),!o&&n.blend===a.blend||(t.globalCompositeOperation=n.blend||"source-over"),this.hasStroke()){var u=n.lineWidth;t.lineWidth=u/(this.strokeNoScale&&e&&e.getLineScale?e.getLineScale():1)}},hasFill:function(){var t=this.fill;return null!=t&&"none"!==t},hasStroke:function(){var t=this.stroke;return null!=t&&"none"!==t&&0<this.lineWidth},extendFrom:function(t,e){if(t)for(var i in t)!t.hasOwnProperty(i)||!0!==e&&(!1===e?this.hasOwnProperty(i):null==t[i])||(this[i]=t[i])},set:function(t,e){"string"==typeof t?this[t]=e:this.extendFrom(t,!0)},clone:function(){var t=new this.constructor;return t.extendFrom(this,!0),t},getGradient:function(t,e,i){for(var n=("radial"===e.type?Fi:Gi)(t,e,i),a=e.colorStops,o=0;o<a.length;o++)n.addColorStop(a[o].offset,a[o].color);return n}};for(var Wi=Vi.prototype,Hi=0;Hi<Bi.length;Hi++){var Zi=Bi[Hi];Zi[0]in Wi||(Wi[Zi[0]]=Zi[1])}Vi.getGradient=Wi.getGradient;function Ui(t,e){this.image=t,this.repeat=e,this.type="pattern"}function Xi(){return!1}function Yi(t,e,i){var n=g(),a=e.getWidth(),o=e.getHeight(),r=n.style;return r&&(r.position="absolute",r.left=0,r.top=0,r.width=a+"px",r.height=o+"px",n.setAttribute("data-zr-dom-id",t)),n.width=a*i,n.height=o*i,n}function ji(t,e,i){var n;i=i||li,"string"==typeof t?n=Yi(t,e,i):z(t)&&(t=(n=t).id),this.id=t;var a=(this.dom=n).style;a&&(n.onselectstart=Xi,a["-webkit-user-select"]="none",a["user-select"]="none",a["-webkit-touch-callout"]="none",a["-webkit-tap-highlight-color"]="rgba(0,0,0,0)",a.padding=0,a.margin=0,a["border-width"]=0),this.domBack=null,this.ctxBack=null,this.painter=e,this.config=null,this.clearColor=0,this.motionBlur=!1,this.lastFrameAlpha=.7,this.dpr=i}ji.prototype={constructor:ji,__dirty:!0,__used:!(Ui.prototype.getCanvasPattern=function(t){return t.createPattern(this.image,this.repeat||"repeat")}),__drawIndex:0,__startIndex:0,__endIndex:0,incremental:!1,getElementCount:function(){return this.__endIndex-this.__startIndex},initContext:function(){this.ctx=this.dom.getContext("2d"),this.ctx.dpr=this.dpr},createBackBuffer:function(){var t=this.dpr;this.domBack=Yi("back-"+this.id,this.painter,t),this.ctxBack=this.domBack.getContext("2d"),1!==t&&this.ctxBack.scale(t,t)},resize:function(t,e){var i=this.dpr,n=this.dom,a=n.style,o=this.domBack;a&&(a.width=t+"px",a.height=e+"px"),n.width=t*i,n.height=e*i,o&&(o.width=t*i,o.height=e*i,1!==i&&this.ctxBack.scale(i,i))},clear:function(t,e){var i,n=this.dom,a=this.ctx,o=n.width,r=n.height,s=(e=e||this.clearColor,this.motionBlur&&!t),l=this.lastFrameAlpha,u=this.dpr;s&&(this.domBack||this.createBackBuffer(),this.ctxBack.globalCompositeOperation="copy",this.ctxBack.drawImage(n,0,0,o/u,r/u)),a.clearRect(0,0,o,r),e&&"transparent"!==e&&(e.colorStops?(i=e.__canvasGradient||Vi.getGradient(a,e,{x:0,y:0,width:o,height:r}),e.__canvasGradient=i):e.image&&(i=Ui.prototype.getCanvasPattern.call(e,a)),a.save(),a.fillStyle=i||e,a.fillRect(0,0,o,r),a.restore());if(s){var h=this.domBack;a.save(),a.globalAlpha=l,a.drawImage(h,0,0,o,r),a.restore()}}};var qi="undefined"!=typeof window&&(window.requestAnimationFrame&&window.requestAnimationFrame.bind(window)||window.msRequestAnimationFrame&&window.msRequestAnimationFrame.bind(window)||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame)||function(t){setTimeout(t,16)},Ki=new _e(50);function $i(t){if("string"!=typeof t)return t;var e=Ki.get(t);return e&&e.image}function Ji(t,e,i,n,a){if(t){if("string"!=typeof t)return t;if(e&&e.__zrImageSrc===t||!i)return e;var o=Ki.get(t),r={hostEl:i,cb:n,cbPayload:a};return o?tn(e=o.image)||o.pending.push(r):((e=new Image).onload=e.onerror=Qi,Ki.put(t,e.__cachedImgObj={image:e,pending:[r]}),e.src=e.__zrImageSrc=t),e}return e}function Qi(){var t=this.__cachedImgObj;this.onload=this.onerror=this.__cachedImgObj=null;for(var e=0;e<t.pending.length;e++){var i=t.pending[e],n=i.cb;n&&n(this,i.cbPayload),i.hostEl.dirty()}t.pending.length=0}function tn(t){return t&&t.width&&t.height}var en={},nn=0,an=5e3,on=/\{([a-zA-Z0-9_]+)\|([^}]*)\}/g,rn="12px sans-serif",sn={};function ln(t,e){var i=t+":"+(e=e||rn);if(en[i])return en[i];for(var n,a,o=(t+"").split("\n"),r=0,s=0,l=o.length;s<l;s++)r=Math.max((n=o[s],a=e,sn.measureText(n,a)).width,r);return an<nn&&(nn=0,en={}),nn++,en[i]=r}function un(t,e,i,n,a,o,r,s){return r?function(t,e,i,n,a,o,r,s){var l=xn(t,{rich:r,truncate:s,font:e,textAlign:i,textPadding:a,textLineHeight:o}),u=l.outerWidth,h=l.outerHeight,c=hn(0,u,i),d=cn(0,h,n);return new bi(c,d,u,h)}(t,e,i,n,a,o,r,s):function(t,e,i,n,a,o,r){var s=yn(t,e,a,o,r),l=ln(t,e);a&&(l+=a[1]+a[3]);var u=s.outerHeight,h=hn(0,l,i),c=cn(0,u,n),d=new bi(h,c,l,u);return d.lineHeight=s.lineHeight,d}(t,e,i,n,a,o,s)}function hn(t,e,i){return"right"===i?t-=e:"center"===i&&(t-=e/2),t}function cn(t,e,i){return"middle"===i?t-=e/2:"bottom"===i&&(t-=e),t}function dn(t,e,i){var n=e.textPosition,a=e.textDistance,o=i.x,r=i.y;a=a||0;var s=i.height,l=i.width,u=s/2,h="left",c="top";switch(n){case"left":o-=a,r+=u,h="right",c="middle";break;case"right":o+=a+l,r+=u,c="middle";break;case"top":o+=l/2,r-=a,h="center",c="bottom";break;case"bottom":o+=l/2,r+=s+a,h="center";break;case"inside":o+=l/2,r+=u,h="center",c="middle";break;case"insideLeft":o+=a,r+=u,c="middle";break;case"insideRight":o+=l-a,r+=u,h="right",c="middle";break;case"insideTop":o+=l/2,r+=a,h="center";break;case"insideBottom":o+=l/2,r+=s-a,h="center",c="bottom";break;case"insideTopLeft":o+=a,r+=a;break;case"insideTopRight":o+=l-a,r+=a,h="right";break;case"insideBottomLeft":o+=a,r+=s-a,c="bottom";break;case"insideBottomRight":o+=l-a,r+=s-a,h="right",c="bottom"}return(t=t||{}).x=o,t.y=r,t.textAlign=h,t.textVerticalAlign=c,t}function fn(t,e,i,n,a){if(!e)return"";var o=(t+"").split("\n");a=pn(e,i,n,a);for(var r=0,s=o.length;r<s;r++)o[r]=gn(o[r],a);return o.join("\n")}function pn(t,e,i,n){(n=L({},n)).font=e;i=H(i,"...");n.maxIterations=H(n.maxIterations,2);var a=n.minChar=H(n.minChar,0);n.cnCharWidth=ln("国",e);var o=n.ascCharWidth=ln("a",e);n.placeholder=H(n.placeholder,"");for(var r=t=Math.max(0,t-1),s=0;s<a&&o<=r;s++)r-=o;var l=ln(i,e);return r<l&&(i="",l=0),r=t-l,n.ellipsis=i,n.ellipsisWidth=l,n.contentWidth=r,n.containerWidth=t,n}function gn(t,e){var i=e.containerWidth,n=e.font,a=e.contentWidth;if(!i)return"";var o=ln(t,n);if(o<=i)return t;for(var r=0;;r++){if(o<=a||r>=e.maxIterations){t+=e.ellipsis;break}var s=0===r?mn(t,a,e.ascCharWidth,e.cnCharWidth):0<o?Math.floor(t.length*a/o):0;o=ln(t=t.substr(0,s),n)}return""===t&&(t=e.placeholder),t}function mn(t,e,i,n){for(var a=0,o=0,r=t.length;o<r&&a<e;o++){var s=t.charCodeAt(o);a+=0<=s&&s<=127?i:n}return o}function vn(t){return ln("国",t)}function yn(t,e,i,n,a){null!=t&&(t+="");var o=H(n,vn(e)),r=t?t.split("\n"):[],s=r.length*o,l=s,u=!0;if(i&&(l+=i[0]+i[2]),t&&a){u=!1;var h=a.outerHeight,c=a.outerWidth;if(null!=h&&h<l)t="",r=[];else if(null!=c)for(var d=pn(c-(i?i[1]+i[3]:0),e,a.ellipsis,{minChar:a.minChar,placeholder:a.placeholder}),f=0,p=r.length;f<p;f++)r[f]=gn(r[f],d)}return{lines:r,height:s,outerHeight:l,lineHeight:o,canCacheByTextString:u}}function xn(t,e){var i={lines:[],width:0,height:0};if(null!=t&&(t+=""),!t)return i;for(var n,a=on.lastIndex=0;null!=(n=on.exec(t));){var o=n.index;a<o&&_n(i,t.substring(a,o)),_n(i,n[2],n[1]),a=on.lastIndex}a<t.length&&_n(i,t.substring(a,t.length));var r=i.lines,s=0,l=0,u=[],h=e.textPadding,c=e.truncate,d=c&&c.outerWidth,f=c&&c.outerHeight;h&&(null!=d&&(d-=h[1]+h[3]),null!=f&&(f-=h[0]+h[2]));for(var p=0;p<r.length;p++){for(var g=r[p],m=0,v=0,y=0;y<g.tokens.length;y++){var x=(C=g.tokens[y]).styleName&&e.rich[C.styleName]||{},_=C.textPadding=x.textPadding,w=C.font=x.font||e.font,b=C.textHeight=H(x.textHeight,vn(w));if(_&&(b+=_[0]+_[2]),C.height=b,C.lineHeight=Z(x.textLineHeight,e.textLineHeight,b),C.textAlign=x&&x.textAlign||e.textAlign,C.textVerticalAlign=x&&x.textVerticalAlign||"middle",null!=f&&s+C.lineHeight>f)return{lines:[],width:0,height:0};C.textWidth=ln(C.text,w);var S=x.textWidth,M=null==S||"auto"===S;if("string"==typeof S&&"%"===S.charAt(S.length-1))C.percentWidth=S,u.push(C),S=0;else{if(M){S=C.textWidth;var I=x.textBackgroundColor,A=I&&I.image;A&&tn(A=$i(A))&&(S=Math.max(S,A.width*b/A.height))}var T=_?_[1]+_[3]:0;S+=T;var D=null!=d?d-v:null;null!=D&&D<S&&(!M||D<T?(C.text="",C.textWidth=S=0):(C.text=fn(C.text,D-T,w,c.ellipsis,{minChar:c.minChar}),C.textWidth=ln(C.text,w),S=C.textWidth+T))}v+=C.width=S,x&&(m=Math.max(m,C.lineHeight))}g.width=v,s+=g.lineHeight=m,l=Math.max(l,v)}i.outerWidth=i.width=H(e.textWidth,l),i.outerHeight=i.height=H(e.textHeight,s),h&&(i.outerWidth+=h[1]+h[3],i.outerHeight+=h[0]+h[2]);for(p=0;p<u.length;p++){var C,L=(C=u[p]).percentWidth;C.width=parseInt(L,10)/100*l}return i}function _n(t,e,i){for(var n=""===e,a=e.split("\n"),o=t.lines,r=0;r<a.length;r++){var s=a[r],l={styleName:i,text:s,isLineHolder:!s&&!n};if(r)o.push({tokens:[l]});else{var u=(o[o.length-1]||(o[0]={tokens:[]})).tokens,h=u.length;1===h&&u[0].isLineHolder?u[0]=l:!s&&h&&!n||u.push(l)}}}function wn(t){var e=(t.fontSize||t.fontFamily)&&[t.fontStyle,t.fontWeight,(t.fontSize||12)+"px",t.fontFamily||"sans-serif"].join(" ");return e&&j(e)||t.textFont||t.font}function bn(t,e){var i,n,a,o,r,s=e.x,l=e.y,u=e.width,h=e.height,c=e.r;u<0&&(s+=u,u=-u),h<0&&(l+=h,h=-h),"number"==typeof c?i=n=a=o=c:c instanceof Array?1===c.length?i=n=a=o=c[0]:2===c.length?(i=a=c[0],n=o=c[1]):3===c.length?(i=c[0],n=o=c[1],a=c[2]):(i=c[0],n=c[1],a=c[2],o=c[3]):i=n=a=o=0,u<i+n&&(i*=u/(r=i+n),n*=u/r),u<a+o&&(a*=u/(r=a+o),o*=u/r),h<n+a&&(n*=h/(r=n+a),a*=h/r),h<i+o&&(i*=h/(r=i+o),o*=h/r),t.moveTo(s+i,l),t.lineTo(s+u-n,l),0!==n&&t.arc(s+u-n,l+n,n,-Math.PI/2,0),t.lineTo(s+u,l+h-a),0!==a&&t.arc(s+u-a,l+h-a,a,0,Math.PI/2),t.lineTo(s+o,l+h),0!==o&&t.arc(s+o,l+h-o,o,Math.PI/2,Math.PI),t.lineTo(s,l+i),0!==i&&t.arc(s+i,l+i,i,Math.PI,1.5*Math.PI)}sn.measureText=function(t,e){var i=x();return i.font=e||rn,i.measureText(t)};var Sn=rn,Mn={left:1,right:1,center:1},In={top:1,bottom:1,middle:1},An=[["textShadowBlur","shadowBlur",0],["textShadowOffsetX","shadowOffsetX",0],["textShadowOffsetY","shadowOffsetY",0],["textShadowColor","shadowColor","transparent"]],Tn={},Dn={};function Cn(t){return Ln(t),E(t.rich,Ln),t}function Ln(t){if(t){t.font=wn(t);var e=t.textAlign;"middle"===e&&(e="center"),t.textAlign=null==e||Mn[e]?e:"left";var i=t.textVerticalAlign||t.textBaseline;"center"===i&&(i="middle"),t.textVerticalAlign=null==i||In[i]?i:"top",t.textPadding&&(t.textPadding=X(t.textPadding))}}function kn(t,e,i,n,a,o){n.rich?function(t,e,i,n,a,o){o!==zi&&(e.__attrCachedBy=Ri.NONE);var r=t.__textCotentBlock;r&&!t.__dirtyText||(r=t.__textCotentBlock=xn(i,n));!function(t,e,i,n,a){var o=i.width,r=i.outerWidth,s=i.outerHeight,l=n.textPadding,u=zn(Dn,t,n,a),h=u.baseX,c=u.baseY,d=u.textAlign,f=u.textVerticalAlign;Pn(e,n,a,h,c);var p=hn(h,r,d),g=cn(c,s,f),m=p,v=g;l&&(m+=l[3],v+=l[0]);var y=m+o;On(n)&&En(t,e,n,p,g,r,s);for(var x=0;x<i.lines.length;x++){for(var _,w=i.lines[x],b=w.tokens,S=b.length,M=w.lineHeight,I=w.width,A=0,T=m,D=y,C=S-1;A<S&&(!(_=b[A]).textAlign||"left"===_.textAlign);)Nn(t,e,_,n,M,v,T,"left"),I-=_.width,T+=_.width,A++;for(;0<=C&&"right"===(_=b[C]).textAlign;)Nn(t,e,_,n,M,v,D,"right"),I-=_.width,D-=_.width,C--;for(T+=(o-(T-m)-(y-D)-I)/2;A<=C;)_=b[A],Nn(t,e,_,n,M,v,T+_.width/2,"center"),T+=_.width,A++;v+=M}}(t,e,r,n,a)}(t,e,i,n,a,o):function(t,e,i,n,a,o){var r,s=On(n),l=!1,u=e.__attrCachedBy===Ri.PLAIN_TEXT;o!==zi?(o&&(r=o.style,l=!s&&u&&r),e.__attrCachedBy=s?Ri.NONE:Ri.PLAIN_TEXT):u&&(e.__attrCachedBy=Ri.NONE);var h=n.font||Sn;l&&h===(r.font||Sn)||(e.font=h);var c=t.__computedFont;t.__styleFont!==h&&(t.__styleFont=h,c=t.__computedFont=e.font);var d=n.textPadding,f=n.textLineHeight,p=t.__textCotentBlock;p&&!t.__dirtyText||(p=t.__textCotentBlock=yn(i,c,d,f,n.truncate));var g=p.outerHeight,m=p.lines,v=p.lineHeight,y=zn(Dn,t,n,a),x=y.baseX,_=y.baseY,w=y.textAlign||"left",b=y.textVerticalAlign;Pn(e,n,a,x,_);var S=cn(_,g,b),M=x,I=S;if(s||d){var A=ln(i,c);d&&(A+=d[1]+d[3]);var T=hn(x,A,w);s&&En(t,e,n,T,S,A,g),d&&(M=Wn(x,w,d),I+=d[0])}e.textAlign=w,e.textBaseline="middle",e.globalAlpha=n.opacity||1;for(var D=0;D<An.length;D++){var C=An[D],L=C[0],k=C[1],P=n[L];l&&P===r[L]||(e[k]=Ei(e,k,P||C[2]))}I+=v/2;var N=n.textStrokeWidth,O=l?r.textStrokeWidth:null,E=!l||N!==O,R=!l||E||n.textStroke!==r.textStroke,z=Vn(n.textStroke,N),B=Gn(n.textFill);z&&(E&&(e.lineWidth=N),R&&(e.strokeStyle=z));B&&(l&&n.textFill===r.textFill||(e.fillStyle=B));if(1===m.length)z&&e.strokeText(m[0],M,I),B&&e.fillText(m[0],M,I);else for(D=0;D<m.length;D++)z&&e.strokeText(m[D],M,I),B&&e.fillText(m[D],M,I),I+=v}(t,e,i,n,a,o)}function Pn(t,e,i,n,a){if(i&&e.textRotation){var o=e.textOrigin;"center"===o?(n=i.width/2+i.x,a=i.height/2+i.y):o&&(n=o[0]+i.x,a=o[1]+i.y),t.translate(n,a),t.rotate(-e.textRotation),t.translate(-n,-a)}}function Nn(t,e,i,n,a,o,r,s){var l=n.rich[i.styleName]||{};l.text=i.text;var u=i.textVerticalAlign,h=o+a/2;"top"===u?h=o+i.height/2:"bottom"===u&&(h=o+a-i.height/2),!i.isLineHolder&&On(l)&&En(t,e,l,"right"===s?r-i.width:"center"===s?r-i.width/2:r,h-i.height/2,i.width,i.height);var c=i.textPadding;c&&(r=Wn(r,s,c),h-=i.height/2-c[2]-i.textHeight/2),Bn(e,"shadowBlur",Z(l.textShadowBlur,n.textShadowBlur,0)),Bn(e,"shadowColor",l.textShadowColor||n.textShadowColor||"transparent"),Bn(e,"shadowOffsetX",Z(l.textShadowOffsetX,n.textShadowOffsetX,0)),Bn(e,"shadowOffsetY",Z(l.textShadowOffsetY,n.textShadowOffsetY,0)),Bn(e,"textAlign",s),Bn(e,"textBaseline","middle"),Bn(e,"font",i.font||Sn);var d=Vn(l.textStroke||n.textStroke,p),f=Gn(l.textFill||n.textFill),p=H(l.textStrokeWidth,n.textStrokeWidth);d&&(Bn(e,"lineWidth",p),Bn(e,"strokeStyle",d),e.strokeText(i.text,r,h)),f&&(Bn(e,"fillStyle",f),e.fillText(i.text,r,h))}function On(t){return!!(t.textBackgroundColor||t.textBorderWidth&&t.textBorderColor)}function En(t,e,i,n,a,o,r){var s=i.textBackgroundColor,l=i.textBorderWidth,u=i.textBorderColor,h=R(s);if(Bn(e,"shadowBlur",i.textBoxShadowBlur||0),Bn(e,"shadowColor",i.textBoxShadowColor||"transparent"),Bn(e,"shadowOffsetX",i.textBoxShadowOffsetX||0),Bn(e,"shadowOffsetY",i.textBoxShadowOffsetY||0),h||l&&u){e.beginPath();var c=i.textBorderRadius;c?bn(e,{x:n,y:a,width:o,height:r,r:c}):e.rect(n,a,o,r),e.closePath()}if(h)if(Bn(e,"fillStyle",s),null!=i.fillOpacity){var d=e.globalAlpha;e.globalAlpha=i.fillOpacity*i.opacity,e.fill(),e.globalAlpha=d}else e.fill();else if(z(s)){var f=s.image;(f=Ji(f,null,t,Rn,s))&&tn(f)&&e.drawImage(f,n,a,o,r)}if(l&&u)if(Bn(e,"lineWidth",l),Bn(e,"strokeStyle",u),null!=i.strokeOpacity){d=e.globalAlpha;e.globalAlpha=i.strokeOpacity*i.opacity,e.stroke(),e.globalAlpha=d}else e.stroke()}function Rn(t,e){e.image=t}function zn(t,e,i,n){var a=i.x||0,o=i.y||0,r=i.textAlign,s=i.textVerticalAlign;if(n){var l=i.textPosition;if(l instanceof Array)a=n.x+Fn(l[0],n.width),o=n.y+Fn(l[1],n.height);else{var u=e&&e.calculateTextPosition?e.calculateTextPosition(Tn,i,n):dn(Tn,i,n);a=u.x,o=u.y,r=r||u.textAlign,s=s||u.textVerticalAlign}var h=i.textOffset;h&&(a+=h[0],o+=h[1])}return(t=t||{}).baseX=a,t.baseY=o,t.textAlign=r,t.textVerticalAlign=s,t}function Bn(t,e,i){return t[e]=Ei(t,e,i),t[e]}function Vn(t,e){return null==t||e<=0||"transparent"===t||"none"===t?null:t.image||t.colorStops?"#000":t}function Gn(t){return null==t||"none"===t?null:t.image||t.colorStops?"#000":t}function Fn(t,e){return"string"==typeof t?0<=t.lastIndexOf("%")?parseFloat(t)/100*e:parseFloat(t):t}function Wn(t,e,i){return"right"===e?t-i[1]:"center"===e?t+i[3]/2-i[1]/2:t+i[3]}function Hn(t,e){return null!=t&&(t||e.textBackgroundColor||e.textBorderWidth&&e.textBorderColor||e.textPadding)}function Zn(){}var Un=new bi;function Xn(t){for(var e in t=t||{},pi.call(this,t),t)t.hasOwnProperty(e)&&"style"!==e&&(this[e]=t[e]);this.style=new Vi(t.style,this),this._rect=null,this.__clipPaths=null}function Yn(t){Xn.call(this,t)}Xn.prototype={constructor:Xn,type:"displayable",__dirty:!0,invisible:!(Zn.prototype={constructor:Zn,drawRectText:function(t,e){var i=this.style;e=i.textRect||e,this.__dirty&&Cn(i);var n=i.text;if(null!=n&&(n+=""),Hn(n,i)){t.save();var a=this.transform;i.transformText?this.setTransform(t):a&&(Un.copy(e),Un.applyTransform(a),e=Un),kn(this,t,n,i,e,zi),t.restore()}}}),z:0,z2:0,zlevel:0,draggable:!1,dragging:!1,silent:!1,culling:!1,cursor:"pointer",rectHover:!1,progressive:!1,incremental:!1,globalScaleRatio:1,beforeBrush:function(t){},afterBrush:function(t){},brush:function(t,e){},getBoundingRect:function(){},contain:function(t,e){return this.rectContain(t,e)},traverse:function(t,e){t.call(e,this)},rectContain:function(t,e){var i=this.transformCoordToLocal(t,e);return this.getBoundingRect().contain(i[0],i[1])},dirty:function(){this.__dirty=this.__dirtyText=!0,this._rect=null,this.__zr&&this.__zr.refresh()},animateStyle:function(t){return this.animate("style",t)},attrKV:function(t,e){"style"!==t?pi.prototype.attrKV.call(this,t,e):this.style.set(e)},setStyle:function(t,e){return this.style.set(t,e),this.dirty(!1),this},useStyle:function(t){return this.style=new Vi(t,this),this.dirty(!1),this},calculateTextPosition:null},w(Xn,pi),b(Xn,Zn),Yn.prototype={constructor:Yn,type:"image",brush:function(t,e){var i=this.style,n=i.image;i.bind(t,this,e);var a=this._image=Ji(n,this._image,this,this.onload);if(a&&tn(a)){var o=i.x||0,r=i.y||0,s=i.width,l=i.height,u=a.width/a.height;if(null==s&&null!=l?s=l*u:null==l&&null!=s?l=s/u:null==s&&null==l&&(s=a.width,l=a.height),this.setTransform(t),i.sWidth&&i.sHeight){var h=i.sx||0,c=i.sy||0;t.drawImage(a,h,c,i.sWidth,i.sHeight,o,r,s,l)}else if(i.sx&&i.sy){var d=s-(h=i.sx),f=l-(c=i.sy);t.drawImage(a,h,c,d,f,o,r,s,l)}else t.drawImage(a,o,r,s,l);null!=i.text&&(this.restoreTransform(t),this.drawRectText(t,this.getBoundingRect()))}},getBoundingRect:function(){var t=this.style;return this._rect||(this._rect=new bi(t.x||0,t.y||0,t.width||0,t.height||0)),this._rect}},w(Yn,Xn);var jn=314159;function qn(t){return parseInt(t,10)}var Kn=new bi(0,0,0,0),$n=new bi(0,0,0,0);function Jn(t,e,i){this.type="canvas";var n=!t.nodeName||"CANVAS"===t.nodeName.toUpperCase();this._opts=i=L({},i||{}),this.dpr=i.devicePixelRatio||li,this._singleCanvas=n;var a=(this.root=t).style;a&&(a["-webkit-tap-highlight-color"]="transparent",a["-webkit-user-select"]=a["user-select"]=a["-webkit-touch-callout"]="none",t.innerHTML=""),this.storage=e;var o=this._zlevelList=[],r=this._layers={};if(this._layerConfig={},this._needsManuallyCompositing=!1,n){var s=t.width,l=t.height;null!=i.width&&(s=i.width),null!=i.height&&(l=i.height),this.dpr=i.devicePixelRatio||1,t.width=s*this.dpr,t.height=l*this.dpr,this._width=s,this._height=l;var u=new ji(t,this,this.dpr);u.__builtin__=!0,u.initContext(),(r[jn]=u).zlevel=jn,o.push(jn),this._domRoot=t}else{this._width=this._getSize(0),this._height=this._getSize(1);var h=this._domRoot=function(t,e){var i=document.createElement("div");return i.style.cssText=["position:relative","width:"+t+"px","height:"+e+"px","padding:0","margin:0","border-width:0"].join(";")+";",i}(this._width,this._height);t.appendChild(h)}this._hoverlayer=null,this._hoverElements=[]}Jn.prototype={constructor:Jn,getType:function(){return"canvas"},isSingleCanvas:function(){return this._singleCanvas},getViewportRoot:function(){return this._domRoot},getViewportRootOffset:function(){var t=this.getViewportRoot();if(t)return{offsetLeft:t.offsetLeft||0,offsetTop:t.offsetTop||0}},refresh:function(t){var e=this.storage.getDisplayList(!0),i=this._zlevelList;this._redrawId=Math.random(),this._paintList(e,t,this._redrawId);for(var n=0;n<i.length;n++){var a=i[n],o=this._layers[a];if(!o.__builtin__&&o.refresh){var r=0===n?this._backgroundColor:null;o.refresh(r)}}return this.refreshHover(),this},addHover:function(t,e){if(!t.__hoverMir){var i=new t.constructor({style:t.style,shape:t.shape,z:t.z,z2:t.z2,silent:t.silent});return(i.__from=t).__hoverMir=i,e&&i.setStyle(e),this._hoverElements.push(i),i}},removeHover:function(t){var e=t.__hoverMir,i=this._hoverElements,n=_(i,e);0<=n&&i.splice(n,1),t.__hoverMir=null},clearHover:function(t){for(var e=this._hoverElements,i=0;i<e.length;i++){var n=e[i].__from;n&&(n.__hoverMir=null)}e.length=0},refreshHover:function(){var t=this._hoverElements,e=t.length,i=this._hoverlayer;if(i&&i.clear(),e){ki(t,this.storage.displayableSortFunc);var n={};(i=i||(this._hoverlayer=this.getLayer(1e5))).ctx.save();for(var a=0;a<e;){var o=t[a],r=o.__from;r&&r.__zr?(a++,r.invisible||(o.transform=r.transform,o.invTransform=r.invTransform,o.__clipPaths=r.__clipPaths,this._doPaintEl(o,i,!0,n))):(t.splice(a,1),r.__hoverMir=null,e--)}i.ctx.restore()}},getHoverLayer:function(){return this.getLayer(1e5)},_paintList:function(t,e,i){if(this._redrawId===i){e=e||!1,this._updateLayerStatus(t);var n=this._doPaintList(t,e);if(this._needsManuallyCompositing&&this._compositeManually(),!n){var a=this;qi(function(){a._paintList(t,e,i)})}}},_compositeManually:function(){var e=this.getLayer(jn).ctx,i=this._domRoot.width,n=this._domRoot.height;e.clearRect(0,0,i,n),this.eachBuiltinLayer(function(t){t.virtual&&e.drawImage(t.dom,0,0,i,n)})},_doPaintList:function(t,e){for(var i=[],n=0;n<this._zlevelList.length;n++){var a=this._zlevelList[n];(s=this._layers[a]).__builtin__&&s!==this._hoverlayer&&(s.__dirty||e)&&i.push(s)}for(var o=!0,r=0;r<i.length;r++){var s,l=(s=i[r]).ctx,u={};l.save();var h=e?s.__startIndex:s.__drawIndex,c=!e&&s.incremental&&Date.now,d=c&&Date.now(),f=s.zlevel===this._zlevelList[0]?this._backgroundColor:null;if(s.__startIndex===s.__endIndex)s.clear(!1,f);else if(h===s.__startIndex){var p=t[h];p.incremental&&p.notClear&&!e||s.clear(!1,f)}-1===h&&(console.error("For some unknown reason. drawIndex is -1"),h=s.__startIndex);for(var g=h;g<s.__endIndex;g++){var m=t[g];if(this._doPaintEl(m,s,e,u),m.__dirty=m.__dirtyText=!1,c)if(15<Date.now()-d)break}s.__drawIndex=g,s.__drawIndex<s.__endIndex&&(o=!1),u.prevElClipPaths&&l.restore(),l.restore()}return v.wxa&&E(this._layers,function(t){t&&t.ctx&&t.ctx.draw&&t.ctx.draw()}),o},_doPaintEl:function(t,e,i,n){var a=e.ctx,o=t.transform;if((e.__dirty||i)&&!t.invisible&&0!==t.style.opacity&&(!o||o[0]||o[3])&&(!t.culling||!function(t,e,i){return Kn.copy(t.getBoundingRect()),t.transform&&Kn.applyTransform(t.transform),$n.width=e,$n.height=i,!Kn.intersect($n)}(t,this._width,this._height))){var r=t.__clipPaths,s=n.prevElClipPaths;s&&!function(t,e){if(t===e)return!1;if(!t||!e||t.length!==e.length)return!0;for(var i=0;i<t.length;i++)if(t[i]!==e[i])return!0;return!1}(r,s)||(s&&(a.restore(),n.prevElClipPaths=null,n.prevEl=null),r&&(a.save(),function(t,e){for(var i=0;i<t.length;i++){var n=t[i];n.setTransform(e),e.beginPath(),n.buildPath(e,n.shape),e.clip(),n.restoreTransform(e)}}(r,a),n.prevElClipPaths=r)),t.beforeBrush&&t.beforeBrush(a),t.brush(a,n.prevEl||null),(n.prevEl=t).afterBrush&&t.afterBrush(a)}},getLayer:function(t,e){this._singleCanvas&&!this._needsManuallyCompositing&&(t=jn);var i=this._layers[t];return i||((i=new ji("zr_"+t,this,this.dpr)).zlevel=t,i.__builtin__=!0,this._layerConfig[t]&&m(i,this._layerConfig[t],!0),e&&(i.virtual=e),this.insertLayer(t,i),i.initContext()),i},insertLayer:function(t,e){var i=this._layers,n=this._zlevelList,a=n.length,o=null,r=-1,s=this._domRoot;if(i[t])ci("ZLevel "+t+" has been used already");else if(function(t){return!!t&&(!!t.__builtin__||"function"==typeof t.resize&&"function"==typeof t.refresh)}(e)){if(0<a&&t>n[0]){for(r=0;r<a-1&&!(n[r]<t&&n[r+1]>t);r++);o=i[n[r]]}if(n.splice(r+1,0,t),!(i[t]=e).virtual)if(o){var l=o.dom;l.nextSibling?s.insertBefore(e.dom,l.nextSibling):s.appendChild(e.dom)}else s.firstChild?s.insertBefore(e.dom,s.firstChild):s.appendChild(e.dom)}else ci("Layer of zlevel "+t+" is not valid")},eachLayer:function(t,e){var i,n,a=this._zlevelList;for(n=0;n<a.length;n++)i=a[n],t.call(e,this._layers[i],i)},eachBuiltinLayer:function(t,e){var i,n,a,o=this._zlevelList;for(a=0;a<o.length;a++)n=o[a],(i=this._layers[n]).__builtin__&&t.call(e,i,n)},eachOtherLayer:function(t,e){var i,n,a,o=this._zlevelList;for(a=0;a<o.length;a++)n=o[a],(i=this._layers[n]).__builtin__||t.call(e,i,n)},getLayers:function(){return this._layers},_updateLayerStatus:function(t){function e(t){n&&(n.__endIndex!==t&&(n.__dirty=!0),n.__endIndex=t)}if(this.eachBuiltinLayer(function(t,e){t.__dirty=t.__used=!1}),this._singleCanvas)for(var i=1;i<t.length;i++){if((o=t[i]).zlevel!==t[i-1].zlevel||o.incremental){this._needsManuallyCompositing=!0;break}}var n=null,a=0;for(i=0;i<t.length;i++){var o,r,s=(o=t[i]).zlevel;o.incremental?((r=this.getLayer(s+.001,this._needsManuallyCompositing)).incremental=!0,a=1):r=this.getLayer(s+(0<a?.01:0),this._needsManuallyCompositing),r.__builtin__||ci("ZLevel "+s+" has been used by unkown layer "+r.id),r!==n&&(r.__used=!0,r.__startIndex!==i&&(r.__dirty=!0),r.__startIndex=i,r.incremental?r.__drawIndex=-1:r.__drawIndex=i,e(i),n=r),o.__dirty&&(r.__dirty=!0,r.incremental&&r.__drawIndex<0&&(r.__drawIndex=i))}e(i),this.eachBuiltinLayer(function(t,e){!t.__used&&0<t.getElementCount()&&(t.__dirty=!0,t.__startIndex=t.__endIndex=t.__drawIndex=0),t.__dirty&&t.__drawIndex<0&&(t.__drawIndex=t.__startIndex)})},clear:function(){return this.eachBuiltinLayer(this._clearLayer),this},_clearLayer:function(t){t.clear()},setBackgroundColor:function(t){this._backgroundColor=t},configLayer:function(t,e){if(e){var i=this._layerConfig;i[t]?m(i[t],e,!0):i[t]=e;for(var n=0;n<this._zlevelList.length;n++){var a=this._zlevelList[n];if(a===t||a===t+.01)m(this._layers[a],i[t],!0)}}},delLayer:function(t){var e=this._layers,i=this._zlevelList,n=e[t];n&&(n.dom.parentNode.removeChild(n.dom),delete e[t],i.splice(_(i,t),1))},resize:function(e,i){if(this._domRoot.style){var t=this._domRoot;t.style.display="none";var n=this._opts;if(null!=e&&(n.width=e),null!=i&&(n.height=i),e=this._getSize(0),i=this._getSize(1),t.style.display="",this._width!==e||i!==this._height){for(var a in t.style.width=e+"px",t.style.height=i+"px",this._layers)this._layers.hasOwnProperty(a)&&this._layers[a].resize(e,i);E(this._progressiveLayers,function(t){t.resize(e,i)}),this.refresh(!0)}this._width=e,this._height=i}else{if(null==e||null==i)return;this._width=e,this._height=i,this.getLayer(jn).resize(e,i)}return this},clearLayer:function(t){var e=this._layers[t];e&&e.clear()},dispose:function(){this.root.innerHTML="",this.root=this.storage=this._domRoot=this._layers=null},getRenderedCanvas:function(t){if(t=t||{},this._singleCanvas&&!this._compositeManually)return this._layers[jn].dom;var e=new ji("image",this,t.pixelRatio||this.dpr);if(e.initContext(),e.clear(!1,t.backgroundColor||this._backgroundColor),t.pixelRatio<=this.dpr){this.refresh();var i=e.dom.width,n=e.dom.height,a=e.ctx;this.eachLayer(function(t){t.__builtin__?a.drawImage(t.dom,0,0,i,n):t.renderToCanvas&&(e.ctx.save(),t.renderToCanvas(e.ctx),e.ctx.restore())})}else for(var o={},r=this.storage.getDisplayList(!0),s=0;s<r.length;s++){var l=r[s];this._doPaintEl(l,e,!0,o)}return e.dom},getWidth:function(){return this._width},getHeight:function(){return this._height},_getSize:function(t){var e=this._opts,i=["width","height"][t],n=["clientWidth","clientHeight"][t],a=["paddingLeft","paddingTop"][t],o=["paddingRight","paddingBottom"][t];if(null!=e[i]&&"auto"!==e[i])return parseFloat(e[i]);var r=this.root,s=document.defaultView.getComputedStyle(r);return(r[n]||qn(s[i])||qn(r.style[i]))-(qn(s[a])||0)-(qn(s[o])||0)|0},pathToImage:function(t,e){e=e||this.dpr;var i=document.createElement("canvas"),n=i.getContext("2d"),a=t.getBoundingRect(),o=t.style,r=o.shadowBlur*e,s=o.shadowOffsetX*e,l=o.shadowOffsetY*e,u=o.hasStroke()?o.lineWidth:0,h=Math.max(u/2,r-s),c=Math.max(u/2,s+r),d=Math.max(u/2,r-l),f=Math.max(u/2,l+r),p=a.width+h+c,g=a.height+d+f;i.width=p*e,i.height=g*e,n.scale(e,e),n.clearRect(0,0,p,g),n.dpr=e;var m={position:t.position,rotation:t.rotation,scale:t.scale};t.position=[h-a.x,d-a.y],t.rotation=0,t.scale=[1,1],t.updateTransform(),t&&t.brush(n);var v=new Yn({style:{x:0,y:0,image:i}});return null!=m.position&&(v.position=t.position=m.position),null!=m.rotation&&(v.rotation=t.rotation=m.rotation),null!=m.scale&&(v.scale=t.scale=m.scale),v}};function Qn(t){t=t||{},this.stage=t.stage||{},this.onframe=t.onframe||function(){},this._clips=[],this._running=!1,this._time,this._pausedTime,this._pauseStart,this._paused=!1,Ct.call(this)}Qn.prototype={constructor:Qn,addClip:function(t){this._clips.push(t)},addAnimator:function(t){t.animation=this;for(var e=t.getClips(),i=0;i<e.length;i++)this.addClip(e[i])},removeClip:function(t){var e=_(this._clips,t);0<=e&&this._clips.splice(e,1)},removeAnimator:function(t){for(var e=t.getClips(),i=0;i<e.length;i++)this.removeClip(e[i]);t.animation=null},_update:function(){for(var t=(new Date).getTime()-this._pausedTime,e=t-this._time,i=this._clips,n=i.length,a=[],o=[],r=0;r<n;r++){var s=i[r],l=s.step(t,e);l&&(a.push(l),o.push(s))}for(r=0;r<n;)i[r]._needsRemove?(i[r]=i[n-1],i.pop(),n--):r++;n=a.length;for(r=0;r<n;r++)o[r].fire(a[r]);this._time=t,this.onframe(e),this.trigger("frame",e),this.stage.update&&this.stage.update()},_startLoop:function(){var e=this;this._running=!0,qi(function t(){e._running&&(qi(t),e._paused||e._update())})},start:function(){this._time=(new Date).getTime(),this._pausedTime=0,this._startLoop()},stop:function(){this._running=!1},pause:function(){this._paused||(this._pauseStart=(new Date).getTime(),this._paused=!0)},resume:function(){this._paused&&(this._pausedTime+=(new Date).getTime()-this._pauseStart,this._paused=!1)},clear:function(){this._clips=[]},isFinished:function(){return!this._clips.length},animate:function(t,e){var i=new ri(t,(e=e||{}).loop,e.getter,e.setter);return this.addAnimator(i),i}},b(Qn,Ct);var ta=["click","dblclick","mousewheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],ea=["touchstart","touchend","touchmove"],ia={pointerdown:1,pointerup:1,pointermove:1,pointerout:1},na=N(ta,function(t){var e=t.replace("mouse","pointer");return ia[e]?e:t});function aa(t){return"mousewheel"===t&&v.browser.firefox?"DOMMouseScroll":t}function oa(t){t._touching=!0,clearTimeout(t._touchTimer),t._touchTimer=setTimeout(function(){t._touching=!1},700)}var ra={mousemove:function(t){t=Vt(this.dom,t),this.trigger("mousemove",t)},mouseout:function(t){var e=(t=Vt(this.dom,t)).toElement||t.relatedTarget;if(e!==this.dom)for(;e&&9!==e.nodeType;){if(e===this.dom)return;e=e.parentNode}this.trigger("mouseout",t)},touchstart:function(t){(t=Vt(this.dom,t)).zrByTouch=!0,this._lastTouchMoment=new Date,this.handler.processGesture(t,"start"),ra.mousemove.call(this,t),ra.mousedown.call(this,t),oa(this)},touchmove:function(t){(t=Vt(this.dom,t)).zrByTouch=!0,this.handler.processGesture(t,"change"),ra.mousemove.call(this,t),oa(this)},touchend:function(t){(t=Vt(this.dom,t)).zrByTouch=!0,this.handler.processGesture(t,"end"),ra.mouseup.call(this,t),+new Date-this._lastTouchMoment<300&&ra.click.call(this,t),oa(this)},pointerdown:function(t){ra.mousedown.call(this,t)},pointermove:function(t){sa(t)||ra.mousemove.call(this,t)},pointerup:function(t){ra.mouseup.call(this,t)},pointerout:function(t){sa(t)||ra.mouseout.call(this,t)}};function sa(t){var e=t.pointerType;return"pen"===e||"touch"===e}function la(i){function t(t,e){E(t,function(t){Gt(i,aa(t),e._handlers[t])},e)}Ct.call(this),this.dom=i,this._touching=!1,this._touchTimer,this._handlers={},function(e){E(ea,function(t){e._handlers[t]=T(ra[t],e)}),E(na,function(t){e._handlers[t]=T(ra[t],e)}),E(ta,function(t){e._handlers[t]=function(t,e){return function(){if(!e._touching)return t.apply(e,arguments)}}(ra[t],e)})}(this),v.pointerEventsSupported?t(na,this):(v.touchEventsSupported&&t(ea,this),t(ta,this))}E(["click","mousedown","mouseup","mousewheel","dblclick","contextmenu"],function(e){ra[e]=function(t){t=Vt(this.dom,t),this.trigger(e,t)}});var ua=la.prototype;ua.dispose=function(){for(var t,e,i,n=ta.concat(ea),a=0;a<n.length;a++){var o=n[a];t=this.dom,e=aa(o),i=this._handlers[o],Nt?t.removeEventListener(e,i):t.detachEvent("on"+e,i)}},ua.setCursor=function(t){this.dom.style&&(this.dom.style.cursor=t||"default")},b(la,Ct);var ha=!v.canvasSupported,ca={canvas:Jn},da={};function fa(t,e){var i=new ga(n(),t,e);return da[i.id]=i}function pa(t,e){ca[t]=e}var ga=function(t,e,i){i=i||{},this.dom=e,this.id=t;var n=this,a=new Ni,o=i.renderer;if(ha){if(!ca.vml)throw new Error("You need to require 'zrender/vml/vml' to support IE8");o="vml"}else o&&ca[o]||(o="canvas");var r=new ca[o](e,a,i,t);this.storage=a,this.painter=r;var s=v.node||v.worker?null:new la(r.getViewportRoot());this.handler=new qt(a,r,s,r.root),this.animation=new Qn({stage:{update:T(this.flush,this)}}),this.animation.start(),this._needsRefresh;var l=a.delFromStorage,u=a.addToStorage;a.delFromStorage=function(t){l.call(a,t),t&&t.removeSelfFromZr(n)},a.addToStorage=function(t){u.call(a,t),t.addSelfToZr(n)}};ga.prototype={constructor:ga,getId:function(){return this.id},add:function(t){this.storage.addRoot(t),this._needsRefresh=!0},remove:function(t){this.storage.delRoot(t),this._needsRefresh=!0},configLayer:function(t,e){this.painter.configLayer&&this.painter.configLayer(t,e),this._needsRefresh=!0},setBackgroundColor:function(t){this.painter.setBackgroundColor&&this.painter.setBackgroundColor(t),this._needsRefresh=!0},refreshImmediately:function(){this._needsRefresh=this._needsRefreshHover=!1,this.painter.refresh(),this._needsRefresh=this._needsRefreshHover=!1},refresh:function(){this._needsRefresh=!0},flush:function(){var t;this._needsRefresh&&(t=!0,this.refreshImmediately()),this._needsRefreshHover&&(t=!0,this.refreshHoverImmediately()),t&&this.trigger("rendered")},addHover:function(t,e){if(this.painter.addHover){var i=this.painter.addHover(t,e);return this.refreshHover(),i}},removeHover:function(t){this.painter.removeHover&&(this.painter.removeHover(t),this.refreshHover())},clearHover:function(){this.painter.clearHover&&(this.painter.clearHover(),this.refreshHover())},refreshHover:function(){this._needsRefreshHover=!0},refreshHoverImmediately:function(){this._needsRefreshHover=!1,this.painter.refreshHover&&this.painter.refreshHover()},resize:function(t){t=t||{},this.painter.resize(t.width,t.height),this.handler.resize()},clearAnimation:function(){this.animation.clear()},getWidth:function(){return this.painter.getWidth()},getHeight:function(){return this.painter.getHeight()},pathToImage:function(t,e){return this.painter.pathToImage(t,e)},setCursorStyle:function(t){this.handler.setCursorStyle(t)},findHover:function(t,e){return this.handler.findHover(t,e)},on:function(t,e,i){this.handler.on(t,e,i)},off:function(t,e){this.handler.off(t,e)},trigger:function(t,e){this.handler.trigger(t,e)},clear:function(){this.storage.delRoot(),this.painter.clear()},dispose:function(){this.animation.stop(),this.clear(),this.storage.dispose(),this.painter.dispose(),this.handler.dispose(),this.animation=this.storage=this.painter=this.handler=null,function(t){delete da[t]}(this.id)}};var ma=(Object.freeze||Object)({version:"4.1.2",init:fa,dispose:function(t){if(t)t.dispose();else{for(var e in da)da.hasOwnProperty(e)&&da[e].dispose();da={}}return this},getInstance:function(t){return da[t]},registerPainter:pa}),va=E,ya=z,xa=k,_a="series\0";function wa(t){return t instanceof Array?t:null==t?[]:[t]}function ba(t,e,i){if(t){t[e]=t[e]||{},t.emphasis=t.emphasis||{},t.emphasis[e]=t.emphasis[e]||{};for(var n=0,a=i.length;n<a;n++){var o=i[n];!t.emphasis[e].hasOwnProperty(o)&&t[e].hasOwnProperty(o)&&(t.emphasis[e][o]=t[e][o])}}}var Sa=["fontStyle","fontWeight","fontSize","fontFamily","rich","tag","color","textBorderColor","textBorderWidth","width","height","lineHeight","align","verticalAlign","baseline","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","textShadowColor","textShadowBlur","textShadowOffsetX","textShadowOffsetY","backgroundColor","borderColor","borderWidth","borderRadius","padding"];function Ma(t){return!ya(t)||xa(t)||t instanceof Date?t:t.value}function Ia(t,a){a=(a||[]).slice();var o=N(t||[],function(t,e){return{exist:t}});return va(a,function(t,e){if(ya(t)){for(var i=0;i<o.length;i++)if(!o[i].option&&null!=t.id&&o[i].exist.id===t.id+"")return o[i].option=t,void(a[e]=null);for(i=0;i<o.length;i++){var n=o[i].exist;if(!(o[i].option||null!=n.id&&null!=t.id||null==t.name||Da(t)||Da(n)||n.name!==t.name+""))return o[i].option=t,void(a[e]=null)}}}),va(a,function(t,e){if(ya(t)){for(var i=0;i<o.length;i++){var n=o[i].exist;if(!o[i].option&&!Da(n)&&null==t.id){o[i].option=t;break}}i>=o.length&&o.push({option:t})}}),o}function Aa(t){var r=Q();va(t,function(t,e){var i=t.exist;i&&r.set(i.id,t)}),va(t,function(t,e){var i=t.option;Y(!i||null==i.id||!r.get(i.id)||r.get(i.id)===t,"id duplicates: "+(i&&i.id)),i&&null!=i.id&&r.set(i.id,t),t.keyInfo||(t.keyInfo={})}),va(t,function(t,e){var i=t.exist,n=t.option,a=t.keyInfo;if(ya(n)){if(a.name=null!=n.name?n.name+"":i?i.name:_a+e,i)a.id=i.id;else if(null!=n.id)a.id=n.id+"";else for(var o=0;a.id="\0"+a.name+"\0"+o++,r.get(a.id););r.set(a.id,t)}})}function Ta(t){var e=t.name;return!(!e||!e.indexOf(_a))}function Da(t){return ya(t)&&t.id&&0===(t.id+"").indexOf("\0_ec_\0")}function Ca(e,t){return null!=t.dataIndexInside?t.dataIndexInside:null!=t.dataIndex?k(t.dataIndex)?N(t.dataIndex,function(t){return e.indexOfRawIndex(t)}):e.indexOfRawIndex(t.dataIndex):null!=t.name?k(t.name)?N(t.name,function(t){return e.indexOfName(t)}):e.indexOfName(t.name):void 0}function La(){var e="__\0ec_inner_"+ka+++"_"+Math.random().toFixed(5);return function(t){return t[e]||(t[e]={})}}var ka=0;function Pa(s,l,u){if(R(l)){var t={};t[l+"Index"]=0,l=t}var e=u&&u.defaultMainType;!e||Na(l,e+"Index")||Na(l,e+"Id")||Na(l,e+"Name")||(l[e+"Index"]=0);var h={};return va(l,function(t,e){t=l[e];if("dataIndex"!==e&&"dataIndexInside"!==e){var i=e.match(/^(\w+)(Index|Id|Name)$/)||[],n=i[1],a=(i[2]||"").toLowerCase();if(!(!n||!a||null==t||"index"===a&&"none"===t||u&&u.includeMainTypes&&_(u.includeMainTypes,n)<0)){var o={mainType:n};"index"===a&&"all"===t||(o[a]=t);var r=s.queryComponents(o);h[n+"Models"]=r,h[n+"Model"]=r[0]}}else h[e]=t}),h}function Na(t,e){return t&&t.hasOwnProperty(e)}function Oa(t,e,i){t.setAttribute?t.setAttribute(e,i):t[e]=i}function Ea(t){return"auto"===t?v.domSupported?"html":"richText":t||"html"}function Ra(t,i){var n=Q(),a=[];return E(t,function(t){var e=i(t);(n.get(e)||(a.push(e),n.set(e,[]))).push(t)}),{keys:a,buckets:n}}var za=".",Ba="___EC__COMPONENT__CONTAINER___";function Va(t){var e={main:"",sub:""};return t&&(t=t.split(za),e.main=t[0]||"",e.sub=t[1]||""),e}function Ga(t){(t.$constructor=t).extend=function(t){function e(){t.$constructor?t.$constructor.apply(this,arguments):i.apply(this,arguments)}var i=this;return L(e.prototype,t),e.extend=this.extend,e.superCall=Ha,e.superApply=Za,w(e,this),e.superClass=i,e}}var Fa=0;function Wa(t){var e=["__\0is_clz",Fa++,Math.random().toFixed(3)].join("_");t.prototype[e]=!0,t.isInstance=function(t){return!(!t||!t[e])}}function Ha(t,e){var i=U(arguments,2);return this.superClass.prototype[e].apply(t,i)}function Za(t,e,i){return this.superClass.prototype[e].apply(t,i)}function Ua(i,t){t=t||{};var a={};if(i.registerClass=function(t,e){if(e)if(function(t){Y(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(t),'componentType "'+t+'" illegal')}(e),(e=Va(e)).sub){if(e.sub!==Ba){(function(t){var e=a[t.main];e&&e[Ba]||((e=a[t.main]={})[Ba]=!0);return e})(e)[e.sub]=t}}else a[e.main]=t;return t},i.getClass=function(t,e,i){var n=a[t];if(n&&n[Ba]&&(n=e?n[e]:null),i&&!n)throw new Error(e?"Component "+t+"."+(e||"")+" not exists. Load it first.":t+".type should be specified.");return n},i.getClassesByMainType=function(t){t=Va(t);var i=[],e=a[t.main];return e&&e[Ba]?E(e,function(t,e){e!==Ba&&i.push(t)}):i.push(e),i},i.hasClass=function(t){return t=Va(t),!!a[t.main]},i.getAllClassMainTypes=function(){var i=[];return E(a,function(t,e){i.push(e)}),i},i.hasSubTypes=function(t){t=Va(t);var e=a[t.main];return e&&e[Ba]},i.parseClassType=Va,t.registerWhenExtend){var n=i.extend;n&&(i.extend=function(t){var e=n.call(this,t);return i.registerClass(e,t.type)})}return i}function Xa(s){for(var t=0;t<s.length;t++)s[t][1]||(s[t][1]=s[t][0]);return function(t,e,i){for(var n={},a=0;a<s.length;a++){var o=s[a][1];if(!(e&&0<=_(e,o)||i&&_(i,o)<0)){var r=t.getShallow(o);null!=r&&(n[s[a][0]]=r)}}return n}}var Ya=Xa([["lineWidth","width"],["stroke","color"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]),ja={getLineStyle:function(t){var e=Ya(this,t);return e.lineDash=this.getLineDash(e.lineWidth),e},getLineDash:function(t){null==t&&(t=1);var e=this.get("type"),i=Math.max(t,2),n=4*t;return"solid"!==e&&null!=e&&("dashed"===e?[n,n]:[i,i])}},qa=Xa([["fill","color"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["opacity"],["shadowColor"]]),Ka={getAreaStyle:function(t,e){return qa(this,t,e)}},$a=Math.pow,Ja=Math.sqrt,Qa=1e-8,to=1e-4,eo=Ja(3),io=1/3,no=at(),ao=at(),oo=at();function ro(t){return-Qa<t&&t<Qa}function so(t){return Qa<t||t<-Qa}function lo(t,e,i,n,a){var o=1-a;return o*o*(o*t+3*a*e)+a*a*(a*n+3*o*i)}function uo(t,e,i,n,a){var o=1-a;return 3*(((e-t)*o+2*(i-e)*a)*o+(n-i)*a*a)}function ho(t,e,i,n,a){var o=6*i-12*e+6*t,r=9*e+3*n-3*t-9*i,s=3*e-3*t,l=0;if(ro(r)){if(so(o))0<=(h=-s/o)&&h<=1&&(a[l++]=h)}else{var u=o*o-4*r*s;if(ro(u))a[0]=-o/(2*r);else if(0<u){var h,c=Ja(u),d=(-o-c)/(2*r);0<=(h=(-o+c)/(2*r))&&h<=1&&(a[l++]=h),0<=d&&d<=1&&(a[l++]=d)}}return l}function co(t,e,i,n,a,o){var r=(e-t)*a+t,s=(i-e)*a+e,l=(n-i)*a+i,u=(s-r)*a+r,h=(l-s)*a+s,c=(h-u)*a+u;o[0]=t,o[1]=r,o[2]=u,o[3]=c,o[4]=c,o[5]=h,o[6]=l,o[7]=n}function fo(t,e,i,n){var a=1-n;return a*(a*t+2*n*e)+n*n*i}function po(t,e,i,n){return 2*((1-n)*(e-t)+n*(i-e))}function go(t,e,i){var n=t+i-2*e;return 0==n?.5:(t-e)/n}function mo(t,e,i,n,a){var o=(e-t)*n+t,r=(i-e)*n+e,s=(r-o)*n+o;a[0]=t,a[1]=o,a[2]=s,a[3]=s,a[4]=r,a[5]=i}var vo=Math.min,yo=Math.max,xo=Math.sin,_o=Math.cos,wo=2*Math.PI,bo=at(),So=at(),Mo=at();function Io(t,e,i){if(0!==t.length){var n,a=t[0],o=a[0],r=a[0],s=a[1],l=a[1];for(n=1;n<t.length;n++)a=t[n],o=vo(o,a[0]),r=yo(r,a[0]),s=vo(s,a[1]),l=yo(l,a[1]);e[0]=o,e[1]=s,i[0]=r,i[1]=l}}function Ao(t,e,i,n,a,o){a[0]=vo(t,i),a[1]=vo(e,n),o[0]=yo(t,i),o[1]=yo(e,n)}var To=[],Do=[];function Co(t,e,i,n,a,o,r,s,l,u){var h,c=ho,d=lo,f=c(t,i,a,r,To);for(l[0]=1/0,l[1]=1/0,u[0]=-1/0,u[1]=-1/0,h=0;h<f;h++){var p=d(t,i,a,r,To[h]);l[0]=vo(p,l[0]),u[0]=yo(p,u[0])}for(f=c(e,n,o,s,Do),h=0;h<f;h++){var g=d(e,n,o,s,Do[h]);l[1]=vo(g,l[1]),u[1]=yo(g,u[1])}l[0]=vo(t,l[0]),u[0]=yo(t,u[0]),l[0]=vo(r,l[0]),u[0]=yo(r,u[0]),l[1]=vo(e,l[1]),u[1]=yo(e,u[1]),l[1]=vo(s,l[1]),u[1]=yo(s,u[1])}function Lo(t,e,i,n,a,o,r,s,l){var u=St,h=Mt,c=Math.abs(a-o);if(c%wo<1e-4&&1e-4<c)return s[0]=t-i,s[1]=e-n,l[0]=t+i,void(l[1]=e+n);if(bo[0]=_o(a)*i+t,bo[1]=xo(a)*n+e,So[0]=_o(o)*i+t,So[1]=xo(o)*n+e,u(s,bo,So),h(l,bo,So),(a%=wo)<0&&(a+=wo),(o%=wo)<0&&(o+=wo),o<a&&!r?o+=wo:a<o&&r&&(a+=wo),r){var d=o;o=a,a=d}for(var f=0;f<o;f+=Math.PI/2)a<f&&(Mo[0]=_o(f)*i+t,Mo[1]=xo(f)*n+e,u(s,Mo,s),h(l,Mo,l))}var ko={M:1,L:2,C:3,Q:4,A:5,Z:6,R:7},Po=[],No=[],Oo=[],Eo=[],Ro=Math.min,zo=Math.max,Bo=Math.cos,Vo=Math.sin,Go=Math.sqrt,Fo=Math.abs,Wo="undefined"!=typeof Float32Array,Ho=function(t){this._saveData=!t,this._saveData&&(this.data=[]),this._ctx=null};function Zo(t,e,i,n,a,o,r){if(0===a)return!1;var s=a,l=0;if(e+s<r&&n+s<r||r<e-s&&r<n-s||t+s<o&&i+s<o||o<t-s&&o<i-s)return!1;if(t===i)return Math.abs(o-t)<=s/2;var u=(l=(e-n)/(t-i))*o-r+(t*n-i*e)/(t-i);return u*u/(l*l+1)<=s/2*s/2}function Uo(t,e,i,n,a,o,r,s,l,u,h){if(0===l)return!1;var c=l;return!(e+c<h&&n+c<h&&o+c<h&&s+c<h||h<e-c&&h<n-c&&h<o-c&&h<s-c||t+c<u&&i+c<u&&a+c<u&&r+c<u||u<t-c&&u<i-c&&u<a-c&&u<r-c)&&function(t,e,i,n,a,o,r,s,l,u,h){var c,d,f,p,g,m=.005,v=1/0;no[0]=l,no[1]=u;for(var y=0;y<1;y+=.05)ao[0]=lo(t,i,a,r,y),ao[1]=lo(e,n,o,s,y),(p=_t(no,ao))<v&&(c=y,v=p);v=1/0;for(var x=0;x<32&&!(m<to);x++)d=c-m,f=c+m,ao[0]=lo(t,i,a,r,d),ao[1]=lo(e,n,o,s,d),p=_t(ao,no),0<=d&&p<v?(c=d,v=p):(oo[0]=lo(t,i,a,r,f),oo[1]=lo(e,n,o,s,f),g=_t(oo,no),f<=1&&g<v?(c=f,v=g):m*=.5);return h&&(h[0]=lo(t,i,a,r,c),h[1]=lo(e,n,o,s,c)),Ja(v)}(t,e,i,n,a,o,r,s,u,h,null)<=c/2}function Xo(t,e,i,n,a,o,r,s,l){if(0===r)return!1;var u=r;return!(e+u<l&&n+u<l&&o+u<l||l<e-u&&l<n-u&&l<o-u||t+u<s&&i+u<s&&a+u<s||s<t-u&&s<i-u&&s<a-u)&&function(t,e,i,n,a,o,r,s,l){var u,h=.005,c=1/0;no[0]=r,no[1]=s;for(var d=0;d<1;d+=.05){ao[0]=fo(t,i,a,d),ao[1]=fo(e,n,o,d),(m=_t(no,ao))<c&&(u=d,c=m)}c=1/0;for(var f=0;f<32&&!(h<to);f++){var p=u-h,g=u+h;ao[0]=fo(t,i,a,p),ao[1]=fo(e,n,o,p);var m=_t(ao,no);if(0<=p&&m<c)u=p,c=m;else{oo[0]=fo(t,i,a,g),oo[1]=fo(e,n,o,g);var v=_t(oo,no);g<=1&&v<c?(u=g,c=v):h*=.5}}return l&&(l[0]=fo(t,i,a,u),l[1]=fo(e,n,o,u)),Ja(c)}(t,e,i,n,a,o,s,l,null)<=u/2}Ho.prototype={constructor:Ho,_xi:0,_yi:0,_x0:0,_y0:0,_ux:0,_uy:0,_len:0,_lineDash:null,_dashOffset:0,_dashIdx:0,_dashSum:0,setScale:function(t,e,i){i=i||0,this._ux=Fo(i/li/t)||0,this._uy=Fo(i/li/e)||0},getContext:function(){return this._ctx},beginPath:function(t){return(this._ctx=t)&&t.beginPath(),t&&(this.dpr=t.dpr),this._saveData&&(this._len=0),this._lineDash&&(this._lineDash=null,this._dashOffset=0),this},moveTo:function(t,e){return this.addData(ko.M,t,e),this._ctx&&this._ctx.moveTo(t,e),this._x0=t,this._y0=e,this._xi=t,this._yi=e,this},lineTo:function(t,e){var i=Fo(t-this._xi)>this._ux||Fo(e-this._yi)>this._uy||this._len<5;return this.addData(ko.L,t,e),this._ctx&&i&&(this._needsDash()?this._dashedLineTo(t,e):this._ctx.lineTo(t,e)),i&&(this._xi=t,this._yi=e),this},bezierCurveTo:function(t,e,i,n,a,o){return this.addData(ko.C,t,e,i,n,a,o),this._ctx&&(this._needsDash()?this._dashedBezierTo(t,e,i,n,a,o):this._ctx.bezierCurveTo(t,e,i,n,a,o)),this._xi=a,this._yi=o,this},quadraticCurveTo:function(t,e,i,n){return this.addData(ko.Q,t,e,i,n),this._ctx&&(this._needsDash()?this._dashedQuadraticTo(t,e,i,n):this._ctx.quadraticCurveTo(t,e,i,n)),this._xi=i,this._yi=n,this},arc:function(t,e,i,n,a,o){return this.addData(ko.A,t,e,i,i,n,a-n,0,o?0:1),this._ctx&&this._ctx.arc(t,e,i,n,a,o),this._xi=Bo(a)*i+t,this._yi=Vo(a)*i+e,this},arcTo:function(t,e,i,n,a){return this._ctx&&this._ctx.arcTo(t,e,i,n,a),this},rect:function(t,e,i,n){return this._ctx&&this._ctx.rect(t,e,i,n),this.addData(ko.R,t,e,i,n),this},closePath:function(){this.addData(ko.Z);var t=this._ctx,e=this._x0,i=this._y0;return t&&(this._needsDash()&&this._dashedLineTo(e,i),t.closePath()),this._xi=e,this._yi=i,this},fill:function(t){t&&t.fill(),this.toStatic()},stroke:function(t){t&&t.stroke(),this.toStatic()},setLineDash:function(t){if(t instanceof Array){this._lineDash=t;for(var e=this._dashIdx=0,i=0;i<t.length;i++)e+=t[i];this._dashSum=e}return this},setLineDashOffset:function(t){return this._dashOffset=t,this},len:function(){return this._len},setData:function(t){var e=t.length;this.data&&this.data.length===e||!Wo||(this.data=new Float32Array(e));for(var i=0;i<e;i++)this.data[i]=t[i];this._len=e},appendPath:function(t){t instanceof Array||(t=[t]);for(var e=t.length,i=0,n=this._len,a=0;a<e;a++)i+=t[a].len();Wo&&this.data instanceof Float32Array&&(this.data=new Float32Array(n+i));for(a=0;a<e;a++)for(var o=t[a].data,r=0;r<o.length;r++)this.data[n++]=o[r];this._len=n},addData:function(t){if(this._saveData){var e=this.data;this._len+arguments.length>e.length&&(this._expandData(),e=this.data);for(var i=0;i<arguments.length;i++)e[this._len++]=arguments[i];this._prevCmd=t}},_expandData:function(){if(!(this.data instanceof Array)){for(var t=[],e=0;e<this._len;e++)t[e]=this.data[e];this.data=t}},_needsDash:function(){return this._lineDash},_dashedLineTo:function(t,e){var i,n,a=this._dashSum,o=this._dashOffset,r=this._lineDash,s=this._ctx,l=this._xi,u=this._yi,h=t-l,c=e-u,d=Go(h*h+c*c),f=l,p=u,g=r.length;for(o<0&&(o=a+o),f-=(o%=a)*(h/=d),p-=o*(c/=d);0<h&&f<=t||h<0&&t<=f||0===h&&(0<c&&p<=e||c<0&&e<=p);)f+=h*(i=r[n=this._dashIdx]),p+=c*i,this._dashIdx=(n+1)%g,0<h&&f<l||h<0&&l<f||0<c&&p<u||c<0&&u<p||s[n%2?"moveTo":"lineTo"](0<=h?Ro(f,t):zo(f,t),0<=c?Ro(p,e):zo(p,e));h=f-t,c=p-e,this._dashOffset=-Go(h*h+c*c)},_dashedBezierTo:function(t,e,i,n,a,o){var r,s,l,u,h,c=this._dashSum,d=this._dashOffset,f=this._lineDash,p=this._ctx,g=this._xi,m=this._yi,v=lo,y=0,x=this._dashIdx,_=f.length,w=0;for(d<0&&(d=c+d),d%=c,r=0;r<1;r+=.1)s=v(g,t,i,a,r+.1)-v(g,t,i,a,r),l=v(m,e,n,o,r+.1)-v(m,e,n,o,r),y+=Go(s*s+l*l);for(;x<_&&!(d<(w+=f[x]));x++);for(r=(w-d)/y;r<=1;)u=v(g,t,i,a,r),h=v(m,e,n,o,r),x%2?p.moveTo(u,h):p.lineTo(u,h),r+=f[x]/y,x=(x+1)%_;x%2!=0&&p.lineTo(a,o),s=a-u,l=o-h,this._dashOffset=-Go(s*s+l*l)},_dashedQuadraticTo:function(t,e,i,n){var a=i,o=n;i=(i+2*t)/3,n=(n+2*e)/3,t=(this._xi+2*t)/3,e=(this._yi+2*e)/3,this._dashedBezierTo(t,e,i,n,a,o)},toStatic:function(){var t=this.data;t instanceof Array&&(t.length=this._len,Wo&&(this.data=new Float32Array(t)))},getBoundingRect:function(){Po[0]=Po[1]=Oo[0]=Oo[1]=Number.MAX_VALUE,No[0]=No[1]=Eo[0]=Eo[1]=-Number.MAX_VALUE;for(var t,e,i,n,a,o,r,s,l,u,h,c,d,f,p=this.data,g=0,m=0,v=0,y=0,x=0;x<p.length;){var _=p[x++];switch(1===x&&(v=g=p[x],y=m=p[x+1]),_){case ko.M:g=v=p[x++],m=y=p[x++],Oo[0]=v,Oo[1]=y,Eo[0]=v,Eo[1]=y;break;case ko.L:Ao(g,m,p[x],p[x+1],Oo,Eo),g=p[x++],m=p[x++];break;case ko.C:Co(g,m,p[x++],p[x++],p[x++],p[x++],p[x],p[x+1],Oo,Eo),g=p[x++],m=p[x++];break;case ko.Q:t=g,e=m,i=p[x++],n=p[x++],a=p[x],o=p[x+1],r=Oo,s=Eo,u=l=void 0,u=fo,h=yo(vo((l=go)(t,i,a),1),0),c=yo(vo(l(e,n,o),1),0),d=u(t,i,a,h),f=u(e,n,o,c),r[0]=vo(t,a,d),r[1]=vo(e,o,f),s[0]=yo(t,a,d),s[1]=yo(e,o,f),g=p[x++],m=p[x++];break;case ko.A:var w=p[x++],b=p[x++],S=p[x++],M=p[x++],I=p[x++],A=p[x++]+I;x+=1;var T=1-p[x++];1===x&&(v=Bo(I)*S+w,y=Vo(I)*M+b),Lo(w,b,S,M,I,A,T,Oo,Eo),g=Bo(A)*S+w,m=Vo(A)*M+b;break;case ko.R:Ao(v=g=p[x++],y=m=p[x++],v+p[x++],y+p[x++],Oo,Eo);break;case ko.Z:g=v,m=y}St(Po,Po,Oo),Mt(No,No,Eo)}return 0===x&&(Po[0]=Po[1]=No[0]=No[1]=0),new bi(Po[0],Po[1],No[0]-Po[0],No[1]-Po[1])},rebuildPath:function(t){for(var e,i,n,a,o,r,s=this.data,l=this._ux,u=this._uy,h=this._len,c=0;c<h;){var d=s[c++];switch(1===c&&(e=n=s[c],i=a=s[c+1]),d){case ko.M:e=n=s[c++],i=a=s[c++],t.moveTo(n,a);break;case ko.L:o=s[c++],r=s[c++],(Fo(o-n)>l||Fo(r-a)>u||c===h-1)&&(t.lineTo(o,r),n=o,a=r);break;case ko.C:t.bezierCurveTo(s[c++],s[c++],s[c++],s[c++],s[c++],s[c++]),n=s[c-2],a=s[c-1];break;case ko.Q:t.quadraticCurveTo(s[c++],s[c++],s[c++],s[c++]),n=s[c-2],a=s[c-1];break;case ko.A:var f=s[c++],p=s[c++],g=s[c++],m=s[c++],v=s[c++],y=s[c++],x=s[c++],_=s[c++],w=m<g?g:m,b=m<g?1:g/m,S=m<g?m/g:1,M=v+y;.001<Math.abs(g-m)?(t.translate(f,p),t.rotate(x),t.scale(b,S),t.arc(0,0,w,v,M,1-_),t.scale(1/b,1/S),t.rotate(-x),t.translate(-f,-p)):t.arc(f,p,w,v,M,1-_),1===c&&(e=Bo(v)*g+f,i=Vo(v)*m+p),n=Bo(M)*g+f,a=Vo(M)*m+p;break;case ko.R:e=n=s[c],i=a=s[c+1],t.rect(s[c++],s[c++],s[c++],s[c++]);break;case ko.Z:t.closePath(),n=e,a=i}}}},Ho.CMD=ko;var Yo=2*Math.PI;function jo(t){return(t%=Yo)<0&&(t+=Yo),t}var qo=2*Math.PI;function Ko(t,e,i,n,a,o,r,s,l){if(0===r)return!1;var u=r;s-=t,l-=e;var h=Math.sqrt(s*s+l*l);if(i<h-u||h+u<i)return!1;if(Math.abs(n-a)%qo<1e-4)return!0;if(o){var c=n;n=jo(a),a=jo(c)}else n=jo(n),a=jo(a);a<n&&(a+=qo);var d=Math.atan2(l,s);return d<0&&(d+=qo),n<=d&&d<=a||n<=d+qo&&d+qo<=a}function $o(t,e,i,n,a,o){if(e<o&&n<o||o<e&&o<n)return 0;if(n===e)return 0;var r=n<e?1:-1,s=(o-e)/(n-e);1!=s&&0!=s||(r=n<e?.5:-.5);var l=s*(i-t)+t;return l===a?1/0:a<l?r:0}var Jo=Ho.CMD,Qo=2*Math.PI,tr=1e-4;var er=[-1,-1,-1],ir=[-1,-1];function nr(t,e,i,n,a,o,r,s,l,u){if(e<u&&n<u&&o<u&&s<u||u<e&&u<n&&u<o&&u<s)return 0;var h,c=function(t,e,i,n,a,o){var r=n+3*(e-i)-t,s=3*(i-2*e+t),l=3*(e-t),u=t-a,h=s*s-3*r*l,c=s*l-9*r*u,d=l*l-3*s*u,f=0;if(ro(h)&&ro(c)){if(ro(s))o[0]=0;else 0<=(M=-l/s)&&M<=1&&(o[f++]=M)}else{var p=c*c-4*h*d;if(ro(p)){var g=c/h,m=-g/2;0<=(M=-s/r+g)&&M<=1&&(o[f++]=M),0<=m&&m<=1&&(o[f++]=m)}else if(0<p){var v=Ja(p),y=h*s+1.5*r*(-c+v),x=h*s+1.5*r*(-c-v);0<=(M=(-s-((y=y<0?-$a(-y,io):$a(y,io))+(x=x<0?-$a(-x,io):$a(x,io))))/(3*r))&&M<=1&&(o[f++]=M)}else{var _=(2*h*s-3*r*c)/(2*Ja(h*h*h)),w=Math.acos(_)/3,b=Ja(h),S=Math.cos(w),M=(-s-2*b*S)/(3*r),I=(m=(-s+b*(S+eo*Math.sin(w)))/(3*r),(-s+b*(S-eo*Math.sin(w)))/(3*r));0<=M&&M<=1&&(o[f++]=M),0<=m&&m<=1&&(o[f++]=m),0<=I&&I<=1&&(o[f++]=I)}}return f}(e,n,o,s,u,er);if(0===c)return 0;for(var d,f,p=0,g=-1,m=0;m<c;m++){var v=er[m],y=0===v||1===v?.5:1;lo(t,i,a,r,v)<l||(g<0&&(g=ho(e,n,o,s,ir),ir[1]<ir[0]&&1<g&&(void 0,h=ir[0],ir[0]=ir[1],ir[1]=h),d=lo(e,n,o,s,ir[0]),1<g&&(f=lo(e,n,o,s,ir[1]))),2===g?v<ir[0]?p+=d<e?y:-y:v<ir[1]?p+=f<d?y:-y:p+=s<f?y:-y:v<ir[0]?p+=d<e?y:-y:p+=s<d?y:-y)}return p}function ar(t,e,i,n,a,o,r,s){if(e<s&&n<s&&o<s||s<e&&s<n&&s<o)return 0;var l=function(t,e,i,n,a){var o=t-2*e+i,r=2*(e-t),s=t-n,l=0;if(ro(o)){if(so(r))0<=(h=-s/r)&&h<=1&&(a[l++]=h)}else{var u=r*r-4*o*s;if(ro(u))0<=(h=-r/(2*o))&&h<=1&&(a[l++]=h);else if(0<u){var h,c=Ja(u),d=(-r-c)/(2*o);0<=(h=(-r+c)/(2*o))&&h<=1&&(a[l++]=h),0<=d&&d<=1&&(a[l++]=d)}}return l}(e,n,o,s,er);if(0===l)return 0;var u=go(e,n,o);if(0<=u&&u<=1){for(var h=0,c=fo(e,n,o,u),d=0;d<l;d++){var f=0===er[d]||1===er[d]?.5:1;fo(t,i,a,er[d])<r||(er[d]<u?h+=c<e?f:-f:h+=o<c?f:-f)}return h}f=0===er[0]||1===er[0]?.5:1;return fo(t,i,a,er[0])<r?0:o<e?f:-f}function or(t,e,i,n,a,o,r,s){if(i<(s-=e)||s<-i)return 0;var l=Math.sqrt(i*i-s*s);er[0]=-l,er[1]=l;var u=Math.abs(n-a);if(u<1e-4)return 0;if(u%Qo<1e-4){a=Qo;var h=o?1:-1;return r>=er[n=0]+t&&r<=er[1]+t?h:0}if(o){l=n;n=jo(a),a=jo(l)}else n=jo(n),a=jo(a);a<n&&(a+=Qo);for(var c=0,d=0;d<2;d++){var f=er[d];if(r<f+t){var p=Math.atan2(s,f);h=o?1:-1;p<0&&(p=Qo+p),(n<=p&&p<=a||n<=p+Qo&&p+Qo<=a)&&(p>Math.PI/2&&p<1.5*Math.PI&&(h=-h),c+=h)}}return c}function rr(t,e,i,n,a){for(var o=0,r=0,s=0,l=0,u=0,h=0;h<t.length;){var c=t[h++];switch(c===Jo.M&&1<h&&(i||(o+=$o(r,s,l,u,n,a))),1===h&&(l=r=t[h],u=s=t[h+1]),c){case Jo.M:r=l=t[h++],s=u=t[h++];break;case Jo.L:if(i){if(Zo(r,s,t[h],t[h+1],e,n,a))return!0}else o+=$o(r,s,t[h],t[h+1],n,a)||0;r=t[h++],s=t[h++];break;case Jo.C:if(i){if(Uo(r,s,t[h++],t[h++],t[h++],t[h++],t[h],t[h+1],e,n,a))return!0}else o+=nr(r,s,t[h++],t[h++],t[h++],t[h++],t[h],t[h+1],n,a)||0;r=t[h++],s=t[h++];break;case Jo.Q:if(i){if(Xo(r,s,t[h++],t[h++],t[h],t[h+1],e,n,a))return!0}else o+=ar(r,s,t[h++],t[h++],t[h],t[h+1],n,a)||0;r=t[h++],s=t[h++];break;case Jo.A:var d=t[h++],f=t[h++],p=t[h++],g=t[h++],m=t[h++],v=t[h++];h+=1;var y=1-t[h++],x=Math.cos(m)*p+d,_=Math.sin(m)*g+f;1<h?o+=$o(r,s,x,_,n,a):(l=x,u=_);var w=(n-d)*g/p+d;if(i){if(Ko(d,f,g,m,m+v,y,e,w,a))return!0}else o+=or(d,f,g,m,m+v,y,w,a);r=Math.cos(m+v)*p+d,s=Math.sin(m+v)*g+f;break;case Jo.R:l=r=t[h++],u=s=t[h++];x=l+t[h++],_=u+t[h++];if(i){if(Zo(l,u,x,u,e,n,a)||Zo(x,u,x,_,e,n,a)||Zo(x,_,l,_,e,n,a)||Zo(l,_,l,u,e,n,a))return!0}else o+=$o(x,u,x,_,n,a),o+=$o(l,_,l,u,n,a);break;case Jo.Z:if(i){if(Zo(r,s,l,u,e,n,a))return!0}else o+=$o(r,s,l,u,n,a);r=l,s=u}}return i||function(t,e){return Math.abs(t-e)<tr}(s,u)||(o+=$o(r,s,l,u,n,a)||0),0!==o}var sr=Ui.prototype.getCanvasPattern,lr=Math.abs,ur=new Ho(!0);function hr(t){Xn.call(this,t),this.path=null}hr.prototype={constructor:hr,type:"path",__dirtyPath:!0,strokeContainThreshold:5,segmentIgnoreThreshold:0,subPixelOptimize:!1,brush:function(t,e){var i,n=this.style,a=this.path||ur,o=n.hasStroke(),r=n.hasFill(),s=n.fill,l=n.stroke,u=r&&!!s.colorStops,h=o&&!!l.colorStops,c=r&&!!s.image,d=o&&!!l.image;n.bind(t,this,e),this.setTransform(t),this.__dirty&&(u&&(i=i||this.getBoundingRect(),this._fillGradient=n.getGradient(t,s,i)),h&&(i=i||this.getBoundingRect(),this._strokeGradient=n.getGradient(t,l,i)));u?t.fillStyle=this._fillGradient:c&&(t.fillStyle=sr.call(s,t)),h?t.strokeStyle=this._strokeGradient:d&&(t.strokeStyle=sr.call(l,t));var f=n.lineDash,p=n.lineDashOffset,g=!!t.setLineDash,m=this.getGlobalScale();if(a.setScale(m[0],m[1],this.segmentIgnoreThreshold),this.__dirtyPath||f&&!g&&o?(a.beginPath(t),f&&!g&&(a.setLineDash(f),a.setLineDashOffset(p)),this.buildPath(a,this.shape,!1),this.path&&(this.__dirtyPath=!1)):(t.beginPath(),this.path.rebuildPath(t)),r)if(null!=n.fillOpacity){var v=t.globalAlpha;t.globalAlpha=n.fillOpacity*n.opacity,a.fill(t),t.globalAlpha=v}else a.fill(t);if(f&&g&&(t.setLineDash(f),t.lineDashOffset=p),o)if(null!=n.strokeOpacity){v=t.globalAlpha;t.globalAlpha=n.strokeOpacity*n.opacity,a.stroke(t),t.globalAlpha=v}else a.stroke(t);f&&g&&t.setLineDash([]),null!=n.text&&(this.restoreTransform(t),this.drawRectText(t,this.getBoundingRect()))},buildPath:function(t,e,i){},createPathProxy:function(){this.path=new Ho},getBoundingRect:function(){var t=this._rect,e=this.style,i=!t;if(i){var n=this.path;n=n||(this.path=new Ho),this.__dirtyPath&&(n.beginPath(),this.buildPath(n,this.shape,!1)),t=n.getBoundingRect()}if(this._rect=t,e.hasStroke()){var a=this._rectWithStroke||(this._rectWithStroke=t.clone());if(this.__dirty||i){a.copy(t);var o=e.lineWidth,r=e.strokeNoScale?this.getLineScale():1;e.hasFill()||(o=Math.max(o,this.strokeContainThreshold||4)),1e-10<r&&(a.width+=o/r,a.height+=o/r,a.x-=o/r/2,a.y-=o/r/2)}return a}return t},contain:function(t,e){var i=this.transformCoordToLocal(t,e),n=this.getBoundingRect(),a=this.style;if(t=i[0],e=i[1],n.contain(t,e)){var o=this.path.data;if(a.hasStroke()){var r=a.lineWidth,s=a.strokeNoScale?this.getLineScale():1;if(1e-10<s&&(a.hasFill()||(r=Math.max(r,this.strokeContainThreshold)),function(t,e,i,n){return rr(t,e,!0,i,n)}(o,r/s,t,e)))return!0}if(a.hasFill())return function(t,e,i){return rr(t,0,!1,e,i)}(o,t,e)}return!1},dirty:function(t){null==t&&(t=!0),t&&(this.__dirtyPath=t,this._rect=null),this.__dirty=this.__dirtyText=!0,this.__zr&&this.__zr.refresh(),this.__clipTarget&&this.__clipTarget.dirty()},animateShape:function(t){return this.animate("shape",t)},attrKV:function(t,e){"shape"===t?(this.setShape(e),this.__dirtyPath=!0,this._rect=null):Xn.prototype.attrKV.call(this,t,e)},setShape:function(t,e){var i=this.shape;if(i){if(z(t))for(var n in t)t.hasOwnProperty(n)&&(i[n]=t[n]);else i[t]=e;this.dirty(!0)}return this},getLineScale:function(){var t=this.transform;return t&&1e-10<lr(t[0]-1)&&1e-10<lr(t[3]-1)?Math.sqrt(lr(t[0]*t[3]-t[2]*t[1])):1}},hr.extend=function(a){function t(t){hr.call(this,t),a.style&&this.style.extendFrom(a.style,!1);var e=a.shape;if(e){this.shape=this.shape||{};var i=this.shape;for(var n in e)!i.hasOwnProperty(n)&&e.hasOwnProperty(n)&&(i[n]=e[n])}a.init&&a.init.call(this,t)}for(var e in w(t,hr),a)"style"!==e&&"shape"!==e&&(t.prototype[e]=a[e]);return t},w(hr,Xn);function cr(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])}var dr=Ho.CMD,fr=[[],[],[]],pr=Math.sqrt,gr=Math.atan2,mr=function(t,e){var i,n,a,o,r,s=t.data,l=dr.M,u=dr.C,h=dr.L,c=dr.R,d=dr.A,f=dr.Q;for(o=a=0;a<s.length;){switch(i=s[a++],o=a,n=0,i){case l:case h:n=1;break;case u:n=3;break;case f:n=2;break;case d:var p=e[4],g=e[5],m=pr(e[0]*e[0]+e[1]*e[1]),v=pr(e[2]*e[2]+e[3]*e[3]),y=gr(-e[1]/v,e[0]/m);s[a]*=m,s[a++]+=p,s[a]*=v,s[a++]+=g,s[a++]*=m,s[a++]*=v,s[a++]+=y,s[a++]+=y,o=a+=2;break;case c:x[0]=s[a++],x[1]=s[a++],bt(x,x,e),s[o++]=x[0],s[o++]=x[1],x[0]+=s[a++],x[1]+=s[a++],bt(x,x,e),s[o++]=x[0],s[o++]=x[1]}for(r=0;r<n;r++){var x;(x=fr[r])[0]=s[a++],x[1]=s[a++],bt(x,x,e),s[o++]=x[0],s[o++]=x[1]}}},vr=Math.sqrt,yr=Math.sin,xr=Math.cos,_r=Math.PI,wr=function(t,e){return(t[0]*e[0]+t[1]*e[1])/(cr(t)*cr(e))},br=function(t,e){return(t[0]*e[1]<t[1]*e[0]?-1:1)*Math.acos(wr(t,e))};function Sr(t,e,i,n,a,o,r,s,l,u,h){var c=l*(_r/180),d=xr(c)*(t-i)/2+yr(c)*(e-n)/2,f=-1*yr(c)*(t-i)/2+xr(c)*(e-n)/2,p=d*d/(r*r)+f*f/(s*s);1<p&&(r*=vr(p),s*=vr(p));var g=(a===o?-1:1)*vr((r*r*(s*s)-r*r*(f*f)-s*s*(d*d))/(r*r*(f*f)+s*s*(d*d)))||0,m=g*r*f/s,v=g*-s*d/r,y=(t+i)/2+xr(c)*m-yr(c)*v,x=(e+n)/2+yr(c)*m+xr(c)*v,_=br([1,0],[(d-m)/r,(f-v)/s]),w=[(d-m)/r,(f-v)/s],b=[(-1*d-m)/r,(-1*f-v)/s],S=br(w,b);wr(w,b)<=-1&&(S=_r),1<=wr(w,b)&&(S=0),0===o&&0<S&&(S-=2*_r),1===o&&S<0&&(S+=2*_r),h.addData(u,y,x,r,s,_,S,c,o)}var Mr=/([mlvhzcqtsa])([^mlvhzcqtsa]*)/gi,Ir=/-?([0-9]*\.)?[0-9]+([eE]-?[0-9]+)?/g;function Ar(t,e){var i=function(t){if(!t)return new Ho;for(var e,i=0,n=0,a=i,o=n,r=new Ho,s=Ho.CMD,l=t.match(Mr),u=0;u<l.length;u++){for(var h,c=l[u],d=c.charAt(0),f=c.match(Ir)||[],p=f.length,g=0;g<p;g++)f[g]=parseFloat(f[g]);for(var m=0;m<p;){var v,y,x,_,w,b,S,M=i,I=n;switch(d){case"l":i+=f[m++],n+=f[m++],h=s.L,r.addData(h,i,n);break;case"L":i=f[m++],n=f[m++],h=s.L,r.addData(h,i,n);break;case"m":i+=f[m++],n+=f[m++],h=s.M,r.addData(h,i,n),a=i,o=n,d="l";break;case"M":i=f[m++],n=f[m++],h=s.M,r.addData(h,i,n),a=i,o=n,d="L";break;case"h":i+=f[m++],h=s.L,r.addData(h,i,n);break;case"H":i=f[m++],h=s.L,r.addData(h,i,n);break;case"v":n+=f[m++],h=s.L,r.addData(h,i,n);break;case"V":n=f[m++],h=s.L,r.addData(h,i,n);break;case"C":h=s.C,r.addData(h,f[m++],f[m++],f[m++],f[m++],f[m++],f[m++]),i=f[m-2],n=f[m-1];break;case"c":h=s.C,r.addData(h,f[m++]+i,f[m++]+n,f[m++]+i,f[m++]+n,f[m++]+i,f[m++]+n),i+=f[m-2],n+=f[m-1];break;case"S":v=i,y=n;var A=r.len(),T=r.data;e===s.C&&(v+=i-T[A-4],y+=n-T[A-3]),h=s.C,M=f[m++],I=f[m++],i=f[m++],n=f[m++],r.addData(h,v,y,M,I,i,n);break;case"s":v=i,y=n;A=r.len(),T=r.data;e===s.C&&(v+=i-T[A-4],y+=n-T[A-3]),h=s.C,M=i+f[m++],I=n+f[m++],i+=f[m++],n+=f[m++],r.addData(h,v,y,M,I,i,n);break;case"Q":M=f[m++],I=f[m++],i=f[m++],n=f[m++],h=s.Q,r.addData(h,M,I,i,n);break;case"q":M=f[m++]+i,I=f[m++]+n,i+=f[m++],n+=f[m++],h=s.Q,r.addData(h,M,I,i,n);break;case"T":v=i,y=n;A=r.len(),T=r.data;e===s.Q&&(v+=i-T[A-4],y+=n-T[A-3]),i=f[m++],n=f[m++],h=s.Q,r.addData(h,v,y,i,n);break;case"t":v=i,y=n;A=r.len(),T=r.data;e===s.Q&&(v+=i-T[A-4],y+=n-T[A-3]),i+=f[m++],n+=f[m++],h=s.Q,r.addData(h,v,y,i,n);break;case"A":x=f[m++],_=f[m++],w=f[m++],b=f[m++],S=f[m++],Sr(M=i,I=n,i=f[m++],n=f[m++],b,S,x,_,w,h=s.A,r);break;case"a":x=f[m++],_=f[m++],w=f[m++],b=f[m++],S=f[m++],Sr(M=i,I=n,i+=f[m++],n+=f[m++],b,S,x,_,w,h=s.A,r)}}"z"!==d&&"Z"!==d||(h=s.Z,r.addData(h),i=a,n=o),e=h}return r.toStatic(),r}(t);return(e=e||{}).buildPath=function(t){if(t.setData){t.setData(i.data),(e=t.getContext())&&t.rebuildPath(e)}else{var e=t;i.rebuildPath(e)}},e.applyTransform=function(t){mr(i,t),this.dirty(!0)},e}function Tr(t,e){return new hr(Ar(t,e))}var Dr=function(t){Xn.call(this,t)};Dr.prototype={constructor:Dr,type:"text",brush:function(t,e){var i=this.style;this.__dirty&&Cn(i),i.fill=i.stroke=i.shadowBlur=i.shadowColor=i.shadowOffsetX=i.shadowOffsetY=null;var n=i.text;null!=n&&(n+=""),Hn(n,i)?(this.setTransform(t),kn(this,t,n,i,null,e),this.restoreTransform(t)):t.__attrCachedBy=Ri.NONE},getBoundingRect:function(){var t=this.style;if(this.__dirty&&Cn(t),!this._rect){var e=t.text;null!=e?e+="":e="";var i=un(t.text+"",t.font,t.textAlign,t.textVerticalAlign,t.textPadding,t.textLineHeight,t.rich);if(i.x+=t.x||0,i.y+=t.y||0,Vn(t.textStroke,t.textStrokeWidth)){var n=t.textStrokeWidth;i.x-=n/2,i.y-=n/2,i.width+=n,i.height+=n}this._rect=i}return this._rect}},w(Dr,Xn);function Cr(l){return v.browser.ie&&11<=v.browser.version?function(){var t,e=this.__clipPaths,i=this.style;if(e)for(var n=0;n<e.length;n++){var a=e[n],o=a&&a.shape,r=a&&a.type;if(o&&("sector"===r&&o.startAngle===o.endAngle||"rect"===r&&(!o.width||!o.height))){for(var s=0;s<kr.length;s++)kr[s][2]=i[kr[s][0]],i[kr[s][0]]=kr[s][1];t=!0;break}}if(l.apply(this,arguments),t)for(s=0;s<kr.length;s++)i[kr[s][0]]=kr[s][2]}:l}var Lr=hr.extend({type:"circle",shape:{cx:0,cy:0,r:0},buildPath:function(t,e,i){i&&t.moveTo(e.cx+e.r,e.cy),t.arc(e.cx,e.cy,e.r,0,2*Math.PI,!0)}}),kr=[["shadowBlur",0],["shadowColor","#000"],["shadowOffsetX",0],["shadowOffsetY",0]],Pr=hr.extend({type:"sector",shape:{cx:0,cy:0,r0:0,r:0,startAngle:0,endAngle:2*Math.PI,clockwise:!0},brush:Cr(hr.prototype.brush),buildPath:function(t,e){var i=e.cx,n=e.cy,a=Math.max(e.r0||0,0),o=Math.max(e.r,0),r=e.startAngle,s=e.endAngle,l=e.clockwise,u=Math.cos(r),h=Math.sin(r);t.moveTo(u*a+i,h*a+n),t.lineTo(u*o+i,h*o+n),t.arc(i,n,o,r,s,!l),t.lineTo(Math.cos(s)*a+i,Math.sin(s)*a+n),0!==a&&t.arc(i,n,a,s,r,l),t.closePath()}}),Nr=hr.extend({type:"ring",shape:{cx:0,cy:0,r:0,r0:0},buildPath:function(t,e){var i=e.cx,n=e.cy,a=2*Math.PI;t.moveTo(i+e.r,n),t.arc(i,n,e.r,0,a,!1),t.moveTo(i+e.r0,n),t.arc(i,n,e.r0,0,a,!0)}});function Or(t,e,i,n,a,o,r){var s=.5*(i-t),l=.5*(n-e);return(2*(e-i)+s+l)*r+(-3*(e-i)-2*s-l)*o+s*a+e}function Er(t,e,i){var n=e.points,a=e.smooth;if(n&&2<=n.length){if(a&&"spline"!==a){var o=function(t,e,i,n){var a,o,r,s,l=[],u=[],h=[],c=[];if(n){r=[1/0,1/0],s=[-1/0,-1/0];for(var d=0,f=t.length;d<f;d++)St(r,r,t[d]),Mt(s,s,t[d]);St(r,r,n[0]),Mt(s,s,n[1])}for(d=0,f=t.length;d<f;d++){var p=t[d];if(i)a=t[d?d-1:f-1],o=t[(d+1)%f];else{if(0===d||d===f-1){l.push(rt(t[d]));continue}a=t[d-1],o=t[d+1]}ht(u,o,a),gt(u,u,e);var g=vt(p,a),m=vt(p,o),v=g+m;0!==v&&(g/=v,m/=v),gt(h,u,-g),gt(c,u,m);var y=lt([],p,h),x=lt([],p,c);n&&(Mt(y,y,r),St(y,y,s),Mt(x,x,r),St(x,x,s)),l.push(y),l.push(x)}return i&&l.push(l.shift()),l}(n,a,i,e.smoothConstraint);t.moveTo(n[0][0],n[0][1]);for(var r=n.length,s=0;s<(i?r:r-1);s++){var l=o[2*s],u=o[2*s+1],h=n[(s+1)%r];t.bezierCurveTo(l[0],l[1],u[0],u[1],h[0],h[1])}}else{"spline"===a&&(n=function(t,e){for(var i=t.length,n=[],a=0,o=1;o<i;o++)a+=vt(t[o-1],t[o]);var r=a/2;r=r<i?i:r;for(o=0;o<r;o++){var s,l,u,h=o/(r-1)*(e?i:i-1),c=Math.floor(h),d=h-c,f=t[c%i];u=e?(s=t[(c-1+i)%i],l=t[(c+1)%i],t[(c+2)%i]):(s=t[0===c?c:c-1],l=t[i-2<c?i-1:c+1],t[i-3<c?i-1:c+2]);var p=d*d,g=d*p;n.push([Or(s[0],f[0],l[0],u[0],d,p,g),Or(s[1],f[1],l[1],u[1],d,p,g)])}return n}(n,i)),t.moveTo(n[0][0],n[0][1]);s=1;for(var c=n.length;s<c;s++)t.lineTo(n[s][0],n[s][1])}i&&t.closePath()}}var Rr=hr.extend({type:"polygon",shape:{points:null,smooth:!1,smoothConstraint:null},buildPath:function(t,e){Er(t,e,!0)}}),zr=hr.extend({type:"polyline",shape:{points:null,smooth:!1,smoothConstraint:null},style:{stroke:"#000",fill:null},buildPath:function(t,e){Er(t,e,!1)}}),Br=Math.round;function Vr(t,e,i){var n=i&&i.lineWidth;if(e&&n){var a=e.x1,o=e.x2,r=e.y1,s=e.y2;Br(2*a)===Br(2*o)?t.x1=t.x2=Fr(a,n,!0):(t.x1=a,t.x2=o),Br(2*r)===Br(2*s)?t.y1=t.y2=Fr(r,n,!0):(t.y1=r,t.y2=s)}}function Gr(t,e,i){var n=i&&i.lineWidth;if(e&&n){var a=e.x,o=e.y,r=e.width,s=e.height;t.x=Fr(a,n,!0),t.y=Fr(o,n,!0),t.width=Math.max(Fr(a+r,n,!1)-t.x,0===r?0:1),t.height=Math.max(Fr(o+s,n,!1)-t.y,0===s?0:1)}}function Fr(t,e,i){var n=Br(2*t);return(n+Br(e))%2==0?n/2:(n+(i?1:-1))/2}var Wr={},Hr=hr.extend({type:"rect",shape:{r:0,x:0,y:0,width:0,height:0},buildPath:function(t,e){var i,n,a,o;this.subPixelOptimize?(Gr(Wr,e,this.style),i=Wr.x,n=Wr.y,a=Wr.width,o=Wr.height,Wr.r=e.r,e=Wr):(i=e.x,n=e.y,a=e.width,o=e.height),e.r?bn(t,e):t.rect(i,n,a,o),t.closePath()}}),Zr={},Ur=hr.extend({type:"line",shape:{x1:0,y1:0,x2:0,y2:0,percent:1},style:{stroke:"#000",fill:null},buildPath:function(t,e){var i,n,a,o;o=this.subPixelOptimize?(Vr(Zr,e,this.style),i=Zr.x1,n=Zr.y1,a=Zr.x2,Zr.y2):(i=e.x1,n=e.y1,a=e.x2,e.y2);var r=e.percent;0!==r&&(t.moveTo(i,n),r<1&&(a=i*(1-r)+a*r,o=n*(1-r)+o*r),t.lineTo(a,o))},pointAt:function(t){var e=this.shape;return[e.x1*(1-t)+e.x2*t,e.y1*(1-t)+e.y2*t]}}),Xr=[];function Yr(t,e,i){var n=t.cpx2,a=t.cpy2;return null===n||null===a?[(i?uo:lo)(t.x1,t.cpx1,t.cpx2,t.x2,e),(i?uo:lo)(t.y1,t.cpy1,t.cpy2,t.y2,e)]:[(i?po:fo)(t.x1,t.cpx1,t.x2,e),(i?po:fo)(t.y1,t.cpy1,t.y2,e)]}function jr(t){this.colorStops=t||[]}var qr=hr.extend({type:"bezier-curve",shape:{x1:0,y1:0,x2:0,y2:0,cpx1:0,cpy1:0,percent:1},style:{stroke:"#000",fill:null},buildPath:function(t,e){var i=e.x1,n=e.y1,a=e.x2,o=e.y2,r=e.cpx1,s=e.cpy1,l=e.cpx2,u=e.cpy2,h=e.percent;0!==h&&(t.moveTo(i,n),null==l||null==u?(h<1&&(mo(i,r,a,h,Xr),r=Xr[1],a=Xr[2],mo(n,s,o,h,Xr),s=Xr[1],o=Xr[2]),t.quadraticCurveTo(r,s,a,o)):(h<1&&(co(i,r,l,a,h,Xr),r=Xr[1],l=Xr[2],a=Xr[3],co(n,s,u,o,h,Xr),s=Xr[1],u=Xr[2],o=Xr[3]),t.bezierCurveTo(r,s,l,u,a,o)))},pointAt:function(t){return Yr(this.shape,t,!1)},tangentAt:function(t){var e=Yr(this.shape,t,!0);return mt(e,e)}}),Kr=hr.extend({type:"arc",shape:{cx:0,cy:0,r:0,startAngle:0,endAngle:2*Math.PI,clockwise:!0},style:{stroke:"#000",fill:null},buildPath:function(t,e){var i=e.cx,n=e.cy,a=Math.max(e.r,0),o=e.startAngle,r=e.endAngle,s=e.clockwise,l=Math.cos(o),u=Math.sin(o);t.moveTo(l*a+i,u*a+n),t.arc(i,n,a,o,r,!s)}}),$r=hr.extend({type:"compound",shape:{paths:null},_updatePathDirty:function(){for(var t=this.__dirtyPath,e=this.shape.paths,i=0;i<e.length;i++)t=t||e[i].__dirtyPath;this.__dirtyPath=t,this.__dirty=this.__dirty||t},beforeBrush:function(){this._updatePathDirty();for(var t=this.shape.paths||[],e=this.getGlobalScale(),i=0;i<t.length;i++)t[i].path||t[i].createPathProxy(),t[i].path.setScale(e[0],e[1],t[i].segmentIgnoreThreshold)},buildPath:function(t,e){for(var i=e.paths||[],n=0;n<i.length;n++)i[n].buildPath(t,i[n].shape,!0)},afterBrush:function(){for(var t=this.shape.paths||[],e=0;e<t.length;e++)t[e].__dirtyPath=!1},getBoundingRect:function(){return this._updatePathDirty(),hr.prototype.getBoundingRect.call(this)}});jr.prototype={constructor:jr,addColorStop:function(t,e){this.colorStops.push({offset:t,color:e})}};function Jr(t,e,i,n,a,o){this.x=null==t?0:t,this.y=null==e?0:e,this.x2=null==i?1:i,this.y2=null==n?0:n,this.type="linear",this.global=o||!1,jr.call(this,a)}Jr.prototype={constructor:Jr},w(Jr,jr);function Qr(t,e,i,n,a){this.x=null==t?.5:t,this.y=null==e?.5:e,this.r=null==i?.5:i,this.type="radial",this.global=a||!1,jr.call(this,n)}function ts(t){Xn.call(this,t),this._displayables=[],this._temporaryDisplayables=[],this._cursor=0,this.notClear=!0}Qr.prototype={constructor:Qr},w(Qr,jr),ts.prototype.incremental=!0,ts.prototype.clearDisplaybles=function(){this._displayables=[],this._temporaryDisplayables=[],this._cursor=0,this.dirty(),this.notClear=!1},ts.prototype.addDisplayable=function(t,e){e?this._temporaryDisplayables.push(t):this._displayables.push(t),this.dirty()},ts.prototype.addDisplayables=function(t,e){e=e||!1;for(var i=0;i<t.length;i++)this.addDisplayable(t[i],e)},ts.prototype.eachPendingDisplayable=function(t){for(var e=this._cursor;e<this._displayables.length;e++)t&&t(this._displayables[e]);for(e=0;e<this._temporaryDisplayables.length;e++)t&&t(this._temporaryDisplayables[e])},ts.prototype.update=function(){this.updateTransform();for(var t=this._cursor;t<this._displayables.length;t++){(e=this._displayables[t]).parent=this,e.update(),e.parent=null}for(t=0;t<this._temporaryDisplayables.length;t++){var e;(e=this._temporaryDisplayables[t]).parent=this,e.update(),e.parent=null}},ts.prototype.brush=function(t,e){for(var i=this._cursor;i<this._displayables.length;i++){(n=this._displayables[i]).beforeBrush&&n.beforeBrush(t),n.brush(t,i===this._cursor?null:this._displayables[i-1]),n.afterBrush&&n.afterBrush(t)}this._cursor=i;for(i=0;i<this._temporaryDisplayables.length;i++){var n;(n=this._temporaryDisplayables[i]).beforeBrush&&n.beforeBrush(t),n.brush(t,0===i?null:this._temporaryDisplayables[i-1]),n.afterBrush&&n.afterBrush(t)}this._temporaryDisplayables=[],this.notClear=!0};var es=[];ts.prototype.getBoundingRect=function(){if(!this._rect){for(var t=new bi(1/0,1/0,-1/0,-1/0),e=0;e<this._displayables.length;e++){var i=this._displayables[e],n=i.getBoundingRect().clone();i.needLocalTransform()&&n.applyTransform(i.getLocalTransform(es)),t.union(n)}this._rect=t}return this._rect},ts.prototype.contain=function(t,e){var i=this.transformCoordToLocal(t,e);if(this.getBoundingRect().contain(i[0],i[1]))for(var n=0;n<this._displayables.length;n++){if(this._displayables[n].contain(t,e))return!0}return!1},w(ts,Xn);var is=Math.max,ns=Math.min,as={},os=1,rs={color:"textFill",textBorderColor:"textStroke",textBorderWidth:"textStrokeWidth"},ss="emphasis",ls="normal",us=1,hs={},cs={};function ds(t){return hr.extend(t)}function fs(t,e){cs[t]=e}function ps(t){if(cs.hasOwnProperty(t))return cs[t]}function gs(t,e,i,n){var a=Tr(t,e);return i&&("center"===n&&(i=vs(i,a.getBoundingRect())),xs(a,i)),a}function ms(t,i,n){var a=new Yn({style:{image:t,x:i.x,y:i.y,width:i.width,height:i.height},onload:function(t){if("center"===n){var e={width:t.width,height:t.height};a.setStyle(vs(i,e))}}});return a}function vs(t,e){var i,n=e.width/e.height,a=t.height*n;return i=a<=t.width?t.height:(a=t.width)/n,{x:t.x+t.width/2-a/2,y:t.y+t.height/2-i/2,width:a,height:i}}var ys=function(t,e){for(var i=[],n=t.length,a=0;a<n;a++){var o=t[a];o.path||o.createPathProxy(),o.__dirtyPath&&o.buildPath(o.path,o.shape,!0),i.push(o.path)}var r=new hr(e);return r.createPathProxy(),r.buildPath=function(t){t.appendPath(i);var e=t.getContext();e&&t.rebuildPath(e)},r};function xs(t,e){if(t.applyTransform){var i=t.getBoundingRect().calculateTransform(e);t.applyTransform(i)}}var _s=Fr;function ws(t){return null!=t&&"none"!==t}var bs=Q(),Ss=0;function Ms(t){var e=t.__hoverStl;if(e&&!t.__highlighted){var i=t.__zr,n=t.useHoverLayer&&i&&"canvas"===i.painter.type;if(t.__highlighted=n?"layer":"plain",!(t.isGroup||!i&&t.useHoverLayer)){var a=t,o=t.style;n&&(o=(a=i.addHover(t)).style),Us(o),n||function(t){if(t.__hoverStlDirty){t.__hoverStlDirty=!1;var e=t.__hoverStl;if(e){var i=t.__cachedNormalStl={};t.__cachedNormalZ2=t.z2;var n=t.style;for(var a in e)null!=e[a]&&(i[a]=n[a]);i.fill=n.fill,i.stroke=n.stroke}else t.__cachedNormalStl=t.__cachedNormalZ2=null}}(a),o.extendFrom(e),Is(o,e,"fill"),Is(o,e,"stroke"),Zs(o),n||(t.dirty(!1),t.z2+=os)}}}function Is(t,e,i){!ws(e[i])&&ws(t[i])&&(t[i]=function(t){if("string"!=typeof t)return t;var e=bs.get(t);return e||(e=ze(t,-.1),Ss<1e4&&(bs.set(t,e),Ss++)),e}(t[i]))}function As(t){var e=t.__highlighted;if(e&&(t.__highlighted=!1,!t.isGroup))if("layer"===e)t.__zr&&t.__zr.removeHover(t);else{var i=t.style,n=t.__cachedNormalStl;n&&(Us(i),t.setStyle(n),Zs(i));var a=t.__cachedNormalZ2;null!=a&&t.z2-a===os&&(t.z2=a)}}function Ts(t,e,i){var n,a=ls,o=ls;t.__highlighted&&(a=ss,n=!0),e(t,i),t.__highlighted&&(o=ss,n=!0),t.isGroup&&t.traverse(function(t){t.isGroup||e(t,i)}),n&&t.__highDownOnUpdate&&t.__highDownOnUpdate(a,o)}function Ds(t,e){e=t.__hoverStl=!1!==e&&(t.hoverStyle||e||{}),t.__hoverStlDirty=!0,t.__highlighted&&(t.__cachedNormalStl=null,As(t),Ms(t))}function Cs(t){Ns(this,t)||this.__highByOuter||Ts(this,Ms)}function Ls(t){Ns(this,t)||this.__highByOuter||Ts(this,As)}function ks(t){this.__highByOuter|=1<<(t||0),Ts(this,Ms)}function Ps(t){(this.__highByOuter&=~(1<<(t||0)))||Ts(this,As)}function Ns(t,e){return t.__highDownSilentOnTouch&&e.zrByTouch}function Os(t,e){Es(t,!0),Ts(t,Ds,e)}function Es(t,e){var i=!1===e;if(t.__highDownSilentOnTouch=t.highDownSilentOnTouch,t.__highDownOnUpdate=t.highDownOnUpdate,!i||t.__highDownDispatcher){var n=i?"off":"on";t[n]("mouseover",Cs)[n]("mouseout",Ls),t[n]("emphasis",ks)[n]("normal",Ps),t.__highByOuter=t.__highByOuter||0,t.__highDownDispatcher=!i}}function Rs(t){return!(!t||!t.__highDownDispatcher)}function zs(t){var e=hs[t];return null==e&&us<=32&&(e=hs[t]=us++),e}function Bs(t,e,i,n,a,o,r){var s,l=(a=a||as).labelFetcher,u=a.labelDataIndex,h=a.labelDimIndex,c=i.getShallow("show"),d=n.getShallow("show");(c||d)&&(l&&(s=l.getFormattedLabel(u,"normal",null,h)),null==s&&(s=O(a.defaultText)?a.defaultText(u,a):a.defaultText));var f=c?s:null,p=d?H(l?l.getFormattedLabel(u,"emphasis",null,h):null,s):null;null==f&&null==p||(Gs(t,i,o,a),Gs(e,n,r,a,!0)),t.text=f,e.text=p}function Vs(t,e,i){var n=t.style;e&&(Us(n),t.setStyle(e),Zs(n)),n=t.__hoverStl,i&&n&&(Us(n),L(n,i),Zs(n))}function Gs(t,e,i,n,a){return Fs(t,e,n,a),i&&L(t,i),t}function Fs(t,e,i,n){if((i=i||as).isRectText){var a;i.getTextPosition?a=i.getTextPosition(e,n):"outside"===(a=e.getShallow("position")||(n?null:"inside"))&&(a="top"),t.textPosition=a,t.textOffset=e.getShallow("offset");var o=e.getShallow("rotate");null!=o&&(o*=Math.PI/180),t.textRotation=o,t.textDistance=H(e.getShallow("distance"),n?null:5)}var r,s=e.ecModel,l=s&&s.option.textStyle,u=function(t){var e;for(;t&&t!==t.ecModel;){var i=(t.option||as).rich;if(i)for(var n in e=e||{},i)i.hasOwnProperty(n)&&(e[n]=1);t=t.parentModel}return e}(e);if(u)for(var h in r={},u)if(u.hasOwnProperty(h)){var c=e.getModel(["rich",h]);Ws(r[h]={},c,l,i,n)}return t.rich=r,Ws(t,e,l,i,n,!0),i.forceRich&&!i.textStyle&&(i.textStyle={}),t}function Ws(t,e,i,n,a,o){i=!a&&i||as,t.textFill=Hs(e.getShallow("color"),n)||i.color,t.textStroke=Hs(e.getShallow("textBorderColor"),n)||i.textBorderColor,t.textStrokeWidth=H(e.getShallow("textBorderWidth"),i.textBorderWidth),a||(o&&(t.insideRollbackOpt=n,Zs(t)),null==t.textFill&&(t.textFill=n.autoColor)),t.fontStyle=e.getShallow("fontStyle")||i.fontStyle,t.fontWeight=e.getShallow("fontWeight")||i.fontWeight,t.fontSize=e.getShallow("fontSize")||i.fontSize,t.fontFamily=e.getShallow("fontFamily")||i.fontFamily,t.textAlign=e.getShallow("align"),t.textVerticalAlign=e.getShallow("verticalAlign")||e.getShallow("baseline"),t.textLineHeight=e.getShallow("lineHeight"),t.textWidth=e.getShallow("width"),t.textHeight=e.getShallow("height"),t.textTag=e.getShallow("tag"),o&&n.disableBox||(t.textBackgroundColor=Hs(e.getShallow("backgroundColor"),n),t.textPadding=e.getShallow("padding"),t.textBorderColor=Hs(e.getShallow("borderColor"),n),t.textBorderWidth=e.getShallow("borderWidth"),t.textBorderRadius=e.getShallow("borderRadius"),t.textBoxShadowColor=e.getShallow("shadowColor"),t.textBoxShadowBlur=e.getShallow("shadowBlur"),t.textBoxShadowOffsetX=e.getShallow("shadowOffsetX"),t.textBoxShadowOffsetY=e.getShallow("shadowOffsetY")),t.textShadowColor=e.getShallow("textShadowColor")||i.textShadowColor,t.textShadowBlur=e.getShallow("textShadowBlur")||i.textShadowBlur,t.textShadowOffsetX=e.getShallow("textShadowOffsetX")||i.textShadowOffsetX,t.textShadowOffsetY=e.getShallow("textShadowOffsetY")||i.textShadowOffsetY}function Hs(t,e){return"auto"!==t?t:e&&e.autoColor?e.autoColor:null}function Zs(t){var e,i=t.textPosition,n=t.insideRollbackOpt;if(n&&null==t.textFill){var a=n.autoColor,o=n.isRectText,r=n.useInsideStyle,s=!1!==r&&(!0===r||o&&i&&"string"==typeof i&&0<=i.indexOf("inside")),l=!s&&null!=a;(s||l)&&(e={textFill:t.textFill,textStroke:t.textStroke,textStrokeWidth:t.textStrokeWidth}),s&&(t.textFill="#fff",null==t.textStroke&&(t.textStroke=a,null==t.textStrokeWidth&&(t.textStrokeWidth=2))),l&&(t.textFill=a)}t.insideRollback=e}function Us(t){var e=t.insideRollback;e&&(t.textFill=e.textFill,t.textStroke=e.textStroke,t.textStrokeWidth=e.textStrokeWidth,t.insideRollback=null)}function Xs(t,e){var i=e||e.getModel("textStyle");return j([t.fontStyle||i&&i.getShallow("fontStyle")||"",t.fontWeight||i&&i.getShallow("fontWeight")||"",(t.fontSize||i&&i.getShallow("fontSize")||12)+"px",t.fontFamily||i&&i.getShallow("fontFamily")||"sans-serif"].join(" "))}function Ys(t,e,i,n,a,o){if("function"==typeof a&&(o=a,a=null),n&&n.isAnimationEnabled()){var r=t?"Update":"",s=n.getShallow("animationDuration"+r),l=n.getShallow("animationEasing"+r),u=n.getShallow("animationDelay"+r);"function"==typeof u&&(u=u(a,n.getAnimationDelayParams?n.getAnimationDelayParams(e,a):null)),"function"==typeof s&&(s=s(a)),0<s?e.animateTo(i,s,u||0,l,o,!!o):(e.stopAnimation(),e.attr(i),o&&o())}else e.stopAnimation(),e.attr(i),o&&o()}function js(t,e,i,n,a){Ys(!0,t,e,i,n,a)}function qs(t,e,i,n,a){Ys(!1,t,e,i,n,a)}function Ks(t,e){for(var i=te([]);t&&t!==e;)ie(i,t.getLocalTransform(),i),t=t.parent;return i}function $s(t,e,i){return e&&!P(e)&&(e=ce.getLocalTransform(e)),i&&(e=re([],e)),bt([],t,e)}function Js(t,e,i){var n=0===e[4]||0===e[5]||0===e[0]?1:Math.abs(2*e[4]/e[0]),a=0===e[4]||0===e[5]||0===e[2]?1:Math.abs(2*e[4]/e[2]),o=["left"===t?-n:"right"===t?n:0,"top"===t?-a:"bottom"===t?a:0];return o=$s(o,e,i),Math.abs(o[0])>Math.abs(o[1])?0<o[0]?"right":"left":0<o[1]?"bottom":"top"}function Qs(t,e,n,i){if(t&&e){var a,o=(a={},t.traverse(function(t){!t.isGroup&&t.anid&&(a[t.anid]=t)}),a);e.traverse(function(t){if(!t.isGroup&&t.anid){var e=o[t.anid];if(e){var i=r(t);t.attr(r(e)),js(t,i,n,t.dataIndex)}}})}function r(t){var e={position:rt(t.position),rotation:t.rotation};return t.shape&&(e.shape=L({},t.shape)),e}}function tl(t,n){return N(t,function(t){var e=t[0];e=is(e,n.x),e=ns(e,n.x+n.width);var i=t[1];return i=is(i,n.y),[e,i=ns(i,n.y+n.height)]})}function el(t,e,i){var n=(e=L({rectHover:!0},e)).style={strokeNoScale:!0};if(i=i||{x:-1,y:-1,width:2,height:2},t)return 0===t.indexOf("image://")?(n.image=t.slice(8),C(n,i),new Yn(e)):gs(t.replace("path://",""),e,i,"center")}function il(t,e,i,n,a){for(var o=0,r=a[a.length-1];o<a.length;o++){var s=a[o];if(nl(t,e,i,n,s[0],s[1],r[0],r[1]))return!0;r=s}}function nl(t,e,i,n,a,o,r,s){var l=i-t,u=n-e,h=r-a,c=s-o,d=al(h,c,l,u);if(function(t){return t<=1e-6&&-1e-6<=t}(d))return!1;var f=t-a,p=e-o,g=al(f,p,l,u)/d;if(g<0||1<g)return!1;var m=al(f,p,h,c)/d;return!(m<0||1<m)}function al(t,e,i,n){return t*n-i*e}fs("circle",Lr),fs("sector",Pr),fs("ring",Nr),fs("polygon",Rr),fs("polyline",zr),fs("rect",Hr),fs("line",Ur),fs("bezierCurve",qr),fs("arc",Kr);var ol=(Object.freeze||Object)({Z2_EMPHASIS_LIFT:os,CACHED_LABEL_STYLE_PROPERTIES:rs,extendShape:ds,extendPath:function(t,e){return function(t,e){return hr.extend(Ar(t,e))}(t,e)},registerShape:fs,getShapeClass:ps,makePath:gs,makeImage:ms,mergePath:ys,resizePath:xs,subPixelOptimizeLine:function(t){return Vr(t.shape,t.shape,t.style),t},subPixelOptimizeRect:function(t){return Gr(t.shape,t.shape,t.style),t},subPixelOptimize:_s,setElementHoverStyle:Ds,setHoverStyle:Os,setAsHighDownDispatcher:Es,isHighDownDispatcher:Rs,getHighlightDigit:zs,setLabelStyle:Bs,modifyLabelStyle:Vs,setTextStyle:Gs,setText:function(t,e,i){var n,a={isRectText:!0};!1===i?n=!0:a.autoColor=i,Fs(t,e,a,n)},getFont:Xs,updateProps:js,initProps:qs,getTransform:Ks,applyTransform:$s,transformDirection:Js,groupTransition:Qs,clipPointsByRect:tl,clipRectByRect:function(t,e){var i=is(t.x,e.x),n=ns(t.x+t.width,e.x+e.width),a=is(t.y,e.y),o=ns(t.y+t.height,e.y+e.height);if(i<=n&&a<=o)return{x:i,y:a,width:n-i,height:o-a}},createIcon:el,linePolygonIntersect:il,lineLineIntersect:nl,Group:Si,Image:Yn,Text:Dr,Circle:Lr,Sector:Pr,Ring:Nr,Polygon:Rr,Polyline:zr,Rect:Hr,Line:Ur,BezierCurve:qr,Arc:Kr,IncrementalDisplayable:ts,CompoundPath:$r,LinearGradient:Jr,RadialGradient:Qr,BoundingRect:bi}),rl=["textStyle","color"],sl={getTextColor:function(t){var e=this.ecModel;return this.getShallow("color")||(!t&&e?e.get(rl):null)},getFont:function(){return Xs({fontStyle:this.getShallow("fontStyle"),fontWeight:this.getShallow("fontWeight"),fontSize:this.getShallow("fontSize"),fontFamily:this.getShallow("fontFamily")},this.ecModel)},getTextRect:function(t){return un(t,this.getFont(),this.getShallow("align"),this.getShallow("verticalAlign")||this.getShallow("baseline"),this.getShallow("padding"),this.getShallow("lineHeight"),this.getShallow("rich"),this.getShallow("truncateText"))}},ll=Xa([["fill","color"],["stroke","borderColor"],["lineWidth","borderWidth"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"],["textPosition"],["textAlign"]]),ul={getItemStyle:function(t,e){var i=ll(this,t,e),n=this.getBorderLineDash();return n&&(i.lineDash=n),i},getBorderLineDash:function(){var t=this.get("borderType");return"solid"===t||null==t?null:"dashed"===t?[5,5]:[1,1]}},hl=b,cl=La();function dl(t,e,i){this.parentModel=e,this.ecModel=i,this.option=t}function fl(t,e,i){for(var n=0;n<e.length&&(!e[n]||null!=(t=t&&"object"==typeof t?t[e[n]]:null));n++);return null==t&&i&&(t=i.get(e)),t}function pl(t,e){var i=cl(t).getParent;return i?i.call(t,e):t.parentModel}dl.prototype={constructor:dl,init:null,mergeOption:function(t){m(this.option,t,!0)},get:function(t,e){return null==t?this.option:fl(this.option,this.parsePath(t),!e&&pl(this,t))},getShallow:function(t,e){var i=this.option,n=null==i?i:i[t],a=!e&&pl(this,t);return null==n&&a&&(n=a.getShallow(t)),n},getModel:function(t,e){var i;return new dl(null==t?this.option:fl(this.option,t=this.parsePath(t)),e=e||(i=pl(this,t))&&i.getModel(t),this.ecModel)},isEmpty:function(){return null==this.option},restoreData:function(){},clone:function(){return new this.constructor(D(this.option))},setReadOnly:function(t){},parsePath:function(t){return"string"==typeof t&&(t=t.split(".")),t},customizeGetParent:function(t){cl(this).getParent=t},isAnimationEnabled:function(){if(!v.node){if(null!=this.option.animation)return!!this.option.animation;if(this.parentModel)return this.parentModel.isAnimationEnabled()}}},Ga(dl),Wa(dl),hl(dl,ja),hl(dl,Ka),hl(dl,sl),hl(dl,ul);var gl=0;function ml(t){return[t||"",gl++,Math.random().toFixed(5)].join("_")}var vl=1e-4;function yl(t,e,i,n){var a=e[1]-e[0],o=i[1]-i[0];if(0==a)return 0==o?i[0]:(i[0]+i[1])/2;if(n)if(0<a){if(t<=e[0])return i[0];if(t>=e[1])return i[1]}else{if(t>=e[0])return i[0];if(t<=e[1])return i[1]}else{if(t===e[0])return i[0];if(t===e[1])return i[1]}return(t-e[0])/a*o+i[0]}function xl(t,e){switch(t){case"center":case"middle":t="50%";break;case"left":case"top":t="0%";break;case"right":case"bottom":t="100%"}return"string"==typeof t?function(t){return t.replace(/^\s+|\s+$/g,"")}(t).match(/%$/)?parseFloat(t)/100*e:parseFloat(t):null==t?NaN:+t}function _l(t,e,i){return null==e&&(e=10),e=Math.min(Math.max(0,e),20),t=(+t).toFixed(e),i?t:+t}function wl(t){return t.sort(function(t,e){return t-e}),t}function bl(t){if(t=+t,isNaN(t))return 0;for(var e=1,i=0;Math.round(t*e)/e!==t;)e*=10,i++;return i}function Sl(t){var e=t.toString(),i=e.indexOf("e");if(0<i){var n=+e.slice(i+1);return n<0?-n:0}var a=e.indexOf(".");return a<0?0:e.length-1-a}function Ml(t,e){var i=Math.log,n=Math.LN10,a=Math.floor(i(t[1]-t[0])/n),o=Math.round(i(Math.abs(e[1]-e[0]))/n),r=Math.min(Math.max(-a+o,0),20);return isFinite(r)?r:20}function Il(t,e,i){if(!t[e])return 0;var n=S(t,function(t,e){return t+(isNaN(e)?0:e)},0);if(0===n)return 0;for(var a=Math.pow(10,i),o=N(t,function(t){return(isNaN(t)?0:t)/n*a*100}),r=100*a,s=N(o,function(t){return Math.floor(t)}),l=S(s,function(t,e){return t+e},0),u=N(o,function(t,e){return t-s[e]});l<r;){for(var h=Number.NEGATIVE_INFINITY,c=null,d=0,f=u.length;d<f;++d)u[d]>h&&(h=u[d],c=d);++s[c],u[c]=0,++l}return s[e]/a}var Al=9007199254740991;function Tl(t){var e=2*Math.PI;return(t%e+e)%e}function Dl(t){return-vl<t&&t<vl}var Cl=/^(?:(\d{4})(?:[-\/](\d{1,2})(?:[-\/](\d{1,2})(?:[T ](\d{1,2})(?::(\d\d)(?::(\d\d)(?:[.,](\d+))?)?)?(Z|[\+\-]\d\d:?\d\d)?)?)?)?)?$/;function Ll(t){if(t instanceof Date)return t;if("string"!=typeof t)return null==t?new Date(NaN):new Date(Math.round(t));var e=Cl.exec(t);if(!e)return new Date(NaN);if(e[8]){var i=+e[4]||0;return"Z"!==e[8].toUpperCase()&&(i-=e[8].slice(0,3)),new Date(Date.UTC(+e[1],+(e[2]||1)-1,+e[3]||1,i,+(e[5]||0),+e[6]||0,+e[7]||0))}return new Date(+e[1],+(e[2]||1)-1,+e[3]||1,+e[4]||0,+(e[5]||0),+e[6]||0,+e[7]||0)}function kl(t){return Math.pow(10,Pl(t))}function Pl(t){if(0===t)return 0;var e=Math.floor(Math.log(t)/Math.LN10);return 10<=t/Math.pow(10,e)&&e++,e}function Nl(t,e){var i=Pl(t),n=Math.pow(10,i),a=t/n;return t=(e?a<1.5?1:a<2.5?2:a<4?3:a<7?5:10:a<1?1:a<2?2:a<3?3:a<5?5:10)*n,-20<=i?+t.toFixed(i<0?-i:0):t}function Ol(t){t.sort(function(t,e){return function t(e,i,n){return e.interval[n]<i.interval[n]||e.interval[n]===i.interval[n]&&(e.close[n]-i.close[n]==(n?-1:1)||!n&&t(e,i,1))}(t,e,0)?-1:1});for(var e=-1/0,i=1,n=0;n<t.length;){for(var a=t[n].interval,o=t[n].close,r=0;r<2;r++)a[r]<=e&&(a[r]=e,o[r]=r?1:1-i),e=a[r],i=o[r];a[0]===a[1]&&o[0]*o[1]!=1?t.splice(n,1):n++}return t}function El(t){return 0<=t-parseFloat(t)}var Rl=(Object.freeze||Object)({linearMap:yl,parsePercent:xl,round:_l,asc:wl,getPrecision:bl,getPrecisionSafe:Sl,getPixelPrecision:Ml,getPercentWithPrecision:Il,MAX_SAFE_INTEGER:Al,remRadian:Tl,isRadianAroundZero:Dl,parseDate:Ll,quantity:kl,quantityExponent:Pl,nice:Nl,quantile:function(t,e){var i=(t.length-1)*e+1,n=Math.floor(i),a=+t[n-1],o=i-n;return o?a+o*(t[n]-a):a},reformIntervals:Ol,isNumeric:El});function zl(t){return isNaN(t)?"-":(t=(t+"").split("."))[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g,"$1,")+(1<t.length?"."+t[1]:"")}function Bl(t,e){return t=(t||"").toLowerCase().replace(/-(.)/g,function(t,e){return e.toUpperCase()}),e&&t&&(t=t.charAt(0).toUpperCase()+t.slice(1)),t}var Vl=X,Gl=/([&<>"'])/g,Fl={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function Wl(t){return null==t?"":(t+"").replace(Gl,function(t,e){return Fl[e]})}function Hl(t,e){return"{"+t+(null==e?"":e)+"}"}var Zl=["a","b","c","d","e","f","g"];function Ul(t,e,i){k(e)||(e=[e]);var n=e.length;if(!n)return"";for(var a=e[0].$vars||[],o=0;o<a.length;o++){var r=Zl[o];t=t.replace(Hl(r),Hl(r,0))}for(var s=0;s<n;s++)for(var l=0;l<a.length;l++){var u=e[s][a[l]];t=t.replace(Hl(Zl[l],s),i?Wl(u):u)}return t}function Xl(i,t,n){return E(t,function(t,e){i=i.replace("{"+e+"}",n?Wl(t):t)}),i}function Yl(t,e){var i=(t=R(t)?{color:t,extraCssText:e}:t||{}).color,n=t.type,a=(e=t.extraCssText,t.renderMode||"html"),o=t.markerId||"X";return i?"html"===a?"subItem"===n?'<span style="display:inline-block;vertical-align:middle;margin-right:8px;margin-left:3px;border-radius:4px;width:4px;height:4px;background-color:'+Wl(i)+";"+(e||"")+'"></span>':'<span style="display:inline-block;margin-right:5px;border-radius:10px;width:10px;height:10px;background-color:'+Wl(i)+";"+(e||"")+'"></span>':{renderMode:a,content:"{marker"+o+"|}  ",style:{color:i}}:""}function jl(t,e){return"0000".substr(0,e-(t+="").length)+t}function ql(t,e,i){"week"!==t&&"month"!==t&&"quarter"!==t&&"half-year"!==t&&"year"!==t||(t="MM-dd\nyyyy");var n=Ll(e),a=i?"UTC":"",o=n["get"+a+"FullYear"](),r=n["get"+a+"Month"]()+1,s=n["get"+a+"Date"](),l=n["get"+a+"Hours"](),u=n["get"+a+"Minutes"](),h=n["get"+a+"Seconds"](),c=n["get"+a+"Milliseconds"]();return t=t.replace("MM",jl(r,2)).replace("M",r).replace("yyyy",o).replace("yy",o%100).replace("dd",jl(s,2)).replace("d",s).replace("hh",jl(l,2)).replace("h",l).replace("mm",jl(u,2)).replace("m",u).replace("ss",jl(h,2)).replace("s",h).replace("SSS",jl(c,3))}function Kl(t){return t?t.charAt(0).toUpperCase()+t.substr(1):t}var $l=fn;var Jl=(Object.freeze||Object)({addCommas:zl,toCamelCase:Bl,normalizeCssArray:Vl,encodeHTML:Wl,formatTpl:Ul,formatTplSimple:Xl,getTooltipMarker:Yl,formatTime:ql,capitalFirst:Kl,truncateText:$l,getTextBoundingRect:function(t){return un(t.text,t.font,t.textAlign,t.textVerticalAlign,t.textPadding,t.textLineHeight,t.rich,t.truncate)},getTextRect:function(t,e,i,n,a,o,r,s){return un(t,e,i,n,a,s,o,r)}}),Ql=E,tu=["left","right","top","bottom","width","height"],eu=[["width","left","right"],["height","top","bottom"]];function iu(h,c,d,f,p){var g=0,m=0;null==f&&(f=1/0),null==p&&(p=1/0);var v=0;c.eachChild(function(t,e){var i,n,a=t.position,o=t.getBoundingRect(),r=c.childAt(e+1),s=r&&r.getBoundingRect();if("horizontal"===h){var l=o.width+(s?-s.x+o.x:0);v=f<(i=g+l)||t.newline?(g=0,i=l,m+=v+d,o.height):Math.max(v,o.height)}else{var u=o.height+(s?-s.y+o.y:0);v=p<(n=m+u)||t.newline?(g+=v+d,m=0,n=u,o.width):Math.max(v,o.width)}t.newline||(a[0]=g,a[1]=m,"horizontal"===h?g=i+d:m=n+d)})}var nu=iu;A(iu,"vertical"),A(iu,"horizontal");function au(t,e,i){i=Vl(i||0);var n=e.width,a=e.height,o=xl(t.left,n),r=xl(t.top,a),s=xl(t.right,n),l=xl(t.bottom,a),u=xl(t.width,n),h=xl(t.height,a),c=i[2]+i[0],d=i[1]+i[3],f=t.aspect;switch(isNaN(u)&&(u=n-s-d-o),isNaN(h)&&(h=a-l-c-r),null!=f&&(isNaN(u)&&isNaN(h)&&(n/a<f?u=.8*n:h=.8*a),isNaN(u)&&(u=f*h),isNaN(h)&&(h=u/f)),isNaN(o)&&(o=n-s-u-d),isNaN(r)&&(r=a-l-h-c),t.left||t.right){case"center":o=n/2-u/2-i[3];break;case"right":o=n-u-d}switch(t.top||t.bottom){case"middle":case"center":r=a/2-h/2-i[0];break;case"bottom":r=a-h-c}o=o||0,r=r||0,isNaN(u)&&(u=n-d-o-(s||0)),isNaN(h)&&(h=a-c-r-(l||0));var p=new bi(o+i[3],r+i[0],u,h);return p.margin=i,p}function ou(t,e,i,n,a){var o=!a||!a.hv||a.hv[0],r=!a||!a.hv||a.hv[1],s=a&&a.boundingMode||"all";if(o||r){var l;if("raw"===s)l="group"===t.type?new bi(0,0,+e.width||0,+e.height||0):t.getBoundingRect();else if(l=t.getBoundingRect(),t.needLocalTransform()){var u=t.getLocalTransform();(l=l.clone()).applyTransform(u)}e=au(C({width:l.width,height:l.height},e),i,n);var h=t.position,c=o?e.x-l.x:0,d=r?e.y-l.y:0;t.attr("position","raw"===s?[c,d]:[h[0]+c,h[1]+d])}}function ru(l,u,t){z(t)||(t={});var h=t.ignoreSize;k(h)||(h=[h,h]);var e=n(eu[0],0),i=n(eu[1],1);function n(t,e){var i={},n=0,a={},o=0;if(Ql(t,function(t){a[t]=l[t]}),Ql(t,function(t){c(u,t)&&(i[t]=a[t]=u[t]),d(i,t)&&n++,d(a,t)&&o++}),h[e])return d(u,t[1])?a[t[2]]=null:d(u,t[2])&&(a[t[1]]=null),a;if(2!==o&&n){if(2<=n)return i;for(var r=0;r<t.length;r++){var s=t[r];if(!c(i,s)&&c(l,s)){i[s]=l[s];break}}return i}return a}function c(t,e){return t.hasOwnProperty(e)}function d(t,e){return null!=t[e]&&"auto"!==t[e]}function a(t,e,i){Ql(t,function(t){e[t]=i[t]})}a(eu[0],l,e),a(eu[1],l,i)}function su(t){return lu({},t)}function lu(e,i){return i&&e&&Ql(tu,function(t){i.hasOwnProperty(t)&&(e[t]=i[t])}),e}var uu,hu,cu,du=La(),fu=dl.extend({type:"component",id:"",name:"",mainType:"",subType:"",componentIndex:0,defaultOption:null,ecModel:null,dependentModels:[],uid:null,layoutMode:null,$constructor:function(t,e,i,n){dl.call(this,t,e,i,n),this.uid=ml("ec_cpt_model")},init:function(t,e,i,n){this.mergeDefaultAndTheme(t,i)},mergeDefaultAndTheme:function(t,e){var i=this.layoutMode,n=i?su(t):{};m(t,e.getTheme().get(this.mainType)),m(t,this.getDefaultOption()),i&&ru(t,n,i)},mergeOption:function(t,e){m(this.option,t,!0);var i=this.layoutMode;i&&ru(this.option,t,i)},optionUpdated:function(t,e){},getDefaultOption:function(){var t=du(this);if(!t.defaultOption){for(var e=[],i=this.constructor;i;){var n=i.prototype.defaultOption;n&&e.push(n),i=i.superClass}for(var a={},o=e.length-1;0<=o;o--)a=m(a,e[o],!0);t.defaultOption=a}return t.defaultOption},getReferringComponents:function(t){return this.ecModel.queryComponents({mainType:t,index:this.get(t+"Index",!0),id:this.get(t+"Id",!0)})}});function pu(t,e){return t[e]||(t[e]={predecessor:[],successor:[]}),t[e]}Ua(fu,{registerWhenExtend:!0}),hu={},(uu=fu).registerSubTypeDefaulter=function(t,e){t=Va(t),hu[t.main]=e},uu.determineSubType=function(t,e){var i=e.type;if(!i){var n=Va(t).main;uu.hasSubTypes(t)&&hu[n]&&(i=hu[n](e))}return i},cu=function(t){var e=[];E(fu.getClassesByMainType(t),function(t){e=e.concat(t.prototype.dependencies||[])}),e=N(e,function(t){return Va(t).main}),"dataset"!==t&&_(e,"dataset")<=0&&e.unshift("dataset");return e},fu.topologicalTravel=function(t,e,i,n){if(t.length){var a=function(e){var a={},o=[];return E(e,function(i){var n=pu(a,i),t=function(t,e){var i=[];return E(t,function(t){0<=_(e,t)&&i.push(t)}),i}(n.originalDeps=cu(i),e);n.entryCount=t.length,0===n.entryCount&&o.push(i),E(t,function(t){_(n.predecessor,t)<0&&n.predecessor.push(t);var e=pu(a,t);_(e.successor,t)<0&&e.successor.push(i)})}),{graph:a,noEntryList:o}}(e),o=a.graph,r=a.noEntryList,s={};for(E(t,function(t){s[t]=!0});r.length;){var l=r.pop(),u=o[l],h=!!s[l];h&&(i.call(n,l,u.originalDeps.slice()),delete s[l]),E(u.successor,h?d:c)}E(s,function(){throw new Error("Circle dependency may exists")})}function c(t){o[t].entryCount--,0===o[t].entryCount&&r.push(t)}function d(t){s[t]=!0,c(t)}},b(fu,{getBoxLayoutParams:function(){return{left:this.get("left"),top:this.get("top"),right:this.get("right"),bottom:this.get("bottom"),width:this.get("width"),height:this.get("height")}}});var gu="";"undefined"!=typeof navigator&&(gu=navigator.platform||"");var mu={color:["#c23531","#2f4554","#61a0a8","#d48265","#91c7ae","#749f83","#ca8622","#bda29a","#6e7074","#546570","#c4ccd3"],gradientColor:["#f6efa6","#d88273","#bf444c"],textStyle:{fontFamily:gu.match(/^Win/)?"Microsoft YaHei":"sans-serif",fontSize:12,fontStyle:"normal",fontWeight:"normal"},blendMode:null,animation:"auto",animationDuration:1e3,animationDurationUpdate:300,animationEasing:"exponentialOut",animationEasingUpdate:"cubicOut",animationThreshold:2e3,progressiveThreshold:3e3,progressive:400,hoverLayerThreshold:3e3,useUTC:!1},vu=La();var yu={clearColorPalette:function(){vu(this).colorIdx=0,vu(this).colorNameMap={}},getColorFromPalette:function(t,e,i){var n=vu(e=e||this),a=n.colorIdx||0,o=n.colorNameMap=n.colorNameMap||{};if(o.hasOwnProperty(t))return o[t];var r=wa(this.get("color",!0)),s=this.get("colorLayer",!0),l=null!=i&&s?function(t,e){for(var i=t.length,n=0;n<i;n++)if(t[n].length>e)return t[n];return t[i-1]}(s,i):r;if((l=l||r)&&l.length){var u=l[a];return t&&(o[t]=u),n.colorIdx=(a+1)%l.length,u}}};function xu(t){var e=t.get("coordinateSystem"),i={coordSysName:e,coordSysDims:[],axisMap:Q(),categoryAxisMap:Q()},n=_u[e];if(n)return n(t,i,i.axisMap,i.categoryAxisMap),i}var _u={cartesian2d:function(t,e,i,n){var a=t.getReferringComponents("xAxis")[0],o=t.getReferringComponents("yAxis")[0];e.coordSysDims=["x","y"],i.set("x",a),i.set("y",o),wu(a)&&(n.set("x",a),e.firstCategoryDimIndex=0),wu(o)&&(n.set("y",o),e.firstCategoryDimIndex=1)},singleAxis:function(t,e,i,n){var a=t.getReferringComponents("singleAxis")[0];e.coordSysDims=["single"],i.set("single",a),wu(a)&&(n.set("single",a),e.firstCategoryDimIndex=0)},polar:function(t,e,i,n){var a=t.getReferringComponents("polar")[0],o=a.findAxisModel("radiusAxis"),r=a.findAxisModel("angleAxis");e.coordSysDims=["radius","angle"],i.set("radius",o),i.set("angle",r),wu(o)&&(n.set("radius",o),e.firstCategoryDimIndex=0),wu(r)&&(n.set("angle",r),e.firstCategoryDimIndex=1)},geo:function(t,e,i,n){e.coordSysDims=["lng","lat"]},parallel:function(t,a,o,r){var s=t.ecModel,e=s.getComponent("parallel",t.get("parallelIndex")),l=a.coordSysDims=e.dimensions.slice();E(e.parallelAxisIndex,function(t,e){var i=s.getComponent("parallelAxis",t),n=l[e];o.set(n,i),wu(i)&&null==a.firstCategoryDimIndex&&(r.set(n,i),a.firstCategoryDimIndex=e)})}};function wu(t){return"category"===t.get("type")}var bu="original",Su="arrayRows",Mu="objectRows",Iu="keyedColumns",Au="unknown",Tu="typedArray",Du="column",Cu="row";function Lu(t){this.fromDataset=t.fromDataset,this.data=t.data||(t.sourceFormat===Iu?{}:[]),this.sourceFormat=t.sourceFormat||Au,this.seriesLayoutBy=t.seriesLayoutBy||Du,this.dimensionsDefine=t.dimensionsDefine,this.encodeDefine=t.encodeDefine&&Q(t.encodeDefine),this.startIndex=t.startIndex||0,this.dimensionsDetectCount=t.dimensionsDetectCount}Lu.seriesDataToSource=function(t){return new Lu({data:t,sourceFormat:V(t)?Tu:bu,fromDataset:!1})},Wa(Lu);var ku=La();function Pu(t){var e=t.option,i=e.data,n=V(i)?Tu:bu,a=!1,o=e.seriesLayoutBy,r=e.sourceHeader,s=e.dimensions,l=function(t){var e=t.option;if(!e.data)return t.ecModel.getComponent("dataset",e.datasetIndex||0)}(t);if(l){var u=l.option;i=u.source,n=ku(l).sourceFormat,a=!0,o=o||u.seriesLayoutBy,null==r&&(r=u.sourceHeader),s=s||u.dimensions}var h=function(t,e,i,n,a){if(!t)return{dimensionsDefine:Nu(a)};var o,r,s,l;if(e===Su)"auto"===n||null==n?Ou(function(t){null!=t&&"-"!==t&&(R(t)?null==r&&(r=1):r=0)},i,t,10):r=n?1:0,a||1!==r||(a=[],Ou(function(t,e){a[e]=null!=t?t:""},i,t)),o=a?a.length:i===Cu?t.length:t[0]?t[0].length:null;else if(e===Mu)a||(a=function(t){var e,i=0;for(;i<t.length&&!(e=t[i++]););if(e){var n=[];return E(e,function(t,e){n.push(e)}),n}}(t),s=!0);else if(e===Iu)a||(a=[],s=!0,E(t,function(t,e){a.push(e)}));else if(e===bu){var u=Ma(t[0]);o=k(u)&&u.length||1}s&&E(a,function(t,e){"name"===(z(t)?t.name:t)&&(l=e)});return{startIndex:r,dimensionsDefine:Nu(a),dimensionsDetectCount:o,potentialNameDimIndex:l}}(i,n,o,r,s),c=e.encode;!c&&l&&(c=function(t,e,i,n,a,o){var r=xu(t),s={},l=[],u=[],h=t.subType,c=Q(["pie","map","funnel"]),d=Q(["line","bar","pictorialBar","scatter","effectScatter","candlestick","boxplot"]);if(r&&null!=d.get(h)){var f=t.ecModel,p=ku(f).datasetMap,g=e.uid+"_"+a,m=p.get(g)||p.set(g,{categoryWayDim:1,valueWayDim:0});E(r.coordSysDims,function(t){if(null==r.firstCategoryDimIndex){var e=m.valueWayDim++;s[t]=e,u.push(e)}else if(r.categoryAxisMap.get(t))s[t]=0,l.push(0);else{e=m.categoryWayDim++;s[t]=e,u.push(e)}})}else if(null!=c.get(h)){for(var v,y=0;y<5&&null==v;y++)Eu(i,n,a,o.dimensionsDefine,o.startIndex,y)||(v=y);if(null!=v){s.value=v;var x=o.potentialNameDimIndex||Math.max(v-1,0);u.push(x),l.push(x)}}return l.length&&(s.itemName=l),u.length&&(s.seriesName=u),s}(t,l,i,n,o,h)),ku(t).source=new Lu({data:i,fromDataset:a,seriesLayoutBy:o,sourceFormat:n,dimensionsDefine:h.dimensionsDefine,startIndex:h.startIndex,dimensionsDetectCount:h.dimensionsDetectCount,encodeDefine:c})}function Nu(t){if(t){var n=Q();return N(t,function(t,e){if(null==(t=L({},z(t)?t:{name:t})).name)return t;t.name+="",null==t.displayName&&(t.displayName=t.name);var i=n.get(t.name);return i?t.name+="-"+i.count++:n.set(t.name,{count:1}),t})}}function Ou(t,e,i,n){if(null==n&&(n=1/0),e===Cu)for(var a=0;a<i.length&&a<n;a++)t(i[a]?i[a][0]:null,a);else{var o=i[0]||[];for(a=0;a<o.length&&a<n;a++)t(o[a],a)}}function Eu(t,e,i,n,a,o){var r,s;if(V(t))return!1;if(n&&(s=z(s=n[o])?s.name:s),e===Su)if(i===Cu){for(var l=t[o],u=0;u<(l||[]).length&&u<5;u++)if(null!=(r=f(l[a+u])))return r}else for(u=0;u<t.length&&u<5;u++){var h=t[a+u];if(h&&null!=(r=f(h[o])))return r}else if(e===Mu){if(!s)return;for(u=0;u<t.length&&u<5;u++){if((c=t[u])&&null!=(r=f(c[s])))return r}}else if(e===Iu){if(!s)return;if(!(l=t[s])||V(l))return!1;for(u=0;u<l.length&&u<5;u++)if(null!=(r=f(l[u])))return r}else if(e===bu)for(u=0;u<t.length&&u<5;u++){var c,d=Ma(c=t[u]);if(!k(d))return!1;if(null!=(r=f(d[o])))return r}function f(t){return(null==t||!isFinite(t)||""===t)&&(!(!R(t)||"-"===t)||void 0)}return!1}var Ru="\0_ec_inner",zu=dl.extend({init:function(t,e,i,n){i=i||{},this.option=null,this._theme=new dl(i),this._optionManager=n},setOption:function(t,e){Y(!(Ru in t),"please use chart.getOption()"),this._optionManager.setOption(t,e),this.resetOption(null)},resetOption:function(t){var e=!1,i=this._optionManager;if(!t||"recreate"===t){var n=i.mountOption("recreate"===t);this.option&&"recreate"!==t?(this.restoreData(),this.mergeOption(n)):function(t){t=t,this.option={},this.option[Ru]=1,this._componentsMap=Q({series:[]}),this._seriesIndices,this._seriesIndicesMap,function(i,t){var n=i.color&&!i.colorLayer;E(t,function(t,e){"colorLayer"===e&&n||fu.hasClass(e)||("object"==typeof t?i[e]=i[e]?m(i[e],t,!1):D(t):null==i[e]&&(i[e]=t))})}(t,this._theme.option),m(t,mu,!1),this.mergeOption(t)}.call(this,n),e=!0}if("timeline"!==t&&"media"!==t||this.restoreData(),!t||"recreate"===t||"timeline"===t){var a=i.getTimelineOption(this);a&&(this.mergeOption(a),e=!0)}if(!t||"recreate"===t||"media"===t){var o=i.getMediaOption(this,this._api);o.length&&E(o,function(t){this.mergeOption(t,e=!0)},this)}return e},mergeOption:function(n){var l=this.option,u=this._componentsMap,i=[];!function(t){ku(t).datasetMap=Q()}(this),E(n,function(t,e){null!=t&&(fu.hasClass(e)?e&&i.push(e):l[e]=null==l[e]?D(t):m(l[e],t,!0))}),fu.topologicalTravel(i,fu.getAllClassMainTypes(),function(r,t){var e=wa(n[r]),i=Ia(u.get(r),e);Aa(i),E(i,function(t,e){var i=t.option;z(i)&&(t.keyInfo.mainType=r,t.keyInfo.subType=function(t,e,i){return e.type?e.type:i?i.subType:fu.determineSubType(t,e)}(r,i,t.exist))});var s=function(e,t){k(t)||(t=t?[t]:[]);var i={};return E(t,function(t){i[t]=(e.get(t)||[]).slice()}),i}(u,t);l[r]=[],u.set(r,[]),E(i,function(t,e){var i=t.exist,n=t.option;if(Y(z(n)||i,"Empty component definition"),n){var a=fu.getClass(r,t.keyInfo.subType,!0);if(i&&i.constructor===a)i.name=t.keyInfo.name,i.mergeOption(n,this),i.optionUpdated(n,!1);else{var o=L({dependentModels:s,componentIndex:e},t.keyInfo);L(i=new a(n,this,this,o),o),i.init(n,this,this,o),i.optionUpdated(null,!0)}}else i.mergeOption({},this),i.optionUpdated({},!1);u.get(r)[e]=i,l[r][e]=i.option},this),"series"===r&&Bu(this,u.get("series"))},this),this._seriesIndicesMap=Q(this._seriesIndices=this._seriesIndices||[])},getOption:function(){var n=D(this.option);return E(n,function(t,e){if(fu.hasClass(e)){for(var i=(t=wa(t)).length-1;0<=i;i--)Da(t[i])&&t.splice(i,1);n[e]=t}}),delete n[Ru],n},getTheme:function(){return this._theme},getComponent:function(t,e){var i=this._componentsMap.get(t);if(i)return i[e||0]},queryComponents:function(t){var e=t.mainType;if(!e)return[];var i,n=t.index,a=t.id,o=t.name,r=this._componentsMap.get(e);if(!r||!r.length)return[];if(null!=n)k(n)||(n=[n]),i=M(N(n,function(t){return r[t]}),function(t){return!!t});else if(null!=a){var s=k(a);i=M(r,function(t){return s&&0<=_(a,t.id)||!s&&t.id===a})}else if(null!=o){var l=k(o);i=M(r,function(t){return l&&0<=_(o,t.name)||!l&&t.name===o})}else i=r.slice();return Vu(i,t)},findComponents:function(t){var e,i,n,a,o,r=t.query,s=t.mainType,l=(i=s+"Index",n=s+"Id",a=s+"Name",!(e=r)||null==e[i]&&null==e[n]&&null==e[a]?null:{mainType:s,index:e[i],id:e[n],name:e[a]}),u=l?this.queryComponents(l):this._componentsMap.get(s);return o=Vu(u,t),t.filter?M(o,t.filter):o},eachComponent:function(t,n,a){var e=this._componentsMap;if("function"==typeof t)a=n,n=t,e.each(function(t,i){E(t,function(t,e){n.call(a,i,t,e)})});else if(R(t))E(e.get(t),n,a);else if(z(t)){E(this.findComponents(t),n,a)}},getSeriesByName:function(e){return M(this._componentsMap.get("series"),function(t){return t.name===e})},getSeriesByIndex:function(t){return this._componentsMap.get("series")[t]},getSeriesByType:function(e){return M(this._componentsMap.get("series"),function(t){return t.subType===e})},getSeries:function(){return this._componentsMap.get("series").slice()},getSeriesCount:function(){return this._componentsMap.get("series").length},eachSeries:function(i,n){E(this._seriesIndices,function(t){var e=this._componentsMap.get("series")[t];i.call(n,e,t)},this)},eachRawSeries:function(t,e){E(this._componentsMap.get("series"),t,e)},eachSeriesByType:function(i,n,a){E(this._seriesIndices,function(t){var e=this._componentsMap.get("series")[t];e.subType===i&&n.call(a,e,t)},this)},eachRawSeriesByType:function(t,e,i){return E(this.getSeriesByType(t),e,i)},isSeriesFiltered:function(t){return null==this._seriesIndicesMap.get(t.componentIndex)},getCurrentSeriesIndices:function(){return(this._seriesIndices||[]).slice()},filterSeries:function(t,e){var i=M(this._componentsMap.get("series"),t,e);Bu(this,i)},restoreData:function(i){var n=this._componentsMap;Bu(this,n.get("series"));var a=[];n.each(function(t,e){a.push(e)}),fu.topologicalTravel(a,fu.getAllClassMainTypes(),function(e,t){E(n.get(e),function(t){"series"===e&&function(t,e){if(e){var i=e.seiresIndex,n=e.seriesId,a=e.seriesName;return null!=i&&t.componentIndex!==i||null!=n&&t.id!==n||null!=a&&t.name!==a}}(t,i)||t.restoreData()})})}});function Bu(t,e){t._seriesIndicesMap=Q(t._seriesIndices=N(e,function(t){return t.componentIndex})||[])}function Vu(t,e){return e.hasOwnProperty("subType")?M(t,function(t){return t.subType===e.subType}):t}b(zu,yu);var Gu=["getDom","getZr","getWidth","getHeight","getDevicePixelRatio","dispatchAction","isDisposed","on","off","getDataURL","getConnectedDataURL","getModel","getOption","getViewOfComponentModel","getViewOfSeriesModel"];function Fu(e){E(Gu,function(t){this[t]=T(e[t],e)},this)}var Wu={};function Hu(){this._coordinateSystems=[]}Hu.prototype={constructor:Hu,create:function(n,a){var o=[];E(Wu,function(t,e){var i=t.create(n,a);o=o.concat(i||[])}),this._coordinateSystems=o},update:function(e,i){E(this._coordinateSystems,function(t){t.update&&t.update(e,i)})},getCoordinateSystems:function(){return this._coordinateSystems.slice()}},Hu.register=function(t,e){Wu[t]=e},Hu.get=function(t){return Wu[t]};var Zu=E,Uu=D,Xu=N,Yu=m,ju=/^(min|max)?(.+)$/;function qu(t){this._api=t,this._timelineOptions=[],this._mediaList=[],this._mediaDefault,this._currentMediaIndices=[],this._optionBackup,this._newBaseOption}function Ku(t,e,i){var o={width:e,height:i,aspectratio:e/i},r=!0;return E(t,function(t,e){var i=e.match(ju);if(i&&i[1]&&i[2]){var n=i[1],a=i[2].toLowerCase();!function(t,e,i){return"min"===i?e<=t:"max"===i?t<=e:t===e}(o[a],t,n)&&(r=!1)}}),r}qu.prototype={constructor:qu,setOption:function(t,e){t&&E(wa(t.series),function(t){t&&t.data&&V(t.data)&&K(t.data)}),t=Uu(t);var i=this._optionBackup,n=function(t,i,n){var e,a,o=[],r=[],s=t.timeline;t.baseOption&&(a=t.baseOption);(s||t.options)&&(a=a||{},o=(t.options||[]).slice());if(t.media){a=a||{};var l=t.media;Zu(l,function(t){t&&t.option&&(t.query?r.push(t):e=e||t)})}a=a||t;a.timeline||(a.timeline=s);return Zu([a].concat(o).concat(N(r,function(t){return t.option})),function(e){Zu(i,function(t){t(e,n)})}),{baseOption:a,timelineOptions:o,mediaDefault:e,mediaList:r}}.call(this,t,e,!i);this._newBaseOption=n.baseOption,i?(function(a,t){Zu(t=t||{},function(t,e){if(null!=t){var i=a[e];if(fu.hasClass(e)){t=wa(t);var n=Ia(i=wa(i),t);a[e]=Xu(n,function(t){return t.option&&t.exist?Yu(t.exist,t.option,!0):t.exist||t.option})}else a[e]=Yu(i,t,!0)}})}(i.baseOption,n.baseOption),n.timelineOptions.length&&(i.timelineOptions=n.timelineOptions),n.mediaList.length&&(i.mediaList=n.mediaList),n.mediaDefault&&(i.mediaDefault=n.mediaDefault)):this._optionBackup=n},mountOption:function(t){var e=this._optionBackup;return this._timelineOptions=Xu(e.timelineOptions,Uu),this._mediaList=Xu(e.mediaList,Uu),this._mediaDefault=Uu(e.mediaDefault),this._currentMediaIndices=[],Uu(t?e.baseOption:this._newBaseOption)},getTimelineOption:function(t){var e,i=this._timelineOptions;if(i.length){var n=t.getComponent("timeline");n&&(e=Uu(i[n.getCurrentIndex()],!0))}return e},getMediaOption:function(t){var e=this._api.getWidth(),i=this._api.getHeight(),n=this._mediaList,a=this._mediaDefault,o=[],r=[];if(!n.length&&!a)return r;for(var s=0,l=n.length;s<l;s++)Ku(n[s].query,e,i)&&o.push(s);return!o.length&&a&&(o=[-1]),o.length&&!function(t,e){return t.join(",")===e.join(",")}(o,this._currentMediaIndices)&&(r=Xu(o,function(t){return Uu(-1===t?a.option:n[t].option)})),this._currentMediaIndices=o,r}};var $u=E,Ju=z,Qu=["areaStyle","lineStyle","nodeStyle","linkStyle","chordStyle","label","labelLine"];function th(t){var e=t&&t.itemStyle;if(e)for(var i=0,n=Qu.length;i<n;i++){var a=Qu[i],o=e.normal,r=e.emphasis;o&&o[a]&&(t[a]=t[a]||{},t[a].normal?m(t[a].normal,o[a]):t[a].normal=o[a],o[a]=null),r&&r[a]&&(t[a]=t[a]||{},t[a].emphasis?m(t[a].emphasis,r[a]):t[a].emphasis=r[a],r[a]=null)}}function eh(t,e,i){if(t&&t[e]&&(t[e].normal||t[e].emphasis)){var n=t[e].normal,a=t[e].emphasis;n&&(i?(t[e].normal=t[e].emphasis=null,C(t[e],n)):t[e]=n),a&&(t.emphasis=t.emphasis||{},t.emphasis[e]=a)}}function ih(t){eh(t,"itemStyle"),eh(t,"lineStyle"),eh(t,"areaStyle"),eh(t,"label"),eh(t,"labelLine"),eh(t,"upperLabel"),eh(t,"edgeLabel")}function nh(t,e){var i=Ju(t)&&t[e],n=Ju(i)&&i.textStyle;if(n)for(var a=0,o=Sa.length;a<o;a++){e=Sa[a];n.hasOwnProperty(e)&&(i[e]=n[e])}}function ah(t){t&&(ih(t),nh(t,"label"),t.emphasis&&nh(t.emphasis,"label"))}function oh(t){return k(t)?t:t?[t]:[]}function rh(t){return(k(t)?t[0]:t)||{}}function sh(e,t){$u(oh(e.series),function(t){Ju(t)&&function(t){if(Ju(t)){th(t),ih(t),nh(t,"label"),nh(t,"upperLabel"),nh(t,"edgeLabel"),t.emphasis&&(nh(t.emphasis,"label"),nh(t.emphasis,"upperLabel"),nh(t.emphasis,"edgeLabel")),(i=t.markPoint)&&(th(i),ah(i)),(n=t.markLine)&&(th(n),ah(n));var e=t.markArea;e&&ah(e);var i,n,a=t.data;if("graph"===t.type){a=a||t.nodes;var o=t.links||t.edges;if(o&&!V(o))for(var r=0;r<o.length;r++)ah(o[r]);E(t.categories,function(t){ih(t)})}if(a&&!V(a))for(r=0;r<a.length;r++)ah(a[r]);if((i=t.markPoint)&&i.data){var s=i.data;for(r=0;r<s.length;r++)ah(s[r])}if((n=t.markLine)&&n.data){var l=n.data;for(r=0;r<l.length;r++)k(l[r])?(ah(l[r][0]),ah(l[r][1])):ah(l[r])}"gauge"===t.type?(nh(t,"axisLabel"),nh(t,"title"),nh(t,"detail")):"treemap"===t.type?(eh(t.breadcrumb,"itemStyle"),E(t.levels,function(t){ih(t)})):"tree"===t.type&&ih(t.leaves)}}(t)});var i=["xAxis","yAxis","radiusAxis","angleAxis","singleAxis","parallelAxis","radar"];t&&i.push("valueAxis","categoryAxis","logAxis","timeAxis"),$u(i,function(t){$u(oh(e[t]),function(t){t&&(nh(t,"axisLabel"),nh(t.axisPointer,"label"))})}),$u(oh(e.parallel),function(t){var e=t&&t.parallelAxisDefault;nh(e,"axisLabel"),nh(e&&e.axisPointer,"label")}),$u(oh(e.calendar),function(t){eh(t,"itemStyle"),nh(t,"dayLabel"),nh(t,"monthLabel"),nh(t,"yearLabel")}),$u(oh(e.radar),function(t){nh(t,"name")}),$u(oh(e.geo),function(t){Ju(t)&&(ah(t),$u(oh(t.regions),function(t){ah(t)}))}),$u(oh(e.timeline),function(t){ah(t),eh(t,"label"),eh(t,"itemStyle"),eh(t,"controlStyle",!0);var e=t.data;k(e)&&E(e,function(t){z(t)&&(eh(t,"label"),eh(t,"itemStyle"))})}),$u(oh(e.toolbox),function(t){eh(t,"iconStyle"),$u(t.feature,function(t){eh(t,"iconStyle")})}),nh(rh(e.axisPointer),"label"),nh(rh(e.tooltip).axisPointer,"label")}function lh(e){E(uh,function(t){t[0]in e&&!(t[1]in e)&&(e[t[1]]=e[t[0]])})}var uh=[["x","left"],["y","top"],["x2","right"],["y2","bottom"]],hh=["grid","geo","parallel","legend","toolbox","title","visualMap","dataZoom","timeline"],ch=function(i,t){sh(i,t),i.series=wa(i.series),E(i.series,function(t){if(z(t)){var e=t.type;if("line"===e)null!=t.clipOverflow&&(t.clip=t.clipOverflow);else if("pie"===e||"gauge"===e)null!=t.clockWise&&(t.clockwise=t.clockWise);else if("gauge"===e){var i=function(t,e){e=e.split(",");for(var i=t,n=0;n<e.length&&null!=(i=i&&i[e[n]]);n++);return i}(t,"pointer.color");null!=i&&function(t,e,i,n){e=e.split(",");for(var a,o=t,r=0;r<e.length-1;r++)null==o[a=e[r]]&&(o[a]={}),o=o[a];!n&&null!=o[e[r]]||(o[e[r]]=i)}(t,"itemStyle.color",i)}lh(t)}}),i.dataRange&&(i.visualMap=i.dataRange),E(hh,function(t){var e=i[t];e&&(k(e)||(e=[e]),E(e,function(t){lh(t)}))})};function dh(m){E(m,function(h,c){var d=[],f=[NaN,NaN],t=[h.stackResultDimension,h.stackedOverDimension],p=h.data,g=h.isStackedByIndex,e=p.map(t,function(t,e,i){var n,a,o=p.get(h.stackedDimension,i);if(isNaN(o))return f;g?a=p.getRawIndex(i):n=p.get(h.stackedByDimension,i);for(var r=NaN,s=c-1;0<=s;s--){var l=m[s];if(g||(a=l.data.rawIndexOf(l.stackedByDimension,n)),0<=a){var u=l.data.getByRawIndex(l.stackResultDimension,a);if(0<=o&&0<u||o<=0&&u<0){o+=u,r=u;break}}}return d[0]=o,d[1]=r,d});p.hostModel.setData(e),h.data=e})}function fh(t,e){Lu.isInstance(t)||(t=Lu.seriesDataToSource(t)),this._source=t;var i=this._data=t.data,n=t.sourceFormat;n===Tu&&(this._offset=0,this._dimSize=e,this._data=i),L(this,gh[n===Su?n+"_"+t.seriesLayoutBy:n])}var ph=fh.prototype;ph.pure=!1;var gh={arrayRows_column:{pure:ph.persistent=!0,count:function(){return Math.max(0,this._data.length-this._source.startIndex)},getItem:function(t){return this._data[t+this._source.startIndex]},appendData:yh},arrayRows_row:{pure:!0,count:function(){var t=this._data[0];return t?Math.max(0,t.length-this._source.startIndex):0},getItem:function(t){t+=this._source.startIndex;for(var e=[],i=this._data,n=0;n<i.length;n++){var a=i[n];e.push(a?a[t]:null)}return e},appendData:function(){throw new Error('Do not support appendData when set seriesLayoutBy: "row".')}},objectRows:{pure:!0,count:mh,getItem:vh,appendData:yh},keyedColumns:{pure:!0,count:function(){var t=this._source.dimensionsDefine[0].name,e=this._data[t];return e?e.length:0},getItem:function(t){for(var e=[],i=this._source.dimensionsDefine,n=0;n<i.length;n++){var a=this._data[i[n].name];e.push(a?a[t]:null)}return e},appendData:function(t){var a=this._data;E(t,function(t,e){for(var i=a[e]||(a[e]=[]),n=0;n<(t||[]).length;n++)i.push(t[n])})}},original:{count:mh,getItem:vh,appendData:yh},typedArray:{persistent:!(ph.getSource=function(){return this._source}),pure:!0,count:function(){return this._data?this._data.length/this._dimSize:0},getItem:function(t,e){t-=this._offset,e=e||[];for(var i=this._dimSize*t,n=0;n<this._dimSize;n++)e[n]=this._data[i+n];return e},appendData:function(t){this._data=t},clean:function(){this._offset+=this.count(),this._data=null}}};function mh(){return this._data.length}function vh(t){return this._data[t]}function yh(t){for(var e=0;e<t.length;e++)this._data.push(t[e])}var xh={arrayRows:_h,objectRows:function(t,e,i,n){return null!=i?t[n]:t},keyedColumns:_h,original:function(t,e,i,n){var a=Ma(t);return null!=i&&a instanceof Array?a[i]:a},typedArray:_h};function _h(t,e,i,n){return null!=i?t[i]:t}var wh={arrayRows:bh,objectRows:function(t,e,i,n){return Sh(t[e],this._dimensionInfos[e])},keyedColumns:bh,original:function(t,e,i,n){var a=t&&(null==t.value?t:t.value);return!this._rawData.pure&&function(t){return ya(t)&&!(t instanceof Array)}(t)&&(this.hasItemOption=!0),Sh(a instanceof Array?a[n]:a,this._dimensionInfos[e])},typedArray:function(t,e,i,n){return t[n]}};function bh(t,e,i,n){return Sh(t[n],this._dimensionInfos[e])}function Sh(t,e){var i=e&&e.type;if("ordinal"!==i)return"time"===i&&"number"!=typeof t&&null!=t&&"-"!==t&&(t=+Ll(t)),null==t||""===t?NaN:+t;var n=e&&e.ordinalMeta;return n?n.parseAndCollect(t):t}function Mh(t,e,i){if(t){var n=t.getRawDataItem(e);if(null!=n){var a,o,r=t.getProvider().getSource().sourceFormat,s=t.getDimensionInfo(i);return s&&(a=s.name,o=s.index),xh[r](n,e,o,a)}}}function Ih(t,e,i){if(t){var n=t.getProvider().getSource().sourceFormat;if(n===bu||n===Mu){var a=t.getRawDataItem(e);return n!==bu||z(a)||(a=null),a?a[i]:void 0}}}var Ah=/\{@(.+?)\}/g,Th={getDataParams:function(t,e){var i=this.getData(e),n=this.getRawValue(t,e),a=i.getRawIndex(t),o=i.getName(t),r=i.getRawDataItem(t),s=i.getItemVisual(t,"color"),l=i.getItemVisual(t,"borderColor"),u=this.ecModel.getComponent("tooltip"),h=Ea(u&&u.get("renderMode")),c=this.mainType,d="series"===c,f=i.userOutput;return{componentType:c,componentSubType:this.subType,componentIndex:this.componentIndex,seriesType:d?this.subType:null,seriesIndex:this.seriesIndex,seriesId:d?this.id:null,seriesName:d?this.name:null,name:o,dataIndex:a,data:r,dataType:e,value:n,color:s,borderColor:l,dimensionNames:f?f.dimensionNames:null,encode:f?f.encode:null,marker:Yl({color:s,renderMode:h}),$vars:["seriesName","name","value"]}},getFormattedLabel:function(n,t,e,i,a){t=t||"normal";var o=this.getData(e),r=o.getItemModel(n),s=this.getDataParams(n,e);null!=i&&s.value instanceof Array&&(s.value=s.value[i]);var l=r.get("normal"===t?[a||"label","formatter"]:[t,a||"label","formatter"]);return"function"==typeof l?(s.status=t,s.dimensionIndex=i,l(s)):"string"==typeof l?Ul(l,s).replace(Ah,function(t,e){var i=e.length;return"["===e.charAt(0)&&"]"===e.charAt(i-1)&&(e=+e.slice(1,i-1)),Mh(o,n,e)}):void 0},getRawValue:function(t,e){return Mh(this.getData(e),t)},formatTooltip:function(){}};function Dh(t){return new Ch(t)}function Ch(t){t=t||{},this._reset=t.reset,this._plan=t.plan,this._count=t.count,this._onDirty=t.onDirty,this._dirty=!0,this.context}var Lh=Ch.prototype;Lh.perform=function(t){var e,i=this._upstream,n=t&&t.skip;if(this._dirty&&i){var a=this.context;a.data=a.outputData=i.context.outputData}this.__pipeline&&(this.__pipeline.currentTask=this),this._plan&&!n&&(e=this._plan(this.context));var o,r=h(this._modBy),s=this._modDataCount||0,l=h(t&&t.modBy),u=t&&t.modDataCount||0;function h(t){return 1<=t||(t=1),t}r===l&&s===u||(e="reset"),!this._dirty&&"reset"!==e||(this._dirty=!1,o=function(t,e){var i,n;t._dueIndex=t._outputDueEnd=t._dueEnd=0,t._settedOutputEnd=null,!e&&t._reset&&((i=t._reset(t.context))&&i.progress&&(n=i.forceFirstProgress,i=i.progress),k(i)&&!i.length&&(i=null));t._progress=i,t._modBy=t._modDataCount=null;var a=t._downstream;return a&&a.dirty(),n}(this,n)),this._modBy=l,this._modDataCount=u;var c=t&&t.step;if(this._dueEnd=i?i._outputDueEnd:this._count?this._count(this.context):1/0,this._progress){var d=this._dueIndex,f=Math.min(null!=c?this._dueIndex+c:1/0,this._dueEnd);if(!n&&(o||d<f)){var p=this._progress;if(k(p))for(var g=0;g<p.length;g++)Gh(this,p[g],d,f,l,u);else Gh(this,p,d,f,l,u)}this._dueIndex=f;var m=null!=this._settedOutputEnd?this._settedOutputEnd:f;this._outputDueEnd=m}else this._dueIndex=this._outputDueEnd=null!=this._settedOutputEnd?this._settedOutputEnd:this._dueEnd;return this.unfinished()};var kh,Ph,Nh,Oh,Eh,Rh,zh=Rh={reset:function(t,e,i,n){Ph=t,kh=e,Nh=i,Oh=n,Eh=Math.ceil(Oh/Nh),Rh.next=1<Nh&&0<Oh?Vh:Bh}};function Bh(){return Ph<kh?Ph++:null}function Vh(){var t=Ph%Eh*Nh+Math.ceil(Ph/Eh),e=kh<=Ph?null:t<Oh?t:Ph;return Ph++,e}function Gh(t,e,i,n,a,o){zh.reset(i,n,a,o),t._callingProgress=e,t._callingProgress({start:i,end:n,count:n-i,next:zh.next},t.context)}Lh.dirty=function(){this._dirty=!0,this._onDirty&&this._onDirty(this.context)},Lh.unfinished=function(){return this._progress&&this._dueIndex<this._dueEnd},Lh.pipe=function(t){this._downstream===t&&!this._dirty||((this._downstream=t)._upstream=this,t.dirty())},Lh.dispose=function(){this._disposed||(this._upstream&&(this._upstream._downstream=null),this._downstream&&(this._downstream._upstream=null),this._dirty=!1,this._disposed=!0)},Lh.getUpstream=function(){return this._upstream},Lh.getDownstream=function(){return this._downstream},Lh.setOutputEnd=function(t){this._outputDueEnd=this._settedOutputEnd=t};var Fh=La(),Wh=fu.extend({type:"series.__base__",seriesIndex:0,coordinateSystem:null,defaultOption:null,legendDataProvider:null,visualColorAccessPath:"itemStyle.color",visualBorderColorAccessPath:"itemStyle.borderColor",layoutMode:null,init:function(t,e,i,n){this.seriesIndex=this.componentIndex,this.dataTask=Dh({count:Zh,reset:Uh}),this.dataTask.context={model:this},this.mergeDefaultAndTheme(t,i),Pu(this);var a=this.getInitialData(t,i);Yh(a,this),this.dataTask.context.data=a,Fh(this).dataBeforeProcessed=a,Hh(this)},mergeDefaultAndTheme:function(t,e){var i=this.layoutMode,n=i?su(t):{},a=this.subType;fu.hasClass(a)&&(a+="Series"),m(t,e.getTheme().get(this.subType)),m(t,this.getDefaultOption()),ba(t,"label",["show"]),this.fillDataTextStyle(t.data),i&&ru(t,n,i)},mergeOption:function(t,e){t=m(this.option,t,!0),this.fillDataTextStyle(t.data);var i=this.layoutMode;i&&ru(this.option,t,i),Pu(this);var n=this.getInitialData(t,e);Yh(n,this),this.dataTask.dirty(),this.dataTask.context.data=n,Fh(this).dataBeforeProcessed=n,Hh(this)},fillDataTextStyle:function(t){if(t&&!V(t))for(var e=["show"],i=0;i<t.length;i++)t[i]&&t[i].label&&ba(t[i],"label",e)},getInitialData:function(){},appendData:function(t){this.getRawData().appendData(t.data)},getData:function(t){var e=qh(this);if(e){var i=e.context.data;return null==t?i:i.getLinkedData(t)}return Fh(this).data},setData:function(t){var e=qh(this);if(e){var i=e.context;i.data!==t&&e.modifyOutputEnd&&e.setOutputEnd(t.count()),i.outputData=t,e!==this.dataTask&&(i.data=t)}Fh(this).data=t},getSource:function(){return function(t){return ku(t).source}(this)},getRawData:function(){return Fh(this).dataBeforeProcessed},getBaseAxis:function(){var t=this.coordinateSystem;return t&&t.getBaseAxis&&t.getBaseAxis()},formatTooltip:function(a,h,t,c){var d=this,e="html"===(c=c||"html")?"<br/>":"\n",f="richText"===c,p={},g=0;function i(t){return{renderMode:c,content:Wl(zl(t)),style:p}}var m=this.getData(),o=m.mapDimension("defaultedTooltip",!0),n=o.length,r=this.getRawValue(a),s=k(r),v=m.getItemVisual(a,"color");z(v)&&v.colorStops&&(v=(v.colorStops[0]||{}).color),v=v||"transparent";var l=(1<n||s&&!n?function(t){var l=S(t,function(t,e,i){var n=m.getDimensionInfo(i);return t|(n&&!1!==n.tooltip&&null!=n.displayName)},0),u=[];function e(t,e){var i=m.getDimensionInfo(e);if(i&&!1!==i.otherDims.tooltip){var n=i.type,a="sub"+d.seriesIndex+"at"+g,o=Yl({color:v,type:"subItem",renderMode:c,markerId:a}),r="string"==typeof o?o:o.content,s=(l?r+Wl(i.displayName||"-")+": ":"")+Wl("ordinal"===n?t+"":"time"===n?h?"":ql("yyyy/MM/dd hh:mm:ss",t):zl(t));s&&u.push(s),f&&(p[a]=v,++g)}}o.length?E(o,function(t){e(Mh(m,a,t),t)}):E(t,e);var i=l?f?"\n":"<br/>":"",n=i+u.join(i||", ");return{renderMode:c,content:n,style:p}}(r):i(n?Mh(m,a,o[0]):s?r[0]:r)).content,u=d.seriesIndex+"at"+g,y=Yl({color:v,type:"item",renderMode:c,markerId:u});p[u]=v,++g;var x=m.getName(a),_=this.name;Ta(this)||(_=""),_=_?Wl(_)+(h?": ":e):"";var w="string"==typeof y?y:y.content;return{html:h?w+_+l:_+w+(x?Wl(x)+": "+l:l),markers:p}},isAnimationEnabled:function(){if(v.node)return!1;var t=this.getShallow("animation");return t&&this.getData().count()>this.getShallow("animationThreshold")&&(t=!1),t},restoreData:function(){this.dataTask.dirty()},getColorFromPalette:function(t,e,i){var n=this.ecModel,a=yu.getColorFromPalette.call(this,t,e,i);return a=a||n.getColorFromPalette(t,e,i)},coordDimToDataDim:function(t){return this.getRawData().mapDimension(t,!0)},getProgressive:function(){return this.get("progressive")},getProgressiveThreshold:function(){return this.get("progressiveThreshold")},getAxisTooltipData:null,getTooltipPosition:null,pipeTask:null,preventIncremental:null,pipelineContext:null});function Hh(t){var e=t.name;Ta(t)||(t.name=function(t){var i=t.getRawData(),e=i.mapDimension("seriesName",!0),n=[];return E(e,function(t){var e=i.getDimensionInfo(t);e.displayName&&n.push(e.displayName)}),n.join(" ")}(t)||e)}function Zh(t){return t.model.getRawData().count()}function Uh(t){var e=t.model;return e.setData(e.getRawData().cloneShallow()),Xh}function Xh(t,e){t.end>e.outputData.count()&&e.model.getRawData().cloneShallow(e.outputData)}function Yh(e,i){E(e.CHANGABLE_METHODS,function(t){e.wrapMethod(t,A(jh,i))})}function jh(t){var e=qh(t);e&&e.setOutputEnd(this.count())}function qh(t){var e=(t.ecModel||{}).scheduler,i=e&&e.getPipeline(t.uid);if(i){var n=i.currentTask;if(n){var a=n.agentStubMap;a&&(n=a.get(t.uid))}return n}}b(Wh,Th),b(Wh,yu);var Kh=function(){this.group=new Si,this.uid=ml("viewComponent")};Kh.prototype={constructor:Kh,init:function(t,e){},render:function(t,e,i,n){},dispose:function(){},filterForExposedEvent:null};var $h=Kh.prototype;$h.updateView=$h.updateLayout=$h.updateVisual=function(t,e,i,n){},Ga(Kh),Ua(Kh,{registerWhenExtend:!0});function Jh(){var s=La();return function(t){var e=s(t),i=t.pipelineContext,n=e.large,a=e.progressiveRender,o=e.large=i.large,r=e.progressiveRender=i.progressiveRender;return!!(n^o||a^r)&&"reset"}}var Qh=La(),tc=Jh();function ec(){this.group=new Si,this.uid=ml("viewChart"),this.renderTask=Dh({plan:oc,reset:rc}),this.renderTask.context={view:this}}var ic=ec.prototype={type:"chart",init:function(t,e){},render:function(t,e,i,n){},highlight:function(t,e,i,n){ac(t.getData(),n,"emphasis")},downplay:function(t,e,i,n){ac(t.getData(),n,"normal")},remove:function(t,e){this.group.removeAll()},dispose:function(){},incrementalPrepareRender:null,incrementalRender:null,updateTransform:null,filterForExposedEvent:null};function nc(t,e,i){if(t&&(t.trigger(e,i),t.isGroup&&!Rs(t)))for(var n=0,a=t.childCount();n<a;n++)nc(t.childAt(n),e,i)}function ac(e,t,i){var n=Ca(e,t),a=t&&null!=t.highlightKey?zs(t.highlightKey):null;null!=n?E(wa(n),function(t){nc(e.getItemGraphicEl(t),i,a)}):e.eachItemGraphicEl(function(t){nc(t,i,a)})}function oc(t){return tc(t.model)}function rc(t){var e=t.model,i=t.ecModel,n=t.api,a=t.payload,o=e.pipelineContext.progressiveRender,r=t.view,s=a&&Qh(a).updateMethod,l=o?"incrementalPrepareRender":s&&r[s]?s:"render";return"render"!==l&&r[l](e,i,n,a),sc[l]}ic.updateView=ic.updateLayout=ic.updateVisual=function(t,e,i,n){this.render(t,e,i,n)},Ga(ec),Ua(ec,{registerWhenExtend:!0}),ec.markUpdateMethod=function(t,e){Qh(t).updateMethod=e};var sc={incrementalPrepareRender:{progress:function(t,e){e.view.incrementalRender(t,e.model,e.ecModel,e.api,e.payload)}},render:{forceFirstProgress:!0,progress:function(t,e){e.view.render(e.model,e.ecModel,e.api,e.payload)}}},lc="\0__throttleOriginMethod",uc="\0__throttleRate",hc="\0__throttleType";function cc(t,i,n){var a,o,r,s,l,u=0,h=0,c=null;function d(){h=(new Date).getTime(),c=null,t.apply(r,s||[])}i=i||0;function e(){a=(new Date).getTime(),r=this,s=arguments;var t=l||i,e=l||n;l=null,o=a-(e?u:h)-t,clearTimeout(c),e?c=setTimeout(d,t):0<=o?d():c=setTimeout(d,-o),u=a}return e.clear=function(){c&&(clearTimeout(c),c=null)},e.debounceNextCall=function(t){l=t},e}function dc(t,e,i,n){var a=t[e];if(a){var o=a[lc]||a,r=a[hc];if(a[uc]!==i||r!==n){if(null==i||!n)return t[e]=o;(a=t[e]=cc(o,i,"debounce"===n))[lc]=o,a[hc]=n,a[uc]=i}return a}}function fc(t,e){var i=t[e];i&&i[lc]&&(t[e]=i[lc])}var pc={createOnAllSeries:!0,performRawSeries:!0,reset:function(e,t){var i=e.getData(),o=(e.visualColorAccessPath||"itemStyle.color").split("."),n=e.get(o)||e.getColorFromPalette(e.name,null,t.getSeriesCount());i.setVisual("color",n);var r=(e.visualBorderColorAccessPath||"itemStyle.borderColor").split("."),a=e.get(r);if(i.setVisual("borderColor",a),!t.isSeriesFiltered(e)){"function"!=typeof n||n instanceof jr||i.each(function(t){i.setItemVisual(t,"color",n(e.getDataParams(t)))});return{dataEach:i.hasItemOption?function(t,e){var i=t.getItemModel(e),n=i.get(o,!0),a=i.get(r,!0);null!=n&&t.setItemVisual(e,"color",n),null!=a&&t.setItemVisual(e,"borderColor",a)}:null}}}},gc={legend:{selector:{all:"全选",inverse:"反选"}},toolbox:{brush:{title:{rect:"矩形选择",polygon:"圈选",lineX:"横向选择",lineY:"纵向选择",keep:"保持选择",clear:"清除选择"}},dataView:{title:"数据视图",lang:["数据视图","关闭","刷新"]},dataZoom:{title:{zoom:"区域缩放",back:"区域缩放还原"}},magicType:{title:{line:"切换为折线图",bar:"切换为柱状图",stack:"切换为堆叠",tiled:"切换为平铺"}},restore:{title:"还原"},saveAsImage:{title:"保存为图片",lang:["右键另存为图片"]}},series:{typeNames:{pie:"饼图",bar:"柱状图",line:"折线图",scatter:"散点图",effectScatter:"涟漪散点图",radar:"雷达图",tree:"树图",treemap:"矩形树图",boxplot:"箱型图",candlestick:"K线图",k:"K线图",heatmap:"热力图",map:"地图",parallel:"平行坐标图",lines:"线图",graph:"关系图",sankey:"桑基图",funnel:"漏斗图",gauge:"仪表盘图",pictorialBar:"象形柱图",themeRiver:"主题河流图",sunburst:"旭日图"}},aria:{general:{withTitle:"这是一个关于“{title}”的图表。",withoutTitle:"这是一个图表,"},series:{single:{prefix:"",withName:"图表类型是{seriesType},表示{seriesName}。",withoutName:"图表类型是{seriesType}。"},multiple:{prefix:"它由{seriesCount}个图表系列组成。",withName:"第{seriesId}个系列是一个表示{seriesName}的{seriesType},",withoutName:"第{seriesId}个系列是一个{seriesType},",separator:{middle:";",end:"。"}}},data:{allData:"其数据是——",partialData:"其中,前{displayCnt}项是——",withName:"{name}的数据是{value}",withoutName:"{value}",separator:{middle:",",end:""}}}},mc=function(t,e){var o=e.getModel("aria");if(o.get("show"))if(o.get("description"))t.setAttribute("aria-label",o.get("description"));else{var h=0;e.eachSeries(function(t,e){++h},this);var i,c=o.get("data.maxCount")||10,n=o.get("series.maxCount")||10,d=Math.min(h,n);if(!(h<1)){var a=function(){var t=e.getModel("title").option;t&&t.length&&(t=t[0]);return t&&t.text}();i=a?p(g("general.withTitle"),{title:a}):g("general.withoutTitle");var f=[];i+=p(g(1<h?"series.multiple.prefix":"series.single.prefix"),{seriesCount:h}),e.eachSeries(function(t,e){if(e<d){var i,n=t.get("name"),a="series."+(1<h?"multiple":"single")+".";i=p(i=g(n?a+"withName":a+"withoutName"),{seriesId:t.seriesIndex,seriesName:t.get("name"),seriesType:function(t){return gc.series.typeNames[t]||"自定义图"}(t.subType)});var o=t.getData();(window.data=o).count()>c?i+=p(g("data.partialData"),{displayCnt:c}):i+=g("data.allData");for(var r=[],s=0;s<o.count();s++)if(s<c){var l=o.getName(s),u=Mh(o,s);r.push(p(g(l?"data.withName":"data.withoutName"),{name:l,value:u}))}i+=r.join(g("data.separator.middle"))+g("data.separator.end"),f.push(i)}}),i+=f.join(g("series.multiple.separator.middle"))+g("series.multiple.separator.end"),t.setAttribute("aria-label",i)}}function p(t,e){if("string"!=typeof t)return t;var i=t;return E(e,function(t,e){i=i.replace(new RegExp("\\{\\s*"+e+"\\s*\\}","g"),t)}),i}function g(t){var e=o.get(t);if(null!=e)return e;for(var i=t.split("."),n=gc.aria,a=0;a<i.length;++a)n=n[i[a]];return n}},vc=Math.PI;function yc(t,e,i,n){this.ecInstance=t,this.api=e,this.unfinished;i=this._dataProcessorHandlers=i.slice(),n=this._visualHandlers=n.slice();this._allHandlers=i.concat(n),this._stageTaskMap=Q()}var xc=yc.prototype;function _c(l,t,u,h,c){var d;function f(t,e){return t.setDirty&&(!t.dirtyMap||t.dirtyMap.get(e.__pipeline.id))}c=c||{},E(t,function(n,t){if(!c.visualType||c.visualType===n.visualType){var e=l._stageTaskMap.get(n.uid),i=e.seriesTaskMap,a=e.overallTask;if(a){var o,r=a.agentStubMap;r.each(function(t){f(c,t)&&(t.dirty(),o=!0)}),o&&a.dirty(),wc(a,h);var s=l.getPerformArgs(a,c.block);r.each(function(t){t.perform(s)}),d|=a.perform(s)}else i&&i.each(function(t,e){f(c,t)&&t.dirty();var i=l.getPerformArgs(t,c.block);i.skip=!n.performRawSeries&&u.isSeriesFiltered(t.context.model),wc(t,h),d|=t.perform(i)})}}),l.unfinished|=d}xc.restoreData=function(t,e){t.restoreData(e),this._stageTaskMap.each(function(t){var e=t.overallTask;e&&e.dirty()})},xc.getPerformArgs=function(t,e){if(t.__pipeline){var i=this._pipelineMap.get(t.__pipeline.id),n=i.context,a=!e&&i.progressiveEnabled&&(!n||n.progressiveRender)&&t.__idxInPipeline>i.blockIndex?i.step:null,o=n&&n.modDataCount;return{step:a,modBy:null!=o?Math.ceil(o/a):null,modDataCount:o}}},xc.getPipeline=function(t){return this._pipelineMap.get(t)},xc.updateStreamModes=function(t,e){var i=this._pipelineMap.get(t.uid),n=t.getData().count(),a=i.progressiveEnabled&&e.incrementalPrepareRender&&n>=i.threshold,o=t.get("large")&&n>=t.get("largeThreshold"),r="mod"===t.get("progressiveChunkMode")?n:null;t.pipelineContext=i.context={progressiveRender:a,modDataCount:r,large:o}},xc.restorePipelines=function(t){var n=this,a=n._pipelineMap=Q();t.eachSeries(function(t){var e=t.getProgressive(),i=t.uid;a.set(i,{id:i,head:null,tail:null,threshold:t.getProgressiveThreshold(),progressiveEnabled:e&&!(t.preventIncremental&&t.preventIncremental()),blockIndex:-1,step:Math.round(e||700),count:0}),kc(n,t,t.dataTask)})},xc.prepareStageTasks=function(){var i=this._stageTaskMap,n=this.ecInstance.getModel(),a=this.api;E(this._allHandlers,function(t){var e=i.get(t.uid)||i.set(t.uid,[]);t.reset&&function(n,a,t,o,r){var s=t.seriesTaskMap||(t.seriesTaskMap=Q()),e=a.seriesType,i=a.getTargetSeries;a.createOnAllSeries?o.eachRawSeries(l):e?o.eachRawSeriesByType(e,l):i&&i(o,r).each(l);function l(t){var e=t.uid,i=s.get(e)||s.set(e,Dh({plan:Ac,reset:Tc,count:Lc}));i.context={model:t,ecModel:o,api:r,useClearVisual:a.isVisual&&!a.isLayout,plan:a.plan,reset:a.reset,scheduler:n},kc(n,t,i)}var u=n._pipelineMap;s.each(function(t,e){u.get(e)||(t.dispose(),s.removeKey(e))})}(this,t,e,n,a),t.overallReset&&function(n,t,e,i,a){var o=e.overallTask=e.overallTask||Dh({reset:bc});o.context={ecModel:i,api:a,overallReset:t.overallReset,scheduler:n};var r=o.agentStubMap=o.agentStubMap||Q(),s=t.seriesType,l=t.getTargetSeries,u=!0,h=t.modifyOutputEnd;s?i.eachRawSeriesByType(s,c):l?l(i,a).each(c):(u=!1,E(i.getSeries(),c));function c(t){var e=t.uid,i=r.get(e);i||(i=r.set(e,Dh({reset:Sc,onDirty:Ic})),o.dirty()),i.context={model:t,overallProgress:u,modifyOutputEnd:h},i.agent=o,i.__block=u,kc(n,t,i)}var d=n._pipelineMap;r.each(function(t,e){d.get(e)||(t.dispose(),o.dirty(),r.removeKey(e))})}(this,t,e,n,a)},this)},xc.prepareView=function(t,e,i,n){var a=t.renderTask,o=a.context;o.model=e,o.ecModel=i,o.api=n,a.__block=!t.incrementalPrepareRender,kc(this,e,a)},xc.performDataProcessorTasks=function(t,e){_c(this,this._dataProcessorHandlers,t,e,{block:!0})},xc.performVisualTasks=function(t,e,i){_c(this,this._visualHandlers,t,e,i)},xc.performSeriesTasks=function(t){var e;t.eachSeries(function(t){e|=t.dataTask.perform()}),this.unfinished|=e},xc.plan=function(){this._pipelineMap.each(function(t){var e=t.tail;do{if(e.__block){t.blockIndex=e.__idxInPipeline;break}e=e.getUpstream()}while(e)})};var wc=xc.updatePayload=function(t,e){"remain"!==e&&(t.context.payload=e)};function bc(t){t.overallReset(t.ecModel,t.api,t.payload)}function Sc(t,e){return t.overallProgress&&Mc}function Mc(){this.agent.dirty(),this.getDownstream().dirty()}function Ic(){this.agent&&this.agent.dirty()}function Ac(t){return t.plan&&t.plan(t.model,t.ecModel,t.api,t.payload)}function Tc(t){t.useClearVisual&&t.data.clearAllVisual();var e=t.resetDefines=wa(t.reset(t.model,t.ecModel,t.api,t.payload));return 1<e.length?N(e,function(t,e){return Cc(e)}):Dc}var Dc=Cc(0);function Cc(o){return function(t,e){var i=e.data,n=e.resetDefines[o];if(n&&n.dataEach)for(var a=t.start;a<t.end;a++)n.dataEach(i,a);else n&&n.progress&&n.progress(t,i)}}function Lc(t){return t.data.count()}function kc(t,e,i){var n=e.uid,a=t._pipelineMap.get(n);a.head||(a.head=i),a.tail&&a.tail.pipe(i),(a.tail=i).__idxInPipeline=a.count++,i.__pipeline=a}yc.wrapStageHandler=function(t,e){return O(t)&&(t={overallReset:t,seriesType:function(t){Pc=null;try{t(Nc,Oc)}catch(t){}return Pc}(t)}),t.uid=ml("stageHandler"),e&&(t.visualType=e),t};var Pc,Nc={},Oc={};function Ec(t,e){for(var i in e.prototype)t[i]=et}Ec(Nc,zu),Ec(Oc,Fu),Nc.eachSeriesByType=Nc.eachRawSeriesByType=function(t){Pc=t},Nc.eachComponent=function(t){"series"===t.mainType&&t.subType&&(Pc=t.subType)};function Rc(){return{axisLine:{lineStyle:{color:Vc}},axisTick:{lineStyle:{color:Vc}},axisLabel:{textStyle:{color:Vc}},splitLine:{lineStyle:{type:"dashed",color:"#aaa"}},splitArea:{areaStyle:{color:Vc}}}}var zc=["#37A2DA","#32C5E9","#67E0E3","#9FE6B8","#FFDB5C","#ff9f7f","#fb7293","#E062AE","#E690D1","#e7bcf3","#9d96f5","#8378EA","#96BFFF"],Bc={color:zc,colorLayer:[["#37A2DA","#ffd85c","#fd7b5f"],["#37A2DA","#67E0E3","#FFDB5C","#ff9f7f","#E062AE","#9d96f5"],["#37A2DA","#32C5E9","#9FE6B8","#FFDB5C","#ff9f7f","#fb7293","#e7bcf3","#8378EA","#96BFFF"],zc]},Vc="#eee",Gc=["#dd6b66","#759aa0","#e69d87","#8dc1a9","#ea7e53","#eedd78","#73a373","#73b9bc","#7289ab","#91ca8c","#f49f42"],Fc={color:Gc,backgroundColor:"#333",tooltip:{axisPointer:{lineStyle:{color:Vc},crossStyle:{color:Vc}}},legend:{textStyle:{color:Vc}},textStyle:{color:Vc},title:{textStyle:{color:Vc}},toolbox:{iconStyle:{normal:{borderColor:Vc}}},dataZoom:{textStyle:{color:Vc}},visualMap:{textStyle:{color:Vc}},timeline:{lineStyle:{color:Vc},itemStyle:{normal:{color:Gc[1]}},label:{normal:{textStyle:{color:Vc}}},controlStyle:{normal:{color:Vc,borderColor:Vc}}},timeAxis:Rc(),logAxis:Rc(),valueAxis:Rc(),categoryAxis:Rc(),line:{symbol:"circle"},graph:{color:Gc},gauge:{title:{textStyle:{color:Vc}}},candlestick:{itemStyle:{normal:{color:"#FD1050",color0:"#0CF49B",borderColor:"#FD1050",borderColor0:"#0CF49B"}}}};Fc.categoryAxis.splitLine.show=!1,fu.extend({type:"dataset",defaultOption:{seriesLayoutBy:Du,sourceHeader:null,dimensions:null,source:null},optionUpdated:function(){!function(t){var e=t.option.source,i=Au;if(V(e))i=Tu;else if(k(e)){0===e.length&&(i=Su);for(var n=0,a=e.length;n<a;n++){var o=e[n];if(null!=o){if(k(o)){i=Su;break}if(z(o)){i=Mu;break}}}}else if(z(e)){for(var r in e)if(e.hasOwnProperty(r)&&P(e[r])){i=Iu;break}}else if(null!=e)throw new Error("Invalid data");ku(t).sourceFormat=i}(this)}}),Kh.extend({type:"dataset"});var Wc=hr.extend({type:"ellipse",shape:{cx:0,cy:0,rx:0,ry:0},buildPath:function(t,e){var i=e.cx,n=e.cy,a=e.rx,o=e.ry,r=.5522848*a,s=.5522848*o;t.moveTo(i-a,n),t.bezierCurveTo(i-a,n-s,i-r,n-o,i,n-o),t.bezierCurveTo(i+r,n-o,i+a,n-s,i+a,n),t.bezierCurveTo(i+a,n+s,i+r,n+o,i,n+o),t.bezierCurveTo(i-r,n+o,i-a,n+s,i-a,n),t.closePath()}}),Hc=/[\s,]+/;function Zc(t){R(t)&&(t=(new DOMParser).parseFromString(t,"text/xml"));for(9===t.nodeType&&(t=t.firstChild);"svg"!==t.nodeName.toLowerCase()||1!==t.nodeType;)t=t.nextSibling;return t}function Uc(){this._defs={},this._root=null,this._isDefine=!1,this._isText=!1}Uc.prototype.parse=function(t,e){e=e||{};var i=Zc(t);if(!i)throw new Error("Illegal svg");var n=new Si;this._root=n;var a=i.getAttribute("viewBox")||"",o=parseFloat(i.getAttribute("width")||e.width),r=parseFloat(i.getAttribute("height")||e.height);isNaN(o)&&(o=null),isNaN(r)&&(r=null),$c(i,n,null,!0);for(var s,l,u=i.firstChild;u;)this._parseNode(u,n),u=u.nextSibling;if(a){var h=j(a).split(Hc);4<=h.length&&(s={x:parseFloat(h[0]||0),y:parseFloat(h[1]||0),width:parseFloat(h[2]),height:parseFloat(h[3])})}if(s&&null!=o&&null!=r&&(l=id(s,o,r),!e.ignoreViewBox)){var c=n;(n=new Si).add(c),c.scale=l.scale.slice(),c.position=l.position.slice()}return e.ignoreRootClip||null==o||null==r||n.setClipPath(new Hr({shape:{x:0,y:0,width:o,height:r}})),{root:n,width:o,height:r,viewBoxRect:s,viewBoxTransform:l}},Uc.prototype._parseNode=function(t,e){var i,n,a=t.nodeName.toLowerCase();if("defs"===a?this._isDefine=!0:"text"===a&&(this._isText=!0),this._isDefine){if(n=Yc[a]){var o=n.call(this,t),r=t.getAttribute("id");r&&(this._defs[r]=o)}}else(n=Xc[a])&&(i=n.call(this,t,e),e.add(i));for(var s=t.firstChild;s;)1===s.nodeType&&this._parseNode(s,i),3===s.nodeType&&this._isText&&this._parseText(s,i),s=s.nextSibling;"defs"===a?this._isDefine=!1:"text"===a&&(this._isText=!1)},Uc.prototype._parseText=function(t,e){if(1===t.nodeType){var i=t.getAttribute("dx")||0,n=t.getAttribute("dy")||0;this._textX+=parseFloat(i),this._textY+=parseFloat(n)}var a=new Dr({style:{text:t.textContent,transformText:!0},position:[this._textX||0,this._textY||0]});jc(e,a),$c(t,a,this._defs);var o=a.style.fontSize;o&&o<9&&(a.style.fontSize=9,a.scale=a.scale||[1,1],a.scale[0]*=o/9,a.scale[1]*=o/9);var r=a.getBoundingRect();return this._textX+=r.width,e.add(a),a};var Xc={g:function(t,e){var i=new Si;return jc(e,i),$c(t,i,this._defs),i},rect:function(t,e){var i=new Hr;return jc(e,i),$c(t,i,this._defs),i.setShape({x:parseFloat(t.getAttribute("x")||0),y:parseFloat(t.getAttribute("y")||0),width:parseFloat(t.getAttribute("width")||0),height:parseFloat(t.getAttribute("height")||0)}),i},circle:function(t,e){var i=new Lr;return jc(e,i),$c(t,i,this._defs),i.setShape({cx:parseFloat(t.getAttribute("cx")||0),cy:parseFloat(t.getAttribute("cy")||0),r:parseFloat(t.getAttribute("r")||0)}),i},line:function(t,e){var i=new Ur;return jc(e,i),$c(t,i,this._defs),i.setShape({x1:parseFloat(t.getAttribute("x1")||0),y1:parseFloat(t.getAttribute("y1")||0),x2:parseFloat(t.getAttribute("x2")||0),y2:parseFloat(t.getAttribute("y2")||0)}),i},ellipse:function(t,e){var i=new Wc;return jc(e,i),$c(t,i,this._defs),i.setShape({cx:parseFloat(t.getAttribute("cx")||0),cy:parseFloat(t.getAttribute("cy")||0),rx:parseFloat(t.getAttribute("rx")||0),ry:parseFloat(t.getAttribute("ry")||0)}),i},polygon:function(t,e){var i=t.getAttribute("points");i=i&&qc(i);var n=new Rr({shape:{points:i||[]}});return jc(e,n),$c(t,n,this._defs),n},polyline:function(t,e){var i=new hr;jc(e,i),$c(t,i,this._defs);var n=t.getAttribute("points");return n=n&&qc(n),new zr({shape:{points:n||[]}})},image:function(t,e){var i=new Yn;return jc(e,i),$c(t,i,this._defs),i.setStyle({image:t.getAttribute("xlink:href"),x:t.getAttribute("x"),y:t.getAttribute("y"),width:t.getAttribute("width"),height:t.getAttribute("height")}),i},text:function(t,e){var i=t.getAttribute("x")||0,n=t.getAttribute("y")||0,a=t.getAttribute("dx")||0,o=t.getAttribute("dy")||0;this._textX=parseFloat(i)+parseFloat(a),this._textY=parseFloat(n)+parseFloat(o);var r=new Si;return jc(e,r),$c(t,r,this._defs),r},tspan:function(t,e){var i=t.getAttribute("x"),n=t.getAttribute("y");null!=i&&(this._textX=parseFloat(i)),null!=n&&(this._textY=parseFloat(n));var a=t.getAttribute("dx")||0,o=t.getAttribute("dy")||0,r=new Si;return jc(e,r),$c(t,r,this._defs),this._textX+=a,this._textY+=o,r},path:function(t,e){var i=Tr(t.getAttribute("d")||"");return jc(e,i),$c(t,i,this._defs),i}},Yc={lineargradient:function(t){var e=parseInt(t.getAttribute("x1")||0,10),i=parseInt(t.getAttribute("y1")||0,10),n=parseInt(t.getAttribute("x2")||10,10),a=parseInt(t.getAttribute("y2")||0,10),o=new Jr(e,i,n,a);return function(t,e){var i=t.firstChild;for(;i;){if(1===i.nodeType){var n=i.getAttribute("offset");n=0<n.indexOf("%")?parseInt(n,10)/100:n?parseFloat(n):0;var a=i.getAttribute("stop-color")||"#000000";e.addColorStop(n,a)}i=i.nextSibling}}(t,o),o},radialgradient:function(t){}};function jc(t,e){t&&t.__inheritedStyle&&(e.__inheritedStyle||(e.__inheritedStyle={}),C(e.__inheritedStyle,t.__inheritedStyle))}function qc(t){for(var e=j(t).split(Hc),i=[],n=0;n<e.length;n+=2){var a=parseFloat(e[n]),o=parseFloat(e[n+1]);i.push([a,o])}return i}var Kc={fill:"fill",stroke:"stroke","stroke-width":"lineWidth",opacity:"opacity","fill-opacity":"fillOpacity","stroke-opacity":"strokeOpacity","stroke-dasharray":"lineDash","stroke-dashoffset":"lineDashOffset","stroke-linecap":"lineCap","stroke-linejoin":"lineJoin","stroke-miterlimit":"miterLimit","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight","text-align":"textAlign","alignment-baseline":"textBaseline"};function $c(t,e,i,n){var a=e.__inheritedStyle||{},o="text"===e.type;if(1===t.nodeType&&(function(t,e){var i=t.getAttribute("transform");if(i){i=i.replace(/,/g," ");var n=null,a=[];i.replace(td,function(t,e,i){a.push(e,i)});for(var o=a.length-1;0<o;o-=2){var r=a[o],s=a[o-1];switch(n=n||Qt(),s){case"translate":r=j(r).split(Hc),ne(n,n,[parseFloat(r[0]),parseFloat(r[1]||0)]);break;case"scale":r=j(r).split(Hc),oe(n,n,[parseFloat(r[0]),parseFloat(r[1]||r[0])]);break;case"rotate":r=j(r).split(Hc),ae(n,n,parseFloat(r[0]));break;case"skew":r=j(r).split(Hc),console.warn("Skew transform is not supported yet");break;case"matrix":r=j(r).split(Hc);n[0]=parseFloat(r[0]),n[1]=parseFloat(r[1]),n[2]=parseFloat(r[2]),n[3]=parseFloat(r[3]),n[4]=parseFloat(r[4]),n[5]=parseFloat(r[5])}}e.setLocalTransform(n)}}(t,e),L(a,function(t){var e=t.getAttribute("style"),i={};if(!e)return i;var n,a={};ed.lastIndex=0;for(;null!=(n=ed.exec(e));)a[n[1]]=n[2];for(var o in Kc)Kc.hasOwnProperty(o)&&null!=a[o]&&(i[Kc[o]]=a[o]);return i}(t)),!n))for(var r in Kc)if(Kc.hasOwnProperty(r)){var s=t.getAttribute(r);null!=s&&(a[Kc[r]]=s)}var l=o?"textFill":"fill",u=o?"textStroke":"stroke";e.style=e.style||new Vi;var h=e.style;null!=a.fill&&h.set(l,Qc(a.fill,i)),null!=a.stroke&&h.set(u,Qc(a.stroke,i)),E(["lineWidth","opacity","fillOpacity","strokeOpacity","miterLimit","fontSize"],function(t){var e="lineWidth"===t&&o?"textStrokeWidth":t;null!=a[t]&&h.set(e,parseFloat(a[t]))}),a.textBaseline&&"auto"!==a.textBaseline||(a.textBaseline="alphabetic"),"alphabetic"===a.textBaseline&&(a.textBaseline="bottom"),"start"===a.textAlign&&(a.textAlign="left"),"end"===a.textAlign&&(a.textAlign="right"),E(["lineDashOffset","lineCap","lineJoin","fontWeight","fontFamily","fontStyle","textAlign","textBaseline"],function(t){null!=a[t]&&h.set(t,a[t])}),a.lineDash&&(e.style.lineDash=j(a.lineDash).split(Hc)),h[u]&&"none"!==h[u]&&(e[u]=!0),e.__inheritedStyle=a}var Jc=/url\(\s*#(.*?)\)/;function Qc(t,e){var i=e&&t&&t.match(Jc);return i?e[j(i[1])]:t}var td=/(translate|scale|rotate|skewX|skewY|matrix)\(([\-\s0-9\.e,]*)\)/g;var ed=/([^\s:;]+)\s*:\s*([^:;]+)/g;function id(t,e,i){var n=e/t.width,a=i/t.height,o=Math.min(n,a);return{scale:[o,o],position:[-(t.x+t.width/2)*o+e/2,-(t.y+t.height/2)*o+i/2]}}var nd=Q(),ad={registerMap:function(t,e,i){var n;return E(n=k(e)?e:e.svg?[{type:"svg",source:e.svg,specialAreas:e.specialAreas}]:(e.geoJson&&!e.features&&(i=e.specialAreas,e=e.geoJson),[{type:"geoJSON",source:e,specialAreas:i}]),function(t){var e=t.type;"geoJson"===e&&(e=t.type="geoJSON"),(0,od[e])(t)}),nd.set(t,n)},retrieveMap:function(t){return nd.get(t)}},od={geoJSON:function(t){var e=t.source;t.geoJSON=R(e)?"undefined"!=typeof JSON&&JSON.parse?JSON.parse(e):new Function("return ("+e+");")():e},svg:function(t){t.svgXML=Zc(t.source)}},rd=Y,sd=E,ld=O,ud=z,hd=fu.parseClassType,cd={PROCESSOR:{FILTER:1e3,SERIES_FILTER:800,STATISTIC:5e3},VISUAL:{LAYOUT:1e3,PROGRESSIVE_LAYOUT:1100,GLOBAL:2e3,CHART:3e3,POST_CHART_LAYOUT:3500,COMPONENT:4e3,BRUSH:5e3}},dd="__flagInMainProcess",fd="__optionUpdated",pd=/^[a-zA-Z0-9_]+$/;function gd(n,a){return function(t,e,i){!a&&this._disposed||(t=t&&t.toLowerCase(),Ct.prototype[n].call(this,t,e,i))}}function md(){Ct.call(this)}function vd(t,e,i){i=i||{},"string"==typeof e&&(e=Fd[e]),this.id,this.group,this._dom=t;var n=this._zr=fa(t,{renderer:i.renderer||"canvas",devicePixelRatio:i.devicePixelRatio,width:i.width,height:i.height});this._throttledZrFlush=cc(T(n.flush,n),17),(e=D(e))&&ch(e,!0),this._theme=e,this._chartsViews=[],this._chartsMap={},this._componentsViews=[],this._componentsMap={},this._coordSysMgr=new Hu;var a=this._api=function(i){var t=i._coordSysMgr;return L(new Fu(i),{getCoordinateSystems:T(t.getCoordinateSystems,t),getComponentByElement:function(t){for(;t;){var e=t.__ecComponentInfo;if(null!=e)return i._model.getComponent(e.mainType,e.index);t=t.parent}}})}(this);function o(t,e){return t.__prio-e.__prio}ki(Gd,o),ki(zd,o),this._scheduler=new yc(this,a,zd,Gd),Ct.call(this,this._ecEventProcessor=new Od),this._messageCenter=new md,this._initEvents(),this.resize=T(this.resize,this),this._pendingActions=[],n.animation.on("frame",this._onframe,this),function(t,e){t.on("rendered",function(){e.trigger("rendered"),!t.animation.isFinished()||e[fd]||e._scheduler.unfinished||e._pendingActions.length||e.trigger("finished")})}(n,this),K(this)}md.prototype.on=gd("on",!0),md.prototype.off=gd("off",!0),md.prototype.one=gd("one",!0),b(md,Ct);var yd=vd.prototype;function xd(t,e,i){if(!this._disposed){var n,a=this._model,o=this._coordSysMgr.getCoordinateSystems();e=Pa(a,e);for(var r=0;r<o.length;r++){var s=o[r];if(s[t]&&null!=(n=s[t](a,e,i)))return n}}}yd._onframe=function(){if(!this._disposed){var t=this._scheduler;if(this[fd]){var e=this[fd].silent;this[dd]=!0,wd(this),_d.update.call(this),this[dd]=!1,this[fd]=!1,Id.call(this,e),Ad.call(this,e)}else if(t.unfinished){var i=1,n=this._model,a=this._api;t.unfinished=!1;do{var o=+new Date;t.performSeriesTasks(n),t.performDataProcessorTasks(n),Sd(this,n),t.performVisualTasks(n),Ld(this,this._model,a,"remain"),i-=+new Date-o}while(0<i&&t.unfinished);t.unfinished||this._zr.flush()}}},yd.getDom=function(){return this._dom},yd.getZr=function(){return this._zr},yd.setOption=function(t,e,i){if(!this._disposed){var n;if(ud(e)&&(i=e.lazyUpdate,n=e.silent,e=e.notMerge),this[dd]=!0,!this._model||e){var a=new qu(this._api),o=this._theme,r=this._model=new zu;r.scheduler=this._scheduler,r.init(null,null,o,a)}this._model.setOption(t,Bd),i?(this[fd]={silent:n},this[dd]=!1):(wd(this),_d.update.call(this),this._zr.flush(),this[fd]=!1,this[dd]=!1,Id.call(this,n),Ad.call(this,n))}},yd.setTheme=function(){console.error("ECharts#setTheme() is DEPRECATED in ECharts 3.0")},yd.getModel=function(){return this._model},yd.getOption=function(){return this._model&&this._model.getOption()},yd.getWidth=function(){return this._zr.getWidth()},yd.getHeight=function(){return this._zr.getHeight()},yd.getDevicePixelRatio=function(){return this._zr.painter.dpr||window.devicePixelRatio||1},yd.getRenderedCanvas=function(t){if(v.canvasSupported)return(t=t||{}).pixelRatio=t.pixelRatio||1,t.backgroundColor=t.backgroundColor||this._model.get("backgroundColor"),this._zr.painter.getRenderedCanvas(t)},yd.getSvgDataUrl=function(){if(v.svgSupported){var t=this._zr;return E(t.storage.getDisplayList(),function(t){t.stopAnimation(!0)}),t.painter.pathToDataUrl()}},yd.getDataURL=function(t){if(!this._disposed){var e=(t=t||{}).excludeComponents,i=this._model,n=[],a=this;sd(e,function(t){i.eachComponent({mainType:t},function(t){var e=a._componentsMap[t.__viewId];e.group.ignore||(n.push(e),e.group.ignore=!0)})});var o="svg"===this._zr.painter.getType()?this.getSvgDataUrl():this.getRenderedCanvas(t).toDataURL("image/"+(t&&t.type||"png"));return sd(n,function(t){t.group.ignore=!1}),o}},yd.getConnectedDataURL=function(a){if(!this._disposed&&v.canvasSupported){var o=this.group,r=Math.min,s=Math.max;if(Zd[o]){var l=1/0,u=1/0,h=-1/0,c=-1/0,d=[],i=a&&a.pixelRatio||1;E(Hd,function(t,e){if(t.group===o){var i=t.getRenderedCanvas(D(a)),n=t.getDom().getBoundingClientRect();l=r(n.left,l),u=r(n.top,u),h=s(n.right,h),c=s(n.bottom,c),d.push({dom:i,left:n.left,top:n.top})}});var t=(h*=i)-(l*=i),e=(c*=i)-(u*=i),n=g();n.width=t,n.height=e;var f=fa(n);return a.connectedBackgroundColor&&f.add(new Hr({shape:{x:0,y:0,width:t,height:e},style:{fill:a.connectedBackgroundColor}})),sd(d,function(t){var e=new Yn({style:{x:t.left*i-l,y:t.top*i-u,image:t.dom}});f.add(e)}),f.refreshImmediately(),n.toDataURL("image/"+(a&&a.type||"png"))}return this.getDataURL(a)}},yd.convertToPixel=A(xd,"convertToPixel"),yd.convertFromPixel=A(xd,"convertFromPixel"),yd.containPixel=function(t,a){var o;if(!this._disposed)return E(t=Pa(this._model,t),function(t,n){0<=n.indexOf("Models")&&E(t,function(t){var e=t.coordinateSystem;if(e&&e.containPoint)o|=!!e.containPoint(a);else if("seriesModels"===n){var i=this._chartsMap[t.__viewId];i&&i.containPoint&&(o|=i.containPoint(a,t))}},this)},this),!!o},yd.getVisual=function(t,e){var i=(t=Pa(this._model,t,{defaultMainType:"series"})).seriesModel.getData(),n=t.hasOwnProperty("dataIndexInside")?t.dataIndexInside:t.hasOwnProperty("dataIndex")?i.indexOfRawIndex(t.dataIndex):null;return null!=n?i.getItemVisual(n,e):i.getVisual(e)},yd.getViewOfComponentModel=function(t){return this._componentsMap[t.__viewId]},yd.getViewOfSeriesModel=function(t){return this._chartsMap[t.__viewId]};var _d={prepareAndUpdate:function(t){wd(this),_d.update.call(this,t)},update:function(t){var e=this._model,i=this._api,n=this._zr,a=this._coordSysMgr,o=this._scheduler;if(e){o.restoreData(e,t),o.performSeriesTasks(e),a.create(e,i),o.performDataProcessorTasks(e,t),Sd(this,e),a.update(e,i),Dd(e),o.performVisualTasks(e,t),Cd(this,e,i,t);var r=e.get("backgroundColor")||"transparent";if(v.canvasSupported)n.setBackgroundColor(r);else{var s=Ee(r);r=Ue(s,"rgb"),0===s[3]&&(r="transparent")}kd(e,i)}},updateTransform:function(a){var o=this._model,r=this,s=this._api;if(o){var l=[];o.eachComponent(function(t,e){var i=r.getViewOfComponentModel(e);if(i&&i.__alive)if(i.updateTransform){var n=i.updateTransform(e,o,s,a);n&&n.update&&l.push(i)}else l.push(i)});var n=Q();o.eachSeries(function(t){var e=r._chartsMap[t.__viewId];if(e.updateTransform){var i=e.updateTransform(t,o,s,a);i&&i.update&&n.set(t.uid,1)}else n.set(t.uid,1)}),Dd(o),this._scheduler.performVisualTasks(o,a,{setDirty:!0,dirtyMap:n}),Ld(r,o,s,a,n),kd(o,this._api)}},updateView:function(t){var e=this._model;e&&(ec.markUpdateMethod(t,"updateView"),Dd(e),this._scheduler.performVisualTasks(e,t,{setDirty:!0}),Cd(this,this._model,this._api,t),kd(e,this._api))},updateVisual:function(t){_d.update.call(this,t)},updateLayout:function(t){_d.update.call(this,t)}};function wd(t){var e=t._model,i=t._scheduler;i.restorePipelines(e),i.prepareStageTasks(),Td(t,"component",e,i),Td(t,"chart",e,i),i.plan()}function bd(e,i,n,a,t){var o=e._model;if(a){var r={};r[a+"Id"]=n[a+"Id"],r[a+"Index"]=n[a+"Index"],r[a+"Name"]=n[a+"Name"];var s={mainType:a,query:r};t&&(s.subType=t);var l=n.excludeSeriesId;null!=l&&(l=Q(wa(l))),o&&o.eachComponent(s,function(t){l&&null!=l.get(t.id)||u(e["series"===a?"_chartsMap":"_componentsMap"][t.__viewId])},e)}else sd(e._componentsViews.concat(e._chartsViews),u);function u(t){t&&t.__alive&&t[i]&&t[i](t.__model,o,e._api,n)}}function Sd(t,e){var i=t._chartsMap,n=t._scheduler;e.eachSeries(function(t){n.updateStreamModes(t,i[t.__viewId])})}function Md(e,t){var i=e.type,n=e.escapeConnect,a=Ed[i],o=a.actionInfo,r=(o.update||"update").split(":"),s=r.pop();r=null!=r[0]&&hd(r[0]),this[dd]=!0;var l=[e],u=!1;e.batch&&(u=!0,l=N(e.batch,function(t){return(t=C(L({},t),e)).batch=null,t}));var h,c=[],d="highlight"===i||"downplay"===i;sd(l,function(t){(h=(h=a.action(t,this._model,this._api))||L({},t)).type=o.event||h.type,c.push(h),d?bd(this,s,t,"series"):r&&bd(this,s,t,r.main,r.sub)},this),"none"===s||d||r||(this[fd]?(wd(this),_d.update.call(this,e),this[fd]=!1):_d[s].call(this,e)),h=u?{type:o.event||i,escapeConnect:n,batch:c}:c[0],this[dd]=!1,t||this._messageCenter.trigger(h.type,h)}function Id(t){for(var e=this._pendingActions;e.length;){var i=e.shift();Md.call(this,i,t)}}function Ad(t){t||this.trigger("updated")}function Td(t,e,a,o){for(var r="component"===e,s=r?t._componentsViews:t._chartsViews,l=r?t._componentsMap:t._chartsMap,u=t._zr,h=t._api,i=0;i<s.length;i++)s[i].__alive=!1;function n(t){var e="_ec_"+t.id+"_"+t.type,i=l[e];if(!i){var n=hd(t.type);(i=new(r?Kh.getClass(n.main,n.sub):ec.getClass(n.sub))).init(a,h),l[e]=i,s.push(i),u.add(i.group)}t.__viewId=i.__id=e,i.__alive=!0,i.__model=t,i.group.__ecComponentInfo={mainType:t.mainType,index:t.componentIndex},r||o.prepareView(i,t,a,h)}r?a.eachComponent(function(t,e){"series"!==t&&n(e)}):a.eachSeries(n);for(i=0;i<s.length;){var c=s[i];c.__alive?i++:(r||c.renderTask.dispose(),u.remove(c.group),c.dispose(a,h),s.splice(i,1),delete l[c.__id],c.__id=c.group.__ecComponentInfo=null)}}function Dd(t){t.clearColorPalette(),t.eachSeries(function(t){t.clearColorPalette()})}function Cd(t,e,i,n){!function(t,i,n,a,e){sd(e||t._componentsViews,function(t){var e=t.__model;t.render(e,i,n,a),Nd(e,t)})}(t,e,i,n),sd(t._chartsViews,function(t){t.__alive=!1}),Ld(t,e,i,n),sd(t._chartsViews,function(t){t.__alive||t.remove(e,i)})}function Ld(n,t,e,a,o){var r,s=n._scheduler;t.eachSeries(function(t){var e=n._chartsMap[t.__viewId];e.__alive=!0;var i=e.renderTask;s.updatePayload(i,a),o&&o.get(t.uid)&&i.dirty(),r|=i.perform(s.getPerformArgs(i)),e.group.silent=!!t.get("silent"),Nd(t,e),function(t,e){var i=t.get("blendMode")||null;e.group.traverse(function(t){t.isGroup||t.style.blend!==i&&t.setStyle("blend",i),t.eachPendingDisplayable&&t.eachPendingDisplayable(function(t){t.setStyle("blend",i)})})}(t,e)}),s.unfinished|=r,function(i,t){var e=i._zr.storage,n=0;e.traverse(function(t){n++}),n>t.get("hoverLayerThreshold")&&!v.node&&t.eachSeries(function(t){if(!t.preventUsingHoverLayer){var e=i._chartsMap[t.__viewId];e.__alive&&e.group.traverse(function(t){t.useHoverLayer=!0})}})}(n,t),mc(n._zr.dom,t)}function kd(e,i){sd(Vd,function(t){t(e,i)})}yd.resize=function(t){if(!this._disposed){this._zr.resize(t);var e=this._model;if(this._loadingFX&&this._loadingFX.resize(),e){var i=e.resetOption("media"),n=t&&t.silent;this[dd]=!0,i&&wd(this),_d.update.call(this),this[dd]=!1,Id.call(this,n),Ad.call(this,n)}}},yd.showLoading=function(t,e){if(!this._disposed&&(ud(t)&&(e=t,t=""),t=t||"default",this.hideLoading(),Wd[t])){var i=Wd[t](this._api,e),n=this._zr;this._loadingFX=i,n.add(i)}},yd.hideLoading=function(){this._disposed||(this._loadingFX&&this._zr.remove(this._loadingFX),this._loadingFX=null)},yd.makeActionFromEvent=function(t){var e=L({},t);return e.type=Rd[t.type],e},yd.dispatchAction=function(t,e){this._disposed||(ud(e)||(e={silent:!!e}),Ed[t.type]&&this._model&&(this[dd]?this._pendingActions.push(t):(Md.call(this,t,e.silent),e.flush?this._zr.flush(!0):!1!==e.flush&&v.browser.weChat&&this._throttledZrFlush(),Id.call(this,e.silent),Ad.call(this,e.silent))))},yd.appendData=function(t){if(!this._disposed){var e=t.seriesIndex;this.getModel().getSeriesByIndex(e).appendData(t),this._scheduler.unfinished=!0}},yd.on=gd("on",!1),yd.off=gd("off",!1),yd.one=gd("one",!1);var Pd=["click","dblclick","mouseover","mouseout","mousemove","mousedown","mouseup","globalout","contextmenu"];function Nd(t,e){var i=t.get("z"),n=t.get("zlevel");e.group.traverse(function(t){"group"!==t.type&&(null!=i&&(t.z=i),null!=n&&(t.zlevel=n))})}function Od(){this.eventInfo}yd._initEvents=function(){sd(Pd,function(u){function t(t){var e,i=this.getModel(),n=t.target;if("globalout"===u)e={};else if(n&&null!=n.dataIndex){var a=n.dataModel||i.getSeriesByIndex(n.seriesIndex);e=a&&a.getDataParams(n.dataIndex,n.dataType,n)||{}}else n&&n.eventData&&(e=L({},n.eventData));if(e){var o=e.componentType,r=e.componentIndex;"markLine"!==o&&"markPoint"!==o&&"markArea"!==o||(o="series",r=e.seriesIndex);var s=o&&null!=r&&i.getComponent(o,r),l=s&&this["series"===s.mainType?"_chartsMap":"_componentsMap"][s.__viewId];e.event=t,e.type=u,this._ecEventProcessor.eventInfo={targetEl:n,packedEvent:e,model:s,view:l},this.trigger(u,e)}}t.zrEventfulCallAtLast=!0,this._zr.on(u,t,this)},this),sd(Rd,function(t,e){this._messageCenter.on(e,function(t){this.trigger(e,t)},this)},this)},yd.isDisposed=function(){return this._disposed},yd.clear=function(){this._disposed||this.setOption({series:[]},!0)},yd.dispose=function(){if(!this._disposed){this._disposed=!0,Oa(this.getDom(),Yd,"");var e=this._api,i=this._model;sd(this._componentsViews,function(t){t.dispose(i,e)}),sd(this._chartsViews,function(t){t.dispose(i,e)}),this._zr.dispose(),delete Hd[this.id]}},b(vd,Ct),Od.prototype={constructor:Od,normalizeQuery:function(t){var s={},l={},u={};if(R(t)){var e=hd(t);s.mainType=e.main||null,s.subType=e.sub||null}else{var h=["Index","Name","Id"],c={name:1,dataIndex:1,dataType:1};E(t,function(t,e){for(var i=!1,n=0;n<h.length;n++){var a=h[n],o=e.lastIndexOf(a);if(0<o&&o===e.length-a.length){var r=e.slice(0,o);"data"!==r&&(s.mainType=r,s[a.toLowerCase()]=t,i=!0)}}c.hasOwnProperty(e)&&(l[e]=t,i=!0),i||(u[e]=t)})}return{cptQuery:s,dataQuery:l,otherQuery:u}},filter:function(t,e,i){var n=this.eventInfo;if(!n)return!0;var a=n.targetEl,o=n.packedEvent,r=n.model,s=n.view;if(!r||!s)return!0;var l=e.cptQuery,u=e.dataQuery;return h(l,r,"mainType")&&h(l,r,"subType")&&h(l,r,"index","componentIndex")&&h(l,r,"name")&&h(l,r,"id")&&h(u,o,"name")&&h(u,o,"dataIndex")&&h(u,o,"dataType")&&(!s.filterForExposedEvent||s.filterForExposedEvent(t,e.otherQuery,a,o));function h(t,e,i,n){return null==t[i]||e[n||i]===t[i]}},afterTrigger:function(){this.eventInfo=null}};var Ed={},Rd={},zd=[],Bd=[],Vd=[],Gd=[],Fd={},Wd={},Hd={},Zd={},Ud=new Date-0,Xd=new Date-0,Yd="_echarts_instance_";function jd(t){Zd[t]=!1}var qd=jd;function Kd(t){return Hd[function(t,e){return t.getAttribute?t.getAttribute(e):t[e]}(t,Yd)]}function $d(t,e){Fd[t]=e}function Jd(t){Bd.push(t)}function Qd(t,e){of(zd,t,e,1e3)}function tf(t,e,i){"function"==typeof e&&(i=e,e="");var n=ud(t)?t.type:[t,t={event:e}][0];t.event=(t.event||n).toLowerCase(),e=t.event,rd(pd.test(n)&&pd.test(e)),Ed[n]||(Ed[n]={action:i,actionInfo:t}),Rd[e]=n}function ef(t,e){Hu.register(t,e)}function nf(t,e){of(Gd,t,e,1e3,"layout")}function af(t,e){of(Gd,t,e,3e3,"visual")}function of(t,e,i,n,a){(ld(e)||ud(e))&&(i=e,e=n);var o=yc.wrapStageHandler(i,a);return o.__prio=e,o.__raw=i,t.push(o),o}function rf(t,e){Wd[t]=e}function sf(t){return fu.extend(t)}function lf(t){return Kh.extend(t)}function uf(t){return Wh.extend(t)}function hf(t){return ec.extend(t)}af(2e3,pc),Jd(ch),Qd(900,function(t){var o=Q();t.eachSeries(function(t){var e=t.get("stack");if(e){var i=o.get(e)||o.set(e,[]),n=t.getData(),a={stackResultDimension:n.getCalculationInfo("stackResultDimension"),stackedOverDimension:n.getCalculationInfo("stackedOverDimension"),stackedDimension:n.getCalculationInfo("stackedDimension"),stackedByDimension:n.getCalculationInfo("stackedByDimension"),isStackedByIndex:n.getCalculationInfo("isStackedByIndex"),data:n,seriesModel:t};if(!a.stackedDimension||!a.isStackedByIndex&&!a.stackedByDimension)return;i.length&&n.setCalculationInfo("stackedOnSeries",i[i.length-1].seriesModel),i.push(a)}}),o.each(dh)}),rf("default",function(n,t){C(t=t||{},{text:"loading",color:"#c23531",textColor:"#000",maskColor:"rgba(255, 255, 255, 0.8)",zlevel:0});var a=new Hr({style:{fill:t.maskColor},zlevel:t.zlevel,z:1e4}),o=new Kr({shape:{startAngle:-vc/2,endAngle:-vc/2+.1,r:10},style:{stroke:t.color,lineCap:"round",lineWidth:5},zlevel:t.zlevel,z:10001}),r=new Hr({style:{fill:"none",text:t.text,textPosition:"right",textDistance:10,textFill:t.textColor},zlevel:t.zlevel,z:10001});o.animateShape(!0).when(1e3,{endAngle:3*vc/2}).start("circularInOut"),o.animateShape(!0).when(1e3,{startAngle:3*vc/2}).delay(300).start("circularInOut");var e=new Si;return e.add(o),e.add(r),e.add(a),e.resize=function(){var t=n.getWidth()/2,e=n.getHeight()/2;o.setShape({cx:t,cy:e});var i=o.shape.r;r.setShape({x:t-i,y:e-i,width:2*i,height:2*i}),a.setShape({x:0,y:0,width:n.getWidth(),height:n.getHeight()})},e.resize(),e}),tf({type:"highlight",event:"highlight",update:"highlight"},et),tf({type:"downplay",event:"downplay",update:"downplay"},et),$d("light",Bc),$d("dark",Fc);function cf(t){return t}function df(t,e,i,n,a){this._old=t,this._new=e,this._oldKeyGetter=i||cf,this._newKeyGetter=n||cf,this.context=a}function ff(t,e,i,n,a){for(var o=0;o<t.length;o++){var r="_ec_"+a[n](t[o],o),s=e[r];null==s?(i.push(r),e[r]=o):(s.length||(e[r]=s=[s]),s.push(o))}}df.prototype={constructor:df,add:function(t){return this._add=t,this},update:function(t){return this._update=t,this},remove:function(t){return this._remove=t,this},execute:function(){var t=this._old,e=this._new,i={},n=[],a=[];for(ff(t,{},n,"_oldKeyGetter",this),ff(e,i,a,"_newKeyGetter",this),o=0;o<t.length;o++){if(null!=(s=i[r=n[o]]))(u=s.length)?(1===u&&(i[r]=null),s=s.shift()):i[r]=null,this._update&&this._update(s,o);else this._remove&&this._remove(o)}for(var o=0;o<a.length;o++){var r=a[o];if(i.hasOwnProperty(r)){var s;if(null==(s=i[r]))continue;if(s.length)for(var l=0,u=s.length;l<u;l++)this._add&&this._add(s[l]);else this._add&&this._add(s)}}}};var pf=Q(["tooltip","label","itemName","itemId","seriesName"]);function gf(t,e){return t.hasOwnProperty(e)||(t[e]=[]),t[e]}function mf(t){return"category"===t?"ordinal":"time"===t?"time":"float"}var vf=z,yf="undefined",xf={float:typeof Float64Array==yf?Array:Float64Array,int:typeof Int32Array==yf?Array:Int32Array,ordinal:Array,number:Array,time:Array},_f=typeof Uint32Array==yf?Array:Uint32Array,wf=typeof Int32Array==yf?Array:Int32Array,bf=typeof Uint16Array==yf?Array:Uint16Array;function Sf(t){return 65535<t._rawCount?_f:bf}var Mf=["hasItemOption","_nameList","_idList","_invertedIndicesMap","_rawData","_chunkSize","_chunkCount","_dimValueGetter","_count","_rawCount","_nameDimIdx","_idDimIdx"],If=["_extent","_approximateExtent","_rawExtent"];function Af(e,i){E(Mf.concat(i.__wrappedMethods||[]),function(t){i.hasOwnProperty(t)&&(e[t]=i[t])}),e.__wrappedMethods=i.__wrappedMethods,E(If,function(t){e[t]=D(i[t])}),e._calculationInfo=L(i._calculationInfo)}var Tf=function(t,e){t=t||["x","y"];for(var i={},n=[],a={},o=0;o<t.length;o++){var r=t[o];R(r)&&(r={name:r});var s=r.name;r.type=r.type||"float",r.coordDim||(r.coordDim=s,r.coordDimIndex=0),r.otherDims=r.otherDims||{},n.push(s),(i[s]=r).index=o,r.createInvertedIndices&&(a[s]=[])}this.dimensions=n,this._dimensionInfos=i,this.hostModel=e,this.dataType,this._indices=null,this._count=0,this._rawCount=0,this._storage={},this._nameList=[],this._idList=[],this._optionModels=[],this._visual={},this._layout={},this._itemVisuals=[],this.hasItemVisual={},this._itemLayouts=[],this._graphicEls=[],this._chunkSize=1e5,this._chunkCount=0,this._rawData,this._rawExtent={},this._extent={},this._approximateExtent={},this._dimensionsSummary=function(n){var t={},o=t.encode={},r=Q(),s=[],l=[],u=t.userOutput={dimensionNames:n.dimensions.slice(),encode:{}};E(n.dimensions,function(t){var a=n.getDimensionInfo(t),e=a.coordDim;if(e){var i=a.coordDimIndex;gf(o,e)[i]=t,a.isExtraCoord||(r.set(e,1),function(t){return!("ordinal"===t||"time"===t)}(a.type)&&(s[0]=t),gf(u.encode,e)[i]=a.index),a.defaultTooltip&&l.push(t)}pf.each(function(t,e){var i=gf(o,e),n=a.otherDims[e];null!=n&&!1!==n&&(i[n]=a.name)})});var a=[],h={};r.each(function(t,e){var i=o[e];h[e]=i[0],a=a.concat(i)}),t.dataDimsOnCoord=a,t.encodeFirstDimNotExtra=h;var e=o.label;e&&e.length&&(s=e.slice());var i=o.tooltip;return i&&i.length?l=i.slice():l.length||(l=s.slice()),o.defaultedLabel=s,o.defaultedTooltip=l,t}(this),this._invertedIndicesMap=a,this._calculationInfo={},this.userOutput=this._dimensionsSummary.userOutput},Df=Tf.prototype;function Cf(t,e,i,n,a){var o=xf[e.type],r=n-1,s=e.name,l=t[s][r];if(l&&l.length<i){for(var u=new o(Math.min(a-r*i,i)),h=0;h<l.length;h++)u[h]=l[h];t[s][r]=u}for(var c=n*i;c<a;c+=i)t[s].push(new o(Math.min(a-c,i)))}function Lf(a){var o=a._invertedIndicesMap;E(o,function(t,e){var i=a._dimensionInfos[e].ordinalMeta;if(i){t=o[e]=new wf(i.categories.length);for(var n=0;n<t.length;n++)t[n]=-1;for(n=0;n<a._count;n++)t[a.get(e,n)]=n}})}function kf(t,e,i){var n;if(null!=e){var a=t._chunkSize,o=Math.floor(i/a),r=i%a,s=t.dimensions[e],l=t._storage[s][o];if(l){n=l[r];var u=t._dimensionInfos[s].ordinalMeta;u&&u.categories.length&&(n=u.categories[n])}}return n}function Pf(t){return t}function Nf(t){return t<this._count&&0<=t?this._indices[t]:-1}function Of(t,e){var i=t._idList[e];return null==i&&(i=kf(t,t._idDimIdx,e)),null==i&&(i="e\0\0"+e),i}function Ef(t){return k(t)||(t=[t]),t}function Rf(t,e){var i=t.dimensions,n=new Tf(N(i,t.getDimensionInfo,t),t.hostModel);Af(n,t);for(var a=n._storage={},o=t._storage,r=0;r<i.length;r++){var s=i[r];o[s]&&(0<=_(e,s)?(a[s]=zf(o[s]),n._rawExtent[s]=Bf(),n._extent[s]=null):a[s]=o[s])}return n}function zf(t){for(var e,i,n=new Array(t.length),a=0;a<t.length;a++)n[a]=(e=t[a],i=void 0,(i=e.constructor)===Array?e.slice():new i(e));return n}function Bf(){return[1/0,-1/0]}Df.type="list",Df.hasItemOption=!0,Df.getDimension=function(t){return"number"!=typeof t&&(isNaN(t)||this._dimensionInfos.hasOwnProperty(t))||(t=this.dimensions[t]),t},Df.getDimensionInfo=function(t){return this._dimensionInfos[this.getDimension(t)]},Df.getDimensionsOnCoord=function(){return this._dimensionsSummary.dataDimsOnCoord.slice()},Df.mapDimension=function(t,e){var i=this._dimensionsSummary;if(null==e)return i.encodeFirstDimNotExtra[t];var n=i.encode[t];return!0===e?(n||[]).slice():n&&n[e]},Df.initData=function(t,e,i){(Lu.isInstance(t)||P(t))&&(t=new fh(t,this.dimensions.length)),this._rawData=t,this._storage={},this._indices=null,this._nameList=e||[],this._idList=[],this._nameRepeatCount={},i||(this.hasItemOption=!1),this.defaultDimValueGetter=wh[this._rawData.getSource().sourceFormat],this._dimValueGetter=i=i||this.defaultDimValueGetter,this._dimValueGetterArrayRows=wh.arrayRows,this._rawExtent={},this._initDataFromProvider(0,t.count()),t.pure&&(this.hasItemOption=!1)},Df.getProvider=function(){return this._rawData},Df.appendData=function(t){var e=this._rawData,i=this.count();e.appendData(t);var n=e.count();e.persistent||(n+=i),this._initDataFromProvider(i,n)},Df.appendValues=function(t,e){for(var i=this._chunkSize,n=this._storage,a=this.dimensions,o=a.length,r=this._rawExtent,s=this.count(),l=s+Math.max(t.length,e?e.length:0),u=this._chunkCount,h=0;h<o;h++){r[v=a[h]]||(r[v]=Bf()),n[v]||(n[v]=[]),Cf(n,this._dimensionInfos[v],i,u,l),this._chunkCount=n[v].length}for(var c=new Array(o),d=s;d<l;d++){for(var f=d-s,p=Math.floor(d/i),g=d%i,m=0;m<o;m++){var v=a[m],y=this._dimValueGetterArrayRows(t[f]||c,v,f,m);n[v][p][g]=y;var x=r[v];y<x[0]&&(x[0]=y),y>x[1]&&(x[1]=y)}e&&(this._nameList[d]=e[f])}this._rawCount=this._count=l,this._extent={},Lf(this)},Df._initDataFromProvider=function(t,e){if(!(e<=t)){for(var i,n=this._chunkSize,a=this._rawData,o=this._storage,r=this.dimensions,s=r.length,l=this._dimensionInfos,u=this._nameList,h=this._idList,c=this._rawExtent,d=this._nameRepeatCount={},f=this._chunkCount,p=0;p<s;p++){c[w=r[p]]||(c[w]=Bf());var g=l[w];0===g.otherDims.itemName&&(i=this._nameDimIdx=p),0===g.otherDims.itemId&&(this._idDimIdx=p),o[w]||(o[w]=[]),Cf(o,g,n,f,e),this._chunkCount=o[w].length}for(var m=new Array(s),v=t;v<e;v++){m=a.getItem(v,m);for(var y=Math.floor(v/n),x=v%n,_=0;_<s;_++){var w,b=o[w=r[_]][y],S=this._dimValueGetter(m,w,v,_);b[x]=S;var M=c[w];S<M[0]&&(M[0]=S),S>M[1]&&(M[1]=S)}if(!a.pure){var I=u[v];if(m&&null==I)if(null!=m.name)u[v]=I=m.name;else if(null!=i){var A=r[i],T=o[A][y];if(T){I=T[x];var D=l[A].ordinalMeta;D&&D.categories.length&&(I=D.categories[I])}}var C=null==m?null:m.id;null==C&&null!=I&&(d[I]=d[I]||0,0<d[C=I]&&(C+="__ec__"+d[I]),d[I]++),null!=C&&(h[v]=C)}}!a.persistent&&a.clean&&a.clean(),this._rawCount=this._count=e,this._extent={},Lf(this)}},Df.count=function(){return this._count},Df.getIndices=function(){var t=this._indices;if(t){var e=t.constructor,i=this._count;if(e===Array){a=new e(i);for(var n=0;n<i;n++)a[n]=t[n]}else a=new e(t.buffer,0,i)}else{var a=new(e=Sf(this))(this.count());for(n=0;n<a.length;n++)a[n]=n}return a},Df.get=function(t,e){if(!(0<=e&&e<this._count))return NaN;var i=this._storage;if(!i[t])return NaN;e=this.getRawIndex(e);var n=Math.floor(e/this._chunkSize),a=e%this._chunkSize;return i[t][n][a]},Df.getByRawIndex=function(t,e){if(!(0<=e&&e<this._rawCount))return NaN;var i=this._storage[t];if(!i)return NaN;var n=Math.floor(e/this._chunkSize),a=e%this._chunkSize;return i[n][a]},Df._getFast=function(t,e){var i=Math.floor(e/this._chunkSize),n=e%this._chunkSize;return this._storage[t][i][n]},Df.getValues=function(t,e){var i=[];k(t)||(e=t,t=this.dimensions);for(var n=0,a=t.length;n<a;n++)i.push(this.get(t[n],e));return i},Df.hasValue=function(t){for(var e=this._dimensionsSummary.dataDimsOnCoord,i=0,n=e.length;i<n;i++)if(isNaN(this.get(e[i],t)))return!1;return!0},Df.getDataExtent=function(t){t=this.getDimension(t);var e=this._storage[t],i=Bf();if(!e)return i;var n,a=this.count();if(!this._indices)return this._rawExtent[t].slice();if(n=this._extent[t])return n.slice();for(var o=(n=i)[0],r=n[1],s=0;s<a;s++){var l=this._getFast(t,this.getRawIndex(s));l<o&&(o=l),r<l&&(r=l)}return n=[o,r],this._extent[t]=n},Df.getApproximateExtent=function(t){return t=this.getDimension(t),this._approximateExtent[t]||this.getDataExtent(t)},Df.setApproximateExtent=function(t,e){e=this.getDimension(e),this._approximateExtent[e]=t.slice()},Df.getCalculationInfo=function(t){return this._calculationInfo[t]},Df.setCalculationInfo=function(t,e){vf(t)?L(this._calculationInfo,t):this._calculationInfo[t]=e},Df.getSum=function(t){var e=0;if(this._storage[t])for(var i=0,n=this.count();i<n;i++){var a=this.get(t,i);isNaN(a)||(e+=a)}return e},Df.getMedian=function(t){var i=[];this.each(t,function(t,e){isNaN(t)||i.push(t)});var e=[].concat(i).sort(function(t,e){return t-e}),n=this.count();return 0===n?0:n%2==1?e[(n-1)/2]:(e[n/2]+e[n/2-1])/2},Df.rawIndexOf=function(t,e){var i=(t&&this._invertedIndicesMap[t])[e];return null==i||isNaN(i)?-1:i},Df.indexOfName=function(t){for(var e=0,i=this.count();e<i;e++)if(this.getName(e)===t)return e;return-1},Df.indexOfRawIndex=function(t){if(t>=this._rawCount||t<0)return-1;if(!this._indices)return t;var e=this._indices,i=e[t];if(null!=i&&i<this._count&&i===t)return t;for(var n=0,a=this._count-1;n<=a;){var o=(n+a)/2|0;if(e[o]<t)n=1+o;else{if(!(e[o]>t))return o;a=o-1}}return-1},Df.indicesOfNearest=function(t,e,i){var n=[];if(!this._storage[t])return n;null==i&&(i=1/0);for(var a=Number.MAX_VALUE,o=-1,r=0,s=this.count();r<s;r++){var l=e-this.get(t,r),u=Math.abs(l);l<=i&&u<=a&&((u<a||0<=l&&o<0)&&(a=u,o=l,n.length=0),n.push(r))}return n},Df.getRawIndex=Pf,Df.getRawDataItem=function(t){if(this._rawData.persistent)return this._rawData.getItem(this.getRawIndex(t));for(var e=[],i=0;i<this.dimensions.length;i++){var n=this.dimensions[i];e.push(this.get(n,t))}return e},Df.getName=function(t){var e=this.getRawIndex(t);return this._nameList[e]||kf(this,this._nameDimIdx,e)||""},Df.getId=function(t){return Of(this,this.getRawIndex(t))},Df.each=function(t,e,i,n){if(this._count){"function"==typeof t&&(n=i,i=e,e=t,t=[]),i=i||n||this;for(var a=(t=N(Ef(t),this.getDimension,this)).length,o=0;o<this.count();o++)switch(a){case 0:e.call(i,o);break;case 1:e.call(i,this.get(t[0],o),o);break;case 2:e.call(i,this.get(t[0],o),this.get(t[1],o),o);break;default:for(var r=0,s=[];r<a;r++)s[r]=this.get(t[r],o);s[r]=o,e.apply(i,s)}}},Df.filterSelf=function(t,e,i,n){if(this._count){"function"==typeof t&&(n=i,i=e,e=t,t=[]),i=i||n||this,t=N(Ef(t),this.getDimension,this);for(var a=this.count(),o=new(Sf(this))(a),r=[],s=t.length,l=0,u=t[0],h=0;h<a;h++){var c,d=this.getRawIndex(h);if(0===s)c=e.call(i,h);else if(1===s){var f=this._getFast(u,d);c=e.call(i,f,h)}else{for(var p=0;p<s;p++)r[p]=this._getFast(u,d);r[p]=h,c=e.apply(i,r)}c&&(o[l++]=d)}return l<a&&(this._indices=o),this._count=l,this._extent={},this.getRawIndex=this._indices?Nf:Pf,this}},Df.selectRange=function(t){if(this._count){var e=[];for(var i in t)t.hasOwnProperty(i)&&e.push(i);var n=e.length;if(n){var a=this.count(),o=new(Sf(this))(a),r=0,s=e[0],l=t[s][0],u=t[s][1],h=!1;if(!this._indices){var c=0;if(1===n){for(var d=this._storage[e[0]],f=0;f<this._chunkCount;f++)for(var p=d[f],g=Math.min(this._count-f*this._chunkSize,this._chunkSize),m=0;m<g;m++){(l<=(w=p[m])&&w<=u||isNaN(w))&&(o[r++]=c),c++}h=!0}else if(2===n){d=this._storage[s];var v=this._storage[e[1]],y=t[e[1]][0],x=t[e[1]][1];for(f=0;f<this._chunkCount;f++){p=d[f];var _=v[f];for(g=Math.min(this._count-f*this._chunkSize,this._chunkSize),m=0;m<g;m++){var w=p[m],b=_[m];(l<=w&&w<=u||isNaN(w))&&(y<=b&&b<=x||isNaN(b))&&(o[r++]=c),c++}}h=!0}}if(!h)if(1===n)for(m=0;m<a;m++){var S=this.getRawIndex(m);(l<=(w=this._getFast(s,S))&&w<=u||isNaN(w))&&(o[r++]=S)}else for(m=0;m<a;m++){var M=!0;for(S=this.getRawIndex(m),f=0;f<n;f++){var I=e[f];((w=this._getFast(i,S))<t[I][0]||w>t[I][1])&&(M=!1)}M&&(o[r++]=this.getRawIndex(m))}return r<a&&(this._indices=o),this._count=r,this._extent={},this.getRawIndex=this._indices?Nf:Pf,this}}},Df.mapArray=function(t,e,i,n){"function"==typeof t&&(n=i,i=e,e=t,t=[]),i=i||n||this;var a=[];return this.each(t,function(){a.push(e&&e.apply(this,arguments))},i),a},Df.map=function(t,e,i,n){i=i||n||this;var a=Rf(this,t=N(Ef(t),this.getDimension,this));a._indices=this._indices,a.getRawIndex=a._indices?Nf:Pf;for(var o=a._storage,r=[],s=this._chunkSize,l=t.length,u=this.count(),h=[],c=a._rawExtent,d=0;d<u;d++){for(var f=0;f<l;f++)h[f]=this.get(t[f],d);h[l]=d;var p=e&&e.apply(i,h);if(null!=p){"object"!=typeof p&&(r[0]=p,p=r);for(var g=this.getRawIndex(d),m=Math.floor(g/s),v=g%s,y=0;y<p.length;y++){var x=t[y],_=p[y],w=c[x],b=o[x];b&&(b[m][v]=_),_<w[0]&&(w[0]=_),_>w[1]&&(w[1]=_)}}}return a},Df.downSample=function(t,e,i,n){for(var a=Rf(this,[t]),o=a._storage,r=[],s=Math.floor(1/e),l=o[t],u=this.count(),h=this._chunkSize,c=a._rawExtent[t],d=new(Sf(this))(u),f=0,p=0;p<u;p+=s){u-p<s&&(s=u-p,r.length=s);for(var g=0;g<s;g++){var m=this.getRawIndex(p+g),v=Math.floor(m/h),y=m%h;r[g]=l[v][y]}var x=i(r),_=this.getRawIndex(Math.min(p+n(r,x)||0,u-1)),w=_%h;(l[Math.floor(_/h)][w]=x)<c[0]&&(c[0]=x),x>c[1]&&(c[1]=x),d[f++]=_}return a._count=f,a._indices=d,a.getRawIndex=Nf,a},Df.getItemModel=function(t){var e=this.hostModel;return new dl(this.getRawDataItem(t),e,e&&e.ecModel)},Df.diff=function(e){var i=this;return new df(e?e.getIndices():[],this.getIndices(),function(t){return Of(e,t)},function(t){return Of(i,t)})},Df.getVisual=function(t){var e=this._visual;return e&&e[t]},Df.setVisual=function(t,e){if(vf(t))for(var i in t)t.hasOwnProperty(i)&&this.setVisual(i,t[i]);else this._visual=this._visual||{},this._visual[t]=e},Df.setLayout=function(t,e){if(vf(t))for(var i in t)t.hasOwnProperty(i)&&this.setLayout(i,t[i]);else this._layout[t]=e},Df.getLayout=function(t){return this._layout[t]},Df.getItemLayout=function(t){return this._itemLayouts[t]},Df.setItemLayout=function(t,e,i){this._itemLayouts[t]=i?L(this._itemLayouts[t]||{},e):e},Df.clearItemLayouts=function(){this._itemLayouts.length=0},Df.getItemVisual=function(t,e,i){var n=this._itemVisuals[t],a=n&&n[e];return null!=a||i?a:this.getVisual(e)},Df.setItemVisual=function(t,e,i){var n=this._itemVisuals[t]||{},a=this.hasItemVisual;if(this._itemVisuals[t]=n,vf(e))for(var o in e)e.hasOwnProperty(o)&&(n[o]=e[o],a[o]=!0);else n[e]=i,a[e]=!0},Df.clearAllVisual=function(){this._visual={},this._itemVisuals=[],this.hasItemVisual={}};function Vf(t){t.seriesIndex=this.seriesIndex,t.dataIndex=this.dataIndex,t.dataType=this.dataType}function Gf(t,e,i){Lu.isInstance(e)||(e=Lu.seriesDataToSource(e)),i=i||{},t=(t||[]).slice();for(var n=(i.dimsDef||[]).slice(),l=Q(i.encodeDef),a=Q(),o=Q(),u=[],r=function(t,e,i,n){var a=Math.max(t.dimensionsDetectCount||1,e.length,i.length,n||0);return E(e,function(t){var e=t.dimsDef;e&&(a=Math.max(a,e.length))}),a}(e,t,n,i.dimCount),s=0;s<r;s++){var h=n[s]=L({},z(n[s])?n[s]:{name:n[s]}),c=h.name,d=u[s]={otherDims:{}};null!=c&&null==a.get(c)&&(d.name=d.displayName=c,a.set(c,s)),null!=h.type&&(d.type=h.type),null!=h.displayName&&(d.displayName=h.displayName)}l.each(function(t,i){if(1===(t=wa(t).slice()).length&&!R(t[0])&&t[0]<0)l.set(i,!1);else{var n=l.set(i,[]);E(t,function(t,e){R(t)&&(t=a.get(t)),null!=t&&t<r&&(n[e]=t,p(u[t],i,e))})}});var f=0;function p(t,e,i){null!=pf.get(e)?t.otherDims[e]=i:(t.coordDim=e,t.coordDimIndex=i,o.set(e,!0))}E(t,function(a,t){var o,r,s;if(R(a))o=a,a={};else{o=a.name;var e=a.ordinalMeta;a.ordinalMeta=null,(a=D(a)).ordinalMeta=e,r=a.dimsDef,s=a.otherDims,a.name=a.coordDim=a.coordDimIndex=a.dimsDef=a.otherDims=null}if(!1!==(i=l.get(o))){var i;if(!(i=wa(i)).length)for(var n=0;n<(r&&r.length||1);n++){for(;f<u.length&&null!=u[f].coordDim;)f++;f<u.length&&i.push(f++)}E(i,function(t,e){var i=u[t];if(p(C(i,a),o,e),null==i.name&&r){var n=r[e];z(n)||(n={name:n}),i.name=i.displayName=n.name,i.defaultTooltip=n.defaultTooltip}s&&C(i.otherDims,s)})}});var g=i.generateCoord,m=i.generateCoordCount,v=null!=m;m=g?m||1:0;for(var y,x,_=g||"value",w=0;w<r;w++){null==(d=u[w]=u[w]||{}).coordDim&&(d.coordDim=Ff(_,o,v),d.coordDimIndex=0,(!g||m<=0)&&(d.isExtraCoord=!0),m--),null==d.name&&(d.name=Ff(d.coordDim,a)),null==d.type&&(y=e,x=w,d.name,Eu(y.data,y.sourceFormat,y.seriesLayoutBy,y.dimensionsDefine,y.startIndex,x))&&(d.type="ordinal")}return u}function Ff(t,e,i){if(i||null!=e.get(t)){for(var n=0;null!=e.get(t+n);)n++;t+=n}return e.set(t,!0),t}Df.setItemGraphicEl=function(t,e){var i=this.hostModel;e&&(e.dataIndex=t,e.dataType=this.dataType,e.seriesIndex=i&&i.seriesIndex,"group"===e.type&&e.traverse(Vf,e)),this._graphicEls[t]=e},Df.getItemGraphicEl=function(t){return this._graphicEls[t]},Df.eachItemGraphicEl=function(i,n){E(this._graphicEls,function(t,e){t&&i&&i.call(n,t,e)})},Df.cloneShallow=function(t){if(!t){var e=N(this.dimensions,this.getDimensionInfo,this);t=new Tf(e,this.hostModel)}if(t._storage=this._storage,Af(t,this),this._indices){var i=this._indices.constructor;t._indices=new i(this._indices)}else t._indices=null;return t.getRawIndex=t._indices?Nf:Pf,t},Df.wrapMethod=function(t,e){var i=this[t];"function"==typeof i&&(this.__wrappedMethods=this.__wrappedMethods||[],this.__wrappedMethods.push(t),this[t]=function(){var t=i.apply(this,arguments);return e.apply(this,[t].concat(U(arguments)))})},Df.TRANSFERABLE_METHODS=["cloneShallow","downSample","map"],Df.CHANGABLE_METHODS=["filterSelf","selectRange"];var Wf=function(t,e){return Gf((e=e||{}).coordDimensions||[],t,{dimsDef:e.dimensionsDefine||t.dimensionsDefine,encodeDef:e.encodeDefine||t.encodeDefine,dimCount:e.dimensionsCount,generateCoord:e.generateCoord,generateCoordCount:e.generateCoordCount})};function Hf(t,i,e){var n,a,o,r,s=(e=e||{}).byIndex,l=e.stackedCoordDimension,u=!(!t||!t.get("stack"));if(E(i,function(t,e){R(t)&&(i[e]=t={name:t}),u&&!t.isExtraCoord&&(s||n||!t.ordinalMeta||(n=t),a||"ordinal"===t.type||"time"===t.type||l&&l!==t.coordDim||(a=t))}),!a||s||n||(s=!0),a){o="__\0ecstackresult",r="__\0ecstackedover",n&&(n.createInvertedIndices=!0);var h=a.coordDim,c=a.type,d=0;E(i,function(t){t.coordDim===h&&d++}),i.push({name:o,coordDim:h,coordDimIndex:d,type:c,isExtraCoord:!0,isCalculationCoord:!0}),d++,i.push({name:r,coordDim:r,coordDimIndex:d,type:c,isExtraCoord:!0,isCalculationCoord:!0})}return{stackedDimension:a&&a.name,stackedByDimension:n&&n.name,isStackedByIndex:s,stackedOverDimension:r,stackResultDimension:o}}function Zf(t,e){return!!e&&e===t.getCalculationInfo("stackedDimension")}function Uf(t,e){return Zf(t,e)?t.getCalculationInfo("stackResultDimension"):e}function Xf(t,e,i){i=i||{},Lu.isInstance(t)||(t=Lu.seriesDataToSource(t));var n,a=e.get("coordinateSystem"),o=Hu.get(a),r=xu(e);r&&(n=N(r.coordSysDims,function(t){var e={name:t},i=r.axisMap.get(t);if(i){var n=i.get("type");e.type=mf(n)}return e})),n=n||(o&&(o.getDimensionsInfo?o.getDimensionsInfo():o.dimensions.slice())||["x","y"]);var s,l,u=Wf(t,{coordDimensions:n,generateCoord:i.generateCoord});r&&E(u,function(t,e){var i=t.coordDim,n=r.categoryAxisMap.get(i);n&&(null==s&&(s=e),t.ordinalMeta=n.getOrdinalMeta()),null!=t.otherDims.itemName&&(l=!0)}),l||null==s||(u[s].otherDims.itemName=0);var h=Hf(e,u),c=new Tf(u,e);c.setCalculationInfo(h);var d=null!=s&&function(t){if(t.sourceFormat===bu){var e=function(t){var e=0;for(;e<t.length&&null==t[e];)e++;return t[e]}(t.data||[]);return null!=e&&!k(Ma(e))}}(t)?function(t,e,i,n){return n===s?i:this.defaultDimValueGetter(t,e,i,n)}:null;return c.hasItemOption=!1,c.initData(t,null,d),c}function Yf(t){this._setting=t||{},this._extent=[1/0,-1/0],this._interval=0,this.init&&this.init.apply(this,arguments)}function jf(t){this.categories=t.categories||[],this._needCollect=t.needCollect,this._deduplication=t.deduplication,this._map}Yf.prototype.parse=function(t){return t},Yf.prototype.getSetting=function(t){return this._setting[t]},Yf.prototype.contain=function(t){var e=this._extent;return t>=e[0]&&t<=e[1]},Yf.prototype.normalize=function(t){var e=this._extent;return e[1]===e[0]?.5:(t-e[0])/(e[1]-e[0])},Yf.prototype.scale=function(t){var e=this._extent;return t*(e[1]-e[0])+e[0]},Yf.prototype.unionExtent=function(t){var e=this._extent;t[0]<e[0]&&(e[0]=t[0]),t[1]>e[1]&&(e[1]=t[1])},Yf.prototype.unionExtentFromData=function(t,e){this.unionExtent(t.getApproximateExtent(e))},Yf.prototype.getExtent=function(){return this._extent.slice()},Yf.prototype.setExtent=function(t,e){var i=this._extent;isNaN(t)||(i[0]=t),isNaN(e)||(i[1]=e)},Yf.prototype.isBlank=function(){return this._isBlank},Yf.prototype.setBlank=function(t){this._isBlank=t},Yf.prototype.getLabel=null,Ga(Yf),Ua(Yf,{registerWhenExtend:!0}),jf.createByAxisModel=function(t){var e=t.option,i=e.data,n=i&&N(i,$f);return new jf({categories:n,needCollect:!n,deduplication:!1!==e.dedplication})};var qf=jf.prototype;function Kf(t){return t._map||(t._map=Q(t.categories))}function $f(t){return z(t)&&null!=t.value?t.value:t+""}qf.getOrdinal=function(t){return Kf(this).get(t)},qf.parseAndCollect=function(t){var e,i=this._needCollect;if("string"!=typeof t&&!i)return t;if(i&&!this._deduplication)return e=this.categories.length,this.categories[e]=t,e;var n=Kf(this);return null==(e=n.get(t))&&(i?(e=this.categories.length,this.categories[e]=t,n.set(t,e)):e=NaN),e};var Jf=Yf.prototype,Qf=Yf.extend({type:"ordinal",init:function(t,e){t&&!k(t)||(t=new jf({categories:t})),this._ordinalMeta=t,this._extent=e||[0,t.categories.length-1]},parse:function(t){return"string"==typeof t?this._ordinalMeta.getOrdinal(t):Math.round(t)},contain:function(t){return t=this.parse(t),Jf.contain.call(this,t)&&null!=this._ordinalMeta.categories[t]},normalize:function(t){return Jf.normalize.call(this,this.parse(t))},scale:function(t){return Math.round(Jf.scale.call(this,t))},getTicks:function(){for(var t=[],e=this._extent,i=e[0];i<=e[1];)t.push(i),i++;return t},getLabel:function(t){if(!this.isBlank())return this._ordinalMeta.categories[t]},count:function(){return this._extent[1]-this._extent[0]+1},unionExtentFromData:function(t,e){this.unionExtent(t.getApproximateExtent(e))},getOrdinalMeta:function(){return this._ordinalMeta},niceTicks:et,niceExtent:et});Qf.create=function(){return new Qf};var tp=_l;function ep(t){return Sl(t)+2}function ip(t,e,i){t[e]=Math.max(Math.min(t[e],i[1]),i[0])}function np(t,e){isFinite(t[0])||(t[0]=e[0]),isFinite(t[1])||(t[1]=e[1]),ip(t,0,e),ip(t,1,e),t[0]>t[1]&&(t[0]=t[1])}var ap=_l,op=Yf.extend({type:"interval",_interval:0,_intervalPrecision:2,setExtent:function(t,e){var i=this._extent;isNaN(t)||(i[0]=parseFloat(t)),isNaN(e)||(i[1]=parseFloat(e))},unionExtent:function(t){var e=this._extent;t[0]<e[0]&&(e[0]=t[0]),t[1]>e[1]&&(e[1]=t[1]),op.prototype.setExtent.call(this,e[0],e[1])},getInterval:function(){return this._interval},setInterval:function(t){this._interval=t,this._niceExtent=this._extent.slice(),this._intervalPrecision=ep(t)},getTicks:function(){return function(t,e,i,n){var a=[];if(!t)return a;e[0]<i[0]&&a.push(e[0]);for(var o=i[0];o<=i[1]&&(a.push(o),(o=tp(o+t,n))!==a[a.length-1]);)if(1e4<a.length)return[];return e[1]>(a.length?a[a.length-1]:i[1])&&a.push(e[1]),a}(this._interval,this._extent,this._niceExtent,this._intervalPrecision)},getLabel:function(t,e){if(null==t)return"";var i=e&&e.precision;return null==i?i=Sl(t)||0:"auto"===i&&(i=this._intervalPrecision),zl(t=ap(t,i,!0))},niceTicks:function(t,e,i){t=t||5;var n=this._extent,a=n[1]-n[0];if(isFinite(a)){a<0&&(a=-a,n.reverse());var o=function(t,e,i,n){var a={},o=t[1]-t[0],r=a.interval=Nl(o/e,!0);null!=i&&r<i&&(r=a.interval=i),null!=n&&n<r&&(r=a.interval=n);var s=a.intervalPrecision=ep(r);return np(a.niceTickExtent=[tp(Math.ceil(t[0]/r)*r,s),tp(Math.floor(t[1]/r)*r,s)],t),a}(n,t,e,i);this._intervalPrecision=o.intervalPrecision,this._interval=o.interval,this._niceExtent=o.niceTickExtent}},niceExtent:function(t){var e=this._extent;if(e[0]===e[1])if(0!==e[0]){var i=e[0];t.fixMax||(e[1]+=i/2),e[0]-=i/2}else e[1]=1;var n=e[1]-e[0];isFinite(n)||(e[0]=0,e[1]=1),this.niceTicks(t.splitNumber,t.minInterval,t.maxInterval);var a=this._interval;t.fixMin||(e[0]=ap(Math.floor(e[0]/a)*a)),t.fixMax||(e[1]=ap(Math.ceil(e[1]/a)*a))}});op.create=function(){return new op};var rp="__ec_stack_",sp="undefined"!=typeof Float32Array?Float32Array:Array;function lp(t){return t.get("stack")||rp+t.seriesIndex}function up(t){return t.dim+t.index}function hp(t,e){var i=[];return e.eachSeriesByType(t,function(t){mp(t)&&!vp(t)&&i.push(t)}),i}function cp(t){var g=function(t){var l={};E(t,function(t){var e=t.coordinateSystem.getBaseAxis();if("time"===e.type||"value"===e.type)for(var i=t.getData(),n=e.dim+"_"+e.index,a=i.mapDimension(e.dim),o=0,r=i.count();o<r;++o){var s=i.get(a,o);l[n]?l[n].push(s):l[n]=[s]}});var e=[];for(var i in l)if(l.hasOwnProperty(i)){var n=l[i];if(n){n.sort(function(t,e){return t-e});for(var a=null,o=1;o<n.length;++o){var r=n[o]-n[o-1];0<r&&(a=null===a?r:Math.min(a,r))}e[i]=a}}return e}(t),m=[];return E(t,function(t){var e,i=t.coordinateSystem.getBaseAxis(),n=i.getExtent();if("category"===i.type)e=i.getBandWidth();else if("value"===i.type||"time"===i.type){var a=i.dim+"_"+i.index,o=g[a],r=Math.abs(n[1]-n[0]),s=i.scale.getExtent(),l=Math.abs(s[1]-s[0]);e=o?r/l*o:r}else{var u=t.getData();e=Math.abs(n[1]-n[0])/u.count()}var h=xl(t.get("barWidth"),e),c=xl(t.get("barMaxWidth"),e),d=xl(t.get("barMinWidth")||1,e),f=t.get("barGap"),p=t.get("barCategoryGap");m.push({bandWidth:e,barWidth:h,barMaxWidth:c,barMinWidth:d,barGap:f,barCategoryGap:p,axisKey:up(i),stackId:lp(t)})}),dp(m)}function dp(t){var d={};E(t,function(t,e){var i=t.axisKey,n=t.bandWidth,a=d[i]||{bandWidth:n,remainedWidth:n,autoWidthCount:0,categoryGap:"20%",gap:"30%",stacks:{}},o=a.stacks;d[i]=a;var r=t.stackId;o[r]||a.autoWidthCount++,o[r]=o[r]||{width:0,maxWidth:0};var s=t.barWidth;s&&!o[r].width&&(o[r].width=s,s=Math.min(a.remainedWidth,s),a.remainedWidth-=s);var l=t.barMaxWidth;l&&(o[r].maxWidth=l);var u=t.barMinWidth;u&&(o[r].minWidth=u);var h=t.barGap;null!=h&&(a.gap=h);var c=t.barCategoryGap;null!=c&&(a.categoryGap=c)});var f={};return E(d,function(t,i){f[i]={};var e=t.stacks,n=t.bandWidth,a=xl(t.categoryGap,n),o=xl(t.gap,1),r=t.remainedWidth,s=t.autoWidthCount,l=(r-a)/(s+(s-1)*o);l=Math.max(l,0),E(e,function(t){var e=t.maxWidth,i=t.minWidth;if(t.width){n=t.width;e&&(n=Math.min(n,e)),i&&(n=Math.max(n,i)),t.width=n,r-=n,s--}else{var n=l;e&&e<n&&(n=Math.min(e,r)),i&&n<i&&(n=i),n!==l&&(t.width=n,r-=n,s--)}}),l=(r-a)/(s+(s-1)*o),l=Math.max(l,0);var u,h=0;E(e,function(t,e){t.width||(t.width=l),h+=(u=t).width*(1+o)}),u&&(h-=u.width*o);var c=-h/2;E(e,function(t,e){f[i][e]=f[i][e]||{bandWidth:n,offset:c,width:t.width},c+=t.width*(1+o)})}),f}function fp(t,e,i){if(t&&e){var n=t[up(e)];return null!=n&&null!=i&&(n=n[lp(i)]),n}}function pp(t,e){var i=hp(t,e),A=cp(i),T={};E(i,function(t){var e=t.getData(),i=t.coordinateSystem,n=i.getBaseAxis(),a=lp(t),o=A[up(n)][a],r=o.offset,s=o.width,l=i.getOtherAxis(n),u=t.get("barMinHeight")||0;T[a]=T[a]||[],e.setLayout({bandWidth:o.bandWidth,offset:r,size:s});for(var h=e.mapDimension(l.dim),c=e.mapDimension(n.dim),d=Zf(e,h),f=l.isHorizontal(),p=yp(n,l,d),g=0,m=e.count();g<m;g++){var v=e.get(h,g),y=e.get(c,g);if(!isNaN(v)&&!isNaN(y)){var x,_,w,b,S,M=0<=v?"p":"n",I=p;if(d&&(T[a][y]||(T[a][y]={p:p,n:p}),I=T[a][y][M]),f)x=I,_=(S=i.dataToPoint([v,y]))[1]+r,w=S[0]-p,b=s,Math.abs(w)<u&&(w=(w<0?-1:1)*u),d&&(T[a][y][M]+=w);else x=(S=i.dataToPoint([y,v]))[0]+r,_=I,w=s,b=S[1]-p,Math.abs(b)<u&&(b=(b<=0?-1:1)*u),d&&(T[a][y][M]+=b);e.setItemLayout(g,{x:x,y:_,width:w,height:b})}}},this)}var gp={seriesType:"bar",plan:Jh(),reset:function(t){if(mp(t)&&vp(t)){var e=t.getData(),h=t.coordinateSystem,c=h.getBaseAxis(),d=h.getOtherAxis(c),f=e.mapDimension(d.dim),p=e.mapDimension(c.dim),g=d.isHorizontal(),m=g?0:1,v=fp(cp([t]),c,t).width;return.5<v||(v=.5),{progress:function(t,e){var i,n=t.count,a=new sp(2*n),o=new sp(n),r=[],s=[],l=0,u=0;for(;null!=(i=t.next());)s[m]=e.get(f,i),s[1-m]=e.get(p,i),r=h.dataToPoint(s,null,r),a[l++]=r[0],a[l++]=r[1],o[u++]=i;e.setLayout({largePoints:a,largeDataIndices:o,barWidth:v,valueAxisStart:yp(c,d,!1),valueAxisHorizontal:g})}}}}};function mp(t){return t.coordinateSystem&&"cartesian2d"===t.coordinateSystem.type}function vp(t){return t.pipelineContext&&t.pipelineContext.large}function yp(t,e){return e.toGlobalCoord(e.dataToCoord("log"===e.type?1:0))}var xp=op.prototype,_p=Math.ceil,wp=Math.floor,bp=36e5,Sp=864e5,Mp=op.extend({type:"time",getLabel:function(t){var e=this._stepLvl,i=new Date(t);return ql(e[0],i,this.getSetting("useUTC"))},niceExtent:function(t){var e=this._extent;if(e[0]===e[1]&&(e[0]-=Sp,e[1]+=Sp),e[1]===-1/0&&e[0]===1/0){var i=new Date;e[1]=+new Date(i.getFullYear(),i.getMonth(),i.getDate()),e[0]=e[1]-Sp}this.niceTicks(t.splitNumber,t.minInterval,t.maxInterval);var n=this._interval;t.fixMin||(e[0]=_l(wp(e[0]/n)*n)),t.fixMax||(e[1]=_l(_p(e[1]/n)*n))},niceTicks:function(t,e,i){t=t||10;var n=this._extent,a=n[1]-n[0],o=a/t;null!=e&&o<e&&(o=e),null!=i&&i<o&&(o=i);var r=Ip.length,s=function(t,e,i,n){for(;i<n;){var a=i+n>>>1;t[a][1]<e?i=1+a:n=a}return i}(Ip,o,0,r),l=Ip[Math.min(s,r-1)],u=l[1];"year"===l[0]&&(u*=Nl(a/u/t,!0));var h=this.getSetting("useUTC")?0:60*new Date(+n[0]||+n[1]).getTimezoneOffset()*1e3,c=[Math.round(_p((n[0]-h)/u)*u+h),Math.round(wp((n[1]-h)/u)*u+h)];np(c,n),this._stepLvl=l,this._interval=u,this._niceExtent=c},parse:function(t){return+Ll(t)}});E(["contain","normalize"],function(e){Mp.prototype[e]=function(t){return xp[e].call(this,this.parse(t))}});var Ip=[["hh:mm:ss",1e3],["hh:mm:ss",5e3],["hh:mm:ss",1e4],["hh:mm:ss",15e3],["hh:mm:ss",3e4],["hh:mm\nMM-dd",6e4],["hh:mm\nMM-dd",3e5],["hh:mm\nMM-dd",6e5],["hh:mm\nMM-dd",9e5],["hh:mm\nMM-dd",18e5],["hh:mm\nMM-dd",bp],["hh:mm\nMM-dd",72e5],["hh:mm\nMM-dd",6*bp],["hh:mm\nMM-dd",432e5],["MM-dd\nyyyy",Sp],["MM-dd\nyyyy",2*Sp],["MM-dd\nyyyy",3*Sp],["MM-dd\nyyyy",4*Sp],["MM-dd\nyyyy",5*Sp],["MM-dd\nyyyy",6*Sp],["week",7*Sp],["MM-dd\nyyyy",864e6],["week",14*Sp],["week",21*Sp],["month",31*Sp],["week",42*Sp],["month",62*Sp],["week",70*Sp],["quarter",95*Sp],["month",31*Sp*4],["month",13392e6],["half-year",16416e6],["month",31*Sp*8],["month",26784e6],["year",380*Sp]];Mp.create=function(t){return new Mp({useUTC:t.ecModel.get("useUTC")})};var Ap=Yf.prototype,Tp=op.prototype,Dp=Sl,Cp=_l,Lp=Math.floor,kp=Math.ceil,Pp=Math.pow,Np=Math.log,Op=Yf.extend({type:"log",base:10,$constructor:function(){Yf.apply(this,arguments),this._originalScale=new op},getTicks:function(){var i=this._originalScale,n=this._extent,a=i.getExtent();return N(Tp.getTicks.call(this),function(t){var e=_l(Pp(this.base,t));return e=t===n[0]&&i.__fixMin?Ep(e,a[0]):e,e=t===n[1]&&i.__fixMax?Ep(e,a[1]):e},this)},getLabel:Tp.getLabel,scale:function(t){return t=Ap.scale.call(this,t),Pp(this.base,t)},setExtent:function(t,e){var i=this.base;t=Np(t)/Np(i),e=Np(e)/Np(i),Tp.setExtent.call(this,t,e)},getExtent:function(){var t=this.base,e=Ap.getExtent.call(this);e[0]=Pp(t,e[0]),e[1]=Pp(t,e[1]);var i=this._originalScale,n=i.getExtent();return i.__fixMin&&(e[0]=Ep(e[0],n[0])),i.__fixMax&&(e[1]=Ep(e[1],n[1])),e},unionExtent:function(t){this._originalScale.unionExtent(t);var e=this.base;t[0]=Np(t[0])/Np(e),t[1]=Np(t[1])/Np(e),Ap.unionExtent.call(this,t)},unionExtentFromData:function(t,e){this.unionExtent(t.getApproximateExtent(e))},niceTicks:function(t){t=t||10;var e=this._extent,i=e[1]-e[0];if(!(i==1/0||i<=0)){var n=kl(i);for(t/i*n<=.5&&(n*=10);!isNaN(n)&&Math.abs(n)<1&&0<Math.abs(n);)n*=10;var a=[_l(kp(e[0]/n)*n),_l(Lp(e[1]/n)*n)];this._interval=n,this._niceExtent=a}},niceExtent:function(t){Tp.niceExtent.call(this,t);var e=this._originalScale;e.__fixMin=t.fixMin,e.__fixMax=t.fixMax}});function Ep(t,e){return Cp(t,Dp(e))}function Rp(t,e){var i,n,a,o=t.type,r=e.getMin(),s=e.getMax(),l=null!=r,u=null!=s,h=t.getExtent();"ordinal"===o?i=e.getCategories().length:(k(n=e.get("boundaryGap"))||(n=[n||0,n||0]),"boolean"==typeof n[0]&&(n=[0,0]),n[0]=xl(n[0],1),n[1]=xl(n[1],1),a=h[1]-h[0]||Math.abs(h[0])),null==r&&(r="ordinal"===o?i?0:NaN:h[0]-n[0]*a),null==s&&(s="ordinal"===o?i?i-1:NaN:h[1]+n[1]*a),"dataMin"===r?r=h[0]:"function"==typeof r&&(r=r({min:h[0],max:h[1]})),"dataMax"===s?s=h[1]:"function"==typeof s&&(s=s({min:h[0],max:h[1]})),null!=r&&isFinite(r)||(r=NaN),null!=s&&isFinite(s)||(s=NaN),t.setBlank(F(r)||F(s)||"ordinal"===o&&!t.getOrdinalMeta().categories.length),e.getNeedCrossZero()&&(0<r&&0<s&&!l&&(r=0),r<0&&s<0&&!u&&(s=0));var c=e.ecModel;if(c&&"time"===o){var d,f=hp("bar",c);if(E(f,function(t){d|=t.getBaseAxis()===e.axis}),d){var p=cp(f),g=function(t,e,i,n){var a=i.axis.getExtent(),o=a[1]-a[0],r=fp(n,i.axis);if(void 0===r)return{min:t,max:e};var s=1/0;E(r,function(t){s=Math.min(t.offset,s)});var l=-1/0;E(r,function(t){l=Math.max(t.offset+t.width,l)}),s=Math.abs(s),l=Math.abs(l);var u=s+l,h=e-t,c=h/(1-(s+l)/o)-h;return{min:t-=s/u*c,max:e+=l/u*c}}(r,s,e,p);r=g.min,s=g.max}}return[r,s]}function zp(t,e){var i=Rp(t,e),n=null!=e.getMin(),a=null!=e.getMax(),o=e.get("splitNumber");"log"===t.type&&(t.base=e.get("logBase"));var r=t.type;t.setExtent(i[0],i[1]),t.niceExtent({splitNumber:o,fixMin:n,fixMax:a,minInterval:"interval"===r||"time"===r?e.get("minInterval"):null,maxInterval:"interval"===r||"time"===r?e.get("maxInterval"):null});var s=e.get("interval");null!=s&&t.setInterval&&t.setInterval(s)}function Bp(t,e){if(e=e||t.get("type"))switch(e){case"category":return new Qf(t.getOrdinalMeta?t.getOrdinalMeta():t.getCategories(),[1/0,-1/0]);case"value":return new op;default:return(Yf.getClass(e)||op).create(t)}}function Vp(i){var e,n=i.getLabelModel().get("formatter"),a="category"===i.type?i.scale.getExtent()[0]:null;return"string"==typeof n?(e=n,n=function(t){return t=i.scale.getLabel(t),e.replace("{value}",null!=t?t:"")}):"function"==typeof n?function(t,e){return null!=a&&(e=t-a),n(Gp(i,t),e)}:function(t){return i.scale.getLabel(t)}}function Gp(t,e){return"category"===t.type?t.scale.getLabel(e):e}function Fp(t){var e=t.get("interval");return null==e?"auto":e}function Wp(t){return"category"===t.type&&0===Fp(t.getLabelModel())}E(["contain","normalize"],function(e){Op.prototype[e]=function(t){return t=Np(t)/Np(this.base),Ap[e].call(this,t)}}),Op.create=function(){return new Op};var Hp={getMin:function(t){var e=this.option,i=t||null==e.rangeStart?e.min:e.rangeStart;return this.axis&&null!=i&&"dataMin"!==i&&"function"!=typeof i&&!F(i)&&(i=this.axis.scale.parse(i)),i},getMax:function(t){var e=this.option,i=t||null==e.rangeEnd?e.max:e.rangeEnd;return this.axis&&null!=i&&"dataMax"!==i&&"function"!=typeof i&&!F(i)&&(i=this.axis.scale.parse(i)),i},getNeedCrossZero:function(){var t=this.option;return null==t.rangeStart&&null==t.rangeEnd&&!t.scale},getCoordSysModel:et,setRange:function(t,e){this.option.rangeStart=t,this.option.rangeEnd=e},resetRange:function(){this.option.rangeStart=this.option.rangeEnd=null}},Zp=ds({type:"triangle",shape:{cx:0,cy:0,width:0,height:0},buildPath:function(t,e){var i=e.cx,n=e.cy,a=e.width/2,o=e.height/2;t.moveTo(i,n-o),t.lineTo(i+a,n+o),t.lineTo(i-a,n+o),t.closePath()}}),Up=ds({type:"diamond",shape:{cx:0,cy:0,width:0,height:0},buildPath:function(t,e){var i=e.cx,n=e.cy,a=e.width/2,o=e.height/2;t.moveTo(i,n-o),t.lineTo(i+a,n),t.lineTo(i,n+o),t.lineTo(i-a,n),t.closePath()}}),Xp=ds({type:"pin",shape:{x:0,y:0,width:0,height:0},buildPath:function(t,e){var i=e.x,n=e.y,a=e.width/5*3,o=Math.max(a,e.height),r=a/2,s=r*r/(o-r),l=n-o+r+s,u=Math.asin(s/r),h=Math.cos(u)*r,c=Math.sin(u),d=Math.cos(u),f=.6*r,p=.7*r;t.moveTo(i-h,l+s),t.arc(i,l,r,Math.PI-u,2*Math.PI+u),t.bezierCurveTo(i+h-c*f,l+s+d*f,i,n-p,i,n),t.bezierCurveTo(i,n-p,i-h+c*f,l+s+d*f,i-h,l+s),t.closePath()}}),Yp=ds({type:"arrow",shape:{x:0,y:0,width:0,height:0},buildPath:function(t,e){var i=e.height,n=e.width,a=e.x,o=e.y,r=n/3*2;t.moveTo(a,o),t.lineTo(a+r,o+i),t.lineTo(a,o+i/4*3),t.lineTo(a-r,o+i),t.lineTo(a,o),t.closePath()}}),jp={line:function(t,e,i,n,a){a.x1=t,a.y1=e+n/2,a.x2=t+i,a.y2=e+n/2},rect:function(t,e,i,n,a){a.x=t,a.y=e,a.width=i,a.height=n},roundRect:function(t,e,i,n,a){a.x=t,a.y=e,a.width=i,a.height=n,a.r=Math.min(i,n)/4},square:function(t,e,i,n,a){var o=Math.min(i,n);a.x=t,a.y=e,a.width=o,a.height=o},circle:function(t,e,i,n,a){a.cx=t+i/2,a.cy=e+n/2,a.r=Math.min(i,n)/2},diamond:function(t,e,i,n,a){a.cx=t+i/2,a.cy=e+n/2,a.width=i,a.height=n},pin:function(t,e,i,n,a){a.x=t+i/2,a.y=e+n/2,a.width=i,a.height=n},arrow:function(t,e,i,n,a){a.x=t+i/2,a.y=e+n/2,a.width=i,a.height=n},triangle:function(t,e,i,n,a){a.cx=t+i/2,a.cy=e+n/2,a.width=i,a.height=n}},qp={};E({line:Ur,rect:Hr,roundRect:Hr,square:Hr,circle:Lr,diamond:Up,pin:Xp,arrow:Yp,triangle:Zp},function(t,e){qp[e]=new t});var Kp=ds({type:"symbol",shape:{symbolType:"",x:0,y:0,width:0,height:0},calculateTextPosition:function(t,e,i){var n=dn(t,e,i),a=this.shape;return a&&"pin"===a.symbolType&&"inside"===e.textPosition&&(n.y=i.y+.4*i.height),n},buildPath:function(t,e,i){var n=e.symbolType;if("none"!==n){var a=qp[n];a=a||qp[n="rect"],jp[n](e.x,e.y,e.width,e.height,a.shape),a.buildPath(t,a.shape,i)}}});function $p(t,e){if("image"!==this.type){var i=this.style,n=this.shape;n&&"line"===n.symbolType?i.stroke=t:this.__isEmptyBrush?(i.stroke=t,i.fill=e||"#fff"):(i.fill&&(i.fill=t),i.stroke&&(i.stroke=t)),this.dirty(!1)}}function Jp(t,e,i,n,a,o,r){var s,l=0===t.indexOf("empty");return l&&(t=t.substr(5,1).toLowerCase()+t.substr(6)),(s=0===t.indexOf("image://")?ms(t.slice(8),new bi(e,i,n,a),r?"center":"cover"):0===t.indexOf("path://")?gs(t.slice(7),{},new bi(e,i,n,a),r?"center":"cover"):new Kp({shape:{symbolType:t,x:e,y:i,width:n,height:a}})).__isEmptyBrush=l,s.setColor=$p,s.setColor(o),s}var Qp={isDimensionStacked:Zf,enableDataStack:Hf,getStackedDimension:Uf};var tg=(Object.freeze||Object)({createList:function(t){return Xf(t.getSource(),t)},getLayoutRect:au,dataStack:Qp,createScale:function(t,e){var i=e;dl.isInstance(e)||b(i=new dl(e),Hp);var n=Bp(i);return n.setExtent(t[0],t[1]),zp(n,i),n},mixinAxisModelCommonMethods:function(t){b(t,Hp)},completeDimensions:Gf,createDimensions:Wf,createSymbol:Jp}),eg=1e-8;function ig(t,e){return Math.abs(t-e)<eg}function ng(t,e,i){var n=0,a=t[0];if(!a)return!1;for(var o=1;o<t.length;o++){var r=t[o];n+=$o(a[0],a[1],r[0],r[1],e,i),a=r}var s=t[0];return ig(a[0],s[0])&&ig(a[1],s[1])||(n+=$o(a[0],a[1],s[0],s[1],e,i)),0!==n}function ag(t,e,i){if(this.name=t,this.geometries=e,i)i=[i[0],i[1]];else{var n=this.getBoundingRect();i=[n.x+n.width/2,n.y+n.height/2]}this.center=i}function og(t,e,i){for(var n=[],a=e[0],o=e[1],r=0;r<t.length;r+=2){var s=t.charCodeAt(r)-64,l=t.charCodeAt(r+1)-64;s=s>>1^-(1&s),l=l>>1^-(1&l),a=s+=a,o=l+=o,n.push([s/i,l/i])}return n}ag.prototype={constructor:ag,properties:null,getBoundingRect:function(){var t=this._rect;if(t)return t;for(var e=Number.MAX_VALUE,i=[e,e],n=[-e,-e],a=[],o=[],r=this.geometries,s=0;s<r.length;s++){if("polygon"===r[s].type)Io(r[s].exterior,a,o),St(i,i,a),Mt(n,n,o)}return 0===s&&(i[0]=i[1]=n[0]=n[1]=0),this._rect=new bi(i[0],i[1],n[0]-i[0],n[1]-i[1])},contain:function(t){var e=this.getBoundingRect(),i=this.geometries;if(!e.contain(t[0],t[1]))return!1;t:for(var n=0,a=i.length;n<a;n++)if("polygon"===i[n].type){var o=i[n].exterior,r=i[n].interiors;if(ng(o,t[0],t[1])){for(var s=0;s<(r?r.length:0);s++)if(ng(r[s]))continue t;return!0}}return!1},transformTo:function(t,e,i,n){var a=this.getBoundingRect(),o=a.width/a.height;i?n=n||i/o:i=o*n;for(var r=new bi(t,e,i,n),s=a.calculateTransform(r),l=this.geometries,u=0;u<l.length;u++)if("polygon"===l[u].type){for(var h=l[u].exterior,c=l[u].interiors,d=0;d<h.length;d++)bt(h[d],h[d],s);for(var f=0;f<(c?c.length:0);f++)for(d=0;d<c[f].length;d++)bt(c[f][d],c[f][d],s)}(a=this._rect).copy(r),this.center=[a.x+a.width/2,a.y+a.height/2]},cloneShallow:function(t){null==t&&(t=this.name);var e=new ag(t,this.geometries,this.center);return e._rect=this._rect,e.transformTo=null,e}};function rg(t){return function(t){if(!t.UTF8Encoding)return;var e=t.UTF8Scale;null==e&&(e=1024);for(var i=t.features,n=0;n<i.length;n++)for(var a=i[n].geometry,o=a.coordinates,r=a.encodeOffsets,s=0;s<o.length;s++){var l=o[s];if("Polygon"===a.type)o[s]=og(l,r[s],e);else if("MultiPolygon"===a.type)for(var u=0;u<l.length;u++){var h=l[u];l[u]=og(h,r[s][u],e)}}t.UTF8Encoding=!1}(t),N(M(t.features,function(t){return t.geometry&&t.properties&&0<t.geometry.coordinates.length}),function(t){var e=t.properties,i=t.geometry,n=i.coordinates,a=[];"Polygon"===i.type&&a.push({type:"polygon",exterior:n[0],interiors:n.slice(1)}),"MultiPolygon"===i.type&&E(n,function(t){t[0]&&a.push({type:"polygon",exterior:t[0],interiors:t.slice(1)})});var o=new ag(e.name,a,e.cp);return o.properties=e,o})}var sg=La();function lg(t){return"category"===t.type?function(t){var e=t.getLabelModel(),i=hg(t,e);return!e.get("show")||t.scale.isBlank()?{labels:[],labelCategoryInterval:i.labelCategoryInterval}:i}(t):function(i){var t=i.scale.getTicks(),n=Vp(i);return{labels:N(t,function(t,e){return{formattedLabel:n(t,e),rawLabel:i.scale.getLabel(t),tickValue:t}})}}(t)}function ug(t,e){return"category"===t.type?function(t,e){var i,n,a=cg(t,"ticks"),o=Fp(e),r=dg(a,o);if(r)return r;e.get("show")&&!t.scale.isBlank()||(i=[]);if(O(o))i=gg(t,o,!0);else if("auto"===o){var s=hg(t,t.getLabelModel());n=s.labelCategoryInterval,i=N(s.labels,function(t){return t.tickValue})}else i=pg(t,n=o,!0);return fg(a,o,{ticks:i,tickCategoryInterval:n})}(t,e):{ticks:t.scale.getTicks()}}function hg(t,e){var i,n=cg(t,"labels"),a=Fp(e),o=dg(n,a);return o||fg(n,a,{labels:O(a)?gg(t,a):pg(t,i="auto"===a?function(t){var e=sg(t).autoInterval;return null!=e?e:sg(t).autoInterval=t.calculateCategoryInterval()}(t):a),labelCategoryInterval:i})}function cg(t,e){return sg(t)[e]||(sg(t)[e]=[])}function dg(t,e){for(var i=0;i<t.length;i++)if(t[i].key===e)return t[i].value}function fg(t,e,i){return t.push({key:e,value:i}),i}function pg(t,e,i){var n=Vp(t),a=t.scale,o=a.getExtent(),r=t.getLabelModel(),s=[],l=Math.max((e||0)+1,1),u=o[0],h=a.count();0!==u&&1<l&&2<h/l&&(u=Math.round(Math.ceil(u/l)*l));var c=Wp(t),d=r.get("showMinLabel")||c,f=r.get("showMaxLabel")||c;d&&u!==o[0]&&g(o[0]);for(var p=u;p<=o[1];p+=l)g(p);function g(t){s.push(i?t:{formattedLabel:n(t),rawLabel:a.getLabel(t),tickValue:t})}return f&&p-l!==o[1]&&g(o[1]),s}function gg(t,i,n){var a=t.scale,o=Vp(t),r=[];return E(a.getTicks(),function(t){var e=a.getLabel(t);i(t,e)&&r.push(n?t:{formattedLabel:o(t),rawLabel:e,tickValue:t})}),r}var mg=[0,1],vg=function(t,e,i){this.dim=t,this.scale=e,this._extent=i||[0,0],this.inverse=!1,this.onBand=!1};function yg(t,e){var i=(t[1]-t[0])/e/2;t[0]+=i,t[1]-=i}vg.prototype={constructor:vg,contain:function(t){var e=this._extent,i=Math.min(e[0],e[1]),n=Math.max(e[0],e[1]);return i<=t&&t<=n},containData:function(t){return this.contain(this.dataToCoord(t))},getExtent:function(){return this._extent.slice()},getPixelPrecision:function(t){return Ml(t||this.scale.getExtent(),this._extent)},setExtent:function(t,e){var i=this._extent;i[0]=t,i[1]=e},dataToCoord:function(t,e){var i=this._extent,n=this.scale;return t=n.normalize(t),this.onBand&&"ordinal"===n.type&&yg(i=i.slice(),n.count()),yl(t,mg,i,e)},coordToData:function(t,e){var i=this._extent,n=this.scale;this.onBand&&"ordinal"===n.type&&yg(i=i.slice(),n.count());var a=yl(t,i,mg,e);return this.scale.scale(a)},pointToData:function(t,e){},getTicksCoords:function(t){var e=(t=t||{}).tickModel||this.getTickModel(),i=N(ug(this,e).ticks,function(t){return{coord:this.dataToCoord(t),tickValue:t}},this);return function(t,e,i,n){var a=e.length;if(!t.onBand||i||!a)return;var o,r,s=t.getExtent();if(1===a)e[0].coord=s[0],o=e[1]={coord:s[0]};else{var l=e[a-1].tickValue-e[0].tickValue,u=(e[a-1].coord-e[0].coord)/l;E(e,function(t){t.coord-=u/2});var h=t.scale.getExtent();r=1+h[1]-e[a-1].tickValue,o={coord:e[a-1].coord+u*r},e.push(o)}var c=s[0]>s[1];d(e[0].coord,s[0])&&(n?e[0].coord=s[0]:e.shift());n&&d(s[0],e[0].coord)&&e.unshift({coord:s[0]});d(s[1],o.coord)&&(n?o.coord=s[1]:e.pop());n&&d(o.coord,s[1])&&e.push({coord:s[1]});function d(t,e){return t=_l(t),e=_l(e),c?e<t:t<e}}(this,i,e.get("alignWithLabel"),t.clamp),i},getViewLabels:function(){return lg(this).labels},getLabelModel:function(){return this.model.getModel("axisLabel")},getTickModel:function(){return this.model.getModel("axisTick")},getBandWidth:function(){var t=this._extent,e=this.scale.getExtent(),i=e[1]-e[0]+(this.onBand?1:0);0===i&&(i=1);var n=Math.abs(t[1]-t[0]);return Math.abs(n)/i},isHorizontal:null,getRotate:null,calculateCategoryInterval:function(){return function(t){var e=function(t){var e=t.getLabelModel();return{axisRotate:t.getRotate?t.getRotate():t.isHorizontal&&!t.isHorizontal()?90:0,labelRotate:e.get("rotate")||0,font:e.getFont()}}(t),i=Vp(t),n=(e.axisRotate-e.labelRotate)/180*Math.PI,a=t.scale,o=a.getExtent(),r=a.count();if(o[1]-o[0]<1)return 0;var s=1;40<r&&(s=Math.max(1,Math.floor(r/40)));for(var l=o[0],u=t.dataToCoord(l+1)-t.dataToCoord(l),h=Math.abs(u*Math.cos(n)),c=Math.abs(u*Math.sin(n)),d=0,f=0;l<=o[1];l+=s){var p,g,m=un(i(l),e.font,"center","top");p=1.3*m.width,g=1.3*m.height,d=Math.max(d,p,7),f=Math.max(f,g,7)}var v=d/h,y=f/c;isNaN(v)&&(v=1/0),isNaN(y)&&(y=1/0);var x=Math.max(0,Math.floor(Math.min(v,y))),_=sg(t.model),w=t.getExtent(),b=_.lastAutoInterval,S=_.lastTickCount;return null!=b&&null!=S&&Math.abs(b-x)<=1&&Math.abs(S-r)<=1&&x<b&&_.axisExtend0===w[0]&&_.axisExtend1===w[1]?x=b:(_.lastTickCount=r,_.lastAutoInterval=x,_.axisExtend0=w[0],_.axisExtend1=w[1]),x}(this)}};var xg=rg,_g={};E(["map","each","filter","indexOf","inherits","reduce","filter","bind","curry","isArray","isString","isObject","isFunction","extend","defaults","clone","merge"],function(t){_g[t]=it[t]});var wg={};function bg(t,e){var i=t.mapDimension("defaultedLabel",!0),n=i.length;if(1===n)return Mh(t,e,i[0]);if(n){for(var a=[],o=0;o<i.length;o++){var r=Mh(t,e,i[o]);a.push(r)}return a.join(" ")}}function Sg(t,e,i){Si.call(this),this.updateData(t,e,i)}E(["extendShape","extendPath","makePath","makeImage","mergePath","resizePath","createIcon","setHoverStyle","setLabelStyle","setTextStyle","setText","getFont","updateProps","initProps","getTransform","clipPointsByRect","clipRectByRect","registerShape","getShapeClass","Group","Image","Text","Circle","Sector","Ring","Polygon","Polyline","Rect","Line","BezierCurve","Arc","IncrementalDisplayable","CompoundPath","LinearGradient","RadialGradient","BoundingRect"],function(t){wg[t]=ol[t]}),Wh.extend({type:"series.line",dependencies:["grid","polar"],getInitialData:function(t,e){return Xf(this.getSource(),this)},defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,hoverAnimation:!0,clip:!0,label:{position:"top"},lineStyle:{width:2,type:"solid"},step:!1,smooth:!1,smoothMonotone:null,symbol:"emptyCircle",symbolSize:4,symbolRotate:null,showSymbol:!0,showAllSymbol:"auto",connectNulls:!1,sampling:"none",animationEasing:"linear",progressive:0,hoverLayerThreshold:1/0}});var Mg=Sg.prototype,Ig=Sg.getSymbolSize=function(t,e){var i=t.getItemVisual(e,"symbolSize");return i instanceof Array?i.slice():[+i,+i]};function Ag(t){return[t[0]/2,t[1]/2]}function Tg(t,e){this.parent.drift(t,e)}Mg._createSymbol=function(t,e,i,n,a){this.removeAll();var o=Jp(t,-1,-1,2,2,e.getItemVisual(i,"color"),a);o.attr({z2:100,culling:!0,scale:Ag(n)}),o.drift=Tg,this._symbolType=t,this.add(o)},Mg.stopSymbolAnimation=function(t){this.childAt(0).stopAnimation(t)},Mg.getSymbolPath=function(){return this.childAt(0)},Mg.getScale=function(){return this.childAt(0).scale},Mg.highlight=function(){this.childAt(0).trigger("emphasis")},Mg.downplay=function(){this.childAt(0).trigger("normal")},Mg.setZ=function(t,e){var i=this.childAt(0);i.zlevel=t,i.z=e},Mg.setDraggable=function(t){var e=this.childAt(0);e.draggable=t,e.cursor=t?"move":e.cursor},Mg.updateData=function(t,e,i){this.silent=!1;var n=t.getItemVisual(e,"symbol")||"circle",a=t.hostModel,o=Ig(t,e),r=n!==this._symbolType;if(r){var s=t.getItemVisual(e,"symbolKeepAspect");this._createSymbol(n,t,e,o,s)}else{(l=this.childAt(0)).silent=!1,js(l,{scale:Ag(o)},a,e)}if(this._updateCommon(t,e,o,i),r){var l=this.childAt(0),u=i&&i.fadeIn,h={scale:l.scale.slice()};u&&(h.style={opacity:l.style.opacity}),l.scale=[0,0],u&&(l.style.opacity=0),qs(l,h,a,e)}this._seriesModel=a};var Dg=["itemStyle"],Cg=["emphasis","itemStyle"],Lg=["label"],kg=["emphasis","label"];function Pg(t,e){if(!this.incremental&&!this.useHoverLayer)if("emphasis"===e){var i=this.__symbolOriginalScale,n=i[1]/i[0],a={scale:[Math.max(1.1*i[0],i[0]+3),Math.max(1.1*i[1],i[1]+3*n)]};this.animateTo(a,400,"elasticOut")}else"normal"===e&&this.animateTo({scale:this.__symbolOriginalScale},400,"elasticOut")}function Ng(t){this.group=new Si,this._symbolCtor=t||Sg}Mg._updateCommon=function(i,t,e,n){var a=this.childAt(0),o=i.hostModel,r=i.getItemVisual(t,"color");"image"!==a.type?a.useStyle({strokeNoScale:!0}):a.setStyle({opacity:null,shadowBlur:null,shadowOffsetX:null,shadowOffsetY:null,shadowColor:null});var s=n&&n.itemStyle,l=n&&n.hoverItemStyle,u=n&&n.symbolRotate,h=n&&n.symbolOffset,c=n&&n.labelModel,d=n&&n.hoverLabelModel,f=n&&n.hoverAnimation,p=n&&n.cursorStyle;if(!n||i.hasItemOption){var g=n&&n.itemModel?n.itemModel:i.getItemModel(t);s=g.getModel(Dg).getItemStyle(["color"]),l=g.getModel(Cg).getItemStyle(),u=g.getShallow("symbolRotate"),h=g.getShallow("symbolOffset"),c=g.getModel(Lg),d=g.getModel(kg),f=g.getShallow("hoverAnimation"),p=g.getShallow("cursor")}else l=L({},l);var m=a.style;a.attr("rotation",(u||0)*Math.PI/180||0),h&&a.attr("position",[xl(h[0],e[0]),xl(h[1],e[1])]),p&&a.attr("cursor",p),a.setColor(r,n&&n.symbolInnerColor),a.setStyle(s);var v=i.getItemVisual(t,"opacity");null!=v&&(m.opacity=v);var y=i.getItemVisual(t,"liftZ"),x=a.__z2Origin;null!=y?null==x&&(a.__z2Origin=a.z2,a.z2+=y):null!=x&&(a.z2=x,a.__z2Origin=null);var _=n&&n.useNameLabel;Bs(m,l,c,d,{labelFetcher:o,labelDataIndex:t,defaultText:function(t,e){return _?i.getName(t):bg(i,t)},isRectText:!0,autoColor:r}),a.__symbolOriginalScale=Ag(e),a.hoverStyle=l,a.highDownOnUpdate=f&&o.isAnimationEnabled()?Pg:null,Os(a)},Mg.fadeOut=function(t,e){var i=this.childAt(0);this.silent=i.silent=!0,e&&e.keepLabel||(i.style.text=null),js(i,{style:{opacity:0},scale:[0,0]},this._seriesModel,this.dataIndex,t)},w(Sg,Si);var Og=Ng.prototype;function Eg(t,e,i,n){return e&&!isNaN(e[0])&&!isNaN(e[1])&&!(n.isIgnore&&n.isIgnore(i))&&!(n.clipShape&&!n.clipShape.contain(e[0],e[1]))&&"none"!==t.getItemVisual(i,"symbol")}function Rg(t){return null==t||z(t)||(t={isIgnore:t}),t||{}}function zg(t){var e=t.hostModel;return{itemStyle:e.getModel("itemStyle").getItemStyle(["color"]),hoverItemStyle:e.getModel("emphasis.itemStyle").getItemStyle(),symbolRotate:e.get("symbolRotate"),symbolOffset:e.get("symbolOffset"),hoverAnimation:e.get("hoverAnimation"),labelModel:e.getModel("label"),hoverLabelModel:e.getModel("emphasis.label"),cursorStyle:e.get("cursor")}}function Bg(t,e,i){var n,a=t.getBaseAxis(),o=t.getOtherAxis(a),r=function(t,e){var i=0,n=t.scale.getExtent();"start"===e?i=n[0]:"end"===e?i=n[1]:0<n[0]?i=n[0]:n[1]<0&&(i=n[1]);return i}(o,i),s=a.dim,l=o.dim,u=e.mapDimension(l),h=e.mapDimension(s),c="x"===l||"radius"===l?1:0,d=N(t.dimensions,function(t){return e.mapDimension(t)}),f=e.getCalculationInfo("stackResultDimension");return(n|=Zf(e,d[0]))&&(d[0]=f),(n|=Zf(e,d[1]))&&(d[1]=f),{dataDimsForPoint:d,valueStart:r,valueAxisDim:l,baseAxisDim:s,stacked:!!n,valueDim:u,baseDim:h,baseDataOffset:c,stackedOverDimension:e.getCalculationInfo("stackedOverDimension")}}function Vg(t,e,i,n){var a=NaN;t.stacked&&(a=i.get(i.getCalculationInfo("stackedOverDimension"),n)),isNaN(a)&&(a=t.valueStart);var o=t.baseDataOffset,r=[];return r[o]=i.get(t.baseDim,n),r[1-o]=a,e.dataToPoint(r)}Og.updateData=function(a,o){o=Rg(o);var r=this.group,s=a.hostModel,l=this._data,u=this._symbolCtor,h=zg(a);l||r.removeAll(),a.diff(l).add(function(t){var e=a.getItemLayout(t);if(Eg(a,e,t,o)){var i=new u(a,t,h);i.attr("position",e),a.setItemGraphicEl(t,i),r.add(i)}}).update(function(t,e){var i=l.getItemGraphicEl(e),n=a.getItemLayout(t);Eg(a,n,t,o)?(i?(i.updateData(a,t,h),js(i,{position:n},s)):(i=new u(a,t)).attr("position",n),r.add(i),a.setItemGraphicEl(t,i)):r.remove(i)}).remove(function(t){var e=l.getItemGraphicEl(t);e&&e.fadeOut(function(){r.remove(e)})}).execute(),this._data=a},Og.isPersistent=function(){return!0},Og.updateLayout=function(){var n=this._data;n&&n.eachItemGraphicEl(function(t,e){var i=n.getItemLayout(e);t.attr("position",i)})},Og.incrementalPrepareUpdate=function(t){this._seriesScope=zg(t),this._data=null,this.group.removeAll()},Og.incrementalUpdate=function(t,e,i){function n(t){t.isGroup||(t.incremental=t.useHoverLayer=!0)}i=Rg(i);for(var a=t.start;a<t.end;a++){var o=e.getItemLayout(a);if(Eg(e,o,a,i)){var r=new this._symbolCtor(e,a,this._seriesScope);r.traverse(n),r.attr("position",o),this.group.add(r),e.setItemGraphicEl(a,r)}}},Og.remove=function(t){var e=this.group,i=this._data;i&&t?i.eachItemGraphicEl(function(t){t.fadeOut(function(){e.remove(t)})}):e.removeAll()};var Gg=St,Fg=Mt,Wg=ut,Hg=ot,Zg=[],Ug=[],Xg=[];function Yg(t){return isNaN(t[0])||isNaN(t[1])}function jg(t,e,i,n,a,o,r,s,l,u){return"none"!==u&&u?function(t,e,i,n,a,o,r,s,l,u,h){for(var c=0,d=i,f=0;f<n;f++){var p=e[d];if(a<=d||d<0)break;if(Yg(p)){if(h){d+=o;continue}break}if(d===i)t[0<o?"moveTo":"lineTo"](p[0],p[1]);else if(0<l){var g=e[c],m="y"===u?1:0,v=(p[m]-g[m])*l;Hg(Ug,g),Ug[m]=g[m]+v,Hg(Xg,p),Xg[m]=p[m]-v,t.bezierCurveTo(Ug[0],Ug[1],Xg[0],Xg[1],p[0],p[1])}else t.lineTo(p[0],p[1]);c=d,d+=o}return f}.apply(this,arguments):function(t,e,i,n,a,o,r,s,l,u,h){for(var c=0,d=i,f=0;f<n;f++){var p=e[d];if(a<=d||d<0)break;if(Yg(p)){if(h){d+=o;continue}break}if(d===i)t[0<o?"moveTo":"lineTo"](p[0],p[1]),Hg(Ug,p);else if(0<l){var g=d+o,m=e[g];if(h)for(;m&&Yg(e[g]);)m=e[g+=o];var v=.5,y=e[c];if(!(m=e[g])||Yg(m))Hg(Xg,p);else{var x,_;if(Yg(m)&&!h&&(m=p),ht(Zg,m,y),"x"===u||"y"===u){var w="x"===u?0:1;x=Math.abs(p[w]-y[w]),_=Math.abs(p[w]-m[w])}else x=yt(p,y),_=yt(p,m);Wg(Xg,p,Zg,-l*(1-(v=_/(_+x))))}Gg(Ug,Ug,s),Fg(Ug,Ug,r),Gg(Xg,Xg,s),Fg(Xg,Xg,r),t.bezierCurveTo(Ug[0],Ug[1],Xg[0],Xg[1],p[0],p[1]),Wg(Ug,p,Zg,l*v)}else t.lineTo(p[0],p[1]);c=d,d+=o}return f}.apply(this,arguments)}function qg(t,e){var i=[1/0,1/0],n=[-1/0,-1/0];if(e)for(var a=0;a<t.length;a++){var o=t[a];o[0]<i[0]&&(i[0]=o[0]),o[1]<i[1]&&(i[1]=o[1]),o[0]>n[0]&&(n[0]=o[0]),o[1]>n[1]&&(n[1]=o[1])}return{min:e?i:n,max:e?n:i}}var Kg=hr.extend({type:"ec-polyline",shape:{points:[],smooth:0,smoothConstraint:!0,smoothMonotone:null,connectNulls:!1},style:{fill:null,stroke:"#000"},brush:Cr(hr.prototype.brush),buildPath:function(t,e){var i=e.points,n=0,a=i.length,o=qg(i,e.smoothConstraint);if(e.connectNulls){for(;0<a&&Yg(i[a-1]);a--);for(;n<a&&Yg(i[n]);n++);}for(;n<a;)n+=jg(t,i,n,a,a,1,o.min,o.max,e.smooth,e.smoothMonotone,e.connectNulls)+1}}),$g=hr.extend({type:"ec-polygon",shape:{points:[],stackedOnPoints:[],smooth:0,stackedOnSmooth:0,smoothConstraint:!0,smoothMonotone:null,connectNulls:!1},brush:Cr(hr.prototype.brush),buildPath:function(t,e){var i=e.points,n=e.stackedOnPoints,a=0,o=i.length,r=e.smoothMonotone,s=qg(i,e.smoothConstraint),l=qg(n,e.smoothConstraint);if(e.connectNulls){for(;0<o&&Yg(i[o-1]);o--);for(;a<o&&Yg(i[a]);a++);}for(;a<o;){var u=jg(t,i,a,o,o,1,s.min,s.max,e.smooth,r,e.connectNulls);jg(t,n,a+u-1,u,o,-1,l.min,l.max,e.stackedOnSmooth,r,e.connectNulls),a+=u+1,t.closePath()}}});function Jg(t,e,i){var n=t.getArea(),a=t.getBaseAxis().isHorizontal(),o=n.x,r=n.y,s=n.width,l=n.height,u=i.get("lineStyle.width")||2,h=new Hr({shape:{x:o-=u/2,y:r-=u/2,width:s+=u,height:l+=u}});return e&&(h.shape[a?"width":"height"]=0,qs(h,{shape:{width:s,height:l}},i)),h}function Qg(t,e,i){var n=t.getArea(),a=new Pr({shape:{cx:_l(t.cx,1),cy:_l(t.cy,1),r0:_l(n.r0,1),r:_l(n.r,1),startAngle:n.startAngle,endAngle:n.endAngle,clockwise:n.clockwise}});return e&&(a.shape.endAngle=n.startAngle,qs(a,{shape:{endAngle:n.endAngle}},i)),a}function tm(t,e,i){return t?"polar"===t.type?Qg(t,e,i):"cartesian2d"===t.type?Jg(t,e,i):null:null}function em(t,e){if(t.length===e.length){for(var i=0;i<t.length;i++){var n=t[i],a=e[i];if(n[0]!==a[0]||n[1]!==a[1])return}return!0}}function im(t){return"number"==typeof t?t:t?.5:0}function nm(t,e,i){for(var n=e.getBaseAxis(),a="x"===n.dim||"radius"===n.dim?0:1,o=[],r=0;r<t.length-1;r++){var s=t[r+1],l=t[r];o.push(l);var u=[];switch(i){case"end":u[a]=s[a],u[1-a]=l[1-a],o.push(u);break;case"middle":var h=(l[a]+s[a])/2,c=[];u[a]=c[a]=h,u[1-a]=l[1-a],c[1-a]=s[1-a],o.push(u),o.push(c);break;default:u[a]=l[a],u[1-a]=s[1-a],o.push(u)}}return t[r]&&o.push(t[r]),o}function am(t,e,i){var n=t.get("showAllSymbol"),a="auto"===n;if(!n||a){var o=i.getAxesByScale("ordinal")[0];if(o&&(!a||!function(t,e){var i=t.getExtent(),n=Math.abs(i[1]-i[0])/t.scale.count();isNaN(n)&&(n=0);for(var a=e.count(),o=Math.max(1,Math.round(a/5)),r=0;r<a;r+=o)if(1.5*Sg.getSymbolSize(e,r)[t.isHorizontal()?1:0]>n)return!1;return!0}(o,e))){var r=e.mapDimension(o.dim),s={};return E(o.getViewLabels(),function(t){s[t.tickValue]=1}),function(t){return!s.hasOwnProperty(e.get(r,t))}}}}function om(t,e,i){if("cartesian2d"!==t.type)return Qg(t,e,i);var n=t.getBaseAxis().isHorizontal(),a=Jg(t,e,i);if(!i.get("clip",!0)){var o=a.shape,r=Math.max(o.width,o.height);n?(o.y-=r,o.height+=2*r):(o.x-=r,o.width+=2*r)}return a}ec.extend({type:"line",init:function(){var t=new Si,e=new Ng;this.group.add(e.group),this._symbolDraw=e,this._lineGroup=t},render:function(t,e,i){var n=t.coordinateSystem,a=this.group,o=t.getData(),r=t.getModel("lineStyle"),s=t.getModel("areaStyle"),l=o.mapArray(o.getItemLayout),u="polar"===n.type,h=this._coordSys,c=this._symbolDraw,d=this._polyline,f=this._polygon,p=this._lineGroup,g=t.get("animation"),m=!s.isEmpty(),v=s.get("origin"),y=function(t,e,i){if(!i.valueDim)return[];for(var n=[],a=0,o=e.count();a<o;a++)n.push(Vg(i,t,e,a));return n}(n,o,Bg(n,o,v)),x=t.get("showSymbol"),_=x&&!u&&am(t,o,n),w=this._data;w&&w.eachItemGraphicEl(function(t,e){t.__temp&&(a.remove(t),w.setItemGraphicEl(e,null))}),x||c.remove(),a.add(p);var b,S=!u&&t.get("step");n&&n.getArea&&(null!=(b=n.getArea()).width?(b.x-=.1,b.y-=.1,b.width+=.2,b.height+=.2):b.r0&&(b.r0-=.5,b.r1+=.5)),d&&h.type===n.type&&S===this._step?(m&&!f?f=this._newPolygon(l,y,n,g):f&&!m&&(p.remove(f),f=this._polygon=null),p.setClipPath(om(n,!1,t)),x&&c.updateData(o,{isIgnore:_,clipShape:b}),o.eachItemGraphicEl(function(t){t.stopAnimation(!0)}),em(this._stackedOnPoints,y)&&em(this._points,l)||(g?this._updateAnimation(o,y,n,i,S,v):(S&&(l=nm(l,n,S),y=nm(y,n,S)),d.setShape({points:l}),f&&f.setShape({points:l,stackedOnPoints:y})))):(x&&c.updateData(o,{isIgnore:_,clipShape:b}),S&&(l=nm(l,n,S),y=nm(y,n,S)),d=this._newPolyline(l,n,g),m&&(f=this._newPolygon(l,y,n,g)),p.setClipPath(om(n,!0,t)));var M=function(t,e){var i=t.getVisual("visualMeta");if(i&&i.length&&t.count()&&"cartesian2d"===e.type){for(var n,a,o=i.length-1;0<=o;o--){var r=i[o].dimension,s=t.dimensions[r],l=t.getDimensionInfo(s);if("x"===(n=l&&l.coordDim)||"y"===n){a=i[o];break}}if(a){var u=e.getAxis(n),h=N(a.stops,function(t){return{coord:u.toGlobalCoord(u.dataToCoord(t.value)),color:t.color}}),c=h.length,d=a.outerColors.slice();c&&h[0].coord>h[c-1].coord&&(h.reverse(),d.reverse());var f=h[0].coord-10,p=h[c-1].coord+10,g=p-f;if(g<.001)return"transparent";E(h,function(t){t.offset=(t.coord-f)/g}),h.push({offset:c?h[c-1].offset:.5,color:d[1]||"transparent"}),h.unshift({offset:c?h[0].offset:.5,color:d[0]||"transparent"});var m=new Jr(0,0,0,0,h,!0);return m[n]=f,m[n+"2"]=p,m}}}(o,n)||o.getVisual("color");d.useStyle(C(r.getLineStyle(),{fill:"none",stroke:M,lineJoin:"bevel"}));var I=t.get("smooth");if(I=im(t.get("smooth")),d.setShape({smooth:I,smoothMonotone:t.get("smoothMonotone"),connectNulls:t.get("connectNulls")}),f){var A=o.getCalculationInfo("stackedOnSeries"),T=0;f.useStyle(C(s.getAreaStyle(),{fill:M,opacity:.7,lineJoin:"bevel"})),A&&(T=im(A.get("smooth"))),f.setShape({smooth:I,stackedOnSmooth:T,smoothMonotone:t.get("smoothMonotone"),connectNulls:t.get("connectNulls")})}this._data=o,this._coordSys=n,this._stackedOnPoints=y,this._points=l,this._step=S,this._valueOrigin=v},dispose:function(){},highlight:function(t,e,i,n){var a=t.getData(),o=Ca(a,n);if(!(o instanceof Array)&&null!=o&&0<=o){var r=a.getItemGraphicEl(o);if(!r){var s=a.getItemLayout(o);if(!s)return;(r=new Sg(a,o)).position=s,r.setZ(t.get("zlevel"),t.get("z")),r.ignore=isNaN(s[0])||isNaN(s[1]),r.__temp=!0,a.setItemGraphicEl(o,r),r.stopSymbolAnimation(!0),this.group.add(r)}r.highlight()}else ec.prototype.highlight.call(this,t,e,i,n)},downplay:function(t,e,i,n){var a=t.getData(),o=Ca(a,n);if(null!=o&&0<=o){var r=a.getItemGraphicEl(o);r&&(r.__temp?(a.setItemGraphicEl(o,null),this.group.remove(r)):r.downplay())}else ec.prototype.downplay.call(this,t,e,i,n)},_newPolyline:function(t){var e=this._polyline;return e&&this._lineGroup.remove(e),e=new Kg({shape:{points:t},silent:!0,z2:10}),this._lineGroup.add(e),this._polyline=e},_newPolygon:function(t,e){var i=this._polygon;return i&&this._lineGroup.remove(i),i=new $g({shape:{points:t,stackedOnPoints:e},silent:!0}),this._lineGroup.add(i),this._polygon=i},_updateAnimation:function(t,e,i,n,a,o){var r=this._polyline,s=this._polygon,l=t.hostModel,u=function(t,e,i,n,a,o,r,s){for(var l=function(t,e){var i=[];return e.diff(t).add(function(t){i.push({cmd:"+",idx:t})}).update(function(t,e){i.push({cmd:"=",idx:e,idx1:t})}).remove(function(t){i.push({cmd:"-",idx:t})}).execute(),i}(t,e),u=[],h=[],c=[],d=[],f=[],p=[],g=[],m=Bg(a,e,r),v=Bg(o,t,s),y=0;y<l.length;y++){var x=l[y],_=!0;switch(x.cmd){case"=":var w=t.getItemLayout(x.idx),b=e.getItemLayout(x.idx1);(isNaN(w[0])||isNaN(w[1]))&&(w=b.slice()),u.push(w),h.push(b),c.push(i[x.idx]),d.push(n[x.idx1]),g.push(e.getRawIndex(x.idx1));break;case"+":var S=x.idx;u.push(a.dataToPoint([e.get(m.dataDimsForPoint[0],S),e.get(m.dataDimsForPoint[1],S)])),h.push(e.getItemLayout(S).slice()),c.push(Vg(m,a,e,S)),d.push(n[S]),g.push(e.getRawIndex(S));break;case"-":S=x.idx;var M=t.getRawIndex(S);M!==S?(u.push(t.getItemLayout(S)),h.push(o.dataToPoint([t.get(v.dataDimsForPoint[0],S),t.get(v.dataDimsForPoint[1],S)])),c.push(i[S]),d.push(Vg(v,o,t,S)),g.push(M)):_=!1}_&&(f.push(x),p.push(p.length))}p.sort(function(t,e){return g[t]-g[e]});var I=[],A=[],T=[],D=[],C=[];for(y=0;y<p.length;y++){S=p[y];I[y]=u[S],A[y]=h[S],T[y]=c[S],D[y]=d[S],C[y]=f[S]}return{current:I,next:A,stackedOnCurrent:T,stackedOnNext:D,status:C}}(this._data,t,this._stackedOnPoints,e,this._coordSys,i,this._valueOrigin,o),h=u.current,c=u.stackedOnCurrent,d=u.next,f=u.stackedOnNext;a&&(h=nm(u.current,i,a),c=nm(u.stackedOnCurrent,i,a),d=nm(u.next,i,a),f=nm(u.stackedOnNext,i,a)),r.shape.__points=u.current,r.shape.points=h,js(r,{shape:{points:d}},l),s&&(s.setShape({points:h,stackedOnPoints:c}),js(s,{shape:{points:d,stackedOnPoints:f}},l));for(var p=[],g=u.status,m=0;m<g.length;m++){if("="===g[m].cmd){var v=t.getItemGraphicEl(g[m].idx1);v&&p.push({el:v,ptIdx:m})}}r.animators&&r.animators.length&&r.animators[0].during(function(){for(var t=0;t<p.length;t++){p[t].el.attr("position",r.shape.__points[p[t].ptIdx])}})},remove:function(t){var i=this.group,n=this._data;this._lineGroup.removeAll(),this._symbolDraw.remove(!0),n&&n.eachItemGraphicEl(function(t,e){t.__temp&&(i.remove(t),n.setItemGraphicEl(e,null))}),this._polyline=this._polygon=this._coordSys=this._points=this._stackedOnPoints=this._data=null}});function rm(t,r,s){return{seriesType:t,performRawSeries:!0,reset:function(l,t,e){var i=l.getData(),u=l.get("symbol"),h=l.get("symbolSize"),n=l.get("symbolKeepAspect"),c=O(u),d=O(h),f=c||d,a=!c&&u?u:r,o=d?null:h;if(i.setVisual({legendSymbol:s||a,symbol:a,symbolSize:o,symbolKeepAspect:n}),!t.isSeriesFiltered(l))return{dataEach:i.hasItemOption||f?function(t,e){if(f){var i=l.getRawValue(e),n=l.getDataParams(e);c&&t.setItemVisual(e,"symbol",u(i,n)),d&&t.setItemVisual(e,"symbolSize",h(i,n))}if(t.hasItemOption){var a=t.getItemModel(e),o=a.getShallow("symbol",!0),r=a.getShallow("symbolSize",!0),s=a.getShallow("symbolKeepAspect",!0);null!=o&&t.setItemVisual(e,"symbol",o),null!=r&&t.setItemVisual(e,"symbolSize",r),null!=s&&t.setItemVisual(e,"symbolKeepAspect",s)}}:null}}}}function sm(t){return{seriesType:t,plan:Jh(),reset:function(t){var e=t.getData(),c=t.coordinateSystem,d=t.pipelineContext.large;if(c){var f=N(c.dimensions,function(t){return e.mapDimension(t)}).slice(0,2),p=f.length,i=e.getCalculationInfo("stackResultDimension");return Zf(e,f[0])&&(f[0]=i),Zf(e,f[1])&&(f[1]=i),p&&{progress:function(t,e){for(var i=t.end-t.start,n=d&&new Float32Array(i*p),a=t.start,o=0,r=[],s=[];a<t.end;a++){var l;if(1===p){var u=e.get(f[0],a);l=!isNaN(u)&&c.dataToPoint(u,null,s)}else{u=r[0]=e.get(f[0],a);var h=r[1]=e.get(f[1],a);l=!isNaN(u)&&!isNaN(h)&&c.dataToPoint(r,null,s)}d?(n[o++]=l?l[0]:NaN,n[o++]=l?l[1]:NaN):e.setItemLayout(a,l&&l.slice()||[NaN,NaN])}d&&e.setLayout("symbolPoints",n)}}}}}}function lm(t,e){return Math.round(t.length/2)}var um={average:function(t){for(var e=0,i=0,n=0;n<t.length;n++)isNaN(t[n])||(e+=t[n],i++);return 0===i?NaN:e/i},sum:function(t){for(var e=0,i=0;i<t.length;i++)e+=t[i]||0;return e},max:function(t){for(var e=-1/0,i=0;i<t.length;i++)t[i]>e&&(e=t[i]);return isFinite(e)?e:NaN},min:function(t){for(var e=1/0,i=0;i<t.length;i++)t[i]<e&&(e=t[i]);return isFinite(e)?e:NaN},nearest:function(t){return t[0]}};function hm(t){return this._axes[t]}function cm(t){this._axes={},this._dimList=[],this.name=t||""}function dm(t){cm.call(this,t)}cm.prototype={constructor:cm,type:"cartesian",getAxis:function(t){return this._axes[t]},getAxes:function(){return N(this._dimList,hm,this)},getAxesByScale:function(e){return e=e.toLowerCase(),M(this.getAxes(),function(t){return t.scale.type===e})},addAxis:function(t){var e=t.dim;this._axes[e]=t,this._dimList.push(e)},dataToCoord:function(t){return this._dataCoordConvert(t,"dataToCoord")},coordToData:function(t){return this._dataCoordConvert(t,"coordToData")},_dataCoordConvert:function(t,e){for(var i=this._dimList,n=t instanceof Array?[]:{},a=0;a<i.length;a++){var o=i[a],r=this._axes[o];n[o]=r[e](t[o])}return n}},dm.prototype={constructor:dm,type:"cartesian2d",dimensions:["x","y"],getBaseAxis:function(){return this.getAxesByScale("ordinal")[0]||this.getAxesByScale("time")[0]||this.getAxis("x")},containPoint:function(t){var e=this.getAxis("x"),i=this.getAxis("y");return e.contain(e.toLocalCoord(t[0]))&&i.contain(i.toLocalCoord(t[1]))},containData:function(t){return this.getAxis("x").containData(t[0])&&this.getAxis("y").containData(t[1])},dataToPoint:function(t,e,i){var n=this.getAxis("x"),a=this.getAxis("y");return(i=i||[])[0]=n.toGlobalCoord(n.dataToCoord(t[0])),i[1]=a.toGlobalCoord(a.dataToCoord(t[1])),i},clampData:function(t,e){var i=this.getAxis("x").scale,n=this.getAxis("y").scale,a=i.getExtent(),o=n.getExtent(),r=i.parse(t[0]),s=n.parse(t[1]);return(e=e||[])[0]=Math.min(Math.max(Math.min(a[0],a[1]),r),Math.max(a[0],a[1])),e[1]=Math.min(Math.max(Math.min(o[0],o[1]),s),Math.max(o[0],o[1])),e},pointToData:function(t,e){var i=this.getAxis("x"),n=this.getAxis("y");return(e=e||[])[0]=i.coordToData(i.toLocalCoord(t[0])),e[1]=n.coordToData(n.toLocalCoord(t[1])),e},getOtherAxis:function(t){return this.getAxis("x"===t.dim?"y":"x")},getArea:function(){var t=this.getAxis("x").getGlobalExtent(),e=this.getAxis("y").getGlobalExtent(),i=Math.min(t[0],t[1]),n=Math.min(e[0],e[1]);return new bi(i,n,Math.max(t[0],t[1])-i,Math.max(e[0],e[1])-n)}},w(dm,cm);function fm(t,e,i,n,a){vg.call(this,t,e,i),this.type=n||"value",this.position=a||"bottom"}fm.prototype={constructor:fm,index:0,getAxesOnZeroOf:null,model:null,isHorizontal:function(){var t=this.position;return"top"===t||"bottom"===t},getGlobalExtent:function(t){var e=this.getExtent();return e[0]=this.toGlobalCoord(e[0]),e[1]=this.toGlobalCoord(e[1]),t&&e[0]>e[1]&&e.reverse(),e},getOtherAxis:function(){this.grid.getOtherAxis()},pointToData:function(t,e){return this.coordToData(this.toLocalCoord(t["x"===this.dim?0:1]),e)},toLocalCoord:null,toGlobalCoord:null},w(fm,vg);var pm={show:!0,zlevel:0,z:0,inverse:!1,name:"",nameLocation:"end",nameRotate:null,nameTruncate:{maxWidth:null,ellipsis:"...",placeholder:"."},nameTextStyle:{},nameGap:15,silent:!1,triggerEvent:!1,tooltip:{show:!1},axisPointer:{},axisLine:{show:!0,onZero:!0,onZeroAxisIndex:null,lineStyle:{color:"#333",width:1,type:"solid"},symbol:["none","none"],symbolSize:[10,15]},axisTick:{show:!0,inside:!1,length:5,lineStyle:{width:1}},axisLabel:{show:!0,inside:!1,rotate:0,showMinLabel:null,showMaxLabel:null,margin:8,fontSize:12},splitLine:{show:!0,lineStyle:{color:["#ccc"],width:1,type:"solid"}},splitArea:{show:!1,areaStyle:{color:["rgba(250,250,250,0.3)","rgba(200,200,200,0.3)"]}}},gm={};gm.categoryAxis=m({boundaryGap:!0,deduplication:null,splitLine:{show:!1},axisTick:{alignWithLabel:!1,interval:"auto"},axisLabel:{interval:"auto"}},pm),gm.valueAxis=m({boundaryGap:[0,0],splitNumber:5},pm),gm.timeAxis=C({scale:!0,min:"dataMin",max:"dataMax"},gm.valueAxis),gm.logAxis=C({scale:!0,logBase:10},gm.valueAxis);function mm(o,t,r,e){E(vm,function(a){t.extend({type:o+"Axis."+a,mergeDefaultAndTheme:function(t,e){var i=this.layoutMode,n=i?su(t):{};m(t,e.getTheme().get(a+"Axis")),m(t,this.getDefaultOption()),t.type=r(o,t),i&&ru(t,n,i)},optionUpdated:function(){"category"===this.option.type&&(this.__ordinalMeta=jf.createByAxisModel(this))},getCategories:function(t){var e=this.option;if("category"===e.type)return t?e.data:this.__ordinalMeta.categories},getOrdinalMeta:function(){return this.__ordinalMeta},defaultOption:p([{},gm[a+"Axis"],e],!0)})}),fu.registerSubTypeDefaulter(o+"Axis",A(r,o))}var vm=["value","category","time","log"],ym=fu.extend({type:"cartesian2dAxis",axis:null,init:function(){ym.superApply(this,"init",arguments),this.resetRange()},mergeOption:function(){ym.superApply(this,"mergeOption",arguments),this.resetRange()},restoreData:function(){ym.superApply(this,"restoreData",arguments),this.resetRange()},getCoordSysModel:function(){return this.ecModel.queryComponents({mainType:"grid",index:this.option.gridIndex,id:this.option.gridId})[0]}});function xm(t,e){return e.type||(e.data?"category":"value")}m(ym.prototype,Hp);var _m={offset:0};function wm(t,e){return t.getCoordSysModel()===e}function bm(t,e,i){this._coordsMap={},this._coordsList=[],this._axesMap={},this._axesList=[],this._initCartesian(t,e,i),this.model=t}mm("x",ym,xm,_m),mm("y",ym,xm,_m),fu.extend({type:"grid",dependencies:["xAxis","yAxis"],layoutMode:"box",coordinateSystem:null,defaultOption:{show:!1,zlevel:0,z:0,left:"10%",top:60,right:"10%",bottom:60,containLabel:!1,backgroundColor:"rgba(0,0,0,0)",borderWidth:1,borderColor:"#ccc"}});var Sm=bm.prototype;function Mm(t,e,i,n){i.getAxesOnZeroOf=function(){return a?[a]:[]};var a,o=t[e],r=i.model,s=r.get("axisLine.onZero"),l=r.get("axisLine.onZeroAxisIndex");if(s){if(null!=l)Im(o[l])&&(a=o[l]);else for(var u in o)if(o.hasOwnProperty(u)&&Im(o[u])&&!n[h(o[u])]){a=o[u];break}a&&(n[h(a)]=!0)}function h(t){return t.dim+"_"+t.index}}function Im(t){return t&&"category"!==t.type&&"time"!==t.type&&function(t){var e=t.scale.getExtent(),i=e[0],n=e[1];return!(0<i&&0<n||i<0&&n<0)}(t)}Sm.type="grid",Sm.axisPointerEnabled=!0,Sm.getRect=function(){return this._rect},Sm.update=function(t,e){var i=this._axesMap;this._updateScale(t,this.model),E(i.x,function(t){zp(t.scale,t.model)}),E(i.y,function(t){zp(t.scale,t.model)});var n={};E(i.x,function(t){Mm(i,"y",t,n)}),E(i.y,function(t){Mm(i,"x",t,n)}),this.resize(this.model,e)},Sm.resize=function(t,e,i){var a=au(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()});this._rect=a;var n=this._axesList;function o(){E(n,function(t){var e=t.isHorizontal(),i=e?[0,a.width]:[0,a.height],n=t.inverse?1:0;t.setExtent(i[n],i[1-n]),function(t,e){var i=t.getExtent(),n=i[0]+i[1];t.toGlobalCoord="x"===t.dim?function(t){return t+e}:function(t){return n-t+e},t.toLocalCoord="x"===t.dim?function(t){return t-e}:function(t){return n-t+e}}(t,e?a.x:a.y)})}o(),!i&&t.get("containLabel")&&(E(n,function(t){if(!t.model.get("axisLabel.inside")){var e=function(t){var e=t.model,i=t.scale;if(e.get("axisLabel.show")&&!i.isBlank()){var n,a,o="category"===t.type,r=i.getExtent();a=o?i.count():(n=i.getTicks()).length;var s,l,u,h,c,d,f,p,g,m=t.getLabelModel(),v=Vp(t),y=1;40<a&&(y=Math.ceil(a/40));for(var x=0;x<a;x+=y){var _=v(n?n[x]:r[0]+x),w=m.getTextRect(_),b=(l=w,u=m.get("rotate")||0,void 0,h=u*Math.PI/180,c=l.plain(),d=c.width,f=c.height,p=d*Math.cos(h)+f*Math.sin(h),g=d*Math.sin(h)+f*Math.cos(h),new bi(c.x,c.y,p,g));s?s.union(b):s=b}return s}}(t);if(e){var i=t.isHorizontal()?"height":"width",n=t.model.get("axisLabel.margin");a[i]-=e[i]+n,"top"===t.position?a.y+=e.height+n:"left"===t.position&&(a.x+=e.width+n)}}}),o())},Sm.getAxis=function(t,e){var i=this._axesMap[t];if(null!=i){if(null==e)for(var n in i)if(i.hasOwnProperty(n))return i[n];return i[e]}},Sm.getAxes=function(){return this._axesList.slice()},Sm.getCartesian=function(t,e){if(null!=t&&null!=e){var i="x"+t+"y"+e;return this._coordsMap[i]}z(t)&&(e=t.yAxisIndex,t=t.xAxisIndex);for(var n=0,a=this._coordsList;n<a.length;n++)if(a[n].getAxis("x").index===t||a[n].getAxis("y").index===e)return a[n]},Sm.getCartesians=function(){return this._coordsList.slice()},Sm.convertToPixel=function(t,e,i){var n=this._findConvertTarget(t,e);return n.cartesian?n.cartesian.dataToPoint(i):n.axis?n.axis.toGlobalCoord(n.axis.dataToCoord(i)):null},Sm.convertFromPixel=function(t,e,i){var n=this._findConvertTarget(t,e);return n.cartesian?n.cartesian.pointToData(i):n.axis?n.axis.coordToData(n.axis.toLocalCoord(i)):null},Sm._findConvertTarget=function(t,e){var i,n,a=e.seriesModel,o=e.xAxisModel||a&&a.getReferringComponents("xAxis")[0],r=e.yAxisModel||a&&a.getReferringComponents("yAxis")[0],s=e.gridModel,l=this._coordsList;if(a)_(l,i=a.coordinateSystem)<0&&(i=null);else if(o&&r)i=this.getCartesian(o.componentIndex,r.componentIndex);else if(o)n=this.getAxis("x",o.componentIndex);else if(r)n=this.getAxis("y",r.componentIndex);else if(s){s.coordinateSystem===this&&(i=this._coordsList[0])}return{cartesian:i,axis:n}},Sm.containPoint=function(t){var e=this._coordsList[0];if(e)return e.containPoint(t)},Sm._initCartesian=function(r,t,e){var s={left:!1,right:!1,top:!1,bottom:!1},l={x:{},y:{}},u={x:0,y:0};if(t.eachComponent("xAxis",i("x"),this),t.eachComponent("yAxis",i("y"),this),!u.x||!u.y)return this._axesMap={},void(this._axesList=[]);function i(o){return function(t,e){if(wm(t,r)){var i=t.get("position");"x"===o?"top"!==i&&"bottom"!==i&&(i=s.bottom?"top":"bottom"):"left"!==i&&"right"!==i&&(i=s.left?"right":"left"),s[i]=!0;var n=new fm(o,Bp(t),[0,0],t.get("type"),i),a="category"===n.type;n.onBand=a&&t.get("boundaryGap"),n.inverse=t.get("inverse"),(t.axis=n).model=t,n.grid=this,n.index=e,this._axesList.push(n),l[o][e]=n,u[o]++}}}E((this._axesMap=l).x,function(a,o){E(l.y,function(t,e){var i="x"+o+"y"+e,n=new dm(i);n.grid=this,n.model=r,this._coordsMap[i]=n,this._coordsList.push(n),n.addAxis(a),n.addAxis(t)},this)},this)},Sm._updateScale=function(l,u){function h(e,i){E(e.mapDimension(i.dim,!0),function(t){i.scale.unionExtentFromData(e,Uf(e,t))})}E(this._axesList,function(t){t.scale.setExtent(1/0,-1/0)}),l.eachSeries(function(t){if(Dm(t)){var e=Tm(t,l),i=e[0],n=e[1];if(!wm(i,u)||!wm(n,u))return;var a=this.getCartesian(i.componentIndex,n.componentIndex),o=t.getData(),r=a.getAxis("x"),s=a.getAxis("y");"list"===o.type&&(h(o,r,t),h(o,s,t))}},this)},Sm.getTooltipAxes=function(n){var a=[],o=[];return E(this.getCartesians(),function(t){var e=null!=n&&"auto"!==n?t.getAxis(n):t.getBaseAxis(),i=t.getOtherAxis(e);_(a,e)<0&&a.push(e),_(o,i)<0&&o.push(i)}),{baseAxes:a,otherAxes:o}};var Am=["xAxis","yAxis"];function Tm(e){return N(Am,function(t){return e.getReferringComponents(t)[0]})}function Dm(t){return"cartesian2d"===t.get("coordinateSystem")}bm.create=function(n,a){var o=[];return n.eachComponent("grid",function(t,e){var i=new bm(t,n,a);i.name="grid_"+e,i.resize(t,a,!0),t.coordinateSystem=i,o.push(i)}),n.eachSeries(function(t){if(Dm(t)){var e=Tm(t),i=e[0],n=e[1],a=i.getCoordSysModel().coordinateSystem;t.coordinateSystem=a.getCartesian(i.componentIndex,n.componentIndex)}}),o},bm.dimensions=bm.prototype.dimensions=dm.prototype.dimensions,Hu.register("cartesian2d",bm);function Cm(t,e){this.opt=e,this.axisModel=t,C(e,{labelOffset:0,nameDirection:1,tickDirection:1,labelDirection:1,silent:!0}),this.group=new Si;var i=new Si({position:e.position.slice(),rotation:e.rotation});i.updateTransform(),this._transform=i.transform,this._dumbGroup=i}var Lm=Math.PI;Cm.prototype={constructor:Cm,hasBuilder:function(t){return!!km[t]},add:function(t){km[t].call(this)},getGroup:function(){return this.group}};var km={axisLine:function(){var o=this.opt,t=this.axisModel;if(t.get("axisLine.show")){var e=this.axisModel.axis.getExtent(),i=this._transform,r=[e[0],0],n=[e[1],0];i&&(bt(r,r,i),bt(n,n,i));var s=L({lineCap:"round"},t.getModel("axisLine.lineStyle").getLineStyle());this.group.add(new Ur({anid:"line",subPixelOptimize:!0,shape:{x1:r[0],y1:r[1],x2:n[0],y2:n[1]},style:s,strokeContainThreshold:o.strokeContainThreshold||5,silent:!0,z2:1}));var l=t.get("axisLine.symbol"),a=t.get("axisLine.symbolSize"),u=t.get("axisLine.symbolOffset")||0;if("number"==typeof u&&(u=[u,u]),null!=l){"string"==typeof l&&(l=[l,l]),"string"!=typeof a&&"number"!=typeof a||(a=[a,a]);var h=a[0],c=a[1];E([{rotate:o.rotation+Math.PI/2,offset:u[0],r:0},{rotate:o.rotation-Math.PI/2,offset:u[1],r:Math.sqrt((r[0]-n[0])*(r[0]-n[0])+(r[1]-n[1])*(r[1]-n[1]))}],function(t,e){if("none"!==l[e]&&null!=l[e]){var i=Jp(l[e],-h/2,-c/2,h,c,s.stroke,!0),n=t.r+t.offset,a=[r[0]+n*Math.cos(o.rotation),r[1]-n*Math.sin(o.rotation)];i.attr({rotation:t.rotate,position:a,silent:!0,z2:11}),this.group.add(i)}},this)}}},axisTickLabel:function(){var t=this.axisModel,e=this.opt,i=function(t,e,i){var n=e.axis;if(!e.get("axisTick.show")||n.scale.isBlank())return;for(var a=e.getModel("axisTick"),o=a.getModel("lineStyle"),r=a.get("length"),s=n.getTicksCoords(),l=[],u=[],h=t._transform,c=[],d=0;d<s.length;d++){var f=s[d].coord;l[0]=f,l[1]=0,u[0]=f,u[1]=i.tickDirection*r,h&&(bt(l,l,h),bt(u,u,h));var p=new Ur({anid:"tick_"+s[d].tickValue,subPixelOptimize:!0,shape:{x1:l[0],y1:l[1],x2:u[0],y2:u[1]},style:C(o.getLineStyle(),{stroke:e.get("axisLine.lineStyle.color")}),z2:2,silent:!0});t.group.add(p),c.push(p)}return c}(this,t,e);!function(t,e,i){if(Wp(t.axis))return;var n=t.get("axisLabel.showMinLabel"),a=t.get("axisLabel.showMaxLabel");i=i||[];var o=(e=e||[])[0],r=e[1],s=e[e.length-1],l=e[e.length-2],u=i[0],h=i[1],c=i[i.length-1],d=i[i.length-2];!1===n?(Em(o),Em(u)):Rm(o,r)&&(n?(Em(r),Em(h)):(Em(o),Em(u)));!1===a?(Em(s),Em(c)):Rm(l,s)&&(a?(Em(l),Em(d)):(Em(s),Em(c)))}(t,function(u,h,c){var d=h.axis;if(!W(c.axisLabelShow,h.get("axisLabel.show"))||d.scale.isBlank())return;var f=h.getModel("axisLabel"),p=f.get("margin"),t=d.getViewLabels(),e=(W(c.labelRotate,f.get("rotate"))||0)*Lm/180,g=Nm(c.rotation,e,c.labelDirection),m=h.getCategories&&h.getCategories(!0),v=[],y=Om(h),x=h.get("triggerEvent");return E(t,function(t,e){var i=t.tickValue,n=t.formattedLabel,a=t.rawLabel,o=f;m&&m[i]&&m[i].textStyle&&(o=new dl(m[i].textStyle,f,h.ecModel));var r=o.getTextColor()||h.get("axisLine.lineStyle.color"),s=[d.dataToCoord(i),c.labelOffset+c.labelDirection*p],l=new Dr({anid:"label_"+i,position:s,rotation:g.rotation,silent:y,z2:10});Gs(l.style,o,{text:n,textAlign:o.getShallow("align",!0)||g.textAlign,textVerticalAlign:o.getShallow("verticalAlign",!0)||o.getShallow("baseline",!0)||g.textVerticalAlign,textFill:"function"==typeof r?r("category"===d.type?a:"value"===d.type?i+"":i,e):r}),x&&(l.eventData=Pm(h),l.eventData.targetType="axisLabel",l.eventData.value=a),u._dumbGroup.add(l),l.updateTransform(),v.push(l),u.group.add(l),l.decomposeTransform()}),v}(this,t,e),i)},axisName:function(){var t=this.opt,e=this.axisModel,i=W(t.axisName,e.get("name"));if(i){var n,a,o=e.get("nameLocation"),r=t.nameDirection,s=e.getModel("nameTextStyle"),l=e.get("nameGap")||0,u=this.axisModel.axis.getExtent(),h=u[0]>u[1]?-1:1,c=["start"===o?u[0]-h*l:"end"===o?u[1]+h*l:(u[0]+u[1])/2,zm(o)?t.labelOffset+r*l:0],d=e.get("nameRotate");null!=d&&(d=d*Lm/180),zm(o)?n=Nm(t.rotation,null!=d?d:t.rotation,r):(n=function(t,e,i,n){var a,o,r=Tl(i-t.rotation),s=n[0]>n[1],l="start"===e&&!s||"start"!==e&&s;a=Dl(r-Lm/2)?(o=l?"bottom":"top","center"):Dl(r-1.5*Lm)?(o=l?"top":"bottom","center"):(o="middle",r<1.5*Lm&&Lm/2<r?l?"left":"right":l?"right":"left");return{rotation:r,textAlign:a,textVerticalAlign:o}}(t,o,d||0,u),null!=(a=t.axisNameAvailableWidth)&&(a=Math.abs(a/Math.sin(n.rotation)),isFinite(a)||(a=null)));var f=s.getFont(),p=e.get("nameTruncate",!0)||{},g=p.ellipsis,m=W(t.nameTruncateMaxWidth,p.maxWidth,a),v=null!=g&&null!=m?$l(i,m,f,g,{minChar:2,placeholder:p.placeholder}):i,y=e.get("tooltip",!0),x=e.mainType,_={componentType:x,name:i,$vars:["name"]};_[x+"Index"]=e.componentIndex;var w=new Dr({anid:"name",__fullText:i,__truncatedText:v,position:c,rotation:n.rotation,silent:Om(e),z2:1,tooltip:y&&y.show?L({content:i,formatter:function(){return i},formatterParams:_},y):null});Gs(w.style,s,{text:v,textFont:f,textFill:s.getTextColor()||e.get("axisLine.lineStyle.color"),textAlign:s.get("align")||n.textAlign,textVerticalAlign:s.get("verticalAlign")||n.textVerticalAlign}),e.get("triggerEvent")&&(w.eventData=Pm(e),w.eventData.targetType="axisName",w.eventData.name=i),this._dumbGroup.add(w),w.updateTransform(),this.group.add(w),w.decomposeTransform()}}},Pm=Cm.makeAxisEventDataBase=function(t){var e={componentType:t.mainType,componentIndex:t.componentIndex};return e[t.mainType+"Index"]=t.componentIndex,e},Nm=Cm.innerTextLayout=function(t,e,i){var n,a=Tl(e-t);return{rotation:a,textAlign:Dl(a)?(n=0<i?"top":"bottom","center"):Dl(a-Lm)?(n=0<i?"bottom":"top","center"):(n="middle",0<a&&a<Lm?0<i?"right":"left":0<i?"left":"right"),textVerticalAlign:n}};var Om=Cm.isLabelSilent=function(t){var e=t.get("tooltip");return t.get("silent")||!(t.get("triggerEvent")||e&&e.show)};function Em(t){t&&(t.ignore=!0)}function Rm(t,e){var i=t&&t.getBoundingRect().clone(),n=e&&e.getBoundingRect().clone();if(i&&n){var a=te([]);return ae(a,a,-t.rotation),i.applyTransform(ie([],a,t.getLocalTransform())),n.applyTransform(ie([],a,e.getLocalTransform())),i.intersect(n)}}function zm(t){return"middle"===t||"center"===t}var Bm=E,Vm=A;function Gm(t,e){var i={axesInfo:{},seriesInvolved:!1,coordSysAxesInfo:{},coordSysMap:{}};return function(p,g,t){var o=g.getComponent("tooltip"),m=g.getComponent("axisPointer"),v=m.get("link",!0)||[],y=[];Bm(t.getCoordinateSystems(),function(c){if(c.axisPointerEnabled){var t=Zm(c.model),d=p.coordSysAxesInfo[t]={},f=(p.coordSysMap[t]=c).model.getModel("tooltip",o);if(Bm(c.getAxes(),Vm(a,!1,null)),c.getTooltipAxes&&o&&f.get("show")){var e="axis"===f.get("trigger"),i="cross"===f.get("axisPointer.type"),n=c.getTooltipAxes(f.get("axisPointer.axis"));(e||i)&&Bm(n.baseAxes,Vm(a,!i||"cross",e)),i&&Bm(n.otherAxes,Vm(a,"cross",!1))}}function a(t,e,i){var n=i.model.getModel("axisPointer",m),a=n.get("show");if(a&&("auto"!==a||t||Hm(n))){null==e&&(e=n.get("triggerTooltip"));var o=(n=t?function(t,e,i,n,a,o){var r=e.getModel("axisPointer"),s={};Bm(["type","snap","lineStyle","shadowStyle","label","animation","animationDurationUpdate","animationEasingUpdate","z"],function(t){s[t]=D(r.get(t))}),s.snap="category"!==t.type&&!!o,"cross"===r.get("type")&&(s.type="line");var l=s.label||(s.label={});if(null==l.show&&(l.show=!1),"cross"===a){var u=r.get("label.show");if(l.show=null==u||u,!o){var h=s.lineStyle=r.get("crossStyle");h&&C(l,h.textStyle)}}return t.model.getModel("axisPointer",new dl(s,i,n))}(i,f,m,g,t,e):n).get("snap"),r=Zm(i.model),s=e||o||"category"===i.type,l=p.axesInfo[r]={key:r,axis:i,coordSys:c,axisPointerModel:n,triggerTooltip:e,involveSeries:s,snap:o,useHandle:Hm(n),seriesModels:[]};d[r]=l,p.seriesInvolved|=s;var u=function(t,e){for(var i=e.model,n=e.dim,a=0;a<t.length;a++){var o=t[a]||{};if(Fm(o[n+"AxisId"],i.id)||Fm(o[n+"AxisIndex"],i.componentIndex)||Fm(o[n+"AxisName"],i.name))return a}}(v,i);if(null!=u){var h=y[u]||(y[u]={axesInfo:{}});h.axesInfo[r]=l,h.mapper=v[u].mapper,l.linkGroup=h}}}})}(i,t,e),i.seriesInvolved&&function(a,t){t.eachSeries(function(i){var n=i.coordinateSystem,t=i.get("tooltip.trigger",!0),e=i.get("tooltip.show",!0);n&&"none"!==t&&!1!==t&&"item"!==t&&!1!==e&&!1!==i.get("axisPointer.show",!0)&&Bm(a.coordSysAxesInfo[Zm(n.model)],function(t){var e=t.axis;n.getAxis(e.dim)===e&&(t.seriesModels.push(i),null==t.seriesDataCount&&(t.seriesDataCount=0),t.seriesDataCount+=i.getData().count())})},this)}(i,t),i}function Fm(t,e){return"all"===t||k(t)&&0<=_(t,e)||t===e}function Wm(t){var e=(t.ecModel.getComponent("axisPointer")||{}).coordSysAxesInfo;return e&&e.axesInfo[Zm(t)]}function Hm(t){return!!t.get("handle.show")}function Zm(t){return t.type+"||"+t.id}var Um=lf({type:"axis",_axisPointer:null,axisPointerClass:null,render:function(t,e,i,n){this.axisPointerClass&&function(t){var e=Wm(t);if(e){var i=e.axisPointerModel,n=e.axis.scale,a=i.option,o=i.get("status"),r=i.get("value");null!=r&&(r=n.parse(r));var s=Hm(i);null==o&&(a.status=s?"show":"hide");var l=n.getExtent().slice();l[0]>l[1]&&l.reverse(),(null==r||r>l[1])&&(r=l[1]),r<l[0]&&(r=l[0]),a.value=r,s&&(a.status=e.axis.scale.isBlank()?"hide":"show")}}(t),Um.superApply(this,"render",arguments),Xm(this,t,e,i,n,!0)},updateAxisPointer:function(t,e,i,n,a){Xm(this,t,e,i,n,!1)},remove:function(t,e){var i=this._axisPointer;i&&i.remove(e),Um.superApply(this,"remove",arguments)},dispose:function(t,e){Ym(this,e),Um.superApply(this,"dispose",arguments)}});function Xm(t,e,i,n,a,o){var r=Um.getAxisPointerClass(t.axisPointerClass);if(r){var s=function(t){var e=Wm(t);return e&&e.axisPointerModel}(e);s?(t._axisPointer||(t._axisPointer=new r)).render(e,s,n,o):Ym(t,n)}}function Ym(t,e,i){var n=t._axisPointer;n&&n.dispose(e,i),t._axisPointer=null}var jm=[];function qm(t,e,i){i=i||{};var n=t.coordinateSystem,a=e.axis,o={},r=a.getAxesOnZeroOf()[0],s=a.position,l=r?"onZero":s,u=a.dim,h=n.getRect(),c=[h.x,h.x+h.width,h.y,h.y+h.height],d={left:0,right:1,top:0,bottom:1,onZero:2},f=e.get("offset")||0,p="x"===u?[c[2]-f,c[3]+f]:[c[0]-f,c[1]+f];if(r){var g=r.toGlobalCoord(r.dataToCoord(0));p[d.onZero]=Math.max(Math.min(g,p[1]),p[0])}o.position=["y"===u?p[d[l]]:c[0],"x"===u?p[d[l]]:c[3]],o.rotation=Math.PI/2*("x"===u?0:1);o.labelDirection=o.tickDirection=o.nameDirection={top:-1,bottom:1,left:-1,right:1}[s],o.labelOffset=r?p[d[s]]-p[d.onZero]:0,e.get("axisTick.inside")&&(o.tickDirection=-o.tickDirection),W(i.labelInside,e.get("axisLabel.inside"))&&(o.labelDirection=-o.labelDirection);var m=e.get("axisLabel.rotate");return o.labelRotate="top"===l?-m:m,o.z2=1,o}Um.registerAxisPointerClass=function(t,e){jm[t]=e},Um.getAxisPointerClass=function(t){return t&&jm[t]};var Km=["axisLine","axisTickLabel","axisName"],$m=["splitArea","splitLine"],Jm=Um.extend({type:"cartesianAxis",axisPointerClass:"CartesianAxisPointer",render:function(e,t,i,n){this.group.removeAll();var a=this._axisGroup;if(this._axisGroup=new Si,this.group.add(this._axisGroup),e.get("show")){var o=e.getCoordSysModel(),r=qm(o,e),s=new Cm(e,r);E(Km,s.add,s),this._axisGroup.add(s.getGroup()),E($m,function(t){e.get(t+".show")&&this["_"+t](e,o)},this),Qs(a,this._axisGroup,e),Jm.superCall(this,"render",e,t,i,n)}},remove:function(){this._splitAreaColors=null},_splitLine:function(t,e){var i=t.axis;if(!i.scale.isBlank()){var n=t.getModel("splitLine"),a=n.getModel("lineStyle"),o=a.get("color");o=k(o)?o:[o];for(var r=e.coordinateSystem.getRect(),s=i.isHorizontal(),l=0,u=i.getTicksCoords({tickModel:n}),h=[],c=[],d=a.getLineStyle(),f=0;f<u.length;f++){var p=i.toGlobalCoord(u[f].coord);s?(h[0]=p,h[1]=r.y,c[0]=p,c[1]=r.y+r.height):(h[0]=r.x,h[1]=p,c[0]=r.x+r.width,c[1]=p);var g=l++%o.length,m=u[f].tickValue;this._axisGroup.add(new Ur({anid:null!=m?"line_"+u[f].tickValue:null,subPixelOptimize:!0,shape:{x1:h[0],y1:h[1],x2:c[0],y2:c[1]},style:C({stroke:o[g]},d),silent:!0}))}}},_splitArea:function(t,e){var i=t.axis;if(!i.scale.isBlank()){var n=t.getModel("splitArea"),a=n.getModel("areaStyle"),o=a.get("color"),r=e.coordinateSystem.getRect(),s=i.getTicksCoords({tickModel:n,clamp:!0});if(s.length){var l=o.length,u=this._splitAreaColors,h=Q(),c=0;if(u)for(var d=0;d<s.length;d++){var f=u.get(s[d].tickValue);if(null!=f){c=(f+(l-1)*d)%l;break}}var p=i.toGlobalCoord(s[0].coord),g=a.getAreaStyle();o=k(o)?o:[o];for(d=1;d<s.length;d++){var m,v,y,x,_=i.toGlobalCoord(s[d].coord);p=i.isHorizontal()?(m=p,v=r.y,y=_-m,x=r.height,m+y):(m=r.x,v=p,y=r.width,v+(x=_-v));var w=s[d-1].tickValue;null!=w&&h.set(w,c),this._axisGroup.add(new Hr({anid:null!=w?"area_"+w:null,shape:{x:m,y:v,width:y,height:x},style:C({fill:o[c]},g),silent:!0})),c=(c+1)%l}this._splitAreaColors=h}}}});Jm.extend({type:"xAxis"}),Jm.extend({type:"yAxis"}),lf({type:"grid",render:function(t,e){this.group.removeAll(),t.get("show")&&this.group.add(new Hr({shape:t.coordinateSystem.getRect(),style:C({fill:t.get("backgroundColor")},t.getItemStyle()),silent:!0,z2:-1}))}}),Jd(function(t){t.xAxis&&t.yAxis&&!t.grid&&(t.grid={})}),af(rm("line","circle","line")),nf(sm("line")),Qd(cd.PROCESSOR.STATISTIC,{seriesType:"line",modifyOutputEnd:!0,reset:function(t,e,i){var n=t.getData(),a=t.get("sampling"),o=t.coordinateSystem;if("cartesian2d"===o.type&&a){var r,s=o.getBaseAxis(),l=o.getOtherAxis(s),u=s.getExtent(),h=u[1]-u[0],c=Math.round(n.count()/h);1<c&&("string"==typeof a?r=um[a]:"function"==typeof a&&(r=a),r&&t.setData(n.downSample(n.mapDimension(l.dim),1/c,r,lm)))}}});var Qm=Wh.extend({type:"series.__base_bar__",getInitialData:function(t,e){return Xf(this.getSource(),this)},getMarkerPosition:function(t){var e=this.coordinateSystem;if(e){var i=e.dataToPoint(e.clampData(t)),n=this.getData(),a=n.getLayout("offset"),o=n.getLayout("size");return i[e.getBaseAxis().isHorizontal()?0:1]+=a+o/2,i}return[NaN,NaN]},defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,barMinHeight:0,barMinAngle:0,large:!1,largeThreshold:400,progressive:3e3,progressiveChunkMode:"mod",itemStyle:{},emphasis:{}}});function tv(t,e,i,n,a,o){Bs(t,e,i.getModel("label"),i.getModel("emphasis.label"),{labelFetcher:a,labelDataIndex:o,defaultText:bg(a.getData(),o),isRectText:!0,autoColor:n}),ev(t),ev(e)}function ev(t,e){"outside"===t.textPosition&&(t.textPosition=e)}Qm.extend({type:"series.bar",dependencies:["grid","polar"],brushSelector:"rect",getProgressive:function(){return!!this.get("large")&&this.get("progressive")},getProgressiveThreshold:function(){var t=this.get("progressiveThreshold"),e=this.get("largeThreshold");return t<e&&(t=e),t},defaultOption:{clip:!0,roundCap:!1}});var iv=Xa([["fill","color"],["stroke","borderColor"],["lineWidth","borderWidth"],["stroke","barBorderColor"],["lineWidth","barBorderWidth"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]),nv={getBarItemStyle:function(t){var e=iv(this,t);if(this.getBorderLineDash){var i=this.getBorderLineDash();i&&(e.lineDash=i)}return e}},av=ds({type:"sausage",shape:{cx:0,cy:0,r0:0,r:0,startAngle:0,endAngle:2*Math.PI,clockwise:!0},buildPath:function(t,e){var i=e.cx,n=e.cy,a=Math.max(e.r0||0,0),o=Math.max(e.r,0),r=.5*(o-a),s=a+r,l=e.startAngle,u=e.endAngle,h=e.clockwise,c=Math.cos(l),d=Math.sin(l),f=Math.cos(u),p=Math.sin(u);(h?u-l<2*Math.PI:l-u<2*Math.PI)&&(t.moveTo(c*a+i,d*a+n),t.arc(c*s+i,d*s+n,r,-Math.PI+l,l,!h)),t.arc(i,n,o,l,u,!h),t.moveTo(f*o+i,p*o+n),t.arc(f*s+i,p*s+n,r,u-2*Math.PI,u-Math.PI,!h),0!==a&&(t.arc(i,n,a,u,l,h),t.moveTo(c*a+i,p*a+n)),t.closePath()}}),ov=["itemStyle","barBorderWidth"],rv=[0,0];L(dl.prototype,nv),hf({type:"bar",render:function(t,e,i){this._updateDrawMode(t);var n=t.get("coordinateSystem");return"cartesian2d"!==n&&"polar"!==n||(this._isLargeDraw?this._renderLarge(t,e,i):this._renderNormal(t,e,i)),this.group},incrementalPrepareRender:function(t,e,i){this._clear(),this._updateDrawMode(t)},incrementalRender:function(t,e,i,n){this._incrementalRenderLarge(t,e)},_updateDrawMode:function(t){var e=t.pipelineContext.large;(null==this._isLargeDraw||e^this._isLargeDraw)&&(this._isLargeDraw=e,this._clear())},_renderNormal:function(o,t,e){var r,s=this.group,l=o.getData(),u=this._data,h=o.coordinateSystem,i=h.getBaseAxis();"cartesian2d"===h.type?r=i.isHorizontal():"polar"===h.type&&(r="angle"===i.dim);var c=o.isAnimationEnabled()?o:null,d=o.get("clip",!0),f=function(t,e){var i=t.getArea&&t.getArea();if("cartesian2d"===t.type){var n=t.getBaseAxis();if("category"!==n.type||!n.onBand){var a=e.getLayout("bandWidth");n.isHorizontal()?(i.x-=a,i.width+=2*a):(i.y-=a,i.height+=2*a)}}return i}(h,l);s.removeClipPath();var p=o.get("roundCap",!0);l.diff(u).add(function(t){if(l.hasValue(t)){var e=l.getItemModel(t),i=fv[h.type](l,t,e);if(d)if(uv[h.type](f,i))return void s.remove(n);var n=hv[h.type](t,i,r,c,!1,p);l.setItemGraphicEl(t,n),s.add(n),pv(n,l,t,e,i,o,r,"polar"===h.type)}}).update(function(t,e){var i=u.getItemGraphicEl(e);if(l.hasValue(t)){var n=l.getItemModel(t),a=fv[h.type](l,t,n);if(d)if(uv[h.type](f,a))return void s.remove(i);i?js(i,{shape:a},c,t):i=hv[h.type](t,a,r,c,!0,p),l.setItemGraphicEl(t,i),s.add(i),pv(i,l,t,n,a,o,r,"polar"===h.type)}else s.remove(i)}).remove(function(t){var e=u.getItemGraphicEl(t);"cartesian2d"===h.type?e&&cv(t,c,e):e&&dv(t,c,e)}).execute(),this._data=l},_renderLarge:function(t,e,i){this._clear(),mv(t,this.group);var n=t.get("clip",!0)?tm(t.coordinateSystem,!1,t):null;n?this.group.setClipPath(n):this.group.removeClipPath()},_incrementalRenderLarge:function(t,e){mv(e,this.group,!0)},dispose:et,remove:function(t){this._clear(t)},_clear:function(e){var t=this.group,i=this._data;e&&e.get("animation")&&i&&!this._isLargeDraw?i.eachItemGraphicEl(function(t){"sector"===t.type?dv(t.dataIndex,e,t):cv(t.dataIndex,e,t)}):t.removeAll(),this._data=null}});var sv=Math.max,lv=Math.min,uv={cartesian2d:function(t,e){var i=e.width<0?-1:1,n=e.height<0?-1:1;i<0&&(e.x+=e.width,e.width=-e.width),n<0&&(e.y+=e.height,e.height=-e.height);var a=sv(e.x,t.x),o=lv(e.x+e.width,t.x+t.width),r=sv(e.y,t.y),s=lv(e.y+e.height,t.y+t.height);e.x=a,e.y=r,e.width=o-a,e.height=s-r;var l=e.width<0||e.height<0;return i<0&&(e.x+=e.width,e.width=-e.width),n<0&&(e.y+=e.height,e.height=-e.height),l},polar:function(t){return!1}},hv={cartesian2d:function(t,e,i,n,a){var o=new Hr({shape:L({},e)});if(n){var r=i?"height":"width",s={};o.shape[r]=0,s[r]=e[r],ol[a?"updateProps":"initProps"](o,{shape:s},n,t)}return o},polar:function(t,e,i,n,a,o){var r=e.startAngle<e.endAngle,s=new(!i&&o?av:Pr)({shape:C({clockwise:r},e)});if(n){var l=i?"r":"endAngle",u={};s.shape[l]=i?0:e.startAngle,u[l]=e[l],ol[a?"updateProps":"initProps"](s,{shape:u},n,t)}return s}};function cv(t,e,i){i.style.text=null,js(i,{shape:{width:0}},e,t,function(){i.parent&&i.parent.remove(i)})}function dv(t,e,i){i.style.text=null,js(i,{shape:{r:i.shape.r0}},e,t,function(){i.parent&&i.parent.remove(i)})}var fv={cartesian2d:function(t,e,i){var n=t.getItemLayout(e),a=function(t,e){var i=t.get(ov)||0;return Math.min(i,Math.abs(e.width),Math.abs(e.height))}(i,n),o=0<n.width?1:-1,r=0<n.height?1:-1;return{x:n.x+o*a/2,y:n.y+r*a/2,width:n.width-o*a,height:n.height-r*a}},polar:function(t,e,i){var n=t.getItemLayout(e);return{cx:n.cx,cy:n.cy,r0:n.r0,r:n.r,startAngle:n.startAngle,endAngle:n.endAngle}}};function pv(t,e,i,n,a,o,r,s){var l=e.getItemVisual(i,"color"),u=e.getItemVisual(i,"opacity"),h=n.getModel("itemStyle"),c=n.getModel("emphasis.itemStyle").getBarItemStyle();s||t.setShape("r",h.get("barBorderRadius")||0),t.useStyle(C({fill:l,opacity:u},h.getBarItemStyle()));var d=n.getShallow("cursor");d&&t.attr("cursor",d);r?a.height:a.width;s||tv(t.style,c,n,l,o,i),Os(t,c)}var gv=hr.extend({type:"largeBar",shape:{points:[]},buildPath:function(t,e){for(var i=e.points,n=this.__startPoint,a=this.__baseDimIdx,o=0;o<i.length;o+=2)n[a]=i[o+a],t.moveTo(n[0],n[1]),t.lineTo(i[o],i[o+1])}});function mv(t,e,i){var n=t.getData(),a=[],o=n.getLayout("valueAxisHorizontal")?1:0;a[1-o]=n.getLayout("valueAxisStart");var r=new gv({shape:{points:n.getLayout("largePoints")},incremental:!!i,__startPoint:a,__baseDimIdx:o,__largeDataIndices:n.getLayout("largeDataIndices"),__barWidth:n.getLayout("barWidth")});e.add(r),function(t,e,i){var n=i.getVisual("borderColor")||i.getVisual("color"),a=e.getModel("itemStyle").getItemStyle(["color","borderColor"]);t.useStyle(a),t.style.fill=null,t.style.stroke=n,t.style.lineWidth=i.getLayout("barWidth")}(r,t,n),r.seriesIndex=t.seriesIndex,t.get("silent")||(r.on("mousedown",vv),r.on("mousemove",vv))}var vv=cc(function(t){var e=function(t,e,i){var n=t.__baseDimIdx,a=1-n,o=t.shape.points,r=t.__largeDataIndices,s=Math.abs(t.__barWidth/2),l=t.__startPoint[a];rv[0]=e,rv[1]=i;for(var u=rv[n],h=rv[1-n],c=u-s,d=u+s,f=0,p=o.length/2;f<p;f++){var g=2*f,m=o[g+n],v=o[g+a];if(c<=m&&m<=d&&(l<=v?l<=h&&h<=v:v<=h&&h<=l))return r[f]}return-1}(this,t.offsetX,t.offsetY);this.dataIndex=0<=e?e:null},30,!1);nf(cd.VISUAL.LAYOUT,A(pp,"bar")),nf(cd.VISUAL.PROGRESSIVE_LAYOUT,gp),af({seriesType:"bar",reset:function(t){t.getData().setVisual("legendSymbol","roundRect")}});function yv(t,e,i){e=k(e)&&{coordDimensions:e}||L({},e);var n=t.getSource(),a=Wf(n,e),o=new Tf(a,t);return o.initData(n,i),o}var xv={updateSelectedMap:function(t){this._targetList=k(t)?t.slice():[],this._selectTargetMap=S(t||[],function(t,e){return t.set(e.name,e),t},Q())},select:function(t,e){var i=null!=e?this._targetList[e]:this._selectTargetMap.get(t);"single"===this.get("selectedMode")&&this._selectTargetMap.each(function(t){t.selected=!1}),i&&(i.selected=!0)},unSelect:function(t,e){var i=null!=e?this._targetList[e]:this._selectTargetMap.get(t);i&&(i.selected=!1)},toggleSelected:function(t,e){var i=null!=e?this._targetList[e]:this._selectTargetMap.get(t);if(null!=i)return this[i.selected?"unSelect":"select"](t,e),i.selected},isSelected:function(t,e){var i=null!=e?this._targetList[e]:this._selectTargetMap.get(t);return i&&i.selected}},_v=uf({type:"series.pie",init:function(t){_v.superApply(this,"init",arguments),this.legendDataProvider=function(){return this.getRawData()},this.updateSelectedMap(this._createSelectableList()),this._defaultLabelLine(t)},mergeOption:function(t){_v.superCall(this,"mergeOption",t),this.updateSelectedMap(this._createSelectableList())},getInitialData:function(t,e){return yv(this,["value"])},_createSelectableList:function(){for(var t=this.getRawData(),e=t.mapDimension("value"),i=[],n=0,a=t.count();n<a;n++)i.push({name:t.getName(n),value:t.get(e,n),selected:Ih(t,n,"selected")});return i},getDataParams:function(t){var e=this.getData(),i=_v.superCall(this,"getDataParams",t),n=[];return e.each(e.mapDimension("value"),function(t){n.push(t)}),i.percent=Il(n,t,e.hostModel.get("percentPrecision")),i.$vars.push("percent"),i},_defaultLabelLine:function(t){ba(t,"labelLine",["show"]);var e=t.labelLine,i=t.emphasis.labelLine;e.show=e.show&&t.label.show,i.show=i.show&&t.emphasis.label.show},defaultOption:{zlevel:0,z:2,legendHoverLink:!0,hoverAnimation:!0,center:["50%","50%"],radius:[0,"75%"],clockwise:!0,startAngle:90,minAngle:0,minShowLabelAngle:0,selectedOffset:10,hoverOffset:10,avoidLabelOverlap:!0,percentPrecision:2,stillShowZeroSum:!0,label:{rotate:!1,show:!0,position:"outer"},labelLine:{show:!0,length:15,length2:15,smooth:!1,lineStyle:{width:1,type:"solid"}},itemStyle:{borderWidth:1},animationType:"expansion",animationTypeUpdate:"transition",animationEasing:"cubicOut"}});function wv(t,e,i,n){var a=e.getData(),o=this.dataIndex,r=a.getName(o),s=e.get("selectedOffset");n.dispatchAction({type:"pieToggleSelect",from:t,name:r,seriesId:e.id}),a.each(function(t){bv(a.getItemGraphicEl(t),a.getItemLayout(t),e.isSelected(a.getName(t)),s,i)})}function bv(t,e,i,n,a){var o=(e.startAngle+e.endAngle)/2,r=i?n:0,s=[Math.cos(o)*r,Math.sin(o)*r];a?t.animate().when(200,{position:s}).start("bounceOut"):t.attr("position",s)}function Sv(t,e){Si.call(this);var i=new Pr({z2:2}),n=new zr,a=new Dr;this.add(i),this.add(n),this.add(a),this.updateData(t,e,!0)}b(_v,xv);var Mv=Sv.prototype;Mv.updateData=function(t,e,i){var n=this.childAt(0),a=this.childAt(1),o=this.childAt(2),r=t.hostModel,s=t.getItemModel(e),l=t.getItemLayout(e),u=L({},l);u.label=null;var h=r.getShallow("animationTypeUpdate");i?(n.setShape(u),"scale"===r.getShallow("animationType")?(n.shape.r=l.r0,qs(n,{shape:{r:l.r}},r,e)):(n.shape.endAngle=l.startAngle,js(n,{shape:{endAngle:l.endAngle}},r,e))):"expansion"===h?n.setShape(u):js(n,{shape:u},r,e);var c=t.getItemVisual(e,"color");n.useStyle(C({lineJoin:"bevel",fill:c},s.getModel("itemStyle").getItemStyle())),n.hoverStyle=s.getModel("emphasis.itemStyle").getItemStyle();var d=s.getShallow("cursor");d&&n.attr("cursor",d),bv(this,t.getItemLayout(e),r.isSelected(null,e),r.get("selectedOffset"),r.get("animation"));var f=!i&&"transition"===h;this._updateLabel(t,e,f),this.highDownOnUpdate=s.get("hoverAnimation")&&r.isAnimationEnabled()?function(t,e){"emphasis"===e?(a.ignore=a.hoverIgnore,o.ignore=o.hoverIgnore,n.stopAnimation(!0),n.animateTo({shape:{r:l.r+r.get("hoverOffset")}},300,"elasticOut")):(a.ignore=a.normalIgnore,o.ignore=o.normalIgnore,n.stopAnimation(!0),n.animateTo({shape:{r:l.r}},300,"elasticOut"))}:null,Os(this)},Mv._updateLabel=function(t,e,i){var n=this.childAt(1),a=this.childAt(2),o=t.hostModel,r=t.getItemModel(e),s=t.getItemLayout(e).label,l=t.getItemVisual(e,"color");if(!s||isNaN(s.x)||isNaN(s.y))a.ignore=a.normalIgnore=a.hoverIgnore=n.ignore=n.normalIgnore=n.hoverIgnore=!0;else{var u={points:s.linePoints||[[s.x,s.y],[s.x,s.y],[s.x,s.y]]},h={x:s.x,y:s.y};i?(js(n,{shape:u},o,e),js(a,{style:h},o,e)):(n.attr({shape:u}),a.attr({style:h})),a.attr({rotation:s.rotation,origin:[s.x,s.y],z2:10});var c=r.getModel("label"),d=r.getModel("emphasis.label"),f=r.getModel("labelLine"),p=r.getModel("emphasis.labelLine");l=t.getItemVisual(e,"color");Bs(a.style,a.hoverStyle={},c,d,{labelFetcher:t.hostModel,labelDataIndex:e,defaultText:t.getName(e),autoColor:l,useInsideStyle:!!s.inside},{textAlign:s.textAlign,textVerticalAlign:s.verticalAlign,opacity:t.getItemVisual(e,"opacity")}),a.ignore=a.normalIgnore=!c.get("show"),a.hoverIgnore=!d.get("show"),n.ignore=n.normalIgnore=!f.get("show"),n.hoverIgnore=!p.get("show"),n.setStyle({stroke:l,opacity:t.getItemVisual(e,"opacity")}),n.setStyle(f.getModel("lineStyle").getLineStyle()),n.hoverStyle=p.getModel("lineStyle").getLineStyle();var g=f.get("smooth");g&&!0===g&&(g=.4),n.setShape({smooth:g})}},w(Sv,Si);function Iv(i,t){E(t,function(o){o.update="updateView",tf(o,function(t,e){var a={};return e.eachComponent({mainType:"series",subType:i,query:t},function(i){i[o.method]&&i[o.method](t.name,t.dataIndex);var n=i.getData();n.each(function(t){var e=n.getName(t);a[e]=i.isSelected(e)||!1})}),{name:t.name,selected:a,seriesId:t.seriesId}})})}function Av(n){return{getTargetSeries:function(t){var e={},i=Q();return t.eachSeriesByType(n,function(t){t.__paletteScope=e,i.set(t.uid,t)}),i},reset:function(s,t){var l=s.getRawData(),u={},h=s.getData();h.each(function(t){var e=h.getRawIndex(t);u[e]=t}),l.each(function(t){var e,i=u[t],n=null!=i&&h.getItemVisual(i,"color",!0),a=null!=i&&h.getItemVisual(i,"borderColor",!0);if(n&&a||(e=l.getItemModel(t)),n)l.setItemVisual(t,"color",n);else{var o=e.get("itemStyle.color")||s.getColorFromPalette(l.getName(t)||t+"",s.__paletteScope,l.count());l.setItemVisual(t,"color",o),null!=i&&h.setItemVisual(i,"color",o)}if(a)l.setItemVisual(t,"borderColor",a);else{var r=e.get("itemStyle.borderColor");l.setItemVisual(t,"borderColor",r),null!=i&&h.setItemVisual(i,"borderColor",r)}})}}}ec.extend({type:"pie",init:function(){var t=new Si;this._sectorGroup=t},render:function(t,e,i,n){if(!n||n.from!==this.uid){var a=t.getData(),o=this._data,r=this.group,s=e.get("animation"),l=!o,u=t.get("animationType"),h=t.get("animationTypeUpdate"),c=A(wv,this.uid,t,s,i),d=t.get("selectedMode");if(a.diff(o).add(function(t){var e=new Sv(a,t);l&&"scale"!==u&&e.eachChild(function(t){t.stopAnimation(!0)}),d&&e.on("click",c),a.setItemGraphicEl(t,e),r.add(e)}).update(function(t,e){var i=o.getItemGraphicEl(e);l||"transition"===h||i.eachChild(function(t){t.stopAnimation(!0)}),i.updateData(a,t),i.off("click"),d&&i.on("click",c),r.add(i),a.setItemGraphicEl(t,i)}).remove(function(t){var e=o.getItemGraphicEl(t);r.remove(e)}).execute(),s&&0<a.count()&&(l?"scale"!==u:"transition"!==h)){for(var f=a.getItemLayout(0),p=1;isNaN(f.startAngle)&&p<a.count();++p)f=a.getItemLayout(p);var g=Math.max(i.getWidth(),i.getHeight())/2,m=T(r.removeClipPath,r);r.setClipPath(this._createClipPath(f.cx,f.cy,g,f.startAngle,f.clockwise,m,t,l))}else r.removeClipPath();this._data=a}},dispose:function(){},_createClipPath:function(t,e,i,n,a,o,r,s){var l=new Pr({shape:{cx:t,cy:e,r0:0,r:i,startAngle:n,endAngle:n,clockwise:a}});return(s?qs:js)(l,{shape:{endAngle:n+(a?1:-1)*Math.PI*2}},r,o),l},containPoint:function(t,e){var i=e.getData().getItemLayout(0);if(i){var n=t[0]-i.cx,a=t[1]-i.cy,o=Math.sqrt(n*n+a*a);return o<=i.r&&o>=i.r0}}});var Tv=Math.PI/180;function Dv(a,t,e,i,n,o,r){function s(t,e,i){for(var n=t;n<e;n++)if(a[n].y+=i,t<n&&n+1<e&&a[n+1].y>a[n].y+a[n].height)return void l(n,i/2);l(e-1,i/2)}function l(t,e){for(var i=t;0<=i&&(a[i].y-=e,!(0<i&&a[i].y>a[i-1].y+a[i-1].height));i--);}function u(t,e,i,n,a,o){for(var r=e?Number.MAX_VALUE:0,s=0,l=t.length;s<l;s++){var u=Math.abs(t[s].y-n),h=t[s].len,c=t[s].len2,d=u<a+h?Math.sqrt((a+h+c)*(a+h+c)-u*u):Math.abs(t[s].x-i);e&&r<=d&&(d=r-10),!e&&d<=r&&(d=r+10),t[s].x=i+d*o,r=d}}a.sort(function(t,e){return t.y-e.y});for(var h,c=0,d=a.length,f=[],p=[],g=0;g<d;g++)(h=a[g].y-c)<0&&s(g,d,-h),c=a[g].y+a[g].height;r-c<0&&l(d-1,c-r);for(g=0;g<d;g++)a[g].y>=e?p.push(a[g]):f.push(a[g]);u(f,!1,t,e,i,n),u(p,!0,t,e,i,n)}function Cv(t){return"center"===t.position}function Lv(I,A,t,e,i){var T,D,C=I.getData(),L=[],k=!1,P=(I.get("minShowLabelAngle")||0)*Tv;C.each(function(t){var e=C.getItemLayout(t),i=C.getItemModel(t),n=i.getModel("label"),a=n.get("position")||i.get("emphasis.label.position"),o=i.getModel("labelLine"),r=o.get("length"),s=o.get("length2");if(!(e.angle<P)){var l,u,h,c,d=(e.startAngle+e.endAngle)/2,f=Math.cos(d),p=Math.sin(d);T=e.cx,D=e.cy;var g="inside"===a||"inner"===a;if("center"===a)l=e.cx,u=e.cy,c="center";else{var m=(g?(e.r+e.r0)/2*f:e.r*f)+T,v=(g?(e.r+e.r0)/2*p:e.r*p)+D;if(l=m+3*f,u=v+3*p,!g){var y=m+f*(r+A-e.r),x=v+p*(r+A-e.r),_=y+(f<0?-1:1)*s;l=_+(f<0?-5:5),h=[[m,v],[y,x],[_,u=x]]}c=g?"center":0<f?"left":"right"}var w,b=n.getFont(),S=n.get("rotate");w="number"==typeof S?S*(Math.PI/180):S?f<0?-d+Math.PI:-d:0;var M=un(I.getFormattedLabel(t,"normal")||C.getName(t),b,c,"top");k=!!w,e.label={x:l,y:u,position:a,height:M.height,len:r,len2:s,linePoints:h,textAlign:c,verticalAlign:"middle",rotation:w,inside:g},g||L.push(e.label)}}),!k&&I.get("avoidLabelOverlap")&&function(t,e,i,n,a,o){for(var r=[],s=[],l=0;l<t.length;l++)Cv(t[l])||(t[l].x<e?r.push(t[l]):s.push(t[l]));for(Dv(s,e,i,n,1,0,o),Dv(r,e,i,n,-1,0,o),l=0;l<t.length;l++)if(!Cv(t[l])){var u=t[l].linePoints;if(u){var h=u[1][0]-u[2][0];t[l].x<e?u[2][0]=t[l].x+3:u[2][0]=t[l].x-3,u[1][1]=u[2][1]=t[l].y,u[1][0]=u[2][0]+h}}}(L,T,D,A,0,e)}function kv(t){return{seriesType:t,reset:function(t,e){var n=e.findComponents({mainType:"legend"});if(n&&n.length){var a=t.getData();a.filterSelf(function(t){for(var e=a.getName(t),i=0;i<n.length;i++)if(!n[i].isSelected(e))return!1;return!0})}}}}var Pv=2*Math.PI,Nv=Math.PI/180;Iv("pie",[{type:"pieToggleSelect",event:"pieselectchanged",method:"toggleSelected"},{type:"pieSelect",event:"pieselected",method:"select"},{type:"pieUnSelect",event:"pieunselected",method:"unSelect"}]),af(Av("pie")),nf(A(function(t,e,A,i){e.eachSeriesByType(t,function(t){var a=t.getData(),e=a.mapDimension("value"),i=t.get("center"),n=t.get("radius");k(n)||(n=[0,n]),k(i)||(i=[i,i]);var o=A.getWidth(),r=A.getHeight(),s=Math.min(o,r),l=xl(i[0],o),u=xl(i[1],r),h=xl(n[0],s/2),c=xl(n[1],s/2),d=-t.get("startAngle")*Nv,f=t.get("minAngle")*Nv,p=0;a.each(e,function(t){isNaN(t)||p++});var g=a.getSum(e),m=Math.PI/(g||p)*2,v=t.get("clockwise"),y=t.get("roseType"),x=t.get("stillShowZeroSum"),_=a.getDataExtent(e);_[0]=0;var w=Pv,b=0,S=d,M=v?1:-1;if(a.each(e,function(t,e){var i;if(isNaN(t))a.setItemLayout(e,{angle:NaN,startAngle:NaN,endAngle:NaN,clockwise:v,cx:l,cy:u,r0:h,r:y?NaN:c});else{(i="area"!==y?0===g&&x?m:t*m:Pv/p)<f?w-=i=f:b+=t;var n=S+M*i;a.setItemLayout(e,{angle:i,startAngle:S,endAngle:n,clockwise:v,cx:l,cy:u,r0:h,r:y?yl(t,_,[h,c]):c}),S=n}}),w<Pv&&p)if(w<=.001){var I=Pv/p;a.each(e,function(t,e){if(!isNaN(t)){var i=a.getItemLayout(e);i.angle=I,i.startAngle=d+M*e*I,i.endAngle=d+M*(e+1)*I}})}else m=w/b,S=d,a.each(e,function(t,e){if(!isNaN(t)){var i=a.getItemLayout(e),n=i.angle===f?f:t*m;i.startAngle=S,i.endAngle=S+M*n,S+=M*n}});Lv(t,c,0,r)})},"pie")),Qd(kv("pie")),Wh.extend({type:"series.scatter",dependencies:["grid","polar","geo","singleAxis","calendar"],getInitialData:function(t,e){return Xf(this.getSource(),this)},brushSelector:"point",getProgressive:function(){var t=this.option.progressive;return null==t?this.option.large?5e3:this.get("progressive"):t},getProgressiveThreshold:function(){var t=this.option.progressiveThreshold;return null==t?this.option.large?1e4:this.get("progressiveThreshold"):t},defaultOption:{coordinateSystem:"cartesian2d",zlevel:0,z:2,legendHoverLink:!0,hoverAnimation:!0,symbolSize:10,large:!1,largeThreshold:2e3,itemStyle:{opacity:.8},clip:!0}});var Ov=ds({shape:{points:null},symbolProxy:null,softClipShape:null,buildPath:function(t,e){var i=e.points,n=e.size,a=this.symbolProxy,o=a.shape;if(!((t.getContext?t.getContext():t)&&n[0]<4))for(var r=0;r<i.length;){var s=i[r++],l=i[r++];isNaN(s)||isNaN(l)||this.softClipShape&&!this.softClipShape.contain(s,l)||(o.x=s-n[0]/2,o.y=l-n[1]/2,o.width=n[0],o.height=n[1],a.buildPath(t,o,!0))}},afterBrush:function(t){var e=this.shape,i=e.points,n=e.size;if(n[0]<4){this.setTransform(t);for(var a=0;a<i.length;){var o=i[a++],r=i[a++];isNaN(o)||isNaN(r)||this.softClipShape&&!this.softClipShape.contain(o,r)||t.fillRect(o-n[0]/2,r-n[1]/2,n[0],n[1])}this.restoreTransform(t)}},findDataIndex:function(t,e){for(var i=this.shape,n=i.points,a=i.size,o=Math.max(a[0],4),r=Math.max(a[1],4),s=n.length/2-1;0<=s;s--){var l=2*s,u=n[l]-o/2,h=n[1+l]-r/2;if(u<=t&&h<=e&&t<=u+o&&e<=h+r)return s}return-1}});function Ev(){this.group=new Si}var Rv=Ev.prototype;function zv(t,e,i){vg.call(this,t,e,i),this.type="value",this.angle=0,this.name="",this.model}function Bv(t,e,i){this._model=t,this.dimensions=[],this._indicatorAxes=N(t.getIndicatorModels(),function(t,e){var i="indicator_"+e,n=new zv(i,"log"===t.get("axisType")?new Op:new op);return n.name=t.get("name"),(n.model=t).axis=n,this.dimensions.push(i),n},this),this.resize(t,i),this.cx,this.cy,this.r,this.r0,this.startAngle}Rv.isPersistent=function(){return!this._incremental},Rv.updateData=function(t,e){this.group.removeAll();var i=new Ov({rectHover:!0,cursor:"default"});i.setShape({points:t.getLayout("symbolPoints")}),this._setCommon(i,t,!1,e),this.group.add(i),this._incremental=null},Rv.updateLayout=function(t){if(!this._incremental){var n=t.getLayout("symbolPoints");this.group.eachChild(function(t){if(null!=t.startIndex){var e=2*(t.endIndex-t.startIndex),i=4*t.startIndex*2;n=new Float32Array(n.buffer,i,e)}t.setShape("points",n)})}},Rv.incrementalPrepareUpdate=function(t){this.group.removeAll(),this._clearIncremental(),2e6<t.count()?(this._incremental||(this._incremental=new ts({silent:!0})),this.group.add(this._incremental)):this._incremental=null},Rv.incrementalUpdate=function(t,e,i){var n;this._incremental?(n=new Ov,this._incremental.addDisplayable(n,!0)):((n=new Ov({rectHover:!0,cursor:"default",startIndex:t.start,endIndex:t.end})).incremental=!0,this.group.add(n)),n.setShape({points:e.getLayout("symbolPoints")}),this._setCommon(n,e,!!this._incremental,i)},Rv._setCommon=function(i,t,e,n){var a=t.hostModel;n=n||{};var o=t.getVisual("symbolSize");i.setShape("size",o instanceof Array?o:[o,o]),i.softClipShape=n.clipShape||null,i.symbolProxy=Jp(t.getVisual("symbol"),0,0,0,0),i.setColor=i.symbolProxy.setColor;var r=i.shape.size[0]<4;i.useStyle(a.getModel("itemStyle").getItemStyle(r?["color","shadowBlur","shadowColor"]:["color"]));var s=t.getVisual("color");s&&i.setColor(s),e||(i.seriesIndex=a.seriesIndex,i.on("mousemove",function(t){i.dataIndex=null;var e=i.findDataIndex(t.offsetX,t.offsetY);0<=e&&(i.dataIndex=e+(i.startIndex||0))}))},Rv.remove=function(){this._clearIncremental(),this._incremental=null,this.group.removeAll()},Rv._clearIncremental=function(){var t=this._incremental;t&&t.clearDisplaybles()},hf({type:"scatter",render:function(t,e,i){var n=t.getData();this._updateSymbolDraw(n,t).updateData(n,{clipShape:this._getClipShape(t)}),this._finished=!0},incrementalPrepareRender:function(t,e,i){var n=t.getData();this._updateSymbolDraw(n,t).incrementalPrepareUpdate(n),this._finished=!1},incrementalRender:function(t,e,i){this._symbolDraw.incrementalUpdate(t,e.getData(),{clipShape:this._getClipShape(e)}),this._finished=t.end===e.getData().count()},updateTransform:function(t,e,i){var n=t.getData();if(this.group.dirty(),!this._finished||1e4<n.count()||!this._symbolDraw.isPersistent())return{update:!0};var a=sm().reset(t);a.progress&&a.progress({start:0,end:n.count()},n),this._symbolDraw.updateLayout(n)},_getClipShape:function(t){var e=t.coordinateSystem,i=e&&e.getArea&&e.getArea();return t.get("clip",!0)?i:null},_updateSymbolDraw:function(t,e){var i=this._symbolDraw,n=e.pipelineContext.large;return i&&n===this._isLargeDraw||(i&&i.remove(),i=this._symbolDraw=n?new Ev:new Ng,this._isLargeDraw=n,this.group.removeAll()),this.group.add(i.group),i},remove:function(t,e){this._symbolDraw&&this._symbolDraw.remove(!0),this._symbolDraw=null},dispose:function(){}}),af(rm("scatter","circle")),nf(sm("scatter")),w(zv,vg),Bv.prototype.getIndicatorAxes=function(){return this._indicatorAxes},Bv.prototype.dataToPoint=function(t,e){var i=this._indicatorAxes[e];return this.coordToPoint(i.dataToCoord(t),e)},Bv.prototype.coordToPoint=function(t,e){var i=this._indicatorAxes[e].angle;return[this.cx+t*Math.cos(i),this.cy-t*Math.sin(i)]},Bv.prototype.pointToData=function(t){var e=t[0]-this.cx,i=t[1]-this.cy,n=Math.sqrt(e*e+i*i);e/=n,i/=n;for(var a,o=Math.atan2(-i,e),r=1/0,s=-1,l=0;l<this._indicatorAxes.length;l++){var u=this._indicatorAxes[l],h=Math.abs(o-u.angle);h<r&&(a=u,s=l,r=h)}return[s,+(a&&a.coordToData(n))]},Bv.prototype.resize=function(t,e){var i=t.get("center"),n=e.getWidth(),a=e.getHeight(),o=Math.min(n,a)/2;this.cx=xl(i[0],n),this.cy=xl(i[1],a),this.startAngle=t.get("startAngle")*Math.PI/180;var r=t.get("radius");"string"!=typeof r&&"number"!=typeof r||(r=[0,r]),this.r0=xl(r[0],o),this.r=xl(r[1],o),E(this._indicatorAxes,function(t,e){t.setExtent(this.r0,this.r);var i=this.startAngle+e*Math.PI*2/this._indicatorAxes.length;i=Math.atan2(Math.sin(i),Math.cos(i)),t.angle=i},this)},Bv.prototype.update=function(n,t){var a=this._indicatorAxes,o=this._model;E(a,function(t){t.scale.setExtent(1/0,-1/0)}),n.eachSeriesByType("radar",function(t,e){if("radar"===t.get("coordinateSystem")&&n.getComponent("radar",t.get("radarIndex"))===o){var i=t.getData();E(a,function(t){t.scale.unionExtentFromData(i,i.mapDimension(t.dim))})}},this);var f=o.get("splitNumber");function p(t){var e=Math.pow(10,Math.floor(Math.log(t)/Math.LN10)),i=t/e;return 2===i?i=5:i*=2,i*e}E(a,function(t,e){var i=Rp(t.scale,t.model);zp(t.scale,t.model);var n=t.model,a=t.scale,o=n.getMin(),r=n.getMax(),s=a.getInterval();if(null!=o&&null!=r)a.setExtent(+o,+r),a.setInterval((r-o)/f);else if(null!=o)for(var l;l=o+s*f,a.setExtent(+o,l),a.setInterval(s),s=p(s),l<i[1]&&isFinite(l)&&isFinite(i[1]););else if(null!=r)for(var u;u=r-s*f,a.setExtent(u,+r),a.setInterval(s),s=p(s),u>i[0]&&isFinite(u)&&isFinite(i[0]););else{var h=a.getTicks().length-1;f<h&&(s=p(s));var c=Math.round((i[0]+i[1])/2/s)*s,d=Math.round(f/2);a.setExtent(_l(c-d*s),_l(c+(f-d)*s)),a.setInterval(s)}})},Bv.dimensions=[],Bv.create=function(i,n){var a=[];return i.eachComponent("radar",function(t){var e=new Bv(t,i,n);a.push(e),t.coordinateSystem=e}),i.eachSeriesByType("radar",function(t){"radar"===t.get("coordinateSystem")&&(t.coordinateSystem=a[t.get("radarIndex")||0])}),a},Hu.register("radar",Bv);var Vv=gm.valueAxis;function Gv(t,e){return C({show:e},t)}sf({type:"radar",optionUpdated:function(){var a=this.get("boundaryGap"),o=this.get("splitNumber"),r=this.get("scale"),s=this.get("axisLine"),l=this.get("axisTick"),u=this.get("axisType"),h=this.get("axisLabel"),c=this.get("name"),d=this.get("name.show"),f=this.get("name.formatter"),p=this.get("nameGap"),g=this.get("triggerEvent"),t=N(this.get("indicator")||[],function(t){null!=t.max&&0<t.max&&!t.min?t.min=0:null!=t.min&&t.min<0&&!t.max&&(t.max=0);var e=c;if(null!=t.color&&(e=C({color:t.color},c)),t=m(D(t),{boundaryGap:a,splitNumber:o,scale:r,axisLine:s,axisTick:l,axisType:u,axisLabel:h,name:t.text,nameLocation:"end",nameGap:p,nameTextStyle:e,triggerEvent:g},!1),d||(t.name=""),"string"==typeof f){var i=t.name;t.name=f.replace("{value}",null!=i?i:"")}else"function"==typeof f&&(t.name=f(t.name,t));var n=L(new dl(t,null,this.ecModel),Hp);return n.mainType="radar",n.componentIndex=this.componentIndex,n},this);this.getIndicatorModels=function(){return t}},defaultOption:{zlevel:0,z:0,center:["50%","50%"],radius:"75%",startAngle:90,name:{show:!0},boundaryGap:[0,0],splitNumber:5,nameGap:15,scale:!1,shape:"polygon",axisLine:m({lineStyle:{color:"#bbb"}},Vv.axisLine),axisLabel:Gv(Vv.axisLabel,!1),axisTick:Gv(Vv.axisTick,!1),axisType:"interval",splitLine:Gv(Vv.splitLine,!0),splitArea:Gv(Vv.splitArea,!0),indicator:[]}});var Fv=["axisLine","axisTickLabel","axisName"];lf({type:"radar",render:function(t,e,i){this.group.removeAll(),this._buildAxes(t),this._buildSplitLineAndArea(t)},_buildAxes:function(t){var e=t.coordinateSystem;E(N(e.getIndicatorAxes(),function(t){return new Cm(t.model,{position:[e.cx,e.cy],rotation:t.angle,labelDirection:-1,tickDirection:-1,nameDirection:1})}),function(t){E(Fv,t.add,t),this.group.add(t.getGroup())},this)},_buildSplitLineAndArea:function(t){var n=t.coordinateSystem,e=n.getIndicatorAxes();if(e.length){var i=t.get("shape"),a=t.getModel("splitLine"),o=t.getModel("splitArea"),r=a.getModel("lineStyle"),s=o.getModel("areaStyle"),l=a.get("show"),u=o.get("show"),h=r.get("color"),c=s.get("color");h=k(h)?h:[h],c=k(c)?c:[c];var d=[],f=[];if("circle"===i)for(var p=e[0].getTicksCoords(),g=n.cx,m=n.cy,v=0;v<p.length;v++){if(l)d[I(d,h,v)].push(new Lr({shape:{cx:g,cy:m,r:p[v].coord}}));if(u&&v<p.length-1)f[I(f,c,v)].push(new Nr({shape:{cx:g,cy:m,r0:p[v].coord,r:p[v+1].coord}}))}else{var y,x=N(e,function(t,e){var i=t.getTicksCoords();return y=null==y?i.length-1:Math.min(i.length-1,y),N(i,function(t){return n.coordToPoint(t.coord,e)})}),_=[];for(v=0;v<=y;v++){for(var w=[],b=0;b<e.length;b++)w.push(x[b][v]);if(w[0]&&w.push(w[0].slice()),l)d[I(d,h,v)].push(new zr({shape:{points:w}}));if(u&&_)f[I(f,c,v-1)].push(new Rr({shape:{points:w.concat(_)}}));_=w.slice().reverse()}}var S=r.getLineStyle(),M=s.getAreaStyle();E(f,function(t,e){this.group.add(ys(t,{style:C({stroke:"none",fill:c[e%c.length]},M),silent:!0}))},this),E(d,function(t,e){this.group.add(ys(t,{style:C({fill:"none",stroke:h[e%h.length]},S),silent:!0}))},this)}function I(t,e,i){var n=i%e.length;return t[n]=t[n]||[],n}}});var Wv=Wh.extend({type:"series.radar",dependencies:["radar"],init:function(t){Wv.superApply(this,"init",arguments),this.legendDataProvider=function(){return this.getRawData()}},getInitialData:function(t,e){return yv(this,{generateCoord:"indicator_",generateCoordCount:1/0})},formatTooltip:function(n){var a=this.getData(),t=this.coordinateSystem.getIndicatorAxes(),e=this.getData().getName(n);return Wl(""===e?this.name:e)+"<br/>"+N(t,function(t,e){var i=a.get(a.mapDimension(t.dim),n);return Wl(t.name+" : "+i)}).join("<br />")},defaultOption:{zlevel:0,z:2,coordinateSystem:"radar",legendHoverLink:!0,radarIndex:0,lineStyle:{width:2,type:"solid"},label:{position:"top"},symbol:"emptyCircle",symbolSize:4}});hf({type:"radar",render:function(l,t,e){var i=l.coordinateSystem,g=this.group,m=l.getData(),s=this._data;function u(t,e){var i=t.getItemVisual(e,"symbol")||"circle",n=t.getItemVisual(e,"color");if("none"!==i){var a=function(t){return k(t)||(t=[+t,+t]),t}(t.getItemVisual(e,"symbolSize")),o=Jp(i,-1,-1,2,2,n);return o.attr({style:{strokeNoScale:!0},z2:100,scale:[a[0]/2,a[1]/2]}),o}}function h(t,e,i,n,a,o){i.removeAll();for(var r=0;r<e.length-1;r++){var s=u(n,a);s&&(t[s.__dimIdx=r]?(s.attr("position",t[r]),ol[o?"initProps":"updateProps"](s,{position:e[r]},l,a)):s.attr("position",e[r]),i.add(s))}}function c(t){return N(t,function(t){return[i.cx,i.cy]})}m.diff(s).add(function(t){var e=m.getItemLayout(t);if(e){var i=new Rr,n=new zr,a={shape:{points:e}};i.shape.points=c(e),n.shape.points=c(e),qs(i,a,l,t),qs(n,a,l,t);var o=new Si,r=new Si;o.add(n),o.add(i),o.add(r),h(n.shape.points,e,r,m,t,!0),m.setItemGraphicEl(t,o)}}).update(function(t,e){var i=s.getItemGraphicEl(e),n=i.childAt(0),a=i.childAt(1),o=i.childAt(2),r={shape:{points:m.getItemLayout(t)}};r.shape.points&&(h(n.shape.points,r.shape.points,o,m,t,!1),js(n,r,l),js(a,r,l),m.setItemGraphicEl(t,i))}).remove(function(t){g.remove(s.getItemGraphicEl(t))}).execute(),m.eachItemGraphicEl(function(t,i){var e=m.getItemModel(i),n=t.childAt(0),a=t.childAt(1),o=t.childAt(2),r=m.getItemVisual(i,"color");g.add(t),n.useStyle(C(e.getModel("lineStyle").getLineStyle(),{fill:"none",stroke:r})),n.hoverStyle=e.getModel("emphasis.lineStyle").getLineStyle();var s=e.getModel("areaStyle"),l=e.getModel("emphasis.areaStyle"),u=s.isEmpty()&&s.parentModel.isEmpty(),h=l.isEmpty()&&l.parentModel.isEmpty();h=h&&u,a.ignore=u,a.useStyle(C(s.getAreaStyle(),{fill:r,opacity:.7})),a.hoverStyle=l.getAreaStyle();var c=e.getModel("itemStyle").getItemStyle(["color"]),d=e.getModel("emphasis.itemStyle").getItemStyle(),f=e.getModel("label"),p=e.getModel("emphasis.label");o.eachChild(function(t){t.setStyle(c),t.hoverStyle=D(d);var e=m.get(m.dimensions[t.__dimIdx],i);null!=e&&!isNaN(e)||(e=""),Bs(t.style,t.hoverStyle,f,p,{labelFetcher:m.hostModel,labelDataIndex:i,labelDimIndex:t.__dimIdx,defaultText:e,autoColor:r,isRectText:!0})}),t.highDownOnUpdate=function(t,e){a.attr("ignore","emphasis"===e?h:u)},Os(t)}),this._data=m},remove:function(){this.group.removeAll(),this._data=null},dispose:function(){}});function Hv(t){return!isNaN(t[0])&&!isNaN(t[1])}function Zv(t){return[t.cx,t.cy]}af(Av("radar")),af(rm("radar","circle")),nf(function(t){t.eachSeriesByType("radar",function(t){var i=t.getData(),a=[],o=t.coordinateSystem;if(o){var e=o.getIndicatorAxes();E(e,function(t,n){i.each(i.mapDimension(e[n].dim),function(t,e){a[e]=a[e]||[];var i=o.dataToPoint(t,n);a[e][n]=Hv(i)?i:Zv(o)})}),i.each(function(t){var e=I(a[t],function(t){return Hv(t)})||Zv(o);a[t].push(e.slice()),i.setItemLayout(t,a[t])})}})}),Qd(kv("radar")),Jd(function(i){var t=i.polar;if(t){k(t)||(t=[t]);var n=[];E(t,function(t,e){t.indicator?(t.type&&!t.shape&&(t.shape=t.type),i.radar=i.radar||[],k(i.radar)||(i.radar=[i.radar]),i.radar.push(t)):n.push(t)}),i.polar=n}E(i.series,function(t){t&&"radar"===t.type&&t.polarIndex&&(t.radarIndex=t.polarIndex)})});for(var Uv=[126,25],Xv=[[[0,3.5],[7,11.2],[15,11.9],[30,7],[42,.7],[52,.7],[56,7.7],[59,.7],[64,.7],[64,0],[5,0],[0,3.5]],[[13,16.1],[19,14.7],[16,21.7],[11,23.1],[13,16.1]],[[12,32.2],[14,38.5],[15,38.5],[13,32.2],[12,32.2]],[[16,47.6],[12,53.2],[13,53.2],[18,47.6],[16,47.6]],[[6,64.4],[8,70],[9,70],[8,64.4],[6,64.4]],[[23,82.6],[29,79.8],[30,79.8],[25,82.6],[23,82.6]],[[37,70.7],[43,62.3],[44,62.3],[39,70.7],[37,70.7]],[[48,51.1],[51,45.5],[53,45.5],[50,51.1],[48,51.1]],[[51,35],[51,28.7],[53,28.7],[53,35],[51,35]],[[52,22.4],[55,17.5],[56,17.5],[53,22.4],[52,22.4]],[[58,12.6],[62,7],[63,7],[60,12.6],[58,12.6]],[[0,3.5],[0,93.1],[64,93.1],[64,0],[63,0],[63,92.4],[1,92.4],[1,3.5],[0,3.5]]],Yv=0;Yv<Xv.length;Yv++)for(var jv=0;jv<Xv[Yv].length;jv++)Xv[Yv][jv][0]/=10.5,Xv[Yv][jv][1]/=-14,Xv[Yv][jv][0]+=Uv[0],Xv[Yv][jv][1]+=Uv[1];var qv={"南海诸岛":[32,80],"广东":[0,-10],"香港":[10,5],"澳门":[-10,10],"天津":[5,5]},Kv={Russia:[100,60],"United States":[-99,38],"United States of America":[-99,38]},$v=[[[123.45165252685547,25.73527164402261],[123.49731445312499,25.73527164402261],[123.49731445312499,25.750734064600884],[123.45165252685547,25.750734064600884],[123.45165252685547,25.73527164402261]]],Jv=La(),Qv={load:function(n,t){var e=Jv(t).parsed;if(e)return e;var i,a=t.specialAreas||{},o=t.geoJSON;try{i=o?rg(o):[]}catch(t){throw new Error("Invalid geoJson format\n"+t.message)}return function(t,e){"china"===t&&e.push(new ag("南海诸岛",N(Xv,function(t){return{type:"polygon",exterior:t}}),Uv))}(n,i),E(i,function(t){var e=t.name;!function(t,e){if("china"===t){var i=qv[e.name];if(i){var n=e.center;n[0]+=i[0]/10.5,n[1]+=-i[1]/14}}}(n,t),function(t,e){if("world"===t){var i=Kv[e.name];if(i){var n=e.center;n[0]=i[0],n[1]=i[1]}}}(n,t),function(t,e){"china"===t&&"台湾"===e.name&&e.geometries.push({type:"polygon",exterior:$v[0]})}(n,t);var i=a[e];i&&t.transformTo(i.left,i.top,i.width,i.height)}),Jv(t).parsed={regions:i,boundingRect:function(t){for(var e,i=0;i<t.length;i++){var n=t[i].getBoundingRect();(e=e||n.clone()).union(n)}return e}(i)}}};var ty=La();function ey(t,e){var i,n,a=t.svgXML;try{Y(null!=(n=(i=a&&function(t,e){return(new Uc).parse(t,e)}(a,{ignoreViewBox:!0,ignoreRootClip:!0})||{}).root))}catch(t){throw new Error("Invalid svg format\n"+t.message)}var o=i.width,r=i.height,s=i.viewBoxRect;if(e||(e=null==o||null==r?n.getBoundingRect():new bi(0,0,0,0),null!=o&&(e.width=o),null!=r&&(e.height=r)),s){var l=id(s,e.width,e.height),u=n;(n=new Si).add(u),u.scale=l.scale,u.position=l.position}return n.setClipPath(new Hr({shape:e.plain()})),{root:n,boundingRect:e}}var iy={geoJSON:Qv,svg:{load:function(t,e){var i=ty(e).originRoot;if(i)return{root:i,boundingRect:ty(e).boundingRect};var n=ey(e);return ty(e).originRoot=n.root,ty(e).boundingRect=n.boundingRect,n},makeGraphic:function(t,e,i){var n=ty(e),a=n.rootMap||(n.rootMap=Q()),o=a.get(i);if(o)return o;var r=n.originRoot,s=n.boundingRect;return o=n.originRootHostKey?ey(e,s).root:(n.originRootHostKey=i,r),a.set(i,o)},removeGraphic:function(t,e,i){var n=ty(e),a=n.rootMap;a&&a.removeKey(i),i===n.originRootHostKey&&(n.originRootHostKey=null)}}},ny={load:function(n,a){var o,r=[],s=Q(),l=Q();return E(oy(n),function(t){var e=iy[t.type].load(n,t);E(e.regions,function(t){var e=t.name;a&&a.hasOwnProperty(e)&&(t=t.cloneShallow(e=a[e])),r.push(t),s.set(e,t),l.set(e,t.center)});var i=e.boundingRect;i&&(o?o.union(i):o=i.clone())}),{regions:r,regionsMap:s,nameCoordMap:l,boundingRect:o||new bi(0,0,0,0)}},makeGraphic:ay("makeGraphic"),removeGraphic:ay("removeGraphic")};function ay(o){return function(i,n){var t=oy(i),a=[];return E(t,function(t){var e=iy[t.type][o];e&&a.push(e(i,t,n))}),a}}function oy(t){return ad.retrieveMap(t)||[]}b(Wh.extend({type:"series.map",dependencies:["geo"],layoutMode:"box",needsDrawMap:!1,seriesGroup:[],getInitialData:function(t){for(var e=yv(this,["value"]),i=e.mapDimension("value"),n=Q(),a=[],o=[],r=0,s=e.count();r<s;r++){var l=e.getName(r);n.set(l,!0),a.push({name:l,value:e.get(i,r),selected:Ih(e,r,"selected")})}return E(ny.load(this.getMapType(),this.option.nameMap).regions,function(t){var e=t.name;n.get(e)||(a.push({name:e}),o.push(e))}),this.updateSelectedMap(a),e.appendValues([],o),e},getHostGeoModel:function(){var t=this.option.geoIndex;return null!=t?this.dependentModels.geo[t]:null},getMapType:function(){return(this.getHostGeoModel()||this).option.map},getRawValue:function(t){var e=this.getData();return e.get(e.mapDimension("value"),t)},getRegionModel:function(t){var e=this.getData();return e.getItemModel(e.indexOfName(t))},formatTooltip:function(t){for(var e=this.getData(),i=zl(this.getRawValue(t)),n=e.getName(t),a=this.seriesGroup,o=[],r=0;r<a.length;r++){var s=a[r].originalData.indexOfName(n),l=e.mapDimension("value");isNaN(a[r].originalData.get(l,s))||o.push(Wl(a[r].name))}return o.join(", ")+"<br />"+Wl(n+" : "+i)},getTooltipPosition:function(t){if(null!=t){var e=this.getData().getName(t),i=this.coordinateSystem,n=i.getRegion(e);return n&&i.dataToPoint(n.center)}},setZoom:function(t){this.option.zoom=t},setCenter:function(t){this.option.center=t},defaultOption:{zlevel:0,z:2,coordinateSystem:"geo",map:"",left:"center",top:"center",aspectScale:.75,showLegendSymbol:!0,dataRangeHoverLink:!0,boundingCoords:null,center:null,zoom:1,scaleLimit:null,label:{show:!1,color:"#000"},itemStyle:{borderWidth:.5,borderColor:"#444",areaColor:"#eee"},emphasis:{label:{show:!0,color:"rgb(100,0,0)"},itemStyle:{areaColor:"rgba(255,215,0,0.8)"}}}}),xv);var ry="\0_ec_interaction_mutex";function sy(t,e){return!!ly(t)[e]}function ly(t){return t[ry]||(t[ry]={})}function uy(i){this.pointerChecker,this._zr=i,this._opt={};var t=T,n=t(hy,this),a=t(cy,this),o=t(dy,this),r=t(fy,this),s=t(py,this);Ct.call(this),this.setPointerChecker=function(t){this.pointerChecker=t},this.enable=function(t,e){this.disable(),this._opt=C(D(e)||{},{zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!1,preventDefaultMouseMove:!0}),null==t&&(t=!0),!0!==t&&"move"!==t&&"pan"!==t||(i.on("mousedown",n),i.on("mousemove",a),i.on("mouseup",o)),!0!==t&&"scale"!==t&&"zoom"!==t||(i.on("mousewheel",r),i.on("pinch",s))},this.disable=function(){i.off("mousedown",n),i.off("mousemove",a),i.off("mouseup",o),i.off("mousewheel",r),i.off("pinch",s)},this.dispose=this.disable,this.isDragging=function(){return this._dragging},this.isPinching=function(){return this._pinching}}function hy(t){if(!(Wt(t)||t.target&&t.target.draggable)){var e=t.offsetX,i=t.offsetY;this.pointerChecker&&this.pointerChecker(t,e,i)&&(this._x=e,this._y=i,this._dragging=!0)}}function cy(t){if(this._dragging&&vy("moveOnMouseMove",t,this._opt)&&"pinch"!==t.gestureEvent&&!sy(this._zr,"globalPan")){var e=t.offsetX,i=t.offsetY,n=this._x,a=this._y,o=e-n,r=i-a;this._x=e,this._y=i,this._opt.preventDefaultMouseMove&&Ft(t.event),my(this,"pan","moveOnMouseMove",t,{dx:o,dy:r,oldX:n,oldY:a,newX:e,newY:i})}}function dy(t){Wt(t)||(this._dragging=!1)}function fy(t){var e=vy("zoomOnMouseWheel",t,this._opt),i=vy("moveOnMouseWheel",t,this._opt),n=t.wheelDelta,a=Math.abs(n),o=t.offsetX,r=t.offsetY;if(0!==n&&(e||i)){if(e){var s=3<a?1.4:1<a?1.2:1.1;gy(this,"zoom","zoomOnMouseWheel",t,{scale:0<n?s:1/s,originX:o,originY:r})}if(i){var l=Math.abs(n);gy(this,"scrollMove","moveOnMouseWheel",t,{scrollDelta:(0<n?1:-1)*(3<l?.4:1<l?.15:.05),originX:o,originY:r})}}}function py(t){sy(this._zr,"globalPan")||gy(this,"zoom",null,t,{scale:1<t.pinchScale?1.1:1/1.1,originX:t.pinchX,originY:t.pinchY})}function gy(t,e,i,n,a){t.pointerChecker&&t.pointerChecker(n,a.originX,a.originY)&&(Ft(n.event),my(t,e,i,n,a))}function my(t,e,i,n,a){a.isAvailableBehavior=T(vy,null,i,n),t.trigger(e,a)}function vy(t,e,i){var n=i[t];return!t||n&&(!R(n)||e.event[n+"Key"])}function yy(t,e,i){var n=t.target,a=n.position;a[0]+=e,a[1]+=i,n.dirty()}function xy(t,e,i,n){var a=t.target,o=t.zoomLimit,r=a.position,s=a.scale,l=t.zoom=t.zoom||1;if(l*=e,o){var u=o.min||0,h=o.max||1/0;l=Math.max(Math.min(h,l),u)}var c=l/t.zoom;t.zoom=l,r[0]-=(i-r[0])*(c-1),r[1]-=(n-r[1])*(c-1),s[0]*=c,s[1]*=c,a.dirty()}tf({type:"takeGlobalCursor",event:"globalCursorTaken",update:"update"},function(){}),b(uy,Ct);var _y={axisPointer:1,tooltip:1,brush:1};function wy(t,e,i){var n=e.getComponentByElement(t.topTarget),a=n&&n.coordinateSystem;return n&&n!==i&&!_y[n.mainType]&&a&&a.model!==i}function by(t){var e=t.getItemStyle(),i=t.get("areaColor");return null!=i&&(e.fill=i),e}function Sy(i,t){t.eachChild(function(e){E(e.__regions,function(t){e.trigger(i.isSelected(t.name)?"emphasis":"normal")})})}function My(t,e){var i=new Si;this.uid=ml("ec_map_draw"),this._controller=new uy(t.getZr()),this._controllerHost={target:e?i:null},this.group=i,this._updateGroup=e,this._mouseDownFlag,this._mapName,this._initialized,i.add(this._regionsGroup=new Si),i.add(this._backgroundGroup=new Si)}My.prototype={constructor:My,draw:function(_,t,e,i,n){var w="geo"===_.mainType,b=_.getData&&_.getData();w&&t.eachComponent({mainType:"series",subType:"map"},function(t){b||t.getHostGeoModel()!==_||(b=t.getData())});var a=_.coordinateSystem;this._updateBackground(a);var S=this._regionsGroup,M=this.group;a._roamTransformable.transform&&(M.transform=a._roamTransformable.transform.slice(),M.decomposeTransform());var I=a._rawTransformable.scale,A=a._rawTransformable.position;S.removeAll();var T=["itemStyle"],D=["emphasis","itemStyle"],C=["label"],L=["emphasis","label"],k=Q();E(a.regions,function(t){var e=k.get(t.name)||k.set(t.name,new Si),o=new $r({segmentIgnoreThreshold:1,shape:{paths:[]}});e.add(o);var i,n=(x=_.getRegionModel(t.name)||_).getModel(T),a=x.getModel(D),r=by(n),s=by(a),l=x.getModel(C),u=x.getModel(L);if(b){i=b.indexOfName(t.name);var h=b.getItemVisual(i,"color",!0);h&&(r.fill=h)}function c(t){return[t[0]*I[0]+A[0],t[1]*I[1]+A[1]]}E(t.geometries,function(t){if("polygon"===t.type){for(var e=[],i=0;i<t.exterior.length;++i)e.push(c(t.exterior[i]));o.shape.paths.push(new Rr({segmentIgnoreThreshold:1,shape:{points:e}}));for(i=0;i<(t.interiors?t.interiors.length:0);++i){for(var n=t.interiors[i],a=(e=[],0);a<n.length;++a)e.push(c(n[a]));o.shape.paths.push(new Rr({segmentIgnoreThreshold:1,shape:{points:e}}))}}}),o.setStyle(r),o.style.strokeNoScale=!0,o.culling=!0;var d=l.get("show"),f=u.get("show"),p=b&&isNaN(b.get(b.mapDimension("value"),i)),g=b&&b.getItemLayout(i);if(w||p&&(d||f)||g&&g.showLabel){var m,v=w?t.name:i;(!b||0<=i)&&(m=_);var y=new Dr({position:c(t.center.slice()),scale:[1/M.scale[0],1/M.scale[1]],z2:10,silent:!0});Bs(y.style,y.hoverStyle={},l,u,{labelFetcher:m,labelDataIndex:v,defaultText:t.name,useInsideStyle:!1},{textAlign:"center",textVerticalAlign:"middle"}),e.add(y)}if(b)b.setItemGraphicEl(i,e);else{var x=_.getRegionModel(t.name);o.eventData={componentType:"geo",componentIndex:_.componentIndex,geoIndex:_.componentIndex,name:t.name,region:x&&x.option||{}}}(e.__regions||(e.__regions=[])).push(t),e.highDownSilentOnTouch=!!_.get("selectedMode"),Os(e,s),S.add(e)}),this._updateController(_,t,e),function(n,a,o,r,s){o.off("click"),o.off("mousedown"),a.get("selectedMode")&&(o.on("mousedown",function(){n._mouseDownFlag=!0}),o.on("click",function(t){if(n._mouseDownFlag){n._mouseDownFlag=!1;for(var e=t.target;!e.__regions;)e=e.parent;if(e){var i={type:("geo"===a.mainType?"geo":"map")+"ToggleSelect",batch:N(e.__regions,function(t){return{name:t.name,from:s.uid}})};i[a.mainType+"Id"]=a.id,r.dispatchAction(i),Sy(a,o)}}}))}(this,_,S,e,i),Sy(_,S)},remove:function(){this._regionsGroup.removeAll(),this._backgroundGroup.removeAll(),this._controller.dispose(),this._mapName&&ny.removeGraphic(this._mapName,this.uid),this._mapName=null,this._controllerHost={}},_updateBackground:function(t){var e=t.map;this._mapName!==e&&E(ny.makeGraphic(e,this.uid),function(t){this._backgroundGroup.add(t)},this),this._mapName=e},_updateController:function(n,t,a){var o=n.coordinateSystem,e=this._controller,i=this._controllerHost;i.zoomLimit=n.get("scaleLimit"),i.zoom=o.getZoom(),e.enable(n.get("roam")||!1);var r=n.mainType;function s(){var t={type:"geoRoam",componentType:r};return t[r+"Id"]=n.id,t}e.off("pan").on("pan",function(t){this._mouseDownFlag=!1,yy(i,t.dx,t.dy),a.dispatchAction(L(s(),{dx:t.dx,dy:t.dy}))},this),e.off("zoom").on("zoom",function(t){if(this._mouseDownFlag=!1,xy(i,t.scale,t.originX,t.originY),a.dispatchAction(L(s(),{zoom:t.scale,originX:t.originX,originY:t.originY})),this._updateGroup){var e=this.group.scale;this._regionsGroup.traverse(function(t){"text"===t.type&&t.attr("scale",[1/e[0],1/e[1]])})}},this),e.setPointerChecker(function(t,e,i){return o.getViewRectAfterRoam().contain(e,i)&&!wy(t,a,n)})}};var Iy="__seriesMapHighDown",Ay="__seriesMapCallKey";function Ty(t){var e=this[Iy];e&&e.recordVersion===this[Ay]&&Dy(e,t)}function Dy(t,e){var i=t.circle,n=t.labelModel,a=t.hoverLabelModel,o=t.emphasisText,r=t.normalText;e?(i.style.extendFrom(Gs({},a,{text:a.get("show")?o:null},{isRectText:!0,useInsideStyle:!1},!0)),i.__mapOriginalZ2=i.z2,i.z2+=os):(Gs(i.style,n,{text:n.get("show")?r:null,textPosition:n.getShallow("position")||"bottom"},{isRectText:!0,useInsideStyle:!1}),i.dirty(!1),null!=i.__mapOriginalZ2&&(i.z2=i.__mapOriginalZ2,i.__mapOriginalZ2=null))}function Cy(t,e,i){var n=t.getZoom(),a=t.getCenter(),o=e.zoom,r=t.dataToPoint(a);if(null!=e.dx&&null!=e.dy){r[0]-=e.dx,r[1]-=e.dy;a=t.pointToData(r);t.setCenter(a)}if(null!=o){if(i){var s=i.min||0,l=i.max||1/0;o=Math.max(Math.min(n*o,l),s)/n}t.scale[0]*=o,t.scale[1]*=o;var u=t.position,h=(e.originX-u[0])*(o-1),c=(e.originY-u[1])*(o-1);u[0]-=h,u[1]-=c,t.updateTransform();a=t.pointToData(r);t.setCenter(a),t.setZoom(o*n)}return{center:t.getCenter(),zoom:t.getZoom()}}hf({type:"map",render:function(t,e,i,n){if(!n||"mapToggleSelect"!==n.type||n.from!==this.uid){var a=this.group;if(a.removeAll(),!t.getHostGeoModel()){if(n&&"geoRoam"===n.type&&"series"===n.componentType&&n.seriesId===t.id)(o=this._mapDraw)&&a.add(o.group);else if(t.needsDrawMap){var o=this._mapDraw||new My(i,!0);a.add(o.group),o.draw(t,e,i,this,n),this._mapDraw=o}else this._mapDraw&&this._mapDraw.remove(),this._mapDraw=null;t.get("showLegendSymbol")&&e.getComponent("legend")&&this._renderSymbols(t,e,i)}}},remove:function(){this._mapDraw&&this._mapDraw.remove(),this._mapDraw=null,this.group.removeAll()},dispose:function(){this._mapDraw&&this._mapDraw.remove(),this._mapDraw=null},_renderSymbols:function(x,t,e){var _=x.originalData,w=this.group;_.each(_.mapDimension("value"),function(t,e){if(!isNaN(t)){var i=_.getItemLayout(e);if(i&&i.point){var n=i.point,a=i.offset,o=new Lr({style:{fill:x.getData().getVisual("color")},shape:{cx:n[0]+9*a,cy:n[1],r:3},silent:!0,z2:8+(a?0:os+1)});if(!a){var r=x.mainSeries.getData(),s=_.getName(e),l=r.indexOfName(s),u=_.getItemModel(e),h=u.getModel("label"),c=u.getModel("emphasis.label"),d=r.getItemGraphicEl(l),f=H(x.getFormattedLabel(l,"normal"),s),p=H(x.getFormattedLabel(l,"emphasis"),f),g=d[Iy],m=Math.random();if(!g){g=d[Iy]={};var v=A(Ty,!0),y=A(Ty,!1);d.on("mouseover",v).on("mouseout",y).on("emphasis",v).on("normal",y)}L(g,{recordVersion:d[Ay]=m,circle:o,labelModel:h,hoverLabelModel:c,emphasisText:p,normalText:f}),Dy(g,!1)}w.add(o)}}})}}),tf({type:"geoRoam",event:"geoRoam",update:"updateTransform"},function(n,t){var a=n.componentType||"series";t.eachComponent({mainType:a,query:n},function(t){var e=t.coordinateSystem;if("geo"===e.type){var i=Cy(e,n,t.get("scaleLimit"));t.setCenter&&t.setCenter(i.center),t.setZoom&&t.setZoom(i.zoom),"series"===a&&E(t.seriesGroup,function(t){t.setCenter(i.center),t.setZoom(i.zoom)})}})});var Ly=bt;function ky(){ce.call(this)}function Py(t){this.name=t,this.zoomLimit,ce.call(this),this._roamTransformable=new ky,this._rawTransformable=new ky,this._center,this._zoom}function Ny(t,e,i,n){var a=i.seriesModel,o=a?a.coordinateSystem:null;return o===this?o[t](n):null}function Oy(t,e,i,n){Py.call(this,t),this.map=e;var a=ny.load(e,i);this._nameCoordMap=a.nameCoordMap,this._regionsMap=a.regionsMap,this._invertLongitute=null==n||n,this.regions=a.regions,this._rect=a.boundingRect}function Ey(t,e,i,n){var a=i.geoModel,o=i.seriesModel,r=a?a.coordinateSystem:o?o.coordinateSystem||(o.getReferringComponents("geo")[0]||{}).coordinateSystem:null;return r===this?r[t](n):null}function Ry(t,e){var i=t.get("boundingCoords");if(null!=i){var n=i[0],a=i[1];isNaN(n[0])||isNaN(n[1])||isNaN(a[0])||isNaN(a[1])||this.setBoundingRect(n[0],n[1],a[0]-n[0],a[1]-n[1])}var o,r=this.getBoundingRect(),s=t.get("layoutCenter"),l=t.get("layoutSize"),u=e.getWidth(),h=e.getHeight(),c=r.width/r.height*this.aspectScale,d=!1;if(s&&l&&(s=[xl(s[0],u),xl(s[1],h)],l=xl(l,Math.min(u,h)),isNaN(s[0])||isNaN(s[1])||isNaN(l)||(d=!0)),d){var f={};1<c?(f.width=l,f.height=l/c):(f.height=l,f.width=l*c),f.y=s[1]-f.height/2,f.x=s[0]-f.width/2}else(o=t.getBoxLayoutParams()).aspect=c,f=au(o,{width:u,height:h});this.setViewRect(f.x,f.y,f.width,f.height),this.setCenter(t.get("center")),this.setZoom(t.get("zoom"))}function zy(i,t){E(t.get("geoCoord"),function(t,e){i.addGeoCoord(e,t)})}b(ky,ce),Py.prototype={constructor:Py,type:"view",dimensions:["x","y"],setBoundingRect:function(t,e,i,n){return this._rect=new bi(t,e,i,n),this._rect},getBoundingRect:function(){return this._rect},setViewRect:function(t,e,i,n){this.transformTo(t,e,i,n),this._viewRect=new bi(t,e,i,n)},transformTo:function(t,e,i,n){var a=this.getBoundingRect(),o=this._rawTransformable;o.transform=a.calculateTransform(new bi(t,e,i,n)),o.decomposeTransform(),this._updateTransform()},setCenter:function(t){t&&(this._center=t,this._updateCenterAndZoom())},setZoom:function(t){t=t||1;var e=this.zoomLimit;e&&(null!=e.max&&(t=Math.min(e.max,t)),null!=e.min&&(t=Math.max(e.min,t))),this._zoom=t,this._updateCenterAndZoom()},getDefaultCenter:function(){var t=this.getBoundingRect();return[t.x+t.width/2,t.y+t.height/2]},getCenter:function(){return this._center||this.getDefaultCenter()},getZoom:function(){return this._zoom||1},getRoamTransform:function(){return this._roamTransformable.getLocalTransform()},_updateCenterAndZoom:function(){var t=this._rawTransformable.getLocalTransform(),e=this._roamTransformable,i=this.getDefaultCenter(),n=this.getCenter(),a=this.getZoom();n=bt([],n,t),i=bt([],i,t),e.origin=n,e.position=[i[0]-n[0],i[1]-n[1]],e.scale=[a,a],this._updateTransform()},_updateTransform:function(){var t=this._roamTransformable,e=this._rawTransformable;(e.parent=t).updateTransform(),e.updateTransform(),ee(this.transform||(this.transform=[]),e.transform||Qt()),this._rawTransform=e.getLocalTransform(),this.invTransform=this.invTransform||[],re(this.invTransform,this.transform),this.decomposeTransform()},getViewRect:function(){return this._viewRect},getViewRectAfterRoam:function(){var t=this.getBoundingRect().clone();return t.applyTransform(this.transform),t},dataToPoint:function(t,e,i){var n=e?this._rawTransform:this.transform;return i=i||[],n?Ly(i,t,n):ot(i,t)},pointToData:function(t){var e=this.invTransform;return e?Ly([],t,e):[t[0],t[1]]},convertToPixel:A(Ny,"dataToPoint"),convertFromPixel:A(Ny,"pointToData"),containPoint:function(t){return this.getViewRectAfterRoam().contain(t[0],t[1])}},b(Py,ce),Oy.prototype={constructor:Oy,type:"geo",dimensions:["lng","lat"],containCoord:function(t){for(var e=this.regions,i=0;i<e.length;i++)if(e[i].contain(t))return!0;return!1},transformTo:function(t,e,i,n){var a=this.getBoundingRect(),o=this._invertLongitute;a=a.clone(),o&&(a.y=-a.y-a.height);var r=this._rawTransformable;if(r.transform=a.calculateTransform(new bi(t,e,i,n)),r.decomposeTransform(),o){var s=r.scale;s[1]=-s[1]}r.updateTransform(),this._updateTransform()},getRegion:function(t){return this._regionsMap.get(t)},getRegionByCoord:function(t){for(var e=this.regions,i=0;i<e.length;i++)if(e[i].contain(t))return e[i]},addGeoCoord:function(t,e){this._nameCoordMap.set(t,e)},getGeoCoord:function(t){return this._nameCoordMap.get(t)},getBoundingRect:function(){return this._rect},dataToPoint:function(t,e,i){if("string"==typeof t&&(t=this.getGeoCoord(t)),t)return Py.prototype.dataToPoint.call(this,t,e,i)},convertToPixel:A(Ey,"dataToPoint"),convertFromPixel:A(Ey,"pointToData")},b(Oy,Py);var By={dimensions:Oy.prototype.dimensions,create:function(t,s){var l=[];t.eachComponent("geo",function(t,e){var i=t.get("map"),n=t.get("aspectScale"),a=!0,o=ad.retrieveMap(i);o&&o[0]&&"svg"===o[0].type?(null==n&&(n=1),a=!1):null==n&&(n=.75);var r=new Oy(i+e,i,t.get("nameMap"),a);r.aspectScale=n,r.zoomLimit=t.get("scaleLimit"),l.push(r),zy(r,t),(t.coordinateSystem=r).model=t,r.resize=Ry,r.resize(t,s)}),t.eachSeries(function(t){if("geo"===t.get("coordinateSystem")){var e=t.get("geoIndex")||0;t.coordinateSystem=l[e]}});var i={};return t.eachSeriesByType("map",function(t){if(!t.getHostGeoModel()){var e=t.getMapType();i[e]=i[e]||[],i[e].push(t)}}),E(i,function(t,e){var i=new Oy(e,e,p(N(t,function(t){return t.get("nameMap")})));i.zoomLimit=W.apply(null,N(t,function(t){return t.get("scaleLimit")})),l.push(i),i.resize=Ry,i.aspectScale=t[0].get("aspectScale"),i.resize(t[0],s),E(t,function(t){zy(t.coordinateSystem=i,t)})}),l},getFilledRegions:function(t,e,i){for(var n=(t||[]).slice(),a=Q(),o=0;o<n.length;o++)a.set(n[o].name,n[o]);return E(ny.load(e,i).regions,function(t){var e=t.name;a.get(e)||n.push({name:e})}),n}};ef("geo",By);nf(function(i){var a={};i.eachSeriesByType("map",function(t){var e=t.getMapType();if(!t.getHostGeoModel()&&!a[e]){var l={};E(t.seriesGroup,function(t){var r=t.coordinateSystem,s=t.originalData;t.get("showLegendSymbol")&&i.getComponent("legend")&&s.each(s.mapDimension("value"),function(t,e){var i=s.getName(e),n=r.getRegion(i);if(n&&!isNaN(t)){var a=l[i]||0,o=r.dataToPoint(n.center);l[i]=a+1,s.setItemLayout(e,{point:o,offset:a})}})});var n=t.getData();n.each(function(t){var e=n.getName(t),i=n.getItemLayout(t)||{};i.showLabel=!l[e],n.setItemLayout(t,i)}),a[e]=!0}})}),af(function(t){t.eachSeriesByType("map",function(t){var e=t.get("color"),i=t.getModel("itemStyle"),n=i.get("areaColor"),a=i.get("color")||e[t.seriesIndex%e.length];t.getData().setVisual({areaColor:n,color:a})})}),Qd(cd.PROCESSOR.STATISTIC,function(t){var n={};t.eachSeriesByType("map",function(t){var e=t.getHostGeoModel(),i=e?"o"+e.id:"i"+t.getMapType();(n[i]=n[i]||[]).push(t)}),E(n,function(t,e){for(var i=function(u,h){var c={};return E(u,function(n){n.each(n.mapDimension("value"),function(t,e){var i="ec-"+n.getName(e);c[i]=c[i]||[],isNaN(t)||c[i].push(t)})}),u[0].map(u[0].mapDimension("value"),function(t,e){for(var i,n="ec-"+u[0].getName(e),a=0,o=1/0,r=-1/0,s=c[n].length,l=0;l<s;l++)o=Math.min(o,c[n][l]),r=Math.max(r,c[n][l]),a+=c[n][l];return i="min"===h?o:"max"===h?r:"average"===h?a/s:a,0===s?NaN:i})}(N(t,function(t){return t.getData()}),t[0].get("mapValueCalculation")),n=0;n<t.length;n++)t[n].originalData=t[n].getData();for(n=0;n<t.length;n++)(t[n].seriesGroup=t)[n].needsDrawMap=0===n&&!t[n].getHostGeoModel(),t[n].setData(i.cloneShallow()),t[n].mainSeries=t[0]})}),Jd(function(t){var e=[];E(t.series,function(t){t&&"map"===t.type&&(e.push(t),t.map=t.map||t.mapType,C(t,t.mapLocation))})}),Iv("map",[{type:"mapToggleSelect",event:"mapselectchanged",method:"toggleSelected"},{type:"mapSelect",event:"mapselected",method:"select"},{type:"mapUnSelect",event:"mapunselected",method:"unSelect"}]);var Vy=E,Gy="\0__link_datas",Fy="\0__link_mainData";function Wy(i){var n=i.mainData,t=i.datas;t||(t={main:n},i.datasAttr={main:"data"}),i.datas=i.mainData=null,Yy(n,t,i),Vy(t,function(e){Vy(n.TRANSFERABLE_METHODS,function(t){e.wrapMethod(t,A(Hy,i))})}),n.wrapMethod("cloneShallow",A(Uy,i)),Vy(n.CHANGABLE_METHODS,function(t){n.wrapMethod(t,A(Zy,i))}),Y(t[n.dataType]===n)}function Hy(t,e){if(function(t){return t[Fy]===t}(this)){var i=L({},this[Gy]);Yy(i[this.dataType]=e,i,t)}else jy(e,this.dataType,this[Fy],t);return e}function Zy(t,e){return t.struct&&t.struct.update(this),e}function Uy(i,n){return Vy(n[Gy],function(t,e){t!==n&&jy(t.cloneShallow(),e,n,i)}),n}function Xy(t){var e=this[Fy];return null==t||null==e?e:e[Gy][t]}function Yy(i,t,n){i[Gy]={},Vy(t,function(t,e){jy(t,e,i,n)})}function jy(t,e,i,n){(i[Gy][e]=t)[Fy]=i,t.dataType=e,n.struct&&(t[n.structAttr]=n.struct,n.struct[n.datasAttr[e]]=t),t.getLinkedData=Xy}function qy(t,e){this.name=t||"",this.depth=0,this.height=0,this.parentNode=null,this.dataIndex=-1,this.children=[],this.viewChildren=[],this.hostTree=e}function Ky(e,t,i){this.root,this.data,this._nodes=[],this.hostModel=e,this.levelModels=N(t||[],function(t){return new dl(t,e,e.ecModel)}),this.leavesModel=new dl(i||{},e,e.ecModel)}function $y(t,e){var i=e.children;t.parentNode!==e&&(i.push(t),t.parentNode=e)}function Jy(t,e){var i=t.isExpand?t.children:[],n=t.parentNode.children,a=t.hierNode.i?n[t.hierNode.i-1]:null;if(i.length){!function(t){var e=t.children,i=e.length,n=0,a=0;for(;0<=--i;){var o=e[i];o.hierNode.prelim+=n,o.hierNode.modifier+=n,a+=o.hierNode.change,n+=o.hierNode.shift+a}}(t);var o=(i[0].hierNode.prelim+i[i.length-1].hierNode.prelim)/2;a?(t.hierNode.prelim=a.hierNode.prelim+e(t,a),t.hierNode.modifier=t.hierNode.prelim-o):t.hierNode.prelim=o}else a&&(t.hierNode.prelim=a.hierNode.prelim+e(t,a));t.parentNode.hierNode.defaultAncestor=function(t,e,i,n){if(e){for(var a=t,o=t,r=o.parentNode.children[0],s=e,l=a.hierNode.modifier,u=o.hierNode.modifier,h=r.hierNode.modifier,c=s.hierNode.modifier;s=ix(s),o=nx(o),s&&o;){a=ix(a),r=nx(r),a.hierNode.ancestor=t;var d=s.hierNode.prelim+c-o.hierNode.prelim-u+n(s,o);0<d&&(ax((p=t,g=i,(f=s).hierNode.ancestor.parentNode===p.parentNode?f.hierNode.ancestor:g),t,d),u+=d,l+=d),c+=s.hierNode.modifier,u+=o.hierNode.modifier,l+=a.hierNode.modifier,h+=r.hierNode.modifier}s&&!ix(a)&&(a.hierNode.thread=s,a.hierNode.modifier+=c-l),o&&!nx(r)&&(r.hierNode.thread=o,r.hierNode.modifier+=u-h,i=t)}var f,p,g;return i}(t,a,t.parentNode.hierNode.defaultAncestor||n[0],e)}function Qy(t){var e=t.hierNode.prelim+t.parentNode.hierNode.modifier;t.setLayout({x:e},!0),t.hierNode.modifier+=t.parentNode.hierNode.modifier}function tx(t){return arguments.length?t:ox}function ex(t,e){var i={};return t-=Math.PI/2,i.x=e*Math.cos(t),i.y=e*Math.sin(t),i}function ix(t){var e=t.children;return e.length&&t.isExpand?e[e.length-1]:t.hierNode.thread}function nx(t){var e=t.children;return e.length&&t.isExpand?e[0]:t.hierNode.thread}function ax(t,e,i){var n=i/(e.hierNode.i-t.hierNode.i);e.hierNode.change-=n,e.hierNode.shift+=i,e.hierNode.modifier+=i,e.hierNode.prelim+=i,t.hierNode.change+=n}function ox(t,e){return t.parentNode===e.parentNode?1:2}function rx(t,e){var i=t.getItemLayout(e);return i&&!isNaN(i.x)&&!isNaN(i.y)&&"none"!==t.getItemVisual(e,"symbol")}function sx(t,e,i){return i.itemModel=e,i.itemStyle=e.getModel("itemStyle").getItemStyle(),i.hoverItemStyle=e.getModel("emphasis.itemStyle").getItemStyle(),i.lineStyle=e.getModel("lineStyle").getLineStyle(),i.labelModel=e.getModel("label"),i.hoverLabelModel=e.getModel("emphasis.label"),!1===t.isExpand&&0!==t.children.length?i.symbolInnerColor=i.itemStyle.fill:i.symbolInnerColor="#fff",i}function lx(t,e,i,n,a,o){var r=!i,s=t.tree.getNodeByDataIndex(e),l=s.getModel(),u=(o=sx(s,l,o),t.tree.root),h=s.parentNode===u?s:s.parentNode||s,c=t.getItemGraphicEl(h.dataIndex),d=h.getLayout(),f=c?{x:c.position[0],y:c.position[1],rawX:c.__radialOldRawX,rawY:c.__radialOldRawY}:d,p=s.getLayout();r?(i=new Sg(t,e,o)).attr("position",[f.x,f.y]):i.updateData(t,e,o),i.__radialOldRawX=i.__radialRawX,i.__radialOldRawY=i.__radialRawY,i.__radialRawX=p.rawX,i.__radialRawY=p.rawY,n.add(i),t.setItemGraphicEl(e,i),js(i,{position:[p.x,p.y]},a);var g=i.getSymbolPath();if("radial"===o.layout){var m,v,y=u.children[0],x=y.getLayout(),_=y.children.length;if(p.x===x.x&&!0===s.isExpand){var w={};w.x=(y.children[0].getLayout().x+y.children[_-1].getLayout().x)/2,w.y=(y.children[0].getLayout().y+y.children[_-1].getLayout().y)/2,(m=Math.atan2(w.y-x.y,w.x-x.x))<0&&(m=2*Math.PI+m),(v=w.x<x.x)&&(m-=Math.PI)}else(m=Math.atan2(p.y-x.y,p.x-x.x))<0&&(m=2*Math.PI+m),0===s.children.length||0!==s.children.length&&!1===s.isExpand?(v=p.x<x.x)&&(m-=Math.PI):(v=p.x>x.x)||(m-=Math.PI);var b=v?"left":"right",S=o.labelModel.get("rotate"),M=S*(Math.PI/180);g.setStyle({textPosition:o.labelModel.get("position")||b,textRotation:null==S?-m:M,textOrigin:"center",verticalAlign:"middle"})}if(s.parentNode&&s.parentNode!==u){var I=i.__edge;js(I=I||(i.__edge=new qr({shape:hx(o,f,f),style:C({opacity:0,strokeNoScale:!0},o.lineStyle)})),{shape:hx(o,d,p),style:{opacity:1}},a),n.add(I)}}function ux(t,e,i,n,a,o){for(var r,s=t.tree.getNodeByDataIndex(e),l=t.tree.root,u=s.getModel(),h=(o=sx(s,u,o),s.parentNode===l?s:s.parentNode||s);null==(r=h.getLayout());)h=h.parentNode===l?h:h.parentNode||h;js(i,{position:[r.x+1,r.y+1]},a,function(){n.remove(i),t.setItemGraphicEl(e,null)}),i.fadeOut(null,{keepLabel:!0});var c=i.__edge;c&&js(c,{shape:hx(o,r,r),style:{opacity:0}},a,function(){n.remove(c)})}function hx(t,e,i){var n,a,o,r,s,l,u,h,c=t.orient;if("radial"!==t.layout)return s=e.x,u=e.y,l=i.x,h=i.y,"LR"!==c&&"RL"!==c||(n=s+(l-s)*t.curvature,a=u,o=l+(s-l)*t.curvature,r=h),"TB"!==c&&"BT"!==c||(n=s,a=u+(h-u)*t.curvature,o=l,r=h+(u-h)*t.curvature),{x1:s,y1:u,x2:l,y2:h,cpx1:n,cpy1:a,cpx2:o,cpy2:r};s=e.rawX,u=e.rawY,l=i.rawX,h=i.rawY;var d=ex(s,u),f=ex(s,u+(h-u)*t.curvature),p=ex(l,h+(u-h)*t.curvature),g=ex(l,h);return{x1:d.x,y1:d.y,x2:g.x,y2:g.y,cpx1:f.x,cpy1:f.y,cpx2:p.x,cpy2:p.y}}function cx(t,e){for(var i,n=[t];i=n.pop();)if(e(i),i.isExpand){var a=i.children;if(a.length)for(var o=a.length-1;0<=o;o--)n.push(a[o])}}qy.prototype={constructor:qy,isRemoved:function(){return this.dataIndex<0},eachNode:function(t,e,i){"function"==typeof t&&(i=e,e=t,t=null),R(t=t||{})&&(t={order:t});var n,a=t.order||"preorder",o=this[t.attr||"children"];"preorder"===a&&(n=e.call(i,this));for(var r=0;!n&&r<o.length;r++)o[r].eachNode(t,e,i);"postorder"===a&&e.call(i,this)},updateDepthAndHeight:function(t){var e=0;this.depth=t;for(var i=0;i<this.children.length;i++){var n=this.children[i];n.updateDepthAndHeight(t+1),n.height>e&&(e=n.height)}this.height=e+1},getNodeById:function(t){if(this.getId()===t)return this;for(var e=0,i=this.children,n=i.length;e<n;e++){var a=i[e].getNodeById(t);if(a)return a}},contains:function(t){if(t===this)return!0;for(var e=0,i=this.children,n=i.length;e<n;e++){var a=i[e].contains(t);if(a)return a}},getAncestors:function(t){for(var e=[],i=t?this:this.parentNode;i;)e.push(i),i=i.parentNode;return e.reverse(),e},getValue:function(t){var e=this.hostTree.data;return e.get(e.getDimension(t||"value"),this.dataIndex)},setLayout:function(t,e){0<=this.dataIndex&&this.hostTree.data.setItemLayout(this.dataIndex,t,e)},getLayout:function(){return this.hostTree.data.getItemLayout(this.dataIndex)},getModel:function(t){if(!(this.dataIndex<0)){var e,i=this.hostTree,n=i.data.getItemModel(this.dataIndex),a=this.getLevelModel();return a||0!==this.children.length&&(0===this.children.length||!1!==this.isExpand)||(e=this.getLeavesModel()),n.getModel(t,(a||e||i.hostModel).getModel(t))}},getLevelModel:function(){return(this.hostTree.levelModels||[])[this.depth]},getLeavesModel:function(){return this.hostTree.leavesModel},setVisual:function(t,e){0<=this.dataIndex&&this.hostTree.data.setItemVisual(this.dataIndex,t,e)},getVisual:function(t,e){return this.hostTree.data.getItemVisual(this.dataIndex,t,e)},getRawIndex:function(){return this.hostTree.data.getRawIndex(this.dataIndex)},getId:function(){return this.hostTree.data.getId(this.dataIndex)},isAncestorOf:function(t){for(var e=t.parentNode;e;){if(e===this)return!0;e=e.parentNode}return!1},isDescendantOf:function(t){return t!==this&&t.isAncestorOf(this)}},Ky.prototype={constructor:Ky,type:"tree",eachNode:function(t,e,i){this.root.eachNode(t,e,i)},getNodeByDataIndex:function(t){var e=this.data.getRawIndex(t);return this._nodes[e]},getNodeByName:function(t){return this.root.getNodeByName(t)},update:function(){for(var t=this.data,e=this._nodes,i=0,n=e.length;i<n;i++)e[i].dataIndex=-1;for(i=0,n=t.count();i<n;i++)e[t.getRawIndex(i)].dataIndex=i},clearLayouts:function(){this.data.clearItemLayouts()}},Ky.createTree=function(t,e,i){var s=new Ky(e,i.levels,i.leaves),l=[],u=1;!function t(e,i){var n=e.value;u=Math.max(u,k(n)?n.length:1);l.push(e);var a=new qy(e.name,s);i?$y(a,i):s.root=a;s._nodes.push(a);var o=e.children;if(o)for(var r=0;r<o.length;r++)t(o[r],a)}(t),s.root.updateDepthAndHeight(0);var n=Wf(l,{coordDimensions:["value"],dimensionsCount:u}),a=new Tf(n,e);return a.initData(l),Wy({mainData:a,struct:s,structAttr:"tree"}),s.update(),s},Wh.extend({type:"series.tree",layoutInfo:null,layoutMode:"box",getInitialData:function(t){var e={name:t.name,children:t.data},i=t.leaves||{},n={};n.leaves=i;var a=Ky.createTree(e,this,n),o=0;a.eachNode("preorder",function(t){t.depth>o&&(o=t.depth)});var r=t.expandAndCollapse&&0<=t.initialTreeDepth?t.initialTreeDepth:o;return a.root.eachNode("preorder",function(t){var e=t.hostTree.data.getRawDataItem(t.dataIndex);t.isExpand=e&&null!=e.collapsed?!e.collapsed:t.depth<=r}),a.data},getOrient:function(){var t=this.get("orient");return"horizontal"===t?t="LR":"vertical"===t&&(t="TB"),t},setZoom:function(t){this.option.zoom=t},setCenter:function(t){this.option.center=t},formatTooltip:function(t){for(var e=this.getData().tree,i=e.root.children[0],n=e.getNodeByDataIndex(t),a=n.getValue(),o=n.name;n&&n!==i;)o=n.parentNode.name+"."+o,n=n.parentNode;return Wl(o+(isNaN(a)||null==a?"":" : "+a))},defaultOption:{zlevel:0,z:2,coordinateSystem:"view",left:"12%",top:"12%",right:"12%",bottom:"12%",layout:"orthogonal",roam:!1,nodeScaleRatio:.4,center:null,zoom:1,orient:"LR",symbol:"emptyCircle",symbolSize:7,expandAndCollapse:!0,initialTreeDepth:2,lineStyle:{color:"#ccc",width:1.5,curveness:.5},itemStyle:{color:"lightsteelblue",borderColor:"#c23531",borderWidth:1.5},label:{show:!0,color:"#555"},leaves:{label:{show:!0}},animationEasing:"linear",animationDuration:700,animationDurationUpdate:1e3}}),hf({type:"tree",init:function(t,e){this._oldTree,this._mainGroup=new Si,this._controller=new uy(e.getZr()),this._controllerHost={target:this.group},this.group.add(this._mainGroup)},render:function(n,t,i,e){var a=n.getData(),o=n.layoutInfo,r=this._mainGroup,s=n.get("layout");"radial"===s?r.attr("position",[o.x+o.width/2,o.y+o.height/2]):r.attr("position",[o.x,o.y]),this._updateViewCoordSys(n,o,s),this._updateController(n,t,i);var l=this._data,u={expandAndCollapse:n.get("expandAndCollapse"),layout:s,orient:n.getOrient(),curvature:n.get("lineStyle.curveness"),symbolRotate:n.get("symbolRotate"),symbolOffset:n.get("symbolOffset"),hoverAnimation:n.get("hoverAnimation"),useNameLabel:!0,fadeIn:!0};a.diff(l).add(function(t){rx(a,t)&&lx(a,t,null,r,n,u)}).update(function(t,e){var i=l.getItemGraphicEl(e);rx(a,t)?lx(a,t,i,r,n,u):i&&ux(l,e,i,r,n,u)}).remove(function(t){var e=l.getItemGraphicEl(t);e&&ux(l,t,e,r,n,u)}).execute(),this._nodeScaleRatio=n.get("nodeScaleRatio"),this._updateNodeAndLinkScale(n),!0===u.expandAndCollapse&&a.eachItemGraphicEl(function(t,e){t.off("click").on("click",function(){i.dispatchAction({type:"treeExpandAndCollapse",seriesId:n.id,dataIndex:e})})}),this._data=a},_updateViewCoordSys:function(t){var i=t.getData(),n=[];i.each(function(t){var e=i.getItemLayout(t);!e||isNaN(e.x)||isNaN(e.y)||n.push([+e.x,+e.y])});var e=[],a=[];Io(n,e,a);var o=this._min,r=this._max;a[0]-e[0]==0&&(e[0]=o?o[0]:e[0]-1,a[0]=r?r[0]:a[0]+1),a[1]-e[1]==0&&(e[1]=o?o[1]:e[1]-1,a[1]=r?r[1]:a[1]+1);var s=t.coordinateSystem=new Py;s.zoomLimit=t.get("scaleLimit"),s.setBoundingRect(e[0],e[1],a[0]-e[0],a[1]-e[1]),s.setCenter(t.get("center")),s.setZoom(t.get("zoom")),this.group.attr({position:s.position,scale:s.scale}),this._viewCoordSys=s,this._min=e,this._max=a},_updateController:function(a,t,o){var e=this._controller,i=this._controllerHost,r=this.group;e.setPointerChecker(function(t,e,i){var n=r.getBoundingRect();return n.applyTransform(r.transform),n.contain(e,i)&&!wy(t,o,a)}),e.enable(a.get("roam")),i.zoomLimit=a.get("scaleLimit"),i.zoom=a.coordinateSystem.getZoom(),e.off("pan").off("zoom").on("pan",function(t){yy(i,t.dx,t.dy),o.dispatchAction({seriesId:a.id,type:"treeRoam",dx:t.dx,dy:t.dy})},this).on("zoom",function(t){xy(i,t.scale,t.originX,t.originY),o.dispatchAction({seriesId:a.id,type:"treeRoam",zoom:t.scale,originX:t.originX,originY:t.originY}),this._updateNodeAndLinkScale(a)},this)},_updateNodeAndLinkScale:function(t){var e=t.getData(),i=this._getNodeGlobalScale(t),n=[i,i];e.eachItemGraphicEl(function(t,e){t.attr("scale",n)})},_getNodeGlobalScale:function(t){var e=t.coordinateSystem;if("view"!==e.type)return 1;var i=this._nodeScaleRatio,n=e.scale,a=n&&n[0]||1;return((e.getZoom()-1)*i+1)/a},dispose:function(){this._controller&&this._controller.dispose(),this._controllerHost={}},remove:function(){this._mainGroup.removeAll(),this._data=null}}),tf({type:"treeExpandAndCollapse",event:"treeExpandAndCollapse",update:"update"},function(n,t){t.eachComponent({mainType:"series",subType:"tree",query:n},function(t){var e=n.dataIndex,i=t.getData().tree.getNodeByDataIndex(e);i.isExpand=!i.isExpand})}),tf({type:"treeRoam",event:"treeRoam",update:"none"},function(i,t){t.eachComponent({mainType:"series",subType:"tree",query:i},function(t){var e=Cy(t.coordinateSystem,i);t.setCenter&&t.setCenter(e.center),t.setZoom&&t.setZoom(e.zoom)})});function dx(t,e,i){if(t&&0<=_(e,t.type)){var n=i.getData().tree.root,a=t.targetNode;if("string"==typeof a&&(a=n.getNodeById(a)),a&&n.contains(a))return{node:a};var o=t.targetNodeId;if(null!=o&&(a=n.getNodeById(o)))return{node:a}}}function fx(t){for(var e=[];t;)(t=t.parentNode)&&e.push(t);return e.reverse()}function px(t,e){return 0<=_(fx(t),e)}function gx(t,e){for(var i=[];t;){var n=t.dataIndex;i.push({name:t.name,dataIndex:n,value:e.getRawValue(n)}),t=t.parentNode}return i.reverse(),i}af(rm("tree","circle")),nf(function(t,e){t.eachSeriesByType("tree",function(t){!function(t,e){var i=function(t,e){return au(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}(t,e);t.layoutInfo=i;var n=t.get("layout"),a=0,o=0,r=null;r="radial"===n?(a=2*Math.PI,o=Math.min(i.height,i.width)/2,tx(function(t,e){return(t.parentNode===e.parentNode?1:2)/t.depth})):(a=i.width,o=i.height,tx());var s=t.getData().tree.root,l=s.children[0];if(l){!function(t){t.hierNode={defaultAncestor:null,ancestor:t,prelim:0,modifier:0,change:0,shift:0,i:0,thread:null};for(var e,i,n=[t];e=n.pop();)if(i=e.children,e.isExpand&&i.length)for(var a=i.length-1;0<=a;a--){var o=i[a];o.hierNode={defaultAncestor:null,ancestor:o,prelim:0,modifier:0,change:0,shift:0,i:a,thread:null},n.push(o)}}(s),function(t,e,i){for(var n,a=[t],o=[];n=a.pop();)if(o.push(n),n.isExpand){var r=n.children;if(r.length)for(var s=0;s<r.length;s++)a.push(r[s])}for(;n=o.pop();)e(n,i)}(l,Jy,r),s.hierNode.modifier=-l.hierNode.prelim,cx(l,Qy);var u=l,h=l,c=l;cx(l,function(t){var e=t.getLayout().x;e<u.getLayout().x&&(u=t),e>h.getLayout().x&&(h=t),t.depth>c.depth&&(c=t)});var d=u===h?1:r(u,h)/2,f=d-u.getLayout().x,p=0,g=0,m=0,v=0;if("radial"===n)p=a/(h.getLayout().x+d+f),g=o/(c.depth-1||1),cx(l,function(t){m=(t.getLayout().x+f)*p,v=(t.depth-1)*g;var e=ex(m,v);t.setLayout({x:e.x,y:e.y,rawX:m,rawY:v},!0)});else{var y=t.getOrient();"RL"===y||"LR"===y?(g=o/(h.getLayout().x+d+f),p=a/(c.depth-1||1),cx(l,function(t){v=(t.getLayout().x+f)*g,m="LR"===y?(t.depth-1)*p:a-(t.depth-1)*p,t.setLayout({x:m,y:v},!0)})):"TB"!==y&&"BT"!==y||(p=a/(h.getLayout().x+d+f),g=o/(c.depth-1||1),cx(l,function(t){m=(t.getLayout().x+f)*p,v="TB"===y?(t.depth-1)*g:o-(t.depth-1)*g,t.setLayout({x:m,y:v},!0)}))}}}(t,e)})}),Wh.extend({type:"series.treemap",layoutMode:"box",dependencies:["grid","polar"],preventUsingHoverLayer:!0,_viewRoot:null,defaultOption:{progressive:0,left:"center",top:"middle",right:null,bottom:null,width:"80%",height:"80%",sort:!0,clipWindow:"origin",squareRatio:.5*(1+Math.sqrt(5)),leafDepth:null,drillDownIcon:"▶",zoomToNodeRatio:.1024,roam:!0,nodeClick:"zoomToNode",animation:!0,animationDurationUpdate:900,animationEasing:"quinticInOut",breadcrumb:{show:!0,height:22,left:"center",top:"bottom",emptyItemWidth:25,itemStyle:{color:"rgba(0,0,0,0.7)",borderColor:"rgba(255,255,255,0.7)",borderWidth:1,shadowColor:"rgba(150,150,150,1)",shadowBlur:3,shadowOffsetX:0,shadowOffsetY:0,textStyle:{color:"#fff"}},emphasis:{textStyle:{}}},label:{show:!0,distance:0,padding:5,position:"inside",color:"#fff",ellipsis:!0},upperLabel:{show:!1,position:[0,"50%"],height:20,color:"#fff",ellipsis:!0,verticalAlign:"middle"},itemStyle:{color:null,colorAlpha:null,colorSaturation:null,borderWidth:0,gapWidth:0,borderColor:"#fff",borderColorSaturation:null},emphasis:{upperLabel:{show:!0,position:[0,"50%"],color:"#fff",ellipsis:!0,verticalAlign:"middle"}},visualDimension:0,visualMin:null,visualMax:null,color:[],colorAlpha:null,colorSaturation:null,colorMappingBy:"index",visibleMin:10,childrenVisibleMin:null,levels:[]},getInitialData:function(t,e){var i={name:t.name,children:t.data};!function i(t){var n=0;E(t.children,function(t){i(t);var e=t.value;k(e)&&(e=e[0]),n+=e});var e=t.value;k(e)&&(e=e[0]);null!=e&&!isNaN(e)||(e=n);e<0&&(e=0);k(t.value)?t.value[0]=e:t.value=e}(i);var n=t.levels||[];n=t.levels=function(t,e){var n,i=e.get("color");if(!i)return;if(E(t=t||[],function(t){var e=new dl(t),i=e.get("color");(e.get("itemStyle.color")||i&&"none"!==i)&&(n=!0)}),!n){(t[0]||(t[0]={})).color=i.slice()}return t}(n,e);var a={};return a.levels=n,Ky.createTree(i,this,a).data},optionUpdated:function(){this.resetViewRoot()},formatTooltip:function(t){var e=this.getData(),i=this.getRawValue(t),n=k(i)?zl(i[0]):zl(i);return Wl(e.getName(t)+": "+n)},getDataParams:function(t){var e=Wh.prototype.getDataParams.apply(this,arguments),i=this.getData().tree.getNodeByDataIndex(t);return e.treePathInfo=gx(i,this),e},setLayoutInfo:function(t){this.layoutInfo=this.layoutInfo||{},L(this.layoutInfo,t)},mapIdToIndex:function(t){var e=this._idIndexMap;e||(e=this._idIndexMap=Q(),this._idIndexMapCount=0);var i=e.get(t);return null==i&&e.set(t,i=this._idIndexMapCount++),i},getViewRoot:function(){return this._viewRoot},resetViewRoot:function(t){t?this._viewRoot=t:t=this._viewRoot;var e=this.getRawData().tree.root;t&&(t===e||e.contains(t))||(this._viewRoot=e)}});var mx=5;function vx(t){this.group=new Si,t.add(this.group)}function yx(t,e,i,n,a,o){var r=[[a?t:t-mx,e],[t+i,e],[t+i,e+n],[a?t:t-mx,e+n]];return o||r.splice(2,0,[t+i+mx,e+n/2]),a||r.push([t,e+n/2]),r}vx.prototype={constructor:vx,render:function(t,e,i,n){var a=t.getModel("breadcrumb"),o=this.group;if(o.removeAll(),a.get("show")&&i){var r=a.getModel("itemStyle"),s=r.getModel("textStyle"),l={pos:{left:a.get("left"),right:a.get("right"),top:a.get("top"),bottom:a.get("bottom")},box:{width:e.getWidth(),height:e.getHeight()},emptyItemWidth:a.get("emptyItemWidth"),totalWidth:0,renderList:[]};this._prepare(i,l,s),this._renderContent(t,l,r,s,n),ou(o,l.pos,l.box)}},_prepare:function(t,e,i){for(var n=t;n;n=n.parentNode){var a=n.getModel().get("name"),o=i.getTextRect(a),r=Math.max(o.width+16,e.emptyItemWidth);e.totalWidth+=r+8,e.renderList.push({node:n,text:a,width:r})}},_renderContent:function(t,e,i,n,a){for(var o,r,s=0,l=e.emptyItemWidth,u=t.get("breadcrumb.height"),h=function(t,e,i){var n=e.width,a=e.height,o=xl(t.x,n),r=xl(t.y,a),s=xl(t.x2,n),l=xl(t.y2,a);return(isNaN(o)||isNaN(parseFloat(t.x)))&&(o=0),(isNaN(s)||isNaN(parseFloat(t.x2)))&&(s=n),(isNaN(r)||isNaN(parseFloat(t.y)))&&(r=0),(isNaN(l)||isNaN(parseFloat(t.y2)))&&(l=a),i=Vl(i||0),{width:Math.max(s-o-i[1]-i[3],0),height:Math.max(l-r-i[0]-i[2],0)}}(e.pos,e.box),c=e.totalWidth,d=e.renderList,f=d.length-1;0<=f;f--){var p=d[f],g=p.node,m=p.width,v=p.text;c>h.width&&(c-=m-l,m=l,v=null);var y=new Rr({shape:{points:yx(s,0,m,u,f===d.length-1,0===f)},style:C(i.getItemStyle(),{lineJoin:"bevel",text:v,textFill:n.getTextColor(),textFont:n.getFont()}),z:10,onclick:A(a,g)});this.group.add(y),o=t,r=g,y.eventData={componentType:"series",componentSubType:"treemap",componentIndex:o.componentIndex,seriesIndex:o.componentIndex,seriesName:o.name,seriesType:"treemap",selfType:"breadcrumb",nodeData:{dataIndex:r&&r.dataIndex,name:r&&r.name},treePathInfo:r&&gx(r,o)},s+=m+8}},remove:function(){this.group.removeAll()}};function xx(t){var e=Lx(t);return e.stroke=e.fill=e.lineWidth=null,e}var _x=T,bx=Si,Sx=Hr,Mx=E,Ix=["label"],Ax=["emphasis","label"],Tx=["upperLabel"],Dx=["emphasis","upperLabel"],Cx=10,Lx=Xa([["fill","color"],["stroke","strokeColor"],["lineWidth","strokeWidth"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]);function kx(d,r,s,l,u,i,f,t,e,n){if(f){var p=f.getLayout();if(p&&p.isInView){var h=p.width,c=p.height,g=p.borderWidth,m=p.invisible,v=f.getRawIndex(),y=t&&t.getRawIndex(),a=f.viewChildren,x=p.upperHeight,o=a&&a.length,_=f.getModel("itemStyle"),w=f.getModel("emphasis.itemStyle"),b=T("nodeGroup",bx);if(b){if(e.add(b),b.attr("position",[p.x||0,p.y||0]),b.__tmNodeWidth=h,b.__tmNodeHeight=c,p.isAboveViewRoot)return b;var S=T("background",Sx,n,1);if(S&&function(t,n,a){n.dataIndex=f.dataIndex,n.seriesIndex=d.seriesIndex,n.setShape({x:0,y:0,width:h,height:c});var o=f.getVisual("borderColor",!0),r=w.get("borderColor");I(n,function(){var t=xx(_);t.fill=o;var e=Lx(w);if(e.fill=r,a){var i=h-2*g;A(t,e,o,i,x,{x:g,y:0,width:i,height:x})}else t.text=e.text=null;n.setStyle(t),Os(n,e)}),t.add(n)}(b,S,o&&p.upperHeight),!o){var M=T("content",Sx,n,2);M&&function(t,i){i.dataIndex=f.dataIndex,i.seriesIndex=d.seriesIndex;var n=Math.max(h-2*g,0),a=Math.max(c-2*g,0);i.culling=!0,i.setShape({x:g,y:g,width:n,height:a});var o=f.getVisual("color",!0);I(i,function(){var t=xx(_);t.fill=o;var e=Lx(w);A(t,e,o,n,a),i.setStyle(t),Os(i,e)}),t.add(i)}(b,M)}return b}}}function I(t,e){m?t.invisible||i.push(t):(e(),t.__tmWillVisible||(t.invisible=!1))}function A(t,e,i,n,a,o){var r=f.getModel(),s=W(d.getFormattedLabel(f.dataIndex,"normal",null,null,o?"upperLabel":"label"),r.get("name"));if(!o&&p.isLeafRoot){var l=d.get("drillDownIcon",!0);s=l?l+" "+s:s}var u=r.getModel(o?Tx:Ix),h=r.getModel(o?Dx:Ax),c=u.getShallow("show");Bs(t,e,u,h,{defaultText:c?s:null,autoColor:i,isRectText:!0}),o&&(t.textRect=D(o)),t.truncate=c&&u.get("ellipsis")?{outerWidth:n,outerHeight:a,minChar:2}:null}function T(t,e,i,n){var a=null!=y&&s[t][y],o=u[t];return a?(s[t][y]=null,function(t,e,i){(t[v]={}).old="nodeGroup"===i?e.position.slice():L({},e.shape)}(o,a,t)):m||((a=new e({z:function(t,e){var i=t*Cx+e;return(i-1)/i}(i,n)})).__tmDepth=i,function(t,e,i){var n=t[v]={},a=f.parentNode;if(a&&(!l||"drillDown"===l.direction)){var o=0,r=0,s=u.background[a.getRawIndex()];!l&&s&&s.old&&(o=s.old.width,r=s.old.height),n.old="nodeGroup"===i?[0,r]:{x:o,y:r,width:0,height:0}}n.fadein="nodeGroup"!==i}(o,0,a.__tmStorageName=t)),r[t][v]=a}}hf({type:"treemap",init:function(t,e){this._containerGroup,this._storage={nodeGroup:[],background:[],content:[]},this._oldTree,this._breadcrumb,this._controller,this._state="ready"},render:function(t,e,i,n){if(!(_(e.findComponents({mainType:"series",subType:"treemap",query:n}),t)<0)){this.seriesModel=t,this.api=i,this.ecModel=e;var a=dx(n,["treemapZoomToNode","treemapRootToNode"],t),o=n&&n.type,r=t.layoutInfo,s=!this._oldTree,l=this._storage,u="treemapRootToNode"===o&&a&&l?{rootNodeGroup:l.nodeGroup[a.node.getRawIndex()],direction:n.direction}:null,h=this._giveContainerGroup(r),c=this._doRender(h,t,u);s||o&&"treemapZoomToNode"!==o&&"treemapRootToNode"!==o?c.renderFinally():this._doAnimation(h,c,t,u),this._resetController(i),this._renderBreadcrumb(t,i,a)}},_giveContainerGroup:function(t){var e=this._containerGroup;return e||(e=this._containerGroup=new bx,this._initEvents(e),this.group.add(e)),e.attr("position",[t.x,t.y]),e},_doRender:function(t,e,i){var n=e.getData().tree,a=this._oldTree,o={nodeGroup:[],background:[],content:[]},r={nodeGroup:[],background:[],content:[]},s=this._storage,l=[],c=A(kx,e,r,s,i,o,l);!function o(r,s,l,u,h){u?Mx(s=r,function(t,e){t.isRemoved()||i(e,e)}):new df(s,r,t,t).add(i).update(i).remove(A(i,null)).execute();function t(t){return t.getId()}function i(t,e){var i=null!=t?r[t]:null,n=null!=e?s[e]:null,a=c(i,n,l,h);a&&o(i&&i.viewChildren||[],n&&n.viewChildren||[],a,u,h+1)}}(n.root?[n.root]:[],a&&a.root?[a.root]:[],t,n===a||!a,0);var u,h,d=(h={nodeGroup:[],background:[],content:[]},(u=s)&&Mx(u,function(t,e){var i=h[e];Mx(t,function(t){t&&(i.push(t),t.__tmWillDelete=1)})}),h);return this._oldTree=n,this._storage=r,{lastsForAnimation:o,willDeleteEls:d,renderFinally:function(){Mx(d,function(t){Mx(t,function(t){t.parent&&t.parent.remove(t)})}),Mx(l,function(t){t.invisible=!0,t.dirty()})}}},_doAnimation:function(t,o,e,s){if(e.get("animation")){var l=e.get("animationDurationUpdate"),u=e.get("animationEasing"),h=function(){var o,r=[],s={};return{add:function(t,e,i,n,a){return R(n)&&(a=n,n=0),!s[t.id]&&(s[t.id]=1,r.push({el:t,target:e,time:i,delay:n,easing:a}),!0)},done:function(t){return o=t,this},start:function(){for(var t=r.length,e=0,i=r.length;e<i;e++){var n=r[e];n.el.animateTo(n.target,n.time,n.delay,n.easing,a)}return this;function a(){--t||(r.length=0,s={},o&&o())}}}}();Mx(o.willDeleteEls,function(t,r){Mx(t,function(t,e){if(!t.invisible){var i,n=t.parent;if(s&&"drillDown"===s.direction)i=n===s.rootNodeGroup?{shape:{x:0,y:0,width:n.__tmNodeWidth,height:n.__tmNodeHeight},style:{opacity:0}}:{style:{opacity:0}};else{var a=0,o=0;n.__tmWillDelete||(a=n.__tmNodeWidth/2,o=n.__tmNodeHeight/2),i="nodeGroup"===r?{position:[a,o],style:{opacity:0}}:{shape:{x:a,y:o,width:0,height:0},style:{opacity:0}}}i&&h.add(t,i,l,u)}})}),Mx(this._storage,function(t,a){Mx(t,function(t,e){var i=o.lastsForAnimation[a][e],n={};i&&("nodeGroup"===a?i.old&&(n.position=t.position.slice(),t.attr("position",i.old)):(i.old&&(n.shape=L({},t.shape),t.setShape(i.old)),i.fadein?(t.setStyle("opacity",0),n.style={opacity:1}):1!==t.style.opacity&&(n.style={opacity:1})),h.add(t,n,l,u))})},this),this._state="animating",h.done(_x(function(){this._state="ready",o.renderFinally()},this)).start()}},_resetController:function(t){var e=this._controller;e||((e=this._controller=new uy(t.getZr())).enable(this.seriesModel.get("roam")),e.on("pan",_x(this._onPan,this)),e.on("zoom",_x(this._onZoom,this)));var n=new bi(0,0,t.getWidth(),t.getHeight());e.setPointerChecker(function(t,e,i){return n.contain(e,i)})},_clearController:function(){var t=this._controller;t&&(t.dispose(),t=null)},_onPan:function(t){if("animating"!==this._state&&(3<Math.abs(t.dx)||3<Math.abs(t.dy))){var e=this.seriesModel.getData().tree.root;if(!e)return;var i=e.getLayout();if(!i)return;this.api.dispatchAction({type:"treemapMove",from:this.uid,seriesId:this.seriesModel.id,rootRect:{x:i.x+t.dx,y:i.y+t.dy,width:i.width,height:i.height}})}},_onZoom:function(t){var e=t.originX,i=t.originY;if("animating"!==this._state){var n=this.seriesModel.getData().tree.root;if(!n)return;var a=n.getLayout();if(!a)return;var o=new bi(a.x,a.y,a.width,a.height),r=this.seriesModel.layoutInfo;e-=r.x,i-=r.y;var s=Qt();ne(s,s,[-e,-i]),oe(s,s,[t.scale,t.scale]),ne(s,s,[e,i]),o.applyTransform(s),this.api.dispatchAction({type:"treemapRender",from:this.uid,seriesId:this.seriesModel.id,rootRect:{x:o.x,y:o.y,width:o.width,height:o.height}})}},_initEvents:function(t){t.on("click",function(t){if("ready"===this._state){var e=this.seriesModel.get("nodeClick",!0);if(e){var i=this.findTarget(t.offsetX,t.offsetY);if(i){var n=i.node;if(n.getLayout().isLeafRoot)this._rootToNode(i);else if("zoomToNode"===e)this._zoomToNode(i);else if("link"===e){var a=n.hostTree.data.getItemModel(n.dataIndex),o=a.get("link",!0),r=a.get("target",!0)||"blank";o&&window.open(o,r)}}}}},this)},_renderBreadcrumb:function(e,t,i){i=i||((i=null!=e.get("leafDepth",!0)?{node:e.getViewRoot()}:this.findTarget(t.getWidth()/2,t.getHeight()/2))||{node:e.getData().tree.root}),(this._breadcrumb||(this._breadcrumb=new vx(this.group))).render(e,t,i.node,_x(function(t){"animating"!==this._state&&(px(e.getViewRoot(),t)?this._rootToNode({node:t}):this._zoomToNode({node:t}))},this))},remove:function(){this._clearController(),this._containerGroup&&this._containerGroup.removeAll(),this._storage={nodeGroup:[],background:[],content:[]},this._state="ready",this._breadcrumb&&this._breadcrumb.remove()},dispose:function(){this._clearController()},_zoomToNode:function(t){this.api.dispatchAction({type:"treemapZoomToNode",from:this.uid,seriesId:this.seriesModel.id,targetNode:t.node})},_rootToNode:function(t){this.api.dispatchAction({type:"treemapRootToNode",from:this.uid,seriesId:this.seriesModel.id,targetNode:t.node})},findTarget:function(a,o){var r;return this.seriesModel.getViewRoot().eachNode({attr:"viewChildren",order:"preorder"},function(t){var e=this._storage.background[t.getRawIndex()];if(e){var i=e.transformCoordToLocal(a,o),n=e.shape;if(!(n.x<=i[0]&&i[0]<=n.x+n.width&&n.y<=i[1]&&i[1]<=n.y+n.height))return!1;r={node:t,offsetX:i[0],offsetY:i[1]}}},this),r}});for(var Px=function(){},Nx=["treemapZoomToNode","treemapRender","treemapMove"],Ox=0;Ox<Nx.length;Ox++)tf({type:Nx[Ox],update:"updateView"},Px);tf({type:"treemapRootToNode",update:"updateView"},function(a,t){t.eachComponent({mainType:"series",subType:"treemap",query:a},function(t,e){var i=dx(a,["treemapZoomToNode","treemapRootToNode"],t);if(i){var n=t.getViewRoot();n&&(a.direction=px(n,i.node)?"rollUp":"drillDown"),t.resetViewRoot(i.node)}})});var Ex=E,Rx=z,zx=-1,Bx=function(t){var e=t.mappingMethod,i=t.type,n=this.option=D(t);this.type=i,this.mappingMethod=e,this._normalizeData=qx[e];var a=Vx[i];this.applyVisual=a.applyVisual,this.getColorMapper=a.getColorMapper,this._doMap=a._doMap[e],"piecewise"===e?(Gx(n),function(i){var t=i.pieceList;i.hasSpecialVisual=!1,E(t,function(t,e){t.originIndex=e,null!=t.visual&&(i.hasSpecialVisual=!0)})}(n)):"category"===e?n.categories?function(t){var e=t.categories,i=t.visual,n=t.categoryMap={};if(Ex(e,function(t,e){n[t]=e}),!k(i)){var a=[];z(i)?Ex(i,function(t,e){var i=n[e];a[null!=i?i:zx]=t}):a[zx]=i,i=jx(t,a)}for(var o=e.length-1;0<=o;o--)null==i[o]&&(delete n[e[o]],e.pop())}(n):Gx(n,!0):(Y("linear"!==e||n.dataExtent),Gx(n))};Bx.prototype={constructor:Bx,mapValueToVisual:function(t){var e=this._normalizeData(t);return this._doMap(e,t)},getNormalizer:function(){return T(this._normalizeData,this)}};var Vx=Bx.visualHandlers={color:{applyVisual:Hx("color"),getColorMapper:function(){var a=this.option;return T("category"===a.mappingMethod?function(t,e){return e||(t=this._normalizeData(t)),Zx.call(this,t)}:function(t,e,i){var n=!!i;return e||(t=this._normalizeData(t)),i=Ve(t,a.parsedVisual,i),n?i:Ue(i,"rgba")},this)},_doMap:{linear:function(t){return Ue(Ve(t,this.option.parsedVisual),"rgba")},category:Zx,piecewise:function(t,e){var i=Yx.call(this,e);return null==i&&(i=Ue(Ve(t,this.option.parsedVisual),"rgba")),i},fixed:Ux}},colorHue:Fx(function(t,e){return He(t,e)}),colorSaturation:Fx(function(t,e){return He(t,null,e)}),colorLightness:Fx(function(t,e){return He(t,null,null,e)}),colorAlpha:Fx(function(t,e){return Ze(t,e)}),opacity:{applyVisual:Hx("opacity"),_doMap:Xx([0,1])},liftZ:{applyVisual:Hx("liftZ"),_doMap:{linear:Ux,category:Ux,piecewise:Ux,fixed:Ux}},symbol:{applyVisual:function(t,e,i){var n=this.mapValueToVisual(t);if(R(n))i("symbol",n);else if(Rx(n))for(var a in n)n.hasOwnProperty(a)&&i(a,n[a])},_doMap:{linear:Wx,category:Zx,piecewise:function(t,e){var i=Yx.call(this,e);return null==i&&(i=Wx.call(this,t)),i},fixed:Ux}},symbolSize:{applyVisual:Hx("symbolSize"),_doMap:Xx([0,1])}};function Gx(t,e){var i=t.visual,n=[];z(i)?Ex(i,function(t){n.push(t)}):null!=i&&n.push(i);e||1!==n.length||{color:1,symbol:1}.hasOwnProperty(t.type)||(n[1]=n[0]),jx(t,n)}function Fx(n){return{applyVisual:function(t,e,i){t=this.mapValueToVisual(t),i("color",n(e("color"),t))},_doMap:Xx([0,1])}}function Wx(t){var e=this.option.visual;return e[Math.round(yl(t,[0,1],[0,e.length-1],!0))]||{}}function Hx(n){return function(t,e,i){i(n,this.mapValueToVisual(t))}}function Zx(t){var e=this.option.visual;return e[this.option.loop&&t!==zx?t%e.length:t]}function Ux(){return this.option.visual[0]}function Xx(n){return{linear:function(t){return yl(t,n,this.option.visual,!0)},category:Zx,piecewise:function(t,e){var i=Yx.call(this,e);return null==i&&(i=yl(t,n,this.option.visual,!0)),i},fixed:Ux}}function Yx(t){var e=this.option,i=e.pieceList;if(e.hasSpecialVisual){var n=i[Bx.findPieceIndex(t,i)];if(n&&n.visual)return n.visual[this.type]}}function jx(t,e){return t.visual=e,"color"===t.type&&(t.parsedVisual=N(e,function(t){return Ee(t)})),e}var qx={linear:function(t){return yl(t,this.option.dataExtent,[0,1],!0)},piecewise:function(t){var e=this.option.pieceList,i=Bx.findPieceIndex(t,e,!0);if(null!=i)return yl(i,[0,e.length-1],[0,1],!0)},category:function(t){var e=this.option.categories?this.option.categoryMap[t]:t;return null==e?zx:e},fixed:et};function Kx(t,e,i){return t?e<=i:e<i}Bx.listVisualTypes=function(){var i=[];return E(Vx,function(t,e){i.push(e)}),i},Bx.addVisualHandler=function(t,e){Vx[t]=e},Bx.isValidType=function(t){return Vx.hasOwnProperty(t)},Bx.eachVisual=function(t,e,i){z(t)?E(t,e,i):e.call(i,t)},Bx.mapVisual=function(t,n,a){var o,r=k(t)?[]:z(t)?{}:(o=!0,null);return Bx.eachVisual(t,function(t,e){var i=n.call(a,t,e);o?r=i:r[e]=i}),r},Bx.retrieveVisuals=function(i){var n,a={};return i&&Ex(Vx,function(t,e){i.hasOwnProperty(e)&&(a[e]=i[e],n=!0)}),n?a:null},Bx.prepareVisualTypes=function(t){if(Rx(t)){var i=[];Ex(t,function(t,e){i.push(e)}),t=i}else{if(!k(t))return[];t=t.slice()}return t.sort(function(t,e){return"color"===e&&"color"!==t&&0===t.indexOf("color")?1:-1}),t},Bx.dependsOn=function(t,e){return"color"===e?!(!t||0!==t.indexOf(e)):t===e},Bx.findPieceIndex=function(n,t,e){for(var a,o=1/0,i=0,r=t.length;i<r;i++){var s=t[i].value;if(null!=s){if(s===n||"string"==typeof s&&s===n+"")return i;e&&c(s,i)}}for(i=0,r=t.length;i<r;i++){var l=t[i],u=l.interval,h=l.close;if(u){if(u[0]===-1/0){if(Kx(h[1],n,u[1]))return i}else if(u[1]===1/0){if(Kx(h[0],u[0],n))return i}else if(Kx(h[0],u[0],n)&&Kx(h[1],n,u[1]))return i;e&&c(u[0],i),e&&c(u[1],i)}}if(e)return n===1/0?t.length-1:n===-1/0?0:a;function c(t,e){var i=Math.abs(t-n);i<o&&(o=i,a=e)}};var $x=k,Jx="itemStyle",Qx={seriesType:"treemap",reset:function(t,e,i,n){var a=t.getData().tree,o=a.root,r=t.getModel(Jx);o.isRemoved()||!function n(t,e,a,o,r,s){var l=t.getModel();var i=t.getLayout();if(!i||i.invisible||!i.isInView)return;var u=t.getModel(Jx);var h=a[t.depth];var c=t_(u,e,h,o);var d=u.get("borderColor");var f=u.get("borderColorSaturation");var p;null!=f&&(p=e_(c),g=f,d=null!=(m=p)?He(m,null,null,g):null);var g,m;t.setVisual("borderColor",d);var v=t.viewChildren;if(v&&v.length){var y=n_(t,l,i,u,c,v);E(v,function(t,e){if(t.depth>=r.length||t===r[t.depth]){var i=o_(l,c,t,e,y,s);n(t,i,a,o,r,s)}})}else p=e_(c),t.setVisual("color",p)}(o,{},N(a.levelModels,function(t){return t?t.get(Jx):null}),r,t.getViewRoot().getAncestors(),t)}};function t_(i,n,a,o){var r=L({},n);return E(["color","colorAlpha","colorSaturation"],function(t){var e=i.get(t,!0);null==e&&a&&(e=a[t]),null==e&&(e=n[t]),null==e&&(e=o.get(t)),null!=e&&(r[t]=e)}),r}function e_(t){var e=i_(t,"color");if(e){var i=i_(t,"colorAlpha"),n=i_(t,"colorSaturation");return n&&(e=He(e,null,null,n)),i&&(e=Ze(e,i)),e}}function i_(t,e){var i=t[e];if(null!=i&&"none"!==i)return i}function n_(t,e,i,n,a,o){if(o&&o.length){var r=a_(e,"color")||null!=a.color&&"none"!==a.color&&(a_(e,"colorAlpha")||a_(e,"colorSaturation"));if(r){var s=e.get("visualMin"),l=e.get("visualMax"),u=i.dataExtent.slice();null!=s&&s<u[0]&&(u[0]=s),null!=l&&l>u[1]&&(u[1]=l);var h=e.get("colorMappingBy"),c={type:r.name,dataExtent:u,visual:r.range};"color"!==c.type||"index"!==h&&"id"!==h?c.mappingMethod="linear":(c.mappingMethod="category",c.loop=!0);var d=new Bx(c);return d.__drColorMappingBy=h,d}}}function a_(t,e){var i=t.get(e);return $x(i)&&i.length?{name:e,range:i}:null}function o_(t,e,i,n,a,o){var r=L({},e);if(a){var s=a.type,l="color"===s&&a.__drColorMappingBy,u="index"===l?n:"id"===l?o.mapIdToIndex(i.getId()):i.getValue(t.get("visualDimension"));r[s]=a.mapValueToVisual(u)}return r}var r_=Math.max,s_=Math.min,l_=W,u_=E,h_=["itemStyle","borderWidth"],c_=["itemStyle","gapWidth"],d_=["upperLabel","show"],f_=["upperLabel","height"],p_={seriesType:"treemap",reset:function(t,e,i,n){var a=i.getWidth(),o=i.getHeight(),r=t.option,s=au(t.getBoxLayoutParams(),{width:i.getWidth(),height:i.getHeight()}),l=r.size||[],u=xl(l_(s.width,l[0]),a),h=xl(l_(s.height,l[1]),o),c=n&&n.type,d=dx(n,["treemapZoomToNode","treemapRootToNode"],t),f="treemapRender"===c||"treemapMove"===c?n.rootRect:null,p=t.getViewRoot(),g=fx(p);if("treemapMove"!==c){var m="treemapZoomToNode"===c?function(t,e,i,n,a){var o,r=(e||{}).node,s=[n,a];if(!r||r===i)return s;var l=n*a,u=l*t.option.zoomToNodeRatio;for(;o=r.parentNode;){for(var h=0,c=o.children,d=0,f=c.length;d<f;d++)h+=c[d].getValue();var p=r.getValue();if(0===p)return s;u*=h/p;var g=o.getModel(),m=g.get(h_),v=Math.max(m,y_(g));u+=4*m*m+(3*m+v)*Math.pow(u,.5),Al<u&&(u=Al),r=o}u<l&&(u=l);var y=Math.pow(u/l,.5);return[n*y,a*y]}(t,d,p,u,h):f?[f.width,f.height]:[u,h],v=r.sort;v&&"asc"!==v&&"desc"!==v&&(v="desc");var y={squareRatio:r.squareRatio,sort:v,leafDepth:r.leafDepth};p.hostTree.clearLayouts();var x={x:0,y:0,width:m[0],height:m[1],area:m[0]*m[1]};p.setLayout(x),function t(e,i,n,a){var o;var r;if(e.isRemoved())return;var s=e.getLayout();o=s.width;r=s.height;var l=e.getModel();var u=l.get(h_);var h=l.get(c_)/2;var c=y_(l);var d=Math.max(u,c);var f=u-h;var p=d-h;var l=e.getModel();e.setLayout({borderWidth:u,upperHeight:d,upperLabelHeight:c},!0);o=r_(o-2*f,0);r=r_(r-f-p,0);var g=o*r;var m=g_(e,l,g,i,n,a);if(!m.length)return;var v={x:f,y:p,width:o,height:r};var y=s_(o,r);var x=1/0;var _=[];_.area=0;for(var w=0,b=m.length;w<b;){var S=m[w];_.push(S),_.area+=S.getLayout().area;var M=m_(_,y,i.squareRatio);x=M<=x?(w++,M):(_.area-=_.pop().getLayout().area,v_(_,y,v,h,!1),y=s_(v.width,v.height),_.length=_.area=0,1/0)}_.length&&v_(_,y,v,h,!0);if(!n){var I=l.get("childrenVisibleMin");null!=I&&g<I&&(n=!0)}for(var w=0,b=m.length;w<b;w++)t(m[w],i,n,a+1)}(p,y,!1,0);x=p.getLayout();u_(g,function(t,e){var i=(g[e+1]||p).getValue();t.setLayout(L({dataExtent:[i,i],borderWidth:0,upperHeight:0},x))})}var _=t.getData().tree.root;_.setLayout(function(t,e,i){if(e)return{x:e.x,y:e.y};var n={x:0,y:0};if(!i)return n;var a=i.node,o=a.getLayout();if(!o)return n;var r=[o.width/2,o.height/2],s=a;for(;s;){var l=s.getLayout();r[0]+=l.x,r[1]+=l.y,s=s.parentNode}return{x:t.width/2-r[0],y:t.height/2-r[1]}}(s,f,d),!0),t.setLayoutInfo(s),function e(t,i,n,a,o){var r=t.getLayout();var s=n[o];var l=s&&s===t;if(s&&!l||o===n.length&&t!==a)return;t.setLayout({isInView:!0,invisible:!l&&!i.intersect(r),isAboveViewRoot:l},!0);var u=new bi(i.x-r.x,i.y-r.y,i.width,i.height);u_(t.viewChildren||[],function(t){e(t,u,n,a,o+1)})}(_,new bi(-s.x,-s.y,a,o),g,p,0)}};function g_(t,e,i,n,a,o){var r=t.children||[],s=n.sort;"asc"!==s&&"desc"!==s&&(s=null);var l=null!=n.leafDepth&&n.leafDepth<=o;if(a&&!l)return t.viewChildren=[];!function(t,n){n&&t.sort(function(t,e){var i="asc"===n?t.getValue()-e.getValue():e.getValue()-t.getValue();return 0==i?"asc"===n?t.dataIndex-e.dataIndex:e.dataIndex-t.dataIndex:i})}(r=M(r,function(t){return!t.isRemoved()}),s);var u=function(t,e,i){for(var n=0,a=0,o=e.length;a<o;a++)n+=e[a].getValue();var r=t.get("visualDimension");if(e&&e.length)if("value"===r&&i)s=[e[e.length-1].getValue(),e[0].getValue()],"asc"===i&&s.reverse();else{var s=[1/0,-1/0];u_(e,function(t){var e=t.getValue(r);e<s[0]&&(s[0]=e),e>s[1]&&(s[1]=e)})}else s=[NaN,NaN];return{sum:n,dataExtent:s}}(e,r,s);if(0===u.sum)return t.viewChildren=[];if(u.sum=function(t,e,i,n,a){if(!n)return i;for(var o=t.get("visibleMin"),r=a.length,s=r,l=r-1;0<=l;l--){var u=a["asc"===n?r-l-1:l].getValue();u/i*e<o&&(s=l,i-=u)}return"asc"===n?a.splice(0,r-s):a.splice(s,r-s),i}(e,i,u.sum,s,r),0===u.sum)return t.viewChildren=[];for(var h=0,c=r.length;h<c;h++){var d=r[h].getValue()/u.sum*i;r[h].setLayout({area:d})}return l&&(r.length&&t.setLayout({isLeafRoot:!0},!0),r.length=0),t.viewChildren=r,t.setLayout({dataExtent:u.dataExtent},!0),r}function m_(t,e,i){for(var n,a=0,o=1/0,r=0,s=t.length;r<s;r++)(n=t[r].getLayout().area)&&(n<o&&(o=n),a<n&&(a=n));var l=t.area*t.area,u=e*e*i;return l?r_(u*a/l,l/(u*o)):1/0}function v_(t,e,i,n,a){var o=e===i.width?0:1,r=1-o,s=["x","y"],l=["width","height"],u=i[s[o]],h=e?t.area/e:0;(a||h>i[l[r]])&&(h=i[l[r]]);for(var c=0,d=t.length;c<d;c++){var f=t[c],p={},g=h?f.getLayout().area/h:0,m=p[l[r]]=r_(h-2*n,0),v=i[s[o]]+i[l[o]]-u,y=c===d-1||v<g?v:g,x=p[l[o]]=r_(y-2*n,0);p[s[r]]=i[s[r]]+s_(n,m/2),p[s[o]]=u+s_(n,x/2),u+=y,f.setLayout(p,!0)}i[s[r]]+=h,i[l[r]]-=h}function y_(t){return t.get(d_)?t.get(f_):0}function x_(t){return"_EC_"+t}af(Qx),nf(p_);function __(t){this._directed=t||!1,this.nodes=[],this.edges=[],this._nodesMap={},this._edgesMap={},this.data,this.edgeData}var w_=__.prototype;function b_(t,e){this.id=null==t?"":t,this.inEdges=[],this.outEdges=[],this.edges=[],this.hostGraph,this.dataIndex=null==e?-1:e}function S_(t,e,i){this.node1=t,this.node2=e,this.dataIndex=null==i?-1:i}w_.type="graph",w_.isDirected=function(){return this._directed},w_.addNode=function(t,e){t=null==t?""+e:""+t;var i=this._nodesMap;if(!i[x_(t)]){var n=new b_(t,e);return(n.hostGraph=this).nodes.push(n),i[x_(t)]=n}},w_.getNodeByIndex=function(t){var e=this.data.getRawIndex(t);return this.nodes[e]},w_.getNodeById=function(t){return this._nodesMap[x_(t)]},w_.addEdge=function(t,e,i){var n=this._nodesMap,a=this._edgesMap;if("number"==typeof t&&(t=this.nodes[t]),"number"==typeof e&&(e=this.nodes[e]),b_.isInstance(t)||(t=n[x_(t)]),b_.isInstance(e)||(e=n[x_(e)]),t&&e){var o=t.id+"-"+e.id;if(!a[o]){var r=new S_(t,e,i);return(r.hostGraph=this)._directed&&(t.outEdges.push(r),e.inEdges.push(r)),t.edges.push(r),t!==e&&e.edges.push(r),this.edges.push(r),a[o]=r}}},w_.getEdgeByIndex=function(t){var e=this.edgeData.getRawIndex(t);return this.edges[e]},w_.getEdge=function(t,e){b_.isInstance(t)&&(t=t.id),b_.isInstance(e)&&(e=e.id);var i=this._edgesMap;return this._directed?i[t+"-"+e]:i[t+"-"+e]||i[e+"-"+t]},w_.eachNode=function(t,e){for(var i=this.nodes,n=i.length,a=0;a<n;a++)0<=i[a].dataIndex&&t.call(e,i[a],a)},w_.eachEdge=function(t,e){for(var i=this.edges,n=i.length,a=0;a<n;a++)0<=i[a].dataIndex&&0<=i[a].node1.dataIndex&&0<=i[a].node2.dataIndex&&t.call(e,i[a],a)},w_.breadthFirstTraverse=function(t,e,i,n){if(b_.isInstance(e)||(e=this._nodesMap[x_(e)]),e){for(var a="out"===i?"outEdges":"in"===i?"inEdges":"edges",o=0;o<this.nodes.length;o++)this.nodes[o].__visited=!1;if(!t.call(n,e,null))for(var r=[e];r.length;){var s=r.shift(),l=s[a];for(o=0;o<l.length;o++){var u=l[o],h=u.node1===s?u.node2:u.node1;if(!h.__visited){if(t.call(n,h,s))return;r.push(h),h.__visited=!0}}}}},w_.update=function(){for(var t=this.data,i=this.edgeData,e=this.nodes,n=this.edges,a=0,o=e.length;a<o;a++)e[a].dataIndex=-1;for(a=0,o=t.count();a<o;a++)e[t.getRawIndex(a)].dataIndex=a;i.filterSelf(function(t){var e=n[i.getRawIndex(t)];return 0<=e.node1.dataIndex&&0<=e.node2.dataIndex});for(a=0,o=n.length;a<o;a++)n[a].dataIndex=-1;for(a=0,o=i.count();a<o;a++)n[i.getRawIndex(a)].dataIndex=a},w_.clone=function(){for(var t=new __(this._directed),e=this.nodes,i=this.edges,n=0;n<e.length;n++)t.addNode(e[n].id,e[n].dataIndex);for(n=0;n<i.length;n++){var a=i[n];t.addEdge(a.node1.id,a.node2.id,a.dataIndex)}return t},b_.prototype={constructor:b_,degree:function(){return this.edges.length},inDegree:function(){return this.inEdges.length},outDegree:function(){return this.outEdges.length},getModel:function(t){if(!(this.dataIndex<0))return this.hostGraph.data.getItemModel(this.dataIndex).getModel(t)}},S_.prototype.getModel=function(t){if(!(this.dataIndex<0))return this.hostGraph.edgeData.getItemModel(this.dataIndex).getModel(t)};function M_(i,n){return{getValue:function(t){var e=this[i][n];return e.get(e.getDimension(t||"value"),this.dataIndex)},setVisual:function(t,e){0<=this.dataIndex&&this[i][n].setItemVisual(this.dataIndex,t,e)},getVisual:function(t,e){return this[i][n].getItemVisual(this.dataIndex,t,e)},setLayout:function(t,e){0<=this.dataIndex&&this[i][n].setItemLayout(this.dataIndex,t,e)},getLayout:function(){return this[i][n].getItemLayout(this.dataIndex)},getGraphicEl:function(){return this[i][n].getItemGraphicEl(this.dataIndex)},getRawIndex:function(){return this[i][n].getRawIndex(this.dataIndex)}}}b(b_,M_("hostGraph","data")),b(S_,M_("hostGraph","edgeData")),__.Node=b_,__.Edge=S_,Wa(b_),Wa(S_);function I_(t,e,i,n,a){for(var o=new __(n),r=0;r<t.length;r++)o.addNode(W(t[r].id,t[r].name,r),r);var s=[],l=[],u=0;for(r=0;r<e.length;r++){var h=e[r],c=h.source,d=h.target;o.addEdge(c,d,u)&&(l.push(h),s.push(W(h.id,c+" > "+d)),u++)}var f,p=i.get("coordinateSystem");if("cartesian2d"===p||"polar"===p)f=Xf(t,i);else{var g=Hu.get(p),m=g&&"view"!==g.type&&g.dimensions||[];_(m,"value")<0&&m.concat(["value"]);var v=Wf(t,{coordDimensions:m});(f=new Tf(v,i)).initData(t)}var y=new Tf(["value"],i);return y.initData(l,s),a&&a(f,y),Wy({mainData:f,struct:o,structAttr:"graph",datas:{node:f,edge:y},datasAttr:{node:"data",edge:"edgeData"}}),o.update(),o}var A_=uf({type:"series.graph",init:function(t){A_.superApply(this,"init",arguments),this.legendDataProvider=function(){return this._categoriesData},this.fillDataTextStyle(t.edges||t.links),this._updateCategoriesData()},mergeOption:function(t){A_.superApply(this,"mergeOption",arguments),this.fillDataTextStyle(t.edges||t.links),this._updateCategoriesData()},mergeDefaultAndTheme:function(t){A_.superApply(this,"mergeDefaultAndTheme",arguments),ba(t,["edgeLabel"],["show"])},getInitialData:function(t,s){var e=t.edges||t.links||[],i=t.data||t.nodes||[],l=this;if(i&&e)return I_(i,e,this,!0,function(t,e){t.wrapMethod("getItemModel",function(t){var e=l._categoriesModels[t.getShallow("category")];return e&&(e.parentModel=t.parentModel,t.parentModel=e),t});var i=l.getModel("edgeLabel"),n=new dl({label:i.option},i.parentModel,s),a=l.getModel("emphasis.edgeLabel"),o=new dl({emphasis:{label:a.option}},a.parentModel,s);function r(t){return(t=this.parsePath(t))&&"label"===t[0]?n:t&&"emphasis"===t[0]&&"label"===t[1]?o:this.parentModel}e.wrapMethod("getItemModel",function(t){return t.customizeGetParent(r),t})}).data},getGraph:function(){return this.getData().graph},getEdgeData:function(){return this.getGraph().edgeData},getCategoriesData:function(){return this._categoriesData},formatTooltip:function(t,e,i){if("edge"!==i)return A_.superApply(this,"formatTooltip",arguments);var n=this.getData(),a=this.getDataParams(t,i),o=n.graph.getEdgeByIndex(t),r=n.getName(o.node1.dataIndex),s=n.getName(o.node2.dataIndex),l=[];return null!=r&&l.push(r),null!=s&&l.push(s),l=Wl(l.join(" > ")),a.value&&(l+=" : "+Wl(a.value)),l},_updateCategoriesData:function(){var t=N(this.option.categories||[],function(t){return null!=t.value?t:L({value:0},t)}),e=new Tf(["value"],this);e.initData(t),this._categoriesData=e,this._categoriesModels=e.mapArray(function(t){return e.getItemModel(t,!0)})},setZoom:function(t){this.option.zoom=t},setCenter:function(t){this.option.center=t},isAnimationEnabled:function(){return A_.superCall(this,"isAnimationEnabled")&&!("force"===this.get("layout")&&this.get("force.layoutAnimation"))},defaultOption:{zlevel:0,z:2,coordinateSystem:"view",legendHoverLink:!0,hoverAnimation:!0,layout:null,focusNodeAdjacency:!1,circular:{rotateLabel:!1},force:{initLayout:null,repulsion:[0,50],gravity:.1,friction:.6,edgeLength:30,layoutAnimation:!0},left:"center",top:"center",symbol:"circle",symbolSize:10,edgeSymbol:["none","none"],edgeSymbolSize:10,edgeLabel:{position:"middle"},draggable:!1,roam:!1,center:null,zoom:1,nodeScaleRatio:.6,label:{show:!1,formatter:"{b}"},itemStyle:{},lineStyle:{color:"#aaa",width:1,curveness:0,opacity:.5},emphasis:{label:{show:!0}}}}),T_=Ur.prototype,D_=qr.prototype;function C_(t){return isNaN(+t.cpx1)||isNaN(+t.cpy1)}var L_=ds({type:"ec-line",style:{stroke:"#000",fill:null},shape:{x1:0,y1:0,x2:0,y2:0,percent:1,cpx1:null,cpy1:null},buildPath:function(t,e){this[C_(e)?"_buildPathLine":"_buildPathCurve"](t,e)},_buildPathLine:T_.buildPath,_buildPathCurve:D_.buildPath,pointAt:function(t){return this[C_(this.shape)?"_pointAtLine":"_pointAtCurve"](t)},_pointAtLine:T_.pointAt,_pointAtCurve:D_.pointAt,tangentAt:function(t){var e=this.shape,i=C_(e)?[e.x2-e.x1,e.y2-e.y1]:this._tangentAtCurve(t);return mt(i,i)},_tangentAtCurve:D_.tangentAt}),k_=["fromSymbol","toSymbol"];function P_(t){return"_"+t+"Type"}function N_(t,e,i){var n=e.getItemVisual(i,"color"),a=e.getItemVisual(i,t),o=e.getItemVisual(i,t+"Size");if(a&&"none"!==a){k(o)||(o=[o,o]);var r=Jp(a,-o[0]/2,-o[1]/2,o[0],o[1],n);return r.name=t,r}}function O_(t,e){t.x1=e[0][0],t.y1=e[0][1],t.x2=e[1][0],t.y2=e[1][1],t.percent=1;var i=e[2];i?(t.cpx1=i[0],t.cpy1=i[1]):(t.cpx1=NaN,t.cpy1=NaN)}function E_(t,e,i){Si.call(this),this._createLine(t,e,i)}var R_=E_.prototype;function z_(t){this._ctor=t||E_,this.group=new Si}R_.beforeUpdate=function(){var t=this.childOfName("fromSymbol"),e=this.childOfName("toSymbol"),i=this.childOfName("label");if(t||e||!i.ignore){for(var n=1,a=this.parent;a;)a.scale&&(n/=a.scale[0]),a=a.parent;var o=this.childOfName("line");if(this.__dirty||o.__dirty){var r=o.shape.percent,s=o.pointAt(0),l=o.pointAt(r),u=ht([],l,s);if(mt(u,u),t){t.attr("position",s);var h=o.tangentAt(0);t.attr("rotation",Math.PI/2-Math.atan2(h[1],h[0])),t.attr("scale",[n*r,n*r])}if(e){e.attr("position",l);h=o.tangentAt(1);e.attr("rotation",-Math.PI/2-Math.atan2(h[1],h[0])),e.attr("scale",[n*r,n*r])}if(!i.ignore){var c,d,f;i.attr("position",l);var p=5*n;if("end"===i.__position)c=[u[0]*p+l[0],u[1]*p+l[1]],d=.8<u[0]?"left":u[0]<-.8?"right":"center",f=.8<u[1]?"top":u[1]<-.8?"bottom":"middle";else if("middle"===i.__position){var g=r/2,m=[(h=o.tangentAt(g))[1],-h[0]],v=o.pointAt(g);0<m[1]&&(m[0]=-m[0],m[1]=-m[1]),c=[v[0]+m[0]*p,v[1]+m[1]*p],d="center",f="bottom";var y=-Math.atan2(h[1],h[0]);l[0]<s[0]&&(y=Math.PI+y),i.attr("rotation",y)}else c=[-u[0]*p+s[0],-u[1]*p+s[1]],d=.8<u[0]?"right":u[0]<-.8?"left":"center",f=.8<u[1]?"bottom":u[1]<-.8?"top":"middle";i.attr({style:{textVerticalAlign:i.__verticalAlign||f,textAlign:i.__textAlign||d},position:c,scale:[n,n]})}}}},R_._createLine=function(i,n,t){var e=i.hostModel,a=function(t){var e=new L_({name:"line",subPixelOptimize:!0});return O_(e.shape,t),e}(i.getItemLayout(n));a.shape.percent=0,qs(a,{shape:{percent:1}},e,n),this.add(a);var o=new Dr({name:"label",lineLabelOriginalOpacity:1});this.add(o),E(k_,function(t){var e=N_(t,i,n);this.add(e),this[P_(t)]=i.getItemVisual(n,t)},this),this._updateCommonStl(i,n,t)},R_.updateData=function(a,o,t){var e=a.hostModel,i=this.childOfName("line"),n=a.getItemLayout(o),r={shape:{}};O_(r.shape,n),js(i,r,e,o),E(k_,function(t){var e=a.getItemVisual(o,t),i=P_(t);if(this[i]!==e){this.remove(this.childOfName(t));var n=N_(t,a,o);this.add(n)}this[i]=e},this),this._updateCommonStl(a,o,t)},R_._updateCommonStl=function(t,e,i){var n=t.hostModel,a=this.childOfName("line"),o=i&&i.lineStyle,r=i&&i.hoverLineStyle,s=i&&i.labelModel,l=i&&i.hoverLabelModel;if(!i||t.hasItemOption){var u=t.getItemModel(e);o=u.getModel("lineStyle").getLineStyle(),r=u.getModel("emphasis.lineStyle").getLineStyle(),s=u.getModel("label"),l=u.getModel("emphasis.label")}var h=t.getItemVisual(e,"color"),c=Z(t.getItemVisual(e,"opacity"),o.opacity,1);a.useStyle(C({strokeNoScale:!0,fill:"none",stroke:h,opacity:c},o)),a.hoverStyle=r,E(k_,function(t){var e=this.childOfName(t);e&&(e.setColor(h),e.setStyle({opacity:c}))},this);var d,f,p=s.getShallow("show"),g=l.getShallow("show"),m=this.childOfName("label");if((p||g)&&(d=h||"#000",null==(f=n.getFormattedLabel(e,"normal",t.dataType)))){var v=n.getRawValue(e);f=null==v?t.getName(e):isFinite(v)?_l(v):v}var y=p?f:null,x=g?H(n.getFormattedLabel(e,"emphasis",t.dataType),f):null,_=m.style;null==y&&null==x||(Gs(m.style,s,{text:y},{autoColor:d}),m.__textAlign=_.textAlign,m.__verticalAlign=_.textVerticalAlign,m.__position=s.get("position")||"middle"),m.hoverStyle=null!=x?{text:x,textFill:l.getTextColor(!0),fontStyle:l.getShallow("fontStyle"),fontWeight:l.getShallow("fontWeight"),fontSize:l.getShallow("fontSize"),fontFamily:l.getShallow("fontFamily")}:{text:null},m.ignore=!p&&!g,Os(this)},R_.highlight=function(){this.trigger("emphasis")},R_.downplay=function(){this.trigger("normal")},R_.updateLayout=function(t,e){this.setLinePoints(t.getItemLayout(e))},R_.setLinePoints=function(t){var e=this.childOfName("line");O_(e.shape,t),e.dirty()},w(E_,Si);var B_=z_.prototype;function V_(t){var e=t.hostModel;return{lineStyle:e.getModel("lineStyle").getLineStyle(),hoverLineStyle:e.getModel("emphasis.lineStyle").getLineStyle(),labelModel:e.getModel("label"),hoverLabelModel:e.getModel("emphasis.label")}}function G_(t){return isNaN(t[0])||isNaN(t[1])}function F_(t){return!G_(t[0])&&!G_(t[1])}function W_(t){var e=t.coordinateSystem;if("view"!==e.type)return 1;var i=t.option.nodeScaleRatio,n=e.scale,a=n&&n[0]||1;return((e.getZoom()-1)*i+1)/a}function H_(t){var e=t.getVisual("symbolSize");return e instanceof Array&&(e=(e[0]+e[1])/2),+e}B_.isPersistent=function(){return!0},B_.updateData=function(i){var n=this,e=n.group,a=n._lineData;n._lineData=i,a||e.removeAll();var o=V_(i);i.diff(a).add(function(t){!function(t,e,i,n){if(!F_(e.getItemLayout(i)))return;var a=new t._ctor(e,i,n);e.setItemGraphicEl(i,a),t.group.add(a)}(n,i,t,o)}).update(function(t,e){!function(t,e,i,n,a,o){var r=e.getItemGraphicEl(n);if(!F_(i.getItemLayout(a)))return t.group.remove(r);r?r.updateData(i,a,o):r=new t._ctor(i,a,o);i.setItemGraphicEl(a,r),t.group.add(r)}(n,a,i,e,t,o)}).remove(function(t){e.remove(a.getItemGraphicEl(t))}).execute()},B_.updateLayout=function(){var i=this._lineData;i&&i.eachItemGraphicEl(function(t,e){t.updateLayout(i,e)},this)},B_.incrementalPrepareUpdate=function(t){this._seriesScope=V_(t),this._lineData=null,this.group.removeAll()},B_.incrementalUpdate=function(t,e){function i(t){t.isGroup||(t.incremental=t.useHoverLayer=!0)}for(var n=t.start;n<t.end;n++){if(F_(e.getItemLayout(n))){var a=new this._ctor(e,n,this._seriesScope);a.traverse(i),this.group.add(a),e.setItemGraphicEl(n,a)}}},B_.remove=function(){this._clearIncremental(),this._incremental=null,this.group.removeAll()},B_._clearIncremental=function(){var t=this._incremental;t&&t.clearDisplaybles()};var Z_=[],U_=[],X_=[],Y_=fo,j_=_t,q_=Math.abs;function K_(t,e,i){for(var n,a=t[0],o=t[1],r=t[2],s=1/0,l=i*i,u=.1,h=.1;h<=.9;h+=.1){Z_[0]=Y_(a[0],o[0],r[0],h),Z_[1]=Y_(a[1],o[1],r[1],h),(f=q_(j_(Z_,e)-l))<s&&(s=f,n=h)}for(var c=0;c<32;c++){var d=n+u;U_[0]=Y_(a[0],o[0],r[0],n),U_[1]=Y_(a[1],o[1],r[1],n),X_[0]=Y_(a[0],o[0],r[0],d),X_[1]=Y_(a[1],o[1],r[1],d);var f=j_(U_,e)-l;if(q_(f)<.01)break;var p=j_(X_,e)-l;u/=2,f<0?0<=p?n+=u:n-=u:0<=p?n-=u:n+=u}return n}function $_(t,l){var u=[],h=mo,c=[[],[],[]],d=[[],[]],f=[];l/=2,t.eachEdge(function(t,e){var i=t.getLayout(),n=t.getVisual("fromSymbol"),a=t.getVisual("toSymbol");i.__original||(i.__original=[rt(i[0]),rt(i[1])],i[2]&&i.__original.push(rt(i[2])));var o=i.__original;if(null!=i[2]){if(ot(c[0],o[0]),ot(c[1],o[2]),ot(c[2],o[1]),n&&"none"!==n){var r=H_(t.node1),s=K_(c,o[0],r*l);h(c[0][0],c[1][0],c[2][0],s,u),c[0][0]=u[3],c[1][0]=u[4],h(c[0][1],c[1][1],c[2][1],s,u),c[0][1]=u[3],c[1][1]=u[4]}if(a&&"none"!==a){r=H_(t.node2),s=K_(c,o[1],r*l);h(c[0][0],c[1][0],c[2][0],s,u),c[1][0]=u[1],c[2][0]=u[2],h(c[0][1],c[1][1],c[2][1],s,u),c[1][1]=u[1],c[2][1]=u[2]}ot(i[0],c[0]),ot(i[1],c[2]),ot(i[2],c[1])}else{if(ot(d[0],o[0]),ot(d[1],o[1]),ht(f,d[1],d[0]),mt(f,f),n&&"none"!==n){r=H_(t.node1);ut(d[0],d[0],f,r*l)}if(a&&"none"!==a){r=H_(t.node2);ut(d[1],d[1],f,-r*l)}ot(i[0],d[0]),ot(i[1],d[1])}})}var J_="__focusNodeAdjacency",Q_="__unfocusNodeAdjacency",tw=["itemStyle","opacity"],ew=["lineStyle","opacity"];function iw(t,e){var i=t.getVisual("opacity");return null!=i?i:t.getModel().get(e)}function nw(t,e,i){var n=t.getGraphicEl(),a=iw(t,e);null!=i&&(null==a&&(a=1),a*=i),n.downplay&&n.downplay(),n.traverse(function(t){if(!t.isGroup){var e=t.lineLabelOriginalOpacity;null!=e&&null==i||(e=a),t.setStyle("opacity",e)}})}function aw(t,e){var i=iw(t,e),n=t.getGraphicEl();n.traverse(function(t){t.isGroup||t.setStyle("opacity",i)}),n.highlight&&n.highlight()}hf({type:"graph",init:function(t,e){var i=new Ng,n=new z_,a=this.group;this._controller=new uy(e.getZr()),this._controllerHost={target:a},a.add(i.group),a.add(n.group),this._symbolDraw=i,this._lineDraw=n,this._firstRender=!0},render:function(a,t,o){var e=a.coordinateSystem;this._model=a;var i=this._symbolDraw,n=this._lineDraw,r=this.group;if("view"===e.type){var s={position:e.position,scale:e.scale};this._firstRender?r.attr(s):js(r,s,a)}$_(a.getGraph(),W_(a));var l=a.getData();i.updateData(l);var u=a.getEdgeData();n.updateData(u),this._updateNodeAndLinkScale(),this._updateController(a,t,o),clearTimeout(this._layoutTimeout);var h=a.forceLayout,c=a.get("force.layoutAnimation");h&&this._startForceLayoutIteration(h,c),l.eachItemGraphicEl(function(t,e){var i=l.getItemModel(e);t.off("drag").off("dragend");var n=i.get("draggable");n&&t.on("drag",function(){h&&(h.warmUp(),this._layouting||this._startForceLayoutIteration(h,c),h.setFixed(e),l.setItemLayout(e,t.position))},this).on("dragend",function(){h&&h.setUnfixed(e)},this),t.setDraggable(n&&h),t[J_]&&t.off("mouseover",t[J_]),t[Q_]&&t.off("mouseout",t[Q_]),i.get("focusNodeAdjacency")&&(t.on("mouseover",t[J_]=function(){o.dispatchAction({type:"focusNodeAdjacency",seriesId:a.id,dataIndex:t.dataIndex})}),t.on("mouseout",t[Q_]=function(){o.dispatchAction({type:"unfocusNodeAdjacency",seriesId:a.id})}))},this),l.graph.eachEdge(function(t){var e=t.getGraphicEl();e[J_]&&e.off("mouseover",e[J_]),e[Q_]&&e.off("mouseout",e[Q_]),t.getModel().get("focusNodeAdjacency")&&(e.on("mouseover",e[J_]=function(){o.dispatchAction({type:"focusNodeAdjacency",seriesId:a.id,edgeDataIndex:t.dataIndex})}),e.on("mouseout",e[Q_]=function(){o.dispatchAction({type:"unfocusNodeAdjacency",seriesId:a.id})}))});var d="circular"===a.get("layout")&&a.get("circular.rotateLabel"),f=l.getLayout("cx"),p=l.getLayout("cy");l.eachItemGraphicEl(function(t,e){var i=l.getItemModel(e).get("label.rotate")||0,n=t.getSymbolPath();if(d){var a=l.getItemLayout(e),o=Math.atan2(a[1]-p,a[0]-f);o<0&&(o=2*Math.PI+o);var r=a[0]<f;r&&(o-=Math.PI);var s=r?"left":"right";Vs(n,{textRotation:-o,textPosition:s,textOrigin:"center"},{textPosition:s})}else Vs(n,{textRotation:i*=Math.PI/180})}),this._firstRender=!1},dispose:function(){this._controller&&this._controller.dispose(),this._controllerHost={}},focusNodeAdjacency:function(t,e,i,n){var a=this._model.getData().graph,o=n.dataIndex,r=n.edgeDataIndex,s=a.getNodeByIndex(o),l=a.getEdgeByIndex(r);(s||l)&&(a.eachNode(function(t){nw(t,tw,.1)}),a.eachEdge(function(t){nw(t,ew,.1)}),s&&(aw(s,tw),E(s.edges,function(t){t.dataIndex<0||(aw(t,ew),aw(t.node1,tw),aw(t.node2,tw))})),l&&(aw(l,ew),aw(l.node1,tw),aw(l.node2,tw)))},unfocusNodeAdjacency:function(t,e,i,n){var a=this._model.getData().graph;a.eachNode(function(t){nw(t,tw)}),a.eachEdge(function(t){nw(t,ew)})},_startForceLayoutIteration:function(t,i){var n=this;!function e(){t.step(function(t){n.updateLayout(n._model),(n._layouting=!t)&&(i?n._layoutTimeout=setTimeout(e,16):e())})}()},_updateController:function(a,t,o){var e=this._controller,i=this._controllerHost,r=this.group;e.setPointerChecker(function(t,e,i){var n=r.getBoundingRect();return n.applyTransform(r.transform),n.contain(e,i)&&!wy(t,o,a)}),"view"===a.coordinateSystem.type?(e.enable(a.get("roam")),i.zoomLimit=a.get("scaleLimit"),i.zoom=a.coordinateSystem.getZoom(),e.off("pan").off("zoom").on("pan",function(t){yy(i,t.dx,t.dy),o.dispatchAction({seriesId:a.id,type:"graphRoam",dx:t.dx,dy:t.dy})}).on("zoom",function(t){xy(i,t.scale,t.originX,t.originY),o.dispatchAction({seriesId:a.id,type:"graphRoam",zoom:t.scale,originX:t.originX,originY:t.originY}),this._updateNodeAndLinkScale(),$_(a.getGraph(),W_(a)),this._lineDraw.updateLayout()},this)):e.disable()},_updateNodeAndLinkScale:function(){var t=this._model,e=t.getData(),i=W_(t),n=[i,i];e.eachItemGraphicEl(function(t,e){t.attr("scale",n)})},updateLayout:function(t){$_(t.getGraph(),W_(t)),this._symbolDraw.updateLayout(),this._lineDraw.updateLayout()},remove:function(t,e){this._symbolDraw&&this._symbolDraw.remove(),this._lineDraw&&this._lineDraw.remove()}}),tf({type:"focusNodeAdjacency",event:"focusNodeAdjacency",update:"series:focusNodeAdjacency"},function(){}),tf({type:"unfocusNodeAdjacency",event:"unfocusNodeAdjacency",update:"series:unfocusNodeAdjacency"},function(){});tf({type:"graphRoam",event:"graphRoam",update:"none"},function(i,t){t.eachComponent({mainType:"series",query:i},function(t){var e=Cy(t.coordinateSystem,i);t.setCenter&&t.setCenter(e.center),t.setZoom&&t.setZoom(e.zoom)})});function ow(t){return t instanceof Array||(t=[t,t]),t}function rw(t){var e=t.coordinateSystem;if(!e||"view"===e.type){var i=t.getGraph();i.eachNode(function(t){var e=t.getModel();t.setLayout([+e.get("x"),+e.get("y")])}),sw(i)}}function sw(t){t.eachEdge(function(t){var e=t.getModel().get("lineStyle.curveness")||0,i=rt(t.node1.getLayout()),n=rt(t.node2.getLayout()),a=[i,n];+e&&a.push([(i[0]+n[0])/2-(i[1]-n[1])*e,(i[1]+n[1])/2-(n[0]-i[0])*e]),t.setLayout(a)})}var lw=Math.PI,uw=[];function hw(t,e){var i=t.coordinateSystem;if(!i||"view"===i.type){var n=i.getBoundingRect(),a=t.getData(),o=a.graph,s=n.width/2+n.x,l=n.height/2+n.y,r=Math.min(n.width,n.height)/2,u=a.count();a.setLayout({cx:s,cy:l}),u&&(cw[e](t,i,o,a,r,s,l,u),o.eachEdge(function(t){var e,i=t.getModel().get("lineStyle.curveness")||0,n=rt(t.node1.getLayout()),a=rt(t.node2.getLayout()),o=(n[0]+a[0])/2,r=(n[1]+a[1])/2;+i&&(e=[s*(i*=3)+o*(1-i),l*i+r*(1-i)]),t.setLayout([n,a,e])}))}}var cw={value:function(t,e,i,n,a,o,r,s){var l=0,u=n.getSum("value"),h=2*Math.PI/(u||s);i.eachNode(function(t){var e=t.getValue("value"),i=h*(u?e:1)/2;l+=i,t.setLayout([a*Math.cos(l)+o,a*Math.sin(l)+r]),l+=i})},symbolSize:function(t,e,i,n,a,o,r,s){var l=0;uw.length=s;var u=W_(t);i.eachNode(function(t){var e=H_(t);isNaN(e)&&(e=2),e<0&&(e=0),e*=u;var i=Math.asin(e/2/a);isNaN(i)&&(i=lw/2),uw[t.dataIndex]=i,l+=2*i});var h=(2*lw-l)/s/2,c=0;i.eachNode(function(t){var e=h+uw[t.dataIndex];c+=e,t.setLayout([a*Math.cos(c)+o,a*Math.sin(c)+r]),c+=e})}},dw=ut;Qd(function(t){var o=t.findComponents({mainType:"legend"});o&&o.length&&t.eachSeriesByType("graph",function(t){var e=t.getCategoriesData(),n=t.getGraph().data,a=e.mapArray(e.getName);n.filterSelf(function(t){var e=n.getItemModel(t).getShallow("category");if(null!=e){"number"==typeof e&&(e=a[e]);for(var i=0;i<o.length;i++)if(!o[i].isSelected(e))return!1}return!0})},this)}),af(rm("graph","circle",null)),af(function(t){var h={};t.eachSeriesByType("graph",function(s){var l=s.getCategoriesData(),a=s.getData(),u={};l.each(function(t){var e=l.getName(t);u["ec-"+e]=t;var i=l.getItemModel(t),n=i.get("itemStyle.color")||s.getColorFromPalette(e,h);l.setItemVisual(t,"color",n);for(var a=["opacity","symbol","symbolSize","symbolKeepAspect"],o=0;o<a.length;o++){var r=i.getShallow(a[o],!0);null!=r&&l.setItemVisual(t,a[o],r)}}),l.count()&&a.each(function(t){var e=a.getItemModel(t).getShallow("category");if(null!=e){"string"==typeof e&&(e=u["ec-"+e]);for(var i=["color","opacity","symbol","symbolSize","symbolKeepAspect"],n=0;n<i.length;n++)null==a.getItemVisual(t,i[n],!0)&&a.setItemVisual(t,i[n],l.getItemVisual(e,i[n]))}})})}),af(function(t){t.eachSeriesByType("graph",function(t){var s=t.getGraph(),l=t.getEdgeData(),e=ow(t.get("edgeSymbol")),i=ow(t.get("edgeSymbolSize")),u="lineStyle.color".split("."),h="lineStyle.opacity".split(".");l.setVisual("fromSymbol",e&&e[0]),l.setVisual("toSymbol",e&&e[1]),l.setVisual("fromSymbolSize",i&&i[0]),l.setVisual("toSymbolSize",i&&i[1]),l.setVisual("color",t.get(u)),l.setVisual("opacity",t.get(h)),l.each(function(t){var e=l.getItemModel(t),i=s.getEdgeByIndex(t),n=ow(e.getShallow("symbol",!0)),a=ow(e.getShallow("symbolSize",!0)),o=e.get(u),r=e.get(h);switch(o){case"source":o=i.node1.getVisual("color");break;case"target":o=i.node2.getVisual("color")}n[0]&&i.setVisual("fromSymbol",n[0]),n[1]&&i.setVisual("toSymbol",n[1]),a[0]&&i.setVisual("fromSymbolSize",a[0]),a[1]&&i.setVisual("toSymbolSize",a[1]),i.setVisual("color",o),i.setVisual("opacity",r)})})}),nf(function(t,e){t.eachSeriesByType("graph",function(t){var e=t.get("layout"),i=t.coordinateSystem;if(i&&"view"!==i.type){var n=t.getData(),a=[];E(i.dimensions,function(t){a=a.concat(n.mapDimension(t,!0))});for(var o=0;o<n.count();o++){for(var r=[],s=!1,l=0;l<a.length;l++){var u=n.get(a[l],o);isNaN(u)||(s=!0),r.push(u)}s?n.setItemLayout(o,i.dataToPoint(r)):n.setItemLayout(o,[NaN,NaN])}sw(n.graph)}else e&&"none"!==e||rw(t)})}),nf(cd.VISUAL.POST_CHART_LAYOUT,function(t){t.eachSeriesByType("graph",function(t){"circular"===t.get("layout")&&hw(t,"symbolSize")})}),nf(function(t){t.eachSeriesByType("graph",function(t){if(!(l=t.coordinateSystem)||"view"===l.type)if("force"===t.get("layout")){var c=t.preservedPoints||{},d=t.getGraph(),f=d.data,e=d.edgeData,i=t.getModel("force"),n=i.get("initLayout");t.preservedPoints?f.each(function(t){var e=f.getId(t);f.setItemLayout(t,c[e]||[NaN,NaN])}):n&&"none"!==n?"circular"===n&&hw(t,"value"):rw(t);var a=f.getDataExtent("value"),o=e.getDataExtent("value"),r=i.get("repulsion"),s=i.get("edgeLength");k(r)||(r=[r,r]),k(s)||(s=[s,s]),s=[s[1],s[0]];var l,u=f.mapArray("value",function(t,e){var i=f.getItemLayout(e),n=yl(t,a,r);return isNaN(n)&&(n=(r[0]+r[1])/2),{w:n,rep:n,fixed:f.getItemModel(e).get("fixed"),p:!i||isNaN(i[0])||isNaN(i[1])?null:i}}),h=e.mapArray("value",function(t,e){var i=d.getEdgeByIndex(e),n=yl(t,o,s);isNaN(n)&&(n=(s[0]+s[1])/2);var a=i.getModel();return{n1:u[i.node1.dataIndex],n2:u[i.node2.dataIndex],d:n,curveness:a.get("lineStyle.curveness")||0,ignoreForceLayout:a.get("ignoreForceLayout")}}),p=(l=t.coordinateSystem).getBoundingRect(),g=function(f,p,t){for(var e=t.rect,i=e.width,n=e.height,g=[e.x+i/2,e.y+n/2],m=null==t.gravity?.1:t.gravity,a=0;a<f.length;a++){var o=f[a];o.p||(o.p=at(i*(Math.random()-.5)+g[0],n*(Math.random()-.5)+g[1])),o.pp=rt(o.p),o.edges=null}var r=null==t.friction?.6:t.friction,v=r;return{warmUp:function(){v=.8*r},setFixed:function(t){f[t].fixed=!0},setUnfixed:function(t){f[t].fixed=!1},step:function(t){for(var e=[],i=f.length,n=0;n<p.length;n++){var a=p[n];if(!a.ignoreForceLayout){var o=a.n1;ht(e,(u=a.n2).p,o.p);var r=ct(e)-a.d,s=u.w/(o.w+u.w);isNaN(s)&&(s=0),mt(e,e),o.fixed||dw(o.p,o.p,e,s*r*v),u.fixed||dw(u.p,u.p,e,-(1-s)*r*v)}}for(n=0;n<i;n++){(d=f[n]).fixed||(ht(e,g,d.p),dw(d.p,d.p,e,m*v))}for(n=0;n<i;n++){o=f[n];for(var l=n+1;l<i;l++){var u;ht(e,(u=f[l]).p,o.p),0===(r=ct(e))&&(st(e,Math.random()-.5,Math.random()-.5),r=1);var h=(o.rep+u.rep)/r/r;o.fixed||dw(o.pp,o.pp,e,h),u.fixed||dw(u.pp,u.pp,e,-h)}}var c=[];for(n=0;n<i;n++){var d;(d=f[n]).fixed||(ht(c,d.p,d.pp),dw(d.p,d.p,c,v),ot(d.pp,d.p))}v*=.992,t&&t(f,p,v<.01)}}}(u,h,{rect:p,gravity:i.get("gravity"),friction:i.get("friction")}),m=g.step;g.step=function(h){for(var t=0,e=u.length;t<e;t++)u[t].fixed&&ot(u[t].p,d.getNodeByIndex(t).getLayout());m(function(t,e,i){for(var n=0,a=t.length;n<a;n++)t[n].fixed||d.getNodeByIndex(n).setLayout(t[n].p),c[f.getId(n)]=t[n].p;for(n=0,a=e.length;n<a;n++){var o=e[n],r=d.getEdgeByIndex(n),s=o.n1.p,l=o.n2.p,u=r.getLayout();(u=u?u.slice():[])[0]=u[0]||[],u[1]=u[1]||[],ot(u[0],s),ot(u[1],l),+o.curveness&&(u[2]=[(s[0]+l[0])/2-(s[1]-l[1])*o.curveness,(s[1]+l[1])/2-(l[0]-s[0])*o.curveness]),r.setLayout(u)}h&&h(i)})},t.forceLayout=g,t.preservedPoints=c,g.step()}else t.forceLayout=null})}),ef("graphView",{create:function(t,d){var f=[];return t.eachSeriesByType("graph",function(t){var e=t.get("coordinateSystem");if(!e||"view"===e){var i=t.getData(),n=[],a=[];Io(i.mapArray(function(t){var e=i.getItemModel(t);return[+e.get("x"),+e.get("y")]}),n,a),a[0]-n[0]==0&&(a[0]+=1,n[0]-=1),a[1]-n[1]==0&&(a[1]+=1,n[1]-=1);var o=(a[0]-n[0])/(a[1]-n[1]),r=function(t,e,i){var n=t.getBoxLayoutParams();return n.aspect=i,au(n,{width:e.getWidth(),height:e.getHeight()})}(t,d,o);isNaN(o)&&(n=[r.x,r.y],a=[r.x+r.width,r.y+r.height]);var s=a[0]-n[0],l=a[1]-n[1],u=r.width,h=r.height,c=t.coordinateSystem=new Py;c.zoomLimit=t.get("scaleLimit"),c.setBoundingRect(n[0],n[1],s,l),c.setViewRect(r.x,r.y,u,h),c.setCenter(t.get("center")),c.setZoom(t.get("zoom")),f.push(c)}}),f}});Wh.extend({type:"series.gauge",getInitialData:function(t,e){return yv(this,["value"])},defaultOption:{zlevel:0,z:2,center:["50%","50%"],legendHoverLink:!0,radius:"75%",startAngle:225,endAngle:-45,clockwise:!0,min:0,max:100,splitNumber:10,axisLine:{show:!0,lineStyle:{color:[[.2,"#91c7ae"],[.8,"#63869e"],[1,"#c23531"]],width:30}},splitLine:{show:!0,length:30,lineStyle:{color:"#eee",width:2,type:"solid"}},axisTick:{show:!0,splitNumber:5,length:8,lineStyle:{color:"#eee",width:1,type:"solid"}},axisLabel:{show:!0,distance:5,color:"auto"},pointer:{show:!0,length:"80%",width:8},itemStyle:{color:"auto"},title:{show:!0,offsetCenter:[0,"-40%"],color:"#333",fontSize:15},detail:{show:!0,backgroundColor:"rgba(0,0,0,0)",borderWidth:0,borderColor:"#ccc",width:100,height:null,padding:[5,10],offsetCenter:[0,"40%"],color:"auto",fontSize:30}}});var fw=hr.extend({type:"echartsGaugePointer",shape:{angle:0,width:10,r:10,x:0,y:0},buildPath:function(t,e){var i=Math.cos,n=Math.sin,a=e.r,o=e.width,r=e.angle,s=e.x-i(r)*o*(a/3<=o?1:2),l=e.y-n(r)*o*(a/3<=o?1:2);r=e.angle-Math.PI/2,t.moveTo(s,l),t.lineTo(e.x+i(r)*o,e.y+n(r)*o),t.lineTo(e.x+i(e.angle)*a,e.y+n(e.angle)*a),t.lineTo(e.x-i(r)*o,e.y-n(r)*o),t.lineTo(s,l)}});function pw(t,e){return e&&("string"==typeof e?t=e.replace("{value}",null!=t?t:""):"function"==typeof e&&(t=e(t))),t}var gw=2*Math.PI,mw=(ec.extend({type:"gauge",render:function(t,e,i){this.group.removeAll();var n=t.get("axisLine.lineStyle.color"),a=function(t,e){var i=t.get("center"),n=e.getWidth(),a=e.getHeight(),o=Math.min(n,a);return{cx:xl(i[0],e.getWidth()),cy:xl(i[1],e.getHeight()),r:xl(t.get("radius"),o/2)}}(t,i);this._renderMain(t,e,i,n,a)},dispose:function(){},_renderMain:function(t,e,i,n,a){for(var o=this.group,r=t.getModel("axisLine"),s=r.getModel("lineStyle"),l=t.get("clockwise"),u=-t.get("startAngle")/180*Math.PI,h=((g=-t.get("endAngle")/180*Math.PI)-u)%gw,c=u,d=s.get("width"),f=r.get("show"),p=0;f&&p<n.length;p++){var g,m=Math.min(Math.max(n[p][0],0),1),v=new Pr({shape:{startAngle:c,endAngle:g=u+h*m,cx:a.cx,cy:a.cy,clockwise:l,r0:a.r-d,r:a.r},silent:!0});v.setStyle({fill:n[p][1]}),v.setStyle(s.getLineStyle(["color","borderWidth","borderColor"])),o.add(v),c=g}function y(t){if(t<=0)return n[0][1];for(var e=0;e<n.length;e++)if(n[e][0]>=t&&(0===e?0:n[e-1][0])<t)return n[e][1];return n[e-1][1]}if(!l){var x=u;u=g,g=x}this._renderTicks(t,e,i,y,a,u,g,l),this._renderPointer(t,e,i,y,a,u,g,l),this._renderTitle(t,e,i,y,a),this._renderDetail(t,e,i,y,a)},_renderTicks:function(t,e,i,n,a,o,r,s){for(var l=this.group,u=a.cx,h=a.cy,c=a.r,d=+t.get("min"),f=+t.get("max"),p=t.getModel("splitLine"),g=t.getModel("axisTick"),m=t.getModel("axisLabel"),v=t.get("splitNumber"),y=g.get("splitNumber"),x=xl(p.get("length"),c),_=xl(g.get("length"),c),w=o,b=(r-o)/v,S=b/y,M=p.getModel("lineStyle").getLineStyle(),I=g.getModel("lineStyle").getLineStyle(),A=0;A<=v;A++){var T=Math.cos(w),D=Math.sin(w);if(p.get("show")){var C=new Ur({shape:{x1:T*c+u,y1:D*c+h,x2:T*(c-x)+u,y2:D*(c-x)+h},style:M,silent:!0});"auto"===M.stroke&&C.setStyle({stroke:n(A/v)}),l.add(C)}if(m.get("show")){var L=pw(_l(A/v*(f-d)+d),m.get("formatter")),k=m.get("distance"),P=n(A/v);l.add(new Dr({style:Gs({},m,{text:L,x:T*(c-x-k)+u,y:D*(c-x-k)+h,textVerticalAlign:D<-.4?"top":.4<D?"bottom":"middle",textAlign:T<-.4?"left":.4<T?"right":"center"},{autoColor:P}),silent:!0}))}if(g.get("show")&&A!==v){for(var N=0;N<=y;N++){T=Math.cos(w),D=Math.sin(w);var O=new Ur({shape:{x1:T*c+u,y1:D*c+h,x2:T*(c-_)+u,y2:D*(c-_)+h},silent:!0,style:I});"auto"===I.stroke&&O.setStyle({stroke:n((A+N/y)/v)}),l.add(O),w+=S}w-=S}else w+=b}},_renderPointer:function(n,t,e,a,o,i,r,s){var l=this.group,u=this._data;if(n.get("pointer.show")){var h=[+n.get("min"),+n.get("max")],c=[i,r],d=n.getData(),f=d.mapDimension("value");d.diff(u).add(function(t){var e=new fw({shape:{angle:i}});qs(e,{shape:{angle:yl(d.get(f,t),h,c,!0)}},n),l.add(e),d.setItemGraphicEl(t,e)}).update(function(t,e){var i=u.getItemGraphicEl(e);js(i,{shape:{angle:yl(d.get(f,t),h,c,!0)}},n),l.add(i),d.setItemGraphicEl(t,i)}).remove(function(t){var e=u.getItemGraphicEl(t);l.remove(e)}).execute(),d.eachItemGraphicEl(function(t,e){var i=d.getItemModel(e),n=i.getModel("pointer");t.setShape({x:o.cx,y:o.cy,width:xl(n.get("width"),o.r),r:xl(n.get("length"),o.r)}),t.useStyle(i.getModel("itemStyle").getItemStyle()),"auto"===t.style.fill&&t.setStyle("fill",a(yl(d.get(f,e),h,[0,1],!0))),Os(t,i.getModel("emphasis.itemStyle").getItemStyle())}),this._data=d}else u&&u.eachItemGraphicEl(function(t){l.remove(t)})},_renderTitle:function(t,e,i,n,a){var o=t.getData(),r=o.mapDimension("value"),s=t.getModel("title");if(s.get("show")){var l=s.get("offsetCenter"),u=a.cx+xl(l[0],a.r),h=a.cy+xl(l[1],a.r),c=+t.get("min"),d=+t.get("max"),f=n(yl(t.getData().get(r,0),[c,d],[0,1],!0));this.group.add(new Dr({silent:!0,style:Gs({},s,{x:u,y:h,text:o.getName(0),textAlign:"center",textVerticalAlign:"middle"},{autoColor:f,forceRich:!0})}))}},_renderDetail:function(t,e,i,n,a){var o=t.getModel("detail"),r=+t.get("min"),s=+t.get("max");if(o.get("show")){var l=o.get("offsetCenter"),u=a.cx+xl(l[0],a.r),h=a.cy+xl(l[1],a.r),c=xl(o.get("width"),a.r),d=xl(o.get("height"),a.r),f=t.getData(),p=f.get(f.mapDimension("value"),0),g=n(yl(p,[r,s],[0,1],!0));this.group.add(new Dr({silent:!0,style:Gs({},o,{x:u,y:h,text:pw(p,o.get("formatter")),textWidth:isNaN(c)?null:c,textHeight:isNaN(d)?null:d,textAlign:"center",textVerticalAlign:"middle"},{autoColor:g,forceRich:!0})}))}}}),uf({type:"series.funnel",init:function(t){mw.superApply(this,"init",arguments),this.legendDataProvider=function(){return this.getRawData()},this._defaultLabelLine(t)},getInitialData:function(t,e){return yv(this,["value"])},_defaultLabelLine:function(t){ba(t,"labelLine",["show"]);var e=t.labelLine,i=t.emphasis.labelLine;e.show=e.show&&t.label.show,i.show=i.show&&t.emphasis.label.show},getDataParams:function(t){var e=this.getData(),i=mw.superCall(this,"getDataParams",t),n=e.mapDimension("value"),a=e.getSum(n);return i.percent=a?+(e.get(n,t)/a*100).toFixed(2):0,i.$vars.push("percent"),i},defaultOption:{zlevel:0,z:2,legendHoverLink:!0,left:80,top:60,right:80,bottom:60,minSize:"0%",maxSize:"100%",sort:"descending",gap:0,funnelAlign:"center",label:{show:!0,position:"outer"},labelLine:{show:!0,length:20,lineStyle:{width:1,type:"solid"}},itemStyle:{borderColor:"#fff",borderWidth:1},emphasis:{label:{show:!0}}}}));function vw(t,e){Si.call(this);var i=new Rr,n=new zr,a=new Dr;this.add(i),this.add(n),this.add(a),this.highDownOnUpdate=function(t,e){"emphasis"===e?(n.ignore=n.hoverIgnore,a.ignore=a.hoverIgnore):(n.ignore=n.normalIgnore,a.ignore=a.normalIgnore)},this.updateData(t,e,!0)}var yw=vw.prototype,xw=["itemStyle","opacity"];yw.updateData=function(t,e,i){var n=this.childAt(0),a=t.hostModel,o=t.getItemModel(e),r=t.getItemLayout(e),s=t.getItemModel(e).get(xw);s=null==s?1:s,n.useStyle({}),i?(n.setShape({points:r.points}),n.setStyle({opacity:0}),qs(n,{style:{opacity:s}},a,e)):js(n,{style:{opacity:s},shape:{points:r.points}},a,e);var l=o.getModel("itemStyle"),u=t.getItemVisual(e,"color");n.setStyle(C({lineJoin:"round",fill:u},l.getItemStyle(["opacity"]))),n.hoverStyle=l.getModel("emphasis").getItemStyle(),this._updateLabel(t,e),Os(this)},yw._updateLabel=function(t,e){var i=this.childAt(1),n=this.childAt(2),a=t.hostModel,o=t.getItemModel(e),r=t.getItemLayout(e).label,s=t.getItemVisual(e,"color");js(i,{shape:{points:r.linePoints||r.linePoints}},a,e),js(n,{style:{x:r.x,y:r.y}},a,e),n.attr({rotation:r.rotation,origin:[r.x,r.y],z2:10});var l=o.getModel("label"),u=o.getModel("emphasis.label"),h=o.getModel("labelLine"),c=o.getModel("emphasis.labelLine");s=t.getItemVisual(e,"color");Bs(n.style,n.hoverStyle={},l,u,{labelFetcher:t.hostModel,labelDataIndex:e,defaultText:t.getName(e),autoColor:s,useInsideStyle:!!r.inside},{textAlign:r.textAlign,textVerticalAlign:r.verticalAlign}),n.ignore=n.normalIgnore=!l.get("show"),n.hoverIgnore=!u.get("show"),i.ignore=i.normalIgnore=!h.get("show"),i.hoverIgnore=!c.get("show"),i.setStyle({stroke:s}),i.setStyle(h.getModel("lineStyle").getLineStyle()),i.hoverStyle=c.getModel("lineStyle").getLineStyle()},w(vw,Si);ec.extend({type:"funnel",render:function(t,e,i){var n=t.getData(),a=this._data,o=this.group;n.diff(a).add(function(t){var e=new vw(n,t);n.setItemGraphicEl(t,e),o.add(e)}).update(function(t,e){var i=a.getItemGraphicEl(e);i.updateData(n,t),o.add(i),n.setItemGraphicEl(t,i)}).remove(function(t){var e=a.getItemGraphicEl(t);o.remove(e)}).execute(),this._data=n},remove:function(){this.group.removeAll(),this._data=null},dispose:function(){}});af(Av("funnel")),nf(function(t,w,e){t.eachSeriesByType("funnel",function(t){var a=t.getData(),o=a.mapDimension("value"),e=t.get("sort"),r=function(t,e){return au(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}(t,w),i=function(t,e){for(var i=t.mapDimension("value"),n=t.mapArray(i,function(t){return t}),a=[],o="ascending"===e,r=0,s=t.count();r<s;r++)a[r]=r;return"function"==typeof e?a.sort(e):"none"!==e&&a.sort(function(t,e){return o?n[t]-n[e]:n[e]-n[t]}),a}(a,e),s=[xl(t.get("minSize"),r.width),xl(t.get("maxSize"),r.width)],n=a.getDataExtent(o),l=t.get("min"),u=t.get("max");null==l&&(l=Math.min(n[0],0)),null==u&&(u=n[1]);function h(t,e){var i,n=yl(a.get(o,t)||0,[l,u],s,!0);switch(c){case"left":i=r.x;break;case"center":i=r.x+(r.width-n)/2;break;case"right":i=r.x+r.width-n}return[[i,e],[i+n,e]]}var c=t.get("funnelAlign"),d=t.get("gap"),f=(r.height-d*(a.count()-1))/a.count(),p=r.y;"ascending"===e&&(f=-f,d=-d,p+=r.height,i=i.reverse());for(var g=0;g<i.length;g++){var m=i[g],v=i[g+1],y=a.getItemModel(m).get("itemStyle.height");null==y?y=f:(y=xl(y,r.height),"ascending"===e&&(y=-y));var x=h(m,p),_=h(v,p+y);p+=y+d,a.setItemLayout(m,{points:x.concat(_.slice().reverse())})}!function(g){g.each(function(t){var e,i,n,a,o=g.getItemModel(t),r=o.getModel("label").get("position"),s=o.getModel("labelLine"),l=g.getItemLayout(t),u=l.points,h="inner"===r||"inside"===r||"center"===r||"insideLeft"===r||"insideRight"===r;if(h)e="insideLeft"===r?(i=(u[0][0]+u[3][0])/2+5,n=(u[0][1]+u[3][1])/2,"left"):"insideRight"===r?(i=(u[1][0]+u[2][0])/2-5,n=(u[1][1]+u[2][1])/2,"right"):(i=(u[0][0]+u[1][0]+u[2][0]+u[3][0])/4,n=(u[0][1]+u[1][1]+u[2][1]+u[3][1])/4,"center"),a=[[i,n],[i,n]];else{var c,d,f,p=s.get("length");e="left"===r?(c=(u[3][0]+u[0][0])/2,d=(u[3][1]+u[0][1])/2,i=(f=c-p)-5,"right"):"right"===r?(c=(u[1][0]+u[2][0])/2,d=(u[1][1]+u[2][1])/2,i=(f=c+p)+5,"left"):"rightTop"===r?(c=u[1][0],d=u[1][1],i=(f=c+p)+5,"top"):"rightBottom"===r?(c=u[2][0],d=u[2][1],i=(f=c+p)+5,"bottom"):"leftTop"===r?(c=u[0][0],d=u[1][1],i=(f=c-p)-5,"right"):"leftBottom"===r?(c=u[3][0],d=u[2][1],i=(f=c-p)-5,"right"):(c=(u[1][0]+u[2][0])/2,d=(u[1][1]+u[2][1])/2,i=(f=c+p)+5,"left");a=[[c,d],[f,d]],n=d}l.label={linePoints:a,x:i,y:n,verticalAlign:"middle",textAlign:e,inside:h}})}(a)})}),Qd(kv("funnel"));function _w(t,e,i,n,a){vg.call(this,t,e,i),this.type=n||"value",this.axisIndex=a}_w.prototype={constructor:_w,model:null,isHorizontal:function(){return"horizontal"!==this.coordinateSystem.getModel().get("layout")}},w(_w,vg);function ww(t,e,i,n,a,o){t=t||0;var r=i[1]-i[0];if(null!=a&&(a=Sw(a,[0,r])),null!=o&&(o=Math.max(o,null!=a?a:0)),"all"===n){var s=Math.abs(e[1]-e[0]);a=o=Sw(s=Sw(s,[0,r]),[a,o]),n=0}e[0]=Sw(e[0],i),e[1]=Sw(e[1],i);var l=bw(e,n);e[n]+=t;var u=a||0,h=i.slice();l.sign<0?h[0]+=u:h[1]-=u,e[n]=Sw(e[n],h);var c=bw(e,n);return null!=a&&(c.sign!==l.sign||c.span<a)&&(e[1-n]=e[n]+l.sign*a),c=bw(e,n),null!=o&&c.span>o&&(e[1-n]=e[n]+c.sign*o),e}function bw(t,e){var i=t[e]-t[1-e];return{span:Math.abs(i),sign:0<i?-1:i<0?1:e?-1:1}}function Sw(t,e){return Math.min(null!=e[1]?e[1]:1/0,Math.max(null!=e[0]?e[0]:-1/0,t))}var Mw=E,Iw=Math.min,Aw=Math.max,Tw=Math.floor,Dw=Math.ceil,Cw=_l,Lw=Math.PI;function kw(t,e,i){this._axesMap=Q(),this._axesLayout={},this.dimensions=t.dimensions,this._rect,this._model=t,this._init(t,e,i)}function Pw(t,e){return Iw(Aw(t,e[0]),e[1])}kw.prototype={type:"parallel",constructor:kw,_init:function(t,r,e){var i=t.dimensions,s=t.parallelAxisIndex;Mw(i,function(t,e){var i=s[e],n=r.getComponent("parallelAxis",i),a=this._axesMap.set(t,new _w(t,Bp(n),[0,0],n.get("type"),i)),o="category"===a.type;a.onBand=o&&n.get("boundaryGap"),a.inverse=n.get("inverse"),(n.axis=a).model=n,a.coordinateSystem=n.coordinateSystem=this},this)},update:function(t,e){this._updateAxesFromSeries(this._model,t)},containPoint:function(t){var e=this._makeLayoutInfo(),i=e.axisBase,n=e.layoutBase,a=e.pixelDimIndex,o=t[1-a],r=t[a];return i<=o&&o<=i+e.axisLength&&n<=r&&r<=n+e.layoutLength},getModel:function(){return this._model},_updateAxesFromSeries:function(e,n){n.eachSeries(function(t){if(e.contains(t,n)){var i=t.getData();Mw(this.dimensions,function(t){var e=this._axesMap.get(t);e.scale.unionExtentFromData(i,i.mapDimension(t)),zp(e.scale,e.model)},this)}},this)},resize:function(t,e){this._rect=au(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()}),this._layoutAxes()},getRect:function(){return this._rect},_makeLayoutInfo:function(){var t,e=this._model,i=this._rect,n=["x","y"],a=["width","height"],o=e.get("layout"),r="horizontal"===o?0:1,s=i[a[r]],l=[0,s],u=this.dimensions.length,h=Pw(e.get("axisExpandWidth"),l),c=Pw(e.get("axisExpandCount")||0,[0,u]),d=e.get("axisExpandable")&&3<u&&c<u&&1<c&&0<h&&0<s,f=e.get("axisExpandWindow");f?(t=Pw(f[1]-f[0],l),f[1]=f[0]+t):(t=Pw(h*(c-1),l),(f=[h*(e.get("axisExpandCenter")||Tw(u/2))-t/2])[1]=f[0]+t);var p=(s-t)/(u-c);p<3&&(p=0);var g=[Tw(Cw(f[0]/h,1))+1,Dw(Cw(f[1]/h,1))-1],m=p/h*f[0];return{layout:o,pixelDimIndex:r,layoutBase:i[n[r]],layoutLength:s,axisBase:i[n[1-r]],axisLength:i[a[1-r]],axisExpandable:d,axisExpandWidth:h,axisCollapseWidth:p,axisExpandWindow:f,axisCount:u,winInnerIndices:g,axisExpandWindow0Pos:m}},_layoutAxes:function(){var l=this._rect,t=this._axesMap,e=this.dimensions,u=this._makeLayoutInfo(),h=u.layout;t.each(function(t){var e=[0,u.axisLength],i=t.inverse?1:0;t.setExtent(e[i],e[1-i])}),Mw(e,function(t,e){var i=(u.axisExpandable?function(t,e){var i,n,a=e.layoutLength,o=e.axisExpandWidth,r=e.axisCount,s=e.axisCollapseWidth,l=e.winInnerIndices,u=s,h=!1;t<l[0]?(i=t*s,n=s):t<=l[1]?(i=e.axisExpandWindow0Pos+t*o-e.axisExpandWindow[0],u=o,h=!0):(i=a-(r-1-t)*s,n=s);return{position:i,axisNameAvailableWidth:u,axisLabelShow:h,nameTruncateMaxWidth:n}}:function(t,e){var i=e.layoutLength/(e.axisCount-1);return{position:i*t,axisNameAvailableWidth:i,axisLabelShow:!0}})(e,u),n={horizontal:{x:i.position,y:u.axisLength},vertical:{x:0,y:i.position}},a={horizontal:Lw/2,vertical:0},o=[n[h].x+l.x,n[h].y+l.y],r=a[h],s=Qt();ae(s,s,r),ne(s,s,o),this._axesLayout[t]={position:o,rotation:r,transform:s,axisNameAvailableWidth:i.axisNameAvailableWidth,axisLabelShow:i.axisLabelShow,nameTruncateMaxWidth:i.nameTruncateMaxWidth,tickDirection:1,labelDirection:1}},this)},getAxis:function(t){return this._axesMap.get(t)},dataToPoint:function(t,e){return this.axisCoordToPoint(this._axesMap.get(e).dataToCoord(t),e)},eachActiveState:function(e,t,i,n){null==i&&(i=0),null==n&&(n=e.count());var a=this._axesMap,o=this.dimensions,r=[],s=[];E(o,function(t){r.push(e.mapDimension(t)),s.push(a.get(t).model)});for(var l=this.hasAxisBrushed(),u=i;u<n;u++){var h;if(l){h="active";for(var c=e.getValues(r,u),d=0,f=o.length;d<f;d++){if("inactive"===s[d].getActiveState(c[d])){h="inactive";break}}}else h="normal";t(h,u)}},hasAxisBrushed:function(){for(var t=this.dimensions,e=this._axesMap,i=!1,n=0,a=t.length;n<a;n++)"normal"!==e.get(t[n]).model.getActiveState()&&(i=!0);return i},axisCoordToPoint:function(t,e){return $s([t,0],this._axesLayout[e].transform)},getAxisLayout:function(t){return D(this._axesLayout[t])},getSlidedAxisExpandWindow:function(t){var e=this._makeLayoutInfo(),i=e.pixelDimIndex,n=e.axisExpandWindow.slice(),a=n[1]-n[0],o=[0,e.axisExpandWidth*(e.axisCount-1)];if(!this.containPoint(t))return{behavior:"none",axisExpandWindow:n};var r,s=t[i]-e.layoutBase-e.axisExpandWindow0Pos,l="slide",u=e.axisCollapseWidth,h=this._model.get("axisExpandSlideTriggerArea"),c=null!=h[0];if(u)c&&u&&s<a*h[0]?(l="jump",r=s-a*h[2]):c&&u&&s>a*(1-h[0])?(l="jump",r=s-a*(1-h[2])):0<=(r=s-a*h[1])&&(r=s-a*(1-h[1]))<=0&&(r=0),(r*=e.axisExpandWidth/u)?ww(r,n,o,"all"):l="none";else{a=n[1]-n[0];(n=[Aw(0,o[1]*s/a-a/2)])[1]=Iw(o[1],n[0]+a),n[0]=n[1]-a}return{axisExpandWindow:n,behavior:l}}},Hu.register("parallel",{create:function(n,a){var o=[];return n.eachComponent("parallel",function(t,e){var i=new kw(t,n,a);i.name="parallel_"+e,i.resize(t,a),(t.coordinateSystem=i).model=t,o.push(i)}),n.eachSeries(function(t){if("parallel"===t.get("coordinateSystem")){var e=n.queryComponents({mainType:"parallel",index:t.get("parallelIndex"),id:t.get("parallelId")})[0];t.coordinateSystem=e.coordinateSystem}}),o}});var Nw=fu.extend({type:"baseParallelAxis",axis:null,activeIntervals:[],getAreaSelectStyle:function(){return Xa([["fill","color"],["lineWidth","borderWidth"],["stroke","borderColor"],["width","width"],["opacity","opacity"]])(this.getModel("areaSelectStyle"))},setActiveIntervals:function(t){var e=this.activeIntervals=D(t);if(e)for(var i=e.length-1;0<=i;i--)wl(e[i])},getActiveState:function(t){var e=this.activeIntervals;if(!e.length)return"normal";if(null==t||isNaN(t))return"inactive";if(1===e.length){var i=e[0];if(i[0]<=t&&t<=i[1])return"active"}else for(var n=0,a=e.length;n<a;n++)if(e[n][0]<=t&&t<=e[n][1])return"active";return"inactive"}});m(Nw.prototype,Hp),mm("parallel",Nw,function(t,e){return e.type||(e.data?"category":"value")},{type:"value",dim:null,areaSelectStyle:{width:20,borderWidth:1,borderColor:"rgba(160,197,232)",color:"rgba(160,197,232)",opacity:.3},realtime:!0,z:10}),fu.extend({type:"parallel",dependencies:["parallelAxis"],coordinateSystem:null,dimensions:null,parallelAxisIndex:null,layoutMode:"box",defaultOption:{zlevel:0,z:0,left:80,top:60,right:80,bottom:60,layout:"horizontal",axisExpandable:!1,axisExpandCenter:null,axisExpandCount:0,axisExpandWidth:50,axisExpandRate:17,axisExpandDebounce:50,axisExpandSlideTriggerArea:[-.15,.05,.4],axisExpandTriggerOn:"click",parallelAxisDefault:null},init:function(){fu.prototype.init.apply(this,arguments),this.mergeOption({})},mergeOption:function(t){var e=this.option;t&&m(e,t,!0),this._initDimensions()},contains:function(t,e){var i=t.get("parallelIndex");return null!=i&&e.getComponent("parallel",i)===this},setAxisExpand:function(e){E(["axisExpandable","axisExpandCenter","axisExpandCount","axisExpandWidth","axisExpandWindow"],function(t){e.hasOwnProperty(t)&&(this.option[t]=e[t])},this)},_initDimensions:function(){var e=this.dimensions=[],i=this.parallelAxisIndex=[];E(M(this.dependentModels.parallelAxis,function(t){return(t.get("parallelIndex")||0)===this.componentIndex},this),function(t){e.push("dim"+t.get("dim")),i.push(t.componentIndex)})}});tf({type:"axisAreaSelect",event:"axisAreaSelected"},function(e,t){t.eachComponent({mainType:"parallelAxis",query:e},function(t){t.axis.model.setActiveIntervals(e.intervals)})}),tf("parallelAxisExpand",function(e,t){t.eachComponent({mainType:"parallel",query:e},function(t){t.setAxisExpand(e)})});var Ow=A,Ew=E,Rw=N,zw=Math.min,Bw=Math.max,Vw=Math.pow,Gw=1e4,Fw=6,Ww=6,Hw="globalPan",Zw={w:[0,0],e:[0,1],n:[1,0],s:[1,1]},Uw={w:"ew",e:"ew",n:"ns",s:"ns",ne:"nesw",sw:"nesw",nw:"nwse",se:"nwse"},Xw={brushStyle:{lineWidth:2,stroke:"rgba(0,0,0,0.3)",fill:"rgba(0,0,0,0.1)"},transformable:!0,brushMode:"single",removeOnClick:!1},Yw=0;function jw(t){Ct.call(this),this._zr=t,this.group=new Si,this._brushType,this._brushOption,this._panels,this._track=[],this._dragging,this._lastMouseMovePoint={},this._covers=[],this._creatingCover,this._creatingPanel,this._enableGlobalPan,this._uid="brushController_"+Yw++,this._handlers={},Ew(_b,function(t,e){this._handlers[e]=T(t,this)},this)}function qw(t,e){var i=bb[e.brushType].createCover(t,e);return i.__brushOption=e,Jw(i,e),t.group.add(i),i}function Kw(t,e){var i=tb(e);return i.endCreating&&(i.endCreating(t,e),Jw(e,e.__brushOption)),e}function $w(t,e){var i=e.__brushOption;tb(e).updateCoverShape(t,e,i.range,i)}function Jw(t,e){var i=e.z;null==i&&(i=Gw),t.traverse(function(t){t.z=i,t.z2=i})}function Qw(t,e){tb(e).updateCommon(t,e),$w(t,e)}function tb(t){return bb[t.__brushOption.brushType]}function eb(t,e,i){var n,a=t._panels;if(!a)return!0;var o=t._transform;return Ew(a,function(t){t.isTargetByCursor(e,i,o)&&(n=t)}),n}function ib(t,e){var i=t._panels;if(!i)return!0;var n=e.__brushOption.panelId;return null==n||i[n]}function nb(e){var t=e._covers,i=t.length;return Ew(t,function(t){e.group.remove(t)},e),t.length=0,!!i}function ab(t,e){var i=Rw(t._covers,function(t){var e=t.__brushOption,i=D(e.range);return{brushType:e.brushType,panelId:e.panelId,range:i}});t.trigger("brush",i,{isEnd:!!e.isEnd,removeOnClick:!!e.removeOnClick})}function ob(t){var e=t.length-1;return e<0&&(e=0),[t[0],t[e]]}function rb(e,i,t,n){var a=new Si;return a.add(new Hr({name:"main",style:hb(t),silent:!0,draggable:!0,cursor:"move",drift:Ow(e,i,a,"nswe"),ondragend:Ow(ab,i,{isEnd:!0})})),Ew(n,function(t){a.add(new Hr({name:t,style:{opacity:0},draggable:!0,silent:!0,invisible:!0,drift:Ow(e,i,a,t),ondragend:Ow(ab,i,{isEnd:!0})}))}),a}function sb(t,e,i,n){var a=n.brushStyle.lineWidth||0,o=Bw(a,Ww),r=i[0][0],s=i[1][0],l=r-a/2,u=s-a/2,h=i[0][1],c=i[1][1],d=h-o+a/2,f=c-o+a/2,p=h-r,g=c-s,m=p+a,v=g+a;ub(t,e,"main",r,s,p,g),n.transformable&&(ub(t,e,"w",l,u,o,v),ub(t,e,"e",d,u,o,v),ub(t,e,"n",l,u,m,o),ub(t,e,"s",l,f,m,o),ub(t,e,"nw",l,u,o,o),ub(t,e,"ne",d,u,o,o),ub(t,e,"sw",l,f,o,o),ub(t,e,"se",d,f,o,o))}function lb(n,a){var t=a.__brushOption,o=t.transformable,e=a.childAt(0);e.useStyle(hb(t)),e.attr({silent:!o,cursor:o?"move":"default"}),Ew(["w","e","n","s","se","sw","ne","nw"],function(t){var e=a.childOfName(t),i=function t(e,i){{if(1<i.length){i=i.split("");var n=[t(e,i[0]),t(e,i[1])];return"e"!==n[0]&&"w"!==n[0]||n.reverse(),n.join("")}var a={w:"left",e:"right",n:"top",s:"bottom"},o={left:"w",right:"e",top:"n",bottom:"s"},n=Js(a[i],Ks(e.group));return o[n]}}(n,t);e&&e.attr({silent:!o,invisible:!o,cursor:o?Uw[i]+"-resize":null})})}function ub(t,e,i,n,a,o,r){var s=e.childOfName(i);s&&s.setShape(function(t){var e=zw(t[0][0],t[1][0]),i=zw(t[0][1],t[1][1]),n=Bw(t[0][0],t[1][0]),a=Bw(t[0][1],t[1][1]);return{x:e,y:i,width:n-e,height:a-i}}(gb(t,e,[[n,a],[n+o,a+r]])))}function hb(t){return C({strokeNoScale:!0},t.brushStyle)}function cb(t,e,i,n){var a=[zw(t,i),zw(e,n)],o=[Bw(t,i),Bw(e,n)];return[[a[0],o[0]],[a[1],o[1]]]}function db(t,e,i,n,a,o,r,s){var l=n.__brushOption,u=t(l.range),h=pb(i,o,r);Ew(a.split(""),function(t){var e=Zw[t];u[e[0]][e[1]]+=h[e[0]]}),l.range=e(cb(u[0][0],u[1][0],u[0][1],u[1][1])),Qw(i,n),ab(i,{isEnd:!1})}function fb(t,e,i,n,a){var o=e.__brushOption.range,r=pb(t,i,n);Ew(o,function(t){t[0]+=r[0],t[1]+=r[1]}),Qw(t,e),ab(t,{isEnd:!1})}function pb(t,e,i){var n=t.group,a=n.transformCoordToLocal(e,i),o=n.transformCoordToLocal(0,0);return[a[0]-o[0],a[1]-o[1]]}function gb(t,e,i){var n=ib(t,e);return n&&!0!==n?n.clipPath(i,t._transform):D(i)}function mb(t){var e=t.event;e.preventDefault&&e.preventDefault()}function vb(t,e,i){return t.childOfName("main").contain(e,i)}function yb(t,e,i,n){var a,o=t._creatingCover,r=t._creatingPanel,s=t._brushOption;if(t._track.push(i.slice()),function(t){var e=t._track;if(!e.length)return!1;var i=e[e.length-1],n=e[0],a=i[0]-n[0],o=i[1]-n[1],r=Vw(a*a+o*o,.5);return Fw<r}(t)||o){if(r&&!o){"single"===s.brushMode&&nb(t);var l=D(s);l.brushType=xb(l.brushType,r),l.panelId=!0===r?null:r.panelId,o=t._creatingCover=qw(t,l),t._covers.push(o)}if(o){var u=bb[xb(t._brushType,r)];o.__brushOption.range=u.getCreatingRange(gb(t,o,t._track)),n&&(Kw(t,o),u.updateCommon(t,o)),$w(t,o),a={isEnd:n}}}else n&&"single"===s.brushMode&&s.removeOnClick&&eb(t,e,i)&&nb(t)&&(a={isEnd:n,removeOnClick:!0});return a}function xb(t,e){return"auto"===t?e.defaultBrushType:t}jw.prototype={constructor:jw,enableBrush:function(t){return this._brushType&&function(t){var i=t._zr;(function(t,e,i){var n=ly(t);n[e]===i&&(n[e]=null)})(i,Hw,t._uid),Ew(t._handlers,function(t,e){i.off(e,t)}),t._brushType=t._brushOption=null}(this),t.brushType&&function(t,e){var i=t._zr;t._enableGlobalPan||function(t,e,i){ly(t)[e]=i}(i,Hw,t._uid);Ew(t._handlers,function(t,e){i.on(e,t)}),t._brushType=e.brushType,t._brushOption=m(D(Xw),e,!0)}(this,t),this},setPanels:function(t){if(t&&t.length){var e=this._panels={};E(t,function(t){e[t.panelId]=D(t)})}else this._panels=null;return this},mount:function(t){t=t||{},this._enableGlobalPan=t.enableGlobalPan;var e=this.group;return this._zr.add(e),e.attr({position:t.position||[0,0],rotation:t.rotation||0,scale:t.scale||[1,1]}),this._transform=e.getLocalTransform(),this},eachCover:function(t,e){Ew(this._covers,t,e)},updateCovers:function(a){a=N(a,function(t){return m(D(Xw),t,!0)});var i="\0-brush-index-",o=this._covers,r=this._covers=[],s=this,l=this._creatingCover;return new df(o,a,function(t,e){return n(t.__brushOption,e)},n).add(t).update(t).remove(function(t){o[t]!==l&&s.group.remove(o[t])}).execute(),this;function n(t,e){return(null!=t.id?t.id:i+e)+"-"+t.brushType}function t(t,e){var i=a[t];if(null!=e&&o[e]===l)r[t]=o[e];else{var n=r[t]=null!=e?(o[e].__brushOption=i,o[e]):Kw(s,qw(s,i));Qw(s,n)}}},unmount:function(){return this.enableBrush(!1),nb(this),this._zr.remove(this.group),this},dispose:function(){this.unmount(),this.off()}},b(jw,Ct);var _b={mousedown:function(t){if(this._dragging)wb(this,t);else if(!t.target||!t.target.draggable){mb(t);var e=this.group.transformCoordToLocal(t.offsetX,t.offsetY);this._creatingCover=null,(this._creatingPanel=eb(this,t,e))&&(this._dragging=!0,this._track=[e.slice()])}},mousemove:function(t){var e=this._lastMouseMovePoint;e.x=t.offsetX,e.y=t.offsetY;var i=this.group.transformCoordToLocal(e.x,e.y);if(function(t,e,i){if(t._brushType){var n=t._zr,a=t._covers,o=eb(t,e,i);if(!t._dragging)for(var r=0;r<a.length;r++){var s=a[r].__brushOption;if(o&&(!0===o||s.panelId===o.panelId)&&bb[s.brushType].contain(a[r],i[0],i[1]))return}o&&n.setCursorStyle("crosshair")}}(this,t,i),this._dragging){mb(t);var n=yb(this,t,i,!1);n&&ab(this,n)}},mouseup:function(t){wb(this,t)},globalout:function(t){wb(this,t,!0)}};function wb(t,e,i){if(t._dragging){i||mb(e);var n=e.offsetX,a=e.offsetY,o=t._lastMouseMovePoint;i&&(n=o.x,a=o.y);var r=t.group.transformCoordToLocal(n,a),s=yb(t,e,r,!0);t._dragging=!1,t._track=[],t._creatingCover=null,s&&ab(t,s)}}var bb={lineX:Sb(0),lineY:Sb(1),rect:{createCover:function(t,e){return rb(Ow(db,function(t){return t},function(t){return t}),t,e,["w","e","n","s","se","sw","ne","nw"])},getCreatingRange:function(t){var e=ob(t);return cb(e[1][0],e[1][1],e[0][0],e[0][1])},updateCoverShape:function(t,e,i,n){sb(t,e,i,n)},updateCommon:lb,contain:vb},polygon:{createCover:function(t,e){var i=new Si;return i.add(new zr({name:"main",style:hb(e),silent:!0})),i},getCreatingRange:function(t){return t},endCreating:function(t,e){e.remove(e.childAt(0)),e.add(new Rr({name:"main",draggable:!0,drift:Ow(fb,t,e),ondragend:Ow(ab,t,{isEnd:!0})}))},updateCoverShape:function(t,e,i,n){e.childAt(0).setShape({points:gb(t,e,i)})},updateCommon:lb,contain:vb}};function Sb(l){return{createCover:function(t,e){return rb(Ow(db,function(t){var e=[t,[0,100]];return l&&e.reverse(),e},function(t){return t[l]}),t,e,[["w","e"],["n","s"]][l])},getCreatingRange:function(t){var e=ob(t);return[zw(e[0][l],e[1][l]),Bw(e[0][l],e[1][l])]},updateCoverShape:function(t,e,i,n){var a,o=ib(t,e);if(!0!==o&&o.getLinearBrushOtherExtent)a=o.getLinearBrushOtherExtent(l,t._transform);else{var r=t._zr;a=[0,[r.getWidth(),r.getHeight()][1-l]]}var s=[i,a];l&&s.reverse(),sb(t,e,s,n)},updateCommon:lb,contain:vb}}function Mb(i){return i=Tb(i),function(t,e){return tl(t,i)}}function Ib(a,o){return a=Tb(a),function(t){var e=null!=o?o:t,i=e?a.width:a.height,n=e?a.x:a.y;return[n,n+(i||0)]}}function Ab(n,a,o){return n=Tb(n),function(t,e,i){return n.contain(e[0],e[1])&&!wy(t,a,o)}}function Tb(t){return bi.create(t)}var Db=["axisLine","axisTickLabel","axisName"],Cb=lf({type:"parallelAxis",init:function(t,e){Cb.superApply(this,"init",arguments),(this._brushController=new jw(e.getZr())).on("brush",T(this._onBrush,this))},render:function(t,e,i,n){if(!function(t,e,i){return i&&"axisAreaSelect"===i.type&&e.findComponents({mainType:"parallelAxis",query:i})[0]===t}(t,e,n)){this.axisModel=t,this.api=i,this.group.removeAll();var a=this._axisGroup;if(this._axisGroup=new Si,this.group.add(this._axisGroup),t.get("show")){var o=function(t,e){return e.getComponent("parallel",t.get("parallelIndex"))}(t,e),r=o.coordinateSystem,s=t.getAreaSelectStyle(),l=s.width,u=t.axis.dim,h=L({strokeContainThreshold:l},r.getAxisLayout(u)),c=new Cm(t,h);E(Db,c.add,c),this._axisGroup.add(c.getGroup()),this._refreshBrushController(h,s,t,o,l,i);var d=n&&!1===n.animation?null:t;Qs(a,this._axisGroup,d)}}},_refreshBrushController:function(t,e,i,n,a,o){var r=i.axis.getExtent(),s=r[1]-r[0],l=Math.min(30,.1*Math.abs(s)),u=bi.create({x:r[0],y:-a/2,width:s,height:a});u.x-=l,u.width+=2*l,this._brushController.mount({enableGlobalPan:!0,rotation:t.rotation,position:t.position}).setPanels([{panelId:"pl",clipPath:Mb(u),isTargetByCursor:Ab(u,o,n),getLinearBrushOtherExtent:Ib(u,0)}]).enableBrush({brushType:"lineX",brushStyle:e,removeOnClick:!0}).updateCovers(function(t){var e=t.axis;return N(t.activeIntervals,function(t){return{brushType:"lineX",panelId:"pl",range:[e.dataToCoord(t[0],!0),e.dataToCoord(t[1],!0)]}})}(i))},_onBrush:function(t,e){var i=this.axisModel,n=i.axis,a=N(t,function(t){return[n.coordToData(t.range[0],!0),n.coordToData(t.range[1],!0)]});!i.option.realtime!==e.isEnd&&!e.removeOnClick||this.api.dispatchAction({type:"axisAreaSelect",parallelAxisId:i.id,intervals:a})},dispose:function(){this._brushController.dispose()}});lf({type:"parallel",render:function(t,e,i){this._model=t,this._api=i,this._handlers||(this._handlers={},E(Lb,function(t,e){i.getZr().on(e,this._handlers[e]=T(t,this))},this)),dc(this,"_throttledDispatchExpand",t.get("axisExpandRate"),"fixRate")},dispose:function(t,i){E(this._handlers,function(t,e){i.getZr().off(e,t)}),this._handlers=null},_throttledDispatchExpand:function(t){this._dispatchExpand(t)},_dispatchExpand:function(t){t&&this._api.dispatchAction(L({type:"parallelAxisExpand"},t))}});var Lb={mousedown:function(t){kb(this,"click")&&(this._mouseDownPoint=[t.offsetX,t.offsetY])},mouseup:function(t){var e=this._mouseDownPoint;if(kb(this,"click")&&e){var i=[t.offsetX,t.offsetY];if(5<Math.pow(e[0]-i[0],2)+Math.pow(e[1]-i[1],2))return;var n=this._model.coordinateSystem.getSlidedAxisExpandWindow([t.offsetX,t.offsetY]);"none"!==n.behavior&&this._dispatchExpand({axisExpandWindow:n.axisExpandWindow})}this._mouseDownPoint=null},mousemove:function(t){if(!this._mouseDownPoint&&kb(this,"mousemove")){var e=this._model,i=e.coordinateSystem.getSlidedAxisExpandWindow([t.offsetX,t.offsetY]),n=i.behavior;"jump"===n&&this._throttledDispatchExpand.debounceNextCall(e.get("axisExpandDebounce")),this._throttledDispatchExpand("none"===n?null:{axisExpandWindow:i.axisExpandWindow,animation:"jump"===n&&null})}}};function kb(t,e){var i=t._model;return i.get("axisExpandable")&&i.get("axisExpandTriggerOn")===e}Jd(function(t){!function(t){if(t.parallel)return;var e=!1;E(t.series,function(t){t&&"parallel"===t.type&&(e=!0)}),e&&(t.parallel=[{}])}(t),function(n){E(wa(n.parallelAxis),function(t){if(z(t)){var e=t.parallelIndex||0,i=wa(n.parallel)[e];i&&i.parallelAxisDefault&&m(t,i.parallelAxisDefault,!1)}})}(t)}),Wh.extend({type:"series.parallel",dependencies:["parallel"],visualColorAccessPath:"lineStyle.color",getInitialData:function(t,e){var i=this.getSource();return function(t,e){if(t.encodeDefine)return;var i=e.ecModel.getComponent("parallel",e.get("parallelIndex"));if(!i)return;var n=t.encodeDefine=Q();E(i.dimensions,function(t){var e=function(t){return+t.replace("dim","")}(t);n.set(t,e)})}(i,this),Xf(i,this)},getRawIndicesByActiveState:function(i){var t=this.coordinateSystem,n=this.getData(),a=[];return t.eachActiveState(n,function(t,e){i===t&&a.push(n.getRawIndex(e))}),a},defaultOption:{zlevel:0,z:2,coordinateSystem:"parallel",parallelIndex:0,label:{show:!1},inactiveOpacity:.05,activeOpacity:1,lineStyle:{width:1,opacity:.45,type:"solid"},emphasis:{label:{show:!1}},progressive:500,smooth:!1,animationEasing:"linear"}});ec.extend({type:"parallel",init:function(){this._dataGroup=new Si,this.group.add(this._dataGroup),this._data,this._initialized},render:function(o,t,e,r){var i=this._dataGroup,s=o.getData(),l=this._data,u=o.coordinateSystem,h=u.dimensions,c=Ob(o);if(s.diff(l).add(function(t){Eb(Nb(s,i,t,h,u),s,t,c)}).update(function(t,e){var i=l.getItemGraphicEl(e),n=Pb(s,t,h,u);s.setItemGraphicEl(t,i);var a=r&&!1===r.animation?null:o;js(i,{shape:{points:n}},a,t),Eb(i,s,t,c)}).remove(function(t){var e=l.getItemGraphicEl(t);i.remove(e)}).execute(),!this._initialized){this._initialized=!0;var n=function(t,e,i){var n=t.model,a=t.getRect(),o=new Hr({shape:{x:a.x,y:a.y,width:a.width,height:a.height}}),r="horizontal"===n.get("layout")?"width":"height";return o.setShape(r,0),qs(o,{shape:{width:a.width,height:a.height}},e,i),o}(u,o,function(){setTimeout(function(){i.removeClipPath()})});i.setClipPath(n)}this._data=s},incrementalPrepareRender:function(t,e,i){this._initialized=!0,this._data=null,this._dataGroup.removeAll()},incrementalRender:function(t,e,i){for(var n=e.getData(),a=e.coordinateSystem,o=a.dimensions,r=Ob(e),s=t.start;s<t.end;s++){var l=Nb(n,this._dataGroup,s,o,a);l.incremental=!0,Eb(l,n,s,r)}},dispose:function(){},remove:function(){this._dataGroup&&this._dataGroup.removeAll(),this._data=null}});function Pb(t,e,i,n){for(var a,o=[],r=0;r<i.length;r++){var s=i[r],l=t.get(t.mapDimension(s),e);a=l,("category"===n.getAxis(s).type?null==a:null==a||isNaN(a))||o.push(n.dataToPoint(l,s))}return o}function Nb(t,e,i,n,a){var o=Pb(t,i,n,a),r=new zr({shape:{points:o},silent:!0,z2:10});return e.add(r),t.setItemGraphicEl(i,r),r}function Ob(t){var e=t.get("smooth",!0);return!0===e&&(e=.3),{lineStyle:t.getModel("lineStyle").getLineStyle(),smooth:null!=e?e:.3}}function Eb(t,e,i,n){var a=n.lineStyle;e.hasItemOption&&(a=e.getItemModel(i).getModel("lineStyle").getLineStyle());t.useStyle(a);var o=t.style;o.fill=null,o.stroke=e.getItemVisual(i,"color"),o.opacity=e.getItemVisual(i,"opacity"),n.smooth&&(t.shape.smooth=n.smooth)}var Rb=["lineStyle","normal","opacity"];af({seriesType:"parallel",reset:function(t,e,i){var n=t.getModel("itemStyle"),a=t.getModel("lineStyle"),o=e.get("color"),r=a.get("color")||n.get("color")||o[t.seriesIndex%o.length],s=t.get("inactiveOpacity"),l=t.get("activeOpacity"),u=t.getModel("lineStyle").getLineStyle(),h=t.coordinateSystem,c=t.getData(),d={normal:u.opacity,active:l,inactive:s};return c.setVisual("color",r),{progress:function(t,a){h.eachActiveState(a,function(t,e){var i=d[t];if("normal"===t&&a.hasItemOption){var n=a.getItemModel(e).get(Rb,!0);null!=n&&(i=n)}a.setItemVisual(e,"opacity",i)},t.start,t.end)}}}});var zb=Wh.extend({type:"series.sankey",layoutInfo:null,levelModels:null,getInitialData:function(t,e){for(var i=t.edges||t.links,n=t.data||t.nodes,a=t.levels,o=this.levelModels={},r=0;r<a.length;r++)null!=a[r].depth&&0<=a[r].depth&&(o[a[r].depth]=new dl(a[r],this,e));if(n&&i)return I_(n,i,this,!0,function(t,e){t.wrapMethod("getItemModel",function(t,n){return t.customizeGetParent(function(t){var e=this.parentModel,i=e.getData().getItemLayout(n).depth;return e.levelModels[i]||this.parentModel}),t}),e.wrapMethod("getItemModel",function(t,n){return t.customizeGetParent(function(t){var e=this.parentModel,i=e.getGraph().getEdgeByIndex(n).node1.getLayout().depth;return e.levelModels[i]||this.parentModel}),t})}).data},setNodePosition:function(t,e){var i=this.option.data[t];i.localX=e[0],i.localY=e[1]},getGraph:function(){return this.getData().graph},getEdgeData:function(){return this.getGraph().edgeData},formatTooltip:function(t,e,i){if("edge"===i){var n=this.getDataParams(t,i),a=n.data,o=a.source+" -- "+a.target;return n.value&&(o+=" : "+n.value),Wl(o)}if("node"!==i)return zb.superCall(this,"formatTooltip",t,e);var r=this.getGraph().getNodeByIndex(t).getLayout().value,s=this.getDataParams(t,i).data.name;if(r)o=s+" : "+r;return Wl(o)},optionUpdated:function(){var t=this.option;!0===t.focusNodeAdjacency&&(t.focusNodeAdjacency="allEdges")},defaultOption:{zlevel:0,z:2,coordinateSystem:"view",layout:null,left:"5%",top:"5%",right:"20%",bottom:"5%",orient:"horizontal",nodeWidth:20,nodeGap:8,draggable:!0,focusNodeAdjacency:!1,layoutIterations:32,label:{show:!0,position:"right",color:"#000",fontSize:12},levels:[],nodeAlign:"justify",itemStyle:{borderWidth:1,borderColor:"#333"},lineStyle:{color:"#314656",opacity:.2,curveness:.5},emphasis:{label:{show:!0},lineStyle:{opacity:.6}},animationEasing:"linear",animationDuration:1e3}}),Bb=["itemStyle","opacity"],Vb=["lineStyle","opacity"];function Gb(t,e){return t.getVisual("opacity")||t.getModel().get(e)}function Fb(t,e,i){var n=t.getGraphicEl(),a=Gb(t,e);null!=i&&(null==a&&(a=1),a*=i),n.downplay&&n.downplay(),n.traverse(function(t){"group"!==t.type&&t.setStyle("opacity",a)})}function Wb(t,e){var i=Gb(t,e),n=t.getGraphicEl();n.highlight&&n.highlight(),n.traverse(function(t){"group"!==t.type&&t.setStyle("opacity",i)})}var Hb=ds({shape:{x1:0,y1:0,x2:0,y2:0,cpx1:0,cpy1:0,cpx2:0,cpy2:0,extent:0,orient:""},buildPath:function(t,e){var i=e.extent;t.moveTo(e.x1,e.y1),t.bezierCurveTo(e.cpx1,e.cpy1,e.cpx2,e.cpy2,e.x2,e.y2),"vertical"===e.orient?(t.lineTo(e.x2+i,e.y2),t.bezierCurveTo(e.cpx2+i,e.cpy2,e.cpx1+i,e.cpy1,e.x1+i,e.y1)):(t.lineTo(e.x2,e.y2+i),t.bezierCurveTo(e.cpx2,e.cpy2+i,e.cpx1,e.cpy1+i,e.x1,e.y1+i)),t.closePath()}});hf({type:"sankey",_model:null,_focusAdjacencyDisabled:!1,render:function(w,t,n){var a=this,e=w.getGraph(),b=this.group,i=w.layoutInfo,S=i.width,M=i.height,u=w.getData(),I=w.getData("edge"),A=w.get("orient");this._model=w,b.removeAll(),b.attr("position",[i.x,i.y]),e.eachEdge(function(t){var e=new Hb;e.dataIndex=t.dataIndex,e.seriesIndex=w.seriesIndex,e.dataType="edge";var i,n,a,o,r,s,l,u,h=t.getModel("lineStyle"),c=h.get("curveness"),d=t.node1.getLayout(),f=t.node1.getModel(),p=f.get("localX"),g=f.get("localY"),m=t.node2.getLayout(),v=t.node2.getModel(),y=v.get("localX"),x=v.get("localY"),_=t.getLayout();switch(e.shape.extent=Math.max(1,_.dy),u="vertical"===(e.shape.orient=A)?(i=(null!=p?p*S:d.x)+_.sy,n=(null!=g?g*M:d.y)+d.dy,a=(null!=y?y*S:m.x)+_.ty,r=i,s=n*(1-c)+(o=null!=x?x*M:m.y)*c,l=a,n*c+o*(1-c)):(i=(null!=p?p*S:d.x)+d.dx,n=(null!=g?g*M:d.y)+_.sy,r=i*(1-c)+(a=null!=y?y*S:m.x)*c,s=n,l=i*c+a*(1-c),o=(null!=x?x*M:m.y)+_.ty),e.setShape({x1:i,y1:n,x2:a,y2:o,cpx1:r,cpy1:s,cpx2:l,cpy2:u}),e.setStyle(h.getItemStyle()),e.style.fill){case"source":e.style.fill=t.node1.getVisual("color");break;case"target":e.style.fill=t.node2.getVisual("color")}Os(e,t.getModel("emphasis.lineStyle").getItemStyle()),b.add(e),I.setItemGraphicEl(t.dataIndex,e)}),e.eachNode(function(t){var e=t.getLayout(),i=t.getModel(),n=i.get("localX"),a=i.get("localY"),o=i.getModel("label"),r=i.getModel("emphasis.label"),s=new Hr({shape:{x:null!=n?n*S:e.x,y:null!=a?a*M:e.y,width:e.dx,height:e.dy},style:i.getModel("itemStyle").getItemStyle()}),l=t.getModel("emphasis.itemStyle").getItemStyle();Bs(s.style,l,o,r,{labelFetcher:w,labelDataIndex:t.dataIndex,defaultText:t.id,isRectText:!0}),s.setStyle("fill",t.getVisual("color")),Os(s,l),b.add(s),u.setItemGraphicEl(t.dataIndex,s),s.dataType="node"}),u.eachItemGraphicEl(function(t,i){var e=u.getItemModel(i);e.get("draggable")&&(t.drift=function(t,e){a._focusAdjacencyDisabled=!0,this.shape.x+=t,this.shape.y+=e,this.dirty(),n.dispatchAction({type:"dragNode",seriesId:w.id,dataIndex:u.getRawIndex(i),localX:this.shape.x/S,localY:this.shape.y/M})},t.ondragend=function(){a._focusAdjacencyDisabled=!1},t.draggable=!0,t.cursor="move"),e.get("focusNodeAdjacency")&&(t.off("mouseover").on("mouseover",function(){a._focusAdjacencyDisabled||n.dispatchAction({type:"focusNodeAdjacency",seriesId:w.id,dataIndex:t.dataIndex})}),t.off("mouseout").on("mouseout",function(){a._focusAdjacencyDisabled||n.dispatchAction({type:"unfocusNodeAdjacency",seriesId:w.id})}))}),I.eachItemGraphicEl(function(t,e){I.getItemModel(e).get("focusNodeAdjacency")&&(t.off("mouseover").on("mouseover",function(){a._focusAdjacencyDisabled||n.dispatchAction({type:"focusNodeAdjacency",seriesId:w.id,edgeDataIndex:t.dataIndex})}),t.off("mouseout").on("mouseout",function(){a._focusAdjacencyDisabled||n.dispatchAction({type:"unfocusNodeAdjacency",seriesId:w.id})}))}),!this._data&&w.get("animation")&&b.setClipPath(function(t,e,i){var n=new Hr({shape:{x:t.x-10,y:t.y-10,width:0,height:t.height+20}});return qs(n,{shape:{width:t.width+20,height:t.height+20}},e,i),n}(b.getBoundingRect(),w,function(){b.removeClipPath()})),this._data=w.getData()},dispose:function(){},focusNodeAdjacency:function(t,e,i,n){var a=this._model.getData(),o=a.graph,r=n.dataIndex,s=a.getItemModel(r),l=n.edgeDataIndex;if(null!=r||null!=l){var u=o.getNodeByIndex(r),h=o.getEdgeByIndex(l);if(o.eachNode(function(t){Fb(t,Bb,.1)}),o.eachEdge(function(t){Fb(t,Vb,.1)}),u){Wb(u,Bb);var c=s.get("focusNodeAdjacency");"outEdges"===c?E(u.outEdges,function(t){t.dataIndex<0||(Wb(t,Vb),Wb(t.node2,Bb))}):"inEdges"===c?E(u.inEdges,function(t){t.dataIndex<0||(Wb(t,Vb),Wb(t.node1,Bb))}):"allEdges"===c&&E(u.edges,function(t){t.dataIndex<0||(Wb(t,Vb),Wb(t.node1,Bb),Wb(t.node2,Bb))})}h&&(Wb(h,Vb),Wb(h.node1,Bb),Wb(h.node2,Bb))}},unfocusNodeAdjacency:function(t,e,i,n){var a=this._model.getGraph();a.eachNode(function(t){Fb(t,Bb)}),a.eachEdge(function(t){Fb(t,Vb)})}}),tf({type:"dragNode",event:"dragnode",update:"update"},function(e,t){t.eachComponent({mainType:"series",subType:"sankey",query:e},function(t){t.setNodePosition(e.dataIndex,[e.localX,e.localY])})});function Zb(t){var e=t.hostGraph.data.getRawDataItem(t.dataIndex);return null!=e.depth&&0<=e.depth}function Ub(t,l,u,h,c){var d="vertical"===c?"x":"y";E(t,function(t){var e,i,n;t.sort(function(t,e){return t.getLayout()[d]-e.getLayout()[d]});for(var a=0,o=t.length,r="vertical"===c?"dx":"dy",s=0;s<o;s++)0<(n=a-(i=t[s]).getLayout()[d])&&(e=i.getLayout()[d]+n,"vertical"===c?i.setLayout({x:e},!0):i.setLayout({y:e},!0)),a=i.getLayout()[d]+i.getLayout()[r]+l;if(0<(n=a-l-("vertical"===c?h:u)))for(e=i.getLayout()[d]-n,"vertical"===c?i.setLayout({x:e},!0):i.setLayout({y:e},!0),a=e,s=o-2;0<=s;--s)0<(n=(i=t[s]).getLayout()[d]+i.getLayout()[r]+l-a)&&(e=i.getLayout()[d]-n,"vertical"===c?i.setLayout({x:e},!0):i.setLayout({y:e},!0)),a=i.getLayout()[d]})}function Xb(t,a,o){E(t.slice().reverse(),function(t){E(t,function(t){if(t.outEdges.length){var e=$b(t.outEdges,Yb,o)/$b(t.outEdges,Kb,o);if("vertical"===o){var i=t.getLayout().x+(e-qb(t,o))*a;t.setLayout({x:i},!0)}else{var n=t.getLayout().y+(e-qb(t,o))*a;t.setLayout({y:n},!0)}}})})}function Yb(t,e){return qb(t.node2,e)*t.getValue()}function jb(t,e){return qb(t.node1,e)*t.getValue()}function qb(t,e){return"vertical"===e?t.getLayout().x+t.getLayout().dx/2:t.getLayout().y+t.getLayout().dy/2}function Kb(t){return t.getValue()}function $b(t,e,i){for(var n=0,a=t.length,o=-1;++o<a;){var r=+e.call(t,t[o],i);isNaN(r)||(n+=r)}return n}function Jb(t,a,o){E(t,function(t){E(t,function(t){if(t.inEdges.length){var e=$b(t.inEdges,jb,o)/$b(t.inEdges,Kb,o);if("vertical"===o){var i=t.getLayout().x+(e-qb(t,o))*a;t.setLayout({x:i},!0)}else{var n=t.getLayout().y+(e-qb(t,o))*a;t.setLayout({y:n},!0)}}})})}nf(function(t,u,e){t.eachSeriesByType("sankey",function(t){var e=t.get("nodeWidth"),i=t.get("nodeGap"),n=function(t,e){return au(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}(t,u),a=(t.layoutInfo=n).width,o=n.height,r=t.getGraph(),s=r.nodes,l=r.edges;!function(t){E(t,function(t){var e=$b(t.outEdges,Kb),i=$b(t.inEdges,Kb),n=Math.max(e,i);t.setLayout({value:n},!0)})}(s),function(t,e,i,n,a,o,r,s,l){(function(t,e,i,n,a,o,r){for(var s=[],l=[],u=[],h=[],c=0,d=0;d<e.length;d++)s[d]=1;for(d=0;d<t.length;d++)l[d]=t[d].inEdges.length,0===l[d]&&u.push(t[d]);var f=-1;for(;u.length;){for(var p=0;p<u.length;p++){var g=u[p],m=g.hostGraph.data.getRawDataItem(g.dataIndex),v=null!=m.depth&&0<=m.depth;v&&m.depth>f&&(f=m.depth),g.setLayout({depth:v?m.depth:c},!0),"vertical"===o?g.setLayout({dy:i},!0):g.setLayout({dx:i},!0);for(var y=0;y<g.outEdges.length;y++){var x=g.outEdges[y],_=e.indexOf(x);s[_]=0;var w=x.node2,b=t.indexOf(w);0==--l[b]&&h.indexOf(w)<0&&h.push(w)}}++c,u=h,h=[]}for(d=0;d<s.length;d++)if(1===s[d])throw new Error("Sankey is a DAG, the original data has cycle!");var S=c-1<f?f:c-1;r&&"left"!==r&&function(t,e,i,n){if("right"===e){for(var a=[],o=t,r=0;o.length;){for(var s=0;s<o.length;s++){var l=o[s];l.setLayout({skNodeHeight:r},!0);for(var u=0;u<l.inEdges.length;u++){var h=l.inEdges[u];a.indexOf(h.node1)<0&&a.push(h.node1)}}o=a,a=[],++r}E(t,function(t){Zb(t)||t.setLayout({depth:Math.max(0,n-t.getLayout().skNodeHeight)},!0)})}else"justify"===e&&function(t,e){E(t,function(t){Zb(t)||t.outEdges.length||t.setLayout({depth:e},!0)})}(t,n)}(t,r,0,S);!function(t,i,n){E(t,function(t){var e=t.getLayout().depth*i;"vertical"===n?t.setLayout({y:e},!0):t.setLayout({x:e},!0)})}(t,"vertical"===o?(a-i)/S:(n-i)/S,o)})(t,e,i,a,o,s,l),function(t,e,i,n,a,o,r){var s=function(t,e){var i=[],n="vertical"===e?"y":"x",a=Ra(t,function(t){return t.getLayout()[n]});return a.keys.sort(function(t,e){return t-e}),E(a.keys,function(t){i.push(a.buckets.get(t))}),i}(t,r);(function(t,e,a,o,r,s){var l=1/0;E(t,function(t){var e=t.length,i=0;E(t,function(t){i+=t.getLayout().value});var n="vertical"===s?(o-(e-1)*r)/i:(a-(e-1)*r)/i;n<l&&(l=n)}),E(t,function(t){E(t,function(t,e){var i=t.getLayout().value*l;"vertical"===s?(t.setLayout({x:e},!0),t.setLayout({dx:i},!0)):(t.setLayout({y:e},!0),t.setLayout({dy:i},!0))})}),E(e,function(t){var e=+t.getValue()*l;t.setLayout({dy:e},!0)})})(s,e,i,n,a,r),Ub(s,a,i,n,r);for(var l=1;0<o;o--)Xb(s,l*=.99,r),Ub(s,a,i,n,r),Jb(s,l,r),Ub(s,a,i,n,r)}(t,e,o,a,n,r,s),function(t,e){var i="vertical"===e?"x":"y";E(t,function(t){t.outEdges.sort(function(t,e){return t.node2.getLayout()[i]-e.node2.getLayout()[i]}),t.inEdges.sort(function(t,e){return t.node1.getLayout()[i]-e.node1.getLayout()[i]})}),E(t,function(t){var e=0,i=0;E(t.outEdges,function(t){t.setLayout({sy:e},!0),e+=t.getLayout().dy}),E(t.inEdges,function(t){t.setLayout({ty:i},!0),i+=t.getLayout().dy})})}(t,s)}(s,l,e,i,a,o,0!==M(s,function(t){return 0===t.getLayout().value}).length?0:t.get("layoutIterations"),t.get("orient"),t.get("nodeAlign"))})}),af(function(t,e){t.eachSeriesByType("sankey",function(n){var t=n.getGraph().nodes;if(t.length){var a=1/0,o=-1/0;E(t,function(t){var e=t.getLayout().value;e<a&&(a=e),o<e&&(o=e)}),E(t,function(t){var e=new Bx({type:"color",mappingMethod:"linear",dataExtent:[a,o],visual:n.get("color")}).mapValueToVisual(t.getLayout().value),i=t.getModel().get("itemStyle.color");null!=i?t.setVisual("color",i):t.setVisual("color",e)})}})});var Qb={_baseAxisDim:null,getInitialData:function(t,e){var i,n,a=e.getComponent("xAxis",this.get("xAxisIndex")),o=e.getComponent("yAxis",this.get("yAxisIndex")),r=a.get("type"),s=o.get("type");"category"===r?(t.layout="horizontal",i=a.getOrdinalMeta(),n=!0):"category"===s?(t.layout="vertical",i=o.getOrdinalMeta(),n=!0):t.layout=t.layout||"horizontal";var l=["x","y"],u="horizontal"===t.layout?0:1,h=this._baseAxisDim=l[u],c=l[1-u],d=[a,o],f=d[u].get("type"),p=d[1-u].get("type"),g=t.data;if(g&&n){var m=[];E(g,function(t,e){var i;t.value&&k(t.value)?(i=t.value.slice(),t.value.unshift(e)):k(t)?(i=t.slice(),t.unshift(e)):i=t,m.push(i)}),t.data=m}var v=this.defaultValueDimensions;return yv(this,{coordDimensions:[{name:h,type:mf(f),ordinalMeta:i,otherDims:{tooltip:!1,itemName:0},dimsDef:["base"]},{name:c,type:mf(p),dimsDef:v.slice()}],dimensionsCount:v.length+1})},getBaseAxis:function(){var t=this._baseAxisDim;return this.ecModel.getComponent(t+"Axis",this.get(t+"AxisIndex")).axis}};b(Wh.extend({type:"series.boxplot",dependencies:["xAxis","yAxis","grid"],defaultValueDimensions:[{name:"min",defaultTooltip:!0},{name:"Q1",defaultTooltip:!0},{name:"median",defaultTooltip:!0},{name:"Q3",defaultTooltip:!0},{name:"max",defaultTooltip:!0}],dimensions:null,defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,hoverAnimation:!0,layout:null,boxWidth:[7,50],itemStyle:{color:"#fff",borderWidth:1},emphasis:{itemStyle:{borderWidth:2,shadowBlur:5,shadowOffsetX:2,shadowOffsetY:2,shadowColor:"rgba(0,0,0,0.4)"}},animationEasing:"elasticOut",animationDuration:800}}),Qb,!0);var tS=["itemStyle"],eS=["emphasis","itemStyle"],iS=(ec.extend({type:"boxplot",render:function(t,e,i){var a=t.getData(),o=this.group,r=this._data;this._data||o.removeAll();var s="horizontal"===t.get("layout")?1:0;a.diff(r).add(function(t){if(a.hasValue(t)){var e=nS(a.getItemLayout(t),a,t,s,!0);a.setItemGraphicEl(t,e),o.add(e)}}).update(function(t,e){var i=r.getItemGraphicEl(e);if(a.hasValue(t)){var n=a.getItemLayout(t);i?aS(n,i,a,t):i=nS(n,a,t,s),o.add(i),a.setItemGraphicEl(t,i)}else o.remove(i)}).remove(function(t){var e=r.getItemGraphicEl(t);e&&o.remove(e)}).execute(),this._data=a},remove:function(t){var e=this.group,i=this._data;this._data=null,i&&i.eachItemGraphicEl(function(t){t&&e.remove(t)})},dispose:et}),hr.extend({type:"boxplotBoxPath",shape:{},buildPath:function(t,e){var i=e.points,n=0;for(t.moveTo(i[n][0],i[n][1]),n++;n<4;n++)t.lineTo(i[n][0],i[n][1]);for(t.closePath();n<i.length;n++)t.moveTo(i[n][0],i[n][1]),n++,t.lineTo(i[n][0],i[n][1])}}));function nS(t,e,i,n,a){var o=t.ends,r=new iS({shape:{points:a?function(t,e,i){return N(t,function(t){return(t=t.slice())[e]=i.initBaseline,t})}(o,n,t):o}});return aS(t,r,e,i,a),r}function aS(t,e,i,n,a){var o=i.hostModel;(0,ol[a?"initProps":"updateProps"])(e,{shape:{points:t.ends}},o,n);var r=i.getItemModel(n),s=r.getModel(tS),l=i.getItemVisual(n,"color"),u=s.getItemStyle(["borderColor"]);u.stroke=l,u.strokeNoScale=!0,e.useStyle(u),e.z2=100,Os(e,r.getModel(eS).getItemStyle())}var oS=["itemStyle","borderColor"],rS=E;af(function(n,t){var a=n.get("color");n.eachRawSeriesByType("boxplot",function(t){var e=a[t.seriesIndex%a.length],i=t.getData();i.setVisual({legendSymbol:"roundRect",color:t.get(oS)||e}),n.isSeriesFiltered(t)||i.each(function(t){var e=i.getItemModel(t);i.setItemVisual(t,{color:e.get(oS,!0)})})})}),nf(function(t){var e=function(t){var n=[],a=[];return t.eachSeriesByType("boxplot",function(t){var e=t.getBaseAxis(),i=_(a,e);i<0&&(i=a.length,a[i]=e,n[i]={axis:e,seriesModels:[]}),n[i].seriesModels.push(t)}),n}(t);rS(e,function(i){var t=i.seriesModels;t.length&&(function(t){var e,i,n=t.axis,a=t.seriesModels,o=a.length,r=t.boxWidthList=[],s=t.boxOffsetList=[],l=[];if("category"===n.type)i=n.getBandWidth();else{var u=0;rS(a,function(t){u=Math.max(u,t.getData().count())}),e=n.getExtent(),Math.abs(e[1]-e[0])}rS(a,function(t){var e=t.get("boxWidth");k(e)||(e=[e,e]),l.push([xl(e[0],i)||0,xl(e[1],i)||0])});var h=.8*i-2,c=h/o*.3,d=(h-c*(o-1))/o,f=d/2-h/2;rS(a,function(t,e){s.push(f),f+=c+d,r.push(Math.min(Math.max(d,l[e][0]),l[e][1]))})}(i),rS(t,function(t,e){!function(t,r,e){var s=t.coordinateSystem,l=t.getData(),o=e/2,u="horizontal"===t.get("layout")?0:1,h=1-u,i=["x","y"],n=l.mapDimension(i[u]),a=l.mapDimension(i[h],!0);if(null==n||a.length<5)return;for(var c=0;c<l.count();c++){var d=l.get(n,c),f=x(d,a[2],c),p=x(d,a[0],c),g=x(d,a[1],c),m=x(d,a[3],c),v=x(d,a[4],c),y=[];_(y,g,0),_(y,m,1),y.push(p,g,v,m),w(y,p),w(y,v),w(y,f),l.setItemLayout(c,{initBaseline:f[h],ends:y})}function x(t,e,i){var n,a=l.get(e,i),o=[];return o[u]=t,o[h]=a,isNaN(t)||isNaN(a)?n=[NaN,NaN]:(n=s.dataToPoint(o))[u]+=r,n}function _(t,e,i){var n=e.slice(),a=e.slice();n[u]+=o,a[u]-=o,i?t.push(n,a):t.push(a,n)}function w(t,e){var i=e.slice(),n=e.slice();i[u]-=o,n[u]+=o,t.push(i,n)}}(t,i.boxOffsetList[e],i.boxWidthList[e])}))})}),b(Wh.extend({type:"series.candlestick",dependencies:["xAxis","yAxis","grid"],defaultValueDimensions:[{name:"open",defaultTooltip:!0},{name:"close",defaultTooltip:!0},{name:"lowest",defaultTooltip:!0},{name:"highest",defaultTooltip:!0}],dimensions:null,defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,hoverAnimation:!0,layout:null,clip:!0,itemStyle:{color:"#c23531",color0:"#314656",borderWidth:1,borderColor:"#c23531",borderColor0:"#314656"},emphasis:{itemStyle:{borderWidth:2}},barMaxWidth:null,barMinWidth:null,barWidth:null,large:!0,largeThreshold:600,progressive:3e3,progressiveThreshold:1e4,progressiveChunkMode:"mod",animationUpdate:!1,animationEasing:"linear",animationDuration:300},getShadowDim:function(){return"open"},brushSelector:function(t,e,i){var n=e.getItemLayout(t);return n&&i.rect(n.brushRect)}}),Qb,!0);var sS=["itemStyle"],lS=["emphasis","itemStyle"],uS=["color","color0","borderColor","borderColor0"],hS=(ec.extend({type:"candlestick",render:function(t,e,i){this.group.removeClipPath(),this._updateDrawMode(t),this._isLargeDraw?this._renderLarge(t):this._renderNormal(t)},incrementalPrepareRender:function(t,e,i){this._clear(),this._updateDrawMode(t)},incrementalRender:function(t,e,i,n){this._isLargeDraw?this._incrementalRenderLarge(t,e):this._incrementalRenderNormal(t,e)},_updateDrawMode:function(t){var e=t.pipelineContext.large;(null==this._isLargeDraw||e^this._isLargeDraw)&&(this._isLargeDraw=e,this._clear())},_renderNormal:function(a){var o=a.getData(),r=this._data,s=this.group,l=o.getLayout("isSimpleBox"),u=a.get("clip",!0),t=a.coordinateSystem,h=t.getArea&&t.getArea();this._data||s.removeAll(),o.diff(r).add(function(t){if(o.hasValue(t)){var e,i=o.getItemLayout(t);if(u&&dS(h,i))return;qs(e=cS(i,t,!0),{shape:{points:i.ends}},a,t),fS(e,o,t,l),s.add(e),o.setItemGraphicEl(t,e)}}).update(function(t,e){var i=r.getItemGraphicEl(e);if(o.hasValue(t)){var n=o.getItemLayout(t);u&&dS(h,n)?s.remove(i):(i?js(i,{shape:{points:n.ends}},a,t):i=cS(n,t),fS(i,o,t,l),s.add(i),o.setItemGraphicEl(t,i))}else s.remove(i)}).remove(function(t){var e=r.getItemGraphicEl(t);e&&s.remove(e)}).execute(),this._data=o},_renderLarge:function(t){this._clear(),gS(t,this.group);var e=t.get("clip",!0)?tm(t.coordinateSystem,!1,t):null;e?this.group.setClipPath(e):this.group.removeClipPath()},_incrementalRenderNormal:function(t,e){for(var i,n=e.getData(),a=n.getLayout("isSimpleBox");null!=(i=t.next());){var o;fS(o=cS(n.getItemLayout(i),i),n,i,a),o.incremental=!0,this.group.add(o)}},_incrementalRenderLarge:function(t,e){gS(e,this.group,!0)},remove:function(t){this._clear()},_clear:function(){this.group.removeAll(),this._data=null},dispose:et}),hr.extend({type:"normalCandlestickBox",shape:{},buildPath:function(t,e){var i=e.points;this.__simpleBox?(t.moveTo(i[4][0],i[4][1]),t.lineTo(i[6][0],i[6][1])):(t.moveTo(i[0][0],i[0][1]),t.lineTo(i[1][0],i[1][1]),t.lineTo(i[2][0],i[2][1]),t.lineTo(i[3][0],i[3][1]),t.closePath(),t.moveTo(i[4][0],i[4][1]),t.lineTo(i[5][0],i[5][1]),t.moveTo(i[6][0],i[6][1]),t.lineTo(i[7][0],i[7][1]))}}));function cS(t,e,i){var n=t.ends;return new hS({shape:{points:i?function(t,e){return N(t,function(t){return(t=t.slice())[1]=e.initBaseline,t})}(n,t):n},z2:100})}function dS(t,e){for(var i=!0,n=0;n<e.ends.length;n++)if(t.contain(e.ends[n][0],e.ends[n][1])){i=!1;break}return i}function fS(t,e,i,n){var a=e.getItemModel(i),o=a.getModel(sS),r=e.getItemVisual(i,"color"),s=e.getItemVisual(i,"borderColor")||r,l=o.getItemStyle(uS);t.useStyle(l),t.style.strokeNoScale=!0,t.style.fill=r,t.style.stroke=s,t.__simpleBox=n,Os(t,a.getModel(lS).getItemStyle())}var pS=hr.extend({type:"largeCandlestickBox",shape:{},buildPath:function(t,e){for(var i=e.points,n=0;n<i.length;)if(this.__sign===i[n++]){var a=i[n++];t.moveTo(a,i[n++]),t.lineTo(a,i[n++])}else n+=3}});function gS(t,e,i){var n=t.getData(),a=n.getLayout("largePoints"),o=new pS({shape:{points:a},__sign:1});e.add(o);var r=new pS({shape:{points:a},__sign:-1});e.add(r),mS(1,o,t,n),mS(-1,r,t,n),i&&(o.incremental=!0,r.incremental=!0)}function mS(t,e,i,n){var a=0<t?"P":"N",o=n.getVisual("borderColor"+a)||n.getVisual("color"+a),r=i.getModel(sS).getItemStyle(uS);e.useStyle(r),e.style.fill=null,e.style.stroke=o}var vS=["itemStyle","borderColor"],yS=["itemStyle","borderColor0"],xS=["itemStyle","color"],_S=["itemStyle","color0"],wS={seriesType:"candlestick",plan:Jh(),performRawSeries:!0,reset:function(t,e){var i=t.getData(),n=t.pipelineContext.large;if(i.setVisual({legendSymbol:"roundRect",colorP:o(1,t),colorN:o(-1,t),borderColorP:r(1,t),borderColorN:r(-1,t)}),!e.isSeriesFiltered(t))return!n&&{progress:function(t,e){var i;for(;null!=(i=t.next());){var n=e.getItemModel(i),a=e.getItemLayout(i).sign;e.setItemVisual(i,{color:o(a,n),borderColor:r(a,n)})}}};function o(t,e){return e.get(0<t?xS:_S)}function r(t,e){return e.get(0<t?vS:yS)}}},bS="undefined"!=typeof Float32Array?Float32Array:Array,SS={seriesType:"candlestick",plan:Jh(),reset:function(t){var x=t.coordinateSystem,e=t.getData(),_=function(t,e){var i,n=t.getBaseAxis(),a="category"===n.type?n.getBandWidth():(i=n.getExtent(),Math.abs(i[1]-i[0])/e.count()),o=xl(H(t.get("barMaxWidth"),a),a),r=xl(H(t.get("barMinWidth"),1),a),s=t.get("barWidth");return null!=s?xl(s,a):Math.max(Math.min(a/2,o),r)}(t,e),i=["x","y"],w=e.mapDimension(i[0]),n=e.mapDimension(i[1],!0),b=n[0],S=n[1],M=n[2],I=n[3];if(e.setLayout({candleWidth:_,isSimpleBox:_<=1.3}),!(null==w||n.length<4))return{progress:t.pipelineContext.large?function(t,e){var i,n,a=new bS(4*t.count),o=0,r=[],s=[];for(;null!=(n=t.next());){var l=e.get(w,n),u=e.get(b,n),h=e.get(S,n),c=e.get(M,n),d=e.get(I,n);isNaN(l)||isNaN(c)||isNaN(d)?(a[o++]=NaN,o+=3):(a[o++]=MS(e,n,u,h,S),r[0]=l,r[1]=c,i=x.dataToPoint(r,null,s),a[o++]=i?i[0]:NaN,a[o++]=i?i[1]:NaN,r[1]=d,i=x.dataToPoint(r,null,s),a[o++]=i?i[1]:NaN)}e.setLayout("largePoints",a)}:function(t,e){var i;for(;null!=(i=t.next());){var n=e.get(w,i),a=e.get(b,i),o=e.get(S,i),r=e.get(M,i),s=e.get(I,i),l=Math.min(a,o),u=Math.max(a,o),h=g(l,n),c=g(u,n),d=g(r,n),f=g(s,n),p=[];m(p,c,0),m(p,h,1),p.push(y(f),y(c),y(d),y(h)),e.setItemLayout(i,{sign:MS(e,i,a,o,S),initBaseline:o<a?c[1]:h[1],ends:p,brushRect:v(r,s,n)})}function g(t,e){var i=[];return i[0]=e,i[1]=t,isNaN(e)||isNaN(t)?[NaN,NaN]:x.dataToPoint(i)}function m(t,e,i){var n=e.slice(),a=e.slice();n[0]=_s(n[0]+_/2,1,!1),a[0]=_s(a[0]-_/2,1,!0),i?t.push(n,a):t.push(a,n)}function v(t,e,i){var n=g(t,i),a=g(e,i);return n[0]-=_/2,a[0]-=_/2,{x:n[0],y:n[1],width:_,height:a[1]-n[1]}}function y(t){return t[0]=_s(t[0],1),t}}}}};function MS(t,e,i,n,a){return n<i?-1:i<n?1:0<e?t.get(a,e-1)<=n?1:-1:1}Jd(function(t){t&&k(t.series)&&E(t.series,function(t){z(t)&&"k"===t.type&&(t.type="candlestick")})}),af(wS),nf(SS),Wh.extend({type:"series.effectScatter",dependencies:["grid","polar"],getInitialData:function(t,e){return Xf(this.getSource(),this)},brushSelector:"point",defaultOption:{coordinateSystem:"cartesian2d",zlevel:0,z:2,legendHoverLink:!0,effectType:"ripple",progressive:0,showEffectOn:"render",rippleEffect:{period:4,scale:2.5,brushType:"fill"},symbolSize:10}});function IS(t,e){var i=e.rippleEffectColor||e.color;t.eachChild(function(t){t.attr({z:e.z,zlevel:e.zlevel,style:{stroke:"stroke"===e.brushType?i:null,fill:"fill"===e.brushType?i:null}})})}function AS(t,e){Si.call(this);var i=new Sg(t,e),n=new Si;this.add(i),this.add(n),n.beforeUpdate=function(){this.attr(i.getScale())},this.updateData(t,e)}var TS=AS.prototype;TS.stopEffectAnimation=function(){this.childAt(1).removeAll()},TS.startEffectAnimation=function(t){for(var e=t.symbolType,i=t.color,n=this.childAt(1),a=0;a<3;a++){var o=Jp(e,-1,-1,2,2,i);o.attr({style:{strokeNoScale:!0},z2:99,silent:!0,scale:[.5,.5]});var r=-a/3*t.period+t.effectOffset;o.animate("",!0).when(t.period,{scale:[t.rippleScale/2,t.rippleScale/2]}).delay(r).start(),o.animateStyle(!0).when(t.period,{opacity:0}).delay(r).start(),n.add(o)}IS(n,t)},TS.updateEffectAnimation=function(t){for(var e=this._effectCfg,i=this.childAt(1),n=["symbolType","period","rippleScale"],a=0;a<n.length;a++){var o=n[a];if(e[o]!==t[o])return this.stopEffectAnimation(),void this.startEffectAnimation(t)}IS(i,t)},TS.highlight=function(){this.trigger("emphasis")},TS.downplay=function(){this.trigger("normal")},TS.updateData=function(t,e){var i=t.hostModel;this.childAt(0).updateData(t,e);var n=this.childAt(1),a=t.getItemModel(e),o=t.getItemVisual(e,"symbol"),r=function(t){return k(t)||(t=[+t,+t]),t}(t.getItemVisual(e,"symbolSize")),s=t.getItemVisual(e,"color");n.attr("scale",r),n.traverse(function(t){t.attr({fill:s})});var l=a.getShallow("symbolOffset");if(l){var u=n.position;u[0]=xl(l[0],r[0]),u[1]=xl(l[1],r[1])}n.rotation=(a.getShallow("symbolRotate")||0)*Math.PI/180||0;var h={};if(h.showEffectOn=i.get("showEffectOn"),h.rippleScale=a.get("rippleEffect.scale"),h.brushType=a.get("rippleEffect.brushType"),h.period=1e3*a.get("rippleEffect.period"),h.effectOffset=e/t.count(),h.z=a.getShallow("z")||0,h.zlevel=a.getShallow("zlevel")||0,h.symbolType=o,h.color=s,h.rippleEffectColor=a.get("rippleEffect.color"),this.off("mouseover").off("mouseout").off("emphasis").off("normal"),"render"===h.showEffectOn)this._effectCfg?this.updateEffectAnimation(h):this.startEffectAnimation(h),this._effectCfg=h;else{this._effectCfg=null,this.stopEffectAnimation();var c=this.childAt(0),d=function(){c.highlight(),"render"!==h.showEffectOn&&this.startEffectAnimation(h)},f=function(){c.downplay(),"render"!==h.showEffectOn&&this.stopEffectAnimation()};this.on("mouseover",d,this).on("mouseout",f,this).on("emphasis",d,this).on("normal",f,this)}this._effectCfg=h},TS.fadeOut=function(t){this.off("mouseover").off("mouseout").off("emphasis").off("normal"),t&&t()},w(AS,Si),hf({type:"effectScatter",init:function(){this._symbolDraw=new Ng(AS)},render:function(t,e,i){var n=t.getData(),a=this._symbolDraw;a.updateData(n),this.group.add(a.group)},updateTransform:function(t,e,i){var n=t.getData();this.group.dirty();var a=sm().reset(t);a.progress&&a.progress({start:0,end:n.count()},n),this._symbolDraw.updateLayout(n)},_updateGroupTransform:function(t){var e=t.coordinateSystem;e&&e.getRoamTransform&&(this.group.transform=se(e.getRoamTransform()),this.group.decomposeTransform())},remove:function(t,e){this._symbolDraw&&this._symbolDraw.remove(e)},dispose:function(){}}),af(rm("effectScatter","circle")),nf(sm("effectScatter"));var DS="undefined"==typeof Uint32Array?Array:Uint32Array,CS="undefined"==typeof Float64Array?Array:Float64Array;function LS(t){var e=t.data;e&&e[0]&&e[0][0]&&e[0][0].coord&&(t.data=N(e,function(t){var e={coords:[t[0].coord,t[1].coord]};return t[0].name&&(e.fromName=t[0].name),t[1].name&&(e.toName=t[1].name),p([e,t[0],t[1]])}))}var kS=Wh.extend({type:"series.lines",dependencies:["grid","polar"],visualColorAccessPath:"lineStyle.color",init:function(t){t.data=t.data||[],LS(t);var e=this._processFlatCoordsArray(t.data);this._flatCoords=e.flatCoords,this._flatCoordsOffset=e.flatCoordsOffset,e.flatCoords&&(t.data=new Float32Array(e.count)),kS.superApply(this,"init",arguments)},mergeOption:function(t){if(t.data=t.data||[],LS(t),t.data){var e=this._processFlatCoordsArray(t.data);this._flatCoords=e.flatCoords,this._flatCoordsOffset=e.flatCoordsOffset,e.flatCoords&&(t.data=new Float32Array(e.count))}kS.superApply(this,"mergeOption",arguments)},appendData:function(t){var e=this._processFlatCoordsArray(t.data);e.flatCoords&&(this._flatCoords?(this._flatCoords=tt(this._flatCoords,e.flatCoords),this._flatCoordsOffset=tt(this._flatCoordsOffset,e.flatCoordsOffset)):(this._flatCoords=e.flatCoords,this._flatCoordsOffset=e.flatCoordsOffset),t.data=new Float32Array(e.count)),this.getRawData().appendData(t.data)},_getCoordsFromItemModel:function(t){var e=this.getData().getItemModel(t);return e.option instanceof Array?e.option:e.getShallow("coords")},getLineCoordsCount:function(t){return this._flatCoordsOffset?this._flatCoordsOffset[2*t+1]:this._getCoordsFromItemModel(t).length},getLineCoords:function(t,e){if(this._flatCoordsOffset){for(var i=this._flatCoordsOffset[2*t],n=this._flatCoordsOffset[2*t+1],a=0;a<n;a++)e[a]=e[a]||[],e[a][0]=this._flatCoords[i+2*a],e[a][1]=this._flatCoords[i+2*a+1];return n}var o=this._getCoordsFromItemModel(t);for(a=0;a<o.length;a++)e[a]=e[a]||[],e[a][0]=o[a][0],e[a][1]=o[a][1];return o.length},_processFlatCoordsArray:function(t){var e=0;if(this._flatCoords&&(e=this._flatCoords.length),"number"!=typeof t[0])return{flatCoordsOffset:null,flatCoords:null,count:t.length};for(var i=t.length,n=new DS(i),a=new CS(i),o=0,r=0,s=0,l=0;l<i;){s++;var u=t[l++];n[r++]=o+e,n[r++]=u;for(var h=0;h<u;h++){var c=t[l++],d=t[l++];a[o++]=c,a[o++]=d}}return{flatCoordsOffset:new Uint32Array(n.buffer,0,r),flatCoords:a,count:s}},getInitialData:function(t,e){var o=new Tf(["value"],this);return o.hasItemOption=!1,o.initData(t.data,[],function(t,e,i,n){if(t instanceof Array)return NaN;o.hasItemOption=!0;var a=t.value;return null!=a?a instanceof Array?a[n]:a:void 0}),o},formatTooltip:function(t){var e=this.getData().getItemModel(t),i=e.get("name");if(i)return i;var n=e.get("fromName"),a=e.get("toName"),o=[];return null!=n&&o.push(n),null!=a&&o.push(a),Wl(o.join(" > "))},preventIncremental:function(){return!!this.get("effect.show")},getProgressive:function(){var t=this.option.progressive;return null==t?this.option.large?1e4:this.get("progressive"):t},getProgressiveThreshold:function(){var t=this.option.progressiveThreshold;return null==t?this.option.large?2e4:this.get("progressiveThreshold"):t},defaultOption:{coordinateSystem:"geo",zlevel:0,z:2,legendHoverLink:!0,hoverAnimation:!0,xAxisIndex:0,yAxisIndex:0,symbol:["none","none"],symbolSize:[10,10],geoIndex:0,effect:{show:!1,period:4,constantSpeed:0,symbol:"circle",symbolSize:3,loop:!0,trailLength:.2},large:!1,largeThreshold:2e3,polyline:!1,clip:!0,label:{show:!1,position:"end"},lineStyle:{opacity:.5}}});function PS(t,e,i){Si.call(this),this.add(this.createLine(t,e,i)),this._updateEffectSymbol(t,e)}var NS=PS.prototype;function OS(t,e,i){Si.call(this),this._createPolyline(t,e,i)}NS.createLine=function(t,e,i){return new E_(t,e,i)},NS._updateEffectSymbol=function(t,e){var i=t.getItemModel(e).getModel("effect"),n=i.get("symbolSize"),a=i.get("symbol");k(n)||(n=[n,n]);var o=i.get("color")||t.getItemVisual(e,"color"),r=this.childAt(1);this._symbolType!==a&&(this.remove(r),(r=Jp(a,-.5,-.5,1,1,o)).z2=100,r.culling=!0,this.add(r)),r&&(r.setStyle("shadowColor",o),r.setStyle(i.getItemStyle(["color"])),r.attr("scale",n),r.setColor(o),r.attr("scale",n),this._symbolType=a,this._updateEffectAnimation(t,i,e))},NS._updateEffectAnimation=function(e,t,i){var n=this.childAt(1);if(n){var a=this,o=e.getItemLayout(i),r=1e3*t.get("period"),s=t.get("loop"),l=t.get("constantSpeed"),u=W(t.get("delay"),function(t){return t/e.count()*r/3}),h="function"==typeof u;if(n.ignore=!0,this.updateAnimationPoints(n,o),0<l&&(r=this.getLineLength(n)/l*1e3),r!==this._period||s!==this._loop){n.stopAnimation();var c=u;h&&(c=u(i)),0<n.__t&&(c=-r*n.__t),n.__t=0;var d=n.animate("",s).when(r,{__t:1}).delay(c).during(function(){a.updateSymbolPosition(n)});s||d.done(function(){a.remove(n)}),d.start()}this._period=r,this._loop=s}},NS.getLineLength=function(t){return yt(t.__p1,t.__cp1)+yt(t.__cp1,t.__p2)},NS.updateAnimationPoints=function(t,e){t.__p1=e[0],t.__p2=e[1],t.__cp1=e[2]||[(e[0][0]+e[1][0])/2,(e[0][1]+e[1][1])/2]},NS.updateData=function(t,e,i){this.childAt(0).updateData(t,e,i),this._updateEffectSymbol(t,e)},NS.updateSymbolPosition=function(t){var e=t.__p1,i=t.__p2,n=t.__cp1,a=t.__t,o=t.position,r=fo,s=po;o[0]=r(e[0],n[0],i[0],a),o[1]=r(e[1],n[1],i[1],a);var l=s(e[0],n[0],i[0],a),u=s(e[1],n[1],i[1],a);t.rotation=-Math.atan2(u,l)-Math.PI/2,t.ignore=!1},NS.updateLayout=function(t,e){this.childAt(0).updateLayout(t,e);var i=t.getItemModel(e).getModel("effect");this._updateEffectAnimation(t,i,e)},w(PS,Si);var ES=OS.prototype;function RS(t,e,i){PS.call(this,t,e,i),this._lastFrame=0,this._lastFramePercent=0}ES._createPolyline=function(t,e,i){var n=t.getItemLayout(e),a=new zr({shape:{points:n}});this.add(a),this._updateCommonStl(t,e,i)},ES.updateData=function(t,e,i){var n=t.hostModel;js(this.childAt(0),{shape:{points:t.getItemLayout(e)}},n,e),this._updateCommonStl(t,e,i)},ES._updateCommonStl=function(t,e,i){var n=this.childAt(0),a=t.getItemModel(e),o=t.getItemVisual(e,"color"),r=i&&i.lineStyle,s=i&&i.hoverLineStyle;i&&!t.hasItemOption||(r=a.getModel("lineStyle").getLineStyle(),s=a.getModel("emphasis.lineStyle").getLineStyle()),n.useStyle(C({strokeNoScale:!0,fill:"none",stroke:o},r)),n.hoverStyle=s,Os(this)},ES.updateLayout=function(t,e){this.childAt(0).setShape("points",t.getItemLayout(e))},w(OS,Si);var zS=RS.prototype;zS.createLine=function(t,e,i){return new OS(t,e,i)},zS.updateAnimationPoints=function(t,e){this._points=e;for(var i=[0],n=0,a=1;a<e.length;a++){var o=e[a-1],r=e[a];n+=yt(o,r),i.push(n)}if(0!==n){for(a=0;a<i.length;a++)i[a]/=n;this._offsets=i,this._length=n}},zS.getLineLength=function(t){return this._length},zS.updateSymbolPosition=function(t){var e=t.__t,i=this._points,n=this._offsets,a=i.length;if(n){var o=this._lastFrame;if(e<this._lastFramePercent){for(r=Math.min(o+1,a-1);0<=r&&!(n[r]<=e);r--);r=Math.min(r,a-2)}else{for(var r=o;r<a&&!(n[r]>e);r++);r=Math.min(r-1,a-2)}wt(t.position,i[r],i[r+1],(e-n[r])/(n[r+1]-n[r]));var s=i[r+1][0]-i[r][0],l=i[r+1][1]-i[r][1];t.rotation=-Math.atan2(l,s)-Math.PI/2,this._lastFrame=r,this._lastFramePercent=e,t.ignore=!1}},w(RS,PS);var BS=ds({shape:{polyline:!1,curveness:0,segs:[]},buildPath:function(t,e){var i=e.segs,n=e.curveness;if(e.polyline)for(var a=0;a<i.length;){var o=i[a++];if(0<o){t.moveTo(i[a++],i[a++]);for(var r=1;r<o;r++)t.lineTo(i[a++],i[a++])}}else for(a=0;a<i.length;){var s=i[a++],l=i[a++],u=i[a++],h=i[a++];if(t.moveTo(s,l),0<n){var c=(s+u)/2-(l-h)*n,d=(l+h)/2-(u-s)*n;t.quadraticCurveTo(c,d,u,h)}else t.lineTo(u,h)}},findDataIndex:function(t,e){var i=this.shape,n=i.segs,a=i.curveness;if(i.polyline)for(var o=0,r=0;r<n.length;){var s=n[r++];if(0<s)for(var l=n[r++],u=n[r++],h=1;h<s;h++){if(Zo(l,u,c=n[r++],d=n[r++]))return o}o++}else for(o=0,r=0;r<n.length;){l=n[r++],u=n[r++];var c=n[r++],d=n[r++];if(0<a){if(Xo(l,u,(l+c)/2-(u-d)*a,(u+d)/2-(c-l)*a,c,d))return o}else if(Zo(l,u,c,d))return o;o++}return-1}});function VS(){this.group=new Si}var GS=VS.prototype;GS.isPersistent=function(){return!this._incremental},GS.updateData=function(t){this.group.removeAll();var e=new BS({rectHover:!0,cursor:"default"});e.setShape({segs:t.getLayout("linesPoints")}),this._setCommon(e,t),this.group.add(e),this._incremental=null},GS.incrementalPrepareUpdate=function(t){this.group.removeAll(),this._clearIncremental(),5e5<t.count()?(this._incremental||(this._incremental=new ts({silent:!0})),this.group.add(this._incremental)):this._incremental=null},GS.incrementalUpdate=function(t,e){var i=new BS;i.setShape({segs:e.getLayout("linesPoints")}),this._setCommon(i,e,!!this._incremental),this._incremental?this._incremental.addDisplayable(i,!0):(i.rectHover=!0,i.cursor="default",i.__startIndex=t.start,this.group.add(i))},GS.remove=function(){this._clearIncremental(),this._incremental=null,this.group.removeAll()},GS._setCommon=function(i,t,e){var n=t.hostModel;i.setShape({polyline:n.get("polyline"),curveness:n.get("lineStyle.curveness")}),i.useStyle(n.getModel("lineStyle").getLineStyle()),i.style.strokeNoScale=!0;var a=t.getVisual("color");a&&i.setStyle("stroke",a),i.setStyle("fill"),e||(i.seriesIndex=n.seriesIndex,i.on("mousemove",function(t){i.dataIndex=null;var e=i.findDataIndex(t.offsetX,t.offsetY);0<e&&(i.dataIndex=e+i.__startIndex)}))},GS._clearIncremental=function(){var t=this._incremental;t&&t.clearDisplaybles()};var FS={seriesType:"lines",plan:Jh(),reset:function(g){var m=g.coordinateSystem,v=g.get("polyline"),y=g.pipelineContext.large;return{progress:function(t,e){var i=[];if(y){var n,a=t.end-t.start;if(v){for(var o=0,r=t.start;r<t.end;r++)o+=g.getLineCoordsCount(r);n=new Float32Array(a+2*o)}else n=new Float32Array(4*a);var s=0,l=[];for(r=t.start;r<t.end;r++){var u=g.getLineCoords(r,i);v&&(n[s++]=u);for(var h=0;h<u;h++)l=m.dataToPoint(i[h],!1,l),n[s++]=l[0],n[s++]=l[1]}e.setLayout("linesPoints",n)}else for(r=t.start;r<t.end;r++){var c=e.getItemModel(r),d=(u=g.getLineCoords(r,i),[]);if(v)for(var f=0;f<u;f++)d.push(m.dataToPoint(i[f]));else{d[0]=m.dataToPoint(i[0]),d[1]=m.dataToPoint(i[1]);var p=c.get("lineStyle.curveness");+p&&(d[2]=[(d[0][0]+d[1][0])/2-(d[0][1]-d[1][1])*p,(d[0][1]+d[1][1])/2-(d[1][0]-d[0][0])*p])}e.setItemLayout(r,d)}}}}};function WS(t){return t instanceof Array||(t=[t,t]),t}hf({type:"lines",init:function(){},render:function(t,e,i){var n=t.getData(),a=this._updateLineDraw(n,t),o=t.get("zlevel"),r=t.get("effect.trailLength"),s=i.getZr(),l="svg"===s.painter.getType();l||s.painter.getLayer(o).clear(!0),null==this._lastZlevel||l||s.configLayer(this._lastZlevel,{motionBlur:!1}),this._showEffect(t)&&r&&(l||s.configLayer(o,{motionBlur:!0,lastFrameAlpha:Math.max(Math.min(r/10+.9,1),0)})),a.updateData(n);var u=t.get("clip",!0)&&tm(t.coordinateSystem,!1,t);u?this.group.setClipPath(u):this.group.removeClipPath(),this._lastZlevel=o,this._finished=!0},incrementalPrepareRender:function(t,e,i){var n=t.getData();this._updateLineDraw(n,t).incrementalPrepareUpdate(n),this._clearLayer(i),this._finished=!1},incrementalRender:function(t,e,i){this._lineDraw.incrementalUpdate(t,e.getData()),this._finished=t.end===e.getData().count()},updateTransform:function(t,e,i){var n=t.getData(),a=t.pipelineContext;if(!this._finished||a.large||a.progressiveRender)return{update:!0};var o=FS.reset(t);o.progress&&o.progress({start:0,end:n.count()},n),this._lineDraw.updateLayout(),this._clearLayer(i)},_updateLineDraw:function(t,e){var i=this._lineDraw,n=this._showEffect(e),a=!!e.get("polyline"),o=e.pipelineContext.large;return i&&n===this._hasEffet&&a===this._isPolyline&&o===this._isLargeDraw||(i&&i.remove(),i=this._lineDraw=o?new VS:new z_(a?n?RS:OS:n?PS:E_),this._hasEffet=n,this._isPolyline=a,this._isLargeDraw=o,this.group.removeAll()),this.group.add(i.group),i},_showEffect:function(t){return!!t.get("effect.show")},_clearLayer:function(t){var e=t.getZr();"svg"===e.painter.getType()||null==this._lastZlevel||e.painter.getLayer(this._lastZlevel).clear(!0)},remove:function(t,e){this._lineDraw&&this._lineDraw.remove(),this._lineDraw=null,this._clearLayer(e)},dispose:function(){}});var HS="lineStyle.opacity".split("."),ZS={seriesType:"lines",reset:function(t,e,i){var n=WS(t.get("symbol")),a=WS(t.get("symbolSize")),o=t.getData();return o.setVisual("fromSymbol",n&&n[0]),o.setVisual("toSymbol",n&&n[1]),o.setVisual("fromSymbolSize",a&&a[0]),o.setVisual("toSymbolSize",a&&a[1]),o.setVisual("opacity",t.get(HS)),{dataEach:o.hasItemOption?function(t,e){var i=t.getItemModel(e),n=WS(i.getShallow("symbol",!0)),a=WS(i.getShallow("symbolSize",!0)),o=i.get(HS);n[0]&&t.setItemVisual(e,"fromSymbol",n[0]),n[1]&&t.setItemVisual(e,"toSymbol",n[1]),a[0]&&t.setItemVisual(e,"fromSymbolSize",a[0]),a[1]&&t.setItemVisual(e,"toSymbolSize",a[1]),t.setItemVisual(e,"opacity",o)}:null}}};nf(FS),af(ZS),Wh.extend({type:"series.heatmap",getInitialData:function(t,e){return Xf(this.getSource(),this,{generateCoord:"value"})},preventIncremental:function(){var t=Hu.get(this.get("coordinateSystem"));if(t&&t.dimensions)return"lng"===t.dimensions[0]&&"lat"===t.dimensions[1]},defaultOption:{coordinateSystem:"cartesian2d",zlevel:0,z:2,geoIndex:0,blurSize:30,pointSize:20,maxOpacity:1,minOpacity:0}});function US(){var t=g();this.canvas=t,this.blurSize=30,this.pointSize=20,this.maxOpacity=1,this.minOpacity=0,this._gradientPixels={}}US.prototype={update:function(t,e,i,n,a,o){var r=this._getBrush(),s=this._getGradient(t,a,"inRange"),l=this._getGradient(t,a,"outOfRange"),u=this.pointSize+this.blurSize,h=this.canvas,c=h.getContext("2d"),d=t.length;h.width=e,h.height=i;for(var f=0;f<d;++f){var p=t[f],g=p[0],m=p[1],v=n(p[2]);c.globalAlpha=v,c.drawImage(r,g-u,m-u)}if(!h.width||!h.height)return h;for(var y=c.getImageData(0,0,h.width,h.height),x=y.data,_=0,w=x.length,b=this.minOpacity,S=this.maxOpacity-b;_<w;){v=x[_+3]/256;var M=4*Math.floor(255*v);if(0<v){var I=o(v)?s:l;0<v&&(v=v*S+b),x[_++]=I[M],x[_++]=I[1+M],x[_++]=I[2+M],x[_++]=I[3+M]*v*256}else _+=4}return c.putImageData(y,0,0),h},_getBrush:function(){var t=this._brushCanvas||(this._brushCanvas=g()),e=this.pointSize+this.blurSize,i=2*e;t.width=i,t.height=i;var n=t.getContext("2d");return n.clearRect(0,0,i,i),n.shadowOffsetX=i,n.shadowBlur=this.blurSize,n.shadowColor="#000",n.beginPath(),n.arc(-e,e,this.pointSize,0,2*Math.PI,!0),n.closePath(),n.fill(),t},_getGradient:function(t,e,i){for(var n=this._gradientPixels,a=n[i]||(n[i]=new Uint8ClampedArray(1024)),o=[0,0,0,0],r=0,s=0;s<256;s++)e[i](s/255,!0,o),a[r++]=o[0],a[r++]=o[1],a[r++]=o[2],a[r++]=o[3];return a}},hf({type:"heatmap",render:function(i,t,e){var n;t.eachComponent("visualMap",function(e){e.eachTargetSeries(function(t){t===i&&(n=e)})}),this.group.removeAll(),this._incrementalDisplayable=null;var a=i.coordinateSystem;"cartesian2d"===a.type||"calendar"===a.type?this._renderOnCartesianAndCalendar(i,e,0,i.getData().count()):function(t){var e=t.dimensions;return"lng"===e[0]&&"lat"===e[1]}(a)&&this._renderOnGeo(a,i,n,e)},incrementalPrepareRender:function(t,e,i){this.group.removeAll()},incrementalRender:function(t,e,i,n){e.coordinateSystem&&this._renderOnCartesianAndCalendar(e,n,t.start,t.end,!0)},_renderOnCartesianAndCalendar:function(t,e,i,n,a){var o,r,s=t.coordinateSystem;if("cartesian2d"===s.type){var l=s.getAxis("x"),u=s.getAxis("y");o=l.getBandWidth(),r=u.getBandWidth()}for(var h=this.group,c=t.getData(),d="emphasis.itemStyle",f="emphasis.label",p=t.getModel("itemStyle").getItemStyle(["color"]),g=t.getModel(d).getItemStyle(),m=t.getModel("label"),v=t.getModel(f),y=s.type,x="cartesian2d"===y?[c.mapDimension("x"),c.mapDimension("y"),c.mapDimension("value")]:[c.mapDimension("time"),c.mapDimension("value")],_=i;_<n;_++){var w;if("cartesian2d"===y){if(isNaN(c.get(x[2],_)))continue;var b=s.dataToPoint([c.get(x[0],_),c.get(x[1],_)]);w=new Hr({shape:{x:b[0]-o/2,y:b[1]-r/2,width:o,height:r},style:{fill:c.getItemVisual(_,"color"),opacity:c.getItemVisual(_,"opacity")}})}else{if(isNaN(c.get(x[1],_)))continue;w=new Hr({z2:1,shape:s.dataToRect([c.get(x[0],_)]).contentShape,style:{fill:c.getItemVisual(_,"color"),opacity:c.getItemVisual(_,"opacity")}})}var S=c.getItemModel(_);c.hasItemOption&&(p=S.getModel("itemStyle").getItemStyle(["color"]),g=S.getModel(d).getItemStyle(),m=S.getModel("label"),v=S.getModel(f));var M=t.getRawValue(_),I="-";M&&null!=M[2]&&(I=M[2]),Bs(p,g,m,v,{labelFetcher:t,labelDataIndex:_,defaultText:I,isRectText:!0}),w.setStyle(p),Os(w,c.hasItemOption?g:L({},g)),(w.incremental=a)&&(w.useHoverLayer=!0),h.add(w),c.setItemGraphicEl(_,w)}},_renderOnGeo:function(a,t,e,i){var n=e.targetVisuals.inRange,o=e.targetVisuals.outOfRange,r=t.getData(),s=this._hmLayer||this._hmLayer||new US;s.blurSize=t.get("blurSize"),s.pointSize=t.get("pointSize"),s.minOpacity=t.get("minOpacity"),s.maxOpacity=t.get("maxOpacity");var l=a.getViewRect().clone(),u=a.getRoamTransform();l.applyTransform(u);var h=Math.max(l.x,0),c=Math.max(l.y,0),d=Math.min(l.width+l.x,i.getWidth()),f=Math.min(l.height+l.y,i.getHeight()),p=d-h,g=f-c,m=[r.mapDimension("lng"),r.mapDimension("lat"),r.mapDimension("value")],v=r.mapArray(m,function(t,e,i){var n=a.dataToPoint([t,e]);return n[0]-=h,n[1]-=c,n.push(i),n}),y=e.getExtent(),x="visualMap.continuous"===e.type?function(t,e){var i=t[1]-t[0];return e=[(e[0]-t[0])/i,(e[1]-t[0])/i],function(t){return t>=e[0]&&t<=e[1]}}(y,e.option.range):function(e,n,a){var i=e[1]-e[0],o=(n=N(n,function(t){return{interval:[(t.interval[0]-e[0])/i,(t.interval[1]-e[0])/i]}})).length,r=0;return function(t){for(var e=r;e<o;e++){if((i=n[e].interval)[0]<=t&&t<=i[1]){r=e;break}}if(e===o)for(e=r-1;0<=e;e--){var i;if((i=n[e].interval)[0]<=t&&t<=i[1]){r=e;break}}return 0<=e&&e<o&&a[e]}}(y,e.getPieceList(),e.option.selected);s.update(v,p,g,n.color.getNormalizer(),{inRange:n.color.getColorMapper(),outOfRange:o.color.getColorMapper()},x);var _=new Yn({style:{width:p,height:g,x:h,y:c,image:s.canvas},silent:!0});this.group.add(_)},dispose:function(){}});var XS=Qm.extend({type:"series.pictorialBar",dependencies:["grid"],defaultOption:{symbol:"circle",symbolSize:null,symbolRotate:null,symbolPosition:null,symbolOffset:null,symbolMargin:null,symbolRepeat:!1,symbolRepeatDirection:"end",symbolClip:!1,symbolBoundingData:null,symbolPatternSize:400,barGap:"-100%",progressive:0,hoverAnimation:!1},getInitialData:function(t){return t.stack=null,XS.superApply(this,"getInitialData",arguments)}}),YS=["itemStyle","borderWidth"],jS=[{xy:"x",wh:"width",index:0,posDesc:["left","right"]},{xy:"y",wh:"height",index:1,posDesc:["top","bottom"]}],qS=new Lr;hf({type:"pictorialBar",render:function(t,e,i){var r=this.group,s=t.getData(),l=this._data,n=t.coordinateSystem,a=!!n.getBaseAxis().isHorizontal(),o=n.grid.getRect(),u={ecSize:{width:i.getWidth(),height:i.getHeight()},seriesModel:t,coordSys:n,coordSysExtent:[[o.x,o.x+o.width],[o.y,o.y+o.height]],isHorizontal:a,valueDim:jS[+a],categoryDim:jS[1-a]};return s.diff(l).add(function(t){if(s.hasValue(t)){var e=nM(s,t),i=KS(s,t,e,u),n=sM(s,u,i);s.setItemGraphicEl(t,n),r.add(n),dM(n,u,i)}}).update(function(t,e){var i=l.getItemGraphicEl(e);if(s.hasValue(t)){var n=nM(s,t),a=KS(s,t,n,u),o=uM(s,a);i&&o!==i.__pictorialShapeStr&&(r.remove(i),s.setItemGraphicEl(t,null),i=null),i?function(t,e,i){var n=i.animationModel,a=i.dataIndex;js(t.__pictorialBundle,{position:i.bundlePosition.slice()},n,a),i.symbolRepeat?QS(t,e,i,!0):tM(t,e,i,!0);eM(t,i,!0),iM(t,e,i,!0)}(i,u,a):i=sM(s,u,a,!0),s.setItemGraphicEl(t,i),i.__pictorialSymbolMeta=a,r.add(i),dM(i,u,a)}else r.remove(i)}).remove(function(t){var e=l.getItemGraphicEl(t);e&&lM(l,t,e.__pictorialSymbolMeta.animationModel,e)}).execute(),this._data=s,this.group},dispose:et,remove:function(e,t){var i=this.group,n=this._data;e.get("animation")?n&&n.eachItemGraphicEl(function(t){lM(n,t.dataIndex,e,t)}):i.removeAll()}});function KS(t,e,i,n){var a=t.getItemLayout(e),o=i.get("symbolRepeat"),r=i.get("symbolClip"),s=i.get("symbolPosition")||"start",l=(i.get("symbolRotate")||0)*Math.PI/180||0,u=i.get("symbolPatternSize")||2,h=i.isAnimationEnabled(),c={dataIndex:e,layout:a,itemModel:i,symbolType:t.getItemVisual(e,"symbol")||"circle",color:t.getItemVisual(e,"color"),symbolClip:r,symbolRepeat:o,symbolRepeatDirection:i.get("symbolRepeatDirection"),symbolPatternSize:u,rotation:l,animationModel:h?i:null,hoverAnimation:h&&i.get("hoverAnimation"),z2:i.getShallow("z",!0)||0};!function(t,e,i,n,a){var o,r=n.valueDim,s=t.get("symbolBoundingData"),l=n.coordSys.getOtherAxis(n.coordSys.getBaseAxis()),u=l.toGlobalCoord(l.dataToCoord(0)),h=1-+(i[r.wh]<=0);if(k(s)){var c=[$S(l,s[0])-u,$S(l,s[1])-u];c[1]<c[0]&&c.reverse(),o=c[h]}else o=null!=s?$S(l,s)-u:e?n.coordSysExtent[r.index][h]-u:i[r.wh];a.boundingLength=o,e&&(a.repeatCutLength=i[r.wh]);a.pxSign=0<o?1:o<0?-1:0}(i,o,a,n,c),function(t,e,i,n,a,o,r,s,l,u){var h=l.valueDim,c=l.categoryDim,d=Math.abs(i[c.wh]),f=t.getItemVisual(e,"symbolSize");f=k(f)?f.slice():(null==f&&(f="100%"),[f,f]);f[c.index]=xl(f[c.index],d),f[h.index]=xl(f[h.index],n?d:Math.abs(o)),u.symbolSize=f,(u.symbolScale=[f[0]/s,f[1]/s])[h.index]*=(l.isHorizontal?-1:1)*r}(t,e,a,o,0,c.boundingLength,c.pxSign,u,n,c),function(t,e,i,n,a){var o=t.get(YS)||0;o&&(qS.attr({scale:e.slice(),rotation:i}),qS.updateTransform(),o/=qS.getLineScale(),o*=e[n.valueDim.index]);a.valueLineWidth=o}(i,c.symbolScale,l,n,c);var d=c.symbolSize,f=i.get("symbolOffset");return k(f)&&(f=[xl(f[0],d[0]),xl(f[1],d[1])]),function(t,e,i,n,a,o,r,s,l,u,h,c){var d=h.categoryDim,f=h.valueDim,p=c.pxSign,g=Math.max(e[f.index]+s,0),m=g;if(n){var v=Math.abs(l),y=W(t.get("symbolMargin"),"15%")+"",x=!1;y.lastIndexOf("!")===y.length-1&&(x=!0,y=y.slice(0,y.length-1)),y=xl(y,e[f.index]);var _=Math.max(g+2*y,0),w=x?0:2*y,b=El(n),S=b?n:fM((v+w)/_);_=g+2*(y=(v-S*g)/2/(x?S:S-1)),w=x?0:2*y,b||"fixed"===n||(S=u?fM((Math.abs(u)+w)/_):0),m=S*_-w,c.repeatTimes=S,c.symbolMargin=y}var M=p*(m/2),I=c.pathPosition=[];I[d.index]=i[d.wh]/2,I[f.index]="start"===r?M:"end"===r?l-M:l/2,o&&(I[0]+=o[0],I[1]+=o[1]);var A=c.bundlePosition=[];A[d.index]=i[d.xy],A[f.index]=i[f.xy];var T=c.barRectShape=L({},i);T[f.wh]=p*Math.max(Math.abs(i[f.wh]),Math.abs(I[f.index]+M)),T[d.wh]=i[d.wh];var D=c.clipShape={};D[d.xy]=-i[d.xy],D[d.wh]=h.ecSize[d.wh],D[f.xy]=0,D[f.wh]=i[f.wh]}(i,d,a,o,0,f,s,c.valueLineWidth,c.boundingLength,c.repeatCutLength,n,c),c}function $S(t,e){return t.toGlobalCoord(t.dataToCoord(t.scale.parse(e)))}function JS(t){var e=t.symbolPatternSize,i=Jp(t.symbolType,-e/2,-e/2,e,e,t.color);return i.attr({culling:!0}),"image"!==i.type&&i.setStyle({strokeNoScale:!0}),i}function QS(t,e,a,i){var n=t.__pictorialBundle,o=a.symbolSize,r=a.valueLineWidth,s=a.pathPosition,l=e.valueDim,u=a.repeatTimes||0,h=0,c=o[e.valueDim.index]+r+2*a.symbolMargin;for(hM(t,function(t){t.__pictorialAnimationIndex=h,t.__pictorialRepeatTimes=u,h<u?cM(t,null,p(h),a,i):cM(t,null,{scale:[0,0]},a,i,function(){n.remove(t)}),rM(t,a),h++});h<u;h++){var d=JS(a);d.__pictorialAnimationIndex=h,d.__pictorialRepeatTimes=u,n.add(d);var f=p(h);cM(d,{position:f.position,scale:[0,0]},{scale:f.scale,rotation:f.rotation},a,i),d.on("mouseover",g).on("mouseout",m),rM(d,a)}function p(t){var e=s.slice(),i=a.pxSign,n=t;return("start"===a.symbolRepeatDirection?0<i:i<0)&&(n=u-1-t),e[l.index]=c*(n-u/2+.5)+s[l.index],{position:e,scale:a.symbolScale.slice(),rotation:a.rotation}}function g(){hM(t,function(t){t.trigger("emphasis")})}function m(){hM(t,function(t){t.trigger("normal")})}}function tM(t,e,i,n){var a=t.__pictorialBundle,o=t.__pictorialMainPath;o?cM(o,null,{position:i.pathPosition.slice(),scale:i.symbolScale.slice(),rotation:i.rotation},i,n):(o=t.__pictorialMainPath=JS(i),a.add(o),cM(o,{position:i.pathPosition.slice(),scale:[0,0],rotation:i.rotation},{scale:i.symbolScale.slice()},i,n),o.on("mouseover",function(){this.trigger("emphasis")}).on("mouseout",function(){this.trigger("normal")})),rM(o,i)}function eM(t,e,i){var n=L({},e.barRectShape),a=t.__pictorialBarRect;a?cM(a,null,{shape:n},e,i):(a=t.__pictorialBarRect=new Hr({z2:2,shape:n,silent:!0,style:{stroke:"transparent",fill:"transparent",lineWidth:0}}),t.add(a))}function iM(t,e,i,n){if(i.symbolClip){var a=t.__pictorialClipPath,o=L({},i.clipShape),r=e.valueDim,s=i.animationModel,l=i.dataIndex;if(a)js(a,{shape:o},s,l);else{o[r.wh]=0,a=new Hr({shape:o}),t.__pictorialBundle.setClipPath(a),t.__pictorialClipPath=a;var u={};u[r.wh]=i.clipShape[r.wh],ol[n?"updateProps":"initProps"](a,{shape:u},s,l)}}}function nM(t,e){var i=t.getItemModel(e);return i.getAnimationDelayParams=aM,i.isAnimationEnabled=oM,i}function aM(t){return{index:t.__pictorialAnimationIndex,count:t.__pictorialRepeatTimes}}function oM(){return this.parentModel.isAnimationEnabled()&&!!this.getShallow("animation")}function rM(t,e){t.off("emphasis").off("normal");var i=e.symbolScale.slice();e.hoverAnimation&&t.on("emphasis",function(){this.animateTo({scale:[1.1*i[0],1.1*i[1]]},400,"elasticOut")}).on("normal",function(){this.animateTo({scale:i.slice()},400,"elasticOut")})}function sM(t,e,i,n){var a=new Si,o=new Si;return a.add(o),(a.__pictorialBundle=o).attr("position",i.bundlePosition.slice()),i.symbolRepeat?QS(a,e,i):tM(a,0,i),eM(a,i,n),iM(a,e,i,n),a.__pictorialShapeStr=uM(t,i),a.__pictorialSymbolMeta=i,a}function lM(t,e,i,n){var a=n.__pictorialBarRect;a&&(a.style.text=null);var o=[];hM(n,function(t){o.push(t)}),n.__pictorialMainPath&&o.push(n.__pictorialMainPath),n.__pictorialClipPath&&(i=null),E(o,function(t){js(t,{scale:[0,0]},i,e,function(){n.parent&&n.parent.remove(n)})}),t.setItemGraphicEl(e,null)}function uM(t,e){return[t.getItemVisual(e.dataIndex,"symbol")||"none",!!e.symbolRepeat,!!e.symbolClip].join(":")}function hM(e,i,n){E(e.__pictorialBundle.children(),function(t){t!==e.__pictorialBarRect&&i.call(n,t)})}function cM(t,e,i,n,a,o){e&&t.attr(e),n.symbolClip&&!a?i&&t.attr(i):i&&ol[a?"updateProps":"initProps"](t,i,n.animationModel,n.dataIndex,o)}function dM(t,e,i){var n=i.color,a=i.dataIndex,o=i.itemModel,r=o.getModel("itemStyle").getItemStyle(["color"]),s=o.getModel("emphasis.itemStyle").getItemStyle(),l=o.getShallow("cursor");hM(t,function(t){t.setColor(n),t.setStyle(C({fill:n,opacity:i.opacity},r)),Os(t,s),l&&(t.cursor=l),t.z2=i.z2});var u={},h=(e.valueDim.posDesc[+(0<i.boundingLength)],t.__pictorialBarRect);tv(h.style,u,o,n,e.seriesModel,a),Os(h,u)}function fM(t){var e=Math.round(t);return Math.abs(t-e)<1e-4?e:Math.ceil(t)}nf(A(pp,"pictorialBar")),af(rm("pictorialBar","roundRect"));function pM(t,e,i,n,a){vg.call(this,t,e,i),this.type=n||"value",this.position=a||"bottom",this.orient=null}function gM(t,e,i){this.dimension="single",this.dimensions=["single"],this._axis=null,this._rect,this._init(t,e,i),this.model=t}function mM(t,e){e=e||{};var i=t.coordinateSystem,n=t.axis,a={},o=n.position,r=n.orient,s=i.getRect(),l=[s.x,s.x+s.width,s.y,s.y+s.height],u={horizontal:{top:l[2],bottom:l[3]},vertical:{left:l[0],right:l[1]}};a.position=["vertical"===r?u.vertical[o]:l[0],"horizontal"===r?u.horizontal[o]:l[3]];a.rotation=Math.PI/2*{horizontal:0,vertical:1}[r];a.labelDirection=a.tickDirection=a.nameDirection={top:-1,bottom:1,right:1,left:-1}[o],t.get("axisTick.inside")&&(a.tickDirection=-a.tickDirection),W(e.labelInside,t.get("axisLabel.inside"))&&(a.labelDirection=-a.labelDirection);var h=e.rotate;return null==h&&(h=t.get("axisLabel.rotate")),a.labelRotation="top"===o?-h:h,a.z2=1,a}pM.prototype={constructor:pM,model:null,isHorizontal:function(){var t=this.position;return"top"===t||"bottom"===t},pointToData:function(t,e){return this.coordinateSystem.pointToData(t,e)[0]},toGlobalCoord:null,toLocalCoord:null},w(pM,vg),Hu.register("single",{create:function(n,a){var o=[];return n.eachComponent("singleAxis",function(t,e){var i=new gM(t,n,a);i.name="single_"+e,i.resize(t,a),t.coordinateSystem=i,o.push(i)}),n.eachSeries(function(t){if("singleAxis"===t.get("coordinateSystem")){var e=n.queryComponents({mainType:"singleAxis",index:t.get("singleAxisIndex"),id:t.get("singleAxisId")})[0];t.coordinateSystem=e&&e.coordinateSystem}}),o},dimensions:(gM.prototype={type:"singleAxis",axisPointerEnabled:!0,constructor:gM,_init:function(t,e,i){var n=this.dimension,a=new pM(n,Bp(t),[0,0],t.get("type"),t.get("position")),o="category"===a.type;a.onBand=o&&t.get("boundaryGap"),a.inverse=t.get("inverse"),a.orient=t.get("orient"),(t.axis=a).model=t,(a.coordinateSystem=this)._axis=a},update:function(t,e){t.eachSeries(function(t){if(t.coordinateSystem===this){var e=t.getData();E(e.mapDimension(this.dimension,!0),function(t){this._axis.scale.unionExtentFromData(e,t)},this),zp(this._axis.scale,this._axis.model)}},this)},resize:function(t,e){this._rect=au({left:t.get("left"),top:t.get("top"),right:t.get("right"),bottom:t.get("bottom"),width:t.get("width"),height:t.get("height")},{width:e.getWidth(),height:e.getHeight()}),this._adjustAxis()},getRect:function(){return this._rect},_adjustAxis:function(){var t=this._rect,e=this._axis,i=e.isHorizontal(),n=i?[0,t.width]:[0,t.height],a=e.reverse?1:0;e.setExtent(n[a],n[1-a]),this._updateAxisTransform(e,i?t.x:t.y)},_updateAxisTransform:function(t,e){var i=t.getExtent(),n=i[0]+i[1],a=t.isHorizontal();t.toGlobalCoord=a?function(t){return t+e}:function(t){return n-t+e},t.toLocalCoord=a?function(t){return t-e}:function(t){return n-t+e}},getAxis:function(){return this._axis},getBaseAxis:function(){return this._axis},getAxes:function(){return[this._axis]},getTooltipAxes:function(){return{baseAxes:[this.getAxis()]}},containPoint:function(t){var e=this.getRect(),i=this.getAxis();return"horizontal"===i.orient?i.contain(i.toLocalCoord(t[0]))&&t[1]>=e.y&&t[1]<=e.y+e.height:i.contain(i.toLocalCoord(t[1]))&&t[0]>=e.y&&t[0]<=e.y+e.height},pointToData:function(t){var e=this.getAxis();return[e.coordToData(e.toLocalCoord(t["horizontal"===e.orient?0:1]))]},dataToPoint:function(t){var e=this.getAxis(),i=this.getRect(),n=[],a="horizontal"===e.orient?0:1;return t instanceof Array&&(t=t[0]),n[a]=e.toGlobalCoord(e.dataToCoord(+t)),n[1-a]=0==a?i.y+i.height/2:i.x+i.width/2,n}}).dimensions});var vM=["axisLine","axisTickLabel","axisName"],yM="splitLine",xM=Um.extend({type:"singleAxis",axisPointerClass:"SingleAxisPointer",render:function(t,e,i,n){var a=this.group;a.removeAll();var o=mM(t),r=new Cm(t,o);E(vM,r.add,r),a.add(r.getGroup()),t.get(yM+".show")&&this["_"+yM](t),xM.superCall(this,"render",t,e,i,n)},_splitLine:function(t){var e=t.axis;if(!e.scale.isBlank()){var i=t.getModel("splitLine"),n=i.getModel("lineStyle"),a=n.get("width"),o=n.get("color");o=o instanceof Array?o:[o];for(var r=t.coordinateSystem.getRect(),s=e.isHorizontal(),l=[],u=0,h=e.getTicksCoords({tickModel:i}),c=[],d=[],f=0;f<h.length;++f){var p=e.toGlobalCoord(h[f].coord);s?(c[0]=p,c[1]=r.y,d[0]=p,d[1]=r.y+r.height):(c[0]=r.x,c[1]=p,d[0]=r.x+r.width,d[1]=p);var g=u++%o.length;l[g]=l[g]||[],l[g].push(new Ur({subPixelOptimize:!0,shape:{x1:c[0],y1:c[1],x2:d[0],y2:d[1]},style:{lineWidth:a},silent:!0}))}for(f=0;f<l.length;++f)this.group.add(ys(l[f],{style:{stroke:o[f%o.length],lineDash:n.getLineDash(a),lineWidth:a},silent:!0}))}}}),_M=fu.extend({type:"singleAxis",layoutMode:"box",axis:null,coordinateSystem:null,getCoordSysModel:function(){return this}});m(_M.prototype,Hp),mm("single",_M,function(t,e){return e.type||(e.data?"category":"value")},{left:"5%",top:"5%",right:"5%",bottom:"5%",type:"value",position:"bottom",orient:"horizontal",axisLine:{show:!0,lineStyle:{width:1,type:"solid"}},tooltip:{show:!0},axisTick:{show:!0,length:6,lineStyle:{width:1}},axisLabel:{show:!0,interval:"auto"},splitLine:{show:!0,lineStyle:{type:"dashed",opacity:.2}}});function wM(t,e){var i,n=[],a=t.seriesIndex;if(null==a||!(i=e.getSeriesByIndex(a)))return{point:[]};var o=i.getData(),r=Ca(o,t);if(null==r||r<0||k(r))return{point:[]};var s=o.getItemGraphicEl(r),l=i.coordinateSystem;if(i.getTooltipPosition)n=i.getTooltipPosition(r)||[];else if(l&&l.dataToPoint)n=l.dataToPoint(o.getValues(N(l.dimensions,function(t){return o.mapDimension(t)}),r,!0))||[];else if(s){var u=s.getBoundingRect().clone();u.applyTransform(s.transform),n=[u.x+u.width/2,u.y+u.height/2]}return{point:n,el:s}}var bM=E,SM=A,MM=La();function IM(t,e,i,n,a){var o=t.axis;if(!o.scale.isBlank()&&o.containData(e))if(t.involveSeries){var r=function(l,t){var u=t.axis,h=u.dim,c=l,d=[],f=Number.MAX_VALUE,p=-1;return bM(t.seriesModels,function(e,t){var i,n,a=e.getData().mapDimension(h,!0);if(e.getAxisTooltipData){var o=e.getAxisTooltipData(a,l,u);n=o.dataIndices,i=o.nestestValue}else{if(!(n=e.getData().indicesOfNearest(a[0],l,"category"===u.type?.5:null)).length)return;i=e.getData().get(a[0],n[0])}if(null!=i&&isFinite(i)){var r=l-i,s=Math.abs(r);s<=f&&((s<f||0<=r&&p<0)&&(f=s,p=r,c=i,d.length=0),bM(n,function(t){d.push({seriesIndex:e.seriesIndex,dataIndexInside:t,dataIndex:e.getData().getRawIndex(t)})}))}}),{payloadBatch:d,snapToValue:c}}(e,t),s=r.payloadBatch,l=r.snapToValue;s[0]&&null==a.seriesIndex&&L(a,s[0]),!n&&t.snap&&o.containData(l)&&null!=l&&(e=l),i.showPointer(t,e,s,a),i.showTooltip(t,r,l)}else i.showPointer(t,e)}function AM(t,e,i,n){t[e.key]={value:i,payloadBatch:n}}function TM(t,e,i,n){var a=i.payloadBatch,o=e.axis,r=o.model,s=e.axisPointerModel;if(e.triggerTooltip&&a.length){var l=e.coordSys.model,u=Zm(l),h=t.map[u];h||(h=t.map[u]={coordSysId:l.id,coordSysIndex:l.componentIndex,coordSysType:l.type,coordSysMainType:l.mainType,dataByAxis:[]},t.list.push(h)),h.dataByAxis.push({axisDim:o.dim,axisIndex:r.componentIndex,axisType:r.type,axisId:r.id,value:n,valueLabelOpt:{precision:s.get("label.precision"),formatter:s.get("label.formatter")},seriesDataIndices:a.slice()})}}function DM(t){var e=t.axis.model,i={},n=i.axisDim=t.axis.dim;return i.axisIndex=i[n+"AxisIndex"]=e.componentIndex,i.axisName=i[n+"AxisName"]=e.name,i.axisId=i[n+"AxisId"]=e.id,i}function CM(t){return!t||null==t[0]||isNaN(t[0])||null==t[1]||isNaN(t[1])}sf({type:"axisPointer",coordSysAxesInfo:null,defaultOption:{show:"auto",triggerOn:null,zlevel:0,z:50,type:"line",snap:!1,triggerTooltip:!0,value:null,status:null,link:[],animation:null,animationDurationUpdate:200,lineStyle:{color:"#aaa",width:1,type:"solid"},shadowStyle:{color:"rgba(150,150,150,0.3)"},label:{show:!0,formatter:null,precision:"auto",margin:3,color:"#fff",padding:[5,7,5,7],backgroundColor:"auto",borderColor:null,borderWidth:0,shadowBlur:3,shadowColor:"#aaa"},handle:{show:!1,icon:"M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7v-1.2h6.6z M13.3,22H6.7v-1.2h6.6z M13.3,19.6H6.7v-1.2h6.6z",size:45,margin:50,color:"#333",shadowBlur:3,shadowColor:"#aaa",shadowOffsetX:0,shadowOffsetY:2,throttle:40}}});var LM=La(),kM=E;function PM(t,e,i){if(!v.node){var n=e.getZr();LM(n).records||(LM(n).records={}),function(a,o){if(LM(a).initialized)return;function t(t,n){a.on(t,function(e){var i=function(i){var n={showTip:[],hideTip:[]},a=function(t){var e=n[t.type];e?e.push(t):(t.dispatchAction=a,i.dispatchAction(t))};return{dispatchAction:a,pendings:n}}(o);kM(LM(a).records,function(t){t&&n(t,e,i.dispatchAction)}),function(t,e){var i,n=t.showTip.length,a=t.hideTip.length;n?i=t.showTip[n-1]:a&&(i=t.hideTip[a-1]);i&&(i.dispatchAction=null,e.dispatchAction(i))}(i.pendings,o)})}LM(a).initialized=!0,t("click",A(OM,"click")),t("mousemove",A(OM,"mousemove")),t("globalout",NM)}(n,e),(LM(n).records[t]||(LM(n).records[t]={})).handler=i}}function NM(t,e,i){t.handler("leave",null,i)}function OM(t,e,i,n){e.handler(t,i,n)}function EM(t,e){if(!v.node){var i=e.getZr();(LM(i).records||{})[t]&&(LM(i).records[t]=null)}}var RM=lf({type:"axisPointer",render:function(t,e,i){var n=e.getComponent("tooltip"),a=t.get("triggerOn")||n&&n.get("triggerOn")||"mousemove|click";PM("axisPointer",i,function(t,e,i){"none"!==a&&("leave"===t||0<=a.indexOf(t))&&i({type:"updateAxisPointer",currTrigger:t,x:e&&e.offsetX,y:e&&e.offsetY})})},remove:function(t,e){EM(e.getZr(),"axisPointer"),RM.superApply(this._model,"remove",arguments)},dispose:function(t,e){EM("axisPointer",e),RM.superApply(this._model,"dispose",arguments)}}),zM=La(),BM=D,VM=T;function GM(){}function FM(t,e,i,n){!function i(n,t){{if(z(n)&&z(t)){var a=!0;return E(t,function(t,e){a=a&&i(n[e],t)}),!!a}return n===t}}(zM(i).lastProp,n)&&(zM(i).lastProp=n,e?js(i,n,t):(i.stopAnimation(),i.attr(n)))}function WM(t,e){t[e.get("label.show")?"show":"hide"]()}function HM(t){return{position:t.position.slice(),rotation:t.rotation||0}}function ZM(t,e,i){var n=e.get("z"),a=e.get("zlevel");t&&t.traverse(function(t){"group"!==t.type&&(null!=n&&(t.z=n),null!=a&&(t.zlevel=a),t.silent=i)})}function UM(t){var e,i=t.get("type"),n=t.getModel(i+"Style");return"line"===i?(e=n.getLineStyle()).fill=null:"shadow"===i&&((e=n.getAreaStyle()).stroke=null),e}function XM(t,e,i,n,a){var o=YM(i.get("value"),e.axis,e.ecModel,i.get("seriesDataIndices"),{precision:i.get("label.precision"),formatter:i.get("label.formatter")}),r=i.getModel("label"),s=Vl(r.get("padding")||0),l=r.getFont(),u=un(o,l),h=a.position,c=u.width+s[1]+s[3],d=u.height+s[0]+s[2],f=a.align;"right"===f&&(h[0]-=c),"center"===f&&(h[0]-=c/2);var p=a.verticalAlign;"bottom"===p&&(h[1]-=d),"middle"===p&&(h[1]-=d/2),function(t,e,i,n){var a=n.getWidth(),o=n.getHeight();t[0]=Math.min(t[0]+e,a)-e,t[1]=Math.min(t[1]+i,o)-i,t[0]=Math.max(t[0],0),t[1]=Math.max(t[1],0)}(h,c,d,n);var g=r.get("backgroundColor");g&&"auto"!==g||(g=e.get("axisLine.lineStyle.color")),t.label={shape:{x:0,y:0,width:c,height:d,r:r.get("borderRadius")},position:h.slice(),style:{text:o,textFont:l,textFill:r.getTextColor(),textPosition:"inside",textPadding:s,fill:g,stroke:r.get("borderColor")||"transparent",lineWidth:r.get("borderWidth")||0,shadowBlur:r.get("shadowBlur"),shadowColor:r.get("shadowColor"),shadowOffsetX:r.get("shadowOffsetX"),shadowOffsetY:r.get("shadowOffsetY")},z2:10}}function YM(t,e,a,i,n){t=e.scale.parse(t);var o=e.scale.getLabel(t,{precision:n.precision}),r=n.formatter;if(r){var s={value:Gp(e,t),axisDimension:e.dim,axisIndex:e.index,seriesData:[]};E(i,function(t){var e=a.getSeriesByIndex(t.seriesIndex),i=t.dataIndexInside,n=e&&e.getDataParams(i);n&&s.seriesData.push(n)}),R(r)?o=r.replace("{value}",o):O(r)&&(o=r(s))}return o}function jM(t,e,i){var n=Qt();return ae(n,n,i.rotation),ne(n,n,i.position),$s([t.dataToCoord(e),(i.labelOffset||0)+(i.labelDirection||1)*(i.labelMargin||0)],n)}function qM(t,e,i,n,a,o){var r=Cm.innerTextLayout(i.rotation,0,i.labelDirection);i.labelMargin=a.get("label.margin"),XM(e,n,a,o,{position:jM(n.axis,t,i),align:r.textAlign,verticalAlign:r.textVerticalAlign})}function KM(t,e,i){return{x1:t[i=i||0],y1:t[1-i],x2:e[i],y2:e[1-i]}}function $M(t,e,i){return{x:t[i=i||0],y:t[1-i],width:e[i],height:e[1-i]}}function JM(t,e,i,n,a,o){return{cx:t,cy:e,r0:i,r:n,startAngle:a,endAngle:o,clockwise:!0}}Ga((GM.prototype={_group:null,_lastGraphicKey:null,_handle:null,_dragging:!1,_lastValue:null,_lastStatus:null,_payloadInfo:null,animationThreshold:15,render:function(t,e,i,n){var a=e.get("value"),o=e.get("status");if(this._axisModel=t,this._axisPointerModel=e,this._api=i,n||this._lastValue!==a||this._lastStatus!==o){this._lastValue=a,this._lastStatus=o;var r=this._group,s=this._handle;if(!o||"hide"===o)return r&&r.hide(),void(s&&s.hide());r&&r.show(),s&&s.show();var l={};this.makeElOption(l,a,t,e,i);var u=l.graphicKey;u!==this._lastGraphicKey&&this.clear(i),this._lastGraphicKey=u;var h=this._moveAnimation=this.determineAnimation(t,e);if(r){var c=A(FM,e,h);this.updatePointerEl(r,l,c,e),this.updateLabelEl(r,l,c,e)}else r=this._group=new Si,this.createPointerEl(r,l,t,e),this.createLabelEl(r,l,t,e),i.getZr().add(r);ZM(r,e,!0),this._renderHandle(a)}},remove:function(t){this.clear(t)},dispose:function(t){this.clear(t)},determineAnimation:function(t,e){var i=e.get("animation"),n=t.axis,a="category"===n.type,o=e.get("snap");if(!o&&!a)return!1;if("auto"!==i&&null!=i)return!0===i;var r=this.animationThreshold;if(a&&n.getBandWidth()>r)return!0;if(o){var s=Wm(t).seriesDataCount,l=n.getExtent();return Math.abs(l[0]-l[1])/s>r}return!1},makeElOption:function(t,e,i,n,a){},createPointerEl:function(t,e,i,n){var a=e.pointer;if(a){var o=zM(t).pointerEl=new ol[a.type](BM(e.pointer));t.add(o)}},createLabelEl:function(t,e,i,n){if(e.label){var a=zM(t).labelEl=new Hr(BM(e.label));t.add(a),WM(a,n)}},updatePointerEl:function(t,e,i){var n=zM(t).pointerEl;n&&e.pointer&&(n.setStyle(e.pointer.style),i(n,{shape:e.pointer.shape}))},updateLabelEl:function(t,e,i,n){var a=zM(t).labelEl;a&&(a.setStyle(e.label.style),i(a,{shape:e.label.shape,position:e.label.position}),WM(a,n))},_renderHandle:function(t){if(!this._dragging&&this.updateHandleTransform){var e,i=this._axisPointerModel,n=this._api.getZr(),a=this._handle,o=i.getModel("handle"),r=i.get("status");if(!o.get("show")||!r||"hide"===r)return a&&n.remove(a),void(this._handle=null);this._handle||(e=!0,a=this._handle=el(o.get("icon"),{cursor:"move",draggable:!0,onmousemove:function(t){Ft(t.event)},onmousedown:VM(this._onHandleDragMove,this,0,0),drift:VM(this._onHandleDragMove,this),ondragend:VM(this._onHandleDragEnd,this)}),n.add(a)),ZM(a,i,!1);a.setStyle(o.getItemStyle(null,["color","borderColor","borderWidth","opacity","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY"]));var s=o.get("size");k(s)||(s=[s,s]),a.attr("scale",[s[0]/2,s[1]/2]),dc(this,"_doDispatchAxisPointer",o.get("throttle")||0,"fixRate"),this._moveHandleToValue(t,e)}},_moveHandleToValue:function(t,e){FM(this._axisPointerModel,!e&&this._moveAnimation,this._handle,HM(this.getHandleTransform(t,this._axisModel,this._axisPointerModel)))},_onHandleDragMove:function(t,e){var i=this._handle;if(i){this._dragging=!0;var n=this.updateHandleTransform(HM(i),[t,e],this._axisModel,this._axisPointerModel);this._payloadInfo=n,i.stopAnimation(),i.attr(HM(n)),zM(i).lastProp=null,this._doDispatchAxisPointer()}},_doDispatchAxisPointer:function(){if(this._handle){var t=this._payloadInfo,e=this._axisModel;this._api.dispatchAction({type:"updateAxisPointer",x:t.cursorPoint[0],y:t.cursorPoint[1],tooltipOption:t.tooltipOption,axesInfo:[{axisDim:e.axis.dim,axisIndex:e.componentIndex}]})}},_onHandleDragEnd:function(t){if(this._dragging=!1,this._handle){var e=this._axisPointerModel.get("value");this._moveHandleToValue(e),this._api.dispatchAction({type:"hideTip"})}},getHandleTransform:null,updateHandleTransform:null,clear:function(t){this._lastValue=null,this._lastStatus=null;var e=t.getZr(),i=this._group,n=this._handle;e&&i&&(this._lastGraphicKey=null,i&&e.remove(i),n&&e.remove(n),this._group=null,this._handle=null,this._payloadInfo=null)},doClear:function(){},buildLabel:function(t,e,i){return{x:t[i=i||0],y:t[1-i],width:e[i],height:e[1-i]}}}).constructor=GM);var QM=GM.extend({makeElOption:function(t,e,i,n,a){var o=i.axis,r=o.grid,s=n.get("type"),l=tI(r,o).getOtherAxis(o).getGlobalExtent(),u=o.toGlobalCoord(o.dataToCoord(e,!0));if(s&&"none"!==s){var h=UM(n),c=eI[s](o,u,l);c.style=h,t.graphicKey=c.type,t.pointer=c}qM(e,t,qm(r.model,i),i,n,a)},getHandleTransform:function(t,e,i){var n=qm(e.axis.grid.model,e,{labelInside:!1});return n.labelMargin=i.get("handle.margin"),{position:jM(e.axis,t,n),rotation:n.rotation+(n.labelDirection<0?Math.PI:0)}},updateHandleTransform:function(t,e,i,n){var a=i.axis,o=a.grid,r=a.getGlobalExtent(!0),s=tI(o,a).getOtherAxis(a).getGlobalExtent(),l="x"===a.dim?0:1,u=t.position;u[l]+=e[l],u[l]=Math.min(r[1],u[l]),u[l]=Math.max(r[0],u[l]);var h=(s[1]+s[0])/2,c=[h,h];c[l]=u[l];return{position:u,rotation:t.rotation,cursorPoint:c,tooltipOption:[{verticalAlign:"middle"},{align:"center"}][l]}}});function tI(t,e){var i={};return i[e.dim+"AxisIndex"]=e.index,t.getCartesian(i)}var eI={line:function(t,e,i){return{type:"Line",subPixelOptimize:!0,shape:KM([e,i[0]],[e,i[1]],iI(t))}},shadow:function(t,e,i){var n=Math.max(1,t.getBandWidth()),a=i[1]-i[0];return{type:"Rect",shape:$M([e-n/2,i[0]],[n,a],iI(t))}}};function iI(t){return"x"===t.dim?0:1}Um.registerAxisPointerClass("CartesianAxisPointer",QM),Jd(function(t){if(t){t.axisPointer&&0!==t.axisPointer.length||(t.axisPointer={});var e=t.axisPointer.link;e&&!k(e)&&(t.axisPointer.link=[e])}}),Qd(cd.PROCESSOR.STATISTIC,function(t,e){t.getComponent("axisPointer").coordSysAxesInfo=Gm(t,e)}),tf({type:"updateAxisPointer",event:"updateAxisPointer",update:":updateAxisPointer"},function(t,e,i){var n=t.currTrigger,r=[t.x,t.y],a=t,o=t.dispatchAction||T(i.dispatchAction,i),s=e.getComponent("axisPointer").coordSysAxesInfo;if(s){CM(r)&&(r=wM({seriesIndex:a.seriesIndex,dataIndex:a.dataIndex},e).point);var l=CM(r),u=a.axesInfo,h=s.axesInfo,c="leave"===n||CM(r),d={},f={},p={list:[],map:{}},g={showPointer:SM(AM,f),showTooltip:SM(TM,p)};bM(s.coordSysMap,function(t,e){var o=l||t.containPoint(r);bM(s.coordSysAxesInfo[e],function(t,e){var i=t.axis,n=function(t,e){for(var i=0;i<(t||[]).length;i++){var n=t[i];if(e.axis.dim===n.axisDim&&e.axis.model.componentIndex===n.axisIndex)return n}}(u,t);if(!c&&o&&(!u||n)){var a=n&&n.value;null!=a||l||(a=i.pointToData(r)),null!=a&&IM(t,a,g,!1,d)}})});var m={};return bM(h,function(a,t){var o=a.linkGroup;o&&!f[t]&&bM(o.axesInfo,function(t,e){var i=f[e];if(t!==a&&i){var n=i.value;o.mapper&&(n=a.axis.scale.parse(o.mapper(n,DM(t),DM(a)))),m[a.key]=n}})}),bM(m,function(t,e){IM(h[e],t,g,!0,d)}),function(a,t,e){var o=e.axesInfo=[];bM(t,function(t,e){var i=t.axisPointerModel.option,n=a[e];n?(t.useHandle||(i.status="show"),i.value=n.value,i.seriesDataIndices=(n.payloadBatch||[]).slice()):t.useHandle||(i.status="hide"),"show"===i.status&&o.push({axisDim:t.axis.dim,axisIndex:t.axis.model.componentIndex,value:i.value})})}(f,h,d),function(t,e,i,n){if(CM(e)||!t.list.length)return n({type:"hideTip"});var a=((t.list[0].dataByAxis[0]||{}).seriesDataIndices||[])[0]||{};n({type:"showTip",escapeConnect:!0,x:e[0],y:e[1],tooltipOption:i.tooltipOption,position:i.position,dataIndexInside:a.dataIndexInside,dataIndex:a.dataIndex,seriesIndex:a.seriesIndex,dataByCoordSys:t.list})}(p,r,t,o),function(t,e,i){var n=i.getZr(),a="axisPointerLastHighlights",o=MM(n)[a]||{},r=MM(n)[a]={};bM(t,function(t,e){var i=t.axisPointerModel.option;"show"===i.status&&bM(i.seriesDataIndices,function(t){var e=t.seriesIndex+" | "+t.dataIndex;r[e]=t})});var s=[],l=[];E(o,function(t,e){r[e]||l.push(t)}),E(r,function(t,e){o[e]||s.push(t)}),l.length&&i.dispatchAction({type:"downplay",escapeConnect:!0,batch:l}),s.length&&i.dispatchAction({type:"highlight",escapeConnect:!0,batch:s})}(h,0,i),d}});var nI=["x","y"],aI=["width","height"],oI=GM.extend({makeElOption:function(t,e,i,n,a){var o=i.axis,r=o.coordinateSystem,s=lI(r,1-sI(o)),l=r.dataToPoint(e)[0],u=n.get("type");if(u&&"none"!==u){var h=UM(n),c=rI[u](o,l,s);c.style=h,t.graphicKey=c.type,t.pointer=c}qM(e,t,mM(i),i,n,a)},getHandleTransform:function(t,e,i){var n=mM(e,{labelInside:!1});return n.labelMargin=i.get("handle.margin"),{position:jM(e.axis,t,n),rotation:n.rotation+(n.labelDirection<0?Math.PI:0)}},updateHandleTransform:function(t,e,i,n){var a=i.axis,o=a.coordinateSystem,r=sI(a),s=lI(o,r),l=t.position;l[r]+=e[r],l[r]=Math.min(s[1],l[r]),l[r]=Math.max(s[0],l[r]);var u=lI(o,1-r),h=(u[1]+u[0])/2,c=[h,h];return c[r]=l[r],{position:l,rotation:t.rotation,cursorPoint:c,tooltipOption:{verticalAlign:"middle"}}}}),rI={line:function(t,e,i){return{type:"Line",subPixelOptimize:!0,shape:KM([e,i[0]],[e,i[1]],sI(t))}},shadow:function(t,e,i){var n=t.getBandWidth(),a=i[1]-i[0];return{type:"Rect",shape:$M([e-n/2,i[0]],[n,a],sI(t))}}};function sI(t){return t.isHorizontal()?0:1}function lI(t,e){var i=t.getRect();return[i[nI[e]],i[nI[e]]+i[aI[e]]]}Um.registerAxisPointerClass("SingleAxisPointer",oI),lf({type:"single"});var uI=Wh.extend({type:"series.themeRiver",dependencies:["singleAxis"],nameMap:null,init:function(t){uI.superApply(this,"init",arguments),this.legendDataProvider=function(){return this.getRawData()}},fixData:function(t){var e=t.length,i=Ra(t,function(t){return t[2]}),n=[];i.buckets.each(function(t,e){n.push({name:e,dataList:t})});for(var a=n.length,o=-1,r=-1,s=0;s<a;++s){var l=n[s].dataList.length;o<l&&(o=l,r=s)}for(var u=0;u<a;++u)if(u!==r)for(var h=n[u].name,c=0;c<o;++c){for(var d=n[r].dataList[c][0],f=n[u].dataList.length,p=-1,g=0;g<f;++g){if(n[u].dataList[g][0]===d){p=g;break}}-1===p&&(t[e]=[],t[e][0]=d,t[e][1]=0,t[e][2]=h,e++)}return t},getInitialData:function(t,e){for(var i=e.queryComponents({mainType:"singleAxis",index:this.get("singleAxisIndex"),id:this.get("singleAxisId")})[0].get("type"),n=M(t.data,function(t){return void 0!==t[2]}),a=this.fixData(n||[]),o=[],r=this.nameMap=Q(),s=0,l=0;l<a.length;++l)o.push(a[l][2]),r.get(a[l][2])||(r.set(a[l][2],s),s++);var u=Wf(a,{coordDimensions:["single"],dimensionsDefine:[{name:"time",type:mf(i)},{name:"value",type:"float"},{name:"name",type:"ordinal"}],encodeDefine:{single:0,value:1,itemName:2}}),h=new Tf(u,this);return h.initData(a),h},getLayerSeries:function(){for(var i=this.getData(),t=i.count(),e=[],n=0;n<t;++n)e[n]=n;var a=i.mapDimension("single"),o=Ra(e,function(t){return i.get("name",t)}),r=[];return o.buckets.each(function(t,e){t.sort(function(t,e){return i.get(a,t)-i.get(a,e)}),r.push({name:e,indices:t})}),r},getAxisTooltipData:function(t,e,i){k(t)||(t=t?[t]:[]);for(var n,a=this.getData(),o=this.getLayerSeries(),r=[],s=o.length,l=0;l<s;++l){for(var u=Number.MAX_VALUE,h=-1,c=o[l].indices.length,d=0;d<c;++d){var f=a.get(t[0],o[l].indices[d]),p=Math.abs(f-e);p<=u&&(n=f,u=p,h=o[l].indices[d])}r.push(h)}return{dataIndices:r,nestestValue:n}},formatTooltip:function(t){var e=this.getData(),i=e.getName(t),n=e.get(e.mapDimension("value"),t);return!isNaN(n)&&null!=n||(n="-"),Wl(i+" : "+n)},defaultOption:{zlevel:0,z:2,coordinateSystem:"singleAxis",boundaryGap:["10%","10%"],singleAxisIndex:0,animationEasing:"linear",label:{margin:4,show:!0,position:"left",color:"#000",fontSize:11},emphasis:{label:{show:!0}}}});hf({type:"themeRiver",init:function(){this._layers=[]},render:function(b,t,e){var S=b.getData(),M=this.group,I=b.getLayerSeries(),i=S.getLayout("layoutInfo"),n=i.rect,a=i.boundaryGap;function o(t){return t.name}M.attr("position",[0,n.y+a[0]]);var r=new df(this._layersSeries||[],I,o,o),A={};function s(t,e,i){var n=this._layers;if("remove"!==t){for(var a,o,r,s=[],l=[],u=I[e].indices,h=0;h<u.length;h++){var c=S.getItemLayout(u[h]),d=c.x,f=c.y0,p=c.y;s.push([d,f]),l.push([d,f+p]),a=S.getItemVisual(u[h],"color")}var g=S.getItemLayout(u[0]),m=S.getItemModel(u[h-1]),v=m.getModel("label"),y=v.get("margin");if("add"===t){var x=A[e]=new Si;o=new $g({shape:{points:s,stackedOnPoints:l,smooth:.4,stackedOnSmooth:.4,smoothConstraint:!1},z2:0}),r=new Dr({style:{x:g.x-y,y:g.y0+g.y/2}}),x.add(o),x.add(r),M.add(x),o.setClipPath(function(t,e,i){var n=new Hr({shape:{x:t.x-10,y:t.y-10,width:0,height:t.height+20}});return qs(n,{shape:{width:t.width+20,height:t.height+20}},e,i),n}(o.getBoundingRect(),b,function(){o.removeClipPath()}))}else{x=n[i];o=x.childAt(0),r=x.childAt(1),M.add(x),A[e]=x,js(o,{shape:{points:s,stackedOnPoints:l}},b),js(r,{style:{x:g.x-y,y:g.y0+g.y/2}},b)}var _=m.getModel("emphasis.itemStyle"),w=m.getModel("itemStyle");Gs(r.style,v,{text:v.get("show")?b.getFormattedLabel(u[h-1],"normal")||S.getName(u[h-1]):null,textVerticalAlign:"middle"}),o.setStyle(L({fill:a},w.getItemStyle(["color"]))),Os(o,_.getItemStyle())}else M.remove(n[e])}r.add(T(s,this,"add")).update(T(s,this,"update")).remove(T(s,this,"remove")).execute(),this._layersSeries=I,this._layers=A},dispose:function(){}});function hI(i,t,e){if(i.count())for(var n,a=t.coordinateSystem,o=t.getLayerSeries(),r=i.mapDimension("single"),s=i.mapDimension("value"),l=N(o,function(t){return N(t.indices,function(t){var e=a.dataToPoint(i.get(r,t));return e[1]=i.get(s,t),e})}),u=function(t){for(var e=t.length,i=t[0].length,n=[],a=[],o=0,r={},s=0;s<i;++s){for(var l=0,u=0;l<e;++l)u+=t[l][s][1];o<u&&(o=u),n.push(u)}for(var h=0;h<i;++h)a[h]=(o-n[h])/2;for(var c=o=0;c<i;++c){var d=n[c]+a[c];o<d&&(o=d)}return r.y0=a,r.max=o,r}(l),h=u.y0,c=e/u.max,d=o.length,f=o[0].indices.length,p=0;p<f;++p){n=h[p]*c,i.setItemLayout(o[0].indices[p],{layerIndex:0,x:l[0][p][0],y0:n,y:l[0][p][1]*c});for(var g=1;g<d;++g)n+=l[g-1][p][1]*c,i.setItemLayout(o[g].indices[p],{layerIndex:g,x:l[g][p][0],y0:n,y:l[g][p][1]*c})}}nf(function(t,e){t.eachSeriesByType("themeRiver",function(t){var e=t.getData(),i=t.coordinateSystem,n={},a=i.getRect();n.rect=a;var o=t.get("boundaryGap"),r=i.getAxis();(n.boundaryGap=o,"horizontal"===r.orient)?(o[0]=xl(o[0],a.height),o[1]=xl(o[1],a.height),hI(e,t,a.height-o[0]-o[1])):(o[0]=xl(o[0],a.width),o[1]=xl(o[1],a.width),hI(e,t,a.width-o[0]-o[1]));e.setLayout("layoutInfo",n)})}),af(function(t){t.eachSeriesByType("themeRiver",function(a){var o=a.getData(),r=a.getRawData(),s=a.get("color"),l=Q();o.each(function(t){l.set(o.getRawIndex(t),t)}),r.each(function(t){var e=r.getName(t),i=s[(a.nameMap.get(e)-1)%s.length];r.setItemVisual(t,"color",i);var n=l.get(t);null!=n&&o.setItemVisual(n,"color",i)})})}),Qd(kv("themeRiver")),Wh.extend({type:"series.sunburst",_viewRoot:null,getInitialData:function(t,e){var i={name:t.name,children:t.data};!function i(t){var n=0;E(t.children,function(t){i(t);var e=t.value;k(e)&&(e=e[0]),n+=e});var e=t.value;k(e)&&(e=e[0]);null!=e&&!isNaN(e)||(e=n);e<0&&(e=0);k(t.value)?t.value[0]=e:t.value=e}(i);var n=t.levels||[],a={};return a.levels=n,Ky.createTree(i,this,a).data},optionUpdated:function(){this.resetViewRoot()},getDataParams:function(t){var e=Wh.prototype.getDataParams.apply(this,arguments),i=this.getData().tree.getNodeByDataIndex(t);return e.treePathInfo=gx(i,this),e},defaultOption:{zlevel:0,z:2,center:["50%","50%"],radius:[0,"75%"],clockwise:!0,startAngle:90,minAngle:0,percentPrecision:2,stillShowZeroSum:!0,highlightPolicy:"descendant",nodeClick:"rootToNode",renderLabelForZeroData:!1,label:{rotate:"radial",show:!0,opacity:1,align:"center",position:"inside",distance:5,silent:!0,emphasis:{}},itemStyle:{borderWidth:1,borderColor:"white",borderType:"solid",shadowBlur:0,shadowColor:"rgba(0, 0, 0, 0.2)",shadowOffsetX:0,shadowOffsetY:0,opacity:1,emphasis:{},highlight:{opacity:1},downplay:{opacity:.9}},animationType:"expansion",animationDuration:1e3,animationDurationUpdate:500,animationEasing:"cubicOut",data:[],levels:[],sort:"desc"},getViewRoot:function(){return this._viewRoot},resetViewRoot:function(t){t?this._viewRoot=t:t=this._viewRoot;var e=this.getRawData().tree.root;t&&(t===e||e.contains(t))||(this._viewRoot=e)}});var cI="none",dI="ancestor",fI="self",pI=2,gI=4;function mI(t,e,i){Si.call(this);var n=new Pr({z2:pI});n.seriesIndex=e.seriesIndex;var a=new Dr({z2:gI,silent:t.getModel("label").get("silent")});function o(){a.ignore=a.hoverIgnore}function r(){a.ignore=a.normalIgnore}this.add(n),this.add(a),this.updateData(!0,t,"normal",e,i),this.on("emphasis",o).on("normal",r).on("mouseover",o).on("mouseout",r)}var vI=mI.prototype;vI.updateData=function(t,e,i,n,a){(this.node=e).piece=this,n=n||this._seriesModel,a=a||this._ecModel;var o=this.childAt(0);o.dataIndex=e.dataIndex;var r=e.getModel(),s=e.getLayout(),l=L({},s);l.label=null;var u=function(t,e,i){var n=t.getVisual("color"),a=t.getVisual("visualMeta");a&&0!==a.length||(n=null);var o=t.getModel("itemStyle").get("color");{if(o)return o;if(n)return n;if(0===t.depth)return i.option.color[0];var r=i.option.color.length;o=i.option.color[function(t){var e=t;for(;1<e.depth;)e=e.parentNode;return _(t.getAncestors()[0].children,e)}(t)%r]}return o}(e,0,a);!function(t,e,i){e.getData().setItemVisual(t.dataIndex,"color",i)}(e,n,u);var h,c=r.getModel("itemStyle").getItemStyle();"normal"===i?h=c:h=m(r.getModel(i+".itemStyle").getItemStyle(),c);h=C({lineJoin:"bevel",fill:h.fill||u},h),t?(o.setShape(l),o.shape.r=s.r0,js(o,{shape:{r:s.r}},n,e.dataIndex),o.useStyle(h)):"object"==typeof h.fill&&h.fill.type||"object"==typeof o.style.fill&&o.style.fill.type?(js(o,{shape:l},n),o.useStyle(h)):js(o,{shape:l,style:h},n),this._updateLabel(n,u,i);var d=r.getShallow("cursor");if(d&&o.attr("cursor",d),t){var f=n.getShallow("highlightPolicy");this._initEvents(o,e,n,f)}this._seriesModel=n||this._seriesModel,this._ecModel=a||this._ecModel},vI.onEmphasis=function(e){var i=this;this.node.hostTree.root.eachNode(function(t){t.piece&&(i.node===t?t.piece.updateData(!1,t,"emphasis"):!function(t,e,i){return i!==cI&&(i===fI?t===e:i===dI?t===e||t.isAncestorOf(e):t===e||t.isDescendantOf(e))}(t,i.node,e)?e!==cI&&t.piece.childAt(0).trigger("downplay"):t.piece.childAt(0).trigger("highlight"))})},vI.onNormal=function(){this.node.hostTree.root.eachNode(function(t){t.piece&&t.piece.updateData(!1,t,"normal")})},vI.onHighlight=function(){this.updateData(!1,this.node,"highlight")},vI.onDownplay=function(){this.updateData(!1,this.node,"downplay")},vI._updateLabel=function(t,e,i){var n=this.node.getModel(),a=n.getModel("label"),o="normal"===i||"emphasis"===i?a:n.getModel(i+".label"),r=n.getModel("emphasis.label"),s=W(t.getFormattedLabel(this.node.dataIndex,i,null,null,"label"),this.node.name);!1===S("show")&&(s="");var l=this.node.getLayout(),u=o.get("minAngle");null==u&&(u=a.get("minAngle")),u=u/180*Math.PI;var h=l.endAngle-l.startAngle;null!=u&&Math.abs(h)<u&&(s="");var c=this.childAt(1);Bs(c.style,c.hoverStyle||{},a,r,{defaultText:o.getShallow("show")?s:null,autoColor:e,useInsideStyle:!0});var d,f=(l.startAngle+l.endAngle)/2,p=Math.cos(f),g=Math.sin(f),m=S("position"),v=S("distance")||0,y=S("align");"outside"===m?(d=l.r+v,y=f>Math.PI/2?"right":"left"):y&&"center"!==y?"left"===y?(d=l.r0+v,f>Math.PI/2&&(y="right")):"right"===y&&(d=l.r-v,f>Math.PI/2&&(y="left")):(d=(l.r+l.r0)/2,y="center"),c.attr("style",{text:s,textAlign:y,textVerticalAlign:S("verticalAlign")||"middle",opacity:S("opacity")});var x=d*p+l.cx,_=d*g+l.cy;c.attr("position",[x,_]);var w=S("rotate"),b=0;function S(t){var e=o.get(t);return null==e?a.get(t):e}"radial"===w?(b=-f)<-Math.PI/2&&(b+=Math.PI):"tangential"===w?(b=Math.PI/2-f)>Math.PI/2?b-=Math.PI:b<-Math.PI/2&&(b+=Math.PI):"number"==typeof w&&(b=w*Math.PI/180),c.attr("rotation",b)},vI._initEvents=function(t,e,i,n){t.off("mouseover").off("mouseout").off("emphasis").off("normal");function a(){r.onEmphasis(n)}function o(){r.onNormal()}var r=this;i.isAnimationEnabled()&&t.on("mouseover",a).on("mouseout",o).on("emphasis",a).on("normal",o).on("downplay",function(){r.onDownplay()}).on("highlight",function(){r.onHighlight()})},w(mI,Si);ec.extend({type:"sunburst",init:function(){},render:function(a,o,t,e){var n=this;this.seriesModel=a,this.api=t,this.ecModel=o;var r=a.getData(),s=r.tree.root,i=a.getViewRoot(),l=this.group,u=a.get("renderLabelForZeroData"),h=[];i.eachNode(function(t){h.push(t)});var c=this._oldChildren||[];if(function(i,n){if(0===i.length&&0===n.length)return;function t(t){return t.getId()}function e(t,e){!function(t,e){u||!t||t.getValue()||(t=null);if(t!==s&&e!==s)if(e&&e.piece)t?(e.piece.updateData(!1,t,"normal",a,o),r.setItemGraphicEl(t.dataIndex,e.piece)):function(t){if(!t)return;t.piece&&(l.remove(t.piece),t.piece=null)}(e);else if(t){var i=new mI(t,a,o);l.add(i),r.setItemGraphicEl(t.dataIndex,i)}}(null==t?null:i[t],null==e?null:n[e])}new df(n,i,t,t).add(e).update(e).remove(A(e,null)).execute()}(h,c),function(t,e){if(0<e.depth){n.virtualPiece?n.virtualPiece.updateData(!1,t,"normal",a,o):(n.virtualPiece=new mI(t,a,o),l.add(n.virtualPiece)),e.piece._onclickEvent&&e.piece.off("click",e.piece._onclickEvent);var i=function(t){n._rootToNode(e.parentNode)};e.piece._onclickEvent=i,n.virtualPiece.on("click",i)}else n.virtualPiece&&(l.remove(n.virtualPiece),n.virtualPiece=null)}(s,i),e&&e.highlight&&e.highlight.piece){var d=a.getShallow("highlightPolicy");e.highlight.piece.onEmphasis(d)}else if(e&&e.unhighlight){var f=this.virtualPiece;!f&&s.children.length&&(f=s.children[0].piece),f&&f.onNormal()}this._initEvents(),this._oldChildren=h},dispose:function(){},_initEvents:function(){function t(o){var r=!1;s.seriesModel.getViewRoot().eachNode(function(t){if(!r&&t.piece&&t.piece.childAt(0)===o.target){var e=t.getModel().get("nodeClick");if("rootToNode"===e)s._rootToNode(t);else if("link"===e){var i=t.getModel(),n=i.get("link");if(n){var a=i.get("target",!0)||"_blank";window.open(n,a)}}r=!0}})}var s=this;this.group._onclickEvent&&this.group.off("click",this.group._onclickEvent),this.group.on("click",t),this.group._onclickEvent=t},_rootToNode:function(t){t!==this.seriesModel.getViewRoot()&&this.api.dispatchAction({type:"sunburstRootToNode",from:this.uid,seriesId:this.seriesModel.id,targetNode:t})},containPoint:function(t,e){var i=e.getData().getItemLayout(0);if(i){var n=t[0]-i.cx,a=t[1]-i.cy,o=Math.sqrt(n*n+a*a);return o<=i.r&&o>=i.r0}}});var yI="sunburstRootToNode";tf({type:yI,update:"updateView"},function(a,t){t.eachComponent({mainType:"series",subType:"sunburst",query:a},function(t,e){var i=dx(a,[yI],t);if(i){var n=t.getViewRoot();n&&(a.direction=px(n,i.node)?"rollUp":"drillDown"),t.resetViewRoot(i.node)}})});var xI="sunburstHighlight";tf({type:xI,update:"updateView"},function(n,t){t.eachComponent({mainType:"series",subType:"sunburst",query:n},function(t,e){var i=dx(n,[xI],t);i&&(n.highlight=i.node)})});tf({type:"sunburstUnhighlight",update:"updateView"},function(i,t){t.eachComponent({mainType:"series",subType:"sunburst",query:i},function(t,e){i.unhighlight=!0})});var _I=Math.PI/180;function wI(t,e){if("function"==typeof e)return t.sort(e);var n="asc"===e;return t.sort(function(t,e){var i=(t.getValue()-e.getValue())*(n?1:-1);return 0==i?(t.dataIndex-e.dataIndex)*(n?-1:1):i})}function bI(o,r){return r=r||[0,0],N(["x","y"],function(t,e){var i=this.getAxis(t),n=r[e],a=o[e]/2;return"category"===i.type?i.getBandWidth():Math.abs(i.dataToCoord(n-a)-i.dataToCoord(n+a))},this)}af(A(Av,"sunburst")),nf(A(function(t,e,C,i){e.eachSeriesByType(t,function(t){var e=t.get("center"),i=t.get("radius");k(i)||(i=[0,i]),k(e)||(e=[e,e]);var n=C.getWidth(),a=C.getHeight(),h=Math.min(n,a),c=xl(e[0],n),d=xl(e[1],a),f=xl(i[0],h/2),o=xl(i[1],h/2),r=-t.get("startAngle")*_I,p=t.get("minAngle")*_I,g=t.getData().tree.root,s=t.getViewRoot(),m=s.depth,l=t.get("sort");null!=l&&!function e(t,i){var n=t.children||[];t.children=wI(n,i);n.length&&E(t.children,function(t){e(t,i)})}(s,l);var u=0;E(s.children,function(t){isNaN(t.getValue())||u++});var v=s.getValue(),y=Math.PI/(v||u)*2,x=0<s.depth,_=s.height-(x?-1:1),w=(o-f)/(_||1),b=t.get("clockwise"),S=t.get("stillShowZeroSum"),M=b?1:-1,I=function(t,e){if(t){var i=e;if(t!==g){var n=t.getValue(),a=0===v&&S?y:n*y;a<p&&(a=p),i=e+M*a;var o=t.depth-m-(x?-1:1),r=f+w*o,s=f+w*(1+o),l=t.getModel();null!=l.get("r0")&&(r=xl(l.get("r0"),h/2)),null!=l.get("r")&&(s=xl(l.get("r"),h/2)),t.setLayout({angle:a,startAngle:e,endAngle:i,clockwise:b,cx:c,cy:d,r0:r,r:s})}if(t.children&&t.children.length){var u=0;E(t.children,function(t){u+=I(t,e+u)})}return i-e}};if(x){var A=f,T=f+w,D=2*Math.PI;g.setLayout({angle:D,startAngle:r,endAngle:r+D,clockwise:b,cx:c,cy:d,r0:A,r:T})}I(s,r)})},"sunburst")),Qd(A(kv,"sunburst"));function SI(o,r){return r=r||[0,0],N([0,1],function(t){var e=r[t],i=o[t]/2,n=[],a=[];return n[t]=e-i,a[t]=e+i,n[1-t]=a[1-t]=r[1-t],Math.abs(this.dataToPoint(n)[t]-this.dataToPoint(a)[t])},this)}function MI(t,e){var i=this.getAxis(),n=e instanceof Array?e[0]:e,a=(t instanceof Array?t[0]:t)/2;return"category"===i.type?i.getBandWidth():Math.abs(i.dataToCoord(n-a)-i.dataToCoord(n+a))}function II(s,l){return N(["Radius","Angle"],function(t,e){var i=this["get"+t+"Axis"](),n=l[e],a=s[e]/2,o="dataTo"+t,r="category"===i.type?i.getBandWidth():Math.abs(i[o](n-a)-i[o](n+a));return"Angle"===t&&(r=r*Math.PI/180),r},this)}var AI=rs,TI=["itemStyle"],DI=["emphasis","itemStyle"],CI=["label"],LI=["emphasis","label"],kI="e\0\0",PI={cartesian2d:function(e){var t=e.grid.getRect();return{coordSys:{type:"cartesian2d",x:t.x,y:t.y,width:t.width,height:t.height},api:{coord:function(t){return e.dataToPoint(t)},size:T(bI,e)}}},geo:function(e){var t=e.getBoundingRect();return{coordSys:{type:"geo",x:t.x,y:t.y,width:t.width,height:t.height,zoom:e.getZoom()},api:{coord:function(t){return e.dataToPoint(t)},size:T(SI,e)}}},singleAxis:function(e){var t=e.getRect();return{coordSys:{type:"singleAxis",x:t.x,y:t.y,width:t.width,height:t.height},api:{coord:function(t){return e.dataToPoint(t)},size:T(MI,e)}}},polar:function(a){var o=a.getRadiusAxis(),r=a.getAngleAxis(),t=o.getExtent();return t[0]>t[1]&&t.reverse(),{coordSys:{type:"polar",cx:a.cx,cy:a.cy,r:t[1],r0:t[0]},api:{coord:T(function(t){var e=o.dataToRadius(t[0]),i=r.dataToAngle(t[1]),n=a.coordToPoint([e,i]);return n.push(e,i*Math.PI/180),n}),size:T(II,a)}}},calendar:function(i){var t=i.getRect(),e=i.getRangeInfo();return{coordSys:{type:"calendar",x:t.x,y:t.y,width:t.width,height:t.height,cellWidth:i.getCellWidth(),cellHeight:i.getCellHeight(),rangeInfo:{start:e.start,end:e.end,weeks:e.weeks,dayCount:e.allDay}},api:{coord:function(t,e){return i.dataToPoint(t,e)}}}}};function NI(t,e,i,n,a){null==i[t]||a||(e[t]=i[t],i[t]=n[t])}function OI(o,r,e,t){var i=o.get("renderItem"),n=o.coordinateSystem,a={};n&&(a=n.prepareCustoms?n.prepareCustoms():PI[n.type](n));var s,l,u,h,c,d=C({getWidth:t.getWidth,getHeight:t.getHeight,getZr:t.getZr,getDevicePixelRatio:t.getDevicePixelRatio,value:function(t,e){return null==e&&(e=s),r.get(r.getDimension(t||0),e)},style:function(t,e){null==e&&(e=s),g(e);var i=l.getModel(TI).getItemStyle();null!=c&&(i.fill=c);var n=r.getItemVisual(e,"opacity");null!=n&&(i.opacity=n);var a=t?VI(t,u):u;return Gs(i,a,null,{autoColor:c,isRectText:!0}),i.text=a.getShallow("show")?H(o.getFormattedLabel(e,"normal"),bg(r,e)):null,t&&GI(i,t),i},styleEmphasis:function(t,e){null==e&&(e=s),g(e);var i=l.getModel(DI).getItemStyle(),n=t?VI(t,h):h;return Gs(i,n,null,{isRectText:!0},!0),i.text=n.getShallow("show")?Z(o.getFormattedLabel(e,"emphasis"),o.getFormattedLabel(e,"normal"),bg(r,e)):null,t&&GI(i,t),i},visual:function(t,e){return null==e&&(e=s),r.getItemVisual(e,t)},barLayout:function(t){if(n.getBaseAxis){return function(t){var e=[],i=t.axis;if("category"===i.type){for(var n=i.getBandWidth(),a=0;a<t.count;a++)e.push(C({bandWidth:n,axisKey:"axis0",stackId:rp+a},t));var o=dp(e),r=[];for(a=0;a<t.count;a++){var s=o.axis0[rp+a];s.offsetCenter=s.offset+s.width/2,r.push(s)}return r}}(C({axis:n.getBaseAxis()},t))}},currentSeriesIndices:function(){return e.getCurrentSeriesIndices()},font:function(t){return Xs(t,e)}},a.api||{}),f={context:{},seriesId:o.id,seriesName:o.name,seriesIndex:o.seriesIndex,coordSys:a.coordSys,dataInsideLength:r.count(),encode:function(a){var o={};return E(a.dimensions,function(t,e){var i=a.getDimensionInfo(t);if(!i.isExtraCoord){var n=i.coordDim;(o[n]=o[n]||[])[i.coordDimIndex]=e}}),o}(o.getData())},p=!0;return function(t,e){return s=t,p=!0,i&&i(C({dataIndexInside:t,dataIndex:r.getRawIndex(t),actionType:e?e.type:null},f),d)};function g(t){null==t&&(t=s),p&&(l=r.getItemModel(t),u=l.getModel(CI),h=l.getModel(LI),c=r.getItemVisual(t,"color"),p=!1)}}function EI(t,e,i,n,a,o){return(t=RI(t,e,i,n,a,o,!0))&&o.setItemGraphicEl(e,t),t}function RI(t,e,i,n,a,o,r){var s=!i,l=(i=i||{}).type,u=i.shape,h=i.style;if(t&&(s||null!=l&&l!==t.__customGraphicType||"path"===l&&function(t){return t&&(t.hasOwnProperty("pathData")||t.hasOwnProperty("d"))}(u)&&WI(u)!==t.__customPathData||"image"===l&&HI(h,"image")&&h.image!==t.__customImagePath||"text"===l&&HI(u,"text")&&h.text!==t.__customText)&&(a.remove(t),t=null),!s){var c=!t;return function(e,t,i,n,a,o,r){var s={},l=i.style||{};if(i.shape&&(s.shape=D(i.shape)),i.position&&(s.position=i.position.slice()),i.scale&&(s.scale=i.scale.slice()),i.origin&&(s.origin=i.origin.slice()),i.rotation&&(s.rotation=i.rotation),"image"===e.type&&i.style){var u=s.style={};E(["x","y","width","height"],function(t){NI(t,u,l,e.style,o)})}if("text"===e.type&&i.style){u=s.style={};E(["x","y"],function(t){NI(t,u,l,e.style,o)}),!l.hasOwnProperty("textFill")&&l.fill&&(l.textFill=l.fill),!l.hasOwnProperty("textStroke")&&l.stroke&&(l.textStroke=l.stroke)}if("group"!==e.type&&(e.useStyle(l),o)){e.style.opacity=0;var h=l.opacity;null==h&&(h=1),qs(e,{style:{opacity:h}},n,t)}o?e.attr(s):js(e,s,n,t),i.hasOwnProperty("z2")&&e.attr("z2",i.z2||0),i.hasOwnProperty("silent")&&e.attr("silent",i.silent),i.hasOwnProperty("invisible")&&e.attr("invisible",i.invisible),i.hasOwnProperty("ignore")&&e.attr("ignore",i.ignore),i.hasOwnProperty("info")&&e.attr("info",i.info);var c=i.styleEmphasis;Ds(e,c),r&&Es(e,!1!==c)}(t=t||function(t){var e,i=t.type;if("path"===i){var n=t.shape,a=null!=n.width&&null!=n.height?{x:n.x||0,y:n.y||0,width:n.width,height:n.height}:null,o=WI(n);(e=gs(o,null,a,n.layout||"center")).__customPathData=o}else if("image"===i)(e=new Yn({})).__customImagePath=t.style.image;else if("text"===i)(e=new Dr({})).__customText=t.style.text;else if("group"===i)e=new Si;else{if("compoundPath"===i)throw new Error('"compoundPath" is not supported yet.');e=new(ps(i))}return e.__customGraphicType=i,e.name=t.name,e}(i),e,i,n,0,c,r),"group"===l&&function(t,e,i,n,a){var o=i.children,r=o?o.length:0,s=i.$mergeChildren,l="byName"===s||i.diffChildrenByName,u=!1===s;if(!r&&!l&&!u)return;if(l)return function(t){new df(t.oldChildren,t.newChildren,zI,zI,t).add(BI).update(BI).remove(FI).execute()}({oldChildren:t.children()||[],newChildren:o||[],dataIndex:e,animatableModel:n,group:t,data:a});u&&t.removeAll();for(var h=0;h<r;h++)o[h]&&RI(t.childAt(h),e,o[h],n,t,a)}(t,e,i,n,o),a.add(t),t}}function zI(t,e){var i=t&&t.name;return null!=i?i:kI+e}function BI(t,e){var i=this.context,n=null!=t?i.newChildren[t]:null;RI(null!=e?i.oldChildren[e]:null,i.dataIndex,n,i.animatableModel,i.group,i.data)}function VI(i,t){var n=new dl({},t);return E(AI,function(t,e){i.hasOwnProperty(t)&&(n.option[e]=i[t])}),n}function GI(t,e){for(var i in e)!e.hasOwnProperty(i)&&AI.hasOwnProperty(i)||(t[i]=e[i])}function FI(t){var e=this.context,i=e.oldChildren[t];i&&e.group.remove(i)}function WI(t){return t&&(t.pathData||t.d)}function HI(t,e){return t&&t.hasOwnProperty(e)}function ZI(t){return t.get("stack")||"__ec_stack_"+t.seriesIndex}function UI(t,e){return e.dim+t.model.componentIndex}function XI(t,e){vg.call(this,"radius",t,e),this.type="category"}Wh.extend({type:"series.custom",dependencies:["grid","polar","geo","singleAxis","calendar"],defaultOption:{coordinateSystem:"cartesian2d",zlevel:0,z:2,legendHoverLink:!0,useTransform:!0,clip:!1},getInitialData:function(t,e){return Xf(this.getSource(),this)},getDataParams:function(t,e,i){var n=Wh.prototype.getDataParams.apply(this,arguments);return i&&(n.info=i.info),n}}),ec.extend({type:"custom",_data:null,render:function(i,t,e,n){var a=this._data,o=i.getData(),r=this.group,s=OI(i,o,t,e);o.diff(a).add(function(t){EI(null,t,s(t,n),i,r,o)}).update(function(t,e){EI(a.getItemGraphicEl(e),t,s(t,n),i,r,o)}).remove(function(t){var e=a.getItemGraphicEl(t);e&&r.remove(e)}).execute();var l=i.get("clip",!0)?tm(i.coordinateSystem,!1,i):null;l?r.setClipPath(l):r.removeClipPath(),this._data=o},incrementalPrepareRender:function(t,e,i){this.group.removeAll(),this._data=null},incrementalRender:function(t,e,i,n,a){var o=e.getData(),r=OI(e,o,i,n);function s(t){t.isGroup||(t.incremental=!0,t.useHoverLayer=!0)}for(var l=t.start;l<t.end;l++){EI(null,l,r(l,a),e,this.group,o).traverse(s)}},dispose:et,filterForExposedEvent:function(t,e,i,n){var a=e.element;if(null==a||i.name===a)return!0;for(;(i=i.parent)&&i!==this.group;)if(i.name===a)return!0;return!1}}),XI.prototype={constructor:XI,pointToData:function(t,e){return this.polar.pointToData(t,e)["radius"===this.dim?0:1]},dataToRadius:vg.prototype.dataToCoord,radiusToData:vg.prototype.coordToData},w(XI,vg);var YI=La();function jI(t,e){e=e||[0,360],vg.call(this,"angle",t,e),this.type="category"}jI.prototype={constructor:jI,pointToData:function(t,e){return this.polar.pointToData(t,e)["radius"===this.dim?0:1]},dataToAngle:vg.prototype.dataToCoord,angleToData:vg.prototype.coordToData,calculateCategoryInterval:function(){var t=this.getLabelModel(),e=this.scale,i=e.getExtent(),n=e.count();if(i[1]-i[0]<1)return 0;var a=i[0],o=this.dataToCoord(a+1)-this.dataToCoord(a),r=Math.abs(o),s=un(a,t.getFont(),"center","top"),l=Math.max(s.height,7)/r;isNaN(l)&&(l=1/0);var u=Math.max(0,Math.floor(l)),h=YI(this.model),c=h.lastAutoInterval,d=h.lastTickCount;return null!=c&&null!=d&&Math.abs(c-u)<=1&&Math.abs(d-n)<=1&&u<c?u=c:(h.lastTickCount=n,h.lastAutoInterval=u),u}},w(jI,vg);function qI(t){this.name=t||"",this.cx=0,this.cy=0,this._radiusAxis=new XI,this._angleAxis=new jI,this._radiusAxis.polar=this._angleAxis.polar=this}qI.prototype={type:"polar",axisPointerEnabled:!0,constructor:qI,dimensions:["radius","angle"],model:null,containPoint:function(t){var e=this.pointToCoord(t);return this._radiusAxis.contain(e[0])&&this._angleAxis.contain(e[1])},containData:function(t){return this._radiusAxis.containData(t[0])&&this._angleAxis.containData(t[1])},getAxis:function(t){return this["_"+t+"Axis"]},getAxes:function(){return[this._radiusAxis,this._angleAxis]},getAxesByScale:function(t){var e=[],i=this._angleAxis,n=this._radiusAxis;return i.scale.type===t&&e.push(i),n.scale.type===t&&e.push(n),e},getAngleAxis:function(){return this._angleAxis},getRadiusAxis:function(){return this._radiusAxis},getOtherAxis:function(t){var e=this._angleAxis;return t===e?this._radiusAxis:e},getBaseAxis:function(){return this.getAxesByScale("ordinal")[0]||this.getAxesByScale("time")[0]||this.getAngleAxis()},getTooltipAxes:function(t){var e=null!=t&&"auto"!==t?this.getAxis(t):this.getBaseAxis();return{baseAxes:[e],otherAxes:[this.getOtherAxis(e)]}},dataToPoint:function(t,e){return this.coordToPoint([this._radiusAxis.dataToRadius(t[0],e),this._angleAxis.dataToAngle(t[1],e)])},pointToData:function(t,e){var i=this.pointToCoord(t);return[this._radiusAxis.radiusToData(i[0],e),this._angleAxis.angleToData(i[1],e)]},pointToCoord:function(t){var e=t[0]-this.cx,i=t[1]-this.cy,n=this.getAngleAxis(),a=n.getExtent(),o=Math.min(a[0],a[1]),r=Math.max(a[0],a[1]);n.inverse?o=r-360:r=o+360;var s=Math.sqrt(e*e+i*i);e/=s,i/=s;for(var l=Math.atan2(-i,e)/Math.PI*180,u=l<o?1:-1;l<o||r<l;)l+=360*u;return[s,l]},coordToPoint:function(t){var e=t[0],i=t[1]/180*Math.PI;return[Math.cos(i)*e+this.cx,-Math.sin(i)*e+this.cy]},getArea:function(){var t=this.getAngleAxis(),e=this.getRadiusAxis().getExtent().slice();e[0]>e[1]&&e.reverse();var i=t.getExtent(),n=Math.PI/180;return{cx:this.cx,cy:this.cy,r0:e[0],r:e[1],startAngle:-i[0]*n,endAngle:-i[1]*n,clockwise:t.inverse,contain:function(t,e){var i=t-this.cx,n=e-this.cy,a=i*i+n*n,o=this.r,r=this.r0;return a<=o*o&&r*r<=a}}}};var KI=fu.extend({type:"polarAxis",axis:null,getCoordSysModel:function(){return this.ecModel.queryComponents({mainType:"polar",index:this.option.polarIndex,id:this.option.polarId})[0]}});m(KI.prototype,Hp);var $I={splitNumber:5};function JI(t,e){return e.type||(e.data?"category":"value")}function QI(t,e){var i=this,n=i.getAngleAxis(),a=i.getRadiusAxis();if(n.scale.setExtent(1/0,-1/0),a.scale.setExtent(1/0,-1/0),t.eachSeries(function(t){if(t.coordinateSystem===i){var e=t.getData();E(e.mapDimension("radius",!0),function(t){a.scale.unionExtentFromData(e,Uf(e,t))}),E(e.mapDimension("angle",!0),function(t){n.scale.unionExtentFromData(e,Uf(e,t))})}}),zp(n.scale,n.model),zp(a.scale,a.model),"category"===n.type&&!n.onBand){var o=n.getExtent(),r=360/n.scale.count();n.inverse?o[1]+=r:o[1]-=r,n.setExtent(o[0],o[1])}}function tA(t,e){if(t.type=e.get("type"),t.scale=Bp(e),t.onBand=e.get("boundaryGap")&&"category"===t.type,t.inverse=e.get("inverse"),"angleAxis"===e.mainType){t.inverse^=e.get("clockwise");var i=e.get("startAngle");t.setExtent(i,i+(t.inverse?-360:360))}(e.axis=t).model=e}mm("angle",KI,JI,{startAngle:90,clockwise:!0,splitNumber:12,axisLabel:{rotate:!1}}),mm("radius",KI,JI,$I),sf({type:"polar",dependencies:["polarAxis","angleAxis"],coordinateSystem:null,findAxisModel:function(t){var e;return this.ecModel.eachComponent(t,function(t){t.getCoordSysModel()===this&&(e=t)},this),e},defaultOption:{zlevel:0,z:0,center:["50%","50%"],radius:"80%"}}),Hu.register("polar",{dimensions:qI.prototype.dimensions,create:function(i,s){var l=[];return i.eachComponent("polar",function(t,e){var i=new qI(e);i.update=QI;var n=i.getRadiusAxis(),a=i.getAngleAxis(),o=t.findAxisModel("radiusAxis"),r=t.findAxisModel("angleAxis");tA(n,o),tA(a,r),function(t,e,i){var n=e.get("center"),a=i.getWidth(),o=i.getHeight();t.cx=xl(n[0],a),t.cy=xl(n[1],o);var r=t.getRadiusAxis(),s=Math.min(a,o)/2,l=e.get("radius");null==l?l=[0,"100%"]:k(l)||(l=[0,l]),l=[xl(l[0],s),xl(l[1],s)],r.inverse?r.setExtent(l[1],l[0]):r.setExtent(l[0],l[1])}(i,t,s),l.push(i),(t.coordinateSystem=i).model=t}),i.eachSeries(function(t){if("polar"===t.get("coordinateSystem")){var e=i.queryComponents({mainType:"polar",index:t.get("polarIndex"),id:t.get("polarId")})[0];t.coordinateSystem=e.coordinateSystem}}),l}});var eA=["axisLine","axisLabel","axisTick","splitLine","splitArea"];function iA(t,e,i){e[1]>e[0]&&(e=e.slice().reverse());var n=t.coordToPoint([e[0],i]),a=t.coordToPoint([e[1],i]);return{x1:n[0],y1:n[1],x2:a[0],y2:a[1]}}function nA(t){return t.getRadiusAxis().inverse?0:1}function aA(t){var e=t[0],i=t[t.length-1];e&&i&&Math.abs(Math.abs(e.coord-i.coord)-360)<1e-4&&t.pop()}Um.extend({type:"angleAxis",axisPointerClass:"PolarAxisPointer",render:function(e,t){if(this.group.removeAll(),e.get("show")){var i=e.axis,n=i.polar,a=n.getRadiusAxis().getExtent(),o=i.getTicksCoords(),r=N(i.getViewLabels(),function(t){return(t=D(t)).coord=i.dataToCoord(t.tickValue),t});aA(r),aA(o),E(eA,function(t){!e.get(t+".show")||i.scale.isBlank()&&"axisLine"!==t||this["_"+t](e,n,o,a,r)},this)}},_axisLine:function(t,e,i,n){var a,o=t.getModel("axisLine.lineStyle"),r=nA(e),s=r?0:1;(a=0===n[s]?new Lr({shape:{cx:e.cx,cy:e.cy,r:n[r]},style:o.getLineStyle(),z2:1,silent:!0}):new Nr({shape:{cx:e.cx,cy:e.cy,r:n[r],r0:n[s]},style:o.getLineStyle(),z2:1,silent:!0})).style.fill=null,this.group.add(a)},_axisTick:function(t,e,i,n){var a=t.getModel("axisTick"),o=(a.get("inside")?-1:1)*a.get("length"),r=n[nA(e)],s=N(i,function(t){return new Ur({shape:iA(e,[r,r+o],t.coord)})});this.group.add(ys(s,{style:C(a.getModel("lineStyle").getLineStyle(),{stroke:t.get("axisLine.lineStyle.color")})}))},_axisLabel:function(c,d,t,f,e){var p=c.getCategories(!0),g=c.getModel("axisLabel"),m=g.get("margin"),v=c.get("triggerEvent");E(e,function(t,e){var i=g,n=t.tickValue,a=f[nA(d)],o=d.coordToPoint([a+m,t.coord]),r=d.cx,s=d.cy,l=Math.abs(o[0]-r)/a<.3?"center":o[0]>r?"left":"right",u=Math.abs(o[1]-s)/a<.3?"middle":o[1]>s?"top":"bottom";p&&p[n]&&p[n].textStyle&&(i=new dl(p[n].textStyle,g,g.ecModel));var h=new Dr({silent:Cm.isLabelSilent(c)});this.group.add(h),Gs(h.style,i,{x:o[0],y:o[1],textFill:i.getTextColor()||c.get("axisLine.lineStyle.color"),text:t.formattedLabel,textAlign:l,textVerticalAlign:u}),v&&(h.eventData=Cm.makeAxisEventDataBase(c),h.eventData.targetType="axisLabel",h.eventData.value=t.rawLabel)},this)},_splitLine:function(t,e,i,n){var a=t.getModel("splitLine").getModel("lineStyle"),o=a.get("color"),r=0;o=o instanceof Array?o:[o];for(var s=[],l=0;l<i.length;l++){var u=r++%o.length;s[u]=s[u]||[],s[u].push(new Ur({shape:iA(e,n,i[l].coord)}))}for(l=0;l<s.length;l++)this.group.add(ys(s[l],{style:C({stroke:o[l%o.length]},a.getLineStyle()),silent:!0,z:t.get("z")}))},_splitArea:function(t,e,i,n){if(i.length){var a=t.getModel("splitArea").getModel("areaStyle"),o=a.get("color"),r=0;o=o instanceof Array?o:[o];for(var s=[],l=Math.PI/180,u=-i[0].coord*l,h=Math.min(n[0],n[1]),c=Math.max(n[0],n[1]),d=t.get("clockwise"),f=1;f<i.length;f++){var p=r++%o.length;s[p]=s[p]||[],s[p].push(new Pr({shape:{cx:e.cx,cy:e.cy,r0:h,r:c,startAngle:u,endAngle:-i[f].coord*l,clockwise:d},silent:!0})),u=-i[f].coord*l}for(f=0;f<s.length;f++)this.group.add(ys(s[f],{style:C({fill:o[f%o.length]},a.getAreaStyle()),silent:!0}))}}});var oA=["axisLine","axisTickLabel","axisName"],rA=["splitLine","splitArea"];Um.extend({type:"radiusAxis",axisPointerClass:"PolarAxisPointer",render:function(e,t){if(this.group.removeAll(),e.get("show")){var i=e.axis,n=i.polar,a=n.getAngleAxis(),o=i.getTicksCoords(),r=a.getExtent()[0],s=i.getExtent(),l=function(t,e,i){return{position:[t.cx,t.cy],rotation:i/180*Math.PI,labelDirection:-1,tickDirection:-1,nameDirection:1,labelRotate:e.getModel("axisLabel").get("rotate"),z2:1}}(n,e,r),u=new Cm(e,l);E(oA,u.add,u),this.group.add(u.getGroup()),E(rA,function(t){e.get(t+".show")&&!i.scale.isBlank()&&this["_"+t](e,n,r,s,o)},this)}},_splitLine:function(t,e,i,n,a){var o=t.getModel("splitLine").getModel("lineStyle"),r=o.get("color"),s=0;r=r instanceof Array?r:[r];for(var l=[],u=0;u<a.length;u++){var h=s++%r.length;l[h]=l[h]||[],l[h].push(new Lr({shape:{cx:e.cx,cy:e.cy,r:a[u].coord},silent:!0}))}for(u=0;u<l.length;u++)this.group.add(ys(l[u],{style:C({stroke:r[u%r.length],fill:null},o.getLineStyle()),silent:!0}))},_splitArea:function(t,e,i,n,a){if(a.length){var o=t.getModel("splitArea").getModel("areaStyle"),r=o.get("color"),s=0;r=r instanceof Array?r:[r];for(var l=[],u=a[0].coord,h=1;h<a.length;h++){var c=s++%r.length;l[c]=l[c]||[],l[c].push(new Pr({shape:{cx:e.cx,cy:e.cy,r0:u,r:a[h].coord,startAngle:0,endAngle:2*Math.PI},silent:!0})),u=a[h].coord}for(h=0;h<l.length;h++)this.group.add(ys(l[h],{style:C({fill:r[h%r.length]},o.getAreaStyle()),silent:!0}))}}});var sA=GM.extend({makeElOption:function(t,e,i,n,a){var o=i.axis;"angle"===o.dim&&(this.animationThreshold=Math.PI/18);var r,s=o.polar,l=s.getOtherAxis(o).getExtent();r=o["dataTo"+Kl(o.dim)](e);var u=n.get("type");if(u&&"none"!==u){var h=UM(n),c=lA[u](o,s,r,l,h);c.style=h,t.graphicKey=c.type,t.pointer=c}var d=n.get("label.margin");XM(t,i,n,a,function(t,e,i,n,a){var o=e.axis,r=o.dataToCoord(t),s=n.getAngleAxis().getExtent()[0];s=s/180*Math.PI;var l,u,h,c=n.getRadiusAxis().getExtent();if("radius"===o.dim){var d=Qt();ae(d,d,s),ne(d,d,[n.cx,n.cy]),l=$s([r,-a],d);var f=e.getModel("axisLabel").get("rotate")||0,p=Cm.innerTextLayout(s,f*Math.PI/180,-1);u=p.textAlign,h=p.textVerticalAlign}else{var g=c[1];l=n.coordToPoint([g+a,r]);var m=n.cx,v=n.cy;u=Math.abs(l[0]-m)/g<.3?"center":l[0]>m?"left":"right",h=Math.abs(l[1]-v)/g<.3?"middle":l[1]>v?"top":"bottom"}return{position:l,align:u,verticalAlign:h}}(e,i,0,s,d))}});var lA={line:function(t,e,i,n,a){return"angle"===t.dim?{type:"Line",shape:KM(e.coordToPoint([n[0],i]),e.coordToPoint([n[1],i]))}:{type:"Circle",shape:{cx:e.cx,cy:e.cy,r:i}}},shadow:function(t,e,i,n,a){var o=Math.max(1,t.getBandWidth()),r=Math.PI/180;return"angle"===t.dim?{type:"Sector",shape:JM(e.cx,e.cy,n[0],n[1],(-i-o/2)*r,(o/2-i)*r)}:{type:"Sector",shape:JM(e.cx,e.cy,i-o/2,i+o/2,0,2*Math.PI)}}};function uA(n,t){t.update="updateView",tf(t,function(t,e){var i={};return e.eachComponent({mainType:"geo",query:t},function(e){e[n](t.name),E(e.coordinateSystem.regions,function(t){i[t.name]=e.isSelected(t.name)||!1})}),{selected:i,name:t.name}})}Um.registerAxisPointerClass("PolarAxisPointer",sA),nf(A(function(t,e,i){var N={},O=function(t){var g={};E(t,function(t,e){var i=t.getData(),n=t.coordinateSystem,a=n.getBaseAxis(),o=UI(n,a),r=a.getExtent(),s="category"===a.type?a.getBandWidth():Math.abs(r[1]-r[0])/i.count(),l=g[o]||{bandWidth:s,remainedWidth:s,autoWidthCount:0,categoryGap:"20%",gap:"30%",stacks:{}},u=l.stacks;g[o]=l;var h=ZI(t);u[h]||l.autoWidthCount++,u[h]=u[h]||{width:0,maxWidth:0};var c=xl(t.get("barWidth"),s),d=xl(t.get("barMaxWidth"),s),f=t.get("barGap"),p=t.get("barCategoryGap");c&&!u[h].width&&(c=Math.min(l.remainedWidth,c),u[h].width=c,l.remainedWidth-=c),d&&(u[h].maxWidth=d),null!=f&&(l.gap=f),null!=p&&(l.categoryGap=p)});var d={};return E(g,function(t,i){d[i]={};var e=t.stacks,n=t.bandWidth,a=xl(t.categoryGap,n),o=xl(t.gap,1),r=t.remainedWidth,s=t.autoWidthCount,l=(r-a)/(s+(s-1)*o);l=Math.max(l,0),E(e,function(t,e){var i=t.maxWidth;i&&i<l&&(i=Math.min(i,r),t.width&&(i=Math.min(i,t.width)),r-=i,t.width=i,s--)}),l=(r-a)/(s+(s-1)*o),l=Math.max(l,0);var u,h=0;E(e,function(t,e){t.width||(t.width=l),h+=(u=t).width*(1+o)}),u&&(h-=u.width*o);var c=-h/2;E(e,function(t,e){d[i][e]=d[i][e]||{offset:c,width:t.width},c+=t.width*(1+o)})}),d}(M(e.getSeriesByType(t),function(t){return!e.isSeriesFiltered(t)&&t.coordinateSystem&&"polar"===t.coordinateSystem.type}));e.eachSeriesByType(t,function(t){if("polar"===t.coordinateSystem.type){var e=t.getData(),i=t.coordinateSystem,n=i.getBaseAxis(),a=UI(i,n),o=ZI(t),r=O[a][o],s=r.offset,l=r.width,u=i.getOtherAxis(n),h=t.coordinateSystem.cx,c=t.coordinateSystem.cy,d=t.get("barMinHeight")||0,f=t.get("barMinAngle")||0;N[o]=N[o]||[];for(var p=e.mapDimension(u.dim),g=e.mapDimension(n.dim),m=Zf(e,p),v="radius"!==n.dim||!t.get("roundCap",!0),y=u.getExtent()[0],x=0,_=e.count();x<_;x++){var w=e.get(p,x),b=e.get(g,x);if(!isNaN(w)){var S,M,I,A,T=0<=w?"p":"n",D=y;if(m&&(N[o][b]||(N[o][b]={p:y,n:y}),D=N[o][b][T]),"radius"===u.dim){var C=u.dataToRadius(w)-y,L=n.dataToAngle(b);Math.abs(C)<d&&(C=(C<0?-1:1)*d),M=(S=D)+C,A=(I=L-s)-l,m&&(N[o][b][T]=M)}else{var k=u.dataToAngle(w,v)-y,P=n.dataToRadius(b);Math.abs(k)<f&&(k=(k<0?-1:1)*f),M=(S=P+s)+l,A=(I=D)+k,m&&(N[o][b][T]=A)}e.setItemLayout(x,{cx:h,cy:c,r0:S,r:M,startAngle:-I*Math.PI/180,endAngle:-A*Math.PI/180})}}}},this)},"bar")),lf({type:"polar"}),b(fu.extend({type:"geo",coordinateSystem:null,layoutMode:"box",init:function(t){fu.prototype.init.apply(this,arguments),ba(t,"label",["show"])},optionUpdated:function(){var t=this.option,i=this;t.regions=By.getFilledRegions(t.regions,t.map,t.nameMap),this._optionModelMap=S(t.regions||[],function(t,e){return e.name&&t.set(e.name,new dl(e,i)),t},Q()),this.updateSelectedMap(t.regions)},defaultOption:{zlevel:0,z:0,show:!0,left:"center",top:"center",aspectScale:null,silent:!1,map:"",boundingCoords:null,center:null,zoom:1,scaleLimit:null,label:{show:!1,color:"#000"},itemStyle:{borderWidth:.5,borderColor:"#444",color:"#eee"},emphasis:{label:{show:!0,color:"rgb(100,0,0)"},itemStyle:{color:"rgba(255,215,0,0.8)"}},regions:[]},getRegionModel:function(t){return this._optionModelMap.get(t)||new dl(null,this,this.ecModel)},getFormattedLabel:function(t,e){var i=this.getRegionModel(t).get("label"+("normal"===e?".":e+".")+"formatter"),n={name:t};return"function"==typeof i?(n.status=e,i(n)):"string"==typeof i?i.replace("{a}",null!=t?t:""):void 0},setZoom:function(t){this.option.zoom=t},setCenter:function(t){this.option.center=t}}),xv),lf({type:"geo",init:function(t,e){var i=new My(e,!0);this._mapDraw=i,this.group.add(i.group)},render:function(t,e,i,n){if(!n||"geoToggleSelect"!==n.type||n.from!==this.uid){var a=this._mapDraw;t.get("show")?a.draw(t,e,i,this,n):this._mapDraw.group.removeAll(),this.group.silent=t.get("silent")}},dispose:function(){this._mapDraw&&this._mapDraw.remove()}}),uA("toggleSelected",{type:"geoToggleSelect",event:"geoselectchanged"}),uA("select",{type:"geoSelect",event:"geoselected"}),uA("unSelect",{type:"geoUnSelect",event:"geounselected"});function hA(t,e,i){this._model=t}function cA(t,e,i,n){var a=i.calendarModel,o=i.seriesModel,r=a?a.coordinateSystem:o?o.coordinateSystem:null;return r===this?r[t](n):null}hA.prototype={constructor:hA,type:"calendar",dimensions:["time","value"],getDimensionsInfo:function(){return[{name:"time",type:"time"},"value"]},getRangeInfo:function(){return this._rangeInfo},getModel:function(){return this._model},getRect:function(){return this._rect},getCellWidth:function(){return this._sw},getCellHeight:function(){return this._sh},getOrient:function(){return this._orient},getFirstDayOfWeek:function(){return this._firstDayOfWeek},getDateInfo:function(t){var e=(t=Ll(t)).getFullYear(),i=t.getMonth()+1;i=i<10?"0"+i:i;var n=t.getDate();n=n<10?"0"+n:n;var a=t.getDay();return{y:e,m:i,d:n,day:a=Math.abs((a+7-this.getFirstDayOfWeek())%7),time:t.getTime(),formatedDate:e+"-"+i+"-"+n,date:t}},getNextNDay:function(t,e){return 0===(e=e||0)||(t=new Date(this.getDateInfo(t).time)).setDate(t.getDate()+e),this.getDateInfo(t)},update:function(t,e){this._firstDayOfWeek=+this._model.getModel("dayLabel").get("firstDay"),this._orient=this._model.get("orient"),this._lineWidth=this._model.getModel("itemStyle").getItemStyle().lineWidth||0,this._rangeInfo=this._getRangeInfo(this._initRangeOption());var i=this._rangeInfo.weeks||1,n=["width","height"],a=this._model.get("cellSize").slice(),o=this._model.getBoxLayoutParams(),r="horizontal"===this._orient?[i,7]:[7,i];E([0,1],function(t){u(a,t)&&(o[n[t]]=a[t]*r[t])});var s={width:e.getWidth(),height:e.getHeight()},l=this._rect=au(o,s);function u(t,e){return null!=t[e]&&"auto"!==t[e]}E([0,1],function(t){u(a,t)||(a[t]=l[n[t]]/r[t])}),this._sw=a[0],this._sh=a[1]},dataToPoint:function(t,e){k(t)&&(t=t[0]),null==e&&(e=!0);var i=this.getDateInfo(t),n=this._rangeInfo,a=i.formatedDate;if(e&&!(i.time>=n.start.time&&i.time<n.end.time+864e5))return[NaN,NaN];var o=i.day,r=this._getRangeInfo([n.start.time,a]).nthWeek;return"vertical"===this._orient?[this._rect.x+o*this._sw+this._sw/2,this._rect.y+r*this._sh+this._sh/2]:[this._rect.x+r*this._sw+this._sw/2,this._rect.y+o*this._sh+this._sh/2]},pointToData:function(t){var e=this.pointToDate(t);return e&&e.time},dataToRect:function(t,e){var i=this.dataToPoint(t,e);return{contentShape:{x:i[0]-(this._sw-this._lineWidth)/2,y:i[1]-(this._sh-this._lineWidth)/2,width:this._sw-this._lineWidth,height:this._sh-this._lineWidth},center:i,tl:[i[0]-this._sw/2,i[1]-this._sh/2],tr:[i[0]+this._sw/2,i[1]-this._sh/2],br:[i[0]+this._sw/2,i[1]+this._sh/2],bl:[i[0]-this._sw/2,i[1]+this._sh/2]}},pointToDate:function(t){var e=Math.floor((t[0]-this._rect.x)/this._sw)+1,i=Math.floor((t[1]-this._rect.y)/this._sh)+1,n=this._rangeInfo.range;return"vertical"===this._orient?this._getDateByWeeksAndDay(i,e-1,n):this._getDateByWeeksAndDay(e,i-1,n)},convertToPixel:A(cA,"dataToPoint"),convertFromPixel:A(cA,"pointToData"),_initRangeOption:function(){var t=this._model.get("range"),e=t;if(k(e)&&1===e.length&&(e=e[0]),/^\d{4}$/.test(e)&&(t=[e+"-01-01",e+"-12-31"]),/^\d{4}[\/|-]\d{1,2}$/.test(e)){var i=this.getDateInfo(e),n=i.date;n.setMonth(n.getMonth()+1);var a=this.getNextNDay(n,-1);t=[i.formatedDate,a.formatedDate]}/^\d{4}[\/|-]\d{1,2}[\/|-]\d{1,2}$/.test(e)&&(t=[e,e]);var o=this._getRangeInfo(t);return o.start.time>o.end.time&&t.reverse(),t},_getRangeInfo:function(t){var e;(t=[this.getDateInfo(t[0]),this.getDateInfo(t[1])])[0].time>t[1].time&&(e=!0,t.reverse());var i=Math.floor(t[1].time/864e5)-Math.floor(t[0].time/864e5)+1,n=new Date(t[0].time),a=n.getDate(),o=t[1].date.getDate();if(n.setDate(a+i-1),n.getDate()!==o)for(var r=0<n.getTime()-t[1].time?1:-1;n.getDate()!==o&&0<(n.getTime()-t[1].time)*r;)i-=r,n.setDate(a+i-1);var s=Math.floor((i+t[0].day+6)/7),l=e?1-s:s-1;return e&&t.reverse(),{range:[t[0].formatedDate,t[1].formatedDate],start:t[0],end:t[1],allDay:i,weeks:s,nthWeek:l,fweek:t[0].day,lweek:t[1].day}},_getDateByWeeksAndDay:function(t,e,i){var n=this._getRangeInfo(i);if(t>n.weeks||0===t&&e<n.fweek||t===n.weeks&&e>n.lweek)return!1;var a=7*(t-1)-n.fweek+e,o=new Date(n.start.time);return o.setDate(n.start.d+a),this.getDateInfo(o)}},hA.dimensions=hA.prototype.dimensions,hA.getDimensionsInfo=hA.prototype.getDimensionsInfo,hA.create=function(i,n){var a=[];return i.eachComponent("calendar",function(t){var e=new hA(t,i,n);a.push(e),t.coordinateSystem=e}),i.eachSeries(function(t){"calendar"===t.get("coordinateSystem")&&(t.coordinateSystem=a[t.get("calendarIndex")||0])}),a},Hu.register("calendar",hA);var dA=fu.extend({type:"calendar",coordinateSystem:null,defaultOption:{zlevel:0,z:2,left:80,top:60,cellSize:20,orient:"horizontal",splitLine:{show:!0,lineStyle:{color:"#000",width:1,type:"solid"}},itemStyle:{color:"#fff",borderWidth:1,borderColor:"#ccc"},dayLabel:{show:!0,firstDay:0,position:"start",margin:"50%",nameMap:"en",color:"#000"},monthLabel:{show:!0,position:"start",margin:5,align:"center",nameMap:"en",formatter:null,color:"#000"},yearLabel:{show:!0,position:null,margin:30,formatter:null,color:"#ccc",fontFamily:"sans-serif",fontWeight:"bolder",fontSize:20}},init:function(t,e,i,n){var a=su(t);dA.superApply(this,"init",arguments),fA(t,a)},mergeOption:function(t,e){dA.superApply(this,"mergeOption",arguments),fA(this.option,t)}});function fA(t,e){var i=t.cellSize;k(i)?1===i.length&&(i[1]=i[0]):i=t.cellSize=[i,i];var n=N([0,1],function(t){return function(t,e){return null!=t[eu[e][0]]||null!=t[eu[e][1]]&&null!=t[eu[e][2]]}(e,t)&&(i[t]="auto"),null!=i[t]&&"auto"!==i[t]});ru(t,e,{type:"box",ignoreSize:n})}var pA={EN:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],CN:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},gA={EN:["S","M","T","W","T","F","S"],CN:["日","一","二","三","四","五","六"]};lf({type:"calendar",_tlpoints:null,_blpoints:null,_firstDayOfMonth:null,_firstDayPoints:null,render:function(t,e,i){var n=this.group;n.removeAll();var a=t.coordinateSystem,o=a.getRangeInfo(),r=a.getOrient();this._renderDayRect(t,o,n),this._renderLines(t,o,r,n),this._renderYearText(t,o,r,n),this._renderMonthText(t,r,n),this._renderWeekText(t,o,r,n)},_renderDayRect:function(t,e,i){for(var n=t.coordinateSystem,a=t.getModel("itemStyle").getItemStyle(),o=n.getCellWidth(),r=n.getCellHeight(),s=e.start.time;s<=e.end.time;s=n.getNextNDay(s,1).time){var l=n.dataToRect([s],!1).tl,u=new Hr({shape:{x:l[0],y:l[1],width:o,height:r},cursor:"default",style:a});i.add(u)}},_renderLines:function(i,t,n,a){var o=this,r=i.coordinateSystem,s=i.getModel("splitLine.lineStyle").getLineStyle(),l=i.get("splitLine.show"),e=s.lineWidth;this._tlpoints=[],this._blpoints=[],this._firstDayOfMonth=[],this._firstDayPoints=[];for(var u=t.start,h=0;u.time<=t.end.time;h++){d(u.formatedDate),0===h&&(u=r.getDateInfo(t.start.y+"-"+t.start.m));var c=u.date;c.setMonth(c.getMonth()+1),u=r.getDateInfo(c)}function d(t){o._firstDayOfMonth.push(r.getDateInfo(t)),o._firstDayPoints.push(r.dataToRect([t],!1).tl);var e=o._getLinePointsOfOneWeek(i,t,n);o._tlpoints.push(e[0]),o._blpoints.push(e[e.length-1]),l&&o._drawSplitline(e,s,a)}d(r.getNextNDay(t.end.time,1).formatedDate),l&&this._drawSplitline(o._getEdgesPoints(o._tlpoints,e,n),s,a),l&&this._drawSplitline(o._getEdgesPoints(o._blpoints,e,n),s,a)},_getEdgesPoints:function(t,e,i){var n=[t[0].slice(),t[t.length-1].slice()],a="horizontal"===i?0:1;return n[0][a]=n[0][a]-e/2,n[1][a]=n[1][a]+e/2,n},_drawSplitline:function(t,e,i){var n=new zr({z2:20,shape:{points:t},style:e});i.add(n)},_getLinePointsOfOneWeek:function(t,e,i){var n=t.coordinateSystem;e=n.getDateInfo(e);for(var a=[],o=0;o<7;o++){var r=n.getNextNDay(e.time,o),s=n.dataToRect([r.time],!1);a[2*r.day]=s.tl,a[2*r.day+1]=s["horizontal"===i?"bl":"tr"]}return a},_formatterLabel:function(t,e){return"string"==typeof t&&t?Xl(t,e):"function"==typeof t?t(e):e.nameMap},_yearTextPositionControl:function(t,e,i,n,a){e=e.slice();var o=["center","bottom"];"bottom"===n?(e[1]+=a,o=["center","top"]):"left"===n?e[0]-=a:"right"===n?(e[0]+=a,o=["center","top"]):e[1]-=a;var r=0;return"left"!==n&&"right"!==n||(r=Math.PI/2),{rotation:r,position:e,style:{textAlign:o[0],textVerticalAlign:o[1]}}},_renderYearText:function(t,e,i,n){var a=t.getModel("yearLabel");if(a.get("show")){var o=a.get("margin"),r=a.get("position");r=r||("horizontal"!==i?"top":"left");var s=[this._tlpoints[this._tlpoints.length-1],this._blpoints[0]],l=(s[0][0]+s[1][0])/2,u=(s[0][1]+s[1][1])/2,h="horizontal"===i?0:1,c={top:[l,s[h][1]],bottom:[l,s[1-h][1]],left:[s[1-h][0],u],right:[s[h][0],u]},d=e.start.y;+e.end.y>+e.start.y&&(d=d+"-"+e.end.y);var f=a.get("formatter"),p={start:e.start.y,end:e.end.y,nameMap:d},g=this._formatterLabel(f,p),m=new Dr({z2:30});Gs(m.style,a,{text:g}),m.attr(this._yearTextPositionControl(m,c[r],i,r,o)),n.add(m)}},_monthTextPositionControl:function(t,e,i,n,a){var o="left",r="top",s=t[0],l=t[1];return"horizontal"===i?(l+=a,e&&(o="center"),"start"===n&&(r="bottom")):(s+=a,e&&(r="middle"),"start"===n&&(o="right")),{x:s,y:l,textAlign:o,textVerticalAlign:r}},_renderMonthText:function(t,e,i){var n=t.getModel("monthLabel");if(n.get("show")){var a=n.get("nameMap"),o=n.get("margin"),r=n.get("position"),s=n.get("align"),l=[this._tlpoints,this._blpoints];R(a)&&(a=pA[a.toUpperCase()]||[]);var u="start"===r?0:1,h="horizontal"===e?0:1;o="start"===r?-o:o;for(var c="center"===s,d=0;d<l[u].length-1;d++){var f=l[u][d].slice(),p=this._firstDayOfMonth[d];if(c){var g=this._firstDayPoints[d];f[h]=(g[h]+l[0][d+1][h])/2}var m=n.get("formatter"),v=a[+p.m-1],y={yyyy:p.y,yy:(p.y+"").slice(2),MM:p.m,M:+p.m,nameMap:v},x=this._formatterLabel(m,y),_=new Dr({z2:30});L(Gs(_.style,n,{text:x}),this._monthTextPositionControl(f,c,e,r,o)),i.add(_)}}},_weekTextPositionControl:function(t,e,i,n,a){var o="center",r="middle",s=t[0],l=t[1],u="start"===i;return"horizontal"===e?(s=s+n+(u?1:-1)*a[0]/2,o=u?"right":"left"):(l=l+n+(u?1:-1)*a[1]/2,r=u?"bottom":"top"),{x:s,y:l,textAlign:o,textVerticalAlign:r}},_renderWeekText:function(t,e,i,n){var a=t.getModel("dayLabel");if(a.get("show")){var o=t.coordinateSystem,r=a.get("position"),s=a.get("nameMap"),l=a.get("margin"),u=o.getFirstDayOfWeek();R(s)&&(s=gA[s.toUpperCase()]||[]);var h=o.getNextNDay(e.end.time,7-e.lweek).time,c=[o.getCellWidth(),o.getCellHeight()];l=xl(l,c["horizontal"===i?0:1]),"start"===r&&(h=o.getNextNDay(e.start.time,-(7+e.fweek)).time,l=-l);for(var d=0;d<7;d++){var f,p=o.getNextNDay(h,d),g=o.dataToRect([p.time],!1).center;f=Math.abs((d+u)%7);var m=new Dr({z2:30});L(Gs(m.style,a,{text:s[f]}),this._weekTextPositionControl(g,i,r,l,c)),n.add(m)}}}});var mA={path:null,compoundPath:null,group:Si,image:Yn,text:Dr};Jd(function(t){var e=t.graphic;k(e)?e[0]&&e[0].elements?t.graphic=[t.graphic[0]]:t.graphic=[{elements:e}]:e&&!e.elements&&(t.graphic=[{elements:[e]}])});var vA=sf({type:"graphic",defaultOption:{elements:[],parentId:null},_elOptionsToUpdate:null,mergeOption:function(t){var e=this.option.elements;this.option.elements=null,vA.superApply(this,"mergeOption",arguments),this.option.elements=e},optionUpdated:function(t,e){var i=this.option,n=(e?i:t).elements,a=i.elements=e?[]:i.elements,o=[];this._flatten(n,o);var r=Ia(a,o);Aa(r);var s=this._elOptionsToUpdate=[];E(r,function(t,e){var i=t.option;i&&(s.push(i),function(t,e){var i=t.exist;if(e.id=t.keyInfo.id,!e.type&&i&&(e.type=i.type),null==e.parentId){var n=e.parentOption;n?e.parentId=n.id:i&&(e.parentId=i.parentId)}e.parentOption=null}(t,i),function(t,e,i){var n=L({},i),a=t[e],o=i.$action||"merge";"merge"===o?a?(m(a,n,!0),ru(a,n,{ignoreSize:!0}),lu(i,a)):t[e]=n:"replace"===o?t[e]=n:"remove"===o&&a&&(t[e]=null)}(a,e,i),function(t,e){if(!t)return;t.hv=e.hv=[_A(e,["left","right"]),_A(e,["top","bottom"])],"group"===t.type&&(null==t.width&&(t.width=e.width=0),null==t.height&&(t.height=e.height=0))}(a[e],i))},this);for(var l=a.length-1;0<=l;l--)null==a[l]?a.splice(l,1):delete a[l].$action},_flatten:function(t,i,n){E(t,function(t){if(t){n&&(t.parentOption=n),i.push(t);var e=t.children;"group"===t.type&&e&&this._flatten(e,i,t),delete t.children}},this)},useElOptionsToUpdate:function(){var t=this._elOptionsToUpdate;return this._elOptionsToUpdate=null,t}});function yA(t,e,i,n){var a=i.type,o=new(mA.hasOwnProperty(a)?mA[a]:ps(a))(i);e.add(o),n.set(t,o),o.__ecGraphicId=t}function xA(t,e){var i=t&&t.parent;i&&("group"===t.type&&t.traverse(function(t){xA(t,e)}),e.removeKey(t.__ecGraphicId),i.remove(t))}function _A(e,t){var i;return E(t,function(t){null!=e[t]&&"auto"!==e[t]&&(i=!0)}),i}lf({type:"graphic",init:function(t,e){this._elMap=Q(),this._lastGraphicModel},render:function(t,e,i){t!==this._lastGraphicModel&&this._clear(),this._lastGraphicModel=t,this._updateElements(t),this._relocate(t,i)},_updateElements:function(u){var t=u.useElOptionsToUpdate();if(t){var h=this._elMap,c=this.group;E(t,function(t){var e=t.$action,i=t.id,n=h.get(i),a=t.parentId,o=null!=a?h.get(a):c,r=t.style;"text"===t.type&&r&&(t.hv&&t.hv[1]&&(r.textVerticalAlign=r.textBaseline=null),!r.hasOwnProperty("textFill")&&r.fill&&(r.textFill=r.fill),!r.hasOwnProperty("textStroke")&&r.stroke&&(r.textStroke=r.stroke));var s=function(e){return e=L({},e),E(["id","parentId","$action","hv","bounding"].concat(tu),function(t){delete e[t]}),e}(t);e&&"merge"!==e?"replace"===e?(xA(n,h),yA(i,o,s,h)):"remove"===e&&xA(n,h):n?n.attr(s):yA(i,o,s,h);var l=h.get(i);l&&(l.__ecGraphicWidthOption=t.width,l.__ecGraphicHeightOption=t.height,function(t,e){var i=t.eventData;t.silent||t.ignore||i||(i=t.eventData={componentType:"graphic",componentIndex:e.componentIndex,name:t.name});i&&(i.info=t.info)}(l,u))})}},_relocate:function(t,e){for(var i=t.option.elements,n=this.group,a=this._elMap,o=e.getWidth(),r=e.getHeight(),s=0;s<i.length;s++){var l=i[s];if((h=a.get(l.id))&&h.isGroup){var u=(c=h.parent)===n;h.__ecGraphicWidth=xl(h.__ecGraphicWidthOption,u?o:c.__ecGraphicWidth)||0,h.__ecGraphicHeight=xl(h.__ecGraphicHeightOption,u?r:c.__ecGraphicHeight)||0}}for(s=i.length-1;0<=s;s--){var h,c;l=i[s];if(h=a.get(l.id))ou(h,l,(c=h.parent)===n?{width:o,height:r}:{width:c.__ecGraphicWidth,height:c.__ecGraphicHeight},null,{hv:l.hv,boundingMode:l.bounding})}},_clear:function(){var e=this._elMap;e.each(function(t){xA(t,e)}),this._elMap=Q()},dispose:function(){this._clear()}});var wA={};function bA(t,e){wA[t]=e}function SA(t){return wA[t]}var MA=sf({type:"toolbox",layoutMode:{type:"box",ignoreSize:!0},optionUpdated:function(){MA.superApply(this,"optionUpdated",arguments),E(this.option.feature,function(t,e){var i=SA(e);i&&m(t,i.defaultOption)})},defaultOption:{show:!0,z:6,zlevel:0,orient:"horizontal",left:"right",top:"top",backgroundColor:"transparent",borderColor:"#ccc",borderRadius:0,borderWidth:0,padding:5,itemSize:15,itemGap:8,showTitle:!0,iconStyle:{borderColor:"#666",color:"none"},emphasis:{iconStyle:{borderColor:"#3E98C5"}},tooltip:{show:!1}}});function IA(t,e){var i=Vl(e.get("padding")),n=e.getItemStyle(["color","opacity"]);return n.fill=e.get("backgroundColor"),t=new Hr({shape:{x:t.x-i[3],y:t.y-i[0],width:t.width+i[1]+i[3],height:t.height+i[0]+i[2],r:e.get("borderRadius")},style:n,silent:!0,z2:-1})}lf({type:"toolbox",render:function(h,c,d,s){var f=this.group;if(f.removeAll(),h.get("show")){var p=+h.get("itemSize"),l=h.get("feature")||{},u=this._features||(this._features={}),g=[];E(l,function(t,e){g.push(e)}),new df(this._featureNames||[],g).add(t).update(t).remove(A(t,null)).execute(),this._featureNames=g,function(t,e,i){var n=e.getBoxLayoutParams(),a=e.get("padding"),o={width:i.getWidth(),height:i.getHeight()},r=au(n,o,a);nu(e.get("orient"),t,e.get("itemGap"),r.width,r.height),ou(t,n,o,a)}(f,h,d),f.add(IA(f.getBoundingRect(),h)),f.eachChild(function(t){var e=t.__title,i=t.hoverStyle;if(i&&e){var n=un(e,wn(i)),a=t.position[0]+f.position[0],o=!1;t.position[1]+f.position[1]+p+n.height>d.getHeight()&&(i.textPosition="top",o=!0);var r=o?-5-n.height:p+8;a+n.width/2>d.getWidth()?(i.textPosition=["100%",r],i.textAlign="right"):a-n.width/2<0&&(i.textPosition=[0,r],i.textAlign="left")}})}function t(t,e){var i,n=g[t],a=g[e],o=new dl(l[n],h,h.ecModel);if(n&&!a){if(function(t){return 0===t.indexOf("my")}(n))i={model:o,onclick:o.option.onclick,featureName:n};else{var r=SA(n);if(!r)return;i=new r(o,c,d)}u[n]=i}else{if(!(i=u[a]))return;i.model=o,i.ecModel=c,i.api=d}n||!a?o.get("show")&&!i.unusable?(function(a,o,t){var r=a.getModel("iconStyle"),s=a.getModel("emphasis.iconStyle"),e=o.getIcons?o.getIcons():a.get("icon"),l=a.get("title")||{};if("string"==typeof e){var i=e,n=l;l={},(e={})[t]=i,l[t]=n}var u=a.iconPaths={};E(e,function(t,e){var i=el(t,{},{x:-p/2,y:-p/2,width:p,height:p});i.setStyle(r.getItemStyle()),i.hoverStyle=s.getItemStyle(),i.setStyle({text:l[e],textAlign:s.get("textAlign"),textBorderRadius:s.get("textBorderRadius"),textPadding:s.get("textPadding"),textFill:null});var n=h.getModel("tooltip");n&&n.get("show")&&i.attr("tooltip",L({content:l[e],formatter:n.get("formatter",!0)||function(){return l[e]},formatterParams:{componentType:"toolbox",name:e,title:l[e],$vars:["name","title"]},position:n.get("position",!0)||"bottom"},n.option)),Os(i),h.get("showTitle")&&(i.__title=l[e],i.on("mouseover",function(){var t=s.getItemStyle(),e="vertical"===h.get("orient")?null==h.get("right")?"right":"left":null==h.get("bottom")?"bottom":"top";i.setStyle({textFill:s.get("textFill")||t.fill||t.stroke||"#000",textBackgroundColor:s.get("textBackgroundColor"),textPosition:s.get("textPosition")||e})}).on("mouseout",function(){i.setStyle({textFill:null,textBackgroundColor:null})})),i.trigger(a.get("iconStatus."+e)||"normal"),f.add(i),i.on("click",T(o.onclick,o,c,d,e)),u[e]=i})}(o,i,n),o.setIconStatus=function(t,e){var i=this.option,n=this.iconPaths;i.iconStatus=i.iconStatus||{},i.iconStatus[t]=e,n[t]&&n[t].trigger(e)},i.render&&i.render(o,c,d,s)):i.remove&&i.remove(c,d):i.dispose&&i.dispose(c,d)}},updateView:function(t,e,i,n){E(this._features,function(t){t.updateView&&t.updateView(t.model,e,i,n)})},remove:function(e,i){E(this._features,function(t){t.remove&&t.remove(e,i)}),this.group.removeAll()},dispose:function(e,i){E(this._features,function(t){t.dispose&&t.dispose(e,i)})}});var AA=gc.toolbox.saveAsImage;function TA(t){this.model=t}TA.defaultOption={show:!0,icon:"M4.7,22.9L29.3,45.5L54.7,23.4M4.6,43.6L4.6,58L53.8,58L53.8,43.6M29.2,45.1L29.2,0",title:AA.title,type:"png",connectedBackgroundColor:"#fff",name:"",excludeComponents:["toolbox"],pixelRatio:1,lang:AA.lang.slice()},TA.prototype.unusable=!v.canvasSupported,TA.prototype.onclick=function(t,e){var i=this.model,n=i.get("name")||t.get("title.0.text")||"echarts",a=i.get("type",!0)||"png",o=e.getConnectedDataURL({type:a,backgroundColor:i.get("backgroundColor",!0)||t.get("backgroundColor")||"#fff",connectedBackgroundColor:i.get("connectedBackgroundColor"),excludeComponents:i.get("excludeComponents"),pixelRatio:i.get("pixelRatio")});if("function"!=typeof MouseEvent||v.browser.ie||v.browser.edge)if(window.navigator.msSaveOrOpenBlob){for(var r=atob(o.split(",")[1]),s=r.length,l=new Uint8Array(s);s--;)l[s]=r.charCodeAt(s);var u=new Blob([l]);window.navigator.msSaveOrOpenBlob(u,n+"."+a)}else{var h=i.get("lang"),c='<body style="margin:0;"><img src="'+o+'" style="max-width:100%;" title="'+(h&&h[0]||"")+'" /></body>';window.open().document.write(c)}else{var d=document.createElement("a");d.download=n+"."+a,d.target="_blank",d.href=o;var f=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!1});d.dispatchEvent(f)}},bA("saveAsImage",TA);var DA=gc.toolbox.magicType;function CA(t){this.model=t}CA.defaultOption={show:!0,type:[],icon:{line:"M4.1,28.9h7.1l9.3-22l7.4,38l9.7-19.7l3,12.8h14.9M4.1,58h51.4",bar:"M6.7,22.9h10V48h-10V22.9zM24.9,13h10v35h-10V13zM43.2,2h10v46h-10V2zM3.1,58h53.7",stack:"M8.2,38.4l-8.4,4.1l30.6,15.3L60,42.5l-8.1-4.1l-21.5,11L8.2,38.4z M51.9,30l-8.1,4.2l-13.4,6.9l-13.9-6.9L8.2,30l-8.4,4.2l8.4,4.2l22.2,11l21.5-11l8.1-4.2L51.9,30z M51.9,21.7l-8.1,4.2L35.7,30l-5.3,2.8L24.9,30l-8.4-4.1l-8.3-4.2l-8.4,4.2L8.2,30l8.3,4.2l13.9,6.9l13.4-6.9l8.1-4.2l8.1-4.1L51.9,21.7zM30.4,2.2L-0.2,17.5l8.4,4.1l8.3,4.2l8.4,4.2l5.5,2.7l5.3-2.7l8.1-4.2l8.1-4.2l8.1-4.1L30.4,2.2z",tiled:"M2.3,2.2h22.8V25H2.3V2.2z M35,2.2h22.8V25H35V2.2zM2.3,35h22.8v22.8H2.3V35z M35,35h22.8v22.8H35V35z"},title:D(DA.title),option:{},seriesIndex:{}};var LA=CA.prototype;LA.getIcons=function(){var t=this.model,e=t.get("icon"),i={};return E(t.get("type"),function(t){e[t]&&(i[t]=e[t])}),i};var kA={line:function(t,e,i,n){if("bar"===t)return m({id:e,type:"line",data:i.get("data"),stack:i.get("stack"),markPoint:i.get("markPoint"),markLine:i.get("markLine")},n.get("option.line")||{},!0)},bar:function(t,e,i,n){if("line"===t)return m({id:e,type:"bar",data:i.get("data"),stack:i.get("stack"),markPoint:i.get("markPoint"),markLine:i.get("markLine")},n.get("option.bar")||{},!0)},stack:function(t,e,i,n){if("line"===t||"bar"===t)return m({id:e,stack:"__ec_magicType_stack__"},n.get("option.stack")||{},!0)},tiled:function(t,e,i,n){if("line"===t||"bar"===t)return m({id:e,stack:""},n.get("option.tiled")||{},!0)}},PA=[["line","bar"],["stack","tiled"]];LA.onclick=function(u,t,h){var c=this.model,e=c.get("seriesIndex."+h);if(kA[h]){var d={series:[]};E(PA,function(t){0<=_(t,h)&&E(t,function(t){c.setIconStatus(t,"normal")})}),c.setIconStatus(h,"emphasis"),u.eachComponent({mainType:"series",query:null==e?null:{seriesIndex:e}},function(t){var e=t.subType,i=t.id,n=kA[h](e,i,t,c);n&&(C(n,t.option),d.series.push(n));var a=t.coordinateSystem;if(a&&"cartesian2d"===a.type&&("line"===h||"bar"===h)){var o=a.getAxesByScale("ordinal")[0];if(o){var r=o.dim+"Axis",s=u.queryComponents({mainType:r,index:t.get(name+"Index"),id:t.get(name+"Id")})[0].componentIndex;d[r]=d[r]||[];for(var l=0;l<=s;l++)d[r][s]=d[r][s]||{};d[r][s].boundaryGap="bar"===h}}}),t.dispatchAction({type:"changeMagicType",currentType:h,newOption:d})}},tf({type:"changeMagicType",event:"magicTypeChanged",update:"prepareAndUpdate"},function(t,e){e.mergeOption(t.newOption)}),bA("magicType",CA);var NA=gc.toolbox.dataView,OA=new Array(60).join("-"),EA="\t";function RA(t){var e=function(t){var a={},o=[],r=[];return t.eachRawSeries(function(t){var e=t.coordinateSystem;if(!e||"cartesian2d"!==e.type&&"polar"!==e.type)o.push(t);else{var i=e.getBaseAxis();if("category"===i.type){var n=i.dim+"_"+i.index;a[n]||(a[n]={categoryAxis:i,valueAxis:e.getOtherAxis(i),series:[]},r.push({axisDim:i.dim,axisIndex:i.index})),a[n].series.push(t)}else o.push(t)}}),{seriesGroupByCategoryAxis:a,other:o,meta:r}}(t);return{value:M([function(t){var h=[];return E(t,function(t,e){var i=t.categoryAxis,n=t.valueAxis.dim,a=[" "].concat(N(t.series,function(t){return t.name})),o=[i.model.getCategories()];E(t.series,function(t){o.push(t.getRawData().mapArray(n,function(t){return t}))});for(var r=[a.join(EA)],s=0;s<o[0].length;s++){for(var l=[],u=0;u<o.length;u++)l.push(o[u][s]);r.push(l.join(EA))}h.push(r.join("\n"))}),h.join("\n\n"+OA+"\n\n")}(e.seriesGroupByCategoryAxis),function(t){return N(t,function(t){var a=t.getRawData(),o=[t.name],r=[];return a.each(a.dimensions,function(){for(var t=arguments.length,e=arguments[t-1],i=a.getName(e),n=0;n<t-1;n++)r[n]=arguments[n];o.push((i?i+EA:"")+r.join(EA))}),o.join("\n")}).join("\n\n"+OA+"\n\n")}(e.other)],function(t){return t.replace(/[\n\t\s]/g,"")}).join("\n\n"+OA+"\n\n"),meta:e.meta}}function zA(t){return t.replace(/^\s\s*/,"").replace(/\s\s*$/,"")}var BA=new RegExp("["+EA+"]+","g");function VA(t,o){var e=t.split(new RegExp("\n*"+OA+"\n*","g")),r={series:[]};return E(e,function(t,e){if(function(t){if(0<=t.slice(0,t.indexOf("\n")).indexOf(EA))return!0}(t)){var i=function(t){for(var e=t.split(/\n+/g),i=[],n=N(zA(e.shift()).split(BA),function(t){return{name:t,data:[]}}),a=0;a<e.length;a++){var o=zA(e[a]).split(BA);i.push(o.shift());for(var r=0;r<o.length;r++)n[r]&&(n[r].data[a]=o[r])}return{series:n,categories:i}}(t),n=o[e],a=n.axisDim+"Axis";n&&(r[a]=r[a]||[],r[a][n.axisIndex]={data:i.categories},r.series=r.series.concat(i.series))}else{i=function(t){for(var e=t.split(/\n+/g),i=zA(e.shift()),n=[],a=0;a<e.length;a++){var o,r=zA(e[a]).split(BA),s="",l=!1;o=isNaN(r[0])?(l=!0,s=r[0],r=r.slice(1),n[a]={name:s,value:[]},n[a].value):n[a]=[];for(var u=0;u<r.length;u++)o.push(+r[u]);1===o.length&&(l?n[a].value=o[0]:n[a]=o[0])}return{name:i,data:n}}(t);r.series.push(i)}}),r}function GA(t){this._dom=null,this.model=t}GA.defaultOption={show:!0,readOnly:!1,optionToContent:null,contentToOption:null,icon:"M17.5,17.3H33 M17.5,17.3H33 M45.4,29.5h-28 M11.5,2v56H51V14.8L38.4,2H11.5z M38.4,2.2v12.7H51 M45.4,41.7h-28",title:D(NA.title),lang:D(NA.lang),backgroundColor:"#fff",textColor:"#000",textareaColor:"#fff",textareaBorderColor:"#333",buttonColor:"#c23531",buttonTextColor:"#fff"},GA.prototype.onclick=function(t,e){var i=e.getDom(),n=this.model;this._dom&&i.removeChild(this._dom);var a=document.createElement("div");a.style.cssText="position:absolute;left:5px;top:5px;bottom:5px;right:5px;",a.style.backgroundColor=n.get("backgroundColor")||"#fff";var o=document.createElement("h4"),r=n.get("lang")||[];o.innerHTML=r[0]||n.get("title"),o.style.cssText="margin: 10px 20px;",o.style.color=n.get("textColor");var s=document.createElement("div"),l=document.createElement("textarea");s.style.cssText="display:block;width:100%;overflow:auto;";var u=n.get("optionToContent"),h=n.get("contentToOption"),c=RA(t);if("function"==typeof u){var d=u(e.getOption());"string"==typeof d?s.innerHTML=d:G(d)&&s.appendChild(d)}else s.appendChild(l),l.readOnly=n.get("readOnly"),l.style.cssText="width:100%;height:100%;font-family:monospace;font-size:14px;line-height:1.6rem;",l.style.color=n.get("textColor"),l.style.borderColor=n.get("textareaBorderColor"),l.style.backgroundColor=n.get("textareaColor"),l.value=c.value;var f=c.meta,p=document.createElement("div");p.style.cssText="position:absolute;bottom:0;left:0;right:0;";var g="float:right;margin-right:20px;border:none;cursor:pointer;padding:2px 5px;font-size:12px;border-radius:3px",m=document.createElement("div"),v=document.createElement("div");g+=";background-color:"+n.get("buttonColor"),g+=";color:"+n.get("buttonTextColor");var y=this;function x(){i.removeChild(a),y._dom=null}Gt(m,"click",x),Gt(v,"click",function(){var t;try{t="function"==typeof h?h(s,e.getOption()):VA(l.value,f)}catch(t){throw x(),new Error("Data view format error "+t)}t&&e.dispatchAction({type:"changeDataView",newOption:t}),x()}),m.innerHTML=r[1],v.innerHTML=r[2],v.style.cssText=g,m.style.cssText=g,n.get("readOnly")||p.appendChild(v),p.appendChild(m),a.appendChild(o),a.appendChild(s),a.appendChild(p),s.style.height=i.clientHeight-80+"px",i.appendChild(a),this._dom=a},GA.prototype.remove=function(t,e){this._dom&&e.getDom().removeChild(this._dom)},GA.prototype.dispose=function(t,e){this.remove(t,e)},bA("dataView",GA),tf({type:"changeDataView",event:"dataViewChanged",update:"prepareAndUpdate"},function(t,n){var a=[];E(t.newOption.series,function(t){var e=n.getSeriesByName(t.name)[0];if(e){var i=e.get("data");a.push({name:t.name,data:function(t,n){return N(t,function(t,e){var i=n&&n[e];return z(i)&&!k(i)?(z(t)&&!k(t)&&(t=t.value),C({value:t},i)):t})}(t.data,i)})}else a.push(L({type:"scatter"},t))}),n.mergeOption(C({series:a},t.newOption))});var FA=E,WA=_,HA=A,ZA=["dataToPoint","pointToData"],UA=["grid","xAxis","yAxis","geo","graph","polar","radiusAxis","angleAxis","bmap"];function XA(t,e,i){var n=this._targetInfoList=[],a={},o=qA(e,t);FA(KA,function(t,e){i&&i.include&&!(0<=WA(i.include,e))||t(o,n,a)})}var YA=XA.prototype;function jA(t){return t[0]>t[1]&&t.reverse(),t}function qA(t,e){return Pa(t,e,{includeMainTypes:UA})}YA.setOutputRanges=function(t,e){this.matchOutputRanges(t,e,function(t,e,i){if((t.coordRanges||(t.coordRanges=[])).push(e),!t.coordRange){t.coordRange=e;var n=QA[t.brushType](0,i,e);t.__rangeOffset={offset:eT[t.brushType](n.values,t.range,[1,1]),xyMinMax:n.xyMinMax}}})},YA.matchOutputRanges=function(t,n,a){FA(t,function(i){var t=this.findTargetInfo(i,n);t&&!0!==t&&E(t.coordSyses,function(t){var e=QA[i.brushType](1,t,i.range);a(i,e.values,t,n)})},this)},YA.setInputRanges=function(t,a){FA(t,function(t){var e=this.findTargetInfo(t,a);if(t.range=t.range||[],e&&!0!==e){t.panelId=e.panelId;var i=QA[t.brushType](0,e.coordSys,t.coordRange),n=t.__rangeOffset;t.range=n?eT[t.brushType](i.values,n.offset,function(t,e){var i=nT(t),n=nT(e),a=[i[0]/n[0],i[1]/n[1]];return isNaN(a[0])&&(a[0]=1),isNaN(a[1])&&(a[1]=1),a}(i.xyMinMax,n.xyMinMax)):i.values}},this)},YA.makePanelOpts=function(i,n){return N(this._targetInfoList,function(t){var e=t.getPanelRect();return{panelId:t.panelId,defaultBrushType:n&&n(t),clipPath:Mb(e),isTargetByCursor:Ab(e,i,t.coordSysModel),getLinearBrushOtherExtent:Ib(e)}})},YA.controlSeries=function(t,e,i){var n=this.findTargetInfo(t,i);return!0===n||n&&0<=WA(n.coordSyses,e.coordinateSystem)},YA.findTargetInfo=function(t,e){for(var i=this._targetInfoList,n=qA(e,t),a=0;a<i.length;a++){var o=i[a],r=t.panelId;if(r){if(o.panelId===r)return o}else for(a=0;a<$A.length;a++)if($A[a](n,o))return o}return!0};var KA={grid:function(t,n){var a=t.xAxisModels,o=t.yAxisModels,e=t.gridModels,i=Q(),r={},s={};(a||o||e)&&(FA(a,function(t){var e=t.axis.grid.model;i.set(e.id,e),r[e.id]=!0}),FA(o,function(t){var e=t.axis.grid.model;i.set(e.id,e),s[e.id]=!0}),FA(e,function(t){i.set(t.id,t),r[t.id]=!0,s[t.id]=!0}),i.each(function(t){var e=t.coordinateSystem,i=[];FA(e.getCartesians(),function(t,e){(0<=WA(a,t.getAxis("x").model)||0<=WA(o,t.getAxis("y").model))&&i.push(t)}),n.push({panelId:"grid--"+t.id,gridModel:t,coordSysModel:t,coordSys:i[0],coordSyses:i,getPanelRect:JA.grid,xAxisDeclared:r[t.id],yAxisDeclared:s[t.id]})}))},geo:function(t,i){FA(t.geoModels,function(t){var e=t.coordinateSystem;i.push({panelId:"geo--"+t.id,geoModel:t,coordSysModel:t,coordSys:e,coordSyses:[e],getPanelRect:JA.geo})})}},$A=[function(t,e){var i=t.xAxisModel,n=t.yAxisModel,a=t.gridModel;return!a&&i&&(a=i.axis.grid.model),!a&&n&&(a=n.axis.grid.model),a&&a===e.gridModel},function(t,e){var i=t.geoModel;return i&&i===e.geoModel}],JA={grid:function(){return this.coordSys.grid.getRect().clone()},geo:function(){var t=this.coordSys,e=t.getBoundingRect().clone();return e.applyTransform(Ks(t)),e}},QA={lineX:HA(tT,0),lineY:HA(tT,1),rect:function(t,e,i){var n=e[ZA[t]]([i[0][0],i[1][0]]),a=e[ZA[t]]([i[0][1],i[1][1]]),o=[jA([n[0],a[0]]),jA([n[1],a[1]])];return{values:o,xyMinMax:o}},polygon:function(i,n,t){var a=[[1/0,-1/0],[1/0,-1/0]];return{values:N(t,function(t){var e=n[ZA[i]](t);return a[0][0]=Math.min(a[0][0],e[0]),a[1][0]=Math.min(a[1][0],e[1]),a[0][1]=Math.max(a[0][1],e[0]),a[1][1]=Math.max(a[1][1],e[1]),e}),xyMinMax:a}}};function tT(t,e,i,n){var a=i.getAxis(["x","y"][t]),o=jA(N([0,1],function(t){return e?a.coordToData(a.toLocalCoord(n[t])):a.toGlobalCoord(a.dataToCoord(n[t]))})),r=[];return r[t]=o,r[1-t]=[NaN,NaN],{values:o,xyMinMax:r}}var eT={lineX:HA(iT,0),lineY:HA(iT,1),rect:function(t,e,i){return[[t[0][0]-i[0]*e[0][0],t[0][1]-i[0]*e[0][1]],[t[1][0]-i[1]*e[1][0],t[1][1]-i[1]*e[1][1]]]},polygon:function(t,i,n){return N(t,function(t,e){return[t[0]-n[0]*i[e][0],t[1]-n[1]*i[e][1]]})}};function iT(t,e,i,n){return[e[0]-n[t]*i[0],e[1]-n[t]*i[1]]}function nT(t){return t?[t[0][1]-t[0][0],t[1][1]-t[1][0]]:[NaN,NaN]}var aT=E,oT="\0_ec_hist_store";function rT(t){var e=t[oT];return e=e||(t[oT]=[{}])}fu.registerSubTypeDefaulter("dataZoom",function(){return"slider"});var sT=["cartesian2d","polar","singleAxis"];var lT,uT,hT,cT,dT=(uT=["axisIndex","axis","index","id"],hT=N(lT=(lT=["x","y","z","radius","angle","single"]).slice(),Kl),cT=N(uT=(uT||[]).slice(),Kl),function(a,o){E(lT,function(t,e){for(var i={name:t,capital:hT[e]},n=0;n<uT.length;n++)i[uT[n]]=t+cT[n];a.call(o,i)})});function fT(a,o,r){return function(t){var e,i={nodes:[],records:{}};if(o(function(t){i.records[t.name]={}}),!t)return i;for(s(t,i);e=!1,a(n),e;);function n(t){!function(t,e){return 0<=_(e.nodes,t)}(t,i)&&function(t,i){var n=!1;return o(function(e){E(r(t,e)||[],function(t){i.records[e.name][t]&&(n=!0)})}),n}(t,i)&&(s(t,i),e=!0)}return i};function s(t,i){i.nodes.push(t),o(function(e){E(r(t,e)||[],function(t){i.records[e.name][t]=!0})})}}function pT(t,e,i,n){this._dimName=t,this._axisIndex=e,this._valueWindow,this._percentWindow,this._dataExtent,this._minMaxSpan,this.ecModel=n,this._dataZoomModel=i}var gT=E,mT=wl;function vT(t,e){var i=t.getAxisModel(),n=t._percentWindow,a=t._valueWindow;if(n){var o=Ml(a,[0,500]);o=Math.min(o,20);var r=e||0===n[0]&&100===n[1];i.setRange(r?null:+a[0].toFixed(o),r?null:+a[1].toFixed(o))}}pT.prototype={constructor:pT,hostedBy:function(t){return this._dataZoomModel===t},getDataValueWindow:function(){return this._valueWindow.slice()},getDataPercentWindow:function(){return this._percentWindow.slice()},getTargetSeriesModels:function(){var n=[],a=this.ecModel;return a.eachSeries(function(t){if(function(t){return 0<=_(sT,t)}(t.get("coordinateSystem"))){var e=this._dimName,i=a.queryComponents({mainType:e+"Axis",index:t.get(e+"AxisIndex"),id:t.get(e+"AxisId")})[0];this._axisIndex===(i&&i.componentIndex)&&n.push(t)}},this),n},getAxisModel:function(){return this.ecModel.getComponent(this._dimName+"Axis",this._axisIndex)},getOtherAxisModel:function(){var t,e,i,n=this._dimName,a=this.ecModel,o=this.getAxisModel();return t="x"===n||"y"===n?(e="gridIndex","x"===n?"y":"x"):(e="polarIndex","angle"===n?"radius":"angle"),a.eachComponent(t+"Axis",function(t){(t.get(e)||0)===(o.get(e)||0)&&(i=t)}),i},getMinMaxSpan:function(){return D(this._minMaxSpan)},calculateDataWindow:function(a){var o,r=this._dataExtent,s=this.getAxisModel().axis.scale,l=this._dataZoomModel.getRangePropMode(),u=[0,100],h=[],c=[];gT(["start","end"],function(t,e){var i=a[t],n=a[t+"Value"];"percent"===l[e]?(null==i&&(i=u[e]),n=s.parse(yl(i,u,r))):(o=!0,i=yl(n=null==n?r[e]:s.parse(n),r,u)),c[e]=n,h[e]=i}),mT(c),mT(h);var d=this._minMaxSpan;function t(t,e,i,n,a){var o=a?"Span":"ValueSpan";ww(0,t,i,"all",d["min"+o],d["max"+o]);for(var r=0;r<2;r++)e[r]=yl(t[r],i,n,!0),a&&(e[r]=s.parse(e[r]))}return o?t(c,h,r,u,!1):t(h,c,u,r,!0),{valueWindow:c,percentWindow:h}},reset:function(t){if(t===this._dataZoomModel){var e=this.getTargetSeriesModels();this._dataExtent=function(t,e,i){var n=[1/0,-1/0];gT(i,function(t){var i=t.getData();i&&gT(i.mapDimension(e,!0),function(t){var e=i.getApproximateExtent(t);e[0]<n[0]&&(n[0]=e[0]),e[1]>n[1]&&(n[1]=e[1])})}),n[1]<n[0]&&(n=[NaN,NaN]);return function(t,e){var i=t.getAxisModel(),n=i.getMin(!0),a="category"===i.get("type"),o=a&&i.getCategories().length;null!=n&&"dataMin"!==n&&"function"!=typeof n?e[0]=n:a&&(e[0]=0<o?0:NaN);var r=i.getMax(!0);null!=r&&"dataMax"!==r&&"function"!=typeof r?e[1]=r:a&&(e[1]=0<o?o-1:NaN);i.get("scale",!0)||(0<e[0]&&(e[0]=0),e[1]<0&&(e[1]=0))}(t,n),n}(this,this._dimName,e),function(n){var a=n._minMaxSpan={},o=n._dataZoomModel,r=n._dataExtent;gT(["min","max"],function(t){var e=o.get(t+"Span"),i=o.get(t+"ValueSpan");null!=i&&(i=n.getAxisModel().axis.scale.parse(i)),null!=i?e=yl(r[0]+i,r,[0,100],!0):null!=e&&(i=yl(e,[0,100],r,!0)-r[0]),a[t+"Span"]=e,a[t+"ValueSpan"]=i})}(this);var i=this.calculateDataWindow(t.settledOption);this._valueWindow=i.valueWindow,this._percentWindow=i.percentWindow,vT(this)}},restore:function(t){t===this._dataZoomModel&&(this._valueWindow=this._percentWindow=null,vT(this,!0))},filterData:function(t,e){if(t===this._dataZoomModel){var n=this._dimName,i=this.getTargetSeriesModels(),a=t.get("filterMode"),c=this._valueWindow;"none"!==a&&gT(i,function(i){var u=i.getData(),h=u.mapDimension(n,!0);h.length&&("weakFilter"===a?u.filterSelf(function(t){for(var e,i,n,a=0;a<h.length;a++){var o=u.get(h[a],t),r=!isNaN(o),s=o<c[0],l=o>c[1];if(r&&!s&&!l)return!0;r&&(n=!0),s&&(e=!0),l&&(i=!0)}return n&&e&&i}):gT(h,function(t){if("empty"===a)i.setData(u=u.map(t,function(t){return function(t){return t>=c[0]&&t<=c[1]}(t)?t:NaN}));else{var e={};e[t]=c,u.selectRange(e)}}),gT(h,function(t){u.setApproximateExtent(c,t)}))})}}};var yT=E,xT=dT,_T=sf({type:"dataZoom",dependencies:["xAxis","yAxis","zAxis","radiusAxis","angleAxis","singleAxis","series"],defaultOption:{zlevel:0,z:4,orient:null,xAxisIndex:null,yAxisIndex:null,filterMode:"filter",throttle:null,start:0,end:100,startValue:null,endValue:null,minSpan:null,maxSpan:null,minValueSpan:null,maxValueSpan:null,rangeMode:null},init:function(t,e,i){this._dataIntervalByAxis={},this._dataInfo={},this._axisProxies={},this.textStyleModel,this._autoThrottle=!0,this._rangePropMode=["percent","percent"];var n=wT(t);this.settledOption=n,this.mergeDefaultAndTheme(t,i),this.doInit(n)},mergeOption:function(t){var e=wT(t);m(this.option,t,!0),m(this.settledOption,e,!0),this.doInit(e)},doInit:function(t){var i=this.option;v.canvasSupported||(i.realtime=!1),this._setDefaultThrottle(t),bT(this,t);var n=this.settledOption;yT([["start","startValue"],["end","endValue"]],function(t,e){"value"===this._rangePropMode[e]&&(i[t[0]]=n[t[0]]=null)},this),this.textStyleModel=this.getModel("textStyle"),this._resetTarget(),this._giveAxisProxies()},_giveAxisProxies:function(){var r=this._axisProxies;this.eachTargetAxis(function(t,e,i,n){var a=this.dependentModels[t.axis][e],o=a.__dzAxisProxy||(a.__dzAxisProxy=new pT(t.name,e,this,n));r[t.name+"_"+e]=o},this)},_resetTarget:function(){var i=this.option,t=this._judgeAutoMode();xT(function(t){var e=t.axisIndex;i[e]=wa(i[e])},this),"axisIndex"===t?this._autoSetAxisIndex():"orient"===t&&this._autoSetOrient()},_judgeAutoMode:function(){var e=this.option,i=!1;xT(function(t){null!=e[t.axisIndex]&&(i=!0)},this);var t=e.orient;return null==t&&i?"orient":i?void 0:(null==t&&(e.orient="horizontal"),"axisIndex")},_autoSetAxisIndex:function(){var o=!0,e=this.get("orient",!0),r=this.option,t=this.dependentModels;if(o){var i="vertical"===e?"y":"x";t[i+"Axis"].length?(r[i+"AxisIndex"]=[0],o=!1):yT(t.singleAxis,function(t){o&&t.get("orient",!0)===e&&(r.singleAxisIndex=[t.componentIndex],o=!1)})}o&&xT(function(t){if(o){var e=[],i=this.dependentModels[t.axis];if(i.length&&!e.length)for(var n=0,a=i.length;n<a;n++)"category"===i[n].get("type")&&e.push(n);(r[t.axisIndex]=e).length&&(o=!1)}},this),o&&this.ecModel.eachSeries(function(a){this._isSeriesHasAllAxesTypeOf(a,"value")&&xT(function(t){var e=r[t.axisIndex],i=a.get(t.axisIndex),n=a.get(t.axisId);_(e,i=a.ecModel.queryComponents({mainType:t.axis,index:i,id:n})[0].componentIndex)<0&&e.push(i)})},this)},_autoSetOrient:function(){var e;this.eachTargetAxis(function(t){e=e||t.name},this),this.option.orient="y"===e?"vertical":"horizontal"},_isSeriesHasAllAxesTypeOf:function(n,a){var o=!0;return xT(function(t){var e=n.get(t.axisIndex),i=this.dependentModels[t.axis][e];i&&i.get("type")===a||(o=!1)},this),o},_setDefaultThrottle:function(t){if(t.hasOwnProperty("throttle")&&(this._autoThrottle=!1),this._autoThrottle){var e=this.ecModel.option;this.option.throttle=e.animation&&0<e.animationDurationUpdate?100:20}},getFirstTargetAxisModel:function(){var i;return xT(function(t){if(null==i){var e=this.get(t.axisIndex);e.length&&(i=this.dependentModels[t.axis][e[0]])}},this),i},eachTargetAxis:function(i,n){var a=this.ecModel;xT(function(e){yT(this.get(e.axisIndex),function(t){i.call(n,e,t,this,a)},this)},this)},getAxisProxy:function(t,e){return this._axisProxies[t+"_"+e]},getAxisModel:function(t,e){var i=this.getAxisProxy(t,e);return i&&i.getAxisModel()},setRawRange:function(e){var i=this.option,n=this.settledOption;yT([["start","startValue"],["end","endValue"]],function(t){null==e[t[0]]&&null==e[t[1]]||(i[t[0]]=n[t[0]]=e[t[0]],i[t[1]]=n[t[1]]=e[t[1]])},this),bT(this,e)},setCalculatedRange:function(e){var i=this.option;yT(["start","startValue","end","endValue"],function(t){i[t]=e[t]})},getPercentRange:function(){var t=this.findRepresentativeAxisProxy();if(t)return t.getDataPercentWindow()},getValueRange:function(t,e){if(null!=t||null!=e)return this.getAxisProxy(t,e).getDataValueWindow();var i=this.findRepresentativeAxisProxy();return i?i.getDataValueWindow():void 0},findRepresentativeAxisProxy:function(t){if(t)return t.__dzAxisProxy;var e=this._axisProxies;for(var i in e)if(e.hasOwnProperty(i)&&e[i].hostedBy(this))return e[i];for(var i in e)if(e.hasOwnProperty(i)&&!e[i].hostedBy(this))return e[i]},getRangePropMode:function(){return this._rangePropMode.slice()}});function wT(e){var i={};return yT(["start","end","startValue","endValue","throttle"],function(t){e.hasOwnProperty(t)&&(i[t]=e[t])}),i}function bT(t,a){var o=t._rangePropMode,r=t.get("rangeMode");yT([["start","startValue"],["end","endValue"]],function(t,e){var i=null!=a[t[0]],n=null!=a[t[1]];i&&!n?o[e]="percent":!i&&n?o[e]="value":r?o[e]=r[e]:i&&(o[e]="percent")})}var ST=Kh.extend({type:"dataZoom",render:function(t,e,i,n){this.dataZoomModel=t,this.ecModel=e,this.api=i},getTargetCoordInfo:function(){var t=this.dataZoomModel,a=this.ecModel,o={};return t.eachTargetAxis(function(t,e){var i=a.getComponent(t.axis,e);if(i){var n=i.getCoordSysModel();n&&function(t,e,i,n){for(var a,o=0;o<i.length;o++)if(i[o].model===t){a=i[o];break}a||i.push(a={model:t,axisModels:[],coordIndex:n});a.axisModels.push(e)}(n,i,o[n.mainType]||(o[n.mainType]=[]),n.componentIndex)}},this),o}});_T.extend({type:"dataZoom.select"}),ST.extend({type:"dataZoom.select"}),Qd({getTargetSeries:function(t){var n=Q();return t.eachComponent("dataZoom",function(t){t.eachTargetAxis(function(t,e,i){E(i.getAxisProxy(t.name,e).getTargetSeriesModels(),function(t){n.set(t.uid,t)})})}),n},modifyOutputEnd:!0,overallReset:function(t,n){t.eachComponent("dataZoom",function(t){t.eachTargetAxis(function(t,e,i){i.getAxisProxy(t.name,e).reset(i,n)}),t.eachTargetAxis(function(t,e,i){i.getAxisProxy(t.name,e).filterData(i,n)})}),t.eachComponent("dataZoom",function(t){var e=t.findRepresentativeAxisProxy(),i=e.getDataPercentWindow(),n=e.getDataValueWindow();t.setCalculatedRange({start:i[0],end:i[1],startValue:n[0],endValue:n[1]})})}}),tf("dataZoom",function(i,t){var n=fT(T(t.eachComponent,t,"dataZoom"),dT,function(t,e){return t.get(e.axisIndex)}),a=[];t.eachComponent({mainType:"dataZoom",query:i},function(t,e){a.push.apply(a,n(t).nodes)}),E(a,function(t,e){t.setRawRange({start:i.start,end:i.end,startValue:i.startValue,endValue:i.endValue})})});var MT=gc.toolbox.dataZoom,IT=E;function AT(t,e,i){(this._brushController=new jw(i.getZr())).on("brush",T(this._onBrush,this)).mount(),this._isZoomActive}AT.defaultOption={show:!0,filterMode:"filter",icon:{zoom:"M0,13.5h26.9 M13.5,26.9V0 M32.1,13.5H58V58H13.5 V32.1",back:"M22,1.4L9.9,13.5l12.3,12.3 M10.3,13.5H54.9v44.6 H10.3v-26"},title:D(MT.title)};var TT=AT.prototype;TT.render=function(t,e,i,n){this.model=t,this.ecModel=e,this.api=i,function(t,e,i,n,a){var o=i._isZoomActive;n&&"takeGlobalCursor"===n.type&&(o="dataZoomSelect"===n.key&&n.dataZoomSelectActive);i._isZoomActive=o,t.setIconStatus("zoom",o?"emphasis":"normal");var r=new XA(CT(t.option),e,{include:["grid"]});i._brushController.setPanels(r.makePanelOpts(a,function(t){return t.xAxisDeclared&&!t.yAxisDeclared?"lineX":!t.xAxisDeclared&&t.yAxisDeclared?"lineY":"rect"})).enableBrush(!!o&&{brushType:"auto",brushStyle:{lineWidth:0,fill:"rgba(0,0,0,0.2)"}})}(t,e,this,n,i),function(t,e){t.setIconStatus("back",1<function(t){return rT(t).length}(e)?"emphasis":"normal")}(t,e)},TT.onclick=function(t,e,i){DT[i].call(this)},TT.remove=function(t,e){this._brushController.unmount()},TT.dispose=function(t,e){this._brushController.dispose()};var DT={zoom:function(){var t=!this._isZoomActive;this.api.dispatchAction({type:"takeGlobalCursor",key:"dataZoomSelect",dataZoomSelectActive:t})},back:function(){this._dispatchZoomAction(function(t){var n=rT(t),e=n[n.length-1];1<n.length&&n.pop();var a={};return aT(e,function(t,e){for(var i=n.length-1;0<=i;i--){if(t=n[i][e]){a[e]=t;break}}}),a}(this.ecModel))}};function CT(e){var i={};return E(["xAxisIndex","yAxisIndex"],function(t){i[t]=e[t],null==i[t]&&(i[t]="all"),!1!==i[t]&&"none"!==i[t]||(i[t]=[])}),i}TT._onBrush=function(t,e){if(e.isEnd&&t.length){var s={},l=this.ecModel;this._brushController.updateCovers([]),new XA(CT(this.model.option),l,{include:["grid"]}).matchOutputRanges(t,l,function(t,e,i){if("cartesian2d"===i.type){var n=t.brushType;"rect"===n?(a("x",i,e[0]),a("y",i,e[1])):a({lineX:"x",lineY:"y"}[n],i,e)}}),function(o,t){var r=rT(o);aT(t,function(t,e){for(var i=r.length-1;0<=i;i--){if(r[i][e])break}if(i<0){var n=o.queryComponents({mainType:"dataZoom",subType:"select",id:e})[0];if(n){var a=n.getPercentRange();r[0][e]={dataZoomId:e,start:a[0],end:a[1]}}}}),r.push(t)}(l,s),this._dispatchZoomAction(s)}function a(t,e,i){var n=e.getAxis(t),a=n.model,o=function(e,i,t){var n;return t.eachComponent({mainType:"dataZoom",subType:"select"},function(t){t.getAxisModel(e,i.componentIndex)&&(n=t)}),n}(t,a,l),r=o.findRepresentativeAxisProxy(a).getMinMaxSpan();null==r.minValueSpan&&null==r.maxValueSpan||(i=ww(0,i.slice(),n.scale.getExtent(),0,r.minValueSpan,r.maxValueSpan)),o&&(s[o.id]={dataZoomId:o.id,startValue:i[0],endValue:i[1]})}},TT._dispatchZoomAction=function(t){var i=[];IT(t,function(t,e){i.push(D(t))}),i.length&&this.api.dispatchAction({type:"dataZoom",from:this.uid,batch:i})},bA("dataZoom",AT),Jd(function(s){if(s){var l=s.dataZoom||(s.dataZoom=[]);k(l)||(s.dataZoom=l=[l]);var t=s.toolbox;if(t&&(k(t)&&(t=t[0]),t&&t.feature)){var e=t.feature.dataZoom;i("xAxis",e),i("yAxis",e)}}function i(n,a){if(a){var o=n+"Index",r=a[o];null==r||"all"===r||k(r)||(r=!1===r||"none"===r?[]:[r]),function(t,e){var i=s[t];k(i)||(i=i?[i]:[]);IT(i,e)}(n,function(t,e){if(null==r||"all"===r||-1!==_(r,e)){var i={type:"select",$fromToolbox:!0,filterMode:a.filterMode||"filter",id:"\0_ec_\0toolbox-dataZoom_"+n+e};i[o]=e,l.push(i)}})}}});var LT=gc.toolbox.restore;function kT(t){this.model=t}kT.defaultOption={show:!0,icon:"M3.8,33.4 M47,18.9h9.8V8.7 M56.3,20.1 C52.1,9,40.5,0.6,26.8,2.1C12.6,3.7,1.6,16.2,2.1,30.6 M13,41.1H3.1v10.2 M3.7,39.9c4.2,11.1,15.8,19.5,29.5,18 c14.2-1.6,25.2-14.1,24.7-28.5",title:LT.title},kT.prototype.onclick=function(t,e,i){!function(t){t[oT]=null}(t),e.dispatchAction({type:"restore",from:this.uid})},bA("restore",kT),tf({type:"restore",event:"restore",update:"prepareAndUpdate"},function(t,e){e.resetOption("recreate")}),sf({type:"tooltip",dependencies:["axisPointer"],defaultOption:{zlevel:0,z:60,show:!0,showContent:!0,trigger:"item",triggerOn:"mousemove|click",alwaysShowContent:!1,displayMode:"single",renderMode:"auto",confine:!1,showDelay:0,hideDelay:100,transitionDuration:.4,enterable:!1,backgroundColor:"rgba(50,50,50,0.7)",borderColor:"#333",borderRadius:4,borderWidth:0,padding:5,extraCssText:"",axisPointer:{type:"line",axis:"auto",animation:"auto",animationDurationUpdate:200,animationEasingUpdate:"exponentialOut",crossStyle:{color:"#999",width:1,type:"dashed",textStyle:{}}},textStyle:{color:"#fff",fontSize:14}}});var PT=E,NT=Bl,OT=["","-webkit-","-moz-","-o-"];function ET(a){var o=[],t=a.get("transitionDuration"),e=a.get("backgroundColor"),i=a.getModel("textStyle"),n=a.get("padding");return t&&o.push(function(t){var e="cubic-bezier(0.23, 1, 0.32, 1)",i="left "+t+"s "+e+",top "+t+"s "+e;return N(OT,function(t){return t+"transition:"+i}).join(";")}(t)),e&&(v.canvasSupported?o.push("background-Color:"+e):(o.push("background-Color:#"+Be(e)),o.push("filter:alpha(opacity=70)"))),PT(["width","color","radius"],function(t){var e="border-"+t,i=NT(e),n=a.get(i);null!=n&&o.push(e+":"+n+("color"===t?"":"px"))}),o.push(function(i){var n=[],t=i.get("fontSize"),e=i.getTextColor();return e&&n.push("color:"+e),n.push("font:"+i.getFont()),t&&n.push("line-height:"+Math.round(3*t/2)+"px"),PT(["decoration","align"],function(t){var e=i.get(t);e&&n.push("text-"+t+":"+e)}),n.join(";")}(i)),null!=n&&o.push("padding:"+Vl(n).join("px ")+"px"),o.join(";")+";"}function RT(i,t){if(v.wxa)return null;var e=document.createElement("div"),n=this._zr=t.getZr();this.el=e,this._x=t.getWidth()/2,this._y=t.getHeight()/2,i.appendChild(e),this._container=i,this._show=!1,this._hideTimeout;var a=this;e.onmouseenter=function(){a._enterable&&(clearTimeout(a._hideTimeout),a._show=!0),a._inContent=!0},e.onmousemove=function(t){if(t=t||window.event,!a._enterable){var e=n.handler;Vt(i,t,!0),e.dispatch("mousemove",t)}},e.onmouseleave=function(){a._enterable&&a._show&&a.hideLater(a._hideDelay),a._inContent=!1}}function zT(t){this._zr=t.getZr(),this._show=!1,this._hideTimeout}RT.prototype={constructor:RT,_enterable:!0,update:function(){var t=this._container,e=t.currentStyle||document.defaultView.getComputedStyle(t),i=t.style;"absolute"!==i.position&&"absolute"!==e.position&&(i.position="relative")},show:function(t){clearTimeout(this._hideTimeout);var e=this.el;e.style.cssText="position:absolute;display:block;border-style:solid;white-space:nowrap;z-index:9999999;"+ET(t)+";left:"+this._x+"px;top:"+this._y+"px;"+(t.get("extraCssText")||""),e.style.display=e.innerHTML?"block":"none",e.style.pointerEvents=this._enterable?"auto":"none",this._show=!0},setContent:function(t){this.el.innerHTML=null==t?"":t},setEnterable:function(t){this._enterable=t},getSize:function(){var t=this.el;return[t.clientWidth,t.clientHeight]},moveTo:function(t,e){var i,n=this._zr;n&&n.painter&&(i=n.painter.getViewportRootOffset())&&(t+=i.offsetLeft,e+=i.offsetTop);var a=this.el.style;a.left=t+"px",a.top=e+"px",this._x=t,this._y=e},hide:function(){this.el.style.display="none",this._show=!1},hideLater:function(t){!this._show||this._inContent&&this._enterable||(t?(this._hideDelay=t,this._show=!1,this._hideTimeout=setTimeout(T(this.hide,this),t)):this.hide())},isShow:function(){return this._show},getOuterSize:function(){var t=this.el.clientWidth,e=this.el.clientHeight;if(document.defaultView&&document.defaultView.getComputedStyle){var i=document.defaultView.getComputedStyle(this.el);i&&(t+=parseInt(i.borderLeftWidth,10)+parseInt(i.borderRightWidth,10),e+=parseInt(i.borderTopWidth,10)+parseInt(i.borderBottomWidth,10))}return{width:t,height:e}}},zT.prototype={constructor:zT,_enterable:!0,update:function(){},show:function(t){this._hideTimeout&&clearTimeout(this._hideTimeout),this.el.attr("show",!0),this._show=!0},setContent:function(t,e,i){this.el&&this._zr.remove(this.el);for(var n={},a=t,o="{marker",r=a.indexOf(o);0<=r;){var s=a.indexOf("|}"),l=a.substr(r+o.length,s-r-o.length);-1<l.indexOf("sub")?n["marker"+l]={textWidth:4,textHeight:4,textBorderRadius:2,textBackgroundColor:e[l],textOffset:[3,0]}:n["marker"+l]={textWidth:10,textHeight:10,textBorderRadius:5,textBackgroundColor:e[l]},r=(a=a.substr(s+1)).indexOf("{marker")}this.el=new Dr({style:{rich:n,text:t,textLineHeight:20,textBackgroundColor:i.get("backgroundColor"),textBorderRadius:i.get("borderRadius"),textFill:i.get("textStyle.color"),textPadding:i.get("padding")},z:i.get("z")}),this._zr.add(this.el);var u=this;this.el.on("mouseover",function(){u._enterable&&(clearTimeout(u._hideTimeout),u._show=!0),u._inContent=!0}),this.el.on("mouseout",function(){u._enterable&&u._show&&u.hideLater(u._hideDelay),u._inContent=!1})},setEnterable:function(t){this._enterable=t},getSize:function(){var t=this.el.getBoundingRect();return[t.width,t.height]},moveTo:function(t,e){this.el&&this.el.attr("position",[t,e])},hide:function(){this.el&&this.el.hide(),this._show=!1},hideLater:function(t){!this._show||this._inContent&&this._enterable||(t?(this._hideDelay=t,this._show=!1,this._hideTimeout=setTimeout(T(this.hide,this),t)):this.hide())},isShow:function(){return this._show},getOuterSize:function(){var t=this.getSize();return{width:t[0],height:t[1]}}};var BT=T,VT=E,GT=xl,FT=new Hr({shape:{x:-1,y:-1,width:2,height:2}});function WT(t){for(var e=t.pop();t.length;){var i=t.pop();i&&(dl.isInstance(i)&&(i=i.get("tooltip",!0)),"string"==typeof i&&(i={formatter:i}),e=new dl(i,e,e.ecModel))}return e}function HT(t,e){return t.dispatchAction||T(e.dispatchAction,e)}function ZT(t){return"center"===t||"middle"===t}lf({type:"tooltip",init:function(t,e){if(!v.node){var i,n=t.getComponent("tooltip").get("renderMode");this._renderMode=Ea(n),"html"===this._renderMode?(i=new RT(e.getDom(),e),this._newLine="<br/>"):(i=new zT(e),this._newLine="\n"),this._tooltipContent=i}},render:function(t,e,i){if(!v.node){this.group.removeAll(),this._tooltipModel=t,this._ecModel=e,this._api=i,this._lastDataByCoordSys=null,this._alwaysShowContent=t.get("alwaysShowContent");var n=this._tooltipContent;n.update(),n.setEnterable(t.get("enterable")),this._initGlobalListener(),this._keepShow()}},_initGlobalListener:function(){var n=this._tooltipModel.get("triggerOn");PM("itemTooltip",this._api,BT(function(t,e,i){"none"!==n&&(0<=n.indexOf(t)?this._tryShow(e,i):"leave"===t&&this._hide(i))},this))},_keepShow:function(){var t=this._tooltipModel,e=this._ecModel,i=this._api;if(null!=this._lastX&&null!=this._lastY&&"none"!==t.get("triggerOn")){var n=this;clearTimeout(this._refreshUpdateTimeout),this._refreshUpdateTimeout=setTimeout(function(){i.isDisposed()||n.manuallyShowTip(t,e,i,{x:n._lastX,y:n._lastY})})}},manuallyShowTip:function(t,e,i,n){if(n.from!==this.uid&&!v.node){var a=HT(n,i);this._ticket="";var o=n.dataByCoordSys;if(n.tooltip&&null!=n.x&&null!=n.y){var r=FT;r.position=[n.x,n.y],r.update(),r.tooltip=n.tooltip,this._tryShow({offsetX:n.x,offsetY:n.y,target:r},a)}else if(o)this._tryShow({offsetX:n.x,offsetY:n.y,position:n.position,event:{},dataByCoordSys:n.dataByCoordSys,tooltipOption:n.tooltipOption},a);else if(null!=n.seriesIndex){if(this._manuallyAxisShowTip(t,e,i,n))return;var s=wM(n,e),l=s.point[0],u=s.point[1];null!=l&&null!=u&&this._tryShow({offsetX:l,offsetY:u,position:n.position,target:s.el,event:{}},a)}else null!=n.x&&null!=n.y&&(i.dispatchAction({type:"updateAxisPointer",x:n.x,y:n.y}),this._tryShow({offsetX:n.x,offsetY:n.y,position:n.position,target:i.getZr().findHover(n.x,n.y).target,event:{}},a))}},manuallyHideTip:function(t,e,i,n){var a=this._tooltipContent;!this._alwaysShowContent&&this._tooltipModel&&a.hideLater(this._tooltipModel.get("hideDelay")),this._lastX=this._lastY=null,n.from!==this.uid&&this._hide(HT(n,i))},_manuallyAxisShowTip:function(t,e,i,n){var a=n.seriesIndex,o=n.dataIndex,r=e.getComponent("axisPointer").coordSysAxesInfo;if(null!=a&&null!=o&&null!=r){var s=e.getSeriesByIndex(a);if(s)if("axis"===(t=WT([s.getData().getItemModel(o),s,(s.coordinateSystem||{}).model,t])).get("trigger"))return i.dispatchAction({type:"updateAxisPointer",seriesIndex:a,dataIndex:o,position:n.position}),!0}},_tryShow:function(t,e){var i=t.target;if(this._tooltipModel){this._lastX=t.offsetX,this._lastY=t.offsetY;var n=t.dataByCoordSys;n&&n.length?this._showAxisTooltip(n,t):i&&null!=i.dataIndex?(this._lastDataByCoordSys=null,this._showSeriesItemTooltip(t,i,e)):i&&i.tooltip?(this._lastDataByCoordSys=null,this._showComponentItemTooltip(t,i,e)):(this._lastDataByCoordSys=null,this._hide(e))}},_showOrMove:function(t,e){var i=t.get("showDelay");e=T(e,this),clearTimeout(this._showTimout),0<i?this._showTimout=setTimeout(e,i):e()},_showAxisTooltip:function(t,e){var d=this._ecModel,i=this._tooltipModel,n=[e.offsetX,e.offsetY],a=[],f=[],o=WT([e.tooltipOption,i]),p=this._renderMode,r=this._newLine,g={};VT(t,function(t){VT(t.dataByAxis,function(s){var l=d.getComponent(s.axisDim+"Axis",s.axisIndex),u=s.value,h=[];if(l&&null!=u){var c=YM(u,l.axis,d,s.seriesDataIndices,s.valueLabelOpt);E(s.seriesDataIndices,function(t){var e=d.getSeriesByIndex(t.seriesIndex),i=t.dataIndexInside,n=e&&e.getDataParams(i);if(n.axisDim=s.axisDim,n.axisIndex=s.axisIndex,n.axisType=s.axisType,n.axisId=s.axisId,n.axisValue=Gp(l.axis,u),n.axisValueLabel=c,n){f.push(n);var a,o=e.formatTooltip(i,!0,null,p);if(z(o)){a=o.html;var r=o.markers;m(g,r)}else a=o;h.push(a)}});var t=c;"html"!==p?a.push(h.join(r)):a.push((t?Wl(t)+r:"")+h.join(r))}})},this),a.reverse(),a=a.join(this._newLine+this._newLine);var s=e.position;this._showOrMove(o,function(){this._updateContentNotChangedOnAxis(t)?this._updatePosition(o,s,n[0],n[1],this._tooltipContent,f):this._showTooltipContent(o,a,f,Math.random(),n[0],n[1],s,void 0,g)})},_showSeriesItemTooltip:function(t,e,i){var n=this._ecModel,a=e.seriesIndex,o=n.getSeriesByIndex(a),r=e.dataModel||o,s=e.dataIndex,l=e.dataType,u=r.getData(),h=WT([u.getItemModel(s),r,o&&(o.coordinateSystem||{}).model,this._tooltipModel]),c=h.get("trigger");if(null==c||"item"===c){var d,f,p=r.getDataParams(s,l),g=r.formatTooltip(s,!1,l,this._renderMode);f=z(g)?(d=g.html,g.markers):(d=g,null);var m="item_"+r.name+"_"+s;this._showOrMove(h,function(){this._showTooltipContent(h,d,p,m,t.offsetX,t.offsetY,t.position,t.target,f)}),i({type:"showTip",dataIndexInside:s,dataIndex:u.getRawIndex(s),seriesIndex:a,from:this.uid})}},_showComponentItemTooltip:function(t,e,i){var n=e.tooltip;if("string"==typeof n){n={content:n,formatter:n}}var a=new dl(n,this._tooltipModel,this._ecModel),o=a.get("content"),r=Math.random();this._showOrMove(a,function(){this._showTooltipContent(a,o,a.get("formatterParams")||{},r,t.offsetX,t.offsetY,t.position,e)}),i({type:"showTip",from:this.uid})},_showTooltipContent:function(i,t,n,e,a,o,r,s,l){if(this._ticket="",i.get("showContent")&&i.get("show")){var u=this._tooltipContent,h=i.get("formatter");r=r||i.get("position");var c=t;if(h&&"string"==typeof h)c=Ul(h,n,!0);else if("function"==typeof h){var d=BT(function(t,e){t===this._ticket&&(u.setContent(e,l,i),this._updatePosition(i,r,a,o,u,n,s))},this);this._ticket=e,c=h(n,e,d)}u.setContent(c,l,i),u.show(i),this._updatePosition(i,r,a,o,u,n,s)}},_updatePosition:function(t,e,i,n,a,o,r){var s=this._api.getWidth(),l=this._api.getHeight();e=e||t.get("position");var u=a.getSize(),h=t.get("align"),c=t.get("verticalAlign"),d=r&&r.getBoundingRect().clone();if(r&&d.applyTransform(r.transform),"function"==typeof e&&(e=e([i,n],o,a.el,d,{viewSize:[s,l],contentSize:u.slice()})),k(e))i=GT(e[0],s),n=GT(e[1],l);else if(z(e)){e.width=u[0],e.height=u[1];var f=au(e,{width:s,height:l});i=f.x,n=f.y,c=h=null}else if("string"==typeof e&&r){i=(p=function(t,e,i){var n=i[0],a=i[1],o=0,r=0,s=e.width,l=e.height;switch(t){case"inside":o=e.x+s/2-n/2,r=e.y+l/2-a/2;break;case"top":o=e.x+s/2-n/2,r=e.y-a-5;break;case"bottom":o=e.x+s/2-n/2,r=e.y+l+5;break;case"left":o=e.x-n-5,r=e.y+l/2-a/2;break;case"right":o=e.x+s+5,r=e.y+l/2-a/2}return[o,r]}(e,d,u))[0],n=p[1]}else{var p;i=(p=function(t,e,i,n,a,o,r){var s=i.getOuterSize(),l=s.width,u=s.height;null!=o&&(n<t+l+o?t-=l+o:t+=o);null!=r&&(a<e+u+r?e-=u+r:e+=r);return[t,e]}(i,n,a,s,l,h?null:20,c?null:20))[0],n=p[1]}h&&(i-=ZT(h)?u[0]/2:"right"===h?u[0]:0),c&&(n-=ZT(c)?u[1]/2:"bottom"===c?u[1]:0),t.get("confine")&&(i=(p=function(t,e,i,n,a){var o=i.getOuterSize(),r=o.width,s=o.height;return t=Math.min(t+r,n)-r,e=Math.min(e+s,a)-s,t=Math.max(t,0),e=Math.max(e,0),[t,e]}(i,n,a,s,l))[0],n=p[1]);a.moveTo(i,n)},_updateContentNotChangedOnAxis:function(n){var t=this._lastDataByCoordSys,r=!!t&&t.length===n.length;return r&&VT(t,function(t,e){var i=t.dataByAxis||{},o=(n[e]||{}).dataByAxis||[];(r&=i.length===o.length)&&VT(i,function(t,e){var i=o[e]||{},n=t.seriesDataIndices||[],a=i.seriesDataIndices||[];(r&=t.value===i.value&&t.axisType===i.axisType&&t.axisId===i.axisId&&n.length===a.length)&&VT(n,function(t,e){var i=a[e];r&=t.seriesIndex===i.seriesIndex&&t.dataIndex===i.dataIndex})})}),this._lastDataByCoordSys=n,!!r},_hide:function(t){this._lastDataByCoordSys=null,t({type:"hideTip",from:this.uid})},dispose:function(t,e){v.node||(this._tooltipContent.hide(),EM("itemTooltip",e))}}),tf({type:"showTip",event:"showTip",update:"tooltip:manuallyShowTip"},function(){}),tf({type:"hideTip",event:"hideTip",update:"tooltip:manuallyHideTip"},function(){});var UT=["rect","polygon","keep","clear"];var XT=E;function YT(t){if(t)for(var e in t)if(t.hasOwnProperty(e))return!0}function jT(t,e,o){var i={};return XT(e,function(n){var a=i[n]=function(){function t(){}return t.prototype.__hidden=t.prototype,new t}();XT(t[n],function(t,e){if(Bx.isValidType(e)){var i={type:e,visual:t};o&&o(i,n),a[e]=new Bx(i),"opacity"===e&&((i=D(i)).type="colorAlpha",a.__hidden.__alphaForOpacity=new Bx(i))}})}),i}function qT(e,i,t){var n;E(t,function(t){i.hasOwnProperty(t)&&YT(i[t])&&(n=!0)}),n&&E(t,function(t){i.hasOwnProperty(t)&&YT(i[t])?e[t]=D(i[t]):delete e[t]})}var KT={lineX:$T(0),lineY:$T(1),rect:{point:function(t,e,i){return t&&i.boundingRect.contain(t[0],t[1])},rect:function(t,e,i){return t&&i.boundingRect.intersect(t)}},polygon:{point:function(t,e,i){return t&&i.boundingRect.contain(t[0],t[1])&&ng(i.range,t[0],t[1])},rect:function(t,e,i){var n=i.range;if(!t||n.length<=1)return!1;var a=t.x,o=t.y,r=t.width,s=t.height,l=n[0];return!!(ng(n,a,o)||ng(n,a+r,o)||ng(n,a,o+s)||ng(n,a+r,o+s)||bi.create(t).contain(l[0],l[1])||il(a,o,a+r,o,n)||il(a,o,a,o+s,n)||il(a+r,o,a+r,o+s,n)||il(a,o+s,a+r,o+s,n))||void 0}}};function $T(o){var r=["x","y"],s=["width","height"];return{point:function(t,e,i){if(t){var n=i.range;return JT(t[o],n)}},rect:function(t,e,i){if(t){var n=i.range,a=[t[r[o]],t[r[o]]+t[s[o]]];return a[1]<a[0]&&a.reverse(),JT(a[0],n)||JT(a[1],n)||JT(n[0],a)||JT(n[1],a)}}}}function JT(t,e){return e[0]<=t&&t<=e[1]}var QT=["inBrush","outOfBrush"],tD="__ecBrushSelect",eD="__ecInBrushSelectEvent",iD=cd.VISUAL.BRUSH;function nD(t,e){if(!t.isDisposed()){var i=t.getZr();i[eD]=!0,t.dispatchAction({type:"brushSelect",batch:e}),i[eD]=!1}}function aD(t,e,i,n){for(var a=0,o=e.length;a<o;a++){var r=e[a];if(t[r.brushType](n,i,r.selectors,r))return!0}}function oD(t){var r=t.brushSelector;if(R(r)){var e=[];return E(KT,function(o,t){e[t]=function(t,e,i,n){var a=e.getItemLayout(t);return o[r](a,i,n)}}),e}if(O(r)){var i={};return E(KT,function(t,e){i[e]=r}),i}return r}nf(iD,function(e,t,i){e.eachComponent({mainType:"brush"},function(t){i&&"takeGlobalCursor"===i.type&&t.setBrushOption("brush"===i.key?i.brushOption:{brushType:!1}),(t.brushTargetManager=new XA(t.option,e)).setInputRanges(t.areas,e)})}),af(iD,function(p,t,e){var a,g,m=[];p.eachComponent({mainType:"brush"},function(o,t){var s={brushId:o.id,brushIndex:t,brushName:o.name,areas:D(o.areas),selected:[]};m.push(s);var e=o.option,i=e.brushLink,n=[],l=[],u=[],h=0;t||(a=e.throttleType,g=e.throttleDelay);var r=N(o.areas,function(t){return function(i){var n=i.selectors={};return E(KT[i.brushType],function(e,t){n[t]=function(t){return e(t,n,i)}}),i}(C({boundingRect:rD[t.brushType](t)},t))}),c=jT(o.option,QT,function(t){t.mappingMethod="fixed"});function d(t){return"all"===i||n[t]}function f(t){return!!t.length}k(i)&&E(i,function(t){n[t]=1}),p.eachSeries(function(t,e){var i=u[e]=[];"parallel"===t.subType?function(t,e){var i=t.coordinateSystem;h|=i.hasAxisBrushed(),d(e)&&i.eachActiveState(t.getData(),function(t,e){"active"===t&&(l[e]=1)})}(t,e):function(e,t,i){var n=oD(e);if(!n||function(t,e){var i=t.option.seriesIndex;return null!=i&&"all"!==i&&(k(i)?_(i,e)<0:e!==i)}(o,t))return;if(E(r,function(t){n[t.brushType]&&o.brushTargetManager.controlSeries(t,e,p)&&i.push(t),h|=f(i)}),d(t)&&f(i)){var a=e.getData();a.each(function(t){aD(n,i,a,t)&&(l[t]=1)})}}(t,e,i)}),p.eachSeries(function(t,e){var i={seriesId:t.id,seriesIndex:e,seriesName:t.name,dataIndex:[]};s.selected.push(i);var n=oD(t),a=u[e],o=t.getData(),r=d(e)?function(t){return l[t]?(i.dataIndex.push(o.getRawIndex(t)),"inBrush"):"outOfBrush"}:function(t){return aD(n,a,o,t)?(i.dataIndex.push(o.getRawIndex(t)),"inBrush"):"outOfBrush"};(d(e)?h:f(a))&&function(t,u,h,c,d,f){var p,g={};function m(t){return h.getItemVisual(p,t)}function v(t,e){h.setItemVisual(p,t,e)}function e(t,e){p=null==f?t:e;var i=h.getRawDataItem(p);if(!i||!1!==i.visualMap)for(var n=c.call(d,t),a=u[n],o=g[n],r=0,s=o.length;r<s;r++){var l=o[r];a[l]&&a[l].applyVisual(t,m,v)}}E(t,function(t){var e=Bx.prepareVisualTypes(u[t]);g[t]=e}),null==f?h.each(e):h.each([f],e)}(QT,c,o,r)})}),function(t,e,i,n,a){if(!a)return;var o=t.getZr();if(o[eD])return;o[tD]||(o[tD]=nD);dc(o,tD,i,e)(t,n)}(t,a,g,m,e)});var rD={lineX:et,lineY:et,rect:function(t){return sD(t.range)},polygon:function(t){for(var e,i=t.range,n=0,a=i.length;n<a;n++){e=e||[[1/0,-1/0],[1/0,-1/0]];var o=i[n];o[0]<e[0][0]&&(e[0][0]=o[0]),o[0]>e[0][1]&&(e[0][1]=o[0]),o[1]<e[1][0]&&(e[1][0]=o[1]),o[1]>e[1][1]&&(e[1][1]=o[1])}return e&&sD(e)}};function sD(t){return new bi(t[0][0],t[1][0],t[0][1]-t[0][0],t[1][1]-t[1][0])}var lD=["#ddd"];sf({type:"brush",dependencies:["geo","grid","xAxis","yAxis","parallel","series"],defaultOption:{toolbox:null,brushLink:null,seriesIndex:"all",geoIndex:null,xAxisIndex:null,yAxisIndex:null,brushType:"rect",brushMode:"single",transformable:!0,brushStyle:{borderWidth:1,color:"rgba(120,140,180,0.3)",borderColor:"rgba(120,140,180,0.8)"},throttleType:"fixRate",throttleDelay:0,removeOnClick:!0,z:1e4},areas:[],brushType:null,brushOption:{},coordInfoList:[],optionUpdated:function(t,e){var i=this.option;e||qT(i,t,["inBrush","outOfBrush"]);var n=i.inBrush=i.inBrush||{};i.outOfBrush=i.outOfBrush||{color:lD},n.hasOwnProperty("liftZ")||(n.liftZ=5)},setAreas:function(t){t&&(this.areas=N(t,function(t){return uD(this.option,t)},this))},setBrushOption:function(t){this.brushOption=uD(this.option,t),this.brushType=this.brushOption.brushType}});function uD(t,e){return m({brushType:t.brushType,brushMode:t.brushMode,transformable:t.transformable,brushStyle:new dl(t.brushStyle).getItemStyle(),removeOnClick:t.removeOnClick,z:t.z},e,!0)}function hD(t,e,i,n){n&&n.$from===t.id||this._brushController.setPanels(t.brushTargetManager.makePanelOpts(i)).enableBrush(t.brushOption).updateCovers(t.areas.slice())}lf({type:"brush",init:function(t,e){this.ecModel=t,this.api=e,this.model,(this._brushController=new jw(e.getZr())).on("brush",T(this._onBrush,this)).mount()},render:function(t){return this.model=t,hD.apply(this,arguments)},updateTransform:hD,updateView:hD,dispose:function(){this._brushController.dispose()},_onBrush:function(t,e){var i=this.model.id;this.model.brushTargetManager.setOutputRanges(t,this.ecModel),e.isEnd&&!e.removeOnClick||this.api.dispatchAction({type:"brush",brushId:i,areas:D(t),$from:i}),e.isEnd&&this.api.dispatchAction({type:"brushEnd",brushId:i,areas:D(t),$from:i})}}),tf({type:"brush",event:"brush"},function(e,t){t.eachComponent({mainType:"brush",query:e},function(t){t.setAreas(e.areas)})}),tf({type:"brushSelect",event:"brushSelected",update:"none"},function(){}),tf({type:"brushEnd",event:"brushEnd",update:"none"},function(){});var cD=gc.toolbox.brush;function dD(t,e,i){this.model=t,this.ecModel=e,this.api=i,this._brushType,this._brushMode}dD.defaultOption={show:!0,type:["rect","polygon","lineX","lineY","keep","clear"],icon:{rect:"M7.3,34.7 M0.4,10V-0.2h9.8 M89.6,10V-0.2h-9.8 M0.4,60v10.2h9.8 M89.6,60v10.2h-9.8 M12.3,22.4V10.5h13.1 M33.6,10.5h7.8 M49.1,10.5h7.8 M77.5,22.4V10.5h-13 M12.3,31.1v8.2 M77.7,31.1v8.2 M12.3,47.6v11.9h13.1 M33.6,59.5h7.6 M49.1,59.5 h7.7 M77.5,47.6v11.9h-13",polygon:"M55.2,34.9c1.7,0,3.1,1.4,3.1,3.1s-1.4,3.1-3.1,3.1 s-3.1-1.4-3.1-3.1S53.5,34.9,55.2,34.9z M50.4,51c1.7,0,3.1,1.4,3.1,3.1c0,1.7-1.4,3.1-3.1,3.1c-1.7,0-3.1-1.4-3.1-3.1 C47.3,52.4,48.7,51,50.4,51z M55.6,37.1l1.5-7.8 M60.1,13.5l1.6-8.7l-7.8,4 M59,19l-1,5.3 M24,16.1l6.4,4.9l6.4-3.3 M48.5,11.6 l-5.9,3.1 M19.1,12.8L9.7,5.1l1.1,7.7 M13.4,29.8l1,7.3l6.6,1.6 M11.6,18.4l1,6.1 M32.8,41.9 M26.6,40.4 M27.3,40.2l6.1,1.6 M49.9,52.1l-5.6-7.6l-4.9-1.2",lineX:"M15.2,30 M19.7,15.6V1.9H29 M34.8,1.9H40.4 M55.3,15.6V1.9H45.9 M19.7,44.4V58.1H29 M34.8,58.1H40.4 M55.3,44.4 V58.1H45.9 M12.5,20.3l-9.4,9.6l9.6,9.8 M3.1,29.9h16.5 M62.5,20.3l9.4,9.6L62.3,39.7 M71.9,29.9H55.4",lineY:"M38.8,7.7 M52.7,12h13.2v9 M65.9,26.6V32 M52.7,46.3h13.2v-9 M24.9,12H11.8v9 M11.8,26.6V32 M24.9,46.3H11.8v-9 M48.2,5.1l-9.3-9l-9.4,9.2 M38.9-3.9V12 M48.2,53.3l-9.3,9l-9.4-9.2 M38.9,62.3V46.4",keep:"M4,10.5V1h10.3 M20.7,1h6.1 M33,1h6.1 M55.4,10.5V1H45.2 M4,17.3v6.6 M55.6,17.3v6.6 M4,30.5V40h10.3 M20.7,40 h6.1 M33,40h6.1 M55.4,30.5V40H45.2 M21,18.9h62.9v48.6H21V18.9z",clear:"M22,14.7l30.9,31 M52.9,14.7L22,45.7 M4.7,16.8V4.2h13.1 M26,4.2h7.8 M41.6,4.2h7.8 M70.3,16.8V4.2H57.2 M4.7,25.9v8.6 M70.3,25.9v8.6 M4.7,43.2v12.6h13.1 M26,55.8h7.8 M41.6,55.8h7.8 M70.3,43.2v12.6H57.2"},title:D(cD.title)};var fD=dD.prototype;fD.render=fD.updateView=function(e,t,i){var n,a,o;t.eachComponent({mainType:"brush"},function(t){n=t.brushType,a=t.brushOption.brushMode||"single",o|=t.areas.length}),this._brushType=n,this._brushMode=a,E(e.get("type",!0),function(t){e.setIconStatus(t,("keep"===t?"multiple"===a:"clear"===t?o:t===n)?"emphasis":"normal")})},fD.getIcons=function(){var t=this.model,e=t.get("icon",!0),i={};return E(t.get("type",!0),function(t){e[t]&&(i[t]=e[t])}),i},fD.onclick=function(t,e,i){var n=this._brushType,a=this._brushMode;"clear"===i?(e.dispatchAction({type:"axisAreaSelect",intervals:[]}),e.dispatchAction({type:"brush",command:"clear",areas:[]})):e.dispatchAction({type:"takeGlobalCursor",key:"brush",brushOption:{brushType:"keep"===i?n:n!==i&&i,brushMode:"keep"===i?"multiple"===a?"single":"multiple":a}})},bA("brush",dD),Jd(function(t,e){var i=t&&t.brush;if(k(i)||(i=i?[i]:[]),i.length){var n=[];E(i,function(t){var e=t.hasOwnProperty("toolbox")?t.toolbox:[];e instanceof Array&&(n=n.concat(e))});var a=t&&t.toolbox;k(a)&&(a=a[0]),a||(a={feature:{}},t.toolbox=[a]);var o=a.feature||(a.feature={}),r=o.brush||(o.brush={}),s=r.type||(r.type=[]);s.push.apply(s,n),function(i){var e={};E(i,function(t){e[t]=1}),i.length=0,E(e,function(t,e){i.push(e)})}(s),e&&!s.length&&s.push.apply(s,UT)}}),sf({type:"title",layoutMode:{type:"box",ignoreSize:!0},defaultOption:{zlevel:0,z:6,show:!0,text:"",target:"blank",subtext:"",subtarget:"blank",left:0,top:0,backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderWidth:0,padding:5,itemGap:10,textStyle:{fontSize:18,fontWeight:"bolder",color:"#333"},subtextStyle:{color:"#aaa"}}}),lf({type:"title",render:function(t,e,i){if(this.group.removeAll(),t.get("show")){var n=this.group,a=t.getModel("textStyle"),o=t.getModel("subtextStyle"),r=t.get("textAlign"),s=H(t.get("textBaseline"),t.get("textVerticalAlign")),l=new Dr({style:Gs({},a,{text:t.get("text"),textFill:a.getTextColor()},{disableBox:!0}),z2:10}),u=l.getBoundingRect(),h=t.get("subtext"),c=new Dr({style:Gs({},o,{text:h,textFill:o.getTextColor(),y:u.height+t.get("itemGap"),textVerticalAlign:"top"},{disableBox:!0}),z2:10}),d=t.get("link"),f=t.get("sublink"),p=t.get("triggerEvent",!0);l.silent=!d&&!p,c.silent=!f&&!p,d&&l.on("click",function(){window.open(d,"_"+t.get("target"))}),f&&c.on("click",function(){window.open(f,"_"+t.get("subtarget"))}),l.eventData=c.eventData=p?{componentType:"title",componentIndex:t.componentIndex}:null,n.add(l),h&&n.add(c);var g=n.getBoundingRect(),m=t.getBoxLayoutParams();m.width=g.width,m.height=g.height;var v=au(m,{width:i.getWidth(),height:i.getHeight()},t.get("padding"));r||("middle"===(r=t.get("left")||t.get("right"))&&(r="center"),"right"===r?v.x+=v.width:"center"===r&&(v.x+=v.width/2)),s||("center"===(s=t.get("top")||t.get("bottom"))&&(s="middle"),"bottom"===s?v.y+=v.height:"middle"===s&&(v.y+=v.height/2),s=s||"top"),n.attr("position",[v.x,v.y]);var y={textAlign:r,textVerticalAlign:s};l.setStyle(y),c.setStyle(y),g=n.getBoundingRect();var x=v.margin,_=t.getItemStyle(["color","opacity"]);_.fill=t.get("backgroundColor");var w=new Hr({shape:{x:g.x-x[3],y:g.y-x[0],width:g.width+x[1]+x[3],height:g.height+x[0]+x[2],r:t.get("borderRadius")},style:_,subPixelOptimize:!0,silent:!0});n.add(w)}}});function pD(t){var e=t.itemStyle||(t.itemStyle={}),i=e.emphasis||(e.emphasis={}),n=t.label||t.label||{},a=n.normal||(n.normal={}),o={normal:1,emphasis:1};E(n,function(t,e){o[e]||gD(a,e)||(a[e]=t)}),i.label&&!gD(n,"emphasis")&&(n.emphasis=i.label,delete i.label)}function gD(t,e){return t.hasOwnProperty(e)}fu.registerSubTypeDefaulter("timeline",function(){return"slider"}),tf({type:"timelineChange",event:"timelineChanged",update:"prepareAndUpdate"},function(t,e){var i=e.getComponent("timeline");return i&&null!=t.currentIndex&&(i.setCurrentIndex(t.currentIndex),!i.get("loop",!0)&&i.isIndexMax()&&i.setPlayState(!1)),e.resetOption("timeline"),C({currentIndex:i.option.currentIndex},t)}),tf({type:"timelinePlayChange",event:"timelinePlayChanged",update:"update"},function(t,e){var i=e.getComponent("timeline");i&&null!=t.playState&&i.setPlayState(t.playState)});var mD=fu.extend({type:"timeline",layoutMode:"box",defaultOption:{zlevel:0,z:4,show:!0,axisType:"time",realtime:!0,left:"20%",top:null,right:"20%",bottom:0,width:null,height:40,padding:5,controlPosition:"left",autoPlay:!1,rewind:!1,loop:!0,playInterval:2e3,currentIndex:0,itemStyle:{},label:{color:"#000"},data:[]},init:function(t,e,i){this._data,this._names,this.mergeDefaultAndTheme(t,i),this._initData()},mergeOption:function(t){mD.superApply(this,"mergeOption",arguments),this._initData()},setCurrentIndex:function(t){null==t&&(t=this.option.currentIndex);var e=this._data.count();this.option.loop?t=(t%e+e)%e:(e<=t&&(t=e-1),t<0&&(t=0)),this.option.currentIndex=t},getCurrentIndex:function(){return this.option.currentIndex},isIndexMax:function(){return this.getCurrentIndex()>=this._data.count()-1},setPlayState:function(t){this.option.autoPlay=!!t},getPlayState:function(){return!!this.option.autoPlay},_initData:function(){var t=this.option,e=t.data||[],i=t.axisType,a=this._names=[];if("category"===i){var o=[];E(e,function(t,e){var i,n=Ma(t);z(t)?(i=D(t)).value=e:i=e,o.push(i),R(n)||null!=n&&!isNaN(n)||(n=""),a.push(n+"")}),e=o}var n={category:"ordinal",time:"time"}[i]||"number";(this._data=new Tf([{name:"value",type:n}],this)).initData(e,a)},getData:function(){return this._data},getCategories:function(){if("category"===this.get("axisType"))return this._names.slice()}});b(mD.extend({type:"timeline.slider",defaultOption:{backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderWidth:0,orient:"horizontal",inverse:!1,tooltip:{trigger:"item"},symbol:"emptyCircle",symbolSize:10,lineStyle:{show:!0,width:2,color:"#304654"},label:{position:"auto",show:!0,interval:"auto",rotate:0,color:"#304654"},itemStyle:{color:"#304654",borderWidth:1},checkpointStyle:{symbol:"circle",symbolSize:13,color:"#c23531",borderWidth:5,borderColor:"rgba(194,53,49, 0.5)",animation:!0,animationDuration:300,animationEasing:"quinticInOut"},controlStyle:{show:!0,showPlayBtn:!0,showPrevBtn:!0,showNextBtn:!0,itemSize:22,itemGap:12,position:"left",playIcon:"path://M31.6,53C17.5,53,6,41.5,6,27.4S17.5,1.8,31.6,1.8C45.7,1.8,57.2,13.3,57.2,27.4S45.7,53,31.6,53z M31.6,3.3 C18.4,3.3,7.5,14.1,7.5,27.4c0,13.3,10.8,24.1,24.1,24.1C44.9,51.5,55.7,40.7,55.7,27.4C55.7,14.1,44.9,3.3,31.6,3.3z M24.9,21.3 c0-2.2,1.6-3.1,3.5-2l10.5,6.1c1.899,1.1,1.899,2.9,0,4l-10.5,6.1c-1.9,1.1-3.5,0.2-3.5-2V21.3z",stopIcon:"path://M30.9,53.2C16.8,53.2,5.3,41.7,5.3,27.6S16.8,2,30.9,2C45,2,56.4,13.5,56.4,27.6S45,53.2,30.9,53.2z M30.9,3.5C17.6,3.5,6.8,14.4,6.8,27.6c0,13.3,10.8,24.1,24.101,24.1C44.2,51.7,55,40.9,55,27.6C54.9,14.4,44.1,3.5,30.9,3.5z M36.9,35.8c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H36c0.5,0,0.9,0.4,0.9,1V35.8z M27.8,35.8 c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H27c0.5,0,0.9,0.4,0.9,1L27.8,35.8L27.8,35.8z",nextIcon:"path://M18.6,50.8l22.5-22.5c0.2-0.2,0.3-0.4,0.3-0.7c0-0.3-0.1-0.5-0.3-0.7L18.7,4.4c-0.1-0.1-0.2-0.3-0.2-0.5 c0-0.4,0.3-0.8,0.8-0.8c0.2,0,0.5,0.1,0.6,0.3l23.5,23.5l0,0c0.2,0.2,0.3,0.4,0.3,0.7c0,0.3-0.1,0.5-0.3,0.7l-0.1,0.1L19.7,52 c-0.1,0.1-0.3,0.2-0.5,0.2c-0.4,0-0.8-0.3-0.8-0.8C18.4,51.2,18.5,51,18.6,50.8z",prevIcon:"path://M43,52.8L20.4,30.3c-0.2-0.2-0.3-0.4-0.3-0.7c0-0.3,0.1-0.5,0.3-0.7L42.9,6.4c0.1-0.1,0.2-0.3,0.2-0.5 c0-0.4-0.3-0.8-0.8-0.8c-0.2,0-0.5,0.1-0.6,0.3L18.3,28.8l0,0c-0.2,0.2-0.3,0.4-0.3,0.7c0,0.3,0.1,0.5,0.3,0.7l0.1,0.1L41.9,54 c0.1,0.1,0.3,0.2,0.5,0.2c0.4,0,0.8-0.3,0.8-0.8C43.2,53.2,43.1,53,43,52.8z",color:"#304654",borderColor:"#304654",borderWidth:1},emphasis:{label:{show:!0,color:"#c23531"},itemStyle:{color:"#c23531"},controlStyle:{color:"#c23531",borderColor:"#c23531",borderWidth:2}},data:[]}}),Th);function vD(t,e,i,n){vg.call(this,t,e,i),this.type=n||"value",this.model=null}var yD=Kh.extend({type:"timeline"});vD.prototype={constructor:vD,getLabelModel:function(){return this.model.getModel("label")},isHorizontal:function(){return"horizontal"===this.model.get("orient")}},w(vD,vg);var xD=T,_D=E,wD=Math.PI;function bD(t,e,i,n,a,o){var r=e.get("color");a?(a.setColor(r),i.add(a),o&&o.onUpdate(a)):((a=Jp(t.get("symbol"),-1,-1,2,2,r)).setStyle("strokeNoScale",!0),i.add(a),o&&o.onCreate(a));var s=e.getItemStyle(["color","symbol","symbolSize"]);a.setStyle(s),n=m({rectHover:!0,z2:100},n,!0);var l=t.get("symbolSize");(l=l instanceof Array?l.slice():[+l,+l])[0]/=2,l[1]/=2,n.scale=l;var u=t.get("symbolOffset");if(u){var h=n.position=n.position||[0,0];h[0]+=xl(u[0],l[0]),h[1]+=xl(u[1],l[1])}var c=t.get("symbolRotate");return n.rotation=(c||0)*Math.PI/180||0,a.attr(n),a.updateTransform(),a}function SD(t,e,i,n,a){if(!t.dragging){var o=n.getModel("checkpointStyle"),r=i.dataToCoord(n.getData().get(["value"],e));a||!o.get("animation",!0)?t.attr({position:[r,0]}):(t.stopAnimation(!0),t.animateTo({position:[r,0]},o.get("animationDuration",!0),o.get("animationEasing",!0)))}}yD.extend({type:"timeline.slider",init:function(t,e){this.api=e,this._axis,this._viewRect,this._timer,this._currentPointer,this._mainGroup,this._labelGroup},render:function(e,t,i,n){if(this.model=e,this.api=i,this.ecModel=t,this.group.removeAll(),e.get("show",!0)){var a=this._layout(e,i),o=this._createGroup("mainGroup"),r=this._createGroup("labelGroup"),s=this._axis=this._createAxis(a,e);e.formatTooltip=function(t){return Wl(s.scale.getLabel(t))},_D(["AxisLine","AxisTick","Control","CurrentPointer"],function(t){this["_render"+t](a,o,s,e)},this),this._renderAxisLabel(a,r,s,e),this._position(a,e)}this._doPlayStop()},remove:function(){this._clearTimer(),this.group.removeAll()},dispose:function(){this._clearTimer()},_layout:function(t,e){var i=t.get("label.position"),n=t.get("orient"),a=function(t,e){return au(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()},t.get("padding"))}(t,e);null==i||"auto"===i?i="horizontal"===n?a.y+a.height/2<e.getHeight()/2?"-":"+":a.x+a.width/2<e.getWidth()/2?"+":"-":isNaN(i)&&(i={horizontal:{top:"-",bottom:"+"},vertical:{left:"-",right:"+"}}[n][i]);var o,r,s,l,u={horizontal:"center",vertical:0<=i||"+"===i?"left":"right"},h={horizontal:0<=i||"+"===i?"top":"bottom",vertical:"middle"},c={horizontal:0,vertical:wD/2},d="vertical"===n?a.height:a.width,f=t.getModel("controlStyle"),p=f.get("show",!0),g=p?f.get("itemSize"):0,m=p?f.get("itemGap"):0,v=g+m,y=t.get("label.rotate")||0;y=y*wD/180;var x=f.get("position",!0),_=p&&f.get("showPlayBtn",!0),w=p&&f.get("showPrevBtn",!0),b=p&&f.get("showNextBtn",!0),S=0,M=d;return"left"===x||"bottom"===x?(_&&(o=[0,0],S+=v),w&&(r=[S,0],S+=v)):(_&&(o=[M-g,0],M-=v),w&&(r=[0,0],S+=v)),b&&(s=[M-g,0],M-=v),l=[S,M],t.get("inverse")&&l.reverse(),{viewRect:a,mainLength:d,orient:n,rotation:c[n],labelRotation:y,labelPosOpt:i,labelAlign:t.get("label.align")||u[n],labelBaseline:t.get("label.verticalAlign")||t.get("label.baseline")||h[n],playPosition:o,prevBtnPosition:r,nextBtnPosition:s,axisExtent:l,controlSize:g,controlGap:m}},_position:function(t,e){var i=this._mainGroup,n=this._labelGroup,a=t.viewRect;if("vertical"===t.orient){var o=Qt(),r=a.x,s=a.y+a.height;ne(o,o,[-r,-s]),ae(o,o,-wD/2),ne(o,o,[r,s]),(a=a.clone()).applyTransform(o)}var l=m(a),u=m(i.getBoundingRect()),h=m(n.getBoundingRect()),c=i.position,d=n.position;d[0]=c[0]=l[0][0];var f,p=t.labelPosOpt;isNaN(p)?(v(c,u,l,1,f="+"===p?0:1),v(d,h,l,1,1-f)):(v(c,u,l,1,f=0<=p?0:1),d[1]=c[1]+p);function g(t){var e=t.position;t.origin=[l[0][0]-e[0],l[1][0]-e[1]]}function m(t){return[[t.x,t.x+t.width],[t.y,t.y+t.height]]}function v(t,e,i,n,a){t[n]+=i[n][a]-e[n][a]}i.attr("position",c),n.attr("position",d),i.rotation=n.rotation=t.rotation,g(i),g(n)},_createAxis:function(t,e){var i=e.getData(),n=e.get("axisType"),a=Bp(e,n);a.getTicks=function(){return i.mapArray(["value"],function(t){return t})};var o=i.getDataExtent("value");a.setExtent(o[0],o[1]),a.niceTicks();var r=new vD("value",a,t.axisExtent,n);return r.model=e,r},_createGroup:function(t){var e=this["_"+t]=new Si;return this.group.add(e),e},_renderAxisLine:function(t,e,i,n){var a=i.getExtent();n.get("lineStyle.show")&&e.add(new Ur({shape:{x1:a[0],y1:0,x2:a[1],y2:0},style:L({lineCap:"round"},n.getModel("lineStyle").getLineStyle()),silent:!0,z2:1}))},_renderAxisTick:function(t,s,l,u){var h=u.getData(),e=l.scale.getTicks();_D(e,function(t){var e=l.dataToCoord(t),i=h.getItemModel(t),n=i.getModel("itemStyle"),a=i.getModel("emphasis.itemStyle"),o={position:[e,0],onclick:xD(this._changeTimeline,this,t)},r=bD(i,n,s,o);Os(r,a.getItemStyle()),i.get("tooltip")?(r.dataIndex=t,r.dataModel=u):r.dataIndex=r.dataModel=null},this)},_renderAxisLabel:function(s,l,u,t){if(u.getLabelModel().get("show")){var h=t.getData(),e=u.getViewLabels();_D(e,function(t){var e=t.tickValue,i=h.getItemModel(e),n=i.getModel("label"),a=i.getModel("emphasis.label"),o=u.dataToCoord(t.tickValue),r=new Dr({position:[o,0],rotation:s.labelRotation-s.rotation,onclick:xD(this._changeTimeline,this,e),silent:!1});Gs(r.style,n,{text:t.formattedLabel,textAlign:s.labelAlign,textVerticalAlign:s.labelBaseline}),l.add(r),Os(r,Gs({},a))},this)}},_renderControl:function(t,o,e,r){var s=t.controlSize,l=t.rotation,u=r.getModel("controlStyle").getItemStyle(),h=r.getModel("emphasis.controlStyle").getItemStyle(),c=[0,-s/2,s,s],i=r.getPlayState(),n=r.get("inverse",!0);function a(t,e,i,n){if(t){var a=function(t,e,i,n){return gs(t.get(e).replace(/^path:\/\//,""),D(n||{}),new bi(i[0],i[1],i[2],i[3]),"center")}(r,e,c,{position:t,origin:[s/2,0],rotation:n?-l:0,rectHover:!0,style:u,onclick:i});o.add(a),Os(a,h)}}a(t.nextBtnPosition,"controlStyle.nextIcon",xD(this._changeTimeline,this,n?"-":"+")),a(t.prevBtnPosition,"controlStyle.prevIcon",xD(this._changeTimeline,this,n?"+":"-")),a(t.playPosition,"controlStyle."+(i?"stopIcon":"playIcon"),xD(this._handlePlayClick,this,!i),!0)},_renderCurrentPointer:function(t,e,i,n){var a=n.getData(),o=n.getCurrentIndex(),r=a.getItemModel(o).getModel("checkpointStyle"),s=this,l={onCreate:function(t){t.draggable=!0,t.drift=xD(s._handlePointerDrag,s),t.ondragend=xD(s._handlePointerDragend,s),SD(t,o,i,n,!0)},onUpdate:function(t){SD(t,o,i,n)}};this._currentPointer=bD(r,r,this._mainGroup,{},this._currentPointer,l)},_handlePlayClick:function(t){this._clearTimer(),this.api.dispatchAction({type:"timelinePlayChange",playState:t,from:this.uid})},_handlePointerDrag:function(t,e,i){this._clearTimer(),this._pointerChangeTimeline([i.offsetX,i.offsetY])},_handlePointerDragend:function(t){this._pointerChangeTimeline([t.offsetX,t.offsetY],!0)},_pointerChangeTimeline:function(t,e){var i=this._toAxisCoord(t)[0],n=wl(this._axis.getExtent().slice());i>n[1]&&(i=n[1]),i<n[0]&&(i=n[0]),this._currentPointer.position[0]=i,this._currentPointer.dirty();var a=this._findNearestTick(i),o=this.model;(e||a!==o.getCurrentIndex()&&o.get("realtime"))&&this._changeTimeline(a)},_doPlayStop:function(){this._clearTimer(),this.model.getPlayState()&&(this._timer=setTimeout(xD(function(){var t=this.model;this._changeTimeline(t.getCurrentIndex()+(t.get("rewind",!0)?-1:1))},this),this.model.get("playInterval")))},_toAxisCoord:function(t){return $s(t,this._mainGroup.getLocalTransform(),!0)},_findNearestTick:function(a){var o,t=this.model.getData(),r=1/0,s=this._axis;return t.each(["value"],function(t,e){var i=s.dataToCoord(t),n=Math.abs(i-a);n<r&&(r=n,o=e)}),o},_clearTimer:function(){this._timer&&(clearTimeout(this._timer),this._timer=null)},_changeTimeline:function(t){var e=this.model.getCurrentIndex();"+"===t?t=e+1:"-"===t&&(t=e-1),this.api.dispatchAction({type:"timelineChange",currentIndex:t,from:this.uid})}}),Jd(function(t){var e=t&&t.timeline;k(e)||(e=e?[e]:[]),E(e,function(t){t&&function(t){var e=t.type,i={number:"value",time:"time"};i[e]&&(t.axisType=i[e],delete t.type);if(pD(t),gD(t,"controlPosition")){var n=t.controlStyle||(t.controlStyle={});gD(n,"position")||(n.position=t.controlPosition),"none"!==n.position||gD(n,"show")||(n.show=!1,delete n.position),delete t.controlPosition}E(t.data||[],function(t){z(t)&&!k(t)&&(!gD(t,"value")&&gD(t,"name")&&(t.value=t.name),pD(t))})}(t)})});var MD=zl,ID=Wl;function AD(t){ba(t,"label",["show"])}var TD=sf({type:"marker",dependencies:["series","grid","polar","geo"],init:function(t,e,i){this.mergeDefaultAndTheme(t,i),this._mergeOption(t,i,!1,!0)},isAnimationEnabled:function(){if(v.node)return!1;var t=this.__hostSeries;return this.getShallow("animation")&&t&&t.isAnimationEnabled()},mergeOption:function(t,e){this._mergeOption(t,e,!1,!1)},_mergeOption:function(t,n,e,a){var o=this.constructor,r=this.mainType+"Model";e||n.eachSeries(function(t){var e=t.get(this.mainType,!0),i=t[r];e&&e.data?(i?i._mergeOption(e,n,!0):(a&&AD(e),E(e.data,function(t){t instanceof Array?(AD(t[0]),AD(t[1])):AD(t)}),L(i=new o(e,this,n),{mainType:this.mainType,seriesIndex:t.seriesIndex,name:t.name,createdBySelf:!0}),i.__hostSeries=t),t[r]=i):t[r]=null},this)},formatTooltip:function(t){var e=this.getData(),i=this.getRawValue(t),n=k(i)?N(i,MD).join(", "):MD(i),a=e.getName(t),o=ID(this.name);return null==i&&!a||(o+="<br />"),a&&(o+=ID(a),null!=i&&(o+=" : ")),null!=i&&(o+=ID(n)),o},getData:function(){return this._data},setData:function(t){this._data=t}});b(TD,Th),TD.extend({type:"markPoint",defaultOption:{zlevel:0,z:5,symbol:"pin",symbolSize:50,tooltip:{trigger:"item"},label:{show:!0,position:"inside"},itemStyle:{borderWidth:2},emphasis:{label:{show:!0}}}});var DD=_;function CD(t,e,i,n,a,o){var r=[],s=Zf(e,n)?e.getCalculationInfo("stackResultDimension"):n,l=RD(e,s,t),u=e.indicesOfNearest(s,l)[0];r[a]=e.get(i,u),r[o]=e.get(n,u);var h=bl(e.get(n,u));return 0<=(h=Math.min(h,20))&&(r[o]=+r[o].toFixed(h)),r}var LD=A,kD={min:LD(CD,"min"),max:LD(CD,"max"),average:LD(CD,"average")};function PD(t,e){var i=t.getData(),n=t.coordinateSystem;if(e&&!function(t){return!isNaN(parseFloat(t.x))&&!isNaN(parseFloat(t.y))}(e)&&!k(e.coord)&&n){var a=n.dimensions,o=ND(e,i,n,t);if((e=D(e)).type&&kD[e.type]&&o.baseAxis&&o.valueAxis){var r=DD(a,o.baseAxis.dim),s=DD(a,o.valueAxis.dim);e.coord=kD[e.type](i,o.baseDataDim,o.valueDataDim,r,s),e.value=e.coord[s]}else{for(var l=[null!=e.xAxis?e.xAxis:e.radiusAxis,null!=e.yAxis?e.yAxis:e.angleAxis],u=0;u<2;u++)kD[l[u]]&&(l[u]=RD(i,i.mapDimension(a[u]),l[u]));e.coord=l}}return e}function ND(t,e,i,n){var a={};return null!=t.valueIndex||null!=t.valueDim?(a.valueDataDim=null!=t.valueIndex?e.getDimension(t.valueIndex):t.valueDim,a.valueAxis=i.getAxis(function(t,e){var i=t.getData(),n=i.dimensions;e=i.getDimension(e);for(var a=0;a<n.length;a++){var o=i.getDimensionInfo(n[a]);if(o.name===e)return o.coordDim}}(n,a.valueDataDim)),a.baseAxis=i.getOtherAxis(a.valueAxis),a.baseDataDim=e.mapDimension(a.baseAxis.dim)):(a.baseAxis=n.getBaseAxis(),a.valueAxis=i.getOtherAxis(a.baseAxis),a.baseDataDim=e.mapDimension(a.baseAxis.dim),a.valueDataDim=e.mapDimension(a.valueAxis.dim)),a}function OD(t,e){return!(t&&t.containData&&e.coord&&!function(t){return!(isNaN(parseFloat(t.x))&&isNaN(parseFloat(t.y)))}(e))||t.containData(e.coord)}function ED(t,e,i,n){return n<2?t.coord&&t.coord[n]:t.value}function RD(t,e,i){if("average"!==i)return"median"===i?t.getMedian(e):t.getDataExtent(e,!0)["max"===i?1:0];var n=0,a=0;return t.each(e,function(t,e){isNaN(t)||(n+=t,a++)}),n/a}var zD=lf({type:"marker",init:function(){this.markerGroupMap=Q()},render:function(t,i,n){var e=this.markerGroupMap;e.each(function(t){t.__keep=!1});var a=this.type+"Model";i.eachSeries(function(t){var e=t[a];e&&this.renderSeries(t,e,i,n)},this),e.each(function(t){t.__keep||this.group.remove(t.group)},this)},renderSeries:function(){}});function BD(s,l,u){var h=l.coordinateSystem;s.each(function(t){var e,i=s.getItemModel(t),n=xl(i.get("x"),u.getWidth()),a=xl(i.get("y"),u.getHeight());if(isNaN(n)||isNaN(a)){if(l.getMarkerPosition)e=l.getMarkerPosition(s.getValues(s.dimensions,t));else if(h){var o=s.get(h.dimensions[0],t),r=s.get(h.dimensions[1],t);e=h.dataToPoint([o,r])}}else e=[n,a];isNaN(n)||(e[0]=n),isNaN(a)||(e[1]=a),s.setItemLayout(t,e)})}zD.extend({type:"markPoint",updateTransform:function(t,e,i){e.eachSeries(function(t){var e=t.markPointModel;e&&(BD(e.getData(),t,i),this.markerGroupMap.get(t.id).updateLayout(e))},this)},renderSeries:function(t,l,e,i){var n=t.coordinateSystem,a=t.id,u=t.getData(),o=this.markerGroupMap,r=o.get(a)||o.set(a,new Ng),h=function(t,e,i){var n;n=t?N(t&&t.dimensions,function(t){return C({name:t},e.getData().getDimensionInfo(e.getData().mapDimension(t))||{})}):[{name:"value",type:"float"}];var a=new Tf(n,i),o=N(i.get("data"),A(PD,e));t&&(o=M(o,A(OD,t)));return a.initData(o,null,t?ED:function(t){return t.value}),a}(n,t,l);l.setData(h),BD(l.getData(),t,i),h.each(function(t){var e=h.getItemModel(t),i=e.getShallow("symbol"),n=e.getShallow("symbolSize"),a=O(i),o=O(n);if(a||o){var r=l.getRawValue(t),s=l.getDataParams(t);a&&(i=i(r,s)),o&&(n=n(r,s))}h.setItemVisual(t,{symbol:i,symbolSize:n,color:e.get("itemStyle.color")||u.getVisual("color")})}),r.updateData(h),this.group.add(r.group),h.eachItemGraphicEl(function(t){t.traverse(function(t){t.dataModel=l})}),r.__keep=!0,r.group.silent=l.get("silent")||t.get("silent")}}),Jd(function(t){t.markPoint=t.markPoint||{}}),TD.extend({type:"markLine",defaultOption:{zlevel:0,z:5,symbol:["circle","arrow"],symbolSize:[8,16],precision:2,tooltip:{trigger:"item"},label:{show:!0,position:"end"},lineStyle:{type:"dashed"},emphasis:{label:{show:!0},lineStyle:{width:3}},animationEasing:"linear"}});function VD(t,e,i,n){var a=t.getData(),o=n.type;if(!k(n)&&("min"===o||"max"===o||"average"===o||"median"===o||null!=n.xAxis||null!=n.yAxis)){var r,s;if(null!=n.yAxis||null!=n.xAxis)r=e.getAxis(null!=n.yAxis?"y":"x"),s=W(n.yAxis,n.xAxis);else{var l=ND(n,a,e,t);r=l.valueAxis,s=RD(a,Uf(a,l.valueDataDim),o)}var u="x"===r.dim?0:1,h=1-u,c=D(n),d={};c.type=null,c.coord=[],d.coord=[],c.coord[h]=-1/0,d.coord[h]=1/0;var f=i.get("precision");0<=f&&"number"==typeof s&&(s=+s.toFixed(Math.min(f,20))),c.coord[u]=d.coord[u]=s,n=[c,d,{type:o,valueIndex:n.valueIndex,value:s}]}return(n=[PD(t,n[0]),PD(t,n[1]),L({},n[2])])[2].type=n[2].type||"",m(n[2],n[0]),m(n[2],n[1]),n}function GD(t){return!isNaN(t)&&!isFinite(t)}function FD(t,e,i,n){var a=1-t,o=n.dimensions[t];return GD(e[a])&&GD(i[a])&&e[t]===i[t]&&n.getAxis(o).containData(e[t])}function WD(t,e){if("cartesian2d"===t.type){var i=e[0].coord,n=e[1].coord;if(i&&n&&(FD(1,i,n,t)||FD(0,i,n,t)))return!0}return OD(t,e[0])&&OD(t,e[1])}function HD(t,e,i,n,a){var o,r=n.coordinateSystem,s=t.getItemModel(e),l=xl(s.get("x"),a.getWidth()),u=xl(s.get("y"),a.getHeight());if(isNaN(l)||isNaN(u)){if(n.getMarkerPosition)o=n.getMarkerPosition(t.getValues(t.dimensions,e));else{var h=r.dimensions,c=t.get(h[0],e),d=t.get(h[1],e);o=r.dataToPoint([c,d])}if("cartesian2d"===r.type){var f=r.getAxis("x"),p=r.getAxis("y");h=r.dimensions;GD(t.get(h[0],e))?o[0]=f.toGlobalCoord(f.getExtent()[i?0:1]):GD(t.get(h[1],e))&&(o[1]=p.toGlobalCoord(p.getExtent()[i?0:1]))}isNaN(l)||(o[0]=l),isNaN(u)||(o[1]=u)}else o=[l,u];t.setItemLayout(e,o)}zD.extend({type:"markLine",updateTransform:function(t,e,o){e.eachSeries(function(e){var t=e.markLineModel;if(t){var i=t.getData(),n=t.__from,a=t.__to;n.each(function(t){HD(n,t,!0,e,o),HD(a,t,!1,e,o)}),i.each(function(t){i.setItemLayout(t,[n.getItemLayout(t),a.getItemLayout(t)])}),this.markerGroupMap.get(e.id).updateLayout()}},this)},renderSeries:function(a,i,t,o){var e=a.coordinateSystem,n=a.id,r=a.getData(),s=this.markerGroupMap,l=s.get(n)||s.set(n,new z_);this.group.add(l.group);var u=function(t,e,i){var n;n=t?N(t&&t.dimensions,function(t){return C({name:t},e.getData().getDimensionInfo(e.getData().mapDimension(t))||{})}):[{name:"value",type:"float"}];var a=new Tf(n,i),o=new Tf(n,i),r=new Tf([],i),s=N(i.get("data"),A(VD,e,t,i));t&&(s=M(s,A(WD,t)));var l=t?ED:function(t){return t.value};return a.initData(N(s,function(t){return t[0]}),null,l),o.initData(N(s,function(t){return t[1]}),null,l),r.initData(N(s,function(t){return t[2]})),r.hasItemOption=!0,{from:a,to:o,line:r}}(e,a,i),h=u.from,c=u.to,d=u.line;i.__from=h,i.__to=c,i.setData(d);var f=i.get("symbol"),p=i.get("symbolSize");function g(t,e,i){var n=t.getItemModel(e);HD(t,e,i,a,o),t.setItemVisual(e,{symbolSize:n.get("symbolSize")||p[i?0:1],symbol:n.get("symbol",!0)||f[i?0:1],color:n.get("itemStyle.color")||r.getVisual("color")})}k(f)||(f=[f,f]),"number"==typeof p&&(p=[p,p]),u.from.each(function(t){g(h,t,!0),g(c,t,!1)}),d.each(function(t){var e=d.getItemModel(t).get("lineStyle.color");d.setItemVisual(t,{color:e||h.getItemVisual(t,"color")}),d.setItemLayout(t,[h.getItemLayout(t),c.getItemLayout(t)]),d.setItemVisual(t,{fromSymbolSize:h.getItemVisual(t,"symbolSize"),fromSymbol:h.getItemVisual(t,"symbol"),toSymbolSize:c.getItemVisual(t,"symbolSize"),toSymbol:c.getItemVisual(t,"symbol")})}),l.updateData(d),u.line.eachItemGraphicEl(function(t,e){t.traverse(function(t){t.dataModel=i})}),l.__keep=!0,l.group.silent=i.get("silent")||a.get("silent")}}),Jd(function(t){t.markLine=t.markLine||{}}),TD.extend({type:"markArea",defaultOption:{zlevel:0,z:1,tooltip:{trigger:"item"},animation:!1,label:{show:!0,position:"top"},itemStyle:{borderWidth:0},emphasis:{label:{show:!0,position:"top"}}}});function ZD(t,e,i,n){var a=PD(t,n[0]),o=PD(t,n[1]),r=W,s=a.coord,l=o.coord;s[0]=r(s[0],-1/0),s[1]=r(s[1],-1/0),l[0]=r(l[0],1/0),l[1]=r(l[1],1/0);var u=p([{},a,o]);return u.coord=[a.coord,o.coord],u.x0=a.x,u.y0=a.y,u.x1=o.x,u.y1=o.y,u}function UD(t){return!isNaN(t)&&!isFinite(t)}function XD(t,e,i){var n=1-t;return UD(e[n])&&UD(i[n])}function YD(t,e){var i=e.coord[0],n=e.coord[1];return!("cartesian2d"!==t.type||!i||!n||!XD(1,i,n)&&!XD(0,i,n))||(OD(t,{coord:i,x:e.x0,y:e.y0})||OD(t,{coord:n,x:e.x1,y:e.y1}))}function jD(t,e,i,n,a){var o,r=n.coordinateSystem,s=t.getItemModel(e),l=xl(s.get(i[0]),a.getWidth()),u=xl(s.get(i[1]),a.getHeight());if(isNaN(l)||isNaN(u)){if(n.getMarkerPosition)o=n.getMarkerPosition(t.getValues(i,e));else{var h=[f=t.get(i[0],e),p=t.get(i[1],e)];r.clampData&&r.clampData(h,h),o=r.dataToPoint(h,!0)}if("cartesian2d"===r.type){var c=r.getAxis("x"),d=r.getAxis("y"),f=t.get(i[0],e),p=t.get(i[1],e);UD(f)?o[0]=c.toGlobalCoord(c.getExtent()["x0"===i[0]?0:1]):UD(p)&&(o[1]=d.toGlobalCoord(d.getExtent()["y0"===i[1]?0:1]))}isNaN(l)||(o[0]=l),isNaN(u)||(o[1]=u)}else o=[l,u];return o}var qD=[["x0","y0"],["x1","y0"],["x1","y1"],["x0","y1"]];zD.extend({type:"markArea",updateTransform:function(t,e,a){e.eachSeries(function(i){var t=i.markAreaModel;if(t){var n=t.getData();n.each(function(e){var t=N(qD,function(t){return jD(n,e,t,i,a)});n.setItemLayout(e,t),n.getItemGraphicEl(e).setShape("points",t)})}},this)},renderSeries:function(i,r,t,n){var e=i.coordinateSystem,a=i.id,o=i.getData(),s=this.markerGroupMap,l=s.get(a)||s.set(a,{group:new Si});this.group.add(l.group),l.__keep=!0;var u=function(t,i,e){var n,a;a=t?(n=N(t&&t.dimensions,function(t){var e=i.getData();return C({name:t},e.getDimensionInfo(e.mapDimension(t))||{})}),new Tf(N(["x0","y0","x1","y1"],function(t,e){return{name:t,type:n[e%2].type}}),e)):new Tf(n=[{name:"value",type:"float"}],e);var o=N(e.get("data"),A(ZD,i,t,e));t&&(o=M(o,A(YD,t)));var r=t?function(t,e,i,n){return t.coord[Math.floor(n/2)][n%2]}:function(t){return t.value};return a.initData(o,null,r),a.hasItemOption=!0,a}(e,i,r);r.setData(u),u.each(function(e){u.setItemLayout(e,N(qD,function(t){return jD(u,e,t,i,n)})),u.setItemVisual(e,{color:o.getVisual("color")})}),u.diff(l.__data).add(function(t){var e=new Rr({shape:{points:u.getItemLayout(t)}});u.setItemGraphicEl(t,e),l.group.add(e)}).update(function(t,e){var i=l.__data.getItemGraphicEl(e);js(i,{shape:{points:u.getItemLayout(t)}},r,t),l.group.add(i),u.setItemGraphicEl(t,i)}).remove(function(t){var e=l.__data.getItemGraphicEl(t);l.group.remove(e)}).execute(),u.eachItemGraphicEl(function(t,e){var i=u.getItemModel(e),n=i.getModel("label"),a=i.getModel("emphasis.label"),o=u.getItemVisual(e,"color");t.useStyle(C(i.getModel("itemStyle").getItemStyle(),{fill:Ze(o,.4),stroke:o})),t.hoverStyle=i.getModel("emphasis.itemStyle").getItemStyle(),Bs(t.style,t.hoverStyle,n,a,{labelFetcher:r,labelDataIndex:e,defaultText:u.getName(e)||"",isRectText:!0,autoColor:o}),Os(t,{}),t.dataModel=r}),l.__data=u,l.group.silent=r.get("silent")||i.get("silent")}}),Jd(function(t){t.markArea=t.markArea||{}});var KD=gc.legend.selector,$D={all:{type:"all",title:D(KD.all)},inverse:{type:"inverse",title:D(KD.inverse)}},JD=sf({type:"legend.plain",dependencies:["series"],layoutMode:{type:"box",ignoreSize:!0},init:function(t,e,i){this.mergeDefaultAndTheme(t,i),t.selected=t.selected||{},this._updateSelector(t)},mergeOption:function(t){JD.superCall(this,"mergeOption",t),this._updateSelector(t)},_updateSelector:function(t){var i=t.selector;!0===i&&(i=t.selector=["all","inverse"]),k(i)&&E(i,function(t,e){R(t)&&(t={type:t}),i[e]=m(t,$D[t.type])})},optionUpdated:function(){this._updateData(this.ecModel);var t=this._data;if(t[0]&&"single"===this.get("selectedMode")){for(var e=!1,i=0;i<t.length;i++){var n=t[i].get("name");if(this.isSelected(n)){this.select(n),e=!0;break}}e||this.select(t[0].get("name"))}},_updateData:function(o){var r=[],s=[];o.eachRawSeries(function(t){var e,i=t.name;if(s.push(i),t.legendDataProvider){var n=t.legendDataProvider(),a=n.mapArray(n.getName);o.isSeriesFiltered(t)||(s=s.concat(a)),a.length?r=r.concat(a):e=!0}else e=!0;e&&Ta(t)&&r.push(t.name)}),this._availableNames=s;var t=N(this.get("data")||r,function(t){return"string"!=typeof t&&"number"!=typeof t||(t={name:t}),new dl(t,this,this.ecModel)},this);this._data=t},getData:function(){return this._data},select:function(t){var e=this.option.selected;"single"===this.get("selectedMode")&&E(this._data,function(t){e[t.get("name")]=!1});e[t]=!0},unSelect:function(t){"single"!==this.get("selectedMode")&&(this.option.selected[t]=!1)},toggleSelected:function(t){var e=this.option.selected;e.hasOwnProperty(t)||(e[t]=!0),this[e[t]?"unSelect":"select"](t)},allSelect:function(){var t=this._data,e=this.option.selected;E(t,function(t){e[t.get("name",!0)]=!0})},inverseSelect:function(){var t=this._data,i=this.option.selected;E(t,function(t){var e=t.get("name",!0);i.hasOwnProperty(e)||(i[e]=!0),i[e]=!i[e]})},isSelected:function(t){var e=this.option.selected;return!(e.hasOwnProperty(t)&&!e[t])&&0<=_(this._availableNames,t)},getOrient:function(){return"vertical"===this.get("orient")?{index:1,name:"vertical"}:{index:0,name:"horizontal"}},defaultOption:{zlevel:0,z:4,show:!0,orient:"horizontal",left:"center",top:0,align:"auto",backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderRadius:0,borderWidth:0,padding:5,itemGap:10,itemWidth:25,itemHeight:14,inactiveColor:"#ccc",inactiveBorderColor:"#ccc",itemStyle:{borderWidth:0},textStyle:{color:"#333"},selectedMode:!0,selector:!1,selectorLabel:{show:!0,borderRadius:10,padding:[3,5,3,5],fontSize:12,fontFamily:" sans-serif",color:"#666",borderWidth:1,borderColor:"#666"},emphasis:{selectorLabel:{show:!0,color:"#eee",backgroundColor:"#666"}},selectorPosition:"auto",selectorItemGap:7,selectorButtonGap:10,tooltip:{show:!1}}});function QD(t,e,i){var a,o={},r="toggleSelected"===t;return i.eachComponent("legend",function(n){r&&null!=a?n[a?"select":"unSelect"](e.name):"allSelect"===t||"inverseSelect"===t?n[t]():(n[t](e.name),a=n.isSelected(e.name)),E(n.getData(),function(t){var e=t.get("name");if("\n"!==e&&""!==e){var i=n.isSelected(e);o.hasOwnProperty(e)?o[e]=o[e]&&i:o[e]=i}})}),"allSelect"===t||"inverseSelect"===t?{selected:o}:{name:e.name,selected:o}}tf("legendToggleSelect","legendselectchanged",A(QD,"toggleSelected")),tf("legendAllSelect","legendselectall",A(QD,"allSelect")),tf("legendInverseSelect","legendinverseselect",A(QD,"inverseSelect")),tf("legendSelect","legendselected",A(QD,"select")),tf("legendUnSelect","legendunselected",A(QD,"unSelect"));var tC=A,eC=E,iC=Si,nC=lf({type:"legend.plain",newlineDisabled:!1,init:function(){this.group.add(this._contentGroup=new iC),this._backgroundEl,this.group.add(this._selectorGroup=new iC),this._isFirstRender=!0},getContentGroup:function(){return this._contentGroup},getSelectorGroup:function(){return this._selectorGroup},render:function(t,e,i){var n=this._isFirstRender;if(this._isFirstRender=!1,this.resetInner(),t.get("show",!0)){var a=t.get("align"),o=t.get("orient");a&&"auto"!==a||(a="right"===t.get("left")&&"vertical"===o?"right":"left");var r=t.get("selector",!0),s=t.get("selectorPosition",!0);!r||s&&"auto"!==s||(s="horizontal"===o?"end":"start"),this.renderInner(a,t,e,i,r,o,s);var l=t.getBoxLayoutParams(),u={width:i.getWidth(),height:i.getHeight()},h=t.get("padding"),c=au(l,u,h),d=this.layoutInner(t,a,c,n,r,s),f=au(C({width:d.width,height:d.height},l),u,h);this.group.attr("position",[f.x-d.x,f.y-d.y]),this.group.add(this._backgroundEl=IA(d,t))}},resetInner:function(){this.getContentGroup().removeAll(),this._backgroundEl&&this.group.remove(this._backgroundEl),this.getSelectorGroup().removeAll()},renderInner:function(u,h,c,d,t,e,i){var f=this.getContentGroup(),p=Q(),g=h.get("selectedMode"),m=[];c.eachRawSeries(function(t){t.get("legendHoverLink")||m.push(t.id)}),eC(h.getData(),function(o,r){var s=o.get("name");if(this.newlineDisabled||""!==s&&"\n"!==s){var t=c.getSeriesByName(s)[0];if(!p.get(s))if(t){var e=t.getData(),i=e.getVisual("color"),n=e.getVisual("borderColor");"function"==typeof i&&(i=i(t.getDataParams(0))),"function"==typeof n&&(n=n(t.getDataParams(0)));var a=e.getVisual("legendSymbol")||"roundRect",l=e.getVisual("symbol");this._createItem(s,r,o,h,a,l,u,i,n,g).on("click",tC(oC,s,d)).on("mouseover",tC(rC,t.name,null,d,m)).on("mouseout",tC(sC,t.name,null,d,m)),p.set(s,!0)}else c.eachRawSeries(function(t){if(!p.get(s)&&t.legendDataProvider){var e=t.legendDataProvider(),i=e.indexOfName(s);if(i<0)return;var n=e.getItemVisual(i,"color"),a=e.getItemVisual(i,"borderColor");this._createItem(s,r,o,h,"roundRect",null,u,n,a,g).on("click",tC(oC,s,d)).on("mouseover",tC(rC,null,s,d,m)).on("mouseout",tC(sC,null,s,d,m)),p.set(s,!0)}},this)}else f.add(new iC({newline:!0}))},this),t&&this._createSelector(t,h,d,e,i)},_createSelector:function(t,o,r,e,i){var s=this.getSelectorGroup();eC(t,function(t){!function(t){var e=t.type,i=new Dr({style:{x:0,y:0,align:"center",verticalAlign:"middle"},onclick:function(){r.dispatchAction({type:"all"===e?"legendAllSelect":"legendInverseSelect"})}});s.add(i);var n=o.getModel("selectorLabel"),a=o.getModel("emphasis.selectorLabel");Bs(i.style,i.hoverStyle={},n,a,{defaultText:t.title,isRectText:!1}),Os(i)}(t)})},_createItem:function(t,e,i,n,a,o,r,s,l,u){var h=n.get("itemWidth"),c=n.get("itemHeight"),d=n.get("inactiveColor"),f=n.get("inactiveBorderColor"),p=n.get("symbolKeepAspect"),g=n.getModel("itemStyle"),m=n.isSelected(t),v=new iC,y=i.getModel("textStyle"),x=i.get("icon"),_=i.getModel("tooltip"),w=_.parentModel,b=Jp(a=x||a,0,0,h,c,m?s:d,null==p||p);if(v.add(aC(b,a,g,l,f,m)),!x&&o&&(o!==a||"none"===o)){var S=.8*c;"none"===o&&(o="circle");var M=Jp(o,(h-S)/2,(c-S)/2,S,S,m?s:d,null==p||p);v.add(aC(M,o,g,l,f,m))}var I="left"===r?h+5:-5,A=r,T=n.get("formatter"),D=t;"string"==typeof T&&T?D=T.replace("{name}",null!=t?t:""):"function"==typeof T&&(D=T(t)),v.add(new Dr({style:Gs({},y,{text:D,x:I,y:c/2,textFill:m?y.getTextColor():d,textAlign:A,textVerticalAlign:"middle"})}));var C=new Hr({shape:v.getBoundingRect(),invisible:!0,tooltip:_.get("show")?L({content:t,formatter:w.get("formatter",!0)||function(){return t},formatterParams:{componentType:"legend",legendIndex:n.componentIndex,name:t,$vars:["name"]}},_.option):null});return v.add(C),v.eachChild(function(t){t.silent=!0}),C.silent=!u,this.getContentGroup().add(v),Os(v),v.__legendDataIndex=e,v},layoutInner:function(t,e,i,n,a,o){var r=this.getContentGroup(),s=this.getSelectorGroup();nu(t.get("orient"),r,t.get("itemGap"),i.width,i.height);var l=r.getBoundingRect(),u=[-l.x,-l.y];if(a){nu("horizontal",s,t.get("selectorItemGap",!0));var h=s.getBoundingRect(),c=[-h.x,-h.y],d=t.get("selectorButtonGap",!0),f=t.getOrient().index,p=0===f?"width":"height",g=0===f?"height":"width",m=0===f?"y":"x";"end"===o?c[f]+=l[p]+d:u[f]+=h[p]+d,c[1-f]+=l[g]/2-h[g]/2,s.attr("position",c),r.attr("position",u);var v={x:0,y:0};return v[p]=l[p]+d+h[p],v[g]=Math.max(l[g],h[g]),v[m]=Math.min(0,h[m]+c[1-f]),v}return r.attr("position",u),this.group.getBoundingRect()},remove:function(){this.getContentGroup().removeAll(),this._isFirstRender=!0}});function aC(t,e,i,n,a,o){var r;return"line"!==e&&e.indexOf("empty")<0?(r=i.getItemStyle(),t.style.stroke=n,o||(r.stroke=a)):r=i.getItemStyle(["borderWidth","borderColor"]),t.setStyle(r)}function oC(t,e){e.dispatchAction({type:"legendToggleSelect",name:t})}function rC(t,e,i,n){var a=i.getZr().storage.getDisplayList()[0];a&&a.useHoverLayer||i.dispatchAction({type:"highlight",seriesName:t,name:e,excludeSeriesId:n})}function sC(t,e,i,n){var a=i.getZr().storage.getDisplayList()[0];a&&a.useHoverLayer||i.dispatchAction({type:"downplay",seriesName:t,name:e,excludeSeriesId:n})}Qd(cd.PROCESSOR.SERIES_FILTER,function(t){var i=t.findComponents({mainType:"legend"});i&&i.length&&t.filterSeries(function(t){for(var e=0;e<i.length;e++)if(!i[e].isSelected(t.name))return!1;return!0})}),fu.registerSubTypeDefaulter("legend",function(){return"plain"});var lC=JD.extend({type:"legend.scroll",setScrollDataIndex:function(t){this.option.scrollDataIndex=t},defaultOption:{scrollDataIndex:0,pageButtonItemGap:5,pageButtonGap:null,pageButtonPosition:"end",pageFormatter:"{current}/{total}",pageIcons:{horizontal:["M0,0L12,-10L12,10z","M0,0L-12,-10L-12,10z"],vertical:["M0,0L20,0L10,-20z","M0,0L20,0L10,20z"]},pageIconColor:"#2f4554",pageIconInactiveColor:"#aaa",pageIconSize:15,pageTextStyle:{color:"#333"},animationDurationUpdate:800},init:function(t,e,i,n){var a=su(t);lC.superCall(this,"init",t,e,i,n),uC(this,t,a)},mergeOption:function(t,e){lC.superCall(this,"mergeOption",t,e),uC(this,this.option,t)}});function uC(t,e,i){var n=[1,1];n[t.getOrient().index]=0,ru(e,i,{type:"box",ignoreSize:n})}var hC=Si,cC=["width","height"],dC=["x","y"],fC=nC.extend({type:"legend.scroll",newlineDisabled:!0,init:function(){fC.superCall(this,"init"),this._currentIndex=0,this.group.add(this._containerGroup=new hC),this._containerGroup.add(this.getContentGroup()),this.group.add(this._controllerGroup=new hC),this._showController},resetInner:function(){fC.superCall(this,"resetInner"),this._controllerGroup.removeAll(),this._containerGroup.removeClipPath(),this._containerGroup.__rectSize=null},renderInner:function(t,a,e,o,i,n,r){var s=this;fC.superCall(this,"renderInner",t,a,e,o,i,n,r);var l=this._controllerGroup,u=a.get("pageIconSize",!0);k(u)||(u=[u,u]),c("pagePrev",0);var h=a.getModel("pageTextStyle");function c(t,e){var i=t+"DataIndex",n=el(a.get("pageIcons",!0)[a.getOrient().name][e],{onclick:T(s._pageGo,s,i,a,o)},{x:-u[0]/2,y:-u[1]/2,width:u[0],height:u[1]});n.name=t,l.add(n)}l.add(new Dr({name:"pageText",style:{textFill:h.getTextColor(),font:h.getFont(),textVerticalAlign:"middle",textAlign:"center"},silent:!0})),c("pageNext",1)},layoutInner:function(t,e,i,n,a,o){var r=this.getSelectorGroup(),s=t.getOrient().index,l=cC[s],u=dC[s],h=cC[1-s],c=dC[1-s];a&&nu("horizontal",r,t.get("selectorItemGap",!0));var d=t.get("selectorButtonGap",!0),f=r.getBoundingRect(),p=[-f.x,-f.y],g=D(i);a&&(g[l]=i[l]-f[l]-d);var m=this._layoutContentAndController(t,n,g,s,l,h,c);if(a){if("end"===o)p[s]+=m[l]+d;else{var v=f[l]+d;p[s]-=v,m[u]-=v}m[l]+=f[l]+d,p[1-s]+=m[c]+m[h]/2-f[h]/2,m[h]=Math.max(m[h],f[h]),m[c]=Math.min(m[c],f[c]+p[1-s]),r.attr("position",p)}return m},_layoutContentAndController:function(t,e,i,n,a,o,r){var s=this.getContentGroup(),l=this._containerGroup,u=this._controllerGroup;nu(t.get("orient"),s,t.get("itemGap"),n?i.width:null,n?null:i.height),nu("horizontal",u,t.get("pageButtonItemGap",!0));var h=s.getBoundingRect(),c=u.getBoundingRect(),d=this._showController=h[a]>i[a],f=[-h.x,-h.y];e||(f[n]=s.position[n]);var p=[0,0],g=[-c.x,-c.y],m=H(t.get("pageButtonGap",!0),t.get("itemGap",!0));d&&("end"===t.get("pageButtonPosition",!0)?g[n]+=i[a]-c[a]:p[n]+=c[a]+m);g[1-n]+=h[o]/2-c[o]/2,s.attr("position",f),l.attr("position",p),u.attr("position",g);var v={x:0,y:0};if(v[a]=d?i[a]:h[a],v[o]=Math.max(h[o],c[o]),v[r]=Math.min(0,c[r]+g[1-n]),l.__rectSize=i[a],d){var y={x:0,y:0};y[a]=Math.max(i[a]-c[a]-m,0),y[o]=v[o],l.setClipPath(new Hr({shape:y})),l.__rectSize=y[a]}else u.eachChild(function(t){t.attr({invisible:!0,silent:!0})});var x=this._getPageInfo(t);return null!=x.pageIndex&&js(s,{position:x.contentPosition},d&&t),this._updatePageInfoView(t,x),v},_pageGo:function(t,e,i){var n=this._getPageInfo(e)[t];null!=n&&i.dispatchAction({type:"legendScroll",scrollDataIndex:n,legendId:e.id})},_updatePageInfoView:function(n,a){var o=this._controllerGroup;E(["pagePrev","pageNext"],function(t){var e=null!=a[t+"DataIndex"],i=o.childOfName(t);i&&(i.setStyle("fill",e?n.get("pageIconColor",!0):n.get("pageIconInactiveColor",!0)),i.cursor=e?"pointer":"default")});var t=o.childOfName("pageText"),e=n.get("pageFormatter"),i=a.pageIndex,r=null!=i?i+1:0,s=a.pageCount;t&&e&&t.setStyle("text",R(e)?e.replace("{current}",r).replace("{total}",s):e({current:r,total:s}))},_getPageInfo:function(t){var e=t.get("scrollDataIndex",!0),i=this.getContentGroup(),n=this._containerGroup.__rectSize,a=t.getOrient().index,o=cC[a],r=dC[a],s=this._findTargetItemIndex(e),l=i.children(),u=l[s],h=l.length,c=h?1:0,d={contentPosition:i.position.slice(),pageCount:c,pageIndex:c-1,pagePrevDataIndex:null,pageNextDataIndex:null};if(!u)return d;var f=y(u);d.contentPosition[a]=-f.s;for(var p=s+1,g=f,m=f,v=null;p<=h;++p)(!(v=y(l[p]))&&m.e>g.s+n||v&&!x(v,g.s))&&(g=m.i>g.i?m:v)&&(null==d.pageNextDataIndex&&(d.pageNextDataIndex=g.i),++d.pageCount),m=v;for(p=s-1,g=f,m=f,v=null;-1<=p;--p)(v=y(l[p]))&&x(m,v.s)||!(g.i<m.i)||(m=g,null==d.pagePrevDataIndex&&(d.pagePrevDataIndex=g.i),++d.pageCount,++d.pageIndex),g=v;return d;function y(t){if(t){var e=t.getBoundingRect(),i=e[r]+t.position[a];return{s:i,e:i+e[o],i:t.__legendDataIndex}}}function x(t,e){return t.e>=e&&t.s<=e+n}},_findTargetItemIndex:function(n){var a,o,t=this.getContentGroup();return this._showController&&t.eachChild(function(t,e){var i=t.__legendDataIndex;null==o&&null!=i&&(o=e),i===n&&(a=e)}),null!=a?a:o}});tf("legendScroll","legendscroll",function(t,e){var i=t.scrollDataIndex;null!=i&&e.eachComponent({mainType:"legend",subType:"scroll",query:t},function(t){t.setScrollDataIndex(i)})});_T.extend({type:"dataZoom.slider",layoutMode:"box",defaultOption:{show:!0,right:"ph",top:"ph",width:"ph",height:"ph",left:null,bottom:null,backgroundColor:"rgba(47,69,84,0)",dataBackground:{lineStyle:{color:"#2f4554",width:.5,opacity:.3},areaStyle:{color:"rgba(47,69,84,0.3)",opacity:.3}},borderColor:"#ddd",fillerColor:"rgba(167,183,204,0.4)",handleIcon:"M8.2,13.6V3.9H6.3v9.7H3.1v14.9h3.3v9.7h1.8v-9.7h3.3V13.6H8.2z M9.7,24.4H4.8v-1.4h4.9V24.4z M9.7,19.1H4.8v-1.4h4.9V19.1z",handleSize:"100%",handleStyle:{color:"#a7b7cc"},labelPrecision:null,labelFormatter:null,showDetail:!0,showDataShadow:"auto",realtime:!0,zoomLock:!1,textStyle:{color:"#333"}}});var pC=Hr,gC=yl,mC=wl,vC=T,yC=E,xC="horizontal",_C="vertical",wC=["line","bar","candlestick","scatter"],bC=ST.extend({type:"dataZoom.slider",init:function(t,e){this._displayables={},this._orient,this._range,this._handleEnds,this._size,this._handleWidth,this._handleHeight,this._location,this._dragging,this._dataShadowInfo,this.api=e},render:function(t,e,i,n){bC.superApply(this,"render",arguments),dc(this,"_dispatchZoomAction",this.dataZoomModel.get("throttle"),"fixRate"),this._orient=t.get("orient"),!1!==this.dataZoomModel.get("show")?(n&&"dataZoom"===n.type&&n.from===this.uid||this._buildView(),this._updateView()):this.group.removeAll()},remove:function(){bC.superApply(this,"remove",arguments),fc(this,"_dispatchZoomAction")},dispose:function(){bC.superApply(this,"dispose",arguments),fc(this,"_dispatchZoomAction")},_buildView:function(){var t=this.group;t.removeAll(),this._resetLocation(),this._resetInterval();var e=this._displayables.barGroup=new Si;this._renderBackground(),this._renderHandle(),this._renderDataShadow(),t.add(e),this._positionGroup()},_resetLocation:function(){var t=this.dataZoomModel,e=this.api,i=this._findCoordRect(),n={width:e.getWidth(),height:e.getHeight()},a=this._orient===xC?{right:n.width-i.x-i.width,top:n.height-30-7,width:i.width,height:30}:{right:7,top:i.y,width:30,height:i.height},o=su(t.option);E(["right","top","width","height"],function(t){"ph"===o[t]&&(o[t]=a[t])});var r=au(o,n,t.padding);this._location={x:r.x,y:r.y},this._size=[r.width,r.height],this._orient===_C&&this._size.reverse()},_positionGroup:function(){var t=this.group,e=this._location,i=this._orient,n=this.dataZoomModel.getFirstTargetAxisModel(),a=n&&n.get("inverse"),o=this._displayables.barGroup,r=(this._dataShadowInfo||{}).otherAxisInverse;o.attr(i!==xC||a?i===xC&&a?{scale:r?[-1,1]:[-1,-1]}:i!==_C||a?{scale:r?[-1,-1]:[-1,1],rotation:Math.PI/2}:{scale:r?[1,-1]:[1,1],rotation:Math.PI/2}:{scale:r?[1,1]:[1,-1]});var s=t.getBoundingRect([o]);t.attr("position",[e.x-s.x,e.y-s.y])},_getViewExtent:function(){return[0,this._size[0]]},_renderBackground:function(){var t=this.dataZoomModel,e=this._size,i=this._displayables.barGroup;i.add(new pC({silent:!0,shape:{x:0,y:0,width:e[0],height:e[1]},style:{fill:t.get("backgroundColor")},z2:-40})),i.add(new pC({shape:{x:0,y:0,width:e[0],height:e[1]},style:{fill:"transparent"},z2:0,onclick:T(this._onClickPanelClick,this)}))},_renderDataShadow:function(){var t=this._dataShadowInfo=this._prepareDataShadowInfo();if(t){var e=this._size,i=t.series,n=i.getRawData(),a=i.getShadowDim?i.getShadowDim():t.otherDim;if(null!=a){var o=n.getDataExtent(a),r=.3*(o[1]-o[0]);o=[o[0]-r,o[1]+r];var s,l=[0,e[1]],u=[0,e[0]],h=[[e[0],0],[0,0]],c=[],d=u[1]/(n.count()-1),f=0,p=Math.round(n.count()/e[0]);n.each([a],function(t,e){if(0<p&&e%p)f+=d;else{var i=null==t||isNaN(t)||""===t,n=i?0:gC(t,o,l,!0);i&&!s&&e?(h.push([h[h.length-1][0],0]),c.push([c[c.length-1][0],0])):!i&&s&&(h.push([f,0]),c.push([f,0])),h.push([f,n]),c.push([f,n]),f+=d,s=i}});var g=this.dataZoomModel;this._displayables.barGroup.add(new Rr({shape:{points:h},style:C({fill:g.get("dataBackgroundColor")},g.getModel("dataBackground.areaStyle").getAreaStyle()),silent:!0,z2:-20})),this._displayables.barGroup.add(new zr({shape:{points:c},style:g.getModel("dataBackground.lineStyle").getLineStyle(),silent:!0,z2:-19}))}}},_prepareDataShadowInfo:function(){var t=this.dataZoomModel,s=t.get("showDataShadow");if(!1!==s){var l,u=this.ecModel;return t.eachTargetAxis(function(o,r){E(t.getAxisProxy(o.name,r).getTargetSeriesModels(),function(t){if(!(l||!0!==s&&_(wC,t.get("type"))<0)){var e,i=u.getComponent(o.axis,r).axis,n=function(t){return{x:"y",y:"x",radius:"angle",angle:"radius"}[t]}(o.name),a=t.coordinateSystem;null!=n&&a.getOtherAxis&&(e=a.getOtherAxis(i).inverse),n=t.getData().mapDimension(n),l={thisAxis:i,series:t,thisDim:o.name,otherDim:n,otherAxisInverse:e}}},this)},this),l}},_renderHandle:function(){var t=this._displayables,o=t.handles=[],r=t.handleLabels=[],s=this._displayables.barGroup,e=this._size,l=this.dataZoomModel;s.add(t.filler=new pC({draggable:!0,cursor:SC(this._orient),drift:vC(this._onDragMove,this,"all"),onmousemove:function(t){Ft(t.event)},ondragstart:vC(this._showDataInfo,this,!0),ondragend:vC(this._onDragEnd,this),onmouseover:vC(this._showDataInfo,this,!0),onmouseout:vC(this._showDataInfo,this,!1),style:{fill:l.get("fillerColor"),textPosition:"inside"}})),s.add(new pC({silent:!0,subPixelOptimize:!0,shape:{x:0,y:0,width:e[0],height:e[1]},style:{stroke:l.get("dataBackgroundColor")||l.get("borderColor"),lineWidth:1,fill:"rgba(0,0,0,0)"}})),yC([0,1],function(t){var e=el(l.get("handleIcon"),{cursor:SC(this._orient),draggable:!0,drift:vC(this._onDragMove,this,t),onmousemove:function(t){Ft(t.event)},ondragend:vC(this._onDragEnd,this),onmouseover:vC(this._showDataInfo,this,!0),onmouseout:vC(this._showDataInfo,this,!1)},{x:-1,y:0,width:2,height:2}),i=e.getBoundingRect();this._handleHeight=xl(l.get("handleSize"),this._size[1]),this._handleWidth=i.width/i.height*this._handleHeight,e.setStyle(l.getModel("handleStyle").getItemStyle());var n=l.get("handleColor");null!=n&&(e.style.fill=n),s.add(o[t]=e);var a=l.textStyleModel;this.group.add(r[t]=new Dr({silent:!0,invisible:!0,style:{x:0,y:0,text:"",textVerticalAlign:"middle",textAlign:"center",textFill:a.getTextColor(),textFont:a.getFont()},z2:10}))},this)},_resetInterval:function(){var t=this._range=this.dataZoomModel.getPercentRange(),e=this._getViewExtent();this._handleEnds=[gC(t[0],[0,100],e,!0),gC(t[1],[0,100],e,!0)]},_updateInterval:function(t,e){var i=this.dataZoomModel,n=this._handleEnds,a=this._getViewExtent(),o=i.findRepresentativeAxisProxy().getMinMaxSpan(),r=[0,100];ww(e,n,a,i.get("zoomLock")?"all":t,null!=o.minSpan?gC(o.minSpan,r,a,!0):null,null!=o.maxSpan?gC(o.maxSpan,r,a,!0):null);var s=this._range,l=this._range=mC([gC(n[0],a,r,!0),gC(n[1],a,r,!0)]);return!s||s[0]!==l[0]||s[1]!==l[1]},_updateView:function(t){var n=this._displayables,a=this._handleEnds,e=mC(a.slice()),o=this._size;yC([0,1],function(t){var e=n.handles[t],i=this._handleHeight;e.attr({scale:[i/2,i/2],position:[a[t],o[1]/2-i/2]})},this),n.filler.setShape({x:e[0],y:0,width:e[1]-e[0],height:o[1]}),this._updateDataInfo(t)},_updateDataInfo:function(t){var e=this.dataZoomModel,o=this._displayables,r=o.handleLabels,s=this._orient,l=["",""];if(e.get("showDetail")){var i=e.findRepresentativeAxisProxy();if(i){var n=i.getAxisModel().axis,a=this._range,u=t?i.calculateDataWindow({start:a[0],end:a[1]}).valueWindow:i.getDataValueWindow();l=[this._formatLabel(u[0],n),this._formatLabel(u[1],n)]}}var h=mC(this._handleEnds.slice());function c(t){var e=Ks(o.handles[t].parent,this.group),i=Js(0===t?"right":"left",e),n=this._handleWidth/2+5,a=$s([h[t]+(0===t?-n:n),this._size[1]/2],e);r[t].setStyle({x:a[0],y:a[1],textVerticalAlign:s===xC?"middle":i,textAlign:s===xC?i:"center",text:l[t]})}c.call(this,0),c.call(this,1)},_formatLabel:function(t,e){var i=this.dataZoomModel,n=i.get("labelFormatter"),a=i.get("labelPrecision");null!=a&&"auto"!==a||(a=e.getPixelPrecision());var o=null==t||isNaN(t)?"":"category"===e.type||"time"===e.type?e.scale.getLabel(Math.round(t)):t.toFixed(Math.min(a,20));return O(n)?n(t,o):R(n)?n.replace("{value}",o):o},_showDataInfo:function(t){t=this._dragging||t;var e=this._displayables.handleLabels;e[0].attr("invisible",!t),e[1].attr("invisible",!t)},_onDragMove:function(t,e,i){this._dragging=!0;var n=$s([e,i],this._displayables.barGroup.getLocalTransform(),!0),a=this._updateInterval(t,n[0]),o=this.dataZoomModel.get("realtime");this._updateView(!o),a&&o&&this._dispatchZoomAction()},_onDragEnd:function(){this._dragging=!1,this._showDataInfo(!1),this.dataZoomModel.get("realtime")||this._dispatchZoomAction()},_onClickPanelClick:function(t){var e=this._size,i=this._displayables.barGroup.transformCoordToLocal(t.offsetX,t.offsetY);if(!(i[0]<0||i[0]>e[0]||i[1]<0||i[1]>e[1])){var n=this._handleEnds,a=(n[0]+n[1])/2,o=this._updateInterval("all",i[0]-a);this._updateView(),o&&this._dispatchZoomAction()}},_dispatchZoomAction:function(){var t=this._range;this.api.dispatchAction({type:"dataZoom",from:this.uid,dataZoomId:this.dataZoomModel.id,start:t[0],end:t[1]})},_findCoordRect:function(){var i;if(yC(this.getTargetCoordInfo(),function(t){if(!i&&t.length){var e=t[0].model.coordinateSystem;i=e.getRect&&e.getRect()}}),!i){var t=this.api.getWidth(),e=this.api.getHeight();i={x:.2*t,y:.2*e,width:.6*t,height:.6*e}}return i}});function SC(t){return"vertical"===t?"ns-resize":"ew-resize"}_T.extend({type:"dataZoom.inside",defaultOption:{disabled:!1,zoomLock:!1,zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!1,preventDefaultMouseMove:!0}});var MC="\0_ec_dataZoom_roams";function IC(t,n){var e=TC(t),a=n.dataZoomId,o=n.coordId;E(e,function(t,e){var i=t.dataZoomInfos;i[a]&&_(n.allCoordIds,o)<0&&(delete i[a],t.count--)}),DC(e);var i=e[o];i||((i=e[o]={coordId:o,dataZoomInfos:{},count:0}).controller=function(t,r){var e=new uy(t.getZr());return E(["pan","zoom","scrollMove"],function(o){e.on(o,function(n){var a=[];E(r.dataZoomInfos,function(t){if(n.isAvailableBehavior(t.dataZoomModel.option)){var e=(t.getRange||{})[o],i=e&&e(r.controller,n);!t.dataZoomModel.get("disabled",!0)&&i&&a.push({dataZoomId:t.dataZoomId,start:i[0],end:i[1]})}}),a.length&&r.dispatchAction(a)})}),e}(t,i),i.dispatchAction=A(CC,t)),i.dataZoomInfos[a]||i.count++,i.dataZoomInfos[a]=n;var r=function(t){var n,a={type_true:2,type_move:1,type_false:0,type_undefined:-1},o=!0;return E(t,function(t){var e=t.dataZoomModel,i=!e.get("disabled",!0)&&(!e.get("zoomLock",!0)||"move");a["type_"+n]<a["type_"+i]&&(n=i),o&=e.get("preventDefaultMouseMove",!0)}),{controlType:n,opt:{zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!0,preventDefaultMouseMove:!!o}}}(i.dataZoomInfos);i.controller.enable(r.controlType,r.opt),i.controller.setPointerChecker(n.containsPoint),dc(i,"dispatchAction",n.dataZoomModel.get("throttle",!0),"fixRate")}function AC(t){return t.type+"\0_"+t.id}function TC(t){var e=t.getZr();return e[MC]||(e[MC]={})}function DC(i){E(i,function(t,e){t.count||(t.controller.dispose(),delete i[e])})}function CC(t,e){t.dispatchAction({type:"dataZoom",batch:e})}var LC=T,kC=ST.extend({type:"dataZoom.inside",init:function(t,e){this._range},render:function(r,t,s,e){kC.superApply(this,"render",arguments),this._range=r.getPercentRange(),E(this.getTargetCoordInfo(),function(t,a){var o=N(t,function(t){return AC(t.model)});E(t,function(e){var n=e.model,i={};E(["pan","zoom","scrollMove"],function(t){i[t]=LC(PC[t],this,e,a)},this),IC(s,{coordId:AC(n),allCoordIds:o,containsPoint:function(t,e,i){return n.coordinateSystem.containPoint([e,i])},dataZoomId:r.id,dataZoomModel:r,getRange:i})},this)},this)},dispose:function(){!function(t,i){var e=TC(t);E(e,function(t){t.controller.dispose();var e=t.dataZoomInfos;e[i]&&(delete e[i],t.count--)}),DC(e)}(this.api,this.dataZoomModel.id),kC.superApply(this,"dispose",arguments),this._range=null}}),PC={zoom:function(t,e,i,n){var a=this._range,o=a.slice(),r=t.axisModels[0];if(r){var s=EC[e](null,[n.originX,n.originY],r,i,t),l=(0<s.signal?s.pixelStart+s.pixelLength-s.pixel:s.pixel-s.pixelStart)/s.pixelLength*(o[1]-o[0])+o[0],u=Math.max(1/n.scale,0);o[0]=(o[0]-l)*u+l,o[1]=(o[1]-l)*u+l;var h=this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();return ww(0,o,[0,100],0,h.minSpan,h.maxSpan),this._range=o,a[0]!==o[0]||a[1]!==o[1]?o:void 0}},pan:NC(function(t,e,i,n,a,o){var r=EC[n]([o.oldX,o.oldY],[o.newX,o.newY],e,a,i);return r.signal*(t[1]-t[0])*r.pixel/r.pixelLength}),scrollMove:NC(function(t,e,i,n,a,o){return EC[n]([0,0],[o.scrollDelta,o.scrollDelta],e,a,i).signal*(t[1]-t[0])*o.scrollDelta})};function NC(l){return function(t,e,i,n){var a=this._range,o=a.slice(),r=t.axisModels[0];if(r){var s=l(o,r,t,e,i,n);return ww(s,o,[0,100],"all"),this._range=o,a[0]!==o[0]||a[1]!==o[1]?o:void 0}}}function OC(t){var e=t&&t.visualMap;k(e)||(e=e?[e]:[]),RC(e,function(t){if(t){zC(t,"splitList")&&!zC(t,"pieces")&&(t.pieces=t.splitList,delete t.splitList);var e=t.pieces;e&&k(e)&&RC(e,function(t){z(t)&&(zC(t,"start")&&!zC(t,"min")&&(t.min=t.start),zC(t,"end")&&!zC(t,"max")&&(t.max=t.end))})}})}var EC={grid:function(t,e,i,n,a){var o=i.axis,r={},s=a.model.coordinateSystem.getRect();return t=t||[0,0],"x"===o.dim?(r.pixel=e[0]-t[0],r.pixelLength=s.width,r.pixelStart=s.x,r.signal=o.inverse?1:-1):(r.pixel=e[1]-t[1],r.pixelLength=s.height,r.pixelStart=s.y,r.signal=o.inverse?-1:1),r},polar:function(t,e,i,n,a){var o=i.axis,r={},s=a.model.coordinateSystem,l=s.getRadiusAxis().getExtent(),u=s.getAngleAxis().getExtent();return t=t?s.pointToCoord(t):[0,0],e=s.pointToCoord(e),"radiusAxis"===i.mainType?(r.pixel=e[0]-t[0],r.pixelLength=l[1]-l[0],r.pixelStart=l[0],r.signal=o.inverse?1:-1):(r.pixel=e[1]-t[1],r.pixelLength=u[1]-u[0],r.pixelStart=u[0],r.signal=o.inverse?-1:1),r},singleAxis:function(t,e,i,n,a){var o=i.axis,r=a.model.coordinateSystem.getRect(),s={};return t=t||[0,0],"horizontal"===o.orient?(s.pixel=e[0]-t[0],s.pixelLength=r.width,s.pixelStart=r.x,s.signal=o.inverse?1:-1):(s.pixel=e[1]-t[1],s.pixelLength=r.height,s.pixelStart=r.y,s.signal=o.inverse?-1:1),s}},RC=E;function zC(t,e){return t&&t.hasOwnProperty&&t.hasOwnProperty(e)}fu.registerSubTypeDefaulter("visualMap",function(t){return t.categories||(t.pieces?0<t.pieces.length:0<t.splitNumber)&&!t.calculable?"piecewise":"continuous"});var BC=cd.VISUAL.COMPONENT;function VC(t,e,i,n){for(var a=e.targetVisuals[n],o=Bx.prepareVisualTypes(a),r={color:t.getData().getVisual("color")},s=0,l=o.length;s<l;s++){var u=o[s],h=a["opacity"===u?"__alphaForOpacity":u];h&&h.applyVisual(i,c,d)}return r.color;function c(t){return r[t]}function d(t,e){r[t]=e}}af(BC,{createOnAllSeries:!0,reset:function(i,t){var n=[];return t.eachComponent("visualMap",function(t){var e=i.pipelineContext;!t.isTargetSeries(i)||e&&e.large||n.push(function(t,f,p,g){var m={};return E(t,function(t){var e=Bx.prepareVisualTypes(f[t]);m[t]=e}),{progress:function(t,i){function e(t){return i.getItemVisual(a,t)}function n(t,e){i.setItemVisual(a,t,e)}var a;for(null!=g&&(g=i.getDimension(g));null!=(a=t.next());){var o=i.getRawDataItem(a);if(!o||!1!==o.visualMap)for(var r=null!=g?i.get(g,a,!0):a,s=p(r),l=f[s],u=m[s],h=0,c=u.length;h<c;h++){var d=u[h];l[d]&&l[d].applyVisual(r,e,n)}}}}}(t.stateList,t.targetVisuals,T(t.getValueState,t),t.getDataDimension(i.getData())))}),n}}),af(BC,{createOnAllSeries:!0,reset:function(a,t){var o=a.getData(),r=[];t.eachComponent("visualMap",function(t){if(t.isTargetSeries(a)){var e=t.getVisualMeta(T(VC,null,a,t))||{stops:[],outerColors:[]},i=t.getDataDimension(o),n=o.getDimensionInfo(i);null!=n&&(e.dimension=n.index,r.push(e))}}),a.getData().setVisual("visualMeta",r)}});var GC=function(t,e,i){var n=D((FC[t]||{})[e]);return i&&k(n)?n[n.length-1]:n},FC={color:{active:["#006edd","#e0ffff"],inactive:["rgba(0,0,0,0)"]},colorHue:{active:[0,360],inactive:[0,0]},colorSaturation:{active:[.3,1],inactive:[0,0]},colorLightness:{active:[.9,.5],inactive:[0,0]},colorAlpha:{active:[.3,1],inactive:[0,0]},opacity:{active:[.3,1],inactive:[0,0]},symbol:{active:["circle","roundRect","diamond"],inactive:["none"]},symbolSize:{active:[10,50],inactive:[0,0]}},WC=Bx.mapVisual,HC=Bx.eachVisual,ZC=k,UC=E,XC=wl,YC=yl,jC=sf({type:"visualMap",dependencies:["series"],stateList:["inRange","outOfRange"],replacableOptionKeys:["inRange","outOfRange","target","controller","color"],dataBound:[-1/0,1/0],layoutMode:{type:"box",ignoreSize:!0},defaultOption:{show:!0,zlevel:0,z:4,seriesIndex:"all",min:0,max:200,dimension:null,inRange:null,outOfRange:null,left:0,right:null,top:null,bottom:0,itemWidth:null,itemHeight:null,inverse:!1,orient:"vertical",backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",contentColor:"#5793f3",inactiveColor:"#aaa",borderWidth:0,padding:5,textGap:10,precision:0,color:null,formatter:null,text:null,textStyle:{color:"#333"}},init:function(t,e,i){this._dataExtent,this.targetVisuals={},this.controllerVisuals={},this.textStyleModel,this.itemSize,this.mergeDefaultAndTheme(t,i)},optionUpdated:function(t,e){var i=this.option;v.canvasSupported||(i.realtime=!1),e||qT(i,t,this.replacableOptionKeys),this.textStyleModel=this.getModel("textStyle"),this.resetItemSize(),this.completeVisualOption()},resetVisual:function(t){var e=this.stateList;t=T(t,this),this.controllerVisuals=jT(this.option.controller,e,t),this.targetVisuals=jT(this.option.target,e,t)},getTargetSeriesIndices:function(){var t=this.option.seriesIndex,i=[];return null==t||"all"===t?this.ecModel.eachSeries(function(t,e){i.push(e)}):i=wa(t),i},eachTargetSeries:function(e,i){E(this.getTargetSeriesIndices(),function(t){e.call(i,this.ecModel.getSeriesByIndex(t))},this)},isTargetSeries:function(e){var i=!1;return this.eachTargetSeries(function(t){t===e&&(i=!0)}),i},formatValueText:function(t,e,i){var n,a,o=this.option,r=o.precision,s=this.dataBound,l=o.formatter;return i=i||["<",">"],k(t)&&(t=t.slice(),n=!0),a=e?t:n?[u(t[0]),u(t[1])]:u(t),R(l)?l.replace("{value}",n?a[0]:a).replace("{value2}",n?a[1]:a):O(l)?n?l(t[0],t[1]):l(t):n?t[0]===s[0]?i[0]+" "+a[1]:t[1]===s[1]?i[1]+" "+a[0]:a[0]+" - "+a[1]:a;function u(t){return t===s[0]?"min":t===s[1]?"max":(+t).toFixed(Math.min(r,20))}},resetExtent:function(){var t=this.option,e=XC([t.min,t.max]);this._dataExtent=e},getDataDimension:function(t){var e=this.option.dimension,i=t.dimensions;if(null!=e||i.length){if(null!=e)return t.getDimension(e);for(var n=t.dimensions,a=n.length-1;0<=a;a--){var o=n[a];if(!t.getDimensionInfo(o).isCalculationCoord)return o}}},getExtent:function(){return this._dataExtent.slice()},completeVisualOption:function(){var t=this.ecModel,e=this.option,i={inRange:e.inRange,outOfRange:e.outOfRange},n=e.target||(e.target={}),a=e.controller||(e.controller={});m(n,i),m(a,i);var u=this.isCategory();function o(n){ZC(e.color)&&!n.inRange&&(n.inRange={color:e.color.slice().reverse()}),n.inRange=n.inRange||{color:t.get("gradientColor")},UC(this.stateList,function(t){var e=n[t];if(R(e)){var i=GC(e,"active",u);i?(n[t]={},n[t][e]=i):delete n[t]}},this)}o.call(this,n),o.call(this,a),function(t,e,i){var n=t[e],a=t[i];n&&!a&&(a=t[i]={},UC(n,function(t,e){if(Bx.isValidType(e)){var i=GC(e,"inactive",u);null!=i&&(a[e]=i,"color"!==e||a.hasOwnProperty("opacity")||a.hasOwnProperty("colorAlpha")||(a.opacity=[0,0]))}}))}.call(this,n,"inRange","outOfRange"),function(o){var r=(o.inRange||{}).symbol||(o.outOfRange||{}).symbol,s=(o.inRange||{}).symbolSize||(o.outOfRange||{}).symbolSize,l=this.get("inactiveColor");UC(this.stateList,function(t){var e=this.itemSize,i=o[t];null==(i=i||(o[t]={color:u?l:[l]})).symbol&&(i.symbol=r&&D(r)||(u?"roundRect":["roundRect"])),null==i.symbolSize&&(i.symbolSize=s&&D(s)||(u?e[0]:[e[0],e[0]])),i.symbol=WC(i.symbol,function(t){return"none"===t||"square"===t?"roundRect":t});var n=i.symbolSize;if(null!=n){var a=-1/0;HC(n,function(t){a<t&&(a=t)}),i.symbolSize=WC(n,function(t){return YC(t,[0,a],[0,e[0]],!0)})}},this)}.call(this,a)},resetItemSize:function(){this.itemSize=[parseFloat(this.get("itemWidth")),parseFloat(this.get("itemHeight"))]},isCategory:function(){return!!this.option.categories},setSelected:et,getValueState:et,getVisualMeta:et}),qC=[20,140],KC=jC.extend({type:"visualMap.continuous",defaultOption:{align:"auto",calculable:!1,range:null,realtime:!0,itemHeight:null,itemWidth:null,hoverLink:!0,hoverLinkDataSize:null,hoverLinkOnHandle:null},optionUpdated:function(t,e){KC.superApply(this,"optionUpdated",arguments),this.resetExtent(),this.resetVisual(function(t){t.mappingMethod="linear",t.dataExtent=this.getExtent()}),this._resetRange()},resetItemSize:function(){KC.superApply(this,"resetItemSize",arguments);var t=this.itemSize;"horizontal"===this._orient&&t.reverse(),null!=t[0]&&!isNaN(t[0])||(t[0]=qC[0]),null!=t[1]&&!isNaN(t[1])||(t[1]=qC[1])},_resetRange:function(){var t=this.getExtent(),e=this.option.range;!e||e.auto?(t.auto=1,this.option.range=t):k(e)&&(e[0]>e[1]&&e.reverse(),e[0]=Math.max(e[0],t[0]),e[1]=Math.min(e[1],t[1]))},completeVisualOption:function(){jC.prototype.completeVisualOption.apply(this,arguments),E(this.stateList,function(t){var e=this.option.controller[t].symbolSize;e&&e[0]!==e[1]&&(e[0]=0)},this)},setSelected:function(t){this.option.range=t.slice(),this._resetRange()},getSelected:function(){var t=this.getExtent(),e=wl((this.get("range")||[]).slice());return e[0]>t[1]&&(e[0]=t[1]),e[1]>t[1]&&(e[1]=t[1]),e[0]<t[0]&&(e[0]=t[0]),e[1]<t[0]&&(e[1]=t[0]),e},getValueState:function(t){var e=this.option.range,i=this.getExtent();return(e[0]<=i[0]||e[0]<=t)&&(e[1]>=i[1]||t<=e[1])?"inRange":"outOfRange"},findTargetDataIndices:function(n){var a=[];return this.eachTargetSeries(function(t){var i=[],e=t.getData();e.each(this.getDataDimension(e),function(t,e){n[0]<=t&&t<=n[1]&&i.push(e)},this),a.push({seriesId:t.id,dataIndex:i})},this),a},getVisualMeta:function(i){var t=$C(this,"outOfRange",this.getExtent()),e=$C(this,"inRange",this.option.range.slice()),n=[];function a(t,e){n.push({value:t,color:i(t,e)})}for(var o=0,r=0,s=e.length,l=t.length;r<l&&(!e.length||t[r]<=e[0]);r++)t[r]<e[o]&&a(t[r],"outOfRange");for(var u=1;o<s;o++,u=0)u&&n.length&&a(e[o],"outOfRange"),a(e[o],"inRange");for(u=1;r<l;r++)(!e.length||e[e.length-1]<t[r])&&(u&&(n.length&&a(n[n.length-1].value,"outOfRange"),u=0),a(t[r],"outOfRange"));var h=n.length;return{stops:n,outerColors:[h?n[0].color:"transparent",h?n[h-1].color:"transparent"]}}});function $C(t,e,i){if(i[0]===i[1])return i.slice();for(var n=(i[1]-i[0])/200,a=i[0],o=[],r=0;r<=200&&a<i[1];r++)o.push(a),a+=n;return o.push(i[1]),o}var JC=lf({type:"visualMap",autoPositionValues:{left:1,right:1,top:1,bottom:1},init:function(t,e){this.ecModel=t,this.api=e,this.visualMapModel},render:function(t,e,i,n){!1!==(this.visualMapModel=t).get("show")?this.doRender.apply(this,arguments):this.group.removeAll()},renderBackground:function(t){var e=this.visualMapModel,i=Vl(e.get("padding")||0),n=t.getBoundingRect();t.add(new Hr({z2:-1,silent:!0,shape:{x:n.x-i[3],y:n.y-i[0],width:n.width+i[3]+i[1],height:n.height+i[0]+i[2]},style:{fill:e.get("backgroundColor"),stroke:e.get("borderColor"),lineWidth:e.get("borderWidth")}}))},getControllerVisual:function(i,n,a){var t=(a=a||{}).forceState,e=this.visualMapModel,o={};if("symbol"===n&&(o.symbol=e.get("itemSymbol")),"color"===n){var r=e.get("contentColor");o.color=r}function s(t){return o[t]}function l(t,e){o[t]=e}var u=e.controllerVisuals[t||e.getValueState(i)];return E(Bx.prepareVisualTypes(u),function(t){var e=u[t];a.convertOpacityToAlpha&&"opacity"===t&&(t="colorAlpha",e=u.__alphaForOpacity),Bx.dependsOn(t,n)&&e&&e.applyVisual(i,s,l)}),o[n]},positionGroup:function(t){var e=this.visualMapModel,i=this.api;ou(t,e.getBoxLayoutParams(),{width:i.getWidth(),height:i.getHeight()})},doRender:et});function QC(t,e,i){var n=t.option,a=n.align;if(null!=a&&"auto"!==a)return a;for(var o={width:e.getWidth(),height:e.getHeight()},r="horizontal"===n.orient?1:0,s=[["left","right","width"],["top","bottom","height"]],l=s[r],u=[0,null,10],h={},c=0;c<3;c++)h[s[1-r][c]]=u[c],h[l[c]]=2===c?i[0]:n[l[c]];var d=[["x","width",3],["y","height",0]][r],f=au(h,o,n.padding);return l[(f.margin[d[2]]||0)+f[d[0]]+.5*f[d[1]]<.5*o[d[1]]?0:1]}function tL(t,e){return E(t||[],function(t){null!=t.dataIndex&&(t.dataIndexInside=t.dataIndex,t.dataIndex=null),t.highlightKey="visualMap"+(e?e.componentIndex:"")}),t}var eL=yl,iL=E,nL=Math.min,aL=Math.max,oL=JC.extend({type:"visualMap.continuous",init:function(){oL.superApply(this,"init",arguments),this._shapes={},this._dataInterval=[],this._handleEnds=[],this._orient,this._useHandle,this._hoverLinkDataIndices=[],this._dragging,this._hovering},doRender:function(t,e,i,n){n&&"selectDataRange"===n.type&&n.from===this.uid||this._buildView()},_buildView:function(){this.group.removeAll();var t=this.visualMapModel,e=this.group;this._orient=t.get("orient"),this._useHandle=t.get("calculable"),this._resetInterval(),this._renderBar(e);var i=t.get("text");this._renderEndsText(e,i,0),this._renderEndsText(e,i,1),this._updateView(!0),this.renderBackground(e),this._updateView(),this._enableHoverLinkToSeries(),this._enableHoverLinkFromSeries(),this.positionGroup(e)},_renderEndsText:function(t,e,i){if(e){var n=e[1-i];n=null!=n?n+"":"";var a=this.visualMapModel,o=a.get("textGap"),r=a.itemSize,s=this._shapes.barGroup,l=this._applyTransform([r[0]/2,0===i?-o:r[1]+o],s),u=this._applyTransform(0===i?"bottom":"top",s),h=this._orient,c=this.visualMapModel.textStyleModel;this.group.add(new Dr({style:{x:l[0],y:l[1],textVerticalAlign:"horizontal"===h?"middle":u,textAlign:"horizontal"===h?u:"center",text:n,textFont:c.getFont(),textFill:c.getTextColor()}}))}},_renderBar:function(t){var e=this.visualMapModel,i=this._shapes,n=e.itemSize,a=this._orient,o=this._useHandle,r=QC(e,this.api,n),s=i.barGroup=this._createBarGroup(r);s.add(i.outOfRange=rL()),s.add(i.inRange=rL(null,o?lL(this._orient):null,T(this._dragHandle,this,"all",!1),T(this._dragHandle,this,"all",!0)));var l=e.textStyleModel.getTextRect("国"),u=aL(l.width,l.height);o&&(i.handleThumbs=[],i.handleLabels=[],i.handleLabelPoints=[],this._createHandle(s,0,n,u,a,r),this._createHandle(s,1,n,u,a,r)),this._createIndicator(s,n,u,a),t.add(s)},_createHandle:function(t,e,i,n,a){var o=T(this._dragHandle,this,e,!1),r=T(this._dragHandle,this,e,!0),s=rL(function(t,e){return 0===t?[[0,0],[e,0],[e,-e]]:[[0,0],[e,0],[e,e]]}(e,n),lL(this._orient),o,r);s.position[0]=i[0],t.add(s);var l=this.visualMapModel.textStyleModel,u=new Dr({draggable:!0,drift:o,onmousemove:function(t){Ft(t.event)},ondragend:r,style:{x:0,y:0,text:"",textFont:l.getFont(),textFill:l.getTextColor()}});this.group.add(u);var h=["horizontal"===a?n/2:1.5*n,"horizontal"===a?0===e?-1.5*n:1.5*n:0===e?-n/2:n/2],c=this._shapes;c.handleThumbs[e]=s,c.handleLabelPoints[e]=h,c.handleLabels[e]=u},_createIndicator:function(t,e,i,n){var a=rL([[0,0]],"move");a.position[0]=e[0],a.attr({invisible:!0,silent:!0}),t.add(a);var o=this.visualMapModel.textStyleModel,r=new Dr({silent:!0,invisible:!0,style:{x:0,y:0,text:"",textFont:o.getFont(),textFill:o.getTextColor()}});this.group.add(r);var s=["horizontal"===n?i/2:9,0],l=this._shapes;l.indicator=a,l.indicatorLabel=r,l.indicatorLabelPoint=s},_dragHandle:function(t,e,i,n){if(this._useHandle){if(this._dragging=!e,!e){var a=this._applyTransform([i,n],this._shapes.barGroup,!0);this._updateInterval(t,a[1]),this._updateView()}e===!this.visualMapModel.get("realtime")&&this.api.dispatchAction({type:"selectDataRange",from:this.uid,visualMapId:this.visualMapModel.id,selected:this._dataInterval.slice()}),e?this._hovering||this._clearHoverLinkToSeries():sL(this.visualMapModel)&&this._doHoverLinkToSeries(this._handleEnds[t],!1)}},_resetInterval:function(){var t=this.visualMapModel,e=this._dataInterval=t.getSelected(),i=t.getExtent(),n=[0,t.itemSize[1]];this._handleEnds=[eL(e[0],i,n,!0),eL(e[1],i,n,!0)]},_updateInterval:function(t,e){e=e||0;var i=this.visualMapModel,n=this._handleEnds,a=[0,i.itemSize[1]];ww(e,n,a,t,0);var o=i.getExtent();this._dataInterval=[eL(n[0],a,o,!0),eL(n[1],a,o,!0)]},_updateView:function(t){var e=this.visualMapModel,i=e.getExtent(),n=this._shapes,a=[0,e.itemSize[1]],o=t?a:this._handleEnds,r=this._createBarVisual(this._dataInterval,i,o,"inRange"),s=this._createBarVisual(i,i,a,"outOfRange");n.inRange.setStyle({fill:r.barColor,opacity:r.opacity}).setShape("points",r.barPoints),n.outOfRange.setStyle({fill:s.barColor,opacity:s.opacity}).setShape("points",s.barPoints),this._updateHandle(o,r)},_createBarVisual:function(t,e,i,n){var a={forceState:n,convertOpacityToAlpha:!0},o=this._makeColorGradient(t,a),r=[this.getControllerVisual(t[0],"symbolSize",a),this.getControllerVisual(t[1],"symbolSize",a)],s=this._createBarPoints(i,r);return{barColor:new Jr(0,0,0,1,o),barPoints:s,handlesColor:[o[0].color,o[o.length-1].color]}},_makeColorGradient:function(t,e){var i=[],n=(t[1]-t[0])/100;i.push({color:this.getControllerVisual(t[0],"color",e),offset:0});for(var a=1;a<100;a++){var o=t[0]+n*a;if(o>t[1])break;i.push({color:this.getControllerVisual(o,"color",e),offset:a/100})}return i.push({color:this.getControllerVisual(t[1],"color",e),offset:1}),i},_createBarPoints:function(t,e){var i=this.visualMapModel.itemSize;return[[i[0]-e[0],t[0]],[i[0],t[0]],[i[0],t[1]],[i[0]-e[1],t[1]]]},_createBarGroup:function(t){var e=this._orient,i=this.visualMapModel.get("inverse");return new Si("horizontal"!==e||i?"horizontal"===e&&i?{scale:"bottom"===t?[-1,1]:[1,1],rotation:-Math.PI/2}:"vertical"!==e||i?{scale:"left"===t?[1,1]:[-1,1]}:{scale:"left"===t?[1,-1]:[-1,-1]}:{scale:"bottom"===t?[1,1]:[-1,1],rotation:Math.PI/2})},_updateHandle:function(n,a){if(this._useHandle){var o=this._shapes,r=this.visualMapModel,s=o.handleThumbs,l=o.handleLabels;iL([0,1],function(t){var e=s[t];e.setStyle("fill",a.handlesColor[t]),e.position[1]=n[t];var i=$s(o.handleLabelPoints[t],Ks(e,this.group));l[t].setStyle({x:i[0],y:i[1],text:r.formatValueText(this._dataInterval[t]),textVerticalAlign:"middle",textAlign:this._applyTransform("horizontal"===this._orient?0===t?"bottom":"top":"left",o.barGroup)})},this)}},_showIndicator:function(t,e,i,n){var a=this.visualMapModel,o=a.getExtent(),r=a.itemSize,s=[0,r[1]],l=eL(t,o,s,!0),u=this._shapes,h=u.indicator;if(h){h.position[1]=l,h.attr("invisible",!1),h.setShape("points",function(t,e,i,n){return t?[[0,-nL(e,aL(i,0))],[6,0],[0,nL(e,aL(n-i,0))]]:[[0,0],[5,-5],[5,5]]}(!!i,n,l,r[1]));var c=this.getControllerVisual(t,"color",{convertOpacityToAlpha:!0});h.setStyle("fill",c);var d=$s(u.indicatorLabelPoint,Ks(h,this.group)),f=u.indicatorLabel;f.attr("invisible",!1);var p=this._applyTransform("left",u.barGroup),g=this._orient;f.setStyle({text:(i||"")+a.formatValueText(e),textVerticalAlign:"horizontal"===g?p:"middle",textAlign:"horizontal"===g?"center":p,x:d[0],y:d[1]})}},_enableHoverLinkToSeries:function(){var n=this;this._shapes.barGroup.on("mousemove",function(t){if(n._hovering=!0,!n._dragging){var e=n.visualMapModel.itemSize,i=n._applyTransform([t.offsetX,t.offsetY],n._shapes.barGroup,!0,!0);i[1]=nL(aL(0,i[1]),e[1]),n._doHoverLinkToSeries(i[1],0<=i[0]&&i[0]<=e[0])}}).on("mouseout",function(){n._hovering=!1,n._dragging||n._clearHoverLinkToSeries()})},_enableHoverLinkFromSeries:function(){var t=this.api.getZr();this.visualMapModel.option.hoverLink?(t.on("mouseover",this._hoverLinkFromSeriesMouseOver,this),t.on("mouseout",this._hideIndicator,this)):this._clearHoverLinkFromSeries()},_doHoverLinkToSeries:function(t,e){var i=this.visualMapModel,n=i.itemSize;if(i.option.hoverLink){var a=[0,n[1]],o=i.getExtent();t=nL(aL(a[0],t),a[1]);var r=function(t,e,i){var n=6,a=t.get("hoverLinkDataSize");a&&(n=eL(a,e,i,!0)/2);return n}(i,o,a),s=[t-r,t+r],l=eL(t,a,o,!0),u=[eL(s[0],a,o,!0),eL(s[1],a,o,!0)];s[0]<a[0]&&(u[0]=-1/0),a[1]<s[1]&&(u[1]=1/0),e&&(u[0]===-1/0?this._showIndicator(l,u[1],"< ",r):u[1]===1/0?this._showIndicator(l,u[0],"> ",r):this._showIndicator(l,l,"≈ ",r));var h=this._hoverLinkDataIndices,c=[];(e||sL(i))&&(c=this._hoverLinkDataIndices=i.findTargetDataIndices(u));var d=function(t,e){var i={},n={};return a(t||[],i),a(e||[],n,i),[o(i),o(n)];function a(t,e,i){for(var n=0,a=t.length;n<a;n++)for(var o=t[n].seriesId,r=wa(t[n].dataIndex),s=i&&i[o],l=0,u=r.length;l<u;l++){var h=r[l];s&&s[h]?s[h]=null:(e[o]||(e[o]={}))[h]=1}}function o(t,e){var i=[];for(var n in t)if(t.hasOwnProperty(n)&&null!=t[n])if(e)i.push(+n);else{var a=o(t[n],!0);a.length&&i.push({seriesId:n,dataIndex:a})}return i}}(h,c);this._dispatchHighDown("downplay",tL(d[0],i)),this._dispatchHighDown("highlight",tL(d[1],i))}},_hoverLinkFromSeriesMouseOver:function(t){var e=t.target,i=this.visualMapModel;if(e&&null!=e.dataIndex){var n=this.ecModel.getSeriesByIndex(e.seriesIndex);if(i.isTargetSeries(n)){var a=n.getData(e.dataType),o=a.get(i.getDataDimension(a),e.dataIndex,!0);isNaN(o)||this._showIndicator(o,o)}}},_hideIndicator:function(){var t=this._shapes;t.indicator&&t.indicator.attr("invisible",!0),t.indicatorLabel&&t.indicatorLabel.attr("invisible",!0)},_clearHoverLinkToSeries:function(){this._hideIndicator();var t=this._hoverLinkDataIndices;this._dispatchHighDown("downplay",tL(t,this.visualMapModel)),t.length=0},_clearHoverLinkFromSeries:function(){this._hideIndicator();var t=this.api.getZr();t.off("mouseover",this._hoverLinkFromSeriesMouseOver),t.off("mouseout",this._hideIndicator)},_applyTransform:function(t,e,i,n){var a=Ks(e,n?null:this.group);return ol[k(t)?"applyTransform":"transformDirection"](t,a,i)},_dispatchHighDown:function(t,e){e&&e.length&&this.api.dispatchAction({type:t,batch:e})},dispose:function(){this._clearHoverLinkFromSeries(),this._clearHoverLinkToSeries()},remove:function(){this._clearHoverLinkFromSeries(),this._clearHoverLinkToSeries()}});function rL(t,e,i,n){return new Rr({shape:{points:t},draggable:!!i,cursor:e,drift:i,onmousemove:function(t){Ft(t.event)},ondragend:n})}function sL(t){var e=t.get("hoverLinkOnHandle");return!!(null==e?t.get("realtime"):e)}function lL(t){return"vertical"===t?"ns-resize":"ew-resize"}tf({type:"selectDataRange",event:"dataRangeSelected",update:"update"},function(e,t){t.eachComponent({mainType:"visualMap",query:e},function(t){t.setSelected(e.selected)})}),Jd(OC);var uL=jC.extend({type:"visualMap.piecewise",defaultOption:{selected:null,minOpen:!1,maxOpen:!1,align:"auto",itemWidth:20,itemHeight:14,itemSymbol:"roundRect",pieceList:null,categories:null,splitNumber:5,selectedMode:"multiple",itemGap:10,hoverLink:!0,showLabel:null},optionUpdated:function(t,e){uL.superApply(this,"optionUpdated",arguments),this._pieceList=[],this.resetExtent();var i=this._mode=this._determineMode();hL[this._mode].call(this),this._resetSelected(t,e);var n=this.option.categories;this.resetVisual(function(t,e){"categories"===i?(t.mappingMethod="category",t.categories=D(n)):(t.dataExtent=this.getExtent(),t.mappingMethod="piecewise",t.pieceList=N(this._pieceList,function(t){t=D(t);return"inRange"!==e&&(t.visual=null),t}))})},completeVisualOption:function(){var n=this.option,i={},t=Bx.listVisualTypes(),a=this.isCategory();function o(t,e,i){return t&&t[e]&&(z(t[e])?t[e].hasOwnProperty(i):t[e]===i)}E(n.pieces,function(e){E(t,function(t){e.hasOwnProperty(t)&&(i[t]=1)})}),E(i,function(t,e){var i=0;E(this.stateList,function(t){i|=o(n,t,e)||o(n.target,t,e)},this),i||E(this.stateList,function(t){(n[t]||(n[t]={}))[e]=GC(e,"inRange"===t?"active":"inactive",a)})},this),jC.prototype.completeVisualOption.apply(this,arguments)},_resetSelected:function(t,e){var i=this.option,n=this._pieceList,a=(e?i:t).selected||{};if(i.selected=a,E(n,function(t,e){var i=this.getSelectedMapKey(t);a.hasOwnProperty(i)||(a[i]=!0)},this),"single"===i.selectedMode){var o=!1;E(n,function(t,e){var i=this.getSelectedMapKey(t);a[i]&&(o?a[i]=!1:o=!0)},this)}},getSelectedMapKey:function(t){return"categories"===this._mode?t.value+"":t.index+""},getPieceList:function(){return this._pieceList},_determineMode:function(){var t=this.option;return t.pieces&&0<t.pieces.length?"pieces":this.option.categories?"categories":"splitNumber"},setSelected:function(t){this.option.selected=D(t)},getValueState:function(t){var e=Bx.findPieceIndex(t,this._pieceList);return null!=e&&this.option.selected[this.getSelectedMapKey(this._pieceList[e])]?"inRange":"outOfRange"},findTargetDataIndices:function(n){var a=[];return this.eachTargetSeries(function(t){var i=[],e=t.getData();e.each(this.getDataDimension(e),function(t,e){Bx.findPieceIndex(t,this._pieceList)===n&&i.push(e)},this),a.push({seriesId:t.id,dataIndex:i})},this),a},getRepresentValue:function(t){var e;if(this.isCategory())e=t.value;else if(null!=t.value)e=t.value;else{var i=t.interval||[];e=i[0]===-1/0&&i[1]===1/0?0:(i[0]+i[1])/2}return e},getVisualMeta:function(a){if(!this.isCategory()){var o=[],r=[],s=this,t=this._pieceList.slice();if(t.length){var e=t[0].interval[0];e!==-1/0&&t.unshift({interval:[-1/0,e]}),(e=t[t.length-1].interval[1])!==1/0&&t.push({interval:[e,1/0]})}else t.push({interval:[-1/0,1/0]});var i=-1/0;return E(t,function(t){var e=t.interval;e&&(e[0]>i&&n([i,e[0]],"outOfRange"),n(e.slice()),i=e[1])},this),{stops:o,outerColors:r}}function n(t,e){var i=s.getRepresentValue({interval:t});e=e||s.getValueState(i);var n=a(i,e);t[0]===-1/0?r[0]=n:t[1]===1/0?r[1]=n:o.push({value:t[0],color:n},{value:t[1],color:n})}}}),hL={splitNumber:function(){var t=this.option,e=this._pieceList,i=Math.min(t.precision,20),n=this.getExtent(),a=t.splitNumber;a=Math.max(parseInt(a,10),1),t.splitNumber=a;for(var o=(n[1]-n[0])/a;+o.toFixed(i)!==o&&i<5;)i++;t.precision=i,o=+o.toFixed(i);var r=0;t.minOpen&&e.push({index:r++,interval:[-1/0,n[0]],close:[0,0]});for(var s=n[0],l=r+a;r<l;s+=o){var u=r===a-1?n[1]:s+o;e.push({index:r++,interval:[s,u],close:[1,1]})}t.maxOpen&&e.push({index:r++,interval:[n[1],1/0],close:[0,0]}),Ol(e),E(e,function(t){t.text=this.formatValueText(t.interval)},this)},categories:function(){var t=this.option;E(t.categories,function(t){this._pieceList.push({text:this.formatValueText(t,!0),value:t})},this),cL(t,this._pieceList)},pieces:function(){var t=this.option,d=this._pieceList;E(t.pieces,function(t,e){z(t)||(t={value:t});var i={text:"",index:e};if(null!=t.label&&(i.text=t.label),t.hasOwnProperty("value")){var n=i.value=t.value;i.interval=[n,n],i.close=[1,1]}else{for(var a=i.interval=[],o=i.close=[0,0],r=[1,0,1],s=[-1/0,1/0],l=[],u=0;u<2;u++){for(var h=[["gte","gt","min"],["lte","lt","max"]][u],c=0;c<3&&null==a[u];c++)a[u]=t[h[c]],o[u]=r[c],l[u]=2===c;null==a[u]&&(a[u]=s[u])}l[0]&&a[1]===1/0&&(o[0]=0),l[1]&&a[0]===-1/0&&(o[1]=0),a[0]===a[1]&&o[0]&&o[1]&&(i.value=a[0])}i.visual=Bx.retrieveVisuals(t),d.push(i)},this),cL(t,d),Ol(d),E(d,function(t){var e=t.close,i=[["<","≤"][e[1]],[">","≥"][e[0]]];t.text=t.text||this.formatValueText(null!=t.value?t.value:t.interval,!1,i)},this)}};function cL(t,e){var i=t.inverse;("vertical"===t.orient?!i:i)&&e.reverse()}JC.extend({type:"visualMap.piecewise",doRender:function(){var o=this.group;o.removeAll();var r=this.visualMapModel,s=r.get("textGap"),t=r.textStyleModel,l=t.getFont(),u=t.getTextColor(),h=this._getItemAlign(),c=r.itemSize,e=this._getViewData(),i=e.endsText,d=W(r.get("showLabel",!0),!i);i&&this._renderEndsText(o,i[0],c,d,h),E(e.viewPieceList,function(t){var e=t.piece,i=new Si;i.onclick=T(this._onItemClick,this,e),this._enableHoverLink(i,t.indexInModelPieceList);var n=r.getRepresentValue(e);if(this._createItemSymbol(i,n,[0,0,c[0],c[1]]),d){var a=this.visualMapModel.getValueState(n);i.add(new Dr({style:{x:"right"===h?-s:c[0]+s,y:c[1]/2,text:e.text,textVerticalAlign:"middle",textAlign:h,textFont:l,textFill:u,opacity:"outOfRange"===a?.5:1}}))}o.add(i)},this),i&&this._renderEndsText(o,i[1],c,d,h),nu(r.get("orient"),o,r.get("itemGap")),this.renderBackground(o),this.positionGroup(o)},_enableHoverLink:function(t,i){function e(t){var e=this.visualMapModel;e.option.hoverLink&&this.api.dispatchAction({type:t,batch:tL(e.findTargetDataIndices(i),e)})}t.on("mouseover",T(e,this,"highlight")).on("mouseout",T(e,this,"downplay"))},_getItemAlign:function(){var t=this.visualMapModel,e=t.option;if("vertical"===e.orient)return QC(t,this.api,t.itemSize);var i=e.align;return i&&"auto"!==i||(i="left"),i},_renderEndsText:function(t,e,i,n,a){if(e){var o=new Si,r=this.visualMapModel.textStyleModel;o.add(new Dr({style:{x:n?"right"===a?i[0]:0:i[0]/2,y:i[1]/2,textVerticalAlign:"middle",textAlign:n?a:"center",text:e,textFont:r.getFont(),textFill:r.getTextColor()}})),t.add(o)}},_getViewData:function(){var t=this.visualMapModel,e=N(t.getPieceList(),function(t,e){return{piece:t,indexInModelPieceList:e}}),i=t.get("text"),n=t.get("orient"),a=t.get("inverse");return("horizontal"===n?a:!a)?e.reverse():i=i&&i.slice().reverse(),{viewPieceList:e,endsText:i}},_createItemSymbol:function(t,e,i){t.add(Jp(this.getControllerVisual(e,"symbol"),i[0],i[1],i[2],i[3],this.getControllerVisual(e,"color")))},_onItemClick:function(t){var e=this.visualMapModel,i=e.option,n=D(i.selected),a=e.getSelectedMapKey(t);"single"===i.selectedMode?(n[a]=!0,E(n,function(t,e){n[e]=e===a})):n[a]=!n[a],this.api.dispatchAction({type:"selectDataRange",from:this.uid,visualMapId:this.visualMapModel.id,selected:n})}});Jd(OC);var dL,fL="urn:schemas-microsoft-com:vml",pL="undefined"==typeof window?null:window,gL=!1,mL=pL&&pL.document;function vL(t){return dL(t)}if(mL&&!v.canvasSupported)try{mL.namespaces.zrvml||mL.namespaces.add("zrvml",fL),dL=function(t){return mL.createElement("<zrvml:"+t+' class="zrvml">')}}catch(t){dL=function(t){return mL.createElement("<"+t+' xmlns="'+fL+'" class="zrvml">')}}var yL,xL=Ho.CMD,_L=Math.round,wL=Math.sqrt,bL=Math.abs,SL=Math.cos,ML=Math.sin,IL=Math.max;if(!v.canvasSupported){var AL=",",TL="progid:DXImageTransform.Microsoft",DL=21600,CL=DL/2,LL=function(t){t.style.cssText="position:absolute;left:0;top:0;width:1px;height:1px;",t.coordsize=DL+","+DL,t.coordorigin="0,0"},kL=function(t,e,i){return"rgb("+[t,e,i].join(",")+")"},PL=function(t,e){e&&t&&e.parentNode!==t&&t.appendChild(e)},NL=function(t,e){e&&t&&e.parentNode===t&&t.removeChild(e)},OL=function(t,e,i){return 1e5*(parseFloat(t)||0)+1e3*(parseFloat(e)||0)+i},EL=Fn,RL=function(t,e,i){var n=Ee(e);i=+i,isNaN(i)&&(i=1),n&&(t.color=kL(n[0],n[1],n[2]),t.opacity=i*n[3])},zL=function(t,e,i,n){var a="fill"===e,o=t.getElementsByTagName(e)[0];null!=i[e]&&"none"!==i[e]&&(a||!a&&i.lineWidth)?(t[a?"filled":"stroked"]="true",i[e]instanceof jr&&NL(t,o),o=o||vL(e),a?function(t,e,i){var n,a,o=e.fill;if(null!=o)if(o instanceof jr){var r,s=0,l=[0,0],u=0,h=1,c=i.getBoundingRect(),d=c.width,f=c.height;if("linear"===o.type){r="gradient";var p=i.transform,g=[o.x*d,o.y*f],m=[o.x2*d,o.y2*f];p&&(bt(g,g,p),bt(m,m,p));var v=m[0]-g[0],y=m[1]-g[1];(s=180*Math.atan2(v,y)/Math.PI)<0&&(s+=360),s<1e-6&&(s=0)}else{r="gradientradial";g=[o.x*d,o.y*f],p=i.transform;var x=i.scale,_=d,w=f;l=[(g[0]-c.x)/_,(g[1]-c.y)/w],p&&bt(g,g,p),_/=x[0]*DL,w/=x[1]*DL;var b=IL(_,w);u=0/b,h=2*o.r/b-u}var S=o.colorStops.slice();S.sort(function(t,e){return t.offset-e.offset});for(var M=S.length,I=[],A=[],T=0;T<M;T++){var D=S[T],C=(n=D.color,void 0,a=Ee(n),[kL(a[0],a[1],a[2]),a[3]]);A.push(D.offset*h+u+" "+C[0]),0!==T&&T!==M-1||I.push(C)}if(2<=M){var L=I[0][0],k=I[1][0],P=I[0][1]*e.opacity,N=I[1][1]*e.opacity;t.type=r,t.method="none",t.focus="100%",t.angle=s,t.color=L,t.color2=k,t.colors=A.join(","),t.opacity=N,t.opacity2=P}"radial"===r&&(t.focusposition=l.join(","))}else RL(t,o,e.opacity)}(o,i,n):function(t,e){e.lineDash&&(t.dashstyle=e.lineDash.join(" ")),null==e.stroke||e.stroke instanceof jr||RL(t,e.stroke,e.opacity)}(o,i),PL(t,o)):(t[a?"filled":"stroked"]="false",NL(t,o))},BL=[[],[],[]];hr.prototype.brushVML=function(t){var e=this.style,i=this._vmlEl;i||(i=vL("shape"),LL(i),this._vmlEl=i),zL(i,"fill",e,this),zL(i,"stroke",e,this);var n=this.transform,a=null!=n,o=i.getElementsByTagName("stroke")[0];if(o){var r=e.lineWidth;if(a&&!e.strokeNoScale){var s=n[0]*n[3]-n[1]*n[2];r*=wL(bL(s))}o.weight=r+"px"}var l=this.path||(this.path=new Ho);this.__dirtyPath&&(l.beginPath(),l.subPixelOptimize=!1,this.buildPath(l,this.shape),l.toStatic(),this.__dirtyPath=!1),i.path=function(t,e){var i,n,a,o,r,s,l=xL.M,u=xL.C,h=xL.L,c=xL.A,d=xL.Q,f=[],p=t.data,g=t.len();for(o=0;o<g;){switch(n="",i=0,a=p[o++]){case l:n=" m ",i=1,r=p[o++],s=p[o++],BL[0][0]=r,BL[0][1]=s;break;case h:n=" l ",i=1,r=p[o++],s=p[o++],BL[0][0]=r,BL[0][1]=s;break;case d:case u:n=" c ",i=3;var m,v,y=p[o++],x=p[o++],_=p[o++],w=p[o++];a===d?(_=((m=_)+2*y)/3,w=((v=w)+2*x)/3,y=(r+2*y)/3,x=(s+2*x)/3):(m=p[o++],v=p[o++]),BL[0][0]=y,BL[0][1]=x,BL[1][0]=_,BL[1][1]=w,r=BL[2][0]=m,s=BL[2][1]=v;break;case c:var b=0,S=0,M=1,I=1,A=0;e&&(b=e[4],S=e[5],M=wL(e[0]*e[0]+e[1]*e[1]),I=wL(e[2]*e[2]+e[3]*e[3]),A=Math.atan2(-e[1]/I,e[0]/M));var T=p[o++],D=p[o++],C=p[o++],L=p[o++],k=p[o++]+A,P=p[o++]+k+A;o++;var N=p[o++],O=T+SL(k)*C,E=D+ML(k)*L,R=(y=T+SL(P)*C,x=D+ML(P)*L,N?" wa ":" at ");Math.abs(O-y)<1e-4&&(.01<Math.abs(P-k)?N&&(O+=.0125):Math.abs(E-D)<1e-4?N&&O<T||!N&&T<O?x-=.0125:x+=.0125:N&&E<D||!N&&D<E?y+=.0125:y-=.0125),f.push(R,_L(((T-C)*M+b)*DL-CL),AL,_L(((D-L)*I+S)*DL-CL),AL,_L(((T+C)*M+b)*DL-CL),AL,_L(((D+L)*I+S)*DL-CL),AL,_L((O*M+b)*DL-CL),AL,_L((E*I+S)*DL-CL),AL,_L((y*M+b)*DL-CL),AL,_L((x*I+S)*DL-CL)),r=y,s=x;break;case xL.R:var z=BL[0],B=BL[1];z[0]=p[o++],z[1]=p[o++],B[0]=z[0]+p[o++],B[1]=z[1]+p[o++],e&&(bt(z,z,e),bt(B,B,e)),z[0]=_L(z[0]*DL-CL),B[0]=_L(B[0]*DL-CL),z[1]=_L(z[1]*DL-CL),B[1]=_L(B[1]*DL-CL),f.push(" m ",z[0],AL,z[1]," l ",B[0],AL,z[1]," l ",B[0],AL,B[1]," l ",z[0],AL,B[1]);break;case xL.Z:f.push(" x ")}if(0<i){f.push(n);for(var V=0;V<i;V++){var G=BL[V];e&&bt(G,G,e),f.push(_L(G[0]*DL-CL),AL,_L(G[1]*DL-CL),V<i-1?AL:"")}}}return f.join("")}(l,this.transform),i.style.zIndex=OL(this.zlevel,this.z,this.z2),PL(t,i),null!=e.text?this.drawRectText(t,this.getBoundingRect()):this.removeRectText(t)},hr.prototype.onRemove=function(t){NL(t,this._vmlEl),this.removeRectText(t)},hr.prototype.onAdd=function(t){PL(t,this._vmlEl),this.appendRectText(t)};Yn.prototype.brushVML=function(t){var e,i,n=this.style,a=n.image;if(function(t){return"object"==typeof t&&t.tagName&&"IMG"===t.tagName.toUpperCase()}(a)){var o=a.src;if(o===this._imageSrc)e=this._imageWidth,i=this._imageHeight;else{var r=a.runtimeStyle,s=r.width,l=r.height;r.width="auto",r.height="auto",e=a.width,i=a.height,r.width=s,r.height=l,this._imageSrc=o,this._imageWidth=e,this._imageHeight=i}a=o}else a===this._imageSrc&&(e=this._imageWidth,i=this._imageHeight);if(a){var u=n.x||0,h=n.y||0,c=n.width,d=n.height,f=n.sWidth,p=n.sHeight,g=n.sx||0,m=n.sy||0,v=f&&p,y=this._vmlEl;y||(y=mL.createElement("div"),LL(y),this._vmlEl=y);var x,_=y.style,w=!1,b=1,S=1;if(this.transform&&(x=this.transform,b=wL(x[0]*x[0]+x[1]*x[1]),S=wL(x[2]*x[2]+x[3]*x[3]),w=x[1]||x[2]),w){var M=[u,h],I=[u+c,h],A=[u,h+d],T=[u+c,h+d];bt(M,M,x),bt(I,I,x),bt(A,A,x),bt(T,T,x);var D=IL(M[0],I[0],A[0],T[0]),C=IL(M[1],I[1],A[1],T[1]),L=[];L.push("M11=",x[0]/b,AL,"M12=",x[2]/S,AL,"M21=",x[1]/b,AL,"M22=",x[3]/S,AL,"Dx=",_L(u*b+x[4]),AL,"Dy=",_L(h*S+x[5])),_.padding="0 "+_L(D)+"px "+_L(C)+"px 0",_.filter=TL+".Matrix("+L.join("")+", SizingMethod=clip)"}else x&&(u=u*b+x[4],h=h*S+x[5]),_.filter="",_.left=_L(u)+"px",_.top=_L(h)+"px";var k=this._imageEl,P=this._cropEl;k||(k=mL.createElement("div"),this._imageEl=k);var N=k.style;if(v){if(e&&i)N.width=_L(b*e*c/f)+"px",N.height=_L(S*i*d/p)+"px";else{var O=new Image,E=this;O.onload=function(){O.onload=null,e=O.width,i=O.height,N.width=_L(b*e*c/f)+"px",N.height=_L(S*i*d/p)+"px",E._imageWidth=e,E._imageHeight=i,E._imageSrc=a},O.src=a}P||((P=mL.createElement("div")).style.overflow="hidden",this._cropEl=P);var R=P.style;R.width=_L((c+g*c/f)*b),R.height=_L((d+m*d/p)*S),R.filter=TL+".Matrix(Dx="+-g*c/f*b+",Dy="+-m*d/p*S+")",P.parentNode||y.appendChild(P),k.parentNode!==P&&P.appendChild(k)}else N.width=_L(b*c)+"px",N.height=_L(S*d)+"px",y.appendChild(k),P&&P.parentNode&&(y.removeChild(P),this._cropEl=null);var z="",B=n.opacity;B<1&&(z+=".Alpha(opacity="+_L(100*B)+") "),z+=TL+".AlphaImageLoader(src="+a+", SizingMethod=scale)",N.filter=z,y.style.zIndex=OL(this.zlevel,this.z,this.z2),PL(t,y),null!=n.text&&this.drawRectText(t,this.getBoundingRect())}},Yn.prototype.onRemove=function(t){NL(t,this._vmlEl),this._vmlEl=null,this._cropEl=null,this._imageEl=null,this.removeRectText(t)},Yn.prototype.onAdd=function(t){PL(t,this._vmlEl),this.appendRectText(t)};var VL,GL="normal",FL={},WL=0,HL=document.createElement("div");yL=function(t,e){var i=mL;VL||((VL=i.createElement("div")).style.cssText="position:absolute;top:-20000px;left:0;padding:0;margin:0;border:none;white-space:pre;",mL.body.appendChild(VL));try{VL.style.font=e}catch(t){}return VL.innerHTML="",VL.appendChild(i.createTextNode(t)),{width:VL.offsetWidth}},sn["measureText"]=yL;for(var ZL=new bi,UL=function(t,e,i,n){var a=this.style;this.__dirty&&Cn(a);var o=a.text;if(null!=o&&(o+=""),o){if(a.rich){var r=xn(o,a);o=[];for(var s=0;s<r.lines.length;s++){for(var l=r.lines[s].tokens,u=[],h=0;h<l.length;h++)u.push(l[h].text);o.push(u.join(""))}o=o.join("\n")}var c,d,f=a.textAlign,p=a.textVerticalAlign,g=function(t){var e=FL[t];if(!e){100<WL&&(WL=0,FL={});var i,n=HL.style;try{n.font=t,i=n.fontFamily.split(",")[0]}catch(t){}e={style:n.fontStyle||GL,variant:n.fontVariant||GL,weight:n.fontWeight||GL,size:0|parseFloat(n.fontSize||12),family:i||"Microsoft YaHei"},FL[t]=e,WL++}return e}(a.font),m=g.style+" "+g.variant+" "+g.weight+" "+g.size+'px "'+g.family+'"';i=i||un(o,m,f,p,a.textPadding,a.textLineHeight);var v=this.transform;if(v&&!n&&(ZL.copy(e),ZL.applyTransform(v),e=ZL),n)c=e.x,d=e.y;else{var y=a.textPosition;if(y instanceof Array)c=e.x+EL(y[0],e.width),d=e.y+EL(y[1],e.height),f=f||"left";else{var x=this.calculateTextPosition?this.calculateTextPosition({},a,e):dn({},a,e);c=x.x,d=x.y,f=f||x.textAlign,p=p||x.textVerticalAlign}}c=hn(c,i.width,f),d=cn(d,i.height,p),d+=i.height/2;var _,w,b,S=vL,M=this._textVmlEl;M?w=(_=(b=M.firstChild).nextSibling).nextSibling:(M=S("line"),_=S("path"),w=S("textpath"),b=S("skew"),w.style["v-text-align"]="left",LL(M),_.textpathok=!0,w.on=!0,M.from="0 0",M.to="1000 0.05",PL(M,b),PL(M,_),PL(M,w),this._textVmlEl=M);var I=[c,d],A=M.style;v&&n?(bt(I,I,v),b.on=!0,b.matrix=v[0].toFixed(3)+AL+v[2].toFixed(3)+AL+v[1].toFixed(3)+AL+v[3].toFixed(3)+",0,0",b.offset=(_L(I[0])||0)+","+(_L(I[1])||0),b.origin="0 0",A.left="0px",A.top="0px"):(b.on=!1,A.left=_L(c)+"px",A.top=_L(d)+"px"),w.string=function(t){return String(t).replace(/&/g,"&amp;").replace(/"/g,"&quot;")}(o);try{w.style.font=m}catch(t){}zL(M,"fill",{fill:a.textFill,opacity:a.opacity},this),zL(M,"stroke",{stroke:a.textStroke,opacity:a.opacity,lineDash:a.lineDash||null},this),M.style.zIndex=OL(this.zlevel,this.z,this.z2),PL(t,M)}},XL=function(t){NL(t,this._textVmlEl),this._textVmlEl=null},YL=function(t){PL(t,this._textVmlEl)},jL=[Zn,Xn,Yn,hr,Dr],qL=0;qL<jL.length;qL++){var KL=jL[qL].prototype;KL.drawRectText=UL,KL.removeRectText=XL,KL.appendRectText=YL}Dr.prototype.brushVML=function(t){var e=this.style;null!=e.text?this.drawRectText(t,{x:e.x||0,y:e.y||0,width:0,height:0},this.getBoundingRect(),!0):this.removeRectText(t)},Dr.prototype.onRemove=function(t){this.removeRectText(t)},Dr.prototype.onAdd=function(t){this.appendRectText(t)}}function $L(t){return parseInt(t,10)}function JL(t,e){!function(){if(!gL&&mL){gL=!0;var t=mL.styleSheets;t.length<31?mL.createStyleSheet().addRule(".zrvml","behavior:url(#default#VML)"):t[0].addRule(".zrvml","behavior:url(#default#VML)")}}(),this.root=t,this.storage=e;var i=document.createElement("div"),n=document.createElement("div");i.style.cssText="display:inline-block;overflow:hidden;position:relative;width:300px;height:150px;",n.style.cssText="position:absolute;left:0;top:0;",t.appendChild(i),this._vmlRoot=n,this._vmlViewport=i,this.resize();var a=e.delFromStorage,o=e.addToStorage;e.delFromStorage=function(t){a.call(e,t),t&&t.onRemove&&t.onRemove(n)},e.addToStorage=function(t){t.onAdd&&t.onAdd(n),o.call(e,t)},this._firstPaint=!0}JL.prototype={constructor:JL,getType:function(){return"vml"},getViewportRoot:function(){return this._vmlViewport},getViewportRootOffset:function(){var t=this.getViewportRoot();if(t)return{offsetLeft:t.offsetLeft||0,offsetTop:t.offsetTop||0}},refresh:function(){var t=this.storage.getDisplayList(!0,!0);this._paintList(t)},_paintList:function(t){for(var e=this._vmlRoot,i=0;i<t.length;i++){var n=t[i];n.invisible||n.ignore?(n.__alreadyNotVisible||n.onRemove(e),n.__alreadyNotVisible=!0):(n.__alreadyNotVisible&&n.onAdd(e),n.__alreadyNotVisible=!1,n.__dirty&&(n.beforeBrush&&n.beforeBrush(),(n.brushVML||n.brush).call(n,e),n.afterBrush&&n.afterBrush())),n.__dirty=!1}this._firstPaint&&(this._vmlViewport.appendChild(e),this._firstPaint=!1)},resize:function(t,e){t=null==t?this._getWidth():t,e=null==e?this._getHeight():e;if(this._width!==t||this._height!==e){this._width=t,this._height=e;var i=this._vmlViewport.style;i.width=t+"px",i.height=e+"px"}},dispose:function(){this.root.innerHTML="",this._vmlRoot=this._vmlViewport=this.storage=null},getWidth:function(){return this._width},getHeight:function(){return this._height},clear:function(){this._vmlViewport&&this.root.removeChild(this._vmlViewport)},_getWidth:function(){var t=this.root,e=t.currentStyle;return(t.clientWidth||$L(e.width))-$L(e.paddingLeft)-$L(e.paddingRight)|0},_getHeight:function(){var t=this.root,e=t.currentStyle;return(t.clientHeight||$L(e.height))-$L(e.paddingTop)-$L(e.paddingBottom)|0}},E(["getLayer","insertLayer","eachLayer","eachBuiltinLayer","eachOtherLayer","getLayers","modLayer","delLayer","clearLayer","toDataURL","pathToImage"],function(t){JL.prototype[t]=function(t){return function(){ci('In IE8.0 VML mode painter not support method "'+t+'"')}}(t)}),pa("vml",JL);function QL(t){return document.createElementNS("http://www.w3.org/2000/svg",t)}var tk=Ho.CMD,ek=Array.prototype.join,ik="none",nk=Math.round,ak=Math.sin,ok=Math.cos,rk=Math.PI,sk=2*Math.PI,lk=180/rk,uk=1e-4;function hk(t){return nk(1e4*t)/1e4}function ck(t){return t<uk&&-uk<t}function dk(t,e){e&&fk(t,"transform","matrix("+ek.call(e,",")+")")}function fk(t,e,i){i&&("linear"===i.type||"radial"===i.type)||t.setAttribute(e,i)}function pk(t,e,i,n){if(function(t,e){var i=e?t.textFill:t.fill;return null!=i&&i!==ik}(e,i)){var a=i?e.textFill:e.fill;fk(t,"fill",a="transparent"===a?ik:a),fk(t,"fill-opacity",null!=e.fillOpacity?e.fillOpacity*e.opacity:e.opacity)}else fk(t,"fill",ik);if(function(t,e){var i=e?t.textStroke:t.stroke;return null!=i&&i!==ik}(e,i)){var o=i?e.textStroke:e.stroke;fk(t,"stroke",o="transparent"===o?ik:o),fk(t,"stroke-width",(i?e.textStrokeWidth:e.lineWidth)/(!i&&e.strokeNoScale?n.getLineScale():1)),fk(t,"paint-order",i?"stroke":"fill"),fk(t,"stroke-opacity",null!=e.strokeOpacity?e.strokeOpacity:e.opacity),e.lineDash?(fk(t,"stroke-dasharray",e.lineDash.join(",")),fk(t,"stroke-dashoffset",nk(e.lineDashOffset||0))):fk(t,"stroke-dasharray",""),e.lineCap&&fk(t,"stroke-linecap",e.lineCap),e.lineJoin&&fk(t,"stroke-linejoin",e.lineJoin),e.miterLimit&&fk(t,"stroke-miterlimit",e.miterLimit)}else fk(t,"stroke",ik)}var gk={};gk.brush=function(t){var e=t.style,i=t.__svgEl;i||(i=QL("path"),t.__svgEl=i),t.path||t.createPathProxy();var n=t.path;if(t.__dirtyPath){n.beginPath(),n.subPixelOptimize=!1,t.buildPath(n,t.shape),t.__dirtyPath=!1;var a=function(t){for(var e=[],i=t.data,n=t.len(),a=0;a<n;){var o="",r=0;switch(i[a++]){case tk.M:o="M",r=2;break;case tk.L:o="L",r=2;break;case tk.Q:o="Q",r=4;break;case tk.C:o="C",r=6;break;case tk.A:var s=i[a++],l=i[a++],u=i[a++],h=i[a++],c=i[a++],d=i[a++],f=i[a++],p=i[a++],g=Math.abs(d),m=ck(g-sk)||(p?sk<=d:sk<=-d),v=0<d?d%sk:d%sk+sk,y=!1;y=!!m||!ck(g)&&rk<=v==!!p;var x=hk(s+u*ok(c)),_=hk(l+h*ak(c));m&&(d=p?sk-1e-4:1e-4-sk,y=!0,9===a&&e.push("M",x,_));var w=hk(s+u*ok(c+d)),b=hk(l+h*ak(c+d));e.push("A",hk(u),hk(h),nk(f*lk),+y,+p,w,b);break;case tk.Z:o="Z";break;case tk.R:w=hk(i[a++]),b=hk(i[a++]);var S=hk(i[a++]),M=hk(i[a++]);e.push("M",w,b,"L",w+S,b,"L",w+S,b+M,"L",w,b+M,"L",w,b)}o&&e.push(o);for(var I=0;I<r;I++)e.push(hk(i[a++]))}return e.join(" ")}(n);a.indexOf("NaN")<0&&fk(i,"d",a)}pk(i,e,!1,t),dk(i,t.transform),null!=e.text&&bk(t,t.getBoundingRect())};var mk={brush:function(t){var e=t.style,i=e.image;i instanceof HTMLImageElement&&(i=i.src);if(i){var n=e.x||0,a=e.y||0,o=e.width,r=e.height,s=t.__svgEl;s||(s=QL("image"),t.__svgEl=s),i!==t.__imageSrc&&(function(t,e,i){t.setAttributeNS("http://www.w3.org/1999/xlink",e,i)}(s,"href",i),t.__imageSrc=i),fk(s,"width",o),fk(s,"height",r),fk(s,"x",n),fk(s,"y",a),dk(s,t.transform),null!=e.text&&bk(t,t.getBoundingRect())}}},vk={},yk=new bi,xk={},_k=[],wk={left:"start",right:"end",center:"middle",middle:"middle"},bk=function(t,e){var i=t.style,n=t.transform,a=t instanceof Dr||i.transformText;t.__dirty&&Cn(i);var o=i.text;if(null!=o&&(o+=""),Hn(o,i)){null==o&&(o=""),!a&&n&&(yk.copy(e),yk.applyTransform(n),e=yk);var r=t.__textSvgEl;r||(r=QL("text"),t.__textSvgEl=r);var s=r.style,l=i.font||rn,u=r.__computedFont;l!==r.__styleFont&&(s.font=r.__styleFont=l,u=r.__computedFont=s.font);var h=i.textPadding,c=i.textLineHeight,d=t.__textCotentBlock;d&&!t.__dirtyText||(d=t.__textCotentBlock=yn(o,u,h,c,i.truncate));var f=d.outerHeight,p=d.lineHeight;zn(xk,t,i,e);var g=xk.baseX,m=xk.baseY,v=xk.textAlign||"left",y=xk.textVerticalAlign;!function(t,e,i,n,a,o,r){te(_k),e&&i&&ee(_k,i);var s=n.textRotation;if(a&&s){var l=n.textOrigin;"center"===l?(o=a.width/2+a.x,r=a.height/2+a.y):l&&(o=l[0]+a.x,r=l[1]+a.y),_k[4]-=o,_k[5]-=r,ae(_k,_k,s),_k[4]+=o,_k[5]+=r}dk(t,_k)}(r,a,n,i,e,g,m);var x=g,_=cn(m,f,y);h&&(x=function(t,e,i){return"right"===e?t-i[1]:"center"===e?t+i[3]/2-i[1]/2:t+i[3]}(g,v,h),_+=h[0]),_+=p/2,pk(r,i,!0,t);var w=d.canCacheByTextString,b=t.__tspanList||(t.__tspanList=[]),S=b.length;if(w&&t.__canCacheByTextString&&t.__text===o){if(t.__dirtyText&&S)for(var M=0;M<S;++M)Sk(b[M],v,x,_+M*p)}else{t.__text=o,t.__canCacheByTextString=w;var I=d.lines,A=I.length;for(M=0;M<A;M++){var T=b[M],D=I[M];T?T.__zrText!==D&&(T.innerHTML="",T.appendChild(document.createTextNode(D))):(T=b[M]=QL("tspan"),r.appendChild(T),T.appendChild(document.createTextNode(D))),Sk(T,v,x,_+M*p)}if(A<S){for(;M<S;M++)r.removeChild(b[M]);b.length=A}}}};function Sk(t,e,i,n){fk(t,"dominant-baseline","middle"),fk(t,"text-anchor",wk[e]),fk(t,"x",i),fk(t,"y",n)}function Mk(){}function Ik(t,e){for(var i=0,n=e.length,a=0,o=0;i<n;i++){var r=e[i];if(r.removed){for(s=[],l=o;l<o+r.count;l++)s.push(l);r.indices=s,o+=r.count}else{for(var s=[],l=a;l<a+r.count;l++)s.push(l);r.indices=s,a+=r.count,r.added||(o+=r.count)}}return e}vk.drawRectText=bk,vk.brush=function(t){null!=t.style.text&&bk(t,!1)},Mk.prototype={diff:function(l,u,t){t=t||function(t,e){return t===e},this.equals=t;var h=this;l=l.slice();var c=(u=u.slice()).length,d=l.length,f=1,e=c+d,p=[{newPos:-1,components:[]}],i=this.extractCommon(p[0],u,l,0);if(p[0].newPos+1>=c&&d<=i+1){for(var n=[],a=0;a<u.length;a++)n.push(a);return[{indices:n,count:u.length}]}function o(){for(var t=-1*f;t<=f;t+=2){var e,i=p[t-1],n=p[t+1],a=(n?n.newPos:0)-t;i&&(p[t-1]=void 0);var o=i&&i.newPos+1<c,r=n&&0<=a&&a<d;if(o||r){if(!o||r&&i.newPos<n.newPos?(e={newPos:(s=n).newPos,components:s.components.slice(0)},h.pushComponent(e.components,void 0,!0)):((e=i).newPos++,h.pushComponent(e.components,!0,void 0)),a=h.extractCommon(e,u,l,t),e.newPos+1>=c&&d<=a+1)return Ik(h,e.components,u,l);p[t]=e}else p[t]=void 0}var s;f++}for(;f<=e;){var r=o();if(r)return r}},pushComponent:function(t,e,i){var n=t[t.length-1];n&&n.added===e&&n.removed===i?t[t.length-1]={count:n.count+1,added:e,removed:i}:t.push({count:1,added:e,removed:i})},extractCommon:function(t,e,i,n){for(var a=e.length,o=i.length,r=t.newPos,s=r-n,l=0;r+1<a&&s+1<o&&this.equals(e[r+1],i[s+1]);)r++,s++,l++;return l&&t.components.push({count:l}),t.newPos=r,s},tokenize:function(t){return t.slice()},join:function(t){return t.slice()}};var Ak=new Mk;function Tk(t,e,i,n,a){this._zrId=t,this._svgRoot=e,this._tagNames="string"==typeof i?[i]:i,this._markLabel=n,this._domName=a||"_dom",this.nextId=0}function Dk(t,e){Tk.call(this,t,e,["linearGradient","radialGradient"],"__gradient_in_use__")}function Ck(t,e){Tk.call(this,t,e,"clipPath","__clippath_in_use__")}function Lk(t,e){Tk.call(this,t,e,["filter"],"__filter_in_use__","_shadowDom")}function kk(t){return t&&(t.shadowBlur||t.shadowOffsetX||t.shadowOffsetY||t.textShadowBlur||t.textShadowOffsetX||t.textShadowOffsetY)}function Pk(t){return parseInt(t,10)}function Nk(t,e){return e&&t&&e.parentNode!==t}function Ok(t,e,i){if(Nk(t,e)&&i){var n=i.nextSibling;n?t.insertBefore(e,n):t.appendChild(e)}}function Ek(t,e){if(Nk(t,e)){var i=t.firstChild;i?t.insertBefore(e,i):t.appendChild(e)}}function Rk(t,e){e&&t&&e.parentNode===t&&t.removeChild(e)}function zk(t){return t.__textSvgEl}function Bk(t){return t.__svgEl}Tk.prototype.createElement=QL,Tk.prototype.getDefs=function(t){var e=this._svgRoot,n=this._svgRoot.getElementsByTagName("defs");return 0===n.length?t?((n=e.insertBefore(this.createElement("defs"),e.firstChild)).contains||(n.contains=function(t){var e=n.children;if(!e)return!1;for(var i=e.length-1;0<=i;--i)if(e[i]===t)return!0;return!1}),n):null:n[0]},Tk.prototype.update=function(t,e){if(t){var i=this.getDefs(!1);if(t[this._domName]&&i.contains(t[this._domName]))"function"==typeof e&&e(t);else{var n=this.add(t);n&&(t[this._domName]=n)}}},Tk.prototype.addDom=function(t){this.getDefs(!0).appendChild(t)},Tk.prototype.removeDom=function(t){var e=this.getDefs(!1);e&&t[this._domName]&&(e.removeChild(t[this._domName]),t[this._domName]=null)},Tk.prototype.getDoms=function(){var i=this.getDefs(!1);if(!i)return[];var n=[];return E(this._tagNames,function(t){var e=i.getElementsByTagName(t);n=n.concat([].slice.call(e))}),n},Tk.prototype.markAllUnused=function(){var t=this.getDoms(),e=this;E(t,function(t){t[e._markLabel]="0"})},Tk.prototype.markUsed=function(t){t&&(t[this._markLabel]="1")},Tk.prototype.removeUnused=function(){var e=this.getDefs(!1);if(e){var t=this.getDoms(),i=this;E(t,function(t){"1"!==t[i._markLabel]&&e.removeChild(t)})}},Tk.prototype.getSvgProxy=function(t){return t instanceof hr?gk:t instanceof Yn?mk:t instanceof Dr?vk:gk},Tk.prototype.getTextSvgElement=function(t){return t.__textSvgEl},Tk.prototype.getSvgElement=function(t){return t.__svgEl},w(Dk,Tk),Dk.prototype.addWithoutUpdate=function(o,r){if(r&&r.style){var s=this;E(["fill","stroke"],function(t){if(r.style[t]&&("linear"===r.style[t].type||"radial"===r.style[t].type)){var e,i=r.style[t],n=s.getDefs(!0);i._dom?(e=i._dom,n.contains(i._dom)||s.addDom(e)):e=s.add(i),s.markUsed(r);var a=e.getAttribute("id");o.setAttribute(t,"url(#"+a+")")}})}},Dk.prototype.add=function(t){var e;if("linear"===t.type)e=this.createElement("linearGradient");else{if("radial"!==t.type)return ci("Illegal gradient type."),null;e=this.createElement("radialGradient")}return t.id=t.id||this.nextId++,e.setAttribute("id","zr"+this._zrId+"-gradient-"+t.id),this.updateDom(t,e),this.addDom(e),e},Dk.prototype.update=function(i){var n=this;Tk.prototype.update.call(this,i,function(){var t=i.type,e=i._dom.tagName;"linear"===t&&"linearGradient"===e||"radial"===t&&"radialGradient"===e?n.updateDom(i,i._dom):(n.removeDom(i),n.add(i))})},Dk.prototype.updateDom=function(t,e){if("linear"===t.type)e.setAttribute("x1",t.x),e.setAttribute("y1",t.y),e.setAttribute("x2",t.x2),e.setAttribute("y2",t.y2);else{if("radial"!==t.type)return void ci("Illegal gradient type.");e.setAttribute("cx",t.x),e.setAttribute("cy",t.y),e.setAttribute("r",t.r)}t.global?e.setAttribute("gradientUnits","userSpaceOnUse"):e.setAttribute("gradientUnits","objectBoundingBox"),e.innerHTML="";for(var i=t.colorStops,n=0,a=i.length;n<a;++n){var o=this.createElement("stop");o.setAttribute("offset",100*i[n].offset+"%");var r=i[n].color;if(r.indexOf(!1)){var s=Ee(r)[3],l=Be(r);o.setAttribute("stop-color","#"+l),o.setAttribute("stop-opacity",s)}else o.setAttribute("stop-color",i[n].color);e.appendChild(o)}t._dom=e},Dk.prototype.markUsed=function(t){if(t.style){var e=t.style.fill;e&&e._dom&&Tk.prototype.markUsed.call(this,e._dom),(e=t.style.stroke)&&e._dom&&Tk.prototype.markUsed.call(this,e._dom)}},w(Ck,Tk),Ck.prototype.update=function(t){var e=this.getSvgElement(t);e&&this.updateDom(e,t.__clipPaths,!1);var i=this.getTextSvgElement(t);i&&this.updateDom(i,t.__clipPaths,!0),this.markUsed(t)},Ck.prototype.updateDom=function(t,e,i){if(e&&0<e.length){var n,a,o=this.getDefs(!0),r=e[0],s=i?"_textDom":"_dom";r[s]?(a=r[s].getAttribute("id"),n=r[s],o.contains(n)||o.appendChild(n)):(a="zr"+this._zrId+"-clip-"+this.nextId,++this.nextId,(n=this.createElement("clipPath")).setAttribute("id",a),o.appendChild(n),r[s]=n);var l=this.getSvgProxy(r);if(r.transform&&r.parent.invTransform&&!i){var u=Array.prototype.slice.call(r.transform);ie(r.transform,r.parent.invTransform,r.transform),l.brush(r),r.transform=u}else l.brush(r);var h=this.getSvgElement(r);n.innerHTML="",n.appendChild(h.cloneNode()),t.setAttribute("clip-path","url(#"+a+")"),1<e.length&&this.updateDom(n,e.slice(1),i)}else t&&t.setAttribute("clip-path","none")},Ck.prototype.markUsed=function(t){var e=this;t.__clipPaths&&E(t.__clipPaths,function(t){t._dom&&Tk.prototype.markUsed.call(e,t._dom),t._textDom&&Tk.prototype.markUsed.call(e,t._textDom)})},w(Lk,Tk),Lk.prototype.addWithoutUpdate=function(t,e){if(e&&kk(e.style)){var i;if(e._shadowDom)i=e._shadowDom,this.getDefs(!0).contains(e._shadowDom)||this.addDom(i);else i=this.add(e);this.markUsed(e);var n=i.getAttribute("id");t.style.filter="url(#"+n+")"}},Lk.prototype.add=function(t){var e=this.createElement("filter");return t._shadowDomId=t._shadowDomId||this.nextId++,e.setAttribute("id","zr"+this._zrId+"-shadow-"+t._shadowDomId),this.updateDom(t,e),this.addDom(e),e},Lk.prototype.update=function(t,e){if(kk(e.style)){var i=this;Tk.prototype.update.call(this,e,function(){i.updateDom(e,e._shadowDom)})}else this.remove(t,e)},Lk.prototype.remove=function(t,e){null!=e._shadowDomId&&(this.removeDom(t),t.style.filter="")},Lk.prototype.updateDom=function(t,e){var i=e.getElementsByTagName("feDropShadow");i=0===i.length?this.createElement("feDropShadow"):i[0];var n,a,o,r,s=t.style,l=t.scale&&t.scale[0]||1,u=t.scale&&t.scale[1]||1;if(s.shadowBlur||s.shadowOffsetX||s.shadowOffsetY)n=s.shadowOffsetX||0,a=s.shadowOffsetY||0,o=s.shadowBlur,r=s.shadowColor;else{if(!s.textShadowBlur)return void this.removeDom(e,s);n=s.textShadowOffsetX||0,a=s.textShadowOffsetY||0,o=s.textShadowBlur,r=s.textShadowColor}i.setAttribute("dx",n/l),i.setAttribute("dy",a/u),i.setAttribute("flood-color",r);var h=o/2/l+" "+o/2/u;i.setAttribute("stdDeviation",h),e.setAttribute("x","-100%"),e.setAttribute("y","-100%"),e.setAttribute("width",Math.ceil(o/2*200)+"%"),e.setAttribute("height",Math.ceil(o/2*200)+"%"),e.appendChild(i),t._shadowDom=e},Lk.prototype.markUsed=function(t){t._shadowDom&&Tk.prototype.markUsed.call(this,t._shadowDom)};function Vk(t,e,i,n){this.root=t,this.storage=e,this._opts=i=L({},i||{});var a=QL("svg");a.setAttribute("xmlns","http://www.w3.org/2000/svg"),a.setAttribute("version","1.1"),a.setAttribute("baseProfile","full"),a.style.cssText="user-select:none;position:absolute;left:0;top:0;",this.gradientManager=new Dk(n,a),this.clipPathManager=new Ck(n,a),this.shadowManager=new Lk(n,a);var o=document.createElement("div");o.style.cssText="overflow:hidden;position:relative",this._svgRoot=a,this._viewport=o,t.appendChild(o),o.appendChild(a),this.resize(i.width,i.height),this._visibleList=[]}Vk.prototype={constructor:Vk,getType:function(){return"svg"},getViewportRoot:function(){return this._viewport},getViewportRootOffset:function(){var t=this.getViewportRoot();if(t)return{offsetLeft:t.offsetLeft||0,offsetTop:t.offsetTop||0}},refresh:function(){var t=this.storage.getDisplayList(!0);this._paintList(t)},setBackgroundColor:function(t){this._viewport.style.background=t},_paintList:function(t){this.gradientManager.markAllUnused(),this.clipPathManager.markAllUnused(),this.shadowManager.markAllUnused();var e,i,n=this._svgRoot,a=this._visibleList,o=t.length,r=[];for(e=0;e<o;e++){var s=t[e],l=(i=s)instanceof hr?gk:i instanceof Yn?mk:i instanceof Dr?vk:gk,u=Bk(s)||zk(s);s.invisible||(s.__dirty&&(l&&l.brush(s),this.clipPathManager.update(s),s.style&&(this.gradientManager.update(s.style.fill),this.gradientManager.update(s.style.stroke),this.shadowManager.update(u,s)),s.__dirty=!1),r.push(s))}var h,c=function(t,e,i){return Ak.diff(t,e,i)}(a,r);for(e=0;e<c.length;e++){if((p=c[e]).removed)for(var d=0;d<p.count;d++){u=Bk(s=a[p.indices[d]]);var f=zk(s);Rk(n,u),Rk(n,f)}}for(e=0;e<c.length;e++){var p;if((p=c[e]).added)for(d=0;d<p.count;d++){u=Bk(s=r[p.indices[d]]),f=zk(s);h?Ok(n,u,h):Ek(n,u),u?Ok(n,f,u):h?Ok(n,f,h):Ek(n,f),Ok(n,f,u),h=f||u||h,this.gradientManager.addWithoutUpdate(u||f,s),this.shadowManager.addWithoutUpdate(u||f,s),this.clipPathManager.markUsed(s)}else if(!p.removed)for(d=0;d<p.count;d++){h=zk(s=r[p.indices[d]])||Bk(s)||h;u=Bk(s),f=zk(s);this.gradientManager.markUsed(s),this.gradientManager.addWithoutUpdate(u||f,s),this.shadowManager.markUsed(s),this.shadowManager.addWithoutUpdate(u||f,s),this.clipPathManager.markUsed(s)}}this.gradientManager.removeUnused(),this.clipPathManager.removeUnused(),this.shadowManager.removeUnused(),this._visibleList=r},_getDefs:function(t){var n,e=this._svgRoot;return 0!==(n=this._svgRoot.getElementsByTagName("defs")).length?n[0]:t?((n=e.insertBefore(QL("defs"),e.firstChild)).contains||(n.contains=function(t){var e=n.children;if(!e)return!1;for(var i=e.length-1;0<=i;--i)if(e[i]===t)return!0;return!1}),n):null},resize:function(t,e){var i=this._viewport;i.style.display="none";var n=this._opts;if(null!=t&&(n.width=t),null!=e&&(n.height=e),t=this._getSize(0),e=this._getSize(1),i.style.display="",this._width!==t||this._height!==e){this._width=t,this._height=e;var a=i.style;a.width=t+"px",a.height=e+"px";var o=this._svgRoot;o.setAttribute("width",t),o.setAttribute("height",e)}},getWidth:function(){return this._width},getHeight:function(){return this._height},_getSize:function(t){var e=this._opts,i=["width","height"][t],n=["clientWidth","clientHeight"][t],a=["paddingLeft","paddingTop"][t],o=["paddingRight","paddingBottom"][t];if(null!=e[i]&&"auto"!==e[i])return parseFloat(e[i]);var r=this.root,s=document.defaultView.getComputedStyle(r);return(r[n]||Pk(s[i])||Pk(r.style[i]))-(Pk(s[a])||0)-(Pk(s[o])||0)|0},dispose:function(){this.root.innerHTML="",this._svgRoot=this._viewport=this.storage=null},clear:function(){this._viewport&&this.root.removeChild(this._viewport)},pathToDataUrl:function(){return this.refresh(),"data:image/svg+xml;charset=UTF-8,"+this._svgRoot.outerHTML}},E(["getLayer","insertLayer","eachLayer","eachBuiltinLayer","eachOtherLayer","getLayers","modLayer","delLayer","clearLayer","toDataURL","pathToImage"],function(t){Vk.prototype[t]=function(t){return function(){ci('In SVG mode painter not support method "'+t+'"')}}(t)}),pa("svg",Vk),t.version="4.5.0",t.dependencies={zrender:"4.1.2"},t.PRIORITY=cd,t.init=function(t,e,i){var n=Kd(t);if(n)return n;var a=new vd(t,e,i);return a.id="ec_"+Ud++,Hd[a.id]=a,Oa(t,Yd,a.id),function(n){var a="__connectUpdateStatus";function o(t,e){for(var i=0;i<t.length;i++){t[i][a]=e}}sd(Rd,function(t,e){n._messageCenter.on(e,function(t){if(Zd[n.group]&&0!==n[a]){if(t&&t.escapeConnect)return;var e=n.makeActionFromEvent(t),i=[];sd(Hd,function(t){t!==n&&t.group===n.group&&i.push(t)}),o(i,0),sd(i,function(t){1!==t[a]&&t.dispatchAction(e)}),o(i,2)}})})}(a),a},t.connect=function(e){if(k(e)){var t=e;e=null,sd(t,function(t){null!=t.group&&(e=t.group)}),e=e||"g_"+Xd++,sd(t,function(t){t.group=e})}return Zd[e]=!0,e},t.disConnect=jd,t.disconnect=qd,t.dispose=function(t){"string"==typeof t?t=Hd[t]:t instanceof vd||(t=Kd(t)),t instanceof vd&&!t.isDisposed()&&t.dispose()},t.getInstanceByDom=Kd,t.getInstanceById=function(t){return Hd[t]},t.registerTheme=$d,t.registerPreprocessor=Jd,t.registerProcessor=Qd,t.registerPostUpdate=function(t){Vd.push(t)},t.registerAction=tf,t.registerCoordinateSystem=ef,t.getCoordinateSystemDimensions=function(t){var e=Hu.get(t);if(e)return e.getDimensionsInfo?e.getDimensionsInfo():e.dimensions.slice()},t.registerLayout=nf,t.registerVisual=af,t.registerLoading=rf,t.extendComponentModel=sf,t.extendComponentView=lf,t.extendSeriesModel=uf,t.extendChartView=hf,t.setCanvasCreator=function(t){f("createCanvas",t)},t.registerMap=function(t,e,i){ad.registerMap(t,e,i)},t.getMap=function(t){var e=ad.retrieveMap(t);return e&&e[0]&&{geoJson:e[0].geoJSON,specialAreas:e[0].specialAreas}},t.dataTool={},t.zrender=ma,t.number=Rl,t.format=Jl,t.throttle=cc,t.helper=tg,t.matrix=le,t.vector=It,t.color=Xe,t.parseGeoJSON=rg,t.parseGeoJson=xg,t.util=_g,t.graphic=wg,t.List=Tf,t.Model=dl,t.Axis=vg,t.env=v});
diff --git a/map/lib/elementUi.css b/map/lib/elementUi.css
deleted file mode 100644
index f3a3ab7..0000000
--- a/map/lib/elementUi.css
+++ /dev/null
@@ -1 +0,0 @@
-@charset "UTF-8";.el-pagination--small .arrow.disabled,.el-table .hidden-columns,.el-table td.is-hidden>*,.el-table th.is-hidden>*,.el-table--hidden{visibility:hidden}.el-input__suffix,.el-tree.is-dragging .el-tree-node__content *{pointer-events:none}.el-dropdown .el-dropdown-selfdefine:focus:active,.el-dropdown .el-dropdown-selfdefine:focus:not(.focusing),.el-message__closeBtn:focus,.el-message__content:focus,.el-popover:focus,.el-popover:focus:active,.el-popover__reference:focus:hover,.el-popover__reference:focus:not(.focusing),.el-rate:active,.el-rate:focus,.el-tooltip:focus:hover,.el-tooltip:focus:not(.focusing),.el-upload-list__item.is-success:active,.el-upload-list__item.is-success:not(.focusing):focus{outline-width:0}@font-face{font-family:element-icons;src:url(fonts/element-icons.woff) format("woff"),url(fonts/element-icons.ttf) format("truetype");font-weight:400;font-display:"auto";font-style:normal}[class*=" el-icon-"],[class^=el-icon-]{font-family:element-icons!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;vertical-align:baseline;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-icon-ice-cream-round:before{content:"\e6a0"}.el-icon-ice-cream-square:before{content:"\e6a3"}.el-icon-lollipop:before{content:"\e6a4"}.el-icon-potato-strips:before{content:"\e6a5"}.el-icon-milk-tea:before{content:"\e6a6"}.el-icon-ice-drink:before{content:"\e6a7"}.el-icon-ice-tea:before{content:"\e6a9"}.el-icon-coffee:before{content:"\e6aa"}.el-icon-orange:before{content:"\e6ab"}.el-icon-pear:before{content:"\e6ac"}.el-icon-apple:before{content:"\e6ad"}.el-icon-cherry:before{content:"\e6ae"}.el-icon-watermelon:before{content:"\e6af"}.el-icon-grape:before{content:"\e6b0"}.el-icon-refrigerator:before{content:"\e6b1"}.el-icon-goblet-square-full:before{content:"\e6b2"}.el-icon-goblet-square:before{content:"\e6b3"}.el-icon-goblet-full:before{content:"\e6b4"}.el-icon-goblet:before{content:"\e6b5"}.el-icon-cold-drink:before{content:"\e6b6"}.el-icon-coffee-cup:before{content:"\e6b8"}.el-icon-water-cup:before{content:"\e6b9"}.el-icon-hot-water:before{content:"\e6ba"}.el-icon-ice-cream:before{content:"\e6bb"}.el-icon-dessert:before{content:"\e6bc"}.el-icon-sugar:before{content:"\e6bd"}.el-icon-tableware:before{content:"\e6be"}.el-icon-burger:before{content:"\e6bf"}.el-icon-knife-fork:before{content:"\e6c1"}.el-icon-fork-spoon:before{content:"\e6c2"}.el-icon-chicken:before{content:"\e6c3"}.el-icon-food:before{content:"\e6c4"}.el-icon-dish-1:before{content:"\e6c5"}.el-icon-dish:before{content:"\e6c6"}.el-icon-moon-night:before{content:"\e6ee"}.el-icon-moon:before{content:"\e6f0"}.el-icon-cloudy-and-sunny:before{content:"\e6f1"}.el-icon-partly-cloudy:before{content:"\e6f2"}.el-icon-cloudy:before{content:"\e6f3"}.el-icon-sunny:before{content:"\e6f6"}.el-icon-sunset:before{content:"\e6f7"}.el-icon-sunrise-1:before{content:"\e6f8"}.el-icon-sunrise:before{content:"\e6f9"}.el-icon-heavy-rain:before{content:"\e6fa"}.el-icon-lightning:before{content:"\e6fb"}.el-icon-light-rain:before{content:"\e6fc"}.el-icon-wind-power:before{content:"\e6fd"}.el-icon-baseball:before{content:"\e712"}.el-icon-soccer:before{content:"\e713"}.el-icon-football:before{content:"\e715"}.el-icon-basketball:before{content:"\e716"}.el-icon-ship:before{content:"\e73f"}.el-icon-truck:before{content:"\e740"}.el-icon-bicycle:before{content:"\e741"}.el-icon-mobile-phone:before{content:"\e6d3"}.el-icon-service:before{content:"\e6d4"}.el-icon-key:before{content:"\e6e2"}.el-icon-unlock:before{content:"\e6e4"}.el-icon-lock:before{content:"\e6e5"}.el-icon-watch:before{content:"\e6fe"}.el-icon-watch-1:before{content:"\e6ff"}.el-icon-timer:before{content:"\e702"}.el-icon-alarm-clock:before{content:"\e703"}.el-icon-map-location:before{content:"\e704"}.el-icon-delete-location:before{content:"\e705"}.el-icon-add-location:before{content:"\e706"}.el-icon-location-information:before{content:"\e707"}.el-icon-location-outline:before{content:"\e708"}.el-icon-location:before{content:"\e79e"}.el-icon-place:before{content:"\e709"}.el-icon-discover:before{content:"\e70a"}.el-icon-first-aid-kit:before{content:"\e70b"}.el-icon-trophy-1:before{content:"\e70c"}.el-icon-trophy:before{content:"\e70d"}.el-icon-medal:before{content:"\e70e"}.el-icon-medal-1:before{content:"\e70f"}.el-icon-stopwatch:before{content:"\e710"}.el-icon-mic:before{content:"\e711"}.el-icon-copy-document:before{content:"\e718"}.el-icon-full-screen:before{content:"\e719"}.el-icon-switch-button:before{content:"\e71b"}.el-icon-aim:before{content:"\e71c"}.el-icon-crop:before{content:"\e71d"}.el-icon-odometer:before{content:"\e71e"}.el-icon-time:before{content:"\e71f"}.el-icon-bangzhu:before{content:"\e724"}.el-icon-close-notification:before{content:"\e726"}.el-icon-microphone:before{content:"\e727"}.el-icon-turn-off-microphone:before{content:"\e728"}.el-icon-position:before{content:"\e729"}.el-icon-postcard:before{content:"\e72a"}.el-icon-message:before{content:"\e72b"}.el-icon-chat-line-square:before{content:"\e72d"}.el-icon-chat-dot-square:before{content:"\e72e"}.el-icon-chat-dot-round:before{content:"\e72f"}.el-icon-chat-square:before{content:"\e730"}.el-icon-chat-line-round:before{content:"\e731"}.el-icon-chat-round:before{content:"\e732"}.el-icon-set-up:before{content:"\e733"}.el-icon-turn-off:before{content:"\e734"}.el-icon-open:before{content:"\e735"}.el-icon-connection:before{content:"\e736"}.el-icon-link:before{content:"\e737"}.el-icon-cpu:before{content:"\e738"}.el-icon-thumb:before{content:"\e739"}.el-icon-female:before{content:"\e73a"}.el-icon-male:before{content:"\e73b"}.el-icon-guide:before{content:"\e73c"}.el-icon-news:before{content:"\e73e"}.el-icon-price-tag:before{content:"\e744"}.el-icon-discount:before{content:"\e745"}.el-icon-wallet:before{content:"\e747"}.el-icon-coin:before{content:"\e748"}.el-icon-money:before{content:"\e749"}.el-icon-bank-card:before{content:"\e74a"}.el-icon-box:before{content:"\e74b"}.el-icon-present:before{content:"\e74c"}.el-icon-sell:before{content:"\e6d5"}.el-icon-sold-out:before{content:"\e6d6"}.el-icon-shopping-bag-2:before{content:"\e74d"}.el-icon-shopping-bag-1:before{content:"\e74e"}.el-icon-shopping-cart-2:before{content:"\e74f"}.el-icon-shopping-cart-1:before{content:"\e750"}.el-icon-shopping-cart-full:before{content:"\e751"}.el-icon-smoking:before{content:"\e752"}.el-icon-no-smoking:before{content:"\e753"}.el-icon-house:before{content:"\e754"}.el-icon-table-lamp:before{content:"\e755"}.el-icon-school:before{content:"\e756"}.el-icon-office-building:before{content:"\e757"}.el-icon-toilet-paper:before{content:"\e758"}.el-icon-notebook-2:before{content:"\e759"}.el-icon-notebook-1:before{content:"\e75a"}.el-icon-files:before{content:"\e75b"}.el-icon-collection:before{content:"\e75c"}.el-icon-receiving:before{content:"\e75d"}.el-icon-suitcase-1:before{content:"\e760"}.el-icon-suitcase:before{content:"\e761"}.el-icon-film:before{content:"\e763"}.el-icon-collection-tag:before{content:"\e765"}.el-icon-data-analysis:before{content:"\e766"}.el-icon-pie-chart:before{content:"\e767"}.el-icon-data-board:before{content:"\e768"}.el-icon-data-line:before{content:"\e76d"}.el-icon-reading:before{content:"\e769"}.el-icon-magic-stick:before{content:"\e76a"}.el-icon-coordinate:before{content:"\e76b"}.el-icon-mouse:before{content:"\e76c"}.el-icon-brush:before{content:"\e76e"}.el-icon-headset:before{content:"\e76f"}.el-icon-umbrella:before{content:"\e770"}.el-icon-scissors:before{content:"\e771"}.el-icon-mobile:before{content:"\e773"}.el-icon-attract:before{content:"\e774"}.el-icon-monitor:before{content:"\e775"}.el-icon-search:before{content:"\e778"}.el-icon-takeaway-box:before{content:"\e77a"}.el-icon-paperclip:before{content:"\e77d"}.el-icon-printer:before{content:"\e77e"}.el-icon-document-add:before{content:"\e782"}.el-icon-document:before{content:"\e785"}.el-icon-document-checked:before{content:"\e786"}.el-icon-document-copy:before{content:"\e787"}.el-icon-document-delete:before{content:"\e788"}.el-icon-document-remove:before{content:"\e789"}.el-icon-tickets:before{content:"\e78b"}.el-icon-folder-checked:before{content:"\e77f"}.el-icon-folder-delete:before{content:"\e780"}.el-icon-folder-remove:before{content:"\e781"}.el-icon-folder-add:before{content:"\e783"}.el-icon-folder-opened:before{content:"\e784"}.el-icon-folder:before{content:"\e78a"}.el-icon-edit-outline:before{content:"\e764"}.el-icon-edit:before{content:"\e78c"}.el-icon-date:before{content:"\e78e"}.el-icon-c-scale-to-original:before{content:"\e7c6"}.el-icon-view:before{content:"\e6ce"}.el-icon-loading:before{content:"\e6cf"}.el-icon-rank:before{content:"\e6d1"}.el-icon-sort-down:before{content:"\e7c4"}.el-icon-sort-up:before{content:"\e7c5"}.el-icon-sort:before{content:"\e6d2"}.el-icon-finished:before{content:"\e6cd"}.el-icon-refresh-left:before{content:"\e6c7"}.el-icon-refresh-right:before{content:"\e6c8"}.el-icon-refresh:before{content:"\e6d0"}.el-icon-video-play:before{content:"\e7c0"}.el-icon-video-pause:before{content:"\e7c1"}.el-icon-d-arrow-right:before{content:"\e6dc"}.el-icon-d-arrow-left:before{content:"\e6dd"}.el-icon-arrow-up:before{content:"\e6e1"}.el-icon-arrow-down:before{content:"\e6df"}.el-icon-arrow-right:before{content:"\e6e0"}.el-icon-arrow-left:before{content:"\e6de"}.el-icon-top-right:before{content:"\e6e7"}.el-icon-top-left:before{content:"\e6e8"}.el-icon-top:before{content:"\e6e6"}.el-icon-bottom:before{content:"\e6eb"}.el-icon-right:before{content:"\e6e9"}.el-icon-back:before{content:"\e6ea"}.el-icon-bottom-right:before{content:"\e6ec"}.el-icon-bottom-left:before{content:"\e6ed"}.el-icon-caret-top:before{content:"\e78f"}.el-icon-caret-bottom:before{content:"\e790"}.el-icon-caret-right:before{content:"\e791"}.el-icon-caret-left:before{content:"\e792"}.el-icon-d-caret:before{content:"\e79a"}.el-icon-share:before{content:"\e793"}.el-icon-menu:before{content:"\e798"}.el-icon-s-grid:before{content:"\e7a6"}.el-icon-s-check:before{content:"\e7a7"}.el-icon-s-data:before{content:"\e7a8"}.el-icon-s-opportunity:before{content:"\e7aa"}.el-icon-s-custom:before{content:"\e7ab"}.el-icon-s-claim:before{content:"\e7ad"}.el-icon-s-finance:before{content:"\e7ae"}.el-icon-s-comment:before{content:"\e7af"}.el-icon-s-flag:before{content:"\e7b0"}.el-icon-s-marketing:before{content:"\e7b1"}.el-icon-s-shop:before{content:"\e7b4"}.el-icon-s-open:before{content:"\e7b5"}.el-icon-s-management:before{content:"\e7b6"}.el-icon-s-ticket:before{content:"\e7b7"}.el-icon-s-release:before{content:"\e7b8"}.el-icon-s-home:before{content:"\e7b9"}.el-icon-s-promotion:before{content:"\e7ba"}.el-icon-s-operation:before{content:"\e7bb"}.el-icon-s-unfold:before{content:"\e7bc"}.el-icon-s-fold:before{content:"\e7a9"}.el-icon-s-platform:before{content:"\e7bd"}.el-icon-s-order:before{content:"\e7be"}.el-icon-s-cooperation:before{content:"\e7bf"}.el-icon-bell:before{content:"\e725"}.el-icon-message-solid:before{content:"\e799"}.el-icon-video-camera:before{content:"\e772"}.el-icon-video-camera-solid:before{content:"\e796"}.el-icon-camera:before{content:"\e779"}.el-icon-camera-solid:before{content:"\e79b"}.el-icon-download:before{content:"\e77c"}.el-icon-upload2:before{content:"\e77b"}.el-icon-upload:before{content:"\e7c3"}.el-icon-picture-outline-round:before{content:"\e75f"}.el-icon-picture-outline:before{content:"\e75e"}.el-icon-picture:before{content:"\e79f"}.el-icon-close:before{content:"\e6db"}.el-icon-check:before{content:"\e6da"}.el-icon-plus:before{content:"\e6d9"}.el-icon-minus:before{content:"\e6d8"}.el-icon-help:before{content:"\e73d"}.el-icon-s-help:before{content:"\e7b3"}.el-icon-circle-close:before{content:"\e78d"}.el-icon-circle-check:before{content:"\e720"}.el-icon-circle-plus-outline:before{content:"\e723"}.el-icon-remove-outline:before{content:"\e722"}.el-icon-zoom-out:before{content:"\e776"}.el-icon-zoom-in:before{content:"\e777"}.el-icon-error:before{content:"\e79d"}.el-icon-success:before{content:"\e79c"}.el-icon-circle-plus:before{content:"\e7a0"}.el-icon-remove:before{content:"\e7a2"}.el-icon-info:before{content:"\e7a1"}.el-icon-question:before{content:"\e7a4"}.el-icon-warning-outline:before{content:"\e6c9"}.el-icon-warning:before{content:"\e7a3"}.el-icon-goods:before{content:"\e7c2"}.el-icon-s-goods:before{content:"\e7b2"}.el-icon-star-off:before{content:"\e717"}.el-icon-star-on:before{content:"\e797"}.el-icon-more-outline:before{content:"\e6cc"}.el-icon-more:before{content:"\e794"}.el-icon-phone-outline:before{content:"\e6cb"}.el-icon-phone:before{content:"\e795"}.el-icon-user:before{content:"\e6e3"}.el-icon-user-solid:before{content:"\e7a5"}.el-icon-setting:before{content:"\e6ca"}.el-icon-s-tools:before{content:"\e7ac"}.el-icon-delete:before{content:"\e6d7"}.el-icon-delete-solid:before{content:"\e7c9"}.el-icon-eleme:before{content:"\e7c7"}.el-icon-platform-eleme:before{content:"\e7ca"}.el-icon-loading{-webkit-animation:rotating 2s linear infinite;animation:rotating 2s linear infinite}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@-webkit-keyframes rotating{0%{-webkit-transform:rotateZ(0);transform:rotateZ(0)}100%{-webkit-transform:rotateZ(360deg);transform:rotateZ(360deg)}}@keyframes rotating{0%{-webkit-transform:rotateZ(0);transform:rotateZ(0)}100%{-webkit-transform:rotateZ(360deg);transform:rotateZ(360deg)}}.el-pagination{white-space:nowrap;padding:2px 5px;color:#303133;font-weight:700}.el-pagination::after,.el-pagination::before{display:table;content:""}.el-pagination::after{clear:both}.el-pagination button,.el-pagination span:not([class*=suffix]){display:inline-block;font-size:13px;min-width:35.5px;height:28px;line-height:28px;vertical-align:top;-webkit-box-sizing:border-box;box-sizing:border-box}.el-pagination .el-input__inner{text-align:center;-moz-appearance:textfield;line-height:normal}.el-pagination .el-input__suffix{right:0;-webkit-transform:scale(.8);transform:scale(.8)}.el-pagination .el-select .el-input{width:100px;margin:0 5px}.el-pagination .el-select .el-input .el-input__inner{padding-right:25px;border-radius:3px}.el-pagination button{border:none;padding:0 6px;background:0 0}.el-pagination button:focus{outline:0}.el-pagination button:hover{color:#409EFF}.el-pagination button:disabled{color:#C0C4CC;background-color:#FFF;cursor:not-allowed}.el-pagination .btn-next,.el-pagination .btn-prev{background:center center no-repeat #FFF;background-size:16px;cursor:pointer;margin:0;color:#303133}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{display:block;font-size:12px;font-weight:700}.el-pagination .btn-prev{padding-right:12px}.el-pagination .btn-next{padding-left:12px}.el-pagination .el-pager li.disabled{color:#C0C4CC;cursor:not-allowed}.el-pager li,.el-pager li.btn-quicknext:hover,.el-pager li.btn-quickprev:hover{cursor:pointer}.el-pagination--small .btn-next,.el-pagination--small .btn-prev,.el-pagination--small .el-pager li,.el-pagination--small .el-pager li.btn-quicknext,.el-pagination--small .el-pager li.btn-quickprev,.el-pagination--small .el-pager li:last-child{border-color:transparent;font-size:12px;line-height:22px;height:22px;min-width:22px}.el-pagination--small .more::before,.el-pagination--small li.more::before{line-height:24px}.el-pagination--small button,.el-pagination--small span:not([class*=suffix]){height:22px;line-height:22px}.el-pagination--small .el-pagination__editor,.el-pagination--small .el-pagination__editor.el-input .el-input__inner{height:22px}.el-pagination__sizes{margin:0 10px 0 0;font-weight:400;color:#606266}.el-pagination__sizes .el-input .el-input__inner{font-size:13px;padding-left:8px}.el-pagination__sizes .el-input .el-input__inner:hover{border-color:#409EFF}.el-pagination__total{margin-right:10px;font-weight:400;color:#606266}.el-pagination__jump{margin-left:24px;font-weight:400;color:#606266}.el-pagination__jump .el-input__inner{padding:0 3px}.el-pagination__rightwrapper{float:right}.el-pagination__editor{line-height:18px;padding:0 2px;height:28px;text-align:center;margin:0 2px;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:3px}.el-pager,.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev{padding:0}.el-pagination__editor.el-input{width:50px}.el-pagination__editor.el-input .el-input__inner{height:28px}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button,.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev,.el-pagination.is-background .el-pager li{margin:0 5px;background-color:#f4f4f5;color:#606266;min-width:30px;border-radius:2px}.el-pagination.is-background .btn-next.disabled,.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-prev.disabled,.el-pagination.is-background .btn-prev:disabled,.el-pagination.is-background .el-pager li.disabled{color:#C0C4CC}.el-pagination.is-background .el-pager li:not(.disabled):hover{color:#409EFF}.el-pagination.is-background .el-pager li:not(.disabled).active{background-color:#409EFF;color:#FFF}.el-dialog,.el-pager li{background:#FFF;-webkit-box-sizing:border-box}.el-pagination.is-background.el-pagination--small .btn-next,.el-pagination.is-background.el-pagination--small .btn-prev,.el-pagination.is-background.el-pagination--small .el-pager li{margin:0 3px;min-width:22px}.el-pager,.el-pager li{vertical-align:top;margin:0;display:inline-block}.el-pager{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;list-style:none;font-size:0}.el-date-table,.el-table th{-webkit-user-select:none;-moz-user-select:none}.el-pager .more::before{line-height:30px}.el-pager li{padding:0 4px;font-size:13px;min-width:35.5px;height:28px;line-height:28px;box-sizing:border-box;text-align:center}.el-menu--collapse .el-menu .el-submenu,.el-menu--popup{min-width:200px}.el-pager li.btn-quicknext,.el-pager li.btn-quickprev{line-height:28px;color:#303133}.el-pager li.btn-quicknext.disabled,.el-pager li.btn-quickprev.disabled{color:#C0C4CC}.el-pager li.active+li{border-left:0}.el-pager li:hover{color:#409EFF}.el-pager li.active{color:#409EFF;cursor:default}@-webkit-keyframes v-modal-in{0%{opacity:0}}@-webkit-keyframes v-modal-out{100%{opacity:0}}.el-dialog{position:relative;margin:0 auto 50px;border-radius:2px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3);box-sizing:border-box;width:50%}.el-dialog.is-fullscreen{width:100%;margin-top:0;margin-bottom:0;height:100%;overflow:auto}.el-dialog__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto;margin:0}.el-dialog__header{padding:20px 20px 10px}.el-dialog__headerbtn{position:absolute;top:20px;right:20px;padding:0;background:0 0;border:none;outline:0;cursor:pointer;font-size:16px}.el-dialog__headerbtn .el-dialog__close{color:#909399}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:#409EFF}.el-dialog__title{line-height:24px;font-size:18px;color:#303133}.el-dialog__body{padding:30px 20px;color:#606266;font-size:14px;word-break:break-all}.el-dialog__footer{padding:10px 20px 20px;text-align:right;-webkit-box-sizing:border-box;box-sizing:border-box}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial;padding:25px 25px 30px}.el-dialog--center .el-dialog__footer{text-align:inherit}.dialog-fade-enter-active{-webkit-animation:dialog-fade-in .3s;animation:dialog-fade-in .3s}.dialog-fade-leave-active{-webkit-animation:dialog-fade-out .3s;animation:dialog-fade-out .3s}@-webkit-keyframes dialog-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes dialog-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes dialog-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes dialog-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}.el-autocomplete{position:relative;display:inline-block}.el-autocomplete-suggestion{margin:5px 0;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:4px;border:1px solid #E4E7ED;-webkit-box-sizing:border-box;box-sizing:border-box;background-color:#FFF}.el-dropdown-menu,.el-menu--collapse .el-submenu .el-menu{z-index:10;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-autocomplete-suggestion__wrap{max-height:280px;padding:10px 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-autocomplete-suggestion__list{margin:0;padding:0}.el-autocomplete-suggestion li{padding:0 20px;margin:0;line-height:34px;cursor:pointer;color:#606266;font-size:14px;list-style:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-autocomplete-suggestion li.highlighted,.el-autocomplete-suggestion li:hover{background-color:#F5F7FA}.el-autocomplete-suggestion li.divider{margin-top:6px;border-top:1px solid #000}.el-autocomplete-suggestion li.divider:last-child{margin-bottom:-6px}.el-autocomplete-suggestion.is-loading li{text-align:center;height:100px;line-height:100px;font-size:20px;color:#999}.el-autocomplete-suggestion.is-loading li::after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-autocomplete-suggestion.is-loading li:hover{background-color:#FFF}.el-autocomplete-suggestion.is-loading .el-icon-loading{vertical-align:middle}.el-dropdown{display:inline-block;position:relative;color:#606266;font-size:14px}.el-dropdown .el-button-group{display:block}.el-dropdown .el-button-group .el-button{float:none}.el-dropdown .el-dropdown__caret-button{padding-left:5px;padding-right:5px;position:relative;border-left:none}.el-dropdown .el-dropdown__caret-button::before{content:'';position:absolute;display:block;width:1px;top:5px;bottom:5px;left:0;background:rgba(255,255,255,.5)}.el-dropdown .el-dropdown__caret-button.el-button--default::before{background:rgba(220,223,230,.5)}.el-dropdown .el-dropdown__caret-button:hover::before{top:0;bottom:0}.el-dropdown .el-dropdown__caret-button .el-dropdown__icon{padding-left:0}.el-dropdown__icon{font-size:12px;margin:0 3px}.el-dropdown-menu{position:absolute;top:0;left:0;padding:10px 0;margin:5px 0;background-color:#FFF;border:1px solid #EBEEF5;border-radius:4px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-dropdown-menu__item{list-style:none;line-height:36px;padding:0 20px;margin:0;font-size:14px;color:#606266;cursor:pointer;outline:0}.el-dropdown-menu__item:focus,.el-dropdown-menu__item:not(.is-disabled):hover{background-color:#ecf5ff;color:#66b1ff}.el-dropdown-menu__item i{margin-right:5px}.el-dropdown-menu__item--divided{position:relative;margin-top:6px;border-top:1px solid #EBEEF5}.el-dropdown-menu__item--divided:before{content:'';height:6px;display:block;margin:0 -20px;background-color:#FFF}.el-dropdown-menu__item.is-disabled{cursor:default;color:#bbb;pointer-events:none}.el-dropdown-menu--medium{padding:6px 0}.el-dropdown-menu--medium .el-dropdown-menu__item{line-height:30px;padding:0 17px;font-size:14px}.el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:6px}.el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:6px;margin:0 -17px}.el-dropdown-menu--small{padding:6px 0}.el-dropdown-menu--small .el-dropdown-menu__item{line-height:27px;padding:0 15px;font-size:13px}.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:4px}.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:4px;margin:0 -15px}.el-dropdown-menu--mini{padding:3px 0}.el-dropdown-menu--mini .el-dropdown-menu__item{line-height:24px;padding:0 10px;font-size:12px}.el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:3px}.el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:3px;margin:0 -10px}.el-menu{border-right:solid 1px #e6e6e6;list-style:none;position:relative;margin:0;padding-left:0;background-color:#FFF}.el-menu--horizontal>.el-menu-item:not(.is-disabled):focus,.el-menu--horizontal>.el-menu-item:not(.is-disabled):hover,.el-menu--horizontal>.el-submenu .el-submenu__title:hover{background-color:#fff}.el-menu::after,.el-menu::before{display:table;content:""}.el-menu::after{clear:both}.el-menu.el-menu--horizontal{border-bottom:solid 1px #e6e6e6}.el-menu--horizontal{border-right:none}.el-menu--horizontal>.el-menu-item{float:left;height:60px;line-height:60px;margin:0;border-bottom:2px solid transparent;color:#909399}.el-menu--horizontal>.el-menu-item a,.el-menu--horizontal>.el-menu-item a:hover{color:inherit}.el-menu--horizontal>.el-submenu{float:left}.el-menu--horizontal>.el-submenu:focus,.el-menu--horizontal>.el-submenu:hover{outline:0}.el-menu--horizontal>.el-submenu:focus .el-submenu__title,.el-menu--horizontal>.el-submenu:hover .el-submenu__title{color:#303133}.el-menu--horizontal>.el-submenu.is-active .el-submenu__title{border-bottom:2px solid #409EFF;color:#303133}.el-menu--horizontal>.el-submenu .el-submenu__title{height:60px;line-height:60px;border-bottom:2px solid transparent;color:#909399}.el-menu--horizontal>.el-submenu .el-submenu__icon-arrow{position:static;vertical-align:middle;margin-left:8px;margin-top:-3px}.el-menu--horizontal .el-menu .el-menu-item,.el-menu--horizontal .el-menu .el-submenu__title{background-color:#FFF;float:none;height:36px;line-height:36px;padding:0 10px;color:#909399}.el-menu--horizontal .el-menu .el-menu-item.is-active,.el-menu--horizontal .el-menu .el-submenu.is-active>.el-submenu__title{color:#303133}.el-menu--horizontal .el-menu-item:not(.is-disabled):focus,.el-menu--horizontal .el-menu-item:not(.is-disabled):hover{outline:0;color:#303133}.el-menu--horizontal>.el-menu-item.is-active{border-bottom:2px solid #409EFF;color:#303133}.el-menu--collapse{width:64px}.el-menu--collapse>.el-menu-item [class^=el-icon-],.el-menu--collapse>.el-submenu>.el-submenu__title [class^=el-icon-]{margin:0;vertical-align:middle;width:24px;text-align:center}.el-menu--collapse>.el-menu-item .el-submenu__icon-arrow,.el-menu--collapse>.el-submenu>.el-submenu__title .el-submenu__icon-arrow{display:none}.el-menu--collapse>.el-menu-item span,.el-menu--collapse>.el-submenu>.el-submenu__title span{height:0;width:0;overflow:hidden;visibility:hidden;display:inline-block}.el-menu--collapse>.el-menu-item.is-active i{color:inherit}.el-menu--collapse .el-submenu{position:relative}.el-menu--collapse .el-submenu .el-menu{position:absolute;margin-left:5px;top:0;left:100%;border:1px solid #E4E7ED;border-radius:2px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-menu-item,.el-submenu__title{height:56px;line-height:56px;position:relative;-webkit-box-sizing:border-box;white-space:nowrap;list-style:none}.el-menu--collapse .el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{-webkit-transform:none;transform:none}.el-menu--popup{z-index:100;border:none;padding:5px 0;border-radius:2px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-menu--popup-bottom-start{margin-top:5px}.el-menu--popup-right-start{margin-left:5px;margin-right:5px}.el-menu-item{font-size:14px;color:#303133;padding:0 20px;cursor:pointer;-webkit-transition:border-color .3s,background-color .3s,color .3s;transition:border-color .3s,background-color .3s,color .3s;box-sizing:border-box}.el-menu-item *{vertical-align:middle}.el-menu-item i{color:#909399}.el-menu-item:focus,.el-menu-item:hover{outline:0;background-color:#ecf5ff}.el-menu-item.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-menu-item [class^=el-icon-]{margin-right:5px;width:24px;text-align:center;font-size:18px;vertical-align:middle}.el-menu-item.is-active{color:#409EFF}.el-menu-item.is-active i{color:inherit}.el-submenu{list-style:none;margin:0;padding-left:0}.el-submenu__title{font-size:14px;color:#303133;padding:0 20px;cursor:pointer;-webkit-transition:border-color .3s,background-color .3s,color .3s;transition:border-color .3s,background-color .3s,color .3s;box-sizing:border-box}.el-submenu__title *{vertical-align:middle}.el-submenu__title i{color:#909399}.el-submenu__title:focus,.el-submenu__title:hover{outline:0;background-color:#ecf5ff}.el-submenu__title.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-submenu__title:hover{background-color:#ecf5ff}.el-submenu .el-menu{border:none}.el-submenu .el-menu-item{height:50px;line-height:50px;padding:0 45px;min-width:200px}.el-submenu__icon-arrow{position:absolute;top:50%;right:20px;margin-top:-7px;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;font-size:12px}.el-submenu.is-active .el-submenu__title{border-bottom-color:#409EFF}.el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg)}.el-submenu.is-disabled .el-menu-item,.el-submenu.is-disabled .el-submenu__title{opacity:.25;cursor:not-allowed;background:0 0!important}.el-submenu [class^=el-icon-]{vertical-align:middle;margin-right:5px;width:24px;text-align:center;font-size:18px}.el-menu-item-group>ul{padding:0}.el-menu-item-group__title{padding:7px 0 7px 20px;line-height:normal;font-size:12px;color:#909399}.el-radio-button__inner,.el-radio-group{display:inline-block;line-height:1;vertical-align:middle}.horizontal-collapse-transition .el-submenu__title .el-submenu__icon-arrow{-webkit-transition:.2s;transition:.2s;opacity:0}.el-radio-group{font-size:0}.el-radio-button{position:relative;display:inline-block;outline:0}.el-radio-button__inner{white-space:nowrap;background:#FFF;border:1px solid #DCDFE6;font-weight:500;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;position:relative;cursor:pointer;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);padding:12px 20px;font-size:14px;border-radius:0}.el-radio-button__inner.is-round{padding:12px 20px}.el-radio-button__inner:hover{color:#409EFF}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-left:1px solid #DCDFE6;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.el-radio-button__orig-radio{opacity:0;outline:0;position:absolute;z-index:-1}.el-radio-button__orig-radio:checked+.el-radio-button__inner{color:#FFF;background-color:#409EFF;border-color:#409EFF;-webkit-box-shadow:-1px 0 0 0 #409EFF;box-shadow:-1px 0 0 0 #409EFF}.el-radio-button__orig-radio:disabled+.el-radio-button__inner{color:#C0C4CC;cursor:not-allowed;background-image:none;background-color:#FFF;border-color:#EBEEF5;-webkit-box-shadow:none;box-shadow:none}.el-radio-button__orig-radio:disabled:checked+.el-radio-button__inner{background-color:#F2F6FC}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 4px 4px 0}.el-popover,.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:4px}.el-radio-button--medium .el-radio-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-radio-button--medium .el-radio-button__inner.is-round{padding:10px 20px}.el-radio-button--small .el-radio-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-radio-button--small .el-radio-button__inner.is-round{padding:9px 15px}.el-radio-button--mini .el-radio-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-radio-button--mini .el-radio-button__inner.is-round{padding:7px 15px}.el-radio-button:focus:not(.is-focus):not(:active):not(.is-disabled){-webkit-box-shadow:0 0 2px 2px #409EFF;box-shadow:0 0 2px 2px #409EFF}.el-switch{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;font-size:14px;line-height:20px;height:20px;vertical-align:middle}.el-switch__core,.el-switch__label{display:inline-block;cursor:pointer}.el-switch.is-disabled .el-switch__core,.el-switch.is-disabled .el-switch__label{cursor:not-allowed}.el-switch__label{-webkit-transition:.2s;transition:.2s;height:20px;font-size:14px;font-weight:500;vertical-align:middle;color:#303133}.el-switch__label.is-active{color:#409EFF}.el-switch__label--left{margin-right:10px}.el-switch__label--right{margin-left:10px}.el-switch__label *{line-height:1;font-size:14px;display:inline-block}.el-switch__input{position:absolute;width:0;height:0;opacity:0;margin:0}.el-switch__core{margin:0;position:relative;width:40px;height:20px;border:1px solid #DCDFE6;outline:0;border-radius:10px;-webkit-box-sizing:border-box;box-sizing:border-box;background:#DCDFE6;-webkit-transition:border-color .3s,background-color .3s;transition:border-color .3s,background-color .3s;vertical-align:middle}.el-switch__core:after{content:"";position:absolute;top:1px;left:1px;border-radius:100%;-webkit-transition:all .3s;transition:all .3s;width:16px;height:16px;background-color:#FFF}.el-switch.is-checked .el-switch__core{border-color:#409EFF;background-color:#409EFF}.el-switch.is-checked .el-switch__core::after{left:100%;margin-left:-17px}.el-switch.is-disabled{opacity:.6}.el-switch--wide .el-switch__label.el-switch__label--left span{left:10px}.el-switch--wide .el-switch__label.el-switch__label--right span{right:10px}.el-switch .label-fade-enter,.el-switch .label-fade-leave-active{opacity:0}.el-select-dropdown{position:absolute;z-index:1001;border:1px solid #E4E7ED;border-radius:4px;background-color:#FFF;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-box-sizing:border-box;box-sizing:border-box;margin:5px 0}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected{color:#409EFF;background-color:#FFF}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected.hover{background-color:#F5F7FA}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected::after{position:absolute;right:20px;font-family:element-icons;content:"\e6da";font-size:12px;font-weight:700;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.el-select-dropdown__empty{padding:10px 0;margin:0;text-align:center;color:#999;font-size:14px}.el-select-dropdown__wrap{max-height:274px}.el-select-dropdown__list{list-style:none;padding:6px 0;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-select-dropdown__item{font-size:14px;padding:0 20px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#606266;height:34px;line-height:34px;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer}.el-select-dropdown__item.is-disabled{color:#C0C4CC;cursor:not-allowed}.el-select-dropdown__item.is-disabled:hover{background-color:#FFF}.el-select-dropdown__item.hover,.el-select-dropdown__item:hover{background-color:#F5F7FA}.el-select-dropdown__item.selected{color:#409EFF;font-weight:700}.el-select-group{margin:0;padding:0}.el-select-group__wrap{position:relative;list-style:none;margin:0;padding:0}.el-select-group__wrap:not(:last-of-type){padding-bottom:24px}.el-select-group__wrap:not(:last-of-type)::after{content:'';position:absolute;display:block;left:20px;right:20px;bottom:12px;height:1px;background:#E4E7ED}.el-select-group__title{padding-left:20px;font-size:12px;color:#909399;line-height:30px}.el-select-group .el-select-dropdown__item{padding-left:20px}.el-select{display:inline-block;position:relative}.el-select .el-select__tags>span{display:contents}.el-select:hover .el-input__inner{border-color:#C0C4CC}.el-select .el-input__inner{cursor:pointer;padding-right:35px}.el-select .el-input__inner:focus{border-color:#409EFF}.el-select .el-input .el-select__caret{color:#C0C4CC;font-size:14px;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg);cursor:pointer}.el-select .el-input .el-select__caret.is-reverse{-webkit-transform:rotateZ(0);transform:rotateZ(0)}.el-select .el-input .el-select__caret.is-show-close{font-size:14px;text-align:center;-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg);border-radius:100%;color:#C0C4CC;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1)}.el-select .el-input .el-select__caret.is-show-close:hover{color:#909399}.el-select .el-input.is-disabled .el-input__inner{cursor:not-allowed}.el-select .el-input.is-disabled .el-input__inner:hover{border-color:#E4E7ED}.el-select .el-input.is-focus .el-input__inner{border-color:#409EFF}.el-select>.el-input{display:block}.el-select__input{border:none;outline:0;padding:0;margin-left:15px;color:#666;font-size:14px;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:28px;background-color:transparent}.el-select__input.is-mini{height:14px}.el-select__close{cursor:pointer;position:absolute;top:8px;z-index:1000;right:25px;color:#C0C4CC;line-height:18px;font-size:14px}.el-select__close:hover{color:#909399}.el-select__tags{position:absolute;line-height:normal;white-space:normal;z-index:1;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap}.el-select .el-tag__close{margin-top:-2px}.el-select .el-tag{-webkit-box-sizing:border-box;box-sizing:border-box;border-color:transparent;margin:2px 0 2px 6px;background-color:#f0f2f5}.el-select .el-tag__close.el-icon-close{background-color:#C0C4CC;right:-7px;top:0;color:#FFF}.el-select .el-tag__close.el-icon-close:hover{background-color:#909399}.el-table,.el-table__expanded-cell{background-color:#FFF}.el-select .el-tag__close.el-icon-close::before{display:block;-webkit-transform:translate(0,.5px);transform:translate(0,.5px)}.el-table{position:relative;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-box-flex:1;-ms-flex:1;flex:1;width:100%;max-width:100%;font-size:14px;color:#606266}.el-table--mini,.el-table--small,.el-table__expand-icon{font-size:12px}.el-table__empty-block{min-height:60px;text-align:center;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-table__empty-text{line-height:60px;width:50%;color:#909399}.el-table__expand-column .cell{padding:0;text-align:center}.el-table__expand-icon{position:relative;cursor:pointer;color:#666;-webkit-transition:-webkit-transform .2s ease-in-out;transition:-webkit-transform .2s ease-in-out;transition:transform .2s ease-in-out;transition:transform .2s ease-in-out,-webkit-transform .2s ease-in-out;height:20px}.el-table__expand-icon--expanded{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-table__expand-icon>.el-icon{position:absolute;left:50%;top:50%;margin-left:-5px;margin-top:-5px}.el-table__expanded-cell[class*=cell]{padding:20px 50px}.el-table__expanded-cell:hover{background-color:transparent!important}.el-table__placeholder{display:inline-block;width:20px}.el-table__append-wrapper{overflow:hidden}.el-table--fit{border-right:0;border-bottom:0}.el-table--fit td.gutter,.el-table--fit th.gutter{border-right-width:1px}.el-table--scrollable-x .el-table__body-wrapper{overflow-x:auto}.el-table--scrollable-y .el-table__body-wrapper{overflow-y:auto}.el-table thead{color:#909399;font-weight:500}.el-table thead.is-group th{background:#F5F7FA}.el-table th,.el-table tr{background-color:#FFF}.el-table td,.el-table th{padding:12px 0;min-width:0;-webkit-box-sizing:border-box;box-sizing:border-box;text-overflow:ellipsis;vertical-align:middle;position:relative;text-align:left}.el-table td.is-center,.el-table th.is-center{text-align:center}.el-table td.is-right,.el-table th.is-right{text-align:right}.el-table td.gutter,.el-table th.gutter{width:15px;border-right-width:0;border-bottom-width:0;padding:0}.el-table--medium td,.el-table--medium th{padding:10px 0}.el-table--small td,.el-table--small th{padding:8px 0}.el-table--mini td,.el-table--mini th{padding:6px 0}.el-table .cell,.el-table--border td:first-child .cell,.el-table--border th:first-child .cell{padding-left:10px}.el-table tr input[type=checkbox]{margin:0}.el-table td,.el-table th.is-leaf{border-bottom:1px solid #EBEEF5}.el-table th.is-sortable{cursor:pointer}.el-table th{overflow:hidden;-ms-user-select:none;user-select:none}.el-table th>.cell{display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;vertical-align:middle;padding-left:10px;padding-right:10px;width:100%}.el-table th>.cell.highlight{color:#409EFF}.el-table th.required>div::before{display:inline-block;content:"";width:8px;height:8px;border-radius:50%;background:#ff4d51;margin-right:5px;vertical-align:middle}.el-table td div{-webkit-box-sizing:border-box;box-sizing:border-box}.el-table td.gutter{width:0}.el-table .cell{-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;text-overflow:ellipsis;white-space:normal;word-break:break-all;line-height:23px;padding-right:10px}.el-table .cell.el-tooltip{white-space:nowrap;min-width:50px}.el-table--border,.el-table--group{border:1px solid #EBEEF5}.el-table--border::after,.el-table--group::after,.el-table::before{content:'';position:absolute;background-color:#EBEEF5;z-index:1}.el-table--border::after,.el-table--group::after{top:0;right:0;width:1px;height:100%}.el-table::before{left:0;bottom:0;width:100%;height:1px}.el-table--border{border-right:none;border-bottom:none}.el-table--border.el-loading-parent--relative{border-color:transparent}.el-table--border td,.el-table--border th,.el-table__body-wrapper .el-table--border.is-scrolling-left~.el-table__fixed{border-right:1px solid #EBEEF5}.el-table--border th.gutter:last-of-type{border-bottom:1px solid #EBEEF5;border-bottom-width:1px}.el-table--border th,.el-table__fixed-right-patch{border-bottom:1px solid #EBEEF5}.el-table__fixed,.el-table__fixed-right{position:absolute;top:0;left:0;overflow-x:hidden;overflow-y:hidden;-webkit-box-shadow:0 0 10px rgba(0,0,0,.12);box-shadow:0 0 10px rgba(0,0,0,.12)}.el-table__fixed-right::before,.el-table__fixed::before{content:'';position:absolute;left:0;bottom:0;width:100%;height:1px;background-color:#EBEEF5;z-index:4}.el-table__fixed-right-patch{position:absolute;top:-1px;right:0;background-color:#FFF}.el-table__fixed-right{top:0;left:auto;right:0}.el-table__fixed-right .el-table__fixed-body-wrapper,.el-table__fixed-right .el-table__fixed-footer-wrapper,.el-table__fixed-right .el-table__fixed-header-wrapper{left:auto;right:0}.el-table__fixed-header-wrapper{position:absolute;left:0;top:0;z-index:3}.el-table__fixed-footer-wrapper{position:absolute;left:0;bottom:0;z-index:3}.el-table__fixed-footer-wrapper tbody td{border-top:1px solid #EBEEF5;background-color:#F5F7FA;color:#606266}.el-table__fixed-body-wrapper{position:absolute;left:0;top:37px;overflow:hidden;z-index:3}.el-table__body-wrapper,.el-table__footer-wrapper,.el-table__header-wrapper{width:100%}.el-table__footer-wrapper{margin-top:-1px}.el-table__footer-wrapper td{border-top:1px solid #EBEEF5}.el-table__body,.el-table__footer,.el-table__header{table-layout:fixed;border-collapse:separate}.el-table__footer-wrapper,.el-table__header-wrapper{overflow:hidden}.el-table__footer-wrapper tbody td,.el-table__header-wrapper tbody td{background-color:#F5F7FA;color:#606266}.el-table__body-wrapper{overflow:hidden;position:relative}.el-table__body-wrapper.is-scrolling-left~.el-table__fixed,.el-table__body-wrapper.is-scrolling-none~.el-table__fixed,.el-table__body-wrapper.is-scrolling-none~.el-table__fixed-right,.el-table__body-wrapper.is-scrolling-right~.el-table__fixed-right{-webkit-box-shadow:none;box-shadow:none}.el-picker-panel,.el-table-filter{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-table__body-wrapper .el-table--border.is-scrolling-right~.el-table__fixed-right{border-left:1px solid #EBEEF5}.el-table .caret-wrapper{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:34px;width:24px;vertical-align:middle;cursor:pointer;overflow:initial;position:relative}.el-table .sort-caret{width:0;height:0;border:5px solid transparent;position:absolute;left:7px}.el-table .sort-caret.ascending{border-bottom-color:#C0C4CC;top:5px}.el-table .sort-caret.descending{border-top-color:#C0C4CC;bottom:7px}.el-table .ascending .sort-caret.ascending{border-bottom-color:#409EFF}.el-table .descending .sort-caret.descending{border-top-color:#409EFF}.el-table .hidden-columns{position:absolute;z-index:-1}.el-table--striped .el-table__body tr.el-table__row--striped td{background:#FAFAFA}.el-table--striped .el-table__body tr.el-table__row--striped.current-row td{background-color:#ecf5ff}.el-table__body tr.hover-row.current-row>td,.el-table__body tr.hover-row.el-table__row--striped.current-row>td,.el-table__body tr.hover-row.el-table__row--striped>td,.el-table__body tr.hover-row>td{background-color:#F5F7FA}.el-table__body tr.current-row>td{background-color:#ecf5ff}.el-table__column-resize-proxy{position:absolute;left:200px;top:0;bottom:0;width:0;border-left:1px solid #EBEEF5;z-index:10}.el-table__column-filter-trigger{display:inline-block;line-height:34px;cursor:pointer}.el-table__column-filter-trigger i{color:#909399;font-size:12px;-webkit-transform:scale(.75);transform:scale(.75)}.el-table--enable-row-transition .el-table__body td{-webkit-transition:background-color .25s ease;transition:background-color .25s ease}.el-table--enable-row-hover .el-table__body tr:hover>td{background-color:#F5F7FA}.el-table--fluid-height .el-table__fixed,.el-table--fluid-height .el-table__fixed-right{bottom:0;overflow:hidden}.el-table [class*=el-table__row--level] .el-table__expand-icon{display:inline-block;width:20px;line-height:20px;height:20px;text-align:center;margin-right:3px}.el-table-column--selection .cell{padding-left:14px;padding-right:14px}.el-table-filter{border:1px solid #EBEEF5;border-radius:2px;background-color:#FFF;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-box-sizing:border-box;box-sizing:border-box;margin:2px 0}.el-date-table td,.el-date-table td div{height:30px;-webkit-box-sizing:border-box}.el-table-filter__list{padding:5px 0;margin:0;list-style:none;min-width:100px}.el-table-filter__list-item{line-height:36px;padding:0 10px;cursor:pointer;font-size:14px}.el-table-filter__list-item:hover{background-color:#ecf5ff;color:#66b1ff}.el-table-filter__list-item.is-active{background-color:#409EFF;color:#FFF}.el-table-filter__content{min-width:100px}.el-table-filter__bottom{border-top:1px solid #EBEEF5;padding:8px}.el-table-filter__bottom button{background:0 0;border:none;color:#606266;cursor:pointer;font-size:13px;padding:0 3px}.el-date-table td.in-range div,.el-date-table td.in-range div:hover,.el-date-table.is-week-mode .el-date-table__row.current div,.el-date-table.is-week-mode .el-date-table__row:hover div{background-color:#F2F6FC}.el-table-filter__bottom button:hover{color:#409EFF}.el-table-filter__bottom button:focus{outline:0}.el-table-filter__bottom button.is-disabled{color:#C0C4CC;cursor:not-allowed}.el-table-filter__wrap{max-height:280px}.el-table-filter__checkbox-group{padding:10px}.el-table-filter__checkbox-group label.el-checkbox{display:block;margin-right:5px;margin-bottom:8px;margin-left:5px}.el-table-filter__checkbox-group .el-checkbox:last-child{margin-bottom:0}.el-date-table{font-size:12px;-ms-user-select:none;user-select:none}.el-date-table.is-week-mode .el-date-table__row:hover td.available:hover{color:#606266}.el-date-table.is-week-mode .el-date-table__row:hover td:first-child div{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table.is-week-mode .el-date-table__row:hover td:last-child div{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table td{width:32px;padding:4px 0;box-sizing:border-box;text-align:center;cursor:pointer;position:relative}.el-date-table td div{padding:3px 0;box-sizing:border-box}.el-date-table td span{width:24px;height:24px;display:block;margin:0 auto;line-height:24px;position:absolute;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);border-radius:50%}.el-date-table td.next-month,.el-date-table td.prev-month{color:#C0C4CC}.el-date-table td.today{position:relative}.el-date-table td.today span{color:#409EFF;font-weight:700}.el-date-table td.today.end-date span,.el-date-table td.today.start-date span{color:#FFF}.el-date-table td.available:hover{color:#409EFF}.el-date-table td.current:not(.disabled) span{color:#FFF;background-color:#409EFF}.el-date-table td.end-date div,.el-date-table td.start-date div{color:#FFF}.el-date-table td.end-date span,.el-date-table td.start-date span{background-color:#409EFF}.el-date-table td.start-date div{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table td.end-date div{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table td.disabled div{background-color:#F5F7FA;opacity:1;cursor:not-allowed;color:#C0C4CC}.el-date-table td.selected div{margin-left:5px;margin-right:5px;background-color:#F2F6FC;border-radius:15px}.el-date-table td.selected div:hover{background-color:#F2F6FC}.el-date-table td.selected span{background-color:#409EFF;color:#FFF;border-radius:15px}.el-date-table td.week{font-size:80%;color:#606266}.el-month-table,.el-year-table{font-size:12px;border-collapse:collapse}.el-date-table th{padding:5px;color:#606266;font-weight:400;border-bottom:solid 1px #EBEEF5}.el-month-table{margin:-1px}.el-month-table td{text-align:center;padding:8px 0;cursor:pointer}.el-month-table td div{height:48px;padding:6px 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-month-table td.today .cell{color:#409EFF;font-weight:700}.el-month-table td.today.end-date .cell,.el-month-table td.today.start-date .cell{color:#FFF}.el-month-table td.disabled .cell{background-color:#F5F7FA;cursor:not-allowed;color:#C0C4CC}.el-month-table td.disabled .cell:hover{color:#C0C4CC}.el-month-table td .cell{width:60px;height:36px;display:block;line-height:36px;color:#606266;margin:0 auto;border-radius:18px}.el-month-table td .cell:hover{color:#409EFF}.el-month-table td.in-range div,.el-month-table td.in-range div:hover{background-color:#F2F6FC}.el-month-table td.end-date div,.el-month-table td.start-date div{color:#FFF}.el-month-table td.end-date .cell,.el-month-table td.start-date .cell{color:#FFF;background-color:#409EFF}.el-month-table td.start-date div{border-top-left-radius:24px;border-bottom-left-radius:24px}.el-month-table td.end-date div{border-top-right-radius:24px;border-bottom-right-radius:24px}.el-month-table td.current:not(.disabled) .cell{color:#409EFF}.el-year-table{margin:-1px}.el-year-table .el-icon{color:#303133}.el-year-table td{text-align:center;padding:20px 3px;cursor:pointer}.el-year-table td.today .cell{color:#409EFF;font-weight:700}.el-year-table td.disabled .cell{background-color:#F5F7FA;cursor:not-allowed;color:#C0C4CC}.el-year-table td.disabled .cell:hover{color:#C0C4CC}.el-year-table td .cell{width:48px;height:32px;display:block;line-height:32px;color:#606266;margin:0 auto}.el-year-table td .cell:hover,.el-year-table td.current:not(.disabled) .cell{color:#409EFF}.el-date-range-picker{width:646px}.el-date-range-picker.has-sidebar{width:756px}.el-date-range-picker table{table-layout:fixed;width:100%}.el-date-range-picker .el-picker-panel__body{min-width:513px}.el-date-range-picker .el-picker-panel__content{margin:0}.el-date-range-picker__header{position:relative;text-align:center;height:28px}.el-date-range-picker__header [class*=arrow-left]{float:left}.el-date-range-picker__header [class*=arrow-right]{float:right}.el-date-range-picker__header div{font-size:16px;font-weight:500;margin-right:50px}.el-date-range-picker__content{float:left;width:50%;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:16px}.el-date-range-picker__content.is-left{border-right:1px solid #e4e4e4}.el-date-range-picker__content .el-date-range-picker__header div{margin-left:50px;margin-right:50px}.el-date-range-picker__editors-wrap{-webkit-box-sizing:border-box;box-sizing:border-box;display:table-cell}.el-date-range-picker__editors-wrap.is-right{text-align:right}.el-date-range-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px;display:table;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.el-date-range-picker__time-header>.el-icon-arrow-right{font-size:20px;vertical-align:middle;display:table-cell;color:#303133}.el-date-range-picker__time-picker-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-range-picker__time-picker-wrap .el-picker-panel{position:absolute;top:13px;right:0;z-index:1;background:#FFF}.el-date-picker{width:322px}.el-date-picker.has-sidebar.has-time{width:434px}.el-date-picker.has-sidebar{width:438px}.el-date-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-picker .el-picker-panel__content{width:292px}.el-date-picker table{table-layout:fixed;width:100%}.el-date-picker__editor-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px;display:table;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.el-date-picker__header{margin:12px;text-align:center}.el-date-picker__header--bordered{margin-bottom:0;padding-bottom:12px;border-bottom:solid 1px #EBEEF5}.el-date-picker__header--bordered+.el-picker-panel__content{margin-top:0}.el-date-picker__header-label{font-size:16px;font-weight:500;padding:0 5px;line-height:22px;text-align:center;cursor:pointer;color:#606266}.el-date-picker__header-label.active,.el-date-picker__header-label:hover{color:#409EFF}.el-date-picker__prev-btn{float:left}.el-date-picker__next-btn{float:right}.el-date-picker__time-wrap{padding:10px;text-align:center}.el-date-picker__time-label{float:left;cursor:pointer;line-height:30px;margin-left:10px}.time-select{margin:5px 0;min-width:0}.time-select .el-picker-panel__content{max-height:200px;margin:0}.time-select-item{padding:8px 10px;font-size:14px;line-height:20px}.time-select-item.selected:not(.disabled){color:#409EFF;font-weight:700}.time-select-item.disabled{color:#E4E7ED;cursor:not-allowed}.time-select-item:hover{background-color:#F5F7FA;font-weight:700;cursor:pointer}.el-date-editor{position:relative;display:inline-block;text-align:left}.el-date-editor.el-input,.el-date-editor.el-input__inner{width:220px}.el-date-editor--monthrange.el-input,.el-date-editor--monthrange.el-input__inner{width:300px}.el-date-editor--daterange.el-input,.el-date-editor--daterange.el-input__inner,.el-date-editor--timerange.el-input,.el-date-editor--timerange.el-input__inner{width:350px}.el-date-editor--datetimerange.el-input,.el-date-editor--datetimerange.el-input__inner{width:400px}.el-date-editor--dates .el-input__inner{text-overflow:ellipsis;white-space:nowrap}.el-date-editor .el-icon-circle-close{cursor:pointer}.el-date-editor .el-range__icon{font-size:14px;margin-left:-5px;color:#C0C4CC;float:left;line-height:32px}.el-date-editor .el-range-input,.el-date-editor .el-range-separator{height:100%;margin:0;text-align:center;display:inline-block;font-size:14px}.el-date-editor .el-range-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;outline:0;padding:0;width:39%;color:#606266}.el-date-editor .el-range-input::-webkit-input-placeholder{color:#C0C4CC}.el-date-editor .el-range-input:-ms-input-placeholder{color:#C0C4CC}.el-date-editor .el-range-input::-ms-input-placeholder{color:#C0C4CC}.el-date-editor .el-range-input::placeholder{color:#C0C4CC}.el-date-editor .el-range-separator{padding:0 5px;line-height:32px;width:5%;color:#303133}.el-date-editor .el-range__close-icon{font-size:14px;color:#C0C4CC;width:25px;display:inline-block;float:right;line-height:32px}.el-range-editor.el-input__inner{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:3px 10px}.el-range-editor .el-range-input{line-height:1}.el-range-editor.is-active,.el-range-editor.is-active:hover{border-color:#409EFF}.el-range-editor--medium.el-input__inner{height:36px}.el-range-editor--medium .el-range-separator{line-height:28px;font-size:14px}.el-range-editor--medium .el-range-input{font-size:14px}.el-range-editor--medium .el-range__close-icon,.el-range-editor--medium .el-range__icon{line-height:28px}.el-range-editor--small.el-input__inner{height:32px}.el-range-editor--small .el-range-separator{line-height:24px;font-size:13px}.el-range-editor--small .el-range-input{font-size:13px}.el-range-editor--small .el-range__close-icon,.el-range-editor--small .el-range__icon{line-height:24px}.el-range-editor--mini.el-input__inner{height:28px}.el-range-editor--mini .el-range-separator{line-height:20px;font-size:12px}.el-range-editor--mini .el-range-input{font-size:12px}.el-range-editor--mini .el-range__close-icon,.el-range-editor--mini .el-range__icon{line-height:20px}.el-range-editor.is-disabled{background-color:#F5F7FA;border-color:#E4E7ED;color:#C0C4CC;cursor:not-allowed}.el-range-editor.is-disabled:focus,.el-range-editor.is-disabled:hover{border-color:#E4E7ED}.el-range-editor.is-disabled input{background-color:#F5F7FA;color:#C0C4CC;cursor:not-allowed}.el-range-editor.is-disabled input::-webkit-input-placeholder{color:#C0C4CC}.el-range-editor.is-disabled input:-ms-input-placeholder{color:#C0C4CC}.el-range-editor.is-disabled input::-ms-input-placeholder{color:#C0C4CC}.el-range-editor.is-disabled input::placeholder{color:#C0C4CC}.el-range-editor.is-disabled .el-range-separator{color:#C0C4CC}.el-picker-panel{color:#606266;border:1px solid #E4E7ED;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);background:#FFF;border-radius:4px;line-height:30px;margin:5px 0}.el-popover,.el-time-panel{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-picker-panel__body-wrapper::after,.el-picker-panel__body::after{content:"";display:table;clear:both}.el-picker-panel__content{position:relative;margin:15px}.el-picker-panel__footer{border-top:1px solid #e4e4e4;padding:4px;text-align:right;background-color:#FFF;position:relative;font-size:0}.el-picker-panel__shortcut{display:block;width:100%;border:0;background-color:transparent;line-height:28px;font-size:14px;color:#606266;padding-left:12px;text-align:left;outline:0;cursor:pointer}.el-picker-panel__shortcut:hover{color:#409EFF}.el-picker-panel__shortcut.active{background-color:#e6f1fe;color:#409EFF}.el-picker-panel__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-picker-panel__btn[disabled]{color:#ccc;cursor:not-allowed}.el-picker-panel__icon-btn{font-size:12px;color:#303133;border:0;background:0 0;cursor:pointer;outline:0;margin-top:8px}.el-picker-panel__icon-btn:hover{color:#409EFF}.el-picker-panel__icon-btn.is-disabled{color:#bbb}.el-picker-panel__icon-btn.is-disabled:hover{cursor:not-allowed}.el-picker-panel__link-btn{vertical-align:middle}.el-picker-panel [slot=sidebar],.el-picker-panel__sidebar{position:absolute;top:0;bottom:0;width:110px;border-right:1px solid #e4e4e4;-webkit-box-sizing:border-box;box-sizing:border-box;padding-top:6px;background-color:#FFF;overflow:auto}.el-picker-panel [slot=sidebar]+.el-picker-panel__body,.el-picker-panel__sidebar+.el-picker-panel__body{margin-left:110px}.el-time-spinner.has-seconds .el-time-spinner__wrapper{width:33.3%}.el-time-spinner__wrapper{max-height:190px;overflow:auto;display:inline-block;width:50%;vertical-align:top;position:relative}.el-time-spinner__wrapper .el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default){padding-bottom:15px}.el-time-spinner__input.el-input .el-input__inner,.el-time-spinner__list{padding:0;text-align:center}.el-time-spinner__wrapper.is-arrow{-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;overflow:hidden}.el-time-spinner__wrapper.is-arrow .el-time-spinner__list{-webkit-transform:translateY(-32px);transform:translateY(-32px)}.el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.disabled):not(.active){background:#FFF;cursor:default}.el-time-spinner__arrow{font-size:12px;color:#909399;position:absolute;left:0;width:100%;z-index:1;text-align:center;height:30px;line-height:30px;cursor:pointer}.el-time-spinner__arrow:hover{color:#409EFF}.el-time-spinner__arrow.el-icon-arrow-up{top:10px}.el-time-spinner__arrow.el-icon-arrow-down{bottom:10px}.el-time-spinner__input.el-input{width:70%}.el-time-spinner__list{margin:0;list-style:none}.el-time-spinner__list::after,.el-time-spinner__list::before{content:'';display:block;width:100%;height:80px}.el-time-spinner__item{height:32px;line-height:32px;font-size:12px;color:#606266}.el-time-spinner__item:hover:not(.disabled):not(.active){background:#F5F7FA;cursor:pointer}.el-time-spinner__item.active:not(.disabled){color:#303133;font-weight:700}.el-time-spinner__item.disabled{color:#C0C4CC;cursor:not-allowed}.el-time-panel{margin:5px 0;border:1px solid #E4E7ED;background-color:#FFF;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:2px;position:absolute;width:180px;left:0;z-index:1000;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-box-sizing:content-box;box-sizing:content-box}.el-slider__button,.el-slider__button-wrapper{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.el-time-panel__content{font-size:0;position:relative;overflow:hidden}.el-time-panel__content::after,.el-time-panel__content::before{content:"";top:50%;position:absolute;margin-top:-15px;height:32px;z-index:-1;left:0;right:0;-webkit-box-sizing:border-box;box-sizing:border-box;padding-top:6px;text-align:left;border-top:1px solid #E4E7ED;border-bottom:1px solid #E4E7ED}.el-time-panel__content::after{left:50%;margin-left:12%;margin-right:12%}.el-time-panel__content::before{padding-left:50%;margin-right:12%;margin-left:12%}.el-time-panel__content.has-seconds::after{left:calc(100% / 3 * 2)}.el-time-panel__content.has-seconds::before{padding-left:calc(100% / 3)}.el-time-panel__footer{border-top:1px solid #e4e4e4;padding:4px;height:36px;line-height:25px;text-align:right;-webkit-box-sizing:border-box;box-sizing:border-box}.el-time-panel__btn{border:none;line-height:28px;padding:0 5px;margin:0 5px;cursor:pointer;background-color:transparent;outline:0;font-size:12px;color:#303133}.el-time-panel__btn.confirm{font-weight:800;color:#409EFF}.el-time-range-picker{width:354px;overflow:visible}.el-time-range-picker__content{position:relative;text-align:center;padding:10px}.el-time-range-picker__cell{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:4px 7px 7px;width:50%;display:inline-block}.el-time-range-picker__header{margin-bottom:5px;text-align:center;font-size:14px}.el-time-range-picker__body{border-radius:2px;border:1px solid #E4E7ED}.el-popover{position:absolute;background:#FFF;min-width:150px;border:1px solid #EBEEF5;padding:12px;z-index:2000;color:#606266;line-height:1.4;text-align:justify;font-size:14px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);word-break:break-all}.el-popover--plain{padding:18px 20px}.el-popover__title{color:#303133;font-size:16px;line-height:1;margin-bottom:12px}.v-modal-enter{-webkit-animation:v-modal-in .2s ease;animation:v-modal-in .2s ease}.v-modal-leave{-webkit-animation:v-modal-out .2s ease forwards;animation:v-modal-out .2s ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{100%{opacity:0}}.v-modal{position:fixed;left:0;top:0;width:100%;height:100%;opacity:.5;background:#000}.el-popup-parent--hidden{overflow:hidden}.el-message-box{display:inline-block;width:420px;padding-bottom:10px;vertical-align:middle;background-color:#FFF;border-radius:4px;border:1px solid #EBEEF5;font-size:18px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);text-align:left;overflow:hidden;-webkit-backface-visibility:hidden;backface-visibility:hidden}.el-message-box__wrapper{position:fixed;top:0;bottom:0;left:0;right:0;text-align:center}.el-message-box__wrapper::after{content:"";display:inline-block;height:100%;width:0;vertical-align:middle}.el-message-box__header{position:relative;padding:15px 15px 10px}.el-message-box__title{padding-left:0;margin-bottom:0;font-size:18px;line-height:1;color:#303133}.el-message-box__headerbtn{position:absolute;top:15px;right:15px;padding:0;border:none;outline:0;background:0 0;font-size:16px;cursor:pointer}.el-form-item.is-error .el-input__inner,.el-form-item.is-error .el-input__inner:focus,.el-form-item.is-error .el-textarea__inner,.el-form-item.is-error .el-textarea__inner:focus,.el-message-box__input input.invalid,.el-message-box__input input.invalid:focus{border-color:#F56C6C}.el-message-box__headerbtn .el-message-box__close{color:#909399}.el-message-box__headerbtn:focus .el-message-box__close,.el-message-box__headerbtn:hover .el-message-box__close{color:#409EFF}.el-message-box__content{padding:10px 15px;color:#606266;font-size:14px}.el-message-box__container{position:relative}.el-message-box__input{padding-top:15px}.el-message-box__status{position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);font-size:24px!important}.el-message-box__status::before{padding-left:1px}.el-message-box__status+.el-message-box__message{padding-left:36px;padding-right:12px}.el-message-box__status.el-icon-success{color:#67C23A}.el-message-box__status.el-icon-info{color:#909399}.el-message-box__status.el-icon-warning{color:#E6A23C}.el-message-box__status.el-icon-error{color:#F56C6C}.el-message-box__message{margin:0}.el-message-box__message p{margin:0;line-height:24px}.el-message-box__errormsg{color:#F56C6C;font-size:12px;min-height:18px;margin-top:2px}.el-message-box__btns{padding:5px 15px 0;text-align:right}.el-message-box__btns button:nth-child(2){margin-left:10px}.el-message-box__btns-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.el-message-box--center{padding-bottom:30px}.el-message-box--center .el-message-box__header{padding-top:30px}.el-message-box--center .el-message-box__title{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-message-box--center .el-message-box__status{position:relative;top:auto;padding-right:5px;text-align:center;-webkit-transform:translateY(-1px);transform:translateY(-1px)}.el-message-box--center .el-message-box__message{margin-left:0}.el-message-box--center .el-message-box__btns,.el-message-box--center .el-message-box__content{text-align:center}.el-message-box--center .el-message-box__content{padding-left:27px;padding-right:27px}.msgbox-fade-enter-active{-webkit-animation:msgbox-fade-in .3s;animation:msgbox-fade-in .3s}.msgbox-fade-leave-active{-webkit-animation:msgbox-fade-out .3s;animation:msgbox-fade-out .3s}@-webkit-keyframes msgbox-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes msgbox-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes msgbox-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes msgbox-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}.el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb::after,.el-breadcrumb::before{display:table;content:""}.el-breadcrumb::after{clear:both}.el-breadcrumb__separator{margin:0 9px;font-weight:700;color:#C0C4CC}.el-breadcrumb__separator[class*=icon]{margin:0 6px;font-weight:400}.el-breadcrumb__item{float:left}.el-breadcrumb__inner{color:#606266}.el-breadcrumb__inner a,.el-breadcrumb__inner.is-link{font-weight:700;text-decoration:none;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1);color:#303133}.el-breadcrumb__inner a:hover,.el-breadcrumb__inner.is-link:hover{color:#409EFF;cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover{font-weight:400;color:#606266;cursor:text}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}.el-form--label-left .el-form-item__label{text-align:left}.el-form--label-top .el-form-item__label{float:none;display:inline-block;text-align:left;padding:0 0 10px}.el-form--inline .el-form-item{display:inline-block;margin-right:10px;vertical-align:top}.el-form--inline .el-form-item__label{float:none;display:inline-block}.el-form--inline .el-form-item__content{display:inline-block;vertical-align:top}.el-form--inline.el-form--label-top .el-form-item__content{display:block}.el-form-item{margin-bottom:22px}.el-form-item::after,.el-form-item::before{display:table;content:""}.el-form-item::after{clear:both}.el-form-item .el-form-item{margin-bottom:0}.el-form-item--mini.el-form-item,.el-form-item--small.el-form-item{margin-bottom:18px}.el-form-item .el-input__validateIcon{display:none}.el-form-item--medium .el-form-item__content,.el-form-item--medium .el-form-item__label{line-height:36px}.el-form-item--small .el-form-item__content,.el-form-item--small .el-form-item__label{line-height:32px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--mini .el-form-item__content,.el-form-item--mini .el-form-item__label{line-height:28px}.el-form-item--mini .el-form-item__error{padding-top:1px}.el-form-item__label-wrap{float:left}.el-form-item__label-wrap .el-form-item__label{display:inline-block;float:none}.el-form-item__label{text-align:right;vertical-align:middle;float:left;font-size:14px;color:#606266;line-height:40px;padding:0 12px 0 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-form-item__content{line-height:40px;position:relative;font-size:14px}.el-form-item__content::after,.el-form-item__content::before{display:table;content:""}.el-form-item__content::after{clear:both}.el-form-item__content .el-input-group{vertical-align:top}.el-form-item__error{color:#F56C6C;font-size:12px;line-height:1;padding-top:4px;position:absolute;top:100%;left:0}.el-form-item__error--inline{position:relative;top:auto;left:auto;display:inline-block;margin-left:10px}.el-form-item.is-required:not(.is-no-asterisk) .el-form-item__label-wrap>.el-form-item__label:before,.el-form-item.is-required:not(.is-no-asterisk)>.el-form-item__label:before{content:'*';color:#F56C6C;margin-right:4px}.el-form-item.is-error .el-input-group__append .el-input__inner,.el-form-item.is-error .el-input-group__prepend .el-input__inner{border-color:transparent}.el-form-item.is-error .el-input__validateIcon{color:#F56C6C}.el-form-item--feedback .el-input__validateIcon{display:inline-block}.el-tabs__header{padding:0;position:relative;margin:0 0 15px}.el-tabs__active-bar{position:absolute;bottom:0;left:0;height:2px;background-color:#409EFF;z-index:1;-webkit-transition:-webkit-transform .3s cubic-bezier(.645,.045,.355,1);transition:-webkit-transform .3s cubic-bezier(.645,.045,.355,1);transition:transform .3s cubic-bezier(.645,.045,.355,1);transition:transform .3s cubic-bezier(.645,.045,.355,1),-webkit-transform .3s cubic-bezier(.645,.045,.355,1);list-style:none}.el-tabs__new-tab{float:right;border:1px solid #d3dce6;height:18px;width:18px;line-height:18px;margin:12px 0 9px 10px;border-radius:3px;text-align:center;font-size:12px;color:#d3dce6;cursor:pointer;-webkit-transition:all .15s;transition:all .15s}.el-collapse-item__arrow,.el-tabs__nav{-webkit-transition:-webkit-transform .3s}.el-tabs__new-tab .el-icon-plus{-webkit-transform:scale(.8,.8);transform:scale(.8,.8)}.el-tabs__new-tab:hover{color:#409EFF}.el-tabs__nav-wrap{overflow:hidden;margin-bottom:-1px;position:relative}.el-tabs__nav-wrap::after{content:"";position:absolute;left:0;bottom:0;width:100%;height:2px;background-color:#E4E7ED;z-index:1}.el-tabs--border-card>.el-tabs__header .el-tabs__nav-wrap::after,.el-tabs--card>.el-tabs__header .el-tabs__nav-wrap::after{content:none}.el-tabs__nav-wrap.is-scrollable{padding:0 20px;-webkit-box-sizing:border-box;box-sizing:border-box}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{position:absolute;cursor:pointer;line-height:44px;font-size:12px;color:#909399}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{white-space:nowrap;position:relative;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;float:left;z-index:2}.el-tabs__nav.is-stretch{min-width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.el-tabs__nav.is-stretch>*{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center}.el-tabs__item{padding:0 20px;height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;line-height:40px;display:inline-block;list-style:none;font-size:14px;font-weight:500;color:#303133;position:relative}.el-tabs__item:focus,.el-tabs__item:focus:active{outline:0}.el-tabs__item:focus.is-active.is-focus:not(:active){-webkit-box-shadow:0 0 2px 2px #409EFF inset;box-shadow:0 0 2px 2px #409EFF inset;border-radius:3px}.el-tabs__item .el-icon-close{border-radius:50%;text-align:center;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);margin-left:5px}.el-tabs__item .el-icon-close:before{-webkit-transform:scale(.9);transform:scale(.9);display:inline-block}.el-tabs__item .el-icon-close:hover{background-color:#C0C4CC;color:#FFF}.el-tabs__item.is-active{color:#409EFF}.el-tabs__item:hover{color:#409EFF;cursor:pointer}.el-tabs__item.is-disabled{color:#C0C4CC;cursor:default}.el-tabs__content{overflow:hidden;position:relative}.el-tabs--card>.el-tabs__header{border-bottom:1px solid #E4E7ED}.el-tabs--card>.el-tabs__header .el-tabs__nav{border:1px solid #E4E7ED;border-bottom:none;border-radius:4px 4px 0 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-tabs--card>.el-tabs__header .el-tabs__active-bar{display:none}.el-tabs--card>.el-tabs__header .el-tabs__item .el-icon-close{position:relative;font-size:12px;width:0;height:14px;vertical-align:middle;line-height:15px;overflow:hidden;top:-1px;right:-2px;-webkit-transform-origin:100% 50%;transform-origin:100% 50%}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .el-icon-close,.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .el-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid transparent;border-left:1px solid #E4E7ED;-webkit-transition:color .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1);transition:color .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1)}.el-tabs--card>.el-tabs__header .el-tabs__item:first-child{border-left:none}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border-bottom-color:#FFF}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.el-tabs--border-card{background:#FFF;border:1px solid #DCDFE6;-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04);box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04)}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:#F5F7FA;border-bottom:1px solid #E4E7ED;margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__item{-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);border:1px solid transparent;margin-top:-1px;color:#909399}.el-tabs--border-card>.el-tabs__header .el-tabs__item+.el-tabs__item,.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child{margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{color:#409EFF;background-color:#FFF;border-right-color:#DCDFE6;border-left-color:#DCDFE6}.el-tabs--border-card>.el-tabs__header .el-tabs__item:not(.is-disabled):hover{color:#409EFF}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-disabled{color:#C0C4CC}.el-tabs--border-card>.el-tabs__header .is-scrollable .el-tabs__item:first-child{margin-left:0}.el-tabs--bottom .el-tabs__item.is-bottom:nth-child(2),.el-tabs--bottom .el-tabs__item.is-top:nth-child(2),.el-tabs--top .el-tabs__item.is-bottom:nth-child(2),.el-tabs--top .el-tabs__item.is-top:nth-child(2){padding-left:0}.el-tabs--bottom .el-tabs__item.is-bottom:last-child,.el-tabs--bottom .el-tabs__item.is-top:last-child,.el-tabs--top .el-tabs__item.is-bottom:last-child,.el-tabs--top .el-tabs__item.is-top:last-child{padding-right:0}.el-tabs--bottom .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:20px}.el-tabs--bottom .el-tabs--left>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:last-child{padding-right:20px}.el-tabs--bottom .el-tabs__header.is-bottom{margin-bottom:0;margin-top:10px}.el-tabs--bottom.el-tabs--border-card .el-tabs__header.is-bottom{border-bottom:0;border-top:1px solid #DCDFE6}.el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap.is-bottom{margin-top:-1px;margin-bottom:0}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active){border:1px solid transparent}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom{margin:0 -1px -1px}.el-tabs--left,.el-tabs--right{overflow:hidden}.el-tabs--left .el-tabs__header.is-left,.el-tabs--left .el-tabs__header.is-right,.el-tabs--left .el-tabs__nav-scroll,.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__header.is-left,.el-tabs--right .el-tabs__header.is-right,.el-tabs--right .el-tabs__nav-scroll,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{height:100%}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__active-bar.is-right,.el-tabs--right .el-tabs__active-bar.is-left,.el-tabs--right .el-tabs__active-bar.is-right{top:0;bottom:auto;width:2px;height:auto}.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{margin-bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{height:30px;line-height:30px;width:100%;text-align:center;cursor:pointer}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i{-webkit-transform:rotateZ(90deg);transform:rotateZ(90deg)}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{left:auto;top:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next{right:auto;bottom:0}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__nav-wrap.is-left::after{right:0;left:auto}.el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--left .el-tabs__nav-wrap.is-right.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.el-tabs--left .el-tabs__nav-wrap.is-left::after,.el-tabs--left .el-tabs__nav-wrap.is-right::after,.el-tabs--right .el-tabs__nav-wrap.is-left::after,.el-tabs--right .el-tabs__nav-wrap.is-right::after{height:100%;width:2px;bottom:auto;top:0}.el-tabs--left .el-tabs__nav.is-left,.el-tabs--left .el-tabs__nav.is-right,.el-tabs--right .el-tabs__nav.is-left,.el-tabs--right .el-tabs__nav.is-right{float:none}.el-tabs--left .el-tabs__item.is-left,.el-tabs--left .el-tabs__item.is-right,.el-tabs--right .el-tabs__item.is-left,.el-tabs--right .el-tabs__item.is-right{display:block}.el-tabs--left.el-tabs--card .el-tabs__active-bar.is-left,.el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right{display:none}.el-tabs--left .el-tabs__header.is-left{float:left;margin-bottom:0;margin-right:10px}.el-tabs--left .el-tabs__nav-wrap.is-left{margin-right:-1px}.el-tabs--left .el-tabs__item.is-left{text-align:right}.el-tabs--left.el-tabs--card .el-tabs__item.is-left{border-left:none;border-right:1px solid #E4E7ED;border-bottom:none;border-top:1px solid #E4E7ED;text-align:left}.el-tabs--left.el-tabs--card .el-tabs__item.is-left:first-child{border-right:1px solid #E4E7ED;border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active{border:1px solid #E4E7ED;border-right-color:#fff;border-left:none;border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:first-child{border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:last-child{border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__nav{border-radius:4px 0 0 4px;border-bottom:1px solid #E4E7ED;border-right:none}.el-tabs--left.el-tabs--card .el-tabs__new-tab{float:none}.el-tabs--left.el-tabs--border-card .el-tabs__header.is-left{border-right:1px solid #dfe4ed}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left{border:1px solid transparent;margin:-1px 0 -1px -1px}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active{border-color:#d1dbe5 transparent}.el-tabs--right .el-tabs__header.is-right{float:right;margin-bottom:0;margin-left:10px}.el-tabs--right .el-tabs__nav-wrap.is-right{margin-left:-1px}.el-tabs--right .el-tabs__nav-wrap.is-right::after{left:0;right:auto}.el-tabs--right .el-tabs__active-bar.is-right{left:0}.el-tabs--right.el-tabs--card .el-tabs__item.is-right{border-bottom:none;border-top:1px solid #E4E7ED}.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child{border-left:1px solid #E4E7ED;border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active{border:1px solid #E4E7ED;border-left-color:#fff;border-right:none;border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:first-child{border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:last-child{border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__nav{border-radius:0 4px 4px 0;border-bottom:1px solid #E4E7ED;border-left:none}.el-tabs--right.el-tabs--border-card .el-tabs__header.is-right{border-left:1px solid #dfe4ed}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right{border:1px solid transparent;margin:-1px -1px -1px 0}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active{border-color:#d1dbe5 transparent}.slideInLeft-transition,.slideInRight-transition{display:inline-block}.slideInRight-enter{-webkit-animation:slideInRight-enter .3s;animation:slideInRight-enter .3s}.slideInRight-leave{position:absolute;left:0;right:0;-webkit-animation:slideInRight-leave .3s;animation:slideInRight-leave .3s}.slideInLeft-enter{-webkit-animation:slideInLeft-enter .3s;animation:slideInLeft-enter .3s}.slideInLeft-leave{position:absolute;left:0;right:0;-webkit-animation:slideInLeft-leave .3s;animation:slideInLeft-leave .3s}@-webkit-keyframes slideInRight-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInRight-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes slideInRight-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%);opacity:0}}@keyframes slideInRight-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%);opacity:0}}@-webkit-keyframes slideInLeft-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInLeft-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes slideInLeft-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}}@keyframes slideInLeft-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}}.el-tree{position:relative;cursor:default;background:#FFF;color:#606266}.el-tree__empty-block{position:relative;min-height:60px;text-align:center;width:100%;height:100%}.el-tree__empty-text{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);color:#909399;font-size:14px}.el-tree__drop-indicator{position:absolute;left:0;right:0;height:1px;background-color:#409EFF}.el-tree-node{white-space:nowrap;outline:0}.el-tree-node:focus>.el-tree-node__content{background-color:#F5F7FA}.el-tree-node.is-drop-inner>.el-tree-node__content .el-tree-node__label{background-color:#409EFF;color:#fff}.el-tree-node__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:26px;cursor:pointer}.el-tree-node__content>.el-tree-node__expand-icon{padding:6px}.el-tree-node__content>label.el-checkbox{margin-right:8px}.el-tree-node__content:hover{background-color:#F5F7FA}.el-tree.is-dragging .el-tree-node__content{cursor:move}.el-tree.is-dragging.is-drop-not-allow .el-tree-node__content{cursor:not-allowed}.el-tree-node__expand-icon{cursor:pointer;color:#C0C4CC;font-size:12px;-webkit-transform:rotate(0);transform:rotate(0);-webkit-transition:-webkit-transform .3s ease-in-out;transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-transform .3s ease-in-out}.el-tree-node__expand-icon.expanded{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-tree-node__expand-icon.is-leaf{color:transparent;cursor:default}.el-tree-node__label{font-size:14px}.el-tree-node__loading-icon{margin-right:8px;font-size:14px;color:#C0C4CC}.el-tree-node>.el-tree-node__children{overflow:hidden;background-color:transparent}.el-tree-node.is-expanded>.el-tree-node__children{display:block}.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{background-color:#f0f7ff}.el-alert{width:100%;padding:8px 16px;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;position:relative;background-color:#FFF;overflow:hidden;opacity:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-transition:opacity .2s;transition:opacity .2s}.el-alert.is-light .el-alert__closebtn{color:#C0C4CC}.el-alert.is-dark .el-alert__closebtn,.el-alert.is-dark .el-alert__description{color:#FFF}.el-alert.is-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-alert--success.is-light{background-color:#f0f9eb;color:#67C23A}.el-alert--success.is-light .el-alert__description{color:#67C23A}.el-alert--success.is-dark{background-color:#67C23A;color:#FFF}.el-alert--info.is-light{background-color:#f4f4f5;color:#909399}.el-alert--info.is-dark{background-color:#909399;color:#FFF}.el-alert--info .el-alert__description{color:#909399}.el-alert--warning.is-light{background-color:#fdf6ec;color:#E6A23C}.el-alert--warning.is-light .el-alert__description{color:#E6A23C}.el-alert--warning.is-dark{background-color:#E6A23C;color:#FFF}.el-alert--error.is-light{background-color:#fef0f0;color:#F56C6C}.el-alert--error.is-light .el-alert__description{color:#F56C6C}.el-alert--error.is-dark{background-color:#F56C6C;color:#FFF}.el-alert__content{display:table-cell;padding:0 8px}.el-alert__icon{font-size:16px;width:16px}.el-alert__icon.is-big{font-size:28px;width:28px}.el-alert__title{font-size:13px;line-height:18px}.el-alert__title.is-bold{font-weight:700}.el-alert .el-alert__description{font-size:12px;margin:5px 0 0}.el-alert__closebtn{font-size:12px;opacity:1;position:absolute;top:12px;right:15px;cursor:pointer}.el-alert-fade-enter,.el-alert-fade-leave-active,.el-loading-fade-enter,.el-loading-fade-leave-active,.el-notification-fade-leave-active{opacity:0}.el-alert__closebtn.is-customed{font-style:normal;font-size:13px;top:9px}.el-notification{display:-webkit-box;display:-ms-flexbox;display:flex;width:330px;padding:14px 26px 14px 13px;border-radius:8px;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid #EBEEF5;position:fixed;background-color:#FFF;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-transition:opacity .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;transition:opacity .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;transition:opacity .3s,transform .3s,left .3s,right .3s,top .4s,bottom .3s;transition:opacity .3s,transform .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;overflow:hidden}.el-notification.right{right:16px}.el-notification.left{left:16px}.el-notification__group{margin-left:13px;margin-right:8px}.el-notification__title{font-weight:700;font-size:16px;color:#303133;margin:0}.el-notification__content{font-size:14px;line-height:21px;margin:6px 0 0;color:#606266;text-align:justify}.el-notification__content p{margin:0}.el-notification__icon{height:24px;width:24px;font-size:24px}.el-notification__closeBtn{position:absolute;top:18px;right:15px;cursor:pointer;color:#909399;font-size:16px}.el-notification__closeBtn:hover{color:#606266}.el-notification .el-icon-success{color:#67C23A}.el-notification .el-icon-error{color:#F56C6C}.el-notification .el-icon-info{color:#909399}.el-notification .el-icon-warning{color:#E6A23C}.el-notification-fade-enter.right{right:0;-webkit-transform:translateX(100%);transform:translateX(100%)}.el-notification-fade-enter.left{left:0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}.el-input-number{position:relative;display:inline-block;width:180px;line-height:38px}.el-input-number .el-input{display:block}.el-input-number .el-input__inner{-webkit-appearance:none;padding-left:50px;padding-right:50px;text-align:center}.el-input-number__decrease,.el-input-number__increase{position:absolute;z-index:1;top:1px;width:40px;height:auto;text-align:center;background:#F5F7FA;color:#606266;cursor:pointer;font-size:13px}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:#409EFF}.el-input-number__decrease:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled),.el-input-number__increase:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled){border-color:#409EFF}.el-input-number__decrease.is-disabled,.el-input-number__increase.is-disabled{color:#C0C4CC;cursor:not-allowed}.el-input-number__increase{right:1px;border-radius:0 4px 4px 0;border-left:1px solid #DCDFE6}.el-input-number__decrease{left:1px;border-radius:4px 0 0 4px;border-right:1px solid #DCDFE6}.el-input-number.is-disabled .el-input-number__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:#E4E7ED;color:#E4E7ED}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:#E4E7ED;cursor:not-allowed}.el-input-number--medium{width:200px;line-height:34px}.el-input-number--medium .el-input-number__decrease,.el-input-number--medium .el-input-number__increase{width:36px;font-size:14px}.el-input-number--medium .el-input__inner{padding-left:43px;padding-right:43px}.el-input-number--small{width:130px;line-height:30px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{width:32px;font-size:13px}.el-input-number--small .el-input-number__decrease [class*=el-icon],.el-input-number--small .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.9);transform:scale(.9)}.el-input-number--small .el-input__inner{padding-left:39px;padding-right:39px}.el-input-number--mini{width:130px;line-height:26px}.el-input-number--mini .el-input-number__decrease,.el-input-number--mini .el-input-number__increase{width:28px;font-size:12px}.el-input-number--mini .el-input-number__decrease [class*=el-icon],.el-input-number--mini .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.8);transform:scale(.8)}.el-input-number--mini .el-input__inner{padding-left:35px;padding-right:35px}.el-input-number.is-without-controls .el-input__inner{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__inner{padding-left:15px;padding-right:50px}.el-input-number.is-controls-right .el-input-number__decrease,.el-input-number.is-controls-right .el-input-number__increase{height:auto;line-height:19px}.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.8);transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-radius:0 4px 0 0;border-bottom:1px solid #DCDFE6}.el-input-number.is-controls-right .el-input-number__decrease{right:1px;bottom:1px;top:auto;left:auto;border-right:none;border-left:1px solid #DCDFE6;border-radius:0 0 4px}.el-input-number.is-controls-right[class*=medium] [class*=decrease],.el-input-number.is-controls-right[class*=medium] [class*=increase]{line-height:17px}.el-input-number.is-controls-right[class*=small] [class*=decrease],.el-input-number.is-controls-right[class*=small] [class*=increase]{line-height:15px}.el-input-number.is-controls-right[class*=mini] [class*=decrease],.el-input-number.is-controls-right[class*=mini] [class*=increase]{line-height:13px}.el-tooltip__popper{position:absolute;border-radius:4px;padding:10px;z-index:2000;font-size:12px;line-height:1.2;min-width:10px;word-wrap:break-word}.el-tooltip__popper .popper__arrow,.el-tooltip__popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-tooltip__popper .popper__arrow{border-width:6px}.el-tooltip__popper .popper__arrow::after{content:" ";border-width:5px}.el-progress-bar__inner::after,.el-row::after,.el-row::before,.el-slider::after,.el-slider::before,.el-slider__button-wrapper::after,.el-upload-cover::after{content:""}.el-tooltip__popper[x-placement^=top]{margin-bottom:12px}.el-tooltip__popper[x-placement^=top] .popper__arrow{bottom:-6px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-5px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=bottom]{margin-top:12px}.el-tooltip__popper[x-placement^=bottom] .popper__arrow{top:-6px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-5px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=right]{margin-left:12px}.el-tooltip__popper[x-placement^=right] .popper__arrow{left:-6px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=right] .popper__arrow::after{bottom:-5px;left:1px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=left]{margin-right:12px}.el-tooltip__popper[x-placement^=left] .popper__arrow{right:-6px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-5px;margin-left:-5px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper.is-dark{background:#303133;color:#FFF}.el-tooltip__popper.is-light{background:#FFF;border:1px solid #303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow{border-top-color:#303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow::after{border-top-color:#FFF}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow{border-bottom-color:#303133}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow::after{border-bottom-color:#FFF}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow{border-left-color:#303133}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow::after{border-left-color:#FFF}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow{border-right-color:#303133}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow::after{border-right-color:#FFF}.el-slider::after,.el-slider::before{display:table}.el-slider__button-wrapper .el-tooltip,.el-slider__button-wrapper::after{vertical-align:middle;display:inline-block}.el-slider::after{clear:both}.el-slider__runway{width:100%;height:6px;margin:16px 0;background-color:#E4E7ED;border-radius:3px;position:relative;cursor:pointer;vertical-align:middle}.el-slider__runway.show-input{margin-right:160px;width:auto}.el-slider__runway.disabled{cursor:default}.el-slider__runway.disabled .el-slider__bar{background-color:#C0C4CC}.el-slider__runway.disabled .el-slider__button{border-color:#C0C4CC}.el-slider__runway.disabled .el-slider__button-wrapper.dragging,.el-slider__runway.disabled .el-slider__button-wrapper.hover,.el-slider__runway.disabled .el-slider__button-wrapper:hover{cursor:not-allowed}.el-slider__runway.disabled .el-slider__button.dragging,.el-slider__runway.disabled .el-slider__button.hover,.el-slider__runway.disabled .el-slider__button:hover{-webkit-transform:scale(1);transform:scale(1);cursor:not-allowed}.el-slider__button-wrapper,.el-slider__stop{-webkit-transform:translateX(-50%);position:absolute}.el-slider__input{float:right;margin-top:3px;width:130px}.el-slider__input.el-input-number--mini{margin-top:5px}.el-slider__input.el-input-number--medium{margin-top:0}.el-slider__input.el-input-number--large{margin-top:-2px}.el-slider__bar{height:6px;background-color:#409EFF;border-top-left-radius:3px;border-bottom-left-radius:3px;position:absolute}.el-slider__button-wrapper{height:36px;width:36px;z-index:1001;top:-15px;transform:translateX(-50%);background-color:transparent;text-align:center;user-select:none;line-height:normal}.el-slider__button-wrapper::after{height:100%}.el-slider__button-wrapper.hover,.el-slider__button-wrapper:hover{cursor:-webkit-grab;cursor:grab}.el-slider__button-wrapper.dragging{cursor:-webkit-grabbing;cursor:grabbing}.el-slider__button{width:16px;height:16px;border:2px solid #409EFF;background-color:#FFF;border-radius:50%;-webkit-transition:.2s;transition:.2s;user-select:none}.el-image-viewer__btn,.el-step__icon-inner{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.el-slider__button.dragging,.el-slider__button.hover,.el-slider__button:hover{-webkit-transform:scale(1.2);transform:scale(1.2)}.el-slider__button.hover,.el-slider__button:hover{cursor:-webkit-grab;cursor:grab}.el-slider__button.dragging{cursor:-webkit-grabbing;cursor:grabbing}.el-slider__stop{height:6px;width:6px;border-radius:100%;background-color:#FFF;transform:translateX(-50%)}.el-slider__marks{top:0;left:12px;width:18px;height:100%}.el-slider__marks-text{position:absolute;-webkit-transform:translateX(-50%);transform:translateX(-50%);font-size:14px;color:#909399;margin-top:15px}.el-slider.is-vertical{position:relative}.el-slider.is-vertical .el-slider__runway{width:6px;height:100%;margin:0 16px}.el-slider.is-vertical .el-slider__bar{width:6px;height:auto;border-radius:0 0 3px 3px}.el-slider.is-vertical .el-slider__button-wrapper{top:auto;left:-15px;-webkit-transform:translateY(50%);transform:translateY(50%)}.el-slider.is-vertical .el-slider__stop{-webkit-transform:translateY(50%);transform:translateY(50%)}.el-slider.is-vertical.el-slider--with-input{padding-bottom:58px}.el-slider.is-vertical.el-slider--with-input .el-slider__input{overflow:visible;float:none;position:absolute;bottom:22px;width:36px;margin-top:15px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input__inner{text-align:center;padding-left:5px;padding-right:5px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{top:32px;margin-top:-1px;border:1px solid #DCDFE6;line-height:20px;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease{width:18px;right:18px;border-bottom-left-radius:4px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{width:19px;border-bottom-right-radius:4px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase~.el-input .el-input__inner{border-bottom-left-radius:0;border-bottom-right-radius:0}.el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__increase{border-color:#C0C4CC}.el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__increase{border-color:#409EFF}.el-slider.is-vertical .el-slider__marks-text{margin-top:0;left:15px;-webkit-transform:translateY(50%);transform:translateY(50%)}.el-loading-parent--relative{position:relative!important}.el-loading-parent--hidden{overflow:hidden!important}.el-loading-mask{position:absolute;z-index:2000;background-color:rgba(255,255,255,.9);margin:0;top:0;right:0;bottom:0;left:0;-webkit-transition:opacity .3s;transition:opacity .3s}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:-25px}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{height:50px;width:50px}.el-loading-spinner{top:50%;margin-top:-21px;width:100%;text-align:center;position:absolute}.el-col-pull-0,.el-col-pull-1,.el-col-pull-10,.el-col-pull-11,.el-col-pull-13,.el-col-pull-14,.el-col-pull-15,.el-col-pull-16,.el-col-pull-17,.el-col-pull-18,.el-col-pull-19,.el-col-pull-2,.el-col-pull-20,.el-col-pull-21,.el-col-pull-22,.el-col-pull-23,.el-col-pull-24,.el-col-pull-3,.el-col-pull-4,.el-col-pull-5,.el-col-pull-6,.el-col-pull-7,.el-col-pull-8,.el-col-pull-9,.el-col-push-0,.el-col-push-1,.el-col-push-10,.el-col-push-11,.el-col-push-12,.el-col-push-13,.el-col-push-14,.el-col-push-15,.el-col-push-16,.el-col-push-17,.el-col-push-18,.el-col-push-19,.el-col-push-2,.el-col-push-20,.el-col-push-21,.el-col-push-22,.el-col-push-23,.el-col-push-24,.el-col-push-3,.el-col-push-4,.el-col-push-5,.el-col-push-6,.el-col-push-7,.el-col-push-8,.el-col-push-9,.el-row{position:relative}.el-loading-spinner .el-loading-text{color:#409EFF;margin:3px 0;font-size:14px}.el-loading-spinner .circular{height:42px;width:42px;-webkit-animation:loading-rotate 2s linear infinite;animation:loading-rotate 2s linear infinite}.el-loading-spinner .path{-webkit-animation:loading-dash 1.5s ease-in-out infinite;animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:#409EFF;stroke-linecap:round}.el-loading-spinner i{color:#409EFF}@-webkit-keyframes loading-rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes loading-rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}100%{stroke-dasharray:90,150;stroke-dashoffset:-120px}}@keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}100%{stroke-dasharray:90,150;stroke-dashoffset:-120px}}.el-row{-webkit-box-sizing:border-box;box-sizing:border-box}.el-row::after,.el-row::before{display:table}.el-row::after{clear:both}.el-row--flex{display:-webkit-box;display:-ms-flexbox;display:flex}.el-col-0,.el-row--flex:after,.el-row--flex:before{display:none}.el-row--flex.is-justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-row--flex.is-justify-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.el-row--flex.is-justify-space-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.el-row--flex.is-justify-space-around{-ms-flex-pack:distribute;justify-content:space-around}.el-row--flex.is-align-middle{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-row--flex.is-align-bottom{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}[class*=el-col-]{float:left;-webkit-box-sizing:border-box;box-sizing:border-box}.el-upload--picture-card,.el-upload-dragger{-webkit-box-sizing:border-box;cursor:pointer}.el-col-0{width:0%}.el-col-offset-0{margin-left:0}.el-col-pull-0{right:0}.el-col-push-0{left:0}.el-col-1{width:4.16667%}.el-col-offset-1{margin-left:4.16667%}.el-col-pull-1{right:4.16667%}.el-col-push-1{left:4.16667%}.el-col-2{width:8.33333%}.el-col-offset-2{margin-left:8.33333%}.el-col-pull-2{right:8.33333%}.el-col-push-2{left:8.33333%}.el-col-3{width:12.5%}.el-col-offset-3{margin-left:12.5%}.el-col-pull-3{right:12.5%}.el-col-push-3{left:12.5%}.el-col-4{width:16.66667%}.el-col-offset-4{margin-left:16.66667%}.el-col-pull-4{right:16.66667%}.el-col-push-4{left:16.66667%}.el-col-5{width:20.83333%}.el-col-offset-5{margin-left:20.83333%}.el-col-pull-5{right:20.83333%}.el-col-push-5{left:20.83333%}.el-col-6{width:25%}.el-col-offset-6{margin-left:25%}.el-col-pull-6{right:25%}.el-col-push-6{left:25%}.el-col-7{width:29.16667%}.el-col-offset-7{margin-left:29.16667%}.el-col-pull-7{right:29.16667%}.el-col-push-7{left:29.16667%}.el-col-8{width:33.33333%}.el-col-offset-8{margin-left:33.33333%}.el-col-pull-8{right:33.33333%}.el-col-push-8{left:33.33333%}.el-col-9{width:37.5%}.el-col-offset-9{margin-left:37.5%}.el-col-pull-9{right:37.5%}.el-col-push-9{left:37.5%}.el-col-10{width:41.66667%}.el-col-offset-10{margin-left:41.66667%}.el-col-pull-10{right:41.66667%}.el-col-push-10{left:41.66667%}.el-col-11{width:45.83333%}.el-col-offset-11{margin-left:45.83333%}.el-col-pull-11{right:45.83333%}.el-col-push-11{left:45.83333%}.el-col-12{width:50%}.el-col-offset-12{margin-left:50%}.el-col-pull-12{position:relative;right:50%}.el-col-push-12{left:50%}.el-col-13{width:54.16667%}.el-col-offset-13{margin-left:54.16667%}.el-col-pull-13{right:54.16667%}.el-col-push-13{left:54.16667%}.el-col-14{width:58.33333%}.el-col-offset-14{margin-left:58.33333%}.el-col-pull-14{right:58.33333%}.el-col-push-14{left:58.33333%}.el-col-15{width:62.5%}.el-col-offset-15{margin-left:62.5%}.el-col-pull-15{right:62.5%}.el-col-push-15{left:62.5%}.el-col-16{width:66.66667%}.el-col-offset-16{margin-left:66.66667%}.el-col-pull-16{right:66.66667%}.el-col-push-16{left:66.66667%}.el-col-17{width:70.83333%}.el-col-offset-17{margin-left:70.83333%}.el-col-pull-17{right:70.83333%}.el-col-push-17{left:70.83333%}.el-col-18{width:75%}.el-col-offset-18{margin-left:75%}.el-col-pull-18{right:75%}.el-col-push-18{left:75%}.el-col-19{width:79.16667%}.el-col-offset-19{margin-left:79.16667%}.el-col-pull-19{right:79.16667%}.el-col-push-19{left:79.16667%}.el-col-20{width:83.33333%}.el-col-offset-20{margin-left:83.33333%}.el-col-pull-20{right:83.33333%}.el-col-push-20{left:83.33333%}.el-col-21{width:87.5%}.el-col-offset-21{margin-left:87.5%}.el-col-pull-21{right:87.5%}.el-col-push-21{left:87.5%}.el-col-22{width:91.66667%}.el-col-offset-22{margin-left:91.66667%}.el-col-pull-22{right:91.66667%}.el-col-push-22{left:91.66667%}.el-col-23{width:95.83333%}.el-col-offset-23{margin-left:95.83333%}.el-col-pull-23{right:95.83333%}.el-col-push-23{left:95.83333%}.el-col-24{width:100%}.el-col-offset-24{margin-left:100%}.el-col-pull-24{right:100%}.el-col-push-24{left:100%}@media only screen and (max-width:767px){.el-col-xs-0{display:none;width:0%}.el-col-xs-offset-0{margin-left:0}.el-col-xs-pull-0{position:relative;right:0}.el-col-xs-push-0{position:relative;left:0}.el-col-xs-1{width:4.16667%}.el-col-xs-offset-1{margin-left:4.16667%}.el-col-xs-pull-1{position:relative;right:4.16667%}.el-col-xs-push-1{position:relative;left:4.16667%}.el-col-xs-2{width:8.33333%}.el-col-xs-offset-2{margin-left:8.33333%}.el-col-xs-pull-2{position:relative;right:8.33333%}.el-col-xs-push-2{position:relative;left:8.33333%}.el-col-xs-3{width:12.5%}.el-col-xs-offset-3{margin-left:12.5%}.el-col-xs-pull-3{position:relative;right:12.5%}.el-col-xs-push-3{position:relative;left:12.5%}.el-col-xs-4{width:16.66667%}.el-col-xs-offset-4{margin-left:16.66667%}.el-col-xs-pull-4{position:relative;right:16.66667%}.el-col-xs-push-4{position:relative;left:16.66667%}.el-col-xs-5{width:20.83333%}.el-col-xs-offset-5{margin-left:20.83333%}.el-col-xs-pull-5{position:relative;right:20.83333%}.el-col-xs-push-5{position:relative;left:20.83333%}.el-col-xs-6{width:25%}.el-col-xs-offset-6{margin-left:25%}.el-col-xs-pull-6{position:relative;right:25%}.el-col-xs-push-6{position:relative;left:25%}.el-col-xs-7{width:29.16667%}.el-col-xs-offset-7{margin-left:29.16667%}.el-col-xs-pull-7{position:relative;right:29.16667%}.el-col-xs-push-7{position:relative;left:29.16667%}.el-col-xs-8{width:33.33333%}.el-col-xs-offset-8{margin-left:33.33333%}.el-col-xs-pull-8{position:relative;right:33.33333%}.el-col-xs-push-8{position:relative;left:33.33333%}.el-col-xs-9{width:37.5%}.el-col-xs-offset-9{margin-left:37.5%}.el-col-xs-pull-9{position:relative;right:37.5%}.el-col-xs-push-9{position:relative;left:37.5%}.el-col-xs-10{width:41.66667%}.el-col-xs-offset-10{margin-left:41.66667%}.el-col-xs-pull-10{position:relative;right:41.66667%}.el-col-xs-push-10{position:relative;left:41.66667%}.el-col-xs-11{width:45.83333%}.el-col-xs-offset-11{margin-left:45.83333%}.el-col-xs-pull-11{position:relative;right:45.83333%}.el-col-xs-push-11{position:relative;left:45.83333%}.el-col-xs-12{width:50%}.el-col-xs-offset-12{margin-left:50%}.el-col-xs-pull-12{position:relative;right:50%}.el-col-xs-push-12{position:relative;left:50%}.el-col-xs-13{width:54.16667%}.el-col-xs-offset-13{margin-left:54.16667%}.el-col-xs-pull-13{position:relative;right:54.16667%}.el-col-xs-push-13{position:relative;left:54.16667%}.el-col-xs-14{width:58.33333%}.el-col-xs-offset-14{margin-left:58.33333%}.el-col-xs-pull-14{position:relative;right:58.33333%}.el-col-xs-push-14{position:relative;left:58.33333%}.el-col-xs-15{width:62.5%}.el-col-xs-offset-15{margin-left:62.5%}.el-col-xs-pull-15{position:relative;right:62.5%}.el-col-xs-push-15{position:relative;left:62.5%}.el-col-xs-16{width:66.66667%}.el-col-xs-offset-16{margin-left:66.66667%}.el-col-xs-pull-16{position:relative;right:66.66667%}.el-col-xs-push-16{position:relative;left:66.66667%}.el-col-xs-17{width:70.83333%}.el-col-xs-offset-17{margin-left:70.83333%}.el-col-xs-pull-17{position:relative;right:70.83333%}.el-col-xs-push-17{position:relative;left:70.83333%}.el-col-xs-18{width:75%}.el-col-xs-offset-18{margin-left:75%}.el-col-xs-pull-18{position:relative;right:75%}.el-col-xs-push-18{position:relative;left:75%}.el-col-xs-19{width:79.16667%}.el-col-xs-offset-19{margin-left:79.16667%}.el-col-xs-pull-19{position:relative;right:79.16667%}.el-col-xs-push-19{position:relative;left:79.16667%}.el-col-xs-20{width:83.33333%}.el-col-xs-offset-20{margin-left:83.33333%}.el-col-xs-pull-20{position:relative;right:83.33333%}.el-col-xs-push-20{position:relative;left:83.33333%}.el-col-xs-21{width:87.5%}.el-col-xs-offset-21{margin-left:87.5%}.el-col-xs-pull-21{position:relative;right:87.5%}.el-col-xs-push-21{position:relative;left:87.5%}.el-col-xs-22{width:91.66667%}.el-col-xs-offset-22{margin-left:91.66667%}.el-col-xs-pull-22{position:relative;right:91.66667%}.el-col-xs-push-22{position:relative;left:91.66667%}.el-col-xs-23{width:95.83333%}.el-col-xs-offset-23{margin-left:95.83333%}.el-col-xs-pull-23{position:relative;right:95.83333%}.el-col-xs-push-23{position:relative;left:95.83333%}.el-col-xs-24{width:100%}.el-col-xs-offset-24{margin-left:100%}.el-col-xs-pull-24{position:relative;right:100%}.el-col-xs-push-24{position:relative;left:100%}}@media only screen and (min-width:768px){.el-col-sm-0{display:none;width:0%}.el-col-sm-offset-0{margin-left:0}.el-col-sm-pull-0{position:relative;right:0}.el-col-sm-push-0{position:relative;left:0}.el-col-sm-1{width:4.16667%}.el-col-sm-offset-1{margin-left:4.16667%}.el-col-sm-pull-1{position:relative;right:4.16667%}.el-col-sm-push-1{position:relative;left:4.16667%}.el-col-sm-2{width:8.33333%}.el-col-sm-offset-2{margin-left:8.33333%}.el-col-sm-pull-2{position:relative;right:8.33333%}.el-col-sm-push-2{position:relative;left:8.33333%}.el-col-sm-3{width:12.5%}.el-col-sm-offset-3{margin-left:12.5%}.el-col-sm-pull-3{position:relative;right:12.5%}.el-col-sm-push-3{position:relative;left:12.5%}.el-col-sm-4{width:16.66667%}.el-col-sm-offset-4{margin-left:16.66667%}.el-col-sm-pull-4{position:relative;right:16.66667%}.el-col-sm-push-4{position:relative;left:16.66667%}.el-col-sm-5{width:20.83333%}.el-col-sm-offset-5{margin-left:20.83333%}.el-col-sm-pull-5{position:relative;right:20.83333%}.el-col-sm-push-5{position:relative;left:20.83333%}.el-col-sm-6{width:25%}.el-col-sm-offset-6{margin-left:25%}.el-col-sm-pull-6{position:relative;right:25%}.el-col-sm-push-6{position:relative;left:25%}.el-col-sm-7{width:29.16667%}.el-col-sm-offset-7{margin-left:29.16667%}.el-col-sm-pull-7{position:relative;right:29.16667%}.el-col-sm-push-7{position:relative;left:29.16667%}.el-col-sm-8{width:33.33333%}.el-col-sm-offset-8{margin-left:33.33333%}.el-col-sm-pull-8{position:relative;right:33.33333%}.el-col-sm-push-8{position:relative;left:33.33333%}.el-col-sm-9{width:37.5%}.el-col-sm-offset-9{margin-left:37.5%}.el-col-sm-pull-9{position:relative;right:37.5%}.el-col-sm-push-9{position:relative;left:37.5%}.el-col-sm-10{width:41.66667%}.el-col-sm-offset-10{margin-left:41.66667%}.el-col-sm-pull-10{position:relative;right:41.66667%}.el-col-sm-push-10{position:relative;left:41.66667%}.el-col-sm-11{width:45.83333%}.el-col-sm-offset-11{margin-left:45.83333%}.el-col-sm-pull-11{position:relative;right:45.83333%}.el-col-sm-push-11{position:relative;left:45.83333%}.el-col-sm-12{width:50%}.el-col-sm-offset-12{margin-left:50%}.el-col-sm-pull-12{position:relative;right:50%}.el-col-sm-push-12{position:relative;left:50%}.el-col-sm-13{width:54.16667%}.el-col-sm-offset-13{margin-left:54.16667%}.el-col-sm-pull-13{position:relative;right:54.16667%}.el-col-sm-push-13{position:relative;left:54.16667%}.el-col-sm-14{width:58.33333%}.el-col-sm-offset-14{margin-left:58.33333%}.el-col-sm-pull-14{position:relative;right:58.33333%}.el-col-sm-push-14{position:relative;left:58.33333%}.el-col-sm-15{width:62.5%}.el-col-sm-offset-15{margin-left:62.5%}.el-col-sm-pull-15{position:relative;right:62.5%}.el-col-sm-push-15{position:relative;left:62.5%}.el-col-sm-16{width:66.66667%}.el-col-sm-offset-16{margin-left:66.66667%}.el-col-sm-pull-16{position:relative;right:66.66667%}.el-col-sm-push-16{position:relative;left:66.66667%}.el-col-sm-17{width:70.83333%}.el-col-sm-offset-17{margin-left:70.83333%}.el-col-sm-pull-17{position:relative;right:70.83333%}.el-col-sm-push-17{position:relative;left:70.83333%}.el-col-sm-18{width:75%}.el-col-sm-offset-18{margin-left:75%}.el-col-sm-pull-18{position:relative;right:75%}.el-col-sm-push-18{position:relative;left:75%}.el-col-sm-19{width:79.16667%}.el-col-sm-offset-19{margin-left:79.16667%}.el-col-sm-pull-19{position:relative;right:79.16667%}.el-col-sm-push-19{position:relative;left:79.16667%}.el-col-sm-20{width:83.33333%}.el-col-sm-offset-20{margin-left:83.33333%}.el-col-sm-pull-20{position:relative;right:83.33333%}.el-col-sm-push-20{position:relative;left:83.33333%}.el-col-sm-21{width:87.5%}.el-col-sm-offset-21{margin-left:87.5%}.el-col-sm-pull-21{position:relative;right:87.5%}.el-col-sm-push-21{position:relative;left:87.5%}.el-col-sm-22{width:91.66667%}.el-col-sm-offset-22{margin-left:91.66667%}.el-col-sm-pull-22{position:relative;right:91.66667%}.el-col-sm-push-22{position:relative;left:91.66667%}.el-col-sm-23{width:95.83333%}.el-col-sm-offset-23{margin-left:95.83333%}.el-col-sm-pull-23{position:relative;right:95.83333%}.el-col-sm-push-23{position:relative;left:95.83333%}.el-col-sm-24{width:100%}.el-col-sm-offset-24{margin-left:100%}.el-col-sm-pull-24{position:relative;right:100%}.el-col-sm-push-24{position:relative;left:100%}}@media only screen and (min-width:992px){.el-col-md-0{display:none;width:0%}.el-col-md-offset-0{margin-left:0}.el-col-md-pull-0{position:relative;right:0}.el-col-md-push-0{position:relative;left:0}.el-col-md-1{width:4.16667%}.el-col-md-offset-1{margin-left:4.16667%}.el-col-md-pull-1{position:relative;right:4.16667%}.el-col-md-push-1{position:relative;left:4.16667%}.el-col-md-2{width:8.33333%}.el-col-md-offset-2{margin-left:8.33333%}.el-col-md-pull-2{position:relative;right:8.33333%}.el-col-md-push-2{position:relative;left:8.33333%}.el-col-md-3{width:12.5%}.el-col-md-offset-3{margin-left:12.5%}.el-col-md-pull-3{position:relative;right:12.5%}.el-col-md-push-3{position:relative;left:12.5%}.el-col-md-4{width:16.66667%}.el-col-md-offset-4{margin-left:16.66667%}.el-col-md-pull-4{position:relative;right:16.66667%}.el-col-md-push-4{position:relative;left:16.66667%}.el-col-md-5{width:20.83333%}.el-col-md-offset-5{margin-left:20.83333%}.el-col-md-pull-5{position:relative;right:20.83333%}.el-col-md-push-5{position:relative;left:20.83333%}.el-col-md-6{width:25%}.el-col-md-offset-6{margin-left:25%}.el-col-md-pull-6{position:relative;right:25%}.el-col-md-push-6{position:relative;left:25%}.el-col-md-7{width:29.16667%}.el-col-md-offset-7{margin-left:29.16667%}.el-col-md-pull-7{position:relative;right:29.16667%}.el-col-md-push-7{position:relative;left:29.16667%}.el-col-md-8{width:33.33333%}.el-col-md-offset-8{margin-left:33.33333%}.el-col-md-pull-8{position:relative;right:33.33333%}.el-col-md-push-8{position:relative;left:33.33333%}.el-col-md-9{width:37.5%}.el-col-md-offset-9{margin-left:37.5%}.el-col-md-pull-9{position:relative;right:37.5%}.el-col-md-push-9{position:relative;left:37.5%}.el-col-md-10{width:41.66667%}.el-col-md-offset-10{margin-left:41.66667%}.el-col-md-pull-10{position:relative;right:41.66667%}.el-col-md-push-10{position:relative;left:41.66667%}.el-col-md-11{width:45.83333%}.el-col-md-offset-11{margin-left:45.83333%}.el-col-md-pull-11{position:relative;right:45.83333%}.el-col-md-push-11{position:relative;left:45.83333%}.el-col-md-12{width:50%}.el-col-md-offset-12{margin-left:50%}.el-col-md-pull-12{position:relative;right:50%}.el-col-md-push-12{position:relative;left:50%}.el-col-md-13{width:54.16667%}.el-col-md-offset-13{margin-left:54.16667%}.el-col-md-pull-13{position:relative;right:54.16667%}.el-col-md-push-13{position:relative;left:54.16667%}.el-col-md-14{width:58.33333%}.el-col-md-offset-14{margin-left:58.33333%}.el-col-md-pull-14{position:relative;right:58.33333%}.el-col-md-push-14{position:relative;left:58.33333%}.el-col-md-15{width:62.5%}.el-col-md-offset-15{margin-left:62.5%}.el-col-md-pull-15{position:relative;right:62.5%}.el-col-md-push-15{position:relative;left:62.5%}.el-col-md-16{width:66.66667%}.el-col-md-offset-16{margin-left:66.66667%}.el-col-md-pull-16{position:relative;right:66.66667%}.el-col-md-push-16{position:relative;left:66.66667%}.el-col-md-17{width:70.83333%}.el-col-md-offset-17{margin-left:70.83333%}.el-col-md-pull-17{position:relative;right:70.83333%}.el-col-md-push-17{position:relative;left:70.83333%}.el-col-md-18{width:75%}.el-col-md-offset-18{margin-left:75%}.el-col-md-pull-18{position:relative;right:75%}.el-col-md-push-18{position:relative;left:75%}.el-col-md-19{width:79.16667%}.el-col-md-offset-19{margin-left:79.16667%}.el-col-md-pull-19{position:relative;right:79.16667%}.el-col-md-push-19{position:relative;left:79.16667%}.el-col-md-20{width:83.33333%}.el-col-md-offset-20{margin-left:83.33333%}.el-col-md-pull-20{position:relative;right:83.33333%}.el-col-md-push-20{position:relative;left:83.33333%}.el-col-md-21{width:87.5%}.el-col-md-offset-21{margin-left:87.5%}.el-col-md-pull-21{position:relative;right:87.5%}.el-col-md-push-21{position:relative;left:87.5%}.el-col-md-22{width:91.66667%}.el-col-md-offset-22{margin-left:91.66667%}.el-col-md-pull-22{position:relative;right:91.66667%}.el-col-md-push-22{position:relative;left:91.66667%}.el-col-md-23{width:95.83333%}.el-col-md-offset-23{margin-left:95.83333%}.el-col-md-pull-23{position:relative;right:95.83333%}.el-col-md-push-23{position:relative;left:95.83333%}.el-col-md-24{width:100%}.el-col-md-offset-24{margin-left:100%}.el-col-md-pull-24{position:relative;right:100%}.el-col-md-push-24{position:relative;left:100%}}@media only screen and (min-width:1200px){.el-col-lg-0{display:none;width:0%}.el-col-lg-offset-0{margin-left:0}.el-col-lg-pull-0{position:relative;right:0}.el-col-lg-push-0{position:relative;left:0}.el-col-lg-1{width:4.16667%}.el-col-lg-offset-1{margin-left:4.16667%}.el-col-lg-pull-1{position:relative;right:4.16667%}.el-col-lg-push-1{position:relative;left:4.16667%}.el-col-lg-2{width:8.33333%}.el-col-lg-offset-2{margin-left:8.33333%}.el-col-lg-pull-2{position:relative;right:8.33333%}.el-col-lg-push-2{position:relative;left:8.33333%}.el-col-lg-3{width:12.5%}.el-col-lg-offset-3{margin-left:12.5%}.el-col-lg-pull-3{position:relative;right:12.5%}.el-col-lg-push-3{position:relative;left:12.5%}.el-col-lg-4{width:16.66667%}.el-col-lg-offset-4{margin-left:16.66667%}.el-col-lg-pull-4{position:relative;right:16.66667%}.el-col-lg-push-4{position:relative;left:16.66667%}.el-col-lg-5{width:20.83333%}.el-col-lg-offset-5{margin-left:20.83333%}.el-col-lg-pull-5{position:relative;right:20.83333%}.el-col-lg-push-5{position:relative;left:20.83333%}.el-col-lg-6{width:25%}.el-col-lg-offset-6{margin-left:25%}.el-col-lg-pull-6{position:relative;right:25%}.el-col-lg-push-6{position:relative;left:25%}.el-col-lg-7{width:29.16667%}.el-col-lg-offset-7{margin-left:29.16667%}.el-col-lg-pull-7{position:relative;right:29.16667%}.el-col-lg-push-7{position:relative;left:29.16667%}.el-col-lg-8{width:33.33333%}.el-col-lg-offset-8{margin-left:33.33333%}.el-col-lg-pull-8{position:relative;right:33.33333%}.el-col-lg-push-8{position:relative;left:33.33333%}.el-col-lg-9{width:37.5%}.el-col-lg-offset-9{margin-left:37.5%}.el-col-lg-pull-9{position:relative;right:37.5%}.el-col-lg-push-9{position:relative;left:37.5%}.el-col-lg-10{width:41.66667%}.el-col-lg-offset-10{margin-left:41.66667%}.el-col-lg-pull-10{position:relative;right:41.66667%}.el-col-lg-push-10{position:relative;left:41.66667%}.el-col-lg-11{width:45.83333%}.el-col-lg-offset-11{margin-left:45.83333%}.el-col-lg-pull-11{position:relative;right:45.83333%}.el-col-lg-push-11{position:relative;left:45.83333%}.el-col-lg-12{width:50%}.el-col-lg-offset-12{margin-left:50%}.el-col-lg-pull-12{position:relative;right:50%}.el-col-lg-push-12{position:relative;left:50%}.el-col-lg-13{width:54.16667%}.el-col-lg-offset-13{margin-left:54.16667%}.el-col-lg-pull-13{position:relative;right:54.16667%}.el-col-lg-push-13{position:relative;left:54.16667%}.el-col-lg-14{width:58.33333%}.el-col-lg-offset-14{margin-left:58.33333%}.el-col-lg-pull-14{position:relative;right:58.33333%}.el-col-lg-push-14{position:relative;left:58.33333%}.el-col-lg-15{width:62.5%}.el-col-lg-offset-15{margin-left:62.5%}.el-col-lg-pull-15{position:relative;right:62.5%}.el-col-lg-push-15{position:relative;left:62.5%}.el-col-lg-16{width:66.66667%}.el-col-lg-offset-16{margin-left:66.66667%}.el-col-lg-pull-16{position:relative;right:66.66667%}.el-col-lg-push-16{position:relative;left:66.66667%}.el-col-lg-17{width:70.83333%}.el-col-lg-offset-17{margin-left:70.83333%}.el-col-lg-pull-17{position:relative;right:70.83333%}.el-col-lg-push-17{position:relative;left:70.83333%}.el-col-lg-18{width:75%}.el-col-lg-offset-18{margin-left:75%}.el-col-lg-pull-18{position:relative;right:75%}.el-col-lg-push-18{position:relative;left:75%}.el-col-lg-19{width:79.16667%}.el-col-lg-offset-19{margin-left:79.16667%}.el-col-lg-pull-19{position:relative;right:79.16667%}.el-col-lg-push-19{position:relative;left:79.16667%}.el-col-lg-20{width:83.33333%}.el-col-lg-offset-20{margin-left:83.33333%}.el-col-lg-pull-20{position:relative;right:83.33333%}.el-col-lg-push-20{position:relative;left:83.33333%}.el-col-lg-21{width:87.5%}.el-col-lg-offset-21{margin-left:87.5%}.el-col-lg-pull-21{position:relative;right:87.5%}.el-col-lg-push-21{position:relative;left:87.5%}.el-col-lg-22{width:91.66667%}.el-col-lg-offset-22{margin-left:91.66667%}.el-col-lg-pull-22{position:relative;right:91.66667%}.el-col-lg-push-22{position:relative;left:91.66667%}.el-col-lg-23{width:95.83333%}.el-col-lg-offset-23{margin-left:95.83333%}.el-col-lg-pull-23{position:relative;right:95.83333%}.el-col-lg-push-23{position:relative;left:95.83333%}.el-col-lg-24{width:100%}.el-col-lg-offset-24{margin-left:100%}.el-col-lg-pull-24{position:relative;right:100%}.el-col-lg-push-24{position:relative;left:100%}}@media only screen and (min-width:1920px){.el-col-xl-0{display:none;width:0%}.el-col-xl-offset-0{margin-left:0}.el-col-xl-pull-0{position:relative;right:0}.el-col-xl-push-0{position:relative;left:0}.el-col-xl-1{width:4.16667%}.el-col-xl-offset-1{margin-left:4.16667%}.el-col-xl-pull-1{position:relative;right:4.16667%}.el-col-xl-push-1{position:relative;left:4.16667%}.el-col-xl-2{width:8.33333%}.el-col-xl-offset-2{margin-left:8.33333%}.el-col-xl-pull-2{position:relative;right:8.33333%}.el-col-xl-push-2{position:relative;left:8.33333%}.el-col-xl-3{width:12.5%}.el-col-xl-offset-3{margin-left:12.5%}.el-col-xl-pull-3{position:relative;right:12.5%}.el-col-xl-push-3{position:relative;left:12.5%}.el-col-xl-4{width:16.66667%}.el-col-xl-offset-4{margin-left:16.66667%}.el-col-xl-pull-4{position:relative;right:16.66667%}.el-col-xl-push-4{position:relative;left:16.66667%}.el-col-xl-5{width:20.83333%}.el-col-xl-offset-5{margin-left:20.83333%}.el-col-xl-pull-5{position:relative;right:20.83333%}.el-col-xl-push-5{position:relative;left:20.83333%}.el-col-xl-6{width:25%}.el-col-xl-offset-6{margin-left:25%}.el-col-xl-pull-6{position:relative;right:25%}.el-col-xl-push-6{position:relative;left:25%}.el-col-xl-7{width:29.16667%}.el-col-xl-offset-7{margin-left:29.16667%}.el-col-xl-pull-7{position:relative;right:29.16667%}.el-col-xl-push-7{position:relative;left:29.16667%}.el-col-xl-8{width:33.33333%}.el-col-xl-offset-8{margin-left:33.33333%}.el-col-xl-pull-8{position:relative;right:33.33333%}.el-col-xl-push-8{position:relative;left:33.33333%}.el-col-xl-9{width:37.5%}.el-col-xl-offset-9{margin-left:37.5%}.el-col-xl-pull-9{position:relative;right:37.5%}.el-col-xl-push-9{position:relative;left:37.5%}.el-col-xl-10{width:41.66667%}.el-col-xl-offset-10{margin-left:41.66667%}.el-col-xl-pull-10{position:relative;right:41.66667%}.el-col-xl-push-10{position:relative;left:41.66667%}.el-col-xl-11{width:45.83333%}.el-col-xl-offset-11{margin-left:45.83333%}.el-col-xl-pull-11{position:relative;right:45.83333%}.el-col-xl-push-11{position:relative;left:45.83333%}.el-col-xl-12{width:50%}.el-col-xl-offset-12{margin-left:50%}.el-col-xl-pull-12{position:relative;right:50%}.el-col-xl-push-12{position:relative;left:50%}.el-col-xl-13{width:54.16667%}.el-col-xl-offset-13{margin-left:54.16667%}.el-col-xl-pull-13{position:relative;right:54.16667%}.el-col-xl-push-13{position:relative;left:54.16667%}.el-col-xl-14{width:58.33333%}.el-col-xl-offset-14{margin-left:58.33333%}.el-col-xl-pull-14{position:relative;right:58.33333%}.el-col-xl-push-14{position:relative;left:58.33333%}.el-col-xl-15{width:62.5%}.el-col-xl-offset-15{margin-left:62.5%}.el-col-xl-pull-15{position:relative;right:62.5%}.el-col-xl-push-15{position:relative;left:62.5%}.el-col-xl-16{width:66.66667%}.el-col-xl-offset-16{margin-left:66.66667%}.el-col-xl-pull-16{position:relative;right:66.66667%}.el-col-xl-push-16{position:relative;left:66.66667%}.el-col-xl-17{width:70.83333%}.el-col-xl-offset-17{margin-left:70.83333%}.el-col-xl-pull-17{position:relative;right:70.83333%}.el-col-xl-push-17{position:relative;left:70.83333%}.el-col-xl-18{width:75%}.el-col-xl-offset-18{margin-left:75%}.el-col-xl-pull-18{position:relative;right:75%}.el-col-xl-push-18{position:relative;left:75%}.el-col-xl-19{width:79.16667%}.el-col-xl-offset-19{margin-left:79.16667%}.el-col-xl-pull-19{position:relative;right:79.16667%}.el-col-xl-push-19{position:relative;left:79.16667%}.el-col-xl-20{width:83.33333%}.el-col-xl-offset-20{margin-left:83.33333%}.el-col-xl-pull-20{position:relative;right:83.33333%}.el-col-xl-push-20{position:relative;left:83.33333%}.el-col-xl-21{width:87.5%}.el-col-xl-offset-21{margin-left:87.5%}.el-col-xl-pull-21{position:relative;right:87.5%}.el-col-xl-push-21{position:relative;left:87.5%}.el-col-xl-22{width:91.66667%}.el-col-xl-offset-22{margin-left:91.66667%}.el-col-xl-pull-22{position:relative;right:91.66667%}.el-col-xl-push-22{position:relative;left:91.66667%}.el-col-xl-23{width:95.83333%}.el-col-xl-offset-23{margin-left:95.83333%}.el-col-xl-pull-23{position:relative;right:95.83333%}.el-col-xl-push-23{position:relative;left:95.83333%}.el-col-xl-24{width:100%}.el-col-xl-offset-24{margin-left:100%}.el-col-xl-pull-24{position:relative;right:100%}.el-col-xl-push-24{position:relative;left:100%}}@-webkit-keyframes progress{0%{background-position:0 0}100%{background-position:32px 0}}.el-upload{display:inline-block;text-align:center;cursor:pointer;outline:0}.el-upload__input{display:none}.el-upload__tip{font-size:12px;color:#606266;margin-top:7px}.el-upload iframe{position:absolute;z-index:-1;top:0;left:0;opacity:0;filter:alpha(opacity=0)}.el-upload--picture-card{background-color:#fbfdff;border:1px dashed #c0ccda;border-radius:6px;box-sizing:border-box;width:148px;height:148px;line-height:146px;vertical-align:top}.el-upload--picture-card i{font-size:28px;color:#8c939d}.el-upload--picture-card:hover,.el-upload:focus{border-color:#409EFF;color:#409EFF}.el-upload:focus .el-upload-dragger{border-color:#409EFF}.el-upload-dragger{background-color:#fff;border:1px dashed #d9d9d9;border-radius:6px;box-sizing:border-box;width:360px;height:180px;text-align:center;position:relative;overflow:hidden}.el-upload-dragger .el-icon-upload{font-size:67px;color:#C0C4CC;margin:40px 0 16px;line-height:50px}.el-upload-dragger+.el-upload__tip{text-align:center}.el-upload-dragger~.el-upload__files{border-top:1px solid #DCDFE6;margin-top:7px;padding-top:5px}.el-upload-dragger .el-upload__text{color:#606266;font-size:14px;text-align:center}.el-upload-dragger .el-upload__text em{color:#409EFF;font-style:normal}.el-upload-dragger:hover{border-color:#409EFF}.el-upload-dragger.is-dragover{background-color:rgba(32,159,255,.06);border:2px dashed #409EFF}.el-upload-list{margin:0;padding:0;list-style:none}.el-upload-list__item{-webkit-transition:all .5s cubic-bezier(.55,0,.1,1);transition:all .5s cubic-bezier(.55,0,.1,1);font-size:14px;color:#606266;line-height:1.8;margin-top:5px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;width:100%}.el-upload-list__item .el-progress{position:absolute;top:20px;width:100%}.el-upload-list__item .el-progress__text{position:absolute;right:0;top:-13px}.el-upload-list__item .el-progress-bar{margin-right:0;padding-right:0}.el-upload-list__item:first-child{margin-top:10px}.el-upload-list__item .el-icon-upload-success{color:#67C23A}.el-upload-list__item .el-icon-close{display:none;position:absolute;top:5px;right:5px;cursor:pointer;opacity:.75;color:#606266}.el-upload-list__item .el-icon-close:hover{opacity:1}.el-upload-list__item .el-icon-close-tip{display:none;position:absolute;top:5px;right:5px;font-size:12px;cursor:pointer;opacity:1;color:#409EFF}.el-upload-list__item:hover{background-color:#F5F7FA}.el-upload-list__item:hover .el-icon-close{display:inline-block}.el-upload-list__item:hover .el-progress__text{display:none}.el-upload-list__item.is-success .el-upload-list__item-status-label{display:block}.el-upload-list__item.is-success .el-upload-list__item-name:focus,.el-upload-list__item.is-success .el-upload-list__item-name:hover{color:#409EFF;cursor:pointer}.el-upload-list__item.is-success:focus:not(:hover) .el-icon-close-tip{display:inline-block}.el-upload-list__item.is-success:active .el-icon-close-tip,.el-upload-list__item.is-success:focus .el-upload-list__item-status-label,.el-upload-list__item.is-success:hover .el-upload-list__item-status-label,.el-upload-list__item.is-success:not(.focusing):focus .el-icon-close-tip{display:none}.el-upload-list.is-disabled .el-upload-list__item:hover .el-upload-list__item-status-label{display:block}.el-upload-list__item-name{color:#606266;display:block;margin-right:40px;overflow:hidden;padding-left:4px;text-overflow:ellipsis;-webkit-transition:color .3s;transition:color .3s;white-space:nowrap}.el-upload-list__item-name [class^=el-icon]{height:100%;margin-right:7px;color:#909399;line-height:inherit}.el-upload-list__item-status-label{position:absolute;right:5px;top:0;line-height:inherit;display:none}.el-upload-list__item-delete{position:absolute;right:10px;top:0;font-size:12px;color:#606266;display:none}.el-upload-list__item-delete:hover{color:#409EFF}.el-upload-list--picture-card{margin:0;display:inline;vertical-align:top}.el-upload-list--picture-card .el-upload-list__item{overflow:hidden;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;width:148px;height:148px;margin:0 8px 8px 0;display:inline-block}.el-upload-list--picture-card .el-upload-list__item .el-icon-check,.el-upload-list--picture-card .el-upload-list__item .el-icon-circle-check{color:#FFF}.el-upload-list--picture-card .el-upload-list__item .el-icon-close,.el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label{display:none}.el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture-card .el-upload-list__item-name{display:none}.el-upload-list--picture-card .el-upload-list__item-thumbnail{width:100%;height:100%}.el-upload-list--picture-card .el-upload-list__item-status-label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 0 1pc 1px rgba(0,0,0,.2);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.el-upload-list--picture-card .el-upload-list__item-status-label i{font-size:12px;margin-top:11px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.el-upload-list--picture-card .el-upload-list__item-actions{position:absolute;width:100%;height:100%;left:0;top:0;cursor:default;text-align:center;color:#fff;opacity:0;font-size:20px;background-color:rgba(0,0,0,.5);-webkit-transition:opacity .3s;transition:opacity .3s}.el-upload-list--picture-card .el-upload-list__item-actions::after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-upload-list--picture-card .el-upload-list__item-actions span{display:none;cursor:pointer}.el-upload-list--picture-card .el-upload-list__item-actions span+span{margin-left:15px}.el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete{position:static;font-size:inherit;color:inherit}.el-upload-list--picture-card .el-upload-list__item-actions:hover{opacity:1}.el-upload-list--picture-card .el-upload-list__item-actions:hover span{display:inline-block}.el-upload-list--picture-card .el-progress{top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);bottom:auto;width:126px}.el-upload-list--picture-card .el-progress .el-progress__text{top:50%}.el-upload-list--picture .el-upload-list__item{overflow:hidden;z-index:0;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;margin-top:10px;padding:10px 10px 10px 90px;height:92px}.el-upload-list--picture .el-upload-list__item .el-icon-check,.el-upload-list--picture .el-upload-list__item .el-icon-circle-check{color:#FFF}.el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label{background:0 0;-webkit-box-shadow:none;box-shadow:none;top:-2px;right:-12px}.el-upload-list--picture .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name{line-height:70px;margin-top:0}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i{display:none}.el-upload-list--picture .el-upload-list__item-thumbnail{vertical-align:middle;display:inline-block;width:70px;height:70px;float:left;position:relative;z-index:1;margin-left:-80px;background-color:#FFF}.el-upload-list--picture .el-upload-list__item-name{display:block;margin-top:20px}.el-upload-list--picture .el-upload-list__item-name i{font-size:70px;line-height:1;position:absolute;left:9px;top:10px}.el-upload-list--picture .el-upload-list__item-status-label{position:absolute;right:-17px;top:-7px;width:46px;height:26px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 1px 1px #ccc;box-shadow:0 1px 1px #ccc}.el-upload-list--picture .el-upload-list__item-status-label i{font-size:12px;margin-top:12px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.el-upload-list--picture .el-progress{position:relative;top:-7px}.el-upload-cover{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;z-index:10;cursor:default}.el-upload-cover::after{display:inline-block;height:100%;vertical-align:middle}.el-upload-cover img{display:block;width:100%;height:100%}.el-upload-cover__label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 0 1pc 1px rgba(0,0,0,.2);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.el-upload-cover__label i{font-size:12px;margin-top:11px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);color:#fff}.el-upload-cover__progress{display:inline-block;vertical-align:middle;position:static;width:243px}.el-upload-cover__progress+.el-upload__inner{opacity:0}.el-upload-cover__content{position:absolute;top:0;left:0;width:100%;height:100%}.el-upload-cover__interact{position:absolute;bottom:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.72);text-align:center}.el-upload-cover__interact .btn{display:inline-block;color:#FFF;font-size:14px;cursor:pointer;vertical-align:middle;-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);margin-top:60px}.el-upload-cover__interact .btn span{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.el-upload-cover__interact .btn:not(:first-child){margin-left:35px}.el-upload-cover__interact .btn:hover{-webkit-transform:translateY(-13px);transform:translateY(-13px)}.el-upload-cover__interact .btn:hover span{opacity:1}.el-upload-cover__interact .btn i{color:#FFF;display:block;font-size:24px;line-height:inherit;margin:0 auto 5px}.el-upload-cover__title{position:absolute;bottom:0;left:0;background-color:#FFF;height:36px;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:400;text-align:left;padding:0 10px;margin:0;line-height:36px;font-size:14px;color:#303133}.el-upload-cover+.el-upload__inner{opacity:0;position:relative;z-index:1}.el-progress{position:relative;line-height:1}.el-progress__text{font-size:14px;color:#606266;display:inline-block;vertical-align:middle;margin-left:10px;line-height:1}.el-progress__text i{vertical-align:middle;display:block}.el-progress--circle,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{position:absolute;top:50%;left:0;width:100%;text-align:center;margin:0;-webkit-transform:translate(0,-50%);transform:translate(0,-50%)}.el-progress--circle .el-progress__text i,.el-progress--dashboard .el-progress__text i{vertical-align:middle;display:inline-block}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{padding-right:0;margin-right:0;display:block}.el-progress-bar,.el-progress-bar__inner::after,.el-progress-bar__innerText,.el-spinner{display:inline-block;vertical-align:middle}.el-progress--text-inside .el-progress-bar{padding-right:0;margin-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:#67C23A}.el-progress.is-success .el-progress__text{color:#67C23A}.el-progress.is-warning .el-progress-bar__inner{background-color:#E6A23C}.el-progress.is-warning .el-progress__text{color:#E6A23C}.el-progress.is-exception .el-progress-bar__inner{background-color:#F56C6C}.el-progress.is-exception .el-progress__text{color:#F56C6C}.el-progress-bar{padding-right:50px;width:100%;margin-right:-55px;-webkit-box-sizing:border-box;box-sizing:border-box}.el-progress-bar__outer{height:6px;border-radius:100px;background-color:#EBEEF5;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{position:absolute;left:0;top:0;height:100%;background-color:#409EFF;text-align:right;border-radius:100px;line-height:1;white-space:nowrap;-webkit-transition:width .6s ease;transition:width .6s ease}.el-card,.el-message{border-radius:4px;overflow:hidden}.el-progress-bar__inner::after{height:100%}.el-progress-bar__innerText{color:#FFF;font-size:12px;margin:0 5px}@keyframes progress{0%{background-position:0 0}100%{background-position:32px 0}}.el-time-spinner{width:100%;white-space:nowrap}.el-spinner-inner{-webkit-animation:rotate 2s linear infinite;animation:rotate 2s linear infinite;width:50px;height:50px}.el-spinner-inner .path{stroke:#ececec;stroke-linecap:round;-webkit-animation:dash 1.5s ease-in-out infinite;animation:dash 1.5s ease-in-out infinite}@-webkit-keyframes rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}100%{stroke-dasharray:90,150;stroke-dashoffset:-124}}@keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}100%{stroke-dasharray:90,150;stroke-dashoffset:-124}}.el-message{min-width:380px;-webkit-box-sizing:border-box;box-sizing:border-box;border-width:1px;border-style:solid;border-color:#EBEEF5;position:fixed;left:50%;top:20px;-webkit-transform:translateX(-50%);transform:translateX(-50%);background-color:#edf2fc;-webkit-transition:opacity .3s,top .4s,-webkit-transform .4s;transition:opacity .3s,top .4s,-webkit-transform .4s;transition:opacity .3s,transform .4s,top .4s;transition:opacity .3s,transform .4s,top .4s,-webkit-transform .4s;padding:15px 15px 15px 20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-message.is-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-message.is-closable .el-message__content{padding-right:16px}.el-message p{margin:0}.el-message--info .el-message__content{color:#909399}.el-message--success{background-color:#f0f9eb;border-color:#e1f3d8}.el-message--success .el-message__content{color:#67C23A}.el-message--warning{background-color:#fdf6ec;border-color:#faecd8}.el-message--warning .el-message__content{color:#E6A23C}.el-message--error{background-color:#fef0f0;border-color:#fde2e2}.el-message--error .el-message__content{color:#F56C6C}.el-message__icon{margin-right:10px}.el-message__content{padding:0;font-size:14px;line-height:1}.el-message__closeBtn{position:absolute;top:50%;right:15px;-webkit-transform:translateY(-50%);transform:translateY(-50%);cursor:pointer;color:#C0C4CC;font-size:16px}.el-message__closeBtn:hover{color:#909399}.el-message .el-icon-success{color:#67C23A}.el-message .el-icon-error{color:#F56C6C}.el-message .el-icon-info{color:#909399}.el-message .el-icon-warning{color:#E6A23C}.el-message-fade-enter,.el-message-fade-leave-active{opacity:0;-webkit-transform:translate(-50%,-100%);transform:translate(-50%,-100%)}.el-badge{position:relative;vertical-align:middle;display:inline-block}.el-badge__content{background-color:#F56C6C;border-radius:10px;color:#FFF;display:inline-block;font-size:12px;height:18px;line-height:18px;padding:0 6px;text-align:center;white-space:nowrap;border:1px solid #FFF}.el-badge__content.is-fixed{position:absolute;top:0;right:10px;-webkit-transform:translateY(-50%) translateX(100%);transform:translateY(-50%) translateX(100%)}.el-rate__icon,.el-rate__item{position:relative;display:inline-block}.el-badge__content.is-fixed.is-dot{right:5px}.el-badge__content.is-dot{height:8px;width:8px;padding:0;right:0;border-radius:50%}.el-badge__content--primary{background-color:#409EFF}.el-badge__content--success{background-color:#67C23A}.el-badge__content--warning{background-color:#E6A23C}.el-badge__content--info{background-color:#909399}.el-badge__content--danger{background-color:#F56C6C}.el-card{border:1px solid #EBEEF5;background-color:#FFF;color:#303133;-webkit-transition:.3s;transition:.3s}.el-card.is-always-shadow,.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-card__header{padding:18px 20px;border-bottom:1px solid #EBEEF5;-webkit-box-sizing:border-box;box-sizing:border-box}.el-card__body{padding:20px}.el-rate{height:20px;line-height:1}.el-rate__item{font-size:0;vertical-align:middle}.el-rate__icon{font-size:18px;margin-right:6px;color:#C0C4CC;-webkit-transition:.3s;transition:.3s}.el-rate__decimal,.el-rate__icon .path2{position:absolute;top:0;left:0}.el-rate__icon.hover{-webkit-transform:scale(1.15);transform:scale(1.15)}.el-rate__decimal{display:inline-block;overflow:hidden}.el-step.is-vertical,.el-steps{display:-webkit-box;display:-ms-flexbox}.el-rate__text{font-size:14px;vertical-align:middle}.el-steps{display:flex}.el-steps--simple{padding:13px 8%;border-radius:4px;background:#F5F7FA}.el-steps--horizontal{white-space:nowrap}.el-steps--vertical{height:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column;flex-flow:column}.el-step{position:relative;-ms-flex-negative:1;flex-shrink:1}.el-step:last-of-type .el-step__line{display:none}.el-step:last-of-type.is-flex{-ms-flex-preferred-size:auto!important;flex-basis:auto!important;-ms-flex-negative:0;flex-shrink:0;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.el-step:last-of-type .el-step__description,.el-step:last-of-type .el-step__main{padding-right:0}.el-step__head{position:relative;width:100%}.el-step__head.is-process{color:#303133;border-color:#303133}.el-step__head.is-wait{color:#C0C4CC;border-color:#C0C4CC}.el-step__head.is-success{color:#67C23A;border-color:#67C23A}.el-step__head.is-error{color:#F56C6C;border-color:#F56C6C}.el-step__head.is-finish{color:#409EFF;border-color:#409EFF}.el-step__icon{position:relative;z-index:1;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:24px;height:24px;font-size:14px;-webkit-box-sizing:border-box;box-sizing:border-box;background:#FFF;-webkit-transition:.15s ease-out;transition:.15s ease-out}.el-step__icon.is-text{border-radius:50%;border:2px solid;border-color:inherit}.el-step__icon.is-icon{width:40px}.el-step__icon-inner{display:inline-block;user-select:none;text-align:center;font-weight:700;line-height:1;color:inherit}.el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:25px;font-weight:400}.el-step__icon-inner.is-status{-webkit-transform:translateY(1px);transform:translateY(1px)}.el-step__line{position:absolute;border-color:inherit;background-color:#C0C4CC}.el-step__line-inner{display:block;border-width:1px;border-style:solid;border-color:inherit;-webkit-transition:.15s ease-out;transition:.15s ease-out;-webkit-box-sizing:border-box;box-sizing:border-box;width:0;height:0}.el-step__main{white-space:normal;text-align:left}.el-step__title{font-size:16px;line-height:38px}.el-step__title.is-process{font-weight:700;color:#303133}.el-step__title.is-wait{color:#C0C4CC}.el-step__title.is-success{color:#67C23A}.el-step__title.is-error{color:#F56C6C}.el-step__title.is-finish{color:#409EFF}.el-step__description{padding-right:10%;margin-top:-5px;font-size:12px;line-height:20px;font-weight:400}.el-step__description.is-process{color:#303133}.el-step__description.is-wait{color:#C0C4CC}.el-step__description.is-success{color:#67C23A}.el-step__description.is-error{color:#F56C6C}.el-step__description.is-finish{color:#409EFF}.el-step.is-horizontal{display:inline-block}.el-step.is-horizontal .el-step__line{height:2px;top:11px;left:0;right:0}.el-step.is-vertical{display:flex}.el-step.is-vertical .el-step__head{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;width:24px}.el-step.is-vertical .el-step__main{padding-left:10px;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.el-step.is-vertical .el-step__title{line-height:24px;padding-bottom:8px}.el-step.is-vertical .el-step__line{width:2px;top:0;bottom:0;left:11px}.el-step.is-vertical .el-step__icon.is-icon{width:24px}.el-step.is-center .el-step__head,.el-step.is-center .el-step__main{text-align:center}.el-step.is-center .el-step__description{padding-left:20%;padding-right:20%}.el-step.is-center .el-step__line{left:50%;right:-50%}.el-step.is-simple{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-step.is-simple .el-step__head{width:auto;font-size:0;padding-right:10px}.el-step.is-simple .el-step__icon{background:0 0;width:16px;height:16px;font-size:12px}.el-step.is-simple .el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:18px}.el-step.is-simple .el-step__icon-inner.is-status{-webkit-transform:scale(.8) translateY(1px);transform:scale(.8) translateY(1px)}.el-step.is-simple .el-step__main{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.el-step.is-simple .el-step__title{font-size:16px;line-height:20px}.el-step.is-simple:not(:last-of-type) .el-step__title{max-width:50%;word-break:break-all}.el-step.is-simple .el-step__arrow{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-step.is-simple .el-step__arrow::after,.el-step.is-simple .el-step__arrow::before{content:'';display:inline-block;position:absolute;height:15px;width:1px;background:#C0C4CC}.el-step.is-simple .el-step__arrow::before{-webkit-transform:rotate(-45deg) translateY(-4px);transform:rotate(-45deg) translateY(-4px);-webkit-transform-origin:0 0;transform-origin:0 0}.el-step.is-simple .el-step__arrow::after{-webkit-transform:rotate(45deg) translateY(4px);transform:rotate(45deg) translateY(4px);-webkit-transform-origin:100% 100%;transform-origin:100% 100%}.el-step.is-simple:last-of-type .el-step__arrow{display:none}.el-carousel{position:relative}.el-carousel--horizontal{overflow-x:hidden}.el-carousel--vertical{overflow-y:hidden}.el-carousel__container{position:relative;height:300px}.el-carousel__arrow{border:none;outline:0;padding:0;margin:0;height:36px;width:36px;cursor:pointer;-webkit-transition:.3s;transition:.3s;border-radius:50%;background-color:rgba(31,45,61,.11);color:#FFF;position:absolute;top:50%;z-index:10;-webkit-transform:translateY(-50%);transform:translateY(-50%);text-align:center;font-size:12px}.el-carousel__arrow--left{left:16px}.el-carousel__arrow--right{right:16px}.el-carousel__arrow:hover{background-color:rgba(31,45,61,.23)}.el-carousel__arrow i{cursor:pointer}.el-carousel__indicators{position:absolute;list-style:none;margin:0;padding:0;z-index:2}.el-carousel__indicators--horizontal{bottom:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.el-carousel__indicators--vertical{right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-carousel__indicators--outside{bottom:26px;text-align:center;position:static;-webkit-transform:none;transform:none}.el-carousel__indicators--outside .el-carousel__indicator:hover button{opacity:.64}.el-carousel__indicators--outside button{background-color:#C0C4CC;opacity:.24}.el-carousel__indicators--labels{left:0;right:0;-webkit-transform:none;transform:none;text-align:center}.el-carousel__indicators--labels .el-carousel__button{height:auto;width:auto;padding:2px 18px;font-size:12px}.el-carousel__indicators--labels .el-carousel__indicator{padding:6px 4px}.el-carousel__indicator{background-color:transparent;cursor:pointer}.el-carousel__indicator:hover button{opacity:.72}.el-carousel__indicator--horizontal{display:inline-block;padding:12px 4px}.el-carousel__indicator--vertical{padding:4px 12px}.el-carousel__indicator--vertical .el-carousel__button{width:2px;height:15px}.el-carousel__indicator.is-active button{opacity:1}.el-carousel__button{display:block;opacity:.48;width:30px;height:2px;background-color:#FFF;border:none;outline:0;padding:0;margin:0;cursor:pointer;-webkit-transition:.3s;transition:.3s}.el-carousel__item,.el-carousel__mask{height:100%;top:0;left:0;position:absolute}.carousel-arrow-left-enter,.carousel-arrow-left-leave-active{-webkit-transform:translateY(-50%) translateX(-10px);transform:translateY(-50%) translateX(-10px);opacity:0}.carousel-arrow-right-enter,.carousel-arrow-right-leave-active{-webkit-transform:translateY(-50%) translateX(10px);transform:translateY(-50%) translateX(10px);opacity:0}.el-carousel__item{width:100%;display:inline-block;overflow:hidden;z-index:0}.el-carousel__item.is-active{z-index:2}.el-carousel__item.is-animating{-webkit-transition:-webkit-transform .4s ease-in-out;transition:-webkit-transform .4s ease-in-out;transition:transform .4s ease-in-out;transition:transform .4s ease-in-out,-webkit-transform .4s ease-in-out}.el-carousel__item--card{width:50%;-webkit-transition:-webkit-transform .4s ease-in-out;transition:-webkit-transform .4s ease-in-out;transition:transform .4s ease-in-out;transition:transform .4s ease-in-out,-webkit-transform .4s ease-in-out}.el-carousel__item--card.is-in-stage{cursor:pointer;z-index:1}.el-carousel__item--card.is-in-stage.is-hover .el-carousel__mask,.el-carousel__item--card.is-in-stage:hover .el-carousel__mask{opacity:.12}.el-carousel__item--card.is-active{z-index:2}.el-carousel__mask{width:100%;background-color:#FFF;opacity:.24;-webkit-transition:.2s;transition:.2s}.el-fade-in-enter,.el-fade-in-leave-active,.el-fade-in-linear-enter,.el-fade-in-linear-leave,.el-fade-in-linear-leave-active,.fade-in-linear-enter,.fade-in-linear-leave,.fade-in-linear-leave-active{opacity:0}.fade-in-linear-enter-active,.fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.el-fade-in-enter-active,.el-fade-in-leave-active{-webkit-transition:all .3s cubic-bezier(.55,0,.1,1);transition:all .3s cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{-webkit-transition:all .3s cubic-bezier(.55,0,.1,1);transition:all .3s cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter,.el-zoom-in-center-leave-active{opacity:0;-webkit-transform:scaleX(0);transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-webkit-transform-origin:center top;transform-origin:center top}.el-zoom-in-top-enter,.el-zoom-in-top-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-webkit-transform-origin:center bottom;transform-origin:center bottom}.el-zoom-in-bottom-enter,.el-zoom-in-bottom-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;-webkit-transform:scale(1,1);transform:scale(1,1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-webkit-transform-origin:top left;transform-origin:top left}.el-zoom-in-left-enter,.el-zoom-in-left-leave-active{opacity:0;-webkit-transform:scale(.45,.45);transform:scale(.45,.45)}.collapse-transition{-webkit-transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out;transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out}.horizontal-collapse-transition{-webkit-transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out;transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{-webkit-transition:all 1s;transition:all 1s}.el-list-enter,.el-list-leave-active{opacity:0;-webkit-transform:translateY(-30px);transform:translateY(-30px)}.el-opacity-transition{-webkit-transition:opacity .3s cubic-bezier(.55,0,.1,1);transition:opacity .3s cubic-bezier(.55,0,.1,1)}.el-collapse{border-top:1px solid #EBEEF5;border-bottom:1px solid #EBEEF5}.el-collapse-item.is-disabled .el-collapse-item__header{color:#bbb;cursor:not-allowed}.el-collapse-item__header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:48px;line-height:48px;background-color:#FFF;color:#303133;cursor:pointer;border-bottom:1px solid #EBEEF5;font-size:13px;font-weight:500;-webkit-transition:border-bottom-color .3s;transition:border-bottom-color .3s;outline:0}.el-collapse-item__arrow{margin:0 8px 0 auto;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;font-weight:300}.el-collapse-item__arrow.is-active{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-collapse-item__header.focusing:focus:not(:hover){color:#409EFF}.el-collapse-item__header.is-active{border-bottom-color:transparent}.el-collapse-item__wrap{will-change:height;background-color:#FFF;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;border-bottom:1px solid #EBEEF5}.el-cascader__tags,.el-tag{-webkit-box-sizing:border-box}.el-collapse-item__content{padding-bottom:25px;font-size:13px;color:#303133;line-height:1.769230769230769}.el-collapse-item:last-child{margin-bottom:-1px}.el-popper .popper__arrow,.el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03));filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.el-popper .popper__arrow::after{content:" ";border-width:6px}.el-popper[x-placement^=top]{margin-bottom:12px}.el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#EBEEF5;border-bottom-width:0}.el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#FFF;border-bottom-width:0}.el-popper[x-placement^=bottom]{margin-top:12px}.el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#EBEEF5}.el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#FFF}.el-popper[x-placement^=right]{margin-left:12px}.el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#EBEEF5;border-left-width:0}.el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#FFF;border-left-width:0}.el-popper[x-placement^=left]{margin-right:12px}.el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#EBEEF5}.el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#FFF}.el-tag{background-color:#ecf5ff;border-color:#d9ecff;display:inline-block;height:32px;padding:0 10px;line-height:30px;font-size:12px;color:#409EFF;border-width:1px;border-style:solid;border-radius:4px;box-sizing:border-box;white-space:nowrap}.el-tag.is-hit{border-color:#409EFF}.el-tag .el-tag__close{color:#409eff}.el-tag .el-tag__close:hover{color:#FFF;background-color:#409eff}.el-tag.el-tag--info{background-color:#f4f4f5;border-color:#e9e9eb;color:#909399}.el-tag.el-tag--info.is-hit{border-color:#909399}.el-tag.el-tag--info .el-tag__close{color:#909399}.el-tag.el-tag--info .el-tag__close:hover{color:#FFF;background-color:#909399}.el-tag.el-tag--success{background-color:#f0f9eb;border-color:#e1f3d8;color:#67c23a}.el-tag.el-tag--success.is-hit{border-color:#67C23A}.el-tag.el-tag--success .el-tag__close{color:#67c23a}.el-tag.el-tag--success .el-tag__close:hover{color:#FFF;background-color:#67c23a}.el-tag.el-tag--warning{background-color:#fdf6ec;border-color:#faecd8;color:#e6a23c}.el-tag.el-tag--warning.is-hit{border-color:#E6A23C}.el-tag.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag.el-tag--warning .el-tag__close:hover{color:#FFF;background-color:#e6a23c}.el-tag.el-tag--danger{background-color:#fef0f0;border-color:#fde2e2;color:#f56c6c}.el-tag.el-tag--danger.is-hit{border-color:#F56C6C}.el-tag.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag.el-tag--danger .el-tag__close:hover{color:#FFF;background-color:#f56c6c}.el-tag .el-icon-close{border-radius:50%;text-align:center;position:relative;cursor:pointer;font-size:12px;height:16px;width:16px;line-height:16px;vertical-align:middle;top:-1px;right:-5px}.el-tag .el-icon-close::before{display:block}.el-tag--dark{background-color:#409eff;border-color:#409eff;color:#fff}.el-tag--dark.is-hit{border-color:#409EFF}.el-tag--dark .el-tag__close{color:#fff}.el-tag--dark .el-tag__close:hover{color:#FFF;background-color:#66b1ff}.el-tag--dark.el-tag--info{background-color:#909399;border-color:#909399;color:#fff}.el-tag--dark.el-tag--info.is-hit{border-color:#909399}.el-tag--dark.el-tag--info .el-tag__close{color:#fff}.el-tag--dark.el-tag--info .el-tag__close:hover{color:#FFF;background-color:#a6a9ad}.el-tag--dark.el-tag--success{background-color:#67c23a;border-color:#67c23a;color:#fff}.el-tag--dark.el-tag--success.is-hit{border-color:#67C23A}.el-tag--dark.el-tag--success .el-tag__close{color:#fff}.el-tag--dark.el-tag--success .el-tag__close:hover{color:#FFF;background-color:#85ce61}.el-tag--dark.el-tag--warning{background-color:#e6a23c;border-color:#e6a23c;color:#fff}.el-tag--dark.el-tag--warning.is-hit{border-color:#E6A23C}.el-tag--dark.el-tag--warning .el-tag__close{color:#fff}.el-tag--dark.el-tag--warning .el-tag__close:hover{color:#FFF;background-color:#ebb563}.el-tag--dark.el-tag--danger{background-color:#f56c6c;border-color:#f56c6c;color:#fff}.el-tag--dark.el-tag--danger.is-hit{border-color:#F56C6C}.el-tag--dark.el-tag--danger .el-tag__close{color:#fff}.el-tag--dark.el-tag--danger .el-tag__close:hover{color:#FFF;background-color:#f78989}.el-tag--plain{background-color:#fff;border-color:#b3d8ff;color:#409eff}.el-tag--plain.is-hit{border-color:#409EFF}.el-tag--plain .el-tag__close{color:#409eff}.el-tag--plain .el-tag__close:hover{color:#FFF;background-color:#409eff}.el-tag--plain.el-tag--info{background-color:#fff;border-color:#d3d4d6;color:#909399}.el-tag--plain.el-tag--info.is-hit{border-color:#909399}.el-tag--plain.el-tag--info .el-tag__close{color:#909399}.el-tag--plain.el-tag--info .el-tag__close:hover{color:#FFF;background-color:#909399}.el-tag--plain.el-tag--success{background-color:#fff;border-color:#c2e7b0;color:#67c23a}.el-tag--plain.el-tag--success.is-hit{border-color:#67C23A}.el-tag--plain.el-tag--success .el-tag__close{color:#67c23a}.el-tag--plain.el-tag--success .el-tag__close:hover{color:#FFF;background-color:#67c23a}.el-tag--plain.el-tag--warning{background-color:#fff;border-color:#f5dab1;color:#e6a23c}.el-tag--plain.el-tag--warning.is-hit{border-color:#E6A23C}.el-tag--plain.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag--plain.el-tag--warning .el-tag__close:hover{color:#FFF;background-color:#e6a23c}.el-tag--plain.el-tag--danger{background-color:#fff;border-color:#fbc4c4;color:#f56c6c}.el-tag--plain.el-tag--danger.is-hit{border-color:#F56C6C}.el-tag--plain.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag--plain.el-tag--danger .el-tag__close:hover{color:#FFF;background-color:#f56c6c}.el-tag--medium{height:28px;line-height:26px}.el-tag--medium .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--small{height:24px;padding:0 8px;line-height:22px}.el-tag--small .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--mini{height:20px;padding:0 5px;line-height:19px}.el-tag--mini .el-icon-close{margin-left:-3px;-webkit-transform:scale(.7);transform:scale(.7)}.el-cascader{display:inline-block;position:relative;font-size:14px;line-height:40px}.el-cascader:not(.is-disabled):hover .el-input__inner{cursor:pointer;border-color:#C0C4CC}.el-cascader .el-input .el-input__inner:focus,.el-cascader .el-input.is-focus .el-input__inner{border-color:#409EFF}.el-cascader .el-input{cursor:pointer}.el-cascader .el-input .el-input__inner{text-overflow:ellipsis}.el-cascader .el-input .el-icon-arrow-down{-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;font-size:14px}.el-cascader .el-input .el-icon-arrow-down.is-reverse{-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg)}.el-cascader .el-input .el-icon-circle-close:hover{color:#909399}.el-cascader--medium{font-size:14px;line-height:36px}.el-cascader--small{font-size:13px;line-height:32px}.el-cascader--mini{font-size:12px;line-height:28px}.el-cascader.is-disabled .el-cascader__label{z-index:2;color:#C0C4CC}.el-cascader__dropdown{margin:5px 0;font-size:14px;background:#FFF;border:1px solid #E4E7ED;border-radius:4px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-cascader__tags{position:absolute;left:0;right:30px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;line-height:normal;text-align:left;box-sizing:border-box}.el-cascader__tags .el-tag{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:100%;margin:2px 0 2px 6px;text-overflow:ellipsis;background:#f0f2f5}.el-cascader__tags .el-tag:not(.is-hit){border-color:transparent}.el-cascader__tags .el-tag>span{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;text-overflow:ellipsis}.el-cascader__tags .el-tag .el-icon-close{-webkit-box-flex:0;-ms-flex:none;flex:none;background-color:#C0C4CC;color:#FFF}.el-cascader__tags .el-tag .el-icon-close:hover{background-color:#909399}.el-cascader__suggestion-panel{border-radius:4px}.el-cascader__suggestion-list{max-height:204px;margin:0;padding:6px 0;font-size:14px;color:#606266;text-align:center}.el-cascader__suggestion-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:34px;padding:0 15px;text-align:left;outline:0;cursor:pointer}.el-cascader__suggestion-item:focus,.el-cascader__suggestion-item:hover{background:#F5F7FA}.el-cascader__suggestion-item.is-checked{color:#409EFF;font-weight:700}.el-cascader__suggestion-item>span{margin-right:10px}.el-cascader__empty-text{margin:10px 0;color:#C0C4CC}.el-cascader__search-input{-webkit-box-flex:1;-ms-flex:1;flex:1;height:24px;min-width:60px;margin:2px 0 2px 15px;padding:0;color:#606266;border:none;outline:0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-cascader__search-input::-webkit-input-placeholder{color:#C0C4CC}.el-cascader__search-input:-ms-input-placeholder{color:#C0C4CC}.el-cascader__search-input::-ms-input-placeholder{color:#C0C4CC}.el-cascader__search-input::placeholder{color:#C0C4CC}.el-color-predefine{display:-webkit-box;display:-ms-flexbox;display:flex;font-size:12px;margin-top:8px;width:280px}.el-color-predefine__colors{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-wrap:wrap;flex-wrap:wrap}.el-color-predefine__color-selector{margin:0 0 8px 8px;width:20px;height:20px;border-radius:4px;cursor:pointer}.el-color-predefine__color-selector:nth-child(10n+1){margin-left:0}.el-color-predefine__color-selector.selected{-webkit-box-shadow:0 0 3px 2px #409EFF;box-shadow:0 0 3px 2px #409EFF}.el-color-predefine__color-selector>div{display:-webkit-box;display:-ms-flexbox;display:flex;height:100%;border-radius:3px}.el-color-predefine__color-selector.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-hue-slider{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;width:280px;height:12px;background-color:red;padding:0 2px}.el-color-hue-slider__bar{position:relative;background:-webkit-gradient(linear,left top,right top,from(red),color-stop(17%,#ff0),color-stop(33%,#0f0),color-stop(50%,#0ff),color-stop(67%,#00f),color-stop(83%,#f0f),to(red));background:linear-gradient(to right,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%);height:100%}.el-color-hue-slider__thumb{position:absolute;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;-webkit-box-shadow:0 0 2px rgba(0,0,0,.6);box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-hue-slider.is-vertical{width:12px;height:180px;padding:2px 0}.el-color-hue-slider.is-vertical .el-color-hue-slider__bar{background:-webkit-gradient(linear,left top,left bottom,from(red),color-stop(17%,#ff0),color-stop(33%,#0f0),color-stop(50%,#0ff),color-stop(67%,#00f),color-stop(83%,#f0f),to(red));background:linear-gradient(to bottom,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%)}.el-color-hue-slider.is-vertical .el-color-hue-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-svpanel{position:relative;width:280px;height:180px}.el-color-svpanel__black,.el-color-svpanel__white{position:absolute;top:0;left:0;right:0;bottom:0}.el-color-svpanel__white{background:-webkit-gradient(linear,left top,right top,from(#fff),to(rgba(255,255,255,0)));background:linear-gradient(to right,#fff,rgba(255,255,255,0))}.el-color-svpanel__black{background:-webkit-gradient(linear,left bottom,left top,from(#000),to(rgba(0,0,0,0)));background:linear-gradient(to top,#000,rgba(0,0,0,0))}.el-color-svpanel__cursor{position:absolute}.el-color-svpanel__cursor>div{cursor:head;width:4px;height:4px;-webkit-box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);border-radius:50%;-webkit-transform:translate(-2px,-2px);transform:translate(-2px,-2px)}.el-color-alpha-slider{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;width:280px;height:12px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-alpha-slider__bar{position:relative;background:-webkit-gradient(linear,left top,right top,from(rgba(255,255,255,0)),to(white));background:linear-gradient(to right,rgba(255,255,255,0) 0,#fff 100%);height:100%}.el-color-alpha-slider__thumb{position:absolute;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;-webkit-box-shadow:0 0 2px rgba(0,0,0,.6);box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-alpha-slider.is-vertical{width:20px;height:180px}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__bar{background:-webkit-gradient(linear,left top,left bottom,from(rgba(255,255,255,0)),to(white));background:linear-gradient(to bottom,rgba(255,255,255,0) 0,#fff 100%)}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-dropdown{width:300px}.el-color-dropdown__main-wrapper{margin-bottom:6px}.el-color-dropdown__main-wrapper::after{content:"";display:table;clear:both}.el-color-dropdown__btns{margin-top:6px;text-align:right}.el-color-dropdown__value{float:left;line-height:26px;font-size:12px;color:#000;width:160px}.el-color-dropdown__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-color-dropdown__btn[disabled]{color:#ccc;cursor:not-allowed}.el-color-dropdown__btn:hover{color:#409EFF;border-color:#409EFF}.el-color-dropdown__link-btn{cursor:pointer;color:#409EFF;text-decoration:none;padding:15px;font-size:12px}.el-color-dropdown__link-btn:hover{color:tint(#409EFF,20%)}.el-color-picker{display:inline-block;position:relative;line-height:normal;height:40px}.el-color-picker.is-disabled .el-color-picker__trigger{cursor:not-allowed}.el-color-picker--medium{height:36px}.el-color-picker--medium .el-color-picker__trigger{height:36px;width:36px}.el-color-picker--medium .el-color-picker__mask{height:34px;width:34px}.el-color-picker--small{height:32px}.el-color-picker--small .el-color-picker__trigger{height:32px;width:32px}.el-color-picker--small .el-color-picker__mask{height:30px;width:30px}.el-color-picker--small .el-color-picker__empty,.el-color-picker--small .el-color-picker__icon{-webkit-transform:translate3d(-50%,-50%,0) scale(.8);transform:translate3d(-50%,-50%,0) scale(.8)}.el-color-picker--mini{height:28px}.el-color-picker--mini .el-color-picker__trigger{height:28px;width:28px}.el-color-picker--mini .el-color-picker__mask{height:26px;width:26px}.el-color-picker--mini .el-color-picker__empty,.el-color-picker--mini .el-color-picker__icon{-webkit-transform:translate3d(-50%,-50%,0) scale(.8);transform:translate3d(-50%,-50%,0) scale(.8)}.el-color-picker__mask{height:38px;width:38px;border-radius:4px;position:absolute;top:1px;left:1px;z-index:1;cursor:not-allowed;background-color:rgba(255,255,255,.7)}.el-color-picker__trigger{display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;height:40px;width:40px;padding:4px;border:1px solid #e6e6e6;border-radius:4px;font-size:0;position:relative;cursor:pointer}.el-color-picker__color{position:relative;display:block;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid #999;border-radius:2px;width:100%;height:100%;text-align:center}.el-color-picker__color.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-picker__color-inner{position:absolute;left:0;top:0;right:0;bottom:0}.el-color-picker__empty,.el-color-picker__icon{top:50%;left:50%;font-size:12px;position:absolute}.el-color-picker__empty{color:#999;-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0)}.el-color-picker__icon{display:inline-block;width:100%;-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0);color:#FFF;text-align:center}.el-color-picker__panel{position:absolute;z-index:10;padding:6px;-webkit-box-sizing:content-box;box-sizing:content-box;background-color:#FFF;border:1px solid #EBEEF5;border-radius:4px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-textarea{position:relative;display:inline-block;width:100%;vertical-align:bottom;font-size:14px}.el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:inherit;color:#606266;background-color:#FFF;background-image:none;border:1px solid #DCDFE6;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.el-textarea__inner::-webkit-input-placeholder{color:#C0C4CC}.el-textarea__inner:-ms-input-placeholder{color:#C0C4CC}.el-textarea__inner::-ms-input-placeholder{color:#C0C4CC}.el-textarea__inner::placeholder{color:#C0C4CC}.el-textarea__inner:hover{border-color:#C0C4CC}.el-textarea__inner:focus{outline:0;border-color:#409EFF}.el-textarea .el-input__count{color:#909399;background:#FFF;position:absolute;font-size:12px;bottom:5px;right:10px}.el-textarea.is-disabled .el-textarea__inner{background-color:#F5F7FA;border-color:#E4E7ED;color:#C0C4CC;cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#C0C4CC}.el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder{color:#C0C4CC}.el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#C0C4CC}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:#C0C4CC}.el-textarea.is-exceed .el-textarea__inner{border-color:#F56C6C}.el-textarea.is-exceed .el-input__count{color:#F56C6C}.el-input{position:relative;font-size:14px;display:inline-block;width:100%}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.el-input::-webkit-scrollbar-corner{background:#fff}.el-input::-webkit-scrollbar-track{background:#fff}.el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.el-input .el-input__clear{color:#C0C4CC;font-size:14px;cursor:pointer;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1)}.el-input .el-input__clear:hover{color:#909399}.el-input .el-input__count{height:100%;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#909399;font-size:12px}.el-input .el-input__count .el-input__count-inner{background:#FFF;line-height:initial;display:inline-block;padding:0 5px}.el-input__inner{-webkit-appearance:none;background-color:#FFF;background-image:none;border-radius:4px;border:1px solid #DCDFE6;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;display:inline-block;font-size:inherit;height:40px;line-height:40px;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%}.el-input__prefix,.el-input__suffix{position:absolute;top:0;-webkit-transition:all .3s;height:100%;color:#C0C4CC;text-align:center}.el-input__inner::-webkit-input-placeholder{color:#C0C4CC}.el-input__inner:-ms-input-placeholder{color:#C0C4CC}.el-input__inner::-ms-input-placeholder{color:#C0C4CC}.el-input__inner::placeholder{color:#C0C4CC}.el-input__inner:hover{border-color:#C0C4CC}.el-input.is-active .el-input__inner,.el-input__inner:focus{border-color:#409EFF;outline:0}.el-input__suffix{right:5px;transition:all .3s}.el-input__suffix-inner{pointer-events:all}.el-input__prefix{left:5px;transition:all .3s}.el-input__icon{height:100%;width:25px;text-align:center;-webkit-transition:all .3s;transition:all .3s;line-height:40px}.el-input__icon:after{content:'';height:100%;width:0;display:inline-block;vertical-align:middle}.el-input__validateIcon{pointer-events:none}.el-input.is-disabled .el-input__inner{background-color:#F5F7FA;border-color:#E4E7ED;color:#C0C4CC;cursor:not-allowed}.el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#C0C4CC}.el-input.is-disabled .el-input__inner:-ms-input-placeholder{color:#C0C4CC}.el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#C0C4CC}.el-input.is-disabled .el-input__inner::placeholder{color:#C0C4CC}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-link,.el-transfer-panel__filter .el-icon-circle-close{cursor:pointer}.el-input.is-exceed .el-input__inner{border-color:#F56C6C}.el-input.is-exceed .el-input__suffix .el-input__count{color:#F56C6C}.el-input--suffix .el-input__inner{padding-right:30px}.el-input--prefix .el-input__inner{padding-left:30px}.el-input--medium{font-size:14px}.el-input--medium .el-input__inner{height:36px;line-height:36px}.el-input--medium .el-input__icon{line-height:36px}.el-input--small{font-size:13px}.el-input--small .el-input__inner{height:32px;line-height:32px}.el-input--small .el-input__icon{line-height:32px}.el-input--mini{font-size:12px}.el-input--mini .el-input__inner{height:28px;line-height:28px}.el-input--mini .el-input__icon{line-height:28px}.el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate;border-spacing:0}.el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.el-input-group__append,.el-input-group__prepend{background-color:#F5F7FA;color:#909399;vertical-align:middle;display:table-cell;position:relative;border:1px solid #DCDFE6;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.el-input-group--prepend .el-input__inner,.el-input-group__append{border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--append .el-input__inner,.el-input-group__prepend{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:0}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:-10px -20px}.el-input-group__append button.el-button,.el-input-group__append div.el-select .el-input__inner,.el-input-group__append div.el-select:hover .el-input__inner,.el-input-group__prepend button.el-button,.el-input-group__prepend div.el-select .el-input__inner,.el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{border-right:0}.el-input-group__append{border-left:0}.el-input-group--append .el-select .el-input.is-focus .el-input__inner,.el-input-group--prepend .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input__inner::-ms-clear{display:none;width:0;height:0}.el-transfer{font-size:14px}.el-transfer__buttons{display:inline-block;vertical-align:middle;padding:0 30px}.el-transfer__button{display:block;margin:0 auto;padding:10px;border-radius:50%;color:#FFF;background-color:#409EFF;font-size:0}.el-transfer-panel__item+.el-transfer-panel__item,.el-transfer__button [class*=el-icon-]+span{margin-left:0}.el-transfer__button.is-with-texts{border-radius:4px}.el-transfer__button.is-disabled,.el-transfer__button.is-disabled:hover{border:1px solid #DCDFE6;background-color:#F5F7FA;color:#C0C4CC}.el-transfer__button:first-child{margin-bottom:10px}.el-transfer__button:nth-child(2){margin:0}.el-transfer__button i,.el-transfer__button span{font-size:14px}.el-transfer-panel{border:1px solid #EBEEF5;border-radius:4px;overflow:hidden;background:#FFF;display:inline-block;vertical-align:middle;width:200px;max-height:100%;-webkit-box-sizing:border-box;box-sizing:border-box;position:relative}.el-transfer-panel__body{height:246px}.el-transfer-panel__body.is-with-footer{padding-bottom:40px}.el-transfer-panel__list{margin:0;padding:6px 0;list-style:none;height:246px;overflow:auto;-webkit-box-sizing:border-box;box-sizing:border-box}.el-transfer-panel__list.is-filterable{height:194px;padding-top:0}.el-transfer-panel__item{height:30px;line-height:30px;padding-left:15px;display:block!important}.el-transfer-panel__item.el-checkbox{color:#606266}.el-transfer-panel__item:hover{color:#409EFF}.el-transfer-panel__item.el-checkbox .el-checkbox__label{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;-webkit-box-sizing:border-box;box-sizing:border-box;padding-left:24px;line-height:30px}.el-transfer-panel__item .el-checkbox__input{position:absolute;top:8px}.el-transfer-panel__filter{text-align:center;margin:15px;-webkit-box-sizing:border-box;box-sizing:border-box;display:block;width:auto}.el-transfer-panel__filter .el-input__inner{height:32px;width:100%;font-size:12px;display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:16px;padding-right:10px;padding-left:30px}.el-transfer-panel__filter .el-input__icon{margin-left:5px}.el-transfer-panel .el-transfer-panel__header{height:40px;line-height:40px;background:#F5F7FA;margin:0;padding-left:15px;border-bottom:1px solid #EBEEF5;-webkit-box-sizing:border-box;box-sizing:border-box;color:#000}.el-transfer-panel .el-transfer-panel__header .el-checkbox{display:block;line-height:40px}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label{font-size:16px;color:#303133;font-weight:400}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label span{position:absolute;right:15px;color:#909399;font-size:12px;font-weight:400}.el-divider__text,.el-link{font-weight:500;font-size:14px}.el-transfer-panel .el-transfer-panel__footer{height:40px;background:#FFF;margin:0;padding:0;border-top:1px solid #EBEEF5;position:absolute;bottom:0;left:0;width:100%;z-index:1}.el-transfer-panel .el-transfer-panel__footer::after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-container,.el-timeline-item__node{display:-webkit-box;display:-ms-flexbox}.el-transfer-panel .el-transfer-panel__footer .el-checkbox{padding-left:20px;color:#606266}.el-transfer-panel .el-transfer-panel__empty{margin:0;height:30px;line-height:30px;padding:6px 15px 0;color:#909399;text-align:center}.el-transfer-panel .el-checkbox__label{padding-left:8px}.el-transfer-panel .el-checkbox__inner{height:14px;width:14px;border-radius:3px}.el-transfer-panel .el-checkbox__inner::after{height:6px;width:3px;left:4px}.el-container{display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-preferred-size:auto;flex-basis:auto;-webkit-box-sizing:border-box;box-sizing:border-box;min-width:0}.el-container.is-vertical,.el-drawer{-webkit-box-orient:vertical;-webkit-box-direction:normal}.el-aside,.el-header{-webkit-box-sizing:border-box}.el-container.is-vertical{-ms-flex-direction:column;flex-direction:column}.el-header{padding:0 20px;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}.el-aside{overflow:auto;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}.el-footer,.el-main{-webkit-box-sizing:border-box}.el-main{display:block;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-preferred-size:auto;flex-basis:auto;overflow:auto;box-sizing:border-box;padding:20px}.el-footer{padding:0 20px;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}.el-timeline{margin:0;font-size:14px;list-style:none}.el-timeline .el-timeline-item:last-child .el-timeline-item__tail{display:none}.el-timeline-item{position:relative;padding-bottom:20px}.el-timeline-item__wrapper{position:relative;padding-left:28px;top:-3px}.el-timeline-item__tail{position:absolute;left:4px;height:100%;border-left:2px solid #E4E7ED}.el-timeline-item__icon{color:#FFF;font-size:13px}.el-timeline-item__node{position:absolute;background-color:#E4E7ED;border-radius:50%;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-image__error,.el-timeline-item__dot{display:-webkit-box;display:-ms-flexbox}.el-timeline-item__node--normal{left:-1px;width:12px;height:12px}.el-timeline-item__node--large{left:-2px;width:14px;height:14px}.el-timeline-item__node--primary{background-color:#409EFF}.el-timeline-item__node--success{background-color:#67C23A}.el-timeline-item__node--warning{background-color:#E6A23C}.el-timeline-item__node--danger{background-color:#F56C6C}.el-timeline-item__node--info{background-color:#909399}.el-timeline-item__dot{position:absolute;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-timeline-item__content{color:#303133}.el-timeline-item__timestamp{color:#909399;line-height:1;font-size:13px}.el-timeline-item__timestamp.is-top{margin-bottom:8px;padding-top:4px}.el-timeline-item__timestamp.is-bottom{margin-top:8px}.el-link{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;vertical-align:middle;position:relative;text-decoration:none;outline:0;padding:0}.el-link.is-underline:hover:after{content:"";position:absolute;left:0;right:0;height:0;bottom:0;border-bottom:1px solid #409EFF}.el-link.el-link--default:after,.el-link.el-link--primary.is-underline:hover:after,.el-link.el-link--primary:after{border-color:#409EFF}.el-link.is-disabled{cursor:not-allowed}.el-link [class*=el-icon-]+span{margin-left:5px}.el-link.el-link--default{color:#606266}.el-link.el-link--default:hover{color:#409EFF}.el-link.el-link--default.is-disabled{color:#C0C4CC}.el-link.el-link--primary{color:#409EFF}.el-link.el-link--primary:hover{color:#66b1ff}.el-link.el-link--primary.is-disabled{color:#a0cfff}.el-link.el-link--danger.is-underline:hover:after,.el-link.el-link--danger:after{border-color:#F56C6C}.el-link.el-link--danger{color:#F56C6C}.el-link.el-link--danger:hover{color:#f78989}.el-link.el-link--danger.is-disabled{color:#fab6b6}.el-link.el-link--success.is-underline:hover:after,.el-link.el-link--success:after{border-color:#67C23A}.el-link.el-link--success{color:#67C23A}.el-link.el-link--success:hover{color:#85ce61}.el-link.el-link--success.is-disabled{color:#b3e19d}.el-link.el-link--warning.is-underline:hover:after,.el-link.el-link--warning:after{border-color:#E6A23C}.el-link.el-link--warning{color:#E6A23C}.el-link.el-link--warning:hover{color:#ebb563}.el-link.el-link--warning.is-disabled{color:#f3d19e}.el-link.el-link--info.is-underline:hover:after,.el-link.el-link--info:after{border-color:#909399}.el-link.el-link--info{color:#909399}.el-link.el-link--info:hover{color:#a6a9ad}.el-link.el-link--info.is-disabled{color:#c8c9cc}.el-divider{background-color:#DCDFE6;position:relative}.el-divider--horizontal{display:block;height:1px;width:100%;margin:24px 0}.el-divider--vertical{display:inline-block;width:1px;height:1em;margin:0 8px;vertical-align:middle;position:relative}.el-divider__text{position:absolute;background-color:#FFF;padding:0 20px;color:#303133}.el-image__error,.el-image__placeholder{background:#F5F7FA}.el-divider__text.is-left{left:20px;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-divider__text.is-center{left:50%;-webkit-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.el-divider__text.is-right{right:20px;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-image__error,.el-image__inner,.el-image__placeholder{width:100%;height:100%}.el-image{position:relative;display:inline-block;overflow:hidden}.el-image__inner{vertical-align:top}.el-image__inner--center{position:relative;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);display:block}.el-image__error{display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:14px;color:#C0C4CC;vertical-align:middle}.el-image__preview{cursor:pointer}.el-image-viewer__wrapper{position:fixed;top:0;right:0;bottom:0;left:0}.el-image-viewer__btn{position:absolute;z-index:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:50%;opacity:.8;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;user-select:none}.el-button,.el-checkbox{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.el-image-viewer__close{top:40px;right:40px;width:40px;height:40px;font-size:24px;color:#fff;background-color:#606266}.el-image-viewer__canvas{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-image-viewer__actions{left:50%;bottom:30px;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:282px;height:44px;padding:0 23px;background-color:#606266;border-color:#fff;border-radius:22px}.el-image-viewer__actions__inner{width:100%;height:100%;text-align:justify;cursor:default;font-size:23px;color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-pack:distribute;justify-content:space-around}.el-image-viewer__next,.el-image-viewer__prev{top:50%;width:44px;height:44px;font-size:24px;color:#fff;background-color:#606266;border-color:#fff}.el-image-viewer__prev{-webkit-transform:translateY(-50%);transform:translateY(-50%);left:40px}.el-image-viewer__next{-webkit-transform:translateY(-50%);transform:translateY(-50%);right:40px;text-indent:2px}.el-image-viewer__mask{position:absolute;width:100%;height:100%;top:0;left:0;opacity:.5;background:#000}.viewer-fade-enter-active{-webkit-animation:viewer-fade-in .3s;animation:viewer-fade-in .3s}.viewer-fade-leave-active{-webkit-animation:viewer-fade-out .3s;animation:viewer-fade-out .3s}@-webkit-keyframes viewer-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes viewer-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes viewer-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes viewer-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}.el-button{display:inline-block;line-height:1;white-space:nowrap;cursor:pointer;background:#FFF;border:1px solid #DCDFE6;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;-webkit-transition:.1s;transition:.1s;font-weight:500;padding:12px 20px;font-size:14px;border-radius:4px}.el-button+.el-button{margin-left:10px}.el-button:focus,.el-button:hover{color:#409EFF;border-color:#c6e2ff;background-color:#ecf5ff}.el-button:active{color:#3a8ee6;border-color:#3a8ee6;outline:0}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon-]+span{margin-left:5px}.el-button.is-plain:focus,.el-button.is-plain:hover{background:#FFF;border-color:#409EFF;color:#409EFF}.el-button.is-active,.el-button.is-plain:active{color:#3a8ee6;border-color:#3a8ee6}.el-button.is-plain:active{background:#FFF;outline:0}.el-button.is-disabled,.el-button.is-disabled:focus,.el-button.is-disabled:hover{color:#C0C4CC;cursor:not-allowed;background-image:none;background-color:#FFF;border-color:#EBEEF5}.el-button.is-disabled.el-button--text{background-color:transparent}.el-button.is-disabled.is-plain,.el-button.is-disabled.is-plain:focus,.el-button.is-disabled.is-plain:hover{background-color:#FFF;border-color:#EBEEF5;color:#C0C4CC}.el-button.is-loading{position:relative;pointer-events:none}.el-button.is-loading:before{pointer-events:none;content:'';position:absolute;left:-1px;top:-1px;right:-1px;bottom:-1px;border-radius:inherit;background-color:rgba(255,255,255,.35)}.el-button.is-round{border-radius:20px;padding:12px 23px}.el-button.is-circle{border-radius:50%;padding:12px}.el-button--primary{color:#FFF;background-color:#409EFF;border-color:#409EFF}.el-button--primary:focus,.el-button--primary:hover{background:#66b1ff;border-color:#66b1ff;color:#FFF}.el-button--primary.is-active,.el-button--primary:active{background:#3a8ee6;border-color:#3a8ee6;color:#FFF}.el-button--primary:active{outline:0}.el-button--primary.is-disabled,.el-button--primary.is-disabled:active,.el-button--primary.is-disabled:focus,.el-button--primary.is-disabled:hover{color:#FFF;background-color:#a0cfff;border-color:#a0cfff}.el-button--primary.is-plain{color:#409EFF;background:#ecf5ff;border-color:#b3d8ff}.el-button--primary.is-plain:focus,.el-button--primary.is-plain:hover{background:#409EFF;border-color:#409EFF;color:#FFF}.el-button--primary.is-plain:active{background:#3a8ee6;border-color:#3a8ee6;color:#FFF;outline:0}.el-button--primary.is-plain.is-disabled,.el-button--primary.is-plain.is-disabled:active,.el-button--primary.is-plain.is-disabled:focus,.el-button--primary.is-plain.is-disabled:hover{color:#8cc5ff;background-color:#ecf5ff;border-color:#d9ecff}.el-button--success{color:#FFF;background-color:#67C23A;border-color:#67C23A}.el-button--success:focus,.el-button--success:hover{background:#85ce61;border-color:#85ce61;color:#FFF}.el-button--success.is-active,.el-button--success:active{background:#5daf34;border-color:#5daf34;color:#FFF}.el-button--success:active{outline:0}.el-button--success.is-disabled,.el-button--success.is-disabled:active,.el-button--success.is-disabled:focus,.el-button--success.is-disabled:hover{color:#FFF;background-color:#b3e19d;border-color:#b3e19d}.el-button--success.is-plain{color:#67C23A;background:#f0f9eb;border-color:#c2e7b0}.el-button--success.is-plain:focus,.el-button--success.is-plain:hover{background:#67C23A;border-color:#67C23A;color:#FFF}.el-button--success.is-plain:active{background:#5daf34;border-color:#5daf34;color:#FFF;outline:0}.el-button--success.is-plain.is-disabled,.el-button--success.is-plain.is-disabled:active,.el-button--success.is-plain.is-disabled:focus,.el-button--success.is-plain.is-disabled:hover{color:#a4da89;background-color:#f0f9eb;border-color:#e1f3d8}.el-button--warning{color:#FFF;background-color:#E6A23C;border-color:#E6A23C}.el-button--warning:focus,.el-button--warning:hover{background:#ebb563;border-color:#ebb563;color:#FFF}.el-button--warning.is-active,.el-button--warning:active{background:#cf9236;border-color:#cf9236;color:#FFF}.el-button--warning:active{outline:0}.el-button--warning.is-disabled,.el-button--warning.is-disabled:active,.el-button--warning.is-disabled:focus,.el-button--warning.is-disabled:hover{color:#FFF;background-color:#f3d19e;border-color:#f3d19e}.el-button--warning.is-plain{color:#E6A23C;background:#fdf6ec;border-color:#f5dab1}.el-button--warning.is-plain:focus,.el-button--warning.is-plain:hover{background:#E6A23C;border-color:#E6A23C;color:#FFF}.el-button--warning.is-plain:active{background:#cf9236;border-color:#cf9236;color:#FFF;outline:0}.el-button--warning.is-plain.is-disabled,.el-button--warning.is-plain.is-disabled:active,.el-button--warning.is-plain.is-disabled:focus,.el-button--warning.is-plain.is-disabled:hover{color:#f0c78a;background-color:#fdf6ec;border-color:#faecd8}.el-button--danger{color:#FFF;background-color:#F56C6C;border-color:#F56C6C}.el-button--danger:focus,.el-button--danger:hover{background:#f78989;border-color:#f78989;color:#FFF}.el-button--danger.is-active,.el-button--danger:active{background:#dd6161;border-color:#dd6161;color:#FFF}.el-button--danger:active{outline:0}.el-button--danger.is-disabled,.el-button--danger.is-disabled:active,.el-button--danger.is-disabled:focus,.el-button--danger.is-disabled:hover{color:#FFF;background-color:#fab6b6;border-color:#fab6b6}.el-button--danger.is-plain{color:#F56C6C;background:#fef0f0;border-color:#fbc4c4}.el-button--danger.is-plain:focus,.el-button--danger.is-plain:hover{background:#F56C6C;border-color:#F56C6C;color:#FFF}.el-button--danger.is-plain:active{background:#dd6161;border-color:#dd6161;color:#FFF;outline:0}.el-button--danger.is-plain.is-disabled,.el-button--danger.is-plain.is-disabled:active,.el-button--danger.is-plain.is-disabled:focus,.el-button--danger.is-plain.is-disabled:hover{color:#f9a7a7;background-color:#fef0f0;border-color:#fde2e2}.el-button--info{color:#FFF;background-color:#909399;border-color:#909399}.el-button--info:focus,.el-button--info:hover{background:#a6a9ad;border-color:#a6a9ad;color:#FFF}.el-button--info.is-active,.el-button--info:active{background:#82848a;border-color:#82848a;color:#FFF}.el-button--info:active{outline:0}.el-button--info.is-disabled,.el-button--info.is-disabled:active,.el-button--info.is-disabled:focus,.el-button--info.is-disabled:hover{color:#FFF;background-color:#c8c9cc;border-color:#c8c9cc}.el-button--info.is-plain{color:#909399;background:#f4f4f5;border-color:#d3d4d6}.el-button--info.is-plain:focus,.el-button--info.is-plain:hover{background:#909399;border-color:#909399;color:#FFF}.el-button--info.is-plain:active{background:#82848a;border-color:#82848a;color:#FFF;outline:0}.el-button--info.is-plain.is-disabled,.el-button--info.is-plain.is-disabled:active,.el-button--info.is-plain.is-disabled:focus,.el-button--info.is-plain.is-disabled:hover{color:#bcbec2;background-color:#f4f4f5;border-color:#e9e9eb}.el-button--text,.el-button--text.is-disabled,.el-button--text.is-disabled:focus,.el-button--text.is-disabled:hover,.el-button--text:active{border-color:transparent}.el-button--medium{padding:10px 20px;font-size:14px;border-radius:4px}.el-button--mini,.el-button--small{font-size:12px;border-radius:3px}.el-button--medium.is-round{padding:10px 20px}.el-button--medium.is-circle{padding:10px}.el-button--small,.el-button--small.is-round{padding:9px 15px}.el-button--small.is-circle{padding:9px}.el-button--mini,.el-button--mini.is-round{padding:7px 15px}.el-button--mini.is-circle{padding:7px}.el-button--text{color:#409EFF;background:0 0;padding-left:0;padding-right:0}.el-button--text:focus,.el-button--text:hover{color:#66b1ff;border-color:transparent;background-color:transparent}.el-button--text:active{color:#3a8ee6;background-color:transparent}.el-button-group{display:inline-block;vertical-align:middle}.el-button-group::after,.el-button-group::before{display:table;content:""}.el-button-group::after{clear:both}.el-button-group>.el-button{float:left;position:relative}.el-button-group>.el-button+.el-button{margin-left:0}.el-button-group>.el-button.is-disabled{z-index:1}.el-button-group>.el-button:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.el-button-group>.el-button:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.el-button-group>.el-button:first-child:last-child{border-radius:4px}.el-button-group>.el-button:first-child:last-child.is-round{border-radius:20px}.el-button-group>.el-button:first-child:last-child.is-circle{border-radius:50%}.el-button-group>.el-button:not(:first-child):not(:last-child){border-radius:0}.el-button-group>.el-button:not(:last-child){margin-right:-1px}.el-button-group>.el-button.is-active,.el-button-group>.el-button:active,.el-button-group>.el-button:focus,.el-button-group>.el-button:hover{z-index:1}.el-button-group>.el-dropdown>.el-button{border-top-left-radius:0;border-bottom-left-radius:0;border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-calendar{background-color:#fff}.el-calendar__header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:12px 20px;border-bottom:1px solid #EBEEF5}.el-backtop,.el-page-header{display:-webkit-box;display:-ms-flexbox}.el-calendar__title{color:#000;-ms-flex-item-align:center;align-self:center}.el-calendar__body{padding:12px 20px 35px}.el-calendar-table{table-layout:fixed;width:100%}.el-calendar-table thead th{padding:12px 0;color:#606266;font-weight:400}.el-calendar-table:not(.is-range) td.next,.el-calendar-table:not(.is-range) td.prev{color:#C0C4CC}.el-backtop,.el-calendar-table td.is-today{color:#409EFF}.el-calendar-table td{border-bottom:1px solid #EBEEF5;border-right:1px solid #EBEEF5;vertical-align:top;-webkit-transition:background-color .2s ease;transition:background-color .2s ease}.el-calendar-table td.is-selected{background-color:#F2F8FE}.el-calendar-table tr:first-child td{border-top:1px solid #EBEEF5}.el-calendar-table tr td:first-child{border-left:1px solid #EBEEF5}.el-calendar-table tr.el-calendar-table__row--hide-border td{border-top:none}.el-calendar-table .el-calendar-day{-webkit-box-sizing:border-box;box-sizing:border-box;padding:8px;height:85px}.el-calendar-table .el-calendar-day:hover{cursor:pointer;background-color:#F2F8FE}.el-backtop{position:fixed;background-color:#FFF;width:40px;height:40px;border-radius:50%;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:20px;-webkit-box-shadow:0 0 6px rgba(0,0,0,.12);box-shadow:0 0 6px rgba(0,0,0,.12);cursor:pointer;z-index:5}.el-backtop:hover{background-color:#F2F6FC}.el-page-header{display:flex;line-height:24px}.el-page-header__left{display:-webkit-box;display:-ms-flexbox;display:flex;cursor:pointer;margin-right:40px;position:relative}.el-page-header__left::after{content:"";position:absolute;width:1px;height:16px;right:-20px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);background-color:#DCDFE6}.el-checkbox,.el-checkbox__input{display:inline-block;position:relative;white-space:nowrap}.el-page-header__left .el-icon-back{font-size:18px;margin-right:6px;-ms-flex-item-align:center;align-self:center}.el-page-header__title{font-size:14px;font-weight:500}.el-page-header__content{font-size:18px;color:#303133}.el-checkbox{color:#606266;font-weight:500;font-size:14px;cursor:pointer;user-select:none;margin-right:30px}.el-checkbox-button__inner,.el-radio{font-weight:500;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.el-checkbox.is-bordered{padding:9px 20px 9px 10px;border-radius:4px;border:1px solid #DCDFE6;-webkit-box-sizing:border-box;box-sizing:border-box;line-height:normal;height:40px}.el-checkbox.is-bordered.is-checked{border-color:#409EFF}.el-checkbox.is-bordered.is-disabled{border-color:#EBEEF5;cursor:not-allowed}.el-checkbox.is-bordered+.el-checkbox.is-bordered{margin-left:10px}.el-checkbox.is-bordered.el-checkbox--medium{padding:7px 20px 7px 10px;border-radius:4px;height:36px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__label{line-height:17px;font-size:14px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__inner{height:14px;width:14px}.el-checkbox.is-bordered.el-checkbox--small{padding:5px 15px 5px 10px;border-radius:3px;height:32px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{line-height:15px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner::after{height:6px;width:2px}.el-checkbox.is-bordered.el-checkbox--mini{padding:3px 15px 3px 10px;border-radius:3px;height:28px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__label{line-height:12px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner::after{height:6px;width:2px}.el-checkbox__input{cursor:pointer;outline:0;line-height:1;vertical-align:middle}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:#edf2fc;border-color:#DCDFE6;cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner::after{cursor:not-allowed;border-color:#C0C4CC}.el-checkbox__input.is-disabled .el-checkbox__inner+.el-checkbox__label{cursor:not-allowed}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:#F2F6FC;border-color:#DCDFE6}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after{border-color:#C0C4CC}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:#F2F6FC;border-color:#DCDFE6}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner::before{background-color:#C0C4CC;border-color:#C0C4CC}.el-checkbox__input.is-checked .el-checkbox__inner,.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:#409EFF;border-color:#409EFF}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:#C0C4CC;cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner::after{-webkit-transform:rotate(45deg) scaleY(1);transform:rotate(45deg) scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:#409EFF}.el-checkbox__input.is-focus .el-checkbox__inner{border-color:#409EFF}.el-checkbox__input.is-indeterminate .el-checkbox__inner::before{content:'';position:absolute;display:block;background-color:#FFF;height:2px;-webkit-transform:scale(.5);transform:scale(.5);left:0;right:0;top:5px}.el-checkbox__input.is-indeterminate .el-checkbox__inner::after{display:none}.el-checkbox__inner{display:inline-block;position:relative;border:1px solid #DCDFE6;border-radius:2px;-webkit-box-sizing:border-box;box-sizing:border-box;width:14px;height:14px;background-color:#FFF;z-index:1;-webkit-transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46);transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46)}.el-checkbox__inner:hover{border-color:#409EFF}.el-checkbox__inner::after{-webkit-box-sizing:content-box;box-sizing:content-box;content:"";border:1px solid #FFF;border-left:0;border-top:0;height:7px;left:4px;position:absolute;top:1px;-webkit-transform:rotate(45deg) scaleY(0);transform:rotate(45deg) scaleY(0);width:3px;-webkit-transition:-webkit-transform .15s ease-in .05s;transition:-webkit-transform .15s ease-in .05s;transition:transform .15s ease-in .05s;transition:transform .15s ease-in .05s,-webkit-transform .15s ease-in .05s;-webkit-transform-origin:center;transform-origin:center}.el-checkbox__original{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;z-index:-1}.el-checkbox-button,.el-checkbox-button__inner{display:inline-block;position:relative}.el-checkbox__label{display:inline-block;padding-left:10px;line-height:19px;font-size:14px}.el-checkbox:last-of-type{margin-right:0}.el-checkbox-button__inner{line-height:1;white-space:nowrap;vertical-align:middle;cursor:pointer;background:#FFF;border:1px solid #DCDFE6;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);padding:12px 20px;font-size:14px;border-radius:0}.el-checkbox-button__inner.is-round{padding:12px 20px}.el-checkbox-button__inner:hover{color:#409EFF}.el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.el-radio,.el-radio__input{line-height:1;white-space:nowrap;outline:0}.el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.el-checkbox-button__original{opacity:0;outline:0;position:absolute;margin:0;z-index:-1}.el-radio,.el-radio__inner,.el-radio__input{position:relative;display:inline-block}.el-checkbox-button.is-checked .el-checkbox-button__inner{color:#FFF;background-color:#409EFF;border-color:#409EFF;-webkit-box-shadow:-1px 0 0 0 #8cc5ff;box-shadow:-1px 0 0 0 #8cc5ff}.el-checkbox-button.is-checked:first-child .el-checkbox-button__inner{border-left-color:#409EFF}.el-checkbox-button.is-disabled .el-checkbox-button__inner{color:#C0C4CC;cursor:not-allowed;background-image:none;background-color:#FFF;border-color:#EBEEF5;-webkit-box-shadow:none;box-shadow:none}.el-checkbox-button.is-disabled:first-child .el-checkbox-button__inner{border-left-color:#EBEEF5}.el-checkbox-button:first-child .el-checkbox-button__inner{border-left:1px solid #DCDFE6;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:#409EFF}.el-checkbox-button:last-child .el-checkbox-button__inner{border-radius:0 4px 4px 0}.el-checkbox-button--medium .el-checkbox-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-checkbox-button--medium .el-checkbox-button__inner.is-round{padding:10px 20px}.el-checkbox-button--small .el-checkbox-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:9px 15px}.el-checkbox-button--mini .el-checkbox-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-checkbox-button--mini .el-checkbox-button__inner.is-round{padding:7px 15px}.el-checkbox-group{font-size:0}.el-radio,.el-radio--medium.is-bordered .el-radio__label{font-size:14px}.el-radio{color:#606266;cursor:pointer;margin-right:30px}.el-cascader-node>.el-radio,.el-radio:last-child{margin-right:0}.el-radio.is-bordered{padding:12px 20px 0 10px;border-radius:4px;border:1px solid #DCDFE6;-webkit-box-sizing:border-box;box-sizing:border-box;height:40px}.el-radio.is-bordered.is-checked{border-color:#409EFF}.el-radio.is-bordered.is-disabled{cursor:not-allowed;border-color:#EBEEF5}.el-radio__input.is-disabled .el-radio__inner,.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:#F5F7FA;border-color:#E4E7ED}.el-radio.is-bordered+.el-radio.is-bordered{margin-left:10px}.el-radio--medium.is-bordered{padding:10px 20px 0 10px;border-radius:4px;height:36px}.el-radio--mini.is-bordered .el-radio__label,.el-radio--small.is-bordered .el-radio__label{font-size:12px}.el-radio--medium.is-bordered .el-radio__inner{height:14px;width:14px}.el-radio--small.is-bordered{padding:8px 15px 0 10px;border-radius:3px;height:32px}.el-radio--small.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio--mini.is-bordered{padding:6px 15px 0 10px;border-radius:3px;height:28px}.el-radio--mini.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio__input{cursor:pointer;vertical-align:middle}.el-radio__input.is-disabled .el-radio__inner{cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner::after{cursor:not-allowed;background-color:#F5F7FA}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner::after{background-color:#C0C4CC}.el-radio__input.is-disabled+span.el-radio__label{color:#C0C4CC;cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{border-color:#409EFF;background:#409EFF}.el-radio__input.is-checked .el-radio__inner::after{-webkit-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:#409EFF}.el-radio__input.is-focus .el-radio__inner{border-color:#409EFF}.el-radio__inner{border:1px solid #DCDFE6;border-radius:100%;width:14px;height:14px;background-color:#FFF;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box}.el-radio__inner:hover{border-color:#409EFF}.el-radio__inner::after{width:4px;height:4px;border-radius:100%;background-color:#FFF;content:"";position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%) scale(0);transform:translate(-50%,-50%) scale(0);-webkit-transition:-webkit-transform .15s ease-in;transition:-webkit-transform .15s ease-in;transition:transform .15s ease-in;transition:transform .15s ease-in,-webkit-transform .15s ease-in}.el-radio__original{opacity:0;outline:0;position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;margin:0}.el-radio:focus:not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{-webkit-box-shadow:0 0 2px 2px #409EFF;box-shadow:0 0 2px 2px #409EFF}.el-radio__label{font-size:14px;padding-left:10px}.el-scrollbar{overflow:hidden;position:relative}.el-scrollbar:active>.el-scrollbar__bar,.el-scrollbar:focus>.el-scrollbar__bar,.el-scrollbar:hover>.el-scrollbar__bar{opacity:1;-webkit-transition:opacity 340ms ease-out;transition:opacity 340ms ease-out}.el-scrollbar__wrap{overflow:scroll;height:100%}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(144,147,153,.3);-webkit-transition:.3s background-color;transition:.3s background-color}.el-scrollbar__thumb:hover{background-color:rgba(144,147,153,.5)}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;-webkit-transition:opacity 120ms ease-out;transition:opacity 120ms ease-out}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-cascader-panel{display:-webkit-box;display:-ms-flexbox;display:flex;border-radius:4px;font-size:14px}.el-cascader-panel.is-bordered{border:1px solid #E4E7ED;border-radius:4px}.el-cascader-menu{min-width:180px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;border-right:solid 1px #E4E7ED}.el-cascader-menu:last-child{border-right:none}.el-cascader-menu:last-child .el-cascader-node{padding-right:20px}.el-cascader-menu__wrap{height:204px}.el-cascader-menu__list{position:relative;min-height:100%;margin:0;padding:6px 0;list-style:none;-webkit-box-sizing:border-box;box-sizing:border-box}.el-avatar,.el-drawer{-webkit-box-sizing:border-box;overflow:hidden}.el-cascader-menu__hover-zone{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.el-cascader-menu__empty-text{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);text-align:center;color:#C0C4CC}.el-cascader-node{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 30px 0 20px;height:34px;line-height:34px;outline:0}.el-cascader-node.is-selectable.in-active-path{color:#606266}.el-cascader-node.in-active-path,.el-cascader-node.is-active,.el-cascader-node.is-selectable.in-checked-path{color:#409EFF;font-weight:700}.el-cascader-node:not(.is-disabled){cursor:pointer}.el-cascader-node:not(.is-disabled):focus,.el-cascader-node:not(.is-disabled):hover{background:#F5F7FA}.el-cascader-node.is-disabled{color:#C0C4CC;cursor:not-allowed}.el-cascader-node__prefix{position:absolute;left:10px}.el-cascader-node__postfix{position:absolute;right:10px}.el-cascader-node__label{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:0 10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-cascader-node>.el-radio .el-radio__label{padding-left:0}.el-avatar{display:inline-block;box-sizing:border-box;text-align:center;color:#fff;background:#C0C4CC;width:40px;height:40px;line-height:40px;font-size:14px}.el-avatar>img{display:block;height:100%;vertical-align:middle}.el-drawer,.el-drawer__header{display:-webkit-box;display:-ms-flexbox}.el-avatar--circle{border-radius:50%}.el-avatar--square{border-radius:4px}.el-avatar--icon{font-size:18px}.el-avatar--large{width:40px;height:40px;line-height:40px}.el-avatar--medium{width:36px;height:36px;line-height:36px}.el-avatar--small{width:28px;height:28px;line-height:28px}.el-drawer.btt,.el-drawer.ttb,.el-drawer__container{left:0;right:0;width:100%}.el-drawer.ltr,.el-drawer.rtl,.el-drawer__container{top:0;bottom:0;height:100%}@-webkit-keyframes el-drawer-fade-in{0%{opacity:0}100%{opacity:1}}@keyframes el-drawer-fade-in{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes rtl-drawer-in{0%{-webkit-transform:translate(100%,0);transform:translate(100%,0)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@keyframes rtl-drawer-in{0%{-webkit-transform:translate(100%,0);transform:translate(100%,0)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@-webkit-keyframes rtl-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(100%,0);transform:translate(100%,0)}}@keyframes rtl-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(100%,0);transform:translate(100%,0)}}@-webkit-keyframes ltr-drawer-in{0%{-webkit-transform:translate(-100%,0);transform:translate(-100%,0)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@keyframes ltr-drawer-in{0%{-webkit-transform:translate(-100%,0);transform:translate(-100%,0)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@-webkit-keyframes ltr-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(-100%,0);transform:translate(-100%,0)}}@keyframes ltr-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(-100%,0);transform:translate(-100%,0)}}@-webkit-keyframes ttb-drawer-in{0%{-webkit-transform:translate(0,-100%);transform:translate(0,-100%)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@keyframes ttb-drawer-in{0%{-webkit-transform:translate(0,-100%);transform:translate(0,-100%)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@-webkit-keyframes ttb-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(0,-100%);transform:translate(0,-100%)}}@keyframes ttb-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(0,-100%);transform:translate(0,-100%)}}@-webkit-keyframes btt-drawer-in{0%{-webkit-transform:translate(0,100%);transform:translate(0,100%)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@keyframes btt-drawer-in{0%{-webkit-transform:translate(0,100%);transform:translate(0,100%)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@-webkit-keyframes btt-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(0,100%);transform:translate(0,100%)}}@keyframes btt-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(0,100%);transform:translate(0,100%)}}.el-drawer{position:absolute;box-sizing:border-box;background-color:#FFF;display:flex;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12);box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12);outline:0}.el-drawer.rtl{-webkit-animation:rtl-drawer-out .3s;animation:rtl-drawer-out .3s;right:0}.el-drawer__open .el-drawer.rtl{-webkit-animation:rtl-drawer-in .3s 1ms;animation:rtl-drawer-in .3s 1ms}.el-drawer.ltr{-webkit-animation:ltr-drawer-out .3s;animation:ltr-drawer-out .3s;left:0}.el-drawer__open .el-drawer.ltr{-webkit-animation:ltr-drawer-in .3s 1ms;animation:ltr-drawer-in .3s 1ms}.el-drawer.ttb{-webkit-animation:ttb-drawer-out .3s;animation:ttb-drawer-out .3s;top:0}.el-drawer__open .el-drawer.ttb{-webkit-animation:ttb-drawer-in .3s 1ms;animation:ttb-drawer-in .3s 1ms}.el-drawer.btt{-webkit-animation:btt-drawer-out .3s;animation:btt-drawer-out .3s;bottom:0}.el-drawer__open .el-drawer.btt{-webkit-animation:btt-drawer-in .3s 1ms;animation:btt-drawer-in .3s 1ms}.el-drawer__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:hidden;margin:0}.el-drawer__header{-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#72767b;display:flex;margin-bottom:32px;padding:20px 20px 0}.el-drawer__header>:first-child{-webkit-box-flex:1;-ms-flex:1;flex:1}.el-drawer__title{margin:0;-webkit-box-flex:1;-ms-flex:1;flex:1;line-height:inherit;font-size:1rem}.el-drawer__close-btn{border:none;cursor:pointer;font-size:20px;color:inherit;background-color:transparent}.el-drawer__body{-webkit-box-flex:1;-ms-flex:1;flex:1}.el-drawer__body>*{-webkit-box-sizing:border-box;box-sizing:border-box}.el-drawer__container{position:relative}.el-drawer-fade-enter-active{-webkit-animation:el-drawer-fade-in .3s;animation:el-drawer-fade-in .3s}.el-drawer-fade-leave-active{animation:el-drawer-fade-in .3s reverse}.el-popconfirm__main{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-popconfirm__icon{margin-right:5px}.el-popconfirm__action{text-align:right;margin:0}
\ No newline at end of file
diff --git a/map/lib/elementUi.js b/map/lib/elementUi.js
deleted file mode 100644
index 12f66a1..0000000
--- a/map/lib/elementUi.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("vue")):"function"==typeof define&&define.amd?define("ELEMENT",["vue"],t):"object"==typeof exports?exports.ELEMENT=t(require("vue")):e.ELEMENT=t(e.Vue)}("undefined"!=typeof self?self:this,function(e){return function(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/dist/",i(i.s=49)}([function(t,i){t.exports=e},function(e,t,i){var n=i(4);e.exports=function(e,t,i){return void 0===i?n(e,t,!1):n(e,i,!1!==t)}},function(e,t,i){var n;!function(r){"use strict";var s={},a=/d{1,4}|M{1,4}|yy(?:yy)?|S{1,3}|Do|ZZ|([HhMsDm])\1?|[aA]|"[^"]*"|'[^']*'/g,o="[^\\s]+",l=/\[([^]*?)\]/gm,u=function(){};function c(e,t){for(var i=[],n=0,r=e.length;n<r;n++)i.push(e[n].substr(0,t));return i}function h(e){return function(t,i,n){var r=n[e].indexOf(i.charAt(0).toUpperCase()+i.substr(1).toLowerCase());~r&&(t.month=r)}}function d(e,t){for(e=String(e),t=t||2;e.length<t;)e="0"+e;return e}var p=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],f=["January","February","March","April","May","June","July","August","September","October","November","December"],m=c(f,3),v=c(p,3);s.i18n={dayNamesShort:v,dayNames:p,monthNamesShort:m,monthNames:f,amPm:["am","pm"],DoFn:function(e){return e+["th","st","nd","rd"][e%10>3?0:(e-e%10!=10)*e%10]}};var g={D:function(e){return e.getDay()},DD:function(e){return d(e.getDay())},Do:function(e,t){return t.DoFn(e.getDate())},d:function(e){return e.getDate()},dd:function(e){return d(e.getDate())},ddd:function(e,t){return t.dayNamesShort[e.getDay()]},dddd:function(e,t){return t.dayNames[e.getDay()]},M:function(e){return e.getMonth()+1},MM:function(e){return d(e.getMonth()+1)},MMM:function(e,t){return t.monthNamesShort[e.getMonth()]},MMMM:function(e,t){return t.monthNames[e.getMonth()]},yy:function(e){return d(String(e.getFullYear()),4).substr(2)},yyyy:function(e){return d(e.getFullYear(),4)},h:function(e){return e.getHours()%12||12},hh:function(e){return d(e.getHours()%12||12)},H:function(e){return e.getHours()},HH:function(e){return d(e.getHours())},m:function(e){return e.getMinutes()},mm:function(e){return d(e.getMinutes())},s:function(e){return e.getSeconds()},ss:function(e){return d(e.getSeconds())},S:function(e){return Math.round(e.getMilliseconds()/100)},SS:function(e){return d(Math.round(e.getMilliseconds()/10),2)},SSS:function(e){return d(e.getMilliseconds(),3)},a:function(e,t){return e.getHours()<12?t.amPm[0]:t.amPm[1]},A:function(e,t){return e.getHours()<12?t.amPm[0].toUpperCase():t.amPm[1].toUpperCase()},ZZ:function(e){var t=e.getTimezoneOffset();return(t>0?"-":"+")+d(100*Math.floor(Math.abs(t)/60)+Math.abs(t)%60,4)}},b={d:["\\d\\d?",function(e,t){e.day=t}],Do:["\\d\\d?"+o,function(e,t){e.day=parseInt(t,10)}],M:["\\d\\d?",function(e,t){e.month=t-1}],yy:["\\d\\d?",function(e,t){var i=+(""+(new Date).getFullYear()).substr(0,2);e.year=""+(t>68?i-1:i)+t}],h:["\\d\\d?",function(e,t){e.hour=t}],m:["\\d\\d?",function(e,t){e.minute=t}],s:["\\d\\d?",function(e,t){e.second=t}],yyyy:["\\d{4}",function(e,t){e.year=t}],S:["\\d",function(e,t){e.millisecond=100*t}],SS:["\\d{2}",function(e,t){e.millisecond=10*t}],SSS:["\\d{3}",function(e,t){e.millisecond=t}],D:["\\d\\d?",u],ddd:[o,u],MMM:[o,h("monthNamesShort")],MMMM:[o,h("monthNames")],a:[o,function(e,t,i){var n=t.toLowerCase();n===i.amPm[0]?e.isPm=!1:n===i.amPm[1]&&(e.isPm=!0)}],ZZ:["[^\\s]*?[\\+\\-]\\d\\d:?\\d\\d|[^\\s]*?Z",function(e,t){var i,n=(t+"").match(/([+-]|\d\d)/gi);n&&(i=60*n[1]+parseInt(n[2],10),e.timezoneOffset="+"===n[0]?i:-i)}]};b.dd=b.d,b.dddd=b.ddd,b.DD=b.D,b.mm=b.m,b.hh=b.H=b.HH=b.h,b.MM=b.M,b.ss=b.s,b.A=b.a,s.masks={default:"ddd MMM dd yyyy HH:mm:ss",shortDate:"M/D/yy",mediumDate:"MMM d, yyyy",longDate:"MMMM d, yyyy",fullDate:"dddd, MMMM d, yyyy",shortTime:"HH:mm",mediumTime:"HH:mm:ss",longTime:"HH:mm:ss.SSS"},s.format=function(e,t,i){var n=i||s.i18n;if("number"==typeof e&&(e=new Date(e)),"[object Date]"!==Object.prototype.toString.call(e)||isNaN(e.getTime()))throw new Error("Invalid Date in fecha.format");t=s.masks[t]||t||s.masks.default;var r=[];return(t=(t=t.replace(l,function(e,t){return r.push(t),"@@@"})).replace(a,function(t){return t in g?g[t](e,n):t.slice(1,t.length-1)})).replace(/@@@/g,function(){return r.shift()})},s.parse=function(e,t,i){var n=i||s.i18n;if("string"!=typeof t)throw new Error("Invalid format in fecha.parse");if(t=s.masks[t]||t,e.length>1e3)return null;var r={},o=[],u=[];t=t.replace(l,function(e,t){return u.push(t),"@@@"});var c,h=(c=t,c.replace(/[|\\{()[^$+*?.-]/g,"\\$&")).replace(a,function(e){if(b[e]){var t=b[e];return o.push(t[1]),"("+t[0]+")"}return e});h=h.replace(/@@@/g,function(){return u.shift()});var d=e.match(new RegExp(h,"i"));if(!d)return null;for(var p=1;p<d.length;p++)o[p-1](r,d[p],n);var f,m=new Date;return!0===r.isPm&&null!=r.hour&&12!=+r.hour?r.hour=+r.hour+12:!1===r.isPm&&12==+r.hour&&(r.hour=0),null!=r.timezoneOffset?(r.minute=+(r.minute||0)-+r.timezoneOffset,f=new Date(Date.UTC(r.year||m.getFullYear(),r.month||0,r.day||1,r.hour||0,r.minute||0,r.second||0,r.millisecond||0))):f=new Date(r.year||m.getFullYear(),r.month||0,r.day||1,r.hour||0,r.minute||0,r.second||0,r.millisecond||0),f},e.exports?e.exports=s:void 0===(n=function(){return s}.call(t,i,t,e))||(e.exports=n)}()},function(e,t,i){"use strict";t.__esModule=!0;var n=a(i(65)),r=a(i(77)),s="function"==typeof r.default&&"symbol"==typeof n.default?function(e){return typeof e}:function(e){return e&&"function"==typeof r.default&&e.constructor===r.default&&e!==r.default.prototype?"symbol":typeof e};function a(e){return e&&e.__esModule?e:{default:e}}t.default="function"==typeof r.default&&"symbol"===s(n.default)?function(e){return void 0===e?"undefined":s(e)}:function(e){return e&&"function"==typeof r.default&&e.constructor===r.default&&e!==r.default.prototype?"symbol":void 0===e?"undefined":s(e)}},function(e,t){e.exports=function(e,t,i,n){var r,s=0;return"boolean"!=typeof t&&(n=i,i=t,t=void 0),function(){var a=this,o=Number(new Date)-s,l=arguments;function u(){s=Number(new Date),i.apply(a,l)}n&&!r&&u(),r&&clearTimeout(r),void 0===n&&o>e?u():!0!==t&&(r=setTimeout(n?function(){r=void 0}:u,void 0===n?e-o:e))}}},function(e,t){var i=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=i)},function(e,t){var i=/^(attrs|props|on|nativeOn|class|style|hook)$/;function n(e,t){return function(){e&&e.apply(this,arguments),t&&t.apply(this,arguments)}}e.exports=function(e){return e.reduce(function(e,t){var r,s,a,o,l;for(a in t)if(r=e[a],s=t[a],r&&i.test(a))if("class"===a&&("string"==typeof r&&(l=r,e[a]=r={},r[l]=!0),"string"==typeof s&&(l=s,t[a]=s={},s[l]=!0)),"on"===a||"nativeOn"===a||"hook"===a)for(o in s)r[o]=n(r[o],s[o]);else if(Array.isArray(r))e[a]=r.concat(s);else if(Array.isArray(s))e[a]=[r].concat(s);else for(o in s)r[o]=s[o];else e[a]=t[a];return e},{})}},function(e,t){var i={}.hasOwnProperty;e.exports=function(e,t){return i.call(e,t)}},function(e,t,i){"use strict";t.__esModule=!0;var n,r=i(56),s=(n=r)&&n.__esModule?n:{default:n};t.default=s.default||function(e){for(var t=1;t<arguments.length;t++){var i=arguments[t];for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n])}return e}},function(e,t,i){var n=i(10),r=i(18);e.exports=i(11)?function(e,t,i){return n.f(e,t,r(1,i))}:function(e,t,i){return e[t]=i,e}},function(e,t,i){var n=i(17),r=i(36),s=i(24),a=Object.defineProperty;t.f=i(11)?Object.defineProperty:function(e,t,i){if(n(e),t=s(t,!0),n(i),r)try{return a(e,t,i)}catch(e){}if("get"in i||"set"in i)throw TypeError("Accessors not supported!");return"value"in i&&(e[t]=i.value),e}},function(e,t,i){e.exports=!i(16)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,t,i){var n=i(39),r=i(25);e.exports=function(e){return n(r(e))}},function(e,t,i){var n=i(28)("wks"),r=i(21),s=i(5).Symbol,a="function"==typeof s;(e.exports=function(e){return n[e]||(n[e]=a&&s[e]||(a?s:r)("Symbol."+e))}).store=n},function(e,t){var i=e.exports={version:"2.6.2"};"number"==typeof __e&&(__e=i)},function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t,i){var n=i(15);e.exports=function(e){if(!n(e))throw TypeError(e+" is not an object!");return e}},function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t,i){var n=i(38),r=i(29);e.exports=Object.keys||function(e){return n(e,r)}},function(e,t){e.exports=!0},function(e,t){var i=0,n=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++i+n).toString(36))}},function(e,t){t.f={}.propertyIsEnumerable},function(e,t,i){var n=i(5),r=i(14),s=i(59),a=i(9),o=i(7),l=function(e,t,i){var u,c,h,d=e&l.F,p=e&l.G,f=e&l.S,m=e&l.P,v=e&l.B,g=e&l.W,b=p?r:r[t]||(r[t]={}),y=b.prototype,w=p?n:f?n[t]:(n[t]||{}).prototype;for(u in p&&(i=t),i)(c=!d&&w&&void 0!==w[u])&&o(b,u)||(h=c?w[u]:i[u],b[u]=p&&"function"!=typeof w[u]?i[u]:v&&c?s(h,n):g&&w[u]==h?function(e){var t=function(t,i,n){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,i)}return new e(t,i,n)}return e.apply(this,arguments)};return t.prototype=e.prototype,t}(h):m&&"function"==typeof h?s(Function.call,h):h,m&&((b.virtual||(b.virtual={}))[u]=h,e&l.R&&y&&!y[u]&&a(y,u,h)))};l.F=1,l.G=2,l.S=4,l.P=8,l.B=16,l.W=32,l.U=64,l.R=128,e.exports=l},function(e,t,i){var n=i(15);e.exports=function(e,t){if(!n(e))return e;var i,r;if(t&&"function"==typeof(i=e.toString)&&!n(r=i.call(e)))return r;if("function"==typeof(i=e.valueOf)&&!n(r=i.call(e)))return r;if(!t&&"function"==typeof(i=e.toString)&&!n(r=i.call(e)))return r;throw TypeError("Can't convert object to primitive value")}},function(e,t){e.exports=function(e){if(null==e)throw TypeError("Can't call method on  "+e);return e}},function(e,t){var i=Math.ceil,n=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?n:i)(e)}},function(e,t,i){var n=i(28)("keys"),r=i(21);e.exports=function(e){return n[e]||(n[e]=r(e))}},function(e,t,i){var n=i(14),r=i(5),s=r["__core-js_shared__"]||(r["__core-js_shared__"]={});(e.exports=function(e,t){return s[e]||(s[e]=void 0!==t?t:{})})("versions",[]).push({version:n.version,mode:i(20)?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},function(e,t){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(e,t){t.f=Object.getOwnPropertySymbols},function(e,t){e.exports={}},function(e,t,i){var n=i(10).f,r=i(7),s=i(13)("toStringTag");e.exports=function(e,t,i){e&&!r(e=i?e:e.prototype,s)&&n(e,s,{configurable:!0,value:t})}},function(e,t,i){t.f=i(13)},function(e,t,i){var n=i(5),r=i(14),s=i(20),a=i(33),o=i(10).f;e.exports=function(e){var t=r.Symbol||(r.Symbol=s?{}:n.Symbol||{});"_"==e.charAt(0)||e in t||o(t,e,{value:a.f(e)})}},function(e,t,i){var n=i(4),r=i(1);e.exports={throttle:n,debounce:r}},function(e,t,i){e.exports=!i(11)&&!i(16)(function(){return 7!=Object.defineProperty(i(37)("div"),"a",{get:function(){return 7}}).a})},function(e,t,i){var n=i(15),r=i(5).document,s=n(r)&&n(r.createElement);e.exports=function(e){return s?r.createElement(e):{}}},function(e,t,i){var n=i(7),r=i(12),s=i(62)(!1),a=i(27)("IE_PROTO");e.exports=function(e,t){var i,o=r(e),l=0,u=[];for(i in o)i!=a&&n(o,i)&&u.push(i);for(;t.length>l;)n(o,i=t[l++])&&(~s(u,i)||u.push(i));return u}},function(e,t,i){var n=i(40);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==n(e)?e.split(""):Object(e)}},function(e,t){var i={}.toString;e.exports=function(e){return i.call(e).slice(8,-1)}},function(e,t,i){var n=i(25);e.exports=function(e){return Object(n(e))}},function(e,t,i){"use strict";var n=i(20),r=i(23),s=i(43),a=i(9),o=i(31),l=i(69),u=i(32),c=i(72),h=i(13)("iterator"),d=!([].keys&&"next"in[].keys()),p=function(){return this};e.exports=function(e,t,i,f,m,v,g){l(i,t,f);var b,y,w,_=function(e){if(!d&&e in S)return S[e];switch(e){case"keys":case"values":return function(){return new i(this,e)}}return function(){return new i(this,e)}},x=t+" Iterator",C="values"==m,k=!1,S=e.prototype,D=S[h]||S["@@iterator"]||m&&S[m],$=D||_(m),E=m?C?_("entries"):$:void 0,T="Array"==t&&S.entries||D;if(T&&(w=c(T.call(new e)))!==Object.prototype&&w.next&&(u(w,x,!0),n||"function"==typeof w[h]||a(w,h,p)),C&&D&&"values"!==D.name&&(k=!0,$=function(){return D.call(this)}),n&&!g||!d&&!k&&S[h]||a(S,h,$),o[t]=$,o[x]=p,m)if(b={values:C?$:_("values"),keys:v?$:_("keys"),entries:E},g)for(y in b)y in S||s(S,y,b[y]);else r(r.P+r.F*(d||k),t,b);return b}},function(e,t,i){e.exports=i(9)},function(e,t,i){var n=i(17),r=i(70),s=i(29),a=i(27)("IE_PROTO"),o=function(){},l=function(){var e,t=i(37)("iframe"),n=s.length;for(t.style.display="none",i(71).appendChild(t),t.src="javascript:",(e=t.contentWindow.document).open(),e.write("<script>document.F=Object<\/script>"),e.close(),l=e.F;n--;)delete l.prototype[s[n]];return l()};e.exports=Object.create||function(e,t){var i;return null!==e?(o.prototype=n(e),i=new o,o.prototype=null,i[a]=e):i=l(),void 0===t?i:r(i,t)}},function(e,t,i){var n=i(38),r=i(29).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return n(e,r)}},function(e,t,i){"use strict";var n=function(e){return function(e){return!!e&&"object"==typeof e}(e)&&!function(e){var t=Object.prototype.toString.call(e);return"[object RegExp]"===t||"[object Date]"===t||function(e){return e.$$typeof===r}(e)}(e)};var r="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function s(e,t){var i;return t&&!0===t.clone&&n(e)?o((i=e,Array.isArray(i)?[]:{}),e,t):e}function a(e,t,i){var r=e.slice();return t.forEach(function(t,a){void 0===r[a]?r[a]=s(t,i):n(t)?r[a]=o(e[a],t,i):-1===e.indexOf(t)&&r.push(s(t,i))}),r}function o(e,t,i){var r=Array.isArray(t);return r===Array.isArray(e)?r?((i||{arrayMerge:a}).arrayMerge||a)(e,t,i):function(e,t,i){var r={};return n(e)&&Object.keys(e).forEach(function(t){r[t]=s(e[t],i)}),Object.keys(t).forEach(function(a){n(t[a])&&e[a]?r[a]=o(e[a],t[a],i):r[a]=s(t[a],i)}),r}(e,t,i):s(t,i)}o.all=function(e,t){if(!Array.isArray(e)||e.length<2)throw new Error("first argument should be an array with at least two elements");return e.reduce(function(e,i){return o(e,i,t)})};var l=o;e.exports=l},function(e,t,i){"use strict";(function(e){var i=function(){if("undefined"!=typeof Map)return Map;function e(e,t){var i=-1;return e.some(function(e,n){return e[0]===t&&(i=n,!0)}),i}return function(){function t(){this.__entries__=[]}return Object.defineProperty(t.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),t.prototype.get=function(t){var i=e(this.__entries__,t),n=this.__entries__[i];return n&&n[1]},t.prototype.set=function(t,i){var n=e(this.__entries__,t);~n?this.__entries__[n][1]=i:this.__entries__.push([t,i])},t.prototype.delete=function(t){var i=this.__entries__,n=e(i,t);~n&&i.splice(n,1)},t.prototype.has=function(t){return!!~e(this.__entries__,t)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(e,t){void 0===t&&(t=null);for(var i=0,n=this.__entries__;i<n.length;i++){var r=n[i];e.call(t,r[1],r[0])}},t}()}(),n="undefined"!=typeof window&&"undefined"!=typeof document&&window.document===document,r=void 0!==e&&e.Math===Math?e:"undefined"!=typeof self&&self.Math===Math?self:"undefined"!=typeof window&&window.Math===Math?window:Function("return this")(),s="function"==typeof requestAnimationFrame?requestAnimationFrame.bind(r):function(e){return setTimeout(function(){return e(Date.now())},1e3/60)},a=2;var o=20,l=["top","right","bottom","left","width","height","size","weight"],u="undefined"!=typeof MutationObserver,c=function(){function e(){this.connected_=!1,this.mutationEventsAdded_=!1,this.mutationsObserver_=null,this.observers_=[],this.onTransitionEnd_=this.onTransitionEnd_.bind(this),this.refresh=function(e,t){var i=!1,n=!1,r=0;function o(){i&&(i=!1,e()),n&&u()}function l(){s(o)}function u(){var e=Date.now();if(i){if(e-r<a)return;n=!0}else i=!0,n=!1,setTimeout(l,t);r=e}return u}(this.refresh.bind(this),o)}return e.prototype.addObserver=function(e){~this.observers_.indexOf(e)||this.observers_.push(e),this.connected_||this.connect_()},e.prototype.removeObserver=function(e){var t=this.observers_,i=t.indexOf(e);~i&&t.splice(i,1),!t.length&&this.connected_&&this.disconnect_()},e.prototype.refresh=function(){this.updateObservers_()&&this.refresh()},e.prototype.updateObservers_=function(){var e=this.observers_.filter(function(e){return e.gatherActive(),e.hasActive()});return e.forEach(function(e){return e.broadcastActive()}),e.length>0},e.prototype.connect_=function(){n&&!this.connected_&&(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),u?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){n&&this.connected_&&(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(e){var t=e.propertyName,i=void 0===t?"":t;l.some(function(e){return!!~i.indexOf(e)})&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),h=function(e,t){for(var i=0,n=Object.keys(t);i<n.length;i++){var r=n[i];Object.defineProperty(e,r,{value:t[r],enumerable:!1,writable:!1,configurable:!0})}return e},d=function(e){return e&&e.ownerDocument&&e.ownerDocument.defaultView||r},p=y(0,0,0,0);function f(e){return parseFloat(e)||0}function m(e){for(var t=[],i=1;i<arguments.length;i++)t[i-1]=arguments[i];return t.reduce(function(t,i){return t+f(e["border-"+i+"-width"])},0)}function v(e){var t=e.clientWidth,i=e.clientHeight;if(!t&&!i)return p;var n=d(e).getComputedStyle(e),r=function(e){for(var t={},i=0,n=["top","right","bottom","left"];i<n.length;i++){var r=n[i],s=e["padding-"+r];t[r]=f(s)}return t}(n),s=r.left+r.right,a=r.top+r.bottom,o=f(n.width),l=f(n.height);if("border-box"===n.boxSizing&&(Math.round(o+s)!==t&&(o-=m(n,"left","right")+s),Math.round(l+a)!==i&&(l-=m(n,"top","bottom")+a)),!function(e){return e===d(e).document.documentElement}(e)){var u=Math.round(o+s)-t,c=Math.round(l+a)-i;1!==Math.abs(u)&&(o-=u),1!==Math.abs(c)&&(l-=c)}return y(r.left,r.top,o,l)}var g="undefined"!=typeof SVGGraphicsElement?function(e){return e instanceof d(e).SVGGraphicsElement}:function(e){return e instanceof d(e).SVGElement&&"function"==typeof e.getBBox};function b(e){return n?g(e)?function(e){var t=e.getBBox();return y(0,0,t.width,t.height)}(e):v(e):p}function y(e,t,i,n){return{x:e,y:t,width:i,height:n}}var w=function(){function e(e){this.broadcastWidth=0,this.broadcastHeight=0,this.contentRect_=y(0,0,0,0),this.target=e}return e.prototype.isActive=function(){var e=b(this.target);return this.contentRect_=e,e.width!==this.broadcastWidth||e.height!==this.broadcastHeight},e.prototype.broadcastRect=function(){var e=this.contentRect_;return this.broadcastWidth=e.width,this.broadcastHeight=e.height,e},e}(),_=function(){return function(e,t){var i,n,r,s,a,o,l,u=(n=(i=t).x,r=i.y,s=i.width,a=i.height,o="undefined"!=typeof DOMRectReadOnly?DOMRectReadOnly:Object,l=Object.create(o.prototype),h(l,{x:n,y:r,width:s,height:a,top:r,right:n+s,bottom:a+r,left:n}),l);h(this,{target:e,contentRect:u})}}(),x=function(){function e(e,t,n){if(this.activeObservations_=[],this.observations_=new i,"function"!=typeof e)throw new TypeError("The callback provided as parameter 1 is not a function.");this.callback_=e,this.controller_=t,this.callbackCtx_=n}return e.prototype.observe=function(e){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if("undefined"!=typeof Element&&Element instanceof Object){if(!(e instanceof d(e).Element))throw new TypeError('parameter 1 is not of type "Element".');var t=this.observations_;t.has(e)||(t.set(e,new w(e)),this.controller_.addObserver(this),this.controller_.refresh())}},e.prototype.unobserve=function(e){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if("undefined"!=typeof Element&&Element instanceof Object){if(!(e instanceof d(e).Element))throw new TypeError('parameter 1 is not of type "Element".');var t=this.observations_;t.has(e)&&(t.delete(e),t.size||this.controller_.removeObserver(this))}},e.prototype.disconnect=function(){this.clearActive(),this.observations_.clear(),this.controller_.removeObserver(this)},e.prototype.gatherActive=function(){var e=this;this.clearActive(),this.observations_.forEach(function(t){t.isActive()&&e.activeObservations_.push(t)})},e.prototype.broadcastActive=function(){if(this.hasActive()){var e=this.callbackCtx_,t=this.activeObservations_.map(function(e){return new _(e.target,e.broadcastRect())});this.callback_.call(e,t,e),this.clearActive()}},e.prototype.clearActive=function(){this.activeObservations_.splice(0)},e.prototype.hasActive=function(){return this.activeObservations_.length>0},e}(),C="undefined"!=typeof WeakMap?new WeakMap:new i,k=function(){return function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var i=c.getInstance(),n=new x(t,i,this);C.set(this,n)}}();["observe","unobserve","disconnect"].forEach(function(e){k.prototype[e]=function(){var t;return(t=C.get(this))[e].apply(t,arguments)}});var S=void 0!==r.ResizeObserver?r.ResizeObserver:k;t.a=S}).call(this,i(51))},function(e,t,i){e.exports=i(52)},function(e,t,i){e.exports=i(88)},function(e,t,i){var n,r;void 0===(r="function"==typeof(n=function(){"use strict";var e=window,t={placement:"bottom",gpuAcceleration:!0,offset:0,boundariesElement:"viewport",boundariesPadding:5,preventOverflowOrder:["left","right","top","bottom"],flipBehavior:"flip",arrowElement:"[x-arrow]",arrowOffset:0,modifiers:["shift","offset","preventOverflow","keepTogether","arrow","flip","applyStyle"],modifiersIgnored:[],forceAbsolute:!1};function i(e,i,n){this._reference=e.jquery?e[0]:e,this.state={};var r=null==i,s=i&&"[object Object]"===Object.prototype.toString.call(i);return this._popper=r||s?this.parse(s?i:{}):i.jquery?i[0]:i,this._options=Object.assign({},t,n),this._options.modifiers=this._options.modifiers.map(function(e){if(-1===this._options.modifiersIgnored.indexOf(e))return"applyStyle"===e&&this._popper.setAttribute("x-placement",this._options.placement),this.modifiers[e]||e}.bind(this)),this.state.position=this._getPosition(this._popper,this._reference),c(this._popper,{position:this.state.position,top:0}),this.update(),this._setupEventListeners(),this}function n(t){var i=t.style.display,n=t.style.visibility;t.style.display="block",t.style.visibility="hidden",t.offsetWidth;var r=e.getComputedStyle(t),s=parseFloat(r.marginTop)+parseFloat(r.marginBottom),a=parseFloat(r.marginLeft)+parseFloat(r.marginRight),o={width:t.offsetWidth+a,height:t.offsetHeight+s};return t.style.display=i,t.style.visibility=n,o}function r(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 s(e){var t=Object.assign({},e);return t.right=t.left+t.width,t.bottom=t.top+t.height,t}function a(e,t){var i,n=0;for(i in e){if(e[i]===t)return n;n++}return null}function o(t,i){var n=e.getComputedStyle(t,null);return n[i]}function l(t){var i=t.offsetParent;return i!==e.document.body&&i?i:e.document.documentElement}function u(t){var i=t.parentNode;return i?i===e.document?e.document.body.scrollTop||e.document.body.scrollLeft?e.document.body:e.document.documentElement:-1!==["scroll","auto"].indexOf(o(i,"overflow"))||-1!==["scroll","auto"].indexOf(o(i,"overflow-x"))||-1!==["scroll","auto"].indexOf(o(i,"overflow-y"))?i:u(t.parentNode):t}function c(e,t){Object.keys(t).forEach(function(i){var n,r="";-1!==["width","height","top","right","bottom","left"].indexOf(i)&&""!==(n=t[i])&&!isNaN(parseFloat(n))&&isFinite(n)&&(r="px"),e.style[i]=t[i]+r})}function h(e){var t={width:e.offsetWidth,height:e.offsetHeight,left:e.offsetLeft,top:e.offsetTop};return t.right=t.left+t.width,t.bottom=t.top+t.height,t}function d(e){var t=e.getBoundingClientRect(),i=-1!=navigator.userAgent.indexOf("MSIE"),n=i&&"HTML"===e.tagName?-e.scrollTop:t.top;return{left:t.left,top:n,right:t.right,bottom:t.bottom,width:t.right-t.left,height:t.bottom-n}}function p(t){for(var i=["","ms","webkit","moz","o"],n=0;n<i.length;n++){var r=i[n]?i[n]+t.charAt(0).toUpperCase()+t.slice(1):t;if(void 0!==e.document.body.style[r])return r}return null}return i.prototype.destroy=function(){return this._popper.removeAttribute("x-placement"),this._popper.style.left="",this._popper.style.position="",this._popper.style.top="",this._popper.style[p("transform")]="",this._removeEventListeners(),this._options.removeOnDestroy&&this._popper.remove(),this},i.prototype.update=function(){var e={instance:this,styles:{}};e.placement=this._options.placement,e._originalPlacement=this._options.placement,e.offsets=this._getOffsets(this._popper,this._reference,e.placement),e.boundaries=this._getBoundaries(e,this._options.boundariesPadding,this._options.boundariesElement),e=this.runModifiers(e,this._options.modifiers),"function"==typeof this.state.updateCallback&&this.state.updateCallback(e)},i.prototype.onCreate=function(e){return e(this),this},i.prototype.onUpdate=function(e){return this.state.updateCallback=e,this},i.prototype.parse=function(t){var i={tagName:"div",classNames:["popper"],attributes:[],parent:e.document.body,content:"",contentType:"text",arrowTagName:"div",arrowClassNames:["popper__arrow"],arrowAttributes:["x-arrow"]};t=Object.assign({},i,t);var n=e.document,r=n.createElement(t.tagName);if(o(r,t.classNames),l(r,t.attributes),"node"===t.contentType?r.appendChild(t.content.jquery?t.content[0]:t.content):"html"===t.contentType?r.innerHTML=t.content:r.textContent=t.content,t.arrowTagName){var s=n.createElement(t.arrowTagName);o(s,t.arrowClassNames),l(s,t.arrowAttributes),r.appendChild(s)}var a=t.parent.jquery?t.parent[0]:t.parent;if("string"==typeof a){if((a=n.querySelectorAll(t.parent)).length>1&&console.warn("WARNING: the given `parent` query("+t.parent+") matched more than one element, the first one will be used"),0===a.length)throw"ERROR: the given `parent` doesn't exists!";a=a[0]}return a.length>1&&a instanceof Element==0&&(console.warn("WARNING: you have passed as parent a list of elements, the first one will be used"),a=a[0]),a.appendChild(r),r;function o(e,t){t.forEach(function(t){e.classList.add(t)})}function l(e,t){t.forEach(function(t){e.setAttribute(t.split(":")[0],t.split(":")[1]||"")})}},i.prototype._getPosition=function(t,i){return l(i),this._options.forceAbsolute?"absolute":function t(i){return i!==e.document.body&&("fixed"===o(i,"position")||(i.parentNode?t(i.parentNode):i))}(i)?"fixed":"absolute"},i.prototype._getOffsets=function(e,t,i){i=i.split("-")[0];var r={};r.position=this.state.position;var s="fixed"===r.position,a=function(e,t,i){var n=d(e),r=d(t);if(i){var s=u(t);r.top+=s.scrollTop,r.bottom+=s.scrollTop,r.left+=s.scrollLeft,r.right+=s.scrollLeft}return{top:n.top-r.top,left:n.left-r.left,bottom:n.top-r.top+n.height,right:n.left-r.left+n.width,width:n.width,height:n.height}}(t,l(e),s),o=n(e);return-1!==["right","left"].indexOf(i)?(r.top=a.top+a.height/2-o.height/2,r.left="left"===i?a.left-o.width:a.right):(r.left=a.left+a.width/2-o.width/2,r.top="top"===i?a.top-o.height:a.bottom),r.width=o.width,r.height=o.height,{popper:r,reference:a}},i.prototype._setupEventListeners=function(){if(this.state.updateBound=this.update.bind(this),e.addEventListener("resize",this.state.updateBound),"window"!==this._options.boundariesElement){var t=u(this._reference);t!==e.document.body&&t!==e.document.documentElement||(t=e),t.addEventListener("scroll",this.state.updateBound),this.state.scrollTarget=t}},i.prototype._removeEventListeners=function(){e.removeEventListener("resize",this.state.updateBound),"window"!==this._options.boundariesElement&&this.state.scrollTarget&&(this.state.scrollTarget.removeEventListener("scroll",this.state.updateBound),this.state.scrollTarget=null),this.state.updateBound=null},i.prototype._getBoundaries=function(t,i,n){var r,s,a={};if("window"===n){var o=e.document.body,c=e.document.documentElement;r=Math.max(o.scrollHeight,o.offsetHeight,c.clientHeight,c.scrollHeight,c.offsetHeight),a={top:0,right:Math.max(o.scrollWidth,o.offsetWidth,c.clientWidth,c.scrollWidth,c.offsetWidth),bottom:r,left:0}}else if("viewport"===n){var d=l(this._popper),p=u(this._popper),f=h(d),m="fixed"===t.offsets.popper.position?0:(s=p)==document.body?Math.max(document.documentElement.scrollTop,document.body.scrollTop):s.scrollTop,v="fixed"===t.offsets.popper.position?0:function(e){return e==document.body?Math.max(document.documentElement.scrollLeft,document.body.scrollLeft):e.scrollLeft}(p);a={top:0-(f.top-m),right:e.document.documentElement.clientWidth-(f.left-v),bottom:e.document.documentElement.clientHeight-(f.top-m),left:0-(f.left-v)}}else a=l(this._popper)===n?{top:0,left:0,right:n.clientWidth,bottom:n.clientHeight}:h(n);return a.left+=i,a.right-=i,a.top=a.top+i,a.bottom=a.bottom-i,a},i.prototype.runModifiers=function(e,t,i){var n=t.slice();return void 0!==i&&(n=this._options.modifiers.slice(0,a(this._options.modifiers,i))),n.forEach(function(t){var i;(i=t)&&"[object Function]"==={}.toString.call(i)&&(e=t.call(this,e))}.bind(this)),e},i.prototype.isModifierRequired=function(e,t){var i=a(this._options.modifiers,e);return!!this._options.modifiers.slice(0,i).filter(function(e){return e===t}).length},i.prototype.modifiers={},i.prototype.modifiers.applyStyle=function(e){var t,i={position:e.offsets.popper.position},n=Math.round(e.offsets.popper.left),r=Math.round(e.offsets.popper.top);return this._options.gpuAcceleration&&(t=p("transform"))?(i[t]="translate3d("+n+"px, "+r+"px, 0)",i.top=0,i.left=0):(i.left=n,i.top=r),Object.assign(i,e.styles),c(this._popper,i),this._popper.setAttribute("x-placement",e.placement),this.isModifierRequired(this.modifiers.applyStyle,this.modifiers.arrow)&&e.offsets.arrow&&c(e.arrowElement,e.offsets.arrow),e},i.prototype.modifiers.shift=function(e){var t=e.placement,i=t.split("-")[0],n=t.split("-")[1];if(n){var r=e.offsets.reference,a=s(e.offsets.popper),o={y:{start:{top:r.top},end:{top:r.top+r.height-a.height}},x:{start:{left:r.left},end:{left:r.left+r.width-a.width}}},l=-1!==["bottom","top"].indexOf(i)?"x":"y";e.offsets.popper=Object.assign(a,o[l][n])}return e},i.prototype.modifiers.preventOverflow=function(e){var t=this._options.preventOverflowOrder,i=s(e.offsets.popper),n={left:function(){var t=i.left;return i.left<e.boundaries.left&&(t=Math.max(i.left,e.boundaries.left)),{left:t}},right:function(){var t=i.left;return i.right>e.boundaries.right&&(t=Math.min(i.left,e.boundaries.right-i.width)),{left:t}},top:function(){var t=i.top;return i.top<e.boundaries.top&&(t=Math.max(i.top,e.boundaries.top)),{top:t}},bottom:function(){var t=i.top;return i.bottom>e.boundaries.bottom&&(t=Math.min(i.top,e.boundaries.bottom-i.height)),{top:t}}};return t.forEach(function(t){e.offsets.popper=Object.assign(i,n[t]())}),e},i.prototype.modifiers.keepTogether=function(e){var t=s(e.offsets.popper),i=e.offsets.reference,n=Math.floor;return t.right<n(i.left)&&(e.offsets.popper.left=n(i.left)-t.width),t.left>n(i.right)&&(e.offsets.popper.left=n(i.right)),t.bottom<n(i.top)&&(e.offsets.popper.top=n(i.top)-t.height),t.top>n(i.bottom)&&(e.offsets.popper.top=n(i.bottom)),e},i.prototype.modifiers.flip=function(e){if(!this.isModifierRequired(this.modifiers.flip,this.modifiers.preventOverflow))return console.warn("WARNING: preventOverflow modifier is required by flip modifier in order to work, be sure to include it before flip!"),e;if(e.flipped&&e.placement===e._originalPlacement)return e;var t=e.placement.split("-")[0],i=r(t),n=e.placement.split("-")[1]||"",a=[];return(a="flip"===this._options.flipBehavior?[t,i]:this._options.flipBehavior).forEach(function(o,l){if(t===o&&a.length!==l+1){t=e.placement.split("-")[0],i=r(t);var u=s(e.offsets.popper),c=-1!==["right","bottom"].indexOf(t);(c&&Math.floor(e.offsets.reference[t])>Math.floor(u[i])||!c&&Math.floor(e.offsets.reference[t])<Math.floor(u[i]))&&(e.flipped=!0,e.placement=a[l+1],n&&(e.placement+="-"+n),e.offsets.popper=this._getOffsets(this._popper,this._reference,e.placement).popper,e=this.runModifiers(e,this._options.modifiers,this._flip))}}.bind(this)),e},i.prototype.modifiers.offset=function(e){var t=this._options.offset,i=e.offsets.popper;return-1!==e.placement.indexOf("left")?i.top-=t:-1!==e.placement.indexOf("right")?i.top+=t:-1!==e.placement.indexOf("top")?i.left-=t:-1!==e.placement.indexOf("bottom")&&(i.left+=t),e},i.prototype.modifiers.arrow=function(e){var t=this._options.arrowElement,i=this._options.arrowOffset;if("string"==typeof t&&(t=this._popper.querySelector(t)),!t)return e;if(!this._popper.contains(t))return console.warn("WARNING: `arrowElement` must be child of its popper element!"),e;if(!this.isModifierRequired(this.modifiers.arrow,this.modifiers.keepTogether))return console.warn("WARNING: keepTogether modifier is required by arrow modifier in order to work, be sure to include it before arrow!"),e;var r={},a=e.placement.split("-")[0],o=s(e.offsets.popper),l=e.offsets.reference,u=-1!==["left","right"].indexOf(a),c=u?"height":"width",h=u?"top":"left",d=u?"left":"top",p=u?"bottom":"right",f=n(t)[c];l[p]-f<o[h]&&(e.offsets.popper[h]-=o[h]-(l[p]-f)),l[h]+f>o[p]&&(e.offsets.popper[h]+=l[h]+f-o[p]);var m=l[h]+(i||l[c]/2-f/2)-o[h];return m=Math.max(Math.min(o[c]-f-8,m),8),r[h]=m,r[d]="",e.offsets.arrow=r,e.arrowElement=t,e},Object.assign||Object.defineProperty(Object,"assign",{enumerable:!1,configurable:!0,writable:!0,value:function(e){if(null==e)throw new TypeError("Cannot convert first argument to object");for(var t=Object(e),i=1;i<arguments.length;i++){var n=arguments[i];if(null!=n){n=Object(n);for(var r=Object.keys(n),s=0,a=r.length;s<a;s++){var o=r[s],l=Object.getOwnPropertyDescriptor(n,o);void 0!==l&&l.enumerable&&(t[o]=n[o])}}}return t}}),i})?n.call(t,i,t,e):n)||(e.exports=r)},function(e,t){var i;i=function(){return this}();try{i=i||new Function("return this")()}catch(e){"object"==typeof window&&(i=window)}e.exports=i},function(e,t,i){"use strict";var n=i(53),r=i(54),s=10,a=40,o=800;function l(e){var t=0,i=0,n=0,r=0;return"detail"in e&&(i=e.detail),"wheelDelta"in e&&(i=-e.wheelDelta/120),"wheelDeltaY"in e&&(i=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=i,i=0),n=t*s,r=i*s,"deltaY"in e&&(r=e.deltaY),"deltaX"in e&&(n=e.deltaX),(n||r)&&e.deltaMode&&(1==e.deltaMode?(n*=a,r*=a):(n*=o,r*=o)),n&&!t&&(t=n<1?-1:1),r&&!i&&(i=r<1?-1:1),{spinX:t,spinY:i,pixelX:n,pixelY:r}}l.getEventType=function(){return n.firefox()?"DOMMouseScroll":r("wheel")?"wheel":"mousewheel"},e.exports=l},function(e,t){var i,n,r,s,a,o,l,u,c,h,d,p,f,m,v,g=!1;function b(){if(!g){g=!0;var e=navigator.userAgent,t=/(?:MSIE.(\d+\.\d+))|(?:(?:Firefox|GranParadiso|Iceweasel).(\d+\.\d+))|(?:Opera(?:.+Version.|.)(\d+\.\d+))|(?:AppleWebKit.(\d+(?:\.\d+)?))|(?:Trident\/\d+\.\d+.*rv:(\d+\.\d+))/.exec(e),b=/(Mac OS X)|(Windows)|(Linux)/.exec(e);if(p=/\b(iPhone|iP[ao]d)/.exec(e),f=/\b(iP[ao]d)/.exec(e),h=/Android/i.exec(e),m=/FBAN\/\w+;/i.exec(e),v=/Mobile/i.exec(e),d=!!/Win64/.exec(e),t){(i=t[1]?parseFloat(t[1]):t[5]?parseFloat(t[5]):NaN)&&document&&document.documentMode&&(i=document.documentMode);var y=/(?:Trident\/(\d+.\d+))/.exec(e);o=y?parseFloat(y[1])+4:i,n=t[2]?parseFloat(t[2]):NaN,r=t[3]?parseFloat(t[3]):NaN,(s=t[4]?parseFloat(t[4]):NaN)?(t=/(?:Chrome\/(\d+\.\d+))/.exec(e),a=t&&t[1]?parseFloat(t[1]):NaN):a=NaN}else i=n=r=a=s=NaN;if(b){if(b[1]){var w=/(?:Mac OS X (\d+(?:[._]\d+)?))/.exec(e);l=!w||parseFloat(w[1].replace("_","."))}else l=!1;u=!!b[2],c=!!b[3]}else l=u=c=!1}}var y={ie:function(){return b()||i},ieCompatibilityMode:function(){return b()||o>i},ie64:function(){return y.ie()&&d},firefox:function(){return b()||n},opera:function(){return b()||r},webkit:function(){return b()||s},safari:function(){return y.webkit()},chrome:function(){return b()||a},windows:function(){return b()||u},osx:function(){return b()||l},linux:function(){return b()||c},iphone:function(){return b()||p},mobile:function(){return b()||p||f||h||v},nativeApp:function(){return b()||m},android:function(){return b()||h},ipad:function(){return b()||f}};e.exports=y},function(e,t,i){"use strict";var n,r=i(55);r.canUseDOM&&(n=document.implementation&&document.implementation.hasFeature&&!0!==document.implementation.hasFeature("","")),e.exports=function(e,t){if(!r.canUseDOM||t&&!("addEventListener"in document))return!1;var i="on"+e,s=i in document;if(!s){var a=document.createElement("div");a.setAttribute(i,"return;"),s="function"==typeof a[i]}return!s&&n&&"wheel"===e&&(s=document.implementation.hasFeature("Events.wheel","3.0")),s}},function(e,t,i){"use strict";var n=!("undefined"==typeof window||!window.document||!window.document.createElement),r={canUseDOM:n,canUseWorkers:"undefined"!=typeof Worker,canUseEventListeners:n&&!(!window.addEventListener&&!window.attachEvent),canUseViewport:n&&!!window.screen,isInWorker:!n};e.exports=r},function(e,t,i){e.exports={default:i(57),__esModule:!0}},function(e,t,i){i(58),e.exports=i(14).Object.assign},function(e,t,i){var n=i(23);n(n.S+n.F,"Object",{assign:i(61)})},function(e,t,i){var n=i(60);e.exports=function(e,t,i){if(n(e),void 0===t)return e;switch(i){case 1:return function(i){return e.call(t,i)};case 2:return function(i,n){return e.call(t,i,n)};case 3:return function(i,n,r){return e.call(t,i,n,r)}}return function(){return e.apply(t,arguments)}}},function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,t,i){"use strict";var n=i(19),r=i(30),s=i(22),a=i(41),o=i(39),l=Object.assign;e.exports=!l||i(16)(function(){var e={},t={},i=Symbol(),n="abcdefghijklmnopqrst";return e[i]=7,n.split("").forEach(function(e){t[e]=e}),7!=l({},e)[i]||Object.keys(l({},t)).join("")!=n})?function(e,t){for(var i=a(e),l=arguments.length,u=1,c=r.f,h=s.f;l>u;)for(var d,p=o(arguments[u++]),f=c?n(p).concat(c(p)):n(p),m=f.length,v=0;m>v;)h.call(p,d=f[v++])&&(i[d]=p[d]);return i}:l},function(e,t,i){var n=i(12),r=i(63),s=i(64);e.exports=function(e){return function(t,i,a){var o,l=n(t),u=r(l.length),c=s(a,u);if(e&&i!=i){for(;u>c;)if((o=l[c++])!=o)return!0}else for(;u>c;c++)if((e||c in l)&&l[c]===i)return e||c||0;return!e&&-1}}},function(e,t,i){var n=i(26),r=Math.min;e.exports=function(e){return e>0?r(n(e),9007199254740991):0}},function(e,t,i){var n=i(26),r=Math.max,s=Math.min;e.exports=function(e,t){return(e=n(e))<0?r(e+t,0):s(e,t)}},function(e,t,i){e.exports={default:i(66),__esModule:!0}},function(e,t,i){i(67),i(73),e.exports=i(33).f("iterator")},function(e,t,i){"use strict";var n=i(68)(!0);i(42)(String,"String",function(e){this._t=String(e),this._i=0},function(){var e,t=this._t,i=this._i;return i>=t.length?{value:void 0,done:!0}:(e=n(t,i),this._i+=e.length,{value:e,done:!1})})},function(e,t,i){var n=i(26),r=i(25);e.exports=function(e){return function(t,i){var s,a,o=String(r(t)),l=n(i),u=o.length;return l<0||l>=u?e?"":void 0:(s=o.charCodeAt(l))<55296||s>56319||l+1===u||(a=o.charCodeAt(l+1))<56320||a>57343?e?o.charAt(l):s:e?o.slice(l,l+2):a-56320+(s-55296<<10)+65536}}},function(e,t,i){"use strict";var n=i(44),r=i(18),s=i(32),a={};i(9)(a,i(13)("iterator"),function(){return this}),e.exports=function(e,t,i){e.prototype=n(a,{next:r(1,i)}),s(e,t+" Iterator")}},function(e,t,i){var n=i(10),r=i(17),s=i(19);e.exports=i(11)?Object.defineProperties:function(e,t){r(e);for(var i,a=s(t),o=a.length,l=0;o>l;)n.f(e,i=a[l++],t[i]);return e}},function(e,t,i){var n=i(5).document;e.exports=n&&n.documentElement},function(e,t,i){var n=i(7),r=i(41),s=i(27)("IE_PROTO"),a=Object.prototype;e.exports=Object.getPrototypeOf||function(e){return e=r(e),n(e,s)?e[s]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?a:null}},function(e,t,i){i(74);for(var n=i(5),r=i(9),s=i(31),a=i(13)("toStringTag"),o="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),l=0;l<o.length;l++){var u=o[l],c=n[u],h=c&&c.prototype;h&&!h[a]&&r(h,a,u),s[u]=s.Array}},function(e,t,i){"use strict";var n=i(75),r=i(76),s=i(31),a=i(12);e.exports=i(42)(Array,"Array",function(e,t){this._t=a(e),this._i=0,this._k=t},function(){var e=this._t,t=this._k,i=this._i++;return!e||i>=e.length?(this._t=void 0,r(1)):r(0,"keys"==t?i:"values"==t?e[i]:[i,e[i]])},"values"),s.Arguments=s.Array,n("keys"),n("values"),n("entries")},function(e,t){e.exports=function(){}},function(e,t){e.exports=function(e,t){return{value:t,done:!!e}}},function(e,t,i){e.exports={default:i(78),__esModule:!0}},function(e,t,i){i(79),i(85),i(86),i(87),e.exports=i(14).Symbol},function(e,t,i){"use strict";var n=i(5),r=i(7),s=i(11),a=i(23),o=i(43),l=i(80).KEY,u=i(16),c=i(28),h=i(32),d=i(21),p=i(13),f=i(33),m=i(34),v=i(81),g=i(82),b=i(17),y=i(15),w=i(12),_=i(24),x=i(18),C=i(44),k=i(83),S=i(84),D=i(10),$=i(19),E=S.f,T=D.f,M=k.f,N=n.Symbol,P=n.JSON,O=P&&P.stringify,I=p("_hidden"),A=p("toPrimitive"),F={}.propertyIsEnumerable,L=c("symbol-registry"),V=c("symbols"),B=c("op-symbols"),z=Object.prototype,H="function"==typeof N,R=n.QObject,W=!R||!R.prototype||!R.prototype.findChild,j=s&&u(function(){return 7!=C(T({},"a",{get:function(){return T(this,"a",{value:7}).a}})).a})?function(e,t,i){var n=E(z,t);n&&delete z[t],T(e,t,i),n&&e!==z&&T(z,t,n)}:T,q=function(e){var t=V[e]=C(N.prototype);return t._k=e,t},Y=H&&"symbol"==typeof N.iterator?function(e){return"symbol"==typeof e}:function(e){return e instanceof N},K=function(e,t,i){return e===z&&K(B,t,i),b(e),t=_(t,!0),b(i),r(V,t)?(i.enumerable?(r(e,I)&&e[I][t]&&(e[I][t]=!1),i=C(i,{enumerable:x(0,!1)})):(r(e,I)||T(e,I,x(1,{})),e[I][t]=!0),j(e,t,i)):T(e,t,i)},G=function(e,t){b(e);for(var i,n=v(t=w(t)),r=0,s=n.length;s>r;)K(e,i=n[r++],t[i]);return e},U=function(e){var t=F.call(this,e=_(e,!0));return!(this===z&&r(V,e)&&!r(B,e))&&(!(t||!r(this,e)||!r(V,e)||r(this,I)&&this[I][e])||t)},X=function(e,t){if(e=w(e),t=_(t,!0),e!==z||!r(V,t)||r(B,t)){var i=E(e,t);return!i||!r(V,t)||r(e,I)&&e[I][t]||(i.enumerable=!0),i}},J=function(e){for(var t,i=M(w(e)),n=[],s=0;i.length>s;)r(V,t=i[s++])||t==I||t==l||n.push(t);return n},Z=function(e){for(var t,i=e===z,n=M(i?B:w(e)),s=[],a=0;n.length>a;)!r(V,t=n[a++])||i&&!r(z,t)||s.push(V[t]);return s};H||(o((N=function(){if(this instanceof N)throw TypeError("Symbol is not a constructor!");var e=d(arguments.length>0?arguments[0]:void 0),t=function(i){this===z&&t.call(B,i),r(this,I)&&r(this[I],e)&&(this[I][e]=!1),j(this,e,x(1,i))};return s&&W&&j(z,e,{configurable:!0,set:t}),q(e)}).prototype,"toString",function(){return this._k}),S.f=X,D.f=K,i(45).f=k.f=J,i(22).f=U,i(30).f=Z,s&&!i(20)&&o(z,"propertyIsEnumerable",U,!0),f.f=function(e){return q(p(e))}),a(a.G+a.W+a.F*!H,{Symbol:N});for(var Q="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),ee=0;Q.length>ee;)p(Q[ee++]);for(var te=$(p.store),ie=0;te.length>ie;)m(te[ie++]);a(a.S+a.F*!H,"Symbol",{for:function(e){return r(L,e+="")?L[e]:L[e]=N(e)},keyFor:function(e){if(!Y(e))throw TypeError(e+" is not a symbol!");for(var t in L)if(L[t]===e)return t},useSetter:function(){W=!0},useSimple:function(){W=!1}}),a(a.S+a.F*!H,"Object",{create:function(e,t){return void 0===t?C(e):G(C(e),t)},defineProperty:K,defineProperties:G,getOwnPropertyDescriptor:X,getOwnPropertyNames:J,getOwnPropertySymbols:Z}),P&&a(a.S+a.F*(!H||u(function(){var e=N();return"[null]"!=O([e])||"{}"!=O({a:e})||"{}"!=O(Object(e))})),"JSON",{stringify:function(e){for(var t,i,n=[e],r=1;arguments.length>r;)n.push(arguments[r++]);if(i=t=n[1],(y(t)||void 0!==e)&&!Y(e))return g(t)||(t=function(e,t){if("function"==typeof i&&(t=i.call(this,e,t)),!Y(t))return t}),n[1]=t,O.apply(P,n)}}),N.prototype[A]||i(9)(N.prototype,A,N.prototype.valueOf),h(N,"Symbol"),h(Math,"Math",!0),h(n.JSON,"JSON",!0)},function(e,t,i){var n=i(21)("meta"),r=i(15),s=i(7),a=i(10).f,o=0,l=Object.isExtensible||function(){return!0},u=!i(16)(function(){return l(Object.preventExtensions({}))}),c=function(e){a(e,n,{value:{i:"O"+ ++o,w:{}}})},h=e.exports={KEY:n,NEED:!1,fastKey:function(e,t){if(!r(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!s(e,n)){if(!l(e))return"F";if(!t)return"E";c(e)}return e[n].i},getWeak:function(e,t){if(!s(e,n)){if(!l(e))return!0;if(!t)return!1;c(e)}return e[n].w},onFreeze:function(e){return u&&h.NEED&&l(e)&&!s(e,n)&&c(e),e}}},function(e,t,i){var n=i(19),r=i(30),s=i(22);e.exports=function(e){var t=n(e),i=r.f;if(i)for(var a,o=i(e),l=s.f,u=0;o.length>u;)l.call(e,a=o[u++])&&t.push(a);return t}},function(e,t,i){var n=i(40);e.exports=Array.isArray||function(e){return"Array"==n(e)}},function(e,t,i){var n=i(12),r=i(45).f,s={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];e.exports.f=function(e){return a&&"[object Window]"==s.call(e)?function(e){try{return r(e)}catch(e){return a.slice()}}(e):r(n(e))}},function(e,t,i){var n=i(22),r=i(18),s=i(12),a=i(24),o=i(7),l=i(36),u=Object.getOwnPropertyDescriptor;t.f=i(11)?u:function(e,t){if(e=s(e),t=a(t,!0),l)try{return u(e,t)}catch(e){}if(o(e,t))return r(!n.f.call(e,t),e[t])}},function(e,t){},function(e,t,i){i(34)("asyncIterator")},function(e,t,i){i(34)("observable")},function(e,t,i){"use strict";i.r(t);var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("ul",{staticClass:"el-pager",on:{click:e.onPagerClick}},[e.pageCount>0?i("li",{staticClass:"number",class:{active:1===e.currentPage,disabled:e.disabled}},[e._v("1")]):e._e(),e.showPrevMore?i("li",{staticClass:"el-icon more btn-quickprev",class:[e.quickprevIconClass,{disabled:e.disabled}],on:{mouseenter:function(t){e.onMouseenter("left")},mouseleave:function(t){e.quickprevIconClass="el-icon-more"}}}):e._e(),e._l(e.pagers,function(t){return i("li",{key:t,staticClass:"number",class:{active:e.currentPage===t,disabled:e.disabled}},[e._v(e._s(t))])}),e.showNextMore?i("li",{staticClass:"el-icon more btn-quicknext",class:[e.quicknextIconClass,{disabled:e.disabled}],on:{mouseenter:function(t){e.onMouseenter("right")},mouseleave:function(t){e.quicknextIconClass="el-icon-more"}}}):e._e(),e.pageCount>1?i("li",{staticClass:"number",class:{active:e.currentPage===e.pageCount,disabled:e.disabled}},[e._v(e._s(e.pageCount))]):e._e()],2)};function r(e,t,i,n,r,s,a,o){var l,u="function"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=i,u._compiled=!0),n&&(u.functional=!0),s&&(u._scopeId="data-v-"+s),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},u._ssrRegister=l):r&&(l=o?function(){r.call(this,this.$root.$options.shadowRoot)}:r),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var h=u.beforeCreate;u.beforeCreate=h?[].concat(h,l):[l]}return{exports:e,options:u}}n._withStripped=!0;var s=r({name:"ElPager",props:{currentPage:Number,pageCount:Number,pagerCount:Number,disabled:Boolean},watch:{showPrevMore:function(e){e||(this.quickprevIconClass="el-icon-more")},showNextMore:function(e){e||(this.quicknextIconClass="el-icon-more")}},methods:{onPagerClick:function(e){var t=e.target;if("UL"!==t.tagName&&!this.disabled){var i=Number(e.target.textContent),n=this.pageCount,r=this.currentPage,s=this.pagerCount-2;-1!==t.className.indexOf("more")&&(-1!==t.className.indexOf("quickprev")?i=r-s:-1!==t.className.indexOf("quicknext")&&(i=r+s)),isNaN(i)||(i<1&&(i=1),i>n&&(i=n)),i!==r&&this.$emit("change",i)}},onMouseenter:function(e){this.disabled||("left"===e?this.quickprevIconClass="el-icon-d-arrow-left":this.quicknextIconClass="el-icon-d-arrow-right")}},computed:{pagers:function(){var e=this.pagerCount,t=(e-1)/2,i=Number(this.currentPage),n=Number(this.pageCount),r=!1,s=!1;n>e&&(i>e-t&&(r=!0),i<n-t&&(s=!0));var a=[];if(r&&!s)for(var o=n-(e-2);o<n;o++)a.push(o);else if(!r&&s)for(var l=2;l<e;l++)a.push(l);else if(r&&s)for(var u=Math.floor(e/2)-1,c=i-u;c<=i+u;c++)a.push(c);else for(var h=2;h<n;h++)a.push(h);return this.showPrevMore=r,this.showNextMore=s,a}},data:function(){return{current:null,showPrevMore:!1,showNextMore:!1,quicknextIconClass:"el-icon-more",quickprevIconClass:"el-icon-more"}}},n,[],!1,null,null,null);s.options.__file="packages/pagination/src/pager.vue";var a=s.exports,o=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleClose,expression:"handleClose"}],staticClass:"el-select",class:[e.selectSize?"el-select--"+e.selectSize:""],on:{click:function(t){return t.stopPropagation(),e.toggleMenu(t)}}},[e.multiple?i("div",{ref:"tags",staticClass:"el-select__tags",style:{"max-width":e.inputWidth-32+"px",width:"100%"}},[e.collapseTags&&e.selected.length?i("span",[i("el-tag",{attrs:{closable:!e.selectDisabled,size:e.collapseTagSize,hit:e.selected[0].hitState,type:"info","disable-transitions":""},on:{close:function(t){e.deleteTag(t,e.selected[0])}}},[i("span",{staticClass:"el-select__tags-text"},[e._v(e._s(e.selected[0].currentLabel))])]),e.selected.length>1?i("el-tag",{attrs:{closable:!1,size:e.collapseTagSize,type:"info","disable-transitions":""}},[i("span",{staticClass:"el-select__tags-text"},[e._v("+ "+e._s(e.selected.length-1))])]):e._e()],1):e._e(),e.collapseTags?e._e():i("transition-group",{on:{"after-leave":e.resetInputHeight}},e._l(e.selected,function(t){return i("el-tag",{key:e.getValueKey(t),attrs:{closable:!e.selectDisabled,size:e.collapseTagSize,hit:t.hitState,type:"info","disable-transitions":""},on:{close:function(i){e.deleteTag(i,t)}}},[i("span",{staticClass:"el-select__tags-text"},[e._v(e._s(t.currentLabel))])])}),1),e.filterable?i("input",{directives:[{name:"model",rawName:"v-model",value:e.query,expression:"query"}],ref:"input",staticClass:"el-select__input",class:[e.selectSize?"is-"+e.selectSize:""],style:{"flex-grow":"1",width:e.inputLength/(e.inputWidth-32)+"%","max-width":e.inputWidth-42+"px"},attrs:{type:"text",disabled:e.selectDisabled,autocomplete:e.autoComplete||e.autocomplete},domProps:{value:e.query},on:{focus:e.handleFocus,blur:function(t){e.softFocus=!1},keyup:e.managePlaceholder,keydown:[e.resetInputState,function(t){if(!("button"in t)&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"]))return null;t.preventDefault(),e.navigateOptions("next")},function(t){if(!("button"in t)&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"]))return null;t.preventDefault(),e.navigateOptions("prev")},function(t){return"button"in t||!e._k(t.keyCode,"enter",13,t.key,"Enter")?(t.preventDefault(),e.selectOption(t)):null},function(t){if(!("button"in t)&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"]))return null;t.stopPropagation(),t.preventDefault(),e.visible=!1},function(t){return"button"in t||!e._k(t.keyCode,"delete",[8,46],t.key,["Backspace","Delete","Del"])?e.deletePrevTag(t):null},function(t){if(!("button"in t)&&e._k(t.keyCode,"tab",9,t.key,"Tab"))return null;e.visible=!1}],compositionstart:e.handleComposition,compositionupdate:e.handleComposition,compositionend:e.handleComposition,input:[function(t){t.target.composing||(e.query=t.target.value)},e.debouncedQueryChange]}}):e._e()],1):e._e(),i("el-input",{ref:"reference",class:{"is-focus":e.visible},attrs:{type:"text",placeholder:e.currentPlaceholder,name:e.name,id:e.id,autocomplete:e.autoComplete||e.autocomplete,size:e.selectSize,disabled:e.selectDisabled,readonly:e.readonly,"validate-event":!1,tabindex:e.multiple&&e.filterable?"-1":null},on:{focus:e.handleFocus,blur:e.handleBlur},nativeOn:{keyup:function(t){return e.debouncedOnInputChange(t)},keydown:[function(t){if(!("button"in t)&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"]))return null;t.stopPropagation(),t.preventDefault(),e.navigateOptions("next")},function(t){if(!("button"in t)&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"]))return null;t.stopPropagation(),t.preventDefault(),e.navigateOptions("prev")},function(t){return"button"in t||!e._k(t.keyCode,"enter",13,t.key,"Enter")?(t.preventDefault(),e.selectOption(t)):null},function(t){if(!("button"in t)&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"]))return null;t.stopPropagation(),t.preventDefault(),e.visible=!1},function(t){if(!("button"in t)&&e._k(t.keyCode,"tab",9,t.key,"Tab"))return null;e.visible=!1}],paste:function(t){return e.debouncedOnInputChange(t)},mouseenter:function(t){e.inputHovering=!0},mouseleave:function(t){e.inputHovering=!1}},model:{value:e.selectedLabel,callback:function(t){e.selectedLabel=t},expression:"selectedLabel"}},[e.$slots.prefix?i("template",{slot:"prefix"},[e._t("prefix")],2):e._e(),i("template",{slot:"suffix"},[i("i",{directives:[{name:"show",rawName:"v-show",value:!e.showClose,expression:"!showClose"}],class:["el-select__caret","el-input__icon","el-icon-"+e.iconClass]}),e.showClose?i("i",{staticClass:"el-select__caret el-input__icon el-icon-circle-close",on:{click:e.handleClearClick}}):e._e()])],2),i("transition",{attrs:{name:"el-zoom-in-top"},on:{"before-enter":e.handleMenuEnter,"after-leave":e.doDestroy}},[i("el-select-menu",{directives:[{name:"show",rawName:"v-show",value:e.visible&&!1!==e.emptyText,expression:"visible && emptyText !== false"}],ref:"popper",attrs:{"append-to-body":e.popperAppendToBody}},[i("el-scrollbar",{directives:[{name:"show",rawName:"v-show",value:e.options.length>0&&!e.loading,expression:"options.length > 0 && !loading"}],ref:"scrollbar",class:{"is-empty":!e.allowCreate&&e.query&&0===e.filteredOptionsCount},attrs:{tag:"ul","wrap-class":"el-select-dropdown__wrap","view-class":"el-select-dropdown__list"}},[e.showNewOption?i("el-option",{attrs:{value:e.query,created:""}}):e._e(),e._t("default")],2),e.emptyText&&(!e.allowCreate||e.loading||e.allowCreate&&0===e.options.length)?[e.$slots.empty?e._t("empty"):i("p",{staticClass:"el-select-dropdown__empty"},[e._v("\n          "+e._s(e.emptyText)+"\n        ")])]:e._e()],2)],1)],1)};o._withStripped=!0;var l={methods:{dispatch:function(e,t,i){for(var n=this.$parent||this.$root,r=n.$options.componentName;n&&(!r||r!==e);)(n=n.$parent)&&(r=n.$options.componentName);n&&n.$emit.apply(n,[t].concat(i))},broadcast:function(e,t,i){(function e(t,i,n){this.$children.forEach(function(r){r.$options.componentName===t?r.$emit.apply(r,[i].concat(n)):e.apply(r,[t,i].concat([n]))})}).call(this,e,t,i)}}},u=function(e){return{methods:{focus:function(){this.$refs[e].focus()}}}},c=i(0),h=i.n(c),d=i(46),p=i.n(d);function f(e){return"[object String]"===Object.prototype.toString.call(e)}function m(e){return"[object Object]"===Object.prototype.toString.call(e)}function v(e){return e&&e.nodeType===Node.ELEMENT_NODE}var g=function(e){return e&&"[object Function]"==={}.toString.call(e)},b=function(e){return void 0===e},y="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},w=Object.prototype.hasOwnProperty;function _(){}function x(e,t){return w.call(e,t)}function C(e,t){for(var i in t)e[i]=t[i];return e}var k=function(e,t){for(var i=(t=t||"").split("."),n=e,r=null,s=0,a=i.length;s<a;s++){var o=i[s];if(!n)break;if(s===a-1){r=n[o];break}n=n[o]}return r};function S(e,t,i){for(var n=e,r=(t=(t=t.replace(/\[(\w+)\]/g,".$1")).replace(/^\./,"")).split("."),s=0,a=r.length;s<a-1&&(n||i);++s){var o=r[s];if(!(o in n)){if(i)throw new Error("please transfer a valid prop path to form item!");break}n=n[o]}return{o:n,k:r[s],v:n?n[r[s]]:null}}var D=function(){return Math.floor(1e4*Math.random())},$=function(e,t){if(e===t)return!0;if(!(e instanceof Array))return!1;if(!(t instanceof Array))return!1;if(e.length!==t.length)return!1;for(var i=0;i!==e.length;++i)if(e[i]!==t[i])return!1;return!0},E=function(e,t){for(var i=0;i!==e.length;++i)if(t(e[i]))return i;return-1},T=function(e,t){var i=E(e,t);return-1!==i?e[i]:void 0},M=function(e){return Array.isArray(e)?e:e?[e]:[]},N=function(e){var t=/([^-])([A-Z])/g;return e.replace(t,"$1-$2").replace(t,"$1-$2").toLowerCase()},P=function(e){return f(e)?e.charAt(0).toUpperCase()+e.slice(1):e},O=function(e,t){var i=m(e),n=m(t);return i&&n?JSON.stringify(e)===JSON.stringify(t):!i&&!n&&String(e)===String(t)},I=function(e,t){return Array.isArray(e)&&Array.isArray(t)?function(e,t){if(t=t||[],(e=e||[]).length!==t.length)return!1;for(var i=0;i<e.length;i++)if(!O(e[i],t[i]))return!1;return!0}(e,t):O(e,t)},A=function(e){if(null==e)return!0;if("boolean"==typeof e)return!1;if("number"==typeof e)return!e;if(e instanceof Error)return""===e.message;switch(Object.prototype.toString.call(e)){case"[object String]":case"[object Array]":return!e.length;case"[object File]":case"[object Map]":case"[object Set]":return!e.size;case"[object Object]":return!Object.keys(e).length}return!1};function F(e){var t=!1;return function(){for(var i=this,n=arguments.length,r=Array(n),s=0;s<n;s++)r[s]=arguments[s];t||(t=!0,window.requestAnimationFrame(function(n){e.apply(i,r),t=!1}))}}var 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},V=/(%|)\{([0-9a-zA-Z_]+)\}/g,B=function(e){return function(e){for(var t=arguments.length,i=Array(t>1?t-1:0),n=1;n<t;n++)i[n-1]=arguments[n];return 1===i.length&&"object"===L(i[0])&&(i=i[0]),i&&i.hasOwnProperty||(i={}),e.replace(V,function(t,n,r,s){var a=void 0;return"{"===e[s-1]&&"}"===e[s+t.length]?r:null==(a=x(i,r)?i[r]:null)?"":a})}}(h.a),z={el:{colorpicker:{confirm:"确定",clear:"清空"},datepicker:{now:"此刻",today:"今天",cancel:"取消",clear:"清空",confirm:"确定",selectDate:"选择日期",selectTime:"选择时间",startDate:"开始日期",startTime:"开始时间",endDate:"结束日期",endTime:"结束时间",prevYear:"前一年",nextYear:"后一年",prevMonth:"上个月",nextMonth:"下个月",year:"年",month1:"1 月",month2:"2 月",month3:"3 月",month4:"4 月",month5:"5 月",month6:"6 月",month7:"7 月",month8:"8 月",month9:"9 月",month10:"10 月",month11:"11 月",month12:"12 月",weeks:{sun:"日",mon:"一",tue:"二",wed:"三",thu:"四",fri:"五",sat:"六"},months:{jan:"一月",feb:"二月",mar:"三月",apr:"四月",may:"五月",jun:"六月",jul:"七月",aug:"八月",sep:"九月",oct:"十月",nov:"十一月",dec:"十二月"}},select:{loading:"加载中",noMatch:"无匹配数据",noData:"无数据",placeholder:"请选择"},cascader:{noMatch:"无匹配数据",loading:"加载中",placeholder:"请选择",noData:"暂无数据"},pagination:{goto:"前往",pagesize:"条/页",total:"共 {total} 条",pageClassifier:"页"},messagebox:{title:"提示",confirm:"确定",cancel:"取消",error:"输入的数据不合法!"},upload:{deleteTip:"按 delete 键可删除",delete:"删除",preview:"查看图片",continue:"继续上传"},table:{emptyText:"暂无数据",confirmFilter:"筛选",resetFilter:"重置",clearFilter:"全部",sumText:"合计"},tree:{emptyText:"暂无数据"},transfer:{noMatch:"无匹配数据",noData:"无数据",titles:["列表 1","列表 2"],filterPlaceholder:"请输入搜索内容",noCheckedFormat:"共 {total} 项",hasCheckedFormat:"已选 {checked}/{total} 项"},image:{error:"加载失败"},pageHeader:{title:"返回"},popconfirm:{confirmButtonText:"确定",cancelButtonText:"取消"}}},H=!1,R=function(){var e=Object.getPrototypeOf(this||h.a).$t;if("function"==typeof e&&h.a.locale)return H||(H=!0,h.a.locale(h.a.config.lang,p()(z,h.a.locale(h.a.config.lang)||{},{clone:!0}))),e.apply(this,arguments)},W=function(e,t){var i=R.apply(this,arguments);if(null!=i)return i;for(var n=e.split("."),r=z,s=0,a=n.length;s<a;s++){if(i=r[n[s]],s===a-1)return B(i,t);if(!i)return"";r=i}return""},j={use:function(e){z=e||z},t:W,i18n:function(e){R=e||R}},q={methods:{t:function(){for(var e=arguments.length,t=Array(e),i=0;i<e;i++)t[i]=arguments[i];return W.apply(this,t)}}},Y=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{class:["textarea"===e.type?"el-textarea":"el-input",e.inputSize?"el-input--"+e.inputSize:"",{"is-disabled":e.inputDisabled,"is-exceed":e.inputExceed,"el-input-group":e.$slots.prepend||e.$slots.append,"el-input-group--append":e.$slots.append,"el-input-group--prepend":e.$slots.prepend,"el-input--prefix":e.$slots.prefix||e.prefixIcon,"el-input--suffix":e.$slots.suffix||e.suffixIcon||e.clearable||e.showPassword}],on:{mouseenter:function(t){e.hovering=!0},mouseleave:function(t){e.hovering=!1}}},["textarea"!==e.type?[e.$slots.prepend?i("div",{staticClass:"el-input-group__prepend"},[e._t("prepend")],2):e._e(),"textarea"!==e.type?i("input",e._b({ref:"input",staticClass:"el-input__inner",attrs:{tabindex:e.tabindex,type:e.showPassword?e.passwordVisible?"text":"password":e.type,disabled:e.inputDisabled,readonly:e.readonly,autocomplete:e.autoComplete||e.autocomplete,"aria-label":e.label},on:{compositionstart:e.handleCompositionStart,compositionupdate:e.handleCompositionUpdate,compositionend:e.handleCompositionEnd,input:e.handleInput,focus:e.handleFocus,blur:e.handleBlur,change:e.handleChange}},"input",e.$attrs,!1)):e._e(),e.$slots.prefix||e.prefixIcon?i("span",{staticClass:"el-input__prefix"},[e._t("prefix"),e.prefixIcon?i("i",{staticClass:"el-input__icon",class:e.prefixIcon}):e._e()],2):e._e(),e.getSuffixVisible()?i("span",{staticClass:"el-input__suffix"},[i("span",{staticClass:"el-input__suffix-inner"},[e.showClear&&e.showPwdVisible&&e.isWordLimitVisible?e._e():[e._t("suffix"),e.suffixIcon?i("i",{staticClass:"el-input__icon",class:e.suffixIcon}):e._e()],e.showClear?i("i",{staticClass:"el-input__icon el-icon-circle-close el-input__clear",on:{mousedown:function(e){e.preventDefault()},click:e.clear}}):e._e(),e.showPwdVisible?i("i",{staticClass:"el-input__icon el-icon-view el-input__clear",on:{click:e.handlePasswordVisible}}):e._e(),e.isWordLimitVisible?i("span",{staticClass:"el-input__count"},[i("span",{staticClass:"el-input__count-inner"},[e._v("\n            "+e._s(e.textLength)+"/"+e._s(e.upperLimit)+"\n          ")])]):e._e()],2),e.validateState?i("i",{staticClass:"el-input__icon",class:["el-input__validateIcon",e.validateIcon]}):e._e()]):e._e(),e.$slots.append?i("div",{staticClass:"el-input-group__append"},[e._t("append")],2):e._e()]:i("textarea",e._b({ref:"textarea",staticClass:"el-textarea__inner",style:e.textareaStyle,attrs:{tabindex:e.tabindex,disabled:e.inputDisabled,readonly:e.readonly,autocomplete:e.autoComplete||e.autocomplete,"aria-label":e.label},on:{compositionstart:e.handleCompositionStart,compositionupdate:e.handleCompositionUpdate,compositionend:e.handleCompositionEnd,input:e.handleInput,focus:e.handleFocus,blur:e.handleBlur,change:e.handleChange}},"textarea",e.$attrs,!1)),e.isWordLimitVisible&&"textarea"===e.type?i("span",{staticClass:"el-input__count"},[e._v(e._s(e.textLength)+"/"+e._s(e.upperLimit))]):e._e()],2)};Y._withStripped=!0;var K={mounted:function(){},methods:{getMigratingConfig:function(){return{props:{},events:{}}}}},G=void 0,U="\n  height:0 !important;\n  visibility:hidden !important;\n  overflow:hidden !important;\n  position:absolute !important;\n  z-index:-1000 !important;\n  top:0 !important;\n  right:0 !important\n",X=["letter-spacing","line-height","padding-top","padding-bottom","font-family","font-weight","font-size","text-rendering","text-transform","width","text-indent","padding-left","padding-right","border-width","box-sizing"];function J(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;G||(G=document.createElement("textarea"),document.body.appendChild(G));var n=function(e){var t=window.getComputedStyle(e),i=t.getPropertyValue("box-sizing"),n=parseFloat(t.getPropertyValue("padding-bottom"))+parseFloat(t.getPropertyValue("padding-top")),r=parseFloat(t.getPropertyValue("border-bottom-width"))+parseFloat(t.getPropertyValue("border-top-width"));return{contextStyle:X.map(function(e){return e+":"+t.getPropertyValue(e)}).join(";"),paddingSize:n,borderSize:r,boxSizing:i}}(e),r=n.paddingSize,s=n.borderSize,a=n.boxSizing,o=n.contextStyle;G.setAttribute("style",o+";"+U),G.value=e.value||e.placeholder||"";var l=G.scrollHeight,u={};"border-box"===a?l+=s:"content-box"===a&&(l-=r),G.value="";var c=G.scrollHeight-r;if(null!==t){var h=c*t;"border-box"===a&&(h=h+r+s),l=Math.max(h,l),u.minHeight=h+"px"}if(null!==i){var d=c*i;"border-box"===a&&(d=d+r+s),l=Math.min(d,l)}return u.height=l+"px",G.parentNode&&G.parentNode.removeChild(G),G=null,u}var Z=function(e){for(var t=1,i=arguments.length;t<i;t++){var n=arguments[t]||{};for(var r in n)if(n.hasOwnProperty(r)){var s=n[r];void 0!==s&&(e[r]=s)}}return e};function Q(e){return null!=e}function ee(e){return/([(\uAC00-\uD7AF)|(\u3130-\u318F)])+/gi.test(e)}var te=r({name:"ElInput",componentName:"ElInput",mixins:[l,K],inheritAttrs:!1,inject:{elForm:{default:""},elFormItem:{default:""}},data:function(){return{textareaCalcStyle:{},hovering:!1,focused:!1,isComposing:!1,passwordVisible:!1}},props:{value:[String,Number],size:String,resize:String,form:String,disabled:Boolean,readonly:Boolean,type:{type:String,default:"text"},autosize:{type:[Boolean,Object],default:!1},autocomplete:{type:String,default:"off"},autoComplete:{type:String,validator:function(e){return!0}},validateEvent:{type:Boolean,default:!0},suffixIcon:String,prefixIcon:String,label:String,clearable:{type:Boolean,default:!1},showPassword:{type:Boolean,default:!1},showWordLimit:{type:Boolean,default:!1},tabindex:String},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},validateState:function(){return this.elFormItem?this.elFormItem.validateState:""},needStatusIcon:function(){return!!this.elForm&&this.elForm.statusIcon},validateIcon:function(){return{validating:"el-icon-loading",success:"el-icon-circle-check",error:"el-icon-circle-close"}[this.validateState]},textareaStyle:function(){return Z({},this.textareaCalcStyle,{resize:this.resize})},inputSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},inputDisabled:function(){return this.disabled||(this.elForm||{}).disabled},nativeInputValue:function(){return null===this.value||void 0===this.value?"":String(this.value)},showClear:function(){return this.clearable&&!this.inputDisabled&&!this.readonly&&this.nativeInputValue&&(this.focused||this.hovering)},showPwdVisible:function(){return this.showPassword&&!this.inputDisabled&&!this.readonly&&(!!this.nativeInputValue||this.focused)},isWordLimitVisible:function(){return this.showWordLimit&&this.$attrs.maxlength&&("text"===this.type||"textarea"===this.type)&&!this.inputDisabled&&!this.readonly&&!this.showPassword},upperLimit:function(){return this.$attrs.maxlength},textLength:function(){return"number"==typeof this.value?String(this.value).length:(this.value||"").length},inputExceed:function(){return this.isWordLimitVisible&&this.textLength>this.upperLimit}},watch:{value:function(e){this.$nextTick(this.resizeTextarea),this.validateEvent&&this.dispatch("ElFormItem","el.form.change",[e])},nativeInputValue:function(){this.setNativeInputValue()},type:function(){var e=this;this.$nextTick(function(){e.setNativeInputValue(),e.resizeTextarea(),e.updateIconOffset()})}},methods:{focus:function(){this.getInput().focus()},blur:function(){this.getInput().blur()},getMigratingConfig:function(){return{props:{icon:"icon is removed, use suffix-icon / prefix-icon instead.","on-icon-click":"on-icon-click is removed."},events:{click:"click is removed."}}},handleBlur:function(e){this.focused=!1,this.$emit("blur",e),this.validateEvent&&this.dispatch("ElFormItem","el.form.blur",[this.value])},select:function(){this.getInput().select()},resizeTextarea:function(){if(!this.$isServer){var e=this.autosize;if("textarea"===this.type)if(e){var t=e.minRows,i=e.maxRows;this.textareaCalcStyle=J(this.$refs.textarea,t,i)}else this.textareaCalcStyle={minHeight:J(this.$refs.textarea).minHeight}}},setNativeInputValue:function(){var e=this.getInput();e&&e.value!==this.nativeInputValue&&(e.value=this.nativeInputValue)},handleFocus:function(e){this.focused=!0,this.$emit("focus",e)},handleCompositionStart:function(){this.isComposing=!0},handleCompositionUpdate:function(e){var t=e.target.value,i=t[t.length-1]||"";this.isComposing=!ee(i)},handleCompositionEnd:function(e){this.isComposing&&(this.isComposing=!1,this.handleInput(e))},handleInput:function(e){this.isComposing||e.target.value!==this.nativeInputValue&&(this.$emit("input",e.target.value),this.$nextTick(this.setNativeInputValue))},handleChange:function(e){this.$emit("change",e.target.value)},calcIconOffset:function(e){var t=[].slice.call(this.$el.querySelectorAll(".el-input__"+e)||[]);if(t.length){for(var i=null,n=0;n<t.length;n++)if(t[n].parentNode===this.$el){i=t[n];break}if(i){var r={suffix:"append",prefix:"prepend"}[e];this.$slots[r]?i.style.transform="translateX("+("suffix"===e?"-":"")+this.$el.querySelector(".el-input-group__"+r).offsetWidth+"px)":i.removeAttribute("style")}}},updateIconOffset:function(){this.calcIconOffset("prefix"),this.calcIconOffset("suffix")},clear:function(){this.$emit("input",""),this.$emit("change",""),this.$emit("clear")},handlePasswordVisible:function(){this.passwordVisible=!this.passwordVisible,this.focus()},getInput:function(){return this.$refs.input||this.$refs.textarea},getSuffixVisible:function(){return this.$slots.suffix||this.suffixIcon||this.showClear||this.showPassword||this.isWordLimitVisible||this.validateState&&this.needStatusIcon}},created:function(){this.$on("inputSelect",this.select)},mounted:function(){this.setNativeInputValue(),this.resizeTextarea(),this.updateIconOffset()},updated:function(){this.$nextTick(this.updateIconOffset)}},Y,[],!1,null,null,null);te.options.__file="packages/input/src/input.vue";var ie=te.exports;ie.install=function(e){e.component(ie.name,ie)};var ne=ie,re=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-select-dropdown el-popper",class:[{"is-multiple":this.$parent.multiple},this.popperClass],style:{minWidth:this.minWidth}},[this._t("default")],2)};re._withStripped=!0;"function"==typeof Symbol&&Symbol.iterator;var se=h.a.prototype.$isServer,ae=/([\:\-\_]+(.))/g,oe=/^moz([A-Z])/,le=se?0:Number(document.documentMode),ue=function(e){return(e||"").replace(/^[\s\uFEFF]+|[\s\uFEFF]+$/g,"")},ce=function(e){return e.replace(ae,function(e,t,i,n){return n?i.toUpperCase():i}).replace(oe,"Moz$1")},he=!se&&document.addEventListener?function(e,t,i){e&&t&&i&&e.addEventListener(t,i,!1)}:function(e,t,i){e&&t&&i&&e.attachEvent("on"+t,i)},de=!se&&document.removeEventListener?function(e,t,i){e&&t&&e.removeEventListener(t,i,!1)}:function(e,t,i){e&&t&&e.detachEvent("on"+t,i)};function pe(e,t){if(!e||!t)return!1;if(-1!==t.indexOf(" "))throw new Error("className should not contain space.");return e.classList?e.classList.contains(t):(" "+e.className+" ").indexOf(" "+t+" ")>-1}function fe(e,t){if(e){for(var i=e.className,n=(t||"").split(" "),r=0,s=n.length;r<s;r++){var a=n[r];a&&(e.classList?e.classList.add(a):pe(e,a)||(i+=" "+a))}e.classList||(e.className=i)}}function me(e,t){if(e&&t){for(var i=t.split(" "),n=" "+e.className+" ",r=0,s=i.length;r<s;r++){var a=i[r];a&&(e.classList?e.classList.remove(a):pe(e,a)&&(n=n.replace(" "+a+" "," ")))}e.classList||(e.className=ue(n))}}var ve=le<9?function(e,t){if(!se){if(!e||!t)return null;"float"===(t=ce(t))&&(t="styleFloat");try{switch(t){case"opacity":try{return e.filters.item("alpha").opacity/100}catch(e){return 1}default:return e.style[t]||e.currentStyle?e.currentStyle[t]:null}}catch(i){return e.style[t]}}}:function(e,t){if(!se){if(!e||!t)return null;"float"===(t=ce(t))&&(t="cssFloat");try{var i=document.defaultView.getComputedStyle(e,"");return e.style[t]||i?i[t]:null}catch(i){return e.style[t]}}};var ge=function(e,t){if(!se)return ve(e,null!==t||void 0!==t?t?"overflow-y":"overflow-x":"overflow").match(/(scroll|auto)/)},be=function(e,t){if(!se){for(var i=e;i;){if([window,document,document.documentElement].includes(i))return window;if(ge(i,t))return i;i=i.parentNode}return i}},ye=!1,we=!1,_e=void 0,xe=function(){if(!h.a.prototype.$isServer){var e=ke.modalDom;return e?ye=!0:(ye=!1,e=document.createElement("div"),ke.modalDom=e,e.addEventListener("touchmove",function(e){e.preventDefault(),e.stopPropagation()}),e.addEventListener("click",function(){ke.doOnModalClick&&ke.doOnModalClick()})),e}},Ce={},ke={modalFade:!0,getInstance:function(e){return Ce[e]},register:function(e,t){e&&t&&(Ce[e]=t)},deregister:function(e){e&&(Ce[e]=null,delete Ce[e])},nextZIndex:function(){return ke.zIndex++},modalStack:[],doOnModalClick:function(){var e=ke.modalStack[ke.modalStack.length-1];if(e){var t=ke.getInstance(e.id);t&&t.closeOnClickModal&&t.close()}},openModal:function(e,t,i,n,r){if(!h.a.prototype.$isServer&&e&&void 0!==t){this.modalFade=r;for(var s=this.modalStack,a=0,o=s.length;a<o;a++){if(s[a].id===e)return}var l=xe();if(fe(l,"v-modal"),this.modalFade&&!ye&&fe(l,"v-modal-enter"),n)n.trim().split(/\s+/).forEach(function(e){return fe(l,e)});setTimeout(function(){me(l,"v-modal-enter")},200),i&&i.parentNode&&11!==i.parentNode.nodeType?i.parentNode.appendChild(l):document.body.appendChild(l),t&&(l.style.zIndex=t),l.tabIndex=0,l.style.display="",this.modalStack.push({id:e,zIndex:t,modalClass:n})}},closeModal:function(e){var t=this.modalStack,i=xe();if(t.length>0){var n=t[t.length-1];if(n.id===e){if(n.modalClass)n.modalClass.trim().split(/\s+/).forEach(function(e){return me(i,e)});t.pop(),t.length>0&&(i.style.zIndex=t[t.length-1].zIndex)}else for(var r=t.length-1;r>=0;r--)if(t[r].id===e){t.splice(r,1);break}}0===t.length&&(this.modalFade&&fe(i,"v-modal-leave"),setTimeout(function(){0===t.length&&(i.parentNode&&i.parentNode.removeChild(i),i.style.display="none",ke.modalDom=void 0),me(i,"v-modal-leave")},200))}};Object.defineProperty(ke,"zIndex",{configurable:!0,get:function(){return we||(_e=_e||(h.a.prototype.$ELEMENT||{}).zIndex||2e3,we=!0),_e},set:function(e){_e=e}});h.a.prototype.$isServer||window.addEventListener("keydown",function(e){if(27===e.keyCode){var t=function(){if(!h.a.prototype.$isServer&&ke.modalStack.length>0){var e=ke.modalStack[ke.modalStack.length-1];if(!e)return;return ke.getInstance(e.id)}}();t&&t.closeOnPressEscape&&(t.handleClose?t.handleClose():t.handleAction?t.handleAction("cancel"):t.close())}});var Se=ke,De=void 0,$e=function(){if(h.a.prototype.$isServer)return 0;if(void 0!==De)return De;var e=document.createElement("div");e.className="el-scrollbar__wrap",e.style.visibility="hidden",e.style.width="100px",e.style.position="absolute",e.style.top="-9999px",document.body.appendChild(e);var t=e.offsetWidth;e.style.overflow="scroll";var i=document.createElement("div");i.style.width="100%",e.appendChild(i);var n=i.offsetWidth;return e.parentNode.removeChild(e),De=t-n},Ee=1,Te=void 0,Me={props:{visible:{type:Boolean,default:!1},openDelay:{},closeDelay:{},zIndex:{},modal:{type:Boolean,default:!1},modalFade:{type:Boolean,default:!0},modalClass:{},modalAppendToBody:{type:Boolean,default:!1},lockScroll:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!1},closeOnClickModal:{type:Boolean,default:!1}},beforeMount:function(){this._popupId="popup-"+Ee++,Se.register(this._popupId,this)},beforeDestroy:function(){Se.deregister(this._popupId),Se.closeModal(this._popupId),this.restoreBodyStyle()},data:function(){return{opened:!1,bodyPaddingRight:null,computedBodyPaddingRight:0,withoutHiddenClass:!0,rendered:!1}},watch:{visible:function(e){var t=this;if(e){if(this._opening)return;this.rendered?this.open():(this.rendered=!0,h.a.nextTick(function(){t.open()}))}else this.close()}},methods:{open:function(e){var t=this;this.rendered||(this.rendered=!0);var i=Z({},this.$props||this,e);this._closeTimer&&(clearTimeout(this._closeTimer),this._closeTimer=null),clearTimeout(this._openTimer);var n=Number(i.openDelay);n>0?this._openTimer=setTimeout(function(){t._openTimer=null,t.doOpen(i)},n):this.doOpen(i)},doOpen:function(e){if(!this.$isServer&&(!this.willOpen||this.willOpen())&&!this.opened){this._opening=!0;var t=this.$el,i=e.modal,n=e.zIndex;if(n&&(Se.zIndex=n),i&&(this._closing&&(Se.closeModal(this._popupId),this._closing=!1),Se.openModal(this._popupId,Se.nextZIndex(),this.modalAppendToBody?void 0:t,e.modalClass,e.modalFade),e.lockScroll)){this.withoutHiddenClass=!pe(document.body,"el-popup-parent--hidden"),this.withoutHiddenClass&&(this.bodyPaddingRight=document.body.style.paddingRight,this.computedBodyPaddingRight=parseInt(ve(document.body,"paddingRight"),10)),Te=$e();var r=document.documentElement.clientHeight<document.body.scrollHeight,s=ve(document.body,"overflowY");Te>0&&(r||"scroll"===s)&&this.withoutHiddenClass&&(document.body.style.paddingRight=this.computedBodyPaddingRight+Te+"px"),fe(document.body,"el-popup-parent--hidden")}"static"===getComputedStyle(t).position&&(t.style.position="absolute"),t.style.zIndex=Se.nextZIndex(),this.opened=!0,this.onOpen&&this.onOpen(),this.doAfterOpen()}},doAfterOpen:function(){this._opening=!1},close:function(){var e=this;if(!this.willClose||this.willClose()){null!==this._openTimer&&(clearTimeout(this._openTimer),this._openTimer=null),clearTimeout(this._closeTimer);var t=Number(this.closeDelay);t>0?this._closeTimer=setTimeout(function(){e._closeTimer=null,e.doClose()},t):this.doClose()}},doClose:function(){this._closing=!0,this.onClose&&this.onClose(),this.lockScroll&&setTimeout(this.restoreBodyStyle,200),this.opened=!1,this.doAfterClose()},doAfterClose:function(){Se.closeModal(this._popupId),this._closing=!1},restoreBodyStyle:function(){this.modal&&this.withoutHiddenClass&&(document.body.style.paddingRight=this.bodyPaddingRight,me(document.body,"el-popup-parent--hidden")),this.withoutHiddenClass=!0}}},Ne=h.a.prototype.$isServer?function(){}:i(50),Pe=function(e){return e.stopPropagation()},Oe={props:{transformOrigin:{type:[Boolean,String],default:!0},placement:{type:String,default:"bottom"},boundariesPadding:{type:Number,default:5},reference:{},popper:{},offset:{default:0},value:Boolean,visibleArrow:Boolean,arrowOffset:{type:Number,default:35},appendToBody:{type:Boolean,default:!0},popperOptions:{type:Object,default:function(){return{gpuAcceleration:!1}}}},data:function(){return{showPopper:!1,currentPlacement:""}},watch:{value:{immediate:!0,handler:function(e){this.showPopper=e,this.$emit("input",e)}},showPopper:function(e){this.disabled||(e?this.updatePopper():this.destroyPopper(),this.$emit("input",e))}},methods:{createPopper:function(){var e=this;if(!this.$isServer&&(this.currentPlacement=this.currentPlacement||this.placement,/^(top|bottom|left|right)(-start|-end)?$/g.test(this.currentPlacement))){var t=this.popperOptions,i=this.popperElm=this.popperElm||this.popper||this.$refs.popper,n=this.referenceElm=this.referenceElm||this.reference||this.$refs.reference;!n&&this.$slots.reference&&this.$slots.reference[0]&&(n=this.referenceElm=this.$slots.reference[0].elm),i&&n&&(this.visibleArrow&&this.appendArrow(i),this.appendToBody&&document.body.appendChild(this.popperElm),this.popperJS&&this.popperJS.destroy&&this.popperJS.destroy(),t.placement=this.currentPlacement,t.offset=this.offset,t.arrowOffset=this.arrowOffset,this.popperJS=new Ne(n,i,t),this.popperJS.onCreate(function(t){e.$emit("created",e),e.resetTransformOrigin(),e.$nextTick(e.updatePopper)}),"function"==typeof t.onUpdate&&this.popperJS.onUpdate(t.onUpdate),this.popperJS._popper.style.zIndex=Se.nextZIndex(),this.popperElm.addEventListener("click",Pe))}},updatePopper:function(){var e=this.popperJS;e?(e.update(),e._popper&&(e._popper.style.zIndex=Se.nextZIndex())):this.createPopper()},doDestroy:function(e){!this.popperJS||this.showPopper&&!e||(this.popperJS.destroy(),this.popperJS=null)},destroyPopper:function(){this.popperJS&&this.resetTransformOrigin()},resetTransformOrigin:function(){if(this.transformOrigin){var e=this.popperJS._popper.getAttribute("x-placement").split("-")[0],t={top:"bottom",bottom:"top",left:"right",right:"left"}[e];this.popperJS._popper.style.transformOrigin="string"==typeof this.transformOrigin?this.transformOrigin:["top","bottom"].indexOf(e)>-1?"center "+t:t+" center"}},appendArrow:function(e){var t=void 0;if(!this.appended){for(var i in this.appended=!0,e.attributes)if(/^_v-/.test(e.attributes[i].name)){t=e.attributes[i].name;break}var n=document.createElement("div");t&&n.setAttribute(t,""),n.setAttribute("x-arrow",""),n.className="popper__arrow",e.appendChild(n)}}},beforeDestroy:function(){this.doDestroy(!0),this.popperElm&&this.popperElm.parentNode===document.body&&(this.popperElm.removeEventListener("click",Pe),document.body.removeChild(this.popperElm))},deactivated:function(){this.$options.beforeDestroy[0].call(this)}},Ie=r({name:"ElSelectDropdown",componentName:"ElSelectDropdown",mixins:[Oe],props:{placement:{default:"bottom-start"},boundariesPadding:{default:0},popperOptions:{default:function(){return{gpuAcceleration:!1}}},visibleArrow:{default:!0},appendToBody:{type:Boolean,default:!0}},data:function(){return{minWidth:""}},computed:{popperClass:function(){return this.$parent.popperClass}},watch:{"$parent.inputWidth":function(){this.minWidth=this.$parent.$el.getBoundingClientRect().width+"px"}},mounted:function(){var e=this;this.referenceElm=this.$parent.$refs.reference.$el,this.$parent.popperElm=this.popperElm=this.$el,this.$on("updatePopper",function(){e.$parent.visible&&e.updatePopper()}),this.$on("destroyPopper",this.destroyPopper)}},re,[],!1,null,null,null);Ie.options.__file="packages/select/src/select-dropdown.vue";var Ae=Ie.exports,Fe=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("li",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-select-dropdown__item",class:{selected:e.itemSelected,"is-disabled":e.disabled||e.groupDisabled||e.limitReached,hover:e.hover},on:{mouseenter:e.hoverItem,click:function(t){return t.stopPropagation(),e.selectOptionClick(t)}}},[e._t("default",[i("span",[e._v(e._s(e.currentLabel))])])],2)};Fe._withStripped=!0;var Le="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},Ve=r({mixins:[l],name:"ElOption",componentName:"ElOption",inject:["select"],props:{value:{required:!0},label:[String,Number],created:Boolean,disabled:{type:Boolean,default:!1}},data:function(){return{index:-1,groupDisabled:!1,visible:!0,hitState:!1,hover:!1}},computed:{isObject:function(){return"[object object]"===Object.prototype.toString.call(this.value).toLowerCase()},currentLabel:function(){return this.label||(this.isObject?"":this.value)},currentValue:function(){return this.value||this.label||""},itemSelected:function(){return this.select.multiple?this.contains(this.select.value,this.value):this.isEqual(this.value,this.select.value)},limitReached:function(){return!!this.select.multiple&&(!this.itemSelected&&(this.select.value||[]).length>=this.select.multipleLimit&&this.select.multipleLimit>0)}},watch:{currentLabel:function(){this.created||this.select.remote||this.dispatch("ElSelect","setSelected")},value:function(e,t){var i=this.select,n=i.remote,r=i.valueKey;if(!this.created&&!n){if(r&&"object"===(void 0===e?"undefined":Le(e))&&"object"===(void 0===t?"undefined":Le(t))&&e[r]===t[r])return;this.dispatch("ElSelect","setSelected")}}},methods:{isEqual:function(e,t){if(this.isObject){var i=this.select.valueKey;return k(e,i)===k(t,i)}return e===t},contains:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1];if(this.isObject){var i=this.select.valueKey;return e&&e.some(function(e){return k(e,i)===k(t,i)})}return e&&e.indexOf(t)>-1},handleGroupDisabled:function(e){this.groupDisabled=e},hoverItem:function(){this.disabled||this.groupDisabled||(this.select.hoverIndex=this.select.options.indexOf(this))},selectOptionClick:function(){!0!==this.disabled&&!0!==this.groupDisabled&&this.dispatch("ElSelect","handleOptionClick",[this,!0])},queryChange:function(e){this.visible=new RegExp(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return String(e).replace(/[|\\{}()[\]^$+*?.]/g,"\\$&")}(e),"i").test(this.currentLabel)||this.created,this.visible||this.select.filteredOptionsCount--}},created:function(){this.select.options.push(this),this.select.cachedOptions.push(this),this.select.optionsCount++,this.select.filteredOptionsCount++,this.$on("queryChange",this.queryChange),this.$on("handleGroupDisabled",this.handleGroupDisabled)},beforeDestroy:function(){var e=this.select,t=e.selected,i=e.multiple?t:[t],n=this.select.cachedOptions.indexOf(this),r=i.indexOf(this);n>-1&&r<0&&this.select.cachedOptions.splice(n,1),this.select.onOptionDestroy(this.select.options.indexOf(this))}},Fe,[],!1,null,null,null);Ve.options.__file="packages/select/src/option.vue";var Be=Ve.exports,ze=r({name:"ElTag",props:{text:String,closable:Boolean,type:String,hit:Boolean,disableTransitions:Boolean,color:String,size:String,effect:{type:String,default:"light",validator:function(e){return-1!==["dark","light","plain"].indexOf(e)}}},methods:{handleClose:function(e){e.stopPropagation(),this.$emit("close",e)},handleClick:function(e){this.$emit("click",e)}},computed:{tagSize:function(){return this.size||(this.$ELEMENT||{}).size}},render:function(e){var t=this.type,i=this.tagSize,n=this.hit,r=this.effect,s=e("span",{class:["el-tag",t?"el-tag--"+t:"",i?"el-tag--"+i:"",r?"el-tag--"+r:"",n&&"is-hit"],style:{backgroundColor:this.color},on:{click:this.handleClick}},[this.$slots.default,this.closable&&e("i",{class:"el-tag__close el-icon-close",on:{click:this.handleClose}})]);return this.disableTransitions?s:e("transition",{attrs:{name:"el-zoom-in-center"}},[s])}},void 0,void 0,!1,null,null,null);ze.options.__file="packages/tag/src/tag.vue";var He=ze.exports;He.install=function(e){e.component(He.name,He)};var Re=He,We=i(47),je="undefined"==typeof window,qe=function(e){var t=e,i=Array.isArray(t),n=0;for(t=i?t:t[Symbol.iterator]();;){var r;if(i){if(n>=t.length)break;r=t[n++]}else{if((n=t.next()).done)break;r=n.value}var s=r.target.__resizeListeners__||[];s.length&&s.forEach(function(e){e()})}},Ye=function(e,t){je||(e.__resizeListeners__||(e.__resizeListeners__=[],e.__ro__=new We.a(qe),e.__ro__.observe(e)),e.__resizeListeners__.push(t))},Ke=function(e,t){e&&e.__resizeListeners__&&(e.__resizeListeners__.splice(e.__resizeListeners__.indexOf(t),1),e.__resizeListeners__.length||e.__ro__.disconnect())},Ge={vertical:{offset:"offsetHeight",scroll:"scrollTop",scrollSize:"scrollHeight",size:"height",key:"vertical",axis:"Y",client:"clientY",direction:"top"},horizontal:{offset:"offsetWidth",scroll:"scrollLeft",scrollSize:"scrollWidth",size:"width",key:"horizontal",axis:"X",client:"clientX",direction:"left"}};function Ue(e){var t=e.move,i=e.size,n=e.bar,r={},s="translate"+n.axis+"("+t+"%)";return r[n.size]=i,r.transform=s,r.msTransform=s,r.webkitTransform=s,r}var Xe={name:"Bar",props:{vertical:Boolean,size:String,move:Number},computed:{bar:function(){return Ge[this.vertical?"vertical":"horizontal"]},wrap:function(){return this.$parent.wrap}},render:function(e){var t=this.size,i=this.move,n=this.bar;return e("div",{class:["el-scrollbar__bar","is-"+n.key],on:{mousedown:this.clickTrackHandler}},[e("div",{ref:"thumb",class:"el-scrollbar__thumb",on:{mousedown:this.clickThumbHandler},style:Ue({size:t,move:i,bar:n})})])},methods:{clickThumbHandler:function(e){e.ctrlKey||2===e.button||(this.startDrag(e),this[this.bar.axis]=e.currentTarget[this.bar.offset]-(e[this.bar.client]-e.currentTarget.getBoundingClientRect()[this.bar.direction]))},clickTrackHandler:function(e){var t=100*(Math.abs(e.target.getBoundingClientRect()[this.bar.direction]-e[this.bar.client])-this.$refs.thumb[this.bar.offset]/2)/this.$el[this.bar.offset];this.wrap[this.bar.scroll]=t*this.wrap[this.bar.scrollSize]/100},startDrag:function(e){e.stopImmediatePropagation(),this.cursorDown=!0,he(document,"mousemove",this.mouseMoveDocumentHandler),he(document,"mouseup",this.mouseUpDocumentHandler),document.onselectstart=function(){return!1}},mouseMoveDocumentHandler:function(e){if(!1!==this.cursorDown){var t=this[this.bar.axis];if(t){var i=100*(-1*(this.$el.getBoundingClientRect()[this.bar.direction]-e[this.bar.client])-(this.$refs.thumb[this.bar.offset]-t))/this.$el[this.bar.offset];this.wrap[this.bar.scroll]=i*this.wrap[this.bar.scrollSize]/100}}},mouseUpDocumentHandler:function(e){this.cursorDown=!1,this[this.bar.axis]=0,de(document,"mousemove",this.mouseMoveDocumentHandler),document.onselectstart=null}},destroyed:function(){de(document,"mouseup",this.mouseUpDocumentHandler)}},Je={name:"ElScrollbar",components:{Bar:Xe},props:{native:Boolean,wrapStyle:{},wrapClass:{},viewClass:{},viewStyle:{},noresize:Boolean,tag:{type:String,default:"div"}},data:function(){return{sizeWidth:"0",sizeHeight:"0",moveX:0,moveY:0}},computed:{wrap:function(){return this.$refs.wrap}},render:function(e){var t=$e(),i=this.wrapStyle;if(t){var n="-"+t+"px",r="margin-bottom: "+n+"; margin-right: "+n+";";Array.isArray(this.wrapStyle)?(i=function(e){for(var t={},i=0;i<e.length;i++)e[i]&&C(t,e[i]);return t}(this.wrapStyle)).marginRight=i.marginBottom=n:"string"==typeof this.wrapStyle?i+=r:i=r}var s=e(this.tag,{class:["el-scrollbar__view",this.viewClass],style:this.viewStyle,ref:"resize"},this.$slots.default),a=e("div",{ref:"wrap",style:i,on:{scroll:this.handleScroll},class:[this.wrapClass,"el-scrollbar__wrap",t?"":"el-scrollbar__wrap--hidden-default"]},[[s]]),o=void 0;return o=this.native?[e("div",{ref:"wrap",class:[this.wrapClass,"el-scrollbar__wrap"],style:i},[[s]])]:[a,e(Xe,{attrs:{move:this.moveX,size:this.sizeWidth}}),e(Xe,{attrs:{vertical:!0,move:this.moveY,size:this.sizeHeight}})],e("div",{class:"el-scrollbar"},o)},methods:{handleScroll:function(){var e=this.wrap;this.moveY=100*e.scrollTop/e.clientHeight,this.moveX=100*e.scrollLeft/e.clientWidth},update:function(){var e,t,i=this.wrap;i&&(e=100*i.clientHeight/i.scrollHeight,t=100*i.clientWidth/i.scrollWidth,this.sizeHeight=e<100?e+"%":"",this.sizeWidth=t<100?t+"%":"")}},mounted:function(){this.native||(this.$nextTick(this.update),!this.noresize&&Ye(this.$refs.resize,this.update))},beforeDestroy:function(){this.native||!this.noresize&&Ke(this.$refs.resize,this.update)},install:function(e){e.component(Je.name,Je)}},Ze=Je,Qe=i(1),et=i.n(Qe),tt=[],it="@@clickoutsideContext",nt=void 0,rt=0;function st(e,t,i){return function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};!(i&&i.context&&n.target&&r.target)||e.contains(n.target)||e.contains(r.target)||e===n.target||i.context.popperElm&&(i.context.popperElm.contains(n.target)||i.context.popperElm.contains(r.target))||(t.expression&&e[it].methodName&&i.context[e[it].methodName]?i.context[e[it].methodName]():e[it].bindingFn&&e[it].bindingFn())}}!h.a.prototype.$isServer&&he(document,"mousedown",function(e){return nt=e}),!h.a.prototype.$isServer&&he(document,"mouseup",function(e){tt.forEach(function(t){return t[it].documentHandler(e,nt)})});var at={bind:function(e,t,i){tt.push(e);var n=rt++;e[it]={id:n,documentHandler:st(e,t,i),methodName:t.expression,bindingFn:t.value}},update:function(e,t,i){e[it].documentHandler=st(e,t,i),e[it].methodName=t.expression,e[it].bindingFn=t.value},unbind:function(e){for(var t=tt.length,i=0;i<t;i++)if(tt[i][it].id===e[it].id){tt.splice(i,1);break}delete e[it]}};function ot(e,t){if(!h.a.prototype.$isServer)if(t){for(var i=[],n=t.offsetParent;n&&e!==n&&e.contains(n);)i.push(n),n=n.offsetParent;var r=t.offsetTop+i.reduce(function(e,t){return e+t.offsetTop},0),s=r+t.offsetHeight,a=e.scrollTop,o=a+e.clientHeight;r<a?e.scrollTop=r:s>o&&(e.scrollTop=s-e.clientHeight)}else e.scrollTop=0}var lt=r({mixins:[l,q,u("reference"),{data:function(){return{hoverOption:-1}},computed:{optionsAllDisabled:function(){return this.options.filter(function(e){return e.visible}).every(function(e){return e.disabled})}},watch:{hoverIndex:function(e){var t=this;"number"==typeof e&&e>-1&&(this.hoverOption=this.options[e]||{}),this.options.forEach(function(e){e.hover=t.hoverOption===e})}},methods:{navigateOptions:function(e){var t=this;if(this.visible){if(0!==this.options.length&&0!==this.filteredOptionsCount&&!this.optionsAllDisabled){"next"===e?(this.hoverIndex++,this.hoverIndex===this.options.length&&(this.hoverIndex=0)):"prev"===e&&(this.hoverIndex--,this.hoverIndex<0&&(this.hoverIndex=this.options.length-1));var i=this.options[this.hoverIndex];!0!==i.disabled&&!0!==i.groupDisabled&&i.visible||this.navigateOptions(e),this.$nextTick(function(){return t.scrollToOption(t.hoverOption)})}}else this.visible=!0}}}],name:"ElSelect",componentName:"ElSelect",inject:{elForm:{default:""},elFormItem:{default:""}},provide:function(){return{select:this}},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},readonly:function(){return!this.filterable||this.multiple||!(!h.a.prototype.$isServer&&!isNaN(Number(document.documentMode)))&&!(!h.a.prototype.$isServer&&navigator.userAgent.indexOf("Edge")>-1)&&!this.visible},showClose:function(){var e=this.multiple?Array.isArray(this.value)&&this.value.length>0:void 0!==this.value&&null!==this.value&&""!==this.value;return this.clearable&&!this.selectDisabled&&this.inputHovering&&e},iconClass:function(){return this.remote&&this.filterable?"":this.visible?"arrow-up is-reverse":"arrow-up"},debounce:function(){return this.remote?300:0},emptyText:function(){return this.loading?this.loadingText||this.t("el.select.loading"):(!this.remote||""!==this.query||0!==this.options.length)&&(this.filterable&&this.query&&this.options.length>0&&0===this.filteredOptionsCount?this.noMatchText||this.t("el.select.noMatch"):0===this.options.length?this.noDataText||this.t("el.select.noData"):null)},showNewOption:function(){var e=this,t=this.options.filter(function(e){return!e.created}).some(function(t){return t.currentLabel===e.query});return this.filterable&&this.allowCreate&&""!==this.query&&!t},selectSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},selectDisabled:function(){return this.disabled||(this.elForm||{}).disabled},collapseTagSize:function(){return["small","mini"].indexOf(this.selectSize)>-1?"mini":"small"},propPlaceholder:function(){return void 0!==this.placeholder?this.placeholder:this.t("el.select.placeholder")}},components:{ElInput:ne,ElSelectMenu:Ae,ElOption:Be,ElTag:Re,ElScrollbar:Ze},directives:{Clickoutside:at},props:{name:String,id:String,value:{required:!0},autocomplete:{type:String,default:"off"},autoComplete:{type:String,validator:function(e){return!0}},automaticDropdown:Boolean,size:String,disabled:Boolean,clearable:Boolean,filterable:Boolean,allowCreate:Boolean,loading:Boolean,popperClass:String,remote:Boolean,loadingText:String,noMatchText:String,noDataText:String,remoteMethod:Function,filterMethod:Function,multiple:Boolean,multipleLimit:{type:Number,default:0},placeholder:{type:String,required:!1},defaultFirstOption:Boolean,reserveKeyword:Boolean,valueKey:{type:String,default:"value"},collapseTags:Boolean,popperAppendToBody:{type:Boolean,default:!0}},data:function(){return{options:[],cachedOptions:[],createdLabel:null,createdSelected:!1,selected:this.multiple?[]:{},inputLength:20,inputWidth:0,initialInputHeight:0,cachedPlaceHolder:"",optionsCount:0,filteredOptionsCount:0,visible:!1,softFocus:!1,selectedLabel:"",hoverIndex:-1,query:"",previousQuery:null,inputHovering:!1,currentPlaceholder:"",menuVisibleOnFocus:!1,isOnComposition:!1,isSilentBlur:!1}},watch:{selectDisabled:function(){var e=this;this.$nextTick(function(){e.resetInputHeight()})},propPlaceholder:function(e){this.cachedPlaceHolder=this.currentPlaceholder=e},value:function(e,t){this.multiple&&(this.resetInputHeight(),e&&e.length>0||this.$refs.input&&""!==this.query?this.currentPlaceholder="":this.currentPlaceholder=this.cachedPlaceHolder,this.filterable&&!this.reserveKeyword&&(this.query="",this.handleQueryChange(this.query))),this.setSelected(),this.filterable&&!this.multiple&&(this.inputLength=20),$(e,t)||this.dispatch("ElFormItem","el.form.change",e)},visible:function(e){var t=this;e?(this.broadcast("ElSelectDropdown","updatePopper"),this.filterable&&(this.query=this.remote?"":this.selectedLabel,this.handleQueryChange(this.query),this.multiple?this.$refs.input.focus():(this.remote||(this.broadcast("ElOption","queryChange",""),this.broadcast("ElOptionGroup","queryChange")),this.selectedLabel&&(this.currentPlaceholder=this.selectedLabel,this.selectedLabel="")))):(this.broadcast("ElSelectDropdown","destroyPopper"),this.$refs.input&&this.$refs.input.blur(),this.query="",this.previousQuery=null,this.selectedLabel="",this.inputLength=20,this.menuVisibleOnFocus=!1,this.resetHoverIndex(),this.$nextTick(function(){t.$refs.input&&""===t.$refs.input.value&&0===t.selected.length&&(t.currentPlaceholder=t.cachedPlaceHolder)}),this.multiple||(this.selected&&(this.filterable&&this.allowCreate&&this.createdSelected&&this.createdLabel?this.selectedLabel=this.createdLabel:this.selectedLabel=this.selected.currentLabel,this.filterable&&(this.query=this.selectedLabel)),this.filterable&&(this.currentPlaceholder=this.cachedPlaceHolder))),this.$emit("visible-change",e)},options:function(){var e=this;if(!this.$isServer){this.$nextTick(function(){e.broadcast("ElSelectDropdown","updatePopper")}),this.multiple&&this.resetInputHeight();var t=this.$el.querySelectorAll("input");-1===[].indexOf.call(t,document.activeElement)&&this.setSelected(),this.defaultFirstOption&&(this.filterable||this.remote)&&this.filteredOptionsCount&&this.checkDefaultFirstOption()}}},methods:{handleComposition:function(e){var t=this,i=e.target.value;if("compositionend"===e.type)this.isOnComposition=!1,this.$nextTick(function(e){return t.handleQueryChange(i)});else{var n=i[i.length-1]||"";this.isOnComposition=!ee(n)}},handleQueryChange:function(e){var t=this;this.previousQuery===e||this.isOnComposition||(null!==this.previousQuery||"function"!=typeof this.filterMethod&&"function"!=typeof this.remoteMethod?(this.previousQuery=e,this.$nextTick(function(){t.visible&&t.broadcast("ElSelectDropdown","updatePopper")}),this.hoverIndex=-1,this.multiple&&this.filterable&&this.$nextTick(function(){var e=15*t.$refs.input.value.length+20;t.inputLength=t.collapseTags?Math.min(50,e):e,t.managePlaceholder(),t.resetInputHeight()}),this.remote&&"function"==typeof this.remoteMethod?(this.hoverIndex=-1,this.remoteMethod(e)):"function"==typeof this.filterMethod?(this.filterMethod(e),this.broadcast("ElOptionGroup","queryChange")):(this.filteredOptionsCount=this.optionsCount,this.broadcast("ElOption","queryChange",e),this.broadcast("ElOptionGroup","queryChange")),this.defaultFirstOption&&(this.filterable||this.remote)&&this.filteredOptionsCount&&this.checkDefaultFirstOption()):this.previousQuery=e)},scrollToOption:function(e){var t=Array.isArray(e)&&e[0]?e[0].$el:e.$el;this.$refs.popper&&t&&ot(this.$refs.popper.$el.querySelector(".el-select-dropdown__wrap"),t);this.$refs.scrollbar&&this.$refs.scrollbar.handleScroll()},handleMenuEnter:function(){var e=this;this.$nextTick(function(){return e.scrollToOption(e.selected)})},emitChange:function(e){$(this.value,e)||this.$emit("change",e)},getOption:function(e){for(var t=void 0,i="[object object]"===Object.prototype.toString.call(e).toLowerCase(),n="[object null]"===Object.prototype.toString.call(e).toLowerCase(),r="[object undefined]"===Object.prototype.toString.call(e).toLowerCase(),s=this.cachedOptions.length-1;s>=0;s--){var a=this.cachedOptions[s];if(i?k(a.value,this.valueKey)===k(e,this.valueKey):a.value===e){t=a;break}}if(t)return t;var o={value:e,currentLabel:i||n||r?"":e};return this.multiple&&(o.hitState=!1),o},setSelected:function(){var e=this;if(!this.multiple){var t=this.getOption(this.value);return t.created?(this.createdLabel=t.currentLabel,this.createdSelected=!0):this.createdSelected=!1,this.selectedLabel=t.currentLabel,this.selected=t,void(this.filterable&&(this.query=this.selectedLabel))}var i=[];Array.isArray(this.value)&&this.value.forEach(function(t){i.push(e.getOption(t))}),this.selected=i,this.$nextTick(function(){e.resetInputHeight()})},handleFocus:function(e){this.softFocus?this.softFocus=!1:((this.automaticDropdown||this.filterable)&&(this.visible=!0,this.filterable&&(this.menuVisibleOnFocus=!0)),this.$emit("focus",e))},blur:function(){this.visible=!1,this.$refs.reference.blur()},handleBlur:function(e){var t=this;setTimeout(function(){t.isSilentBlur?t.isSilentBlur=!1:t.$emit("blur",e)},50),this.softFocus=!1},handleClearClick:function(e){this.deleteSelected(e)},doDestroy:function(){this.$refs.popper&&this.$refs.popper.doDestroy()},handleClose:function(){this.visible=!1},toggleLastOptionHitState:function(e){if(Array.isArray(this.selected)){var t=this.selected[this.selected.length-1];if(t)return!0===e||!1===e?(t.hitState=e,e):(t.hitState=!t.hitState,t.hitState)}},deletePrevTag:function(e){if(e.target.value.length<=0&&!this.toggleLastOptionHitState()){var t=this.value.slice();t.pop(),this.$emit("input",t),this.emitChange(t)}},managePlaceholder:function(){""!==this.currentPlaceholder&&(this.currentPlaceholder=this.$refs.input.value?"":this.cachedPlaceHolder)},resetInputState:function(e){8!==e.keyCode&&this.toggleLastOptionHitState(!1),this.inputLength=15*this.$refs.input.value.length+20,this.resetInputHeight()},resetInputHeight:function(){var e=this;this.collapseTags&&!this.filterable||this.$nextTick(function(){if(e.$refs.reference){var t=e.$refs.reference.$el.childNodes,i=[].filter.call(t,function(e){return"INPUT"===e.tagName})[0],n=e.$refs.tags,r=e.initialInputHeight||40;i.style.height=0===e.selected.length?r+"px":Math.max(n?n.clientHeight+(n.clientHeight>r?6:0):0,r)+"px",e.visible&&!1!==e.emptyText&&e.broadcast("ElSelectDropdown","updatePopper")}})},resetHoverIndex:function(){var e=this;setTimeout(function(){e.multiple?e.selected.length>0?e.hoverIndex=Math.min.apply(null,e.selected.map(function(t){return e.options.indexOf(t)})):e.hoverIndex=-1:e.hoverIndex=e.options.indexOf(e.selected)},300)},handleOptionSelect:function(e,t){var i=this;if(this.multiple){var n=(this.value||[]).slice(),r=this.getValueIndex(n,e.value);r>-1?n.splice(r,1):(this.multipleLimit<=0||n.length<this.multipleLimit)&&n.push(e.value),this.$emit("input",n),this.emitChange(n),e.created&&(this.query="",this.handleQueryChange(""),this.inputLength=20),this.filterable&&this.$refs.input.focus()}else this.$emit("input",e.value),this.emitChange(e.value),this.visible=!1;this.isSilentBlur=t,this.setSoftFocus(),this.visible||this.$nextTick(function(){i.scrollToOption(e)})},setSoftFocus:function(){this.softFocus=!0;var e=this.$refs.input||this.$refs.reference;e&&e.focus()},getValueIndex:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1];if("[object object]"===Object.prototype.toString.call(t).toLowerCase()){var i=this.valueKey,n=-1;return e.some(function(e,r){return k(e,i)===k(t,i)&&(n=r,!0)}),n}return e.indexOf(t)},toggleMenu:function(){this.selectDisabled||(this.menuVisibleOnFocus?this.menuVisibleOnFocus=!1:this.visible=!this.visible,this.visible&&(this.$refs.input||this.$refs.reference).focus())},selectOption:function(){this.visible?this.options[this.hoverIndex]&&this.handleOptionSelect(this.options[this.hoverIndex]):this.toggleMenu()},deleteSelected:function(e){e.stopPropagation();var t=this.multiple?[]:"";this.$emit("input",t),this.emitChange(t),this.visible=!1,this.$emit("clear")},deleteTag:function(e,t){var i=this.selected.indexOf(t);if(i>-1&&!this.selectDisabled){var n=this.value.slice();n.splice(i,1),this.$emit("input",n),this.emitChange(n),this.$emit("remove-tag",t.value)}e.stopPropagation()},onInputChange:function(){this.filterable&&this.query!==this.selectedLabel&&(this.query=this.selectedLabel,this.handleQueryChange(this.query))},onOptionDestroy:function(e){e>-1&&(this.optionsCount--,this.filteredOptionsCount--,this.options.splice(e,1))},resetInputWidth:function(){this.inputWidth=this.$refs.reference.$el.getBoundingClientRect().width},handleResize:function(){this.resetInputWidth(),this.multiple&&this.resetInputHeight()},checkDefaultFirstOption:function(){this.hoverIndex=-1;for(var e=!1,t=this.options.length-1;t>=0;t--)if(this.options[t].created){e=!0,this.hoverIndex=t;break}if(!e)for(var i=0;i!==this.options.length;++i){var n=this.options[i];if(this.query){if(!n.disabled&&!n.groupDisabled&&n.visible){this.hoverIndex=i;break}}else if(n.itemSelected){this.hoverIndex=i;break}}},getValueKey:function(e){return"[object object]"!==Object.prototype.toString.call(e.value).toLowerCase()?e.value:k(e.value,this.valueKey)}},created:function(){var e=this;this.cachedPlaceHolder=this.currentPlaceholder=this.propPlaceholder,this.multiple&&!Array.isArray(this.value)&&this.$emit("input",[]),!this.multiple&&Array.isArray(this.value)&&this.$emit("input",""),this.debouncedOnInputChange=et()(this.debounce,function(){e.onInputChange()}),this.debouncedQueryChange=et()(this.debounce,function(t){e.handleQueryChange(t.target.value)}),this.$on("handleOptionClick",this.handleOptionSelect),this.$on("setSelected",this.setSelected)},mounted:function(){var e=this;this.multiple&&Array.isArray(this.value)&&this.value.length>0&&(this.currentPlaceholder=""),Ye(this.$el,this.handleResize);var t=this.$refs.reference;if(t&&t.$el){var i=t.$el.querySelector("input");this.initialInputHeight=i.getBoundingClientRect().height||{medium:36,small:32,mini:28}[this.selectSize]}this.remote&&this.multiple&&this.resetInputHeight(),this.$nextTick(function(){t&&t.$el&&(e.inputWidth=t.$el.getBoundingClientRect().width)}),this.setSelected()},beforeDestroy:function(){this.$el&&this.handleResize&&Ke(this.$el,this.handleResize)}},o,[],!1,null,null,null);lt.options.__file="packages/select/src/select.vue";var ut=lt.exports;ut.install=function(e){e.component(ut.name,ut)};var ct=ut;Be.install=function(e){e.component(Be.name,Be)};var ht=Be,dt={name:"ElPagination",props:{pageSize:{type:Number,default:10},small:Boolean,total:Number,pageCount:Number,pagerCount:{type:Number,validator:function(e){return(0|e)===e&&e>4&&e<22&&e%2==1},default:7},currentPage:{type:Number,default:1},layout:{default:"prev, pager, next, jumper, ->, total"},pageSizes:{type:Array,default:function(){return[10,20,30,40,50,100]}},popperClass:String,prevText:String,nextText:String,background:Boolean,disabled:Boolean,hideOnSinglePage:Boolean},data:function(){return{internalCurrentPage:1,internalPageSize:0,lastEmittedPage:-1,userChangePageSize:!1}},render:function(e){var t=this.layout;if(!t)return null;if(this.hideOnSinglePage&&(!this.internalPageCount||1===this.internalPageCount))return null;var i=e("div",{class:["el-pagination",{"is-background":this.background,"el-pagination--small":this.small}]}),n={prev:e("prev"),jumper:e("jumper"),pager:e("pager",{attrs:{currentPage:this.internalCurrentPage,pageCount:this.internalPageCount,pagerCount:this.pagerCount,disabled:this.disabled},on:{change:this.handleCurrentChange}}),next:e("next"),sizes:e("sizes",{attrs:{pageSizes:this.pageSizes}}),slot:e("slot",[this.$slots.default?this.$slots.default:""]),total:e("total")},r=t.split(",").map(function(e){return e.trim()}),s=e("div",{class:"el-pagination__rightwrapper"}),a=!1;return i.children=i.children||[],s.children=s.children||[],r.forEach(function(e){"->"!==e?a?s.children.push(n[e]):i.children.push(n[e]):a=!0}),a&&i.children.unshift(s),i},components:{Prev:{render:function(e){return e("button",{attrs:{type:"button",disabled:this.$parent.disabled||this.$parent.internalCurrentPage<=1},class:"btn-prev",on:{click:this.$parent.prev}},[this.$parent.prevText?e("span",[this.$parent.prevText]):e("i",{class:"el-icon el-icon-arrow-left"})])}},Next:{render:function(e){return e("button",{attrs:{type:"button",disabled:this.$parent.disabled||this.$parent.internalCurrentPage===this.$parent.internalPageCount||0===this.$parent.internalPageCount},class:"btn-next",on:{click:this.$parent.next}},[this.$parent.nextText?e("span",[this.$parent.nextText]):e("i",{class:"el-icon el-icon-arrow-right"})])}},Sizes:{mixins:[q],props:{pageSizes:Array},watch:{pageSizes:{immediate:!0,handler:function(e,t){$(e,t)||Array.isArray(e)&&(this.$parent.internalPageSize=e.indexOf(this.$parent.pageSize)>-1?this.$parent.pageSize:this.pageSizes[0])}}},render:function(e){var t=this;return e("span",{class:"el-pagination__sizes"},[e("el-select",{attrs:{value:this.$parent.internalPageSize,popperClass:this.$parent.popperClass||"",size:"mini",disabled:this.$parent.disabled},on:{input:this.handleChange}},[this.pageSizes.map(function(i){return e("el-option",{attrs:{value:i,label:i+t.t("el.pagination.pagesize")}})})])])},components:{ElSelect:ct,ElOption:ht},methods:{handleChange:function(e){e!==this.$parent.internalPageSize&&(this.$parent.internalPageSize=e=parseInt(e,10),this.$parent.userChangePageSize=!0,this.$parent.$emit("update:pageSize",e),this.$parent.$emit("size-change",e))}}},Jumper:{mixins:[q],components:{ElInput:ne},data:function(){return{userInput:null}},watch:{"$parent.internalCurrentPage":function(){this.userInput=null}},methods:{handleKeyup:function(e){var t=e.keyCode,i=e.target;13===t&&this.handleChange(i.value)},handleInput:function(e){this.userInput=e},handleChange:function(e){this.$parent.internalCurrentPage=this.$parent.getValidCurrentPage(e),this.$parent.emitChange(),this.userInput=null}},render:function(e){return e("span",{class:"el-pagination__jump"},[this.t("el.pagination.goto"),e("el-input",{class:"el-pagination__editor is-in-pagination",attrs:{min:1,max:this.$parent.internalPageCount,value:null!==this.userInput?this.userInput:this.$parent.internalCurrentPage,type:"number",disabled:this.$parent.disabled},nativeOn:{keyup:this.handleKeyup},on:{input:this.handleInput,change:this.handleChange}}),this.t("el.pagination.pageClassifier")])}},Total:{mixins:[q],render:function(e){return"number"==typeof this.$parent.total?e("span",{class:"el-pagination__total"},[this.t("el.pagination.total",{total:this.$parent.total})]):""}},Pager:a},methods:{handleCurrentChange:function(e){this.internalCurrentPage=this.getValidCurrentPage(e),this.userChangePageSize=!0,this.emitChange()},prev:function(){if(!this.disabled){var e=this.internalCurrentPage-1;this.internalCurrentPage=this.getValidCurrentPage(e),this.$emit("prev-click",this.internalCurrentPage),this.emitChange()}},next:function(){if(!this.disabled){var e=this.internalCurrentPage+1;this.internalCurrentPage=this.getValidCurrentPage(e),this.$emit("next-click",this.internalCurrentPage),this.emitChange()}},getValidCurrentPage:function(e){e=parseInt(e,10);var t=void 0;return"number"==typeof this.internalPageCount?e<1?t=1:e>this.internalPageCount&&(t=this.internalPageCount):(isNaN(e)||e<1)&&(t=1),void 0===t&&isNaN(e)?t=1:0===t&&(t=1),void 0===t?e:t},emitChange:function(){var e=this;this.$nextTick(function(){(e.internalCurrentPage!==e.lastEmittedPage||e.userChangePageSize)&&(e.$emit("current-change",e.internalCurrentPage),e.lastEmittedPage=e.internalCurrentPage,e.userChangePageSize=!1)})}},computed:{internalPageCount:function(){return"number"==typeof this.total?Math.max(1,Math.ceil(this.total/this.internalPageSize)):"number"==typeof this.pageCount?Math.max(1,this.pageCount):null}},watch:{currentPage:{immediate:!0,handler:function(e){this.internalCurrentPage=this.getValidCurrentPage(e)}},pageSize:{immediate:!0,handler:function(e){this.internalPageSize=isNaN(e)?10:e}},internalCurrentPage:{immediate:!0,handler:function(e){this.$emit("update:currentPage",e),this.lastEmittedPage=-1}},internalPageCount:function(e){var t=this.internalCurrentPage;e>0&&0===t?this.internalCurrentPage=1:t>e&&(this.internalCurrentPage=0===e?1:e,this.userChangePageSize&&this.emitChange()),this.userChangePageSize=!1}},install:function(e){e.component(dt.name,dt)}},pt=dt,ft=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"dialog-fade"},on:{"after-enter":e.afterEnter,"after-leave":e.afterLeave}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-dialog__wrapper",on:{click:function(t){return t.target!==t.currentTarget?null:e.handleWrapperClick(t)}}},[i("div",{key:e.key,ref:"dialog",class:["el-dialog",{"is-fullscreen":e.fullscreen,"el-dialog--center":e.center},e.customClass],style:e.style,attrs:{role:"dialog","aria-modal":"true","aria-label":e.title||"dialog"}},[i("div",{staticClass:"el-dialog__header"},[e._t("title",[i("span",{staticClass:"el-dialog__title"},[e._v(e._s(e.title))])]),e.showClose?i("button",{staticClass:"el-dialog__headerbtn",attrs:{type:"button","aria-label":"Close"},on:{click:e.handleClose}},[i("i",{staticClass:"el-dialog__close el-icon el-icon-close"})]):e._e()],2),e.rendered?i("div",{staticClass:"el-dialog__body"},[e._t("default")],2):e._e(),e.$slots.footer?i("div",{staticClass:"el-dialog__footer"},[e._t("footer")],2):e._e()])])])};ft._withStripped=!0;var mt=r({name:"ElDialog",mixins:[Me,l,K],props:{title:{type:String,default:""},modal:{type:Boolean,default:!0},modalAppendToBody:{type:Boolean,default:!0},appendToBody:{type:Boolean,default:!1},lockScroll:{type:Boolean,default:!0},closeOnClickModal:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!0},showClose:{type:Boolean,default:!0},width:String,fullscreen:Boolean,customClass:{type:String,default:""},top:{type:String,default:"15vh"},beforeClose:Function,center:{type:Boolean,default:!1},destroyOnClose:Boolean},data:function(){return{closed:!1,key:0}},watch:{visible:function(e){var t=this;e?(this.closed=!1,this.$emit("open"),this.$el.addEventListener("scroll",this.updatePopper),this.$nextTick(function(){t.$refs.dialog.scrollTop=0}),this.appendToBody&&document.body.appendChild(this.$el)):(this.$el.removeEventListener("scroll",this.updatePopper),this.closed||this.$emit("close"),this.destroyOnClose&&this.$nextTick(function(){t.key++}))}},computed:{style:function(){var e={};return this.fullscreen||(e.marginTop=this.top,this.width&&(e.width=this.width)),e}},methods:{getMigratingConfig:function(){return{props:{size:"size is removed."}}},handleWrapperClick:function(){this.closeOnClickModal&&this.handleClose()},handleClose:function(){"function"==typeof this.beforeClose?this.beforeClose(this.hide):this.hide()},hide:function(e){!1!==e&&(this.$emit("update:visible",!1),this.$emit("close"),this.closed=!0)},updatePopper:function(){this.broadcast("ElSelectDropdown","updatePopper"),this.broadcast("ElDropdownMenu","updatePopper")},afterEnter:function(){this.$emit("opened")},afterLeave:function(){this.$emit("closed")}},mounted:function(){this.visible&&(this.rendered=!0,this.open(),this.appendToBody&&document.body.appendChild(this.$el))},destroyed:function(){this.appendToBody&&this.$el&&this.$el.parentNode&&this.$el.parentNode.removeChild(this.$el)}},ft,[],!1,null,null,null);mt.options.__file="packages/dialog/src/component.vue";var vt=mt.exports;vt.install=function(e){e.component(vt.name,vt)};var gt=vt,bt=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.close,expression:"close"}],staticClass:"el-autocomplete",attrs:{"aria-haspopup":"listbox",role:"combobox","aria-expanded":e.suggestionVisible,"aria-owns":e.id}},[i("el-input",e._b({ref:"input",on:{input:e.handleInput,change:e.handleChange,focus:e.handleFocus,blur:e.handleBlur,clear:e.handleClear},nativeOn:{keydown:[function(t){if(!("button"in t)&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"]))return null;t.preventDefault(),e.highlight(e.highlightedIndex-1)},function(t){if(!("button"in t)&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"]))return null;t.preventDefault(),e.highlight(e.highlightedIndex+1)},function(t){return"button"in t||!e._k(t.keyCode,"enter",13,t.key,"Enter")?e.handleKeyEnter(t):null},function(t){return"button"in t||!e._k(t.keyCode,"tab",9,t.key,"Tab")?e.close(t):null}]}},"el-input",[e.$props,e.$attrs],!1),[e.$slots.prepend?i("template",{slot:"prepend"},[e._t("prepend")],2):e._e(),e.$slots.append?i("template",{slot:"append"},[e._t("append")],2):e._e(),e.$slots.prefix?i("template",{slot:"prefix"},[e._t("prefix")],2):e._e(),e.$slots.suffix?i("template",{slot:"suffix"},[e._t("suffix")],2):e._e()],2),i("el-autocomplete-suggestions",{ref:"suggestions",class:[e.popperClass?e.popperClass:""],attrs:{"visible-arrow":"","popper-options":e.popperOptions,"append-to-body":e.popperAppendToBody,placement:e.placement,id:e.id}},e._l(e.suggestions,function(t,n){return i("li",{key:n,class:{highlighted:e.highlightedIndex===n},attrs:{id:e.id+"-item-"+n,role:"option","aria-selected":e.highlightedIndex===n},on:{click:function(i){e.select(t)}}},[e._t("default",[e._v("\n        "+e._s(t[e.valueKey])+"\n      ")],{item:t})],2)}),0)],1)};bt._withStripped=!0;var yt=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":e.doDestroy}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.showPopper,expression:"showPopper"}],staticClass:"el-autocomplete-suggestion el-popper",class:{"is-loading":!e.parent.hideLoading&&e.parent.loading},style:{width:e.dropdownWidth},attrs:{role:"region"}},[i("el-scrollbar",{attrs:{tag:"ul","wrap-class":"el-autocomplete-suggestion__wrap","view-class":"el-autocomplete-suggestion__list"}},[!e.parent.hideLoading&&e.parent.loading?i("li",[i("i",{staticClass:"el-icon-loading"})]):e._t("default")],2)],1)])};yt._withStripped=!0;var wt=r({components:{ElScrollbar:Ze},mixins:[Oe,l],componentName:"ElAutocompleteSuggestions",data:function(){return{parent:this.$parent,dropdownWidth:""}},props:{options:{default:function(){return{gpuAcceleration:!1}}},id:String},methods:{select:function(e){this.dispatch("ElAutocomplete","item-click",e)}},updated:function(){var e=this;this.$nextTick(function(t){e.popperJS&&e.updatePopper()})},mounted:function(){this.$parent.popperElm=this.popperElm=this.$el,this.referenceElm=this.$parent.$refs.input.$refs.input||this.$parent.$refs.input.$refs.textarea,this.referenceList=this.$el.querySelector(".el-autocomplete-suggestion__list"),this.referenceList.setAttribute("role","listbox"),this.referenceList.setAttribute("id",this.id)},created:function(){var e=this;this.$on("visible",function(t,i){e.dropdownWidth=i+"px",e.showPopper=t})}},yt,[],!1,null,null,null);wt.options.__file="packages/autocomplete/src/autocomplete-suggestions.vue";var _t=wt.exports,xt=r({name:"ElAutocomplete",mixins:[l,u("input"),K],inheritAttrs:!1,componentName:"ElAutocomplete",components:{ElInput:ne,ElAutocompleteSuggestions:_t},directives:{Clickoutside:at},props:{valueKey:{type:String,default:"value"},popperClass:String,popperOptions:Object,placeholder:String,clearable:{type:Boolean,default:!1},disabled:Boolean,name:String,size:String,value:String,maxlength:Number,minlength:Number,autofocus:Boolean,fetchSuggestions:Function,triggerOnFocus:{type:Boolean,default:!0},customItem:String,selectWhenUnmatched:{type:Boolean,default:!1},prefixIcon:String,suffixIcon:String,label:String,debounce:{type:Number,default:300},placement:{type:String,default:"bottom-start"},hideLoading:Boolean,popperAppendToBody:{type:Boolean,default:!0},highlightFirstItem:{type:Boolean,default:!1}},data:function(){return{activated:!1,suggestions:[],loading:!1,highlightedIndex:-1,suggestionDisabled:!1}},computed:{suggestionVisible:function(){var e=this.suggestions;return(Array.isArray(e)&&e.length>0||this.loading)&&this.activated},id:function(){return"el-autocomplete-"+D()}},watch:{suggestionVisible:function(e){var t=this.getInput();t&&this.broadcast("ElAutocompleteSuggestions","visible",[e,t.offsetWidth])}},methods:{getMigratingConfig:function(){return{props:{"custom-item":"custom-item is removed, use scoped slot instead.",props:"props is removed, use value-key instead."}}},getData:function(e){var t=this;this.suggestionDisabled||(this.loading=!0,this.fetchSuggestions(e,function(e){t.loading=!1,t.suggestionDisabled||(Array.isArray(e)?(t.suggestions=e,t.highlightedIndex=t.highlightFirstItem?0:-1):console.error("[Element Error][Autocomplete]autocomplete suggestions must be an array"))}))},handleInput:function(e){if(this.$emit("input",e),this.suggestionDisabled=!1,!this.triggerOnFocus&&!e)return this.suggestionDisabled=!0,void(this.suggestions=[]);this.debouncedGetData(e)},handleChange:function(e){this.$emit("change",e)},handleFocus:function(e){this.activated=!0,this.$emit("focus",e),this.triggerOnFocus&&this.debouncedGetData(this.value)},handleBlur:function(e){this.$emit("blur",e)},handleClear:function(){this.activated=!1,this.$emit("clear")},close:function(e){this.activated=!1},handleKeyEnter:function(e){var t=this;this.suggestionVisible&&this.highlightedIndex>=0&&this.highlightedIndex<this.suggestions.length?(e.preventDefault(),this.select(this.suggestions[this.highlightedIndex])):this.selectWhenUnmatched&&(this.$emit("select",{value:this.value}),this.$nextTick(function(e){t.suggestions=[],t.highlightedIndex=-1}))},select:function(e){var t=this;this.$emit("input",e[this.valueKey]),this.$emit("select",e),this.$nextTick(function(e){t.suggestions=[],t.highlightedIndex=-1})},highlight:function(e){if(this.suggestionVisible&&!this.loading)if(e<0)this.highlightedIndex=-1;else{e>=this.suggestions.length&&(e=this.suggestions.length-1);var t=this.$refs.suggestions.$el.querySelector(".el-autocomplete-suggestion__wrap"),i=t.querySelectorAll(".el-autocomplete-suggestion__list li")[e],n=t.scrollTop,r=i.offsetTop;r+i.scrollHeight>n+t.clientHeight&&(t.scrollTop+=i.scrollHeight),r<n&&(t.scrollTop-=i.scrollHeight),this.highlightedIndex=e,this.getInput().setAttribute("aria-activedescendant",this.id+"-item-"+this.highlightedIndex)}},getInput:function(){return this.$refs.input.getInput()}},mounted:function(){var e=this;this.debouncedGetData=et()(this.debounce,this.getData),this.$on("item-click",function(t){e.select(t)});var t=this.getInput();t.setAttribute("role","textbox"),t.setAttribute("aria-autocomplete","list"),t.setAttribute("aria-controls","id"),t.setAttribute("aria-activedescendant",this.id+"-item-"+this.highlightedIndex)},beforeDestroy:function(){this.$refs.suggestions.$destroy()}},bt,[],!1,null,null,null);xt.options.__file="packages/autocomplete/src/autocomplete.vue";var Ct=xt.exports;Ct.install=function(e){e.component(Ct.name,Ct)};var kt=Ct,St=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("button",{staticClass:"el-button",class:[e.type?"el-button--"+e.type:"",e.buttonSize?"el-button--"+e.buttonSize:"",{"is-disabled":e.buttonDisabled,"is-loading":e.loading,"is-plain":e.plain,"is-round":e.round,"is-circle":e.circle}],attrs:{disabled:e.buttonDisabled||e.loading,autofocus:e.autofocus,type:e.nativeType},on:{click:e.handleClick}},[e.loading?i("i",{staticClass:"el-icon-loading"}):e._e(),e.icon&&!e.loading?i("i",{class:e.icon}):e._e(),e.$slots.default?i("span",[e._t("default")],2):e._e()])};St._withStripped=!0;var Dt=r({name:"ElButton",inject:{elForm:{default:""},elFormItem:{default:""}},props:{type:{type:String,default:"default"},size:String,icon:{type:String,default:""},nativeType:{type:String,default:"button"},loading:Boolean,disabled:Boolean,plain:Boolean,autofocus:Boolean,round:Boolean,circle:Boolean},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},buttonSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},buttonDisabled:function(){return this.disabled||(this.elForm||{}).disabled}},methods:{handleClick:function(e){this.$emit("click",e)}}},St,[],!1,null,null,null);Dt.options.__file="packages/button/src/button.vue";var $t=Dt.exports;$t.install=function(e){e.component($t.name,$t)};var Et=$t,Tt=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-button-group"},[this._t("default")],2)};Tt._withStripped=!0;var Mt=r({name:"ElButtonGroup"},Tt,[],!1,null,null,null);Mt.options.__file="packages/button/src/button-group.vue";var Nt=Mt.exports;Nt.install=function(e){e.component(Nt.name,Nt)};var Pt=Nt,Ot=r({name:"ElDropdown",componentName:"ElDropdown",mixins:[l,K],directives:{Clickoutside:at},components:{ElButton:Et,ElButtonGroup:Pt},provide:function(){return{dropdown:this}},props:{trigger:{type:String,default:"hover"},type:String,size:{type:String,default:""},splitButton:Boolean,hideOnClick:{type:Boolean,default:!0},placement:{type:String,default:"bottom-end"},visibleArrow:{default:!0},showTimeout:{type:Number,default:250},hideTimeout:{type:Number,default:150},tabindex:{type:Number,default:0}},data:function(){return{timeout:null,visible:!1,triggerElm:null,menuItems:null,menuItemsArray:null,dropdownElm:null,focusing:!1,listId:"dropdown-menu-"+D()}},computed:{dropdownSize:function(){return this.size||(this.$ELEMENT||{}).size}},mounted:function(){this.$on("menu-item-click",this.handleMenuItemClick)},watch:{visible:function(e){this.broadcast("ElDropdownMenu","visible",e),this.$emit("visible-change",e)},focusing:function(e){var t=this.$el.querySelector(".el-dropdown-selfdefine");t&&(e?t.className+=" focusing":t.className=t.className.replace("focusing",""))}},methods:{getMigratingConfig:function(){return{props:{"menu-align":"menu-align is renamed to placement."}}},show:function(){var e=this;this.triggerElm.disabled||(clearTimeout(this.timeout),this.timeout=setTimeout(function(){e.visible=!0},"click"===this.trigger?0:this.showTimeout))},hide:function(){var e=this;this.triggerElm.disabled||(this.removeTabindex(),this.tabindex>=0&&this.resetTabindex(this.triggerElm),clearTimeout(this.timeout),this.timeout=setTimeout(function(){e.visible=!1},"click"===this.trigger?0:this.hideTimeout))},handleClick:function(){this.triggerElm.disabled||(this.visible?this.hide():this.show())},handleTriggerKeyDown:function(e){var t=e.keyCode;[38,40].indexOf(t)>-1?(this.removeTabindex(),this.resetTabindex(this.menuItems[0]),this.menuItems[0].focus(),e.preventDefault(),e.stopPropagation()):13===t?this.handleClick():[9,27].indexOf(t)>-1&&this.hide()},handleItemKeyDown:function(e){var t=e.keyCode,i=e.target,n=this.menuItemsArray.indexOf(i),r=this.menuItemsArray.length-1,s=void 0;[38,40].indexOf(t)>-1?(s=38===t?0!==n?n-1:0:n<r?n+1:r,this.removeTabindex(),this.resetTabindex(this.menuItems[s]),this.menuItems[s].focus(),e.preventDefault(),e.stopPropagation()):13===t?(this.triggerElmFocus(),i.click(),this.hideOnClick&&(this.visible=!1)):[9,27].indexOf(t)>-1&&(this.hide(),this.triggerElmFocus())},resetTabindex:function(e){this.removeTabindex(),e.setAttribute("tabindex","0")},removeTabindex:function(){this.triggerElm.setAttribute("tabindex","-1"),this.menuItemsArray.forEach(function(e){e.setAttribute("tabindex","-1")})},initAria:function(){this.dropdownElm.setAttribute("id",this.listId),this.triggerElm.setAttribute("aria-haspopup","list"),this.triggerElm.setAttribute("aria-controls",this.listId),this.splitButton||(this.triggerElm.setAttribute("role","button"),this.triggerElm.setAttribute("tabindex",this.tabindex),this.triggerElm.setAttribute("class",(this.triggerElm.getAttribute("class")||"")+" el-dropdown-selfdefine"))},initEvent:function(){var e=this,t=this.trigger,i=this.show,n=this.hide,r=this.handleClick,s=this.splitButton,a=this.handleTriggerKeyDown,o=this.handleItemKeyDown;this.triggerElm=s?this.$refs.trigger.$el:this.$slots.default[0].elm;var l=this.dropdownElm;this.triggerElm.addEventListener("keydown",a),l.addEventListener("keydown",o,!0),s||(this.triggerElm.addEventListener("focus",function(){e.focusing=!0}),this.triggerElm.addEventListener("blur",function(){e.focusing=!1}),this.triggerElm.addEventListener("click",function(){e.focusing=!1})),"hover"===t?(this.triggerElm.addEventListener("mouseenter",i),this.triggerElm.addEventListener("mouseleave",n),l.addEventListener("mouseenter",i),l.addEventListener("mouseleave",n)):"click"===t&&this.triggerElm.addEventListener("click",r)},handleMenuItemClick:function(e,t){this.hideOnClick&&(this.visible=!1),this.$emit("command",e,t)},triggerElmFocus:function(){this.triggerElm.focus&&this.triggerElm.focus()},initDomOperation:function(){this.dropdownElm=this.popperElm,this.menuItems=this.dropdownElm.querySelectorAll("[tabindex='-1']"),this.menuItemsArray=[].slice.call(this.menuItems),this.initEvent(),this.initAria()}},render:function(e){var t=this,i=this.hide,n=this.splitButton,r=this.type,s=this.dropdownSize,a=n?e("el-button-group",[e("el-button",{attrs:{type:r,size:s},nativeOn:{click:function(e){t.$emit("click",e),i()}}},[this.$slots.default]),e("el-button",{ref:"trigger",attrs:{type:r,size:s},class:"el-dropdown__caret-button"},[e("i",{class:"el-dropdown__icon el-icon-arrow-down"})])]):this.$slots.default;return e("div",{class:"el-dropdown",directives:[{name:"clickoutside",value:i}]},[a,this.$slots.dropdown])}},void 0,void 0,!1,null,null,null);Ot.options.__file="packages/dropdown/src/dropdown.vue";var It=Ot.exports;It.install=function(e){e.component(It.name,It)};var At=It,Ft=function(){var e=this.$createElement,t=this._self._c||e;return t("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":this.doDestroy}},[t("ul",{directives:[{name:"show",rawName:"v-show",value:this.showPopper,expression:"showPopper"}],staticClass:"el-dropdown-menu el-popper",class:[this.size&&"el-dropdown-menu--"+this.size]},[this._t("default")],2)])};Ft._withStripped=!0;var Lt=r({name:"ElDropdownMenu",componentName:"ElDropdownMenu",mixins:[Oe],props:{visibleArrow:{type:Boolean,default:!0},arrowOffset:{type:Number,default:0}},data:function(){return{size:this.dropdown.dropdownSize}},inject:["dropdown"],created:function(){var e=this;this.$on("updatePopper",function(){e.showPopper&&e.updatePopper()}),this.$on("visible",function(t){e.showPopper=t})},mounted:function(){this.dropdown.popperElm=this.popperElm=this.$el,this.referenceElm=this.dropdown.$el,this.dropdown.initDomOperation()},watch:{"dropdown.placement":{immediate:!0,handler:function(e){this.currentPlacement=e}}}},Ft,[],!1,null,null,null);Lt.options.__file="packages/dropdown/src/dropdown-menu.vue";var Vt=Lt.exports;Vt.install=function(e){e.component(Vt.name,Vt)};var Bt=Vt,zt=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("li",{staticClass:"el-dropdown-menu__item",class:{"is-disabled":e.disabled,"el-dropdown-menu__item--divided":e.divided},attrs:{"aria-disabled":e.disabled,tabindex:e.disabled?null:-1},on:{click:e.handleClick}},[e.icon?i("i",{class:e.icon}):e._e(),e._t("default")],2)};zt._withStripped=!0;var Ht=r({name:"ElDropdownItem",mixins:[l],props:{command:{},disabled:Boolean,divided:Boolean,icon:String},methods:{handleClick:function(e){this.dispatch("ElDropdown","menu-item-click",[this.command,this])}}},zt,[],!1,null,null,null);Ht.options.__file="packages/dropdown/src/dropdown-item.vue";var Rt=Ht.exports;Rt.install=function(e){e.component(Rt.name,Rt)};var Wt=Rt,jt=jt||{};jt.Utils=jt.Utils||{},jt.Utils.focusFirstDescendant=function(e){for(var t=0;t<e.childNodes.length;t++){var i=e.childNodes[t];if(jt.Utils.attemptFocus(i)||jt.Utils.focusFirstDescendant(i))return!0}return!1},jt.Utils.focusLastDescendant=function(e){for(var t=e.childNodes.length-1;t>=0;t--){var i=e.childNodes[t];if(jt.Utils.attemptFocus(i)||jt.Utils.focusLastDescendant(i))return!0}return!1},jt.Utils.attemptFocus=function(e){if(!jt.Utils.isFocusable(e))return!1;jt.Utils.IgnoreUtilFocusChanges=!0;try{e.focus()}catch(e){}return jt.Utils.IgnoreUtilFocusChanges=!1,document.activeElement===e},jt.Utils.isFocusable=function(e){if(e.tabIndex>0||0===e.tabIndex&&null!==e.getAttribute("tabIndex"))return!0;if(e.disabled)return!1;switch(e.nodeName){case"A":return!!e.href&&"ignore"!==e.rel;case"INPUT":return"hidden"!==e.type&&"file"!==e.type;case"BUTTON":case"SELECT":case"TEXTAREA":return!0;default:return!1}},jt.Utils.triggerEvent=function(e,t){var i=void 0;i=/^mouse|click/.test(t)?"MouseEvents":/^key/.test(t)?"KeyboardEvent":"HTMLEvents";for(var n=document.createEvent(i),r=arguments.length,s=Array(r>2?r-2:0),a=2;a<r;a++)s[a-2]=arguments[a];return n.initEvent.apply(n,[t].concat(s)),e.dispatchEvent?e.dispatchEvent(n):e.fireEvent("on"+t,n),e},jt.Utils.keys={tab:9,enter:13,space:32,left:37,up:38,right:39,down:40,esc:27};var qt=jt.Utils,Yt=function(e,t){this.domNode=t,this.parent=e,this.subMenuItems=[],this.subIndex=0,this.init()};Yt.prototype.init=function(){this.subMenuItems=this.domNode.querySelectorAll("li"),this.addListeners()},Yt.prototype.gotoSubIndex=function(e){e===this.subMenuItems.length?e=0:e<0&&(e=this.subMenuItems.length-1),this.subMenuItems[e].focus(),this.subIndex=e},Yt.prototype.addListeners=function(){var e=this,t=qt.keys,i=this.parent.domNode;Array.prototype.forEach.call(this.subMenuItems,function(n){n.addEventListener("keydown",function(n){var r=!1;switch(n.keyCode){case t.down:e.gotoSubIndex(e.subIndex+1),r=!0;break;case t.up:e.gotoSubIndex(e.subIndex-1),r=!0;break;case t.tab:qt.triggerEvent(i,"mouseleave");break;case t.enter:case t.space:r=!0,n.currentTarget.click()}return r&&(n.preventDefault(),n.stopPropagation()),!1})})};var Kt=Yt,Gt=function(e){this.domNode=e,this.submenu=null,this.init()};Gt.prototype.init=function(){this.domNode.setAttribute("tabindex","0");var e=this.domNode.querySelector(".el-menu");e&&(this.submenu=new Kt(this,e)),this.addListeners()},Gt.prototype.addListeners=function(){var e=this,t=qt.keys;this.domNode.addEventListener("keydown",function(i){var n=!1;switch(i.keyCode){case t.down:qt.triggerEvent(i.currentTarget,"mouseenter"),e.submenu&&e.submenu.gotoSubIndex(0),n=!0;break;case t.up:qt.triggerEvent(i.currentTarget,"mouseenter"),e.submenu&&e.submenu.gotoSubIndex(e.submenu.subMenuItems.length-1),n=!0;break;case t.tab:qt.triggerEvent(i.currentTarget,"mouseleave");break;case t.enter:case t.space:n=!0,i.currentTarget.click()}n&&i.preventDefault()})};var Ut=Gt,Xt=function(e){this.domNode=e,this.init()};Xt.prototype.init=function(){var e=this.domNode.childNodes;[].filter.call(e,function(e){return 1===e.nodeType}).forEach(function(e){new Ut(e)})};var Jt=Xt,Zt=r({name:"ElMenu",render:function(e){var t=e("ul",{attrs:{role:"menubar"},key:+this.collapse,style:{backgroundColor:this.backgroundColor||""},class:{"el-menu--horizontal":"horizontal"===this.mode,"el-menu--collapse":this.collapse,"el-menu":!0}},[this.$slots.default]);return this.collapseTransition?e("el-menu-collapse-transition",[t]):t},componentName:"ElMenu",mixins:[l,K],provide:function(){return{rootMenu:this}},components:{"el-menu-collapse-transition":{functional:!0,render:function(e,t){return e("transition",{props:{mode:"out-in"},on:{beforeEnter:function(e){e.style.opacity=.2},enter:function(e){fe(e,"el-opacity-transition"),e.style.opacity=1},afterEnter:function(e){me(e,"el-opacity-transition"),e.style.opacity=""},beforeLeave:function(e){e.dataset||(e.dataset={}),pe(e,"el-menu--collapse")?(me(e,"el-menu--collapse"),e.dataset.oldOverflow=e.style.overflow,e.dataset.scrollWidth=e.clientWidth,fe(e,"el-menu--collapse")):(fe(e,"el-menu--collapse"),e.dataset.oldOverflow=e.style.overflow,e.dataset.scrollWidth=e.clientWidth,me(e,"el-menu--collapse")),e.style.width=e.scrollWidth+"px",e.style.overflow="hidden"},leave:function(e){fe(e,"horizontal-collapse-transition"),e.style.width=e.dataset.scrollWidth+"px"}}},t.children)}}},props:{mode:{type:String,default:"vertical"},defaultActive:{type:String,default:""},defaultOpeneds:Array,uniqueOpened:Boolean,router:Boolean,menuTrigger:{type:String,default:"hover"},collapse:Boolean,backgroundColor:String,textColor:String,activeTextColor:String,collapseTransition:{type:Boolean,default:!0}},data:function(){return{activeIndex:this.defaultActive,openedMenus:this.defaultOpeneds&&!this.collapse?this.defaultOpeneds.slice(0):[],items:{},submenus:{}}},computed:{hoverBackground:function(){return this.backgroundColor?this.mixColor(this.backgroundColor,.2):""},isMenuPopup:function(){return"horizontal"===this.mode||"vertical"===this.mode&&this.collapse}},watch:{defaultActive:function(e){this.items[e]||(this.activeIndex=null),this.updateActiveIndex(e)},defaultOpeneds:function(e){this.collapse||(this.openedMenus=e)},collapse:function(e){e&&(this.openedMenus=[]),this.broadcast("ElSubmenu","toggle-collapse",e)}},methods:{updateActiveIndex:function(e){var t=this.items[e]||this.items[this.activeIndex]||this.items[this.defaultActive];t?(this.activeIndex=t.index,this.initOpenedMenu()):this.activeIndex=null},getMigratingConfig:function(){return{props:{theme:"theme is removed."}}},getColorChannels:function(e){if(e=e.replace("#",""),/^[0-9a-fA-F]{3}$/.test(e)){e=e.split("");for(var t=2;t>=0;t--)e.splice(t,0,e[t]);e=e.join("")}return/^[0-9a-fA-F]{6}$/.test(e)?{red:parseInt(e.slice(0,2),16),green:parseInt(e.slice(2,4),16),blue:parseInt(e.slice(4,6),16)}:{red:255,green:255,blue:255}},mixColor:function(e,t){var i=this.getColorChannels(e),n=i.red,r=i.green,s=i.blue;return t>0?(n*=1-t,r*=1-t,s*=1-t):(n+=(255-n)*t,r+=(255-r)*t,s+=(255-s)*t),"rgb("+Math.round(n)+", "+Math.round(r)+", "+Math.round(s)+")"},addItem:function(e){this.$set(this.items,e.index,e)},removeItem:function(e){delete this.items[e.index]},addSubmenu:function(e){this.$set(this.submenus,e.index,e)},removeSubmenu:function(e){delete this.submenus[e.index]},openMenu:function(e,t){var i=this.openedMenus;-1===i.indexOf(e)&&(this.uniqueOpened&&(this.openedMenus=i.filter(function(e){return-1!==t.indexOf(e)})),this.openedMenus.push(e))},closeMenu:function(e){var t=this.openedMenus.indexOf(e);-1!==t&&this.openedMenus.splice(t,1)},handleSubmenuClick:function(e){var t=e.index,i=e.indexPath;-1!==this.openedMenus.indexOf(t)?(this.closeMenu(t),this.$emit("close",t,i)):(this.openMenu(t,i),this.$emit("open",t,i))},handleItemClick:function(e){var t=this,i=e.index,n=e.indexPath,r=this.activeIndex,s=null!==e.index;s&&(this.activeIndex=e.index),this.$emit("select",i,n,e),("horizontal"===this.mode||this.collapse)&&(this.openedMenus=[]),this.router&&s&&this.routeToItem(e,function(e){if(t.activeIndex=r,e){if("NavigationDuplicated"===e.name)return;console.error(e)}})},initOpenedMenu:function(){var e=this,t=this.activeIndex,i=this.items[t];i&&"horizontal"!==this.mode&&!this.collapse&&i.indexPath.forEach(function(t){var i=e.submenus[t];i&&e.openMenu(t,i.indexPath)})},routeToItem:function(e,t){var i=e.route||e.index;try{this.$router.push(i,function(){},t)}catch(e){console.error(e)}},open:function(e){var t=this,i=this.submenus[e.toString()].indexPath;i.forEach(function(e){return t.openMenu(e,i)})},close:function(e){this.closeMenu(e)}},mounted:function(){this.initOpenedMenu(),this.$on("item-click",this.handleItemClick),this.$on("submenu-click",this.handleSubmenuClick),"horizontal"===this.mode&&new Jt(this.$el),this.$watch("items",this.updateActiveIndex)}},void 0,void 0,!1,null,null,null);Zt.options.__file="packages/menu/src/menu.vue";var Qt=Zt.exports;Qt.install=function(e){e.component(Qt.name,Qt)};var ei=Qt;var ti=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return e.prototype.beforeEnter=function(e){fe(e,"collapse-transition"),e.dataset||(e.dataset={}),e.dataset.oldPaddingTop=e.style.paddingTop,e.dataset.oldPaddingBottom=e.style.paddingBottom,e.style.height="0",e.style.paddingTop=0,e.style.paddingBottom=0},e.prototype.enter=function(e){e.dataset.oldOverflow=e.style.overflow,0!==e.scrollHeight?(e.style.height=e.scrollHeight+"px",e.style.paddingTop=e.dataset.oldPaddingTop,e.style.paddingBottom=e.dataset.oldPaddingBottom):(e.style.height="",e.style.paddingTop=e.dataset.oldPaddingTop,e.style.paddingBottom=e.dataset.oldPaddingBottom),e.style.overflow="hidden"},e.prototype.afterEnter=function(e){me(e,"collapse-transition"),e.style.height="",e.style.overflow=e.dataset.oldOverflow},e.prototype.beforeLeave=function(e){e.dataset||(e.dataset={}),e.dataset.oldPaddingTop=e.style.paddingTop,e.dataset.oldPaddingBottom=e.style.paddingBottom,e.dataset.oldOverflow=e.style.overflow,e.style.height=e.scrollHeight+"px",e.style.overflow="hidden"},e.prototype.leave=function(e){0!==e.scrollHeight&&(fe(e,"collapse-transition"),e.style.height=0,e.style.paddingTop=0,e.style.paddingBottom=0)},e.prototype.afterLeave=function(e){me(e,"collapse-transition"),e.style.height="",e.style.overflow=e.dataset.oldOverflow,e.style.paddingTop=e.dataset.oldPaddingTop,e.style.paddingBottom=e.dataset.oldPaddingBottom},e}(),ii={name:"ElCollapseTransition",functional:!0,render:function(e,t){var i=t.children;return e("transition",{on:new ti},i)}},ni={inject:["rootMenu"],computed:{indexPath:function(){for(var e=[this.index],t=this.$parent;"ElMenu"!==t.$options.componentName;)t.index&&e.unshift(t.index),t=t.$parent;return e},parentMenu:function(){for(var e=this.$parent;e&&-1===["ElMenu","ElSubmenu"].indexOf(e.$options.componentName);)e=e.$parent;return e},paddingStyle:function(){if("vertical"!==this.rootMenu.mode)return{};var e=20,t=this.$parent;if(this.rootMenu.collapse)e=20;else for(;t&&"ElMenu"!==t.$options.componentName;)"ElSubmenu"===t.$options.componentName&&(e+=20),t=t.$parent;return{paddingLeft:e+"px"}}}},ri=r({name:"ElSubmenu",componentName:"ElSubmenu",mixins:[ni,l,{props:{transformOrigin:{type:[Boolean,String],default:!1},offset:Oe.props.offset,boundariesPadding:Oe.props.boundariesPadding,popperOptions:Oe.props.popperOptions},data:Oe.data,methods:Oe.methods,beforeDestroy:Oe.beforeDestroy,deactivated:Oe.deactivated}],components:{ElCollapseTransition:ii},props:{index:{type:String,required:!0},showTimeout:{type:Number,default:300},hideTimeout:{type:Number,default:300},popperClass:String,disabled:Boolean,popperAppendToBody:{type:Boolean,default:void 0}},data:function(){return{popperJS:null,timeout:null,items:{},submenus:{},mouseInChild:!1}},watch:{opened:function(e){var t=this;this.isMenuPopup&&this.$nextTick(function(e){t.updatePopper()})}},computed:{appendToBody:function(){return void 0===this.popperAppendToBody?this.isFirstLevel:this.popperAppendToBody},menuTransitionName:function(){return this.rootMenu.collapse?"el-zoom-in-left":"el-zoom-in-top"},opened:function(){return this.rootMenu.openedMenus.indexOf(this.index)>-1},active:function(){var e=!1,t=this.submenus,i=this.items;return Object.keys(i).forEach(function(t){i[t].active&&(e=!0)}),Object.keys(t).forEach(function(i){t[i].active&&(e=!0)}),e},hoverBackground:function(){return this.rootMenu.hoverBackground},backgroundColor:function(){return this.rootMenu.backgroundColor||""},activeTextColor:function(){return this.rootMenu.activeTextColor||""},textColor:function(){return this.rootMenu.textColor||""},mode:function(){return this.rootMenu.mode},isMenuPopup:function(){return this.rootMenu.isMenuPopup},titleStyle:function(){return"horizontal"!==this.mode?{color:this.textColor}:{borderBottomColor:this.active?this.rootMenu.activeTextColor?this.activeTextColor:"":"transparent",color:this.active?this.activeTextColor:this.textColor}},isFirstLevel:function(){for(var e=!0,t=this.$parent;t&&t!==this.rootMenu;){if(["ElSubmenu","ElMenuItemGroup"].indexOf(t.$options.componentName)>-1){e=!1;break}t=t.$parent}return e}},methods:{handleCollapseToggle:function(e){e?this.initPopper():this.doDestroy()},addItem:function(e){this.$set(this.items,e.index,e)},removeItem:function(e){delete this.items[e.index]},addSubmenu:function(e){this.$set(this.submenus,e.index,e)},removeSubmenu:function(e){delete this.submenus[e.index]},handleClick:function(){var e=this.rootMenu,t=this.disabled;"hover"===e.menuTrigger&&"horizontal"===e.mode||e.collapse&&"vertical"===e.mode||t||this.dispatch("ElMenu","submenu-click",this)},handleMouseenter:function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.showTimeout;if("ActiveXObject"in window||"focus"!==e.type||e.relatedTarget){var n=this.rootMenu,r=this.disabled;"click"===n.menuTrigger&&"horizontal"===n.mode||!n.collapse&&"vertical"===n.mode||r||(this.dispatch("ElSubmenu","mouse-enter-child"),clearTimeout(this.timeout),this.timeout=setTimeout(function(){t.rootMenu.openMenu(t.index,t.indexPath)},i),this.appendToBody&&this.$parent.$el.dispatchEvent(new MouseEvent("mouseenter")))}},handleMouseleave:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],i=this.rootMenu;"click"===i.menuTrigger&&"horizontal"===i.mode||!i.collapse&&"vertical"===i.mode||(this.dispatch("ElSubmenu","mouse-leave-child"),clearTimeout(this.timeout),this.timeout=setTimeout(function(){!e.mouseInChild&&e.rootMenu.closeMenu(e.index)},this.hideTimeout),this.appendToBody&&t&&"ElSubmenu"===this.$parent.$options.name&&this.$parent.handleMouseleave(!0))},handleTitleMouseenter:function(){if("horizontal"!==this.mode||this.rootMenu.backgroundColor){var e=this.$refs["submenu-title"];e&&(e.style.backgroundColor=this.rootMenu.hoverBackground)}},handleTitleMouseleave:function(){if("horizontal"!==this.mode||this.rootMenu.backgroundColor){var e=this.$refs["submenu-title"];e&&(e.style.backgroundColor=this.rootMenu.backgroundColor||"")}},updatePlacement:function(){this.currentPlacement="horizontal"===this.mode&&this.isFirstLevel?"bottom-start":"right-start"},initPopper:function(){this.referenceElm=this.$el,this.popperElm=this.$refs.menu,this.updatePlacement()}},created:function(){var e=this;this.$on("toggle-collapse",this.handleCollapseToggle),this.$on("mouse-enter-child",function(){e.mouseInChild=!0,clearTimeout(e.timeout)}),this.$on("mouse-leave-child",function(){e.mouseInChild=!1,clearTimeout(e.timeout)})},mounted:function(){this.parentMenu.addSubmenu(this),this.rootMenu.addSubmenu(this),this.initPopper()},beforeDestroy:function(){this.parentMenu.removeSubmenu(this),this.rootMenu.removeSubmenu(this)},render:function(e){var t=this,i=this.active,n=this.opened,r=this.paddingStyle,s=this.titleStyle,a=this.backgroundColor,o=this.rootMenu,l=this.currentPlacement,u=this.menuTransitionName,c=this.mode,h=this.disabled,d=this.popperClass,p=this.$slots,f=this.isFirstLevel,m=e("transition",{attrs:{name:u}},[e("div",{ref:"menu",directives:[{name:"show",value:n}],class:["el-menu--"+c,d],on:{mouseenter:function(e){return t.handleMouseenter(e,100)},mouseleave:function(){return t.handleMouseleave(!0)},focus:function(e){return t.handleMouseenter(e,100)}}},[e("ul",{attrs:{role:"menu"},class:["el-menu el-menu--popup","el-menu--popup-"+l],style:{backgroundColor:o.backgroundColor||""}},[p.default])])]),v=e("el-collapse-transition",[e("ul",{attrs:{role:"menu"},class:"el-menu el-menu--inline",directives:[{name:"show",value:n}],style:{backgroundColor:o.backgroundColor||""}},[p.default])]),g="horizontal"===o.mode&&f||"vertical"===o.mode&&!o.collapse?"el-icon-arrow-down":"el-icon-arrow-right";return e("li",{class:{"el-submenu":!0,"is-active":i,"is-opened":n,"is-disabled":h},attrs:{role:"menuitem","aria-haspopup":"true","aria-expanded":n},on:{mouseenter:this.handleMouseenter,mouseleave:function(){return t.handleMouseleave(!1)},focus:this.handleMouseenter}},[e("div",{class:"el-submenu__title",ref:"submenu-title",on:{click:this.handleClick,mouseenter:this.handleTitleMouseenter,mouseleave:this.handleTitleMouseleave},style:[r,s,{backgroundColor:a}]},[p.title,e("i",{class:["el-submenu__icon-arrow",g]})]),this.isMenuPopup?m:v])}},void 0,void 0,!1,null,null,null);ri.options.__file="packages/menu/src/submenu.vue";var si=ri.exports;si.install=function(e){e.component(si.name,si)};var ai=si,oi=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("li",{staticClass:"el-menu-item",class:{"is-active":e.active,"is-disabled":e.disabled},style:[e.paddingStyle,e.itemStyle,{backgroundColor:e.backgroundColor}],attrs:{role:"menuitem",tabindex:"-1"},on:{click:e.handleClick,mouseenter:e.onMouseEnter,focus:e.onMouseEnter,blur:e.onMouseLeave,mouseleave:e.onMouseLeave}},["ElMenu"===e.parentMenu.$options.componentName&&e.rootMenu.collapse&&e.$slots.title?i("el-tooltip",{attrs:{effect:"dark",placement:"right"}},[i("div",{attrs:{slot:"content"},slot:"content"},[e._t("title")],2),i("div",{staticStyle:{position:"absolute",left:"0",top:"0",height:"100%",width:"100%",display:"inline-block","box-sizing":"border-box",padding:"0 20px"}},[e._t("default")],2)]):[e._t("default"),e._t("title")]],2)};oi._withStripped=!0;var li={name:"ElTooltip",mixins:[Oe],props:{openDelay:{type:Number,default:0},disabled:Boolean,manual:Boolean,effect:{type:String,default:"dark"},arrowOffset:{type:Number,default:0},popperClass:String,content:String,visibleArrow:{default:!0},transition:{type:String,default:"el-fade-in-linear"},popperOptions:{default:function(){return{boundariesPadding:10,gpuAcceleration:!1}}},enterable:{type:Boolean,default:!0},hideAfter:{type:Number,default:0},tabindex:{type:Number,default:0}},data:function(){return{tooltipId:"el-tooltip-"+D(),timeoutPending:null,focusing:!1}},beforeCreate:function(){var e=this;this.$isServer||(this.popperVM=new h.a({data:{node:""},render:function(e){return this.node}}).$mount(),this.debounceClose=et()(200,function(){return e.handleClosePopper()}))},render:function(e){var t=this;this.popperVM&&(this.popperVM.node=e("transition",{attrs:{name:this.transition},on:{afterLeave:this.doDestroy}},[e("div",{on:{mouseleave:function(){t.setExpectedState(!1),t.debounceClose()},mouseenter:function(){t.setExpectedState(!0)}},ref:"popper",attrs:{role:"tooltip",id:this.tooltipId,"aria-hidden":this.disabled||!this.showPopper?"true":"false"},directives:[{name:"show",value:!this.disabled&&this.showPopper}],class:["el-tooltip__popper","is-"+this.effect,this.popperClass]},[this.$slots.content||this.content])]));var i=this.getFirstElement();if(!i)return null;var n=i.data=i.data||{};return n.staticClass=this.addTooltipClass(n.staticClass),i},mounted:function(){var e=this;this.referenceElm=this.$el,1===this.$el.nodeType&&(this.$el.setAttribute("aria-describedby",this.tooltipId),this.$el.setAttribute("tabindex",this.tabindex),he(this.referenceElm,"mouseenter",this.show),he(this.referenceElm,"mouseleave",this.hide),he(this.referenceElm,"focus",function(){if(e.$slots.default&&e.$slots.default.length){var t=e.$slots.default[0].componentInstance;t&&t.focus?t.focus():e.handleFocus()}else e.handleFocus()}),he(this.referenceElm,"blur",this.handleBlur),he(this.referenceElm,"click",this.removeFocusing)),this.value&&this.popperVM&&this.popperVM.$nextTick(function(){e.value&&e.updatePopper()})},watch:{focusing:function(e){e?fe(this.referenceElm,"focusing"):me(this.referenceElm,"focusing")}},methods:{show:function(){this.setExpectedState(!0),this.handleShowPopper()},hide:function(){this.setExpectedState(!1),this.debounceClose()},handleFocus:function(){this.focusing=!0,this.show()},handleBlur:function(){this.focusing=!1,this.hide()},removeFocusing:function(){this.focusing=!1},addTooltipClass:function(e){return e?"el-tooltip "+e.replace("el-tooltip",""):"el-tooltip"},handleShowPopper:function(){var e=this;this.expectedState&&!this.manual&&(clearTimeout(this.timeout),this.timeout=setTimeout(function(){e.showPopper=!0},this.openDelay),this.hideAfter>0&&(this.timeoutPending=setTimeout(function(){e.showPopper=!1},this.hideAfter)))},handleClosePopper:function(){this.enterable&&this.expectedState||this.manual||(clearTimeout(this.timeout),this.timeoutPending&&clearTimeout(this.timeoutPending),this.showPopper=!1,this.disabled&&this.doDestroy())},setExpectedState:function(e){!1===e&&clearTimeout(this.timeoutPending),this.expectedState=e},getFirstElement:function(){var e=this.$slots.default;if(!Array.isArray(e))return null;for(var t=null,i=0;i<e.length;i++)e[i]&&e[i].tag&&(t=e[i]);return t}},beforeDestroy:function(){this.popperVM&&this.popperVM.$destroy()},destroyed:function(){var e=this.referenceElm;1===e.nodeType&&(de(e,"mouseenter",this.show),de(e,"mouseleave",this.hide),de(e,"focus",this.handleFocus),de(e,"blur",this.handleBlur),de(e,"click",this.removeFocusing))},install:function(e){e.component(li.name,li)}},ui=li,ci=r({name:"ElMenuItem",componentName:"ElMenuItem",mixins:[ni,l],components:{ElTooltip:ui},props:{index:{default:null,validator:function(e){return"string"==typeof e||null===e}},route:[String,Object],disabled:Boolean},computed:{active:function(){return this.index===this.rootMenu.activeIndex},hoverBackground:function(){return this.rootMenu.hoverBackground},backgroundColor:function(){return this.rootMenu.backgroundColor||""},activeTextColor:function(){return this.rootMenu.activeTextColor||""},textColor:function(){return this.rootMenu.textColor||""},mode:function(){return this.rootMenu.mode},itemStyle:function(){var e={color:this.active?this.activeTextColor:this.textColor};return"horizontal"!==this.mode||this.isNested||(e.borderBottomColor=this.active?this.rootMenu.activeTextColor?this.activeTextColor:"":"transparent"),e},isNested:function(){return this.parentMenu!==this.rootMenu}},methods:{onMouseEnter:function(){("horizontal"!==this.mode||this.rootMenu.backgroundColor)&&(this.$el.style.backgroundColor=this.hoverBackground)},onMouseLeave:function(){("horizontal"!==this.mode||this.rootMenu.backgroundColor)&&(this.$el.style.backgroundColor=this.backgroundColor)},handleClick:function(){this.disabled||(this.dispatch("ElMenu","item-click",this),this.$emit("click",this))}},mounted:function(){this.parentMenu.addItem(this),this.rootMenu.addItem(this)},beforeDestroy:function(){this.parentMenu.removeItem(this),this.rootMenu.removeItem(this)}},oi,[],!1,null,null,null);ci.options.__file="packages/menu/src/menu-item.vue";var hi=ci.exports;hi.install=function(e){e.component(hi.name,hi)};var di=hi,pi=function(){var e=this.$createElement,t=this._self._c||e;return t("li",{staticClass:"el-menu-item-group"},[t("div",{staticClass:"el-menu-item-group__title",style:{paddingLeft:this.levelPadding+"px"}},[this.$slots.title?this._t("title"):[this._v(this._s(this.title))]],2),t("ul",[this._t("default")],2)])};pi._withStripped=!0;var fi=r({name:"ElMenuItemGroup",componentName:"ElMenuItemGroup",inject:["rootMenu"],props:{title:{type:String}},data:function(){return{paddingLeft:20}},computed:{levelPadding:function(){var e=20,t=this.$parent;if(this.rootMenu.collapse)return 20;for(;t&&"ElMenu"!==t.$options.componentName;)"ElSubmenu"===t.$options.componentName&&(e+=20),t=t.$parent;return e}}},pi,[],!1,null,null,null);fi.options.__file="packages/menu/src/menu-item-group.vue";var mi=fi.exports;mi.install=function(e){e.component(mi.name,mi)};var vi=mi,gi=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{class:["el-input-number",e.inputNumberSize?"el-input-number--"+e.inputNumberSize:"",{"is-disabled":e.inputNumberDisabled},{"is-without-controls":!e.controls},{"is-controls-right":e.controlsAtRight}],on:{dragstart:function(e){e.preventDefault()}}},[e.controls?i("span",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.decrease,expression:"decrease"}],staticClass:"el-input-number__decrease",class:{"is-disabled":e.minDisabled},attrs:{role:"button"},on:{keydown:function(t){return"button"in t||!e._k(t.keyCode,"enter",13,t.key,"Enter")?e.decrease(t):null}}},[i("i",{class:"el-icon-"+(e.controlsAtRight?"arrow-down":"minus")})]):e._e(),e.controls?i("span",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.increase,expression:"increase"}],staticClass:"el-input-number__increase",class:{"is-disabled":e.maxDisabled},attrs:{role:"button"},on:{keydown:function(t){return"button"in t||!e._k(t.keyCode,"enter",13,t.key,"Enter")?e.increase(t):null}}},[i("i",{class:"el-icon-"+(e.controlsAtRight?"arrow-up":"plus")})]):e._e(),i("el-input",{ref:"input",attrs:{value:e.displayValue,placeholder:e.placeholder,disabled:e.inputNumberDisabled,size:e.inputNumberSize,max:e.max,min:e.min,name:e.name,label:e.label},on:{blur:e.handleBlur,focus:e.handleFocus,input:e.handleInput,change:e.handleInputChange},nativeOn:{keydown:[function(t){return"button"in t||!e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"])?(t.preventDefault(),e.increase(t)):null},function(t){return"button"in t||!e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])?(t.preventDefault(),e.decrease(t)):null}]}})],1)};gi._withStripped=!0;var bi={bind:function(e,t,i){var n=null,r=void 0,s=function(){return i.context[t.expression].apply()},a=function(){Date.now()-r<100&&s(),clearInterval(n),n=null};he(e,"mousedown",function(e){var t,i,o;0===e.button&&(r=Date.now(),t=document,o=a,he(t,i="mouseup",function e(){o&&o.apply(this,arguments),de(t,i,e)}),clearInterval(n),n=setInterval(s,100))})}},yi=r({name:"ElInputNumber",mixins:[u("input")],inject:{elForm:{default:""},elFormItem:{default:""}},directives:{repeatClick:bi},components:{ElInput:ne},props:{step:{type:Number,default:1},stepStrictly:{type:Boolean,default:!1},max:{type:Number,default:1/0},min:{type:Number,default:-1/0},value:{},disabled:Boolean,size:String,controls:{type:Boolean,default:!0},controlsPosition:{type:String,default:""},name:String,label:String,placeholder:String,precision:{type:Number,validator:function(e){return e>=0&&e===parseInt(e,10)}}},data:function(){return{currentValue:0,userInput:null}},watch:{value:{immediate:!0,handler:function(e){var t=void 0===e?e:Number(e);if(void 0!==t){if(isNaN(t))return;if(this.stepStrictly){var i=this.getPrecision(this.step),n=Math.pow(10,i);t=Math.round(t/this.step)*n*this.step/n}void 0!==this.precision&&(t=this.toPrecision(t,this.precision))}t>=this.max&&(t=this.max),t<=this.min&&(t=this.min),this.currentValue=t,this.userInput=null,this.$emit("input",t)}}},computed:{minDisabled:function(){return this._decrease(this.value,this.step)<this.min},maxDisabled:function(){return this._increase(this.value,this.step)>this.max},numPrecision:function(){var e=this.value,t=this.step,i=this.getPrecision,n=this.precision,r=i(t);return void 0!==n?(r>n&&console.warn("[Element Warn][InputNumber]precision should not be less than the decimal places of step"),n):Math.max(i(e),r)},controlsAtRight:function(){return this.controls&&"right"===this.controlsPosition},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},inputNumberSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},inputNumberDisabled:function(){return this.disabled||!!(this.elForm||{}).disabled},displayValue:function(){if(null!==this.userInput)return this.userInput;var e=this.currentValue;if("number"==typeof e){if(this.stepStrictly){var t=this.getPrecision(this.step),i=Math.pow(10,t);e=Math.round(e/this.step)*i*this.step/i}void 0!==this.precision&&(e=e.toFixed(this.precision))}return e}},methods:{toPrecision:function(e,t){return void 0===t&&(t=this.numPrecision),parseFloat(Math.round(e*Math.pow(10,t))/Math.pow(10,t))},getPrecision:function(e){if(void 0===e)return 0;var t=e.toString(),i=t.indexOf("."),n=0;return-1!==i&&(n=t.length-i-1),n},_increase:function(e,t){if("number"!=typeof e&&void 0!==e)return this.currentValue;var i=Math.pow(10,this.numPrecision);return this.toPrecision((i*e+i*t)/i)},_decrease:function(e,t){if("number"!=typeof e&&void 0!==e)return this.currentValue;var i=Math.pow(10,this.numPrecision);return this.toPrecision((i*e-i*t)/i)},increase:function(){if(!this.inputNumberDisabled&&!this.maxDisabled){var e=this.value||0,t=this._increase(e,this.step);this.setCurrentValue(t)}},decrease:function(){if(!this.inputNumberDisabled&&!this.minDisabled){var e=this.value||0,t=this._decrease(e,this.step);this.setCurrentValue(t)}},handleBlur:function(e){this.$emit("blur",e)},handleFocus:function(e){this.$emit("focus",e)},setCurrentValue:function(e){var t=this.currentValue;"number"==typeof e&&void 0!==this.precision&&(e=this.toPrecision(e,this.precision)),e>=this.max&&(e=this.max),e<=this.min&&(e=this.min),t!==e&&(this.userInput=null,this.$emit("input",e),this.$emit("change",e,t),this.currentValue=e)},handleInput:function(e){this.userInput=e},handleInputChange:function(e){var t=""===e?void 0:Number(e);isNaN(t)&&""!==e||this.setCurrentValue(t),this.userInput=null},select:function(){this.$refs.input.select()}},mounted:function(){var e=this.$refs.input.$refs.input;e.setAttribute("role","spinbutton"),e.setAttribute("aria-valuemax",this.max),e.setAttribute("aria-valuemin",this.min),e.setAttribute("aria-valuenow",this.currentValue),e.setAttribute("aria-disabled",this.inputNumberDisabled)},updated:function(){this.$refs&&this.$refs.input&&this.$refs.input.$refs.input.setAttribute("aria-valuenow",this.currentValue)}},gi,[],!1,null,null,null);yi.options.__file="packages/input-number/src/input-number.vue";var wi=yi.exports;wi.install=function(e){e.component(wi.name,wi)};var _i=wi,xi=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("label",{staticClass:"el-radio",class:[e.border&&e.radioSize?"el-radio--"+e.radioSize:"",{"is-disabled":e.isDisabled},{"is-focus":e.focus},{"is-bordered":e.border},{"is-checked":e.model===e.label}],attrs:{role:"radio","aria-checked":e.model===e.label,"aria-disabled":e.isDisabled,tabindex:e.tabIndex},on:{keydown:function(t){if(!("button"in t)&&e._k(t.keyCode,"space",32,t.key,[" ","Spacebar"]))return null;t.stopPropagation(),t.preventDefault(),e.model=e.isDisabled?e.model:e.label}}},[i("span",{staticClass:"el-radio__input",class:{"is-disabled":e.isDisabled,"is-checked":e.model===e.label}},[i("span",{staticClass:"el-radio__inner"}),i("input",{directives:[{name:"model",rawName:"v-model",value:e.model,expression:"model"}],ref:"radio",staticClass:"el-radio__original",attrs:{type:"radio","aria-hidden":"true",name:e.name,disabled:e.isDisabled,tabindex:"-1"},domProps:{value:e.label,checked:e._q(e.model,e.label)},on:{focus:function(t){e.focus=!0},blur:function(t){e.focus=!1},change:[function(t){e.model=e.label},e.handleChange]}})]),i("span",{staticClass:"el-radio__label",on:{keydown:function(e){e.stopPropagation()}}},[e._t("default"),e.$slots.default?e._e():[e._v(e._s(e.label))]],2)])};xi._withStripped=!0;var Ci=r({name:"ElRadio",mixins:[l],inject:{elForm:{default:""},elFormItem:{default:""}},componentName:"ElRadio",props:{value:{},label:{},disabled:Boolean,name:String,border:Boolean,size:String},data:function(){return{focus:!1}},computed:{isGroup:function(){for(var e=this.$parent;e;){if("ElRadioGroup"===e.$options.componentName)return this._radioGroup=e,!0;e=e.$parent}return!1},model:{get:function(){return this.isGroup?this._radioGroup.value:this.value},set:function(e){this.isGroup?this.dispatch("ElRadioGroup","input",[e]):this.$emit("input",e),this.$refs.radio&&(this.$refs.radio.checked=this.model===this.label)}},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},radioSize:function(){var e=this.size||this._elFormItemSize||(this.$ELEMENT||{}).size;return this.isGroup&&this._radioGroup.radioGroupSize||e},isDisabled:function(){return this.isGroup?this._radioGroup.disabled||this.disabled||(this.elForm||{}).disabled:this.disabled||(this.elForm||{}).disabled},tabIndex:function(){return this.isDisabled||this.isGroup&&this.model!==this.label?-1:0}},methods:{handleChange:function(){var e=this;this.$nextTick(function(){e.$emit("change",e.model),e.isGroup&&e.dispatch("ElRadioGroup","handleChange",e.model)})}}},xi,[],!1,null,null,null);Ci.options.__file="packages/radio/src/radio.vue";var ki=Ci.exports;ki.install=function(e){e.component(ki.name,ki)};var Si=ki,Di=function(){var e=this.$createElement;return(this._self._c||e)(this._elTag,{tag:"component",staticClass:"el-radio-group",attrs:{role:"radiogroup"},on:{keydown:this.handleKeydown}},[this._t("default")],2)};Di._withStripped=!0;var $i=Object.freeze({LEFT:37,UP:38,RIGHT:39,DOWN:40}),Ei=r({name:"ElRadioGroup",componentName:"ElRadioGroup",inject:{elFormItem:{default:""}},mixins:[l],props:{value:{},size:String,fill:String,textColor:String,disabled:Boolean},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},_elTag:function(){return(this.$vnode.data||{}).tag||"div"},radioGroupSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size}},created:function(){var e=this;this.$on("handleChange",function(t){e.$emit("change",t)})},mounted:function(){var e=this.$el.querySelectorAll("[type=radio]"),t=this.$el.querySelectorAll("[role=radio]")[0];![].some.call(e,function(e){return e.checked})&&t&&(t.tabIndex=0)},methods:{handleKeydown:function(e){var t=e.target,i="INPUT"===t.nodeName?"[type=radio]":"[role=radio]",n=this.$el.querySelectorAll(i),r=n.length,s=[].indexOf.call(n,t),a=this.$el.querySelectorAll("[role=radio]");switch(e.keyCode){case $i.LEFT:case $i.UP:e.stopPropagation(),e.preventDefault(),0===s?(a[r-1].click(),a[r-1].focus()):(a[s-1].click(),a[s-1].focus());break;case $i.RIGHT:case $i.DOWN:s===r-1?(e.stopPropagation(),e.preventDefault(),a[0].click(),a[0].focus()):(a[s+1].click(),a[s+1].focus())}}},watch:{value:function(e){this.dispatch("ElFormItem","el.form.change",[this.value])}}},Di,[],!1,null,null,null);Ei.options.__file="packages/radio/src/radio-group.vue";var Ti=Ei.exports;Ti.install=function(e){e.component(Ti.name,Ti)};var Mi=Ti,Ni=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("label",{staticClass:"el-radio-button",class:[e.size?"el-radio-button--"+e.size:"",{"is-active":e.value===e.label},{"is-disabled":e.isDisabled},{"is-focus":e.focus}],attrs:{role:"radio","aria-checked":e.value===e.label,"aria-disabled":e.isDisabled,tabindex:e.tabIndex},on:{keydown:function(t){if(!("button"in t)&&e._k(t.keyCode,"space",32,t.key,[" ","Spacebar"]))return null;t.stopPropagation(),t.preventDefault(),e.value=e.isDisabled?e.value:e.label}}},[i("input",{directives:[{name:"model",rawName:"v-model",value:e.value,expression:"value"}],staticClass:"el-radio-button__orig-radio",attrs:{type:"radio",name:e.name,disabled:e.isDisabled,tabindex:"-1"},domProps:{value:e.label,checked:e._q(e.value,e.label)},on:{change:[function(t){e.value=e.label},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}}),i("span",{staticClass:"el-radio-button__inner",style:e.value===e.label?e.activeStyle:null,on:{keydown:function(e){e.stopPropagation()}}},[e._t("default"),e.$slots.default?e._e():[e._v(e._s(e.label))]],2)])};Ni._withStripped=!0;var Pi=r({name:"ElRadioButton",mixins:[l],inject:{elForm:{default:""},elFormItem:{default:""}},props:{label:{},disabled:Boolean,name:String},data:function(){return{focus:!1}},computed:{value:{get:function(){return this._radioGroup.value},set:function(e){this._radioGroup.$emit("input",e)}},_radioGroup:function(){for(var e=this.$parent;e;){if("ElRadioGroup"===e.$options.componentName)return e;e=e.$parent}return!1},activeStyle:function(){return{backgroundColor:this._radioGroup.fill||"",borderColor:this._radioGroup.fill||"",boxShadow:this._radioGroup.fill?"-1px 0 0 0 "+this._radioGroup.fill:"",color:this._radioGroup.textColor||""}},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},size:function(){return this._radioGroup.radioGroupSize||this._elFormItemSize||(this.$ELEMENT||{}).size},isDisabled:function(){return this.disabled||this._radioGroup.disabled||(this.elForm||{}).disabled},tabIndex:function(){return this.isDisabled||this._radioGroup&&this.value!==this.label?-1:0}},methods:{handleChange:function(){var e=this;this.$nextTick(function(){e.dispatch("ElRadioGroup","handleChange",e.value)})}}},Ni,[],!1,null,null,null);Pi.options.__file="packages/radio/src/radio-button.vue";var Oi=Pi.exports;Oi.install=function(e){e.component(Oi.name,Oi)};var Ii=Oi,Ai=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("label",{staticClass:"el-checkbox",class:[e.border&&e.checkboxSize?"el-checkbox--"+e.checkboxSize:"",{"is-disabled":e.isDisabled},{"is-bordered":e.border},{"is-checked":e.isChecked}],attrs:{id:e.id}},[i("span",{staticClass:"el-checkbox__input",class:{"is-disabled":e.isDisabled,"is-checked":e.isChecked,"is-indeterminate":e.indeterminate,"is-focus":e.focus},attrs:{tabindex:!!e.indeterminate&&0,role:!!e.indeterminate&&"checkbox","aria-checked":!!e.indeterminate&&"mixed"}},[i("span",{staticClass:"el-checkbox__inner"}),e.trueLabel||e.falseLabel?i("input",{directives:[{name:"model",rawName:"v-model",value:e.model,expression:"model"}],staticClass:"el-checkbox__original",attrs:{type:"checkbox","aria-hidden":e.indeterminate?"true":"false",name:e.name,disabled:e.isDisabled,"true-value":e.trueLabel,"false-value":e.falseLabel},domProps:{checked:Array.isArray(e.model)?e._i(e.model,null)>-1:e._q(e.model,e.trueLabel)},on:{change:[function(t){var i=e.model,n=t.target,r=n.checked?e.trueLabel:e.falseLabel;if(Array.isArray(i)){var s=e._i(i,null);n.checked?s<0&&(e.model=i.concat([null])):s>-1&&(e.model=i.slice(0,s).concat(i.slice(s+1)))}else e.model=r},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}}):i("input",{directives:[{name:"model",rawName:"v-model",value:e.model,expression:"model"}],staticClass:"el-checkbox__original",attrs:{type:"checkbox","aria-hidden":e.indeterminate?"true":"false",disabled:e.isDisabled,name:e.name},domProps:{value:e.label,checked:Array.isArray(e.model)?e._i(e.model,e.label)>-1:e.model},on:{change:[function(t){var i=e.model,n=t.target,r=!!n.checked;if(Array.isArray(i)){var s=e.label,a=e._i(i,s);n.checked?a<0&&(e.model=i.concat([s])):a>-1&&(e.model=i.slice(0,a).concat(i.slice(a+1)))}else e.model=r},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}})]),e.$slots.default||e.label?i("span",{staticClass:"el-checkbox__label"},[e._t("default"),e.$slots.default?e._e():[e._v(e._s(e.label))]],2):e._e()])};Ai._withStripped=!0;var Fi=r({name:"ElCheckbox",mixins:[l],inject:{elForm:{default:""},elFormItem:{default:""}},componentName:"ElCheckbox",data:function(){return{selfModel:!1,focus:!1,isLimitExceeded:!1}},computed:{model:{get:function(){return this.isGroup?this.store:void 0!==this.value?this.value:this.selfModel},set:function(e){this.isGroup?(this.isLimitExceeded=!1,void 0!==this._checkboxGroup.min&&e.length<this._checkboxGroup.min&&(this.isLimitExceeded=!0),void 0!==this._checkboxGroup.max&&e.length>this._checkboxGroup.max&&(this.isLimitExceeded=!0),!1===this.isLimitExceeded&&this.dispatch("ElCheckboxGroup","input",[e])):(this.$emit("input",e),this.selfModel=e)}},isChecked:function(){return"[object Boolean]"==={}.toString.call(this.model)?this.model:Array.isArray(this.model)?this.model.indexOf(this.label)>-1:null!==this.model&&void 0!==this.model?this.model===this.trueLabel:void 0},isGroup:function(){for(var e=this.$parent;e;){if("ElCheckboxGroup"===e.$options.componentName)return this._checkboxGroup=e,!0;e=e.$parent}return!1},store:function(){return this._checkboxGroup?this._checkboxGroup.value:this.value},isLimitDisabled:function(){var e=this._checkboxGroup,t=e.max,i=e.min;return!(!t&&!i)&&this.model.length>=t&&!this.isChecked||this.model.length<=i&&this.isChecked},isDisabled:function(){return this.isGroup?this._checkboxGroup.disabled||this.disabled||(this.elForm||{}).disabled||this.isLimitDisabled:this.disabled||(this.elForm||{}).disabled},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},checkboxSize:function(){var e=this.size||this._elFormItemSize||(this.$ELEMENT||{}).size;return this.isGroup&&this._checkboxGroup.checkboxGroupSize||e}},props:{value:{},label:{},indeterminate:Boolean,disabled:Boolean,checked:Boolean,name:String,trueLabel:[String,Number],falseLabel:[String,Number],id:String,controls:String,border:Boolean,size:String},methods:{addToStore:function(){Array.isArray(this.model)&&-1===this.model.indexOf(this.label)?this.model.push(this.label):this.model=this.trueLabel||!0},handleChange:function(e){var t=this;if(!this.isLimitExceeded){var i=void 0;i=e.target.checked?void 0===this.trueLabel||this.trueLabel:void 0!==this.falseLabel&&this.falseLabel,this.$emit("change",i,e),this.$nextTick(function(){t.isGroup&&t.dispatch("ElCheckboxGroup","change",[t._checkboxGroup.value])})}}},created:function(){this.checked&&this.addToStore()},mounted:function(){this.indeterminate&&this.$el.setAttribute("aria-controls",this.controls)},watch:{value:function(e){this.dispatch("ElFormItem","el.form.change",e)}}},Ai,[],!1,null,null,null);Fi.options.__file="packages/checkbox/src/checkbox.vue";var Li=Fi.exports;Li.install=function(e){e.component(Li.name,Li)};var Vi=Li,Bi=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("label",{staticClass:"el-checkbox-button",class:[e.size?"el-checkbox-button--"+e.size:"",{"is-disabled":e.isDisabled},{"is-checked":e.isChecked},{"is-focus":e.focus}],attrs:{role:"checkbox","aria-checked":e.isChecked,"aria-disabled":e.isDisabled}},[e.trueLabel||e.falseLabel?i("input",{directives:[{name:"model",rawName:"v-model",value:e.model,expression:"model"}],staticClass:"el-checkbox-button__original",attrs:{type:"checkbox",name:e.name,disabled:e.isDisabled,"true-value":e.trueLabel,"false-value":e.falseLabel},domProps:{checked:Array.isArray(e.model)?e._i(e.model,null)>-1:e._q(e.model,e.trueLabel)},on:{change:[function(t){var i=e.model,n=t.target,r=n.checked?e.trueLabel:e.falseLabel;if(Array.isArray(i)){var s=e._i(i,null);n.checked?s<0&&(e.model=i.concat([null])):s>-1&&(e.model=i.slice(0,s).concat(i.slice(s+1)))}else e.model=r},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}}):i("input",{directives:[{name:"model",rawName:"v-model",value:e.model,expression:"model"}],staticClass:"el-checkbox-button__original",attrs:{type:"checkbox",name:e.name,disabled:e.isDisabled},domProps:{value:e.label,checked:Array.isArray(e.model)?e._i(e.model,e.label)>-1:e.model},on:{change:[function(t){var i=e.model,n=t.target,r=!!n.checked;if(Array.isArray(i)){var s=e.label,a=e._i(i,s);n.checked?a<0&&(e.model=i.concat([s])):a>-1&&(e.model=i.slice(0,a).concat(i.slice(a+1)))}else e.model=r},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}}),e.$slots.default||e.label?i("span",{staticClass:"el-checkbox-button__inner",style:e.isChecked?e.activeStyle:null},[e._t("default",[e._v(e._s(e.label))])],2):e._e()])};Bi._withStripped=!0;var zi=r({name:"ElCheckboxButton",mixins:[l],inject:{elForm:{default:""},elFormItem:{default:""}},data:function(){return{selfModel:!1,focus:!1,isLimitExceeded:!1}},props:{value:{},label:{},disabled:Boolean,checked:Boolean,name:String,trueLabel:[String,Number],falseLabel:[String,Number]},computed:{model:{get:function(){return this._checkboxGroup?this.store:void 0!==this.value?this.value:this.selfModel},set:function(e){this._checkboxGroup?(this.isLimitExceeded=!1,void 0!==this._checkboxGroup.min&&e.length<this._checkboxGroup.min&&(this.isLimitExceeded=!0),void 0!==this._checkboxGroup.max&&e.length>this._checkboxGroup.max&&(this.isLimitExceeded=!0),!1===this.isLimitExceeded&&this.dispatch("ElCheckboxGroup","input",[e])):void 0!==this.value?this.$emit("input",e):this.selfModel=e}},isChecked:function(){return"[object Boolean]"==={}.toString.call(this.model)?this.model:Array.isArray(this.model)?this.model.indexOf(this.label)>-1:null!==this.model&&void 0!==this.model?this.model===this.trueLabel:void 0},_checkboxGroup:function(){for(var e=this.$parent;e;){if("ElCheckboxGroup"===e.$options.componentName)return e;e=e.$parent}return!1},store:function(){return this._checkboxGroup?this._checkboxGroup.value:this.value},activeStyle:function(){return{backgroundColor:this._checkboxGroup.fill||"",borderColor:this._checkboxGroup.fill||"",color:this._checkboxGroup.textColor||"","box-shadow":"-1px 0 0 0 "+this._checkboxGroup.fill}},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},size:function(){return this._checkboxGroup.checkboxGroupSize||this._elFormItemSize||(this.$ELEMENT||{}).size},isLimitDisabled:function(){var e=this._checkboxGroup,t=e.max,i=e.min;return!(!t&&!i)&&this.model.length>=t&&!this.isChecked||this.model.length<=i&&this.isChecked},isDisabled:function(){return this._checkboxGroup?this._checkboxGroup.disabled||this.disabled||(this.elForm||{}).disabled||this.isLimitDisabled:this.disabled||(this.elForm||{}).disabled}},methods:{addToStore:function(){Array.isArray(this.model)&&-1===this.model.indexOf(this.label)?this.model.push(this.label):this.model=this.trueLabel||!0},handleChange:function(e){var t=this;if(!this.isLimitExceeded){var i=void 0;i=e.target.checked?void 0===this.trueLabel||this.trueLabel:void 0!==this.falseLabel&&this.falseLabel,this.$emit("change",i,e),this.$nextTick(function(){t._checkboxGroup&&t.dispatch("ElCheckboxGroup","change",[t._checkboxGroup.value])})}}},created:function(){this.checked&&this.addToStore()}},Bi,[],!1,null,null,null);zi.options.__file="packages/checkbox/src/checkbox-button.vue";var Hi=zi.exports;Hi.install=function(e){e.component(Hi.name,Hi)};var Ri=Hi,Wi=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-checkbox-group",attrs:{role:"group","aria-label":"checkbox-group"}},[this._t("default")],2)};Wi._withStripped=!0;var ji=r({name:"ElCheckboxGroup",componentName:"ElCheckboxGroup",mixins:[l],inject:{elFormItem:{default:""}},props:{value:{},disabled:Boolean,min:Number,max:Number,size:String,fill:String,textColor:String},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},checkboxGroupSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size}},watch:{value:function(e){this.dispatch("ElFormItem","el.form.change",[e])}}},Wi,[],!1,null,null,null);ji.options.__file="packages/checkbox/src/checkbox-group.vue";var qi=ji.exports;qi.install=function(e){e.component(qi.name,qi)};var Yi=qi,Ki=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-switch",class:{"is-disabled":e.switchDisabled,"is-checked":e.checked},attrs:{role:"switch","aria-checked":e.checked,"aria-disabled":e.switchDisabled},on:{click:function(t){return t.preventDefault(),e.switchValue(t)}}},[i("input",{ref:"input",staticClass:"el-switch__input",attrs:{type:"checkbox",id:e.id,name:e.name,"true-value":e.activeValue,"false-value":e.inactiveValue,disabled:e.switchDisabled},on:{change:e.handleChange,keydown:function(t){return"button"in t||!e._k(t.keyCode,"enter",13,t.key,"Enter")?e.switchValue(t):null}}}),e.inactiveIconClass||e.inactiveText?i("span",{class:["el-switch__label","el-switch__label--left",e.checked?"":"is-active"]},[e.inactiveIconClass?i("i",{class:[e.inactiveIconClass]}):e._e(),!e.inactiveIconClass&&e.inactiveText?i("span",{attrs:{"aria-hidden":e.checked}},[e._v(e._s(e.inactiveText))]):e._e()]):e._e(),i("span",{ref:"core",staticClass:"el-switch__core",style:{width:e.coreWidth+"px"}}),e.activeIconClass||e.activeText?i("span",{class:["el-switch__label","el-switch__label--right",e.checked?"is-active":""]},[e.activeIconClass?i("i",{class:[e.activeIconClass]}):e._e(),!e.activeIconClass&&e.activeText?i("span",{attrs:{"aria-hidden":!e.checked}},[e._v(e._s(e.activeText))]):e._e()]):e._e()])};Ki._withStripped=!0;var Gi=r({name:"ElSwitch",mixins:[u("input"),K,l],inject:{elForm:{default:""}},props:{value:{type:[Boolean,String,Number],default:!1},disabled:{type:Boolean,default:!1},width:{type:Number,default:40},activeIconClass:{type:String,default:""},inactiveIconClass:{type:String,default:""},activeText:String,inactiveText:String,activeColor:{type:String,default:""},inactiveColor:{type:String,default:""},activeValue:{type:[Boolean,String,Number],default:!0},inactiveValue:{type:[Boolean,String,Number],default:!1},name:{type:String,default:""},validateEvent:{type:Boolean,default:!0},id:String},data:function(){return{coreWidth:this.width}},created:function(){~[this.activeValue,this.inactiveValue].indexOf(this.value)||this.$emit("input",this.inactiveValue)},computed:{checked:function(){return this.value===this.activeValue},switchDisabled:function(){return this.disabled||(this.elForm||{}).disabled}},watch:{checked:function(){this.$refs.input.checked=this.checked,(this.activeColor||this.inactiveColor)&&this.setBackgroundColor(),this.validateEvent&&this.dispatch("ElFormItem","el.form.change",[this.value])}},methods:{handleChange:function(e){var t=this,i=this.checked?this.inactiveValue:this.activeValue;this.$emit("input",i),this.$emit("change",i),this.$nextTick(function(){t.$refs.input.checked=t.checked})},setBackgroundColor:function(){var e=this.checked?this.activeColor:this.inactiveColor;this.$refs.core.style.borderColor=e,this.$refs.core.style.backgroundColor=e},switchValue:function(){!this.switchDisabled&&this.handleChange()},getMigratingConfig:function(){return{props:{"on-color":"on-color is renamed to active-color.","off-color":"off-color is renamed to inactive-color.","on-text":"on-text is renamed to active-text.","off-text":"off-text is renamed to inactive-text.","on-value":"on-value is renamed to active-value.","off-value":"off-value is renamed to inactive-value.","on-icon-class":"on-icon-class is renamed to active-icon-class.","off-icon-class":"off-icon-class is renamed to inactive-icon-class."}}}},mounted:function(){this.coreWidth=this.width||40,(this.activeColor||this.inactiveColor)&&this.setBackgroundColor(),this.$refs.input.checked=this.checked}},Ki,[],!1,null,null,null);Gi.options.__file="packages/switch/src/component.vue";var Ui=Gi.exports;Ui.install=function(e){e.component(Ui.name,Ui)};var Xi=Ui,Ji=function(){var e=this.$createElement,t=this._self._c||e;return t("ul",{directives:[{name:"show",rawName:"v-show",value:this.visible,expression:"visible"}],staticClass:"el-select-group__wrap"},[t("li",{staticClass:"el-select-group__title"},[this._v(this._s(this.label))]),t("li",[t("ul",{staticClass:"el-select-group"},[this._t("default")],2)])])};Ji._withStripped=!0;var Zi=r({mixins:[l],name:"ElOptionGroup",componentName:"ElOptionGroup",props:{label:String,disabled:{type:Boolean,default:!1}},data:function(){return{visible:!0}},watch:{disabled:function(e){this.broadcast("ElOption","handleGroupDisabled",e)}},methods:{queryChange:function(){this.visible=this.$children&&Array.isArray(this.$children)&&this.$children.some(function(e){return!0===e.visible})}},created:function(){this.$on("queryChange",this.queryChange)},mounted:function(){this.disabled&&this.broadcast("ElOption","handleGroupDisabled",this.disabled)}},Ji,[],!1,null,null,null);Zi.options.__file="packages/select/src/option-group.vue";var Qi=Zi.exports;Qi.install=function(e){e.component(Qi.name,Qi)};var en=Qi,tn=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-table",class:[{"el-table--fit":e.fit,"el-table--striped":e.stripe,"el-table--border":e.border||e.isGroup,"el-table--hidden":e.isHidden,"el-table--group":e.isGroup,"el-table--fluid-height":e.maxHeight,"el-table--scrollable-x":e.layout.scrollX,"el-table--scrollable-y":e.layout.scrollY,"el-table--enable-row-hover":!e.store.states.isComplex,"el-table--enable-row-transition":0!==(e.store.states.data||[]).length&&(e.store.states.data||[]).length<100},e.tableSize?"el-table--"+e.tableSize:""],on:{mouseleave:function(t){e.handleMouseLeave(t)}}},[i("div",{ref:"hiddenColumns",staticClass:"hidden-columns"},[e._t("default")],2),e.showHeader?i("div",{directives:[{name:"mousewheel",rawName:"v-mousewheel",value:e.handleHeaderFooterMousewheel,expression:"handleHeaderFooterMousewheel"}],ref:"headerWrapper",staticClass:"el-table__header-wrapper"},[i("table-header",{ref:"tableHeader",style:{width:e.layout.bodyWidth?e.layout.bodyWidth+"px":""},attrs:{store:e.store,border:e.border,"default-sort":e.defaultSort}})],1):e._e(),i("div",{ref:"bodyWrapper",staticClass:"el-table__body-wrapper",class:[e.layout.scrollX?"is-scrolling-"+e.scrollPosition:"is-scrolling-none"],style:[e.bodyHeight]},[i("table-body",{style:{width:e.bodyWidth},attrs:{context:e.context,store:e.store,stripe:e.stripe,"row-class-name":e.rowClassName,"row-style":e.rowStyle,highlight:e.highlightCurrentRow}}),e.data&&0!==e.data.length?e._e():i("div",{ref:"emptyBlock",staticClass:"el-table__empty-block",style:e.emptyBlockStyle},[i("span",{staticClass:"el-table__empty-text"},[e._t("empty",[e._v(e._s(e.emptyText||e.t("el.table.emptyText")))])],2)]),e.$slots.append?i("div",{ref:"appendWrapper",staticClass:"el-table__append-wrapper"},[e._t("append")],2):e._e()],1),e.showSummary?i("div",{directives:[{name:"show",rawName:"v-show",value:e.data&&e.data.length>0,expression:"data && data.length > 0"},{name:"mousewheel",rawName:"v-mousewheel",value:e.handleHeaderFooterMousewheel,expression:"handleHeaderFooterMousewheel"}],ref:"footerWrapper",staticClass:"el-table__footer-wrapper"},[i("table-footer",{style:{width:e.layout.bodyWidth?e.layout.bodyWidth+"px":""},attrs:{store:e.store,border:e.border,"sum-text":e.sumText||e.t("el.table.sumText"),"summary-method":e.summaryMethod,"default-sort":e.defaultSort}})],1):e._e(),e.fixedColumns.length>0?i("div",{directives:[{name:"mousewheel",rawName:"v-mousewheel",value:e.handleFixedMousewheel,expression:"handleFixedMousewheel"}],ref:"fixedWrapper",staticClass:"el-table__fixed",style:[{width:e.layout.fixedWidth?e.layout.fixedWidth+"px":""},e.fixedHeight]},[e.showHeader?i("div",{ref:"fixedHeaderWrapper",staticClass:"el-table__fixed-header-wrapper"},[i("table-header",{ref:"fixedTableHeader",style:{width:e.bodyWidth},attrs:{fixed:"left",border:e.border,store:e.store}})],1):e._e(),i("div",{ref:"fixedBodyWrapper",staticClass:"el-table__fixed-body-wrapper",style:[{top:e.layout.headerHeight+"px"},e.fixedBodyHeight]},[i("table-body",{style:{width:e.bodyWidth},attrs:{fixed:"left",store:e.store,stripe:e.stripe,highlight:e.highlightCurrentRow,"row-class-name":e.rowClassName,"row-style":e.rowStyle}}),e.$slots.append?i("div",{staticClass:"el-table__append-gutter",style:{height:e.layout.appendHeight+"px"}}):e._e()],1),e.showSummary?i("div",{directives:[{name:"show",rawName:"v-show",value:e.data&&e.data.length>0,expression:"data && data.length > 0"}],ref:"fixedFooterWrapper",staticClass:"el-table__fixed-footer-wrapper"},[i("table-footer",{style:{width:e.bodyWidth},attrs:{fixed:"left",border:e.border,"sum-text":e.sumText||e.t("el.table.sumText"),"summary-method":e.summaryMethod,store:e.store}})],1):e._e()]):e._e(),e.rightFixedColumns.length>0?i("div",{directives:[{name:"mousewheel",rawName:"v-mousewheel",value:e.handleFixedMousewheel,expression:"handleFixedMousewheel"}],ref:"rightFixedWrapper",staticClass:"el-table__fixed-right",style:[{width:e.layout.rightFixedWidth?e.layout.rightFixedWidth+"px":"",right:e.layout.scrollY?(e.border?e.layout.gutterWidth:e.layout.gutterWidth||0)+"px":""},e.fixedHeight]},[e.showHeader?i("div",{ref:"rightFixedHeaderWrapper",staticClass:"el-table__fixed-header-wrapper"},[i("table-header",{ref:"rightFixedTableHeader",style:{width:e.bodyWidth},attrs:{fixed:"right",border:e.border,store:e.store}})],1):e._e(),i("div",{ref:"rightFixedBodyWrapper",staticClass:"el-table__fixed-body-wrapper",style:[{top:e.layout.headerHeight+"px"},e.fixedBodyHeight]},[i("table-body",{style:{width:e.bodyWidth},attrs:{fixed:"right",store:e.store,stripe:e.stripe,"row-class-name":e.rowClassName,"row-style":e.rowStyle,highlight:e.highlightCurrentRow}}),e.$slots.append?i("div",{staticClass:"el-table__append-gutter",style:{height:e.layout.appendHeight+"px"}}):e._e()],1),e.showSummary?i("div",{directives:[{name:"show",rawName:"v-show",value:e.data&&e.data.length>0,expression:"data && data.length > 0"}],ref:"rightFixedFooterWrapper",staticClass:"el-table__fixed-footer-wrapper"},[i("table-footer",{style:{width:e.bodyWidth},attrs:{fixed:"right",border:e.border,"sum-text":e.sumText||e.t("el.table.sumText"),"summary-method":e.summaryMethod,store:e.store}})],1):e._e()]):e._e(),e.rightFixedColumns.length>0?i("div",{ref:"rightFixedPatch",staticClass:"el-table__fixed-right-patch",style:{width:e.layout.scrollY?e.layout.gutterWidth+"px":"0",height:e.layout.headerHeight+"px"}}):e._e(),i("div",{directives:[{name:"show",rawName:"v-show",value:e.resizeProxyVisible,expression:"resizeProxyVisible"}],ref:"resizeProxy",staticClass:"el-table__column-resize-proxy"})])};tn._withStripped=!0;var nn=i(35),rn=i(48),sn=i.n(rn),an="undefined"!=typeof navigator&&navigator.userAgent.toLowerCase().indexOf("firefox")>-1,on={bind:function(e,t){var i,n;i=e,n=t.value,i&&i.addEventListener&&i.addEventListener(an?"DOMMouseScroll":"mousewheel",function(e){var t=sn()(e);n&&n.apply(this,[e,t])})}},ln="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},un=function(e){for(var t=e.target;t&&"HTML"!==t.tagName.toUpperCase();){if("TD"===t.tagName.toUpperCase())return t;t=t.parentNode}return null},cn=function(e){return null!==e&&"object"===(void 0===e?"undefined":ln(e))},hn=function(e,t,i,n,r){if(!t&&!n&&(!r||Array.isArray(r)&&!r.length))return e;i="string"==typeof i?"descending"===i?-1:1:i&&i<0?-1:1;var s=n?null:function(i,n){return r?(Array.isArray(r)||(r=[r]),r.map(function(t){return"string"==typeof t?k(i,t):t(i,n,e)})):("$key"!==t&&cn(i)&&"$value"in i&&(i=i.$value),[cn(i)?k(i,t):i])};return e.map(function(e,t){return{value:e,index:t,key:s?s(e,t):null}}).sort(function(e,t){var r=function(e,t){if(n)return n(e.value,t.value);for(var i=0,r=e.key.length;i<r;i++){if(e.key[i]<t.key[i])return-1;if(e.key[i]>t.key[i])return 1}return 0}(e,t);return r||(r=e.index-t.index),r*i}).map(function(e){return e.value})},dn=function(e,t){var i=null;return e.columns.forEach(function(e){e.id===t&&(i=e)}),i},pn=function(e,t){var i=(t.className||"").match(/el-table_[^\s]+/gm);return i?dn(e,i[0]):null},fn=function(e,t){if(!e)throw new Error("row is required when get row identity");if("string"==typeof t){if(t.indexOf(".")<0)return e[t];for(var i=t.split("."),n=e,r=0;r<i.length;r++)n=n[i[r]];return n}if("function"==typeof t)return t.call(null,e)},mn=function(e,t){var i={};return(e||[]).forEach(function(e,n){i[fn(e,t)]={row:e,index:n}}),i};function vn(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function gn(e){return void 0!==e&&(e=parseInt(e,10),isNaN(e)&&(e=null)),e}function bn(e){return"number"==typeof e?e:"string"==typeof e?/^\d+(?:px)?$/.test(e)?parseInt(e,10):e:null}function yn(e,t,i){var n=!1,r=e.indexOf(t),s=-1!==r,a=function(){e.push(t),n=!0},o=function(){e.splice(r,1),n=!0};return"boolean"==typeof i?i&&!s?a():!i&&s&&o():s?o():a(),n}function wn(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"children",n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"hasChildren",r=function(e){return!(Array.isArray(e)&&e.length)};e.forEach(function(e){if(e[n])t(e,null,0);else{var s=e[i];r(s)||function e(s,a,o){t(s,a,o),a.forEach(function(s){if(s[n])t(s,null,o+1);else{var a=s[i];r(a)||e(s,a,o+1)}})}(e,s,0)}})}var _n={data:function(){return{states:{defaultExpandAll:!1,expandRows:[]}}},methods:{updateExpandRows:function(){var e=this.states,t=e.data,i=void 0===t?[]:t,n=e.rowKey,r=e.defaultExpandAll,s=e.expandRows;if(r)this.states.expandRows=i.slice();else if(n){var a=mn(s,n);this.states.expandRows=i.reduce(function(e,t){var i=fn(t,n);return a[i]&&e.push(t),e},[])}else this.states.expandRows=[]},toggleRowExpansion:function(e,t){yn(this.states.expandRows,e,t)&&(this.table.$emit("expand-change",e,this.states.expandRows.slice()),this.scheduleLayout())},setExpandRowKeys:function(e){this.assertRowKey();var t=this.states,i=t.data,n=t.rowKey,r=mn(i,n);this.states.expandRows=e.reduce(function(e,t){var i=r[t];return i&&e.push(i.row),e},[])},isRowExpanded:function(e){var t=this.states,i=t.expandRows,n=void 0===i?[]:i,r=t.rowKey;return r?!!mn(n,r)[fn(e,r)]:-1!==n.indexOf(e)}}},xn={data:function(){return{states:{_currentRowKey:null,currentRow:null}}},methods:{setCurrentRowKey:function(e){this.assertRowKey(),this.states._currentRowKey=e,this.setCurrentRowByKey(e)},restoreCurrentRowKey:function(){this.states._currentRowKey=null},setCurrentRowByKey:function(e){var t=this.states,i=t.data,n=void 0===i?[]:i,r=t.rowKey,s=null;r&&(s=T(n,function(t){return fn(t,r)===e})),t.currentRow=s},updateCurrentRow:function(e){var t=this.states,i=this.table,n=t.currentRow;if(e&&e!==n)return t.currentRow=e,void i.$emit("current-change",e,n);!e&&n&&(t.currentRow=null,i.$emit("current-change",null,n))},updateCurrentRowData:function(){var e=this.states,t=this.table,i=e.rowKey,n=e._currentRowKey,r=e.data||[],s=e.currentRow;if(-1===r.indexOf(s)&&s){if(i){var a=fn(s,i);this.setCurrentRowByKey(a)}else e.currentRow=null;null===e.currentRow&&t.$emit("current-change",null,s)}else n&&(this.setCurrentRowByKey(n),this.restoreCurrentRowKey())}}},Cn=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var i=arguments[t];for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n])}return e},kn={data:function(){return{states:{expandRowKeys:[],treeData:{},indent:16,lazy:!1,lazyTreeNodeMap:{},lazyColumnIdentifier:"hasChildren",childrenColumnName:"children"}}},computed:{normalizedData:function(){if(!this.states.rowKey)return{};var e=this.states.data||[];return this.normalize(e)},normalizedLazyNode:function(){var e=this.states,t=e.rowKey,i=e.lazyTreeNodeMap,n=e.lazyColumnIdentifier,r=Object.keys(i),s={};return r.length?(r.forEach(function(e){if(i[e].length){var r={children:[]};i[e].forEach(function(e){var i=fn(e,t);r.children.push(i),e[n]&&!s[i]&&(s[i]={children:[]})}),s[e]=r}}),s):s}},watch:{normalizedData:"updateTreeData",normalizedLazyNode:"updateTreeData"},methods:{normalize:function(e){var t=this.states,i=t.childrenColumnName,n=t.lazyColumnIdentifier,r=t.rowKey,s=t.lazy,a={};return wn(e,function(e,t,i){var n=fn(e,r);Array.isArray(t)?a[n]={children:t.map(function(e){return fn(e,r)}),level:i}:s&&(a[n]={children:[],lazy:!0,level:i})},i,n),a},updateTreeData:function(){var e=this.normalizedData,t=this.normalizedLazyNode,i=Object.keys(e),n={};if(i.length){var r=this.states,s=r.treeData,a=r.defaultExpandAll,o=r.expandRowKeys,l=r.lazy,u=[],c=function(e,t){var i=a||o&&-1!==o.indexOf(t);return!!(e&&e.expanded||i)};i.forEach(function(t){var i=s[t],r=Cn({},e[t]);if(r.expanded=c(i,t),r.lazy){var a=i||{},o=a.loaded,l=void 0!==o&&o,h=a.loading,d=void 0!==h&&h;r.loaded=!!l,r.loading=!!d,u.push(t)}n[t]=r});var h=Object.keys(t);l&&h.length&&u.length&&h.forEach(function(e){var i=s[e],r=t[e].children;if(-1!==u.indexOf(e)){if(0!==n[e].children.length)throw new Error("[ElTable]children must be an empty array.");n[e].children=r}else{var a=i||{},o=a.loaded,l=void 0!==o&&o,h=a.loading,d=void 0!==h&&h;n[e]={lazy:!0,loaded:!!l,loading:!!d,expanded:c(i,e),children:r,level:""}}})}this.states.treeData=n,this.updateTableScrollY()},updateTreeExpandKeys:function(e){this.states.expandRowKeys=e,this.updateTreeData()},toggleTreeExpansion:function(e,t){this.assertRowKey();var i=this.states,n=i.rowKey,r=i.treeData,s=fn(e,n),a=s&&r[s];if(s&&a&&"expanded"in a){var o=a.expanded;t=void 0===t?!a.expanded:t,r[s].expanded=t,o!==t&&this.table.$emit("expand-change",e,t),this.updateTableScrollY()}},loadOrToggle:function(e){this.assertRowKey();var t=this.states,i=t.lazy,n=t.treeData,r=t.rowKey,s=fn(e,r),a=n[s];i&&a&&"loaded"in a&&!a.loaded?this.loadData(e,s,a):this.toggleTreeExpansion(e)},loadData:function(e,t,i){var n=this,r=this.table.load,s=this.states,a=s.lazyTreeNodeMap,o=s.treeData;r&&!o[t].loaded&&(o[t].loading=!0,r(e,i,function(i){if(!Array.isArray(i))throw new Error("[ElTable] data must be an array");o[t].loading=!1,o[t].loaded=!0,o[t].expanded=!0,i.length&&n.$set(a,t,i),n.table.$emit("expand-change",e,!0)}))}}},Sn=function e(t){var i=[];return t.forEach(function(t){t.children?i.push.apply(i,e(t.children)):i.push(t)}),i},Dn=h.a.extend({data:function(){return{states:{rowKey:null,data:[],isComplex:!1,_columns:[],originColumns:[],columns:[],fixedColumns:[],rightFixedColumns:[],leafColumns:[],fixedLeafColumns:[],rightFixedLeafColumns:[],leafColumnsLength:0,fixedLeafColumnsLength:0,rightFixedLeafColumnsLength:0,isAllSelected:!1,selection:[],reserveSelection:!1,selectOnIndeterminate:!1,selectable:null,filters:{},filteredData:null,sortingColumn:null,sortProp:null,sortOrder:null,hoverRow:null}}},mixins:[_n,xn,kn],methods:{assertRowKey:function(){if(!this.states.rowKey)throw new Error("[ElTable] prop row-key is required")},updateColumns:function(){var e=this.states,t=e._columns||[];e.fixedColumns=t.filter(function(e){return!0===e.fixed||"left"===e.fixed}),e.rightFixedColumns=t.filter(function(e){return"right"===e.fixed}),e.fixedColumns.length>0&&t[0]&&"selection"===t[0].type&&!t[0].fixed&&(t[0].fixed=!0,e.fixedColumns.unshift(t[0]));var i=t.filter(function(e){return!e.fixed});e.originColumns=[].concat(e.fixedColumns).concat(i).concat(e.rightFixedColumns);var n=Sn(i),r=Sn(e.fixedColumns),s=Sn(e.rightFixedColumns);e.leafColumnsLength=n.length,e.fixedLeafColumnsLength=r.length,e.rightFixedLeafColumnsLength=s.length,e.columns=[].concat(r).concat(n).concat(s),e.isComplex=e.fixedColumns.length>0||e.rightFixedColumns.length>0},scheduleLayout:function(e){e&&this.updateColumns(),this.table.debouncedUpdateLayout()},isSelected:function(e){var t=this.states.selection;return(void 0===t?[]:t).indexOf(e)>-1},clearSelection:function(){var e=this.states;e.isAllSelected=!1,e.selection.length&&(e.selection=[],this.table.$emit("selection-change",[]))},cleanSelection:function(){var e=this.states,t=e.data,i=e.rowKey,n=e.selection,r=void 0;if(i){r=[];var s=mn(n,i),a=mn(t,i);for(var o in s)s.hasOwnProperty(o)&&!a[o]&&r.push(s[o].row)}else r=n.filter(function(e){return-1===t.indexOf(e)});if(r.length){var l=n.filter(function(e){return-1===r.indexOf(e)});e.selection=l,this.table.$emit("selection-change",l.slice())}},toggleRowSelection:function(e,t){var i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(yn(this.states.selection,e,t)){var n=(this.states.selection||[]).slice();i&&this.table.$emit("select",n,e),this.table.$emit("selection-change",n)}},_toggleAllSelection:function(){var e=this.states,t=e.data,i=void 0===t?[]:t,n=e.selection,r=e.selectOnIndeterminate?!e.isAllSelected:!(e.isAllSelected||n.length);e.isAllSelected=r;var s=!1;i.forEach(function(t,i){e.selectable?e.selectable.call(null,t,i)&&yn(n,t,r)&&(s=!0):yn(n,t,r)&&(s=!0)}),s&&this.table.$emit("selection-change",n?n.slice():[]),this.table.$emit("select-all",n)},updateSelectionByRowKey:function(){var e=this.states,t=e.selection,i=e.rowKey,n=e.data,r=mn(t,i);n.forEach(function(e){var n=fn(e,i),s=r[n];s&&(t[s.index]=e)})},updateAllSelected:function(){var e=this.states,t=e.selection,i=e.rowKey,n=e.selectable,r=e.data||[];if(0!==r.length){var s=void 0;i&&(s=mn(t,i));for(var a,o=!0,l=0,u=0,c=r.length;u<c;u++){var h=r[u],d=n&&n.call(null,h,u);if(a=h,s?s[fn(a,i)]:-1!==t.indexOf(a))l++;else if(!n||d){o=!1;break}}0===l&&(o=!1),e.isAllSelected=o}else e.isAllSelected=!1},updateFilters:function(e,t){Array.isArray(e)||(e=[e]);var i=this.states,n={};return e.forEach(function(e){i.filters[e.id]=t,n[e.columnKey||e.id]=t}),n},updateSort:function(e,t,i){this.states.sortingColumn&&this.states.sortingColumn!==e&&(this.states.sortingColumn.order=null),this.states.sortingColumn=e,this.states.sortProp=t,this.states.sortOrder=i},execFilter:function(){var e=this,t=this.states,i=t._data,n=t.filters,r=i;Object.keys(n).forEach(function(i){var n=t.filters[i];if(n&&0!==n.length){var s=dn(e.states,i);s&&s.filterMethod&&(r=r.filter(function(e){return n.some(function(t){return s.filterMethod.call(null,t,e,s)})}))}}),t.filteredData=r},execSort:function(){var e=this.states;e.data=function(e,t){var i=t.sortingColumn;return i&&"string"!=typeof i.sortable?hn(e,t.sortProp,t.sortOrder,i.sortMethod,i.sortBy):e}(e.filteredData,e)},execQuery:function(e){e&&e.filter||this.execFilter(),this.execSort()},clearFilter:function(e){var t=this.states,i=this.table.$refs,n=i.tableHeader,r=i.fixedTableHeader,s=i.rightFixedTableHeader,a={};n&&(a=Z(a,n.filterPanels)),r&&(a=Z(a,r.filterPanels)),s&&(a=Z(a,s.filterPanels));var o=Object.keys(a);if(o.length)if("string"==typeof e&&(e=[e]),Array.isArray(e)){var l=e.map(function(e){return function(e,t){for(var i=null,n=0;n<e.columns.length;n++){var r=e.columns[n];if(r.columnKey===t){i=r;break}}return i}(t,e)});o.forEach(function(e){l.find(function(t){return t.id===e})&&(a[e].filteredValue=[])}),this.commit("filterChange",{column:l,values:[],silent:!0,multi:!0})}else o.forEach(function(e){a[e].filteredValue=[]}),t.filters={},this.commit("filterChange",{column:{},values:[],silent:!0})},clearSort:function(){this.states.sortingColumn&&(this.updateSort(null,null,null),this.commit("changeSortCondition",{silent:!0}))},setExpandRowKeysAdapter:function(e){this.setExpandRowKeys(e),this.updateTreeExpandKeys(e)},toggleRowExpansionAdapter:function(e,t){this.states.columns.some(function(e){return"expand"===e.type})?this.toggleRowExpansion(e,t):this.toggleTreeExpansion(e,t)}}});Dn.prototype.mutations={setData:function(e,t){var i=e._data!==t;e._data=t,this.execQuery(),this.updateCurrentRowData(),this.updateExpandRows(),e.reserveSelection?(this.assertRowKey(),this.updateSelectionByRowKey()):i?this.clearSelection():this.cleanSelection(),this.updateAllSelected(),this.updateTableScrollY()},insertColumn:function(e,t,i,n){var r=e._columns;n&&((r=n.children)||(r=n.children=[])),void 0!==i?r.splice(i,0,t):r.push(t),"selection"===t.type&&(e.selectable=t.selectable,e.reserveSelection=t.reserveSelection),this.table.$ready&&(this.updateColumns(),this.scheduleLayout())},removeColumn:function(e,t,i){var n=e._columns;i&&((n=i.children)||(n=i.children=[])),n&&n.splice(n.indexOf(t),1),this.table.$ready&&(this.updateColumns(),this.scheduleLayout())},sort:function(e,t){var i=t.prop,n=t.order,r=t.init;if(i){var s=T(e.columns,function(e){return e.property===i});s&&(s.order=n,this.updateSort(s,i,n),this.commit("changeSortCondition",{init:r}))}},changeSortCondition:function(e,t){var i=e.sortingColumn,n=e.sortProp,r=e.sortOrder;null===r&&(e.sortingColumn=null,e.sortProp=null);this.execQuery({filter:!0}),t&&(t.silent||t.init)||this.table.$emit("sort-change",{column:i,prop:n,order:r}),this.updateTableScrollY()},filterChange:function(e,t){var i=t.column,n=t.values,r=t.silent,s=this.updateFilters(i,n);this.execQuery(),r||this.table.$emit("filter-change",s),this.updateTableScrollY()},toggleAllSelection:function(){this.toggleAllSelection()},rowSelectedChanged:function(e,t){this.toggleRowSelection(t),this.updateAllSelected()},setHoverRow:function(e,t){e.hoverRow=t},setCurrentRow:function(e,t){this.updateCurrentRow(t)}},Dn.prototype.commit=function(e){var t=this.mutations;if(!t[e])throw new Error("Action not found: "+e);for(var i=arguments.length,n=Array(i>1?i-1:0),r=1;r<i;r++)n[r-1]=arguments[r];t[e].apply(this,[this.states].concat(n))},Dn.prototype.updateTableScrollY=function(){h.a.nextTick(this.table.updateScrollY)};var $n=Dn;function En(e){var t={};return Object.keys(e).forEach(function(i){var n=e[i],r=void 0;"string"==typeof n?r=function(){return this.store.states[n]}:"function"==typeof n?r=function(){return n.call(this,this.store.states)}:console.error("invalid value type"),r&&(t[i]=r)}),t}var Tn=function(){function e(t){for(var i in function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.observers=[],this.table=null,this.store=null,this.columns=null,this.fit=!0,this.showHeader=!0,this.height=null,this.scrollX=!1,this.scrollY=!1,this.bodyWidth=null,this.fixedWidth=null,this.rightFixedWidth=null,this.tableHeight=null,this.headerHeight=44,this.appendHeight=0,this.footerHeight=44,this.viewportHeight=null,this.bodyHeight=null,this.fixedBodyHeight=null,this.gutterWidth=$e(),t)t.hasOwnProperty(i)&&(this[i]=t[i]);if(!this.table)throw new Error("table is required for Table Layout");if(!this.store)throw new Error("store is required for Table Layout")}return e.prototype.updateScrollY=function(){if(null===this.height)return!1;var e=this.table.bodyWrapper;if(this.table.$el&&e){var t=e.querySelector(".el-table__body"),i=this.scrollY,n=t.offsetHeight>this.bodyHeight;return this.scrollY=n,i!==n}return!1},e.prototype.setHeight=function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"height";if(!h.a.prototype.$isServer){var n=this.table.$el;if(e=bn(e),this.height=e,!n&&(e||0===e))return h.a.nextTick(function(){return t.setHeight(e,i)});"number"==typeof e?(n.style[i]=e+"px",this.updateElsHeight()):"string"==typeof e&&(n.style[i]=e,this.updateElsHeight())}},e.prototype.setMaxHeight=function(e){this.setHeight(e,"max-height")},e.prototype.getFlattenColumns=function(){var e=[];return this.table.columns.forEach(function(t){t.isColumnGroup?e.push.apply(e,t.columns):e.push(t)}),e},e.prototype.updateElsHeight=function(){var e=this;if(!this.table.$ready)return h.a.nextTick(function(){return e.updateElsHeight()});var t=this.table.$refs,i=t.headerWrapper,n=t.appendWrapper,r=t.footerWrapper;if(this.appendHeight=n?n.offsetHeight:0,!this.showHeader||i){var s=i?i.querySelector(".el-table__header tr"):null,a=this.headerDisplayNone(s),o=this.headerHeight=this.showHeader?i.offsetHeight:0;if(this.showHeader&&!a&&i.offsetWidth>0&&(this.table.columns||[]).length>0&&o<2)return h.a.nextTick(function(){return e.updateElsHeight()});var l=this.tableHeight=this.table.$el.clientHeight,u=this.footerHeight=r?r.offsetHeight:0;null!==this.height&&(this.bodyHeight=l-o-u+(r?1:0)),this.fixedBodyHeight=this.scrollX?this.bodyHeight-this.gutterWidth:this.bodyHeight;var c=!(this.store.states.data&&this.store.states.data.length);this.viewportHeight=this.scrollX?l-(c?0:this.gutterWidth):l,this.updateScrollY(),this.notifyObservers("scrollable")}},e.prototype.headerDisplayNone=function(e){if(!e)return!0;for(var t=e;"DIV"!==t.tagName;){if("none"===getComputedStyle(t).display)return!0;t=t.parentElement}return!1},e.prototype.updateColumnsWidth=function(){if(!h.a.prototype.$isServer){var e=this.fit,t=this.table.$el.clientWidth,i=0,n=this.getFlattenColumns(),r=n.filter(function(e){return"number"!=typeof e.width});if(n.forEach(function(e){"number"==typeof e.width&&e.realWidth&&(e.realWidth=null)}),r.length>0&&e){n.forEach(function(e){i+=e.width||e.minWidth||80});var s=this.scrollY?this.gutterWidth:0;if(i<=t-s){this.scrollX=!1;var a=t-s-i;if(1===r.length)r[0].realWidth=(r[0].minWidth||80)+a;else{var o=a/r.reduce(function(e,t){return e+(t.minWidth||80)},0),l=0;r.forEach(function(e,t){if(0!==t){var i=Math.floor((e.minWidth||80)*o);l+=i,e.realWidth=(e.minWidth||80)+i}}),r[0].realWidth=(r[0].minWidth||80)+a-l}}else this.scrollX=!0,r.forEach(function(e){e.realWidth=e.minWidth});this.bodyWidth=Math.max(i,t),this.table.resizeState.width=this.bodyWidth}else n.forEach(function(e){e.width||e.minWidth?e.realWidth=e.width||e.minWidth:e.realWidth=80,i+=e.realWidth}),this.scrollX=i>t,this.bodyWidth=i;var u=this.store.states.fixedColumns;if(u.length>0){var c=0;u.forEach(function(e){c+=e.realWidth||e.width}),this.fixedWidth=c}var d=this.store.states.rightFixedColumns;if(d.length>0){var p=0;d.forEach(function(e){p+=e.realWidth||e.width}),this.rightFixedWidth=p}this.notifyObservers("columns")}},e.prototype.addObserver=function(e){this.observers.push(e)},e.prototype.removeObserver=function(e){var t=this.observers.indexOf(e);-1!==t&&this.observers.splice(t,1)},e.prototype.notifyObservers=function(e){var t=this;this.observers.forEach(function(i){switch(e){case"columns":i.onColumnsChange(t);break;case"scrollable":i.onScrollableChange(t);break;default:throw new Error("Table Layout don't have event "+e+".")}})},e}(),Mn={created:function(){this.tableLayout.addObserver(this)},destroyed:function(){this.tableLayout.removeObserver(this)},computed:{tableLayout:function(){var e=this.layout;if(!e&&this.table&&(e=this.table.layout),!e)throw new Error("Can not find table layout.");return e}},mounted:function(){this.onColumnsChange(this.tableLayout),this.onScrollableChange(this.tableLayout)},updated:function(){this.__updated__||(this.onColumnsChange(this.tableLayout),this.onScrollableChange(this.tableLayout),this.__updated__=!0)},methods:{onColumnsChange:function(e){var t=this.$el.querySelectorAll("colgroup > col");if(t.length){var i=e.getFlattenColumns(),n={};i.forEach(function(e){n[e.id]=e});for(var r=0,s=t.length;r<s;r++){var a=t[r],o=a.getAttribute("name"),l=n[o];l&&a.setAttribute("width",l.realWidth||l.width)}}},onScrollableChange:function(e){for(var t=this.$el.querySelectorAll("colgroup > col[name=gutter]"),i=0,n=t.length;i<n;i++){t[i].setAttribute("width",e.scrollY?e.gutterWidth:"0")}for(var r=this.$el.querySelectorAll("th.gutter"),s=0,a=r.length;s<a;s++){var o=r[s];o.style.width=e.scrollY?e.gutterWidth+"px":"0",o.style.display=e.scrollY?"":"none"}}}},Nn="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},Pn=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var i=arguments[t];for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n])}return e},On={name:"ElTableBody",mixins:[Mn],components:{ElCheckbox:Vi,ElTooltip:ui},props:{store:{required:!0},stripe:Boolean,context:{},rowClassName:[String,Function],rowStyle:[Object,Function],fixed:String,highlight:Boolean},render:function(e){var t=this,i=this.data||[];return e("table",{class:"el-table__body",attrs:{cellspacing:"0",cellpadding:"0",border:"0"}},[e("colgroup",[this.columns.map(function(t){return e("col",{attrs:{name:t.id},key:t.id})})]),e("tbody",[i.reduce(function(e,i){return e.concat(t.wrappedRowRender(i,e.length))},[]),e("el-tooltip",{attrs:{effect:this.table.tooltipEffect,placement:"top",content:this.tooltipContent},ref:"tooltip"})])])},computed:Pn({table:function(){return this.$parent}},En({data:"data",columns:"columns",treeIndent:"indent",leftFixedLeafCount:"fixedLeafColumnsLength",rightFixedLeafCount:"rightFixedLeafColumnsLength",columnsCount:function(e){return e.columns.length},leftFixedCount:function(e){return e.fixedColumns.length},rightFixedCount:function(e){return e.rightFixedColumns.length},hasExpandColumn:function(e){return e.columns.some(function(e){return"expand"===e.type})}}),{firstDefaultColumnIndex:function(){return E(this.columns,function(e){return"default"===e.type})}}),watch:{"store.states.hoverRow":function(e,t){var i=this;if(this.store.states.isComplex&&!this.$isServer){var n=window.requestAnimationFrame;n||(n=function(e){return setTimeout(e,16)}),n(function(){var n=i.$el.querySelectorAll(".el-table__row"),r=n[t],s=n[e];r&&me(r,"hover-row"),s&&fe(s,"hover-row")})}}},data:function(){return{tooltipContent:""}},created:function(){this.activateTooltip=et()(50,function(e){return e.handleShowPopper()})},methods:{getKeyOfRow:function(e,t){var i=this.table.rowKey;return i?fn(e,i):t},isColumnHidden:function(e){return!0===this.fixed||"left"===this.fixed?e>=this.leftFixedLeafCount:"right"===this.fixed?e<this.columnsCount-this.rightFixedLeafCount:e<this.leftFixedLeafCount||e>=this.columnsCount-this.rightFixedLeafCount},getSpan:function(e,t,i,n){var r=1,s=1,a=this.table.spanMethod;if("function"==typeof a){var o=a({row:e,column:t,rowIndex:i,columnIndex:n});Array.isArray(o)?(r=o[0],s=o[1]):"object"===(void 0===o?"undefined":Nn(o))&&(r=o.rowspan,s=o.colspan)}return{rowspan:r,colspan:s}},getRowStyle:function(e,t){var i=this.table.rowStyle;return"function"==typeof i?i.call(null,{row:e,rowIndex:t}):i||null},getRowClass:function(e,t){var i=["el-table__row"];this.table.highlightCurrentRow&&e===this.store.states.currentRow&&i.push("current-row"),this.stripe&&t%2==1&&i.push("el-table__row--striped");var n=this.table.rowClassName;return"string"==typeof n?i.push(n):"function"==typeof n&&i.push(n.call(null,{row:e,rowIndex:t})),this.store.states.expandRows.indexOf(e)>-1&&i.push("expanded"),i},getCellStyle:function(e,t,i,n){var r=this.table.cellStyle;return"function"==typeof r?r.call(null,{rowIndex:e,columnIndex:t,row:i,column:n}):r},getCellClass:function(e,t,i,n){var r=[n.id,n.align,n.className];this.isColumnHidden(t)&&r.push("is-hidden");var s=this.table.cellClassName;return"string"==typeof s?r.push(s):"function"==typeof s&&r.push(s.call(null,{rowIndex:e,columnIndex:t,row:i,column:n})),r.join(" ")},getColspanRealWidth:function(e,t,i){return t<1?e[i].realWidth:e.map(function(e){return e.realWidth}).slice(i,i+t).reduce(function(e,t){return e+t},-1)},handleCellMouseEnter:function(e,t){var i=this.table,n=un(e);if(n){var r=pn(i,n),s=i.hoverState={cell:n,column:r,row:t};i.$emit("cell-mouse-enter",s.row,s.column,s.cell,e)}var a=e.target.querySelector(".cell");if(pe(a,"el-tooltip")&&a.childNodes.length){var o=document.createRange();if(o.setStart(a,0),o.setEnd(a,a.childNodes.length),(o.getBoundingClientRect().width+((parseInt(ve(a,"paddingLeft"),10)||0)+(parseInt(ve(a,"paddingRight"),10)||0))>a.offsetWidth||a.scrollWidth>a.offsetWidth)&&this.$refs.tooltip){var l=this.$refs.tooltip;this.tooltipContent=n.innerText||n.textContent,l.referenceElm=n,l.$refs.popper&&(l.$refs.popper.style.display="none"),l.doDestroy(),l.setExpectedState(!0),this.activateTooltip(l)}}},handleCellMouseLeave:function(e){var t=this.$refs.tooltip;if(t&&(t.setExpectedState(!1),t.handleClosePopper()),un(e)){var i=this.table.hoverState||{};this.table.$emit("cell-mouse-leave",i.row,i.column,i.cell,e)}},handleMouseEnter:et()(30,function(e){this.store.commit("setHoverRow",e)}),handleMouseLeave:et()(30,function(){this.store.commit("setHoverRow",null)}),handleContextMenu:function(e,t){this.handleEvent(e,t,"contextmenu")},handleDoubleClick:function(e,t){this.handleEvent(e,t,"dblclick")},handleClick:function(e,t){this.store.commit("setCurrentRow",t),this.handleEvent(e,t,"click")},handleEvent:function(e,t,i){var n=this.table,r=un(e),s=void 0;r&&(s=pn(n,r))&&n.$emit("cell-"+i,t,s,r,e),n.$emit("row-"+i,t,s,e)},rowRender:function(e,t,i){var n=this,r=this.$createElement,s=this.treeIndent,a=this.columns,o=this.firstDefaultColumnIndex,l=a.map(function(e,t){return n.isColumnHidden(t)}),u=this.getRowClass(e,t),c=!0;return i&&(u.push("el-table__row--level-"+i.level),c=i.display),r("tr",{style:[c?null:{display:"none"},this.getRowStyle(e,t)],class:u,key:this.getKeyOfRow(e,t),on:{dblclick:function(t){return n.handleDoubleClick(t,e)},click:function(t){return n.handleClick(t,e)},contextmenu:function(t){return n.handleContextMenu(t,e)},mouseenter:function(e){return n.handleMouseEnter(t)},mouseleave:this.handleMouseLeave}},[a.map(function(u,c){var h=n.getSpan(e,u,t,c),d=h.rowspan,p=h.colspan;if(!d||!p)return null;var f=Pn({},u);f.realWidth=n.getColspanRealWidth(a,p,c);var m={store:n.store,_self:n.context||n.table.$vnode.context,column:f,row:e,$index:t};return c===o&&i&&(m.treeNode={indent:i.level*s,level:i.level},"boolean"==typeof i.expanded&&(m.treeNode.expanded=i.expanded,"loading"in i&&(m.treeNode.loading=i.loading),"noLazyChildren"in i&&(m.treeNode.noLazyChildren=i.noLazyChildren))),r("td",{style:n.getCellStyle(t,c,e,u),class:n.getCellClass(t,c,e,u),attrs:{rowspan:d,colspan:p},on:{mouseenter:function(t){return n.handleCellMouseEnter(t,e)},mouseleave:n.handleCellMouseLeave}},[u.renderCell.call(n._renderProxy,n.$createElement,m,l[c])])})])},wrappedRowRender:function(e,t){var i=this,n=this.$createElement,r=this.store,s=r.isRowExpanded,a=r.assertRowKey,o=r.states,l=o.treeData,u=o.lazyTreeNodeMap,c=o.childrenColumnName,h=o.rowKey;if(this.hasExpandColumn&&s(e)){var d=this.table.renderExpanded,p=this.rowRender(e,t);return d?[[p,n("tr",{key:"expanded-row__"+p.key},[n("td",{attrs:{colspan:this.columnsCount},class:"el-table__expanded-cell"},[d(this.$createElement,{row:e,$index:t,store:this.store})])])]]:(console.error("[Element Error]renderExpanded is required."),p)}if(Object.keys(l).length){a();var f=fn(e,h),m=l[f],v=null;m&&(v={expanded:m.expanded,level:m.level,display:!0},"boolean"==typeof m.lazy&&("boolean"==typeof m.loaded&&m.loaded&&(v.noLazyChildren=!(m.children&&m.children.length)),v.loading=m.loading));var g=[this.rowRender(e,t,v)];if(m){var b=0;m.display=!0,function e(n,r){n&&n.length&&r&&n.forEach(function(n){var s={display:r.display&&r.expanded,level:r.level+1},a=fn(n,h);if(null==a)throw new Error("for nested data item, row-key is required.");if((m=Pn({},l[a]))&&(s.expanded=m.expanded,m.level=m.level||s.level,m.display=!(!m.expanded||!s.display),"boolean"==typeof m.lazy&&("boolean"==typeof m.loaded&&m.loaded&&(s.noLazyChildren=!(m.children&&m.children.length)),s.loading=m.loading)),b++,g.push(i.rowRender(n,t+b,s)),m){var o=u[a]||n[c];e(o,m)}})}(u[f]||e[c],m)}return g}return this.rowRender(e,t)}}},In=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"}},[e.multiple?i("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleOutsideClick,expression:"handleOutsideClick"},{name:"show",rawName:"v-show",value:e.showPopper,expression:"showPopper"}],staticClass:"el-table-filter"},[i("div",{staticClass:"el-table-filter__content"},[i("el-scrollbar",{attrs:{"wrap-class":"el-table-filter__wrap"}},[i("el-checkbox-group",{staticClass:"el-table-filter__checkbox-group",model:{value:e.filteredValue,callback:function(t){e.filteredValue=t},expression:"filteredValue"}},e._l(e.filters,function(t){return i("el-checkbox",{key:t.value,attrs:{label:t.value}},[e._v(e._s(t.text))])}),1)],1)],1),i("div",{staticClass:"el-table-filter__bottom"},[i("button",{class:{"is-disabled":0===e.filteredValue.length},attrs:{disabled:0===e.filteredValue.length},on:{click:e.handleConfirm}},[e._v(e._s(e.t("el.table.confirmFilter")))]),i("button",{on:{click:e.handleReset}},[e._v(e._s(e.t("el.table.resetFilter")))])])]):i("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleOutsideClick,expression:"handleOutsideClick"},{name:"show",rawName:"v-show",value:e.showPopper,expression:"showPopper"}],staticClass:"el-table-filter"},[i("ul",{staticClass:"el-table-filter__list"},[i("li",{staticClass:"el-table-filter__list-item",class:{"is-active":void 0===e.filterValue||null===e.filterValue},on:{click:function(t){e.handleSelect(null)}}},[e._v(e._s(e.t("el.table.clearFilter")))]),e._l(e.filters,function(t){return i("li",{key:t.value,staticClass:"el-table-filter__list-item",class:{"is-active":e.isActive(t)},attrs:{label:t.value},on:{click:function(i){e.handleSelect(t.value)}}},[e._v(e._s(t.text))])})],2)])])};In._withStripped=!0;var An=[];!h.a.prototype.$isServer&&document.addEventListener("click",function(e){An.forEach(function(t){var i=e.target;t&&t.$el&&(i===t.$el||t.$el.contains(i)||t.handleOutsideClick&&t.handleOutsideClick(e))})});var Fn=function(e){e&&An.push(e)},Ln=function(e){-1!==An.indexOf(e)&&An.splice(e,1)},Vn=r({name:"ElTableFilterPanel",mixins:[Oe,q],directives:{Clickoutside:at},components:{ElCheckbox:Vi,ElCheckboxGroup:Yi,ElScrollbar:Ze},props:{placement:{type:String,default:"bottom-end"}},methods:{isActive:function(e){return e.value===this.filterValue},handleOutsideClick:function(){var e=this;setTimeout(function(){e.showPopper=!1},16)},handleConfirm:function(){this.confirmFilter(this.filteredValue),this.handleOutsideClick()},handleReset:function(){this.filteredValue=[],this.confirmFilter(this.filteredValue),this.handleOutsideClick()},handleSelect:function(e){this.filterValue=e,null!=e?this.confirmFilter(this.filteredValue):this.confirmFilter([]),this.handleOutsideClick()},confirmFilter:function(e){this.table.store.commit("filterChange",{column:this.column,values:e}),this.table.store.updateAllSelected()}},data:function(){return{table:null,cell:null,column:null}},computed:{filters:function(){return this.column&&this.column.filters},filterValue:{get:function(){return(this.column.filteredValue||[])[0]},set:function(e){this.filteredValue&&(null!=e?this.filteredValue.splice(0,1,e):this.filteredValue.splice(0,1))}},filteredValue:{get:function(){return this.column&&this.column.filteredValue||[]},set:function(e){this.column&&(this.column.filteredValue=e)}},multiple:function(){return!this.column||this.column.filterMultiple}},mounted:function(){var e=this;this.popperElm=this.$el,this.referenceElm=this.cell,this.table.bodyWrapper.addEventListener("scroll",function(){e.updatePopper()}),this.$watch("showPopper",function(t){e.column&&(e.column.filterOpened=t),t?Fn(e):Ln(e)})},watch:{showPopper:function(e){!0===e&&parseInt(this.popperJS._popper.style.zIndex,10)<Se.zIndex&&(this.popperJS._popper.style.zIndex=Se.nextZIndex())}}},In,[],!1,null,null,null);Vn.options.__file="packages/table/src/filter-panel.vue";var Bn=Vn.exports,zn=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var i=arguments[t];for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n])}return e},Hn=function(e){var t=1;e.forEach(function(e){e.level=1,function e(i,n){if(n&&(i.level=n.level+1,t<i.level&&(t=i.level)),i.children){var r=0;i.children.forEach(function(t){e(t,i),r+=t.colSpan}),i.colSpan=r}else i.colSpan=1}(e)});for(var i=[],n=0;n<t;n++)i.push([]);return function e(t){var i=[];return t.forEach(function(t){t.children?(i.push(t),i.push.apply(i,e(t.children))):i.push(t)}),i}(e).forEach(function(e){e.children?e.rowSpan=1:e.rowSpan=t-e.level+1,i[e.level-1].push(e)}),i},Rn={name:"ElTableHeader",mixins:[Mn],render:function(e){var t=this,i=this.store.states.originColumns,n=Hn(i,this.columns),r=n.length>1;return r&&(this.$parent.isGroup=!0),e("table",{class:"el-table__header",attrs:{cellspacing:"0",cellpadding:"0",border:"0"}},[e("colgroup",[this.columns.map(function(t){return e("col",{attrs:{name:t.id},key:t.id})}),this.hasGutter?e("col",{attrs:{name:"gutter"}}):""]),e("thead",{class:[{"is-group":r,"has-gutter":this.hasGutter}]},[this._l(n,function(i,n){return e("tr",{style:t.getHeaderRowStyle(n),class:t.getHeaderRowClass(n)},[i.map(function(r,s){return e("th",{attrs:{colspan:r.colSpan,rowspan:r.rowSpan},on:{mousemove:function(e){return t.handleMouseMove(e,r)},mouseout:t.handleMouseOut,mousedown:function(e){return t.handleMouseDown(e,r)},click:function(e){return t.handleHeaderClick(e,r)},contextmenu:function(e){return t.handleHeaderContextMenu(e,r)}},style:t.getHeaderCellStyle(n,s,i,r),class:t.getHeaderCellClass(n,s,i,r),key:r.id},[e("div",{class:["cell",r.filteredValue&&r.filteredValue.length>0?"highlight":"",r.labelClassName]},[r.renderHeader?r.renderHeader.call(t._renderProxy,e,{column:r,$index:s,store:t.store,_self:t.$parent.$vnode.context}):r.label,r.sortable?e("span",{class:"caret-wrapper",on:{click:function(e){return t.handleSortClick(e,r)}}},[e("i",{class:"sort-caret ascending",on:{click:function(e){return t.handleSortClick(e,r,"ascending")}}}),e("i",{class:"sort-caret descending",on:{click:function(e){return t.handleSortClick(e,r,"descending")}}})]):"",r.filterable?e("span",{class:"el-table__column-filter-trigger",on:{click:function(e){return t.handleFilterClick(e,r)}}},[e("i",{class:["el-icon-arrow-down",r.filterOpened?"el-icon-arrow-up":""]})]):""])])}),t.hasGutter?e("th",{class:"gutter"}):""])})])])},props:{fixed:String,store:{required:!0},border:Boolean,defaultSort:{type:Object,default:function(){return{prop:"",order:""}}}},components:{ElCheckbox:Vi},computed:zn({table:function(){return this.$parent},hasGutter:function(){return!this.fixed&&this.tableLayout.gutterWidth}},En({columns:"columns",isAllSelected:"isAllSelected",leftFixedLeafCount:"fixedLeafColumnsLength",rightFixedLeafCount:"rightFixedLeafColumnsLength",columnsCount:function(e){return e.columns.length},leftFixedCount:function(e){return e.fixedColumns.length},rightFixedCount:function(e){return e.rightFixedColumns.length}})),created:function(){this.filterPanels={}},mounted:function(){var e=this;this.$nextTick(function(){var t=e.defaultSort,i=t.prop,n=t.order;e.store.commit("sort",{prop:i,order:n,init:!0})})},beforeDestroy:function(){var e=this.filterPanels;for(var t in e)e.hasOwnProperty(t)&&e[t]&&e[t].$destroy(!0)},methods:{isCellHidden:function(e,t){for(var i=0,n=0;n<e;n++)i+=t[n].colSpan;var r=i+t[e].colSpan-1;return!0===this.fixed||"left"===this.fixed?r>=this.leftFixedLeafCount:"right"===this.fixed?i<this.columnsCount-this.rightFixedLeafCount:r<this.leftFixedLeafCount||i>=this.columnsCount-this.rightFixedLeafCount},getHeaderRowStyle:function(e){var t=this.table.headerRowStyle;return"function"==typeof t?t.call(null,{rowIndex:e}):t},getHeaderRowClass:function(e){var t=[],i=this.table.headerRowClassName;return"string"==typeof i?t.push(i):"function"==typeof i&&t.push(i.call(null,{rowIndex:e})),t.join(" ")},getHeaderCellStyle:function(e,t,i,n){var r=this.table.headerCellStyle;return"function"==typeof r?r.call(null,{rowIndex:e,columnIndex:t,row:i,column:n}):r},getHeaderCellClass:function(e,t,i,n){var r=[n.id,n.order,n.headerAlign,n.className,n.labelClassName];0===e&&this.isCellHidden(t,i)&&r.push("is-hidden"),n.children||r.push("is-leaf"),n.sortable&&r.push("is-sortable");var s=this.table.headerCellClassName;return"string"==typeof s?r.push(s):"function"==typeof s&&r.push(s.call(null,{rowIndex:e,columnIndex:t,row:i,column:n})),r.join(" ")},toggleAllSelection:function(e){e.stopPropagation(),this.store.commit("toggleAllSelection")},handleFilterClick:function(e,t){e.stopPropagation();var i=e.target,n="TH"===i.tagName?i:i.parentNode;if(!pe(n,"noclick")){n=n.querySelector(".el-table__column-filter-trigger")||n;var r=this.$parent,s=this.filterPanels[t.id];s&&t.filterOpened?s.showPopper=!1:(s||(s=new h.a(Bn),this.filterPanels[t.id]=s,t.filterPlacement&&(s.placement=t.filterPlacement),s.table=r,s.cell=n,s.column=t,!this.$isServer&&s.$mount(document.createElement("div"))),setTimeout(function(){s.showPopper=!0},16))}},handleHeaderClick:function(e,t){!t.filters&&t.sortable?this.handleSortClick(e,t):t.filterable&&!t.sortable&&this.handleFilterClick(e,t),this.$parent.$emit("header-click",t,e)},handleHeaderContextMenu:function(e,t){this.$parent.$emit("header-contextmenu",t,e)},handleMouseDown:function(e,t){var i=this;if(!this.$isServer&&!(t.children&&t.children.length>0)&&this.draggingColumn&&this.border){this.dragging=!0,this.$parent.resizeProxyVisible=!0;var n=this.$parent,r=n.$el.getBoundingClientRect().left,s=this.$el.querySelector("th."+t.id),a=s.getBoundingClientRect(),o=a.left-r+30;fe(s,"noclick"),this.dragState={startMouseLeft:e.clientX,startLeft:a.right-r,startColumnLeft:a.left-r,tableLeft:r};var l=n.$refs.resizeProxy;l.style.left=this.dragState.startLeft+"px",document.onselectstart=function(){return!1},document.ondragstart=function(){return!1};var u=function(e){var t=e.clientX-i.dragState.startMouseLeft,n=i.dragState.startLeft+t;l.style.left=Math.max(o,n)+"px"};document.addEventListener("mousemove",u),document.addEventListener("mouseup",function r(){if(i.dragging){var a=i.dragState,o=a.startColumnLeft,c=a.startLeft,h=parseInt(l.style.left,10)-o;t.width=t.realWidth=h,n.$emit("header-dragend",t.width,c-o,t,e),i.store.scheduleLayout(),document.body.style.cursor="",i.dragging=!1,i.draggingColumn=null,i.dragState={},n.resizeProxyVisible=!1}document.removeEventListener("mousemove",u),document.removeEventListener("mouseup",r),document.onselectstart=null,document.ondragstart=null,setTimeout(function(){me(s,"noclick")},0)})}},handleMouseMove:function(e,t){if(!(t.children&&t.children.length>0)){for(var i=e.target;i&&"TH"!==i.tagName;)i=i.parentNode;if(t&&t.resizable&&!this.dragging&&this.border){var n=i.getBoundingClientRect(),r=document.body.style;n.width>12&&n.right-e.pageX<8?(r.cursor="col-resize",pe(i,"is-sortable")&&(i.style.cursor="col-resize"),this.draggingColumn=t):this.dragging||(r.cursor="",pe(i,"is-sortable")&&(i.style.cursor="pointer"),this.draggingColumn=null)}}},handleMouseOut:function(){this.$isServer||(document.body.style.cursor="")},toggleOrder:function(e){var t=e.order,i=e.sortOrders;if(""===t)return i[0];var n=i.indexOf(t||null);return i[n>i.length-2?0:n+1]},handleSortClick:function(e,t,i){e.stopPropagation();for(var n=t.order===i?null:i||this.toggleOrder(t),r=e.target;r&&"TH"!==r.tagName;)r=r.parentNode;if(r&&"TH"===r.tagName&&pe(r,"noclick"))me(r,"noclick");else if(t.sortable){var s=this.store.states,a=s.sortProp,o=void 0,l=s.sortingColumn;(l!==t||l===t&&null===l.order)&&(l&&(l.order=null),s.sortingColumn=t,a=t.property),o=t.order=n||null,s.sortProp=a,s.sortOrder=o,this.store.commit("changeSortCondition")}}},data:function(){return{draggingColumn:null,dragging:!1,dragState:{}}}},Wn=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var i=arguments[t];for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n])}return e},jn={name:"ElTableFooter",mixins:[Mn],render:function(e){var t=this,i=[];return this.summaryMethod?i=this.summaryMethod({columns:this.columns,data:this.store.states.data}):this.columns.forEach(function(e,n){if(0!==n){var r=t.store.states.data.map(function(t){return Number(t[e.property])}),s=[],a=!0;r.forEach(function(e){if(!isNaN(e)){a=!1;var t=(""+e).split(".")[1];s.push(t?t.length:0)}});var o=Math.max.apply(null,s);i[n]=a?"":r.reduce(function(e,t){var i=Number(t);return isNaN(i)?e:parseFloat((e+t).toFixed(Math.min(o,20)))},0)}else i[n]=t.sumText}),e("table",{class:"el-table__footer",attrs:{cellspacing:"0",cellpadding:"0",border:"0"}},[e("colgroup",[this.columns.map(function(t){return e("col",{attrs:{name:t.id},key:t.id})}),this.hasGutter?e("col",{attrs:{name:"gutter"}}):""]),e("tbody",{class:[{"has-gutter":this.hasGutter}]},[e("tr",[this.columns.map(function(n,r){return e("td",{key:r,attrs:{colspan:n.colSpan,rowspan:n.rowSpan},class:t.getRowClasses(n,r)},[e("div",{class:["cell",n.labelClassName]},[i[r]])])}),this.hasGutter?e("th",{class:"gutter"}):""])])])},props:{fixed:String,store:{required:!0},summaryMethod:Function,sumText:String,border:Boolean,defaultSort:{type:Object,default:function(){return{prop:"",order:""}}}},computed:Wn({table:function(){return this.$parent},hasGutter:function(){return!this.fixed&&this.tableLayout.gutterWidth}},En({columns:"columns",isAllSelected:"isAllSelected",leftFixedLeafCount:"fixedLeafColumnsLength",rightFixedLeafCount:"rightFixedLeafColumnsLength",columnsCount:function(e){return e.columns.length},leftFixedCount:function(e){return e.fixedColumns.length},rightFixedCount:function(e){return e.rightFixedColumns.length}})),methods:{isCellHidden:function(e,t,i){if(!0===this.fixed||"left"===this.fixed)return e>=this.leftFixedLeafCount;if("right"===this.fixed){for(var n=0,r=0;r<e;r++)n+=t[r].colSpan;return n<this.columnsCount-this.rightFixedLeafCount}return!(this.fixed||!i.fixed)||(e<this.leftFixedCount||e>=this.columnsCount-this.rightFixedCount)},getRowClasses:function(e,t){var i=[e.id,e.align,e.labelClassName];return e.className&&i.push(e.className),this.isCellHidden(t,this.columns,e)&&i.push("is-hidden"),e.children||i.push("is-leaf"),i}}},qn=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var i=arguments[t];for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n])}return e},Yn=1,Kn=r({name:"ElTable",mixins:[q,K],directives:{Mousewheel:on},props:{data:{type:Array,default:function(){return[]}},size:String,width:[String,Number],height:[String,Number],maxHeight:[String,Number],fit:{type:Boolean,default:!0},stripe:Boolean,border:Boolean,rowKey:[String,Function],context:{},showHeader:{type:Boolean,default:!0},showSummary:Boolean,sumText:String,summaryMethod:Function,rowClassName:[String,Function],rowStyle:[Object,Function],cellClassName:[String,Function],cellStyle:[Object,Function],headerRowClassName:[String,Function],headerRowStyle:[Object,Function],headerCellClassName:[String,Function],headerCellStyle:[Object,Function],highlightCurrentRow:Boolean,currentRowKey:[String,Number],emptyText:String,expandRowKeys:Array,defaultExpandAll:Boolean,defaultSort:Object,tooltipEffect:String,spanMethod:Function,selectOnIndeterminate:{type:Boolean,default:!0},indent:{type:Number,default:16},treeProps:{type:Object,default:function(){return{hasChildren:"hasChildren",children:"children"}}},lazy:Boolean,load:Function},components:{TableHeader:Rn,TableFooter:jn,TableBody:On,ElCheckbox:Vi},methods:{getMigratingConfig:function(){return{events:{expand:"expand is renamed to expand-change"}}},setCurrentRow:function(e){this.store.commit("setCurrentRow",e)},toggleRowSelection:function(e,t){this.store.toggleRowSelection(e,t,!1),this.store.updateAllSelected()},toggleRowExpansion:function(e,t){this.store.toggleRowExpansionAdapter(e,t)},clearSelection:function(){this.store.clearSelection()},clearFilter:function(e){this.store.clearFilter(e)},clearSort:function(){this.store.clearSort()},handleMouseLeave:function(){this.store.commit("setHoverRow",null),this.hoverState&&(this.hoverState=null)},updateScrollY:function(){this.layout.updateScrollY()&&(this.layout.notifyObservers("scrollable"),this.layout.updateColumnsWidth())},handleFixedMousewheel:function(e,t){var i=this.bodyWrapper;if(Math.abs(t.spinY)>0){var n=i.scrollTop;t.pixelY<0&&0!==n&&e.preventDefault(),t.pixelY>0&&i.scrollHeight-i.clientHeight>n&&e.preventDefault(),i.scrollTop+=Math.ceil(t.pixelY/5)}else i.scrollLeft+=Math.ceil(t.pixelX/5)},handleHeaderFooterMousewheel:function(e,t){var i=t.pixelX,n=t.pixelY;Math.abs(i)>=Math.abs(n)&&(this.bodyWrapper.scrollLeft+=t.pixelX/5)},syncPostion:Object(nn.throttle)(20,function(){var e=this.bodyWrapper,t=e.scrollLeft,i=e.scrollTop,n=e.offsetWidth,r=e.scrollWidth,s=this.$refs,a=s.headerWrapper,o=s.footerWrapper,l=s.fixedBodyWrapper,u=s.rightFixedBodyWrapper;a&&(a.scrollLeft=t),o&&(o.scrollLeft=t),l&&(l.scrollTop=i),u&&(u.scrollTop=i);var c=r-n-1;this.scrollPosition=t>=c?"right":0===t?"left":"middle"}),bindEvents:function(){this.bodyWrapper.addEventListener("scroll",this.syncPostion,{passive:!0}),this.fit&&Ye(this.$el,this.resizeListener)},unbindEvents:function(){this.bodyWrapper.removeEventListener("scroll",this.syncPostion,{passive:!0}),this.fit&&Ke(this.$el,this.resizeListener)},resizeListener:function(){if(this.$ready){var e=!1,t=this.$el,i=this.resizeState,n=i.width,r=i.height,s=t.offsetWidth;n!==s&&(e=!0);var a=t.offsetHeight;(this.height||this.shouldUpdateHeight)&&r!==a&&(e=!0),e&&(this.resizeState.width=s,this.resizeState.height=a,this.doLayout())}},doLayout:function(){this.shouldUpdateHeight&&this.layout.updateElsHeight(),this.layout.updateColumnsWidth()},sort:function(e,t){this.store.commit("sort",{prop:e,order:t})},toggleAllSelection:function(){this.store.commit("toggleAllSelection")}},computed:qn({tableSize:function(){return this.size||(this.$ELEMENT||{}).size},bodyWrapper:function(){return this.$refs.bodyWrapper},shouldUpdateHeight:function(){return this.height||this.maxHeight||this.fixedColumns.length>0||this.rightFixedColumns.length>0},bodyWidth:function(){var e=this.layout,t=e.bodyWidth,i=e.scrollY,n=e.gutterWidth;return t?t-(i?n:0)+"px":""},bodyHeight:function(){var e=this.layout,t=e.headerHeight,i=void 0===t?0:t,n=e.bodyHeight,r=e.footerHeight,s=void 0===r?0:r;if(this.height)return{height:n?n+"px":""};if(this.maxHeight){var a=bn(this.maxHeight);if("number"==typeof a)return{"max-height":a-s-(this.showHeader?i:0)+"px"}}return{}},fixedBodyHeight:function(){if(this.height)return{height:this.layout.fixedBodyHeight?this.layout.fixedBodyHeight+"px":""};if(this.maxHeight){var e=bn(this.maxHeight);if("number"==typeof e)return e=this.layout.scrollX?e-this.layout.gutterWidth:e,this.showHeader&&(e-=this.layout.headerHeight),{"max-height":(e-=this.layout.footerHeight)+"px"}}return{}},fixedHeight:function(){return this.maxHeight?this.showSummary?{bottom:0}:{bottom:this.layout.scrollX&&this.data.length?this.layout.gutterWidth+"px":""}:this.showSummary?{height:this.layout.tableHeight?this.layout.tableHeight+"px":""}:{height:this.layout.viewportHeight?this.layout.viewportHeight+"px":""}},emptyBlockStyle:function(){if(this.data&&this.data.length)return null;var e="100%";return this.layout.appendHeight&&(e="calc(100% - "+this.layout.appendHeight+"px)"),{width:this.bodyWidth,height:e}}},En({selection:"selection",columns:"columns",tableData:"data",fixedColumns:"fixedColumns",rightFixedColumns:"rightFixedColumns"})),watch:{height:{immediate:!0,handler:function(e){this.layout.setHeight(e)}},maxHeight:{immediate:!0,handler:function(e){this.layout.setMaxHeight(e)}},currentRowKey:{immediate:!0,handler:function(e){this.rowKey&&this.store.setCurrentRowKey(e)}},data:{immediate:!0,handler:function(e){this.store.commit("setData",e)}},expandRowKeys:{immediate:!0,handler:function(e){e&&this.store.setExpandRowKeysAdapter(e)}}},created:function(){var e=this;this.tableId="el-table_"+Yn++,this.debouncedUpdateLayout=Object(nn.debounce)(50,function(){return e.doLayout()})},mounted:function(){var e=this;this.bindEvents(),this.store.updateColumns(),this.doLayout(),this.resizeState={width:this.$el.offsetWidth,height:this.$el.offsetHeight},this.store.states.columns.forEach(function(t){t.filteredValue&&t.filteredValue.length&&e.store.commit("filterChange",{column:t,values:t.filteredValue,silent:!0})}),this.$ready=!0},destroyed:function(){this.unbindEvents()},data:function(){var e=this.treeProps,t=e.hasChildren,i=void 0===t?"hasChildren":t,n=e.children,r=void 0===n?"children":n;return this.store=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!e)throw new Error("Table is required.");var i=new $n;return i.table=e,i.toggleAllSelection=et()(10,i._toggleAllSelection),Object.keys(t).forEach(function(e){i.states[e]=t[e]}),i}(this,{rowKey:this.rowKey,defaultExpandAll:this.defaultExpandAll,selectOnIndeterminate:this.selectOnIndeterminate,indent:this.indent,lazy:this.lazy,lazyColumnIdentifier:i,childrenColumnName:r}),{layout:new Tn({store:this.store,table:this,fit:this.fit,showHeader:this.showHeader}),isHidden:!1,renderExpanded:null,resizeProxyVisible:!1,resizeState:{width:null,height:null},isGroup:!1,scrollPosition:"left"}}},tn,[],!1,null,null,null);Kn.options.__file="packages/table/src/table.vue";var Gn=Kn.exports;Gn.install=function(e){e.component(Gn.name,Gn)};var Un=Gn,Xn={default:{order:""},selection:{width:48,minWidth:48,realWidth:48,order:"",className:"el-table-column--selection"},expand:{width:48,minWidth:48,realWidth:48,order:""},index:{width:48,minWidth:48,realWidth:48,order:""}},Jn={selection:{renderHeader:function(e,t){var i=t.store;return e("el-checkbox",{attrs:{disabled:i.states.data&&0===i.states.data.length,indeterminate:i.states.selection.length>0&&!this.isAllSelected,value:this.isAllSelected},nativeOn:{click:this.toggleAllSelection}})},renderCell:function(e,t){var i=t.row,n=t.column,r=t.store,s=t.$index;return e("el-checkbox",{nativeOn:{click:function(e){return e.stopPropagation()}},attrs:{value:r.isSelected(i),disabled:!!n.selectable&&!n.selectable.call(null,i,s)},on:{input:function(){r.commit("rowSelectedChanged",i)}}})},sortable:!1,resizable:!1},index:{renderHeader:function(e,t){return t.column.label||"#"},renderCell:function(e,t){var i=t.$index,n=i+1,r=t.column.index;return"number"==typeof r?n=i+r:"function"==typeof r&&(n=r(i)),e("div",[n])},sortable:!1},expand:{renderHeader:function(e,t){return t.column.label||""},renderCell:function(e,t){var i=t.row,n=t.store,r=["el-table__expand-icon"];n.states.expandRows.indexOf(i)>-1&&r.push("el-table__expand-icon--expanded");return e("div",{class:r,on:{click:function(e){e.stopPropagation(),n.toggleRowExpansion(i)}}},[e("i",{class:"el-icon el-icon-arrow-right"})])},sortable:!1,resizable:!1,className:"el-table__expand-column"}};function Zn(e,t){var i=t.row,n=t.column,r=t.$index,s=n.property,a=s&&S(i,s).v;return n&&n.formatter?n.formatter(i,n,a,r):a}var Qn=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var i=arguments[t];for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n])}return e},er=1,tr={name:"ElTableColumn",props:{type:{type:String,default:"default"},label:String,className:String,labelClassName:String,property:String,prop:String,width:{},minWidth:{},renderHeader:Function,sortable:{type:[Boolean,String],default:!1},sortMethod:Function,sortBy:[String,Function,Array],resizable:{type:Boolean,default:!0},columnKey:String,align:String,headerAlign:String,showTooltipWhenOverflow:Boolean,showOverflowTooltip:Boolean,fixed:[Boolean,String],formatter:Function,selectable:Function,reserveSelection:Boolean,filterMethod:Function,filteredValue:Array,filters:Array,filterPlacement:String,filterMultiple:{type:Boolean,default:!0},index:[Number,Function],sortOrders:{type:Array,default:function(){return["ascending","descending",null]},validator:function(e){return e.every(function(e){return["ascending","descending",null].indexOf(e)>-1})}}},data:function(){return{isSubColumn:!1,columns:[]}},computed:{owner:function(){for(var e=this.$parent;e&&!e.tableId;)e=e.$parent;return e},columnOrTableParent:function(){for(var e=this.$parent;e&&!e.tableId&&!e.columnId;)e=e.$parent;return e},realWidth:function(){return gn(this.width)},realMinWidth:function(){return void 0!==(e=this.minWidth)&&(e=gn(e),isNaN(e)&&(e=80)),e;var e},realAlign:function(){return this.align?"is-"+this.align:null},realHeaderAlign:function(){return this.headerAlign?"is-"+this.headerAlign:this.realAlign}},methods:{getPropsData:function(){for(var e=this,t=arguments.length,i=Array(t),n=0;n<t;n++)i[n]=arguments[n];return i.reduce(function(t,i){return Array.isArray(i)&&i.forEach(function(i){t[i]=e[i]}),t},{})},getColumnElIndex:function(e,t){return[].indexOf.call(e,t)},setColumnWidth:function(e){return this.realWidth&&(e.width=this.realWidth),this.realMinWidth&&(e.minWidth=this.realMinWidth),e.minWidth||(e.minWidth=80),e.realWidth=void 0===e.width?e.minWidth:e.width,e},setColumnForcedProps:function(e){var t=e.type,i=Jn[t]||{};return Object.keys(i).forEach(function(t){var n=i[t];void 0!==n&&(e[t]="className"===t?e[t]+" "+n:n)}),e},setColumnRenders:function(e){var t=this;this.$createElement;this.renderHeader?console.warn("[Element Warn][TableColumn]Comparing to render-header, scoped-slot header is easier to use. We recommend users to use scoped-slot header."):"selection"!==e.type&&(e.renderHeader=function(i,n){var r=t.$scopedSlots.header;return r?r(n):e.label});var i=e.renderCell;return"expand"===e.type?(e.renderCell=function(e,t){return e("div",{class:"cell"},[i(e,t)])},this.owner.renderExpanded=function(e,i){return t.$scopedSlots.default?t.$scopedSlots.default(i):t.$slots.default}):(i=i||Zn,e.renderCell=function(n,r){var s=null;s=t.$scopedSlots.default?t.$scopedSlots.default(r):i(n,r);var a=function(e,t){var i=t.row,n=t.treeNode,r=t.store;if(!n)return null;var s=[];if(n.indent&&s.push(e("span",{class:"el-table__indent",style:{"padding-left":n.indent+"px"}})),"boolean"!=typeof n.expanded||n.noLazyChildren)s.push(e("span",{class:"el-table__placeholder"}));else{var a=["el-table__expand-icon",n.expanded?"el-table__expand-icon--expanded":""],o=["el-icon-arrow-right"];n.loading&&(o=["el-icon-loading"]),s.push(e("div",{class:a,on:{click:function(e){e.stopPropagation(),r.loadOrToggle(i)}}},[e("i",{class:o})]))}return s}(n,r),o={class:"cell",style:{}};return e.showOverflowTooltip&&(o.class+=" el-tooltip",o.style={width:(r.column.realWidth||r.column.width)-1+"px"}),n("div",o,[a,s])}),e},registerNormalWatchers:function(){var e=this,t={prop:"property",realAlign:"align",realHeaderAlign:"headerAlign",realWidth:"width"},i=["label","property","filters","filterMultiple","sortable","index","formatter","className","labelClassName","showOverflowTooltip"].reduce(function(e,t){return e[t]=t,e},t);Object.keys(i).forEach(function(i){var n=t[i];e.$watch(i,function(t){e.columnConfig[n]=t})})},registerComplexWatchers:function(){var e=this,t={realWidth:"width",realMinWidth:"minWidth"},i=["fixed"].reduce(function(e,t){return e[t]=t,e},t);Object.keys(i).forEach(function(i){var n=t[i];e.$watch(i,function(t){e.columnConfig[n]=t;var i="fixed"===n;e.owner.store.scheduleLayout(i)})})}},components:{ElCheckbox:Vi},beforeCreate:function(){this.row={},this.column={},this.$index=0,this.columnId=""},created:function(){var e=this.columnOrTableParent;this.isSubColumn=this.owner!==e,this.columnId=(e.tableId||e.columnId)+"_column_"+er++;var t=this.type||"default",i=""===this.sortable||this.sortable,n=Qn({},Xn[t],{id:this.columnId,type:t,property:this.prop||this.property,align:this.realAlign,headerAlign:this.realHeaderAlign,showOverflowTooltip:this.showOverflowTooltip||this.showTooltipWhenOverflow,filterable:this.filters||this.filterMethod,filteredValue:[],filterPlacement:"",isColumnGroup:!1,filterOpened:!1,sortable:i,index:this.index}),r=this.getPropsData(["columnKey","label","className","labelClassName","type","renderHeader","formatter","fixed","resizable"],["sortMethod","sortBy","sortOrders"],["selectable","reserveSelection"],["filterMethod","filters","filterMultiple","filterOpened","filteredValue","filterPlacement"]);r=function(e,t){var i={},n=void 0;for(n in e)i[n]=e[n];for(n in t)if(vn(t,n)){var r=t[n];void 0!==r&&(i[n]=r)}return i}(n,r),r=function(){for(var e=arguments.length,t=Array(e),i=0;i<e;i++)t[i]=arguments[i];return 0===t.length?function(e){return e}:1===t.length?t[0]:t.reduce(function(e,t){return function(){return e(t.apply(void 0,arguments))}})}(this.setColumnRenders,this.setColumnWidth,this.setColumnForcedProps)(r),this.columnConfig=r,this.registerNormalWatchers(),this.registerComplexWatchers()},mounted:function(){var e=this.owner,t=this.columnOrTableParent,i=this.isSubColumn?t.$el.children:t.$refs.hiddenColumns.children,n=this.getColumnElIndex(i,this.$el);e.store.commit("insertColumn",this.columnConfig,n,this.isSubColumn?t.columnConfig:null)},destroyed:function(){if(this.$parent){var e=this.$parent;this.owner.store.commit("removeColumn",this.columnConfig,this.isSubColumn?e.columnConfig:null)}},render:function(e){return e("div",this.$slots.default)},install:function(e){e.component(tr.name,tr)}},ir=tr,nr=function(){var e=this,t=e.$createElement,i=e._self._c||t;return e.ranged?i("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleClose,expression:"handleClose"}],ref:"reference",staticClass:"el-date-editor el-range-editor el-input__inner",class:["el-date-editor--"+e.type,e.pickerSize?"el-range-editor--"+e.pickerSize:"",e.pickerDisabled?"is-disabled":"",e.pickerVisible?"is-active":""],on:{click:e.handleRangeClick,mouseenter:e.handleMouseEnter,mouseleave:function(t){e.showClose=!1},keydown:e.handleKeydown}},[i("i",{class:["el-input__icon","el-range__icon",e.triggerClass]}),i("input",e._b({staticClass:"el-range-input",attrs:{autocomplete:"off",placeholder:e.startPlaceholder,disabled:e.pickerDisabled,readonly:!e.editable||e.readonly,name:e.name&&e.name[0]},domProps:{value:e.displayValue&&e.displayValue[0]},on:{input:e.handleStartInput,change:e.handleStartChange,focus:e.handleFocus}},"input",e.firstInputId,!1)),e._t("range-separator",[i("span",{staticClass:"el-range-separator"},[e._v(e._s(e.rangeSeparator))])]),i("input",e._b({staticClass:"el-range-input",attrs:{autocomplete:"off",placeholder:e.endPlaceholder,disabled:e.pickerDisabled,readonly:!e.editable||e.readonly,name:e.name&&e.name[1]},domProps:{value:e.displayValue&&e.displayValue[1]},on:{input:e.handleEndInput,change:e.handleEndChange,focus:e.handleFocus}},"input",e.secondInputId,!1)),e.haveTrigger?i("i",{staticClass:"el-input__icon el-range__close-icon",class:[e.showClose?""+e.clearIcon:""],on:{click:e.handleClickIcon}}):e._e()],2):i("el-input",e._b({directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleClose,expression:"handleClose"}],ref:"reference",staticClass:"el-date-editor",class:"el-date-editor--"+e.type,attrs:{readonly:!e.editable||e.readonly||"dates"===e.type||"week"===e.type,disabled:e.pickerDisabled,size:e.pickerSize,name:e.name,placeholder:e.placeholder,value:e.displayValue,validateEvent:!1},on:{focus:e.handleFocus,input:function(t){return e.userInput=t},change:e.handleChange},nativeOn:{keydown:function(t){return e.handleKeydown(t)},mouseenter:function(t){return e.handleMouseEnter(t)},mouseleave:function(t){e.showClose=!1}}},"el-input",e.firstInputId,!1),[i("i",{staticClass:"el-input__icon",class:e.triggerClass,attrs:{slot:"prefix"},on:{click:e.handleFocus},slot:"prefix"}),e.haveTrigger?i("i",{staticClass:"el-input__icon",class:[e.showClose?""+e.clearIcon:""],attrs:{slot:"suffix"},on:{click:e.handleClickIcon},slot:"suffix"}):e._e()])};nr._withStripped=!0;var rr=i(2),sr=i.n(rr),ar=["sun","mon","tue","wed","thu","fri","sat"],or=["jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec"],lr=function(){return{dayNamesShort:ar.map(function(e){return W("el.datepicker.weeks."+e)}),dayNames:ar.map(function(e){return W("el.datepicker.weeks."+e)}),monthNamesShort:or.map(function(e){return W("el.datepicker.months."+e)}),monthNames:or.map(function(e,t){return W("el.datepicker.month"+(t+1))}),amPm:["am","pm"]}},ur=function(e){return null!=e&&(!isNaN(new Date(e).getTime())&&!Array.isArray(e))},cr=function(e){return e instanceof Date},hr=function(e,t){return(e=function(e){return ur(e)?new Date(e):null}(e))?sr.a.format(e,t||"yyyy-MM-dd",lr()):""},dr=function(e,t){return sr.a.parse(e,t||"yyyy-MM-dd",lr())},pr=function(e,t){return 3===t||5===t||8===t||10===t?30:1===t?e%4==0&&e%100!=0||e%400==0?29:28:31},fr=function(e){var t=new Date(e.getTime());return t.setDate(1),t.getDay()},mr=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return new Date(e.getFullYear(),e.getMonth(),e.getDate()-t)},vr=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return new Date(e.getFullYear(),e.getMonth(),e.getDate()+t)},gr=function(e){if(!ur(e))return null;var t=new Date(e.getTime());t.setHours(0,0,0,0),t.setDate(t.getDate()+3-(t.getDay()+6)%7);var i=new Date(t.getFullYear(),0,4);return 1+Math.round(((t.getTime()-i.getTime())/864e5-3+(i.getDay()+6)%7)/7)};function br(e,t,i,n){for(var r=t;r<i;r++)e[r]=n}var yr=function(e){return Array.apply(null,{length:e}).map(function(e,t){return t})},wr=function(e,t,i,n){return new Date(t,i,n,e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds())},_r=function(e,t,i,n){return new Date(e.getFullYear(),e.getMonth(),e.getDate(),t,i,n,e.getMilliseconds())},xr=function(e,t){return null!=e&&t?(t=dr(t,"HH:mm:ss"),_r(e,t.getHours(),t.getMinutes(),t.getSeconds())):e},Cr=function(e){return new Date(e.getFullYear(),e.getMonth(),e.getDate())},kr=function(e){return new Date(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),0)},Sr=function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"HH:mm:ss";if(0===t.length)return e;var n=function(e){return sr.a.parse(sr.a.format(e,i),i)},r=n(e),s=t.map(function(e){return e.map(n)});if(s.some(function(e){return r>=e[0]&&r<=e[1]}))return e;var a=s[0][0],o=s[0][0];return s.forEach(function(e){a=new Date(Math.min(e[0],a)),o=new Date(Math.max(e[1],a))}),wr(r<a?a:o,e.getFullYear(),e.getMonth(),e.getDate())},Dr=function(e,t,i){return Sr(e,t,i).getTime()===e.getTime()},$r=function(e,t,i){var n=Math.min(e.getDate(),pr(t,i));return wr(e,t,i,n)},Er=function(e){var t=e.getFullYear(),i=e.getMonth();return 0===i?$r(e,t-1,11):$r(e,t,i-1)},Tr=function(e){var t=e.getFullYear(),i=e.getMonth();return 11===i?$r(e,t+1,0):$r(e,t,i+1)},Mr=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,i=e.getFullYear(),n=e.getMonth();return $r(e,i-t,n)},Nr=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,i=e.getFullYear(),n=e.getMonth();return $r(e,i+t,n)},Pr=function(e){return e.replace(/\W?m{1,2}|\W?ZZ/g,"").replace(/\W?h{1,2}|\W?s{1,3}|\W?a/gi,"").trim()},Or=function(e){return e.replace(/\W?D{1,2}|\W?Do|\W?d{1,4}|\W?M{1,4}|\W?y{2,4}/g,"").trim()},Ir=function(e,t){return e.getMonth()===t.getMonth()&&e.getFullYear()===t.getFullYear()},Ar={props:{appendToBody:Oe.props.appendToBody,offset:Oe.props.offset,boundariesPadding:Oe.props.boundariesPadding,arrowOffset:Oe.props.arrowOffset},methods:Oe.methods,data:function(){return Z({visibleArrow:!0},Oe.data)},beforeDestroy:Oe.beforeDestroy},Fr={date:"yyyy-MM-dd",month:"yyyy-MM",datetime:"yyyy-MM-dd HH:mm:ss",time:"HH:mm:ss",week:"yyyywWW",timerange:"HH:mm:ss",daterange:"yyyy-MM-dd",monthrange:"yyyy-MM",datetimerange:"yyyy-MM-dd HH:mm:ss",year:"yyyy"},Lr=["date","datetime","time","time-select","week","month","year","daterange","monthrange","timerange","datetimerange","dates"],Vr=function(e,t){return"timestamp"===t?e.getTime():hr(e,t)},Br=function(e,t){return"timestamp"===t?new Date(Number(e)):dr(e,t)},zr=function(e,t){if(Array.isArray(e)&&2===e.length){var i=e[0],n=e[1];if(i&&n)return[Vr(i,t),Vr(n,t)]}return""},Hr=function(e,t,i){if(Array.isArray(e)||(e=e.split(i)),2===e.length){var n=e[0],r=e[1];return[Br(n,t),Br(r,t)]}return[]},Rr={default:{formatter:function(e){return e?""+e:""},parser:function(e){return void 0===e||""===e?null:e}},week:{formatter:function(e,t){var i=gr(e),n=e.getMonth(),r=new Date(e);1===i&&11===n&&(r.setHours(0,0,0,0),r.setDate(r.getDate()+3-(r.getDay()+6)%7));var s=hr(r,t);return s=/WW/.test(s)?s.replace(/WW/,i<10?"0"+i:i):s.replace(/W/,i)},parser:function(e,t){return Rr.date.parser(e,t)}},date:{formatter:Vr,parser:Br},datetime:{formatter:Vr,parser:Br},daterange:{formatter:zr,parser:Hr},monthrange:{formatter:zr,parser:Hr},datetimerange:{formatter:zr,parser:Hr},timerange:{formatter:zr,parser:Hr},time:{formatter:Vr,parser:Br},month:{formatter:Vr,parser:Br},year:{formatter:Vr,parser:Br},number:{formatter:function(e){return e?""+e:""},parser:function(e){var t=Number(e);return isNaN(e)?null:t}},dates:{formatter:function(e,t){return e.map(function(e){return Vr(e,t)})},parser:function(e,t){return("string"==typeof e?e.split(", "):e).map(function(e){return e instanceof Date?e:Br(e,t)})}}},Wr={left:"bottom-start",center:"bottom",right:"bottom-end"},jr=function(e,t,i){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"-";return e?(0,(Rr[i]||Rr.default).parser)(e,t||Fr[i],n):null},qr=function(e,t,i){return e?(0,(Rr[i]||Rr.default).formatter)(e,t||Fr[i]):null},Yr=function(e,t){var i=function(e,t){var i=e instanceof Date,n=t instanceof Date;return i&&n?e.getTime()===t.getTime():!i&&!n&&e===t},n=e instanceof Array,r=t instanceof Array;return n&&r?e.length===t.length&&e.every(function(e,n){return i(e,t[n])}):!n&&!r&&i(e,t)},Kr=function(e){return"string"==typeof e||e instanceof String},Gr=function(e){return null==e||Kr(e)||Array.isArray(e)&&2===e.length&&e.every(Kr)},Ur=r({mixins:[l,Ar],inject:{elForm:{default:""},elFormItem:{default:""}},props:{size:String,format:String,valueFormat:String,readonly:Boolean,placeholder:String,startPlaceholder:String,endPlaceholder:String,prefixIcon:String,clearIcon:{type:String,default:"el-icon-circle-close"},name:{default:"",validator:Gr},disabled:Boolean,clearable:{type:Boolean,default:!0},id:{default:"",validator:Gr},popperClass:String,editable:{type:Boolean,default:!0},align:{type:String,default:"left"},value:{},defaultValue:{},defaultTime:{},rangeSeparator:{default:"-"},pickerOptions:{},unlinkPanels:Boolean,validateEvent:{type:Boolean,default:!0}},components:{ElInput:ne},directives:{Clickoutside:at},data:function(){return{pickerVisible:!1,showClose:!1,userInput:null,valueOnOpen:null,unwatchPickerOptions:null}},watch:{pickerVisible:function(e){this.readonly||this.pickerDisabled||(e?(this.showPicker(),this.valueOnOpen=Array.isArray(this.value)?[].concat(this.value):this.value):(this.hidePicker(),this.emitChange(this.value),this.userInput=null,this.validateEvent&&this.dispatch("ElFormItem","el.form.blur"),this.$emit("blur",this),this.blur()))},parsedValue:{immediate:!0,handler:function(e){this.picker&&(this.picker.value=e)}},defaultValue:function(e){this.picker&&(this.picker.defaultValue=e)},value:function(e,t){Yr(e,t)||this.pickerVisible||!this.validateEvent||this.dispatch("ElFormItem","el.form.change",e)}},computed:{ranged:function(){return this.type.indexOf("range")>-1},reference:function(){var e=this.$refs.reference;return e.$el||e},refInput:function(){return this.reference?[].slice.call(this.reference.querySelectorAll("input")):[]},valueIsEmpty:function(){var e=this.value;if(Array.isArray(e)){for(var t=0,i=e.length;t<i;t++)if(e[t])return!1}else if(e)return!1;return!0},triggerClass:function(){return this.prefixIcon||(-1!==this.type.indexOf("time")?"el-icon-time":"el-icon-date")},selectionMode:function(){return"week"===this.type?"week":"month"===this.type?"month":"year"===this.type?"year":"dates"===this.type?"dates":"day"},haveTrigger:function(){return void 0!==this.showTrigger?this.showTrigger:-1!==Lr.indexOf(this.type)},displayValue:function(){var e=qr(this.parsedValue,this.format,this.type,this.rangeSeparator);return Array.isArray(this.userInput)?[this.userInput[0]||e&&e[0]||"",this.userInput[1]||e&&e[1]||""]:null!==this.userInput?this.userInput:e?"dates"===this.type?e.join(", "):e:""},parsedValue:function(){return this.value?"time-select"===this.type?this.value:cr(this.value)||Array.isArray(this.value)&&this.value.every(cr)?this.value:this.valueFormat?jr(this.value,this.valueFormat,this.type,this.rangeSeparator)||this.value:Array.isArray(this.value)?this.value.map(function(e){return new Date(e)}):new Date(this.value):this.value},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},pickerSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},pickerDisabled:function(){return this.disabled||(this.elForm||{}).disabled},firstInputId:function(){var e={},t=void 0;return(t=this.ranged?this.id&&this.id[0]:this.id)&&(e.id=t),e},secondInputId:function(){var e={},t=void 0;return this.ranged&&(t=this.id&&this.id[1]),t&&(e.id=t),e}},created:function(){this.popperOptions={boundariesPadding:0,gpuAcceleration:!1},this.placement=Wr[this.align]||Wr.left,this.$on("fieldReset",this.handleFieldReset)},methods:{focus:function(){this.ranged?this.handleFocus():this.$refs.reference.focus()},blur:function(){this.refInput.forEach(function(e){return e.blur()})},parseValue:function(e){var t=cr(e)||Array.isArray(e)&&e.every(cr);return this.valueFormat&&!t&&jr(e,this.valueFormat,this.type,this.rangeSeparator)||e},formatToValue:function(e){var t=cr(e)||Array.isArray(e)&&e.every(cr);return this.valueFormat&&t?qr(e,this.valueFormat,this.type,this.rangeSeparator):e},parseString:function(e){var t=Array.isArray(e)?this.type:this.type.replace("range","");return jr(e,this.format,t)},formatToString:function(e){var t=Array.isArray(e)?this.type:this.type.replace("range","");return qr(e,this.format,t)},handleMouseEnter:function(){this.readonly||this.pickerDisabled||!this.valueIsEmpty&&this.clearable&&(this.showClose=!0)},handleChange:function(){if(this.userInput){var e=this.parseString(this.displayValue);e&&(this.picker.value=e,this.isValidValue(e)&&(this.emitInput(e),this.userInput=null))}""===this.userInput&&(this.emitInput(null),this.emitChange(null),this.userInput=null)},handleStartInput:function(e){this.userInput?this.userInput=[e.target.value,this.userInput[1]]:this.userInput=[e.target.value,null]},handleEndInput:function(e){this.userInput?this.userInput=[this.userInput[0],e.target.value]:this.userInput=[null,e.target.value]},handleStartChange:function(e){var t=this.parseString(this.userInput&&this.userInput[0]);if(t){this.userInput=[this.formatToString(t),this.displayValue[1]];var i=[t,this.picker.value&&this.picker.value[1]];this.picker.value=i,this.isValidValue(i)&&(this.emitInput(i),this.userInput=null)}},handleEndChange:function(e){var t=this.parseString(this.userInput&&this.userInput[1]);if(t){this.userInput=[this.displayValue[0],this.formatToString(t)];var i=[this.picker.value&&this.picker.value[0],t];this.picker.value=i,this.isValidValue(i)&&(this.emitInput(i),this.userInput=null)}},handleClickIcon:function(e){this.readonly||this.pickerDisabled||(this.showClose?(this.valueOnOpen=this.value,e.stopPropagation(),this.emitInput(null),this.emitChange(null),this.showClose=!1,this.picker&&"function"==typeof this.picker.handleClear&&this.picker.handleClear()):this.pickerVisible=!this.pickerVisible)},handleClose:function(){if(this.pickerVisible&&(this.pickerVisible=!1,"dates"===this.type)){var e=jr(this.valueOnOpen,this.valueFormat,this.type,this.rangeSeparator)||this.valueOnOpen;this.emitInput(e)}},handleFieldReset:function(e){this.userInput=""===e?null:e},handleFocus:function(){var e=this.type;-1===Lr.indexOf(e)||this.pickerVisible||(this.pickerVisible=!0),this.$emit("focus",this)},handleKeydown:function(e){var t=this,i=e.keyCode;return 27===i?(this.pickerVisible=!1,void e.stopPropagation()):9!==i?13===i?((""===this.userInput||this.isValidValue(this.parseString(this.displayValue)))&&(this.handleChange(),this.pickerVisible=this.picker.visible=!1,this.blur()),void e.stopPropagation()):void(this.userInput?e.stopPropagation():this.picker&&this.picker.handleKeydown&&this.picker.handleKeydown(e)):void(this.ranged?setTimeout(function(){-1===t.refInput.indexOf(document.activeElement)&&(t.pickerVisible=!1,t.blur(),e.stopPropagation())},0):(this.handleChange(),this.pickerVisible=this.picker.visible=!1,this.blur(),e.stopPropagation()))},handleRangeClick:function(){var e=this.type;-1===Lr.indexOf(e)||this.pickerVisible||(this.pickerVisible=!0),this.$emit("focus",this)},hidePicker:function(){this.picker&&(this.picker.resetView&&this.picker.resetView(),this.pickerVisible=this.picker.visible=!1,this.destroyPopper())},showPicker:function(){var e=this;this.$isServer||(this.picker||this.mountPicker(),this.pickerVisible=this.picker.visible=!0,this.updatePopper(),this.picker.value=this.parsedValue,this.picker.resetView&&this.picker.resetView(),this.$nextTick(function(){e.picker.adjustSpinners&&e.picker.adjustSpinners()}))},mountPicker:function(){var e=this;this.picker=new h.a(this.panel).$mount(),this.picker.defaultValue=this.defaultValue,this.picker.defaultTime=this.defaultTime,this.picker.popperClass=this.popperClass,this.popperElm=this.picker.$el,this.picker.width=this.reference.getBoundingClientRect().width,this.picker.showTime="datetime"===this.type||"datetimerange"===this.type,this.picker.selectionMode=this.selectionMode,this.picker.unlinkPanels=this.unlinkPanels,this.picker.arrowControl=this.arrowControl||this.timeArrowControl||!1,this.$watch("format",function(t){e.picker.format=t});var t=function(){var t=e.pickerOptions;if(t&&t.selectableRange){var i=t.selectableRange,n=Rr.datetimerange.parser,r=Fr.timerange;i=Array.isArray(i)?i:[i],e.picker.selectableRange=i.map(function(t){return n(t,r,e.rangeSeparator)})}for(var s in t)t.hasOwnProperty(s)&&"selectableRange"!==s&&(e.picker[s]=t[s]);e.format&&(e.picker.format=e.format)};t(),this.unwatchPickerOptions=this.$watch("pickerOptions",function(){return t()},{deep:!0}),this.$el.appendChild(this.picker.$el),this.picker.resetView&&this.picker.resetView(),this.picker.$on("dodestroy",this.doDestroy),this.picker.$on("pick",function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];e.userInput=null,e.pickerVisible=e.picker.visible=i,e.emitInput(t),e.picker.resetView&&e.picker.resetView()}),this.picker.$on("select-range",function(t,i,n){0!==e.refInput.length&&(n&&"min"!==n?"max"===n&&(e.refInput[1].setSelectionRange(t,i),e.refInput[1].focus()):(e.refInput[0].setSelectionRange(t,i),e.refInput[0].focus()))})},unmountPicker:function(){this.picker&&(this.picker.$destroy(),this.picker.$off(),"function"==typeof this.unwatchPickerOptions&&this.unwatchPickerOptions(),this.picker.$el.parentNode.removeChild(this.picker.$el))},emitChange:function(e){Yr(e,this.valueOnOpen)||(this.$emit("change",e),this.valueOnOpen=e,this.validateEvent&&this.dispatch("ElFormItem","el.form.change",e))},emitInput:function(e){var t=this.formatToValue(e);Yr(this.value,t)||this.$emit("input",t)},isValidValue:function(e){return this.picker||this.mountPicker(),!this.picker.isValidValue||e&&this.picker.isValidValue(e)}}},nr,[],!1,null,null,null);Ur.options.__file="packages/date-picker/src/picker.vue";var Xr=Ur.exports,Jr=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-enter":e.handleEnter,"after-leave":e.handleLeave}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-picker-panel el-date-picker el-popper",class:[{"has-sidebar":e.$slots.sidebar||e.shortcuts,"has-time":e.showTime},e.popperClass]},[i("div",{staticClass:"el-picker-panel__body-wrapper"},[e._t("sidebar"),e.shortcuts?i("div",{staticClass:"el-picker-panel__sidebar"},e._l(e.shortcuts,function(t,n){return i("button",{key:n,staticClass:"el-picker-panel__shortcut",attrs:{type:"button"},on:{click:function(i){e.handleShortcutClick(t)}}},[e._v(e._s(t.text))])}),0):e._e(),i("div",{staticClass:"el-picker-panel__body"},[e.showTime?i("div",{staticClass:"el-date-picker__time-header"},[i("span",{staticClass:"el-date-picker__editor-wrap"},[i("el-input",{attrs:{placeholder:e.t("el.datepicker.selectDate"),value:e.visibleDate,size:"small"},on:{input:function(t){return e.userInputDate=t},change:e.handleVisibleDateChange}})],1),i("span",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleTimePickClose,expression:"handleTimePickClose"}],staticClass:"el-date-picker__editor-wrap"},[i("el-input",{ref:"input",attrs:{placeholder:e.t("el.datepicker.selectTime"),value:e.visibleTime,size:"small"},on:{focus:function(t){e.timePickerVisible=!0},input:function(t){return e.userInputTime=t},change:e.handleVisibleTimeChange}}),i("time-picker",{ref:"timepicker",attrs:{"time-arrow-control":e.arrowControl,visible:e.timePickerVisible},on:{pick:e.handleTimePick,mounted:e.proxyTimePickerDataProperties}})],1)]):e._e(),i("div",{directives:[{name:"show",rawName:"v-show",value:"time"!==e.currentView,expression:"currentView !== 'time'"}],staticClass:"el-date-picker__header",class:{"el-date-picker__header--bordered":"year"===e.currentView||"month"===e.currentView}},[i("button",{staticClass:"el-picker-panel__icon-btn el-date-picker__prev-btn el-icon-d-arrow-left",attrs:{type:"button","aria-label":e.t("el.datepicker.prevYear")},on:{click:e.prevYear}}),i("button",{directives:[{name:"show",rawName:"v-show",value:"date"===e.currentView,expression:"currentView === 'date'"}],staticClass:"el-picker-panel__icon-btn el-date-picker__prev-btn el-icon-arrow-left",attrs:{type:"button","aria-label":e.t("el.datepicker.prevMonth")},on:{click:e.prevMonth}}),i("span",{staticClass:"el-date-picker__header-label",attrs:{role:"button"},on:{click:e.showYearPicker}},[e._v(e._s(e.yearLabel))]),i("span",{directives:[{name:"show",rawName:"v-show",value:"date"===e.currentView,expression:"currentView === 'date'"}],staticClass:"el-date-picker__header-label",class:{active:"month"===e.currentView},attrs:{role:"button"},on:{click:e.showMonthPicker}},[e._v(e._s(e.t("el.datepicker.month"+(e.month+1))))]),i("button",{staticClass:"el-picker-panel__icon-btn el-date-picker__next-btn el-icon-d-arrow-right",attrs:{type:"button","aria-label":e.t("el.datepicker.nextYear")},on:{click:e.nextYear}}),i("button",{directives:[{name:"show",rawName:"v-show",value:"date"===e.currentView,expression:"currentView === 'date'"}],staticClass:"el-picker-panel__icon-btn el-date-picker__next-btn el-icon-arrow-right",attrs:{type:"button","aria-label":e.t("el.datepicker.nextMonth")},on:{click:e.nextMonth}})]),i("div",{staticClass:"el-picker-panel__content"},[i("date-table",{directives:[{name:"show",rawName:"v-show",value:"date"===e.currentView,expression:"currentView === 'date'"}],attrs:{"selection-mode":e.selectionMode,"first-day-of-week":e.firstDayOfWeek,value:e.value,"default-value":e.defaultValue?new Date(e.defaultValue):null,date:e.date,"cell-class-name":e.cellClassName,"disabled-date":e.disabledDate},on:{pick:e.handleDatePick}}),i("year-table",{directives:[{name:"show",rawName:"v-show",value:"year"===e.currentView,expression:"currentView === 'year'"}],attrs:{value:e.value,"default-value":e.defaultValue?new Date(e.defaultValue):null,date:e.date,"disabled-date":e.disabledDate},on:{pick:e.handleYearPick}}),i("month-table",{directives:[{name:"show",rawName:"v-show",value:"month"===e.currentView,expression:"currentView === 'month'"}],attrs:{value:e.value,"default-value":e.defaultValue?new Date(e.defaultValue):null,date:e.date,"disabled-date":e.disabledDate},on:{pick:e.handleMonthPick}})],1)])],2),i("div",{directives:[{name:"show",rawName:"v-show",value:e.footerVisible&&"date"===e.currentView,expression:"footerVisible && currentView === 'date'"}],staticClass:"el-picker-panel__footer"},[i("el-button",{directives:[{name:"show",rawName:"v-show",value:"dates"!==e.selectionMode,expression:"selectionMode !== 'dates'"}],staticClass:"el-picker-panel__link-btn",attrs:{size:"mini",type:"text"},on:{click:e.changeToNow}},[e._v("\n        "+e._s(e.t("el.datepicker.now"))+"\n      ")]),i("el-button",{staticClass:"el-picker-panel__link-btn",attrs:{plain:"",size:"mini"},on:{click:e.confirm}},[e._v("\n        "+e._s(e.t("el.datepicker.confirm"))+"\n      ")])],1)])])};Jr._withStripped=!0;var Zr=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":function(t){e.$emit("dodestroy")}}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-time-panel el-popper",class:e.popperClass},[i("div",{staticClass:"el-time-panel__content",class:{"has-seconds":e.showSeconds}},[i("time-spinner",{ref:"spinner",attrs:{"arrow-control":e.useArrow,"show-seconds":e.showSeconds,"am-pm-mode":e.amPmMode,date:e.date},on:{change:e.handleChange,"select-range":e.setSelectionRange}})],1),i("div",{staticClass:"el-time-panel__footer"},[i("button",{staticClass:"el-time-panel__btn cancel",attrs:{type:"button"},on:{click:e.handleCancel}},[e._v(e._s(e.t("el.datepicker.cancel")))]),i("button",{staticClass:"el-time-panel__btn",class:{confirm:!e.disabled},attrs:{type:"button"},on:{click:function(t){e.handleConfirm()}}},[e._v(e._s(e.t("el.datepicker.confirm")))])])])])};Zr._withStripped=!0;var Qr=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-time-spinner",class:{"has-seconds":e.showSeconds}},[e.arrowControl?e._e():[i("el-scrollbar",{ref:"hours",staticClass:"el-time-spinner__wrapper",attrs:{"wrap-style":"max-height: inherit;","view-class":"el-time-spinner__list",noresize:"",tag:"ul"},nativeOn:{mouseenter:function(t){e.emitSelectRange("hours")},mousemove:function(t){e.adjustCurrentSpinner("hours")}}},e._l(e.hoursList,function(t,n){return i("li",{key:n,staticClass:"el-time-spinner__item",class:{active:n===e.hours,disabled:t},on:{click:function(i){e.handleClick("hours",{value:n,disabled:t})}}},[e._v(e._s(("0"+(e.amPmMode?n%12||12:n)).slice(-2))+e._s(e.amPm(n)))])}),0),i("el-scrollbar",{ref:"minutes",staticClass:"el-time-spinner__wrapper",attrs:{"wrap-style":"max-height: inherit;","view-class":"el-time-spinner__list",noresize:"",tag:"ul"},nativeOn:{mouseenter:function(t){e.emitSelectRange("minutes")},mousemove:function(t){e.adjustCurrentSpinner("minutes")}}},e._l(e.minutesList,function(t,n){return i("li",{key:n,staticClass:"el-time-spinner__item",class:{active:n===e.minutes,disabled:!t},on:{click:function(t){e.handleClick("minutes",{value:n,disabled:!1})}}},[e._v(e._s(("0"+n).slice(-2)))])}),0),i("el-scrollbar",{directives:[{name:"show",rawName:"v-show",value:e.showSeconds,expression:"showSeconds"}],ref:"seconds",staticClass:"el-time-spinner__wrapper",attrs:{"wrap-style":"max-height: inherit;","view-class":"el-time-spinner__list",noresize:"",tag:"ul"},nativeOn:{mouseenter:function(t){e.emitSelectRange("seconds")},mousemove:function(t){e.adjustCurrentSpinner("seconds")}}},e._l(60,function(t,n){return i("li",{key:n,staticClass:"el-time-spinner__item",class:{active:n===e.seconds},on:{click:function(t){e.handleClick("seconds",{value:n,disabled:!1})}}},[e._v(e._s(("0"+n).slice(-2)))])}),0)],e.arrowControl?[i("div",{staticClass:"el-time-spinner__wrapper is-arrow",on:{mouseenter:function(t){e.emitSelectRange("hours")}}},[i("i",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.decrease,expression:"decrease"}],staticClass:"el-time-spinner__arrow el-icon-arrow-up"}),i("i",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.increase,expression:"increase"}],staticClass:"el-time-spinner__arrow el-icon-arrow-down"}),i("ul",{ref:"hours",staticClass:"el-time-spinner__list"},e._l(e.arrowHourList,function(t,n){return i("li",{key:n,staticClass:"el-time-spinner__item",class:{active:t===e.hours,disabled:e.hoursList[t]}},[e._v(e._s(void 0===t?"":("0"+(e.amPmMode?t%12||12:t)).slice(-2)+e.amPm(t)))])}),0)]),i("div",{staticClass:"el-time-spinner__wrapper is-arrow",on:{mouseenter:function(t){e.emitSelectRange("minutes")}}},[i("i",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.decrease,expression:"decrease"}],staticClass:"el-time-spinner__arrow el-icon-arrow-up"}),i("i",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.increase,expression:"increase"}],staticClass:"el-time-spinner__arrow el-icon-arrow-down"}),i("ul",{ref:"minutes",staticClass:"el-time-spinner__list"},e._l(e.arrowMinuteList,function(t,n){return i("li",{key:n,staticClass:"el-time-spinner__item",class:{active:t===e.minutes}},[e._v("\n          "+e._s(void 0===t?"":("0"+t).slice(-2))+"\n        ")])}),0)]),e.showSeconds?i("div",{staticClass:"el-time-spinner__wrapper is-arrow",on:{mouseenter:function(t){e.emitSelectRange("seconds")}}},[i("i",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.decrease,expression:"decrease"}],staticClass:"el-time-spinner__arrow el-icon-arrow-up"}),i("i",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.increase,expression:"increase"}],staticClass:"el-time-spinner__arrow el-icon-arrow-down"}),i("ul",{ref:"seconds",staticClass:"el-time-spinner__list"},e._l(e.arrowSecondList,function(t,n){return i("li",{key:n,staticClass:"el-time-spinner__item",class:{active:t===e.seconds}},[e._v("\n          "+e._s(void 0===t?"":("0"+t).slice(-2))+"\n        ")])}),0)]):e._e()]:e._e()],2)};Qr._withStripped=!0;var es=r({components:{ElScrollbar:Ze},directives:{repeatClick:bi},props:{date:{},defaultValue:{},showSeconds:{type:Boolean,default:!0},arrowControl:Boolean,amPmMode:{type:String,default:""}},computed:{hours:function(){return this.date.getHours()},minutes:function(){return this.date.getMinutes()},seconds:function(){return this.date.getSeconds()},hoursList:function(){return function(e){var t=[],i=[];if((e||[]).forEach(function(e){var t=e.map(function(e){return e.getHours()});i=i.concat(function(e,t){for(var i=[],n=e;n<=t;n++)i.push(n);return i}(t[0],t[1]))}),i.length)for(var n=0;n<24;n++)t[n]=-1===i.indexOf(n);else for(var r=0;r<24;r++)t[r]=!1;return t}(this.selectableRange)},minutesList:function(){return e=this.selectableRange,t=this.hours,i=new Array(60),e.length>0?e.forEach(function(e){var n=e[0],r=e[1],s=n.getHours(),a=n.getMinutes(),o=r.getHours(),l=r.getMinutes();s===t&&o!==t?br(i,a,60,!0):s===t&&o===t?br(i,a,l+1,!0):s!==t&&o===t?br(i,0,l+1,!0):s<t&&o>t&&br(i,0,60,!0)}):br(i,0,60,!0),i;var e,t,i},arrowHourList:function(){var e=this.hours;return[e>0?e-1:void 0,e,e<23?e+1:void 0]},arrowMinuteList:function(){var e=this.minutes;return[e>0?e-1:void 0,e,e<59?e+1:void 0]},arrowSecondList:function(){var e=this.seconds;return[e>0?e-1:void 0,e,e<59?e+1:void 0]}},data:function(){return{selectableRange:[],currentScrollbar:null}},mounted:function(){var e=this;this.$nextTick(function(){!e.arrowControl&&e.bindScrollEvent()})},methods:{increase:function(){this.scrollDown(1)},decrease:function(){this.scrollDown(-1)},modifyDateField:function(e,t){switch(e){case"hours":this.$emit("change",_r(this.date,t,this.minutes,this.seconds));break;case"minutes":this.$emit("change",_r(this.date,this.hours,t,this.seconds));break;case"seconds":this.$emit("change",_r(this.date,this.hours,this.minutes,t))}},handleClick:function(e,t){var i=t.value;t.disabled||(this.modifyDateField(e,i),this.emitSelectRange(e),this.adjustSpinner(e,i))},emitSelectRange:function(e){"hours"===e?this.$emit("select-range",0,2):"minutes"===e?this.$emit("select-range",3,5):"seconds"===e&&this.$emit("select-range",6,8),this.currentScrollbar=e},bindScrollEvent:function(){var e=this,t=function(t){e.$refs[t].wrap.onscroll=function(i){e.handleScroll(t,i)}};t("hours"),t("minutes"),t("seconds")},handleScroll:function(e){var t=Math.min(Math.round((this.$refs[e].wrap.scrollTop-(.5*this.scrollBarHeight(e)-10)/this.typeItemHeight(e)+3)/this.typeItemHeight(e)),"hours"===e?23:59);this.modifyDateField(e,t)},adjustSpinners:function(){this.adjustSpinner("hours",this.hours),this.adjustSpinner("minutes",this.minutes),this.adjustSpinner("seconds",this.seconds)},adjustCurrentSpinner:function(e){this.adjustSpinner(e,this[e])},adjustSpinner:function(e,t){if(!this.arrowControl){var i=this.$refs[e].wrap;i&&(i.scrollTop=Math.max(0,t*this.typeItemHeight(e)))}},scrollDown:function(e){var t=this;this.currentScrollbar||this.emitSelectRange("hours");var i=this.currentScrollbar,n=this.hoursList,r=this[i];if("hours"===this.currentScrollbar){var s=Math.abs(e);e=e>0?1:-1;for(var a=n.length;a--&&s;)n[r=(r+e+n.length)%n.length]||s--;if(n[r])return}else r=(r+e+60)%60;this.modifyDateField(i,r),this.adjustSpinner(i,r),this.$nextTick(function(){return t.emitSelectRange(t.currentScrollbar)})},amPm:function(e){if(!("a"===this.amPmMode.toLowerCase()))return"";var t=e<12?" am":" pm";return"A"===this.amPmMode&&(t=t.toUpperCase()),t},typeItemHeight:function(e){return this.$refs[e].$el.querySelector("li").offsetHeight},scrollBarHeight:function(e){return this.$refs[e].$el.offsetHeight}}},Qr,[],!1,null,null,null);es.options.__file="packages/date-picker/src/basic/time-spinner.vue";var ts=es.exports,is=r({mixins:[q],components:{TimeSpinner:ts},props:{visible:Boolean,timeArrowControl:Boolean},watch:{visible:function(e){var t=this;e?(this.oldValue=this.value,this.$nextTick(function(){return t.$refs.spinner.emitSelectRange("hours")})):this.needInitAdjust=!0},value:function(e){var t=this,i=void 0;e instanceof Date?i=Sr(e,this.selectableRange,this.format):e||(i=this.defaultValue?new Date(this.defaultValue):new Date),this.date=i,this.visible&&this.needInitAdjust&&(this.$nextTick(function(e){return t.adjustSpinners()}),this.needInitAdjust=!1)},selectableRange:function(e){this.$refs.spinner.selectableRange=e},defaultValue:function(e){ur(this.value)||(this.date=e?new Date(e):new Date)}},data:function(){return{popperClass:"",format:"HH:mm:ss",value:"",defaultValue:null,date:new Date,oldValue:new Date,selectableRange:[],selectionRange:[0,2],disabled:!1,arrowControl:!1,needInitAdjust:!0}},computed:{showSeconds:function(){return-1!==(this.format||"").indexOf("ss")},useArrow:function(){return this.arrowControl||this.timeArrowControl||!1},amPmMode:function(){return-1!==(this.format||"").indexOf("A")?"A":-1!==(this.format||"").indexOf("a")?"a":""}},methods:{handleCancel:function(){this.$emit("pick",this.oldValue,!1)},handleChange:function(e){this.visible&&(this.date=kr(e),this.isValidValue(this.date)&&this.$emit("pick",this.date,!0))},setSelectionRange:function(e,t){this.$emit("select-range",e,t),this.selectionRange=[e,t]},handleConfirm:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments[1];if(!t){var i=kr(Sr(this.date,this.selectableRange,this.format));this.$emit("pick",i,e,t)}},handleKeydown:function(e){var t=e.keyCode,i={38:-1,40:1,37:-1,39:1};if(37===t||39===t){var n=i[t];return this.changeSelectionRange(n),void e.preventDefault()}if(38===t||40===t){var r=i[t];return this.$refs.spinner.scrollDown(r),void e.preventDefault()}},isValidValue:function(e){return Dr(e,this.selectableRange,this.format)},adjustSpinners:function(){return this.$refs.spinner.adjustSpinners()},changeSelectionRange:function(e){var t=[0,3].concat(this.showSeconds?[6]:[]),i=["hours","minutes"].concat(this.showSeconds?["seconds"]:[]),n=(t.indexOf(this.selectionRange[0])+e+t.length)%t.length;this.$refs.spinner.emitSelectRange(i[n])}},mounted:function(){var e=this;this.$nextTick(function(){return e.handleConfirm(!0,!0)}),this.$emit("mounted")}},Zr,[],!1,null,null,null);is.options.__file="packages/date-picker/src/panel/time.vue";var ns=is.exports,rs=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("table",{staticClass:"el-year-table",on:{click:e.handleYearTableClick}},[i("tbody",[i("tr",[i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+0)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear))])]),i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+1)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+1))])]),i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+2)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+2))])]),i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+3)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+3))])])]),i("tr",[i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+4)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+4))])]),i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+5)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+5))])]),i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+6)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+6))])]),i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+7)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+7))])])]),i("tr",[i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+8)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+8))])]),i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+9)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+9))])]),i("td"),i("td")])])])};rs._withStripped=!0;var ss=r({props:{disabledDate:{},value:{},defaultValue:{validator:function(e){return null===e||e instanceof Date&&ur(e)}},date:{}},computed:{startYear:function(){return 10*Math.floor(this.date.getFullYear()/10)}},methods:{getCellStyle:function(e){var t={},i=new Date;return t.disabled="function"==typeof this.disabledDate&&function(e){var t=function(e){return e%400==0||e%100!=0&&e%4==0?366:365}(e),i=new Date(e,0,1);return yr(t).map(function(e){return vr(i,e)})}(e).every(this.disabledDate),t.current=E(M(this.value),function(t){return t.getFullYear()===e})>=0,t.today=i.getFullYear()===e,t.default=this.defaultValue&&this.defaultValue.getFullYear()===e,t},handleYearTableClick:function(e){var t=e.target;if("A"===t.tagName){if(pe(t.parentNode,"disabled"))return;var i=t.textContent||t.innerText;this.$emit("pick",Number(i))}}}},rs,[],!1,null,null,null);ss.options.__file="packages/date-picker/src/basic/year-table.vue";var as=ss.exports,os=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("table",{staticClass:"el-month-table",on:{click:e.handleMonthTableClick,mousemove:e.handleMouseMove}},[i("tbody",e._l(e.rows,function(t,n){return i("tr",{key:n},e._l(t,function(t,n){return i("td",{key:n,class:e.getCellStyle(t)},[i("div",[i("a",{staticClass:"cell"},[e._v(e._s(e.t("el.datepicker.months."+e.months[t.text])))])])])}),0)}),0)])};os._withStripped=!0;var ls=function(e){return new Date(e.getFullYear(),e.getMonth())},us=function(e){return"number"==typeof e||"string"==typeof e?ls(new Date(e)).getTime():e instanceof Date?ls(e).getTime():NaN},cs=r({props:{disabledDate:{},value:{},selectionMode:{default:"month"},minDate:{},maxDate:{},defaultValue:{validator:function(e){return null===e||ur(e)||Array.isArray(e)&&e.every(ur)}},date:{},rangeState:{default:function(){return{endDate:null,selecting:!1}}}},mixins:[q],watch:{"rangeState.endDate":function(e){this.markRange(this.minDate,e)},minDate:function(e,t){us(e)!==us(t)&&this.markRange(this.minDate,this.maxDate)},maxDate:function(e,t){us(e)!==us(t)&&this.markRange(this.minDate,this.maxDate)}},data:function(){return{months:["jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec"],tableRows:[[],[],[]],lastRow:null,lastColumn:null}},methods:{cellMatchesDate:function(e,t){var i=new Date(t);return this.date.getFullYear()===i.getFullYear()&&Number(e.text)===i.getMonth()},getCellStyle:function(e){var t=this,i={},n=this.date.getFullYear(),r=new Date,s=e.text,a=this.defaultValue?Array.isArray(this.defaultValue)?this.defaultValue:[this.defaultValue]:[];return i.disabled="function"==typeof this.disabledDate&&function(e,t){var i=pr(e,t),n=new Date(e,t,1);return yr(i).map(function(e){return vr(n,e)})}(n,s).every(this.disabledDate),i.current=E(M(this.value),function(e){return e.getFullYear()===n&&e.getMonth()===s})>=0,i.today=r.getFullYear()===n&&r.getMonth()===s,i.default=a.some(function(i){return t.cellMatchesDate(e,i)}),e.inRange&&(i["in-range"]=!0,e.start&&(i["start-date"]=!0),e.end&&(i["end-date"]=!0)),i},getMonthOfCell:function(e){var t=this.date.getFullYear();return new Date(t,e,1)},markRange:function(e,t){e=us(e),t=us(t)||e;var i=[Math.min(e,t),Math.max(e,t)];e=i[0],t=i[1];for(var n=this.rows,r=0,s=n.length;r<s;r++)for(var a=n[r],o=0,l=a.length;o<l;o++){var u=a[o],c=4*r+o,h=new Date(this.date.getFullYear(),c).getTime();u.inRange=e&&h>=e&&h<=t,u.start=e&&h===e,u.end=t&&h===t}},handleMouseMove:function(e){if(this.rangeState.selecting){var t=e.target;if("A"===t.tagName&&(t=t.parentNode.parentNode),"DIV"===t.tagName&&(t=t.parentNode),"TD"===t.tagName){var i=t.parentNode.rowIndex,n=t.cellIndex;this.rows[i][n].disabled||i===this.lastRow&&n===this.lastColumn||(this.lastRow=i,this.lastColumn=n,this.$emit("changerange",{minDate:this.minDate,maxDate:this.maxDate,rangeState:{selecting:!0,endDate:this.getMonthOfCell(4*i+n)}}))}}},handleMonthTableClick:function(e){var t=e.target;if("A"===t.tagName&&(t=t.parentNode.parentNode),"DIV"===t.tagName&&(t=t.parentNode),"TD"===t.tagName&&!pe(t,"disabled")){var i=t.cellIndex,n=4*t.parentNode.rowIndex+i,r=this.getMonthOfCell(n);"range"===this.selectionMode?this.rangeState.selecting?(r>=this.minDate?this.$emit("pick",{minDate:this.minDate,maxDate:r}):this.$emit("pick",{minDate:r,maxDate:this.minDate}),this.rangeState.selecting=!1):(this.$emit("pick",{minDate:r,maxDate:null}),this.rangeState.selecting=!0):this.$emit("pick",n)}}},computed:{rows:function(){for(var e=this,t=this.tableRows,i=this.disabledDate,n=[],r=us(new Date),s=0;s<3;s++)for(var a=t[s],o=function(t){var o=a[t];o||(o={row:s,column:t,type:"normal",inRange:!1,start:!1,end:!1}),o.type="normal";var l=4*s+t,u=new Date(e.date.getFullYear(),l).getTime();o.inRange=u>=us(e.minDate)&&u<=us(e.maxDate),o.start=e.minDate&&u===us(e.minDate),o.end=e.maxDate&&u===us(e.maxDate),u===r&&(o.type="today"),o.text=l;var c=new Date(u);o.disabled="function"==typeof i&&i(c),o.selected=T(n,function(e){return e.getTime()===c.getTime()}),e.$set(a,t,o)},l=0;l<4;l++)o(l);return t}}},os,[],!1,null,null,null);cs.options.__file="packages/date-picker/src/basic/month-table.vue";var hs=cs.exports,ds=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("table",{staticClass:"el-date-table",class:{"is-week-mode":"week"===e.selectionMode},attrs:{cellspacing:"0",cellpadding:"0"},on:{click:e.handleClick,mousemove:e.handleMouseMove}},[i("tbody",[i("tr",[e.showWeekNumber?i("th",[e._v(e._s(e.t("el.datepicker.week")))]):e._e(),e._l(e.WEEKS,function(t,n){return i("th",{key:n},[e._v(e._s(e.t("el.datepicker.weeks."+t)))])})],2),e._l(e.rows,function(t,n){return i("tr",{key:n,staticClass:"el-date-table__row",class:{current:e.isWeekActive(t[1])}},e._l(t,function(t,n){return i("td",{key:n,class:e.getCellClasses(t)},[i("div",[i("span",[e._v("\n          "+e._s(t.text)+"\n        ")])])])}),0)})],2)])};ds._withStripped=!0;var ps=["sun","mon","tue","wed","thu","fri","sat"],fs=function(e){return"number"==typeof e||"string"==typeof e?Cr(new Date(e)).getTime():e instanceof Date?Cr(e).getTime():NaN},ms=r({mixins:[q],props:{firstDayOfWeek:{default:7,type:Number,validator:function(e){return e>=1&&e<=7}},value:{},defaultValue:{validator:function(e){return null===e||ur(e)||Array.isArray(e)&&e.every(ur)}},date:{},selectionMode:{default:"day"},showWeekNumber:{type:Boolean,default:!1},disabledDate:{},cellClassName:{},minDate:{},maxDate:{},rangeState:{default:function(){return{endDate:null,selecting:!1}}}},computed:{offsetDay:function(){var e=this.firstDayOfWeek;return e>3?7-e:-e},WEEKS:function(){var e=this.firstDayOfWeek;return ps.concat(ps).slice(e,e+7)},year:function(){return this.date.getFullYear()},month:function(){return this.date.getMonth()},startDate:function(){return e=this.year,t=this.month,i=new Date(e,t,1),n=i.getDay(),mr(i,0===n?7:n);var e,t,i,n},rows:function(){var e=this,t=new Date(this.year,this.month,1),i=fr(t),n=pr(t.getFullYear(),t.getMonth()),r=pr(t.getFullYear(),0===t.getMonth()?11:t.getMonth()-1);i=0===i?7:i;for(var s=this.offsetDay,a=this.tableRows,o=1,l=this.startDate,u=this.disabledDate,c=this.cellClassName,h="dates"===this.selectionMode?M(this.value):[],d=fs(new Date),p=0;p<6;p++){var f=a[p];this.showWeekNumber&&(f[0]||(f[0]={type:"week",text:gr(vr(l,7*p+1))}));for(var m=function(t){var a=f[e.showWeekNumber?t+1:t];a||(a={row:p,column:t,type:"normal",inRange:!1,start:!1,end:!1}),a.type="normal";var m=vr(l,7*p+t-s).getTime();if(a.inRange=m>=fs(e.minDate)&&m<=fs(e.maxDate),a.start=e.minDate&&m===fs(e.minDate),a.end=e.maxDate&&m===fs(e.maxDate),m===d&&(a.type="today"),p>=0&&p<=1){var v=i+s<0?7+i+s:i+s;t+7*p>=v?a.text=o++:(a.text=r-(v-t%7)+1+7*p,a.type="prev-month")}else o<=n?a.text=o++:(a.text=o++-n,a.type="next-month");var g=new Date(m);a.disabled="function"==typeof u&&u(g),a.selected=T(h,function(e){return e.getTime()===g.getTime()}),a.customClass="function"==typeof c&&c(g),e.$set(f,e.showWeekNumber?t+1:t,a)},v=0;v<7;v++)m(v);if("week"===this.selectionMode){var g=this.showWeekNumber?1:0,b=this.showWeekNumber?7:6,y=this.isWeekActive(f[g+1]);f[g].inRange=y,f[g].start=y,f[b].inRange=y,f[b].end=y}}return a}},watch:{"rangeState.endDate":function(e){this.markRange(this.minDate,e)},minDate:function(e,t){fs(e)!==fs(t)&&this.markRange(this.minDate,this.maxDate)},maxDate:function(e,t){fs(e)!==fs(t)&&this.markRange(this.minDate,this.maxDate)}},data:function(){return{tableRows:[[],[],[],[],[],[]],lastRow:null,lastColumn:null}},methods:{cellMatchesDate:function(e,t){var i=new Date(t);return this.year===i.getFullYear()&&this.month===i.getMonth()&&Number(e.text)===i.getDate()},getCellClasses:function(e){var t=this,i=this.selectionMode,n=this.defaultValue?Array.isArray(this.defaultValue)?this.defaultValue:[this.defaultValue]:[],r=[];return"normal"!==e.type&&"today"!==e.type||e.disabled?r.push(e.type):(r.push("available"),"today"===e.type&&r.push("today")),"normal"===e.type&&n.some(function(i){return t.cellMatchesDate(e,i)})&&r.push("default"),"day"!==i||"normal"!==e.type&&"today"!==e.type||!this.cellMatchesDate(e,this.value)||r.push("current"),!e.inRange||"normal"!==e.type&&"today"!==e.type&&"week"!==this.selectionMode||(r.push("in-range"),e.start&&r.push("start-date"),e.end&&r.push("end-date")),e.disabled&&r.push("disabled"),e.selected&&r.push("selected"),e.customClass&&r.push(e.customClass),r.join(" ")},getDateOfCell:function(e,t){var i=7*e+(t-(this.showWeekNumber?1:0))-this.offsetDay;return vr(this.startDate,i)},isWeekActive:function(e){if("week"!==this.selectionMode)return!1;var t=new Date(this.year,this.month,1),i=t.getFullYear(),n=t.getMonth();if("prev-month"===e.type&&(t.setMonth(0===n?11:n-1),t.setFullYear(0===n?i-1:i)),"next-month"===e.type&&(t.setMonth(11===n?0:n+1),t.setFullYear(11===n?i+1:i)),t.setDate(parseInt(e.text,10)),ur(this.value)){var r=(this.value.getDay()-this.firstDayOfWeek+7)%7-1;return mr(this.value,r).getTime()===t.getTime()}return!1},markRange:function(e,t){e=fs(e),t=fs(t)||e;var i=[Math.min(e,t),Math.max(e,t)];e=i[0],t=i[1];for(var n=this.startDate,r=this.rows,s=0,a=r.length;s<a;s++)for(var o=r[s],l=0,u=o.length;l<u;l++)if(!this.showWeekNumber||0!==l){var c=o[l],h=7*s+l+(this.showWeekNumber?-1:0),d=vr(n,h-this.offsetDay).getTime();c.inRange=e&&d>=e&&d<=t,c.start=e&&d===e,c.end=t&&d===t}},handleMouseMove:function(e){if(this.rangeState.selecting){var t=e.target;if("SPAN"===t.tagName&&(t=t.parentNode.parentNode),"DIV"===t.tagName&&(t=t.parentNode),"TD"===t.tagName){var i=t.parentNode.rowIndex-1,n=t.cellIndex;this.rows[i][n].disabled||i===this.lastRow&&n===this.lastColumn||(this.lastRow=i,this.lastColumn=n,this.$emit("changerange",{minDate:this.minDate,maxDate:this.maxDate,rangeState:{selecting:!0,endDate:this.getDateOfCell(i,n)}}))}}},handleClick:function(e){var t=e.target;if("SPAN"===t.tagName&&(t=t.parentNode.parentNode),"DIV"===t.tagName&&(t=t.parentNode),"TD"===t.tagName){var i=t.parentNode.rowIndex-1,n="week"===this.selectionMode?1:t.cellIndex,r=this.rows[i][n];if(!r.disabled&&"week"!==r.type){var s,a,o,l=this.getDateOfCell(i,n);if("range"===this.selectionMode)this.rangeState.selecting?(l>=this.minDate?this.$emit("pick",{minDate:this.minDate,maxDate:l}):this.$emit("pick",{minDate:l,maxDate:this.minDate}),this.rangeState.selecting=!1):(this.$emit("pick",{minDate:l,maxDate:null}),this.rangeState.selecting=!0);else if("day"===this.selectionMode)this.$emit("pick",l);else if("week"===this.selectionMode){var u=gr(l),c=l.getFullYear()+"w"+u;this.$emit("pick",{year:l.getFullYear(),week:u,value:c,date:l})}else if("dates"===this.selectionMode){var h=this.value||[],d=r.selected?(s=h,(o="function"==typeof(a=function(e){return e.getTime()===l.getTime()})?E(s,a):s.indexOf(a))>=0?[].concat(s.slice(0,o),s.slice(o+1)):s):[].concat(h,[l]);this.$emit("pick",d)}}}}}},ds,[],!1,null,null,null);ms.options.__file="packages/date-picker/src/basic/date-table.vue";var vs=ms.exports,gs=r({mixins:[q],directives:{Clickoutside:at},watch:{showTime:function(e){var t=this;e&&this.$nextTick(function(e){var i=t.$refs.input.$el;i&&(t.pickerWidth=i.getBoundingClientRect().width+10)})},value:function(e){"dates"===this.selectionMode&&this.value||(ur(e)?this.date=new Date(e):this.date=this.getDefaultValue())},defaultValue:function(e){ur(this.value)||(this.date=e?new Date(e):new Date)},timePickerVisible:function(e){var t=this;e&&this.$nextTick(function(){return t.$refs.timepicker.adjustSpinners()})},selectionMode:function(e){"month"===e?"year"===this.currentView&&"month"===this.currentView||(this.currentView="month"):"dates"===e&&(this.currentView="date")}},methods:{proxyTimePickerDataProperties:function(){var e,t=this,i=function(e){t.$refs.timepicker.value=e},n=function(e){t.$refs.timepicker.date=e},r=function(e){t.$refs.timepicker.selectableRange=e};this.$watch("value",i),this.$watch("date",n),this.$watch("selectableRange",r),e=this.timeFormat,t.$refs.timepicker.format=e,i(this.value),n(this.date),r(this.selectableRange)},handleClear:function(){this.date=this.getDefaultValue(),this.$emit("pick",null)},emit:function(e){for(var t=this,i=arguments.length,n=Array(i>1?i-1:0),r=1;r<i;r++)n[r-1]=arguments[r];if(e)if(Array.isArray(e)){var s=e.map(function(e){return t.showTime?kr(e):Cr(e)});this.$emit.apply(this,["pick",s].concat(n))}else this.$emit.apply(this,["pick",this.showTime?kr(e):Cr(e)].concat(n));else this.$emit.apply(this,["pick",e].concat(n));this.userInputDate=null,this.userInputTime=null},showMonthPicker:function(){this.currentView="month"},showYearPicker:function(){this.currentView="year"},prevMonth:function(){this.date=Er(this.date)},nextMonth:function(){this.date=Tr(this.date)},prevYear:function(){"year"===this.currentView?this.date=Mr(this.date,10):this.date=Mr(this.date)},nextYear:function(){"year"===this.currentView?this.date=Nr(this.date,10):this.date=Nr(this.date)},handleShortcutClick:function(e){e.onClick&&e.onClick(this)},handleTimePick:function(e,t,i){if(ur(e)){var n=this.value?_r(this.value,e.getHours(),e.getMinutes(),e.getSeconds()):xr(this.getDefaultValue(),this.defaultTime);this.date=n,this.emit(this.date,!0)}else this.emit(e,!0);i||(this.timePickerVisible=t)},handleTimePickClose:function(){this.timePickerVisible=!1},handleMonthPick:function(e){"month"===this.selectionMode?(this.date=wr(this.date,this.year,e,1),this.emit(this.date)):(this.date=$r(this.date,this.year,e),this.currentView="date")},handleDatePick:function(e){if("day"===this.selectionMode){var t=this.value?wr(this.value,e.getFullYear(),e.getMonth(),e.getDate()):xr(e,this.defaultTime);this.checkDateWithinRange(t)||(t=wr(this.selectableRange[0][0],e.getFullYear(),e.getMonth(),e.getDate())),this.date=t,this.emit(this.date,this.showTime)}else"week"===this.selectionMode?this.emit(e.date):"dates"===this.selectionMode&&this.emit(e,!0)},handleYearPick:function(e){"year"===this.selectionMode?(this.date=wr(this.date,e,0,1),this.emit(this.date)):(this.date=$r(this.date,e,this.month),this.currentView="month")},changeToNow:function(){this.disabledDate&&this.disabledDate(new Date)||!this.checkDateWithinRange(new Date)||(this.date=new Date,this.emit(this.date))},confirm:function(){if("dates"===this.selectionMode)this.emit(this.value);else{var e=this.value?this.value:xr(this.getDefaultValue(),this.defaultTime);this.date=new Date(e),this.emit(e)}},resetView:function(){"month"===this.selectionMode?this.currentView="month":"year"===this.selectionMode?this.currentView="year":this.currentView="date"},handleEnter:function(){document.body.addEventListener("keydown",this.handleKeydown)},handleLeave:function(){this.$emit("dodestroy"),document.body.removeEventListener("keydown",this.handleKeydown)},handleKeydown:function(e){var t=e.keyCode;this.visible&&!this.timePickerVisible&&(-1!==[38,40,37,39].indexOf(t)&&(this.handleKeyControl(t),e.stopPropagation(),e.preventDefault()),13===t&&null===this.userInputDate&&null===this.userInputTime&&this.emit(this.date,!1))},handleKeyControl:function(e){for(var t={year:{38:-4,40:4,37:-1,39:1,offset:function(e,t){return e.setFullYear(e.getFullYear()+t)}},month:{38:-4,40:4,37:-1,39:1,offset:function(e,t){return e.setMonth(e.getMonth()+t)}},week:{38:-1,40:1,37:-1,39:1,offset:function(e,t){return e.setDate(e.getDate()+7*t)}},day:{38:-7,40:7,37:-1,39:1,offset:function(e,t){return e.setDate(e.getDate()+t)}}},i=this.selectionMode,n=this.date.getTime(),r=new Date(this.date.getTime());Math.abs(n-r.getTime())<=31536e6;){var s=t[i];if(s.offset(r,s[e]),"function"!=typeof this.disabledDate||!this.disabledDate(r)){this.date=r,this.$emit("pick",r,!0);break}}},handleVisibleTimeChange:function(e){var t=dr(e,this.timeFormat);t&&this.checkDateWithinRange(t)&&(this.date=wr(t,this.year,this.month,this.monthDate),this.userInputTime=null,this.$refs.timepicker.value=this.date,this.timePickerVisible=!1,this.emit(this.date,!0))},handleVisibleDateChange:function(e){var t=dr(e,this.dateFormat);if(t){if("function"==typeof this.disabledDate&&this.disabledDate(t))return;this.date=_r(t,this.date.getHours(),this.date.getMinutes(),this.date.getSeconds()),this.userInputDate=null,this.resetView(),this.emit(this.date,!0)}},isValidValue:function(e){return e&&!isNaN(e)&&("function"!=typeof this.disabledDate||!this.disabledDate(e))&&this.checkDateWithinRange(e)},getDefaultValue:function(){return this.defaultValue?new Date(this.defaultValue):new Date},checkDateWithinRange:function(e){return!(this.selectableRange.length>0)||Dr(e,this.selectableRange,this.format||"HH:mm:ss")}},components:{TimePicker:ns,YearTable:as,MonthTable:hs,DateTable:vs,ElInput:ne,ElButton:Et},data:function(){return{popperClass:"",date:new Date,value:"",defaultValue:null,defaultTime:null,showTime:!1,selectionMode:"day",shortcuts:"",visible:!1,currentView:"date",disabledDate:"",cellClassName:"",selectableRange:[],firstDayOfWeek:7,showWeekNumber:!1,timePickerVisible:!1,format:"",arrowControl:!1,userInputDate:null,userInputTime:null}},computed:{year:function(){return this.date.getFullYear()},month:function(){return this.date.getMonth()},week:function(){return gr(this.date)},monthDate:function(){return this.date.getDate()},footerVisible:function(){return this.showTime||"dates"===this.selectionMode},visibleTime:function(){return null!==this.userInputTime?this.userInputTime:hr(this.value||this.defaultValue,this.timeFormat)},visibleDate:function(){return null!==this.userInputDate?this.userInputDate:hr(this.value||this.defaultValue,this.dateFormat)},yearLabel:function(){var e=this.t("el.datepicker.year");if("year"===this.currentView){var t=10*Math.floor(this.year/10);return e?t+" "+e+" - "+(t+9)+" "+e:t+" - "+(t+9)}return this.year+" "+e},timeFormat:function(){return this.format?Or(this.format):"HH:mm:ss"},dateFormat:function(){return this.format?Pr(this.format):"yyyy-MM-dd"}}},Jr,[],!1,null,null,null);gs.options.__file="packages/date-picker/src/panel/date.vue";var bs=gs.exports,ys=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":function(t){e.$emit("dodestroy")}}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-picker-panel el-date-range-picker el-popper",class:[{"has-sidebar":e.$slots.sidebar||e.shortcuts,"has-time":e.showTime},e.popperClass]},[i("div",{staticClass:"el-picker-panel__body-wrapper"},[e._t("sidebar"),e.shortcuts?i("div",{staticClass:"el-picker-panel__sidebar"},e._l(e.shortcuts,function(t,n){return i("button",{key:n,staticClass:"el-picker-panel__shortcut",attrs:{type:"button"},on:{click:function(i){e.handleShortcutClick(t)}}},[e._v(e._s(t.text))])}),0):e._e(),i("div",{staticClass:"el-picker-panel__body"},[e.showTime?i("div",{staticClass:"el-date-range-picker__time-header"},[i("span",{staticClass:"el-date-range-picker__editors-wrap"},[i("span",{staticClass:"el-date-range-picker__time-picker-wrap"},[i("el-input",{ref:"minInput",staticClass:"el-date-range-picker__editor",attrs:{size:"small",disabled:e.rangeState.selecting,placeholder:e.t("el.datepicker.startDate"),value:e.minVisibleDate},on:{input:function(t){return e.handleDateInput(t,"min")},change:function(t){return e.handleDateChange(t,"min")}}})],1),i("span",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleMinTimeClose,expression:"handleMinTimeClose"}],staticClass:"el-date-range-picker__time-picker-wrap"},[i("el-input",{staticClass:"el-date-range-picker__editor",attrs:{size:"small",disabled:e.rangeState.selecting,placeholder:e.t("el.datepicker.startTime"),value:e.minVisibleTime},on:{focus:function(t){e.minTimePickerVisible=!0},input:function(t){return e.handleTimeInput(t,"min")},change:function(t){return e.handleTimeChange(t,"min")}}}),i("time-picker",{ref:"minTimePicker",attrs:{"time-arrow-control":e.arrowControl,visible:e.minTimePickerVisible},on:{pick:e.handleMinTimePick,mounted:function(t){e.$refs.minTimePicker.format=e.timeFormat}}})],1)]),i("span",{staticClass:"el-icon-arrow-right"}),i("span",{staticClass:"el-date-range-picker__editors-wrap is-right"},[i("span",{staticClass:"el-date-range-picker__time-picker-wrap"},[i("el-input",{staticClass:"el-date-range-picker__editor",attrs:{size:"small",disabled:e.rangeState.selecting,placeholder:e.t("el.datepicker.endDate"),value:e.maxVisibleDate,readonly:!e.minDate},on:{input:function(t){return e.handleDateInput(t,"max")},change:function(t){return e.handleDateChange(t,"max")}}})],1),i("span",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleMaxTimeClose,expression:"handleMaxTimeClose"}],staticClass:"el-date-range-picker__time-picker-wrap"},[i("el-input",{staticClass:"el-date-range-picker__editor",attrs:{size:"small",disabled:e.rangeState.selecting,placeholder:e.t("el.datepicker.endTime"),value:e.maxVisibleTime,readonly:!e.minDate},on:{focus:function(t){e.minDate&&(e.maxTimePickerVisible=!0)},input:function(t){return e.handleTimeInput(t,"max")},change:function(t){return e.handleTimeChange(t,"max")}}}),i("time-picker",{ref:"maxTimePicker",attrs:{"time-arrow-control":e.arrowControl,visible:e.maxTimePickerVisible},on:{pick:e.handleMaxTimePick,mounted:function(t){e.$refs.maxTimePicker.format=e.timeFormat}}})],1)])]):e._e(),i("div",{staticClass:"el-picker-panel__content el-date-range-picker__content is-left"},[i("div",{staticClass:"el-date-range-picker__header"},[i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-left",attrs:{type:"button"},on:{click:e.leftPrevYear}}),i("button",{staticClass:"el-picker-panel__icon-btn el-icon-arrow-left",attrs:{type:"button"},on:{click:e.leftPrevMonth}}),e.unlinkPanels?i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-right",class:{"is-disabled":!e.enableYearArrow},attrs:{type:"button",disabled:!e.enableYearArrow},on:{click:e.leftNextYear}}):e._e(),e.unlinkPanels?i("button",{staticClass:"el-picker-panel__icon-btn el-icon-arrow-right",class:{"is-disabled":!e.enableMonthArrow},attrs:{type:"button",disabled:!e.enableMonthArrow},on:{click:e.leftNextMonth}}):e._e(),i("div",[e._v(e._s(e.leftLabel))])]),i("date-table",{attrs:{"selection-mode":"range",date:e.leftDate,"default-value":e.defaultValue,"min-date":e.minDate,"max-date":e.maxDate,"range-state":e.rangeState,"disabled-date":e.disabledDate,"cell-class-name":e.cellClassName,"first-day-of-week":e.firstDayOfWeek},on:{changerange:e.handleChangeRange,pick:e.handleRangePick}})],1),i("div",{staticClass:"el-picker-panel__content el-date-range-picker__content is-right"},[i("div",{staticClass:"el-date-range-picker__header"},[e.unlinkPanels?i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-left",class:{"is-disabled":!e.enableYearArrow},attrs:{type:"button",disabled:!e.enableYearArrow},on:{click:e.rightPrevYear}}):e._e(),e.unlinkPanels?i("button",{staticClass:"el-picker-panel__icon-btn el-icon-arrow-left",class:{"is-disabled":!e.enableMonthArrow},attrs:{type:"button",disabled:!e.enableMonthArrow},on:{click:e.rightPrevMonth}}):e._e(),i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-right",attrs:{type:"button"},on:{click:e.rightNextYear}}),i("button",{staticClass:"el-picker-panel__icon-btn el-icon-arrow-right",attrs:{type:"button"},on:{click:e.rightNextMonth}}),i("div",[e._v(e._s(e.rightLabel))])]),i("date-table",{attrs:{"selection-mode":"range",date:e.rightDate,"default-value":e.defaultValue,"min-date":e.minDate,"max-date":e.maxDate,"range-state":e.rangeState,"disabled-date":e.disabledDate,"cell-class-name":e.cellClassName,"first-day-of-week":e.firstDayOfWeek},on:{changerange:e.handleChangeRange,pick:e.handleRangePick}})],1)])],2),e.showTime?i("div",{staticClass:"el-picker-panel__footer"},[i("el-button",{staticClass:"el-picker-panel__link-btn",attrs:{size:"mini",type:"text"},on:{click:e.handleClear}},[e._v("\n        "+e._s(e.t("el.datepicker.clear"))+"\n      ")]),i("el-button",{staticClass:"el-picker-panel__link-btn",attrs:{plain:"",size:"mini",disabled:e.btnDisabled},on:{click:function(t){e.handleConfirm(!1)}}},[e._v("\n        "+e._s(e.t("el.datepicker.confirm"))+"\n      ")])],1):e._e()])])};ys._withStripped=!0;var ws=function(e){return Array.isArray(e)?[new Date(e[0]),new Date(e[1])]:e?[new Date(e),vr(new Date(e),1)]:[new Date,vr(new Date,1)]},_s=r({mixins:[q],directives:{Clickoutside:at},computed:{btnDisabled:function(){return!(this.minDate&&this.maxDate&&!this.selecting&&this.isValidValue([this.minDate,this.maxDate]))},leftLabel:function(){return this.leftDate.getFullYear()+" "+this.t("el.datepicker.year")+" "+this.t("el.datepicker.month"+(this.leftDate.getMonth()+1))},rightLabel:function(){return this.rightDate.getFullYear()+" "+this.t("el.datepicker.year")+" "+this.t("el.datepicker.month"+(this.rightDate.getMonth()+1))},leftYear:function(){return this.leftDate.getFullYear()},leftMonth:function(){return this.leftDate.getMonth()},leftMonthDate:function(){return this.leftDate.getDate()},rightYear:function(){return this.rightDate.getFullYear()},rightMonth:function(){return this.rightDate.getMonth()},rightMonthDate:function(){return this.rightDate.getDate()},minVisibleDate:function(){return null!==this.dateUserInput.min?this.dateUserInput.min:this.minDate?hr(this.minDate,this.dateFormat):""},maxVisibleDate:function(){return null!==this.dateUserInput.max?this.dateUserInput.max:this.maxDate||this.minDate?hr(this.maxDate||this.minDate,this.dateFormat):""},minVisibleTime:function(){return null!==this.timeUserInput.min?this.timeUserInput.min:this.minDate?hr(this.minDate,this.timeFormat):""},maxVisibleTime:function(){return null!==this.timeUserInput.max?this.timeUserInput.max:this.maxDate||this.minDate?hr(this.maxDate||this.minDate,this.timeFormat):""},timeFormat:function(){return this.format?Or(this.format):"HH:mm:ss"},dateFormat:function(){return this.format?Pr(this.format):"yyyy-MM-dd"},enableMonthArrow:function(){var e=(this.leftMonth+1)%12,t=this.leftMonth+1>=12?1:0;return this.unlinkPanels&&new Date(this.leftYear+t,e)<new Date(this.rightYear,this.rightMonth)},enableYearArrow:function(){return this.unlinkPanels&&12*this.rightYear+this.rightMonth-(12*this.leftYear+this.leftMonth+1)>=12}},data:function(){return{popperClass:"",value:[],defaultValue:null,defaultTime:null,minDate:"",maxDate:"",leftDate:new Date,rightDate:Tr(new Date),rangeState:{endDate:null,selecting:!1,row:null,column:null},showTime:!1,shortcuts:"",visible:"",disabledDate:"",cellClassName:"",firstDayOfWeek:7,minTimePickerVisible:!1,maxTimePickerVisible:!1,format:"",arrowControl:!1,unlinkPanels:!1,dateUserInput:{min:null,max:null},timeUserInput:{min:null,max:null}}},watch:{minDate:function(e){var t=this;this.dateUserInput.min=null,this.timeUserInput.min=null,this.$nextTick(function(){if(t.$refs.maxTimePicker&&t.maxDate&&t.maxDate<t.minDate){t.$refs.maxTimePicker.selectableRange=[[dr(hr(t.minDate,"HH:mm:ss"),"HH:mm:ss"),dr("23:59:59","HH:mm:ss")]]}}),e&&this.$refs.minTimePicker&&(this.$refs.minTimePicker.date=e,this.$refs.minTimePicker.value=e)},maxDate:function(e){this.dateUserInput.max=null,this.timeUserInput.max=null,e&&this.$refs.maxTimePicker&&(this.$refs.maxTimePicker.date=e,this.$refs.maxTimePicker.value=e)},minTimePickerVisible:function(e){var t=this;e&&this.$nextTick(function(){t.$refs.minTimePicker.date=t.minDate,t.$refs.minTimePicker.value=t.minDate,t.$refs.minTimePicker.adjustSpinners()})},maxTimePickerVisible:function(e){var t=this;e&&this.$nextTick(function(){t.$refs.maxTimePicker.date=t.maxDate,t.$refs.maxTimePicker.value=t.maxDate,t.$refs.maxTimePicker.adjustSpinners()})},value:function(e){if(e){if(Array.isArray(e))if(this.minDate=ur(e[0])?new Date(e[0]):null,this.maxDate=ur(e[1])?new Date(e[1]):null,this.minDate)if(this.leftDate=this.minDate,this.unlinkPanels&&this.maxDate){var t=this.minDate.getFullYear(),i=this.minDate.getMonth(),n=this.maxDate.getFullYear(),r=this.maxDate.getMonth();this.rightDate=t===n&&i===r?Tr(this.maxDate):this.maxDate}else this.rightDate=Tr(this.leftDate);else this.leftDate=ws(this.defaultValue)[0],this.rightDate=Tr(this.leftDate)}else this.minDate=null,this.maxDate=null},defaultValue:function(e){if(!Array.isArray(this.value)){var t=ws(e),i=t[0],n=t[1];this.leftDate=i,this.rightDate=e&&e[1]&&this.unlinkPanels?n:Tr(this.leftDate)}}},methods:{handleClear:function(){this.minDate=null,this.maxDate=null,this.leftDate=ws(this.defaultValue)[0],this.rightDate=Tr(this.leftDate),this.$emit("pick",null)},handleChangeRange:function(e){this.minDate=e.minDate,this.maxDate=e.maxDate,this.rangeState=e.rangeState},handleDateInput:function(e,t){if(this.dateUserInput[t]=e,e.length===this.dateFormat.length){var i=dr(e,this.dateFormat);if(i){if("function"==typeof this.disabledDate&&this.disabledDate(new Date(i)))return;"min"===t?(this.minDate=wr(this.minDate||new Date,i.getFullYear(),i.getMonth(),i.getDate()),this.leftDate=new Date(i),this.unlinkPanels||(this.rightDate=Tr(this.leftDate))):(this.maxDate=wr(this.maxDate||new Date,i.getFullYear(),i.getMonth(),i.getDate()),this.rightDate=new Date(i),this.unlinkPanels||(this.leftDate=Er(i)))}}},handleDateChange:function(e,t){var i=dr(e,this.dateFormat);i&&("min"===t?(this.minDate=wr(this.minDate,i.getFullYear(),i.getMonth(),i.getDate()),this.minDate>this.maxDate&&(this.maxDate=this.minDate)):(this.maxDate=wr(this.maxDate,i.getFullYear(),i.getMonth(),i.getDate()),this.maxDate<this.minDate&&(this.minDate=this.maxDate)))},handleTimeInput:function(e,t){var i=this;if(this.timeUserInput[t]=e,e.length===this.timeFormat.length){var n=dr(e,this.timeFormat);n&&("min"===t?(this.minDate=_r(this.minDate,n.getHours(),n.getMinutes(),n.getSeconds()),this.$nextTick(function(e){return i.$refs.minTimePicker.adjustSpinners()})):(this.maxDate=_r(this.maxDate,n.getHours(),n.getMinutes(),n.getSeconds()),this.$nextTick(function(e){return i.$refs.maxTimePicker.adjustSpinners()})))}},handleTimeChange:function(e,t){var i=dr(e,this.timeFormat);i&&("min"===t?(this.minDate=_r(this.minDate,i.getHours(),i.getMinutes(),i.getSeconds()),this.minDate>this.maxDate&&(this.maxDate=this.minDate),this.$refs.minTimePicker.value=this.minDate,this.minTimePickerVisible=!1):(this.maxDate=_r(this.maxDate,i.getHours(),i.getMinutes(),i.getSeconds()),this.maxDate<this.minDate&&(this.minDate=this.maxDate),this.$refs.maxTimePicker.value=this.minDate,this.maxTimePickerVisible=!1))},handleRangePick:function(e){var t=this,i=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this.defaultTime||[],r=xr(e.minDate,n[0]),s=xr(e.maxDate,n[1]);this.maxDate===s&&this.minDate===r||(this.onPick&&this.onPick(e),this.maxDate=s,this.minDate=r,setTimeout(function(){t.maxDate=s,t.minDate=r},10),i&&!this.showTime&&this.handleConfirm())},handleShortcutClick:function(e){e.onClick&&e.onClick(this)},handleMinTimePick:function(e,t,i){this.minDate=this.minDate||new Date,e&&(this.minDate=_r(this.minDate,e.getHours(),e.getMinutes(),e.getSeconds())),i||(this.minTimePickerVisible=t),(!this.maxDate||this.maxDate&&this.maxDate.getTime()<this.minDate.getTime())&&(this.maxDate=new Date(this.minDate))},handleMinTimeClose:function(){this.minTimePickerVisible=!1},handleMaxTimePick:function(e,t,i){this.maxDate&&e&&(this.maxDate=_r(this.maxDate,e.getHours(),e.getMinutes(),e.getSeconds())),i||(this.maxTimePickerVisible=t),this.maxDate&&this.minDate&&this.minDate.getTime()>this.maxDate.getTime()&&(this.minDate=new Date(this.maxDate))},handleMaxTimeClose:function(){this.maxTimePickerVisible=!1},leftPrevYear:function(){this.leftDate=Mr(this.leftDate),this.unlinkPanels||(this.rightDate=Tr(this.leftDate))},leftPrevMonth:function(){this.leftDate=Er(this.leftDate),this.unlinkPanels||(this.rightDate=Tr(this.leftDate))},rightNextYear:function(){this.unlinkPanels?this.rightDate=Nr(this.rightDate):(this.leftDate=Nr(this.leftDate),this.rightDate=Tr(this.leftDate))},rightNextMonth:function(){this.unlinkPanels?this.rightDate=Tr(this.rightDate):(this.leftDate=Tr(this.leftDate),this.rightDate=Tr(this.leftDate))},leftNextYear:function(){this.leftDate=Nr(this.leftDate)},leftNextMonth:function(){this.leftDate=Tr(this.leftDate)},rightPrevYear:function(){this.rightDate=Mr(this.rightDate)},rightPrevMonth:function(){this.rightDate=Er(this.rightDate)},handleConfirm:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.isValidValue([this.minDate,this.maxDate])&&this.$emit("pick",[this.minDate,this.maxDate],e)},isValidValue:function(e){return Array.isArray(e)&&e&&e[0]&&e[1]&&ur(e[0])&&ur(e[1])&&e[0].getTime()<=e[1].getTime()&&("function"!=typeof this.disabledDate||!this.disabledDate(e[0])&&!this.disabledDate(e[1]))},resetView:function(){this.minDate&&null==this.maxDate&&(this.rangeState.selecting=!1),this.minDate=this.value&&ur(this.value[0])?new Date(this.value[0]):null,this.maxDate=this.value&&ur(this.value[0])?new Date(this.value[1]):null}},components:{TimePicker:ns,DateTable:vs,ElInput:ne,ElButton:Et}},ys,[],!1,null,null,null);_s.options.__file="packages/date-picker/src/panel/date-range.vue";var xs=_s.exports,Cs=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":function(t){e.$emit("dodestroy")}}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-picker-panel el-date-range-picker el-popper",class:[{"has-sidebar":e.$slots.sidebar||e.shortcuts},e.popperClass]},[i("div",{staticClass:"el-picker-panel__body-wrapper"},[e._t("sidebar"),e.shortcuts?i("div",{staticClass:"el-picker-panel__sidebar"},e._l(e.shortcuts,function(t,n){return i("button",{key:n,staticClass:"el-picker-panel__shortcut",attrs:{type:"button"},on:{click:function(i){e.handleShortcutClick(t)}}},[e._v(e._s(t.text))])}),0):e._e(),i("div",{staticClass:"el-picker-panel__body"},[i("div",{staticClass:"el-picker-panel__content el-date-range-picker__content is-left"},[i("div",{staticClass:"el-date-range-picker__header"},[i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-left",attrs:{type:"button"},on:{click:e.leftPrevYear}}),e.unlinkPanels?i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-right",class:{"is-disabled":!e.enableYearArrow},attrs:{type:"button",disabled:!e.enableYearArrow},on:{click:e.leftNextYear}}):e._e(),i("div",[e._v(e._s(e.leftLabel))])]),i("month-table",{attrs:{"selection-mode":"range",date:e.leftDate,"default-value":e.defaultValue,"min-date":e.minDate,"max-date":e.maxDate,"range-state":e.rangeState,"disabled-date":e.disabledDate},on:{changerange:e.handleChangeRange,pick:e.handleRangePick}})],1),i("div",{staticClass:"el-picker-panel__content el-date-range-picker__content is-right"},[i("div",{staticClass:"el-date-range-picker__header"},[e.unlinkPanels?i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-left",class:{"is-disabled":!e.enableYearArrow},attrs:{type:"button",disabled:!e.enableYearArrow},on:{click:e.rightPrevYear}}):e._e(),i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-right",attrs:{type:"button"},on:{click:e.rightNextYear}}),i("div",[e._v(e._s(e.rightLabel))])]),i("month-table",{attrs:{"selection-mode":"range",date:e.rightDate,"default-value":e.defaultValue,"min-date":e.minDate,"max-date":e.maxDate,"range-state":e.rangeState,"disabled-date":e.disabledDate},on:{changerange:e.handleChangeRange,pick:e.handleRangePick}})],1)])],2)])])};Cs._withStripped=!0;var ks=function(e){return Array.isArray(e)?[new Date(e[0]),new Date(e[1])]:e?[new Date(e),Tr(new Date(e))]:[new Date,Tr(new Date)]},Ss=r({mixins:[q],directives:{Clickoutside:at},computed:{btnDisabled:function(){return!(this.minDate&&this.maxDate&&!this.selecting&&this.isValidValue([this.minDate,this.maxDate]))},leftLabel:function(){return this.leftDate.getFullYear()+" "+this.t("el.datepicker.year")},rightLabel:function(){return this.rightDate.getFullYear()+" "+this.t("el.datepicker.year")},leftYear:function(){return this.leftDate.getFullYear()},rightYear:function(){return this.rightDate.getFullYear()===this.leftDate.getFullYear()?this.leftDate.getFullYear()+1:this.rightDate.getFullYear()},enableYearArrow:function(){return this.unlinkPanels&&this.rightYear>this.leftYear+1}},data:function(){return{popperClass:"",value:[],defaultValue:null,defaultTime:null,minDate:"",maxDate:"",leftDate:new Date,rightDate:Nr(new Date),rangeState:{endDate:null,selecting:!1,row:null,column:null},shortcuts:"",visible:"",disabledDate:"",format:"",arrowControl:!1,unlinkPanels:!1}},watch:{value:function(e){if(e){if(Array.isArray(e))if(this.minDate=ur(e[0])?new Date(e[0]):null,this.maxDate=ur(e[1])?new Date(e[1]):null,this.minDate)if(this.leftDate=this.minDate,this.unlinkPanels&&this.maxDate){var t=this.minDate.getFullYear(),i=this.maxDate.getFullYear();this.rightDate=t===i?Nr(this.maxDate):this.maxDate}else this.rightDate=Nr(this.leftDate);else this.leftDate=ks(this.defaultValue)[0],this.rightDate=Nr(this.leftDate)}else this.minDate=null,this.maxDate=null},defaultValue:function(e){if(!Array.isArray(this.value)){var t=ks(e),i=t[0],n=t[1];this.leftDate=i,this.rightDate=e&&e[1]&&i.getFullYear()!==n.getFullYear()&&this.unlinkPanels?n:Nr(this.leftDate)}}},methods:{handleClear:function(){this.minDate=null,this.maxDate=null,this.leftDate=ks(this.defaultValue)[0],this.rightDate=Nr(this.leftDate),this.$emit("pick",null)},handleChangeRange:function(e){this.minDate=e.minDate,this.maxDate=e.maxDate,this.rangeState=e.rangeState},handleRangePick:function(e){var t=this,i=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this.defaultTime||[],r=xr(e.minDate,n[0]),s=xr(e.maxDate,n[1]);this.maxDate===s&&this.minDate===r||(this.onPick&&this.onPick(e),this.maxDate=s,this.minDate=r,setTimeout(function(){t.maxDate=s,t.minDate=r},10),i&&this.handleConfirm())},handleShortcutClick:function(e){e.onClick&&e.onClick(this)},leftPrevYear:function(){this.leftDate=Mr(this.leftDate),this.unlinkPanels||(this.rightDate=Mr(this.rightDate))},rightNextYear:function(){this.unlinkPanels||(this.leftDate=Nr(this.leftDate)),this.rightDate=Nr(this.rightDate)},leftNextYear:function(){this.leftDate=Nr(this.leftDate)},rightPrevYear:function(){this.rightDate=Mr(this.rightDate)},handleConfirm:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.isValidValue([this.minDate,this.maxDate])&&this.$emit("pick",[this.minDate,this.maxDate],e)},isValidValue:function(e){return Array.isArray(e)&&e&&e[0]&&e[1]&&ur(e[0])&&ur(e[1])&&e[0].getTime()<=e[1].getTime()&&("function"!=typeof this.disabledDate||!this.disabledDate(e[0])&&!this.disabledDate(e[1]))},resetView:function(){this.minDate=this.value&&ur(this.value[0])?new Date(this.value[0]):null,this.maxDate=this.value&&ur(this.value[0])?new Date(this.value[1]):null}},components:{MonthTable:hs,ElInput:ne,ElButton:Et}},Cs,[],!1,null,null,null);Ss.options.__file="packages/date-picker/src/panel/month-range.vue";var Ds=Ss.exports,$s=function(e){return"daterange"===e||"datetimerange"===e?xs:"monthrange"===e?Ds:bs},Es={mixins:[Xr],name:"ElDatePicker",props:{type:{type:String,default:"date"},timeArrowControl:Boolean},watch:{type:function(e){this.picker?(this.unmountPicker(),this.panel=$s(e),this.mountPicker()):this.panel=$s(e)}},created:function(){this.panel=$s(this.type)},install:function(e){e.component(Es.name,Es)}},Ts=Es,Ms=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"before-enter":e.handleMenuEnter,"after-leave":function(t){e.$emit("dodestroy")}}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],ref:"popper",staticClass:"el-picker-panel time-select el-popper",class:e.popperClass,style:{width:e.width+"px"}},[i("el-scrollbar",{attrs:{noresize:"","wrap-class":"el-picker-panel__content"}},e._l(e.items,function(t){return i("div",{key:t.value,staticClass:"time-select-item",class:{selected:e.value===t.value,disabled:t.disabled,default:t.value===e.defaultValue},attrs:{disabled:t.disabled},on:{click:function(i){e.handleClick(t)}}},[e._v(e._s(t.value))])}),0)],1)])};Ms._withStripped=!0;var Ns=function(e){var t=(e||"").split(":");return t.length>=2?{hours:parseInt(t[0],10),minutes:parseInt(t[1],10)}:null},Ps=function(e,t){var i=Ns(e),n=Ns(t),r=i.minutes+60*i.hours,s=n.minutes+60*n.hours;return r===s?0:r>s?1:-1},Os=function(e,t){var i=Ns(e),n=Ns(t),r={hours:i.hours,minutes:i.minutes};return r.minutes+=n.minutes,r.hours+=n.hours,r.hours+=Math.floor(r.minutes/60),r.minutes=r.minutes%60,function(e){return(e.hours<10?"0"+e.hours:e.hours)+":"+(e.minutes<10?"0"+e.minutes:e.minutes)}(r)},Is=r({components:{ElScrollbar:Ze},watch:{value:function(e){var t=this;e&&this.$nextTick(function(){return t.scrollToOption()})}},methods:{handleClick:function(e){e.disabled||this.$emit("pick",e.value)},handleClear:function(){this.$emit("pick",null)},scrollToOption:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:".selected",t=this.$refs.popper.querySelector(".el-picker-panel__content");ot(t,t.querySelector(e))},handleMenuEnter:function(){var e=this,t=-1!==this.items.map(function(e){return e.value}).indexOf(this.value),i=-1!==this.items.map(function(e){return e.value}).indexOf(this.defaultValue),n=(t?".selected":i&&".default")||".time-select-item:not(.disabled)";this.$nextTick(function(){return e.scrollToOption(n)})},scrollDown:function(e){for(var t=this.items,i=t.length,n=t.length,r=t.map(function(e){return e.value}).indexOf(this.value);n--;)if(!t[r=(r+e+i)%i].disabled)return void this.$emit("pick",t[r].value,!0)},isValidValue:function(e){return-1!==this.items.filter(function(e){return!e.disabled}).map(function(e){return e.value}).indexOf(e)},handleKeydown:function(e){var t=e.keyCode;if(38===t||40===t){var i={40:1,38:-1}[t.toString()];return this.scrollDown(i),void e.stopPropagation()}}},data:function(){return{popperClass:"",start:"09:00",end:"18:00",step:"00:30",value:"",defaultValue:"",visible:!1,minTime:"",maxTime:"",width:0}},computed:{items:function(){var e=this.start,t=this.end,i=this.step,n=[];if(e&&t&&i)for(var r=e;Ps(r,t)<=0;)n.push({value:r,disabled:Ps(r,this.minTime||"-1:-1")<=0||Ps(r,this.maxTime||"100:100")>=0}),r=Os(r,i);return n}}},Ms,[],!1,null,null,null);Is.options.__file="packages/date-picker/src/panel/time-select.vue";var As=Is.exports,Fs={mixins:[Xr],name:"ElTimeSelect",componentName:"ElTimeSelect",props:{type:{type:String,default:"time-select"}},beforeCreate:function(){this.panel=As},install:function(e){e.component(Fs.name,Fs)}},Ls=Fs,Vs=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":function(t){e.$emit("dodestroy")}}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-time-range-picker el-picker-panel el-popper",class:e.popperClass},[i("div",{staticClass:"el-time-range-picker__content"},[i("div",{staticClass:"el-time-range-picker__cell"},[i("div",{staticClass:"el-time-range-picker__header"},[e._v(e._s(e.t("el.datepicker.startTime")))]),i("div",{staticClass:"el-time-range-picker__body el-time-panel__content",class:{"has-seconds":e.showSeconds,"is-arrow":e.arrowControl}},[i("time-spinner",{ref:"minSpinner",attrs:{"show-seconds":e.showSeconds,"am-pm-mode":e.amPmMode,"arrow-control":e.arrowControl,date:e.minDate},on:{change:e.handleMinChange,"select-range":e.setMinSelectionRange}})],1)]),i("div",{staticClass:"el-time-range-picker__cell"},[i("div",{staticClass:"el-time-range-picker__header"},[e._v(e._s(e.t("el.datepicker.endTime")))]),i("div",{staticClass:"el-time-range-picker__body el-time-panel__content",class:{"has-seconds":e.showSeconds,"is-arrow":e.arrowControl}},[i("time-spinner",{ref:"maxSpinner",attrs:{"show-seconds":e.showSeconds,"am-pm-mode":e.amPmMode,"arrow-control":e.arrowControl,date:e.maxDate},on:{change:e.handleMaxChange,"select-range":e.setMaxSelectionRange}})],1)])]),i("div",{staticClass:"el-time-panel__footer"},[i("button",{staticClass:"el-time-panel__btn cancel",attrs:{type:"button"},on:{click:function(t){e.handleCancel()}}},[e._v(e._s(e.t("el.datepicker.cancel")))]),i("button",{staticClass:"el-time-panel__btn confirm",attrs:{type:"button",disabled:e.btnDisabled},on:{click:function(t){e.handleConfirm()}}},[e._v(e._s(e.t("el.datepicker.confirm")))])])])])};Vs._withStripped=!0;var Bs=dr("00:00:00","HH:mm:ss"),zs=dr("23:59:59","HH:mm:ss"),Hs=function(e){return wr(zs,e.getFullYear(),e.getMonth(),e.getDate())},Rs=function(e,t){return new Date(Math.min(e.getTime()+t,Hs(e).getTime()))},Ws=r({mixins:[q],components:{TimeSpinner:ts},computed:{showSeconds:function(){return-1!==(this.format||"").indexOf("ss")},offset:function(){return this.showSeconds?11:8},spinner:function(){return this.selectionRange[0]<this.offset?this.$refs.minSpinner:this.$refs.maxSpinner},btnDisabled:function(){return this.minDate.getTime()>this.maxDate.getTime()},amPmMode:function(){return-1!==(this.format||"").indexOf("A")?"A":-1!==(this.format||"").indexOf("a")?"a":""}},data:function(){return{popperClass:"",minDate:new Date,maxDate:new Date,value:[],oldValue:[new Date,new Date],defaultValue:null,format:"HH:mm:ss",visible:!1,selectionRange:[0,2],arrowControl:!1}},watch:{value:function(e){Array.isArray(e)?(this.minDate=new Date(e[0]),this.maxDate=new Date(e[1])):Array.isArray(this.defaultValue)?(this.minDate=new Date(this.defaultValue[0]),this.maxDate=new Date(this.defaultValue[1])):this.defaultValue?(this.minDate=new Date(this.defaultValue),this.maxDate=Rs(new Date(this.defaultValue),36e5)):(this.minDate=new Date,this.maxDate=Rs(new Date,36e5))},visible:function(e){var t=this;e&&(this.oldValue=this.value,this.$nextTick(function(){return t.$refs.minSpinner.emitSelectRange("hours")}))}},methods:{handleClear:function(){this.$emit("pick",null)},handleCancel:function(){this.$emit("pick",this.oldValue)},handleMinChange:function(e){this.minDate=kr(e),this.handleChange()},handleMaxChange:function(e){this.maxDate=kr(e),this.handleChange()},handleChange:function(){var e;this.isValidValue([this.minDate,this.maxDate])&&(this.$refs.minSpinner.selectableRange=[[(e=this.minDate,wr(Bs,e.getFullYear(),e.getMonth(),e.getDate())),this.maxDate]],this.$refs.maxSpinner.selectableRange=[[this.minDate,Hs(this.maxDate)]],this.$emit("pick",[this.minDate,this.maxDate],!0))},setMinSelectionRange:function(e,t){this.$emit("select-range",e,t,"min"),this.selectionRange=[e,t]},setMaxSelectionRange:function(e,t){this.$emit("select-range",e,t,"max"),this.selectionRange=[e+this.offset,t+this.offset]},handleConfirm:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.$refs.minSpinner.selectableRange,i=this.$refs.maxSpinner.selectableRange;this.minDate=Sr(this.minDate,t,this.format),this.maxDate=Sr(this.maxDate,i,this.format),this.$emit("pick",[this.minDate,this.maxDate],e)},adjustSpinners:function(){this.$refs.minSpinner.adjustSpinners(),this.$refs.maxSpinner.adjustSpinners()},changeSelectionRange:function(e){var t=this.showSeconds?[0,3,6,11,14,17]:[0,3,8,11],i=["hours","minutes"].concat(this.showSeconds?["seconds"]:[]),n=(t.indexOf(this.selectionRange[0])+e+t.length)%t.length,r=t.length/2;n<r?this.$refs.minSpinner.emitSelectRange(i[n]):this.$refs.maxSpinner.emitSelectRange(i[n-r])},isValidValue:function(e){return Array.isArray(e)&&Dr(this.minDate,this.$refs.minSpinner.selectableRange)&&Dr(this.maxDate,this.$refs.maxSpinner.selectableRange)},handleKeydown:function(e){var t=e.keyCode,i={38:-1,40:1,37:-1,39:1};if(37===t||39===t){var n=i[t];return this.changeSelectionRange(n),void e.preventDefault()}if(38===t||40===t){var r=i[t];return this.spinner.scrollDown(r),void e.preventDefault()}}}},Vs,[],!1,null,null,null);Ws.options.__file="packages/date-picker/src/panel/time-range.vue";var js=Ws.exports,qs={mixins:[Xr],name:"ElTimePicker",props:{isRange:Boolean,arrowControl:Boolean},data:function(){return{type:""}},watch:{isRange:function(e){this.picker?(this.unmountPicker(),this.type=e?"timerange":"time",this.panel=e?js:ns,this.mountPicker()):(this.type=e?"timerange":"time",this.panel=e?js:ns)}},created:function(){this.type=this.isRange?"timerange":"time",this.panel=this.isRange?js:ns},install:function(e){e.component(qs.name,qs)}},Ys=qs,Ks=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("span",[i("transition",{attrs:{name:e.transition},on:{"after-enter":e.handleAfterEnter,"after-leave":e.handleAfterLeave}},[i("div",{directives:[{name:"show",rawName:"v-show",value:!e.disabled&&e.showPopper,expression:"!disabled && showPopper"}],ref:"popper",staticClass:"el-popover el-popper",class:[e.popperClass,e.content&&"el-popover--plain"],style:{width:e.width+"px"},attrs:{role:"tooltip",id:e.tooltipId,"aria-hidden":e.disabled||!e.showPopper?"true":"false"}},[e.title?i("div",{staticClass:"el-popover__title",domProps:{textContent:e._s(e.title)}}):e._e(),e._t("default",[e._v(e._s(e.content))])],2)]),i("span",{ref:"wrapper",staticClass:"el-popover__reference-wrapper"},[e._t("reference")],2)],1)};Ks._withStripped=!0;var Gs=r({name:"ElPopover",mixins:[Oe],props:{trigger:{type:String,default:"click",validator:function(e){return["click","focus","hover","manual"].indexOf(e)>-1}},openDelay:{type:Number,default:0},closeDelay:{type:Number,default:200},title:String,disabled:Boolean,content:String,reference:{},popperClass:String,width:{},visibleArrow:{default:!0},arrowOffset:{type:Number,default:0},transition:{type:String,default:"fade-in-linear"},tabindex:{type:Number,default:0}},computed:{tooltipId:function(){return"el-popover-"+D()}},watch:{showPopper:function(e){this.disabled||(e?this.$emit("show"):this.$emit("hide"))}},mounted:function(){var e=this,t=this.referenceElm=this.reference||this.$refs.reference,i=this.popper||this.$refs.popper;!t&&this.$refs.wrapper.children&&(t=this.referenceElm=this.$refs.wrapper.children[0]),t&&(fe(t,"el-popover__reference"),t.setAttribute("aria-describedby",this.tooltipId),t.setAttribute("tabindex",this.tabindex),i.setAttribute("tabindex",0),"click"!==this.trigger&&(he(t,"focusin",function(){e.handleFocus();var i=t.__vue__;i&&"function"==typeof i.focus&&i.focus()}),he(i,"focusin",this.handleFocus),he(t,"focusout",this.handleBlur),he(i,"focusout",this.handleBlur)),he(t,"keydown",this.handleKeydown),he(t,"click",this.handleClick)),"click"===this.trigger?(he(t,"click",this.doToggle),he(document,"click",this.handleDocumentClick)):"hover"===this.trigger?(he(t,"mouseenter",this.handleMouseEnter),he(i,"mouseenter",this.handleMouseEnter),he(t,"mouseleave",this.handleMouseLeave),he(i,"mouseleave",this.handleMouseLeave)):"focus"===this.trigger&&(this.tabindex<0&&console.warn("[Element Warn][Popover]a negative taindex means that the element cannot be focused by tab key"),t.querySelector("input, textarea")?(he(t,"focusin",this.doShow),he(t,"focusout",this.doClose)):(he(t,"mousedown",this.doShow),he(t,"mouseup",this.doClose)))},beforeDestroy:function(){this.cleanup()},deactivated:function(){this.cleanup()},methods:{doToggle:function(){this.showPopper=!this.showPopper},doShow:function(){this.showPopper=!0},doClose:function(){this.showPopper=!1},handleFocus:function(){fe(this.referenceElm,"focusing"),"click"!==this.trigger&&"focus"!==this.trigger||(this.showPopper=!0)},handleClick:function(){me(this.referenceElm,"focusing")},handleBlur:function(){me(this.referenceElm,"focusing"),"click"!==this.trigger&&"focus"!==this.trigger||(this.showPopper=!1)},handleMouseEnter:function(){var e=this;clearTimeout(this._timer),this.openDelay?this._timer=setTimeout(function(){e.showPopper=!0},this.openDelay):this.showPopper=!0},handleKeydown:function(e){27===e.keyCode&&"manual"!==this.trigger&&this.doClose()},handleMouseLeave:function(){var e=this;clearTimeout(this._timer),this.closeDelay?this._timer=setTimeout(function(){e.showPopper=!1},this.closeDelay):this.showPopper=!1},handleDocumentClick:function(e){var t=this.reference||this.$refs.reference,i=this.popper||this.$refs.popper;!t&&this.$refs.wrapper.children&&(t=this.referenceElm=this.$refs.wrapper.children[0]),this.$el&&t&&!this.$el.contains(e.target)&&!t.contains(e.target)&&i&&!i.contains(e.target)&&(this.showPopper=!1)},handleAfterEnter:function(){this.$emit("after-enter")},handleAfterLeave:function(){this.$emit("after-leave"),this.doDestroy()},cleanup:function(){(this.openDelay||this.closeDelay)&&clearTimeout(this._timer)}},destroyed:function(){var e=this.reference;de(e,"click",this.doToggle),de(e,"mouseup",this.doClose),de(e,"mousedown",this.doShow),de(e,"focusin",this.doShow),de(e,"focusout",this.doClose),de(e,"mousedown",this.doShow),de(e,"mouseup",this.doClose),de(e,"mouseleave",this.handleMouseLeave),de(e,"mouseenter",this.handleMouseEnter),de(document,"click",this.handleDocumentClick)}},Ks,[],!1,null,null,null);Gs.options.__file="packages/popover/src/main.vue";var Us=Gs.exports,Xs=function(e,t,i){var n=t.expression?t.value:t.arg,r=i.context.$refs[n];r&&(Array.isArray(r)?r[0].$refs.reference=e:r.$refs.reference=e)},Js={bind:function(e,t,i){Xs(e,t,i)},inserted:function(e,t,i){Xs(e,t,i)}};h.a.directive("popover",Js),Us.install=function(e){e.directive("popover",Js),e.component(Us.name,Us)},Us.directive=Js;var Zs=Us,Qs=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"msgbox-fade"}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-message-box__wrapper",attrs:{tabindex:"-1",role:"dialog","aria-modal":"true","aria-label":e.title||"dialog"},on:{click:function(t){return t.target!==t.currentTarget?null:e.handleWrapperClick(t)}}},[i("div",{staticClass:"el-message-box",class:[e.customClass,e.center&&"el-message-box--center"]},[null!==e.title?i("div",{staticClass:"el-message-box__header"},[i("div",{staticClass:"el-message-box__title"},[e.icon&&e.center?i("div",{class:["el-message-box__status",e.icon]}):e._e(),i("span",[e._v(e._s(e.title))])]),e.showClose?i("button",{staticClass:"el-message-box__headerbtn",attrs:{type:"button","aria-label":"Close"},on:{click:function(t){e.handleAction(e.distinguishCancelAndClose?"close":"cancel")},keydown:function(t){if(!("button"in t)&&e._k(t.keyCode,"enter",13,t.key,"Enter"))return null;e.handleAction(e.distinguishCancelAndClose?"close":"cancel")}}},[i("i",{staticClass:"el-message-box__close el-icon-close"})]):e._e()]):e._e(),i("div",{staticClass:"el-message-box__content"},[i("div",{staticClass:"el-message-box__container"},[e.icon&&!e.center&&""!==e.message?i("div",{class:["el-message-box__status",e.icon]}):e._e(),""!==e.message?i("div",{staticClass:"el-message-box__message"},[e._t("default",[e.dangerouslyUseHTMLString?i("p",{domProps:{innerHTML:e._s(e.message)}}):i("p",[e._v(e._s(e.message))])])],2):e._e()]),i("div",{directives:[{name:"show",rawName:"v-show",value:e.showInput,expression:"showInput"}],staticClass:"el-message-box__input"},[i("el-input",{ref:"input",attrs:{type:e.inputType,placeholder:e.inputPlaceholder},nativeOn:{keydown:function(t){return"button"in t||!e._k(t.keyCode,"enter",13,t.key,"Enter")?e.handleInputEnter(t):null}},model:{value:e.inputValue,callback:function(t){e.inputValue=t},expression:"inputValue"}}),i("div",{staticClass:"el-message-box__errormsg",style:{visibility:e.editorErrorMessage?"visible":"hidden"}},[e._v(e._s(e.editorErrorMessage))])],1)]),i("div",{staticClass:"el-message-box__btns"},[e.showCancelButton?i("el-button",{class:[e.cancelButtonClasses],attrs:{loading:e.cancelButtonLoading,round:e.roundButton,size:"small"},on:{keydown:function(t){if(!("button"in t)&&e._k(t.keyCode,"enter",13,t.key,"Enter"))return null;e.handleAction("cancel")}},nativeOn:{click:function(t){e.handleAction("cancel")}}},[e._v("\n          "+e._s(e.cancelButtonText||e.t("el.messagebox.cancel"))+"\n        ")]):e._e(),i("el-button",{directives:[{name:"show",rawName:"v-show",value:e.showConfirmButton,expression:"showConfirmButton"}],ref:"confirm",class:[e.confirmButtonClasses],attrs:{loading:e.confirmButtonLoading,round:e.roundButton,size:"small"},on:{keydown:function(t){if(!("button"in t)&&e._k(t.keyCode,"enter",13,t.key,"Enter"))return null;e.handleAction("confirm")}},nativeOn:{click:function(t){e.handleAction("confirm")}}},[e._v("\n          "+e._s(e.confirmButtonText||e.t("el.messagebox.confirm"))+"\n        ")])],1)])])])};Qs._withStripped=!0;var ea,ta="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},ia=ia||{};ia.Dialog=function(e,t,i){var n=this;if(this.dialogNode=e,null===this.dialogNode||"dialog"!==this.dialogNode.getAttribute("role"))throw new Error("Dialog() requires a DOM element with ARIA role of dialog.");"string"==typeof t?this.focusAfterClosed=document.getElementById(t):"object"===(void 0===t?"undefined":ta(t))?this.focusAfterClosed=t:this.focusAfterClosed=null,"string"==typeof i?this.focusFirst=document.getElementById(i):"object"===(void 0===i?"undefined":ta(i))?this.focusFirst=i:this.focusFirst=null,this.focusFirst?this.focusFirst.focus():qt.focusFirstDescendant(this.dialogNode),this.lastFocus=document.activeElement,ea=function(e){n.trapFocus(e)},this.addListeners()},ia.Dialog.prototype.addListeners=function(){document.addEventListener("focus",ea,!0)},ia.Dialog.prototype.removeListeners=function(){document.removeEventListener("focus",ea,!0)},ia.Dialog.prototype.closeDialog=function(){var e=this;this.removeListeners(),this.focusAfterClosed&&setTimeout(function(){e.focusAfterClosed.focus()})},ia.Dialog.prototype.trapFocus=function(e){qt.IgnoreUtilFocusChanges||(this.dialogNode.contains(e.target)?this.lastFocus=e.target:(qt.focusFirstDescendant(this.dialogNode),this.lastFocus===document.activeElement&&qt.focusLastDescendant(this.dialogNode),this.lastFocus=document.activeElement))};var na=ia.Dialog,ra=void 0,sa={success:"success",info:"info",warning:"warning",error:"error"},aa=r({mixins:[Me,q],props:{modal:{default:!0},lockScroll:{default:!0},showClose:{type:Boolean,default:!0},closeOnClickModal:{default:!0},closeOnPressEscape:{default:!0},closeOnHashChange:{default:!0},center:{default:!1,type:Boolean},roundButton:{default:!1,type:Boolean}},components:{ElInput:ne,ElButton:Et},computed:{icon:function(){var e=this.type;return this.iconClass||(e&&sa[e]?"el-icon-"+sa[e]:"")},confirmButtonClasses:function(){return"el-button--primary "+this.confirmButtonClass},cancelButtonClasses:function(){return""+this.cancelButtonClass}},methods:{getSafeClose:function(){var e=this,t=this.uid;return function(){e.$nextTick(function(){t===e.uid&&e.doClose()})}},doClose:function(){var e=this;this.visible&&(this.visible=!1,this._closing=!0,this.onClose&&this.onClose(),ra.closeDialog(),this.lockScroll&&setTimeout(this.restoreBodyStyle,200),this.opened=!1,this.doAfterClose(),setTimeout(function(){e.action&&e.callback(e.action,e)}))},handleWrapperClick:function(){this.closeOnClickModal&&this.handleAction(this.distinguishCancelAndClose?"close":"cancel")},handleInputEnter:function(){if("textarea"!==this.inputType)return this.handleAction("confirm")},handleAction:function(e){("prompt"!==this.$type||"confirm"!==e||this.validate())&&(this.action=e,"function"==typeof this.beforeClose?(this.close=this.getSafeClose(),this.beforeClose(e,this,this.close)):this.doClose())},validate:function(){if("prompt"===this.$type){var e=this.inputPattern;if(e&&!e.test(this.inputValue||""))return this.editorErrorMessage=this.inputErrorMessage||W("el.messagebox.error"),fe(this.getInputElement(),"invalid"),!1;var t=this.inputValidator;if("function"==typeof t){var i=t(this.inputValue);if(!1===i)return this.editorErrorMessage=this.inputErrorMessage||W("el.messagebox.error"),fe(this.getInputElement(),"invalid"),!1;if("string"==typeof i)return this.editorErrorMessage=i,fe(this.getInputElement(),"invalid"),!1}}return this.editorErrorMessage="",me(this.getInputElement(),"invalid"),!0},getFirstFocus:function(){var e=this.$el.querySelector(".el-message-box__btns .el-button"),t=this.$el.querySelector(".el-message-box__btns .el-message-box__title");return e||t},getInputElement:function(){var e=this.$refs.input.$refs;return e.input||e.textarea},handleClose:function(){this.handleAction("close")}},watch:{inputValue:{immediate:!0,handler:function(e){var t=this;this.$nextTick(function(i){"prompt"===t.$type&&null!==e&&t.validate()})}},visible:function(e){var t=this;e&&(this.uid++,"alert"!==this.$type&&"confirm"!==this.$type||this.$nextTick(function(){t.$refs.confirm.$el.focus()}),this.focusAfterClosed=document.activeElement,ra=new na(this.$el,this.focusAfterClosed,this.getFirstFocus())),"prompt"===this.$type&&(e?setTimeout(function(){t.$refs.input&&t.$refs.input.$el&&t.getInputElement().focus()},500):(this.editorErrorMessage="",me(this.getInputElement(),"invalid")))}},mounted:function(){var e=this;this.$nextTick(function(){e.closeOnHashChange&&window.addEventListener("hashchange",e.close)})},beforeDestroy:function(){this.closeOnHashChange&&window.removeEventListener("hashchange",this.close),setTimeout(function(){ra.closeDialog()})},data:function(){return{uid:1,title:void 0,message:"",type:"",iconClass:"",customClass:"",showInput:!1,inputValue:null,inputPlaceholder:"",inputType:"text",inputPattern:null,inputValidator:null,inputErrorMessage:"",showConfirmButton:!0,showCancelButton:!1,action:"",confirmButtonText:"",cancelButtonText:"",confirmButtonLoading:!1,cancelButtonLoading:!1,confirmButtonClass:"",confirmButtonDisabled:!1,cancelButtonClass:"",editorErrorMessage:null,callback:null,dangerouslyUseHTMLString:!1,focusAfterClosed:null,isOnComposition:!1,distinguishCancelAndClose:!1}}},Qs,[],!1,null,null,null);aa.options.__file="packages/message-box/src/main.vue";var oa=aa.exports,la="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};function ua(e){return null!==e&&"object"===(void 0===e?"undefined":la(e))&&x(e,"componentOptions")}var ca="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},ha={title:null,message:"",type:"",iconClass:"",showInput:!1,showClose:!0,modalFade:!0,lockScroll:!0,closeOnClickModal:!0,closeOnPressEscape:!0,closeOnHashChange:!0,inputValue:null,inputPlaceholder:"",inputType:"text",inputPattern:null,inputValidator:null,inputErrorMessage:"",showConfirmButton:!0,showCancelButton:!1,confirmButtonPosition:"right",confirmButtonHighlight:!1,cancelButtonHighlight:!1,confirmButtonText:"",cancelButtonText:"",confirmButtonClass:"",cancelButtonClass:"",customClass:"",beforeClose:null,dangerouslyUseHTMLString:!1,center:!1,roundButton:!1,distinguishCancelAndClose:!1},da=h.a.extend(oa),pa=void 0,fa=void 0,ma=[],va=function(e){if(pa){var t=pa.callback;"function"==typeof t&&(fa.showInput?t(fa.inputValue,e):t(e)),pa.resolve&&("confirm"===e?fa.showInput?pa.resolve({value:fa.inputValue,action:e}):pa.resolve(e):!pa.reject||"cancel"!==e&&"close"!==e||pa.reject(e))}},ga=function e(){if(fa||((fa=new da({el:document.createElement("div")})).callback=va),fa.action="",(!fa.visible||fa.closeTimer)&&ma.length>0){var t=(pa=ma.shift()).options;for(var i in t)t.hasOwnProperty(i)&&(fa[i]=t[i]);void 0===t.callback&&(fa.callback=va);var n=fa.callback;fa.callback=function(t,i){n(t,i),e()},ua(fa.message)?(fa.$slots.default=[fa.message],fa.message=null):delete fa.$slots.default,["modal","showClose","closeOnClickModal","closeOnPressEscape","closeOnHashChange"].forEach(function(e){void 0===fa[e]&&(fa[e]=!0)}),document.body.appendChild(fa.$el),h.a.nextTick(function(){fa.visible=!0})}},ba=function e(t,i){if(!h.a.prototype.$isServer){if("string"==typeof t||ua(t)?(t={message:t},"string"==typeof arguments[1]&&(t.title=arguments[1])):t.callback&&!i&&(i=t.callback),"undefined"!=typeof Promise)return new Promise(function(n,r){ma.push({options:Z({},ha,e.defaults,t),callback:i,resolve:n,reject:r}),ga()});ma.push({options:Z({},ha,e.defaults,t),callback:i}),ga()}};ba.setDefaults=function(e){ba.defaults=e},ba.alert=function(e,t,i){return"object"===(void 0===t?"undefined":ca(t))?(i=t,t=""):void 0===t&&(t=""),ba(Z({title:t,message:e,$type:"alert",closeOnPressEscape:!1,closeOnClickModal:!1},i))},ba.confirm=function(e,t,i){return"object"===(void 0===t?"undefined":ca(t))?(i=t,t=""):void 0===t&&(t=""),ba(Z({title:t,message:e,$type:"confirm",showCancelButton:!0},i))},ba.prompt=function(e,t,i){return"object"===(void 0===t?"undefined":ca(t))?(i=t,t=""):void 0===t&&(t=""),ba(Z({title:t,message:e,showCancelButton:!0,showInput:!0,$type:"prompt"},i))},ba.close=function(){fa.doClose(),fa.visible=!1,ma=[],pa=null};var ya=ba,wa=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-breadcrumb",attrs:{"aria-label":"Breadcrumb",role:"navigation"}},[this._t("default")],2)};wa._withStripped=!0;var _a=r({name:"ElBreadcrumb",props:{separator:{type:String,default:"/"},separatorClass:{type:String,default:""}},provide:function(){return{elBreadcrumb:this}},mounted:function(){var e=this.$el.querySelectorAll(".el-breadcrumb__item");e.length&&e[e.length-1].setAttribute("aria-current","page")}},wa,[],!1,null,null,null);_a.options.__file="packages/breadcrumb/src/breadcrumb.vue";var xa=_a.exports;xa.install=function(e){e.component(xa.name,xa)};var Ca=xa,ka=function(){var e=this.$createElement,t=this._self._c||e;return t("span",{staticClass:"el-breadcrumb__item"},[t("span",{ref:"link",class:["el-breadcrumb__inner",this.to?"is-link":""],attrs:{role:"link"}},[this._t("default")],2),this.separatorClass?t("i",{staticClass:"el-breadcrumb__separator",class:this.separatorClass}):t("span",{staticClass:"el-breadcrumb__separator",attrs:{role:"presentation"}},[this._v(this._s(this.separator))])])};ka._withStripped=!0;var Sa=r({name:"ElBreadcrumbItem",props:{to:{},replace:Boolean},data:function(){return{separator:"",separatorClass:""}},inject:["elBreadcrumb"],mounted:function(){var e=this;this.separator=this.elBreadcrumb.separator,this.separatorClass=this.elBreadcrumb.separatorClass;var t=this.$refs.link;t.setAttribute("role","link"),t.addEventListener("click",function(t){var i=e.to,n=e.$router;i&&n&&(e.replace?n.replace(i):n.push(i))})}},ka,[],!1,null,null,null);Sa.options.__file="packages/breadcrumb/src/breadcrumb-item.vue";var Da=Sa.exports;Da.install=function(e){e.component(Da.name,Da)};var $a=Da,Ea=function(){var e=this.$createElement;return(this._self._c||e)("form",{staticClass:"el-form",class:[this.labelPosition?"el-form--label-"+this.labelPosition:"",{"el-form--inline":this.inline}]},[this._t("default")],2)};Ea._withStripped=!0;var Ta=r({name:"ElForm",componentName:"ElForm",provide:function(){return{elForm:this}},props:{model:Object,rules:Object,labelPosition:String,labelWidth:String,labelSuffix:{type:String,default:""},inline:Boolean,inlineMessage:Boolean,statusIcon:Boolean,showMessage:{type:Boolean,default:!0},size:String,disabled:Boolean,validateOnRuleChange:{type:Boolean,default:!0},hideRequiredAsterisk:{type:Boolean,default:!1}},watch:{rules:function(){this.fields.forEach(function(e){e.removeValidateEvents(),e.addValidateEvents()}),this.validateOnRuleChange&&this.validate(function(){})}},computed:{autoLabelWidth:function(){if(!this.potentialLabelWidthArr.length)return 0;var e=Math.max.apply(Math,this.potentialLabelWidthArr);return e?e+"px":""}},data:function(){return{fields:[],potentialLabelWidthArr:[]}},created:function(){var e=this;this.$on("el.form.addField",function(t){t&&e.fields.push(t)}),this.$on("el.form.removeField",function(t){t.prop&&e.fields.splice(e.fields.indexOf(t),1)})},methods:{resetFields:function(){this.model?this.fields.forEach(function(e){e.resetField()}):console.warn("[Element Warn][Form]model is required for resetFields to work.")},clearValidate:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];(e.length?"string"==typeof e?this.fields.filter(function(t){return e===t.prop}):this.fields.filter(function(t){return e.indexOf(t.prop)>-1}):this.fields).forEach(function(e){e.clearValidate()})},validate:function(e){var t=this;if(this.model){var i=void 0;"function"!=typeof e&&window.Promise&&(i=new window.Promise(function(t,i){e=function(e){e?t(e):i(e)}}));var n=!0,r=0;0===this.fields.length&&e&&e(!0);var s={};return this.fields.forEach(function(i){i.validate("",function(i,a){i&&(n=!1),s=Z({},s,a),"function"==typeof e&&++r===t.fields.length&&e(n,s)})}),i||void 0}console.warn("[Element Warn][Form]model is required for validate to work!")},validateField:function(e,t){e=[].concat(e);var i=this.fields.filter(function(t){return-1!==e.indexOf(t.prop)});i.length?i.forEach(function(e){e.validate("",t)}):console.warn("[Element Warn]please pass correct props!")},getLabelWidthIndex:function(e){var t=this.potentialLabelWidthArr.indexOf(e);if(-1===t)throw new Error("[ElementForm]unpected width ",e);return t},registerLabelWidth:function(e,t){if(e&&t){var i=this.getLabelWidthIndex(t);this.potentialLabelWidthArr.splice(i,1,e)}else e&&this.potentialLabelWidthArr.push(e)},deregisterLabelWidth:function(e){var t=this.getLabelWidthIndex(e);this.potentialLabelWidthArr.splice(t,1)}}},Ea,[],!1,null,null,null);Ta.options.__file="packages/form/src/form.vue";var Ma=Ta.exports;Ma.install=function(e){e.component(Ma.name,Ma)};var Na=Ma,Pa=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-form-item",class:[{"el-form-item--feedback":e.elForm&&e.elForm.statusIcon,"is-error":"error"===e.validateState,"is-validating":"validating"===e.validateState,"is-success":"success"===e.validateState,"is-required":e.isRequired||e.required,"is-no-asterisk":e.elForm&&e.elForm.hideRequiredAsterisk},e.sizeClass?"el-form-item--"+e.sizeClass:""]},[i("label-wrap",{attrs:{"is-auto-width":e.labelStyle&&"auto"===e.labelStyle.width,"update-all":"auto"===e.form.labelWidth}},[e.label||e.$slots.label?i("label",{staticClass:"el-form-item__label",style:e.labelStyle,attrs:{for:e.labelFor}},[e._t("label",[e._v(e._s(e.label+e.form.labelSuffix))])],2):e._e()]),i("div",{staticClass:"el-form-item__content",style:e.contentStyle},[e._t("default"),i("transition",{attrs:{name:"el-zoom-in-top"}},["error"===e.validateState&&e.showMessage&&e.form.showMessage?e._t("error",[i("div",{staticClass:"el-form-item__error",class:{"el-form-item__error--inline":"boolean"==typeof e.inlineMessage?e.inlineMessage:e.elForm&&e.elForm.inlineMessage||!1}},[e._v("\n          "+e._s(e.validateMessage)+"\n        ")])],{error:e.validateMessage}):e._e()],2)],2)],1)};Pa._withStripped=!0;var Oa=i(8),Ia=i.n(Oa),Aa=i(3),Fa=i.n(Aa),La=/%[sdj%]/g,Va=function(){};function Ba(){for(var e=arguments.length,t=Array(e),i=0;i<e;i++)t[i]=arguments[i];var n=1,r=t[0],s=t.length;if("function"==typeof r)return r.apply(null,t.slice(1));if("string"==typeof r){for(var a=String(r).replace(La,function(e){if("%%"===e)return"%";if(n>=s)return e;switch(e){case"%s":return String(t[n++]);case"%d":return Number(t[n++]);case"%j":try{return JSON.stringify(t[n++])}catch(e){return"[Circular]"}break;default:return e}}),o=t[n];n<s;o=t[++n])a+=" "+o;return a}return r}function za(e,t){return null==e||(!("array"!==t||!Array.isArray(e)||e.length)||!(!function(e){return"string"===e||"url"===e||"hex"===e||"email"===e||"pattern"===e}(t)||"string"!=typeof e||e))}function Ha(e,t,i){var n=0,r=e.length;!function s(a){if(a&&a.length)i(a);else{var o=n;n+=1,o<r?t(e[o],s):i([])}}([])}function Ra(e,t,i,n){if(t.first)return Ha(function(e){var t=[];return Object.keys(e).forEach(function(i){t.push.apply(t,e[i])}),t}(e),i,n);var r=t.firstFields||[];!0===r&&(r=Object.keys(e));var s=Object.keys(e),a=s.length,o=0,l=[],u=function(e){l.push.apply(l,e),++o===a&&n(l)};s.forEach(function(t){var n=e[t];-1!==r.indexOf(t)?Ha(n,i,u):function(e,t,i){var n=[],r=0,s=e.length;function a(e){n.push.apply(n,e),++r===s&&i(n)}e.forEach(function(e){t(e,a)})}(n,i,u)})}function Wa(e){return function(t){return t&&t.message?(t.field=t.field||e.fullField,t):{message:t,field:t.field||e.fullField}}}function ja(e,t){if(t)for(var i in t)if(t.hasOwnProperty(i)){var n=t[i];"object"===(void 0===n?"undefined":Fa()(n))&&"object"===Fa()(e[i])?e[i]=Ia()({},e[i],n):e[i]=n}return e}var qa=function(e,t,i,n,r,s){!e.required||i.hasOwnProperty(e.field)&&!za(t,s||e.type)||n.push(Ba(r.messages.required,e.fullField))};var Ya=function(e,t,i,n,r){(/^\s+$/.test(t)||""===t)&&n.push(Ba(r.messages.whitespace,e.fullField))},Ka={email:/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,url:new RegExp("^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$","i"),hex:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i},Ga={integer:function(e){return Ga.number(e)&&parseInt(e,10)===e},float:function(e){return Ga.number(e)&&!Ga.integer(e)},array:function(e){return Array.isArray(e)},regexp:function(e){if(e instanceof RegExp)return!0;try{return!!new RegExp(e)}catch(e){return!1}},date:function(e){return"function"==typeof e.getTime&&"function"==typeof e.getMonth&&"function"==typeof e.getYear},number:function(e){return!isNaN(e)&&"number"==typeof e},object:function(e){return"object"===(void 0===e?"undefined":Fa()(e))&&!Ga.array(e)},method:function(e){return"function"==typeof e},email:function(e){return"string"==typeof e&&!!e.match(Ka.email)&&e.length<255},url:function(e){return"string"==typeof e&&!!e.match(Ka.url)},hex:function(e){return"string"==typeof e&&!!e.match(Ka.hex)}};var Ua=function(e,t,i,n,r){if(e.required&&void 0===t)qa(e,t,i,n,r);else{var s=e.type;["integer","float","array","regexp","object","method","email","number","date","url","hex"].indexOf(s)>-1?Ga[s](t)||n.push(Ba(r.messages.types[s],e.fullField,e.type)):s&&(void 0===t?"undefined":Fa()(t))!==e.type&&n.push(Ba(r.messages.types[s],e.fullField,e.type))}};var Xa="enum";var Ja={required:qa,whitespace:Ya,type:Ua,range:function(e,t,i,n,r){var s="number"==typeof e.len,a="number"==typeof e.min,o="number"==typeof e.max,l=t,u=null,c="number"==typeof t,h="string"==typeof t,d=Array.isArray(t);if(c?u="number":h?u="string":d&&(u="array"),!u)return!1;d&&(l=t.length),h&&(l=t.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"_").length),s?l!==e.len&&n.push(Ba(r.messages[u].len,e.fullField,e.len)):a&&!o&&l<e.min?n.push(Ba(r.messages[u].min,e.fullField,e.min)):o&&!a&&l>e.max?n.push(Ba(r.messages[u].max,e.fullField,e.max)):a&&o&&(l<e.min||l>e.max)&&n.push(Ba(r.messages[u].range,e.fullField,e.min,e.max))},enum:function(e,t,i,n,r){e[Xa]=Array.isArray(e[Xa])?e[Xa]:[],-1===e[Xa].indexOf(t)&&n.push(Ba(r.messages[Xa],e.fullField,e[Xa].join(", ")))},pattern:function(e,t,i,n,r){e.pattern&&(e.pattern instanceof RegExp?(e.pattern.lastIndex=0,e.pattern.test(t)||n.push(Ba(r.messages.pattern.mismatch,e.fullField,t,e.pattern))):"string"==typeof e.pattern&&(new RegExp(e.pattern).test(t)||n.push(Ba(r.messages.pattern.mismatch,e.fullField,t,e.pattern))))}};var Za="enum";var Qa=function(e,t,i,n,r){var s=e.type,a=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(za(t,s)&&!e.required)return i();Ja.required(e,t,n,a,r,s),za(t,s)||Ja.type(e,t,n,a,r)}i(a)},eo={string:function(e,t,i,n,r){var s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(za(t,"string")&&!e.required)return i();Ja.required(e,t,n,s,r,"string"),za(t,"string")||(Ja.type(e,t,n,s,r),Ja.range(e,t,n,s,r),Ja.pattern(e,t,n,s,r),!0===e.whitespace&&Ja.whitespace(e,t,n,s,r))}i(s)},method:function(e,t,i,n,r){var s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(za(t)&&!e.required)return i();Ja.required(e,t,n,s,r),void 0!==t&&Ja.type(e,t,n,s,r)}i(s)},number:function(e,t,i,n,r){var s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(za(t)&&!e.required)return i();Ja.required(e,t,n,s,r),void 0!==t&&(Ja.type(e,t,n,s,r),Ja.range(e,t,n,s,r))}i(s)},boolean:function(e,t,i,n,r){var s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(za(t)&&!e.required)return i();Ja.required(e,t,n,s,r),void 0!==t&&Ja.type(e,t,n,s,r)}i(s)},regexp:function(e,t,i,n,r){var s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(za(t)&&!e.required)return i();Ja.required(e,t,n,s,r),za(t)||Ja.type(e,t,n,s,r)}i(s)},integer:function(e,t,i,n,r){var s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(za(t)&&!e.required)return i();Ja.required(e,t,n,s,r),void 0!==t&&(Ja.type(e,t,n,s,r),Ja.range(e,t,n,s,r))}i(s)},float:function(e,t,i,n,r){var s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(za(t)&&!e.required)return i();Ja.required(e,t,n,s,r),void 0!==t&&(Ja.type(e,t,n,s,r),Ja.range(e,t,n,s,r))}i(s)},array:function(e,t,i,n,r){var s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(za(t,"array")&&!e.required)return i();Ja.required(e,t,n,s,r,"array"),za(t,"array")||(Ja.type(e,t,n,s,r),Ja.range(e,t,n,s,r))}i(s)},object:function(e,t,i,n,r){var s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(za(t)&&!e.required)return i();Ja.required(e,t,n,s,r),void 0!==t&&Ja.type(e,t,n,s,r)}i(s)},enum:function(e,t,i,n,r){var s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(za(t)&&!e.required)return i();Ja.required(e,t,n,s,r),t&&Ja[Za](e,t,n,s,r)}i(s)},pattern:function(e,t,i,n,r){var s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(za(t,"string")&&!e.required)return i();Ja.required(e,t,n,s,r),za(t,"string")||Ja.pattern(e,t,n,s,r)}i(s)},date:function(e,t,i,n,r){var s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(za(t)&&!e.required)return i();if(Ja.required(e,t,n,s,r),!za(t)){var a=void 0;a="number"==typeof t?new Date(t):t,Ja.type(e,a,n,s,r),a&&Ja.range(e,a.getTime(),n,s,r)}}i(s)},url:Qa,hex:Qa,email:Qa,required:function(e,t,i,n,r){var s=[],a=Array.isArray(t)?"array":void 0===t?"undefined":Fa()(t);Ja.required(e,t,n,s,r,a),i(s)}};function to(){return{default:"Validation error on field %s",required:"%s is required",enum:"%s must be one of %s",whitespace:"%s cannot be empty",date:{format:"%s date %s is invalid for format %s",parse:"%s date could not be parsed, %s is invalid ",invalid:"%s date %s is invalid"},types:{string:"%s is not a %s",method:"%s is not a %s (function)",array:"%s is not an %s",object:"%s is not an %s",number:"%s is not a %s",date:"%s is not a %s",boolean:"%s is not a %s",integer:"%s is not an %s",float:"%s is not a %s",regexp:"%s is not a valid %s",email:"%s is not a valid %s",url:"%s is not a valid %s",hex:"%s is not a valid %s"},string:{len:"%s must be exactly %s characters",min:"%s must be at least %s characters",max:"%s cannot be longer than %s characters",range:"%s must be between %s and %s characters"},number:{len:"%s must equal %s",min:"%s cannot be less than %s",max:"%s cannot be greater than %s",range:"%s must be between %s and %s"},array:{len:"%s must be exactly %s in length",min:"%s cannot be less than %s in length",max:"%s cannot be greater than %s in length",range:"%s must be between %s and %s in length"},pattern:{mismatch:"%s value %s does not match pattern %s"},clone:function(){var e=JSON.parse(JSON.stringify(this));return e.clone=this.clone,e}}}var io=to();function no(e){this.rules=null,this._messages=io,this.define(e)}no.prototype={messages:function(e){return e&&(this._messages=ja(to(),e)),this._messages},define:function(e){if(!e)throw new Error("Cannot configure a schema with no rules");if("object"!==(void 0===e?"undefined":Fa()(e))||Array.isArray(e))throw new Error("Rules must be an object");this.rules={};var t=void 0,i=void 0;for(t in e)e.hasOwnProperty(t)&&(i=e[t],this.rules[t]=Array.isArray(i)?i:[i])},validate:function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments[2],r=e,s=i,a=n;if("function"==typeof s&&(a=s,s={}),this.rules&&0!==Object.keys(this.rules).length){if(s.messages){var o=this.messages();o===io&&(o=to()),ja(o,s.messages),s.messages=o}else s.messages=this.messages();var l=void 0,u=void 0,c={};(s.keys||Object.keys(this.rules)).forEach(function(i){l=t.rules[i],u=r[i],l.forEach(function(n){var s=n;"function"==typeof s.transform&&(r===e&&(r=Ia()({},r)),u=r[i]=s.transform(u)),(s="function"==typeof s?{validator:s}:Ia()({},s)).validator=t.getValidationMethod(s),s.field=i,s.fullField=s.fullField||i,s.type=t.getType(s),s.validator&&(c[i]=c[i]||[],c[i].push({rule:s,value:u,source:r,field:i}))})});var h={};Ra(c,s,function(e,t){var i=e.rule,n=!("object"!==i.type&&"array"!==i.type||"object"!==Fa()(i.fields)&&"object"!==Fa()(i.defaultField));function r(e,t){return Ia()({},t,{fullField:i.fullField+"."+e})}function a(){var a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(Array.isArray(a)||(a=[a]),a.length&&Va("async-validator:",a),a.length&&i.message&&(a=[].concat(i.message)),a=a.map(Wa(i)),s.first&&a.length)return h[i.field]=1,t(a);if(n){if(i.required&&!e.value)return a=i.message?[].concat(i.message).map(Wa(i)):s.error?[s.error(i,Ba(s.messages.required,i.field))]:[],t(a);var o={};if(i.defaultField)for(var l in e.value)e.value.hasOwnProperty(l)&&(o[l]=i.defaultField);for(var u in o=Ia()({},o,e.rule.fields))if(o.hasOwnProperty(u)){var c=Array.isArray(o[u])?o[u]:[o[u]];o[u]=c.map(r.bind(null,u))}var d=new no(o);d.messages(s.messages),e.rule.options&&(e.rule.options.messages=s.messages,e.rule.options.error=s.error),d.validate(e.value,e.rule.options||s,function(e){t(e&&e.length?a.concat(e):e)})}else t(a)}n=n&&(i.required||!i.required&&e.value),i.field=e.field;var o=i.validator(i,e.value,a,e.source,s);o&&o.then&&o.then(function(){return a()},function(e){return a(e)})},function(e){!function(e){var t,i=void 0,n=void 0,r=[],s={};for(i=0;i<e.length;i++)t=e[i],Array.isArray(t)?r=r.concat.apply(r,t):r.push(t);if(r.length)for(i=0;i<r.length;i++)s[n=r[i].field]=s[n]||[],s[n].push(r[i]);else r=null,s=null;a(r,s)}(e)})}else a&&a()},getType:function(e){if(void 0===e.type&&e.pattern instanceof RegExp&&(e.type="pattern"),"function"!=typeof e.validator&&e.type&&!eo.hasOwnProperty(e.type))throw new Error(Ba("Unknown rule type %s",e.type));return e.type||"string"},getValidationMethod:function(e){if("function"==typeof e.validator)return e.validator;var t=Object.keys(e),i=t.indexOf("message");return-1!==i&&t.splice(i,1),1===t.length&&"required"===t[0]?eo.required:eo[this.getType(e)]||!1}},no.register=function(e,t){if("function"!=typeof t)throw new Error("Cannot register a validator by type, validator is not a function");eo[e]=t},no.messages=io;var ro=no,so=r({props:{isAutoWidth:Boolean,updateAll:Boolean},inject:["elForm","elFormItem"],render:function(){var e=arguments[0],t=this.$slots.default;if(!t)return null;if(this.isAutoWidth){var i=this.elForm.autoLabelWidth,n={};if(i&&"auto"!==i){var r=parseInt(i,10)-this.computedWidth;r&&(n.marginLeft=r+"px")}return e("div",{class:"el-form-item__label-wrap",style:n},[t])}return t[0]},methods:{getLabelWidth:function(){if(this.$el&&this.$el.firstElementChild){var e=window.getComputedStyle(this.$el.firstElementChild).width;return Math.ceil(parseFloat(e))}return 0},updateLabelWidth:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"update";this.$slots.default&&this.isAutoWidth&&this.$el.firstElementChild&&("update"===e?this.computedWidth=this.getLabelWidth():"remove"===e&&this.elForm.deregisterLabelWidth(this.computedWidth))}},watch:{computedWidth:function(e,t){this.updateAll&&(this.elForm.registerLabelWidth(e,t),this.elFormItem.updateComputedLabelWidth(e))}},data:function(){return{computedWidth:0}},mounted:function(){this.updateLabelWidth("update")},updated:function(){this.updateLabelWidth("update")},beforeDestroy:function(){this.updateLabelWidth("remove")}},void 0,void 0,!1,null,null,null);so.options.__file="packages/form/src/label-wrap.vue";var ao=so.exports,oo=r({name:"ElFormItem",componentName:"ElFormItem",mixins:[l],provide:function(){return{elFormItem:this}},inject:["elForm"],props:{label:String,labelWidth:String,prop:String,required:{type:Boolean,default:void 0},rules:[Object,Array],error:String,validateStatus:String,for:String,inlineMessage:{type:[String,Boolean],default:""},showMessage:{type:Boolean,default:!0},size:String},components:{LabelWrap:ao},watch:{error:{immediate:!0,handler:function(e){this.validateMessage=e,this.validateState=e?"error":""}},validateStatus:function(e){this.validateState=e}},computed:{labelFor:function(){return this.for||this.prop},labelStyle:function(){var e={};if("top"===this.form.labelPosition)return e;var t=this.labelWidth||this.form.labelWidth;return t&&(e.width=t),e},contentStyle:function(){var e={},t=this.label;if("top"===this.form.labelPosition||this.form.inline)return e;if(!t&&!this.labelWidth&&this.isNested)return e;var i=this.labelWidth||this.form.labelWidth;return"auto"===i?"auto"===this.labelWidth?e.marginLeft=this.computedLabelWidth:"auto"===this.form.labelWidth&&(e.marginLeft=this.elForm.autoLabelWidth):e.marginLeft=i,e},form:function(){for(var e=this.$parent,t=e.$options.componentName;"ElForm"!==t;)"ElFormItem"===t&&(this.isNested=!0),t=(e=e.$parent).$options.componentName;return e},fieldValue:function(){var e=this.form.model;if(e&&this.prop){var t=this.prop;return-1!==t.indexOf(":")&&(t=t.replace(/:/,".")),S(e,t,!0).v}},isRequired:function(){var e=this.getRules(),t=!1;return e&&e.length&&e.every(function(e){return!e.required||(t=!0,!1)}),t},_formSize:function(){return this.elForm.size},elFormItemSize:function(){return this.size||this._formSize},sizeClass:function(){return this.elFormItemSize||(this.$ELEMENT||{}).size}},data:function(){return{validateState:"",validateMessage:"",validateDisabled:!1,validator:{},isNested:!1,computedLabelWidth:""}},methods:{validate:function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:_;this.validateDisabled=!1;var n=this.getFilteredRule(e);if((!n||0===n.length)&&void 0===this.required)return i(),!0;this.validateState="validating";var r={};n&&n.length>0&&n.forEach(function(e){delete e.trigger}),r[this.prop]=n;var s=new ro(r),a={};a[this.prop]=this.fieldValue,s.validate(a,{firstFields:!0},function(e,n){t.validateState=e?"error":"success",t.validateMessage=e?e[0].message:"",i(t.validateMessage,n),t.elForm&&t.elForm.$emit("validate",t.prop,!e,t.validateMessage||null)})},clearValidate:function(){this.validateState="",this.validateMessage="",this.validateDisabled=!1},resetField:function(){var e=this;this.validateState="",this.validateMessage="";var t=this.form.model,i=this.fieldValue,n=this.prop;-1!==n.indexOf(":")&&(n=n.replace(/:/,"."));var r=S(t,n,!0);this.validateDisabled=!0,Array.isArray(i)?r.o[r.k]=[].concat(this.initialValue):r.o[r.k]=this.initialValue,this.$nextTick(function(){e.validateDisabled=!1}),this.broadcast("ElTimeSelect","fieldReset",this.initialValue)},getRules:function(){var e=this.form.rules,t=this.rules,i=void 0!==this.required?{required:!!this.required}:[],n=S(e,this.prop||"");return e=e?n.o[this.prop||""]||n.v:[],[].concat(t||e||[]).concat(i)},getFilteredRule:function(e){return this.getRules().filter(function(t){return!t.trigger||""===e||(Array.isArray(t.trigger)?t.trigger.indexOf(e)>-1:t.trigger===e)}).map(function(e){return Z({},e)})},onFieldBlur:function(){this.validate("blur")},onFieldChange:function(){this.validateDisabled?this.validateDisabled=!1:this.validate("change")},updateComputedLabelWidth:function(e){this.computedLabelWidth=e?e+"px":""},addValidateEvents:function(){(this.getRules().length||void 0!==this.required)&&(this.$on("el.form.blur",this.onFieldBlur),this.$on("el.form.change",this.onFieldChange))},removeValidateEvents:function(){this.$off()}},mounted:function(){if(this.prop){this.dispatch("ElForm","el.form.addField",[this]);var e=this.fieldValue;Array.isArray(e)&&(e=[].concat(e)),Object.defineProperty(this,"initialValue",{value:e}),this.addValidateEvents()}},beforeDestroy:function(){this.dispatch("ElForm","el.form.removeField",[this])}},Pa,[],!1,null,null,null);oo.options.__file="packages/form/src/form-item.vue";var lo=oo.exports;lo.install=function(e){e.component(lo.name,lo)};var uo=lo,co=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-tabs__active-bar",class:"is-"+this.rootTabs.tabPosition,style:this.barStyle})};co._withStripped=!0;var ho=r({name:"TabBar",props:{tabs:Array},inject:["rootTabs"],computed:{barStyle:{get:function(){var e=this,t={},i=0,n=0,r=-1!==["top","bottom"].indexOf(this.rootTabs.tabPosition)?"width":"height",s="width"===r?"x":"y",a=function(e){return e.toLowerCase().replace(/( |^)[a-z]/g,function(e){return e.toUpperCase()})};this.tabs.every(function(t,s){var o=T(e.$parent.$refs.tabs||[],function(e){return e.id.replace("tab-","")===t.paneName});if(!o)return!1;if(t.active){n=o["client"+a(r)];var l=window.getComputedStyle(o);return"width"===r&&e.tabs.length>1&&(n-=parseFloat(l.paddingLeft)+parseFloat(l.paddingRight)),"width"===r&&(i+=parseFloat(l.paddingLeft)),!1}return i+=o["client"+a(r)],!0});var o="translate"+a(s)+"("+i+"px)";return t[r]=n+"px",t.transform=o,t.msTransform=o,t.webkitTransform=o,t}}}},co,[],!1,null,null,null);ho.options.__file="packages/tabs/src/tab-bar.vue";var po=ho.exports;function fo(){}var mo=function(e){return e.toLowerCase().replace(/( |^)[a-z]/g,function(e){return e.toUpperCase()})},vo=r({name:"TabNav",components:{TabBar:po},inject:["rootTabs"],props:{panes:Array,currentName:String,editable:Boolean,onTabClick:{type:Function,default:fo},onTabRemove:{type:Function,default:fo},type:String,stretch:Boolean},data:function(){return{scrollable:!1,navOffset:0,isFocus:!1,focusable:!0}},computed:{navStyle:function(){return{transform:"translate"+(-1!==["top","bottom"].indexOf(this.rootTabs.tabPosition)?"X":"Y")+"(-"+this.navOffset+"px)"}},sizeName:function(){return-1!==["top","bottom"].indexOf(this.rootTabs.tabPosition)?"width":"height"}},methods:{scrollPrev:function(){var e=this.$refs.navScroll["offset"+mo(this.sizeName)],t=this.navOffset;if(t){var i=t>e?t-e:0;this.navOffset=i}},scrollNext:function(){var e=this.$refs.nav["offset"+mo(this.sizeName)],t=this.$refs.navScroll["offset"+mo(this.sizeName)],i=this.navOffset;if(!(e-i<=t)){var n=e-i>2*t?i+t:e-t;this.navOffset=n}},scrollToActiveTab:function(){if(this.scrollable){var e=this.$refs.nav,t=this.$el.querySelector(".is-active");if(t){var i=this.$refs.navScroll,n=-1!==["top","bottom"].indexOf(this.rootTabs.tabPosition),r=t.getBoundingClientRect(),s=i.getBoundingClientRect(),a=n?e.offsetWidth-s.width:e.offsetHeight-s.height,o=this.navOffset,l=o;n?(r.left<s.left&&(l=o-(s.left-r.left)),r.right>s.right&&(l=o+r.right-s.right)):(r.top<s.top&&(l=o-(s.top-r.top)),r.bottom>s.bottom&&(l=o+(r.bottom-s.bottom))),l=Math.max(l,0),this.navOffset=Math.min(l,a)}}},update:function(){if(this.$refs.nav){var e=this.sizeName,t=this.$refs.nav["offset"+mo(e)],i=this.$refs.navScroll["offset"+mo(e)],n=this.navOffset;if(i<t){var r=this.navOffset;this.scrollable=this.scrollable||{},this.scrollable.prev=r,this.scrollable.next=r+i<t,t-r<i&&(this.navOffset=t-i)}else this.scrollable=!1,n>0&&(this.navOffset=0)}},changeTab:function(e){var t=e.keyCode,i=void 0,n=void 0,r=void 0;-1!==[37,38,39,40].indexOf(t)&&(r=e.currentTarget.querySelectorAll("[role=tab]"),n=Array.prototype.indexOf.call(r,e.target),r[i=37===t||38===t?0===n?r.length-1:n-1:n<r.length-1?n+1:0].focus(),r[i].click(),this.setFocus())},setFocus:function(){this.focusable&&(this.isFocus=!0)},removeFocus:function(){this.isFocus=!1},visibilityChangeHandler:function(){var e=this,t=document.visibilityState;"hidden"===t?this.focusable=!1:"visible"===t&&setTimeout(function(){e.focusable=!0},50)},windowBlurHandler:function(){this.focusable=!1},windowFocusHandler:function(){var e=this;setTimeout(function(){e.focusable=!0},50)}},updated:function(){this.update()},render:function(e){var t=this,i=this.type,n=this.panes,r=this.editable,s=this.stretch,a=this.onTabClick,o=this.onTabRemove,l=this.navStyle,u=this.scrollable,c=this.scrollNext,h=this.scrollPrev,d=this.changeTab,p=this.setFocus,f=this.removeFocus,m=u?[e("span",{class:["el-tabs__nav-prev",u.prev?"":"is-disabled"],on:{click:h}},[e("i",{class:"el-icon-arrow-left"})]),e("span",{class:["el-tabs__nav-next",u.next?"":"is-disabled"],on:{click:c}},[e("i",{class:"el-icon-arrow-right"})])]:null,v=this._l(n,function(i,n){var s,l=i.name||i.index||n,u=i.isClosable||r;i.index=""+n;var c=u?e("span",{class:"el-icon-close",on:{click:function(e){o(i,e)}}}):null,h=i.$slots.label||i.label,d=i.active?0:-1;return e("div",{class:(s={"el-tabs__item":!0},s["is-"+t.rootTabs.tabPosition]=!0,s["is-active"]=i.active,s["is-disabled"]=i.disabled,s["is-closable"]=u,s["is-focus"]=t.isFocus,s),attrs:{id:"tab-"+l,"aria-controls":"pane-"+l,role:"tab","aria-selected":i.active,tabindex:d},key:"tab-"+l,ref:"tabs",refInFor:!0,on:{focus:function(){p()},blur:function(){f()},click:function(e){f(),a(i,l,e)},keydown:function(e){!u||46!==e.keyCode&&8!==e.keyCode||o(i,e)}}},[h,c])});return e("div",{class:["el-tabs__nav-wrap",u?"is-scrollable":"","is-"+this.rootTabs.tabPosition]},[m,e("div",{class:["el-tabs__nav-scroll"],ref:"navScroll"},[e("div",{class:["el-tabs__nav","is-"+this.rootTabs.tabPosition,s&&-1!==["top","bottom"].indexOf(this.rootTabs.tabPosition)?"is-stretch":""],ref:"nav",style:l,attrs:{role:"tablist"},on:{keydown:d}},[i?null:e("tab-bar",{attrs:{tabs:n}}),v])])])},mounted:function(){var e=this;Ye(this.$el,this.update),document.addEventListener("visibilitychange",this.visibilityChangeHandler),window.addEventListener("blur",this.windowBlurHandler),window.addEventListener("focus",this.windowFocusHandler),setTimeout(function(){e.scrollToActiveTab()},0)},beforeDestroy:function(){this.$el&&this.update&&Ke(this.$el,this.update),document.removeEventListener("visibilitychange",this.visibilityChangeHandler),window.removeEventListener("blur",this.windowBlurHandler),window.removeEventListener("focus",this.windowFocusHandler)}},void 0,void 0,!1,null,null,null);vo.options.__file="packages/tabs/src/tab-nav.vue";var go=r({name:"ElTabs",components:{TabNav:vo.exports},props:{type:String,activeName:String,closable:Boolean,addable:Boolean,value:{},editable:Boolean,tabPosition:{type:String,default:"top"},beforeLeave:Function,stretch:Boolean},provide:function(){return{rootTabs:this}},data:function(){return{currentName:this.value||this.activeName,panes:[]}},watch:{activeName:function(e){this.setCurrentName(e)},value:function(e){this.setCurrentName(e)},currentName:function(e){var t=this;this.$refs.nav&&this.$nextTick(function(){t.$refs.nav.$nextTick(function(e){t.$refs.nav.scrollToActiveTab()})})}},methods:{calcPaneInstances:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(this.$slots.default){var i=this.$slots.default.filter(function(e){return e.tag&&e.componentOptions&&"ElTabPane"===e.componentOptions.Ctor.options.name}).map(function(e){return e.componentInstance}),n=!(i.length===this.panes.length&&i.every(function(t,i){return t===e.panes[i]}));(t||n)&&(this.panes=i)}else 0!==this.panes.length&&(this.panes=[])},handleTabClick:function(e,t,i){e.disabled||(this.setCurrentName(t),this.$emit("tab-click",e,i))},handleTabRemove:function(e,t){e.disabled||(t.stopPropagation(),this.$emit("edit",e.name,"remove"),this.$emit("tab-remove",e.name))},handleTabAdd:function(){this.$emit("edit",null,"add"),this.$emit("tab-add")},setCurrentName:function(e){var t=this,i=function(){t.currentName=e,t.$emit("input",e)};if(this.currentName!==e&&this.beforeLeave){var n=this.beforeLeave(e,this.currentName);n&&n.then?n.then(function(){i(),t.$refs.nav&&t.$refs.nav.removeFocus()},function(){}):!1!==n&&i()}else i()}},render:function(e){var t,i=this.type,n=this.handleTabClick,r=this.handleTabRemove,s=this.handleTabAdd,a=this.currentName,o=this.panes,l=this.editable,u=this.addable,c=this.tabPosition,h=this.stretch,d=l||u?e("span",{class:"el-tabs__new-tab",on:{click:s,keydown:function(e){13===e.keyCode&&s()}},attrs:{tabindex:"0"}},[e("i",{class:"el-icon-plus"})]):null,p=e("div",{class:["el-tabs__header","is-"+c]},[d,e("tab-nav",{props:{currentName:a,onTabClick:n,onTabRemove:r,editable:l,type:i,panes:o,stretch:h},ref:"nav"})]),f=e("div",{class:"el-tabs__content"},[this.$slots.default]);return e("div",{class:(t={"el-tabs":!0,"el-tabs--card":"card"===i},t["el-tabs--"+c]=!0,t["el-tabs--border-card"]="border-card"===i,t)},["bottom"!==c?[p,f]:[f,p]])},created:function(){this.currentName||this.setCurrentName("0"),this.$on("tab-nav-update",this.calcPaneInstances.bind(null,!0))},mounted:function(){this.calcPaneInstances()},updated:function(){this.calcPaneInstances()}},void 0,void 0,!1,null,null,null);go.options.__file="packages/tabs/src/tabs.vue";var bo=go.exports;bo.install=function(e){e.component(bo.name,bo)};var yo=bo,wo=function(){var e=this,t=e.$createElement,i=e._self._c||t;return!e.lazy||e.loaded||e.active?i("div",{directives:[{name:"show",rawName:"v-show",value:e.active,expression:"active"}],staticClass:"el-tab-pane",attrs:{role:"tabpanel","aria-hidden":!e.active,id:"pane-"+e.paneName,"aria-labelledby":"tab-"+e.paneName}},[e._t("default")],2):e._e()};wo._withStripped=!0;var _o=r({name:"ElTabPane",componentName:"ElTabPane",props:{label:String,labelContent:Function,name:String,closable:Boolean,disabled:Boolean,lazy:Boolean},data:function(){return{index:null,loaded:!1}},computed:{isClosable:function(){return this.closable||this.$parent.closable},active:function(){var e=this.$parent.currentName===(this.name||this.index);return e&&(this.loaded=!0),e},paneName:function(){return this.name||this.index}},updated:function(){this.$parent.$emit("tab-nav-update")}},wo,[],!1,null,null,null);_o.options.__file="packages/tabs/src/tab-pane.vue";var xo=_o.exports;xo.install=function(e){e.component(xo.name,xo)};var Co=xo,ko=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-tree",class:{"el-tree--highlight-current":e.highlightCurrent,"is-dragging":!!e.dragState.draggingNode,"is-drop-not-allow":!e.dragState.allowDrop,"is-drop-inner":"inner"===e.dragState.dropType},attrs:{role:"tree"}},[e._l(e.root.childNodes,function(t){return i("el-tree-node",{key:e.getNodeKey(t),attrs:{node:t,props:e.props,"render-after-expand":e.renderAfterExpand,"show-checkbox":e.showCheckbox,"render-content":e.renderContent},on:{"node-expand":e.handleNodeExpand}})}),e.isEmpty?i("div",{staticClass:"el-tree__empty-block"},[i("span",{staticClass:"el-tree__empty-text"},[e._v(e._s(e.emptyText))])]):e._e(),i("div",{directives:[{name:"show",rawName:"v-show",value:e.dragState.showDropIndicator,expression:"dragState.showDropIndicator"}],ref:"dropIndicator",staticClass:"el-tree__drop-indicator"})],2)};ko._withStripped=!0;var So="$treeNodeId",Do=function(e,t){t&&!t[So]&&Object.defineProperty(t,So,{value:e.id,enumerable:!1,configurable:!1,writable:!1})},$o=function(e,t){return e?t[e]:t[So]},Eo=function(){function e(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,i,n){return i&&e(t.prototype,i),n&&e(t,n),t}}();var To=function(e){for(var t=!0,i=!0,n=!0,r=0,s=e.length;r<s;r++){var a=e[r];(!0!==a.checked||a.indeterminate)&&(t=!1,a.disabled||(n=!1)),(!1!==a.checked||a.indeterminate)&&(i=!1)}return{all:t,none:i,allWithoutDisable:n,half:!t&&!i}},Mo=function e(t){if(0!==t.childNodes.length){var i=To(t.childNodes),n=i.all,r=i.none,s=i.half;n?(t.checked=!0,t.indeterminate=!1):s?(t.checked=!1,t.indeterminate=!0):r&&(t.checked=!1,t.indeterminate=!1);var a=t.parent;a&&0!==a.level&&(t.store.checkStrictly||e(a))}},No=function(e,t){var i=e.store.props,n=e.data||{},r=i[t];if("function"==typeof r)return r(n,e);if("string"==typeof r)return n[r];if(void 0===r){var s=n[t];return void 0===s?"":s}},Po=0,Oo=function(){function e(t){for(var i in function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.id=Po++,this.text=null,this.checked=!1,this.indeterminate=!1,this.data=null,this.expanded=!1,this.parent=null,this.visible=!0,this.isCurrent=!1,t)t.hasOwnProperty(i)&&(this[i]=t[i]);this.level=0,this.loaded=!1,this.childNodes=[],this.loading=!1,this.parent&&(this.level=this.parent.level+1);var n=this.store;if(!n)throw new Error("[Node]store is required!");n.registerNode(this);var r=n.props;if(r&&void 0!==r.isLeaf){var s=No(this,"isLeaf");"boolean"==typeof s&&(this.isLeafByUser=s)}if(!0!==n.lazy&&this.data?(this.setData(this.data),n.defaultExpandAll&&(this.expanded=!0)):this.level>0&&n.lazy&&n.defaultExpandAll&&this.expand(),Array.isArray(this.data)||Do(this,this.data),this.data){var a=n.defaultExpandedKeys,o=n.key;o&&a&&-1!==a.indexOf(this.key)&&this.expand(null,n.autoExpandParent),o&&void 0!==n.currentNodeKey&&this.key===n.currentNodeKey&&(n.currentNode=this,n.currentNode.isCurrent=!0),n.lazy&&n._initDefaultCheckedNode(this),this.updateLeafState()}}return e.prototype.setData=function(e){Array.isArray(e)||Do(this,e),this.data=e,this.childNodes=[];for(var t=void 0,i=0,n=(t=0===this.level&&this.data instanceof Array?this.data:No(this,"children")||[]).length;i<n;i++)this.insertChild({data:t[i]})},e.prototype.contains=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return function i(n){for(var r=n.childNodes||[],s=!1,a=0,o=r.length;a<o;a++){var l=r[a];if(l===e||t&&i(l)){s=!0;break}}return s}(this)},e.prototype.remove=function(){var e=this.parent;e&&e.removeChild(this)},e.prototype.insertChild=function(t,i,n){if(!t)throw new Error("insertChild error: child is required.");if(!(t instanceof e)){if(!n){var r=this.getChildren(!0);-1===r.indexOf(t.data)&&(void 0===i||i<0?r.push(t.data):r.splice(i,0,t.data))}Z(t,{parent:this,store:this.store}),t=new e(t)}t.level=this.level+1,void 0===i||i<0?this.childNodes.push(t):this.childNodes.splice(i,0,t),this.updateLeafState()},e.prototype.insertBefore=function(e,t){var i=void 0;t&&(i=this.childNodes.indexOf(t)),this.insertChild(e,i)},e.prototype.insertAfter=function(e,t){var i=void 0;t&&-1!==(i=this.childNodes.indexOf(t))&&(i+=1),this.insertChild(e,i)},e.prototype.removeChild=function(e){var t=this.getChildren()||[],i=t.indexOf(e.data);i>-1&&t.splice(i,1);var n=this.childNodes.indexOf(e);n>-1&&(this.store&&this.store.deregisterNode(e),e.parent=null,this.childNodes.splice(n,1)),this.updateLeafState()},e.prototype.removeChildByData=function(e){for(var t=null,i=0;i<this.childNodes.length;i++)if(this.childNodes[i].data===e){t=this.childNodes[i];break}t&&this.removeChild(t)},e.prototype.expand=function(e,t){var i=this,n=function(){if(t)for(var n=i.parent;n.level>0;)n.expanded=!0,n=n.parent;i.expanded=!0,e&&e()};this.shouldLoadData()?this.loadData(function(e){e instanceof Array&&(i.checked?i.setChecked(!0,!0):i.store.checkStrictly||Mo(i),n())}):n()},e.prototype.doCreateChildren=function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e.forEach(function(e){t.insertChild(Z({data:e},i),void 0,!0)})},e.prototype.collapse=function(){this.expanded=!1},e.prototype.shouldLoadData=function(){return!0===this.store.lazy&&this.store.load&&!this.loaded},e.prototype.updateLeafState=function(){if(!0!==this.store.lazy||!0===this.loaded||void 0===this.isLeafByUser){var e=this.childNodes;!this.store.lazy||!0===this.store.lazy&&!0===this.loaded?this.isLeaf=!e||0===e.length:this.isLeaf=!1}else this.isLeaf=this.isLeafByUser},e.prototype.setChecked=function(e,t,i,n){var r=this;if(this.indeterminate="half"===e,this.checked=!0===e,!this.store.checkStrictly){if(!this.shouldLoadData()||this.store.checkDescendants){var s=To(this.childNodes),a=s.all,o=s.allWithoutDisable;this.isLeaf||a||!o||(this.checked=!1,e=!1);var l=function(){if(t){for(var i=r.childNodes,s=0,a=i.length;s<a;s++){var o=i[s];n=n||!1!==e;var l=o.disabled?o.checked:n;o.setChecked(l,t,!0,n)}var u=To(i),c=u.half,h=u.all;h||(r.checked=h,r.indeterminate=c)}};if(this.shouldLoadData())return void this.loadData(function(){l(),Mo(r)},{checked:!1!==e});l()}var u=this.parent;u&&0!==u.level&&(i||Mo(u))}},e.prototype.getChildren=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(0===this.level)return this.data;var t=this.data;if(!t)return null;var i=this.store.props,n="children";return i&&(n=i.children||"children"),void 0===t[n]&&(t[n]=null),e&&!t[n]&&(t[n]=[]),t[n]},e.prototype.updateChildren=function(){var e=this,t=this.getChildren()||[],i=this.childNodes.map(function(e){return e.data}),n={},r=[];t.forEach(function(e,t){var s=e[So];!!s&&E(i,function(e){return e[So]===s})>=0?n[s]={index:t,data:e}:r.push({index:t,data:e})}),this.store.lazy||i.forEach(function(t){n[t[So]]||e.removeChildByData(t)}),r.forEach(function(t){var i=t.index,n=t.data;e.insertChild({data:n},i)}),this.updateLeafState()},e.prototype.loadData=function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!0!==this.store.lazy||!this.store.load||this.loaded||this.loading&&!Object.keys(i).length)e&&e.call(this);else{this.loading=!0;this.store.load(this,function(n){t.loaded=!0,t.loading=!1,t.childNodes=[],t.doCreateChildren(n,i),t.updateLeafState(),e&&e.call(t,n)})}},Eo(e,[{key:"label",get:function(){return No(this,"label")}},{key:"key",get:function(){var e=this.store.key;return this.data?this.data[e]:null}},{key:"disabled",get:function(){return No(this,"disabled")}},{key:"nextSibling",get:function(){var e=this.parent;if(e){var t=e.childNodes.indexOf(this);if(t>-1)return e.childNodes[t+1]}return null}},{key:"previousSibling",get:function(){var e=this.parent;if(e){var t=e.childNodes.indexOf(this);if(t>-1)return t>0?e.childNodes[t-1]:null}return null}}]),e}(),Io="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};var Ao=function(){function e(t){var i=this;for(var n in function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.currentNode=null,this.currentNodeKey=null,t)t.hasOwnProperty(n)&&(this[n]=t[n]);(this.nodesMap={},this.root=new Oo({data:this.data,store:this}),this.lazy&&this.load)?(0,this.load)(this.root,function(e){i.root.doCreateChildren(e),i._initDefaultCheckedNodes()}):this._initDefaultCheckedNodes()}return e.prototype.filter=function(e){var t=this.filterNodeMethod,i=this.lazy;!function n(r){var s=r.root?r.root.childNodes:r.childNodes;if(s.forEach(function(i){i.visible=t.call(i,e,i.data,i),n(i)}),!r.visible&&s.length){var a;a=!s.some(function(e){return e.visible}),r.root?r.root.visible=!1===a:r.visible=!1===a}e&&(!r.visible||r.isLeaf||i||r.expand())}(this)},e.prototype.setData=function(e){e!==this.root.data?(this.root.setData(e),this._initDefaultCheckedNodes()):this.root.updateChildren()},e.prototype.getNode=function(e){if(e instanceof Oo)return e;var t="object"!==(void 0===e?"undefined":Io(e))?e:$o(this.key,e);return this.nodesMap[t]||null},e.prototype.insertBefore=function(e,t){var i=this.getNode(t);i.parent.insertBefore({data:e},i)},e.prototype.insertAfter=function(e,t){var i=this.getNode(t);i.parent.insertAfter({data:e},i)},e.prototype.remove=function(e){var t=this.getNode(e);t&&t.parent&&(t===this.currentNode&&(this.currentNode=null),t.parent.removeChild(t))},e.prototype.append=function(e,t){var i=t?this.getNode(t):this.root;i&&i.insertChild({data:e})},e.prototype._initDefaultCheckedNodes=function(){var e=this,t=this.defaultCheckedKeys||[],i=this.nodesMap;t.forEach(function(t){var n=i[t];n&&n.setChecked(!0,!e.checkStrictly)})},e.prototype._initDefaultCheckedNode=function(e){-1!==(this.defaultCheckedKeys||[]).indexOf(e.key)&&e.setChecked(!0,!this.checkStrictly)},e.prototype.setDefaultCheckedKey=function(e){e!==this.defaultCheckedKeys&&(this.defaultCheckedKeys=e,this._initDefaultCheckedNodes())},e.prototype.registerNode=function(e){this.key&&e&&e.data&&(void 0!==e.key&&(this.nodesMap[e.key]=e))},e.prototype.deregisterNode=function(e){var t=this;this.key&&e&&e.data&&(e.childNodes.forEach(function(e){t.deregisterNode(e)}),delete this.nodesMap[e.key])},e.prototype.getCheckedNodes=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=[];return function n(r){(r.root?r.root.childNodes:r.childNodes).forEach(function(r){(r.checked||t&&r.indeterminate)&&(!e||e&&r.isLeaf)&&i.push(r.data),n(r)})}(this),i},e.prototype.getCheckedKeys=function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.getCheckedNodes(t).map(function(t){return(t||{})[e.key]})},e.prototype.getHalfCheckedNodes=function(){var e=[];return function t(i){(i.root?i.root.childNodes:i.childNodes).forEach(function(i){i.indeterminate&&e.push(i.data),t(i)})}(this),e},e.prototype.getHalfCheckedKeys=function(){var e=this;return this.getHalfCheckedNodes().map(function(t){return(t||{})[e.key]})},e.prototype._getAllNodes=function(){var e=[],t=this.nodesMap;for(var i in t)t.hasOwnProperty(i)&&e.push(t[i]);return e},e.prototype.updateChildren=function(e,t){var i=this.nodesMap[e];if(i){for(var n=i.childNodes,r=n.length-1;r>=0;r--){var s=n[r];this.remove(s.data)}for(var a=0,o=t.length;a<o;a++){var l=t[a];this.append(l,i.data)}}},e.prototype._setCheckedKeys=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments[2],n=this._getAllNodes().sort(function(e,t){return t.level-e.level}),r=Object.create(null),s=Object.keys(i);n.forEach(function(e){return e.setChecked(!1,!1)});for(var a=0,o=n.length;a<o;a++){var l=n[a],u=l.data[e].toString();if(s.indexOf(u)>-1){for(var c=l.parent;c&&c.level>0;)r[c.data[e]]=!0,c=c.parent;l.isLeaf||this.checkStrictly?l.setChecked(!0,!1):(l.setChecked(!0,!0),t&&function(){l.setChecked(!1,!1);!function e(t){t.childNodes.forEach(function(t){t.isLeaf||t.setChecked(!1,!1),e(t)})}(l)}())}else l.checked&&!r[u]&&l.setChecked(!1,!1)}},e.prototype.setCheckedNodes=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=this.key,n={};e.forEach(function(e){n[(e||{})[i]]=!0}),this._setCheckedKeys(i,t,n)},e.prototype.setCheckedKeys=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.defaultCheckedKeys=e;var i=this.key,n={};e.forEach(function(e){n[e]=!0}),this._setCheckedKeys(i,t,n)},e.prototype.setDefaultExpandedKeys=function(e){var t=this;e=e||[],this.defaultExpandedKeys=e,e.forEach(function(e){var i=t.getNode(e);i&&i.expand(null,t.autoExpandParent)})},e.prototype.setChecked=function(e,t,i){var n=this.getNode(e);n&&n.setChecked(!!t,i)},e.prototype.getCurrentNode=function(){return this.currentNode},e.prototype.setCurrentNode=function(e){var t=this.currentNode;t&&(t.isCurrent=!1),this.currentNode=e,this.currentNode.isCurrent=!0},e.prototype.setUserCurrentNode=function(e){var t=e[this.key],i=this.nodesMap[t];this.setCurrentNode(i)},e.prototype.setCurrentNodeKey=function(e){if(null==e)return this.currentNode&&(this.currentNode.isCurrent=!1),void(this.currentNode=null);var t=this.getNode(e);t&&this.setCurrentNode(t)},e}(),Fo=function(){var e=this,t=this,i=t.$createElement,n=t._self._c||i;return n("div",{directives:[{name:"show",rawName:"v-show",value:t.node.visible,expression:"node.visible"}],ref:"node",staticClass:"el-tree-node",class:{"is-expanded":t.expanded,"is-current":t.node.isCurrent,"is-hidden":!t.node.visible,"is-focusable":!t.node.disabled,"is-checked":!t.node.disabled&&t.node.checked},attrs:{role:"treeitem",tabindex:"-1","aria-expanded":t.expanded,"aria-disabled":t.node.disabled,"aria-checked":t.node.checked,draggable:t.tree.draggable},on:{click:function(e){return e.stopPropagation(),t.handleClick(e)},contextmenu:function(t){return e.handleContextMenu(t)},dragstart:function(e){return e.stopPropagation(),t.handleDragStart(e)},dragover:function(e){return e.stopPropagation(),t.handleDragOver(e)},dragend:function(e){return e.stopPropagation(),t.handleDragEnd(e)},drop:function(e){return e.stopPropagation(),t.handleDrop(e)}}},[n("div",{staticClass:"el-tree-node__content",style:{"padding-left":(t.node.level-1)*t.tree.indent+"px"}},[n("span",{class:[{"is-leaf":t.node.isLeaf,expanded:!t.node.isLeaf&&t.expanded},"el-tree-node__expand-icon",t.tree.iconClass?t.tree.iconClass:"el-icon-caret-right"],on:{click:function(e){return e.stopPropagation(),t.handleExpandIconClick(e)}}}),t.showCheckbox?n("el-checkbox",{attrs:{indeterminate:t.node.indeterminate,disabled:!!t.node.disabled},on:{change:t.handleCheckChange},nativeOn:{click:function(e){e.stopPropagation()}},model:{value:t.node.checked,callback:function(e){t.$set(t.node,"checked",e)},expression:"node.checked"}}):t._e(),t.node.loading?n("span",{staticClass:"el-tree-node__loading-icon el-icon-loading"}):t._e(),n("node-content",{attrs:{node:t.node}})],1),n("el-collapse-transition",[!t.renderAfterExpand||t.childNodeRendered?n("div",{directives:[{name:"show",rawName:"v-show",value:t.expanded,expression:"expanded"}],staticClass:"el-tree-node__children",attrs:{role:"group","aria-expanded":t.expanded}},t._l(t.node.childNodes,function(e){return n("el-tree-node",{key:t.getNodeKey(e),attrs:{"render-content":t.renderContent,"render-after-expand":t.renderAfterExpand,"show-checkbox":t.showCheckbox,node:e},on:{"node-expand":t.handleChildNodeExpand}})}),1):t._e()])],1)};Fo._withStripped=!0;var Lo=r({name:"ElTreeNode",componentName:"ElTreeNode",mixins:[l],props:{node:{default:function(){return{}}},props:{},renderContent:Function,renderAfterExpand:{type:Boolean,default:!0},showCheckbox:{type:Boolean,default:!1}},components:{ElCollapseTransition:ii,ElCheckbox:Vi,NodeContent:{props:{node:{required:!0}},render:function(e){var t=this.$parent,i=t.tree,n=this.node,r=n.data,s=n.store;return t.renderContent?t.renderContent.call(t._renderProxy,e,{_self:i.$vnode.context,node:n,data:r,store:s}):i.$scopedSlots.default?i.$scopedSlots.default({node:n,data:r}):e("span",{class:"el-tree-node__label"},[n.label])}}},data:function(){return{tree:null,expanded:!1,childNodeRendered:!1,oldChecked:null,oldIndeterminate:null}},watch:{"node.indeterminate":function(e){this.handleSelectChange(this.node.checked,e)},"node.checked":function(e){this.handleSelectChange(e,this.node.indeterminate)},"node.expanded":function(e){var t=this;this.$nextTick(function(){return t.expanded=e}),e&&(this.childNodeRendered=!0)}},methods:{getNodeKey:function(e){return $o(this.tree.nodeKey,e.data)},handleSelectChange:function(e,t){this.oldChecked!==e&&this.oldIndeterminate!==t&&this.tree.$emit("check-change",this.node.data,e,t),this.oldChecked=e,this.indeterminate=t},handleClick:function(){var e=this.tree.store;e.setCurrentNode(this.node),this.tree.$emit("current-change",e.currentNode?e.currentNode.data:null,e.currentNode),this.tree.currentNode=this,this.tree.expandOnClickNode&&this.handleExpandIconClick(),this.tree.checkOnClickNode&&!this.node.disabled&&this.handleCheckChange(null,{target:{checked:!this.node.checked}}),this.tree.$emit("node-click",this.node.data,this.node,this)},handleContextMenu:function(e){this.tree._events["node-contextmenu"]&&this.tree._events["node-contextmenu"].length>0&&(e.stopPropagation(),e.preventDefault()),this.tree.$emit("node-contextmenu",e,this.node.data,this.node,this)},handleExpandIconClick:function(){this.node.isLeaf||(this.expanded?(this.tree.$emit("node-collapse",this.node.data,this.node,this),this.node.collapse()):(this.node.expand(),this.$emit("node-expand",this.node.data,this.node,this)))},handleCheckChange:function(e,t){var i=this;this.node.setChecked(t.target.checked,!this.tree.checkStrictly),this.$nextTick(function(){var e=i.tree.store;i.tree.$emit("check",i.node.data,{checkedNodes:e.getCheckedNodes(),checkedKeys:e.getCheckedKeys(),halfCheckedNodes:e.getHalfCheckedNodes(),halfCheckedKeys:e.getHalfCheckedKeys()})})},handleChildNodeExpand:function(e,t,i){this.broadcast("ElTreeNode","tree-node-expand",t),this.tree.$emit("node-expand",e,t,i)},handleDragStart:function(e){this.tree.draggable&&this.tree.$emit("tree-node-drag-start",e,this)},handleDragOver:function(e){this.tree.draggable&&(this.tree.$emit("tree-node-drag-over",e,this),e.preventDefault())},handleDrop:function(e){e.preventDefault()},handleDragEnd:function(e){this.tree.draggable&&this.tree.$emit("tree-node-drag-end",e,this)}},created:function(){var e=this,t=this.$parent;t.isTree?this.tree=t:this.tree=t.tree;var i=this.tree;i||console.warn("Can not find node's tree.");var n=(i.props||{}).children||"children";this.$watch("node.data."+n,function(){e.node.updateChildren()}),this.node.expanded&&(this.expanded=!0,this.childNodeRendered=!0),this.tree.accordion&&this.$on("tree-node-expand",function(t){e.node!==t&&e.node.collapse()})}},Fo,[],!1,null,null,null);Lo.options.__file="packages/tree/src/tree-node.vue";var Vo=r({name:"ElTree",mixins:[l],components:{ElTreeNode:Lo.exports},data:function(){return{store:null,root:null,currentNode:null,treeItems:null,checkboxItems:[],dragState:{showDropIndicator:!1,draggingNode:null,dropNode:null,allowDrop:!0}}},props:{data:{type:Array},emptyText:{type:String,default:function(){return W("el.tree.emptyText")}},renderAfterExpand:{type:Boolean,default:!0},nodeKey:String,checkStrictly:Boolean,defaultExpandAll:Boolean,expandOnClickNode:{type:Boolean,default:!0},checkOnClickNode:Boolean,checkDescendants:{type:Boolean,default:!1},autoExpandParent:{type:Boolean,default:!0},defaultCheckedKeys:Array,defaultExpandedKeys:Array,currentNodeKey:[String,Number],renderContent:Function,showCheckbox:{type:Boolean,default:!1},draggable:{type:Boolean,default:!1},allowDrag:Function,allowDrop:Function,props:{default:function(){return{children:"children",label:"label",disabled:"disabled"}}},lazy:{type:Boolean,default:!1},highlightCurrent:Boolean,load:Function,filterNodeMethod:Function,accordion:Boolean,indent:{type:Number,default:18},iconClass:String},computed:{children:{set:function(e){this.data=e},get:function(){return this.data}},treeItemArray:function(){return Array.prototype.slice.call(this.treeItems)},isEmpty:function(){var e=this.root.childNodes;return!e||0===e.length||e.every(function(e){return!e.visible})}},watch:{defaultCheckedKeys:function(e){this.store.setDefaultCheckedKey(e)},defaultExpandedKeys:function(e){this.store.defaultExpandedKeys=e,this.store.setDefaultExpandedKeys(e)},data:function(e){this.store.setData(e)},checkboxItems:function(e){Array.prototype.forEach.call(e,function(e){e.setAttribute("tabindex",-1)})},checkStrictly:function(e){this.store.checkStrictly=e}},methods:{filter:function(e){if(!this.filterNodeMethod)throw new Error("[Tree] filterNodeMethod is required when filter");this.store.filter(e)},getNodeKey:function(e){return $o(this.nodeKey,e.data)},getNodePath:function(e){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in getNodePath");var t=this.store.getNode(e);if(!t)return[];for(var i=[t.data],n=t.parent;n&&n!==this.root;)i.push(n.data),n=n.parent;return i.reverse()},getCheckedNodes:function(e,t){return this.store.getCheckedNodes(e,t)},getCheckedKeys:function(e){return this.store.getCheckedKeys(e)},getCurrentNode:function(){var e=this.store.getCurrentNode();return e?e.data:null},getCurrentKey:function(){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in getCurrentKey");var e=this.getCurrentNode();return e?e[this.nodeKey]:null},setCheckedNodes:function(e,t){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in setCheckedNodes");this.store.setCheckedNodes(e,t)},setCheckedKeys:function(e,t){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in setCheckedKeys");this.store.setCheckedKeys(e,t)},setChecked:function(e,t,i){this.store.setChecked(e,t,i)},getHalfCheckedNodes:function(){return this.store.getHalfCheckedNodes()},getHalfCheckedKeys:function(){return this.store.getHalfCheckedKeys()},setCurrentNode:function(e){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in setCurrentNode");this.store.setUserCurrentNode(e)},setCurrentKey:function(e){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in setCurrentKey");this.store.setCurrentNodeKey(e)},getNode:function(e){return this.store.getNode(e)},remove:function(e){this.store.remove(e)},append:function(e,t){this.store.append(e,t)},insertBefore:function(e,t){this.store.insertBefore(e,t)},insertAfter:function(e,t){this.store.insertAfter(e,t)},handleNodeExpand:function(e,t,i){this.broadcast("ElTreeNode","tree-node-expand",t),this.$emit("node-expand",e,t,i)},updateKeyChildren:function(e,t){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in updateKeyChild");this.store.updateChildren(e,t)},initTabIndex:function(){this.treeItems=this.$el.querySelectorAll(".is-focusable[role=treeitem]"),this.checkboxItems=this.$el.querySelectorAll("input[type=checkbox]");var e=this.$el.querySelectorAll(".is-checked[role=treeitem]");e.length?e[0].setAttribute("tabindex",0):this.treeItems[0]&&this.treeItems[0].setAttribute("tabindex",0)},handleKeydown:function(e){var t=e.target;if(-1!==t.className.indexOf("el-tree-node")){var i=e.keyCode;this.treeItems=this.$el.querySelectorAll(".is-focusable[role=treeitem]");var n=this.treeItemArray.indexOf(t),r=void 0;[38,40].indexOf(i)>-1&&(e.preventDefault(),r=38===i?0!==n?n-1:0:n<this.treeItemArray.length-1?n+1:0,this.treeItemArray[r].focus()),[37,39].indexOf(i)>-1&&(e.preventDefault(),t.click());var s=t.querySelector('[type="checkbox"]');[13,32].indexOf(i)>-1&&s&&(e.preventDefault(),s.click())}}},created:function(){var e=this;this.isTree=!0,this.store=new Ao({key:this.nodeKey,data:this.data,lazy:this.lazy,props:this.props,load:this.load,currentNodeKey:this.currentNodeKey,checkStrictly:this.checkStrictly,checkDescendants:this.checkDescendants,defaultCheckedKeys:this.defaultCheckedKeys,defaultExpandedKeys:this.defaultExpandedKeys,autoExpandParent:this.autoExpandParent,defaultExpandAll:this.defaultExpandAll,filterNodeMethod:this.filterNodeMethod}),this.root=this.store.root;var t=this.dragState;this.$on("tree-node-drag-start",function(i,n){if("function"==typeof e.allowDrag&&!e.allowDrag(n.node))return i.preventDefault(),!1;i.dataTransfer.effectAllowed="move";try{i.dataTransfer.setData("text/plain","")}catch(e){}t.draggingNode=n,e.$emit("node-drag-start",n.node,i)}),this.$on("tree-node-drag-over",function(i,n){var r=function(e,t){for(var i=e;i&&"BODY"!==i.tagName;){if(i.__vue__&&i.__vue__.$options.name===t)return i.__vue__;i=i.parentNode}return null}(i.target,"ElTreeNode"),s=t.dropNode;s&&s!==r&&me(s.$el,"is-drop-inner");var a=t.draggingNode;if(a&&r){var o=!0,l=!0,u=!0,c=!0;"function"==typeof e.allowDrop&&(o=e.allowDrop(a.node,r.node,"prev"),c=l=e.allowDrop(a.node,r.node,"inner"),u=e.allowDrop(a.node,r.node,"next")),i.dataTransfer.dropEffect=l?"move":"none",(o||l||u)&&s!==r&&(s&&e.$emit("node-drag-leave",a.node,s.node,i),e.$emit("node-drag-enter",a.node,r.node,i)),(o||l||u)&&(t.dropNode=r),r.node.nextSibling===a.node&&(u=!1),r.node.previousSibling===a.node&&(o=!1),r.node.contains(a.node,!1)&&(l=!1),(a.node===r.node||a.node.contains(r.node))&&(o=!1,l=!1,u=!1);var h=r.$el.getBoundingClientRect(),d=e.$el.getBoundingClientRect(),p=void 0,f=o?l?.25:u?.45:1:-1,m=u?l?.75:o?.55:0:1,v=-9999,g=i.clientY-h.top;p=g<h.height*f?"before":g>h.height*m?"after":l?"inner":"none";var b=r.$el.querySelector(".el-tree-node__expand-icon").getBoundingClientRect(),y=e.$refs.dropIndicator;"before"===p?v=b.top-d.top:"after"===p&&(v=b.bottom-d.top),y.style.top=v+"px",y.style.left=b.right-d.left+"px","inner"===p?fe(r.$el,"is-drop-inner"):me(r.$el,"is-drop-inner"),t.showDropIndicator="before"===p||"after"===p,t.allowDrop=t.showDropIndicator||c,t.dropType=p,e.$emit("node-drag-over",a.node,r.node,i)}}),this.$on("tree-node-drag-end",function(i){var n=t.draggingNode,r=t.dropType,s=t.dropNode;if(i.preventDefault(),i.dataTransfer.dropEffect="move",n&&s){var a={data:n.node.data};"none"!==r&&n.node.remove(),"before"===r?s.node.parent.insertBefore(a,s.node):"after"===r?s.node.parent.insertAfter(a,s.node):"inner"===r&&s.node.insertChild(a),"none"!==r&&e.store.registerNode(a),me(s.$el,"is-drop-inner"),e.$emit("node-drag-end",n.node,s.node,r,i),"none"!==r&&e.$emit("node-drop",n.node,s.node,r,i)}n&&!s&&e.$emit("node-drag-end",n.node,null,r,i),t.showDropIndicator=!1,t.draggingNode=null,t.dropNode=null,t.allowDrop=!0})},mounted:function(){this.initTabIndex(),this.$el.addEventListener("keydown",this.handleKeydown)},updated:function(){this.treeItems=this.$el.querySelectorAll("[role=treeitem]"),this.checkboxItems=this.$el.querySelectorAll("input[type=checkbox]")}},ko,[],!1,null,null,null);Vo.options.__file="packages/tree/src/tree.vue";var Bo=Vo.exports;Bo.install=function(e){e.component(Bo.name,Bo)};var zo=Bo,Ho=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-alert-fade"}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-alert",class:[e.typeClass,e.center?"is-center":"","is-"+e.effect],attrs:{role:"alert"}},[e.showIcon?i("i",{staticClass:"el-alert__icon",class:[e.iconClass,e.isBigIcon]}):e._e(),i("div",{staticClass:"el-alert__content"},[e.title||e.$slots.title?i("span",{staticClass:"el-alert__title",class:[e.isBoldTitle]},[e._t("title",[e._v(e._s(e.title))])],2):e._e(),e.$slots.default&&!e.description?i("p",{staticClass:"el-alert__description"},[e._t("default")],2):e._e(),e.description&&!e.$slots.default?i("p",{staticClass:"el-alert__description"},[e._v(e._s(e.description))]):e._e(),i("i",{directives:[{name:"show",rawName:"v-show",value:e.closable,expression:"closable"}],staticClass:"el-alert__closebtn",class:{"is-customed":""!==e.closeText,"el-icon-close":""===e.closeText},on:{click:function(t){e.close()}}},[e._v(e._s(e.closeText))])])])])};Ho._withStripped=!0;var Ro={success:"el-icon-success",warning:"el-icon-warning",error:"el-icon-error"},Wo=r({name:"ElAlert",props:{title:{type:String,default:""},description:{type:String,default:""},type:{type:String,default:"info"},closable:{type:Boolean,default:!0},closeText:{type:String,default:""},showIcon:Boolean,center:Boolean,effect:{type:String,default:"light",validator:function(e){return-1!==["light","dark"].indexOf(e)}}},data:function(){return{visible:!0}},methods:{close:function(){this.visible=!1,this.$emit("close")}},computed:{typeClass:function(){return"el-alert--"+this.type},iconClass:function(){return Ro[this.type]||"el-icon-info"},isBigIcon:function(){return this.description||this.$slots.default?"is-big":""},isBoldTitle:function(){return this.description||this.$slots.default?"is-bold":""}}},Ho,[],!1,null,null,null);Wo.options.__file="packages/alert/src/main.vue";var jo=Wo.exports;jo.install=function(e){e.component(jo.name,jo)};var qo=jo,Yo=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-notification-fade"}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],class:["el-notification",e.customClass,e.horizontalClass],style:e.positionStyle,attrs:{role:"alert"},on:{mouseenter:function(t){e.clearTimer()},mouseleave:function(t){e.startTimer()},click:e.click}},[e.type||e.iconClass?i("i",{staticClass:"el-notification__icon",class:[e.typeClass,e.iconClass]}):e._e(),i("div",{staticClass:"el-notification__group",class:{"is-with-icon":e.typeClass||e.iconClass}},[i("h2",{staticClass:"el-notification__title",domProps:{textContent:e._s(e.title)}}),i("div",{directives:[{name:"show",rawName:"v-show",value:e.message,expression:"message"}],staticClass:"el-notification__content"},[e._t("default",[e.dangerouslyUseHTMLString?i("p",{domProps:{innerHTML:e._s(e.message)}}):i("p",[e._v(e._s(e.message))])])],2),e.showClose?i("div",{staticClass:"el-notification__closeBtn el-icon-close",on:{click:function(t){return t.stopPropagation(),e.close(t)}}}):e._e()])])])};Yo._withStripped=!0;var Ko={success:"success",info:"info",warning:"warning",error:"error"},Go=r({data:function(){return{visible:!1,title:"",message:"",duration:4500,type:"",showClose:!0,customClass:"",iconClass:"",onClose:null,onClick:null,closed:!1,verticalOffset:0,timer:null,dangerouslyUseHTMLString:!1,position:"top-right"}},computed:{typeClass:function(){return this.type&&Ko[this.type]?"el-icon-"+Ko[this.type]:""},horizontalClass:function(){return this.position.indexOf("right")>-1?"right":"left"},verticalProperty:function(){return/^top-/.test(this.position)?"top":"bottom"},positionStyle:function(){var e;return(e={})[this.verticalProperty]=this.verticalOffset+"px",e}},watch:{closed:function(e){e&&(this.visible=!1,this.$el.addEventListener("transitionend",this.destroyElement))}},methods:{destroyElement:function(){this.$el.removeEventListener("transitionend",this.destroyElement),this.$destroy(!0),this.$el.parentNode.removeChild(this.$el)},click:function(){"function"==typeof this.onClick&&this.onClick()},close:function(){this.closed=!0,"function"==typeof this.onClose&&this.onClose()},clearTimer:function(){clearTimeout(this.timer)},startTimer:function(){var e=this;this.duration>0&&(this.timer=setTimeout(function(){e.closed||e.close()},this.duration))},keydown:function(e){46===e.keyCode||8===e.keyCode?this.clearTimer():27===e.keyCode?this.closed||this.close():this.startTimer()}},mounted:function(){var e=this;this.duration>0&&(this.timer=setTimeout(function(){e.closed||e.close()},this.duration)),document.addEventListener("keydown",this.keydown)},beforeDestroy:function(){document.removeEventListener("keydown",this.keydown)}},Yo,[],!1,null,null,null);Go.options.__file="packages/notification/src/main.vue";var Uo=Go.exports,Xo=h.a.extend(Uo),Jo=void 0,Zo=[],Qo=1,el=function e(t){if(!h.a.prototype.$isServer){var i=(t=Z({},t)).onClose,n="notification_"+Qo++,r=t.position||"top-right";t.onClose=function(){e.close(n,i)},Jo=new Xo({data:t}),ua(t.message)&&(Jo.$slots.default=[t.message],t.message="REPLACED_BY_VNODE"),Jo.id=n,Jo.$mount(),document.body.appendChild(Jo.$el),Jo.visible=!0,Jo.dom=Jo.$el,Jo.dom.style.zIndex=Se.nextZIndex();var s=t.offset||0;return Zo.filter(function(e){return e.position===r}).forEach(function(e){s+=e.$el.offsetHeight+16}),s+=16,Jo.verticalOffset=s,Zo.push(Jo),Jo}};["success","warning","info","error"].forEach(function(e){el[e]=function(t){return("string"==typeof t||ua(t))&&(t={message:t}),t.type=e,el(t)}}),el.close=function(e,t){var i=-1,n=Zo.length,r=Zo.filter(function(t,n){return t.id===e&&(i=n,!0)})[0];if(r&&("function"==typeof t&&t(r),Zo.splice(i,1),!(n<=1)))for(var s=r.position,a=r.dom.offsetHeight,o=i;o<n-1;o++)Zo[o].position===s&&(Zo[o].dom.style[r.verticalProperty]=parseInt(Zo[o].dom.style[r.verticalProperty],10)-a-16+"px")},el.closeAll=function(){for(var e=Zo.length-1;e>=0;e--)Zo[e].close()};var tl=el,il=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-slider",class:{"is-vertical":e.vertical,"el-slider--with-input":e.showInput},attrs:{role:"slider","aria-valuemin":e.min,"aria-valuemax":e.max,"aria-orientation":e.vertical?"vertical":"horizontal","aria-disabled":e.sliderDisabled}},[e.showInput&&!e.range?i("el-input-number",{ref:"input",staticClass:"el-slider__input",attrs:{step:e.step,disabled:e.sliderDisabled,controls:e.showInputControls,min:e.min,max:e.max,debounce:e.debounce,size:e.inputSize},on:{change:e.emitChange},model:{value:e.firstValue,callback:function(t){e.firstValue=t},expression:"firstValue"}}):e._e(),i("div",{ref:"slider",staticClass:"el-slider__runway",class:{"show-input":e.showInput,disabled:e.sliderDisabled},style:e.runwayStyle,on:{click:e.onSliderClick}},[i("div",{staticClass:"el-slider__bar",style:e.barStyle}),i("slider-button",{ref:"button1",attrs:{vertical:e.vertical,"tooltip-class":e.tooltipClass},model:{value:e.firstValue,callback:function(t){e.firstValue=t},expression:"firstValue"}}),e.range?i("slider-button",{ref:"button2",attrs:{vertical:e.vertical,"tooltip-class":e.tooltipClass},model:{value:e.secondValue,callback:function(t){e.secondValue=t},expression:"secondValue"}}):e._e(),e._l(e.stops,function(t,n){return e.showStops?i("div",{key:n,staticClass:"el-slider__stop",style:e.getStopStyle(t)}):e._e()}),e.markList.length>0?[i("div",e._l(e.markList,function(t,n){return i("div",{key:n,staticClass:"el-slider__stop el-slider__marks-stop",style:e.getStopStyle(t.position)})}),0),i("div",{staticClass:"el-slider__marks"},e._l(e.markList,function(t,n){return i("slider-marker",{key:n,style:e.getStopStyle(t.position),attrs:{mark:t.mark}})}),1)]:e._e()],2)],1)};il._withStripped=!0;var nl=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{ref:"button",staticClass:"el-slider__button-wrapper",class:{hover:e.hovering,dragging:e.dragging},style:e.wrapperStyle,attrs:{tabindex:"0"},on:{mouseenter:e.handleMouseEnter,mouseleave:e.handleMouseLeave,mousedown:e.onButtonDown,touchstart:e.onButtonDown,focus:e.handleMouseEnter,blur:e.handleMouseLeave,keydown:[function(t){return"button"in t||!e._k(t.keyCode,"left",37,t.key,["Left","ArrowLeft"])?"button"in t&&0!==t.button?null:e.onLeftKeyDown(t):null},function(t){return"button"in t||!e._k(t.keyCode,"right",39,t.key,["Right","ArrowRight"])?"button"in t&&2!==t.button?null:e.onRightKeyDown(t):null},function(t){return"button"in t||!e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])?(t.preventDefault(),e.onLeftKeyDown(t)):null},function(t){return"button"in t||!e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"])?(t.preventDefault(),e.onRightKeyDown(t)):null}]}},[i("el-tooltip",{ref:"tooltip",attrs:{placement:"top","popper-class":e.tooltipClass,disabled:!e.showTooltip}},[i("span",{attrs:{slot:"content"},slot:"content"},[e._v(e._s(e.formatValue))]),i("div",{staticClass:"el-slider__button",class:{hover:e.hovering,dragging:e.dragging}})])],1)};nl._withStripped=!0;var rl=r({name:"ElSliderButton",components:{ElTooltip:ui},props:{value:{type:Number,default:0},vertical:{type:Boolean,default:!1},tooltipClass:String},data:function(){return{hovering:!1,dragging:!1,isClick:!1,startX:0,currentX:0,startY:0,currentY:0,startPosition:0,newPosition:null,oldValue:this.value}},computed:{disabled:function(){return this.$parent.sliderDisabled},max:function(){return this.$parent.max},min:function(){return this.$parent.min},step:function(){return this.$parent.step},showTooltip:function(){return this.$parent.showTooltip},precision:function(){return this.$parent.precision},currentPosition:function(){return(this.value-this.min)/(this.max-this.min)*100+"%"},enableFormat:function(){return this.$parent.formatTooltip instanceof Function},formatValue:function(){return this.enableFormat&&this.$parent.formatTooltip(this.value)||this.value},wrapperStyle:function(){return this.vertical?{bottom:this.currentPosition}:{left:this.currentPosition}}},watch:{dragging:function(e){this.$parent.dragging=e}},methods:{displayTooltip:function(){this.$refs.tooltip&&(this.$refs.tooltip.showPopper=!0)},hideTooltip:function(){this.$refs.tooltip&&(this.$refs.tooltip.showPopper=!1)},handleMouseEnter:function(){this.hovering=!0,this.displayTooltip()},handleMouseLeave:function(){this.hovering=!1,this.hideTooltip()},onButtonDown:function(e){this.disabled||(e.preventDefault(),this.onDragStart(e),window.addEventListener("mousemove",this.onDragging),window.addEventListener("touchmove",this.onDragging),window.addEventListener("mouseup",this.onDragEnd),window.addEventListener("touchend",this.onDragEnd),window.addEventListener("contextmenu",this.onDragEnd))},onLeftKeyDown:function(){this.disabled||(this.newPosition=parseFloat(this.currentPosition)-this.step/(this.max-this.min)*100,this.setPosition(this.newPosition),this.$parent.emitChange())},onRightKeyDown:function(){this.disabled||(this.newPosition=parseFloat(this.currentPosition)+this.step/(this.max-this.min)*100,this.setPosition(this.newPosition),this.$parent.emitChange())},onDragStart:function(e){this.dragging=!0,this.isClick=!0,"touchstart"===e.type&&(e.clientY=e.touches[0].clientY,e.clientX=e.touches[0].clientX),this.vertical?this.startY=e.clientY:this.startX=e.clientX,this.startPosition=parseFloat(this.currentPosition),this.newPosition=this.startPosition},onDragging:function(e){if(this.dragging){this.isClick=!1,this.displayTooltip(),this.$parent.resetSize();var t=0;"touchmove"===e.type&&(e.clientY=e.touches[0].clientY,e.clientX=e.touches[0].clientX),this.vertical?(this.currentY=e.clientY,t=(this.startY-this.currentY)/this.$parent.sliderSize*100):(this.currentX=e.clientX,t=(this.currentX-this.startX)/this.$parent.sliderSize*100),this.newPosition=this.startPosition+t,this.setPosition(this.newPosition)}},onDragEnd:function(){var e=this;this.dragging&&(setTimeout(function(){e.dragging=!1,e.hideTooltip(),e.isClick||(e.setPosition(e.newPosition),e.$parent.emitChange())},0),window.removeEventListener("mousemove",this.onDragging),window.removeEventListener("touchmove",this.onDragging),window.removeEventListener("mouseup",this.onDragEnd),window.removeEventListener("touchend",this.onDragEnd),window.removeEventListener("contextmenu",this.onDragEnd))},setPosition:function(e){var t=this;if(null!==e&&!isNaN(e)){e<0?e=0:e>100&&(e=100);var i=100/((this.max-this.min)/this.step),n=Math.round(e/i)*i*(this.max-this.min)*.01+this.min;n=parseFloat(n.toFixed(this.precision)),this.$emit("input",n),this.$nextTick(function(){t.displayTooltip(),t.$refs.tooltip&&t.$refs.tooltip.updatePopper()}),this.dragging||this.value===this.oldValue||(this.oldValue=this.value)}}}},nl,[],!1,null,null,null);rl.options.__file="packages/slider/src/button.vue";var sl=rl.exports,al={name:"ElMarker",props:{mark:{type:[String,Object]}},render:function(){var e=arguments[0],t="string"==typeof this.mark?this.mark:this.mark.label;return e("div",{class:"el-slider__marks-text",style:this.mark.style||{}},[t])}},ol=r({name:"ElSlider",mixins:[l],inject:{elForm:{default:""}},props:{min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},value:{type:[Number,Array],default:0},showInput:{type:Boolean,default:!1},showInputControls:{type:Boolean,default:!0},inputSize:{type:String,default:"small"},showStops:{type:Boolean,default:!1},showTooltip:{type:Boolean,default:!0},formatTooltip:Function,disabled:{type:Boolean,default:!1},range:{type:Boolean,default:!1},vertical:{type:Boolean,default:!1},height:{type:String},debounce:{type:Number,default:300},label:{type:String},tooltipClass:String,marks:Object},components:{ElInputNumber:_i,SliderButton:sl,SliderMarker:al},data:function(){return{firstValue:null,secondValue:null,oldValue:null,dragging:!1,sliderSize:1}},watch:{value:function(e,t){this.dragging||Array.isArray(e)&&Array.isArray(t)&&e.every(function(e,i){return e===t[i]})||this.setValues()},dragging:function(e){e||this.setValues()},firstValue:function(e){this.range?this.$emit("input",[this.minValue,this.maxValue]):this.$emit("input",e)},secondValue:function(){this.range&&this.$emit("input",[this.minValue,this.maxValue])},min:function(){this.setValues()},max:function(){this.setValues()}},methods:{valueChanged:function(){var e=this;return this.range?![this.minValue,this.maxValue].every(function(t,i){return t===e.oldValue[i]}):this.value!==this.oldValue},setValues:function(){if(this.min>this.max)console.error("[Element Error][Slider]min should not be greater than max.");else{var e=this.value;this.range&&Array.isArray(e)?e[1]<this.min?this.$emit("input",[this.min,this.min]):e[0]>this.max?this.$emit("input",[this.max,this.max]):e[0]<this.min?this.$emit("input",[this.min,e[1]]):e[1]>this.max?this.$emit("input",[e[0],this.max]):(this.firstValue=e[0],this.secondValue=e[1],this.valueChanged()&&(this.dispatch("ElFormItem","el.form.change",[this.minValue,this.maxValue]),this.oldValue=e.slice())):this.range||"number"!=typeof e||isNaN(e)||(e<this.min?this.$emit("input",this.min):e>this.max?this.$emit("input",this.max):(this.firstValue=e,this.valueChanged()&&(this.dispatch("ElFormItem","el.form.change",e),this.oldValue=e)))}},setPosition:function(e){var t=this.min+e*(this.max-this.min)/100;if(this.range){var i=void 0;i=Math.abs(this.minValue-t)<Math.abs(this.maxValue-t)?this.firstValue<this.secondValue?"button1":"button2":this.firstValue>this.secondValue?"button1":"button2",this.$refs[i].setPosition(e)}else this.$refs.button1.setPosition(e)},onSliderClick:function(e){if(!this.sliderDisabled&&!this.dragging){if(this.resetSize(),this.vertical){var t=this.$refs.slider.getBoundingClientRect().bottom;this.setPosition((t-e.clientY)/this.sliderSize*100)}else{var i=this.$refs.slider.getBoundingClientRect().left;this.setPosition((e.clientX-i)/this.sliderSize*100)}this.emitChange()}},resetSize:function(){this.$refs.slider&&(this.sliderSize=this.$refs.slider["client"+(this.vertical?"Height":"Width")])},emitChange:function(){var e=this;this.$nextTick(function(){e.$emit("change",e.range?[e.minValue,e.maxValue]:e.value)})},getStopStyle:function(e){return this.vertical?{bottom:e+"%"}:{left:e+"%"}}},computed:{stops:function(){var e=this;if(!this.showStops||this.min>this.max)return[];if(0===this.step)return[];for(var t=(this.max-this.min)/this.step,i=100*this.step/(this.max-this.min),n=[],r=1;r<t;r++)n.push(r*i);return this.range?n.filter(function(t){return t<100*(e.minValue-e.min)/(e.max-e.min)||t>100*(e.maxValue-e.min)/(e.max-e.min)}):n.filter(function(t){return t>100*(e.firstValue-e.min)/(e.max-e.min)})},markList:function(){var e=this;return this.marks?Object.keys(this.marks).map(parseFloat).sort(function(e,t){return e-t}).filter(function(t){return t<=e.max&&t>=e.min}).map(function(t){return{point:t,position:100*(t-e.min)/(e.max-e.min),mark:e.marks[t]}}):[]},minValue:function(){return Math.min(this.firstValue,this.secondValue)},maxValue:function(){return Math.max(this.firstValue,this.secondValue)},barSize:function(){return this.range?100*(this.maxValue-this.minValue)/(this.max-this.min)+"%":100*(this.firstValue-this.min)/(this.max-this.min)+"%"},barStart:function(){return this.range?100*(this.minValue-this.min)/(this.max-this.min)+"%":"0%"},precision:function(){var e=[this.min,this.max,this.step].map(function(e){var t=(""+e).split(".")[1];return t?t.length:0});return Math.max.apply(null,e)},runwayStyle:function(){return this.vertical?{height:this.height}:{}},barStyle:function(){return this.vertical?{height:this.barSize,bottom:this.barStart}:{width:this.barSize,left:this.barStart}},sliderDisabled:function(){return this.disabled||(this.elForm||{}).disabled}},mounted:function(){var e=void 0;this.range?(Array.isArray(this.value)?(this.firstValue=Math.max(this.min,this.value[0]),this.secondValue=Math.min(this.max,this.value[1])):(this.firstValue=this.min,this.secondValue=this.max),this.oldValue=[this.firstValue,this.secondValue],e=this.firstValue+"-"+this.secondValue):("number"!=typeof this.value||isNaN(this.value)?this.firstValue=this.min:this.firstValue=Math.min(this.max,Math.max(this.min,this.value)),this.oldValue=this.firstValue,e=this.firstValue),this.$el.setAttribute("aria-valuetext",e),this.$el.setAttribute("aria-label",this.label?this.label:"slider between "+this.min+" and "+this.max),this.resetSize(),window.addEventListener("resize",this.resetSize)},beforeDestroy:function(){window.removeEventListener("resize",this.resetSize)}},il,[],!1,null,null,null);ol.options.__file="packages/slider/src/main.vue";var ll=ol.exports;ll.install=function(e){e.component(ll.name,ll)};var ul=ll,cl=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-loading-fade"},on:{"after-leave":e.handleAfterLeave}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-loading-mask",class:[e.customClass,{"is-fullscreen":e.fullscreen}],style:{backgroundColor:e.background||""}},[i("div",{staticClass:"el-loading-spinner"},[e.spinner?i("i",{class:e.spinner}):i("svg",{staticClass:"circular",attrs:{viewBox:"25 25 50 50"}},[i("circle",{staticClass:"path",attrs:{cx:"50",cy:"50",r:"20",fill:"none"}})]),e.text?i("p",{staticClass:"el-loading-text"},[e._v(e._s(e.text))]):e._e()])])])};cl._withStripped=!0;var hl=r({data:function(){return{text:null,spinner:null,background:null,fullscreen:!0,visible:!1,customClass:""}},methods:{handleAfterLeave:function(){this.$emit("after-leave")},setText:function(e){this.text=e}}},cl,[],!1,null,null,null);hl.options.__file="packages/loading/src/loading.vue";var dl=hl.exports,pl=function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:300,n=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(!e||!t)throw new Error("instance & callback is required");var r=!1,s=function(){r||(r=!0,t&&t.apply(null,arguments))};n?e.$once("after-leave",s):e.$on("after-leave",s),setTimeout(function(){s()},i+100)},fl=h.a.extend(dl),ml={install:function(e){if(!e.prototype.$isServer){var t=function(t,n){n.value?e.nextTick(function(){n.modifiers.fullscreen?(t.originalPosition=ve(document.body,"position"),t.originalOverflow=ve(document.body,"overflow"),t.maskStyle.zIndex=Se.nextZIndex(),fe(t.mask,"is-fullscreen"),i(document.body,t,n)):(me(t.mask,"is-fullscreen"),n.modifiers.body?(t.originalPosition=ve(document.body,"position"),["top","left"].forEach(function(e){var i="top"===e?"scrollTop":"scrollLeft";t.maskStyle[e]=t.getBoundingClientRect()[e]+document.body[i]+document.documentElement[i]-parseInt(ve(document.body,"margin-"+e),10)+"px"}),["height","width"].forEach(function(e){t.maskStyle[e]=t.getBoundingClientRect()[e]+"px"}),i(document.body,t,n)):(t.originalPosition=ve(t,"position"),i(t,t,n)))}):(pl(t.instance,function(e){if(t.instance.hiding){t.domVisible=!1;var i=n.modifiers.fullscreen||n.modifiers.body?document.body:t;me(i,"el-loading-parent--relative"),me(i,"el-loading-parent--hidden"),t.instance.hiding=!1}},300,!0),t.instance.visible=!1,t.instance.hiding=!0)},i=function(t,i,n){i.domVisible||"none"===ve(i,"display")||"hidden"===ve(i,"visibility")?i.domVisible&&!0===i.instance.hiding&&(i.instance.visible=!0,i.instance.hiding=!1):(Object.keys(i.maskStyle).forEach(function(e){i.mask.style[e]=i.maskStyle[e]}),"absolute"!==i.originalPosition&&"fixed"!==i.originalPosition&&fe(t,"el-loading-parent--relative"),n.modifiers.fullscreen&&n.modifiers.lock&&fe(t,"el-loading-parent--hidden"),i.domVisible=!0,t.appendChild(i.mask),e.nextTick(function(){i.instance.hiding?i.instance.$emit("after-leave"):i.instance.visible=!0}),i.domInserted=!0)};e.directive("loading",{bind:function(e,i,n){var r=e.getAttribute("element-loading-text"),s=e.getAttribute("element-loading-spinner"),a=e.getAttribute("element-loading-background"),o=e.getAttribute("element-loading-custom-class"),l=n.context,u=new fl({el:document.createElement("div"),data:{text:l&&l[r]||r,spinner:l&&l[s]||s,background:l&&l[a]||a,customClass:l&&l[o]||o,fullscreen:!!i.modifiers.fullscreen}});e.instance=u,e.mask=u.$el,e.maskStyle={},i.value&&t(e,i)},update:function(e,i){e.instance.setText(e.getAttribute("element-loading-text")),i.oldValue!==i.value&&t(e,i)},unbind:function(e,i){e.domInserted&&(e.mask&&e.mask.parentNode&&e.mask.parentNode.removeChild(e.mask),t(e,{value:!1,modifiers:i.modifiers})),e.instance&&e.instance.$destroy()}})}}},vl=ml,gl=h.a.extend(dl),bl={text:null,fullscreen:!0,body:!1,lock:!1,customClass:""},yl=void 0;gl.prototype.originalPosition="",gl.prototype.originalOverflow="",gl.prototype.close=function(){var e=this;this.fullscreen&&(yl=void 0),pl(this,function(t){var i=e.fullscreen||e.body?document.body:e.target;me(i,"el-loading-parent--relative"),me(i,"el-loading-parent--hidden"),e.$el&&e.$el.parentNode&&e.$el.parentNode.removeChild(e.$el),e.$destroy()},300),this.visible=!1};var wl=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!h.a.prototype.$isServer){if("string"==typeof(e=Z({},bl,e)).target&&(e.target=document.querySelector(e.target)),e.target=e.target||document.body,e.target!==document.body?e.fullscreen=!1:e.body=!0,e.fullscreen&&yl)return yl;var t=e.body?document.body:e.target,i=new gl({el:document.createElement("div"),data:e});return function(e,t,i){var n={};e.fullscreen?(i.originalPosition=ve(document.body,"position"),i.originalOverflow=ve(document.body,"overflow"),n.zIndex=Se.nextZIndex()):e.body?(i.originalPosition=ve(document.body,"position"),["top","left"].forEach(function(t){var i="top"===t?"scrollTop":"scrollLeft";n[t]=e.target.getBoundingClientRect()[t]+document.body[i]+document.documentElement[i]+"px"}),["height","width"].forEach(function(t){n[t]=e.target.getBoundingClientRect()[t]+"px"})):i.originalPosition=ve(t,"position"),Object.keys(n).forEach(function(e){i.$el.style[e]=n[e]})}(e,t,i),"absolute"!==i.originalPosition&&"fixed"!==i.originalPosition&&fe(t,"el-loading-parent--relative"),e.fullscreen&&e.lock&&fe(t,"el-loading-parent--hidden"),t.appendChild(i.$el),h.a.nextTick(function(){i.visible=!0}),e.fullscreen&&(yl=i),i}},_l={install:function(e){e.use(vl),e.prototype.$loading=wl},directive:vl,service:wl},xl=function(){var e=this.$createElement;return(this._self._c||e)("i",{class:"el-icon-"+this.name})};xl._withStripped=!0;var Cl=r({name:"ElIcon",props:{name:String}},xl,[],!1,null,null,null);Cl.options.__file="packages/icon/src/icon.vue";var kl=Cl.exports;kl.install=function(e){e.component(kl.name,kl)};var Sl=kl,Dl={name:"ElRow",componentName:"ElRow",props:{tag:{type:String,default:"div"},gutter:Number,type:String,justify:{type:String,default:"start"},align:{type:String,default:"top"}},computed:{style:function(){var e={};return this.gutter&&(e.marginLeft="-"+this.gutter/2+"px",e.marginRight=e.marginLeft),e}},render:function(e){return e(this.tag,{class:["el-row","start"!==this.justify?"is-justify-"+this.justify:"","top"!==this.align?"is-align-"+this.align:"",{"el-row--flex":"flex"===this.type}],style:this.style},this.$slots.default)},install:function(e){e.component(Dl.name,Dl)}},$l=Dl,El="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},Tl={name:"ElCol",props:{span:{type:Number,default:24},tag:{type:String,default:"div"},offset:Number,pull:Number,push:Number,xs:[Number,Object],sm:[Number,Object],md:[Number,Object],lg:[Number,Object],xl:[Number,Object]},computed:{gutter:function(){for(var e=this.$parent;e&&"ElRow"!==e.$options.componentName;)e=e.$parent;return e?e.gutter:0}},render:function(e){var t=this,i=[],n={};return this.gutter&&(n.paddingLeft=this.gutter/2+"px",n.paddingRight=n.paddingLeft),["span","offset","pull","push"].forEach(function(e){(t[e]||0===t[e])&&i.push("span"!==e?"el-col-"+e+"-"+t[e]:"el-col-"+t[e])}),["xs","sm","md","lg","xl"].forEach(function(e){if("number"==typeof t[e])i.push("el-col-"+e+"-"+t[e]);else if("object"===El(t[e])){var n=t[e];Object.keys(n).forEach(function(t){i.push("span"!==t?"el-col-"+e+"-"+t+"-"+n[t]:"el-col-"+e+"-"+n[t])})}}),e(this.tag,{class:["el-col",i],style:n},this.$slots.default)},install:function(e){e.component(Tl.name,Tl)}},Ml=Tl,Nl=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition-group",{class:["el-upload-list","el-upload-list--"+e.listType,{"is-disabled":e.disabled}],attrs:{tag:"ul",name:"el-list"}},e._l(e.files,function(t){return i("li",{key:t.uid,class:["el-upload-list__item","is-"+t.status,e.focusing?"focusing":""],attrs:{tabindex:"0"},on:{keydown:function(i){if(!("button"in i)&&e._k(i.keyCode,"delete",[8,46],i.key,["Backspace","Delete","Del"]))return null;!e.disabled&&e.$emit("remove",t)},focus:function(t){e.focusing=!0},blur:function(t){e.focusing=!1},click:function(t){e.focusing=!1}}},[e._t("default",["uploading"!==t.status&&["picture-card","picture"].indexOf(e.listType)>-1?i("img",{staticClass:"el-upload-list__item-thumbnail",attrs:{src:t.url,alt:""}}):e._e(),i("a",{staticClass:"el-upload-list__item-name",on:{click:function(i){e.handleClick(t)}}},[i("i",{staticClass:"el-icon-document"}),e._v(e._s(t.name)+"\n      ")]),i("label",{staticClass:"el-upload-list__item-status-label"},[i("i",{class:{"el-icon-upload-success":!0,"el-icon-circle-check":"text"===e.listType,"el-icon-check":["picture-card","picture"].indexOf(e.listType)>-1}})]),e.disabled?e._e():i("i",{staticClass:"el-icon-close",on:{click:function(i){e.$emit("remove",t)}}}),e.disabled?e._e():i("i",{staticClass:"el-icon-close-tip"},[e._v(e._s(e.t("el.upload.deleteTip")))]),"uploading"===t.status?i("el-progress",{attrs:{type:"picture-card"===e.listType?"circle":"line","stroke-width":"picture-card"===e.listType?6:2,percentage:e.parsePercentage(t.percentage)}}):e._e(),"picture-card"===e.listType?i("span",{staticClass:"el-upload-list__item-actions"},[e.handlePreview&&"picture-card"===e.listType?i("span",{staticClass:"el-upload-list__item-preview",on:{click:function(i){e.handlePreview(t)}}},[i("i",{staticClass:"el-icon-zoom-in"})]):e._e(),e.disabled?e._e():i("span",{staticClass:"el-upload-list__item-delete",on:{click:function(i){e.$emit("remove",t)}}},[i("i",{staticClass:"el-icon-delete"})])]):e._e()],{file:t})],2)}),0)};Nl._withStripped=!0;var Pl=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-progress",class:["el-progress--"+e.type,e.status?"is-"+e.status:"",{"el-progress--without-text":!e.showText,"el-progress--text-inside":e.textInside}],attrs:{role:"progressbar","aria-valuenow":e.percentage,"aria-valuemin":"0","aria-valuemax":"100"}},["line"===e.type?i("div",{staticClass:"el-progress-bar"},[i("div",{staticClass:"el-progress-bar__outer",style:{height:e.strokeWidth+"px"}},[i("div",{staticClass:"el-progress-bar__inner",style:e.barStyle},[e.showText&&e.textInside?i("div",{staticClass:"el-progress-bar__innerText"},[e._v(e._s(e.content))]):e._e()])])]):i("div",{staticClass:"el-progress-circle",style:{height:e.width+"px",width:e.width+"px"}},[i("svg",{attrs:{viewBox:"0 0 100 100"}},[i("path",{staticClass:"el-progress-circle__track",style:e.trailPathStyle,attrs:{d:e.trackPath,stroke:"#e5e9f2","stroke-width":e.relativeStrokeWidth,fill:"none"}}),i("path",{staticClass:"el-progress-circle__path",style:e.circlePathStyle,attrs:{d:e.trackPath,stroke:e.stroke,fill:"none","stroke-linecap":e.strokeLinecap,"stroke-width":e.percentage?e.relativeStrokeWidth:0}})])]),e.showText&&!e.textInside?i("div",{staticClass:"el-progress__text",style:{fontSize:e.progressTextSize+"px"}},[e.status?i("i",{class:e.iconClass}):[e._v(e._s(e.content))]],2):e._e()])};Pl._withStripped=!0;var Ol=r({name:"ElProgress",props:{type:{type:String,default:"line",validator:function(e){return["line","circle","dashboard"].indexOf(e)>-1}},percentage:{type:Number,default:0,required:!0,validator:function(e){return e>=0&&e<=100}},status:{type:String,validator:function(e){return["success","exception","warning"].indexOf(e)>-1}},strokeWidth:{type:Number,default:6},strokeLinecap:{type:String,default:"round"},textInside:{type:Boolean,default:!1},width:{type:Number,default:126},showText:{type:Boolean,default:!0},color:{type:[String,Array,Function],default:""},format:Function},computed:{barStyle:function(){var e={};return e.width=this.percentage+"%",e.backgroundColor=this.getCurrentColor(this.percentage),e},relativeStrokeWidth:function(){return(this.strokeWidth/this.width*100).toFixed(1)},radius:function(){return"circle"===this.type||"dashboard"===this.type?parseInt(50-parseFloat(this.relativeStrokeWidth)/2,10):0},trackPath:function(){var e=this.radius,t="dashboard"===this.type;return"\n        M 50 50\n        m 0 "+(t?"":"-")+e+"\n        a "+e+" "+e+" 0 1 1 0 "+(t?"-":"")+2*e+"\n        a "+e+" "+e+" 0 1 1 0 "+(t?"":"-")+2*e+"\n        "},perimeter:function(){return 2*Math.PI*this.radius},rate:function(){return"dashboard"===this.type?.75:1},strokeDashoffset:function(){return-1*this.perimeter*(1-this.rate)/2+"px"},trailPathStyle:function(){return{strokeDasharray:this.perimeter*this.rate+"px, "+this.perimeter+"px",strokeDashoffset:this.strokeDashoffset}},circlePathStyle:function(){return{strokeDasharray:this.perimeter*this.rate*(this.percentage/100)+"px, "+this.perimeter+"px",strokeDashoffset:this.strokeDashoffset,transition:"stroke-dasharray 0.6s ease 0s, stroke 0.6s ease"}},stroke:function(){var e=void 0;if(this.color)e=this.getCurrentColor(this.percentage);else switch(this.status){case"success":e="#13ce66";break;case"exception":e="#ff4949";break;case"warning":e="#e6a23c";break;default:e="#20a0ff"}return e},iconClass:function(){return"warning"===this.status?"el-icon-warning":"line"===this.type?"success"===this.status?"el-icon-circle-check":"el-icon-circle-close":"success"===this.status?"el-icon-check":"el-icon-close"},progressTextSize:function(){return"line"===this.type?12+.4*this.strokeWidth:.111111*this.width+2},content:function(){return"function"==typeof this.format?this.format(this.percentage)||"":this.percentage+"%"}},methods:{getCurrentColor:function(e){return"function"==typeof this.color?this.color(e):"string"==typeof this.color?this.color:this.getLevelColor(e)},getLevelColor:function(e){for(var t=this.getColorArray().sort(function(e,t){return e.percentage-t.percentage}),i=0;i<t.length;i++)if(t[i].percentage>e)return t[i].color;return t[t.length-1].color},getColorArray:function(){var e=this.color,t=100/e.length;return e.map(function(e,i){return"string"==typeof e?{color:e,percentage:(i+1)*t}:e})}}},Pl,[],!1,null,null,null);Ol.options.__file="packages/progress/src/progress.vue";var Il=Ol.exports;Il.install=function(e){e.component(Il.name,Il)};var Al=Il,Fl=r({name:"ElUploadList",mixins:[q],data:function(){return{focusing:!1}},components:{ElProgress:Al},props:{files:{type:Array,default:function(){return[]}},disabled:{type:Boolean,default:!1},handlePreview:Function,listType:String},methods:{parsePercentage:function(e){return parseInt(e,10)},handleClick:function(e){this.handlePreview&&this.handlePreview(e)}}},Nl,[],!1,null,null,null);Fl.options.__file="packages/upload/src/upload-list.vue";var Ll=Fl.exports,Vl=i(6),Bl=i.n(Vl);var zl=function(){var e=this,t=e.$createElement;return(e._self._c||t)("div",{staticClass:"el-upload-dragger",class:{"is-dragover":e.dragover},on:{drop:function(t){return t.preventDefault(),e.onDrop(t)},dragover:function(t){return t.preventDefault(),e.onDragover(t)},dragleave:function(t){t.preventDefault(),e.dragover=!1}}},[e._t("default")],2)};zl._withStripped=!0;var Hl=r({name:"ElUploadDrag",props:{disabled:Boolean},inject:{uploader:{default:""}},data:function(){return{dragover:!1}},methods:{onDragover:function(){this.disabled||(this.dragover=!0)},onDrop:function(e){if(!this.disabled&&this.uploader){var t=this.uploader.accept;this.dragover=!1,t?this.$emit("file",[].slice.call(e.dataTransfer.files).filter(function(e){var i=e.type,n=e.name,r=n.indexOf(".")>-1?"."+n.split(".").pop():"",s=i.replace(/\/.*$/,"");return t.split(",").map(function(e){return e.trim()}).filter(function(e){return e}).some(function(e){return/\..+$/.test(e)?r===e:/\/\*$/.test(e)?s===e.replace(/\/\*$/,""):!!/^[^\/]+\/[^\/]+$/.test(e)&&i===e})})):this.$emit("file",e.dataTransfer.files)}}}},zl,[],!1,null,null,null);Hl.options.__file="packages/upload/src/upload-dragger.vue";var Rl=r({inject:["uploader"],components:{UploadDragger:Hl.exports},props:{type:String,action:{type:String,required:!0},name:{type:String,default:"file"},data:Object,headers:Object,withCredentials:Boolean,multiple:Boolean,accept:String,onStart:Function,onProgress:Function,onSuccess:Function,onError:Function,beforeUpload:Function,drag:Boolean,onPreview:{type:Function,default:function(){}},onRemove:{type:Function,default:function(){}},fileList:Array,autoUpload:Boolean,listType:String,httpRequest:{type:Function,default:function(e){if("undefined"!=typeof XMLHttpRequest){var t=new XMLHttpRequest,i=e.action;t.upload&&(t.upload.onprogress=function(t){t.total>0&&(t.percent=t.loaded/t.total*100),e.onProgress(t)});var n=new FormData;e.data&&Object.keys(e.data).forEach(function(t){n.append(t,e.data[t])}),n.append(e.filename,e.file,e.file.name),t.onerror=function(t){e.onError(t)},t.onload=function(){if(t.status<200||t.status>=300)return e.onError(function(e,t,i){var n=void 0;n=i.response?""+(i.response.error||i.response):i.responseText?""+i.responseText:"fail to post "+e+" "+i.status;var r=new Error(n);return r.status=i.status,r.method="post",r.url=e,r}(i,0,t));e.onSuccess(function(e){var t=e.responseText||e.response;if(!t)return t;try{return JSON.parse(t)}catch(e){return t}}(t))},t.open("post",i,!0),e.withCredentials&&"withCredentials"in t&&(t.withCredentials=!0);var r=e.headers||{};for(var s in r)r.hasOwnProperty(s)&&null!==r[s]&&t.setRequestHeader(s,r[s]);return t.send(n),t}}},disabled:Boolean,limit:Number,onExceed:Function},data:function(){return{mouseover:!1,reqs:{}}},methods:{isImage:function(e){return-1!==e.indexOf("image")},handleChange:function(e){var t=e.target.files;t&&this.uploadFiles(t)},uploadFiles:function(e){var t=this;if(this.limit&&this.fileList.length+e.length>this.limit)this.onExceed&&this.onExceed(e,this.fileList);else{var i=Array.prototype.slice.call(e);this.multiple||(i=i.slice(0,1)),0!==i.length&&i.forEach(function(e){t.onStart(e),t.autoUpload&&t.upload(e)})}},upload:function(e){var t=this;if(this.$refs.input.value=null,!this.beforeUpload)return this.post(e);var i=this.beforeUpload(e);i&&i.then?i.then(function(i){var n=Object.prototype.toString.call(i);if("[object File]"===n||"[object Blob]"===n){for(var r in"[object Blob]"===n&&(i=new File([i],e.name,{type:e.type})),e)e.hasOwnProperty(r)&&(i[r]=e[r]);t.post(i)}else t.post(e)},function(){t.onRemove(null,e)}):!1!==i?this.post(e):this.onRemove(null,e)},abort:function(e){var t=this.reqs;if(e){var i=e;e.uid&&(i=e.uid),t[i]&&t[i].abort()}else Object.keys(t).forEach(function(e){t[e]&&t[e].abort(),delete t[e]})},post:function(e){var t=this,i=e.uid,n={headers:this.headers,withCredentials:this.withCredentials,file:e,data:this.data,filename:this.name,action:this.action,onProgress:function(i){t.onProgress(i,e)},onSuccess:function(n){t.onSuccess(n,e),delete t.reqs[i]},onError:function(n){t.onError(n,e),delete t.reqs[i]}},r=this.httpRequest(n);this.reqs[i]=r,r&&r.then&&r.then(n.onSuccess,n.onError)},handleClick:function(){this.disabled||(this.$refs.input.value=null,this.$refs.input.click())},handleKeydown:function(e){e.target===e.currentTarget&&(13!==e.keyCode&&32!==e.keyCode||this.handleClick())}},render:function(e){var t=this.handleClick,i=this.drag,n=this.name,r=this.handleChange,s=this.multiple,a=this.accept,o=this.listType,l=this.uploadFiles,u=this.disabled,c={class:{"el-upload":!0},on:{click:t,keydown:this.handleKeydown}};return c.class["el-upload--"+o]=!0,e("div",Bl()([c,{attrs:{tabindex:"0"}}]),[i?e("upload-dragger",{attrs:{disabled:u},on:{file:l}},[this.$slots.default]):this.$slots.default,e("input",{class:"el-upload__input",attrs:{type:"file",name:n,multiple:s,accept:a},ref:"input",on:{change:r}})])}},void 0,void 0,!1,null,null,null);Rl.options.__file="packages/upload/src/upload.vue";var Wl=Rl.exports;function jl(){}var ql=r({name:"ElUpload",mixins:[K],components:{ElProgress:Al,UploadList:Ll,Upload:Wl},provide:function(){return{uploader:this}},inject:{elForm:{default:""}},props:{action:{type:String,required:!0},headers:{type:Object,default:function(){return{}}},data:Object,multiple:Boolean,name:{type:String,default:"file"},drag:Boolean,dragger:Boolean,withCredentials:Boolean,showFileList:{type:Boolean,default:!0},accept:String,type:{type:String,default:"select"},beforeUpload:Function,beforeRemove:Function,onRemove:{type:Function,default:jl},onChange:{type:Function,default:jl},onPreview:{type:Function},onSuccess:{type:Function,default:jl},onProgress:{type:Function,default:jl},onError:{type:Function,default:jl},fileList:{type:Array,default:function(){return[]}},autoUpload:{type:Boolean,default:!0},listType:{type:String,default:"text"},httpRequest:Function,disabled:Boolean,limit:Number,onExceed:{type:Function,default:jl}},data:function(){return{uploadFiles:[],dragOver:!1,draging:!1,tempIndex:1}},computed:{uploadDisabled:function(){return this.disabled||(this.elForm||{}).disabled}},watch:{listType:function(e){"picture-card"!==e&&"picture"!==e||(this.uploadFiles=this.uploadFiles.map(function(e){if(!e.url&&e.raw)try{e.url=URL.createObjectURL(e.raw)}catch(e){console.error("[Element Error][Upload]",e)}return e}))},fileList:{immediate:!0,handler:function(e){var t=this;this.uploadFiles=e.map(function(e){return e.uid=e.uid||Date.now()+t.tempIndex++,e.status=e.status||"success",e})}}},methods:{handleStart:function(e){e.uid=Date.now()+this.tempIndex++;var t={status:"ready",name:e.name,size:e.size,percentage:0,uid:e.uid,raw:e};if("picture-card"===this.listType||"picture"===this.listType)try{t.url=URL.createObjectURL(e)}catch(e){return void console.error("[Element Error][Upload]",e)}this.uploadFiles.push(t),this.onChange(t,this.uploadFiles)},handleProgress:function(e,t){var i=this.getFile(t);this.onProgress(e,i,this.uploadFiles),i.status="uploading",i.percentage=e.percent||0},handleSuccess:function(e,t){var i=this.getFile(t);i&&(i.status="success",i.response=e,this.onSuccess(e,i,this.uploadFiles),this.onChange(i,this.uploadFiles))},handleError:function(e,t){var i=this.getFile(t),n=this.uploadFiles;i.status="fail",n.splice(n.indexOf(i),1),this.onError(e,i,this.uploadFiles),this.onChange(i,this.uploadFiles)},handleRemove:function(e,t){var i=this;t&&(e=this.getFile(t));var n=function(){i.abort(e);var t=i.uploadFiles;t.splice(t.indexOf(e),1),i.onRemove(e,t)};if(this.beforeRemove){if("function"==typeof this.beforeRemove){var r=this.beforeRemove(e,this.uploadFiles);r&&r.then?r.then(function(){n()},jl):!1!==r&&n()}}else n()},getFile:function(e){var t=this.uploadFiles,i=void 0;return t.every(function(t){return!(i=e.uid===t.uid?t:null)}),i},abort:function(e){this.$refs["upload-inner"].abort(e)},clearFiles:function(){this.uploadFiles=[]},submit:function(){var e=this;this.uploadFiles.filter(function(e){return"ready"===e.status}).forEach(function(t){e.$refs["upload-inner"].upload(t.raw)})},getMigratingConfig:function(){return{props:{"default-file-list":"default-file-list is renamed to file-list.","show-upload-list":"show-upload-list is renamed to show-file-list.","thumbnail-mode":"thumbnail-mode has been deprecated, you can implement the same effect according to this case: http://element.eleme.io/#/zh-CN/component/upload#yong-hu-tou-xiang-shang-chuan"}}}},beforeDestroy:function(){this.uploadFiles.forEach(function(e){e.url&&0===e.url.indexOf("blob:")&&URL.revokeObjectURL(e.url)})},render:function(e){var t=this,i=void 0;this.showFileList&&(i=e(Ll,{attrs:{disabled:this.uploadDisabled,listType:this.listType,files:this.uploadFiles,handlePreview:this.onPreview},on:{remove:this.handleRemove}},[function(e){if(t.$scopedSlots.file)return t.$scopedSlots.file({file:e.file})}]));var n=e("upload",{props:{type:this.type,drag:this.drag,action:this.action,multiple:this.multiple,"before-upload":this.beforeUpload,"with-credentials":this.withCredentials,headers:this.headers,name:this.name,data:this.data,accept:this.accept,fileList:this.uploadFiles,autoUpload:this.autoUpload,listType:this.listType,disabled:this.uploadDisabled,limit:this.limit,"on-exceed":this.onExceed,"on-start":this.handleStart,"on-progress":this.handleProgress,"on-success":this.handleSuccess,"on-error":this.handleError,"on-preview":this.onPreview,"on-remove":this.handleRemove,"http-request":this.httpRequest},ref:"upload-inner"},[this.$slots.trigger||this.$slots.default]);return e("div",["picture-card"===this.listType?i:"",this.$slots.trigger?[n,this.$slots.default]:n,this.$slots.tip,"picture-card"!==this.listType?i:""])}},void 0,void 0,!1,null,null,null);ql.options.__file="packages/upload/src/index.vue";var Yl=ql.exports;Yl.install=function(e){e.component(Yl.name,Yl)};var Kl=Yl,Gl=function(){var e=this.$createElement,t=this._self._c||e;return t("span",{staticClass:"el-spinner"},[t("svg",{staticClass:"el-spinner-inner",style:{width:this.radius/2+"px",height:this.radius/2+"px"},attrs:{viewBox:"0 0 50 50"}},[t("circle",{staticClass:"path",attrs:{cx:"25",cy:"25",r:"20",fill:"none",stroke:this.strokeColor,"stroke-width":this.strokeWidth}})])])};Gl._withStripped=!0;var Ul=r({name:"ElSpinner",props:{type:String,radius:{type:Number,default:100},strokeWidth:{type:Number,default:5},strokeColor:{type:String,default:"#efefef"}}},Gl,[],!1,null,null,null);Ul.options.__file="packages/spinner/src/spinner.vue";var Xl=Ul.exports;Xl.install=function(e){e.component(Xl.name,Xl)};var Jl=Xl,Zl=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-message-fade"},on:{"after-leave":e.handleAfterLeave}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],class:["el-message",e.type&&!e.iconClass?"el-message--"+e.type:"",e.center?"is-center":"",e.showClose?"is-closable":"",e.customClass],style:e.positionStyle,attrs:{role:"alert"},on:{mouseenter:e.clearTimer,mouseleave:e.startTimer}},[e.iconClass?i("i",{class:e.iconClass}):i("i",{class:e.typeClass}),e._t("default",[e.dangerouslyUseHTMLString?i("p",{staticClass:"el-message__content",domProps:{innerHTML:e._s(e.message)}}):i("p",{staticClass:"el-message__content"},[e._v(e._s(e.message))])]),e.showClose?i("i",{staticClass:"el-message__closeBtn el-icon-close",on:{click:e.close}}):e._e()],2)])};Zl._withStripped=!0;var Ql={success:"success",info:"info",warning:"warning",error:"error"},eu=r({data:function(){return{visible:!1,message:"",duration:3e3,type:"info",iconClass:"",customClass:"",onClose:null,showClose:!1,closed:!1,verticalOffset:20,timer:null,dangerouslyUseHTMLString:!1,center:!1}},computed:{typeClass:function(){return this.type&&!this.iconClass?"el-message__icon el-icon-"+Ql[this.type]:""},positionStyle:function(){return{top:this.verticalOffset+"px"}}},watch:{closed:function(e){e&&(this.visible=!1)}},methods:{handleAfterLeave:function(){this.$destroy(!0),this.$el.parentNode.removeChild(this.$el)},close:function(){this.closed=!0,"function"==typeof this.onClose&&this.onClose(this)},clearTimer:function(){clearTimeout(this.timer)},startTimer:function(){var e=this;this.duration>0&&(this.timer=setTimeout(function(){e.closed||e.close()},this.duration))},keydown:function(e){27===e.keyCode&&(this.closed||this.close())}},mounted:function(){this.startTimer(),document.addEventListener("keydown",this.keydown)},beforeDestroy:function(){document.removeEventListener("keydown",this.keydown)}},Zl,[],!1,null,null,null);eu.options.__file="packages/message/src/main.vue";var tu=eu.exports,iu=h.a.extend(tu),nu=void 0,ru=[],su=1,au=function e(t){if(!h.a.prototype.$isServer){"string"==typeof(t=t||{})&&(t={message:t});var i=t.onClose,n="message_"+su++;t.onClose=function(){e.close(n,i)},(nu=new iu({data:t})).id=n,ua(nu.message)&&(nu.$slots.default=[nu.message],nu.message=null),nu.$mount(),document.body.appendChild(nu.$el);var r=t.offset||20;return ru.forEach(function(e){r+=e.$el.offsetHeight+16}),nu.verticalOffset=r,nu.visible=!0,nu.$el.style.zIndex=Se.nextZIndex(),ru.push(nu),nu}};["success","warning","info","error"].forEach(function(e){au[e]=function(t){return"string"==typeof t&&(t={message:t}),t.type=e,au(t)}}),au.close=function(e,t){for(var i=ru.length,n=-1,r=void 0,s=0;s<i;s++)if(e===ru[s].id){r=ru[s].$el.offsetHeight,n=s,"function"==typeof t&&t(ru[s]),ru.splice(s,1);break}if(!(i<=1||-1===n||n>ru.length-1))for(var a=n;a<i-1;a++){var o=ru[a].$el;o.style.top=parseInt(o.style.top,10)-r-16+"px"}},au.closeAll=function(){for(var e=ru.length-1;e>=0;e--)ru[e].close()};var ou=au,lu=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-badge"},[e._t("default"),i("transition",{attrs:{name:"el-zoom-in-center"}},[i("sup",{directives:[{name:"show",rawName:"v-show",value:!e.hidden&&(e.content||0===e.content||e.isDot),expression:"!hidden && (content || content === 0 || isDot)"}],staticClass:"el-badge__content",class:["el-badge__content--"+e.type,{"is-fixed":e.$slots.default,"is-dot":e.isDot}],domProps:{textContent:e._s(e.content)}})])],2)};lu._withStripped=!0;var uu=r({name:"ElBadge",props:{value:[String,Number],max:Number,isDot:Boolean,hidden:Boolean,type:{type:String,validator:function(e){return["primary","success","warning","info","danger"].indexOf(e)>-1}}},computed:{content:function(){if(!this.isDot){var e=this.value,t=this.max;return"number"==typeof e&&"number"==typeof t&&t<e?t+"+":e}}}},lu,[],!1,null,null,null);uu.options.__file="packages/badge/src/main.vue";var cu=uu.exports;cu.install=function(e){e.component(cu.name,cu)};var hu=cu,du=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-card",class:e.shadow?"is-"+e.shadow+"-shadow":"is-always-shadow"},[e.$slots.header||e.header?i("div",{staticClass:"el-card__header"},[e._t("header",[e._v(e._s(e.header))])],2):e._e(),i("div",{staticClass:"el-card__body",style:e.bodyStyle},[e._t("default")],2)])};du._withStripped=!0;var pu=r({name:"ElCard",props:{header:{},bodyStyle:{},shadow:{type:String}}},du,[],!1,null,null,null);pu.options.__file="packages/card/src/main.vue";var fu=pu.exports;fu.install=function(e){e.component(fu.name,fu)};var mu=fu,vu=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-rate",attrs:{role:"slider","aria-valuenow":e.currentValue,"aria-valuetext":e.text,"aria-valuemin":"0","aria-valuemax":e.max,tabindex:"0"},on:{keydown:e.handleKey}},[e._l(e.max,function(t,n){return i("span",{key:n,staticClass:"el-rate__item",style:{cursor:e.rateDisabled?"auto":"pointer"},on:{mousemove:function(i){e.setCurrentValue(t,i)},mouseleave:e.resetCurrentValue,click:function(i){e.selectValue(t)}}},[i("i",{staticClass:"el-rate__icon",class:[e.classes[t-1],{hover:e.hoverIndex===t}],style:e.getIconStyle(t)},[e.showDecimalIcon(t)?i("i",{staticClass:"el-rate__decimal",class:e.decimalIconClass,style:e.decimalStyle}):e._e()])])}),e.showText||e.showScore?i("span",{staticClass:"el-rate__text",style:{color:e.textColor}},[e._v(e._s(e.text))]):e._e()],2)};vu._withStripped=!0;var gu=r({name:"ElRate",mixins:[K],inject:{elForm:{default:""}},data:function(){return{pointerAtLeftHalf:!0,currentValue:this.value,hoverIndex:-1}},props:{value:{type:Number,default:0},lowThreshold:{type:Number,default:2},highThreshold:{type:Number,default:4},max:{type:Number,default:5},colors:{type:[Array,Object],default:function(){return["#F7BA2A","#F7BA2A","#F7BA2A"]}},voidColor:{type:String,default:"#C6D1DE"},disabledVoidColor:{type:String,default:"#EFF2F7"},iconClasses:{type:[Array,Object],default:function(){return["el-icon-star-on","el-icon-star-on","el-icon-star-on"]}},voidIconClass:{type:String,default:"el-icon-star-off"},disabledVoidIconClass:{type:String,default:"el-icon-star-on"},disabled:{type:Boolean,default:!1},allowHalf:{type:Boolean,default:!1},showText:{type:Boolean,default:!1},showScore:{type:Boolean,default:!1},textColor:{type:String,default:"#1f2d3d"},texts:{type:Array,default:function(){return["极差","失望","一般","满意","惊喜"]}},scoreTemplate:{type:String,default:"{value}"}},computed:{text:function(){var e="";return this.showScore?e=this.scoreTemplate.replace(/\{\s*value\s*\}/,this.rateDisabled?this.value:this.currentValue):this.showText&&(e=this.texts[Math.ceil(this.currentValue)-1]),e},decimalStyle:function(){var e="";return this.rateDisabled?e=this.valueDecimal+"%":this.allowHalf&&(e="50%"),{color:this.activeColor,width:e}},valueDecimal:function(){return 100*this.value-100*Math.floor(this.value)},classMap:function(){var e;return Array.isArray(this.iconClasses)?((e={})[this.lowThreshold]=this.iconClasses[0],e[this.highThreshold]={value:this.iconClasses[1],excluded:!0},e[this.max]=this.iconClasses[2],e):this.iconClasses},decimalIconClass:function(){return this.getValueFromMap(this.value,this.classMap)},voidClass:function(){return this.rateDisabled?this.disabledVoidIconClass:this.voidIconClass},activeClass:function(){return this.getValueFromMap(this.currentValue,this.classMap)},colorMap:function(){var e;return Array.isArray(this.colors)?((e={})[this.lowThreshold]=this.colors[0],e[this.highThreshold]={value:this.colors[1],excluded:!0},e[this.max]=this.colors[2],e):this.colors},activeColor:function(){return this.getValueFromMap(this.currentValue,this.colorMap)},classes:function(){var e=[],t=0,i=this.currentValue;for(this.allowHalf&&this.currentValue!==Math.floor(this.currentValue)&&i--;t<i;t++)e.push(this.activeClass);for(;t<this.max;t++)e.push(this.voidClass);return e},rateDisabled:function(){return this.disabled||(this.elForm||{}).disabled}},watch:{value:function(e){this.currentValue=e,this.pointerAtLeftHalf=this.value!==Math.floor(this.value)}},methods:{getMigratingConfig:function(){return{props:{"text-template":"text-template is renamed to score-template."}}},getValueFromMap:function(e,t){var i=Object.keys(t).filter(function(i){var n=t[i];return!!m(n)&&n.excluded?e<i:e<=i}).sort(function(e,t){return e-t}),n=t[i[0]];return m(n)?n.value:n||""},showDecimalIcon:function(e){var t=this.rateDisabled&&this.valueDecimal>0&&e-1<this.value&&e>this.value,i=this.allowHalf&&this.pointerAtLeftHalf&&e-.5<=this.currentValue&&e>this.currentValue;return t||i},getIconStyle:function(e){var t=this.rateDisabled?this.disabledVoidColor:this.voidColor;return{color:e<=this.currentValue?this.activeColor:t}},selectValue:function(e){this.rateDisabled||(this.allowHalf&&this.pointerAtLeftHalf?(this.$emit("input",this.currentValue),this.$emit("change",this.currentValue)):(this.$emit("input",e),this.$emit("change",e)))},handleKey:function(e){if(!this.rateDisabled){var t=this.currentValue,i=e.keyCode;38===i||39===i?(this.allowHalf?t+=.5:t+=1,e.stopPropagation(),e.preventDefault()):37!==i&&40!==i||(this.allowHalf?t-=.5:t-=1,e.stopPropagation(),e.preventDefault()),t=(t=t<0?0:t)>this.max?this.max:t,this.$emit("input",t),this.$emit("change",t)}},setCurrentValue:function(e,t){if(!this.rateDisabled){if(this.allowHalf){var i=t.target;pe(i,"el-rate__item")&&(i=i.querySelector(".el-rate__icon")),pe(i,"el-rate__decimal")&&(i=i.parentNode),this.pointerAtLeftHalf=2*t.offsetX<=i.clientWidth,this.currentValue=this.pointerAtLeftHalf?e-.5:e}else this.currentValue=e;this.hoverIndex=e}},resetCurrentValue:function(){this.rateDisabled||(this.allowHalf&&(this.pointerAtLeftHalf=this.value!==Math.floor(this.value)),this.currentValue=this.value,this.hoverIndex=-1)}},created:function(){this.value||this.$emit("input",0)}},vu,[],!1,null,null,null);gu.options.__file="packages/rate/src/main.vue";var bu=gu.exports;bu.install=function(e){e.component(bu.name,bu)};var yu=bu,wu=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-steps",class:[!this.simple&&"el-steps--"+this.direction,this.simple&&"el-steps--simple"]},[this._t("default")],2)};wu._withStripped=!0;var _u=r({name:"ElSteps",mixins:[K],props:{space:[Number,String],active:Number,direction:{type:String,default:"horizontal"},alignCenter:Boolean,simple:Boolean,finishStatus:{type:String,default:"finish"},processStatus:{type:String,default:"process"}},data:function(){return{steps:[],stepOffset:0}},methods:{getMigratingConfig:function(){return{props:{center:"center is removed."}}}},watch:{active:function(e,t){this.$emit("change",e,t)},steps:function(e){e.forEach(function(e,t){e.index=t})}}},wu,[],!1,null,null,null);_u.options.__file="packages/steps/src/steps.vue";var xu=_u.exports;xu.install=function(e){e.component(xu.name,xu)};var Cu=xu,ku=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-step",class:[!e.isSimple&&"is-"+e.$parent.direction,e.isSimple&&"is-simple",e.isLast&&!e.space&&!e.isCenter&&"is-flex",e.isCenter&&!e.isVertical&&!e.isSimple&&"is-center"],style:e.style},[i("div",{staticClass:"el-step__head",class:"is-"+e.currentStatus},[i("div",{staticClass:"el-step__line",style:e.isLast?"":{marginRight:e.$parent.stepOffset+"px"}},[i("i",{staticClass:"el-step__line-inner",style:e.lineStyle})]),i("div",{staticClass:"el-step__icon",class:"is-"+(e.icon?"icon":"text")},["success"!==e.currentStatus&&"error"!==e.currentStatus?e._t("icon",[e.icon?i("i",{staticClass:"el-step__icon-inner",class:[e.icon]}):e._e(),e.icon||e.isSimple?e._e():i("div",{staticClass:"el-step__icon-inner"},[e._v(e._s(e.index+1))])]):i("i",{staticClass:"el-step__icon-inner is-status",class:["el-icon-"+("success"===e.currentStatus?"check":"close")]})],2)]),i("div",{staticClass:"el-step__main"},[i("div",{ref:"title",staticClass:"el-step__title",class:["is-"+e.currentStatus]},[e._t("title",[e._v(e._s(e.title))])],2),e.isSimple?i("div",{staticClass:"el-step__arrow"}):i("div",{staticClass:"el-step__description",class:["is-"+e.currentStatus]},[e._t("description",[e._v(e._s(e.description))])],2)])])};ku._withStripped=!0;var Su=r({name:"ElStep",props:{title:String,icon:String,description:String,status:String},data:function(){return{index:-1,lineStyle:{},internalStatus:""}},beforeCreate:function(){this.$parent.steps.push(this)},beforeDestroy:function(){var e=this.$parent.steps,t=e.indexOf(this);t>=0&&e.splice(t,1)},computed:{currentStatus:function(){return this.status||this.internalStatus},prevStatus:function(){var e=this.$parent.steps[this.index-1];return e?e.currentStatus:"wait"},isCenter:function(){return this.$parent.alignCenter},isVertical:function(){return"vertical"===this.$parent.direction},isSimple:function(){return this.$parent.simple},isLast:function(){var e=this.$parent;return e.steps[e.steps.length-1]===this},stepsCount:function(){return this.$parent.steps.length},space:function(){var e=this.isSimple,t=this.$parent.space;return e?"":t},style:function(){var e={},t=this.$parent.steps.length,i="number"==typeof this.space?this.space+"px":this.space?this.space:100/(t-(this.isCenter?0:1))+"%";return e.flexBasis=i,this.isVertical?e:(this.isLast?e.maxWidth=100/this.stepsCount+"%":e.marginRight=-this.$parent.stepOffset+"px",e)}},methods:{updateStatus:function(e){var t=this.$parent.$children[this.index-1];e>this.index?this.internalStatus=this.$parent.finishStatus:e===this.index&&"error"!==this.prevStatus?this.internalStatus=this.$parent.processStatus:this.internalStatus="wait",t&&t.calcProgress(this.internalStatus)},calcProgress:function(e){var t=100,i={};i.transitionDelay=150*this.index+"ms",e===this.$parent.processStatus?(this.currentStatus,t=0):"wait"===e&&(t=0,i.transitionDelay=-150*this.index+"ms"),i.borderWidth=t&&!this.isSimple?"1px":0,"vertical"===this.$parent.direction?i.height=t+"%":i.width=t+"%",this.lineStyle=i}},mounted:function(){var e=this,t=this.$watch("index",function(i){e.$watch("$parent.active",e.updateStatus,{immediate:!0}),e.$watch("$parent.processStatus",function(){var t=e.$parent.active;e.updateStatus(t)},{immediate:!0}),t()})}},ku,[],!1,null,null,null);Su.options.__file="packages/steps/src/step.vue";var Du=Su.exports;Du.install=function(e){e.component(Du.name,Du)};var $u=Du,Eu=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{class:e.carouselClasses,on:{mouseenter:function(t){return t.stopPropagation(),e.handleMouseEnter(t)},mouseleave:function(t){return t.stopPropagation(),e.handleMouseLeave(t)}}},[i("div",{staticClass:"el-carousel__container",style:{height:e.height}},[e.arrowDisplay?i("transition",{attrs:{name:"carousel-arrow-left"}},[i("button",{directives:[{name:"show",rawName:"v-show",value:("always"===e.arrow||e.hover)&&(e.loop||e.activeIndex>0),expression:"(arrow === 'always' || hover) && (loop || activeIndex > 0)"}],staticClass:"el-carousel__arrow el-carousel__arrow--left",attrs:{type:"button"},on:{mouseenter:function(t){e.handleButtonEnter("left")},mouseleave:e.handleButtonLeave,click:function(t){t.stopPropagation(),e.throttledArrowClick(e.activeIndex-1)}}},[i("i",{staticClass:"el-icon-arrow-left"})])]):e._e(),e.arrowDisplay?i("transition",{attrs:{name:"carousel-arrow-right"}},[i("button",{directives:[{name:"show",rawName:"v-show",value:("always"===e.arrow||e.hover)&&(e.loop||e.activeIndex<e.items.length-1),expression:"(arrow === 'always' || hover) && (loop || activeIndex < items.length - 1)"}],staticClass:"el-carousel__arrow el-carousel__arrow--right",attrs:{type:"button"},on:{mouseenter:function(t){e.handleButtonEnter("right")},mouseleave:e.handleButtonLeave,click:function(t){t.stopPropagation(),e.throttledArrowClick(e.activeIndex+1)}}},[i("i",{staticClass:"el-icon-arrow-right"})])]):e._e(),e._t("default")],2),"none"!==e.indicatorPosition?i("ul",{class:e.indicatorsClasses},e._l(e.items,function(t,n){return i("li",{key:n,class:["el-carousel__indicator","el-carousel__indicator--"+e.direction,{"is-active":n===e.activeIndex}],on:{mouseenter:function(t){e.throttledIndicatorHover(n)},click:function(t){t.stopPropagation(),e.handleIndicatorClick(n)}}},[i("button",{staticClass:"el-carousel__button"},[e.hasLabel?i("span",[e._v(e._s(t.label))]):e._e()])])}),0):e._e()])};Eu._withStripped=!0;var Tu=i(4),Mu=i.n(Tu),Nu=r({name:"ElCarousel",props:{initialIndex:{type:Number,default:0},height:String,trigger:{type:String,default:"hover"},autoplay:{type:Boolean,default:!0},interval:{type:Number,default:3e3},indicatorPosition:String,indicator:{type:Boolean,default:!0},arrow:{type:String,default:"hover"},type:String,loop:{type:Boolean,default:!0},direction:{type:String,default:"horizontal",validator:function(e){return-1!==["horizontal","vertical"].indexOf(e)}}},data:function(){return{items:[],activeIndex:-1,containerWidth:0,timer:null,hover:!1}},computed:{arrowDisplay:function(){return"never"!==this.arrow&&"vertical"!==this.direction},hasLabel:function(){return this.items.some(function(e){return e.label.toString().length>0})},carouselClasses:function(){var e=["el-carousel","el-carousel--"+this.direction];return"card"===this.type&&e.push("el-carousel--card"),e},indicatorsClasses:function(){var e=["el-carousel__indicators","el-carousel__indicators--"+this.direction];return this.hasLabel&&e.push("el-carousel__indicators--labels"),"outside"!==this.indicatorPosition&&"card"!==this.type||e.push("el-carousel__indicators--outside"),e}},watch:{items:function(e){e.length>0&&this.setActiveItem(this.initialIndex)},activeIndex:function(e,t){this.resetItemPosition(t),t>-1&&this.$emit("change",e,t)},autoplay:function(e){e?this.startTimer():this.pauseTimer()},loop:function(){this.setActiveItem(this.activeIndex)}},methods:{handleMouseEnter:function(){this.hover=!0,this.pauseTimer()},handleMouseLeave:function(){this.hover=!1,this.startTimer()},itemInStage:function(e,t){var i=this.items.length;return t===i-1&&e.inStage&&this.items[0].active||e.inStage&&this.items[t+1]&&this.items[t+1].active?"left":!!(0===t&&e.inStage&&this.items[i-1].active||e.inStage&&this.items[t-1]&&this.items[t-1].active)&&"right"},handleButtonEnter:function(e){var t=this;"vertical"!==this.direction&&this.items.forEach(function(i,n){e===t.itemInStage(i,n)&&(i.hover=!0)})},handleButtonLeave:function(){"vertical"!==this.direction&&this.items.forEach(function(e){e.hover=!1})},updateItems:function(){this.items=this.$children.filter(function(e){return"ElCarouselItem"===e.$options.name})},resetItemPosition:function(e){var t=this;this.items.forEach(function(i,n){i.translateItem(n,t.activeIndex,e)})},playSlides:function(){this.activeIndex<this.items.length-1?this.activeIndex++:this.loop&&(this.activeIndex=0)},pauseTimer:function(){this.timer&&(clearInterval(this.timer),this.timer=null)},startTimer:function(){this.interval<=0||!this.autoplay||this.timer||(this.timer=setInterval(this.playSlides,this.interval))},setActiveItem:function(e){if("string"==typeof e){var t=this.items.filter(function(t){return t.name===e});t.length>0&&(e=this.items.indexOf(t[0]))}if(e=Number(e),isNaN(e)||e!==Math.floor(e))console.warn("[Element Warn][Carousel]index must be an integer.");else{var i=this.items.length,n=this.activeIndex;this.activeIndex=e<0?this.loop?i-1:0:e>=i?this.loop?0:i-1:e,n===this.activeIndex&&this.resetItemPosition(n)}},prev:function(){this.setActiveItem(this.activeIndex-1)},next:function(){this.setActiveItem(this.activeIndex+1)},handleIndicatorClick:function(e){this.activeIndex=e},handleIndicatorHover:function(e){"hover"===this.trigger&&e!==this.activeIndex&&(this.activeIndex=e)}},created:function(){var e=this;this.throttledArrowClick=Mu()(300,!0,function(t){e.setActiveItem(t)}),this.throttledIndicatorHover=Mu()(300,function(t){e.handleIndicatorHover(t)})},mounted:function(){var e=this;this.updateItems(),this.$nextTick(function(){Ye(e.$el,e.resetItemPosition),e.initialIndex<e.items.length&&e.initialIndex>=0&&(e.activeIndex=e.initialIndex),e.startTimer()})},beforeDestroy:function(){this.$el&&Ke(this.$el,this.resetItemPosition),this.pauseTimer()}},Eu,[],!1,null,null,null);Nu.options.__file="packages/carousel/src/main.vue";var Pu=Nu.exports;Pu.install=function(e){e.component(Pu.name,Pu)};var Ou=Pu,Iu=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{directives:[{name:"show",rawName:"v-show",value:e.ready,expression:"ready"}],staticClass:"el-carousel__item",class:{"is-active":e.active,"el-carousel__item--card":"card"===e.$parent.type,"is-in-stage":e.inStage,"is-hover":e.hover,"is-animating":e.animating},style:e.itemStyle,on:{click:e.handleItemClick}},["card"===e.$parent.type?i("div",{directives:[{name:"show",rawName:"v-show",value:!e.active,expression:"!active"}],staticClass:"el-carousel__mask"}):e._e(),e._t("default")],2)};Iu._withStripped=!0;var Au=r({name:"ElCarouselItem",props:{name:String,label:{type:[String,Number],default:""}},data:function(){return{hover:!1,translate:0,scale:1,active:!1,ready:!1,inStage:!1,animating:!1}},methods:{processIndex:function(e,t,i){return 0===t&&e===i-1?-1:t===i-1&&0===e?i:e<t-1&&t-e>=i/2?i+1:e>t+1&&e-t>=i/2?-2:e},calcCardTranslate:function(e,t){var i=this.$parent.$el.offsetWidth;return this.inStage?i*(1.17*(e-t)+1)/4:e<t?-1.83*i/4:3.83*i/4},calcTranslate:function(e,t,i){return this.$parent.$el[i?"offsetHeight":"offsetWidth"]*(e-t)},translateItem:function(e,t,i){var n=this.$parent.type,r=this.parentDirection,s=this.$parent.items.length;if("card"!==n&&void 0!==i&&(this.animating=e===t||e===i),e!==t&&s>2&&this.$parent.loop&&(e=this.processIndex(e,t,s)),"card"===n)"vertical"===r&&console.warn("[Element Warn][Carousel]vertical direction is not supported in card mode"),this.inStage=Math.round(Math.abs(e-t))<=1,this.active=e===t,this.translate=this.calcCardTranslate(e,t),this.scale=this.active?1:.83;else{this.active=e===t;var a="vertical"===r;this.translate=this.calcTranslate(e,t,a)}this.ready=!0},handleItemClick:function(){var e=this.$parent;if(e&&"card"===e.type){var t=e.items.indexOf(this);e.setActiveItem(t)}}},computed:{parentDirection:function(){return this.$parent.direction},itemStyle:function(){return function(e){if("object"!==(void 0===e?"undefined":y(e)))return e;var t=["ms-","webkit-"];return["transform","transition","animation"].forEach(function(i){var n=e[i];i&&n&&t.forEach(function(t){e[t+i]=n})}),e}({transform:("vertical"===this.parentDirection?"translateY":"translateX")+"("+this.translate+"px) scale("+this.scale+")"})}},created:function(){this.$parent&&this.$parent.updateItems()},destroyed:function(){this.$parent&&this.$parent.updateItems()}},Iu,[],!1,null,null,null);Au.options.__file="packages/carousel/src/item.vue";var Fu=Au.exports;Fu.install=function(e){e.component(Fu.name,Fu)};var Lu=Fu,Vu=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-collapse",attrs:{role:"tablist","aria-multiselectable":"true"}},[this._t("default")],2)};Vu._withStripped=!0;var Bu=r({name:"ElCollapse",componentName:"ElCollapse",props:{accordion:Boolean,value:{type:[Array,String,Number],default:function(){return[]}}},data:function(){return{activeNames:[].concat(this.value)}},provide:function(){return{collapse:this}},watch:{value:function(e){this.activeNames=[].concat(e)}},methods:{setActiveNames:function(e){e=[].concat(e);var t=this.accordion?e[0]:e;this.activeNames=e,this.$emit("input",t),this.$emit("change",t)},handleItemClick:function(e){if(this.accordion)this.setActiveNames(!this.activeNames[0]&&0!==this.activeNames[0]||this.activeNames[0]!==e.name?e.name:"");else{var t=this.activeNames.slice(0),i=t.indexOf(e.name);i>-1?t.splice(i,1):t.push(e.name),this.setActiveNames(t)}}},created:function(){this.$on("item-click",this.handleItemClick)}},Vu,[],!1,null,null,null);Bu.options.__file="packages/collapse/src/collapse.vue";var zu=Bu.exports;zu.install=function(e){e.component(zu.name,zu)};var Hu=zu,Ru=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-collapse-item",class:{"is-active":e.isActive,"is-disabled":e.disabled}},[i("div",{attrs:{role:"tab","aria-expanded":e.isActive,"aria-controls":"el-collapse-content-"+e.id,"aria-describedby":"el-collapse-content-"+e.id}},[i("div",{staticClass:"el-collapse-item__header",class:{focusing:e.focusing,"is-active":e.isActive},attrs:{role:"button",id:"el-collapse-head-"+e.id,tabindex:e.disabled?void 0:0},on:{click:e.handleHeaderClick,keyup:function(t){return"button"in t||!e._k(t.keyCode,"space",32,t.key,[" ","Spacebar"])||!e._k(t.keyCode,"enter",13,t.key,"Enter")?(t.stopPropagation(),e.handleEnterClick(t)):null},focus:e.handleFocus,blur:function(t){e.focusing=!1}}},[e._t("title",[e._v(e._s(e.title))]),i("i",{staticClass:"el-collapse-item__arrow el-icon-arrow-right",class:{"is-active":e.isActive}})],2)]),i("el-collapse-transition",[i("div",{directives:[{name:"show",rawName:"v-show",value:e.isActive,expression:"isActive"}],staticClass:"el-collapse-item__wrap",attrs:{role:"tabpanel","aria-hidden":!e.isActive,"aria-labelledby":"el-collapse-head-"+e.id,id:"el-collapse-content-"+e.id}},[i("div",{staticClass:"el-collapse-item__content"},[e._t("default")],2)])])],1)};Ru._withStripped=!0;var Wu=r({name:"ElCollapseItem",componentName:"ElCollapseItem",mixins:[l],components:{ElCollapseTransition:ii},data:function(){return{contentWrapStyle:{height:"auto",display:"block"},contentHeight:0,focusing:!1,isClick:!1,id:D()}},inject:["collapse"],props:{title:String,name:{type:[String,Number],default:function(){return this._uid}},disabled:Boolean},computed:{isActive:function(){return this.collapse.activeNames.indexOf(this.name)>-1}},methods:{handleFocus:function(){var e=this;setTimeout(function(){e.isClick?e.isClick=!1:e.focusing=!0},50)},handleHeaderClick:function(){this.disabled||(this.dispatch("ElCollapse","item-click",this),this.focusing=!1,this.isClick=!0)},handleEnterClick:function(){this.dispatch("ElCollapse","item-click",this)}}},Ru,[],!1,null,null,null);Wu.options.__file="packages/collapse/src/collapse-item.vue";var ju=Wu.exports;ju.install=function(e){e.component(ju.name,ju)};var qu=ju,Yu=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:function(){return e.toggleDropDownVisible(!1)},expression:"() => toggleDropDownVisible(false)"}],ref:"reference",class:["el-cascader",e.realSize&&"el-cascader--"+e.realSize,{"is-disabled":e.isDisabled}],on:{mouseenter:function(t){e.inputHover=!0},mouseleave:function(t){e.inputHover=!1},click:function(){return e.toggleDropDownVisible(!e.readonly||void 0)},keydown:e.handleKeyDown}},[i("el-input",{ref:"input",class:{"is-focus":e.dropDownVisible},attrs:{size:e.realSize,placeholder:e.placeholder,readonly:e.readonly,disabled:e.isDisabled,"validate-event":!1},on:{focus:e.handleFocus,blur:e.handleBlur,input:e.handleInput},model:{value:e.multiple?e.presentText:e.inputValue,callback:function(t){e.multiple?e.presentText:e.inputValue=t},expression:"multiple ? presentText : inputValue"}},[i("template",{slot:"suffix"},[e.clearBtnVisible?i("i",{key:"clear",staticClass:"el-input__icon el-icon-circle-close",on:{click:function(t){return t.stopPropagation(),e.handleClear(t)}}}):i("i",{key:"arrow-down",class:["el-input__icon","el-icon-arrow-down",e.dropDownVisible&&"is-reverse"],on:{click:function(t){t.stopPropagation(),e.toggleDropDownVisible()}}})])],2),e.multiple?i("div",{staticClass:"el-cascader__tags"},[e._l(e.presentTags,function(t,n){return i("el-tag",{key:t.key,attrs:{type:"info",size:e.tagSize,hit:t.hitState,closable:t.closable,"disable-transitions":""},on:{close:function(t){e.deleteTag(n)}}},[i("span",[e._v(e._s(t.text))])])}),e.filterable&&!e.isDisabled?i("input",{directives:[{name:"model",rawName:"v-model.trim",value:e.inputValue,expression:"inputValue",modifiers:{trim:!0}}],staticClass:"el-cascader__search-input",attrs:{type:"text",placeholder:e.presentTags.length?"":e.placeholder},domProps:{value:e.inputValue},on:{input:[function(t){t.target.composing||(e.inputValue=t.target.value.trim())},function(t){return e.handleInput(e.inputValue,t)}],click:function(t){t.stopPropagation(),e.toggleDropDownVisible(!0)},keydown:function(t){return"button"in t||!e._k(t.keyCode,"delete",[8,46],t.key,["Backspace","Delete","Del"])?e.handleDelete(t):null},blur:function(t){e.$forceUpdate()}}}):e._e()],2):e._e(),i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":e.handleDropdownLeave}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.dropDownVisible,expression:"dropDownVisible"}],ref:"popper",class:["el-popper","el-cascader__dropdown",e.popperClass]},[i("el-cascader-panel",{directives:[{name:"show",rawName:"v-show",value:!e.filtering,expression:"!filtering"}],ref:"panel",attrs:{options:e.options,props:e.config,border:!1,"render-label":e.$scopedSlots.default},on:{"expand-change":e.handleExpandChange,close:function(t){e.toggleDropDownVisible(!1)}},model:{value:e.checkedValue,callback:function(t){e.checkedValue=t},expression:"checkedValue"}}),e.filterable?i("el-scrollbar",{directives:[{name:"show",rawName:"v-show",value:e.filtering,expression:"filtering"}],ref:"suggestionPanel",staticClass:"el-cascader__suggestion-panel",attrs:{tag:"ul","view-class":"el-cascader__suggestion-list"},nativeOn:{keydown:function(t){return e.handleSuggestionKeyDown(t)}}},[e.suggestions.length?e._l(e.suggestions,function(t,n){return i("li",{key:t.uid,class:["el-cascader__suggestion-item",t.checked&&"is-checked"],attrs:{tabindex:-1},on:{click:function(t){e.handleSuggestionClick(n)}}},[i("span",[e._v(e._s(t.text))]),t.checked?i("i",{staticClass:"el-icon-check"}):e._e()])}):e._t("empty",[i("li",{staticClass:"el-cascader__empty-text"},[e._v(e._s(e.t("el.cascader.noMatch")))])])],2):e._e()],1)])],1)};Yu._withStripped=!0;var Ku=function(){var e=this.$createElement,t=this._self._c||e;return t("div",{class:["el-cascader-panel",this.border&&"is-bordered"],on:{keydown:this.handleKeyDown}},this._l(this.menus,function(e,i){return t("cascader-menu",{key:i,ref:"menu",refInFor:!0,attrs:{index:i,nodes:e}})}),1)};Ku._withStripped=!0;var Gu=function(e){return e.stopPropagation()},Uu=r({inject:["panel"],components:{ElCheckbox:Vi,ElRadio:Si},props:{node:{required:!0},nodeId:String},computed:{config:function(){return this.panel.config},isLeaf:function(){return this.node.isLeaf},isDisabled:function(){return this.node.isDisabled},checkedValue:function(){return this.panel.checkedValue},isChecked:function(){return this.node.isSameNode(this.checkedValue)},inActivePath:function(){return this.isInPath(this.panel.activePath)},inCheckedPath:function(){var e=this;return!!this.config.checkStrictly&&this.panel.checkedNodePaths.some(function(t){return e.isInPath(t)})},value:function(){return this.node.getValueByOption()}},methods:{handleExpand:function(){var e=this,t=this.panel,i=this.node,n=this.isDisabled,r=this.config,s=r.multiple;!r.checkStrictly&&n||i.loading||(r.lazy&&!i.loaded?t.lazyLoad(i,function(){var t=e.isLeaf;if(t||e.handleExpand(),s){var n=!!t&&i.checked;e.handleMultiCheckChange(n)}}):t.handleExpand(i))},handleCheckChange:function(){var e=this.panel,t=this.value,i=this.node;e.handleCheckChange(t),e.handleExpand(i)},handleMultiCheckChange:function(e){this.node.doCheck(e),this.panel.calculateMultiCheckedValue()},isInPath:function(e){var t=this.node;return(e[t.level-1]||{}).uid===t.uid},renderPrefix:function(e){var t=this.isLeaf,i=this.isChecked,n=this.config,r=n.checkStrictly;return n.multiple?this.renderCheckbox(e):r?this.renderRadio(e):t&&i?this.renderCheckIcon(e):null},renderPostfix:function(e){var t=this.node,i=this.isLeaf;return t.loading?this.renderLoadingIcon(e):i?null:this.renderExpandIcon(e)},renderCheckbox:function(e){var t=this.node,i=this.config,n=this.isDisabled,r={on:{change:this.handleMultiCheckChange},nativeOn:{}};return i.checkStrictly&&(r.nativeOn.click=Gu),e("el-checkbox",Bl()([{attrs:{value:t.checked,indeterminate:t.indeterminate,disabled:n}},r]))},renderRadio:function(e){var t=this.checkedValue,i=this.value,n=this.isDisabled;return I(i,t)&&(i=t),e("el-radio",{attrs:{value:t,label:i,disabled:n},on:{change:this.handleCheckChange},nativeOn:{click:Gu}},[e("span")])},renderCheckIcon:function(e){return e("i",{class:"el-icon-check el-cascader-node__prefix"})},renderLoadingIcon:function(e){return e("i",{class:"el-icon-loading el-cascader-node__postfix"})},renderExpandIcon:function(e){return e("i",{class:"el-icon-arrow-right el-cascader-node__postfix"})},renderContent:function(e){var t=this.panel,i=this.node,n=t.renderLabelFn;return e("span",{class:"el-cascader-node__label"},[(n?n({node:i,data:i.data}):null)||i.label])}},render:function(e){var t=this,i=this.inActivePath,n=this.inCheckedPath,r=this.isChecked,s=this.isLeaf,a=this.isDisabled,o=this.config,l=this.nodeId,u=o.expandTrigger,c=o.checkStrictly,h=o.multiple,d=!c&&a,p={on:{}};return"click"===u?p.on.click=this.handleExpand:(p.on.mouseenter=function(e){t.handleExpand(),t.$emit("expand",e)},p.on.focus=function(e){t.handleExpand(),t.$emit("expand",e)}),!s||a||c||h||(p.on.click=this.handleCheckChange),e("li",Bl()([{attrs:{role:"menuitem",id:l,"aria-expanded":i,tabindex:d?null:-1},class:{"el-cascader-node":!0,"is-selectable":c,"in-active-path":i,"in-checked-path":n,"is-active":r,"is-disabled":d}},p]),[this.renderPrefix(e),this.renderContent(e),this.renderPostfix(e)])}},void 0,void 0,!1,null,null,null);Uu.options.__file="packages/cascader-panel/src/cascader-node.vue";var Xu=r({name:"ElCascaderMenu",mixins:[q],inject:["panel"],components:{ElScrollbar:Ze,CascaderNode:Uu.exports},props:{nodes:{type:Array,required:!0},index:Number},data:function(){return{activeNode:null,hoverTimer:null,id:D()}},computed:{isEmpty:function(){return!this.nodes.length},menuId:function(){return"cascader-menu-"+this.id+"-"+this.index}},methods:{handleExpand:function(e){this.activeNode=e.target},handleMouseMove:function(e){var t=this.activeNode,i=this.hoverTimer,n=this.$refs.hoverZone;if(t&&n)if(t.contains(e.target)){clearTimeout(i);var r=this.$el.getBoundingClientRect().left,s=e.clientX-r,a=this.$el,o=a.offsetWidth,l=a.offsetHeight,u=t.offsetTop,c=u+t.offsetHeight;n.innerHTML='\n          <path style="pointer-events: auto;" fill="transparent" d="M'+s+" "+u+" L"+o+" 0 V"+u+' Z" />\n          <path style="pointer-events: auto;" fill="transparent" d="M'+s+" "+c+" L"+o+" "+l+" V"+c+' Z" />\n        '}else i||(this.hoverTimer=setTimeout(this.clearHoverZone,this.panel.config.hoverThreshold))},clearHoverZone:function(){var e=this.$refs.hoverZone;e&&(e.innerHTML="")},renderEmptyText:function(e){return e("div",{class:"el-cascader-menu__empty-text"},[this.t("el.cascader.noData")])},renderNodeList:function(e){var t=this.menuId,i=this.panel.isHoverMenu,n={on:{}};i&&(n.on.expand=this.handleExpand);var r=this.nodes.map(function(i,r){var s=i.hasChildren;return e("cascader-node",Bl()([{key:i.uid,attrs:{node:i,"node-id":t+"-"+r,"aria-haspopup":s,"aria-owns":s?t:null}},n]))});return[].concat(r,[i?e("svg",{ref:"hoverZone",class:"el-cascader-menu__hover-zone"}):null])}},render:function(e){var t=this.isEmpty,i=this.menuId,n={nativeOn:{}};return this.panel.isHoverMenu&&(n.nativeOn.mousemove=this.handleMouseMove),e("el-scrollbar",Bl()([{attrs:{tag:"ul",role:"menu",id:i,"wrap-class":"el-cascader-menu__wrap","view-class":{"el-cascader-menu__list":!0,"is-empty":t}},class:"el-cascader-menu"},n]),[t?this.renderEmptyText(e):this.renderNodeList(e)])}},void 0,void 0,!1,null,null,null);Xu.options.__file="packages/cascader-panel/src/cascader-menu.vue";var Ju=Xu.exports,Zu=function(){function e(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,i,n){return i&&e(t.prototype,i),n&&e(t,n),t}}();var Qu=0,ec=function(){function e(t,i,n){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.data=t,this.config=i,this.parent=n||null,this.level=this.parent?this.parent.level+1:1,this.uid=Qu++,this.initState(),this.initChildren()}return e.prototype.initState=function(){var e=this.config,t=e.value,i=e.label;this.value=this.data[t],this.label=this.data[i],this.pathNodes=this.calculatePathNodes(),this.path=this.pathNodes.map(function(e){return e.value}),this.pathLabels=this.pathNodes.map(function(e){return e.label}),this.loading=!1,this.loaded=!1},e.prototype.initChildren=function(){var t=this,i=this.config,n=i.children,r=this.data[n];this.hasChildren=Array.isArray(r),this.children=(r||[]).map(function(n){return new e(n,i,t)})},e.prototype.calculatePathNodes=function(){for(var e=[this],t=this.parent;t;)e.unshift(t),t=t.parent;return e},e.prototype.getPath=function(){return this.path},e.prototype.getValue=function(){return this.value},e.prototype.getValueByOption=function(){return this.config.emitPath?this.getPath():this.getValue()},e.prototype.getText=function(e,t){return e?this.pathLabels.join(t):this.label},e.prototype.isSameNode=function(e){var t=this.getValueByOption();return this.config.multiple&&Array.isArray(e)?e.some(function(e){return I(e,t)}):I(e,t)},e.prototype.broadcast=function(e){for(var t=arguments.length,i=Array(t>1?t-1:0),n=1;n<t;n++)i[n-1]=arguments[n];var r="onParent"+P(e);this.children.forEach(function(t){t&&(t.broadcast.apply(t,[e].concat(i)),t[r]&&t[r].apply(t,i))})},e.prototype.emit=function(e){var t=this.parent,i="onChild"+P(e);if(t){for(var n=arguments.length,r=Array(n>1?n-1:0),s=1;s<n;s++)r[s-1]=arguments[s];t[i]&&t[i].apply(t,r),t.emit.apply(t,[e].concat(r))}},e.prototype.onParentCheck=function(e){this.isDisabled||this.setCheckState(e)},e.prototype.onChildCheck=function(){var e=this.children.filter(function(e){return!e.isDisabled}),t=!!e.length&&e.every(function(e){return e.checked});this.setCheckState(t)},e.prototype.setCheckState=function(e){var t=this.children.length,i=this.children.reduce(function(e,t){return e+(t.checked?1:t.indeterminate?.5:0)},0);this.checked=e,this.indeterminate=i!==t&&i>0},e.prototype.syncCheckState=function(e){var t=this.getValueByOption(),i=this.isSameNode(e,t);this.doCheck(i)},e.prototype.doCheck=function(e){this.checked!==e&&(this.config.checkStrictly?this.checked=e:(this.broadcast("check",e),this.setCheckState(e),this.emit("check")))},Zu(e,[{key:"isDisabled",get:function(){var e=this.data,t=this.parent,i=this.config,n=i.disabled,r=i.checkStrictly;return e[n]||!r&&t&&t.isDisabled}},{key:"isLeaf",get:function(){var e=this.data,t=this.loaded,i=this.hasChildren,n=this.children,r=this.config,s=r.lazy,a=r.leaf;if(s){var o=Q(e[a])?e[a]:!!t&&!n.length;return this.hasChildren=!o,o}return!i}}]),e}();var tc=function(){function e(t,i){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.config=i,this.initNodes(t)}return e.prototype.initNodes=function(e){var t=this;e=M(e),this.nodes=e.map(function(e){return new ec(e,t.config)}),this.flattedNodes=this.getFlattedNodes(!1,!1),this.leafNodes=this.getFlattedNodes(!0,!1)},e.prototype.appendNode=function(e,t){var i=new ec(e,this.config,t);(t?t.children:this.nodes).push(i)},e.prototype.appendNodes=function(e,t){var i=this;(e=M(e)).forEach(function(e){return i.appendNode(e,t)})},e.prototype.getNodes=function(){return this.nodes},e.prototype.getFlattedNodes=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=e?this.leafNodes:this.flattedNodes;return t?i:function e(t,i){return t.reduce(function(t,n){return n.isLeaf?t.push(n):(!i&&t.push(n),t=t.concat(e(n.children,i))),t},[])}(this.nodes,e)},e.prototype.getNodeByValue=function(e){if(e){var t=this.getFlattedNodes(!1,!this.config.lazy).filter(function(t){return $(t.path,e)||t.value===e});return t&&t.length?t[0]:null}return null},e}(),ic=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var i=arguments[t];for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n])}return e},nc=qt.keys,rc={expandTrigger:"click",multiple:!1,checkStrictly:!1,emitPath:!0,lazy:!1,lazyLoad:_,value:"value",label:"label",children:"children",leaf:"leaf",disabled:"disabled",hoverThreshold:500},sc=function(e){return!e.getAttribute("aria-owns")},ac=function(e,t){var i=e.parentNode;if(i){var n=i.querySelectorAll('.el-cascader-node[tabindex="-1"]');return n[Array.prototype.indexOf.call(n,e)+t]||null}return null},oc=function(e,t){if(e){var i=e.id.split("-");return Number(i[i.length-2])}},lc=function(e){e&&(e.focus(),!sc(e)&&e.click())},uc=r({name:"ElCascaderPanel",components:{CascaderMenu:Ju},props:{value:{},options:Array,props:Object,border:{type:Boolean,default:!0},renderLabel:Function},provide:function(){return{panel:this}},data:function(){return{checkedValue:null,checkedNodePaths:[],store:[],menus:[],activePath:[],loadCount:0}},computed:{config:function(){return Z(ic({},rc),this.props||{})},multiple:function(){return this.config.multiple},checkStrictly:function(){return this.config.checkStrictly},leafOnly:function(){return!this.checkStrictly},isHoverMenu:function(){return"hover"===this.config.expandTrigger},renderLabelFn:function(){return this.renderLabel||this.$scopedSlots.default}},watch:{options:{handler:function(){this.initStore()},immediate:!0,deep:!0},value:function(){this.syncCheckedValue(),this.checkStrictly&&this.calculateCheckedNodePaths()},checkedValue:function(e){I(e,this.value)||(this.checkStrictly&&this.calculateCheckedNodePaths(),this.$emit("input",e),this.$emit("change",e))}},mounted:function(){A(this.value)||this.syncCheckedValue()},methods:{initStore:function(){var e=this.config,t=this.options;e.lazy&&A(t)?this.lazyLoad():(this.store=new tc(t,e),this.menus=[this.store.getNodes()],this.syncMenuState())},syncCheckedValue:function(){var e=this.value,t=this.checkedValue;I(e,t)||(this.activePath=[],this.checkedValue=e,this.syncMenuState())},syncMenuState:function(){var e=this.multiple,t=this.checkStrictly;this.syncActivePath(),e&&this.syncMultiCheckState(),t&&this.calculateCheckedNodePaths(),this.$nextTick(this.scrollIntoView)},syncMultiCheckState:function(){var e=this;this.getFlattedNodes(this.leafOnly).forEach(function(t){t.syncCheckState(e.checkedValue)})},syncActivePath:function(){var e=this,t=this.store,i=this.multiple,n=this.activePath,r=this.checkedValue;if(A(n))if(A(r))this.activePath=[],this.menus=[t.getNodes()];else{var s=i?r[0]:r,a=((this.getNodeByValue(s)||{}).pathNodes||[]).slice(0,-1);this.expandNodes(a)}else{var o=n.map(function(t){return e.getNodeByValue(t.getValue())});this.expandNodes(o)}},expandNodes:function(e){var t=this;e.forEach(function(e){return t.handleExpand(e,!0)})},calculateCheckedNodePaths:function(){var e=this,t=this.checkedValue,i=this.multiple?M(t):[t];this.checkedNodePaths=i.map(function(t){var i=e.getNodeByValue(t);return i?i.pathNodes:[]})},handleKeyDown:function(e){var t=e.target;switch(e.keyCode){case nc.up:var i=ac(t,-1);lc(i);break;case nc.down:var n=ac(t,1);lc(n);break;case nc.left:var r=this.$refs.menu[oc(t)-1];if(r){var s=r.$el.querySelector('.el-cascader-node[aria-expanded="true"]');lc(s)}break;case nc.right:var a=this.$refs.menu[oc(t)+1];if(a){var o=a.$el.querySelector('.el-cascader-node[tabindex="-1"]');lc(o)}break;case nc.enter:!function(e){if(e){var t=e.querySelector("input");t?t.click():sc(e)&&e.click()}}(t);break;case nc.esc:case nc.tab:this.$emit("close");break;default:return}},handleExpand:function(e,t){var i=this.activePath,n=e.level,r=i.slice(0,n-1),s=this.menus.slice(0,n);if(e.isLeaf||(r.push(e),s.push(e.children)),this.activePath=r,this.menus=s,!t){var a=r.map(function(e){return e.getValue()}),o=i.map(function(e){return e.getValue()});$(a,o)||(this.$emit("active-item-change",a),this.$emit("expand-change",a))}},handleCheckChange:function(e){this.checkedValue=e},lazyLoad:function(e,t){var i=this,n=this.config;e||(e=e||{root:!0,level:0},this.store=new tc([],n),this.menus=[this.store.getNodes()]),e.loading=!0;n.lazyLoad(e,function(n){var r=e.root?null:e;if(n&&n.length&&i.store.appendNodes(n,r),e.loading=!1,e.loaded=!0,Array.isArray(i.checkedValue)){var s=i.checkedValue[i.loadCount++],a=i.config.value,o=i.config.leaf;if(Array.isArray(n)&&n.filter(function(e){return e[a]===s}).length>0){var l=i.store.getNodeByValue(s);l.data[o]||i.lazyLoad(l,function(){i.handleExpand(l)}),i.loadCount===i.checkedValue.length&&i.$parent.computePresentText()}}t&&t(n)})},calculateMultiCheckedValue:function(){this.checkedValue=this.getCheckedNodes(this.leafOnly).map(function(e){return e.getValueByOption()})},scrollIntoView:function(){this.$isServer||(this.$refs.menu||[]).forEach(function(e){var t=e.$el;t&&ot(t.querySelector(".el-scrollbar__wrap"),t.querySelector(".el-cascader-node.is-active")||t.querySelector(".el-cascader-node.in-active-path"))})},getNodeByValue:function(e){return this.store.getNodeByValue(e)},getFlattedNodes:function(e){var t=!this.config.lazy;return this.store.getFlattedNodes(e,t)},getCheckedNodes:function(e){var t=this.checkedValue;return this.multiple?this.getFlattedNodes(e).filter(function(e){return e.checked}):A(t)?[]:[this.getNodeByValue(t)]},clearCheckedNodes:function(){var e=this.config,t=this.leafOnly,i=e.multiple,n=e.emitPath;i?(this.getCheckedNodes(t).filter(function(e){return!e.isDisabled}).forEach(function(e){return e.doCheck(!1)}),this.calculateMultiCheckedValue()):this.checkedValue=n?[]:null}}},Ku,[],!1,null,null,null);uc.options.__file="packages/cascader-panel/src/cascader-panel.vue";var cc=uc.exports;cc.install=function(e){e.component(cc.name,cc)};var hc=cc,dc=qt.keys,pc={expandTrigger:{newProp:"expandTrigger",type:String},changeOnSelect:{newProp:"checkStrictly",type:Boolean},hoverThreshold:{newProp:"hoverThreshold",type:Number}},fc={props:{placement:{type:String,default:"bottom-start"},appendToBody:Oe.props.appendToBody,visibleArrow:{type:Boolean,default:!0},arrowOffset:Oe.props.arrowOffset,offset:Oe.props.offset,boundariesPadding:Oe.props.boundariesPadding,popperOptions:Oe.props.popperOptions},methods:Oe.methods,data:Oe.data,beforeDestroy:Oe.beforeDestroy},mc={medium:36,small:32,mini:28},vc=r({name:"ElCascader",directives:{Clickoutside:at},mixins:[fc,l,q,K],inject:{elForm:{default:""},elFormItem:{default:""}},components:{ElInput:ne,ElTag:Re,ElScrollbar:Ze,ElCascaderPanel:hc},props:{value:{},options:Array,props:Object,size:String,placeholder:{type:String,default:function(){return W("el.cascader.placeholder")}},disabled:Boolean,clearable:Boolean,filterable:Boolean,filterMethod:Function,separator:{type:String,default:" / "},showAllLevels:{type:Boolean,default:!0},collapseTags:Boolean,debounce:{type:Number,default:300},beforeFilter:{type:Function,default:function(){return function(){}}},popperClass:String},data:function(){return{dropDownVisible:!1,checkedValue:this.value||null,inputHover:!1,inputValue:null,presentText:null,presentTags:[],checkedNodes:[],filtering:!1,suggestions:[],inputInitialHeight:0,pressDeleteCount:0}},computed:{realSize:function(){var e=(this.elFormItem||{}).elFormItemSize;return this.size||e||(this.$ELEMENT||{}).size},tagSize:function(){return["small","mini"].indexOf(this.realSize)>-1?"mini":"small"},isDisabled:function(){return this.disabled||(this.elForm||{}).disabled},config:function(){var e=this.props||{},t=this.$attrs;return Object.keys(pc).forEach(function(i){var n=pc[i],r=n.newProp,s=n.type,a=t[i]||t[N(i)];Q(i)&&!Q(e[r])&&(s===Boolean&&""===a&&(a=!0),e[r]=a)}),e},multiple:function(){return this.config.multiple},leafOnly:function(){return!this.config.checkStrictly},readonly:function(){return!this.filterable||this.multiple},clearBtnVisible:function(){return!(!this.clearable||this.isDisabled||this.filtering||!this.inputHover)&&(this.multiple?!!this.checkedNodes.filter(function(e){return!e.isDisabled}).length:!!this.presentText)},panel:function(){return this.$refs.panel}},watch:{disabled:function(){this.computePresentContent()},value:function(e){I(e,this.checkedValue)||(this.checkedValue=e,this.computePresentContent())},checkedValue:function(e){var t=this.value,i=this.dropDownVisible,n=this.config,r=n.checkStrictly,s=n.multiple;I(e,t)&&!b(t)||(this.computePresentContent(),s||r||!i||this.toggleDropDownVisible(!1),this.$emit("input",e),this.$emit("change",e),this.dispatch("ElFormItem","el.form.change",[e]))},options:{handler:function(){this.$nextTick(this.computePresentContent)},deep:!0},presentText:function(e){this.inputValue=e},presentTags:function(e,t){this.multiple&&(e.length||t.length)&&this.$nextTick(this.updateStyle)},filtering:function(e){this.$nextTick(this.updatePopper)}},mounted:function(){var e=this,t=this.$refs.input;t&&t.$el&&(this.inputInitialHeight=t.$el.offsetHeight||mc[this.realSize]||40),A(this.value)||this.computePresentContent(),this.filterHandler=et()(this.debounce,function(){var t=e.inputValue;if(t){var i=e.beforeFilter(t);i&&i.then?i.then(e.getSuggestions):!1!==i?e.getSuggestions():e.filtering=!1}else e.filtering=!1}),Ye(this.$el,this.updateStyle)},beforeDestroy:function(){Ke(this.$el,this.updateStyle)},methods:{getMigratingConfig:function(){return{props:{"expand-trigger":"expand-trigger is removed, use `props.expandTrigger` instead.","change-on-select":"change-on-select is removed, use `props.checkStrictly` instead.","hover-threshold":"hover-threshold is removed, use `props.hoverThreshold` instead"},events:{"active-item-change":"active-item-change is renamed to expand-change"}}},toggleDropDownVisible:function(e){var t=this;if(!this.isDisabled){var i=this.dropDownVisible,n=this.$refs.input;(e=Q(e)?e:!i)!==i&&(this.dropDownVisible=e,e&&this.$nextTick(function(){t.updatePopper(),t.panel.scrollIntoView()}),n.$refs.input.setAttribute("aria-expanded",e),this.$emit("visible-change",e))}},handleDropdownLeave:function(){this.filtering=!1,this.inputValue=this.presentText},handleKeyDown:function(e){switch(e.keyCode){case dc.enter:this.toggleDropDownVisible();break;case dc.down:this.toggleDropDownVisible(!0),this.focusFirstNode(),e.preventDefault();break;case dc.esc:case dc.tab:this.toggleDropDownVisible(!1)}},handleFocus:function(e){this.$emit("focus",e)},handleBlur:function(e){this.$emit("blur",e)},handleInput:function(e,t){!this.dropDownVisible&&this.toggleDropDownVisible(!0),t&&t.isComposing||(e?this.filterHandler():this.filtering=!1)},handleClear:function(){this.presentText="",this.panel.clearCheckedNodes()},handleExpandChange:function(e){this.$nextTick(this.updatePopper.bind(this)),this.$emit("expand-change",e),this.$emit("active-item-change",e)},focusFirstNode:function(){var e=this;this.$nextTick(function(){var t=e.filtering,i=e.$refs,n=i.popper,r=i.suggestionPanel,s=null;t&&r?s=r.$el.querySelector(".el-cascader__suggestion-item"):s=n.querySelector(".el-cascader-menu").querySelector('.el-cascader-node[tabindex="-1"]');s&&(s.focus(),!t&&s.click())})},computePresentContent:function(){var e=this;this.$nextTick(function(){e.config.multiple?(e.computePresentTags(),e.presentText=e.presentTags.length?" ":null):e.computePresentText()})},computePresentText:function(){var e=this.checkedValue,t=this.config;if(!A(e)){var i=this.panel.getNodeByValue(e);if(i&&(t.checkStrictly||i.isLeaf))return void(this.presentText=i.getText(this.showAllLevels,this.separator))}this.presentText=null},computePresentTags:function(){var e=this.isDisabled,t=this.leafOnly,i=this.showAllLevels,n=this.separator,r=this.collapseTags,s=this.getCheckedNodes(t),a=[],o=function(t){return{node:t,key:t.uid,text:t.getText(i,n),hitState:!1,closable:!e&&!t.isDisabled}};if(s.length){var l=s[0],u=s.slice(1),c=u.length;a.push(o(l)),c&&(r?a.push({key:-1,text:"+ "+c,closable:!1}):u.forEach(function(e){return a.push(o(e))}))}this.checkedNodes=s,this.presentTags=a},getSuggestions:function(){var e=this,t=this.filterMethod;g(t)||(t=function(e,t){return e.text.includes(t)});var i=this.panel.getFlattedNodes(this.leafOnly).filter(function(i){return!i.isDisabled&&(i.text=i.getText(e.showAllLevels,e.separator)||"",t(i,e.inputValue))});this.multiple?this.presentTags.forEach(function(e){e.hitState=!1}):i.forEach(function(t){t.checked=I(e.checkedValue,t.getValueByOption())}),this.filtering=!0,this.suggestions=i,this.$nextTick(this.updatePopper)},handleSuggestionKeyDown:function(e){var t=e.keyCode,i=e.target;switch(t){case dc.enter:i.click();break;case dc.up:var n=i.previousElementSibling;n&&n.focus();break;case dc.down:var r=i.nextElementSibling;r&&r.focus();break;case dc.esc:case dc.tab:this.toggleDropDownVisible(!1)}},handleDelete:function(){var e=this.inputValue,t=this.pressDeleteCount,i=this.presentTags,n=i.length-1,r=i[n];this.pressDeleteCount=e?0:t+1,r&&this.pressDeleteCount&&(r.hitState?this.deleteTag(n):r.hitState=!0)},handleSuggestionClick:function(e){var t=this.multiple,i=this.suggestions[e];if(t){var n=i.checked;i.doCheck(!n),this.panel.calculateMultiCheckedValue()}else this.checkedValue=i.getValueByOption(),this.toggleDropDownVisible(!1)},deleteTag:function(e){var t=this.checkedValue,i=t[e];this.checkedValue=t.filter(function(t,i){return i!==e}),this.$emit("remove-tag",i)},updateStyle:function(){var e=this.$el,t=this.inputInitialHeight;if(!this.$isServer&&e){var i=this.$refs.suggestionPanel,n=e.querySelector(".el-input__inner");if(n){var r=e.querySelector(".el-cascader__tags"),s=null;if(i&&(s=i.$el))s.querySelector(".el-cascader__suggestion-list").style.minWidth=n.offsetWidth+"px";if(r){var a=r.offsetHeight,o=Math.max(a+6,t)+"px";n.style.height=o,this.updatePopper()}}}},getCheckedNodes:function(e){return this.panel.getCheckedNodes(e)}}},Yu,[],!1,null,null,null);vc.options.__file="packages/cascader/src/cascader.vue";var gc=vc.exports;gc.install=function(e){e.component(gc.name,gc)};var bc=gc,yc=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.hide,expression:"hide"}],class:["el-color-picker",e.colorDisabled?"is-disabled":"",e.colorSize?"el-color-picker--"+e.colorSize:""]},[e.colorDisabled?i("div",{staticClass:"el-color-picker__mask"}):e._e(),i("div",{staticClass:"el-color-picker__trigger",on:{click:e.handleTrigger}},[i("span",{staticClass:"el-color-picker__color",class:{"is-alpha":e.showAlpha}},[i("span",{staticClass:"el-color-picker__color-inner",style:{backgroundColor:e.displayedColor}}),e.value||e.showPanelColor?e._e():i("span",{staticClass:"el-color-picker__empty el-icon-close"})]),i("span",{directives:[{name:"show",rawName:"v-show",value:e.value||e.showPanelColor,expression:"value || showPanelColor"}],staticClass:"el-color-picker__icon el-icon-arrow-down"})]),i("picker-dropdown",{ref:"dropdown",class:["el-color-picker__panel",e.popperClass||""],attrs:{color:e.color,"show-alpha":e.showAlpha,predefine:e.predefine},on:{pick:e.confirmValue,clear:e.clearValue},model:{value:e.showPicker,callback:function(t){e.showPicker=t},expression:"showPicker"}})],1)};yc._withStripped=!0;var wc="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};var _c=function(e,t,i){return[e,t*i/((e=(2-t)*i)<1?e:2-e)||0,e/2]},xc=function(e,t){var i;"string"==typeof(i=e)&&-1!==i.indexOf(".")&&1===parseFloat(i)&&(e="100%");var n=function(e){return"string"==typeof e&&-1!==e.indexOf("%")}(e);return e=Math.min(t,Math.max(0,parseFloat(e))),n&&(e=parseInt(e*t,10)/100),Math.abs(e-t)<1e-6?1:e%t/parseFloat(t)},Cc={10:"A",11:"B",12:"C",13:"D",14:"E",15:"F"},kc={A:10,B:11,C:12,D:13,E:14,F:15},Sc=function(e){return 2===e.length?16*(kc[e[0].toUpperCase()]||+e[0])+(kc[e[1].toUpperCase()]||+e[1]):kc[e[1].toUpperCase()]||+e[1]},Dc=function(e,t,i){e=xc(e,255),t=xc(t,255),i=xc(i,255);var n,r=Math.max(e,t,i),s=Math.min(e,t,i),a=void 0,o=r,l=r-s;if(n=0===r?0:l/r,r===s)a=0;else{switch(r){case e:a=(t-i)/l+(t<i?6:0);break;case t:a=(i-e)/l+2;break;case i:a=(e-t)/l+4}a/=6}return{h:360*a,s:100*n,v:100*o}},$c=function(e,t,i){e=6*xc(e,360),t=xc(t,100),i=xc(i,100);var n=Math.floor(e),r=e-n,s=i*(1-t),a=i*(1-r*t),o=i*(1-(1-r)*t),l=n%6,u=[i,a,s,s,o,i][l],c=[o,i,i,a,s,s][l],h=[s,s,o,i,i,a][l];return{r:Math.round(255*u),g:Math.round(255*c),b:Math.round(255*h)}},Ec=function(){function e(t){for(var i in function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this._hue=0,this._saturation=100,this._value=100,this._alpha=100,this.enableAlpha=!1,this.format="hex",this.value="",t=t||{})t.hasOwnProperty(i)&&(this[i]=t[i]);this.doOnChange()}return e.prototype.set=function(e,t){if(1!==arguments.length||"object"!==(void 0===e?"undefined":wc(e)))this["_"+e]=t,this.doOnChange();else for(var i in e)e.hasOwnProperty(i)&&this.set(i,e[i])},e.prototype.get=function(e){return this["_"+e]},e.prototype.toRgb=function(){return $c(this._hue,this._saturation,this._value)},e.prototype.fromString=function(e){var t=this;if(!e)return this._hue=0,this._saturation=100,this._value=100,void this.doOnChange();var i=function(e,i,n){t._hue=Math.max(0,Math.min(360,e)),t._saturation=Math.max(0,Math.min(100,i)),t._value=Math.max(0,Math.min(100,n)),t.doOnChange()};if(-1!==e.indexOf("hsl")){var n=e.replace(/hsla|hsl|\(|\)/gm,"").split(/\s|,/g).filter(function(e){return""!==e}).map(function(e,t){return t>2?parseFloat(e):parseInt(e,10)});if(4===n.length?this._alpha=Math.floor(100*parseFloat(n[3])):3===n.length&&(this._alpha=100),n.length>=3){var r=function(e,t,i){i/=100;var n=t/=100,r=Math.max(i,.01);return t*=(i*=2)<=1?i:2-i,n*=r<=1?r:2-r,{h:e,s:100*(0===i?2*n/(r+n):2*t/(i+t)),v:(i+t)/2*100}}(n[0],n[1],n[2]);i(r.h,r.s,r.v)}}else if(-1!==e.indexOf("hsv")){var s=e.replace(/hsva|hsv|\(|\)/gm,"").split(/\s|,/g).filter(function(e){return""!==e}).map(function(e,t){return t>2?parseFloat(e):parseInt(e,10)});4===s.length?this._alpha=Math.floor(100*parseFloat(s[3])):3===s.length&&(this._alpha=100),s.length>=3&&i(s[0],s[1],s[2])}else if(-1!==e.indexOf("rgb")){var a=e.replace(/rgba|rgb|\(|\)/gm,"").split(/\s|,/g).filter(function(e){return""!==e}).map(function(e,t){return t>2?parseFloat(e):parseInt(e,10)});if(4===a.length?this._alpha=Math.floor(100*parseFloat(a[3])):3===a.length&&(this._alpha=100),a.length>=3){var o=Dc(a[0],a[1],a[2]);i(o.h,o.s,o.v)}}else if(-1!==e.indexOf("#")){var l=e.replace("#","").trim();if(!/^(?:[0-9a-fA-F]{3}){1,2}|[0-9a-fA-F]{8}$/.test(l))return;var u=void 0,c=void 0,h=void 0;3===l.length?(u=Sc(l[0]+l[0]),c=Sc(l[1]+l[1]),h=Sc(l[2]+l[2])):6!==l.length&&8!==l.length||(u=Sc(l.substring(0,2)),c=Sc(l.substring(2,4)),h=Sc(l.substring(4,6))),8===l.length?this._alpha=Math.floor(Sc(l.substring(6))/255*100):3!==l.length&&6!==l.length||(this._alpha=100);var d=Dc(u,c,h);i(d.h,d.s,d.v)}},e.prototype.compare=function(e){return Math.abs(e._hue-this._hue)<2&&Math.abs(e._saturation-this._saturation)<1&&Math.abs(e._value-this._value)<1&&Math.abs(e._alpha-this._alpha)<1},e.prototype.doOnChange=function(){var e=this._hue,t=this._saturation,i=this._value,n=this._alpha,r=this.format;if(this.enableAlpha)switch(r){case"hsl":var s=_c(e,t/100,i/100);this.value="hsla("+e+", "+Math.round(100*s[1])+"%, "+Math.round(100*s[2])+"%, "+n/100+")";break;case"hsv":this.value="hsva("+e+", "+Math.round(t)+"%, "+Math.round(i)+"%, "+n/100+")";break;default:var a=$c(e,t,i),o=a.r,l=a.g,u=a.b;this.value="rgba("+o+", "+l+", "+u+", "+n/100+")"}else switch(r){case"hsl":var c=_c(e,t/100,i/100);this.value="hsl("+e+", "+Math.round(100*c[1])+"%, "+Math.round(100*c[2])+"%)";break;case"hsv":this.value="hsv("+e+", "+Math.round(t)+"%, "+Math.round(i)+"%)";break;case"rgb":var h=$c(e,t,i),d=h.r,p=h.g,f=h.b;this.value="rgb("+d+", "+p+", "+f+")";break;default:this.value=function(e){var t=e.r,i=e.g,n=e.b,r=function(e){e=Math.min(Math.round(e),255);var t=Math.floor(e/16),i=e%16;return""+(Cc[t]||t)+(Cc[i]||i)};return isNaN(t)||isNaN(i)||isNaN(n)?"":"#"+r(t)+r(i)+r(n)}($c(e,t,i))}},e}(),Tc=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":e.doDestroy}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.showPopper,expression:"showPopper"}],staticClass:"el-color-dropdown"},[i("div",{staticClass:"el-color-dropdown__main-wrapper"},[i("hue-slider",{ref:"hue",staticStyle:{float:"right"},attrs:{color:e.color,vertical:""}}),i("sv-panel",{ref:"sl",attrs:{color:e.color}})],1),e.showAlpha?i("alpha-slider",{ref:"alpha",attrs:{color:e.color}}):e._e(),e.predefine?i("predefine",{attrs:{color:e.color,colors:e.predefine}}):e._e(),i("div",{staticClass:"el-color-dropdown__btns"},[i("span",{staticClass:"el-color-dropdown__value"},[i("el-input",{attrs:{"validate-event":!1,size:"mini"},on:{blur:e.handleConfirm},nativeOn:{keyup:function(t){return"button"in t||!e._k(t.keyCode,"enter",13,t.key,"Enter")?e.handleConfirm(t):null}},model:{value:e.customInput,callback:function(t){e.customInput=t},expression:"customInput"}})],1),i("el-button",{staticClass:"el-color-dropdown__link-btn",attrs:{size:"mini",type:"text"},on:{click:function(t){e.$emit("clear")}}},[e._v("\n        "+e._s(e.t("el.colorpicker.clear"))+"\n      ")]),i("el-button",{staticClass:"el-color-dropdown__btn",attrs:{plain:"",size:"mini"},on:{click:e.confirmValue}},[e._v("\n        "+e._s(e.t("el.colorpicker.confirm"))+"\n      ")])],1)],1)])};Tc._withStripped=!0;var Mc=function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticClass:"el-color-svpanel",style:{backgroundColor:this.background}},[t("div",{staticClass:"el-color-svpanel__white"}),t("div",{staticClass:"el-color-svpanel__black"}),t("div",{staticClass:"el-color-svpanel__cursor",style:{top:this.cursorTop+"px",left:this.cursorLeft+"px"}},[t("div")])])};Mc._withStripped=!0;var Nc=!1,Pc=function(e,t){if(!h.a.prototype.$isServer){var i=function(e){t.drag&&t.drag(e)},n=function e(n){document.removeEventListener("mousemove",i),document.removeEventListener("mouseup",e),document.onselectstart=null,document.ondragstart=null,Nc=!1,t.end&&t.end(n)};e.addEventListener("mousedown",function(e){Nc||(document.onselectstart=function(){return!1},document.ondragstart=function(){return!1},document.addEventListener("mousemove",i),document.addEventListener("mouseup",n),Nc=!0,t.start&&t.start(e))})}},Oc=r({name:"el-sl-panel",props:{color:{required:!0}},computed:{colorValue:function(){return{hue:this.color.get("hue"),value:this.color.get("value")}}},watch:{colorValue:function(){this.update()}},methods:{update:function(){var e=this.color.get("saturation"),t=this.color.get("value"),i=this.$el,n=i.clientWidth,r=i.clientHeight;this.cursorLeft=e*n/100,this.cursorTop=(100-t)*r/100,this.background="hsl("+this.color.get("hue")+", 100%, 50%)"},handleDrag:function(e){var t=this.$el.getBoundingClientRect(),i=e.clientX-t.left,n=e.clientY-t.top;i=Math.max(0,i),i=Math.min(i,t.width),n=Math.max(0,n),n=Math.min(n,t.height),this.cursorLeft=i,this.cursorTop=n,this.color.set({saturation:i/t.width*100,value:100-n/t.height*100})}},mounted:function(){var e=this;Pc(this.$el,{drag:function(t){e.handleDrag(t)},end:function(t){e.handleDrag(t)}}),this.update()},data:function(){return{cursorTop:0,cursorLeft:0,background:"hsl(0, 100%, 50%)"}}},Mc,[],!1,null,null,null);Oc.options.__file="packages/color-picker/src/components/sv-panel.vue";var Ic=Oc.exports,Ac=function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticClass:"el-color-hue-slider",class:{"is-vertical":this.vertical}},[t("div",{ref:"bar",staticClass:"el-color-hue-slider__bar",on:{click:this.handleClick}}),t("div",{ref:"thumb",staticClass:"el-color-hue-slider__thumb",style:{left:this.thumbLeft+"px",top:this.thumbTop+"px"}})])};Ac._withStripped=!0;var Fc=r({name:"el-color-hue-slider",props:{color:{required:!0},vertical:Boolean},data:function(){return{thumbLeft:0,thumbTop:0}},computed:{hueValue:function(){return this.color.get("hue")}},watch:{hueValue:function(){this.update()}},methods:{handleClick:function(e){var t=this.$refs.thumb;e.target!==t&&this.handleDrag(e)},handleDrag:function(e){var t=this.$el.getBoundingClientRect(),i=this.$refs.thumb,n=void 0;if(this.vertical){var r=e.clientY-t.top;r=Math.min(r,t.height-i.offsetHeight/2),r=Math.max(i.offsetHeight/2,r),n=Math.round((r-i.offsetHeight/2)/(t.height-i.offsetHeight)*360)}else{var s=e.clientX-t.left;s=Math.min(s,t.width-i.offsetWidth/2),s=Math.max(i.offsetWidth/2,s),n=Math.round((s-i.offsetWidth/2)/(t.width-i.offsetWidth)*360)}this.color.set("hue",n)},getThumbLeft:function(){if(this.vertical)return 0;var e=this.$el,t=this.color.get("hue");if(!e)return 0;var i=this.$refs.thumb;return Math.round(t*(e.offsetWidth-i.offsetWidth/2)/360)},getThumbTop:function(){if(!this.vertical)return 0;var e=this.$el,t=this.color.get("hue");if(!e)return 0;var i=this.$refs.thumb;return Math.round(t*(e.offsetHeight-i.offsetHeight/2)/360)},update:function(){this.thumbLeft=this.getThumbLeft(),this.thumbTop=this.getThumbTop()}},mounted:function(){var e=this,t=this.$refs,i=t.bar,n=t.thumb,r={drag:function(t){e.handleDrag(t)},end:function(t){e.handleDrag(t)}};Pc(i,r),Pc(n,r),this.update()}},Ac,[],!1,null,null,null);Fc.options.__file="packages/color-picker/src/components/hue-slider.vue";var Lc=Fc.exports,Vc=function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticClass:"el-color-alpha-slider",class:{"is-vertical":this.vertical}},[t("div",{ref:"bar",staticClass:"el-color-alpha-slider__bar",style:{background:this.background},on:{click:this.handleClick}}),t("div",{ref:"thumb",staticClass:"el-color-alpha-slider__thumb",style:{left:this.thumbLeft+"px",top:this.thumbTop+"px"}})])};Vc._withStripped=!0;var Bc=r({name:"el-color-alpha-slider",props:{color:{required:!0},vertical:Boolean},watch:{"color._alpha":function(){this.update()},"color.value":function(){this.update()}},methods:{handleClick:function(e){var t=this.$refs.thumb;e.target!==t&&this.handleDrag(e)},handleDrag:function(e){var t=this.$el.getBoundingClientRect(),i=this.$refs.thumb;if(this.vertical){var n=e.clientY-t.top;n=Math.max(i.offsetHeight/2,n),n=Math.min(n,t.height-i.offsetHeight/2),this.color.set("alpha",Math.round((n-i.offsetHeight/2)/(t.height-i.offsetHeight)*100))}else{var r=e.clientX-t.left;r=Math.max(i.offsetWidth/2,r),r=Math.min(r,t.width-i.offsetWidth/2),this.color.set("alpha",Math.round((r-i.offsetWidth/2)/(t.width-i.offsetWidth)*100))}},getThumbLeft:function(){if(this.vertical)return 0;var e=this.$el,t=this.color._alpha;if(!e)return 0;var i=this.$refs.thumb;return Math.round(t*(e.offsetWidth-i.offsetWidth/2)/100)},getThumbTop:function(){if(!this.vertical)return 0;var e=this.$el,t=this.color._alpha;if(!e)return 0;var i=this.$refs.thumb;return Math.round(t*(e.offsetHeight-i.offsetHeight/2)/100)},getBackground:function(){if(this.color&&this.color.value){var e=this.color.toRgb(),t=e.r,i=e.g,n=e.b;return"linear-gradient(to right, rgba("+t+", "+i+", "+n+", 0) 0%, rgba("+t+", "+i+", "+n+", 1) 100%)"}return null},update:function(){this.thumbLeft=this.getThumbLeft(),this.thumbTop=this.getThumbTop(),this.background=this.getBackground()}},data:function(){return{thumbLeft:0,thumbTop:0,background:null}},mounted:function(){var e=this,t=this.$refs,i=t.bar,n=t.thumb,r={drag:function(t){e.handleDrag(t)},end:function(t){e.handleDrag(t)}};Pc(i,r),Pc(n,r),this.update()}},Vc,[],!1,null,null,null);Bc.options.__file="packages/color-picker/src/components/alpha-slider.vue";var zc=Bc.exports,Hc=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-color-predefine"},[i("div",{staticClass:"el-color-predefine__colors"},e._l(e.rgbaColors,function(t,n){return i("div",{key:e.colors[n],staticClass:"el-color-predefine__color-selector",class:{selected:t.selected,"is-alpha":t._alpha<100},on:{click:function(t){e.handleSelect(n)}}},[i("div",{style:{"background-color":t.value}})])}),0)])};Hc._withStripped=!0;var Rc=r({props:{colors:{type:Array,required:!0},color:{required:!0}},data:function(){return{rgbaColors:this.parseColors(this.colors,this.color)}},methods:{handleSelect:function(e){this.color.fromString(this.colors[e])},parseColors:function(e,t){return e.map(function(e){var i=new Ec;return i.enableAlpha=!0,i.format="rgba",i.fromString(e),i.selected=i.value===t.value,i})}},watch:{"$parent.currentColor":function(e){var t=new Ec;t.fromString(e),this.rgbaColors.forEach(function(e){e.selected=t.compare(e)})},colors:function(e){this.rgbaColors=this.parseColors(e,this.color)},color:function(e){this.rgbaColors=this.parseColors(this.colors,e)}}},Hc,[],!1,null,null,null);Rc.options.__file="packages/color-picker/src/components/predefine.vue";var Wc=Rc.exports,jc=r({name:"el-color-picker-dropdown",mixins:[Oe,q],components:{SvPanel:Ic,HueSlider:Lc,AlphaSlider:zc,ElInput:ne,ElButton:Et,Predefine:Wc},props:{color:{required:!0},showAlpha:Boolean,predefine:Array},data:function(){return{customInput:""}},computed:{currentColor:function(){var e=this.$parent;return e.value||e.showPanelColor?e.color.value:""}},methods:{confirmValue:function(){this.$emit("pick")},handleConfirm:function(){this.color.fromString(this.customInput)}},mounted:function(){this.$parent.popperElm=this.popperElm=this.$el,this.referenceElm=this.$parent.$el},watch:{showPopper:function(e){var t=this;!0===e&&this.$nextTick(function(){var e=t.$refs,i=e.sl,n=e.hue,r=e.alpha;i&&i.update(),n&&n.update(),r&&r.update()})},currentColor:{immediate:!0,handler:function(e){this.customInput=e}}}},Tc,[],!1,null,null,null);jc.options.__file="packages/color-picker/src/components/picker-dropdown.vue";var qc=jc.exports,Yc=r({name:"ElColorPicker",mixins:[l],props:{value:String,showAlpha:Boolean,colorFormat:String,disabled:Boolean,size:String,popperClass:String,predefine:Array},inject:{elForm:{default:""},elFormItem:{default:""}},directives:{Clickoutside:at},computed:{displayedColor:function(){return this.value||this.showPanelColor?this.displayedRgb(this.color,this.showAlpha):"transparent"},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},colorSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},colorDisabled:function(){return this.disabled||(this.elForm||{}).disabled}},watch:{value:function(e){e?e&&e!==this.color.value&&this.color.fromString(e):this.showPanelColor=!1},color:{deep:!0,handler:function(){this.showPanelColor=!0}},displayedColor:function(e){if(this.showPicker){var t=new Ec({enableAlpha:this.showAlpha,format:this.colorFormat});t.fromString(this.value),e!==this.displayedRgb(t,this.showAlpha)&&this.$emit("active-change",e)}}},methods:{handleTrigger:function(){this.colorDisabled||(this.showPicker=!this.showPicker)},confirmValue:function(){var e=this.color.value;this.$emit("input",e),this.$emit("change",e),this.dispatch("ElFormItem","el.form.change",e),this.showPicker=!1},clearValue:function(){this.$emit("input",null),this.$emit("change",null),null!==this.value&&this.dispatch("ElFormItem","el.form.change",null),this.showPanelColor=!1,this.showPicker=!1,this.resetColor()},hide:function(){this.showPicker=!1,this.resetColor()},resetColor:function(){var e=this;this.$nextTick(function(t){e.value?e.color.fromString(e.value):e.showPanelColor=!1})},displayedRgb:function(e,t){if(!(e instanceof Ec))throw Error("color should be instance of Color Class");var i=e.toRgb(),n=i.r,r=i.g,s=i.b;return t?"rgba("+n+", "+r+", "+s+", "+e.get("alpha")/100+")":"rgb("+n+", "+r+", "+s+")"}},mounted:function(){var e=this.value;e&&this.color.fromString(e),this.popperElm=this.$refs.dropdown.$el},data:function(){return{color:new Ec({enableAlpha:this.showAlpha,format:this.colorFormat}),showPicker:!1,showPanelColor:!1}},components:{PickerDropdown:qc}},yc,[],!1,null,null,null);Yc.options.__file="packages/color-picker/src/main.vue";var Kc=Yc.exports;Kc.install=function(e){e.component(Kc.name,Kc)};var Gc=Kc,Uc=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-transfer"},[i("transfer-panel",e._b({ref:"leftPanel",attrs:{data:e.sourceData,title:e.titles[0]||e.t("el.transfer.titles.0"),"default-checked":e.leftDefaultChecked,placeholder:e.filterPlaceholder||e.t("el.transfer.filterPlaceholder")},on:{"checked-change":e.onSourceCheckedChange}},"transfer-panel",e.$props,!1),[e._t("left-footer")],2),i("div",{staticClass:"el-transfer__buttons"},[i("el-button",{class:["el-transfer__button",e.hasButtonTexts?"is-with-texts":""],attrs:{type:"primary",disabled:0===e.rightChecked.length},nativeOn:{click:function(t){return e.addToLeft(t)}}},[i("i",{staticClass:"el-icon-arrow-left"}),void 0!==e.buttonTexts[0]?i("span",[e._v(e._s(e.buttonTexts[0]))]):e._e()]),i("el-button",{class:["el-transfer__button",e.hasButtonTexts?"is-with-texts":""],attrs:{type:"primary",disabled:0===e.leftChecked.length},nativeOn:{click:function(t){return e.addToRight(t)}}},[void 0!==e.buttonTexts[1]?i("span",[e._v(e._s(e.buttonTexts[1]))]):e._e(),i("i",{staticClass:"el-icon-arrow-right"})])],1),i("transfer-panel",e._b({ref:"rightPanel",attrs:{data:e.targetData,title:e.titles[1]||e.t("el.transfer.titles.1"),"default-checked":e.rightDefaultChecked,placeholder:e.filterPlaceholder||e.t("el.transfer.filterPlaceholder")},on:{"checked-change":e.onTargetCheckedChange}},"transfer-panel",e.$props,!1),[e._t("right-footer")],2)],1)};Uc._withStripped=!0;var Xc=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-transfer-panel"},[i("p",{staticClass:"el-transfer-panel__header"},[i("el-checkbox",{attrs:{indeterminate:e.isIndeterminate},on:{change:e.handleAllCheckedChange},model:{value:e.allChecked,callback:function(t){e.allChecked=t},expression:"allChecked"}},[e._v("\n      "+e._s(e.title)+"\n      "),i("span",[e._v(e._s(e.checkedSummary))])])],1),i("div",{class:["el-transfer-panel__body",e.hasFooter?"is-with-footer":""]},[e.filterable?i("el-input",{staticClass:"el-transfer-panel__filter",attrs:{size:"small",placeholder:e.placeholder},nativeOn:{mouseenter:function(t){e.inputHover=!0},mouseleave:function(t){e.inputHover=!1}},model:{value:e.query,callback:function(t){e.query=t},expression:"query"}},[i("i",{class:["el-input__icon","el-icon-"+e.inputIcon],attrs:{slot:"prefix"},on:{click:e.clearQuery},slot:"prefix"})]):e._e(),i("el-checkbox-group",{directives:[{name:"show",rawName:"v-show",value:!e.hasNoMatch&&e.data.length>0,expression:"!hasNoMatch && data.length > 0"}],staticClass:"el-transfer-panel__list",class:{"is-filterable":e.filterable},model:{value:e.checked,callback:function(t){e.checked=t},expression:"checked"}},e._l(e.filteredData,function(t){return i("el-checkbox",{key:t[e.keyProp],staticClass:"el-transfer-panel__item",attrs:{label:t[e.keyProp],disabled:t[e.disabledProp]}},[i("option-content",{attrs:{option:t}})],1)}),1),i("p",{directives:[{name:"show",rawName:"v-show",value:e.hasNoMatch,expression:"hasNoMatch"}],staticClass:"el-transfer-panel__empty"},[e._v(e._s(e.t("el.transfer.noMatch")))]),i("p",{directives:[{name:"show",rawName:"v-show",value:0===e.data.length&&!e.hasNoMatch,expression:"data.length === 0 && !hasNoMatch"}],staticClass:"el-transfer-panel__empty"},[e._v(e._s(e.t("el.transfer.noData")))])],1),e.hasFooter?i("p",{staticClass:"el-transfer-panel__footer"},[e._t("default")],2):e._e()])};Xc._withStripped=!0;var Jc=r({mixins:[q],name:"ElTransferPanel",componentName:"ElTransferPanel",components:{ElCheckboxGroup:Yi,ElCheckbox:Vi,ElInput:ne,OptionContent:{props:{option:Object},render:function(e){var t=function e(t){return"ElTransferPanel"===t.$options.componentName?t:t.$parent?e(t.$parent):t}(this),i=t.$parent||t;return t.renderContent?t.renderContent(e,this.option):i.$scopedSlots.default?i.$scopedSlots.default({option:this.option}):e("span",[this.option[t.labelProp]||this.option[t.keyProp]])}}},props:{data:{type:Array,default:function(){return[]}},renderContent:Function,placeholder:String,title:String,filterable:Boolean,format:Object,filterMethod:Function,defaultChecked:Array,props:Object},data:function(){return{checked:[],allChecked:!1,query:"",inputHover:!1,checkChangeByUser:!0}},watch:{checked:function(e,t){if(this.updateAllChecked(),this.checkChangeByUser){var i=e.concat(t).filter(function(i){return-1===e.indexOf(i)||-1===t.indexOf(i)});this.$emit("checked-change",e,i)}else this.$emit("checked-change",e),this.checkChangeByUser=!0},data:function(){var e=this,t=[],i=this.filteredData.map(function(t){return t[e.keyProp]});this.checked.forEach(function(e){i.indexOf(e)>-1&&t.push(e)}),this.checkChangeByUser=!1,this.checked=t},checkableData:function(){this.updateAllChecked()},defaultChecked:{immediate:!0,handler:function(e,t){var i=this;if(!t||e.length!==t.length||!e.every(function(e){return t.indexOf(e)>-1})){var n=[],r=this.checkableData.map(function(e){return e[i.keyProp]});e.forEach(function(e){r.indexOf(e)>-1&&n.push(e)}),this.checkChangeByUser=!1,this.checked=n}}}},computed:{filteredData:function(){var e=this;return this.data.filter(function(t){return"function"==typeof e.filterMethod?e.filterMethod(e.query,t):(t[e.labelProp]||t[e.keyProp].toString()).toLowerCase().indexOf(e.query.toLowerCase())>-1})},checkableData:function(){var e=this;return this.filteredData.filter(function(t){return!t[e.disabledProp]})},checkedSummary:function(){var e=this.checked.length,t=this.data.length,i=this.format,n=i.noChecked,r=i.hasChecked;return n&&r?e>0?r.replace(/\${checked}/g,e).replace(/\${total}/g,t):n.replace(/\${total}/g,t):e+"/"+t},isIndeterminate:function(){var e=this.checked.length;return e>0&&e<this.checkableData.length},hasNoMatch:function(){return this.query.length>0&&0===this.filteredData.length},inputIcon:function(){return this.query.length>0&&this.inputHover?"circle-close":"search"},labelProp:function(){return this.props.label||"label"},keyProp:function(){return this.props.key||"key"},disabledProp:function(){return this.props.disabled||"disabled"},hasFooter:function(){return!!this.$slots.default}},methods:{updateAllChecked:function(){var e=this,t=this.checkableData.map(function(t){return t[e.keyProp]});this.allChecked=t.length>0&&t.every(function(t){return e.checked.indexOf(t)>-1})},handleAllCheckedChange:function(e){var t=this;this.checked=e?this.checkableData.map(function(e){return e[t.keyProp]}):[]},clearQuery:function(){"circle-close"===this.inputIcon&&(this.query="")}}},Xc,[],!1,null,null,null);Jc.options.__file="packages/transfer/src/transfer-panel.vue";var Zc=r({name:"ElTransfer",mixins:[l,q,K],components:{TransferPanel:Jc.exports,ElButton:Et},props:{data:{type:Array,default:function(){return[]}},titles:{type:Array,default:function(){return[]}},buttonTexts:{type:Array,default:function(){return[]}},filterPlaceholder:{type:String,default:""},filterMethod:Function,leftDefaultChecked:{type:Array,default:function(){return[]}},rightDefaultChecked:{type:Array,default:function(){return[]}},renderContent:Function,value:{type:Array,default:function(){return[]}},format:{type:Object,default:function(){return{}}},filterable:Boolean,props:{type:Object,default:function(){return{label:"label",key:"key",disabled:"disabled"}}},targetOrder:{type:String,default:"original"}},data:function(){return{leftChecked:[],rightChecked:[]}},computed:{dataObj:function(){var e=this.props.key;return this.data.reduce(function(t,i){return(t[i[e]]=i)&&t},{})},sourceData:function(){var e=this;return this.data.filter(function(t){return-1===e.value.indexOf(t[e.props.key])})},targetData:function(){var e=this;return"original"===this.targetOrder?this.data.filter(function(t){return e.value.indexOf(t[e.props.key])>-1}):this.value.reduce(function(t,i){var n=e.dataObj[i];return n&&t.push(n),t},[])},hasButtonTexts:function(){return 2===this.buttonTexts.length}},watch:{value:function(e){this.dispatch("ElFormItem","el.form.change",e)}},methods:{getMigratingConfig:function(){return{props:{"footer-format":"footer-format is renamed to format."}}},onSourceCheckedChange:function(e,t){this.leftChecked=e,void 0!==t&&this.$emit("left-check-change",e,t)},onTargetCheckedChange:function(e,t){this.rightChecked=e,void 0!==t&&this.$emit("right-check-change",e,t)},addToLeft:function(){var e=this.value.slice();this.rightChecked.forEach(function(t){var i=e.indexOf(t);i>-1&&e.splice(i,1)}),this.$emit("input",e),this.$emit("change",e,"left",this.rightChecked)},addToRight:function(){var e=this,t=this.value.slice(),i=[],n=this.props.key;this.data.forEach(function(t){var r=t[n];e.leftChecked.indexOf(r)>-1&&-1===e.value.indexOf(r)&&i.push(r)}),t="unshift"===this.targetOrder?i.concat(t):t.concat(i),this.$emit("input",t),this.$emit("change",t,"right",this.leftChecked)},clearQuery:function(e){"left"===e?this.$refs.leftPanel.query="":"right"===e&&(this.$refs.rightPanel.query="")}}},Uc,[],!1,null,null,null);Zc.options.__file="packages/transfer/src/main.vue";var Qc=Zc.exports;Qc.install=function(e){e.component(Qc.name,Qc)};var eh=Qc,th=function(){var e=this.$createElement;return(this._self._c||e)("section",{staticClass:"el-container",class:{"is-vertical":this.isVertical}},[this._t("default")],2)};th._withStripped=!0;var ih=r({name:"ElContainer",componentName:"ElContainer",props:{direction:String},computed:{isVertical:function(){return"vertical"===this.direction||"horizontal"!==this.direction&&(!(!this.$slots||!this.$slots.default)&&this.$slots.default.some(function(e){var t=e.componentOptions&&e.componentOptions.tag;return"el-header"===t||"el-footer"===t}))}}},th,[],!1,null,null,null);ih.options.__file="packages/container/src/main.vue";var nh=ih.exports;nh.install=function(e){e.component(nh.name,nh)};var rh=nh,sh=function(){var e=this.$createElement;return(this._self._c||e)("header",{staticClass:"el-header",style:{height:this.height}},[this._t("default")],2)};sh._withStripped=!0;var ah=r({name:"ElHeader",componentName:"ElHeader",props:{height:{type:String,default:"60px"}}},sh,[],!1,null,null,null);ah.options.__file="packages/header/src/main.vue";var oh=ah.exports;oh.install=function(e){e.component(oh.name,oh)};var lh=oh,uh=function(){var e=this.$createElement;return(this._self._c||e)("aside",{staticClass:"el-aside",style:{width:this.width}},[this._t("default")],2)};uh._withStripped=!0;var ch=r({name:"ElAside",componentName:"ElAside",props:{width:{type:String,default:"300px"}}},uh,[],!1,null,null,null);ch.options.__file="packages/aside/src/main.vue";var hh=ch.exports;hh.install=function(e){e.component(hh.name,hh)};var dh=hh,ph=function(){var e=this.$createElement;return(this._self._c||e)("main",{staticClass:"el-main"},[this._t("default")],2)};ph._withStripped=!0;var fh=r({name:"ElMain",componentName:"ElMain"},ph,[],!1,null,null,null);fh.options.__file="packages/main/src/main.vue";var mh=fh.exports;mh.install=function(e){e.component(mh.name,mh)};var vh=mh,gh=function(){var e=this.$createElement;return(this._self._c||e)("footer",{staticClass:"el-footer",style:{height:this.height}},[this._t("default")],2)};gh._withStripped=!0;var bh=r({name:"ElFooter",componentName:"ElFooter",props:{height:{type:String,default:"60px"}}},gh,[],!1,null,null,null);bh.options.__file="packages/footer/src/main.vue";var yh=bh.exports;yh.install=function(e){e.component(yh.name,yh)};var wh=yh,_h=r({name:"ElTimeline",props:{reverse:{type:Boolean,default:!1}},provide:function(){return{timeline:this}},render:function(){var e=arguments[0],t=this.reverse,i={"el-timeline":!0,"is-reverse":t},n=this.$slots.default||[];return t&&(n=n.reverse()),e("ul",{class:i},[n])}},void 0,void 0,!1,null,null,null);_h.options.__file="packages/timeline/src/main.vue";var xh=_h.exports;xh.install=function(e){e.component(xh.name,xh)};var Ch=xh,kh=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("li",{staticClass:"el-timeline-item"},[i("div",{staticClass:"el-timeline-item__tail"}),e.$slots.dot?e._e():i("div",{staticClass:"el-timeline-item__node",class:["el-timeline-item__node--"+(e.size||""),"el-timeline-item__node--"+(e.type||"")],style:{backgroundColor:e.color}},[e.icon?i("i",{staticClass:"el-timeline-item__icon",class:e.icon}):e._e()]),e.$slots.dot?i("div",{staticClass:"el-timeline-item__dot"},[e._t("dot")],2):e._e(),i("div",{staticClass:"el-timeline-item__wrapper"},[e.hideTimestamp||"top"!==e.placement?e._e():i("div",{staticClass:"el-timeline-item__timestamp is-top"},[e._v("\n      "+e._s(e.timestamp)+"\n    ")]),i("div",{staticClass:"el-timeline-item__content"},[e._t("default")],2),e.hideTimestamp||"bottom"!==e.placement?e._e():i("div",{staticClass:"el-timeline-item__timestamp is-bottom"},[e._v("\n      "+e._s(e.timestamp)+"\n    ")])])])};kh._withStripped=!0;var Sh=r({name:"ElTimelineItem",inject:["timeline"],props:{timestamp:String,hideTimestamp:{type:Boolean,default:!1},placement:{type:String,default:"bottom"},type:String,color:String,size:{type:String,default:"normal"},icon:String}},kh,[],!1,null,null,null);Sh.options.__file="packages/timeline/src/item.vue";var Dh=Sh.exports;Dh.install=function(e){e.component(Dh.name,Dh)};var $h=Dh,Eh=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("a",e._b({class:["el-link",e.type?"el-link--"+e.type:"",e.disabled&&"is-disabled",e.underline&&!e.disabled&&"is-underline"],attrs:{href:e.disabled?null:e.href},on:{click:e.handleClick}},"a",e.$attrs,!1),[e.icon?i("i",{class:e.icon}):e._e(),e.$slots.default?i("span",{staticClass:"el-link--inner"},[e._t("default")],2):e._e(),e.$slots.icon?[e.$slots.icon?e._t("icon"):e._e()]:e._e()],2)};Eh._withStripped=!0;var Th=r({name:"ElLink",props:{type:{type:String,default:"default"},underline:{type:Boolean,default:!0},disabled:Boolean,href:String,icon:String},methods:{handleClick:function(e){this.disabled||this.href||this.$emit("click",e)}}},Eh,[],!1,null,null,null);Th.options.__file="packages/link/src/main.vue";var Mh=Th.exports;Mh.install=function(e){e.component(Mh.name,Mh)};var Nh=Mh,Ph=function(e,t){var i=t._c;return i("div",t._g(t._b({class:[t.data.staticClass,"el-divider","el-divider--"+t.props.direction]},"div",t.data.attrs,!1),t.listeners),[t.slots().default&&"vertical"!==t.props.direction?i("div",{class:["el-divider__text","is-"+t.props.contentPosition]},[t._t("default")],2):t._e()])};Ph._withStripped=!0;var Oh=r({name:"ElDivider",props:{direction:{type:String,default:"horizontal",validator:function(e){return-1!==["horizontal","vertical"].indexOf(e)}},contentPosition:{type:String,default:"center",validator:function(e){return-1!==["left","center","right"].indexOf(e)}}}},Ph,[],!0,null,null,null);Oh.options.__file="packages/divider/src/main.vue";var Ih=Oh.exports;Ih.install=function(e){e.component(Ih.name,Ih)};var Ah=Ih,Fh=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-image"},[e.loading?e._t("placeholder",[i("div",{staticClass:"el-image__placeholder"})]):e.error?e._t("error",[i("div",{staticClass:"el-image__error"},[e._v(e._s(e.t("el.image.error")))])]):i("img",e._g(e._b({staticClass:"el-image__inner",class:{"el-image__inner--center":e.alignCenter,"el-image__preview":e.preview},style:e.imageStyle,attrs:{src:e.src},on:{click:e.clickHandler}},"img",e.$attrs,!1),e.$listeners)),e.preview?[e.showViewer?i("image-viewer",{attrs:{"z-index":e.zIndex,"initial-index":e.imageIndex,"on-close":e.closeViewer,"url-list":e.previewSrcList}}):e._e()]:e._e()],2)};Fh._withStripped=!0;var Lh=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"viewer-fade"}},[i("div",{ref:"el-image-viewer__wrapper",staticClass:"el-image-viewer__wrapper",style:{"z-index":e.zIndex},attrs:{tabindex:"-1"}},[i("div",{staticClass:"el-image-viewer__mask",on:{click:function(t){return t.target!==t.currentTarget?null:e.handleMaskClick(t)}}}),i("span",{staticClass:"el-image-viewer__btn el-image-viewer__close",on:{click:e.hide}},[i("i",{staticClass:"el-icon-close"})]),e.isSingle?e._e():[i("span",{staticClass:"el-image-viewer__btn el-image-viewer__prev",class:{"is-disabled":!e.infinite&&e.isFirst},on:{click:e.prev}},[i("i",{staticClass:"el-icon-arrow-left"})]),i("span",{staticClass:"el-image-viewer__btn el-image-viewer__next",class:{"is-disabled":!e.infinite&&e.isLast},on:{click:e.next}},[i("i",{staticClass:"el-icon-arrow-right"})])],i("div",{staticClass:"el-image-viewer__btn el-image-viewer__actions"},[i("div",{staticClass:"el-image-viewer__actions__inner"},[i("i",{staticClass:"el-icon-zoom-out",on:{click:function(t){e.handleActions("zoomOut")}}}),i("i",{staticClass:"el-icon-zoom-in",on:{click:function(t){e.handleActions("zoomIn")}}}),i("i",{staticClass:"el-image-viewer__actions__divider"}),i("i",{class:e.mode.icon,on:{click:e.toggleMode}}),i("i",{staticClass:"el-image-viewer__actions__divider"}),i("i",{staticClass:"el-icon-refresh-left",on:{click:function(t){e.handleActions("anticlocelise")}}}),i("i",{staticClass:"el-icon-refresh-right",on:{click:function(t){e.handleActions("clocelise")}}})])]),i("div",{staticClass:"el-image-viewer__canvas"},e._l(e.urlList,function(t,n){return n===e.index?i("img",{key:t,ref:"img",refInFor:!0,staticClass:"el-image-viewer__img",style:e.imgStyle,attrs:{src:e.currentImg},on:{load:e.handleImgLoad,error:e.handleImgError,mousedown:e.handleMouseDown}}):e._e()}),0)],2)])};Lh._withStripped=!0;var Vh=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var i=arguments[t];for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n])}return e},Bh={CONTAIN:{name:"contain",icon:"el-icon-full-screen"},ORIGINAL:{name:"original",icon:"el-icon-c-scale-to-original"}},zh=!h.a.prototype.$isServer&&window.navigator.userAgent.match(/firefox/i)?"DOMMouseScroll":"mousewheel",Hh=r({name:"elImageViewer",props:{urlList:{type:Array,default:function(){return[]}},zIndex:{type:Number,default:2e3},onSwitch:{type:Function,default:function(){}},onClose:{type:Function,default:function(){}},initialIndex:{type:Number,default:0},appendToBody:{type:Boolean,default:!0},maskClosable:{type:Boolean,default:!0}},data:function(){return{index:this.initialIndex,isShow:!1,infinite:!0,loading:!1,mode:Bh.CONTAIN,transform:{scale:1,deg:0,offsetX:0,offsetY:0,enableTransition:!1}}},computed:{isSingle:function(){return this.urlList.length<=1},isFirst:function(){return 0===this.index},isLast:function(){return this.index===this.urlList.length-1},currentImg:function(){return this.urlList[this.index]},imgStyle:function(){var e=this.transform,t=e.scale,i=e.deg,n=e.offsetX,r=e.offsetY,s={transform:"scale("+t+") rotate("+i+"deg)",transition:e.enableTransition?"transform .3s":"","margin-left":n+"px","margin-top":r+"px"};return this.mode===Bh.CONTAIN&&(s.maxWidth=s.maxHeight="100%"),s}},watch:{index:{handler:function(e){this.reset(),this.onSwitch(e)}},currentImg:function(e){var t=this;this.$nextTick(function(e){t.$refs.img[0].complete||(t.loading=!0)})}},methods:{hide:function(){this.deviceSupportUninstall(),this.onClose()},deviceSupportInstall:function(){var e=this;this._keyDownHandler=F(function(t){switch(t.keyCode){case 27:e.hide();break;case 32:e.toggleMode();break;case 37:e.prev();break;case 38:e.handleActions("zoomIn");break;case 39:e.next();break;case 40:e.handleActions("zoomOut")}}),this._mouseWheelHandler=F(function(t){(t.wheelDelta?t.wheelDelta:-t.detail)>0?e.handleActions("zoomIn",{zoomRate:.015,enableTransition:!1}):e.handleActions("zoomOut",{zoomRate:.015,enableTransition:!1})}),he(document,"keydown",this._keyDownHandler),he(document,zh,this._mouseWheelHandler)},deviceSupportUninstall:function(){de(document,"keydown",this._keyDownHandler),de(document,zh,this._mouseWheelHandler),this._keyDownHandler=null,this._mouseWheelHandler=null},handleImgLoad:function(e){this.loading=!1},handleImgError:function(e){this.loading=!1,e.target.alt="加载失败"},handleMouseDown:function(e){var t=this;if(!this.loading&&0===e.button){var i=this.transform,n=i.offsetX,r=i.offsetY,s=e.pageX,a=e.pageY;this._dragHandler=F(function(e){t.transform.offsetX=n+e.pageX-s,t.transform.offsetY=r+e.pageY-a}),he(document,"mousemove",this._dragHandler),he(document,"mouseup",function(e){de(document,"mousemove",t._dragHandler)}),e.preventDefault()}},handleMaskClick:function(){this.maskClosable&&this.hide()},reset:function(){this.transform={scale:1,deg:0,offsetX:0,offsetY:0,enableTransition:!1}},toggleMode:function(){if(!this.loading){var e=Object.keys(Bh),t=(Object.values(Bh).indexOf(this.mode)+1)%e.length;this.mode=Bh[e[t]],this.reset()}},prev:function(){if(!this.isFirst||this.infinite){var e=this.urlList.length;this.index=(this.index-1+e)%e}},next:function(){if(!this.isLast||this.infinite){var e=this.urlList.length;this.index=(this.index+1)%e}},handleActions:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!this.loading){var i=Vh({zoomRate:.2,rotateDeg:90,enableTransition:!0},t),n=i.zoomRate,r=i.rotateDeg,s=i.enableTransition,a=this.transform;switch(e){case"zoomOut":a.scale>.2&&(a.scale=parseFloat((a.scale-n).toFixed(3)));break;case"zoomIn":a.scale=parseFloat((a.scale+n).toFixed(3));break;case"clocelise":a.deg+=r;break;case"anticlocelise":a.deg-=r}a.enableTransition=s}}},mounted:function(){this.deviceSupportInstall(),this.appendToBody&&document.body.appendChild(this.$el),this.$refs["el-image-viewer__wrapper"].focus()},destroyed:function(){this.appendToBody&&this.$el&&this.$el.parentNode&&this.$el.parentNode.removeChild(this.$el)}},Lh,[],!1,null,null,null);Hh.options.__file="packages/image/src/image-viewer.vue";var Rh=Hh.exports,Wh=function(){return void 0!==document.documentElement.style.objectFit},jh="none",qh="contain",Yh="cover",Kh="fill",Gh="scale-down",Uh="",Xh=r({name:"ElImage",mixins:[q],inheritAttrs:!1,components:{ImageViewer:Rh},props:{src:String,fit:String,lazy:Boolean,scrollContainer:{},previewSrcList:{type:Array,default:function(){return[]}},zIndex:{type:Number,default:2e3}},data:function(){return{loading:!0,error:!1,show:!this.lazy,imageWidth:0,imageHeight:0,showViewer:!1}},computed:{imageStyle:function(){var e=this.fit;return!this.$isServer&&e?Wh()?{"object-fit":e}:this.getImageStyle(e):{}},alignCenter:function(){return!this.$isServer&&!Wh()&&this.fit!==Kh},preview:function(){var e=this.previewSrcList;return Array.isArray(e)&&e.length>0},imageIndex:function(){var e=0,t=this.previewSrcList.indexOf(this.src);return t>=0&&(e=t),e}},watch:{src:function(e){this.show&&this.loadImage()},show:function(e){e&&this.loadImage()}},mounted:function(){this.lazy?this.addLazyLoadListener():this.loadImage()},beforeDestroy:function(){this.lazy&&this.removeLazyLoadListener()},methods:{loadImage:function(){var e=this;if(!this.$isServer){this.loading=!0,this.error=!1;var t=new Image;t.onload=function(i){return e.handleLoad(i,t)},t.onerror=this.handleError.bind(this),Object.keys(this.$attrs).forEach(function(i){var n=e.$attrs[i];t.setAttribute(i,n)}),t.src=this.src}},handleLoad:function(e,t){this.imageWidth=t.width,this.imageHeight=t.height,this.loading=!1,this.error=!1},handleError:function(e){this.loading=!1,this.error=!0,this.$emit("error",e)},handleLazyLoad:function(){(function(e,t){if(se||!e||!t)return!1;var i=e.getBoundingClientRect(),n=void 0;return n=[window,document,document.documentElement,null,void 0].includes(t)?{top:0,right:window.innerWidth,bottom:window.innerHeight,left:0}:t.getBoundingClientRect(),i.top<n.bottom&&i.bottom>n.top&&i.right>n.left&&i.left<n.right})(this.$el,this._scrollContainer)&&(this.show=!0,this.removeLazyLoadListener())},addLazyLoadListener:function(){if(!this.$isServer){var e=this.scrollContainer,t=null;(t=v(e)?e:f(e)?document.querySelector(e):be(this.$el))&&(this._scrollContainer=t,this._lazyLoadHandler=Mu()(200,this.handleLazyLoad),he(t,"scroll",this._lazyLoadHandler),this.handleLazyLoad())}},removeLazyLoadListener:function(){var e=this._scrollContainer,t=this._lazyLoadHandler;!this.$isServer&&e&&t&&(de(e,"scroll",t),this._scrollContainer=null,this._lazyLoadHandler=null)},getImageStyle:function(e){var t=this.imageWidth,i=this.imageHeight,n=this.$el,r=n.clientWidth,s=n.clientHeight;if(!(t&&i&&r&&s))return{};var a=t/i,o=r/s;e===Gh&&(e=t<r&&i<s?jh:qh);switch(e){case jh:return{width:"auto",height:"auto"};case qh:return a<o?{width:"auto"}:{height:"auto"};case Yh:return a<o?{height:"auto"}:{width:"auto"};default:return{}}},clickHandler:function(){this.preview&&(Uh=document.body.style.overflow,document.body.style.overflow="hidden",this.showViewer=!0)},closeViewer:function(){document.body.style.overflow=Uh,this.showViewer=!1}}},Fh,[],!1,null,null,null);Xh.options.__file="packages/image/src/main.vue";var Jh=Xh.exports;Jh.install=function(e){e.component(Jh.name,Jh)};var Zh=Jh,Qh=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-calendar"},[i("div",{staticClass:"el-calendar__header"},[i("div",{staticClass:"el-calendar__title"},[e._v("\n      "+e._s(e.i18nDate)+"\n    ")]),0===e.validatedRange.length?i("div",{staticClass:"el-calendar__button-group"},[i("el-button-group",[i("el-button",{attrs:{type:"plain",size:"mini"},on:{click:function(t){e.selectDate("prev-month")}}},[e._v("\n          "+e._s(e.t("el.datepicker.prevMonth"))+"\n        ")]),i("el-button",{attrs:{type:"plain",size:"mini"},on:{click:function(t){e.selectDate("today")}}},[e._v("\n          "+e._s(e.t("el.datepicker.today"))+"\n        ")]),i("el-button",{attrs:{type:"plain",size:"mini"},on:{click:function(t){e.selectDate("next-month")}}},[e._v("\n          "+e._s(e.t("el.datepicker.nextMonth"))+"\n        ")])],1)],1):e._e()]),0===e.validatedRange.length?i("div",{key:"no-range",staticClass:"el-calendar__body"},[i("date-table",{attrs:{date:e.date,"selected-day":e.realSelectedDay,"first-day-of-week":e.realFirstDayOfWeek},on:{pick:e.pickDay}})],1):i("div",{key:"has-range",staticClass:"el-calendar__body"},e._l(e.validatedRange,function(t,n){return i("date-table",{key:n,attrs:{date:t[0],"selected-day":e.realSelectedDay,range:t,"hide-header":0!==n,"first-day-of-week":e.realFirstDayOfWeek},on:{pick:e.pickDay}})}),1)])};Qh._withStripped=!0;var ed=r({props:{selectedDay:String,range:{type:Array,validator:function(e){if(!e||!e.length)return!0;var t=e[0],i=e[1];return Ir(t,i)}},date:Date,hideHeader:Boolean,firstDayOfWeek:Number},inject:["elCalendar"],methods:{toNestedArr:function(e){return yr(e.length/7).map(function(t,i){var n=7*i;return e.slice(n,n+7)})},getFormateDate:function(e,t){if(!e||-1===["prev","current","next"].indexOf(t))throw new Error("invalid day or type");var i=this.curMonthDatePrefix;return"prev"===t?i=this.prevMonthDatePrefix:"next"===t&&(i=this.nextMonthDatePrefix),i+"-"+(e=("00"+e).slice(-2))},getCellClass:function(e){var t=e.text,i=e.type,n=[i];if("current"===i){var r=this.getFormateDate(t,i);r===this.selectedDay&&n.push("is-selected"),r===this.formatedToday&&n.push("is-today")}return n},pickDay:function(e){var t=e.text,i=e.type,n=this.getFormateDate(t,i);this.$emit("pick",n)},cellRenderProxy:function(e){var t=e.text,i=e.type,n=this.$createElement,r=this.elCalendar.$scopedSlots.dateCell;if(!r)return n("span",[t]);var s=this.getFormateDate(t,i);return r({date:new Date(s),data:{isSelected:this.selectedDay===s,type:i+"-month",day:s}})}},computed:{WEEK_DAYS:function(){return lr().dayNames},prevMonthDatePrefix:function(){var e=new Date(this.date.getTime());return e.setDate(0),sr.a.format(e,"yyyy-MM")},curMonthDatePrefix:function(){return sr.a.format(this.date,"yyyy-MM")},nextMonthDatePrefix:function(){var e=new Date(this.date.getFullYear(),this.date.getMonth()+1,1);return sr.a.format(e,"yyyy-MM")},formatedToday:function(){return this.elCalendar.formatedToday},isInRange:function(){return this.range&&this.range.length},rows:function(){var e=[];if(this.isInRange){var t=this.range,i=t[0],n=t[1],r=yr(n.getDate()-i.getDate()+1).map(function(e,t){return{text:i.getDate()+t,type:"current"}}),s=r.length%7,a=yr(s=0===s?0:7-s).map(function(e,t){return{text:t+1,type:"next"}});e=r.concat(a)}else{var o=this.date,l=fr(o),u=function(e,t){if(t<=0)return[];var i=new Date(e.getTime());i.setDate(0);var n=i.getDate();return yr(t).map(function(e,i){return n-(t-i-1)})}(o,(l=0===l?7:l)-("number"==typeof this.firstDayOfWeek?this.firstDayOfWeek:1)).map(function(e){return{text:e,type:"prev"}}),c=function(e){var t=new Date(e.getFullYear(),e.getMonth()+1,0).getDate();return yr(t).map(function(e,t){return t+1})}(o).map(function(e){return{text:e,type:"current"}});e=[].concat(u,c);var h=yr(42-e.length).map(function(e,t){return{text:t+1,type:"next"}});e=e.concat(h)}return this.toNestedArr(e)},weekDays:function(){var e=this.firstDayOfWeek,t=this.WEEK_DAYS;return"number"!=typeof e||0===e?t.slice():t.slice(e).concat(t.slice(0,e))}},render:function(){var e=this,t=arguments[0],i=this.hideHeader?null:t("thead",[this.weekDays.map(function(e){return t("th",{key:e},[e])})]);return t("table",{class:{"el-calendar-table":!0,"is-range":this.isInRange},attrs:{cellspacing:"0",cellpadding:"0"}},[i,t("tbody",[this.rows.map(function(i,n){return t("tr",{class:{"el-calendar-table__row":!0,"el-calendar-table__row--hide-border":0===n&&e.hideHeader},key:n},[i.map(function(i,n){return t("td",{key:n,class:e.getCellClass(i),on:{click:e.pickDay.bind(e,i)}},[t("div",{class:"el-calendar-day"},[e.cellRenderProxy(i)])])})])})])])}},void 0,void 0,!1,null,null,null);ed.options.__file="packages/calendar/src/date-table.vue";var td=ed.exports,id=["prev-month","today","next-month"],nd=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],rd=r({name:"ElCalendar",mixins:[q],components:{DateTable:td,ElButton:Et,ElButtonGroup:Pt},props:{value:[Date,String,Number],range:{type:Array,validator:function(e){return!Array.isArray(e)||2===e.length&&e.every(function(e){return"string"==typeof e||"number"==typeof e||e instanceof Date})}},firstDayOfWeek:{type:Number,default:1}},provide:function(){return{elCalendar:this}},methods:{pickDay:function(e){this.realSelectedDay=e},selectDate:function(e){if(-1===id.indexOf(e))throw new Error("invalid type "+e);var t="";(t="prev-month"===e?this.prevMonthDatePrefix+"-01":"next-month"===e?this.nextMonthDatePrefix+"-01":this.formatedToday)!==this.formatedDate&&this.pickDay(t)},toDate:function(e){if(!e)throw new Error("invalid val");return e instanceof Date?e:new Date(e)},rangeValidator:function(e,t){var i=this.realFirstDayOfWeek,n=t?i:0===i?6:i-1,r=(t?"start":"end")+" of range should be "+nd[n]+".";return e.getDay()===n||(console.warn("[ElementCalendar]",r,"Invalid range will be ignored."),!1)}},computed:{prevMonthDatePrefix:function(){var e=new Date(this.date.getTime());return e.setDate(0),sr.a.format(e,"yyyy-MM")},curMonthDatePrefix:function(){return sr.a.format(this.date,"yyyy-MM")},nextMonthDatePrefix:function(){var e=new Date(this.date.getFullYear(),this.date.getMonth()+1,1);return sr.a.format(e,"yyyy-MM")},formatedDate:function(){return sr.a.format(this.date,"yyyy-MM-dd")},i18nDate:function(){var e=this.date.getFullYear(),t=this.date.getMonth()+1;return e+" "+this.t("el.datepicker.year")+" "+this.t("el.datepicker.month"+t)},formatedToday:function(){return sr.a.format(this.now,"yyyy-MM-dd")},realSelectedDay:{get:function(){return this.value?this.formatedDate:this.selectedDay},set:function(e){this.selectedDay=e;var t=new Date(e);this.$emit("input",t)}},date:function(){if(this.value)return this.toDate(this.value);if(this.realSelectedDay){var e=this.selectedDay.split("-");return new Date(e[0],e[1]-1,e[2])}return this.validatedRange.length?this.validatedRange[0][0]:this.now},validatedRange:function(){var e=this,t=this.range;if(!t)return[];if(2===(t=t.reduce(function(t,i,n){var r=e.toDate(i);return e.rangeValidator(r,0===n)&&(t=t.concat(r)),t},[])).length){var i=t,n=i[0],r=i[1];if(n>r)return console.warn("[ElementCalendar]end time should be greater than start time"),[];if(Ir(n,r))return[[n,r]];var s=[],a=new Date(n.getFullYear(),n.getMonth()+1,1),o=this.toDate(a.getTime()-864e5);if(!Ir(a,r))return console.warn("[ElementCalendar]start time and end time interval must not exceed two months"),[];s.push([n,o]);var l=this.realFirstDayOfWeek,u=a.getDay(),c=0;return u!==l&&(c=0===l?7-u:(c=l-u)>0?c:7+c),(a=this.toDate(a.getTime()+864e5*c)).getDate()<r.getDate()&&s.push([a,r]),s}return[]},realFirstDayOfWeek:function(){return this.firstDayOfWeek<1||this.firstDayOfWeek>6?0:Math.floor(this.firstDayOfWeek)}},data:function(){return{selectedDay:"",now:new Date}}},Qh,[],!1,null,null,null);rd.options.__file="packages/calendar/src/main.vue";var sd=rd.exports;sd.install=function(e){e.component(sd.name,sd)};var ad=sd,od=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-fade-in"}},[e.visible?i("div",{staticClass:"el-backtop",style:{right:e.styleRight,bottom:e.styleBottom},on:{click:function(t){return t.stopPropagation(),e.handleClick(t)}}},[e._t("default",[i("el-icon",{attrs:{name:"caret-top"}})])],2):e._e()])};od._withStripped=!0;var ld=function(e){return Math.pow(e,3)},ud=r({name:"ElBacktop",props:{visibilityHeight:{type:Number,default:200},target:[String],right:{type:Number,default:40},bottom:{type:Number,default:40}},data:function(){return{el:null,container:null,visible:!1}},computed:{styleBottom:function(){return this.bottom+"px"},styleRight:function(){return this.right+"px"}},mounted:function(){this.init(),this.throttledScrollHandler=Mu()(300,this.onScroll),this.container.addEventListener("scroll",this.throttledScrollHandler)},methods:{init:function(){if(this.container=document,this.el=document.documentElement,this.target){if(this.el=document.querySelector(this.target),!this.el)throw new Error("target is not existed: "+this.target);this.container=this.el}},onScroll:function(){var e=this.el.scrollTop;this.visible=e>=this.visibilityHeight},handleClick:function(e){this.scrollToTop(),this.$emit("click",e)},scrollToTop:function(){var e=this.el,t=Date.now(),i=e.scrollTop,n=window.requestAnimationFrame||function(e){return setTimeout(e,16)};n(function r(){var s,a=(Date.now()-t)/500;a<1?(e.scrollTop=i*(1-((s=a)<.5?ld(2*s)/2:1-ld(2*(1-s))/2)),n(r)):e.scrollTop=0})}},beforeDestroy:function(){this.container.removeEventListener("scroll",this.throttledScrollHandler)}},od,[],!1,null,null,null);ud.options.__file="packages/backtop/src/main.vue";var cd=ud.exports;cd.install=function(e){e.component(cd.name,cd)};var hd=cd,dd=function(e,t){return e===window||e===document?document.documentElement[t]:e[t]},pd=function(e){return dd(e,"offsetHeight")},fd="ElInfiniteScroll",md={delay:{type:Number,default:200},distance:{type:Number,default:0},disabled:{type:Boolean,default:!1},immediate:{type:Boolean,default:!0}},vd=function(e,t){return v(e)?(i=md,Object.keys(i||{}).map(function(e){return[e,i[e]]})).reduce(function(i,n){var r=n[0],s=n[1],a=s.type,o=s.default,l=e.getAttribute("infinite-scroll-"+r);switch(l=b(t[l])?l:t[l],a){case Number:l=Number(l),l=Number.isNaN(l)?o:l;break;case Boolean:l=null!=l?"false"!==l&&Boolean(l):o;break;default:l=a(l)}return i[r]=l,i},{}):{};var i},gd=function(e){return e.getBoundingClientRect().top},bd=function(e){var t=this[fd],i=t.el,n=t.vm,r=t.container,s=t.observer,a=vd(i,n),o=a.distance;if(!a.disabled){var l=r.getBoundingClientRect();if(l.width||l.height){var u=!1;if(r===i){var c=r.scrollTop+function(e){return dd(e,"clientHeight")}(r);u=r.scrollHeight-c<=o}else{u=pd(i)+gd(i)-gd(r)-pd(r)+Number.parseFloat(function(e,t){if(e===window&&(e=document.documentElement),1!==e.nodeType)return[];var i=window.getComputedStyle(e,null);return t?i[t]:i}(r,"borderBottomWidth"))<=o}u&&g(e)?e.call(n):s&&(s.disconnect(),this[fd].observer=null)}}},yd={name:"InfiniteScroll",inserted:function(e,t,i){var n=t.value,r=i.context,s=be(e,!0),a=vd(e,r),o=a.delay,l=a.immediate,u=et()(o,bd.bind(e,n));(e[fd]={el:e,vm:r,container:s,onScroll:u},s)&&(s.addEventListener("scroll",u),l&&((e[fd].observer=new MutationObserver(u)).observe(s,{childList:!0,subtree:!0}),u()))},unbind:function(e){var t=e[fd],i=t.container,n=t.onScroll;i&&i.removeEventListener("scroll",n)},install:function(e){e.directive(yd.name,yd)}},wd=yd,_d=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-page-header"},[i("div",{staticClass:"el-page-header__left",on:{click:function(t){e.$emit("back")}}},[i("i",{staticClass:"el-icon-back"}),i("div",{staticClass:"el-page-header__title"},[e._t("title",[e._v(e._s(e.title))])],2)]),i("div",{staticClass:"el-page-header__content"},[e._t("content",[e._v(e._s(e.content))])],2)])};_d._withStripped=!0;var xd=r({name:"ElPageHeader",props:{title:{type:String,default:function(){return W("el.pageHeader.title")}},content:String}},_d,[],!1,null,null,null);xd.options.__file="packages/page-header/src/main.vue";var Cd=xd.exports;Cd.install=function(e){e.component(Cd.name,Cd)};var kd=Cd,Sd=r({name:"ElAvatar",props:{size:{type:[Number,String],validator:function(e){return"string"==typeof e?["large","medium","small"].includes(e):"number"==typeof e}},shape:{type:String,default:"circle",validator:function(e){return["circle","square"].includes(e)}},icon:String,src:String,alt:String,srcSet:String,error:Function,fit:{type:String,default:"cover"}},data:function(){return{isImageExist:!0}},computed:{avatarClass:function(){var e=this.size,t=this.icon,i=this.shape,n=["el-avatar"];return e&&"string"==typeof e&&n.push("el-avatar--"+e),t&&n.push("el-avatar--icon"),i&&n.push("el-avatar--"+i),n.join(" ")}},methods:{handleError:function(){var e=this.error;!1!==(e?e():void 0)&&(this.isImageExist=!1)},renderAvatar:function(){var e=this.$createElement,t=this.icon,i=this.src,n=this.alt,r=this.isImageExist,s=this.srcSet,a=this.fit;return r&&i?e("img",{attrs:{src:i,alt:n,srcSet:s},on:{error:this.handleError},style:{"object-fit":a}}):t?e("i",{class:t}):this.$slots.default}},render:function(){var e=arguments[0],t=this.avatarClass,i=this.size;return e("span",{class:t,style:"number"==typeof i?{height:i+"px",width:i+"px",lineHeight:i+"px"}:{}},[this.renderAvatar()])}},void 0,void 0,!1,null,null,null);Sd.options.__file="packages/avatar/src/main.vue";var Dd=Sd.exports;Dd.install=function(e){e.component(Dd.name,Dd)};var $d=Dd,Ed=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-drawer-fade"},on:{"after-enter":e.afterEnter,"after-leave":e.afterLeave}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-drawer__wrapper",attrs:{tabindex:"-1"}},[i("div",{staticClass:"el-drawer__container",class:e.visible&&"el-drawer__open",attrs:{role:"document",tabindex:"-1"},on:{click:function(t){return t.target!==t.currentTarget?null:e.handleWrapperClick(t)}}},[i("div",{ref:"drawer",staticClass:"el-drawer",class:[e.direction,e.customClass],style:e.isHorizontal?"width: "+e.drawerSize:"height: "+e.drawerSize,attrs:{"aria-modal":"true","aria-labelledby":"el-drawer__title","aria-label":e.title,role:"dialog",tabindex:"-1"}},[e.withHeader?i("header",{staticClass:"el-drawer__header",attrs:{id:"el-drawer__title"}},[e._t("title",[i("span",{attrs:{role:"heading",title:e.title}},[e._v(e._s(e.title))])]),e.showClose?i("button",{staticClass:"el-drawer__close-btn",attrs:{"aria-label":"close "+(e.title||"drawer"),type:"button"},on:{click:e.closeDrawer}},[i("i",{staticClass:"el-dialog__close el-icon el-icon-close"})]):e._e()],2):e._e(),e.rendered?i("section",{staticClass:"el-drawer__body"},[e._t("default")],2):e._e()])])])])};Ed._withStripped=!0;var Td=r({name:"ElDrawer",mixins:[Me,l],props:{appendToBody:{type:Boolean,default:!1},beforeClose:{type:Function},customClass:{type:String,default:""},closeOnPressEscape:{type:Boolean,default:!0},destroyOnClose:{type:Boolean,default:!1},modal:{type:Boolean,default:!0},direction:{type:String,default:"rtl",validator:function(e){return-1!==["ltr","rtl","ttb","btt"].indexOf(e)}},modalAppendToBody:{type:Boolean,default:!0},showClose:{type:Boolean,default:!0},size:{type:[Number,String],default:"30%"},title:{type:String,default:""},visible:{type:Boolean},wrapperClosable:{type:Boolean,default:!0},withHeader:{type:Boolean,default:!0}},computed:{isHorizontal:function(){return"rtl"===this.direction||"ltr"===this.direction},drawerSize:function(){return"number"==typeof this.size?this.size+"px":this.size}},data:function(){return{closed:!1,prevActiveElement:null}},watch:{visible:function(e){var t=this;e?(this.closed=!1,this.$emit("open"),this.appendToBody&&document.body.appendChild(this.$el),this.prevActiveElement=document.activeElement):(this.closed||this.$emit("close"),this.$nextTick(function(){t.prevActiveElement&&t.prevActiveElement.focus()}))}},methods:{afterEnter:function(){this.$emit("opened")},afterLeave:function(){this.$emit("closed")},hide:function(e){!1!==e&&(this.$emit("update:visible",!1),this.$emit("close"),!0===this.destroyOnClose&&(this.rendered=!1),this.closed=!0)},handleWrapperClick:function(){this.wrapperClosable&&this.closeDrawer()},closeDrawer:function(){"function"==typeof this.beforeClose?this.beforeClose(this.hide):this.hide()},handleClose:function(){this.closeDrawer()}},mounted:function(){this.visible&&(this.rendered=!0,this.open())},destroyed:function(){this.appendToBody&&this.$el&&this.$el.parentNode&&this.$el.parentNode.removeChild(this.$el)}},Ed,[],!1,null,null,null);Td.options.__file="packages/drawer/src/main.vue";var Md=Td.exports;Md.install=function(e){e.component(Md.name,Md)};var Nd=Md,Pd=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("el-popover",e._b({attrs:{trigger:"click"},model:{value:e.visible,callback:function(t){e.visible=t},expression:"visible"}},"el-popover",e.$attrs,!1),[i("div",{staticClass:"el-popconfirm"},[i("p",{staticClass:"el-popconfirm__main"},[e.hideIcon?e._e():i("i",{staticClass:"el-popconfirm__icon",class:e.icon,style:{color:e.iconColor}}),e._v("\n      "+e._s(e.title)+"\n    ")]),i("div",{staticClass:"el-popconfirm__action"},[i("el-button",{attrs:{size:"mini",type:e.cancelButtonType},on:{click:e.cancel}},[e._v("\n        "+e._s(e.displayCancelButtonText)+"\n      ")]),i("el-button",{attrs:{size:"mini",type:e.confirmButtonType},on:{click:e.confirm}},[e._v("\n        "+e._s(e.displayConfirmButtonText)+"\n      ")])],1)]),e._t("reference",null,{slot:"reference"})],2)};Pd._withStripped=!0;var Od=r({name:"ElPopconfirm",props:{title:{type:String},confirmButtonText:{type:String},cancelButtonText:{type:String},confirmButtonType:{type:String,default:"primary"},cancelButtonType:{type:String,default:"text"},icon:{type:String,default:"el-icon-question"},iconColor:{type:String,default:"#f90"},hideIcon:{type:Boolean,default:!1}},components:{ElPopover:Zs,ElButton:Et},data:function(){return{visible:!1}},computed:{displayConfirmButtonText:function(){return this.confirmButtonText||W("el.popconfirm.confirmButtonText")},displayCancelButtonText:function(){return this.cancelButtonText||W("el.popconfirm.cancelButtonText")}},methods:{confirm:function(){this.visible=!1,this.$emit("confirm")},cancel:function(){this.visible=!1,this.$emit("cancel")}}},Pd,[],!1,null,null,null);Od.options.__file="packages/popconfirm/src/main.vue";var Id=Od.exports;Id.install=function(e){e.component(Id.name,Id)};var Ad=Id,Fd=[pt,gt,kt,At,Bt,Wt,ei,ai,di,vi,ne,_i,Si,Mi,Ii,Vi,Ri,Yi,Xi,ct,ht,en,Et,Pt,Un,ir,Ts,Ls,Ys,Zs,ui,Ca,$a,Na,uo,yo,Co,Re,zo,qo,ul,Sl,$l,Ml,Kl,Al,Jl,hu,mu,yu,Cu,$u,Ou,Ze,Lu,Hu,qu,bc,Gc,eh,rh,lh,dh,vh,wh,Ch,$h,Nh,Ah,Zh,ad,hd,kd,hc,$d,Nd,Ad,ii],Ld=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};j.use(t.locale),j.i18n(t.i18n),Fd.forEach(function(t){e.component(t.name,t)}),e.use(wd),e.use(_l.directive),e.prototype.$ELEMENT={size:t.size||"",zIndex:t.zIndex||2e3},e.prototype.$loading=_l.service,e.prototype.$msgbox=ya,e.prototype.$alert=ya.alert,e.prototype.$confirm=ya.confirm,e.prototype.$prompt=ya.prompt,e.prototype.$notify=tl,e.prototype.$message=ou};"undefined"!=typeof window&&window.Vue&&Ld(window.Vue);t.default={version:"2.15.1",locale:j.use,i18n:j.i18n,install:Ld,CollapseTransition:ii,Loading:_l,Pagination:pt,Dialog:gt,Autocomplete:kt,Dropdown:At,DropdownMenu:Bt,DropdownItem:Wt,Menu:ei,Submenu:ai,MenuItem:di,MenuItemGroup:vi,Input:ne,InputNumber:_i,Radio:Si,RadioGroup:Mi,RadioButton:Ii,Checkbox:Vi,CheckboxButton:Ri,CheckboxGroup:Yi,Switch:Xi,Select:ct,Option:ht,OptionGroup:en,Button:Et,ButtonGroup:Pt,Table:Un,TableColumn:ir,DatePicker:Ts,TimeSelect:Ls,TimePicker:Ys,Popover:Zs,Tooltip:ui,MessageBox:ya,Breadcrumb:Ca,BreadcrumbItem:$a,Form:Na,FormItem:uo,Tabs:yo,TabPane:Co,Tag:Re,Tree:zo,Alert:qo,Notification:tl,Slider:ul,Icon:Sl,Row:$l,Col:Ml,Upload:Kl,Progress:Al,Spinner:Jl,Message:ou,Badge:hu,Card:mu,Rate:yu,Steps:Cu,Step:$u,Carousel:Ou,Scrollbar:Ze,CarouselItem:Lu,Collapse:Hu,CollapseItem:qu,Cascader:bc,ColorPicker:Gc,Transfer:eh,Container:rh,Header:lh,Aside:dh,Main:vh,Footer:wh,Timeline:Ch,TimelineItem:$h,Link:Nh,Divider:Ah,Image:Zh,Calendar:ad,Backtop:hd,InfiniteScroll:wd,PageHeader:kd,CascaderPanel:hc,Avatar:$d,Drawer:Nd,Popconfirm:Ad}}]).default});
\ No newline at end of file
diff --git a/map/lib/hls.js b/map/lib/hls.js
deleted file mode 100644
index 59b1811..0000000
--- a/map/lib/hls.js
+++ /dev/null
@@ -1,21684 +0,0 @@
-typeof window !== "undefined" &&
-(function webpackUniversalModuleDefinition(root, factory) {
-	if(typeof exports === 'object' && typeof module === 'object')
-		module.exports = factory();
-	else if(typeof define === 'function' && define.amd)
-		define([], factory);
-	else if(typeof exports === 'object')
-		exports["Hls"] = factory();
-	else
-		root["Hls"] = factory();
-})(this, function() {
-return /******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-/******/
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-/******/
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId]) {
-/******/ 			return installedModules[moduleId].exports;
-/******/ 		}
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			i: moduleId,
-/******/ 			l: false,
-/******/ 			exports: {}
-/******/ 		};
-/******/
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-/******/
-/******/ 		// Flag the module as loaded
-/******/ 		module.l = true;
-/******/
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-/******/
-/******/
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-/******/
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-/******/
-/******/ 	// define getter function for harmony exports
-/******/ 	__webpack_require__.d = function(exports, name, getter) {
-/******/ 		if(!__webpack_require__.o(exports, name)) {
-/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
-/******/ 		}
-/******/ 	};
-/******/
-/******/ 	// define __esModule on exports
-/******/ 	__webpack_require__.r = function(exports) {
-/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
-/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
-/******/ 		}
-/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
-/******/ 	};
-/******/
-/******/ 	// create a fake namespace object
-/******/ 	// mode & 1: value is a module id, require it
-/******/ 	// mode & 2: merge all properties of value into the ns
-/******/ 	// mode & 4: return value when already ns object
-/******/ 	// mode & 8|1: behave like require
-/******/ 	__webpack_require__.t = function(value, mode) {
-/******/ 		if(mode & 1) value = __webpack_require__(value);
-/******/ 		if(mode & 8) return value;
-/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
-/******/ 		var ns = Object.create(null);
-/******/ 		__webpack_require__.r(ns);
-/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
-/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
-/******/ 		return ns;
-/******/ 	};
-/******/
-/******/ 	// getDefaultExport function for compatibility with non-harmony modules
-/******/ 	__webpack_require__.n = function(module) {
-/******/ 		var getter = module && module.__esModule ?
-/******/ 			function getDefault() { return module['default']; } :
-/******/ 			function getModuleExports() { return module; };
-/******/ 		__webpack_require__.d(getter, 'a', getter);
-/******/ 		return getter;
-/******/ 	};
-/******/
-/******/ 	// Object.prototype.hasOwnProperty.call
-/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
-/******/
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "/dist/";
-/******/
-/******/
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(__webpack_require__.s = "./src/hls.ts");
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ "./node_modules/eventemitter3/index.js":
-/*!*********************************************!*\
-  !*** ./node_modules/eventemitter3/index.js ***!
-  \*********************************************/
-/*! no static exports found */
-/*! ModuleConcatenation bailout: Module is not an ECMAScript module */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-var has = Object.prototype.hasOwnProperty
-  , prefix = '~';
-
-/**
- * Constructor to create a storage for our `EE` objects.
- * An `Events` instance is a plain object whose properties are event names.
- *
- * @constructor
- * @private
- */
-function Events() {}
-
-//
-// We try to not inherit from `Object.prototype`. In some engines creating an
-// instance in this way is faster than calling `Object.create(null)` directly.
-// If `Object.create(null)` is not supported we prefix the event names with a
-// character to make sure that the built-in object properties are not
-// overridden or used as an attack vector.
-//
-if (Object.create) {
-  Events.prototype = Object.create(null);
-
-  //
-  // This hack is needed because the `__proto__` property is still inherited in
-  // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.
-  //
-  if (!new Events().__proto__) prefix = false;
-}
-
-/**
- * Representation of a single event listener.
- *
- * @param {Function} fn The listener function.
- * @param {*} context The context to invoke the listener with.
- * @param {Boolean} [once=false] Specify if the listener is a one-time listener.
- * @constructor
- * @private
- */
-function EE(fn, context, once) {
-  this.fn = fn;
-  this.context = context;
-  this.once = once || false;
-}
-
-/**
- * Add a listener for a given event.
- *
- * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.
- * @param {(String|Symbol)} event The event name.
- * @param {Function} fn The listener function.
- * @param {*} context The context to invoke the listener with.
- * @param {Boolean} once Specify if the listener is a one-time listener.
- * @returns {EventEmitter}
- * @private
- */
-function addListener(emitter, event, fn, context, once) {
-  if (typeof fn !== 'function') {
-    throw new TypeError('The listener must be a function');
-  }
-
-  var listener = new EE(fn, context || emitter, once)
-    , evt = prefix ? prefix + event : event;
-
-  if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;
-  else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);
-  else emitter._events[evt] = [emitter._events[evt], listener];
-
-  return emitter;
-}
-
-/**
- * Clear event by name.
- *
- * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.
- * @param {(String|Symbol)} evt The Event name.
- * @private
- */
-function clearEvent(emitter, evt) {
-  if (--emitter._eventsCount === 0) emitter._events = new Events();
-  else delete emitter._events[evt];
-}
-
-/**
- * Minimal `EventEmitter` interface that is molded against the Node.js
- * `EventEmitter` interface.
- *
- * @constructor
- * @public
- */
-function EventEmitter() {
-  this._events = new Events();
-  this._eventsCount = 0;
-}
-
-/**
- * Return an array listing the events for which the emitter has registered
- * listeners.
- *
- * @returns {Array}
- * @public
- */
-EventEmitter.prototype.eventNames = function eventNames() {
-  var names = []
-    , events
-    , name;
-
-  if (this._eventsCount === 0) return names;
-
-  for (name in (events = this._events)) {
-    if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);
-  }
-
-  if (Object.getOwnPropertySymbols) {
-    return names.concat(Object.getOwnPropertySymbols(events));
-  }
-
-  return names;
-};
-
-/**
- * Return the listeners registered for a given event.
- *
- * @param {(String|Symbol)} event The event name.
- * @returns {Array} The registered listeners.
- * @public
- */
-EventEmitter.prototype.listeners = function listeners(event) {
-  var evt = prefix ? prefix + event : event
-    , handlers = this._events[evt];
-
-  if (!handlers) return [];
-  if (handlers.fn) return [handlers.fn];
-
-  for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {
-    ee[i] = handlers[i].fn;
-  }
-
-  return ee;
-};
-
-/**
- * Return the number of listeners listening to a given event.
- *
- * @param {(String|Symbol)} event The event name.
- * @returns {Number} The number of listeners.
- * @public
- */
-EventEmitter.prototype.listenerCount = function listenerCount(event) {
-  var evt = prefix ? prefix + event : event
-    , listeners = this._events[evt];
-
-  if (!listeners) return 0;
-  if (listeners.fn) return 1;
-  return listeners.length;
-};
-
-/**
- * Calls each of the listeners registered for a given event.
- *
- * @param {(String|Symbol)} event The event name.
- * @returns {Boolean} `true` if the event had listeners, else `false`.
- * @public
- */
-EventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {
-  var evt = prefix ? prefix + event : event;
-
-  if (!this._events[evt]) return false;
-
-  var listeners = this._events[evt]
-    , len = arguments.length
-    , args
-    , i;
-
-  if (listeners.fn) {
-    if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);
-
-    switch (len) {
-      case 1: return listeners.fn.call(listeners.context), true;
-      case 2: return listeners.fn.call(listeners.context, a1), true;
-      case 3: return listeners.fn.call(listeners.context, a1, a2), true;
-      case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;
-      case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;
-      case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;
-    }
-
-    for (i = 1, args = new Array(len -1); i < len; i++) {
-      args[i - 1] = arguments[i];
-    }
-
-    listeners.fn.apply(listeners.context, args);
-  } else {
-    var length = listeners.length
-      , j;
-
-    for (i = 0; i < length; i++) {
-      if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);
-
-      switch (len) {
-        case 1: listeners[i].fn.call(listeners[i].context); break;
-        case 2: listeners[i].fn.call(listeners[i].context, a1); break;
-        case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;
-        case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;
-        default:
-          if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {
-            args[j - 1] = arguments[j];
-          }
-
-          listeners[i].fn.apply(listeners[i].context, args);
-      }
-    }
-  }
-
-  return true;
-};
-
-/**
- * Add a listener for a given event.
- *
- * @param {(String|Symbol)} event The event name.
- * @param {Function} fn The listener function.
- * @param {*} [context=this] The context to invoke the listener with.
- * @returns {EventEmitter} `this`.
- * @public
- */
-EventEmitter.prototype.on = function on(event, fn, context) {
-  return addListener(this, event, fn, context, false);
-};
-
-/**
- * Add a one-time listener for a given event.
- *
- * @param {(String|Symbol)} event The event name.
- * @param {Function} fn The listener function.
- * @param {*} [context=this] The context to invoke the listener with.
- * @returns {EventEmitter} `this`.
- * @public
- */
-EventEmitter.prototype.once = function once(event, fn, context) {
-  return addListener(this, event, fn, context, true);
-};
-
-/**
- * Remove the listeners of a given event.
- *
- * @param {(String|Symbol)} event The event name.
- * @param {Function} fn Only remove the listeners that match this function.
- * @param {*} context Only remove the listeners that have this context.
- * @param {Boolean} once Only remove one-time listeners.
- * @returns {EventEmitter} `this`.
- * @public
- */
-EventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {
-  var evt = prefix ? prefix + event : event;
-
-  if (!this._events[evt]) return this;
-  if (!fn) {
-    clearEvent(this, evt);
-    return this;
-  }
-
-  var listeners = this._events[evt];
-
-  if (listeners.fn) {
-    if (
-      listeners.fn === fn &&
-      (!once || listeners.once) &&
-      (!context || listeners.context === context)
-    ) {
-      clearEvent(this, evt);
-    }
-  } else {
-    for (var i = 0, events = [], length = listeners.length; i < length; i++) {
-      if (
-        listeners[i].fn !== fn ||
-        (once && !listeners[i].once) ||
-        (context && listeners[i].context !== context)
-      ) {
-        events.push(listeners[i]);
-      }
-    }
-
-    //
-    // Reset the array, or remove it completely if we have no more listeners.
-    //
-    if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;
-    else clearEvent(this, evt);
-  }
-
-  return this;
-};
-
-/**
- * Remove all listeners, or those of the specified event.
- *
- * @param {(String|Symbol)} [event] The event name.
- * @returns {EventEmitter} `this`.
- * @public
- */
-EventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {
-  var evt;
-
-  if (event) {
-    evt = prefix ? prefix + event : event;
-    if (this._events[evt]) clearEvent(this, evt);
-  } else {
-    this._events = new Events();
-    this._eventsCount = 0;
-  }
-
-  return this;
-};
-
-//
-// Alias methods names because people roll like that.
-//
-EventEmitter.prototype.off = EventEmitter.prototype.removeListener;
-EventEmitter.prototype.addListener = EventEmitter.prototype.on;
-
-//
-// Expose the prefix.
-//
-EventEmitter.prefixed = prefix;
-
-//
-// Allow `EventEmitter` to be imported as module namespace.
-//
-EventEmitter.EventEmitter = EventEmitter;
-
-//
-// Expose the module.
-//
-if (true) {
-  module.exports = EventEmitter;
-}
-
-
-/***/ }),
-
-/***/ "./node_modules/url-toolkit/src/url-toolkit.js":
-/*!*****************************************************!*\
-  !*** ./node_modules/url-toolkit/src/url-toolkit.js ***!
-  \*****************************************************/
-/*! no static exports found */
-/*! ModuleConcatenation bailout: Module is not an ECMAScript module */
-/***/ (function(module, exports, __webpack_require__) {
-
-// see https://tools.ietf.org/html/rfc1808
-
-(function (root) {
-  var URL_REGEX = /^((?:[a-zA-Z0-9+\-.]+:)?)(\/\/[^\/?#]*)?((?:[^\/?#]*\/)*[^;?#]*)?(;[^?#]*)?(\?[^#]*)?(#.*)?$/;
-  var FIRST_SEGMENT_REGEX = /^([^\/?#]*)(.*)$/;
-  var SLASH_DOT_REGEX = /(?:\/|^)\.(?=\/)/g;
-  var SLASH_DOT_DOT_REGEX = /(?:\/|^)\.\.\/(?!\.\.\/)[^\/]*(?=\/)/g;
-
-  var URLToolkit = {
-    // If opts.alwaysNormalize is true then the path will always be normalized even when it starts with / or //
-    // E.g
-    // With opts.alwaysNormalize = false (default, spec compliant)
-    // http://a.com/b/cd + /e/f/../g => http://a.com/e/f/../g
-    // With opts.alwaysNormalize = true (not spec compliant)
-    // http://a.com/b/cd + /e/f/../g => http://a.com/e/g
-    buildAbsoluteURL: function (baseURL, relativeURL, opts) {
-      opts = opts || {};
-      // remove any remaining space and CRLF
-      baseURL = baseURL.trim();
-      relativeURL = relativeURL.trim();
-      if (!relativeURL) {
-        // 2a) If the embedded URL is entirely empty, it inherits the
-        // entire base URL (i.e., is set equal to the base URL)
-        // and we are done.
-        if (!opts.alwaysNormalize) {
-          return baseURL;
-        }
-        var basePartsForNormalise = URLToolkit.parseURL(baseURL);
-        if (!basePartsForNormalise) {
-          throw new Error('Error trying to parse base URL.');
-        }
-        basePartsForNormalise.path = URLToolkit.normalizePath(
-          basePartsForNormalise.path
-        );
-        return URLToolkit.buildURLFromParts(basePartsForNormalise);
-      }
-      var relativeParts = URLToolkit.parseURL(relativeURL);
-      if (!relativeParts) {
-        throw new Error('Error trying to parse relative URL.');
-      }
-      if (relativeParts.scheme) {
-        // 2b) If the embedded URL starts with a scheme name, it is
-        // interpreted as an absolute URL and we are done.
-        if (!opts.alwaysNormalize) {
-          return relativeURL;
-        }
-        relativeParts.path = URLToolkit.normalizePath(relativeParts.path);
-        return URLToolkit.buildURLFromParts(relativeParts);
-      }
-      var baseParts = URLToolkit.parseURL(baseURL);
-      if (!baseParts) {
-        throw new Error('Error trying to parse base URL.');
-      }
-      if (!baseParts.netLoc && baseParts.path && baseParts.path[0] !== '/') {
-        // If netLoc missing and path doesn't start with '/', assume everthing before the first '/' is the netLoc
-        // This causes 'example.com/a' to be handled as '//example.com/a' instead of '/example.com/a'
-        var pathParts = FIRST_SEGMENT_REGEX.exec(baseParts.path);
-        baseParts.netLoc = pathParts[1];
-        baseParts.path = pathParts[2];
-      }
-      if (baseParts.netLoc && !baseParts.path) {
-        baseParts.path = '/';
-      }
-      var builtParts = {
-        // 2c) Otherwise, the embedded URL inherits the scheme of
-        // the base URL.
-        scheme: baseParts.scheme,
-        netLoc: relativeParts.netLoc,
-        path: null,
-        params: relativeParts.params,
-        query: relativeParts.query,
-        fragment: relativeParts.fragment,
-      };
-      if (!relativeParts.netLoc) {
-        // 3) If the embedded URL's <net_loc> is non-empty, we skip to
-        // Step 7.  Otherwise, the embedded URL inherits the <net_loc>
-        // (if any) of the base URL.
-        builtParts.netLoc = baseParts.netLoc;
-        // 4) If the embedded URL path is preceded by a slash "/", the
-        // path is not relative and we skip to Step 7.
-        if (relativeParts.path[0] !== '/') {
-          if (!relativeParts.path) {
-            // 5) If the embedded URL path is empty (and not preceded by a
-            // slash), then the embedded URL inherits the base URL path
-            builtParts.path = baseParts.path;
-            // 5a) if the embedded URL's <params> is non-empty, we skip to
-            // step 7; otherwise, it inherits the <params> of the base
-            // URL (if any) and
-            if (!relativeParts.params) {
-              builtParts.params = baseParts.params;
-              // 5b) if the embedded URL's <query> is non-empty, we skip to
-              // step 7; otherwise, it inherits the <query> of the base
-              // URL (if any) and we skip to step 7.
-              if (!relativeParts.query) {
-                builtParts.query = baseParts.query;
-              }
-            }
-          } else {
-            // 6) The last segment of the base URL's path (anything
-            // following the rightmost slash "/", or the entire path if no
-            // slash is present) is removed and the embedded URL's path is
-            // appended in its place.
-            var baseURLPath = baseParts.path;
-            var newPath =
-              baseURLPath.substring(0, baseURLPath.lastIndexOf('/') + 1) +
-              relativeParts.path;
-            builtParts.path = URLToolkit.normalizePath(newPath);
-          }
-        }
-      }
-      if (builtParts.path === null) {
-        builtParts.path = opts.alwaysNormalize
-          ? URLToolkit.normalizePath(relativeParts.path)
-          : relativeParts.path;
-      }
-      return URLToolkit.buildURLFromParts(builtParts);
-    },
-    parseURL: function (url) {
-      var parts = URL_REGEX.exec(url);
-      if (!parts) {
-        return null;
-      }
-      return {
-        scheme: parts[1] || '',
-        netLoc: parts[2] || '',
-        path: parts[3] || '',
-        params: parts[4] || '',
-        query: parts[5] || '',
-        fragment: parts[6] || '',
-      };
-    },
-    normalizePath: function (path) {
-      // The following operations are
-      // then applied, in order, to the new path:
-      // 6a) All occurrences of "./", where "." is a complete path
-      // segment, are removed.
-      // 6b) If the path ends with "." as a complete path segment,
-      // that "." is removed.
-      path = path.split('').reverse().join('').replace(SLASH_DOT_REGEX, '');
-      // 6c) All occurrences of "<segment>/../", where <segment> is a
-      // complete path segment not equal to "..", are removed.
-      // Removal of these path segments is performed iteratively,
-      // removing the leftmost matching pattern on each iteration,
-      // until no matching pattern remains.
-      // 6d) If the path ends with "<segment>/..", where <segment> is a
-      // complete path segment not equal to "..", that
-      // "<segment>/.." is removed.
-      while (
-        path.length !== (path = path.replace(SLASH_DOT_DOT_REGEX, '')).length
-      ) {}
-      return path.split('').reverse().join('');
-    },
-    buildURLFromParts: function (parts) {
-      return (
-        parts.scheme +
-        parts.netLoc +
-        parts.path +
-        parts.params +
-        parts.query +
-        parts.fragment
-      );
-    },
-  };
-
-  if (true)
-    module.exports = URLToolkit;
-  else {}
-})(this);
-
-
-/***/ }),
-
-/***/ "./node_modules/webworkify-webpack/index.js":
-/*!**************************************************!*\
-  !*** ./node_modules/webworkify-webpack/index.js ***!
-  \**************************************************/
-/*! no static exports found */
-/*! ModuleConcatenation bailout: Module is not an ECMAScript module */
-/***/ (function(module, exports, __webpack_require__) {
-
-function webpackBootstrapFunc (modules) {
-/******/  // The module cache
-/******/  var installedModules = {};
-
-/******/  // The require function
-/******/  function __webpack_require__(moduleId) {
-
-/******/    // Check if module is in cache
-/******/    if(installedModules[moduleId])
-/******/      return installedModules[moduleId].exports;
-
-/******/    // Create a new module (and put it into the cache)
-/******/    var module = installedModules[moduleId] = {
-/******/      i: moduleId,
-/******/      l: false,
-/******/      exports: {}
-/******/    };
-
-/******/    // Execute the module function
-/******/    modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/    // Flag the module as loaded
-/******/    module.l = true;
-
-/******/    // Return the exports of the module
-/******/    return module.exports;
-/******/  }
-
-/******/  // expose the modules object (__webpack_modules__)
-/******/  __webpack_require__.m = modules;
-
-/******/  // expose the module cache
-/******/  __webpack_require__.c = installedModules;
-
-/******/  // identity function for calling harmony imports with the correct context
-/******/  __webpack_require__.i = function(value) { return value; };
-
-/******/  // define getter function for harmony exports
-/******/  __webpack_require__.d = function(exports, name, getter) {
-/******/    if(!__webpack_require__.o(exports, name)) {
-/******/      Object.defineProperty(exports, name, {
-/******/        configurable: false,
-/******/        enumerable: true,
-/******/        get: getter
-/******/      });
-/******/    }
-/******/  };
-
-/******/  // define __esModule on exports
-/******/  __webpack_require__.r = function(exports) {
-/******/    Object.defineProperty(exports, '__esModule', { value: true });
-/******/  };
-
-/******/  // getDefaultExport function for compatibility with non-harmony modules
-/******/  __webpack_require__.n = function(module) {
-/******/    var getter = module && module.__esModule ?
-/******/      function getDefault() { return module['default']; } :
-/******/      function getModuleExports() { return module; };
-/******/    __webpack_require__.d(getter, 'a', getter);
-/******/    return getter;
-/******/  };
-
-/******/  // Object.prototype.hasOwnProperty.call
-/******/  __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
-
-/******/  // __webpack_public_path__
-/******/  __webpack_require__.p = "/";
-
-/******/  // on error function for async loading
-/******/  __webpack_require__.oe = function(err) { console.error(err); throw err; };
-
-  var f = __webpack_require__(__webpack_require__.s = ENTRY_MODULE)
-  return f.default || f // try to call default if defined to also support babel esmodule exports
-}
-
-var moduleNameReqExp = '[\\.|\\-|\\+|\\w|\/|@]+'
-var dependencyRegExp = '\\(\\s*(\/\\*.*?\\*\/)?\\s*.*?(' + moduleNameReqExp + ').*?\\)' // additional chars when output.pathinfo is true
-
-// http://stackoverflow.com/a/2593661/130442
-function quoteRegExp (str) {
-  return (str + '').replace(/[.?*+^$[\]\\(){}|-]/g, '\\$&')
-}
-
-function isNumeric(n) {
-  return !isNaN(1 * n); // 1 * n converts integers, integers as string ("123"), 1e3 and "1e3" to integers and strings to NaN
-}
-
-function getModuleDependencies (sources, module, queueName) {
-  var retval = {}
-  retval[queueName] = []
-
-  var fnString = module.toString()
-  var wrapperSignature = fnString.match(/^function\s?\w*\(\w+,\s*\w+,\s*(\w+)\)/)
-  if (!wrapperSignature) return retval
-  var webpackRequireName = wrapperSignature[1]
-
-  // main bundle deps
-  var re = new RegExp('(\\\\n|\\W)' + quoteRegExp(webpackRequireName) + dependencyRegExp, 'g')
-  var match
-  while ((match = re.exec(fnString))) {
-    if (match[3] === 'dll-reference') continue
-    retval[queueName].push(match[3])
-  }
-
-  // dll deps
-  re = new RegExp('\\(' + quoteRegExp(webpackRequireName) + '\\("(dll-reference\\s(' + moduleNameReqExp + '))"\\)\\)' + dependencyRegExp, 'g')
-  while ((match = re.exec(fnString))) {
-    if (!sources[match[2]]) {
-      retval[queueName].push(match[1])
-      sources[match[2]] = __webpack_require__(match[1]).m
-    }
-    retval[match[2]] = retval[match[2]] || []
-    retval[match[2]].push(match[4])
-  }
-
-  // convert 1e3 back to 1000 - this can be important after uglify-js converted 1000 to 1e3
-  var keys = Object.keys(retval);
-  for (var i = 0; i < keys.length; i++) {
-    for (var j = 0; j < retval[keys[i]].length; j++) {
-      if (isNumeric(retval[keys[i]][j])) {
-        retval[keys[i]][j] = 1 * retval[keys[i]][j];
-      }
-    }
-  }
-
-  return retval
-}
-
-function hasValuesInQueues (queues) {
-  var keys = Object.keys(queues)
-  return keys.reduce(function (hasValues, key) {
-    return hasValues || queues[key].length > 0
-  }, false)
-}
-
-function getRequiredModules (sources, moduleId) {
-  var modulesQueue = {
-    main: [moduleId]
-  }
-  var requiredModules = {
-    main: []
-  }
-  var seenModules = {
-    main: {}
-  }
-
-  while (hasValuesInQueues(modulesQueue)) {
-    var queues = Object.keys(modulesQueue)
-    for (var i = 0; i < queues.length; i++) {
-      var queueName = queues[i]
-      var queue = modulesQueue[queueName]
-      var moduleToCheck = queue.pop()
-      seenModules[queueName] = seenModules[queueName] || {}
-      if (seenModules[queueName][moduleToCheck] || !sources[queueName][moduleToCheck]) continue
-      seenModules[queueName][moduleToCheck] = true
-      requiredModules[queueName] = requiredModules[queueName] || []
-      requiredModules[queueName].push(moduleToCheck)
-      var newModules = getModuleDependencies(sources, sources[queueName][moduleToCheck], queueName)
-      var newModulesKeys = Object.keys(newModules)
-      for (var j = 0; j < newModulesKeys.length; j++) {
-        modulesQueue[newModulesKeys[j]] = modulesQueue[newModulesKeys[j]] || []
-        modulesQueue[newModulesKeys[j]] = modulesQueue[newModulesKeys[j]].concat(newModules[newModulesKeys[j]])
-      }
-    }
-  }
-
-  return requiredModules
-}
-
-module.exports = function (moduleId, options) {
-  options = options || {}
-  var sources = {
-    main: __webpack_require__.m
-  }
-
-  var requiredModules = options.all ? { main: Object.keys(sources.main) } : getRequiredModules(sources, moduleId)
-
-  var src = ''
-
-  Object.keys(requiredModules).filter(function (m) { return m !== 'main' }).forEach(function (module) {
-    var entryModule = 0
-    while (requiredModules[module][entryModule]) {
-      entryModule++
-    }
-    requiredModules[module].push(entryModule)
-    sources[module][entryModule] = '(function(module, exports, __webpack_require__) { module.exports = __webpack_require__; })'
-    src = src + 'var ' + module + ' = (' + webpackBootstrapFunc.toString().replace('ENTRY_MODULE', JSON.stringify(entryModule)) + ')({' + requiredModules[module].map(function (id) { return '' + JSON.stringify(id) + ': ' + sources[module][id].toString() }).join(',') + '});\n'
-  })
-
-  src = src + 'new ((' + webpackBootstrapFunc.toString().replace('ENTRY_MODULE', JSON.stringify(moduleId)) + ')({' + requiredModules.main.map(function (id) { return '' + JSON.stringify(id) + ': ' + sources.main[id].toString() }).join(',') + '}))(self);'
-
-  var blob = new window.Blob([src], { type: 'text/javascript' })
-  if (options.bare) { return blob }
-
-  var URL = window.URL || window.webkitURL || window.mozURL || window.msURL
-
-  var workerUrl = URL.createObjectURL(blob)
-  var worker = new window.Worker(workerUrl)
-  worker.objectURL = workerUrl
-
-  return worker
-}
-
-
-/***/ }),
-
-/***/ "./src/crypt/decrypter.js":
-/*!********************************************!*\
-  !*** ./src/crypt/decrypter.js + 3 modules ***!
-  \********************************************/
-/*! exports provided: default */
-/*! ModuleConcatenation bailout: Cannot concat with ./src/errors.ts because of ./src/hls.ts */
-/*! ModuleConcatenation bailout: Cannot concat with ./src/events.js because of ./src/hls.ts */
-/*! ModuleConcatenation bailout: Cannot concat with ./src/utils/get-self-scope.js because of ./src/hls.ts */
-/*! ModuleConcatenation bailout: Cannot concat with ./src/utils/logger.js because of ./src/hls.ts */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-// ESM COMPAT FLAG
-__webpack_require__.r(__webpack_exports__);
-
-// CONCATENATED MODULE: ./src/crypt/aes-crypto.js
-var AESCrypto = /*#__PURE__*/function () {
-  function AESCrypto(subtle, iv) {
-    this.subtle = subtle;
-    this.aesIV = iv;
-  }
-
-  var _proto = AESCrypto.prototype;
-
-  _proto.decrypt = function decrypt(data, key) {
-    return this.subtle.decrypt({
-      name: 'AES-CBC',
-      iv: this.aesIV
-    }, key, data);
-  };
-
-  return AESCrypto;
-}();
-
-
-// CONCATENATED MODULE: ./src/crypt/fast-aes-key.js
-var FastAESKey = /*#__PURE__*/function () {
-  function FastAESKey(subtle, key) {
-    this.subtle = subtle;
-    this.key = key;
-  }
-
-  var _proto = FastAESKey.prototype;
-
-  _proto.expandKey = function expandKey() {
-    return this.subtle.importKey('raw', this.key, {
-      name: 'AES-CBC'
-    }, false, ['encrypt', 'decrypt']);
-  };
-
-  return FastAESKey;
-}();
-
-/* harmony default export */ var fast_aes_key = (FastAESKey);
-// CONCATENATED MODULE: ./src/crypt/aes-decryptor.js
-// PKCS7
-function removePadding(buffer) {
-  var outputBytes = buffer.byteLength;
-  var paddingBytes = outputBytes && new DataView(buffer).getUint8(outputBytes - 1);
-
-  if (paddingBytes) {
-    return buffer.slice(0, outputBytes - paddingBytes);
-  } else {
-    return buffer;
-  }
-}
-
-var AESDecryptor = /*#__PURE__*/function () {
-  function AESDecryptor() {
-    // Static after running initTable
-    this.rcon = [0x0, 0x1, 0x2, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];
-    this.subMix = [new Uint32Array(256), new Uint32Array(256), new Uint32Array(256), new Uint32Array(256)];
-    this.invSubMix = [new Uint32Array(256), new Uint32Array(256), new Uint32Array(256), new Uint32Array(256)];
-    this.sBox = new Uint32Array(256);
-    this.invSBox = new Uint32Array(256); // Changes during runtime
-
-    this.key = new Uint32Array(0);
-    this.initTable();
-  } // Using view.getUint32() also swaps the byte order.
-
-
-  var _proto = AESDecryptor.prototype;
-
-  _proto.uint8ArrayToUint32Array_ = function uint8ArrayToUint32Array_(arrayBuffer) {
-    var view = new DataView(arrayBuffer);
-    var newArray = new Uint32Array(4);
-
-    for (var i = 0; i < 4; i++) {
-      newArray[i] = view.getUint32(i * 4);
-    }
-
-    return newArray;
-  };
-
-  _proto.initTable = function initTable() {
-    var sBox = this.sBox;
-    var invSBox = this.invSBox;
-    var subMix = this.subMix;
-    var subMix0 = subMix[0];
-    var subMix1 = subMix[1];
-    var subMix2 = subMix[2];
-    var subMix3 = subMix[3];
-    var invSubMix = this.invSubMix;
-    var invSubMix0 = invSubMix[0];
-    var invSubMix1 = invSubMix[1];
-    var invSubMix2 = invSubMix[2];
-    var invSubMix3 = invSubMix[3];
-    var d = new Uint32Array(256);
-    var x = 0;
-    var xi = 0;
-    var i = 0;
-
-    for (i = 0; i < 256; i++) {
-      if (i < 128) {
-        d[i] = i << 1;
-      } else {
-        d[i] = i << 1 ^ 0x11b;
-      }
-    }
-
-    for (i = 0; i < 256; i++) {
-      var sx = xi ^ xi << 1 ^ xi << 2 ^ xi << 3 ^ xi << 4;
-      sx = sx >>> 8 ^ sx & 0xff ^ 0x63;
-      sBox[x] = sx;
-      invSBox[sx] = x; // Compute multiplication
-
-      var x2 = d[x];
-      var x4 = d[x2];
-      var x8 = d[x4]; // Compute sub/invSub bytes, mix columns tables
-
-      var t = d[sx] * 0x101 ^ sx * 0x1010100;
-      subMix0[x] = t << 24 | t >>> 8;
-      subMix1[x] = t << 16 | t >>> 16;
-      subMix2[x] = t << 8 | t >>> 24;
-      subMix3[x] = t; // Compute inv sub bytes, inv mix columns tables
-
-      t = x8 * 0x1010101 ^ x4 * 0x10001 ^ x2 * 0x101 ^ x * 0x1010100;
-      invSubMix0[sx] = t << 24 | t >>> 8;
-      invSubMix1[sx] = t << 16 | t >>> 16;
-      invSubMix2[sx] = t << 8 | t >>> 24;
-      invSubMix3[sx] = t; // Compute next counter
-
-      if (!x) {
-        x = xi = 1;
-      } else {
-        x = x2 ^ d[d[d[x8 ^ x2]]];
-        xi ^= d[d[xi]];
-      }
-    }
-  };
-
-  _proto.expandKey = function expandKey(keyBuffer) {
-    // convert keyBuffer to Uint32Array
-    var key = this.uint8ArrayToUint32Array_(keyBuffer);
-    var sameKey = true;
-    var offset = 0;
-
-    while (offset < key.length && sameKey) {
-      sameKey = key[offset] === this.key[offset];
-      offset++;
-    }
-
-    if (sameKey) {
-      return;
-    }
-
-    this.key = key;
-    var keySize = this.keySize = key.length;
-
-    if (keySize !== 4 && keySize !== 6 && keySize !== 8) {
-      throw new Error('Invalid aes key size=' + keySize);
-    }
-
-    var ksRows = this.ksRows = (keySize + 6 + 1) * 4;
-    var ksRow;
-    var invKsRow;
-    var keySchedule = this.keySchedule = new Uint32Array(ksRows);
-    var invKeySchedule = this.invKeySchedule = new Uint32Array(ksRows);
-    var sbox = this.sBox;
-    var rcon = this.rcon;
-    var invSubMix = this.invSubMix;
-    var invSubMix0 = invSubMix[0];
-    var invSubMix1 = invSubMix[1];
-    var invSubMix2 = invSubMix[2];
-    var invSubMix3 = invSubMix[3];
-    var prev;
-    var t;
-
-    for (ksRow = 0; ksRow < ksRows; ksRow++) {
-      if (ksRow < keySize) {
-        prev = keySchedule[ksRow] = key[ksRow];
-        continue;
-      }
-
-      t = prev;
-
-      if (ksRow % keySize === 0) {
-        // Rot word
-        t = t << 8 | t >>> 24; // Sub word
-
-        t = sbox[t >>> 24] << 24 | sbox[t >>> 16 & 0xff] << 16 | sbox[t >>> 8 & 0xff] << 8 | sbox[t & 0xff]; // Mix Rcon
-
-        t ^= rcon[ksRow / keySize | 0] << 24;
-      } else if (keySize > 6 && ksRow % keySize === 4) {
-        // Sub word
-        t = sbox[t >>> 24] << 24 | sbox[t >>> 16 & 0xff] << 16 | sbox[t >>> 8 & 0xff] << 8 | sbox[t & 0xff];
-      }
-
-      keySchedule[ksRow] = prev = (keySchedule[ksRow - keySize] ^ t) >>> 0;
-    }
-
-    for (invKsRow = 0; invKsRow < ksRows; invKsRow++) {
-      ksRow = ksRows - invKsRow;
-
-      if (invKsRow & 3) {
-        t = keySchedule[ksRow];
-      } else {
-        t = keySchedule[ksRow - 4];
-      }
-
-      if (invKsRow < 4 || ksRow <= 4) {
-        invKeySchedule[invKsRow] = t;
-      } else {
-        invKeySchedule[invKsRow] = invSubMix0[sbox[t >>> 24]] ^ invSubMix1[sbox[t >>> 16 & 0xff]] ^ invSubMix2[sbox[t >>> 8 & 0xff]] ^ invSubMix3[sbox[t & 0xff]];
-      }
-
-      invKeySchedule[invKsRow] = invKeySchedule[invKsRow] >>> 0;
-    }
-  } // Adding this as a method greatly improves performance.
-  ;
-
-  _proto.networkToHostOrderSwap = function networkToHostOrderSwap(word) {
-    return word << 24 | (word & 0xff00) << 8 | (word & 0xff0000) >> 8 | word >>> 24;
-  };
-
-  _proto.decrypt = function decrypt(inputArrayBuffer, offset, aesIV, removePKCS7Padding) {
-    var nRounds = this.keySize + 6;
-    var invKeySchedule = this.invKeySchedule;
-    var invSBOX = this.invSBox;
-    var invSubMix = this.invSubMix;
-    var invSubMix0 = invSubMix[0];
-    var invSubMix1 = invSubMix[1];
-    var invSubMix2 = invSubMix[2];
-    var invSubMix3 = invSubMix[3];
-    var initVector = this.uint8ArrayToUint32Array_(aesIV);
-    var initVector0 = initVector[0];
-    var initVector1 = initVector[1];
-    var initVector2 = initVector[2];
-    var initVector3 = initVector[3];
-    var inputInt32 = new Int32Array(inputArrayBuffer);
-    var outputInt32 = new Int32Array(inputInt32.length);
-    var t0, t1, t2, t3;
-    var s0, s1, s2, s3;
-    var inputWords0, inputWords1, inputWords2, inputWords3;
-    var ksRow, i;
-    var swapWord = this.networkToHostOrderSwap;
-
-    while (offset < inputInt32.length) {
-      inputWords0 = swapWord(inputInt32[offset]);
-      inputWords1 = swapWord(inputInt32[offset + 1]);
-      inputWords2 = swapWord(inputInt32[offset + 2]);
-      inputWords3 = swapWord(inputInt32[offset + 3]);
-      s0 = inputWords0 ^ invKeySchedule[0];
-      s1 = inputWords3 ^ invKeySchedule[1];
-      s2 = inputWords2 ^ invKeySchedule[2];
-      s3 = inputWords1 ^ invKeySchedule[3];
-      ksRow = 4; // Iterate through the rounds of decryption
-
-      for (i = 1; i < nRounds; i++) {
-        t0 = invSubMix0[s0 >>> 24] ^ invSubMix1[s1 >> 16 & 0xff] ^ invSubMix2[s2 >> 8 & 0xff] ^ invSubMix3[s3 & 0xff] ^ invKeySchedule[ksRow];
-        t1 = invSubMix0[s1 >>> 24] ^ invSubMix1[s2 >> 16 & 0xff] ^ invSubMix2[s3 >> 8 & 0xff] ^ invSubMix3[s0 & 0xff] ^ invKeySchedule[ksRow + 1];
-        t2 = invSubMix0[s2 >>> 24] ^ invSubMix1[s3 >> 16 & 0xff] ^ invSubMix2[s0 >> 8 & 0xff] ^ invSubMix3[s1 & 0xff] ^ invKeySchedule[ksRow + 2];
-        t3 = invSubMix0[s3 >>> 24] ^ invSubMix1[s0 >> 16 & 0xff] ^ invSubMix2[s1 >> 8 & 0xff] ^ invSubMix3[s2 & 0xff] ^ invKeySchedule[ksRow + 3]; // Update state
-
-        s0 = t0;
-        s1 = t1;
-        s2 = t2;
-        s3 = t3;
-        ksRow = ksRow + 4;
-      } // Shift rows, sub bytes, add round key
-
-
-      t0 = invSBOX[s0 >>> 24] << 24 ^ invSBOX[s1 >> 16 & 0xff] << 16 ^ invSBOX[s2 >> 8 & 0xff] << 8 ^ invSBOX[s3 & 0xff] ^ invKeySchedule[ksRow];
-      t1 = invSBOX[s1 >>> 24] << 24 ^ invSBOX[s2 >> 16 & 0xff] << 16 ^ invSBOX[s3 >> 8 & 0xff] << 8 ^ invSBOX[s0 & 0xff] ^ invKeySchedule[ksRow + 1];
-      t2 = invSBOX[s2 >>> 24] << 24 ^ invSBOX[s3 >> 16 & 0xff] << 16 ^ invSBOX[s0 >> 8 & 0xff] << 8 ^ invSBOX[s1 & 0xff] ^ invKeySchedule[ksRow + 2];
-      t3 = invSBOX[s3 >>> 24] << 24 ^ invSBOX[s0 >> 16 & 0xff] << 16 ^ invSBOX[s1 >> 8 & 0xff] << 8 ^ invSBOX[s2 & 0xff] ^ invKeySchedule[ksRow + 3];
-      ksRow = ksRow + 3; // Write
-
-      outputInt32[offset] = swapWord(t0 ^ initVector0);
-      outputInt32[offset + 1] = swapWord(t3 ^ initVector1);
-      outputInt32[offset + 2] = swapWord(t2 ^ initVector2);
-      outputInt32[offset + 3] = swapWord(t1 ^ initVector3); // reset initVector to last 4 unsigned int
-
-      initVector0 = inputWords0;
-      initVector1 = inputWords1;
-      initVector2 = inputWords2;
-      initVector3 = inputWords3;
-      offset = offset + 4;
-    }
-
-    return removePKCS7Padding ? removePadding(outputInt32.buffer) : outputInt32.buffer;
-  };
-
-  _proto.destroy = function destroy() {
-    this.key = undefined;
-    this.keySize = undefined;
-    this.ksRows = undefined;
-    this.sBox = undefined;
-    this.invSBox = undefined;
-    this.subMix = undefined;
-    this.invSubMix = undefined;
-    this.keySchedule = undefined;
-    this.invKeySchedule = undefined;
-    this.rcon = undefined;
-  };
-
-  return AESDecryptor;
-}();
-
-/* harmony default export */ var aes_decryptor = (AESDecryptor);
-// EXTERNAL MODULE: ./src/errors.ts
-var errors = __webpack_require__("./src/errors.ts");
-
-// EXTERNAL MODULE: ./src/utils/logger.js
-var logger = __webpack_require__("./src/utils/logger.js");
-
-// EXTERNAL MODULE: ./src/events.js
-var events = __webpack_require__("./src/events.js");
-
-// EXTERNAL MODULE: ./src/utils/get-self-scope.js
-var get_self_scope = __webpack_require__("./src/utils/get-self-scope.js");
-
-// CONCATENATED MODULE: ./src/crypt/decrypter.js
-
-
-
-
-
-
- // see https://stackoverflow.com/a/11237259/589493
-
-var global = Object(get_self_scope["getSelfScope"])(); // safeguard for code that might run both on worker and main thread
-
-var decrypter_Decrypter = /*#__PURE__*/function () {
-  function Decrypter(observer, config, _temp) {
-    var _ref = _temp === void 0 ? {} : _temp,
-        _ref$removePKCS7Paddi = _ref.removePKCS7Padding,
-        removePKCS7Padding = _ref$removePKCS7Paddi === void 0 ? true : _ref$removePKCS7Paddi;
-
-    this.logEnabled = true;
-    this.observer = observer;
-    this.config = config;
-    this.removePKCS7Padding = removePKCS7Padding; // built in decryptor expects PKCS7 padding
-
-    if (removePKCS7Padding) {
-      try {
-        var browserCrypto = global.crypto;
-
-        if (browserCrypto) {
-          this.subtle = browserCrypto.subtle || browserCrypto.webkitSubtle;
-        }
-      } catch (e) {}
-    }
-
-    this.disableWebCrypto = !this.subtle;
-  }
-
-  var _proto = Decrypter.prototype;
-
-  _proto.isSync = function isSync() {
-    return this.disableWebCrypto && this.config.enableSoftwareAES;
-  };
-
-  _proto.decrypt = function decrypt(data, key, iv, callback) {
-    var _this = this;
-
-    if (this.disableWebCrypto && this.config.enableSoftwareAES) {
-      if (this.logEnabled) {
-        logger["logger"].log('JS AES decrypt');
-        this.logEnabled = false;
-      }
-
-      var decryptor = this.decryptor;
-
-      if (!decryptor) {
-        this.decryptor = decryptor = new aes_decryptor();
-      }
-
-      decryptor.expandKey(key);
-      callback(decryptor.decrypt(data, 0, iv, this.removePKCS7Padding));
-    } else {
-      if (this.logEnabled) {
-        logger["logger"].log('WebCrypto AES decrypt');
-        this.logEnabled = false;
-      }
-
-      var subtle = this.subtle;
-
-      if (this.key !== key) {
-        this.key = key;
-        this.fastAesKey = new fast_aes_key(subtle, key);
-      }
-
-      this.fastAesKey.expandKey().then(function (aesKey) {
-        // decrypt using web crypto
-        var crypto = new AESCrypto(subtle, iv);
-        crypto.decrypt(data, aesKey).catch(function (err) {
-          _this.onWebCryptoError(err, data, key, iv, callback);
-        }).then(function (result) {
-          callback(result);
-        });
-      }).catch(function (err) {
-        _this.onWebCryptoError(err, data, key, iv, callback);
-      });
-    }
-  };
-
-  _proto.onWebCryptoError = function onWebCryptoError(err, data, key, iv, callback) {
-    if (this.config.enableSoftwareAES) {
-      logger["logger"].log('WebCrypto Error, disable WebCrypto API');
-      this.disableWebCrypto = true;
-      this.logEnabled = true;
-      this.decrypt(data, key, iv, callback);
-    } else {
-      logger["logger"].error("decrypting error : " + err.message);
-      this.observer.trigger(events["default"].ERROR, {
-        type: errors["ErrorTypes"].MEDIA_ERROR,
-        details: errors["ErrorDetails"].FRAG_DECRYPT_ERROR,
-        fatal: true,
-        reason: err.message
-      });
-    }
-  };
-
-  _proto.destroy = function destroy() {
-    var decryptor = this.decryptor;
-
-    if (decryptor) {
-      decryptor.destroy();
-      this.decryptor = undefined;
-    }
-  };
-
-  return Decrypter;
-}();
-
-/* harmony default export */ var decrypter = __webpack_exports__["default"] = (decrypter_Decrypter);
-
-/***/ }),
-
-/***/ "./src/demux/demuxer-inline.js":
-/*!**************************************************!*\
-  !*** ./src/demux/demuxer-inline.js + 11 modules ***!
-  \**************************************************/
-/*! exports provided: default */
-/*! ModuleConcatenation bailout: Cannot concat with ./src/crypt/decrypter.js because of ./src/hls.ts */
-/*! ModuleConcatenation bailout: Cannot concat with ./src/demux/id3.js because of ./src/hls.ts */
-/*! ModuleConcatenation bailout: Cannot concat with ./src/demux/mp4demuxer.js because of ./src/hls.ts */
-/*! ModuleConcatenation bailout: Cannot concat with ./src/errors.ts because of ./src/hls.ts */
-/*! ModuleConcatenation bailout: Cannot concat with ./src/events.js because of ./src/hls.ts */
-/*! ModuleConcatenation bailout: Cannot concat with ./src/polyfills/number.js because of ./src/hls.ts */
-/*! ModuleConcatenation bailout: Cannot concat with ./src/utils/get-self-scope.js because of ./src/hls.ts */
-/*! ModuleConcatenation bailout: Cannot concat with ./src/utils/logger.js because of ./src/hls.ts */
-/*! ModuleConcatenation bailout: Cannot concat with ./src/utils/timescale-conversion.ts because of ./src/hls.ts */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-// ESM COMPAT FLAG
-__webpack_require__.r(__webpack_exports__);
-
-// EXTERNAL MODULE: ./src/events.js
-var events = __webpack_require__("./src/events.js");
-
-// EXTERNAL MODULE: ./src/errors.ts
-var errors = __webpack_require__("./src/errors.ts");
-
-// EXTERNAL MODULE: ./src/crypt/decrypter.js + 3 modules
-var crypt_decrypter = __webpack_require__("./src/crypt/decrypter.js");
-
-// EXTERNAL MODULE: ./src/polyfills/number.js
-var number = __webpack_require__("./src/polyfills/number.js");
-
-// EXTERNAL MODULE: ./src/utils/logger.js
-var logger = __webpack_require__("./src/utils/logger.js");
-
-// EXTERNAL MODULE: ./src/utils/get-self-scope.js
-var get_self_scope = __webpack_require__("./src/utils/get-self-scope.js");
-
-// CONCATENATED MODULE: ./src/demux/adts.js
-/**
- * ADTS parser helper
- * @link https://wiki.multimedia.cx/index.php?title=ADTS
- */
-
-
-
-
-function getAudioConfig(observer, data, offset, audioCodec) {
-  var adtsObjectType,
-      // :int
-  adtsSampleingIndex,
-      // :int
-  adtsExtensionSampleingIndex,
-      // :int
-  adtsChanelConfig,
-      // :int
-  config,
-      userAgent = navigator.userAgent.toLowerCase(),
-      manifestCodec = audioCodec,
-      adtsSampleingRates = [96000, 88200, 64000, 48000, 44100, 32000, 24000, 22050, 16000, 12000, 11025, 8000, 7350]; // byte 2
-
-  adtsObjectType = ((data[offset + 2] & 0xC0) >>> 6) + 1;
-  adtsSampleingIndex = (data[offset + 2] & 0x3C) >>> 2;
-
-  if (adtsSampleingIndex > adtsSampleingRates.length - 1) {
-    observer.trigger(events["default"].ERROR, {
-      type: errors["ErrorTypes"].MEDIA_ERROR,
-      details: errors["ErrorDetails"].FRAG_PARSING_ERROR,
-      fatal: true,
-      reason: "invalid ADTS sampling index:" + adtsSampleingIndex
-    });
-    return;
-  }
-
-  adtsChanelConfig = (data[offset + 2] & 0x01) << 2; // byte 3
-
-  adtsChanelConfig |= (data[offset + 3] & 0xC0) >>> 6;
-  logger["logger"].log("manifest codec:" + audioCodec + ",ADTS data:type:" + adtsObjectType + ",sampleingIndex:" + adtsSampleingIndex + "[" + adtsSampleingRates[adtsSampleingIndex] + "Hz],channelConfig:" + adtsChanelConfig); // firefox: freq less than 24kHz = AAC SBR (HE-AAC)
-
-  if (/firefox/i.test(userAgent)) {
-    if (adtsSampleingIndex >= 6) {
-      adtsObjectType = 5;
-      config = new Array(4); // HE-AAC uses SBR (Spectral Band Replication) , high frequencies are constructed from low frequencies
-      // there is a factor 2 between frame sample rate and output sample rate
-      // multiply frequency by 2 (see table below, equivalent to substract 3)
-
-      adtsExtensionSampleingIndex = adtsSampleingIndex - 3;
-    } else {
-      adtsObjectType = 2;
-      config = new Array(2);
-      adtsExtensionSampleingIndex = adtsSampleingIndex;
-    } // Android : always use AAC
-
-  } else if (userAgent.indexOf('android') !== -1) {
-    adtsObjectType = 2;
-    config = new Array(2);
-    adtsExtensionSampleingIndex = adtsSampleingIndex;
-  } else {
-    /*  for other browsers (Chrome/Vivaldi/Opera ...)
-        always force audio type to be HE-AAC SBR, as some browsers do not support audio codec switch properly (like Chrome ...)
-    */
-    adtsObjectType = 5;
-    config = new Array(4); // if (manifest codec is HE-AAC or HE-AACv2) OR (manifest codec not specified AND frequency less than 24kHz)
-
-    if (audioCodec && (audioCodec.indexOf('mp4a.40.29') !== -1 || audioCodec.indexOf('mp4a.40.5') !== -1) || !audioCodec && adtsSampleingIndex >= 6) {
-      // HE-AAC uses SBR (Spectral Band Replication) , high frequencies are constructed from low frequencies
-      // there is a factor 2 between frame sample rate and output sample rate
-      // multiply frequency by 2 (see table below, equivalent to substract 3)
-      adtsExtensionSampleingIndex = adtsSampleingIndex - 3;
-    } else {
-      // if (manifest codec is AAC) AND (frequency less than 24kHz AND nb channel is 1) OR (manifest codec not specified and mono audio)
-      // Chrome fails to play back with low frequency AAC LC mono when initialized with HE-AAC.  This is not a problem with stereo.
-      if (audioCodec && audioCodec.indexOf('mp4a.40.2') !== -1 && (adtsSampleingIndex >= 6 && adtsChanelConfig === 1 || /vivaldi/i.test(userAgent)) || !audioCodec && adtsChanelConfig === 1) {
-        adtsObjectType = 2;
-        config = new Array(2);
-      }
-
-      adtsExtensionSampleingIndex = adtsSampleingIndex;
-    }
-  }
-  /* refer to http://wiki.multimedia.cx/index.php?title=MPEG-4_Audio#Audio_Specific_Config
-      ISO 14496-3 (AAC).pdf - Table 1.13 — Syntax of AudioSpecificConfig()
-    Audio Profile / Audio Object Type
-    0: Null
-    1: AAC Main
-    2: AAC LC (Low Complexity)
-    3: AAC SSR (Scalable Sample Rate)
-    4: AAC LTP (Long Term Prediction)
-    5: SBR (Spectral Band Replication)
-    6: AAC Scalable
-   sampling freq
-    0: 96000 Hz
-    1: 88200 Hz
-    2: 64000 Hz
-    3: 48000 Hz
-    4: 44100 Hz
-    5: 32000 Hz
-    6: 24000 Hz
-    7: 22050 Hz
-    8: 16000 Hz
-    9: 12000 Hz
-    10: 11025 Hz
-    11: 8000 Hz
-    12: 7350 Hz
-    13: Reserved
-    14: Reserved
-    15: frequency is written explictly
-    Channel Configurations
-    These are the channel configurations:
-    0: Defined in AOT Specifc Config
-    1: 1 channel: front-center
-    2: 2 channels: front-left, front-right
-  */
-  // audioObjectType = profile => profile, the MPEG-4 Audio Object Type minus 1
-
-
-  config[0] = adtsObjectType << 3; // samplingFrequencyIndex
-
-  config[0] |= (adtsSampleingIndex & 0x0E) >> 1;
-  config[1] |= (adtsSampleingIndex & 0x01) << 7; // channelConfiguration
-
-  config[1] |= adtsChanelConfig << 3;
-
-  if (adtsObjectType === 5) {
-    // adtsExtensionSampleingIndex
-    config[1] |= (adtsExtensionSampleingIndex & 0x0E) >> 1;
-    config[2] = (adtsExtensionSampleingIndex & 0x01) << 7; // adtsObjectType (force to 2, chrome is checking that object type is less than 5 ???
-    //    https://chromium.googlesource.com/chromium/src.git/+/master/media/formats/mp4/aac.cc
-
-    config[2] |= 2 << 2;
-    config[3] = 0;
-  }
-
-  return {
-    config: config,
-    samplerate: adtsSampleingRates[adtsSampleingIndex],
-    channelCount: adtsChanelConfig,
-    codec: 'mp4a.40.' + adtsObjectType,
-    manifestCodec: manifestCodec
-  };
-}
-function isHeaderPattern(data, offset) {
-  return data[offset] === 0xff && (data[offset + 1] & 0xf6) === 0xf0;
-}
-function getHeaderLength(data, offset) {
-  return data[offset + 1] & 0x01 ? 7 : 9;
-}
-function getFullFrameLength(data, offset) {
-  return (data[offset + 3] & 0x03) << 11 | data[offset + 4] << 3 | (data[offset + 5] & 0xE0) >>> 5;
-}
-function isHeader(data, offset) {
-  // Look for ADTS header | 1111 1111 | 1111 X00X | where X can be either 0 or 1
-  // Layer bits (position 14 and 15) in header should be always 0 for ADTS
-  // More info https://wiki.multimedia.cx/index.php?title=ADTS
-  if (offset + 1 < data.length && isHeaderPattern(data, offset)) {
-    return true;
-  }
-
-  return false;
-}
-function adts_probe(data, offset) {
-  // same as isHeader but we also check that ADTS frame follows last ADTS frame
-  // or end of data is reached
-  if (isHeader(data, offset)) {
-    // ADTS header Length
-    var headerLength = getHeaderLength(data, offset);
-
-    if (offset + headerLength >= data.length) {
-      return false;
-    } // ADTS frame Length
-
-
-    var frameLength = getFullFrameLength(data, offset);
-
-    if (frameLength <= headerLength) {
-      return false;
-    }
-
-    var newOffset = offset + frameLength;
-
-    if (newOffset === data.length || newOffset + 1 < data.length && isHeaderPattern(data, newOffset)) {
-      return true;
-    }
-  }
-
-  return false;
-}
-function initTrackConfig(track, observer, data, offset, audioCodec) {
-  if (!track.samplerate) {
-    var config = getAudioConfig(observer, data, offset, audioCodec);
-    track.config = config.config;
-    track.samplerate = config.samplerate;
-    track.channelCount = config.channelCount;
-    track.codec = config.codec;
-    track.manifestCodec = config.manifestCodec;
-    logger["logger"].log("parsed codec:" + track.codec + ",rate:" + config.samplerate + ",nb channel:" + config.channelCount);
-  }
-}
-function getFrameDuration(samplerate) {
-  return 1024 * 90000 / samplerate;
-}
-function parseFrameHeader(data, offset, pts, frameIndex, frameDuration) {
-  var headerLength, frameLength, stamp;
-  var length = data.length; // The protection skip bit tells us if we have 2 bytes of CRC data at the end of the ADTS header
-
-  headerLength = getHeaderLength(data, offset); // retrieve frame size
-
-  frameLength = getFullFrameLength(data, offset);
-  frameLength -= headerLength;
-
-  if (frameLength > 0 && offset + headerLength + frameLength <= length) {
-    stamp = pts + frameIndex * frameDuration; // logger.log(`AAC frame, offset/length/total/pts:${offset+headerLength}/${frameLength}/${data.byteLength}/${(stamp/90).toFixed(0)}`);
-
-    return {
-      headerLength: headerLength,
-      frameLength: frameLength,
-      stamp: stamp
-    };
-  }
-
-  return undefined;
-}
-function appendFrame(track, data, offset, pts, frameIndex) {
-  var frameDuration = getFrameDuration(track.samplerate);
-  var header = parseFrameHeader(data, offset, pts, frameIndex, frameDuration);
-
-  if (header) {
-    var stamp = header.stamp;
-    var headerLength = header.headerLength;
-    var frameLength = header.frameLength; // logger.log(`AAC frame, offset/length/total/pts:${offset+headerLength}/${frameLength}/${data.byteLength}/${(stamp/90).toFixed(0)}`);
-
-    var aacSample = {
-      unit: data.subarray(offset + headerLength, offset + headerLength + frameLength),
-      pts: stamp,
-      dts: stamp
-    };
-    track.samples.push(aacSample);
-    return {
-      sample: aacSample,
-      length: frameLength + headerLength
-    };
-  }
-
-  return undefined;
-}
-// EXTERNAL MODULE: ./src/demux/id3.js
-var id3 = __webpack_require__("./src/demux/id3.js");
-
-// CONCATENATED MODULE: ./src/demux/aacdemuxer.js
-
-
-/**
- * AAC demuxer
- */
-
-
-
-
-var aacdemuxer_AACDemuxer = /*#__PURE__*/function () {
-  function AACDemuxer(observer, remuxer, config) {
-    this.observer = observer;
-    this.config = config;
-    this.remuxer = remuxer;
-  }
-
-  var _proto = AACDemuxer.prototype;
-
-  _proto.resetInitSegment = function resetInitSegment(initSegment, audioCodec, videoCodec, duration) {
-    this._audioTrack = {
-      container: 'audio/adts',
-      type: 'audio',
-      id: 0,
-      sequenceNumber: 0,
-      isAAC: true,
-      samples: [],
-      len: 0,
-      manifestCodec: audioCodec,
-      duration: duration,
-      inputTimeScale: 90000
-    };
-  };
-
-  _proto.resetTimeStamp = function resetTimeStamp() {};
-
-  AACDemuxer.probe = function probe(data) {
-    if (!data) {
-      return false;
-    } // Check for the ADTS sync word
-    // Look for ADTS header | 1111 1111 | 1111 X00X | where X can be either 0 or 1
-    // Layer bits (position 14 and 15) in header should be always 0 for ADTS
-    // More info https://wiki.multimedia.cx/index.php?title=ADTS
-
-
-    var id3Data = id3["default"].getID3Data(data, 0) || [];
-    var offset = id3Data.length;
-
-    for (var length = data.length; offset < length; offset++) {
-      if (adts_probe(data, offset)) {
-        logger["logger"].log('ADTS sync word found !');
-        return true;
-      }
-    }
-
-    return false;
-  } // feed incoming data to the front of the parsing pipeline
-  ;
-
-  _proto.append = function append(data, timeOffset, contiguous, accurateTimeOffset) {
-    var track = this._audioTrack;
-    var id3Data = id3["default"].getID3Data(data, 0) || [];
-    var timestamp = id3["default"].getTimeStamp(id3Data);
-    var pts = Object(number["isFiniteNumber"])(timestamp) ? timestamp * 90 : timeOffset * 90000;
-    var frameIndex = 0;
-    var stamp = pts;
-    var length = data.length;
-    var offset = id3Data.length;
-    var id3Samples = [{
-      pts: stamp,
-      dts: stamp,
-      data: id3Data
-    }];
-
-    while (offset < length - 1) {
-      if (isHeader(data, offset) && offset + 5 < length) {
-        initTrackConfig(track, this.observer, data, offset, track.manifestCodec);
-        var frame = appendFrame(track, data, offset, pts, frameIndex);
-
-        if (frame) {
-          offset += frame.length;
-          stamp = frame.sample.pts;
-          frameIndex++;
-        } else {
-          logger["logger"].log('Unable to parse AAC frame');
-          break;
-        }
-      } else if (id3["default"].isHeader(data, offset)) {
-        id3Data = id3["default"].getID3Data(data, offset);
-        id3Samples.push({
-          pts: stamp,
-          dts: stamp,
-          data: id3Data
-        });
-        offset += id3Data.length;
-      } else {
-        // nothing found, keep looking
-        offset++;
-      }
-    }
-
-    this.remuxer.remux(track, {
-      samples: []
-    }, {
-      samples: id3Samples,
-      inputTimeScale: 90000
-    }, {
-      samples: []
-    }, timeOffset, contiguous, accurateTimeOffset);
-  };
-
-  _proto.destroy = function destroy() {};
-
-  return AACDemuxer;
-}();
-
-/* harmony default export */ var aacdemuxer = (aacdemuxer_AACDemuxer);
-// EXTERNAL MODULE: ./src/demux/mp4demuxer.js
-var mp4demuxer = __webpack_require__("./src/demux/mp4demuxer.js");
-
-// CONCATENATED MODULE: ./src/demux/mpegaudio.js
-/**
- *  MPEG parser helper
- */
-var match = navigator.userAgent.match(/Chrome\/(\d+)/i);
-var needChromeFix = match && parseInt(match[1]) <= 87;
-var MpegAudio = {
-  BitratesMap: [32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160],
-  SamplingRateMap: [44100, 48000, 32000, 22050, 24000, 16000, 11025, 12000, 8000],
-  SamplesCoefficients: [// MPEG 2.5
-  [0, // Reserved
-  72, // Layer3
-  144, // Layer2
-  12 // Layer1
-  ], // Reserved
-  [0, // Reserved
-  0, // Layer3
-  0, // Layer2
-  0 // Layer1
-  ], // MPEG 2
-  [0, // Reserved
-  72, // Layer3
-  144, // Layer2
-  12 // Layer1
-  ], // MPEG 1
-  [0, // Reserved
-  144, // Layer3
-  144, // Layer2
-  12 // Layer1
-  ]],
-  BytesInSlot: [0, // Reserved
-  1, // Layer3
-  1, // Layer2
-  4 // Layer1
-  ],
-  appendFrame: function appendFrame(track, data, offset, pts, frameIndex) {
-    // Using http://www.datavoyage.com/mpgscript/mpeghdr.htm as a reference
-    if (offset + 24 > data.length) {
-      return undefined;
-    }
-
-    var header = this.parseHeader(data, offset);
-
-    if (header && offset + header.frameLength <= data.length) {
-      var frameDuration = header.samplesPerFrame * 90000 / header.sampleRate;
-      var stamp = pts + frameIndex * frameDuration;
-      var sample = {
-        unit: data.subarray(offset, offset + header.frameLength),
-        pts: stamp,
-        dts: stamp
-      };
-      track.config = [];
-      track.channelCount = header.channelCount;
-      track.samplerate = header.sampleRate;
-      track.samples.push(sample);
-      return {
-        sample: sample,
-        length: header.frameLength
-      };
-    }
-
-    return undefined;
-  },
-  parseHeader: function parseHeader(data, offset) {
-    var mpegVersion = data[offset + 1] >> 3 & 3;
-    var mpegLayer = data[offset + 1] >> 1 & 3;
-    var bitRateIndex = data[offset + 2] >> 4 & 15;
-    var sampleRateIndex = data[offset + 2] >> 2 & 3;
-    var paddingBit = data[offset + 2] >> 1 & 1;
-    var channelMode = data[offset + 3] >> 6;
-
-    if (mpegVersion !== 1 && bitRateIndex !== 0 && bitRateIndex !== 15 && sampleRateIndex !== 3) {
-      var columnInBitrates = mpegVersion === 3 ? 3 - mpegLayer : mpegLayer === 3 ? 3 : 4;
-      var bitRate = MpegAudio.BitratesMap[columnInBitrates * 14 + bitRateIndex - 1] * 1000;
-      var columnInSampleRates = mpegVersion === 3 ? 0 : mpegVersion === 2 ? 1 : 2;
-      var sampleRate = MpegAudio.SamplingRateMap[columnInSampleRates * 3 + sampleRateIndex];
-      var channelCount = channelMode === 3 ? 1 : 2; // If bits of channel mode are `11` then it is a single channel (Mono)
-
-      var sampleCoefficient = MpegAudio.SamplesCoefficients[mpegVersion][mpegLayer];
-      var bytesInSlot = MpegAudio.BytesInSlot[mpegLayer];
-      var samplesPerFrame = sampleCoefficient * 8 * bytesInSlot;
-      var frameLength = parseInt(sampleCoefficient * bitRate / sampleRate + paddingBit, 10) * bytesInSlot;
-
-      if (needChromeFix && mpegLayer === 2 && bitRate >= 224000 && channelMode === 0) {
-        // Work around bug in Chromium by setting channelMode to dual-channel (01) instead of stereo (00)
-        data[offset + 3] = data[offset + 3] | 0x80;
-      }
-
-      return {
-        sampleRate: sampleRate,
-        channelCount: channelCount,
-        frameLength: frameLength,
-        samplesPerFrame: samplesPerFrame
-      };
-    }
-
-    return undefined;
-  },
-  isHeaderPattern: function isHeaderPattern(data, offset) {
-    return data[offset] === 0xff && (data[offset + 1] & 0xe0) === 0xe0 && (data[offset + 1] & 0x06) !== 0x00;
-  },
-  isHeader: function isHeader(data, offset) {
-    // Look for MPEG header | 1111 1111 | 111X XYZX | where X can be either 0 or 1 and Y or Z should be 1
-    // Layer bits (position 14 and 15) in header should be always different from 0 (Layer I or Layer II or Layer III)
-    // More info http://www.mp3-tech.org/programmer/frame_header.html
-    if (offset + 1 < data.length && this.isHeaderPattern(data, offset)) {
-      return true;
-    }
-
-    return false;
-  },
-  probe: function probe(data, offset) {
-    // same as isHeader but we also check that MPEG frame follows last MPEG frame
-    // or end of data is reached
-    if (offset + 1 < data.length && this.isHeaderPattern(data, offset)) {
-      // MPEG header Length
-      var headerLength = 4; // MPEG frame Length
-
-      var header = this.parseHeader(data, offset);
-      var frameLength = headerLength;
-
-      if (header && header.frameLength) {
-        frameLength = header.frameLength;
-      }
-
-      var newOffset = offset + frameLength;
-
-      if (newOffset === data.length || newOffset + 1 < data.length && this.isHeaderPattern(data, newOffset)) {
-        return true;
-      }
-    }
-
-    return false;
-  }
-};
-/* harmony default export */ var mpegaudio = (MpegAudio);
-// CONCATENATED MODULE: ./src/demux/exp-golomb.js
-/**
- * Parser for exponential Golomb codes, a variable-bitwidth number encoding scheme used by h264.
-*/
-
-
-var exp_golomb_ExpGolomb = /*#__PURE__*/function () {
-  function ExpGolomb(data) {
-    this.data = data; // the number of bytes left to examine in this.data
-
-    this.bytesAvailable = data.byteLength; // the current word being examined
-
-    this.word = 0; // :uint
-    // the number of bits left to examine in the current word
-
-    this.bitsAvailable = 0; // :uint
-  } // ():void
-
-
-  var _proto = ExpGolomb.prototype;
-
-  _proto.loadWord = function loadWord() {
-    var data = this.data,
-        bytesAvailable = this.bytesAvailable,
-        position = data.byteLength - bytesAvailable,
-        workingBytes = new Uint8Array(4),
-        availableBytes = Math.min(4, bytesAvailable);
-
-    if (availableBytes === 0) {
-      throw new Error('no bytes available');
-    }
-
-    workingBytes.set(data.subarray(position, position + availableBytes));
-    this.word = new DataView(workingBytes.buffer).getUint32(0); // track the amount of this.data that has been processed
-
-    this.bitsAvailable = availableBytes * 8;
-    this.bytesAvailable -= availableBytes;
-  } // (count:int):void
-  ;
-
-  _proto.skipBits = function skipBits(count) {
-    var skipBytes; // :int
-
-    if (this.bitsAvailable > count) {
-      this.word <<= count;
-      this.bitsAvailable -= count;
-    } else {
-      count -= this.bitsAvailable;
-      skipBytes = count >> 3;
-      count -= skipBytes >> 3;
-      this.bytesAvailable -= skipBytes;
-      this.loadWord();
-      this.word <<= count;
-      this.bitsAvailable -= count;
-    }
-  } // (size:int):uint
-  ;
-
-  _proto.readBits = function readBits(size) {
-    var bits = Math.min(this.bitsAvailable, size),
-        // :uint
-    valu = this.word >>> 32 - bits; // :uint
-
-    if (size > 32) {
-      logger["logger"].error('Cannot read more than 32 bits at a time');
-    }
-
-    this.bitsAvailable -= bits;
-
-    if (this.bitsAvailable > 0) {
-      this.word <<= bits;
-    } else if (this.bytesAvailable > 0) {
-      this.loadWord();
-    }
-
-    bits = size - bits;
-
-    if (bits > 0 && this.bitsAvailable) {
-      return valu << bits | this.readBits(bits);
-    } else {
-      return valu;
-    }
-  } // ():uint
-  ;
-
-  _proto.skipLZ = function skipLZ() {
-    var leadingZeroCount; // :uint
-
-    for (leadingZeroCount = 0; leadingZeroCount < this.bitsAvailable; ++leadingZeroCount) {
-      if ((this.word & 0x80000000 >>> leadingZeroCount) !== 0) {
-        // the first bit of working word is 1
-        this.word <<= leadingZeroCount;
-        this.bitsAvailable -= leadingZeroCount;
-        return leadingZeroCount;
-      }
-    } // we exhausted word and still have not found a 1
-
-
-    this.loadWord();
-    return leadingZeroCount + this.skipLZ();
-  } // ():void
-  ;
-
-  _proto.skipUEG = function skipUEG() {
-    this.skipBits(1 + this.skipLZ());
-  } // ():void
-  ;
-
-  _proto.skipEG = function skipEG() {
-    this.skipBits(1 + this.skipLZ());
-  } // ():uint
-  ;
-
-  _proto.readUEG = function readUEG() {
-    var clz = this.skipLZ(); // :uint
-
-    return this.readBits(clz + 1) - 1;
-  } // ():int
-  ;
-
-  _proto.readEG = function readEG() {
-    var valu = this.readUEG(); // :int
-
-    if (0x01 & valu) {
-      // the number is odd if the low order bit is set
-      return 1 + valu >>> 1; // add 1 to make it even, and divide by 2
-    } else {
-      return -1 * (valu >>> 1); // divide by two then make it negative
-    }
-  } // Some convenience functions
-  // :Boolean
-  ;
-
-  _proto.readBoolean = function readBoolean() {
-    return this.readBits(1) === 1;
-  } // ():int
-  ;
-
-  _proto.readUByte = function readUByte() {
-    return this.readBits(8);
-  } // ():int
-  ;
-
-  _proto.readUShort = function readUShort() {
-    return this.readBits(16);
-  } // ():int
-  ;
-
-  _proto.readUInt = function readUInt() {
-    return this.readBits(32);
-  }
-  /**
-   * Advance the ExpGolomb decoder past a scaling list. The scaling
-   * list is optionally transmitted as part of a sequence parameter
-   * set and is not relevant to transmuxing.
-   * @param count {number} the number of entries in this scaling list
-   * @see Recommendation ITU-T H.264, Section 7.3.2.1.1.1
-   */
-  ;
-
-  _proto.skipScalingList = function skipScalingList(count) {
-    var lastScale = 8,
-        nextScale = 8,
-        j,
-        deltaScale;
-
-    for (j = 0; j < count; j++) {
-      if (nextScale !== 0) {
-        deltaScale = this.readEG();
-        nextScale = (lastScale + deltaScale + 256) % 256;
-      }
-
-      lastScale = nextScale === 0 ? lastScale : nextScale;
-    }
-  }
-  /**
-   * Read a sequence parameter set and return some interesting video
-   * properties. A sequence parameter set is the H264 metadata that
-   * describes the properties of upcoming video frames.
-   * @param data {Uint8Array} the bytes of a sequence parameter set
-   * @return {object} an object with configuration parsed from the
-   * sequence parameter set, including the dimensions of the
-   * associated video frames.
-   */
-  ;
-
-  _proto.readSPS = function readSPS() {
-    var frameCropLeftOffset = 0,
-        frameCropRightOffset = 0,
-        frameCropTopOffset = 0,
-        frameCropBottomOffset = 0,
-        profileIdc,
-        profileCompat,
-        levelIdc,
-        numRefFramesInPicOrderCntCycle,
-        picWidthInMbsMinus1,
-        picHeightInMapUnitsMinus1,
-        frameMbsOnlyFlag,
-        scalingListCount,
-        i,
-        readUByte = this.readUByte.bind(this),
-        readBits = this.readBits.bind(this),
-        readUEG = this.readUEG.bind(this),
-        readBoolean = this.readBoolean.bind(this),
-        skipBits = this.skipBits.bind(this),
-        skipEG = this.skipEG.bind(this),
-        skipUEG = this.skipUEG.bind(this),
-        skipScalingList = this.skipScalingList.bind(this);
-    readUByte();
-    profileIdc = readUByte(); // profile_idc
-
-    profileCompat = readBits(5); // constraint_set[0-4]_flag, u(5)
-
-    skipBits(3); // reserved_zero_3bits u(3),
-
-    levelIdc = readUByte(); // level_idc u(8)
-
-    skipUEG(); // seq_parameter_set_id
-    // some profiles have more optional data we don't need
-
-    if (profileIdc === 100 || profileIdc === 110 || profileIdc === 122 || profileIdc === 244 || profileIdc === 44 || profileIdc === 83 || profileIdc === 86 || profileIdc === 118 || profileIdc === 128) {
-      var chromaFormatIdc = readUEG();
-
-      if (chromaFormatIdc === 3) {
-        skipBits(1);
-      } // separate_colour_plane_flag
-
-
-      skipUEG(); // bit_depth_luma_minus8
-
-      skipUEG(); // bit_depth_chroma_minus8
-
-      skipBits(1); // qpprime_y_zero_transform_bypass_flag
-
-      if (readBoolean()) {
-        // seq_scaling_matrix_present_flag
-        scalingListCount = chromaFormatIdc !== 3 ? 8 : 12;
-
-        for (i = 0; i < scalingListCount; i++) {
-          if (readBoolean()) {
-            // seq_scaling_list_present_flag[ i ]
-            if (i < 6) {
-              skipScalingList(16);
-            } else {
-              skipScalingList(64);
-            }
-          }
-        }
-      }
-    }
-
-    skipUEG(); // log2_max_frame_num_minus4
-
-    var picOrderCntType = readUEG();
-
-    if (picOrderCntType === 0) {
-      readUEG(); // log2_max_pic_order_cnt_lsb_minus4
-    } else if (picOrderCntType === 1) {
-      skipBits(1); // delta_pic_order_always_zero_flag
-
-      skipEG(); // offset_for_non_ref_pic
-
-      skipEG(); // offset_for_top_to_bottom_field
-
-      numRefFramesInPicOrderCntCycle = readUEG();
-
-      for (i = 0; i < numRefFramesInPicOrderCntCycle; i++) {
-        skipEG();
-      } // offset_for_ref_frame[ i ]
-
-    }
-
-    skipUEG(); // max_num_ref_frames
-
-    skipBits(1); // gaps_in_frame_num_value_allowed_flag
-
-    picWidthInMbsMinus1 = readUEG();
-    picHeightInMapUnitsMinus1 = readUEG();
-    frameMbsOnlyFlag = readBits(1);
-
-    if (frameMbsOnlyFlag === 0) {
-      skipBits(1);
-    } // mb_adaptive_frame_field_flag
-
-
-    skipBits(1); // direct_8x8_inference_flag
-
-    if (readBoolean()) {
-      // frame_cropping_flag
-      frameCropLeftOffset = readUEG();
-      frameCropRightOffset = readUEG();
-      frameCropTopOffset = readUEG();
-      frameCropBottomOffset = readUEG();
-    }
-
-    var pixelRatio = [1, 1];
-
-    if (readBoolean()) {
-      // vui_parameters_present_flag
-      if (readBoolean()) {
-        // aspect_ratio_info_present_flag
-        var aspectRatioIdc = readUByte();
-
-        switch (aspectRatioIdc) {
-          case 1:
-            pixelRatio = [1, 1];
-            break;
-
-          case 2:
-            pixelRatio = [12, 11];
-            break;
-
-          case 3:
-            pixelRatio = [10, 11];
-            break;
-
-          case 4:
-            pixelRatio = [16, 11];
-            break;
-
-          case 5:
-            pixelRatio = [40, 33];
-            break;
-
-          case 6:
-            pixelRatio = [24, 11];
-            break;
-
-          case 7:
-            pixelRatio = [20, 11];
-            break;
-
-          case 8:
-            pixelRatio = [32, 11];
-            break;
-
-          case 9:
-            pixelRatio = [80, 33];
-            break;
-
-          case 10:
-            pixelRatio = [18, 11];
-            break;
-
-          case 11:
-            pixelRatio = [15, 11];
-            break;
-
-          case 12:
-            pixelRatio = [64, 33];
-            break;
-
-          case 13:
-            pixelRatio = [160, 99];
-            break;
-
-          case 14:
-            pixelRatio = [4, 3];
-            break;
-
-          case 15:
-            pixelRatio = [3, 2];
-            break;
-
-          case 16:
-            pixelRatio = [2, 1];
-            break;
-
-          case 255:
-            {
-              pixelRatio = [readUByte() << 8 | readUByte(), readUByte() << 8 | readUByte()];
-              break;
-            }
-        }
-      }
-    }
-
-    return {
-      width: Math.ceil((picWidthInMbsMinus1 + 1) * 16 - frameCropLeftOffset * 2 - frameCropRightOffset * 2),
-      height: (2 - frameMbsOnlyFlag) * (picHeightInMapUnitsMinus1 + 1) * 16 - (frameMbsOnlyFlag ? 2 : 4) * (frameCropTopOffset + frameCropBottomOffset),
-      pixelRatio: pixelRatio
-    };
-  };
-
-  _proto.readSliceType = function readSliceType() {
-    // skip NALu type
-    this.readUByte(); // discard first_mb_in_slice
-
-    this.readUEG(); // return slice_type
-
-    return this.readUEG();
-  };
-
-  return ExpGolomb;
-}();
-
-/* harmony default export */ var exp_golomb = (exp_golomb_ExpGolomb);
-// CONCATENATED MODULE: ./src/demux/sample-aes.js
-/**
- * SAMPLE-AES decrypter
-*/
-
-
-var sample_aes_SampleAesDecrypter = /*#__PURE__*/function () {
-  function SampleAesDecrypter(observer, config, decryptdata, discardEPB) {
-    this.decryptdata = decryptdata;
-    this.discardEPB = discardEPB;
-    this.decrypter = new crypt_decrypter["default"](observer, config, {
-      removePKCS7Padding: false
-    });
-  }
-
-  var _proto = SampleAesDecrypter.prototype;
-
-  _proto.decryptBuffer = function decryptBuffer(encryptedData, callback) {
-    this.decrypter.decrypt(encryptedData, this.decryptdata.key.buffer, this.decryptdata.iv.buffer, callback);
-  } // AAC - encrypt all full 16 bytes blocks starting from offset 16
-  ;
-
-  _proto.decryptAacSample = function decryptAacSample(samples, sampleIndex, callback, sync) {
-    var curUnit = samples[sampleIndex].unit;
-    var encryptedData = curUnit.subarray(16, curUnit.length - curUnit.length % 16);
-    var encryptedBuffer = encryptedData.buffer.slice(encryptedData.byteOffset, encryptedData.byteOffset + encryptedData.length);
-    var localthis = this;
-    this.decryptBuffer(encryptedBuffer, function (decryptedData) {
-      decryptedData = new Uint8Array(decryptedData);
-      curUnit.set(decryptedData, 16);
-
-      if (!sync) {
-        localthis.decryptAacSamples(samples, sampleIndex + 1, callback);
-      }
-    });
-  };
-
-  _proto.decryptAacSamples = function decryptAacSamples(samples, sampleIndex, callback) {
-    for (;; sampleIndex++) {
-      if (sampleIndex >= samples.length) {
-        callback();
-        return;
-      }
-
-      if (samples[sampleIndex].unit.length < 32) {
-        continue;
-      }
-
-      var sync = this.decrypter.isSync();
-      this.decryptAacSample(samples, sampleIndex, callback, sync);
-
-      if (!sync) {
-        return;
-      }
-    }
-  } // AVC - encrypt one 16 bytes block out of ten, starting from offset 32
-  ;
-
-  _proto.getAvcEncryptedData = function getAvcEncryptedData(decodedData) {
-    var encryptedDataLen = Math.floor((decodedData.length - 48) / 160) * 16 + 16;
-    var encryptedData = new Int8Array(encryptedDataLen);
-    var outputPos = 0;
-
-    for (var inputPos = 32; inputPos <= decodedData.length - 16; inputPos += 160, outputPos += 16) {
-      encryptedData.set(decodedData.subarray(inputPos, inputPos + 16), outputPos);
-    }
-
-    return encryptedData;
-  };
-
-  _proto.getAvcDecryptedUnit = function getAvcDecryptedUnit(decodedData, decryptedData) {
-    decryptedData = new Uint8Array(decryptedData);
-    var inputPos = 0;
-
-    for (var outputPos = 32; outputPos <= decodedData.length - 16; outputPos += 160, inputPos += 16) {
-      decodedData.set(decryptedData.subarray(inputPos, inputPos + 16), outputPos);
-    }
-
-    return decodedData;
-  };
-
-  _proto.decryptAvcSample = function decryptAvcSample(samples, sampleIndex, unitIndex, callback, curUnit, sync) {
-    var decodedData = this.discardEPB(curUnit.data);
-    var encryptedData = this.getAvcEncryptedData(decodedData);
-    var localthis = this;
-    this.decryptBuffer(encryptedData.buffer, function (decryptedData) {
-      curUnit.data = localthis.getAvcDecryptedUnit(decodedData, decryptedData);
-
-      if (!sync) {
-        localthis.decryptAvcSamples(samples, sampleIndex, unitIndex + 1, callback);
-      }
-    });
-  };
-
-  _proto.decryptAvcSamples = function decryptAvcSamples(samples, sampleIndex, unitIndex, callback) {
-    for (;; sampleIndex++, unitIndex = 0) {
-      if (sampleIndex >= samples.length) {
-        callback();
-        return;
-      }
-
-      var curUnits = samples[sampleIndex].units;
-
-      for (;; unitIndex++) {
-        if (unitIndex >= curUnits.length) {
-          break;
-        }
-
-        var curUnit = curUnits[unitIndex];
-
-        if (curUnit.data.length <= 48 || curUnit.type !== 1 && curUnit.type !== 5) {
-          continue;
-        }
-
-        var sync = this.decrypter.isSync();
-        this.decryptAvcSample(samples, sampleIndex, unitIndex, callback, curUnit, sync);
-
-        if (!sync) {
-          return;
-        }
-      }
-    }
-  };
-
-  return SampleAesDecrypter;
-}();
-
-/* harmony default export */ var sample_aes = (sample_aes_SampleAesDecrypter);
-// CONCATENATED MODULE: ./src/demux/tsdemuxer.js
-/**
- * highly optimized TS demuxer:
- * parse PAT, PMT
- * extract PES packet from audio and video PIDs
- * extract AVC/H264 NAL units and AAC/ADTS samples from PES packet
- * trigger the remuxer upon parsing completion
- * it also tries to workaround as best as it can audio codec switch (HE-AAC to AAC and vice versa), without having to restart the MediaSource.
- * it also controls the remuxing process :
- * upon discontinuity or level switch detection, it will also notifies the remuxer so that it can reset its state.
-*/
-
-
-
-
- // import Hex from '../utils/hex';
-
-
-
- // We are using fixed track IDs for driving the MP4 remuxer
-// instead of following the TS PIDs.
-// There is no reason not to do this and some browsers/SourceBuffer-demuxers
-// may not like if there are TrackID "switches"
-// See https://github.com/video-dev/hls.js/issues/1331
-// Here we are mapping our internal track types to constant MP4 track IDs
-// With MSE currently one can only have one track of each, and we are muxing
-// whatever video/audio rendition in them.
-
-var RemuxerTrackIdConfig = {
-  video: 1,
-  audio: 2,
-  id3: 3,
-  text: 4
-};
-
-var tsdemuxer_TSDemuxer = /*#__PURE__*/function () {
-  function TSDemuxer(observer, remuxer, config, typeSupported) {
-    this.observer = observer;
-    this.config = config;
-    this.typeSupported = typeSupported;
-    this.remuxer = remuxer;
-    this.sampleAes = null;
-    this.pmtUnknownTypes = {};
-  }
-
-  var _proto = TSDemuxer.prototype;
-
-  _proto.setDecryptData = function setDecryptData(decryptdata) {
-    if (decryptdata != null && decryptdata.key != null && decryptdata.method === 'SAMPLE-AES') {
-      this.sampleAes = new sample_aes(this.observer, this.config, decryptdata, this.discardEPB);
-    } else {
-      this.sampleAes = null;
-    }
-  };
-
-  TSDemuxer.probe = function probe(data) {
-    var syncOffset = TSDemuxer._syncOffset(data);
-
-    if (syncOffset < 0) {
-      return false;
-    } else {
-      if (syncOffset) {
-        logger["logger"].warn("MPEG2-TS detected but first sync word found @ offset " + syncOffset + ", junk ahead ?");
-      }
-
-      return true;
-    }
-  };
-
-  TSDemuxer._syncOffset = function _syncOffset(data) {
-    // scan 1000 first bytes
-    var scanwindow = Math.min(1000, data.length - 3 * 188);
-    var i = 0;
-
-    while (i < scanwindow) {
-      // a TS fragment should contain at least 3 TS packets, a PAT, a PMT, and one PID, each starting with 0x47
-      if (data[i] === 0x47 && data[i + 188] === 0x47 && data[i + 2 * 188] === 0x47) {
-        return i;
-      } else {
-        i++;
-      }
-    }
-
-    return -1;
-  }
-  /**
-   * Creates a track model internal to demuxer used to drive remuxing input
-   *
-   * @param {string} type 'audio' | 'video' | 'id3' | 'text'
-   * @param {number} duration
-   * @return {object} TSDemuxer's internal track model
-   */
-  ;
-
-  TSDemuxer.createTrack = function createTrack(type, duration) {
-    return {
-      container: type === 'video' || type === 'audio' ? 'video/mp2t' : undefined,
-      type: type,
-      id: RemuxerTrackIdConfig[type],
-      pid: -1,
-      inputTimeScale: 90000,
-      sequenceNumber: 0,
-      samples: [],
-      dropped: type === 'video' ? 0 : undefined,
-      isAAC: type === 'audio' ? true : undefined,
-      duration: type === 'audio' ? duration : undefined
-    };
-  }
-  /**
-   * Initializes a new init segment on the demuxer/remuxer interface. Needed for discontinuities/track-switches (or at stream start)
-   * Resets all internal track instances of the demuxer.
-   *
-   * @override Implements generic demuxing/remuxing interface (see DemuxerInline)
-   * @param {object} initSegment
-   * @param {string} audioCodec
-   * @param {string} videoCodec
-   * @param {number} duration (in TS timescale = 90kHz)
-   */
-  ;
-
-  _proto.resetInitSegment = function resetInitSegment(initSegment, audioCodec, videoCodec, duration) {
-    this.pmtParsed = false;
-    this._pmtId = -1;
-    this.pmtUnknownTypes = {};
-    this._avcTrack = TSDemuxer.createTrack('video', duration);
-    this._audioTrack = TSDemuxer.createTrack('audio', duration);
-    this._id3Track = TSDemuxer.createTrack('id3', duration);
-    this._txtTrack = TSDemuxer.createTrack('text', duration); // flush any partial content
-
-    this.aacOverFlow = null;
-    this.aacLastPTS = null;
-    this.avcSample = null;
-    this.audioCodec = audioCodec;
-    this.videoCodec = videoCodec;
-    this._duration = duration;
-  }
-  /**
-   *
-   * @override
-   */
-  ;
-
-  _proto.resetTimeStamp = function resetTimeStamp() {} // feed incoming data to the front of the parsing pipeline
-  ;
-
-  _proto.append = function append(data, timeOffset, contiguous, accurateTimeOffset) {
-    var start,
-        len = data.length,
-        stt,
-        pid,
-        atf,
-        offset,
-        pes,
-        unknownPIDs = false;
-    this.pmtUnknownTypes = {};
-    this.contiguous = contiguous;
-
-    var pmtParsed = this.pmtParsed,
-        avcTrack = this._avcTrack,
-        audioTrack = this._audioTrack,
-        id3Track = this._id3Track,
-        avcId = avcTrack.pid,
-        audioId = audioTrack.pid,
-        id3Id = id3Track.pid,
-        pmtId = this._pmtId,
-        avcData = avcTrack.pesData,
-        audioData = audioTrack.pesData,
-        id3Data = id3Track.pesData,
-        parsePAT = this._parsePAT,
-        parsePMT = this._parsePMT.bind(this),
-        parsePES = this._parsePES,
-        parseAVCPES = this._parseAVCPES.bind(this),
-        parseAACPES = this._parseAACPES.bind(this),
-        parseMPEGPES = this._parseMPEGPES.bind(this),
-        parseID3PES = this._parseID3PES.bind(this);
-
-    var syncOffset = TSDemuxer._syncOffset(data); // don't parse last TS packet if incomplete
-
-
-    len -= (len + syncOffset) % 188; // loop through TS packets
-
-    for (start = syncOffset; start < len; start += 188) {
-      if (data[start] === 0x47) {
-        stt = !!(data[start + 1] & 0x40); // pid is a 13-bit field starting at the last bit of TS[1]
-
-        pid = ((data[start + 1] & 0x1f) << 8) + data[start + 2];
-        atf = (data[start + 3] & 0x30) >> 4; // if an adaption field is present, its length is specified by the fifth byte of the TS packet header.
-
-        if (atf > 1) {
-          offset = start + 5 + data[start + 4]; // continue if there is only adaptation field
-
-          if (offset === start + 188) {
-            continue;
-          }
-        } else {
-          offset = start + 4;
-        }
-
-        switch (pid) {
-          case avcId:
-            if (stt) {
-              if (avcData && (pes = parsePES(avcData))) {
-                parseAVCPES(pes, false);
-              }
-
-              avcData = {
-                data: [],
-                size: 0
-              };
-            }
-
-            if (avcData) {
-              avcData.data.push(data.subarray(offset, start + 188));
-              avcData.size += start + 188 - offset;
-            }
-
-            break;
-
-          case audioId:
-            if (stt) {
-              if (audioData && (pes = parsePES(audioData))) {
-                if (audioTrack.isAAC) {
-                  parseAACPES(pes);
-                } else {
-                  parseMPEGPES(pes);
-                }
-              }
-
-              audioData = {
-                data: [],
-                size: 0
-              };
-            }
-
-            if (audioData) {
-              audioData.data.push(data.subarray(offset, start + 188));
-              audioData.size += start + 188 - offset;
-            }
-
-            break;
-
-          case id3Id:
-            if (stt) {
-              if (id3Data && (pes = parsePES(id3Data))) {
-                parseID3PES(pes);
-              }
-
-              id3Data = {
-                data: [],
-                size: 0
-              };
-            }
-
-            if (id3Data) {
-              id3Data.data.push(data.subarray(offset, start + 188));
-              id3Data.size += start + 188 - offset;
-            }
-
-            break;
-
-          case 0:
-            if (stt) {
-              offset += data[offset] + 1;
-            }
-
-            pmtId = this._pmtId = parsePAT(data, offset);
-            break;
-
-          case pmtId:
-            if (stt) {
-              offset += data[offset] + 1;
-            }
-
-            var parsedPIDs = parsePMT(data, offset, this.typeSupported.mpeg === true || this.typeSupported.mp3 === true, this.sampleAes != null); // only update track id if track PID found while parsing PMT
-            // this is to avoid resetting the PID to -1 in case
-            // track PID transiently disappears from the stream
-            // this could happen in case of transient missing audio samples for example
-            // NOTE this is only the PID of the track as found in TS,
-            // but we are not using this for MP4 track IDs.
-
-            avcId = parsedPIDs.avc;
-
-            if (avcId > 0) {
-              avcTrack.pid = avcId;
-            }
-
-            audioId = parsedPIDs.audio;
-
-            if (audioId > 0) {
-              audioTrack.pid = audioId;
-              audioTrack.isAAC = parsedPIDs.isAAC;
-            }
-
-            id3Id = parsedPIDs.id3;
-
-            if (id3Id > 0) {
-              id3Track.pid = id3Id;
-            }
-
-            if (unknownPIDs && !pmtParsed) {
-              logger["logger"].log('reparse from beginning');
-              unknownPIDs = false; // we set it to -188, the += 188 in the for loop will reset start to 0
-
-              start = syncOffset - 188;
-            }
-
-            pmtParsed = this.pmtParsed = true;
-            break;
-
-          case 17:
-          case 0x1fff:
-            break;
-
-          default:
-            unknownPIDs = true;
-            break;
-        }
-      } else {
-        this.observer.trigger(events["default"].ERROR, {
-          type: errors["ErrorTypes"].MEDIA_ERROR,
-          details: errors["ErrorDetails"].FRAG_PARSING_ERROR,
-          fatal: false,
-          reason: 'TS packet did not start with 0x47'
-        });
-      }
-    } // try to parse last PES packets
-
-
-    if (avcData && (pes = parsePES(avcData))) {
-      parseAVCPES(pes, true);
-      avcTrack.pesData = null;
-    } else {
-      // either avcData null or PES truncated, keep it for next frag parsing
-      avcTrack.pesData = avcData;
-    }
-
-    if (audioData && (pes = parsePES(audioData))) {
-      if (audioTrack.isAAC) {
-        parseAACPES(pes);
-      } else {
-        parseMPEGPES(pes);
-      }
-
-      audioTrack.pesData = null;
-    } else {
-      if (audioData && audioData.size) {
-        logger["logger"].log('last AAC PES packet truncated,might overlap between fragments');
-      } // either audioData null or PES truncated, keep it for next frag parsing
-
-
-      audioTrack.pesData = audioData;
-    }
-
-    if (id3Data && (pes = parsePES(id3Data))) {
-      parseID3PES(pes);
-      id3Track.pesData = null;
-    } else {
-      // either id3Data null or PES truncated, keep it for next frag parsing
-      id3Track.pesData = id3Data;
-    }
-
-    if (this.sampleAes == null) {
-      this.remuxer.remux(audioTrack, avcTrack, id3Track, this._txtTrack, timeOffset, contiguous, accurateTimeOffset);
-    } else {
-      this.decryptAndRemux(audioTrack, avcTrack, id3Track, this._txtTrack, timeOffset, contiguous, accurateTimeOffset);
-    }
-  };
-
-  _proto.decryptAndRemux = function decryptAndRemux(audioTrack, videoTrack, id3Track, textTrack, timeOffset, contiguous, accurateTimeOffset) {
-    if (audioTrack.samples && audioTrack.isAAC) {
-      var localthis = this;
-      this.sampleAes.decryptAacSamples(audioTrack.samples, 0, function () {
-        localthis.decryptAndRemuxAvc(audioTrack, videoTrack, id3Track, textTrack, timeOffset, contiguous, accurateTimeOffset);
-      });
-    } else {
-      this.decryptAndRemuxAvc(audioTrack, videoTrack, id3Track, textTrack, timeOffset, contiguous, accurateTimeOffset);
-    }
-  };
-
-  _proto.decryptAndRemuxAvc = function decryptAndRemuxAvc(audioTrack, videoTrack, id3Track, textTrack, timeOffset, contiguous, accurateTimeOffset) {
-    if (videoTrack.samples) {
-      var localthis = this;
-      this.sampleAes.decryptAvcSamples(videoTrack.samples, 0, 0, function () {
-        localthis.remuxer.remux(audioTrack, videoTrack, id3Track, textTrack, timeOffset, contiguous, accurateTimeOffset);
-      });
-    } else {
-      this.remuxer.remux(audioTrack, videoTrack, id3Track, textTrack, timeOffset, contiguous, accurateTimeOffset);
-    }
-  };
-
-  _proto.destroy = function destroy() {
-    this._initPTS = this._initDTS = undefined;
-    this._duration = 0;
-  };
-
-  _proto._parsePAT = function _parsePAT(data, offset) {
-    // skip the PSI header and parse the first PMT entry
-    return (data[offset + 10] & 0x1F) << 8 | data[offset + 11]; // logger.log('PMT PID:'  + this._pmtId);
-  };
-
-  _proto._trackUnknownPmt = function _trackUnknownPmt(type, logLevel, message) {
-    // Only log unknown and unsupported stream types once per append or stream (by resetting this.pmtUnknownTypes)
-    // For more information on elementary stream types see:
-    // https://en.wikipedia.org/wiki/Program-specific_information#Elementary_stream_types
-    var result = this.pmtUnknownTypes[type] || 0;
-
-    if (result === 0) {
-      this.pmtUnknownTypes[type] = 0;
-      logLevel.call(logger["logger"], message);
-    }
-
-    this.pmtUnknownTypes[type]++;
-    return result;
-  };
-
-  _proto._parsePMT = function _parsePMT(data, offset, mpegSupported, isSampleAes) {
-    var sectionLength,
-        tableEnd,
-        programInfoLength,
-        pid,
-        result = {
-      audio: -1,
-      avc: -1,
-      id3: -1,
-      isAAC: true
-    };
-    sectionLength = (data[offset + 1] & 0x0f) << 8 | data[offset + 2];
-    tableEnd = offset + 3 + sectionLength - 4; // to determine where the table is, we have to figure out how
-    // long the program info descriptors are
-
-    programInfoLength = (data[offset + 10] & 0x0f) << 8 | data[offset + 11]; // advance the offset to the first entry in the mapping table
-
-    offset += 12 + programInfoLength;
-
-    while (offset < tableEnd) {
-      pid = (data[offset + 1] & 0x1F) << 8 | data[offset + 2];
-
-      switch (data[offset]) {
-        case 0xcf:
-          // SAMPLE-AES AAC
-          if (!isSampleAes) {
-            this._trackUnknownPmt(data[offset], logger["logger"].warn, 'ADTS AAC with AES-128-CBC frame encryption found in unencrypted stream');
-
-            break;
-          }
-
-        /* falls through */
-        // ISO/IEC 13818-7 ADTS AAC (MPEG-2 lower bit-rate audio)
-
-        case 0x0f:
-          // logger.log('AAC PID:'  + pid);
-          if (result.audio === -1) {
-            result.audio = pid;
-          }
-
-          break;
-        // Packetized metadata (ID3)
-
-        case 0x15:
-          // logger.log('ID3 PID:'  + pid);
-          if (result.id3 === -1) {
-            result.id3 = pid;
-          }
-
-          break;
-
-        case 0xdb:
-          // SAMPLE-AES AVC
-          if (!isSampleAes) {
-            this._trackUnknownPmt(data[offset], logger["logger"].warn, 'H.264 with AES-128-CBC slice encryption found in unencrypted stream');
-
-            break;
-          }
-
-        /* falls through */
-        // ITU-T Rec. H.264 and ISO/IEC 14496-10 (lower bit-rate video)
-
-        case 0x1b:
-          // logger.log('AVC PID:'  + pid);
-          if (result.avc === -1) {
-            result.avc = pid;
-          }
-
-          break;
-        // ISO/IEC 11172-3 (MPEG-1 audio)
-        // or ISO/IEC 13818-3 (MPEG-2 halved sample rate audio)
-
-        case 0x03:
-        case 0x04:
-          // logger.log('MPEG PID:'  + pid);
-          if (!mpegSupported) {
-            this._trackUnknownPmt(data[offset], logger["logger"].warn, 'MPEG audio found, not supported in this browser');
-          } else if (result.audio === -1) {
-            result.audio = pid;
-            result.isAAC = false;
-          }
-
-          break;
-
-        case 0x24:
-          this._trackUnknownPmt(data[offset], logger["logger"].warn, 'Unsupported HEVC stream type found');
-
-          break;
-
-        default:
-          this._trackUnknownPmt(data[offset], logger["logger"].log, 'Unknown stream type:' + data[offset]);
-
-          break;
-      } // move to the next table entry
-      // skip past the elementary stream descriptors, if present
-
-
-      offset += ((data[offset + 3] & 0x0F) << 8 | data[offset + 4]) + 5;
-    }
-
-    return result;
-  };
-
-  _proto._parsePES = function _parsePES(stream) {
-    var i = 0,
-        frag,
-        pesFlags,
-        pesPrefix,
-        pesLen,
-        pesHdrLen,
-        pesData,
-        pesPts,
-        pesDts,
-        payloadStartOffset,
-        data = stream.data; // safety check
-
-    if (!stream || stream.size === 0) {
-      return null;
-    } // we might need up to 19 bytes to read PES header
-    // if first chunk of data is less than 19 bytes, let's merge it with following ones until we get 19 bytes
-    // usually only one merge is needed (and this is rare ...)
-
-
-    while (data[0].length < 19 && data.length > 1) {
-      var newData = new Uint8Array(data[0].length + data[1].length);
-      newData.set(data[0]);
-      newData.set(data[1], data[0].length);
-      data[0] = newData;
-      data.splice(1, 1);
-    } // retrieve PTS/DTS from first fragment
-
-
-    frag = data[0];
-    pesPrefix = (frag[0] << 16) + (frag[1] << 8) + frag[2];
-
-    if (pesPrefix === 1) {
-      pesLen = (frag[4] << 8) + frag[5]; // if PES parsed length is not zero and greater than total received length, stop parsing. PES might be truncated
-      // minus 6 : PES header size
-
-      if (pesLen && pesLen > stream.size - 6) {
-        return null;
-      }
-
-      pesFlags = frag[7];
-
-      if (pesFlags & 0xC0) {
-        /* PES header described here : http://dvd.sourceforge.net/dvdinfo/pes-hdr.html
-            as PTS / DTS is 33 bit we cannot use bitwise operator in JS,
-            as Bitwise operators treat their operands as a sequence of 32 bits */
-        pesPts = (frag[9] & 0x0E) * 536870912 + // 1 << 29
-        (frag[10] & 0xFF) * 4194304 + // 1 << 22
-        (frag[11] & 0xFE) * 16384 + // 1 << 14
-        (frag[12] & 0xFF) * 128 + // 1 << 7
-        (frag[13] & 0xFE) / 2;
-
-        if (pesFlags & 0x40) {
-          pesDts = (frag[14] & 0x0E) * 536870912 + // 1 << 29
-          (frag[15] & 0xFF) * 4194304 + // 1 << 22
-          (frag[16] & 0xFE) * 16384 + // 1 << 14
-          (frag[17] & 0xFF) * 128 + // 1 << 7
-          (frag[18] & 0xFE) / 2;
-
-          if (pesPts - pesDts > 60 * 90000) {
-            logger["logger"].warn(Math.round((pesPts - pesDts) / 90000) + "s delta between PTS and DTS, align them");
-            pesPts = pesDts;
-          }
-        } else {
-          pesDts = pesPts;
-        }
-      }
-
-      pesHdrLen = frag[8]; // 9 bytes : 6 bytes for PES header + 3 bytes for PES extension
-
-      payloadStartOffset = pesHdrLen + 9;
-
-      if (stream.size <= payloadStartOffset) {
-        return null;
-      }
-
-      stream.size -= payloadStartOffset; // reassemble PES packet
-
-      pesData = new Uint8Array(stream.size);
-
-      for (var j = 0, dataLen = data.length; j < dataLen; j++) {
-        frag = data[j];
-        var len = frag.byteLength;
-
-        if (payloadStartOffset) {
-          if (payloadStartOffset > len) {
-            // trim full frag if PES header bigger than frag
-            payloadStartOffset -= len;
-            continue;
-          } else {
-            // trim partial frag if PES header smaller than frag
-            frag = frag.subarray(payloadStartOffset);
-            len -= payloadStartOffset;
-            payloadStartOffset = 0;
-          }
-        }
-
-        pesData.set(frag, i);
-        i += len;
-      }
-
-      if (pesLen) {
-        // payload size : remove PES header + PES extension
-        pesLen -= pesHdrLen + 3;
-      }
-
-      return {
-        data: pesData,
-        pts: pesPts,
-        dts: pesDts,
-        len: pesLen
-      };
-    } else {
-      return null;
-    }
-  };
-
-  _proto.pushAccesUnit = function pushAccesUnit(avcSample, avcTrack) {
-    if (avcSample.units.length && avcSample.frame) {
-      var samples = avcTrack.samples;
-      var nbSamples = samples.length; // if sample does not have PTS/DTS, patch with last sample PTS/DTS
-
-      if (isNaN(avcSample.pts)) {
-        if (nbSamples) {
-          var lastSample = samples[nbSamples - 1];
-          avcSample.pts = lastSample.pts;
-          avcSample.dts = lastSample.dts;
-        } else {
-          // dropping samples, no timestamp found
-          avcTrack.dropped++;
-          return;
-        }
-      } // only push AVC sample if starting with a keyframe is not mandatory OR
-      //    if keyframe already found in this fragment OR
-      //       keyframe found in last fragment (track.sps) AND
-      //          samples already appended (we already found a keyframe in this fragment) OR fragment is contiguous
-
-
-      if (!this.config.forceKeyFrameOnDiscontinuity || avcSample.key === true || avcTrack.sps && (nbSamples || this.contiguous)) {
-        avcSample.id = nbSamples;
-        samples.push(avcSample);
-      } else {
-        // dropped samples, track it
-        avcTrack.dropped++;
-      }
-    }
-
-    if (avcSample.debug.length) {
-      logger["logger"].log(avcSample.pts + '/' + avcSample.dts + ':' + avcSample.debug);
-    }
-  };
-
-  _proto._parseAVCPES = function _parseAVCPES(pes, last) {
-    var _this = this;
-
-    // logger.log('parse new PES');
-    var track = this._avcTrack,
-        units = this._parseAVCNALu(pes.data),
-        debug = false,
-        expGolombDecoder,
-        avcSample = this.avcSample,
-        push,
-        spsfound = false,
-        i,
-        pushAccesUnit = this.pushAccesUnit.bind(this),
-        createAVCSample = function createAVCSample(key, pts, dts, debug) {
-      return {
-        key: key,
-        pts: pts,
-        dts: dts,
-        units: [],
-        debug: debug
-      };
-    }; // free pes.data to save up some memory
-
-
-    pes.data = null; // if new NAL units found and last sample still there, let's push ...
-    // this helps parsing streams with missing AUD (only do this if AUD never found)
-
-    if (avcSample && units.length && !track.audFound) {
-      pushAccesUnit(avcSample, track);
-      avcSample = this.avcSample = createAVCSample(false, pes.pts, pes.dts, '');
-    }
-
-    units.forEach(function (unit) {
-      switch (unit.type) {
-        // NDR
-        case 1:
-          push = true;
-
-          if (!avcSample) {
-            avcSample = _this.avcSample = createAVCSample(true, pes.pts, pes.dts, '');
-          }
-
-          if (debug) {
-            avcSample.debug += 'NDR ';
-          }
-
-          avcSample.frame = true;
-          var data = unit.data; // only check slice type to detect KF in case SPS found in same packet (any keyframe is preceded by SPS ...)
-
-          if (spsfound && data.length > 4) {
-            // retrieve slice type by parsing beginning of NAL unit (follow H264 spec, slice_header definition) to detect keyframe embedded in NDR
-            var sliceType = new exp_golomb(data).readSliceType(); // 2 : I slice, 4 : SI slice, 7 : I slice, 9: SI slice
-            // SI slice : A slice that is coded using intra prediction only and using quantisation of the prediction samples.
-            // An SI slice can be coded such that its decoded samples can be constructed identically to an SP slice.
-            // I slice: A slice that is not an SI slice that is decoded using intra prediction only.
-            // if (sliceType === 2 || sliceType === 7) {
-
-            if (sliceType === 2 || sliceType === 4 || sliceType === 7 || sliceType === 9) {
-              avcSample.key = true;
-            }
-          }
-
-          break;
-        // IDR
-
-        case 5:
-          push = true; // handle PES not starting with AUD
-
-          if (!avcSample) {
-            avcSample = _this.avcSample = createAVCSample(true, pes.pts, pes.dts, '');
-          }
-
-          if (debug) {
-            avcSample.debug += 'IDR ';
-          }
-
-          avcSample.key = true;
-          avcSample.frame = true;
-          break;
-        // SEI
-
-        case 6:
-          push = true;
-
-          if (debug && avcSample) {
-            avcSample.debug += 'SEI ';
-          }
-
-          expGolombDecoder = new exp_golomb(_this.discardEPB(unit.data)); // skip frameType
-
-          expGolombDecoder.readUByte();
-          var payloadType = 0;
-          var payloadSize = 0;
-          var endOfCaptions = false;
-          var b = 0;
-
-          while (!endOfCaptions && expGolombDecoder.bytesAvailable > 1) {
-            payloadType = 0;
-
-            do {
-              b = expGolombDecoder.readUByte();
-              payloadType += b;
-            } while (b === 0xFF); // Parse payload size.
-
-
-            payloadSize = 0;
-
-            do {
-              b = expGolombDecoder.readUByte();
-              payloadSize += b;
-            } while (b === 0xFF); // TODO: there can be more than one payload in an SEI packet...
-            // TODO: need to read type and size in a while loop to get them all
-
-
-            if (payloadType === 4 && expGolombDecoder.bytesAvailable !== 0) {
-              endOfCaptions = true;
-              var countryCode = expGolombDecoder.readUByte();
-
-              if (countryCode === 181) {
-                var providerCode = expGolombDecoder.readUShort();
-
-                if (providerCode === 49) {
-                  var userStructure = expGolombDecoder.readUInt();
-
-                  if (userStructure === 0x47413934) {
-                    var userDataType = expGolombDecoder.readUByte(); // Raw CEA-608 bytes wrapped in CEA-708 packet
-
-                    if (userDataType === 3) {
-                      var firstByte = expGolombDecoder.readUByte();
-                      var secondByte = expGolombDecoder.readUByte();
-                      var totalCCs = 31 & firstByte;
-                      var byteArray = [firstByte, secondByte];
-
-                      for (i = 0; i < totalCCs; i++) {
-                        // 3 bytes per CC
-                        byteArray.push(expGolombDecoder.readUByte());
-                        byteArray.push(expGolombDecoder.readUByte());
-                        byteArray.push(expGolombDecoder.readUByte());
-                      }
-
-                      _this._insertSampleInOrder(_this._txtTrack.samples, {
-                        type: 3,
-                        pts: pes.pts,
-                        bytes: byteArray
-                      });
-                    }
-                  }
-                }
-              }
-            } else if (payloadType === 5 && expGolombDecoder.bytesAvailable !== 0) {
-              endOfCaptions = true;
-
-              if (payloadSize > 16) {
-                var uuidStrArray = [];
-
-                for (i = 0; i < 16; i++) {
-                  uuidStrArray.push(expGolombDecoder.readUByte().toString(16));
-
-                  if (i === 3 || i === 5 || i === 7 || i === 9) {
-                    uuidStrArray.push('-');
-                  }
-                }
-
-                var length = payloadSize - 16;
-                var userDataPayloadBytes = new Uint8Array(length);
-
-                for (i = 0; i < length; i++) {
-                  userDataPayloadBytes[i] = expGolombDecoder.readUByte();
-                }
-
-                _this._insertSampleInOrder(_this._txtTrack.samples, {
-                  pts: pes.pts,
-                  payloadType: payloadType,
-                  uuid: uuidStrArray.join(''),
-                  userDataBytes: userDataPayloadBytes,
-                  userData: Object(id3["utf8ArrayToStr"])(userDataPayloadBytes.buffer)
-                });
-              }
-            } else if (payloadSize < expGolombDecoder.bytesAvailable) {
-              for (i = 0; i < payloadSize; i++) {
-                expGolombDecoder.readUByte();
-              }
-            }
-          }
-
-          break;
-        // SPS
-
-        case 7:
-          push = true;
-          spsfound = true;
-
-          if (debug && avcSample) {
-            avcSample.debug += 'SPS ';
-          }
-
-          if (!track.sps) {
-            expGolombDecoder = new exp_golomb(unit.data);
-            var config = expGolombDecoder.readSPS();
-            track.width = config.width;
-            track.height = config.height;
-            track.pixelRatio = config.pixelRatio;
-            track.sps = [unit.data];
-            track.duration = _this._duration;
-            var codecarray = unit.data.subarray(1, 4);
-            var codecstring = 'avc1.';
-
-            for (i = 0; i < 3; i++) {
-              var h = codecarray[i].toString(16);
-
-              if (h.length < 2) {
-                h = '0' + h;
-              }
-
-              codecstring += h;
-            }
-
-            track.codec = codecstring;
-          }
-
-          break;
-        // PPS
-
-        case 8:
-          push = true;
-
-          if (debug && avcSample) {
-            avcSample.debug += 'PPS ';
-          }
-
-          if (!track.pps) {
-            track.pps = [unit.data];
-          }
-
-          break;
-        // AUD
-
-        case 9:
-          push = false;
-          track.audFound = true;
-
-          if (avcSample) {
-            pushAccesUnit(avcSample, track);
-          }
-
-          avcSample = _this.avcSample = createAVCSample(false, pes.pts, pes.dts, debug ? 'AUD ' : '');
-          break;
-        // Filler Data
-
-        case 12:
-          push = false;
-          break;
-
-        default:
-          push = false;
-
-          if (avcSample) {
-            avcSample.debug += 'unknown NAL ' + unit.type + ' ';
-          }
-
-          break;
-      }
-
-      if (avcSample && push) {
-        var _units = avcSample.units;
-
-        _units.push(unit);
-      }
-    }); // if last PES packet, push samples
-
-    if (last && avcSample) {
-      pushAccesUnit(avcSample, track);
-      this.avcSample = null;
-    }
-  };
-
-  _proto._insertSampleInOrder = function _insertSampleInOrder(arr, data) {
-    var len = arr.length;
-
-    if (len > 0) {
-      if (data.pts >= arr[len - 1].pts) {
-        arr.push(data);
-      } else {
-        for (var pos = len - 1; pos >= 0; pos--) {
-          if (data.pts < arr[pos].pts) {
-            arr.splice(pos, 0, data);
-            break;
-          }
-        }
-      }
-    } else {
-      arr.push(data);
-    }
-  };
-
-  _proto._getLastNalUnit = function _getLastNalUnit() {
-    var avcSample = this.avcSample,
-        lastUnit; // try to fallback to previous sample if current one is empty
-
-    if (!avcSample || avcSample.units.length === 0) {
-      var track = this._avcTrack,
-          samples = track.samples;
-      avcSample = samples[samples.length - 1];
-    }
-
-    if (avcSample) {
-      var units = avcSample.units;
-      lastUnit = units[units.length - 1];
-    }
-
-    return lastUnit;
-  };
-
-  _proto._parseAVCNALu = function _parseAVCNALu(array) {
-    var i = 0,
-        len = array.byteLength,
-        value,
-        overflow,
-        track = this._avcTrack,
-        state = track.naluState || 0,
-        lastState = state;
-    var units = [],
-        unit,
-        unitType,
-        lastUnitStart = -1,
-        lastUnitType; // logger.log('PES:' + Hex.hexDump(array));
-
-    if (state === -1) {
-      // special use case where we found 3 or 4-byte start codes exactly at the end of previous PES packet
-      lastUnitStart = 0; // NALu type is value read from offset 0
-
-      lastUnitType = array[0] & 0x1f;
-      state = 0;
-      i = 1;
-    }
-
-    while (i < len) {
-      value = array[i++]; // optimization. state 0 and 1 are the predominant case. let's handle them outside of the switch/case
-
-      if (!state) {
-        state = value ? 0 : 1;
-        continue;
-      }
-
-      if (state === 1) {
-        state = value ? 0 : 2;
-        continue;
-      } // here we have state either equal to 2 or 3
-
-
-      if (!value) {
-        state = 3;
-      } else if (value === 1) {
-        if (lastUnitStart >= 0) {
-          unit = {
-            data: array.subarray(lastUnitStart, i - state - 1),
-            type: lastUnitType
-          }; // logger.log('pushing NALU, type/size:' + unit.type + '/' + unit.data.byteLength);
-
-          units.push(unit);
-        } else {
-          // lastUnitStart is undefined => this is the first start code found in this PES packet
-          // first check if start code delimiter is overlapping between 2 PES packets,
-          // ie it started in last packet (lastState not zero)
-          // and ended at the beginning of this PES packet (i <= 4 - lastState)
-          var lastUnit = this._getLastNalUnit();
-
-          if (lastUnit) {
-            if (lastState && i <= 4 - lastState) {
-              // start delimiter overlapping between PES packets
-              // strip start delimiter bytes from the end of last NAL unit
-              // check if lastUnit had a state different from zero
-              if (lastUnit.state) {
-                // strip last bytes
-                lastUnit.data = lastUnit.data.subarray(0, lastUnit.data.byteLength - lastState);
-              }
-            } // If NAL units are not starting right at the beginning of the PES packet, push preceding data into previous NAL unit.
-
-
-            overflow = i - state - 1;
-
-            if (overflow > 0) {
-              // logger.log('first NALU found with overflow:' + overflow);
-              var tmp = new Uint8Array(lastUnit.data.byteLength + overflow);
-              tmp.set(lastUnit.data, 0);
-              tmp.set(array.subarray(0, overflow), lastUnit.data.byteLength);
-              lastUnit.data = tmp;
-            }
-          }
-        } // check if we can read unit type
-
-
-        if (i < len) {
-          unitType = array[i] & 0x1f; // logger.log('find NALU @ offset:' + i + ',type:' + unitType);
-
-          lastUnitStart = i;
-          lastUnitType = unitType;
-          state = 0;
-        } else {
-          // not enough byte to read unit type. let's read it on next PES parsing
-          state = -1;
-        }
-      } else {
-        state = 0;
-      }
-    }
-
-    if (lastUnitStart >= 0 && state >= 0) {
-      unit = {
-        data: array.subarray(lastUnitStart, len),
-        type: lastUnitType,
-        state: state
-      };
-      units.push(unit); // logger.log('pushing NALU, type/size/state:' + unit.type + '/' + unit.data.byteLength + '/' + state);
-    } // no NALu found
-
-
-    if (units.length === 0) {
-      // append pes.data to previous NAL unit
-      var _lastUnit = this._getLastNalUnit();
-
-      if (_lastUnit) {
-        var _tmp = new Uint8Array(_lastUnit.data.byteLength + array.byteLength);
-
-        _tmp.set(_lastUnit.data, 0);
-
-        _tmp.set(array, _lastUnit.data.byteLength);
-
-        _lastUnit.data = _tmp;
-      }
-    }
-
-    track.naluState = state;
-    return units;
-  }
-  /**
-   * remove Emulation Prevention bytes from a RBSP
-   */
-  ;
-
-  _proto.discardEPB = function discardEPB(data) {
-    var length = data.byteLength,
-        EPBPositions = [],
-        i = 1,
-        newLength,
-        newData; // Find all `Emulation Prevention Bytes`
-
-    while (i < length - 2) {
-      if (data[i] === 0 && data[i + 1] === 0 && data[i + 2] === 0x03) {
-        EPBPositions.push(i + 2);
-        i += 2;
-      } else {
-        i++;
-      }
-    } // If no Emulation Prevention Bytes were found just return the original
-    // array
-
-
-    if (EPBPositions.length === 0) {
-      return data;
-    } // Create a new array to hold the NAL unit data
-
-
-    newLength = length - EPBPositions.length;
-    newData = new Uint8Array(newLength);
-    var sourceIndex = 0;
-
-    for (i = 0; i < newLength; sourceIndex++, i++) {
-      if (sourceIndex === EPBPositions[0]) {
-        // Skip this byte
-        sourceIndex++; // Remove this position index
-
-        EPBPositions.shift();
-      }
-
-      newData[i] = data[sourceIndex];
-    }
-
-    return newData;
-  };
-
-  _proto._parseAACPES = function _parseAACPES(pes) {
-    var track = this._audioTrack,
-        data = pes.data,
-        pts = pes.pts,
-        startOffset = 0,
-        aacOverFlow = this.aacOverFlow,
-        aacLastPTS = this.aacLastPTS,
-        frameDuration,
-        frameIndex,
-        offset,
-        stamp,
-        len;
-
-    if (aacOverFlow) {
-      var tmp = new Uint8Array(aacOverFlow.byteLength + data.byteLength);
-      tmp.set(aacOverFlow, 0);
-      tmp.set(data, aacOverFlow.byteLength); // logger.log(`AAC: append overflowing ${aacOverFlow.byteLength} bytes to beginning of new PES`);
-
-      data = tmp;
-    } // look for ADTS header (0xFFFx)
-
-
-    for (offset = startOffset, len = data.length; offset < len - 1; offset++) {
-      if (isHeader(data, offset)) {
-        break;
-      }
-    } // if ADTS header does not start straight from the beginning of the PES payload, raise an error
-
-
-    if (offset) {
-      var reason, fatal;
-
-      if (offset < len - 1) {
-        reason = "AAC PES did not start with ADTS header,offset:" + offset;
-        fatal = false;
-      } else {
-        reason = 'no ADTS header found in AAC PES';
-        fatal = true;
-      }
-
-      logger["logger"].warn("parsing error:" + reason);
-      this.observer.trigger(events["default"].ERROR, {
-        type: errors["ErrorTypes"].MEDIA_ERROR,
-        details: errors["ErrorDetails"].FRAG_PARSING_ERROR,
-        fatal: fatal,
-        reason: reason
-      });
-
-      if (fatal) {
-        return;
-      }
-    }
-
-    initTrackConfig(track, this.observer, data, offset, this.audioCodec);
-    frameIndex = 0;
-    frameDuration = getFrameDuration(track.samplerate); // if last AAC frame is overflowing, we should ensure timestamps are contiguous:
-    // first sample PTS should be equal to last sample PTS + frameDuration
-
-    if (aacOverFlow && aacLastPTS) {
-      var newPTS = aacLastPTS + frameDuration;
-
-      if (Math.abs(newPTS - pts) > 1) {
-        logger["logger"].log("AAC: align PTS for overlapping frames by " + Math.round((newPTS - pts) / 90));
-        pts = newPTS;
-      }
-    } // scan for aac samples
-
-
-    while (offset < len) {
-      if (isHeader(data, offset)) {
-        if (offset + 5 < len) {
-          var frame = appendFrame(track, data, offset, pts, frameIndex);
-
-          if (frame) {
-            offset += frame.length;
-            stamp = frame.sample.pts;
-            frameIndex++;
-            continue;
-          }
-        } // We are at an ADTS header, but do not have enough data for a frame
-        // Remaining data will be added to aacOverFlow
-
-
-        break;
-      } else {
-        // nothing found, keep looking
-        offset++;
-      }
-    }
-
-    if (offset < len) {
-      aacOverFlow = data.subarray(offset, len); // logger.log(`AAC: overflow detected:${len-offset}`);
-    } else {
-      aacOverFlow = null;
-    }
-
-    this.aacOverFlow = aacOverFlow;
-    this.aacLastPTS = stamp;
-  };
-
-  _proto._parseMPEGPES = function _parseMPEGPES(pes) {
-    var data = pes.data;
-    var length = data.length;
-    var frameIndex = 0;
-    var offset = 0;
-    var pts = pes.pts;
-
-    while (offset < length) {
-      if (mpegaudio.isHeader(data, offset)) {
-        var frame = mpegaudio.appendFrame(this._audioTrack, data, offset, pts, frameIndex);
-
-        if (frame) {
-          offset += frame.length;
-          frameIndex++;
-        } else {
-          // logger.log('Unable to parse Mpeg audio frame');
-          break;
-        }
-      } else {
-        // nothing found, keep looking
-        offset++;
-      }
-    }
-  };
-
-  _proto._parseID3PES = function _parseID3PES(pes) {
-    this._id3Track.samples.push(pes);
-  };
-
-  return TSDemuxer;
-}();
-
-/* harmony default export */ var tsdemuxer = (tsdemuxer_TSDemuxer);
-// CONCATENATED MODULE: ./src/demux/mp3demuxer.js
-/**
- * MP3 demuxer
- */
-
-
-
-
-var mp3demuxer_MP3Demuxer = /*#__PURE__*/function () {
-  function MP3Demuxer(observer, remuxer, config) {
-    this.observer = observer;
-    this.config = config;
-    this.remuxer = remuxer;
-  }
-
-  var _proto = MP3Demuxer.prototype;
-
-  _proto.resetInitSegment = function resetInitSegment(initSegment, audioCodec, videoCodec, duration) {
-    this._audioTrack = {
-      container: 'audio/mpeg',
-      type: 'audio',
-      id: -1,
-      sequenceNumber: 0,
-      isAAC: false,
-      samples: [],
-      len: 0,
-      manifestCodec: audioCodec,
-      duration: duration,
-      inputTimeScale: 90000
-    };
-  };
-
-  _proto.resetTimeStamp = function resetTimeStamp() {};
-
-  MP3Demuxer.probe = function probe(data) {
-    // check if data contains ID3 timestamp and MPEG sync word
-    var offset, length;
-    var id3Data = id3["default"].getID3Data(data, 0);
-
-    if (id3Data && id3["default"].getTimeStamp(id3Data) !== undefined) {
-      // Look for MPEG header | 1111 1111 | 111X XYZX | where X can be either 0 or 1 and Y or Z should be 1
-      // Layer bits (position 14 and 15) in header should be always different from 0 (Layer I or Layer II or Layer III)
-      // More info http://www.mp3-tech.org/programmer/frame_header.html
-      for (offset = id3Data.length, length = Math.min(data.length - 1, offset + 100); offset < length; offset++) {
-        if (mpegaudio.probe(data, offset)) {
-          logger["logger"].log('MPEG Audio sync word found !');
-          return true;
-        }
-      }
-    }
-
-    return false;
-  } // feed incoming data to the front of the parsing pipeline
-  ;
-
-  _proto.append = function append(data, timeOffset, contiguous, accurateTimeOffset) {
-    var id3Data = id3["default"].getID3Data(data, 0) || [];
-    var timestamp = id3["default"].getTimeStamp(id3Data);
-    var pts = timestamp !== undefined ? 90 * timestamp : timeOffset * 90000;
-    var offset = id3Data.length;
-    var length = data.length;
-    var frameIndex = 0,
-        stamp = 0;
-    var track = this._audioTrack;
-    var id3Samples = [{
-      pts: pts,
-      dts: pts,
-      data: id3Data
-    }];
-
-    while (offset < length) {
-      if (mpegaudio.isHeader(data, offset)) {
-        var frame = mpegaudio.appendFrame(track, data, offset, pts, frameIndex);
-
-        if (frame) {
-          offset += frame.length;
-          stamp = frame.sample.pts;
-          frameIndex++;
-        } else {
-          // logger.log('Unable to parse Mpeg audio frame');
-          break;
-        }
-      } else if (id3["default"].isHeader(data, offset)) {
-        id3Data = id3["default"].getID3Data(data, offset);
-        id3Samples.push({
-          pts: stamp,
-          dts: stamp,
-          data: id3Data
-        });
-        offset += id3Data.length;
-      } else {
-        // nothing found, keep looking
-        offset++;
-      }
-    }
-
-    this.remuxer.remux(track, {
-      samples: []
-    }, {
-      samples: id3Samples,
-      inputTimeScale: 90000
-    }, {
-      samples: []
-    }, timeOffset, contiguous, accurateTimeOffset);
-  };
-
-  _proto.destroy = function destroy() {};
-
-  return MP3Demuxer;
-}();
-
-/* harmony default export */ var mp3demuxer = (mp3demuxer_MP3Demuxer);
-// CONCATENATED MODULE: ./src/remux/aac-helper.js
-/**
- *  AAC helper
- */
-var AAC = /*#__PURE__*/function () {
-  function AAC() {}
-
-  AAC.getSilentFrame = function getSilentFrame(codec, channelCount) {
-    switch (codec) {
-      case 'mp4a.40.2':
-        if (channelCount === 1) {
-          return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x23, 0x80]);
-        } else if (channelCount === 2) {
-          return new Uint8Array([0x21, 0x00, 0x49, 0x90, 0x02, 0x19, 0x00, 0x23, 0x80]);
-        } else if (channelCount === 3) {
-          return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x8e]);
-        } else if (channelCount === 4) {
-          return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x80, 0x2c, 0x80, 0x08, 0x02, 0x38]);
-        } else if (channelCount === 5) {
-          return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x82, 0x30, 0x04, 0x99, 0x00, 0x21, 0x90, 0x02, 0x38]);
-        } else if (channelCount === 6) {
-          return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x82, 0x30, 0x04, 0x99, 0x00, 0x21, 0x90, 0x02, 0x00, 0xb2, 0x00, 0x20, 0x08, 0xe0]);
-        }
-
-        break;
-      // handle HE-AAC below (mp4a.40.5 / mp4a.40.29)
-
-      default:
-        if (channelCount === 1) {
-          // ffmpeg -y -f lavfi -i "aevalsrc=0:d=0.05" -c:a libfdk_aac -profile:a aac_he -b:a 4k output.aac && hexdump -v -e '16/1 "0x%x," "\n"' -v output.aac
-          return new Uint8Array([0x1, 0x40, 0x22, 0x80, 0xa3, 0x4e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0, 0x0, 0x1c, 0x6, 0xf1, 0xc1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5e]);
-        } else if (channelCount === 2) {
-          // ffmpeg -y -f lavfi -i "aevalsrc=0|0:d=0.05" -c:a libfdk_aac -profile:a aac_he_v2 -b:a 4k output.aac && hexdump -v -e '16/1 "0x%x," "\n"' -v output.aac
-          return new Uint8Array([0x1, 0x40, 0x22, 0x80, 0xa3, 0x5e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0, 0x0, 0x0, 0x95, 0x0, 0x6, 0xf1, 0xa1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5e]);
-        } else if (channelCount === 3) {
-          // ffmpeg -y -f lavfi -i "aevalsrc=0|0|0:d=0.05" -c:a libfdk_aac -profile:a aac_he_v2 -b:a 4k output.aac && hexdump -v -e '16/1 "0x%x," "\n"' -v output.aac
-          return new Uint8Array([0x1, 0x40, 0x22, 0x80, 0xa3, 0x5e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0, 0x0, 0x0, 0x95, 0x0, 0x6, 0xf1, 0xa1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5e]);
-        }
-
-        break;
-    }
-
-    return null;
-  };
-
-  return AAC;
-}();
-
-/* harmony default export */ var aac_helper = (AAC);
-// CONCATENATED MODULE: ./src/remux/mp4-generator.js
-/**
- * Generate MP4 Box
-*/
-var UINT32_MAX = Math.pow(2, 32) - 1;
-
-var MP4 = /*#__PURE__*/function () {
-  function MP4() {}
-
-  MP4.init = function init() {
-    MP4.types = {
-      avc1: [],
-      // codingname
-      avcC: [],
-      btrt: [],
-      dinf: [],
-      dref: [],
-      esds: [],
-      ftyp: [],
-      hdlr: [],
-      mdat: [],
-      mdhd: [],
-      mdia: [],
-      mfhd: [],
-      minf: [],
-      moof: [],
-      moov: [],
-      mp4a: [],
-      '.mp3': [],
-      mvex: [],
-      mvhd: [],
-      pasp: [],
-      sdtp: [],
-      stbl: [],
-      stco: [],
-      stsc: [],
-      stsd: [],
-      stsz: [],
-      stts: [],
-      tfdt: [],
-      tfhd: [],
-      traf: [],
-      trak: [],
-      trun: [],
-      trex: [],
-      tkhd: [],
-      vmhd: [],
-      smhd: []
-    };
-    var i;
-
-    for (i in MP4.types) {
-      if (MP4.types.hasOwnProperty(i)) {
-        MP4.types[i] = [i.charCodeAt(0), i.charCodeAt(1), i.charCodeAt(2), i.charCodeAt(3)];
-      }
-    }
-
-    var videoHdlr = new Uint8Array([0x00, // version 0
-    0x00, 0x00, 0x00, // flags
-    0x00, 0x00, 0x00, 0x00, // pre_defined
-    0x76, 0x69, 0x64, 0x65, // handler_type: 'vide'
-    0x00, 0x00, 0x00, 0x00, // reserved
-    0x00, 0x00, 0x00, 0x00, // reserved
-    0x00, 0x00, 0x00, 0x00, // reserved
-    0x56, 0x69, 0x64, 0x65, 0x6f, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x00 // name: 'VideoHandler'
-    ]);
-    var audioHdlr = new Uint8Array([0x00, // version 0
-    0x00, 0x00, 0x00, // flags
-    0x00, 0x00, 0x00, 0x00, // pre_defined
-    0x73, 0x6f, 0x75, 0x6e, // handler_type: 'soun'
-    0x00, 0x00, 0x00, 0x00, // reserved
-    0x00, 0x00, 0x00, 0x00, // reserved
-    0x00, 0x00, 0x00, 0x00, // reserved
-    0x53, 0x6f, 0x75, 0x6e, 0x64, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x00 // name: 'SoundHandler'
-    ]);
-    MP4.HDLR_TYPES = {
-      'video': videoHdlr,
-      'audio': audioHdlr
-    };
-    var dref = new Uint8Array([0x00, // version 0
-    0x00, 0x00, 0x00, // flags
-    0x00, 0x00, 0x00, 0x01, // entry_count
-    0x00, 0x00, 0x00, 0x0c, // entry_size
-    0x75, 0x72, 0x6c, 0x20, // 'url' type
-    0x00, // version 0
-    0x00, 0x00, 0x01 // entry_flags
-    ]);
-    var stco = new Uint8Array([0x00, // version
-    0x00, 0x00, 0x00, // flags
-    0x00, 0x00, 0x00, 0x00 // entry_count
-    ]);
-    MP4.STTS = MP4.STSC = MP4.STCO = stco;
-    MP4.STSZ = new Uint8Array([0x00, // version
-    0x00, 0x00, 0x00, // flags
-    0x00, 0x00, 0x00, 0x00, // sample_size
-    0x00, 0x00, 0x00, 0x00 // sample_count
-    ]);
-    MP4.VMHD = new Uint8Array([0x00, // version
-    0x00, 0x00, 0x01, // flags
-    0x00, 0x00, // graphicsmode
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // opcolor
-    ]);
-    MP4.SMHD = new Uint8Array([0x00, // version
-    0x00, 0x00, 0x00, // flags
-    0x00, 0x00, // balance
-    0x00, 0x00 // reserved
-    ]);
-    MP4.STSD = new Uint8Array([0x00, // version 0
-    0x00, 0x00, 0x00, // flags
-    0x00, 0x00, 0x00, 0x01]); // entry_count
-
-    var majorBrand = new Uint8Array([105, 115, 111, 109]); // isom
-
-    var avc1Brand = new Uint8Array([97, 118, 99, 49]); // avc1
-
-    var minorVersion = new Uint8Array([0, 0, 0, 1]);
-    MP4.FTYP = MP4.box(MP4.types.ftyp, majorBrand, minorVersion, majorBrand, avc1Brand);
-    MP4.DINF = MP4.box(MP4.types.dinf, MP4.box(MP4.types.dref, dref));
-  };
-
-  MP4.box = function box(type) {
-    var payload = Array.prototype.slice.call(arguments, 1),
-        size = 8,
-        i = payload.length,
-        len = i,
-        result; // calculate the total size we need to allocate
-
-    while (i--) {
-      size += payload[i].byteLength;
-    }
-
-    result = new Uint8Array(size);
-    result[0] = size >> 24 & 0xff;
-    result[1] = size >> 16 & 0xff;
-    result[2] = size >> 8 & 0xff;
-    result[3] = size & 0xff;
-    result.set(type, 4); // copy the payload into the result
-
-    for (i = 0, size = 8; i < len; i++) {
-      // copy payload[i] array @ offset size
-      result.set(payload[i], size);
-      size += payload[i].byteLength;
-    }
-
-    return result;
-  };
-
-  MP4.hdlr = function hdlr(type) {
-    return MP4.box(MP4.types.hdlr, MP4.HDLR_TYPES[type]);
-  };
-
-  MP4.mdat = function mdat(data) {
-    return MP4.box(MP4.types.mdat, data);
-  };
-
-  MP4.mdhd = function mdhd(timescale, duration) {
-    duration *= timescale;
-    var upperWordDuration = Math.floor(duration / (UINT32_MAX + 1));
-    var lowerWordDuration = Math.floor(duration % (UINT32_MAX + 1));
-    return MP4.box(MP4.types.mdhd, new Uint8Array([0x01, // version 1
-    0x00, 0x00, 0x00, // flags
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, // creation_time
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // modification_time
-    timescale >> 24 & 0xFF, timescale >> 16 & 0xFF, timescale >> 8 & 0xFF, timescale & 0xFF, // timescale
-    upperWordDuration >> 24, upperWordDuration >> 16 & 0xFF, upperWordDuration >> 8 & 0xFF, upperWordDuration & 0xFF, lowerWordDuration >> 24, lowerWordDuration >> 16 & 0xFF, lowerWordDuration >> 8 & 0xFF, lowerWordDuration & 0xFF, 0x55, 0xc4, // 'und' language (undetermined)
-    0x00, 0x00]));
-  };
-
-  MP4.mdia = function mdia(track) {
-    return MP4.box(MP4.types.mdia, MP4.mdhd(track.timescale, track.duration), MP4.hdlr(track.type), MP4.minf(track));
-  };
-
-  MP4.mfhd = function mfhd(sequenceNumber) {
-    return MP4.box(MP4.types.mfhd, new Uint8Array([0x00, 0x00, 0x00, 0x00, // flags
-    sequenceNumber >> 24, sequenceNumber >> 16 & 0xFF, sequenceNumber >> 8 & 0xFF, sequenceNumber & 0xFF // sequence_number
-    ]));
-  };
-
-  MP4.minf = function minf(track) {
-    if (track.type === 'audio') {
-      return MP4.box(MP4.types.minf, MP4.box(MP4.types.smhd, MP4.SMHD), MP4.DINF, MP4.stbl(track));
-    } else {
-      return MP4.box(MP4.types.minf, MP4.box(MP4.types.vmhd, MP4.VMHD), MP4.DINF, MP4.stbl(track));
-    }
-  };
-
-  MP4.moof = function moof(sn, baseMediaDecodeTime, track) {
-    return MP4.box(MP4.types.moof, MP4.mfhd(sn), MP4.traf(track, baseMediaDecodeTime));
-  }
-  /**
-  * @param tracks... (optional) {array} the tracks associated with this movie
-  */
-  ;
-
-  MP4.moov = function moov(tracks) {
-    var i = tracks.length,
-        boxes = [];
-
-    while (i--) {
-      boxes[i] = MP4.trak(tracks[i]);
-    }
-
-    return MP4.box.apply(null, [MP4.types.moov, MP4.mvhd(tracks[0].timescale, tracks[0].duration)].concat(boxes).concat(MP4.mvex(tracks)));
-  };
-
-  MP4.mvex = function mvex(tracks) {
-    var i = tracks.length,
-        boxes = [];
-
-    while (i--) {
-      boxes[i] = MP4.trex(tracks[i]);
-    }
-
-    return MP4.box.apply(null, [MP4.types.mvex].concat(boxes));
-  };
-
-  MP4.mvhd = function mvhd(timescale, duration) {
-    duration *= timescale;
-    var upperWordDuration = Math.floor(duration / (UINT32_MAX + 1));
-    var lowerWordDuration = Math.floor(duration % (UINT32_MAX + 1));
-    var bytes = new Uint8Array([0x01, // version 1
-    0x00, 0x00, 0x00, // flags
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, // creation_time
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // modification_time
-    timescale >> 24 & 0xFF, timescale >> 16 & 0xFF, timescale >> 8 & 0xFF, timescale & 0xFF, // timescale
-    upperWordDuration >> 24, upperWordDuration >> 16 & 0xFF, upperWordDuration >> 8 & 0xFF, upperWordDuration & 0xFF, lowerWordDuration >> 24, lowerWordDuration >> 16 & 0xFF, lowerWordDuration >> 8 & 0xFF, lowerWordDuration & 0xFF, 0x00, 0x01, 0x00, 0x00, // 1.0 rate
-    0x01, 0x00, // 1.0 volume
-    0x00, 0x00, // reserved
-    0x00, 0x00, 0x00, 0x00, // reserved
-    0x00, 0x00, 0x00, 0x00, // reserved
-    0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, // transformation: unity matrix
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // pre_defined
-    0xff, 0xff, 0xff, 0xff // next_track_ID
-    ]);
-    return MP4.box(MP4.types.mvhd, bytes);
-  };
-
-  MP4.sdtp = function sdtp(track) {
-    var samples = track.samples || [],
-        bytes = new Uint8Array(4 + samples.length),
-        flags,
-        i; // leave the full box header (4 bytes) all zero
-    // write the sample table
-
-    for (i = 0; i < samples.length; i++) {
-      flags = samples[i].flags;
-      bytes[i + 4] = flags.dependsOn << 4 | flags.isDependedOn << 2 | flags.hasRedundancy;
-    }
-
-    return MP4.box(MP4.types.sdtp, bytes);
-  };
-
-  MP4.stbl = function stbl(track) {
-    return MP4.box(MP4.types.stbl, MP4.stsd(track), MP4.box(MP4.types.stts, MP4.STTS), MP4.box(MP4.types.stsc, MP4.STSC), MP4.box(MP4.types.stsz, MP4.STSZ), MP4.box(MP4.types.stco, MP4.STCO));
-  };
-
-  MP4.avc1 = function avc1(track) {
-    var sps = [],
-        pps = [],
-        i,
-        data,
-        len; // assemble the SPSs
-
-    for (i = 0; i < track.sps.length; i++) {
-      data = track.sps[i];
-      len = data.byteLength;
-      sps.push(len >>> 8 & 0xFF);
-      sps.push(len & 0xFF); // SPS
-
-      sps = sps.concat(Array.prototype.slice.call(data));
-    } // assemble the PPSs
-
-
-    for (i = 0; i < track.pps.length; i++) {
-      data = track.pps[i];
-      len = data.byteLength;
-      pps.push(len >>> 8 & 0xFF);
-      pps.push(len & 0xFF);
-      pps = pps.concat(Array.prototype.slice.call(data));
-    }
-
-    var avcc = MP4.box(MP4.types.avcC, new Uint8Array([0x01, // version
-    sps[3], // profile
-    sps[4], // profile compat
-    sps[5], // level
-    0xfc | 3, // lengthSizeMinusOne, hard-coded to 4 bytes
-    0xE0 | track.sps.length // 3bit reserved (111) + numOfSequenceParameterSets
-    ].concat(sps).concat([track.pps.length // numOfPictureParameterSets
-    ]).concat(pps))),
-        // "PPS"
-    width = track.width,
-        height = track.height,
-        hSpacing = track.pixelRatio[0],
-        vSpacing = track.pixelRatio[1];
-    return MP4.box(MP4.types.avc1, new Uint8Array([0x00, 0x00, 0x00, // reserved
-    0x00, 0x00, 0x00, // reserved
-    0x00, 0x01, // data_reference_index
-    0x00, 0x00, // pre_defined
-    0x00, 0x00, // reserved
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // pre_defined
-    width >> 8 & 0xFF, width & 0xff, // width
-    height >> 8 & 0xFF, height & 0xff, // height
-    0x00, 0x48, 0x00, 0x00, // horizresolution
-    0x00, 0x48, 0x00, 0x00, // vertresolution
-    0x00, 0x00, 0x00, 0x00, // reserved
-    0x00, 0x01, // frame_count
-    0x12, 0x64, 0x61, 0x69, 0x6C, // dailymotion/hls.js
-    0x79, 0x6D, 0x6F, 0x74, 0x69, 0x6F, 0x6E, 0x2F, 0x68, 0x6C, 0x73, 0x2E, 0x6A, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // compressorname
-    0x00, 0x18, // depth = 24
-    0x11, 0x11]), // pre_defined = -1
-    avcc, MP4.box(MP4.types.btrt, new Uint8Array([0x00, 0x1c, 0x9c, 0x80, // bufferSizeDB
-    0x00, 0x2d, 0xc6, 0xc0, // maxBitrate
-    0x00, 0x2d, 0xc6, 0xc0])), // avgBitrate
-    MP4.box(MP4.types.pasp, new Uint8Array([hSpacing >> 24, // hSpacing
-    hSpacing >> 16 & 0xFF, hSpacing >> 8 & 0xFF, hSpacing & 0xFF, vSpacing >> 24, // vSpacing
-    vSpacing >> 16 & 0xFF, vSpacing >> 8 & 0xFF, vSpacing & 0xFF])));
-  };
-
-  MP4.esds = function esds(track) {
-    var configlen = track.config.length;
-    return new Uint8Array([0x00, // version 0
-    0x00, 0x00, 0x00, // flags
-    0x03, // descriptor_type
-    0x17 + configlen, // length
-    0x00, 0x01, // es_id
-    0x00, // stream_priority
-    0x04, // descriptor_type
-    0x0f + configlen, // length
-    0x40, // codec : mpeg4_audio
-    0x15, // stream_type
-    0x00, 0x00, 0x00, // buffer_size
-    0x00, 0x00, 0x00, 0x00, // maxBitrate
-    0x00, 0x00, 0x00, 0x00, // avgBitrate
-    0x05 // descriptor_type
-    ].concat([configlen]).concat(track.config).concat([0x06, 0x01, 0x02])); // GASpecificConfig)); // length + audio config descriptor
-  };
-
-  MP4.mp4a = function mp4a(track) {
-    var samplerate = track.samplerate;
-    return MP4.box(MP4.types.mp4a, new Uint8Array([0x00, 0x00, 0x00, // reserved
-    0x00, 0x00, 0x00, // reserved
-    0x00, 0x01, // data_reference_index
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // reserved
-    0x00, track.channelCount, // channelcount
-    0x00, 0x10, // sampleSize:16bits
-    0x00, 0x00, 0x00, 0x00, // reserved2
-    samplerate >> 8 & 0xFF, samplerate & 0xff, //
-    0x00, 0x00]), MP4.box(MP4.types.esds, MP4.esds(track)));
-  };
-
-  MP4.mp3 = function mp3(track) {
-    var samplerate = track.samplerate;
-    return MP4.box(MP4.types['.mp3'], new Uint8Array([0x00, 0x00, 0x00, // reserved
-    0x00, 0x00, 0x00, // reserved
-    0x00, 0x01, // data_reference_index
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // reserved
-    0x00, track.channelCount, // channelcount
-    0x00, 0x10, // sampleSize:16bits
-    0x00, 0x00, 0x00, 0x00, // reserved2
-    samplerate >> 8 & 0xFF, samplerate & 0xff, //
-    0x00, 0x00]));
-  };
-
-  MP4.stsd = function stsd(track) {
-    if (track.type === 'audio') {
-      if (!track.isAAC && track.codec === 'mp3') {
-        return MP4.box(MP4.types.stsd, MP4.STSD, MP4.mp3(track));
-      }
-
-      return MP4.box(MP4.types.stsd, MP4.STSD, MP4.mp4a(track));
-    } else {
-      return MP4.box(MP4.types.stsd, MP4.STSD, MP4.avc1(track));
-    }
-  };
-
-  MP4.tkhd = function tkhd(track) {
-    var id = track.id,
-        duration = track.duration * track.timescale,
-        width = track.width,
-        height = track.height,
-        upperWordDuration = Math.floor(duration / (UINT32_MAX + 1)),
-        lowerWordDuration = Math.floor(duration % (UINT32_MAX + 1));
-    return MP4.box(MP4.types.tkhd, new Uint8Array([0x01, // version 1
-    0x00, 0x00, 0x07, // flags
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, // creation_time
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // modification_time
-    id >> 24 & 0xFF, id >> 16 & 0xFF, id >> 8 & 0xFF, id & 0xFF, // track_ID
-    0x00, 0x00, 0x00, 0x00, // reserved
-    upperWordDuration >> 24, upperWordDuration >> 16 & 0xFF, upperWordDuration >> 8 & 0xFF, upperWordDuration & 0xFF, lowerWordDuration >> 24, lowerWordDuration >> 16 & 0xFF, lowerWordDuration >> 8 & 0xFF, lowerWordDuration & 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // reserved
-    0x00, 0x00, // layer
-    0x00, 0x00, // alternate_group
-    0x00, 0x00, // non-audio track volume
-    0x00, 0x00, // reserved
-    0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, // transformation: unity matrix
-    width >> 8 & 0xFF, width & 0xFF, 0x00, 0x00, // width
-    height >> 8 & 0xFF, height & 0xFF, 0x00, 0x00 // height
-    ]));
-  };
-
-  MP4.traf = function traf(track, baseMediaDecodeTime) {
-    var sampleDependencyTable = MP4.sdtp(track),
-        id = track.id,
-        upperWordBaseMediaDecodeTime = Math.floor(baseMediaDecodeTime / (UINT32_MAX + 1)),
-        lowerWordBaseMediaDecodeTime = Math.floor(baseMediaDecodeTime % (UINT32_MAX + 1));
-    return MP4.box(MP4.types.traf, MP4.box(MP4.types.tfhd, new Uint8Array([0x00, // version 0
-    0x00, 0x00, 0x00, // flags
-    id >> 24, id >> 16 & 0XFF, id >> 8 & 0XFF, id & 0xFF // track_ID
-    ])), MP4.box(MP4.types.tfdt, new Uint8Array([0x01, // version 1
-    0x00, 0x00, 0x00, // flags
-    upperWordBaseMediaDecodeTime >> 24, upperWordBaseMediaDecodeTime >> 16 & 0XFF, upperWordBaseMediaDecodeTime >> 8 & 0XFF, upperWordBaseMediaDecodeTime & 0xFF, lowerWordBaseMediaDecodeTime >> 24, lowerWordBaseMediaDecodeTime >> 16 & 0XFF, lowerWordBaseMediaDecodeTime >> 8 & 0XFF, lowerWordBaseMediaDecodeTime & 0xFF])), MP4.trun(track, sampleDependencyTable.length + 16 + // tfhd
-    20 + // tfdt
-    8 + // traf header
-    16 + // mfhd
-    8 + // moof header
-    8), // mdat header
-    sampleDependencyTable);
-  }
-  /**
-   * Generate a track box.
-   * @param track {object} a track definition
-   * @return {Uint8Array} the track box
-   */
-  ;
-
-  MP4.trak = function trak(track) {
-    track.duration = track.duration || 0xffffffff;
-    return MP4.box(MP4.types.trak, MP4.tkhd(track), MP4.mdia(track));
-  };
-
-  MP4.trex = function trex(track) {
-    var id = track.id;
-    return MP4.box(MP4.types.trex, new Uint8Array([0x00, // version 0
-    0x00, 0x00, 0x00, // flags
-    id >> 24, id >> 16 & 0XFF, id >> 8 & 0XFF, id & 0xFF, // track_ID
-    0x00, 0x00, 0x00, 0x01, // default_sample_description_index
-    0x00, 0x00, 0x00, 0x00, // default_sample_duration
-    0x00, 0x00, 0x00, 0x00, // default_sample_size
-    0x00, 0x01, 0x00, 0x01 // default_sample_flags
-    ]));
-  };
-
-  MP4.trun = function trun(track, offset) {
-    var samples = track.samples || [],
-        len = samples.length,
-        arraylen = 12 + 16 * len,
-        array = new Uint8Array(arraylen),
-        i,
-        sample,
-        duration,
-        size,
-        flags,
-        cts;
-    offset += 8 + arraylen;
-    array.set([0x00, // version 0
-    0x00, 0x0f, 0x01, // flags
-    len >>> 24 & 0xFF, len >>> 16 & 0xFF, len >>> 8 & 0xFF, len & 0xFF, // sample_count
-    offset >>> 24 & 0xFF, offset >>> 16 & 0xFF, offset >>> 8 & 0xFF, offset & 0xFF // data_offset
-    ], 0);
-
-    for (i = 0; i < len; i++) {
-      sample = samples[i];
-      duration = sample.duration;
-      size = sample.size;
-      flags = sample.flags;
-      cts = sample.cts;
-      array.set([duration >>> 24 & 0xFF, duration >>> 16 & 0xFF, duration >>> 8 & 0xFF, duration & 0xFF, // sample_duration
-      size >>> 24 & 0xFF, size >>> 16 & 0xFF, size >>> 8 & 0xFF, size & 0xFF, // sample_size
-      flags.isLeading << 2 | flags.dependsOn, flags.isDependedOn << 6 | flags.hasRedundancy << 4 | flags.paddingValue << 1 | flags.isNonSync, flags.degradPrio & 0xF0 << 8, flags.degradPrio & 0x0F, // sample_flags
-      cts >>> 24 & 0xFF, cts >>> 16 & 0xFF, cts >>> 8 & 0xFF, cts & 0xFF // sample_composition_time_offset
-      ], 12 + 16 * i);
-    }
-
-    return MP4.box(MP4.types.trun, array);
-  };
-
-  MP4.initSegment = function initSegment(tracks) {
-    if (!MP4.types) {
-      MP4.init();
-    }
-
-    var movie = MP4.moov(tracks),
-        result;
-    result = new Uint8Array(MP4.FTYP.byteLength + movie.byteLength);
-    result.set(MP4.FTYP);
-    result.set(movie, MP4.FTYP.byteLength);
-    return result;
-  };
-
-  return MP4;
-}();
-
-/* harmony default export */ var mp4_generator = (MP4);
-// EXTERNAL MODULE: ./src/utils/timescale-conversion.ts
-var timescale_conversion = __webpack_require__("./src/utils/timescale-conversion.ts");
-
-// CONCATENATED MODULE: ./src/remux/mp4-remuxer.js
-/**
- * fMP4 remuxer
-*/
-
-
-
-
-
-
-var MAX_SILENT_FRAME_DURATION_90KHZ = Object(timescale_conversion["toMpegTsClockFromTimescale"])(10);
-var PTS_DTS_SHIFT_TOLERANCE_90KHZ = Object(timescale_conversion["toMpegTsClockFromTimescale"])(0.2);
-var chromeVersion = null;
-var safariWebkitVersion = null;
-var requiresPositiveDts = false;
-
-var mp4_remuxer_MP4Remuxer = /*#__PURE__*/function () {
-  function MP4Remuxer(observer, config, typeSupported, vendor) {
-    this.observer = observer;
-    this.config = config;
-    this.typeSupported = typeSupported;
-    this.ISGenerated = false;
-
-    if (chromeVersion === null) {
-      var result = navigator.userAgent.match(/Chrome\/(\d+)/i);
-      chromeVersion = result ? parseInt(result[1]) : 0;
-    }
-
-    if (safariWebkitVersion === null) {
-      var _result = navigator.userAgent.match(/Safari\/(\d+)/i);
-
-      safariWebkitVersion = _result ? parseInt(_result[1]) : 0;
-    }
-
-    requiresPositiveDts = chromeVersion && chromeVersion < 75 || safariWebkitVersion && safariWebkitVersion < 600;
-  }
-
-  var _proto = MP4Remuxer.prototype;
-
-  _proto.destroy = function destroy() {};
-
-  _proto.resetTimeStamp = function resetTimeStamp(defaultTimeStamp) {
-    this._initPTS = this._initDTS = defaultTimeStamp;
-  };
-
-  _proto.resetInitSegment = function resetInitSegment() {
-    this.ISGenerated = false;
-  };
-
-  _proto.getVideoStartPts = function getVideoStartPts(videoSamples) {
-    var rolloverDetected = false;
-    var startPTS = videoSamples.reduce(function (minPTS, sample) {
-      var delta = sample.pts - minPTS;
-
-      if (delta < -4294967296) {
-        // 2^32, see PTSNormalize for reasoning, but we're hitting a rollover here, and we don't want that to impact the timeOffset calculation
-        rolloverDetected = true;
-        return PTSNormalize(minPTS, sample.pts);
-      } else if (delta > 0) {
-        return minPTS;
-      } else {
-        return sample.pts;
-      }
-    }, videoSamples[0].pts);
-
-    if (rolloverDetected) {
-      logger["logger"].debug('PTS rollover detected');
-    }
-
-    return startPTS;
-  };
-
-  _proto.remux = function remux(audioTrack, videoTrack, id3Track, textTrack, timeOffset, contiguous, accurateTimeOffset) {
-    // generate Init Segment if needed
-    if (!this.ISGenerated) {
-      this.generateIS(audioTrack, videoTrack, timeOffset);
-    }
-
-    if (this.ISGenerated) {
-      var nbAudioSamples = audioTrack.samples.length;
-      var nbVideoSamples = videoTrack.samples.length;
-      var audioTimeOffset = timeOffset;
-      var videoTimeOffset = timeOffset;
-
-      if (nbAudioSamples && nbVideoSamples) {
-        // timeOffset is expected to be the offset of the first timestamp of this fragment (first DTS)
-        // if first audio DTS is not aligned with first video DTS then we need to take that into account
-        // when providing timeOffset to remuxAudio / remuxVideo. if we don't do that, there might be a permanent / small
-        // drift between audio and video streams
-        var startPTS = this.getVideoStartPts(videoTrack.samples);
-        var tsDelta = PTSNormalize(audioTrack.samples[0].pts, startPTS) - startPTS;
-        var audiovideoTimestampDelta = tsDelta / videoTrack.inputTimeScale;
-        audioTimeOffset += Math.max(0, audiovideoTimestampDelta);
-        videoTimeOffset += Math.max(0, -audiovideoTimestampDelta);
-      } // Purposefully remuxing audio before video, so that remuxVideo can use nextAudioPts, which is
-      // calculated in remuxAudio.
-      // logger.log('nb AAC samples:' + audioTrack.samples.length);
-
-
-      if (nbAudioSamples) {
-        // if initSegment was generated without video samples, regenerate it again
-        if (!audioTrack.timescale) {
-          logger["logger"].warn('regenerate InitSegment as audio detected');
-          this.generateIS(audioTrack, videoTrack, timeOffset);
-        }
-
-        var audioData = this.remuxAudio(audioTrack, audioTimeOffset, contiguous, accurateTimeOffset, videoTimeOffset); // logger.log('nb AVC samples:' + videoTrack.samples.length);
-
-        if (nbVideoSamples) {
-          var audioTrackLength;
-
-          if (audioData) {
-            audioTrackLength = audioData.endPTS - audioData.startPTS;
-          } // if initSegment was generated without video samples, regenerate it again
-
-
-          if (!videoTrack.timescale) {
-            logger["logger"].warn('regenerate InitSegment as video detected');
-            this.generateIS(audioTrack, videoTrack, timeOffset);
-          }
-
-          this.remuxVideo(videoTrack, videoTimeOffset, contiguous, audioTrackLength);
-        }
-      } else {
-        // logger.log('nb AVC samples:' + videoTrack.samples.length);
-        if (nbVideoSamples) {
-          var videoData = this.remuxVideo(videoTrack, videoTimeOffset, contiguous, 0);
-
-          if (videoData && audioTrack.codec) {
-            this.remuxEmptyAudio(audioTrack, audioTimeOffset, contiguous, videoData);
-          }
-        }
-      }
-    } // logger.log('nb ID3 samples:' + audioTrack.samples.length);
-
-
-    if (id3Track.samples.length) {
-      this.remuxID3(id3Track, timeOffset);
-    } // logger.log('nb ID3 samples:' + audioTrack.samples.length);
-
-
-    if (textTrack.samples.length) {
-      this.remuxText(textTrack, timeOffset);
-    } // notify end of parsing
-
-
-    this.observer.trigger(events["default"].FRAG_PARSED);
-  };
-
-  _proto.generateIS = function generateIS(audioTrack, videoTrack, timeOffset) {
-    var observer = this.observer,
-        audioSamples = audioTrack.samples,
-        videoSamples = videoTrack.samples,
-        typeSupported = this.typeSupported,
-        container = 'audio/mp4',
-        tracks = {},
-        data = {
-      tracks: tracks
-    },
-        computePTSDTS = this._initPTS === undefined,
-        initPTS,
-        initDTS;
-
-    if (computePTSDTS) {
-      initPTS = initDTS = Infinity;
-    }
-
-    if (audioTrack.config && audioSamples.length) {
-      // let's use audio sampling rate as MP4 time scale.
-      // rationale is that there is a integer nb of audio frames per audio sample (1024 for AAC)
-      // using audio sampling rate here helps having an integer MP4 frame duration
-      // this avoids potential rounding issue and AV sync issue
-      audioTrack.timescale = audioTrack.samplerate;
-      logger["logger"].log("audio sampling rate : " + audioTrack.samplerate);
-
-      if (!audioTrack.isAAC) {
-        if (typeSupported.mpeg) {
-          // Chrome and Safari
-          container = 'audio/mpeg';
-          audioTrack.codec = '';
-        } else if (typeSupported.mp3) {
-          // Firefox
-          audioTrack.codec = 'mp3';
-        }
-      }
-
-      tracks.audio = {
-        container: container,
-        codec: audioTrack.codec,
-        initSegment: !audioTrack.isAAC && typeSupported.mpeg ? new Uint8Array() : mp4_generator.initSegment([audioTrack]),
-        metadata: {
-          channelCount: audioTrack.channelCount
-        }
-      };
-
-      if (computePTSDTS) {
-        // remember first PTS of this demuxing context. for audio, PTS = DTS
-        initPTS = initDTS = audioSamples[0].pts - Math.round(audioTrack.inputTimeScale * timeOffset);
-      }
-    }
-
-    if (videoTrack.sps && videoTrack.pps && videoSamples.length) {
-      // let's use input time scale as MP4 video timescale
-      // we use input time scale straight away to avoid rounding issues on frame duration / cts computation
-      var inputTimeScale = videoTrack.inputTimeScale;
-      videoTrack.timescale = inputTimeScale;
-      tracks.video = {
-        container: 'video/mp4',
-        codec: videoTrack.codec,
-        initSegment: mp4_generator.initSegment([videoTrack]),
-        metadata: {
-          width: videoTrack.width,
-          height: videoTrack.height
-        }
-      };
-
-      if (computePTSDTS) {
-        var startPTS = this.getVideoStartPts(videoSamples);
-        var startOffset = Math.round(inputTimeScale * timeOffset);
-        initDTS = Math.min(initDTS, PTSNormalize(videoSamples[0].dts, startPTS) - startOffset);
-        initPTS = Math.min(initPTS, startPTS - startOffset);
-        this.observer.trigger(events["default"].INIT_PTS_FOUND, {
-          initPTS: initPTS,
-          timescale: inputTimeScale
-        });
-      }
-    } else if (computePTSDTS && tracks.audio) {
-      // initPTS found for audio-only stream with main and alt audio
-      this.observer.trigger(events["default"].INIT_PTS_FOUND, {
-        initPTS: initPTS,
-        timescale: audioTrack.inputTimeScale
-      });
-    }
-
-    if (Object.keys(tracks).length) {
-      observer.trigger(events["default"].FRAG_PARSING_INIT_SEGMENT, data);
-      this.ISGenerated = true;
-
-      if (computePTSDTS) {
-        this._initPTS = initPTS;
-        this._initDTS = initDTS;
-      }
-    } else {
-      observer.trigger(events["default"].ERROR, {
-        type: errors["ErrorTypes"].MEDIA_ERROR,
-        details: errors["ErrorDetails"].FRAG_PARSING_ERROR,
-        fatal: false,
-        reason: 'no audio/video samples found'
-      });
-    }
-  };
-
-  _proto.remuxVideo = function remuxVideo(track, timeOffset, contiguous, audioTrackLength) {
-    var timeScale = track.timescale;
-    var inputSamples = track.samples;
-    var outputSamples = [];
-    var nbSamples = inputSamples.length;
-    var initPTS = this._initPTS;
-    var offset = 8;
-    var mp4SampleDuration;
-    var mdat;
-    var moof;
-    var firstDTS;
-    var lastDTS;
-    var minPTS = Number.POSITIVE_INFINITY;
-    var maxPTS = Number.NEGATIVE_INFINITY;
-    var ptsDtsShift = 0;
-    var sortSamples = false; // if parsed fragment is contiguous with last one, let's use last DTS value as reference
-
-    var nextAvcDts = this.nextAvcDts;
-
-    if (nbSamples === 0) {
-      return;
-    }
-
-    if (!contiguous) {
-      var pts = timeOffset * timeScale;
-      var cts = inputSamples[0].pts - PTSNormalize(inputSamples[0].dts, inputSamples[0].pts); // if not contiguous, let's use target timeOffset
-
-      nextAvcDts = pts - cts;
-    } // PTS is coded on 33bits, and can loop from -2^32 to 2^32
-    // PTSNormalize will make PTS/DTS value monotonic, we use last known DTS value as reference value
-
-
-    for (var i = 0; i < nbSamples; i++) {
-      var sample = inputSamples[i];
-      sample.pts = PTSNormalize(sample.pts - initPTS, nextAvcDts);
-      sample.dts = PTSNormalize(sample.dts - initPTS, nextAvcDts);
-
-      if (sample.dts > sample.pts) {
-        ptsDtsShift = Math.max(Math.min(ptsDtsShift, sample.pts - sample.dts), -1 * PTS_DTS_SHIFT_TOLERANCE_90KHZ);
-      }
-
-      if (sample.dts < inputSamples[i > 0 ? i - 1 : i].dts) {
-        sortSamples = true;
-      }
-    } // sort video samples by DTS then PTS then demux id order
-
-
-    if (sortSamples) {
-      inputSamples.sort(function (a, b) {
-        var deltadts = a.dts - b.dts;
-        var deltapts = a.pts - b.pts;
-        return deltadts || deltapts || a.id - b.id;
-      });
-    } // Get first/last DTS
-
-
-    firstDTS = inputSamples[0].dts;
-    lastDTS = inputSamples[nbSamples - 1].dts; // on Safari let's signal the same sample duration for all samples
-    // sample duration (as expected by trun MP4 boxes), should be the delta between sample DTS
-    // set this constant duration as being the avg delta between consecutive DTS.
-
-    var averageSampleDuration = Math.round((lastDTS - firstDTS) / (nbSamples - 1)); // handle broken streams with PTS < DTS, tolerance up 0.2 seconds
-
-    if (ptsDtsShift < 0) {
-      if (ptsDtsShift < averageSampleDuration * -2) {
-        // Fix for "CNN special report, with CC" in test-streams (including Safari browser)
-        // With large PTS < DTS errors such as this, we want to correct CTS while maintaining increasing DTS values
-        logger["logger"].warn("PTS < DTS detected in video samples, offsetting DTS from PTS by " + Object(timescale_conversion["toMsFromMpegTsClock"])(-averageSampleDuration, true) + " ms");
-        var lastDts = ptsDtsShift;
-
-        for (var _i = 0; _i < nbSamples; _i++) {
-          inputSamples[_i].dts = lastDts = Math.max(lastDts, inputSamples[_i].pts - averageSampleDuration);
-          inputSamples[_i].pts = Math.max(lastDts, inputSamples[_i].pts);
-        }
-      } else {
-        // Fix for "Custom IV with bad PTS DTS" in test-streams
-        // With smaller PTS < DTS errors we can simply move all DTS back. This increases CTS without causing buffer gaps or decode errors in Safari
-        logger["logger"].warn("PTS < DTS detected in video samples, shifting DTS by " + Object(timescale_conversion["toMsFromMpegTsClock"])(ptsDtsShift, true) + " ms to overcome this issue");
-
-        for (var _i2 = 0; _i2 < nbSamples; _i2++) {
-          inputSamples[_i2].dts = inputSamples[_i2].dts + ptsDtsShift;
-        }
-      }
-
-      firstDTS = inputSamples[0].dts;
-      lastDTS = inputSamples[nbSamples - 1].dts;
-    } // if fragment are contiguous, detect hole/overlapping between fragments
-
-
-    if (contiguous) {
-      // check timestamp continuity across consecutive fragments (this is to remove inter-fragment gap/hole)
-      var delta = firstDTS - nextAvcDts;
-      var foundHole = delta > averageSampleDuration;
-      var foundOverlap = delta < -1;
-
-      if (foundHole || foundOverlap) {
-        if (foundHole) {
-          logger["logger"].warn("AVC: " + Object(timescale_conversion["toMsFromMpegTsClock"])(delta, true) + " ms (" + delta + "dts) hole between fragments detected, filling it");
-        } else {
-          logger["logger"].warn("AVC: " + Object(timescale_conversion["toMsFromMpegTsClock"])(-delta, true) + " ms (" + delta + "dts) overlapping between fragments detected");
-        }
-
-        firstDTS = nextAvcDts;
-        var firstPTS = inputSamples[0].pts - delta;
-        inputSamples[0].dts = firstDTS;
-        inputSamples[0].pts = firstPTS;
-        logger["logger"].log("Video: First PTS/DTS adjusted: " + Object(timescale_conversion["toMsFromMpegTsClock"])(firstPTS, true) + "/" + Object(timescale_conversion["toMsFromMpegTsClock"])(firstDTS, true) + ", delta: " + Object(timescale_conversion["toMsFromMpegTsClock"])(delta, true) + " ms");
-      }
-    }
-
-    if (requiresPositiveDts) {
-      firstDTS = Math.max(0, firstDTS);
-    }
-
-    var nbNalu = 0;
-    var naluLen = 0;
-
-    for (var _i3 = 0; _i3 < nbSamples; _i3++) {
-      // compute total/avc sample length and nb of NAL units
-      var _sample = inputSamples[_i3];
-      var units = _sample.units;
-      var nbUnits = units.length;
-      var sampleLen = 0;
-
-      for (var j = 0; j < nbUnits; j++) {
-        sampleLen += units[j].data.length;
-      }
-
-      naluLen += sampleLen;
-      nbNalu += nbUnits;
-      _sample.length = sampleLen; // normalize PTS/DTS
-      // ensure sample monotonic DTS
-
-      _sample.dts = Math.max(_sample.dts, firstDTS); // ensure that computed value is greater or equal than sample DTS
-
-      _sample.pts = Math.max(_sample.pts, _sample.dts, 0);
-      minPTS = Math.min(_sample.pts, minPTS);
-      maxPTS = Math.max(_sample.pts, maxPTS);
-    }
-
-    lastDTS = inputSamples[nbSamples - 1].dts;
-    /* concatenate the video data and construct the mdat in place
-      (need 8 more bytes to fill length and mpdat type) */
-
-    var mdatSize = naluLen + 4 * nbNalu + 8;
-
-    try {
-      mdat = new Uint8Array(mdatSize);
-    } catch (err) {
-      this.observer.trigger(events["default"].ERROR, {
-        type: errors["ErrorTypes"].MUX_ERROR,
-        details: errors["ErrorDetails"].REMUX_ALLOC_ERROR,
-        fatal: false,
-        bytes: mdatSize,
-        reason: "fail allocating video mdat " + mdatSize
-      });
-      return;
-    }
-
-    var view = new DataView(mdat.buffer);
-    view.setUint32(0, mdatSize);
-    mdat.set(mp4_generator.types.mdat, 4);
-
-    for (var _i4 = 0; _i4 < nbSamples; _i4++) {
-      var avcSample = inputSamples[_i4];
-      var avcSampleUnits = avcSample.units;
-      var mp4SampleLength = 0;
-      var compositionTimeOffset = void 0; // convert NALU bitstream to MP4 format (prepend NALU with size field)
-
-      for (var _j = 0, _nbUnits = avcSampleUnits.length; _j < _nbUnits; _j++) {
-        var unit = avcSampleUnits[_j];
-        var unitData = unit.data;
-        var unitDataLen = unit.data.byteLength;
-        view.setUint32(offset, unitDataLen);
-        offset += 4;
-        mdat.set(unitData, offset);
-        offset += unitDataLen;
-        mp4SampleLength += 4 + unitDataLen;
-      } // expected sample duration is the Decoding Timestamp diff of consecutive samples
-
-
-      if (_i4 < nbSamples - 1) {
-        mp4SampleDuration = inputSamples[_i4 + 1].dts - avcSample.dts;
-      } else {
-        var config = this.config;
-        var lastFrameDuration = avcSample.dts - inputSamples[_i4 > 0 ? _i4 - 1 : _i4].dts;
-
-        if (config.stretchShortVideoTrack) {
-          // In some cases, a segment's audio track duration may exceed the video track duration.
-          // Since we've already remuxed audio, and we know how long the audio track is, we look to
-          // see if the delta to the next segment is longer than maxBufferHole.
-          // If so, playback would potentially get stuck, so we artificially inflate
-          // the duration of the last frame to minimize any potential gap between segments.
-          var maxBufferHole = config.maxBufferHole;
-          var gapTolerance = Math.floor(maxBufferHole * timeScale);
-          var deltaToFrameEnd = (audioTrackLength ? minPTS + audioTrackLength * timeScale : this.nextAudioPts) - avcSample.pts;
-
-          if (deltaToFrameEnd > gapTolerance) {
-            // We subtract lastFrameDuration from deltaToFrameEnd to try to prevent any video
-            // frame overlap. maxBufferHole should be >> lastFrameDuration anyway.
-            mp4SampleDuration = deltaToFrameEnd - lastFrameDuration;
-
-            if (mp4SampleDuration < 0) {
-              mp4SampleDuration = lastFrameDuration;
-            }
-
-            logger["logger"].log("It is approximately " + Object(timescale_conversion["toMsFromMpegTsClock"])(deltaToFrameEnd, false) + " ms to the next segment; using duration " + Object(timescale_conversion["toMsFromMpegTsClock"])(mp4SampleDuration, false) + " ms for the last video frame.");
-          } else {
-            mp4SampleDuration = lastFrameDuration;
-          }
-        } else {
-          mp4SampleDuration = lastFrameDuration;
-        }
-      }
-
-      compositionTimeOffset = Math.round(avcSample.pts - avcSample.dts); // console.log('PTS/DTS/initDTS/normPTS/normDTS/relative PTS : ${avcSample.pts}/${avcSample.dts}/${initDTS}/${ptsnorm}/${dtsnorm}/${(avcSample.pts/4294967296).toFixed(3)}');
-
-      outputSamples.push({
-        size: mp4SampleLength,
-        // constant duration
-        duration: mp4SampleDuration,
-        cts: compositionTimeOffset,
-        flags: {
-          isLeading: 0,
-          isDependedOn: 0,
-          hasRedundancy: 0,
-          degradPrio: 0,
-          dependsOn: avcSample.key ? 2 : 1,
-          isNonSync: avcSample.key ? 0 : 1
-        }
-      });
-    } // next AVC sample DTS should be equal to last sample DTS + last sample duration (in PES timescale)
-
-
-    this.nextAvcDts = lastDTS + mp4SampleDuration;
-    var dropped = track.dropped;
-    track.nbNalu = 0;
-    track.dropped = 0;
-
-    if (outputSamples.length && chromeVersion && chromeVersion < 70) {
-      var flags = outputSamples[0].flags; // chrome workaround, mark first sample as being a Random Access Point to avoid sourcebuffer append issue
-      // https://code.google.com/p/chromium/issues/detail?id=229412
-
-      flags.dependsOn = 2;
-      flags.isNonSync = 0;
-    }
-
-    track.samples = outputSamples;
-    moof = mp4_generator.moof(track.sequenceNumber++, firstDTS, track);
-    track.samples = [];
-    var data = {
-      data1: moof,
-      data2: mdat,
-      startPTS: minPTS / timeScale,
-      endPTS: (maxPTS + mp4SampleDuration) / timeScale,
-      startDTS: firstDTS / timeScale,
-      endDTS: this.nextAvcDts / timeScale,
-      type: 'video',
-      hasAudio: false,
-      hasVideo: true,
-      nb: outputSamples.length,
-      dropped: dropped
-    };
-    this.observer.trigger(events["default"].FRAG_PARSING_DATA, data);
-    return data;
-  };
-
-  _proto.remuxAudio = function remuxAudio(track, timeOffset, contiguous, accurateTimeOffset, videoTimeOffset) {
-    var inputTimeScale = track.inputTimeScale;
-    var mp4timeScale = track.timescale;
-    var scaleFactor = inputTimeScale / mp4timeScale;
-    var mp4SampleDuration = track.isAAC ? 1024 : 1152;
-    var inputSampleDuration = mp4SampleDuration * scaleFactor;
-    var initPTS = this._initPTS;
-    var rawMPEG = !track.isAAC && this.typeSupported.mpeg;
-    var mp4Sample;
-    var fillFrame;
-    var mdat;
-    var moof;
-    var firstPTS;
-    var lastPTS;
-    var offset = rawMPEG ? 0 : 8;
-    var inputSamples = track.samples;
-    var outputSamples = [];
-    var nextAudioPts = this.nextAudioPts; // for audio samples, also consider consecutive fragments as being contiguous (even if a level switch occurs),
-    // for sake of clarity:
-    // consecutive fragments are frags with
-    //  - less than 100ms gaps between new time offset (if accurate) and next expected PTS OR
-    //  - less than 20 audio frames distance
-    // contiguous fragments are consecutive fragments from same quality level (same level, new SN = old SN + 1)
-    // this helps ensuring audio continuity
-    // and this also avoids audio glitches/cut when switching quality, or reporting wrong duration on first audio frame
-
-    contiguous |= inputSamples.length && nextAudioPts && (accurateTimeOffset && Math.abs(timeOffset - nextAudioPts / inputTimeScale) < 0.1 || Math.abs(inputSamples[0].pts - nextAudioPts - initPTS) < 20 * inputSampleDuration); // compute normalized PTS
-
-    inputSamples.forEach(function (sample) {
-      sample.pts = sample.dts = PTSNormalize(sample.pts - initPTS, timeOffset * inputTimeScale);
-    }); // filter out sample with negative PTS that are not playable anyway
-    // if we don't remove these negative samples, they will shift all audio samples forward.
-    // leading to audio overlap between current / next fragment
-
-    inputSamples = inputSamples.filter(function (sample) {
-      return sample.pts >= 0;
-    }); // in case all samples have negative PTS, and have been filtered out, return now
-
-    if (inputSamples.length === 0) {
-      return;
-    }
-
-    if (!contiguous) {
-      if (videoTimeOffset === 0) {
-        // Set the start to 0 to match video so that start gaps larger than inputSampleDuration are filled with silence
-        nextAudioPts = 0;
-      } else if (accurateTimeOffset) {
-        // When not seeking, not live, and LevelDetails.PTSKnown, use fragment start as predicted next audio PTS
-        nextAudioPts = Math.max(0, timeOffset * inputTimeScale);
-      } else {
-        // if frags are not contiguous and if we cant trust time offset, let's use first sample PTS as next audio PTS
-        nextAudioPts = inputSamples[0].pts;
-      }
-    } // If the audio track is missing samples, the frames seem to get "left-shifted" within the
-    // resulting mp4 segment, causing sync issues and leaving gaps at the end of the audio segment.
-    // In an effort to prevent this from happening, we inject frames here where there are gaps.
-    // When possible, we inject a silent frame; when that's not possible, we duplicate the last
-    // frame.
-
-
-    if (track.isAAC) {
-      var maxAudioFramesDrift = this.config.maxAudioFramesDrift;
-
-      for (var i = 0, nextPts = nextAudioPts; i < inputSamples.length;) {
-        // First, let's see how far off this frame is from where we expect it to be
-        var sample = inputSamples[i];
-        var pts = sample.pts;
-        var delta = pts - nextPts; // If we're overlapping by more than a duration, drop this sample
-
-        if (delta <= -maxAudioFramesDrift * inputSampleDuration) {
-          if (contiguous || i > 0) {
-            logger["logger"].warn("Dropping 1 audio frame @ " + Object(timescale_conversion["toMsFromMpegTsClock"])(nextPts, true) / 1000 + "s due to " + Object(timescale_conversion["toMsFromMpegTsClock"])(delta, true) + " ms overlap.");
-            inputSamples.splice(i, 1); // Don't touch nextPtsNorm or i
-          } else {
-            // When changing qualities we can't trust that audio has been appended up to nextAudioPts
-            // Warn about the overlap but do not drop samples as that can introduce buffer gaps
-            logger["logger"].warn("Audio frame @ " + Object(timescale_conversion["toMsFromMpegTsClock"])(pts, true) / 1000 + "s overlaps nextAudioPts by " + Object(timescale_conversion["toMsFromMpegTsClock"])(delta, true) + " ms.");
-            nextPts = pts + inputSampleDuration;
-            i++;
-          }
-        } // eslint-disable-line brace-style
-        // Insert missing frames if:
-        // 1: We're more than maxAudioFramesDrift frame away
-        // 2: Not more than MAX_SILENT_FRAME_DURATION away
-        else if (delta >= maxAudioFramesDrift * inputSampleDuration && delta < MAX_SILENT_FRAME_DURATION_90KHZ) {
-            var missing = Math.floor(delta / inputSampleDuration); // Adjust nextPts so that silent samples are aligned with media pts. This will prevent media samples from
-            // later being shifted if nextPts is based on timeOffset and delta is not a multiple of inputSampleDuration.
-
-            nextPts = pts - missing * inputSampleDuration;
-            logger["logger"].warn("Injecting " + missing + " audio frames @ " + Object(timescale_conversion["toMsFromMpegTsClock"])(nextPts, true) / 1000 + "s due to " + Object(timescale_conversion["toMsFromMpegTsClock"])(delta, true) + " ms gap.");
-
-            for (var j = 0; j < missing; j++) {
-              var newStamp = Math.max(nextPts, 0);
-              fillFrame = aac_helper.getSilentFrame(track.manifestCodec || track.codec, track.channelCount);
-
-              if (!fillFrame) {
-                logger["logger"].log('Unable to get silent frame for given audio codec; duplicating last frame instead.');
-                fillFrame = sample.unit.subarray();
-              }
-
-              inputSamples.splice(i, 0, {
-                unit: fillFrame,
-                pts: newStamp,
-                dts: newStamp
-              });
-              nextPts += inputSampleDuration;
-              i++;
-            } // Adjust sample to next expected pts
-
-
-            sample.pts = sample.dts = nextPts;
-            nextPts += inputSampleDuration;
-            i++;
-          } else {
-            // Otherwise, just adjust pts
-            if (Math.abs(delta) > 0.1 * inputSampleDuration) {// logger.log(`Invalid frame delta ${Math.round(delta + inputSampleDuration)} at PTS ${Math.round(pts / 90)} (should be ${Math.round(inputSampleDuration)}).`);
-            }
-
-            sample.pts = sample.dts = nextPts;
-            nextPts += inputSampleDuration;
-            i++;
-          }
-      }
-    } // compute mdat size, as we eventually filtered/added some samples
-
-
-    var nbSamples = inputSamples.length;
-    var mdatSize = 0;
-
-    while (nbSamples--) {
-      mdatSize += inputSamples[nbSamples].unit.byteLength;
-    }
-
-    for (var _j2 = 0, _nbSamples = inputSamples.length; _j2 < _nbSamples; _j2++) {
-      var audioSample = inputSamples[_j2];
-      var unit = audioSample.unit;
-      var _pts = audioSample.pts; // logger.log(`Audio/PTS:${toMsFromMpegTsClock(pts, true)}`);
-      // if not first sample
-
-      if (lastPTS !== undefined && mp4Sample) {
-        mp4Sample.duration = Math.round((_pts - lastPTS) / scaleFactor);
-      } else {
-        var _delta = _pts - nextAudioPts;
-
-        var numMissingFrames = 0; // if fragment are contiguous, detect hole/overlapping between fragments
-        // contiguous fragments are consecutive fragments from same quality level (same level, new SN = old SN + 1)
-
-        if (contiguous && track.isAAC) {
-          // log delta
-          if (_delta) {
-            if (_delta > 0 && _delta < MAX_SILENT_FRAME_DURATION_90KHZ) {
-              // Q: why do we have to round here, shouldn't this always result in an integer if timestamps are correct,
-              // and if not, shouldn't we actually Math.ceil() instead?
-              numMissingFrames = Math.round((_pts - nextAudioPts) / inputSampleDuration);
-              logger["logger"].log(Object(timescale_conversion["toMsFromMpegTsClock"])(_delta, true) + " ms hole between AAC samples detected,filling it");
-
-              if (numMissingFrames > 0) {
-                fillFrame = aac_helper.getSilentFrame(track.manifestCodec || track.codec, track.channelCount);
-
-                if (!fillFrame) {
-                  fillFrame = unit.subarray();
-                }
-
-                mdatSize += numMissingFrames * fillFrame.length;
-              } // if we have frame overlap, overlapping for more than half a frame duraion
-
-            } else if (_delta < -12) {
-              // drop overlapping audio frames... browser will deal with it
-              logger["logger"].log("drop overlapping AAC sample, expected/parsed/delta: " + Object(timescale_conversion["toMsFromMpegTsClock"])(nextAudioPts, true) + " ms / " + Object(timescale_conversion["toMsFromMpegTsClock"])(_pts, true) + " ms / " + Object(timescale_conversion["toMsFromMpegTsClock"])(-_delta, true) + " ms");
-              mdatSize -= unit.byteLength;
-              continue;
-            } // set PTS/DTS to expected PTS/DTS
-
-
-            _pts = nextAudioPts;
-          }
-        } // remember first PTS of our audioSamples
-
-
-        firstPTS = _pts;
-
-        if (mdatSize > 0) {
-          mdatSize += offset;
-
-          try {
-            mdat = new Uint8Array(mdatSize);
-          } catch (err) {
-            this.observer.trigger(events["default"].ERROR, {
-              type: errors["ErrorTypes"].MUX_ERROR,
-              details: errors["ErrorDetails"].REMUX_ALLOC_ERROR,
-              fatal: false,
-              bytes: mdatSize,
-              reason: "fail allocating audio mdat " + mdatSize
-            });
-            return;
-          }
-
-          if (!rawMPEG) {
-            var view = new DataView(mdat.buffer);
-            view.setUint32(0, mdatSize);
-            mdat.set(mp4_generator.types.mdat, 4);
-          }
-        } else {
-          // no audio samples
-          return;
-        }
-
-        for (var _i5 = 0; _i5 < numMissingFrames; _i5++) {
-          fillFrame = aac_helper.getSilentFrame(track.manifestCodec || track.codec, track.channelCount);
-
-          if (!fillFrame) {
-            logger["logger"].log('Unable to get silent frame for given audio codec; duplicating this frame instead.');
-            fillFrame = unit.subarray();
-          }
-
-          mdat.set(fillFrame, offset);
-          offset += fillFrame.byteLength;
-          mp4Sample = {
-            size: fillFrame.byteLength,
-            cts: 0,
-            duration: 1024,
-            flags: {
-              isLeading: 0,
-              isDependedOn: 0,
-              hasRedundancy: 0,
-              degradPrio: 0,
-              dependsOn: 1
-            }
-          };
-          outputSamples.push(mp4Sample);
-        }
-      }
-
-      mdat.set(unit, offset);
-      var unitLen = unit.byteLength;
-      offset += unitLen; // console.log('PTS/DTS/initDTS/normPTS/normDTS/relative PTS : ${audioSample.pts}/${audioSample.dts}/${initDTS}/${ptsnorm}/${dtsnorm}/${(audioSample.pts/4294967296).toFixed(3)}');
-
-      mp4Sample = {
-        size: unitLen,
-        cts: 0,
-        duration: 0,
-        flags: {
-          isLeading: 0,
-          isDependedOn: 0,
-          hasRedundancy: 0,
-          degradPrio: 0,
-          dependsOn: 1
-        }
-      };
-      outputSamples.push(mp4Sample);
-      lastPTS = _pts;
-    }
-
-    var lastSampleDuration = 0;
-    nbSamples = outputSamples.length; // set last sample duration as being identical to previous sample
-
-    if (nbSamples >= 2) {
-      lastSampleDuration = outputSamples[nbSamples - 2].duration;
-      mp4Sample.duration = lastSampleDuration;
-    }
-
-    if (nbSamples) {
-      // next audio sample PTS should be equal to last sample PTS + duration
-      this.nextAudioPts = nextAudioPts = lastPTS + scaleFactor * lastSampleDuration; // logger.log('Audio/PTS/PTSend:' + audioSample.pts.toFixed(0) + '/' + this.nextAacDts.toFixed(0));
-
-      track.samples = outputSamples;
-
-      if (rawMPEG) {
-        moof = new Uint8Array();
-      } else {
-        moof = mp4_generator.moof(track.sequenceNumber++, firstPTS / scaleFactor, track);
-      }
-
-      track.samples = [];
-      var start = firstPTS / inputTimeScale;
-      var end = nextAudioPts / inputTimeScale;
-      var audioData = {
-        data1: moof,
-        data2: mdat,
-        startPTS: start,
-        endPTS: end,
-        startDTS: start,
-        endDTS: end,
-        type: 'audio',
-        hasAudio: true,
-        hasVideo: false,
-        nb: nbSamples
-      };
-      this.observer.trigger(events["default"].FRAG_PARSING_DATA, audioData);
-      return audioData;
-    }
-
-    return null;
-  };
-
-  _proto.remuxEmptyAudio = function remuxEmptyAudio(track, timeOffset, contiguous, videoData) {
-    var inputTimeScale = track.inputTimeScale;
-    var mp4timeScale = track.samplerate ? track.samplerate : inputTimeScale;
-    var scaleFactor = inputTimeScale / mp4timeScale;
-    var nextAudioPts = this.nextAudioPts; // sync with video's timestamp
-
-    var startDTS = (nextAudioPts !== undefined ? nextAudioPts : videoData.startDTS * inputTimeScale) + this._initDTS;
-    var endDTS = videoData.endDTS * inputTimeScale + this._initDTS; // one sample's duration value
-
-    var sampleDuration = 1024;
-    var frameDuration = scaleFactor * sampleDuration; // samples count of this segment's duration
-
-    var nbSamples = Math.ceil((endDTS - startDTS) / frameDuration); // silent frame
-
-    var silentFrame = aac_helper.getSilentFrame(track.manifestCodec || track.codec, track.channelCount);
-    logger["logger"].warn('remux empty Audio'); // Can't remux if we can't generate a silent frame...
-
-    if (!silentFrame) {
-      logger["logger"].trace('Unable to remuxEmptyAudio since we were unable to get a silent frame for given audio codec!');
-      return;
-    }
-
-    var samples = [];
-
-    for (var i = 0; i < nbSamples; i++) {
-      var stamp = startDTS + i * frameDuration;
-      samples.push({
-        unit: silentFrame,
-        pts: stamp,
-        dts: stamp
-      });
-    }
-
-    track.samples = samples;
-    this.remuxAudio(track, timeOffset, contiguous);
-  };
-
-  _proto.remuxID3 = function remuxID3(track, timeOffset) {
-    var length = track.samples.length;
-
-    if (!length) {
-      return;
-    }
-
-    var inputTimeScale = track.inputTimeScale;
-    var initPTS = this._initPTS;
-    var initDTS = this._initDTS; // consume samples
-
-    for (var index = 0; index < length; index++) {
-      var sample = track.samples[index]; // setting id3 pts, dts to relative time
-      // using this._initPTS and this._initDTS to calculate relative time
-
-      sample.pts = PTSNormalize(sample.pts - initPTS, timeOffset * inputTimeScale) / inputTimeScale;
-      sample.dts = PTSNormalize(sample.dts - initDTS, timeOffset * inputTimeScale) / inputTimeScale;
-    }
-
-    this.observer.trigger(events["default"].FRAG_PARSING_METADATA, {
-      samples: track.samples
-    });
-    track.samples = [];
-  };
-
-  _proto.remuxText = function remuxText(track, timeOffset) {
-    var length = track.samples.length;
-    var inputTimeScale = track.inputTimeScale;
-    var initPTS = this._initPTS; // consume samples
-
-    if (length) {
-      for (var index = 0; index < length; index++) {
-        var sample = track.samples[index]; // setting text pts, dts to relative time
-        // using this._initPTS and this._initDTS to calculate relative time
-
-        sample.pts = PTSNormalize(sample.pts - initPTS, timeOffset * inputTimeScale) / inputTimeScale;
-      }
-
-      track.samples.sort(function (a, b) {
-        return a.pts - b.pts;
-      });
-      this.observer.trigger(events["default"].FRAG_PARSING_USERDATA, {
-        samples: track.samples
-      });
-    }
-
-    track.samples = [];
-  };
-
-  return MP4Remuxer;
-}();
-
-function PTSNormalize(value, reference) {
-  var offset;
-
-  if (reference === undefined) {
-    return value;
-  }
-
-  if (reference < value) {
-    // - 2^33
-    offset = -8589934592;
-  } else {
-    // + 2^33
-    offset = 8589934592;
-  }
-  /* PTS is 33bit (from 0 to 2^33 -1)
-    if diff between value and reference is bigger than half of the amplitude (2^32) then it means that
-    PTS looping occured. fill the gap */
-
-
-  while (Math.abs(value - reference) > 4294967296) {
-    value += offset;
-  }
-
-  return value;
-}
-
-/* harmony default export */ var mp4_remuxer = (mp4_remuxer_MP4Remuxer);
-// CONCATENATED MODULE: ./src/remux/passthrough-remuxer.js
-/**
- * passthrough remuxer
-*/
-
-
-var passthrough_remuxer_PassThroughRemuxer = /*#__PURE__*/function () {
-  function PassThroughRemuxer(observer) {
-    this.observer = observer;
-  }
-
-  var _proto = PassThroughRemuxer.prototype;
-
-  _proto.destroy = function destroy() {};
-
-  _proto.resetTimeStamp = function resetTimeStamp() {};
-
-  _proto.resetInitSegment = function resetInitSegment() {};
-
-  _proto.remux = function remux(audioTrack, videoTrack, id3Track, textTrack, timeOffset, contiguous, accurateTimeOffset, rawData) {
-    var observer = this.observer;
-    var streamType = '';
-
-    if (audioTrack) {
-      streamType += 'audio';
-    }
-
-    if (videoTrack) {
-      streamType += 'video';
-    }
-
-    observer.trigger(events["default"].FRAG_PARSING_DATA, {
-      data1: rawData,
-      startPTS: timeOffset,
-      startDTS: timeOffset,
-      type: streamType,
-      hasAudio: !!audioTrack,
-      hasVideo: !!videoTrack,
-      nb: 1,
-      dropped: 0
-    }); // notify end of parsing
-
-    observer.trigger(events["default"].FRAG_PARSED);
-  };
-
-  return PassThroughRemuxer;
-}();
-
-/* harmony default export */ var passthrough_remuxer = (passthrough_remuxer_PassThroughRemuxer);
-// CONCATENATED MODULE: ./src/demux/demuxer-inline.js
-/**
- *
- * inline demuxer: probe fragments and instantiate
- * appropriate demuxer depending on content type (TSDemuxer, AACDemuxer, ...)
- *
- */
-
-
-
-
-
-
-
-
-
-
- // see https://stackoverflow.com/a/11237259/589493
-
-var global = Object(get_self_scope["getSelfScope"])(); // safeguard for code that might run both on worker and main thread
-
-var now; // performance.now() not available on WebWorker, at least on Safari Desktop
-
-try {
-  now = global.performance.now.bind(global.performance);
-} catch (err) {
-  logger["logger"].debug('Unable to use Performance API on this environment');
-  now = global.Date.now;
-}
-
-var demuxer_inline_DemuxerInline = /*#__PURE__*/function () {
-  function DemuxerInline(observer, typeSupported, config, vendor) {
-    this.observer = observer;
-    this.typeSupported = typeSupported;
-    this.config = config;
-    this.vendor = vendor;
-  }
-
-  var _proto = DemuxerInline.prototype;
-
-  _proto.destroy = function destroy() {
-    var demuxer = this.demuxer;
-
-    if (demuxer) {
-      demuxer.destroy();
-    }
-  };
-
-  _proto.push = function push(data, decryptdata, initSegment, audioCodec, videoCodec, timeOffset, discontinuity, trackSwitch, contiguous, duration, accurateTimeOffset, defaultInitPTS) {
-    var _this = this;
-
-    if (data.byteLength > 0 && decryptdata != null && decryptdata.key != null && decryptdata.method === 'AES-128') {
-      var decrypter = this.decrypter;
-
-      if (decrypter == null) {
-        decrypter = this.decrypter = new crypt_decrypter["default"](this.observer, this.config);
-      }
-
-      var startTime = now();
-      decrypter.decrypt(data, decryptdata.key.buffer, decryptdata.iv.buffer, function (decryptedData) {
-        var endTime = now();
-
-        _this.observer.trigger(events["default"].FRAG_DECRYPTED, {
-          stats: {
-            tstart: startTime,
-            tdecrypt: endTime
-          }
-        });
-
-        _this.pushDecrypted(new Uint8Array(decryptedData), decryptdata, new Uint8Array(initSegment), audioCodec, videoCodec, timeOffset, discontinuity, trackSwitch, contiguous, duration, accurateTimeOffset, defaultInitPTS);
-      });
-    } else {
-      this.pushDecrypted(new Uint8Array(data), decryptdata, new Uint8Array(initSegment), audioCodec, videoCodec, timeOffset, discontinuity, trackSwitch, contiguous, duration, accurateTimeOffset, defaultInitPTS);
-    }
-  };
-
-  _proto.pushDecrypted = function pushDecrypted(data, decryptdata, initSegment, audioCodec, videoCodec, timeOffset, discontinuity, trackSwitch, contiguous, duration, accurateTimeOffset, defaultInitPTS) {
-    var demuxer = this.demuxer;
-    var remuxer = this.remuxer;
-
-    if (!demuxer || // in case of continuity change, or track switch
-    // we might switch from content type (AAC container to TS container, or TS to fmp4 for example)
-    discontinuity || trackSwitch) {
-      var observer = this.observer;
-      var typeSupported = this.typeSupported;
-      var config = this.config; // probing order is TS/MP4/AAC/MP3
-
-      var muxConfig = [{
-        demux: tsdemuxer,
-        remux: mp4_remuxer
-      }, {
-        demux: mp4demuxer["default"],
-        remux: passthrough_remuxer
-      }, {
-        demux: aacdemuxer,
-        remux: mp4_remuxer
-      }, {
-        demux: mp3demuxer,
-        remux: mp4_remuxer
-      }]; // probe for content type
-
-      var mux;
-
-      for (var i = 0, len = muxConfig.length; i < len; i++) {
-        mux = muxConfig[i];
-
-        if (mux.demux.probe(data)) {
-          break;
-        }
-      }
-
-      if (!mux) {
-        observer.trigger(events["default"].ERROR, {
-          type: errors["ErrorTypes"].MEDIA_ERROR,
-          details: errors["ErrorDetails"].FRAG_PARSING_ERROR,
-          fatal: true,
-          reason: 'no demux matching with content found'
-        });
-        return;
-      } // so let's check that current remuxer and demuxer are still valid
-
-
-      if (!remuxer || !(remuxer instanceof mux.remux)) {
-        remuxer = new mux.remux(observer, config, typeSupported, this.vendor);
-      }
-
-      if (!demuxer || !(demuxer instanceof mux.demux)) {
-        demuxer = new mux.demux(observer, remuxer, config, typeSupported);
-        this.probe = mux.demux.probe;
-      }
-
-      this.demuxer = demuxer;
-      this.remuxer = remuxer;
-    }
-
-    if (discontinuity || trackSwitch) {
-      demuxer.resetInitSegment(initSegment, audioCodec, videoCodec, duration);
-      remuxer.resetInitSegment();
-    }
-
-    if (discontinuity) {
-      demuxer.resetTimeStamp(defaultInitPTS);
-      remuxer.resetTimeStamp(defaultInitPTS);
-    }
-
-    if (typeof demuxer.setDecryptData === 'function') {
-      demuxer.setDecryptData(decryptdata);
-    }
-
-    demuxer.append(data, timeOffset, contiguous, accurateTimeOffset);
-  };
-
-  return DemuxerInline;
-}();
-
-/* harmony default export */ var demuxer_inline = __webpack_exports__["default"] = (demuxer_inline_DemuxerInline);
-
-/***/ }),
-
-/***/ "./src/demux/demuxer-worker.js":
-/*!*************************************!*\
-  !*** ./src/demux/demuxer-worker.js ***!
-  \*************************************/
-/*! exports provided: default */
-/*! ModuleConcatenation bailout: Module is referenced from these modules with unsupported syntax: ./src/demux/demuxer.js (referenced with require.resolve) */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _demux_demuxer_inline__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../demux/demuxer-inline */ "./src/demux/demuxer-inline.js");
-/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../events */ "./src/events.js");
-/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/logger */ "./src/utils/logger.js");
-/* harmony import */ var eventemitter3__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! eventemitter3 */ "./node_modules/eventemitter3/index.js");
-/* harmony import */ var eventemitter3__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(eventemitter3__WEBPACK_IMPORTED_MODULE_3__);
-/* demuxer web worker.
- *  - listen to worker message, and trigger DemuxerInline upon reception of Fragments.
- *  - provides MP4 Boxes back to main thread using [transferable objects](https://developers.google.com/web/updates/2011/12/Transferable-Objects-Lightning-Fast) in order to minimize message passing overhead.
- */
-
-
-
-
-
-var DemuxerWorker = function DemuxerWorker(self) {
-  // observer setup
-  var observer = new eventemitter3__WEBPACK_IMPORTED_MODULE_3__["EventEmitter"]();
-
-  observer.trigger = function trigger(event) {
-    for (var _len = arguments.length, data = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
-      data[_key - 1] = arguments[_key];
-    }
-
-    observer.emit.apply(observer, [event, event].concat(data));
-  };
-
-  observer.off = function off(event) {
-    for (var _len2 = arguments.length, data = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
-      data[_key2 - 1] = arguments[_key2];
-    }
-
-    observer.removeListener.apply(observer, [event].concat(data));
-  };
-
-  var forwardMessage = function forwardMessage(ev, data) {
-    self.postMessage({
-      event: ev,
-      data: data
-    });
-  };
-
-  self.addEventListener('message', function (ev) {
-    var data = ev.data; // console.log('demuxer cmd:' + data.cmd);
-
-    switch (data.cmd) {
-      case 'init':
-        var config = JSON.parse(data.config);
-        self.demuxer = new _demux_demuxer_inline__WEBPACK_IMPORTED_MODULE_0__["default"](observer, data.typeSupported, config, data.vendor);
-        Object(_utils_logger__WEBPACK_IMPORTED_MODULE_2__["enableLogs"])(config.debug); // signal end of worker init
-
-        forwardMessage('init', null);
-        break;
-
-      case 'demux':
-        self.demuxer.push(data.data, data.decryptdata, data.initSegment, data.audioCodec, data.videoCodec, data.timeOffset, data.discontinuity, data.trackSwitch, data.contiguous, data.duration, data.accurateTimeOffset, data.defaultInitPTS);
-        break;
-
-      default:
-        break;
-    }
-  }); // forward events to main thread
-
-  observer.on(_events__WEBPACK_IMPORTED_MODULE_1__["default"].FRAG_DECRYPTED, forwardMessage);
-  observer.on(_events__WEBPACK_IMPORTED_MODULE_1__["default"].FRAG_PARSING_INIT_SEGMENT, forwardMessage);
-  observer.on(_events__WEBPACK_IMPORTED_MODULE_1__["default"].FRAG_PARSED, forwardMessage);
-  observer.on(_events__WEBPACK_IMPORTED_MODULE_1__["default"].ERROR, forwardMessage);
-  observer.on(_events__WEBPACK_IMPORTED_MODULE_1__["default"].FRAG_PARSING_METADATA, forwardMessage);
-  observer.on(_events__WEBPACK_IMPORTED_MODULE_1__["default"].FRAG_PARSING_USERDATA, forwardMessage);
-  observer.on(_events__WEBPACK_IMPORTED_MODULE_1__["default"].INIT_PTS_FOUND, forwardMessage); // special case for FRAG_PARSING_DATA: pass data1/data2 as transferable object (no copy)
-
-  observer.on(_events__WEBPACK_IMPORTED_MODULE_1__["default"].FRAG_PARSING_DATA, function (ev, data) {
-    var transferable = [];
-    var message = {
-      event: ev,
-      data: data
-    };
-
-    if (data.data1) {
-      message.data1 = data.data1.buffer;
-      transferable.push(data.data1.buffer);
-      delete data.data1;
-    }
-
-    if (data.data2) {
-      message.data2 = data.data2.buffer;
-      transferable.push(data.data2.buffer);
-      delete data.data2;
-    }
-
-    self.postMessage(message, transferable);
-  });
-};
-
-/* harmony default export */ __webpack_exports__["default"] = (DemuxerWorker);
-
-/***/ }),
-
-/***/ "./src/demux/id3.js":
-/*!**************************!*\
-  !*** ./src/demux/id3.js ***!
-  \**************************/
-/*! exports provided: default, utf8ArrayToStr */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "utf8ArrayToStr", function() { return utf8ArrayToStr; });
-/* harmony import */ var _utils_get_self_scope__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/get-self-scope */ "./src/utils/get-self-scope.js");
-
-/**
- * ID3 parser
- */
-
-var ID3 = /*#__PURE__*/function () {
-  function ID3() {}
-
-  /**
-   * Returns true if an ID3 header can be found at offset in data
-   * @param {Uint8Array} data - The data to search in
-   * @param {number} offset - The offset at which to start searching
-   * @return {boolean} - True if an ID3 header is found
-   */
-  ID3.isHeader = function isHeader(data, offset) {
-    /*
-    * http://id3.org/id3v2.3.0
-    * [0]     = 'I'
-    * [1]     = 'D'
-    * [2]     = '3'
-    * [3,4]   = {Version}
-    * [5]     = {Flags}
-    * [6-9]   = {ID3 Size}
-    *
-    * An ID3v2 tag can be detected with the following pattern:
-    *  $49 44 33 yy yy xx zz zz zz zz
-    * Where yy is less than $FF, xx is the 'flags' byte and zz is less than $80
-    */
-    if (offset + 10 <= data.length) {
-      // look for 'ID3' identifier
-      if (data[offset] === 0x49 && data[offset + 1] === 0x44 && data[offset + 2] === 0x33) {
-        // check version is within range
-        if (data[offset + 3] < 0xFF && data[offset + 4] < 0xFF) {
-          // check size is within range
-          if (data[offset + 6] < 0x80 && data[offset + 7] < 0x80 && data[offset + 8] < 0x80 && data[offset + 9] < 0x80) {
-            return true;
-          }
-        }
-      }
-    }
-
-    return false;
-  }
-  /**
-   * Returns true if an ID3 footer can be found at offset in data
-   * @param {Uint8Array} data - The data to search in
-   * @param {number} offset - The offset at which to start searching
-   * @return {boolean} - True if an ID3 footer is found
-   */
-  ;
-
-  ID3.isFooter = function isFooter(data, offset) {
-    /*
-    * The footer is a copy of the header, but with a different identifier
-    */
-    if (offset + 10 <= data.length) {
-      // look for '3DI' identifier
-      if (data[offset] === 0x33 && data[offset + 1] === 0x44 && data[offset + 2] === 0x49) {
-        // check version is within range
-        if (data[offset + 3] < 0xFF && data[offset + 4] < 0xFF) {
-          // check size is within range
-          if (data[offset + 6] < 0x80 && data[offset + 7] < 0x80 && data[offset + 8] < 0x80 && data[offset + 9] < 0x80) {
-            return true;
-          }
-        }
-      }
-    }
-
-    return false;
-  }
-  /**
-   * Returns any adjacent ID3 tags found in data starting at offset, as one block of data
-   * @param {Uint8Array} data - The data to search in
-   * @param {number} offset - The offset at which to start searching
-   * @return {Uint8Array} - The block of data containing any ID3 tags found
-   */
-  ;
-
-  ID3.getID3Data = function getID3Data(data, offset) {
-    var front = offset;
-    var length = 0;
-
-    while (ID3.isHeader(data, offset)) {
-      // ID3 header is 10 bytes
-      length += 10;
-
-      var size = ID3._readSize(data, offset + 6);
-
-      length += size;
-
-      if (ID3.isFooter(data, offset + 10)) {
-        // ID3 footer is 10 bytes
-        length += 10;
-      }
-
-      offset += length;
-    }
-
-    if (length > 0) {
-      return data.subarray(front, front + length);
-    }
-
-    return undefined;
-  };
-
-  ID3._readSize = function _readSize(data, offset) {
-    var size = 0;
-    size = (data[offset] & 0x7f) << 21;
-    size |= (data[offset + 1] & 0x7f) << 14;
-    size |= (data[offset + 2] & 0x7f) << 7;
-    size |= data[offset + 3] & 0x7f;
-    return size;
-  }
-  /**
-   * Searches for the Elementary Stream timestamp found in the ID3 data chunk
-   * @param {Uint8Array} data - Block of data containing one or more ID3 tags
-   * @return {number} - The timestamp
-   */
-  ;
-
-  ID3.getTimeStamp = function getTimeStamp(data) {
-    var frames = ID3.getID3Frames(data);
-
-    for (var i = 0; i < frames.length; i++) {
-      var frame = frames[i];
-
-      if (ID3.isTimeStampFrame(frame)) {
-        return ID3._readTimeStamp(frame);
-      }
-    }
-
-    return undefined;
-  }
-  /**
-   * Returns true if the ID3 frame is an Elementary Stream timestamp frame
-   * @param {ID3 frame} frame
-   */
-  ;
-
-  ID3.isTimeStampFrame = function isTimeStampFrame(frame) {
-    return frame && frame.key === 'PRIV' && frame.info === 'com.apple.streaming.transportStreamTimestamp';
-  };
-
-  ID3._getFrameData = function _getFrameData(data) {
-    /*
-    Frame ID       $xx xx xx xx (four characters)
-    Size           $xx xx xx xx
-    Flags          $xx xx
-    */
-    var type = String.fromCharCode(data[0], data[1], data[2], data[3]);
-
-    var size = ID3._readSize(data, 4); // skip frame id, size, and flags
-
-
-    var offset = 10;
-    return {
-      type: type,
-      size: size,
-      data: data.subarray(offset, offset + size)
-    };
-  }
-  /**
-   * Returns an array of ID3 frames found in all the ID3 tags in the id3Data
-   * @param {Uint8Array} id3Data - The ID3 data containing one or more ID3 tags
-   * @return {ID3 frame[]} - Array of ID3 frame objects
-   */
-  ;
-
-  ID3.getID3Frames = function getID3Frames(id3Data) {
-    var offset = 0;
-    var frames = [];
-
-    while (ID3.isHeader(id3Data, offset)) {
-      var size = ID3._readSize(id3Data, offset + 6); // skip past ID3 header
-
-
-      offset += 10;
-      var end = offset + size; // loop through frames in the ID3 tag
-
-      while (offset + 8 < end) {
-        var frameData = ID3._getFrameData(id3Data.subarray(offset));
-
-        var frame = ID3._decodeFrame(frameData);
-
-        if (frame) {
-          frames.push(frame);
-        } // skip frame header and frame data
-
-
-        offset += frameData.size + 10;
-      }
-
-      if (ID3.isFooter(id3Data, offset)) {
-        offset += 10;
-      }
-    }
-
-    return frames;
-  };
-
-  ID3._decodeFrame = function _decodeFrame(frame) {
-    if (frame.type === 'PRIV') {
-      return ID3._decodePrivFrame(frame);
-    } else if (frame.type[0] === 'T') {
-      return ID3._decodeTextFrame(frame);
-    } else if (frame.type[0] === 'W') {
-      return ID3._decodeURLFrame(frame);
-    }
-
-    return undefined;
-  };
-
-  ID3._readTimeStamp = function _readTimeStamp(timeStampFrame) {
-    if (timeStampFrame.data.byteLength === 8) {
-      var data = new Uint8Array(timeStampFrame.data); // timestamp is 33 bit expressed as a big-endian eight-octet number,
-      // with the upper 31 bits set to zero.
-
-      var pts33Bit = data[3] & 0x1;
-      var timestamp = (data[4] << 23) + (data[5] << 15) + (data[6] << 7) + data[7];
-      timestamp /= 45;
-
-      if (pts33Bit) {
-        timestamp += 47721858.84;
-      } // 2^32 / 90
-
-
-      return Math.round(timestamp);
-    }
-
-    return undefined;
-  };
-
-  ID3._decodePrivFrame = function _decodePrivFrame(frame) {
-    /*
-    Format: <text string>\0<binary data>
-    */
-    if (frame.size < 2) {
-      return undefined;
-    }
-
-    var owner = ID3._utf8ArrayToStr(frame.data, true);
-
-    var privateData = new Uint8Array(frame.data.subarray(owner.length + 1));
-    return {
-      key: frame.type,
-      info: owner,
-      data: privateData.buffer
-    };
-  };
-
-  ID3._decodeTextFrame = function _decodeTextFrame(frame) {
-    if (frame.size < 2) {
-      return undefined;
-    }
-
-    if (frame.type === 'TXXX') {
-      /*
-      Format:
-      [0]   = {Text Encoding}
-      [1-?] = {Description}\0{Value}
-      */
-      var index = 1;
-
-      var description = ID3._utf8ArrayToStr(frame.data.subarray(index), true);
-
-      index += description.length + 1;
-
-      var value = ID3._utf8ArrayToStr(frame.data.subarray(index));
-
-      return {
-        key: frame.type,
-        info: description,
-        data: value
-      };
-    } else {
-      /*
-      Format:
-      [0]   = {Text Encoding}
-      [1-?] = {Value}
-      */
-      var text = ID3._utf8ArrayToStr(frame.data.subarray(1));
-
-      return {
-        key: frame.type,
-        data: text
-      };
-    }
-  };
-
-  ID3._decodeURLFrame = function _decodeURLFrame(frame) {
-    if (frame.type === 'WXXX') {
-      /*
-      Format:
-      [0]   = {Text Encoding}
-      [1-?] = {Description}\0{URL}
-      */
-      if (frame.size < 2) {
-        return undefined;
-      }
-
-      var index = 1;
-
-      var description = ID3._utf8ArrayToStr(frame.data.subarray(index), true);
-
-      index += description.length + 1;
-
-      var value = ID3._utf8ArrayToStr(frame.data.subarray(index));
-
-      return {
-        key: frame.type,
-        info: description,
-        data: value
-      };
-    } else {
-      /*
-      Format:
-      [0-?] = {URL}
-      */
-      var url = ID3._utf8ArrayToStr(frame.data);
-
-      return {
-        key: frame.type,
-        data: url
-      };
-    }
-  } // http://stackoverflow.com/questions/8936984/uint8array-to-string-in-javascript/22373197
-  // http://www.onicos.com/staff/iz/amuse/javascript/expert/utf.txt
-
-  /* utf.js - UTF-8 <=> UTF-16 convertion
-   *
-   * Copyright (C) 1999 Masanao Izumo <iz@onicos.co.jp>
-   * Version: 1.0
-   * LastModified: Dec 25 1999
-   * This library is free.  You can redistribute it and/or modify it.
-   */
-  ;
-
-  ID3._utf8ArrayToStr = function _utf8ArrayToStr(array, exitOnNull) {
-    if (exitOnNull === void 0) {
-      exitOnNull = false;
-    }
-
-    var decoder = getTextDecoder();
-
-    if (decoder) {
-      var decoded = decoder.decode(array);
-
-      if (exitOnNull) {
-        // grab up to the first null
-        var idx = decoded.indexOf('\0');
-        return idx !== -1 ? decoded.substring(0, idx) : decoded;
-      } // remove any null characters
-
-
-      return decoded.replace(/\0/g, '');
-    }
-
-    var len = array.length;
-    var c;
-    var char2;
-    var char3;
-    var out = '';
-    var i = 0;
-
-    while (i < len) {
-      c = array[i++];
-
-      if (c === 0x00 && exitOnNull) {
-        return out;
-      } else if (c === 0x00 || c === 0x03) {
-        // If the character is 3 (END_OF_TEXT) or 0 (NULL) then skip it
-        continue;
-      }
-
-      switch (c >> 4) {
-        case 0:
-        case 1:
-        case 2:
-        case 3:
-        case 4:
-        case 5:
-        case 6:
-        case 7:
-          // 0xxxxxxx
-          out += String.fromCharCode(c);
-          break;
-
-        case 12:
-        case 13:
-          // 110x xxxx   10xx xxxx
-          char2 = array[i++];
-          out += String.fromCharCode((c & 0x1F) << 6 | char2 & 0x3F);
-          break;
-
-        case 14:
-          // 1110 xxxx  10xx xxxx  10xx xxxx
-          char2 = array[i++];
-          char3 = array[i++];
-          out += String.fromCharCode((c & 0x0F) << 12 | (char2 & 0x3F) << 6 | (char3 & 0x3F) << 0);
-          break;
-
-        default:
-      }
-    }
-
-    return out;
-  };
-
-  return ID3;
-}();
-
-var decoder;
-
-function getTextDecoder() {
-  var global = Object(_utils_get_self_scope__WEBPACK_IMPORTED_MODULE_0__["getSelfScope"])(); // safeguard for code that might run both on worker and main thread
-
-  if (!decoder && typeof global.TextDecoder !== 'undefined') {
-    decoder = new global.TextDecoder('utf-8');
-  }
-
-  return decoder;
-}
-
-var utf8ArrayToStr = ID3._utf8ArrayToStr;
-/* harmony default export */ __webpack_exports__["default"] = (ID3);
-
-
-/***/ }),
-
-/***/ "./src/demux/mp4demuxer.js":
-/*!*********************************!*\
-  !*** ./src/demux/mp4demuxer.js ***!
-  \*********************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/logger */ "./src/utils/logger.js");
-/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../events */ "./src/events.js");
-/**
- * MP4 demuxer
- */
-
-
-var UINT32_MAX = Math.pow(2, 32) - 1;
-
-var MP4Demuxer = /*#__PURE__*/function () {
-  function MP4Demuxer(observer, remuxer) {
-    this.observer = observer;
-    this.remuxer = remuxer;
-  }
-
-  var _proto = MP4Demuxer.prototype;
-
-  _proto.resetTimeStamp = function resetTimeStamp(initPTS) {
-    this.initPTS = initPTS;
-  };
-
-  _proto.resetInitSegment = function resetInitSegment(initSegment, audioCodec, videoCodec, duration) {
-    // jshint unused:false
-    if (initSegment && initSegment.byteLength) {
-      var initData = this.initData = MP4Demuxer.parseInitSegment(initSegment); // default audio codec if nothing specified
-      // TODO : extract that from initsegment
-
-      if (audioCodec == null) {
-        audioCodec = 'mp4a.40.5';
-      }
-
-      if (videoCodec == null) {
-        videoCodec = 'avc1.42e01e';
-      }
-
-      var tracks = {};
-
-      if (initData.audio && initData.video) {
-        tracks.audiovideo = {
-          container: 'video/mp4',
-          codec: audioCodec + ',' + videoCodec,
-          initSegment: duration ? initSegment : null
-        };
-      } else {
-        if (initData.audio) {
-          tracks.audio = {
-            container: 'audio/mp4',
-            codec: audioCodec,
-            initSegment: duration ? initSegment : null
-          };
-        }
-
-        if (initData.video) {
-          tracks.video = {
-            container: 'video/mp4',
-            codec: videoCodec,
-            initSegment: duration ? initSegment : null
-          };
-        }
-      }
-
-      this.observer.trigger(_events__WEBPACK_IMPORTED_MODULE_1__["default"].FRAG_PARSING_INIT_SEGMENT, {
-        tracks: tracks
-      });
-    } else {
-      if (audioCodec) {
-        this.audioCodec = audioCodec;
-      }
-
-      if (videoCodec) {
-        this.videoCodec = videoCodec;
-      }
-    }
-  };
-
-  MP4Demuxer.probe = function probe(data) {
-    // ensure we find a moof box in the first 16 kB
-    return MP4Demuxer.findBox({
-      data: data,
-      start: 0,
-      end: Math.min(data.length, 16384)
-    }, ['moof']).length > 0;
-  };
-
-  MP4Demuxer.bin2str = function bin2str(buffer) {
-    return String.fromCharCode.apply(null, buffer);
-  };
-
-  MP4Demuxer.readUint16 = function readUint16(buffer, offset) {
-    if (buffer.data) {
-      offset += buffer.start;
-      buffer = buffer.data;
-    }
-
-    var val = buffer[offset] << 8 | buffer[offset + 1];
-    return val < 0 ? 65536 + val : val;
-  };
-
-  MP4Demuxer.readUint32 = function readUint32(buffer, offset) {
-    if (buffer.data) {
-      offset += buffer.start;
-      buffer = buffer.data;
-    }
-
-    var val = buffer[offset] << 24 | buffer[offset + 1] << 16 | buffer[offset + 2] << 8 | buffer[offset + 3];
-    return val < 0 ? 4294967296 + val : val;
-  };
-
-  MP4Demuxer.writeUint32 = function writeUint32(buffer, offset, value) {
-    if (buffer.data) {
-      offset += buffer.start;
-      buffer = buffer.data;
-    }
-
-    buffer[offset] = value >> 24;
-    buffer[offset + 1] = value >> 16 & 0xff;
-    buffer[offset + 2] = value >> 8 & 0xff;
-    buffer[offset + 3] = value & 0xff;
-  } // Find the data for a box specified by its path
-  ;
-
-  MP4Demuxer.findBox = function findBox(data, path) {
-    var results = [],
-        i,
-        size,
-        type,
-        end,
-        subresults,
-        start,
-        endbox;
-
-    if (data.data) {
-      start = data.start;
-      end = data.end;
-      data = data.data;
-    } else {
-      start = 0;
-      end = data.byteLength;
-    }
-
-    if (!path.length) {
-      // short-circuit the search for empty paths
-      return null;
-    }
-
-    for (i = start; i < end;) {
-      size = MP4Demuxer.readUint32(data, i);
-      type = MP4Demuxer.bin2str(data.subarray(i + 4, i + 8));
-      endbox = size > 1 ? i + size : end;
-
-      if (type === path[0]) {
-        if (path.length === 1) {
-          // this is the end of the path and we've found the box we were
-          // looking for
-          results.push({
-            data: data,
-            start: i + 8,
-            end: endbox
-          });
-        } else {
-          // recursively search for the next box along the path
-          subresults = MP4Demuxer.findBox({
-            data: data,
-            start: i + 8,
-            end: endbox
-          }, path.slice(1));
-
-          if (subresults.length) {
-            results = results.concat(subresults);
-          }
-        }
-      }
-
-      i = endbox;
-    } // we've finished searching all of data
-
-
-    return results;
-  };
-
-  MP4Demuxer.parseSegmentIndex = function parseSegmentIndex(initSegment) {
-    var moov = MP4Demuxer.findBox(initSegment, ['moov'])[0];
-    var moovEndOffset = moov ? moov.end : null; // we need this in case we need to chop of garbage of the end of current data
-
-    var index = 0;
-    var sidx = MP4Demuxer.findBox(initSegment, ['sidx']);
-    var references;
-
-    if (!sidx || !sidx[0]) {
-      return null;
-    }
-
-    references = [];
-    sidx = sidx[0];
-    var version = sidx.data[0]; // set initial offset, we skip the reference ID (not needed)
-
-    index = version === 0 ? 8 : 16;
-    var timescale = MP4Demuxer.readUint32(sidx, index);
-    index += 4; // TODO: parse earliestPresentationTime and firstOffset
-    // usually zero in our case
-
-    var earliestPresentationTime = 0;
-    var firstOffset = 0;
-
-    if (version === 0) {
-      index += 8;
-    } else {
-      index += 16;
-    } // skip reserved
-
-
-    index += 2;
-    var startByte = sidx.end + firstOffset;
-    var referencesCount = MP4Demuxer.readUint16(sidx, index);
-    index += 2;
-
-    for (var i = 0; i < referencesCount; i++) {
-      var referenceIndex = index;
-      var referenceInfo = MP4Demuxer.readUint32(sidx, referenceIndex);
-      referenceIndex += 4;
-      var referenceSize = referenceInfo & 0x7FFFFFFF;
-      var referenceType = (referenceInfo & 0x80000000) >>> 31;
-
-      if (referenceType === 1) {
-        console.warn('SIDX has hierarchical references (not supported)');
-        return;
-      }
-
-      var subsegmentDuration = MP4Demuxer.readUint32(sidx, referenceIndex);
-      referenceIndex += 4;
-      references.push({
-        referenceSize: referenceSize,
-        subsegmentDuration: subsegmentDuration,
-        // unscaled
-        info: {
-          duration: subsegmentDuration / timescale,
-          start: startByte,
-          end: startByte + referenceSize - 1
-        }
-      });
-      startByte += referenceSize; // Skipping 1 bit for |startsWithSap|, 3 bits for |sapType|, and 28 bits
-      // for |sapDelta|.
-
-      referenceIndex += 4; // skip to next ref
-
-      index = referenceIndex;
-    }
-
-    return {
-      earliestPresentationTime: earliestPresentationTime,
-      timescale: timescale,
-      version: version,
-      referencesCount: referencesCount,
-      references: references,
-      moovEndOffset: moovEndOffset
-    };
-  }
-  /**
-   * Parses an MP4 initialization segment and extracts stream type and
-   * timescale values for any declared tracks. Timescale values indicate the
-   * number of clock ticks per second to assume for time-based values
-   * elsewhere in the MP4.
-   *
-   * To determine the start time of an MP4, you need two pieces of
-   * information: the timescale unit and the earliest base media decode
-   * time. Multiple timescales can be specified within an MP4 but the
-   * base media decode time is always expressed in the timescale from
-   * the media header box for the track:
-   * ```
-   * moov > trak > mdia > mdhd.timescale
-   * moov > trak > mdia > hdlr
-   * ```
-   * @param init {Uint8Array} the bytes of the init segment
-   * @return {object} a hash of track type to timescale values or null if
-   * the init segment is malformed.
-   */
-  ;
-
-  MP4Demuxer.parseInitSegment = function parseInitSegment(initSegment) {
-    var result = [];
-    var traks = MP4Demuxer.findBox(initSegment, ['moov', 'trak']);
-    traks.forEach(function (trak) {
-      var tkhd = MP4Demuxer.findBox(trak, ['tkhd'])[0];
-
-      if (tkhd) {
-        var version = tkhd.data[tkhd.start];
-        var index = version === 0 ? 12 : 20;
-        var trackId = MP4Demuxer.readUint32(tkhd, index);
-        var mdhd = MP4Demuxer.findBox(trak, ['mdia', 'mdhd'])[0];
-
-        if (mdhd) {
-          version = mdhd.data[mdhd.start];
-          index = version === 0 ? 12 : 20;
-          var timescale = MP4Demuxer.readUint32(mdhd, index);
-          var hdlr = MP4Demuxer.findBox(trak, ['mdia', 'hdlr'])[0];
-
-          if (hdlr) {
-            var hdlrType = MP4Demuxer.bin2str(hdlr.data.subarray(hdlr.start + 8, hdlr.start + 12));
-            var type = {
-              'soun': 'audio',
-              'vide': 'video'
-            }[hdlrType];
-
-            if (type) {
-              // extract codec info. TODO : parse codec details to be able to build MIME type
-              var codecBox = MP4Demuxer.findBox(trak, ['mdia', 'minf', 'stbl', 'stsd']);
-
-              if (codecBox.length) {
-                codecBox = codecBox[0];
-                var codecType = MP4Demuxer.bin2str(codecBox.data.subarray(codecBox.start + 12, codecBox.start + 16));
-                _utils_logger__WEBPACK_IMPORTED_MODULE_0__["logger"].log("MP4Demuxer:" + type + ":" + codecType + " found");
-              }
-
-              result[trackId] = {
-                timescale: timescale,
-                type: type
-              };
-              result[type] = {
-                timescale: timescale,
-                id: trackId
-              };
-            }
-          }
-        }
-      }
-    });
-    return result;
-  }
-  /**
-  * Determine the base media decode start time, in seconds, for an MP4
-  * fragment. If multiple fragments are specified, the earliest time is
-  * returned.
-  *
-  * The base media decode time can be parsed from track fragment
-  * metadata:
-  * ```
-  * moof > traf > tfdt.baseMediaDecodeTime
-  * ```
-  * It requires the timescale value from the mdhd to interpret.
-  *
-  * @param timescale {object} a hash of track ids to timescale values.
-  * @return {number} the earliest base media decode start time for the
-  * fragment, in seconds
-  */
-  ;
-
-  MP4Demuxer.getStartDTS = function getStartDTS(initData, fragment) {
-    var trafs, baseTimes, result; // we need info from two childrend of each track fragment box
-
-    trafs = MP4Demuxer.findBox(fragment, ['moof', 'traf']); // determine the start times for each track
-
-    baseTimes = [].concat.apply([], trafs.map(function (traf) {
-      return MP4Demuxer.findBox(traf, ['tfhd']).map(function (tfhd) {
-        var id, scale, baseTime; // get the track id from the tfhd
-
-        id = MP4Demuxer.readUint32(tfhd, 4); // assume a 90kHz clock if no timescale was specified
-
-        scale = initData[id].timescale || 90e3; // get the base media decode time from the tfdt
-
-        baseTime = MP4Demuxer.findBox(traf, ['tfdt']).map(function (tfdt) {
-          var version, result;
-          version = tfdt.data[tfdt.start];
-          result = MP4Demuxer.readUint32(tfdt, 4);
-
-          if (version === 1) {
-            result *= Math.pow(2, 32);
-            result += MP4Demuxer.readUint32(tfdt, 8);
-          }
-
-          return result;
-        })[0]; // convert base time to seconds
-
-        return baseTime / scale;
-      });
-    })); // return the minimum
-
-    result = Math.min.apply(null, baseTimes);
-    return isFinite(result) ? result : 0;
-  };
-
-  MP4Demuxer.offsetStartDTS = function offsetStartDTS(initData, fragment, timeOffset) {
-    MP4Demuxer.findBox(fragment, ['moof', 'traf']).map(function (traf) {
-      return MP4Demuxer.findBox(traf, ['tfhd']).map(function (tfhd) {
-        // get the track id from the tfhd
-        var id = MP4Demuxer.readUint32(tfhd, 4); // assume a 90kHz clock if no timescale was specified
-
-        var timescale = initData[id].timescale || 90e3; // get the base media decode time from the tfdt
-
-        MP4Demuxer.findBox(traf, ['tfdt']).map(function (tfdt) {
-          var version = tfdt.data[tfdt.start];
-          var baseMediaDecodeTime = MP4Demuxer.readUint32(tfdt, 4);
-
-          if (version === 0) {
-            MP4Demuxer.writeUint32(tfdt, 4, baseMediaDecodeTime - timeOffset * timescale);
-          } else {
-            baseMediaDecodeTime *= Math.pow(2, 32);
-            baseMediaDecodeTime += MP4Demuxer.readUint32(tfdt, 8);
-            baseMediaDecodeTime -= timeOffset * timescale;
-            baseMediaDecodeTime = Math.max(baseMediaDecodeTime, 0);
-            var upper = Math.floor(baseMediaDecodeTime / (UINT32_MAX + 1));
-            var lower = Math.floor(baseMediaDecodeTime % (UINT32_MAX + 1));
-            MP4Demuxer.writeUint32(tfdt, 4, upper);
-            MP4Demuxer.writeUint32(tfdt, 8, lower);
-          }
-        });
-      });
-    });
-  } // feed incoming data to the front of the parsing pipeline
-  ;
-
-  _proto.append = function append(data, timeOffset, contiguous, accurateTimeOffset) {
-    var initData = this.initData;
-
-    if (!initData) {
-      this.resetInitSegment(data, this.audioCodec, this.videoCodec, false);
-      initData = this.initData;
-    }
-
-    var startDTS,
-        initPTS = this.initPTS;
-
-    if (initPTS === undefined) {
-      var _startDTS = MP4Demuxer.getStartDTS(initData, data);
-
-      this.initPTS = initPTS = _startDTS - timeOffset; // getStartDTS - convert base time to seconds => timescale: 1
-
-      this.observer.trigger(_events__WEBPACK_IMPORTED_MODULE_1__["default"].INIT_PTS_FOUND, {
-        initPTS: initPTS,
-        timescale: 1
-      });
-    }
-
-    MP4Demuxer.offsetStartDTS(initData, data, initPTS);
-    startDTS = MP4Demuxer.getStartDTS(initData, data);
-    this.remuxer.remux(initData.audio, initData.video, null, null, startDTS, contiguous, accurateTimeOffset, data);
-  };
-
-  _proto.destroy = function destroy() {};
-
-  return MP4Demuxer;
-}();
-
-/* harmony default export */ __webpack_exports__["default"] = (MP4Demuxer);
-
-/***/ }),
-
-/***/ "./src/errors.ts":
-/*!***********************!*\
-  !*** ./src/errors.ts ***!
-  \***********************/
-/*! exports provided: ErrorTypes, ErrorDetails */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ErrorTypes", function() { return ErrorTypes; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ErrorDetails", function() { return ErrorDetails; });
-var ErrorTypes;
-/**
- * @enum {ErrorDetails}
- * @typedef {string} ErrorDetail
- */
-
-(function (ErrorTypes) {
-  ErrorTypes["NETWORK_ERROR"] = "networkError";
-  ErrorTypes["MEDIA_ERROR"] = "mediaError";
-  ErrorTypes["KEY_SYSTEM_ERROR"] = "keySystemError";
-  ErrorTypes["MUX_ERROR"] = "muxError";
-  ErrorTypes["OTHER_ERROR"] = "otherError";
-})(ErrorTypes || (ErrorTypes = {}));
-
-var ErrorDetails;
-
-(function (ErrorDetails) {
-  ErrorDetails["KEY_SYSTEM_NO_KEYS"] = "keySystemNoKeys";
-  ErrorDetails["KEY_SYSTEM_NO_ACCESS"] = "keySystemNoAccess";
-  ErrorDetails["KEY_SYSTEM_NO_SESSION"] = "keySystemNoSession";
-  ErrorDetails["KEY_SYSTEM_LICENSE_REQUEST_FAILED"] = "keySystemLicenseRequestFailed";
-  ErrorDetails["KEY_SYSTEM_NO_INIT_DATA"] = "keySystemNoInitData";
-  ErrorDetails["MANIFEST_LOAD_ERROR"] = "manifestLoadError";
-  ErrorDetails["MANIFEST_LOAD_TIMEOUT"] = "manifestLoadTimeOut";
-  ErrorDetails["MANIFEST_PARSING_ERROR"] = "manifestParsingError";
-  ErrorDetails["MANIFEST_INCOMPATIBLE_CODECS_ERROR"] = "manifestIncompatibleCodecsError";
-  ErrorDetails["LEVEL_EMPTY_ERROR"] = "levelEmptyError";
-  ErrorDetails["LEVEL_LOAD_ERROR"] = "levelLoadError";
-  ErrorDetails["LEVEL_LOAD_TIMEOUT"] = "levelLoadTimeOut";
-  ErrorDetails["LEVEL_SWITCH_ERROR"] = "levelSwitchError";
-  ErrorDetails["AUDIO_TRACK_LOAD_ERROR"] = "audioTrackLoadError";
-  ErrorDetails["AUDIO_TRACK_LOAD_TIMEOUT"] = "audioTrackLoadTimeOut";
-  ErrorDetails["FRAG_LOAD_ERROR"] = "fragLoadError";
-  ErrorDetails["FRAG_LOAD_TIMEOUT"] = "fragLoadTimeOut";
-  ErrorDetails["FRAG_DECRYPT_ERROR"] = "fragDecryptError";
-  ErrorDetails["FRAG_PARSING_ERROR"] = "fragParsingError";
-  ErrorDetails["REMUX_ALLOC_ERROR"] = "remuxAllocError";
-  ErrorDetails["KEY_LOAD_ERROR"] = "keyLoadError";
-  ErrorDetails["KEY_LOAD_TIMEOUT"] = "keyLoadTimeOut";
-  ErrorDetails["BUFFER_ADD_CODEC_ERROR"] = "bufferAddCodecError";
-  ErrorDetails["BUFFER_APPEND_ERROR"] = "bufferAppendError";
-  ErrorDetails["BUFFER_APPENDING_ERROR"] = "bufferAppendingError";
-  ErrorDetails["BUFFER_STALLED_ERROR"] = "bufferStalledError";
-  ErrorDetails["BUFFER_FULL_ERROR"] = "bufferFullError";
-  ErrorDetails["BUFFER_SEEK_OVER_HOLE"] = "bufferSeekOverHole";
-  ErrorDetails["BUFFER_NUDGE_ON_STALL"] = "bufferNudgeOnStall";
-  ErrorDetails["INTERNAL_EXCEPTION"] = "internalException";
-})(ErrorDetails || (ErrorDetails = {}));
-
-/***/ }),
-
-/***/ "./src/events.js":
-/*!***********************!*\
-  !*** ./src/events.js ***!
-  \***********************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/**
- * @readonly
- * @enum {string}
- */
-var HlsEvents = {
-  // fired before MediaSource is attaching to media element - data: { media }
-  MEDIA_ATTACHING: 'hlsMediaAttaching',
-  // fired when MediaSource has been succesfully attached to media element - data: { }
-  MEDIA_ATTACHED: 'hlsMediaAttached',
-  // fired before detaching MediaSource from media element - data: { }
-  MEDIA_DETACHING: 'hlsMediaDetaching',
-  // fired when MediaSource has been detached from media element - data: { }
-  MEDIA_DETACHED: 'hlsMediaDetached',
-  // fired when we buffer is going to be reset - data: { }
-  BUFFER_RESET: 'hlsBufferReset',
-  // fired when we know about the codecs that we need buffers for to push into - data: {tracks : { container, codec, levelCodec, initSegment, metadata }}
-  BUFFER_CODECS: 'hlsBufferCodecs',
-  // fired when sourcebuffers have been created - data: { tracks : tracks }
-  BUFFER_CREATED: 'hlsBufferCreated',
-  // fired when we append a segment to the buffer - data: { segment: segment object }
-  BUFFER_APPENDING: 'hlsBufferAppending',
-  // fired when we are done with appending a media segment to the buffer - data : { parent : segment parent that triggered BUFFER_APPENDING, pending : nb of segments waiting for appending for this segment parent}
-  BUFFER_APPENDED: 'hlsBufferAppended',
-  // fired when the stream is finished and we want to notify the media buffer that there will be no more data - data: { }
-  BUFFER_EOS: 'hlsBufferEos',
-  // fired when the media buffer should be flushed - data { startOffset, endOffset }
-  BUFFER_FLUSHING: 'hlsBufferFlushing',
-  // fired when the media buffer has been flushed - data: { }
-  BUFFER_FLUSHED: 'hlsBufferFlushed',
-  // fired to signal that a manifest loading starts - data: { url : manifestURL}
-  MANIFEST_LOADING: 'hlsManifestLoading',
-  // fired after manifest has been loaded - data: { levels : [available quality levels], audioTracks : [ available audio tracks], url : manifestURL, stats : { trequest, tfirst, tload, mtime}}
-  MANIFEST_LOADED: 'hlsManifestLoaded',
-  // fired after manifest has been parsed - data: { levels : [available quality levels], firstLevel : index of first quality level appearing in Manifest}
-  MANIFEST_PARSED: 'hlsManifestParsed',
-  // fired when a level switch is requested - data: { level : id of new level }
-  LEVEL_SWITCHING: 'hlsLevelSwitching',
-  // fired when a level switch is effective - data: { level : id of new level }
-  LEVEL_SWITCHED: 'hlsLevelSwitched',
-  // fired when a level playlist loading starts - data: { url : level URL, level : id of level being loaded}
-  LEVEL_LOADING: 'hlsLevelLoading',
-  // fired when a level playlist loading finishes - data: { details : levelDetails object, level : id of loaded level, stats : { trequest, tfirst, tload, mtime} }
-  LEVEL_LOADED: 'hlsLevelLoaded',
-  // fired when a level's details have been updated based on previous details, after it has been loaded - data: { details : levelDetails object, level : id of updated level }
-  LEVEL_UPDATED: 'hlsLevelUpdated',
-  // fired when a level's PTS information has been updated after parsing a fragment - data: { details : levelDetails object, level : id of updated level, drift: PTS drift observed when parsing last fragment }
-  LEVEL_PTS_UPDATED: 'hlsLevelPtsUpdated',
-  // fired to notify that levels have changed after removing a level - data: { levels : [available quality levels] }
-  LEVELS_UPDATED: 'hlsLevelsUpdated',
-  // fired to notify that audio track lists has been updated - data: { audioTracks : audioTracks }
-  AUDIO_TRACKS_UPDATED: 'hlsAudioTracksUpdated',
-  // fired when an audio track switching is requested - data: { id : audio track id }
-  AUDIO_TRACK_SWITCHING: 'hlsAudioTrackSwitching',
-  // fired when an audio track switch actually occurs - data: { id : audio track id }
-  AUDIO_TRACK_SWITCHED: 'hlsAudioTrackSwitched',
-  // fired when an audio track loading starts - data: { url : audio track URL, id : audio track id }
-  AUDIO_TRACK_LOADING: 'hlsAudioTrackLoading',
-  // fired when an audio track loading finishes - data: { details : levelDetails object, id : audio track id, stats : { trequest, tfirst, tload, mtime } }
-  AUDIO_TRACK_LOADED: 'hlsAudioTrackLoaded',
-  // fired to notify that subtitle track lists has been updated - data: { subtitleTracks : subtitleTracks }
-  SUBTITLE_TRACKS_UPDATED: 'hlsSubtitleTracksUpdated',
-  // fired when an subtitle track switch occurs - data: { id : subtitle track id }
-  SUBTITLE_TRACK_SWITCH: 'hlsSubtitleTrackSwitch',
-  // fired when a subtitle track loading starts - data: { url : subtitle track URL, id : subtitle track id }
-  SUBTITLE_TRACK_LOADING: 'hlsSubtitleTrackLoading',
-  // fired when a subtitle track loading finishes - data: { details : levelDetails object, id : subtitle track id, stats : { trequest, tfirst, tload, mtime } }
-  SUBTITLE_TRACK_LOADED: 'hlsSubtitleTrackLoaded',
-  // fired when a subtitle fragment has been processed - data: { success : boolean, frag : the processed frag }
-  SUBTITLE_FRAG_PROCESSED: 'hlsSubtitleFragProcessed',
-  // fired when a set of VTTCues to be managed externally has been parsed - data: { type: string, track: string, cues: [ VTTCue ] }
-  CUES_PARSED: 'hlsCuesParsed',
-  // fired when a text track to be managed externally is found - data: { tracks: [ { label: string, kind: string, default: boolean } ] }
-  NON_NATIVE_TEXT_TRACKS_FOUND: 'hlsNonNativeTextTracksFound',
-  // fired when the first timestamp is found - data: { id : demuxer id, initPTS: initPTS, timescale: timescale, frag : fragment object }
-  INIT_PTS_FOUND: 'hlsInitPtsFound',
-  // fired when a fragment loading starts - data: { frag : fragment object }
-  FRAG_LOADING: 'hlsFragLoading',
-  // fired when a fragment loading is progressing - data: { frag : fragment object, { trequest, tfirst, loaded } }
-  FRAG_LOAD_PROGRESS: 'hlsFragLoadProgress',
-  // Identifier for fragment load aborting for emergency switch down - data: { frag : fragment object }
-  FRAG_LOAD_EMERGENCY_ABORTED: 'hlsFragLoadEmergencyAborted',
-  // fired when a fragment loading is completed - data: { frag : fragment object, payload : fragment payload, stats : { trequest, tfirst, tload, length } }
-  FRAG_LOADED: 'hlsFragLoaded',
-  // fired when a fragment has finished decrypting - data: { id : demuxer id, frag: fragment object, payload : fragment payload, stats : { tstart, tdecrypt } }
-  FRAG_DECRYPTED: 'hlsFragDecrypted',
-  // fired when Init Segment has been extracted from fragment - data: { id : demuxer id, frag: fragment object, moov : moov MP4 box, codecs : codecs found while parsing fragment }
-  FRAG_PARSING_INIT_SEGMENT: 'hlsFragParsingInitSegment',
-  // fired when parsing sei text is completed - data: { id : demuxer id, frag: fragment object, samples : [ sei samples pes ] }
-  FRAG_PARSING_USERDATA: 'hlsFragParsingUserdata',
-  // fired when parsing id3 is completed - data: { id : demuxer id, frag: fragment object, samples : [ id3 samples pes ] }
-  FRAG_PARSING_METADATA: 'hlsFragParsingMetadata',
-  // fired when data have been extracted from fragment - data: { id : demuxer id, frag: fragment object, data1 : moof MP4 box or TS fragments, data2 : mdat MP4 box or null}
-  FRAG_PARSING_DATA: 'hlsFragParsingData',
-  // fired when fragment parsing is completed - data: { id : demuxer id, frag: fragment object }
-  FRAG_PARSED: 'hlsFragParsed',
-  // fired when fragment remuxed MP4 boxes have all been appended into SourceBuffer - data: { id : demuxer id, frag : fragment object, stats : { trequest, tfirst, tload, tparsed, tbuffered, length, bwEstimate } }
-  FRAG_BUFFERED: 'hlsFragBuffered',
-  // fired when fragment matching with current media position is changing - data : { id : demuxer id, frag : fragment object }
-  FRAG_CHANGED: 'hlsFragChanged',
-  // Identifier for a FPS drop event - data: { curentDropped, currentDecoded, totalDroppedFrames }
-  FPS_DROP: 'hlsFpsDrop',
-  // triggered when FPS drop triggers auto level capping - data: { level, droppedlevel }
-  FPS_DROP_LEVEL_CAPPING: 'hlsFpsDropLevelCapping',
-  // Identifier for an error event - data: { type : error type, details : error details, fatal : if true, hls.js cannot/will not try to recover, if false, hls.js will try to recover,other error specific data }
-  ERROR: 'hlsError',
-  // fired when hls.js instance starts destroying. Different from MEDIA_DETACHED as one could want to detach and reattach a media to the instance of hls.js to handle mid-rolls for example - data: { }
-  DESTROYING: 'hlsDestroying',
-  // fired when a decrypt key loading starts - data: { frag : fragment object }
-  KEY_LOADING: 'hlsKeyLoading',
-  // fired when a decrypt key loading is completed - data: { frag : fragment object, payload : key payload, stats : { trequest, tfirst, tload, length } }
-  KEY_LOADED: 'hlsKeyLoaded',
-  // fired upon stream controller state transitions - data: { previousState, nextState }
-  STREAM_STATE_TRANSITION: 'hlsStreamStateTransition',
-  // fired when the live back buffer is reached defined by the liveBackBufferLength config option - data : { bufferEnd: number }
-  LIVE_BACK_BUFFER_REACHED: 'hlsLiveBackBufferReached'
-};
-/* harmony default export */ __webpack_exports__["default"] = (HlsEvents);
-
-/***/ }),
-
-/***/ "./src/hls.ts":
-/*!*********************************!*\
-  !*** ./src/hls.ts + 50 modules ***!
-  \*********************************/
-/*! exports provided: default */
-/*! ModuleConcatenation bailout: Cannot concat with ./src/crypt/decrypter.js because of ./src/demux/demuxer-worker.js */
-/*! ModuleConcatenation bailout: Cannot concat with ./src/demux/demuxer-inline.js because of ./src/demux/demuxer-worker.js */
-/*! ModuleConcatenation bailout: Cannot concat with ./src/demux/id3.js because of ./src/demux/demuxer-worker.js */
-/*! ModuleConcatenation bailout: Cannot concat with ./src/demux/mp4demuxer.js because of ./src/demux/demuxer-worker.js */
-/*! ModuleConcatenation bailout: Cannot concat with ./src/errors.ts because of ./src/demux/demuxer-worker.js */
-/*! ModuleConcatenation bailout: Cannot concat with ./src/events.js because of ./src/demux/demuxer-worker.js */
-/*! ModuleConcatenation bailout: Cannot concat with ./src/polyfills/number.js because of ./src/demux/demuxer-worker.js */
-/*! ModuleConcatenation bailout: Cannot concat with ./src/utils/get-self-scope.js because of ./src/demux/demuxer-worker.js */
-/*! ModuleConcatenation bailout: Cannot concat with ./src/utils/logger.js because of ./src/demux/demuxer-worker.js */
-/*! ModuleConcatenation bailout: Cannot concat with ./src/utils/timescale-conversion.ts because of ./src/demux/demuxer-worker.js */
-/*! ModuleConcatenation bailout: Cannot concat with ./node_modules/eventemitter3/index.js (<- Module is not an ECMAScript module) */
-/*! ModuleConcatenation bailout: Cannot concat with ./node_modules/url-toolkit/src/url-toolkit.js (<- Module is not an ECMAScript module) */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-// ESM COMPAT FLAG
-__webpack_require__.r(__webpack_exports__);
-
-// EXPORTS
-__webpack_require__.d(__webpack_exports__, "default", function() { return /* binding */ hls_Hls; });
-
-// NAMESPACE OBJECT: ./src/utils/cues.ts
-var cues_namespaceObject = {};
-__webpack_require__.r(cues_namespaceObject);
-__webpack_require__.d(cues_namespaceObject, "newCue", function() { return newCue; });
-
-// EXTERNAL MODULE: ./node_modules/url-toolkit/src/url-toolkit.js
-var url_toolkit = __webpack_require__("./node_modules/url-toolkit/src/url-toolkit.js");
-
-// EXTERNAL MODULE: ./src/errors.ts
-var errors = __webpack_require__("./src/errors.ts");
-
-// EXTERNAL MODULE: ./src/polyfills/number.js
-var number = __webpack_require__("./src/polyfills/number.js");
-
-// EXTERNAL MODULE: ./src/events.js
-var events = __webpack_require__("./src/events.js");
-
-// EXTERNAL MODULE: ./src/utils/logger.js
-var logger = __webpack_require__("./src/utils/logger.js");
-
-// CONCATENATED MODULE: ./src/event-handler.ts
-/*
-*
-* All objects in the event handling chain should inherit from this class
-*
-*/
-
-
-
-var FORBIDDEN_EVENT_NAMES = {
-  'hlsEventGeneric': true,
-  'hlsHandlerDestroying': true,
-  'hlsHandlerDestroyed': true
-};
-
-var event_handler_EventHandler = /*#__PURE__*/function () {
-  function EventHandler(hls) {
-    this.hls = void 0;
-    this.handledEvents = void 0;
-    this.useGenericHandler = void 0;
-    this.hls = hls;
-    this.onEvent = this.onEvent.bind(this);
-
-    for (var _len = arguments.length, events = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
-      events[_key - 1] = arguments[_key];
-    }
-
-    this.handledEvents = events;
-    this.useGenericHandler = true;
-    this.registerListeners();
-  }
-
-  var _proto = EventHandler.prototype;
-
-  _proto.destroy = function destroy() {
-    this.onHandlerDestroying();
-    this.unregisterListeners();
-    this.onHandlerDestroyed();
-  };
-
-  _proto.onHandlerDestroying = function onHandlerDestroying() {};
-
-  _proto.onHandlerDestroyed = function onHandlerDestroyed() {};
-
-  _proto.isEventHandler = function isEventHandler() {
-    return typeof this.handledEvents === 'object' && this.handledEvents.length && typeof this.onEvent === 'function';
-  };
-
-  _proto.registerListeners = function registerListeners() {
-    if (this.isEventHandler()) {
-      this.handledEvents.forEach(function (event) {
-        if (FORBIDDEN_EVENT_NAMES[event]) {
-          throw new Error('Forbidden event-name: ' + event);
-        }
-
-        this.hls.on(event, this.onEvent);
-      }, this);
-    }
-  };
-
-  _proto.unregisterListeners = function unregisterListeners() {
-    if (this.isEventHandler()) {
-      this.handledEvents.forEach(function (event) {
-        this.hls.off(event, this.onEvent);
-      }, this);
-    }
-  }
-  /**
-   * arguments: event (string), data (any)
-   */
-  ;
-
-  _proto.onEvent = function onEvent(event, data) {
-    this.onEventGeneric(event, data);
-  };
-
-  _proto.onEventGeneric = function onEventGeneric(event, data) {
-    var eventToFunction = function eventToFunction(event, data) {
-      var funcName = 'on' + event.replace('hls', '');
-
-      if (typeof this[funcName] !== 'function') {
-        throw new Error("Event " + event + " has no generic handler in this " + this.constructor.name + " class (tried " + funcName + ")");
-      }
-
-      return this[funcName].bind(this, data);
-    };
-
-    try {
-      eventToFunction.call(this, event, data).call();
-    } catch (err) {
-      logger["logger"].error("An internal error happened while handling event " + event + ". Error message: \"" + err.message + "\". Here is a stacktrace:", err);
-      this.hls.trigger(events["default"].ERROR, {
-        type: errors["ErrorTypes"].OTHER_ERROR,
-        details: errors["ErrorDetails"].INTERNAL_EXCEPTION,
-        fatal: false,
-        event: event,
-        err: err
-      });
-    }
-  };
-
-  return EventHandler;
-}();
-
-/* harmony default export */ var event_handler = (event_handler_EventHandler);
-// CONCATENATED MODULE: ./src/types/loader.ts
-/**
- * `type` property values for this loaders' context object
- * @enum
- *
- */
-var PlaylistContextType;
-/**
- * @enum {string}
- */
-
-(function (PlaylistContextType) {
-  PlaylistContextType["MANIFEST"] = "manifest";
-  PlaylistContextType["LEVEL"] = "level";
-  PlaylistContextType["AUDIO_TRACK"] = "audioTrack";
-  PlaylistContextType["SUBTITLE_TRACK"] = "subtitleTrack";
-})(PlaylistContextType || (PlaylistContextType = {}));
-
-var PlaylistLevelType;
-
-(function (PlaylistLevelType) {
-  PlaylistLevelType["MAIN"] = "main";
-  PlaylistLevelType["AUDIO"] = "audio";
-  PlaylistLevelType["SUBTITLE"] = "subtitle";
-})(PlaylistLevelType || (PlaylistLevelType = {}));
-// EXTERNAL MODULE: ./src/demux/mp4demuxer.js
-var mp4demuxer = __webpack_require__("./src/demux/mp4demuxer.js");
-
-// CONCATENATED MODULE: ./src/loader/level-key.ts
-function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
-
-function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
-
-
-
-var level_key_LevelKey = /*#__PURE__*/function () {
-  function LevelKey(baseURI, relativeURI) {
-    this._uri = null;
-    this.baseuri = void 0;
-    this.reluri = void 0;
-    this.method = null;
-    this.key = null;
-    this.iv = null;
-    this.baseuri = baseURI;
-    this.reluri = relativeURI;
-  }
-
-  _createClass(LevelKey, [{
-    key: "uri",
-    get: function get() {
-      if (!this._uri && this.reluri) {
-        this._uri = Object(url_toolkit["buildAbsoluteURL"])(this.baseuri, this.reluri, {
-          alwaysNormalize: true
-        });
-      }
-
-      return this._uri;
-    }
-  }]);
-
-  return LevelKey;
-}();
-
-
-// CONCATENATED MODULE: ./src/loader/fragment.ts
-
-
-
-function fragment_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
-
-function fragment_createClass(Constructor, protoProps, staticProps) { if (protoProps) fragment_defineProperties(Constructor.prototype, protoProps); if (staticProps) fragment_defineProperties(Constructor, staticProps); return Constructor; }
-
-
-
-
-var ElementaryStreamTypes;
-
-(function (ElementaryStreamTypes) {
-  ElementaryStreamTypes["AUDIO"] = "audio";
-  ElementaryStreamTypes["VIDEO"] = "video";
-})(ElementaryStreamTypes || (ElementaryStreamTypes = {}));
-
-var fragment_Fragment = /*#__PURE__*/function () {
-  function Fragment() {
-    var _this$_elementaryStre;
-
-    this._url = null;
-    this._byteRange = null;
-    this._decryptdata = null;
-    this._elementaryStreams = (_this$_elementaryStre = {}, _this$_elementaryStre[ElementaryStreamTypes.AUDIO] = false, _this$_elementaryStre[ElementaryStreamTypes.VIDEO] = false, _this$_elementaryStre);
-    this.deltaPTS = 0;
-    this.rawProgramDateTime = null;
-    this.programDateTime = null;
-    this.title = null;
-    this.tagList = [];
-    this.cc = void 0;
-    this.type = void 0;
-    this.relurl = void 0;
-    this.baseurl = void 0;
-    this.duration = void 0;
-    this.start = void 0;
-    this.sn = 0;
-    this.urlId = 0;
-    this.level = 0;
-    this.levelkey = void 0;
-    this.loader = void 0;
-  }
-
-  var _proto = Fragment.prototype;
-
-  // setByteRange converts a EXT-X-BYTERANGE attribute into a two element array
-  _proto.setByteRange = function setByteRange(value, previousFrag) {
-    var params = value.split('@', 2);
-    var byteRange = [];
-
-    if (params.length === 1) {
-      byteRange[0] = previousFrag ? previousFrag.byteRangeEndOffset : 0;
-    } else {
-      byteRange[0] = parseInt(params[1]);
-    }
-
-    byteRange[1] = parseInt(params[0]) + byteRange[0];
-    this._byteRange = byteRange;
-  };
-
-  /**
-   * @param {ElementaryStreamTypes} type
-   */
-  _proto.addElementaryStream = function addElementaryStream(type) {
-    this._elementaryStreams[type] = true;
-  }
-  /**
-   * @param {ElementaryStreamTypes} type
-   */
-  ;
-
-  _proto.hasElementaryStream = function hasElementaryStream(type) {
-    return this._elementaryStreams[type] === true;
-  }
-  /**
-   * Utility method for parseLevelPlaylist to create an initialization vector for a given segment
-   * @param {number} segmentNumber - segment number to generate IV with
-   * @returns {Uint8Array}
-   */
-  ;
-
-  _proto.createInitializationVector = function createInitializationVector(segmentNumber) {
-    var uint8View = new Uint8Array(16);
-
-    for (var i = 12; i < 16; i++) {
-      uint8View[i] = segmentNumber >> 8 * (15 - i) & 0xff;
-    }
-
-    return uint8View;
-  }
-  /**
-   * Utility method for parseLevelPlaylist to get a fragment's decryption data from the currently parsed encryption key data
-   * @param levelkey - a playlist's encryption info
-   * @param segmentNumber - the fragment's segment number
-   * @returns {LevelKey} - an object to be applied as a fragment's decryptdata
-   */
-  ;
-
-  _proto.setDecryptDataFromLevelKey = function setDecryptDataFromLevelKey(levelkey, segmentNumber) {
-    var decryptdata = levelkey;
-
-    if (levelkey !== null && levelkey !== void 0 && levelkey.method && levelkey.uri && !levelkey.iv) {
-      decryptdata = new level_key_LevelKey(levelkey.baseuri, levelkey.reluri);
-      decryptdata.method = levelkey.method;
-      decryptdata.iv = this.createInitializationVector(segmentNumber);
-    }
-
-    return decryptdata;
-  };
-
-  fragment_createClass(Fragment, [{
-    key: "url",
-    get: function get() {
-      if (!this._url && this.relurl) {
-        this._url = Object(url_toolkit["buildAbsoluteURL"])(this.baseurl, this.relurl, {
-          alwaysNormalize: true
-        });
-      }
-
-      return this._url;
-    },
-    set: function set(value) {
-      this._url = value;
-    }
-  }, {
-    key: "byteRange",
-    get: function get() {
-      if (!this._byteRange) {
-        return [];
-      }
-
-      return this._byteRange;
-    }
-    /**
-     * @type {number}
-     */
-
-  }, {
-    key: "byteRangeStartOffset",
-    get: function get() {
-      return this.byteRange[0];
-    }
-  }, {
-    key: "byteRangeEndOffset",
-    get: function get() {
-      return this.byteRange[1];
-    }
-  }, {
-    key: "decryptdata",
-    get: function get() {
-      if (!this.levelkey && !this._decryptdata) {
-        return null;
-      }
-
-      if (!this._decryptdata && this.levelkey) {
-        var sn = this.sn;
-
-        if (typeof sn !== 'number') {
-          // We are fetching decryption data for a initialization segment
-          // If the segment was encrypted with AES-128
-          // It must have an IV defined. We cannot substitute the Segment Number in.
-          if (this.levelkey && this.levelkey.method === 'AES-128' && !this.levelkey.iv) {
-            logger["logger"].warn("missing IV for initialization segment with method=\"" + this.levelkey.method + "\" - compliance issue");
-          }
-          /*
-          Be converted to a Number.
-          'initSegment' will become NaN.
-          NaN, which when converted through ToInt32() -> +0.
-          ---
-          Explicitly set sn to resulting value from implicit conversions 'initSegment' values for IV generation.
-          */
-
-
-          sn = 0;
-        }
-
-        this._decryptdata = this.setDecryptDataFromLevelKey(this.levelkey, sn);
-      }
-
-      return this._decryptdata;
-    }
-  }, {
-    key: "endProgramDateTime",
-    get: function get() {
-      if (this.programDateTime === null) {
-        return null;
-      }
-
-      if (!Object(number["isFiniteNumber"])(this.programDateTime)) {
-        return null;
-      }
-
-      var duration = !Object(number["isFiniteNumber"])(this.duration) ? 0 : this.duration;
-      return this.programDateTime + duration * 1000;
-    }
-  }, {
-    key: "encrypted",
-    get: function get() {
-      // eslint-disable-next-line @typescript-eslint/prefer-optional-chain
-      return !!(this.decryptdata && this.decryptdata.uri !== null && this.decryptdata.key === null);
-    }
-  }]);
-
-  return Fragment;
-}();
-
-
-// CONCATENATED MODULE: ./src/loader/level.js
-
-
-function level_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
-
-function level_createClass(Constructor, protoProps, staticProps) { if (protoProps) level_defineProperties(Constructor.prototype, protoProps); if (staticProps) level_defineProperties(Constructor, staticProps); return Constructor; }
-
-var level_Level = /*#__PURE__*/function () {
-  function Level(baseUrl) {
-    // Please keep properties in alphabetical order
-    this.endCC = 0;
-    this.endSN = 0;
-    this.fragments = [];
-    this.initSegment = null;
-    this.live = true;
-    this.needSidxRanges = false;
-    this.startCC = 0;
-    this.startSN = 0;
-    this.startTimeOffset = null;
-    this.targetduration = 0;
-    this.totalduration = 0;
-    this.type = null;
-    this.url = baseUrl;
-    this.version = null;
-  }
-
-  level_createClass(Level, [{
-    key: "hasProgramDateTime",
-    get: function get() {
-      return !!(this.fragments[0] && Object(number["isFiniteNumber"])(this.fragments[0].programDateTime));
-    }
-  }]);
-
-  return Level;
-}();
-
-
-// CONCATENATED MODULE: ./src/utils/attr-list.js
-var DECIMAL_RESOLUTION_REGEX = /^(\d+)x(\d+)$/; // eslint-disable-line no-useless-escape
-
-var ATTR_LIST_REGEX = /\s*(.+?)\s*=((?:\".*?\")|.*?)(?:,|$)/g; // eslint-disable-line no-useless-escape
-// adapted from https://github.com/kanongil/node-m3u8parse/blob/master/attrlist.js
-
-var AttrList = /*#__PURE__*/function () {
-  function AttrList(attrs) {
-    if (typeof attrs === 'string') {
-      attrs = AttrList.parseAttrList(attrs);
-    }
-
-    for (var attr in attrs) {
-      if (attrs.hasOwnProperty(attr)) {
-        this[attr] = attrs[attr];
-      }
-    }
-  }
-
-  var _proto = AttrList.prototype;
-
-  _proto.decimalInteger = function decimalInteger(attrName) {
-    var intValue = parseInt(this[attrName], 10);
-
-    if (intValue > Number.MAX_SAFE_INTEGER) {
-      return Infinity;
-    }
-
-    return intValue;
-  };
-
-  _proto.hexadecimalInteger = function hexadecimalInteger(attrName) {
-    if (this[attrName]) {
-      var stringValue = (this[attrName] || '0x').slice(2);
-      stringValue = (stringValue.length & 1 ? '0' : '') + stringValue;
-      var value = new Uint8Array(stringValue.length / 2);
-
-      for (var i = 0; i < stringValue.length / 2; i++) {
-        value[i] = parseInt(stringValue.slice(i * 2, i * 2 + 2), 16);
-      }
-
-      return value;
-    } else {
-      return null;
-    }
-  };
-
-  _proto.hexadecimalIntegerAsNumber = function hexadecimalIntegerAsNumber(attrName) {
-    var intValue = parseInt(this[attrName], 16);
-
-    if (intValue > Number.MAX_SAFE_INTEGER) {
-      return Infinity;
-    }
-
-    return intValue;
-  };
-
-  _proto.decimalFloatingPoint = function decimalFloatingPoint(attrName) {
-    return parseFloat(this[attrName]);
-  };
-
-  _proto.enumeratedString = function enumeratedString(attrName) {
-    return this[attrName];
-  };
-
-  _proto.decimalResolution = function decimalResolution(attrName) {
-    var res = DECIMAL_RESOLUTION_REGEX.exec(this[attrName]);
-
-    if (res === null) {
-      return undefined;
-    }
-
-    return {
-      width: parseInt(res[1], 10),
-      height: parseInt(res[2], 10)
-    };
-  };
-
-  AttrList.parseAttrList = function parseAttrList(input) {
-    var match,
-        attrs = {};
-    ATTR_LIST_REGEX.lastIndex = 0;
-
-    while ((match = ATTR_LIST_REGEX.exec(input)) !== null) {
-      var value = match[2],
-          quote = '"';
-
-      if (value.indexOf(quote) === 0 && value.lastIndexOf(quote) === value.length - 1) {
-        value = value.slice(1, -1);
-      }
-
-      attrs[match[1]] = value;
-    }
-
-    return attrs;
-  };
-
-  return AttrList;
-}();
-
-/* harmony default export */ var attr_list = (AttrList);
-// CONCATENATED MODULE: ./src/utils/codecs.ts
-// from http://mp4ra.org/codecs.html
-var sampleEntryCodesISO = {
-  audio: {
-    'a3ds': true,
-    'ac-3': true,
-    'ac-4': true,
-    'alac': true,
-    'alaw': true,
-    'dra1': true,
-    'dts+': true,
-    'dts-': true,
-    'dtsc': true,
-    'dtse': true,
-    'dtsh': true,
-    'ec-3': true,
-    'enca': true,
-    'g719': true,
-    'g726': true,
-    'm4ae': true,
-    'mha1': true,
-    'mha2': true,
-    'mhm1': true,
-    'mhm2': true,
-    'mlpa': true,
-    'mp4a': true,
-    'raw ': true,
-    'Opus': true,
-    'samr': true,
-    'sawb': true,
-    'sawp': true,
-    'sevc': true,
-    'sqcp': true,
-    'ssmv': true,
-    'twos': true,
-    'ulaw': true
-  },
-  video: {
-    'avc1': true,
-    'avc2': true,
-    'avc3': true,
-    'avc4': true,
-    'avcp': true,
-    'drac': true,
-    'dvav': true,
-    'dvhe': true,
-    'encv': true,
-    'hev1': true,
-    'hvc1': true,
-    'mjp2': true,
-    'mp4v': true,
-    'mvc1': true,
-    'mvc2': true,
-    'mvc3': true,
-    'mvc4': true,
-    'resv': true,
-    'rv60': true,
-    's263': true,
-    'svc1': true,
-    'svc2': true,
-    'vc-1': true,
-    'vp08': true,
-    'vp09': true
-  }
-};
-
-function isCodecType(codec, type) {
-  var typeCodes = sampleEntryCodesISO[type];
-  return !!typeCodes && typeCodes[codec.slice(0, 4)] === true;
-}
-
-function isCodecSupportedInMp4(codec, type) {
-  return MediaSource.isTypeSupported((type || 'video') + "/mp4;codecs=\"" + codec + "\"");
-}
-
-
-// CONCATENATED MODULE: ./src/loader/m3u8-parser.ts
-
-
-
-
-
-
-
-
-
-
-
-/**
- * M3U8 parser
- * @module
- */
-// https://regex101.com is your friend
-var MASTER_PLAYLIST_REGEX = /(?:#EXT-X-STREAM-INF:([^\n\r]*)[\r\n]+([^\r\n]+)|#EXT-X-SESSION-DATA:([^\n\r]*)[\r\n]+)/g;
-var MASTER_PLAYLIST_MEDIA_REGEX = /#EXT-X-MEDIA:(.*)/g;
-var LEVEL_PLAYLIST_REGEX_FAST = new RegExp([/#EXTINF:\s*(\d*(?:\.\d+)?)(?:,(.*)\s+)?/.source, // duration (#EXTINF:<duration>,<title>), group 1 => duration, group 2 => title
-/|(?!#)([\S+ ?]+)/.source, // segment URI, group 3 => the URI (note newline is not eaten)
-/|#EXT-X-BYTERANGE:*(.+)/.source, // next segment's byterange, group 4 => range spec (x@y)
-/|#EXT-X-PROGRAM-DATE-TIME:(.+)/.source, // next segment's program date/time group 5 => the datetime spec
-/|#.*/.source // All other non-segment oriented tags will match with all groups empty
-].join(''), 'g');
-var LEVEL_PLAYLIST_REGEX_SLOW = /(?:(?:#(EXTM3U))|(?:#EXT-X-(PLAYLIST-TYPE):(.+))|(?:#EXT-X-(MEDIA-SEQUENCE): *(\d+))|(?:#EXT-X-(TARGETDURATION): *(\d+))|(?:#EXT-X-(KEY):(.+))|(?:#EXT-X-(START):(.+))|(?:#EXT-X-(ENDLIST))|(?:#EXT-X-(DISCONTINUITY-SEQ)UENCE:(\d+))|(?:#EXT-X-(DIS)CONTINUITY))|(?:#EXT-X-(VERSION):(\d+))|(?:#EXT-X-(MAP):(.+))|(?:(#)([^:]*):(.*))|(?:(#)(.*))(?:.*)\r?\n?/;
-var MP4_REGEX_SUFFIX = /\.(mp4|m4s|m4v|m4a)$/i;
-
-function backfillProgramDateTimes(fragments, startIndex) {
-  var fragPrev = fragments[startIndex];
-
-  for (var i = startIndex - 1; i >= 0; i--) {
-    var frag = fragments[i];
-    frag.programDateTime = fragPrev.programDateTime - frag.duration * 1000;
-    fragPrev = frag;
-  }
-}
-
-function assignProgramDateTime(frag, prevFrag) {
-  if (frag.rawProgramDateTime) {
-    frag.programDateTime = Date.parse(frag.rawProgramDateTime);
-  } else if (prevFrag !== null && prevFrag !== void 0 && prevFrag.programDateTime) {
-    frag.programDateTime = prevFrag.endProgramDateTime;
-  }
-
-  if (!Object(number["isFiniteNumber"])(frag.programDateTime)) {
-    frag.programDateTime = null;
-    frag.rawProgramDateTime = null;
-  }
-}
-
-var m3u8_parser_M3U8Parser = /*#__PURE__*/function () {
-  function M3U8Parser() {}
-
-  M3U8Parser.findGroup = function findGroup(groups, mediaGroupId) {
-    for (var i = 0; i < groups.length; i++) {
-      var group = groups[i];
-
-      if (group.id === mediaGroupId) {
-        return group;
-      }
-    }
-  };
-
-  M3U8Parser.convertAVC1ToAVCOTI = function convertAVC1ToAVCOTI(codec) {
-    var avcdata = codec.split('.');
-    var result;
-
-    if (avcdata.length > 2) {
-      result = avcdata.shift() + '.';
-      result += parseInt(avcdata.shift()).toString(16);
-      result += ('000' + parseInt(avcdata.shift()).toString(16)).substr(-4);
-    } else {
-      result = codec;
-    }
-
-    return result;
-  };
-
-  M3U8Parser.resolve = function resolve(url, baseUrl) {
-    return url_toolkit["buildAbsoluteURL"](baseUrl, url, {
-      alwaysNormalize: true
-    });
-  };
-
-  M3U8Parser.parseMasterPlaylist = function parseMasterPlaylist(string, baseurl) {
-    // TODO(typescript-level)
-    var levels = [];
-    var sessionData = {};
-    var hasSessionData = false;
-    MASTER_PLAYLIST_REGEX.lastIndex = 0; // TODO(typescript-level)
-
-    function setCodecs(codecs, level) {
-      ['video', 'audio'].forEach(function (type) {
-        var filtered = codecs.filter(function (codec) {
-          return isCodecType(codec, type);
-        });
-
-        if (filtered.length) {
-          var preferred = filtered.filter(function (codec) {
-            return codec.lastIndexOf('avc1', 0) === 0 || codec.lastIndexOf('mp4a', 0) === 0;
-          });
-          level[type + "Codec"] = preferred.length > 0 ? preferred[0] : filtered[0]; // remove from list
-
-          codecs = codecs.filter(function (codec) {
-            return filtered.indexOf(codec) === -1;
-          });
-        }
-      });
-      level.unknownCodecs = codecs;
-    }
-
-    var result;
-
-    while ((result = MASTER_PLAYLIST_REGEX.exec(string)) != null) {
-      if (result[1]) {
-        // '#EXT-X-STREAM-INF' is found, parse level tag  in group 1
-        // TODO(typescript-level)
-        var level = {};
-        var attrs = level.attrs = new attr_list(result[1]);
-        level.url = M3U8Parser.resolve(result[2], baseurl);
-        var resolution = attrs.decimalResolution('RESOLUTION');
-
-        if (resolution) {
-          level.width = resolution.width;
-          level.height = resolution.height;
-        }
-
-        level.bitrate = attrs.decimalInteger('AVERAGE-BANDWIDTH') || attrs.decimalInteger('BANDWIDTH');
-        level.name = attrs.NAME;
-        setCodecs([].concat((attrs.CODECS || '').split(/[ ,]+/)), level);
-
-        if (level.videoCodec && level.videoCodec.indexOf('avc1') !== -1) {
-          level.videoCodec = M3U8Parser.convertAVC1ToAVCOTI(level.videoCodec);
-        }
-
-        levels.push(level);
-      } else if (result[3]) {
-        // '#EXT-X-SESSION-DATA' is found, parse session data in group 3
-        var sessionAttrs = new attr_list(result[3]);
-
-        if (sessionAttrs['DATA-ID']) {
-          hasSessionData = true;
-          sessionData[sessionAttrs['DATA-ID']] = sessionAttrs;
-        }
-      }
-    }
-
-    return {
-      levels: levels,
-      sessionData: hasSessionData ? sessionData : null
-    };
-  };
-
-  M3U8Parser.parseMasterPlaylistMedia = function parseMasterPlaylistMedia(string, baseurl, type, audioGroups) {
-    if (audioGroups === void 0) {
-      audioGroups = [];
-    }
-
-    var result;
-    var medias = [];
-    var id = 0;
-    MASTER_PLAYLIST_MEDIA_REGEX.lastIndex = 0;
-
-    while ((result = MASTER_PLAYLIST_MEDIA_REGEX.exec(string)) !== null) {
-      var attrs = new attr_list(result[1]);
-
-      if (attrs.TYPE === type) {
-        var media = {
-          attrs: attrs,
-          id: id++,
-          groupId: attrs['GROUP-ID'],
-          instreamId: attrs['INSTREAM-ID'],
-          name: attrs.NAME || attrs.LANGUAGE,
-          type: type,
-          default: attrs.DEFAULT === 'YES',
-          autoselect: attrs.AUTOSELECT === 'YES',
-          forced: attrs.FORCED === 'YES',
-          lang: attrs.LANGUAGE
-        };
-
-        if (attrs.URI) {
-          media.url = M3U8Parser.resolve(attrs.URI, baseurl);
-        }
-
-        if (audioGroups.length) {
-          // If there are audio groups signalled in the manifest, let's look for a matching codec string for this track
-          var groupCodec = M3U8Parser.findGroup(audioGroups, media.groupId); // If we don't find the track signalled, lets use the first audio groups codec we have
-          // Acting as a best guess
-
-          media.audioCodec = groupCodec ? groupCodec.codec : audioGroups[0].codec;
-        }
-
-        medias.push(media);
-      }
-    }
-
-    return medias;
-  };
-
-  M3U8Parser.parseLevelPlaylist = function parseLevelPlaylist(string, baseurl, id, type, levelUrlId) {
-    var currentSN = 0;
-    var totalduration = 0;
-    var level = new level_Level(baseurl);
-    var discontinuityCounter = 0;
-    var prevFrag = null;
-    var frag = new fragment_Fragment();
-    var result;
-    var i;
-    var levelkey;
-    var firstPdtIndex = null;
-    LEVEL_PLAYLIST_REGEX_FAST.lastIndex = 0;
-
-    while ((result = LEVEL_PLAYLIST_REGEX_FAST.exec(string)) !== null) {
-      var duration = result[1];
-
-      if (duration) {
-        // INF
-        frag.duration = parseFloat(duration); // avoid sliced strings    https://github.com/video-dev/hls.js/issues/939
-
-        var title = (' ' + result[2]).slice(1);
-        frag.title = title || null;
-        frag.tagList.push(title ? ['INF', duration, title] : ['INF', duration]);
-      } else if (result[3]) {
-        // url
-        if (Object(number["isFiniteNumber"])(frag.duration)) {
-          var sn = currentSN++;
-          frag.type = type;
-          frag.start = totalduration;
-
-          if (levelkey) {
-            frag.levelkey = levelkey;
-          }
-
-          frag.sn = sn;
-          frag.level = id;
-          frag.cc = discontinuityCounter;
-          frag.urlId = levelUrlId;
-          frag.baseurl = baseurl; // avoid sliced strings    https://github.com/video-dev/hls.js/issues/939
-
-          frag.relurl = (' ' + result[3]).slice(1);
-          assignProgramDateTime(frag, prevFrag);
-          level.fragments.push(frag);
-          prevFrag = frag;
-          totalduration += frag.duration;
-          frag = new fragment_Fragment();
-        }
-      } else if (result[4]) {
-        // X-BYTERANGE
-        var data = (' ' + result[4]).slice(1);
-
-        if (prevFrag) {
-          frag.setByteRange(data, prevFrag);
-        } else {
-          frag.setByteRange(data);
-        }
-      } else if (result[5]) {
-        // PROGRAM-DATE-TIME
-        // avoid sliced strings    https://github.com/video-dev/hls.js/issues/939
-        frag.rawProgramDateTime = (' ' + result[5]).slice(1);
-        frag.tagList.push(['PROGRAM-DATE-TIME', frag.rawProgramDateTime]);
-
-        if (firstPdtIndex === null) {
-          firstPdtIndex = level.fragments.length;
-        }
-      } else {
-        result = result[0].match(LEVEL_PLAYLIST_REGEX_SLOW);
-
-        if (!result) {
-          logger["logger"].warn('No matches on slow regex match for level playlist!');
-          continue;
-        }
-
-        for (i = 1; i < result.length; i++) {
-          if (typeof result[i] !== 'undefined') {
-            break;
-          }
-        } // avoid sliced strings    https://github.com/video-dev/hls.js/issues/939
-
-
-        var value1 = (' ' + result[i + 1]).slice(1);
-        var value2 = (' ' + result[i + 2]).slice(1);
-
-        switch (result[i]) {
-          case '#':
-            frag.tagList.push(value2 ? [value1, value2] : [value1]);
-            break;
-
-          case 'PLAYLIST-TYPE':
-            level.type = value1.toUpperCase();
-            break;
-
-          case 'MEDIA-SEQUENCE':
-            currentSN = level.startSN = parseInt(value1);
-            break;
-
-          case 'TARGETDURATION':
-            level.targetduration = parseFloat(value1);
-            break;
-
-          case 'VERSION':
-            level.version = parseInt(value1);
-            break;
-
-          case 'EXTM3U':
-            break;
-
-          case 'ENDLIST':
-            level.live = false;
-            break;
-
-          case 'DIS':
-            discontinuityCounter++;
-            frag.tagList.push(['DIS']);
-            break;
-
-          case 'DISCONTINUITY-SEQ':
-            discontinuityCounter = parseInt(value1);
-            break;
-
-          case 'KEY':
-            {
-              // https://tools.ietf.org/html/rfc8216#section-4.3.2.4
-              var decryptparams = value1;
-              var keyAttrs = new attr_list(decryptparams);
-              var decryptmethod = keyAttrs.enumeratedString('METHOD');
-              var decrypturi = keyAttrs.URI;
-              var decryptiv = keyAttrs.hexadecimalInteger('IV'); // From RFC: This attribute is OPTIONAL; its absence indicates an implicit value of "identity".
-
-              var decryptkeyformat = keyAttrs.KEYFORMAT || 'identity';
-
-              if (decryptkeyformat === 'com.apple.streamingkeydelivery') {
-                logger["logger"].warn('Keyformat com.apple.streamingkeydelivery is not supported');
-                continue;
-              }
-
-              if (decryptmethod) {
-                levelkey = new level_key_LevelKey(baseurl, decrypturi);
-
-                if (decrypturi && ['AES-128', 'SAMPLE-AES', 'SAMPLE-AES-CENC'].indexOf(decryptmethod) >= 0) {
-                  levelkey.method = decryptmethod;
-                  levelkey.key = null; // Initialization Vector (IV)
-
-                  levelkey.iv = decryptiv;
-                }
-              }
-
-              break;
-            }
-
-          case 'START':
-            {
-              var startAttrs = new attr_list(value1);
-              var startTimeOffset = startAttrs.decimalFloatingPoint('TIME-OFFSET'); // TIME-OFFSET can be 0
-
-              if (Object(number["isFiniteNumber"])(startTimeOffset)) {
-                level.startTimeOffset = startTimeOffset;
-              }
-
-              break;
-            }
-
-          case 'MAP':
-            {
-              var mapAttrs = new attr_list(value1);
-              frag.relurl = mapAttrs.URI;
-
-              if (mapAttrs.BYTERANGE) {
-                frag.setByteRange(mapAttrs.BYTERANGE);
-              }
-
-              frag.baseurl = baseurl;
-              frag.level = id;
-              frag.type = type;
-              frag.sn = 'initSegment';
-              level.initSegment = frag;
-              frag = new fragment_Fragment();
-              frag.rawProgramDateTime = level.initSegment.rawProgramDateTime;
-              break;
-            }
-
-          default:
-            logger["logger"].warn("line parsed but not handled: " + result);
-            break;
-        }
-      }
-    }
-
-    frag = prevFrag; // logger.log('found ' + level.fragments.length + ' fragments');
-
-    if (frag && !frag.relurl) {
-      level.fragments.pop();
-      totalduration -= frag.duration;
-    }
-
-    level.totalduration = totalduration;
-    level.averagetargetduration = totalduration / level.fragments.length;
-    level.endSN = currentSN - 1;
-    level.startCC = level.fragments[0] ? level.fragments[0].cc : 0;
-    level.endCC = discontinuityCounter;
-
-    if (!level.initSegment && level.fragments.length) {
-      // this is a bit lurky but HLS really has no other way to tell us
-      // if the fragments are TS or MP4, except if we download them :/
-      // but this is to be able to handle SIDX.
-      if (level.fragments.every(function (frag) {
-        return MP4_REGEX_SUFFIX.test(frag.relurl);
-      })) {
-        logger["logger"].warn('MP4 fragments found but no init segment (probably no MAP, incomplete M3U8), trying to fetch SIDX');
-        frag = new fragment_Fragment();
-        frag.relurl = level.fragments[0].relurl;
-        frag.baseurl = baseurl;
-        frag.level = id;
-        frag.type = type;
-        frag.sn = 'initSegment';
-        level.initSegment = frag;
-        level.needSidxRanges = true;
-      }
-    }
-    /**
-     * Backfill any missing PDT values
-       "If the first EXT-X-PROGRAM-DATE-TIME tag in a Playlist appears after
-       one or more Media Segment URIs, the client SHOULD extrapolate
-       backward from that tag (using EXTINF durations and/or media
-       timestamps) to associate dates with those segments."
-     * We have already extrapolated forward, but all fragments up to the first instance of PDT do not have their PDTs
-     * computed.
-     */
-
-
-    if (firstPdtIndex) {
-      backfillProgramDateTimes(level.fragments, firstPdtIndex);
-    }
-
-    return level;
-  };
-
-  return M3U8Parser;
-}();
-
-
-// CONCATENATED MODULE: ./src/loader/playlist-loader.ts
-
-
-
-function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
-
-/**
- * PlaylistLoader - delegate for media manifest/playlist loading tasks. Takes care of parsing media to internal data-models.
- *
- * Once loaded, dispatches events with parsed data-models of manifest/levels/audio/subtitle tracks.
- *
- * Uses loader(s) set in config to do actual internal loading of resource tasks.
- *
- * @module
- *
- */
-
-
-
-
-
-
-
-var _window = window,
-    performance = _window.performance;
-/**
- * @constructor
- */
-
-var playlist_loader_PlaylistLoader = /*#__PURE__*/function (_EventHandler) {
-  _inheritsLoose(PlaylistLoader, _EventHandler);
-
-  /**
-   * @constructs
-   * @param {Hls} hls
-   */
-  function PlaylistLoader(hls) {
-    var _this;
-
-    _this = _EventHandler.call(this, hls, events["default"].MANIFEST_LOADING, events["default"].LEVEL_LOADING, events["default"].AUDIO_TRACK_LOADING, events["default"].SUBTITLE_TRACK_LOADING) || this;
-    _this.loaders = {};
-    return _this;
-  }
-  /**
-   * @param {PlaylistContextType} type
-   * @returns {boolean}
-   */
-
-
-  PlaylistLoader.canHaveQualityLevels = function canHaveQualityLevels(type) {
-    return type !== PlaylistContextType.AUDIO_TRACK && type !== PlaylistContextType.SUBTITLE_TRACK;
-  }
-  /**
-   * Map context.type to LevelType
-   * @param {PlaylistLoaderContext} context
-   * @returns {LevelType}
-   */
-  ;
-
-  PlaylistLoader.mapContextToLevelType = function mapContextToLevelType(context) {
-    var type = context.type;
-
-    switch (type) {
-      case PlaylistContextType.AUDIO_TRACK:
-        return PlaylistLevelType.AUDIO;
-
-      case PlaylistContextType.SUBTITLE_TRACK:
-        return PlaylistLevelType.SUBTITLE;
-
-      default:
-        return PlaylistLevelType.MAIN;
-    }
-  };
-
-  PlaylistLoader.getResponseUrl = function getResponseUrl(response, context) {
-    var url = response.url; // responseURL not supported on some browsers (it is used to detect URL redirection)
-    // data-uri mode also not supported (but no need to detect redirection)
-
-    if (url === undefined || url.indexOf('data:') === 0) {
-      // fallback to initial URL
-      url = context.url;
-    }
-
-    return url;
-  }
-  /**
-   * Returns defaults or configured loader-type overloads (pLoader and loader config params)
-   * Default loader is XHRLoader (see utils)
-   * @param {PlaylistLoaderContext} context
-   * @returns {Loader} or other compatible configured overload
-   */
-  ;
-
-  var _proto = PlaylistLoader.prototype;
-
-  _proto.createInternalLoader = function createInternalLoader(context) {
-    var config = this.hls.config;
-    var PLoader = config.pLoader;
-    var Loader = config.loader; // TODO(typescript-config): Verify once config is typed that InternalLoader always returns a Loader
-
-    var InternalLoader = PLoader || Loader;
-    var loader = new InternalLoader(config); // TODO - Do we really need to assign the instance or if the dep has been lost
-
-    context.loader = loader;
-    this.loaders[context.type] = loader;
-    return loader;
-  };
-
-  _proto.getInternalLoader = function getInternalLoader(context) {
-    return this.loaders[context.type];
-  };
-
-  _proto.resetInternalLoader = function resetInternalLoader(contextType) {
-    if (this.loaders[contextType]) {
-      delete this.loaders[contextType];
-    }
-  }
-  /**
-   * Call `destroy` on all internal loader instances mapped (one per context type)
-   */
-  ;
-
-  _proto.destroyInternalLoaders = function destroyInternalLoaders() {
-    for (var contextType in this.loaders) {
-      var loader = this.loaders[contextType];
-
-      if (loader) {
-        loader.destroy();
-      }
-
-      this.resetInternalLoader(contextType);
-    }
-  };
-
-  _proto.destroy = function destroy() {
-    this.destroyInternalLoaders();
-
-    _EventHandler.prototype.destroy.call(this);
-  };
-
-  _proto.onManifestLoading = function onManifestLoading(data) {
-    this.load({
-      url: data.url,
-      type: PlaylistContextType.MANIFEST,
-      level: 0,
-      id: null,
-      responseType: 'text'
-    });
-  };
-
-  _proto.onLevelLoading = function onLevelLoading(data) {
-    this.load({
-      url: data.url,
-      type: PlaylistContextType.LEVEL,
-      level: data.level,
-      id: data.id,
-      responseType: 'text'
-    });
-  };
-
-  _proto.onAudioTrackLoading = function onAudioTrackLoading(data) {
-    this.load({
-      url: data.url,
-      type: PlaylistContextType.AUDIO_TRACK,
-      level: null,
-      id: data.id,
-      responseType: 'text'
-    });
-  };
-
-  _proto.onSubtitleTrackLoading = function onSubtitleTrackLoading(data) {
-    this.load({
-      url: data.url,
-      type: PlaylistContextType.SUBTITLE_TRACK,
-      level: null,
-      id: data.id,
-      responseType: 'text'
-    });
-  };
-
-  _proto.load = function load(context) {
-    var config = this.hls.config;
-    logger["logger"].debug("Loading playlist of type " + context.type + ", level: " + context.level + ", id: " + context.id); // Check if a loader for this context already exists
-
-    var loader = this.getInternalLoader(context);
-
-    if (loader) {
-      var loaderContext = loader.context;
-
-      if (loaderContext && loaderContext.url === context.url) {
-        // same URL can't overlap
-        logger["logger"].trace('playlist request ongoing');
-        return false;
-      } else {
-        logger["logger"].warn("aborting previous loader for type: " + context.type);
-        loader.abort();
-      }
-    }
-
-    var maxRetry;
-    var timeout;
-    var retryDelay;
-    var maxRetryDelay; // apply different configs for retries depending on
-    // context (manifest, level, audio/subs playlist)
-
-    switch (context.type) {
-      case PlaylistContextType.MANIFEST:
-        maxRetry = config.manifestLoadingMaxRetry;
-        timeout = config.manifestLoadingTimeOut;
-        retryDelay = config.manifestLoadingRetryDelay;
-        maxRetryDelay = config.manifestLoadingMaxRetryTimeout;
-        break;
-
-      case PlaylistContextType.LEVEL:
-        // Disable internal loader retry logic, since we are managing retries in Level Controller
-        maxRetry = 0;
-        maxRetryDelay = 0;
-        retryDelay = 0;
-        timeout = config.levelLoadingTimeOut; // TODO Introduce retry settings for audio-track and subtitle-track, it should not use level retry config
-
-        break;
-
-      default:
-        maxRetry = config.levelLoadingMaxRetry;
-        timeout = config.levelLoadingTimeOut;
-        retryDelay = config.levelLoadingRetryDelay;
-        maxRetryDelay = config.levelLoadingMaxRetryTimeout;
-        break;
-    }
-
-    loader = this.createInternalLoader(context);
-    var loaderConfig = {
-      timeout: timeout,
-      maxRetry: maxRetry,
-      retryDelay: retryDelay,
-      maxRetryDelay: maxRetryDelay
-    };
-    var loaderCallbacks = {
-      onSuccess: this.loadsuccess.bind(this),
-      onError: this.loaderror.bind(this),
-      onTimeout: this.loadtimeout.bind(this)
-    };
-    logger["logger"].debug("Calling internal loader delegate for URL: " + context.url);
-    loader.load(context, loaderConfig, loaderCallbacks);
-    return true;
-  };
-
-  _proto.loadsuccess = function loadsuccess(response, stats, context, networkDetails) {
-    if (networkDetails === void 0) {
-      networkDetails = null;
-    }
-
-    if (context.isSidxRequest) {
-      this._handleSidxRequest(response, context);
-
-      this._handlePlaylistLoaded(response, stats, context, networkDetails);
-
-      return;
-    }
-
-    this.resetInternalLoader(context.type);
-
-    if (typeof response.data !== 'string') {
-      throw new Error('expected responseType of "text" for PlaylistLoader');
-    }
-
-    var string = response.data;
-    stats.tload = performance.now(); // stats.mtime = new Date(target.getResponseHeader('Last-Modified'));
-    // Validate if it is an M3U8 at all
-
-    if (string.indexOf('#EXTM3U') !== 0) {
-      this._handleManifestParsingError(response, context, 'no EXTM3U delimiter', networkDetails);
-
-      return;
-    } // Check if chunk-list or master. handle empty chunk list case (first EXTINF not signaled, but TARGETDURATION present)
-
-
-    if (string.indexOf('#EXTINF:') > 0 || string.indexOf('#EXT-X-TARGETDURATION:') > 0) {
-      this._handleTrackOrLevelPlaylist(response, stats, context, networkDetails);
-    } else {
-      this._handleMasterPlaylist(response, stats, context, networkDetails);
-    }
-  };
-
-  _proto.loaderror = function loaderror(response, context, networkDetails) {
-    if (networkDetails === void 0) {
-      networkDetails = null;
-    }
-
-    this._handleNetworkError(context, networkDetails, false, response);
-  };
-
-  _proto.loadtimeout = function loadtimeout(stats, context, networkDetails) {
-    if (networkDetails === void 0) {
-      networkDetails = null;
-    }
-
-    this._handleNetworkError(context, networkDetails, true);
-  } // TODO(typescript-config): networkDetails can currently be a XHR or Fetch impl,
-  // but with custom loaders it could be generic investigate this further when config is typed
-  ;
-
-  _proto._handleMasterPlaylist = function _handleMasterPlaylist(response, stats, context, networkDetails) {
-    var hls = this.hls;
-    var string = response.data;
-    var url = PlaylistLoader.getResponseUrl(response, context);
-
-    var _M3U8Parser$parseMast = m3u8_parser_M3U8Parser.parseMasterPlaylist(string, url),
-        levels = _M3U8Parser$parseMast.levels,
-        sessionData = _M3U8Parser$parseMast.sessionData;
-
-    if (!levels.length) {
-      this._handleManifestParsingError(response, context, 'no level found in manifest', networkDetails);
-
-      return;
-    } // multi level playlist, parse level info
-
-
-    var audioGroups = levels.map(function (level) {
-      return {
-        id: level.attrs.AUDIO,
-        codec: level.audioCodec
-      };
-    });
-    var audioTracks = m3u8_parser_M3U8Parser.parseMasterPlaylistMedia(string, url, 'AUDIO', audioGroups);
-    var subtitles = m3u8_parser_M3U8Parser.parseMasterPlaylistMedia(string, url, 'SUBTITLES');
-    var captions = m3u8_parser_M3U8Parser.parseMasterPlaylistMedia(string, url, 'CLOSED-CAPTIONS');
-
-    if (audioTracks.length) {
-      // check if we have found an audio track embedded in main playlist (audio track without URI attribute)
-      var embeddedAudioFound = false;
-      audioTracks.forEach(function (audioTrack) {
-        if (!audioTrack.url) {
-          embeddedAudioFound = true;
-        }
-      }); // if no embedded audio track defined, but audio codec signaled in quality level,
-      // we need to signal this main audio track this could happen with playlists with
-      // alt audio rendition in which quality levels (main)
-      // contains both audio+video. but with mixed audio track not signaled
-
-      if (embeddedAudioFound === false && levels[0].audioCodec && !levels[0].attrs.AUDIO) {
-        logger["logger"].log('audio codec signaled in quality level, but no embedded audio track signaled, create one');
-        audioTracks.unshift({
-          type: 'main',
-          name: 'main',
-          default: false,
-          autoselect: false,
-          forced: false,
-          id: -1,
-          attrs: {},
-          url: ''
-        });
-      }
-    }
-
-    hls.trigger(events["default"].MANIFEST_LOADED, {
-      levels: levels,
-      audioTracks: audioTracks,
-      subtitles: subtitles,
-      captions: captions,
-      url: url,
-      stats: stats,
-      networkDetails: networkDetails,
-      sessionData: sessionData
-    });
-  };
-
-  _proto._handleTrackOrLevelPlaylist = function _handleTrackOrLevelPlaylist(response, stats, context, networkDetails) {
-    var hls = this.hls;
-    var id = context.id,
-        level = context.level,
-        type = context.type;
-    var url = PlaylistLoader.getResponseUrl(response, context); // if the values are null, they will result in the else conditional
-
-    var levelUrlId = Object(number["isFiniteNumber"])(id) ? id : 0;
-    var levelId = Object(number["isFiniteNumber"])(level) ? level : levelUrlId;
-    var levelType = PlaylistLoader.mapContextToLevelType(context);
-    var levelDetails = m3u8_parser_M3U8Parser.parseLevelPlaylist(response.data, url, levelId, levelType, levelUrlId); // set stats on level structure
-    // TODO(jstackhouse): why? mixing concerns, is it just treated as value bag?
-
-    levelDetails.tload = stats.tload;
-
-    if (!levelDetails.fragments.length) {
-      hls.trigger(events["default"].ERROR, {
-        type: errors["ErrorTypes"].NETWORK_ERROR,
-        details: errors["ErrorDetails"].LEVEL_EMPTY_ERROR,
-        fatal: false,
-        url: url,
-        reason: 'no fragments found in level',
-        level: typeof context.level === 'number' ? context.level : undefined
-      });
-      return;
-    } // We have done our first request (Manifest-type) and receive
-    // not a master playlist but a chunk-list (track/level)
-    // We fire the manifest-loaded event anyway with the parsed level-details
-    // by creating a single-level structure for it.
-
-
-    if (type === PlaylistContextType.MANIFEST) {
-      var singleLevel = {
-        url: url,
-        details: levelDetails
-      };
-      hls.trigger(events["default"].MANIFEST_LOADED, {
-        levels: [singleLevel],
-        audioTracks: [],
-        url: url,
-        stats: stats,
-        networkDetails: networkDetails,
-        sessionData: null
-      });
-    } // save parsing time
-
-
-    stats.tparsed = performance.now(); // in case we need SIDX ranges
-    // return early after calling load for
-    // the SIDX box.
-
-    if (levelDetails.needSidxRanges) {
-      var sidxUrl = levelDetails.initSegment.url;
-      this.load({
-        url: sidxUrl,
-        isSidxRequest: true,
-        type: type,
-        level: level,
-        levelDetails: levelDetails,
-        id: id,
-        rangeStart: 0,
-        rangeEnd: 2048,
-        responseType: 'arraybuffer'
-      });
-      return;
-    } // extend the context with the new levelDetails property
-
-
-    context.levelDetails = levelDetails;
-
-    this._handlePlaylistLoaded(response, stats, context, networkDetails);
-  };
-
-  _proto._handleSidxRequest = function _handleSidxRequest(response, context) {
-    if (typeof response.data === 'string') {
-      throw new Error('sidx request must be made with responseType of array buffer');
-    }
-
-    var sidxInfo = mp4demuxer["default"].parseSegmentIndex(new Uint8Array(response.data)); // if provided fragment does not contain sidx, early return
-
-    if (!sidxInfo) {
-      return;
-    }
-
-    var sidxReferences = sidxInfo.references;
-    var levelDetails = context.levelDetails;
-    sidxReferences.forEach(function (segmentRef, index) {
-      var segRefInfo = segmentRef.info;
-
-      if (!levelDetails) {
-        return;
-      }
-
-      var frag = levelDetails.fragments[index];
-
-      if (frag.byteRange.length === 0) {
-        frag.setByteRange(String(1 + segRefInfo.end - segRefInfo.start) + '@' + String(segRefInfo.start));
-      }
-    });
-
-    if (levelDetails) {
-      levelDetails.initSegment.setByteRange(String(sidxInfo.moovEndOffset) + '@0');
-    }
-  };
-
-  _proto._handleManifestParsingError = function _handleManifestParsingError(response, context, reason, networkDetails) {
-    this.hls.trigger(events["default"].ERROR, {
-      type: errors["ErrorTypes"].NETWORK_ERROR,
-      details: errors["ErrorDetails"].MANIFEST_PARSING_ERROR,
-      fatal: true,
-      url: response.url,
-      reason: reason,
-      networkDetails: networkDetails
-    });
-  };
-
-  _proto._handleNetworkError = function _handleNetworkError(context, networkDetails, timeout, response) {
-    if (timeout === void 0) {
-      timeout = false;
-    }
-
-    if (response === void 0) {
-      response = null;
-    }
-
-    logger["logger"].info("A network error occured while loading a " + context.type + "-type playlist");
-    var details;
-    var fatal;
-    var loader = this.getInternalLoader(context);
-
-    switch (context.type) {
-      case PlaylistContextType.MANIFEST:
-        details = timeout ? errors["ErrorDetails"].MANIFEST_LOAD_TIMEOUT : errors["ErrorDetails"].MANIFEST_LOAD_ERROR;
-        fatal = true;
-        break;
-
-      case PlaylistContextType.LEVEL:
-        details = timeout ? errors["ErrorDetails"].LEVEL_LOAD_TIMEOUT : errors["ErrorDetails"].LEVEL_LOAD_ERROR;
-        fatal = false;
-        break;
-
-      case PlaylistContextType.AUDIO_TRACK:
-        details = timeout ? errors["ErrorDetails"].AUDIO_TRACK_LOAD_TIMEOUT : errors["ErrorDetails"].AUDIO_TRACK_LOAD_ERROR;
-        fatal = false;
-        break;
-
-      default:
-        // details = ...?
-        fatal = false;
-    }
-
-    if (loader) {
-      loader.abort();
-      this.resetInternalLoader(context.type);
-    } // TODO(typescript-events): when error events are handled, type this
-
-
-    var errorData = {
-      type: errors["ErrorTypes"].NETWORK_ERROR,
-      details: details,
-      fatal: fatal,
-      url: context.url,
-      loader: loader,
-      context: context,
-      networkDetails: networkDetails
-    };
-
-    if (response) {
-      errorData.response = response;
-    }
-
-    this.hls.trigger(events["default"].ERROR, errorData);
-  };
-
-  _proto._handlePlaylistLoaded = function _handlePlaylistLoaded(response, stats, context, networkDetails) {
-    var type = context.type,
-        level = context.level,
-        id = context.id,
-        levelDetails = context.levelDetails;
-
-    if (!levelDetails || !levelDetails.targetduration) {
-      this._handleManifestParsingError(response, context, 'invalid target duration', networkDetails);
-
-      return;
-    }
-
-    var canHaveLevels = PlaylistLoader.canHaveQualityLevels(context.type);
-
-    if (canHaveLevels) {
-      this.hls.trigger(events["default"].LEVEL_LOADED, {
-        details: levelDetails,
-        level: level || 0,
-        id: id || 0,
-        stats: stats,
-        networkDetails: networkDetails
-      });
-    } else {
-      switch (type) {
-        case PlaylistContextType.AUDIO_TRACK:
-          this.hls.trigger(events["default"].AUDIO_TRACK_LOADED, {
-            details: levelDetails,
-            id: id,
-            stats: stats,
-            networkDetails: networkDetails
-          });
-          break;
-
-        case PlaylistContextType.SUBTITLE_TRACK:
-          this.hls.trigger(events["default"].SUBTITLE_TRACK_LOADED, {
-            details: levelDetails,
-            id: id,
-            stats: stats,
-            networkDetails: networkDetails
-          });
-          break;
-      }
-    }
-  };
-
-  return PlaylistLoader;
-}(event_handler);
-
-/* harmony default export */ var playlist_loader = (playlist_loader_PlaylistLoader);
-// CONCATENATED MODULE: ./src/loader/fragment-loader.js
-
-
-
-function fragment_loader_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
-
-/*
- * Fragment Loader
-*/
-
-
-
-
-
-var fragment_loader_FragmentLoader = /*#__PURE__*/function (_EventHandler) {
-  fragment_loader_inheritsLoose(FragmentLoader, _EventHandler);
-
-  function FragmentLoader(hls) {
-    var _this;
-
-    _this = _EventHandler.call(this, hls, events["default"].FRAG_LOADING) || this;
-    _this.loaders = {};
-    return _this;
-  }
-
-  var _proto = FragmentLoader.prototype;
-
-  _proto.destroy = function destroy() {
-    var loaders = this.loaders;
-
-    for (var loaderName in loaders) {
-      var loader = loaders[loaderName];
-
-      if (loader) {
-        loader.destroy();
-      }
-    }
-
-    this.loaders = {};
-
-    _EventHandler.prototype.destroy.call(this);
-  };
-
-  _proto.onFragLoading = function onFragLoading(data) {
-    var frag = data.frag,
-        type = frag.type,
-        loaders = this.loaders,
-        config = this.hls.config,
-        FragmentILoader = config.fLoader,
-        DefaultILoader = config.loader; // reset fragment state
-
-    frag.loaded = 0;
-    var loader = loaders[type];
-
-    if (loader) {
-      logger["logger"].warn("abort previous fragment loader for type: " + type);
-      loader.abort();
-    }
-
-    loader = loaders[type] = frag.loader = config.fLoader ? new FragmentILoader(config) : new DefaultILoader(config);
-    var loaderContext, loaderConfig, loaderCallbacks;
-    loaderContext = {
-      url: frag.url,
-      frag: frag,
-      responseType: 'arraybuffer',
-      progressData: false
-    };
-    var start = frag.byteRangeStartOffset,
-        end = frag.byteRangeEndOffset;
-
-    if (Object(number["isFiniteNumber"])(start) && Object(number["isFiniteNumber"])(end)) {
-      loaderContext.rangeStart = start;
-      loaderContext.rangeEnd = end;
-    }
-
-    loaderConfig = {
-      timeout: config.fragLoadingTimeOut,
-      maxRetry: 0,
-      retryDelay: 0,
-      maxRetryDelay: config.fragLoadingMaxRetryTimeout
-    };
-    loaderCallbacks = {
-      onSuccess: this.loadsuccess.bind(this),
-      onError: this.loaderror.bind(this),
-      onTimeout: this.loadtimeout.bind(this),
-      onProgress: this.loadprogress.bind(this)
-    };
-    loader.load(loaderContext, loaderConfig, loaderCallbacks);
-  };
-
-  _proto.loadsuccess = function loadsuccess(response, stats, context, networkDetails) {
-    if (networkDetails === void 0) {
-      networkDetails = null;
-    }
-
-    var payload = response.data,
-        frag = context.frag; // detach fragment loader on load success
-
-    frag.loader = undefined;
-    this.loaders[frag.type] = undefined;
-    this.hls.trigger(events["default"].FRAG_LOADED, {
-      payload: payload,
-      frag: frag,
-      stats: stats,
-      networkDetails: networkDetails
-    });
-  };
-
-  _proto.loaderror = function loaderror(response, context, networkDetails) {
-    if (networkDetails === void 0) {
-      networkDetails = null;
-    }
-
-    var frag = context.frag;
-    var loader = frag.loader;
-
-    if (loader) {
-      loader.abort();
-    }
-
-    this.loaders[frag.type] = undefined;
-    this.hls.trigger(events["default"].ERROR, {
-      type: errors["ErrorTypes"].NETWORK_ERROR,
-      details: errors["ErrorDetails"].FRAG_LOAD_ERROR,
-      fatal: false,
-      frag: context.frag,
-      response: response,
-      networkDetails: networkDetails
-    });
-  };
-
-  _proto.loadtimeout = function loadtimeout(stats, context, networkDetails) {
-    if (networkDetails === void 0) {
-      networkDetails = null;
-    }
-
-    var frag = context.frag;
-    var loader = frag.loader;
-
-    if (loader) {
-      loader.abort();
-    }
-
-    this.loaders[frag.type] = undefined;
-    this.hls.trigger(events["default"].ERROR, {
-      type: errors["ErrorTypes"].NETWORK_ERROR,
-      details: errors["ErrorDetails"].FRAG_LOAD_TIMEOUT,
-      fatal: false,
-      frag: context.frag,
-      networkDetails: networkDetails
-    });
-  } // data will be used for progressive parsing
-  ;
-
-  _proto.loadprogress = function loadprogress(stats, context, data, networkDetails) {
-    if (networkDetails === void 0) {
-      networkDetails = null;
-    }
-
-    // jshint ignore:line
-    var frag = context.frag;
-    frag.loaded = stats.loaded;
-    this.hls.trigger(events["default"].FRAG_LOAD_PROGRESS, {
-      frag: frag,
-      stats: stats,
-      networkDetails: networkDetails
-    });
-  };
-
-  return FragmentLoader;
-}(event_handler);
-
-/* harmony default export */ var fragment_loader = (fragment_loader_FragmentLoader);
-// CONCATENATED MODULE: ./src/loader/key-loader.ts
-function key_loader_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
-
-/*
- * Decrypt key Loader
-*/
-
-
-
-
-
-var key_loader_KeyLoader = /*#__PURE__*/function (_EventHandler) {
-  key_loader_inheritsLoose(KeyLoader, _EventHandler);
-
-  function KeyLoader(hls) {
-    var _this;
-
-    _this = _EventHandler.call(this, hls, events["default"].KEY_LOADING) || this;
-    _this.loaders = {};
-    _this.decryptkey = null;
-    _this.decrypturl = null;
-    return _this;
-  }
-
-  var _proto = KeyLoader.prototype;
-
-  _proto.destroy = function destroy() {
-    for (var loaderName in this.loaders) {
-      var loader = this.loaders[loaderName];
-
-      if (loader) {
-        loader.destroy();
-      }
-    }
-
-    this.loaders = {};
-
-    _EventHandler.prototype.destroy.call(this);
-  };
-
-  _proto.onKeyLoading = function onKeyLoading(data) {
-    var frag = data.frag;
-    var type = frag.type;
-    var loader = this.loaders[type];
-
-    if (!frag.decryptdata) {
-      logger["logger"].warn('Missing decryption data on fragment in onKeyLoading');
-      return;
-    } // Load the key if the uri is different from previous one, or if the decrypt key has not yet been retrieved
-
-
-    var uri = frag.decryptdata.uri;
-
-    if (uri !== this.decrypturl || this.decryptkey === null) {
-      var config = this.hls.config;
-
-      if (loader) {
-        logger["logger"].warn("abort previous key loader for type:" + type);
-        loader.abort();
-      }
-
-      if (!uri) {
-        logger["logger"].warn('key uri is falsy');
-        return;
-      }
-
-      frag.loader = this.loaders[type] = new config.loader(config);
-      this.decrypturl = uri;
-      this.decryptkey = null;
-      var loaderContext = {
-        url: uri,
-        frag: frag,
-        responseType: 'arraybuffer'
-      }; // maxRetry is 0 so that instead of retrying the same key on the same variant multiple times,
-      // key-loader will trigger an error and rely on stream-controller to handle retry logic.
-      // this will also align retry logic with fragment-loader
-
-      var loaderConfig = {
-        timeout: config.fragLoadingTimeOut,
-        maxRetry: 0,
-        retryDelay: config.fragLoadingRetryDelay,
-        maxRetryDelay: config.fragLoadingMaxRetryTimeout
-      };
-      var loaderCallbacks = {
-        onSuccess: this.loadsuccess.bind(this),
-        onError: this.loaderror.bind(this),
-        onTimeout: this.loadtimeout.bind(this)
-      };
-      frag.loader.load(loaderContext, loaderConfig, loaderCallbacks);
-    } else if (this.decryptkey) {
-      // Return the key if it's already been loaded
-      frag.decryptdata.key = this.decryptkey;
-      this.hls.trigger(events["default"].KEY_LOADED, {
-        frag: frag
-      });
-    }
-  };
-
-  _proto.loadsuccess = function loadsuccess(response, stats, context) {
-    var frag = context.frag;
-
-    if (!frag.decryptdata) {
-      logger["logger"].error('after key load, decryptdata unset');
-      return;
-    }
-
-    this.decryptkey = frag.decryptdata.key = new Uint8Array(response.data); // detach fragment loader on load success
-
-    frag.loader = undefined;
-    delete this.loaders[frag.type];
-    this.hls.trigger(events["default"].KEY_LOADED, {
-      frag: frag
-    });
-  };
-
-  _proto.loaderror = function loaderror(response, context) {
-    var frag = context.frag;
-    var loader = frag.loader;
-
-    if (loader) {
-      loader.abort();
-    }
-
-    delete this.loaders[frag.type];
-    this.hls.trigger(events["default"].ERROR, {
-      type: errors["ErrorTypes"].NETWORK_ERROR,
-      details: errors["ErrorDetails"].KEY_LOAD_ERROR,
-      fatal: false,
-      frag: frag,
-      response: response
-    });
-  };
-
-  _proto.loadtimeout = function loadtimeout(stats, context) {
-    var frag = context.frag;
-    var loader = frag.loader;
-
-    if (loader) {
-      loader.abort();
-    }
-
-    delete this.loaders[frag.type];
-    this.hls.trigger(events["default"].ERROR, {
-      type: errors["ErrorTypes"].NETWORK_ERROR,
-      details: errors["ErrorDetails"].KEY_LOAD_TIMEOUT,
-      fatal: false,
-      frag: frag
-    });
-  };
-
-  return KeyLoader;
-}(event_handler);
-
-/* harmony default export */ var key_loader = (key_loader_KeyLoader);
-// CONCATENATED MODULE: ./src/controller/fragment-tracker.js
-
-
-function fragment_tracker_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
-
-
-
-var FragmentState = {
-  NOT_LOADED: 'NOT_LOADED',
-  APPENDING: 'APPENDING',
-  PARTIAL: 'PARTIAL',
-  OK: 'OK'
-};
-var fragment_tracker_FragmentTracker = /*#__PURE__*/function (_EventHandler) {
-  fragment_tracker_inheritsLoose(FragmentTracker, _EventHandler);
-
-  function FragmentTracker(hls) {
-    var _this;
-
-    _this = _EventHandler.call(this, hls, events["default"].BUFFER_APPENDED, events["default"].FRAG_BUFFERED, events["default"].FRAG_LOADED) || this;
-    _this.bufferPadding = 0.2;
-    _this.fragments = Object.create(null);
-    _this.timeRanges = Object.create(null);
-    _this.config = hls.config;
-    return _this;
-  }
-
-  var _proto = FragmentTracker.prototype;
-
-  _proto.destroy = function destroy() {
-    this.fragments = Object.create(null);
-    this.timeRanges = Object.create(null);
-    this.config = null;
-    event_handler.prototype.destroy.call(this);
-
-    _EventHandler.prototype.destroy.call(this);
-  }
-  /**
-   * Return a Fragment that match the position and levelType.
-   * If not found any Fragment, return null
-   * @param {number} position
-   * @param {LevelType} levelType
-   * @returns {Fragment|null}
-   */
-  ;
-
-  _proto.getBufferedFrag = function getBufferedFrag(position, levelType) {
-    var fragments = this.fragments;
-    var bufferedFrags = Object.keys(fragments).filter(function (key) {
-      var fragmentEntity = fragments[key];
-
-      if (fragmentEntity.body.type !== levelType) {
-        return false;
-      }
-
-      if (!fragmentEntity.buffered) {
-        return false;
-      }
-
-      var frag = fragmentEntity.body;
-      return frag.startPTS <= position && position <= frag.endPTS;
-    });
-
-    if (bufferedFrags.length === 0) {
-      return null;
-    } else {
-      // https://github.com/video-dev/hls.js/pull/1545#discussion_r166229566
-      var bufferedFragKey = bufferedFrags.pop();
-      return fragments[bufferedFragKey].body;
-    }
-  }
-  /**
-   * Partial fragments effected by coded frame eviction will be removed
-   * The browser will unload parts of the buffer to free up memory for new buffer data
-   * Fragments will need to be reloaded when the buffer is freed up, removing partial fragments will allow them to reload(since there might be parts that are still playable)
-   * @param {String} elementaryStream The elementaryStream of media this is (eg. video/audio)
-   * @param {TimeRanges} timeRange TimeRange object from a sourceBuffer
-   */
-  ;
-
-  _proto.detectEvictedFragments = function detectEvictedFragments(elementaryStream, timeRange) {
-    var _this2 = this;
-
-    // Check if any flagged fragments have been unloaded
-    Object.keys(this.fragments).forEach(function (key) {
-      var fragmentEntity = _this2.fragments[key];
-
-      if (!fragmentEntity || !fragmentEntity.buffered) {
-        return;
-      }
-
-      var esData = fragmentEntity.range[elementaryStream];
-
-      if (!esData) {
-        return;
-      }
-
-      var fragmentTimes = esData.time;
-
-      for (var i = 0; i < fragmentTimes.length; i++) {
-        var time = fragmentTimes[i];
-
-        if (!_this2.isTimeBuffered(time.startPTS, time.endPTS, timeRange)) {
-          // Unregister partial fragment as it needs to load again to be reused
-          _this2.removeFragment(fragmentEntity.body);
-
-          break;
-        }
-      }
-    });
-  }
-  /**
-   * Checks if the fragment passed in is loaded in the buffer properly
-   * Partially loaded fragments will be registered as a partial fragment
-   * @param {Object} fragment Check the fragment against all sourceBuffers loaded
-   */
-  ;
-
-  _proto.detectPartialFragments = function detectPartialFragments(fragment) {
-    var _this3 = this;
-
-    var fragKey = this.getFragmentKey(fragment);
-    var fragmentEntity = this.fragments[fragKey];
-
-    if (fragmentEntity) {
-      fragmentEntity.buffered = true;
-      Object.keys(this.timeRanges).forEach(function (elementaryStream) {
-        if (fragment.hasElementaryStream(elementaryStream)) {
-          var timeRange = _this3.timeRanges[elementaryStream]; // Check for malformed fragments
-          // Gaps need to be calculated for each elementaryStream
-
-          fragmentEntity.range[elementaryStream] = _this3.getBufferedTimes(fragment.startPTS, fragment.endPTS, timeRange);
-        }
-      });
-    }
-  };
-
-  _proto.getBufferedTimes = function getBufferedTimes(startPTS, endPTS, timeRange) {
-    var fragmentTimes = [];
-    var startTime, endTime;
-    var fragmentPartial = false;
-
-    for (var i = 0; i < timeRange.length; i++) {
-      startTime = timeRange.start(i) - this.bufferPadding;
-      endTime = timeRange.end(i) + this.bufferPadding;
-
-      if (startPTS >= startTime && endPTS <= endTime) {
-        // Fragment is entirely contained in buffer
-        // No need to check the other timeRange times since it's completely playable
-        fragmentTimes.push({
-          startPTS: Math.max(startPTS, timeRange.start(i)),
-          endPTS: Math.min(endPTS, timeRange.end(i))
-        });
-        break;
-      } else if (startPTS < endTime && endPTS > startTime) {
-        // Check for intersection with buffer
-        // Get playable sections of the fragment
-        fragmentTimes.push({
-          startPTS: Math.max(startPTS, timeRange.start(i)),
-          endPTS: Math.min(endPTS, timeRange.end(i))
-        });
-        fragmentPartial = true;
-      } else if (endPTS <= startTime) {
-        // No need to check the rest of the timeRange as it is in order
-        break;
-      }
-    }
-
-    return {
-      time: fragmentTimes,
-      partial: fragmentPartial
-    };
-  };
-
-  _proto.getFragmentKey = function getFragmentKey(fragment) {
-    return fragment.type + "_" + fragment.level + "_" + fragment.urlId + "_" + fragment.sn;
-  }
-  /**
-   * Gets the partial fragment for a certain time
-   * @param {Number} time
-   * @returns {Object} fragment Returns a partial fragment at a time or null if there is no partial fragment
-   */
-  ;
-
-  _proto.getPartialFragment = function getPartialFragment(time) {
-    var _this4 = this;
-
-    var timePadding, startTime, endTime;
-    var bestFragment = null;
-    var bestOverlap = 0;
-    Object.keys(this.fragments).forEach(function (key) {
-      var fragmentEntity = _this4.fragments[key];
-
-      if (_this4.isPartial(fragmentEntity)) {
-        startTime = fragmentEntity.body.startPTS - _this4.bufferPadding;
-        endTime = fragmentEntity.body.endPTS + _this4.bufferPadding;
-
-        if (time >= startTime && time <= endTime) {
-          // Use the fragment that has the most padding from start and end time
-          timePadding = Math.min(time - startTime, endTime - time);
-
-          if (bestOverlap <= timePadding) {
-            bestFragment = fragmentEntity.body;
-            bestOverlap = timePadding;
-          }
-        }
-      }
-    });
-    return bestFragment;
-  }
-  /**
-   * @param {Object} fragment The fragment to check
-   * @returns {String} Returns the fragment state when a fragment never loaded or if it partially loaded
-   */
-  ;
-
-  _proto.getState = function getState(fragment) {
-    var fragKey = this.getFragmentKey(fragment);
-    var fragmentEntity = this.fragments[fragKey];
-    var state = FragmentState.NOT_LOADED;
-
-    if (fragmentEntity !== undefined) {
-      if (!fragmentEntity.buffered) {
-        state = FragmentState.APPENDING;
-      } else if (this.isPartial(fragmentEntity) === true) {
-        state = FragmentState.PARTIAL;
-      } else {
-        state = FragmentState.OK;
-      }
-    }
-
-    return state;
-  };
-
-  _proto.isPartial = function isPartial(fragmentEntity) {
-    return fragmentEntity.buffered === true && (fragmentEntity.range.video !== undefined && fragmentEntity.range.video.partial === true || fragmentEntity.range.audio !== undefined && fragmentEntity.range.audio.partial === true);
-  };
-
-  _proto.isTimeBuffered = function isTimeBuffered(startPTS, endPTS, timeRange) {
-    var startTime, endTime;
-
-    for (var i = 0; i < timeRange.length; i++) {
-      startTime = timeRange.start(i) - this.bufferPadding;
-      endTime = timeRange.end(i) + this.bufferPadding;
-
-      if (startPTS >= startTime && endPTS <= endTime) {
-        return true;
-      }
-
-      if (endPTS <= startTime) {
-        // No need to check the rest of the timeRange as it is in order
-        return false;
-      }
-    }
-
-    return false;
-  }
-  /**
-   * Fires when a fragment loading is completed
-   */
-  ;
-
-  _proto.onFragLoaded = function onFragLoaded(e) {
-    var fragment = e.frag; // don't track initsegment (for which sn is not a number)
-    // don't track frags used for bitrateTest, they're irrelevant.
-
-    if (!Object(number["isFiniteNumber"])(fragment.sn) || fragment.bitrateTest) {
-      return;
-    }
-
-    this.fragments[this.getFragmentKey(fragment)] = {
-      body: fragment,
-      range: Object.create(null),
-      buffered: false
-    };
-  }
-  /**
-   * Fires when the buffer is updated
-   */
-  ;
-
-  _proto.onBufferAppended = function onBufferAppended(e) {
-    var _this5 = this;
-
-    // Store the latest timeRanges loaded in the buffer
-    this.timeRanges = e.timeRanges;
-    Object.keys(this.timeRanges).forEach(function (elementaryStream) {
-      var timeRange = _this5.timeRanges[elementaryStream];
-
-      _this5.detectEvictedFragments(elementaryStream, timeRange);
-    });
-  }
-  /**
-   * Fires after a fragment has been loaded into the source buffer
-   */
-  ;
-
-  _proto.onFragBuffered = function onFragBuffered(e) {
-    this.detectPartialFragments(e.frag);
-  }
-  /**
-   * Return true if fragment tracker has the fragment.
-   * @param {Object} fragment
-   * @returns {boolean}
-   */
-  ;
-
-  _proto.hasFragment = function hasFragment(fragment) {
-    var fragKey = this.getFragmentKey(fragment);
-    return this.fragments[fragKey] !== undefined;
-  }
-  /**
-   * Remove a fragment from fragment tracker until it is loaded again
-   * @param {Object} fragment The fragment to remove
-   */
-  ;
-
-  _proto.removeFragment = function removeFragment(fragment) {
-    var fragKey = this.getFragmentKey(fragment);
-    delete this.fragments[fragKey];
-  }
-  /**
-   * Remove all fragments from fragment tracker.
-   */
-  ;
-
-  _proto.removeAllFragments = function removeAllFragments() {
-    this.fragments = Object.create(null);
-  };
-
-  return FragmentTracker;
-}(event_handler);
-// CONCATENATED MODULE: ./src/utils/binary-search.ts
-var BinarySearch = {
-  /**
-   * Searches for an item in an array which matches a certain condition.
-   * This requires the condition to only match one item in the array,
-   * and for the array to be ordered.
-   *
-   * @param {Array<T>} list The array to search.
-   * @param {BinarySearchComparison<T>} comparisonFn
-   *      Called and provided a candidate item as the first argument.
-   *      Should return:
-   *          > -1 if the item should be located at a lower index than the provided item.
-   *          > 1 if the item should be located at a higher index than the provided item.
-   *          > 0 if the item is the item you're looking for.
-   *
-   * @return {T | null} The object if it is found or null otherwise.
-   */
-  search: function search(list, comparisonFn) {
-    var minIndex = 0;
-    var maxIndex = list.length - 1;
-    var currentIndex = null;
-    var currentElement = null;
-
-    while (minIndex <= maxIndex) {
-      currentIndex = (minIndex + maxIndex) / 2 | 0;
-      currentElement = list[currentIndex];
-      var comparisonResult = comparisonFn(currentElement);
-
-      if (comparisonResult > 0) {
-        minIndex = currentIndex + 1;
-      } else if (comparisonResult < 0) {
-        maxIndex = currentIndex - 1;
-      } else {
-        return currentElement;
-      }
-    }
-
-    return null;
-  }
-};
-/* harmony default export */ var binary_search = (BinarySearch);
-// CONCATENATED MODULE: ./src/utils/buffer-helper.ts
-/**
- * @module BufferHelper
- *
- * Providing methods dealing with buffer length retrieval for example.
- *
- * In general, a helper around HTML5 MediaElement TimeRanges gathered from `buffered` property.
- *
- * Also @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/buffered
-*/
-
-var noopBuffered = {
-  length: 0,
-  start: function start() {
-    return 0;
-  },
-  end: function end() {
-    return 0;
-  }
-};
-var buffer_helper_BufferHelper = /*#__PURE__*/function () {
-  function BufferHelper() {}
-
-  /**
-   * Return true if `media`'s buffered include `position`
-   * @param {Bufferable} media
-   * @param {number} position
-   * @returns {boolean}
-   */
-  BufferHelper.isBuffered = function isBuffered(media, position) {
-    try {
-      if (media) {
-        var buffered = BufferHelper.getBuffered(media);
-
-        for (var i = 0; i < buffered.length; i++) {
-          if (position >= buffered.start(i) && position <= buffered.end(i)) {
-            return true;
-          }
-        }
-      }
-    } catch (error) {// this is to catch
-      // InvalidStateError: Failed to read the 'buffered' property from 'SourceBuffer':
-      // This SourceBuffer has been removed from the parent media source
-    }
-
-    return false;
-  };
-
-  BufferHelper.bufferInfo = function bufferInfo(media, pos, maxHoleDuration) {
-    try {
-      if (media) {
-        var vbuffered = BufferHelper.getBuffered(media);
-        var buffered = [];
-        var i;
-
-        for (i = 0; i < vbuffered.length; i++) {
-          buffered.push({
-            start: vbuffered.start(i),
-            end: vbuffered.end(i)
-          });
-        }
-
-        return this.bufferedInfo(buffered, pos, maxHoleDuration);
-      }
-    } catch (error) {// this is to catch
-      // InvalidStateError: Failed to read the 'buffered' property from 'SourceBuffer':
-      // This SourceBuffer has been removed from the parent media source
-    }
-
-    return {
-      len: 0,
-      start: pos,
-      end: pos,
-      nextStart: undefined
-    };
-  };
-
-  BufferHelper.bufferedInfo = function bufferedInfo(buffered, pos, maxHoleDuration) {
-    // sort on buffer.start/smaller end (IE does not always return sorted buffered range)
-    buffered.sort(function (a, b) {
-      var diff = a.start - b.start;
-
-      if (diff) {
-        return diff;
-      } else {
-        return b.end - a.end;
-      }
-    });
-    var buffered2 = [];
-
-    if (maxHoleDuration) {
-      // there might be some small holes between buffer time range
-      // consider that holes smaller than maxHoleDuration are irrelevant and build another
-      // buffer time range representations that discards those holes
-      for (var i = 0; i < buffered.length; i++) {
-        var buf2len = buffered2.length;
-
-        if (buf2len) {
-          var buf2end = buffered2[buf2len - 1].end; // if small hole (value between 0 or maxHoleDuration ) or overlapping (negative)
-
-          if (buffered[i].start - buf2end < maxHoleDuration) {
-            // merge overlapping time ranges
-            // update lastRange.end only if smaller than item.end
-            // e.g.  [ 1, 15] with  [ 2,8] => [ 1,15] (no need to modify lastRange.end)
-            // whereas [ 1, 8] with  [ 2,15] => [ 1,15] ( lastRange should switch from [1,8] to [1,15])
-            if (buffered[i].end > buf2end) {
-              buffered2[buf2len - 1].end = buffered[i].end;
-            }
-          } else {
-            // big hole
-            buffered2.push(buffered[i]);
-          }
-        } else {
-          // first value
-          buffered2.push(buffered[i]);
-        }
-      }
-    } else {
-      buffered2 = buffered;
-    }
-
-    var bufferLen = 0; // bufferStartNext can possibly be undefined based on the conditional logic below
-
-    var bufferStartNext; // bufferStart and bufferEnd are buffer boundaries around current video position
-
-    var bufferStart = pos;
-    var bufferEnd = pos;
-
-    for (var _i = 0; _i < buffered2.length; _i++) {
-      var start = buffered2[_i].start,
-          end = buffered2[_i].end; // logger.log('buf start/end:' + buffered.start(i) + '/' + buffered.end(i));
-
-      if (pos + maxHoleDuration >= start && pos < end) {
-        // play position is inside this buffer TimeRange, retrieve end of buffer position and buffer length
-        bufferStart = start;
-        bufferEnd = end;
-        bufferLen = bufferEnd - pos;
-      } else if (pos + maxHoleDuration < start) {
-        bufferStartNext = start;
-        break;
-      }
-    }
-
-    return {
-      len: bufferLen,
-      start: bufferStart,
-      end: bufferEnd,
-      nextStart: bufferStartNext
-    };
-  }
-  /**
-   * Safe method to get buffered property.
-   * SourceBuffer.buffered may throw if SourceBuffer is removed from it's MediaSource
-   */
-  ;
-
-  BufferHelper.getBuffered = function getBuffered(media) {
-    try {
-      return media.buffered;
-    } catch (e) {
-      logger["logger"].log('failed to get media.buffered', e);
-      return noopBuffered;
-    }
-  };
-
-  return BufferHelper;
-}();
-// EXTERNAL MODULE: ./node_modules/eventemitter3/index.js
-var eventemitter3 = __webpack_require__("./node_modules/eventemitter3/index.js");
-
-// EXTERNAL MODULE: ./node_modules/webworkify-webpack/index.js
-var webworkify_webpack = __webpack_require__("./node_modules/webworkify-webpack/index.js");
-
-// EXTERNAL MODULE: ./src/demux/demuxer-inline.js + 11 modules
-var demuxer_inline = __webpack_require__("./src/demux/demuxer-inline.js");
-
-// CONCATENATED MODULE: ./src/utils/mediasource-helper.ts
-/**
- * MediaSource helper
- */
-function getMediaSource() {
-  return window.MediaSource || window.WebKitMediaSource;
-}
-// EXTERNAL MODULE: ./src/utils/get-self-scope.js
-var get_self_scope = __webpack_require__("./src/utils/get-self-scope.js");
-
-// CONCATENATED MODULE: ./src/observer.ts
-function observer_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
-
-
-/**
- * Simple adapter sub-class of Nodejs-like EventEmitter.
- */
-
-var Observer = /*#__PURE__*/function (_EventEmitter) {
-  observer_inheritsLoose(Observer, _EventEmitter);
-
-  function Observer() {
-    return _EventEmitter.apply(this, arguments) || this;
-  }
-
-  var _proto = Observer.prototype;
-
-  /**
-   * We simply want to pass along the event-name itself
-   * in every call to a handler, which is the purpose of our `trigger` method
-   * extending the standard API.
-   */
-  _proto.trigger = function trigger(event) {
-    for (var _len = arguments.length, data = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
-      data[_key - 1] = arguments[_key];
-    }
-
-    this.emit.apply(this, [event, event].concat(data));
-  };
-
-  return Observer;
-}(eventemitter3["EventEmitter"]);
-// CONCATENATED MODULE: ./src/demux/demuxer.js
-
-
-
-
-
-
-
-
-
- // see https://stackoverflow.com/a/11237259/589493
-
-var global = Object(get_self_scope["getSelfScope"])(); // safeguard for code that might run both on worker and main thread
-
-var demuxer_MediaSource = getMediaSource() || {
-  isTypeSupported: function isTypeSupported() {
-    return false;
-  }
-};
-
-var demuxer_Demuxer = /*#__PURE__*/function () {
-  function Demuxer(hls, id) {
-    var _this = this;
-
-    this.hls = hls;
-    this.id = id;
-    var observer = this.observer = new Observer();
-    var config = hls.config;
-
-    var forwardMessage = function forwardMessage(ev, data) {
-      data = data || {};
-      data.frag = _this.frag;
-      data.id = _this.id;
-      hls.trigger(ev, data);
-    }; // forward events to main thread
-
-
-    observer.on(events["default"].FRAG_DECRYPTED, forwardMessage);
-    observer.on(events["default"].FRAG_PARSING_INIT_SEGMENT, forwardMessage);
-    observer.on(events["default"].FRAG_PARSING_DATA, forwardMessage);
-    observer.on(events["default"].FRAG_PARSED, forwardMessage);
-    observer.on(events["default"].ERROR, forwardMessage);
-    observer.on(events["default"].FRAG_PARSING_METADATA, forwardMessage);
-    observer.on(events["default"].FRAG_PARSING_USERDATA, forwardMessage);
-    observer.on(events["default"].INIT_PTS_FOUND, forwardMessage);
-    var typeSupported = {
-      mp4: demuxer_MediaSource.isTypeSupported('video/mp4'),
-      mpeg: demuxer_MediaSource.isTypeSupported('audio/mpeg'),
-      mp3: demuxer_MediaSource.isTypeSupported('audio/mp4; codecs="mp3"')
-    }; // navigator.vendor is not always available in Web Worker
-    // refer to https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope/navigator
-
-    var vendor = navigator.vendor;
-
-    if (config.enableWorker && typeof Worker !== 'undefined') {
-      logger["logger"].log('demuxing in webworker');
-      var w;
-
-      try {
-        w = this.w = webworkify_webpack(/*require.resolve*/(/*! ../demux/demuxer-worker.js */ "./src/demux/demuxer-worker.js"));
-        this.onwmsg = this.onWorkerMessage.bind(this);
-        w.addEventListener('message', this.onwmsg);
-
-        w.onerror = function (event) {
-          hls.trigger(events["default"].ERROR, {
-            type: errors["ErrorTypes"].OTHER_ERROR,
-            details: errors["ErrorDetails"].INTERNAL_EXCEPTION,
-            fatal: true,
-            event: 'demuxerWorker',
-            err: {
-              message: event.message + ' (' + event.filename + ':' + event.lineno + ')'
-            }
-          });
-        };
-
-        w.postMessage({
-          cmd: 'init',
-          typeSupported: typeSupported,
-          vendor: vendor,
-          id: id,
-          config: JSON.stringify(config)
-        });
-      } catch (err) {
-        logger["logger"].warn('Error in worker:', err);
-        logger["logger"].error('Error while initializing DemuxerWorker, fallback on DemuxerInline');
-
-        if (w) {
-          // revoke the Object URL that was used to create demuxer worker, so as not to leak it
-          global.URL.revokeObjectURL(w.objectURL);
-        }
-
-        this.demuxer = new demuxer_inline["default"](observer, typeSupported, config, vendor);
-        this.w = undefined;
-      }
-    } else {
-      this.demuxer = new demuxer_inline["default"](observer, typeSupported, config, vendor);
-    }
-  }
-
-  var _proto = Demuxer.prototype;
-
-  _proto.destroy = function destroy() {
-    var w = this.w;
-
-    if (w) {
-      w.removeEventListener('message', this.onwmsg);
-      w.terminate();
-      this.w = null;
-    } else {
-      var demuxer = this.demuxer;
-
-      if (demuxer) {
-        demuxer.destroy();
-        this.demuxer = null;
-      }
-    }
-
-    var observer = this.observer;
-
-    if (observer) {
-      observer.removeAllListeners();
-      this.observer = null;
-    }
-  };
-
-  _proto.push = function push(data, initSegment, audioCodec, videoCodec, frag, duration, accurateTimeOffset, defaultInitPTS) {
-    var w = this.w;
-    var timeOffset = Object(number["isFiniteNumber"])(frag.startPTS) ? frag.startPTS : frag.start;
-    var decryptdata = frag.decryptdata;
-    var lastFrag = this.frag;
-    var discontinuity = !(lastFrag && frag.cc === lastFrag.cc);
-    var trackSwitch = !(lastFrag && frag.level === lastFrag.level);
-    var nextSN = lastFrag && frag.sn === lastFrag.sn + 1;
-    var contiguous = !trackSwitch && nextSN;
-
-    if (discontinuity) {
-      logger["logger"].log(this.id + ":discontinuity detected");
-    }
-
-    if (trackSwitch) {
-      logger["logger"].log(this.id + ":switch detected");
-    }
-
-    this.frag = frag;
-
-    if (w) {
-      // post fragment payload as transferable objects for ArrayBuffer (no copy)
-      w.postMessage({
-        cmd: 'demux',
-        data: data,
-        decryptdata: decryptdata,
-        initSegment: initSegment,
-        audioCodec: audioCodec,
-        videoCodec: videoCodec,
-        timeOffset: timeOffset,
-        discontinuity: discontinuity,
-        trackSwitch: trackSwitch,
-        contiguous: contiguous,
-        duration: duration,
-        accurateTimeOffset: accurateTimeOffset,
-        defaultInitPTS: defaultInitPTS
-      }, data instanceof ArrayBuffer ? [data] : []);
-    } else {
-      var demuxer = this.demuxer;
-
-      if (demuxer) {
-        demuxer.push(data, decryptdata, initSegment, audioCodec, videoCodec, timeOffset, discontinuity, trackSwitch, contiguous, duration, accurateTimeOffset, defaultInitPTS);
-      }
-    }
-  };
-
-  _proto.onWorkerMessage = function onWorkerMessage(ev) {
-    var data = ev.data,
-        hls = this.hls;
-
-    switch (data.event) {
-      case 'init':
-        // revoke the Object URL that was used to create demuxer worker, so as not to leak it
-        global.URL.revokeObjectURL(this.w.objectURL);
-        break;
-      // special case for FRAG_PARSING_DATA: data1 and data2 are transferable objects
-
-      case events["default"].FRAG_PARSING_DATA:
-        data.data.data1 = new Uint8Array(data.data1);
-
-        if (data.data2) {
-          data.data.data2 = new Uint8Array(data.data2);
-        }
-
-      /* falls through */
-
-      default:
-        data.data = data.data || {};
-        data.data.frag = this.frag;
-        data.data.id = this.id;
-        hls.trigger(data.event, data.data);
-        break;
-    }
-  };
-
-  return Demuxer;
-}();
-
-/* harmony default export */ var demux_demuxer = (demuxer_Demuxer);
-// CONCATENATED MODULE: ./src/controller/level-helper.js
-
-
-
-
-
-/**
- * @module LevelHelper
- *
- * Providing methods dealing with playlist sliding and drift
- *
- * TODO: Create an actual `Level` class/model that deals with all this logic in an object-oriented-manner.
- *
- * */
-
-function addGroupId(level, type, id) {
-  switch (type) {
-    case 'audio':
-      if (!level.audioGroupIds) {
-        level.audioGroupIds = [];
-      }
-
-      level.audioGroupIds.push(id);
-      break;
-
-    case 'text':
-      if (!level.textGroupIds) {
-        level.textGroupIds = [];
-      }
-
-      level.textGroupIds.push(id);
-      break;
-  }
-}
-function updatePTS(fragments, fromIdx, toIdx) {
-  var fragFrom = fragments[fromIdx],
-      fragTo = fragments[toIdx],
-      fragToPTS = fragTo.startPTS; // if we know startPTS[toIdx]
-
-  if (Object(number["isFiniteNumber"])(fragToPTS)) {
-    // update fragment duration.
-    // it helps to fix drifts between playlist reported duration and fragment real duration
-    if (toIdx > fromIdx) {
-      fragFrom.duration = fragToPTS - fragFrom.start;
-
-      if (fragFrom.duration < 0) {
-        logger["logger"].warn("negative duration computed for frag " + fragFrom.sn + ",level " + fragFrom.level + ", there should be some duration drift between playlist and fragment!");
-      }
-    } else {
-      fragTo.duration = fragFrom.start - fragToPTS;
-
-      if (fragTo.duration < 0) {
-        logger["logger"].warn("negative duration computed for frag " + fragTo.sn + ",level " + fragTo.level + ", there should be some duration drift between playlist and fragment!");
-      }
-    }
-  } else {
-    // we dont know startPTS[toIdx]
-    if (toIdx > fromIdx) {
-      var contiguous = fragFrom.cc === fragTo.cc;
-      fragTo.start = fragFrom.start + (contiguous && fragFrom.minEndPTS ? fragFrom.minEndPTS - fragFrom.start : fragFrom.duration);
-    } else {
-      fragTo.start = Math.max(fragFrom.start - fragTo.duration, 0);
-    }
-  }
-}
-function updateFragPTSDTS(details, frag, startPTS, endPTS, startDTS, endDTS) {
-  // update frag PTS/DTS
-  var maxStartPTS = startPTS;
-  var minEndPTS = endPTS;
-
-  if (Object(number["isFiniteNumber"])(frag.startPTS)) {
-    // delta PTS between audio and video
-    var deltaPTS = Math.abs(frag.startPTS - startPTS);
-
-    if (!Object(number["isFiniteNumber"])(frag.deltaPTS)) {
-      frag.deltaPTS = deltaPTS;
-    } else {
-      frag.deltaPTS = Math.max(deltaPTS, frag.deltaPTS);
-    }
-
-    maxStartPTS = Math.max(startPTS, frag.startPTS);
-    startPTS = Math.min(startPTS, frag.startPTS);
-    minEndPTS = Math.min(endPTS, frag.endPTS);
-    endPTS = Math.max(endPTS, frag.endPTS);
-    startDTS = Math.min(startDTS, frag.startDTS);
-    endDTS = Math.max(endDTS, frag.endDTS);
-  }
-
-  var drift = startPTS - frag.start;
-  frag.start = frag.startPTS = startPTS;
-  frag.maxStartPTS = maxStartPTS;
-  frag.endPTS = endPTS;
-  frag.minEndPTS = minEndPTS;
-  frag.startDTS = startDTS;
-  frag.endDTS = endDTS;
-  frag.duration = endPTS - startPTS;
-  var sn = frag.sn; // exit if sn out of range
-
-  if (!details || sn < details.startSN || sn > details.endSN) {
-    return 0;
-  }
-
-  var fragIdx, fragments, i;
-  fragIdx = sn - details.startSN;
-  fragments = details.fragments; // update frag reference in fragments array
-  // rationale is that fragments array might not contain this frag object.
-  // this will happen if playlist has been refreshed between frag loading and call to updateFragPTSDTS()
-  // if we don't update frag, we won't be able to propagate PTS info on the playlist
-  // resulting in invalid sliding computation
-
-  fragments[fragIdx] = frag; // adjust fragment PTS/duration from seqnum-1 to frag 0
-
-  for (i = fragIdx; i > 0; i--) {
-    updatePTS(fragments, i, i - 1);
-  } // adjust fragment PTS/duration from seqnum to last frag
-
-
-  for (i = fragIdx; i < fragments.length - 1; i++) {
-    updatePTS(fragments, i, i + 1);
-  }
-
-  details.PTSKnown = true;
-  return drift;
-}
-function mergeDetails(oldDetails, newDetails) {
-  // potentially retrieve cached initsegment
-  if (newDetails.initSegment && oldDetails.initSegment) {
-    newDetails.initSegment = oldDetails.initSegment;
-  } // check if old/new playlists have fragments in common
-  // loop through overlapping SN and update startPTS , cc, and duration if any found
-
-
-  var ccOffset = 0;
-  var PTSFrag;
-  mapFragmentIntersection(oldDetails, newDetails, function (oldFrag, newFrag) {
-    ccOffset = oldFrag.cc - newFrag.cc;
-
-    if (Object(number["isFiniteNumber"])(oldFrag.startPTS)) {
-      newFrag.start = newFrag.startPTS = oldFrag.startPTS;
-      newFrag.endPTS = oldFrag.endPTS;
-      newFrag.duration = oldFrag.duration;
-      newFrag.backtracked = oldFrag.backtracked;
-      newFrag.dropped = oldFrag.dropped;
-      PTSFrag = newFrag;
-    } // PTS is known when there are overlapping segments
-
-
-    newDetails.PTSKnown = true;
-  });
-
-  if (!newDetails.PTSKnown) {
-    return;
-  }
-
-  if (ccOffset) {
-    logger["logger"].log('discontinuity sliding from playlist, take drift into account');
-    var newFragments = newDetails.fragments;
-
-    for (var i = 0; i < newFragments.length; i++) {
-      newFragments[i].cc += ccOffset;
-    }
-  } // if at least one fragment contains PTS info, recompute PTS information for all fragments
-
-
-  if (PTSFrag) {
-    updateFragPTSDTS(newDetails, PTSFrag, PTSFrag.startPTS, PTSFrag.endPTS, PTSFrag.startDTS, PTSFrag.endDTS);
-  } else {
-    // ensure that delta is within oldFragments range
-    // also adjust sliding in case delta is 0 (we could have old=[50-60] and new=old=[50-61])
-    // in that case we also need to adjust start offset of all fragments
-    adjustSliding(oldDetails, newDetails);
-  } // if we are here, it means we have fragments overlapping between
-  // old and new level. reliable PTS info is thus relying on old level
-
-
-  newDetails.PTSKnown = oldDetails.PTSKnown;
-}
-function mergeSubtitlePlaylists(oldPlaylist, newPlaylist, referenceStart) {
-  if (referenceStart === void 0) {
-    referenceStart = 0;
-  }
-
-  var lastIndex = -1;
-  mapFragmentIntersection(oldPlaylist, newPlaylist, function (oldFrag, newFrag, index) {
-    newFrag.start = oldFrag.start;
-    lastIndex = index;
-  });
-  var frags = newPlaylist.fragments;
-
-  if (lastIndex < 0) {
-    frags.forEach(function (frag) {
-      frag.start += referenceStart;
-    });
-    return;
-  }
-
-  for (var i = lastIndex + 1; i < frags.length; i++) {
-    frags[i].start = frags[i - 1].start + frags[i - 1].duration;
-  }
-}
-function mapFragmentIntersection(oldPlaylist, newPlaylist, intersectionFn) {
-  if (!oldPlaylist || !newPlaylist) {
-    return;
-  }
-
-  var start = Math.max(oldPlaylist.startSN, newPlaylist.startSN) - newPlaylist.startSN;
-  var end = Math.min(oldPlaylist.endSN, newPlaylist.endSN) - newPlaylist.startSN;
-  var delta = newPlaylist.startSN - oldPlaylist.startSN;
-
-  for (var i = start; i <= end; i++) {
-    var oldFrag = oldPlaylist.fragments[delta + i];
-    var newFrag = newPlaylist.fragments[i];
-
-    if (!oldFrag || !newFrag) {
-      break;
-    }
-
-    intersectionFn(oldFrag, newFrag, i);
-  }
-}
-function adjustSliding(oldPlaylist, newPlaylist) {
-  var delta = newPlaylist.startSN - oldPlaylist.startSN;
-  var oldFragments = oldPlaylist.fragments;
-  var newFragments = newPlaylist.fragments;
-
-  if (delta < 0 || delta > oldFragments.length) {
-    return;
-  }
-
-  for (var i = 0; i < newFragments.length; i++) {
-    newFragments[i].start += oldFragments[delta].start;
-  }
-}
-function computeReloadInterval(currentPlaylist, newPlaylist, lastRequestTime) {
-  var reloadInterval = 1000 * (newPlaylist.averagetargetduration ? newPlaylist.averagetargetduration : newPlaylist.targetduration);
-  var minReloadInterval = reloadInterval / 2;
-
-  if (currentPlaylist && newPlaylist.endSN === currentPlaylist.endSN) {
-    // follow HLS Spec, If the client reloads a Playlist file and finds that it has not
-    // changed then it MUST wait for a period of one-half the target
-    // duration before retrying.
-    reloadInterval = minReloadInterval;
-  }
-
-  if (lastRequestTime) {
-    reloadInterval = Math.max(minReloadInterval, reloadInterval - (window.performance.now() - lastRequestTime));
-  } // in any case, don't reload more than half of target duration
-
-
-  return Math.round(reloadInterval);
-}
-// CONCATENATED MODULE: ./src/utils/time-ranges.ts
-/**
- *  TimeRanges to string helper
- */
-var TimeRanges = {
-  toString: function toString(r) {
-    var log = '';
-    var len = r.length;
-
-    for (var i = 0; i < len; i++) {
-      log += '[' + r.start(i).toFixed(3) + ',' + r.end(i).toFixed(3) + ']';
-    }
-
-    return log;
-  }
-};
-/* harmony default export */ var time_ranges = (TimeRanges);
-// CONCATENATED MODULE: ./src/utils/discontinuities.js
-
-
-
-function findFirstFragWithCC(fragments, cc) {
-  var firstFrag = null;
-
-  for (var i = 0; i < fragments.length; i += 1) {
-    var currentFrag = fragments[i];
-
-    if (currentFrag && currentFrag.cc === cc) {
-      firstFrag = currentFrag;
-      break;
-    }
-  }
-
-  return firstFrag;
-}
-function findFragWithCC(fragments, CC) {
-  return binary_search.search(fragments, function (candidate) {
-    if (candidate.cc < CC) {
-      return 1;
-    } else if (candidate.cc > CC) {
-      return -1;
-    } else {
-      return 0;
-    }
-  });
-}
-function shouldAlignOnDiscontinuities(lastFrag, lastLevel, details) {
-  var shouldAlign = false;
-
-  if (lastLevel && lastLevel.details && details) {
-    if (details.endCC > details.startCC || lastFrag && lastFrag.cc < details.startCC) {
-      shouldAlign = true;
-    }
-  }
-
-  return shouldAlign;
-} // Find the first frag in the previous level which matches the CC of the first frag of the new level
-
-function findDiscontinuousReferenceFrag(prevDetails, curDetails) {
-  var prevFrags = prevDetails.fragments;
-  var curFrags = curDetails.fragments;
-
-  if (!curFrags.length || !prevFrags.length) {
-    logger["logger"].log('No fragments to align');
-    return;
-  }
-
-  var prevStartFrag = findFirstFragWithCC(prevFrags, curFrags[0].cc);
-
-  if (!prevStartFrag || prevStartFrag && !prevStartFrag.startPTS) {
-    logger["logger"].log('No frag in previous level to align on');
-    return;
-  }
-
-  return prevStartFrag;
-}
-function adjustPts(sliding, details) {
-  details.fragments.forEach(function (frag) {
-    if (frag) {
-      var start = frag.start + sliding;
-      frag.start = frag.startPTS = start;
-      frag.endPTS = start + frag.duration;
-    }
-  });
-  details.PTSKnown = true;
-}
-/**
- * Using the parameters of the last level, this function computes PTS' of the new fragments so that they form a
- * contiguous stream with the last fragments.
- * The PTS of a fragment lets Hls.js know where it fits into a stream - by knowing every PTS, we know which fragment to
- * download at any given time. PTS is normally computed when the fragment is demuxed, so taking this step saves us time
- * and an extra download.
- * @param lastFrag
- * @param lastLevel
- * @param details
- */
-
-function alignStream(lastFrag, lastLevel, details) {
-  alignDiscontinuities(lastFrag, details, lastLevel);
-
-  if (!details.PTSKnown && lastLevel) {
-    // If the PTS wasn't figured out via discontinuity sequence that means there was no CC increase within the level.
-    // Aligning via Program Date Time should therefore be reliable, since PDT should be the same within the same
-    // discontinuity sequence.
-    alignPDT(details, lastLevel.details);
-  }
-}
-/**
- * Computes the PTS if a new level's fragments using the PTS of a fragment in the last level which shares the same
- * discontinuity sequence.
- * @param lastLevel - The details of the last loaded level
- * @param details - The details of the new level
- */
-
-function alignDiscontinuities(lastFrag, details, lastLevel) {
-  if (shouldAlignOnDiscontinuities(lastFrag, lastLevel, details)) {
-    var referenceFrag = findDiscontinuousReferenceFrag(lastLevel.details, details);
-
-    if (referenceFrag) {
-      logger["logger"].log('Adjusting PTS using last level due to CC increase within current level');
-      adjustPts(referenceFrag.start, details);
-    }
-  }
-}
-/**
- * Computes the PTS of a new level's fragments using the difference in Program Date Time from the last level.
- * @param details - The details of the new level
- * @param lastDetails - The details of the last loaded level
- */
-
-function alignPDT(details, lastDetails) {
-  if (lastDetails && lastDetails.fragments.length) {
-    if (!details.hasProgramDateTime || !lastDetails.hasProgramDateTime) {
-      return;
-    } // if last level sliding is 1000 and its first frag PROGRAM-DATE-TIME is 2017-08-20 1:10:00 AM
-    // and if new details first frag PROGRAM DATE-TIME is 2017-08-20 1:10:08 AM
-    // then we can deduce that playlist B sliding is 1000+8 = 1008s
-
-
-    var lastPDT = lastDetails.fragments[0].programDateTime;
-    var newPDT = details.fragments[0].programDateTime; // date diff is in ms. frag.start is in seconds
-
-    var sliding = (newPDT - lastPDT) / 1000 + lastDetails.fragments[0].start;
-
-    if (Object(number["isFiniteNumber"])(sliding)) {
-      logger["logger"].log("adjusting PTS using programDateTime delta, sliding:" + sliding.toFixed(3));
-      adjustPts(sliding, details);
-    }
-  }
-}
-// CONCATENATED MODULE: ./src/controller/fragment-finders.ts
-
-
-
-/**
- * The test function used by the findFragmentBySn's BinarySearch to look for the best match to the current buffer conditions.
- * @param {*} candidate - The fragment to test
- * @param {number} [bufferEnd = 0] - The end of the current buffered range the playhead is currently within
- * @param {number} [maxFragLookUpTolerance = 0] - The amount of time that a fragment's start can be within in order to be considered contiguous
- * @returns {number} - 0 if it matches, 1 if too low, -1 if too high
- */
-function fragmentWithinToleranceTest(bufferEnd, maxFragLookUpTolerance, candidate) {
-  if (bufferEnd === void 0) {
-    bufferEnd = 0;
-  }
-
-  if (maxFragLookUpTolerance === void 0) {
-    maxFragLookUpTolerance = 0;
-  }
-
-  // offset should be within fragment boundary - config.maxFragLookUpTolerance
-  // this is to cope with situations like
-  // bufferEnd = 9.991
-  // frag[Ø] : [0,10]
-  // frag[1] : [10,20]
-  // bufferEnd is within frag[0] range ... although what we are expecting is to return frag[1] here
-  //              frag start               frag start+duration
-  //                  |-----------------------------|
-  //              <--->                         <--->
-  //  ...--------><-----------------------------><---------....
-  // previous frag         matching fragment         next frag
-  //  return -1             return 0                 return 1
-  // logger.log(`level/sn/start/end/bufEnd:${level}/${candidate.sn}/${candidate.start}/${(candidate.start+candidate.duration)}/${bufferEnd}`);
-  // Set the lookup tolerance to be small enough to detect the current segment - ensures we don't skip over very small segments
-  var candidateLookupTolerance = Math.min(maxFragLookUpTolerance, candidate.duration + (candidate.deltaPTS ? candidate.deltaPTS : 0));
-
-  if (candidate.start + candidate.duration - candidateLookupTolerance <= bufferEnd) {
-    return 1;
-  } else if (candidate.start - candidateLookupTolerance > bufferEnd && candidate.start) {
-    // if maxFragLookUpTolerance will have negative value then don't return -1 for first element
-    return -1;
-  }
-
-  return 0;
-}
-/**
- * The test function used by the findFragmentByPdt's BinarySearch to look for the best match to the current buffer conditions.
- * This function tests the candidate's program date time values, as represented in Unix time
- * @param {*} candidate - The fragment to test
- * @param {number} [pdtBufferEnd = 0] - The Unix time representing the end of the current buffered range
- * @param {number} [maxFragLookUpTolerance = 0] - The amount of time that a fragment's start can be within in order to be considered contiguous
- * @returns {boolean} True if contiguous, false otherwise
- */
-
-function pdtWithinToleranceTest(pdtBufferEnd, maxFragLookUpTolerance, candidate) {
-  var candidateLookupTolerance = Math.min(maxFragLookUpTolerance, candidate.duration + (candidate.deltaPTS ? candidate.deltaPTS : 0)) * 1000; // endProgramDateTime can be null, default to zero
-
-  var endProgramDateTime = candidate.endProgramDateTime || 0;
-  return endProgramDateTime - candidateLookupTolerance > pdtBufferEnd;
-}
-/**
- * Returns first fragment whose endPdt value exceeds the given PDT.
- * @param {Array<Fragment>} fragments - The array of candidate fragments
- * @param {number|null} [PDTValue = null] - The PDT value which must be exceeded
- * @param {number} [maxFragLookUpTolerance = 0] - The amount of time that a fragment's start/end can be within in order to be considered contiguous
- * @returns {*|null} fragment - The best matching fragment
- */
-
-function findFragmentByPDT(fragments, PDTValue, maxFragLookUpTolerance) {
-  if (PDTValue === null || !Array.isArray(fragments) || !fragments.length || !Object(number["isFiniteNumber"])(PDTValue)) {
-    return null;
-  } // if less than start
-
-
-  var startPDT = fragments[0].programDateTime;
-
-  if (PDTValue < (startPDT || 0)) {
-    return null;
-  }
-
-  var endPDT = fragments[fragments.length - 1].endProgramDateTime;
-
-  if (PDTValue >= (endPDT || 0)) {
-    return null;
-  }
-
-  maxFragLookUpTolerance = maxFragLookUpTolerance || 0;
-
-  for (var seg = 0; seg < fragments.length; ++seg) {
-    var frag = fragments[seg];
-
-    if (pdtWithinToleranceTest(PDTValue, maxFragLookUpTolerance, frag)) {
-      return frag;
-    }
-  }
-
-  return null;
-}
-/**
- * Finds a fragment based on the SN of the previous fragment; or based on the needs of the current buffer.
- * This method compensates for small buffer gaps by applying a tolerance to the start of any candidate fragment, thus
- * breaking any traps which would cause the same fragment to be continuously selected within a small range.
- * @param {*} fragPrevious - The last frag successfully appended
- * @param {Array<Fragment>} fragments - The array of candidate fragments
- * @param {number} [bufferEnd = 0] - The end of the contiguous buffered range the playhead is currently within
- * @param {number} maxFragLookUpTolerance - The amount of time that a fragment's start/end can be within in order to be considered contiguous
- * @returns {*} foundFrag - The best matching fragment
- */
-
-function findFragmentByPTS(fragPrevious, fragments, bufferEnd, maxFragLookUpTolerance) {
-  if (bufferEnd === void 0) {
-    bufferEnd = 0;
-  }
-
-  if (maxFragLookUpTolerance === void 0) {
-    maxFragLookUpTolerance = 0;
-  }
-
-  var fragNext = null;
-
-  if (fragPrevious) {
-    fragNext = fragments[fragPrevious.sn - fragments[0].sn + 1];
-  } else if (bufferEnd === 0 && fragments[0].start === 0) {
-    fragNext = fragments[0];
-  } // Prefer the next fragment if it's within tolerance
-
-
-  if (fragNext && fragmentWithinToleranceTest(bufferEnd, maxFragLookUpTolerance, fragNext) === 0) {
-    return fragNext;
-  } // We might be seeking past the tolerance so find the best match
-
-
-  var foundFragment = binary_search.search(fragments, fragmentWithinToleranceTest.bind(null, bufferEnd, maxFragLookUpTolerance));
-
-  if (foundFragment) {
-    return foundFragment;
-  } // If no match was found return the next fragment after fragPrevious, or null
-
-
-  return fragNext;
-}
-// CONCATENATED MODULE: ./src/controller/gap-controller.js
-
-
-
-
-var STALL_MINIMUM_DURATION_MS = 250;
-var MAX_START_GAP_JUMP = 2.0;
-var SKIP_BUFFER_HOLE_STEP_SECONDS = 0.1;
-var SKIP_BUFFER_RANGE_START = 0.05;
-
-var gap_controller_GapController = /*#__PURE__*/function () {
-  function GapController(config, media, fragmentTracker, hls) {
-    this.config = config;
-    this.media = media;
-    this.fragmentTracker = fragmentTracker;
-    this.hls = hls;
-    this.nudgeRetry = 0;
-    this.stallReported = false;
-    this.stalled = null;
-    this.moved = false;
-    this.seeking = false;
-  }
-  /**
-   * Checks if the playhead is stuck within a gap, and if so, attempts to free it.
-   * A gap is an unbuffered range between two buffered ranges (or the start and the first buffered range).
-   *
-   * @param {number} lastCurrentTime Previously read playhead position
-   */
-
-
-  var _proto = GapController.prototype;
-
-  _proto.poll = function poll(lastCurrentTime) {
-    var config = this.config,
-        media = this.media,
-        stalled = this.stalled;
-    var currentTime = media.currentTime,
-        seeking = media.seeking;
-    var seeked = this.seeking && !seeking;
-    var beginSeek = !this.seeking && seeking;
-    this.seeking = seeking; // The playhead is moving, no-op
-
-    if (currentTime !== lastCurrentTime) {
-      this.moved = true;
-
-      if (stalled !== null) {
-        // The playhead is now moving, but was previously stalled
-        if (this.stallReported) {
-          var _stalledDuration = self.performance.now() - stalled;
-
-          logger["logger"].warn("playback not stuck anymore @" + currentTime + ", after " + Math.round(_stalledDuration) + "ms");
-          this.stallReported = false;
-        }
-
-        this.stalled = null;
-        this.nudgeRetry = 0;
-      }
-
-      return;
-    } // Clear stalled state when beginning or finishing seeking so that we don't report stalls coming out of a seek
-
-
-    if (beginSeek || seeked) {
-      this.stalled = null;
-    } // The playhead should not be moving
-
-
-    if (media.paused || media.ended || media.playbackRate === 0 || !buffer_helper_BufferHelper.getBuffered(media).length) {
-      return;
-    }
-
-    var bufferInfo = buffer_helper_BufferHelper.bufferInfo(media, currentTime, 0);
-    var isBuffered = bufferInfo.len > 0;
-    var nextStart = bufferInfo.nextStart || 0; // There is no playable buffer (waiting for buffer append)
-
-    if (!isBuffered && !nextStart) {
-      return;
-    }
-
-    if (seeking) {
-      // Waiting for seeking in a buffered range to complete
-      var hasEnoughBuffer = bufferInfo.len > MAX_START_GAP_JUMP; // Next buffered range is too far ahead to jump to while still seeking
-
-      var noBufferGap = !nextStart || nextStart - currentTime > MAX_START_GAP_JUMP && !this.fragmentTracker.getPartialFragment(currentTime);
-
-      if (hasEnoughBuffer || noBufferGap) {
-        return;
-      } // Reset moved state when seeking to a point in or before a gap
-
-
-      this.moved = false;
-    } // Skip start gaps if we haven't played, but the last poll detected the start of a stall
-    // The addition poll gives the browser a chance to jump the gap for us
-
-
-    if (!this.moved && this.stalled) {
-      var _level$details;
-
-      // Jump start gaps within jump threshold
-      var startJump = Math.max(nextStart, bufferInfo.start || 0) - currentTime; // When joining a live stream with audio tracks, account for live playlist window sliding by allowing
-      // a larger jump over start gaps caused by the audio-stream-controller buffering a start fragment
-      // that begins over 1 target duration after the video start position.
-
-      var level = this.hls.levels ? this.hls.levels[this.hls.currentLevel] : null;
-      var isLive = level === null || level === void 0 ? void 0 : (_level$details = level.details) === null || _level$details === void 0 ? void 0 : _level$details.live;
-      var maxStartGapJump = isLive ? level.details.targetduration * 2 : MAX_START_GAP_JUMP;
-
-      if (startJump > 0 && startJump <= maxStartGapJump) {
-        this._trySkipBufferHole(null);
-
-        return;
-      }
-    } // Start tracking stall time
-
-
-    var tnow = self.performance.now();
-
-    if (stalled === null) {
-      this.stalled = tnow;
-      return;
-    }
-
-    var stalledDuration = tnow - stalled;
-
-    if (!seeking && stalledDuration >= STALL_MINIMUM_DURATION_MS) {
-      // Report stalling after trying to fix
-      this._reportStall(bufferInfo.len);
-    }
-
-    var bufferedWithHoles = buffer_helper_BufferHelper.bufferInfo(media, currentTime, config.maxBufferHole);
-
-    this._tryFixBufferStall(bufferedWithHoles, stalledDuration);
-  }
-  /**
-   * Detects and attempts to fix known buffer stalling issues.
-   * @param bufferInfo - The properties of the current buffer.
-   * @param stalledDurationMs - The amount of time Hls.js has been stalling for.
-   * @private
-   */
-  ;
-
-  _proto._tryFixBufferStall = function _tryFixBufferStall(bufferInfo, stalledDurationMs) {
-    var config = this.config,
-        fragmentTracker = this.fragmentTracker,
-        media = this.media;
-    var currentTime = media.currentTime;
-    var partial = fragmentTracker.getPartialFragment(currentTime);
-
-    if (partial) {
-      // Try to skip over the buffer hole caused by a partial fragment
-      // This method isn't limited by the size of the gap between buffered ranges
-      var targetTime = this._trySkipBufferHole(partial); // we return here in this case, meaning
-      // the branch below only executes when we don't handle a partial fragment
-
-
-      if (targetTime) {
-        return;
-      }
-    } // if we haven't had to skip over a buffer hole of a partial fragment
-    // we may just have to "nudge" the playlist as the browser decoding/rendering engine
-    // needs to cross some sort of threshold covering all source-buffers content
-    // to start playing properly.
-
-
-    if (bufferInfo.len > config.maxBufferHole && stalledDurationMs > config.highBufferWatchdogPeriod * 1000) {
-      logger["logger"].warn('Trying to nudge playhead over buffer-hole'); // Try to nudge currentTime over a buffer hole if we've been stalling for the configured amount of seconds
-      // We only try to jump the hole if it's under the configured size
-      // Reset stalled so to rearm watchdog timer
-
-      this.stalled = null;
-
-      this._tryNudgeBuffer();
-    }
-  }
-  /**
-   * Triggers a BUFFER_STALLED_ERROR event, but only once per stall period.
-   * @param bufferLen - The playhead distance from the end of the current buffer segment.
-   * @private
-   */
-  ;
-
-  _proto._reportStall = function _reportStall(bufferLen) {
-    var hls = this.hls,
-        media = this.media,
-        stallReported = this.stallReported;
-
-    if (!stallReported) {
-      // Report stalled error once
-      this.stallReported = true;
-      logger["logger"].warn("Playback stalling at @" + media.currentTime + " due to low buffer (buffer=" + bufferLen + ")");
-      hls.trigger(events["default"].ERROR, {
-        type: errors["ErrorTypes"].MEDIA_ERROR,
-        details: errors["ErrorDetails"].BUFFER_STALLED_ERROR,
-        fatal: false,
-        buffer: bufferLen
-      });
-    }
-  }
-  /**
-   * Attempts to fix buffer stalls by jumping over known gaps caused by partial fragments
-   * @param partial - The partial fragment found at the current time (where playback is stalling).
-   * @private
-   */
-  ;
-
-  _proto._trySkipBufferHole = function _trySkipBufferHole(partial) {
-    var config = this.config,
-        hls = this.hls,
-        media = this.media;
-    var currentTime = media.currentTime;
-    var lastEndTime = 0; // Check if currentTime is between unbuffered regions of partial fragments
-
-    var buffered = buffer_helper_BufferHelper.getBuffered(media);
-
-    for (var i = 0; i < buffered.length; i++) {
-      var startTime = buffered.start(i);
-
-      if (currentTime + config.maxBufferHole >= lastEndTime && currentTime < startTime) {
-        var targetTime = Math.max(startTime + SKIP_BUFFER_RANGE_START, media.currentTime + SKIP_BUFFER_HOLE_STEP_SECONDS);
-        logger["logger"].warn("skipping hole, adjusting currentTime from " + currentTime + " to " + targetTime);
-        this.moved = true;
-        this.stalled = null;
-        media.currentTime = targetTime;
-
-        if (partial) {
-          hls.trigger(events["default"].ERROR, {
-            type: errors["ErrorTypes"].MEDIA_ERROR,
-            details: errors["ErrorDetails"].BUFFER_SEEK_OVER_HOLE,
-            fatal: false,
-            reason: "fragment loaded with buffer holes, seeking from " + currentTime + " to " + targetTime,
-            frag: partial
-          });
-        }
-
-        return targetTime;
-      }
-
-      lastEndTime = buffered.end(i);
-    }
-
-    return 0;
-  }
-  /**
-   * Attempts to fix buffer stalls by advancing the mediaElement's current time by a small amount.
-   * @private
-   */
-  ;
-
-  _proto._tryNudgeBuffer = function _tryNudgeBuffer() {
-    var config = this.config,
-        hls = this.hls,
-        media = this.media;
-    var currentTime = media.currentTime;
-    var nudgeRetry = (this.nudgeRetry || 0) + 1;
-    this.nudgeRetry = nudgeRetry;
-
-    if (nudgeRetry < config.nudgeMaxRetry) {
-      var targetTime = currentTime + nudgeRetry * config.nudgeOffset; // playback stalled in buffered area ... let's nudge currentTime to try to overcome this
-
-      logger["logger"].warn("Nudging 'currentTime' from " + currentTime + " to " + targetTime);
-      media.currentTime = targetTime;
-      hls.trigger(events["default"].ERROR, {
-        type: errors["ErrorTypes"].MEDIA_ERROR,
-        details: errors["ErrorDetails"].BUFFER_NUDGE_ON_STALL,
-        fatal: false
-      });
-    } else {
-      logger["logger"].error("Playhead still not moving while enough data buffered @" + currentTime + " after " + config.nudgeMaxRetry + " nudges");
-      hls.trigger(events["default"].ERROR, {
-        type: errors["ErrorTypes"].MEDIA_ERROR,
-        details: errors["ErrorDetails"].BUFFER_STALLED_ERROR,
-        fatal: true
-      });
-    }
-  };
-
-  return GapController;
-}();
-
-
-// CONCATENATED MODULE: ./src/task-loop.ts
-function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
-
-function task_loop_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
-
-
-
-/**
- * Sub-class specialization of EventHandler base class.
- *
- * TaskLoop allows to schedule a task function being called (optionnaly repeatedly) on the main loop,
- * scheduled asynchroneously, avoiding recursive calls in the same tick.
- *
- * The task itself is implemented in `doTick`. It can be requested and called for single execution
- * using the `tick` method.
- *
- * It will be assured that the task execution method (`tick`) only gets called once per main loop "tick",
- * no matter how often it gets requested for execution. Execution in further ticks will be scheduled accordingly.
- *
- * If further execution requests have already been scheduled on the next tick, it can be checked with `hasNextTick`,
- * and cancelled with `clearNextTick`.
- *
- * The task can be scheduled as an interval repeatedly with a period as parameter (see `setInterval`, `clearInterval`).
- *
- * Sub-classes need to implement the `doTick` method which will effectively have the task execution routine.
- *
- * Further explanations:
- *
- * The baseclass has a `tick` method that will schedule the doTick call. It may be called synchroneously
- * only for a stack-depth of one. On re-entrant calls, sub-sequent calls are scheduled for next main loop ticks.
- *
- * When the task execution (`tick` method) is called in re-entrant way this is detected and
- * we are limiting the task execution per call stack to exactly one, but scheduling/post-poning further
- * task processing on the next main loop iteration (also known as "next tick" in the Node/JS runtime lingo).
- */
-var TaskLoop = /*#__PURE__*/function (_EventHandler) {
-  task_loop_inheritsLoose(TaskLoop, _EventHandler);
-
-  function TaskLoop(hls) {
-    var _this;
-
-    for (var _len = arguments.length, events = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
-      events[_key - 1] = arguments[_key];
-    }
-
-    _this = _EventHandler.call.apply(_EventHandler, [this, hls].concat(events)) || this;
-    _this._boundTick = void 0;
-    _this._tickTimer = null;
-    _this._tickInterval = null;
-    _this._tickCallCount = 0;
-    _this._boundTick = _this.tick.bind(_assertThisInitialized(_this));
-    return _this;
-  }
-  /**
-   * @override
-   */
-
-
-  var _proto = TaskLoop.prototype;
-
-  _proto.onHandlerDestroying = function onHandlerDestroying() {
-    // clear all timers before unregistering from event bus
-    this.clearNextTick();
-    this.clearInterval();
-  }
-  /**
-   * @returns {boolean}
-   */
-  ;
-
-  _proto.hasInterval = function hasInterval() {
-    return !!this._tickInterval;
-  }
-  /**
-   * @returns {boolean}
-   */
-  ;
-
-  _proto.hasNextTick = function hasNextTick() {
-    return !!this._tickTimer;
-  }
-  /**
-   * @param {number} millis Interval time (ms)
-   * @returns {boolean} True when interval has been scheduled, false when already scheduled (no effect)
-   */
-  ;
-
-  _proto.setInterval = function setInterval(millis) {
-    if (!this._tickInterval) {
-      this._tickInterval = self.setInterval(this._boundTick, millis);
-      return true;
-    }
-
-    return false;
-  }
-  /**
-   * @returns {boolean} True when interval was cleared, false when none was set (no effect)
-   */
-  ;
-
-  _proto.clearInterval = function clearInterval() {
-    if (this._tickInterval) {
-      self.clearInterval(this._tickInterval);
-      this._tickInterval = null;
-      return true;
-    }
-
-    return false;
-  }
-  /**
-   * @returns {boolean} True when timeout was cleared, false when none was set (no effect)
-   */
-  ;
-
-  _proto.clearNextTick = function clearNextTick() {
-    if (this._tickTimer) {
-      self.clearTimeout(this._tickTimer);
-      this._tickTimer = null;
-      return true;
-    }
-
-    return false;
-  }
-  /**
-   * Will call the subclass doTick implementation in this main loop tick
-   * or in the next one (via setTimeout(,0)) in case it has already been called
-   * in this tick (in case this is a re-entrant call).
-   */
-  ;
-
-  _proto.tick = function tick() {
-    this._tickCallCount++;
-
-    if (this._tickCallCount === 1) {
-      this.doTick(); // re-entrant call to tick from previous doTick call stack
-      // -> schedule a call on the next main loop iteration to process this task processing request
-
-      if (this._tickCallCount > 1) {
-        // make sure only one timer exists at any time at max
-        this.clearNextTick();
-        this._tickTimer = self.setTimeout(this._boundTick, 0);
-      }
-
-      this._tickCallCount = 0;
-    }
-  }
-  /**
-   * For subclass to implement task logic
-   * @abstract
-   */
-  ;
-
-  _proto.doTick = function doTick() {};
-
-  return TaskLoop;
-}(event_handler);
-
-
-// CONCATENATED MODULE: ./src/controller/base-stream-controller.js
-
-
-function base_stream_controller_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
-
-
-
-
-
-var State = {
-  STOPPED: 'STOPPED',
-  STARTING: 'STARTING',
-  IDLE: 'IDLE',
-  PAUSED: 'PAUSED',
-  KEY_LOADING: 'KEY_LOADING',
-  FRAG_LOADING: 'FRAG_LOADING',
-  FRAG_LOADING_WAITING_RETRY: 'FRAG_LOADING_WAITING_RETRY',
-  WAITING_TRACK: 'WAITING_TRACK',
-  PARSING: 'PARSING',
-  PARSED: 'PARSED',
-  BUFFER_FLUSHING: 'BUFFER_FLUSHING',
-  ENDED: 'ENDED',
-  ERROR: 'ERROR',
-  WAITING_INIT_PTS: 'WAITING_INIT_PTS',
-  WAITING_LEVEL: 'WAITING_LEVEL'
-};
-
-var base_stream_controller_BaseStreamController = /*#__PURE__*/function (_TaskLoop) {
-  base_stream_controller_inheritsLoose(BaseStreamController, _TaskLoop);
-
-  function BaseStreamController() {
-    return _TaskLoop.apply(this, arguments) || this;
-  }
-
-  var _proto = BaseStreamController.prototype;
-
-  _proto.doTick = function doTick() {};
-
-  _proto.startLoad = function startLoad() {};
-
-  _proto.stopLoad = function stopLoad() {
-    var frag = this.fragCurrent;
-
-    if (frag) {
-      if (frag.loader) {
-        frag.loader.abort();
-      }
-
-      this.fragmentTracker.removeFragment(frag);
-    }
-
-    if (this.demuxer) {
-      this.demuxer.destroy();
-      this.demuxer = null;
-    }
-
-    this.fragCurrent = null;
-    this.fragPrevious = null;
-    this.clearInterval();
-    this.clearNextTick();
-    this.state = State.STOPPED;
-  };
-
-  _proto._streamEnded = function _streamEnded(bufferInfo, levelDetails) {
-    var fragCurrent = this.fragCurrent,
-        fragmentTracker = this.fragmentTracker; // we just got done loading the final fragment and there is no other buffered range after ...
-    // rationale is that in case there are any buffered ranges after, it means that there are unbuffered portion in between
-    // so we should not switch to ENDED in that case, to be able to buffer them
-    // dont switch to ENDED if we need to backtrack last fragment
-
-    if (!levelDetails.live && fragCurrent && !fragCurrent.backtracked && fragCurrent.sn === levelDetails.endSN && !bufferInfo.nextStart) {
-      var fragState = fragmentTracker.getState(fragCurrent);
-      return fragState === FragmentState.PARTIAL || fragState === FragmentState.OK;
-    }
-
-    return false;
-  };
-
-  _proto.onMediaSeeking = function onMediaSeeking() {
-    var config = this.config,
-        media = this.media,
-        mediaBuffer = this.mediaBuffer,
-        state = this.state;
-    var currentTime = media ? media.currentTime : null;
-    var bufferInfo = buffer_helper_BufferHelper.bufferInfo(mediaBuffer || media, currentTime, this.config.maxBufferHole);
-    logger["logger"].log("media seeking to " + (Object(number["isFiniteNumber"])(currentTime) ? currentTime.toFixed(3) : currentTime));
-
-    if (state === State.FRAG_LOADING) {
-      var fragCurrent = this.fragCurrent; // check if we are seeking to a unbuffered area AND if frag loading is in progress
-
-      if (bufferInfo.len === 0 && fragCurrent) {
-        var tolerance = config.maxFragLookUpTolerance;
-        var fragStartOffset = fragCurrent.start - tolerance;
-        var fragEndOffset = fragCurrent.start + fragCurrent.duration + tolerance; // check if we seek position will be out of currently loaded frag range : if out cancel frag load, if in, don't do anything
-
-        if (currentTime < fragStartOffset || currentTime > fragEndOffset) {
-          if (fragCurrent.loader) {
-            logger["logger"].log('seeking outside of buffer while fragment load in progress, cancel fragment load');
-            fragCurrent.loader.abort();
-          }
-
-          this.fragCurrent = null;
-          this.fragPrevious = null; // switch to IDLE state to load new fragment
-
-          this.state = State.IDLE;
-        } else {
-          logger["logger"].log('seeking outside of buffer but within currently loaded fragment range');
-        }
-      }
-    } else if (state === State.ENDED) {
-      // if seeking to unbuffered area, clean up fragPrevious
-      if (bufferInfo.len === 0) {
-        this.fragPrevious = null;
-        this.fragCurrent = null;
-      } // switch to IDLE state to check for potential new fragment
-
-
-      this.state = State.IDLE;
-    }
-
-    if (media) {
-      this.lastCurrentTime = currentTime;
-    } // in case seeking occurs although no media buffered, adjust startPosition and nextLoadPosition to seek target
-
-
-    if (!this.loadedmetadata) {
-      this.nextLoadPosition = this.startPosition = currentTime;
-    } // tick to speed up processing
-
-
-    this.tick();
-  };
-
-  _proto.onMediaEnded = function onMediaEnded() {
-    // reset startPosition and lastCurrentTime to restart playback @ stream beginning
-    this.startPosition = this.lastCurrentTime = 0;
-  };
-
-  _proto.onHandlerDestroying = function onHandlerDestroying() {
-    this.stopLoad();
-
-    _TaskLoop.prototype.onHandlerDestroying.call(this);
-  };
-
-  _proto.onHandlerDestroyed = function onHandlerDestroyed() {
-    this.state = State.STOPPED;
-    this.fragmentTracker = null;
-  };
-
-  _proto.computeLivePosition = function computeLivePosition(sliding, levelDetails) {
-    var targetLatency = this.config.liveSyncDuration !== undefined ? this.config.liveSyncDuration : this.config.liveSyncDurationCount * levelDetails.targetduration;
-    return sliding + Math.max(0, levelDetails.totalduration - targetLatency);
-  };
-
-  return BaseStreamController;
-}(TaskLoop);
-
-
-// CONCATENATED MODULE: ./src/controller/stream-controller.js
-
-
-
-
-
-
-
-function stream_controller_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
-
-function stream_controller_createClass(Constructor, protoProps, staticProps) { if (protoProps) stream_controller_defineProperties(Constructor.prototype, protoProps); if (staticProps) stream_controller_defineProperties(Constructor, staticProps); return Constructor; }
-
-function stream_controller_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
-
-/*
- * Stream Controller
-*/
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-var TICK_INTERVAL = 100; // how often to tick in ms
-
-var stream_controller_StreamController = /*#__PURE__*/function (_BaseStreamController) {
-  stream_controller_inheritsLoose(StreamController, _BaseStreamController);
-
-  function StreamController(hls, fragmentTracker) {
-    var _this;
-
-    _this = _BaseStreamController.call(this, hls, events["default"].MEDIA_ATTACHED, events["default"].MEDIA_DETACHING, events["default"].MANIFEST_LOADING, events["default"].MANIFEST_PARSED, events["default"].LEVEL_LOADED, events["default"].LEVELS_UPDATED, events["default"].KEY_LOADED, events["default"].FRAG_LOADED, events["default"].FRAG_LOAD_EMERGENCY_ABORTED, events["default"].FRAG_PARSING_INIT_SEGMENT, events["default"].FRAG_PARSING_DATA, events["default"].FRAG_PARSED, events["default"].ERROR, events["default"].AUDIO_TRACK_SWITCHING, events["default"].AUDIO_TRACK_SWITCHED, events["default"].BUFFER_CREATED, events["default"].BUFFER_APPENDED, events["default"].BUFFER_FLUSHED) || this;
-    _this.fragmentTracker = fragmentTracker;
-    _this.config = hls.config;
-    _this.audioCodecSwap = false;
-    _this._state = State.STOPPED;
-    _this.stallReported = false;
-    _this.gapController = null;
-    _this.altAudio = false;
-    _this.audioOnly = false;
-    _this.bitrateTest = false;
-    return _this;
-  }
-
-  var _proto = StreamController.prototype;
-
-  _proto.startLoad = function startLoad(startPosition) {
-    if (this.levels) {
-      var lastCurrentTime = this.lastCurrentTime,
-          hls = this.hls;
-      this.stopLoad();
-      this.setInterval(TICK_INTERVAL);
-      this.level = -1;
-      this.fragLoadError = 0;
-
-      if (!this.startFragRequested) {
-        // determine load level
-        var startLevel = hls.startLevel;
-
-        if (startLevel === -1) {
-          if (hls.config.testBandwidth) {
-            // -1 : guess start Level by doing a bitrate test by loading first fragment of lowest quality level
-            startLevel = 0;
-            this.bitrateTest = true;
-          } else {
-            startLevel = hls.nextAutoLevel;
-          }
-        } // set new level to playlist loader : this will trigger start level load
-        // hls.nextLoadLevel remains until it is set to a new value or until a new frag is successfully loaded
-
-
-        this.level = hls.nextLoadLevel = startLevel;
-        this.loadedmetadata = false;
-      } // if startPosition undefined but lastCurrentTime set, set startPosition to last currentTime
-
-
-      if (lastCurrentTime > 0 && startPosition === -1) {
-        logger["logger"].log("override startPosition with lastCurrentTime @" + lastCurrentTime.toFixed(3));
-        startPosition = lastCurrentTime;
-      }
-
-      this.state = State.IDLE;
-      this.nextLoadPosition = this.startPosition = this.lastCurrentTime = startPosition;
-      this.tick();
-    } else {
-      this.forceStartLoad = true;
-      this.state = State.STOPPED;
-    }
-  };
-
-  _proto.stopLoad = function stopLoad() {
-    this.forceStartLoad = false;
-
-    _BaseStreamController.prototype.stopLoad.call(this);
-  };
-
-  _proto.doTick = function doTick() {
-    var _this$levels$this$lev;
-
-    switch (this.state) {
-      case State.BUFFER_FLUSHING:
-        // in buffer flushing state, reset fragLoadError counter
-        this.fragLoadError = 0;
-        break;
-
-      case State.IDLE:
-        this._doTickIdle();
-
-        break;
-
-      case State.WAITING_LEVEL:
-        var details = (_this$levels$this$lev = this.levels[this.level]) === null || _this$levels$this$lev === void 0 ? void 0 : _this$levels$this$lev.details; // check if playlist is already loaded (must be current level for live)
-
-        if (details && (!details.live || this.levelLastLoaded === this.level)) {
-          this.state = State.IDLE;
-        }
-
-        break;
-
-      case State.FRAG_LOADING_WAITING_RETRY:
-        var now = window.performance.now();
-        var retryDate = this.retryDate; // if current time is gt than retryDate, or if media seeking let's switch to IDLE state to retry loading
-
-        if (!retryDate || now >= retryDate || this.media && this.media.seeking) {
-          logger["logger"].log('mediaController: retryDate reached, switch back to IDLE state');
-          this.state = State.IDLE;
-        }
-
-        break;
-
-      case State.ERROR:
-      case State.STOPPED:
-      case State.FRAG_LOADING:
-      case State.PARSING:
-      case State.PARSED:
-      case State.ENDED:
-        break;
-
-      default:
-        break;
-    } // check buffer
-
-
-    this._checkBuffer(); // check/update current fragment
-
-
-    this._checkFragmentChanged();
-  } // Ironically the "idle" state is the on we do the most logic in it seems ....
-  // NOTE: Maybe we could rather schedule a check for buffer length after half of the currently
-  //       played segment, or on pause/play/seek instead of naively checking every 100ms?
-  ;
-
-  _proto._doTickIdle = function _doTickIdle() {
-    var hls = this.hls,
-        config = hls.config,
-        media = this.media; // if start level not parsed yet OR
-    // if video not attached AND start fragment already requested OR start frag prefetch disable
-    // exit loop, as we either need more info (level not parsed) or we need media to be attached to load new fragment
-
-    if (this.levelLastLoaded === undefined || !media && (this.startFragRequested || !config.startFragPrefetch)) {
-      return;
-    } // If the "main" level is audio-only but we are loading an alternate track in the same group, do not load anything
-
-
-    if (this.altAudio && this.audioOnly) {
-      // Clear audio demuxer state so when switching back to main audio we're not still appending where we left off
-      this.demuxer.frag = null;
-      return;
-    } // if we have not yet loaded any fragment, start loading from start position
-
-
-    var pos;
-
-    if (this.loadedmetadata) {
-      pos = media.currentTime;
-    } else {
-      pos = this.nextLoadPosition;
-    } // determine next load level
-
-
-    var level = hls.nextLoadLevel,
-        levelInfo = this.levels[level];
-
-    if (!levelInfo) {
-      return;
-    }
-
-    var levelBitrate = levelInfo.bitrate,
-        maxBufLen; // compute max Buffer Length that we could get from this load level, based on level bitrate.
-
-    if (levelBitrate) {
-      maxBufLen = Math.max(8 * config.maxBufferSize / levelBitrate, config.maxBufferLength);
-    } else {
-      maxBufLen = config.maxBufferLength;
-    }
-
-    maxBufLen = Math.min(maxBufLen, config.maxMaxBufferLength); // determine next candidate fragment to be loaded, based on current position and end of buffer position
-    // ensure up to `config.maxMaxBufferLength` of buffer upfront
-
-    var maxBufferHole = pos < config.maxBufferHole ? Math.max(MAX_START_GAP_JUMP, config.maxBufferHole) : config.maxBufferHole;
-    var bufferInfo = buffer_helper_BufferHelper.bufferInfo(this.mediaBuffer ? this.mediaBuffer : media, pos, maxBufferHole);
-    var bufferLen = bufferInfo.len; // Stay idle if we are still with buffer margins
-
-    if (bufferLen >= maxBufLen) {
-      return;
-    } // if buffer length is less than maxBufLen try to load a new fragment ...
-
-
-    logger["logger"].trace("buffer length of " + bufferLen.toFixed(3) + " is below max of " + maxBufLen.toFixed(3) + ". checking for more payload ..."); // set next load level : this will trigger a playlist load if needed
-
-    this.level = hls.nextLoadLevel = level;
-    var levelDetails = levelInfo.details; // if level info not retrieved yet, switch state and wait for level retrieval
-    // if live playlist, ensure that new playlist has been refreshed to avoid loading/try to load
-    // a useless and outdated fragment (that might even introduce load error if it is already out of the live playlist)
-
-    if (!levelDetails || levelDetails.live && this.levelLastLoaded !== level) {
-      this.state = State.WAITING_LEVEL;
-      return;
-    }
-
-    if (this._streamEnded(bufferInfo, levelDetails)) {
-      var data = {};
-
-      if (this.altAudio) {
-        data.type = 'video';
-      }
-
-      this.hls.trigger(events["default"].BUFFER_EOS, data);
-      this.state = State.ENDED;
-      return;
-    } // if we have the levelDetails for the selected variant, lets continue enrichen our stream (load keys/fragments or trigger EOS, etc..)
-
-
-    this._fetchPayloadOrEos(pos, bufferInfo, levelDetails);
-  };
-
-  _proto._fetchPayloadOrEos = function _fetchPayloadOrEos(pos, bufferInfo, levelDetails) {
-    var fragPrevious = this.fragPrevious,
-        fragments = levelDetails.fragments,
-        fragLen = fragments.length; // empty playlist
-
-    if (fragLen === 0) {
-      return;
-    } // find fragment index, contiguous with end of buffer position
-
-
-    var start = fragments[0].start,
-        end = fragments[fragLen - 1].start + fragments[fragLen - 1].duration,
-        bufferEnd = bufferInfo.end,
-        frag;
-
-    if (levelDetails.initSegment && !levelDetails.initSegment.data) {
-      frag = levelDetails.initSegment;
-    } else {
-      // in case of live playlist we need to ensure that requested position is not located before playlist start
-      if (levelDetails.live) {
-        var initialLiveManifestSize = this.config.initialLiveManifestSize;
-
-        if (fragLen < initialLiveManifestSize) {
-          logger["logger"].warn("Can not start playback of a level, reason: not enough fragments " + fragLen + " < " + initialLiveManifestSize);
-          return;
-        }
-
-        frag = this._ensureFragmentAtLivePoint(levelDetails, bufferEnd, start, end, fragPrevious, fragments); // if it explicitely returns null don't load any fragment and exit function now
-
-        if (frag === null) {
-          return;
-        }
-      } else {
-        // VoD playlist: if bufferEnd before start of playlist, load first fragment
-        if (bufferEnd < start) {
-          frag = fragments[0];
-        }
-      }
-    }
-
-    if (!frag) {
-      frag = this._findFragment(start, fragPrevious, fragLen, fragments, bufferEnd, end, levelDetails);
-    }
-
-    if (frag) {
-      if (frag.encrypted) {
-        this._loadKey(frag, levelDetails);
-      } else {
-        this._loadFragment(frag, levelDetails, pos, bufferEnd);
-      }
-    }
-  };
-
-  _proto._ensureFragmentAtLivePoint = function _ensureFragmentAtLivePoint(levelDetails, bufferEnd, start, end, fragPrevious, fragments) {
-    var config = this.hls.config,
-        media = this.media;
-    var frag; // check if requested position is within seekable boundaries :
-    // logger.log(`start/pos/bufEnd/seeking:${start.toFixed(3)}/${pos.toFixed(3)}/${bufferEnd.toFixed(3)}/${this.media.seeking}`);
-
-    var maxLatency = Infinity;
-
-    if (config.liveMaxLatencyDuration !== undefined) {
-      maxLatency = config.liveMaxLatencyDuration;
-    } else if (Object(number["isFiniteNumber"])(config.liveMaxLatencyDurationCount)) {
-      maxLatency = config.liveMaxLatencyDurationCount * levelDetails.targetduration;
-    }
-
-    if (bufferEnd < Math.max(start - config.maxFragLookUpTolerance, end - maxLatency)) {
-      var liveSyncPosition = this.liveSyncPosition = this.computeLivePosition(start, levelDetails);
-      bufferEnd = liveSyncPosition;
-
-      if (media && media.readyState && media.duration > liveSyncPosition && liveSyncPosition > media.currentTime) {
-        logger["logger"].warn("buffer end: " + bufferEnd.toFixed(3) + " is located too far from the end of live sliding playlist, reset currentTime to : " + liveSyncPosition.toFixed(3));
-        media.currentTime = liveSyncPosition;
-      }
-
-      this.nextLoadPosition = liveSyncPosition;
-    } // if end of buffer greater than live edge, don't load any fragment
-    // this could happen if live playlist intermittently slides in the past.
-    // level 1 loaded [182580161,182580167]
-    // level 1 loaded [182580162,182580169]
-    // Loading 182580168 of [182580162 ,182580169],level 1 ..
-    // Loading 182580169 of [182580162 ,182580169],level 1 ..
-    // level 1 loaded [182580162,182580168] <============= here we should have bufferEnd > end. in that case break to avoid reloading 182580168
-    // level 1 loaded [182580164,182580171]
-    //
-    // don't return null in case media not loaded yet (readystate === 0)
-
-
-    if (levelDetails.PTSKnown && bufferEnd > end && media && media.readyState) {
-      return null;
-    }
-
-    if (this.startFragRequested && !levelDetails.PTSKnown) {
-      /* we are switching level on live playlist, but we don't have any PTS info for that quality level ...
-         try to load frag matching with next SN.
-         even if SN are not synchronized between playlists, loading this frag will help us
-         compute playlist sliding and find the right one after in case it was not the right consecutive one */
-      if (fragPrevious) {
-        if (levelDetails.hasProgramDateTime) {
-          // Relies on PDT in order to switch bitrates (Support EXT-X-DISCONTINUITY without EXT-X-DISCONTINUITY-SEQUENCE)
-          logger["logger"].log("live playlist, switching playlist, load frag with same PDT: " + fragPrevious.programDateTime);
-          frag = findFragmentByPDT(fragments, fragPrevious.endProgramDateTime, config.maxFragLookUpTolerance);
-        } else {
-          // Uses buffer and sequence number to calculate switch segment (required if using EXT-X-DISCONTINUITY-SEQUENCE)
-          var targetSN = fragPrevious.sn + 1;
-
-          if (targetSN >= levelDetails.startSN && targetSN <= levelDetails.endSN) {
-            var fragNext = fragments[targetSN - levelDetails.startSN];
-
-            if (fragPrevious.cc === fragNext.cc) {
-              frag = fragNext;
-              logger["logger"].log("live playlist, switching playlist, load frag with next SN: " + frag.sn);
-            }
-          } // next frag SN not available (or not with same continuity counter)
-          // look for a frag sharing the same CC
-
-
-          if (!frag) {
-            frag = binary_search.search(fragments, function (frag) {
-              return fragPrevious.cc - frag.cc;
-            });
-
-            if (frag) {
-              logger["logger"].log("live playlist, switching playlist, load frag with same CC: " + frag.sn);
-            }
-          }
-        }
-      }
-    }
-
-    return frag;
-  };
-
-  _proto._findFragment = function _findFragment(start, fragPreviousLoad, fragmentIndexRange, fragments, bufferEnd, end, levelDetails) {
-    var config = this.hls.config;
-    var fragNextLoad;
-
-    if (bufferEnd < end) {
-      var lookupTolerance = bufferEnd > end - config.maxFragLookUpTolerance ? 0 : config.maxFragLookUpTolerance; // Remove the tolerance if it would put the bufferEnd past the actual end of stream
-      // Uses buffer and sequence number to calculate switch segment (required if using EXT-X-DISCONTINUITY-SEQUENCE)
-
-      fragNextLoad = findFragmentByPTS(fragPreviousLoad, fragments, bufferEnd, lookupTolerance);
-    } else {
-      // reach end of playlist
-      fragNextLoad = fragments[fragmentIndexRange - 1];
-    }
-
-    if (fragNextLoad) {
-      var curSNIdx = fragNextLoad.sn - levelDetails.startSN;
-      var sameLevel = fragPreviousLoad && fragNextLoad.level === fragPreviousLoad.level;
-      var prevSnFrag = fragments[curSNIdx - 1];
-      var nextSnFrag = fragments[curSNIdx + 1]; // logger.log('find SN matching with pos:' +  bufferEnd + ':' + frag.sn);
-
-      if (fragPreviousLoad && fragNextLoad.sn === fragPreviousLoad.sn) {
-        if (sameLevel && !fragNextLoad.backtracked) {
-          if (fragNextLoad.sn < levelDetails.endSN) {
-            var deltaPTS = fragPreviousLoad.deltaPTS; // if there is a significant delta between audio and video, larger than max allowed hole,
-            // and if previous remuxed fragment did not start with a keyframe. (fragPrevious.dropped)
-            // let's try to load previous fragment again to get last keyframe
-            // then we will reload again current fragment (that way we should be able to fill the buffer hole ...)
-
-            if (deltaPTS && deltaPTS > config.maxBufferHole && fragPreviousLoad.dropped && curSNIdx) {
-              fragNextLoad = prevSnFrag;
-              logger["logger"].warn('Previous fragment was dropped with large PTS gap between audio and video. Maybe fragment is not starting with a keyframe? Loading previous one to try to overcome this');
-            } else {
-              fragNextLoad = nextSnFrag;
-
-              if (this.fragmentTracker.getState(fragNextLoad) !== FragmentState.OK) {
-                logger["logger"].log("Re-loading fragment with SN: " + fragNextLoad.sn);
-              }
-            }
-          } else {
-            fragNextLoad = null;
-          }
-        } else if (fragNextLoad.backtracked) {
-          // Only backtrack a max of 1 consecutive fragment to prevent sliding back too far when little or no frags start with keyframes
-          if (nextSnFrag && nextSnFrag.backtracked) {
-            logger["logger"].warn("Already backtracked from fragment " + nextSnFrag.sn + ", will not backtrack to fragment " + fragNextLoad.sn + ". Loading fragment " + nextSnFrag.sn);
-            fragNextLoad = nextSnFrag;
-          } else {
-            // If a fragment has dropped frames and it's in a same level/sequence, load the previous fragment to try and find the keyframe
-            // Reset the dropped count now since it won't be reset until we parse the fragment again, which prevents infinite backtracking on the same segment
-            logger["logger"].warn('Loaded fragment with dropped frames, backtracking 1 segment to find a keyframe');
-            fragNextLoad.dropped = 0;
-
-            if (prevSnFrag) {
-              fragNextLoad = prevSnFrag;
-              fragNextLoad.backtracked = true;
-            } else if (curSNIdx) {
-              // can't backtrack on very first fragment
-              fragNextLoad = null;
-            }
-          }
-        }
-      }
-    }
-
-    return fragNextLoad;
-  };
-
-  _proto._loadKey = function _loadKey(frag, levelDetails) {
-    logger["logger"].log("Loading key for " + frag.sn + " of [" + levelDetails.startSN + "-" + levelDetails.endSN + "], level " + this.level);
-    this.state = State.KEY_LOADING;
-    this.hls.trigger(events["default"].KEY_LOADING, {
-      frag: frag
-    });
-  };
-
-  _proto._loadFragment = function _loadFragment(frag, levelDetails, pos, bufferEnd) {
-    // Check if fragment is not loaded
-    var fragState = this.fragmentTracker.getState(frag);
-    this.fragCurrent = frag;
-
-    if (frag.sn !== 'initSegment') {
-      this.startFragRequested = true;
-    } // Don't update nextLoadPosition for fragments which are not buffered
-
-
-    if (Object(number["isFiniteNumber"])(frag.sn) && !frag.bitrateTest) {
-      this.nextLoadPosition = frag.start + frag.duration;
-    } // Allow backtracked fragments to load
-
-
-    if (frag.backtracked || fragState === FragmentState.NOT_LOADED || fragState === FragmentState.PARTIAL) {
-      frag.autoLevel = this.hls.autoLevelEnabled;
-      frag.bitrateTest = this.bitrateTest;
-      logger["logger"].log("Loading " + frag.sn + " of [" + levelDetails.startSN + "-" + levelDetails.endSN + "], level " + this.level + ", " + (this.loadedmetadata ? 'currentTime' : 'nextLoadPosition') + ": " + parseFloat(pos.toFixed(3)) + ", bufferEnd: " + parseFloat(bufferEnd.toFixed(3)));
-      this.hls.trigger(events["default"].FRAG_LOADING, {
-        frag: frag
-      }); // lazy demuxer init, as this could take some time ... do it during frag loading
-
-      if (!this.demuxer) {
-        this.demuxer = new demux_demuxer(this.hls, 'main');
-      }
-
-      this.state = State.FRAG_LOADING;
-    } else if (fragState === FragmentState.APPENDING) {
-      // Lower the buffer size and try again
-      if (this._reduceMaxBufferLength(frag.duration)) {
-        this.fragmentTracker.removeFragment(frag);
-      }
-    }
-  };
-
-  _proto.getBufferedFrag = function getBufferedFrag(position) {
-    return this.fragmentTracker.getBufferedFrag(position, PlaylistLevelType.MAIN);
-  };
-
-  _proto.followingBufferedFrag = function followingBufferedFrag(frag) {
-    if (frag) {
-      // try to get range of next fragment (500ms after this range)
-      return this.getBufferedFrag(frag.endPTS + 0.5);
-    }
-
-    return null;
-  };
-
-  _proto._checkFragmentChanged = function _checkFragmentChanged() {
-    var fragPlayingCurrent,
-        currentTime,
-        video = this.media;
-
-    if (video && video.readyState && video.seeking === false) {
-      currentTime = video.currentTime;
-      /* if video element is in seeked state, currentTime can only increase.
-        (assuming that playback rate is positive ...)
-        As sometimes currentTime jumps back to zero after a
-        media decode error, check this, to avoid seeking back to
-        wrong position after a media decode error
-      */
-
-      if (currentTime > this.lastCurrentTime) {
-        this.lastCurrentTime = currentTime;
-      }
-
-      if (buffer_helper_BufferHelper.isBuffered(video, currentTime)) {
-        fragPlayingCurrent = this.getBufferedFrag(currentTime);
-      } else if (buffer_helper_BufferHelper.isBuffered(video, currentTime + 0.1)) {
-        /* ensure that FRAG_CHANGED event is triggered at startup,
-          when first video frame is displayed and playback is paused.
-          add a tolerance of 100ms, in case current position is not buffered,
-          check if current pos+100ms is buffered and use that buffer range
-          for FRAG_CHANGED event reporting */
-        fragPlayingCurrent = this.getBufferedFrag(currentTime + 0.1);
-      }
-
-      if (fragPlayingCurrent) {
-        var fragPlaying = fragPlayingCurrent;
-
-        if (fragPlaying !== this.fragPlaying) {
-          this.hls.trigger(events["default"].FRAG_CHANGED, {
-            frag: fragPlaying
-          });
-          var fragPlayingLevel = fragPlaying.level;
-
-          if (!this.fragPlaying || this.fragPlaying.level !== fragPlayingLevel) {
-            this.hls.trigger(events["default"].LEVEL_SWITCHED, {
-              level: fragPlayingLevel
-            });
-          }
-
-          this.fragPlaying = fragPlaying;
-        }
-      }
-    }
-  }
-  /*
-    on immediate level switch :
-     - pause playback if playing
-     - cancel any pending load request
-     - and trigger a buffer flush
-  */
-  ;
-
-  _proto.immediateLevelSwitch = function immediateLevelSwitch() {
-    logger["logger"].log('immediateLevelSwitch');
-
-    if (!this.immediateSwitch) {
-      this.immediateSwitch = true;
-      var media = this.media,
-          previouslyPaused;
-
-      if (media) {
-        previouslyPaused = media.paused;
-
-        if (!previouslyPaused) {
-          media.pause();
-        }
-      } else {
-        // don't restart playback after instant level switch in case media not attached
-        previouslyPaused = true;
-      }
-
-      this.previouslyPaused = previouslyPaused;
-    }
-
-    var fragCurrent = this.fragCurrent;
-
-    if (fragCurrent && fragCurrent.loader) {
-      fragCurrent.loader.abort();
-    }
-
-    this.fragCurrent = null; // flush everything
-
-    this.flushMainBuffer(0, Number.POSITIVE_INFINITY);
-  }
-  /**
-   * on immediate level switch end, after new fragment has been buffered:
-   * - nudge video decoder by slightly adjusting video currentTime (if currentTime buffered)
-   * - resume the playback if needed
-   */
-  ;
-
-  _proto.immediateLevelSwitchEnd = function immediateLevelSwitchEnd() {
-    var media = this.media;
-
-    if (media && buffer_helper_BufferHelper.getBuffered(media).length) {
-      this.immediateSwitch = false;
-
-      if (media.currentTime > 0 && buffer_helper_BufferHelper.isBuffered(media, media.currentTime)) {
-        // only nudge if currentTime is buffered
-        media.currentTime -= 0.0001;
-      }
-
-      if (!this.previouslyPaused) {
-        media.play();
-      }
-    }
-  }
-  /**
-   * try to switch ASAP without breaking video playback:
-   * in order to ensure smooth but quick level switching,
-   * we need to find the next flushable buffer range
-   * we should take into account new segment fetch time
-   */
-  ;
-
-  _proto.nextLevelSwitch = function nextLevelSwitch() {
-    var media = this.media; // ensure that media is defined and that metadata are available (to retrieve currentTime)
-
-    if (media && media.readyState) {
-      var fetchdelay;
-      var fragPlayingCurrent = this.getBufferedFrag(media.currentTime);
-
-      if (fragPlayingCurrent && fragPlayingCurrent.startPTS > 1) {
-        // flush buffer preceding current fragment (flush until current fragment start offset)
-        // minus 1s to avoid video freezing, that could happen if we flush keyframe of current video ...
-        this.flushMainBuffer(0, fragPlayingCurrent.startPTS - 1);
-      }
-
-      if (!media.paused) {
-        // add a safety delay of 1s
-        var nextLevelId = this.hls.nextLoadLevel,
-            nextLevel = this.levels[nextLevelId],
-            fragLastKbps = this.fragLastKbps;
-
-        if (fragLastKbps && this.fragCurrent) {
-          fetchdelay = this.fragCurrent.duration * nextLevel.bitrate / (1000 * fragLastKbps) + 1;
-        } else {
-          fetchdelay = 0;
-        }
-      } else {
-        fetchdelay = 0;
-      } // logger.log('fetchdelay:'+fetchdelay);
-      // find buffer range that will be reached once new fragment will be fetched
-
-
-      var bufferedFrag = this.getBufferedFrag(media.currentTime + fetchdelay);
-
-      if (bufferedFrag) {
-        // we can flush buffer range following this one without stalling playback
-        var nextBufferedFrag = this.followingBufferedFrag(bufferedFrag);
-
-        if (nextBufferedFrag) {
-          // if we are here, we can also cancel any loading/demuxing in progress, as they are useless
-          var fragCurrent = this.fragCurrent;
-
-          if (fragCurrent && fragCurrent.loader) {
-            fragCurrent.loader.abort();
-          }
-
-          this.fragCurrent = null; // start flush position is the start PTS of next buffered frag.
-          // we use frag.naxStartPTS which is max(audio startPTS, video startPTS).
-          // in case there is a small PTS Delta between audio and video, using maxStartPTS avoids flushing last samples from current fragment
-
-          var startPts = Math.max(bufferedFrag.endPTS, nextBufferedFrag.maxStartPTS + Math.min(this.config.maxFragLookUpTolerance, nextBufferedFrag.duration));
-          this.flushMainBuffer(startPts, Number.POSITIVE_INFINITY);
-        }
-      }
-    }
-  };
-
-  _proto.flushMainBuffer = function flushMainBuffer(startOffset, endOffset) {
-    this.state = State.BUFFER_FLUSHING;
-    var flushScope = {
-      startOffset: startOffset,
-      endOffset: endOffset
-    }; // if alternate audio tracks are used, only flush video, otherwise flush everything
-
-    if (this.altAudio) {
-      flushScope.type = 'video';
-    }
-
-    this.hls.trigger(events["default"].BUFFER_FLUSHING, flushScope);
-  };
-
-  _proto.onMediaAttached = function onMediaAttached(data) {
-    var media = this.media = this.mediaBuffer = data.media;
-    this.onvseeking = this.onMediaSeeking.bind(this);
-    this.onvseeked = this.onMediaSeeked.bind(this);
-    this.onvended = this.onMediaEnded.bind(this);
-    media.addEventListener('seeking', this.onvseeking);
-    media.addEventListener('seeked', this.onvseeked);
-    media.addEventListener('ended', this.onvended);
-    var config = this.config;
-
-    if (this.levels && config.autoStartLoad) {
-      this.hls.startLoad(config.startPosition);
-    }
-
-    this.gapController = new gap_controller_GapController(config, media, this.fragmentTracker, this.hls);
-  };
-
-  _proto.onMediaDetaching = function onMediaDetaching() {
-    var media = this.media;
-
-    if (media && media.ended) {
-      logger["logger"].log('MSE detaching and video ended, reset startPosition');
-      this.startPosition = this.lastCurrentTime = 0;
-    } // reset fragment backtracked flag
-
-
-    var levels = this.levels;
-
-    if (levels) {
-      levels.forEach(function (level) {
-        if (level.details) {
-          level.details.fragments.forEach(function (fragment) {
-            fragment.backtracked = undefined;
-          });
-        }
-      });
-    } // remove video listeners
-
-
-    if (media) {
-      media.removeEventListener('seeking', this.onvseeking);
-      media.removeEventListener('seeked', this.onvseeked);
-      media.removeEventListener('ended', this.onvended);
-      this.onvseeking = this.onvseeked = this.onvended = null;
-    }
-
-    this.fragmentTracker.removeAllFragments();
-    this.media = this.mediaBuffer = null;
-    this.loadedmetadata = false;
-    this.stopLoad();
-  };
-
-  _proto.onMediaSeeked = function onMediaSeeked() {
-    var media = this.media;
-    var currentTime = media ? media.currentTime : undefined;
-
-    if (Object(number["isFiniteNumber"])(currentTime)) {
-      logger["logger"].log("media seeked to " + currentTime.toFixed(3));
-    } // tick to speed up FRAGMENT_PLAYING triggering
-
-
-    this.tick();
-  };
-
-  _proto.onManifestLoading = function onManifestLoading() {
-    // reset buffer on manifest loading
-    logger["logger"].log('trigger BUFFER_RESET');
-    this.hls.trigger(events["default"].BUFFER_RESET);
-    this.fragmentTracker.removeAllFragments();
-    this.stalled = false;
-    this.startPosition = this.lastCurrentTime = 0;
-  };
-
-  _proto.onManifestParsed = function onManifestParsed(data) {
-    var aac = false,
-        heaac = false,
-        codec;
-    data.levels.forEach(function (level) {
-      // detect if we have different kind of audio codecs used amongst playlists
-      codec = level.audioCodec;
-
-      if (codec) {
-        if (codec.indexOf('mp4a.40.2') !== -1) {
-          aac = true;
-        }
-
-        if (codec.indexOf('mp4a.40.5') !== -1) {
-          heaac = true;
-        }
-      }
-    });
-    this.audioCodecSwitch = aac && heaac;
-
-    if (this.audioCodecSwitch) {
-      logger["logger"].log('both AAC/HE-AAC audio found in levels; declaring level codec as HE-AAC');
-    }
-
-    this.altAudio = data.altAudio;
-    this.levels = data.levels;
-    this.startFragRequested = false;
-    var config = this.config;
-
-    if (config.autoStartLoad || this.forceStartLoad) {
-      this.hls.startLoad(config.startPosition);
-    }
-  };
-
-  _proto.onLevelLoaded = function onLevelLoaded(data) {
-    var newDetails = data.details;
-    var newLevelId = data.level;
-    var lastLevel = this.levels[this.levelLastLoaded];
-    var curLevel = this.levels[newLevelId];
-    var duration = newDetails.totalduration;
-    var sliding = 0;
-    logger["logger"].log("level " + newLevelId + " loaded [" + newDetails.startSN + "," + newDetails.endSN + "],duration:" + duration);
-
-    if (newDetails.live || curLevel.details && curLevel.details.live) {
-      var curDetails = curLevel.details;
-
-      if (curDetails && newDetails.fragments.length > 0) {
-        // we already have details for that level, merge them
-        mergeDetails(curDetails, newDetails);
-        sliding = newDetails.fragments[0].start;
-        this.liveSyncPosition = this.computeLivePosition(sliding, curDetails);
-
-        if (newDetails.PTSKnown && Object(number["isFiniteNumber"])(sliding)) {
-          logger["logger"].log("live playlist sliding:" + sliding.toFixed(3));
-        } else if (!sliding) {
-          logger["logger"].log('live playlist - outdated PTS, unknown sliding');
-          alignStream(this.fragPrevious, lastLevel, newDetails);
-        }
-      } else {
-        logger["logger"].log('live playlist - first load, unknown sliding');
-        newDetails.PTSKnown = false;
-        alignStream(this.fragPrevious, lastLevel, newDetails);
-      }
-    } else {
-      newDetails.PTSKnown = false;
-    } // override level info
-
-
-    curLevel.details = newDetails;
-    this.levelLastLoaded = newLevelId;
-    this.hls.trigger(events["default"].LEVEL_UPDATED, {
-      details: newDetails,
-      level: newLevelId
-    });
-
-    if (this.startFragRequested === false) {
-      // compute start position if set to -1. use it straight away if value is defined
-      if (this.startPosition === -1 || this.lastCurrentTime === -1) {
-        // first, check if start time offset has been set in playlist, if yes, use this value
-        var startTimeOffset = newDetails.startTimeOffset;
-
-        if (Object(number["isFiniteNumber"])(startTimeOffset)) {
-          if (startTimeOffset < 0) {
-            logger["logger"].log("negative start time offset " + startTimeOffset + ", count from end of last fragment");
-            startTimeOffset = sliding + duration + startTimeOffset;
-          }
-
-          logger["logger"].log("start time offset found in playlist, adjust startPosition to " + startTimeOffset);
-          this.startPosition = startTimeOffset;
-        } else {
-          // if live playlist, set start position to be fragment N-this.config.liveSyncDurationCount (usually 3)
-          if (newDetails.live) {
-            this.startPosition = this.computeLivePosition(sliding, newDetails);
-            logger["logger"].log("configure startPosition to " + this.startPosition);
-          } else {
-            this.startPosition = 0;
-          }
-        }
-
-        this.lastCurrentTime = this.startPosition;
-      }
-
-      this.nextLoadPosition = this.startPosition;
-    } // only switch back to IDLE state if we were waiting for level to start downloading a new fragment
-
-
-    if (this.state === State.WAITING_LEVEL) {
-      this.state = State.IDLE;
-    } // trigger handler right now
-
-
-    this.tick();
-  };
-
-  _proto.onKeyLoaded = function onKeyLoaded() {
-    if (this.state === State.KEY_LOADING) {
-      this.state = State.IDLE;
-      this.tick();
-    }
-  };
-
-  _proto.onFragLoaded = function onFragLoaded(data) {
-    var fragCurrent = this.fragCurrent,
-        hls = this.hls,
-        levels = this.levels,
-        media = this.media;
-    var fragLoaded = data.frag;
-
-    if (this.state === State.FRAG_LOADING && fragCurrent && fragLoaded.type === 'main' && fragLoaded.level === fragCurrent.level && fragLoaded.sn === fragCurrent.sn) {
-      var stats = data.stats;
-      var currentLevel = levels[fragCurrent.level];
-      var details = currentLevel.details; // reset frag bitrate test in any case after frag loaded event
-      // if this frag was loaded to perform a bitrate test AND if hls.nextLoadLevel is greater than 0
-      // then this means that we should be able to load a fragment at a higher quality level
-
-      this.bitrateTest = false;
-      this.stats = stats;
-      logger["logger"].log("Loaded " + fragCurrent.sn + " of [" + details.startSN + " ," + details.endSN + "],level " + fragCurrent.level);
-
-      if (fragLoaded.bitrateTest && hls.nextLoadLevel) {
-        // switch back to IDLE state ... we just loaded a fragment to determine adequate start bitrate and initialize autoswitch algo
-        this.state = State.IDLE;
-        this.startFragRequested = false;
-        stats.tparsed = stats.tbuffered = window.performance.now();
-        hls.trigger(events["default"].FRAG_BUFFERED, {
-          stats: stats,
-          frag: fragCurrent,
-          id: 'main'
-        });
-        this.tick();
-      } else if (fragLoaded.sn === 'initSegment') {
-        this.state = State.IDLE;
-        stats.tparsed = stats.tbuffered = window.performance.now();
-        details.initSegment.data = data.payload;
-        hls.trigger(events["default"].FRAG_BUFFERED, {
-          stats: stats,
-          frag: fragCurrent,
-          id: 'main'
-        });
-        this.tick();
-      } else {
-        logger["logger"].log("Parsing " + fragCurrent.sn + " of [" + details.startSN + " ," + details.endSN + "],level " + fragCurrent.level + ", cc " + fragCurrent.cc);
-        this.state = State.PARSING;
-        this.pendingBuffering = true;
-        this.appended = false; // Bitrate test frags are not usually buffered so the fragment tracker ignores them. If Hls.js decides to buffer
-        // it (and therefore ends up at this line), then the fragment tracker needs to be manually informed.
-
-        if (fragLoaded.bitrateTest) {
-          fragLoaded.bitrateTest = false;
-          this.fragmentTracker.onFragLoaded({
-            frag: fragLoaded
-          });
-        } // time Offset is accurate if level PTS is known, or if playlist is not sliding (not live) and if media is not seeking (this is to overcome potential timestamp drifts between playlists and fragments)
-
-
-        var accurateTimeOffset = !(media && media.seeking) && (details.PTSKnown || !details.live);
-        var initSegmentData = details.initSegment ? details.initSegment.data : [];
-
-        var audioCodec = this._getAudioCodec(currentLevel); // transmux the MPEG-TS data to ISO-BMFF segments
-
-
-        var demuxer = this.demuxer = this.demuxer || new demux_demuxer(this.hls, 'main');
-        demuxer.push(data.payload, initSegmentData, audioCodec, currentLevel.videoCodec, fragCurrent, details.totalduration, accurateTimeOffset);
-      }
-    }
-
-    this.fragLoadError = 0;
-  };
-
-  _proto.onFragParsingInitSegment = function onFragParsingInitSegment(data) {
-    var fragCurrent = this.fragCurrent;
-    var fragNew = data.frag;
-
-    if (fragCurrent && data.id === 'main' && fragNew.sn === fragCurrent.sn && fragNew.level === fragCurrent.level && this.state === State.PARSING) {
-      var tracks = data.tracks,
-          trackName,
-          track;
-      this.audioOnly = tracks.audio && !tracks.video; // if audio track is expected to come from audio stream controller, discard any coming from main
-
-      if (this.altAudio && !this.audioOnly) {
-        delete tracks.audio;
-      } // include levelCodec in audio and video tracks
-
-
-      track = tracks.audio;
-
-      if (track) {
-        var audioCodec = this.levels[this.level].audioCodec,
-            ua = navigator.userAgent.toLowerCase();
-
-        if (audioCodec && this.audioCodecSwap) {
-          logger["logger"].log('swapping playlist audio codec');
-
-          if (audioCodec.indexOf('mp4a.40.5') !== -1) {
-            audioCodec = 'mp4a.40.2';
-          } else {
-            audioCodec = 'mp4a.40.5';
-          }
-        } // in case AAC and HE-AAC audio codecs are signalled in manifest
-        // force HE-AAC , as it seems that most browsers prefers that way,
-        // except for mono streams OR on FF
-        // these conditions might need to be reviewed ...
-
-
-        if (this.audioCodecSwitch) {
-          // don't force HE-AAC if mono stream
-          if (track.metadata.channelCount !== 1 && // don't force HE-AAC if firefox
-          ua.indexOf('firefox') === -1) {
-            audioCodec = 'mp4a.40.5';
-          }
-        } // HE-AAC is broken on Android, always signal audio codec as AAC even if variant manifest states otherwise
-
-
-        if (ua.indexOf('android') !== -1 && track.container !== 'audio/mpeg') {
-          // Exclude mpeg audio
-          audioCodec = 'mp4a.40.2';
-          logger["logger"].log("Android: force audio codec to " + audioCodec);
-        }
-
-        track.levelCodec = audioCodec;
-        track.id = data.id;
-      }
-
-      track = tracks.video;
-
-      if (track) {
-        track.levelCodec = this.levels[this.level].videoCodec;
-        track.id = data.id;
-      }
-
-      this.hls.trigger(events["default"].BUFFER_CODECS, tracks); // loop through tracks that are going to be provided to bufferController
-
-      for (trackName in tracks) {
-        track = tracks[trackName];
-        logger["logger"].log("main track:" + trackName + ",container:" + track.container + ",codecs[level/parsed]=[" + track.levelCodec + "/" + track.codec + "]");
-        var initSegment = track.initSegment;
-
-        if (initSegment) {
-          this.appended = true; // arm pending Buffering flag before appending a segment
-
-          this.pendingBuffering = true;
-          this.hls.trigger(events["default"].BUFFER_APPENDING, {
-            type: trackName,
-            data: initSegment,
-            parent: 'main',
-            content: 'initSegment'
-          });
-        }
-      } // trigger handler right now
-
-
-      this.tick();
-    }
-  };
-
-  _proto.onFragParsingData = function onFragParsingData(data) {
-    var _this2 = this;
-
-    var fragCurrent = this.fragCurrent;
-    var fragNew = data.frag;
-
-    if (fragCurrent && data.id === 'main' && fragNew.sn === fragCurrent.sn && fragNew.level === fragCurrent.level && !(data.type === 'audio' && this.altAudio) && // filter out main audio if audio track is loaded through audio stream controller
-    this.state === State.PARSING) {
-      var level = this.levels[this.level],
-          frag = fragCurrent;
-
-      if (!Object(number["isFiniteNumber"])(data.endPTS)) {
-        data.endPTS = data.startPTS + fragCurrent.duration;
-        data.endDTS = data.startDTS + fragCurrent.duration;
-      }
-
-      if (data.hasAudio === true) {
-        frag.addElementaryStream(ElementaryStreamTypes.AUDIO);
-      }
-
-      if (data.hasVideo === true) {
-        frag.addElementaryStream(ElementaryStreamTypes.VIDEO);
-      }
-
-      logger["logger"].log("Parsed " + data.type + ",PTS:[" + data.startPTS.toFixed(3) + "," + data.endPTS.toFixed(3) + "],DTS:[" + data.startDTS.toFixed(3) + "/" + data.endDTS.toFixed(3) + "],nb:" + data.nb + ",dropped:" + (data.dropped || 0)); // Detect gaps in a fragment  and try to fix it by finding a keyframe in the previous fragment (see _findFragments)
-
-      if (data.type === 'video') {
-        frag.dropped = data.dropped;
-
-        if (frag.dropped) {
-          if (!frag.backtracked) {
-            var levelDetails = level.details;
-
-            if (levelDetails && frag.sn === levelDetails.startSN) {
-              logger["logger"].warn('missing video frame(s) on first frag, appending with gap', frag.sn);
-            } else {
-              logger["logger"].warn('missing video frame(s), backtracking fragment', frag.sn); // Return back to the IDLE state without appending to buffer
-              // Causes findFragments to backtrack a segment and find the keyframe
-              // Audio fragments arriving before video sets the nextLoadPosition, causing _findFragments to skip the backtracked fragment
-
-              this.fragmentTracker.removeFragment(frag);
-              frag.backtracked = true;
-              this.nextLoadPosition = data.startPTS;
-              this.state = State.IDLE;
-              this.fragPrevious = frag;
-
-              if (this.demuxer) {
-                this.demuxer.destroy();
-                this.demuxer = null;
-              }
-
-              this.tick();
-              return;
-            }
-          } else {
-            logger["logger"].warn('Already backtracked on this fragment, appending with the gap', frag.sn);
-          }
-        } else {
-          // Only reset the backtracked flag if we've loaded the frag without any dropped frames
-          frag.backtracked = false;
-        }
-      }
-
-      var drift = updateFragPTSDTS(level.details, frag, data.startPTS, data.endPTS, data.startDTS, data.endDTS),
-          hls = this.hls;
-      hls.trigger(events["default"].LEVEL_PTS_UPDATED, {
-        details: level.details,
-        level: this.level,
-        drift: drift,
-        type: data.type,
-        start: data.startPTS,
-        end: data.endPTS
-      }); // has remuxer dropped video frames located before first keyframe ?
-
-      [data.data1, data.data2].forEach(function (buffer) {
-        // only append in PARSING state (rationale is that an appending error could happen synchronously on first segment appending)
-        // in that case it is useless to append following segments
-        if (buffer && buffer.length && _this2.state === State.PARSING) {
-          _this2.appended = true; // arm pending Buffering flag before appending a segment
-
-          _this2.pendingBuffering = true;
-          hls.trigger(events["default"].BUFFER_APPENDING, {
-            type: data.type,
-            data: buffer,
-            parent: 'main',
-            content: 'data'
-          });
-        }
-      }); // trigger handler right now
-
-      this.tick();
-    }
-  };
-
-  _proto.onFragParsed = function onFragParsed(data) {
-    var fragCurrent = this.fragCurrent;
-    var fragNew = data.frag;
-
-    if (fragCurrent && data.id === 'main' && fragNew.sn === fragCurrent.sn && fragNew.level === fragCurrent.level && this.state === State.PARSING) {
-      this.stats.tparsed = window.performance.now();
-      this.state = State.PARSED;
-
-      this._checkAppendedParsed();
-    }
-  };
-
-  _proto.onAudioTrackSwitching = function onAudioTrackSwitching(data) {
-    // if any URL found on new audio track, it is an alternate audio track
-    var fromAltAudio = this.altAudio;
-    var altAudio = !!data.url;
-    var trackId = data.id; // if we switch on main audio, ensure that main fragment scheduling is synced with media.buffered
-    // don't do anything if we switch to alt audio: audio stream controller is handling it.
-    // we will just have to change buffer scheduling on audioTrackSwitched
-
-    if (!altAudio) {
-      if (this.mediaBuffer !== this.media) {
-        logger["logger"].log('switching on main audio, use media.buffered to schedule main fragment loading');
-        this.mediaBuffer = this.media;
-        var fragCurrent = this.fragCurrent; // we need to refill audio buffer from main: cancel any frag loading to speed up audio switch
-
-        if (fragCurrent.loader) {
-          logger["logger"].log('switching to main audio track, cancel main fragment load');
-          fragCurrent.loader.abort();
-        }
-
-        this.fragCurrent = null;
-        this.fragPrevious = null; // destroy demuxer to force init segment generation (following audio switch)
-
-        if (this.demuxer) {
-          this.demuxer.destroy();
-          this.demuxer = null;
-        } // switch to IDLE state to load new fragment
-
-
-        this.state = State.IDLE;
-      }
-
-      var hls = this.hls; // If switching from alt to main audio, flush all audio and trigger track switched
-
-      if (fromAltAudio) {
-        hls.trigger(events["default"].BUFFER_FLUSHING, {
-          startOffset: 0,
-          endOffset: Number.POSITIVE_INFINITY,
-          type: 'audio'
-        });
-      }
-
-      hls.trigger(events["default"].AUDIO_TRACK_SWITCHED, {
-        id: trackId
-      });
-    }
-  };
-
-  _proto.onAudioTrackSwitched = function onAudioTrackSwitched(data) {
-    var trackId = data.id,
-        altAudio = !!this.hls.audioTracks[trackId].url;
-
-    if (altAudio) {
-      var videoBuffer = this.videoBuffer; // if we switched on alternate audio, ensure that main fragment scheduling is synced with video sourcebuffer buffered
-
-      if (videoBuffer && this.mediaBuffer !== videoBuffer) {
-        logger["logger"].log('switching on alternate audio, use video.buffered to schedule main fragment loading');
-        this.mediaBuffer = videoBuffer;
-      }
-    }
-
-    this.altAudio = altAudio;
-    this.tick();
-  };
-
-  _proto.onBufferCreated = function onBufferCreated(data) {
-    var tracks = data.tracks,
-        mediaTrack,
-        name,
-        alternate = false;
-
-    for (var type in tracks) {
-      var track = tracks[type];
-
-      if (track.id === 'main') {
-        name = type;
-        mediaTrack = track; // keep video source buffer reference
-
-        if (type === 'video') {
-          this.videoBuffer = tracks[type].buffer;
-        }
-      } else {
-        alternate = true;
-      }
-    }
-
-    if (alternate && mediaTrack) {
-      logger["logger"].log("alternate track found, use " + name + ".buffered to schedule main fragment loading");
-      this.mediaBuffer = mediaTrack.buffer;
-    } else {
-      this.mediaBuffer = this.media;
-    }
-  };
-
-  _proto.onBufferAppended = function onBufferAppended(data) {
-    if (data.parent === 'main') {
-      var state = this.state;
-
-      if (state === State.PARSING || state === State.PARSED) {
-        // check if all buffers have been appended
-        this.pendingBuffering = data.pending > 0;
-
-        this._checkAppendedParsed();
-      }
-    }
-  };
-
-  _proto._checkAppendedParsed = function _checkAppendedParsed() {
-    // trigger handler right now
-    if (this.state === State.PARSED && (!this.appended || !this.pendingBuffering)) {
-      var frag = this.fragCurrent;
-
-      if (frag) {
-        var media = this.mediaBuffer ? this.mediaBuffer : this.media;
-        logger["logger"].log("main buffered : " + time_ranges.toString(buffer_helper_BufferHelper.getBuffered(media)));
-        this.fragPrevious = frag;
-        var stats = this.stats;
-        stats.tbuffered = window.performance.now(); // we should get rid of this.fragLastKbps
-
-        this.fragLastKbps = Math.round(8 * stats.total / (stats.tbuffered - stats.tfirst));
-        this.hls.trigger(events["default"].FRAG_BUFFERED, {
-          stats: stats,
-          frag: frag,
-          id: 'main'
-        });
-        this.state = State.IDLE;
-      } // Do not tick when _seekToStartPos needs to be called as seeking to the start can fail on live streams at this point
-
-
-      if (this.loadedmetadata || this.startPosition <= 0) {
-        this.tick();
-      }
-    }
-  };
-
-  _proto.onError = function onError(data) {
-    var frag = data.frag || this.fragCurrent; // don't handle frag error not related to main fragment
-
-    if (frag && frag.type !== 'main') {
-      return;
-    } // 0.5 : tolerance needed as some browsers stalls playback before reaching buffered end
-
-
-    var mediaBuffered = !!this.media && buffer_helper_BufferHelper.isBuffered(this.media, this.media.currentTime) && buffer_helper_BufferHelper.isBuffered(this.media, this.media.currentTime + 0.5);
-
-    switch (data.details) {
-      case errors["ErrorDetails"].FRAG_LOAD_ERROR:
-      case errors["ErrorDetails"].FRAG_LOAD_TIMEOUT:
-      case errors["ErrorDetails"].KEY_LOAD_ERROR:
-      case errors["ErrorDetails"].KEY_LOAD_TIMEOUT:
-        if (!data.fatal) {
-          // keep retrying until the limit will be reached
-          if (this.fragLoadError + 1 <= this.config.fragLoadingMaxRetry) {
-            // exponential backoff capped to config.fragLoadingMaxRetryTimeout
-            var delay = Math.min(Math.pow(2, this.fragLoadError) * this.config.fragLoadingRetryDelay, this.config.fragLoadingMaxRetryTimeout);
-            logger["logger"].warn("mediaController: frag loading failed, retry in " + delay + " ms");
-            this.retryDate = window.performance.now() + delay; // retry loading state
-            // if loadedmetadata is not set, it means that we are emergency switch down on first frag
-            // in that case, reset startFragRequested flag
-
-            if (!this.loadedmetadata) {
-              this.startFragRequested = false;
-              this.nextLoadPosition = this.startPosition;
-            }
-
-            this.fragLoadError++;
-            this.state = State.FRAG_LOADING_WAITING_RETRY;
-          } else {
-            logger["logger"].error("mediaController: " + data.details + " reaches max retry, redispatch as fatal ..."); // switch error to fatal
-
-            data.fatal = true;
-            this.state = State.ERROR;
-          }
-        }
-
-        break;
-
-      case errors["ErrorDetails"].LEVEL_LOAD_ERROR:
-      case errors["ErrorDetails"].LEVEL_LOAD_TIMEOUT:
-        if (this.state !== State.ERROR) {
-          if (data.fatal) {
-            // if fatal error, stop processing
-            this.state = State.ERROR;
-            logger["logger"].warn("streamController: " + data.details + ",switch to " + this.state + " state ...");
-          } else {
-            // in case of non fatal error while loading level, if level controller is not retrying to load level , switch back to IDLE
-            if (!data.levelRetry && this.state === State.WAITING_LEVEL) {
-              this.state = State.IDLE;
-            }
-          }
-        }
-
-        break;
-
-      case errors["ErrorDetails"].BUFFER_FULL_ERROR:
-        // if in appending state
-        if (data.parent === 'main' && (this.state === State.PARSING || this.state === State.PARSED)) {
-          // reduce max buf len if current position is buffered
-          if (mediaBuffered) {
-            this._reduceMaxBufferLength(this.config.maxBufferLength);
-
-            this.state = State.IDLE;
-          } else {
-            // current position is not buffered, but browser is still complaining about buffer full error
-            // this happens on IE/Edge, refer to https://github.com/video-dev/hls.js/pull/708
-            // in that case flush the whole buffer to recover
-            logger["logger"].warn('buffer full error also media.currentTime is not buffered, flush everything');
-            this.fragCurrent = null; // flush everything
-
-            this.flushMainBuffer(0, Number.POSITIVE_INFINITY);
-          }
-        }
-
-        break;
-
-      default:
-        break;
-    }
-  };
-
-  _proto._reduceMaxBufferLength = function _reduceMaxBufferLength(minLength) {
-    var config = this.config;
-
-    if (config.maxMaxBufferLength >= minLength) {
-      // reduce max buffer length as it might be too high. we do this to avoid loop flushing ...
-      config.maxMaxBufferLength /= 2;
-      logger["logger"].warn("main:reduce max buffer length to " + config.maxMaxBufferLength + "s");
-      return true;
-    }
-
-    return false;
-  }
-  /**
-   * Checks the health of the buffer and attempts to resolve playback stalls.
-   * @private
-   */
-  ;
-
-  _proto._checkBuffer = function _checkBuffer() {
-    var media = this.media;
-
-    if (!media || media.readyState === 0) {
-      // Exit early if we don't have media or if the media hasn't buffered anything yet (readyState 0)
-      return;
-    }
-
-    var mediaBuffer = this.mediaBuffer ? this.mediaBuffer : media;
-    var buffered = buffer_helper_BufferHelper.getBuffered(mediaBuffer);
-
-    if (!this.loadedmetadata && buffered.length) {
-      this.loadedmetadata = true;
-
-      this._seekToStartPos();
-    } else if (this.immediateSwitch) {
-      this.immediateLevelSwitchEnd();
-    } else {
-      this.gapController.poll(this.lastCurrentTime, buffered);
-    }
-  };
-
-  _proto.onFragLoadEmergencyAborted = function onFragLoadEmergencyAborted() {
-    this.state = State.IDLE; // if loadedmetadata is not set, it means that we are emergency switch down on first frag
-    // in that case, reset startFragRequested flag
-
-    if (!this.loadedmetadata) {
-      this.startFragRequested = false;
-      this.nextLoadPosition = this.startPosition;
-    }
-
-    this.tick();
-  };
-
-  _proto.onBufferFlushed = function onBufferFlushed() {
-    /* after successful buffer flushing, filter flushed fragments from bufferedFrags
-      use mediaBuffered instead of media (so that we will check against video.buffered ranges in case of alt audio track)
-    */
-    var media = this.mediaBuffer ? this.mediaBuffer : this.media;
-
-    if (media) {
-      // filter fragments potentially evicted from buffer. this is to avoid memleak on live streams
-      var elementaryStreamType = this.audioOnly ? ElementaryStreamTypes.AUDIO : ElementaryStreamTypes.VIDEO;
-      this.fragmentTracker.detectEvictedFragments(elementaryStreamType, buffer_helper_BufferHelper.getBuffered(media));
-    } // reset reference to frag
-
-
-    this.fragPrevious = null; // move to IDLE once flush complete. this should trigger new fragment loading
-
-    this.state = State.IDLE;
-  };
-
-  _proto.onLevelsUpdated = function onLevelsUpdated(data) {
-    this.levels = data.levels;
-  };
-
-  _proto.swapAudioCodec = function swapAudioCodec() {
-    this.audioCodecSwap = !this.audioCodecSwap;
-  }
-  /**
-   * Seeks to the set startPosition if not equal to the mediaElement's current time.
-   * @private
-   */
-  ;
-
-  _proto._seekToStartPos = function _seekToStartPos() {
-    var media = this.media;
-    var currentTime = media.currentTime;
-    var startPosition = this.startPosition; // only adjust currentTime if different from startPosition or if startPosition not buffered
-    // at that stage, there should be only one buffered range, as we reach that code after first fragment has been buffered
-
-    if (currentTime !== startPosition && startPosition >= 0) {
-      if (media.seeking) {
-        logger["logger"].log("could not seek to " + startPosition + ", already seeking at " + currentTime);
-        return;
-      }
-
-      var buffered = buffer_helper_BufferHelper.getBuffered(media);
-      var bufferStart = buffered.length ? buffered.start(0) : 0;
-      var delta = bufferStart - startPosition;
-
-      if (delta > 0 && delta < this.config.maxBufferHole) {
-        logger["logger"].log("adjusting start position by " + delta + " to match buffer start");
-        startPosition += delta;
-        this.startPosition = startPosition;
-      }
-
-      logger["logger"].log("seek to target start position " + startPosition + " from current time " + currentTime + ". ready state " + media.readyState);
-      media.currentTime = startPosition;
-    }
-  };
-
-  _proto._getAudioCodec = function _getAudioCodec(currentLevel) {
-    var audioCodec = this.config.defaultAudioCodec || currentLevel.audioCodec;
-
-    if (this.audioCodecSwap) {
-      logger["logger"].log('swapping playlist audio codec');
-
-      if (audioCodec) {
-        if (audioCodec.indexOf('mp4a.40.5') !== -1) {
-          audioCodec = 'mp4a.40.2';
-        } else {
-          audioCodec = 'mp4a.40.5';
-        }
-      }
-    }
-
-    return audioCodec;
-  };
-
-  stream_controller_createClass(StreamController, [{
-    key: "state",
-    set: function set(nextState) {
-      if (this.state !== nextState) {
-        var previousState = this.state;
-        this._state = nextState;
-        logger["logger"].log("main stream-controller: " + previousState + "->" + nextState);
-        this.hls.trigger(events["default"].STREAM_STATE_TRANSITION, {
-          previousState: previousState,
-          nextState: nextState
-        });
-      }
-    },
-    get: function get() {
-      return this._state;
-    }
-  }, {
-    key: "currentLevel",
-    get: function get() {
-      var media = this.media;
-
-      if (media) {
-        var frag = this.getBufferedFrag(media.currentTime);
-
-        if (frag) {
-          return frag.level;
-        }
-      }
-
-      return -1;
-    }
-  }, {
-    key: "nextBufferedFrag",
-    get: function get() {
-      var media = this.media;
-
-      if (media) {
-        // first get end range of current fragment
-        return this.followingBufferedFrag(this.getBufferedFrag(media.currentTime));
-      } else {
-        return null;
-      }
-    }
-  }, {
-    key: "nextLevel",
-    get: function get() {
-      var frag = this.nextBufferedFrag;
-
-      if (frag) {
-        return frag.level;
-      } else {
-        return -1;
-      }
-    }
-  }, {
-    key: "liveSyncPosition",
-    get: function get() {
-      return this._liveSyncPosition;
-    },
-    set: function set(value) {
-      this._liveSyncPosition = value;
-    }
-  }]);
-
-  return StreamController;
-}(base_stream_controller_BaseStreamController);
-
-/* harmony default export */ var stream_controller = (stream_controller_StreamController);
-// CONCATENATED MODULE: ./src/controller/level-controller.js
-function level_controller_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
-
-function level_controller_createClass(Constructor, protoProps, staticProps) { if (protoProps) level_controller_defineProperties(Constructor.prototype, protoProps); if (staticProps) level_controller_defineProperties(Constructor, staticProps); return Constructor; }
-
-function level_controller_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
-
-/*
- * Level Controller
-*/
-
-
-
-
-
-
-var chromeOrFirefox;
-
-var level_controller_LevelController = /*#__PURE__*/function (_EventHandler) {
-  level_controller_inheritsLoose(LevelController, _EventHandler);
-
-  function LevelController(hls) {
-    var _this;
-
-    _this = _EventHandler.call(this, hls, events["default"].MANIFEST_LOADED, events["default"].LEVEL_LOADED, events["default"].AUDIO_TRACK_SWITCHED, events["default"].FRAG_LOADED, events["default"].ERROR) || this;
-    _this.canload = false;
-    _this.currentLevelIndex = null;
-    _this.manualLevelIndex = -1;
-    _this.timer = null;
-    chromeOrFirefox = /chrome|firefox/.test(navigator.userAgent.toLowerCase());
-    return _this;
-  }
-
-  var _proto = LevelController.prototype;
-
-  _proto.onHandlerDestroying = function onHandlerDestroying() {
-    this.clearTimer();
-    this.manualLevelIndex = -1;
-  };
-
-  _proto.clearTimer = function clearTimer() {
-    if (this.timer !== null) {
-      clearTimeout(this.timer);
-      this.timer = null;
-    }
-  };
-
-  _proto.startLoad = function startLoad() {
-    var levels = this._levels;
-    this.canload = true;
-    this.levelRetryCount = 0; // clean up live level details to force reload them, and reset load errors
-
-    if (levels) {
-      levels.forEach(function (level) {
-        level.loadError = 0;
-      });
-    } // speed up live playlist refresh if timer exists
-
-
-    if (this.timer !== null) {
-      this.loadLevel();
-    }
-  };
-
-  _proto.stopLoad = function stopLoad() {
-    this.canload = false;
-  };
-
-  _proto.onManifestLoaded = function onManifestLoaded(data) {
-    var levels = [];
-    var audioTracks = [];
-    var bitrateStart;
-    var levelSet = {};
-    var levelFromSet = null;
-    var videoCodecFound = false;
-    var audioCodecFound = false; // regroup redundant levels together
-
-    data.levels.forEach(function (level) {
-      var attributes = level.attrs;
-      level.loadError = 0;
-      level.fragmentError = false;
-      videoCodecFound = videoCodecFound || !!level.videoCodec;
-      audioCodecFound = audioCodecFound || !!level.audioCodec; // erase audio codec info if browser does not support mp4a.40.34.
-      // demuxer will autodetect codec and fallback to mpeg/audio
-
-      if (chromeOrFirefox && level.audioCodec && level.audioCodec.indexOf('mp4a.40.34') !== -1) {
-        level.audioCodec = undefined;
-      }
-
-      levelFromSet = levelSet[level.bitrate]; // FIXME: we would also have to match the resolution here
-
-      if (!levelFromSet) {
-        level.url = [level.url];
-        level.urlId = 0;
-        levelSet[level.bitrate] = level;
-        levels.push(level);
-      } else {
-        levelFromSet.url.push(level.url);
-      }
-
-      if (attributes) {
-        if (attributes.AUDIO) {
-          addGroupId(levelFromSet || level, 'audio', attributes.AUDIO);
-        }
-
-        if (attributes.SUBTITLES) {
-          addGroupId(levelFromSet || level, 'text', attributes.SUBTITLES);
-        }
-      }
-    }); // remove audio-only level if we also have levels with audio+video codecs signalled
-
-    if (videoCodecFound && audioCodecFound) {
-      levels = levels.filter(function (_ref) {
-        var videoCodec = _ref.videoCodec;
-        return !!videoCodec;
-      });
-    } // only keep levels with supported audio/video codecs
-
-
-    levels = levels.filter(function (_ref2) {
-      var audioCodec = _ref2.audioCodec,
-          videoCodec = _ref2.videoCodec;
-      return (!audioCodec || isCodecSupportedInMp4(audioCodec, 'audio')) && (!videoCodec || isCodecSupportedInMp4(videoCodec, 'video'));
-    });
-
-    if (data.audioTracks) {
-      audioTracks = data.audioTracks.filter(function (track) {
-        return !track.audioCodec || isCodecSupportedInMp4(track.audioCodec, 'audio');
-      }); // Reassign id's after filtering since they're used as array indices
-
-      audioTracks.forEach(function (track, index) {
-        track.id = index;
-      });
-    }
-
-    if (levels.length > 0) {
-      // start bitrate is the first bitrate of the manifest
-      bitrateStart = levels[0].bitrate; // sort level on bitrate
-
-      levels.sort(function (a, b) {
-        return a.bitrate - b.bitrate;
-      });
-      this._levels = levels; // find index of first level in sorted levels
-
-      for (var i = 0; i < levels.length; i++) {
-        if (levels[i].bitrate === bitrateStart) {
-          this._firstLevel = i;
-          logger["logger"].log("manifest loaded," + levels.length + " level(s) found, first bitrate:" + bitrateStart);
-          break;
-        }
-      } // Audio is only alternate if manifest include a URI along with the audio group tag,
-      // and this is not an audio-only stream where levels contain audio-only
-
-
-      var audioOnly = audioCodecFound && !videoCodecFound;
-      this.hls.trigger(events["default"].MANIFEST_PARSED, {
-        levels: levels,
-        audioTracks: audioTracks,
-        firstLevel: this._firstLevel,
-        stats: data.stats,
-        audio: audioCodecFound,
-        video: videoCodecFound,
-        altAudio: !audioOnly && audioTracks.some(function (t) {
-          return !!t.url;
-        })
-      });
-    } else {
-      this.hls.trigger(events["default"].ERROR, {
-        type: errors["ErrorTypes"].MEDIA_ERROR,
-        details: errors["ErrorDetails"].MANIFEST_INCOMPATIBLE_CODECS_ERROR,
-        fatal: true,
-        url: this.hls.url,
-        reason: 'no level with compatible codecs found in manifest'
-      });
-    }
-  };
-
-  _proto.setLevelInternal = function setLevelInternal(newLevel) {
-    var levels = this._levels;
-    var hls = this.hls; // check if level idx is valid
-
-    if (newLevel >= 0 && newLevel < levels.length) {
-      // stopping live reloading timer if any
-      this.clearTimer();
-
-      if (this.currentLevelIndex !== newLevel) {
-        logger["logger"].log("switching to level " + newLevel);
-        this.currentLevelIndex = newLevel;
-        var levelProperties = levels[newLevel];
-        levelProperties.level = newLevel;
-        hls.trigger(events["default"].LEVEL_SWITCHING, levelProperties);
-      }
-
-      var level = levels[newLevel];
-      var levelDetails = level.details; // check if we need to load playlist for this level
-
-      if (!levelDetails || levelDetails.live) {
-        // level not retrieved yet, or live playlist we need to (re)load it
-        var urlId = level.urlId;
-        hls.trigger(events["default"].LEVEL_LOADING, {
-          url: level.url[urlId],
-          level: newLevel,
-          id: urlId
-        });
-      }
-    } else {
-      // invalid level id given, trigger error
-      hls.trigger(events["default"].ERROR, {
-        type: errors["ErrorTypes"].OTHER_ERROR,
-        details: errors["ErrorDetails"].LEVEL_SWITCH_ERROR,
-        level: newLevel,
-        fatal: false,
-        reason: 'invalid level idx'
-      });
-    }
-  };
-
-  _proto.onError = function onError(data) {
-    if (data.fatal) {
-      if (data.type === errors["ErrorTypes"].NETWORK_ERROR) {
-        this.clearTimer();
-      }
-
-      return;
-    }
-
-    var levelError = false,
-        fragmentError = false;
-    var levelIndex; // try to recover not fatal errors
-
-    switch (data.details) {
-      case errors["ErrorDetails"].FRAG_LOAD_ERROR:
-      case errors["ErrorDetails"].FRAG_LOAD_TIMEOUT:
-      case errors["ErrorDetails"].KEY_LOAD_ERROR:
-      case errors["ErrorDetails"].KEY_LOAD_TIMEOUT:
-        levelIndex = data.frag.level;
-        fragmentError = true;
-        break;
-
-      case errors["ErrorDetails"].LEVEL_LOAD_ERROR:
-      case errors["ErrorDetails"].LEVEL_LOAD_TIMEOUT:
-        levelIndex = data.context.level;
-        levelError = true;
-        break;
-
-      case errors["ErrorDetails"].REMUX_ALLOC_ERROR:
-        levelIndex = data.level;
-        levelError = true;
-        break;
-    }
-
-    if (levelIndex !== undefined) {
-      this.recoverLevel(data, levelIndex, levelError, fragmentError);
-    }
-  }
-  /**
-   * Switch to a redundant stream if any available.
-   * If redundant stream is not available, emergency switch down if ABR mode is enabled.
-   *
-   * @param {Object} errorEvent
-   * @param {Number} levelIndex current level index
-   * @param {Boolean} levelError
-   * @param {Boolean} fragmentError
-   */
-  // FIXME Find a better abstraction where fragment/level retry management is well decoupled
-  ;
-
-  _proto.recoverLevel = function recoverLevel(errorEvent, levelIndex, levelError, fragmentError) {
-    var _this2 = this;
-
-    var config = this.hls.config;
-    var errorDetails = errorEvent.details;
-    var level = this._levels[levelIndex];
-    var redundantLevels, delay, nextLevel;
-    level.loadError++;
-    level.fragmentError = fragmentError;
-
-    if (levelError) {
-      if (this.levelRetryCount + 1 <= config.levelLoadingMaxRetry) {
-        // exponential backoff capped to max retry timeout
-        delay = Math.min(Math.pow(2, this.levelRetryCount) * config.levelLoadingRetryDelay, config.levelLoadingMaxRetryTimeout); // Schedule level reload
-
-        this.timer = setTimeout(function () {
-          return _this2.loadLevel();
-        }, delay); // boolean used to inform stream controller not to switch back to IDLE on non fatal error
-
-        errorEvent.levelRetry = true;
-        this.levelRetryCount++;
-        logger["logger"].warn("level controller, " + errorDetails + ", retry in " + delay + " ms, current retry count is " + this.levelRetryCount);
-      } else {
-        logger["logger"].error("level controller, cannot recover from " + errorDetails + " error");
-        this.currentLevelIndex = null; // stopping live reloading timer if any
-
-        this.clearTimer(); // switch error to fatal
-
-        errorEvent.fatal = true;
-        return;
-      }
-    } // Try any redundant streams if available for both errors: level and fragment
-    // If level.loadError reaches redundantLevels it means that we tried them all, no hope  => let's switch down
-
-
-    if (levelError || fragmentError) {
-      redundantLevels = level.url.length;
-
-      if (redundantLevels > 1 && level.loadError < redundantLevels) {
-        level.urlId = (level.urlId + 1) % redundantLevels;
-        level.details = undefined;
-        logger["logger"].warn("level controller, " + errorDetails + " for level " + levelIndex + ": switching to redundant URL-id " + level.urlId); // console.log('Current audio track group ID:', this.hls.audioTracks[this.hls.audioTrack].groupId);
-        // console.log('New video quality level audio group id:', level.attrs.AUDIO);
-      } else {
-        // Search for available level
-        if (this.manualLevelIndex === -1) {
-          // When lowest level has been reached, let's start hunt from the top
-          nextLevel = levelIndex === 0 ? this._levels.length - 1 : levelIndex - 1;
-          logger["logger"].warn("level controller, " + errorDetails + ": switch to " + nextLevel);
-          this.hls.nextAutoLevel = this.currentLevelIndex = nextLevel;
-        } else if (fragmentError) {
-          // Allow fragment retry as long as configuration allows.
-          // reset this._level so that another call to set level() will trigger again a frag load
-          logger["logger"].warn("level controller, " + errorDetails + ": reload a fragment");
-          this.currentLevelIndex = null;
-        }
-      }
-    }
-  } // reset errors on the successful load of a fragment
-  ;
-
-  _proto.onFragLoaded = function onFragLoaded(_ref3) {
-    var frag = _ref3.frag;
-
-    if (frag !== undefined && frag.type === 'main') {
-      var level = this._levels[frag.level];
-
-      if (level !== undefined) {
-        level.fragmentError = false;
-        level.loadError = 0;
-        this.levelRetryCount = 0;
-      }
-    }
-  };
-
-  _proto.onLevelLoaded = function onLevelLoaded(data) {
-    var _this3 = this;
-
-    var level = data.level,
-        details = data.details; // only process level loaded events matching with expected level
-
-    if (level !== this.currentLevelIndex) {
-      return;
-    }
-
-    var curLevel = this._levels[level]; // reset level load error counter on successful level loaded only if there is no issues with fragments
-
-    if (!curLevel.fragmentError) {
-      curLevel.loadError = 0;
-      this.levelRetryCount = 0;
-    } // if current playlist is a live playlist, arm a timer to reload it
-
-
-    if (details.live) {
-      var reloadInterval = computeReloadInterval(curLevel.details, details, data.stats.trequest);
-      logger["logger"].log("live playlist, reload in " + Math.round(reloadInterval) + " ms");
-      this.timer = setTimeout(function () {
-        return _this3.loadLevel();
-      }, reloadInterval);
-    } else {
-      this.clearTimer();
-    }
-  };
-
-  _proto.onAudioTrackSwitched = function onAudioTrackSwitched(data) {
-    var audioGroupId = this.hls.audioTracks[data.id].groupId;
-    var currentLevel = this.hls.levels[this.currentLevelIndex];
-
-    if (!currentLevel) {
-      return;
-    }
-
-    if (currentLevel.audioGroupIds) {
-      var urlId = -1;
-
-      for (var i = 0; i < currentLevel.audioGroupIds.length; i++) {
-        if (currentLevel.audioGroupIds[i] === audioGroupId) {
-          urlId = i;
-          break;
-        }
-      }
-
-      if (urlId !== currentLevel.urlId) {
-        currentLevel.urlId = urlId;
-        this.startLoad();
-      }
-    }
-  };
-
-  _proto.loadLevel = function loadLevel() {
-    logger["logger"].debug('call to loadLevel');
-
-    if (this.currentLevelIndex !== null && this.canload) {
-      var levelObject = this._levels[this.currentLevelIndex];
-
-      if (typeof levelObject === 'object' && levelObject.url.length > 0) {
-        var level = this.currentLevelIndex;
-        var id = levelObject.urlId;
-        var url = levelObject.url[id];
-        logger["logger"].log("Attempt loading level index " + level + " with URL-id " + id); // console.log('Current audio track group ID:', this.hls.audioTracks[this.hls.audioTrack].groupId);
-        // console.log('New video quality level audio group id:', levelObject.attrs.AUDIO, level);
-
-        this.hls.trigger(events["default"].LEVEL_LOADING, {
-          url: url,
-          level: level,
-          id: id
-        });
-      }
-    }
-  };
-
-  _proto.removeLevel = function removeLevel(levelIndex, urlId) {
-    var levels = this.levels.filter(function (level, index) {
-      if (index !== levelIndex) {
-        return true;
-      }
-
-      if (level.url.length > 1 && urlId !== undefined) {
-        level.url = level.url.filter(function (url, id) {
-          return id !== urlId;
-        });
-        level.urlId = 0;
-        return true;
-      }
-
-      return false;
-    }).map(function (level, index) {
-      var details = level.details;
-
-      if (details && details.fragments) {
-        details.fragments.forEach(function (fragment) {
-          fragment.level = index;
-        });
-      }
-
-      return level;
-    });
-    this._levels = levels;
-    this.hls.trigger(events["default"].LEVELS_UPDATED, {
-      levels: levels
-    });
-  };
-
-  level_controller_createClass(LevelController, [{
-    key: "levels",
-    get: function get() {
-      return this._levels;
-    }
-  }, {
-    key: "level",
-    get: function get() {
-      return this.currentLevelIndex;
-    },
-    set: function set(newLevel) {
-      var levels = this._levels;
-
-      if (levels) {
-        newLevel = Math.min(newLevel, levels.length - 1);
-
-        if (this.currentLevelIndex !== newLevel || !levels[newLevel].details) {
-          this.setLevelInternal(newLevel);
-        }
-      }
-    }
-  }, {
-    key: "manualLevel",
-    get: function get() {
-      return this.manualLevelIndex;
-    },
-    set: function set(newLevel) {
-      this.manualLevelIndex = newLevel;
-
-      if (this._startLevel === undefined) {
-        this._startLevel = newLevel;
-      }
-
-      if (newLevel !== -1) {
-        this.level = newLevel;
-      }
-    }
-  }, {
-    key: "firstLevel",
-    get: function get() {
-      return this._firstLevel;
-    },
-    set: function set(newLevel) {
-      this._firstLevel = newLevel;
-    }
-  }, {
-    key: "startLevel",
-    get: function get() {
-      // hls.startLevel takes precedence over config.startLevel
-      // if none of these values are defined, fallback on this._firstLevel (first quality level appearing in variant manifest)
-      if (this._startLevel === undefined) {
-        var configStartLevel = this.hls.config.startLevel;
-
-        if (configStartLevel !== undefined) {
-          return configStartLevel;
-        } else {
-          return this._firstLevel;
-        }
-      } else {
-        return this._startLevel;
-      }
-    },
-    set: function set(newLevel) {
-      this._startLevel = newLevel;
-    }
-  }, {
-    key: "nextLoadLevel",
-    get: function get() {
-      if (this.manualLevelIndex !== -1) {
-        return this.manualLevelIndex;
-      } else {
-        return this.hls.nextAutoLevel;
-      }
-    },
-    set: function set(nextLevel) {
-      this.level = nextLevel;
-
-      if (this.manualLevelIndex === -1) {
-        this.hls.nextAutoLevel = nextLevel;
-      }
-    }
-  }]);
-
-  return LevelController;
-}(event_handler);
-
-
-// EXTERNAL MODULE: ./src/demux/id3.js
-var id3 = __webpack_require__("./src/demux/id3.js");
-
-// CONCATENATED MODULE: ./src/utils/texttrack-utils.ts
-function sendAddTrackEvent(track, videoEl) {
-  var event;
-
-  try {
-    event = new Event('addtrack');
-  } catch (err) {
-    // for IE11
-    event = document.createEvent('Event');
-    event.initEvent('addtrack', false, false);
-  }
-
-  event.track = track;
-  videoEl.dispatchEvent(event);
-}
-function clearCurrentCues(track) {
-  if (track !== null && track !== void 0 && track.cues) {
-    while (track.cues.length > 0) {
-      track.removeCue(track.cues[0]);
-    }
-  }
-}
-/**
- *  Given a list of Cues, finds the closest cue matching the given time.
- *  Modified verison of binary search O(log(n)).
- *
- * @export
- * @param {(TextTrackCueList | TextTrackCue[])} cues - List of cues.
- * @param {number} time - Target time, to find closest cue to.
- * @returns {TextTrackCue}
- */
-
-function getClosestCue(cues, time) {
-  // If the offset is less than the first element, the first element is the closest.
-  if (time < cues[0].endTime) {
-    return cues[0];
-  } // If the offset is greater than the last cue, the last is the closest.
-
-
-  if (time > cues[cues.length - 1].endTime) {
-    return cues[cues.length - 1];
-  }
-
-  var left = 0;
-  var right = cues.length - 1;
-
-  while (left <= right) {
-    var mid = Math.floor((right + left) / 2);
-
-    if (time < cues[mid].endTime) {
-      right = mid - 1;
-    } else if (time > cues[mid].endTime) {
-      left = mid + 1;
-    } else {
-      // If it's not lower or higher, it must be equal.
-      return cues[mid];
-    }
-  } // At this point, left and right have swapped.
-  // No direct match was found, left or right element must be the closest. Check which one has the smallest diff.
-
-
-  return cues[left].endTime - time < time - cues[right].endTime ? cues[left] : cues[right];
-}
-// CONCATENATED MODULE: ./src/controller/id3-track-controller.js
-function id3_track_controller_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
-
-/*
- * id3 metadata track controller
-*/
-
-
-
-
-var MIN_CUE_DURATION = 0.25;
-
-var id3_track_controller_ID3TrackController = /*#__PURE__*/function (_EventHandler) {
-  id3_track_controller_inheritsLoose(ID3TrackController, _EventHandler);
-
-  function ID3TrackController(hls) {
-    var _this;
-
-    _this = _EventHandler.call(this, hls, events["default"].MEDIA_ATTACHED, events["default"].MEDIA_DETACHING, events["default"].FRAG_PARSING_METADATA, events["default"].LIVE_BACK_BUFFER_REACHED) || this;
-    _this.id3Track = undefined;
-    _this.media = undefined;
-    return _this;
-  }
-
-  var _proto = ID3TrackController.prototype;
-
-  _proto.destroy = function destroy() {
-    event_handler.prototype.destroy.call(this);
-  } // Add ID3 metatadata text track.
-  ;
-
-  _proto.onMediaAttached = function onMediaAttached(data) {
-    this.media = data.media;
-
-    if (!this.media) {}
-  };
-
-  _proto.onMediaDetaching = function onMediaDetaching() {
-    clearCurrentCues(this.id3Track);
-    this.id3Track = undefined;
-    this.media = undefined;
-  };
-
-  _proto.getID3Track = function getID3Track(textTracks) {
-    for (var i = 0; i < textTracks.length; i++) {
-      var textTrack = textTracks[i];
-
-      if (textTrack.kind === 'metadata' && textTrack.label === 'id3') {
-        // send 'addtrack' when reusing the textTrack for metadata,
-        // same as what we do for captions
-        sendAddTrackEvent(textTrack, this.media);
-        return textTrack;
-      }
-    }
-
-    return this.media.addTextTrack('metadata', 'id3');
-  };
-
-  _proto.onFragParsingMetadata = function onFragParsingMetadata(data) {
-    var fragment = data.frag;
-    var samples = data.samples; // create track dynamically
-
-    if (!this.id3Track) {
-      this.id3Track = this.getID3Track(this.media.textTracks);
-      this.id3Track.mode = 'hidden';
-    } // Attempt to recreate Safari functionality by creating
-    // WebKitDataCue objects when available and store the decoded
-    // ID3 data in the value property of the cue
-
-
-    var Cue = window.WebKitDataCue || window.VTTCue || window.TextTrackCue;
-
-    for (var i = 0; i < samples.length; i++) {
-      var frames = id3["default"].getID3Frames(samples[i].data);
-
-      if (frames) {
-        // Ensure the pts is positive - sometimes it's reported as a small negative number
-        var startTime = Math.max(samples[i].pts, 0);
-        var endTime = i < samples.length - 1 ? samples[i + 1].pts : fragment.endPTS;
-
-        if (!endTime) {
-          endTime = fragment.start + fragment.duration;
-        }
-
-        var timeDiff = endTime - startTime;
-
-        if (timeDiff <= 0) {
-          endTime = startTime + MIN_CUE_DURATION;
-        }
-
-        for (var j = 0; j < frames.length; j++) {
-          var frame = frames[j]; // Safari doesn't put the timestamp frame in the TextTrack
-
-          if (!id3["default"].isTimeStampFrame(frame)) {
-            var cue = new Cue(startTime, endTime, '');
-            cue.value = frame;
-            this.id3Track.addCue(cue);
-          }
-        }
-      }
-    }
-  };
-
-  _proto.onLiveBackBufferReached = function onLiveBackBufferReached(_ref) {
-    var bufferEnd = _ref.bufferEnd;
-    var id3Track = this.id3Track;
-
-    if (!id3Track || !id3Track.cues || !id3Track.cues.length) {
-      return;
-    }
-
-    var foundCue = getClosestCue(id3Track.cues, bufferEnd);
-
-    if (!foundCue) {
-      return;
-    }
-
-    while (id3Track.cues[0] !== foundCue) {
-      id3Track.removeCue(id3Track.cues[0]);
-    }
-  };
-
-  return ID3TrackController;
-}(event_handler);
-
-/* harmony default export */ var id3_track_controller = (id3_track_controller_ID3TrackController);
-// CONCATENATED MODULE: ./src/is-supported.ts
-
-function is_supported_isSupported() {
-  var mediaSource = getMediaSource();
-
-  if (!mediaSource) {
-    return false;
-  }
-
-  var sourceBuffer = self.SourceBuffer || self.WebKitSourceBuffer; // eslint-disable-line no-restricted-globals
-
-  var isTypeSupported = mediaSource && typeof mediaSource.isTypeSupported === 'function' && mediaSource.isTypeSupported('video/mp4; codecs="avc1.42E01E,mp4a.40.2"'); // if SourceBuffer is exposed ensure its API is valid
-  // safari and old version of Chrome doe not expose SourceBuffer globally so checking SourceBuffer.prototype is impossible
-
-  var sourceBufferValidAPI = !sourceBuffer || sourceBuffer.prototype && typeof sourceBuffer.prototype.appendBuffer === 'function' && typeof sourceBuffer.prototype.remove === 'function';
-  return !!isTypeSupported && !!sourceBufferValidAPI;
-}
-// CONCATENATED MODULE: ./src/utils/ewma.ts
-/*
- * compute an Exponential Weighted moving average
- * - https://en.wikipedia.org/wiki/Moving_average#Exponential_moving_average
- *  - heavily inspired from shaka-player
- */
-var EWMA = /*#__PURE__*/function () {
-  //  About half of the estimated value will be from the last |halfLife| samples by weight.
-  function EWMA(halfLife) {
-    this.alpha_ = void 0;
-    this.estimate_ = void 0;
-    this.totalWeight_ = void 0;
-    // Larger values of alpha expire historical data more slowly.
-    this.alpha_ = halfLife ? Math.exp(Math.log(0.5) / halfLife) : 0;
-    this.estimate_ = 0;
-    this.totalWeight_ = 0;
-  }
-
-  var _proto = EWMA.prototype;
-
-  _proto.sample = function sample(weight, value) {
-    var adjAlpha = Math.pow(this.alpha_, weight);
-    this.estimate_ = value * (1 - adjAlpha) + adjAlpha * this.estimate_;
-    this.totalWeight_ += weight;
-  };
-
-  _proto.getTotalWeight = function getTotalWeight() {
-    return this.totalWeight_;
-  };
-
-  _proto.getEstimate = function getEstimate() {
-    if (this.alpha_) {
-      var zeroFactor = 1 - Math.pow(this.alpha_, this.totalWeight_);
-      return this.estimate_ / zeroFactor;
-    } else {
-      return this.estimate_;
-    }
-  };
-
-  return EWMA;
-}();
-
-/* harmony default export */ var ewma = (EWMA);
-// CONCATENATED MODULE: ./src/utils/ewma-bandwidth-estimator.ts
-/*
- * EWMA Bandwidth Estimator
- *  - heavily inspired from shaka-player
- * Tracks bandwidth samples and estimates available bandwidth.
- * Based on the minimum of two exponentially-weighted moving averages with
- * different half-lives.
- */
-
-
-var ewma_bandwidth_estimator_EwmaBandWidthEstimator = /*#__PURE__*/function () {
-  // TODO(typescript-hls)
-  function EwmaBandWidthEstimator(hls, slow, fast, defaultEstimate) {
-    this.hls = void 0;
-    this.defaultEstimate_ = void 0;
-    this.minWeight_ = void 0;
-    this.minDelayMs_ = void 0;
-    this.slow_ = void 0;
-    this.fast_ = void 0;
-    this.hls = hls;
-    this.defaultEstimate_ = defaultEstimate;
-    this.minWeight_ = 0.001;
-    this.minDelayMs_ = 50;
-    this.slow_ = new ewma(slow);
-    this.fast_ = new ewma(fast);
-  }
-
-  var _proto = EwmaBandWidthEstimator.prototype;
-
-  _proto.sample = function sample(durationMs, numBytes) {
-    durationMs = Math.max(durationMs, this.minDelayMs_);
-    var numBits = 8 * numBytes,
-        // weight is duration in seconds
-    durationS = durationMs / 1000,
-        // value is bandwidth in bits/s
-    bandwidthInBps = numBits / durationS;
-    this.fast_.sample(durationS, bandwidthInBps);
-    this.slow_.sample(durationS, bandwidthInBps);
-  };
-
-  _proto.canEstimate = function canEstimate() {
-    var fast = this.fast_;
-    return fast && fast.getTotalWeight() >= this.minWeight_;
-  };
-
-  _proto.getEstimate = function getEstimate() {
-    if (this.canEstimate()) {
-      // console.log('slow estimate:'+ Math.round(this.slow_.getEstimate()));
-      // console.log('fast estimate:'+ Math.round(this.fast_.getEstimate()));
-      // Take the minimum of these two estimates.  This should have the effect of
-      // adapting down quickly, but up more slowly.
-      return Math.min(this.fast_.getEstimate(), this.slow_.getEstimate());
-    } else {
-      return this.defaultEstimate_;
-    }
-  };
-
-  _proto.destroy = function destroy() {};
-
-  return EwmaBandWidthEstimator;
-}();
-
-/* harmony default export */ var ewma_bandwidth_estimator = (ewma_bandwidth_estimator_EwmaBandWidthEstimator);
-// CONCATENATED MODULE: ./src/controller/abr-controller.js
-
-
-
-function abr_controller_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
-
-function abr_controller_createClass(Constructor, protoProps, staticProps) { if (protoProps) abr_controller_defineProperties(Constructor.prototype, protoProps); if (staticProps) abr_controller_defineProperties(Constructor, staticProps); return Constructor; }
-
-function abr_controller_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
-
-function abr_controller_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
-
-/*
- * simple ABR Controller
- *  - compute next level based on last fragment bw heuristics
- *  - implement an abandon rules triggered if we have less than 2 frag buffered and if computed bw shows that we risk buffer stalling
- */
-
-
-
-
-
-
-var abr_controller_window = window,
-    abr_controller_performance = abr_controller_window.performance;
-
-var abr_controller_AbrController = /*#__PURE__*/function (_EventHandler) {
-  abr_controller_inheritsLoose(AbrController, _EventHandler);
-
-  function AbrController(hls) {
-    var _this;
-
-    _this = _EventHandler.call(this, hls, events["default"].FRAG_LOADING, events["default"].FRAG_LOADED, events["default"].FRAG_BUFFERED, events["default"].ERROR) || this;
-    _this.lastLoadedFragLevel = 0;
-    _this._nextAutoLevel = -1;
-    _this.hls = hls;
-    _this.timer = null;
-    _this._bwEstimator = null;
-    _this.onCheck = _this._abandonRulesCheck.bind(abr_controller_assertThisInitialized(_this));
-    return _this;
-  }
-
-  var _proto = AbrController.prototype;
-
-  _proto.destroy = function destroy() {
-    this.clearTimer();
-    event_handler.prototype.destroy.call(this);
-  };
-
-  _proto.onFragLoading = function onFragLoading(data) {
-    var frag = data.frag;
-
-    if (frag.type === 'main') {
-      if (!this.timer) {
-        this.fragCurrent = frag;
-        this.timer = setInterval(this.onCheck, 100);
-      } // lazy init of BwEstimator, rationale is that we use different params for Live/VoD
-      // so we need to wait for stream manifest / playlist type to instantiate it.
-
-
-      if (!this._bwEstimator) {
-        var hls = this.hls;
-        var config = hls.config;
-        var level = frag.level;
-        var isLive = hls.levels[level].details.live;
-        var ewmaFast;
-        var ewmaSlow;
-
-        if (isLive) {
-          ewmaFast = config.abrEwmaFastLive;
-          ewmaSlow = config.abrEwmaSlowLive;
-        } else {
-          ewmaFast = config.abrEwmaFastVoD;
-          ewmaSlow = config.abrEwmaSlowVoD;
-        }
-
-        this._bwEstimator = new ewma_bandwidth_estimator(hls, ewmaSlow, ewmaFast, config.abrEwmaDefaultEstimate);
-      }
-    }
-  };
-
-  _proto._abandonRulesCheck = function _abandonRulesCheck() {
-    /*
-      monitor fragment retrieval time...
-      we compute expected time of arrival of the complete fragment.
-      we compare it to expected time of buffer starvation
-    */
-    var hls = this.hls;
-    var video = hls.media;
-    var frag = this.fragCurrent;
-
-    if (!frag) {
-      return;
-    }
-
-    var loader = frag.loader; // if loader has been destroyed or loading has been aborted, stop timer and return
-
-    if (!loader || loader.stats && loader.stats.aborted) {
-      logger["logger"].warn('frag loader destroy or aborted, disarm abandonRules');
-      this.clearTimer(); // reset forced auto level value so that next level will be selected
-
-      this._nextAutoLevel = -1;
-      return;
-    }
-
-    var stats = loader.stats;
-    /* only monitor frag retrieval time if
-    (video not paused OR first fragment being loaded(ready state === HAVE_NOTHING = 0)) AND autoswitching enabled AND not lowest level (=> means that we have several levels) */
-
-    if (video && stats && (!video.paused && video.playbackRate !== 0 || !video.readyState) && frag.autoLevel && frag.level) {
-      var requestDelay = abr_controller_performance.now() - stats.trequest;
-      var playbackRate = Math.abs(video.playbackRate); // monitor fragment load progress after half of expected fragment duration,to stabilize bitrate
-
-      if (requestDelay > 500 * frag.duration / playbackRate) {
-        var levels = hls.levels;
-        var loadRate = Math.max(1, stats.bw ? stats.bw / 8 : stats.loaded * 1000 / requestDelay); // byte/s; at least 1 byte/s to avoid division by zero
-        // compute expected fragment length using frag duration and level bitrate. also ensure that expected len is gte than already loaded size
-
-        var level = levels[frag.level];
-
-        if (!level) {
-          return;
-        }
-
-        var levelBitrate = level.realBitrate ? Math.max(level.realBitrate, level.bitrate) : level.bitrate;
-        var expectedLen = stats.total ? stats.total : Math.max(stats.loaded, Math.round(frag.duration * levelBitrate / 8));
-        var pos = video.currentTime;
-        var fragLoadedDelay = (expectedLen - stats.loaded) / loadRate;
-        var bufferStarvationDelay = (buffer_helper_BufferHelper.bufferInfo(video, pos, hls.config.maxBufferHole).end - pos) / playbackRate; // consider emergency switch down only if we have less than 2 frag buffered AND
-        // time to finish loading current fragment is bigger than buffer starvation delay
-        // ie if we risk buffer starvation if bw does not increase quickly
-
-        if (bufferStarvationDelay < 2 * frag.duration / playbackRate && fragLoadedDelay > bufferStarvationDelay) {
-          var minAutoLevel = hls.minAutoLevel;
-          var fragLevelNextLoadedDelay;
-          var nextLoadLevel; // lets iterate through lower level and try to find the biggest one that could avoid rebuffering
-          // we start from current level - 1 and we step down , until we find a matching level
-
-          for (nextLoadLevel = frag.level - 1; nextLoadLevel > minAutoLevel; nextLoadLevel--) {
-            // compute time to load next fragment at lower level
-            // 0.8 : consider only 80% of current bw to be conservative
-            // 8 = bits per byte (bps/Bps)
-            var levelNextBitrate = levels[nextLoadLevel].realBitrate ? Math.max(levels[nextLoadLevel].realBitrate, levels[nextLoadLevel].bitrate) : levels[nextLoadLevel].bitrate;
-
-            var _fragLevelNextLoadedDelay = frag.duration * levelNextBitrate / (8 * 0.8 * loadRate);
-
-            if (_fragLevelNextLoadedDelay < bufferStarvationDelay) {
-              // we found a lower level that be rebuffering free with current estimated bw !
-              break;
-            }
-          } // only emergency switch down if it takes less time to load new fragment at lowest level instead
-          // of finishing loading current one ...
-
-
-          if (fragLevelNextLoadedDelay < fragLoadedDelay) {
-            logger["logger"].warn("loading too slow, abort fragment loading and switch to level " + nextLoadLevel + ":fragLoadedDelay[" + nextLoadLevel + "]<fragLoadedDelay[" + (frag.level - 1) + "];bufferStarvationDelay:" + fragLevelNextLoadedDelay.toFixed(1) + "<" + fragLoadedDelay.toFixed(1) + ":" + bufferStarvationDelay.toFixed(1)); // force next load level in auto mode
-
-            hls.nextLoadLevel = nextLoadLevel; // update bw estimate for this fragment before cancelling load (this will help reducing the bw)
-
-            this._bwEstimator.sample(requestDelay, stats.loaded); // abort fragment loading
-
-
-            loader.abort(); // stop abandon rules timer
-
-            this.clearTimer();
-            hls.trigger(events["default"].FRAG_LOAD_EMERGENCY_ABORTED, {
-              frag: frag,
-              stats: stats
-            });
-          }
-        }
-      }
-    }
-  };
-
-  _proto.onFragLoaded = function onFragLoaded(data) {
-    var frag = data.frag;
-
-    if (frag.type === 'main' && Object(number["isFiniteNumber"])(frag.sn)) {
-      // stop monitoring bw once frag loaded
-      this.clearTimer(); // store level id after successful fragment load
-
-      this.lastLoadedFragLevel = frag.level; // reset forced auto level value so that next level will be selected
-
-      this._nextAutoLevel = -1; // compute level average bitrate
-
-      if (this.hls.config.abrMaxWithRealBitrate) {
-        var level = this.hls.levels[frag.level];
-        var loadedBytes = (level.loaded ? level.loaded.bytes : 0) + data.stats.loaded;
-        var loadedDuration = (level.loaded ? level.loaded.duration : 0) + data.frag.duration;
-        level.loaded = {
-          bytes: loadedBytes,
-          duration: loadedDuration
-        };
-        level.realBitrate = Math.round(8 * loadedBytes / loadedDuration);
-      } // if fragment has been loaded to perform a bitrate test,
-
-
-      if (data.frag.bitrateTest) {
-        var stats = data.stats;
-        stats.tparsed = stats.tbuffered = stats.tload;
-        this.onFragBuffered(data);
-      }
-    }
-  };
-
-  _proto.onFragBuffered = function onFragBuffered(data) {
-    var stats = data.stats;
-    var frag = data.frag; // only update stats on first frag buffering
-    // if same frag is loaded multiple times, it might be in browser cache, and loaded quickly
-    // and leading to wrong bw estimation
-    // on bitrate test, also only update stats once (if tload = tbuffered == on FRAG_LOADED)
-
-    if (stats.aborted !== true && frag.type === 'main' && Object(number["isFiniteNumber"])(frag.sn) && (!frag.bitrateTest || stats.tload === stats.tbuffered)) {
-      // use tparsed-trequest instead of tbuffered-trequest to compute fragLoadingProcessing; rationale is that  buffer appending only happens once media is attached
-      // in case we use config.startFragPrefetch while media is not attached yet, fragment might be parsed while media not attached yet, but it will only be buffered on media attached
-      // as a consequence it could happen really late in the process. meaning that appending duration might appears huge ... leading to underestimated throughput estimation
-      var fragLoadingProcessingMs = stats.tparsed - stats.trequest;
-      logger["logger"].log("latency/loading/parsing/append/kbps:" + Math.round(stats.tfirst - stats.trequest) + "/" + Math.round(stats.tload - stats.tfirst) + "/" + Math.round(stats.tparsed - stats.tload) + "/" + Math.round(stats.tbuffered - stats.tparsed) + "/" + Math.round(8 * stats.loaded / (stats.tbuffered - stats.trequest)));
-
-      this._bwEstimator.sample(fragLoadingProcessingMs, stats.loaded);
-
-      stats.bwEstimate = this._bwEstimator.getEstimate(); // if fragment has been loaded to perform a bitrate test, (hls.startLevel = -1), store bitrate test delay duration
-
-      if (frag.bitrateTest) {
-        this.bitrateTestDelay = fragLoadingProcessingMs / 1000;
-      } else {
-        this.bitrateTestDelay = 0;
-      }
-    }
-  };
-
-  _proto.onError = function onError(data) {
-    // stop timer in case of frag loading error
-    switch (data.details) {
-      case errors["ErrorDetails"].FRAG_LOAD_ERROR:
-      case errors["ErrorDetails"].FRAG_LOAD_TIMEOUT:
-        this.clearTimer();
-        break;
-
-      default:
-        break;
-    }
-  };
-
-  _proto.clearTimer = function clearTimer() {
-    clearInterval(this.timer);
-    this.timer = null;
-  } // return next auto level
-  ;
-
-  _proto._findBestLevel = function _findBestLevel(currentLevel, currentFragDuration, currentBw, minAutoLevel, maxAutoLevel, maxFetchDuration, bwFactor, bwUpFactor, levels) {
-    for (var i = maxAutoLevel; i >= minAutoLevel; i--) {
-      var levelInfo = levels[i];
-
-      if (!levelInfo) {
-        continue;
-      }
-
-      var levelDetails = levelInfo.details;
-      var avgDuration = levelDetails ? levelDetails.totalduration / levelDetails.fragments.length : currentFragDuration;
-      var live = levelDetails ? levelDetails.live : false;
-      var adjustedbw = void 0; // follow algorithm captured from stagefright :
-      // https://android.googlesource.com/platform/frameworks/av/+/master/media/libstagefright/httplive/LiveSession.cpp
-      // Pick the highest bandwidth stream below or equal to estimated bandwidth.
-      // consider only 80% of the available bandwidth, but if we are switching up,
-      // be even more conservative (70%) to avoid overestimating and immediately
-      // switching back.
-
-      if (i <= currentLevel) {
-        adjustedbw = bwFactor * currentBw;
-      } else {
-        adjustedbw = bwUpFactor * currentBw;
-      }
-
-      var bitrate = levels[i].realBitrate ? Math.max(levels[i].realBitrate, levels[i].bitrate) : levels[i].bitrate;
-      var fetchDuration = bitrate * avgDuration / adjustedbw;
-      logger["logger"].trace("level/adjustedbw/bitrate/avgDuration/maxFetchDuration/fetchDuration: " + i + "/" + Math.round(adjustedbw) + "/" + bitrate + "/" + avgDuration + "/" + maxFetchDuration + "/" + fetchDuration); // if adjusted bw is greater than level bitrate AND
-
-      if (adjustedbw > bitrate && ( // fragment fetchDuration unknown OR live stream OR fragment fetchDuration less than max allowed fetch duration, then this level matches
-      // we don't account for max Fetch Duration for live streams, this is to avoid switching down when near the edge of live sliding window ...
-      // special case to support startLevel = -1 (bitrateTest) on live streams : in that case we should not exit loop so that _findBestLevel will return -1
-      !fetchDuration || live && !this.bitrateTestDelay || fetchDuration < maxFetchDuration)) {
-        // as we are looping from highest to lowest, this will return the best achievable quality level
-        return i;
-      }
-    } // not enough time budget even with quality level 0 ... rebuffering might happen
-
-
-    return -1;
-  };
-
-  abr_controller_createClass(AbrController, [{
-    key: "nextAutoLevel",
-    get: function get() {
-      var forcedAutoLevel = this._nextAutoLevel;
-      var bwEstimator = this._bwEstimator; // in case next auto level has been forced, and bw not available or not reliable, return forced value
-
-      if (forcedAutoLevel !== -1 && (!bwEstimator || !bwEstimator.canEstimate())) {
-        return forcedAutoLevel;
-      } // compute next level using ABR logic
-
-
-      var nextABRAutoLevel = this._nextABRAutoLevel; // if forced auto level has been defined, use it to cap ABR computed quality level
-
-      if (forcedAutoLevel !== -1) {
-        nextABRAutoLevel = Math.min(forcedAutoLevel, nextABRAutoLevel);
-      }
-
-      return nextABRAutoLevel;
-    },
-    set: function set(nextLevel) {
-      this._nextAutoLevel = nextLevel;
-    }
-  }, {
-    key: "_nextABRAutoLevel",
-    get: function get() {
-      var hls = this.hls;
-      var maxAutoLevel = hls.maxAutoLevel,
-          levels = hls.levels,
-          config = hls.config,
-          minAutoLevel = hls.minAutoLevel;
-      var video = hls.media;
-      var currentLevel = this.lastLoadedFragLevel;
-      var currentFragDuration = this.fragCurrent ? this.fragCurrent.duration : 0;
-      var pos = video ? video.currentTime : 0; // playbackRate is the absolute value of the playback rate; if video.playbackRate is 0, we use 1 to load as
-      // if we're playing back at the normal rate.
-
-      var playbackRate = video && video.playbackRate !== 0 ? Math.abs(video.playbackRate) : 1.0;
-      var avgbw = this._bwEstimator ? this._bwEstimator.getEstimate() : config.abrEwmaDefaultEstimate; // bufferStarvationDelay is the wall-clock time left until the playback buffer is exhausted.
-
-      var bufferStarvationDelay = (buffer_helper_BufferHelper.bufferInfo(video, pos, config.maxBufferHole).end - pos) / playbackRate; // First, look to see if we can find a level matching with our avg bandwidth AND that could also guarantee no rebuffering at all
-
-      var bestLevel = this._findBestLevel(currentLevel, currentFragDuration, avgbw, minAutoLevel, maxAutoLevel, bufferStarvationDelay, config.abrBandWidthFactor, config.abrBandWidthUpFactor, levels);
-
-      if (bestLevel >= 0) {
-        return bestLevel;
-      } else {
-        logger["logger"].trace('rebuffering expected to happen, lets try to find a quality level minimizing the rebuffering'); // not possible to get rid of rebuffering ... let's try to find level that will guarantee less than maxStarvationDelay of rebuffering
-        // if no matching level found, logic will return 0
-
-        var maxStarvationDelay = currentFragDuration ? Math.min(currentFragDuration, config.maxStarvationDelay) : config.maxStarvationDelay;
-        var bwFactor = config.abrBandWidthFactor;
-        var bwUpFactor = config.abrBandWidthUpFactor;
-
-        if (bufferStarvationDelay === 0) {
-          // in case buffer is empty, let's check if previous fragment was loaded to perform a bitrate test
-          var bitrateTestDelay = this.bitrateTestDelay;
-
-          if (bitrateTestDelay) {
-            // if it is the case, then we need to adjust our max starvation delay using maxLoadingDelay config value
-            // max video loading delay used in  automatic start level selection :
-            // in that mode ABR controller will ensure that video loading time (ie the time to fetch the first fragment at lowest quality level +
-            // the time to fetch the fragment at the appropriate quality level is less than ```maxLoadingDelay``` )
-            // cap maxLoadingDelay and ensure it is not bigger 'than bitrate test' frag duration
-            var maxLoadingDelay = currentFragDuration ? Math.min(currentFragDuration, config.maxLoadingDelay) : config.maxLoadingDelay;
-            maxStarvationDelay = maxLoadingDelay - bitrateTestDelay;
-            logger["logger"].trace("bitrate test took " + Math.round(1000 * bitrateTestDelay) + "ms, set first fragment max fetchDuration to " + Math.round(1000 * maxStarvationDelay) + " ms"); // don't use conservative factor on bitrate test
-
-            bwFactor = bwUpFactor = 1;
-          }
-        }
-
-        bestLevel = this._findBestLevel(currentLevel, currentFragDuration, avgbw, minAutoLevel, maxAutoLevel, bufferStarvationDelay + maxStarvationDelay, bwFactor, bwUpFactor, levels);
-        return Math.max(bestLevel, 0);
-      }
-    }
-  }]);
-
-  return AbrController;
-}(event_handler);
-
-/* harmony default export */ var abr_controller = (abr_controller_AbrController);
-// CONCATENATED MODULE: ./src/controller/buffer-controller.ts
-
-
-function buffer_controller_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
-
-/*
- * Buffer Controller
- */
-
-
-
-
-
-
-var buffer_controller_MediaSource = getMediaSource();
-
-var buffer_controller_BufferController = /*#__PURE__*/function (_EventHandler) {
-  buffer_controller_inheritsLoose(BufferController, _EventHandler);
-
-  // the value that we have set mediasource.duration to
-  // (the actual duration may be tweaked slighly by the browser)
-  // the value that we want to set mediaSource.duration to
-  // the target duration of the current media playlist
-  // current stream state: true - for live broadcast, false - for VoD content
-  // cache the self generated object url to detect hijack of video tag
-  // signals that the sourceBuffers need to be flushed
-  // signals that mediaSource should have endOfStream called
-  // this is optional because this property is removed from the class sometimes
-  // The number of BUFFER_CODEC events received before any sourceBuffers are created
-  // The total number of BUFFER_CODEC events received
-  // A reference to the attached media element
-  // A reference to the active media source
-  // List of pending segments to be appended to source buffer
-  // A guard to see if we are currently appending to the source buffer
-  // counters
-  function BufferController(hls) {
-    var _this;
-
-    _this = _EventHandler.call(this, hls, events["default"].MEDIA_ATTACHING, events["default"].MEDIA_DETACHING, events["default"].MANIFEST_PARSED, events["default"].BUFFER_RESET, events["default"].BUFFER_APPENDING, events["default"].BUFFER_CODECS, events["default"].BUFFER_EOS, events["default"].BUFFER_FLUSHING, events["default"].LEVEL_PTS_UPDATED, events["default"].LEVEL_UPDATED) || this;
-    _this._msDuration = null;
-    _this._levelDuration = null;
-    _this._levelTargetDuration = 10;
-    _this._live = null;
-    _this._objectUrl = null;
-    _this._needsFlush = false;
-    _this._needsEos = false;
-    _this.config = void 0;
-    _this.audioTimestampOffset = void 0;
-    _this.bufferCodecEventsExpected = 0;
-    _this._bufferCodecEventsTotal = 0;
-    _this.media = null;
-    _this.mediaSource = null;
-    _this.segments = [];
-    _this.parent = void 0;
-    _this.appending = false;
-    _this.appended = 0;
-    _this.appendError = 0;
-    _this.flushBufferCounter = 0;
-    _this.tracks = {};
-    _this.pendingTracks = {};
-    _this.sourceBuffer = {};
-    _this.flushRange = [];
-
-    _this._onMediaSourceOpen = function () {
-      logger["logger"].log('media source opened');
-
-      _this.hls.trigger(events["default"].MEDIA_ATTACHED, {
-        media: _this.media
-      });
-
-      var mediaSource = _this.mediaSource;
-
-      if (mediaSource) {
-        // once received, don't listen anymore to sourceopen event
-        mediaSource.removeEventListener('sourceopen', _this._onMediaSourceOpen);
-      }
-
-      _this.checkPendingTracks();
-    };
-
-    _this._onMediaSourceClose = function () {
-      logger["logger"].log('media source closed');
-    };
-
-    _this._onMediaSourceEnded = function () {
-      logger["logger"].log('media source ended');
-    };
-
-    _this._onSBUpdateEnd = function () {
-      // update timestampOffset
-      if (_this.audioTimestampOffset && _this.sourceBuffer.audio) {
-        var audioBuffer = _this.sourceBuffer.audio;
-        logger["logger"].warn("change mpeg audio timestamp offset from " + audioBuffer.timestampOffset + " to " + _this.audioTimestampOffset);
-        audioBuffer.timestampOffset = _this.audioTimestampOffset;
-        delete _this.audioTimestampOffset;
-      }
-
-      if (_this._needsFlush) {
-        _this.doFlush();
-      }
-
-      if (_this._needsEos) {
-        _this.checkEos();
-      }
-
-      _this.appending = false;
-      var parent = _this.parent; // count nb of pending segments waiting for appending on this sourcebuffer
-
-      var pending = _this.segments.reduce(function (counter, segment) {
-        return segment.parent === parent ? counter + 1 : counter;
-      }, 0); // this.sourceBuffer is better to use than media.buffered as it is closer to the PTS data from the fragments
-
-
-      var timeRanges = {};
-      var sbSet = _this.sourceBuffer;
-
-      for (var streamType in sbSet) {
-        var sb = sbSet[streamType];
-
-        if (!sb) {
-          throw Error("handling source buffer update end error: source buffer for " + streamType + " uninitilized and unable to update buffered TimeRanges.");
-        }
-
-        timeRanges[streamType] = buffer_helper_BufferHelper.getBuffered(sb);
-      }
-
-      _this.hls.trigger(events["default"].BUFFER_APPENDED, {
-        parent: parent,
-        pending: pending,
-        timeRanges: timeRanges
-      }); // don't append in flushing mode
-
-
-      if (!_this._needsFlush) {
-        _this.doAppending();
-      }
-
-      _this.updateMediaElementDuration(); // appending goes first
-
-
-      if (pending === 0) {
-        _this.flushLiveBackBuffer();
-      }
-    };
-
-    _this._onSBUpdateError = function (event) {
-      logger["logger"].error('sourceBuffer error:', event); // according to http://www.w3.org/TR/media-source/#sourcebuffer-append-error
-      // this error might not always be fatal (it is fatal if decode error is set, in that case
-      // it will be followed by a mediaElement error ...)
-
-      _this.hls.trigger(events["default"].ERROR, {
-        type: errors["ErrorTypes"].MEDIA_ERROR,
-        details: errors["ErrorDetails"].BUFFER_APPENDING_ERROR,
-        fatal: false
-      }); // we don't need to do more than that, as accordin to the spec, updateend will be fired just after
-
-    };
-
-    _this.config = hls.config;
-    return _this;
-  }
-
-  var _proto = BufferController.prototype;
-
-  _proto.destroy = function destroy() {
-    event_handler.prototype.destroy.call(this);
-  };
-
-  _proto.onLevelPtsUpdated = function onLevelPtsUpdated(data) {
-    var type = data.type;
-    var audioTrack = this.tracks.audio; // Adjusting `SourceBuffer.timestampOffset` (desired point in the timeline where the next frames should be appended)
-    // in Chrome browser when we detect MPEG audio container and time delta between level PTS and `SourceBuffer.timestampOffset`
-    // is greater than 100ms (this is enough to handle seek for VOD or level change for LIVE videos). At the time of change we issue
-    // `SourceBuffer.abort()` and adjusting `SourceBuffer.timestampOffset` if `SourceBuffer.updating` is false or awaiting `updateend`
-    // event if SB is in updating state.
-    // More info here: https://github.com/video-dev/hls.js/issues/332#issuecomment-257986486
-
-    if (type === 'audio' && audioTrack && audioTrack.container === 'audio/mpeg') {
-      // Chrome audio mp3 track
-      var audioBuffer = this.sourceBuffer.audio;
-
-      if (!audioBuffer) {
-        throw Error('Level PTS Updated and source buffer for audio uninitalized');
-      }
-
-      var delta = Math.abs(audioBuffer.timestampOffset - data.start); // adjust timestamp offset if time delta is greater than 100ms
-
-      if (delta > 0.1) {
-        var updating = audioBuffer.updating;
-
-        try {
-          audioBuffer.abort();
-        } catch (err) {
-          logger["logger"].warn('can not abort audio buffer: ' + err);
-        }
-
-        if (!updating) {
-          logger["logger"].warn('change mpeg audio timestamp offset from ' + audioBuffer.timestampOffset + ' to ' + data.start);
-          audioBuffer.timestampOffset = data.start;
-        } else {
-          this.audioTimestampOffset = data.start;
-        }
-      }
-    }
-
-    if (this.config.liveDurationInfinity) {
-      this.updateSeekableRange(data.details);
-    }
-  };
-
-  _proto.onManifestParsed = function onManifestParsed(data) {
-    // in case of alt audio (where all tracks have urls) 2 BUFFER_CODECS events will be triggered, one per stream controller
-    // sourcebuffers will be created all at once when the expected nb of tracks will be reached
-    // in case alt audio is not used, only one BUFFER_CODEC event will be fired from main stream controller
-    // it will contain the expected nb of source buffers, no need to compute it
-    var codecEvents = 2;
-
-    if (data.audio && !data.video || !data.altAudio) {
-      codecEvents = 1;
-    }
-
-    this.bufferCodecEventsExpected = this._bufferCodecEventsTotal = codecEvents;
-    logger["logger"].log(this.bufferCodecEventsExpected + " bufferCodec event(s) expected");
-  };
-
-  _proto.onMediaAttaching = function onMediaAttaching(data) {
-    var media = this.media = data.media;
-
-    if (media && buffer_controller_MediaSource) {
-      // setup the media source
-      var ms = this.mediaSource = new buffer_controller_MediaSource(); // Media Source listeners
-
-      ms.addEventListener('sourceopen', this._onMediaSourceOpen);
-      ms.addEventListener('sourceended', this._onMediaSourceEnded);
-      ms.addEventListener('sourceclose', this._onMediaSourceClose); // link video and media Source
-
-      media.src = window.URL.createObjectURL(ms); // cache the locally generated object url
-
-      this._objectUrl = media.src;
-    }
-  };
-
-  _proto.onMediaDetaching = function onMediaDetaching() {
-    logger["logger"].log('media source detaching');
-    var ms = this.mediaSource;
-
-    if (ms) {
-      if (ms.readyState === 'open') {
-        try {
-          // endOfStream could trigger exception if any sourcebuffer is in updating state
-          // we don't really care about checking sourcebuffer state here,
-          // as we are anyway detaching the MediaSource
-          // let's just avoid this exception to propagate
-          ms.endOfStream();
-        } catch (err) {
-          logger["logger"].warn("onMediaDetaching:" + err.message + " while calling endOfStream");
-        }
-      }
-
-      ms.removeEventListener('sourceopen', this._onMediaSourceOpen);
-      ms.removeEventListener('sourceended', this._onMediaSourceEnded);
-      ms.removeEventListener('sourceclose', this._onMediaSourceClose); // Detach properly the MediaSource from the HTMLMediaElement as
-      // suggested in https://github.com/w3c/media-source/issues/53.
-
-      if (this.media) {
-        if (this._objectUrl) {
-          window.URL.revokeObjectURL(this._objectUrl);
-        } // clean up video tag src only if it's our own url. some external libraries might
-        // hijack the video tag and change its 'src' without destroying the Hls instance first
-
-
-        if (this.media.src === this._objectUrl) {
-          this.media.removeAttribute('src');
-          this.media.load();
-        } else {
-          logger["logger"].warn('media.src was changed by a third party - skip cleanup');
-        }
-      }
-
-      this.mediaSource = null;
-      this.media = null;
-      this._objectUrl = null;
-      this.bufferCodecEventsExpected = this._bufferCodecEventsTotal;
-      this.pendingTracks = {};
-      this.tracks = {};
-      this.sourceBuffer = {};
-      this.flushRange = [];
-      this.segments = [];
-      this.appended = 0;
-    }
-
-    this.hls.trigger(events["default"].MEDIA_DETACHED);
-  };
-
-  _proto.checkPendingTracks = function checkPendingTracks() {
-    var bufferCodecEventsExpected = this.bufferCodecEventsExpected,
-        pendingTracks = this.pendingTracks; // Check if we've received all of the expected bufferCodec events. When none remain, create all the sourceBuffers at once.
-    // This is important because the MSE spec allows implementations to throw QuotaExceededErrors if creating new sourceBuffers after
-    // data has been appended to existing ones.
-    // 2 tracks is the max (one for audio, one for video). If we've reach this max go ahead and create the buffers.
-
-    var pendingTracksCount = Object.keys(pendingTracks).length;
-
-    if (pendingTracksCount && !bufferCodecEventsExpected || pendingTracksCount === 2) {
-      // ok, let's create them now !
-      this.createSourceBuffers(pendingTracks);
-      this.pendingTracks = {}; // append any pending segments now !
-
-      this.doAppending();
-    }
-  };
-
-  _proto.onBufferReset = function onBufferReset() {
-    var sourceBuffer = this.sourceBuffer;
-
-    for (var type in sourceBuffer) {
-      var sb = sourceBuffer[type];
-
-      try {
-        if (sb) {
-          if (this.mediaSource) {
-            this.mediaSource.removeSourceBuffer(sb);
-          }
-
-          sb.removeEventListener('updateend', this._onSBUpdateEnd);
-          sb.removeEventListener('error', this._onSBUpdateError);
-        }
-      } catch (err) {}
-    }
-
-    this.sourceBuffer = {};
-    this.flushRange = [];
-    this.segments = [];
-    this.appended = 0;
-  };
-
-  _proto.onBufferCodecs = function onBufferCodecs(tracks) {
-    var _this2 = this;
-
-    // if source buffer(s) not created yet, appended buffer tracks in this.pendingTracks
-    // if sourcebuffers already created, do nothing ...
-    if (Object.keys(this.sourceBuffer).length) {
-      return;
-    }
-
-    Object.keys(tracks).forEach(function (trackName) {
-      _this2.pendingTracks[trackName] = tracks[trackName];
-    });
-    this.bufferCodecEventsExpected = Math.max(this.bufferCodecEventsExpected - 1, 0);
-
-    if (this.mediaSource && this.mediaSource.readyState === 'open') {
-      this.checkPendingTracks();
-    }
-  };
-
-  _proto.createSourceBuffers = function createSourceBuffers(tracks) {
-    var sourceBuffer = this.sourceBuffer,
-        mediaSource = this.mediaSource;
-
-    if (!mediaSource) {
-      throw Error('createSourceBuffers called when mediaSource was null');
-    }
-
-    for (var trackName in tracks) {
-      if (!sourceBuffer[trackName]) {
-        var track = tracks[trackName];
-
-        if (!track) {
-          throw Error("source buffer exists for track " + trackName + ", however track does not");
-        } // use levelCodec as first priority
-
-
-        var codec = track.levelCodec || track.codec;
-        var mimeType = track.container + ";codecs=" + codec;
-        logger["logger"].log("creating sourceBuffer(" + mimeType + ")");
-
-        try {
-          var sb = sourceBuffer[trackName] = mediaSource.addSourceBuffer(mimeType);
-          sb.addEventListener('updateend', this._onSBUpdateEnd);
-          sb.addEventListener('error', this._onSBUpdateError);
-          this.tracks[trackName] = {
-            buffer: sb,
-            codec: codec,
-            id: track.id,
-            container: track.container,
-            levelCodec: track.levelCodec
-          };
-        } catch (err) {
-          logger["logger"].error("error while trying to add sourceBuffer:" + err.message);
-          this.hls.trigger(events["default"].ERROR, {
-            type: errors["ErrorTypes"].MEDIA_ERROR,
-            details: errors["ErrorDetails"].BUFFER_ADD_CODEC_ERROR,
-            fatal: false,
-            err: err,
-            mimeType: mimeType
-          });
-        }
-      }
-    }
-
-    this.hls.trigger(events["default"].BUFFER_CREATED, {
-      tracks: this.tracks
-    });
-  };
-
-  _proto.onBufferAppending = function onBufferAppending(data) {
-    if (!this._needsFlush) {
-      if (!this.segments) {
-        this.segments = [data];
-      } else {
-        this.segments.push(data);
-      }
-
-      this.doAppending();
-    }
-  } // on BUFFER_EOS mark matching sourcebuffer(s) as ended and trigger checkEos()
-  // an undefined data.type will mark all buffers as EOS.
-  ;
-
-  _proto.onBufferEos = function onBufferEos(data) {
-    for (var type in this.sourceBuffer) {
-      if (!data.type || data.type === type) {
-        var sb = this.sourceBuffer[type];
-
-        if (sb && !sb.ended) {
-          sb.ended = true;
-          logger["logger"].log(type + " sourceBuffer now EOS");
-        }
-      }
-    }
-
-    this.checkEos();
-  } // if all source buffers are marked as ended, signal endOfStream() to MediaSource.
-  ;
-
-  _proto.checkEos = function checkEos() {
-    var sourceBuffer = this.sourceBuffer,
-        mediaSource = this.mediaSource;
-
-    if (!mediaSource || mediaSource.readyState !== 'open') {
-      this._needsEos = false;
-      return;
-    }
-
-    for (var type in sourceBuffer) {
-      var sb = sourceBuffer[type];
-      if (!sb) continue;
-
-      if (!sb.ended) {
-        return;
-      }
-
-      if (sb.updating) {
-        this._needsEos = true;
-        return;
-      }
-    }
-
-    logger["logger"].log('all media data are available, signal endOfStream() to MediaSource and stop loading fragment'); // Notify the media element that it now has all of the media data
-
-    try {
-      mediaSource.endOfStream();
-    } catch (e) {
-      logger["logger"].warn('exception while calling mediaSource.endOfStream()');
-    }
-
-    this._needsEos = false;
-  };
-
-  _proto.onBufferFlushing = function onBufferFlushing(data) {
-    if (data.type) {
-      this.flushRange.push({
-        start: data.startOffset,
-        end: data.endOffset,
-        type: data.type
-      });
-    } else {
-      this.flushRange.push({
-        start: data.startOffset,
-        end: data.endOffset,
-        type: 'video'
-      });
-      this.flushRange.push({
-        start: data.startOffset,
-        end: data.endOffset,
-        type: 'audio'
-      });
-    } // attempt flush immediately
-
-
-    this.flushBufferCounter = 0;
-    this.doFlush();
-  };
-
-  _proto.flushLiveBackBuffer = function flushLiveBackBuffer() {
-    // clear back buffer for live only
-    if (!this._live) {
-      return;
-    }
-
-    var liveBackBufferLength = this.config.liveBackBufferLength;
-
-    if (!isFinite(liveBackBufferLength) || liveBackBufferLength < 0) {
-      return;
-    }
-
-    if (!this.media) {
-      logger["logger"].error('flushLiveBackBuffer called without attaching media');
-      return;
-    }
-
-    var currentTime = this.media.currentTime;
-    var sourceBuffer = this.sourceBuffer;
-    var bufferTypes = Object.keys(sourceBuffer);
-    var targetBackBufferPosition = currentTime - Math.max(liveBackBufferLength, this._levelTargetDuration);
-
-    for (var index = bufferTypes.length - 1; index >= 0; index--) {
-      var bufferType = bufferTypes[index];
-      var sb = sourceBuffer[bufferType];
-
-      if (sb) {
-        var buffered = buffer_helper_BufferHelper.getBuffered(sb); // when target buffer start exceeds actual buffer start
-
-        if (buffered.length > 0 && targetBackBufferPosition > buffered.start(0)) {
-          // remove buffer up until current time minus minimum back buffer length (removing buffer too close to current
-          // time will lead to playback freezing)
-          // credits for level target duration - https://github.com/videojs/http-streaming/blob/3132933b6aa99ddefab29c10447624efd6fd6e52/src/segment-loader.js#L91
-          if (this.removeBufferRange(bufferType, sb, 0, targetBackBufferPosition)) {
-            this.hls.trigger(events["default"].LIVE_BACK_BUFFER_REACHED, {
-              bufferEnd: targetBackBufferPosition
-            });
-          }
-        }
-      }
-    }
-  };
-
-  _proto.onLevelUpdated = function onLevelUpdated(_ref) {
-    var details = _ref.details;
-
-    if (details.fragments.length > 0) {
-      this._levelDuration = details.totalduration + details.fragments[0].start;
-      this._levelTargetDuration = details.averagetargetduration || details.targetduration || 10;
-      this._live = details.live;
-      this.updateMediaElementDuration();
-
-      if (this.config.liveDurationInfinity) {
-        this.updateSeekableRange(details);
-      }
-    }
-  }
-  /**
-   * Update Media Source duration to current level duration or override to Infinity if configuration parameter
-   * 'liveDurationInfinity` is set to `true`
-   * More details: https://github.com/video-dev/hls.js/issues/355
-   */
-  ;
-
-  _proto.updateMediaElementDuration = function updateMediaElementDuration() {
-    var config = this.config;
-    var duration;
-
-    if (this._levelDuration === null || !this.media || !this.mediaSource || !this.sourceBuffer || this.media.readyState === 0 || this.mediaSource.readyState !== 'open') {
-      return;
-    }
-
-    for (var type in this.sourceBuffer) {
-      var sb = this.sourceBuffer[type];
-
-      if (sb && sb.updating === true) {
-        // can't set duration whilst a buffer is updating
-        return;
-      }
-    }
-
-    duration = this.media.duration; // initialise to the value that the media source is reporting
-
-    if (this._msDuration === null) {
-      this._msDuration = this.mediaSource.duration;
-    }
-
-    if (this._live === true && config.liveDurationInfinity) {
-      // Override duration to Infinity
-      logger["logger"].log('Media Source duration is set to Infinity');
-      this._msDuration = this.mediaSource.duration = Infinity;
-    } else if (this._levelDuration > this._msDuration && this._levelDuration > duration || !Object(number["isFiniteNumber"])(duration)) {
-      // levelDuration was the last value we set.
-      // not using mediaSource.duration as the browser may tweak this value
-      // only update Media Source duration if its value increase, this is to avoid
-      // flushing already buffered portion when switching between quality level
-      logger["logger"].log("Updating Media Source duration to " + this._levelDuration.toFixed(3));
-      this._msDuration = this.mediaSource.duration = this._levelDuration;
-    }
-  };
-
-  _proto.updateSeekableRange = function updateSeekableRange(levelDetails) {
-    var mediaSource = this.mediaSource;
-    var fragments = levelDetails.fragments;
-    var len = fragments.length;
-
-    if (len && mediaSource !== null && mediaSource !== void 0 && mediaSource.setLiveSeekableRange) {
-      var _fragments$;
-
-      var start = (_fragments$ = fragments[0]) === null || _fragments$ === void 0 ? void 0 : _fragments$.start;
-      var end = fragments[len - 1].start + fragments[len - 1].duration;
-      mediaSource.setLiveSeekableRange(start, end);
-    }
-  };
-
-  _proto.doFlush = function doFlush() {
-    // loop through all buffer ranges to flush
-    while (this.flushRange.length) {
-      var range = this.flushRange[0]; // flushBuffer will abort any buffer append in progress and flush Audio/Video Buffer
-
-      if (this.flushBuffer(range.start, range.end, range.type)) {
-        // range flushed, remove from flush array
-        this.flushRange.shift();
-        this.flushBufferCounter = 0;
-      } else {
-        this._needsFlush = true; // avoid looping, wait for SB update end to retrigger a flush
-
-        return;
-      }
-    }
-
-    if (this.flushRange.length === 0) {
-      // everything flushed
-      this._needsFlush = false; // let's recompute this.appended, which is used to avoid flush looping
-
-      var appended = 0;
-      var sourceBuffer = this.sourceBuffer;
-
-      for (var type in sourceBuffer) {
-        var sb = sourceBuffer[type];
-
-        if (sb) {
-          appended += buffer_helper_BufferHelper.getBuffered(sb).length;
-        }
-      }
-
-      this.appended = appended;
-      this.hls.trigger(events["default"].BUFFER_FLUSHED);
-    }
-  };
-
-  _proto.doAppending = function doAppending() {
-    var config = this.config,
-        hls = this.hls,
-        segments = this.segments,
-        sourceBuffer = this.sourceBuffer;
-
-    if (!Object.keys(sourceBuffer).length) {
-      // early exit if no source buffers have been initialized yet
-      return;
-    }
-
-    if (!this.media || this.media.error) {
-      this.segments = [];
-      logger["logger"].error('trying to append although a media error occured, flush segment and abort');
-      return;
-    }
-
-    if (this.appending) {
-      // logger.log(`sb appending in progress`);
-      return;
-    }
-
-    var segment = segments.shift();
-
-    if (!segment) {
-      // handle undefined shift
-      return;
-    }
-
-    try {
-      var sb = sourceBuffer[segment.type];
-
-      if (!sb) {
-        // in case we don't have any source buffer matching with this segment type,
-        // it means that Mediasource fails to create sourcebuffer
-        // discard this segment, and trigger update end
-        this._onSBUpdateEnd();
-
-        return;
-      }
-
-      if (sb.updating) {
-        // if we are still updating the source buffer from the last segment, place this back at the front of the queue
-        segments.unshift(segment);
-        return;
-      } // reset sourceBuffer ended flag before appending segment
-
-
-      sb.ended = false; // logger.log(`appending ${segment.content} ${type} SB, size:${segment.data.length}, ${segment.parent}`);
-
-      this.parent = segment.parent;
-      sb.appendBuffer(segment.data);
-      this.appendError = 0;
-      this.appended++;
-      this.appending = true;
-    } catch (err) {
-      // in case any error occured while appending, put back segment in segments table
-      logger["logger"].error("error while trying to append buffer:" + err.message);
-      segments.unshift(segment);
-      var event = {
-        type: errors["ErrorTypes"].MEDIA_ERROR,
-        parent: segment.parent,
-        details: '',
-        fatal: false
-      };
-
-      if (err.code === 22) {
-        // QuotaExceededError: http://www.w3.org/TR/html5/infrastructure.html#quotaexceedederror
-        // let's stop appending any segments, and report BUFFER_FULL_ERROR error
-        this.segments = [];
-        event.details = errors["ErrorDetails"].BUFFER_FULL_ERROR;
-      } else {
-        this.appendError++;
-        event.details = errors["ErrorDetails"].BUFFER_APPEND_ERROR;
-        /* with UHD content, we could get loop of quota exceeded error until
-          browser is able to evict some data from sourcebuffer. retrying help recovering this
-        */
-
-        if (this.appendError > config.appendErrorMaxRetry) {
-          logger["logger"].log("fail " + config.appendErrorMaxRetry + " times to append segment in sourceBuffer");
-          this.segments = [];
-          event.fatal = true;
-        }
-      }
-
-      hls.trigger(events["default"].ERROR, event);
-    }
-  }
-  /*
-    flush specified buffered range,
-    return true once range has been flushed.
-    as sourceBuffer.remove() is asynchronous, flushBuffer will be retriggered on sourceBuffer update end
-  */
-  ;
-
-  _proto.flushBuffer = function flushBuffer(startOffset, endOffset, sbType) {
-    var sourceBuffer = this.sourceBuffer; // exit if no sourceBuffers are initialized
-
-    if (!Object.keys(sourceBuffer).length) {
-      return true;
-    }
-
-    var currentTime = 'null';
-
-    if (this.media) {
-      currentTime = this.media.currentTime.toFixed(3);
-    }
-
-    logger["logger"].log("flushBuffer,pos/start/end: " + currentTime + "/" + startOffset + "/" + endOffset); // safeguard to avoid infinite looping : don't try to flush more than the nb of appended segments
-
-    if (this.flushBufferCounter >= this.appended) {
-      logger["logger"].warn('abort flushing too many retries');
-      return true;
-    }
-
-    var sb = sourceBuffer[sbType]; // we are going to flush buffer, mark source buffer as 'not ended'
-
-    if (sb) {
-      sb.ended = false;
-
-      if (!sb.updating) {
-        if (this.removeBufferRange(sbType, sb, startOffset, endOffset)) {
-          this.flushBufferCounter++;
-          return false;
-        }
-      } else {
-        logger["logger"].warn('cannot flush, sb updating in progress');
-        return false;
-      }
-    }
-
-    logger["logger"].log('buffer flushed'); // everything flushed !
-
-    return true;
-  }
-  /**
-   * Removes first buffered range from provided source buffer that lies within given start and end offsets.
-   *
-   * @param {string} type Type of the source buffer, logging purposes only.
-   * @param {SourceBuffer} sb Target SourceBuffer instance.
-   * @param {number} startOffset
-   * @param {number} endOffset
-   *
-   * @returns {boolean} True when source buffer remove requested.
-   */
-  ;
-
-  _proto.removeBufferRange = function removeBufferRange(type, sb, startOffset, endOffset) {
-    try {
-      var buffered = buffer_helper_BufferHelper.getBuffered(sb);
-
-      for (var i = 0; i < buffered.length; i++) {
-        var bufStart = buffered.start(i);
-        var bufEnd = buffered.end(i);
-        var removeStart = Math.max(bufStart, startOffset);
-        var removeEnd = Math.min(bufEnd, endOffset);
-        /* sometimes sourcebuffer.remove() does not flush
-          the exact expected time range.
-          to avoid rounding issues/infinite loop,
-          only flush buffer range of length greater than 500ms.
-        */
-
-        if (Math.min(removeEnd, bufEnd) - removeStart > 0.5) {
-          var currentTime = 'null';
-
-          if (this.media) {
-            currentTime = this.media.currentTime.toString();
-          }
-
-          logger["logger"].log("sb remove " + type + " [" + removeStart + "," + removeEnd + "], of [" + bufStart + "," + bufEnd + "], pos:" + currentTime);
-          sb.remove(removeStart, removeEnd);
-          return true;
-        }
-      }
-    } catch (error) {
-      logger["logger"].warn('removeBufferRange failed', error);
-    }
-
-    return false;
-  };
-
-  return BufferController;
-}(event_handler);
-
-/* harmony default export */ var buffer_controller = (buffer_controller_BufferController);
-// CONCATENATED MODULE: ./src/controller/cap-level-controller.js
-function cap_level_controller_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
-
-function cap_level_controller_createClass(Constructor, protoProps, staticProps) { if (protoProps) cap_level_controller_defineProperties(Constructor.prototype, protoProps); if (staticProps) cap_level_controller_defineProperties(Constructor, staticProps); return Constructor; }
-
-function cap_level_controller_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
-
-/*
- * cap stream level to media size dimension controller
-*/
-
-
-
-var cap_level_controller_CapLevelController = /*#__PURE__*/function (_EventHandler) {
-  cap_level_controller_inheritsLoose(CapLevelController, _EventHandler);
-
-  function CapLevelController(hls) {
-    var _this;
-
-    _this = _EventHandler.call(this, hls, events["default"].FPS_DROP_LEVEL_CAPPING, events["default"].MEDIA_ATTACHING, events["default"].MANIFEST_PARSED, events["default"].LEVELS_UPDATED, events["default"].BUFFER_CODECS, events["default"].MEDIA_DETACHING) || this;
-    _this.autoLevelCapping = Number.POSITIVE_INFINITY;
-    _this.firstLevel = null;
-    _this.levels = [];
-    _this.media = null;
-    _this.restrictedLevels = [];
-    _this.timer = null;
-    _this.clientRect = null;
-    return _this;
-  }
-
-  var _proto = CapLevelController.prototype;
-
-  _proto.destroy = function destroy() {
-    if (this.hls.config.capLevelToPlayerSize) {
-      this.media = null;
-      this.clientRect = null;
-      this.stopCapping();
-    }
-  };
-
-  _proto.onFpsDropLevelCapping = function onFpsDropLevelCapping(data) {
-    // Don't add a restricted level more than once
-    if (CapLevelController.isLevelAllowed(data.droppedLevel, this.restrictedLevels)) {
-      this.restrictedLevels.push(data.droppedLevel);
-    }
-  };
-
-  _proto.onMediaAttaching = function onMediaAttaching(data) {
-    this.media = data.media instanceof window.HTMLVideoElement ? data.media : null;
-  };
-
-  _proto.onManifestParsed = function onManifestParsed(data) {
-    var hls = this.hls;
-    this.restrictedLevels = [];
-    this.levels = data.levels;
-    this.firstLevel = data.firstLevel;
-
-    if (hls.config.capLevelToPlayerSize && data.video) {
-      // Start capping immediately if the manifest has signaled video codecs
-      this.startCapping();
-    }
-  } // Only activate capping when playing a video stream; otherwise, multi-bitrate audio-only streams will be restricted
-  // to the first level
-  ;
-
-  _proto.onBufferCodecs = function onBufferCodecs(data) {
-    var hls = this.hls;
-
-    if (hls.config.capLevelToPlayerSize && data.video) {
-      // If the manifest did not signal a video codec capping has been deferred until we're certain video is present
-      this.startCapping();
-    }
-  };
-
-  _proto.onLevelsUpdated = function onLevelsUpdated(data) {
-    this.levels = data.levels;
-  };
-
-  _proto.onMediaDetaching = function onMediaDetaching() {
-    this.stopCapping();
-  };
-
-  _proto.detectPlayerSize = function detectPlayerSize() {
-    if (this.media) {
-      var levelsLength = this.levels ? this.levels.length : 0;
-
-      if (levelsLength) {
-        var hls = this.hls;
-        hls.autoLevelCapping = this.getMaxLevel(levelsLength - 1);
-
-        if (hls.autoLevelCapping > this.autoLevelCapping) {
-          // if auto level capping has a higher value for the previous one, flush the buffer using nextLevelSwitch
-          // usually happen when the user go to the fullscreen mode.
-          hls.streamController.nextLevelSwitch();
-        }
-
-        this.autoLevelCapping = hls.autoLevelCapping;
-      }
-    }
-  }
-  /*
-  * returns level should be the one with the dimensions equal or greater than the media (player) dimensions (so the video will be downscaled)
-  */
-  ;
-
-  _proto.getMaxLevel = function getMaxLevel(capLevelIndex) {
-    var _this2 = this;
-
-    if (!this.levels) {
-      return -1;
-    }
-
-    var validLevels = this.levels.filter(function (level, index) {
-      return CapLevelController.isLevelAllowed(index, _this2.restrictedLevels) && index <= capLevelIndex;
-    });
-    this.clientRect = null;
-    return CapLevelController.getMaxLevelByMediaSize(validLevels, this.mediaWidth, this.mediaHeight);
-  };
-
-  _proto.startCapping = function startCapping() {
-    if (this.timer) {
-      // Don't reset capping if started twice; this can happen if the manifest signals a video codec
-      return;
-    }
-
-    this.autoLevelCapping = Number.POSITIVE_INFINITY;
-    this.hls.firstLevel = this.getMaxLevel(this.firstLevel);
-    clearInterval(this.timer);
-    this.timer = setInterval(this.detectPlayerSize.bind(this), 1000);
-    this.detectPlayerSize();
-  };
-
-  _proto.stopCapping = function stopCapping() {
-    this.restrictedLevels = [];
-    this.firstLevel = null;
-    this.autoLevelCapping = Number.POSITIVE_INFINITY;
-
-    if (this.timer) {
-      this.timer = clearInterval(this.timer);
-      this.timer = null;
-    }
-  };
-
-  _proto.getDimensions = function getDimensions() {
-    if (this.clientRect) {
-      return this.clientRect;
-    }
-
-    var media = this.media;
-    var boundsRect = {
-      width: 0,
-      height: 0
-    };
-
-    if (media) {
-      var clientRect = media.getBoundingClientRect();
-      boundsRect.width = clientRect.width;
-      boundsRect.height = clientRect.height;
-
-      if (!boundsRect.width && !boundsRect.height) {
-        // When the media element has no width or height (equivalent to not being in the DOM),
-        // then use its width and height attributes (media.width, media.height)
-        boundsRect.width = clientRect.right - clientRect.left || media.width || 0;
-        boundsRect.height = clientRect.bottom - clientRect.top || media.height || 0;
-      }
-    }
-
-    this.clientRect = boundsRect;
-    return boundsRect;
-  };
-
-  CapLevelController.isLevelAllowed = function isLevelAllowed(level, restrictedLevels) {
-    if (restrictedLevels === void 0) {
-      restrictedLevels = [];
-    }
-
-    return restrictedLevels.indexOf(level) === -1;
-  };
-
-  CapLevelController.getMaxLevelByMediaSize = function getMaxLevelByMediaSize(levels, width, height) {
-    if (!levels || levels && !levels.length) {
-      return -1;
-    } // Levels can have the same dimensions but differing bandwidths - since levels are ordered, we can look to the next
-    // to determine whether we've chosen the greatest bandwidth for the media's dimensions
-
-
-    var atGreatestBandiwdth = function atGreatestBandiwdth(curLevel, nextLevel) {
-      if (!nextLevel) {
-        return true;
-      }
-
-      return curLevel.width !== nextLevel.width || curLevel.height !== nextLevel.height;
-    }; // If we run through the loop without breaking, the media's dimensions are greater than every level, so default to
-    // the max level
-
-
-    var maxLevelIndex = levels.length - 1;
-
-    for (var i = 0; i < levels.length; i += 1) {
-      var level = levels[i];
-
-      if ((level.width >= width || level.height >= height) && atGreatestBandiwdth(level, levels[i + 1])) {
-        maxLevelIndex = i;
-        break;
-      }
-    }
-
-    return maxLevelIndex;
-  };
-
-  cap_level_controller_createClass(CapLevelController, [{
-    key: "mediaWidth",
-    get: function get() {
-      return this.getDimensions().width * CapLevelController.contentScaleFactor;
-    }
-  }, {
-    key: "mediaHeight",
-    get: function get() {
-      return this.getDimensions().height * CapLevelController.contentScaleFactor;
-    }
-  }], [{
-    key: "contentScaleFactor",
-    get: function get() {
-      var pixelRatio = 1;
-
-      try {
-        pixelRatio = window.devicePixelRatio;
-      } catch (e) {}
-
-      return pixelRatio;
-    }
-  }]);
-
-  return CapLevelController;
-}(event_handler);
-
-/* harmony default export */ var cap_level_controller = (cap_level_controller_CapLevelController);
-// CONCATENATED MODULE: ./src/controller/fps-controller.js
-function fps_controller_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
-
-/*
- * FPS Controller
-*/
-
-
-
-var fps_controller_window = window,
-    fps_controller_performance = fps_controller_window.performance;
-
-var fps_controller_FPSController = /*#__PURE__*/function (_EventHandler) {
-  fps_controller_inheritsLoose(FPSController, _EventHandler);
-
-  function FPSController(hls) {
-    return _EventHandler.call(this, hls, events["default"].MEDIA_ATTACHING) || this;
-  }
-
-  var _proto = FPSController.prototype;
-
-  _proto.destroy = function destroy() {
-    if (this.timer) {
-      clearInterval(this.timer);
-    }
-
-    this.isVideoPlaybackQualityAvailable = false;
-  };
-
-  _proto.onMediaAttaching = function onMediaAttaching(data) {
-    var config = this.hls.config;
-
-    if (config.capLevelOnFPSDrop) {
-      var video = this.video = data.media instanceof window.HTMLVideoElement ? data.media : null;
-
-      if (typeof video.getVideoPlaybackQuality === 'function') {
-        this.isVideoPlaybackQualityAvailable = true;
-      }
-
-      clearInterval(this.timer);
-      this.timer = setInterval(this.checkFPSInterval.bind(this), config.fpsDroppedMonitoringPeriod);
-    }
-  };
-
-  _proto.checkFPS = function checkFPS(video, decodedFrames, droppedFrames) {
-    var currentTime = fps_controller_performance.now();
-
-    if (decodedFrames) {
-      if (this.lastTime) {
-        var currentPeriod = currentTime - this.lastTime,
-            currentDropped = droppedFrames - this.lastDroppedFrames,
-            currentDecoded = decodedFrames - this.lastDecodedFrames,
-            droppedFPS = 1000 * currentDropped / currentPeriod,
-            hls = this.hls;
-        hls.trigger(events["default"].FPS_DROP, {
-          currentDropped: currentDropped,
-          currentDecoded: currentDecoded,
-          totalDroppedFrames: droppedFrames
-        });
-
-        if (droppedFPS > 0) {
-          // logger.log('checkFPS : droppedFPS/decodedFPS:' + droppedFPS/(1000 * currentDecoded / currentPeriod));
-          if (currentDropped > hls.config.fpsDroppedMonitoringThreshold * currentDecoded) {
-            var currentLevel = hls.currentLevel;
-            logger["logger"].warn('drop FPS ratio greater than max allowed value for currentLevel: ' + currentLevel);
-
-            if (currentLevel > 0 && (hls.autoLevelCapping === -1 || hls.autoLevelCapping >= currentLevel)) {
-              currentLevel = currentLevel - 1;
-              hls.trigger(events["default"].FPS_DROP_LEVEL_CAPPING, {
-                level: currentLevel,
-                droppedLevel: hls.currentLevel
-              });
-              hls.autoLevelCapping = currentLevel;
-              hls.streamController.nextLevelSwitch();
-            }
-          }
-        }
-      }
-
-      this.lastTime = currentTime;
-      this.lastDroppedFrames = droppedFrames;
-      this.lastDecodedFrames = decodedFrames;
-    }
-  };
-
-  _proto.checkFPSInterval = function checkFPSInterval() {
-    var video = this.video;
-
-    if (video) {
-      if (this.isVideoPlaybackQualityAvailable) {
-        var videoPlaybackQuality = video.getVideoPlaybackQuality();
-        this.checkFPS(video, videoPlaybackQuality.totalVideoFrames, videoPlaybackQuality.droppedVideoFrames);
-      } else {
-        this.checkFPS(video, video.webkitDecodedFrameCount, video.webkitDroppedFrameCount);
-      }
-    }
-  };
-
-  return FPSController;
-}(event_handler);
-
-/* harmony default export */ var fps_controller = (fps_controller_FPSController);
-// CONCATENATED MODULE: ./src/utils/xhr-loader.js
-/**
- * XHR based logger
-*/
-
-
-var xhr_loader_XhrLoader = /*#__PURE__*/function () {
-  function XhrLoader(config) {
-    if (config && config.xhrSetup) {
-      this.xhrSetup = config.xhrSetup;
-    }
-  }
-
-  var _proto = XhrLoader.prototype;
-
-  _proto.destroy = function destroy() {
-    this.abort();
-    this.loader = null;
-  };
-
-  _proto.abort = function abort() {
-    var loader = this.loader;
-
-    if (loader && loader.readyState !== 4) {
-      this.stats.aborted = true;
-      loader.abort();
-    }
-
-    window.clearTimeout(this.requestTimeout);
-    this.requestTimeout = null;
-    window.clearTimeout(this.retryTimeout);
-    this.retryTimeout = null;
-  };
-
-  _proto.load = function load(context, config, callbacks) {
-    this.context = context;
-    this.config = config;
-    this.callbacks = callbacks;
-    this.stats = {
-      trequest: window.performance.now(),
-      retry: 0
-    };
-    this.retryDelay = config.retryDelay;
-    this.loadInternal();
-  };
-
-  _proto.loadInternal = function loadInternal() {
-    var xhr,
-        context = this.context;
-    xhr = this.loader = new window.XMLHttpRequest();
-    var stats = this.stats;
-    stats.tfirst = 0;
-    stats.loaded = 0;
-    var xhrSetup = this.xhrSetup;
-
-    try {
-      if (xhrSetup) {
-        try {
-          xhrSetup(xhr, context.url);
-        } catch (e) {
-          // fix xhrSetup: (xhr, url) => {xhr.setRequestHeader("Content-Language", "test");}
-          // not working, as xhr.setRequestHeader expects xhr.readyState === OPEN
-          xhr.open('GET', context.url, true);
-          xhrSetup(xhr, context.url);
-        }
-      }
-
-      if (!xhr.readyState) {
-        xhr.open('GET', context.url, true);
-      }
-    } catch (e) {
-      // IE11 throws an exception on xhr.open if attempting to access an HTTP resource over HTTPS
-      this.callbacks.onError({
-        code: xhr.status,
-        text: e.message
-      }, context, xhr);
-      return;
-    }
-
-    if (context.rangeEnd) {
-      xhr.setRequestHeader('Range', 'bytes=' + context.rangeStart + '-' + (context.rangeEnd - 1));
-    }
-
-    xhr.onreadystatechange = this.readystatechange.bind(this);
-    xhr.onprogress = this.loadprogress.bind(this);
-    xhr.responseType = context.responseType; // setup timeout before we perform request
-
-    this.requestTimeout = window.setTimeout(this.loadtimeout.bind(this), this.config.timeout);
-    xhr.send();
-  };
-
-  _proto.readystatechange = function readystatechange(event) {
-    var xhr = this.loader,
-        readyState = xhr.readyState,
-        stats = this.stats,
-        context = this.context,
-        config = this.config; // don't proceed if xhr has been aborted
-
-    if (stats.aborted) {
-      return;
-    } // >= HEADERS_RECEIVED
-
-
-    if (readyState >= 2) {
-      // clear xhr timeout and rearm it if readyState less than 4
-      window.clearTimeout(this.requestTimeout);
-
-      if (stats.tfirst === 0) {
-        stats.tfirst = Math.max(window.performance.now(), stats.trequest);
-      }
-
-      if (readyState === 4) {
-        var status = xhr.status; // http status between 200 to 299 are all successful
-
-        if (status >= 200 && status < 300) {
-          stats.tload = Math.max(stats.tfirst, window.performance.now());
-          var data, len;
-
-          if (context.responseType === 'arraybuffer') {
-            data = xhr.response;
-            len = data.byteLength;
-          } else {
-            data = xhr.responseText;
-            len = data.length;
-          }
-
-          stats.loaded = stats.total = len;
-          var response = {
-            url: xhr.responseURL,
-            data: data
-          };
-          this.callbacks.onSuccess(response, stats, context, xhr);
-        } else {
-          // if max nb of retries reached or if http status between 400 and 499 (such error cannot be recovered, retrying is useless), return error
-          if (stats.retry >= config.maxRetry || status >= 400 && status < 499) {
-            logger["logger"].error(status + " while loading " + context.url);
-            this.callbacks.onError({
-              code: status,
-              text: xhr.statusText
-            }, context, xhr);
-          } else {
-            // retry
-            logger["logger"].warn(status + " while loading " + context.url + ", retrying in " + this.retryDelay + "..."); // aborts and resets internal state
-
-            this.destroy(); // schedule retry
-
-            this.retryTimeout = window.setTimeout(this.loadInternal.bind(this), this.retryDelay); // set exponential backoff
-
-            this.retryDelay = Math.min(2 * this.retryDelay, config.maxRetryDelay);
-            stats.retry++;
-          }
-        }
-      } else {
-        // readyState >= 2 AND readyState !==4 (readyState = HEADERS_RECEIVED || LOADING) rearm timeout as xhr not finished yet
-        this.requestTimeout = window.setTimeout(this.loadtimeout.bind(this), config.timeout);
-      }
-    }
-  };
-
-  _proto.loadtimeout = function loadtimeout() {
-    logger["logger"].warn("timeout while loading " + this.context.url);
-    this.callbacks.onTimeout(this.stats, this.context, null);
-  };
-
-  _proto.loadprogress = function loadprogress(event) {
-    var xhr = event.currentTarget,
-        stats = this.stats;
-    stats.loaded = event.loaded;
-
-    if (event.lengthComputable) {
-      stats.total = event.total;
-    }
-
-    var onProgress = this.callbacks.onProgress;
-
-    if (onProgress) {
-      // third arg is to provide on progress data
-      onProgress(stats, this.context, null, xhr);
-    }
-  };
-
-  return XhrLoader;
-}();
-
-/* harmony default export */ var xhr_loader = (xhr_loader_XhrLoader);
-// CONCATENATED MODULE: ./src/controller/audio-track-controller.js
-function audio_track_controller_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
-
-function audio_track_controller_createClass(Constructor, protoProps, staticProps) { if (protoProps) audio_track_controller_defineProperties(Constructor.prototype, protoProps); if (staticProps) audio_track_controller_defineProperties(Constructor, staticProps); return Constructor; }
-
-function audio_track_controller_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
-
-
-
-
-
-/**
- * @class AudioTrackController
- * @implements {EventHandler}
- *
- * Handles main manifest and audio-track metadata loaded,
- * owns and exposes the selectable audio-tracks data-models.
- *
- * Exposes internal interface to select available audio-tracks.
- *
- * Handles errors on loading audio-track playlists. Manages fallback mechanism
- * with redundants tracks (group-IDs).
- *
- * Handles level-loading and group-ID switches for video (fallback on video levels),
- * and eventually adapts the audio-track group-ID to match.
- *
- * @fires AUDIO_TRACK_LOADING
- * @fires AUDIO_TRACK_SWITCHING
- * @fires AUDIO_TRACKS_UPDATED
- * @fires ERROR
- *
- */
-
-var audio_track_controller_AudioTrackController = /*#__PURE__*/function (_TaskLoop) {
-  audio_track_controller_inheritsLoose(AudioTrackController, _TaskLoop);
-
-  function AudioTrackController(hls) {
-    var _this;
-
-    _this = _TaskLoop.call(this, hls, events["default"].MANIFEST_LOADING, events["default"].MANIFEST_PARSED, events["default"].AUDIO_TRACK_LOADED, events["default"].AUDIO_TRACK_SWITCHED, events["default"].LEVEL_LOADED, events["default"].ERROR) || this;
-    /**
-     * @private
-     * Currently selected index in `tracks`
-     * @member {number} trackId
-     */
-
-    _this._trackId = -1;
-    /**
-     * @private
-     * If should select tracks according to default track attribute
-     * @member {boolean} _selectDefaultTrack
-     */
-
-    _this._selectDefaultTrack = true;
-    /**
-     * @public
-     * All tracks available
-     * @member {AudioTrack[]}
-     */
-
-    _this.tracks = [];
-    /**
-     * @public
-     * List of blacklisted audio track IDs (that have caused failure)
-     * @member {number[]}
-     */
-
-    _this.trackIdBlacklist = Object.create(null);
-    /**
-     * @public
-     * The currently running group ID for audio
-     * (we grab this on manifest-parsed and new level-loaded)
-     * @member {string}
-     */
-
-    _this.audioGroupId = null;
-    return _this;
-  }
-  /**
-   * Reset audio tracks on new manifest loading.
-   */
-
-
-  var _proto = AudioTrackController.prototype;
-
-  _proto.onManifestLoading = function onManifestLoading() {
-    this.tracks = [];
-    this._trackId = -1;
-    this._selectDefaultTrack = true;
-    this.audioGroupId = null;
-  }
-  /**
-   * Store tracks data from manifest parsed data.
-   *
-   * Trigger AUDIO_TRACKS_UPDATED event.
-   *
-   * @param {*} data
-   */
-  ;
-
-  _proto.onManifestParsed = function onManifestParsed(data) {
-    var tracks = this.tracks = data.audioTracks || [];
-    this.hls.trigger(events["default"].AUDIO_TRACKS_UPDATED, {
-      audioTracks: tracks
-    });
-
-    this._selectAudioGroup(this.hls.nextLoadLevel);
-  }
-  /**
-   * Store track details of loaded track in our data-model.
-   *
-   * Set-up metadata update interval task for live-mode streams.
-   *
-   * @param {*} data
-   */
-  ;
-
-  _proto.onAudioTrackLoaded = function onAudioTrackLoaded(data) {
-    if (data.id >= this.tracks.length) {
-      logger["logger"].warn('Invalid audio track id:', data.id);
-      return;
-    }
-
-    logger["logger"].log("audioTrack " + data.id + " loaded");
-    this.tracks[data.id].details = data.details; // check if current playlist is a live playlist
-    // and if we have already our reload interval setup
-
-    if (data.details.live && !this.hasInterval()) {
-      // if live playlist we will have to reload it periodically
-      // set reload period to playlist target duration
-      var updatePeriodMs = data.details.targetduration * 1000;
-      this.setInterval(updatePeriodMs);
-    }
-
-    if (!data.details.live && this.hasInterval()) {
-      // playlist is not live and timer is scheduled: cancel it
-      this.clearInterval();
-    }
-  }
-  /**
-   * Update the internal group ID to any audio-track we may have set manually
-   * or because of a failure-handling fallback.
-   *
-   * Quality-levels should update to that group ID in this case.
-   *
-   * @param {*} data
-   */
-  ;
-
-  _proto.onAudioTrackSwitched = function onAudioTrackSwitched(data) {
-    var audioGroupId = this.tracks[data.id].groupId;
-
-    if (audioGroupId && this.audioGroupId !== audioGroupId) {
-      this.audioGroupId = audioGroupId;
-    }
-  }
-  /**
-   * When a level gets loaded, if it has redundant audioGroupIds (in the same ordinality as it's redundant URLs)
-   * we are setting our audio-group ID internally to the one set, if it is different from the group ID currently set.
-   *
-   * If group-ID got update, we re-select the appropriate audio-track with this group-ID matching the currently
-   * selected one (based on NAME property).
-   *
-   * @param {*} data
-   */
-  ;
-
-  _proto.onLevelLoaded = function onLevelLoaded(data) {
-    this._selectAudioGroup(data.level);
-  }
-  /**
-   * Handle network errors loading audio track manifests
-   * and also pausing on any netwok errors.
-   *
-   * @param {ErrorEventData} data
-   */
-  ;
-
-  _proto.onError = function onError(data) {
-    // Only handle network errors
-    if (data.type !== errors["ErrorTypes"].NETWORK_ERROR) {
-      return;
-    } // If fatal network error, cancel update task
-
-
-    if (data.fatal) {
-      this.clearInterval();
-    } // If not an audio-track loading error don't handle further
-
-
-    if (data.details !== errors["ErrorDetails"].AUDIO_TRACK_LOAD_ERROR) {
-      return;
-    }
-
-    logger["logger"].warn('Network failure on audio-track id:', data.context.id);
-
-    this._handleLoadError();
-  }
-  /**
-   * @type {AudioTrack[]} Audio-track list we own
-   */
-  ;
-
-  /**
-   * @private
-   * @param {number} newId
-   */
-  _proto._setAudioTrack = function _setAudioTrack(newId) {
-    // noop on same audio track id as already set
-    if (this._trackId === newId && this.tracks[this._trackId].details) {
-      logger["logger"].debug('Same id as current audio-track passed, and track details available -> no-op');
-      return;
-    } // check if level idx is valid
-
-
-    if (newId < 0 || newId >= this.tracks.length) {
-      logger["logger"].warn('Invalid id passed to audio-track controller');
-      return;
-    }
-
-    var audioTrack = this.tracks[newId];
-    logger["logger"].log("Now switching to audio-track index " + newId); // stopping live reloading timer if any
-
-    this.clearInterval();
-    this._trackId = newId;
-    var url = audioTrack.url,
-        type = audioTrack.type,
-        id = audioTrack.id;
-    this.hls.trigger(events["default"].AUDIO_TRACK_SWITCHING, {
-      id: id,
-      type: type,
-      url: url
-    });
-
-    this._loadTrackDetailsIfNeeded(audioTrack);
-  }
-  /**
-   * @override
-   */
-  ;
-
-  _proto.doTick = function doTick() {
-    this._updateTrack(this._trackId);
-  }
-  /**
-   * @param levelId
-   * @private
-   */
-  ;
-
-  _proto._selectAudioGroup = function _selectAudioGroup(levelId) {
-    var levelInfo = this.hls.levels[levelId];
-
-    if (!levelInfo || !levelInfo.audioGroupIds) {
-      return;
-    }
-
-    var audioGroupId = levelInfo.audioGroupIds[levelInfo.urlId];
-
-    if (this.audioGroupId !== audioGroupId) {
-      this.audioGroupId = audioGroupId;
-
-      this._selectInitialAudioTrack();
-    }
-  }
-  /**
-   * Select initial track
-   * @private
-   */
-  ;
-
-  _proto._selectInitialAudioTrack = function _selectInitialAudioTrack() {
-    var _this2 = this;
-
-    var tracks = this.tracks;
-
-    if (!tracks.length) {
-      return;
-    }
-
-    var currentAudioTrack = this.tracks[this._trackId];
-    var name = null;
-
-    if (currentAudioTrack) {
-      name = currentAudioTrack.name;
-    } // Pre-select default tracks if there are any
-
-
-    if (this._selectDefaultTrack) {
-      var defaultTracks = tracks.filter(function (track) {
-        return track.default;
-      });
-
-      if (defaultTracks.length) {
-        tracks = defaultTracks;
-      } else {
-        logger["logger"].warn('No default audio tracks defined');
-      }
-    }
-
-    var trackFound = false;
-
-    var traverseTracks = function traverseTracks() {
-      // Select track with right group ID
-      tracks.forEach(function (track) {
-        if (trackFound) {
-          return;
-        } // We need to match the (pre-)selected group ID
-        // and the NAME of the current track.
-
-
-        if ((!_this2.audioGroupId || track.groupId === _this2.audioGroupId) && (!name || name === track.name)) {
-          // If there was a previous track try to stay with the same `NAME`.
-          // It should be unique across tracks of same group, and consistent through redundant track groups.
-          _this2._setAudioTrack(track.id);
-
-          trackFound = true;
-        }
-      });
-    };
-
-    traverseTracks();
-
-    if (!trackFound) {
-      name = null;
-      traverseTracks();
-    }
-
-    if (!trackFound) {
-      logger["logger"].error("No track found for running audio group-ID: " + this.audioGroupId);
-      this.hls.trigger(events["default"].ERROR, {
-        type: errors["ErrorTypes"].MEDIA_ERROR,
-        details: errors["ErrorDetails"].AUDIO_TRACK_LOAD_ERROR,
-        fatal: true
-      });
-    }
-  }
-  /**
-   * @private
-   * @param {AudioTrack} audioTrack
-   * @returns {boolean}
-   */
-  ;
-
-  _proto._needsTrackLoading = function _needsTrackLoading(audioTrack) {
-    var details = audioTrack.details,
-        url = audioTrack.url;
-
-    if (!details || details.live) {
-      // check if we face an audio track embedded in main playlist (audio track without URI attribute)
-      return !!url;
-    }
-
-    return false;
-  }
-  /**
-   * @private
-   * @param {AudioTrack} audioTrack
-   */
-  ;
-
-  _proto._loadTrackDetailsIfNeeded = function _loadTrackDetailsIfNeeded(audioTrack) {
-    if (this._needsTrackLoading(audioTrack)) {
-      var url = audioTrack.url,
-          id = audioTrack.id; // track not retrieved yet, or live playlist we need to (re)load it
-
-      logger["logger"].log("loading audio-track playlist for id: " + id);
-      this.hls.trigger(events["default"].AUDIO_TRACK_LOADING, {
-        url: url,
-        id: id
-      });
-    }
-  }
-  /**
-   * @private
-   * @param {number} newId
-   */
-  ;
-
-  _proto._updateTrack = function _updateTrack(newId) {
-    // check if level idx is valid
-    if (newId < 0 || newId >= this.tracks.length) {
-      return;
-    } // stopping live reloading timer if any
-
-
-    this.clearInterval();
-    this._trackId = newId;
-    logger["logger"].log("trying to update audio-track " + newId);
-    var audioTrack = this.tracks[newId];
-
-    this._loadTrackDetailsIfNeeded(audioTrack);
-  }
-  /**
-   * @private
-   */
-  ;
-
-  _proto._handleLoadError = function _handleLoadError() {
-    // First, let's black list current track id
-    this.trackIdBlacklist[this._trackId] = true; // Let's try to fall back on a functional audio-track with the same group ID
-
-    var previousId = this._trackId;
-    var _this$tracks$previous = this.tracks[previousId],
-        name = _this$tracks$previous.name,
-        language = _this$tracks$previous.language,
-        groupId = _this$tracks$previous.groupId;
-    logger["logger"].warn("Loading failed on audio track id: " + previousId + ", group-id: " + groupId + ", name/language: \"" + name + "\" / \"" + language + "\""); // Find a non-blacklisted track ID with the same NAME
-    // At least a track that is not blacklisted, thus on another group-ID.
-
-    var newId = previousId;
-
-    for (var i = 0; i < this.tracks.length; i++) {
-      if (this.trackIdBlacklist[i]) {
-        continue;
-      }
-
-      var newTrack = this.tracks[i];
-
-      if (newTrack.name === name) {
-        newId = i;
-        break;
-      }
-    }
-
-    if (newId === previousId) {
-      logger["logger"].warn("No fallback audio-track found for name/language: \"" + name + "\" / \"" + language + "\"");
-      return;
-    }
-
-    logger["logger"].log('Attempting audio-track fallback id:', newId, 'group-id:', this.tracks[newId].groupId);
-
-    this._setAudioTrack(newId);
-  };
-
-  audio_track_controller_createClass(AudioTrackController, [{
-    key: "audioTracks",
-    get: function get() {
-      return this.tracks;
-    }
-    /**
-     * @type {number} Index into audio-tracks list of currently selected track.
-     */
-
-  }, {
-    key: "audioTrack",
-    get: function get() {
-      return this._trackId;
-    }
-    /**
-     * Select current track by index
-     */
-    ,
-    set: function set(newId) {
-      this._setAudioTrack(newId); // If audio track is selected from API then don't choose from the manifest default track
-
-
-      this._selectDefaultTrack = false;
-    }
-  }]);
-
-  return AudioTrackController;
-}(TaskLoop);
-
-/* harmony default export */ var audio_track_controller = (audio_track_controller_AudioTrackController);
-// CONCATENATED MODULE: ./src/controller/audio-stream-controller.js
-
-
-
-
-function audio_stream_controller_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
-
-function audio_stream_controller_createClass(Constructor, protoProps, staticProps) { if (protoProps) audio_stream_controller_defineProperties(Constructor.prototype, protoProps); if (staticProps) audio_stream_controller_defineProperties(Constructor, staticProps); return Constructor; }
-
-function audio_stream_controller_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
-
-/*
- * Audio Stream Controller
-*/
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-var audio_stream_controller_window = window,
-    audio_stream_controller_performance = audio_stream_controller_window.performance;
-var audio_stream_controller_TICK_INTERVAL = 100; // how often to tick in ms
-
-var audio_stream_controller_AudioStreamController = /*#__PURE__*/function (_BaseStreamController) {
-  audio_stream_controller_inheritsLoose(AudioStreamController, _BaseStreamController);
-
-  function AudioStreamController(hls, fragmentTracker) {
-    var _this;
-
-    _this = _BaseStreamController.call(this, hls, events["default"].MEDIA_ATTACHED, events["default"].MEDIA_DETACHING, events["default"].AUDIO_TRACKS_UPDATED, events["default"].AUDIO_TRACK_SWITCHING, events["default"].AUDIO_TRACK_LOADED, events["default"].KEY_LOADED, events["default"].FRAG_LOADED, events["default"].FRAG_PARSING_INIT_SEGMENT, events["default"].FRAG_PARSING_DATA, events["default"].FRAG_PARSED, events["default"].ERROR, events["default"].BUFFER_RESET, events["default"].BUFFER_CREATED, events["default"].BUFFER_APPENDED, events["default"].BUFFER_FLUSHED, events["default"].INIT_PTS_FOUND) || this;
-    _this.fragmentTracker = fragmentTracker;
-    _this.config = hls.config;
-    _this.audioCodecSwap = false;
-    _this._state = State.STOPPED;
-    _this.initPTS = [];
-    _this.waitingFragment = null;
-    _this.videoTrackCC = null;
-    _this.waitingVideoCC = null;
-    return _this;
-  } // Signal that video PTS was found
-
-
-  var _proto = AudioStreamController.prototype;
-
-  _proto.onInitPtsFound = function onInitPtsFound(data) {
-    var demuxerId = data.id,
-        cc = data.frag.cc,
-        initPTS = data.initPTS;
-
-    if (demuxerId === 'main') {
-      // Always update the new INIT PTS
-      // Can change due level switch
-      this.initPTS[cc] = initPTS;
-      this.videoTrackCC = cc;
-      logger["logger"].log("InitPTS for cc: " + cc + " found from main: " + initPTS); // If we are waiting we need to demux/remux the waiting frag
-      // With the new initPTS
-
-      if (this.state === State.WAITING_INIT_PTS) {
-        this.tick();
-      }
-    }
-  };
-
-  _proto.startLoad = function startLoad(startPosition) {
-    if (this.tracks) {
-      var lastCurrentTime = this.lastCurrentTime;
-      this.stopLoad();
-      this.setInterval(audio_stream_controller_TICK_INTERVAL);
-      this.fragLoadError = 0;
-
-      if (lastCurrentTime > 0 && startPosition === -1) {
-        logger["logger"].log("audio:override startPosition with lastCurrentTime @" + lastCurrentTime.toFixed(3));
-        this.state = State.IDLE;
-      } else {
-        this.lastCurrentTime = this.startPosition ? this.startPosition : startPosition;
-        this.state = State.STARTING;
-      }
-
-      this.nextLoadPosition = this.startPosition = this.lastCurrentTime;
-      this.tick();
-    } else {
-      this.startPosition = startPosition;
-      this.state = State.STOPPED;
-    }
-  };
-
-  _proto.doTick = function doTick() {
-    var pos,
-        track,
-        trackDetails,
-        hls = this.hls,
-        config = hls.config; // logger.log('audioStream:' + this.state);
-
-    switch (this.state) {
-      case State.ERROR: // don't do anything in error state to avoid breaking further ...
-
-      case State.PAUSED: // don't do anything in paused state either ...
-
-      case State.BUFFER_FLUSHING:
-        break;
-
-      case State.STARTING:
-        this.state = State.WAITING_TRACK;
-        this.loadedmetadata = false;
-        break;
-
-      case State.IDLE:
-        var tracks = this.tracks; // audio tracks not received => exit loop
-
-        if (!tracks) {
-          break;
-        } // if video not attached AND
-        // start fragment already requested OR start frag prefetch disable
-        // exit loop
-        // => if media not attached but start frag prefetch is enabled and start frag not requested yet, we will not exit loop
-
-
-        if (!this.media && (this.startFragRequested || !config.startFragPrefetch)) {
-          break;
-        } // determine next candidate fragment to be loaded, based on current position and
-        //  end of buffer position
-        // if we have not yet loaded any fragment, start loading from start position
-
-
-        if (this.loadedmetadata) {
-          pos = this.media.currentTime;
-        } else {
-          pos = this.nextLoadPosition;
-
-          if (pos === undefined) {
-            break;
-          }
-        }
-
-        var media = this.mediaBuffer ? this.mediaBuffer : this.media;
-        var videoBuffer = this.videoBuffer ? this.videoBuffer : this.media;
-        var maxBufferHole = pos < config.maxBufferHole ? Math.max(MAX_START_GAP_JUMP, config.maxBufferHole) : config.maxBufferHole;
-        var bufferInfo = buffer_helper_BufferHelper.bufferInfo(media, pos, maxBufferHole);
-        var mainBufferInfo = buffer_helper_BufferHelper.bufferInfo(videoBuffer, pos, maxBufferHole);
-        var bufferLen = bufferInfo.len;
-        var bufferEnd = bufferInfo.end;
-        var fragPrevious = this.fragPrevious; // ensure we buffer at least config.maxBufferLength (default 30s) or config.maxMaxBufferLength (default: 600s)
-        // whichever is smaller.
-        // once we reach that threshold, don't buffer more than video (mainBufferInfo.len)
-
-        var maxConfigBuffer = Math.min(config.maxBufferLength, config.maxMaxBufferLength);
-        var maxBufLen = Math.max(maxConfigBuffer, mainBufferInfo.len);
-        var audioSwitch = this.audioSwitch;
-        var trackId = this.trackId; // if buffer length is less than maxBufLen try to load a new fragment
-
-        if ((bufferLen < maxBufLen || audioSwitch) && trackId < tracks.length) {
-          trackDetails = tracks[trackId].details; // if track info not retrieved yet, switch state and wait for track retrieval
-
-          if (typeof trackDetails === 'undefined') {
-            this.state = State.WAITING_TRACK;
-            break;
-          }
-
-          if (!audioSwitch && this._streamEnded(bufferInfo, trackDetails)) {
-            this.hls.trigger(events["default"].BUFFER_EOS, {
-              type: 'audio'
-            });
-            this.state = State.ENDED;
-            return;
-          } // find fragment index, contiguous with end of buffer position
-
-
-          var fragments = trackDetails.fragments,
-              fragLen = fragments.length,
-              start = fragments[0].start,
-              end = fragments[fragLen - 1].start + fragments[fragLen - 1].duration,
-              frag; // When switching audio track, reload audio as close as possible to currentTime
-
-          if (audioSwitch) {
-            if (trackDetails.live && !trackDetails.PTSKnown) {
-              logger["logger"].log('switching audiotrack, live stream, unknown PTS,load first fragment');
-              bufferEnd = 0;
-            } else {
-              bufferEnd = pos; // if currentTime (pos) is less than alt audio playlist start time, it means that alt audio is ahead of currentTime
-
-              if (trackDetails.PTSKnown && pos < start) {
-                // if everything is buffered from pos to start or if audio buffer upfront, let's seek to start
-                if (bufferInfo.end > start || bufferInfo.nextStart) {
-                  logger["logger"].log('alt audio track ahead of main track, seek to start of alt audio track');
-                  this.media.currentTime = start + 0.05;
-                } else {
-                  return;
-                }
-              }
-            }
-          }
-
-          if (trackDetails.initSegment && !trackDetails.initSegment.data) {
-            frag = trackDetails.initSegment;
-          } // eslint-disable-line brace-style
-          // if bufferEnd before start of playlist, load first fragment
-          else if (bufferEnd <= start) {
-              frag = fragments[0];
-
-              if (this.videoTrackCC !== null && frag.cc !== this.videoTrackCC) {
-                // Ensure we find a fragment which matches the continuity of the video track
-                frag = findFragWithCC(fragments, this.videoTrackCC);
-              }
-
-              if (trackDetails.live && frag.loadIdx && frag.loadIdx === this.fragLoadIdx) {
-                // we just loaded this first fragment, and we are still lagging behind the start of the live playlist
-                // let's force seek to start
-                var nextBuffered = bufferInfo.nextStart ? bufferInfo.nextStart : start;
-                logger["logger"].log("no alt audio available @currentTime:" + this.media.currentTime + ", seeking @" + (nextBuffered + 0.05));
-                this.media.currentTime = nextBuffered + 0.05;
-                return;
-              }
-            } else {
-              var foundFrag;
-              var maxFragLookUpTolerance = config.maxFragLookUpTolerance;
-              var fragNext = fragPrevious ? fragments[fragPrevious.sn - fragments[0].sn + 1] : undefined;
-
-              if (bufferEnd < end) {
-                if (bufferEnd > end - maxFragLookUpTolerance) {
-                  maxFragLookUpTolerance = 0;
-                } // Prefer the next fragment if it's within tolerance
-
-
-                if (fragNext && !fragmentWithinToleranceTest(bufferEnd, maxFragLookUpTolerance, fragNext)) {
-                  foundFrag = fragNext;
-                } else {
-                  foundFrag = binary_search.search(fragments, function (frag) {
-                    return fragmentWithinToleranceTest(bufferEnd, maxFragLookUpTolerance, frag);
-                  });
-                }
-              } else {
-                // reach end of playlist
-                foundFrag = fragments[fragLen - 1];
-              }
-
-              if (foundFrag) {
-                frag = foundFrag;
-                start = foundFrag.start; // logger.log('find SN matching with pos:' +  bufferEnd + ':' + frag.sn);
-
-                if (fragPrevious && frag.level === fragPrevious.level && frag.sn === fragPrevious.sn) {
-                  if (frag.sn < trackDetails.endSN) {
-                    frag = fragments[frag.sn + 1 - trackDetails.startSN];
-
-                    if (this.fragmentTracker.getState(frag) !== FragmentState.OK) {
-                      logger["logger"].log("SN just loaded, load next one: " + frag.sn);
-                    }
-                  } else {
-                    frag = null;
-                  }
-                }
-              }
-            }
-
-          if (frag) {
-            // logger.log('      loading frag ' + i +',pos/bufEnd:' + pos.toFixed(3) + '/' + bufferEnd.toFixed(3));
-            if (frag.encrypted) {
-              logger["logger"].log("Loading key for " + frag.sn + " of [" + trackDetails.startSN + " ," + trackDetails.endSN + "],track " + trackId);
-              this.state = State.KEY_LOADING;
-              hls.trigger(events["default"].KEY_LOADING, {
-                frag: frag
-              });
-            } else {
-              // only load if fragment is not loaded or if in audio switch
-              // we force a frag loading in audio switch as fragment tracker might not have evicted previous frags in case of quick audio switch
-              this.fragCurrent = frag;
-
-              if (audioSwitch || this.fragmentTracker.getState(frag) === FragmentState.NOT_LOADED) {
-                logger["logger"].log("Loading " + frag.sn + ", cc: " + frag.cc + " of [" + trackDetails.startSN + " ," + trackDetails.endSN + "],track " + trackId + ", " + (this.loadedmetadata ? 'currentTime' : 'nextLoadPosition') + ": " + pos + ", bufferEnd: " + bufferEnd.toFixed(3));
-
-                if (frag.sn !== 'initSegment') {
-                  this.startFragRequested = true;
-                }
-
-                if (Object(number["isFiniteNumber"])(frag.sn)) {
-                  this.nextLoadPosition = frag.start + frag.duration;
-                }
-
-                hls.trigger(events["default"].FRAG_LOADING, {
-                  frag: frag
-                });
-                this.state = State.FRAG_LOADING;
-              }
-            }
-          }
-        }
-
-        break;
-
-      case State.WAITING_TRACK:
-        track = this.tracks[this.trackId]; // check if playlist is already loaded
-
-        if (track && track.details) {
-          this.state = State.IDLE;
-        }
-
-        break;
-
-      case State.FRAG_LOADING_WAITING_RETRY:
-        var now = audio_stream_controller_performance.now();
-        var retryDate = this.retryDate;
-        media = this.media;
-        var isSeeking = media && media.seeking; // if current time is gt than retryDate, or if media seeking let's switch to IDLE state to retry loading
-
-        if (!retryDate || now >= retryDate || isSeeking) {
-          logger["logger"].log('audioStreamController: retryDate reached, switch back to IDLE state');
-          this.state = State.IDLE;
-        }
-
-        break;
-
-      case State.WAITING_INIT_PTS:
-        // Ensure we don't get stuck in the WAITING_INIT_PTS state if the waiting frag CC doesn't match any initPTS
-        var waitingFrag = this.waitingFragment;
-
-        if (waitingFrag) {
-          var waitingFragCC = waitingFrag.frag.cc;
-
-          if (this.initPTS[waitingFragCC] !== undefined) {
-            this.waitingFragment = null;
-            this.state = State.FRAG_LOADING;
-            this.onFragLoaded(waitingFrag);
-          } else if (this.videoTrackCC !== this.waitingVideoCC) {
-            // Drop waiting fragment if videoTrackCC has changed since waitingFragment was set and initPTS was not found
-            logger["logger"].log("Waiting fragment cc (" + waitingFragCC + ") cancelled because video is at cc " + this.videoTrackCC);
-            this.clearWaitingFragment();
-          } else {
-            // Drop waiting fragment if an earlier fragment is needed
-            var _bufferInfo = buffer_helper_BufferHelper.bufferInfo(this.mediaBuffer, this.media.currentTime, config.maxBufferHole);
-
-            var waitingFragmentAtPosition = fragmentWithinToleranceTest(_bufferInfo.end, config.maxFragLookUpTolerance, waitingFrag.frag);
-
-            if (waitingFragmentAtPosition < 0) {
-              logger["logger"].log("Waiting fragment cc (" + waitingFragCC + ") @ " + waitingFrag.frag.start + " cancelled because another fragment at " + _bufferInfo.end + " is needed");
-              this.clearWaitingFragment();
-            }
-          }
-        } else {
-          this.state = State.IDLE;
-        }
-
-        break;
-
-      case State.STOPPED:
-      case State.FRAG_LOADING:
-      case State.PARSING:
-      case State.PARSED:
-      case State.ENDED:
-        break;
-
-      default:
-        break;
-    }
-  };
-
-  _proto.clearWaitingFragment = function clearWaitingFragment() {
-    var waitingFrag = this.waitingFragment;
-
-    if (waitingFrag) {
-      this.fragmentTracker.removeFragment(waitingFrag.frag);
-      this.waitingFragment = null;
-      this.waitingVideoCC = null;
-      this.state = State.IDLE;
-    }
-  };
-
-  _proto.onMediaAttached = function onMediaAttached(data) {
-    var media = this.media = this.mediaBuffer = data.media;
-    this.onvseeking = this.onMediaSeeking.bind(this);
-    this.onvended = this.onMediaEnded.bind(this);
-    media.addEventListener('seeking', this.onvseeking);
-    media.addEventListener('ended', this.onvended);
-    var config = this.config;
-
-    if (this.tracks && config.autoStartLoad) {
-      this.startLoad(config.startPosition);
-    }
-  };
-
-  _proto.onMediaDetaching = function onMediaDetaching() {
-    var media = this.media;
-
-    if (media && media.ended) {
-      logger["logger"].log('MSE detaching and video ended, reset startPosition');
-      this.startPosition = this.lastCurrentTime = 0;
-    } // remove video listeners
-
-
-    if (media) {
-      media.removeEventListener('seeking', this.onvseeking);
-      media.removeEventListener('ended', this.onvended);
-      this.onvseeking = this.onvseeked = this.onvended = null;
-    }
-
-    this.media = this.mediaBuffer = this.videoBuffer = null;
-    this.loadedmetadata = false;
-    this.fragmentTracker.removeAllFragments();
-    this.stopLoad();
-  };
-
-  _proto.onAudioTracksUpdated = function onAudioTracksUpdated(data) {
-    logger["logger"].log('audio tracks updated');
-    this.tracks = data.audioTracks;
-  };
-
-  _proto.onAudioTrackSwitching = function onAudioTrackSwitching(data) {
-    // if any URL found on new audio track, it is an alternate audio track
-    var altAudio = !!data.url;
-    this.trackId = data.id;
-    this.fragCurrent = null;
-    this.clearWaitingFragment();
-    this.state = State.PAUSED; // destroy useless demuxer when switching audio to main
-
-    if (!altAudio) {
-      if (this.demuxer) {
-        this.demuxer.destroy();
-        this.demuxer = null;
-      }
-    } else {
-      // switching to audio track, start timer if not already started
-      this.setInterval(audio_stream_controller_TICK_INTERVAL);
-    } // should we switch tracks ?
-
-
-    if (altAudio) {
-      this.audioSwitch = true; // main audio track are handled by stream-controller, just do something if switching to alt audio track
-
-      this.state = State.IDLE;
-    }
-
-    this.tick();
-  };
-
-  _proto.onAudioTrackLoaded = function onAudioTrackLoaded(data) {
-    var newDetails = data.details,
-        trackId = data.id,
-        track = this.tracks[trackId],
-        curDetails = track.details,
-        duration = newDetails.totalduration,
-        sliding = 0;
-    logger["logger"].log("track " + trackId + " loaded [" + newDetails.startSN + "," + newDetails.endSN + "],duration:" + duration);
-
-    if (newDetails.live || curDetails && curDetails.live) {
-      if (curDetails && newDetails.fragments.length > 0) {
-        // we already have details for that level, merge them
-        mergeDetails(curDetails, newDetails);
-        sliding = newDetails.fragments[0].start; // TODO
-        // this.liveSyncPosition = this.computeLivePosition(sliding, curDetails);
-
-        if (newDetails.PTSKnown) {
-          logger["logger"].log("live audio playlist sliding:" + sliding.toFixed(3));
-        } else {
-          logger["logger"].log('live audio playlist - outdated PTS, unknown sliding');
-        }
-      } else {
-        newDetails.PTSKnown = false;
-        logger["logger"].log('live audio playlist - first load, unknown sliding');
-      }
-    } else {
-      newDetails.PTSKnown = false;
-    }
-
-    track.details = newDetails; // compute start position
-
-    if (!this.startFragRequested) {
-      // compute start position if set to -1. use it straight away if value is defined
-      if (this.startPosition === -1) {
-        // first, check if start time offset has been set in playlist, if yes, use this value
-        var startTimeOffset = newDetails.startTimeOffset;
-
-        if (Object(number["isFiniteNumber"])(startTimeOffset)) {
-          logger["logger"].log("start time offset found in playlist, adjust startPosition to " + startTimeOffset);
-          this.startPosition = startTimeOffset;
-        } else {
-          if (newDetails.live) {
-            this.startPosition = this.computeLivePosition(sliding, newDetails);
-            logger["logger"].log("compute startPosition for audio-track to " + this.startPosition);
-          } else {
-            this.startPosition = 0;
-          }
-        }
-      }
-
-      this.nextLoadPosition = this.startPosition;
-    } // only switch batck to IDLE state if we were waiting for track to start downloading a new fragment
-
-
-    if (this.state === State.WAITING_TRACK) {
-      this.state = State.IDLE;
-    } // trigger handler right now
-
-
-    this.tick();
-  };
-
-  _proto.onKeyLoaded = function onKeyLoaded() {
-    if (this.state === State.KEY_LOADING) {
-      this.state = State.IDLE;
-      this.tick();
-    }
-  };
-
-  _proto.onFragLoaded = function onFragLoaded(data) {
-    var fragCurrent = this.fragCurrent,
-        fragLoaded = data.frag;
-
-    if (this.state === State.FRAG_LOADING && fragCurrent && fragLoaded.type === 'audio' && fragLoaded.level === fragCurrent.level && fragLoaded.sn === fragCurrent.sn) {
-      var track = this.tracks[this.trackId],
-          details = track.details,
-          duration = details.totalduration,
-          trackId = fragCurrent.level,
-          sn = fragCurrent.sn,
-          cc = fragCurrent.cc,
-          audioCodec = this.config.defaultAudioCodec || track.audioCodec || 'mp4a.40.2',
-          stats = this.stats = data.stats;
-
-      if (sn === 'initSegment') {
-        this.state = State.IDLE;
-        stats.tparsed = stats.tbuffered = audio_stream_controller_performance.now();
-        details.initSegment.data = data.payload;
-        this.hls.trigger(events["default"].FRAG_BUFFERED, {
-          stats: stats,
-          frag: fragCurrent,
-          id: 'audio'
-        });
-        this.tick();
-      } else {
-        this.state = State.PARSING; // transmux the MPEG-TS data to ISO-BMFF segments
-
-        this.appended = false;
-
-        if (!this.demuxer) {
-          this.demuxer = new demux_demuxer(this.hls, 'audio');
-        } // Check if we have video initPTS
-        // If not we need to wait for it
-
-
-        var initPTS = this.initPTS[cc];
-        var initSegmentData = details.initSegment ? details.initSegment.data : [];
-
-        if (initPTS !== undefined) {
-          this.pendingBuffering = true;
-          logger["logger"].log("Demuxing " + sn + " of [" + details.startSN + " ," + details.endSN + "],track " + trackId); // time Offset is accurate if level PTS is known, or if playlist is not sliding (not live)
-
-          var accurateTimeOffset = false; // details.PTSKnown || !details.live;
-
-          this.demuxer.push(data.payload, initSegmentData, audioCodec, null, fragCurrent, duration, accurateTimeOffset, initPTS);
-        } else {
-          logger["logger"].log("Unknown video PTS for cc " + cc + ", waiting for video PTS before demuxing audio frag " + sn + " of [" + details.startSN + " ," + details.endSN + "],track " + trackId);
-          this.waitingFragment = data;
-          this.waitingVideoCC = this.videoTrackCC;
-          this.state = State.WAITING_INIT_PTS;
-        }
-      }
-    }
-
-    this.fragLoadError = 0;
-  };
-
-  _proto.onFragParsingInitSegment = function onFragParsingInitSegment(data) {
-    var fragCurrent = this.fragCurrent;
-    var fragNew = data.frag;
-
-    if (fragCurrent && data.id === 'audio' && fragNew.sn === fragCurrent.sn && fragNew.level === fragCurrent.level && this.state === State.PARSING) {
-      var tracks = data.tracks,
-          track; // delete any video track found on audio demuxer
-
-      if (tracks.video) {
-        delete tracks.video;
-      } // include levelCodec in audio and video tracks
-
-
-      track = tracks.audio;
-
-      if (track) {
-        track.levelCodec = track.codec;
-        track.id = data.id;
-        this.hls.trigger(events["default"].BUFFER_CODECS, tracks);
-        logger["logger"].log("audio track:audio,container:" + track.container + ",codecs[level/parsed]=[" + track.levelCodec + "/" + track.codec + "]");
-        var initSegment = track.initSegment;
-
-        if (initSegment) {
-          var appendObj = {
-            type: 'audio',
-            data: initSegment,
-            parent: 'audio',
-            content: 'initSegment'
-          };
-
-          if (this.audioSwitch) {
-            this.pendingData = [appendObj];
-          } else {
-            this.appended = true; // arm pending Buffering flag before appending a segment
-
-            this.pendingBuffering = true;
-            this.hls.trigger(events["default"].BUFFER_APPENDING, appendObj);
-          }
-        } // trigger handler right now
-
-
-        this.tick();
-      }
-    }
-  };
-
-  _proto.onFragParsingData = function onFragParsingData(data) {
-    var _this2 = this;
-
-    var fragCurrent = this.fragCurrent;
-    var fragNew = data.frag;
-
-    if (fragCurrent && data.id === 'audio' && data.type === 'audio' && fragNew.sn === fragCurrent.sn && fragNew.level === fragCurrent.level && this.state === State.PARSING) {
-      var trackId = this.trackId,
-          track = this.tracks[trackId],
-          hls = this.hls;
-
-      if (!Object(number["isFiniteNumber"])(data.endPTS)) {
-        data.endPTS = data.startPTS + fragCurrent.duration;
-        data.endDTS = data.startDTS + fragCurrent.duration;
-      }
-
-      fragCurrent.addElementaryStream(ElementaryStreamTypes.AUDIO);
-      logger["logger"].log("parsed " + data.type + ",PTS:[" + data.startPTS.toFixed(3) + "," + data.endPTS.toFixed(3) + "],DTS:[" + data.startDTS.toFixed(3) + "/" + data.endDTS.toFixed(3) + "],nb:" + data.nb);
-      updateFragPTSDTS(track.details, fragCurrent, data.startPTS, data.endPTS);
-      var media = this.media;
-      var appendOnBufferFlush = false; // Only flush audio from old audio tracks when PTS is known on new audio track
-
-      if (this.audioSwitch) {
-        if (media && media.readyState) {
-          var currentTime = media.currentTime;
-          logger["logger"].log('switching audio track : currentTime:' + currentTime);
-
-          if (currentTime >= data.startPTS) {
-            logger["logger"].log('switching audio track : flushing all audio');
-            this.state = State.BUFFER_FLUSHING;
-            hls.trigger(events["default"].BUFFER_FLUSHING, {
-              startOffset: 0,
-              endOffset: Number.POSITIVE_INFINITY,
-              type: 'audio'
-            });
-            appendOnBufferFlush = true; // Lets announce that the initial audio track switch flush occur
-
-            this.audioSwitch = false;
-            hls.trigger(events["default"].AUDIO_TRACK_SWITCHED, {
-              id: trackId
-            });
-          }
-        } else {
-          // Lets announce that the initial audio track switch flush occur
-          this.audioSwitch = false;
-          hls.trigger(events["default"].AUDIO_TRACK_SWITCHED, {
-            id: trackId
-          });
-        }
-      }
-
-      var pendingData = this.pendingData;
-
-      if (!pendingData) {
-        logger["logger"].warn('Apparently attempt to enqueue media payload without codec initialization data upfront');
-        hls.trigger(events["default"].ERROR, {
-          type: errors["ErrorTypes"].MEDIA_ERROR,
-          details: null,
-          fatal: true
-        });
-        return;
-      }
-
-      if (!this.audioSwitch) {
-        [data.data1, data.data2].forEach(function (buffer) {
-          if (buffer && buffer.length) {
-            pendingData.push({
-              type: data.type,
-              data: buffer,
-              parent: 'audio',
-              content: 'data'
-            });
-          }
-        });
-
-        if (!appendOnBufferFlush && pendingData.length) {
-          pendingData.forEach(function (appendObj) {
-            // only append in PARSING state (rationale is that an appending error could happen synchronously on first segment appending)
-            // in that case it is useless to append following segments
-            if (_this2.state === State.PARSING) {
-              // arm pending Buffering flag before appending a segment
-              _this2.pendingBuffering = true;
-
-              _this2.hls.trigger(events["default"].BUFFER_APPENDING, appendObj);
-            }
-          });
-          this.pendingData = [];
-          this.appended = true;
-        }
-      } // trigger handler right now
-
-
-      this.tick();
-    }
-  };
-
-  _proto.onFragParsed = function onFragParsed(data) {
-    var fragCurrent = this.fragCurrent;
-    var fragNew = data.frag;
-
-    if (fragCurrent && data.id === 'audio' && fragNew.sn === fragCurrent.sn && fragNew.level === fragCurrent.level && this.state === State.PARSING) {
-      this.stats.tparsed = audio_stream_controller_performance.now();
-      this.state = State.PARSED;
-
-      this._checkAppendedParsed();
-    }
-  };
-
-  _proto.onBufferReset = function onBufferReset() {
-    // reset reference to sourcebuffers
-    this.mediaBuffer = this.videoBuffer = null;
-    this.loadedmetadata = false;
-  };
-
-  _proto.onBufferCreated = function onBufferCreated(data) {
-    var audioTrack = data.tracks.audio;
-
-    if (audioTrack) {
-      this.mediaBuffer = audioTrack.buffer;
-      this.loadedmetadata = true;
-    }
-
-    if (data.tracks.video) {
-      this.videoBuffer = data.tracks.video.buffer;
-    }
-  };
-
-  _proto.onBufferAppended = function onBufferAppended(data) {
-    if (data.parent === 'audio') {
-      var state = this.state;
-
-      if (state === State.PARSING || state === State.PARSED) {
-        // check if all buffers have been appended
-        this.pendingBuffering = data.pending > 0;
-
-        this._checkAppendedParsed();
-      }
-    }
-  };
-
-  _proto._checkAppendedParsed = function _checkAppendedParsed() {
-    // trigger handler right now
-    if (this.state === State.PARSED && (!this.appended || !this.pendingBuffering)) {
-      var frag = this.fragCurrent,
-          stats = this.stats,
-          hls = this.hls;
-
-      if (frag) {
-        this.fragPrevious = frag;
-        stats.tbuffered = audio_stream_controller_performance.now();
-        hls.trigger(events["default"].FRAG_BUFFERED, {
-          stats: stats,
-          frag: frag,
-          id: 'audio'
-        });
-        var media = this.mediaBuffer ? this.mediaBuffer : this.media;
-
-        if (media) {
-          logger["logger"].log("audio buffered : " + time_ranges.toString(buffer_helper_BufferHelper.getBuffered(media)));
-        }
-
-        if (this.audioSwitch && this.appended) {
-          this.audioSwitch = false;
-          hls.trigger(events["default"].AUDIO_TRACK_SWITCHED, {
-            id: this.trackId
-          });
-        }
-
-        this.state = State.IDLE;
-      }
-
-      this.tick();
-    }
-  };
-
-  _proto.onError = function onError(data) {
-    var frag = data.frag; // don't handle frag error not related to audio fragment
-
-    if (frag && frag.type !== 'audio') {
-      return;
-    }
-
-    switch (data.details) {
-      case errors["ErrorDetails"].FRAG_LOAD_ERROR:
-      case errors["ErrorDetails"].FRAG_LOAD_TIMEOUT:
-        var _frag = data.frag; // don't handle frag error not related to audio fragment
-
-        if (_frag && _frag.type !== 'audio') {
-          break;
-        }
-
-        if (!data.fatal) {
-          var loadError = this.fragLoadError;
-
-          if (loadError) {
-            loadError++;
-          } else {
-            loadError = 1;
-          }
-
-          var config = this.config;
-
-          if (loadError <= config.fragLoadingMaxRetry) {
-            this.fragLoadError = loadError; // exponential backoff capped to config.fragLoadingMaxRetryTimeout
-
-            var delay = Math.min(Math.pow(2, loadError - 1) * config.fragLoadingRetryDelay, config.fragLoadingMaxRetryTimeout);
-            logger["logger"].warn("AudioStreamController: frag loading failed, retry in " + delay + " ms");
-            this.retryDate = audio_stream_controller_performance.now() + delay; // retry loading state
-
-            this.state = State.FRAG_LOADING_WAITING_RETRY;
-          } else {
-            logger["logger"].error("AudioStreamController: " + data.details + " reaches max retry, redispatch as fatal ..."); // switch error to fatal
-
-            data.fatal = true;
-            this.state = State.ERROR;
-          }
-        }
-
-        break;
-
-      case errors["ErrorDetails"].AUDIO_TRACK_LOAD_ERROR:
-      case errors["ErrorDetails"].AUDIO_TRACK_LOAD_TIMEOUT:
-      case errors["ErrorDetails"].KEY_LOAD_ERROR:
-      case errors["ErrorDetails"].KEY_LOAD_TIMEOUT:
-        //  when in ERROR state, don't switch back to IDLE state in case a non-fatal error is received
-        if (this.state !== State.ERROR) {
-          // if fatal error, stop processing, otherwise move to IDLE to retry loading
-          this.state = data.fatal ? State.ERROR : State.IDLE;
-          logger["logger"].warn("AudioStreamController: " + data.details + " while loading frag, now switching to " + this.state + " state ...");
-        }
-
-        break;
-
-      case errors["ErrorDetails"].BUFFER_FULL_ERROR:
-        // if in appending state
-        if (data.parent === 'audio' && (this.state === State.PARSING || this.state === State.PARSED)) {
-          var media = this.mediaBuffer,
-              currentTime = this.media.currentTime,
-              mediaBuffered = media && buffer_helper_BufferHelper.isBuffered(media, currentTime) && buffer_helper_BufferHelper.isBuffered(media, currentTime + 0.5); // reduce max buf len if current position is buffered
-
-          if (mediaBuffered) {
-            var _config = this.config;
-
-            if (_config.maxMaxBufferLength >= _config.maxBufferLength) {
-              // reduce max buffer length as it might be too high. we do this to avoid loop flushing ...
-              _config.maxMaxBufferLength /= 2;
-              logger["logger"].warn("AudioStreamController: reduce max buffer length to " + _config.maxMaxBufferLength + "s");
-            }
-
-            this.state = State.IDLE;
-          } else {
-            // current position is not buffered, but browser is still complaining about buffer full error
-            // this happens on IE/Edge, refer to https://github.com/video-dev/hls.js/pull/708
-            // in that case flush the whole audio buffer to recover
-            logger["logger"].warn('AudioStreamController: buffer full error also media.currentTime is not buffered, flush audio buffer');
-            this.fragCurrent = null; // flush everything
-
-            this.state = State.BUFFER_FLUSHING;
-            this.hls.trigger(events["default"].BUFFER_FLUSHING, {
-              startOffset: 0,
-              endOffset: Number.POSITIVE_INFINITY,
-              type: 'audio'
-            });
-          }
-        }
-
-        break;
-
-      default:
-        break;
-    }
-  };
-
-  _proto.onBufferFlushed = function onBufferFlushed() {
-    var _this3 = this;
-
-    var pendingData = this.pendingData;
-
-    if (pendingData && pendingData.length) {
-      logger["logger"].log('AudioStreamController: appending pending audio data after buffer flushed');
-      pendingData.forEach(function (appendObj) {
-        _this3.hls.trigger(events["default"].BUFFER_APPENDING, appendObj);
-      });
-      this.appended = true;
-      this.pendingData = [];
-      this.state = State.PARSED;
-    } else {
-      // move to IDLE once flush complete. this should trigger new fragment loading
-      this.state = State.IDLE; // reset reference to frag
-
-      this.fragPrevious = null;
-      this.tick();
-    }
-  };
-
-  audio_stream_controller_createClass(AudioStreamController, [{
-    key: "state",
-    set: function set(nextState) {
-      if (this.state !== nextState) {
-        var previousState = this.state;
-        this._state = nextState;
-        logger["logger"].log("audio stream:" + previousState + "->" + nextState);
-      }
-    },
-    get: function get() {
-      return this._state;
-    }
-  }]);
-
-  return AudioStreamController;
-}(base_stream_controller_BaseStreamController);
-
-/* harmony default export */ var audio_stream_controller = (audio_stream_controller_AudioStreamController);
-// CONCATENATED MODULE: ./src/utils/vttcue.js
-/**
- * Copyright 2013 vtt.js Contributors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-/* harmony default export */ var vttcue = ((function () {
-  if (typeof window !== 'undefined' && window.VTTCue) {
-    return window.VTTCue;
-  }
-
-  var autoKeyword = 'auto';
-  var directionSetting = {
-    '': true,
-    lr: true,
-    rl: true
-  };
-  var alignSetting = {
-    start: true,
-    middle: true,
-    end: true,
-    left: true,
-    right: true
-  };
-
-  function findDirectionSetting(value) {
-    if (typeof value !== 'string') {
-      return false;
-    }
-
-    var dir = directionSetting[value.toLowerCase()];
-    return dir ? value.toLowerCase() : false;
-  }
-
-  function findAlignSetting(value) {
-    if (typeof value !== 'string') {
-      return false;
-    }
-
-    var align = alignSetting[value.toLowerCase()];
-    return align ? value.toLowerCase() : false;
-  }
-
-  function extend(obj) {
-    var i = 1;
-
-    for (; i < arguments.length; i++) {
-      var cobj = arguments[i];
-
-      for (var p in cobj) {
-        obj[p] = cobj[p];
-      }
-    }
-
-    return obj;
-  }
-
-  function VTTCue(startTime, endTime, text) {
-    var cue = this;
-    var baseObj = {};
-    baseObj.enumerable = true;
-    /**
-     * Shim implementation specific properties. These properties are not in
-     * the spec.
-     */
-    // Lets us know when the VTTCue's data has changed in such a way that we need
-    // to recompute its display state. This lets us compute its display state
-    // lazily.
-
-    cue.hasBeenReset = false;
-    /**
-     * VTTCue and TextTrackCue properties
-     * http://dev.w3.org/html5/webvtt/#vttcue-interface
-     */
-
-    var _id = '';
-    var _pauseOnExit = false;
-    var _startTime = startTime;
-    var _endTime = endTime;
-    var _text = text;
-    var _region = null;
-    var _vertical = '';
-    var _snapToLines = true;
-    var _line = 'auto';
-    var _lineAlign = 'start';
-    var _position = 50;
-    var _positionAlign = 'middle';
-    var _size = 50;
-    var _align = 'middle';
-    Object.defineProperty(cue, 'id', extend({}, baseObj, {
-      get: function get() {
-        return _id;
-      },
-      set: function set(value) {
-        _id = '' + value;
-      }
-    }));
-    Object.defineProperty(cue, 'pauseOnExit', extend({}, baseObj, {
-      get: function get() {
-        return _pauseOnExit;
-      },
-      set: function set(value) {
-        _pauseOnExit = !!value;
-      }
-    }));
-    Object.defineProperty(cue, 'startTime', extend({}, baseObj, {
-      get: function get() {
-        return _startTime;
-      },
-      set: function set(value) {
-        if (typeof value !== 'number') {
-          throw new TypeError('Start time must be set to a number.');
-        }
-
-        _startTime = value;
-        this.hasBeenReset = true;
-      }
-    }));
-    Object.defineProperty(cue, 'endTime', extend({}, baseObj, {
-      get: function get() {
-        return _endTime;
-      },
-      set: function set(value) {
-        if (typeof value !== 'number') {
-          throw new TypeError('End time must be set to a number.');
-        }
-
-        _endTime = value;
-        this.hasBeenReset = true;
-      }
-    }));
-    Object.defineProperty(cue, 'text', extend({}, baseObj, {
-      get: function get() {
-        return _text;
-      },
-      set: function set(value) {
-        _text = '' + value;
-        this.hasBeenReset = true;
-      }
-    }));
-    Object.defineProperty(cue, 'region', extend({}, baseObj, {
-      get: function get() {
-        return _region;
-      },
-      set: function set(value) {
-        _region = value;
-        this.hasBeenReset = true;
-      }
-    }));
-    Object.defineProperty(cue, 'vertical', extend({}, baseObj, {
-      get: function get() {
-        return _vertical;
-      },
-      set: function set(value) {
-        var setting = findDirectionSetting(value); // Have to check for false because the setting an be an empty string.
-
-        if (setting === false) {
-          throw new SyntaxError('An invalid or illegal string was specified.');
-        }
-
-        _vertical = setting;
-        this.hasBeenReset = true;
-      }
-    }));
-    Object.defineProperty(cue, 'snapToLines', extend({}, baseObj, {
-      get: function get() {
-        return _snapToLines;
-      },
-      set: function set(value) {
-        _snapToLines = !!value;
-        this.hasBeenReset = true;
-      }
-    }));
-    Object.defineProperty(cue, 'line', extend({}, baseObj, {
-      get: function get() {
-        return _line;
-      },
-      set: function set(value) {
-        if (typeof value !== 'number' && value !== autoKeyword) {
-          throw new SyntaxError('An invalid number or illegal string was specified.');
-        }
-
-        _line = value;
-        this.hasBeenReset = true;
-      }
-    }));
-    Object.defineProperty(cue, 'lineAlign', extend({}, baseObj, {
-      get: function get() {
-        return _lineAlign;
-      },
-      set: function set(value) {
-        var setting = findAlignSetting(value);
-
-        if (!setting) {
-          throw new SyntaxError('An invalid or illegal string was specified.');
-        }
-
-        _lineAlign = setting;
-        this.hasBeenReset = true;
-      }
-    }));
-    Object.defineProperty(cue, 'position', extend({}, baseObj, {
-      get: function get() {
-        return _position;
-      },
-      set: function set(value) {
-        if (value < 0 || value > 100) {
-          throw new Error('Position must be between 0 and 100.');
-        }
-
-        _position = value;
-        this.hasBeenReset = true;
-      }
-    }));
-    Object.defineProperty(cue, 'positionAlign', extend({}, baseObj, {
-      get: function get() {
-        return _positionAlign;
-      },
-      set: function set(value) {
-        var setting = findAlignSetting(value);
-
-        if (!setting) {
-          throw new SyntaxError('An invalid or illegal string was specified.');
-        }
-
-        _positionAlign = setting;
-        this.hasBeenReset = true;
-      }
-    }));
-    Object.defineProperty(cue, 'size', extend({}, baseObj, {
-      get: function get() {
-        return _size;
-      },
-      set: function set(value) {
-        if (value < 0 || value > 100) {
-          throw new Error('Size must be between 0 and 100.');
-        }
-
-        _size = value;
-        this.hasBeenReset = true;
-      }
-    }));
-    Object.defineProperty(cue, 'align', extend({}, baseObj, {
-      get: function get() {
-        return _align;
-      },
-      set: function set(value) {
-        var setting = findAlignSetting(value);
-
-        if (!setting) {
-          throw new SyntaxError('An invalid or illegal string was specified.');
-        }
-
-        _align = setting;
-        this.hasBeenReset = true;
-      }
-    }));
-    /**
-     * Other <track> spec defined properties
-     */
-    // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#text-track-cue-display-state
-
-    cue.displayState = void 0;
-  }
-  /**
-   * VTTCue methods
-   */
-
-
-  VTTCue.prototype.getCueAsHTML = function () {
-    // Assume WebVTT.convertCueToDOMTree is on the global.
-    var WebVTT = window.WebVTT;
-    return WebVTT.convertCueToDOMTree(window, this.text);
-  };
-
-  return VTTCue;
-})());
-// CONCATENATED MODULE: ./src/utils/vttparser.js
-/*
- * Source: https://github.com/mozilla/vtt.js/blob/master/dist/vtt.js#L1716
- */
-
-
-var StringDecoder = function StringDecoder() {
-  return {
-    decode: function decode(data) {
-      if (!data) {
-        return '';
-      }
-
-      if (typeof data !== 'string') {
-        throw new Error('Error - expected string data.');
-      }
-
-      return decodeURIComponent(encodeURIComponent(data));
-    }
-  };
-};
-
-function VTTParser() {
-  this.window = window;
-  this.state = 'INITIAL';
-  this.buffer = '';
-  this.decoder = new StringDecoder();
-  this.regionList = [];
-} // Try to parse input as a time stamp.
-
-
-function parseTimeStamp(input) {
-  function computeSeconds(h, m, s, f) {
-    return (h | 0) * 3600 + (m | 0) * 60 + (s | 0) + (f | 0) / 1000;
-  }
-
-  var m = input.match(/^(\d+):(\d{2})(:\d{2})?\.(\d{3})/);
-
-  if (!m) {
-    return null;
-  }
-
-  if (m[3]) {
-    // Timestamp takes the form of [hours]:[minutes]:[seconds].[milliseconds]
-    return computeSeconds(m[1], m[2], m[3].replace(':', ''), m[4]);
-  } else if (m[1] > 59) {
-    // Timestamp takes the form of [hours]:[minutes].[milliseconds]
-    // First position is hours as it's over 59.
-    return computeSeconds(m[1], m[2], 0, m[4]);
-  } else {
-    // Timestamp takes the form of [minutes]:[seconds].[milliseconds]
-    return computeSeconds(0, m[1], m[2], m[4]);
-  }
-} // A settings object holds key/value pairs and will ignore anything but the first
-// assignment to a specific key.
-
-
-function Settings() {
-  this.values = Object.create(null);
-}
-
-Settings.prototype = {
-  // Only accept the first assignment to any key.
-  set: function set(k, v) {
-    if (!this.get(k) && v !== '') {
-      this.values[k] = v;
-    }
-  },
-  // Return the value for a key, or a default value.
-  // If 'defaultKey' is passed then 'dflt' is assumed to be an object with
-  // a number of possible default values as properties where 'defaultKey' is
-  // the key of the property that will be chosen; otherwise it's assumed to be
-  // a single value.
-  get: function get(k, dflt, defaultKey) {
-    if (defaultKey) {
-      return this.has(k) ? this.values[k] : dflt[defaultKey];
-    }
-
-    return this.has(k) ? this.values[k] : dflt;
-  },
-  // Check whether we have a value for a key.
-  has: function has(k) {
-    return k in this.values;
-  },
-  // Accept a setting if its one of the given alternatives.
-  alt: function alt(k, v, a) {
-    for (var n = 0; n < a.length; ++n) {
-      if (v === a[n]) {
-        this.set(k, v);
-        break;
-      }
-    }
-  },
-  // Accept a setting if its a valid (signed) integer.
-  integer: function integer(k, v) {
-    if (/^-?\d+$/.test(v)) {
-      // integer
-      this.set(k, parseInt(v, 10));
-    }
-  },
-  // Accept a setting if its a valid percentage.
-  percent: function percent(k, v) {
-    var m;
-
-    if (m = v.match(/^([\d]{1,3})(\.[\d]*)?%$/)) {
-      v = parseFloat(v);
-
-      if (v >= 0 && v <= 100) {
-        this.set(k, v);
-        return true;
-      }
-    }
-
-    return false;
-  }
-}; // Helper function to parse input into groups separated by 'groupDelim', and
-// interprete each group as a key/value pair separated by 'keyValueDelim'.
-
-function parseOptions(input, callback, keyValueDelim, groupDelim) {
-  var groups = groupDelim ? input.split(groupDelim) : [input];
-
-  for (var i in groups) {
-    if (typeof groups[i] !== 'string') {
-      continue;
-    }
-
-    var kv = groups[i].split(keyValueDelim);
-
-    if (kv.length !== 2) {
-      continue;
-    }
-
-    var k = kv[0];
-    var v = kv[1];
-    callback(k, v);
-  }
-}
-
-var defaults = new vttcue(0, 0, 0); // 'middle' was changed to 'center' in the spec: https://github.com/w3c/webvtt/pull/244
-//  Safari doesn't yet support this change, but FF and Chrome do.
-
-var center = defaults.align === 'middle' ? 'middle' : 'center';
-
-function parseCue(input, cue, regionList) {
-  // Remember the original input if we need to throw an error.
-  var oInput = input; // 4.1 WebVTT timestamp
-
-  function consumeTimeStamp() {
-    var ts = parseTimeStamp(input);
-
-    if (ts === null) {
-      throw new Error('Malformed timestamp: ' + oInput);
-    } // Remove time stamp from input.
-
-
-    input = input.replace(/^[^\sa-zA-Z-]+/, '');
-    return ts;
-  } // 4.4.2 WebVTT cue settings
-
-
-  function consumeCueSettings(input, cue) {
-    var settings = new Settings();
-    parseOptions(input, function (k, v) {
-      switch (k) {
-        case 'region':
-          // Find the last region we parsed with the same region id.
-          for (var i = regionList.length - 1; i >= 0; i--) {
-            if (regionList[i].id === v) {
-              settings.set(k, regionList[i].region);
-              break;
-            }
-          }
-
-          break;
-
-        case 'vertical':
-          settings.alt(k, v, ['rl', 'lr']);
-          break;
-
-        case 'line':
-          var vals = v.split(','),
-              vals0 = vals[0];
-          settings.integer(k, vals0);
-
-          if (settings.percent(k, vals0)) {
-            settings.set('snapToLines', false);
-          }
-
-          settings.alt(k, vals0, ['auto']);
-
-          if (vals.length === 2) {
-            settings.alt('lineAlign', vals[1], ['start', center, 'end']);
-          }
-
-          break;
-
-        case 'position':
-          vals = v.split(',');
-          settings.percent(k, vals[0]);
-
-          if (vals.length === 2) {
-            settings.alt('positionAlign', vals[1], ['start', center, 'end', 'line-left', 'line-right', 'auto']);
-          }
-
-          break;
-
-        case 'size':
-          settings.percent(k, v);
-          break;
-
-        case 'align':
-          settings.alt(k, v, ['start', center, 'end', 'left', 'right']);
-          break;
-      }
-    }, /:/, /\s/); // Apply default values for any missing fields.
-
-    cue.region = settings.get('region', null);
-    cue.vertical = settings.get('vertical', '');
-    var line = settings.get('line', 'auto');
-
-    if (line === 'auto' && defaults.line === -1) {
-      // set numeric line number for Safari
-      line = -1;
-    }
-
-    cue.line = line;
-    cue.lineAlign = settings.get('lineAlign', 'start');
-    cue.snapToLines = settings.get('snapToLines', true);
-    cue.size = settings.get('size', 100);
-    cue.align = settings.get('align', center);
-    var position = settings.get('position', 'auto');
-
-    if (position === 'auto' && defaults.position === 50) {
-      // set numeric position for Safari
-      position = cue.align === 'start' || cue.align === 'left' ? 0 : cue.align === 'end' || cue.align === 'right' ? 100 : 50;
-    }
-
-    cue.position = position;
-  }
-
-  function skipWhitespace() {
-    input = input.replace(/^\s+/, '');
-  } // 4.1 WebVTT cue timings.
-
-
-  skipWhitespace();
-  cue.startTime = consumeTimeStamp(); // (1) collect cue start time
-
-  skipWhitespace();
-
-  if (input.substr(0, 3) !== '-->') {
-    // (3) next characters must match '-->'
-    throw new Error('Malformed time stamp (time stamps must be separated by \'-->\'): ' + oInput);
-  }
-
-  input = input.substr(3);
-  skipWhitespace();
-  cue.endTime = consumeTimeStamp(); // (5) collect cue end time
-  // 4.1 WebVTT cue settings list.
-
-  skipWhitespace();
-  consumeCueSettings(input, cue);
-}
-
-function fixLineBreaks(input) {
-  return input.replace(/<br(?: \/)?>/gi, '\n');
-}
-
-VTTParser.prototype = {
-  parse: function parse(data) {
-    var self = this; // If there is no data then we won't decode it, but will just try to parse
-    // whatever is in buffer already. This may occur in circumstances, for
-    // example when flush() is called.
-
-    if (data) {
-      // Try to decode the data that we received.
-      self.buffer += self.decoder.decode(data, {
-        stream: true
-      });
-    }
-
-    function collectNextLine() {
-      var buffer = self.buffer;
-      var pos = 0;
-      buffer = fixLineBreaks(buffer);
-
-      while (pos < buffer.length && buffer[pos] !== '\r' && buffer[pos] !== '\n') {
-        ++pos;
-      }
-
-      var line = buffer.substr(0, pos); // Advance the buffer early in case we fail below.
-
-      if (buffer[pos] === '\r') {
-        ++pos;
-      }
-
-      if (buffer[pos] === '\n') {
-        ++pos;
-      }
-
-      self.buffer = buffer.substr(pos);
-      return line;
-    } // 3.2 WebVTT metadata header syntax
-
-
-    function parseHeader(input) {
-      parseOptions(input, function (k, v) {
-        switch (k) {
-          case 'Region':
-            // 3.3 WebVTT region metadata header syntax
-            // console.log('parse region', v);
-            // parseRegion(v);
-            break;
-        }
-      }, /:/);
-    } // 5.1 WebVTT file parsing.
-
-
-    try {
-      var line;
-
-      if (self.state === 'INITIAL') {
-        // We can't start parsing until we have the first line.
-        if (!/\r\n|\n/.test(self.buffer)) {
-          return this;
-        }
-
-        line = collectNextLine(); // strip of UTF-8 BOM if any
-        // https://en.wikipedia.org/wiki/Byte_order_mark#UTF-8
-
-        var m = line.match(/^()?WEBVTT([ \t].*)?$/);
-
-        if (!m || !m[0]) {
-          throw new Error('Malformed WebVTT signature.');
-        }
-
-        self.state = 'HEADER';
-      }
-
-      var alreadyCollectedLine = false;
-
-      while (self.buffer) {
-        // We can't parse a line until we have the full line.
-        if (!/\r\n|\n/.test(self.buffer)) {
-          return this;
-        }
-
-        if (!alreadyCollectedLine) {
-          line = collectNextLine();
-        } else {
-          alreadyCollectedLine = false;
-        }
-
-        switch (self.state) {
-          case 'HEADER':
-            // 13-18 - Allow a header (metadata) under the WEBVTT line.
-            if (/:/.test(line)) {
-              parseHeader(line);
-            } else if (!line) {
-              // An empty line terminates the header and starts the body (cues).
-              self.state = 'ID';
-            }
-
-            continue;
-
-          case 'NOTE':
-            // Ignore NOTE blocks.
-            if (!line) {
-              self.state = 'ID';
-            }
-
-            continue;
-
-          case 'ID':
-            // Check for the start of NOTE blocks.
-            if (/^NOTE($|[ \t])/.test(line)) {
-              self.state = 'NOTE';
-              break;
-            } // 19-29 - Allow any number of line terminators, then initialize new cue values.
-
-
-            if (!line) {
-              continue;
-            }
-
-            self.cue = new vttcue(0, 0, '');
-            self.state = 'CUE'; // 30-39 - Check if self line contains an optional identifier or timing data.
-
-            if (line.indexOf('-->') === -1) {
-              self.cue.id = line;
-              continue;
-            }
-
-          // Process line as start of a cue.
-
-          /* falls through */
-
-          case 'CUE':
-            // 40 - Collect cue timings and settings.
-            try {
-              parseCue(line, self.cue, self.regionList);
-            } catch (e) {
-              // In case of an error ignore rest of the cue.
-              self.cue = null;
-              self.state = 'BADCUE';
-              continue;
-            }
-
-            self.state = 'CUETEXT';
-            continue;
-
-          case 'CUETEXT':
-            var hasSubstring = line.indexOf('-->') !== -1; // 34 - If we have an empty line then report the cue.
-            // 35 - If we have the special substring '-->' then report the cue,
-            // but do not collect the line as we need to process the current
-            // one as a new cue.
-
-            if (!line || hasSubstring && (alreadyCollectedLine = true)) {
-              // We are done parsing self cue.
-              if (self.oncue) {
-                self.oncue(self.cue);
-              }
-
-              self.cue = null;
-              self.state = 'ID';
-              continue;
-            }
-
-            if (self.cue.text) {
-              self.cue.text += '\n';
-            }
-
-            self.cue.text += line;
-            continue;
-
-          case 'BADCUE':
-            // BADCUE
-            // 54-62 - Collect and discard the remaining cue.
-            if (!line) {
-              self.state = 'ID';
-            }
-
-            continue;
-        }
-      }
-    } catch (e) {
-      // If we are currently parsing a cue, report what we have.
-      if (self.state === 'CUETEXT' && self.cue && self.oncue) {
-        self.oncue(self.cue);
-      }
-
-      self.cue = null; // Enter BADWEBVTT state if header was not parsed correctly otherwise
-      // another exception occurred so enter BADCUE state.
-
-      self.state = self.state === 'INITIAL' ? 'BADWEBVTT' : 'BADCUE';
-    }
-
-    return this;
-  },
-  flush: function flush() {
-    var self = this;
-
-    try {
-      // Finish decoding the stream.
-      self.buffer += self.decoder.decode(); // Synthesize the end of the current cue or region.
-
-      if (self.cue || self.state === 'HEADER') {
-        self.buffer += '\n\n';
-        self.parse();
-      } // If we've flushed, parsed, and we're still on the INITIAL state then
-      // that means we don't have enough of the stream to parse the first
-      // line.
-
-
-      if (self.state === 'INITIAL') {
-        throw new Error('Malformed WebVTT signature.');
-      }
-    } catch (e) {
-      throw e;
-    }
-
-    if (self.onflush) {
-      self.onflush();
-    }
-
-    return this;
-  }
-};
-
-/* harmony default export */ var vttparser = (VTTParser);
-// CONCATENATED MODULE: ./src/utils/cues.ts
-
-function newCue(track, startTime, endTime, captionScreen) {
-  var result = [];
-  var row; // the type data states this is VTTCue, but it can potentially be a TextTrackCue on old browsers
-
-  var cue;
-  var indenting;
-  var indent;
-  var text;
-  var VTTCue = window.VTTCue || TextTrackCue;
-
-  for (var r = 0; r < captionScreen.rows.length; r++) {
-    row = captionScreen.rows[r];
-    indenting = true;
-    indent = 0;
-    text = '';
-
-    if (!row.isEmpty()) {
-      for (var c = 0; c < row.chars.length; c++) {
-        if (row.chars[c].uchar.match(/\s/) && indenting) {
-          indent++;
-        } else {
-          text += row.chars[c].uchar;
-          indenting = false;
-        }
-      } // To be used for cleaning-up orphaned roll-up captions
-
-
-      row.cueStartTime = startTime; // Give a slight bump to the endTime if it's equal to startTime to avoid a SyntaxError in IE
-
-      if (startTime === endTime) {
-        endTime += 0.0001;
-      }
-
-      cue = new VTTCue(startTime, endTime, fixLineBreaks(text.trim()));
-
-      if (indent >= 16) {
-        indent--;
-      } else {
-        indent++;
-      }
-
-      cue.line = r + 1;
-      cue.align = 'left'; // Clamp the position between 0 and 100 - if out of these bounds, Firefox throws an exception and captions break
-
-      cue.position = Math.max(0, Math.min(100, 100 * (indent / 32)));
-      result.push(cue);
-    }
-  }
-
-  if (track && result.length) {
-    // Sort bottom cues in reverse order so that they render in line order when overlapping in Chrome
-    var sortedCues = result.sort(function (cueA, cueB) {
-      if (cueA.line > 8 && cueB.line > 8) {
-        return cueB.line - cueA.line;
-      }
-
-      return cueA.line - cueB.line;
-    });
-
-    for (var i = 0; i < sortedCues.length; i++) {
-      track.addCue(sortedCues[i]);
-    }
-  }
-
-  return result;
-}
-// CONCATENATED MODULE: ./src/utils/cea-608-parser.ts
-
-/**
- *
- * This code was ported from the dash.js project at:
- *   https://github.com/Dash-Industry-Forum/dash.js/blob/development/externals/cea608-parser.js
- *   https://github.com/Dash-Industry-Forum/dash.js/commit/8269b26a761e0853bb21d78780ed945144ecdd4d#diff-71bc295a2d6b6b7093a1d3290d53a4b2
- *
- * The original copyright appears below:
- *
- * The copyright in this software is being made available under the BSD License,
- * included below. This software may be subject to other third party and contributor
- * rights, including patent rights, and no such rights are granted under this license.
- *
- * Copyright (c) 2015-2016, DASH Industry Forum.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *  1. Redistributions of source code must retain the above copyright notice, this
- *  list of conditions and the following disclaimer.
- *  * Redistributions in binary form must reproduce the above copyright notice,
- *  this list of conditions and the following disclaimer in the documentation and/or
- *  other materials provided with the distribution.
- *  2. Neither the name of Dash Industry Forum nor the names of its
- *  contributors may be used to endorse or promote products derived from this software
- *  without specific prior written permission.
- *
- *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY
- *  EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- *  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- *  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- *  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- *  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- *  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- *  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- *  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- *  POSSIBILITY OF SUCH DAMAGE.
- */
-
-/**
- *  Exceptions from regular ASCII. CodePoints are mapped to UTF-16 codes
- */
-
-var specialCea608CharsCodes = {
-  0x2a: 0xe1,
-  // lowercase a, acute accent
-  0x5c: 0xe9,
-  // lowercase e, acute accent
-  0x5e: 0xed,
-  // lowercase i, acute accent
-  0x5f: 0xf3,
-  // lowercase o, acute accent
-  0x60: 0xfa,
-  // lowercase u, acute accent
-  0x7b: 0xe7,
-  // lowercase c with cedilla
-  0x7c: 0xf7,
-  // division symbol
-  0x7d: 0xd1,
-  // uppercase N tilde
-  0x7e: 0xf1,
-  // lowercase n tilde
-  0x7f: 0x2588,
-  // Full block
-  // THIS BLOCK INCLUDES THE 16 EXTENDED (TWO-BYTE) LINE 21 CHARACTERS
-  // THAT COME FROM HI BYTE=0x11 AND LOW BETWEEN 0x30 AND 0x3F
-  // THIS MEANS THAT \x50 MUST BE ADDED TO THE VALUES
-  0x80: 0xae,
-  // Registered symbol (R)
-  0x81: 0xb0,
-  // degree sign
-  0x82: 0xbd,
-  // 1/2 symbol
-  0x83: 0xbf,
-  // Inverted (open) question mark
-  0x84: 0x2122,
-  // Trademark symbol (TM)
-  0x85: 0xa2,
-  // Cents symbol
-  0x86: 0xa3,
-  // Pounds sterling
-  0x87: 0x266a,
-  // Music 8'th note
-  0x88: 0xe0,
-  // lowercase a, grave accent
-  0x89: 0x20,
-  // transparent space (regular)
-  0x8a: 0xe8,
-  // lowercase e, grave accent
-  0x8b: 0xe2,
-  // lowercase a, circumflex accent
-  0x8c: 0xea,
-  // lowercase e, circumflex accent
-  0x8d: 0xee,
-  // lowercase i, circumflex accent
-  0x8e: 0xf4,
-  // lowercase o, circumflex accent
-  0x8f: 0xfb,
-  // lowercase u, circumflex accent
-  // THIS BLOCK INCLUDES THE 32 EXTENDED (TWO-BYTE) LINE 21 CHARACTERS
-  // THAT COME FROM HI BYTE=0x12 AND LOW BETWEEN 0x20 AND 0x3F
-  0x90: 0xc1,
-  // capital letter A with acute
-  0x91: 0xc9,
-  // capital letter E with acute
-  0x92: 0xd3,
-  // capital letter O with acute
-  0x93: 0xda,
-  // capital letter U with acute
-  0x94: 0xdc,
-  // capital letter U with diaresis
-  0x95: 0xfc,
-  // lowercase letter U with diaeresis
-  0x96: 0x2018,
-  // opening single quote
-  0x97: 0xa1,
-  // inverted exclamation mark
-  0x98: 0x2a,
-  // asterisk
-  0x99: 0x2019,
-  // closing single quote
-  0x9a: 0x2501,
-  // box drawings heavy horizontal
-  0x9b: 0xa9,
-  // copyright sign
-  0x9c: 0x2120,
-  // Service mark
-  0x9d: 0x2022,
-  // (round) bullet
-  0x9e: 0x201c,
-  // Left double quotation mark
-  0x9f: 0x201d,
-  // Right double quotation mark
-  0xa0: 0xc0,
-  // uppercase A, grave accent
-  0xa1: 0xc2,
-  // uppercase A, circumflex
-  0xa2: 0xc7,
-  // uppercase C with cedilla
-  0xa3: 0xc8,
-  // uppercase E, grave accent
-  0xa4: 0xca,
-  // uppercase E, circumflex
-  0xa5: 0xcb,
-  // capital letter E with diaresis
-  0xa6: 0xeb,
-  // lowercase letter e with diaresis
-  0xa7: 0xce,
-  // uppercase I, circumflex
-  0xa8: 0xcf,
-  // uppercase I, with diaresis
-  0xa9: 0xef,
-  // lowercase i, with diaresis
-  0xaa: 0xd4,
-  // uppercase O, circumflex
-  0xab: 0xd9,
-  // uppercase U, grave accent
-  0xac: 0xf9,
-  // lowercase u, grave accent
-  0xad: 0xdb,
-  // uppercase U, circumflex
-  0xae: 0xab,
-  // left-pointing double angle quotation mark
-  0xaf: 0xbb,
-  // right-pointing double angle quotation mark
-  // THIS BLOCK INCLUDES THE 32 EXTENDED (TWO-BYTE) LINE 21 CHARACTERS
-  // THAT COME FROM HI BYTE=0x13 AND LOW BETWEEN 0x20 AND 0x3F
-  0xb0: 0xc3,
-  // Uppercase A, tilde
-  0xb1: 0xe3,
-  // Lowercase a, tilde
-  0xb2: 0xcd,
-  // Uppercase I, acute accent
-  0xb3: 0xcc,
-  // Uppercase I, grave accent
-  0xb4: 0xec,
-  // Lowercase i, grave accent
-  0xb5: 0xd2,
-  // Uppercase O, grave accent
-  0xb6: 0xf2,
-  // Lowercase o, grave accent
-  0xb7: 0xd5,
-  // Uppercase O, tilde
-  0xb8: 0xf5,
-  // Lowercase o, tilde
-  0xb9: 0x7b,
-  // Open curly brace
-  0xba: 0x7d,
-  // Closing curly brace
-  0xbb: 0x5c,
-  // Backslash
-  0xbc: 0x5e,
-  // Caret
-  0xbd: 0x5f,
-  // Underscore
-  0xbe: 0x7c,
-  // Pipe (vertical line)
-  0xbf: 0x223c,
-  // Tilde operator
-  0xc0: 0xc4,
-  // Uppercase A, umlaut
-  0xc1: 0xe4,
-  // Lowercase A, umlaut
-  0xc2: 0xd6,
-  // Uppercase O, umlaut
-  0xc3: 0xf6,
-  // Lowercase o, umlaut
-  0xc4: 0xdf,
-  // Esszett (sharp S)
-  0xc5: 0xa5,
-  // Yen symbol
-  0xc6: 0xa4,
-  // Generic currency sign
-  0xc7: 0x2503,
-  // Box drawings heavy vertical
-  0xc8: 0xc5,
-  // Uppercase A, ring
-  0xc9: 0xe5,
-  // Lowercase A, ring
-  0xca: 0xd8,
-  // Uppercase O, stroke
-  0xcb: 0xf8,
-  // Lowercase o, strok
-  0xcc: 0x250f,
-  // Box drawings heavy down and right
-  0xcd: 0x2513,
-  // Box drawings heavy down and left
-  0xce: 0x2517,
-  // Box drawings heavy up and right
-  0xcf: 0x251b // Box drawings heavy up and left
-
-};
-/**
- * Utils
- */
-
-var getCharForByte = function getCharForByte(_byte) {
-  var charCode = _byte;
-
-  if (specialCea608CharsCodes.hasOwnProperty(_byte)) {
-    charCode = specialCea608CharsCodes[_byte];
-  }
-
-  return String.fromCharCode(charCode);
-};
-
-var NR_ROWS = 15;
-var NR_COLS = 100; // Tables to look up row from PAC data
-
-var rowsLowCh1 = {
-  0x11: 1,
-  0x12: 3,
-  0x15: 5,
-  0x16: 7,
-  0x17: 9,
-  0x10: 11,
-  0x13: 12,
-  0x14: 14
-};
-var rowsHighCh1 = {
-  0x11: 2,
-  0x12: 4,
-  0x15: 6,
-  0x16: 8,
-  0x17: 10,
-  0x13: 13,
-  0x14: 15
-};
-var rowsLowCh2 = {
-  0x19: 1,
-  0x1A: 3,
-  0x1D: 5,
-  0x1E: 7,
-  0x1F: 9,
-  0x18: 11,
-  0x1B: 12,
-  0x1C: 14
-};
-var rowsHighCh2 = {
-  0x19: 2,
-  0x1A: 4,
-  0x1D: 6,
-  0x1E: 8,
-  0x1F: 10,
-  0x1B: 13,
-  0x1C: 15
-};
-var backgroundColors = ['white', 'green', 'blue', 'cyan', 'red', 'yellow', 'magenta', 'black', 'transparent'];
-var VerboseLevel;
-
-(function (VerboseLevel) {
-  VerboseLevel[VerboseLevel["ERROR"] = 0] = "ERROR";
-  VerboseLevel[VerboseLevel["TEXT"] = 1] = "TEXT";
-  VerboseLevel[VerboseLevel["WARNING"] = 2] = "WARNING";
-  VerboseLevel[VerboseLevel["INFO"] = 2] = "INFO";
-  VerboseLevel[VerboseLevel["DEBUG"] = 3] = "DEBUG";
-  VerboseLevel[VerboseLevel["DATA"] = 3] = "DATA";
-})(VerboseLevel || (VerboseLevel = {}));
-
-function setLastCmd(a, b, cmdHistory) {
-  cmdHistory.a = a;
-  cmdHistory.b = b;
-}
-
-function hasCmdRepeated(a, b, cmdHistory) {
-  return cmdHistory.a === a && cmdHistory.b === b;
-}
-
-function createCmdHistory() {
-  return {
-    a: null,
-    b: null
-  };
-}
-
-var cea_608_parser_CaptionsLogger = /*#__PURE__*/function () {
-  function CaptionsLogger() {
-    this.time = null;
-    this.verboseLevel = VerboseLevel.ERROR;
-  }
-
-  var _proto = CaptionsLogger.prototype;
-
-  _proto.log = function log(severity, msg) {
-    if (this.verboseLevel >= severity) {
-      logger["logger"].log(this.time + " [" + severity + "] " + msg);
-    }
-  };
-
-  return CaptionsLogger;
-}();
-
-var numArrayToHexArray = function numArrayToHexArray(numArray) {
-  var hexArray = [];
-
-  for (var j = 0; j < numArray.length; j++) {
-    hexArray.push(numArray[j].toString(16));
-  }
-
-  return hexArray;
-};
-
-var PenState = /*#__PURE__*/function () {
-  function PenState(foreground, underline, italics, background, flash) {
-    this.foreground = void 0;
-    this.underline = void 0;
-    this.italics = void 0;
-    this.background = void 0;
-    this.flash = void 0;
-    this.foreground = foreground || 'white';
-    this.underline = underline || false;
-    this.italics = italics || false;
-    this.background = background || 'black';
-    this.flash = flash || false;
-  }
-
-  var _proto2 = PenState.prototype;
-
-  _proto2.reset = function reset() {
-    this.foreground = 'white';
-    this.underline = false;
-    this.italics = false;
-    this.background = 'black';
-    this.flash = false;
-  };
-
-  _proto2.setStyles = function setStyles(styles) {
-    var attribs = ['foreground', 'underline', 'italics', 'background', 'flash'];
-
-    for (var i = 0; i < attribs.length; i++) {
-      var style = attribs[i];
-
-      if (styles.hasOwnProperty(style)) {
-        this[style] = styles[style];
-      }
-    }
-  };
-
-  _proto2.isDefault = function isDefault() {
-    return this.foreground === 'white' && !this.underline && !this.italics && this.background === 'black' && !this.flash;
-  };
-
-  _proto2.equals = function equals(other) {
-    return this.foreground === other.foreground && this.underline === other.underline && this.italics === other.italics && this.background === other.background && this.flash === other.flash;
-  };
-
-  _proto2.copy = function copy(newPenState) {
-    this.foreground = newPenState.foreground;
-    this.underline = newPenState.underline;
-    this.italics = newPenState.italics;
-    this.background = newPenState.background;
-    this.flash = newPenState.flash;
-  };
-
-  _proto2.toString = function toString() {
-    return 'color=' + this.foreground + ', underline=' + this.underline + ', italics=' + this.italics + ', background=' + this.background + ', flash=' + this.flash;
-  };
-
-  return PenState;
-}();
-/**
- * Unicode character with styling and background.
- * @constructor
- */
-
-
-var StyledUnicodeChar = /*#__PURE__*/function () {
-  function StyledUnicodeChar(uchar, foreground, underline, italics, background, flash) {
-    this.uchar = void 0;
-    this.penState = void 0;
-    this.uchar = uchar || ' '; // unicode character
-
-    this.penState = new PenState(foreground, underline, italics, background, flash);
-  }
-
-  var _proto3 = StyledUnicodeChar.prototype;
-
-  _proto3.reset = function reset() {
-    this.uchar = ' ';
-    this.penState.reset();
-  };
-
-  _proto3.setChar = function setChar(uchar, newPenState) {
-    this.uchar = uchar;
-    this.penState.copy(newPenState);
-  };
-
-  _proto3.setPenState = function setPenState(newPenState) {
-    this.penState.copy(newPenState);
-  };
-
-  _proto3.equals = function equals(other) {
-    return this.uchar === other.uchar && this.penState.equals(other.penState);
-  };
-
-  _proto3.copy = function copy(newChar) {
-    this.uchar = newChar.uchar;
-    this.penState.copy(newChar.penState);
-  };
-
-  _proto3.isEmpty = function isEmpty() {
-    return this.uchar === ' ' && this.penState.isDefault();
-  };
-
-  return StyledUnicodeChar;
-}();
-/**
- * CEA-608 row consisting of NR_COLS instances of StyledUnicodeChar.
- * @constructor
- */
-
-
-var Row = /*#__PURE__*/function () {
-  function Row(logger) {
-    this.chars = void 0;
-    this.pos = void 0;
-    this.currPenState = void 0;
-    this.cueStartTime = void 0;
-    this.logger = void 0;
-    this.chars = [];
-
-    for (var i = 0; i < NR_COLS; i++) {
-      this.chars.push(new StyledUnicodeChar());
-    }
-
-    this.logger = logger;
-    this.pos = 0;
-    this.currPenState = new PenState();
-  }
-
-  var _proto4 = Row.prototype;
-
-  _proto4.equals = function equals(other) {
-    var equal = true;
-
-    for (var i = 0; i < NR_COLS; i++) {
-      if (!this.chars[i].equals(other.chars[i])) {
-        equal = false;
-        break;
-      }
-    }
-
-    return equal;
-  };
-
-  _proto4.copy = function copy(other) {
-    for (var i = 0; i < NR_COLS; i++) {
-      this.chars[i].copy(other.chars[i]);
-    }
-  };
-
-  _proto4.isEmpty = function isEmpty() {
-    var empty = true;
-
-    for (var i = 0; i < NR_COLS; i++) {
-      if (!this.chars[i].isEmpty()) {
-        empty = false;
-        break;
-      }
-    }
-
-    return empty;
-  }
-  /**
-   *  Set the cursor to a valid column.
-   */
-  ;
-
-  _proto4.setCursor = function setCursor(absPos) {
-    if (this.pos !== absPos) {
-      this.pos = absPos;
-    }
-
-    if (this.pos < 0) {
-      this.logger.log(VerboseLevel.DEBUG, 'Negative cursor position ' + this.pos);
-      this.pos = 0;
-    } else if (this.pos > NR_COLS) {
-      this.logger.log(VerboseLevel.DEBUG, 'Too large cursor position ' + this.pos);
-      this.pos = NR_COLS;
-    }
-  }
-  /**
-   * Move the cursor relative to current position.
-   */
-  ;
-
-  _proto4.moveCursor = function moveCursor(relPos) {
-    var newPos = this.pos + relPos;
-
-    if (relPos > 1) {
-      for (var i = this.pos + 1; i < newPos + 1; i++) {
-        this.chars[i].setPenState(this.currPenState);
-      }
-    }
-
-    this.setCursor(newPos);
-  }
-  /**
-   * Backspace, move one step back and clear character.
-   */
-  ;
-
-  _proto4.backSpace = function backSpace() {
-    this.moveCursor(-1);
-    this.chars[this.pos].setChar(' ', this.currPenState);
-  };
-
-  _proto4.insertChar = function insertChar(_byte2) {
-    if (_byte2 >= 0x90) {
-      // Extended char
-      this.backSpace();
-    }
-
-    var _char = getCharForByte(_byte2);
-
-    if (this.pos >= NR_COLS) {
-      this.logger.log(VerboseLevel.ERROR, 'Cannot insert ' + _byte2.toString(16) + ' (' + _char + ') at position ' + this.pos + '. Skipping it!');
-      return;
-    }
-
-    this.chars[this.pos].setChar(_char, this.currPenState);
-    this.moveCursor(1);
-  };
-
-  _proto4.clearFromPos = function clearFromPos(startPos) {
-    var i;
-
-    for (i = startPos; i < NR_COLS; i++) {
-      this.chars[i].reset();
-    }
-  };
-
-  _proto4.clear = function clear() {
-    this.clearFromPos(0);
-    this.pos = 0;
-    this.currPenState.reset();
-  };
-
-  _proto4.clearToEndOfRow = function clearToEndOfRow() {
-    this.clearFromPos(this.pos);
-  };
-
-  _proto4.getTextString = function getTextString() {
-    var chars = [];
-    var empty = true;
-
-    for (var i = 0; i < NR_COLS; i++) {
-      var _char2 = this.chars[i].uchar;
-
-      if (_char2 !== ' ') {
-        empty = false;
-      }
-
-      chars.push(_char2);
-    }
-
-    if (empty) {
-      return '';
-    } else {
-      return chars.join('');
-    }
-  };
-
-  _proto4.setPenStyles = function setPenStyles(styles) {
-    this.currPenState.setStyles(styles);
-    var currChar = this.chars[this.pos];
-    currChar.setPenState(this.currPenState);
-  };
-
-  return Row;
-}();
-/**
- * Keep a CEA-608 screen of 32x15 styled characters
- * @constructor
- */
-
-var CaptionScreen = /*#__PURE__*/function () {
-  function CaptionScreen(logger) {
-    this.rows = void 0;
-    this.currRow = void 0;
-    this.nrRollUpRows = void 0;
-    this.lastOutputScreen = void 0;
-    this.logger = void 0;
-    this.rows = [];
-
-    for (var i = 0; i < NR_ROWS; i++) {
-      this.rows.push(new Row(logger));
-    } // Note that we use zero-based numbering (0-14)
-
-
-    this.logger = logger;
-    this.currRow = NR_ROWS - 1;
-    this.nrRollUpRows = null;
-    this.lastOutputScreen = null;
-    this.reset();
-  }
-
-  var _proto5 = CaptionScreen.prototype;
-
-  _proto5.reset = function reset() {
-    for (var i = 0; i < NR_ROWS; i++) {
-      this.rows[i].clear();
-    }
-
-    this.currRow = NR_ROWS - 1;
-  };
-
-  _proto5.equals = function equals(other) {
-    var equal = true;
-
-    for (var i = 0; i < NR_ROWS; i++) {
-      if (!this.rows[i].equals(other.rows[i])) {
-        equal = false;
-        break;
-      }
-    }
-
-    return equal;
-  };
-
-  _proto5.copy = function copy(other) {
-    for (var i = 0; i < NR_ROWS; i++) {
-      this.rows[i].copy(other.rows[i]);
-    }
-  };
-
-  _proto5.isEmpty = function isEmpty() {
-    var empty = true;
-
-    for (var i = 0; i < NR_ROWS; i++) {
-      if (!this.rows[i].isEmpty()) {
-        empty = false;
-        break;
-      }
-    }
-
-    return empty;
-  };
-
-  _proto5.backSpace = function backSpace() {
-    var row = this.rows[this.currRow];
-    row.backSpace();
-  };
-
-  _proto5.clearToEndOfRow = function clearToEndOfRow() {
-    var row = this.rows[this.currRow];
-    row.clearToEndOfRow();
-  }
-  /**
-   * Insert a character (without styling) in the current row.
-   */
-  ;
-
-  _proto5.insertChar = function insertChar(_char3) {
-    var row = this.rows[this.currRow];
-    row.insertChar(_char3);
-  };
-
-  _proto5.setPen = function setPen(styles) {
-    var row = this.rows[this.currRow];
-    row.setPenStyles(styles);
-  };
-
-  _proto5.moveCursor = function moveCursor(relPos) {
-    var row = this.rows[this.currRow];
-    row.moveCursor(relPos);
-  };
-
-  _proto5.setCursor = function setCursor(absPos) {
-    this.logger.log(VerboseLevel.INFO, 'setCursor: ' + absPos);
-    var row = this.rows[this.currRow];
-    row.setCursor(absPos);
-  };
-
-  _proto5.setPAC = function setPAC(pacData) {
-    this.logger.log(VerboseLevel.INFO, 'pacData = ' + JSON.stringify(pacData));
-    var newRow = pacData.row - 1;
-
-    if (this.nrRollUpRows && newRow < this.nrRollUpRows - 1) {
-      newRow = this.nrRollUpRows - 1;
-    } // Make sure this only affects Roll-up Captions by checking this.nrRollUpRows
-
-
-    if (this.nrRollUpRows && this.currRow !== newRow) {
-      // clear all rows first
-      for (var i = 0; i < NR_ROWS; i++) {
-        this.rows[i].clear();
-      } // Copy this.nrRollUpRows rows from lastOutputScreen and place it in the newRow location
-      // topRowIndex - the start of rows to copy (inclusive index)
-
-
-      var topRowIndex = this.currRow + 1 - this.nrRollUpRows; // We only copy if the last position was already shown.
-      // We use the cueStartTime value to check this.
-
-      var lastOutputScreen = this.lastOutputScreen;
-
-      if (lastOutputScreen) {
-        var prevLineTime = lastOutputScreen.rows[topRowIndex].cueStartTime;
-        var time = this.logger.time;
-
-        if (prevLineTime && time !== null && prevLineTime < time) {
-          for (var _i = 0; _i < this.nrRollUpRows; _i++) {
-            this.rows[newRow - this.nrRollUpRows + _i + 1].copy(lastOutputScreen.rows[topRowIndex + _i]);
-          }
-        }
-      }
-    }
-
-    this.currRow = newRow;
-    var row = this.rows[this.currRow];
-
-    if (pacData.indent !== null) {
-      var indent = pacData.indent;
-      var prevPos = Math.max(indent - 1, 0);
-      row.setCursor(pacData.indent);
-      pacData.color = row.chars[prevPos].penState.foreground;
-    }
-
-    var styles = {
-      foreground: pacData.color,
-      underline: pacData.underline,
-      italics: pacData.italics,
-      background: 'black',
-      flash: false
-    };
-    this.setPen(styles);
-  }
-  /**
-   * Set background/extra foreground, but first do back_space, and then insert space (backwards compatibility).
-   */
-  ;
-
-  _proto5.setBkgData = function setBkgData(bkgData) {
-    this.logger.log(VerboseLevel.INFO, 'bkgData = ' + JSON.stringify(bkgData));
-    this.backSpace();
-    this.setPen(bkgData);
-    this.insertChar(0x20); // Space
-  };
-
-  _proto5.setRollUpRows = function setRollUpRows(nrRows) {
-    this.nrRollUpRows = nrRows;
-  };
-
-  _proto5.rollUp = function rollUp() {
-    if (this.nrRollUpRows === null) {
-      this.logger.log(VerboseLevel.DEBUG, 'roll_up but nrRollUpRows not set yet');
-      return; // Not properly setup
-    }
-
-    this.logger.log(VerboseLevel.TEXT, this.getDisplayText());
-    var topRowIndex = this.currRow + 1 - this.nrRollUpRows;
-    var topRow = this.rows.splice(topRowIndex, 1)[0];
-    topRow.clear();
-    this.rows.splice(this.currRow, 0, topRow);
-    this.logger.log(VerboseLevel.INFO, 'Rolling up'); // this.logger.log(VerboseLevel.TEXT, this.get_display_text())
-  }
-  /**
-   * Get all non-empty rows with as unicode text.
-   */
-  ;
-
-  _proto5.getDisplayText = function getDisplayText(asOneRow) {
-    asOneRow = asOneRow || false;
-    var displayText = [];
-    var text = '';
-    var rowNr = -1;
-
-    for (var i = 0; i < NR_ROWS; i++) {
-      var rowText = this.rows[i].getTextString();
-
-      if (rowText) {
-        rowNr = i + 1;
-
-        if (asOneRow) {
-          displayText.push('Row ' + rowNr + ': \'' + rowText + '\'');
-        } else {
-          displayText.push(rowText.trim());
-        }
-      }
-    }
-
-    if (displayText.length > 0) {
-      if (asOneRow) {
-        text = '[' + displayText.join(' | ') + ']';
-      } else {
-        text = displayText.join('\n');
-      }
-    }
-
-    return text;
-  };
-
-  _proto5.getTextAndFormat = function getTextAndFormat() {
-    return this.rows;
-  };
-
-  return CaptionScreen;
-}(); // var modes = ['MODE_ROLL-UP', 'MODE_POP-ON', 'MODE_PAINT-ON', 'MODE_TEXT'];
-
-var Cea608Channel = /*#__PURE__*/function () {
-  function Cea608Channel(channelNumber, outputFilter, logger) {
-    this.chNr = void 0;
-    this.outputFilter = void 0;
-    this.mode = void 0;
-    this.verbose = void 0;
-    this.displayedMemory = void 0;
-    this.nonDisplayedMemory = void 0;
-    this.lastOutputScreen = void 0;
-    this.currRollUpRow = void 0;
-    this.writeScreen = void 0;
-    this.cueStartTime = void 0;
-    this.logger = void 0;
-    this.chNr = channelNumber;
-    this.outputFilter = outputFilter;
-    this.mode = null;
-    this.verbose = 0;
-    this.displayedMemory = new CaptionScreen(logger);
-    this.nonDisplayedMemory = new CaptionScreen(logger);
-    this.lastOutputScreen = new CaptionScreen(logger);
-    this.currRollUpRow = this.displayedMemory.rows[NR_ROWS - 1];
-    this.writeScreen = this.displayedMemory;
-    this.mode = null;
-    this.cueStartTime = null; // Keeps track of where a cue started.
-
-    this.logger = logger;
-  }
-
-  var _proto6 = Cea608Channel.prototype;
-
-  _proto6.reset = function reset() {
-    this.mode = null;
-    this.displayedMemory.reset();
-    this.nonDisplayedMemory.reset();
-    this.lastOutputScreen.reset();
-    this.outputFilter.reset();
-    this.currRollUpRow = this.displayedMemory.rows[NR_ROWS - 1];
-    this.writeScreen = this.displayedMemory;
-    this.mode = null;
-    this.cueStartTime = null;
-  };
-
-  _proto6.getHandler = function getHandler() {
-    return this.outputFilter;
-  };
-
-  _proto6.setHandler = function setHandler(newHandler) {
-    this.outputFilter = newHandler;
-  };
-
-  _proto6.setPAC = function setPAC(pacData) {
-    this.writeScreen.setPAC(pacData);
-  };
-
-  _proto6.setBkgData = function setBkgData(bkgData) {
-    this.writeScreen.setBkgData(bkgData);
-  };
-
-  _proto6.setMode = function setMode(newMode) {
-    if (newMode === this.mode) {
-      return;
-    }
-
-    this.mode = newMode;
-    this.logger.log(VerboseLevel.INFO, 'MODE=' + newMode);
-
-    if (this.mode === 'MODE_POP-ON') {
-      this.writeScreen = this.nonDisplayedMemory;
-    } else {
-      this.writeScreen = this.displayedMemory;
-      this.writeScreen.reset();
-    }
-
-    if (this.mode !== 'MODE_ROLL-UP') {
-      this.displayedMemory.nrRollUpRows = null;
-      this.nonDisplayedMemory.nrRollUpRows = null;
-    }
-
-    this.mode = newMode;
-  };
-
-  _proto6.insertChars = function insertChars(chars) {
-    for (var i = 0; i < chars.length; i++) {
-      this.writeScreen.insertChar(chars[i]);
-    }
-
-    var screen = this.writeScreen === this.displayedMemory ? 'DISP' : 'NON_DISP';
-    this.logger.log(VerboseLevel.INFO, screen + ': ' + this.writeScreen.getDisplayText(true));
-
-    if (this.mode === 'MODE_PAINT-ON' || this.mode === 'MODE_ROLL-UP') {
-      this.logger.log(VerboseLevel.TEXT, 'DISPLAYED: ' + this.displayedMemory.getDisplayText(true));
-      this.outputDataUpdate();
-    }
-  };
-
-  _proto6.ccRCL = function ccRCL() {
-    // Resume Caption Loading (switch mode to Pop On)
-    this.logger.log(VerboseLevel.INFO, 'RCL - Resume Caption Loading');
-    this.setMode('MODE_POP-ON');
-  };
-
-  _proto6.ccBS = function ccBS() {
-    // BackSpace
-    this.logger.log(VerboseLevel.INFO, 'BS - BackSpace');
-
-    if (this.mode === 'MODE_TEXT') {
-      return;
-    }
-
-    this.writeScreen.backSpace();
-
-    if (this.writeScreen === this.displayedMemory) {
-      this.outputDataUpdate();
-    }
-  };
-
-  _proto6.ccAOF = function ccAOF() {// Reserved (formerly Alarm Off)
-  };
-
-  _proto6.ccAON = function ccAON() {// Reserved (formerly Alarm On)
-  };
-
-  _proto6.ccDER = function ccDER() {
-    // Delete to End of Row
-    this.logger.log(VerboseLevel.INFO, 'DER- Delete to End of Row');
-    this.writeScreen.clearToEndOfRow();
-    this.outputDataUpdate();
-  };
-
-  _proto6.ccRU = function ccRU(nrRows) {
-    // Roll-Up Captions-2,3,or 4 Rows
-    this.logger.log(VerboseLevel.INFO, 'RU(' + nrRows + ') - Roll Up');
-    this.writeScreen = this.displayedMemory;
-    this.setMode('MODE_ROLL-UP');
-    this.writeScreen.setRollUpRows(nrRows);
-  };
-
-  _proto6.ccFON = function ccFON() {
-    // Flash On
-    this.logger.log(VerboseLevel.INFO, 'FON - Flash On');
-    this.writeScreen.setPen({
-      flash: true
-    });
-  };
-
-  _proto6.ccRDC = function ccRDC() {
-    // Resume Direct Captioning (switch mode to PaintOn)
-    this.logger.log(VerboseLevel.INFO, 'RDC - Resume Direct Captioning');
-    this.setMode('MODE_PAINT-ON');
-  };
-
-  _proto6.ccTR = function ccTR() {
-    // Text Restart in text mode (not supported, however)
-    this.logger.log(VerboseLevel.INFO, 'TR');
-    this.setMode('MODE_TEXT');
-  };
-
-  _proto6.ccRTD = function ccRTD() {
-    // Resume Text Display in Text mode (not supported, however)
-    this.logger.log(VerboseLevel.INFO, 'RTD');
-    this.setMode('MODE_TEXT');
-  };
-
-  _proto6.ccEDM = function ccEDM() {
-    // Erase Displayed Memory
-    this.logger.log(VerboseLevel.INFO, 'EDM - Erase Displayed Memory');
-    this.displayedMemory.reset();
-    this.outputDataUpdate(true);
-  };
-
-  _proto6.ccCR = function ccCR() {
-    // Carriage Return
-    this.logger.log(VerboseLevel.INFO, 'CR - Carriage Return');
-    this.writeScreen.rollUp();
-    this.outputDataUpdate(true);
-  };
-
-  _proto6.ccENM = function ccENM() {
-    // Erase Non-Displayed Memory
-    this.logger.log(VerboseLevel.INFO, 'ENM - Erase Non-displayed Memory');
-    this.nonDisplayedMemory.reset();
-  };
-
-  _proto6.ccEOC = function ccEOC() {
-    // End of Caption (Flip Memories)
-    this.logger.log(VerboseLevel.INFO, 'EOC - End Of Caption');
-
-    if (this.mode === 'MODE_POP-ON') {
-      var tmp = this.displayedMemory;
-      this.displayedMemory = this.nonDisplayedMemory;
-      this.nonDisplayedMemory = tmp;
-      this.writeScreen = this.nonDisplayedMemory;
-      this.logger.log(VerboseLevel.TEXT, 'DISP: ' + this.displayedMemory.getDisplayText());
-    }
-
-    this.outputDataUpdate(true);
-  };
-
-  _proto6.ccTO = function ccTO(nrCols) {
-    // Tab Offset 1,2, or 3 columns
-    this.logger.log(VerboseLevel.INFO, 'TO(' + nrCols + ') - Tab Offset');
-    this.writeScreen.moveCursor(nrCols);
-  };
-
-  _proto6.ccMIDROW = function ccMIDROW(secondByte) {
-    // Parse MIDROW command
-    var styles = {
-      flash: false
-    };
-    styles.underline = secondByte % 2 === 1;
-    styles.italics = secondByte >= 0x2e;
-
-    if (!styles.italics) {
-      var colorIndex = Math.floor(secondByte / 2) - 0x10;
-      var colors = ['white', 'green', 'blue', 'cyan', 'red', 'yellow', 'magenta'];
-      styles.foreground = colors[colorIndex];
-    } else {
-      styles.foreground = 'white';
-    }
-
-    this.logger.log(VerboseLevel.INFO, 'MIDROW: ' + JSON.stringify(styles));
-    this.writeScreen.setPen(styles);
-  };
-
-  _proto6.outputDataUpdate = function outputDataUpdate(dispatch) {
-    if (dispatch === void 0) {
-      dispatch = false;
-    }
-
-    var time = this.logger.time;
-
-    if (time === null) {
-      return;
-    }
-
-    if (this.outputFilter) {
-      if (this.cueStartTime === null && !this.displayedMemory.isEmpty()) {
-        // Start of a new cue
-        this.cueStartTime = time;
-      } else {
-        if (!this.displayedMemory.equals(this.lastOutputScreen)) {
-          this.outputFilter.newCue(this.cueStartTime, time, this.lastOutputScreen);
-
-          if (dispatch && this.outputFilter.dispatchCue) {
-            this.outputFilter.dispatchCue();
-          }
-
-          this.cueStartTime = this.displayedMemory.isEmpty() ? null : time;
-        }
-      }
-
-      this.lastOutputScreen.copy(this.displayedMemory);
-    }
-  };
-
-  _proto6.cueSplitAtTime = function cueSplitAtTime(t) {
-    if (this.outputFilter) {
-      if (!this.displayedMemory.isEmpty()) {
-        if (this.outputFilter.newCue) {
-          this.outputFilter.newCue(this.cueStartTime, t, this.displayedMemory);
-        }
-
-        this.cueStartTime = t;
-      }
-    }
-  };
-
-  return Cea608Channel;
-}();
-
-var Cea608Parser = /*#__PURE__*/function () {
-  function Cea608Parser(field, out1, out2) {
-    this.channels = void 0;
-    this.currentChannel = 0;
-    this.cmdHistory = void 0;
-    this.logger = void 0;
-    var logger = new cea_608_parser_CaptionsLogger();
-    this.channels = [null, new Cea608Channel(field, out1, logger), new Cea608Channel(field + 1, out2, logger)];
-    this.cmdHistory = createCmdHistory();
-    this.logger = logger;
-  }
-
-  var _proto7 = Cea608Parser.prototype;
-
-  _proto7.getHandler = function getHandler(channel) {
-    return this.channels[channel].getHandler();
-  };
-
-  _proto7.setHandler = function setHandler(channel, newHandler) {
-    this.channels[channel].setHandler(newHandler);
-  }
-  /**
-   * Add data for time t in forms of list of bytes (unsigned ints). The bytes are treated as pairs.
-   */
-  ;
-
-  _proto7.addData = function addData(time, byteList) {
-    var cmdFound;
-    var a;
-    var b;
-    var charsFound = false;
-    this.logger.time = time;
-
-    for (var i = 0; i < byteList.length; i += 2) {
-      a = byteList[i] & 0x7f;
-      b = byteList[i + 1] & 0x7f;
-
-      if (a === 0 && b === 0) {
-        continue;
-      } else {
-        this.logger.log(VerboseLevel.DATA, '[' + numArrayToHexArray([byteList[i], byteList[i + 1]]) + '] -> (' + numArrayToHexArray([a, b]) + ')');
-      }
-
-      cmdFound = this.parseCmd(a, b);
-
-      if (!cmdFound) {
-        cmdFound = this.parseMidrow(a, b);
-      }
-
-      if (!cmdFound) {
-        cmdFound = this.parsePAC(a, b);
-      }
-
-      if (!cmdFound) {
-        cmdFound = this.parseBackgroundAttributes(a, b);
-      }
-
-      if (!cmdFound) {
-        charsFound = this.parseChars(a, b);
-
-        if (charsFound) {
-          var currChNr = this.currentChannel;
-
-          if (currChNr && currChNr > 0) {
-            var channel = this.channels[currChNr];
-            channel.insertChars(charsFound);
-          } else {
-            this.logger.log(VerboseLevel.WARNING, 'No channel found yet. TEXT-MODE?');
-          }
-        }
-      }
-
-      if (!cmdFound && !charsFound) {
-        this.logger.log(VerboseLevel.WARNING, 'Couldn\'t parse cleaned data ' + numArrayToHexArray([a, b]) + ' orig: ' + numArrayToHexArray([byteList[i], byteList[i + 1]]));
-      }
-    }
-  }
-  /**
-   * Parse Command.
-   * @returns {Boolean} Tells if a command was found
-   */
-  ;
-
-  _proto7.parseCmd = function parseCmd(a, b) {
-    var cmdHistory = this.cmdHistory;
-    var cond1 = (a === 0x14 || a === 0x1C || a === 0x15 || a === 0x1D) && b >= 0x20 && b <= 0x2F;
-    var cond2 = (a === 0x17 || a === 0x1F) && b >= 0x21 && b <= 0x23;
-
-    if (!(cond1 || cond2)) {
-      return false;
-    }
-
-    if (hasCmdRepeated(a, b, cmdHistory)) {
-      setLastCmd(null, null, cmdHistory);
-      this.logger.log(VerboseLevel.DEBUG, 'Repeated command (' + numArrayToHexArray([a, b]) + ') is dropped');
-      return true;
-    }
-
-    var chNr = a === 0x14 || a === 0x15 || a === 0x17 ? 1 : 2;
-    var channel = this.channels[chNr];
-
-    if (a === 0x14 || a === 0x15 || a === 0x1C || a === 0x1D) {
-      if (b === 0x20) {
-        channel.ccRCL();
-      } else if (b === 0x21) {
-        channel.ccBS();
-      } else if (b === 0x22) {
-        channel.ccAOF();
-      } else if (b === 0x23) {
-        channel.ccAON();
-      } else if (b === 0x24) {
-        channel.ccDER();
-      } else if (b === 0x25) {
-        channel.ccRU(2);
-      } else if (b === 0x26) {
-        channel.ccRU(3);
-      } else if (b === 0x27) {
-        channel.ccRU(4);
-      } else if (b === 0x28) {
-        channel.ccFON();
-      } else if (b === 0x29) {
-        channel.ccRDC();
-      } else if (b === 0x2A) {
-        channel.ccTR();
-      } else if (b === 0x2B) {
-        channel.ccRTD();
-      } else if (b === 0x2C) {
-        channel.ccEDM();
-      } else if (b === 0x2D) {
-        channel.ccCR();
-      } else if (b === 0x2E) {
-        channel.ccENM();
-      } else if (b === 0x2F) {
-        channel.ccEOC();
-      }
-    } else {
-      // a == 0x17 || a == 0x1F
-      channel.ccTO(b - 0x20);
-    }
-
-    setLastCmd(a, b, cmdHistory);
-    this.currentChannel = chNr;
-    return true;
-  }
-  /**
-   * Parse midrow styling command
-   * @returns {Boolean}
-   */
-  ;
-
-  _proto7.parseMidrow = function parseMidrow(a, b) {
-    var chNr = 0;
-
-    if ((a === 0x11 || a === 0x19) && b >= 0x20 && b <= 0x2f) {
-      if (a === 0x11) {
-        chNr = 1;
-      } else {
-        chNr = 2;
-      }
-
-      if (chNr !== this.currentChannel) {
-        this.logger.log(VerboseLevel.ERROR, 'Mismatch channel in midrow parsing');
-        return false;
-      }
-
-      var channel = this.channels[chNr];
-
-      if (!channel) {
-        return false;
-      }
-
-      channel.ccMIDROW(b);
-      this.logger.log(VerboseLevel.DEBUG, 'MIDROW (' + numArrayToHexArray([a, b]) + ')');
-      return true;
-    }
-
-    return false;
-  }
-  /**
-   * Parse Preable Access Codes (Table 53).
-   * @returns {Boolean} Tells if PAC found
-   */
-  ;
-
-  _proto7.parsePAC = function parsePAC(a, b) {
-    var row;
-    var cmdHistory = this.cmdHistory;
-    var case1 = (a >= 0x11 && a <= 0x17 || a >= 0x19 && a <= 0x1F) && b >= 0x40 && b <= 0x7F;
-    var case2 = (a === 0x10 || a === 0x18) && b >= 0x40 && b <= 0x5F;
-
-    if (!(case1 || case2)) {
-      return false;
-    }
-
-    if (hasCmdRepeated(a, b, cmdHistory)) {
-      setLastCmd(null, null, cmdHistory);
-      return true; // Repeated commands are dropped (once)
-    }
-
-    var chNr = a <= 0x17 ? 1 : 2;
-
-    if (b >= 0x40 && b <= 0x5F) {
-      row = chNr === 1 ? rowsLowCh1[a] : rowsLowCh2[a];
-    } else {
-      // 0x60 <= b <= 0x7F
-      row = chNr === 1 ? rowsHighCh1[a] : rowsHighCh2[a];
-    }
-
-    var channel = this.channels[chNr];
-
-    if (!channel) {
-      return false;
-    }
-
-    channel.setPAC(this.interpretPAC(row, b));
-    setLastCmd(a, b, cmdHistory);
-    this.currentChannel = chNr;
-    return true;
-  }
-  /**
-   * Interpret the second byte of the pac, and return the information.
-   * @returns {Object} pacData with style parameters.
-   */
-  ;
-
-  _proto7.interpretPAC = function interpretPAC(row, _byte3) {
-    var pacIndex = _byte3;
-    var pacData = {
-      color: null,
-      italics: false,
-      indent: null,
-      underline: false,
-      row: row
-    };
-
-    if (_byte3 > 0x5F) {
-      pacIndex = _byte3 - 0x60;
-    } else {
-      pacIndex = _byte3 - 0x40;
-    }
-
-    pacData.underline = (pacIndex & 1) === 1;
-
-    if (pacIndex <= 0xd) {
-      pacData.color = ['white', 'green', 'blue', 'cyan', 'red', 'yellow', 'magenta', 'white'][Math.floor(pacIndex / 2)];
-    } else if (pacIndex <= 0xf) {
-      pacData.italics = true;
-      pacData.color = 'white';
-    } else {
-      pacData.indent = Math.floor((pacIndex - 0x10) / 2) * 4;
-    }
-
-    return pacData; // Note that row has zero offset. The spec uses 1.
-  }
-  /**
-   * Parse characters.
-   * @returns An array with 1 to 2 codes corresponding to chars, if found. null otherwise.
-   */
-  ;
-
-  _proto7.parseChars = function parseChars(a, b) {
-    var channelNr;
-    var charCodes = null;
-    var charCode1 = null;
-
-    if (a >= 0x19) {
-      channelNr = 2;
-      charCode1 = a - 8;
-    } else {
-      channelNr = 1;
-      charCode1 = a;
-    }
-
-    if (charCode1 >= 0x11 && charCode1 <= 0x13) {
-      // Special character
-      var oneCode = b;
-
-      if (charCode1 === 0x11) {
-        oneCode = b + 0x50;
-      } else if (charCode1 === 0x12) {
-        oneCode = b + 0x70;
-      } else {
-        oneCode = b + 0x90;
-      }
-
-      this.logger.log(VerboseLevel.INFO, 'Special char \'' + getCharForByte(oneCode) + '\' in channel ' + channelNr);
-      charCodes = [oneCode];
-    } else if (a >= 0x20 && a <= 0x7f) {
-      charCodes = b === 0 ? [a] : [a, b];
-    }
-
-    if (charCodes) {
-      var hexCodes = numArrayToHexArray(charCodes);
-      this.logger.log(VerboseLevel.DEBUG, 'Char codes =  ' + hexCodes.join(','));
-      setLastCmd(a, b, this.cmdHistory);
-    }
-
-    return charCodes;
-  }
-  /**
-   * Parse extended background attributes as well as new foreground color black.
-   * @returns {Boolean} Tells if background attributes are found
-   */
-  ;
-
-  _proto7.parseBackgroundAttributes = function parseBackgroundAttributes(a, b) {
-    var case1 = (a === 0x10 || a === 0x18) && b >= 0x20 && b <= 0x2f;
-    var case2 = (a === 0x17 || a === 0x1f) && b >= 0x2d && b <= 0x2f;
-
-    if (!(case1 || case2)) {
-      return false;
-    }
-
-    var index;
-    var bkgData = {};
-
-    if (a === 0x10 || a === 0x18) {
-      index = Math.floor((b - 0x20) / 2);
-      bkgData.background = backgroundColors[index];
-
-      if (b % 2 === 1) {
-        bkgData.background = bkgData.background + '_semi';
-      }
-    } else if (b === 0x2d) {
-      bkgData.background = 'transparent';
-    } else {
-      bkgData.foreground = 'black';
-
-      if (b === 0x2f) {
-        bkgData.underline = true;
-      }
-    }
-
-    var chNr = a <= 0x17 ? 1 : 2;
-    var channel = this.channels[chNr];
-    channel.setBkgData(bkgData);
-    setLastCmd(a, b, this.cmdHistory);
-    return true;
-  }
-  /**
-   * Reset state of parser and its channels.
-   */
-  ;
-
-  _proto7.reset = function reset() {
-    for (var i = 0; i < Object.keys(this.channels).length; i++) {
-      var channel = this.channels[i];
-
-      if (channel) {
-        channel.reset();
-      }
-    }
-
-    this.cmdHistory = createCmdHistory();
-  }
-  /**
-   * Trigger the generation of a cue, and the start of a new one if displayScreens are not empty.
-   */
-  ;
-
-  _proto7.cueSplitAtTime = function cueSplitAtTime(t) {
-    for (var i = 0; i < this.channels.length; i++) {
-      var channel = this.channels[i];
-
-      if (channel) {
-        channel.cueSplitAtTime(t);
-      }
-    }
-  };
-
-  return Cea608Parser;
-}();
-
-/* harmony default export */ var cea_608_parser = (Cea608Parser);
-// CONCATENATED MODULE: ./src/utils/output-filter.ts
-var OutputFilter = /*#__PURE__*/function () {
-  function OutputFilter(timelineController, trackName) {
-    this.timelineController = void 0;
-    this.cueRanges = [];
-    this.trackName = void 0;
-    this.startTime = null;
-    this.endTime = null;
-    this.screen = null;
-    this.timelineController = timelineController;
-    this.trackName = trackName;
-  }
-
-  var _proto = OutputFilter.prototype;
-
-  _proto.dispatchCue = function dispatchCue() {
-    if (this.startTime === null) {
-      return;
-    }
-
-    this.timelineController.addCues(this.trackName, this.startTime, this.endTime, this.screen, this.cueRanges);
-    this.startTime = null;
-  };
-
-  _proto.newCue = function newCue(startTime, endTime, screen) {
-    if (this.startTime === null || this.startTime > startTime) {
-      this.startTime = startTime;
-    }
-
-    this.endTime = endTime;
-    this.screen = screen;
-    this.timelineController.createCaptionsTrack(this.trackName);
-  };
-
-  _proto.reset = function reset() {
-    this.cueRanges = [];
-  };
-
-  return OutputFilter;
-}();
-
-
-// EXTERNAL MODULE: ./src/utils/timescale-conversion.ts
-var timescale_conversion = __webpack_require__("./src/utils/timescale-conversion.ts");
-
-// CONCATENATED MODULE: ./src/utils/webvtt-parser.js
-
-
-
-
-
-
- // String.prototype.startsWith is not supported in IE11
-
-var startsWith = function startsWith(inputString, searchString, position) {
-  return inputString.substr(position || 0, searchString.length) === searchString;
-};
-
-var webvtt_parser_cueString2millis = function cueString2millis(timeString) {
-  var ts = parseInt(timeString.substr(-3));
-  var secs = parseInt(timeString.substr(-6, 2));
-  var mins = parseInt(timeString.substr(-9, 2));
-  var hours = timeString.length > 9 ? parseInt(timeString.substr(0, timeString.indexOf(':'))) : 0;
-
-  if (!Object(number["isFiniteNumber"])(ts) || !Object(number["isFiniteNumber"])(secs) || !Object(number["isFiniteNumber"])(mins) || !Object(number["isFiniteNumber"])(hours)) {
-    throw Error("Malformed X-TIMESTAMP-MAP: Local:" + timeString);
-  }
-
-  ts += 1000 * secs;
-  ts += 60 * 1000 * mins;
-  ts += 60 * 60 * 1000 * hours;
-  return ts;
-}; // From https://github.com/darkskyapp/string-hash
-
-
-var hash = function hash(text) {
-  var hash = 5381;
-  var i = text.length;
-
-  while (i) {
-    hash = hash * 33 ^ text.charCodeAt(--i);
-  }
-
-  return (hash >>> 0).toString();
-};
-
-var calculateOffset = function calculateOffset(vttCCs, cc, presentationTime) {
-  var currCC = vttCCs[cc];
-  var prevCC = vttCCs[currCC.prevCC]; // This is the first discontinuity or cues have been processed since the last discontinuity
-  // Offset = current discontinuity time
-
-  if (!prevCC || !prevCC.new && currCC.new) {
-    vttCCs.ccOffset = vttCCs.presentationOffset = currCC.start;
-    currCC.new = false;
-    return;
-  } // There have been discontinuities since cues were last parsed.
-  // Offset = time elapsed
-
-
-  while (prevCC && prevCC.new) {
-    vttCCs.ccOffset += currCC.start - prevCC.start;
-    currCC.new = false;
-    currCC = prevCC;
-    prevCC = vttCCs[currCC.prevCC];
-  }
-
-  vttCCs.presentationOffset = presentationTime;
-};
-
-var WebVTTParser = {
-  parse: function parse(vttByteArray, initPTS, timescale, vttCCs, cc, callBack, errorCallBack) {
-    // Convert byteArray into string, replacing any somewhat exotic linefeeds with "\n", then split on that character.
-    var re = /\r\n|\n\r|\n|\r/g; // Uint8Array.prototype.reduce is not implemented in IE11
-
-    var vttLines = Object(id3["utf8ArrayToStr"])(new Uint8Array(vttByteArray)).trim().replace(re, '\n').split('\n');
-    var syncPTS = Object(timescale_conversion["toMpegTsClockFromTimescale"])(initPTS, timescale);
-    var cueTime = '00:00.000';
-    var mpegTs = 0;
-    var localTime = 0;
-    var presentationTime = 0;
-    var cues = [];
-    var parsingError;
-    var inHeader = true;
-    var timestampMap = false; // let VTTCue = VTTCue || window.TextTrackCue;
-    // Create parser object using VTTCue with TextTrackCue fallback on certain browsers.
-
-    var parser = new vttparser();
-
-    parser.oncue = function (cue) {
-      // Adjust cue timing; clamp cues to start no earlier than - and drop cues that don't end after - 0 on timeline.
-      var currCC = vttCCs[cc];
-      var cueOffset = vttCCs.ccOffset; // Update offsets for new discontinuities
-
-      if (currCC && currCC.new) {
-        if (localTime !== undefined) {
-          // When local time is provided, offset = discontinuity start time - local time
-          cueOffset = vttCCs.ccOffset = currCC.start;
-        } else {
-          calculateOffset(vttCCs, cc, presentationTime);
-        }
-      }
-
-      if (presentationTime) {
-        // If we have MPEGTS, offset = presentation time + discontinuity offset
-        cueOffset = presentationTime - vttCCs.presentationOffset;
-      }
-
-      if (timestampMap) {
-        cue.startTime += cueOffset - localTime;
-        cue.endTime += cueOffset - localTime;
-      } // Create a unique hash id for a cue based on start/end times and text.
-      // This helps timeline-controller to avoid showing repeated captions.
-
-
-      cue.id = hash(cue.startTime.toString()) + hash(cue.endTime.toString()) + hash(cue.text); // Fix encoding of special characters. TODO: Test with all sorts of weird characters.
-
-      cue.text = decodeURIComponent(encodeURIComponent(cue.text));
-
-      if (cue.endTime > 0) {
-        cues.push(cue);
-      }
-    };
-
-    parser.onparsingerror = function (e) {
-      parsingError = e;
-    };
-
-    parser.onflush = function () {
-      if (parsingError && errorCallBack) {
-        errorCallBack(parsingError);
-        return;
-      }
-
-      callBack(cues);
-    }; // Go through contents line by line.
-
-
-    vttLines.forEach(function (line) {
-      if (inHeader) {
-        // Look for X-TIMESTAMP-MAP in header.
-        if (startsWith(line, 'X-TIMESTAMP-MAP=')) {
-          // Once found, no more are allowed anyway, so stop searching.
-          inHeader = false;
-          timestampMap = true; // Extract LOCAL and MPEGTS.
-
-          line.substr(16).split(',').forEach(function (timestamp) {
-            if (startsWith(timestamp, 'LOCAL:')) {
-              cueTime = timestamp.substr(6);
-            } else if (startsWith(timestamp, 'MPEGTS:')) {
-              mpegTs = parseInt(timestamp.substr(7));
-            }
-          });
-
-          try {
-            // Calculate subtitle offset in milliseconds.
-            if (syncPTS + (vttCCs[cc].start * 90000 || 0) < 0) {
-              syncPTS += 8589934592;
-            } // Adjust MPEGTS by sync PTS.
-
-
-            mpegTs -= syncPTS; // Convert cue time to seconds
-
-            localTime = webvtt_parser_cueString2millis(cueTime) / 1000; // Convert MPEGTS to seconds from 90kHz.
-
-            presentationTime = mpegTs / 90000;
-          } catch (e) {
-            timestampMap = false;
-            parsingError = e;
-          } // Return without parsing X-TIMESTAMP-MAP line.
-
-
-          return;
-        } else if (line === '') {
-          inHeader = false;
-        }
-      } // Parse line by default.
-
-
-      parser.parse(line + '\n');
-    });
-    parser.flush();
-  }
-};
-/* harmony default export */ var webvtt_parser = (WebVTTParser);
-// CONCATENATED MODULE: ./src/controller/timeline-controller.ts
-
-
-
-function timeline_controller_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
-
-function timeline_controller_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
-
-
-
-
-
-
-
-
-
-function canReuseVttTextTrack(inUseTrack, manifestTrack) {
-  return inUseTrack && inUseTrack.label === manifestTrack.name && !(inUseTrack.textTrack1 || inUseTrack.textTrack2);
-}
-
-function intersection(x1, x2, y1, y2) {
-  return Math.min(x2, y2) - Math.max(x1, y1);
-}
-
-function newVTTCCs() {
-  return {
-    ccOffset: 0,
-    presentationOffset: 0,
-    0: {
-      start: 0,
-      prevCC: -1,
-      new: false
-    }
-  };
-}
-
-var timeline_controller_TimelineController = /*#__PURE__*/function (_EventHandler) {
-  timeline_controller_inheritsLoose(TimelineController, _EventHandler);
-
-  function TimelineController(hls) {
-    var _this;
-
-    _this = _EventHandler.call(this, hls, events["default"].MEDIA_ATTACHING, events["default"].MEDIA_DETACHING, events["default"].FRAG_PARSING_USERDATA, events["default"].FRAG_DECRYPTED, events["default"].MANIFEST_LOADING, events["default"].MANIFEST_LOADED, events["default"].FRAG_LOADED, events["default"].INIT_PTS_FOUND) || this;
-    _this.media = null;
-    _this.config = void 0;
-    _this.enabled = true;
-    _this.Cues = void 0;
-    _this.textTracks = [];
-    _this.tracks = [];
-    _this.initPTS = [];
-    _this.timescale = [];
-    _this.unparsedVttFrags = [];
-    _this.captionsTracks = {};
-    _this.nonNativeCaptionsTracks = {};
-    _this.captionsProperties = void 0;
-    _this.cea608Parser1 = void 0;
-    _this.cea608Parser2 = void 0;
-    _this.lastSn = -1;
-    _this.prevCC = -1;
-    _this.vttCCs = newVTTCCs();
-    _this.hls = hls;
-    _this.config = hls.config;
-    _this.Cues = hls.config.cueHandler;
-    _this.captionsProperties = {
-      textTrack1: {
-        label: _this.config.captionsTextTrack1Label,
-        languageCode: _this.config.captionsTextTrack1LanguageCode
-      },
-      textTrack2: {
-        label: _this.config.captionsTextTrack2Label,
-        languageCode: _this.config.captionsTextTrack2LanguageCode
-      },
-      textTrack3: {
-        label: _this.config.captionsTextTrack3Label,
-        languageCode: _this.config.captionsTextTrack3LanguageCode
-      },
-      textTrack4: {
-        label: _this.config.captionsTextTrack4Label,
-        languageCode: _this.config.captionsTextTrack4LanguageCode
-      }
-    };
-
-    if (_this.config.enableCEA708Captions) {
-      var channel1 = new OutputFilter(timeline_controller_assertThisInitialized(_this), 'textTrack1');
-      var channel2 = new OutputFilter(timeline_controller_assertThisInitialized(_this), 'textTrack2');
-      var channel3 = new OutputFilter(timeline_controller_assertThisInitialized(_this), 'textTrack3');
-      var channel4 = new OutputFilter(timeline_controller_assertThisInitialized(_this), 'textTrack4');
-      _this.cea608Parser1 = new cea_608_parser(1, channel1, channel2);
-      _this.cea608Parser2 = new cea_608_parser(3, channel3, channel4);
-    }
-
-    return _this;
-  }
-
-  var _proto = TimelineController.prototype;
-
-  _proto.addCues = function addCues(trackName, startTime, endTime, screen, cueRanges) {
-    // skip cues which overlap more than 50% with previously parsed time ranges
-    var merged = false;
-
-    for (var i = cueRanges.length; i--;) {
-      var cueRange = cueRanges[i];
-      var overlap = intersection(cueRange[0], cueRange[1], startTime, endTime);
-
-      if (overlap >= 0) {
-        cueRange[0] = Math.min(cueRange[0], startTime);
-        cueRange[1] = Math.max(cueRange[1], endTime);
-        merged = true;
-
-        if (overlap / (endTime - startTime) > 0.5) {
-          return;
-        }
-      }
-    }
-
-    if (!merged) {
-      cueRanges.push([startTime, endTime]);
-    }
-
-    if (this.config.renderTextTracksNatively) {
-      this.Cues.newCue(this.captionsTracks[trackName], startTime, endTime, screen);
-    } else {
-      var cues = this.Cues.newCue(null, startTime, endTime, screen);
-      this.hls.trigger(events["default"].CUES_PARSED, {
-        type: 'captions',
-        cues: cues,
-        track: trackName
-      });
-    }
-  } // Triggered when an initial PTS is found; used for synchronisation of WebVTT.
-  ;
-
-  _proto.onInitPtsFound = function onInitPtsFound(data) {
-    var _this2 = this;
-
-    var frag = data.frag,
-        id = data.id,
-        initPTS = data.initPTS,
-        timescale = data.timescale;
-    var unparsedVttFrags = this.unparsedVttFrags;
-
-    if (id === 'main') {
-      this.initPTS[frag.cc] = initPTS;
-      this.timescale[frag.cc] = timescale;
-    } // Due to asynchronous processing, initial PTS may arrive later than the first VTT fragments are loaded.
-    // Parse any unparsed fragments upon receiving the initial PTS.
-
-
-    if (unparsedVttFrags.length) {
-      this.unparsedVttFrags = [];
-      unparsedVttFrags.forEach(function (frag) {
-        _this2.onFragLoaded(frag);
-      });
-    }
-  };
-
-  _proto.getExistingTrack = function getExistingTrack(trackName) {
-    var media = this.media;
-
-    if (media) {
-      for (var i = 0; i < media.textTracks.length; i++) {
-        var textTrack = media.textTracks[i];
-
-        if (textTrack[trackName]) {
-          return textTrack;
-        }
-      }
-    }
-
-    return null;
-  };
-
-  _proto.createCaptionsTrack = function createCaptionsTrack(trackName) {
-    if (this.config.renderTextTracksNatively) {
-      this.createNativeTrack(trackName);
-    } else {
-      this.createNonNativeTrack(trackName);
-    }
-  };
-
-  _proto.createNativeTrack = function createNativeTrack(trackName) {
-    if (this.captionsTracks[trackName]) {
-      return;
-    }
-
-    var captionsProperties = this.captionsProperties,
-        captionsTracks = this.captionsTracks,
-        media = this.media;
-    var _captionsProperties$t = captionsProperties[trackName],
-        label = _captionsProperties$t.label,
-        languageCode = _captionsProperties$t.languageCode; // Enable reuse of existing text track.
-
-    var existingTrack = this.getExistingTrack(trackName);
-
-    if (!existingTrack) {
-      var textTrack = this.createTextTrack('captions', label, languageCode);
-
-      if (textTrack) {
-        // Set a special property on the track so we know it's managed by Hls.js
-        textTrack[trackName] = true;
-        captionsTracks[trackName] = textTrack;
-      }
-    } else {
-      captionsTracks[trackName] = existingTrack;
-      clearCurrentCues(captionsTracks[trackName]);
-      sendAddTrackEvent(captionsTracks[trackName], media);
-    }
-  };
-
-  _proto.createNonNativeTrack = function createNonNativeTrack(trackName) {
-    if (this.nonNativeCaptionsTracks[trackName]) {
-      return;
-    } // Create a list of a single track for the provider to consume
-
-
-    var trackProperties = this.captionsProperties[trackName];
-
-    if (!trackProperties) {
-      return;
-    }
-
-    var label = trackProperties.label;
-    var track = {
-      _id: trackName,
-      label: label,
-      kind: 'captions',
-      default: trackProperties.media ? !!trackProperties.media.default : false,
-      closedCaptions: trackProperties.media
-    };
-    this.nonNativeCaptionsTracks[trackName] = track;
-    this.hls.trigger(events["default"].NON_NATIVE_TEXT_TRACKS_FOUND, {
-      tracks: [track]
-    });
-  };
-
-  _proto.createTextTrack = function createTextTrack(kind, label, lang) {
-    var media = this.media;
-
-    if (!media) {
-      return;
-    }
-
-    return media.addTextTrack(kind, label, lang);
-  };
-
-  _proto.destroy = function destroy() {
-    _EventHandler.prototype.destroy.call(this);
-  };
-
-  _proto.onMediaAttaching = function onMediaAttaching(data) {
-    this.media = data.media;
-
-    this._cleanTracks();
-  };
-
-  _proto.onMediaDetaching = function onMediaDetaching() {
-    var captionsTracks = this.captionsTracks;
-    Object.keys(captionsTracks).forEach(function (trackName) {
-      clearCurrentCues(captionsTracks[trackName]);
-      delete captionsTracks[trackName];
-    });
-    this.nonNativeCaptionsTracks = {};
-  };
-
-  _proto.onManifestLoading = function onManifestLoading() {
-    this.lastSn = -1; // Detect discontiguity in fragment parsing
-
-    this.prevCC = -1;
-    this.vttCCs = newVTTCCs(); // Detect discontinuity in subtitle manifests
-
-    this._cleanTracks();
-
-    this.tracks = [];
-    this.captionsTracks = {};
-    this.nonNativeCaptionsTracks = {};
-  };
-
-  _proto._cleanTracks = function _cleanTracks() {
-    // clear outdated subtitles
-    var media = this.media;
-
-    if (!media) {
-      return;
-    }
-
-    var textTracks = media.textTracks;
-
-    if (textTracks) {
-      for (var i = 0; i < textTracks.length; i++) {
-        clearCurrentCues(textTracks[i]);
-      }
-    }
-  };
-
-  _proto.onManifestLoaded = function onManifestLoaded(data) {
-    var _this3 = this;
-
-    this.textTracks = [];
-    this.unparsedVttFrags = this.unparsedVttFrags || [];
-    this.initPTS = [];
-    this.timescale = [];
-
-    if (this.cea608Parser1 && this.cea608Parser2) {
-      this.cea608Parser1.reset();
-      this.cea608Parser2.reset();
-    }
-
-    if (this.config.enableWebVTT) {
-      var tracks = data.subtitles || [];
-      var sameTracks = this.tracks && tracks && this.tracks.length === tracks.length;
-      this.tracks = data.subtitles || [];
-
-      if (this.config.renderTextTracksNatively) {
-        var inUseTracks = this.media ? this.media.textTracks : [];
-        this.tracks.forEach(function (track, index) {
-          var textTrack;
-
-          if (index < inUseTracks.length) {
-            var inUseTrack = null;
-
-            for (var i = 0; i < inUseTracks.length; i++) {
-              if (canReuseVttTextTrack(inUseTracks[i], track)) {
-                inUseTrack = inUseTracks[i];
-                break;
-              }
-            } // Reuse tracks with the same label, but do not reuse 608/708 tracks
-
-
-            if (inUseTrack) {
-              textTrack = inUseTrack;
-            }
-          }
-
-          if (!textTrack) {
-            textTrack = _this3.createTextTrack('subtitles', track.name, track.lang);
-          }
-
-          if (track.default) {
-            textTrack.mode = _this3.hls.subtitleDisplay ? 'showing' : 'hidden';
-          } else {
-            textTrack.mode = 'disabled';
-          }
-
-          _this3.textTracks.push(textTrack);
-        });
-      } else if (!sameTracks && this.tracks && this.tracks.length) {
-        // Create a list of tracks for the provider to consume
-        var tracksList = this.tracks.map(function (track) {
-          return {
-            label: track.name,
-            kind: track.type.toLowerCase(),
-            default: track.default,
-            subtitleTrack: track
-          };
-        });
-        this.hls.trigger(events["default"].NON_NATIVE_TEXT_TRACKS_FOUND, {
-          tracks: tracksList
-        });
-      }
-    }
-
-    if (this.config.enableCEA708Captions && data.captions) {
-      data.captions.forEach(function (captionsTrack) {
-        var instreamIdMatch = /(?:CC|SERVICE)([1-4])/.exec(captionsTrack.instreamId);
-
-        if (!instreamIdMatch) {
-          return;
-        }
-
-        var trackName = "textTrack" + instreamIdMatch[1];
-        var trackProperties = _this3.captionsProperties[trackName];
-
-        if (!trackProperties) {
-          return;
-        }
-
-        trackProperties.label = captionsTrack.name;
-
-        if (captionsTrack.lang) {
-          // optional attribute
-          trackProperties.languageCode = captionsTrack.lang;
-        }
-
-        trackProperties.media = captionsTrack;
-      });
-    }
-  };
-
-  _proto.onFragLoaded = function onFragLoaded(data) {
-    var frag = data.frag,
-        payload = data.payload;
-    var cea608Parser1 = this.cea608Parser1,
-        cea608Parser2 = this.cea608Parser2,
-        initPTS = this.initPTS,
-        lastSn = this.lastSn,
-        unparsedVttFrags = this.unparsedVttFrags;
-
-    if (frag.type === 'main') {
-      var sn = frag.sn; // if this frag isn't contiguous, clear the parser so cues with bad start/end times aren't added to the textTrack
-
-      if (frag.sn !== lastSn + 1) {
-        if (cea608Parser1 && cea608Parser2) {
-          cea608Parser1.reset();
-          cea608Parser2.reset();
-        }
-      }
-
-      this.lastSn = sn;
-    } // eslint-disable-line brace-style
-    // If fragment is subtitle type, parse as WebVTT.
-    else if (frag.type === 'subtitle') {
-        if (payload.byteLength) {
-          // We need an initial synchronisation PTS. Store fragments as long as none has arrived.
-          if (!Object(number["isFiniteNumber"])(initPTS[frag.cc])) {
-            unparsedVttFrags.push(data);
-
-            if (initPTS.length) {
-              // finish unsuccessfully, otherwise the subtitle-stream-controller could be blocked from loading new frags.
-              this.hls.trigger(events["default"].SUBTITLE_FRAG_PROCESSED, {
-                success: false,
-                frag: frag
-              });
-            }
-
-            return;
-          }
-
-          var decryptData = frag.decryptdata; // If the subtitles are not encrypted, parse VTTs now. Otherwise, we need to wait.
-
-          if (decryptData == null || decryptData.key == null || decryptData.method !== 'AES-128') {
-            this._parseVTTs(frag, payload);
-          }
-        } else {
-          // In case there is no payload, finish unsuccessfully.
-          this.hls.trigger(events["default"].SUBTITLE_FRAG_PROCESSED, {
-            success: false,
-            frag: frag
-          });
-        }
-      }
-  };
-
-  _proto._parseVTTs = function _parseVTTs(frag, payload) {
-    var _this4 = this;
-
-    var hls = this.hls,
-        prevCC = this.prevCC,
-        textTracks = this.textTracks,
-        vttCCs = this.vttCCs;
-
-    if (!vttCCs[frag.cc]) {
-      vttCCs[frag.cc] = {
-        start: frag.start,
-        prevCC: prevCC,
-        new: true
-      };
-      this.prevCC = frag.cc;
-    } // Parse the WebVTT file contents.
-
-
-    webvtt_parser.parse(payload, this.initPTS[frag.cc], this.timescale[frag.cc], vttCCs, frag.cc, function (cues) {
-      if (_this4.config.renderTextTracksNatively) {
-        var currentTrack = textTracks[frag.level]; // WebVTTParser.parse is an async method and if the currently selected text track mode is set to "disabled"
-        // before parsing is done then don't try to access currentTrack.cues.getCueById as cues will be null
-        // and trying to access getCueById method of cues will throw an exception
-        // Because we check if the mode is diabled, we can force check `cues` below. They can't be null.
-
-        if (currentTrack.mode === 'disabled') {
-          hls.trigger(events["default"].SUBTITLE_FRAG_PROCESSED, {
-            success: false,
-            frag: frag
-          });
-          return;
-        } // Add cues and trigger event with success true.
-
-
-        cues.forEach(function (cue) {
-          // Sometimes there are cue overlaps on segmented vtts so the same
-          // cue can appear more than once in different vtt files.
-          // This avoid showing duplicated cues with same timecode and text.
-          if (!currentTrack.cues.getCueById(cue.id)) {
-            try {
-              currentTrack.addCue(cue);
-
-              if (!currentTrack.cues.getCueById(cue.id)) {
-                throw new Error("addCue is failed for: " + cue);
-              }
-            } catch (err) {
-              logger["logger"].debug("Failed occurred on adding cues: " + err);
-              var textTrackCue = new window.TextTrackCue(cue.startTime, cue.endTime, cue.text);
-              textTrackCue.id = cue.id;
-              currentTrack.addCue(textTrackCue);
-            }
-          }
-        });
-      } else {
-        var trackId = _this4.tracks[frag.level].default ? 'default' : 'subtitles' + frag.level;
-        hls.trigger(events["default"].CUES_PARSED, {
-          type: 'subtitles',
-          cues: cues,
-          track: trackId
-        });
-      }
-
-      hls.trigger(events["default"].SUBTITLE_FRAG_PROCESSED, {
-        success: true,
-        frag: frag
-      });
-    }, function (e) {
-      // Something went wrong while parsing. Trigger event with success false.
-      logger["logger"].log("Failed to parse VTT cue: " + e);
-      hls.trigger(events["default"].SUBTITLE_FRAG_PROCESSED, {
-        success: false,
-        frag: frag
-      });
-    });
-  };
-
-  _proto.onFragDecrypted = function onFragDecrypted(data) {
-    var frag = data.frag,
-        payload = data.payload;
-
-    if (frag.type === 'subtitle') {
-      if (!Object(number["isFiniteNumber"])(this.initPTS[frag.cc])) {
-        this.unparsedVttFrags.push(data);
-        return;
-      }
-
-      this._parseVTTs(frag, payload);
-    }
-  };
-
-  _proto.onFragParsingUserdata = function onFragParsingUserdata(data) {
-    var cea608Parser1 = this.cea608Parser1,
-        cea608Parser2 = this.cea608Parser2;
-
-    if (!this.enabled || !(cea608Parser1 && cea608Parser2)) {
-      return;
-    } // If the event contains captions (found in the bytes property), push all bytes into the parser immediately
-    // It will create the proper timestamps based on the PTS value
-
-
-    for (var i = 0; i < data.samples.length; i++) {
-      var ccBytes = data.samples[i].bytes;
-
-      if (ccBytes) {
-        var ccdatas = this.extractCea608Data(ccBytes);
-        cea608Parser1.addData(data.samples[i].pts, ccdatas[0]);
-        cea608Parser2.addData(data.samples[i].pts, ccdatas[1]);
-      }
-    }
-  };
-
-  _proto.extractCea608Data = function extractCea608Data(byteArray) {
-    var count = byteArray[0] & 31;
-    var position = 2;
-    var actualCCBytes = [[], []];
-
-    for (var j = 0; j < count; j++) {
-      var tmpByte = byteArray[position++];
-      var ccbyte1 = 0x7F & byteArray[position++];
-      var ccbyte2 = 0x7F & byteArray[position++];
-      var ccValid = (4 & tmpByte) !== 0;
-      var ccType = 3 & tmpByte;
-
-      if (ccbyte1 === 0 && ccbyte2 === 0) {
-        continue;
-      }
-
-      if (ccValid) {
-        if (ccType === 0 || ccType === 1) {
-          actualCCBytes[ccType].push(ccbyte1);
-          actualCCBytes[ccType].push(ccbyte2);
-        }
-      }
-    }
-
-    return actualCCBytes;
-  };
-
-  return TimelineController;
-}(event_handler);
-
-/* harmony default export */ var timeline_controller = (timeline_controller_TimelineController);
-// CONCATENATED MODULE: ./src/controller/subtitle-track-controller.js
-
-
-
-
-function subtitle_track_controller_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
-
-function subtitle_track_controller_createClass(Constructor, protoProps, staticProps) { if (protoProps) subtitle_track_controller_defineProperties(Constructor.prototype, protoProps); if (staticProps) subtitle_track_controller_defineProperties(Constructor, staticProps); return Constructor; }
-
-function subtitle_track_controller_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
-
-
-
-
-
-
-
-var subtitle_track_controller_SubtitleTrackController = /*#__PURE__*/function (_EventHandler) {
-  subtitle_track_controller_inheritsLoose(SubtitleTrackController, _EventHandler);
-
-  function SubtitleTrackController(hls) {
-    var _this;
-
-    _this = _EventHandler.call(this, hls, events["default"].MEDIA_ATTACHED, events["default"].MEDIA_DETACHING, events["default"].MANIFEST_LOADED, events["default"].SUBTITLE_TRACK_LOADED) || this;
-    _this.tracks = [];
-    _this.trackId = -1;
-    _this.media = null;
-    _this.stopped = true;
-    /**
-     * @member {boolean} subtitleDisplay Enable/disable subtitle display rendering
-     */
-
-    _this.subtitleDisplay = true;
-    /**
-     * Keeps reference to a default track id when media has not been attached yet
-     * @member {number}
-     */
-
-    _this.queuedDefaultTrack = null;
-    return _this;
-  }
-
-  var _proto = SubtitleTrackController.prototype;
-
-  _proto.destroy = function destroy() {
-    event_handler.prototype.destroy.call(this);
-  } // Listen for subtitle track change, then extract the current track ID.
-  ;
-
-  _proto.onMediaAttached = function onMediaAttached(data) {
-    var _this2 = this;
-
-    this.media = data.media;
-
-    if (!this.media) {
-      return;
-    }
-
-    if (Object(number["isFiniteNumber"])(this.queuedDefaultTrack)) {
-      this.subtitleTrack = this.queuedDefaultTrack;
-      this.queuedDefaultTrack = null;
-    }
-
-    this.trackChangeListener = this._onTextTracksChanged.bind(this);
-    this.useTextTrackPolling = !(this.media.textTracks && 'onchange' in this.media.textTracks);
-
-    if (this.useTextTrackPolling) {
-      this.subtitlePollingInterval = setInterval(function () {
-        _this2.trackChangeListener();
-      }, 500);
-    } else {
-      this.media.textTracks.addEventListener('change', this.trackChangeListener);
-    }
-  };
-
-  _proto.onMediaDetaching = function onMediaDetaching() {
-    if (!this.media) {
-      return;
-    }
-
-    if (this.useTextTrackPolling) {
-      clearInterval(this.subtitlePollingInterval);
-    } else {
-      this.media.textTracks.removeEventListener('change', this.trackChangeListener);
-    }
-
-    if (Object(number["isFiniteNumber"])(this.subtitleTrack)) {
-      this.queuedDefaultTrack = this.subtitleTrack;
-    }
-
-    var textTracks = filterSubtitleTracks(this.media.textTracks); // Clear loaded cues on media detachment from tracks
-
-    textTracks.forEach(function (track) {
-      clearCurrentCues(track);
-    }); // Disable all subtitle tracks before detachment so when reattached only tracks in that content are enabled.
-
-    this.subtitleTrack = -1;
-    this.media = null;
-  } // Fired whenever a new manifest is loaded.
-  ;
-
-  _proto.onManifestLoaded = function onManifestLoaded(data) {
-    var _this3 = this;
-
-    var tracks = data.subtitles || [];
-    this.tracks = tracks;
-    this.hls.trigger(events["default"].SUBTITLE_TRACKS_UPDATED, {
-      subtitleTracks: tracks
-    }); // loop through available subtitle tracks and autoselect default if needed
-    // TODO: improve selection logic to handle forced, etc
-
-    tracks.forEach(function (track) {
-      if (track.default) {
-        // setting this.subtitleTrack will trigger internal logic
-        // if media has not been attached yet, it will fail
-        // we keep a reference to the default track id
-        // and we'll set subtitleTrack when onMediaAttached is triggered
-        if (_this3.media) {
-          _this3.subtitleTrack = track.id;
-        } else {
-          _this3.queuedDefaultTrack = track.id;
-        }
-      }
-    });
-  };
-
-  _proto.onSubtitleTrackLoaded = function onSubtitleTrackLoaded(data) {
-    var _this4 = this;
-
-    var id = data.id,
-        details = data.details;
-    var trackId = this.trackId,
-        tracks = this.tracks;
-    var currentTrack = tracks[trackId];
-
-    if (id >= tracks.length || id !== trackId || !currentTrack || this.stopped) {
-      this._clearReloadTimer();
-
-      return;
-    }
-
-    logger["logger"].log("subtitle track " + id + " loaded");
-
-    if (details.live && !this.stopped) {
-      var reloadInterval = computeReloadInterval(currentTrack.details, details, data.stats.trequest);
-      logger["logger"].log("Reloading live subtitle playlist in " + reloadInterval + "ms");
-      this.timer = setTimeout(function () {
-        _this4._loadCurrentTrack();
-      }, reloadInterval);
-    } else {
-      this._clearReloadTimer();
-    }
-  };
-
-  _proto.startLoad = function startLoad() {
-    this.stopped = false;
-
-    this._loadCurrentTrack();
-  };
-
-  _proto.stopLoad = function stopLoad() {
-    this.stopped = true;
-
-    this._clearReloadTimer();
-  }
-  /** get alternate subtitle tracks list from playlist **/
-  ;
-
-  _proto._clearReloadTimer = function _clearReloadTimer() {
-    if (this.timer) {
-      clearTimeout(this.timer);
-      this.timer = null;
-    }
-  };
-
-  _proto._loadCurrentTrack = function _loadCurrentTrack() {
-    var trackId = this.trackId,
-        tracks = this.tracks,
-        hls = this.hls;
-    var currentTrack = tracks[trackId];
-
-    if (this.stopped || trackId < 0 || !currentTrack || currentTrack.details && !currentTrack.details.live) {
-      return;
-    }
-
-    logger["logger"].log("Loading subtitle track " + trackId);
-    hls.trigger(events["default"].SUBTITLE_TRACK_LOADING, {
-      url: currentTrack.url,
-      id: trackId
-    });
-  }
-  /**
-   * Disables the old subtitleTrack and sets current mode on the next subtitleTrack.
-   * This operates on the DOM textTracks.
-   * A value of -1 will disable all subtitle tracks.
-   * @param newId - The id of the next track to enable
-   * @private
-   */
-  ;
-
-  _proto._toggleTrackModes = function _toggleTrackModes(newId) {
-    var media = this.media,
-        subtitleDisplay = this.subtitleDisplay,
-        trackId = this.trackId;
-
-    if (!media) {
-      return;
-    }
-
-    var textTracks = filterSubtitleTracks(media.textTracks);
-
-    if (newId === -1) {
-      [].slice.call(textTracks).forEach(function (track) {
-        track.mode = 'disabled';
-      });
-    } else {
-      var oldTrack = textTracks[trackId];
-
-      if (oldTrack) {
-        oldTrack.mode = 'disabled';
-      }
-    }
-
-    var nextTrack = textTracks[newId];
-
-    if (nextTrack) {
-      nextTrack.mode = subtitleDisplay ? 'showing' : 'hidden';
-    }
-  }
-  /**
-     * This method is responsible for validating the subtitle index and periodically reloading if live.
-     * Dispatches the SUBTITLE_TRACK_SWITCH event, which instructs the subtitle-stream-controller to load the selected track.
-     * @param newId - The id of the subtitle track to activate.
-     */
-  ;
-
-  _proto._setSubtitleTrackInternal = function _setSubtitleTrackInternal(newId) {
-    var hls = this.hls,
-        tracks = this.tracks;
-
-    if (!Object(number["isFiniteNumber"])(newId) || newId < -1 || newId >= tracks.length) {
-      return;
-    }
-
-    this.trackId = newId;
-    logger["logger"].log("Switching to subtitle track " + newId);
-    hls.trigger(events["default"].SUBTITLE_TRACK_SWITCH, {
-      id: newId
-    });
-
-    this._loadCurrentTrack();
-  };
-
-  _proto._onTextTracksChanged = function _onTextTracksChanged() {
-    // Media is undefined when switching streams via loadSource()
-    if (!this.media || !this.hls.config.renderTextTracksNatively) {
-      return;
-    }
-
-    var trackId = -1;
-    var tracks = filterSubtitleTracks(this.media.textTracks);
-
-    for (var id = 0; id < tracks.length; id++) {
-      if (tracks[id].mode === 'hidden') {
-        // Do not break in case there is a following track with showing.
-        trackId = id;
-      } else if (tracks[id].mode === 'showing') {
-        trackId = id;
-        break;
-      }
-    } // Setting current subtitleTrack will invoke code.
-
-
-    this.subtitleTrack = trackId;
-  };
-
-  subtitle_track_controller_createClass(SubtitleTrackController, [{
-    key: "subtitleTracks",
-    get: function get() {
-      return this.tracks;
-    }
-    /** get index of the selected subtitle track (index in subtitle track lists) **/
-
-  }, {
-    key: "subtitleTrack",
-    get: function get() {
-      return this.trackId;
-    }
-    /** select a subtitle track, based on its index in subtitle track lists**/
-    ,
-    set: function set(subtitleTrackId) {
-      if (this.trackId !== subtitleTrackId) {
-        this._toggleTrackModes(subtitleTrackId);
-
-        this._setSubtitleTrackInternal(subtitleTrackId);
-      }
-    }
-  }]);
-
-  return SubtitleTrackController;
-}(event_handler);
-
-function filterSubtitleTracks(textTrackList) {
-  var tracks = [];
-
-  for (var i = 0; i < textTrackList.length; i++) {
-    var track = textTrackList[i]; // Edge adds a track without a label; we don't want to use it
-
-    if (track.kind === 'subtitles' && track.label) {
-      tracks.push(textTrackList[i]);
-    }
-  }
-
-  return tracks;
-}
-
-/* harmony default export */ var subtitle_track_controller = (subtitle_track_controller_SubtitleTrackController);
-// EXTERNAL MODULE: ./src/crypt/decrypter.js + 3 modules
-var decrypter = __webpack_require__("./src/crypt/decrypter.js");
-
-// CONCATENATED MODULE: ./src/controller/subtitle-stream-controller.js
-function subtitle_stream_controller_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
-
-function subtitle_stream_controller_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
-
-/**
- * @class SubtitleStreamController
- */
-
-
-
-
-
-
-
-
-var subtitle_stream_controller_window = window,
-    subtitle_stream_controller_performance = subtitle_stream_controller_window.performance;
-var subtitle_stream_controller_TICK_INTERVAL = 500; // how often to tick in ms
-
-var subtitle_stream_controller_SubtitleStreamController = /*#__PURE__*/function (_BaseStreamController) {
-  subtitle_stream_controller_inheritsLoose(SubtitleStreamController, _BaseStreamController);
-
-  function SubtitleStreamController(hls, fragmentTracker) {
-    var _this;
-
-    _this = _BaseStreamController.call(this, hls, events["default"].MEDIA_ATTACHED, events["default"].MEDIA_DETACHING, events["default"].ERROR, events["default"].KEY_LOADED, events["default"].FRAG_LOADED, events["default"].SUBTITLE_TRACKS_UPDATED, events["default"].SUBTITLE_TRACK_SWITCH, events["default"].SUBTITLE_TRACK_LOADED, events["default"].SUBTITLE_FRAG_PROCESSED, events["default"].LEVEL_UPDATED) || this;
-    _this.fragmentTracker = fragmentTracker;
-    _this.config = hls.config;
-    _this.state = State.STOPPED;
-    _this.tracks = [];
-    _this.tracksBuffered = [];
-    _this.currentTrackId = -1;
-    _this.decrypter = new decrypter["default"](hls, hls.config); // lastAVStart stores the time in seconds for the start time of a level load
-
-    _this.lastAVStart = 0;
-    _this._onMediaSeeking = _this.onMediaSeeking.bind(subtitle_stream_controller_assertThisInitialized(_this));
-    return _this;
-  }
-
-  var _proto = SubtitleStreamController.prototype;
-
-  _proto.startLoad = function startLoad() {
-    this.stopLoad();
-    this.state = State.IDLE; // Check if we already have a track with necessary details to load fragments
-
-    var currentTrack = this.tracks[this.currentTrackId];
-
-    if (currentTrack && currentTrack.details) {
-      this.setInterval(subtitle_stream_controller_TICK_INTERVAL);
-      this.tick();
-    }
-  };
-
-  _proto.onSubtitleFragProcessed = function onSubtitleFragProcessed(data) {
-    var frag = data.frag,
-        success = data.success;
-    this.fragPrevious = frag;
-    this.state = State.IDLE;
-
-    if (!success) {
-      return;
-    }
-
-    var buffered = this.tracksBuffered[this.currentTrackId];
-
-    if (!buffered) {
-      return;
-    } // Create/update a buffered array matching the interface used by BufferHelper.bufferedInfo
-    // so we can re-use the logic used to detect how much have been buffered
-
-
-    var timeRange;
-    var fragStart = frag.start;
-
-    for (var i = 0; i < buffered.length; i++) {
-      if (fragStart >= buffered[i].start && fragStart <= buffered[i].end) {
-        timeRange = buffered[i];
-        break;
-      }
-    }
-
-    var fragEnd = frag.start + frag.duration;
-
-    if (timeRange) {
-      timeRange.end = fragEnd;
-    } else {
-      timeRange = {
-        start: fragStart,
-        end: fragEnd
-      };
-      buffered.push(timeRange);
-    }
-  };
-
-  _proto.onMediaAttached = function onMediaAttached(_ref) {
-    var media = _ref.media;
-    this.media = media;
-    media.addEventListener('seeking', this._onMediaSeeking);
-    this.state = State.IDLE;
-  };
-
-  _proto.onMediaDetaching = function onMediaDetaching() {
-    var _this2 = this;
-
-    if (!this.media) {
-      return;
-    }
-
-    this.media.removeEventListener('seeking', this._onMediaSeeking);
-    this.fragmentTracker.removeAllFragments();
-    this.currentTrackId = -1;
-    this.tracks.forEach(function (track) {
-      _this2.tracksBuffered[track.id] = [];
-    });
-    this.media = null;
-    this.state = State.STOPPED;
-  } // If something goes wrong, proceed to next frag, if we were processing one.
-  ;
-
-  _proto.onError = function onError(data) {
-    var frag = data.frag; // don't handle error not related to subtitle fragment
-
-    if (!frag || frag.type !== 'subtitle') {
-      return;
-    }
-
-    if (this.fragCurrent && this.fragCurrent.loader) {
-      this.fragCurrent.loader.abort();
-    }
-
-    this.state = State.IDLE;
-  } // Got all new subtitle tracks.
-  ;
-
-  _proto.onSubtitleTracksUpdated = function onSubtitleTracksUpdated(data) {
-    var _this3 = this;
-
-    logger["logger"].log('subtitle tracks updated');
-    this.tracksBuffered = [];
-    this.tracks = data.subtitleTracks;
-    this.tracks.forEach(function (track) {
-      _this3.tracksBuffered[track.id] = [];
-    });
-  };
-
-  _proto.onSubtitleTrackSwitch = function onSubtitleTrackSwitch(data) {
-    this.currentTrackId = data.id;
-
-    if (!this.tracks || !this.tracks.length || this.currentTrackId === -1) {
-      this.clearInterval();
-      return;
-    } // Check if track has the necessary details to load fragments
-
-
-    var currentTrack = this.tracks[this.currentTrackId];
-
-    if (currentTrack && currentTrack.details) {
-      this.setInterval(subtitle_stream_controller_TICK_INTERVAL);
-    }
-  } // Got a new set of subtitle fragments.
-  ;
-
-  _proto.onSubtitleTrackLoaded = function onSubtitleTrackLoaded(data) {
-    var id = data.id,
-        details = data.details;
-    var currentTrackId = this.currentTrackId,
-        tracks = this.tracks;
-    var currentTrack = tracks[currentTrackId];
-
-    if (id >= tracks.length || id !== currentTrackId || !currentTrack) {
-      return;
-    }
-
-    if (details.live) {
-      mergeSubtitlePlaylists(currentTrack.details, details, this.lastAVStart);
-    }
-
-    currentTrack.details = details;
-    this.setInterval(subtitle_stream_controller_TICK_INTERVAL);
-  };
-
-  _proto.onKeyLoaded = function onKeyLoaded() {
-    if (this.state === State.KEY_LOADING) {
-      this.state = State.IDLE;
-    }
-  };
-
-  _proto.onFragLoaded = function onFragLoaded(data) {
-    var fragCurrent = this.fragCurrent;
-    var decryptData = data.frag.decryptdata;
-    var fragLoaded = data.frag;
-    var hls = this.hls;
-
-    if (this.state === State.FRAG_LOADING && fragCurrent && data.frag.type === 'subtitle' && fragCurrent.sn === data.frag.sn) {
-      // check to see if the payload needs to be decrypted
-      if (data.payload.byteLength > 0 && decryptData && decryptData.key && decryptData.method === 'AES-128') {
-        var startTime = subtitle_stream_controller_performance.now(); // decrypt the subtitles
-
-        this.decrypter.decrypt(data.payload, decryptData.key.buffer, decryptData.iv.buffer, function (decryptedData) {
-          var endTime = subtitle_stream_controller_performance.now();
-          hls.trigger(events["default"].FRAG_DECRYPTED, {
-            frag: fragLoaded,
-            payload: decryptedData,
-            stats: {
-              tstart: startTime,
-              tdecrypt: endTime
-            }
-          });
-        });
-      }
-    }
-  };
-
-  _proto.onLevelUpdated = function onLevelUpdated(_ref2) {
-    var details = _ref2.details;
-    var frags = details.fragments;
-    this.lastAVStart = frags.length ? frags[0].start : 0;
-  };
-
-  _proto.doTick = function doTick() {
-    if (!this.media) {
-      this.state = State.IDLE;
-      return;
-    }
-
-    switch (this.state) {
-      case State.IDLE:
-        {
-          var config = this.config,
-              currentTrackId = this.currentTrackId,
-              fragmentTracker = this.fragmentTracker,
-              media = this.media,
-              tracks = this.tracks;
-
-          if (!tracks || !tracks[currentTrackId] || !tracks[currentTrackId].details) {
-            break;
-          }
-
-          var maxBufferHole = config.maxBufferHole,
-              maxFragLookUpTolerance = config.maxFragLookUpTolerance;
-          var maxConfigBuffer = Math.min(config.maxBufferLength, config.maxMaxBufferLength);
-          var bufferedInfo = buffer_helper_BufferHelper.bufferedInfo(this._getBuffered(), media.currentTime, maxBufferHole);
-          var bufferEnd = bufferedInfo.end,
-              bufferLen = bufferedInfo.len;
-          var trackDetails = tracks[currentTrackId].details;
-          var fragments = trackDetails.fragments;
-          var fragLen = fragments.length;
-          var end = fragments[fragLen - 1].start + fragments[fragLen - 1].duration;
-
-          if (bufferLen > maxConfigBuffer) {
-            return;
-          }
-
-          var foundFrag;
-          var fragPrevious = this.fragPrevious;
-
-          if (bufferEnd < end) {
-            if (fragPrevious && trackDetails.hasProgramDateTime) {
-              foundFrag = findFragmentByPDT(fragments, fragPrevious.endProgramDateTime, maxFragLookUpTolerance);
-            }
-
-            if (!foundFrag) {
-              foundFrag = findFragmentByPTS(fragPrevious, fragments, bufferEnd, maxFragLookUpTolerance);
-            }
-          } else {
-            foundFrag = fragments[fragLen - 1];
-          }
-
-          if (foundFrag && foundFrag.encrypted) {
-            logger["logger"].log("Loading key for " + foundFrag.sn);
-            this.state = State.KEY_LOADING;
-            this.hls.trigger(events["default"].KEY_LOADING, {
-              frag: foundFrag
-            });
-          } else if (foundFrag && fragmentTracker.getState(foundFrag) === FragmentState.NOT_LOADED) {
-            // only load if fragment is not loaded
-            this.fragCurrent = foundFrag;
-            this.state = State.FRAG_LOADING;
-            this.hls.trigger(events["default"].FRAG_LOADING, {
-              frag: foundFrag
-            });
-          }
-        }
-    }
-  };
-
-  _proto.stopLoad = function stopLoad() {
-    this.lastAVStart = 0;
-    this.fragPrevious = null;
-
-    _BaseStreamController.prototype.stopLoad.call(this);
-  };
-
-  _proto._getBuffered = function _getBuffered() {
-    return this.tracksBuffered[this.currentTrackId] || [];
-  };
-
-  _proto.onMediaSeeking = function onMediaSeeking() {
-    if (this.fragCurrent) {
-      var currentTime = this.media ? this.media.currentTime : 0;
-      var tolerance = this.config.maxFragLookUpTolerance;
-      var fragStartOffset = this.fragCurrent.start - tolerance;
-      var fragEndOffset = this.fragCurrent.start + this.fragCurrent.duration + tolerance; // check if position will be out of currently loaded frag range after seeking : if out, cancel frag load, if in, don't do anything
-
-      if (currentTime < fragStartOffset || currentTime > fragEndOffset) {
-        if (this.fragCurrent.loader) {
-          this.fragCurrent.loader.abort();
-        }
-
-        this.fragmentTracker.removeFragment(this.fragCurrent);
-        this.fragCurrent = null;
-        this.fragPrevious = null; // switch to IDLE state to load new fragment
-
-        this.state = State.IDLE; // speed up things
-
-        this.tick();
-      }
-    }
-  };
-
-  return SubtitleStreamController;
-}(base_stream_controller_BaseStreamController);
-// CONCATENATED MODULE: ./src/utils/mediakeys-helper.ts
-/**
- * @see https://developer.mozilla.org/en-US/docs/Web/API/Navigator/requestMediaKeySystemAccess
- */
-var KeySystems;
-
-(function (KeySystems) {
-  KeySystems["WIDEVINE"] = "com.widevine.alpha";
-  KeySystems["PLAYREADY"] = "com.microsoft.playready";
-})(KeySystems || (KeySystems = {}));
-
-var requestMediaKeySystemAccess = function () {
-  if (typeof window !== 'undefined' && window.navigator && window.navigator.requestMediaKeySystemAccess) {
-    return window.navigator.requestMediaKeySystemAccess.bind(window.navigator);
-  } else {
-    return null;
-  }
-}();
-
-
-// CONCATENATED MODULE: ./src/controller/eme-controller.ts
-function eme_controller_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
-
-function eme_controller_createClass(Constructor, protoProps, staticProps) { if (protoProps) eme_controller_defineProperties(Constructor.prototype, protoProps); if (staticProps) eme_controller_defineProperties(Constructor, staticProps); return Constructor; }
-
-function eme_controller_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
-
-/**
- * @author Stephan Hesse <disparat@gmail.com> | <tchakabam@gmail.com>
- *
- * DRM support for Hls.js
- */
-
-
-
-
-
-var MAX_LICENSE_REQUEST_FAILURES = 3;
-/**
- * @see https://developer.mozilla.org/en-US/docs/Web/API/MediaKeySystemConfiguration
- * @param {Array<string>} audioCodecs List of required audio codecs to support
- * @param {Array<string>} videoCodecs List of required video codecs to support
- * @param {object} drmSystemOptions Optional parameters/requirements for the key-system
- * @returns {Array<MediaSystemConfiguration>} An array of supported configurations
- */
-
-var createWidevineMediaKeySystemConfigurations = function createWidevineMediaKeySystemConfigurations(audioCodecs, videoCodecs, drmSystemOptions) {
-  /* jshint ignore:line */
-  var baseConfig = {
-    // initDataTypes: ['keyids', 'mp4'],
-    // label: "",
-    // persistentState: "not-allowed", // or "required" ?
-    // distinctiveIdentifier: "not-allowed", // or "required" ?
-    // sessionTypes: ['temporary'],
-    audioCapabilities: [],
-    // { contentType: 'audio/mp4; codecs="mp4a.40.2"' }
-    videoCapabilities: [] // { contentType: 'video/mp4; codecs="avc1.42E01E"' }
-
-  };
-  audioCodecs.forEach(function (codec) {
-    baseConfig.audioCapabilities.push({
-      contentType: "audio/mp4; codecs=\"" + codec + "\"",
-      robustness: drmSystemOptions.audioRobustness || ''
-    });
-  });
-  videoCodecs.forEach(function (codec) {
-    baseConfig.videoCapabilities.push({
-      contentType: "video/mp4; codecs=\"" + codec + "\"",
-      robustness: drmSystemOptions.videoRobustness || ''
-    });
-  });
-  return [baseConfig];
-};
-/**
- * The idea here is to handle key-system (and their respective platforms) specific configuration differences
- * in order to work with the local requestMediaKeySystemAccess method.
- *
- * We can also rule-out platform-related key-system support at this point by throwing an error.
- *
- * @param {string} keySystem Identifier for the key-system, see `KeySystems` enum
- * @param {Array<string>} audioCodecs List of required audio codecs to support
- * @param {Array<string>} videoCodecs List of required video codecs to support
- * @throws will throw an error if a unknown key system is passed
- * @returns {Array<MediaSystemConfiguration>} A non-empty Array of MediaKeySystemConfiguration objects
- */
-
-
-var eme_controller_getSupportedMediaKeySystemConfigurations = function getSupportedMediaKeySystemConfigurations(keySystem, audioCodecs, videoCodecs, drmSystemOptions) {
-  switch (keySystem) {
-    case KeySystems.WIDEVINE:
-      return createWidevineMediaKeySystemConfigurations(audioCodecs, videoCodecs, drmSystemOptions);
-
-    default:
-      throw new Error("Unknown key-system: " + keySystem);
-  }
-};
-
-/**
- * Controller to deal with encrypted media extensions (EME)
- * @see https://developer.mozilla.org/en-US/docs/Web/API/Encrypted_Media_Extensions_API
- *
- * @class
- * @constructor
- */
-var eme_controller_EMEController = /*#__PURE__*/function (_EventHandler) {
-  eme_controller_inheritsLoose(EMEController, _EventHandler);
-
-  /**
-     * @constructs
-     * @param {Hls} hls Our Hls.js instance
-     */
-  function EMEController(hls) {
-    var _this;
-
-    _this = _EventHandler.call(this, hls, events["default"].MEDIA_ATTACHED, events["default"].MEDIA_DETACHED, events["default"].MANIFEST_PARSED) || this;
-    _this._widevineLicenseUrl = void 0;
-    _this._licenseXhrSetup = void 0;
-    _this._emeEnabled = void 0;
-    _this._requestMediaKeySystemAccess = void 0;
-    _this._drmSystemOptions = void 0;
-    _this._config = void 0;
-    _this._mediaKeysList = [];
-    _this._media = null;
-    _this._hasSetMediaKeys = false;
-    _this._requestLicenseFailureCount = 0;
-    _this.mediaKeysPromise = null;
-
-    _this._onMediaEncrypted = function (e) {
-      logger["logger"].log("Media is encrypted using \"" + e.initDataType + "\" init data type");
-
-      if (!_this.mediaKeysPromise) {
-        logger["logger"].error('Fatal: Media is encrypted but no CDM access or no keys have been requested');
-
-        _this.hls.trigger(events["default"].ERROR, {
-          type: errors["ErrorTypes"].KEY_SYSTEM_ERROR,
-          details: errors["ErrorDetails"].KEY_SYSTEM_NO_KEYS,
-          fatal: true
-        });
-
-        return;
-      }
-
-      var finallySetKeyAndStartSession = function finallySetKeyAndStartSession(mediaKeys) {
-        if (!_this._media) {
-          return;
-        }
-
-        _this._attemptSetMediaKeys(mediaKeys);
-
-        _this._generateRequestWithPreferredKeySession(e.initDataType, e.initData);
-      }; // Could use `Promise.finally` but some Promise polyfills are missing it
-
-
-      _this.mediaKeysPromise.then(finallySetKeyAndStartSession).catch(finallySetKeyAndStartSession);
-    };
-
-    _this._config = hls.config;
-    _this._widevineLicenseUrl = _this._config.widevineLicenseUrl;
-    _this._licenseXhrSetup = _this._config.licenseXhrSetup;
-    _this._emeEnabled = _this._config.emeEnabled;
-    _this._requestMediaKeySystemAccess = _this._config.requestMediaKeySystemAccessFunc;
-    _this._drmSystemOptions = hls.config.drmSystemOptions;
-    return _this;
-  }
-  /**
-   * @param {string} keySystem Identifier for the key-system, see `KeySystems` enum
-   * @returns {string} License server URL for key-system (if any configured, otherwise causes error)
-   * @throws if a unsupported keysystem is passed
-   */
-
-
-  var _proto = EMEController.prototype;
-
-  _proto.getLicenseServerUrl = function getLicenseServerUrl(keySystem) {
-    switch (keySystem) {
-      case KeySystems.WIDEVINE:
-        if (!this._widevineLicenseUrl) {
-          break;
-        }
-
-        return this._widevineLicenseUrl;
-    }
-
-    throw new Error("no license server URL configured for key-system \"" + keySystem + "\"");
-  }
-  /**
-     * Requests access object and adds it to our list upon success
-     * @private
-     * @param {string} keySystem System ID (see `KeySystems`)
-     * @param {Array<string>} audioCodecs List of required audio codecs to support
-     * @param {Array<string>} videoCodecs List of required video codecs to support
-     * @throws When a unsupported KeySystem is passed
-     */
-  ;
-
-  _proto._attemptKeySystemAccess = function _attemptKeySystemAccess(keySystem, audioCodecs, videoCodecs) {
-    var _this2 = this;
-
-    // This can throw, but is caught in event handler callpath
-    var mediaKeySystemConfigs = eme_controller_getSupportedMediaKeySystemConfigurations(keySystem, audioCodecs, videoCodecs, this._drmSystemOptions);
-    logger["logger"].log('Requesting encrypted media key-system access'); // expecting interface like window.navigator.requestMediaKeySystemAccess
-
-    var keySystemAccessPromise = this.requestMediaKeySystemAccess(keySystem, mediaKeySystemConfigs);
-    this.mediaKeysPromise = keySystemAccessPromise.then(function (mediaKeySystemAccess) {
-      return _this2._onMediaKeySystemAccessObtained(keySystem, mediaKeySystemAccess);
-    });
-    keySystemAccessPromise.catch(function (err) {
-      logger["logger"].error("Failed to obtain key-system \"" + keySystem + "\" access:", err);
-    });
-  };
-
-  /**
-     * Handles obtaining access to a key-system
-     * @private
-     * @param {string} keySystem
-     * @param {MediaKeySystemAccess} mediaKeySystemAccess https://developer.mozilla.org/en-US/docs/Web/API/MediaKeySystemAccess
-     */
-  _proto._onMediaKeySystemAccessObtained = function _onMediaKeySystemAccessObtained(keySystem, mediaKeySystemAccess) {
-    var _this3 = this;
-
-    logger["logger"].log("Access for key-system \"" + keySystem + "\" obtained");
-    var mediaKeysListItem = {
-      mediaKeysSessionInitialized: false,
-      mediaKeySystemAccess: mediaKeySystemAccess,
-      mediaKeySystemDomain: keySystem
-    };
-
-    this._mediaKeysList.push(mediaKeysListItem);
-
-    var mediaKeysPromise = Promise.resolve().then(function () {
-      return mediaKeySystemAccess.createMediaKeys();
-    }).then(function (mediaKeys) {
-      mediaKeysListItem.mediaKeys = mediaKeys;
-      logger["logger"].log("Media-keys created for key-system \"" + keySystem + "\"");
-
-      _this3._onMediaKeysCreated();
-
-      return mediaKeys;
-    });
-    mediaKeysPromise.catch(function (err) {
-      logger["logger"].error('Failed to create media-keys:', err);
-    });
-    return mediaKeysPromise;
-  }
-  /**
-   * Handles key-creation (represents access to CDM). We are going to create key-sessions upon this
-   * for all existing keys where no session exists yet.
-   *
-   * @private
-   */
-  ;
-
-  _proto._onMediaKeysCreated = function _onMediaKeysCreated() {
-    var _this4 = this;
-
-    // check for all key-list items if a session exists, otherwise, create one
-    this._mediaKeysList.forEach(function (mediaKeysListItem) {
-      if (!mediaKeysListItem.mediaKeysSession) {
-        // mediaKeys is definitely initialized here
-        mediaKeysListItem.mediaKeysSession = mediaKeysListItem.mediaKeys.createSession();
-
-        _this4._onNewMediaKeySession(mediaKeysListItem.mediaKeysSession);
-      }
-    });
-  }
-  /**
-     * @private
-     * @param {*} keySession
-     */
-  ;
-
-  _proto._onNewMediaKeySession = function _onNewMediaKeySession(keySession) {
-    var _this5 = this;
-
-    logger["logger"].log("New key-system session " + keySession.sessionId);
-    keySession.addEventListener('message', function (event) {
-      _this5._onKeySessionMessage(keySession, event.message);
-    }, false);
-  }
-  /**
-   * @private
-   * @param {MediaKeySession} keySession
-   * @param {ArrayBuffer} message
-   */
-  ;
-
-  _proto._onKeySessionMessage = function _onKeySessionMessage(keySession, message) {
-    logger["logger"].log('Got EME message event, creating license request');
-
-    this._requestLicense(message, function (data) {
-      logger["logger"].log("Received license data (length: " + (data ? data.byteLength : data) + "), updating key-session");
-      keySession.update(data);
-    });
-  }
-  /**
-   * @private
-   * @param e {MediaEncryptedEvent}
-   */
-  ;
-
-  /**
-   * @private
-   */
-  _proto._attemptSetMediaKeys = function _attemptSetMediaKeys(mediaKeys) {
-    if (!this._media) {
-      throw new Error('Attempted to set mediaKeys without first attaching a media element');
-    }
-
-    if (!this._hasSetMediaKeys) {
-      // FIXME: see if we can/want/need-to really to deal with several potential key-sessions?
-      var keysListItem = this._mediaKeysList[0];
-
-      if (!keysListItem || !keysListItem.mediaKeys) {
-        logger["logger"].error('Fatal: Media is encrypted but no CDM access or no keys have been obtained yet');
-        this.hls.trigger(events["default"].ERROR, {
-          type: errors["ErrorTypes"].KEY_SYSTEM_ERROR,
-          details: errors["ErrorDetails"].KEY_SYSTEM_NO_KEYS,
-          fatal: true
-        });
-        return;
-      }
-
-      logger["logger"].log('Setting keys for encrypted media');
-
-      this._media.setMediaKeys(keysListItem.mediaKeys);
-
-      this._hasSetMediaKeys = true;
-    }
-  }
-  /**
-   * @private
-   */
-  ;
-
-  _proto._generateRequestWithPreferredKeySession = function _generateRequestWithPreferredKeySession(initDataType, initData) {
-    var _this6 = this;
-
-    // FIXME: see if we can/want/need-to really to deal with several potential key-sessions?
-    var keysListItem = this._mediaKeysList[0];
-
-    if (!keysListItem) {
-      logger["logger"].error('Fatal: Media is encrypted but not any key-system access has been obtained yet');
-      this.hls.trigger(events["default"].ERROR, {
-        type: errors["ErrorTypes"].KEY_SYSTEM_ERROR,
-        details: errors["ErrorDetails"].KEY_SYSTEM_NO_ACCESS,
-        fatal: true
-      });
-      return;
-    }
-
-    if (keysListItem.mediaKeysSessionInitialized) {
-      logger["logger"].warn('Key-Session already initialized but requested again');
-      return;
-    }
-
-    var keySession = keysListItem.mediaKeysSession;
-
-    if (!keySession) {
-      logger["logger"].error('Fatal: Media is encrypted but no key-session existing');
-      this.hls.trigger(events["default"].ERROR, {
-        type: errors["ErrorTypes"].KEY_SYSTEM_ERROR,
-        details: errors["ErrorDetails"].KEY_SYSTEM_NO_SESSION,
-        fatal: true
-      });
-      return;
-    } // initData is null if the media is not CORS-same-origin
-
-
-    if (!initData) {
-      logger["logger"].warn('Fatal: initData required for generating a key session is null');
-      this.hls.trigger(events["default"].ERROR, {
-        type: errors["ErrorTypes"].KEY_SYSTEM_ERROR,
-        details: errors["ErrorDetails"].KEY_SYSTEM_NO_INIT_DATA,
-        fatal: true
-      });
-      return;
-    }
-
-    logger["logger"].log("Generating key-session request for \"" + initDataType + "\" init data type");
-    keysListItem.mediaKeysSessionInitialized = true;
-    keySession.generateRequest(initDataType, initData).then(function () {
-      logger["logger"].debug('Key-session generation succeeded');
-    }).catch(function (err) {
-      logger["logger"].error('Error generating key-session request:', err);
-
-      _this6.hls.trigger(events["default"].ERROR, {
-        type: errors["ErrorTypes"].KEY_SYSTEM_ERROR,
-        details: errors["ErrorDetails"].KEY_SYSTEM_NO_SESSION,
-        fatal: false
-      });
-    });
-  }
-  /**
-   * @private
-   * @param {string} url License server URL
-   * @param {ArrayBuffer} keyMessage Message data issued by key-system
-   * @param {function} callback Called when XHR has succeeded
-   * @returns {XMLHttpRequest} Unsent (but opened state) XHR object
-   * @throws if XMLHttpRequest construction failed
-   */
-  ;
-
-  _proto._createLicenseXhr = function _createLicenseXhr(url, keyMessage, callback) {
-    var xhr = new XMLHttpRequest();
-    var licenseXhrSetup = this._licenseXhrSetup;
-
-    try {
-      if (licenseXhrSetup) {
-        try {
-          licenseXhrSetup(xhr, url);
-        } catch (e) {
-          // let's try to open before running setup
-          xhr.open('POST', url, true);
-          licenseXhrSetup(xhr, url);
-        }
-      } // if licenseXhrSetup did not yet call open, let's do it now
-
-
-      if (!xhr.readyState) {
-        xhr.open('POST', url, true);
-      }
-    } catch (e) {
-      // IE11 throws an exception on xhr.open if attempting to access an HTTP resource over HTTPS
-      throw new Error("issue setting up KeySystem license XHR " + e);
-    } // Because we set responseType to ArrayBuffer here, callback is typed as handling only array buffers
-
-
-    xhr.responseType = 'arraybuffer';
-    xhr.onreadystatechange = this._onLicenseRequestReadyStageChange.bind(this, xhr, url, keyMessage, callback);
-    return xhr;
-  }
-  /**
-   * @private
-   * @param {XMLHttpRequest} xhr
-   * @param {string} url License server URL
-   * @param {ArrayBuffer} keyMessage Message data issued by key-system
-   * @param {function} callback Called when XHR has succeeded
-   */
-  ;
-
-  _proto._onLicenseRequestReadyStageChange = function _onLicenseRequestReadyStageChange(xhr, url, keyMessage, callback) {
-    switch (xhr.readyState) {
-      case 4:
-        if (xhr.status === 200) {
-          this._requestLicenseFailureCount = 0;
-          logger["logger"].log('License request succeeded');
-
-          if (xhr.responseType !== 'arraybuffer') {
-            logger["logger"].warn('xhr response type was not set to the expected arraybuffer for license request');
-          }
-
-          callback(xhr.response);
-        } else {
-          logger["logger"].error("License Request XHR failed (" + url + "). Status: " + xhr.status + " (" + xhr.statusText + ")");
-          this._requestLicenseFailureCount++;
-
-          if (this._requestLicenseFailureCount > MAX_LICENSE_REQUEST_FAILURES) {
-            this.hls.trigger(events["default"].ERROR, {
-              type: errors["ErrorTypes"].KEY_SYSTEM_ERROR,
-              details: errors["ErrorDetails"].KEY_SYSTEM_LICENSE_REQUEST_FAILED,
-              fatal: true
-            });
-            return;
-          }
-
-          var attemptsLeft = MAX_LICENSE_REQUEST_FAILURES - this._requestLicenseFailureCount + 1;
-          logger["logger"].warn("Retrying license request, " + attemptsLeft + " attempts left");
-
-          this._requestLicense(keyMessage, callback);
-        }
-
-        break;
-    }
-  }
-  /**
-   * @private
-   * @param {MediaKeysListItem} keysListItem
-   * @param {ArrayBuffer} keyMessage
-   * @returns {ArrayBuffer} Challenge data posted to license server
-   * @throws if KeySystem is unsupported
-   */
-  ;
-
-  _proto._generateLicenseRequestChallenge = function _generateLicenseRequestChallenge(keysListItem, keyMessage) {
-    switch (keysListItem.mediaKeySystemDomain) {
-      // case KeySystems.PLAYREADY:
-      // from https://github.com/MicrosoftEdge/Demos/blob/master/eme/scripts/demo.js
-
-      /*
-        if (this.licenseType !== this.LICENSE_TYPE_WIDEVINE) {
-          // For PlayReady CDMs, we need to dig the Challenge out of the XML.
-          var keyMessageXml = new DOMParser().parseFromString(String.fromCharCode.apply(null, new Uint16Array(keyMessage)), 'application/xml');
-          if (keyMessageXml.getElementsByTagName('Challenge')[0]) {
-              challenge = atob(keyMessageXml.getElementsByTagName('Challenge')[0].childNodes[0].nodeValue);
-          } else {
-              throw 'Cannot find <Challenge> in key message';
-          }
-          var headerNames = keyMessageXml.getElementsByTagName('name');
-          var headerValues = keyMessageXml.getElementsByTagName('value');
-          if (headerNames.length !== headerValues.length) {
-              throw 'Mismatched header <name>/<value> pair in key message';
-          }
-          for (var i = 0; i < headerNames.length; i++) {
-              xhr.setRequestHeader(headerNames[i].childNodes[0].nodeValue, headerValues[i].childNodes[0].nodeValue);
-          }
-        }
-        break;
-      */
-      case KeySystems.WIDEVINE:
-        // For Widevine CDMs, the challenge is the keyMessage.
-        return keyMessage;
-    }
-
-    throw new Error("unsupported key-system: " + keysListItem.mediaKeySystemDomain);
-  }
-  /**
-   * @private
-   * @param keyMessage
-   * @param callback
-   */
-  ;
-
-  _proto._requestLicense = function _requestLicense(keyMessage, callback) {
-    logger["logger"].log('Requesting content license for key-system');
-    var keysListItem = this._mediaKeysList[0];
-
-    if (!keysListItem) {
-      logger["logger"].error('Fatal error: Media is encrypted but no key-system access has been obtained yet');
-      this.hls.trigger(events["default"].ERROR, {
-        type: errors["ErrorTypes"].KEY_SYSTEM_ERROR,
-        details: errors["ErrorDetails"].KEY_SYSTEM_NO_ACCESS,
-        fatal: true
-      });
-      return;
-    }
-
-    try {
-      var _url = this.getLicenseServerUrl(keysListItem.mediaKeySystemDomain);
-
-      var _xhr = this._createLicenseXhr(_url, keyMessage, callback);
-
-      logger["logger"].log("Sending license request to URL: " + _url);
-
-      var challenge = this._generateLicenseRequestChallenge(keysListItem, keyMessage);
-
-      _xhr.send(challenge);
-    } catch (e) {
-      logger["logger"].error("Failure requesting DRM license: " + e);
-      this.hls.trigger(events["default"].ERROR, {
-        type: errors["ErrorTypes"].KEY_SYSTEM_ERROR,
-        details: errors["ErrorDetails"].KEY_SYSTEM_LICENSE_REQUEST_FAILED,
-        fatal: true
-      });
-    }
-  };
-
-  _proto.onMediaAttached = function onMediaAttached(data) {
-    if (!this._emeEnabled) {
-      return;
-    }
-
-    var media = data.media; // keep reference of media
-
-    this._media = media;
-    media.addEventListener('encrypted', this._onMediaEncrypted);
-  };
-
-  _proto.onMediaDetached = function onMediaDetached() {
-    var media = this._media;
-    var mediaKeysList = this._mediaKeysList;
-
-    if (!media) {
-      return;
-    }
-
-    media.removeEventListener('encrypted', this._onMediaEncrypted);
-    this._media = null;
-    this._mediaKeysList = []; // Close all sessions and remove media keys from the video element.
-
-    Promise.all(mediaKeysList.map(function (mediaKeysListItem) {
-      if (mediaKeysListItem.mediaKeysSession) {
-        return mediaKeysListItem.mediaKeysSession.close().catch(function () {// Ignore errors when closing the sessions. Closing a session that
-          // generated no key requests will throw an error.
-        });
-      }
-    })).then(function () {
-      return media.setMediaKeys(null);
-    }).catch(function () {// Ignore any failures while removing media keys from the video element.
-    });
-  } // TODO: Use manifest types here when they are defined
-  ;
-
-  _proto.onManifestParsed = function onManifestParsed(data) {
-    if (!this._emeEnabled) {
-      return;
-    }
-
-    var audioCodecs = data.levels.map(function (level) {
-      return level.audioCodec;
-    });
-    var videoCodecs = data.levels.map(function (level) {
-      return level.videoCodec;
-    });
-
-    this._attemptKeySystemAccess(KeySystems.WIDEVINE, audioCodecs, videoCodecs);
-  };
-
-  eme_controller_createClass(EMEController, [{
-    key: "requestMediaKeySystemAccess",
-    get: function get() {
-      if (!this._requestMediaKeySystemAccess) {
-        throw new Error('No requestMediaKeySystemAccess function configured');
-      }
-
-      return this._requestMediaKeySystemAccess;
-    }
-  }]);
-
-  return EMEController;
-}(event_handler);
-
-/* harmony default export */ var eme_controller = (eme_controller_EMEController);
-// CONCATENATED MODULE: ./src/config.ts
-function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
-
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-/**
- * HLS config
- */
-
-
-
-
- // import FetchLoader from './utils/fetch-loader';
-
-
-
-
-
-
-
-
-
-
-function timelineConfig() {
-  return {
-    cueHandler: cues_namespaceObject,
-    // used by timeline-controller
-    enableCEA708Captions: true,
-    // used by timeline-controller
-    enableWebVTT: true,
-    // used by timeline-controller
-    captionsTextTrack1Label: 'English',
-    // used by timeline-controller
-    captionsTextTrack1LanguageCode: 'en',
-    // used by timeline-controller
-    captionsTextTrack2Label: 'Spanish',
-    // used by timeline-controller
-    captionsTextTrack2LanguageCode: 'es',
-    // used by timeline-controller
-    captionsTextTrack3Label: 'Unknown CC',
-    // used by timeline-controller
-    captionsTextTrack3LanguageCode: '',
-    // used by timeline-controller
-    captionsTextTrack4Label: 'Unknown CC',
-    // used by timeline-controller
-    captionsTextTrack4LanguageCode: '',
-    // used by timeline-controller
-    renderTextTracksNatively: true
-  };
-} // If possible, keep hlsDefaultConfig shallow
-// It is cloned whenever a new Hls instance is created, by keeping the config
-// shallow the properties are cloned, and we don't end up manipulating the default
-
-
-var hlsDefaultConfig = _objectSpread(_objectSpread({
-  autoStartLoad: true,
-  // used by stream-controller
-  startPosition: -1,
-  // used by stream-controller
-  defaultAudioCodec: void 0,
-  // used by stream-controller
-  debug: false,
-  // used by logger
-  capLevelOnFPSDrop: false,
-  // used by fps-controller
-  capLevelToPlayerSize: false,
-  // used by cap-level-controller
-  initialLiveManifestSize: 1,
-  // used by stream-controller
-  maxBufferLength: 30,
-  // used by stream-controller
-  maxBufferSize: 60 * 1000 * 1000,
-  // used by stream-controller
-  maxBufferHole: 0.5,
-  // used by stream-controller
-  lowBufferWatchdogPeriod: 0.5,
-  // used by stream-controller
-  highBufferWatchdogPeriod: 3,
-  // used by stream-controller
-  nudgeOffset: 0.1,
-  // used by stream-controller
-  nudgeMaxRetry: 3,
-  // used by stream-controller
-  maxFragLookUpTolerance: 0.25,
-  // used by stream-controller
-  liveSyncDurationCount: 3,
-  // used by stream-controller
-  liveMaxLatencyDurationCount: Infinity,
-  // used by stream-controller
-  liveSyncDuration: void 0,
-  // used by stream-controller
-  liveMaxLatencyDuration: void 0,
-  // used by stream-controller
-  liveDurationInfinity: false,
-  // used by buffer-controller
-  liveBackBufferLength: Infinity,
-  // used by buffer-controller
-  maxMaxBufferLength: 600,
-  // used by stream-controller
-  enableWorker: true,
-  // used by demuxer
-  enableSoftwareAES: true,
-  // used by decrypter
-  manifestLoadingTimeOut: 10000,
-  // used by playlist-loader
-  manifestLoadingMaxRetry: 1,
-  // used by playlist-loader
-  manifestLoadingRetryDelay: 1000,
-  // used by playlist-loader
-  manifestLoadingMaxRetryTimeout: 64000,
-  // used by playlist-loader
-  startLevel: void 0,
-  // used by level-controller
-  levelLoadingTimeOut: 10000,
-  // used by playlist-loader
-  levelLoadingMaxRetry: 4,
-  // used by playlist-loader
-  levelLoadingRetryDelay: 1000,
-  // used by playlist-loader
-  levelLoadingMaxRetryTimeout: 64000,
-  // used by playlist-loader
-  fragLoadingTimeOut: 20000,
-  // used by fragment-loader
-  fragLoadingMaxRetry: 6,
-  // used by fragment-loader
-  fragLoadingRetryDelay: 1000,
-  // used by fragment-loader
-  fragLoadingMaxRetryTimeout: 64000,
-  // used by fragment-loader
-  startFragPrefetch: false,
-  // used by stream-controller
-  fpsDroppedMonitoringPeriod: 5000,
-  // used by fps-controller
-  fpsDroppedMonitoringThreshold: 0.2,
-  // used by fps-controller
-  appendErrorMaxRetry: 3,
-  // used by buffer-controller
-  loader: xhr_loader,
-  // loader: FetchLoader,
-  fLoader: void 0,
-  // used by fragment-loader
-  pLoader: void 0,
-  // used by playlist-loader
-  xhrSetup: void 0,
-  // used by xhr-loader
-  licenseXhrSetup: void 0,
-  // used by eme-controller
-  // fetchSetup: void 0,
-  abrController: abr_controller,
-  bufferController: buffer_controller,
-  capLevelController: cap_level_controller,
-  fpsController: fps_controller,
-  stretchShortVideoTrack: false,
-  // used by mp4-remuxer
-  maxAudioFramesDrift: 1,
-  // used by mp4-remuxer
-  forceKeyFrameOnDiscontinuity: true,
-  // used by ts-demuxer
-  abrEwmaFastLive: 3,
-  // used by abr-controller
-  abrEwmaSlowLive: 9,
-  // used by abr-controller
-  abrEwmaFastVoD: 3,
-  // used by abr-controller
-  abrEwmaSlowVoD: 9,
-  // used by abr-controller
-  abrEwmaDefaultEstimate: 5e5,
-  // 500 kbps  // used by abr-controller
-  abrBandWidthFactor: 0.95,
-  // used by abr-controller
-  abrBandWidthUpFactor: 0.7,
-  // used by abr-controller
-  abrMaxWithRealBitrate: false,
-  // used by abr-controller
-  maxStarvationDelay: 4,
-  // used by abr-controller
-  maxLoadingDelay: 4,
-  // used by abr-controller
-  minAutoBitrate: 0,
-  // used by hls
-  emeEnabled: false,
-  // used by eme-controller
-  widevineLicenseUrl: void 0,
-  // used by eme-controller
-  drmSystemOptions: {},
-  // used by eme-controller
-  requestMediaKeySystemAccessFunc: requestMediaKeySystemAccess,
-  // used by eme-controller
-  testBandwidth: true
-}, timelineConfig()), {}, {
-  subtitleStreamController:  true ? subtitle_stream_controller_SubtitleStreamController : undefined,
-  subtitleTrackController:  true ? subtitle_track_controller : undefined,
-  timelineController:  true ? timeline_controller : undefined,
-  audioStreamController:  true ? audio_stream_controller : undefined,
-  audioTrackController:  true ? audio_track_controller : undefined,
-  emeController:  true ? eme_controller : undefined
-});
-// CONCATENATED MODULE: ./src/hls.ts
-function hls_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
-
-function hls_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { hls_ownKeys(Object(source), true).forEach(function (key) { hls_defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { hls_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
-
-function hls_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-function hls_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
-
-function hls_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
-
-function hls_createClass(Constructor, protoProps, staticProps) { if (protoProps) hls_defineProperties(Constructor.prototype, protoProps); if (staticProps) hls_defineProperties(Constructor, staticProps); return Constructor; }
-
-function hls_inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-/**
- * @module Hls
- * @class
- * @constructor
- */
-
-var hls_Hls = /*#__PURE__*/function (_Observer) {
-  hls_inheritsLoose(Hls, _Observer);
-
-  /**
-   * @type {boolean}
-   */
-  Hls.isSupported = function isSupported() {
-    return is_supported_isSupported();
-  }
-  /**
-   * @type {HlsEvents}
-   */
-  ;
-
-  hls_createClass(Hls, null, [{
-    key: "version",
-
-    /**
-     * @type {string}
-     */
-    get: function get() {
-      return "0.15.0-alpha.2.0.canary.6177";
-    }
-  }, {
-    key: "Events",
-    get: function get() {
-      return events["default"];
-    }
-    /**
-     * @type {HlsErrorTypes}
-     */
-
-  }, {
-    key: "ErrorTypes",
-    get: function get() {
-      return errors["ErrorTypes"];
-    }
-    /**
-     * @type {HlsErrorDetails}
-     */
-
-  }, {
-    key: "ErrorDetails",
-    get: function get() {
-      return errors["ErrorDetails"];
-    }
-    /**
-     * @type {HlsConfig}
-     */
-
-  }, {
-    key: "DefaultConfig",
-    get: function get() {
-      if (!Hls.defaultConfig) {
-        return hlsDefaultConfig;
-      }
-
-      return Hls.defaultConfig;
-    }
-    /**
-     * @type {HlsConfig}
-     */
-    ,
-    set: function set(defaultConfig) {
-      Hls.defaultConfig = defaultConfig;
-    }
-    /**
-     * Creates an instance of an HLS client that can attach to exactly one `HTMLMediaElement`.
-     *
-     * @constructs Hls
-     * @param {HlsConfig} config
-     */
-
-  }]);
-
-  function Hls(userConfig) {
-    var _this;
-
-    if (userConfig === void 0) {
-      userConfig = {};
-    }
-
-    _this = _Observer.call(this) || this;
-    _this.config = void 0;
-    _this._autoLevelCapping = void 0;
-    _this.abrController = void 0;
-    _this.capLevelController = void 0;
-    _this.levelController = void 0;
-    _this.streamController = void 0;
-    _this.networkControllers = void 0;
-    _this.audioTrackController = void 0;
-    _this.subtitleTrackController = void 0;
-    _this.emeController = void 0;
-    _this.coreComponents = void 0;
-    _this.media = null;
-    _this.url = null;
-    var defaultConfig = Hls.DefaultConfig;
-
-    if ((userConfig.liveSyncDurationCount || userConfig.liveMaxLatencyDurationCount) && (userConfig.liveSyncDuration || userConfig.liveMaxLatencyDuration)) {
-      throw new Error('Illegal hls.js config: don\'t mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration');
-    } // Shallow clone
-
-
-    _this.config = hls_objectSpread(hls_objectSpread({}, defaultConfig), userConfig);
-
-    var _assertThisInitialize = hls_assertThisInitialized(_this),
-        config = _assertThisInitialize.config;
-
-    if (config.liveMaxLatencyDurationCount !== void 0 && config.liveMaxLatencyDurationCount <= config.liveSyncDurationCount) {
-      throw new Error('Illegal hls.js config: "liveMaxLatencyDurationCount" must be gt "liveSyncDurationCount"');
-    }
-
-    if (config.liveMaxLatencyDuration !== void 0 && (config.liveSyncDuration === void 0 || config.liveMaxLatencyDuration <= config.liveSyncDuration)) {
-      throw new Error('Illegal hls.js config: "liveMaxLatencyDuration" must be gt "liveSyncDuration"');
-    }
-
-    Object(logger["enableLogs"])(config.debug);
-    _this._autoLevelCapping = -1; // core controllers and network loaders
-
-    /**
-     * @member {AbrController} abrController
-     */
-
-    var abrController = _this.abrController = new config.abrController(hls_assertThisInitialized(_this)); // eslint-disable-line new-cap
-
-    var bufferController = new config.bufferController(hls_assertThisInitialized(_this)); // eslint-disable-line new-cap
-
-    var capLevelController = _this.capLevelController = new config.capLevelController(hls_assertThisInitialized(_this)); // eslint-disable-line new-cap
-
-    var fpsController = new config.fpsController(hls_assertThisInitialized(_this)); // eslint-disable-line new-cap
-
-    var playListLoader = new playlist_loader(hls_assertThisInitialized(_this));
-    var fragmentLoader = new fragment_loader(hls_assertThisInitialized(_this));
-    var keyLoader = new key_loader(hls_assertThisInitialized(_this));
-    var id3TrackController = new id3_track_controller(hls_assertThisInitialized(_this)); // network controllers
-
-    /**
-     * @member {LevelController} levelController
-     */
-
-    var levelController = _this.levelController = new level_controller_LevelController(hls_assertThisInitialized(_this)); // FIXME: FragmentTracker must be defined before StreamController because the order of event handling is important
-
-    var fragmentTracker = new fragment_tracker_FragmentTracker(hls_assertThisInitialized(_this));
-    /**
-     * @member {StreamController} streamController
-     */
-
-    var streamController = _this.streamController = new stream_controller(hls_assertThisInitialized(_this), fragmentTracker);
-    var networkControllers = [levelController, streamController]; // optional audio stream controller
-
-    /**
-     * @var {ICoreComponent | Controller}
-     */
-
-    var Controller = config.audioStreamController;
-
-    if (Controller) {
-      networkControllers.push(new Controller(hls_assertThisInitialized(_this), fragmentTracker));
-    }
-    /**
-     * @member {INetworkController[]} networkControllers
-     */
-
-
-    _this.networkControllers = networkControllers;
-    /**
-     * @var {ICoreComponent[]}
-     */
-
-    var coreComponents = [playListLoader, fragmentLoader, keyLoader, abrController, bufferController, capLevelController, fpsController, id3TrackController, fragmentTracker]; // optional audio track and subtitle controller
-
-    Controller = config.audioTrackController;
-
-    if (Controller) {
-      var audioTrackController = new Controller(hls_assertThisInitialized(_this));
-      /**
-       * @member {AudioTrackController} audioTrackController
-       */
-
-      _this.audioTrackController = audioTrackController;
-      coreComponents.push(audioTrackController);
-    }
-
-    Controller = config.subtitleTrackController;
-
-    if (Controller) {
-      var subtitleTrackController = new Controller(hls_assertThisInitialized(_this));
-      /**
-       * @member {SubtitleTrackController} subtitleTrackController
-       */
-
-      _this.subtitleTrackController = subtitleTrackController;
-      networkControllers.push(subtitleTrackController);
-    }
-
-    Controller = config.emeController;
-
-    if (Controller) {
-      var emeController = new Controller(hls_assertThisInitialized(_this));
-      /**
-       * @member {EMEController} emeController
-       */
-
-      _this.emeController = emeController;
-      coreComponents.push(emeController);
-    } // optional subtitle controllers
-
-
-    Controller = config.subtitleStreamController;
-
-    if (Controller) {
-      networkControllers.push(new Controller(hls_assertThisInitialized(_this), fragmentTracker));
-    }
-
-    Controller = config.timelineController;
-
-    if (Controller) {
-      coreComponents.push(new Controller(hls_assertThisInitialized(_this)));
-    }
-    /**
-     * @member {ICoreComponent[]}
-     */
-
-
-    _this.coreComponents = coreComponents;
-    return _this;
-  }
-  /**
-   * Dispose of the instance
-   */
-
-
-  var _proto = Hls.prototype;
-
-  _proto.destroy = function destroy() {
-    logger["logger"].log('destroy');
-    this.trigger(events["default"].DESTROYING);
-    this.detachMedia();
-    this.coreComponents.concat(this.networkControllers).forEach(function (component) {
-      component.destroy();
-    });
-    this.url = null;
-    this.removeAllListeners();
-    this._autoLevelCapping = -1;
-  }
-  /**
-   * Attach a media element
-   * @param {HTMLMediaElement} media
-   */
-  ;
-
-  _proto.attachMedia = function attachMedia(media) {
-    logger["logger"].log('attachMedia');
-    this.media = media;
-    this.trigger(events["default"].MEDIA_ATTACHING, {
-      media: media
-    });
-  }
-  /**
-   * Detach from the media
-   */
-  ;
-
-  _proto.detachMedia = function detachMedia() {
-    logger["logger"].log('detachMedia');
-    this.trigger(events["default"].MEDIA_DETACHING);
-    this.media = null;
-  }
-  /**
-   * Set the source URL. Can be relative or absolute.
-   * @param {string} url
-   */
-  ;
-
-  _proto.loadSource = function loadSource(url) {
-    this.stopLoad();
-    var media = this.media;
-
-    if (media && this.url) {
-      this.detachMedia();
-      this.attachMedia(media);
-    }
-
-    url = url_toolkit["buildAbsoluteURL"](window.location.href, url, {
-      alwaysNormalize: true
-    });
-    logger["logger"].log("loadSource:" + url);
-    this.url = url; // when attaching to a source URL, trigger a playlist load
-
-    this.trigger(events["default"].MANIFEST_LOADING, {
-      url: url
-    });
-  }
-  /**
-   * Start loading data from the stream source.
-   * Depending on default config, client starts loading automatically when a source is set.
-   *
-   * @param {number} startPosition Set the start position to stream from
-   * @default -1 None (from earliest point)
-   */
-  ;
-
-  _proto.startLoad = function startLoad(startPosition) {
-    if (startPosition === void 0) {
-      startPosition = -1;
-    }
-
-    logger["logger"].log("startLoad(" + startPosition + ")");
-    this.networkControllers.forEach(function (controller) {
-      controller.startLoad(startPosition);
-    });
-  }
-  /**
-   * Stop loading of any stream data.
-   */
-  ;
-
-  _proto.stopLoad = function stopLoad() {
-    logger["logger"].log('stopLoad');
-    this.networkControllers.forEach(function (controller) {
-      controller.stopLoad();
-    });
-  }
-  /**
-   * Swap through possible audio codecs in the stream (for example to switch from stereo to 5.1)
-   */
-  ;
-
-  _proto.swapAudioCodec = function swapAudioCodec() {
-    logger["logger"].log('swapAudioCodec');
-    this.streamController.swapAudioCodec();
-  }
-  /**
-   * When the media-element fails, this allows to detach and then re-attach it
-   * as one call (convenience method).
-   *
-   * Automatic recovery of media-errors by this process is configurable.
-   */
-  ;
-
-  _proto.recoverMediaError = function recoverMediaError() {
-    logger["logger"].log('recoverMediaError');
-    var media = this.media;
-    this.detachMedia();
-
-    if (media) {
-      this.attachMedia(media);
-    }
-  }
-  /**
-   * Remove a loaded level from the list of levels, or a level url in from a list of redundant level urls.
-   * This can be used to remove a rendition or playlist url that errors frequently from the list of levels that a user
-   * or hls.js can choose from.
-   *
-   * @param levelIndex {number} The quality level index to of the level to remove
-   * @param urlId {number} The quality level url index in the case that fallback levels are available. Defaults to 0.
-   */
-  ;
-
-  _proto.removeLevel = function removeLevel(levelIndex, urlId) {
-    if (urlId === void 0) {
-      urlId = 0;
-    }
-
-    this.levelController.removeLevel(levelIndex, urlId);
-  }
-  /**
-   * @type {QualityLevel[]}
-   */
-  // todo(typescript-levelController)
-  ;
-
-  hls_createClass(Hls, [{
-    key: "levels",
-    get: function get() {
-      return this.levelController.levels;
-    }
-    /**
-     * Index of quality level currently played
-     * @type {number}
-     */
-
-  }, {
-    key: "currentLevel",
-    get: function get() {
-      return this.streamController.currentLevel;
-    }
-    /**
-     * Set quality level index immediately .
-     * This will flush the current buffer to replace the quality asap.
-     * That means playback will interrupt at least shortly to re-buffer and re-sync eventually.
-     * @param newLevel {number} -1 for automatic level selection
-     */
-    ,
-    set: function set(newLevel) {
-      logger["logger"].log("set currentLevel:" + newLevel);
-      this.loadLevel = newLevel;
-      this.streamController.immediateLevelSwitch();
-    }
-    /**
-     * Index of next quality level loaded as scheduled by stream controller.
-     * @type {number}
-     */
-
-  }, {
-    key: "nextLevel",
-    get: function get() {
-      return this.streamController.nextLevel;
-    }
-    /**
-     * Set quality level index for next loaded data.
-     * This will switch the video quality asap, without interrupting playback.
-     * May abort current loading of data, and flush parts of buffer (outside currently played fragment region).
-     * @type {number} -1 for automatic level selection
-     */
-    ,
-    set: function set(newLevel) {
-      logger["logger"].log("set nextLevel:" + newLevel);
-      this.levelController.manualLevel = newLevel;
-      this.streamController.nextLevelSwitch();
-    }
-    /**
-     * Return the quality level of the currently or last (of none is loaded currently) segment
-     * @type {number}
-     */
-
-  }, {
-    key: "loadLevel",
-    get: function get() {
-      return this.levelController.level;
-    }
-    /**
-     * Set quality level index for next loaded data in a conservative way.
-     * This will switch the quality without flushing, but interrupt current loading.
-     * Thus the moment when the quality switch will appear in effect will only be after the already existing buffer.
-     * @type {number} newLevel -1 for automatic level selection
-     */
-    ,
-    set: function set(newLevel) {
-      logger["logger"].log("set loadLevel:" + newLevel);
-      this.levelController.manualLevel = newLevel;
-    }
-    /**
-     * get next quality level loaded
-     * @type {number}
-     */
-
-  }, {
-    key: "nextLoadLevel",
-    get: function get() {
-      return this.levelController.nextLoadLevel;
-    }
-    /**
-     * Set quality level of next loaded segment in a fully "non-destructive" way.
-     * Same as `loadLevel` but will wait for next switch (until current loading is done).
-     * @type {number} level
-     */
-    ,
-    set: function set(level) {
-      this.levelController.nextLoadLevel = level;
-    }
-    /**
-     * Return "first level": like a default level, if not set,
-     * falls back to index of first level referenced in manifest
-     * @type {number}
-     */
-
-  }, {
-    key: "firstLevel",
-    get: function get() {
-      return Math.max(this.levelController.firstLevel, this.minAutoLevel);
-    }
-    /**
-     * Sets "first-level", see getter.
-     * @type {number}
-     */
-    ,
-    set: function set(newLevel) {
-      logger["logger"].log("set firstLevel:" + newLevel);
-      this.levelController.firstLevel = newLevel;
-    }
-    /**
-     * Return start level (level of first fragment that will be played back)
-     * if not overrided by user, first level appearing in manifest will be used as start level
-     * if -1 : automatic start level selection, playback will start from level matching download bandwidth
-     * (determined from download of first segment)
-     * @type {number}
-     */
-
-  }, {
-    key: "startLevel",
-    get: function get() {
-      return this.levelController.startLevel;
-    }
-    /**
-     * set  start level (level of first fragment that will be played back)
-     * if not overrided by user, first level appearing in manifest will be used as start level
-     * if -1 : automatic start level selection, playback will start from level matching download bandwidth
-     * (determined from download of first segment)
-     * @type {number} newLevel
-     */
-    ,
-    set: function set(newLevel) {
-      logger["logger"].log("set startLevel:" + newLevel); // if not in automatic start level detection, ensure startLevel is greater than minAutoLevel
-
-      if (newLevel !== -1) {
-        newLevel = Math.max(newLevel, this.minAutoLevel);
-      }
-
-      this.levelController.startLevel = newLevel;
-    }
-    /**
-     * Get the current setting for capLevelToPlayerSize
-     *
-     * @type {boolean}
-     */
-
-  }, {
-    key: "capLevelToPlayerSize",
-    get: function get() {
-      return this.config.capLevelToPlayerSize;
-    }
-    /**
-     * set  dynamically set capLevelToPlayerSize against (`CapLevelController`)
-     *
-     * @type {boolean}
-     */
-    ,
-    set: function set(shouldStartCapping) {
-      var newCapLevelToPlayerSize = !!shouldStartCapping;
-
-      if (newCapLevelToPlayerSize !== this.config.capLevelToPlayerSize) {
-        if (newCapLevelToPlayerSize) {
-          this.capLevelController.startCapping(); // If capping occurs, nextLevelSwitch will happen based on size.
-        } else {
-          this.capLevelController.stopCapping();
-          this.autoLevelCapping = -1;
-          this.streamController.nextLevelSwitch(); // Now we're uncapped, get the next level asap.
-        }
-
-        this.config.capLevelToPlayerSize = newCapLevelToPlayerSize;
-      }
-    }
-    /**
-     * Capping/max level value that should be used by automatic level selection algorithm (`ABRController`)
-     * @type {number}
-     */
-
-  }, {
-    key: "autoLevelCapping",
-    get: function get() {
-      return this._autoLevelCapping;
-    }
-    /**
-     * get bandwidth estimate
-     * @type {number}
-     */
-    ,
-
-    /**
-     * Capping/max level value that should be used by automatic level selection algorithm (`ABRController`)
-     * @type {number}
-     */
-    set: function set(newLevel) {
-      logger["logger"].log("set autoLevelCapping:" + newLevel);
-      this._autoLevelCapping = newLevel;
-    }
-    /**
-     * True when automatic level selection enabled
-     * @type {boolean}
-     */
-
-  }, {
-    key: "bandwidthEstimate",
-    get: function get() {
-      var bwEstimator = this.abrController._bwEstimator;
-      return bwEstimator ? bwEstimator.getEstimate() : NaN;
-    }
-  }, {
-    key: "autoLevelEnabled",
-    get: function get() {
-      return this.levelController.manualLevel === -1;
-    }
-    /**
-     * Level set manually (if any)
-     * @type {number}
-     */
-
-  }, {
-    key: "manualLevel",
-    get: function get() {
-      return this.levelController.manualLevel;
-    }
-    /**
-     * min level selectable in auto mode according to config.minAutoBitrate
-     * @type {number}
-     */
-
-  }, {
-    key: "minAutoLevel",
-    get: function get() {
-      var levels = this.levels,
-          minAutoBitrate = this.config.minAutoBitrate;
-      var len = levels ? levels.length : 0;
-
-      for (var i = 0; i < len; i++) {
-        var levelNextBitrate = levels[i].realBitrate ? Math.max(levels[i].realBitrate, levels[i].bitrate) : levels[i].bitrate;
-
-        if (levelNextBitrate > minAutoBitrate) {
-          return i;
-        }
-      }
-
-      return 0;
-    }
-    /**
-     * max level selectable in auto mode according to autoLevelCapping
-     * @type {number}
-     */
-
-  }, {
-    key: "maxAutoLevel",
-    get: function get() {
-      var levels = this.levels,
-          autoLevelCapping = this.autoLevelCapping;
-      var maxAutoLevel;
-
-      if (autoLevelCapping === -1 && levels && levels.length) {
-        maxAutoLevel = levels.length - 1;
-      } else {
-        maxAutoLevel = autoLevelCapping;
-      }
-
-      return maxAutoLevel;
-    }
-    /**
-     * next automatically selected quality level
-     * @type {number}
-     */
-
-  }, {
-    key: "nextAutoLevel",
-    get: function get() {
-      // ensure next auto level is between  min and max auto level
-      return Math.min(Math.max(this.abrController.nextAutoLevel, this.minAutoLevel), this.maxAutoLevel);
-    }
-    /**
-     * this setter is used to force next auto level.
-     * this is useful to force a switch down in auto mode:
-     * in case of load error on level N, hls.js can set nextAutoLevel to N-1 for example)
-     * forced value is valid for one fragment. upon succesful frag loading at forced level,
-     * this value will be resetted to -1 by ABR controller.
-     * @type {number}
-     */
-    ,
-    set: function set(nextLevel) {
-      this.abrController.nextAutoLevel = Math.max(this.minAutoLevel, nextLevel);
-    }
-    /**
-     * @type {AudioTrack[]}
-     */
-    // todo(typescript-audioTrackController)
-
-  }, {
-    key: "audioTracks",
-    get: function get() {
-      var audioTrackController = this.audioTrackController;
-      return audioTrackController ? audioTrackController.audioTracks : [];
-    }
-    /**
-     * index of the selected audio track (index in audio track lists)
-     * @type {number}
-     */
-
-  }, {
-    key: "audioTrack",
-    get: function get() {
-      var audioTrackController = this.audioTrackController;
-      return audioTrackController ? audioTrackController.audioTrack : -1;
-    }
-    /**
-     * selects an audio track, based on its index in audio track lists
-     * @type {number}
-     */
-    ,
-    set: function set(audioTrackId) {
-      var audioTrackController = this.audioTrackController;
-
-      if (audioTrackController) {
-        audioTrackController.audioTrack = audioTrackId;
-      }
-    }
-    /**
-     * @type {Seconds}
-     */
-
-  }, {
-    key: "liveSyncPosition",
-    get: function get() {
-      return this.streamController.liveSyncPosition;
-    }
-    /**
-     * get alternate subtitle tracks list from playlist
-     * @type {SubtitleTrack[]}
-     */
-    // todo(typescript-subtitleTrackController)
-
-  }, {
-    key: "subtitleTracks",
-    get: function get() {
-      var subtitleTrackController = this.subtitleTrackController;
-      return subtitleTrackController ? subtitleTrackController.subtitleTracks : [];
-    }
-    /**
-     * index of the selected subtitle track (index in subtitle track lists)
-     * @type {number}
-     */
-
-  }, {
-    key: "subtitleTrack",
-    get: function get() {
-      var subtitleTrackController = this.subtitleTrackController;
-      return subtitleTrackController ? subtitleTrackController.subtitleTrack : -1;
-    }
-    /**
-     * select an subtitle track, based on its index in subtitle track lists
-     * @type {number}
-     */
-    ,
-    set: function set(subtitleTrackId) {
-      var subtitleTrackController = this.subtitleTrackController;
-
-      if (subtitleTrackController) {
-        subtitleTrackController.subtitleTrack = subtitleTrackId;
-      }
-    }
-    /**
-     * @type {boolean}
-     */
-
-  }, {
-    key: "subtitleDisplay",
-    get: function get() {
-      var subtitleTrackController = this.subtitleTrackController;
-      return subtitleTrackController ? subtitleTrackController.subtitleDisplay : false;
-    }
-    /**
-     * Enable/disable subtitle display rendering
-     * @type {boolean}
-     */
-    ,
-    set: function set(value) {
-      var subtitleTrackController = this.subtitleTrackController;
-
-      if (subtitleTrackController) {
-        subtitleTrackController.subtitleDisplay = value;
-      }
-    }
-  }]);
-
-  return Hls;
-}(Observer);
-
-hls_Hls.defaultConfig = void 0;
-
-
-/***/ }),
-
-/***/ "./src/polyfills/number.js":
-/*!*********************************!*\
-  !*** ./src/polyfills/number.js ***!
-  \*********************************/
-/*! exports provided: isFiniteNumber, MAX_SAFE_INTEGER */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isFiniteNumber", function() { return isFiniteNumber; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MAX_SAFE_INTEGER", function() { return MAX_SAFE_INTEGER; });
-var isFiniteNumber = Number.isFinite || function (value) {
-  return typeof value === 'number' && isFinite(value);
-};
-var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;
-
-/***/ }),
-
-/***/ "./src/utils/get-self-scope.js":
-/*!*************************************!*\
-  !*** ./src/utils/get-self-scope.js ***!
-  \*************************************/
-/*! exports provided: getSelfScope */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getSelfScope", function() { return getSelfScope; });
-function getSelfScope() {
-  // see https://stackoverflow.com/a/11237259/589493
-  if (typeof window === 'undefined') {
-    /* eslint-disable-next-line no-undef */
-    return self;
-  } else {
-    return window;
-  }
-}
-
-/***/ }),
-
-/***/ "./src/utils/logger.js":
-/*!*****************************!*\
-  !*** ./src/utils/logger.js ***!
-  \*****************************/
-/*! exports provided: enableLogs, logger */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "enableLogs", function() { return enableLogs; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "logger", function() { return logger; });
-/* harmony import */ var _get_self_scope__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./get-self-scope */ "./src/utils/get-self-scope.js");
-
-
-function noop() {}
-
-var fakeLogger = {
-  trace: noop,
-  debug: noop,
-  log: noop,
-  warn: noop,
-  info: noop,
-  error: noop
-};
-var exportedLogger = fakeLogger; // let lastCallTime;
-// function formatMsgWithTimeInfo(type, msg) {
-//   const now = Date.now();
-//   const diff = lastCallTime ? '+' + (now - lastCallTime) : '0';
-//   lastCallTime = now;
-//   msg = (new Date(now)).toISOString() + ' | [' +  type + '] > ' + msg + ' ( ' + diff + ' ms )';
-//   return msg;
-// }
-
-function formatMsg(type, msg) {
-  msg = '[' + type + '] > ' + msg;
-  return msg;
-}
-
-var global = Object(_get_self_scope__WEBPACK_IMPORTED_MODULE_0__["getSelfScope"])();
-
-function consolePrintFn(type) {
-  var func = global.console[type];
-
-  if (func) {
-    return function () {
-      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
-        args[_key] = arguments[_key];
-      }
-
-      if (args[0]) {
-        args[0] = formatMsg(type, args[0]);
-      }
-
-      func.apply(global.console, args);
-    };
-  }
-
-  return noop;
-}
-
-function exportLoggerFunctions(debugConfig) {
-  for (var _len2 = arguments.length, functions = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
-    functions[_key2 - 1] = arguments[_key2];
-  }
-
-  functions.forEach(function (type) {
-    exportedLogger[type] = debugConfig[type] ? debugConfig[type].bind(debugConfig) : consolePrintFn(type);
-  });
-}
-
-var enableLogs = function enableLogs(debugConfig) {
-  // check that console is available
-  if (global.console && debugConfig === true || typeof debugConfig === 'object') {
-    exportLoggerFunctions(debugConfig, // Remove out from list here to hard-disable a log-level
-    // 'trace',
-    'debug', 'log', 'info', 'warn', 'error'); // Some browsers don't allow to use bind on console object anyway
-    // fallback to default if needed
-
-    try {
-      exportedLogger.log();
-    } catch (e) {
-      exportedLogger = fakeLogger;
-    }
-  } else {
-    exportedLogger = fakeLogger;
-  }
-};
-var logger = exportedLogger;
-
-/***/ }),
-
-/***/ "./src/utils/timescale-conversion.ts":
-/*!*******************************************!*\
-  !*** ./src/utils/timescale-conversion.ts ***!
-  \*******************************************/
-/*! exports provided: toTimescaleFromBase, toTimescaleFromScale, toMsFromMpegTsClock, toMpegTsClockFromTimescale */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "toTimescaleFromBase", function() { return toTimescaleFromBase; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "toTimescaleFromScale", function() { return toTimescaleFromScale; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "toMsFromMpegTsClock", function() { return toMsFromMpegTsClock; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "toMpegTsClockFromTimescale", function() { return toMpegTsClockFromTimescale; });
-var MPEG_TS_CLOCK_FREQ_HZ = 90000;
-function toTimescaleFromBase(value, destScale, srcBase, round) {
-  if (srcBase === void 0) {
-    srcBase = 1;
-  }
-
-  if (round === void 0) {
-    round = false;
-  }
-
-  var result = value * destScale * srcBase; // equivalent to `(value * scale) / (1 / base)`
-
-  return round ? Math.round(result) : result;
-}
-function toTimescaleFromScale(value, destScale, srcScale, round) {
-  if (srcScale === void 0) {
-    srcScale = 1;
-  }
-
-  if (round === void 0) {
-    round = false;
-  }
-
-  return toTimescaleFromBase(value, destScale, 1 / srcScale);
-}
-function toMsFromMpegTsClock(value, round) {
-  if (round === void 0) {
-    round = false;
-  }
-
-  return toTimescaleFromBase(value, 1000, 1 / MPEG_TS_CLOCK_FREQ_HZ, round);
-}
-function toMpegTsClockFromTimescale(value, srcScale) {
-  if (srcScale === void 0) {
-    srcScale = 1;
-  }
-
-  return toTimescaleFromBase(value, MPEG_TS_CLOCK_FREQ_HZ, 1 / srcScale);
-}
-
-/***/ })
-
-/******/ })["default"];
-});
-//# sourceMappingURL=hls.js.map
\ No newline at end of file
diff --git a/map/lib/jquery.js b/map/lib/jquery.js
deleted file mode 100644
index a1c07fd..0000000
--- a/map/lib/jquery.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */
-!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}k.fn=k.prototype={jquery:f,constructor:k,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=k.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return k.each(this,e)},map:function(n){return this.pushStack(k.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},k.extend=k.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(k.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||k.isPlainObject(n)?n:{},i=!1,a[t]=k.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},k.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t){b(e,{nonce:t&&t.nonce})},each:function(e,t){var n,r=0;if(d(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(p,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(d(Object(e))?k.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(d(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g.apply([],a)},guid:1,support:y}),"function"==typeof Symbol&&(k.fn[Symbol.iterator]=t[Symbol.iterator]),k.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var h=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,k="sizzle"+1*new Date,m=n.document,S=0,r=0,p=ue(),x=ue(),N=ue(),A=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",$=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",F=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="<a id='"+k+"'></a><select id='"+k+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!==C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!==C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&j.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(D),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(F," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[S,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[S,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[k]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace(B,"$1"));return s[k]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[S,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[k]||(e[k]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===S&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[k]&&(v=Ce(v)),y&&!y[k]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[k]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(B,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(B," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=N[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[k]?i.push(a):o.push(a);(a=N(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=S+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t===C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument===C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(S=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(S=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=k.split("").sort(D).join("")===k,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);k.find=h,k.expr=h.selectors,k.expr[":"]=k.expr.pseudos,k.uniqueSort=k.unique=h.uniqueSort,k.text=h.getText,k.isXMLDoc=h.isXML,k.contains=h.contains,k.escapeSelector=h.escape;var T=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&k(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},N=k.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var D=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1<i.call(n,e)!==r}):k.filter(n,e,r)}k.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?k.find.matchesSelector(r,e)?[r]:[]:k.find.matches(e,k.grep(t,function(e){return 1===e.nodeType}))},k.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(k(e).filter(function(){for(t=0;t<r;t++)if(k.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)k.find(e,i[t],n);return 1<r?k.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&N.test(e)?k(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(k.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&k(e);if(!N.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&k.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?k.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(k(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(k.uniqueSort(k.merge(this.get(),k(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),k.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return T(e,"parentNode")},parentsUntil:function(e,t,n){return T(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return T(e,"nextSibling")},prevAll:function(e){return T(e,"previousSibling")},nextUntil:function(e,t,n){return T(e,"nextSibling",n)},prevUntil:function(e,t,n){return T(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return"undefined"!=typeof e.contentDocument?e.contentDocument:(A(e,"template")&&(e=e.content||e),k.merge([],e.childNodes))}},function(r,i){k.fn[r]=function(e,t){var n=k.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=k.filter(t,n)),1<this.length&&(O[r]||k.uniqueSort(n),H.test(r)&&n.reverse()),this.pushStack(n)}});var R=/[^\x20\t\r\n\f]+/g;function M(e){return e}function I(e){throw e}function W(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}k.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},k.each(e.match(R)||[],function(e,t){n[t]=!0}),n):k.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){k.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return k.each(arguments,function(e,t){var n;while(-1<(n=k.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<k.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},k.extend({Deferred:function(e){var o=[["notify","progress",k.Callbacks("memory"),k.Callbacks("memory"),2],["resolve","done",k.Callbacks("once memory"),k.Callbacks("once memory"),0,"resolved"],["reject","fail",k.Callbacks("once memory"),k.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return k.Deferred(function(r){k.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,M,s),l(u,o,I,s)):(u++,t.call(e,l(u,o,M,s),l(u,o,I,s),l(u,o,M,o.notifyWith))):(a!==M&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){k.Deferred.exceptionHook&&k.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==I&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(k.Deferred.getStackHook&&(t.stackTrace=k.Deferred.getStackHook()),C.setTimeout(t))}}return k.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:M,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:M)),o[2][3].add(l(0,e,m(n)?n:I))}).promise()},promise:function(e){return null!=e?k.extend(e,a):a}},s={};return k.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=k.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(W(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)W(i[t],a(t),o.reject);return o.promise()}});var $=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;k.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&$.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},k.readyException=function(e){C.setTimeout(function(){throw e})};var F=k.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),k.ready()}k.fn.ready=function(e){return F.then(e)["catch"](function(e){k.readyException(e)}),this},k.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--k.readyWait:k.isReady)||(k.isReady=!0)!==e&&0<--k.readyWait||F.resolveWith(E,[k])}}),k.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(k.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var _=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)_(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(k(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},z=/^-ms-/,U=/-([a-z])/g;function X(e,t){return t.toUpperCase()}function V(e){return e.replace(z,"ms-").replace(U,X)}var G=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Y(){this.expando=k.expando+Y.uid++}Y.uid=1,Y.prototype={cache:function(e){var t=e[this.expando];return t||(t={},G(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[V(t)]=n;else for(r in t)i[V(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][V(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(V):(t=V(t))in r?[t]:t.match(R)||[]).length;while(n--)delete r[t[n]]}(void 0===t||k.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!k.isEmptyObject(t)}};var Q=new Y,J=new Y,K=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Z=/[A-Z]/g;function ee(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Z,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:K.test(i)?JSON.parse(i):i)}catch(e){}J.set(e,t,n)}else n=void 0;return n}k.extend({hasData:function(e){return J.hasData(e)||Q.hasData(e)},data:function(e,t,n){return J.access(e,t,n)},removeData:function(e,t){J.remove(e,t)},_data:function(e,t,n){return Q.access(e,t,n)},_removeData:function(e,t){Q.remove(e,t)}}),k.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=J.get(o),1===o.nodeType&&!Q.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=V(r.slice(5)),ee(o,r,i[r]));Q.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){J.set(this,n)}):_(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=J.get(o,n))?t:void 0!==(t=ee(o,n))?t:void 0;this.each(function(){J.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){J.remove(this,e)})}}),k.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Q.get(e,t),n&&(!r||Array.isArray(n)?r=Q.access(e,t,k.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=k.queue(e,t),r=n.length,i=n.shift(),o=k._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){k.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Q.get(e,n)||Q.access(e,n,{empty:k.Callbacks("once memory").add(function(){Q.remove(e,[t+"queue",n])})})}}),k.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?k.queue(this[0],t):void 0===n?this:this.each(function(){var e=k.queue(this,t,n);k._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&k.dequeue(this,t)})},dequeue:function(e){return this.each(function(){k.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=k.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Q.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var te=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ne=new RegExp("^(?:([+-])=|)("+te+")([a-z%]*)$","i"),re=["Top","Right","Bottom","Left"],ie=E.documentElement,oe=function(e){return k.contains(e.ownerDocument,e)},ae={composed:!0};ie.getRootNode&&(oe=function(e){return k.contains(e.ownerDocument,e)||e.getRootNode(ae)===e.ownerDocument});var se=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&oe(e)&&"none"===k.css(e,"display")},ue=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];for(o in i=n.apply(e,r||[]),t)e.style[o]=a[o];return i};function le(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return k.css(e,t,"")},u=s(),l=n&&n[3]||(k.cssNumber[t]?"":"px"),c=e.nodeType&&(k.cssNumber[t]||"px"!==l&&+u)&&ne.exec(k.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)k.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,k.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ce={};function fe(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Q.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&se(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ce[s])||(o=a.body.appendChild(a.createElement(s)),u=k.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ce[s]=u)))):"none"!==n&&(l[c]="none",Q.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}k.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){se(this)?k(this).show():k(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Q.set(e[n],"globalEval",!t||Q.get(t[n],"globalEval"))}ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;var me,xe,be=/<|&#?\w+;/;function we(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))k.merge(p,o.nodeType?[o]:o);else if(be.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+k.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;k.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<k.inArray(o,r))i&&i.push(o);else if(l=oe(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}me=E.createDocumentFragment().appendChild(E.createElement("div")),(xe=E.createElement("input")).setAttribute("type","radio"),xe.setAttribute("checked","checked"),xe.setAttribute("name","t"),me.appendChild(xe),y.checkClone=me.cloneNode(!0).cloneNode(!0).lastChild.checked,me.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t<arguments.length;t++)u[t]=arguments[t];if(s.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,s)){a=k.event.handlers.call(this,s,l),t=0;while((i=a[t++])&&!s.isPropagationStopped()){s.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!s.isImmediatePropagationStopped())s.rnamespace&&!1!==o.namespace&&!s.rnamespace.test(o.namespace)||(s.handleObj=o,s.data=o.data,void 0!==(r=((k.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,u))&&!1===(s.result=r)&&(s.preventDefault(),s.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<k(i,this).index(l):k.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(k.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[k.expando]?e:new k.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click",ke),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Q.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},k.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},k.Event=function(e,t){if(!(this instanceof k.Event))return new k.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?ke:Se,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&k.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[k.expando]=!0},k.Event.prototype={constructor:k.Event,isDefaultPrevented:Se,isPropagationStopped:Se,isImmediatePropagationStopped:Se,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=ke,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=ke,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=ke,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},k.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&Te.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Ce.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},k.event.addProp),k.each({focus:"focusin",blur:"focusout"},function(e,t){k.event.special[e]={setup:function(){return De(this,e,Ne),!1},trigger:function(){return De(this,e),!0},delegateType:t}}),k.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){k.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||k.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),k.fn.extend({on:function(e,t,n,r){return Ae(this,e,t,n,r)},one:function(e,t,n,r){return Ae(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,k(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Se),this.each(function(){k.event.remove(this,e,n,t)})}});var je=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/<script|<style|<link/i,Le=/checked\s*(?:[^=]|=\s*.checked.)/i,He=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n<r;n++)k.event.add(t,i,l[i][n]);J.hasData(e)&&(s=J.access(e),u=k.extend({},s),J.set(t,u))}}function Ie(n,r,i,o){r=g.apply([],r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Le.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),Ie(t,r,i,o)});if(f&&(t=(e=we(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=k.map(ve(e,"script"),Pe)).length;c<f;c++)u=e,c!==p&&(u=k.clone(u,!0,!0),s&&k.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,k.map(a,Re),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Q.access(u,"globalEval")&&k.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?k._evalUrl&&!u.noModule&&k._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")}):b(u.textContent.replace(He,""),u,l))}return n}function We(e,t,n){for(var r,i=t?k.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||k.cleanData(ve(r)),r.parentNode&&(n&&oe(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}k.extend({htmlPrefilter:function(e){return e.replace(je,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Me(o[r],a[r]);else Me(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=k.event.special,o=0;void 0!==(n=e[o]);o++)if(G(n)){if(t=n[Q.expando]){if(t.events)for(r in t.events)i[r]?k.event.remove(n,r):k.removeEvent(n,r,t.handle);n[Q.expando]=void 0}n[J.expando]&&(n[J.expando]=void 0)}}}),k.fn.extend({detach:function(e){return We(this,e,!0)},remove:function(e){return We(this,e)},text:function(e){return _(this,function(e){return void 0===e?k.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Ie(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Oe(this,e).appendChild(e)})},prepend:function(){return Ie(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Oe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(k.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return k.clone(this,e,t)})},html:function(e){return _(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!qe.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=k.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(k.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Ie(this,arguments,function(e){var t=this.parentNode;k.inArray(this,n)<0&&(k.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),k.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){k.fn[e]=function(e){for(var t,n=[],r=k(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),k(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var $e=new RegExp("^("+te+")(?!px)[a-z%]+$","i"),Fe=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Be=new RegExp(re.join("|"),"i");function _e(e,t,n){var r,i,o,a,s=e.style;return(n=n||Fe(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||oe(e)||(a=k.style(e,t)),!y.pixelBoxStyles()&&$e.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function ze(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(u){s.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",u.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",ie.appendChild(s).appendChild(u);var e=C.getComputedStyle(u);n="1%"!==e.top,a=12===t(e.marginLeft),u.style.right="60%",o=36===t(e.right),r=36===t(e.width),u.style.position="absolute",i=12===t(u.offsetWidth/3),ie.removeChild(s),u=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s=E.createElement("div"),u=E.createElement("div");u.style&&(u.style.backgroundClip="content-box",u.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===u.style.backgroundClip,k.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),a},scrollboxSize:function(){return e(),i}}))}();var Ue=["Webkit","Moz","ms"],Xe=E.createElement("div").style,Ve={};function Ge(e){var t=k.cssProps[e]||Ve[e];return t||(e in Xe?e:Ve[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Ue.length;while(n--)if((e=Ue[n]+t)in Xe)return e}(e)||e)}var Ye=/^(none|table(?!-c[ea]).+)/,Qe=/^--/,Je={position:"absolute",visibility:"hidden",display:"block"},Ke={letterSpacing:"0",fontWeight:"400"};function Ze(e,t,n){var r=ne.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function et(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=k.css(e,n+re[a],!0,i)),r?("content"===n&&(u-=k.css(e,"padding"+re[a],!0,i)),"margin"!==n&&(u-=k.css(e,"border"+re[a]+"Width",!0,i))):(u+=k.css(e,"padding"+re[a],!0,i),"padding"!==n?u+=k.css(e,"border"+re[a]+"Width",!0,i):s+=k.css(e,"border"+re[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function tt(e,t,n){var r=Fe(e),i=(!y.boxSizingReliable()||n)&&"border-box"===k.css(e,"boxSizing",!1,r),o=i,a=_e(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if($e.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||"auto"===a||!parseFloat(a)&&"inline"===k.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===k.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+et(e,t,n||(i?"border":"content"),o,r,a)+"px"}function nt(e,t,n,r,i){return new nt.prototype.init(e,t,n,r,i)}k.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=_e(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=V(t),u=Qe.test(t),l=e.style;if(u||(t=Ge(s)),a=k.cssHooks[t]||k.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=ne.exec(n))&&i[1]&&(n=le(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(k.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=V(t);return Qe.test(t)||(t=Ge(s)),(a=k.cssHooks[t]||k.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=_e(e,t,r)),"normal"===i&&t in Ke&&(i=Ke[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),k.each(["height","width"],function(e,u){k.cssHooks[u]={get:function(e,t,n){if(t)return!Ye.test(k.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?tt(e,u,n):ue(e,Je,function(){return tt(e,u,n)})},set:function(e,t,n){var r,i=Fe(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===k.css(e,"boxSizing",!1,i),s=n?et(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-et(e,u,"border",!1,i)-.5)),s&&(r=ne.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=k.css(e,u)),Ze(0,t,s)}}}),k.cssHooks.marginLeft=ze(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(_e(e,"marginLeft"))||e.getBoundingClientRect().left-ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),k.each({margin:"",padding:"",border:"Width"},function(i,o){k.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+re[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(k.cssHooks[i+o].set=Ze)}),k.fn.extend({css:function(e,t){return _(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Fe(e),i=t.length;a<i;a++)o[t[a]]=k.css(e,t[a],!1,r);return o}return void 0!==n?k.style(e,t,n):k.css(e,t)},e,t,1<arguments.length)}}),((k.Tween=nt).prototype={constructor:nt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||k.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(k.cssNumber[n]?"":"px")},cur:function(){var e=nt.propHooks[this.prop];return e&&e.get?e.get(this):nt.propHooks._default.get(this)},run:function(e){var t,n=nt.propHooks[this.prop];return this.options.duration?this.pos=t=k.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):nt.propHooks._default.set(this),this}}).init.prototype=nt.prototype,(nt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=k.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){k.fx.step[e.prop]?k.fx.step[e.prop](e):1!==e.elem.nodeType||!k.cssHooks[e.prop]&&null==e.elem.style[Ge(e.prop)]?e.elem[e.prop]=e.now:k.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=nt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},k.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},k.fx=nt.prototype.init,k.fx.step={};var rt,it,ot,at,st=/^(?:toggle|show|hide)$/,ut=/queueHooks$/;function lt(){it&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(lt):C.setTimeout(lt,k.fx.interval),k.fx.tick())}function ct(){return C.setTimeout(function(){rt=void 0}),rt=Date.now()}function ft(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=re[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function pt(e,t,n){for(var r,i=(dt.tweeners[t]||[]).concat(dt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function dt(o,e,t){var n,a,r=0,i=dt.prefilters.length,s=k.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=rt||ct(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:k.extend({},e),opts:k.extend(!0,{specialEasing:{},easing:k.easing._default},t),originalProperties:e,originalOptions:t,startTime:rt||ct(),duration:t.duration,tweens:[],createTween:function(e,t){var n=k.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=V(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=k.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=dt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(k._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return k.map(c,pt,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),k.fx.timer(k.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}k.Animation=k.extend(dt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return le(n.elem,e,ne.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(R);for(var n,r=0,i=e.length;r<i;r++)n=e[r],dt.tweeners[n]=dt.tweeners[n]||[],dt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&se(e),v=Q.get(e,"fxshow");for(r in n.queue||(null==(a=k._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,k.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],st.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||k.style(e,r)}if((u=!k.isEmptyObject(t))||!k.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Q.get(e,"display")),"none"===(c=k.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=k.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===k.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Q.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&fe([e],!0),p.done(function(){for(r in g||fe([e]),Q.remove(e,"fxshow"),d)k.style(e,r,d[r])})),u=pt(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?dt.prefilters.unshift(e):dt.prefilters.push(e)}}),k.speed=function(e,t,n){var r=e&&"object"==typeof e?k.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return k.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in k.fx.speeds?r.duration=k.fx.speeds[r.duration]:r.duration=k.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&k.dequeue(this,r.queue)},r},k.fn.extend({fadeTo:function(e,t,n,r){return this.filter(se).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=k.isEmptyObject(t),o=k.speed(e,n,r),a=function(){var e=dt(this,k.extend({},t),o);(i||Q.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&!1!==i&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=k.timers,r=Q.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&ut.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||k.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Q.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=k.timers,o=n?n.length:0;for(t.finish=!0,k.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),k.each(["toggle","show","hide"],function(e,r){var i=k.fn[r];k.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(ft(r,!0),e,t,n)}}),k.each({slideDown:ft("show"),slideUp:ft("hide"),slideToggle:ft("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){k.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),k.timers=[],k.fx.tick=function(){var e,t=0,n=k.timers;for(rt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||k.fx.stop(),rt=void 0},k.fx.timer=function(e){k.timers.push(e),k.fx.start()},k.fx.interval=13,k.fx.start=function(){it||(it=!0,lt())},k.fx.stop=function(){it=null},k.fx.speeds={slow:600,fast:200,_default:400},k.fn.delay=function(r,e){return r=k.fx&&k.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},ot=E.createElement("input"),at=E.createElement("select").appendChild(E.createElement("option")),ot.type="checkbox",y.checkOn=""!==ot.value,y.optSelected=at.selected,(ot=E.createElement("input")).value="t",ot.type="radio",y.radioValue="t"===ot.value;var ht,gt=k.expr.attrHandle;k.fn.extend({attr:function(e,t){return _(this,k.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){k.removeAttr(this,e)})}}),k.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?k.prop(e,t,n):(1===o&&k.isXMLDoc(e)||(i=k.attrHooks[t.toLowerCase()]||(k.expr.match.bool.test(t)?ht:void 0)),void 0!==n?null===n?void k.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=k.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(R);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ht={set:function(e,t,n){return!1===t?k.removeAttr(e,n):e.setAttribute(n,n),n}},k.each(k.expr.match.bool.source.match(/\w+/g),function(e,t){var a=gt[t]||k.find.attr;gt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=gt[o],gt[o]=r,r=null!=a(e,t,n)?o:null,gt[o]=i),r}});var vt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;function mt(e){return(e.match(R)||[]).join(" ")}function xt(e){return e.getAttribute&&e.getAttribute("class")||""}function bt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(R)||[]}k.fn.extend({prop:function(e,t){return _(this,k.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[k.propFix[e]||e]})}}),k.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&k.isXMLDoc(e)||(t=k.propFix[t]||t,i=k.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=k.find.attr(e,"tabindex");return t?parseInt(t,10):vt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(k.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),k.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){k.propFix[this.toLowerCase()]=this}),k.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).addClass(t.call(this,e,xt(this)))});if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).removeClass(t.call(this,e,xt(this)))});if(!arguments.length)return this.attr("class","");if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){k(this).toggleClass(i.call(this,e,xt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=k(this),r=bt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=xt(this))&&Q.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Q.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+mt(xt(n))+" ").indexOf(t))return!0;return!1}});var wt=/\r/g;k.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,k(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=k.map(t,function(e){return null==e?"":e+""})),(r=k.valHooks[this.type]||k.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=k.valHooks[t.type]||k.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(wt,""):null==e?"":e:void 0}}),k.extend({valHooks:{option:{get:function(e){var t=k.find.attr(e,"value");return null!=t?t:mt(k.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=k(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=k.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<k.inArray(k.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),k.each(["radio","checkbox"],function(){k.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<k.inArray(k(e).val(),t)}},y.checkOn||(k.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var Tt=/^(?:focusinfocus|focusoutblur)$/,Ct=function(e){e.stopPropagation()};k.extend(k.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!Tt.test(d+k.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[k.expando]?e:new k.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:k.makeArray(t,[e]),c=k.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,Tt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Q.get(o,"events")||{})[e.type]&&Q.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&G(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!G(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),k.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,Ct),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,Ct),k.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=k.extend(new k.Event,n,{type:e,isSimulated:!0});k.event.trigger(r,null,t)}}),k.fn.extend({trigger:function(e,t){return this.each(function(){k.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return k.event.trigger(e,t,n,!0)}}),y.focusin||k.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){k.event.simulate(r,e.target,k.event.fix(e))};k.event.special[r]={setup:function(){var e=this.ownerDocument||this,t=Q.access(e,r);t||e.addEventListener(n,i,!0),Q.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this,t=Q.access(e,r)-1;t?Q.access(e,r,t):(e.removeEventListener(n,i,!0),Q.remove(e,r))}}});var Et=C.location,kt=Date.now(),St=/\?/;k.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||k.error("Invalid XML: "+e),t};var Nt=/\[\]$/,At=/\r?\n/g,Dt=/^(?:submit|button|image|reset|file)$/i,jt=/^(?:input|select|textarea|keygen)/i;function qt(n,e,r,i){var t;if(Array.isArray(e))k.each(e,function(e,t){r||Nt.test(n)?i(n,t):qt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)qt(n+"["+t+"]",e[t],r,i)}k.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!k.isPlainObject(e))k.each(e,function(){i(this.name,this.value)});else for(n in e)qt(n,e[n],t,i);return r.join("&")},k.fn.extend({serialize:function(){return k.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=k.prop(this,"elements");return e?k.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!k(this).is(":disabled")&&jt.test(this.nodeName)&&!Dt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=k(this).val();return null==n?null:Array.isArray(n)?k.map(n,function(e){return{name:t.name,value:e.replace(At,"\r\n")}}):{name:t.name,value:n.replace(At,"\r\n")}}).get()}});var Lt=/%20/g,Ht=/#.*$/,Ot=/([?&])_=[^&]*/,Pt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Rt=/^(?:GET|HEAD)$/,Mt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Ft=E.createElement("a");function Bt(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(R)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function _t(t,i,o,a){var s={},u=t===Wt;function l(e){var r;return s[e]=!0,k.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function zt(e,t){var n,r,i=k.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&k.extend(!0,e,r),e}Ft.href=Et.href,k.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Et.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":k.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,k.ajaxSettings),t):zt(k.ajaxSettings,e)},ajaxPrefilter:Bt(It),ajaxTransport:Bt(Wt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=k.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?k(y):k.event,x=k.Deferred(),b=k.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Pt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Et.href)+"").replace(Mt,Et.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(R)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Ft.protocol+"//"+Ft.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=k.param(v.data,v.traditional)),_t(It,v,t,T),h)return T;for(i in(g=k.event&&v.global)&&0==k.active++&&k.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Rt.test(v.type),f=v.url.replace(Ht,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Lt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(St.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Ot,"$1"),o=(St.test(f)?"&":"?")+"_="+kt+++o),v.url=f+o),v.ifModified&&(k.lastModified[f]&&T.setRequestHeader("If-Modified-Since",k.lastModified[f]),k.etag[f]&&T.setRequestHeader("If-None-Match",k.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+$t+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=_t(Wt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(k.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(k.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--k.active||k.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return k.get(e,t,n,"json")},getScript:function(e,t){return k.get(e,void 0,t,"script")}}),k.each(["get","post"],function(e,i){k[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),k.ajax(k.extend({url:e,type:i,dataType:r,data:t,success:n},k.isPlainObject(e)&&e))}}),k._evalUrl=function(e,t){return k.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){k.globalEval(e,t)}})},k.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=k(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){k(this).wrapInner(n.call(this,e))}):this.each(function(){var e=k(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){k(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){k(this).replaceWith(this.childNodes)}),this}}),k.expr.pseudos.hidden=function(e){return!k.expr.pseudos.visible(e)},k.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},k.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Ut={0:200,1223:204},Xt=k.ajaxSettings.xhr();y.cors=!!Xt&&"withCredentials"in Xt,y.ajax=Xt=!!Xt,k.ajaxTransport(function(i){var o,a;if(y.cors||Xt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Ut[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),k.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),k.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return k.globalEval(e),e}}}),k.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),k.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=k("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=mt(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&k.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?k("<div>").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}}),k.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),k.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),k.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||k.guid++,i},k.holdReady=function(e){e?k.readyWait++:k.ready(!0)},k.isArray=Array.isArray,k.parseJSON=JSON.parse,k.nodeName=A,k.isFunction=m,k.isWindow=x,k.camelCase=V,k.type=w,k.now=Date.now,k.isNumeric=function(e){var t=k.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return k});var Qt=C.jQuery,Jt=C.$;return k.noConflict=function(e){return C.$===k&&(C.$=Jt),e&&C.jQuery===k&&(C.jQuery=Qt),k},e||(C.jQuery=C.$=k),k});
diff --git a/map/lib/jquery.nicescroll.min.js b/map/lib/jquery.nicescroll.min.js
deleted file mode 100644
index 5ae63dd..0000000
--- a/map/lib/jquery.nicescroll.min.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/* jquery.nicescroll v3.7.6 InuYaksa - MIT - https://nicescroll.areaaperta.com */
-!function(e){"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof exports?module.exports=e(require("jquery")):e(jQuery)}(function(e){"use strict";var o=!1,t=!1,r=0,i=2e3,s=0,n=e,l=document,a=window,c=n(a),d=[],u=a.requestAnimationFrame||a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame||!1,h=a.cancelAnimationFrame||a.webkitCancelAnimationFrame||a.mozCancelAnimationFrame||!1;if(u)a.cancelAnimationFrame||(h=function(e){});else{var p=0;u=function(e,o){var t=(new Date).getTime(),r=Math.max(0,16-(t-p)),i=a.setTimeout(function(){e(t+r)},r);return p=t+r,i},h=function(e){a.clearTimeout(e)}}var m=a.MutationObserver||a.WebKitMutationObserver||!1,f=Date.now||function(){return(new Date).getTime()},g={zindex:"auto",cursoropacitymin:0,cursoropacitymax:1,cursorcolor:"#424242",cursorwidth:"6px",cursorborder:"1px solid #fff",cursorborderradius:"5px",scrollspeed:40,mousescrollstep:27,touchbehavior:!1,emulatetouch:!1,hwacceleration:!0,usetransition:!0,boxzoom:!1,dblclickzoom:!0,gesturezoom:!0,grabcursorenabled:!0,autohidemode:!0,background:"",iframeautoresize:!0,cursorminheight:32,preservenativescrolling:!0,railoffset:!1,railhoffset:!1,bouncescroll:!0,spacebarenabled:!0,railpadding:{top:0,right:0,left:0,bottom:0},disableoutline:!0,horizrailenabled:!0,railalign:"right",railvalign:"bottom",enabletranslate3d:!0,enablemousewheel:!0,enablekeyboard:!0,smoothscroll:!0,sensitiverail:!0,enablemouselockapi:!0,cursorfixedheight:!1,directionlockdeadzone:6,hidecursordelay:400,nativeparentscrolling:!0,enablescrollonselection:!0,overflowx:!0,overflowy:!0,cursordragspeed:.3,rtlmode:"auto",cursordragontouch:!1,oneaxismousemode:"auto",scriptpath:function(){var e=l.currentScript||function(){var e=l.getElementsByTagName("script");return!!e.length&&e[e.length-1]}(),o=e?e.src.split("?")[0]:"";return o.split("/").length>0?o.split("/").slice(0,-1).join("/")+"/":""}(),preventmultitouchscrolling:!0,disablemutationobserver:!1,enableobserver:!0,scrollbarid:!1},v=!1,w=function(){if(v)return v;var e=l.createElement("DIV"),o=e.style,t=navigator.userAgent,r=navigator.platform,i={};return i.haspointerlock="pointerLockElement"in l||"webkitPointerLockElement"in l||"mozPointerLockElement"in l,i.isopera="opera"in a,i.isopera12=i.isopera&&"getUserMedia"in navigator,i.isoperamini="[object OperaMini]"===Object.prototype.toString.call(a.operamini),i.isie="all"in l&&"attachEvent"in e&&!i.isopera,i.isieold=i.isie&&!("msInterpolationMode"in o),i.isie7=i.isie&&!i.isieold&&(!("documentMode"in l)||7===l.documentMode),i.isie8=i.isie&&"documentMode"in l&&8===l.documentMode,i.isie9=i.isie&&"performance"in a&&9===l.documentMode,i.isie10=i.isie&&"performance"in a&&10===l.documentMode,i.isie11="msRequestFullscreen"in e&&l.documentMode>=11,i.ismsedge="msCredentials"in a,i.ismozilla="MozAppearance"in o,i.iswebkit=!i.ismsedge&&"WebkitAppearance"in o,i.ischrome=i.iswebkit&&"chrome"in a,i.ischrome38=i.ischrome&&"touchAction"in o,i.ischrome22=!i.ischrome38&&i.ischrome&&i.haspointerlock,i.ischrome26=!i.ischrome38&&i.ischrome&&"transition"in o,i.cantouch="ontouchstart"in l.documentElement||"ontouchstart"in a,i.hasw3ctouch=(a.PointerEvent||!1)&&(navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0),i.hasmstouch=!i.hasw3ctouch&&(a.MSPointerEvent||!1),i.ismac=/^mac$/i.test(r),i.isios=i.cantouch&&/iphone|ipad|ipod/i.test(r),i.isios4=i.isios&&!("seal"in Object),i.isios7=i.isios&&"webkitHidden"in l,i.isios8=i.isios&&"hidden"in l,i.isios10=i.isios&&a.Proxy,i.isandroid=/android/i.test(t),i.haseventlistener="addEventListener"in e,i.trstyle=!1,i.hastransform=!1,i.hastranslate3d=!1,i.transitionstyle=!1,i.hastransition=!1,i.transitionend=!1,i.trstyle="transform",i.hastransform="transform"in o||function(){for(var e=["msTransform","webkitTransform","MozTransform","OTransform"],t=0,r=e.length;t<r;t++)if(void 0!==o[e[t]]){i.trstyle=e[t];break}i.hastransform=!!i.trstyle}(),i.hastransform&&(o[i.trstyle]="translate3d(1px,2px,3px)",i.hastranslate3d=/translate3d/.test(o[i.trstyle])),i.transitionstyle="transition",i.prefixstyle="",i.transitionend="transitionend",i.hastransition="transition"in o||function(){i.transitionend=!1;for(var e=["webkitTransition","msTransition","MozTransition","OTransition","OTransition","KhtmlTransition"],t=["-webkit-","-ms-","-moz-","-o-","-o","-khtml-"],r=["webkitTransitionEnd","msTransitionEnd","transitionend","otransitionend","oTransitionEnd","KhtmlTransitionEnd"],s=0,n=e.length;s<n;s++)if(e[s]in o){i.transitionstyle=e[s],i.prefixstyle=t[s],i.transitionend=r[s];break}i.ischrome26&&(i.prefixstyle=t[1]),i.hastransition=i.transitionstyle}(),i.cursorgrabvalue=function(){var e=["grab","-webkit-grab","-moz-grab"];(i.ischrome&&!i.ischrome38||i.isie)&&(e=[]);for(var t=0,r=e.length;t<r;t++){var s=e[t];if(o.cursor=s,o.cursor==s)return s}return"url(https://cdnjs.cloudflare.com/ajax/libs/slider-pro/1.3.0/css/images/openhand.cur),n-resize"}(),i.hasmousecapture="setCapture"in e,i.hasMutationObserver=!1!==m,e=null,v=i,i},b=function(e,p){function v(){var e=T.doc.css(P.trstyle);return!(!e||"matrix"!=e.substr(0,6))&&e.replace(/^.*\((.*)\)$/g,"$1").replace(/px/g,"").split(/, +/)}function b(){var e=T.win;if("zIndex"in e)return e.zIndex();for(;e.length>0;){if(9==e[0].nodeType)return!1;var o=e.css("zIndex");if(!isNaN(o)&&0!==o)return parseInt(o);e=e.parent()}return!1}function x(e,o,t){var r=e.css(o),i=parseFloat(r);if(isNaN(i)){var s=3==(i=I[r]||0)?t?T.win.outerHeight()-T.win.innerHeight():T.win.outerWidth()-T.win.innerWidth():1;return T.isie8&&i&&(i+=1),s?i:0}return i}function S(e,o,t,r){T._bind(e,o,function(r){var i={original:r=r||a.event,target:r.target||r.srcElement,type:"wheel",deltaMode:"MozMousePixelScroll"==r.type?0:1,deltaX:0,deltaZ:0,preventDefault:function(){return r.preventDefault?r.preventDefault():r.returnValue=!1,!1},stopImmediatePropagation:function(){r.stopImmediatePropagation?r.stopImmediatePropagation():r.cancelBubble=!0}};return"mousewheel"==o?(r.wheelDeltaX&&(i.deltaX=-.025*r.wheelDeltaX),r.wheelDeltaY&&(i.deltaY=-.025*r.wheelDeltaY),!i.deltaY&&!i.deltaX&&(i.deltaY=-.025*r.wheelDelta)):i.deltaY=r.detail,t.call(e,i)},r)}function z(e,o,t,r){T.scrollrunning||(T.newscrolly=T.getScrollTop(),T.newscrollx=T.getScrollLeft(),D=f());var i=f()-D;if(D=f(),i>350?A=1:A+=(2-A)/10,e=e*A|0,o=o*A|0,e){if(r)if(e<0){if(T.getScrollLeft()>=T.page.maxw)return!0}else if(T.getScrollLeft()<=0)return!0;var s=e>0?1:-1;X!==s&&(T.scrollmom&&T.scrollmom.stop(),T.newscrollx=T.getScrollLeft(),X=s),T.lastdeltax-=e}if(o){if(function(){var e=T.getScrollTop();if(o<0){if(e>=T.page.maxh)return!0}else if(e<=0)return!0}()){if(M.nativeparentscrolling&&t&&!T.ispage&&!T.zoomactive)return!0;var n=T.view.h>>1;T.newscrolly<-n?(T.newscrolly=-n,o=-1):T.newscrolly>T.page.maxh+n?(T.newscrolly=T.page.maxh+n,o=1):o=0}var l=o>0?1:-1;B!==l&&(T.scrollmom&&T.scrollmom.stop(),T.newscrolly=T.getScrollTop(),B=l),T.lastdeltay-=o}(o||e)&&T.synched("relativexy",function(){var e=T.lastdeltay+T.newscrolly;T.lastdeltay=0;var o=T.lastdeltax+T.newscrollx;T.lastdeltax=0,T.rail.drag||T.doScrollPos(o,e)})}function k(e,o,t){var r,i;return!(t||!q)||(0===e.deltaMode?(r=-e.deltaX*(M.mousescrollstep/54)|0,i=-e.deltaY*(M.mousescrollstep/54)|0):1===e.deltaMode&&(r=-e.deltaX*M.mousescrollstep*50/80|0,i=-e.deltaY*M.mousescrollstep*50/80|0),o&&M.oneaxismousemode&&0===r&&i&&(r=i,i=0,t&&(r<0?T.getScrollLeft()>=T.page.maxw:T.getScrollLeft()<=0)&&(i=r,r=0)),T.isrtlmode&&(r=-r),z(r,i,t,!0)?void(t&&(q=!0)):(q=!1,e.stopImmediatePropagation(),e.preventDefault()))}var T=this;this.version="3.7.6",this.name="nicescroll",this.me=p;var E=n("body"),M=this.opt={doc:E,win:!1};if(n.extend(M,g),M.snapbackspeed=80,e)for(var L in M)void 0!==e[L]&&(M[L]=e[L]);if(M.disablemutationobserver&&(m=!1),this.doc=M.doc,this.iddoc=this.doc&&this.doc[0]?this.doc[0].id||"":"",this.ispage=/^BODY|HTML/.test(M.win?M.win[0].nodeName:this.doc[0].nodeName),this.haswrapper=!1!==M.win,this.win=M.win||(this.ispage?c:this.doc),this.docscroll=this.ispage&&!this.haswrapper?c:this.win,this.body=E,this.viewport=!1,this.isfixed=!1,this.iframe=!1,this.isiframe="IFRAME"==this.doc[0].nodeName&&"IFRAME"==this.win[0].nodeName,this.istextarea="TEXTAREA"==this.win[0].nodeName,this.forcescreen=!1,this.canshowonmouseevent="scroll"!=M.autohidemode,this.onmousedown=!1,this.onmouseup=!1,this.onmousemove=!1,this.onmousewheel=!1,this.onkeypress=!1,this.ongesturezoom=!1,this.onclick=!1,this.onscrollstart=!1,this.onscrollend=!1,this.onscrollcancel=!1,this.onzoomin=!1,this.onzoomout=!1,this.view=!1,this.page=!1,this.scroll={x:0,y:0},this.scrollratio={x:0,y:0},this.cursorheight=20,this.scrollvaluemax=0,"auto"==M.rtlmode){var C=this.win[0]==a?this.body:this.win,N=C.css("writing-mode")||C.css("-webkit-writing-mode")||C.css("-ms-writing-mode")||C.css("-moz-writing-mode");"horizontal-tb"==N||"lr-tb"==N||""===N?(this.isrtlmode="rtl"==C.css("direction"),this.isvertical=!1):(this.isrtlmode="vertical-rl"==N||"tb"==N||"tb-rl"==N||"rl-tb"==N,this.isvertical="vertical-rl"==N||"tb"==N||"tb-rl"==N)}else this.isrtlmode=!0===M.rtlmode,this.isvertical=!1;if(this.scrollrunning=!1,this.scrollmom=!1,this.observer=!1,this.observerremover=!1,this.observerbody=!1,!1!==M.scrollbarid)this.id=M.scrollbarid;else do{this.id="ascrail"+i++}while(l.getElementById(this.id));this.rail=!1,this.cursor=!1,this.cursorfreezed=!1,this.selectiondrag=!1,this.zoom=!1,this.zoomactive=!1,this.hasfocus=!1,this.hasmousefocus=!1,this.railslocked=!1,this.locked=!1,this.hidden=!1,this.cursoractive=!0,this.wheelprevented=!1,this.overflowx=M.overflowx,this.overflowy=M.overflowy,this.nativescrollingarea=!1,this.checkarea=0,this.events=[],this.saved={},this.delaylist={},this.synclist={},this.lastdeltax=0,this.lastdeltay=0,this.detected=w();var P=n.extend({},this.detected);this.canhwscroll=P.hastransform&&M.hwacceleration,this.ishwscroll=this.canhwscroll&&T.haswrapper,this.isrtlmode?this.isvertical?this.hasreversehr=!(P.iswebkit||P.isie||P.isie11):this.hasreversehr=!(P.iswebkit||P.isie&&!P.isie10&&!P.isie11):this.hasreversehr=!1,this.istouchcapable=!1,P.cantouch||!P.hasw3ctouch&&!P.hasmstouch?!P.cantouch||P.isios||P.isandroid||!P.iswebkit&&!P.ismozilla||(this.istouchcapable=!0):this.istouchcapable=!0,M.enablemouselockapi||(P.hasmousecapture=!1,P.haspointerlock=!1),this.debounced=function(e,o,t){T&&(T.delaylist[e]||!1||(T.delaylist[e]={h:u(function(){T.delaylist[e].fn.call(T),T.delaylist[e]=!1},t)},o.call(T)),T.delaylist[e].fn=o)},this.synched=function(e,o){T.synclist[e]?T.synclist[e]=o:(T.synclist[e]=o,u(function(){T&&(T.synclist[e]&&T.synclist[e].call(T),T.synclist[e]=null)}))},this.unsynched=function(e){T.synclist[e]&&(T.synclist[e]=!1)},this.css=function(e,o){for(var t in o)T.saved.css.push([e,t,e.css(t)]),e.css(t,o[t])},this.scrollTop=function(e){return void 0===e?T.getScrollTop():T.setScrollTop(e)},this.scrollLeft=function(e){return void 0===e?T.getScrollLeft():T.setScrollLeft(e)};var R=function(e,o,t,r,i,s,n){this.st=e,this.ed=o,this.spd=t,this.p1=r||0,this.p2=i||1,this.p3=s||0,this.p4=n||1,this.ts=f(),this.df=o-e};if(R.prototype={B2:function(e){return 3*(1-e)*(1-e)*e},B3:function(e){return 3*(1-e)*e*e},B4:function(e){return e*e*e},getPos:function(){return(f()-this.ts)/this.spd},getNow:function(){var e=(f()-this.ts)/this.spd,o=this.B2(e)+this.B3(e)+this.B4(e);return e>=1?this.ed:this.st+this.df*o|0},update:function(e,o){return this.st=this.getNow(),this.ed=e,this.spd=o,this.ts=f(),this.df=this.ed-this.st,this}},this.ishwscroll){this.doc.translate={x:0,y:0,tx:"0px",ty:"0px"},P.hastranslate3d&&P.isios&&this.doc.css("-webkit-backface-visibility","hidden"),this.getScrollTop=function(e){if(!e){var o=v();if(o)return 16==o.length?-o[13]:-o[5];if(T.timerscroll&&T.timerscroll.bz)return T.timerscroll.bz.getNow()}return T.doc.translate.y},this.getScrollLeft=function(e){if(!e){var o=v();if(o)return 16==o.length?-o[12]:-o[4];if(T.timerscroll&&T.timerscroll.bh)return T.timerscroll.bh.getNow()}return T.doc.translate.x},this.notifyScrollEvent=function(e){var o=l.createEvent("UIEvents");o.initUIEvent("scroll",!1,!1,a,1),o.niceevent=!0,e.dispatchEvent(o)};var _=this.isrtlmode?1:-1;P.hastranslate3d&&M.enabletranslate3d?(this.setScrollTop=function(e,o){T.doc.translate.y=e,T.doc.translate.ty=-1*e+"px",T.doc.css(P.trstyle,"translate3d("+T.doc.translate.tx+","+T.doc.translate.ty+",0)"),o||T.notifyScrollEvent(T.win[0])},this.setScrollLeft=function(e,o){T.doc.translate.x=e,T.doc.translate.tx=e*_+"px",T.doc.css(P.trstyle,"translate3d("+T.doc.translate.tx+","+T.doc.translate.ty+",0)"),o||T.notifyScrollEvent(T.win[0])}):(this.setScrollTop=function(e,o){T.doc.translate.y=e,T.doc.translate.ty=-1*e+"px",T.doc.css(P.trstyle,"translate("+T.doc.translate.tx+","+T.doc.translate.ty+")"),o||T.notifyScrollEvent(T.win[0])},this.setScrollLeft=function(e,o){T.doc.translate.x=e,T.doc.translate.tx=e*_+"px",T.doc.css(P.trstyle,"translate("+T.doc.translate.tx+","+T.doc.translate.ty+")"),o||T.notifyScrollEvent(T.win[0])})}else this.getScrollTop=function(){return T.docscroll.scrollTop()},this.setScrollTop=function(e){T.docscroll.scrollTop(e)},this.getScrollLeft=function(){return T.hasreversehr?T.detected.ismozilla?T.page.maxw-Math.abs(T.docscroll.scrollLeft()):T.page.maxw-T.docscroll.scrollLeft():T.docscroll.scrollLeft()},this.setScrollLeft=function(e){return setTimeout(function(){if(T)return T.hasreversehr&&(e=T.detected.ismozilla?-(T.page.maxw-e):T.page.maxw-e),T.docscroll.scrollLeft(e)},1)};this.getTarget=function(e){return!!e&&(e.target?e.target:!!e.srcElement&&e.srcElement)},this.hasParent=function(e,o){if(!e)return!1;for(var t=e.target||e.srcElement||e||!1;t&&t.id!=o;)t=t.parentNode||!1;return!1!==t};var I={thin:1,medium:3,thick:5};this.getDocumentScrollOffset=function(){return{top:a.pageYOffset||l.documentElement.scrollTop,left:a.pageXOffset||l.documentElement.scrollLeft}},this.getOffset=function(){if(T.isfixed){var e=T.win.offset(),o=T.getDocumentScrollOffset();return e.top-=o.top,e.left-=o.left,e}var t=T.win.offset();if(!T.viewport)return t;var r=T.viewport.offset();return{top:t.top-r.top,left:t.left-r.left}},this.updateScrollBar=function(e){var o,t;if(T.ishwscroll)T.rail.css({height:T.win.innerHeight()-(M.railpadding.top+M.railpadding.bottom)}),T.railh&&T.railh.css({width:T.win.innerWidth()-(M.railpadding.left+M.railpadding.right)});else{var r=T.getOffset();if(o={top:r.top,left:r.left-(M.railpadding.left+M.railpadding.right)},o.top+=x(T.win,"border-top-width",!0),o.left+=T.rail.align?T.win.outerWidth()-x(T.win,"border-right-width")-T.rail.width:x(T.win,"border-left-width"),(t=M.railoffset)&&(t.top&&(o.top+=t.top),t.left&&(o.left+=t.left)),T.railslocked||T.rail.css({top:o.top,left:o.left,height:(e?e.h:T.win.innerHeight())-(M.railpadding.top+M.railpadding.bottom)}),T.zoom&&T.zoom.css({top:o.top+1,left:1==T.rail.align?o.left-20:o.left+T.rail.width+4}),T.railh&&!T.railslocked){o={top:r.top,left:r.left},(t=M.railhoffset)&&(t.top&&(o.top+=t.top),t.left&&(o.left+=t.left));var i=T.railh.align?o.top+x(T.win,"border-top-width",!0)+T.win.innerHeight()-T.railh.height:o.top+x(T.win,"border-top-width",!0),s=o.left+x(T.win,"border-left-width");T.railh.css({top:i-(M.railpadding.top+M.railpadding.bottom),left:s,width:T.railh.width})}}},this.doRailClick=function(e,o,t){var r,i,s,n;T.railslocked||(T.cancelEvent(e),"pageY"in e||(e.pageX=e.clientX+l.documentElement.scrollLeft,e.pageY=e.clientY+l.documentElement.scrollTop),o?(r=t?T.doScrollLeft:T.doScrollTop,s=t?(e.pageX-T.railh.offset().left-T.cursorwidth/2)*T.scrollratio.x:(e.pageY-T.rail.offset().top-T.cursorheight/2)*T.scrollratio.y,T.unsynched("relativexy"),r(0|s)):(r=t?T.doScrollLeftBy:T.doScrollBy,s=t?T.scroll.x:T.scroll.y,n=t?e.pageX-T.railh.offset().left:e.pageY-T.rail.offset().top,i=t?T.view.w:T.view.h,r(s>=n?i:-i)))},T.newscrolly=T.newscrollx=0,T.hasanimationframe="requestAnimationFrame"in a,T.hascancelanimationframe="cancelAnimationFrame"in a,T.hasborderbox=!1,this.init=function(){if(T.saved.css=[],P.isoperamini)return!0;if(P.isandroid&&!("hidden"in l))return!0;M.emulatetouch=M.emulatetouch||M.touchbehavior,T.hasborderbox=a.getComputedStyle&&"border-box"===a.getComputedStyle(l.body)["box-sizing"];var e={"overflow-y":"hidden"};if((P.isie11||P.isie10)&&(e["-ms-overflow-style"]="none"),T.ishwscroll&&(this.doc.css(P.transitionstyle,P.prefixstyle+"transform 0ms ease-out"),P.transitionend&&T.bind(T.doc,P.transitionend,T.onScrollTransitionEnd,!1)),T.zindex="auto",T.ispage||"auto"!=M.zindex?T.zindex=M.zindex:T.zindex=b()||"auto",!T.ispage&&"auto"!=T.zindex&&T.zindex>s&&(s=T.zindex),T.isie&&0===T.zindex&&"auto"==M.zindex&&(T.zindex="auto"),!T.ispage||!P.isieold){var i=T.docscroll;T.ispage&&(i=T.haswrapper?T.win:T.doc),T.css(i,e),T.ispage&&(P.isie11||P.isie)&&T.css(n("html"),e),!P.isios||T.ispage||T.haswrapper||T.css(E,{"-webkit-overflow-scrolling":"touch"});var d=n(l.createElement("div"));d.css({position:"relative",top:0,float:"right",width:M.cursorwidth,height:0,"background-color":M.cursorcolor,border:M.cursorborder,"background-clip":"padding-box","-webkit-border-radius":M.cursorborderradius,"-moz-border-radius":M.cursorborderradius,"border-radius":M.cursorborderradius}),d.addClass("nicescroll-cursors"),T.cursor=d;var u=n(l.createElement("div"));u.attr("id",T.id),u.addClass("nicescroll-rails nicescroll-rails-vr");var h,p,f=["left","right","top","bottom"];for(var g in f)p=f[g],(h=M.railpadding[p]||0)&&u.css("padding-"+p,h+"px");u.append(d),u.width=Math.max(parseFloat(M.cursorwidth),d.outerWidth()),u.css({width:u.width+"px",zIndex:T.zindex,background:M.background,cursor:"default"}),u.visibility=!0,u.scrollable=!0,u.align="left"==M.railalign?0:1,T.rail=u,T.rail.drag=!1;var v=!1;!M.boxzoom||T.ispage||P.isieold||(v=l.createElement("div"),T.bind(v,"click",T.doZoom),T.bind(v,"mouseenter",function(){T.zoom.css("opacity",M.cursoropacitymax)}),T.bind(v,"mouseleave",function(){T.zoom.css("opacity",M.cursoropacitymin)}),T.zoom=n(v),T.zoom.css({cursor:"pointer",zIndex:T.zindex,backgroundImage:"url("+M.scriptpath+"zoomico.png)",height:18,width:18,backgroundPosition:"0 0"}),M.dblclickzoom&&T.bind(T.win,"dblclick",T.doZoom),P.cantouch&&M.gesturezoom&&(T.ongesturezoom=function(e){return e.scale>1.5&&T.doZoomIn(e),e.scale<.8&&T.doZoomOut(e),T.cancelEvent(e)},T.bind(T.win,"gestureend",T.ongesturezoom))),T.railh=!1;var w;if(M.horizrailenabled&&(T.css(i,{overflowX:"hidden"}),(d=n(l.createElement("div"))).css({position:"absolute",top:0,height:M.cursorwidth,width:0,backgroundColor:M.cursorcolor,border:M.cursorborder,backgroundClip:"padding-box","-webkit-border-radius":M.cursorborderradius,"-moz-border-radius":M.cursorborderradius,"border-radius":M.cursorborderradius}),P.isieold&&d.css("overflow","hidden"),d.addClass("nicescroll-cursors"),T.cursorh=d,(w=n(l.createElement("div"))).attr("id",T.id+"-hr"),w.addClass("nicescroll-rails nicescroll-rails-hr"),w.height=Math.max(parseFloat(M.cursorwidth),d.outerHeight()),w.css({height:w.height+"px",zIndex:T.zindex,background:M.background}),w.append(d),w.visibility=!0,w.scrollable=!0,w.align="top"==M.railvalign?0:1,T.railh=w,T.railh.drag=!1),T.ispage)u.css({position:"fixed",top:0,height:"100%"}),u.css(u.align?{right:0}:{left:0}),T.body.append(u),T.railh&&(w.css({position:"fixed",left:0,width:"100%"}),w.css(w.align?{bottom:0}:{top:0}),T.body.append(w));else{if(T.ishwscroll){"static"==T.win.css("position")&&T.css(T.win,{position:"relative"});var x="HTML"==T.win[0].nodeName?T.body:T.win;n(x).scrollTop(0).scrollLeft(0),T.zoom&&(T.zoom.css({position:"absolute",top:1,right:0,"margin-right":u.width+4}),x.append(T.zoom)),u.css({position:"absolute",top:0}),u.css(u.align?{right:0}:{left:0}),x.append(u),w&&(w.css({position:"absolute",left:0,bottom:0}),w.css(w.align?{bottom:0}:{top:0}),x.append(w))}else{T.isfixed="fixed"==T.win.css("position");var S=T.isfixed?"fixed":"absolute";T.isfixed||(T.viewport=T.getViewport(T.win[0])),T.viewport&&(T.body=T.viewport,/fixed|absolute/.test(T.viewport.css("position"))||T.css(T.viewport,{position:"relative"})),u.css({position:S}),T.zoom&&T.zoom.css({position:S}),T.updateScrollBar(),T.body.append(u),T.zoom&&T.body.append(T.zoom),T.railh&&(w.css({position:S}),T.body.append(w))}P.isios&&T.css(T.win,{"-webkit-tap-highlight-color":"rgba(0,0,0,0)","-webkit-touch-callout":"none"}),M.disableoutline&&(P.isie&&T.win.attr("hideFocus","true"),P.iswebkit&&T.win.css("outline","none"))}if(!1===M.autohidemode?(T.autohidedom=!1,T.rail.css({opacity:M.cursoropacitymax}),T.railh&&T.railh.css({opacity:M.cursoropacitymax})):!0===M.autohidemode||"leave"===M.autohidemode?(T.autohidedom=n().add(T.rail),P.isie8&&(T.autohidedom=T.autohidedom.add(T.cursor)),T.railh&&(T.autohidedom=T.autohidedom.add(T.railh)),T.railh&&P.isie8&&(T.autohidedom=T.autohidedom.add(T.cursorh))):"scroll"==M.autohidemode?(T.autohidedom=n().add(T.rail),T.railh&&(T.autohidedom=T.autohidedom.add(T.railh))):"cursor"==M.autohidemode?(T.autohidedom=n().add(T.cursor),T.railh&&(T.autohidedom=T.autohidedom.add(T.cursorh))):"hidden"==M.autohidemode&&(T.autohidedom=!1,T.hide(),T.railslocked=!1),P.cantouch||T.istouchcapable||M.emulatetouch||P.hasmstouch){T.scrollmom=new y(T);T.ontouchstart=function(e){if(T.locked)return!1;if(e.pointerType&&("mouse"===e.pointerType||e.pointerType===e.MSPOINTER_TYPE_MOUSE))return!1;if(T.hasmoving=!1,T.scrollmom.timer&&(T.triggerScrollEnd(),T.scrollmom.stop()),!T.railslocked){var o=T.getTarget(e);if(o&&/INPUT/i.test(o.nodeName)&&/range/i.test(o.type))return T.stopPropagation(e);var t="mousedown"===e.type;if(!("clientX"in e)&&"changedTouches"in e&&(e.clientX=e.changedTouches[0].clientX,e.clientY=e.changedTouches[0].clientY),T.forcescreen){var r=e;(e={original:e.original?e.original:e}).clientX=r.screenX,e.clientY=r.screenY}if(T.rail.drag={x:e.clientX,y:e.clientY,sx:T.scroll.x,sy:T.scroll.y,st:T.getScrollTop(),sl:T.getScrollLeft(),pt:2,dl:!1,tg:o},T.ispage||!M.directionlockdeadzone)T.rail.drag.dl="f";else{var i={w:c.width(),h:c.height()},s=T.getContentSize(),l=s.h-i.h,a=s.w-i.w;T.rail.scrollable&&!T.railh.scrollable?T.rail.drag.ck=l>0&&"v":!T.rail.scrollable&&T.railh.scrollable?T.rail.drag.ck=a>0&&"h":T.rail.drag.ck=!1}if(M.emulatetouch&&T.isiframe&&P.isie){var d=T.win.position();T.rail.drag.x+=d.left,T.rail.drag.y+=d.top}if(T.hasmoving=!1,T.lastmouseup=!1,T.scrollmom.reset(e.clientX,e.clientY),o&&t){if(!/INPUT|SELECT|BUTTON|TEXTAREA/i.test(o.nodeName))return P.hasmousecapture&&o.setCapture(),M.emulatetouch?(o.onclick&&!o._onclick&&(o._onclick=o.onclick,o.onclick=function(e){if(T.hasmoving)return!1;o._onclick.call(this,e)}),T.cancelEvent(e)):T.stopPropagation(e);/SUBMIT|CANCEL|BUTTON/i.test(n(o).attr("type"))&&(T.preventclick={tg:o,click:!1})}}},T.ontouchend=function(e){if(!T.rail.drag)return!0;if(2==T.rail.drag.pt){if(e.pointerType&&("mouse"===e.pointerType||e.pointerType===e.MSPOINTER_TYPE_MOUSE))return!1;T.rail.drag=!1;var o="mouseup"===e.type;if(T.hasmoving&&(T.scrollmom.doMomentum(),T.lastmouseup=!0,T.hideCursor(),P.hasmousecapture&&l.releaseCapture(),o))return T.cancelEvent(e)}else if(1==T.rail.drag.pt)return T.onmouseup(e)};var z=M.emulatetouch&&T.isiframe&&!P.hasmousecapture,k=.3*M.directionlockdeadzone|0;T.ontouchmove=function(e,o){if(!T.rail.drag)return!0;if(e.targetTouches&&M.preventmultitouchscrolling&&e.targetTouches.length>1)return!0;if(e.pointerType&&("mouse"===e.pointerType||e.pointerType===e.MSPOINTER_TYPE_MOUSE))return!0;if(2==T.rail.drag.pt){"changedTouches"in e&&(e.clientX=e.changedTouches[0].clientX,e.clientY=e.changedTouches[0].clientY);var t,r;if(r=t=0,z&&!o){var i=T.win.position();r=-i.left,t=-i.top}var s=e.clientY+t,n=s-T.rail.drag.y,a=e.clientX+r,c=a-T.rail.drag.x,d=T.rail.drag.st-n;if(T.ishwscroll&&M.bouncescroll)d<0?d=Math.round(d/2):d>T.page.maxh&&(d=T.page.maxh+Math.round((d-T.page.maxh)/2));else if(d<0?(d=0,s=0):d>T.page.maxh&&(d=T.page.maxh,s=0),0===s&&!T.hasmoving)return T.ispage||(T.rail.drag=!1),!0;var u=T.getScrollLeft();if(T.railh&&T.railh.scrollable&&(u=T.isrtlmode?c-T.rail.drag.sl:T.rail.drag.sl-c,T.ishwscroll&&M.bouncescroll?u<0?u=Math.round(u/2):u>T.page.maxw&&(u=T.page.maxw+Math.round((u-T.page.maxw)/2)):(u<0&&(u=0,a=0),u>T.page.maxw&&(u=T.page.maxw,a=0))),!T.hasmoving){if(T.rail.drag.y===e.clientY&&T.rail.drag.x===e.clientX)return T.cancelEvent(e);var h=Math.abs(n),p=Math.abs(c),m=M.directionlockdeadzone;if(T.rail.drag.ck?"v"==T.rail.drag.ck?p>m&&h<=k?T.rail.drag=!1:h>m&&(T.rail.drag.dl="v"):"h"==T.rail.drag.ck&&(h>m&&p<=k?T.rail.drag=!1:p>m&&(T.rail.drag.dl="h")):h>m&&p>m?T.rail.drag.dl="f":h>m?T.rail.drag.dl=p>k?"f":"v":p>m&&(T.rail.drag.dl=h>k?"f":"h"),!T.rail.drag.dl)return T.cancelEvent(e);T.triggerScrollStart(e.clientX,e.clientY,0,0,0),T.hasmoving=!0}return T.preventclick&&!T.preventclick.click&&(T.preventclick.click=T.preventclick.tg.onclick||!1,T.preventclick.tg.onclick=T.onpreventclick),T.rail.drag.dl&&("v"==T.rail.drag.dl?u=T.rail.drag.sl:"h"==T.rail.drag.dl&&(d=T.rail.drag.st)),T.synched("touchmove",function(){T.rail.drag&&2==T.rail.drag.pt&&(T.prepareTransition&&T.resetTransition(),T.rail.scrollable&&T.setScrollTop(d),T.scrollmom.update(a,s),T.railh&&T.railh.scrollable?(T.setScrollLeft(u),T.showCursor(d,u)):T.showCursor(d),P.isie10&&l.selection.clear())}),T.cancelEvent(e)}return 1==T.rail.drag.pt?T.onmousemove(e):void 0},T.ontouchstartCursor=function(e,o){if(!T.rail.drag||3==T.rail.drag.pt){if(T.locked)return T.cancelEvent(e);T.cancelScroll(),T.rail.drag={x:e.touches[0].clientX,y:e.touches[0].clientY,sx:T.scroll.x,sy:T.scroll.y,pt:3,hr:!!o};var t=T.getTarget(e);return!T.ispage&&P.hasmousecapture&&t.setCapture(),T.isiframe&&!P.hasmousecapture&&(T.saved.csspointerevents=T.doc.css("pointer-events"),T.css(T.doc,{"pointer-events":"none"})),T.cancelEvent(e)}},T.ontouchendCursor=function(e){if(T.rail.drag){if(P.hasmousecapture&&l.releaseCapture(),T.isiframe&&!P.hasmousecapture&&T.doc.css("pointer-events",T.saved.csspointerevents),3!=T.rail.drag.pt)return;return T.rail.drag=!1,T.cancelEvent(e)}},T.ontouchmoveCursor=function(e){if(T.rail.drag){if(3!=T.rail.drag.pt)return;if(T.cursorfreezed=!0,T.rail.drag.hr){T.scroll.x=T.rail.drag.sx+(e.touches[0].clientX-T.rail.drag.x),T.scroll.x<0&&(T.scroll.x=0);var o=T.scrollvaluemaxw;T.scroll.x>o&&(T.scroll.x=o)}else{T.scroll.y=T.rail.drag.sy+(e.touches[0].clientY-T.rail.drag.y),T.scroll.y<0&&(T.scroll.y=0);var t=T.scrollvaluemax;T.scroll.y>t&&(T.scroll.y=t)}return T.synched("touchmove",function(){T.rail.drag&&3==T.rail.drag.pt&&(T.showCursor(),T.rail.drag.hr?T.doScrollLeft(Math.round(T.scroll.x*T.scrollratio.x),M.cursordragspeed):T.doScrollTop(Math.round(T.scroll.y*T.scrollratio.y),M.cursordragspeed))}),T.cancelEvent(e)}}}if(T.onmousedown=function(e,o){if(!T.rail.drag||1==T.rail.drag.pt){if(T.railslocked)return T.cancelEvent(e);T.cancelScroll(),T.rail.drag={x:e.clientX,y:e.clientY,sx:T.scroll.x,sy:T.scroll.y,pt:1,hr:o||!1};var t=T.getTarget(e);return P.hasmousecapture&&t.setCapture(),T.isiframe&&!P.hasmousecapture&&(T.saved.csspointerevents=T.doc.css("pointer-events"),T.css(T.doc,{"pointer-events":"none"})),T.hasmoving=!1,T.cancelEvent(e)}},T.onmouseup=function(e){if(T.rail.drag)return 1!=T.rail.drag.pt||(P.hasmousecapture&&l.releaseCapture(),T.isiframe&&!P.hasmousecapture&&T.doc.css("pointer-events",T.saved.csspointerevents),T.rail.drag=!1,T.cursorfreezed=!1,T.hasmoving&&T.triggerScrollEnd(),T.cancelEvent(e))},T.onmousemove=function(e){if(T.rail.drag){if(1!==T.rail.drag.pt)return;if(P.ischrome&&0===e.which)return T.onmouseup(e);if(T.cursorfreezed=!0,T.hasmoving||T.triggerScrollStart(e.clientX,e.clientY,0,0,0),T.hasmoving=!0,T.rail.drag.hr){T.scroll.x=T.rail.drag.sx+(e.clientX-T.rail.drag.x),T.scroll.x<0&&(T.scroll.x=0);var o=T.scrollvaluemaxw;T.scroll.x>o&&(T.scroll.x=o)}else{T.scroll.y=T.rail.drag.sy+(e.clientY-T.rail.drag.y),T.scroll.y<0&&(T.scroll.y=0);var t=T.scrollvaluemax;T.scroll.y>t&&(T.scroll.y=t)}return T.synched("mousemove",function(){T.cursorfreezed&&(T.showCursor(),T.rail.drag.hr?T.scrollLeft(Math.round(T.scroll.x*T.scrollratio.x)):T.scrollTop(Math.round(T.scroll.y*T.scrollratio.y)))}),T.cancelEvent(e)}T.checkarea=0},P.cantouch||M.emulatetouch)T.onpreventclick=function(e){if(T.preventclick)return T.preventclick.tg.onclick=T.preventclick.click,T.preventclick=!1,T.cancelEvent(e)},T.onclick=!P.isios&&function(e){return!T.lastmouseup||(T.lastmouseup=!1,T.cancelEvent(e))},M.grabcursorenabled&&P.cursorgrabvalue&&(T.css(T.ispage?T.doc:T.win,{cursor:P.cursorgrabvalue}),T.css(T.rail,{cursor:P.cursorgrabvalue}));else{var L=function(e){if(T.selectiondrag){if(e){var o=T.win.outerHeight(),t=e.pageY-T.selectiondrag.top;t>0&&t<o&&(t=0),t>=o&&(t-=o),T.selectiondrag.df=t}if(0!==T.selectiondrag.df){var r=-2*T.selectiondrag.df/6|0;T.doScrollBy(r),T.debounced("doselectionscroll",function(){L()},50)}}};T.hasTextSelected="getSelection"in l?function(){return l.getSelection().rangeCount>0}:"selection"in l?function(){return"None"!=l.selection.type}:function(){return!1},T.onselectionstart=function(e){T.ispage||(T.selectiondrag=T.win.offset())},T.onselectionend=function(e){T.selectiondrag=!1},T.onselectiondrag=function(e){T.selectiondrag&&T.hasTextSelected()&&T.debounced("selectionscroll",function(){L(e)},250)}}if(P.hasw3ctouch?(T.css(T.ispage?n("html"):T.win,{"touch-action":"none"}),T.css(T.rail,{"touch-action":"none"}),T.css(T.cursor,{"touch-action":"none"}),T.bind(T.win,"pointerdown",T.ontouchstart),T.bind(l,"pointerup",T.ontouchend),T.delegate(l,"pointermove",T.ontouchmove)):P.hasmstouch?(T.css(T.ispage?n("html"):T.win,{"-ms-touch-action":"none"}),T.css(T.rail,{"-ms-touch-action":"none"}),T.css(T.cursor,{"-ms-touch-action":"none"}),T.bind(T.win,"MSPointerDown",T.ontouchstart),T.bind(l,"MSPointerUp",T.ontouchend),T.delegate(l,"MSPointerMove",T.ontouchmove),T.bind(T.cursor,"MSGestureHold",function(e){e.preventDefault()}),T.bind(T.cursor,"contextmenu",function(e){e.preventDefault()})):P.cantouch&&(T.bind(T.win,"touchstart",T.ontouchstart,!1,!0),T.bind(l,"touchend",T.ontouchend,!1,!0),T.bind(l,"touchcancel",T.ontouchend,!1,!0),T.delegate(l,"touchmove",T.ontouchmove,!1,!0)),M.emulatetouch&&(T.bind(T.win,"mousedown",T.ontouchstart,!1,!0),T.bind(l,"mouseup",T.ontouchend,!1,!0),T.bind(l,"mousemove",T.ontouchmove,!1,!0)),(M.cursordragontouch||!P.cantouch&&!M.emulatetouch)&&(T.rail.css({cursor:"default"}),T.railh&&T.railh.css({cursor:"default"}),T.jqbind(T.rail,"mouseenter",function(){if(!T.ispage&&!T.win.is(":visible"))return!1;T.canshowonmouseevent&&T.showCursor(),T.rail.active=!0}),T.jqbind(T.rail,"mouseleave",function(){T.rail.active=!1,T.rail.drag||T.hideCursor()}),M.sensitiverail&&(T.bind(T.rail,"click",function(e){T.doRailClick(e,!1,!1)}),T.bind(T.rail,"dblclick",function(e){T.doRailClick(e,!0,!1)}),T.bind(T.cursor,"click",function(e){T.cancelEvent(e)}),T.bind(T.cursor,"dblclick",function(e){T.cancelEvent(e)})),T.railh&&(T.jqbind(T.railh,"mouseenter",function(){if(!T.ispage&&!T.win.is(":visible"))return!1;T.canshowonmouseevent&&T.showCursor(),T.rail.active=!0}),T.jqbind(T.railh,"mouseleave",function(){T.rail.active=!1,T.rail.drag||T.hideCursor()}),M.sensitiverail&&(T.bind(T.railh,"click",function(e){T.doRailClick(e,!1,!0)}),T.bind(T.railh,"dblclick",function(e){T.doRailClick(e,!0,!0)}),T.bind(T.cursorh,"click",function(e){T.cancelEvent(e)}),T.bind(T.cursorh,"dblclick",function(e){T.cancelEvent(e)})))),M.cursordragontouch&&(this.istouchcapable||P.cantouch)&&(T.bind(T.cursor,"touchstart",T.ontouchstartCursor),T.bind(T.cursor,"touchmove",T.ontouchmoveCursor),T.bind(T.cursor,"touchend",T.ontouchendCursor),T.cursorh&&T.bind(T.cursorh,"touchstart",function(e){T.ontouchstartCursor(e,!0)}),T.cursorh&&T.bind(T.cursorh,"touchmove",T.ontouchmoveCursor),T.cursorh&&T.bind(T.cursorh,"touchend",T.ontouchendCursor)),M.emulatetouch||P.isandroid||P.isios?(T.bind(P.hasmousecapture?T.win:l,"mouseup",T.ontouchend),T.onclick&&T.bind(l,"click",T.onclick),M.cursordragontouch?(T.bind(T.cursor,"mousedown",T.onmousedown),T.bind(T.cursor,"mouseup",T.onmouseup),T.cursorh&&T.bind(T.cursorh,"mousedown",function(e){T.onmousedown(e,!0)}),T.cursorh&&T.bind(T.cursorh,"mouseup",T.onmouseup)):(T.bind(T.rail,"mousedown",function(e){e.preventDefault()}),T.railh&&T.bind(T.railh,"mousedown",function(e){e.preventDefault()}))):(T.bind(P.hasmousecapture?T.win:l,"mouseup",T.onmouseup),T.bind(l,"mousemove",T.onmousemove),T.onclick&&T.bind(l,"click",T.onclick),T.bind(T.cursor,"mousedown",T.onmousedown),T.bind(T.cursor,"mouseup",T.onmouseup),T.railh&&(T.bind(T.cursorh,"mousedown",function(e){T.onmousedown(e,!0)}),T.bind(T.cursorh,"mouseup",T.onmouseup)),!T.ispage&&M.enablescrollonselection&&(T.bind(T.win[0],"mousedown",T.onselectionstart),T.bind(l,"mouseup",T.onselectionend),T.bind(T.cursor,"mouseup",T.onselectionend),T.cursorh&&T.bind(T.cursorh,"mouseup",T.onselectionend),T.bind(l,"mousemove",T.onselectiondrag)),T.zoom&&(T.jqbind(T.zoom,"mouseenter",function(){T.canshowonmouseevent&&T.showCursor(),T.rail.active=!0}),T.jqbind(T.zoom,"mouseleave",function(){T.rail.active=!1,T.rail.drag||T.hideCursor()}))),M.enablemousewheel&&(T.isiframe||T.mousewheel(P.isie&&T.ispage?l:T.win,T.onmousewheel),T.mousewheel(T.rail,T.onmousewheel),T.railh&&T.mousewheel(T.railh,T.onmousewheelhr)),T.ispage||P.cantouch||/HTML|^BODY/.test(T.win[0].nodeName)||(T.win.attr("tabindex")||T.win.attr({tabindex:++r}),T.bind(T.win,"focus",function(e){o=T.getTarget(e).id||T.getTarget(e)||!1,T.hasfocus=!0,T.canshowonmouseevent&&T.noticeCursor()}),T.bind(T.win,"blur",function(e){o=!1,T.hasfocus=!1}),T.bind(T.win,"mouseenter",function(e){t=T.getTarget(e).id||T.getTarget(e)||!1,T.hasmousefocus=!0,T.canshowonmouseevent&&T.noticeCursor()}),T.bind(T.win,"mouseleave",function(e){t=!1,T.hasmousefocus=!1,T.rail.drag||T.hideCursor()})),T.onkeypress=function(e){if(T.railslocked&&0===T.page.maxh)return!0;e=e||a.event;var r=T.getTarget(e);if(r&&/INPUT|TEXTAREA|SELECT|OPTION/.test(r.nodeName)&&(!(r.getAttribute("type")||r.type||!1)||!/submit|button|cancel/i.tp))return!0;if(n(r).attr("contenteditable"))return!0;if(T.hasfocus||T.hasmousefocus&&!o||T.ispage&&!o&&!t){var i=e.keyCode;if(T.railslocked&&27!=i)return T.cancelEvent(e);var s=e.ctrlKey||!1,l=e.shiftKey||!1,c=!1;switch(i){case 38:case 63233:T.doScrollBy(72),c=!0;break;case 40:case 63235:T.doScrollBy(-72),c=!0;break;case 37:case 63232:T.railh&&(s?T.doScrollLeft(0):T.doScrollLeftBy(72),c=!0);break;case 39:case 63234:T.railh&&(s?T.doScrollLeft(T.page.maxw):T.doScrollLeftBy(-72),c=!0);break;case 33:case 63276:T.doScrollBy(T.view.h),c=!0;break;case 34:case 63277:T.doScrollBy(-T.view.h),c=!0;break;case 36:case 63273:T.railh&&s?T.doScrollPos(0,0):T.doScrollTo(0),c=!0;break;case 35:case 63275:T.railh&&s?T.doScrollPos(T.page.maxw,T.page.maxh):T.doScrollTo(T.page.maxh),c=!0;break;case 32:M.spacebarenabled&&(l?T.doScrollBy(T.view.h):T.doScrollBy(-T.view.h),c=!0);break;case 27:T.zoomactive&&(T.doZoom(),c=!0)}if(c)return T.cancelEvent(e)}},M.enablekeyboard&&T.bind(l,P.isopera&&!P.isopera12?"keypress":"keydown",T.onkeypress),T.bind(l,"keydown",function(e){(e.ctrlKey||!1)&&(T.wheelprevented=!0)}),T.bind(l,"keyup",function(e){e.ctrlKey||!1||(T.wheelprevented=!1)}),T.bind(a,"blur",function(e){T.wheelprevented=!1}),T.bind(a,"resize",T.onscreenresize),T.bind(a,"orientationchange",T.onscreenresize),T.bind(a,"load",T.lazyResize),P.ischrome&&!T.ispage&&!T.haswrapper){var C=T.win.attr("style"),N=parseFloat(T.win.css("width"))+1;T.win.css("width",N),T.synched("chromefix",function(){T.win.attr("style",C)})}if(T.onAttributeChange=function(e){T.lazyResize(T.isieold?250:30)},M.enableobserver&&(T.isie11||!1===m||(T.observerbody=new m(function(e){if(e.forEach(function(e){if("attributes"==e.type)return E.hasClass("modal-open")&&E.hasClass("modal-dialog")&&!n.contains(n(".modal-dialog")[0],T.doc[0])?T.hide():T.show()}),T.me.clientWidth!=T.page.width||T.me.clientHeight!=T.page.height)return T.lazyResize(30)}),T.observerbody.observe(l.body,{childList:!0,subtree:!0,characterData:!1,attributes:!0,attributeFilter:["class"]})),!T.ispage&&!T.haswrapper)){var R=T.win[0];!1!==m?(T.observer=new m(function(e){e.forEach(T.onAttributeChange)}),T.observer.observe(R,{childList:!0,characterData:!1,attributes:!0,subtree:!1}),T.observerremover=new m(function(e){e.forEach(function(e){if(e.removedNodes.length>0)for(var o in e.removedNodes)if(T&&e.removedNodes[o]===R)return T.remove()})}),T.observerremover.observe(R.parentNode,{childList:!0,characterData:!1,attributes:!1,subtree:!1})):(T.bind(R,P.isie&&!P.isie9?"propertychange":"DOMAttrModified",T.onAttributeChange),P.isie9&&R.attachEvent("onpropertychange",T.onAttributeChange),T.bind(R,"DOMNodeRemoved",function(e){e.target===R&&T.remove()}))}!T.ispage&&M.boxzoom&&T.bind(a,"resize",T.resizeZoom),T.istextarea&&(T.bind(T.win,"keydown",T.lazyResize),T.bind(T.win,"mouseup",T.lazyResize)),T.lazyResize(30)}if("IFRAME"==this.doc[0].nodeName){var _=function(){T.iframexd=!1;var o;try{(o="contentDocument"in this?this.contentDocument:this.contentWindow._doc).domain}catch(e){T.iframexd=!0,o=!1}if(T.iframexd)return"console"in a&&console.log("NiceScroll error: policy restriced iframe"),!0;if(T.forcescreen=!0,T.isiframe&&(T.iframe={doc:n(o),html:T.doc.contents().find("html")[0],body:T.doc.contents().find("body")[0]},T.getContentSize=function(){return{w:Math.max(T.iframe.html.scrollWidth,T.iframe.body.scrollWidth),h:Math.max(T.iframe.html.scrollHeight,T.iframe.body.scrollHeight)}},T.docscroll=n(T.iframe.body)),!P.isios&&M.iframeautoresize&&!T.isiframe){T.win.scrollTop(0),T.doc.height("");var t=Math.max(o.getElementsByTagName("html")[0].scrollHeight,o.body.scrollHeight);T.doc.height(t)}T.lazyResize(30),T.css(n(T.iframe.body),e),P.isios&&T.haswrapper&&T.css(n(o.body),{"-webkit-transform":"translate3d(0,0,0)"}),"contentWindow"in this?T.bind(this.contentWindow,"scroll",T.onscroll):T.bind(o,"scroll",T.onscroll),M.enablemousewheel&&T.mousewheel(o,T.onmousewheel),M.enablekeyboard&&T.bind(o,P.isopera?"keypress":"keydown",T.onkeypress),P.cantouch?(T.bind(o,"touchstart",T.ontouchstart),T.bind(o,"touchmove",T.ontouchmove)):M.emulatetouch&&(T.bind(o,"mousedown",T.ontouchstart),T.bind(o,"mousemove",function(e){return T.ontouchmove(e,!0)}),M.grabcursorenabled&&P.cursorgrabvalue&&T.css(n(o.body),{cursor:P.cursorgrabvalue})),T.bind(o,"mouseup",T.ontouchend),T.zoom&&(M.dblclickzoom&&T.bind(o,"dblclick",T.doZoom),T.ongesturezoom&&T.bind(o,"gestureend",T.ongesturezoom))};this.doc[0].readyState&&"complete"===this.doc[0].readyState&&setTimeout(function(){_.call(T.doc[0],!1)},500),T.bind(this.doc,"load",_)}},this.showCursor=function(e,o){if(T.cursortimeout&&(clearTimeout(T.cursortimeout),T.cursortimeout=0),T.rail){if(T.autohidedom&&(T.autohidedom.stop().css({opacity:M.cursoropacitymax}),T.cursoractive=!0),T.rail.drag&&1==T.rail.drag.pt||(void 0!==e&&!1!==e&&(T.scroll.y=e/T.scrollratio.y|0),void 0!==o&&(T.scroll.x=o/T.scrollratio.x|0)),T.cursor.css({height:T.cursorheight,top:T.scroll.y}),T.cursorh){var t=T.hasreversehr?T.scrollvaluemaxw-T.scroll.x:T.scroll.x;T.cursorh.css({width:T.cursorwidth,left:!T.rail.align&&T.rail.visibility?t+T.rail.width:t}),T.cursoractive=!0}T.zoom&&T.zoom.stop().css({opacity:M.cursoropacitymax})}},this.hideCursor=function(e){T.cursortimeout||T.rail&&T.autohidedom&&(T.hasmousefocus&&"leave"===M.autohidemode||(T.cursortimeout=setTimeout(function(){T.rail.active&&T.showonmouseevent||(T.autohidedom.stop().animate({opacity:M.cursoropacitymin}),T.zoom&&T.zoom.stop().animate({opacity:M.cursoropacitymin}),T.cursoractive=!1),T.cursortimeout=0},e||M.hidecursordelay)))},this.noticeCursor=function(e,o,t){T.showCursor(o,t),T.rail.active||T.hideCursor(e)},this.getContentSize=T.ispage?function(){return{w:Math.max(l.body.scrollWidth,l.documentElement.scrollWidth),h:Math.max(l.body.scrollHeight,l.documentElement.scrollHeight)}}:T.haswrapper?function(){return{w:T.doc[0].offsetWidth,h:T.doc[0].offsetHeight}}:function(){return{w:T.docscroll[0].scrollWidth,h:T.docscroll[0].scrollHeight}},this.onResize=function(e,o){if(!T||!T.win)return!1;var t=T.page.maxh,r=T.page.maxw,i=T.view.h,s=T.view.w;if(T.view={w:T.ispage?T.win.width():T.win[0].clientWidth,h:T.ispage?T.win.height():T.win[0].clientHeight},T.page=o||T.getContentSize(),T.page.maxh=Math.max(0,T.page.h-T.view.h),T.page.maxw=Math.max(0,T.page.w-T.view.w),T.page.maxh==t&&T.page.maxw==r&&T.view.w==s&&T.view.h==i){if(T.ispage)return T;var n=T.win.offset();if(T.lastposition){var l=T.lastposition;if(l.top==n.top&&l.left==n.left)return T}T.lastposition=n}return 0===T.page.maxh?(T.hideRail(),T.scrollvaluemax=0,T.scroll.y=0,T.scrollratio.y=0,T.cursorheight=0,T.setScrollTop(0),T.rail&&(T.rail.scrollable=!1)):(T.page.maxh-=M.railpadding.top+M.railpadding.bottom,T.rail.scrollable=!0),0===T.page.maxw?(T.hideRailHr(),T.scrollvaluemaxw=0,T.scroll.x=0,T.scrollratio.x=0,T.cursorwidth=0,T.setScrollLeft(0),T.railh&&(T.railh.scrollable=!1)):(T.page.maxw-=M.railpadding.left+M.railpadding.right,T.railh&&(T.railh.scrollable=M.horizrailenabled)),T.railslocked=T.locked||0===T.page.maxh&&0===T.page.maxw,T.railslocked?(T.ispage||T.updateScrollBar(T.view),!1):(T.hidden||(T.rail.visibility||T.showRail(),T.railh&&!T.railh.visibility&&T.showRailHr()),T.istextarea&&T.win.css("resize")&&"none"!=T.win.css("resize")&&(T.view.h-=20),T.cursorheight=Math.min(T.view.h,Math.round(T.view.h*(T.view.h/T.page.h))),T.cursorheight=M.cursorfixedheight?M.cursorfixedheight:Math.max(M.cursorminheight,T.cursorheight),T.cursorwidth=Math.min(T.view.w,Math.round(T.view.w*(T.view.w/T.page.w))),T.cursorwidth=M.cursorfixedheight?M.cursorfixedheight:Math.max(M.cursorminheight,T.cursorwidth),T.scrollvaluemax=T.view.h-T.cursorheight-(M.railpadding.top+M.railpadding.bottom),T.hasborderbox||(T.scrollvaluemax-=T.cursor[0].offsetHeight-T.cursor[0].clientHeight),T.railh&&(T.railh.width=T.page.maxh>0?T.view.w-T.rail.width:T.view.w,T.scrollvaluemaxw=T.railh.width-T.cursorwidth-(M.railpadding.left+M.railpadding.right)),T.ispage||T.updateScrollBar(T.view),T.scrollratio={x:T.page.maxw/T.scrollvaluemaxw,y:T.page.maxh/T.scrollvaluemax},T.getScrollTop()>T.page.maxh?T.doScrollTop(T.page.maxh):(T.scroll.y=T.getScrollTop()/T.scrollratio.y|0,T.scroll.x=T.getScrollLeft()/T.scrollratio.x|0,T.cursoractive&&T.noticeCursor()),T.scroll.y&&0===T.getScrollTop()&&T.doScrollTo(T.scroll.y*T.scrollratio.y|0),T)},this.resize=T.onResize;var O=0;this.onscreenresize=function(e){clearTimeout(O);var o=!T.ispage&&!T.haswrapper;o&&T.hideRails(),O=setTimeout(function(){T&&(o&&T.showRails(),T.resize()),O=0},120)},this.lazyResize=function(e){return clearTimeout(O),e=isNaN(e)?240:e,O=setTimeout(function(){T&&T.resize(),O=0},e),T},this.jqbind=function(e,o,t){T.events.push({e:e,n:o,f:t,q:!0}),n(e).on(o,t)},this.mousewheel=function(e,o,t){var r="jquery"in e?e[0]:e;if("onwheel"in l.createElement("div"))T._bind(r,"wheel",o,t||!1);else{var i=void 0!==l.onmousewheel?"mousewheel":"DOMMouseScroll";S(r,i,o,t||!1),"DOMMouseScroll"==i&&S(r,"MozMousePixelScroll",o,t||!1)}};var Y=!1;if(P.haseventlistener){try{var H=Object.defineProperty({},"passive",{get:function(){Y=!0}});a.addEventListener("test",null,H)}catch(e){}this.stopPropagation=function(e){return!!e&&((e=e.original?e.original:e).stopPropagation(),!1)},this.cancelEvent=function(e){return e.cancelable&&e.preventDefault(),e.stopImmediatePropagation(),e.preventManipulation&&e.preventManipulation(),!1}}else Event.prototype.preventDefault=function(){this.returnValue=!1},Event.prototype.stopPropagation=function(){this.cancelBubble=!0},a.constructor.prototype.addEventListener=l.constructor.prototype.addEventListener=Element.prototype.addEventListener=function(e,o,t){this.attachEvent("on"+e,o)},a.constructor.prototype.removeEventListener=l.constructor.prototype.removeEventListener=Element.prototype.removeEventListener=function(e,o,t){this.detachEvent("on"+e,o)},this.cancelEvent=function(e){return(e=e||a.event)&&(e.cancelBubble=!0,e.cancel=!0,e.returnValue=!1),!1},this.stopPropagation=function(e){return(e=e||a.event)&&(e.cancelBubble=!0),!1};this.delegate=function(e,o,t,r,i){var s=d[o]||!1;s||(s={a:[],l:[],f:function(e){for(var o=s.l,t=!1,r=o.length-1;r>=0;r--)if(!1===(t=o[r].call(e.target,e)))return!1;return t}},T.bind(e,o,s.f,r,i),d[o]=s),T.ispage?(s.a=[T.id].concat(s.a),s.l=[t].concat(s.l)):(s.a.push(T.id),s.l.push(t))},this.undelegate=function(e,o,t,r,i){var s=d[o]||!1;if(s&&s.l)for(var n=0,l=s.l.length;n<l;n++)s.a[n]===T.id&&(s.a.splice(n),s.l.splice(n),0===s.a.length&&(T._unbind(e,o,s.l.f),d[o]=null))},this.bind=function(e,o,t,r,i){var s="jquery"in e?e[0]:e;T._bind(s,o,t,r||!1,i||!1)},this._bind=function(e,o,t,r,i){T.events.push({e:e,n:o,f:t,b:r,q:!1}),Y&&i?e.addEventListener(o,t,{passive:!1,capture:r}):e.addEventListener(o,t,r||!1)},this._unbind=function(e,o,t,r){d[o]?T.undelegate(e,o,t,r):e.removeEventListener(o,t,r)},this.unbindAll=function(){for(var e=0;e<T.events.length;e++){var o=T.events[e];o.q?o.e.unbind(o.n,o.f):T._unbind(o.e,o.n,o.f,o.b)}},this.showRails=function(){return T.showRail().showRailHr()},this.showRail=function(){return 0===T.page.maxh||!T.ispage&&"none"==T.win.css("display")||(T.rail.visibility=!0,T.rail.css("display","block")),T},this.showRailHr=function(){return T.railh&&(0===T.page.maxw||!T.ispage&&"none"==T.win.css("display")||(T.railh.visibility=!0,T.railh.css("display","block"))),T},this.hideRails=function(){return T.hideRail().hideRailHr()},this.hideRail=function(){return T.rail.visibility=!1,T.rail.css("display","none"),T},this.hideRailHr=function(){return T.railh&&(T.railh.visibility=!1,T.railh.css("display","none")),T},this.show=function(){return T.hidden=!1,T.railslocked=!1,T.showRails()},this.hide=function(){return T.hidden=!0,T.railslocked=!0,T.hideRails()},this.toggle=function(){return T.hidden?T.show():T.hide()},this.remove=function(){T.stop(),T.cursortimeout&&clearTimeout(T.cursortimeout);for(var e in T.delaylist)T.delaylist[e]&&h(T.delaylist[e].h);T.doZoomOut(),T.unbindAll(),P.isie9&&T.win[0].detachEvent("onpropertychange",T.onAttributeChange),!1!==T.observer&&T.observer.disconnect(),!1!==T.observerremover&&T.observerremover.disconnect(),!1!==T.observerbody&&T.observerbody.disconnect(),T.events=null,T.cursor&&T.cursor.remove(),T.cursorh&&T.cursorh.remove(),T.rail&&T.rail.remove(),T.railh&&T.railh.remove(),T.zoom&&T.zoom.remove();for(var o=0;o<T.saved.css.length;o++){var t=T.saved.css[o];t[0].css(t[1],void 0===t[2]?"":t[2])}T.saved=!1,T.me.data("__nicescroll","");var r=n.nicescroll;r.each(function(e){if(this&&this.id===T.id){delete r[e];for(var o=++e;o<r.length;o++,e++)r[e]=r[o];--r.length&&delete r[r.length]}});for(var i in T)T[i]=null,delete T[i];T=null},this.scrollstart=function(e){return this.onscrollstart=e,T},this.scrollend=function(e){return this.onscrollend=e,T},this.scrollcancel=function(e){return this.onscrollcancel=e,T},this.zoomin=function(e){return this.onzoomin=e,T},this.zoomout=function(e){return this.onzoomout=e,T},this.isScrollable=function(e){var o=e.target?e.target:e;if("OPTION"==o.nodeName)return!0;for(;o&&1==o.nodeType&&o!==this.me[0]&&!/^BODY|HTML/.test(o.nodeName);){var t=n(o),r=t.css("overflowY")||t.css("overflowX")||t.css("overflow")||"";if(/scroll|auto/.test(r))return o.clientHeight!=o.scrollHeight;o=!!o.parentNode&&o.parentNode}return!1},this.getViewport=function(e){for(var o=!(!e||!e.parentNode)&&e.parentNode;o&&1==o.nodeType&&!/^BODY|HTML/.test(o.nodeName);){var t=n(o);if(/fixed|absolute/.test(t.css("position")))return t;var r=t.css("overflowY")||t.css("overflowX")||t.css("overflow")||"";if(/scroll|auto/.test(r)&&o.clientHeight!=o.scrollHeight)return t;if(t.getNiceScroll().length>0)return t;o=!!o.parentNode&&o.parentNode}return!1},this.triggerScrollStart=function(e,o,t,r,i){if(T.onscrollstart){var s={type:"scrollstart",current:{x:e,y:o},request:{x:t,y:r},end:{x:T.newscrollx,y:T.newscrolly},speed:i};T.onscrollstart.call(T,s)}},this.triggerScrollEnd=function(){if(T.onscrollend){var e=T.getScrollLeft(),o=T.getScrollTop(),t={type:"scrollend",current:{x:e,y:o},end:{x:e,y:o}};T.onscrollend.call(T,t)}};var B=0,X=0,D=0,A=1,q=!1;if(this.onmousewheel=function(e){if(T.wheelprevented||T.locked)return!1;if(T.railslocked)return T.debounced("checkunlock",T.resize,250),!1;if(T.rail.drag)return T.cancelEvent(e);if("auto"===M.oneaxismousemode&&0!==e.deltaX&&(M.oneaxismousemode=!1),M.oneaxismousemode&&0===e.deltaX&&!T.rail.scrollable)return!T.railh||!T.railh.scrollable||T.onmousewheelhr(e);var o=f(),t=!1;if(M.preservenativescrolling&&T.checkarea+600<o&&(T.nativescrollingarea=T.isScrollable(e),t=!0),T.checkarea=o,T.nativescrollingarea)return!0;var r=k(e,!1,t);return r&&(T.checkarea=0),r},this.onmousewheelhr=function(e){if(!T.wheelprevented){if(T.railslocked||!T.railh.scrollable)return!0;if(T.rail.drag)return T.cancelEvent(e);var o=f(),t=!1;return M.preservenativescrolling&&T.checkarea+600<o&&(T.nativescrollingarea=T.isScrollable(e),t=!0),T.checkarea=o,!!T.nativescrollingarea||(T.railslocked?T.cancelEvent(e):k(e,!0,t))}},this.stop=function(){return T.cancelScroll(),T.scrollmon&&T.scrollmon.stop(),T.cursorfreezed=!1,T.scroll.y=Math.round(T.getScrollTop()*(1/T.scrollratio.y)),T.noticeCursor(),T},this.getTransitionSpeed=function(e){return 80+e/72*M.scrollspeed|0},M.smoothscroll)if(T.ishwscroll&&P.hastransition&&M.usetransition&&M.smoothscroll){var j="";this.resetTransition=function(){j="",T.doc.css(P.prefixstyle+"transition-duration","0ms")},this.prepareTransition=function(e,o){var t=o?e:T.getTransitionSpeed(e),r=t+"ms";return j!==r&&(j=r,T.doc.css(P.prefixstyle+"transition-duration",r)),t},this.doScrollLeft=function(e,o){var t=T.scrollrunning?T.newscrolly:T.getScrollTop();T.doScrollPos(e,t,o)},this.doScrollTop=function(e,o){var t=T.scrollrunning?T.newscrollx:T.getScrollLeft();T.doScrollPos(t,e,o)},this.cursorupdate={running:!1,start:function(){var e=this;if(!e.running){e.running=!0;var o=function(){e.running&&u(o),T.showCursor(T.getScrollTop(),T.getScrollLeft()),T.notifyScrollEvent(T.win[0])};u(o)}},stop:function(){this.running=!1}},this.doScrollPos=function(e,o,t){var r=T.getScrollTop(),i=T.getScrollLeft();if(((T.newscrolly-r)*(o-r)<0||(T.newscrollx-i)*(e-i)<0)&&T.cancelScroll(),M.bouncescroll?(o<0?o=o/2|0:o>T.page.maxh&&(o=T.page.maxh+(o-T.page.maxh)/2|0),e<0?e=e/2|0:e>T.page.maxw&&(e=T.page.maxw+(e-T.page.maxw)/2|0)):(o<0?o=0:o>T.page.maxh&&(o=T.page.maxh),e<0?e=0:e>T.page.maxw&&(e=T.page.maxw)),T.scrollrunning&&e==T.newscrollx&&o==T.newscrolly)return!1;T.newscrolly=o,T.newscrollx=e;var s=T.getScrollTop(),n=T.getScrollLeft(),l={};l.x=e-n,l.y=o-s;var a=0|Math.sqrt(l.x*l.x+l.y*l.y),c=T.prepareTransition(a);T.scrollrunning||(T.scrollrunning=!0,T.triggerScrollStart(n,s,e,o,c),T.cursorupdate.start()),T.scrollendtrapped=!0,P.transitionend||(T.scrollendtrapped&&clearTimeout(T.scrollendtrapped),T.scrollendtrapped=setTimeout(T.onScrollTransitionEnd,c)),T.setScrollTop(T.newscrolly),T.setScrollLeft(T.newscrollx)},this.cancelScroll=function(){if(!T.scrollendtrapped)return!0;var e=T.getScrollTop(),o=T.getScrollLeft();return T.scrollrunning=!1,P.transitionend||clearTimeout(P.transitionend),T.scrollendtrapped=!1,T.resetTransition(),T.setScrollTop(e),T.railh&&T.setScrollLeft(o),T.timerscroll&&T.timerscroll.tm&&clearInterval(T.timerscroll.tm),T.timerscroll=!1,T.cursorfreezed=!1,T.cursorupdate.stop(),T.showCursor(e,o),T},this.onScrollTransitionEnd=function(){if(T.scrollendtrapped){var e=T.getScrollTop(),o=T.getScrollLeft();if(e<0?e=0:e>T.page.maxh&&(e=T.page.maxh),o<0?o=0:o>T.page.maxw&&(o=T.page.maxw),e!=T.newscrolly||o!=T.newscrollx)return T.doScrollPos(o,e,M.snapbackspeed);T.scrollrunning&&T.triggerScrollEnd(),T.scrollrunning=!1,T.scrollendtrapped=!1,T.resetTransition(),T.timerscroll=!1,T.setScrollTop(e),T.railh&&T.setScrollLeft(o),T.cursorupdate.stop(),T.noticeCursor(!1,e,o),T.cursorfreezed=!1}}}else this.doScrollLeft=function(e,o){var t=T.scrollrunning?T.newscrolly:T.getScrollTop();T.doScrollPos(e,t,o)},this.doScrollTop=function(e,o){var t=T.scrollrunning?T.newscrollx:T.getScrollLeft();T.doScrollPos(t,e,o)},this.doScrollPos=function(e,o,t){var r=T.getScrollTop(),i=T.getScrollLeft();((T.newscrolly-r)*(o-r)<0||(T.newscrollx-i)*(e-i)<0)&&T.cancelScroll();var s=!1;if(T.bouncescroll&&T.rail.visibility||(o<0?(o=0,s=!0):o>T.page.maxh&&(o=T.page.maxh,s=!0)),T.bouncescroll&&T.railh.visibility||(e<0?(e=0,s=!0):e>T.page.maxw&&(e=T.page.maxw,s=!0)),T.scrollrunning&&T.newscrolly===o&&T.newscrollx===e)return!0;T.newscrolly=o,T.newscrollx=e,T.dst={},T.dst.x=e-i,T.dst.y=o-r,T.dst.px=i,T.dst.py=r;var n=0|Math.sqrt(T.dst.x*T.dst.x+T.dst.y*T.dst.y),l=T.getTransitionSpeed(n);T.bzscroll={};var a=s?1:.58;T.bzscroll.x=new R(i,T.newscrollx,l,0,0,a,1),T.bzscroll.y=new R(r,T.newscrolly,l,0,0,a,1);f();var c=function(){if(T.scrollrunning){var e=T.bzscroll.y.getPos();T.setScrollLeft(T.bzscroll.x.getNow()),T.setScrollTop(T.bzscroll.y.getNow()),e<=1?T.timer=u(c):(T.scrollrunning=!1,T.timer=0,T.triggerScrollEnd())}};T.scrollrunning||(T.triggerScrollStart(i,r,e,o,l),T.scrollrunning=!0,T.timer=u(c))},this.cancelScroll=function(){return T.timer&&h(T.timer),T.timer=0,T.bzscroll=!1,T.scrollrunning=!1,T};else this.doScrollLeft=function(e,o){var t=T.getScrollTop();T.doScrollPos(e,t,o)},this.doScrollTop=function(e,o){var t=T.getScrollLeft();T.doScrollPos(t,e,o)},this.doScrollPos=function(e,o,t){var r=e>T.page.maxw?T.page.maxw:e;r<0&&(r=0);var i=o>T.page.maxh?T.page.maxh:o;i<0&&(i=0),T.synched("scroll",function(){T.setScrollTop(i),T.setScrollLeft(r)})},this.cancelScroll=function(){};this.doScrollBy=function(e,o){z(0,e)},this.doScrollLeftBy=function(e,o){z(e,0)},this.doScrollTo=function(e,o){var t=o?Math.round(e*T.scrollratio.y):e;t<0?t=0:t>T.page.maxh&&(t=T.page.maxh),T.cursorfreezed=!1,T.doScrollTop(e)},this.checkContentSize=function(){var e=T.getContentSize();e.h==T.page.h&&e.w==T.page.w||T.resize(!1,e)},T.onscroll=function(e){T.rail.drag||T.cursorfreezed||T.synched("scroll",function(){T.scroll.y=Math.round(T.getScrollTop()/T.scrollratio.y),T.railh&&(T.scroll.x=Math.round(T.getScrollLeft()/T.scrollratio.x)),T.noticeCursor()})},T.bind(T.docscroll,"scroll",T.onscroll),this.doZoomIn=function(e){if(!T.zoomactive){T.zoomactive=!0,T.zoomrestore={style:{}};var o=["position","top","left","zIndex","backgroundColor","marginTop","marginBottom","marginLeft","marginRight"],t=T.win[0].style;for(var r in o){var i=o[r];T.zoomrestore.style[i]=void 0!==t[i]?t[i]:""}T.zoomrestore.style.width=T.win.css("width"),T.zoomrestore.style.height=T.win.css("height"),T.zoomrestore.padding={w:T.win.outerWidth()-T.win.width(),h:T.win.outerHeight()-T.win.height()},P.isios4&&(T.zoomrestore.scrollTop=c.scrollTop(),c.scrollTop(0)),T.win.css({position:P.isios4?"absolute":"fixed",top:0,left:0,zIndex:s+100,margin:0});var n=T.win.css("backgroundColor");return(""===n||/transparent|rgba\(0, 0, 0, 0\)|rgba\(0,0,0,0\)/.test(n))&&T.win.css("backgroundColor","#fff"),T.rail.css({zIndex:s+101}),T.zoom.css({zIndex:s+102}),T.zoom.css("backgroundPosition","0 -18px"),T.resizeZoom(),T.onzoomin&&T.onzoomin.call(T),T.cancelEvent(e)}},this.doZoomOut=function(e){if(T.zoomactive)return T.zoomactive=!1,T.win.css("margin",""),T.win.css(T.zoomrestore.style),P.isios4&&c.scrollTop(T.zoomrestore.scrollTop),T.rail.css({"z-index":T.zindex}),T.zoom.css({"z-index":T.zindex}),T.zoomrestore=!1,T.zoom.css("backgroundPosition","0 0"),T.onResize(),T.onzoomout&&T.onzoomout.call(T),T.cancelEvent(e)},this.doZoom=function(e){return T.zoomactive?T.doZoomOut(e):T.doZoomIn(e)},this.resizeZoom=function(){if(T.zoomactive){var e=T.getScrollTop();T.win.css({width:c.width()-T.zoomrestore.padding.w+"px",height:c.height()-T.zoomrestore.padding.h+"px"}),T.onResize(),T.setScrollTop(Math.min(T.page.maxh,e))}},this.init(),n.nicescroll.push(this)},y=function(e){var o=this;this.nc=e,this.lastx=0,this.lasty=0,this.speedx=0,this.speedy=0,this.lasttime=0,this.steptime=0,this.snapx=!1,this.snapy=!1,this.demulx=0,this.demuly=0,this.lastscrollx=-1,this.lastscrolly=-1,this.chkx=0,this.chky=0,this.timer=0,this.reset=function(e,t){o.stop(),o.steptime=0,o.lasttime=f(),o.speedx=0,o.speedy=0,o.lastx=e,o.lasty=t,o.lastscrollx=-1,o.lastscrolly=-1},this.update=function(e,t){var r=f();o.steptime=r-o.lasttime,o.lasttime=r;var i=t-o.lasty,s=e-o.lastx,n=o.nc.getScrollTop()+i,l=o.nc.getScrollLeft()+s;o.snapx=l<0||l>o.nc.page.maxw,o.snapy=n<0||n>o.nc.page.maxh,o.speedx=s,o.speedy=i,o.lastx=e,o.lasty=t},this.stop=function(){o.nc.unsynched("domomentum2d"),o.timer&&clearTimeout(o.timer),o.timer=0,o.lastscrollx=-1,o.lastscrolly=-1},this.doSnapy=function(e,t){var r=!1;t<0?(t=0,r=!0):t>o.nc.page.maxh&&(t=o.nc.page.maxh,r=!0),e<0?(e=0,r=!0):e>o.nc.page.maxw&&(e=o.nc.page.maxw,r=!0),r?o.nc.doScrollPos(e,t,o.nc.opt.snapbackspeed):o.nc.triggerScrollEnd()},this.doMomentum=function(e){var t=f(),r=e?t+e:o.lasttime,i=o.nc.getScrollLeft(),s=o.nc.getScrollTop(),n=o.nc.page.maxh,l=o.nc.page.maxw;o.speedx=l>0?Math.min(60,o.speedx):0,o.speedy=n>0?Math.min(60,o.speedy):0;var a=r&&t-r<=60;(s<0||s>n||i<0||i>l)&&(a=!1);var c=!(!o.speedy||!a)&&o.speedy,d=!(!o.speedx||!a)&&o.speedx;if(c||d){var u=Math.max(16,o.steptime);if(u>50){var h=u/50;o.speedx*=h,o.speedy*=h,u=50}o.demulxy=0,o.lastscrollx=o.nc.getScrollLeft(),o.chkx=o.lastscrollx,o.lastscrolly=o.nc.getScrollTop(),o.chky=o.lastscrolly;var p=o.lastscrollx,m=o.lastscrolly,g=function(){var e=f()-t>600?.04:.02;o.speedx&&(p=Math.floor(o.lastscrollx-o.speedx*(1-o.demulxy)),o.lastscrollx=p,(p<0||p>l)&&(e=.1)),o.speedy&&(m=Math.floor(o.lastscrolly-o.speedy*(1-o.demulxy)),o.lastscrolly=m,(m<0||m>n)&&(e=.1)),o.demulxy=Math.min(1,o.demulxy+e),o.nc.synched("domomentum2d",function(){if(o.speedx){o.nc.getScrollLeft();o.chkx=p,o.nc.setScrollLeft(p)}if(o.speedy){o.nc.getScrollTop();o.chky=m,o.nc.setScrollTop(m)}o.timer||(o.nc.hideCursor(),o.doSnapy(p,m))}),o.demulxy<1?o.timer=setTimeout(g,u):(o.stop(),o.nc.hideCursor(),o.doSnapy(p,m))};g()}else o.doSnapy(o.nc.getScrollLeft(),o.nc.getScrollTop())}},x=e.fn.scrollTop;e.cssHooks.pageYOffset={get:function(e,o,t){var r=n.data(e,"__nicescroll")||!1;return r&&r.ishwscroll?r.getScrollTop():x.call(e)},set:function(e,o){var t=n.data(e,"__nicescroll")||!1;return t&&t.ishwscroll?t.setScrollTop(parseInt(o)):x.call(e,o),this}},e.fn.scrollTop=function(e){if(void 0===e){var o=!!this[0]&&(n.data(this[0],"__nicescroll")||!1);return o&&o.ishwscroll?o.getScrollTop():x.call(this)}return this.each(function(){var o=n.data(this,"__nicescroll")||!1;o&&o.ishwscroll?o.setScrollTop(parseInt(e)):x.call(n(this),e)})};var S=e.fn.scrollLeft;n.cssHooks.pageXOffset={get:function(e,o,t){var r=n.data(e,"__nicescroll")||!1;return r&&r.ishwscroll?r.getScrollLeft():S.call(e)},set:function(e,o){var t=n.data(e,"__nicescroll")||!1;return t&&t.ishwscroll?t.setScrollLeft(parseInt(o)):S.call(e,o),this}},e.fn.scrollLeft=function(e){if(void 0===e){var o=!!this[0]&&(n.data(this[0],"__nicescroll")||!1);return o&&o.ishwscroll?o.getScrollLeft():S.call(this)}return this.each(function(){var o=n.data(this,"__nicescroll")||!1;o&&o.ishwscroll?o.setScrollLeft(parseInt(e)):S.call(n(this),e)})};var z=function(e){var o=this;if(this.length=0,this.name="nicescrollarray",this.each=function(e){return n.each(o,e),o},this.push=function(e){o[o.length]=e,o.length++},this.eq=function(e){return o[e]},e)for(var t=0;t<e.length;t++){var r=n.data(e[t],"__nicescroll")||!1;r&&(this[this.length]=r,this.length++)}return this};!function(e,o,t){for(var r=0,i=o.length;r<i;r++)t(e,o[r])}(z.prototype,["show","hide","toggle","onResize","resize","remove","stop","doScrollPos"],function(e,o){e[o]=function(){var e=arguments;return this.each(function(){this[o].apply(this,e)})}}),e.fn.getNiceScroll=function(e){return void 0===e?new z(this):this[e]&&n.data(this[e],"__nicescroll")||!1},(e.expr.pseudos||e.expr[":"]).nicescroll=function(e){return void 0!==n.data(e,"__nicescroll")},n.fn.niceScroll=function(e,o){void 0!==o||"object"!=typeof e||"jquery"in e||(o=e,e=!1);var t=new z;return this.each(function(){var r=n(this),i=n.extend({},o);if(e){var s=n(e);i.doc=s.length>1?n(e,r):s,i.win=r}!("doc"in i)||"win"in i||(i.win=r);var l=r.data("__nicescroll")||!1;l||(i.doc=i.doc||r,l=new b(i,r),r.data("__nicescroll",l)),t.push(l)}),1===t.length?t[0]:t},a.NiceScroll={getjQuery:function(){return e}},n.nicescroll||(n.nicescroll=new z,n.nicescroll.options=g)});
\ No newline at end of file
diff --git a/map/lib/js.cookie.min.js b/map/lib/js.cookie.min.js
deleted file mode 100644
index 8d6b9a8..0000000
--- a/map/lib/js.cookie.min.js
+++ /dev/null
@@ -1,8 +0,0 @@
-/**
- * Minified by jsDelivr using Terser v3.14.1.
- * Original file: /npm/js-cookie@2.2.1/src/js.cookie.js
- * 
- * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
- */
-!function(e){var n;if("function"==typeof define&&define.amd&&(define(e),n=!0),"object"==typeof exports&&(module.exports=e(),n=!0),!n){var t=window.Cookies,o=window.Cookies=e();o.noConflict=function(){return window.Cookies=t,o}}}(function(){function e(){for(var e=0,n={};e<arguments.length;e++){var t=arguments[e];for(var o in t)n[o]=t[o]}return n}function n(e){return e.replace(/(%[0-9A-Z]{2})+/g,decodeURIComponent)}return function t(o){function r(){}function i(n,t,i){if("undefined"!=typeof document){"number"==typeof(i=e({path:"/"},r.defaults,i)).expires&&(i.expires=new Date(1*new Date+864e5*i.expires)),i.expires=i.expires?i.expires.toUTCString():"";try{var c=JSON.stringify(t);/^[\{\[]/.test(c)&&(t=c)}catch(e){}t=o.write?o.write(t,n):encodeURIComponent(String(t)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g,decodeURIComponent),n=encodeURIComponent(String(n)).replace(/%(23|24|26|2B|5E|60|7C)/g,decodeURIComponent).replace(/[\(\)]/g,escape);var f="";for(var u in i)i[u]&&(f+="; "+u,!0!==i[u]&&(f+="="+i[u].split(";")[0]));return document.cookie=n+"="+t+f}}function c(e,t){if("undefined"!=typeof document){for(var r={},i=document.cookie?document.cookie.split("; "):[],c=0;c<i.length;c++){var f=i[c].split("="),u=f.slice(1).join("=");t||'"'!==u.charAt(0)||(u=u.slice(1,-1));try{var a=n(f[0]);if(u=(o.read||o)(u,a)||n(u),t)try{u=JSON.parse(u)}catch(e){}if(r[a]=u,e===a)break}catch(e){}}return e?r[e]:r}}return r.set=i,r.get=function(e){return c(e,!1)},r.getJSON=function(e){return c(e,!0)},r.remove=function(n,t){i(n,"",e(t,{expires:-1}))},r.defaults={},r.withConverter=t,r}(function(){})});
-//# sourceMappingURL=/sm/b0ce608ffc029736e9ac80a8dd6a7db2da8e1d45d2dcfc92043deb2214aa30d8.map
\ No newline at end of file
diff --git a/map/lib/wxStorage.js b/map/lib/wxStorage.js
deleted file mode 100644
index e2a8c38..0000000
--- a/map/lib/wxStorage.js
+++ /dev/null
@@ -1,27 +0,0 @@
-const _getStorage = (key)=>{
-  return wx.getStorageSync( key );
-}
- 
-// 设置本地存储对应key
-const _setStorage = (key,value)=>{
-  return wx.setStorageSync( key,value );
-}
- 
-// 清除全部本地存储
-const _clearStorage = ()=>{
-  wx.clearStorageSync();
-}
- 
-// 清除指定key本地存储
-const _removeStorage = ( key )=>{
-  wx.removeStorageSync( key );
-}
- 
-const WxStorage = {
-	get : _getStorage,
-	set : _setStorage,
-	clear : _clearStorage,
-	remov : _removeStorage,
-}
-
-export default WxStorage
\ No newline at end of file
diff --git a/mapWz/css/body.css b/mapWz/css/body.css
deleted file mode 100644
index 2e98777..0000000
--- a/mapWz/css/body.css
+++ /dev/null
@@ -1,315 +0,0 @@
-page {
-    width: 100%;
-    height: 100%;
-    background-color: rgb(138, 138, 138, 0.1);
-}
-
-body {
-    padding: 0;
-    margin: 0;
-}
-
-html,
-body,
-#mapVue {.dingwei
-    width: 100%;
-    height: 100%;
-}
-
-#map {
-    width: 100%;
-    height: 100%;
-    z-index: 1;
-}
-
-#mapVue {
-    overflow: hidden;
-    /* border: solid 1px springgreen; */
-}
-
-.dingwei {
-    position: fixed;
-    width: 34px;
-    height: 34px;
-    right: 10px;
-    bottom: 10px;
-    z-index: 100;
-    background-color: #fff;
-    border-radius: 20px;
-    opacity: 0.8;
-    border: 1px solid gray;
-    display: flex;
-    align-items: center;
-    justify-content: center;
-}
-
-#seedata {
-    bottom: 0;
-    width: 100%;
-    height: 50%;
-    z-index: 400;
-    background-color: #fff;
-    display: flex;
-    flex-direction: column;
-    border-radius: 60px 60px 0 0;
-}
-
-.title {
-    width: 100%;
-    height: 70px;
-    border-radius: 30px 30px 0 0;
-    position: absolute;
-    bottom: 0;
-    background-color: #fff;
-    z-index: 999;
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    flex-direction: column;
-}
-
-.device-name {
-    letter-spacing: 2px;
-    font-size: 15px;
-}
-
-.device-number {
-    margin-top: 5px;
-    letter-spacing: 0.5px;
-    color: #808080;
-    font-size: 13px;
-}
-
-.main {
-    width: 100%;
-    height: 100%;
-    margin: 0 auto;
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    flex-direction: column;
-    border-top: 1px solid rgb(138, 138, 138);
-}
-
-.div-alarm-people {
-    width: 96%;
-    height: 25%;
-    margin-left: 2%;
-    /* height: 80px; */
-}
-
-.div-alarm-people .f-m-once {
-    border-bottom: 1px solid rgb(243, 243, 243);
-    align-items: center;
-    width: 100%;
-    height: 50%;
-    display: flex;
-    margin: auto;
-}
-
-.div-alarm-people .f-m-o-t-img {
-    width: 20px;
-    height: 20px;
-    float: left;
-}
-
-.div-alarm-people .f-m-o-title {
-    font-size: 14px;
-    margin-left: 10px;
-    float: left;
-}
-
-.div-alarm-people .f-m-once-phone-number {
-    /* border-bottom: 1px solid rgb(128, 128, 128, 0.1); */
-    align-items: center;
-    width: 100%;
-    height: 50%;
-    display: flex;
-    margin: auto;
-}
-
-.div-alarm-people .f-m-once-alarm-type {
-    /* border-bottom: 1px solid rgb(128, 128, 128, 0.1); */
-    align-items: center;
-    width: 100%;
-    height: 50%;
-    display: flex;
-    margin: auto;
-}
-
-.div-alarm-people .f-m-once-desc {
-    /* border-bottom: 1px solid rgb(128, 128, 128, 0.1); */
-    width: 100%;
-    height: 50% !important;
-    height: 80px;
-    display: flex;
-    align-items: center;
-}
-
-.div-alarm-people .f-m-o-t-img-desc {
-    width: 20px;
-    height: 20px;
-    float: left;
-}
-
-.div-alarm-people .f-m-o-title-desc {
-    display: flex;
-    align-items: center;
-    height: 40px;
-    line-height: 40px;
-    font-size: 14px;
-    margin-left: 10px;
-    float: left;
-}
-
-.div-alarm-people .f-m-o-center {
-    font-size: 14px;
-    position: absolute;
-    left: 135px;
-    color: #808080;
-}
-
-.div-alarm-people .f-m-o-center-desc {
-    width: 200px;
-    word-wrap: break-word;
-    line-height: 1.5;
-    /* height: 60px; */
-    /* background-color: rgb(46, 118, 228); */
-    font-size: 14px;
-    position: absolute;
-    left: 135px;
-    color: #808080;
-}
-
-.interval {
-    width: 100%;
-    height: 2%;
-    background-color: rgb(243, 243, 243);
-}
-
-.but {
-    width: 100%;
-    height: 19%;
-    flex: 1;
-    display: flex;
-    flex-direction: row;
-    align-items: center;
-    justify-content: space-around;
-}
-
-.shipingPopup {
-    position: fixed;
-    top: 0;
-    left: 0;
-    height: 100%;
-    width: 100%;
-    background-color: rgba(0, 0, 0, 0.5);
-    z-index: 200;
-    display: flex;
-    align-items: center;
-    justify-content: center;
-}
-
-.s-p-main {
-    width: 90%;
-    height: 90%;
-    /* background-color: #fff; */
-}
-
-.s-p-gaunbi {
-    position: relative;
-    left: 90%;
-    width: 50px;
-    height: 50px;
-}
-
-
-/* video::-webkit-media-controls-timeline {
-    display: none;
-} */
-
-.butb {
-    width: 200px;
-    height: 40px;
-    /* border: 1px solid rgb(46, 118, 228); */
-    border-radius: 40px;
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    color: #fff;
-    /* background-image: linear-gradient(to bottom, #3CA7F4, #4D7CEE); */
-    background-image: linear-gradient(to bottom, #00BFFF, #4D7CEE);
-}
-
-
-/* .resultFeedback {
-    position: fixed;
-    top: 0;
-    left: 0;
-    height: 100%;
-    width: 100%;
-    background-color: rgba(0, 0, 0, 0.5);
-    z-index: 201;
-    display: flex;
-    align-items: center;
-    justify-content: center;
-} */
-
-
-/* .b-r-main {
-    width: 90%;
-    height: 90%;
-}
-
-.b-r-gaunbi {
-    position: relative;
-    left: 90%;
-    width: 50px;
-    height: 50px;
-}
-
-.b-r-main-in {
-    width: 100%;
-    height: auto;
-    padding-bottom: 20px;
-    background-color: #fff;
-    border-radius: 10px;
-}
-
-.b-r-m-i-once {
-    padding: 10px 0 10px 10px;
-    display: flex;
-    justify-content: space-around;
-}
-
-.b-r-m-i-o-title {
-    width: 30%;
-    position: relative;
-    top: 10px;
-}
-
-.b-r-m-i-o-center {
-    width: 70%;
-}
-.b-r-i-o-ups{
-    /* align-items: center; */
-
-
-}
-.b-r-m-i-o-c-img {
-    width: 50px;
-    height: 50px;
-}
-.b-r-m-but {
-    position: relative;
-    left: calc(50% - 40px);
-}
-*/ .butc {
-    /* border: 1px solid #4D7CEE; */
-}
-.b-b-img {
-    width: 40px;
-    height: 40px;
-    display: block;
-    /* border: 1px solid #4D7CEE; */
-}
\ No newline at end of file
diff --git a/mapWz/css/elementUI.css b/mapWz/css/elementUI.css
deleted file mode 100644
index f3a3ab7..0000000
--- a/mapWz/css/elementUI.css
+++ /dev/null
@@ -1 +0,0 @@
-@charset "UTF-8";.el-pagination--small .arrow.disabled,.el-table .hidden-columns,.el-table td.is-hidden>*,.el-table th.is-hidden>*,.el-table--hidden{visibility:hidden}.el-input__suffix,.el-tree.is-dragging .el-tree-node__content *{pointer-events:none}.el-dropdown .el-dropdown-selfdefine:focus:active,.el-dropdown .el-dropdown-selfdefine:focus:not(.focusing),.el-message__closeBtn:focus,.el-message__content:focus,.el-popover:focus,.el-popover:focus:active,.el-popover__reference:focus:hover,.el-popover__reference:focus:not(.focusing),.el-rate:active,.el-rate:focus,.el-tooltip:focus:hover,.el-tooltip:focus:not(.focusing),.el-upload-list__item.is-success:active,.el-upload-list__item.is-success:not(.focusing):focus{outline-width:0}@font-face{font-family:element-icons;src:url(fonts/element-icons.woff) format("woff"),url(fonts/element-icons.ttf) format("truetype");font-weight:400;font-display:"auto";font-style:normal}[class*=" el-icon-"],[class^=el-icon-]{font-family:element-icons!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;vertical-align:baseline;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-icon-ice-cream-round:before{content:"\e6a0"}.el-icon-ice-cream-square:before{content:"\e6a3"}.el-icon-lollipop:before{content:"\e6a4"}.el-icon-potato-strips:before{content:"\e6a5"}.el-icon-milk-tea:before{content:"\e6a6"}.el-icon-ice-drink:before{content:"\e6a7"}.el-icon-ice-tea:before{content:"\e6a9"}.el-icon-coffee:before{content:"\e6aa"}.el-icon-orange:before{content:"\e6ab"}.el-icon-pear:before{content:"\e6ac"}.el-icon-apple:before{content:"\e6ad"}.el-icon-cherry:before{content:"\e6ae"}.el-icon-watermelon:before{content:"\e6af"}.el-icon-grape:before{content:"\e6b0"}.el-icon-refrigerator:before{content:"\e6b1"}.el-icon-goblet-square-full:before{content:"\e6b2"}.el-icon-goblet-square:before{content:"\e6b3"}.el-icon-goblet-full:before{content:"\e6b4"}.el-icon-goblet:before{content:"\e6b5"}.el-icon-cold-drink:before{content:"\e6b6"}.el-icon-coffee-cup:before{content:"\e6b8"}.el-icon-water-cup:before{content:"\e6b9"}.el-icon-hot-water:before{content:"\e6ba"}.el-icon-ice-cream:before{content:"\e6bb"}.el-icon-dessert:before{content:"\e6bc"}.el-icon-sugar:before{content:"\e6bd"}.el-icon-tableware:before{content:"\e6be"}.el-icon-burger:before{content:"\e6bf"}.el-icon-knife-fork:before{content:"\e6c1"}.el-icon-fork-spoon:before{content:"\e6c2"}.el-icon-chicken:before{content:"\e6c3"}.el-icon-food:before{content:"\e6c4"}.el-icon-dish-1:before{content:"\e6c5"}.el-icon-dish:before{content:"\e6c6"}.el-icon-moon-night:before{content:"\e6ee"}.el-icon-moon:before{content:"\e6f0"}.el-icon-cloudy-and-sunny:before{content:"\e6f1"}.el-icon-partly-cloudy:before{content:"\e6f2"}.el-icon-cloudy:before{content:"\e6f3"}.el-icon-sunny:before{content:"\e6f6"}.el-icon-sunset:before{content:"\e6f7"}.el-icon-sunrise-1:before{content:"\e6f8"}.el-icon-sunrise:before{content:"\e6f9"}.el-icon-heavy-rain:before{content:"\e6fa"}.el-icon-lightning:before{content:"\e6fb"}.el-icon-light-rain:before{content:"\e6fc"}.el-icon-wind-power:before{content:"\e6fd"}.el-icon-baseball:before{content:"\e712"}.el-icon-soccer:before{content:"\e713"}.el-icon-football:before{content:"\e715"}.el-icon-basketball:before{content:"\e716"}.el-icon-ship:before{content:"\e73f"}.el-icon-truck:before{content:"\e740"}.el-icon-bicycle:before{content:"\e741"}.el-icon-mobile-phone:before{content:"\e6d3"}.el-icon-service:before{content:"\e6d4"}.el-icon-key:before{content:"\e6e2"}.el-icon-unlock:before{content:"\e6e4"}.el-icon-lock:before{content:"\e6e5"}.el-icon-watch:before{content:"\e6fe"}.el-icon-watch-1:before{content:"\e6ff"}.el-icon-timer:before{content:"\e702"}.el-icon-alarm-clock:before{content:"\e703"}.el-icon-map-location:before{content:"\e704"}.el-icon-delete-location:before{content:"\e705"}.el-icon-add-location:before{content:"\e706"}.el-icon-location-information:before{content:"\e707"}.el-icon-location-outline:before{content:"\e708"}.el-icon-location:before{content:"\e79e"}.el-icon-place:before{content:"\e709"}.el-icon-discover:before{content:"\e70a"}.el-icon-first-aid-kit:before{content:"\e70b"}.el-icon-trophy-1:before{content:"\e70c"}.el-icon-trophy:before{content:"\e70d"}.el-icon-medal:before{content:"\e70e"}.el-icon-medal-1:before{content:"\e70f"}.el-icon-stopwatch:before{content:"\e710"}.el-icon-mic:before{content:"\e711"}.el-icon-copy-document:before{content:"\e718"}.el-icon-full-screen:before{content:"\e719"}.el-icon-switch-button:before{content:"\e71b"}.el-icon-aim:before{content:"\e71c"}.el-icon-crop:before{content:"\e71d"}.el-icon-odometer:before{content:"\e71e"}.el-icon-time:before{content:"\e71f"}.el-icon-bangzhu:before{content:"\e724"}.el-icon-close-notification:before{content:"\e726"}.el-icon-microphone:before{content:"\e727"}.el-icon-turn-off-microphone:before{content:"\e728"}.el-icon-position:before{content:"\e729"}.el-icon-postcard:before{content:"\e72a"}.el-icon-message:before{content:"\e72b"}.el-icon-chat-line-square:before{content:"\e72d"}.el-icon-chat-dot-square:before{content:"\e72e"}.el-icon-chat-dot-round:before{content:"\e72f"}.el-icon-chat-square:before{content:"\e730"}.el-icon-chat-line-round:before{content:"\e731"}.el-icon-chat-round:before{content:"\e732"}.el-icon-set-up:before{content:"\e733"}.el-icon-turn-off:before{content:"\e734"}.el-icon-open:before{content:"\e735"}.el-icon-connection:before{content:"\e736"}.el-icon-link:before{content:"\e737"}.el-icon-cpu:before{content:"\e738"}.el-icon-thumb:before{content:"\e739"}.el-icon-female:before{content:"\e73a"}.el-icon-male:before{content:"\e73b"}.el-icon-guide:before{content:"\e73c"}.el-icon-news:before{content:"\e73e"}.el-icon-price-tag:before{content:"\e744"}.el-icon-discount:before{content:"\e745"}.el-icon-wallet:before{content:"\e747"}.el-icon-coin:before{content:"\e748"}.el-icon-money:before{content:"\e749"}.el-icon-bank-card:before{content:"\e74a"}.el-icon-box:before{content:"\e74b"}.el-icon-present:before{content:"\e74c"}.el-icon-sell:before{content:"\e6d5"}.el-icon-sold-out:before{content:"\e6d6"}.el-icon-shopping-bag-2:before{content:"\e74d"}.el-icon-shopping-bag-1:before{content:"\e74e"}.el-icon-shopping-cart-2:before{content:"\e74f"}.el-icon-shopping-cart-1:before{content:"\e750"}.el-icon-shopping-cart-full:before{content:"\e751"}.el-icon-smoking:before{content:"\e752"}.el-icon-no-smoking:before{content:"\e753"}.el-icon-house:before{content:"\e754"}.el-icon-table-lamp:before{content:"\e755"}.el-icon-school:before{content:"\e756"}.el-icon-office-building:before{content:"\e757"}.el-icon-toilet-paper:before{content:"\e758"}.el-icon-notebook-2:before{content:"\e759"}.el-icon-notebook-1:before{content:"\e75a"}.el-icon-files:before{content:"\e75b"}.el-icon-collection:before{content:"\e75c"}.el-icon-receiving:before{content:"\e75d"}.el-icon-suitcase-1:before{content:"\e760"}.el-icon-suitcase:before{content:"\e761"}.el-icon-film:before{content:"\e763"}.el-icon-collection-tag:before{content:"\e765"}.el-icon-data-analysis:before{content:"\e766"}.el-icon-pie-chart:before{content:"\e767"}.el-icon-data-board:before{content:"\e768"}.el-icon-data-line:before{content:"\e76d"}.el-icon-reading:before{content:"\e769"}.el-icon-magic-stick:before{content:"\e76a"}.el-icon-coordinate:before{content:"\e76b"}.el-icon-mouse:before{content:"\e76c"}.el-icon-brush:before{content:"\e76e"}.el-icon-headset:before{content:"\e76f"}.el-icon-umbrella:before{content:"\e770"}.el-icon-scissors:before{content:"\e771"}.el-icon-mobile:before{content:"\e773"}.el-icon-attract:before{content:"\e774"}.el-icon-monitor:before{content:"\e775"}.el-icon-search:before{content:"\e778"}.el-icon-takeaway-box:before{content:"\e77a"}.el-icon-paperclip:before{content:"\e77d"}.el-icon-printer:before{content:"\e77e"}.el-icon-document-add:before{content:"\e782"}.el-icon-document:before{content:"\e785"}.el-icon-document-checked:before{content:"\e786"}.el-icon-document-copy:before{content:"\e787"}.el-icon-document-delete:before{content:"\e788"}.el-icon-document-remove:before{content:"\e789"}.el-icon-tickets:before{content:"\e78b"}.el-icon-folder-checked:before{content:"\e77f"}.el-icon-folder-delete:before{content:"\e780"}.el-icon-folder-remove:before{content:"\e781"}.el-icon-folder-add:before{content:"\e783"}.el-icon-folder-opened:before{content:"\e784"}.el-icon-folder:before{content:"\e78a"}.el-icon-edit-outline:before{content:"\e764"}.el-icon-edit:before{content:"\e78c"}.el-icon-date:before{content:"\e78e"}.el-icon-c-scale-to-original:before{content:"\e7c6"}.el-icon-view:before{content:"\e6ce"}.el-icon-loading:before{content:"\e6cf"}.el-icon-rank:before{content:"\e6d1"}.el-icon-sort-down:before{content:"\e7c4"}.el-icon-sort-up:before{content:"\e7c5"}.el-icon-sort:before{content:"\e6d2"}.el-icon-finished:before{content:"\e6cd"}.el-icon-refresh-left:before{content:"\e6c7"}.el-icon-refresh-right:before{content:"\e6c8"}.el-icon-refresh:before{content:"\e6d0"}.el-icon-video-play:before{content:"\e7c0"}.el-icon-video-pause:before{content:"\e7c1"}.el-icon-d-arrow-right:before{content:"\e6dc"}.el-icon-d-arrow-left:before{content:"\e6dd"}.el-icon-arrow-up:before{content:"\e6e1"}.el-icon-arrow-down:before{content:"\e6df"}.el-icon-arrow-right:before{content:"\e6e0"}.el-icon-arrow-left:before{content:"\e6de"}.el-icon-top-right:before{content:"\e6e7"}.el-icon-top-left:before{content:"\e6e8"}.el-icon-top:before{content:"\e6e6"}.el-icon-bottom:before{content:"\e6eb"}.el-icon-right:before{content:"\e6e9"}.el-icon-back:before{content:"\e6ea"}.el-icon-bottom-right:before{content:"\e6ec"}.el-icon-bottom-left:before{content:"\e6ed"}.el-icon-caret-top:before{content:"\e78f"}.el-icon-caret-bottom:before{content:"\e790"}.el-icon-caret-right:before{content:"\e791"}.el-icon-caret-left:before{content:"\e792"}.el-icon-d-caret:before{content:"\e79a"}.el-icon-share:before{content:"\e793"}.el-icon-menu:before{content:"\e798"}.el-icon-s-grid:before{content:"\e7a6"}.el-icon-s-check:before{content:"\e7a7"}.el-icon-s-data:before{content:"\e7a8"}.el-icon-s-opportunity:before{content:"\e7aa"}.el-icon-s-custom:before{content:"\e7ab"}.el-icon-s-claim:before{content:"\e7ad"}.el-icon-s-finance:before{content:"\e7ae"}.el-icon-s-comment:before{content:"\e7af"}.el-icon-s-flag:before{content:"\e7b0"}.el-icon-s-marketing:before{content:"\e7b1"}.el-icon-s-shop:before{content:"\e7b4"}.el-icon-s-open:before{content:"\e7b5"}.el-icon-s-management:before{content:"\e7b6"}.el-icon-s-ticket:before{content:"\e7b7"}.el-icon-s-release:before{content:"\e7b8"}.el-icon-s-home:before{content:"\e7b9"}.el-icon-s-promotion:before{content:"\e7ba"}.el-icon-s-operation:before{content:"\e7bb"}.el-icon-s-unfold:before{content:"\e7bc"}.el-icon-s-fold:before{content:"\e7a9"}.el-icon-s-platform:before{content:"\e7bd"}.el-icon-s-order:before{content:"\e7be"}.el-icon-s-cooperation:before{content:"\e7bf"}.el-icon-bell:before{content:"\e725"}.el-icon-message-solid:before{content:"\e799"}.el-icon-video-camera:before{content:"\e772"}.el-icon-video-camera-solid:before{content:"\e796"}.el-icon-camera:before{content:"\e779"}.el-icon-camera-solid:before{content:"\e79b"}.el-icon-download:before{content:"\e77c"}.el-icon-upload2:before{content:"\e77b"}.el-icon-upload:before{content:"\e7c3"}.el-icon-picture-outline-round:before{content:"\e75f"}.el-icon-picture-outline:before{content:"\e75e"}.el-icon-picture:before{content:"\e79f"}.el-icon-close:before{content:"\e6db"}.el-icon-check:before{content:"\e6da"}.el-icon-plus:before{content:"\e6d9"}.el-icon-minus:before{content:"\e6d8"}.el-icon-help:before{content:"\e73d"}.el-icon-s-help:before{content:"\e7b3"}.el-icon-circle-close:before{content:"\e78d"}.el-icon-circle-check:before{content:"\e720"}.el-icon-circle-plus-outline:before{content:"\e723"}.el-icon-remove-outline:before{content:"\e722"}.el-icon-zoom-out:before{content:"\e776"}.el-icon-zoom-in:before{content:"\e777"}.el-icon-error:before{content:"\e79d"}.el-icon-success:before{content:"\e79c"}.el-icon-circle-plus:before{content:"\e7a0"}.el-icon-remove:before{content:"\e7a2"}.el-icon-info:before{content:"\e7a1"}.el-icon-question:before{content:"\e7a4"}.el-icon-warning-outline:before{content:"\e6c9"}.el-icon-warning:before{content:"\e7a3"}.el-icon-goods:before{content:"\e7c2"}.el-icon-s-goods:before{content:"\e7b2"}.el-icon-star-off:before{content:"\e717"}.el-icon-star-on:before{content:"\e797"}.el-icon-more-outline:before{content:"\e6cc"}.el-icon-more:before{content:"\e794"}.el-icon-phone-outline:before{content:"\e6cb"}.el-icon-phone:before{content:"\e795"}.el-icon-user:before{content:"\e6e3"}.el-icon-user-solid:before{content:"\e7a5"}.el-icon-setting:before{content:"\e6ca"}.el-icon-s-tools:before{content:"\e7ac"}.el-icon-delete:before{content:"\e6d7"}.el-icon-delete-solid:before{content:"\e7c9"}.el-icon-eleme:before{content:"\e7c7"}.el-icon-platform-eleme:before{content:"\e7ca"}.el-icon-loading{-webkit-animation:rotating 2s linear infinite;animation:rotating 2s linear infinite}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@-webkit-keyframes rotating{0%{-webkit-transform:rotateZ(0);transform:rotateZ(0)}100%{-webkit-transform:rotateZ(360deg);transform:rotateZ(360deg)}}@keyframes rotating{0%{-webkit-transform:rotateZ(0);transform:rotateZ(0)}100%{-webkit-transform:rotateZ(360deg);transform:rotateZ(360deg)}}.el-pagination{white-space:nowrap;padding:2px 5px;color:#303133;font-weight:700}.el-pagination::after,.el-pagination::before{display:table;content:""}.el-pagination::after{clear:both}.el-pagination button,.el-pagination span:not([class*=suffix]){display:inline-block;font-size:13px;min-width:35.5px;height:28px;line-height:28px;vertical-align:top;-webkit-box-sizing:border-box;box-sizing:border-box}.el-pagination .el-input__inner{text-align:center;-moz-appearance:textfield;line-height:normal}.el-pagination .el-input__suffix{right:0;-webkit-transform:scale(.8);transform:scale(.8)}.el-pagination .el-select .el-input{width:100px;margin:0 5px}.el-pagination .el-select .el-input .el-input__inner{padding-right:25px;border-radius:3px}.el-pagination button{border:none;padding:0 6px;background:0 0}.el-pagination button:focus{outline:0}.el-pagination button:hover{color:#409EFF}.el-pagination button:disabled{color:#C0C4CC;background-color:#FFF;cursor:not-allowed}.el-pagination .btn-next,.el-pagination .btn-prev{background:center center no-repeat #FFF;background-size:16px;cursor:pointer;margin:0;color:#303133}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{display:block;font-size:12px;font-weight:700}.el-pagination .btn-prev{padding-right:12px}.el-pagination .btn-next{padding-left:12px}.el-pagination .el-pager li.disabled{color:#C0C4CC;cursor:not-allowed}.el-pager li,.el-pager li.btn-quicknext:hover,.el-pager li.btn-quickprev:hover{cursor:pointer}.el-pagination--small .btn-next,.el-pagination--small .btn-prev,.el-pagination--small .el-pager li,.el-pagination--small .el-pager li.btn-quicknext,.el-pagination--small .el-pager li.btn-quickprev,.el-pagination--small .el-pager li:last-child{border-color:transparent;font-size:12px;line-height:22px;height:22px;min-width:22px}.el-pagination--small .more::before,.el-pagination--small li.more::before{line-height:24px}.el-pagination--small button,.el-pagination--small span:not([class*=suffix]){height:22px;line-height:22px}.el-pagination--small .el-pagination__editor,.el-pagination--small .el-pagination__editor.el-input .el-input__inner{height:22px}.el-pagination__sizes{margin:0 10px 0 0;font-weight:400;color:#606266}.el-pagination__sizes .el-input .el-input__inner{font-size:13px;padding-left:8px}.el-pagination__sizes .el-input .el-input__inner:hover{border-color:#409EFF}.el-pagination__total{margin-right:10px;font-weight:400;color:#606266}.el-pagination__jump{margin-left:24px;font-weight:400;color:#606266}.el-pagination__jump .el-input__inner{padding:0 3px}.el-pagination__rightwrapper{float:right}.el-pagination__editor{line-height:18px;padding:0 2px;height:28px;text-align:center;margin:0 2px;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:3px}.el-pager,.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev{padding:0}.el-pagination__editor.el-input{width:50px}.el-pagination__editor.el-input .el-input__inner{height:28px}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button,.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev,.el-pagination.is-background .el-pager li{margin:0 5px;background-color:#f4f4f5;color:#606266;min-width:30px;border-radius:2px}.el-pagination.is-background .btn-next.disabled,.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-prev.disabled,.el-pagination.is-background .btn-prev:disabled,.el-pagination.is-background .el-pager li.disabled{color:#C0C4CC}.el-pagination.is-background .el-pager li:not(.disabled):hover{color:#409EFF}.el-pagination.is-background .el-pager li:not(.disabled).active{background-color:#409EFF;color:#FFF}.el-dialog,.el-pager li{background:#FFF;-webkit-box-sizing:border-box}.el-pagination.is-background.el-pagination--small .btn-next,.el-pagination.is-background.el-pagination--small .btn-prev,.el-pagination.is-background.el-pagination--small .el-pager li{margin:0 3px;min-width:22px}.el-pager,.el-pager li{vertical-align:top;margin:0;display:inline-block}.el-pager{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;list-style:none;font-size:0}.el-date-table,.el-table th{-webkit-user-select:none;-moz-user-select:none}.el-pager .more::before{line-height:30px}.el-pager li{padding:0 4px;font-size:13px;min-width:35.5px;height:28px;line-height:28px;box-sizing:border-box;text-align:center}.el-menu--collapse .el-menu .el-submenu,.el-menu--popup{min-width:200px}.el-pager li.btn-quicknext,.el-pager li.btn-quickprev{line-height:28px;color:#303133}.el-pager li.btn-quicknext.disabled,.el-pager li.btn-quickprev.disabled{color:#C0C4CC}.el-pager li.active+li{border-left:0}.el-pager li:hover{color:#409EFF}.el-pager li.active{color:#409EFF;cursor:default}@-webkit-keyframes v-modal-in{0%{opacity:0}}@-webkit-keyframes v-modal-out{100%{opacity:0}}.el-dialog{position:relative;margin:0 auto 50px;border-radius:2px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3);box-sizing:border-box;width:50%}.el-dialog.is-fullscreen{width:100%;margin-top:0;margin-bottom:0;height:100%;overflow:auto}.el-dialog__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto;margin:0}.el-dialog__header{padding:20px 20px 10px}.el-dialog__headerbtn{position:absolute;top:20px;right:20px;padding:0;background:0 0;border:none;outline:0;cursor:pointer;font-size:16px}.el-dialog__headerbtn .el-dialog__close{color:#909399}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:#409EFF}.el-dialog__title{line-height:24px;font-size:18px;color:#303133}.el-dialog__body{padding:30px 20px;color:#606266;font-size:14px;word-break:break-all}.el-dialog__footer{padding:10px 20px 20px;text-align:right;-webkit-box-sizing:border-box;box-sizing:border-box}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial;padding:25px 25px 30px}.el-dialog--center .el-dialog__footer{text-align:inherit}.dialog-fade-enter-active{-webkit-animation:dialog-fade-in .3s;animation:dialog-fade-in .3s}.dialog-fade-leave-active{-webkit-animation:dialog-fade-out .3s;animation:dialog-fade-out .3s}@-webkit-keyframes dialog-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes dialog-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes dialog-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes dialog-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}.el-autocomplete{position:relative;display:inline-block}.el-autocomplete-suggestion{margin:5px 0;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:4px;border:1px solid #E4E7ED;-webkit-box-sizing:border-box;box-sizing:border-box;background-color:#FFF}.el-dropdown-menu,.el-menu--collapse .el-submenu .el-menu{z-index:10;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-autocomplete-suggestion__wrap{max-height:280px;padding:10px 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-autocomplete-suggestion__list{margin:0;padding:0}.el-autocomplete-suggestion li{padding:0 20px;margin:0;line-height:34px;cursor:pointer;color:#606266;font-size:14px;list-style:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-autocomplete-suggestion li.highlighted,.el-autocomplete-suggestion li:hover{background-color:#F5F7FA}.el-autocomplete-suggestion li.divider{margin-top:6px;border-top:1px solid #000}.el-autocomplete-suggestion li.divider:last-child{margin-bottom:-6px}.el-autocomplete-suggestion.is-loading li{text-align:center;height:100px;line-height:100px;font-size:20px;color:#999}.el-autocomplete-suggestion.is-loading li::after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-autocomplete-suggestion.is-loading li:hover{background-color:#FFF}.el-autocomplete-suggestion.is-loading .el-icon-loading{vertical-align:middle}.el-dropdown{display:inline-block;position:relative;color:#606266;font-size:14px}.el-dropdown .el-button-group{display:block}.el-dropdown .el-button-group .el-button{float:none}.el-dropdown .el-dropdown__caret-button{padding-left:5px;padding-right:5px;position:relative;border-left:none}.el-dropdown .el-dropdown__caret-button::before{content:'';position:absolute;display:block;width:1px;top:5px;bottom:5px;left:0;background:rgba(255,255,255,.5)}.el-dropdown .el-dropdown__caret-button.el-button--default::before{background:rgba(220,223,230,.5)}.el-dropdown .el-dropdown__caret-button:hover::before{top:0;bottom:0}.el-dropdown .el-dropdown__caret-button .el-dropdown__icon{padding-left:0}.el-dropdown__icon{font-size:12px;margin:0 3px}.el-dropdown-menu{position:absolute;top:0;left:0;padding:10px 0;margin:5px 0;background-color:#FFF;border:1px solid #EBEEF5;border-radius:4px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-dropdown-menu__item{list-style:none;line-height:36px;padding:0 20px;margin:0;font-size:14px;color:#606266;cursor:pointer;outline:0}.el-dropdown-menu__item:focus,.el-dropdown-menu__item:not(.is-disabled):hover{background-color:#ecf5ff;color:#66b1ff}.el-dropdown-menu__item i{margin-right:5px}.el-dropdown-menu__item--divided{position:relative;margin-top:6px;border-top:1px solid #EBEEF5}.el-dropdown-menu__item--divided:before{content:'';height:6px;display:block;margin:0 -20px;background-color:#FFF}.el-dropdown-menu__item.is-disabled{cursor:default;color:#bbb;pointer-events:none}.el-dropdown-menu--medium{padding:6px 0}.el-dropdown-menu--medium .el-dropdown-menu__item{line-height:30px;padding:0 17px;font-size:14px}.el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:6px}.el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:6px;margin:0 -17px}.el-dropdown-menu--small{padding:6px 0}.el-dropdown-menu--small .el-dropdown-menu__item{line-height:27px;padding:0 15px;font-size:13px}.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:4px}.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:4px;margin:0 -15px}.el-dropdown-menu--mini{padding:3px 0}.el-dropdown-menu--mini .el-dropdown-menu__item{line-height:24px;padding:0 10px;font-size:12px}.el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:3px}.el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:3px;margin:0 -10px}.el-menu{border-right:solid 1px #e6e6e6;list-style:none;position:relative;margin:0;padding-left:0;background-color:#FFF}.el-menu--horizontal>.el-menu-item:not(.is-disabled):focus,.el-menu--horizontal>.el-menu-item:not(.is-disabled):hover,.el-menu--horizontal>.el-submenu .el-submenu__title:hover{background-color:#fff}.el-menu::after,.el-menu::before{display:table;content:""}.el-menu::after{clear:both}.el-menu.el-menu--horizontal{border-bottom:solid 1px #e6e6e6}.el-menu--horizontal{border-right:none}.el-menu--horizontal>.el-menu-item{float:left;height:60px;line-height:60px;margin:0;border-bottom:2px solid transparent;color:#909399}.el-menu--horizontal>.el-menu-item a,.el-menu--horizontal>.el-menu-item a:hover{color:inherit}.el-menu--horizontal>.el-submenu{float:left}.el-menu--horizontal>.el-submenu:focus,.el-menu--horizontal>.el-submenu:hover{outline:0}.el-menu--horizontal>.el-submenu:focus .el-submenu__title,.el-menu--horizontal>.el-submenu:hover .el-submenu__title{color:#303133}.el-menu--horizontal>.el-submenu.is-active .el-submenu__title{border-bottom:2px solid #409EFF;color:#303133}.el-menu--horizontal>.el-submenu .el-submenu__title{height:60px;line-height:60px;border-bottom:2px solid transparent;color:#909399}.el-menu--horizontal>.el-submenu .el-submenu__icon-arrow{position:static;vertical-align:middle;margin-left:8px;margin-top:-3px}.el-menu--horizontal .el-menu .el-menu-item,.el-menu--horizontal .el-menu .el-submenu__title{background-color:#FFF;float:none;height:36px;line-height:36px;padding:0 10px;color:#909399}.el-menu--horizontal .el-menu .el-menu-item.is-active,.el-menu--horizontal .el-menu .el-submenu.is-active>.el-submenu__title{color:#303133}.el-menu--horizontal .el-menu-item:not(.is-disabled):focus,.el-menu--horizontal .el-menu-item:not(.is-disabled):hover{outline:0;color:#303133}.el-menu--horizontal>.el-menu-item.is-active{border-bottom:2px solid #409EFF;color:#303133}.el-menu--collapse{width:64px}.el-menu--collapse>.el-menu-item [class^=el-icon-],.el-menu--collapse>.el-submenu>.el-submenu__title [class^=el-icon-]{margin:0;vertical-align:middle;width:24px;text-align:center}.el-menu--collapse>.el-menu-item .el-submenu__icon-arrow,.el-menu--collapse>.el-submenu>.el-submenu__title .el-submenu__icon-arrow{display:none}.el-menu--collapse>.el-menu-item span,.el-menu--collapse>.el-submenu>.el-submenu__title span{height:0;width:0;overflow:hidden;visibility:hidden;display:inline-block}.el-menu--collapse>.el-menu-item.is-active i{color:inherit}.el-menu--collapse .el-submenu{position:relative}.el-menu--collapse .el-submenu .el-menu{position:absolute;margin-left:5px;top:0;left:100%;border:1px solid #E4E7ED;border-radius:2px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-menu-item,.el-submenu__title{height:56px;line-height:56px;position:relative;-webkit-box-sizing:border-box;white-space:nowrap;list-style:none}.el-menu--collapse .el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{-webkit-transform:none;transform:none}.el-menu--popup{z-index:100;border:none;padding:5px 0;border-radius:2px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-menu--popup-bottom-start{margin-top:5px}.el-menu--popup-right-start{margin-left:5px;margin-right:5px}.el-menu-item{font-size:14px;color:#303133;padding:0 20px;cursor:pointer;-webkit-transition:border-color .3s,background-color .3s,color .3s;transition:border-color .3s,background-color .3s,color .3s;box-sizing:border-box}.el-menu-item *{vertical-align:middle}.el-menu-item i{color:#909399}.el-menu-item:focus,.el-menu-item:hover{outline:0;background-color:#ecf5ff}.el-menu-item.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-menu-item [class^=el-icon-]{margin-right:5px;width:24px;text-align:center;font-size:18px;vertical-align:middle}.el-menu-item.is-active{color:#409EFF}.el-menu-item.is-active i{color:inherit}.el-submenu{list-style:none;margin:0;padding-left:0}.el-submenu__title{font-size:14px;color:#303133;padding:0 20px;cursor:pointer;-webkit-transition:border-color .3s,background-color .3s,color .3s;transition:border-color .3s,background-color .3s,color .3s;box-sizing:border-box}.el-submenu__title *{vertical-align:middle}.el-submenu__title i{color:#909399}.el-submenu__title:focus,.el-submenu__title:hover{outline:0;background-color:#ecf5ff}.el-submenu__title.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-submenu__title:hover{background-color:#ecf5ff}.el-submenu .el-menu{border:none}.el-submenu .el-menu-item{height:50px;line-height:50px;padding:0 45px;min-width:200px}.el-submenu__icon-arrow{position:absolute;top:50%;right:20px;margin-top:-7px;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;font-size:12px}.el-submenu.is-active .el-submenu__title{border-bottom-color:#409EFF}.el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg)}.el-submenu.is-disabled .el-menu-item,.el-submenu.is-disabled .el-submenu__title{opacity:.25;cursor:not-allowed;background:0 0!important}.el-submenu [class^=el-icon-]{vertical-align:middle;margin-right:5px;width:24px;text-align:center;font-size:18px}.el-menu-item-group>ul{padding:0}.el-menu-item-group__title{padding:7px 0 7px 20px;line-height:normal;font-size:12px;color:#909399}.el-radio-button__inner,.el-radio-group{display:inline-block;line-height:1;vertical-align:middle}.horizontal-collapse-transition .el-submenu__title .el-submenu__icon-arrow{-webkit-transition:.2s;transition:.2s;opacity:0}.el-radio-group{font-size:0}.el-radio-button{position:relative;display:inline-block;outline:0}.el-radio-button__inner{white-space:nowrap;background:#FFF;border:1px solid #DCDFE6;font-weight:500;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;position:relative;cursor:pointer;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);padding:12px 20px;font-size:14px;border-radius:0}.el-radio-button__inner.is-round{padding:12px 20px}.el-radio-button__inner:hover{color:#409EFF}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-left:1px solid #DCDFE6;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.el-radio-button__orig-radio{opacity:0;outline:0;position:absolute;z-index:-1}.el-radio-button__orig-radio:checked+.el-radio-button__inner{color:#FFF;background-color:#409EFF;border-color:#409EFF;-webkit-box-shadow:-1px 0 0 0 #409EFF;box-shadow:-1px 0 0 0 #409EFF}.el-radio-button__orig-radio:disabled+.el-radio-button__inner{color:#C0C4CC;cursor:not-allowed;background-image:none;background-color:#FFF;border-color:#EBEEF5;-webkit-box-shadow:none;box-shadow:none}.el-radio-button__orig-radio:disabled:checked+.el-radio-button__inner{background-color:#F2F6FC}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 4px 4px 0}.el-popover,.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:4px}.el-radio-button--medium .el-radio-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-radio-button--medium .el-radio-button__inner.is-round{padding:10px 20px}.el-radio-button--small .el-radio-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-radio-button--small .el-radio-button__inner.is-round{padding:9px 15px}.el-radio-button--mini .el-radio-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-radio-button--mini .el-radio-button__inner.is-round{padding:7px 15px}.el-radio-button:focus:not(.is-focus):not(:active):not(.is-disabled){-webkit-box-shadow:0 0 2px 2px #409EFF;box-shadow:0 0 2px 2px #409EFF}.el-switch{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;font-size:14px;line-height:20px;height:20px;vertical-align:middle}.el-switch__core,.el-switch__label{display:inline-block;cursor:pointer}.el-switch.is-disabled .el-switch__core,.el-switch.is-disabled .el-switch__label{cursor:not-allowed}.el-switch__label{-webkit-transition:.2s;transition:.2s;height:20px;font-size:14px;font-weight:500;vertical-align:middle;color:#303133}.el-switch__label.is-active{color:#409EFF}.el-switch__label--left{margin-right:10px}.el-switch__label--right{margin-left:10px}.el-switch__label *{line-height:1;font-size:14px;display:inline-block}.el-switch__input{position:absolute;width:0;height:0;opacity:0;margin:0}.el-switch__core{margin:0;position:relative;width:40px;height:20px;border:1px solid #DCDFE6;outline:0;border-radius:10px;-webkit-box-sizing:border-box;box-sizing:border-box;background:#DCDFE6;-webkit-transition:border-color .3s,background-color .3s;transition:border-color .3s,background-color .3s;vertical-align:middle}.el-switch__core:after{content:"";position:absolute;top:1px;left:1px;border-radius:100%;-webkit-transition:all .3s;transition:all .3s;width:16px;height:16px;background-color:#FFF}.el-switch.is-checked .el-switch__core{border-color:#409EFF;background-color:#409EFF}.el-switch.is-checked .el-switch__core::after{left:100%;margin-left:-17px}.el-switch.is-disabled{opacity:.6}.el-switch--wide .el-switch__label.el-switch__label--left span{left:10px}.el-switch--wide .el-switch__label.el-switch__label--right span{right:10px}.el-switch .label-fade-enter,.el-switch .label-fade-leave-active{opacity:0}.el-select-dropdown{position:absolute;z-index:1001;border:1px solid #E4E7ED;border-radius:4px;background-color:#FFF;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-box-sizing:border-box;box-sizing:border-box;margin:5px 0}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected{color:#409EFF;background-color:#FFF}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected.hover{background-color:#F5F7FA}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected::after{position:absolute;right:20px;font-family:element-icons;content:"\e6da";font-size:12px;font-weight:700;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.el-select-dropdown__empty{padding:10px 0;margin:0;text-align:center;color:#999;font-size:14px}.el-select-dropdown__wrap{max-height:274px}.el-select-dropdown__list{list-style:none;padding:6px 0;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-select-dropdown__item{font-size:14px;padding:0 20px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#606266;height:34px;line-height:34px;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer}.el-select-dropdown__item.is-disabled{color:#C0C4CC;cursor:not-allowed}.el-select-dropdown__item.is-disabled:hover{background-color:#FFF}.el-select-dropdown__item.hover,.el-select-dropdown__item:hover{background-color:#F5F7FA}.el-select-dropdown__item.selected{color:#409EFF;font-weight:700}.el-select-group{margin:0;padding:0}.el-select-group__wrap{position:relative;list-style:none;margin:0;padding:0}.el-select-group__wrap:not(:last-of-type){padding-bottom:24px}.el-select-group__wrap:not(:last-of-type)::after{content:'';position:absolute;display:block;left:20px;right:20px;bottom:12px;height:1px;background:#E4E7ED}.el-select-group__title{padding-left:20px;font-size:12px;color:#909399;line-height:30px}.el-select-group .el-select-dropdown__item{padding-left:20px}.el-select{display:inline-block;position:relative}.el-select .el-select__tags>span{display:contents}.el-select:hover .el-input__inner{border-color:#C0C4CC}.el-select .el-input__inner{cursor:pointer;padding-right:35px}.el-select .el-input__inner:focus{border-color:#409EFF}.el-select .el-input .el-select__caret{color:#C0C4CC;font-size:14px;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg);cursor:pointer}.el-select .el-input .el-select__caret.is-reverse{-webkit-transform:rotateZ(0);transform:rotateZ(0)}.el-select .el-input .el-select__caret.is-show-close{font-size:14px;text-align:center;-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg);border-radius:100%;color:#C0C4CC;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1)}.el-select .el-input .el-select__caret.is-show-close:hover{color:#909399}.el-select .el-input.is-disabled .el-input__inner{cursor:not-allowed}.el-select .el-input.is-disabled .el-input__inner:hover{border-color:#E4E7ED}.el-select .el-input.is-focus .el-input__inner{border-color:#409EFF}.el-select>.el-input{display:block}.el-select__input{border:none;outline:0;padding:0;margin-left:15px;color:#666;font-size:14px;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:28px;background-color:transparent}.el-select__input.is-mini{height:14px}.el-select__close{cursor:pointer;position:absolute;top:8px;z-index:1000;right:25px;color:#C0C4CC;line-height:18px;font-size:14px}.el-select__close:hover{color:#909399}.el-select__tags{position:absolute;line-height:normal;white-space:normal;z-index:1;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap}.el-select .el-tag__close{margin-top:-2px}.el-select .el-tag{-webkit-box-sizing:border-box;box-sizing:border-box;border-color:transparent;margin:2px 0 2px 6px;background-color:#f0f2f5}.el-select .el-tag__close.el-icon-close{background-color:#C0C4CC;right:-7px;top:0;color:#FFF}.el-select .el-tag__close.el-icon-close:hover{background-color:#909399}.el-table,.el-table__expanded-cell{background-color:#FFF}.el-select .el-tag__close.el-icon-close::before{display:block;-webkit-transform:translate(0,.5px);transform:translate(0,.5px)}.el-table{position:relative;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-box-flex:1;-ms-flex:1;flex:1;width:100%;max-width:100%;font-size:14px;color:#606266}.el-table--mini,.el-table--small,.el-table__expand-icon{font-size:12px}.el-table__empty-block{min-height:60px;text-align:center;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-table__empty-text{line-height:60px;width:50%;color:#909399}.el-table__expand-column .cell{padding:0;text-align:center}.el-table__expand-icon{position:relative;cursor:pointer;color:#666;-webkit-transition:-webkit-transform .2s ease-in-out;transition:-webkit-transform .2s ease-in-out;transition:transform .2s ease-in-out;transition:transform .2s ease-in-out,-webkit-transform .2s ease-in-out;height:20px}.el-table__expand-icon--expanded{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-table__expand-icon>.el-icon{position:absolute;left:50%;top:50%;margin-left:-5px;margin-top:-5px}.el-table__expanded-cell[class*=cell]{padding:20px 50px}.el-table__expanded-cell:hover{background-color:transparent!important}.el-table__placeholder{display:inline-block;width:20px}.el-table__append-wrapper{overflow:hidden}.el-table--fit{border-right:0;border-bottom:0}.el-table--fit td.gutter,.el-table--fit th.gutter{border-right-width:1px}.el-table--scrollable-x .el-table__body-wrapper{overflow-x:auto}.el-table--scrollable-y .el-table__body-wrapper{overflow-y:auto}.el-table thead{color:#909399;font-weight:500}.el-table thead.is-group th{background:#F5F7FA}.el-table th,.el-table tr{background-color:#FFF}.el-table td,.el-table th{padding:12px 0;min-width:0;-webkit-box-sizing:border-box;box-sizing:border-box;text-overflow:ellipsis;vertical-align:middle;position:relative;text-align:left}.el-table td.is-center,.el-table th.is-center{text-align:center}.el-table td.is-right,.el-table th.is-right{text-align:right}.el-table td.gutter,.el-table th.gutter{width:15px;border-right-width:0;border-bottom-width:0;padding:0}.el-table--medium td,.el-table--medium th{padding:10px 0}.el-table--small td,.el-table--small th{padding:8px 0}.el-table--mini td,.el-table--mini th{padding:6px 0}.el-table .cell,.el-table--border td:first-child .cell,.el-table--border th:first-child .cell{padding-left:10px}.el-table tr input[type=checkbox]{margin:0}.el-table td,.el-table th.is-leaf{border-bottom:1px solid #EBEEF5}.el-table th.is-sortable{cursor:pointer}.el-table th{overflow:hidden;-ms-user-select:none;user-select:none}.el-table th>.cell{display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;vertical-align:middle;padding-left:10px;padding-right:10px;width:100%}.el-table th>.cell.highlight{color:#409EFF}.el-table th.required>div::before{display:inline-block;content:"";width:8px;height:8px;border-radius:50%;background:#ff4d51;margin-right:5px;vertical-align:middle}.el-table td div{-webkit-box-sizing:border-box;box-sizing:border-box}.el-table td.gutter{width:0}.el-table .cell{-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;text-overflow:ellipsis;white-space:normal;word-break:break-all;line-height:23px;padding-right:10px}.el-table .cell.el-tooltip{white-space:nowrap;min-width:50px}.el-table--border,.el-table--group{border:1px solid #EBEEF5}.el-table--border::after,.el-table--group::after,.el-table::before{content:'';position:absolute;background-color:#EBEEF5;z-index:1}.el-table--border::after,.el-table--group::after{top:0;right:0;width:1px;height:100%}.el-table::before{left:0;bottom:0;width:100%;height:1px}.el-table--border{border-right:none;border-bottom:none}.el-table--border.el-loading-parent--relative{border-color:transparent}.el-table--border td,.el-table--border th,.el-table__body-wrapper .el-table--border.is-scrolling-left~.el-table__fixed{border-right:1px solid #EBEEF5}.el-table--border th.gutter:last-of-type{border-bottom:1px solid #EBEEF5;border-bottom-width:1px}.el-table--border th,.el-table__fixed-right-patch{border-bottom:1px solid #EBEEF5}.el-table__fixed,.el-table__fixed-right{position:absolute;top:0;left:0;overflow-x:hidden;overflow-y:hidden;-webkit-box-shadow:0 0 10px rgba(0,0,0,.12);box-shadow:0 0 10px rgba(0,0,0,.12)}.el-table__fixed-right::before,.el-table__fixed::before{content:'';position:absolute;left:0;bottom:0;width:100%;height:1px;background-color:#EBEEF5;z-index:4}.el-table__fixed-right-patch{position:absolute;top:-1px;right:0;background-color:#FFF}.el-table__fixed-right{top:0;left:auto;right:0}.el-table__fixed-right .el-table__fixed-body-wrapper,.el-table__fixed-right .el-table__fixed-footer-wrapper,.el-table__fixed-right .el-table__fixed-header-wrapper{left:auto;right:0}.el-table__fixed-header-wrapper{position:absolute;left:0;top:0;z-index:3}.el-table__fixed-footer-wrapper{position:absolute;left:0;bottom:0;z-index:3}.el-table__fixed-footer-wrapper tbody td{border-top:1px solid #EBEEF5;background-color:#F5F7FA;color:#606266}.el-table__fixed-body-wrapper{position:absolute;left:0;top:37px;overflow:hidden;z-index:3}.el-table__body-wrapper,.el-table__footer-wrapper,.el-table__header-wrapper{width:100%}.el-table__footer-wrapper{margin-top:-1px}.el-table__footer-wrapper td{border-top:1px solid #EBEEF5}.el-table__body,.el-table__footer,.el-table__header{table-layout:fixed;border-collapse:separate}.el-table__footer-wrapper,.el-table__header-wrapper{overflow:hidden}.el-table__footer-wrapper tbody td,.el-table__header-wrapper tbody td{background-color:#F5F7FA;color:#606266}.el-table__body-wrapper{overflow:hidden;position:relative}.el-table__body-wrapper.is-scrolling-left~.el-table__fixed,.el-table__body-wrapper.is-scrolling-none~.el-table__fixed,.el-table__body-wrapper.is-scrolling-none~.el-table__fixed-right,.el-table__body-wrapper.is-scrolling-right~.el-table__fixed-right{-webkit-box-shadow:none;box-shadow:none}.el-picker-panel,.el-table-filter{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-table__body-wrapper .el-table--border.is-scrolling-right~.el-table__fixed-right{border-left:1px solid #EBEEF5}.el-table .caret-wrapper{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:34px;width:24px;vertical-align:middle;cursor:pointer;overflow:initial;position:relative}.el-table .sort-caret{width:0;height:0;border:5px solid transparent;position:absolute;left:7px}.el-table .sort-caret.ascending{border-bottom-color:#C0C4CC;top:5px}.el-table .sort-caret.descending{border-top-color:#C0C4CC;bottom:7px}.el-table .ascending .sort-caret.ascending{border-bottom-color:#409EFF}.el-table .descending .sort-caret.descending{border-top-color:#409EFF}.el-table .hidden-columns{position:absolute;z-index:-1}.el-table--striped .el-table__body tr.el-table__row--striped td{background:#FAFAFA}.el-table--striped .el-table__body tr.el-table__row--striped.current-row td{background-color:#ecf5ff}.el-table__body tr.hover-row.current-row>td,.el-table__body tr.hover-row.el-table__row--striped.current-row>td,.el-table__body tr.hover-row.el-table__row--striped>td,.el-table__body tr.hover-row>td{background-color:#F5F7FA}.el-table__body tr.current-row>td{background-color:#ecf5ff}.el-table__column-resize-proxy{position:absolute;left:200px;top:0;bottom:0;width:0;border-left:1px solid #EBEEF5;z-index:10}.el-table__column-filter-trigger{display:inline-block;line-height:34px;cursor:pointer}.el-table__column-filter-trigger i{color:#909399;font-size:12px;-webkit-transform:scale(.75);transform:scale(.75)}.el-table--enable-row-transition .el-table__body td{-webkit-transition:background-color .25s ease;transition:background-color .25s ease}.el-table--enable-row-hover .el-table__body tr:hover>td{background-color:#F5F7FA}.el-table--fluid-height .el-table__fixed,.el-table--fluid-height .el-table__fixed-right{bottom:0;overflow:hidden}.el-table [class*=el-table__row--level] .el-table__expand-icon{display:inline-block;width:20px;line-height:20px;height:20px;text-align:center;margin-right:3px}.el-table-column--selection .cell{padding-left:14px;padding-right:14px}.el-table-filter{border:1px solid #EBEEF5;border-radius:2px;background-color:#FFF;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-box-sizing:border-box;box-sizing:border-box;margin:2px 0}.el-date-table td,.el-date-table td div{height:30px;-webkit-box-sizing:border-box}.el-table-filter__list{padding:5px 0;margin:0;list-style:none;min-width:100px}.el-table-filter__list-item{line-height:36px;padding:0 10px;cursor:pointer;font-size:14px}.el-table-filter__list-item:hover{background-color:#ecf5ff;color:#66b1ff}.el-table-filter__list-item.is-active{background-color:#409EFF;color:#FFF}.el-table-filter__content{min-width:100px}.el-table-filter__bottom{border-top:1px solid #EBEEF5;padding:8px}.el-table-filter__bottom button{background:0 0;border:none;color:#606266;cursor:pointer;font-size:13px;padding:0 3px}.el-date-table td.in-range div,.el-date-table td.in-range div:hover,.el-date-table.is-week-mode .el-date-table__row.current div,.el-date-table.is-week-mode .el-date-table__row:hover div{background-color:#F2F6FC}.el-table-filter__bottom button:hover{color:#409EFF}.el-table-filter__bottom button:focus{outline:0}.el-table-filter__bottom button.is-disabled{color:#C0C4CC;cursor:not-allowed}.el-table-filter__wrap{max-height:280px}.el-table-filter__checkbox-group{padding:10px}.el-table-filter__checkbox-group label.el-checkbox{display:block;margin-right:5px;margin-bottom:8px;margin-left:5px}.el-table-filter__checkbox-group .el-checkbox:last-child{margin-bottom:0}.el-date-table{font-size:12px;-ms-user-select:none;user-select:none}.el-date-table.is-week-mode .el-date-table__row:hover td.available:hover{color:#606266}.el-date-table.is-week-mode .el-date-table__row:hover td:first-child div{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table.is-week-mode .el-date-table__row:hover td:last-child div{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table td{width:32px;padding:4px 0;box-sizing:border-box;text-align:center;cursor:pointer;position:relative}.el-date-table td div{padding:3px 0;box-sizing:border-box}.el-date-table td span{width:24px;height:24px;display:block;margin:0 auto;line-height:24px;position:absolute;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);border-radius:50%}.el-date-table td.next-month,.el-date-table td.prev-month{color:#C0C4CC}.el-date-table td.today{position:relative}.el-date-table td.today span{color:#409EFF;font-weight:700}.el-date-table td.today.end-date span,.el-date-table td.today.start-date span{color:#FFF}.el-date-table td.available:hover{color:#409EFF}.el-date-table td.current:not(.disabled) span{color:#FFF;background-color:#409EFF}.el-date-table td.end-date div,.el-date-table td.start-date div{color:#FFF}.el-date-table td.end-date span,.el-date-table td.start-date span{background-color:#409EFF}.el-date-table td.start-date div{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table td.end-date div{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table td.disabled div{background-color:#F5F7FA;opacity:1;cursor:not-allowed;color:#C0C4CC}.el-date-table td.selected div{margin-left:5px;margin-right:5px;background-color:#F2F6FC;border-radius:15px}.el-date-table td.selected div:hover{background-color:#F2F6FC}.el-date-table td.selected span{background-color:#409EFF;color:#FFF;border-radius:15px}.el-date-table td.week{font-size:80%;color:#606266}.el-month-table,.el-year-table{font-size:12px;border-collapse:collapse}.el-date-table th{padding:5px;color:#606266;font-weight:400;border-bottom:solid 1px #EBEEF5}.el-month-table{margin:-1px}.el-month-table td{text-align:center;padding:8px 0;cursor:pointer}.el-month-table td div{height:48px;padding:6px 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-month-table td.today .cell{color:#409EFF;font-weight:700}.el-month-table td.today.end-date .cell,.el-month-table td.today.start-date .cell{color:#FFF}.el-month-table td.disabled .cell{background-color:#F5F7FA;cursor:not-allowed;color:#C0C4CC}.el-month-table td.disabled .cell:hover{color:#C0C4CC}.el-month-table td .cell{width:60px;height:36px;display:block;line-height:36px;color:#606266;margin:0 auto;border-radius:18px}.el-month-table td .cell:hover{color:#409EFF}.el-month-table td.in-range div,.el-month-table td.in-range div:hover{background-color:#F2F6FC}.el-month-table td.end-date div,.el-month-table td.start-date div{color:#FFF}.el-month-table td.end-date .cell,.el-month-table td.start-date .cell{color:#FFF;background-color:#409EFF}.el-month-table td.start-date div{border-top-left-radius:24px;border-bottom-left-radius:24px}.el-month-table td.end-date div{border-top-right-radius:24px;border-bottom-right-radius:24px}.el-month-table td.current:not(.disabled) .cell{color:#409EFF}.el-year-table{margin:-1px}.el-year-table .el-icon{color:#303133}.el-year-table td{text-align:center;padding:20px 3px;cursor:pointer}.el-year-table td.today .cell{color:#409EFF;font-weight:700}.el-year-table td.disabled .cell{background-color:#F5F7FA;cursor:not-allowed;color:#C0C4CC}.el-year-table td.disabled .cell:hover{color:#C0C4CC}.el-year-table td .cell{width:48px;height:32px;display:block;line-height:32px;color:#606266;margin:0 auto}.el-year-table td .cell:hover,.el-year-table td.current:not(.disabled) .cell{color:#409EFF}.el-date-range-picker{width:646px}.el-date-range-picker.has-sidebar{width:756px}.el-date-range-picker table{table-layout:fixed;width:100%}.el-date-range-picker .el-picker-panel__body{min-width:513px}.el-date-range-picker .el-picker-panel__content{margin:0}.el-date-range-picker__header{position:relative;text-align:center;height:28px}.el-date-range-picker__header [class*=arrow-left]{float:left}.el-date-range-picker__header [class*=arrow-right]{float:right}.el-date-range-picker__header div{font-size:16px;font-weight:500;margin-right:50px}.el-date-range-picker__content{float:left;width:50%;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:16px}.el-date-range-picker__content.is-left{border-right:1px solid #e4e4e4}.el-date-range-picker__content .el-date-range-picker__header div{margin-left:50px;margin-right:50px}.el-date-range-picker__editors-wrap{-webkit-box-sizing:border-box;box-sizing:border-box;display:table-cell}.el-date-range-picker__editors-wrap.is-right{text-align:right}.el-date-range-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px;display:table;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.el-date-range-picker__time-header>.el-icon-arrow-right{font-size:20px;vertical-align:middle;display:table-cell;color:#303133}.el-date-range-picker__time-picker-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-range-picker__time-picker-wrap .el-picker-panel{position:absolute;top:13px;right:0;z-index:1;background:#FFF}.el-date-picker{width:322px}.el-date-picker.has-sidebar.has-time{width:434px}.el-date-picker.has-sidebar{width:438px}.el-date-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-picker .el-picker-panel__content{width:292px}.el-date-picker table{table-layout:fixed;width:100%}.el-date-picker__editor-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px;display:table;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.el-date-picker__header{margin:12px;text-align:center}.el-date-picker__header--bordered{margin-bottom:0;padding-bottom:12px;border-bottom:solid 1px #EBEEF5}.el-date-picker__header--bordered+.el-picker-panel__content{margin-top:0}.el-date-picker__header-label{font-size:16px;font-weight:500;padding:0 5px;line-height:22px;text-align:center;cursor:pointer;color:#606266}.el-date-picker__header-label.active,.el-date-picker__header-label:hover{color:#409EFF}.el-date-picker__prev-btn{float:left}.el-date-picker__next-btn{float:right}.el-date-picker__time-wrap{padding:10px;text-align:center}.el-date-picker__time-label{float:left;cursor:pointer;line-height:30px;margin-left:10px}.time-select{margin:5px 0;min-width:0}.time-select .el-picker-panel__content{max-height:200px;margin:0}.time-select-item{padding:8px 10px;font-size:14px;line-height:20px}.time-select-item.selected:not(.disabled){color:#409EFF;font-weight:700}.time-select-item.disabled{color:#E4E7ED;cursor:not-allowed}.time-select-item:hover{background-color:#F5F7FA;font-weight:700;cursor:pointer}.el-date-editor{position:relative;display:inline-block;text-align:left}.el-date-editor.el-input,.el-date-editor.el-input__inner{width:220px}.el-date-editor--monthrange.el-input,.el-date-editor--monthrange.el-input__inner{width:300px}.el-date-editor--daterange.el-input,.el-date-editor--daterange.el-input__inner,.el-date-editor--timerange.el-input,.el-date-editor--timerange.el-input__inner{width:350px}.el-date-editor--datetimerange.el-input,.el-date-editor--datetimerange.el-input__inner{width:400px}.el-date-editor--dates .el-input__inner{text-overflow:ellipsis;white-space:nowrap}.el-date-editor .el-icon-circle-close{cursor:pointer}.el-date-editor .el-range__icon{font-size:14px;margin-left:-5px;color:#C0C4CC;float:left;line-height:32px}.el-date-editor .el-range-input,.el-date-editor .el-range-separator{height:100%;margin:0;text-align:center;display:inline-block;font-size:14px}.el-date-editor .el-range-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;outline:0;padding:0;width:39%;color:#606266}.el-date-editor .el-range-input::-webkit-input-placeholder{color:#C0C4CC}.el-date-editor .el-range-input:-ms-input-placeholder{color:#C0C4CC}.el-date-editor .el-range-input::-ms-input-placeholder{color:#C0C4CC}.el-date-editor .el-range-input::placeholder{color:#C0C4CC}.el-date-editor .el-range-separator{padding:0 5px;line-height:32px;width:5%;color:#303133}.el-date-editor .el-range__close-icon{font-size:14px;color:#C0C4CC;width:25px;display:inline-block;float:right;line-height:32px}.el-range-editor.el-input__inner{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:3px 10px}.el-range-editor .el-range-input{line-height:1}.el-range-editor.is-active,.el-range-editor.is-active:hover{border-color:#409EFF}.el-range-editor--medium.el-input__inner{height:36px}.el-range-editor--medium .el-range-separator{line-height:28px;font-size:14px}.el-range-editor--medium .el-range-input{font-size:14px}.el-range-editor--medium .el-range__close-icon,.el-range-editor--medium .el-range__icon{line-height:28px}.el-range-editor--small.el-input__inner{height:32px}.el-range-editor--small .el-range-separator{line-height:24px;font-size:13px}.el-range-editor--small .el-range-input{font-size:13px}.el-range-editor--small .el-range__close-icon,.el-range-editor--small .el-range__icon{line-height:24px}.el-range-editor--mini.el-input__inner{height:28px}.el-range-editor--mini .el-range-separator{line-height:20px;font-size:12px}.el-range-editor--mini .el-range-input{font-size:12px}.el-range-editor--mini .el-range__close-icon,.el-range-editor--mini .el-range__icon{line-height:20px}.el-range-editor.is-disabled{background-color:#F5F7FA;border-color:#E4E7ED;color:#C0C4CC;cursor:not-allowed}.el-range-editor.is-disabled:focus,.el-range-editor.is-disabled:hover{border-color:#E4E7ED}.el-range-editor.is-disabled input{background-color:#F5F7FA;color:#C0C4CC;cursor:not-allowed}.el-range-editor.is-disabled input::-webkit-input-placeholder{color:#C0C4CC}.el-range-editor.is-disabled input:-ms-input-placeholder{color:#C0C4CC}.el-range-editor.is-disabled input::-ms-input-placeholder{color:#C0C4CC}.el-range-editor.is-disabled input::placeholder{color:#C0C4CC}.el-range-editor.is-disabled .el-range-separator{color:#C0C4CC}.el-picker-panel{color:#606266;border:1px solid #E4E7ED;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);background:#FFF;border-radius:4px;line-height:30px;margin:5px 0}.el-popover,.el-time-panel{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-picker-panel__body-wrapper::after,.el-picker-panel__body::after{content:"";display:table;clear:both}.el-picker-panel__content{position:relative;margin:15px}.el-picker-panel__footer{border-top:1px solid #e4e4e4;padding:4px;text-align:right;background-color:#FFF;position:relative;font-size:0}.el-picker-panel__shortcut{display:block;width:100%;border:0;background-color:transparent;line-height:28px;font-size:14px;color:#606266;padding-left:12px;text-align:left;outline:0;cursor:pointer}.el-picker-panel__shortcut:hover{color:#409EFF}.el-picker-panel__shortcut.active{background-color:#e6f1fe;color:#409EFF}.el-picker-panel__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-picker-panel__btn[disabled]{color:#ccc;cursor:not-allowed}.el-picker-panel__icon-btn{font-size:12px;color:#303133;border:0;background:0 0;cursor:pointer;outline:0;margin-top:8px}.el-picker-panel__icon-btn:hover{color:#409EFF}.el-picker-panel__icon-btn.is-disabled{color:#bbb}.el-picker-panel__icon-btn.is-disabled:hover{cursor:not-allowed}.el-picker-panel__link-btn{vertical-align:middle}.el-picker-panel [slot=sidebar],.el-picker-panel__sidebar{position:absolute;top:0;bottom:0;width:110px;border-right:1px solid #e4e4e4;-webkit-box-sizing:border-box;box-sizing:border-box;padding-top:6px;background-color:#FFF;overflow:auto}.el-picker-panel [slot=sidebar]+.el-picker-panel__body,.el-picker-panel__sidebar+.el-picker-panel__body{margin-left:110px}.el-time-spinner.has-seconds .el-time-spinner__wrapper{width:33.3%}.el-time-spinner__wrapper{max-height:190px;overflow:auto;display:inline-block;width:50%;vertical-align:top;position:relative}.el-time-spinner__wrapper .el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default){padding-bottom:15px}.el-time-spinner__input.el-input .el-input__inner,.el-time-spinner__list{padding:0;text-align:center}.el-time-spinner__wrapper.is-arrow{-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;overflow:hidden}.el-time-spinner__wrapper.is-arrow .el-time-spinner__list{-webkit-transform:translateY(-32px);transform:translateY(-32px)}.el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.disabled):not(.active){background:#FFF;cursor:default}.el-time-spinner__arrow{font-size:12px;color:#909399;position:absolute;left:0;width:100%;z-index:1;text-align:center;height:30px;line-height:30px;cursor:pointer}.el-time-spinner__arrow:hover{color:#409EFF}.el-time-spinner__arrow.el-icon-arrow-up{top:10px}.el-time-spinner__arrow.el-icon-arrow-down{bottom:10px}.el-time-spinner__input.el-input{width:70%}.el-time-spinner__list{margin:0;list-style:none}.el-time-spinner__list::after,.el-time-spinner__list::before{content:'';display:block;width:100%;height:80px}.el-time-spinner__item{height:32px;line-height:32px;font-size:12px;color:#606266}.el-time-spinner__item:hover:not(.disabled):not(.active){background:#F5F7FA;cursor:pointer}.el-time-spinner__item.active:not(.disabled){color:#303133;font-weight:700}.el-time-spinner__item.disabled{color:#C0C4CC;cursor:not-allowed}.el-time-panel{margin:5px 0;border:1px solid #E4E7ED;background-color:#FFF;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:2px;position:absolute;width:180px;left:0;z-index:1000;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-box-sizing:content-box;box-sizing:content-box}.el-slider__button,.el-slider__button-wrapper{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.el-time-panel__content{font-size:0;position:relative;overflow:hidden}.el-time-panel__content::after,.el-time-panel__content::before{content:"";top:50%;position:absolute;margin-top:-15px;height:32px;z-index:-1;left:0;right:0;-webkit-box-sizing:border-box;box-sizing:border-box;padding-top:6px;text-align:left;border-top:1px solid #E4E7ED;border-bottom:1px solid #E4E7ED}.el-time-panel__content::after{left:50%;margin-left:12%;margin-right:12%}.el-time-panel__content::before{padding-left:50%;margin-right:12%;margin-left:12%}.el-time-panel__content.has-seconds::after{left:calc(100% / 3 * 2)}.el-time-panel__content.has-seconds::before{padding-left:calc(100% / 3)}.el-time-panel__footer{border-top:1px solid #e4e4e4;padding:4px;height:36px;line-height:25px;text-align:right;-webkit-box-sizing:border-box;box-sizing:border-box}.el-time-panel__btn{border:none;line-height:28px;padding:0 5px;margin:0 5px;cursor:pointer;background-color:transparent;outline:0;font-size:12px;color:#303133}.el-time-panel__btn.confirm{font-weight:800;color:#409EFF}.el-time-range-picker{width:354px;overflow:visible}.el-time-range-picker__content{position:relative;text-align:center;padding:10px}.el-time-range-picker__cell{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:4px 7px 7px;width:50%;display:inline-block}.el-time-range-picker__header{margin-bottom:5px;text-align:center;font-size:14px}.el-time-range-picker__body{border-radius:2px;border:1px solid #E4E7ED}.el-popover{position:absolute;background:#FFF;min-width:150px;border:1px solid #EBEEF5;padding:12px;z-index:2000;color:#606266;line-height:1.4;text-align:justify;font-size:14px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);word-break:break-all}.el-popover--plain{padding:18px 20px}.el-popover__title{color:#303133;font-size:16px;line-height:1;margin-bottom:12px}.v-modal-enter{-webkit-animation:v-modal-in .2s ease;animation:v-modal-in .2s ease}.v-modal-leave{-webkit-animation:v-modal-out .2s ease forwards;animation:v-modal-out .2s ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{100%{opacity:0}}.v-modal{position:fixed;left:0;top:0;width:100%;height:100%;opacity:.5;background:#000}.el-popup-parent--hidden{overflow:hidden}.el-message-box{display:inline-block;width:420px;padding-bottom:10px;vertical-align:middle;background-color:#FFF;border-radius:4px;border:1px solid #EBEEF5;font-size:18px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);text-align:left;overflow:hidden;-webkit-backface-visibility:hidden;backface-visibility:hidden}.el-message-box__wrapper{position:fixed;top:0;bottom:0;left:0;right:0;text-align:center}.el-message-box__wrapper::after{content:"";display:inline-block;height:100%;width:0;vertical-align:middle}.el-message-box__header{position:relative;padding:15px 15px 10px}.el-message-box__title{padding-left:0;margin-bottom:0;font-size:18px;line-height:1;color:#303133}.el-message-box__headerbtn{position:absolute;top:15px;right:15px;padding:0;border:none;outline:0;background:0 0;font-size:16px;cursor:pointer}.el-form-item.is-error .el-input__inner,.el-form-item.is-error .el-input__inner:focus,.el-form-item.is-error .el-textarea__inner,.el-form-item.is-error .el-textarea__inner:focus,.el-message-box__input input.invalid,.el-message-box__input input.invalid:focus{border-color:#F56C6C}.el-message-box__headerbtn .el-message-box__close{color:#909399}.el-message-box__headerbtn:focus .el-message-box__close,.el-message-box__headerbtn:hover .el-message-box__close{color:#409EFF}.el-message-box__content{padding:10px 15px;color:#606266;font-size:14px}.el-message-box__container{position:relative}.el-message-box__input{padding-top:15px}.el-message-box__status{position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);font-size:24px!important}.el-message-box__status::before{padding-left:1px}.el-message-box__status+.el-message-box__message{padding-left:36px;padding-right:12px}.el-message-box__status.el-icon-success{color:#67C23A}.el-message-box__status.el-icon-info{color:#909399}.el-message-box__status.el-icon-warning{color:#E6A23C}.el-message-box__status.el-icon-error{color:#F56C6C}.el-message-box__message{margin:0}.el-message-box__message p{margin:0;line-height:24px}.el-message-box__errormsg{color:#F56C6C;font-size:12px;min-height:18px;margin-top:2px}.el-message-box__btns{padding:5px 15px 0;text-align:right}.el-message-box__btns button:nth-child(2){margin-left:10px}.el-message-box__btns-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.el-message-box--center{padding-bottom:30px}.el-message-box--center .el-message-box__header{padding-top:30px}.el-message-box--center .el-message-box__title{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-message-box--center .el-message-box__status{position:relative;top:auto;padding-right:5px;text-align:center;-webkit-transform:translateY(-1px);transform:translateY(-1px)}.el-message-box--center .el-message-box__message{margin-left:0}.el-message-box--center .el-message-box__btns,.el-message-box--center .el-message-box__content{text-align:center}.el-message-box--center .el-message-box__content{padding-left:27px;padding-right:27px}.msgbox-fade-enter-active{-webkit-animation:msgbox-fade-in .3s;animation:msgbox-fade-in .3s}.msgbox-fade-leave-active{-webkit-animation:msgbox-fade-out .3s;animation:msgbox-fade-out .3s}@-webkit-keyframes msgbox-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes msgbox-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes msgbox-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes msgbox-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}.el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb::after,.el-breadcrumb::before{display:table;content:""}.el-breadcrumb::after{clear:both}.el-breadcrumb__separator{margin:0 9px;font-weight:700;color:#C0C4CC}.el-breadcrumb__separator[class*=icon]{margin:0 6px;font-weight:400}.el-breadcrumb__item{float:left}.el-breadcrumb__inner{color:#606266}.el-breadcrumb__inner a,.el-breadcrumb__inner.is-link{font-weight:700;text-decoration:none;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1);color:#303133}.el-breadcrumb__inner a:hover,.el-breadcrumb__inner.is-link:hover{color:#409EFF;cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover{font-weight:400;color:#606266;cursor:text}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}.el-form--label-left .el-form-item__label{text-align:left}.el-form--label-top .el-form-item__label{float:none;display:inline-block;text-align:left;padding:0 0 10px}.el-form--inline .el-form-item{display:inline-block;margin-right:10px;vertical-align:top}.el-form--inline .el-form-item__label{float:none;display:inline-block}.el-form--inline .el-form-item__content{display:inline-block;vertical-align:top}.el-form--inline.el-form--label-top .el-form-item__content{display:block}.el-form-item{margin-bottom:22px}.el-form-item::after,.el-form-item::before{display:table;content:""}.el-form-item::after{clear:both}.el-form-item .el-form-item{margin-bottom:0}.el-form-item--mini.el-form-item,.el-form-item--small.el-form-item{margin-bottom:18px}.el-form-item .el-input__validateIcon{display:none}.el-form-item--medium .el-form-item__content,.el-form-item--medium .el-form-item__label{line-height:36px}.el-form-item--small .el-form-item__content,.el-form-item--small .el-form-item__label{line-height:32px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--mini .el-form-item__content,.el-form-item--mini .el-form-item__label{line-height:28px}.el-form-item--mini .el-form-item__error{padding-top:1px}.el-form-item__label-wrap{float:left}.el-form-item__label-wrap .el-form-item__label{display:inline-block;float:none}.el-form-item__label{text-align:right;vertical-align:middle;float:left;font-size:14px;color:#606266;line-height:40px;padding:0 12px 0 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-form-item__content{line-height:40px;position:relative;font-size:14px}.el-form-item__content::after,.el-form-item__content::before{display:table;content:""}.el-form-item__content::after{clear:both}.el-form-item__content .el-input-group{vertical-align:top}.el-form-item__error{color:#F56C6C;font-size:12px;line-height:1;padding-top:4px;position:absolute;top:100%;left:0}.el-form-item__error--inline{position:relative;top:auto;left:auto;display:inline-block;margin-left:10px}.el-form-item.is-required:not(.is-no-asterisk) .el-form-item__label-wrap>.el-form-item__label:before,.el-form-item.is-required:not(.is-no-asterisk)>.el-form-item__label:before{content:'*';color:#F56C6C;margin-right:4px}.el-form-item.is-error .el-input-group__append .el-input__inner,.el-form-item.is-error .el-input-group__prepend .el-input__inner{border-color:transparent}.el-form-item.is-error .el-input__validateIcon{color:#F56C6C}.el-form-item--feedback .el-input__validateIcon{display:inline-block}.el-tabs__header{padding:0;position:relative;margin:0 0 15px}.el-tabs__active-bar{position:absolute;bottom:0;left:0;height:2px;background-color:#409EFF;z-index:1;-webkit-transition:-webkit-transform .3s cubic-bezier(.645,.045,.355,1);transition:-webkit-transform .3s cubic-bezier(.645,.045,.355,1);transition:transform .3s cubic-bezier(.645,.045,.355,1);transition:transform .3s cubic-bezier(.645,.045,.355,1),-webkit-transform .3s cubic-bezier(.645,.045,.355,1);list-style:none}.el-tabs__new-tab{float:right;border:1px solid #d3dce6;height:18px;width:18px;line-height:18px;margin:12px 0 9px 10px;border-radius:3px;text-align:center;font-size:12px;color:#d3dce6;cursor:pointer;-webkit-transition:all .15s;transition:all .15s}.el-collapse-item__arrow,.el-tabs__nav{-webkit-transition:-webkit-transform .3s}.el-tabs__new-tab .el-icon-plus{-webkit-transform:scale(.8,.8);transform:scale(.8,.8)}.el-tabs__new-tab:hover{color:#409EFF}.el-tabs__nav-wrap{overflow:hidden;margin-bottom:-1px;position:relative}.el-tabs__nav-wrap::after{content:"";position:absolute;left:0;bottom:0;width:100%;height:2px;background-color:#E4E7ED;z-index:1}.el-tabs--border-card>.el-tabs__header .el-tabs__nav-wrap::after,.el-tabs--card>.el-tabs__header .el-tabs__nav-wrap::after{content:none}.el-tabs__nav-wrap.is-scrollable{padding:0 20px;-webkit-box-sizing:border-box;box-sizing:border-box}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{position:absolute;cursor:pointer;line-height:44px;font-size:12px;color:#909399}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{white-space:nowrap;position:relative;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;float:left;z-index:2}.el-tabs__nav.is-stretch{min-width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.el-tabs__nav.is-stretch>*{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center}.el-tabs__item{padding:0 20px;height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;line-height:40px;display:inline-block;list-style:none;font-size:14px;font-weight:500;color:#303133;position:relative}.el-tabs__item:focus,.el-tabs__item:focus:active{outline:0}.el-tabs__item:focus.is-active.is-focus:not(:active){-webkit-box-shadow:0 0 2px 2px #409EFF inset;box-shadow:0 0 2px 2px #409EFF inset;border-radius:3px}.el-tabs__item .el-icon-close{border-radius:50%;text-align:center;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);margin-left:5px}.el-tabs__item .el-icon-close:before{-webkit-transform:scale(.9);transform:scale(.9);display:inline-block}.el-tabs__item .el-icon-close:hover{background-color:#C0C4CC;color:#FFF}.el-tabs__item.is-active{color:#409EFF}.el-tabs__item:hover{color:#409EFF;cursor:pointer}.el-tabs__item.is-disabled{color:#C0C4CC;cursor:default}.el-tabs__content{overflow:hidden;position:relative}.el-tabs--card>.el-tabs__header{border-bottom:1px solid #E4E7ED}.el-tabs--card>.el-tabs__header .el-tabs__nav{border:1px solid #E4E7ED;border-bottom:none;border-radius:4px 4px 0 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-tabs--card>.el-tabs__header .el-tabs__active-bar{display:none}.el-tabs--card>.el-tabs__header .el-tabs__item .el-icon-close{position:relative;font-size:12px;width:0;height:14px;vertical-align:middle;line-height:15px;overflow:hidden;top:-1px;right:-2px;-webkit-transform-origin:100% 50%;transform-origin:100% 50%}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .el-icon-close,.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .el-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid transparent;border-left:1px solid #E4E7ED;-webkit-transition:color .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1);transition:color .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1)}.el-tabs--card>.el-tabs__header .el-tabs__item:first-child{border-left:none}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border-bottom-color:#FFF}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.el-tabs--border-card{background:#FFF;border:1px solid #DCDFE6;-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04);box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04)}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:#F5F7FA;border-bottom:1px solid #E4E7ED;margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__item{-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);border:1px solid transparent;margin-top:-1px;color:#909399}.el-tabs--border-card>.el-tabs__header .el-tabs__item+.el-tabs__item,.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child{margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{color:#409EFF;background-color:#FFF;border-right-color:#DCDFE6;border-left-color:#DCDFE6}.el-tabs--border-card>.el-tabs__header .el-tabs__item:not(.is-disabled):hover{color:#409EFF}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-disabled{color:#C0C4CC}.el-tabs--border-card>.el-tabs__header .is-scrollable .el-tabs__item:first-child{margin-left:0}.el-tabs--bottom .el-tabs__item.is-bottom:nth-child(2),.el-tabs--bottom .el-tabs__item.is-top:nth-child(2),.el-tabs--top .el-tabs__item.is-bottom:nth-child(2),.el-tabs--top .el-tabs__item.is-top:nth-child(2){padding-left:0}.el-tabs--bottom .el-tabs__item.is-bottom:last-child,.el-tabs--bottom .el-tabs__item.is-top:last-child,.el-tabs--top .el-tabs__item.is-bottom:last-child,.el-tabs--top .el-tabs__item.is-top:last-child{padding-right:0}.el-tabs--bottom .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:20px}.el-tabs--bottom .el-tabs--left>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:last-child{padding-right:20px}.el-tabs--bottom .el-tabs__header.is-bottom{margin-bottom:0;margin-top:10px}.el-tabs--bottom.el-tabs--border-card .el-tabs__header.is-bottom{border-bottom:0;border-top:1px solid #DCDFE6}.el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap.is-bottom{margin-top:-1px;margin-bottom:0}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active){border:1px solid transparent}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom{margin:0 -1px -1px}.el-tabs--left,.el-tabs--right{overflow:hidden}.el-tabs--left .el-tabs__header.is-left,.el-tabs--left .el-tabs__header.is-right,.el-tabs--left .el-tabs__nav-scroll,.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__header.is-left,.el-tabs--right .el-tabs__header.is-right,.el-tabs--right .el-tabs__nav-scroll,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{height:100%}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__active-bar.is-right,.el-tabs--right .el-tabs__active-bar.is-left,.el-tabs--right .el-tabs__active-bar.is-right{top:0;bottom:auto;width:2px;height:auto}.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{margin-bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{height:30px;line-height:30px;width:100%;text-align:center;cursor:pointer}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i{-webkit-transform:rotateZ(90deg);transform:rotateZ(90deg)}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{left:auto;top:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next{right:auto;bottom:0}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__nav-wrap.is-left::after{right:0;left:auto}.el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--left .el-tabs__nav-wrap.is-right.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.el-tabs--left .el-tabs__nav-wrap.is-left::after,.el-tabs--left .el-tabs__nav-wrap.is-right::after,.el-tabs--right .el-tabs__nav-wrap.is-left::after,.el-tabs--right .el-tabs__nav-wrap.is-right::after{height:100%;width:2px;bottom:auto;top:0}.el-tabs--left .el-tabs__nav.is-left,.el-tabs--left .el-tabs__nav.is-right,.el-tabs--right .el-tabs__nav.is-left,.el-tabs--right .el-tabs__nav.is-right{float:none}.el-tabs--left .el-tabs__item.is-left,.el-tabs--left .el-tabs__item.is-right,.el-tabs--right .el-tabs__item.is-left,.el-tabs--right .el-tabs__item.is-right{display:block}.el-tabs--left.el-tabs--card .el-tabs__active-bar.is-left,.el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right{display:none}.el-tabs--left .el-tabs__header.is-left{float:left;margin-bottom:0;margin-right:10px}.el-tabs--left .el-tabs__nav-wrap.is-left{margin-right:-1px}.el-tabs--left .el-tabs__item.is-left{text-align:right}.el-tabs--left.el-tabs--card .el-tabs__item.is-left{border-left:none;border-right:1px solid #E4E7ED;border-bottom:none;border-top:1px solid #E4E7ED;text-align:left}.el-tabs--left.el-tabs--card .el-tabs__item.is-left:first-child{border-right:1px solid #E4E7ED;border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active{border:1px solid #E4E7ED;border-right-color:#fff;border-left:none;border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:first-child{border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:last-child{border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__nav{border-radius:4px 0 0 4px;border-bottom:1px solid #E4E7ED;border-right:none}.el-tabs--left.el-tabs--card .el-tabs__new-tab{float:none}.el-tabs--left.el-tabs--border-card .el-tabs__header.is-left{border-right:1px solid #dfe4ed}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left{border:1px solid transparent;margin:-1px 0 -1px -1px}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active{border-color:#d1dbe5 transparent}.el-tabs--right .el-tabs__header.is-right{float:right;margin-bottom:0;margin-left:10px}.el-tabs--right .el-tabs__nav-wrap.is-right{margin-left:-1px}.el-tabs--right .el-tabs__nav-wrap.is-right::after{left:0;right:auto}.el-tabs--right .el-tabs__active-bar.is-right{left:0}.el-tabs--right.el-tabs--card .el-tabs__item.is-right{border-bottom:none;border-top:1px solid #E4E7ED}.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child{border-left:1px solid #E4E7ED;border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active{border:1px solid #E4E7ED;border-left-color:#fff;border-right:none;border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:first-child{border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:last-child{border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__nav{border-radius:0 4px 4px 0;border-bottom:1px solid #E4E7ED;border-left:none}.el-tabs--right.el-tabs--border-card .el-tabs__header.is-right{border-left:1px solid #dfe4ed}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right{border:1px solid transparent;margin:-1px -1px -1px 0}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active{border-color:#d1dbe5 transparent}.slideInLeft-transition,.slideInRight-transition{display:inline-block}.slideInRight-enter{-webkit-animation:slideInRight-enter .3s;animation:slideInRight-enter .3s}.slideInRight-leave{position:absolute;left:0;right:0;-webkit-animation:slideInRight-leave .3s;animation:slideInRight-leave .3s}.slideInLeft-enter{-webkit-animation:slideInLeft-enter .3s;animation:slideInLeft-enter .3s}.slideInLeft-leave{position:absolute;left:0;right:0;-webkit-animation:slideInLeft-leave .3s;animation:slideInLeft-leave .3s}@-webkit-keyframes slideInRight-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInRight-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes slideInRight-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%);opacity:0}}@keyframes slideInRight-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%);opacity:0}}@-webkit-keyframes slideInLeft-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInLeft-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes slideInLeft-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}}@keyframes slideInLeft-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}}.el-tree{position:relative;cursor:default;background:#FFF;color:#606266}.el-tree__empty-block{position:relative;min-height:60px;text-align:center;width:100%;height:100%}.el-tree__empty-text{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);color:#909399;font-size:14px}.el-tree__drop-indicator{position:absolute;left:0;right:0;height:1px;background-color:#409EFF}.el-tree-node{white-space:nowrap;outline:0}.el-tree-node:focus>.el-tree-node__content{background-color:#F5F7FA}.el-tree-node.is-drop-inner>.el-tree-node__content .el-tree-node__label{background-color:#409EFF;color:#fff}.el-tree-node__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:26px;cursor:pointer}.el-tree-node__content>.el-tree-node__expand-icon{padding:6px}.el-tree-node__content>label.el-checkbox{margin-right:8px}.el-tree-node__content:hover{background-color:#F5F7FA}.el-tree.is-dragging .el-tree-node__content{cursor:move}.el-tree.is-dragging.is-drop-not-allow .el-tree-node__content{cursor:not-allowed}.el-tree-node__expand-icon{cursor:pointer;color:#C0C4CC;font-size:12px;-webkit-transform:rotate(0);transform:rotate(0);-webkit-transition:-webkit-transform .3s ease-in-out;transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-transform .3s ease-in-out}.el-tree-node__expand-icon.expanded{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-tree-node__expand-icon.is-leaf{color:transparent;cursor:default}.el-tree-node__label{font-size:14px}.el-tree-node__loading-icon{margin-right:8px;font-size:14px;color:#C0C4CC}.el-tree-node>.el-tree-node__children{overflow:hidden;background-color:transparent}.el-tree-node.is-expanded>.el-tree-node__children{display:block}.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{background-color:#f0f7ff}.el-alert{width:100%;padding:8px 16px;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;position:relative;background-color:#FFF;overflow:hidden;opacity:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-transition:opacity .2s;transition:opacity .2s}.el-alert.is-light .el-alert__closebtn{color:#C0C4CC}.el-alert.is-dark .el-alert__closebtn,.el-alert.is-dark .el-alert__description{color:#FFF}.el-alert.is-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-alert--success.is-light{background-color:#f0f9eb;color:#67C23A}.el-alert--success.is-light .el-alert__description{color:#67C23A}.el-alert--success.is-dark{background-color:#67C23A;color:#FFF}.el-alert--info.is-light{background-color:#f4f4f5;color:#909399}.el-alert--info.is-dark{background-color:#909399;color:#FFF}.el-alert--info .el-alert__description{color:#909399}.el-alert--warning.is-light{background-color:#fdf6ec;color:#E6A23C}.el-alert--warning.is-light .el-alert__description{color:#E6A23C}.el-alert--warning.is-dark{background-color:#E6A23C;color:#FFF}.el-alert--error.is-light{background-color:#fef0f0;color:#F56C6C}.el-alert--error.is-light .el-alert__description{color:#F56C6C}.el-alert--error.is-dark{background-color:#F56C6C;color:#FFF}.el-alert__content{display:table-cell;padding:0 8px}.el-alert__icon{font-size:16px;width:16px}.el-alert__icon.is-big{font-size:28px;width:28px}.el-alert__title{font-size:13px;line-height:18px}.el-alert__title.is-bold{font-weight:700}.el-alert .el-alert__description{font-size:12px;margin:5px 0 0}.el-alert__closebtn{font-size:12px;opacity:1;position:absolute;top:12px;right:15px;cursor:pointer}.el-alert-fade-enter,.el-alert-fade-leave-active,.el-loading-fade-enter,.el-loading-fade-leave-active,.el-notification-fade-leave-active{opacity:0}.el-alert__closebtn.is-customed{font-style:normal;font-size:13px;top:9px}.el-notification{display:-webkit-box;display:-ms-flexbox;display:flex;width:330px;padding:14px 26px 14px 13px;border-radius:8px;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid #EBEEF5;position:fixed;background-color:#FFF;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-transition:opacity .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;transition:opacity .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;transition:opacity .3s,transform .3s,left .3s,right .3s,top .4s,bottom .3s;transition:opacity .3s,transform .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;overflow:hidden}.el-notification.right{right:16px}.el-notification.left{left:16px}.el-notification__group{margin-left:13px;margin-right:8px}.el-notification__title{font-weight:700;font-size:16px;color:#303133;margin:0}.el-notification__content{font-size:14px;line-height:21px;margin:6px 0 0;color:#606266;text-align:justify}.el-notification__content p{margin:0}.el-notification__icon{height:24px;width:24px;font-size:24px}.el-notification__closeBtn{position:absolute;top:18px;right:15px;cursor:pointer;color:#909399;font-size:16px}.el-notification__closeBtn:hover{color:#606266}.el-notification .el-icon-success{color:#67C23A}.el-notification .el-icon-error{color:#F56C6C}.el-notification .el-icon-info{color:#909399}.el-notification .el-icon-warning{color:#E6A23C}.el-notification-fade-enter.right{right:0;-webkit-transform:translateX(100%);transform:translateX(100%)}.el-notification-fade-enter.left{left:0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}.el-input-number{position:relative;display:inline-block;width:180px;line-height:38px}.el-input-number .el-input{display:block}.el-input-number .el-input__inner{-webkit-appearance:none;padding-left:50px;padding-right:50px;text-align:center}.el-input-number__decrease,.el-input-number__increase{position:absolute;z-index:1;top:1px;width:40px;height:auto;text-align:center;background:#F5F7FA;color:#606266;cursor:pointer;font-size:13px}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:#409EFF}.el-input-number__decrease:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled),.el-input-number__increase:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled){border-color:#409EFF}.el-input-number__decrease.is-disabled,.el-input-number__increase.is-disabled{color:#C0C4CC;cursor:not-allowed}.el-input-number__increase{right:1px;border-radius:0 4px 4px 0;border-left:1px solid #DCDFE6}.el-input-number__decrease{left:1px;border-radius:4px 0 0 4px;border-right:1px solid #DCDFE6}.el-input-number.is-disabled .el-input-number__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:#E4E7ED;color:#E4E7ED}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:#E4E7ED;cursor:not-allowed}.el-input-number--medium{width:200px;line-height:34px}.el-input-number--medium .el-input-number__decrease,.el-input-number--medium .el-input-number__increase{width:36px;font-size:14px}.el-input-number--medium .el-input__inner{padding-left:43px;padding-right:43px}.el-input-number--small{width:130px;line-height:30px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{width:32px;font-size:13px}.el-input-number--small .el-input-number__decrease [class*=el-icon],.el-input-number--small .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.9);transform:scale(.9)}.el-input-number--small .el-input__inner{padding-left:39px;padding-right:39px}.el-input-number--mini{width:130px;line-height:26px}.el-input-number--mini .el-input-number__decrease,.el-input-number--mini .el-input-number__increase{width:28px;font-size:12px}.el-input-number--mini .el-input-number__decrease [class*=el-icon],.el-input-number--mini .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.8);transform:scale(.8)}.el-input-number--mini .el-input__inner{padding-left:35px;padding-right:35px}.el-input-number.is-without-controls .el-input__inner{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__inner{padding-left:15px;padding-right:50px}.el-input-number.is-controls-right .el-input-number__decrease,.el-input-number.is-controls-right .el-input-number__increase{height:auto;line-height:19px}.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.8);transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-radius:0 4px 0 0;border-bottom:1px solid #DCDFE6}.el-input-number.is-controls-right .el-input-number__decrease{right:1px;bottom:1px;top:auto;left:auto;border-right:none;border-left:1px solid #DCDFE6;border-radius:0 0 4px}.el-input-number.is-controls-right[class*=medium] [class*=decrease],.el-input-number.is-controls-right[class*=medium] [class*=increase]{line-height:17px}.el-input-number.is-controls-right[class*=small] [class*=decrease],.el-input-number.is-controls-right[class*=small] [class*=increase]{line-height:15px}.el-input-number.is-controls-right[class*=mini] [class*=decrease],.el-input-number.is-controls-right[class*=mini] [class*=increase]{line-height:13px}.el-tooltip__popper{position:absolute;border-radius:4px;padding:10px;z-index:2000;font-size:12px;line-height:1.2;min-width:10px;word-wrap:break-word}.el-tooltip__popper .popper__arrow,.el-tooltip__popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-tooltip__popper .popper__arrow{border-width:6px}.el-tooltip__popper .popper__arrow::after{content:" ";border-width:5px}.el-progress-bar__inner::after,.el-row::after,.el-row::before,.el-slider::after,.el-slider::before,.el-slider__button-wrapper::after,.el-upload-cover::after{content:""}.el-tooltip__popper[x-placement^=top]{margin-bottom:12px}.el-tooltip__popper[x-placement^=top] .popper__arrow{bottom:-6px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-5px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=bottom]{margin-top:12px}.el-tooltip__popper[x-placement^=bottom] .popper__arrow{top:-6px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-5px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=right]{margin-left:12px}.el-tooltip__popper[x-placement^=right] .popper__arrow{left:-6px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=right] .popper__arrow::after{bottom:-5px;left:1px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=left]{margin-right:12px}.el-tooltip__popper[x-placement^=left] .popper__arrow{right:-6px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-5px;margin-left:-5px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper.is-dark{background:#303133;color:#FFF}.el-tooltip__popper.is-light{background:#FFF;border:1px solid #303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow{border-top-color:#303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow::after{border-top-color:#FFF}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow{border-bottom-color:#303133}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow::after{border-bottom-color:#FFF}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow{border-left-color:#303133}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow::after{border-left-color:#FFF}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow{border-right-color:#303133}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow::after{border-right-color:#FFF}.el-slider::after,.el-slider::before{display:table}.el-slider__button-wrapper .el-tooltip,.el-slider__button-wrapper::after{vertical-align:middle;display:inline-block}.el-slider::after{clear:both}.el-slider__runway{width:100%;height:6px;margin:16px 0;background-color:#E4E7ED;border-radius:3px;position:relative;cursor:pointer;vertical-align:middle}.el-slider__runway.show-input{margin-right:160px;width:auto}.el-slider__runway.disabled{cursor:default}.el-slider__runway.disabled .el-slider__bar{background-color:#C0C4CC}.el-slider__runway.disabled .el-slider__button{border-color:#C0C4CC}.el-slider__runway.disabled .el-slider__button-wrapper.dragging,.el-slider__runway.disabled .el-slider__button-wrapper.hover,.el-slider__runway.disabled .el-slider__button-wrapper:hover{cursor:not-allowed}.el-slider__runway.disabled .el-slider__button.dragging,.el-slider__runway.disabled .el-slider__button.hover,.el-slider__runway.disabled .el-slider__button:hover{-webkit-transform:scale(1);transform:scale(1);cursor:not-allowed}.el-slider__button-wrapper,.el-slider__stop{-webkit-transform:translateX(-50%);position:absolute}.el-slider__input{float:right;margin-top:3px;width:130px}.el-slider__input.el-input-number--mini{margin-top:5px}.el-slider__input.el-input-number--medium{margin-top:0}.el-slider__input.el-input-number--large{margin-top:-2px}.el-slider__bar{height:6px;background-color:#409EFF;border-top-left-radius:3px;border-bottom-left-radius:3px;position:absolute}.el-slider__button-wrapper{height:36px;width:36px;z-index:1001;top:-15px;transform:translateX(-50%);background-color:transparent;text-align:center;user-select:none;line-height:normal}.el-slider__button-wrapper::after{height:100%}.el-slider__button-wrapper.hover,.el-slider__button-wrapper:hover{cursor:-webkit-grab;cursor:grab}.el-slider__button-wrapper.dragging{cursor:-webkit-grabbing;cursor:grabbing}.el-slider__button{width:16px;height:16px;border:2px solid #409EFF;background-color:#FFF;border-radius:50%;-webkit-transition:.2s;transition:.2s;user-select:none}.el-image-viewer__btn,.el-step__icon-inner{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.el-slider__button.dragging,.el-slider__button.hover,.el-slider__button:hover{-webkit-transform:scale(1.2);transform:scale(1.2)}.el-slider__button.hover,.el-slider__button:hover{cursor:-webkit-grab;cursor:grab}.el-slider__button.dragging{cursor:-webkit-grabbing;cursor:grabbing}.el-slider__stop{height:6px;width:6px;border-radius:100%;background-color:#FFF;transform:translateX(-50%)}.el-slider__marks{top:0;left:12px;width:18px;height:100%}.el-slider__marks-text{position:absolute;-webkit-transform:translateX(-50%);transform:translateX(-50%);font-size:14px;color:#909399;margin-top:15px}.el-slider.is-vertical{position:relative}.el-slider.is-vertical .el-slider__runway{width:6px;height:100%;margin:0 16px}.el-slider.is-vertical .el-slider__bar{width:6px;height:auto;border-radius:0 0 3px 3px}.el-slider.is-vertical .el-slider__button-wrapper{top:auto;left:-15px;-webkit-transform:translateY(50%);transform:translateY(50%)}.el-slider.is-vertical .el-slider__stop{-webkit-transform:translateY(50%);transform:translateY(50%)}.el-slider.is-vertical.el-slider--with-input{padding-bottom:58px}.el-slider.is-vertical.el-slider--with-input .el-slider__input{overflow:visible;float:none;position:absolute;bottom:22px;width:36px;margin-top:15px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input__inner{text-align:center;padding-left:5px;padding-right:5px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{top:32px;margin-top:-1px;border:1px solid #DCDFE6;line-height:20px;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease{width:18px;right:18px;border-bottom-left-radius:4px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{width:19px;border-bottom-right-radius:4px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase~.el-input .el-input__inner{border-bottom-left-radius:0;border-bottom-right-radius:0}.el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__increase{border-color:#C0C4CC}.el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__increase{border-color:#409EFF}.el-slider.is-vertical .el-slider__marks-text{margin-top:0;left:15px;-webkit-transform:translateY(50%);transform:translateY(50%)}.el-loading-parent--relative{position:relative!important}.el-loading-parent--hidden{overflow:hidden!important}.el-loading-mask{position:absolute;z-index:2000;background-color:rgba(255,255,255,.9);margin:0;top:0;right:0;bottom:0;left:0;-webkit-transition:opacity .3s;transition:opacity .3s}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:-25px}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{height:50px;width:50px}.el-loading-spinner{top:50%;margin-top:-21px;width:100%;text-align:center;position:absolute}.el-col-pull-0,.el-col-pull-1,.el-col-pull-10,.el-col-pull-11,.el-col-pull-13,.el-col-pull-14,.el-col-pull-15,.el-col-pull-16,.el-col-pull-17,.el-col-pull-18,.el-col-pull-19,.el-col-pull-2,.el-col-pull-20,.el-col-pull-21,.el-col-pull-22,.el-col-pull-23,.el-col-pull-24,.el-col-pull-3,.el-col-pull-4,.el-col-pull-5,.el-col-pull-6,.el-col-pull-7,.el-col-pull-8,.el-col-pull-9,.el-col-push-0,.el-col-push-1,.el-col-push-10,.el-col-push-11,.el-col-push-12,.el-col-push-13,.el-col-push-14,.el-col-push-15,.el-col-push-16,.el-col-push-17,.el-col-push-18,.el-col-push-19,.el-col-push-2,.el-col-push-20,.el-col-push-21,.el-col-push-22,.el-col-push-23,.el-col-push-24,.el-col-push-3,.el-col-push-4,.el-col-push-5,.el-col-push-6,.el-col-push-7,.el-col-push-8,.el-col-push-9,.el-row{position:relative}.el-loading-spinner .el-loading-text{color:#409EFF;margin:3px 0;font-size:14px}.el-loading-spinner .circular{height:42px;width:42px;-webkit-animation:loading-rotate 2s linear infinite;animation:loading-rotate 2s linear infinite}.el-loading-spinner .path{-webkit-animation:loading-dash 1.5s ease-in-out infinite;animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:#409EFF;stroke-linecap:round}.el-loading-spinner i{color:#409EFF}@-webkit-keyframes loading-rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes loading-rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}100%{stroke-dasharray:90,150;stroke-dashoffset:-120px}}@keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}100%{stroke-dasharray:90,150;stroke-dashoffset:-120px}}.el-row{-webkit-box-sizing:border-box;box-sizing:border-box}.el-row::after,.el-row::before{display:table}.el-row::after{clear:both}.el-row--flex{display:-webkit-box;display:-ms-flexbox;display:flex}.el-col-0,.el-row--flex:after,.el-row--flex:before{display:none}.el-row--flex.is-justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-row--flex.is-justify-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.el-row--flex.is-justify-space-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.el-row--flex.is-justify-space-around{-ms-flex-pack:distribute;justify-content:space-around}.el-row--flex.is-align-middle{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-row--flex.is-align-bottom{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}[class*=el-col-]{float:left;-webkit-box-sizing:border-box;box-sizing:border-box}.el-upload--picture-card,.el-upload-dragger{-webkit-box-sizing:border-box;cursor:pointer}.el-col-0{width:0%}.el-col-offset-0{margin-left:0}.el-col-pull-0{right:0}.el-col-push-0{left:0}.el-col-1{width:4.16667%}.el-col-offset-1{margin-left:4.16667%}.el-col-pull-1{right:4.16667%}.el-col-push-1{left:4.16667%}.el-col-2{width:8.33333%}.el-col-offset-2{margin-left:8.33333%}.el-col-pull-2{right:8.33333%}.el-col-push-2{left:8.33333%}.el-col-3{width:12.5%}.el-col-offset-3{margin-left:12.5%}.el-col-pull-3{right:12.5%}.el-col-push-3{left:12.5%}.el-col-4{width:16.66667%}.el-col-offset-4{margin-left:16.66667%}.el-col-pull-4{right:16.66667%}.el-col-push-4{left:16.66667%}.el-col-5{width:20.83333%}.el-col-offset-5{margin-left:20.83333%}.el-col-pull-5{right:20.83333%}.el-col-push-5{left:20.83333%}.el-col-6{width:25%}.el-col-offset-6{margin-left:25%}.el-col-pull-6{right:25%}.el-col-push-6{left:25%}.el-col-7{width:29.16667%}.el-col-offset-7{margin-left:29.16667%}.el-col-pull-7{right:29.16667%}.el-col-push-7{left:29.16667%}.el-col-8{width:33.33333%}.el-col-offset-8{margin-left:33.33333%}.el-col-pull-8{right:33.33333%}.el-col-push-8{left:33.33333%}.el-col-9{width:37.5%}.el-col-offset-9{margin-left:37.5%}.el-col-pull-9{right:37.5%}.el-col-push-9{left:37.5%}.el-col-10{width:41.66667%}.el-col-offset-10{margin-left:41.66667%}.el-col-pull-10{right:41.66667%}.el-col-push-10{left:41.66667%}.el-col-11{width:45.83333%}.el-col-offset-11{margin-left:45.83333%}.el-col-pull-11{right:45.83333%}.el-col-push-11{left:45.83333%}.el-col-12{width:50%}.el-col-offset-12{margin-left:50%}.el-col-pull-12{position:relative;right:50%}.el-col-push-12{left:50%}.el-col-13{width:54.16667%}.el-col-offset-13{margin-left:54.16667%}.el-col-pull-13{right:54.16667%}.el-col-push-13{left:54.16667%}.el-col-14{width:58.33333%}.el-col-offset-14{margin-left:58.33333%}.el-col-pull-14{right:58.33333%}.el-col-push-14{left:58.33333%}.el-col-15{width:62.5%}.el-col-offset-15{margin-left:62.5%}.el-col-pull-15{right:62.5%}.el-col-push-15{left:62.5%}.el-col-16{width:66.66667%}.el-col-offset-16{margin-left:66.66667%}.el-col-pull-16{right:66.66667%}.el-col-push-16{left:66.66667%}.el-col-17{width:70.83333%}.el-col-offset-17{margin-left:70.83333%}.el-col-pull-17{right:70.83333%}.el-col-push-17{left:70.83333%}.el-col-18{width:75%}.el-col-offset-18{margin-left:75%}.el-col-pull-18{right:75%}.el-col-push-18{left:75%}.el-col-19{width:79.16667%}.el-col-offset-19{margin-left:79.16667%}.el-col-pull-19{right:79.16667%}.el-col-push-19{left:79.16667%}.el-col-20{width:83.33333%}.el-col-offset-20{margin-left:83.33333%}.el-col-pull-20{right:83.33333%}.el-col-push-20{left:83.33333%}.el-col-21{width:87.5%}.el-col-offset-21{margin-left:87.5%}.el-col-pull-21{right:87.5%}.el-col-push-21{left:87.5%}.el-col-22{width:91.66667%}.el-col-offset-22{margin-left:91.66667%}.el-col-pull-22{right:91.66667%}.el-col-push-22{left:91.66667%}.el-col-23{width:95.83333%}.el-col-offset-23{margin-left:95.83333%}.el-col-pull-23{right:95.83333%}.el-col-push-23{left:95.83333%}.el-col-24{width:100%}.el-col-offset-24{margin-left:100%}.el-col-pull-24{right:100%}.el-col-push-24{left:100%}@media only screen and (max-width:767px){.el-col-xs-0{display:none;width:0%}.el-col-xs-offset-0{margin-left:0}.el-col-xs-pull-0{position:relative;right:0}.el-col-xs-push-0{position:relative;left:0}.el-col-xs-1{width:4.16667%}.el-col-xs-offset-1{margin-left:4.16667%}.el-col-xs-pull-1{position:relative;right:4.16667%}.el-col-xs-push-1{position:relative;left:4.16667%}.el-col-xs-2{width:8.33333%}.el-col-xs-offset-2{margin-left:8.33333%}.el-col-xs-pull-2{position:relative;right:8.33333%}.el-col-xs-push-2{position:relative;left:8.33333%}.el-col-xs-3{width:12.5%}.el-col-xs-offset-3{margin-left:12.5%}.el-col-xs-pull-3{position:relative;right:12.5%}.el-col-xs-push-3{position:relative;left:12.5%}.el-col-xs-4{width:16.66667%}.el-col-xs-offset-4{margin-left:16.66667%}.el-col-xs-pull-4{position:relative;right:16.66667%}.el-col-xs-push-4{position:relative;left:16.66667%}.el-col-xs-5{width:20.83333%}.el-col-xs-offset-5{margin-left:20.83333%}.el-col-xs-pull-5{position:relative;right:20.83333%}.el-col-xs-push-5{position:relative;left:20.83333%}.el-col-xs-6{width:25%}.el-col-xs-offset-6{margin-left:25%}.el-col-xs-pull-6{position:relative;right:25%}.el-col-xs-push-6{position:relative;left:25%}.el-col-xs-7{width:29.16667%}.el-col-xs-offset-7{margin-left:29.16667%}.el-col-xs-pull-7{position:relative;right:29.16667%}.el-col-xs-push-7{position:relative;left:29.16667%}.el-col-xs-8{width:33.33333%}.el-col-xs-offset-8{margin-left:33.33333%}.el-col-xs-pull-8{position:relative;right:33.33333%}.el-col-xs-push-8{position:relative;left:33.33333%}.el-col-xs-9{width:37.5%}.el-col-xs-offset-9{margin-left:37.5%}.el-col-xs-pull-9{position:relative;right:37.5%}.el-col-xs-push-9{position:relative;left:37.5%}.el-col-xs-10{width:41.66667%}.el-col-xs-offset-10{margin-left:41.66667%}.el-col-xs-pull-10{position:relative;right:41.66667%}.el-col-xs-push-10{position:relative;left:41.66667%}.el-col-xs-11{width:45.83333%}.el-col-xs-offset-11{margin-left:45.83333%}.el-col-xs-pull-11{position:relative;right:45.83333%}.el-col-xs-push-11{position:relative;left:45.83333%}.el-col-xs-12{width:50%}.el-col-xs-offset-12{margin-left:50%}.el-col-xs-pull-12{position:relative;right:50%}.el-col-xs-push-12{position:relative;left:50%}.el-col-xs-13{width:54.16667%}.el-col-xs-offset-13{margin-left:54.16667%}.el-col-xs-pull-13{position:relative;right:54.16667%}.el-col-xs-push-13{position:relative;left:54.16667%}.el-col-xs-14{width:58.33333%}.el-col-xs-offset-14{margin-left:58.33333%}.el-col-xs-pull-14{position:relative;right:58.33333%}.el-col-xs-push-14{position:relative;left:58.33333%}.el-col-xs-15{width:62.5%}.el-col-xs-offset-15{margin-left:62.5%}.el-col-xs-pull-15{position:relative;right:62.5%}.el-col-xs-push-15{position:relative;left:62.5%}.el-col-xs-16{width:66.66667%}.el-col-xs-offset-16{margin-left:66.66667%}.el-col-xs-pull-16{position:relative;right:66.66667%}.el-col-xs-push-16{position:relative;left:66.66667%}.el-col-xs-17{width:70.83333%}.el-col-xs-offset-17{margin-left:70.83333%}.el-col-xs-pull-17{position:relative;right:70.83333%}.el-col-xs-push-17{position:relative;left:70.83333%}.el-col-xs-18{width:75%}.el-col-xs-offset-18{margin-left:75%}.el-col-xs-pull-18{position:relative;right:75%}.el-col-xs-push-18{position:relative;left:75%}.el-col-xs-19{width:79.16667%}.el-col-xs-offset-19{margin-left:79.16667%}.el-col-xs-pull-19{position:relative;right:79.16667%}.el-col-xs-push-19{position:relative;left:79.16667%}.el-col-xs-20{width:83.33333%}.el-col-xs-offset-20{margin-left:83.33333%}.el-col-xs-pull-20{position:relative;right:83.33333%}.el-col-xs-push-20{position:relative;left:83.33333%}.el-col-xs-21{width:87.5%}.el-col-xs-offset-21{margin-left:87.5%}.el-col-xs-pull-21{position:relative;right:87.5%}.el-col-xs-push-21{position:relative;left:87.5%}.el-col-xs-22{width:91.66667%}.el-col-xs-offset-22{margin-left:91.66667%}.el-col-xs-pull-22{position:relative;right:91.66667%}.el-col-xs-push-22{position:relative;left:91.66667%}.el-col-xs-23{width:95.83333%}.el-col-xs-offset-23{margin-left:95.83333%}.el-col-xs-pull-23{position:relative;right:95.83333%}.el-col-xs-push-23{position:relative;left:95.83333%}.el-col-xs-24{width:100%}.el-col-xs-offset-24{margin-left:100%}.el-col-xs-pull-24{position:relative;right:100%}.el-col-xs-push-24{position:relative;left:100%}}@media only screen and (min-width:768px){.el-col-sm-0{display:none;width:0%}.el-col-sm-offset-0{margin-left:0}.el-col-sm-pull-0{position:relative;right:0}.el-col-sm-push-0{position:relative;left:0}.el-col-sm-1{width:4.16667%}.el-col-sm-offset-1{margin-left:4.16667%}.el-col-sm-pull-1{position:relative;right:4.16667%}.el-col-sm-push-1{position:relative;left:4.16667%}.el-col-sm-2{width:8.33333%}.el-col-sm-offset-2{margin-left:8.33333%}.el-col-sm-pull-2{position:relative;right:8.33333%}.el-col-sm-push-2{position:relative;left:8.33333%}.el-col-sm-3{width:12.5%}.el-col-sm-offset-3{margin-left:12.5%}.el-col-sm-pull-3{position:relative;right:12.5%}.el-col-sm-push-3{position:relative;left:12.5%}.el-col-sm-4{width:16.66667%}.el-col-sm-offset-4{margin-left:16.66667%}.el-col-sm-pull-4{position:relative;right:16.66667%}.el-col-sm-push-4{position:relative;left:16.66667%}.el-col-sm-5{width:20.83333%}.el-col-sm-offset-5{margin-left:20.83333%}.el-col-sm-pull-5{position:relative;right:20.83333%}.el-col-sm-push-5{position:relative;left:20.83333%}.el-col-sm-6{width:25%}.el-col-sm-offset-6{margin-left:25%}.el-col-sm-pull-6{position:relative;right:25%}.el-col-sm-push-6{position:relative;left:25%}.el-col-sm-7{width:29.16667%}.el-col-sm-offset-7{margin-left:29.16667%}.el-col-sm-pull-7{position:relative;right:29.16667%}.el-col-sm-push-7{position:relative;left:29.16667%}.el-col-sm-8{width:33.33333%}.el-col-sm-offset-8{margin-left:33.33333%}.el-col-sm-pull-8{position:relative;right:33.33333%}.el-col-sm-push-8{position:relative;left:33.33333%}.el-col-sm-9{width:37.5%}.el-col-sm-offset-9{margin-left:37.5%}.el-col-sm-pull-9{position:relative;right:37.5%}.el-col-sm-push-9{position:relative;left:37.5%}.el-col-sm-10{width:41.66667%}.el-col-sm-offset-10{margin-left:41.66667%}.el-col-sm-pull-10{position:relative;right:41.66667%}.el-col-sm-push-10{position:relative;left:41.66667%}.el-col-sm-11{width:45.83333%}.el-col-sm-offset-11{margin-left:45.83333%}.el-col-sm-pull-11{position:relative;right:45.83333%}.el-col-sm-push-11{position:relative;left:45.83333%}.el-col-sm-12{width:50%}.el-col-sm-offset-12{margin-left:50%}.el-col-sm-pull-12{position:relative;right:50%}.el-col-sm-push-12{position:relative;left:50%}.el-col-sm-13{width:54.16667%}.el-col-sm-offset-13{margin-left:54.16667%}.el-col-sm-pull-13{position:relative;right:54.16667%}.el-col-sm-push-13{position:relative;left:54.16667%}.el-col-sm-14{width:58.33333%}.el-col-sm-offset-14{margin-left:58.33333%}.el-col-sm-pull-14{position:relative;right:58.33333%}.el-col-sm-push-14{position:relative;left:58.33333%}.el-col-sm-15{width:62.5%}.el-col-sm-offset-15{margin-left:62.5%}.el-col-sm-pull-15{position:relative;right:62.5%}.el-col-sm-push-15{position:relative;left:62.5%}.el-col-sm-16{width:66.66667%}.el-col-sm-offset-16{margin-left:66.66667%}.el-col-sm-pull-16{position:relative;right:66.66667%}.el-col-sm-push-16{position:relative;left:66.66667%}.el-col-sm-17{width:70.83333%}.el-col-sm-offset-17{margin-left:70.83333%}.el-col-sm-pull-17{position:relative;right:70.83333%}.el-col-sm-push-17{position:relative;left:70.83333%}.el-col-sm-18{width:75%}.el-col-sm-offset-18{margin-left:75%}.el-col-sm-pull-18{position:relative;right:75%}.el-col-sm-push-18{position:relative;left:75%}.el-col-sm-19{width:79.16667%}.el-col-sm-offset-19{margin-left:79.16667%}.el-col-sm-pull-19{position:relative;right:79.16667%}.el-col-sm-push-19{position:relative;left:79.16667%}.el-col-sm-20{width:83.33333%}.el-col-sm-offset-20{margin-left:83.33333%}.el-col-sm-pull-20{position:relative;right:83.33333%}.el-col-sm-push-20{position:relative;left:83.33333%}.el-col-sm-21{width:87.5%}.el-col-sm-offset-21{margin-left:87.5%}.el-col-sm-pull-21{position:relative;right:87.5%}.el-col-sm-push-21{position:relative;left:87.5%}.el-col-sm-22{width:91.66667%}.el-col-sm-offset-22{margin-left:91.66667%}.el-col-sm-pull-22{position:relative;right:91.66667%}.el-col-sm-push-22{position:relative;left:91.66667%}.el-col-sm-23{width:95.83333%}.el-col-sm-offset-23{margin-left:95.83333%}.el-col-sm-pull-23{position:relative;right:95.83333%}.el-col-sm-push-23{position:relative;left:95.83333%}.el-col-sm-24{width:100%}.el-col-sm-offset-24{margin-left:100%}.el-col-sm-pull-24{position:relative;right:100%}.el-col-sm-push-24{position:relative;left:100%}}@media only screen and (min-width:992px){.el-col-md-0{display:none;width:0%}.el-col-md-offset-0{margin-left:0}.el-col-md-pull-0{position:relative;right:0}.el-col-md-push-0{position:relative;left:0}.el-col-md-1{width:4.16667%}.el-col-md-offset-1{margin-left:4.16667%}.el-col-md-pull-1{position:relative;right:4.16667%}.el-col-md-push-1{position:relative;left:4.16667%}.el-col-md-2{width:8.33333%}.el-col-md-offset-2{margin-left:8.33333%}.el-col-md-pull-2{position:relative;right:8.33333%}.el-col-md-push-2{position:relative;left:8.33333%}.el-col-md-3{width:12.5%}.el-col-md-offset-3{margin-left:12.5%}.el-col-md-pull-3{position:relative;right:12.5%}.el-col-md-push-3{position:relative;left:12.5%}.el-col-md-4{width:16.66667%}.el-col-md-offset-4{margin-left:16.66667%}.el-col-md-pull-4{position:relative;right:16.66667%}.el-col-md-push-4{position:relative;left:16.66667%}.el-col-md-5{width:20.83333%}.el-col-md-offset-5{margin-left:20.83333%}.el-col-md-pull-5{position:relative;right:20.83333%}.el-col-md-push-5{position:relative;left:20.83333%}.el-col-md-6{width:25%}.el-col-md-offset-6{margin-left:25%}.el-col-md-pull-6{position:relative;right:25%}.el-col-md-push-6{position:relative;left:25%}.el-col-md-7{width:29.16667%}.el-col-md-offset-7{margin-left:29.16667%}.el-col-md-pull-7{position:relative;right:29.16667%}.el-col-md-push-7{position:relative;left:29.16667%}.el-col-md-8{width:33.33333%}.el-col-md-offset-8{margin-left:33.33333%}.el-col-md-pull-8{position:relative;right:33.33333%}.el-col-md-push-8{position:relative;left:33.33333%}.el-col-md-9{width:37.5%}.el-col-md-offset-9{margin-left:37.5%}.el-col-md-pull-9{position:relative;right:37.5%}.el-col-md-push-9{position:relative;left:37.5%}.el-col-md-10{width:41.66667%}.el-col-md-offset-10{margin-left:41.66667%}.el-col-md-pull-10{position:relative;right:41.66667%}.el-col-md-push-10{position:relative;left:41.66667%}.el-col-md-11{width:45.83333%}.el-col-md-offset-11{margin-left:45.83333%}.el-col-md-pull-11{position:relative;right:45.83333%}.el-col-md-push-11{position:relative;left:45.83333%}.el-col-md-12{width:50%}.el-col-md-offset-12{margin-left:50%}.el-col-md-pull-12{position:relative;right:50%}.el-col-md-push-12{position:relative;left:50%}.el-col-md-13{width:54.16667%}.el-col-md-offset-13{margin-left:54.16667%}.el-col-md-pull-13{position:relative;right:54.16667%}.el-col-md-push-13{position:relative;left:54.16667%}.el-col-md-14{width:58.33333%}.el-col-md-offset-14{margin-left:58.33333%}.el-col-md-pull-14{position:relative;right:58.33333%}.el-col-md-push-14{position:relative;left:58.33333%}.el-col-md-15{width:62.5%}.el-col-md-offset-15{margin-left:62.5%}.el-col-md-pull-15{position:relative;right:62.5%}.el-col-md-push-15{position:relative;left:62.5%}.el-col-md-16{width:66.66667%}.el-col-md-offset-16{margin-left:66.66667%}.el-col-md-pull-16{position:relative;right:66.66667%}.el-col-md-push-16{position:relative;left:66.66667%}.el-col-md-17{width:70.83333%}.el-col-md-offset-17{margin-left:70.83333%}.el-col-md-pull-17{position:relative;right:70.83333%}.el-col-md-push-17{position:relative;left:70.83333%}.el-col-md-18{width:75%}.el-col-md-offset-18{margin-left:75%}.el-col-md-pull-18{position:relative;right:75%}.el-col-md-push-18{position:relative;left:75%}.el-col-md-19{width:79.16667%}.el-col-md-offset-19{margin-left:79.16667%}.el-col-md-pull-19{position:relative;right:79.16667%}.el-col-md-push-19{position:relative;left:79.16667%}.el-col-md-20{width:83.33333%}.el-col-md-offset-20{margin-left:83.33333%}.el-col-md-pull-20{position:relative;right:83.33333%}.el-col-md-push-20{position:relative;left:83.33333%}.el-col-md-21{width:87.5%}.el-col-md-offset-21{margin-left:87.5%}.el-col-md-pull-21{position:relative;right:87.5%}.el-col-md-push-21{position:relative;left:87.5%}.el-col-md-22{width:91.66667%}.el-col-md-offset-22{margin-left:91.66667%}.el-col-md-pull-22{position:relative;right:91.66667%}.el-col-md-push-22{position:relative;left:91.66667%}.el-col-md-23{width:95.83333%}.el-col-md-offset-23{margin-left:95.83333%}.el-col-md-pull-23{position:relative;right:95.83333%}.el-col-md-push-23{position:relative;left:95.83333%}.el-col-md-24{width:100%}.el-col-md-offset-24{margin-left:100%}.el-col-md-pull-24{position:relative;right:100%}.el-col-md-push-24{position:relative;left:100%}}@media only screen and (min-width:1200px){.el-col-lg-0{display:none;width:0%}.el-col-lg-offset-0{margin-left:0}.el-col-lg-pull-0{position:relative;right:0}.el-col-lg-push-0{position:relative;left:0}.el-col-lg-1{width:4.16667%}.el-col-lg-offset-1{margin-left:4.16667%}.el-col-lg-pull-1{position:relative;right:4.16667%}.el-col-lg-push-1{position:relative;left:4.16667%}.el-col-lg-2{width:8.33333%}.el-col-lg-offset-2{margin-left:8.33333%}.el-col-lg-pull-2{position:relative;right:8.33333%}.el-col-lg-push-2{position:relative;left:8.33333%}.el-col-lg-3{width:12.5%}.el-col-lg-offset-3{margin-left:12.5%}.el-col-lg-pull-3{position:relative;right:12.5%}.el-col-lg-push-3{position:relative;left:12.5%}.el-col-lg-4{width:16.66667%}.el-col-lg-offset-4{margin-left:16.66667%}.el-col-lg-pull-4{position:relative;right:16.66667%}.el-col-lg-push-4{position:relative;left:16.66667%}.el-col-lg-5{width:20.83333%}.el-col-lg-offset-5{margin-left:20.83333%}.el-col-lg-pull-5{position:relative;right:20.83333%}.el-col-lg-push-5{position:relative;left:20.83333%}.el-col-lg-6{width:25%}.el-col-lg-offset-6{margin-left:25%}.el-col-lg-pull-6{position:relative;right:25%}.el-col-lg-push-6{position:relative;left:25%}.el-col-lg-7{width:29.16667%}.el-col-lg-offset-7{margin-left:29.16667%}.el-col-lg-pull-7{position:relative;right:29.16667%}.el-col-lg-push-7{position:relative;left:29.16667%}.el-col-lg-8{width:33.33333%}.el-col-lg-offset-8{margin-left:33.33333%}.el-col-lg-pull-8{position:relative;right:33.33333%}.el-col-lg-push-8{position:relative;left:33.33333%}.el-col-lg-9{width:37.5%}.el-col-lg-offset-9{margin-left:37.5%}.el-col-lg-pull-9{position:relative;right:37.5%}.el-col-lg-push-9{position:relative;left:37.5%}.el-col-lg-10{width:41.66667%}.el-col-lg-offset-10{margin-left:41.66667%}.el-col-lg-pull-10{position:relative;right:41.66667%}.el-col-lg-push-10{position:relative;left:41.66667%}.el-col-lg-11{width:45.83333%}.el-col-lg-offset-11{margin-left:45.83333%}.el-col-lg-pull-11{position:relative;right:45.83333%}.el-col-lg-push-11{position:relative;left:45.83333%}.el-col-lg-12{width:50%}.el-col-lg-offset-12{margin-left:50%}.el-col-lg-pull-12{position:relative;right:50%}.el-col-lg-push-12{position:relative;left:50%}.el-col-lg-13{width:54.16667%}.el-col-lg-offset-13{margin-left:54.16667%}.el-col-lg-pull-13{position:relative;right:54.16667%}.el-col-lg-push-13{position:relative;left:54.16667%}.el-col-lg-14{width:58.33333%}.el-col-lg-offset-14{margin-left:58.33333%}.el-col-lg-pull-14{position:relative;right:58.33333%}.el-col-lg-push-14{position:relative;left:58.33333%}.el-col-lg-15{width:62.5%}.el-col-lg-offset-15{margin-left:62.5%}.el-col-lg-pull-15{position:relative;right:62.5%}.el-col-lg-push-15{position:relative;left:62.5%}.el-col-lg-16{width:66.66667%}.el-col-lg-offset-16{margin-left:66.66667%}.el-col-lg-pull-16{position:relative;right:66.66667%}.el-col-lg-push-16{position:relative;left:66.66667%}.el-col-lg-17{width:70.83333%}.el-col-lg-offset-17{margin-left:70.83333%}.el-col-lg-pull-17{position:relative;right:70.83333%}.el-col-lg-push-17{position:relative;left:70.83333%}.el-col-lg-18{width:75%}.el-col-lg-offset-18{margin-left:75%}.el-col-lg-pull-18{position:relative;right:75%}.el-col-lg-push-18{position:relative;left:75%}.el-col-lg-19{width:79.16667%}.el-col-lg-offset-19{margin-left:79.16667%}.el-col-lg-pull-19{position:relative;right:79.16667%}.el-col-lg-push-19{position:relative;left:79.16667%}.el-col-lg-20{width:83.33333%}.el-col-lg-offset-20{margin-left:83.33333%}.el-col-lg-pull-20{position:relative;right:83.33333%}.el-col-lg-push-20{position:relative;left:83.33333%}.el-col-lg-21{width:87.5%}.el-col-lg-offset-21{margin-left:87.5%}.el-col-lg-pull-21{position:relative;right:87.5%}.el-col-lg-push-21{position:relative;left:87.5%}.el-col-lg-22{width:91.66667%}.el-col-lg-offset-22{margin-left:91.66667%}.el-col-lg-pull-22{position:relative;right:91.66667%}.el-col-lg-push-22{position:relative;left:91.66667%}.el-col-lg-23{width:95.83333%}.el-col-lg-offset-23{margin-left:95.83333%}.el-col-lg-pull-23{position:relative;right:95.83333%}.el-col-lg-push-23{position:relative;left:95.83333%}.el-col-lg-24{width:100%}.el-col-lg-offset-24{margin-left:100%}.el-col-lg-pull-24{position:relative;right:100%}.el-col-lg-push-24{position:relative;left:100%}}@media only screen and (min-width:1920px){.el-col-xl-0{display:none;width:0%}.el-col-xl-offset-0{margin-left:0}.el-col-xl-pull-0{position:relative;right:0}.el-col-xl-push-0{position:relative;left:0}.el-col-xl-1{width:4.16667%}.el-col-xl-offset-1{margin-left:4.16667%}.el-col-xl-pull-1{position:relative;right:4.16667%}.el-col-xl-push-1{position:relative;left:4.16667%}.el-col-xl-2{width:8.33333%}.el-col-xl-offset-2{margin-left:8.33333%}.el-col-xl-pull-2{position:relative;right:8.33333%}.el-col-xl-push-2{position:relative;left:8.33333%}.el-col-xl-3{width:12.5%}.el-col-xl-offset-3{margin-left:12.5%}.el-col-xl-pull-3{position:relative;right:12.5%}.el-col-xl-push-3{position:relative;left:12.5%}.el-col-xl-4{width:16.66667%}.el-col-xl-offset-4{margin-left:16.66667%}.el-col-xl-pull-4{position:relative;right:16.66667%}.el-col-xl-push-4{position:relative;left:16.66667%}.el-col-xl-5{width:20.83333%}.el-col-xl-offset-5{margin-left:20.83333%}.el-col-xl-pull-5{position:relative;right:20.83333%}.el-col-xl-push-5{position:relative;left:20.83333%}.el-col-xl-6{width:25%}.el-col-xl-offset-6{margin-left:25%}.el-col-xl-pull-6{position:relative;right:25%}.el-col-xl-push-6{position:relative;left:25%}.el-col-xl-7{width:29.16667%}.el-col-xl-offset-7{margin-left:29.16667%}.el-col-xl-pull-7{position:relative;right:29.16667%}.el-col-xl-push-7{position:relative;left:29.16667%}.el-col-xl-8{width:33.33333%}.el-col-xl-offset-8{margin-left:33.33333%}.el-col-xl-pull-8{position:relative;right:33.33333%}.el-col-xl-push-8{position:relative;left:33.33333%}.el-col-xl-9{width:37.5%}.el-col-xl-offset-9{margin-left:37.5%}.el-col-xl-pull-9{position:relative;right:37.5%}.el-col-xl-push-9{position:relative;left:37.5%}.el-col-xl-10{width:41.66667%}.el-col-xl-offset-10{margin-left:41.66667%}.el-col-xl-pull-10{position:relative;right:41.66667%}.el-col-xl-push-10{position:relative;left:41.66667%}.el-col-xl-11{width:45.83333%}.el-col-xl-offset-11{margin-left:45.83333%}.el-col-xl-pull-11{position:relative;right:45.83333%}.el-col-xl-push-11{position:relative;left:45.83333%}.el-col-xl-12{width:50%}.el-col-xl-offset-12{margin-left:50%}.el-col-xl-pull-12{position:relative;right:50%}.el-col-xl-push-12{position:relative;left:50%}.el-col-xl-13{width:54.16667%}.el-col-xl-offset-13{margin-left:54.16667%}.el-col-xl-pull-13{position:relative;right:54.16667%}.el-col-xl-push-13{position:relative;left:54.16667%}.el-col-xl-14{width:58.33333%}.el-col-xl-offset-14{margin-left:58.33333%}.el-col-xl-pull-14{position:relative;right:58.33333%}.el-col-xl-push-14{position:relative;left:58.33333%}.el-col-xl-15{width:62.5%}.el-col-xl-offset-15{margin-left:62.5%}.el-col-xl-pull-15{position:relative;right:62.5%}.el-col-xl-push-15{position:relative;left:62.5%}.el-col-xl-16{width:66.66667%}.el-col-xl-offset-16{margin-left:66.66667%}.el-col-xl-pull-16{position:relative;right:66.66667%}.el-col-xl-push-16{position:relative;left:66.66667%}.el-col-xl-17{width:70.83333%}.el-col-xl-offset-17{margin-left:70.83333%}.el-col-xl-pull-17{position:relative;right:70.83333%}.el-col-xl-push-17{position:relative;left:70.83333%}.el-col-xl-18{width:75%}.el-col-xl-offset-18{margin-left:75%}.el-col-xl-pull-18{position:relative;right:75%}.el-col-xl-push-18{position:relative;left:75%}.el-col-xl-19{width:79.16667%}.el-col-xl-offset-19{margin-left:79.16667%}.el-col-xl-pull-19{position:relative;right:79.16667%}.el-col-xl-push-19{position:relative;left:79.16667%}.el-col-xl-20{width:83.33333%}.el-col-xl-offset-20{margin-left:83.33333%}.el-col-xl-pull-20{position:relative;right:83.33333%}.el-col-xl-push-20{position:relative;left:83.33333%}.el-col-xl-21{width:87.5%}.el-col-xl-offset-21{margin-left:87.5%}.el-col-xl-pull-21{position:relative;right:87.5%}.el-col-xl-push-21{position:relative;left:87.5%}.el-col-xl-22{width:91.66667%}.el-col-xl-offset-22{margin-left:91.66667%}.el-col-xl-pull-22{position:relative;right:91.66667%}.el-col-xl-push-22{position:relative;left:91.66667%}.el-col-xl-23{width:95.83333%}.el-col-xl-offset-23{margin-left:95.83333%}.el-col-xl-pull-23{position:relative;right:95.83333%}.el-col-xl-push-23{position:relative;left:95.83333%}.el-col-xl-24{width:100%}.el-col-xl-offset-24{margin-left:100%}.el-col-xl-pull-24{position:relative;right:100%}.el-col-xl-push-24{position:relative;left:100%}}@-webkit-keyframes progress{0%{background-position:0 0}100%{background-position:32px 0}}.el-upload{display:inline-block;text-align:center;cursor:pointer;outline:0}.el-upload__input{display:none}.el-upload__tip{font-size:12px;color:#606266;margin-top:7px}.el-upload iframe{position:absolute;z-index:-1;top:0;left:0;opacity:0;filter:alpha(opacity=0)}.el-upload--picture-card{background-color:#fbfdff;border:1px dashed #c0ccda;border-radius:6px;box-sizing:border-box;width:148px;height:148px;line-height:146px;vertical-align:top}.el-upload--picture-card i{font-size:28px;color:#8c939d}.el-upload--picture-card:hover,.el-upload:focus{border-color:#409EFF;color:#409EFF}.el-upload:focus .el-upload-dragger{border-color:#409EFF}.el-upload-dragger{background-color:#fff;border:1px dashed #d9d9d9;border-radius:6px;box-sizing:border-box;width:360px;height:180px;text-align:center;position:relative;overflow:hidden}.el-upload-dragger .el-icon-upload{font-size:67px;color:#C0C4CC;margin:40px 0 16px;line-height:50px}.el-upload-dragger+.el-upload__tip{text-align:center}.el-upload-dragger~.el-upload__files{border-top:1px solid #DCDFE6;margin-top:7px;padding-top:5px}.el-upload-dragger .el-upload__text{color:#606266;font-size:14px;text-align:center}.el-upload-dragger .el-upload__text em{color:#409EFF;font-style:normal}.el-upload-dragger:hover{border-color:#409EFF}.el-upload-dragger.is-dragover{background-color:rgba(32,159,255,.06);border:2px dashed #409EFF}.el-upload-list{margin:0;padding:0;list-style:none}.el-upload-list__item{-webkit-transition:all .5s cubic-bezier(.55,0,.1,1);transition:all .5s cubic-bezier(.55,0,.1,1);font-size:14px;color:#606266;line-height:1.8;margin-top:5px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;width:100%}.el-upload-list__item .el-progress{position:absolute;top:20px;width:100%}.el-upload-list__item .el-progress__text{position:absolute;right:0;top:-13px}.el-upload-list__item .el-progress-bar{margin-right:0;padding-right:0}.el-upload-list__item:first-child{margin-top:10px}.el-upload-list__item .el-icon-upload-success{color:#67C23A}.el-upload-list__item .el-icon-close{display:none;position:absolute;top:5px;right:5px;cursor:pointer;opacity:.75;color:#606266}.el-upload-list__item .el-icon-close:hover{opacity:1}.el-upload-list__item .el-icon-close-tip{display:none;position:absolute;top:5px;right:5px;font-size:12px;cursor:pointer;opacity:1;color:#409EFF}.el-upload-list__item:hover{background-color:#F5F7FA}.el-upload-list__item:hover .el-icon-close{display:inline-block}.el-upload-list__item:hover .el-progress__text{display:none}.el-upload-list__item.is-success .el-upload-list__item-status-label{display:block}.el-upload-list__item.is-success .el-upload-list__item-name:focus,.el-upload-list__item.is-success .el-upload-list__item-name:hover{color:#409EFF;cursor:pointer}.el-upload-list__item.is-success:focus:not(:hover) .el-icon-close-tip{display:inline-block}.el-upload-list__item.is-success:active .el-icon-close-tip,.el-upload-list__item.is-success:focus .el-upload-list__item-status-label,.el-upload-list__item.is-success:hover .el-upload-list__item-status-label,.el-upload-list__item.is-success:not(.focusing):focus .el-icon-close-tip{display:none}.el-upload-list.is-disabled .el-upload-list__item:hover .el-upload-list__item-status-label{display:block}.el-upload-list__item-name{color:#606266;display:block;margin-right:40px;overflow:hidden;padding-left:4px;text-overflow:ellipsis;-webkit-transition:color .3s;transition:color .3s;white-space:nowrap}.el-upload-list__item-name [class^=el-icon]{height:100%;margin-right:7px;color:#909399;line-height:inherit}.el-upload-list__item-status-label{position:absolute;right:5px;top:0;line-height:inherit;display:none}.el-upload-list__item-delete{position:absolute;right:10px;top:0;font-size:12px;color:#606266;display:none}.el-upload-list__item-delete:hover{color:#409EFF}.el-upload-list--picture-card{margin:0;display:inline;vertical-align:top}.el-upload-list--picture-card .el-upload-list__item{overflow:hidden;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;width:148px;height:148px;margin:0 8px 8px 0;display:inline-block}.el-upload-list--picture-card .el-upload-list__item .el-icon-check,.el-upload-list--picture-card .el-upload-list__item .el-icon-circle-check{color:#FFF}.el-upload-list--picture-card .el-upload-list__item .el-icon-close,.el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label{display:none}.el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture-card .el-upload-list__item-name{display:none}.el-upload-list--picture-card .el-upload-list__item-thumbnail{width:100%;height:100%}.el-upload-list--picture-card .el-upload-list__item-status-label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 0 1pc 1px rgba(0,0,0,.2);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.el-upload-list--picture-card .el-upload-list__item-status-label i{font-size:12px;margin-top:11px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.el-upload-list--picture-card .el-upload-list__item-actions{position:absolute;width:100%;height:100%;left:0;top:0;cursor:default;text-align:center;color:#fff;opacity:0;font-size:20px;background-color:rgba(0,0,0,.5);-webkit-transition:opacity .3s;transition:opacity .3s}.el-upload-list--picture-card .el-upload-list__item-actions::after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-upload-list--picture-card .el-upload-list__item-actions span{display:none;cursor:pointer}.el-upload-list--picture-card .el-upload-list__item-actions span+span{margin-left:15px}.el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete{position:static;font-size:inherit;color:inherit}.el-upload-list--picture-card .el-upload-list__item-actions:hover{opacity:1}.el-upload-list--picture-card .el-upload-list__item-actions:hover span{display:inline-block}.el-upload-list--picture-card .el-progress{top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);bottom:auto;width:126px}.el-upload-list--picture-card .el-progress .el-progress__text{top:50%}.el-upload-list--picture .el-upload-list__item{overflow:hidden;z-index:0;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;margin-top:10px;padding:10px 10px 10px 90px;height:92px}.el-upload-list--picture .el-upload-list__item .el-icon-check,.el-upload-list--picture .el-upload-list__item .el-icon-circle-check{color:#FFF}.el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label{background:0 0;-webkit-box-shadow:none;box-shadow:none;top:-2px;right:-12px}.el-upload-list--picture .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name{line-height:70px;margin-top:0}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i{display:none}.el-upload-list--picture .el-upload-list__item-thumbnail{vertical-align:middle;display:inline-block;width:70px;height:70px;float:left;position:relative;z-index:1;margin-left:-80px;background-color:#FFF}.el-upload-list--picture .el-upload-list__item-name{display:block;margin-top:20px}.el-upload-list--picture .el-upload-list__item-name i{font-size:70px;line-height:1;position:absolute;left:9px;top:10px}.el-upload-list--picture .el-upload-list__item-status-label{position:absolute;right:-17px;top:-7px;width:46px;height:26px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 1px 1px #ccc;box-shadow:0 1px 1px #ccc}.el-upload-list--picture .el-upload-list__item-status-label i{font-size:12px;margin-top:12px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.el-upload-list--picture .el-progress{position:relative;top:-7px}.el-upload-cover{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;z-index:10;cursor:default}.el-upload-cover::after{display:inline-block;height:100%;vertical-align:middle}.el-upload-cover img{display:block;width:100%;height:100%}.el-upload-cover__label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 0 1pc 1px rgba(0,0,0,.2);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.el-upload-cover__label i{font-size:12px;margin-top:11px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);color:#fff}.el-upload-cover__progress{display:inline-block;vertical-align:middle;position:static;width:243px}.el-upload-cover__progress+.el-upload__inner{opacity:0}.el-upload-cover__content{position:absolute;top:0;left:0;width:100%;height:100%}.el-upload-cover__interact{position:absolute;bottom:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.72);text-align:center}.el-upload-cover__interact .btn{display:inline-block;color:#FFF;font-size:14px;cursor:pointer;vertical-align:middle;-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);margin-top:60px}.el-upload-cover__interact .btn span{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.el-upload-cover__interact .btn:not(:first-child){margin-left:35px}.el-upload-cover__interact .btn:hover{-webkit-transform:translateY(-13px);transform:translateY(-13px)}.el-upload-cover__interact .btn:hover span{opacity:1}.el-upload-cover__interact .btn i{color:#FFF;display:block;font-size:24px;line-height:inherit;margin:0 auto 5px}.el-upload-cover__title{position:absolute;bottom:0;left:0;background-color:#FFF;height:36px;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:400;text-align:left;padding:0 10px;margin:0;line-height:36px;font-size:14px;color:#303133}.el-upload-cover+.el-upload__inner{opacity:0;position:relative;z-index:1}.el-progress{position:relative;line-height:1}.el-progress__text{font-size:14px;color:#606266;display:inline-block;vertical-align:middle;margin-left:10px;line-height:1}.el-progress__text i{vertical-align:middle;display:block}.el-progress--circle,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{position:absolute;top:50%;left:0;width:100%;text-align:center;margin:0;-webkit-transform:translate(0,-50%);transform:translate(0,-50%)}.el-progress--circle .el-progress__text i,.el-progress--dashboard .el-progress__text i{vertical-align:middle;display:inline-block}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{padding-right:0;margin-right:0;display:block}.el-progress-bar,.el-progress-bar__inner::after,.el-progress-bar__innerText,.el-spinner{display:inline-block;vertical-align:middle}.el-progress--text-inside .el-progress-bar{padding-right:0;margin-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:#67C23A}.el-progress.is-success .el-progress__text{color:#67C23A}.el-progress.is-warning .el-progress-bar__inner{background-color:#E6A23C}.el-progress.is-warning .el-progress__text{color:#E6A23C}.el-progress.is-exception .el-progress-bar__inner{background-color:#F56C6C}.el-progress.is-exception .el-progress__text{color:#F56C6C}.el-progress-bar{padding-right:50px;width:100%;margin-right:-55px;-webkit-box-sizing:border-box;box-sizing:border-box}.el-progress-bar__outer{height:6px;border-radius:100px;background-color:#EBEEF5;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{position:absolute;left:0;top:0;height:100%;background-color:#409EFF;text-align:right;border-radius:100px;line-height:1;white-space:nowrap;-webkit-transition:width .6s ease;transition:width .6s ease}.el-card,.el-message{border-radius:4px;overflow:hidden}.el-progress-bar__inner::after{height:100%}.el-progress-bar__innerText{color:#FFF;font-size:12px;margin:0 5px}@keyframes progress{0%{background-position:0 0}100%{background-position:32px 0}}.el-time-spinner{width:100%;white-space:nowrap}.el-spinner-inner{-webkit-animation:rotate 2s linear infinite;animation:rotate 2s linear infinite;width:50px;height:50px}.el-spinner-inner .path{stroke:#ececec;stroke-linecap:round;-webkit-animation:dash 1.5s ease-in-out infinite;animation:dash 1.5s ease-in-out infinite}@-webkit-keyframes rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}100%{stroke-dasharray:90,150;stroke-dashoffset:-124}}@keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}100%{stroke-dasharray:90,150;stroke-dashoffset:-124}}.el-message{min-width:380px;-webkit-box-sizing:border-box;box-sizing:border-box;border-width:1px;border-style:solid;border-color:#EBEEF5;position:fixed;left:50%;top:20px;-webkit-transform:translateX(-50%);transform:translateX(-50%);background-color:#edf2fc;-webkit-transition:opacity .3s,top .4s,-webkit-transform .4s;transition:opacity .3s,top .4s,-webkit-transform .4s;transition:opacity .3s,transform .4s,top .4s;transition:opacity .3s,transform .4s,top .4s,-webkit-transform .4s;padding:15px 15px 15px 20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-message.is-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-message.is-closable .el-message__content{padding-right:16px}.el-message p{margin:0}.el-message--info .el-message__content{color:#909399}.el-message--success{background-color:#f0f9eb;border-color:#e1f3d8}.el-message--success .el-message__content{color:#67C23A}.el-message--warning{background-color:#fdf6ec;border-color:#faecd8}.el-message--warning .el-message__content{color:#E6A23C}.el-message--error{background-color:#fef0f0;border-color:#fde2e2}.el-message--error .el-message__content{color:#F56C6C}.el-message__icon{margin-right:10px}.el-message__content{padding:0;font-size:14px;line-height:1}.el-message__closeBtn{position:absolute;top:50%;right:15px;-webkit-transform:translateY(-50%);transform:translateY(-50%);cursor:pointer;color:#C0C4CC;font-size:16px}.el-message__closeBtn:hover{color:#909399}.el-message .el-icon-success{color:#67C23A}.el-message .el-icon-error{color:#F56C6C}.el-message .el-icon-info{color:#909399}.el-message .el-icon-warning{color:#E6A23C}.el-message-fade-enter,.el-message-fade-leave-active{opacity:0;-webkit-transform:translate(-50%,-100%);transform:translate(-50%,-100%)}.el-badge{position:relative;vertical-align:middle;display:inline-block}.el-badge__content{background-color:#F56C6C;border-radius:10px;color:#FFF;display:inline-block;font-size:12px;height:18px;line-height:18px;padding:0 6px;text-align:center;white-space:nowrap;border:1px solid #FFF}.el-badge__content.is-fixed{position:absolute;top:0;right:10px;-webkit-transform:translateY(-50%) translateX(100%);transform:translateY(-50%) translateX(100%)}.el-rate__icon,.el-rate__item{position:relative;display:inline-block}.el-badge__content.is-fixed.is-dot{right:5px}.el-badge__content.is-dot{height:8px;width:8px;padding:0;right:0;border-radius:50%}.el-badge__content--primary{background-color:#409EFF}.el-badge__content--success{background-color:#67C23A}.el-badge__content--warning{background-color:#E6A23C}.el-badge__content--info{background-color:#909399}.el-badge__content--danger{background-color:#F56C6C}.el-card{border:1px solid #EBEEF5;background-color:#FFF;color:#303133;-webkit-transition:.3s;transition:.3s}.el-card.is-always-shadow,.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-card__header{padding:18px 20px;border-bottom:1px solid #EBEEF5;-webkit-box-sizing:border-box;box-sizing:border-box}.el-card__body{padding:20px}.el-rate{height:20px;line-height:1}.el-rate__item{font-size:0;vertical-align:middle}.el-rate__icon{font-size:18px;margin-right:6px;color:#C0C4CC;-webkit-transition:.3s;transition:.3s}.el-rate__decimal,.el-rate__icon .path2{position:absolute;top:0;left:0}.el-rate__icon.hover{-webkit-transform:scale(1.15);transform:scale(1.15)}.el-rate__decimal{display:inline-block;overflow:hidden}.el-step.is-vertical,.el-steps{display:-webkit-box;display:-ms-flexbox}.el-rate__text{font-size:14px;vertical-align:middle}.el-steps{display:flex}.el-steps--simple{padding:13px 8%;border-radius:4px;background:#F5F7FA}.el-steps--horizontal{white-space:nowrap}.el-steps--vertical{height:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column;flex-flow:column}.el-step{position:relative;-ms-flex-negative:1;flex-shrink:1}.el-step:last-of-type .el-step__line{display:none}.el-step:last-of-type.is-flex{-ms-flex-preferred-size:auto!important;flex-basis:auto!important;-ms-flex-negative:0;flex-shrink:0;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.el-step:last-of-type .el-step__description,.el-step:last-of-type .el-step__main{padding-right:0}.el-step__head{position:relative;width:100%}.el-step__head.is-process{color:#303133;border-color:#303133}.el-step__head.is-wait{color:#C0C4CC;border-color:#C0C4CC}.el-step__head.is-success{color:#67C23A;border-color:#67C23A}.el-step__head.is-error{color:#F56C6C;border-color:#F56C6C}.el-step__head.is-finish{color:#409EFF;border-color:#409EFF}.el-step__icon{position:relative;z-index:1;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:24px;height:24px;font-size:14px;-webkit-box-sizing:border-box;box-sizing:border-box;background:#FFF;-webkit-transition:.15s ease-out;transition:.15s ease-out}.el-step__icon.is-text{border-radius:50%;border:2px solid;border-color:inherit}.el-step__icon.is-icon{width:40px}.el-step__icon-inner{display:inline-block;user-select:none;text-align:center;font-weight:700;line-height:1;color:inherit}.el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:25px;font-weight:400}.el-step__icon-inner.is-status{-webkit-transform:translateY(1px);transform:translateY(1px)}.el-step__line{position:absolute;border-color:inherit;background-color:#C0C4CC}.el-step__line-inner{display:block;border-width:1px;border-style:solid;border-color:inherit;-webkit-transition:.15s ease-out;transition:.15s ease-out;-webkit-box-sizing:border-box;box-sizing:border-box;width:0;height:0}.el-step__main{white-space:normal;text-align:left}.el-step__title{font-size:16px;line-height:38px}.el-step__title.is-process{font-weight:700;color:#303133}.el-step__title.is-wait{color:#C0C4CC}.el-step__title.is-success{color:#67C23A}.el-step__title.is-error{color:#F56C6C}.el-step__title.is-finish{color:#409EFF}.el-step__description{padding-right:10%;margin-top:-5px;font-size:12px;line-height:20px;font-weight:400}.el-step__description.is-process{color:#303133}.el-step__description.is-wait{color:#C0C4CC}.el-step__description.is-success{color:#67C23A}.el-step__description.is-error{color:#F56C6C}.el-step__description.is-finish{color:#409EFF}.el-step.is-horizontal{display:inline-block}.el-step.is-horizontal .el-step__line{height:2px;top:11px;left:0;right:0}.el-step.is-vertical{display:flex}.el-step.is-vertical .el-step__head{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;width:24px}.el-step.is-vertical .el-step__main{padding-left:10px;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.el-step.is-vertical .el-step__title{line-height:24px;padding-bottom:8px}.el-step.is-vertical .el-step__line{width:2px;top:0;bottom:0;left:11px}.el-step.is-vertical .el-step__icon.is-icon{width:24px}.el-step.is-center .el-step__head,.el-step.is-center .el-step__main{text-align:center}.el-step.is-center .el-step__description{padding-left:20%;padding-right:20%}.el-step.is-center .el-step__line{left:50%;right:-50%}.el-step.is-simple{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-step.is-simple .el-step__head{width:auto;font-size:0;padding-right:10px}.el-step.is-simple .el-step__icon{background:0 0;width:16px;height:16px;font-size:12px}.el-step.is-simple .el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:18px}.el-step.is-simple .el-step__icon-inner.is-status{-webkit-transform:scale(.8) translateY(1px);transform:scale(.8) translateY(1px)}.el-step.is-simple .el-step__main{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.el-step.is-simple .el-step__title{font-size:16px;line-height:20px}.el-step.is-simple:not(:last-of-type) .el-step__title{max-width:50%;word-break:break-all}.el-step.is-simple .el-step__arrow{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-step.is-simple .el-step__arrow::after,.el-step.is-simple .el-step__arrow::before{content:'';display:inline-block;position:absolute;height:15px;width:1px;background:#C0C4CC}.el-step.is-simple .el-step__arrow::before{-webkit-transform:rotate(-45deg) translateY(-4px);transform:rotate(-45deg) translateY(-4px);-webkit-transform-origin:0 0;transform-origin:0 0}.el-step.is-simple .el-step__arrow::after{-webkit-transform:rotate(45deg) translateY(4px);transform:rotate(45deg) translateY(4px);-webkit-transform-origin:100% 100%;transform-origin:100% 100%}.el-step.is-simple:last-of-type .el-step__arrow{display:none}.el-carousel{position:relative}.el-carousel--horizontal{overflow-x:hidden}.el-carousel--vertical{overflow-y:hidden}.el-carousel__container{position:relative;height:300px}.el-carousel__arrow{border:none;outline:0;padding:0;margin:0;height:36px;width:36px;cursor:pointer;-webkit-transition:.3s;transition:.3s;border-radius:50%;background-color:rgba(31,45,61,.11);color:#FFF;position:absolute;top:50%;z-index:10;-webkit-transform:translateY(-50%);transform:translateY(-50%);text-align:center;font-size:12px}.el-carousel__arrow--left{left:16px}.el-carousel__arrow--right{right:16px}.el-carousel__arrow:hover{background-color:rgba(31,45,61,.23)}.el-carousel__arrow i{cursor:pointer}.el-carousel__indicators{position:absolute;list-style:none;margin:0;padding:0;z-index:2}.el-carousel__indicators--horizontal{bottom:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.el-carousel__indicators--vertical{right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-carousel__indicators--outside{bottom:26px;text-align:center;position:static;-webkit-transform:none;transform:none}.el-carousel__indicators--outside .el-carousel__indicator:hover button{opacity:.64}.el-carousel__indicators--outside button{background-color:#C0C4CC;opacity:.24}.el-carousel__indicators--labels{left:0;right:0;-webkit-transform:none;transform:none;text-align:center}.el-carousel__indicators--labels .el-carousel__button{height:auto;width:auto;padding:2px 18px;font-size:12px}.el-carousel__indicators--labels .el-carousel__indicator{padding:6px 4px}.el-carousel__indicator{background-color:transparent;cursor:pointer}.el-carousel__indicator:hover button{opacity:.72}.el-carousel__indicator--horizontal{display:inline-block;padding:12px 4px}.el-carousel__indicator--vertical{padding:4px 12px}.el-carousel__indicator--vertical .el-carousel__button{width:2px;height:15px}.el-carousel__indicator.is-active button{opacity:1}.el-carousel__button{display:block;opacity:.48;width:30px;height:2px;background-color:#FFF;border:none;outline:0;padding:0;margin:0;cursor:pointer;-webkit-transition:.3s;transition:.3s}.el-carousel__item,.el-carousel__mask{height:100%;top:0;left:0;position:absolute}.carousel-arrow-left-enter,.carousel-arrow-left-leave-active{-webkit-transform:translateY(-50%) translateX(-10px);transform:translateY(-50%) translateX(-10px);opacity:0}.carousel-arrow-right-enter,.carousel-arrow-right-leave-active{-webkit-transform:translateY(-50%) translateX(10px);transform:translateY(-50%) translateX(10px);opacity:0}.el-carousel__item{width:100%;display:inline-block;overflow:hidden;z-index:0}.el-carousel__item.is-active{z-index:2}.el-carousel__item.is-animating{-webkit-transition:-webkit-transform .4s ease-in-out;transition:-webkit-transform .4s ease-in-out;transition:transform .4s ease-in-out;transition:transform .4s ease-in-out,-webkit-transform .4s ease-in-out}.el-carousel__item--card{width:50%;-webkit-transition:-webkit-transform .4s ease-in-out;transition:-webkit-transform .4s ease-in-out;transition:transform .4s ease-in-out;transition:transform .4s ease-in-out,-webkit-transform .4s ease-in-out}.el-carousel__item--card.is-in-stage{cursor:pointer;z-index:1}.el-carousel__item--card.is-in-stage.is-hover .el-carousel__mask,.el-carousel__item--card.is-in-stage:hover .el-carousel__mask{opacity:.12}.el-carousel__item--card.is-active{z-index:2}.el-carousel__mask{width:100%;background-color:#FFF;opacity:.24;-webkit-transition:.2s;transition:.2s}.el-fade-in-enter,.el-fade-in-leave-active,.el-fade-in-linear-enter,.el-fade-in-linear-leave,.el-fade-in-linear-leave-active,.fade-in-linear-enter,.fade-in-linear-leave,.fade-in-linear-leave-active{opacity:0}.fade-in-linear-enter-active,.fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.el-fade-in-enter-active,.el-fade-in-leave-active{-webkit-transition:all .3s cubic-bezier(.55,0,.1,1);transition:all .3s cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{-webkit-transition:all .3s cubic-bezier(.55,0,.1,1);transition:all .3s cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter,.el-zoom-in-center-leave-active{opacity:0;-webkit-transform:scaleX(0);transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-webkit-transform-origin:center top;transform-origin:center top}.el-zoom-in-top-enter,.el-zoom-in-top-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-webkit-transform-origin:center bottom;transform-origin:center bottom}.el-zoom-in-bottom-enter,.el-zoom-in-bottom-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;-webkit-transform:scale(1,1);transform:scale(1,1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-webkit-transform-origin:top left;transform-origin:top left}.el-zoom-in-left-enter,.el-zoom-in-left-leave-active{opacity:0;-webkit-transform:scale(.45,.45);transform:scale(.45,.45)}.collapse-transition{-webkit-transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out;transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out}.horizontal-collapse-transition{-webkit-transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out;transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{-webkit-transition:all 1s;transition:all 1s}.el-list-enter,.el-list-leave-active{opacity:0;-webkit-transform:translateY(-30px);transform:translateY(-30px)}.el-opacity-transition{-webkit-transition:opacity .3s cubic-bezier(.55,0,.1,1);transition:opacity .3s cubic-bezier(.55,0,.1,1)}.el-collapse{border-top:1px solid #EBEEF5;border-bottom:1px solid #EBEEF5}.el-collapse-item.is-disabled .el-collapse-item__header{color:#bbb;cursor:not-allowed}.el-collapse-item__header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:48px;line-height:48px;background-color:#FFF;color:#303133;cursor:pointer;border-bottom:1px solid #EBEEF5;font-size:13px;font-weight:500;-webkit-transition:border-bottom-color .3s;transition:border-bottom-color .3s;outline:0}.el-collapse-item__arrow{margin:0 8px 0 auto;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;font-weight:300}.el-collapse-item__arrow.is-active{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-collapse-item__header.focusing:focus:not(:hover){color:#409EFF}.el-collapse-item__header.is-active{border-bottom-color:transparent}.el-collapse-item__wrap{will-change:height;background-color:#FFF;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;border-bottom:1px solid #EBEEF5}.el-cascader__tags,.el-tag{-webkit-box-sizing:border-box}.el-collapse-item__content{padding-bottom:25px;font-size:13px;color:#303133;line-height:1.769230769230769}.el-collapse-item:last-child{margin-bottom:-1px}.el-popper .popper__arrow,.el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03));filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.el-popper .popper__arrow::after{content:" ";border-width:6px}.el-popper[x-placement^=top]{margin-bottom:12px}.el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#EBEEF5;border-bottom-width:0}.el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#FFF;border-bottom-width:0}.el-popper[x-placement^=bottom]{margin-top:12px}.el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#EBEEF5}.el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#FFF}.el-popper[x-placement^=right]{margin-left:12px}.el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#EBEEF5;border-left-width:0}.el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#FFF;border-left-width:0}.el-popper[x-placement^=left]{margin-right:12px}.el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#EBEEF5}.el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#FFF}.el-tag{background-color:#ecf5ff;border-color:#d9ecff;display:inline-block;height:32px;padding:0 10px;line-height:30px;font-size:12px;color:#409EFF;border-width:1px;border-style:solid;border-radius:4px;box-sizing:border-box;white-space:nowrap}.el-tag.is-hit{border-color:#409EFF}.el-tag .el-tag__close{color:#409eff}.el-tag .el-tag__close:hover{color:#FFF;background-color:#409eff}.el-tag.el-tag--info{background-color:#f4f4f5;border-color:#e9e9eb;color:#909399}.el-tag.el-tag--info.is-hit{border-color:#909399}.el-tag.el-tag--info .el-tag__close{color:#909399}.el-tag.el-tag--info .el-tag__close:hover{color:#FFF;background-color:#909399}.el-tag.el-tag--success{background-color:#f0f9eb;border-color:#e1f3d8;color:#67c23a}.el-tag.el-tag--success.is-hit{border-color:#67C23A}.el-tag.el-tag--success .el-tag__close{color:#67c23a}.el-tag.el-tag--success .el-tag__close:hover{color:#FFF;background-color:#67c23a}.el-tag.el-tag--warning{background-color:#fdf6ec;border-color:#faecd8;color:#e6a23c}.el-tag.el-tag--warning.is-hit{border-color:#E6A23C}.el-tag.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag.el-tag--warning .el-tag__close:hover{color:#FFF;background-color:#e6a23c}.el-tag.el-tag--danger{background-color:#fef0f0;border-color:#fde2e2;color:#f56c6c}.el-tag.el-tag--danger.is-hit{border-color:#F56C6C}.el-tag.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag.el-tag--danger .el-tag__close:hover{color:#FFF;background-color:#f56c6c}.el-tag .el-icon-close{border-radius:50%;text-align:center;position:relative;cursor:pointer;font-size:12px;height:16px;width:16px;line-height:16px;vertical-align:middle;top:-1px;right:-5px}.el-tag .el-icon-close::before{display:block}.el-tag--dark{background-color:#409eff;border-color:#409eff;color:#fff}.el-tag--dark.is-hit{border-color:#409EFF}.el-tag--dark .el-tag__close{color:#fff}.el-tag--dark .el-tag__close:hover{color:#FFF;background-color:#66b1ff}.el-tag--dark.el-tag--info{background-color:#909399;border-color:#909399;color:#fff}.el-tag--dark.el-tag--info.is-hit{border-color:#909399}.el-tag--dark.el-tag--info .el-tag__close{color:#fff}.el-tag--dark.el-tag--info .el-tag__close:hover{color:#FFF;background-color:#a6a9ad}.el-tag--dark.el-tag--success{background-color:#67c23a;border-color:#67c23a;color:#fff}.el-tag--dark.el-tag--success.is-hit{border-color:#67C23A}.el-tag--dark.el-tag--success .el-tag__close{color:#fff}.el-tag--dark.el-tag--success .el-tag__close:hover{color:#FFF;background-color:#85ce61}.el-tag--dark.el-tag--warning{background-color:#e6a23c;border-color:#e6a23c;color:#fff}.el-tag--dark.el-tag--warning.is-hit{border-color:#E6A23C}.el-tag--dark.el-tag--warning .el-tag__close{color:#fff}.el-tag--dark.el-tag--warning .el-tag__close:hover{color:#FFF;background-color:#ebb563}.el-tag--dark.el-tag--danger{background-color:#f56c6c;border-color:#f56c6c;color:#fff}.el-tag--dark.el-tag--danger.is-hit{border-color:#F56C6C}.el-tag--dark.el-tag--danger .el-tag__close{color:#fff}.el-tag--dark.el-tag--danger .el-tag__close:hover{color:#FFF;background-color:#f78989}.el-tag--plain{background-color:#fff;border-color:#b3d8ff;color:#409eff}.el-tag--plain.is-hit{border-color:#409EFF}.el-tag--plain .el-tag__close{color:#409eff}.el-tag--plain .el-tag__close:hover{color:#FFF;background-color:#409eff}.el-tag--plain.el-tag--info{background-color:#fff;border-color:#d3d4d6;color:#909399}.el-tag--plain.el-tag--info.is-hit{border-color:#909399}.el-tag--plain.el-tag--info .el-tag__close{color:#909399}.el-tag--plain.el-tag--info .el-tag__close:hover{color:#FFF;background-color:#909399}.el-tag--plain.el-tag--success{background-color:#fff;border-color:#c2e7b0;color:#67c23a}.el-tag--plain.el-tag--success.is-hit{border-color:#67C23A}.el-tag--plain.el-tag--success .el-tag__close{color:#67c23a}.el-tag--plain.el-tag--success .el-tag__close:hover{color:#FFF;background-color:#67c23a}.el-tag--plain.el-tag--warning{background-color:#fff;border-color:#f5dab1;color:#e6a23c}.el-tag--plain.el-tag--warning.is-hit{border-color:#E6A23C}.el-tag--plain.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag--plain.el-tag--warning .el-tag__close:hover{color:#FFF;background-color:#e6a23c}.el-tag--plain.el-tag--danger{background-color:#fff;border-color:#fbc4c4;color:#f56c6c}.el-tag--plain.el-tag--danger.is-hit{border-color:#F56C6C}.el-tag--plain.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag--plain.el-tag--danger .el-tag__close:hover{color:#FFF;background-color:#f56c6c}.el-tag--medium{height:28px;line-height:26px}.el-tag--medium .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--small{height:24px;padding:0 8px;line-height:22px}.el-tag--small .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--mini{height:20px;padding:0 5px;line-height:19px}.el-tag--mini .el-icon-close{margin-left:-3px;-webkit-transform:scale(.7);transform:scale(.7)}.el-cascader{display:inline-block;position:relative;font-size:14px;line-height:40px}.el-cascader:not(.is-disabled):hover .el-input__inner{cursor:pointer;border-color:#C0C4CC}.el-cascader .el-input .el-input__inner:focus,.el-cascader .el-input.is-focus .el-input__inner{border-color:#409EFF}.el-cascader .el-input{cursor:pointer}.el-cascader .el-input .el-input__inner{text-overflow:ellipsis}.el-cascader .el-input .el-icon-arrow-down{-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;font-size:14px}.el-cascader .el-input .el-icon-arrow-down.is-reverse{-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg)}.el-cascader .el-input .el-icon-circle-close:hover{color:#909399}.el-cascader--medium{font-size:14px;line-height:36px}.el-cascader--small{font-size:13px;line-height:32px}.el-cascader--mini{font-size:12px;line-height:28px}.el-cascader.is-disabled .el-cascader__label{z-index:2;color:#C0C4CC}.el-cascader__dropdown{margin:5px 0;font-size:14px;background:#FFF;border:1px solid #E4E7ED;border-radius:4px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-cascader__tags{position:absolute;left:0;right:30px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;line-height:normal;text-align:left;box-sizing:border-box}.el-cascader__tags .el-tag{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:100%;margin:2px 0 2px 6px;text-overflow:ellipsis;background:#f0f2f5}.el-cascader__tags .el-tag:not(.is-hit){border-color:transparent}.el-cascader__tags .el-tag>span{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;text-overflow:ellipsis}.el-cascader__tags .el-tag .el-icon-close{-webkit-box-flex:0;-ms-flex:none;flex:none;background-color:#C0C4CC;color:#FFF}.el-cascader__tags .el-tag .el-icon-close:hover{background-color:#909399}.el-cascader__suggestion-panel{border-radius:4px}.el-cascader__suggestion-list{max-height:204px;margin:0;padding:6px 0;font-size:14px;color:#606266;text-align:center}.el-cascader__suggestion-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:34px;padding:0 15px;text-align:left;outline:0;cursor:pointer}.el-cascader__suggestion-item:focus,.el-cascader__suggestion-item:hover{background:#F5F7FA}.el-cascader__suggestion-item.is-checked{color:#409EFF;font-weight:700}.el-cascader__suggestion-item>span{margin-right:10px}.el-cascader__empty-text{margin:10px 0;color:#C0C4CC}.el-cascader__search-input{-webkit-box-flex:1;-ms-flex:1;flex:1;height:24px;min-width:60px;margin:2px 0 2px 15px;padding:0;color:#606266;border:none;outline:0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-cascader__search-input::-webkit-input-placeholder{color:#C0C4CC}.el-cascader__search-input:-ms-input-placeholder{color:#C0C4CC}.el-cascader__search-input::-ms-input-placeholder{color:#C0C4CC}.el-cascader__search-input::placeholder{color:#C0C4CC}.el-color-predefine{display:-webkit-box;display:-ms-flexbox;display:flex;font-size:12px;margin-top:8px;width:280px}.el-color-predefine__colors{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-wrap:wrap;flex-wrap:wrap}.el-color-predefine__color-selector{margin:0 0 8px 8px;width:20px;height:20px;border-radius:4px;cursor:pointer}.el-color-predefine__color-selector:nth-child(10n+1){margin-left:0}.el-color-predefine__color-selector.selected{-webkit-box-shadow:0 0 3px 2px #409EFF;box-shadow:0 0 3px 2px #409EFF}.el-color-predefine__color-selector>div{display:-webkit-box;display:-ms-flexbox;display:flex;height:100%;border-radius:3px}.el-color-predefine__color-selector.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-hue-slider{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;width:280px;height:12px;background-color:red;padding:0 2px}.el-color-hue-slider__bar{position:relative;background:-webkit-gradient(linear,left top,right top,from(red),color-stop(17%,#ff0),color-stop(33%,#0f0),color-stop(50%,#0ff),color-stop(67%,#00f),color-stop(83%,#f0f),to(red));background:linear-gradient(to right,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%);height:100%}.el-color-hue-slider__thumb{position:absolute;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;-webkit-box-shadow:0 0 2px rgba(0,0,0,.6);box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-hue-slider.is-vertical{width:12px;height:180px;padding:2px 0}.el-color-hue-slider.is-vertical .el-color-hue-slider__bar{background:-webkit-gradient(linear,left top,left bottom,from(red),color-stop(17%,#ff0),color-stop(33%,#0f0),color-stop(50%,#0ff),color-stop(67%,#00f),color-stop(83%,#f0f),to(red));background:linear-gradient(to bottom,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%)}.el-color-hue-slider.is-vertical .el-color-hue-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-svpanel{position:relative;width:280px;height:180px}.el-color-svpanel__black,.el-color-svpanel__white{position:absolute;top:0;left:0;right:0;bottom:0}.el-color-svpanel__white{background:-webkit-gradient(linear,left top,right top,from(#fff),to(rgba(255,255,255,0)));background:linear-gradient(to right,#fff,rgba(255,255,255,0))}.el-color-svpanel__black{background:-webkit-gradient(linear,left bottom,left top,from(#000),to(rgba(0,0,0,0)));background:linear-gradient(to top,#000,rgba(0,0,0,0))}.el-color-svpanel__cursor{position:absolute}.el-color-svpanel__cursor>div{cursor:head;width:4px;height:4px;-webkit-box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);border-radius:50%;-webkit-transform:translate(-2px,-2px);transform:translate(-2px,-2px)}.el-color-alpha-slider{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;width:280px;height:12px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-alpha-slider__bar{position:relative;background:-webkit-gradient(linear,left top,right top,from(rgba(255,255,255,0)),to(white));background:linear-gradient(to right,rgba(255,255,255,0) 0,#fff 100%);height:100%}.el-color-alpha-slider__thumb{position:absolute;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;-webkit-box-shadow:0 0 2px rgba(0,0,0,.6);box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-alpha-slider.is-vertical{width:20px;height:180px}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__bar{background:-webkit-gradient(linear,left top,left bottom,from(rgba(255,255,255,0)),to(white));background:linear-gradient(to bottom,rgba(255,255,255,0) 0,#fff 100%)}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-dropdown{width:300px}.el-color-dropdown__main-wrapper{margin-bottom:6px}.el-color-dropdown__main-wrapper::after{content:"";display:table;clear:both}.el-color-dropdown__btns{margin-top:6px;text-align:right}.el-color-dropdown__value{float:left;line-height:26px;font-size:12px;color:#000;width:160px}.el-color-dropdown__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-color-dropdown__btn[disabled]{color:#ccc;cursor:not-allowed}.el-color-dropdown__btn:hover{color:#409EFF;border-color:#409EFF}.el-color-dropdown__link-btn{cursor:pointer;color:#409EFF;text-decoration:none;padding:15px;font-size:12px}.el-color-dropdown__link-btn:hover{color:tint(#409EFF,20%)}.el-color-picker{display:inline-block;position:relative;line-height:normal;height:40px}.el-color-picker.is-disabled .el-color-picker__trigger{cursor:not-allowed}.el-color-picker--medium{height:36px}.el-color-picker--medium .el-color-picker__trigger{height:36px;width:36px}.el-color-picker--medium .el-color-picker__mask{height:34px;width:34px}.el-color-picker--small{height:32px}.el-color-picker--small .el-color-picker__trigger{height:32px;width:32px}.el-color-picker--small .el-color-picker__mask{height:30px;width:30px}.el-color-picker--small .el-color-picker__empty,.el-color-picker--small .el-color-picker__icon{-webkit-transform:translate3d(-50%,-50%,0) scale(.8);transform:translate3d(-50%,-50%,0) scale(.8)}.el-color-picker--mini{height:28px}.el-color-picker--mini .el-color-picker__trigger{height:28px;width:28px}.el-color-picker--mini .el-color-picker__mask{height:26px;width:26px}.el-color-picker--mini .el-color-picker__empty,.el-color-picker--mini .el-color-picker__icon{-webkit-transform:translate3d(-50%,-50%,0) scale(.8);transform:translate3d(-50%,-50%,0) scale(.8)}.el-color-picker__mask{height:38px;width:38px;border-radius:4px;position:absolute;top:1px;left:1px;z-index:1;cursor:not-allowed;background-color:rgba(255,255,255,.7)}.el-color-picker__trigger{display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;height:40px;width:40px;padding:4px;border:1px solid #e6e6e6;border-radius:4px;font-size:0;position:relative;cursor:pointer}.el-color-picker__color{position:relative;display:block;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid #999;border-radius:2px;width:100%;height:100%;text-align:center}.el-color-picker__color.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-picker__color-inner{position:absolute;left:0;top:0;right:0;bottom:0}.el-color-picker__empty,.el-color-picker__icon{top:50%;left:50%;font-size:12px;position:absolute}.el-color-picker__empty{color:#999;-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0)}.el-color-picker__icon{display:inline-block;width:100%;-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0);color:#FFF;text-align:center}.el-color-picker__panel{position:absolute;z-index:10;padding:6px;-webkit-box-sizing:content-box;box-sizing:content-box;background-color:#FFF;border:1px solid #EBEEF5;border-radius:4px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-textarea{position:relative;display:inline-block;width:100%;vertical-align:bottom;font-size:14px}.el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:inherit;color:#606266;background-color:#FFF;background-image:none;border:1px solid #DCDFE6;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.el-textarea__inner::-webkit-input-placeholder{color:#C0C4CC}.el-textarea__inner:-ms-input-placeholder{color:#C0C4CC}.el-textarea__inner::-ms-input-placeholder{color:#C0C4CC}.el-textarea__inner::placeholder{color:#C0C4CC}.el-textarea__inner:hover{border-color:#C0C4CC}.el-textarea__inner:focus{outline:0;border-color:#409EFF}.el-textarea .el-input__count{color:#909399;background:#FFF;position:absolute;font-size:12px;bottom:5px;right:10px}.el-textarea.is-disabled .el-textarea__inner{background-color:#F5F7FA;border-color:#E4E7ED;color:#C0C4CC;cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#C0C4CC}.el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder{color:#C0C4CC}.el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#C0C4CC}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:#C0C4CC}.el-textarea.is-exceed .el-textarea__inner{border-color:#F56C6C}.el-textarea.is-exceed .el-input__count{color:#F56C6C}.el-input{position:relative;font-size:14px;display:inline-block;width:100%}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.el-input::-webkit-scrollbar-corner{background:#fff}.el-input::-webkit-scrollbar-track{background:#fff}.el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.el-input .el-input__clear{color:#C0C4CC;font-size:14px;cursor:pointer;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1)}.el-input .el-input__clear:hover{color:#909399}.el-input .el-input__count{height:100%;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#909399;font-size:12px}.el-input .el-input__count .el-input__count-inner{background:#FFF;line-height:initial;display:inline-block;padding:0 5px}.el-input__inner{-webkit-appearance:none;background-color:#FFF;background-image:none;border-radius:4px;border:1px solid #DCDFE6;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;display:inline-block;font-size:inherit;height:40px;line-height:40px;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%}.el-input__prefix,.el-input__suffix{position:absolute;top:0;-webkit-transition:all .3s;height:100%;color:#C0C4CC;text-align:center}.el-input__inner::-webkit-input-placeholder{color:#C0C4CC}.el-input__inner:-ms-input-placeholder{color:#C0C4CC}.el-input__inner::-ms-input-placeholder{color:#C0C4CC}.el-input__inner::placeholder{color:#C0C4CC}.el-input__inner:hover{border-color:#C0C4CC}.el-input.is-active .el-input__inner,.el-input__inner:focus{border-color:#409EFF;outline:0}.el-input__suffix{right:5px;transition:all .3s}.el-input__suffix-inner{pointer-events:all}.el-input__prefix{left:5px;transition:all .3s}.el-input__icon{height:100%;width:25px;text-align:center;-webkit-transition:all .3s;transition:all .3s;line-height:40px}.el-input__icon:after{content:'';height:100%;width:0;display:inline-block;vertical-align:middle}.el-input__validateIcon{pointer-events:none}.el-input.is-disabled .el-input__inner{background-color:#F5F7FA;border-color:#E4E7ED;color:#C0C4CC;cursor:not-allowed}.el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#C0C4CC}.el-input.is-disabled .el-input__inner:-ms-input-placeholder{color:#C0C4CC}.el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#C0C4CC}.el-input.is-disabled .el-input__inner::placeholder{color:#C0C4CC}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-link,.el-transfer-panel__filter .el-icon-circle-close{cursor:pointer}.el-input.is-exceed .el-input__inner{border-color:#F56C6C}.el-input.is-exceed .el-input__suffix .el-input__count{color:#F56C6C}.el-input--suffix .el-input__inner{padding-right:30px}.el-input--prefix .el-input__inner{padding-left:30px}.el-input--medium{font-size:14px}.el-input--medium .el-input__inner{height:36px;line-height:36px}.el-input--medium .el-input__icon{line-height:36px}.el-input--small{font-size:13px}.el-input--small .el-input__inner{height:32px;line-height:32px}.el-input--small .el-input__icon{line-height:32px}.el-input--mini{font-size:12px}.el-input--mini .el-input__inner{height:28px;line-height:28px}.el-input--mini .el-input__icon{line-height:28px}.el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate;border-spacing:0}.el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.el-input-group__append,.el-input-group__prepend{background-color:#F5F7FA;color:#909399;vertical-align:middle;display:table-cell;position:relative;border:1px solid #DCDFE6;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.el-input-group--prepend .el-input__inner,.el-input-group__append{border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--append .el-input__inner,.el-input-group__prepend{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:0}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:-10px -20px}.el-input-group__append button.el-button,.el-input-group__append div.el-select .el-input__inner,.el-input-group__append div.el-select:hover .el-input__inner,.el-input-group__prepend button.el-button,.el-input-group__prepend div.el-select .el-input__inner,.el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{border-right:0}.el-input-group__append{border-left:0}.el-input-group--append .el-select .el-input.is-focus .el-input__inner,.el-input-group--prepend .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input__inner::-ms-clear{display:none;width:0;height:0}.el-transfer{font-size:14px}.el-transfer__buttons{display:inline-block;vertical-align:middle;padding:0 30px}.el-transfer__button{display:block;margin:0 auto;padding:10px;border-radius:50%;color:#FFF;background-color:#409EFF;font-size:0}.el-transfer-panel__item+.el-transfer-panel__item,.el-transfer__button [class*=el-icon-]+span{margin-left:0}.el-transfer__button.is-with-texts{border-radius:4px}.el-transfer__button.is-disabled,.el-transfer__button.is-disabled:hover{border:1px solid #DCDFE6;background-color:#F5F7FA;color:#C0C4CC}.el-transfer__button:first-child{margin-bottom:10px}.el-transfer__button:nth-child(2){margin:0}.el-transfer__button i,.el-transfer__button span{font-size:14px}.el-transfer-panel{border:1px solid #EBEEF5;border-radius:4px;overflow:hidden;background:#FFF;display:inline-block;vertical-align:middle;width:200px;max-height:100%;-webkit-box-sizing:border-box;box-sizing:border-box;position:relative}.el-transfer-panel__body{height:246px}.el-transfer-panel__body.is-with-footer{padding-bottom:40px}.el-transfer-panel__list{margin:0;padding:6px 0;list-style:none;height:246px;overflow:auto;-webkit-box-sizing:border-box;box-sizing:border-box}.el-transfer-panel__list.is-filterable{height:194px;padding-top:0}.el-transfer-panel__item{height:30px;line-height:30px;padding-left:15px;display:block!important}.el-transfer-panel__item.el-checkbox{color:#606266}.el-transfer-panel__item:hover{color:#409EFF}.el-transfer-panel__item.el-checkbox .el-checkbox__label{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;-webkit-box-sizing:border-box;box-sizing:border-box;padding-left:24px;line-height:30px}.el-transfer-panel__item .el-checkbox__input{position:absolute;top:8px}.el-transfer-panel__filter{text-align:center;margin:15px;-webkit-box-sizing:border-box;box-sizing:border-box;display:block;width:auto}.el-transfer-panel__filter .el-input__inner{height:32px;width:100%;font-size:12px;display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:16px;padding-right:10px;padding-left:30px}.el-transfer-panel__filter .el-input__icon{margin-left:5px}.el-transfer-panel .el-transfer-panel__header{height:40px;line-height:40px;background:#F5F7FA;margin:0;padding-left:15px;border-bottom:1px solid #EBEEF5;-webkit-box-sizing:border-box;box-sizing:border-box;color:#000}.el-transfer-panel .el-transfer-panel__header .el-checkbox{display:block;line-height:40px}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label{font-size:16px;color:#303133;font-weight:400}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label span{position:absolute;right:15px;color:#909399;font-size:12px;font-weight:400}.el-divider__text,.el-link{font-weight:500;font-size:14px}.el-transfer-panel .el-transfer-panel__footer{height:40px;background:#FFF;margin:0;padding:0;border-top:1px solid #EBEEF5;position:absolute;bottom:0;left:0;width:100%;z-index:1}.el-transfer-panel .el-transfer-panel__footer::after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-container,.el-timeline-item__node{display:-webkit-box;display:-ms-flexbox}.el-transfer-panel .el-transfer-panel__footer .el-checkbox{padding-left:20px;color:#606266}.el-transfer-panel .el-transfer-panel__empty{margin:0;height:30px;line-height:30px;padding:6px 15px 0;color:#909399;text-align:center}.el-transfer-panel .el-checkbox__label{padding-left:8px}.el-transfer-panel .el-checkbox__inner{height:14px;width:14px;border-radius:3px}.el-transfer-panel .el-checkbox__inner::after{height:6px;width:3px;left:4px}.el-container{display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-preferred-size:auto;flex-basis:auto;-webkit-box-sizing:border-box;box-sizing:border-box;min-width:0}.el-container.is-vertical,.el-drawer{-webkit-box-orient:vertical;-webkit-box-direction:normal}.el-aside,.el-header{-webkit-box-sizing:border-box}.el-container.is-vertical{-ms-flex-direction:column;flex-direction:column}.el-header{padding:0 20px;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}.el-aside{overflow:auto;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}.el-footer,.el-main{-webkit-box-sizing:border-box}.el-main{display:block;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-preferred-size:auto;flex-basis:auto;overflow:auto;box-sizing:border-box;padding:20px}.el-footer{padding:0 20px;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}.el-timeline{margin:0;font-size:14px;list-style:none}.el-timeline .el-timeline-item:last-child .el-timeline-item__tail{display:none}.el-timeline-item{position:relative;padding-bottom:20px}.el-timeline-item__wrapper{position:relative;padding-left:28px;top:-3px}.el-timeline-item__tail{position:absolute;left:4px;height:100%;border-left:2px solid #E4E7ED}.el-timeline-item__icon{color:#FFF;font-size:13px}.el-timeline-item__node{position:absolute;background-color:#E4E7ED;border-radius:50%;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-image__error,.el-timeline-item__dot{display:-webkit-box;display:-ms-flexbox}.el-timeline-item__node--normal{left:-1px;width:12px;height:12px}.el-timeline-item__node--large{left:-2px;width:14px;height:14px}.el-timeline-item__node--primary{background-color:#409EFF}.el-timeline-item__node--success{background-color:#67C23A}.el-timeline-item__node--warning{background-color:#E6A23C}.el-timeline-item__node--danger{background-color:#F56C6C}.el-timeline-item__node--info{background-color:#909399}.el-timeline-item__dot{position:absolute;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-timeline-item__content{color:#303133}.el-timeline-item__timestamp{color:#909399;line-height:1;font-size:13px}.el-timeline-item__timestamp.is-top{margin-bottom:8px;padding-top:4px}.el-timeline-item__timestamp.is-bottom{margin-top:8px}.el-link{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;vertical-align:middle;position:relative;text-decoration:none;outline:0;padding:0}.el-link.is-underline:hover:after{content:"";position:absolute;left:0;right:0;height:0;bottom:0;border-bottom:1px solid #409EFF}.el-link.el-link--default:after,.el-link.el-link--primary.is-underline:hover:after,.el-link.el-link--primary:after{border-color:#409EFF}.el-link.is-disabled{cursor:not-allowed}.el-link [class*=el-icon-]+span{margin-left:5px}.el-link.el-link--default{color:#606266}.el-link.el-link--default:hover{color:#409EFF}.el-link.el-link--default.is-disabled{color:#C0C4CC}.el-link.el-link--primary{color:#409EFF}.el-link.el-link--primary:hover{color:#66b1ff}.el-link.el-link--primary.is-disabled{color:#a0cfff}.el-link.el-link--danger.is-underline:hover:after,.el-link.el-link--danger:after{border-color:#F56C6C}.el-link.el-link--danger{color:#F56C6C}.el-link.el-link--danger:hover{color:#f78989}.el-link.el-link--danger.is-disabled{color:#fab6b6}.el-link.el-link--success.is-underline:hover:after,.el-link.el-link--success:after{border-color:#67C23A}.el-link.el-link--success{color:#67C23A}.el-link.el-link--success:hover{color:#85ce61}.el-link.el-link--success.is-disabled{color:#b3e19d}.el-link.el-link--warning.is-underline:hover:after,.el-link.el-link--warning:after{border-color:#E6A23C}.el-link.el-link--warning{color:#E6A23C}.el-link.el-link--warning:hover{color:#ebb563}.el-link.el-link--warning.is-disabled{color:#f3d19e}.el-link.el-link--info.is-underline:hover:after,.el-link.el-link--info:after{border-color:#909399}.el-link.el-link--info{color:#909399}.el-link.el-link--info:hover{color:#a6a9ad}.el-link.el-link--info.is-disabled{color:#c8c9cc}.el-divider{background-color:#DCDFE6;position:relative}.el-divider--horizontal{display:block;height:1px;width:100%;margin:24px 0}.el-divider--vertical{display:inline-block;width:1px;height:1em;margin:0 8px;vertical-align:middle;position:relative}.el-divider__text{position:absolute;background-color:#FFF;padding:0 20px;color:#303133}.el-image__error,.el-image__placeholder{background:#F5F7FA}.el-divider__text.is-left{left:20px;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-divider__text.is-center{left:50%;-webkit-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.el-divider__text.is-right{right:20px;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-image__error,.el-image__inner,.el-image__placeholder{width:100%;height:100%}.el-image{position:relative;display:inline-block;overflow:hidden}.el-image__inner{vertical-align:top}.el-image__inner--center{position:relative;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);display:block}.el-image__error{display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:14px;color:#C0C4CC;vertical-align:middle}.el-image__preview{cursor:pointer}.el-image-viewer__wrapper{position:fixed;top:0;right:0;bottom:0;left:0}.el-image-viewer__btn{position:absolute;z-index:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:50%;opacity:.8;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;user-select:none}.el-button,.el-checkbox{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.el-image-viewer__close{top:40px;right:40px;width:40px;height:40px;font-size:24px;color:#fff;background-color:#606266}.el-image-viewer__canvas{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-image-viewer__actions{left:50%;bottom:30px;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:282px;height:44px;padding:0 23px;background-color:#606266;border-color:#fff;border-radius:22px}.el-image-viewer__actions__inner{width:100%;height:100%;text-align:justify;cursor:default;font-size:23px;color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-pack:distribute;justify-content:space-around}.el-image-viewer__next,.el-image-viewer__prev{top:50%;width:44px;height:44px;font-size:24px;color:#fff;background-color:#606266;border-color:#fff}.el-image-viewer__prev{-webkit-transform:translateY(-50%);transform:translateY(-50%);left:40px}.el-image-viewer__next{-webkit-transform:translateY(-50%);transform:translateY(-50%);right:40px;text-indent:2px}.el-image-viewer__mask{position:absolute;width:100%;height:100%;top:0;left:0;opacity:.5;background:#000}.viewer-fade-enter-active{-webkit-animation:viewer-fade-in .3s;animation:viewer-fade-in .3s}.viewer-fade-leave-active{-webkit-animation:viewer-fade-out .3s;animation:viewer-fade-out .3s}@-webkit-keyframes viewer-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes viewer-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes viewer-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes viewer-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}.el-button{display:inline-block;line-height:1;white-space:nowrap;cursor:pointer;background:#FFF;border:1px solid #DCDFE6;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;-webkit-transition:.1s;transition:.1s;font-weight:500;padding:12px 20px;font-size:14px;border-radius:4px}.el-button+.el-button{margin-left:10px}.el-button:focus,.el-button:hover{color:#409EFF;border-color:#c6e2ff;background-color:#ecf5ff}.el-button:active{color:#3a8ee6;border-color:#3a8ee6;outline:0}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon-]+span{margin-left:5px}.el-button.is-plain:focus,.el-button.is-plain:hover{background:#FFF;border-color:#409EFF;color:#409EFF}.el-button.is-active,.el-button.is-plain:active{color:#3a8ee6;border-color:#3a8ee6}.el-button.is-plain:active{background:#FFF;outline:0}.el-button.is-disabled,.el-button.is-disabled:focus,.el-button.is-disabled:hover{color:#C0C4CC;cursor:not-allowed;background-image:none;background-color:#FFF;border-color:#EBEEF5}.el-button.is-disabled.el-button--text{background-color:transparent}.el-button.is-disabled.is-plain,.el-button.is-disabled.is-plain:focus,.el-button.is-disabled.is-plain:hover{background-color:#FFF;border-color:#EBEEF5;color:#C0C4CC}.el-button.is-loading{position:relative;pointer-events:none}.el-button.is-loading:before{pointer-events:none;content:'';position:absolute;left:-1px;top:-1px;right:-1px;bottom:-1px;border-radius:inherit;background-color:rgba(255,255,255,.35)}.el-button.is-round{border-radius:20px;padding:12px 23px}.el-button.is-circle{border-radius:50%;padding:12px}.el-button--primary{color:#FFF;background-color:#409EFF;border-color:#409EFF}.el-button--primary:focus,.el-button--primary:hover{background:#66b1ff;border-color:#66b1ff;color:#FFF}.el-button--primary.is-active,.el-button--primary:active{background:#3a8ee6;border-color:#3a8ee6;color:#FFF}.el-button--primary:active{outline:0}.el-button--primary.is-disabled,.el-button--primary.is-disabled:active,.el-button--primary.is-disabled:focus,.el-button--primary.is-disabled:hover{color:#FFF;background-color:#a0cfff;border-color:#a0cfff}.el-button--primary.is-plain{color:#409EFF;background:#ecf5ff;border-color:#b3d8ff}.el-button--primary.is-plain:focus,.el-button--primary.is-plain:hover{background:#409EFF;border-color:#409EFF;color:#FFF}.el-button--primary.is-plain:active{background:#3a8ee6;border-color:#3a8ee6;color:#FFF;outline:0}.el-button--primary.is-plain.is-disabled,.el-button--primary.is-plain.is-disabled:active,.el-button--primary.is-plain.is-disabled:focus,.el-button--primary.is-plain.is-disabled:hover{color:#8cc5ff;background-color:#ecf5ff;border-color:#d9ecff}.el-button--success{color:#FFF;background-color:#67C23A;border-color:#67C23A}.el-button--success:focus,.el-button--success:hover{background:#85ce61;border-color:#85ce61;color:#FFF}.el-button--success.is-active,.el-button--success:active{background:#5daf34;border-color:#5daf34;color:#FFF}.el-button--success:active{outline:0}.el-button--success.is-disabled,.el-button--success.is-disabled:active,.el-button--success.is-disabled:focus,.el-button--success.is-disabled:hover{color:#FFF;background-color:#b3e19d;border-color:#b3e19d}.el-button--success.is-plain{color:#67C23A;background:#f0f9eb;border-color:#c2e7b0}.el-button--success.is-plain:focus,.el-button--success.is-plain:hover{background:#67C23A;border-color:#67C23A;color:#FFF}.el-button--success.is-plain:active{background:#5daf34;border-color:#5daf34;color:#FFF;outline:0}.el-button--success.is-plain.is-disabled,.el-button--success.is-plain.is-disabled:active,.el-button--success.is-plain.is-disabled:focus,.el-button--success.is-plain.is-disabled:hover{color:#a4da89;background-color:#f0f9eb;border-color:#e1f3d8}.el-button--warning{color:#FFF;background-color:#E6A23C;border-color:#E6A23C}.el-button--warning:focus,.el-button--warning:hover{background:#ebb563;border-color:#ebb563;color:#FFF}.el-button--warning.is-active,.el-button--warning:active{background:#cf9236;border-color:#cf9236;color:#FFF}.el-button--warning:active{outline:0}.el-button--warning.is-disabled,.el-button--warning.is-disabled:active,.el-button--warning.is-disabled:focus,.el-button--warning.is-disabled:hover{color:#FFF;background-color:#f3d19e;border-color:#f3d19e}.el-button--warning.is-plain{color:#E6A23C;background:#fdf6ec;border-color:#f5dab1}.el-button--warning.is-plain:focus,.el-button--warning.is-plain:hover{background:#E6A23C;border-color:#E6A23C;color:#FFF}.el-button--warning.is-plain:active{background:#cf9236;border-color:#cf9236;color:#FFF;outline:0}.el-button--warning.is-plain.is-disabled,.el-button--warning.is-plain.is-disabled:active,.el-button--warning.is-plain.is-disabled:focus,.el-button--warning.is-plain.is-disabled:hover{color:#f0c78a;background-color:#fdf6ec;border-color:#faecd8}.el-button--danger{color:#FFF;background-color:#F56C6C;border-color:#F56C6C}.el-button--danger:focus,.el-button--danger:hover{background:#f78989;border-color:#f78989;color:#FFF}.el-button--danger.is-active,.el-button--danger:active{background:#dd6161;border-color:#dd6161;color:#FFF}.el-button--danger:active{outline:0}.el-button--danger.is-disabled,.el-button--danger.is-disabled:active,.el-button--danger.is-disabled:focus,.el-button--danger.is-disabled:hover{color:#FFF;background-color:#fab6b6;border-color:#fab6b6}.el-button--danger.is-plain{color:#F56C6C;background:#fef0f0;border-color:#fbc4c4}.el-button--danger.is-plain:focus,.el-button--danger.is-plain:hover{background:#F56C6C;border-color:#F56C6C;color:#FFF}.el-button--danger.is-plain:active{background:#dd6161;border-color:#dd6161;color:#FFF;outline:0}.el-button--danger.is-plain.is-disabled,.el-button--danger.is-plain.is-disabled:active,.el-button--danger.is-plain.is-disabled:focus,.el-button--danger.is-plain.is-disabled:hover{color:#f9a7a7;background-color:#fef0f0;border-color:#fde2e2}.el-button--info{color:#FFF;background-color:#909399;border-color:#909399}.el-button--info:focus,.el-button--info:hover{background:#a6a9ad;border-color:#a6a9ad;color:#FFF}.el-button--info.is-active,.el-button--info:active{background:#82848a;border-color:#82848a;color:#FFF}.el-button--info:active{outline:0}.el-button--info.is-disabled,.el-button--info.is-disabled:active,.el-button--info.is-disabled:focus,.el-button--info.is-disabled:hover{color:#FFF;background-color:#c8c9cc;border-color:#c8c9cc}.el-button--info.is-plain{color:#909399;background:#f4f4f5;border-color:#d3d4d6}.el-button--info.is-plain:focus,.el-button--info.is-plain:hover{background:#909399;border-color:#909399;color:#FFF}.el-button--info.is-plain:active{background:#82848a;border-color:#82848a;color:#FFF;outline:0}.el-button--info.is-plain.is-disabled,.el-button--info.is-plain.is-disabled:active,.el-button--info.is-plain.is-disabled:focus,.el-button--info.is-plain.is-disabled:hover{color:#bcbec2;background-color:#f4f4f5;border-color:#e9e9eb}.el-button--text,.el-button--text.is-disabled,.el-button--text.is-disabled:focus,.el-button--text.is-disabled:hover,.el-button--text:active{border-color:transparent}.el-button--medium{padding:10px 20px;font-size:14px;border-radius:4px}.el-button--mini,.el-button--small{font-size:12px;border-radius:3px}.el-button--medium.is-round{padding:10px 20px}.el-button--medium.is-circle{padding:10px}.el-button--small,.el-button--small.is-round{padding:9px 15px}.el-button--small.is-circle{padding:9px}.el-button--mini,.el-button--mini.is-round{padding:7px 15px}.el-button--mini.is-circle{padding:7px}.el-button--text{color:#409EFF;background:0 0;padding-left:0;padding-right:0}.el-button--text:focus,.el-button--text:hover{color:#66b1ff;border-color:transparent;background-color:transparent}.el-button--text:active{color:#3a8ee6;background-color:transparent}.el-button-group{display:inline-block;vertical-align:middle}.el-button-group::after,.el-button-group::before{display:table;content:""}.el-button-group::after{clear:both}.el-button-group>.el-button{float:left;position:relative}.el-button-group>.el-button+.el-button{margin-left:0}.el-button-group>.el-button.is-disabled{z-index:1}.el-button-group>.el-button:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.el-button-group>.el-button:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.el-button-group>.el-button:first-child:last-child{border-radius:4px}.el-button-group>.el-button:first-child:last-child.is-round{border-radius:20px}.el-button-group>.el-button:first-child:last-child.is-circle{border-radius:50%}.el-button-group>.el-button:not(:first-child):not(:last-child){border-radius:0}.el-button-group>.el-button:not(:last-child){margin-right:-1px}.el-button-group>.el-button.is-active,.el-button-group>.el-button:active,.el-button-group>.el-button:focus,.el-button-group>.el-button:hover{z-index:1}.el-button-group>.el-dropdown>.el-button{border-top-left-radius:0;border-bottom-left-radius:0;border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-calendar{background-color:#fff}.el-calendar__header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:12px 20px;border-bottom:1px solid #EBEEF5}.el-backtop,.el-page-header{display:-webkit-box;display:-ms-flexbox}.el-calendar__title{color:#000;-ms-flex-item-align:center;align-self:center}.el-calendar__body{padding:12px 20px 35px}.el-calendar-table{table-layout:fixed;width:100%}.el-calendar-table thead th{padding:12px 0;color:#606266;font-weight:400}.el-calendar-table:not(.is-range) td.next,.el-calendar-table:not(.is-range) td.prev{color:#C0C4CC}.el-backtop,.el-calendar-table td.is-today{color:#409EFF}.el-calendar-table td{border-bottom:1px solid #EBEEF5;border-right:1px solid #EBEEF5;vertical-align:top;-webkit-transition:background-color .2s ease;transition:background-color .2s ease}.el-calendar-table td.is-selected{background-color:#F2F8FE}.el-calendar-table tr:first-child td{border-top:1px solid #EBEEF5}.el-calendar-table tr td:first-child{border-left:1px solid #EBEEF5}.el-calendar-table tr.el-calendar-table__row--hide-border td{border-top:none}.el-calendar-table .el-calendar-day{-webkit-box-sizing:border-box;box-sizing:border-box;padding:8px;height:85px}.el-calendar-table .el-calendar-day:hover{cursor:pointer;background-color:#F2F8FE}.el-backtop{position:fixed;background-color:#FFF;width:40px;height:40px;border-radius:50%;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:20px;-webkit-box-shadow:0 0 6px rgba(0,0,0,.12);box-shadow:0 0 6px rgba(0,0,0,.12);cursor:pointer;z-index:5}.el-backtop:hover{background-color:#F2F6FC}.el-page-header{display:flex;line-height:24px}.el-page-header__left{display:-webkit-box;display:-ms-flexbox;display:flex;cursor:pointer;margin-right:40px;position:relative}.el-page-header__left::after{content:"";position:absolute;width:1px;height:16px;right:-20px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);background-color:#DCDFE6}.el-checkbox,.el-checkbox__input{display:inline-block;position:relative;white-space:nowrap}.el-page-header__left .el-icon-back{font-size:18px;margin-right:6px;-ms-flex-item-align:center;align-self:center}.el-page-header__title{font-size:14px;font-weight:500}.el-page-header__content{font-size:18px;color:#303133}.el-checkbox{color:#606266;font-weight:500;font-size:14px;cursor:pointer;user-select:none;margin-right:30px}.el-checkbox-button__inner,.el-radio{font-weight:500;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.el-checkbox.is-bordered{padding:9px 20px 9px 10px;border-radius:4px;border:1px solid #DCDFE6;-webkit-box-sizing:border-box;box-sizing:border-box;line-height:normal;height:40px}.el-checkbox.is-bordered.is-checked{border-color:#409EFF}.el-checkbox.is-bordered.is-disabled{border-color:#EBEEF5;cursor:not-allowed}.el-checkbox.is-bordered+.el-checkbox.is-bordered{margin-left:10px}.el-checkbox.is-bordered.el-checkbox--medium{padding:7px 20px 7px 10px;border-radius:4px;height:36px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__label{line-height:17px;font-size:14px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__inner{height:14px;width:14px}.el-checkbox.is-bordered.el-checkbox--small{padding:5px 15px 5px 10px;border-radius:3px;height:32px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{line-height:15px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner::after{height:6px;width:2px}.el-checkbox.is-bordered.el-checkbox--mini{padding:3px 15px 3px 10px;border-radius:3px;height:28px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__label{line-height:12px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner::after{height:6px;width:2px}.el-checkbox__input{cursor:pointer;outline:0;line-height:1;vertical-align:middle}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:#edf2fc;border-color:#DCDFE6;cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner::after{cursor:not-allowed;border-color:#C0C4CC}.el-checkbox__input.is-disabled .el-checkbox__inner+.el-checkbox__label{cursor:not-allowed}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:#F2F6FC;border-color:#DCDFE6}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after{border-color:#C0C4CC}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:#F2F6FC;border-color:#DCDFE6}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner::before{background-color:#C0C4CC;border-color:#C0C4CC}.el-checkbox__input.is-checked .el-checkbox__inner,.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:#409EFF;border-color:#409EFF}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:#C0C4CC;cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner::after{-webkit-transform:rotate(45deg) scaleY(1);transform:rotate(45deg) scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:#409EFF}.el-checkbox__input.is-focus .el-checkbox__inner{border-color:#409EFF}.el-checkbox__input.is-indeterminate .el-checkbox__inner::before{content:'';position:absolute;display:block;background-color:#FFF;height:2px;-webkit-transform:scale(.5);transform:scale(.5);left:0;right:0;top:5px}.el-checkbox__input.is-indeterminate .el-checkbox__inner::after{display:none}.el-checkbox__inner{display:inline-block;position:relative;border:1px solid #DCDFE6;border-radius:2px;-webkit-box-sizing:border-box;box-sizing:border-box;width:14px;height:14px;background-color:#FFF;z-index:1;-webkit-transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46);transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46)}.el-checkbox__inner:hover{border-color:#409EFF}.el-checkbox__inner::after{-webkit-box-sizing:content-box;box-sizing:content-box;content:"";border:1px solid #FFF;border-left:0;border-top:0;height:7px;left:4px;position:absolute;top:1px;-webkit-transform:rotate(45deg) scaleY(0);transform:rotate(45deg) scaleY(0);width:3px;-webkit-transition:-webkit-transform .15s ease-in .05s;transition:-webkit-transform .15s ease-in .05s;transition:transform .15s ease-in .05s;transition:transform .15s ease-in .05s,-webkit-transform .15s ease-in .05s;-webkit-transform-origin:center;transform-origin:center}.el-checkbox__original{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;z-index:-1}.el-checkbox-button,.el-checkbox-button__inner{display:inline-block;position:relative}.el-checkbox__label{display:inline-block;padding-left:10px;line-height:19px;font-size:14px}.el-checkbox:last-of-type{margin-right:0}.el-checkbox-button__inner{line-height:1;white-space:nowrap;vertical-align:middle;cursor:pointer;background:#FFF;border:1px solid #DCDFE6;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);padding:12px 20px;font-size:14px;border-radius:0}.el-checkbox-button__inner.is-round{padding:12px 20px}.el-checkbox-button__inner:hover{color:#409EFF}.el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.el-radio,.el-radio__input{line-height:1;white-space:nowrap;outline:0}.el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.el-checkbox-button__original{opacity:0;outline:0;position:absolute;margin:0;z-index:-1}.el-radio,.el-radio__inner,.el-radio__input{position:relative;display:inline-block}.el-checkbox-button.is-checked .el-checkbox-button__inner{color:#FFF;background-color:#409EFF;border-color:#409EFF;-webkit-box-shadow:-1px 0 0 0 #8cc5ff;box-shadow:-1px 0 0 0 #8cc5ff}.el-checkbox-button.is-checked:first-child .el-checkbox-button__inner{border-left-color:#409EFF}.el-checkbox-button.is-disabled .el-checkbox-button__inner{color:#C0C4CC;cursor:not-allowed;background-image:none;background-color:#FFF;border-color:#EBEEF5;-webkit-box-shadow:none;box-shadow:none}.el-checkbox-button.is-disabled:first-child .el-checkbox-button__inner{border-left-color:#EBEEF5}.el-checkbox-button:first-child .el-checkbox-button__inner{border-left:1px solid #DCDFE6;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:#409EFF}.el-checkbox-button:last-child .el-checkbox-button__inner{border-radius:0 4px 4px 0}.el-checkbox-button--medium .el-checkbox-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-checkbox-button--medium .el-checkbox-button__inner.is-round{padding:10px 20px}.el-checkbox-button--small .el-checkbox-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:9px 15px}.el-checkbox-button--mini .el-checkbox-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-checkbox-button--mini .el-checkbox-button__inner.is-round{padding:7px 15px}.el-checkbox-group{font-size:0}.el-radio,.el-radio--medium.is-bordered .el-radio__label{font-size:14px}.el-radio{color:#606266;cursor:pointer;margin-right:30px}.el-cascader-node>.el-radio,.el-radio:last-child{margin-right:0}.el-radio.is-bordered{padding:12px 20px 0 10px;border-radius:4px;border:1px solid #DCDFE6;-webkit-box-sizing:border-box;box-sizing:border-box;height:40px}.el-radio.is-bordered.is-checked{border-color:#409EFF}.el-radio.is-bordered.is-disabled{cursor:not-allowed;border-color:#EBEEF5}.el-radio__input.is-disabled .el-radio__inner,.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:#F5F7FA;border-color:#E4E7ED}.el-radio.is-bordered+.el-radio.is-bordered{margin-left:10px}.el-radio--medium.is-bordered{padding:10px 20px 0 10px;border-radius:4px;height:36px}.el-radio--mini.is-bordered .el-radio__label,.el-radio--small.is-bordered .el-radio__label{font-size:12px}.el-radio--medium.is-bordered .el-radio__inner{height:14px;width:14px}.el-radio--small.is-bordered{padding:8px 15px 0 10px;border-radius:3px;height:32px}.el-radio--small.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio--mini.is-bordered{padding:6px 15px 0 10px;border-radius:3px;height:28px}.el-radio--mini.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio__input{cursor:pointer;vertical-align:middle}.el-radio__input.is-disabled .el-radio__inner{cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner::after{cursor:not-allowed;background-color:#F5F7FA}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner::after{background-color:#C0C4CC}.el-radio__input.is-disabled+span.el-radio__label{color:#C0C4CC;cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{border-color:#409EFF;background:#409EFF}.el-radio__input.is-checked .el-radio__inner::after{-webkit-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:#409EFF}.el-radio__input.is-focus .el-radio__inner{border-color:#409EFF}.el-radio__inner{border:1px solid #DCDFE6;border-radius:100%;width:14px;height:14px;background-color:#FFF;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box}.el-radio__inner:hover{border-color:#409EFF}.el-radio__inner::after{width:4px;height:4px;border-radius:100%;background-color:#FFF;content:"";position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%) scale(0);transform:translate(-50%,-50%) scale(0);-webkit-transition:-webkit-transform .15s ease-in;transition:-webkit-transform .15s ease-in;transition:transform .15s ease-in;transition:transform .15s ease-in,-webkit-transform .15s ease-in}.el-radio__original{opacity:0;outline:0;position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;margin:0}.el-radio:focus:not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{-webkit-box-shadow:0 0 2px 2px #409EFF;box-shadow:0 0 2px 2px #409EFF}.el-radio__label{font-size:14px;padding-left:10px}.el-scrollbar{overflow:hidden;position:relative}.el-scrollbar:active>.el-scrollbar__bar,.el-scrollbar:focus>.el-scrollbar__bar,.el-scrollbar:hover>.el-scrollbar__bar{opacity:1;-webkit-transition:opacity 340ms ease-out;transition:opacity 340ms ease-out}.el-scrollbar__wrap{overflow:scroll;height:100%}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(144,147,153,.3);-webkit-transition:.3s background-color;transition:.3s background-color}.el-scrollbar__thumb:hover{background-color:rgba(144,147,153,.5)}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;-webkit-transition:opacity 120ms ease-out;transition:opacity 120ms ease-out}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-cascader-panel{display:-webkit-box;display:-ms-flexbox;display:flex;border-radius:4px;font-size:14px}.el-cascader-panel.is-bordered{border:1px solid #E4E7ED;border-radius:4px}.el-cascader-menu{min-width:180px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;border-right:solid 1px #E4E7ED}.el-cascader-menu:last-child{border-right:none}.el-cascader-menu:last-child .el-cascader-node{padding-right:20px}.el-cascader-menu__wrap{height:204px}.el-cascader-menu__list{position:relative;min-height:100%;margin:0;padding:6px 0;list-style:none;-webkit-box-sizing:border-box;box-sizing:border-box}.el-avatar,.el-drawer{-webkit-box-sizing:border-box;overflow:hidden}.el-cascader-menu__hover-zone{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.el-cascader-menu__empty-text{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);text-align:center;color:#C0C4CC}.el-cascader-node{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 30px 0 20px;height:34px;line-height:34px;outline:0}.el-cascader-node.is-selectable.in-active-path{color:#606266}.el-cascader-node.in-active-path,.el-cascader-node.is-active,.el-cascader-node.is-selectable.in-checked-path{color:#409EFF;font-weight:700}.el-cascader-node:not(.is-disabled){cursor:pointer}.el-cascader-node:not(.is-disabled):focus,.el-cascader-node:not(.is-disabled):hover{background:#F5F7FA}.el-cascader-node.is-disabled{color:#C0C4CC;cursor:not-allowed}.el-cascader-node__prefix{position:absolute;left:10px}.el-cascader-node__postfix{position:absolute;right:10px}.el-cascader-node__label{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:0 10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-cascader-node>.el-radio .el-radio__label{padding-left:0}.el-avatar{display:inline-block;box-sizing:border-box;text-align:center;color:#fff;background:#C0C4CC;width:40px;height:40px;line-height:40px;font-size:14px}.el-avatar>img{display:block;height:100%;vertical-align:middle}.el-drawer,.el-drawer__header{display:-webkit-box;display:-ms-flexbox}.el-avatar--circle{border-radius:50%}.el-avatar--square{border-radius:4px}.el-avatar--icon{font-size:18px}.el-avatar--large{width:40px;height:40px;line-height:40px}.el-avatar--medium{width:36px;height:36px;line-height:36px}.el-avatar--small{width:28px;height:28px;line-height:28px}.el-drawer.btt,.el-drawer.ttb,.el-drawer__container{left:0;right:0;width:100%}.el-drawer.ltr,.el-drawer.rtl,.el-drawer__container{top:0;bottom:0;height:100%}@-webkit-keyframes el-drawer-fade-in{0%{opacity:0}100%{opacity:1}}@keyframes el-drawer-fade-in{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes rtl-drawer-in{0%{-webkit-transform:translate(100%,0);transform:translate(100%,0)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@keyframes rtl-drawer-in{0%{-webkit-transform:translate(100%,0);transform:translate(100%,0)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@-webkit-keyframes rtl-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(100%,0);transform:translate(100%,0)}}@keyframes rtl-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(100%,0);transform:translate(100%,0)}}@-webkit-keyframes ltr-drawer-in{0%{-webkit-transform:translate(-100%,0);transform:translate(-100%,0)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@keyframes ltr-drawer-in{0%{-webkit-transform:translate(-100%,0);transform:translate(-100%,0)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@-webkit-keyframes ltr-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(-100%,0);transform:translate(-100%,0)}}@keyframes ltr-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(-100%,0);transform:translate(-100%,0)}}@-webkit-keyframes ttb-drawer-in{0%{-webkit-transform:translate(0,-100%);transform:translate(0,-100%)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@keyframes ttb-drawer-in{0%{-webkit-transform:translate(0,-100%);transform:translate(0,-100%)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@-webkit-keyframes ttb-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(0,-100%);transform:translate(0,-100%)}}@keyframes ttb-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(0,-100%);transform:translate(0,-100%)}}@-webkit-keyframes btt-drawer-in{0%{-webkit-transform:translate(0,100%);transform:translate(0,100%)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@keyframes btt-drawer-in{0%{-webkit-transform:translate(0,100%);transform:translate(0,100%)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@-webkit-keyframes btt-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(0,100%);transform:translate(0,100%)}}@keyframes btt-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(0,100%);transform:translate(0,100%)}}.el-drawer{position:absolute;box-sizing:border-box;background-color:#FFF;display:flex;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12);box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12);outline:0}.el-drawer.rtl{-webkit-animation:rtl-drawer-out .3s;animation:rtl-drawer-out .3s;right:0}.el-drawer__open .el-drawer.rtl{-webkit-animation:rtl-drawer-in .3s 1ms;animation:rtl-drawer-in .3s 1ms}.el-drawer.ltr{-webkit-animation:ltr-drawer-out .3s;animation:ltr-drawer-out .3s;left:0}.el-drawer__open .el-drawer.ltr{-webkit-animation:ltr-drawer-in .3s 1ms;animation:ltr-drawer-in .3s 1ms}.el-drawer.ttb{-webkit-animation:ttb-drawer-out .3s;animation:ttb-drawer-out .3s;top:0}.el-drawer__open .el-drawer.ttb{-webkit-animation:ttb-drawer-in .3s 1ms;animation:ttb-drawer-in .3s 1ms}.el-drawer.btt{-webkit-animation:btt-drawer-out .3s;animation:btt-drawer-out .3s;bottom:0}.el-drawer__open .el-drawer.btt{-webkit-animation:btt-drawer-in .3s 1ms;animation:btt-drawer-in .3s 1ms}.el-drawer__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:hidden;margin:0}.el-drawer__header{-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#72767b;display:flex;margin-bottom:32px;padding:20px 20px 0}.el-drawer__header>:first-child{-webkit-box-flex:1;-ms-flex:1;flex:1}.el-drawer__title{margin:0;-webkit-box-flex:1;-ms-flex:1;flex:1;line-height:inherit;font-size:1rem}.el-drawer__close-btn{border:none;cursor:pointer;font-size:20px;color:inherit;background-color:transparent}.el-drawer__body{-webkit-box-flex:1;-ms-flex:1;flex:1}.el-drawer__body>*{-webkit-box-sizing:border-box;box-sizing:border-box}.el-drawer__container{position:relative}.el-drawer-fade-enter-active{-webkit-animation:el-drawer-fade-in .3s;animation:el-drawer-fade-in .3s}.el-drawer-fade-leave-active{animation:el-drawer-fade-in .3s reverse}.el-popconfirm__main{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-popconfirm__icon{margin-right:5px}.el-popconfirm__action{text-align:right;margin:0}
\ No newline at end of file
diff --git a/mapWz/css/fonts/element-icons.ttf b/mapWz/css/fonts/element-icons.ttf
deleted file mode 100644
index 91b74de..0000000
--- a/mapWz/css/fonts/element-icons.ttf
+++ /dev/null
Binary files differ
diff --git a/mapWz/css/fonts/element-icons.woff b/mapWz/css/fonts/element-icons.woff
deleted file mode 100644
index 02b9a25..0000000
--- a/mapWz/css/fonts/element-icons.woff
+++ /dev/null
Binary files differ
diff --git a/mapWz/img/alarm.png b/mapWz/img/alarm.png
deleted file mode 100644
index 3757de9..0000000
--- a/mapWz/img/alarm.png
+++ /dev/null
Binary files differ
diff --git a/mapWz/img/alarm_time.png b/mapWz/img/alarm_time.png
deleted file mode 100644
index b7a3bf5..0000000
--- a/mapWz/img/alarm_time.png
+++ /dev/null
Binary files differ
diff --git a/mapWz/img/alarm_type.png b/mapWz/img/alarm_type.png
deleted file mode 100644
index 5acd59b..0000000
--- a/mapWz/img/alarm_type.png
+++ /dev/null
Binary files differ
diff --git a/mapWz/img/beizhu.png b/mapWz/img/beizhu.png
deleted file mode 100644
index 323a213..0000000
--- a/mapWz/img/beizhu.png
+++ /dev/null
Binary files differ
diff --git a/mapWz/img/desc.png b/mapWz/img/desc.png
deleted file mode 100644
index 5f4d801..0000000
--- a/mapWz/img/desc.png
+++ /dev/null
Binary files differ
diff --git a/mapWz/img/desc2.png b/mapWz/img/desc2.png
deleted file mode 100644
index c02da9d..0000000
--- a/mapWz/img/desc2.png
+++ /dev/null
Binary files differ
diff --git a/mapWz/img/dianhua.png b/mapWz/img/dianhua.png
deleted file mode 100644
index f5941a6..0000000
--- a/mapWz/img/dianhua.png
+++ /dev/null
Binary files differ
diff --git a/mapWz/img/dingw.gif b/mapWz/img/dingw.gif
deleted file mode 100644
index f50ef1f..0000000
--- a/mapWz/img/dingw.gif
+++ /dev/null
Binary files differ
diff --git a/mapWz/img/dingwei.png b/mapWz/img/dingwei.png
deleted file mode 100644
index 58a917e..0000000
--- a/mapWz/img/dingwei.png
+++ /dev/null
Binary files differ
diff --git a/mapWz/img/gaunbi.png b/mapWz/img/gaunbi.png
deleted file mode 100644
index f3dfa18..0000000
--- a/mapWz/img/gaunbi.png
+++ /dev/null
Binary files differ
diff --git a/mapWz/img/gray.png b/mapWz/img/gray.png
deleted file mode 100644
index 3d2024d..0000000
--- a/mapWz/img/gray.png
+++ /dev/null
Binary files differ
diff --git a/mapWz/img/green.png b/mapWz/img/green.png
deleted file mode 100644
index f6db902..0000000
--- a/mapWz/img/green.png
+++ /dev/null
Binary files differ
diff --git a/mapWz/img/huifang.png b/mapWz/img/huifang.png
deleted file mode 100644
index 0b8d52f..0000000
--- a/mapWz/img/huifang.png
+++ /dev/null
Binary files differ
diff --git a/mapWz/img/leixing.png b/mapWz/img/leixing.png
deleted file mode 100644
index ba2bb3c..0000000
--- a/mapWz/img/leixing.png
+++ /dev/null
Binary files differ
diff --git a/mapWz/img/people.png b/mapWz/img/people.png
deleted file mode 100644
index 5b94a7d..0000000
--- a/mapWz/img/people.png
+++ /dev/null
Binary files differ
diff --git a/mapWz/img/people1.png b/mapWz/img/people1.png
deleted file mode 100644
index c9f756c..0000000
--- a/mapWz/img/people1.png
+++ /dev/null
Binary files differ
diff --git a/mapWz/img/phone call.png b/mapWz/img/phone call.png
deleted file mode 100644
index d8061f8..0000000
--- a/mapWz/img/phone call.png
+++ /dev/null
Binary files differ
diff --git a/mapWz/img/phone.png b/mapWz/img/phone.png
deleted file mode 100644
index 8c0d3cb..0000000
--- a/mapWz/img/phone.png
+++ /dev/null
Binary files differ
diff --git a/mapWz/img/phone1.png b/mapWz/img/phone1.png
deleted file mode 100644
index 7fa6028..0000000
--- a/mapWz/img/phone1.png
+++ /dev/null
Binary files differ
diff --git a/mapWz/img/red.png b/mapWz/img/red.png
deleted file mode 100644
index a4f0271..0000000
--- a/mapWz/img/red.png
+++ /dev/null
Binary files differ
diff --git a/mapWz/img/ren.png b/mapWz/img/ren.png
deleted file mode 100644
index f6200a0..0000000
--- a/mapWz/img/ren.png
+++ /dev/null
Binary files differ
diff --git a/mapWz/img/shijian.png b/mapWz/img/shijian.png
deleted file mode 100644
index da0a0ff..0000000
--- a/mapWz/img/shijian.png
+++ /dev/null
Binary files differ
diff --git a/mapWz/img/shiping.png b/mapWz/img/shiping.png
deleted file mode 100644
index 3e32230..0000000
--- a/mapWz/img/shiping.png
+++ /dev/null
Binary files differ
diff --git a/mapWz/img/shiping11.png b/mapWz/img/shiping11.png
deleted file mode 100644
index c94662f..0000000
--- a/mapWz/img/shiping11.png
+++ /dev/null
Binary files differ
diff --git a/mapWz/img/shiyongren.png b/mapWz/img/shiyongren.png
deleted file mode 100644
index 424c1f4..0000000
--- a/mapWz/img/shiyongren.png
+++ /dev/null
Binary files differ
diff --git a/mapWz/img/type.png b/mapWz/img/type.png
deleted file mode 100644
index 08cc039..0000000
--- a/mapWz/img/type.png
+++ /dev/null
Binary files differ
diff --git a/mapWz/img/type1.png b/mapWz/img/type1.png
deleted file mode 100644
index d569695..0000000
--- a/mapWz/img/type1.png
+++ /dev/null
Binary files differ
diff --git a/mapWz/img/wz.png b/mapWz/img/wz.png
deleted file mode 100644
index 440bf5e..0000000
--- a/mapWz/img/wz.png
+++ /dev/null
Binary files differ
diff --git a/mapWz/img/xiangji.png b/mapWz/img/xiangji.png
deleted file mode 100644
index 6aa4b02..0000000
--- a/mapWz/img/xiangji.png
+++ /dev/null
Binary files differ
diff --git a/mapWz/img/yellow.png b/mapWz/img/yellow.png
deleted file mode 100644
index bdedf67..0000000
--- a/mapWz/img/yellow.png
+++ /dev/null
Binary files differ
diff --git a/mapWz/js/geolocation.min.js b/mapWz/js/geolocation.min.js
deleted file mode 100644
index ea0811c..0000000
--- a/mapWz/js/geolocation.min.js
+++ /dev/null
@@ -1,94 +0,0 @@
-window.qq = window.qq || {}, qq.maps = qq.maps || {}, window.soso || (window.soso = qq), soso.maps || (soso.maps = qq
-	.maps), qq.maps.Geolocation = function() {
-	"use strict";
-	var e = [],
-		t = null,
-		o = 0,
-		n = "_geoIframe_" + Math.ceil(1e7 * Math.random()),
-		i = document.createElement("iframe"),
-		r = null,
-		s = null,
-		a = null,
-		c = null,
-		u = function(u, l) {
-			if (!u) return void alert("请输入key!");
-			if (!l) return void alert("请输入referer!");
-			var p = document.getElementById(n);
-			if (!p) {
-				i.setAttribute("id", n), i.setAttribute("allow", "geolocation");
-				var g = "https:";
-				i.setAttribute("src", g + "//web.byisf.com/txdw/tools/geolocation?key=" + u + "&referer=" + l), i
-					.setAttribute("style", "display: none; width: 100%; height: 30%"), document.body ? document.body
-					.appendChild(i) : document.write(i.outerHTML);
-				var m = this;
-				window.addEventListener("message", function(n) {
-					var i = n.data;
-					if (i && "geolocation" == i.module) {
-						if (clearTimeout(c), e.length > 0) {
-							var u = e.shift();
-							u.sucCb && u.sucCb(i)
-						}
-						o = 2, m.executeNextGeo(), t && t(i)
-					} else {
-						s = (new Date).getTime();
-						var l = s - r;
-						if (l >= a) {
-							if (e.length > 0 && "geo" === e[0].type) {
-								var u = e.shift(),
-									p = {
-										type: "fail",
-										code: 5,
-										message: "The request"
-									};
-								u.errCb && u.errCb(p)
-							}
-							clearTimeout(c), o = -1, m.executeNextGeo()
-						}
-						if (e.length > 0 && "ip" === e[0].type) {
-							var u = e.shift();
-							u.errCb && u.errCb(p)
-						}
-					}
-				}, !1)
-			}
-		};
-	return u.prototype.executeNextGeo = function() {
-		1 !== o && e.length > 0 && (o = 1, e[0].geoprocess())
-	}, u.prototype.getLocation = function(t, n, i) {
-		if (i && i.timeout) {
-			var r = new RegExp("^[0-9]*$");
-			if (!r.test(i.timeout)) return void alert("timeout 请输入数字")
-		}
-		if (e.length > 10) throw new Error("geolocation queue must be lass than 10");
-		e.push({
-			sucCb: t,
-			errCb: n,
-			option: i,
-			geoprocess: this.getOnceLocation,
-			type: "geo"
-		}), 1 !== o && (o = 1, this.getOnceLocation())
-	}, u.prototype.getOnceLocation = function() {
-		var t = e[0] && e[0].option;
-		r = (new Date).getTime(), a = t && t.timeout ? +t.timeout : 1e4, clearTimeout(c), c = setTimeout(
-			function() {
-				if (e.length > 0) {
-					var t = e.shift();
-					t.errCb && t.errCb()
-				}
-			}, a), document.getElementById(n).contentWindow.postMessage("getLocation", "*")
-	}, u.prototype.getIpLocation = function(t, n) {
-		if (e.length > 10) throw new Error("geolocation queue mast be lass than 10");
-		e.push({
-			sucCb: t,
-			errCb: n,
-			geoprocess: this.getOnceIpLocation,
-			type: "ip"
-		}), 1 !== o && (o = 1, this.getOnceIpLocation())
-	}, u.prototype.getOnceIpLocation = function() {
-		document.getElementById(n).contentWindow.postMessage("getLocation.robust", "*")
-	}, u.prototype.watchPosition = function(e) {
-		t = e, document.getElementById(n).contentWindow.postMessage("watchPosition", "*")
-	}, u.prototype.clearWatch = function() {
-		t = null, document.getElementById(n).contentWindow.postMessage("clearWatch", "*")
-	}, u
-}();
diff --git a/mapWz/js/move.js b/mapWz/js/move.js
deleted file mode 100644
index b2ac24c..0000000
--- a/mapWz/js/move.js
+++ /dev/null
@@ -1,132 +0,0 @@
-// 使用说明:(需要移动的dom,触摸块dom,跟随改变map dom)
-function myDomMove(dom, div, map) {
-    this.m = $(dom);
-    this.div = $(div);
-    this.mapId = $(map);
-    this.__xx = null; //鼠标实时位置
-    this.__yy = null;
-    this.__sx = null; //鼠标开始位置
-    this.__sy = null;
-    this.__dx = null; //dom位置
-    this.__dy = null;
-    this.mapH = null; //地图高度
-    this.__wy = null; //屏幕高度
-    this.state = "up"; //dom状态默认up
-
-    this.getMosePosition = (x, y) => { //获取鼠标位置
-        this.__sx = x;
-        this.__sy = y;
-        // console.log(this.__sy, '鼠标开始');
-
-    }
-    this.getDomPosition = () => { //获取dom位置
-        this.__dx = this.m.offset().left;
-        this.__dy = this.m.offset().top;
-        this.__wy = document.documentElement.clientHeight;
-        // console.log(this.__dy, 'dom');
-    }
-    this.getMapHeight = () => { //获取地图高度
-        var that = this;
-        this.mapId.css("height", (index, value) => {
-                that.mapH = parseFloat(value);
-            })
-            // console.log(that.mapH, 'map位置');
-    }
-    this.changeDomPosition = (x, y, dy) => { //改变dom位置
-        var that = this;
-        // this.mapId.css("height", (index, value) => {//改变地图高度
-        //     var h = this.mapH + y;
-        //     console.log(h);
-        //     return h ;
-        // })
-        this.m.animate({ top: dy + "px" }, 10);
-
-    }
-
-
-    //begin
-    this.followFinger = (map, state = 14) => { //(地图实例,dom状态判断是向上还是向下)
-        // console.log('开始跟随手指');
-        var that = this;
-        if (state != 14) {
-            that.state = state;
-            // console.log(that.state);
-        }
-        that.getDomPosition(); //获取dom位置
-        that.getMapHeight(); //获取地图高度
-        var once = true;
-        that.div.on('touchmove', function(e) { //获取鼠标位置
-            e = e || window.event;
-            that.__xx = e.touches[0].clientX;
-            that.__yy = e.touches[0].clientY;
-            if (once) { //获取第一次点击的位置
-                once = false;
-                that.getMosePosition(that.__xx, that.__yy);
-            }
-            // console.log(that.__yy, '鼠标');
-            var h = that.__yy - that.__sy //鼠标移动距离y
-
-            if (that.state == 'down') { //两种模式
-                // console.log(that.state);
-                if (h >= 0 && h + that.__dy <= that.__wy - 20) {
-                    that.changeDomPosition(0, h, h + that.__dy); //改变位置
-                    // console.log(that.state,h + that.__dy,112);
-                }
-            } else if (that.state == 'up') {
-                if (h >= -that.__dy && h <= that.__wy - 20) {
-                    that.changeDomPosition(0, h, h + that.__wy - 20); //改变位置
-                    // console.log(that.state,h + that.__wy - 20,112);
-                }
-            }
-
-        });
-        that.div.on('touchend', function() { //抬起重置
-            once = true; //抬起重置鼠标点击位置
-            var chous = null;
-            if (that.state == 'down') { //两种模式
-                // var chous = Math.abs(that.__yy - that.__sy) < that.__wy / 4;
-                chous = (that.__sy - that.__yy) < 0;
-            } else if (that.state == 'up') {
-                // var chous = Math.abs(that.__yy - that.__sy) > that.__wy / 4;
-                chous = (that.__sy - that.__yy) < 0;
-            }
-            if (!chous) {
-                //改变dom位置
-                that.changeDomPosition(0, 0, (parseFloat(that.__wy / 10) * 3.999));
-                // that.getDomPosition();//抬起获取dom位置/持续停留使用
-                that.state = 'down';
-                $('#map').css("height", (index, value) => { //改变地图高度
-                    return '50%';
-                })
-                map.invalidateSize(true); //应用地图高度
-            } else {
-                // that.changeDomPosition(0, 0, that.__wy - 50); //改变位置
-                that.changeDomPosition(0, 0, that.__wy); //改变位置
-                // that.getDomPosition();//抬起获取dom位置/持续停留使用
-                that.state = 'up';
-                $('#map').css("height", (index, value) => { //改变地图高度
-                    return '100%';
-                })
-                map.invalidateSize(true); //应用地图高度
-            }
-            that.getMapHeight(); //抬起获取map高度
-        });
-    }
-    this.destruction = () => { //初始化销毁
-        this.m = $(dom);
-        this.div = $(div);
-        this.mapId = $(map);
-        this.__xx = null; //鼠标实时位置
-        this.__yy = null;
-        this.__sx = null; //鼠标开始位置
-        this.__sy = null;
-        this.__dx = null; //dom位置
-        this.__dy = null;
-        this.mapH = null; //地图高度
-        this.__wy = null; //屏幕高度
-        this.state = "up"; //dom状态默认up
-        this.div.off();
-    }
-}
-
-// export default myDomMove;
\ No newline at end of file
diff --git a/mapWz/js/vueMain.js b/mapWz/js/vueMain.js
deleted file mode 100644
index 2d50583..0000000
--- a/mapWz/js/vueMain.js
+++ /dev/null
@@ -1,422 +0,0 @@
-/*
- * @Author: Morpheus 
- * @Date: 2021-08-26 16:22:11 
- * @Last Modified by: Morpheus
- * @Last Modified time: 2021-08-28 15:03:25
- */
-var me = new Vue({
-    el: '#mapVue',
-    data: {
-        map: null, //map
-        getdata: null,
-        marker: null,
-        layuiLayer: null,
-        nowIndex: null,
-
-        LXdhStart: null,
-        LXdhEnd: null,
-        LxdhLine: null,
-
-        activeName: 'first',
-
-        move: null, //存放移动实例
-
-        //存放实时坐标
-        lat: "",
-        lng: "",
-        seedata: '',
-        nowPosition: '',
-        shipingPopupShow: false,
-        shipingM3u8Url: '',
-        resultFeedbackPopupShow: false,
-        popupDisplay: "none",
-        userId: null,
-        geolocation: null
-    },
-    methods: {
-
-        beginCome() {
-            var resultData = []
-            //url解码
-
-            var jurisdictionId = this.GetQueryString('id')
-
-            this.userId = this.GetQueryString('userid')
-
-            var deptid = this.GetQueryString('deptid')
-
-            var roleName = this.GetQueryChinese('roleName')
-
-            console.log(roleName)
-
-            var url = ''
-
-            if (roleName == '保安公司管理员') { 
-
-                url = 'http://223.82.109.183:2080/api/blade-user/pages?&current=1&size=999999&deptId=' + deptid
-
-            } else {
-
-                url = 'http://223.82.109.183:2080/api/blade-user/pages?dispatch=0&jurisdiction=' + jurisdictionId + '&current=1&size=999999'
-
-            }
-
-            axios.get(url).then((res) => {
-
-                if (res.data.data.records.length > 0) {
-                    res.data.data.records.forEach(item => {
-                        if (item.longitude && item.latitude && item.roleId != this.userId) {
-                            resultData.push(item)
-                        }
-                    })
-                }
-
-                this.map = this.beginMap(this.map, resultData); //创建并接受map
-                this.move = new myDomMove('#seedata', '.title', '#map');
-                this.map.invalidateSize(true); //应用地图高度
-                this.move.followFinger(this.map, 'down');
-
-            })
-
-        },
-        //url解码
-        GetQueryString(name) {
-            var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
-            var r = window.location.search.substr(1).match(reg);
-            if (r != null) return unescape(r[2]);
-            return null;
-        },
-        GetQueryChinese(name) {
-            var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
-            var r = window.location.search.substr(1).match(reg);
-            if (r != null) return decodeURI(r[2]);
-            return null;
-        },
-        beginMap(map, data) {
-            var that = this,
-                center = [28.708432053474827, 115.85883507433789];
-            // url = `http://s16s652780.51mypc.cn/api/alarm/alarm/APP-getAlarm?id=${data[0].id}`;
-            // url = `http://localhost:89/alarm/alarm/APP-getAlarm?id=${data[0].id}`;
-            this.nowPosition = center;
-            // axios.post(url).then((res) => {
-            //     if (res.data.data.length != 0) {
-            //         var dat = res.data.data[0];
-            //         for (var key in dat) {
-            //             if (dat[key] == null || dat[key] == '') {
-            //                 dat[key] = '暂无'
-            //             }
-            //         }
-            //         this.seedata = dat;
-
-            //     } else {
-            //         this.seedata = data[0];
-            //     }
-            // })
-
-            var createMap = () => {
-                map = L.map('map', { //初始化地图
-                    center: center,
-                    zoom: 10,
-                    minZoom: 2,
-                    maxZoom: 17,
-                    attributionControl: false, //去掉右下角
-                    zoomControl: false, //去掉缩放
-                });
-                L.tileLayer( //添加切片图层
-                    // "https://webmap-tile.sf-express.com/MapTileService/rt?x={x}&y={y}&z={z}", {//顺丰地图
-                    "https://webmap-tile.sf-express.com/MapTileService/rt?fetchtype=static&x={x}&y={y}&z={z}&project=sfmap&pic_size=256&pic_type=png8&data_name=361100&data_format=merged-dat&data_type=normal", { //顺丰地图
-                    }
-                ).addTo(map);
-            }
-            createMap();
-            var markers = L.markerClusterGroup();
-
-            var transportIcon = L.Icon.extend({ //图标初始化
-                options: {
-                    iconSize: [30, 30], // 图标尺寸
-                }
-            });
-
-            var wzIcon = new transportIcon({
-                iconUrl: './img/wz.png'
-            });
-
-            var setData = (a) => { //定义图标
-                marker = L.marker([Number(a.latitude), Number(a.longitude)], {
-                    icon: wzIcon,
-                    // icon: a.dtype == 0 ? carIcon : a.dtype == 1 ? planeIcon : a.dtype == 2 ? busIcon : '',
-                    // title: title,
-                    myData: { //自定义数据
-                        ...a
-                    }
-                });
-            }
-            for (var i = 0; i < data.length; i++) {
-                var a = data[i];
-                if (a.jd == '' || a.wd == '') {
-                    console.log('没有坐标', i)
-                } else {
-                    setData(a);
-                    // that.getDHLine(a.jd, a.wd);
-                }
-                markers.addLayer(marker);
-            }
-            map.addLayer(markers);
-
-            markers.on('click', function (a) {
-                // that.drawer = true;
-                that.seedata = a.layer.options.myData;
-                that.nowPosition = [that.seedata.wd, that.seedata.jd]
-                $('#seedata').css('top', '');
-
-
-                $('#seedata .content').html(`<div>
-                        <label for="">所属公司:</label>
-                            ${that.seedata.deptName}
-                    </div>
-                    <div>
-                        <label for="">保安姓名:</label>
-                            ${that.seedata.realName}
-                    </div>`);
-
-
-
-                $('#seedata').stop().show();
-
-                $('#seedata .clear').click(function () {
-
-                    $('#seedata').stop().hide();
-
-                    $('#map').css("height", (index, value) => { //改变地图高度
-                        return '100%';
-                    })
-                })
-
-
-                $('#map').css("height", (index, value) => { //改变地图高度
-                    return '80%';
-                })
-                map.invalidateSize(true); //应用地图高度
-                that.move.destruction();
-                that.move.followFinger(map, 'down');
-
-            });
-            this.nowPosition = center;
-
-
-            this.getLocationData(this.geolocation);
-
-            return map; //抛出map
-        },
-        getDHLine(x, y) {
-
-            var that = this;
-
-            //获取导航信息
-            axios({
-                method: "get",
-                url: `https://web.byisf.com/sf/rp/v2/api`,
-                params: {
-                    ak: "1986afc8a5744263971b7f2482253dfc",
-                    x1: that.lng,
-                    y1: that.lat,
-                    x2: x,
-                    y2: y,
-                    type: "1",
-                    strategy: "0",
-                    opt: "sf2"
-                },
-            }).then((res) => {
-                var resdata = res.data.result.coords;
-                var data = [];
-                for (var i = 0; i < resdata.length; i++) {
-                    var xy = [];
-                    xy.push(resdata[i][1]);
-                    xy.push(resdata[i][0]);
-                    data.push(xy);
-                }
-
-                if (that.LXdhEnd != null) {
-                    that.map.removeLayer(that.LXdhEnd);
-                }
-                if (that.LxdhLine != null) {
-                    that.map.removeLayer(that.LxdhLine);
-                }
-
-                //绘制起点和终点
-                that.LXdhEnd = L.markerClusterGroup();
-
-                var transportIcon = L.Icon.extend({ //图标初始化
-                    options: {
-                        iconSize: [56, 32], // 图标尺寸
-                    }
-                });
-
-                var zd = new transportIcon({
-                    iconUrl: './img/zd.png'
-                });
-                // var qd = new transportIcon({
-                // 	iconUrl: './img/qd.png'
-                // });
-
-                var qdzb = res.data.result.query;
-
-                var x = resdata[resdata.length - 1][0];
-                var y = resdata[resdata.length - 1][1];
-
-                that.LXdhEnd.addLayer(L.marker([y, x], {
-                    icon: zd,
-                }));
-                // markers.addLayer(L.marker([qdzb.start.y, qdzb.start.x], {
-                // 	icon: qd,
-                // }));
-
-                that.map.addLayer(that.LXdhEnd);
-
-                that.showPolyLine(data);
-            });
-        },
-        showPolyLine(xy) {
-            var that = this;
-            that.LxdhLine = L.polyline(xy, {
-                color: 'red'
-            }).addTo(that.map);
-
-            // zoom the map to the polyline
-            that.map.fitBounds(that.LxdhLine.getBounds())
-        },
-        //定位警情位置
-        titleClick() {
-            this.map.setView(this.nowPosition, 20);
-        },
-        //定位当前位置
-        locationMap() {
-            this.map.setView([this.lat, this.lng], 20);
-        },
-        shipingClick(open) { //打开视频
-            if (open) {
-                this.openRealVideoBox(this.seedata.serialNumber, this.seedata.channelNumber, this.seedata.deviceNumber, this.seedata.manufacturer);
-            } else {
-                this.shipingPopupShow = false;
-            }
-        },
-        resultFeedbackClick() { //结果反馈跳转小程序
-            uni.webView.navigateTo({
-                url: `../poput/workbench/policeDetails/policeDetails?id=${this.seedata.id}`
-            });
-        },
-        openRealVideoBox(serialNumber, channelNumber, deviceNumber, manufacturer) { //获取视频地址
-            var that = this;
-            if (manufacturer == "HK") {
-                axios
-                    .get(
-                        `/api/equipment/equipment/selectEquimentPlayInfo?number=${deviceNumber}&bmp=m3u8&manufacturer=${manufacturer}`
-                    )
-                    .then((result) => {
-                        that.videoSource = result.data.data.address;
-                        that.shipingM3u8Url = decodeURIComponent(that.videoSource);
-                        that.shipingPopupShow = true;
-                    })
-                    .ce;
-            } else {
-                var newAxios = axios.create({
-                    baseURL: "https://web.byisf.com:18000",
-                    withCredentials: false,
-                    headers: {
-                        "Content-type": "application/x-www-form-urlencoded",
-                    },
-                });
-                newAxios
-                    .post(
-                        "/api_control", {}, {
-                            params: {
-                                param: JSON.stringify({
-                                    PktType: "GetAccessToken"
-                                }),
-                            },
-                        }
-                    )
-                    .then((res) => {
-                        newAxios
-                            .get(
-                                `https://web.byisf.com:18000/GetPlayUrl?deviceCode=${serialNumber}&chl=${channelNumber}`
-                            )
-                            .then((result) => {
-                                that.videoSource = result.data.data.m3u8;
-                                that.shipingM3u8Url = decodeURIComponent(that.videoSource);
-                                that.shipingPopupShow = true;
-                            });
-                    });
-            }
-        },
-        upData() {
-            console.log('上传信息成功')
-        },
-        getLocationData(geolocation) {
-            var that = this;
-            var positionNum = 0;
-            var options = {
-                timeout: 8000
-            };
-
-            function showPosition(position) {
-
-                var adCode = position.adCode; //邮政编码
-                var nation = position.nation; //中国
-                var city = position.city; //城市
-                var addr = position.addr; //详细地址
-                that.lat = position.lat; //
-                that.lng = position.lng; //火星坐标 //TODO 实现业务代码逻辑 
-
-                if (that.LXdhStart != null) {
-                    that.map.removeLayer(that.LXdhStart);
-                }
-
-                //绘制起点和终点
-                that.LXdhStart = L.markerClusterGroup();
-
-                var transportIcon = L.Icon.extend({ //图标初始化
-                    options: {
-                        iconSize: [50, 50], // 图标尺寸
-                    }
-                });
-
-                var qd = new transportIcon({
-                    iconUrl: './img/dingw.gif'
-                });
-
-                that.LXdhStart.addLayer(L.marker([that.lat, that.lng], {
-                    icon: qd,
-                }));
-
-                that.map.addLayer(that.LXdhStart);
-
-            };
-
-            function showErr() {
-                //TODO 如果出错了调用此方法 
-            };
-
-
-            geolocation.getLocation(showPosition, showErr, options);
-
-        },
-
-    },
-    created() {},
-    mounted() {
-        this.geolocation = new qq.maps.Geolocation("T7RBZ-62U3X-RSQ4P-ZZVCB-WE7JT-HRBOG", "mapqq");
-
-        this.beginCome();
-
-        var that = this;
-
-        setInterval(() => {
-
-            that.getLocationData(that.geolocation);
-
-        }, 30000);
-
-    },
-    wacth: {}
-})
\ No newline at end of file
diff --git a/mapWz/lid/MarkerCluster.Default.css b/mapWz/lid/MarkerCluster.Default.css
deleted file mode 100644
index bbc8c9f..0000000
--- a/mapWz/lid/MarkerCluster.Default.css
+++ /dev/null
@@ -1,60 +0,0 @@
-.marker-cluster-small {
-	background-color: rgba(181, 226, 140, 0.6);
-	}
-.marker-cluster-small div {
-	background-color: rgba(110, 204, 57, 0.6);
-	}
-
-.marker-cluster-medium {
-	background-color: rgba(241, 211, 87, 0.6);
-	}
-.marker-cluster-medium div {
-	background-color: rgba(240, 194, 12, 0.6);
-	}
-
-.marker-cluster-large {
-	background-color: rgba(253, 156, 115, 0.6);
-	}
-.marker-cluster-large div {
-	background-color: rgba(241, 128, 23, 0.6);
-	}
-
-	/* IE 6-8 fallback colors */
-.leaflet-oldie .marker-cluster-small {
-	background-color: rgb(181, 226, 140);
-	}
-.leaflet-oldie .marker-cluster-small div {
-	background-color: rgb(110, 204, 57);
-	}
-
-.leaflet-oldie .marker-cluster-medium {
-	background-color: rgb(241, 211, 87);
-	}
-.leaflet-oldie .marker-cluster-medium div {
-	background-color: rgb(240, 194, 12);
-	}
-
-.leaflet-oldie .marker-cluster-large {
-	background-color: rgb(253, 156, 115);
-	}
-.leaflet-oldie .marker-cluster-large div {
-	background-color: rgb(241, 128, 23);
-}
-
-.marker-cluster {
-	background-clip: padding-box;
-	border-radius: 20px;
-	}
-.marker-cluster div {
-	width: 30px;
-	height: 30px;
-	margin-left: 5px;
-	margin-top: 5px;
-
-	text-align: center;
-	border-radius: 15px;
-	font: 12px "Helvetica Neue", Arial, Helvetica, sans-serif;
-	}
-.marker-cluster span {
-	line-height: 30px;
-	}
\ No newline at end of file
diff --git a/mapWz/lid/MarkerCluster.css b/mapWz/lid/MarkerCluster.css
deleted file mode 100644
index c60d71b..0000000
--- a/mapWz/lid/MarkerCluster.css
+++ /dev/null
@@ -1,14 +0,0 @@
-.leaflet-cluster-anim .leaflet-marker-icon, .leaflet-cluster-anim .leaflet-marker-shadow {
-	-webkit-transition: -webkit-transform 0.3s ease-out, opacity 0.3s ease-in;
-	-moz-transition: -moz-transform 0.3s ease-out, opacity 0.3s ease-in;
-	-o-transition: -o-transform 0.3s ease-out, opacity 0.3s ease-in;
-	transition: transform 0.3s ease-out, opacity 0.3s ease-in;
-}
-
-.leaflet-cluster-spider-leg {
-	/* stroke-dashoffset (duration and function) should match with leaflet-marker-icon transform in order to track it exactly */
-	-webkit-transition: -webkit-stroke-dashoffset 0.3s ease-out, -webkit-stroke-opacity 0.3s ease-in;
-	-moz-transition: -moz-stroke-dashoffset 0.3s ease-out, -moz-stroke-opacity 0.3s ease-in;
-	-o-transition: -o-stroke-dashoffset 0.3s ease-out, -o-stroke-opacity 0.3s ease-in;
-	transition: stroke-dashoffset 0.3s ease-out, stroke-opacity 0.3s ease-in;
-}
diff --git a/mapWz/lid/leaflet.css b/mapWz/lid/leaflet.css
deleted file mode 100644
index 017fa0e..0000000
--- a/mapWz/lid/leaflet.css
+++ /dev/null
@@ -1,640 +0,0 @@
-/* required styles */
-
-.leaflet-pane,
-.leaflet-tile,
-.leaflet-marker-icon,
-.leaflet-marker-shadow,
-.leaflet-tile-container,
-.leaflet-pane > svg,
-.leaflet-pane > canvas,
-.leaflet-zoom-box,
-.leaflet-image-layer,
-.leaflet-layer {
-	position: absolute;
-	left: 0;
-	top: 0;
-	}
-.leaflet-container {
-	overflow: hidden;
-	}
-.leaflet-tile,
-.leaflet-marker-icon,
-.leaflet-marker-shadow {
-	-webkit-user-select: none;
-	   -moz-user-select: none;
-	        user-select: none;
-	  -webkit-user-drag: none;
-	}
-/* Prevents IE11 from highlighting tiles in blue */
-.leaflet-tile::selection {
-	background: transparent;
-}
-/* Safari renders non-retina tile on retina better with this, but Chrome is worse */
-.leaflet-safari .leaflet-tile {
-	image-rendering: -webkit-optimize-contrast;
-	}
-/* hack that prevents hw layers "stretching" when loading new tiles */
-.leaflet-safari .leaflet-tile-container {
-	width: 1600px;
-	height: 1600px;
-	-webkit-transform-origin: 0 0;
-	}
-.leaflet-marker-icon,
-.leaflet-marker-shadow {
-	display: block;
-	}
-/* .leaflet-container svg: reset svg max-width decleration shipped in Joomla! (joomla.org) 3.x */
-/* .leaflet-container img: map is broken in FF if you have max-width: 100% on tiles */
-.leaflet-container .leaflet-overlay-pane svg,
-.leaflet-container .leaflet-marker-pane img,
-.leaflet-container .leaflet-shadow-pane img,
-.leaflet-container .leaflet-tile-pane img,
-.leaflet-container img.leaflet-image-layer,
-.leaflet-container .leaflet-tile {
-	max-width: none !important;
-	max-height: none !important;
-	}
-
-.leaflet-container.leaflet-touch-zoom {
-	-ms-touch-action: pan-x pan-y;
-	touch-action: pan-x pan-y;
-	}
-.leaflet-container.leaflet-touch-drag {
-	-ms-touch-action: pinch-zoom;
-	/* Fallback for FF which doesn't support pinch-zoom */
-	touch-action: none;
-	touch-action: pinch-zoom;
-}
-.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom {
-	-ms-touch-action: none;
-	touch-action: none;
-}
-.leaflet-container {
-	-webkit-tap-highlight-color: transparent;
-}
-.leaflet-container a {
-	-webkit-tap-highlight-color: rgba(51, 181, 229, 0.4);
-}
-.leaflet-tile {
-	filter: inherit;
-	visibility: hidden;
-	}
-.leaflet-tile-loaded {
-	visibility: inherit;
-	}
-.leaflet-zoom-box {
-	width: 0;
-	height: 0;
-	-moz-box-sizing: border-box;
-	     box-sizing: border-box;
-	z-index: 800;
-	}
-/* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */
-.leaflet-overlay-pane svg {
-	-moz-user-select: none;
-	}
-
-.leaflet-pane         { z-index: 400; }
-
-.leaflet-tile-pane    { z-index: 200; }
-.leaflet-overlay-pane { z-index: 400; }
-.leaflet-shadow-pane  { z-index: 500; }
-.leaflet-marker-pane  { z-index: 600; }
-.leaflet-tooltip-pane   { z-index: 650; }
-.leaflet-popup-pane   { z-index: 700; }
-
-.leaflet-map-pane canvas { z-index: 100; }
-.leaflet-map-pane svg    { z-index: 200; }
-
-.leaflet-vml-shape {
-	width: 1px;
-	height: 1px;
-	}
-.lvml {
-	behavior: url(#default#VML);
-	display: inline-block;
-	position: absolute;
-	}
-
-
-/* control positioning */
-
-.leaflet-control {
-	position: relative;
-	z-index: 800;
-	pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */
-	pointer-events: auto;
-	}
-.leaflet-top,
-.leaflet-bottom {
-	position: absolute;
-	z-index: 1000;
-	pointer-events: none;
-	}
-.leaflet-top {
-	top: 0;
-	}
-.leaflet-right {
-	right: 0;
-	}
-.leaflet-bottom {
-	bottom: 0;
-	}
-.leaflet-left {
-	left: 0;
-	}
-.leaflet-control {
-	float: left;
-	clear: both;
-	}
-.leaflet-right .leaflet-control {
-	float: right;
-	}
-.leaflet-top .leaflet-control {
-	margin-top: 10px;
-	}
-.leaflet-bottom .leaflet-control {
-	margin-bottom: 10px;
-	}
-.leaflet-left .leaflet-control {
-	margin-left: 10px;
-	}
-.leaflet-right .leaflet-control {
-	margin-right: 10px;
-	}
-
-
-/* zoom and fade animations */
-
-.leaflet-fade-anim .leaflet-tile {
-	will-change: opacity;
-	}
-.leaflet-fade-anim .leaflet-popup {
-	opacity: 0;
-	-webkit-transition: opacity 0.2s linear;
-	   -moz-transition: opacity 0.2s linear;
-	        transition: opacity 0.2s linear;
-	}
-.leaflet-fade-anim .leaflet-map-pane .leaflet-popup {
-	opacity: 1;
-	}
-.leaflet-zoom-animated {
-	-webkit-transform-origin: 0 0;
-	    -ms-transform-origin: 0 0;
-	        transform-origin: 0 0;
-	}
-.leaflet-zoom-anim .leaflet-zoom-animated {
-	will-change: transform;
-	}
-.leaflet-zoom-anim .leaflet-zoom-animated {
-	-webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1);
-	   -moz-transition:    -moz-transform 0.25s cubic-bezier(0,0,0.25,1);
-	        transition:         transform 0.25s cubic-bezier(0,0,0.25,1);
-	}
-.leaflet-zoom-anim .leaflet-tile,
-.leaflet-pan-anim .leaflet-tile {
-	-webkit-transition: none;
-	   -moz-transition: none;
-	        transition: none;
-	}
-
-.leaflet-zoom-anim .leaflet-zoom-hide {
-	visibility: hidden;
-	}
-
-
-/* cursors */
-
-.leaflet-interactive {
-	cursor: pointer;
-	}
-.leaflet-grab {
-	cursor: -webkit-grab;
-	cursor:    -moz-grab;
-	cursor:         grab;
-	}
-.leaflet-crosshair,
-.leaflet-crosshair .leaflet-interactive {
-	cursor: crosshair;
-	}
-.leaflet-popup-pane,
-.leaflet-control {
-	cursor: auto;
-	}
-.leaflet-dragging .leaflet-grab,
-.leaflet-dragging .leaflet-grab .leaflet-interactive,
-.leaflet-dragging .leaflet-marker-draggable {
-	cursor: move;
-	cursor: -webkit-grabbing;
-	cursor:    -moz-grabbing;
-	cursor:         grabbing;
-	}
-
-/* marker & overlays interactivity */
-.leaflet-marker-icon,
-.leaflet-marker-shadow,
-.leaflet-image-layer,
-.leaflet-pane > svg path,
-.leaflet-tile-container {
-	pointer-events: none;
-	}
-
-.leaflet-marker-icon.leaflet-interactive,
-.leaflet-image-layer.leaflet-interactive,
-.leaflet-pane > svg path.leaflet-interactive,
-svg.leaflet-image-layer.leaflet-interactive path {
-	pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */
-	pointer-events: auto;
-	}
-
-/* visual tweaks */
-
-.leaflet-container {
-	background: #ddd;
-	outline: 0;
-	}
-.leaflet-container a {
-	color: #0078A8;
-	}
-.leaflet-container a.leaflet-active {
-	outline: 2px solid orange;
-	}
-.leaflet-zoom-box {
-	border: 2px dotted #38f;
-	background: rgba(255,255,255,0.5);
-	}
-
-
-/* general typography */
-.leaflet-container {
-	font: 12px/1.5 "Helvetica Neue", Arial, Helvetica, sans-serif;
-	}
-
-
-/* general toolbar styles */
-
-.leaflet-bar {
-	box-shadow: 0 1px 5px rgba(0,0,0,0.65);
-	border-radius: 4px;
-	}
-.leaflet-bar a,
-.leaflet-bar a:hover {
-	background-color: #fff;
-	border-bottom: 1px solid #ccc;
-	width: 26px;
-	height: 26px;
-	line-height: 26px;
-	display: block;
-	text-align: center;
-	text-decoration: none;
-	color: black;
-	}
-.leaflet-bar a,
-.leaflet-control-layers-toggle {
-	background-position: 50% 50%;
-	background-repeat: no-repeat;
-	display: block;
-	}
-.leaflet-bar a:hover {
-	background-color: #f4f4f4;
-	}
-.leaflet-bar a:first-child {
-	border-top-left-radius: 4px;
-	border-top-right-radius: 4px;
-	}
-.leaflet-bar a:last-child {
-	border-bottom-left-radius: 4px;
-	border-bottom-right-radius: 4px;
-	border-bottom: none;
-	}
-.leaflet-bar a.leaflet-disabled {
-	cursor: default;
-	background-color: #f4f4f4;
-	color: #bbb;
-	}
-
-.leaflet-touch .leaflet-bar a {
-	width: 30px;
-	height: 30px;
-	line-height: 30px;
-	}
-.leaflet-touch .leaflet-bar a:first-child {
-	border-top-left-radius: 2px;
-	border-top-right-radius: 2px;
-	}
-.leaflet-touch .leaflet-bar a:last-child {
-	border-bottom-left-radius: 2px;
-	border-bottom-right-radius: 2px;
-	}
-
-/* zoom control */
-
-.leaflet-control-zoom-in,
-.leaflet-control-zoom-out {
-	font: bold 18px 'Lucida Console', Monaco, monospace;
-	text-indent: 1px;
-	}
-
-.leaflet-touch .leaflet-control-zoom-in, .leaflet-touch .leaflet-control-zoom-out  {
-	font-size: 22px;
-	}
-
-
-/* layers control */
-
-.leaflet-control-layers {
-	box-shadow: 0 1px 5px rgba(0,0,0,0.4);
-	background: #fff;
-	border-radius: 5px;
-	}
-.leaflet-control-layers-toggle {
-	background-image: url(images/layers.png);
-	width: 36px;
-	height: 36px;
-	}
-.leaflet-retina .leaflet-control-layers-toggle {
-	background-image: url(images/layers-2x.png);
-	background-size: 26px 26px;
-	}
-.leaflet-touch .leaflet-control-layers-toggle {
-	width: 44px;
-	height: 44px;
-	}
-.leaflet-control-layers .leaflet-control-layers-list,
-.leaflet-control-layers-expanded .leaflet-control-layers-toggle {
-	display: none;
-	}
-.leaflet-control-layers-expanded .leaflet-control-layers-list {
-	display: block;
-	position: relative;
-	}
-.leaflet-control-layers-expanded {
-	padding: 6px 10px 6px 6px;
-	color: #333;
-	background: #fff;
-	}
-.leaflet-control-layers-scrollbar {
-	overflow-y: scroll;
-	overflow-x: hidden;
-	padding-right: 5px;
-	}
-.leaflet-control-layers-selector {
-	margin-top: 2px;
-	position: relative;
-	top: 1px;
-	}
-.leaflet-control-layers label {
-	display: block;
-	}
-.leaflet-control-layers-separator {
-	height: 0;
-	border-top: 1px solid #ddd;
-	margin: 5px -10px 5px -6px;
-	}
-
-/* Default icon URLs */
-.leaflet-default-icon-path {
-	background-image: url(images/marker-icon.png);
-	}
-
-
-/* attribution and scale controls */
-
-.leaflet-container .leaflet-control-attribution {
-	background: #fff;
-	background: rgba(255, 255, 255, 0.7);
-	margin: 0;
-	}
-.leaflet-control-attribution,
-.leaflet-control-scale-line {
-	padding: 0 5px;
-	color: #333;
-	}
-.leaflet-control-attribution a {
-	text-decoration: none;
-	}
-.leaflet-control-attribution a:hover {
-	text-decoration: underline;
-	}
-.leaflet-container .leaflet-control-attribution,
-.leaflet-container .leaflet-control-scale {
-	font-size: 11px;
-	}
-.leaflet-left .leaflet-control-scale {
-	margin-left: 5px;
-	}
-.leaflet-bottom .leaflet-control-scale {
-	margin-bottom: 5px;
-	}
-.leaflet-control-scale-line {
-	border: 2px solid #777;
-	border-top: none;
-	line-height: 1.1;
-	padding: 2px 5px 1px;
-	font-size: 11px;
-	white-space: nowrap;
-	overflow: hidden;
-	-moz-box-sizing: border-box;
-	     box-sizing: border-box;
-
-	background: #fff;
-	background: rgba(255, 255, 255, 0.5);
-	}
-.leaflet-control-scale-line:not(:first-child) {
-	border-top: 2px solid #777;
-	border-bottom: none;
-	margin-top: -2px;
-	}
-.leaflet-control-scale-line:not(:first-child):not(:last-child) {
-	border-bottom: 2px solid #777;
-	}
-
-.leaflet-touch .leaflet-control-attribution,
-.leaflet-touch .leaflet-control-layers,
-.leaflet-touch .leaflet-bar {
-	box-shadow: none;
-	}
-.leaflet-touch .leaflet-control-layers,
-.leaflet-touch .leaflet-bar {
-	border: 2px solid rgba(0,0,0,0.2);
-	background-clip: padding-box;
-	}
-
-
-/* popup */
-
-.leaflet-popup {
-	position: absolute;
-	text-align: center;
-	margin-bottom: 20px;
-	}
-.leaflet-popup-content-wrapper {
-	padding: 1px;
-	text-align: left;
-	border-radius: 12px;
-	}
-.leaflet-popup-content {
-	margin: 13px 19px;
-	line-height: 1.4;
-	}
-.leaflet-popup-content p {
-	margin: 18px 0;
-	}
-.leaflet-popup-tip-container {
-	width: 40px;
-	height: 20px;
-	position: absolute;
-	left: 50%;
-	margin-left: -20px;
-	overflow: hidden;
-	pointer-events: none;
-	}
-.leaflet-popup-tip {
-	width: 17px;
-	height: 17px;
-	padding: 1px;
-
-	margin: -10px auto 0;
-
-	-webkit-transform: rotate(45deg);
-	   -moz-transform: rotate(45deg);
-	    -ms-transform: rotate(45deg);
-	        transform: rotate(45deg);
-	}
-.leaflet-popup-content-wrapper,
-.leaflet-popup-tip {
-	background: white;
-	color: #333;
-	box-shadow: 0 3px 14px rgba(0,0,0,0.4);
-	}
-.leaflet-container a.leaflet-popup-close-button {
-	position: absolute;
-	top: 0;
-	right: 0;
-	padding: 4px 4px 0 0;
-	border: none;
-	text-align: center;
-	width: 18px;
-	height: 14px;
-	font: 16px/14px Tahoma, Verdana, sans-serif;
-	color: #c3c3c3;
-	text-decoration: none;
-	font-weight: bold;
-	background: transparent;
-	}
-.leaflet-container a.leaflet-popup-close-button:hover {
-	color: #999;
-	}
-.leaflet-popup-scrolled {
-	overflow: auto;
-	border-bottom: 1px solid #ddd;
-	border-top: 1px solid #ddd;
-	}
-
-.leaflet-oldie .leaflet-popup-content-wrapper {
-	-ms-zoom: 1;
-	}
-.leaflet-oldie .leaflet-popup-tip {
-	width: 24px;
-	margin: 0 auto;
-
-	-ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";
-	filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678);
-	}
-.leaflet-oldie .leaflet-popup-tip-container {
-	margin-top: -1px;
-	}
-
-.leaflet-oldie .leaflet-control-zoom,
-.leaflet-oldie .leaflet-control-layers,
-.leaflet-oldie .leaflet-popup-content-wrapper,
-.leaflet-oldie .leaflet-popup-tip {
-	border: 1px solid #999;
-	}
-
-
-/* div icon */
-
-.leaflet-div-icon {
-	background: #fff;
-	border: 1px solid #666;
-	}
-
-
-/* Tooltip */
-/* Base styles for the element that has a tooltip */
-.leaflet-tooltip {
-	position: absolute;
-	padding: 6px;
-	background-color: #fff;
-	border: 1px solid #fff;
-	border-radius: 3px;
-	color: #222;
-	white-space: nowrap;
-	-webkit-user-select: none;
-	-moz-user-select: none;
-	-ms-user-select: none;
-	user-select: none;
-	pointer-events: none;
-	box-shadow: 0 1px 3px rgba(0,0,0,0.4);
-	}
-.leaflet-tooltip.leaflet-clickable {
-	cursor: pointer;
-	pointer-events: auto;
-	}
-.leaflet-tooltip-top:before,
-.leaflet-tooltip-bottom:before,
-.leaflet-tooltip-left:before,
-.leaflet-tooltip-right:before {
-	position: absolute;
-	pointer-events: none;
-	border: 6px solid transparent;
-	background: transparent;
-	content: "";
-	}
-
-/* Directions */
-
-.leaflet-tooltip-bottom {
-	margin-top: 6px;
-}
-.leaflet-tooltip-top {
-	margin-top: -6px;
-}
-.leaflet-tooltip-bottom:before,
-.leaflet-tooltip-top:before {
-	left: 50%;
-	margin-left: -6px;
-	}
-.leaflet-tooltip-top:before {
-	bottom: 0;
-	margin-bottom: -12px;
-	border-top-color: #fff;
-	}
-.leaflet-tooltip-bottom:before {
-	top: 0;
-	margin-top: -12px;
-	margin-left: -6px;
-	border-bottom-color: #fff;
-	}
-.leaflet-tooltip-left {
-	margin-left: -6px;
-}
-.leaflet-tooltip-right {
-	margin-left: 6px;
-}
-.leaflet-tooltip-left:before,
-.leaflet-tooltip-right:before {
-	top: 50%;
-	margin-top: -6px;
-	}
-.leaflet-tooltip-left:before {
-	right: 0;
-	margin-right: -12px;
-	border-left-color: #fff;
-	}
-.leaflet-tooltip-right:before {
-	left: 0;
-	margin-left: -12px;
-	border-right-color: #fff;
-	}
diff --git a/mapWz/lid/leaflet.js b/mapWz/lid/leaflet.js
deleted file mode 100644
index 39fa241..0000000
--- a/mapWz/lid/leaflet.js
+++ /dev/null
@@ -1,5222 +0,0 @@
-/* @preserve
- * Leaflet 1.7.1, a JS library for interactive maps. http://leafletjs.com
- * (c) 2010-2019 Vladimir Agafonkin, (c) 2010-2011 CloudMade
- */
-! function(t, i) {
-	"object" == typeof exports && "undefined" != typeof module ? i(exports) : "function" == typeof define && define
-		.amd ? define(["exports"], i) : i(t.L = {})
-}(this, function(t) {
-	"use strict";
-
-	function h(t) {
-		for (var i, e, n = 1, o = arguments.length; n < o; n++)
-			for (i in e = arguments[n]) t[i] = e[i];
-		return t
-	}
-	var s = Object.create || function(t) {
-		return i.prototype = t, new i
-	};
-
-	function i() {}
-
-	function p(t, i) {
-		var e = Array.prototype.slice;
-		if (t.bind) return t.bind.apply(t, e.call(arguments, 1));
-		var n = e.call(arguments, 2);
-		return function() {
-			return t.apply(i, n.length ? n.concat(e.call(arguments)) : arguments)
-		}
-	}
-	var e = 0;
-
-	function m(t) {
-		return t._leaflet_id = t._leaflet_id || ++e, t._leaflet_id
-	}
-
-	function n(t, i, e) {
-		var n, o, s = function() {
-				n = !1, o && (r.apply(e, o), o = !1)
-			},
-			r = function() {
-				n ? o = arguments : (t.apply(e, arguments), setTimeout(s, i), n = !0)
-			};
-		return r
-	}
-
-	function o(t, i, e) {
-		var n = i[1],
-			o = i[0],
-			s = n - o;
-		return t === n && e ? t : ((t - o) % s + s) % s + o
-	}
-
-	function a() {
-		return !1
-	}
-
-	function r(t, i) {
-		var e = Math.pow(10, void 0 === i ? 6 : i);
-		return Math.round(t * e) / e
-	}
-
-	function u(t) {
-		return t.trim ? t.trim() : t.replace(/^\s+|\s+$/g, "")
-	}
-
-	function l(t) {
-		return u(t).split(/\s+/)
-	}
-
-	function c(t, i) {
-		for (var e in Object.prototype.hasOwnProperty.call(t, "options") || (t.options = t.options ? s(t.options) :
-			{}), i) t.options[e] = i[e];
-		return t.options
-	}
-
-	function _(t, i, e) {
-		var n = [];
-		for (var o in t) n.push(encodeURIComponent(e ? o.toUpperCase() : o) + "=" + encodeURIComponent(t[o]));
-		return (i && -1 !== i.indexOf("?") ? "&" : "?") + n.join("&")
-	}
-	var d = /\{ *([\w_-]+) *\}/g;
-
-	function f(t, n) {
-		return t.replace(d, function(t, i) {
-			var e = n[i];
-			if (void 0 === e) throw new Error("No value provided for variable " + t);
-			return "function" == typeof e && (e = e(n)), e
-		})
-	}
-	var g = Array.isArray || function(t) {
-		return "[object Array]" === Object.prototype.toString.call(t)
-	};
-
-	function v(t, i) {
-		for (var e = 0; e < t.length; e++)
-			if (t[e] === i) return e;
-		return -1
-	}
-	var y = "data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=";
-
-	function x(t) {
-		return window["webkit" + t] || window["moz" + t] || window["ms" + t]
-	}
-	var w = 0;
-
-	function P(t) {
-		var i = +new Date,
-			e = Math.max(0, 16 - (i - w));
-		return w = i + e, window.setTimeout(t, e)
-	}
-	var b = window.requestAnimationFrame || x("RequestAnimationFrame") || P,
-		T = window.cancelAnimationFrame || x("CancelAnimationFrame") || x("CancelRequestAnimationFrame") ||
-		function(t) {
-			window.clearTimeout(t)
-		};
-
-	function M(t, i, e) {
-		if (!e || b !== P) return b.call(window, p(t, i));
-		t.call(i)
-	}
-
-	function z(t) {
-		t && T.call(window, t)
-	}
-	var C = {
-		extend: h,
-		create: s,
-		bind: p,
-		lastId: e,
-		stamp: m,
-		throttle: n,
-		wrapNum: o,
-		falseFn: a,
-		formatNum: r,
-		trim: u,
-		splitWords: l,
-		setOptions: c,
-		getParamString: _,
-		template: f,
-		isArray: g,
-		indexOf: v,
-		emptyImageUrl: y,
-		requestFn: b,
-		cancelFn: T,
-		requestAnimFrame: M,
-		cancelAnimFrame: z
-	};
-
-	function S() {}
-	S.extend = function(t) {
-		function i() {
-			this.initialize && this.initialize.apply(this, arguments), this.callInitHooks()
-		}
-		var e = i.__super__ = this.prototype,
-			n = s(e);
-		for (var o in (n.constructor = i).prototype = n, this) Object.prototype.hasOwnProperty.call(this, o) &&
-			"prototype" !== o && "__super__" !== o && (i[o] = this[o]);
-		return t.statics && (h(i, t.statics), delete t.statics), t.includes && (function(t) {
-			if ("undefined" == typeof L || !L || !L.Mixin) return;
-			t = g(t) ? t : [t];
-			for (var i = 0; i < t.length; i++) t[i] === L.Mixin.Events && console.warn(
-				"Deprecated include of L.Mixin.Events: this property will be removed in future releases, please inherit from L.Evented instead.",
-				(new Error).stack)
-		}(t.includes), h.apply(null, [n].concat(t.includes)), delete t.includes), n.options && (t.options =
-			h(s(n.options), t.options)), h(n, t), n._initHooks = [], n.callInitHooks = function() {
-			if (!this._initHooksCalled) {
-				e.callInitHooks && e.callInitHooks.call(this), this._initHooksCalled = !0;
-				for (var t = 0, i = n._initHooks.length; t < i; t++) n._initHooks[t].call(this)
-			}
-		}, i
-	}, S.include = function(t) {
-		return h(this.prototype, t), this
-	}, S.mergeOptions = function(t) {
-		return h(this.prototype.options, t), this
-	}, S.addInitHook = function(t) {
-		var i = Array.prototype.slice.call(arguments, 1),
-			e = "function" == typeof t ? t : function() {
-				this[t].apply(this, i)
-			};
-		return this.prototype._initHooks = this.prototype._initHooks || [], this.prototype._initHooks.push(e),
-			this
-	};
-	var Z = {
-		on: function(t, i, e) {
-			if ("object" == typeof t)
-				for (var n in t) this._on(n, t[n], i);
-			else
-				for (var o = 0, s = (t = l(t)).length; o < s; o++) this._on(t[o], i, e);
-			return this
-		},
-		off: function(t, i, e) {
-			if (t)
-				if ("object" == typeof t)
-					for (var n in t) this._off(n, t[n], i);
-				else
-					for (var o = 0, s = (t = l(t)).length; o < s; o++) this._off(t[o], i, e);
-			else delete this._events;
-			return this
-		},
-		_on: function(t, i, e) {
-			this._events = this._events || {};
-			var n = this._events[t];
-			n || (n = [], this._events[t] = n), e === this && (e = void 0);
-			for (var o = {
-					fn: i,
-					ctx: e
-				}, s = n, r = 0, a = s.length; r < a; r++)
-				if (s[r].fn === i && s[r].ctx === e) return;
-			s.push(o)
-		},
-		_off: function(t, i, e) {
-			var n, o, s;
-			if (this._events && (n = this._events[t]))
-				if (i) {
-					if (e === this && (e = void 0), n)
-						for (o = 0, s = n.length; o < s; o++) {
-							var r = n[o];
-							if (r.ctx === e && r.fn === i) return r.fn = a, this._firingCount && (this
-								._events[t] = n = n.slice()), void n.splice(o, 1)
-						}
-				} else {
-					for (o = 0, s = n.length; o < s; o++) n[o].fn = a;
-					delete this._events[t]
-				}
-		},
-		fire: function(t, i, e) {
-			if (!this.listens(t, e)) return this;
-			var n = h({}, i, {
-				type: t,
-				target: this,
-				sourceTarget: i && i.sourceTarget || this
-			});
-			if (this._events) {
-				var o = this._events[t];
-				if (o) {
-					this._firingCount = this._firingCount + 1 || 1;
-					for (var s = 0, r = o.length; s < r; s++) {
-						var a = o[s];
-						a.fn.call(a.ctx || this, n)
-					}
-					this._firingCount--
-				}
-			}
-			return e && this._propagateEvent(n), this
-		},
-		listens: function(t, i) {
-			var e = this._events && this._events[t];
-			if (e && e.length) return !0;
-			if (i)
-				for (var n in this._eventParents)
-					if (this._eventParents[n].listens(t, i)) return !0;
-			return !1
-		},
-		once: function(t, i, e) {
-			if ("object" == typeof t) {
-				for (var n in t) this.once(n, t[n], i);
-				return this
-			}
-			var o = p(function() {
-				this.off(t, i, e).off(t, o, e)
-			}, this);
-			return this.on(t, i, e).on(t, o, e)
-		},
-		addEventParent: function(t) {
-			return this._eventParents = this._eventParents || {}, this._eventParents[m(t)] = t, this
-		},
-		removeEventParent: function(t) {
-			return this._eventParents && delete this._eventParents[m(t)], this
-		},
-		_propagateEvent: function(t) {
-			for (var i in this._eventParents) this._eventParents[i].fire(t.type, h({
-				layer: t.target,
-				propagatedFrom: t.target
-			}, t), !0)
-		}
-	};
-	Z.addEventListener = Z.on, Z.removeEventListener = Z.clearAllEventListeners = Z.off, Z.addOneTimeEventListener =
-		Z.once, Z.fireEvent = Z.fire, Z.hasEventListeners = Z.listens;
-	var E = S.extend(Z);
-
-	function k(t, i, e) {
-		this.x = e ? Math.round(t) : t, this.y = e ? Math.round(i) : i
-	}
-	var B = Math.trunc || function(t) {
-		return 0 < t ? Math.floor(t) : Math.ceil(t)
-	};
-
-	function A(t, i, e) {
-		return t instanceof k ? t : g(t) ? new k(t[0], t[1]) : null == t ? t : "object" == typeof t && "x" in t &&
-			"y" in t ? new k(t.x, t.y) : new k(t, i, e)
-	}
-
-	function I(t, i) {
-		if (t)
-			for (var e = i ? [t, i] : t, n = 0, o = e.length; n < o; n++) this.extend(e[n])
-	}
-
-	function O(t, i) {
-		return !t || t instanceof I ? t : new I(t, i)
-	}
-
-	function R(t, i) {
-		if (t)
-			for (var e = i ? [t, i] : t, n = 0, o = e.length; n < o; n++) this.extend(e[n])
-	}
-
-	function N(t, i) {
-		return t instanceof R ? t : new R(t, i)
-	}
-
-	function D(t, i, e) {
-		if (isNaN(t) || isNaN(i)) throw new Error("Invalid LatLng object: (" + t + ", " + i + ")");
-		this.lat = +t, this.lng = +i, void 0 !== e && (this.alt = +e)
-	}
-
-	function j(t, i, e) {
-		return t instanceof D ? t : g(t) && "object" != typeof t[0] ? 3 === t.length ? new D(t[0], t[1], t[2]) :
-			2 === t.length ? new D(t[0], t[1]) : null : null == t ? t : "object" == typeof t && "lat" in t ? new D(t
-				.lat, "lng" in t ? t.lng : t.lon, t.alt) : void 0 === i ? null : new D(t, i, e)
-	}
-	k.prototype = {
-		clone: function() {
-			return new k(this.x, this.y)
-		},
-		add: function(t) {
-			return this.clone()._add(A(t))
-		},
-		_add: function(t) {
-			return this.x += t.x, this.y += t.y, this
-		},
-		subtract: function(t) {
-			return this.clone()._subtract(A(t))
-		},
-		_subtract: function(t) {
-			return this.x -= t.x, this.y -= t.y, this
-		},
-		divideBy: function(t) {
-			return this.clone()._divideBy(t)
-		},
-		_divideBy: function(t) {
-			return this.x /= t, this.y /= t, this
-		},
-		multiplyBy: function(t) {
-			return this.clone()._multiplyBy(t)
-		},
-		_multiplyBy: function(t) {
-			return this.x *= t, this.y *= t, this
-		},
-		scaleBy: function(t) {
-			return new k(this.x * t.x, this.y * t.y)
-		},
-		unscaleBy: function(t) {
-			return new k(this.x / t.x, this.y / t.y)
-		},
-		round: function() {
-			return this.clone()._round()
-		},
-		_round: function() {
-			return this.x = Math.round(this.x), this.y = Math.round(this.y), this
-		},
-		floor: function() {
-			return this.clone()._floor()
-		},
-		_floor: function() {
-			return this.x = Math.floor(this.x), this.y = Math.floor(this.y), this
-		},
-		ceil: function() {
-			return this.clone()._ceil()
-		},
-		_ceil: function() {
-			return this.x = Math.ceil(this.x), this.y = Math.ceil(this.y), this
-		},
-		trunc: function() {
-			return this.clone()._trunc()
-		},
-		_trunc: function() {
-			return this.x = B(this.x), this.y = B(this.y), this
-		},
-		distanceTo: function(t) {
-			var i = (t = A(t)).x - this.x,
-				e = t.y - this.y;
-			return Math.sqrt(i * i + e * e)
-		},
-		equals: function(t) {
-			return (t = A(t)).x === this.x && t.y === this.y
-		},
-		contains: function(t) {
-			return t = A(t), Math.abs(t.x) <= Math.abs(this.x) && Math.abs(t.y) <= Math.abs(this.y)
-		},
-		toString: function() {
-			return "Point(" + r(this.x) + ", " + r(this.y) + ")"
-		}
-	}, I.prototype = {
-		extend: function(t) {
-			return t = A(t), this.min || this.max ? (this.min.x = Math.min(t.x, this.min.x), this.max.x =
-				Math.max(t.x, this.max.x), this.min.y = Math.min(t.y, this.min.y), this.max.y = Math
-				.max(t.y, this.max.y)) : (this.min = t.clone(), this.max = t.clone()), this
-		},
-		getCenter: function(t) {
-			return new k((this.min.x + this.max.x) / 2, (this.min.y + this.max.y) / 2, t)
-		},
-		getBottomLeft: function() {
-			return new k(this.min.x, this.max.y)
-		},
-		getTopRight: function() {
-			return new k(this.max.x, this.min.y)
-		},
-		getTopLeft: function() {
-			return this.min
-		},
-		getBottomRight: function() {
-			return this.max
-		},
-		getSize: function() {
-			return this.max.subtract(this.min)
-		},
-		contains: function(t) {
-			var i, e;
-			return (t = ("number" == typeof t[0] || t instanceof k ? A : O)(t)) instanceof I ? (i = t.min,
-					e = t.max) : i = e = t, i.x >= this.min.x && e.x <= this.max.x && i.y >= this.min.y && e
-				.y <= this.max.y
-		},
-		intersects: function(t) {
-			t = O(t);
-			var i = this.min,
-				e = this.max,
-				n = t.min,
-				o = t.max,
-				s = o.x >= i.x && n.x <= e.x,
-				r = o.y >= i.y && n.y <= e.y;
-			return s && r
-		},
-		overlaps: function(t) {
-			t = O(t);
-			var i = this.min,
-				e = this.max,
-				n = t.min,
-				o = t.max,
-				s = o.x > i.x && n.x < e.x,
-				r = o.y > i.y && n.y < e.y;
-			return s && r
-		},
-		isValid: function() {
-			return !(!this.min || !this.max)
-		}
-	}, R.prototype = {
-		extend: function(t) {
-			var i, e, n = this._southWest,
-				o = this._northEast;
-			if (t instanceof D) e = i = t;
-			else {
-				if (!(t instanceof R)) return t ? this.extend(j(t) || N(t)) : this;
-				if (i = t._southWest, e = t._northEast, !i || !e) return this
-			}
-			return n || o ? (n.lat = Math.min(i.lat, n.lat), n.lng = Math.min(i.lng, n.lng), o.lat = Math
-				.max(e.lat, o.lat), o.lng = Math.max(e.lng, o.lng)) : (this._southWest = new D(i.lat, i
-				.lng), this._northEast = new D(e.lat, e.lng)), this
-		},
-		pad: function(t) {
-			var i = this._southWest,
-				e = this._northEast,
-				n = Math.abs(i.lat - e.lat) * t,
-				o = Math.abs(i.lng - e.lng) * t;
-			return new R(new D(i.lat - n, i.lng - o), new D(e.lat + n, e.lng + o))
-		},
-		getCenter: function() {
-			return new D((this._southWest.lat + this._northEast.lat) / 2, (this._southWest.lng + this
-				._northEast.lng) / 2)
-		},
-		getSouthWest: function() {
-			return this._southWest
-		},
-		getNorthEast: function() {
-			return this._northEast
-		},
-		getNorthWest: function() {
-			return new D(this.getNorth(), this.getWest())
-		},
-		getSouthEast: function() {
-			return new D(this.getSouth(), this.getEast())
-		},
-		getWest: function() {
-			return this._southWest.lng
-		},
-		getSouth: function() {
-			return this._southWest.lat
-		},
-		getEast: function() {
-			return this._northEast.lng
-		},
-		getNorth: function() {
-			return this._northEast.lat
-		},
-		contains: function(t) {
-			t = ("number" == typeof t[0] || t instanceof D || "lat" in t ? j : N)(t);
-			var i, e, n = this._southWest,
-				o = this._northEast;
-			return t instanceof R ? (i = t.getSouthWest(), e = t.getNorthEast()) : i = e = t, i.lat >= n
-				.lat && e.lat <= o.lat && i.lng >= n.lng && e.lng <= o.lng
-		},
-		intersects: function(t) {
-			t = N(t);
-			var i = this._southWest,
-				e = this._northEast,
-				n = t.getSouthWest(),
-				o = t.getNorthEast(),
-				s = o.lat >= i.lat && n.lat <= e.lat,
-				r = o.lng >= i.lng && n.lng <= e.lng;
-			return s && r
-		},
-		overlaps: function(t) {
-			t = N(t);
-			var i = this._southWest,
-				e = this._northEast,
-				n = t.getSouthWest(),
-				o = t.getNorthEast(),
-				s = o.lat > i.lat && n.lat < e.lat,
-				r = o.lng > i.lng && n.lng < e.lng;
-			return s && r
-		},
-		toBBoxString: function() {
-			return [this.getWest(), this.getSouth(), this.getEast(), this.getNorth()].join(",")
-		},
-		equals: function(t, i) {
-			return !!t && (t = N(t), this._southWest.equals(t.getSouthWest(), i) && this._northEast.equals(t
-				.getNorthEast(), i))
-		},
-		isValid: function() {
-			return !(!this._southWest || !this._northEast)
-		}
-	};
-	var W, H = {
-			latLngToPoint: function(t, i) {
-				var e = this.projection.project(t),
-					n = this.scale(i);
-				return this.transformation._transform(e, n)
-			},
-			pointToLatLng: function(t, i) {
-				var e = this.scale(i),
-					n = this.transformation.untransform(t, e);
-				return this.projection.unproject(n)
-			},
-			project: function(t) {
-				return this.projection.project(t)
-			},
-			unproject: function(t) {
-				return this.projection.unproject(t)
-			},
-			scale: function(t) {
-				return 256 * Math.pow(2, t)
-			},
-			zoom: function(t) {
-				return Math.log(t / 256) / Math.LN2
-			},
-			getProjectedBounds: function(t) {
-				if (this.infinite) return null;
-				var i = this.projection.bounds,
-					e = this.scale(t);
-				return new I(this.transformation.transform(i.min, e), this.transformation.transform(i.max, e))
-			},
-			infinite: !(D.prototype = {
-				equals: function(t, i) {
-					return !!t && (t = j(t), Math.max(Math.abs(this.lat - t.lat), Math.abs(this.lng - t
-						.lng)) <= (void 0 === i ? 1e-9 : i))
-				},
-				toString: function(t) {
-					return "LatLng(" + r(this.lat, t) + ", " + r(this.lng, t) + ")"
-				},
-				distanceTo: function(t) {
-					return F.distance(this, j(t))
-				},
-				wrap: function() {
-					return F.wrapLatLng(this)
-				},
-				toBounds: function(t) {
-					var i = 180 * t / 40075017,
-						e = i / Math.cos(Math.PI / 180 * this.lat);
-					return N([this.lat - i, this.lng - e], [this.lat + i, this.lng + e])
-				},
-				clone: function() {
-					return new D(this.lat, this.lng, this.alt)
-				}
-			}),
-			wrapLatLng: function(t) {
-				var i = this.wrapLng ? o(t.lng, this.wrapLng, !0) : t.lng;
-				return new D(this.wrapLat ? o(t.lat, this.wrapLat, !0) : t.lat, i, t.alt)
-			},
-			wrapLatLngBounds: function(t) {
-				var i = t.getCenter(),
-					e = this.wrapLatLng(i),
-					n = i.lat - e.lat,
-					o = i.lng - e.lng;
-				if (0 == n && 0 == o) return t;
-				var s = t.getSouthWest(),
-					r = t.getNorthEast();
-				return new R(new D(s.lat - n, s.lng - o), new D(r.lat - n, r.lng - o))
-			}
-		},
-		F = h({}, H, {
-			wrapLng: [-180, 180],
-			R: 6371e3,
-			distance: function(t, i) {
-				var e = Math.PI / 180,
-					n = t.lat * e,
-					o = i.lat * e,
-					s = Math.sin((i.lat - t.lat) * e / 2),
-					r = Math.sin((i.lng - t.lng) * e / 2),
-					a = s * s + Math.cos(n) * Math.cos(o) * r * r,
-					h = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
-				return this.R * h
-			}
-		}),
-		U = 6378137,
-		V = {
-			R: U,
-			MAX_LATITUDE: 85.0511287798,
-			project: function(t) {
-				var i = Math.PI / 180,
-					e = this.MAX_LATITUDE,
-					n = Math.max(Math.min(e, t.lat), -e),
-					o = Math.sin(n * i);
-				return new k(this.R * t.lng * i, this.R * Math.log((1 + o) / (1 - o)) / 2)
-			},
-			unproject: function(t) {
-				var i = 180 / Math.PI;
-				return new D((2 * Math.atan(Math.exp(t.y / this.R)) - Math.PI / 2) * i, t.x * i / this.R)
-			},
-			bounds: new I([-(W = U * Math.PI), -W], [W, W])
-		};
-
-	function q(t, i, e, n) {
-		if (g(t)) return this._a = t[0], this._b = t[1], this._c = t[2], void(this._d = t[3]);
-		this._a = t, this._b = i, this._c = e, this._d = n
-	}
-
-	function G(t, i, e, n) {
-		return new q(t, i, e, n)
-	}
-	q.prototype = {
-		transform: function(t, i) {
-			return this._transform(t.clone(), i)
-		},
-		_transform: function(t, i) {
-			return i = i || 1, t.x = i * (this._a * t.x + this._b), t.y = i * (this._c * t.y + this._d), t
-		},
-		untransform: function(t, i) {
-			return i = i || 1, new k((t.x / i - this._b) / this._a, (t.y / i - this._d) / this._c)
-		}
-	};
-	var K, Y = h({}, F, {
-			code: "EPSG:3857",
-			projection: V,
-			transformation: G(K = .5 / (Math.PI * V.R), .5, -K, .5)
-		}),
-		X = h({}, Y, {
-			code: "EPSG:900913"
-		});
-
-	function J(t) {
-		return document.createElementNS("http://www.w3.org/2000/svg", t)
-	}
-
-	function $(t, i) {
-		for (var e, n, o, s, r = "", a = 0, h = t.length; a < h; a++) {
-			for (e = 0, n = (o = t[a]).length; e < n; e++) r += (e ? "L" : "M") + (s = o[e]).x + " " + s.y;
-			r += i ? Zt ? "z" : "x" : ""
-		}
-		return r || "M0 0"
-	}
-	var Q = document.documentElement.style,
-		tt = "ActiveXObject" in window,
-		it = tt && !document.addEventListener,
-		et = "msLaunchUri" in navigator && !("documentMode" in document),
-		nt = kt("webkit"),
-		ot = kt("android"),
-		st = kt("android 2") || kt("android 3"),
-		rt = parseInt(/WebKit\/([0-9]+)|$/.exec(navigator.userAgent)[1], 10),
-		at = ot && kt("Google") && rt < 537 && !("AudioNode" in window),
-		ht = !!window.opera,
-		ut = !et && kt("chrome"),
-		lt = kt("gecko") && !nt && !ht && !tt,
-		ct = !ut && kt("safari"),
-		_t = kt("phantom"),
-		dt = "OTransition" in Q,
-		pt = 0 === navigator.platform.indexOf("Win"),
-		mt = tt && "transition" in Q,
-		ft = "WebKitCSSMatrix" in window && "m11" in new window.WebKitCSSMatrix && !st,
-		gt = "MozPerspective" in Q,
-		vt = !window.L_DISABLE_3D && (mt || ft || gt) && !dt && !_t,
-		yt = "undefined" != typeof orientation || kt("mobile"),
-		xt = yt && nt,
-		wt = yt && ft,
-		Pt = !window.PointerEvent && window.MSPointerEvent,
-		Lt = !(!window.PointerEvent && !Pt),
-		bt = !window.L_NO_TOUCH && (Lt || "ontouchstart" in window || window.DocumentTouch &&
-			document instanceof window.DocumentTouch),
-		Tt = yt && ht,
-		Mt = yt && lt,
-		zt = 1 < (window.devicePixelRatio || window.screen.deviceXDPI / window.screen.logicalXDPI),
-		Ct = function() {
-			var t = !1;
-			try {
-				var i = Object.defineProperty({}, "passive", {
-					get: function() {
-						t = !0
-					}
-				});
-				window.addEventListener("testPassiveEventSupport", a, i), window.removeEventListener(
-					"testPassiveEventSupport", a, i)
-			} catch (t) {}
-			return t
-		}(),
-		St = !!document.createElement("canvas").getContext,
-		Zt = !(!document.createElementNS || !J("svg").createSVGRect),
-		Et = !Zt && function() {
-			try {
-				var t = document.createElement("div");
-				t.innerHTML = '<v:shape adj="1"/>';
-				var i = t.firstChild;
-				return i.style.behavior = "url(#default#VML)", i && "object" == typeof i.adj
-			} catch (t) {
-				return !1
-			}
-		}();
-
-	function kt(t) {
-		return 0 <= navigator.userAgent.toLowerCase().indexOf(t)
-	}
-	var Bt = {
-			ie: tt,
-			ielt9: it,
-			edge: et,
-			webkit: nt,
-			android: ot,
-			android23: st,
-			androidStock: at,
-			opera: ht,
-			chrome: ut,
-			gecko: lt,
-			safari: ct,
-			phantom: _t,
-			opera12: dt,
-			win: pt,
-			ie3d: mt,
-			webkit3d: ft,
-			gecko3d: gt,
-			any3d: vt,
-			mobile: yt,
-			mobileWebkit: xt,
-			mobileWebkit3d: wt,
-			msPointer: Pt,
-			pointer: Lt,
-			touch: bt,
-			mobileOpera: Tt,
-			mobileGecko: Mt,
-			retina: zt,
-			passiveEvents: Ct,
-			canvas: St,
-			svg: Zt,
-			vml: Et
-		},
-		At = Pt ? "MSPointerDown" : "pointerdown",
-		It = Pt ? "MSPointerMove" : "pointermove",
-		Ot = Pt ? "MSPointerUp" : "pointerup",
-		Rt = Pt ? "MSPointerCancel" : "pointercancel",
-		Nt = {},
-		Dt = !1;
-
-	function jt(t, i, e, n) {
-		function o(t) {
-			Ut(t, r)
-		}
-		var s, r, a, h, u, l, c, _;
-
-		function d(t) {
-			t.pointerType === (t.MSPOINTER_TYPE_MOUSE || "mouse") && 0 === t.buttons || Ut(t, h)
-		}
-		return "touchstart" === i ? (u = t, l = e, c = n, _ = p(function(t) {
-			t.MSPOINTER_TYPE_TOUCH && t.pointerType === t.MSPOINTER_TYPE_TOUCH && Ri(t), Ut(t, l)
-		}), u["_leaflet_touchstart" + c] = _, u.addEventListener(At, _, !1), Dt || (document
-			.addEventListener(At, Wt, !0), document.addEventListener(It, Ht, !0), document.addEventListener(
-				Ot, Ft, !0), document.addEventListener(Rt, Ft, !0), Dt = !0)) : "touchmove" === i ? (h = e, (a =
-			t)["_leaflet_touchmove" + n] = d, a.addEventListener(It, d, !1)) : "touchend" === i && (r = e, (s =
-			t)["_leaflet_touchend" + n] = o, s.addEventListener(Ot, o, !1), s.addEventListener(Rt, o, !1)), this
-	}
-
-	function Wt(t) {
-		Nt[t.pointerId] = t
-	}
-
-	function Ht(t) {
-		Nt[t.pointerId] && (Nt[t.pointerId] = t)
-	}
-
-	function Ft(t) {
-		delete Nt[t.pointerId]
-	}
-
-	function Ut(t, i) {
-		for (var e in t.touches = [], Nt) t.touches.push(Nt[e]);
-		t.changedTouches = [t], i(t)
-	}
-	var Vt = Pt ? "MSPointerDown" : Lt ? "pointerdown" : "touchstart",
-		qt = Pt ? "MSPointerUp" : Lt ? "pointerup" : "touchend",
-		Gt = "_leaflet_";
-	var Kt, Yt, Xt, Jt, $t, Qt, ti = fi(["transform", "webkitTransform", "OTransform", "MozTransform",
-			"msTransform"]),
-		ii = fi(["webkitTransition", "transition", "OTransition", "MozTransition", "msTransition"]),
-		ei = "webkitTransition" === ii || "OTransition" === ii ? ii + "End" : "transitionend";
-
-	function ni(t) {
-		return "string" == typeof t ? document.getElementById(t) : t
-	}
-
-	function oi(t, i) {
-		var e, n = t.style[i] || t.currentStyle && t.currentStyle[i];
-		return n && "auto" !== n || !document.defaultView || (n = (e = document.defaultView.getComputedStyle(t,
-			null)) ? e[i] : null), "auto" === n ? null : n
-	}
-
-	function si(t, i, e) {
-		var n = document.createElement(t);
-		return n.className = i || "", e && e.appendChild(n), n
-	}
-
-	function ri(t) {
-		var i = t.parentNode;
-		i && i.removeChild(t)
-	}
-
-	function ai(t) {
-		for (; t.firstChild;) t.removeChild(t.firstChild)
-	}
-
-	function hi(t) {
-		var i = t.parentNode;
-		i && i.lastChild !== t && i.appendChild(t)
-	}
-
-	function ui(t) {
-		var i = t.parentNode;
-		i && i.firstChild !== t && i.insertBefore(t, i.firstChild)
-	}
-
-	function li(t, i) {
-		if (void 0 !== t.classList) return t.classList.contains(i);
-		var e = pi(t);
-		return 0 < e.length && new RegExp("(^|\\s)" + i + "(\\s|$)").test(e)
-	}
-
-	function ci(t, i) {
-		var e;
-		if (void 0 !== t.classList)
-			for (var n = l(i), o = 0, s = n.length; o < s; o++) t.classList.add(n[o]);
-		else li(t, i) || di(t, ((e = pi(t)) ? e + " " : "") + i)
-	}
-
-	function _i(t, i) {
-		void 0 !== t.classList ? t.classList.remove(i) : di(t, u((" " + pi(t) + " ").replace(" " + i + " ", " ")))
-	}
-
-	function di(t, i) {
-		void 0 === t.className.baseVal ? t.className = i : t.className.baseVal = i
-	}
-
-	function pi(t) {
-		return t.correspondingElement && (t = t.correspondingElement), void 0 === t.className.baseVal ? t
-			.className : t.className.baseVal
-	}
-
-	function mi(t, i) {
-		"opacity" in t.style ? t.style.opacity = i : "filter" in t.style && function(t, i) {
-			var e = !1,
-				n = "DXImageTransform.Microsoft.Alpha";
-			try {
-				e = t.filters.item(n)
-			} catch (t) {
-				if (1 === i) return
-			}
-			i = Math.round(100 * i), e ? (e.Enabled = 100 !== i, e.Opacity = i) : t.style.filter += " progid:" +
-				n + "(opacity=" + i + ")"
-		}(t, i)
-	}
-
-	function fi(t) {
-		for (var i = document.documentElement.style, e = 0; e < t.length; e++)
-			if (t[e] in i) return t[e];
-		return !1
-	}
-
-	function gi(t, i, e) {
-		var n = i || new k(0, 0);
-		t.style[ti] = (mt ? "translate(" + n.x + "px," + n.y + "px)" : "translate3d(" + n.x + "px," + n.y +
-			"px,0)") + (e ? " scale(" + e + ")" : "")
-	}
-
-	function vi(t, i) {
-		t._leaflet_pos = i, vt ? gi(t, i) : (t.style.left = i.x + "px", t.style.top = i.y + "px")
-	}
-
-	function yi(t) {
-		return t._leaflet_pos || new k(0, 0)
-	}
-
-	function xi() {
-		zi(window, "dragstart", Ri)
-	}
-
-	function wi() {
-		Si(window, "dragstart", Ri)
-	}
-
-	function Pi(t) {
-		for (; - 1 === t.tabIndex;) t = t.parentNode;
-		t.style && (Li(), Qt = ($t = t).style.outline, t.style.outline = "none", zi(window, "keydown", Li))
-	}
-
-	function Li() {
-		$t && ($t.style.outline = Qt, Qt = $t = void 0, Si(window, "keydown", Li))
-	}
-
-	function bi(t) {
-		for (; !((t = t.parentNode).offsetWidth && t.offsetHeight || t === document.body););
-		return t
-	}
-
-	function Ti(t) {
-		var i = t.getBoundingClientRect();
-		return {
-			x: i.width / t.offsetWidth || 1,
-			y: i.height / t.offsetHeight || 1,
-			boundingClientRect: i
-		}
-	}
-	Jt = "onselectstart" in document ? (Xt = function() {
-		zi(window, "selectstart", Ri)
-	}, function() {
-		Si(window, "selectstart", Ri)
-	}) : (Yt = fi(["userSelect", "WebkitUserSelect", "OUserSelect", "MozUserSelect", "msUserSelect"]), Xt =
-		function() {
-			var t;
-			Yt && (t = document.documentElement.style, Kt = t[Yt], t[Yt] = "none")
-		},
-		function() {
-			Yt && (document.documentElement.style[Yt] = Kt, Kt = void 0)
-		});
-	var Mi = {
-		TRANSFORM: ti,
-		TRANSITION: ii,
-		TRANSITION_END: ei,
-		get: ni,
-		getStyle: oi,
-		create: si,
-		remove: ri,
-		empty: ai,
-		toFront: hi,
-		toBack: ui,
-		hasClass: li,
-		addClass: ci,
-		removeClass: _i,
-		setClass: di,
-		getClass: pi,
-		setOpacity: mi,
-		testProp: fi,
-		setTransform: gi,
-		setPosition: vi,
-		getPosition: yi,
-		disableTextSelection: Xt,
-		enableTextSelection: Jt,
-		disableImageDrag: xi,
-		enableImageDrag: wi,
-		preventOutline: Pi,
-		restoreOutline: Li,
-		getSizedParentNode: bi,
-		getScale: Ti
-	};
-
-	function zi(t, i, e, n) {
-		if ("object" == typeof i)
-			for (var o in i) ki(t, o, i[o], e);
-		else
-			for (var s = 0, r = (i = l(i)).length; s < r; s++) ki(t, i[s], e, n);
-		return this
-	}
-	var Ci = "_leaflet_events";
-
-	function Si(t, i, e, n) {
-		if ("object" == typeof i)
-			for (var o in i) Bi(t, o, i[o], e);
-		else if (i)
-			for (var s = 0, r = (i = l(i)).length; s < r; s++) Bi(t, i[s], e, n);
-		else {
-			for (var a in t[Ci]) Bi(t, a, t[Ci][a]);
-			delete t[Ci]
-		}
-		return this
-	}
-
-	function Zi() {
-		return Lt && (!et && !ct)
-	}
-	var Ei = {
-		mouseenter: "mouseover",
-		mouseleave: "mouseout",
-		wheel: !("onwheel" in window) && "mousewheel"
-	};
-
-	function ki(i, t, e, n) {
-		var o = t + m(e) + (n ? "_" + m(n) : "");
-		if (i[Ci] && i[Ci][o]) return this;
-		var s, r, a, h, u, l, c = function(t) {
-				return e.call(n || i, t || window.event)
-			},
-			_ = c;
-
-		function d(t) {
-			if (Lt) {
-				if (!t.isPrimary) return;
-				if ("mouse" === t.pointerType) return
-			} else if (1 < t.touches.length) return;
-			var i = Date.now(),
-				e = i - (h || i);
-			u = t.touches ? t.touches[0] : t, l = 0 < e && e <= 250, h = i
-		}
-
-		function p(t) {
-			if (l && !u.cancelBubble) {
-				if (Lt) {
-					if ("mouse" === t.pointerType) return;
-					var i, e, n = {};
-					for (e in u) i = u[e], n[e] = i && i.bind ? i.bind(u) : i;
-					u = n
-				}
-				u.type = "dblclick", u.button = 0, r(u), h = null
-			}
-		}
-		Lt && 0 === t.indexOf("touch") ? jt(i, t, c, o) : bt && "dblclick" === t && !Zi() ? (r = c, l = !1, (s = i)[
-				Gt + Vt + (a = o)] = d, s[Gt + qt + a] = p, s[Gt + "dblclick" + a] = r, s.addEventListener(Vt,
-				d, !!Ct && {
-					passive: !1
-				}), s.addEventListener(qt, p, !!Ct && {
-				passive: !1
-			}), s.addEventListener("dblclick", r, !1)) : "addEventListener" in i ? "touchstart" === t ||
-			"touchmove" === t || "wheel" === t || "mousewheel" === t ? i.addEventListener(Ei[t] || t, c, !!Ct && {
-				passive: !1
-			}) : "mouseenter" === t || "mouseleave" === t ? (c = function(t) {
-				t = t || window.event, Vi(i, t) && _(t)
-			}, i.addEventListener(Ei[t], c, !1)) : i.addEventListener(t, _, !1) : "attachEvent" in i && i
-			.attachEvent("on" + t, c), i[Ci] = i[Ci] || {}, i[Ci][o] = c
-	}
-
-	function Bi(t, i, e, n) {
-		var o, s, r, a, h, u, l, c, _ = i + m(e) + (n ? "_" + m(n) : ""),
-			d = t[Ci] && t[Ci][_];
-		if (!d) return this;
-		Lt && 0 === i.indexOf("touch") ? (c = (u = t)["_leaflet_" + (l = i) + _], "touchstart" === l ? u
-				.removeEventListener(At, c, !1) : "touchmove" === l ? u.removeEventListener(It, c, !1) :
-				"touchend" === l && (u.removeEventListener(Ot, c, !1), u.removeEventListener(Rt, c, !1))) : bt &&
-			"dblclick" === i && !Zi() ? (r = (o = t)[Gt + Vt + (s = _)], a = o[Gt + qt + s], h = o[Gt + "dblclick" +
-				s], o.removeEventListener(Vt, r, !!Ct && {
-				passive: !1
-			}), o.removeEventListener(qt, a, !!Ct && {
-				passive: !1
-			}), o.removeEventListener("dblclick", h, !1)) : "removeEventListener" in t ? t.removeEventListener(Ei[
-				i] || i, d, !1) : "detachEvent" in t && t.detachEvent("on" + i, d), t[Ci][_] = null
-	}
-
-	function Ai(t) {
-		return t.stopPropagation ? t.stopPropagation() : t.originalEvent ? t.originalEvent._stopped = !0 : t
-			.cancelBubble = !0, Ui(t), this
-	}
-
-	function Ii(t) {
-		return ki(t, "wheel", Ai), this
-	}
-
-	function Oi(t) {
-		return zi(t, "mousedown touchstart dblclick", Ai), ki(t, "click", Fi), this
-	}
-
-	function Ri(t) {
-		return t.preventDefault ? t.preventDefault() : t.returnValue = !1, this
-	}
-
-	function Ni(t) {
-		return Ri(t), Ai(t), this
-	}
-
-	function Di(t, i) {
-		if (!i) return new k(t.clientX, t.clientY);
-		var e = Ti(i),
-			n = e.boundingClientRect;
-		return new k((t.clientX - n.left) / e.x - i.clientLeft, (t.clientY - n.top) / e.y - i.clientTop)
-	}
-	var ji = pt && ut ? 2 * window.devicePixelRatio : lt ? window.devicePixelRatio : 1;
-
-	function Wi(t) {
-		return et ? t.wheelDeltaY / 2 : t.deltaY && 0 === t.deltaMode ? -t.deltaY / ji : t.deltaY && 1 === t
-			.deltaMode ? 20 * -t.deltaY : t.deltaY && 2 === t.deltaMode ? 60 * -t.deltaY : t.deltaX || t.deltaZ ?
-			0 : t.wheelDelta ? (t.wheelDeltaY || t.wheelDelta) / 2 : t.detail && Math.abs(t.detail) < 32765 ? 20 * -
-			t.detail : t.detail ? t.detail / -32765 * 60 : 0
-	}
-	var Hi = {};
-
-	function Fi(t) {
-		Hi[t.type] = !0
-	}
-
-	function Ui(t) {
-		var i = Hi[t.type];
-		return Hi[t.type] = !1, i
-	}
-
-	function Vi(t, i) {
-		var e = i.relatedTarget;
-		if (!e) return !0;
-		try {
-			for (; e && e !== t;) e = e.parentNode
-		} catch (t) {
-			return !1
-		}
-		return e !== t
-	}
-	var qi = {
-			on: zi,
-			off: Si,
-			stopPropagation: Ai,
-			disableScrollPropagation: Ii,
-			disableClickPropagation: Oi,
-			preventDefault: Ri,
-			stop: Ni,
-			getMousePosition: Di,
-			getWheelDelta: Wi,
-			fakeStop: Fi,
-			skipped: Ui,
-			isExternalTarget: Vi,
-			addListener: zi,
-			removeListener: Si
-		},
-		Gi = E.extend({
-			run: function(t, i, e, n) {
-				this.stop(), this._el = t, this._inProgress = !0, this._duration = e || .25, this
-					._easeOutPower = 1 / Math.max(n || .5, .2), this._startPos = yi(t), this._offset = i
-					.subtract(this._startPos), this._startTime = +new Date, this.fire("start"), this
-					._animate()
-			},
-			stop: function() {
-				this._inProgress && (this._step(!0), this._complete())
-			},
-			_animate: function() {
-				this._animId = M(this._animate, this), this._step()
-			},
-			_step: function(t) {
-				var i = new Date - this._startTime,
-					e = 1e3 * this._duration;
-				i < e ? this._runFrame(this._easeOut(i / e), t) : (this._runFrame(1), this._complete())
-			},
-			_runFrame: function(t, i) {
-				var e = this._startPos.add(this._offset.multiplyBy(t));
-				i && e._round(), vi(this._el, e), this.fire("step")
-			},
-			_complete: function() {
-				z(this._animId), this._inProgress = !1, this.fire("end")
-			},
-			_easeOut: function(t) {
-				return 1 - Math.pow(1 - t, this._easeOutPower)
-			}
-		}),
-		Ki = E.extend({
-			options: {
-				crs: Y,
-				center: void 0,
-				zoom: void 0,
-				minZoom: void 0,
-				maxZoom: void 0,
-				layers: [],
-				maxBounds: void 0,
-				renderer: void 0,
-				zoomAnimation: !0,
-				zoomAnimationThreshold: 4,
-				fadeAnimation: !0,
-				markerZoomAnimation: !0,
-				transform3DLimit: 8388608,
-				zoomSnap: 1,
-				zoomDelta: 1,
-				trackResize: !0
-			},
-			initialize: function(t, i) {
-				i = c(this, i), this._handlers = [], this._layers = {}, this._zoomBoundLayers = {}, this
-					._sizeChanged = !0, this._initContainer(t), this._initLayout(), this._onResize = p(this
-						._onResize, this), this._initEvents(), i.maxBounds && this.setMaxBounds(i
-					.maxBounds), void 0 !== i.zoom && (this._zoom = this._limitZoom(i.zoom)), i.center &&
-					void 0 !== i.zoom && this.setView(j(i.center), i.zoom, {
-						reset: !0
-					}), this.callInitHooks(), this._zoomAnimated = ii && vt && !Tt && this.options
-					.zoomAnimation, this._zoomAnimated && (this._createAnimProxy(), zi(this._proxy, ei, this
-						._catchTransitionEnd, this)), this._addLayers(this.options.layers)
-			},
-			setView: function(t, i, e) {
-				if ((i = void 0 === i ? this._zoom : this._limitZoom(i), t = this._limitCenter(j(t), i, this
-							.options.maxBounds), e = e || {}, this._stop(), this._loaded && !e.reset && !
-						0 !== e) && (void 0 !== e.animate && (e.zoom = h({
-						animate: e.animate
-					}, e.zoom), e.pan = h({
-						animate: e.animate,
-						duration: e.duration
-					}, e.pan)), this._zoom !== i ? this._tryAnimatedZoom && this._tryAnimatedZoom(t, i,
-						e.zoom) : this._tryAnimatedPan(t, e.pan))) return clearTimeout(this._sizeTimer),
-					this;
-				return this._resetView(t, i), this
-			},
-			setZoom: function(t, i) {
-				return this._loaded ? this.setView(this.getCenter(), t, {
-					zoom: i
-				}) : (this._zoom = t, this)
-			},
-			zoomIn: function(t, i) {
-				return t = t || (vt ? this.options.zoomDelta : 1), this.setZoom(this._zoom + t, i)
-			},
-			zoomOut: function(t, i) {
-				return t = t || (vt ? this.options.zoomDelta : 1), this.setZoom(this._zoom - t, i)
-			},
-			setZoomAround: function(t, i, e) {
-				var n = this.getZoomScale(i),
-					o = this.getSize().divideBy(2),
-					s = (t instanceof k ? t : this.latLngToContainerPoint(t)).subtract(o).multiplyBy(1 - 1 /
-						n),
-					r = this.containerPointToLatLng(o.add(s));
-				return this.setView(r, i, {
-					zoom: e
-				})
-			},
-			_getBoundsCenterZoom: function(t, i) {
-				i = i || {}, t = t.getBounds ? t.getBounds() : N(t);
-				var e = A(i.paddingTopLeft || i.padding || [0, 0]),
-					n = A(i.paddingBottomRight || i.padding || [0, 0]),
-					o = this.getBoundsZoom(t, !1, e.add(n));
-				if ((o = "number" == typeof i.maxZoom ? Math.min(i.maxZoom, o) : o) === 1 / 0) return {
-					center: t.getCenter(),
-					zoom: o
-				};
-				var s = n.subtract(e).divideBy(2),
-					r = this.project(t.getSouthWest(), o),
-					a = this.project(t.getNorthEast(), o);
-				return {
-					center: this.unproject(r.add(a).divideBy(2).add(s), o),
-					zoom: o
-				}
-			},
-			fitBounds: function(t, i) {
-				if (!(t = N(t)).isValid()) throw new Error("Bounds are not valid.");
-				var e = this._getBoundsCenterZoom(t, i);
-				return this.setView(e.center, e.zoom, i)
-			},
-			fitWorld: function(t) {
-				return this.fitBounds([
-					[-90, -180],
-					[90, 180]
-				], t)
-			},
-			panTo: function(t, i) {
-				return this.setView(t, this._zoom, {
-					pan: i
-				})
-			},
-			panBy: function(t, i) {
-				return i = i || {}, (t = A(t).round()).x || t.y ? (!0 === i.animate || this.getSize()
-					.contains(t) ? (this._panAnim || (this._panAnim = new Gi, this._panAnim.on({
-						step: this._onPanTransitionStep,
-						end: this._onPanTransitionEnd
-					}, this)), i.noMoveStart || this.fire("movestart"), !1 !== i.animate ? (ci(this
-							._mapPane, "leaflet-pan-anim"), e = this._getMapPanePos().subtract(t)
-						.round(), this._panAnim.run(this._mapPane, e, i.duration || .25, i
-							.easeLinearity)) : (this._rawPanBy(t), this.fire("move").fire(
-						"moveend"))) : this._resetView(this.unproject(this.project(this.getCenter())
-						.add(t)), this.getZoom()), this) : this.fire("moveend");
-				var e
-			},
-			flyTo: function(s, r, t) {
-				if (!1 === (t = t || {}).animate || !vt) return this.setView(s, r, t);
-				this._stop();
-				var a = this.project(this.getCenter()),
-					h = this.project(s),
-					i = this.getSize(),
-					u = this._zoom;
-				s = j(s), r = void 0 === r ? u : r;
-				var l = Math.max(i.x, i.y),
-					n = l * this.getZoomScale(u, r),
-					c = h.distanceTo(a) || 1,
-					_ = 1.42,
-					o = _ * _;
-
-				function e(t) {
-					var i = (n * n - l * l + (t ? -1 : 1) * o * o * c * c) / (2 * (t ? n : l) * o * c),
-						e = Math.sqrt(i * i + 1) - i;
-					return e < 1e-9 ? -18 : Math.log(e)
-				}
-
-				function d(t) {
-					return (Math.exp(t) - Math.exp(-t)) / 2
-				}
-
-				function p(t) {
-					return (Math.exp(t) + Math.exp(-t)) / 2
-				}
-				var m = e(0);
-
-				function f(t) {
-					return l * (p(m) * (d(i = m + _ * t) / p(i)) - d(m)) / o;
-					var i
-				}
-				var g = Date.now(),
-					v = (e(1) - m) / _,
-					y = t.duration ? 1e3 * t.duration : 1e3 * v * .8;
-				return this._moveStart(!0, t.noMoveStart),
-					function t() {
-						var i, e, n = (Date.now() - g) / y,
-							o = (i = n, (1 - Math.pow(1 - i, 1.5)) * v);
-						n <= 1 ? (this._flyToFrame = M(t, this), this._move(this.unproject(a.add(h.subtract(
-							a).multiplyBy(f(o) / c)), u), this.getScaleZoom(l / (e = o, l * (p(
-							m) / p(m + _ * e))), u), {
-							flyTo: !0
-						})) : this._move(s, r)._moveEnd(!0)
-					}.call(this), this
-			},
-			flyToBounds: function(t, i) {
-				var e = this._getBoundsCenterZoom(t, i);
-				return this.flyTo(e.center, e.zoom, i)
-			},
-			setMaxBounds: function(t) {
-				return (t = N(t)).isValid() ? (this.options.maxBounds && this.off("moveend", this
-						._panInsideMaxBounds), this.options.maxBounds = t, this._loaded && this
-					._panInsideMaxBounds(), this.on("moveend", this._panInsideMaxBounds)) : (this
-					.options.maxBounds = null, this.off("moveend", this._panInsideMaxBounds))
-			},
-			setMinZoom: function(t) {
-				var i = this.options.minZoom;
-				return this.options.minZoom = t, this._loaded && i !== t && (this.fire("zoomlevelschange"),
-					this.getZoom() < this.options.minZoom) ? this.setZoom(t) : this
-			},
-			setMaxZoom: function(t) {
-				var i = this.options.maxZoom;
-				return this.options.maxZoom = t, this._loaded && i !== t && (this.fire("zoomlevelschange"),
-					this.getZoom() > this.options.maxZoom) ? this.setZoom(t) : this
-			},
-			panInsideBounds: function(t, i) {
-				this._enforcingBounds = !0;
-				var e = this.getCenter(),
-					n = this._limitCenter(e, this._zoom, N(t));
-				return e.equals(n) || this.panTo(n, i), this._enforcingBounds = !1, this
-			},
-			panInside: function(t, i) {
-				var e, n, o = A((i = i || {}).paddingTopLeft || i.padding || [0, 0]),
-					s = A(i.paddingBottomRight || i.padding || [0, 0]),
-					r = this.getCenter(),
-					a = this.project(r),
-					h = this.project(t),
-					u = this.getPixelBounds(),
-					l = u.getSize().divideBy(2),
-					c = O([u.min.add(o), u.max.subtract(s)]);
-				return c.contains(h) || (this._enforcingBounds = !0, e = a.subtract(h), n = A(h.x + e.x, h
-					.y + e.y), (h.x < c.min.x || h.x > c.max.x) && (n.x = a.x - e.x, 0 < e.x ? n
-					.x += l.x - o.x : n.x -= l.x - s.x), (h.y < c.min.y || h.y > c.max.y) && (n.y =
-					a.y - e.y, 0 < e.y ? n.y += l.y - o.y : n.y -= l.y - s.y), this.panTo(this
-					.unproject(n), i), this._enforcingBounds = !1), this
-			},
-			invalidateSize: function(t) {
-				if (!this._loaded) return this;
-				t = h({
-					animate: !1,
-					pan: !0
-				}, !0 === t ? {
-					animate: !0
-				} : t);
-				var i = this.getSize();
-				this._sizeChanged = !0, this._lastCenter = null;
-				var e = this.getSize(),
-					n = i.divideBy(2).round(),
-					o = e.divideBy(2).round(),
-					s = n.subtract(o);
-				return s.x || s.y ? (t.animate && t.pan ? this.panBy(s) : (t.pan && this._rawPanBy(s), this
-					.fire("move"), t.debounceMoveend ? (clearTimeout(this._sizeTimer), this
-						._sizeTimer = setTimeout(p(this.fire, this, "moveend"), 200)) : this.fire(
-						"moveend")), this.fire("resize", {
-					oldSize: i,
-					newSize: e
-				})) : this
-			},
-			stop: function() {
-				return this.setZoom(this._limitZoom(this._zoom)), this.options.zoomSnap || this.fire(
-					"viewreset"), this._stop()
-			},
-			locate: function(t) {
-				if (t = this._locateOptions = h({
-						timeout: 1e4,
-						watch: !1
-					}, t), !("geolocation" in navigator)) return this._handleGeolocationError({
-					code: 0,
-					message: "Geolocation not supported."
-				}), this;
-				var i = p(this._handleGeolocationResponse, this),
-					e = p(this._handleGeolocationError, this);
-				return t.watch ? this._locationWatchId = navigator.geolocation.watchPosition(i, e, t) :
-					navigator.geolocation.getCurrentPosition(i, e, t), this
-			},
-			stopLocate: function() {
-				return navigator.geolocation && navigator.geolocation.clearWatch && navigator.geolocation
-					.clearWatch(this._locationWatchId), this._locateOptions && (this._locateOptions
-						.setView = !1), this
-			},
-			_handleGeolocationError: function(t) {
-				var i = t.code,
-					e = t.message || (1 === i ? "permission denied" : 2 === i ? "position unavailable" :
-						"timeout");
-				this._locateOptions.setView && !this._loaded && this.fitWorld(), this.fire(
-				"locationerror", {
-					code: i,
-					message: "Geolocation error: " + e + "."
-				})
-			},
-			_handleGeolocationResponse: function(t) {
-				var i, e = new D(t.coords.latitude, t.coords.longitude),
-					n = e.toBounds(2 * t.coords.accuracy),
-					o = this._locateOptions;
-				o.setView && (i = this.getBoundsZoom(n), this.setView(e, o.maxZoom ? Math.min(i, o
-					.maxZoom) : i));
-				var s = {
-					latlng: e,
-					bounds: n,
-					timestamp: t.timestamp
-				};
-				for (var r in t.coords) "number" == typeof t.coords[r] && (s[r] = t.coords[r]);
-				this.fire("locationfound", s)
-			},
-			addHandler: function(t, i) {
-				if (!i) return this;
-				var e = this[t] = new i(this);
-				return this._handlers.push(e), this.options[t] && e.enable(), this
-			},
-			remove: function() {
-				if (this._initEvents(!0), this.off("moveend", this._panInsideMaxBounds), this
-					._containerId !== this._container._leaflet_id) throw new Error(
-					"Map container is being reused by another instance");
-				try {
-					delete this._container._leaflet_id, delete this._containerId
-				} catch (t) {
-					this._container._leaflet_id = void 0, this._containerId = void 0
-				}
-				var t;
-				for (t in void 0 !== this._locationWatchId && this.stopLocate(), this._stop(), ri(this
-						._mapPane), this._clearControlPos && this._clearControlPos(), this._resizeRequest &&
-					(z(this._resizeRequest), this._resizeRequest = null), this._clearHandlers(), this
-					._loaded && this.fire("unload"), this._layers) this._layers[t].remove();
-				for (t in this._panes) ri(this._panes[t]);
-				return this._layers = [], this._panes = [], delete this._mapPane, delete this._renderer,
-					this
-			},
-			createPane: function(t, i) {
-				var e = si("div", "leaflet-pane" + (t ? " leaflet-" + t.replace("Pane", "") + "-pane" : ""),
-					i || this._mapPane);
-				return t && (this._panes[t] = e), e
-			},
-			getCenter: function() {
-				return this._checkIfLoaded(), this._lastCenter && !this._moved() ? this._lastCenter : this
-					.layerPointToLatLng(this._getCenterLayerPoint())
-			},
-			getZoom: function() {
-				return this._zoom
-			},
-			getBounds: function() {
-				var t = this.getPixelBounds();
-				return new R(this.unproject(t.getBottomLeft()), this.unproject(t.getTopRight()))
-			},
-			getMinZoom: function() {
-				return void 0 === this.options.minZoom ? this._layersMinZoom || 0 : this.options.minZoom
-			},
-			getMaxZoom: function() {
-				return void 0 === this.options.maxZoom ? void 0 === this._layersMaxZoom ? 1 / 0 : this
-					._layersMaxZoom : this.options.maxZoom
-			},
-			getBoundsZoom: function(t, i, e) {
-				t = N(t), e = A(e || [0, 0]);
-				var n = this.getZoom() || 0,
-					o = this.getMinZoom(),
-					s = this.getMaxZoom(),
-					r = t.getNorthWest(),
-					a = t.getSouthEast(),
-					h = this.getSize().subtract(e),
-					u = O(this.project(a, n), this.project(r, n)).getSize(),
-					l = vt ? this.options.zoomSnap : 1,
-					c = h.x / u.x,
-					_ = h.y / u.y,
-					d = i ? Math.max(c, _) : Math.min(c, _),
-					n = this.getScaleZoom(d, n);
-				return l && (n = Math.round(n / (l / 100)) * (l / 100), n = i ? Math.ceil(n / l) * l : Math
-					.floor(n / l) * l), Math.max(o, Math.min(s, n))
-			},
-			getSize: function() {
-				return this._size && !this._sizeChanged || (this._size = new k(this._container
-						.clientWidth || 0, this._container.clientHeight || 0), this._sizeChanged = !1), this
-					._size.clone()
-			},
-			getPixelBounds: function(t, i) {
-				var e = this._getTopLeftPoint(t, i);
-				return new I(e, e.add(this.getSize()))
-			},
-			getPixelOrigin: function() {
-				return this._checkIfLoaded(), this._pixelOrigin
-			},
-			getPixelWorldBounds: function(t) {
-				return this.options.crs.getProjectedBounds(void 0 === t ? this.getZoom() : t)
-			},
-			getPane: function(t) {
-				return "string" == typeof t ? this._panes[t] : t
-			},
-			getPanes: function() {
-				return this._panes
-			},
-			getContainer: function() {
-				return this._container
-			},
-			getZoomScale: function(t, i) {
-				var e = this.options.crs;
-				return i = void 0 === i ? this._zoom : i, e.scale(t) / e.scale(i)
-			},
-			getScaleZoom: function(t, i) {
-				var e = this.options.crs;
-				i = void 0 === i ? this._zoom : i;
-				var n = e.zoom(t * e.scale(i));
-				return isNaN(n) ? 1 / 0 : n
-			},
-			project: function(t, i) {
-				return i = void 0 === i ? this._zoom : i, this.options.crs.latLngToPoint(j(t), i)
-			},
-			unproject: function(t, i) {
-				return i = void 0 === i ? this._zoom : i, this.options.crs.pointToLatLng(A(t), i)
-			},
-			layerPointToLatLng: function(t) {
-				var i = A(t).add(this.getPixelOrigin());
-				return this.unproject(i)
-			},
-			latLngToLayerPoint: function(t) {
-				return this.project(j(t))._round()._subtract(this.getPixelOrigin())
-			},
-			wrapLatLng: function(t) {
-				return this.options.crs.wrapLatLng(j(t))
-			},
-			wrapLatLngBounds: function(t) {
-				return this.options.crs.wrapLatLngBounds(N(t))
-			},
-			distance: function(t, i) {
-				return this.options.crs.distance(j(t), j(i))
-			},
-			containerPointToLayerPoint: function(t) {
-				return A(t).subtract(this._getMapPanePos())
-			},
-			layerPointToContainerPoint: function(t) {
-				return A(t).add(this._getMapPanePos())
-			},
-			containerPointToLatLng: function(t) {
-				var i = this.containerPointToLayerPoint(A(t));
-				return this.layerPointToLatLng(i)
-			},
-			latLngToContainerPoint: function(t) {
-				return this.layerPointToContainerPoint(this.latLngToLayerPoint(j(t)))
-			},
-			mouseEventToContainerPoint: function(t) {
-				return Di(t, this._container)
-			},
-			mouseEventToLayerPoint: function(t) {
-				return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t))
-			},
-			mouseEventToLatLng: function(t) {
-				return this.layerPointToLatLng(this.mouseEventToLayerPoint(t))
-			},
-			_initContainer: function(t) {
-				var i = this._container = ni(t);
-				if (!i) throw new Error("Map container not found.");
-				if (i._leaflet_id) throw new Error("Map container is already initialized.");
-				zi(i, "scroll", this._onScroll, this), this._containerId = m(i)
-			},
-			_initLayout: function() {
-				var t = this._container;
-				this._fadeAnimated = this.options.fadeAnimation && vt, ci(t, "leaflet-container" + (bt ?
-					" leaflet-touch" : "") + (zt ? " leaflet-retina" : "") + (it ?
-					" leaflet-oldie" : "") + (ct ? " leaflet-safari" : "") + (this._fadeAnimated ?
-					" leaflet-fade-anim" : ""));
-				var i = oi(t, "position");
-				"absolute" !== i && "relative" !== i && "fixed" !== i && (t.style.position = "relative"),
-					this._initPanes(), this._initControlPos && this._initControlPos()
-			},
-			_initPanes: function() {
-				var t = this._panes = {};
-				this._paneRenderers = {}, this._mapPane = this.createPane("mapPane", this._container), vi(
-						this._mapPane, new k(0, 0)), this.createPane("tilePane"), this.createPane(
-						"shadowPane"), this.createPane("overlayPane"), this.createPane("markerPane"), this
-					.createPane("tooltipPane"), this.createPane("popupPane"), this.options
-					.markerZoomAnimation || (ci(t.markerPane, "leaflet-zoom-hide"), ci(t.shadowPane,
-						"leaflet-zoom-hide"))
-			},
-			_resetView: function(t, i) {
-				vi(this._mapPane, new k(0, 0));
-				var e = !this._loaded;
-				this._loaded = !0, i = this._limitZoom(i), this.fire("viewprereset");
-				var n = this._zoom !== i;
-				this._moveStart(n, !1)._move(t, i)._moveEnd(n), this.fire("viewreset"), e && this.fire(
-					"load")
-			},
-			_moveStart: function(t, i) {
-				return t && this.fire("zoomstart"), i || this.fire("movestart"), this
-			},
-			_move: function(t, i, e) {
-				void 0 === i && (i = this._zoom);
-				var n = this._zoom !== i;
-				return this._zoom = i, this._lastCenter = t, this._pixelOrigin = this._getNewPixelOrigin(t),
-					(n || e && e.pinch) && this.fire("zoom", e), this.fire("move", e)
-			},
-			_moveEnd: function(t) {
-				return t && this.fire("zoomend"), this.fire("moveend")
-			},
-			_stop: function() {
-				return z(this._flyToFrame), this._panAnim && this._panAnim.stop(), this
-			},
-			_rawPanBy: function(t) {
-				vi(this._mapPane, this._getMapPanePos().subtract(t))
-			},
-			_getZoomSpan: function() {
-				return this.getMaxZoom() - this.getMinZoom()
-			},
-			_panInsideMaxBounds: function() {
-				this._enforcingBounds || this.panInsideBounds(this.options.maxBounds)
-			},
-			_checkIfLoaded: function() {
-				if (!this._loaded) throw new Error("Set map center and zoom first.")
-			},
-			_initEvents: function(t) {
-				this._targets = {};
-				var i = t ? Si : zi;
-				i((this._targets[m(this._container)] = this)._container,
-						"click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress keydown keyup",
-						this._handleDOMEvent, this), this.options.trackResize && i(window, "resize", this
-						._onResize, this), vt && this.options.transform3DLimit && (t ? this.off : this.on)
-					.call(this, "moveend", this._onMoveEnd)
-			},
-			_onResize: function() {
-				z(this._resizeRequest), this._resizeRequest = M(function() {
-					this.invalidateSize({
-						debounceMoveend: !0
-					})
-				}, this)
-			},
-			_onScroll: function() {
-				this._container.scrollTop = 0, this._container.scrollLeft = 0
-			},
-			_onMoveEnd: function() {
-				var t = this._getMapPanePos();
-				Math.max(Math.abs(t.x), Math.abs(t.y)) >= this.options.transform3DLimit && this._resetView(
-					this.getCenter(), this.getZoom())
-			},
-			_findEventTargets: function(t, i) {
-				for (var e, n = [], o = "mouseout" === i || "mouseover" === i, s = t.target || t.srcElement,
-						r = !1; s;) {
-					if ((e = this._targets[m(s)]) && ("click" === i || "preclick" === i) && !t._simulated &&
-						this._draggableMoved(e)) {
-						r = !0;
-						break
-					}
-					if (e && e.listens(i, !0)) {
-						if (o && !Vi(s, t)) break;
-						if (n.push(e), o) break
-					}
-					if (s === this._container) break;
-					s = s.parentNode
-				}
-				return n.length || r || o || !Vi(s, t) || (n = [this]), n
-			},
-			_handleDOMEvent: function(t) {
-				var i;
-				this._loaded && !Ui(t) && ("mousedown" !== (i = t.type) && "keypress" !== i && "keyup" !==
-					i && "keydown" !== i || Pi(t.target || t.srcElement), this._fireDOMEvent(t, i))
-			},
-			_mouseEvents: ["click", "dblclick", "mouseover", "mouseout", "contextmenu"],
-			_fireDOMEvent: function(t, i, e) {
-				var n;
-				if ("click" === t.type && ((n = h({}, t)).type = "preclick", this._fireDOMEvent(n, n.type,
-						e)), !t._stopped && (e = (e || []).concat(this._findEventTargets(t, i))).length) {
-					var o = e[0];
-					"contextmenu" === i && o.listens(i, !0) && Ri(t);
-					var s, r = {
-						originalEvent: t
-					};
-					"keypress" !== t.type && "keydown" !== t.type && "keyup" !== t.type && (s = o
-						.getLatLng && (!o._radius || o._radius <= 10), r.containerPoint = s ? this
-						.latLngToContainerPoint(o.getLatLng()) : this.mouseEventToContainerPoint(t), r
-						.layerPoint = this.containerPointToLayerPoint(r.containerPoint), r.latlng = s ?
-						o.getLatLng() : this.layerPointToLatLng(r.layerPoint));
-					for (var a = 0; a < e.length; a++)
-						if (e[a].fire(i, r, !0), r.originalEvent._stopped || !1 === e[a].options
-							.bubblingMouseEvents && -1 !== v(this._mouseEvents, i)) return
-				}
-			},
-			_draggableMoved: function(t) {
-				return (t = t.dragging && t.dragging.enabled() ? t : this).dragging && t.dragging.moved() ||
-					this.boxZoom && this.boxZoom.moved()
-			},
-			_clearHandlers: function() {
-				for (var t = 0, i = this._handlers.length; t < i; t++) this._handlers[t].disable()
-			},
-			whenReady: function(t, i) {
-				return this._loaded ? t.call(i || this, {
-					target: this
-				}) : this.on("load", t, i), this
-			},
-			_getMapPanePos: function() {
-				return yi(this._mapPane) || new k(0, 0)
-			},
-			_moved: function() {
-				var t = this._getMapPanePos();
-				return t && !t.equals([0, 0])
-			},
-			_getTopLeftPoint: function(t, i) {
-				return (t && void 0 !== i ? this._getNewPixelOrigin(t, i) : this.getPixelOrigin()).subtract(
-					this._getMapPanePos())
-			},
-			_getNewPixelOrigin: function(t, i) {
-				var e = this.getSize()._divideBy(2);
-				return this.project(t, i)._subtract(e)._add(this._getMapPanePos())._round()
-			},
-			_latLngToNewLayerPoint: function(t, i, e) {
-				var n = this._getNewPixelOrigin(e, i);
-				return this.project(t, i)._subtract(n)
-			},
-			_latLngBoundsToNewLayerBounds: function(t, i, e) {
-				var n = this._getNewPixelOrigin(e, i);
-				return O([this.project(t.getSouthWest(), i)._subtract(n), this.project(t.getNorthWest(), i)
-					._subtract(n), this.project(t.getSouthEast(), i)._subtract(n), this.project(t
-						.getNorthEast(), i)._subtract(n)
-				])
-			},
-			_getCenterLayerPoint: function() {
-				return this.containerPointToLayerPoint(this.getSize()._divideBy(2))
-			},
-			_getCenterOffset: function(t) {
-				return this.latLngToLayerPoint(t).subtract(this._getCenterLayerPoint())
-			},
-			_limitCenter: function(t, i, e) {
-				if (!e) return t;
-				var n = this.project(t, i),
-					o = this.getSize().divideBy(2),
-					s = new I(n.subtract(o), n.add(o)),
-					r = this._getBoundsOffset(s, e, i);
-				return r.round().equals([0, 0]) ? t : this.unproject(n.add(r), i)
-			},
-			_limitOffset: function(t, i) {
-				if (!i) return t;
-				var e = this.getPixelBounds(),
-					n = new I(e.min.add(t), e.max.add(t));
-				return t.add(this._getBoundsOffset(n, i))
-			},
-			_getBoundsOffset: function(t, i, e) {
-				var n = O(this.project(i.getNorthEast(), e), this.project(i.getSouthWest(), e)),
-					o = n.min.subtract(t.min),
-					s = n.max.subtract(t.max);
-				return new k(this._rebound(o.x, -s.x), this._rebound(o.y, -s.y))
-			},
-			_rebound: function(t, i) {
-				return 0 < t + i ? Math.round(t - i) / 2 : Math.max(0, Math.ceil(t)) - Math.max(0, Math
-					.floor(i))
-			},
-			_limitZoom: function(t) {
-				var i = this.getMinZoom(),
-					e = this.getMaxZoom(),
-					n = vt ? this.options.zoomSnap : 1;
-				return n && (t = Math.round(t / n) * n), Math.max(i, Math.min(e, t))
-			},
-			_onPanTransitionStep: function() {
-				this.fire("move")
-			},
-			_onPanTransitionEnd: function() {
-				_i(this._mapPane, "leaflet-pan-anim"), this.fire("moveend")
-			},
-			_tryAnimatedPan: function(t, i) {
-				var e = this._getCenterOffset(t)._trunc();
-				return !(!0 !== (i && i.animate) && !this.getSize().contains(e)) && (this.panBy(e, i), !0)
-			},
-			_createAnimProxy: function() {
-				var t = this._proxy = si("div", "leaflet-proxy leaflet-zoom-animated");
-				this._panes.mapPane.appendChild(t), this.on("zoomanim", function(t) {
-					var i = ti,
-						e = this._proxy.style[i];
-					gi(this._proxy, this.project(t.center, t.zoom), this.getZoomScale(t.zoom, 1)),
-						e === this._proxy.style[i] && this._animatingZoom && this
-						._onZoomTransitionEnd()
-				}, this), this.on("load moveend", this._animMoveEnd, this), this._on("unload", this
-					._destroyAnimProxy, this)
-			},
-			_destroyAnimProxy: function() {
-				ri(this._proxy), this.off("load moveend", this._animMoveEnd, this), delete this._proxy
-			},
-			_animMoveEnd: function() {
-				var t = this.getCenter(),
-					i = this.getZoom();
-				gi(this._proxy, this.project(t, i), this.getZoomScale(i, 1))
-			},
-			_catchTransitionEnd: function(t) {
-				this._animatingZoom && 0 <= t.propertyName.indexOf("transform") && this
-					._onZoomTransitionEnd()
-			},
-			_nothingToAnimate: function() {
-				return !this._container.getElementsByClassName("leaflet-zoom-animated").length
-			},
-			_tryAnimatedZoom: function(t, i, e) {
-				if (this._animatingZoom) return !0;
-				if (e = e || {}, !this._zoomAnimated || !1 === e.animate || this._nothingToAnimate() || Math
-					.abs(i - this._zoom) > this.options.zoomAnimationThreshold) return !1;
-				var n = this.getZoomScale(i),
-					o = this._getCenterOffset(t)._divideBy(1 - 1 / n);
-				return !(!0 !== e.animate && !this.getSize().contains(o)) && (M(function() {
-					this._moveStart(!0, !1)._animateZoom(t, i, !0)
-				}, this), !0)
-			},
-			_animateZoom: function(t, i, e, n) {
-				this._mapPane && (e && (this._animatingZoom = !0, this._animateToCenter = t, this
-					._animateToZoom = i, ci(this._mapPane, "leaflet-zoom-anim")), this.fire(
-					"zoomanim", {
-						center: t,
-						zoom: i,
-						noUpdate: n
-					}), setTimeout(p(this._onZoomTransitionEnd, this), 250))
-			},
-			_onZoomTransitionEnd: function() {
-				this._animatingZoom && (this._mapPane && _i(this._mapPane, "leaflet-zoom-anim"), this
-					._animatingZoom = !1, this._move(this._animateToCenter, this._animateToZoom), M(
-						function() {
-							this._moveEnd(!0)
-						}, this))
-			}
-		});
-
-	function Yi(t) {
-		return new Xi(t)
-	}
-	var Xi = S.extend({
-		options: {
-			position: "topright"
-		},
-		initialize: function(t) {
-			c(this, t)
-		},
-		getPosition: function() {
-			return this.options.position
-		},
-		setPosition: function(t) {
-			var i = this._map;
-			return i && i.removeControl(this), this.options.position = t, i && i.addControl(this), this
-		},
-		getContainer: function() {
-			return this._container
-		},
-		addTo: function(t) {
-			this.remove(), this._map = t;
-			var i = this._container = this.onAdd(t),
-				e = this.getPosition(),
-				n = t._controlCorners[e];
-			return ci(i, "leaflet-control"), -1 !== e.indexOf("bottom") ? n.insertBefore(i, n
-				.firstChild) : n.appendChild(i), this._map.on("unload", this.remove, this), this
-		},
-		remove: function() {
-			return this._map && (ri(this._container), this.onRemove && this.onRemove(this._map), this
-				._map.off("unload", this.remove, this), this._map = null), this
-		},
-		_refocusOnMap: function(t) {
-			this._map && t && 0 < t.screenX && 0 < t.screenY && this._map.getContainer().focus()
-		}
-	});
-	Ki.include({
-		addControl: function(t) {
-			return t.addTo(this), this
-		},
-		removeControl: function(t) {
-			return t.remove(), this
-		},
-		_initControlPos: function() {
-			var n = this._controlCorners = {},
-				o = "leaflet-",
-				s = this._controlContainer = si("div", o + "control-container", this._container);
-
-			function t(t, i) {
-				var e = o + t + " " + o + i;
-				n[t + i] = si("div", e, s)
-			}
-			t("top", "left"), t("top", "right"), t("bottom", "left"), t("bottom", "right")
-		},
-		_clearControlPos: function() {
-			for (var t in this._controlCorners) ri(this._controlCorners[t]);
-			ri(this._controlContainer), delete this._controlCorners, delete this._controlContainer
-		}
-	});
-	var Ji = Xi.extend({
-			options: {
-				collapsed: !0,
-				position: "topright",
-				autoZIndex: !0,
-				hideSingleBase: !1,
-				sortLayers: !1,
-				sortFunction: function(t, i, e, n) {
-					return e < n ? -1 : n < e ? 1 : 0
-				}
-			},
-			initialize: function(t, i, e) {
-				for (var n in c(this, e), this._layerControlInputs = [], this._layers = [], this
-						._lastZIndex = 0, this._handlingClick = !1, t) this._addLayer(t[n], n);
-				for (n in i) this._addLayer(i[n], n, !0)
-			},
-			onAdd: function(t) {
-				this._initLayout(), this._update(), (this._map = t).on("zoomend", this._checkDisabledLayers,
-					this);
-				for (var i = 0; i < this._layers.length; i++) this._layers[i].layer.on("add remove", this
-					._onLayerChange, this);
-				return this._container
-			},
-			addTo: function(t) {
-				return Xi.prototype.addTo.call(this, t), this._expandIfNotCollapsed()
-			},
-			onRemove: function() {
-				this._map.off("zoomend", this._checkDisabledLayers, this);
-				for (var t = 0; t < this._layers.length; t++) this._layers[t].layer.off("add remove", this
-					._onLayerChange, this)
-			},
-			addBaseLayer: function(t, i) {
-				return this._addLayer(t, i), this._map ? this._update() : this
-			},
-			addOverlay: function(t, i) {
-				return this._addLayer(t, i, !0), this._map ? this._update() : this
-			},
-			removeLayer: function(t) {
-				t.off("add remove", this._onLayerChange, this);
-				var i = this._getLayer(m(t));
-				return i && this._layers.splice(this._layers.indexOf(i), 1), this._map ? this._update() :
-					this
-			},
-			expand: function() {
-				ci(this._container, "leaflet-control-layers-expanded"), this._section.style.height = null;
-				var t = this._map.getSize().y - (this._container.offsetTop + 50);
-				return t < this._section.clientHeight ? (ci(this._section,
-						"leaflet-control-layers-scrollbar"), this._section.style.height = t + "px") : _i(
-						this._section, "leaflet-control-layers-scrollbar"), this._checkDisabledLayers(),
-					this
-			},
-			collapse: function() {
-				return _i(this._container, "leaflet-control-layers-expanded"), this
-			},
-			_initLayout: function() {
-				var t = "leaflet-control-layers",
-					i = this._container = si("div", t),
-					e = this.options.collapsed;
-				i.setAttribute("aria-haspopup", !0), Oi(i), Ii(i);
-				var n = this._section = si("section", t + "-list");
-				e && (this._map.on("click", this.collapse, this), ot || zi(i, {
-					mouseenter: this.expand,
-					mouseleave: this.collapse
-				}, this));
-				var o = this._layersLink = si("a", t + "-toggle", i);
-				o.href = "#", o.title = "Layers", bt ? (zi(o, "click", Ni), zi(o, "click", this.expand,
-						this)) : zi(o, "focus", this.expand, this), e || this.expand(), this
-					._baseLayersList = si("div", t + "-base", n), this._separator = si("div", t +
-						"-separator", n), this._overlaysList = si("div", t + "-overlays", n), i.appendChild(
-						n)
-			},
-			_getLayer: function(t) {
-				for (var i = 0; i < this._layers.length; i++)
-					if (this._layers[i] && m(this._layers[i].layer) === t) return this._layers[i]
-			},
-			_addLayer: function(t, i, e) {
-				this._map && t.on("add remove", this._onLayerChange, this), this._layers.push({
-					layer: t,
-					name: i,
-					overlay: e
-				}), this.options.sortLayers && this._layers.sort(p(function(t, i) {
-					return this.options.sortFunction(t.layer, i.layer, t.name, i.name)
-				}, this)), this.options.autoZIndex && t.setZIndex && (this._lastZIndex++, t.setZIndex(
-					this._lastZIndex)), this._expandIfNotCollapsed()
-			},
-			_update: function() {
-				if (!this._container) return this;
-				ai(this._baseLayersList), ai(this._overlaysList), this._layerControlInputs = [];
-				for (var t, i, e, n = 0, o = 0; o < this._layers.length; o++) e = this._layers[o], this
-					._addItem(e), i = i || e.overlay, t = t || !e.overlay, n += e.overlay ? 0 : 1;
-				return this.options.hideSingleBase && (t = t && 1 < n, this._baseLayersList.style.display =
-					t ? "" : "none"), this._separator.style.display = i && t ? "" : "none", this
-			},
-			_onLayerChange: function(t) {
-				this._handlingClick || this._update();
-				var i = this._getLayer(m(t.target)),
-					e = i.overlay ? "add" === t.type ? "overlayadd" : "overlayremove" : "add" === t.type ?
-					"baselayerchange" : null;
-				e && this._map.fire(e, i)
-			},
-			_createRadioElement: function(t, i) {
-				var e = '<input type="radio" class="leaflet-control-layers-selector" name="' + t + '"' + (
-						i ? ' checked="checked"' : "") + "/>",
-					n = document.createElement("div");
-				return n.innerHTML = e, n.firstChild
-			},
-			_addItem: function(t) {
-				var i, e = document.createElement("label"),
-					n = this._map.hasLayer(t.layer);
-				t.overlay ? ((i = document.createElement("input")).type = "checkbox", i.className =
-						"leaflet-control-layers-selector", i.defaultChecked = n) : i = this
-					._createRadioElement("leaflet-base-layers_" + m(this), n), this._layerControlInputs
-					.push(i), i.layerId = m(t.layer), zi(i, "click", this._onInputClick, this);
-				var o = document.createElement("span");
-				o.innerHTML = " " + t.name;
-				var s = document.createElement("div");
-				return e.appendChild(s), s.appendChild(i), s.appendChild(o), (t.overlay ? this
-						._overlaysList : this._baseLayersList).appendChild(e), this._checkDisabledLayers(),
-					e
-			},
-			_onInputClick: function() {
-				var t, i, e = this._layerControlInputs,
-					n = [],
-					o = [];
-				this._handlingClick = !0;
-				for (var s = e.length - 1; 0 <= s; s--) t = e[s], i = this._getLayer(t.layerId).layer, t
-					.checked ? n.push(i) : t.checked || o.push(i);
-				for (s = 0; s < o.length; s++) this._map.hasLayer(o[s]) && this._map.removeLayer(o[s]);
-				for (s = 0; s < n.length; s++) this._map.hasLayer(n[s]) || this._map.addLayer(n[s]);
-				this._handlingClick = !1, this._refocusOnMap()
-			},
-			_checkDisabledLayers: function() {
-				for (var t, i, e = this._layerControlInputs, n = this._map.getZoom(), o = e.length - 1; 0 <=
-					o; o--) t = e[o], i = this._getLayer(t.layerId).layer, t.disabled = void 0 !== i.options
-					.minZoom && n < i.options.minZoom || void 0 !== i.options.maxZoom && n > i.options
-					.maxZoom
-			},
-			_expandIfNotCollapsed: function() {
-				return this._map && !this.options.collapsed && this.expand(), this
-			},
-			_expand: function() {
-				return this.expand()
-			},
-			_collapse: function() {
-				return this.collapse()
-			}
-		}),
-		$i = Xi.extend({
-			options: {
-				position: "topleft",
-				zoomInText: "+",
-				zoomInTitle: "Zoom in",
-				zoomOutText: "&#x2212;",
-				zoomOutTitle: "Zoom out"
-			},
-			onAdd: function(t) {
-				var i = "leaflet-control-zoom",
-					e = si("div", i + " leaflet-bar"),
-					n = this.options;
-				return this._zoomInButton = this._createButton(n.zoomInText, n.zoomInTitle, i + "-in", e,
-					this._zoomIn), this._zoomOutButton = this._createButton(n.zoomOutText, n
-					.zoomOutTitle, i + "-out", e, this._zoomOut), this._updateDisabled(), t.on(
-					"zoomend zoomlevelschange", this._updateDisabled, this), e
-			},
-			onRemove: function(t) {
-				t.off("zoomend zoomlevelschange", this._updateDisabled, this)
-			},
-			disable: function() {
-				return this._disabled = !0, this._updateDisabled(), this
-			},
-			enable: function() {
-				return this._disabled = !1, this._updateDisabled(), this
-			},
-			_zoomIn: function(t) {
-				!this._disabled && this._map._zoom < this._map.getMaxZoom() && this._map.zoomIn(this._map
-					.options.zoomDelta * (t.shiftKey ? 3 : 1))
-			},
-			_zoomOut: function(t) {
-				!this._disabled && this._map._zoom > this._map.getMinZoom() && this._map.zoomOut(this._map
-					.options.zoomDelta * (t.shiftKey ? 3 : 1))
-			},
-			_createButton: function(t, i, e, n, o) {
-				var s = si("a", e, n);
-				return s.innerHTML = t, s.href = "#", s.title = i, s.setAttribute("role", "button"), s
-					.setAttribute("aria-label", i), Oi(s), zi(s, "click", Ni), zi(s, "click", o, this), zi(
-						s, "click", this._refocusOnMap, this), s
-			},
-			_updateDisabled: function() {
-				var t = this._map,
-					i = "leaflet-disabled";
-				_i(this._zoomInButton, i), _i(this._zoomOutButton, i), !this._disabled && t._zoom !== t
-					.getMinZoom() || ci(this._zoomOutButton, i), !this._disabled && t._zoom !== t
-					.getMaxZoom() || ci(this._zoomInButton, i)
-			}
-		});
-	Ki.mergeOptions({
-		zoomControl: !0
-	}), Ki.addInitHook(function() {
-		this.options.zoomControl && (this.zoomControl = new $i, this.addControl(this.zoomControl))
-	});
-	var Qi = Xi.extend({
-			options: {
-				position: "bottomleft",
-				maxWidth: 100,
-				metric: !0,
-				imperial: !0
-			},
-			onAdd: function(t) {
-				var i = "leaflet-control-scale",
-					e = si("div", i),
-					n = this.options;
-				return this._addScales(n, i + "-line", e), t.on(n.updateWhenIdle ? "moveend" : "move", this
-					._update, this), t.whenReady(this._update, this), e
-			},
-			onRemove: function(t) {
-				t.off(this.options.updateWhenIdle ? "moveend" : "move", this._update, this)
-			},
-			_addScales: function(t, i, e) {
-				t.metric && (this._mScale = si("div", i, e)), t.imperial && (this._iScale = si("div", i, e))
-			},
-			_update: function() {
-				var t = this._map,
-					i = t.getSize().y / 2,
-					e = t.distance(t.containerPointToLatLng([0, i]), t.containerPointToLatLng([this.options
-						.maxWidth, i
-					]));
-				this._updateScales(e)
-			},
-			_updateScales: function(t) {
-				this.options.metric && t && this._updateMetric(t), this.options.imperial && t && this
-					._updateImperial(t)
-			},
-			_updateMetric: function(t) {
-				var i = this._getRoundNum(t),
-					e = i < 1e3 ? i + " m" : i / 1e3 + " km";
-				this._updateScale(this._mScale, e, i / t)
-			},
-			_updateImperial: function(t) {
-				var i, e, n, o = 3.2808399 * t;
-				5280 < o ? (i = o / 5280, e = this._getRoundNum(i), this._updateScale(this._iScale, e +
-					" mi", e / i)) : (n = this._getRoundNum(o), this._updateScale(this._iScale, n +
-					" ft", n / o))
-			},
-			_updateScale: function(t, i, e) {
-				t.style.width = Math.round(this.options.maxWidth * e) + "px", t.innerHTML = i
-			},
-			_getRoundNum: function(t) {
-				var i = Math.pow(10, (Math.floor(t) + "").length - 1),
-					e = t / i;
-				return i * (e = 10 <= e ? 10 : 5 <= e ? 5 : 3 <= e ? 3 : 2 <= e ? 2 : 1)
-			}
-		}),
-		te = Xi.extend({
-			options: {
-				position: "bottomright",
-				prefix: '<a href="https://leafletjs.com" title="A JS library for interactive maps">Leaflet</a>'
-			},
-			initialize: function(t) {
-				c(this, t), this._attributions = {}
-			},
-			onAdd: function(t) {
-				for (var i in (t.attributionControl = this)._container = si("div",
-						"leaflet-control-attribution"), Oi(this._container), t._layers) t._layers[i]
-					.getAttribution && this.addAttribution(t._layers[i].getAttribution());
-				return this._update(), this._container
-			},
-			setPrefix: function(t) {
-				return this.options.prefix = t, this._update(), this
-			},
-			addAttribution: function(t) {
-				return t && (this._attributions[t] || (this._attributions[t] = 0), this._attributions[t]++,
-					this._update()), this
-			},
-			removeAttribution: function(t) {
-				return t && this._attributions[t] && (this._attributions[t]--, this._update()), this
-			},
-			_update: function() {
-				if (this._map) {
-					var t = [];
-					for (var i in this._attributions) this._attributions[i] && t.push(i);
-					var e = [];
-					this.options.prefix && e.push(this.options.prefix), t.length && e.push(t.join(", ")),
-						this._container.innerHTML = e.join(" | ")
-				}
-			}
-		});
-	Ki.mergeOptions({
-		attributionControl: !0
-	}), Ki.addInitHook(function() {
-		this.options.attributionControl && (new te).addTo(this)
-	});
-	Xi.Layers = Ji, Xi.Zoom = $i, Xi.Scale = Qi, Xi.Attribution = te, Yi.layers = function(t, i, e) {
-		return new Ji(t, i, e)
-	}, Yi.zoom = function(t) {
-		return new $i(t)
-	}, Yi.scale = function(t) {
-		return new Qi(t)
-	}, Yi.attribution = function(t) {
-		return new te(t)
-	};
-	var ie = S.extend({
-		initialize: function(t) {
-			this._map = t
-		},
-		enable: function() {
-			return this._enabled || (this._enabled = !0, this.addHooks()), this
-		},
-		disable: function() {
-			return this._enabled && (this._enabled = !1, this.removeHooks()), this
-		},
-		enabled: function() {
-			return !!this._enabled
-		}
-	});
-	ie.addTo = function(t, i) {
-		return t.addHandler(i, this), this
-	};
-	var ee, ne = {
-			Events: Z
-		},
-		oe = bt ? "touchstart mousedown" : "mousedown",
-		se = {
-			mousedown: "mouseup",
-			touchstart: "touchend",
-			pointerdown: "touchend",
-			MSPointerDown: "touchend"
-		},
-		re = {
-			mousedown: "mousemove",
-			touchstart: "touchmove",
-			pointerdown: "touchmove",
-			MSPointerDown: "touchmove"
-		},
-		ae = E.extend({
-			options: {
-				clickTolerance: 3
-			},
-			initialize: function(t, i, e, n) {
-				c(this, n), this._element = t, this._dragStartTarget = i || t, this._preventOutline = e
-			},
-			enable: function() {
-				this._enabled || (zi(this._dragStartTarget, oe, this._onDown, this), this._enabled = !0)
-			},
-			disable: function() {
-				this._enabled && (ae._dragging === this && this.finishDrag(), Si(this._dragStartTarget, oe,
-					this._onDown, this), this._enabled = !1, this._moved = !1)
-			},
-			_onDown: function(t) {
-				var i, e;
-				!t._simulated && this._enabled && (this._moved = !1, li(this._element,
-					"leaflet-zoom-anim") || ae._dragging || t.shiftKey || 1 !== t.which && 1 !== t
-					.button && !t.touches || ((ae._dragging = this)._preventOutline && Pi(this
-						._element), xi(), Xt(), this._moving || (this.fire("down"), i = t.touches ? t
-							.touches[0] : t, e = bi(this._element), this._startPoint = new k(i.clientX,
-								i.clientY), this._parentScale = Ti(e), zi(document, re[t.type], this
-								._onMove, this), zi(document, se[t.type], this._onUp, this))))
-			},
-			_onMove: function(t) {
-				var i, e;
-				!t._simulated && this._enabled && (t.touches && 1 < t.touches.length ? this._moved = !0 : ((
-					e = new k((i = t.touches && 1 === t.touches.length ? t.touches[0] : t)
-						.clientX, i.clientY)._subtract(this._startPoint)).x || e.y) && (Math.abs(e
-					.x) + Math.abs(e.y) < this.options.clickTolerance || (e.x /= this
-					._parentScale.x, e.y /= this._parentScale.y, Ri(t), this._moved || (this
-						.fire("dragstart"), this._moved = !0, this._startPos = yi(this._element)
-						.subtract(e), ci(document.body, "leaflet-dragging"), this._lastTarget =
-						t.target || t.srcElement, window.SVGElementInstance && this
-						._lastTarget instanceof window.SVGElementInstance && (this._lastTarget =
-							this._lastTarget.correspondingUseElement), ci(this._lastTarget,
-							"leaflet-drag-target")), this._newPos = this._startPos.add(e), this
-					._moving = !0, z(this._animRequest), this._lastEvent = t, this
-					._animRequest = M(this._updatePosition, this, !0))))
-			},
-			_updatePosition: function() {
-				var t = {
-					originalEvent: this._lastEvent
-				};
-				this.fire("predrag", t), vi(this._element, this._newPos), this.fire("drag", t)
-			},
-			_onUp: function(t) {
-				!t._simulated && this._enabled && this.finishDrag()
-			},
-			finishDrag: function() {
-				for (var t in _i(document.body, "leaflet-dragging"), this._lastTarget && (_i(this
-						._lastTarget, "leaflet-drag-target"), this._lastTarget = null), re) Si(document, re[
-					t], this._onMove, this), Si(document, se[t], this._onUp, this);
-				wi(), Jt(), this._moved && this._moving && (z(this._animRequest), this.fire("dragend", {
-					distance: this._newPos.distanceTo(this._startPos)
-				})), this._moving = !1, ae._dragging = !1
-			}
-		});
-
-	function he(t, i) {
-		if (!i || !t.length) return t.slice();
-		var e = i * i;
-		return t = function(t, i) {
-			var e = t.length,
-				n = new(typeof Uint8Array != void 0 + "" ? Uint8Array : Array)(e);
-			n[0] = n[e - 1] = 1,
-				function t(i, e, n, o, s) {
-					var r, a, h, u = 0;
-					for (a = o + 1; a <= s - 1; a++) h = de(i[a], i[o], i[s], !0), u < h && (r = a, u = h);
-					n < u && (e[r] = 1, t(i, e, n, o, r), t(i, e, n, r, s))
-				}(t, n, i, 0, e - 1);
-			var o, s = [];
-			for (o = 0; o < e; o++) n[o] && s.push(t[o]);
-			return s
-		}(t = function(t, i) {
-			for (var e = [t[0]], n = 1, o = 0, s = t.length; n < s; n++)(function(t, i) {
-				var e = i.x - t.x,
-					n = i.y - t.y;
-				return e * e + n * n
-			})(t[n], t[o]) > i && (e.push(t[n]), o = n);
-			o < s - 1 && e.push(t[s - 1]);
-			return e
-		}(t, e), e)
-	}
-
-	function ue(t, i, e) {
-		return Math.sqrt(de(t, i, e, !0))
-	}
-
-	function le(t, i, e, n, o) {
-		var s, r, a, h = n ? ee : _e(t, e),
-			u = _e(i, e);
-		for (ee = u;;) {
-			if (!(h | u)) return [t, i];
-			if (h & u) return !1;
-			a = _e(r = ce(t, i, s = h || u, e, o), e), s === h ? (t = r, h = a) : (i = r, u = a)
-		}
-	}
-
-	function ce(t, i, e, n, o) {
-		var s, r, a = i.x - t.x,
-			h = i.y - t.y,
-			u = n.min,
-			l = n.max;
-		return 8 & e ? (s = t.x + a * (l.y - t.y) / h, r = l.y) : 4 & e ? (s = t.x + a * (u.y - t.y) / h, r = u.y) :
-			2 & e ? (s = l.x, r = t.y + h * (l.x - t.x) / a) : 1 & e && (s = u.x, r = t.y + h * (u.x - t.x) / a),
-			new k(s, r, o)
-	}
-
-	function _e(t, i) {
-		var e = 0;
-		return t.x < i.min.x ? e |= 1 : t.x > i.max.x && (e |= 2), t.y < i.min.y ? e |= 4 : t.y > i.max.y && (e |=
-			8), e
-	}
-
-	function de(t, i, e, n) {
-		var o, s = i.x,
-			r = i.y,
-			a = e.x - s,
-			h = e.y - r,
-			u = a * a + h * h;
-		return 0 < u && (1 < (o = ((t.x - s) * a + (t.y - r) * h) / u) ? (s = e.x, r = e.y) : 0 < o && (s += a * o,
-			r += h * o)), a = t.x - s, h = t.y - r, n ? a * a + h * h : new k(s, r)
-	}
-
-	function pe(t) {
-		return !g(t[0]) || "object" != typeof t[0][0] && void 0 !== t[0][0]
-	}
-
-	function me(t) {
-		return console.warn("Deprecated use of _flat, please use L.LineUtil.isFlat instead."), pe(t)
-	}
-	var fe = {
-		simplify: he,
-		pointToSegmentDistance: ue,
-		closestPointOnSegment: function(t, i, e) {
-			return de(t, i, e)
-		},
-		clipSegment: le,
-		_getEdgeIntersection: ce,
-		_getBitCode: _e,
-		_sqClosestPointOnSegment: de,
-		isFlat: pe,
-		_flat: me
-	};
-
-	function ge(t, i, e) {
-		for (var n, o, s, r, a, h, u, l = [1, 4, 2, 8], c = 0, _ = t.length; c < _; c++) t[c]._code = _e(t[c], i);
-		for (s = 0; s < 4; s++) {
-			for (h = l[s], n = [], c = 0, o = (_ = t.length) - 1; c < _; o = c++) r = t[c], a = t[o], r._code & h ?
-				a._code & h || ((u = ce(a, r, h, i, e))._code = _e(u, i), n.push(u)) : (a._code & h && ((u = ce(a,
-					r, h, i, e))._code = _e(u, i), n.push(u)), n.push(r));
-			t = n
-		}
-		return t
-	}
-	var ve, ye = {
-			clipPolygon: ge
-		},
-		xe = {
-			project: function(t) {
-				return new k(t.lng, t.lat)
-			},
-			unproject: function(t) {
-				return new D(t.y, t.x)
-			},
-			bounds: new I([-180, -90], [180, 90])
-		},
-		we = {
-			R: 6378137,
-			R_MINOR: 6356752.314245179,
-			bounds: new I([-20037508.34279, -15496570.73972], [20037508.34279, 18764656.23138]),
-			project: function(t) {
-				var i = Math.PI / 180,
-					e = this.R,
-					n = t.lat * i,
-					o = this.R_MINOR / e,
-					s = Math.sqrt(1 - o * o),
-					r = s * Math.sin(n),
-					a = Math.tan(Math.PI / 4 - n / 2) / Math.pow((1 - r) / (1 + r), s / 2),
-					n = -e * Math.log(Math.max(a, 1e-10));
-				return new k(t.lng * i * e, n)
-			},
-			unproject: function(t) {
-				for (var i, e = 180 / Math.PI, n = this.R, o = this.R_MINOR / n, s = Math.sqrt(1 - o * o), r =
-						Math.exp(-t.y / n), a = Math.PI / 2 - 2 * Math.atan(r), h = 0, u = .1; h < 15 && 1e-7 <
-					Math.abs(u); h++) i = s * Math.sin(a), i = Math.pow((1 - i) / (1 + i), s / 2), a += u = Math
-					.PI / 2 - 2 * Math.atan(r * i) - a;
-				return new D(a * e, t.x * e / n)
-			}
-		},
-		Pe = {
-			LonLat: xe,
-			Mercator: we,
-			SphericalMercator: V
-		},
-		Le = h({}, F, {
-			code: "EPSG:3395",
-			projection: we,
-			transformation: G(ve = .5 / (Math.PI * we.R), .5, -ve, .5)
-		}),
-		be = h({}, F, {
-			code: "EPSG:4326",
-			projection: xe,
-			transformation: G(1 / 180, 1, -1 / 180, .5)
-		}),
-		Te = h({}, H, {
-			projection: xe,
-			transformation: G(1, 0, -1, 0),
-			scale: function(t) {
-				return Math.pow(2, t)
-			},
-			zoom: function(t) {
-				return Math.log(t) / Math.LN2
-			},
-			distance: function(t, i) {
-				var e = i.lng - t.lng,
-					n = i.lat - t.lat;
-				return Math.sqrt(e * e + n * n)
-			},
-			infinite: !0
-		});
-	H.Earth = F, H.EPSG3395 = Le, H.EPSG3857 = Y, H.EPSG900913 = X, H.EPSG4326 = be, H.Simple = Te;
-	var Me = E.extend({
-		options: {
-			pane: "overlayPane",
-			attribution: null,
-			bubblingMouseEvents: !0
-		},
-		addTo: function(t) {
-			return t.addLayer(this), this
-		},
-		remove: function() {
-			return this.removeFrom(this._map || this._mapToAdd)
-		},
-		removeFrom: function(t) {
-			return t && t.removeLayer(this), this
-		},
-		getPane: function(t) {
-			return this._map.getPane(t ? this.options[t] || t : this.options.pane)
-		},
-		addInteractiveTarget: function(t) {
-			return this._map._targets[m(t)] = this
-		},
-		removeInteractiveTarget: function(t) {
-			return delete this._map._targets[m(t)], this
-		},
-		getAttribution: function() {
-			return this.options.attribution
-		},
-		_layerAdd: function(t) {
-			var i, e = t.target;
-			e.hasLayer(this) && (this._map = e, this._zoomAnimated = e._zoomAnimated, this.getEvents &&
-				(i = this.getEvents(), e.on(i, this), this.once("remove", function() {
-					e.off(i, this)
-				}, this)), this.onAdd(e), this.getAttribution && e.attributionControl && e
-				.attributionControl.addAttribution(this.getAttribution()), this.fire("add"), e.fire(
-					"layeradd", {
-						layer: this
-					}))
-		}
-	});
-	Ki.include({
-		addLayer: function(t) {
-			if (!t._layerAdd) throw new Error("The provided object is not a Layer.");
-			var i = m(t);
-			return this._layers[i] || ((this._layers[i] = t)._mapToAdd = this, t.beforeAdd && t
-				.beforeAdd(this), this.whenReady(t._layerAdd, t)), this
-		},
-		removeLayer: function(t) {
-			var i = m(t);
-			return this._layers[i] && (this._loaded && t.onRemove(this), t.getAttribution && this
-				.attributionControl && this.attributionControl.removeAttribution(t
-			.getAttribution()), delete this._layers[i], this._loaded && (this.fire("layerremove", {
-					layer: t
-				}), t.fire("remove")), t._map = t._mapToAdd = null), this
-		},
-		hasLayer: function(t) {
-			return !!t && m(t) in this._layers
-		},
-		eachLayer: function(t, i) {
-			for (var e in this._layers) t.call(i, this._layers[e]);
-			return this
-		},
-		_addLayers: function(t) {
-			for (var i = 0, e = (t = t ? g(t) ? t : [t] : []).length; i < e; i++) this.addLayer(t[i])
-		},
-		_addZoomLimit: function(t) {
-			!isNaN(t.options.maxZoom) && isNaN(t.options.minZoom) || (this._zoomBoundLayers[m(t)] = t,
-				this._updateZoomLevels())
-		},
-		_removeZoomLimit: function(t) {
-			var i = m(t);
-			this._zoomBoundLayers[i] && (delete this._zoomBoundLayers[i], this._updateZoomLevels())
-		},
-		_updateZoomLevels: function() {
-			var t = 1 / 0,
-				i = -1 / 0,
-				e = this._getZoomSpan();
-			for (var n in this._zoomBoundLayers) var o = this._zoomBoundLayers[n].options,
-				t = void 0 === o.minZoom ? t : Math.min(t, o.minZoom),
-				i = void 0 === o.maxZoom ? i : Math.max(i, o.maxZoom);
-			this._layersMaxZoom = i === -1 / 0 ? void 0 : i, this._layersMinZoom = t === 1 / 0 ?
-				void 0 : t, e !== this._getZoomSpan() && this.fire("zoomlevelschange"), void 0 === this
-				.options.maxZoom && this._layersMaxZoom && this.getZoom() > this._layersMaxZoom && this
-				.setZoom(this._layersMaxZoom), void 0 === this.options.minZoom && this._layersMinZoom &&
-				this.getZoom() < this._layersMinZoom && this.setZoom(this._layersMinZoom)
-		}
-	});
-	var ze = Me.extend({
-			initialize: function(t, i) {
-				var e, n;
-				if (c(this, i), this._layers = {}, t)
-					for (e = 0, n = t.length; e < n; e++) this.addLayer(t[e])
-			},
-			addLayer: function(t) {
-				var i = this.getLayerId(t);
-				return this._layers[i] = t, this._map && this._map.addLayer(t), this
-			},
-			removeLayer: function(t) {
-				var i = t in this._layers ? t : this.getLayerId(t);
-				return this._map && this._layers[i] && this._map.removeLayer(this._layers[i]), delete this
-					._layers[i], this
-			},
-			hasLayer: function(t) {
-				return !!t && ("number" == typeof t ? t : this.getLayerId(t)) in this._layers
-			},
-			clearLayers: function() {
-				return this.eachLayer(this.removeLayer, this)
-			},
-			invoke: function(t) {
-				var i, e, n = Array.prototype.slice.call(arguments, 1);
-				for (i in this._layers)(e = this._layers[i])[t] && e[t].apply(e, n);
-				return this
-			},
-			onAdd: function(t) {
-				this.eachLayer(t.addLayer, t)
-			},
-			onRemove: function(t) {
-				this.eachLayer(t.removeLayer, t)
-			},
-			eachLayer: function(t, i) {
-				for (var e in this._layers) t.call(i, this._layers[e]);
-				return this
-			},
-			getLayer: function(t) {
-				return this._layers[t]
-			},
-			getLayers: function() {
-				var t = [];
-				return this.eachLayer(t.push, t), t
-			},
-			setZIndex: function(t) {
-				return this.invoke("setZIndex", t)
-			},
-			getLayerId: m
-		}),
-		Ce = ze.extend({
-			addLayer: function(t) {
-				return this.hasLayer(t) ? this : (t.addEventParent(this), ze.prototype.addLayer.call(this,
-					t), this.fire("layeradd", {
-					layer: t
-				}))
-			},
-			removeLayer: function(t) {
-				return this.hasLayer(t) ? (t in this._layers && (t = this._layers[t]), t.removeEventParent(
-					this), ze.prototype.removeLayer.call(this, t), this.fire("layerremove", {
-					layer: t
-				})) : this
-			},
-			setStyle: function(t) {
-				return this.invoke("setStyle", t)
-			},
-			bringToFront: function() {
-				return this.invoke("bringToFront")
-			},
-			bringToBack: function() {
-				return this.invoke("bringToBack")
-			},
-			getBounds: function() {
-				var t = new R;
-				for (var i in this._layers) {
-					var e = this._layers[i];
-					t.extend(e.getBounds ? e.getBounds() : e.getLatLng())
-				}
-				return t
-			}
-		}),
-		Se = S.extend({
-			options: {
-				popupAnchor: [0, 0],
-				tooltipAnchor: [0, 0]
-			},
-			initialize: function(t) {
-				c(this, t)
-			},
-			createIcon: function(t) {
-				return this._createIcon("icon", t)
-			},
-			createShadow: function(t) {
-				return this._createIcon("shadow", t)
-			},
-			_createIcon: function(t, i) {
-				var e = this._getIconUrl(t);
-				if (!e) {
-					if ("icon" === t) throw new Error("iconUrl not set in Icon options (see the docs).");
-					return null
-				}
-				var n = this._createImg(e, i && "IMG" === i.tagName ? i : null);
-				return this._setIconStyles(n, t), n
-			},
-			_setIconStyles: function(t, i) {
-				var e = this.options,
-					n = e[i + "Size"];
-				"number" == typeof n && (n = [n, n]);
-				var o = A(n),
-					s = A("shadow" === i && e.shadowAnchor || e.iconAnchor || o && o.divideBy(2, !0));
-				t.className = "leaflet-marker-" + i + " " + (e.className || ""), s && (t.style
-					.marginLeft = -s.x + "px", t.style.marginTop = -s.y + "px"), o && (t.style.width = o
-					.x + "px", t.style.height = o.y + "px")
-			},
-			_createImg: function(t, i) {
-				return (i = i || document.createElement("img")).src = t, i
-			},
-			_getIconUrl: function(t) {
-				return zt && this.options[t + "RetinaUrl"] || this.options[t + "Url"]
-			}
-		});
-	var Ze = Se.extend({
-			options: {
-				iconUrl: "marker-icon.png",
-				iconRetinaUrl: "marker-icon-2x.png",
-				shadowUrl: "marker-shadow.png",
-				iconSize: [25, 41],
-				iconAnchor: [12, 41],
-				popupAnchor: [1, -34],
-				tooltipAnchor: [16, -28],
-				shadowSize: [41, 41]
-			},
-			_getIconUrl: function(t) {
-				return Ze.imagePath || (Ze.imagePath = this._detectIconPath()), (this.options.imagePath ||
-					Ze.imagePath) + Se.prototype._getIconUrl.call(this, t)
-			},
-			_detectIconPath: function() {
-				var t = si("div", "leaflet-default-icon-path", document.body),
-					i = oi(t, "background-image") || oi(t, "backgroundImage");
-				return document.body.removeChild(t), i = null === i || 0 !== i.indexOf("url") ? "" : i
-					.replace(/^url\(["']?/, "").replace(/marker-icon\.png["']?\)$/, "")
-			}
-		}),
-		Ee = ie.extend({
-			initialize: function(t) {
-				this._marker = t
-			},
-			addHooks: function() {
-				var t = this._marker._icon;
-				this._draggable || (this._draggable = new ae(t, t, !0)), this._draggable.on({
-					dragstart: this._onDragStart,
-					predrag: this._onPreDrag,
-					drag: this._onDrag,
-					dragend: this._onDragEnd
-				}, this).enable(), ci(t, "leaflet-marker-draggable")
-			},
-			removeHooks: function() {
-				this._draggable.off({
-					dragstart: this._onDragStart,
-					predrag: this._onPreDrag,
-					drag: this._onDrag,
-					dragend: this._onDragEnd
-				}, this).disable(), this._marker._icon && _i(this._marker._icon,
-					"leaflet-marker-draggable")
-			},
-			moved: function() {
-				return this._draggable && this._draggable._moved
-			},
-			_adjustPan: function(t) {
-				var i, e = this._marker,
-					n = e._map,
-					o = this._marker.options.autoPanSpeed,
-					s = this._marker.options.autoPanPadding,
-					r = yi(e._icon),
-					a = n.getPixelBounds(),
-					h = n.getPixelOrigin(),
-					u = O(a.min._subtract(h).add(s), a.max._subtract(h).subtract(s));
-				u.contains(r) || (i = A((Math.max(u.max.x, r.x) - u.max.x) / (a.max.x - u.max.x) - (Math
-						.min(u.min.x, r.x) - u.min.x) / (a.min.x - u.min.x), (Math.max(u.max.y, r
-						.y) - u.max.y) / (a.max.y - u.max.y) - (Math.min(u.min.y, r.y) - u.min.y) /
-					(a.min.y - u.min.y)).multiplyBy(o), n.panBy(i, {
-					animate: !1
-				}), this._draggable._newPos._add(i), this._draggable._startPos._add(i), vi(e._icon,
-					this._draggable._newPos), this._onDrag(t), this._panRequest = M(this._adjustPan
-					.bind(this, t)))
-			},
-			_onDragStart: function() {
-				this._oldLatLng = this._marker.getLatLng(), this._marker.closePopup && this._marker
-					.closePopup(), this._marker.fire("movestart").fire("dragstart")
-			},
-			_onPreDrag: function(t) {
-				this._marker.options.autoPan && (z(this._panRequest), this._panRequest = M(this._adjustPan
-					.bind(this, t)))
-			},
-			_onDrag: function(t) {
-				var i = this._marker,
-					e = i._shadow,
-					n = yi(i._icon),
-					o = i._map.layerPointToLatLng(n);
-				e && vi(e, n), i._latlng = o, t.latlng = o, t.oldLatLng = this._oldLatLng, i.fire("move", t)
-					.fire("drag", t)
-			},
-			_onDragEnd: function(t) {
-				z(this._panRequest), delete this._oldLatLng, this._marker.fire("moveend").fire("dragend", t)
-			}
-		}),
-		ke = Me.extend({
-			options: {
-				icon: new Ze,
-				interactive: !0,
-				keyboard: !0,
-				title: "",
-				alt: "",
-				zIndexOffset: 0,
-				opacity: 1,
-				riseOnHover: !1,
-				riseOffset: 250,
-				pane: "markerPane",
-				shadowPane: "shadowPane",
-				bubblingMouseEvents: !1,
-				draggable: !1,
-				autoPan: !1,
-				autoPanPadding: [50, 50],
-				autoPanSpeed: 10
-			},
-			initialize: function(t, i) {
-				c(this, i), this._latlng = j(t)
-			},
-			onAdd: function(t) {
-				this._zoomAnimated = this._zoomAnimated && t.options.markerZoomAnimation, this
-					._zoomAnimated && t.on("zoomanim", this._animateZoom, this), this._initIcon(), this
-					.update()
-			},
-			onRemove: function(t) {
-				this.dragging && this.dragging.enabled() && (this.options.draggable = !0, this.dragging
-					.removeHooks()), delete this.dragging, this._zoomAnimated && t.off("zoomanim", this
-					._animateZoom, this), this._removeIcon(), this._removeShadow()
-			},
-			getEvents: function() {
-				return {
-					zoom: this.update,
-					viewreset: this.update
-				}
-			},
-			getLatLng: function() {
-				return this._latlng
-			},
-			setLatLng: function(t) {
-				var i = this._latlng;
-				return this._latlng = j(t), this.update(), this.fire("move", {
-					oldLatLng: i,
-					latlng: this._latlng
-				})
-			},
-			setZIndexOffset: function(t) {
-				return this.options.zIndexOffset = t, this.update()
-			},
-			getIcon: function() {
-				return this.options.icon
-			},
-			setIcon: function(t) {
-				return this.options.icon = t, this._map && (this._initIcon(), this.update()), this._popup &&
-					this.bindPopup(this._popup, this._popup.options), this
-			},
-			getElement: function() {
-				return this._icon
-			},
-			update: function() {
-				var t;
-				return this._icon && this._map && (t = this._map.latLngToLayerPoint(this._latlng).round(),
-					this._setPos(t)), this
-			},
-			_initIcon: function() {
-				var t = this.options,
-					i = "leaflet-zoom-" + (this._zoomAnimated ? "animated" : "hide"),
-					e = t.icon.createIcon(this._icon),
-					n = !1;
-				e !== this._icon && (this._icon && this._removeIcon(), n = !0, t.title && (e.title = t
-					.title), "IMG" === e.tagName && (e.alt = t.alt || "")), ci(e, i), t.keyboard && (e
-					.tabIndex = "0"), this._icon = e, t.riseOnHover && this.on({
-					mouseover: this._bringToFront,
-					mouseout: this._resetZIndex
-				});
-				var o = t.icon.createShadow(this._shadow),
-					s = !1;
-				o !== this._shadow && (this._removeShadow(), s = !0), o && (ci(o, i), o.alt = ""), this
-					._shadow = o, t.opacity < 1 && this._updateOpacity(), n && this.getPane().appendChild(
-						this._icon), this._initInteraction(), o && s && this.getPane(t.shadowPane)
-					.appendChild(this._shadow)
-			},
-			_removeIcon: function() {
-				this.options.riseOnHover && this.off({
-					mouseover: this._bringToFront,
-					mouseout: this._resetZIndex
-				}), ri(this._icon), this.removeInteractiveTarget(this._icon), this._icon = null
-			},
-			_removeShadow: function() {
-				this._shadow && ri(this._shadow), this._shadow = null
-			},
-			_setPos: function(t) {
-				this._icon && vi(this._icon, t), this._shadow && vi(this._shadow, t), this._zIndex = t.y +
-					this.options.zIndexOffset, this._resetZIndex()
-			},
-			_updateZIndex: function(t) {
-				this._icon && (this._icon.style.zIndex = this._zIndex + t)
-			},
-			_animateZoom: function(t) {
-				var i = this._map._latLngToNewLayerPoint(this._latlng, t.zoom, t.center).round();
-				this._setPos(i)
-			},
-			_initInteraction: function() {
-				var t;
-				this.options.interactive && (ci(this._icon, "leaflet-interactive"), this
-					.addInteractiveTarget(this._icon), Ee && (t = this.options.draggable, this
-						.dragging && (t = this.dragging.enabled(), this.dragging.disable()), this
-						.dragging = new Ee(this), t && this.dragging.enable()))
-			},
-			setOpacity: function(t) {
-				return this.options.opacity = t, this._map && this._updateOpacity(), this
-			},
-			_updateOpacity: function() {
-				var t = this.options.opacity;
-				this._icon && mi(this._icon, t), this._shadow && mi(this._shadow, t)
-			},
-			_bringToFront: function() {
-				this._updateZIndex(this.options.riseOffset)
-			},
-			_resetZIndex: function() {
-				this._updateZIndex(0)
-			},
-			_getPopupAnchor: function() {
-				return this.options.icon.options.popupAnchor
-			},
-			_getTooltipAnchor: function() {
-				return this.options.icon.options.tooltipAnchor
-			}
-		});
-	var Be = Me.extend({
-			options: {
-				stroke: !0,
-				color: "#3388ff",
-				weight: 3,
-				opacity: 1,
-				lineCap: "round",
-				lineJoin: "round",
-				dashArray: null,
-				dashOffset: null,
-				fill: !1,
-				fillColor: null,
-				fillOpacity: .2,
-				fillRule: "evenodd",
-				interactive: !0,
-				bubblingMouseEvents: !0
-			},
-			beforeAdd: function(t) {
-				this._renderer = t.getRenderer(this)
-			},
-			onAdd: function() {
-				this._renderer._initPath(this), this._reset(), this._renderer._addPath(this)
-			},
-			onRemove: function() {
-				this._renderer._removePath(this)
-			},
-			redraw: function() {
-				return this._map && this._renderer._updatePath(this), this
-			},
-			setStyle: function(t) {
-				return c(this, t), this._renderer && (this._renderer._updateStyle(this), this.options
-					.stroke && t && Object.prototype.hasOwnProperty.call(t, "weight") && this
-					._updateBounds()), this
-			},
-			bringToFront: function() {
-				return this._renderer && this._renderer._bringToFront(this), this
-			},
-			bringToBack: function() {
-				return this._renderer && this._renderer._bringToBack(this), this
-			},
-			getElement: function() {
-				return this._path
-			},
-			_reset: function() {
-				this._project(), this._update()
-			},
-			_clickTolerance: function() {
-				return (this.options.stroke ? this.options.weight / 2 : 0) + this._renderer.options
-					.tolerance
-			}
-		}),
-		Ae = Be.extend({
-			options: {
-				fill: !0,
-				radius: 10
-			},
-			initialize: function(t, i) {
-				c(this, i), this._latlng = j(t), this._radius = this.options.radius
-			},
-			setLatLng: function(t) {
-				var i = this._latlng;
-				return this._latlng = j(t), this.redraw(), this.fire("move", {
-					oldLatLng: i,
-					latlng: this._latlng
-				})
-			},
-			getLatLng: function() {
-				return this._latlng
-			},
-			setRadius: function(t) {
-				return this.options.radius = this._radius = t, this.redraw()
-			},
-			getRadius: function() {
-				return this._radius
-			},
-			setStyle: function(t) {
-				var i = t && t.radius || this._radius;
-				return Be.prototype.setStyle.call(this, t), this.setRadius(i), this
-			},
-			_project: function() {
-				this._point = this._map.latLngToLayerPoint(this._latlng), this._updateBounds()
-			},
-			_updateBounds: function() {
-				var t = this._radius,
-					i = this._radiusY || t,
-					e = this._clickTolerance(),
-					n = [t + e, i + e];
-				this._pxBounds = new I(this._point.subtract(n), this._point.add(n))
-			},
-			_update: function() {
-				this._map && this._updatePath()
-			},
-			_updatePath: function() {
-				this._renderer._updateCircle(this)
-			},
-			_empty: function() {
-				return this._radius && !this._renderer._bounds.intersects(this._pxBounds)
-			},
-			_containsPoint: function(t) {
-				return t.distanceTo(this._point) <= this._radius + this._clickTolerance()
-			}
-		});
-	var Ie = Ae.extend({
-		initialize: function(t, i, e) {
-			if ("number" == typeof i && (i = h({}, e, {
-					radius: i
-				})), c(this, i), this._latlng = j(t), isNaN(this.options.radius)) throw new Error(
-				"Circle radius cannot be NaN");
-			this._mRadius = this.options.radius
-		},
-		setRadius: function(t) {
-			return this._mRadius = t, this.redraw()
-		},
-		getRadius: function() {
-			return this._mRadius
-		},
-		getBounds: function() {
-			var t = [this._radius, this._radiusY || this._radius];
-			return new R(this._map.layerPointToLatLng(this._point.subtract(t)), this._map
-				.layerPointToLatLng(this._point.add(t)))
-		},
-		setStyle: Be.prototype.setStyle,
-		_project: function() {
-			var t, i, e, n, o, s, r, a, h = this._latlng.lng,
-				u = this._latlng.lat,
-				l = this._map,
-				c = l.options.crs;
-			c.distance === F.distance ? (t = Math.PI / 180, i = this._mRadius / F.R / t, e = l.project([
-					u + i, h
-				]), n = l.project([u - i, h]), o = e.add(n).divideBy(2), s = l.unproject(o).lat, r =
-				Math.acos((Math.cos(i * t) - Math.sin(u * t) * Math.sin(s * t)) / (Math.cos(u * t) *
-					Math.cos(s * t))) / t, !isNaN(r) && 0 !== r || (r = i / Math.cos(Math.PI / 180 *
-					u)), this._point = o.subtract(l.getPixelOrigin()), this._radius = isNaN(r) ? 0 :
-				o.x - l.project([s, h - r]).x, this._radiusY = o.y - e.y) : (a = c.unproject(c
-					.project(this._latlng).subtract([this._mRadius, 0])), this._point = l
-				.latLngToLayerPoint(this._latlng), this._radius = this._point.x - l
-				.latLngToLayerPoint(a).x), this._updateBounds()
-		}
-	});
-	var Oe = Be.extend({
-		options: {
-			smoothFactor: 1,
-			noClip: !1
-		},
-		initialize: function(t, i) {
-			c(this, i), this._setLatLngs(t)
-		},
-		getLatLngs: function() {
-			return this._latlngs
-		},
-		setLatLngs: function(t) {
-			return this._setLatLngs(t), this.redraw()
-		},
-		isEmpty: function() {
-			return !this._latlngs.length
-		},
-		closestLayerPoint: function(t) {
-			for (var i, e, n = 1 / 0, o = null, s = de, r = 0, a = this._parts.length; r < a; r++)
-				for (var h = this._parts[r], u = 1, l = h.length; u < l; u++) {
-					var c = s(t, i = h[u - 1], e = h[u], !0);
-					c < n && (n = c, o = s(t, i, e))
-				}
-			return o && (o.distance = Math.sqrt(n)), o
-		},
-		getCenter: function() {
-			if (!this._map) throw new Error("Must add layer to map before using getCenter()");
-			var t, i, e, n, o, s, r, a = this._rings[0],
-				h = a.length;
-			if (!h) return null;
-			for (i = t = 0; t < h - 1; t++) i += a[t].distanceTo(a[t + 1]) / 2;
-			if (0 === i) return this._map.layerPointToLatLng(a[0]);
-			for (n = t = 0; t < h - 1; t++)
-				if (o = a[t], s = a[t + 1], i < (n += e = o.distanceTo(s))) return r = (n - i) / e, this
-					._map.layerPointToLatLng([s.x - r * (s.x - o.x), s.y - r * (s.y - o.y)])
-		},
-		getBounds: function() {
-			return this._bounds
-		},
-		addLatLng: function(t, i) {
-			return i = i || this._defaultShape(), t = j(t), i.push(t), this._bounds.extend(t), this
-				.redraw()
-		},
-		_setLatLngs: function(t) {
-			this._bounds = new R, this._latlngs = this._convertLatLngs(t)
-		},
-		_defaultShape: function() {
-			return pe(this._latlngs) ? this._latlngs : this._latlngs[0]
-		},
-		_convertLatLngs: function(t) {
-			for (var i = [], e = pe(t), n = 0, o = t.length; n < o; n++) e ? (i[n] = j(t[n]), this
-				._bounds.extend(i[n])) : i[n] = this._convertLatLngs(t[n]);
-			return i
-		},
-		_project: function() {
-			var t = new I;
-			this._rings = [], this._projectLatlngs(this._latlngs, this._rings, t), this._bounds
-			.isValid() && t.isValid() && (this._rawPxBounds = t, this._updateBounds())
-		},
-		_updateBounds: function() {
-			var t = this._clickTolerance(),
-				i = new k(t, t);
-			this._pxBounds = new I([this._rawPxBounds.min.subtract(i), this._rawPxBounds.max.add(i)])
-		},
-		_projectLatlngs: function(t, i, e) {
-			var n, o, s = t[0] instanceof D,
-				r = t.length;
-			if (s) {
-				for (o = [], n = 0; n < r; n++) o[n] = this._map.latLngToLayerPoint(t[n]), e.extend(o[
-					n]);
-				i.push(o)
-			} else
-				for (n = 0; n < r; n++) this._projectLatlngs(t[n], i, e)
-		},
-		_clipPoints: function() {
-			var t = this._renderer._bounds;
-			if (this._parts = [], this._pxBounds && this._pxBounds.intersects(t))
-				if (this.options.noClip) this._parts = this._rings;
-				else
-					for (var i, e, n, o, s = this._parts, r = 0, a = 0, h = this._rings.length; r <
-						h; r++)
-						for (i = 0, e = (o = this._rings[r]).length; i < e - 1; i++)(n = le(o[i], o[i +
-							1], t, i, !0)) && (s[a] = s[a] || [], s[a].push(n[0]), n[1] === o[i +
-							1] && i !== e - 2 || (s[a].push(n[1]), a++))
-		},
-		_simplifyPoints: function() {
-			for (var t = this._parts, i = this.options.smoothFactor, e = 0, n = t.length; e < n; e++) t[
-				e] = he(t[e], i)
-		},
-		_update: function() {
-			this._map && (this._clipPoints(), this._simplifyPoints(), this._updatePath())
-		},
-		_updatePath: function() {
-			this._renderer._updatePoly(this)
-		},
-		_containsPoint: function(t, i) {
-			var e, n, o, s, r, a, h = this._clickTolerance();
-			if (!this._pxBounds || !this._pxBounds.contains(t)) return !1;
-			for (e = 0, s = this._parts.length; e < s; e++)
-				for (n = 0, o = (r = (a = this._parts[e]).length) - 1; n < r; o = n++)
-					if ((i || 0 !== n) && ue(t, a[o], a[n]) <= h) return !0;
-			return !1
-		}
-	});
-	Oe._flat = me;
-	var Re = Oe.extend({
-		options: {
-			fill: !0
-		},
-		isEmpty: function() {
-			return !this._latlngs.length || !this._latlngs[0].length
-		},
-		getCenter: function() {
-			if (!this._map) throw new Error("Must add layer to map before using getCenter()");
-			var t, i, e, n, o, s, r, a, h, u = this._rings[0],
-				l = u.length;
-			if (!l) return null;
-			for (t = s = r = a = 0, i = l - 1; t < l; i = t++) e = u[t], n = u[i], o = e.y * n.x - n.y *
-				e.x, r += (e.x + n.x) * o, a += (e.y + n.y) * o, s += 3 * o;
-			return h = 0 === s ? u[0] : [r / s, a / s], this._map.layerPointToLatLng(h)
-		},
-		_convertLatLngs: function(t) {
-			var i = Oe.prototype._convertLatLngs.call(this, t),
-				e = i.length;
-			return 2 <= e && i[0] instanceof D && i[0].equals(i[e - 1]) && i.pop(), i
-		},
-		_setLatLngs: function(t) {
-			Oe.prototype._setLatLngs.call(this, t), pe(this._latlngs) && (this._latlngs = [this
-				._latlngs])
-		},
-		_defaultShape: function() {
-			return pe(this._latlngs[0]) ? this._latlngs[0] : this._latlngs[0][0]
-		},
-		_clipPoints: function() {
-			var t = this._renderer._bounds,
-				i = this.options.weight,
-				e = new k(i, i),
-				t = new I(t.min.subtract(e), t.max.add(e));
-			if (this._parts = [], this._pxBounds && this._pxBounds.intersects(t))
-				if (this.options.noClip) this._parts = this._rings;
-				else
-					for (var n, o = 0, s = this._rings.length; o < s; o++)(n = ge(this._rings[o], t, !
-						0)).length && this._parts.push(n)
-		},
-		_updatePath: function() {
-			this._renderer._updatePoly(this, !0)
-		},
-		_containsPoint: function(t) {
-			var i, e, n, o, s, r, a, h, u = !1;
-			if (!this._pxBounds || !this._pxBounds.contains(t)) return !1;
-			for (o = 0, a = this._parts.length; o < a; o++)
-				for (s = 0, r = (h = (i = this._parts[o]).length) - 1; s < h; r = s++) e = i[s], n = i[
-						r], e.y > t.y != n.y > t.y && t.x < (n.x - e.x) * (t.y - e.y) / (n.y - e.y) + e
-					.x && (u = !u);
-			return u || Oe.prototype._containsPoint.call(this, t, !0)
-		}
-	});
-	var Ne = Ce.extend({
-		initialize: function(t, i) {
-			c(this, i), this._layers = {}, t && this.addData(t)
-		},
-		addData: function(t) {
-			var i, e, n, o = g(t) ? t : t.features;
-			if (o) {
-				for (i = 0, e = o.length; i < e; i++)((n = o[i]).geometries || n.geometry || n
-					.features || n.coordinates) && this.addData(n);
-				return this
-			}
-			var s = this.options;
-			if (s.filter && !s.filter(t)) return this;
-			var r = De(t, s);
-			return r ? (r.feature = qe(t), r.defaultOptions = r.options, this.resetStyle(r), s
-				.onEachFeature && s.onEachFeature(t, r), this.addLayer(r)) : this
-		},
-		resetStyle: function(t) {
-			return void 0 === t ? this.eachLayer(this.resetStyle, this) : (t.options = h({}, t
-				.defaultOptions), this._setLayerStyle(t, this.options.style), this)
-		},
-		setStyle: function(i) {
-			return this.eachLayer(function(t) {
-				this._setLayerStyle(t, i)
-			}, this)
-		},
-		_setLayerStyle: function(t, i) {
-			t.setStyle && ("function" == typeof i && (i = i(t.feature)), t.setStyle(i))
-		}
-	});
-
-	function De(t, i) {
-		var e, n, o, s, r = "Feature" === t.type ? t.geometry : t,
-			a = r ? r.coordinates : null,
-			h = [],
-			u = i && i.pointToLayer,
-			l = i && i.coordsToLatLng || We;
-		if (!a && !r) return null;
-		switch (r.type) {
-			case "Point":
-				return je(u, t, e = l(a), i);
-			case "MultiPoint":
-				for (o = 0, s = a.length; o < s; o++) e = l(a[o]), h.push(je(u, t, e, i));
-				return new Ce(h);
-			case "LineString":
-			case "MultiLineString":
-				return n = He(a, "LineString" === r.type ? 0 : 1, l), new Oe(n, i);
-			case "Polygon":
-			case "MultiPolygon":
-				return n = He(a, "Polygon" === r.type ? 1 : 2, l), new Re(n, i);
-			case "GeometryCollection":
-				for (o = 0, s = r.geometries.length; o < s; o++) {
-					var c = De({
-						geometry: r.geometries[o],
-						type: "Feature",
-						properties: t.properties
-					}, i);
-					c && h.push(c)
-				}
-				return new Ce(h);
-			default:
-				throw new Error("Invalid GeoJSON object.")
-		}
-	}
-
-	function je(t, i, e, n) {
-		return t ? t(i, e) : new ke(e, n && n.markersInheritOptions && n)
-	}
-
-	function We(t) {
-		return new D(t[1], t[0], t[2])
-	}
-
-	function He(t, i, e) {
-		for (var n, o = [], s = 0, r = t.length; s < r; s++) n = i ? He(t[s], i - 1, e) : (e || We)(t[s]), o.push(
-		n);
-		return o
-	}
-
-	function Fe(t, i) {
-		return i = "number" == typeof i ? i : 6, void 0 !== t.alt ? [r(t.lng, i), r(t.lat, i), r(t.alt, i)] : [r(t
-			.lng, i), r(t.lat, i)]
-	}
-
-	function Ue(t, i, e, n) {
-		for (var o = [], s = 0, r = t.length; s < r; s++) o.push(i ? Ue(t[s], i - 1, e, n) : Fe(t[s], n));
-		return !i && e && o.push(o[0]), o
-	}
-
-	function Ve(t, i) {
-		return t.feature ? h({}, t.feature, {
-			geometry: i
-		}) : qe(i)
-	}
-
-	function qe(t) {
-		return "Feature" === t.type || "FeatureCollection" === t.type ? t : {
-			type: "Feature",
-			properties: {},
-			geometry: t
-		}
-	}
-	var Ge = {
-		toGeoJSON: function(t) {
-			return Ve(this, {
-				type: "Point",
-				coordinates: Fe(this.getLatLng(), t)
-			})
-		}
-	};
-
-	function Ke(t, i) {
-		return new Ne(t, i)
-	}
-	ke.include(Ge), Ie.include(Ge), Ae.include(Ge), Oe.include({
-		toGeoJSON: function(t) {
-			var i = !pe(this._latlngs);
-			return Ve(this, {
-				type: (i ? "Multi" : "") + "LineString",
-				coordinates: Ue(this._latlngs, i ? 1 : 0, !1, t)
-			})
-		}
-	}), Re.include({
-		toGeoJSON: function(t) {
-			var i = !pe(this._latlngs),
-				e = i && !pe(this._latlngs[0]),
-				n = Ue(this._latlngs, e ? 2 : i ? 1 : 0, !0, t);
-			return i || (n = [n]), Ve(this, {
-				type: (e ? "Multi" : "") + "Polygon",
-				coordinates: n
-			})
-		}
-	}), ze.include({
-		toMultiPoint: function(i) {
-			var e = [];
-			return this.eachLayer(function(t) {
-				e.push(t.toGeoJSON(i).geometry.coordinates)
-			}), Ve(this, {
-				type: "MultiPoint",
-				coordinates: e
-			})
-		},
-		toGeoJSON: function(n) {
-			var t = this.feature && this.feature.geometry && this.feature.geometry.type;
-			if ("MultiPoint" === t) return this.toMultiPoint(n);
-			var o = "GeometryCollection" === t,
-				s = [];
-			return this.eachLayer(function(t) {
-				var i, e;
-				t.toGeoJSON && (i = t.toGeoJSON(n), o ? s.push(i.geometry) :
-					"FeatureCollection" === (e = qe(i)).type ? s.push.apply(s, e.features) :
-					s.push(e))
-			}), o ? Ve(this, {
-				geometries: s,
-				type: "GeometryCollection"
-			}) : {
-				type: "FeatureCollection",
-				features: s
-			}
-		}
-	});
-	var Ye = Ke,
-		Xe = Me.extend({
-			options: {
-				opacity: 1,
-				alt: "",
-				interactive: !1,
-				crossOrigin: !1,
-				errorOverlayUrl: "",
-				zIndex: 1,
-				className: ""
-			},
-			initialize: function(t, i, e) {
-				this._url = t, this._bounds = N(i), c(this, e)
-			},
-			onAdd: function() {
-				this._image || (this._initImage(), this.options.opacity < 1 && this._updateOpacity()), this
-					.options.interactive && (ci(this._image, "leaflet-interactive"), this
-						.addInteractiveTarget(this._image)), this.getPane().appendChild(this._image), this
-					._reset()
-			},
-			onRemove: function() {
-				ri(this._image), this.options.interactive && this.removeInteractiveTarget(this._image)
-			},
-			setOpacity: function(t) {
-				return this.options.opacity = t, this._image && this._updateOpacity(), this
-			},
-			setStyle: function(t) {
-				return t.opacity && this.setOpacity(t.opacity), this
-			},
-			bringToFront: function() {
-				return this._map && hi(this._image), this
-			},
-			bringToBack: function() {
-				return this._map && ui(this._image), this
-			},
-			setUrl: function(t) {
-				return this._url = t, this._image && (this._image.src = t), this
-			},
-			setBounds: function(t) {
-				return this._bounds = N(t), this._map && this._reset(), this
-			},
-			getEvents: function() {
-				var t = {
-					zoom: this._reset,
-					viewreset: this._reset
-				};
-				return this._zoomAnimated && (t.zoomanim = this._animateZoom), t
-			},
-			setZIndex: function(t) {
-				return this.options.zIndex = t, this._updateZIndex(), this
-			},
-			getBounds: function() {
-				return this._bounds
-			},
-			getElement: function() {
-				return this._image
-			},
-			_initImage: function() {
-				var t = "IMG" === this._url.tagName,
-					i = this._image = t ? this._url : si("img");
-				ci(i, "leaflet-image-layer"), this._zoomAnimated && ci(i, "leaflet-zoom-animated"), this
-					.options.className && ci(i, this.options.className), i.onselectstart = a, i
-					.onmousemove = a, i.onload = p(this.fire, this, "load"), i.onerror = p(this
-						._overlayOnError, this, "error"), !this.options.crossOrigin && "" !== this.options
-					.crossOrigin || (i.crossOrigin = !0 === this.options.crossOrigin ? "" : this.options
-						.crossOrigin), this.options.zIndex && this._updateZIndex(), t ? this._url = i.src :
-					(i.src = this._url, i.alt = this.options.alt)
-			},
-			_animateZoom: function(t) {
-				var i = this._map.getZoomScale(t.zoom),
-					e = this._map._latLngBoundsToNewLayerBounds(this._bounds, t.zoom, t.center).min;
-				gi(this._image, e, i)
-			},
-			_reset: function() {
-				var t = this._image,
-					i = new I(this._map.latLngToLayerPoint(this._bounds.getNorthWest()), this._map
-						.latLngToLayerPoint(this._bounds.getSouthEast())),
-					e = i.getSize();
-				vi(t, i.min), t.style.width = e.x + "px", t.style.height = e.y + "px"
-			},
-			_updateOpacity: function() {
-				mi(this._image, this.options.opacity)
-			},
-			_updateZIndex: function() {
-				this._image && void 0 !== this.options.zIndex && null !== this.options.zIndex && (this
-					._image.style.zIndex = this.options.zIndex)
-			},
-			_overlayOnError: function() {
-				this.fire("error");
-				var t = this.options.errorOverlayUrl;
-				t && this._url !== t && (this._url = t, this._image.src = t)
-			}
-		}),
-		Je = Xe.extend({
-			options: {
-				autoplay: !0,
-				loop: !0,
-				keepAspectRatio: !0,
-				muted: !1
-			},
-			_initImage: function() {
-				var t = "VIDEO" === this._url.tagName,
-					i = this._image = t ? this._url : si("video");
-				if (ci(i, "leaflet-image-layer"), this._zoomAnimated && ci(i, "leaflet-zoom-animated"), this
-					.options.className && ci(i, this.options.className), i.onselectstart = a, i
-					.onmousemove = a, i.onloadeddata = p(this.fire, this, "load"), t) {
-					for (var e = i.getElementsByTagName("source"), n = [], o = 0; o < e.length; o++) n.push(
-						e[o].src);
-					this._url = 0 < e.length ? n : [i.src]
-				} else {
-					g(this._url) || (this._url = [this._url]), !this.options.keepAspectRatio && Object
-						.prototype.hasOwnProperty.call(i.style, "objectFit") && (i.style.objectFit =
-						"fill"), i.autoplay = !!this.options.autoplay, i.loop = !!this.options.loop, i
-						.muted = !!this.options.muted;
-					for (var s = 0; s < this._url.length; s++) {
-						var r = si("source");
-						r.src = this._url[s], i.appendChild(r)
-					}
-				}
-			}
-		});
-	var $e = Xe.extend({
-		_initImage: function() {
-			var t = this._image = this._url;
-			ci(t, "leaflet-image-layer"), this._zoomAnimated && ci(t, "leaflet-zoom-animated"), this
-				.options.className && ci(t, this.options.className), t.onselectstart = a, t
-				.onmousemove = a
-		}
-	});
-	var Qe = Me.extend({
-			options: {
-				offset: [0, 7],
-				className: "",
-				pane: "popupPane"
-			},
-			initialize: function(t, i) {
-				c(this, t), this._source = i
-			},
-			onAdd: function(t) {
-				this._zoomAnimated = t._zoomAnimated, this._container || this._initLayout(), t
-					._fadeAnimated && mi(this._container, 0), clearTimeout(this._removeTimeout), this
-					.getPane().appendChild(this._container), this.update(), t._fadeAnimated && mi(this
-						._container, 1), this.bringToFront()
-			},
-			onRemove: function(t) {
-				t._fadeAnimated ? (mi(this._container, 0), this._removeTimeout = setTimeout(p(ri, void 0,
-					this._container), 200)) : ri(this._container)
-			},
-			getLatLng: function() {
-				return this._latlng
-			},
-			setLatLng: function(t) {
-				return this._latlng = j(t), this._map && (this._updatePosition(), this._adjustPan()), this
-			},
-			getContent: function() {
-				return this._content
-			},
-			setContent: function(t) {
-				return this._content = t, this.update(), this
-			},
-			getElement: function() {
-				return this._container
-			},
-			update: function() {
-				this._map && (this._container.style.visibility = "hidden", this._updateContent(), this
-					._updateLayout(), this._updatePosition(), this._container.style.visibility = "",
-					this._adjustPan())
-			},
-			getEvents: function() {
-				var t = {
-					zoom: this._updatePosition,
-					viewreset: this._updatePosition
-				};
-				return this._zoomAnimated && (t.zoomanim = this._animateZoom), t
-			},
-			isOpen: function() {
-				return !!this._map && this._map.hasLayer(this)
-			},
-			bringToFront: function() {
-				return this._map && hi(this._container), this
-			},
-			bringToBack: function() {
-				return this._map && ui(this._container), this
-			},
-			_prepareOpen: function(t, i, e) {
-				if (i instanceof Me || (e = i, i = t), i instanceof Ce)
-					for (var n in t._layers) {
-						i = t._layers[n];
-						break
-					}
-				if (!e)
-					if (i.getCenter) e = i.getCenter();
-					else {
-						if (!i.getLatLng) throw new Error("Unable to get source layer LatLng.");
-						e = i.getLatLng()
-					} return this._source = i, this.update(), e
-			},
-			_updateContent: function() {
-				if (this._content) {
-					var t = this._contentNode,
-						i = "function" == typeof this._content ? this._content(this._source || this) : this
-						._content;
-					if ("string" == typeof i) t.innerHTML = i;
-					else {
-						for (; t.hasChildNodes();) t.removeChild(t.firstChild);
-						t.appendChild(i)
-					}
-					this.fire("contentupdate")
-				}
-			},
-			_updatePosition: function() {
-				var t, i, e, n, o;
-				this._map && (t = this._map.latLngToLayerPoint(this._latlng), i = A(this.options.offset),
-					e = this._getAnchor(), this._zoomAnimated ? vi(this._container, t.add(e)) : i = i
-					.add(t).add(e), n = this._containerBottom = -i.y, o = this._containerLeft = -Math
-					.round(this._containerWidth / 2) + i.x, this._container.style.bottom = n + "px",
-					this._container.style.left = o + "px")
-			},
-			_getAnchor: function() {
-				return [0, 0]
-			}
-		}),
-		tn = Qe.extend({
-			options: {
-				maxWidth: 300,
-				minWidth: 50,
-				maxHeight: null,
-				autoPan: !0,
-				autoPanPaddingTopLeft: null,
-				autoPanPaddingBottomRight: null,
-				autoPanPadding: [5, 5],
-				keepInView: !1,
-				closeButton: !0,
-				autoClose: !0,
-				closeOnEscapeKey: !0,
-				className: ""
-			},
-			openOn: function(t) {
-				return t.openPopup(this), this
-			},
-			onAdd: function(t) {
-				Qe.prototype.onAdd.call(this, t), t.fire("popupopen", {
-					popup: this
-				}), this._source && (this._source.fire("popupopen", {
-					popup: this
-				}, !0), this._source instanceof Be || this._source.on("preclick", Ai))
-			},
-			onRemove: function(t) {
-				Qe.prototype.onRemove.call(this, t), t.fire("popupclose", {
-					popup: this
-				}), this._source && (this._source.fire("popupclose", {
-					popup: this
-				}, !0), this._source instanceof Be || this._source.off("preclick", Ai))
-			},
-			getEvents: function() {
-				var t = Qe.prototype.getEvents.call(this);
-				return (void 0 !== this.options.closeOnClick ? this.options.closeOnClick : this._map.options
-					.closePopupOnClick) && (t.preclick = this._close), this.options.keepInView && (t
-					.moveend = this._adjustPan), t
-			},
-			_close: function() {
-				this._map && this._map.closePopup(this)
-			},
-			_initLayout: function() {
-				var t, i = "leaflet-popup",
-					e = this._container = si("div", i + " " + (this.options.className || "") +
-						" leaflet-zoom-animated"),
-					n = this._wrapper = si("div", i + "-content-wrapper", e);
-				this._contentNode = si("div", i + "-content", n), Oi(e), Ii(this._contentNode), zi(e,
-						"contextmenu", Ai), this._tipContainer = si("div", i + "-tip-container", e), this
-					._tip = si("div", i + "-tip", this._tipContainer), this.options.closeButton && ((t =
-							this._closeButton = si("a", i + "-close-button", e)).href = "#close", t
-						.innerHTML = "&#215;", zi(t, "click", this._onCloseButtonClick, this))
-			},
-			_updateLayout: function() {
-				var t = this._contentNode,
-					i = t.style;
-				i.width = "", i.whiteSpace = "nowrap";
-				var e = t.offsetWidth,
-					e = Math.min(e, this.options.maxWidth);
-				e = Math.max(e, this.options.minWidth), i.width = e + 1 + "px", i.whiteSpace = "", i
-					.height = "";
-				var n = t.offsetHeight,
-					o = this.options.maxHeight,
-					s = "leaflet-popup-scrolled";
-				o && o < n ? (i.height = o + "px", ci(t, s)) : _i(t, s), this._containerWidth = this
-					._container.offsetWidth
-			},
-			_animateZoom: function(t) {
-				var i = this._map._latLngToNewLayerPoint(this._latlng, t.zoom, t.center),
-					e = this._getAnchor();
-				vi(this._container, i.add(e))
-			},
-			_adjustPan: function() {
-				var t, i, e, n, o, s, r, a, h, u, l, c;
-				this.options.autoPan && (this._map._panAnim && this._map._panAnim.stop(), t = this._map, i =
-					parseInt(oi(this._container, "marginBottom"), 10) || 0, e = this._container
-					.offsetHeight + i, n = this._containerWidth, (o = new k(this._containerLeft, -e -
-						this._containerBottom))._add(yi(this._container)), s = t
-					.layerPointToContainerPoint(o), r = A(this.options.autoPanPadding), a = A(this
-						.options.autoPanPaddingTopLeft || r), h = A(this.options
-						.autoPanPaddingBottomRight || r), u = t.getSize(), c = l = 0, s.x + n + h.x > u
-					.x && (l = s.x + n - u.x + h.x), s.x - l - a.x < 0 && (l = s.x - a.x), s.y + e + h
-					.y > u.y && (c = s.y + e - u.y + h.y), s.y - c - a.y < 0 && (c = s.y - a.y), (l ||
-						c) && t.fire("autopanstart").panBy([l, c]))
-			},
-			_onCloseButtonClick: function(t) {
-				this._close(), Ni(t)
-			},
-			_getAnchor: function() {
-				return A(this._source && this._source._getPopupAnchor ? this._source._getPopupAnchor() : [0,
-					0
-				])
-			}
-		});
-	Ki.mergeOptions({
-		closePopupOnClick: !0
-	}), Ki.include({
-		openPopup: function(t, i, e) {
-			return t instanceof tn || (t = new tn(e).setContent(t)), i && t.setLatLng(i), this.hasLayer(
-				t) ? this : (this._popup && this._popup.options.autoClose && this.closePopup(), this
-				._popup = t, this.addLayer(t))
-		},
-		closePopup: function(t) {
-			return t && t !== this._popup || (t = this._popup, this._popup = null), t && this
-				.removeLayer(t), this
-		}
-	}), Me.include({
-		bindPopup: function(t, i) {
-			return t instanceof tn ? (c(t, i), (this._popup = t)._source = this) : (this._popup && !i ||
-					(this._popup = new tn(i, this)), this._popup.setContent(t)), this
-				._popupHandlersAdded || (this.on({
-					click: this._openPopup,
-					keypress: this._onKeyPress,
-					remove: this.closePopup,
-					move: this._movePopup
-				}), this._popupHandlersAdded = !0), this
-		},
-		unbindPopup: function() {
-			return this._popup && (this.off({
-				click: this._openPopup,
-				keypress: this._onKeyPress,
-				remove: this.closePopup,
-				move: this._movePopup
-			}), this._popupHandlersAdded = !1, this._popup = null), this
-		},
-		openPopup: function(t, i) {
-			return this._popup && this._map && (i = this._popup._prepareOpen(this, t, i), this._map
-				.openPopup(this._popup, i)), this
-		},
-		closePopup: function() {
-			return this._popup && this._popup._close(), this
-		},
-		togglePopup: function(t) {
-			return this._popup && (this._popup._map ? this.closePopup() : this.openPopup(t)), this
-		},
-		isPopupOpen: function() {
-			return !!this._popup && this._popup.isOpen()
-		},
-		setPopupContent: function(t) {
-			return this._popup && this._popup.setContent(t), this
-		},
-		getPopup: function() {
-			return this._popup
-		},
-		_openPopup: function(t) {
-			var i = t.layer || t.target;
-			this._popup && this._map && (Ni(t), i instanceof Be ? this.openPopup(t.layer || t.target, t
-					.latlng) : this._map.hasLayer(this._popup) && this._popup._source === i ? this
-				.closePopup() : this.openPopup(i, t.latlng))
-		},
-		_movePopup: function(t) {
-			this._popup.setLatLng(t.latlng)
-		},
-		_onKeyPress: function(t) {
-			13 === t.originalEvent.keyCode && this._openPopup(t)
-		}
-	});
-	var en = Qe.extend({
-		options: {
-			pane: "tooltipPane",
-			offset: [0, 0],
-			direction: "auto",
-			permanent: !1,
-			sticky: !1,
-			interactive: !1,
-			opacity: .9
-		},
-		onAdd: function(t) {
-			Qe.prototype.onAdd.call(this, t), this.setOpacity(this.options.opacity), t.fire(
-				"tooltipopen", {
-					tooltip: this
-				}), this._source && this._source.fire("tooltipopen", {
-				tooltip: this
-			}, !0)
-		},
-		onRemove: function(t) {
-			Qe.prototype.onRemove.call(this, t), t.fire("tooltipclose", {
-				tooltip: this
-			}), this._source && this._source.fire("tooltipclose", {
-				tooltip: this
-			}, !0)
-		},
-		getEvents: function() {
-			var t = Qe.prototype.getEvents.call(this);
-			return bt && !this.options.permanent && (t.preclick = this._close), t
-		},
-		_close: function() {
-			this._map && this._map.closeTooltip(this)
-		},
-		_initLayout: function() {
-			var t = "leaflet-tooltip " + (this.options.className || "") + " leaflet-zoom-" + (this
-				._zoomAnimated ? "animated" : "hide");
-			this._contentNode = this._container = si("div", t)
-		},
-		_updateLayout: function() {},
-		_adjustPan: function() {},
-		_setPosition: function(t) {
-			var i, e = this._map,
-				n = this._container,
-				o = e.latLngToContainerPoint(e.getCenter()),
-				s = e.layerPointToContainerPoint(t),
-				r = this.options.direction,
-				a = n.offsetWidth,
-				h = n.offsetHeight,
-				u = A(this.options.offset),
-				l = this._getAnchor(),
-				c = "top" === r ? (i = a / 2, h) : "bottom" === r ? (i = a / 2, 0) : (i = "center" ===
-					r ? a / 2 : "right" === r ? 0 : "left" === r ? a : s.x < o.x ? (r = "right", 0) : (
-						r = "left", a + 2 * (u.x + l.x)), h / 2);
-			t = t.subtract(A(i, c, !0)).add(u).add(l), _i(n, "leaflet-tooltip-right"), _i(n,
-				"leaflet-tooltip-left"), _i(n, "leaflet-tooltip-top"), _i(n,
-				"leaflet-tooltip-bottom"), ci(n, "leaflet-tooltip-" + r), vi(n, t)
-		},
-		_updatePosition: function() {
-			var t = this._map.latLngToLayerPoint(this._latlng);
-			this._setPosition(t)
-		},
-		setOpacity: function(t) {
-			this.options.opacity = t, this._container && mi(this._container, t)
-		},
-		_animateZoom: function(t) {
-			var i = this._map._latLngToNewLayerPoint(this._latlng, t.zoom, t.center);
-			this._setPosition(i)
-		},
-		_getAnchor: function() {
-			return A(this._source && this._source._getTooltipAnchor && !this.options.sticky ? this
-				._source._getTooltipAnchor() : [0, 0])
-		}
-	});
-	Ki.include({
-		openTooltip: function(t, i, e) {
-			return t instanceof en || (t = new en(e).setContent(t)), i && t.setLatLng(i), this.hasLayer(
-				t) ? this : this.addLayer(t)
-		},
-		closeTooltip: function(t) {
-			return t && this.removeLayer(t), this
-		}
-	}), Me.include({
-		bindTooltip: function(t, i) {
-			return t instanceof en ? (c(t, i), (this._tooltip = t)._source = this) : (this._tooltip && !
-					i || (this._tooltip = new en(i, this)), this._tooltip.setContent(t)), this
-				._initTooltipInteractions(), this._tooltip.options.permanent && this._map && this._map
-				.hasLayer(this) && this.openTooltip(), this
-		},
-		unbindTooltip: function() {
-			return this._tooltip && (this._initTooltipInteractions(!0), this.closeTooltip(), this
-				._tooltip = null), this
-		},
-		_initTooltipInteractions: function(t) {
-			var i, e;
-			!t && this._tooltipHandlersAdded || (i = t ? "off" : "on", e = {
-					remove: this.closeTooltip,
-					move: this._moveTooltip
-				}, this._tooltip.options.permanent ? e.add = this._openTooltip : (e.mouseover = this
-					._openTooltip, e.mouseout = this.closeTooltip, this._tooltip.options.sticky && (
-						e.mousemove = this._moveTooltip), bt && (e.click = this._openTooltip)),
-				this[i](e), this._tooltipHandlersAdded = !t)
-		},
-		openTooltip: function(t, i) {
-			return this._tooltip && this._map && (i = this._tooltip._prepareOpen(this, t, i), this._map
-				.openTooltip(this._tooltip, i), this._tooltip.options.interactive && this._tooltip
-				._container && (ci(this._tooltip._container, "leaflet-clickable"), this
-					.addInteractiveTarget(this._tooltip._container))), this
-		},
-		closeTooltip: function() {
-			return this._tooltip && (this._tooltip._close(), this._tooltip.options.interactive && this
-				._tooltip._container && (_i(this._tooltip._container, "leaflet-clickable"), this
-					.removeInteractiveTarget(this._tooltip._container))), this
-		},
-		toggleTooltip: function(t) {
-			return this._tooltip && (this._tooltip._map ? this.closeTooltip() : this.openTooltip(t)),
-				this
-		},
-		isTooltipOpen: function() {
-			return this._tooltip.isOpen()
-		},
-		setTooltipContent: function(t) {
-			return this._tooltip && this._tooltip.setContent(t), this
-		},
-		getTooltip: function() {
-			return this._tooltip
-		},
-		_openTooltip: function(t) {
-			var i = t.layer || t.target;
-			this._tooltip && this._map && this.openTooltip(i, this._tooltip.options.sticky ? t.latlng :
-				void 0)
-		},
-		_moveTooltip: function(t) {
-			var i, e, n = t.latlng;
-			this._tooltip.options.sticky && t.originalEvent && (i = this._map
-					.mouseEventToContainerPoint(t.originalEvent), e = this._map
-					.containerPointToLayerPoint(i), n = this._map.layerPointToLatLng(e)), this._tooltip
-				.setLatLng(n)
-		}
-	});
-	var nn = Se.extend({
-		options: {
-			iconSize: [12, 12],
-			html: !1,
-			bgPos: null,
-			className: "leaflet-div-icon"
-		},
-		createIcon: function(t) {
-			var i, e = t && "DIV" === t.tagName ? t : document.createElement("div"),
-				n = this.options;
-			return n.html instanceof Element ? (ai(e), e.appendChild(n.html)) : e.innerHTML = !1 !== n
-				.html ? n.html : "", n.bgPos && (i = A(n.bgPos), e.style.backgroundPosition = -i.x +
-					"px " + -i.y + "px"), this._setIconStyles(e, "icon"), e
-		},
-		createShadow: function() {
-			return null
-		}
-	});
-	Se.Default = Ze;
-	var on = Me.extend({
-		options: {
-			tileSize: 256,
-			opacity: 1,
-			updateWhenIdle: yt,
-			updateWhenZooming: !0,
-			updateInterval: 200,
-			zIndex: 1,
-			bounds: null,
-			minZoom: 0,
-			maxZoom: void 0,
-			maxNativeZoom: void 0,
-			minNativeZoom: void 0,
-			noWrap: !1,
-			pane: "tilePane",
-			className: "",
-			keepBuffer: 2
-		},
-		initialize: function(t) {
-			c(this, t)
-		},
-		onAdd: function() {
-			this._initContainer(), this._levels = {}, this._tiles = {}, this._resetView(), this
-			._update()
-		},
-		beforeAdd: function(t) {
-			t._addZoomLimit(this)
-		},
-		onRemove: function(t) {
-			this._removeAllTiles(), ri(this._container), t._removeZoomLimit(this), this._container =
-				null, this._tileZoom = void 0
-		},
-		bringToFront: function() {
-			return this._map && (hi(this._container), this._setAutoZIndex(Math.max)), this
-		},
-		bringToBack: function() {
-			return this._map && (ui(this._container), this._setAutoZIndex(Math.min)), this
-		},
-		getContainer: function() {
-			return this._container
-		},
-		setOpacity: function(t) {
-			return this.options.opacity = t, this._updateOpacity(), this
-		},
-		setZIndex: function(t) {
-			return this.options.zIndex = t, this._updateZIndex(), this
-		},
-		isLoading: function() {
-			return this._loading
-		},
-		redraw: function() {
-			return this._map && (this._removeAllTiles(), this._update()), this
-		},
-		getEvents: function() {
-			var t = {
-				viewprereset: this._invalidateAll,
-				viewreset: this._resetView,
-				zoom: this._resetView,
-				moveend: this._onMoveEnd
-			};
-			return this.options.updateWhenIdle || (this._onMove || (this._onMove = n(this._onMoveEnd,
-				this.options.updateInterval, this)), t.move = this._onMove), this._zoomAnimated && (
-				t.zoomanim = this._animateZoom), t
-		},
-		createTile: function() {
-			return document.createElement("div")
-		},
-		getTileSize: function() {
-			var t = this.options.tileSize;
-			return t instanceof k ? t : new k(t, t)
-		},
-		_updateZIndex: function() {
-			this._container && void 0 !== this.options.zIndex && null !== this.options.zIndex && (this
-				._container.style.zIndex = this.options.zIndex)
-		},
-		_setAutoZIndex: function(t) {
-			for (var i, e = this.getPane().children, n = -t(-1 / 0, 1 / 0), o = 0, s = e.length; o <
-				s; o++) i = e[o].style.zIndex, e[o] !== this._container && i && (n = t(n, +i));
-			isFinite(n) && (this.options.zIndex = n + t(-1, 1), this._updateZIndex())
-		},
-		_updateOpacity: function() {
-			if (this._map && !it) {
-				mi(this._container, this.options.opacity);
-				var t = +new Date,
-					i = !1,
-					e = !1;
-				for (var n in this._tiles) {
-					var o, s = this._tiles[n];
-					s.current && s.loaded && (o = Math.min(1, (t - s.loaded) / 200), mi(s.el, o), o <
-						1 ? i = !0 : (s.active ? e = !0 : this._onOpaqueTile(s), s.active = !0))
-				}
-				e && !this._noPrune && this._pruneTiles(), i && (z(this._fadeFrame), this._fadeFrame =
-					M(this._updateOpacity, this))
-			}
-		},
-		_onOpaqueTile: a,
-		_initContainer: function() {
-			this._container || (this._container = si("div", "leaflet-layer " + (this.options
-					.className || "")), this._updateZIndex(), this.options.opacity < 1 && this
-				._updateOpacity(), this.getPane().appendChild(this._container))
-		},
-		_updateLevels: function() {
-			var t = this._tileZoom,
-				i = this.options.maxZoom;
-			if (void 0 !== t) {
-				for (var e in this._levels) e = Number(e), this._levels[e].el.children.length || e ===
-					t ? (this._levels[e].el.style.zIndex = i - Math.abs(t - e), this._onUpdateLevel(
-					e)) : (ri(this._levels[e].el), this._removeTilesAtZoom(e), this._onRemoveLevel(e),
-						delete this._levels[e]);
-				var n = this._levels[t],
-					o = this._map;
-				return n || ((n = this._levels[t] = {}).el = si("div",
-						"leaflet-tile-container leaflet-zoom-animated", this._container), n.el.style
-					.zIndex = i, n.origin = o.project(o.unproject(o.getPixelOrigin()), t).round(), n
-					.zoom = t, this._setZoomTransform(n, o.getCenter(), o.getZoom()), a(n.el
-						.offsetWidth), this._onCreateLevel(n)), this._level = n
-			}
-		},
-		_onUpdateLevel: a,
-		_onRemoveLevel: a,
-		_onCreateLevel: a,
-		_pruneTiles: function() {
-			if (this._map) {
-				var t, i, e, n = this._map.getZoom();
-				if (n > this.options.maxZoom || n < this.options.minZoom) this._removeAllTiles();
-				else {
-					for (t in this._tiles)(e = this._tiles[t]).retain = e.current;
-					for (t in this._tiles) {
-						(e = this._tiles[t]).current && !e.active && (i = e.coords, this._retainParent(i
-							.x, i.y, i.z, i.z - 5) || this._retainChildren(i.x, i.y, i.z, i.z +
-							2))
-					}
-					for (t in this._tiles) this._tiles[t].retain || this._removeTile(t)
-				}
-			}
-		},
-		_removeTilesAtZoom: function(t) {
-			for (var i in this._tiles) this._tiles[i].coords.z === t && this._removeTile(i)
-		},
-		_removeAllTiles: function() {
-			for (var t in this._tiles) this._removeTile(t)
-		},
-		_invalidateAll: function() {
-			for (var t in this._levels) ri(this._levels[t].el), this._onRemoveLevel(Number(t)),
-				delete this._levels[t];
-			this._removeAllTiles(), this._tileZoom = void 0
-		},
-		_retainParent: function(t, i, e, n) {
-			var o = Math.floor(t / 2),
-				s = Math.floor(i / 2),
-				r = e - 1,
-				a = new k(+o, +s);
-			a.z = +r;
-			var h = this._tileCoordsToKey(a),
-				u = this._tiles[h];
-			return u && u.active ? u.retain = !0 : (u && u.loaded && (u.retain = !0), n < r && this
-				._retainParent(o, s, r, n))
-		},
-		_retainChildren: function(t, i, e, n) {
-			for (var o = 2 * t; o < 2 * t + 2; o++)
-				for (var s = 2 * i; s < 2 * i + 2; s++) {
-					var r = new k(o, s);
-					r.z = e + 1;
-					var a = this._tileCoordsToKey(r),
-						h = this._tiles[a];
-					h && h.active ? h.retain = !0 : (h && h.loaded && (h.retain = !0), e + 1 < n && this
-						._retainChildren(o, s, e + 1, n))
-				}
-		},
-		_resetView: function(t) {
-			var i = t && (t.pinch || t.flyTo);
-			this._setView(this._map.getCenter(), this._map.getZoom(), i, i)
-		},
-		_animateZoom: function(t) {
-			this._setView(t.center, t.zoom, !0, t.noUpdate)
-		},
-		_clampZoom: function(t) {
-			var i = this.options;
-			return void 0 !== i.minNativeZoom && t < i.minNativeZoom ? i.minNativeZoom : void 0 !== i
-				.maxNativeZoom && i.maxNativeZoom < t ? i.maxNativeZoom : t
-		},
-		_setView: function(t, i, e, n) {
-			var o = Math.round(i),
-				o = void 0 !== this.options.maxZoom && o > this.options.maxZoom || void 0 !== this
-				.options.minZoom && o < this.options.minZoom ? void 0 : this._clampZoom(o),
-				s = this.options.updateWhenZooming && o !== this._tileZoom;
-			n && !s || (this._tileZoom = o, this._abortLoading && this._abortLoading(), this
-				._updateLevels(), this._resetGrid(), void 0 !== o && this._update(t), e || this
-				._pruneTiles(), this._noPrune = !!e), this._setZoomTransforms(t, i)
-		},
-		_setZoomTransforms: function(t, i) {
-			for (var e in this._levels) this._setZoomTransform(this._levels[e], t, i)
-		},
-		_setZoomTransform: function(t, i, e) {
-			var n = this._map.getZoomScale(e, t.zoom),
-				o = t.origin.multiplyBy(n).subtract(this._map._getNewPixelOrigin(i, e)).round();
-			vt ? gi(t.el, o, n) : vi(t.el, o)
-		},
-		_resetGrid: function() {
-			var t = this._map,
-				i = t.options.crs,
-				e = this._tileSize = this.getTileSize(),
-				n = this._tileZoom,
-				o = this._map.getPixelWorldBounds(this._tileZoom);
-			o && (this._globalTileRange = this._pxBoundsToTileRange(o)), this._wrapX = i.wrapLng && !
-				this.options.noWrap && [Math.floor(t.project([0, i.wrapLng[0]], n).x / e.x), Math.ceil(t
-					.project([0, i.wrapLng[1]], n).x / e.y)], this._wrapY = i.wrapLat && !this.options
-				.noWrap && [Math.floor(t.project([i.wrapLat[0], 0], n).y / e.x), Math.ceil(t.project([i
-					.wrapLat[1], 0
-				], n).y / e.y)]
-		},
-		_onMoveEnd: function() {
-			this._map && !this._map._animatingZoom && this._update()
-		},
-		_getTiledPixelBounds: function(t) {
-			var i = this._map,
-				e = i._animatingZoom ? Math.max(i._animateToZoom, i.getZoom()) : i.getZoom(),
-				n = i.getZoomScale(e, this._tileZoom),
-				o = i.project(t, this._tileZoom).floor(),
-				s = i.getSize().divideBy(2 * n);
-			return new I(o.subtract(s), o.add(s))
-		},
-		_update: function(t) {
-			var i = this._map;
-			if (i) {
-				var e = this._clampZoom(i.getZoom());
-				if (void 0 === t && (t = i.getCenter()), void 0 !== this._tileZoom) {
-					var n = this._getTiledPixelBounds(t),
-						o = this._pxBoundsToTileRange(n),
-						s = o.getCenter(),
-						r = [],
-						a = this.options.keepBuffer,
-						h = new I(o.getBottomLeft().subtract([a, -a]), o.getTopRight().add([a, -a]));
-					if (!(isFinite(o.min.x) && isFinite(o.min.y) && isFinite(o.max.x) && isFinite(o.max
-							.y))) throw new Error("Attempted to load an infinite number of tiles");
-					for (var u in this._tiles) {
-						var l = this._tiles[u].coords;
-						l.z === this._tileZoom && h.contains(new k(l.x, l.y)) || (this._tiles[u]
-							.current = !1)
-					}
-					if (1 < Math.abs(e - this._tileZoom)) this._setView(t, e);
-					else {
-						for (var c = o.min.y; c <= o.max.y; c++)
-							for (var _ = o.min.x; _ <= o.max.x; _++) {
-								var d, p = new k(_, c);
-								p.z = this._tileZoom, this._isValidTile(p) && ((d = this._tiles[this
-									._tileCoordsToKey(p)]) ? d.current = !0 : r.push(p))
-							}
-						if (r.sort(function(t, i) {
-								return t.distanceTo(s) - i.distanceTo(s)
-							}), 0 !== r.length) {
-							this._loading || (this._loading = !0, this.fire("loading"));
-							for (var m = document.createDocumentFragment(), _ = 0; _ < r.length; _++)
-								this._addTile(r[_], m);
-							this._level.el.appendChild(m)
-						}
-					}
-				}
-			}
-		},
-		_isValidTile: function(t) {
-			var i = this._map.options.crs;
-			if (!i.infinite) {
-				var e = this._globalTileRange;
-				if (!i.wrapLng && (t.x < e.min.x || t.x > e.max.x) || !i.wrapLat && (t.y < e.min.y || t
-						.y > e.max.y)) return !1
-			}
-			if (!this.options.bounds) return !0;
-			var n = this._tileCoordsToBounds(t);
-			return N(this.options.bounds).overlaps(n)
-		},
-		_keyToBounds: function(t) {
-			return this._tileCoordsToBounds(this._keyToTileCoords(t))
-		},
-		_tileCoordsToNwSe: function(t) {
-			var i = this._map,
-				e = this.getTileSize(),
-				n = t.scaleBy(e),
-				o = n.add(e);
-			return [i.unproject(n, t.z), i.unproject(o, t.z)]
-		},
-		_tileCoordsToBounds: function(t) {
-			var i = this._tileCoordsToNwSe(t),
-				e = new R(i[0], i[1]);
-			return this.options.noWrap || (e = this._map.wrapLatLngBounds(e)), e
-		},
-		_tileCoordsToKey: function(t) {
-			return t.x + ":" + t.y + ":" + t.z
-		},
-		_keyToTileCoords: function(t) {
-			var i = t.split(":"),
-				e = new k(+i[0], +i[1]);
-			return e.z = +i[2], e
-		},
-		_removeTile: function(t) {
-			var i = this._tiles[t];
-			i && (ri(i.el), delete this._tiles[t], this.fire("tileunload", {
-				tile: i.el,
-				coords: this._keyToTileCoords(t)
-			}))
-		},
-		_initTile: function(t) {
-			ci(t, "leaflet-tile");
-			var i = this.getTileSize();
-			t.style.width = i.x + "px", t.style.height = i.y + "px", t.onselectstart = a, t
-				.onmousemove = a, it && this.options.opacity < 1 && mi(t, this.options.opacity), ot && !
-				st && (t.style.WebkitBackfaceVisibility = "hidden")
-		},
-		_addTile: function(t, i) {
-			var e = this._getTilePos(t),
-				n = this._tileCoordsToKey(t),
-				o = this.createTile(this._wrapCoords(t), p(this._tileReady, this, t));
-			this._initTile(o), this.createTile.length < 2 && M(p(this._tileReady, this, t, null, o)),
-				vi(o, e), this._tiles[n] = {
-					el: o,
-					coords: t,
-					current: !0
-				}, i.appendChild(o), this.fire("tileloadstart", {
-					tile: o,
-					coords: t
-				})
-		},
-		_tileReady: function(t, i, e) {
-			i && this.fire("tileerror", {
-				error: i,
-				tile: e,
-				coords: t
-			});
-			var n = this._tileCoordsToKey(t);
-			(e = this._tiles[n]) && (e.loaded = +new Date, this._map._fadeAnimated ? (mi(e.el, 0), z(
-				this._fadeFrame), this._fadeFrame = M(this._updateOpacity, this)) : (e.active = !0,
-				this._pruneTiles()), i || (ci(e.el, "leaflet-tile-loaded"), this.fire("tileload", {
-				tile: e.el,
-				coords: t
-			})), this._noTilesToLoad() && (this._loading = !1, this.fire("load"), it || !this._map
-				._fadeAnimated ? M(this._pruneTiles, this) : setTimeout(p(this._pruneTiles, this),
-					250)))
-		},
-		_getTilePos: function(t) {
-			return t.scaleBy(this.getTileSize()).subtract(this._level.origin)
-		},
-		_wrapCoords: function(t) {
-			var i = new k(this._wrapX ? o(t.x, this._wrapX) : t.x, this._wrapY ? o(t.y, this._wrapY) : t
-				.y);
-			return i.z = t.z, i
-		},
-		_pxBoundsToTileRange: function(t) {
-			var i = this.getTileSize();
-			return new I(t.min.unscaleBy(i).floor(), t.max.unscaleBy(i).ceil().subtract([1, 1]))
-		},
-		_noTilesToLoad: function() {
-			for (var t in this._tiles)
-				if (!this._tiles[t].loaded) return !1;
-			return !0
-		}
-	});
-	var sn = on.extend({
-		options: {
-			minZoom: 0,
-			maxZoom: 18,
-			subdomains: "abc",
-			errorTileUrl: "",
-			zoomOffset: 0,
-			tms: !1,
-			zoomReverse: !1,
-			detectRetina: !1,
-			crossOrigin: !1
-		},
-		initialize: function(t, i) {
-			this._url = t, (i = c(this, i)).detectRetina && zt && 0 < i.maxZoom && (i.tileSize = Math
-					.floor(i.tileSize / 2), i.zoomReverse ? (i.zoomOffset--, i.minZoom++) : (i
-						.zoomOffset++, i.maxZoom--), i.minZoom = Math.max(0, i.minZoom)), "string" ==
-				typeof i.subdomains && (i.subdomains = i.subdomains.split("")), ot || this.on(
-					"tileunload", this._onTileRemove)
-		},
-		setUrl: function(t, i) {
-			return this._url === t && void 0 === i && (i = !0), this._url = t, i || this.redraw(), this
-		},
-		createTile: function(t, i) {
-			var e = document.createElement("img");
-			return zi(e, "load", p(this._tileOnLoad, this, i, e)), zi(e, "error", p(this._tileOnError,
-					this, i, e)), !this.options.crossOrigin && "" !== this.options.crossOrigin || (e
-					.crossOrigin = !0 === this.options.crossOrigin ? "" : this.options.crossOrigin), e
-				.alt = "", e.setAttribute("role", "presentation"), e.src = this.getTileUrl(t), e
-		},
-		getTileUrl: function(t) {
-			var i, e = {
-				r: zt ? "@2x" : "",
-				s: this._getSubdomain(t),
-				x: t.x,
-				y: t.y,
-				z: this._getZoomForUrl()
-			};
-			return this._map && !this._map.options.crs.infinite && (i = this._globalTileRange.max.y - t
-				.y, this.options.tms && (e.y = i), e["-y"] = i), f(this._url, h(e, this.options))
-		},
-		_tileOnLoad: function(t, i) {
-			it ? setTimeout(p(t, this, null, i), 0) : t(null, i)
-		},
-		_tileOnError: function(t, i, e) {
-			var n = this.options.errorTileUrl;
-			n && i.getAttribute("src") !== n && (i.src = n), t(e, i)
-		},
-		_onTileRemove: function(t) {
-			t.tile.onload = null
-		},
-		_getZoomForUrl: function() {
-			var t = this._tileZoom,
-				i = this.options.maxZoom;
-			return this.options.zoomReverse && (t = i - t), t + this.options.zoomOffset
-		},
-		_getSubdomain: function(t) {
-			var i = Math.abs(t.x + t.y) % this.options.subdomains.length;
-			return this.options.subdomains[i]
-		},
-		_abortLoading: function() {
-			var t, i;
-			for (t in this._tiles) this._tiles[t].coords.z !== this._tileZoom && ((i = this._tiles[t]
-				.el).onload = a, i.onerror = a, i.complete || (i.src = y, ri(i), delete this
-				._tiles[t]))
-		},
-		_removeTile: function(t) {
-			var i = this._tiles[t];
-			if (i) return at || i.el.setAttribute("src", y), on.prototype._removeTile.call(this, t)
-		},
-		_tileReady: function(t, i, e) {
-			if (this._map && (!e || e.getAttribute("src") !== y)) return on.prototype._tileReady.call(
-				this, t, i, e)
-		}
-	});
-
-	function rn(t, i) {
-		return new sn(t, i)
-	}
-	var an = sn.extend({
-		defaultWmsParams: {
-			service: "WMS",
-			request: "GetMap",
-			layers: "",
-			styles: "",
-			format: "image/jpeg",
-			transparent: !1,
-			version: "1.1.1"
-		},
-		options: {
-			crs: null,
-			uppercase: !1
-		},
-		initialize: function(t, i) {
-			this._url = t;
-			var e = h({}, this.defaultWmsParams);
-			for (var n in i) n in this.options || (e[n] = i[n]);
-			var o = (i = c(this, i)).detectRetina && zt ? 2 : 1,
-				s = this.getTileSize();
-			e.width = s.x * o, e.height = s.y * o, this.wmsParams = e
-		},
-		onAdd: function(t) {
-			this._crs = this.options.crs || t.options.crs, this._wmsVersion = parseFloat(this.wmsParams
-				.version);
-			var i = 1.3 <= this._wmsVersion ? "crs" : "srs";
-			this.wmsParams[i] = this._crs.code, sn.prototype.onAdd.call(this, t)
-		},
-		getTileUrl: function(t) {
-			var i = this._tileCoordsToNwSe(t),
-				e = this._crs,
-				n = O(e.project(i[0]), e.project(i[1])),
-				o = n.min,
-				s = n.max,
-				r = (1.3 <= this._wmsVersion && this._crs === be ? [o.y, o.x, s.y, s.x] : [o.x, o.y, s
-					.x, s.y
-				]).join(","),
-				a = sn.prototype.getTileUrl.call(this, t);
-			return a + _(this.wmsParams, a, this.options.uppercase) + (this.options.uppercase ?
-				"&BBOX=" : "&bbox=") + r
-		},
-		setParams: function(t, i) {
-			return h(this.wmsParams, t), i || this.redraw(), this
-		}
-	});
-	sn.WMS = an, rn.wms = function(t, i) {
-		return new an(t, i)
-	};
-	var hn = Me.extend({
-			options: {
-				padding: .1,
-				tolerance: 0
-			},
-			initialize: function(t) {
-				c(this, t), m(this), this._layers = this._layers || {}
-			},
-			onAdd: function() {
-				this._container || (this._initContainer(), this._zoomAnimated && ci(this._container,
-						"leaflet-zoom-animated")), this.getPane().appendChild(this._container), this
-					._update(), this.on("update", this._updatePaths, this)
-			},
-			onRemove: function() {
-				this.off("update", this._updatePaths, this), this._destroyContainer()
-			},
-			getEvents: function() {
-				var t = {
-					viewreset: this._reset,
-					zoom: this._onZoom,
-					moveend: this._update,
-					zoomend: this._onZoomEnd
-				};
-				return this._zoomAnimated && (t.zoomanim = this._onAnimZoom), t
-			},
-			_onAnimZoom: function(t) {
-				this._updateTransform(t.center, t.zoom)
-			},
-			_onZoom: function() {
-				this._updateTransform(this._map.getCenter(), this._map.getZoom())
-			},
-			_updateTransform: function(t, i) {
-				var e = this._map.getZoomScale(i, this._zoom),
-					n = yi(this._container),
-					o = this._map.getSize().multiplyBy(.5 + this.options.padding),
-					s = this._map.project(this._center, i),
-					r = this._map.project(t, i).subtract(s),
-					a = o.multiplyBy(-e).add(n).add(o).subtract(r);
-				vt ? gi(this._container, a, e) : vi(this._container, a)
-			},
-			_reset: function() {
-				for (var t in this._update(), this._updateTransform(this._center, this._zoom), this._layers)
-					this._layers[t]._reset()
-			},
-			_onZoomEnd: function() {
-				for (var t in this._layers) this._layers[t]._project()
-			},
-			_updatePaths: function() {
-				for (var t in this._layers) this._layers[t]._update()
-			},
-			_update: function() {
-				var t = this.options.padding,
-					i = this._map.getSize(),
-					e = this._map.containerPointToLayerPoint(i.multiplyBy(-t)).round();
-				this._bounds = new I(e, e.add(i.multiplyBy(1 + 2 * t)).round()), this._center = this._map
-					.getCenter(), this._zoom = this._map.getZoom()
-			}
-		}),
-		un = hn.extend({
-			getEvents: function() {
-				var t = hn.prototype.getEvents.call(this);
-				return t.viewprereset = this._onViewPreReset, t
-			},
-			_onViewPreReset: function() {
-				this._postponeUpdatePaths = !0
-			},
-			onAdd: function() {
-				hn.prototype.onAdd.call(this), this._draw()
-			},
-			_initContainer: function() {
-				var t = this._container = document.createElement("canvas");
-				zi(t, "mousemove", this._onMouseMove, this), zi(t,
-					"click dblclick mousedown mouseup contextmenu", this._onClick, this), zi(t,
-					"mouseout", this._handleMouseOut, this), this._ctx = t.getContext("2d")
-			},
-			_destroyContainer: function() {
-				z(this._redrawRequest), delete this._ctx, ri(this._container), Si(this._container),
-					delete this._container
-			},
-			_updatePaths: function() {
-				if (!this._postponeUpdatePaths) {
-					for (var t in this._redrawBounds = null, this._layers) this._layers[t]._update();
-					this._redraw()
-				}
-			},
-			_update: function() {
-				var t, i, e, n;
-				this._map._animatingZoom && this._bounds || (hn.prototype._update.call(this), t = this
-					._bounds, i = this._container, e = t.getSize(), n = zt ? 2 : 1, vi(i, t.min), i
-					.width = n * e.x, i.height = n * e.y, i.style.width = e.x + "px", i.style.height = e
-					.y + "px", zt && this._ctx.scale(2, 2), this._ctx.translate(-t.min.x, -t.min.y),
-					this.fire("update"))
-			},
-			_reset: function() {
-				hn.prototype._reset.call(this), this._postponeUpdatePaths && (this._postponeUpdatePaths = !
-					1, this._updatePaths())
-			},
-			_initPath: function(t) {
-				this._updateDashArray(t);
-				var i = (this._layers[m(t)] = t)._order = {
-					layer: t,
-					prev: this._drawLast,
-					next: null
-				};
-				this._drawLast && (this._drawLast.next = i), this._drawLast = i, this._drawFirst = this
-					._drawFirst || this._drawLast
-			},
-			_addPath: function(t) {
-				this._requestRedraw(t)
-			},
-			_removePath: function(t) {
-				var i = t._order,
-					e = i.next,
-					n = i.prev;
-				e ? e.prev = n : this._drawLast = n, n ? n.next = e : this._drawFirst = e, delete t._order,
-					delete this._layers[m(t)], this._requestRedraw(t)
-			},
-			_updatePath: function(t) {
-				this._extendRedrawBounds(t), t._project(), t._update(), this._requestRedraw(t)
-			},
-			_updateStyle: function(t) {
-				this._updateDashArray(t), this._requestRedraw(t)
-			},
-			_updateDashArray: function(t) {
-				if ("string" == typeof t.options.dashArray) {
-					for (var i, e = t.options.dashArray.split(/[, ]+/), n = [], o = 0; o < e.length; o++) {
-						if (i = Number(e[o]), isNaN(i)) return;
-						n.push(i)
-					}
-					t.options._dashArray = n
-				} else t.options._dashArray = t.options.dashArray
-			},
-			_requestRedraw: function(t) {
-				this._map && (this._extendRedrawBounds(t), this._redrawRequest = this._redrawRequest || M(
-					this._redraw, this))
-			},
-			_extendRedrawBounds: function(t) {
-				var i;
-				t._pxBounds && (i = (t.options.weight || 0) + 1, this._redrawBounds = this._redrawBounds ||
-					new I, this._redrawBounds.extend(t._pxBounds.min.subtract([i, i])), this
-					._redrawBounds.extend(t._pxBounds.max.add([i, i])))
-			},
-			_redraw: function() {
-				this._redrawRequest = null, this._redrawBounds && (this._redrawBounds.min._floor(), this
-					._redrawBounds.max._ceil()), this._clear(), this._draw(), this._redrawBounds = null
-			},
-			_clear: function() {
-				var t, i = this._redrawBounds;
-				i ? (t = i.getSize(), this._ctx.clearRect(i.min.x, i.min.y, t.x, t.y)) : (this._ctx.save(),
-					this._ctx.setTransform(1, 0, 0, 1, 0, 0), this._ctx.clearRect(0, 0, this._container
-						.width, this._container.height), this._ctx.restore())
-			},
-			_draw: function() {
-				var t, i, e = this._redrawBounds;
-				this._ctx.save(), e && (i = e.getSize(), this._ctx.beginPath(), this._ctx.rect(e.min.x, e
-					.min.y, i.x, i.y), this._ctx.clip()), this._drawing = !0;
-				for (var n = this._drawFirst; n; n = n.next) t = n.layer, (!e || t._pxBounds && t._pxBounds
-					.intersects(e)) && t._updatePath();
-				this._drawing = !1, this._ctx.restore()
-			},
-			_updatePoly: function(t, i) {
-				if (this._drawing) {
-					var e, n, o, s, r = t._parts,
-						a = r.length,
-						h = this._ctx;
-					if (a) {
-						for (h.beginPath(), e = 0; e < a; e++) {
-							for (n = 0, o = r[e].length; n < o; n++) s = r[e][n], h[n ? "lineTo" : "moveTo"]
-								(s.x, s.y);
-							i && h.closePath()
-						}
-						this._fillStroke(h, t)
-					}
-				}
-			},
-			_updateCircle: function(t) {
-				var i, e, n, o;
-				this._drawing && !t._empty() && (i = t._point, e = this._ctx, n = Math.max(Math.round(t
-					._radius), 1), 1 != (o = (Math.max(Math.round(t._radiusY), 1) || n) / n) && (e
-					.save(), e.scale(1, o)), e.beginPath(), e.arc(i.x, i.y / o, n, 0, 2 * Math.PI, !
-					1), 1 != o && e.restore(), this._fillStroke(e, t))
-			},
-			_fillStroke: function(t, i) {
-				var e = i.options;
-				e.fill && (t.globalAlpha = e.fillOpacity, t.fillStyle = e.fillColor || e.color, t.fill(e
-					.fillRule || "evenodd")), e.stroke && 0 !== e.weight && (t.setLineDash && t
-					.setLineDash(i.options && i.options._dashArray || []), t.globalAlpha = e.opacity, t
-					.lineWidth = e.weight, t.strokeStyle = e.color, t.lineCap = e.lineCap, t.lineJoin =
-					e.lineJoin, t.stroke())
-			},
-			_onClick: function(t) {
-				for (var i, e, n = this._map.mouseEventToLayerPoint(t), o = this._drawFirst; o; o = o.next)(
-					i = o.layer).options.interactive && i._containsPoint(n) && (("click" === t.type ||
-					"preclick" !== t.type) && this._map._draggableMoved(i) || (e = i));
-				e && (Fi(t), this._fireEvent([e], t))
-			},
-			_onMouseMove: function(t) {
-				var i;
-				!this._map || this._map.dragging.moving() || this._map._animatingZoom || (i = this._map
-					.mouseEventToLayerPoint(t), this._handleMouseHover(t, i))
-			},
-			_handleMouseOut: function(t) {
-				var i = this._hoveredLayer;
-				i && (_i(this._container, "leaflet-interactive"), this._fireEvent([i], t, "mouseout"), this
-					._hoveredLayer = null, this._mouseHoverThrottled = !1)
-			},
-			_handleMouseHover: function(t, i) {
-				if (!this._mouseHoverThrottled) {
-					for (var e, n, o = this._drawFirst; o; o = o.next)(e = o.layer).options.interactive && e
-						._containsPoint(i) && (n = e);
-					n !== this._hoveredLayer && (this._handleMouseOut(t), n && (ci(this._container,
-							"leaflet-interactive"), this._fireEvent([n], t, "mouseover"), this
-						._hoveredLayer = n)), this._hoveredLayer && this._fireEvent([this
-						._hoveredLayer], t), this._mouseHoverThrottled = !0, setTimeout(p(function() {
-						this._mouseHoverThrottled = !1
-					}, this), 32)
-				}
-			},
-			_fireEvent: function(t, i, e) {
-				this._map._fireDOMEvent(i, e || i.type, t)
-			},
-			_bringToFront: function(t) {
-				var i, e, n = t._order;
-				n && (i = n.next, e = n.prev, i && ((i.prev = e) ? e.next = i : i && (this._drawFirst = i),
-					n.prev = this._drawLast, (this._drawLast.next = n).next = null, this._drawLast =
-					n, this._requestRedraw(t)))
-			},
-			_bringToBack: function(t) {
-				var i, e, n = t._order;
-				n && (i = n.next, (e = n.prev) && ((e.next = i) ? i.prev = e : e && (this._drawLast = e), n
-					.prev = null, n.next = this._drawFirst, this._drawFirst.prev = n, this
-					._drawFirst = n, this._requestRedraw(t)))
-			}
-		});
-
-	function ln(t) {
-		return St ? new un(t) : null
-	}
-	var cn = function() {
-			try {
-				return document.namespaces.add("lvml", "urn:schemas-microsoft-com:vml"),
-					function(t) {
-						return document.createElement("<lvml:" + t + ' class="lvml">')
-					}
-			} catch (t) {
-				return function(t) {
-					return document.createElement("<" + t +
-						' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')
-				}
-			}
-		}(),
-		_n = {
-			_initContainer: function() {
-				this._container = si("div", "leaflet-vml-container")
-			},
-			_update: function() {
-				this._map._animatingZoom || (hn.prototype._update.call(this), this.fire("update"))
-			},
-			_initPath: function(t) {
-				var i = t._container = cn("shape");
-				ci(i, "leaflet-vml-shape " + (this.options.className || "")), i.coordsize = "1 1", t._path = cn(
-					"path"), i.appendChild(t._path), this._updateStyle(t), this._layers[m(t)] = t
-			},
-			_addPath: function(t) {
-				var i = t._container;
-				this._container.appendChild(i), t.options.interactive && t.addInteractiveTarget(i)
-			},
-			_removePath: function(t) {
-				var i = t._container;
-				ri(i), t.removeInteractiveTarget(i), delete this._layers[m(t)]
-			},
-			_updateStyle: function(t) {
-				var i = t._stroke,
-					e = t._fill,
-					n = t.options,
-					o = t._container;
-				o.stroked = !!n.stroke, o.filled = !!n.fill, n.stroke ? (i = i || (t._stroke = cn("stroke")), o
-					.appendChild(i), i.weight = n.weight + "px", i.color = n.color, i.opacity = n.opacity, n
-					.dashArray ? i.dashStyle = g(n.dashArray) ? n.dashArray.join(" ") : n.dashArray.replace(
-						/( *, *)/g, " ") : i.dashStyle = "", i.endcap = n.lineCap.replace("butt", "flat"), i
-					.joinstyle = n.lineJoin) : i && (o.removeChild(i), t._stroke = null), n.fill ? (e = e ||
-					(t._fill = cn("fill")), o.appendChild(e), e.color = n.fillColor || n.color, e.opacity =
-					n.fillOpacity) : e && (o.removeChild(e), t._fill = null)
-			},
-			_updateCircle: function(t) {
-				var i = t._point.round(),
-					e = Math.round(t._radius),
-					n = Math.round(t._radiusY || e);
-				this._setPath(t, t._empty() ? "M0 0" : "AL " + i.x + "," + i.y + " " + e + "," + n +
-					" 0,23592600")
-			},
-			_setPath: function(t, i) {
-				t._path.v = i
-			},
-			_bringToFront: function(t) {
-				hi(t._container)
-			},
-			_bringToBack: function(t) {
-				ui(t._container)
-			}
-		},
-		dn = Et ? cn : J,
-		pn = hn.extend({
-			getEvents: function() {
-				var t = hn.prototype.getEvents.call(this);
-				return t.zoomstart = this._onZoomStart, t
-			},
-			_initContainer: function() {
-				this._container = dn("svg"), this._container.setAttribute("pointer-events", "none"), this
-					._rootGroup = dn("g"), this._container.appendChild(this._rootGroup)
-			},
-			_destroyContainer: function() {
-				ri(this._container), Si(this._container), delete this._container, delete this._rootGroup,
-					delete this._svgSize
-			},
-			_onZoomStart: function() {
-				this._update()
-			},
-			_update: function() {
-				var t, i, e;
-				this._map._animatingZoom && this._bounds || (hn.prototype._update.call(this), i = (t = this
-					._bounds).getSize(), e = this._container, this._svgSize && this._svgSize.equals(
-					i) || (this._svgSize = i, e.setAttribute("width", i.x), e.setAttribute("height",
-					i.y)), vi(e, t.min), e.setAttribute("viewBox", [t.min.x, t.min.y, i.x, i.y]
-					.join(" ")), this.fire("update"))
-			},
-			_initPath: function(t) {
-				var i = t._path = dn("path");
-				t.options.className && ci(i, t.options.className), t.options.interactive && ci(i,
-					"leaflet-interactive"), this._updateStyle(t), this._layers[m(t)] = t
-			},
-			_addPath: function(t) {
-				this._rootGroup || this._initContainer(), this._rootGroup.appendChild(t._path), t
-					.addInteractiveTarget(t._path)
-			},
-			_removePath: function(t) {
-				ri(t._path), t.removeInteractiveTarget(t._path), delete this._layers[m(t)]
-			},
-			_updatePath: function(t) {
-				t._project(), t._update()
-			},
-			_updateStyle: function(t) {
-				var i = t._path,
-					e = t.options;
-				i && (e.stroke ? (i.setAttribute("stroke", e.color), i.setAttribute("stroke-opacity", e
-							.opacity), i.setAttribute("stroke-width", e.weight), i.setAttribute(
-							"stroke-linecap", e.lineCap), i.setAttribute("stroke-linejoin", e.lineJoin),
-						e.dashArray ? i.setAttribute("stroke-dasharray", e.dashArray) : i
-						.removeAttribute("stroke-dasharray"), e.dashOffset ? i.setAttribute(
-							"stroke-dashoffset", e.dashOffset) : i.removeAttribute("stroke-dashoffset")
-						) : i.setAttribute("stroke", "none"), e.fill ? (i.setAttribute("fill", e
-							.fillColor || e.color), i.setAttribute("fill-opacity", e.fillOpacity), i
-						.setAttribute("fill-rule", e.fillRule || "evenodd")) : i.setAttribute("fill",
-						"none"))
-			},
-			_updatePoly: function(t, i) {
-				this._setPath(t, $(t._parts, i))
-			},
-			_updateCircle: function(t) {
-				var i = t._point,
-					e = Math.max(Math.round(t._radius), 1),
-					n = "a" + e + "," + (Math.max(Math.round(t._radiusY), 1) || e) + " 0 1,0 ",
-					o = t._empty() ? "M0 0" : "M" + (i.x - e) + "," + i.y + n + 2 * e + ",0 " + n + 2 * -e +
-					",0 ";
-				this._setPath(t, o)
-			},
-			_setPath: function(t, i) {
-				t._path.setAttribute("d", i)
-			},
-			_bringToFront: function(t) {
-				hi(t._path)
-			},
-			_bringToBack: function(t) {
-				ui(t._path)
-			}
-		});
-
-	function mn(t) {
-		return Zt || Et ? new pn(t) : null
-	}
-	Et && pn.include(_n), Ki.include({
-		getRenderer: function(t) {
-			var i = (i = t.options.renderer || this._getPaneRenderer(t.options.pane) || this.options
-				.renderer || this._renderer) || (this._renderer = this._createRenderer());
-			return this.hasLayer(i) || this.addLayer(i), i
-		},
-		_getPaneRenderer: function(t) {
-			if ("overlayPane" === t || void 0 === t) return !1;
-			var i = this._paneRenderers[t];
-			return void 0 === i && (i = this._createRenderer({
-				pane: t
-			}), this._paneRenderers[t] = i), i
-		},
-		_createRenderer: function(t) {
-			return this.options.preferCanvas && ln(t) || mn(t)
-		}
-	});
-	var fn = Re.extend({
-		initialize: function(t, i) {
-			Re.prototype.initialize.call(this, this._boundsToLatLngs(t), i)
-		},
-		setBounds: function(t) {
-			return this.setLatLngs(this._boundsToLatLngs(t))
-		},
-		_boundsToLatLngs: function(t) {
-			return [(t = N(t)).getSouthWest(), t.getNorthWest(), t.getNorthEast(), t.getSouthEast()]
-		}
-	});
-	pn.create = dn, pn.pointsToPath = $, Ne.geometryToLayer = De, Ne.coordsToLatLng = We, Ne.coordsToLatLngs = He,
-		Ne.latLngToCoords = Fe, Ne.latLngsToCoords = Ue, Ne.getFeature = Ve, Ne.asFeature = qe, Ki.mergeOptions({
-			boxZoom: !0
-		});
-	var gn = ie.extend({
-		initialize: function(t) {
-			this._map = t, this._container = t._container, this._pane = t._panes.overlayPane, this
-				._resetStateTimeout = 0, t.on("unload", this._destroy, this)
-		},
-		addHooks: function() {
-			zi(this._container, "mousedown", this._onMouseDown, this)
-		},
-		removeHooks: function() {
-			Si(this._container, "mousedown", this._onMouseDown, this)
-		},
-		moved: function() {
-			return this._moved
-		},
-		_destroy: function() {
-			ri(this._pane), delete this._pane
-		},
-		_resetState: function() {
-			this._resetStateTimeout = 0, this._moved = !1
-		},
-		_clearDeferredResetState: function() {
-			0 !== this._resetStateTimeout && (clearTimeout(this._resetStateTimeout), this
-				._resetStateTimeout = 0)
-		},
-		_onMouseDown: function(t) {
-			if (!t.shiftKey || 1 !== t.which && 1 !== t.button) return !1;
-			this._clearDeferredResetState(), this._resetState(), Xt(), xi(), this._startPoint = this
-				._map.mouseEventToContainerPoint(t), zi(document, {
-					contextmenu: Ni,
-					mousemove: this._onMouseMove,
-					mouseup: this._onMouseUp,
-					keydown: this._onKeyDown
-				}, this)
-		},
-		_onMouseMove: function(t) {
-			this._moved || (this._moved = !0, this._box = si("div", "leaflet-zoom-box", this
-				._container), ci(this._container, "leaflet-crosshair"), this._map.fire(
-					"boxzoomstart")), this._point = this._map.mouseEventToContainerPoint(t);
-			var i = new I(this._point, this._startPoint),
-				e = i.getSize();
-			vi(this._box, i.min), this._box.style.width = e.x + "px", this._box.style.height = e.y +
-				"px"
-		},
-		_finish: function() {
-			this._moved && (ri(this._box), _i(this._container, "leaflet-crosshair")), Jt(), wi(), Si(
-				document, {
-					contextmenu: Ni,
-					mousemove: this._onMouseMove,
-					mouseup: this._onMouseUp,
-					keydown: this._onKeyDown
-				}, this)
-		},
-		_onMouseUp: function(t) {
-			var i;
-			1 !== t.which && 1 !== t.button || (this._finish(), this._moved && (this
-				._clearDeferredResetState(), this._resetStateTimeout = setTimeout(p(this
-					._resetState, this), 0), i = new R(this._map.containerPointToLatLng(this
-					._startPoint), this._map.containerPointToLatLng(this._point)), this._map
-				.fitBounds(i).fire("boxzoomend", {
-					boxZoomBounds: i
-				})))
-		},
-		_onKeyDown: function(t) {
-			27 === t.keyCode && this._finish()
-		}
-	});
-	Ki.addInitHook("addHandler", "boxZoom", gn), Ki.mergeOptions({
-		doubleClickZoom: !0
-	});
-	var vn = ie.extend({
-		addHooks: function() {
-			this._map.on("dblclick", this._onDoubleClick, this)
-		},
-		removeHooks: function() {
-			this._map.off("dblclick", this._onDoubleClick, this)
-		},
-		_onDoubleClick: function(t) {
-			var i = this._map,
-				e = i.getZoom(),
-				n = i.options.zoomDelta,
-				o = t.originalEvent.shiftKey ? e - n : e + n;
-			"center" === i.options.doubleClickZoom ? i.setZoom(o) : i.setZoomAround(t.containerPoint, o)
-		}
-	});
-	Ki.addInitHook("addHandler", "doubleClickZoom", vn), Ki.mergeOptions({
-		dragging: !0,
-		inertia: !st,
-		inertiaDeceleration: 3400,
-		inertiaMaxSpeed: 1 / 0,
-		easeLinearity: .2,
-		worldCopyJump: !1,
-		maxBoundsViscosity: 0
-	});
-	var yn = ie.extend({
-		addHooks: function() {
-			var t;
-			this._draggable || (t = this._map, this._draggable = new ae(t._mapPane, t._container), this
-					._draggable.on({
-						dragstart: this._onDragStart,
-						drag: this._onDrag,
-						dragend: this._onDragEnd
-					}, this), this._draggable.on("predrag", this._onPreDragLimit, this), t.options
-					.worldCopyJump && (this._draggable.on("predrag", this._onPreDragWrap, this), t.on(
-						"zoomend", this._onZoomEnd, this), t.whenReady(this._onZoomEnd, this))), ci(this
-					._map._container, "leaflet-grab leaflet-touch-drag"), this._draggable.enable(), this
-				._positions = [], this._times = []
-		},
-		removeHooks: function() {
-			_i(this._map._container, "leaflet-grab"), _i(this._map._container, "leaflet-touch-drag"),
-				this._draggable.disable()
-		},
-		moved: function() {
-			return this._draggable && this._draggable._moved
-		},
-		moving: function() {
-			return this._draggable && this._draggable._moving
-		},
-		_onDragStart: function() {
-			var t, i = this._map;
-			i._stop(), this._map.options.maxBounds && this._map.options.maxBoundsViscosity ? (t = N(this
-				._map.options.maxBounds), this._offsetLimit = O(this._map
-				.latLngToContainerPoint(t.getNorthWest()).multiplyBy(-1), this._map
-				.latLngToContainerPoint(t.getSouthEast()).multiplyBy(-1).add(this._map
-				.getSize())), this._viscosity = Math.min(1, Math.max(0, this._map.options
-				.maxBoundsViscosity))) : this._offsetLimit = null, i.fire("movestart").fire(
-				"dragstart"), i.options.inertia && (this._positions = [], this._times = [])
-		},
-		_onDrag: function(t) {
-			var i, e;
-			this._map.options.inertia && (i = this._lastTime = +new Date, e = this._lastPos = this
-				._draggable._absPos || this._draggable._newPos, this._positions.push(e), this._times
-				.push(i), this._prunePositions(i)), this._map.fire("move", t).fire("drag", t)
-		},
-		_prunePositions: function(t) {
-			for (; 1 < this._positions.length && 50 < t - this._times[0];) this._positions.shift(), this
-				._times.shift()
-		},
-		_onZoomEnd: function() {
-			var t = this._map.getSize().divideBy(2),
-				i = this._map.latLngToLayerPoint([0, 0]);
-			this._initialWorldOffset = i.subtract(t).x, this._worldWidth = this._map
-				.getPixelWorldBounds().getSize().x
-		},
-		_viscousLimit: function(t, i) {
-			return t - (t - i) * this._viscosity
-		},
-		_onPreDragLimit: function() {
-			var t, i;
-			this._viscosity && this._offsetLimit && (t = this._draggable._newPos.subtract(this
-					._draggable._startPos), i = this._offsetLimit, t.x < i.min.x && (t.x = this
-					._viscousLimit(t.x, i.min.x)), t.y < i.min.y && (t.y = this._viscousLimit(t.y, i
-					.min.y)), t.x > i.max.x && (t.x = this._viscousLimit(t.x, i.max.x)), t.y > i.max
-				.y && (t.y = this._viscousLimit(t.y, i.max.y)), this._draggable._newPos = this
-				._draggable._startPos.add(t))
-		},
-		_onPreDragWrap: function() {
-			var t = this._worldWidth,
-				i = Math.round(t / 2),
-				e = this._initialWorldOffset,
-				n = this._draggable._newPos.x,
-				o = (n - i + e) % t + i - e,
-				s = (n + i + e) % t - i - e,
-				r = Math.abs(o + e) < Math.abs(s + e) ? o : s;
-			this._draggable._absPos = this._draggable._newPos.clone(), this._draggable._newPos.x = r
-		},
-		_onDragEnd: function(t) {
-			var i, e, n, o, s, r, a, h, u, l = this._map,
-				c = l.options,
-				_ = !c.inertia || this._times.length < 2;
-			l.fire("dragend", t), _ ? l.fire("moveend") : (this._prunePositions(+new Date), i = this
-				._lastPos.subtract(this._positions[0]), e = (this._lastTime - this._times[0]) / 1e3,
-				n = c.easeLinearity, s = (o = i.multiplyBy(n / e)).distanceTo([0, 0]), r = Math.min(
-					c.inertiaMaxSpeed, s), a = o.multiplyBy(r / s), h = r / (c.inertiaDeceleration *
-					n), (u = a.multiplyBy(-h / 2).round()).x || u.y ? (u = l._limitOffset(u, l
-					.options.maxBounds), M(function() {
-					l.panBy(u, {
-						duration: h,
-						easeLinearity: n,
-						noMoveStart: !0,
-						animate: !0
-					})
-				})) : l.fire("moveend"))
-		}
-	});
-	Ki.addInitHook("addHandler", "dragging", yn), Ki.mergeOptions({
-		keyboard: !0,
-		keyboardPanDelta: 80
-	});
-	var xn = ie.extend({
-		keyCodes: {
-			left: [37],
-			right: [39],
-			down: [40],
-			up: [38],
-			zoomIn: [187, 107, 61, 171],
-			zoomOut: [189, 109, 54, 173]
-		},
-		initialize: function(t) {
-			this._map = t, this._setPanDelta(t.options.keyboardPanDelta), this._setZoomDelta(t.options
-				.zoomDelta)
-		},
-		addHooks: function() {
-			var t = this._map._container;
-			t.tabIndex <= 0 && (t.tabIndex = "0"), zi(t, {
-				focus: this._onFocus,
-				blur: this._onBlur,
-				mousedown: this._onMouseDown
-			}, this), this._map.on({
-				focus: this._addHooks,
-				blur: this._removeHooks
-			}, this)
-		},
-		removeHooks: function() {
-			this._removeHooks(), Si(this._map._container, {
-				focus: this._onFocus,
-				blur: this._onBlur,
-				mousedown: this._onMouseDown
-			}, this), this._map.off({
-				focus: this._addHooks,
-				blur: this._removeHooks
-			}, this)
-		},
-		_onMouseDown: function() {
-			var t, i, e, n;
-			this._focused || (t = document.body, i = document.documentElement, e = t.scrollTop || i
-				.scrollTop, n = t.scrollLeft || i.scrollLeft, this._map._container.focus(), window
-				.scrollTo(n, e))
-		},
-		_onFocus: function() {
-			this._focused = !0, this._map.fire("focus")
-		},
-		_onBlur: function() {
-			this._focused = !1, this._map.fire("blur")
-		},
-		_setPanDelta: function(t) {
-			for (var i = this._panKeys = {}, e = this.keyCodes, n = 0, o = e.left.length; n < o; n++) i[
-				e.left[n]] = [-1 * t, 0];
-			for (n = 0, o = e.right.length; n < o; n++) i[e.right[n]] = [t, 0];
-			for (n = 0, o = e.down.length; n < o; n++) i[e.down[n]] = [0, t];
-			for (n = 0, o = e.up.length; n < o; n++) i[e.up[n]] = [0, -1 * t]
-		},
-		_setZoomDelta: function(t) {
-			for (var i = this._zoomKeys = {}, e = this.keyCodes, n = 0, o = e.zoomIn.length; n < o; n++)
-				i[e.zoomIn[n]] = t;
-			for (n = 0, o = e.zoomOut.length; n < o; n++) i[e.zoomOut[n]] = -t
-		},
-		_addHooks: function() {
-			zi(document, "keydown", this._onKeyDown, this)
-		},
-		_removeHooks: function() {
-			Si(document, "keydown", this._onKeyDown, this)
-		},
-		_onKeyDown: function(t) {
-			if (!(t.altKey || t.ctrlKey || t.metaKey)) {
-				var i, e = t.keyCode,
-					n = this._map;
-				if (e in this._panKeys) n._panAnim && n._panAnim._inProgress || (i = this._panKeys[e], t
-					.shiftKey && (i = A(i).multiplyBy(3)), n.panBy(i), n.options.maxBounds && n
-					.panInsideBounds(n.options.maxBounds));
-				else if (e in this._zoomKeys) n.setZoom(n.getZoom() + (t.shiftKey ? 3 : 1) * this
-					._zoomKeys[e]);
-				else {
-					if (27 !== e || !n._popup || !n._popup.options.closeOnEscapeKey) return;
-					n.closePopup()
-				}
-				Ni(t)
-			}
-		}
-	});
-	Ki.addInitHook("addHandler", "keyboard", xn), Ki.mergeOptions({
-		scrollWheelZoom: !0,
-		wheelDebounceTime: 40,
-		wheelPxPerZoomLevel: 60
-	});
-	var wn = ie.extend({
-		addHooks: function() {
-			zi(this._map._container, "wheel", this._onWheelScroll, this), this._delta = 0
-		},
-		removeHooks: function() {
-			Si(this._map._container, "wheel", this._onWheelScroll, this)
-		},
-		_onWheelScroll: function(t) {
-			var i = Wi(t),
-				e = this._map.options.wheelDebounceTime;
-			this._delta += i, this._lastMousePos = this._map.mouseEventToContainerPoint(t), this
-				._startTime || (this._startTime = +new Date);
-			var n = Math.max(e - (new Date - this._startTime), 0);
-			clearTimeout(this._timer), this._timer = setTimeout(p(this._performZoom, this), n), Ni(t)
-		},
-		_performZoom: function() {
-			var t = this._map,
-				i = t.getZoom(),
-				e = this._map.options.zoomSnap || 0;
-			t._stop();
-			var n = this._delta / (4 * this._map.options.wheelPxPerZoomLevel),
-				o = 4 * Math.log(2 / (1 + Math.exp(-Math.abs(n)))) / Math.LN2,
-				s = e ? Math.ceil(o / e) * e : o,
-				r = t._limitZoom(i + (0 < this._delta ? s : -s)) - i;
-			this._delta = 0, this._startTime = null, r && ("center" === t.options.scrollWheelZoom ? t
-				.setZoom(i + r) : t.setZoomAround(this._lastMousePos, i + r))
-		}
-	});
-	Ki.addInitHook("addHandler", "scrollWheelZoom", wn), Ki.mergeOptions({
-		tap: !0,
-		tapTolerance: 15
-	});
-	var Pn = ie.extend({
-		addHooks: function() {
-			zi(this._map._container, "touchstart", this._onDown, this)
-		},
-		removeHooks: function() {
-			Si(this._map._container, "touchstart", this._onDown, this)
-		},
-		_onDown: function(t) {
-			if (t.touches) {
-				if (Ri(t), this._fireClick = !0, 1 < t.touches.length) return this._fireClick = !1,
-					void clearTimeout(this._holdTimeout);
-				var i = t.touches[0],
-					e = i.target;
-				this._startPos = this._newPos = new k(i.clientX, i.clientY), e.tagName && "a" === e
-					.tagName.toLowerCase() && ci(e, "leaflet-active"), this._holdTimeout = setTimeout(p(
-						function() {
-							this._isTapValid() && (this._fireClick = !1, this._onUp(), this
-								._simulateEvent("contextmenu", i))
-						}, this), 1e3), this._simulateEvent("mousedown", i), zi(document, {
-						touchmove: this._onMove,
-						touchend: this._onUp
-					}, this)
-			}
-		},
-		_onUp: function(t) {
-			var i, e;
-			clearTimeout(this._holdTimeout), Si(document, {
-				touchmove: this._onMove,
-				touchend: this._onUp
-			}, this), this._fireClick && t && t.changedTouches && ((e = (i = t.changedTouches[0])
-					.target) && e.tagName && "a" === e.tagName.toLowerCase() && _i(e,
-					"leaflet-active"), this._simulateEvent("mouseup", i), this._isTapValid() && this
-				._simulateEvent("click", i))
-		},
-		_isTapValid: function() {
-			return this._newPos.distanceTo(this._startPos) <= this._map.options.tapTolerance
-		},
-		_onMove: function(t) {
-			var i = t.touches[0];
-			this._newPos = new k(i.clientX, i.clientY), this._simulateEvent("mousemove", i)
-		},
-		_simulateEvent: function(t, i) {
-			var e = document.createEvent("MouseEvents");
-			e._simulated = !0, i.target._simulatedClick = !0, e.initMouseEvent(t, !0, !0, window, 1, i
-					.screenX, i.screenY, i.clientX, i.clientY, !1, !1, !1, !1, 0, null), i.target
-				.dispatchEvent(e)
-		}
-	});
-	!bt || Lt && !ct || Ki.addInitHook("addHandler", "tap", Pn), Ki.mergeOptions({
-		touchZoom: bt && !st,
-		bounceAtZoomLimits: !0
-	});
-	var Ln = ie.extend({
-		addHooks: function() {
-			ci(this._map._container, "leaflet-touch-zoom"), zi(this._map._container, "touchstart", this
-				._onTouchStart, this)
-		},
-		removeHooks: function() {
-			_i(this._map._container, "leaflet-touch-zoom"), Si(this._map._container, "touchstart", this
-				._onTouchStart, this)
-		},
-		_onTouchStart: function(t) {
-			var i, e, n = this._map;
-			!t.touches || 2 !== t.touches.length || n._animatingZoom || this._zooming || (i = n
-				.mouseEventToContainerPoint(t.touches[0]), e = n.mouseEventToContainerPoint(t
-					.touches[1]), this._centerPoint = n.getSize()._divideBy(2), this._startLatLng =
-				n.containerPointToLatLng(this._centerPoint), "center" !== n.options.touchZoom && (
-					this._pinchStartLatLng = n.containerPointToLatLng(i.add(e)._divideBy(2))), this
-				._startDist = i.distanceTo(e), this._startZoom = n.getZoom(), this._moved = !1, this
-				._zooming = !0, n._stop(), zi(document, "touchmove", this._onTouchMove, this), zi(
-					document, "touchend", this._onTouchEnd, this), Ri(t))
-		},
-		_onTouchMove: function(t) {
-			if (t.touches && 2 === t.touches.length && this._zooming) {
-				var i = this._map,
-					e = i.mouseEventToContainerPoint(t.touches[0]),
-					n = i.mouseEventToContainerPoint(t.touches[1]),
-					o = e.distanceTo(n) / this._startDist;
-				if (this._zoom = i.getScaleZoom(o, this._startZoom), !i.options.bounceAtZoomLimits && (
-						this._zoom < i.getMinZoom() && o < 1 || this._zoom > i.getMaxZoom() && 1 < o) &&
-					(this._zoom = i._limitZoom(this._zoom)), "center" === i.options.touchZoom) {
-					if (this._center = this._startLatLng, 1 == o) return
-				} else {
-					var s = e._add(n)._divideBy(2)._subtract(this._centerPoint);
-					if (1 == o && 0 === s.x && 0 === s.y) return;
-					this._center = i.unproject(i.project(this._pinchStartLatLng, this._zoom).subtract(
-						s), this._zoom)
-				}
-				this._moved || (i._moveStart(!0, !1), this._moved = !0), z(this._animRequest);
-				var r = p(i._move, i, this._center, this._zoom, {
-					pinch: !0,
-					round: !1
-				});
-				this._animRequest = M(r, this, !0), Ri(t)
-			}
-		},
-		_onTouchEnd: function() {
-			this._moved && this._zooming ? (this._zooming = !1, z(this._animRequest), Si(document,
-						"touchmove", this._onTouchMove, this), Si(document, "touchend", this
-						._onTouchEnd, this), this._map.options.zoomAnimation ? this._map._animateZoom(
-						this._center, this._map._limitZoom(this._zoom), !0, this._map.options.zoomSnap
-						) : this._map._resetView(this._center, this._map._limitZoom(this._zoom))) : this
-				._zooming = !1
-		}
-	});
-	Ki.addInitHook("addHandler", "touchZoom", Ln), Ki.BoxZoom = gn, Ki.DoubleClickZoom = vn, Ki.Drag = yn, Ki
-		.Keyboard = xn, Ki.ScrollWheelZoom = wn, Ki.Tap = Pn, Ki.TouchZoom = Ln, t.version = "1.7.1", t.Control =
-		Xi, t.control = Yi, t.Browser = Bt, t.Evented = E, t.Mixin = ne, t.Util = C, t.Class = S, t.Handler = ie, t
-		.extend = h, t.bind = p, t.stamp = m, t.setOptions = c, t.DomEvent = qi, t.DomUtil = Mi, t.PosAnimation =
-		Gi, t.Draggable = ae, t.LineUtil = fe, t.PolyUtil = ye, t.Point = k, t.point = A, t.Bounds = I, t.bounds =
-		O, t.Transformation = q, t.transformation = G, t.Projection = Pe, t.LatLng = D, t.latLng = j, t
-		.LatLngBounds = R, t.latLngBounds = N, t.CRS = H, t.GeoJSON = Ne, t.geoJSON = Ke, t.geoJson = Ye, t.Layer =
-		Me, t.LayerGroup = ze, t.layerGroup = function(t, i) {
-			return new ze(t, i)
-		}, t.FeatureGroup = Ce, t.featureGroup = function(t, i) {
-			return new Ce(t, i)
-		}, t.ImageOverlay = Xe, t.imageOverlay = function(t, i, e) {
-			return new Xe(t, i, e)
-		}, t.VideoOverlay = Je, t.videoOverlay = function(t, i, e) {
-			return new Je(t, i, e)
-		}, t.SVGOverlay = $e, t.svgOverlay = function(t, i, e) {
-			return new $e(t, i, e)
-		}, t.DivOverlay = Qe, t.Popup = tn, t.popup = function(t, i) {
-			return new tn(t, i)
-		}, t.Tooltip = en, t.tooltip = function(t, i) {
-			return new en(t, i)
-		}, t.Icon = Se, t.icon = function(t) {
-			return new Se(t)
-		}, t.DivIcon = nn, t.divIcon = function(t) {
-			return new nn(t)
-		}, t.Marker = ke, t.marker = function(t, i) {
-			return new ke(t, i)
-		}, t.TileLayer = sn, t.tileLayer = rn, t.GridLayer = on, t.gridLayer = function(t) {
-			return new on(t)
-		}, t.SVG = pn, t.svg = mn, t.Renderer = hn, t.Canvas = un, t.canvas = ln, t.Path = Be, t.CircleMarker = Ae,
-		t.circleMarker = function(t, i) {
-			return new Ae(t, i)
-		}, t.Circle = Ie, t.circle = function(t, i, e) {
-			return new Ie(t, i, e)
-		}, t.Polyline = Oe, t.polyline = function(t, i) {
-			return new Oe(t, i)
-		}, t.Polygon = Re, t.polygon = function(t, i) {
-			return new Re(t, i)
-		}, t.Rectangle = fn, t.rectangle = function(t, i) {
-			return new fn(t, i)
-		}, t.Map = Ki, t.map = function(t, i) {
-			return new Ki(t, i)
-		};
-	var bn = window.L;
-	t.noConflict = function() {
-		return window.L = bn, this
-		
-	}, window.L = t
-});
-//# sourceMappingURL=leaflet.js.map
diff --git a/mapWz/lid/leaflet.markercluster-src.js b/mapWz/lid/leaflet.markercluster-src.js
deleted file mode 100644
index 67baa89..0000000
--- a/mapWz/lid/leaflet.markercluster-src.js
+++ /dev/null
@@ -1,2707 +0,0 @@
-/*
- * Leaflet.markercluster 1.5.0+master.499f71c,
- * Provides Beautiful Animated Marker Clustering functionality for Leaflet, a JS library for interactive maps.
- * https://github.com/Leaflet/Leaflet.markercluster
- * (c) 2012-2017, Dave Leaver, smartrak
- */
-(function (global, factory) {
-	typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
-	typeof define === 'function' && define.amd ? define(['exports'], factory) :
-	(global = global || self, factory((global.Leaflet = global.Leaflet || {}, global.Leaflet.markercluster = {})));
-}(this, function (exports) { 'use strict';
-
-	/*
-	 * L.MarkerClusterGroup extends L.FeatureGroup by clustering the markers contained within
-	 */
-
-	var MarkerClusterGroup = L.MarkerClusterGroup = L.FeatureGroup.extend({
-
-		options: {
-			maxClusterRadius: 80, //A cluster will cover at most this many pixels from its center
-			iconCreateFunction: null,
-			clusterPane: L.Marker.prototype.options.pane,
-
-			spiderfyOnMaxZoom: true,
-			showCoverageOnHover: true,
-			zoomToBoundsOnClick: true,
-			singleMarkerMode: false,
-
-			disableClusteringAtZoom: null,
-
-			// Setting this to false prevents the removal of any clusters outside of the viewpoint, which
-			// is the default behaviour for performance reasons.
-			removeOutsideVisibleBounds: true,
-
-			// Set to false to disable all animations (zoom and spiderfy).
-			// If false, option animateAddingMarkers below has no effect.
-			// If L.DomUtil.TRANSITION is falsy, this option has no effect.
-			animate: true,
-
-			//Whether to animate adding markers after adding the MarkerClusterGroup to the map
-			// If you are adding individual markers set to true, if adding bulk markers leave false for massive performance gains.
-			animateAddingMarkers: false,
-
-			// Make it possible to provide custom function to calculate spiderfy shape positions
-			spiderfyShapePositions: null,
-
-			//Increase to increase the distance away that spiderfied markers appear from the center
-			spiderfyDistanceMultiplier: 1,
-
-			// Make it possible to specify a polyline options on a spider leg
-			spiderLegPolylineOptions: { weight: 1.5, color: '#222', opacity: 0.5 },
-
-			// When bulk adding layers, adds markers in chunks. Means addLayers may not add all the layers in the call, others will be loaded during setTimeouts
-			chunkedLoading: false,
-			chunkInterval: 200, // process markers for a maximum of ~ n milliseconds (then trigger the chunkProgress callback)
-			chunkDelay: 50, // at the end of each interval, give n milliseconds back to system/browser
-			chunkProgress: null, // progress callback: function(processed, total, elapsed) (e.g. for a progress indicator)
-
-			//Options to pass to the L.Polygon constructor
-			polygonOptions: {}
-		},
-
-		initialize: function (options) {
-			L.Util.setOptions(this, options);
-			if (!this.options.iconCreateFunction) {
-				this.options.iconCreateFunction = this._defaultIconCreateFunction;
-			}
-
-			this._featureGroup = L.featureGroup();
-			this._featureGroup.addEventParent(this);
-
-			this._nonPointGroup = L.featureGroup();
-			this._nonPointGroup.addEventParent(this);
-
-			this._inZoomAnimation = 0;
-			this._needsClustering = [];
-			this._needsRemoving = []; //Markers removed while we aren't on the map need to be kept track of
-			//The bounds of the currently shown area (from _getExpandedVisibleBounds) Updated on zoom/move
-			this._currentShownBounds = null;
-
-			this._queue = [];
-
-			this._childMarkerEventHandlers = {
-				'dragstart': this._childMarkerDragStart,
-				'move': this._childMarkerMoved,
-				'dragend': this._childMarkerDragEnd,
-			};
-
-			// Hook the appropriate animation methods.
-			var animate = L.DomUtil.TRANSITION && this.options.animate;
-			L.extend(this, animate ? this._withAnimation : this._noAnimation);
-			// Remember which MarkerCluster class to instantiate (animated or not).
-			this._markerCluster = animate ? L.MarkerCluster : L.MarkerClusterNonAnimated;
-		},
-
-		addLayer: function (layer) {
-
-			if (layer instanceof L.LayerGroup) {
-				return this.addLayers([layer]);
-			}
-
-			//Don't cluster non point data
-			if (!layer.getLatLng) {
-				this._nonPointGroup.addLayer(layer);
-				this.fire('layeradd', { layer: layer });
-				return this;
-			}
-
-			if (!this._map) {
-				this._needsClustering.push(layer);
-				this.fire('layeradd', { layer: layer });
-				return this;
-			}
-
-			if (this.hasLayer(layer)) {
-				return this;
-			}
-
-
-			//If we have already clustered we'll need to add this one to a cluster
-
-			if (this._unspiderfy) {
-				this._unspiderfy();
-			}
-
-			this._addLayer(layer, this._maxZoom);
-			this.fire('layeradd', { layer: layer });
-
-			// Refresh bounds and weighted positions.
-			this._topClusterLevel._recalculateBounds();
-
-			this._refreshClustersIcons();
-
-			//Work out what is visible
-			var visibleLayer = layer,
-			    currentZoom = this._zoom;
-			if (layer.__parent) {
-				while (visibleLayer.__parent._zoom >= currentZoom) {
-					visibleLayer = visibleLayer.__parent;
-				}
-			}
-
-			if (this._currentShownBounds.contains(visibleLayer.getLatLng())) {
-				if (this.options.animateAddingMarkers) {
-					this._animationAddLayer(layer, visibleLayer);
-				} else {
-					this._animationAddLayerNonAnimated(layer, visibleLayer);
-				}
-			}
-			return this;
-		},
-
-		removeLayer: function (layer) {
-
-			if (layer instanceof L.LayerGroup) {
-				return this.removeLayers([layer]);
-			}
-
-			//Non point layers
-			if (!layer.getLatLng) {
-				this._nonPointGroup.removeLayer(layer);
-				this.fire('layerremove', { layer: layer });
-				return this;
-			}
-
-			if (!this._map) {
-				if (!this._arraySplice(this._needsClustering, layer) && this.hasLayer(layer)) {
-					this._needsRemoving.push({ layer: layer, latlng: layer._latlng });
-				}
-				this.fire('layerremove', { layer: layer });
-				return this;
-			}
-
-			if (!layer.__parent) {
-				return this;
-			}
-
-			if (this._unspiderfy) {
-				this._unspiderfy();
-				this._unspiderfyLayer(layer);
-			}
-
-			//Remove the marker from clusters
-			this._removeLayer(layer, true);
-			this.fire('layerremove', { layer: layer });
-
-			// Refresh bounds and weighted positions.
-			this._topClusterLevel._recalculateBounds();
-
-			this._refreshClustersIcons();
-
-			layer.off(this._childMarkerEventHandlers, this);
-
-			if (this._featureGroup.hasLayer(layer)) {
-				this._featureGroup.removeLayer(layer);
-				if (layer.clusterShow) {
-					layer.clusterShow();
-				}
-			}
-
-			return this;
-		},
-
-		//Takes an array of markers and adds them in bulk
-		addLayers: function (layersArray, skipLayerAddEvent) {
-			if (!L.Util.isArray(layersArray)) {
-				return this.addLayer(layersArray);
-			}
-
-			var fg = this._featureGroup,
-			    npg = this._nonPointGroup,
-			    chunked = this.options.chunkedLoading,
-			    chunkInterval = this.options.chunkInterval,
-			    chunkProgress = this.options.chunkProgress,
-			    l = layersArray.length,
-			    offset = 0,
-			    originalArray = true,
-			    m;
-
-			if (this._map) {
-				var started = (new Date()).getTime();
-				var process = L.bind(function () {
-					var start = (new Date()).getTime();
-
-					// Make sure to unspiderfy before starting to add some layers
-					if (this._map && this._unspiderfy) {
-						this._unspiderfy();
-					}
-
-					for (; offset < l; offset++) {
-						if (chunked && offset % 200 === 0) {
-							// every couple hundred markers, instrument the time elapsed since processing started:
-							var elapsed = (new Date()).getTime() - start;
-							if (elapsed > chunkInterval) {
-								break; // been working too hard, time to take a break :-)
-							}
-						}
-
-						m = layersArray[offset];
-
-						// Group of layers, append children to layersArray and skip.
-						// Side effects:
-						// - Total increases, so chunkProgress ratio jumps backward.
-						// - Groups are not included in this group, only their non-group child layers (hasLayer).
-						// Changing array length while looping does not affect performance in current browsers:
-						// http://jsperf.com/for-loop-changing-length/6
-						if (m instanceof L.LayerGroup) {
-							if (originalArray) {
-								layersArray = layersArray.slice();
-								originalArray = false;
-							}
-							this._extractNonGroupLayers(m, layersArray);
-							l = layersArray.length;
-							continue;
-						}
-
-						//Not point data, can't be clustered
-						if (!m.getLatLng) {
-							npg.addLayer(m);
-							if (!skipLayerAddEvent) {
-								this.fire('layeradd', { layer: m });
-							}
-							continue;
-						}
-
-						if (this.hasLayer(m)) {
-							continue;
-						}
-
-						this._addLayer(m, this._maxZoom);
-						if (!skipLayerAddEvent) {
-							this.fire('layeradd', { layer: m });
-						}
-
-						//If we just made a cluster of size 2 then we need to remove the other marker from the map (if it is) or we never will
-						if (m.__parent) {
-							if (m.__parent.getChildCount() === 2) {
-								var markers = m.__parent.getAllChildMarkers(),
-								    otherMarker = markers[0] === m ? markers[1] : markers[0];
-								fg.removeLayer(otherMarker);
-							}
-						}
-					}
-
-					if (chunkProgress) {
-						// report progress and time elapsed:
-						chunkProgress(offset, l, (new Date()).getTime() - started);
-					}
-
-					// Completed processing all markers.
-					if (offset === l) {
-
-						// Refresh bounds and weighted positions.
-						this._topClusterLevel._recalculateBounds();
-
-						this._refreshClustersIcons();
-
-						this._topClusterLevel._recursivelyAddChildrenToMap(null, this._zoom, this._currentShownBounds);
-					} else {
-						setTimeout(process, this.options.chunkDelay);
-					}
-				}, this);
-
-				process();
-			} else {
-				var needsClustering = this._needsClustering;
-
-				for (; offset < l; offset++) {
-					m = layersArray[offset];
-
-					// Group of layers, append children to layersArray and skip.
-					if (m instanceof L.LayerGroup) {
-						if (originalArray) {
-							layersArray = layersArray.slice();
-							originalArray = false;
-						}
-						this._extractNonGroupLayers(m, layersArray);
-						l = layersArray.length;
-						continue;
-					}
-
-					//Not point data, can't be clustered
-					if (!m.getLatLng) {
-						npg.addLayer(m);
-						continue;
-					}
-
-					if (this.hasLayer(m)) {
-						continue;
-					}
-
-					needsClustering.push(m);
-				}
-			}
-			return this;
-		},
-
-		//Takes an array of markers and removes them in bulk
-		removeLayers: function (layersArray) {
-			var i, m,
-			    l = layersArray.length,
-			    fg = this._featureGroup,
-			    npg = this._nonPointGroup,
-			    originalArray = true;
-
-			if (!this._map) {
-				for (i = 0; i < l; i++) {
-					m = layersArray[i];
-
-					// Group of layers, append children to layersArray and skip.
-					if (m instanceof L.LayerGroup) {
-						if (originalArray) {
-							layersArray = layersArray.slice();
-							originalArray = false;
-						}
-						this._extractNonGroupLayers(m, layersArray);
-						l = layersArray.length;
-						continue;
-					}
-
-					this._arraySplice(this._needsClustering, m);
-					npg.removeLayer(m);
-					if (this.hasLayer(m)) {
-						this._needsRemoving.push({ layer: m, latlng: m._latlng });
-					}
-					this.fire('layerremove', { layer: m });
-				}
-				return this;
-			}
-
-			if (this._unspiderfy) {
-				this._unspiderfy();
-
-				// Work on a copy of the array, so that next loop is not affected.
-				var layersArray2 = layersArray.slice(),
-				    l2 = l;
-				for (i = 0; i < l2; i++) {
-					m = layersArray2[i];
-
-					// Group of layers, append children to layersArray and skip.
-					if (m instanceof L.LayerGroup) {
-						this._extractNonGroupLayers(m, layersArray2);
-						l2 = layersArray2.length;
-						continue;
-					}
-
-					this._unspiderfyLayer(m);
-				}
-			}
-
-			for (i = 0; i < l; i++) {
-				m = layersArray[i];
-
-				// Group of layers, append children to layersArray and skip.
-				if (m instanceof L.LayerGroup) {
-					if (originalArray) {
-						layersArray = layersArray.slice();
-						originalArray = false;
-					}
-					this._extractNonGroupLayers(m, layersArray);
-					l = layersArray.length;
-					continue;
-				}
-
-				if (!m.__parent) {
-					npg.removeLayer(m);
-					this.fire('layerremove', { layer: m });
-					continue;
-				}
-
-				this._removeLayer(m, true, true);
-				this.fire('layerremove', { layer: m });
-
-				if (fg.hasLayer(m)) {
-					fg.removeLayer(m);
-					if (m.clusterShow) {
-						m.clusterShow();
-					}
-				}
-			}
-
-			// Refresh bounds and weighted positions.
-			this._topClusterLevel._recalculateBounds();
-
-			this._refreshClustersIcons();
-
-			//Fix up the clusters and markers on the map
-			this._topClusterLevel._recursivelyAddChildrenToMap(null, this._zoom, this._currentShownBounds);
-
-			return this;
-		},
-
-		//Removes all layers from the MarkerClusterGroup
-		clearLayers: function () {
-			//Need our own special implementation as the LayerGroup one doesn't work for us
-
-			//If we aren't on the map (yet), blow away the markers we know of
-			if (!this._map) {
-				this._needsClustering = [];
-				this._needsRemoving = [];
-				delete this._gridClusters;
-				delete this._gridUnclustered;
-			}
-
-			if (this._noanimationUnspiderfy) {
-				this._noanimationUnspiderfy();
-			}
-
-			//Remove all the visible layers
-			this._featureGroup.clearLayers();
-			this._nonPointGroup.clearLayers();
-
-			this.eachLayer(function (marker) {
-				marker.off(this._childMarkerEventHandlers, this);
-				delete marker.__parent;
-			}, this);
-
-			if (this._map) {
-				//Reset _topClusterLevel and the DistanceGrids
-				this._generateInitialClusters();
-			}
-
-			return this;
-		},
-
-		//Override FeatureGroup.getBounds as it doesn't work
-		getBounds: function () {
-			var bounds = new L.LatLngBounds();
-
-			if (this._topClusterLevel) {
-				bounds.extend(this._topClusterLevel._bounds);
-			}
-
-			for (var i = this._needsClustering.length - 1; i >= 0; i--) {
-				bounds.extend(this._needsClustering[i].getLatLng());
-			}
-
-			bounds.extend(this._nonPointGroup.getBounds());
-
-			return bounds;
-		},
-
-		//Overrides LayerGroup.eachLayer
-		eachLayer: function (method, context) {
-			var markers = this._needsClustering.slice(),
-				needsRemoving = this._needsRemoving,
-				thisNeedsRemoving, i, j;
-
-			if (this._topClusterLevel) {
-				this._topClusterLevel.getAllChildMarkers(markers);
-			}
-
-			for (i = markers.length - 1; i >= 0; i--) {
-				thisNeedsRemoving = true;
-
-				for (j = needsRemoving.length - 1; j >= 0; j--) {
-					if (needsRemoving[j].layer === markers[i]) {
-						thisNeedsRemoving = false;
-						break;
-					}
-				}
-
-				if (thisNeedsRemoving) {
-					method.call(context, markers[i]);
-				}
-			}
-
-			this._nonPointGroup.eachLayer(method, context);
-		},
-
-		//Overrides LayerGroup.getLayers
-		getLayers: function () {
-			var layers = [];
-			this.eachLayer(function (l) {
-				layers.push(l);
-			});
-			return layers;
-		},
-
-		//Overrides LayerGroup.getLayer, WARNING: Really bad performance
-		getLayer: function (id) {
-			var result = null;
-
-			id = parseInt(id, 10);
-
-			this.eachLayer(function (l) {
-				if (L.stamp(l) === id) {
-					result = l;
-				}
-			});
-
-			return result;
-		},
-
-		//Returns true if the given layer is in this MarkerClusterGroup
-		hasLayer: function (layer) {
-			if (!layer) {
-				return false;
-			}
-
-			var i, anArray = this._needsClustering;
-
-			for (i = anArray.length - 1; i >= 0; i--) {
-				if (anArray[i] === layer) {
-					return true;
-				}
-			}
-
-			anArray = this._needsRemoving;
-			for (i = anArray.length - 1; i >= 0; i--) {
-				if (anArray[i].layer === layer) {
-					return false;
-				}
-			}
-
-			return !!(layer.__parent && layer.__parent._group === this) || this._nonPointGroup.hasLayer(layer);
-		},
-
-		//Zoom down to show the given layer (spiderfying if necessary) then calls the callback
-		zoomToShowLayer: function (layer, callback) {
-
-			var map = this._map;
-
-			if (typeof callback !== 'function') {
-				callback = function () {};
-			}
-
-			var showMarker = function () {
-				// Assumes that map.hasLayer checks for direct appearance on map, not recursively calling
-				// hasLayer on Layer Groups that are on map (typically not calling this MarkerClusterGroup.hasLayer, which would always return true)
-				if ((map.hasLayer(layer) || map.hasLayer(layer.__parent)) && !this._inZoomAnimation) {
-					this._map.off('moveend', showMarker, this);
-					this.off('animationend', showMarker, this);
-
-					if (map.hasLayer(layer)) {
-						callback();
-					} else if (layer.__parent._icon) {
-						this.once('spiderfied', callback, this);
-						layer.__parent.spiderfy();
-					}
-				}
-			};
-
-			if (layer._icon && this._map.getBounds().contains(layer.getLatLng())) {
-				//Layer is visible ond on screen, immediate return
-				callback();
-			} else if (layer.__parent._zoom < Math.round(this._map._zoom)) {
-				//Layer should be visible at this zoom level. It must not be on screen so just pan over to it
-				this._map.on('moveend', showMarker, this);
-				this._map.panTo(layer.getLatLng());
-			} else {
-				this._map.on('moveend', showMarker, this);
-				this.on('animationend', showMarker, this);
-				layer.__parent.zoomToBounds();
-			}
-		},
-
-		//Overrides FeatureGroup.onAdd
-		onAdd: function (map) {
-			this._map = map;
-			var i, l, layer;
-
-			if (!isFinite(this._map.getMaxZoom())) {
-				throw "Map has no maxZoom specified";
-			}
-
-			this._featureGroup.addTo(map);
-			this._nonPointGroup.addTo(map);
-
-			if (!this._gridClusters) {
-				this._generateInitialClusters();
-			}
-
-			this._maxLat = map.options.crs.projection.MAX_LATITUDE;
-
-			//Restore all the positions as they are in the MCG before removing them
-			for (i = 0, l = this._needsRemoving.length; i < l; i++) {
-				layer = this._needsRemoving[i];
-				layer.newlatlng = layer.layer._latlng;
-				layer.layer._latlng = layer.latlng;
-			}
-			//Remove them, then restore their new positions
-			for (i = 0, l = this._needsRemoving.length; i < l; i++) {
-				layer = this._needsRemoving[i];
-				this._removeLayer(layer.layer, true);
-				layer.layer._latlng = layer.newlatlng;
-			}
-			this._needsRemoving = [];
-
-			//Remember the current zoom level and bounds
-			this._zoom = Math.round(this._map._zoom);
-			this._currentShownBounds = this._getExpandedVisibleBounds();
-
-			this._map.on('zoomend', this._zoomEnd, this);
-			this._map.on('moveend', this._moveEnd, this);
-
-			if (this._spiderfierOnAdd) { //TODO FIXME: Not sure how to have spiderfier add something on here nicely
-				this._spiderfierOnAdd();
-			}
-
-			this._bindEvents();
-
-			//Actually add our markers to the map:
-			l = this._needsClustering;
-			this._needsClustering = [];
-			this.addLayers(l, true);
-		},
-
-		//Overrides FeatureGroup.onRemove
-		onRemove: function (map) {
-			map.off('zoomend', this._zoomEnd, this);
-			map.off('moveend', this._moveEnd, this);
-
-			this._unbindEvents();
-
-			//In case we are in a cluster animation
-			this._map._mapPane.className = this._map._mapPane.className.replace(' leaflet-cluster-anim', '');
-
-			if (this._spiderfierOnRemove) { //TODO FIXME: Not sure how to have spiderfier add something on here nicely
-				this._spiderfierOnRemove();
-			}
-
-			delete this._maxLat;
-
-			//Clean up all the layers we added to the map
-			this._hideCoverage();
-			this._featureGroup.remove();
-			this._nonPointGroup.remove();
-
-			this._featureGroup.clearLayers();
-
-			this._map = null;
-		},
-
-		getVisibleParent: function (marker) {
-			var vMarker = marker;
-			while (vMarker && !vMarker._icon) {
-				vMarker = vMarker.__parent;
-			}
-			return vMarker || null;
-		},
-
-		//Remove the given object from the given array
-		_arraySplice: function (anArray, obj) {
-			for (var i = anArray.length - 1; i >= 0; i--) {
-				if (anArray[i] === obj) {
-					anArray.splice(i, 1);
-					return true;
-				}
-			}
-		},
-
-		/**
-		 * Removes a marker from all _gridUnclustered zoom levels, starting at the supplied zoom.
-		 * @param marker to be removed from _gridUnclustered.
-		 * @param z integer bottom start zoom level (included)
-		 * @private
-		 */
-		_removeFromGridUnclustered: function (marker, z) {
-			var map = this._map,
-			    gridUnclustered = this._gridUnclustered,
-				minZoom = Math.floor(this._map.getMinZoom());
-
-			for (; z >= minZoom; z--) {
-				if (!gridUnclustered[z].removeObject(marker, map.project(marker.getLatLng(), z))) {
-					break;
-				}
-			}
-		},
-
-		_childMarkerDragStart: function (e) {
-			e.target.__dragStart = e.target._latlng;
-		},
-
-		_childMarkerMoved: function (e) {
-			if (!this._ignoreMove && !e.target.__dragStart) {
-				var isPopupOpen = e.target._popup && e.target._popup.isOpen();
-
-				this._moveChild(e.target, e.oldLatLng, e.latlng);
-
-				if (isPopupOpen) {
-					e.target.openPopup();
-				}
-			}
-		},
-
-		_moveChild: function (layer, from, to) {
-			layer._latlng = from;
-			this.removeLayer(layer);
-
-			layer._latlng = to;
-			this.addLayer(layer);
-		},
-
-		_childMarkerDragEnd: function (e) {
-			var dragStart = e.target.__dragStart;
-			delete e.target.__dragStart;
-			if (dragStart) {
-				this._moveChild(e.target, dragStart, e.target._latlng);
-			}		
-		},
-
-
-		//Internal function for removing a marker from everything.
-		//dontUpdateMap: set to true if you will handle updating the map manually (for bulk functions)
-		_removeLayer: function (marker, removeFromDistanceGrid, dontUpdateMap) {
-			var gridClusters = this._gridClusters,
-				gridUnclustered = this._gridUnclustered,
-				fg = this._featureGroup,
-				map = this._map,
-				minZoom = Math.floor(this._map.getMinZoom());
-
-			//Remove the marker from distance clusters it might be in
-			if (removeFromDistanceGrid) {
-				this._removeFromGridUnclustered(marker, this._maxZoom);
-			}
-
-			//Work our way up the clusters removing them as we go if required
-			var cluster = marker.__parent,
-				markers = cluster._markers,
-				otherMarker;
-
-			//Remove the marker from the immediate parents marker list
-			this._arraySplice(markers, marker);
-
-			while (cluster) {
-				cluster._childCount--;
-				cluster._boundsNeedUpdate = true;
-
-				if (cluster._zoom < minZoom) {
-					//Top level, do nothing
-					break;
-				} else if (removeFromDistanceGrid && cluster._childCount <= 1) { //Cluster no longer required
-					//We need to push the other marker up to the parent
-					otherMarker = cluster._markers[0] === marker ? cluster._markers[1] : cluster._markers[0];
-
-					//Update distance grid
-					gridClusters[cluster._zoom].removeObject(cluster, map.project(cluster._cLatLng, cluster._zoom));
-					gridUnclustered[cluster._zoom].addObject(otherMarker, map.project(otherMarker.getLatLng(), cluster._zoom));
-
-					//Move otherMarker up to parent
-					this._arraySplice(cluster.__parent._childClusters, cluster);
-					cluster.__parent._markers.push(otherMarker);
-					otherMarker.__parent = cluster.__parent;
-
-					if (cluster._icon) {
-						//Cluster is currently on the map, need to put the marker on the map instead
-						fg.removeLayer(cluster);
-						if (!dontUpdateMap) {
-							fg.addLayer(otherMarker);
-						}
-					}
-				} else {
-					cluster._iconNeedsUpdate = true;
-				}
-
-				cluster = cluster.__parent;
-			}
-
-			delete marker.__parent;
-		},
-
-		_isOrIsParent: function (el, oel) {
-			while (oel) {
-				if (el === oel) {
-					return true;
-				}
-				oel = oel.parentNode;
-			}
-			return false;
-		},
-
-		//Override L.Evented.fire
-		fire: function (type, data, propagate) {
-			if (data && data.layer instanceof L.MarkerCluster) {
-				//Prevent multiple clustermouseover/off events if the icon is made up of stacked divs (Doesn't work in ie <= 8, no relatedTarget)
-				if (data.originalEvent && this._isOrIsParent(data.layer._icon, data.originalEvent.relatedTarget)) {
-					return;
-				}
-				type = 'cluster' + type;
-			}
-
-			L.FeatureGroup.prototype.fire.call(this, type, data, propagate);
-		},
-
-		//Override L.Evented.listens
-		listens: function (type, propagate) {
-			return L.FeatureGroup.prototype.listens.call(this, type, propagate) || L.FeatureGroup.prototype.listens.call(this, 'cluster' + type, propagate);
-		},
-
-		//Default functionality
-		_defaultIconCreateFunction: function (cluster) {
-			var childCount = cluster.getChildCount();
-
-			var c = ' marker-cluster-';
-			if (childCount < 10) {
-				c += 'small';
-			} else if (childCount < 100) {
-				c += 'medium';
-			} else {
-				c += 'large';
-			}
-
-			return new L.DivIcon({ html: '<div><span>' + childCount + '</span></div>', className: 'marker-cluster' + c, iconSize: new L.Point(40, 40) });
-		},
-
-		_bindEvents: function () {
-			var map = this._map,
-			    spiderfyOnMaxZoom = this.options.spiderfyOnMaxZoom,
-			    showCoverageOnHover = this.options.showCoverageOnHover,
-			    zoomToBoundsOnClick = this.options.zoomToBoundsOnClick;
-
-			//Zoom on cluster click or spiderfy if we are at the lowest level
-			if (spiderfyOnMaxZoom || zoomToBoundsOnClick) {
-				this.on('clusterclick', this._zoomOrSpiderfy, this);
-			}
-
-			//Show convex hull (boundary) polygon on mouse over
-			if (showCoverageOnHover) {
-				this.on('clustermouseover', this._showCoverage, this);
-				this.on('clustermouseout', this._hideCoverage, this);
-				map.on('zoomend', this._hideCoverage, this);
-			}
-		},
-
-		_zoomOrSpiderfy: function (e) {
-			var cluster = e.layer,
-			    bottomCluster = cluster;
-
-			while (bottomCluster._childClusters.length === 1) {
-				bottomCluster = bottomCluster._childClusters[0];
-			}
-
-			if (bottomCluster._zoom === this._maxZoom &&
-				bottomCluster._childCount === cluster._childCount &&
-				this.options.spiderfyOnMaxZoom) {
-
-				// All child markers are contained in a single cluster from this._maxZoom to this cluster.
-				cluster.spiderfy();
-			} else if (this.options.zoomToBoundsOnClick) {
-				cluster.zoomToBounds();
-			}
-
-			// Focus the map again for keyboard users.
-			if (e.originalEvent && e.originalEvent.keyCode === 13) {
-				this._map._container.focus();
-			}
-		},
-
-		_showCoverage: function (e) {
-			var map = this._map;
-			if (this._inZoomAnimation) {
-				return;
-			}
-			if (this._shownPolygon) {
-				map.removeLayer(this._shownPolygon);
-			}
-			if (e.layer.getChildCount() > 2 && e.layer !== this._spiderfied) {
-				this._shownPolygon = new L.Polygon(e.layer.getConvexHull(), this.options.polygonOptions);
-				map.addLayer(this._shownPolygon);
-			}
-		},
-
-		_hideCoverage: function () {
-			if (this._shownPolygon) {
-				this._map.removeLayer(this._shownPolygon);
-				this._shownPolygon = null;
-			}
-		},
-
-		_unbindEvents: function () {
-			var spiderfyOnMaxZoom = this.options.spiderfyOnMaxZoom,
-				showCoverageOnHover = this.options.showCoverageOnHover,
-				zoomToBoundsOnClick = this.options.zoomToBoundsOnClick,
-				map = this._map;
-
-			if (spiderfyOnMaxZoom || zoomToBoundsOnClick) {
-				this.off('clusterclick', this._zoomOrSpiderfy, this);
-			}
-			if (showCoverageOnHover) {
-				this.off('clustermouseover', this._showCoverage, this);
-				this.off('clustermouseout', this._hideCoverage, this);
-				map.off('zoomend', this._hideCoverage, this);
-			}
-		},
-
-		_zoomEnd: function () {
-			if (!this._map) { //May have been removed from the map by a zoomEnd handler
-				return;
-			}
-			this._mergeSplitClusters();
-
-			this._zoom = Math.round(this._map._zoom);
-			this._currentShownBounds = this._getExpandedVisibleBounds();
-		},
-
-		_moveEnd: function () {
-			if (this._inZoomAnimation) {
-				return;
-			}
-
-			var newBounds = this._getExpandedVisibleBounds();
-
-			this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), this._zoom, newBounds);
-			this._topClusterLevel._recursivelyAddChildrenToMap(null, Math.round(this._map._zoom), newBounds);
-
-			this._currentShownBounds = newBounds;
-			return;
-		},
-
-		_generateInitialClusters: function () {
-			var maxZoom = Math.ceil(this._map.getMaxZoom()),
-				minZoom = Math.floor(this._map.getMinZoom()),
-				radius = this.options.maxClusterRadius,
-				radiusFn = radius;
-
-			//If we just set maxClusterRadius to a single number, we need to create
-			//a simple function to return that number. Otherwise, we just have to
-			//use the function we've passed in.
-			if (typeof radius !== "function") {
-				radiusFn = function () { return radius; };
-			}
-
-			if (this.options.disableClusteringAtZoom !== null) {
-				maxZoom = this.options.disableClusteringAtZoom - 1;
-			}
-			this._maxZoom = maxZoom;
-			this._gridClusters = {};
-			this._gridUnclustered = {};
-
-			//Set up DistanceGrids for each zoom
-			for (var zoom = maxZoom; zoom >= minZoom; zoom--) {
-				this._gridClusters[zoom] = new L.DistanceGrid(radiusFn(zoom));
-				this._gridUnclustered[zoom] = new L.DistanceGrid(radiusFn(zoom));
-			}
-
-			// Instantiate the appropriate L.MarkerCluster class (animated or not).
-			this._topClusterLevel = new this._markerCluster(this, minZoom - 1);
-		},
-
-		//Zoom: Zoom to start adding at (Pass this._maxZoom to start at the bottom)
-		_addLayer: function (layer, zoom) {
-			var gridClusters = this._gridClusters,
-			    gridUnclustered = this._gridUnclustered,
-				minZoom = Math.floor(this._map.getMinZoom()),
-			    markerPoint, z;
-
-			if (this.options.singleMarkerMode) {
-				this._overrideMarkerIcon(layer);
-			}
-
-			layer.on(this._childMarkerEventHandlers, this);
-
-			//Find the lowest zoom level to slot this one in
-			for (; zoom >= minZoom; zoom--) {
-				markerPoint = this._map.project(layer.getLatLng(), zoom); // calculate pixel position
-
-				//Try find a cluster close by
-				var closest = gridClusters[zoom].getNearObject(markerPoint);
-				if (closest) {
-					closest._addChild(layer);
-					layer.__parent = closest;
-					return;
-				}
-
-				//Try find a marker close by to form a new cluster with
-				closest = gridUnclustered[zoom].getNearObject(markerPoint);
-				if (closest) {
-					var parent = closest.__parent;
-					if (parent) {
-						this._removeLayer(closest, false);
-					}
-
-					//Create new cluster with these 2 in it
-
-					var newCluster = new this._markerCluster(this, zoom, closest, layer);
-					gridClusters[zoom].addObject(newCluster, this._map.project(newCluster._cLatLng, zoom));
-					closest.__parent = newCluster;
-					layer.__parent = newCluster;
-
-					//First create any new intermediate parent clusters that don't exist
-					var lastParent = newCluster;
-					for (z = zoom - 1; z > parent._zoom; z--) {
-						lastParent = new this._markerCluster(this, z, lastParent);
-						gridClusters[z].addObject(lastParent, this._map.project(closest.getLatLng(), z));
-					}
-					parent._addChild(lastParent);
-
-					//Remove closest from this zoom level and any above that it is in, replace with newCluster
-					this._removeFromGridUnclustered(closest, zoom);
-
-					return;
-				}
-
-				//Didn't manage to cluster in at this zoom, record us as a marker here and continue upwards
-				gridUnclustered[zoom].addObject(layer, markerPoint);
-			}
-
-			//Didn't get in anything, add us to the top
-			this._topClusterLevel._addChild(layer);
-			layer.__parent = this._topClusterLevel;
-			return;
-		},
-
-		/**
-		 * Refreshes the icon of all "dirty" visible clusters.
-		 * Non-visible "dirty" clusters will be updated when they are added to the map.
-		 * @private
-		 */
-		_refreshClustersIcons: function () {
-			this._featureGroup.eachLayer(function (c) {
-				if (c instanceof L.MarkerCluster && c._iconNeedsUpdate) {
-					c._updateIcon();
-				}
-			});
-		},
-
-		//Enqueue code to fire after the marker expand/contract has happened
-		_enqueue: function (fn) {
-			this._queue.push(fn);
-			if (!this._queueTimeout) {
-				this._queueTimeout = setTimeout(L.bind(this._processQueue, this), 300);
-			}
-		},
-		_processQueue: function () {
-			for (var i = 0; i < this._queue.length; i++) {
-				this._queue[i].call(this);
-			}
-			this._queue.length = 0;
-			clearTimeout(this._queueTimeout);
-			this._queueTimeout = null;
-		},
-
-		//Merge and split any existing clusters that are too big or small
-		_mergeSplitClusters: function () {
-			var mapZoom = Math.round(this._map._zoom);
-
-			//In case we are starting to split before the animation finished
-			this._processQueue();
-
-			if (this._zoom < mapZoom && this._currentShownBounds.intersects(this._getExpandedVisibleBounds())) { //Zoom in, split
-				this._animationStart();
-				//Remove clusters now off screen
-				this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), this._zoom, this._getExpandedVisibleBounds());
-
-				this._animationZoomIn(this._zoom, mapZoom);
-
-			} else if (this._zoom > mapZoom) { //Zoom out, merge
-				this._animationStart();
-
-				this._animationZoomOut(this._zoom, mapZoom);
-			} else {
-				this._moveEnd();
-			}
-		},
-
-		//Gets the maps visible bounds expanded in each direction by the size of the screen (so the user cannot see an area we do not cover in one pan)
-		_getExpandedVisibleBounds: function () {
-			if (!this.options.removeOutsideVisibleBounds) {
-				return this._mapBoundsInfinite;
-			} else if (L.Browser.mobile) {
-				return this._checkBoundsMaxLat(this._map.getBounds());
-			}
-
-			return this._checkBoundsMaxLat(this._map.getBounds().pad(1)); // Padding expands the bounds by its own dimensions but scaled with the given factor.
-		},
-
-		/**
-		 * Expands the latitude to Infinity (or -Infinity) if the input bounds reach the map projection maximum defined latitude
-		 * (in the case of Web/Spherical Mercator, it is 85.0511287798 / see https://en.wikipedia.org/wiki/Web_Mercator#Formulas).
-		 * Otherwise, the removeOutsideVisibleBounds option will remove markers beyond that limit, whereas the same markers without
-		 * this option (or outside MCG) will have their position floored (ceiled) by the projection and rendered at that limit,
-		 * making the user think that MCG "eats" them and never displays them again.
-		 * @param bounds L.LatLngBounds
-		 * @returns {L.LatLngBounds}
-		 * @private
-		 */
-		_checkBoundsMaxLat: function (bounds) {
-			var maxLat = this._maxLat;
-
-			if (maxLat !== undefined) {
-				if (bounds.getNorth() >= maxLat) {
-					bounds._northEast.lat = Infinity;
-				}
-				if (bounds.getSouth() <= -maxLat) {
-					bounds._southWest.lat = -Infinity;
-				}
-			}
-
-			return bounds;
-		},
-
-		//Shared animation code
-		_animationAddLayerNonAnimated: function (layer, newCluster) {
-			if (newCluster === layer) {
-				this._featureGroup.addLayer(layer);
-			} else if (newCluster._childCount === 2) {
-				newCluster._addToMap();
-
-				var markers = newCluster.getAllChildMarkers();
-				this._featureGroup.removeLayer(markers[0]);
-				this._featureGroup.removeLayer(markers[1]);
-			} else {
-				newCluster._updateIcon();
-			}
-		},
-
-		/**
-		 * Extracts individual (i.e. non-group) layers from a Layer Group.
-		 * @param group to extract layers from.
-		 * @param output {Array} in which to store the extracted layers.
-		 * @returns {*|Array}
-		 * @private
-		 */
-		_extractNonGroupLayers: function (group, output) {
-			var layers = group.getLayers(),
-			    i = 0,
-			    layer;
-
-			output = output || [];
-
-			for (; i < layers.length; i++) {
-				layer = layers[i];
-
-				if (layer instanceof L.LayerGroup) {
-					this._extractNonGroupLayers(layer, output);
-					continue;
-				}
-
-				output.push(layer);
-			}
-
-			return output;
-		},
-
-		/**
-		 * Implements the singleMarkerMode option.
-		 * @param layer Marker to re-style using the Clusters iconCreateFunction.
-		 * @returns {L.Icon} The newly created icon.
-		 * @private
-		 */
-		_overrideMarkerIcon: function (layer) {
-			var icon = layer.options.icon = this.options.iconCreateFunction({
-				getChildCount: function () {
-					return 1;
-				},
-				getAllChildMarkers: function () {
-					return [layer];
-				}
-			});
-
-			return icon;
-		}
-	});
-
-	// Constant bounds used in case option "removeOutsideVisibleBounds" is set to false.
-	L.MarkerClusterGroup.include({
-		_mapBoundsInfinite: new L.LatLngBounds(new L.LatLng(-Infinity, -Infinity), new L.LatLng(Infinity, Infinity))
-	});
-
-	L.MarkerClusterGroup.include({
-		_noAnimation: {
-			//Non Animated versions of everything
-			_animationStart: function () {
-				//Do nothing...
-			},
-			_animationZoomIn: function (previousZoomLevel, newZoomLevel) {
-				this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), previousZoomLevel);
-				this._topClusterLevel._recursivelyAddChildrenToMap(null, newZoomLevel, this._getExpandedVisibleBounds());
-
-				//We didn't actually animate, but we use this event to mean "clustering animations have finished"
-				this.fire('animationend');
-			},
-			_animationZoomOut: function (previousZoomLevel, newZoomLevel) {
-				this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), previousZoomLevel);
-				this._topClusterLevel._recursivelyAddChildrenToMap(null, newZoomLevel, this._getExpandedVisibleBounds());
-
-				//We didn't actually animate, but we use this event to mean "clustering animations have finished"
-				this.fire('animationend');
-			},
-			_animationAddLayer: function (layer, newCluster) {
-				this._animationAddLayerNonAnimated(layer, newCluster);
-			}
-		},
-
-		_withAnimation: {
-			//Animated versions here
-			_animationStart: function () {
-				this._map._mapPane.className += ' leaflet-cluster-anim';
-				this._inZoomAnimation++;
-			},
-
-			_animationZoomIn: function (previousZoomLevel, newZoomLevel) {
-				var bounds = this._getExpandedVisibleBounds(),
-				    fg = this._featureGroup,
-					minZoom = Math.floor(this._map.getMinZoom()),
-				    i;
-
-				this._ignoreMove = true;
-
-				//Add all children of current clusters to map and remove those clusters from map
-				this._topClusterLevel._recursively(bounds, previousZoomLevel, minZoom, function (c) {
-					var startPos = c._latlng,
-					    markers  = c._markers,
-					    m;
-
-					if (!bounds.contains(startPos)) {
-						startPos = null;
-					}
-
-					if (c._isSingleParent() && previousZoomLevel + 1 === newZoomLevel) { //Immediately add the new child and remove us
-						fg.removeLayer(c);
-						c._recursivelyAddChildrenToMap(null, newZoomLevel, bounds);
-					} else {
-						//Fade out old cluster
-						c.clusterHide();
-						c._recursivelyAddChildrenToMap(startPos, newZoomLevel, bounds);
-					}
-
-					//Remove all markers that aren't visible any more
-					//TODO: Do we actually need to do this on the higher levels too?
-					for (i = markers.length - 1; i >= 0; i--) {
-						m = markers[i];
-						if (!bounds.contains(m._latlng)) {
-							fg.removeLayer(m);
-						}
-					}
-
-				});
-
-				this._forceLayout();
-
-				//Update opacities
-				this._topClusterLevel._recursivelyBecomeVisible(bounds, newZoomLevel);
-				//TODO Maybe? Update markers in _recursivelyBecomeVisible
-				fg.eachLayer(function (n) {
-					if (!(n instanceof L.MarkerCluster) && n._icon) {
-						n.clusterShow();
-					}
-				});
-
-				//update the positions of the just added clusters/markers
-				this._topClusterLevel._recursively(bounds, previousZoomLevel, newZoomLevel, function (c) {
-					c._recursivelyRestoreChildPositions(newZoomLevel);
-				});
-
-				this._ignoreMove = false;
-
-				//Remove the old clusters and close the zoom animation
-				this._enqueue(function () {
-					//update the positions of the just added clusters/markers
-					this._topClusterLevel._recursively(bounds, previousZoomLevel, minZoom, function (c) {
-						fg.removeLayer(c);
-						c.clusterShow();
-					});
-
-					this._animationEnd();
-				});
-			},
-
-			_animationZoomOut: function (previousZoomLevel, newZoomLevel) {
-				this._animationZoomOutSingle(this._topClusterLevel, previousZoomLevel - 1, newZoomLevel);
-
-				//Need to add markers for those that weren't on the map before but are now
-				this._topClusterLevel._recursivelyAddChildrenToMap(null, newZoomLevel, this._getExpandedVisibleBounds());
-				//Remove markers that were on the map before but won't be now
-				this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), previousZoomLevel, this._getExpandedVisibleBounds());
-			},
-
-			_animationAddLayer: function (layer, newCluster) {
-				var me = this,
-				    fg = this._featureGroup;
-
-				fg.addLayer(layer);
-				if (newCluster !== layer) {
-					if (newCluster._childCount > 2) { //Was already a cluster
-
-						newCluster._updateIcon();
-						this._forceLayout();
-						this._animationStart();
-
-						layer._setPos(this._map.latLngToLayerPoint(newCluster.getLatLng()));
-						layer.clusterHide();
-
-						this._enqueue(function () {
-							fg.removeLayer(layer);
-							layer.clusterShow();
-
-							me._animationEnd();
-						});
-
-					} else { //Just became a cluster
-						this._forceLayout();
-
-						me._animationStart();
-						me._animationZoomOutSingle(newCluster, this._map.getMaxZoom(), this._zoom);
-					}
-				}
-			}
-		},
-
-		// Private methods for animated versions.
-		_animationZoomOutSingle: function (cluster, previousZoomLevel, newZoomLevel) {
-			var bounds = this._getExpandedVisibleBounds(),
-				minZoom = Math.floor(this._map.getMinZoom());
-
-			//Animate all of the markers in the clusters to move to their cluster center point
-			cluster._recursivelyAnimateChildrenInAndAddSelfToMap(bounds, minZoom, previousZoomLevel + 1, newZoomLevel);
-
-			var me = this;
-
-			//Update the opacity (If we immediately set it they won't animate)
-			this._forceLayout();
-			cluster._recursivelyBecomeVisible(bounds, newZoomLevel);
-
-			//TODO: Maybe use the transition timing stuff to make this more reliable
-			//When the animations are done, tidy up
-			this._enqueue(function () {
-
-				//This cluster stopped being a cluster before the timeout fired
-				if (cluster._childCount === 1) {
-					var m = cluster._markers[0];
-					//If we were in a cluster animation at the time then the opacity and position of our child could be wrong now, so fix it
-					this._ignoreMove = true;
-					m.setLatLng(m.getLatLng());
-					this._ignoreMove = false;
-					if (m.clusterShow) {
-						m.clusterShow();
-					}
-				} else {
-					cluster._recursively(bounds, newZoomLevel, minZoom, function (c) {
-						c._recursivelyRemoveChildrenFromMap(bounds, minZoom, previousZoomLevel + 1);
-					});
-				}
-				me._animationEnd();
-			});
-		},
-
-		_animationEnd: function () {
-			if (this._map) {
-				this._map._mapPane.className = this._map._mapPane.className.replace(' leaflet-cluster-anim', '');
-			}
-			this._inZoomAnimation--;
-			this.fire('animationend');
-		},
-
-		//Force a browser layout of stuff in the map
-		// Should apply the current opacity and location to all elements so we can update them again for an animation
-		_forceLayout: function () {
-			//In my testing this works, infact offsetWidth of any element seems to work.
-			//Could loop all this._layers and do this for each _icon if it stops working
-
-			L.Util.falseFn(document.body.offsetWidth);
-		}
-	});
-
-	L.markerClusterGroup = function (options) {
-		return new L.MarkerClusterGroup(options);
-	};
-
-	var MarkerCluster = L.MarkerCluster = L.Marker.extend({
-		options: L.Icon.prototype.options,
-
-		initialize: function (group, zoom, a, b) {
-
-			L.Marker.prototype.initialize.call(this, a ? (a._cLatLng || a.getLatLng()) : new L.LatLng(0, 0),
-	            { icon: this, pane: group.options.clusterPane });
-
-			this._group = group;
-			this._zoom = zoom;
-
-			this._markers = [];
-			this._childClusters = [];
-			this._childCount = 0;
-			this._iconNeedsUpdate = true;
-			this._boundsNeedUpdate = true;
-
-			this._bounds = new L.LatLngBounds();
-
-			if (a) {
-				this._addChild(a);
-			}
-			if (b) {
-				this._addChild(b);
-			}
-		},
-
-		//Recursively retrieve all child markers of this cluster
-		getAllChildMarkers: function (storageArray, ignoreDraggedMarker) {
-			storageArray = storageArray || [];
-
-			for (var i = this._childClusters.length - 1; i >= 0; i--) {
-				this._childClusters[i].getAllChildMarkers(storageArray);
-			}
-
-			for (var j = this._markers.length - 1; j >= 0; j--) {
-				if (ignoreDraggedMarker && this._markers[j].__dragStart) {
-					continue;
-				}
-				storageArray.push(this._markers[j]);
-			}
-
-			return storageArray;
-		},
-
-		//Returns the count of how many child markers we have
-		getChildCount: function () {
-			return this._childCount;
-		},
-
-		//Zoom to the minimum of showing all of the child markers, or the extents of this cluster
-		zoomToBounds: function (fitBoundsOptions) {
-			var childClusters = this._childClusters.slice(),
-				map = this._group._map,
-				boundsZoom = map.getBoundsZoom(this._bounds),
-				zoom = this._zoom + 1,
-				mapZoom = map.getZoom(),
-				i;
-
-			//calculate how far we need to zoom down to see all of the markers
-			while (childClusters.length > 0 && boundsZoom > zoom) {
-				zoom++;
-				var newClusters = [];
-				for (i = 0; i < childClusters.length; i++) {
-					newClusters = newClusters.concat(childClusters[i]._childClusters);
-				}
-				childClusters = newClusters;
-			}
-
-			if (boundsZoom > zoom) {
-				this._group._map.setView(this._latlng, zoom);
-			} else if (boundsZoom <= mapZoom) { //If fitBounds wouldn't zoom us down, zoom us down instead
-				this._group._map.setView(this._latlng, mapZoom + 1);
-			} else {
-				this._group._map.fitBounds(this._bounds, fitBoundsOptions);
-			}
-		},
-
-		getBounds: function () {
-			var bounds = new L.LatLngBounds();
-			bounds.extend(this._bounds);
-			return bounds;
-		},
-
-		_updateIcon: function () {
-			this._iconNeedsUpdate = true;
-			if (this._icon) {
-				this.setIcon(this);
-			}
-		},
-
-		//Cludge for Icon, we pretend to be an icon for performance
-		createIcon: function () {
-			if (this._iconNeedsUpdate) {
-				this._iconObj = this._group.options.iconCreateFunction(this);
-				this._iconNeedsUpdate = false;
-			}
-			return this._iconObj.createIcon();
-		},
-		createShadow: function () {
-			return this._iconObj.createShadow();
-		},
-
-
-		_addChild: function (new1, isNotificationFromChild) {
-
-			this._iconNeedsUpdate = true;
-
-			this._boundsNeedUpdate = true;
-			this._setClusterCenter(new1);
-
-			if (new1 instanceof L.MarkerCluster) {
-				if (!isNotificationFromChild) {
-					this._childClusters.push(new1);
-					new1.__parent = this;
-				}
-				this._childCount += new1._childCount;
-			} else {
-				if (!isNotificationFromChild) {
-					this._markers.push(new1);
-				}
-				this._childCount++;
-			}
-
-			if (this.__parent) {
-				this.__parent._addChild(new1, true);
-			}
-		},
-
-		/**
-		 * Makes sure the cluster center is set. If not, uses the child center if it is a cluster, or the marker position.
-		 * @param child L.MarkerCluster|L.Marker that will be used as cluster center if not defined yet.
-		 * @private
-		 */
-		_setClusterCenter: function (child) {
-			if (!this._cLatLng) {
-				// when clustering, take position of the first point as the cluster center
-				this._cLatLng = child._cLatLng || child._latlng;
-			}
-		},
-
-		/**
-		 * Assigns impossible bounding values so that the next extend entirely determines the new bounds.
-		 * This method avoids having to trash the previous L.LatLngBounds object and to create a new one, which is much slower for this class.
-		 * As long as the bounds are not extended, most other methods would probably fail, as they would with bounds initialized but not extended.
-		 * @private
-		 */
-		_resetBounds: function () {
-			var bounds = this._bounds;
-
-			if (bounds._southWest) {
-				bounds._southWest.lat = Infinity;
-				bounds._southWest.lng = Infinity;
-			}
-			if (bounds._northEast) {
-				bounds._northEast.lat = -Infinity;
-				bounds._northEast.lng = -Infinity;
-			}
-		},
-
-		_recalculateBounds: function () {
-			var markers = this._markers,
-			    childClusters = this._childClusters,
-			    latSum = 0,
-			    lngSum = 0,
-			    totalCount = this._childCount,
-			    i, child, childLatLng, childCount;
-
-			// Case where all markers are removed from the map and we are left with just an empty _topClusterLevel.
-			if (totalCount === 0) {
-				return;
-			}
-
-			// Reset rather than creating a new object, for performance.
-			this._resetBounds();
-
-			// Child markers.
-			for (i = 0; i < markers.length; i++) {
-				childLatLng = markers[i]._latlng;
-
-				this._bounds.extend(childLatLng);
-
-				latSum += childLatLng.lat;
-				lngSum += childLatLng.lng;
-			}
-
-			// Child clusters.
-			for (i = 0; i < childClusters.length; i++) {
-				child = childClusters[i];
-
-				// Re-compute child bounds and weighted position first if necessary.
-				if (child._boundsNeedUpdate) {
-					child._recalculateBounds();
-				}
-
-				this._bounds.extend(child._bounds);
-
-				childLatLng = child._wLatLng;
-				childCount = child._childCount;
-
-				latSum += childLatLng.lat * childCount;
-				lngSum += childLatLng.lng * childCount;
-			}
-
-			this._latlng = this._wLatLng = new L.LatLng(latSum / totalCount, lngSum / totalCount);
-
-			// Reset dirty flag.
-			this._boundsNeedUpdate = false;
-		},
-
-		//Set our markers position as given and add it to the map
-		_addToMap: function (startPos) {
-			if (startPos) {
-				this._backupLatlng = this._latlng;
-				this.setLatLng(startPos);
-			}
-			this._group._featureGroup.addLayer(this);
-		},
-
-		_recursivelyAnimateChildrenIn: function (bounds, center, maxZoom) {
-			this._recursively(bounds, this._group._map.getMinZoom(), maxZoom - 1,
-				function (c) {
-					var markers = c._markers,
-						i, m;
-					for (i = markers.length - 1; i >= 0; i--) {
-						m = markers[i];
-
-						//Only do it if the icon is still on the map
-						if (m._icon) {
-							m._setPos(center);
-							m.clusterHide();
-						}
-					}
-				},
-				function (c) {
-					var childClusters = c._childClusters,
-						j, cm;
-					for (j = childClusters.length - 1; j >= 0; j--) {
-						cm = childClusters[j];
-						if (cm._icon) {
-							cm._setPos(center);
-							cm.clusterHide();
-						}
-					}
-				}
-			);
-		},
-
-		_recursivelyAnimateChildrenInAndAddSelfToMap: function (bounds, mapMinZoom, previousZoomLevel, newZoomLevel) {
-			this._recursively(bounds, newZoomLevel, mapMinZoom,
-				function (c) {
-					c._recursivelyAnimateChildrenIn(bounds, c._group._map.latLngToLayerPoint(c.getLatLng()).round(), previousZoomLevel);
-
-					//TODO: depthToAnimateIn affects _isSingleParent, if there is a multizoom we may/may not be.
-					//As a hack we only do a animation free zoom on a single level zoom, if someone does multiple levels then we always animate
-					if (c._isSingleParent() && previousZoomLevel - 1 === newZoomLevel) {
-						c.clusterShow();
-						c._recursivelyRemoveChildrenFromMap(bounds, mapMinZoom, previousZoomLevel); //Immediately remove our children as we are replacing them. TODO previousBounds not bounds
-					} else {
-						c.clusterHide();
-					}
-
-					c._addToMap();
-				}
-			);
-		},
-
-		_recursivelyBecomeVisible: function (bounds, zoomLevel) {
-			this._recursively(bounds, this._group._map.getMinZoom(), zoomLevel, null, function (c) {
-				c.clusterShow();
-			});
-		},
-
-		_recursivelyAddChildrenToMap: function (startPos, zoomLevel, bounds) {
-			this._recursively(bounds, this._group._map.getMinZoom() - 1, zoomLevel,
-				function (c) {
-					if (zoomLevel === c._zoom) {
-						return;
-					}
-
-					//Add our child markers at startPos (so they can be animated out)
-					for (var i = c._markers.length - 1; i >= 0; i--) {
-						var nm = c._markers[i];
-
-						if (!bounds.contains(nm._latlng)) {
-							continue;
-						}
-
-						if (startPos) {
-							nm._backupLatlng = nm.getLatLng();
-
-							nm.setLatLng(startPos);
-							if (nm.clusterHide) {
-								nm.clusterHide();
-							}
-						}
-
-						c._group._featureGroup.addLayer(nm);
-					}
-				},
-				function (c) {
-					c._addToMap(startPos);
-				}
-			);
-		},
-
-		_recursivelyRestoreChildPositions: function (zoomLevel) {
-			//Fix positions of child markers
-			for (var i = this._markers.length - 1; i >= 0; i--) {
-				var nm = this._markers[i];
-				if (nm._backupLatlng) {
-					nm.setLatLng(nm._backupLatlng);
-					delete nm._backupLatlng;
-				}
-			}
-
-			if (zoomLevel - 1 === this._zoom) {
-				//Reposition child clusters
-				for (var j = this._childClusters.length - 1; j >= 0; j--) {
-					this._childClusters[j]._restorePosition();
-				}
-			} else {
-				for (var k = this._childClusters.length - 1; k >= 0; k--) {
-					this._childClusters[k]._recursivelyRestoreChildPositions(zoomLevel);
-				}
-			}
-		},
-
-		_restorePosition: function () {
-			if (this._backupLatlng) {
-				this.setLatLng(this._backupLatlng);
-				delete this._backupLatlng;
-			}
-		},
-
-		//exceptBounds: If set, don't remove any markers/clusters in it
-		_recursivelyRemoveChildrenFromMap: function (previousBounds, mapMinZoom, zoomLevel, exceptBounds) {
-			var m, i;
-			this._recursively(previousBounds, mapMinZoom - 1, zoomLevel - 1,
-				function (c) {
-					//Remove markers at every level
-					for (i = c._markers.length - 1; i >= 0; i--) {
-						m = c._markers[i];
-						if (!exceptBounds || !exceptBounds.contains(m._latlng)) {
-							c._group._featureGroup.removeLayer(m);
-							if (m.clusterShow) {
-								m.clusterShow();
-							}
-						}
-					}
-				},
-				function (c) {
-					//Remove child clusters at just the bottom level
-					for (i = c._childClusters.length - 1; i >= 0; i--) {
-						m = c._childClusters[i];
-						if (!exceptBounds || !exceptBounds.contains(m._latlng)) {
-							c._group._featureGroup.removeLayer(m);
-							if (m.clusterShow) {
-								m.clusterShow();
-							}
-						}
-					}
-				}
-			);
-		},
-
-		//Run the given functions recursively to this and child clusters
-		// boundsToApplyTo: a L.LatLngBounds representing the bounds of what clusters to recurse in to
-		// zoomLevelToStart: zoom level to start running functions (inclusive)
-		// zoomLevelToStop: zoom level to stop running functions (inclusive)
-		// runAtEveryLevel: function that takes an L.MarkerCluster as an argument that should be applied on every level
-		// runAtBottomLevel: function that takes an L.MarkerCluster as an argument that should be applied at only the bottom level
-		_recursively: function (boundsToApplyTo, zoomLevelToStart, zoomLevelToStop, runAtEveryLevel, runAtBottomLevel) {
-			var childClusters = this._childClusters,
-			    zoom = this._zoom,
-			    i, c;
-
-			if (zoomLevelToStart <= zoom) {
-				if (runAtEveryLevel) {
-					runAtEveryLevel(this);
-				}
-				if (runAtBottomLevel && zoom === zoomLevelToStop) {
-					runAtBottomLevel(this);
-				}
-			}
-
-			if (zoom < zoomLevelToStart || zoom < zoomLevelToStop) {
-				for (i = childClusters.length - 1; i >= 0; i--) {
-					c = childClusters[i];
-					if (c._boundsNeedUpdate) {
-						c._recalculateBounds();
-					}
-					if (boundsToApplyTo.intersects(c._bounds)) {
-						c._recursively(boundsToApplyTo, zoomLevelToStart, zoomLevelToStop, runAtEveryLevel, runAtBottomLevel);
-					}
-				}
-			}
-		},
-
-		//Returns true if we are the parent of only one cluster and that cluster is the same as us
-		_isSingleParent: function () {
-			//Don't need to check this._markers as the rest won't work if there are any
-			return this._childClusters.length > 0 && this._childClusters[0]._childCount === this._childCount;
-		}
-	});
-
-	/*
-	* Extends L.Marker to include two extra methods: clusterHide and clusterShow.
-	* 
-	* They work as setOpacity(0) and setOpacity(1) respectively, but
-	* don't overwrite the options.opacity
-	* 
-	*/
-
-	L.Marker.include({
-		clusterHide: function () {
-			var backup = this.options.opacity;
-			this.setOpacity(0);
-			this.options.opacity = backup;
-			return this;
-		},
-		
-		clusterShow: function () {
-			return this.setOpacity(this.options.opacity);
-		}
-	});
-
-	L.DistanceGrid = function (cellSize) {
-		this._cellSize = cellSize;
-		this._sqCellSize = cellSize * cellSize;
-		this._grid = {};
-		this._objectPoint = { };
-	};
-
-	L.DistanceGrid.prototype = {
-
-		addObject: function (obj, point) {
-			var x = this._getCoord(point.x),
-			    y = this._getCoord(point.y),
-			    grid = this._grid,
-			    row = grid[y] = grid[y] || {},
-			    cell = row[x] = row[x] || [],
-			    stamp = L.Util.stamp(obj);
-
-			this._objectPoint[stamp] = point;
-
-			cell.push(obj);
-		},
-
-		updateObject: function (obj, point) {
-			this.removeObject(obj);
-			this.addObject(obj, point);
-		},
-
-		//Returns true if the object was found
-		removeObject: function (obj, point) {
-			var x = this._getCoord(point.x),
-			    y = this._getCoord(point.y),
-			    grid = this._grid,
-			    row = grid[y] = grid[y] || {},
-			    cell = row[x] = row[x] || [],
-			    i, len;
-
-			delete this._objectPoint[L.Util.stamp(obj)];
-
-			for (i = 0, len = cell.length; i < len; i++) {
-				if (cell[i] === obj) {
-
-					cell.splice(i, 1);
-
-					if (len === 1) {
-						delete row[x];
-					}
-
-					return true;
-				}
-			}
-
-		},
-
-		eachObject: function (fn, context) {
-			var i, j, k, len, row, cell, removed,
-			    grid = this._grid;
-
-			for (i in grid) {
-				row = grid[i];
-
-				for (j in row) {
-					cell = row[j];
-
-					for (k = 0, len = cell.length; k < len; k++) {
-						removed = fn.call(context, cell[k]);
-						if (removed) {
-							k--;
-							len--;
-						}
-					}
-				}
-			}
-		},
-
-		getNearObject: function (point) {
-			var x = this._getCoord(point.x),
-			    y = this._getCoord(point.y),
-			    i, j, k, row, cell, len, obj, dist,
-			    objectPoint = this._objectPoint,
-			    closestDistSq = this._sqCellSize,
-			    closest = null;
-
-			for (i = y - 1; i <= y + 1; i++) {
-				row = this._grid[i];
-				if (row) {
-
-					for (j = x - 1; j <= x + 1; j++) {
-						cell = row[j];
-						if (cell) {
-
-							for (k = 0, len = cell.length; k < len; k++) {
-								obj = cell[k];
-								dist = this._sqDist(objectPoint[L.Util.stamp(obj)], point);
-								if (dist < closestDistSq ||
-									dist <= closestDistSq && closest === null) {
-									closestDistSq = dist;
-									closest = obj;
-								}
-							}
-						}
-					}
-				}
-			}
-			return closest;
-		},
-
-		_getCoord: function (x) {
-			var coord = Math.floor(x / this._cellSize);
-			return isFinite(coord) ? coord : x;
-		},
-
-		_sqDist: function (p, p2) {
-			var dx = p2.x - p.x,
-			    dy = p2.y - p.y;
-			return dx * dx + dy * dy;
-		}
-	};
-
-	/* Copyright (c) 2012 the authors listed at the following URL, and/or
-	the authors of referenced articles or incorporated external code:
-	http://en.literateprograms.org/Quickhull_(Javascript)?action=history&offset=20120410175256
-
-	Permission is hereby granted, free of charge, to any person obtaining
-	a copy of this software and associated documentation files (the
-	"Software"), to deal in the Software without restriction, including
-	without limitation the rights to use, copy, modify, merge, publish,
-	distribute, sublicense, and/or sell copies of the Software, and to
-	permit persons to whom the Software is furnished to do so, subject to
-	the following conditions:
-
-	The above copyright notice and this permission notice shall be
-	included in all copies or substantial portions of the Software.
-
-	THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-	EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-	MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-	IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-	CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-	TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-	SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-	Retrieved from: http://en.literateprograms.org/Quickhull_(Javascript)?oldid=18434
-	*/
-
-	(function () {
-		L.QuickHull = {
-
-			/*
-			 * @param {Object} cpt a point to be measured from the baseline
-			 * @param {Array} bl the baseline, as represented by a two-element
-			 *   array of latlng objects.
-			 * @returns {Number} an approximate distance measure
-			 */
-			getDistant: function (cpt, bl) {
-				var vY = bl[1].lat - bl[0].lat,
-					vX = bl[0].lng - bl[1].lng;
-				return (vX * (cpt.lat - bl[0].lat) + vY * (cpt.lng - bl[0].lng));
-			},
-
-			/*
-			 * @param {Array} baseLine a two-element array of latlng objects
-			 *   representing the baseline to project from
-			 * @param {Array} latLngs an array of latlng objects
-			 * @returns {Object} the maximum point and all new points to stay
-			 *   in consideration for the hull.
-			 */
-			findMostDistantPointFromBaseLine: function (baseLine, latLngs) {
-				var maxD = 0,
-					maxPt = null,
-					newPoints = [],
-					i, pt, d;
-
-				for (i = latLngs.length - 1; i >= 0; i--) {
-					pt = latLngs[i];
-					d = this.getDistant(pt, baseLine);
-
-					if (d > 0) {
-						newPoints.push(pt);
-					} else {
-						continue;
-					}
-
-					if (d > maxD) {
-						maxD = d;
-						maxPt = pt;
-					}
-				}
-
-				return { maxPoint: maxPt, newPoints: newPoints };
-			},
-
-
-			/*
-			 * Given a baseline, compute the convex hull of latLngs as an array
-			 * of latLngs.
-			 *
-			 * @param {Array} latLngs
-			 * @returns {Array}
-			 */
-			buildConvexHull: function (baseLine, latLngs) {
-				var convexHullBaseLines = [],
-					t = this.findMostDistantPointFromBaseLine(baseLine, latLngs);
-
-				if (t.maxPoint) { // if there is still a point "outside" the base line
-					convexHullBaseLines =
-						convexHullBaseLines.concat(
-							this.buildConvexHull([baseLine[0], t.maxPoint], t.newPoints)
-						);
-					convexHullBaseLines =
-						convexHullBaseLines.concat(
-							this.buildConvexHull([t.maxPoint, baseLine[1]], t.newPoints)
-						);
-					return convexHullBaseLines;
-				} else {  // if there is no more point "outside" the base line, the current base line is part of the convex hull
-					return [baseLine[0]];
-				}
-			},
-
-			/*
-			 * Given an array of latlngs, compute a convex hull as an array
-			 * of latlngs
-			 *
-			 * @param {Array} latLngs
-			 * @returns {Array}
-			 */
-			getConvexHull: function (latLngs) {
-				// find first baseline
-				var maxLat = false, minLat = false,
-					maxLng = false, minLng = false,
-					maxLatPt = null, minLatPt = null,
-					maxLngPt = null, minLngPt = null,
-					maxPt = null, minPt = null,
-					i;
-
-				for (i = latLngs.length - 1; i >= 0; i--) {
-					var pt = latLngs[i];
-					if (maxLat === false || pt.lat > maxLat) {
-						maxLatPt = pt;
-						maxLat = pt.lat;
-					}
-					if (minLat === false || pt.lat < minLat) {
-						minLatPt = pt;
-						minLat = pt.lat;
-					}
-					if (maxLng === false || pt.lng > maxLng) {
-						maxLngPt = pt;
-						maxLng = pt.lng;
-					}
-					if (minLng === false || pt.lng < minLng) {
-						minLngPt = pt;
-						minLng = pt.lng;
-					}
-				}
-				
-				if (minLat !== maxLat) {
-					minPt = minLatPt;
-					maxPt = maxLatPt;
-				} else {
-					minPt = minLngPt;
-					maxPt = maxLngPt;
-				}
-
-				var ch = [].concat(this.buildConvexHull([minPt, maxPt], latLngs),
-									this.buildConvexHull([maxPt, minPt], latLngs));
-				return ch;
-			}
-		};
-	}());
-
-	L.MarkerCluster.include({
-		getConvexHull: function () {
-			var childMarkers = this.getAllChildMarkers(),
-				points = [],
-				p, i;
-
-			for (i = childMarkers.length - 1; i >= 0; i--) {
-				p = childMarkers[i].getLatLng();
-				points.push(p);
-			}
-
-			return L.QuickHull.getConvexHull(points);
-		}
-	});
-
-	//This code is 100% based on https://github.com/jawj/OverlappingMarkerSpiderfier-Leaflet
-	//Huge thanks to jawj for implementing it first to make my job easy :-)
-
-	L.MarkerCluster.include({
-
-		_2PI: Math.PI * 2,
-		_circleFootSeparation: 25, //related to circumference of circle
-		_circleStartAngle: 0,
-
-		_spiralFootSeparation:  28, //related to size of spiral (experiment!)
-		_spiralLengthStart: 11,
-		_spiralLengthFactor: 5,
-
-		_circleSpiralSwitchover: 9, //show spiral instead of circle from this marker count upwards.
-									// 0 -> always spiral; Infinity -> always circle
-
-		spiderfy: function () {
-			if (this._group._spiderfied === this || this._group._inZoomAnimation) {
-				return;
-			}
-
-			var childMarkers = this.getAllChildMarkers(null, true),
-				group = this._group,
-				map = group._map,
-				center = map.latLngToLayerPoint(this._latlng),
-				positions;
-
-			this._group._unspiderfy();
-			this._group._spiderfied = this;
-
-			//TODO Maybe: childMarkers order by distance to center
-
-			if (this._group.options.spiderfyShapePositions) {
-				positions = this._group.options.spiderfyShapePositions(childMarkers.length, center);
-			} else if (childMarkers.length >= this._circleSpiralSwitchover) {
-				positions = this._generatePointsSpiral(childMarkers.length, center);
-			} else {
-				center.y += 10; // Otherwise circles look wrong => hack for standard blue icon, renders differently for other icons.
-				positions = this._generatePointsCircle(childMarkers.length, center);
-			}
-
-			this._animationSpiderfy(childMarkers, positions);
-		},
-
-		unspiderfy: function (zoomDetails) {
-			/// <param Name="zoomDetails">Argument from zoomanim if being called in a zoom animation or null otherwise</param>
-			if (this._group._inZoomAnimation) {
-				return;
-			}
-			this._animationUnspiderfy(zoomDetails);
-
-			this._group._spiderfied = null;
-		},
-
-		_generatePointsCircle: function (count, centerPt) {
-			var circumference = this._group.options.spiderfyDistanceMultiplier * this._circleFootSeparation * (2 + count),
-				legLength = circumference / this._2PI,  //radius from circumference
-				angleStep = this._2PI / count,
-				res = [],
-				i, angle;
-
-			legLength = Math.max(legLength, 35); // Minimum distance to get outside the cluster icon.
-
-			res.length = count;
-
-			for (i = 0; i < count; i++) { // Clockwise, like spiral.
-				angle = this._circleStartAngle + i * angleStep;
-				res[i] = new L.Point(centerPt.x + legLength * Math.cos(angle), centerPt.y + legLength * Math.sin(angle))._round();
-			}
-
-			return res;
-		},
-
-		_generatePointsSpiral: function (count, centerPt) {
-			var spiderfyDistanceMultiplier = this._group.options.spiderfyDistanceMultiplier,
-				legLength = spiderfyDistanceMultiplier * this._spiralLengthStart,
-				separation = spiderfyDistanceMultiplier * this._spiralFootSeparation,
-				lengthFactor = spiderfyDistanceMultiplier * this._spiralLengthFactor * this._2PI,
-				angle = 0,
-				res = [],
-				i;
-
-			res.length = count;
-
-			// Higher index, closer position to cluster center.
-			for (i = count; i >= 0; i--) {
-				// Skip the first position, so that we are already farther from center and we avoid
-				// being under the default cluster icon (especially important for Circle Markers).
-				if (i < count) {
-					res[i] = new L.Point(centerPt.x + legLength * Math.cos(angle), centerPt.y + legLength * Math.sin(angle))._round();
-				}
-				angle += separation / legLength + i * 0.0005;
-				legLength += lengthFactor / angle;
-			}
-			return res;
-		},
-
-		_noanimationUnspiderfy: function () {
-			var group = this._group,
-				map = group._map,
-				fg = group._featureGroup,
-				childMarkers = this.getAllChildMarkers(null, true),
-				m, i;
-
-			group._ignoreMove = true;
-
-			this.setOpacity(1);
-			for (i = childMarkers.length - 1; i >= 0; i--) {
-				m = childMarkers[i];
-
-				fg.removeLayer(m);
-
-				if (m._preSpiderfyLatlng) {
-					m.setLatLng(m._preSpiderfyLatlng);
-					delete m._preSpiderfyLatlng;
-				}
-				if (m.setZIndexOffset) {
-					m.setZIndexOffset(0);
-				}
-
-				if (m._spiderLeg) {
-					map.removeLayer(m._spiderLeg);
-					delete m._spiderLeg;
-				}
-			}
-
-			group.fire('unspiderfied', {
-				cluster: this,
-				markers: childMarkers
-			});
-			group._ignoreMove = false;
-			group._spiderfied = null;
-		}
-	});
-
-	//Non Animated versions of everything
-	L.MarkerClusterNonAnimated = L.MarkerCluster.extend({
-		_animationSpiderfy: function (childMarkers, positions) {
-			var group = this._group,
-				map = group._map,
-				fg = group._featureGroup,
-				legOptions = this._group.options.spiderLegPolylineOptions,
-				i, m, leg, newPos;
-
-			group._ignoreMove = true;
-
-			// Traverse in ascending order to make sure that inner circleMarkers are on top of further legs. Normal markers are re-ordered by newPosition.
-			// The reverse order trick no longer improves performance on modern browsers.
-			for (i = 0; i < childMarkers.length; i++) {
-				newPos = map.layerPointToLatLng(positions[i]);
-				m = childMarkers[i];
-
-				// Add the leg before the marker, so that in case the latter is a circleMarker, the leg is behind it.
-				leg = new L.Polyline([this._latlng, newPos], legOptions);
-				map.addLayer(leg);
-				m._spiderLeg = leg;
-
-				// Now add the marker.
-				m._preSpiderfyLatlng = m._latlng;
-				m.setLatLng(newPos);
-				if (m.setZIndexOffset) {
-					m.setZIndexOffset(1000000); //Make these appear on top of EVERYTHING
-				}
-
-				fg.addLayer(m);
-			}
-			this.setOpacity(0.3);
-
-			group._ignoreMove = false;
-			group.fire('spiderfied', {
-				cluster: this,
-				markers: childMarkers
-			});
-		},
-
-		_animationUnspiderfy: function () {
-			this._noanimationUnspiderfy();
-		}
-	});
-
-	//Animated versions here
-	L.MarkerCluster.include({
-
-		_animationSpiderfy: function (childMarkers, positions) {
-			var me = this,
-				group = this._group,
-				map = group._map,
-				fg = group._featureGroup,
-				thisLayerLatLng = this._latlng,
-				thisLayerPos = map.latLngToLayerPoint(thisLayerLatLng),
-				svg = L.Path.SVG,
-				legOptions = L.extend({}, this._group.options.spiderLegPolylineOptions), // Copy the options so that we can modify them for animation.
-				finalLegOpacity = legOptions.opacity,
-				i, m, leg, legPath, legLength, newPos;
-
-			if (finalLegOpacity === undefined) {
-				finalLegOpacity = L.MarkerClusterGroup.prototype.options.spiderLegPolylineOptions.opacity;
-			}
-
-			if (svg) {
-				// If the initial opacity of the spider leg is not 0 then it appears before the animation starts.
-				legOptions.opacity = 0;
-
-				// Add the class for CSS transitions.
-				legOptions.className = (legOptions.className || '') + ' leaflet-cluster-spider-leg';
-			} else {
-				// Make sure we have a defined opacity.
-				legOptions.opacity = finalLegOpacity;
-			}
-
-			group._ignoreMove = true;
-
-			// Add markers and spider legs to map, hidden at our center point.
-			// Traverse in ascending order to make sure that inner circleMarkers are on top of further legs. Normal markers are re-ordered by newPosition.
-			// The reverse order trick no longer improves performance on modern browsers.
-			for (i = 0; i < childMarkers.length; i++) {
-				m = childMarkers[i];
-
-				newPos = map.layerPointToLatLng(positions[i]);
-
-				// Add the leg before the marker, so that in case the latter is a circleMarker, the leg is behind it.
-				leg = new L.Polyline([thisLayerLatLng, newPos], legOptions);
-				map.addLayer(leg);
-				m._spiderLeg = leg;
-
-				// Explanations: https://jakearchibald.com/2013/animated-line-drawing-svg/
-				// In our case the transition property is declared in the CSS file.
-				if (svg) {
-					legPath = leg._path;
-					legLength = legPath.getTotalLength() + 0.1; // Need a small extra length to avoid remaining dot in Firefox.
-					legPath.style.strokeDasharray = legLength; // Just 1 length is enough, it will be duplicated.
-					legPath.style.strokeDashoffset = legLength;
-				}
-
-				// If it is a marker, add it now and we'll animate it out
-				if (m.setZIndexOffset) {
-					m.setZIndexOffset(1000000); // Make normal markers appear on top of EVERYTHING
-				}
-				if (m.clusterHide) {
-					m.clusterHide();
-				}
-				
-				// Vectors just get immediately added
-				fg.addLayer(m);
-
-				if (m._setPos) {
-					m._setPos(thisLayerPos);
-				}
-			}
-
-			group._forceLayout();
-			group._animationStart();
-
-			// Reveal markers and spider legs.
-			for (i = childMarkers.length - 1; i >= 0; i--) {
-				newPos = map.layerPointToLatLng(positions[i]);
-				m = childMarkers[i];
-
-				//Move marker to new position
-				m._preSpiderfyLatlng = m._latlng;
-				m.setLatLng(newPos);
-				
-				if (m.clusterShow) {
-					m.clusterShow();
-				}
-
-				// Animate leg (animation is actually delegated to CSS transition).
-				if (svg) {
-					leg = m._spiderLeg;
-					legPath = leg._path;
-					legPath.style.strokeDashoffset = 0;
-					//legPath.style.strokeOpacity = finalLegOpacity;
-					leg.setStyle({opacity: finalLegOpacity});
-				}
-			}
-			this.setOpacity(0.3);
-
-			group._ignoreMove = false;
-
-			setTimeout(function () {
-				group._animationEnd();
-				group.fire('spiderfied', {
-					cluster: me,
-					markers: childMarkers
-				});
-			}, 200);
-		},
-
-		_animationUnspiderfy: function (zoomDetails) {
-			var me = this,
-				group = this._group,
-				map = group._map,
-				fg = group._featureGroup,
-				thisLayerPos = zoomDetails ? map._latLngToNewLayerPoint(this._latlng, zoomDetails.zoom, zoomDetails.center) : map.latLngToLayerPoint(this._latlng),
-				childMarkers = this.getAllChildMarkers(null, true),
-				svg = L.Path.SVG,
-				m, i, leg, legPath, legLength, nonAnimatable;
-
-			group._ignoreMove = true;
-			group._animationStart();
-
-			//Make us visible and bring the child markers back in
-			this.setOpacity(1);
-			for (i = childMarkers.length - 1; i >= 0; i--) {
-				m = childMarkers[i];
-
-				//Marker was added to us after we were spiderfied
-				if (!m._preSpiderfyLatlng) {
-					continue;
-				}
-
-				//Close any popup on the marker first, otherwise setting the location of the marker will make the map scroll
-				m.closePopup();
-
-				//Fix up the location to the real one
-				m.setLatLng(m._preSpiderfyLatlng);
-				delete m._preSpiderfyLatlng;
-
-				//Hack override the location to be our center
-				nonAnimatable = true;
-				if (m._setPos) {
-					m._setPos(thisLayerPos);
-					nonAnimatable = false;
-				}
-				if (m.clusterHide) {
-					m.clusterHide();
-					nonAnimatable = false;
-				}
-				if (nonAnimatable) {
-					fg.removeLayer(m);
-				}
-
-				// Animate the spider leg back in (animation is actually delegated to CSS transition).
-				if (svg) {
-					leg = m._spiderLeg;
-					legPath = leg._path;
-					legLength = legPath.getTotalLength() + 0.1;
-					legPath.style.strokeDashoffset = legLength;
-					leg.setStyle({opacity: 0});
-				}
-			}
-
-			group._ignoreMove = false;
-
-			setTimeout(function () {
-				//If we have only <= one child left then that marker will be shown on the map so don't remove it!
-				var stillThereChildCount = 0;
-				for (i = childMarkers.length - 1; i >= 0; i--) {
-					m = childMarkers[i];
-					if (m._spiderLeg) {
-						stillThereChildCount++;
-					}
-				}
-
-
-				for (i = childMarkers.length - 1; i >= 0; i--) {
-					m = childMarkers[i];
-
-					if (!m._spiderLeg) { //Has already been unspiderfied
-						continue;
-					}
-
-					if (m.clusterShow) {
-						m.clusterShow();
-					}
-					if (m.setZIndexOffset) {
-						m.setZIndexOffset(0);
-					}
-
-					if (stillThereChildCount > 1) {
-						fg.removeLayer(m);
-					}
-
-					map.removeLayer(m._spiderLeg);
-					delete m._spiderLeg;
-				}
-				group._animationEnd();
-				group.fire('unspiderfied', {
-					cluster: me,
-					markers: childMarkers
-				});
-			}, 200);
-		}
-	});
-
-
-	L.MarkerClusterGroup.include({
-		//The MarkerCluster currently spiderfied (if any)
-		_spiderfied: null,
-
-		unspiderfy: function () {
-			this._unspiderfy.apply(this, arguments);
-		},
-
-		_spiderfierOnAdd: function () {
-			this._map.on('click', this._unspiderfyWrapper, this);
-
-			if (this._map.options.zoomAnimation) {
-				this._map.on('zoomstart', this._unspiderfyZoomStart, this);
-			}
-			//Browsers without zoomAnimation or a big zoom don't fire zoomstart
-			this._map.on('zoomend', this._noanimationUnspiderfy, this);
-
-			if (!L.Browser.touch) {
-				this._map.getRenderer(this);
-				//Needs to happen in the pageload, not after, or animations don't work in webkit
-				//  http://stackoverflow.com/questions/8455200/svg-animate-with-dynamically-added-elements
-				//Disable on touch browsers as the animation messes up on a touch zoom and isn't very noticable
-			}
-		},
-
-		_spiderfierOnRemove: function () {
-			this._map.off('click', this._unspiderfyWrapper, this);
-			this._map.off('zoomstart', this._unspiderfyZoomStart, this);
-			this._map.off('zoomanim', this._unspiderfyZoomAnim, this);
-			this._map.off('zoomend', this._noanimationUnspiderfy, this);
-
-			//Ensure that markers are back where they should be
-			// Use no animation to avoid a sticky leaflet-cluster-anim class on mapPane
-			this._noanimationUnspiderfy();
-		},
-
-		//On zoom start we add a zoomanim handler so that we are guaranteed to be last (after markers are animated)
-		//This means we can define the animation they do rather than Markers doing an animation to their actual location
-		_unspiderfyZoomStart: function () {
-			if (!this._map) { //May have been removed from the map by a zoomEnd handler
-				return;
-			}
-
-			this._map.on('zoomanim', this._unspiderfyZoomAnim, this);
-		},
-
-		_unspiderfyZoomAnim: function (zoomDetails) {
-			//Wait until the first zoomanim after the user has finished touch-zooming before running the animation
-			if (L.DomUtil.hasClass(this._map._mapPane, 'leaflet-touching')) {
-				return;
-			}
-
-			this._map.off('zoomanim', this._unspiderfyZoomAnim, this);
-			this._unspiderfy(zoomDetails);
-		},
-
-		_unspiderfyWrapper: function () {
-			/// <summary>_unspiderfy but passes no arguments</summary>
-			this._unspiderfy();
-		},
-
-		_unspiderfy: function (zoomDetails) {
-			if (this._spiderfied) {
-				this._spiderfied.unspiderfy(zoomDetails);
-			}
-		},
-
-		_noanimationUnspiderfy: function () {
-			if (this._spiderfied) {
-				this._spiderfied._noanimationUnspiderfy();
-			}
-		},
-
-		//If the given layer is currently being spiderfied then we unspiderfy it so it isn't on the map anymore etc
-		_unspiderfyLayer: function (layer) {
-			if (layer._spiderLeg) {
-				this._featureGroup.removeLayer(layer);
-
-				if (layer.clusterShow) {
-					layer.clusterShow();
-				}
-					//Position will be fixed up immediately in _animationUnspiderfy
-				if (layer.setZIndexOffset) {
-					layer.setZIndexOffset(0);
-				}
-
-				this._map.removeLayer(layer._spiderLeg);
-				delete layer._spiderLeg;
-			}
-		}
-	});
-
-	/**
-	 * Adds 1 public method to MCG and 1 to L.Marker to facilitate changing
-	 * markers' icon options and refreshing their icon and their parent clusters
-	 * accordingly (case where their iconCreateFunction uses data of childMarkers
-	 * to make up the cluster icon).
-	 */
-
-
-	L.MarkerClusterGroup.include({
-		/**
-		 * Updates the icon of all clusters which are parents of the given marker(s).
-		 * In singleMarkerMode, also updates the given marker(s) icon.
-		 * @param layers L.MarkerClusterGroup|L.LayerGroup|Array(L.Marker)|Map(L.Marker)|
-		 * L.MarkerCluster|L.Marker (optional) list of markers (or single marker) whose parent
-		 * clusters need to be updated. If not provided, retrieves all child markers of this.
-		 * @returns {L.MarkerClusterGroup}
-		 */
-		refreshClusters: function (layers) {
-			if (!layers) {
-				layers = this._topClusterLevel.getAllChildMarkers();
-			} else if (layers instanceof L.MarkerClusterGroup) {
-				layers = layers._topClusterLevel.getAllChildMarkers();
-			} else if (layers instanceof L.LayerGroup) {
-				layers = layers._layers;
-			} else if (layers instanceof L.MarkerCluster) {
-				layers = layers.getAllChildMarkers();
-			} else if (layers instanceof L.Marker) {
-				layers = [layers];
-			} // else: must be an Array(L.Marker)|Map(L.Marker)
-			this._flagParentsIconsNeedUpdate(layers);
-			this._refreshClustersIcons();
-
-			// In case of singleMarkerMode, also re-draw the markers.
-			if (this.options.singleMarkerMode) {
-				this._refreshSingleMarkerModeMarkers(layers);
-			}
-
-			return this;
-		},
-
-		/**
-		 * Simply flags all parent clusters of the given markers as having a "dirty" icon.
-		 * @param layers Array(L.Marker)|Map(L.Marker) list of markers.
-		 * @private
-		 */
-		_flagParentsIconsNeedUpdate: function (layers) {
-			var id, parent;
-
-			// Assumes layers is an Array or an Object whose prototype is non-enumerable.
-			for (id in layers) {
-				// Flag parent clusters' icon as "dirty", all the way up.
-				// Dumb process that flags multiple times upper parents, but still
-				// much more efficient than trying to be smart and make short lists,
-				// at least in the case of a hierarchy following a power law:
-				// http://jsperf.com/flag-nodes-in-power-hierarchy/2
-				parent = layers[id].__parent;
-				while (parent) {
-					parent._iconNeedsUpdate = true;
-					parent = parent.__parent;
-				}
-			}
-		},
-
-		/**
-		 * Re-draws the icon of the supplied markers.
-		 * To be used in singleMarkerMode only.
-		 * @param layers Array(L.Marker)|Map(L.Marker) list of markers.
-		 * @private
-		 */
-		_refreshSingleMarkerModeMarkers: function (layers) {
-			var id, layer;
-
-			for (id in layers) {
-				layer = layers[id];
-
-				// Make sure we do not override markers that do not belong to THIS group.
-				if (this.hasLayer(layer)) {
-					// Need to re-create the icon first, then re-draw the marker.
-					layer.setIcon(this._overrideMarkerIcon(layer));
-				}
-			}
-		}
-	});
-
-	L.Marker.include({
-		/**
-		 * Updates the given options in the marker's icon and refreshes the marker.
-		 * @param options map object of icon options.
-		 * @param directlyRefreshClusters boolean (optional) true to trigger
-		 * MCG.refreshClustersOf() right away with this single marker.
-		 * @returns {L.Marker}
-		 */
-		refreshIconOptions: function (options, directlyRefreshClusters) {
-			var icon = this.options.icon;
-
-			L.setOptions(icon, options);
-
-			this.setIcon(icon);
-
-			// Shortcut to refresh the associated MCG clusters right away.
-			// To be used when refreshing a single marker.
-			// Otherwise, better use MCG.refreshClusters() once at the end with
-			// the list of modified markers.
-			if (directlyRefreshClusters && this.__parent) {
-				this.__parent._group.refreshClusters(this);
-			}
-
-			return this;
-		}
-	});
-
-	exports.MarkerClusterGroup = MarkerClusterGroup;
-	exports.MarkerCluster = MarkerCluster;
-
-	Object.defineProperty(exports, '__esModule', { value: true });
-
-}));
-//# sourceMappingURL=leaflet.markercluster-src.js.map
diff --git a/mapWz/lid/proj4.js b/mapWz/lid/proj4.js
deleted file mode 100644
index 0fdb880..0000000
--- a/mapWz/lid/proj4.js
+++ /dev/null
@@ -1,5485 +0,0 @@
-!function(e){if("object"==typeof exports)module.exports=e();else if("function"==typeof define&&define.amd)define(e);else{var f;"undefined"!=typeof window?f=window:"undefined"!=typeof global?f=global:"undefined"!=typeof self&&(f=self),f.proj4=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){
-var mgrs = _dereq_('mgrs');
-
-function Point(x, y, z) {
-  if (!(this instanceof Point)) {
-    return new Point(x, y, z);
-  }
-  if (Array.isArray(x)) {
-    this.x = x[0];
-    this.y = x[1];
-    this.z = x[2] || 0.0;
-  } else if(typeof x === 'object') {
-    this.x = x.x;
-    this.y = x.y;
-    this.z = x.z || 0.0;
-  } else if (typeof x === 'string' && typeof y === 'undefined') {
-    var coords = x.split(',');
-    this.x = parseFloat(coords[0], 10);
-    this.y = parseFloat(coords[1], 10);
-    this.z = parseFloat(coords[2], 10) || 0.0;
-  } else {
-    this.x = x;
-    this.y = y;
-    this.z = z || 0.0;
-  }
-  console.warn('proj4.Point will be removed in version 3, use proj4.toPoint');
-}
-
-Point.fromMGRS = function(mgrsStr) {
-  return new Point(mgrs.toPoint(mgrsStr));
-};
-Point.prototype.toMGRS = function(accuracy) {
-  return mgrs.forward([this.x, this.y], accuracy);
-};
-module.exports = Point;
-
-},{"mgrs":67}],2:[function(_dereq_,module,exports){
-var parseCode = _dereq_("./parseCode");
-var extend = _dereq_('./extend');
-var projections = _dereq_('./projections');
-var deriveConstants = _dereq_('./deriveConstants');
-
-function Projection(srsCode,callback) {
-  if (!(this instanceof Projection)) {
-    return new Projection(srsCode);
-  }
-  callback = callback || function(error){
-    if(error){
-      throw error;
-    }
-  };
-  var json = parseCode(srsCode);
-  if(typeof json !== 'object'){
-    callback(srsCode);
-    return;
-  }
-  var modifiedJSON = deriveConstants(json);
-  var ourProj = Projection.projections.get(modifiedJSON.projName);
-  if(ourProj){
-    extend(this, modifiedJSON);
-    extend(this, ourProj);
-    this.init();
-    callback(null, this);
-  }else{
-    callback(srsCode);
-  }
-}
-Projection.projections = projections;
-Projection.projections.start();
-module.exports = Projection;
-
-},{"./deriveConstants":33,"./extend":34,"./parseCode":37,"./projections":39}],3:[function(_dereq_,module,exports){
-module.exports = function(crs, denorm, point) {
-  var xin = point.x,
-    yin = point.y,
-    zin = point.z || 0.0;
-  var v, t, i;
-  for (i = 0; i < 3; i++) {
-    if (denorm && i === 2 && point.z === undefined) {
-      continue;
-    }
-    if (i === 0) {
-      v = xin;
-      t = 'x';
-    }
-    else if (i === 1) {
-      v = yin;
-      t = 'y';
-    }
-    else {
-      v = zin;
-      t = 'z';
-    }
-    switch (crs.axis[i]) {
-    case 'e':
-      point[t] = v;
-      break;
-    case 'w':
-      point[t] = -v;
-      break;
-    case 'n':
-      point[t] = v;
-      break;
-    case 's':
-      point[t] = -v;
-      break;
-    case 'u':
-      if (point[t] !== undefined) {
-        point.z = v;
-      }
-      break;
-    case 'd':
-      if (point[t] !== undefined) {
-        point.z = -v;
-      }
-      break;
-    default:
-      //console.log("ERROR: unknow axis ("+crs.axis[i]+") - check definition of "+crs.projName);
-      return null;
-    }
-  }
-  return point;
-};
-
-},{}],4:[function(_dereq_,module,exports){
-var HALF_PI = Math.PI/2;
-var sign = _dereq_('./sign');
-
-module.exports = function(x) {
-  return (Math.abs(x) < HALF_PI) ? x : (x - (sign(x) * Math.PI));
-};
-},{"./sign":21}],5:[function(_dereq_,module,exports){
-var TWO_PI = Math.PI * 2;
-// SPI is slightly greater than Math.PI, so values that exceed the -180..180
-// degree range by a tiny amount don't get wrapped. This prevents points that
-// have drifted from their original location along the 180th meridian (due to
-// floating point error) from changing their sign.
-var SPI = 3.14159265359;
-var sign = _dereq_('./sign');
-
-module.exports = function(x) {
-  return (Math.abs(x) <= SPI) ? x : (x - (sign(x) * TWO_PI));
-};
-},{"./sign":21}],6:[function(_dereq_,module,exports){
-module.exports = function(x) {
-  if (Math.abs(x) > 1) {
-    x = (x > 1) ? 1 : -1;
-  }
-  return Math.asin(x);
-};
-},{}],7:[function(_dereq_,module,exports){
-module.exports = function(x) {
-  return (1 - 0.25 * x * (1 + x / 16 * (3 + 1.25 * x)));
-};
-},{}],8:[function(_dereq_,module,exports){
-module.exports = function(x) {
-  return (0.375 * x * (1 + 0.25 * x * (1 + 0.46875 * x)));
-};
-},{}],9:[function(_dereq_,module,exports){
-module.exports = function(x) {
-  return (0.05859375 * x * x * (1 + 0.75 * x));
-};
-},{}],10:[function(_dereq_,module,exports){
-module.exports = function(x) {
-  return (x * x * x * (35 / 3072));
-};
-},{}],11:[function(_dereq_,module,exports){
-module.exports = function(a, e, sinphi) {
-  var temp = e * sinphi;
-  return a / Math.sqrt(1 - temp * temp);
-};
-},{}],12:[function(_dereq_,module,exports){
-module.exports = function(ml, e0, e1, e2, e3) {
-  var phi;
-  var dphi;
-
-  phi = ml / e0;
-  for (var i = 0; i < 15; i++) {
-    dphi = (ml - (e0 * phi - e1 * Math.sin(2 * phi) + e2 * Math.sin(4 * phi) - e3 * Math.sin(6 * phi))) / (e0 - 2 * e1 * Math.cos(2 * phi) + 4 * e2 * Math.cos(4 * phi) - 6 * e3 * Math.cos(6 * phi));
-    phi += dphi;
-    if (Math.abs(dphi) <= 0.0000000001) {
-      return phi;
-    }
-  }
-
-  //..reportError("IMLFN-CONV:Latitude failed to converge after 15 iterations");
-  return NaN;
-};
-},{}],13:[function(_dereq_,module,exports){
-var HALF_PI = Math.PI/2;
-
-module.exports = function(eccent, q) {
-  var temp = 1 - (1 - eccent * eccent) / (2 * eccent) * Math.log((1 - eccent) / (1 + eccent));
-  if (Math.abs(Math.abs(q) - temp) < 1.0E-6) {
-    if (q < 0) {
-      return (-1 * HALF_PI);
-    }
-    else {
-      return HALF_PI;
-    }
-  }
-  //var phi = 0.5* q/(1-eccent*eccent);
-  var phi = Math.asin(0.5 * q);
-  var dphi;
-  var sin_phi;
-  var cos_phi;
-  var con;
-  for (var i = 0; i < 30; i++) {
-    sin_phi = Math.sin(phi);
-    cos_phi = Math.cos(phi);
-    con = eccent * sin_phi;
-    dphi = Math.pow(1 - con * con, 2) / (2 * cos_phi) * (q / (1 - eccent * eccent) - sin_phi / (1 - con * con) + 0.5 / eccent * Math.log((1 - con) / (1 + con)));
-    phi += dphi;
-    if (Math.abs(dphi) <= 0.0000000001) {
-      return phi;
-    }
-  }
-
-  //console.log("IQSFN-CONV:Latitude failed to converge after 30 iterations");
-  return NaN;
-};
-},{}],14:[function(_dereq_,module,exports){
-module.exports = function(e0, e1, e2, e3, phi) {
-  return (e0 * phi - e1 * Math.sin(2 * phi) + e2 * Math.sin(4 * phi) - e3 * Math.sin(6 * phi));
-};
-},{}],15:[function(_dereq_,module,exports){
-module.exports = function(eccent, sinphi, cosphi) {
-  var con = eccent * sinphi;
-  return cosphi / (Math.sqrt(1 - con * con));
-};
-},{}],16:[function(_dereq_,module,exports){
-var HALF_PI = Math.PI/2;
-module.exports = function(eccent, ts) {
-  var eccnth = 0.5 * eccent;
-  var con, dphi;
-  var phi = HALF_PI - 2 * Math.atan(ts);
-  for (var i = 0; i <= 15; i++) {
-    con = eccent * Math.sin(phi);
-    dphi = HALF_PI - 2 * Math.atan(ts * (Math.pow(((1 - con) / (1 + con)), eccnth))) - phi;
-    phi += dphi;
-    if (Math.abs(dphi) <= 0.0000000001) {
-      return phi;
-    }
-  }
-  //console.log("phi2z has NoConvergence");
-  return -9999;
-};
-},{}],17:[function(_dereq_,module,exports){
-var C00 = 1;
-var C02 = 0.25;
-var C04 = 0.046875;
-var C06 = 0.01953125;
-var C08 = 0.01068115234375;
-var C22 = 0.75;
-var C44 = 0.46875;
-var C46 = 0.01302083333333333333;
-var C48 = 0.00712076822916666666;
-var C66 = 0.36458333333333333333;
-var C68 = 0.00569661458333333333;
-var C88 = 0.3076171875;
-
-module.exports = function(es) {
-  var en = [];
-  en[0] = C00 - es * (C02 + es * (C04 + es * (C06 + es * C08)));
-  en[1] = es * (C22 - es * (C04 + es * (C06 + es * C08)));
-  var t = es * es;
-  en[2] = t * (C44 - es * (C46 + es * C48));
-  t *= es;
-  en[3] = t * (C66 - es * C68);
-  en[4] = t * es * C88;
-  return en;
-};
-},{}],18:[function(_dereq_,module,exports){
-var pj_mlfn = _dereq_("./pj_mlfn");
-var EPSLN = 1.0e-10;
-var MAX_ITER = 20;
-module.exports = function(arg, es, en) {
-  var k = 1 / (1 - es);
-  var phi = arg;
-  for (var i = MAX_ITER; i; --i) { /* rarely goes over 2 iterations */
-    var s = Math.sin(phi);
-    var t = 1 - es * s * s;
-    //t = this.pj_mlfn(phi, s, Math.cos(phi), en) - arg;
-    //phi -= t * (t * Math.sqrt(t)) * k;
-    t = (pj_mlfn(phi, s, Math.cos(phi), en) - arg) * (t * Math.sqrt(t)) * k;
-    phi -= t;
-    if (Math.abs(t) < EPSLN) {
-      return phi;
-    }
-  }
-  //..reportError("cass:pj_inv_mlfn: Convergence error");
-  return phi;
-};
-},{"./pj_mlfn":19}],19:[function(_dereq_,module,exports){
-module.exports = function(phi, sphi, cphi, en) {
-  cphi *= sphi;
-  sphi *= sphi;
-  return (en[0] * phi - cphi * (en[1] + sphi * (en[2] + sphi * (en[3] + sphi * en[4]))));
-};
-},{}],20:[function(_dereq_,module,exports){
-module.exports = function(eccent, sinphi) {
-  var con;
-  if (eccent > 1.0e-7) {
-    con = eccent * sinphi;
-    return ((1 - eccent * eccent) * (sinphi / (1 - con * con) - (0.5 / eccent) * Math.log((1 - con) / (1 + con))));
-  }
-  else {
-    return (2 * sinphi);
-  }
-};
-},{}],21:[function(_dereq_,module,exports){
-module.exports = function(x) {
-  return x<0 ? -1 : 1;
-};
-},{}],22:[function(_dereq_,module,exports){
-module.exports = function(esinp, exp) {
-  return (Math.pow((1 - esinp) / (1 + esinp), exp));
-};
-},{}],23:[function(_dereq_,module,exports){
-module.exports = function (array){
-  var out = {
-    x: array[0],
-    y: array[1]
-  };
-  if (array.length>2) {
-    out.z = array[2];
-  }
-  if (array.length>3) {
-    out.m = array[3];
-  }
-  return out;
-};
-},{}],24:[function(_dereq_,module,exports){
-var HALF_PI = Math.PI/2;
-
-module.exports = function(eccent, phi, sinphi) {
-  var con = eccent * sinphi;
-  var com = 0.5 * eccent;
-  con = Math.pow(((1 - con) / (1 + con)), com);
-  return (Math.tan(0.5 * (HALF_PI - phi)) / con);
-};
-},{}],25:[function(_dereq_,module,exports){
-exports.wgs84 = {
-  towgs84: "0,0,0",
-  ellipse: "WGS84",
-  datumName: "WGS84"
-};
-exports.ch1903 = {
-  towgs84: "674.374,15.056,405.346",
-  ellipse: "bessel",
-  datumName: "swiss"
-};
-exports.ggrs87 = {
-  towgs84: "-199.87,74.79,246.62",
-  ellipse: "GRS80",
-  datumName: "Greek_Geodetic_Reference_System_1987"
-};
-exports.nad83 = {
-  towgs84: "0,0,0",
-  ellipse: "GRS80",
-  datumName: "North_American_Datum_1983"
-};
-exports.nad27 = {
-  nadgrids: "@conus,@alaska,@ntv2_0.gsb,@ntv1_can.dat",
-  ellipse: "clrk66",
-  datumName: "North_American_Datum_1927"
-};
-exports.potsdam = {
-  towgs84: "606.0,23.0,413.0",
-  ellipse: "bessel",
-  datumName: "Potsdam Rauenberg 1950 DHDN"
-};
-exports.carthage = {
-  towgs84: "-263.0,6.0,431.0",
-  ellipse: "clark80",
-  datumName: "Carthage 1934 Tunisia"
-};
-exports.hermannskogel = {
-  towgs84: "653.0,-212.0,449.0",
-  ellipse: "bessel",
-  datumName: "Hermannskogel"
-};
-exports.ire65 = {
-  towgs84: "482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15",
-  ellipse: "mod_airy",
-  datumName: "Ireland 1965"
-};
-exports.rassadiran = {
-  towgs84: "-133.63,-157.5,-158.62",
-  ellipse: "intl",
-  datumName: "Rassadiran"
-};
-exports.nzgd49 = {
-  towgs84: "59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993",
-  ellipse: "intl",
-  datumName: "New Zealand Geodetic Datum 1949"
-};
-exports.osgb36 = {
-  towgs84: "446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894",
-  ellipse: "airy",
-  datumName: "Airy 1830"
-};
-exports.s_jtsk = {
-  towgs84: "589,76,480",
-  ellipse: 'bessel',
-  datumName: 'S-JTSK (Ferro)'
-};
-exports.beduaram = {
-  towgs84: '-106,-87,188',
-  ellipse: 'clrk80',
-  datumName: 'Beduaram'
-};
-exports.gunung_segara = {
-  towgs84: '-403,684,41',
-  ellipse: 'bessel',
-  datumName: 'Gunung Segara Jakarta'
-};
-exports.rnb72 = {
-  towgs84: "106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1",
-  ellipse: "intl",
-  datumName: "Reseau National Belge 1972"
-};
-},{}],26:[function(_dereq_,module,exports){
-exports.MERIT = {
-  a: 6378137.0,
-  rf: 298.257,
-  ellipseName: "MERIT 1983"
-};
-exports.SGS85 = {
-  a: 6378136.0,
-  rf: 298.257,
-  ellipseName: "Soviet Geodetic System 85"
-};
-exports.GRS80 = {
-  a: 6378137.0,
-  rf: 298.257222101,
-  ellipseName: "GRS 1980(IUGG, 1980)"
-};
-exports.IAU76 = {
-  a: 6378140.0,
-  rf: 298.257,
-  ellipseName: "IAU 1976"
-};
-exports.airy = {
-  a: 6377563.396,
-  b: 6356256.910,
-  ellipseName: "Airy 1830"
-};
-exports.APL4 = {
-  a: 6378137,
-  rf: 298.25,
-  ellipseName: "Appl. Physics. 1965"
-};
-exports.NWL9D = {
-  a: 6378145.0,
-  rf: 298.25,
-  ellipseName: "Naval Weapons Lab., 1965"
-};
-exports.mod_airy = {
-  a: 6377340.189,
-  b: 6356034.446,
-  ellipseName: "Modified Airy"
-};
-exports.andrae = {
-  a: 6377104.43,
-  rf: 300.0,
-  ellipseName: "Andrae 1876 (Den., Iclnd.)"
-};
-exports.aust_SA = {
-  a: 6378160.0,
-  rf: 298.25,
-  ellipseName: "Australian Natl & S. Amer. 1969"
-};
-exports.GRS67 = {
-  a: 6378160.0,
-  rf: 298.2471674270,
-  ellipseName: "GRS 67(IUGG 1967)"
-};
-exports.bessel = {
-  a: 6377397.155,
-  rf: 299.1528128,
-  ellipseName: "Bessel 1841"
-};
-exports.bess_nam = {
-  a: 6377483.865,
-  rf: 299.1528128,
-  ellipseName: "Bessel 1841 (Namibia)"
-};
-exports.clrk66 = {
-  a: 6378206.4,
-  b: 6356583.8,
-  ellipseName: "Clarke 1866"
-};
-exports.clrk80 = {
-  a: 6378249.145,
-  rf: 293.4663,
-  ellipseName: "Clarke 1880 mod."
-};
-exports.clrk58 = {
-  a: 6378293.645208759,
-  rf: 294.2606763692654,
-  ellipseName: "Clarke 1858"
-};
-exports.CPM = {
-  a: 6375738.7,
-  rf: 334.29,
-  ellipseName: "Comm. des Poids et Mesures 1799"
-};
-exports.delmbr = {
-  a: 6376428.0,
-  rf: 311.5,
-  ellipseName: "Delambre 1810 (Belgium)"
-};
-exports.engelis = {
-  a: 6378136.05,
-  rf: 298.2566,
-  ellipseName: "Engelis 1985"
-};
-exports.evrst30 = {
-  a: 6377276.345,
-  rf: 300.8017,
-  ellipseName: "Everest 1830"
-};
-exports.evrst48 = {
-  a: 6377304.063,
-  rf: 300.8017,
-  ellipseName: "Everest 1948"
-};
-exports.evrst56 = {
-  a: 6377301.243,
-  rf: 300.8017,
-  ellipseName: "Everest 1956"
-};
-exports.evrst69 = {
-  a: 6377295.664,
-  rf: 300.8017,
-  ellipseName: "Everest 1969"
-};
-exports.evrstSS = {
-  a: 6377298.556,
-  rf: 300.8017,
-  ellipseName: "Everest (Sabah & Sarawak)"
-};
-exports.fschr60 = {
-  a: 6378166.0,
-  rf: 298.3,
-  ellipseName: "Fischer (Mercury Datum) 1960"
-};
-exports.fschr60m = {
-  a: 6378155.0,
-  rf: 298.3,
-  ellipseName: "Fischer 1960"
-};
-exports.fschr68 = {
-  a: 6378150.0,
-  rf: 298.3,
-  ellipseName: "Fischer 1968"
-};
-exports.helmert = {
-  a: 6378200.0,
-  rf: 298.3,
-  ellipseName: "Helmert 1906"
-};
-exports.hough = {
-  a: 6378270.0,
-  rf: 297.0,
-  ellipseName: "Hough"
-};
-exports.intl = {
-  a: 6378388.0,
-  rf: 297.0,
-  ellipseName: "International 1909 (Hayford)"
-};
-exports.kaula = {
-  a: 6378163.0,
-  rf: 298.24,
-  ellipseName: "Kaula 1961"
-};
-exports.lerch = {
-  a: 6378139.0,
-  rf: 298.257,
-  ellipseName: "Lerch 1979"
-};
-exports.mprts = {
-  a: 6397300.0,
-  rf: 191.0,
-  ellipseName: "Maupertius 1738"
-};
-exports.new_intl = {
-  a: 6378157.5,
-  b: 6356772.2,
-  ellipseName: "New International 1967"
-};
-exports.plessis = {
-  a: 6376523.0,
-  rf: 6355863.0,
-  ellipseName: "Plessis 1817 (France)"
-};
-exports.krass = {
-  a: 6378245.0,
-  rf: 298.3,
-  ellipseName: "Krassovsky, 1942"
-};
-exports.SEasia = {
-  a: 6378155.0,
-  b: 6356773.3205,
-  ellipseName: "Southeast Asia"
-};
-exports.walbeck = {
-  a: 6376896.0,
-  b: 6355834.8467,
-  ellipseName: "Walbeck"
-};
-exports.WGS60 = {
-  a: 6378165.0,
-  rf: 298.3,
-  ellipseName: "WGS 60"
-};
-exports.WGS66 = {
-  a: 6378145.0,
-  rf: 298.25,
-  ellipseName: "WGS 66"
-};
-exports.WGS7 = {
-  a: 6378135.0,
-  rf: 298.26,
-  ellipseName: "WGS 72"
-};
-exports.WGS84 = {
-  a: 6378137.0,
-  rf: 298.257223563,
-  ellipseName: "WGS 84"
-};
-exports.sphere = {
-  a: 6370997.0,
-  b: 6370997.0,
-  ellipseName: "Normal Sphere (r=6370997)"
-};
-},{}],27:[function(_dereq_,module,exports){
-exports.greenwich = 0.0; //"0dE",
-exports.lisbon = -9.131906111111; //"9d07'54.862\"W",
-exports.paris = 2.337229166667; //"2d20'14.025\"E",
-exports.bogota = -74.080916666667; //"74d04'51.3\"W",
-exports.madrid = -3.687938888889; //"3d41'16.58\"W",
-exports.rome = 12.452333333333; //"12d27'8.4\"E",
-exports.bern = 7.439583333333; //"7d26'22.5\"E",
-exports.jakarta = 106.807719444444; //"106d48'27.79\"E",
-exports.ferro = -17.666666666667; //"17d40'W",
-exports.brussels = 4.367975; //"4d22'4.71\"E",
-exports.stockholm = 18.058277777778; //"18d3'29.8\"E",
-exports.athens = 23.7163375; //"23d42'58.815\"E",
-exports.oslo = 10.722916666667; //"10d43'22.5\"E"
-},{}],28:[function(_dereq_,module,exports){
-exports.ft = {to_meter: 0.3048};
-exports['us-ft'] = {to_meter: 1200 / 3937};
-
-},{}],29:[function(_dereq_,module,exports){
-var proj = _dereq_('./Proj');
-var transform = _dereq_('./transform');
-var wgs84 = proj('WGS84');
-
-function transformer(from, to, coords) {
-  var transformedArray;
-  if (Array.isArray(coords)) {
-    transformedArray = transform(from, to, coords);
-    if (coords.length === 3) {
-      return [transformedArray.x, transformedArray.y, transformedArray.z];
-    }
-    else {
-      return [transformedArray.x, transformedArray.y];
-    }
-  }
-  else {
-    return transform(from, to, coords);
-  }
-}
-
-function checkProj(item) {
-  if (item instanceof proj) {
-    return item;
-  }
-  if (item.oProj) {
-    return item.oProj;
-  }
-  return proj(item);
-}
-function proj4(fromProj, toProj, coord) {
-  fromProj = checkProj(fromProj);
-  var single = false;
-  var obj;
-  if (typeof toProj === 'undefined') {
-    toProj = fromProj;
-    fromProj = wgs84;
-    single = true;
-  }
-  else if (typeof toProj.x !== 'undefined' || Array.isArray(toProj)) {
-    coord = toProj;
-    toProj = fromProj;
-    fromProj = wgs84;
-    single = true;
-  }
-  toProj = checkProj(toProj);
-  if (coord) {
-    return transformer(fromProj, toProj, coord);
-  }
-  else {
-    obj = {
-      forward: function(coords) {
-        return transformer(fromProj, toProj, coords);
-      },
-      inverse: function(coords) {
-        return transformer(toProj, fromProj, coords);
-      }
-    };
-    if (single) {
-      obj.oProj = toProj;
-    }
-    return obj;
-  }
-}
-module.exports = proj4;
-},{"./Proj":2,"./transform":65}],30:[function(_dereq_,module,exports){
-var HALF_PI = Math.PI/2;
-var PJD_3PARAM = 1;
-var PJD_7PARAM = 2;
-var PJD_GRIDSHIFT = 3;
-var PJD_WGS84 = 4; // WGS84 or equivalent
-var PJD_NODATUM = 5; // WGS84 or equivalent
-var SEC_TO_RAD = 4.84813681109535993589914102357e-6;
-var AD_C = 1.0026000;
-var COS_67P5 = 0.38268343236508977;
-var datum = function(proj) {
-  if (!(this instanceof datum)) {
-    return new datum(proj);
-  }
-  this.datum_type = PJD_WGS84; //default setting
-  if (!proj) {
-    return;
-  }
-  if (proj.datumCode && proj.datumCode === 'none') {
-    this.datum_type = PJD_NODATUM;
-  }
-
-  if (proj.datum_params) {
-    this.datum_params = proj.datum_params.map(parseFloat);
-    if (this.datum_params[0] !== 0 || this.datum_params[1] !== 0 || this.datum_params[2] !== 0) {
-      this.datum_type = PJD_3PARAM;
-    }
-    if (this.datum_params.length > 3) {
-      if (this.datum_params[3] !== 0 || this.datum_params[4] !== 0 || this.datum_params[5] !== 0 || this.datum_params[6] !== 0) {
-        this.datum_type = PJD_7PARAM;
-        this.datum_params[3] *= SEC_TO_RAD;
-        this.datum_params[4] *= SEC_TO_RAD;
-        this.datum_params[5] *= SEC_TO_RAD;
-        this.datum_params[6] = (this.datum_params[6] / 1000000.0) + 1.0;
-      }
-    }
-  }
-
-  // DGR 2011-03-21 : nadgrids support
-  this.datum_type = proj.grids ? PJD_GRIDSHIFT : this.datum_type;
-
-  this.a = proj.a; //datum object also uses these values
-  this.b = proj.b;
-  this.es = proj.es;
-  this.ep2 = proj.ep2;
-  if (this.datum_type === PJD_GRIDSHIFT) {
-    this.grids = proj.grids;
-  }
-};
-datum.prototype = {
-
-
-  /****************************************************************/
-  // cs_compare_datums()
-  //   Returns TRUE if the two datums match, otherwise FALSE.
-  compare_datums: function(dest) {
-    if (this.datum_type !== dest.datum_type) {
-      return false; // false, datums are not equal
-    }
-    else if (this.a !== dest.a || Math.abs(this.es - dest.es) > 0.000000000050) {
-      // the tolerence for es is to ensure that GRS80 and WGS84
-      // are considered identical
-      return false;
-    }
-    else if (this.datum_type === PJD_3PARAM) {
-      return (this.datum_params[0] === dest.datum_params[0] && this.datum_params[1] === dest.datum_params[1] && this.datum_params[2] === dest.datum_params[2]);
-    }
-    else if (this.datum_type === PJD_7PARAM) {
-      return (this.datum_params[0] === dest.datum_params[0] && this.datum_params[1] === dest.datum_params[1] && this.datum_params[2] === dest.datum_params[2] && this.datum_params[3] === dest.datum_params[3] && this.datum_params[4] === dest.datum_params[4] && this.datum_params[5] === dest.datum_params[5] && this.datum_params[6] === dest.datum_params[6]);
-    }
-    else if (this.datum_type === PJD_GRIDSHIFT || dest.datum_type === PJD_GRIDSHIFT) {
-      //alert("ERROR: Grid shift transformations are not implemented.");
-      //return false
-      //DGR 2012-07-29 lazy ...
-      return this.nadgrids === dest.nadgrids;
-    }
-    else {
-      return true; // datums are equal
-    }
-  }, // cs_compare_datums()
-
-  /*
-   * The function Convert_Geodetic_To_Geocentric converts geodetic coordinates
-   * (latitude, longitude, and height) to geocentric coordinates (X, Y, Z),
-   * according to the current ellipsoid parameters.
-   *
-   *    Latitude  : Geodetic latitude in radians                     (input)
-   *    Longitude : Geodetic longitude in radians                    (input)
-   *    Height    : Geodetic height, in meters                       (input)
-   *    X         : Calculated Geocentric X coordinate, in meters    (output)
-   *    Y         : Calculated Geocentric Y coordinate, in meters    (output)
-   *    Z         : Calculated Geocentric Z coordinate, in meters    (output)
-   *
-   */
-  geodetic_to_geocentric: function(p) {
-    var Longitude = p.x;
-    var Latitude = p.y;
-    var Height = p.z ? p.z : 0; //Z value not always supplied
-    var X; // output
-    var Y;
-    var Z;
-
-    var Error_Code = 0; //  GEOCENT_NO_ERROR;
-    var Rn; /*  Earth radius at location  */
-    var Sin_Lat; /*  Math.sin(Latitude)  */
-    var Sin2_Lat; /*  Square of Math.sin(Latitude)  */
-    var Cos_Lat; /*  Math.cos(Latitude)  */
-
-    /*
-     ** Don't blow up if Latitude is just a little out of the value
-     ** range as it may just be a rounding issue.  Also removed longitude
-     ** test, it should be wrapped by Math.cos() and Math.sin().  NFW for PROJ.4, Sep/2001.
-     */
-    if (Latitude < -HALF_PI && Latitude > -1.001 * HALF_PI) {
-      Latitude = -HALF_PI;
-    }
-    else if (Latitude > HALF_PI && Latitude < 1.001 * HALF_PI) {
-      Latitude = HALF_PI;
-    }
-    else if ((Latitude < -HALF_PI) || (Latitude > HALF_PI)) {
-      /* Latitude out of range */
-      //..reportError('geocent:lat out of range:' + Latitude);
-      return null;
-    }
-
-    if (Longitude > Math.PI) {
-      Longitude -= (2 * Math.PI);
-    }
-    Sin_Lat = Math.sin(Latitude);
-    Cos_Lat = Math.cos(Latitude);
-    Sin2_Lat = Sin_Lat * Sin_Lat;
-    Rn = this.a / (Math.sqrt(1.0e0 - this.es * Sin2_Lat));
-    X = (Rn + Height) * Cos_Lat * Math.cos(Longitude);
-    Y = (Rn + Height) * Cos_Lat * Math.sin(Longitude);
-    Z = ((Rn * (1 - this.es)) + Height) * Sin_Lat;
-
-    p.x = X;
-    p.y = Y;
-    p.z = Z;
-    return Error_Code;
-  }, // cs_geodetic_to_geocentric()
-
-
-  geocentric_to_geodetic: function(p) {
-    /* local defintions and variables */
-    /* end-criterium of loop, accuracy of sin(Latitude) */
-    var genau = 1e-12;
-    var genau2 = (genau * genau);
-    var maxiter = 30;
-
-    var P; /* distance between semi-minor axis and location */
-    var RR; /* distance between center and location */
-    var CT; /* sin of geocentric latitude */
-    var ST; /* cos of geocentric latitude */
-    var RX;
-    var RK;
-    var RN; /* Earth radius at location */
-    var CPHI0; /* cos of start or old geodetic latitude in iterations */
-    var SPHI0; /* sin of start or old geodetic latitude in iterations */
-    var CPHI; /* cos of searched geodetic latitude */
-    var SPHI; /* sin of searched geodetic latitude */
-    var SDPHI; /* end-criterium: addition-theorem of sin(Latitude(iter)-Latitude(iter-1)) */
-    var At_Pole; /* indicates location is in polar region */
-    var iter; /* # of continous iteration, max. 30 is always enough (s.a.) */
-
-    var X = p.x;
-    var Y = p.y;
-    var Z = p.z ? p.z : 0.0; //Z value not always supplied
-    var Longitude;
-    var Latitude;
-    var Height;
-
-    At_Pole = false;
-    P = Math.sqrt(X * X + Y * Y);
-    RR = Math.sqrt(X * X + Y * Y + Z * Z);
-
-    /*      special cases for latitude and longitude */
-    if (P / this.a < genau) {
-
-      /*  special case, if P=0. (X=0., Y=0.) */
-      At_Pole = true;
-      Longitude = 0.0;
-
-      /*  if (X,Y,Z)=(0.,0.,0.) then Height becomes semi-minor axis
-       *  of ellipsoid (=center of mass), Latitude becomes PI/2 */
-      if (RR / this.a < genau) {
-        Latitude = HALF_PI;
-        Height = -this.b;
-        return;
-      }
-    }
-    else {
-      /*  ellipsoidal (geodetic) longitude
-       *  interval: -PI < Longitude <= +PI */
-      Longitude = Math.atan2(Y, X);
-    }
-
-    /* --------------------------------------------------------------
-     * Following iterative algorithm was developped by
-     * "Institut for Erdmessung", University of Hannover, July 1988.
-     * Internet: www.ife.uni-hannover.de
-     * Iterative computation of CPHI,SPHI and Height.
-     * Iteration of CPHI and SPHI to 10**-12 radian resp.
-     * 2*10**-7 arcsec.
-     * --------------------------------------------------------------
-     */
-    CT = Z / RR;
-    ST = P / RR;
-    RX = 1.0 / Math.sqrt(1.0 - this.es * (2.0 - this.es) * ST * ST);
-    CPHI0 = ST * (1.0 - this.es) * RX;
-    SPHI0 = CT * RX;
-    iter = 0;
-
-    /* loop to find sin(Latitude) resp. Latitude
-     * until |sin(Latitude(iter)-Latitude(iter-1))| < genau */
-    do {
-      iter++;
-      RN = this.a / Math.sqrt(1.0 - this.es * SPHI0 * SPHI0);
-
-      /*  ellipsoidal (geodetic) height */
-      Height = P * CPHI0 + Z * SPHI0 - RN * (1.0 - this.es * SPHI0 * SPHI0);
-
-      RK = this.es * RN / (RN + Height);
-      RX = 1.0 / Math.sqrt(1.0 - RK * (2.0 - RK) * ST * ST);
-      CPHI = ST * (1.0 - RK) * RX;
-      SPHI = CT * RX;
-      SDPHI = SPHI * CPHI0 - CPHI * SPHI0;
-      CPHI0 = CPHI;
-      SPHI0 = SPHI;
-    }
-    while (SDPHI * SDPHI > genau2 && iter < maxiter);
-
-    /*      ellipsoidal (geodetic) latitude */
-    Latitude = Math.atan(SPHI / Math.abs(CPHI));
-
-    p.x = Longitude;
-    p.y = Latitude;
-    p.z = Height;
-    return p;
-  }, // cs_geocentric_to_geodetic()
-
-  /** Convert_Geocentric_To_Geodetic
-   * The method used here is derived from 'An Improved Algorithm for
-   * Geocentric to Geodetic Coordinate Conversion', by Ralph Toms, Feb 1996
-   */
-  geocentric_to_geodetic_noniter: function(p) {
-    var X = p.x;
-    var Y = p.y;
-    var Z = p.z ? p.z : 0; //Z value not always supplied
-    var Longitude;
-    var Latitude;
-    var Height;
-
-    var W; /* distance from Z axis */
-    var W2; /* square of distance from Z axis */
-    var T0; /* initial estimate of vertical component */
-    var T1; /* corrected estimate of vertical component */
-    var S0; /* initial estimate of horizontal component */
-    var S1; /* corrected estimate of horizontal component */
-    var Sin_B0; /* Math.sin(B0), B0 is estimate of Bowring aux variable */
-    var Sin3_B0; /* cube of Math.sin(B0) */
-    var Cos_B0; /* Math.cos(B0) */
-    var Sin_p1; /* Math.sin(phi1), phi1 is estimated latitude */
-    var Cos_p1; /* Math.cos(phi1) */
-    var Rn; /* Earth radius at location */
-    var Sum; /* numerator of Math.cos(phi1) */
-    var At_Pole; /* indicates location is in polar region */
-
-    X = parseFloat(X); // cast from string to float
-    Y = parseFloat(Y);
-    Z = parseFloat(Z);
-
-    At_Pole = false;
-    if (X !== 0.0) {
-      Longitude = Math.atan2(Y, X);
-    }
-    else {
-      if (Y > 0) {
-        Longitude = HALF_PI;
-      }
-      else if (Y < 0) {
-        Longitude = -HALF_PI;
-      }
-      else {
-        At_Pole = true;
-        Longitude = 0.0;
-        if (Z > 0.0) { /* north pole */
-          Latitude = HALF_PI;
-        }
-        else if (Z < 0.0) { /* south pole */
-          Latitude = -HALF_PI;
-        }
-        else { /* center of earth */
-          Latitude = HALF_PI;
-          Height = -this.b;
-          return;
-        }
-      }
-    }
-    W2 = X * X + Y * Y;
-    W = Math.sqrt(W2);
-    T0 = Z * AD_C;
-    S0 = Math.sqrt(T0 * T0 + W2);
-    Sin_B0 = T0 / S0;
-    Cos_B0 = W / S0;
-    Sin3_B0 = Sin_B0 * Sin_B0 * Sin_B0;
-    T1 = Z + this.b * this.ep2 * Sin3_B0;
-    Sum = W - this.a * this.es * Cos_B0 * Cos_B0 * Cos_B0;
-    S1 = Math.sqrt(T1 * T1 + Sum * Sum);
-    Sin_p1 = T1 / S1;
-    Cos_p1 = Sum / S1;
-    Rn = this.a / Math.sqrt(1.0 - this.es * Sin_p1 * Sin_p1);
-    if (Cos_p1 >= COS_67P5) {
-      Height = W / Cos_p1 - Rn;
-    }
-    else if (Cos_p1 <= -COS_67P5) {
-      Height = W / -Cos_p1 - Rn;
-    }
-    else {
-      Height = Z / Sin_p1 + Rn * (this.es - 1.0);
-    }
-    if (At_Pole === false) {
-      Latitude = Math.atan(Sin_p1 / Cos_p1);
-    }
-
-    p.x = Longitude;
-    p.y = Latitude;
-    p.z = Height;
-    return p;
-  }, // geocentric_to_geodetic_noniter()
-
-  /****************************************************************/
-  // pj_geocentic_to_wgs84( p )
-  //  p = point to transform in geocentric coordinates (x,y,z)
-  geocentric_to_wgs84: function(p) {
-
-    if (this.datum_type === PJD_3PARAM) {
-      // if( x[io] === HUGE_VAL )
-      //    continue;
-      p.x += this.datum_params[0];
-      p.y += this.datum_params[1];
-      p.z += this.datum_params[2];
-
-    }
-    else if (this.datum_type === PJD_7PARAM) {
-      var Dx_BF = this.datum_params[0];
-      var Dy_BF = this.datum_params[1];
-      var Dz_BF = this.datum_params[2];
-      var Rx_BF = this.datum_params[3];
-      var Ry_BF = this.datum_params[4];
-      var Rz_BF = this.datum_params[5];
-      var M_BF = this.datum_params[6];
-      // if( x[io] === HUGE_VAL )
-      //    continue;
-      var x_out = M_BF * (p.x - Rz_BF * p.y + Ry_BF * p.z) + Dx_BF;
-      var y_out = M_BF * (Rz_BF * p.x + p.y - Rx_BF * p.z) + Dy_BF;
-      var z_out = M_BF * (-Ry_BF * p.x + Rx_BF * p.y + p.z) + Dz_BF;
-      p.x = x_out;
-      p.y = y_out;
-      p.z = z_out;
-    }
-  }, // cs_geocentric_to_wgs84
-
-  /****************************************************************/
-  // pj_geocentic_from_wgs84()
-  //  coordinate system definition,
-  //  point to transform in geocentric coordinates (x,y,z)
-  geocentric_from_wgs84: function(p) {
-
-    if (this.datum_type === PJD_3PARAM) {
-      //if( x[io] === HUGE_VAL )
-      //    continue;
-      p.x -= this.datum_params[0];
-      p.y -= this.datum_params[1];
-      p.z -= this.datum_params[2];
-
-    }
-    else if (this.datum_type === PJD_7PARAM) {
-      var Dx_BF = this.datum_params[0];
-      var Dy_BF = this.datum_params[1];
-      var Dz_BF = this.datum_params[2];
-      var Rx_BF = this.datum_params[3];
-      var Ry_BF = this.datum_params[4];
-      var Rz_BF = this.datum_params[5];
-      var M_BF = this.datum_params[6];
-      var x_tmp = (p.x - Dx_BF) / M_BF;
-      var y_tmp = (p.y - Dy_BF) / M_BF;
-      var z_tmp = (p.z - Dz_BF) / M_BF;
-      //if( x[io] === HUGE_VAL )
-      //    continue;
-
-      p.x = x_tmp + Rz_BF * y_tmp - Ry_BF * z_tmp;
-      p.y = -Rz_BF * x_tmp + y_tmp + Rx_BF * z_tmp;
-      p.z = Ry_BF * x_tmp - Rx_BF * y_tmp + z_tmp;
-    } //cs_geocentric_from_wgs84()
-  }
-};
-
-/** point object, nothing fancy, just allows values to be
-    passed back and forth by reference rather than by value.
-    Other point classes may be used as long as they have
-    x and y properties, which will get modified in the transform method.
-*/
-module.exports = datum;
-
-},{}],31:[function(_dereq_,module,exports){
-var PJD_3PARAM = 1;
-var PJD_7PARAM = 2;
-var PJD_GRIDSHIFT = 3;
-var PJD_NODATUM = 5; // WGS84 or equivalent
-var SRS_WGS84_SEMIMAJOR = 6378137; // only used in grid shift transforms
-var SRS_WGS84_ESQUARED = 0.006694379990141316; //DGR: 2012-07-29
-module.exports = function(source, dest, point) {
-  var wp, i, l;
-
-  function checkParams(fallback) {
-    return (fallback === PJD_3PARAM || fallback === PJD_7PARAM);
-  }
-  // Short cut if the datums are identical.
-  if (source.compare_datums(dest)) {
-    return point; // in this case, zero is sucess,
-    // whereas cs_compare_datums returns 1 to indicate TRUE
-    // confusing, should fix this
-  }
-
-  // Explicitly skip datum transform by setting 'datum=none' as parameter for either source or dest
-  if (source.datum_type === PJD_NODATUM || dest.datum_type === PJD_NODATUM) {
-    return point;
-  }
-
-  //DGR: 2012-07-29 : add nadgrids support (begin)
-  var src_a = source.a;
-  var src_es = source.es;
-
-  var dst_a = dest.a;
-  var dst_es = dest.es;
-
-  var fallback = source.datum_type;
-  // If this datum requires grid shifts, then apply it to geodetic coordinates.
-  if (fallback === PJD_GRIDSHIFT) {
-    if (this.apply_gridshift(source, 0, point) === 0) {
-      source.a = SRS_WGS84_SEMIMAJOR;
-      source.es = SRS_WGS84_ESQUARED;
-    }
-    else {
-      // try 3 or 7 params transformation or nothing ?
-      if (!source.datum_params) {
-        source.a = src_a;
-        source.es = source.es;
-        return point;
-      }
-      wp = 1;
-      for (i = 0, l = source.datum_params.length; i < l; i++) {
-        wp *= source.datum_params[i];
-      }
-      if (wp === 0) {
-        source.a = src_a;
-        source.es = source.es;
-        return point;
-      }
-      if (source.datum_params.length > 3) {
-        fallback = PJD_7PARAM;
-      }
-      else {
-        fallback = PJD_3PARAM;
-      }
-    }
-  }
-  if (dest.datum_type === PJD_GRIDSHIFT) {
-    dest.a = SRS_WGS84_SEMIMAJOR;
-    dest.es = SRS_WGS84_ESQUARED;
-  }
-  // Do we need to go through geocentric coordinates?
-  if (source.es !== dest.es || source.a !== dest.a || checkParams(fallback) || checkParams(dest.datum_type)) {
-    //DGR: 2012-07-29 : add nadgrids support (end)
-    // Convert to geocentric coordinates.
-    source.geodetic_to_geocentric(point);
-    // CHECK_RETURN;
-    // Convert between datums
-    if (checkParams(source.datum_type)) {
-      source.geocentric_to_wgs84(point);
-      // CHECK_RETURN;
-    }
-    if (checkParams(dest.datum_type)) {
-      dest.geocentric_from_wgs84(point);
-      // CHECK_RETURN;
-    }
-    // Convert back to geodetic coordinates
-    dest.geocentric_to_geodetic(point);
-    // CHECK_RETURN;
-  }
-  // Apply grid shift to destination if required
-  if (dest.datum_type === PJD_GRIDSHIFT) {
-    this.apply_gridshift(dest, 1, point);
-    // CHECK_RETURN;
-  }
-
-  source.a = src_a;
-  source.es = src_es;
-  dest.a = dst_a;
-  dest.es = dst_es;
-
-  return point;
-};
-
-
-},{}],32:[function(_dereq_,module,exports){
-var globals = _dereq_('./global');
-var parseProj = _dereq_('./projString');
-var wkt = _dereq_('./wkt');
-
-function defs(name) {
-  /*global console*/
-  var that = this;
-  if (arguments.length === 2) {
-    var def = arguments[1];
-    if (typeof def === 'string') {
-      if (def.charAt(0) === '+') {
-        defs[name] = parseProj(arguments[1]);
-      }
-      else {
-        defs[name] = wkt(arguments[1]);
-      }
-    } else {
-      defs[name] = def;
-    }
-  }
-  else if (arguments.length === 1) {
-    if (Array.isArray(name)) {
-      return name.map(function(v) {
-        if (Array.isArray(v)) {
-          defs.apply(that, v);
-        }
-        else {
-          defs(v);
-        }
-      });
-    }
-    else if (typeof name === 'string') {
-      if (name in defs) {
-        return defs[name];
-      }
-    }
-    else if ('EPSG' in name) {
-      defs['EPSG:' + name.EPSG] = name;
-    }
-    else if ('ESRI' in name) {
-      defs['ESRI:' + name.ESRI] = name;
-    }
-    else if ('IAU2000' in name) {
-      defs['IAU2000:' + name.IAU2000] = name;
-    }
-    else {
-      console.log(name);
-    }
-    return;
-  }
-
-
-}
-globals(defs);
-module.exports = defs;
-
-},{"./global":35,"./projString":38,"./wkt":66}],33:[function(_dereq_,module,exports){
-var Datum = _dereq_('./constants/Datum');
-var Ellipsoid = _dereq_('./constants/Ellipsoid');
-var extend = _dereq_('./extend');
-var datum = _dereq_('./datum');
-var EPSLN = 1.0e-10;
-// ellipoid pj_set_ell.c
-var SIXTH = 0.1666666666666666667;
-/* 1/6 */
-var RA4 = 0.04722222222222222222;
-/* 17/360 */
-var RA6 = 0.02215608465608465608;
-module.exports = function(json) {
-  // DGR 2011-03-20 : nagrids -> nadgrids
-  if (json.datumCode && json.datumCode !== 'none') {
-    var datumDef = Datum[json.datumCode];
-    if (datumDef) {
-      json.datum_params = datumDef.towgs84 ? datumDef.towgs84.split(',') : null;
-      json.ellps = datumDef.ellipse;
-      json.datumName = datumDef.datumName ? datumDef.datumName : json.datumCode;
-    }
-  }
-  if (!json.a) { // do we have an ellipsoid?
-    var ellipse = Ellipsoid[json.ellps] ? Ellipsoid[json.ellps] : Ellipsoid.WGS84;
-    extend(json, ellipse);
-  }
-  if (json.rf && !json.b) {
-    json.b = (1.0 - 1.0 / json.rf) * json.a;
-  }
-  if (json.rf === 0 || Math.abs(json.a - json.b) < EPSLN) {
-    json.sphere = true;
-    json.b = json.a;
-  }
-  json.a2 = json.a * json.a; // used in geocentric
-  json.b2 = json.b * json.b; // used in geocentric
-  json.es = (json.a2 - json.b2) / json.a2; // e ^ 2
-  json.e = Math.sqrt(json.es); // eccentricity
-  if (json.R_A) {
-    json.a *= 1 - json.es * (SIXTH + json.es * (RA4 + json.es * RA6));
-    json.a2 = json.a * json.a;
-    json.b2 = json.b * json.b;
-    json.es = 0;
-  }
-  json.ep2 = (json.a2 - json.b2) / json.b2; // used in geocentric
-  if (!json.k0) {
-    json.k0 = 1.0; //default value
-  }
-  //DGR 2010-11-12: axis
-  if (!json.axis) {
-    json.axis = "enu";
-  }
-
-  if (!json.datum) {
-    json.datum = datum(json);
-  }
-  return json;
-};
-
-},{"./constants/Datum":25,"./constants/Ellipsoid":26,"./datum":30,"./extend":34}],34:[function(_dereq_,module,exports){
-module.exports = function(destination, source) {
-  destination = destination || {};
-  var value, property;
-  if (!source) {
-    return destination;
-  }
-  for (property in source) {
-    value = source[property];
-    if (value !== undefined) {
-      destination[property] = value;
-    }
-  }
-  return destination;
-};
-
-},{}],35:[function(_dereq_,module,exports){
-module.exports = function(defs) {
-  defs('EPSG:4326', "+title=WGS 84 (long/lat) +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees");
-  defs('EPSG:4269', "+title=NAD83 (long/lat) +proj=longlat +a=6378137.0 +b=6356752.31414036 +ellps=GRS80 +datum=NAD83 +units=degrees");
-  defs('EPSG:3857', "+title=WGS 84 / Pseudo-Mercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs");
-
-  defs.WGS84 = defs['EPSG:4326'];
-  defs['EPSG:3785'] = defs['EPSG:3857']; // maintain backward compat, official code is 3857
-  defs.GOOGLE = defs['EPSG:3857'];
-  defs['EPSG:900913'] = defs['EPSG:3857'];
-  defs['EPSG:102113'] = defs['EPSG:3857'];
-};
-
-},{}],36:[function(_dereq_,module,exports){
-var proj4 = _dereq_('./core');
-proj4.defaultDatum = 'WGS84'; //default datum
-proj4.Proj = _dereq_('./Proj');
-proj4.WGS84 = new proj4.Proj('WGS84');
-proj4.Point = _dereq_('./Point');
-proj4.toPoint = _dereq_("./common/toPoint");
-proj4.defs = _dereq_('./defs');
-proj4.transform = _dereq_('./transform');
-proj4.mgrs = _dereq_('mgrs');
-proj4.version = _dereq_('../package.json').version;
-_dereq_('./includedProjections')(proj4);
-module.exports = proj4;
-},{"../package.json":68,"./Point":1,"./Proj":2,"./common/toPoint":23,"./core":29,"./defs":32,"./includedProjections":"hTEDpn","./transform":65,"mgrs":67}],37:[function(_dereq_,module,exports){
-var defs = _dereq_('./defs');
-var wkt = _dereq_('./wkt');
-var projStr = _dereq_('./projString');
-function testObj(code){
-  return typeof code === 'string';
-}
-function testDef(code){
-  return code in defs;
-}
-function testWKT(code){
-  var codeWords = ['GEOGCS','GEOCCS','PROJCS','LOCAL_CS'];
-  return codeWords.reduce(function(a,b){
-    return a+1+code.indexOf(b);
-  },0);
-}
-function testProj(code){
-  return code[0] === '+';
-}
-function parse(code){
-  if (testObj(code)) {
-    //check to see if this is a WKT string
-    if (testDef(code)) {
-      return defs[code];
-    }
-    else if (testWKT(code)) {
-      return wkt(code);
-    }
-    else if (testProj(code)) {
-      return projStr(code);
-    }
-  }else{
-    return code;
-  }
-}
-
-module.exports = parse;
-},{"./defs":32,"./projString":38,"./wkt":66}],38:[function(_dereq_,module,exports){
-var D2R = 0.01745329251994329577;
-var PrimeMeridian = _dereq_('./constants/PrimeMeridian');
-var units = _dereq_('./constants/units');
-
-module.exports = function(defData) {
-  var self = {};
-  var paramObj = {};
-  defData.split("+").map(function(v) {
-    return v.trim();
-  }).filter(function(a) {
-    return a;
-  }).forEach(function(a) {
-    var split = a.split("=");
-    split.push(true);
-    paramObj[split[0].toLowerCase()] = split[1];
-  });
-  var paramName, paramVal, paramOutname;
-  var params = {
-    proj: 'projName',
-    datum: 'datumCode',
-    rf: function(v) {
-      self.rf = parseFloat(v);
-    },
-    lat_0: function(v) {
-      self.lat0 = v * D2R;
-    },
-    lat_1: function(v) {
-      self.lat1 = v * D2R;
-    },
-    lat_2: function(v) {
-      self.lat2 = v * D2R;
-    },
-    lat_ts: function(v) {
-      self.lat_ts = v * D2R;
-    },
-    lon_0: function(v) {
-      self.long0 = v * D2R;
-    },
-    lon_1: function(v) {
-      self.long1 = v * D2R;
-    },
-    lon_2: function(v) {
-      self.long2 = v * D2R;
-    },
-    alpha: function(v) {
-      self.alpha = parseFloat(v) * D2R;
-    },
-    lonc: function(v) {
-      self.longc = v * D2R;
-    },
-    x_0: function(v) {
-      self.x0 = parseFloat(v);
-    },
-    y_0: function(v) {
-      self.y0 = parseFloat(v);
-    },
-    k_0: function(v) {
-      self.k0 = parseFloat(v);
-    },
-    k: function(v) {
-      self.k0 = parseFloat(v);
-    },
-    a: function(v) {
-      self.a = parseFloat(v);
-    },
-    b: function(v) {
-      self.b = parseFloat(v);
-    },
-    r_a: function() {
-      self.R_A = true;
-    },
-    zone: function(v) {
-      self.zone = parseInt(v, 10);
-    },
-    south: function() {
-      self.utmSouth = true;
-    },
-    towgs84: function(v) {
-      self.datum_params = v.split(",").map(function(a) {
-        return parseFloat(a);
-      });
-    },
-    to_meter: function(v) {
-      self.to_meter = parseFloat(v);
-    },
-    units: function(v) {
-      self.units = v;
-      if (units[v]) {
-        self.to_meter = units[v].to_meter;
-      }
-    },
-    from_greenwich: function(v) {
-      self.from_greenwich = v * D2R;
-    },
-    pm: function(v) {
-      self.from_greenwich = (PrimeMeridian[v] ? PrimeMeridian[v] : parseFloat(v)) * D2R;
-    },
-    nadgrids: function(v) {
-      if (v === '@null') {
-        self.datumCode = 'none';
-      }
-      else {
-        self.nadgrids = v;
-      }
-    },
-    axis: function(v) {
-      var legalAxis = "ewnsud";
-      if (v.length === 3 && legalAxis.indexOf(v.substr(0, 1)) !== -1 && legalAxis.indexOf(v.substr(1, 1)) !== -1 && legalAxis.indexOf(v.substr(2, 1)) !== -1) {
-        self.axis = v;
-      }
-    }
-  };
-  for (paramName in paramObj) {
-    paramVal = paramObj[paramName];
-    if (paramName in params) {
-      paramOutname = params[paramName];
-      if (typeof paramOutname === 'function') {
-        paramOutname(paramVal);
-      }
-      else {
-        self[paramOutname] = paramVal;
-      }
-    }
-    else {
-      self[paramName] = paramVal;
-    }
-  }
-  if(typeof self.datumCode === 'string' && self.datumCode !== "WGS84"){
-    self.datumCode = self.datumCode.toLowerCase();
-  }
-  return self;
-};
-
-},{"./constants/PrimeMeridian":27,"./constants/units":28}],39:[function(_dereq_,module,exports){
-var projs = [
-  _dereq_('./projections/merc'),
-  _dereq_('./projections/longlat')
-];
-var names = {};
-var projStore = [];
-
-function add(proj, i) {
-  var len = projStore.length;
-  if (!proj.names) {
-    console.log(i);
-    return true;
-  }
-  projStore[len] = proj;
-  proj.names.forEach(function(n) {
-    names[n.toLowerCase()] = len;
-  });
-  return this;
-}
-
-exports.add = add;
-
-exports.get = function(name) {
-  if (!name) {
-    return false;
-  }
-  var n = name.toLowerCase();
-  if (typeof names[n] !== 'undefined' && projStore[names[n]]) {
-    return projStore[names[n]];
-  }
-};
-exports.start = function() {
-  projs.forEach(add);
-};
-
-},{"./projections/longlat":51,"./projections/merc":52}],40:[function(_dereq_,module,exports){
-var EPSLN = 1.0e-10;
-var msfnz = _dereq_('../common/msfnz');
-var qsfnz = _dereq_('../common/qsfnz');
-var adjust_lon = _dereq_('../common/adjust_lon');
-var asinz = _dereq_('../common/asinz');
-exports.init = function() {
-
-  if (Math.abs(this.lat1 + this.lat2) < EPSLN) {
-    return;
-  }
-  this.temp = this.b / this.a;
-  this.es = 1 - Math.pow(this.temp, 2);
-  this.e3 = Math.sqrt(this.es);
-
-  this.sin_po = Math.sin(this.lat1);
-  this.cos_po = Math.cos(this.lat1);
-  this.t1 = this.sin_po;
-  this.con = this.sin_po;
-  this.ms1 = msfnz(this.e3, this.sin_po, this.cos_po);
-  this.qs1 = qsfnz(this.e3, this.sin_po, this.cos_po);
-
-  this.sin_po = Math.sin(this.lat2);
-  this.cos_po = Math.cos(this.lat2);
-  this.t2 = this.sin_po;
-  this.ms2 = msfnz(this.e3, this.sin_po, this.cos_po);
-  this.qs2 = qsfnz(this.e3, this.sin_po, this.cos_po);
-
-  this.sin_po = Math.sin(this.lat0);
-  this.cos_po = Math.cos(this.lat0);
-  this.t3 = this.sin_po;
-  this.qs0 = qsfnz(this.e3, this.sin_po, this.cos_po);
-
-  if (Math.abs(this.lat1 - this.lat2) > EPSLN) {
-    this.ns0 = (this.ms1 * this.ms1 - this.ms2 * this.ms2) / (this.qs2 - this.qs1);
-  }
-  else {
-    this.ns0 = this.con;
-  }
-  this.c = this.ms1 * this.ms1 + this.ns0 * this.qs1;
-  this.rh = this.a * Math.sqrt(this.c - this.ns0 * this.qs0) / this.ns0;
-};
-
-/* Albers Conical Equal Area forward equations--mapping lat,long to x,y
-  -------------------------------------------------------------------*/
-exports.forward = function(p) {
-
-  var lon = p.x;
-  var lat = p.y;
-
-  this.sin_phi = Math.sin(lat);
-  this.cos_phi = Math.cos(lat);
-
-  var qs = qsfnz(this.e3, this.sin_phi, this.cos_phi);
-  var rh1 = this.a * Math.sqrt(this.c - this.ns0 * qs) / this.ns0;
-  var theta = this.ns0 * adjust_lon(lon - this.long0);
-  var x = rh1 * Math.sin(theta) + this.x0;
-  var y = this.rh - rh1 * Math.cos(theta) + this.y0;
-
-  p.x = x;
-  p.y = y;
-  return p;
-};
-
-
-exports.inverse = function(p) {
-  var rh1, qs, con, theta, lon, lat;
-
-  p.x -= this.x0;
-  p.y = this.rh - p.y + this.y0;
-  if (this.ns0 >= 0) {
-    rh1 = Math.sqrt(p.x * p.x + p.y * p.y);
-    con = 1;
-  }
-  else {
-    rh1 = -Math.sqrt(p.x * p.x + p.y * p.y);
-    con = -1;
-  }
-  theta = 0;
-  if (rh1 !== 0) {
-    theta = Math.atan2(con * p.x, con * p.y);
-  }
-  con = rh1 * this.ns0 / this.a;
-  if (this.sphere) {
-    lat = Math.asin((this.c - con * con) / (2 * this.ns0));
-  }
-  else {
-    qs = (this.c - con * con) / this.ns0;
-    lat = this.phi1z(this.e3, qs);
-  }
-
-  lon = adjust_lon(theta / this.ns0 + this.long0);
-  p.x = lon;
-  p.y = lat;
-  return p;
-};
-
-/* Function to compute phi1, the latitude for the inverse of the
-   Albers Conical Equal-Area projection.
--------------------------------------------*/
-exports.phi1z = function(eccent, qs) {
-  var sinphi, cosphi, con, com, dphi;
-  var phi = asinz(0.5 * qs);
-  if (eccent < EPSLN) {
-    return phi;
-  }
-
-  var eccnts = eccent * eccent;
-  for (var i = 1; i <= 25; i++) {
-    sinphi = Math.sin(phi);
-    cosphi = Math.cos(phi);
-    con = eccent * sinphi;
-    com = 1 - con * con;
-    dphi = 0.5 * com * com / cosphi * (qs / (1 - eccnts) - sinphi / com + 0.5 / eccent * Math.log((1 - con) / (1 + con)));
-    phi = phi + dphi;
-    if (Math.abs(dphi) <= 1e-7) {
-      return phi;
-    }
-  }
-  return null;
-};
-exports.names = ["Albers_Conic_Equal_Area", "Albers", "aea"];
-
-},{"../common/adjust_lon":5,"../common/asinz":6,"../common/msfnz":15,"../common/qsfnz":20}],41:[function(_dereq_,module,exports){
-var adjust_lon = _dereq_('../common/adjust_lon');
-var HALF_PI = Math.PI/2;
-var EPSLN = 1.0e-10;
-var mlfn = _dereq_('../common/mlfn');
-var e0fn = _dereq_('../common/e0fn');
-var e1fn = _dereq_('../common/e1fn');
-var e2fn = _dereq_('../common/e2fn');
-var e3fn = _dereq_('../common/e3fn');
-var gN = _dereq_('../common/gN');
-var asinz = _dereq_('../common/asinz');
-var imlfn = _dereq_('../common/imlfn');
-exports.init = function() {
-  this.sin_p12 = Math.sin(this.lat0);
-  this.cos_p12 = Math.cos(this.lat0);
-};
-
-exports.forward = function(p) {
-  var lon = p.x;
-  var lat = p.y;
-  var sinphi = Math.sin(p.y);
-  var cosphi = Math.cos(p.y);
-  var dlon = adjust_lon(lon - this.long0);
-  var e0, e1, e2, e3, Mlp, Ml, tanphi, Nl1, Nl, psi, Az, G, H, GH, Hs, c, kp, cos_c, s, s2, s3, s4, s5;
-  if (this.sphere) {
-    if (Math.abs(this.sin_p12 - 1) <= EPSLN) {
-      //North Pole case
-      p.x = this.x0 + this.a * (HALF_PI - lat) * Math.sin(dlon);
-      p.y = this.y0 - this.a * (HALF_PI - lat) * Math.cos(dlon);
-      return p;
-    }
-    else if (Math.abs(this.sin_p12 + 1) <= EPSLN) {
-      //South Pole case
-      p.x = this.x0 + this.a * (HALF_PI + lat) * Math.sin(dlon);
-      p.y = this.y0 + this.a * (HALF_PI + lat) * Math.cos(dlon);
-      return p;
-    }
-    else {
-      //default case
-      cos_c = this.sin_p12 * sinphi + this.cos_p12 * cosphi * Math.cos(dlon);
-      c = Math.acos(cos_c);
-      kp = c / Math.sin(c);
-      p.x = this.x0 + this.a * kp * cosphi * Math.sin(dlon);
-      p.y = this.y0 + this.a * kp * (this.cos_p12 * sinphi - this.sin_p12 * cosphi * Math.cos(dlon));
-      return p;
-    }
-  }
-  else {
-    e0 = e0fn(this.es);
-    e1 = e1fn(this.es);
-    e2 = e2fn(this.es);
-    e3 = e3fn(this.es);
-    if (Math.abs(this.sin_p12 - 1) <= EPSLN) {
-      //North Pole case
-      Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);
-      Ml = this.a * mlfn(e0, e1, e2, e3, lat);
-      p.x = this.x0 + (Mlp - Ml) * Math.sin(dlon);
-      p.y = this.y0 - (Mlp - Ml) * Math.cos(dlon);
-      return p;
-    }
-    else if (Math.abs(this.sin_p12 + 1) <= EPSLN) {
-      //South Pole case
-      Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);
-      Ml = this.a * mlfn(e0, e1, e2, e3, lat);
-      p.x = this.x0 + (Mlp + Ml) * Math.sin(dlon);
-      p.y = this.y0 + (Mlp + Ml) * Math.cos(dlon);
-      return p;
-    }
-    else {
-      //Default case
-      tanphi = sinphi / cosphi;
-      Nl1 = gN(this.a, this.e, this.sin_p12);
-      Nl = gN(this.a, this.e, sinphi);
-      psi = Math.atan((1 - this.es) * tanphi + this.es * Nl1 * this.sin_p12 / (Nl * cosphi));
-      Az = Math.atan2(Math.sin(dlon), this.cos_p12 * Math.tan(psi) - this.sin_p12 * Math.cos(dlon));
-      if (Az === 0) {
-        s = Math.asin(this.cos_p12 * Math.sin(psi) - this.sin_p12 * Math.cos(psi));
-      }
-      else if (Math.abs(Math.abs(Az) - Math.PI) <= EPSLN) {
-        s = -Math.asin(this.cos_p12 * Math.sin(psi) - this.sin_p12 * Math.cos(psi));
-      }
-      else {
-        s = Math.asin(Math.sin(dlon) * Math.cos(psi) / Math.sin(Az));
-      }
-      G = this.e * this.sin_p12 / Math.sqrt(1 - this.es);
-      H = this.e * this.cos_p12 * Math.cos(Az) / Math.sqrt(1 - this.es);
-      GH = G * H;
-      Hs = H * H;
-      s2 = s * s;
-      s3 = s2 * s;
-      s4 = s3 * s;
-      s5 = s4 * s;
-      c = Nl1 * s * (1 - s2 * Hs * (1 - Hs) / 6 + s3 / 8 * GH * (1 - 2 * Hs) + s4 / 120 * (Hs * (4 - 7 * Hs) - 3 * G * G * (1 - 7 * Hs)) - s5 / 48 * GH);
-      p.x = this.x0 + c * Math.sin(Az);
-      p.y = this.y0 + c * Math.cos(Az);
-      return p;
-    }
-  }
-
-
-};
-
-exports.inverse = function(p) {
-  p.x -= this.x0;
-  p.y -= this.y0;
-  var rh, z, sinz, cosz, lon, lat, con, e0, e1, e2, e3, Mlp, M, N1, psi, Az, cosAz, tmp, A, B, D, Ee, F;
-  if (this.sphere) {
-    rh = Math.sqrt(p.x * p.x + p.y * p.y);
-    if (rh > (2 * HALF_PI * this.a)) {
-      return;
-    }
-    z = rh / this.a;
-
-    sinz = Math.sin(z);
-    cosz = Math.cos(z);
-
-    lon = this.long0;
-    if (Math.abs(rh) <= EPSLN) {
-      lat = this.lat0;
-    }
-    else {
-      lat = asinz(cosz * this.sin_p12 + (p.y * sinz * this.cos_p12) / rh);
-      con = Math.abs(this.lat0) - HALF_PI;
-      if (Math.abs(con) <= EPSLN) {
-        if (this.lat0 >= 0) {
-          lon = adjust_lon(this.long0 + Math.atan2(p.x, - p.y));
-        }
-        else {
-          lon = adjust_lon(this.long0 - Math.atan2(-p.x, p.y));
-        }
-      }
-      else {
-        /*con = cosz - this.sin_p12 * Math.sin(lat);
-        if ((Math.abs(con) < EPSLN) && (Math.abs(p.x) < EPSLN)) {
-          //no-op, just keep the lon value as is
-        } else {
-          var temp = Math.atan2((p.x * sinz * this.cos_p12), (con * rh));
-          lon = adjust_lon(this.long0 + Math.atan2((p.x * sinz * this.cos_p12), (con * rh)));
-        }*/
-        lon = adjust_lon(this.long0 + Math.atan2(p.x * sinz, rh * this.cos_p12 * cosz - p.y * this.sin_p12 * sinz));
-      }
-    }
-
-    p.x = lon;
-    p.y = lat;
-    return p;
-  }
-  else {
-    e0 = e0fn(this.es);
-    e1 = e1fn(this.es);
-    e2 = e2fn(this.es);
-    e3 = e3fn(this.es);
-    if (Math.abs(this.sin_p12 - 1) <= EPSLN) {
-      //North pole case
-      Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);
-      rh = Math.sqrt(p.x * p.x + p.y * p.y);
-      M = Mlp - rh;
-      lat = imlfn(M / this.a, e0, e1, e2, e3);
-      lon = adjust_lon(this.long0 + Math.atan2(p.x, - 1 * p.y));
-      p.x = lon;
-      p.y = lat;
-      return p;
-    }
-    else if (Math.abs(this.sin_p12 + 1) <= EPSLN) {
-      //South pole case
-      Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);
-      rh = Math.sqrt(p.x * p.x + p.y * p.y);
-      M = rh - Mlp;
-
-      lat = imlfn(M / this.a, e0, e1, e2, e3);
-      lon = adjust_lon(this.long0 + Math.atan2(p.x, p.y));
-      p.x = lon;
-      p.y = lat;
-      return p;
-    }
-    else {
-      //default case
-      rh = Math.sqrt(p.x * p.x + p.y * p.y);
-      Az = Math.atan2(p.x, p.y);
-      N1 = gN(this.a, this.e, this.sin_p12);
-      cosAz = Math.cos(Az);
-      tmp = this.e * this.cos_p12 * cosAz;
-      A = -tmp * tmp / (1 - this.es);
-      B = 3 * this.es * (1 - A) * this.sin_p12 * this.cos_p12 * cosAz / (1 - this.es);
-      D = rh / N1;
-      Ee = D - A * (1 + A) * Math.pow(D, 3) / 6 - B * (1 + 3 * A) * Math.pow(D, 4) / 24;
-      F = 1 - A * Ee * Ee / 2 - D * Ee * Ee * Ee / 6;
-      psi = Math.asin(this.sin_p12 * Math.cos(Ee) + this.cos_p12 * Math.sin(Ee) * cosAz);
-      lon = adjust_lon(this.long0 + Math.asin(Math.sin(Az) * Math.sin(Ee) / Math.cos(psi)));
-      lat = Math.atan((1 - this.es * F * this.sin_p12 / Math.sin(psi)) * Math.tan(psi) / (1 - this.es));
-      p.x = lon;
-      p.y = lat;
-      return p;
-    }
-  }
-
-};
-exports.names = ["Azimuthal_Equidistant", "aeqd"];
-
-},{"../common/adjust_lon":5,"../common/asinz":6,"../common/e0fn":7,"../common/e1fn":8,"../common/e2fn":9,"../common/e3fn":10,"../common/gN":11,"../common/imlfn":12,"../common/mlfn":14}],42:[function(_dereq_,module,exports){
-var mlfn = _dereq_('../common/mlfn');
-var e0fn = _dereq_('../common/e0fn');
-var e1fn = _dereq_('../common/e1fn');
-var e2fn = _dereq_('../common/e2fn');
-var e3fn = _dereq_('../common/e3fn');
-var gN = _dereq_('../common/gN');
-var adjust_lon = _dereq_('../common/adjust_lon');
-var adjust_lat = _dereq_('../common/adjust_lat');
-var imlfn = _dereq_('../common/imlfn');
-var HALF_PI = Math.PI/2;
-var EPSLN = 1.0e-10;
-exports.init = function() {
-  if (!this.sphere) {
-    this.e0 = e0fn(this.es);
-    this.e1 = e1fn(this.es);
-    this.e2 = e2fn(this.es);
-    this.e3 = e3fn(this.es);
-    this.ml0 = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0);
-  }
-};
-
-
-
-/* Cassini forward equations--mapping lat,long to x,y
-  -----------------------------------------------------------------------*/
-exports.forward = function(p) {
-
-  /* Forward equations
-      -----------------*/
-  var x, y;
-  var lam = p.x;
-  var phi = p.y;
-  lam = adjust_lon(lam - this.long0);
-
-  if (this.sphere) {
-    x = this.a * Math.asin(Math.cos(phi) * Math.sin(lam));
-    y = this.a * (Math.atan2(Math.tan(phi), Math.cos(lam)) - this.lat0);
-  }
-  else {
-    //ellipsoid
-    var sinphi = Math.sin(phi);
-    var cosphi = Math.cos(phi);
-    var nl = gN(this.a, this.e, sinphi);
-    var tl = Math.tan(phi) * Math.tan(phi);
-    var al = lam * Math.cos(phi);
-    var asq = al * al;
-    var cl = this.es * cosphi * cosphi / (1 - this.es);
-    var ml = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, phi);
-
-    x = nl * al * (1 - asq * tl * (1 / 6 - (8 - tl + 8 * cl) * asq / 120));
-    y = ml - this.ml0 + nl * sinphi / cosphi * asq * (0.5 + (5 - tl + 6 * cl) * asq / 24);
-
-
-  }
-
-  p.x = x + this.x0;
-  p.y = y + this.y0;
-  return p;
-};
-
-/* Inverse equations
-  -----------------*/
-exports.inverse = function(p) {
-  p.x -= this.x0;
-  p.y -= this.y0;
-  var x = p.x / this.a;
-  var y = p.y / this.a;
-  var phi, lam;
-
-  if (this.sphere) {
-    var dd = y + this.lat0;
-    phi = Math.asin(Math.sin(dd) * Math.cos(x));
-    lam = Math.atan2(Math.tan(x), Math.cos(dd));
-  }
-  else {
-    /* ellipsoid */
-    var ml1 = this.ml0 / this.a + y;
-    var phi1 = imlfn(ml1, this.e0, this.e1, this.e2, this.e3);
-    if (Math.abs(Math.abs(phi1) - HALF_PI) <= EPSLN) {
-      p.x = this.long0;
-      p.y = HALF_PI;
-      if (y < 0) {
-        p.y *= -1;
-      }
-      return p;
-    }
-    var nl1 = gN(this.a, this.e, Math.sin(phi1));
-
-    var rl1 = nl1 * nl1 * nl1 / this.a / this.a * (1 - this.es);
-    var tl1 = Math.pow(Math.tan(phi1), 2);
-    var dl = x * this.a / nl1;
-    var dsq = dl * dl;
-    phi = phi1 - nl1 * Math.tan(phi1) / rl1 * dl * dl * (0.5 - (1 + 3 * tl1) * dl * dl / 24);
-    lam = dl * (1 - dsq * (tl1 / 3 + (1 + 3 * tl1) * tl1 * dsq / 15)) / Math.cos(phi1);
-
-  }
-
-  p.x = adjust_lon(lam + this.long0);
-  p.y = adjust_lat(phi);
-  return p;
-
-};
-exports.names = ["Cassini", "Cassini_Soldner", "cass"];
-},{"../common/adjust_lat":4,"../common/adjust_lon":5,"../common/e0fn":7,"../common/e1fn":8,"../common/e2fn":9,"../common/e3fn":10,"../common/gN":11,"../common/imlfn":12,"../common/mlfn":14}],43:[function(_dereq_,module,exports){
-var adjust_lon = _dereq_('../common/adjust_lon');
-var qsfnz = _dereq_('../common/qsfnz');
-var msfnz = _dereq_('../common/msfnz');
-var iqsfnz = _dereq_('../common/iqsfnz');
-/*
-  reference:  
-    "Cartographic Projection Procedures for the UNIX Environment-
-    A User's Manual" by Gerald I. Evenden,
-    USGS Open File Report 90-284and Release 4 Interim Reports (2003)
-*/
-exports.init = function() {
-  //no-op
-  if (!this.sphere) {
-    this.k0 = msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts));
-  }
-};
-
-
-/* Cylindrical Equal Area forward equations--mapping lat,long to x,y
-    ------------------------------------------------------------*/
-exports.forward = function(p) {
-  var lon = p.x;
-  var lat = p.y;
-  var x, y;
-  /* Forward equations
-      -----------------*/
-  var dlon = adjust_lon(lon - this.long0);
-  if (this.sphere) {
-    x = this.x0 + this.a * dlon * Math.cos(this.lat_ts);
-    y = this.y0 + this.a * Math.sin(lat) / Math.cos(this.lat_ts);
-  }
-  else {
-    var qs = qsfnz(this.e, Math.sin(lat));
-    x = this.x0 + this.a * this.k0 * dlon;
-    y = this.y0 + this.a * qs * 0.5 / this.k0;
-  }
-
-  p.x = x;
-  p.y = y;
-  return p;
-};
-
-/* Cylindrical Equal Area inverse equations--mapping x,y to lat/long
-    ------------------------------------------------------------*/
-exports.inverse = function(p) {
-  p.x -= this.x0;
-  p.y -= this.y0;
-  var lon, lat;
-
-  if (this.sphere) {
-    lon = adjust_lon(this.long0 + (p.x / this.a) / Math.cos(this.lat_ts));
-    lat = Math.asin((p.y / this.a) * Math.cos(this.lat_ts));
-  }
-  else {
-    lat = iqsfnz(this.e, 2 * p.y * this.k0 / this.a);
-    lon = adjust_lon(this.long0 + p.x / (this.a * this.k0));
-  }
-
-  p.x = lon;
-  p.y = lat;
-  return p;
-};
-exports.names = ["cea"];
-
-},{"../common/adjust_lon":5,"../common/iqsfnz":13,"../common/msfnz":15,"../common/qsfnz":20}],44:[function(_dereq_,module,exports){
-var adjust_lon = _dereq_('../common/adjust_lon');
-var adjust_lat = _dereq_('../common/adjust_lat');
-exports.init = function() {
-
-  this.x0 = this.x0 || 0;
-  this.y0 = this.y0 || 0;
-  this.lat0 = this.lat0 || 0;
-  this.long0 = this.long0 || 0;
-  this.lat_ts = this.lat_ts || 0;
-  this.title = this.title || "Equidistant Cylindrical (Plate Carre)";
-
-  this.rc = Math.cos(this.lat_ts);
-};
-
-
-// forward equations--mapping lat,long to x,y
-// -----------------------------------------------------------------
-exports.forward = function(p) {
-
-  var lon = p.x;
-  var lat = p.y;
-
-  var dlon = adjust_lon(lon - this.long0);
-  var dlat = adjust_lat(lat - this.lat0);
-  p.x = this.x0 + (this.a * dlon * this.rc);
-  p.y = this.y0 + (this.a * dlat);
-  return p;
-};
-
-// inverse equations--mapping x,y to lat/long
-// -----------------------------------------------------------------
-exports.inverse = function(p) {
-
-  var x = p.x;
-  var y = p.y;
-
-  p.x = adjust_lon(this.long0 + ((x - this.x0) / (this.a * this.rc)));
-  p.y = adjust_lat(this.lat0 + ((y - this.y0) / (this.a)));
-  return p;
-};
-exports.names = ["Equirectangular", "Equidistant_Cylindrical", "eqc"];
-
-},{"../common/adjust_lat":4,"../common/adjust_lon":5}],45:[function(_dereq_,module,exports){
-var e0fn = _dereq_('../common/e0fn');
-var e1fn = _dereq_('../common/e1fn');
-var e2fn = _dereq_('../common/e2fn');
-var e3fn = _dereq_('../common/e3fn');
-var msfnz = _dereq_('../common/msfnz');
-var mlfn = _dereq_('../common/mlfn');
-var adjust_lon = _dereq_('../common/adjust_lon');
-var adjust_lat = _dereq_('../common/adjust_lat');
-var imlfn = _dereq_('../common/imlfn');
-var EPSLN = 1.0e-10;
-exports.init = function() {
-
-  /* Place parameters in static storage for common use
-      -------------------------------------------------*/
-  // Standard Parallels cannot be equal and on opposite sides of the equator
-  if (Math.abs(this.lat1 + this.lat2) < EPSLN) {
-    return;
-  }
-  this.lat2 = this.lat2 || this.lat1;
-  this.temp = this.b / this.a;
-  this.es = 1 - Math.pow(this.temp, 2);
-  this.e = Math.sqrt(this.es);
-  this.e0 = e0fn(this.es);
-  this.e1 = e1fn(this.es);
-  this.e2 = e2fn(this.es);
-  this.e3 = e3fn(this.es);
-
-  this.sinphi = Math.sin(this.lat1);
-  this.cosphi = Math.cos(this.lat1);
-
-  this.ms1 = msfnz(this.e, this.sinphi, this.cosphi);
-  this.ml1 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat1);
-
-  if (Math.abs(this.lat1 - this.lat2) < EPSLN) {
-    this.ns = this.sinphi;
-  }
-  else {
-    this.sinphi = Math.sin(this.lat2);
-    this.cosphi = Math.cos(this.lat2);
-    this.ms2 = msfnz(this.e, this.sinphi, this.cosphi);
-    this.ml2 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat2);
-    this.ns = (this.ms1 - this.ms2) / (this.ml2 - this.ml1);
-  }
-  this.g = this.ml1 + this.ms1 / this.ns;
-  this.ml0 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0);
-  this.rh = this.a * (this.g - this.ml0);
-};
-
-
-/* Equidistant Conic forward equations--mapping lat,long to x,y
-  -----------------------------------------------------------*/
-exports.forward = function(p) {
-  var lon = p.x;
-  var lat = p.y;
-  var rh1;
-
-  /* Forward equations
-      -----------------*/
-  if (this.sphere) {
-    rh1 = this.a * (this.g - lat);
-  }
-  else {
-    var ml = mlfn(this.e0, this.e1, this.e2, this.e3, lat);
-    rh1 = this.a * (this.g - ml);
-  }
-  var theta = this.ns * adjust_lon(lon - this.long0);
-  var x = this.x0 + rh1 * Math.sin(theta);
-  var y = this.y0 + this.rh - rh1 * Math.cos(theta);
-  p.x = x;
-  p.y = y;
-  return p;
-};
-
-/* Inverse equations
-  -----------------*/
-exports.inverse = function(p) {
-  p.x -= this.x0;
-  p.y = this.rh - p.y + this.y0;
-  var con, rh1, lat, lon;
-  if (this.ns >= 0) {
-    rh1 = Math.sqrt(p.x * p.x + p.y * p.y);
-    con = 1;
-  }
-  else {
-    rh1 = -Math.sqrt(p.x * p.x + p.y * p.y);
-    con = -1;
-  }
-  var theta = 0;
-  if (rh1 !== 0) {
-    theta = Math.atan2(con * p.x, con * p.y);
-  }
-
-  if (this.sphere) {
-    lon = adjust_lon(this.long0 + theta / this.ns);
-    lat = adjust_lat(this.g - rh1 / this.a);
-    p.x = lon;
-    p.y = lat;
-    return p;
-  }
-  else {
-    var ml = this.g - rh1 / this.a;
-    lat = imlfn(ml, this.e0, this.e1, this.e2, this.e3);
-    lon = adjust_lon(this.long0 + theta / this.ns);
-    p.x = lon;
-    p.y = lat;
-    return p;
-  }
-
-};
-exports.names = ["Equidistant_Conic", "eqdc"];
-
-},{"../common/adjust_lat":4,"../common/adjust_lon":5,"../common/e0fn":7,"../common/e1fn":8,"../common/e2fn":9,"../common/e3fn":10,"../common/imlfn":12,"../common/mlfn":14,"../common/msfnz":15}],46:[function(_dereq_,module,exports){
-var FORTPI = Math.PI/4;
-var srat = _dereq_('../common/srat');
-var HALF_PI = Math.PI/2;
-var MAX_ITER = 20;
-exports.init = function() {
-  var sphi = Math.sin(this.lat0);
-  var cphi = Math.cos(this.lat0);
-  cphi *= cphi;
-  this.rc = Math.sqrt(1 - this.es) / (1 - this.es * sphi * sphi);
-  this.C = Math.sqrt(1 + this.es * cphi * cphi / (1 - this.es));
-  this.phic0 = Math.asin(sphi / this.C);
-  this.ratexp = 0.5 * this.C * this.e;
-  this.K = Math.tan(0.5 * this.phic0 + FORTPI) / (Math.pow(Math.tan(0.5 * this.lat0 + FORTPI), this.C) * srat(this.e * sphi, this.ratexp));
-};
-
-exports.forward = function(p) {
-  var lon = p.x;
-  var lat = p.y;
-
-  p.y = 2 * Math.atan(this.K * Math.pow(Math.tan(0.5 * lat + FORTPI), this.C) * srat(this.e * Math.sin(lat), this.ratexp)) - HALF_PI;
-  p.x = this.C * lon;
-  return p;
-};
-
-exports.inverse = function(p) {
-  var DEL_TOL = 1e-14;
-  var lon = p.x / this.C;
-  var lat = p.y;
-  var num = Math.pow(Math.tan(0.5 * lat + FORTPI) / this.K, 1 / this.C);
-  for (var i = MAX_ITER; i > 0; --i) {
-    lat = 2 * Math.atan(num * srat(this.e * Math.sin(p.y), - 0.5 * this.e)) - HALF_PI;
-    if (Math.abs(lat - p.y) < DEL_TOL) {
-      break;
-    }
-    p.y = lat;
-  }
-  /* convergence failed */
-  if (!i) {
-    return null;
-  }
-  p.x = lon;
-  p.y = lat;
-  return p;
-};
-exports.names = ["gauss"];
-
-},{"../common/srat":22}],47:[function(_dereq_,module,exports){
-var adjust_lon = _dereq_('../common/adjust_lon');
-var EPSLN = 1.0e-10;
-var asinz = _dereq_('../common/asinz');
-
-/*
-  reference:
-    Wolfram Mathworld "Gnomonic Projection"
-    http://mathworld.wolfram.com/GnomonicProjection.html
-    Accessed: 12th November 2009
-  */
-exports.init = function() {
-
-  /* Place parameters in static storage for common use
-      -------------------------------------------------*/
-  this.sin_p14 = Math.sin(this.lat0);
-  this.cos_p14 = Math.cos(this.lat0);
-  // Approximation for projecting points to the horizon (infinity)
-  this.infinity_dist = 1000 * this.a;
-  this.rc = 1;
-};
-
-
-/* Gnomonic forward equations--mapping lat,long to x,y
-    ---------------------------------------------------*/
-exports.forward = function(p) {
-  var sinphi, cosphi; /* sin and cos value        */
-  var dlon; /* delta longitude value      */
-  var coslon; /* cos of longitude        */
-  var ksp; /* scale factor          */
-  var g;
-  var x, y;
-  var lon = p.x;
-  var lat = p.y;
-  /* Forward equations
-      -----------------*/
-  dlon = adjust_lon(lon - this.long0);
-
-  sinphi = Math.sin(lat);
-  cosphi = Math.cos(lat);
-
-  coslon = Math.cos(dlon);
-  g = this.sin_p14 * sinphi + this.cos_p14 * cosphi * coslon;
-  ksp = 1;
-  if ((g > 0) || (Math.abs(g) <= EPSLN)) {
-    x = this.x0 + this.a * ksp * cosphi * Math.sin(dlon) / g;
-    y = this.y0 + this.a * ksp * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon) / g;
-  }
-  else {
-
-    // Point is in the opposing hemisphere and is unprojectable
-    // We still need to return a reasonable point, so we project 
-    // to infinity, on a bearing 
-    // equivalent to the northern hemisphere equivalent
-    // This is a reasonable approximation for short shapes and lines that 
-    // straddle the horizon.
-
-    x = this.x0 + this.infinity_dist * cosphi * Math.sin(dlon);
-    y = this.y0 + this.infinity_dist * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon);
-
-  }
-  p.x = x;
-  p.y = y;
-  return p;
-};
-
-
-exports.inverse = function(p) {
-  var rh; /* Rho */
-  var sinc, cosc;
-  var c;
-  var lon, lat;
-
-  /* Inverse equations
-      -----------------*/
-  p.x = (p.x - this.x0) / this.a;
-  p.y = (p.y - this.y0) / this.a;
-
-  p.x /= this.k0;
-  p.y /= this.k0;
-
-  if ((rh = Math.sqrt(p.x * p.x + p.y * p.y))) {
-    c = Math.atan2(rh, this.rc);
-    sinc = Math.sin(c);
-    cosc = Math.cos(c);
-
-    lat = asinz(cosc * this.sin_p14 + (p.y * sinc * this.cos_p14) / rh);
-    lon = Math.atan2(p.x * sinc, rh * this.cos_p14 * cosc - p.y * this.sin_p14 * sinc);
-    lon = adjust_lon(this.long0 + lon);
-  }
-  else {
-    lat = this.phic0;
-    lon = 0;
-  }
-
-  p.x = lon;
-  p.y = lat;
-  return p;
-};
-exports.names = ["gnom"];
-
-},{"../common/adjust_lon":5,"../common/asinz":6}],48:[function(_dereq_,module,exports){
-var adjust_lon = _dereq_('../common/adjust_lon');
-exports.init = function() {
-  this.a = 6377397.155;
-  this.es = 0.006674372230614;
-  this.e = Math.sqrt(this.es);
-  if (!this.lat0) {
-    this.lat0 = 0.863937979737193;
-  }
-  if (!this.long0) {
-    this.long0 = 0.7417649320975901 - 0.308341501185665;
-  }
-  /* if scale not set default to 0.9999 */
-  if (!this.k0) {
-    this.k0 = 0.9999;
-  }
-  this.s45 = 0.785398163397448; /* 45 */
-  this.s90 = 2 * this.s45;
-  this.fi0 = this.lat0;
-  this.e2 = this.es;
-  this.e = Math.sqrt(this.e2);
-  this.alfa = Math.sqrt(1 + (this.e2 * Math.pow(Math.cos(this.fi0), 4)) / (1 - this.e2));
-  this.uq = 1.04216856380474;
-  this.u0 = Math.asin(Math.sin(this.fi0) / this.alfa);
-  this.g = Math.pow((1 + this.e * Math.sin(this.fi0)) / (1 - this.e * Math.sin(this.fi0)), this.alfa * this.e / 2);
-  this.k = Math.tan(this.u0 / 2 + this.s45) / Math.pow(Math.tan(this.fi0 / 2 + this.s45), this.alfa) * this.g;
-  this.k1 = this.k0;
-  this.n0 = this.a * Math.sqrt(1 - this.e2) / (1 - this.e2 * Math.pow(Math.sin(this.fi0), 2));
-  this.s0 = 1.37008346281555;
-  this.n = Math.sin(this.s0);
-  this.ro0 = this.k1 * this.n0 / Math.tan(this.s0);
-  this.ad = this.s90 - this.uq;
-};
-
-/* ellipsoid */
-/* calculate xy from lat/lon */
-/* Constants, identical to inverse transform function */
-exports.forward = function(p) {
-  var gfi, u, deltav, s, d, eps, ro;
-  var lon = p.x;
-  var lat = p.y;
-  var delta_lon = adjust_lon(lon - this.long0);
-  /* Transformation */
-  gfi = Math.pow(((1 + this.e * Math.sin(lat)) / (1 - this.e * Math.sin(lat))), (this.alfa * this.e / 2));
-  u = 2 * (Math.atan(this.k * Math.pow(Math.tan(lat / 2 + this.s45), this.alfa) / gfi) - this.s45);
-  deltav = -delta_lon * this.alfa;
-  s = Math.asin(Math.cos(this.ad) * Math.sin(u) + Math.sin(this.ad) * Math.cos(u) * Math.cos(deltav));
-  d = Math.asin(Math.cos(u) * Math.sin(deltav) / Math.cos(s));
-  eps = this.n * d;
-  ro = this.ro0 * Math.pow(Math.tan(this.s0 / 2 + this.s45), this.n) / Math.pow(Math.tan(s / 2 + this.s45), this.n);
-  p.y = ro * Math.cos(eps) / 1;
-  p.x = ro * Math.sin(eps) / 1;
-
-  if (!this.czech) {
-    p.y *= -1;
-    p.x *= -1;
-  }
-  return (p);
-};
-
-/* calculate lat/lon from xy */
-exports.inverse = function(p) {
-  var u, deltav, s, d, eps, ro, fi1;
-  var ok;
-
-  /* Transformation */
-  /* revert y, x*/
-  var tmp = p.x;
-  p.x = p.y;
-  p.y = tmp;
-  if (!this.czech) {
-    p.y *= -1;
-    p.x *= -1;
-  }
-  ro = Math.sqrt(p.x * p.x + p.y * p.y);
-  eps = Math.atan2(p.y, p.x);
-  d = eps / Math.sin(this.s0);
-  s = 2 * (Math.atan(Math.pow(this.ro0 / ro, 1 / this.n) * Math.tan(this.s0 / 2 + this.s45)) - this.s45);
-  u = Math.asin(Math.cos(this.ad) * Math.sin(s) - Math.sin(this.ad) * Math.cos(s) * Math.cos(d));
-  deltav = Math.asin(Math.cos(s) * Math.sin(d) / Math.cos(u));
-  p.x = this.long0 - deltav / this.alfa;
-  fi1 = u;
-  ok = 0;
-  var iter = 0;
-  do {
-    p.y = 2 * (Math.atan(Math.pow(this.k, - 1 / this.alfa) * Math.pow(Math.tan(u / 2 + this.s45), 1 / this.alfa) * Math.pow((1 + this.e * Math.sin(fi1)) / (1 - this.e * Math.sin(fi1)), this.e / 2)) - this.s45);
-    if (Math.abs(fi1 - p.y) < 0.0000000001) {
-      ok = 1;
-    }
-    fi1 = p.y;
-    iter += 1;
-  } while (ok === 0 && iter < 15);
-  if (iter >= 15) {
-    return null;
-  }
-
-  return (p);
-};
-exports.names = ["Krovak", "krovak"];
-
-},{"../common/adjust_lon":5}],49:[function(_dereq_,module,exports){
-var HALF_PI = Math.PI/2;
-var FORTPI = Math.PI/4;
-var EPSLN = 1.0e-10;
-var qsfnz = _dereq_('../common/qsfnz');
-var adjust_lon = _dereq_('../common/adjust_lon');
-/*
-  reference
-    "New Equal-Area Map Projections for Noncircular Regions", John P. Snyder,
-    The American Cartographer, Vol 15, No. 4, October 1988, pp. 341-355.
-  */
-
-exports.S_POLE = 1;
-exports.N_POLE = 2;
-exports.EQUIT = 3;
-exports.OBLIQ = 4;
-
-
-/* Initialize the Lambert Azimuthal Equal Area projection
-  ------------------------------------------------------*/
-exports.init = function() {
-  var t = Math.abs(this.lat0);
-  if (Math.abs(t - HALF_PI) < EPSLN) {
-    this.mode = this.lat0 < 0 ? this.S_POLE : this.N_POLE;
-  }
-  else if (Math.abs(t) < EPSLN) {
-    this.mode = this.EQUIT;
-  }
-  else {
-    this.mode = this.OBLIQ;
-  }
-  if (this.es > 0) {
-    var sinphi;
-
-    this.qp = qsfnz(this.e, 1);
-    this.mmf = 0.5 / (1 - this.es);
-    this.apa = this.authset(this.es);
-    switch (this.mode) {
-    case this.N_POLE:
-      this.dd = 1;
-      break;
-    case this.S_POLE:
-      this.dd = 1;
-      break;
-    case this.EQUIT:
-      this.rq = Math.sqrt(0.5 * this.qp);
-      this.dd = 1 / this.rq;
-      this.xmf = 1;
-      this.ymf = 0.5 * this.qp;
-      break;
-    case this.OBLIQ:
-      this.rq = Math.sqrt(0.5 * this.qp);
-      sinphi = Math.sin(this.lat0);
-      this.sinb1 = qsfnz(this.e, sinphi) / this.qp;
-      this.cosb1 = Math.sqrt(1 - this.sinb1 * this.sinb1);
-      this.dd = Math.cos(this.lat0) / (Math.sqrt(1 - this.es * sinphi * sinphi) * this.rq * this.cosb1);
-      this.ymf = (this.xmf = this.rq) / this.dd;
-      this.xmf *= this.dd;
-      break;
-    }
-  }
-  else {
-    if (this.mode === this.OBLIQ) {
-      this.sinph0 = Math.sin(this.lat0);
-      this.cosph0 = Math.cos(this.lat0);
-    }
-  }
-};
-
-/* Lambert Azimuthal Equal Area forward equations--mapping lat,long to x,y
-  -----------------------------------------------------------------------*/
-exports.forward = function(p) {
-
-  /* Forward equations
-      -----------------*/
-  var x, y, coslam, sinlam, sinphi, q, sinb, cosb, b, cosphi;
-  var lam = p.x;
-  var phi = p.y;
-
-  lam = adjust_lon(lam - this.long0);
-
-  if (this.sphere) {
-    sinphi = Math.sin(phi);
-    cosphi = Math.cos(phi);
-    coslam = Math.cos(lam);
-    if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {
-      y = (this.mode === this.EQUIT) ? 1 + cosphi * coslam : 1 + this.sinph0 * sinphi + this.cosph0 * cosphi * coslam;
-      if (y <= EPSLN) {
-        return null;
-      }
-      y = Math.sqrt(2 / y);
-      x = y * cosphi * Math.sin(lam);
-      y *= (this.mode === this.EQUIT) ? sinphi : this.cosph0 * sinphi - this.sinph0 * cosphi * coslam;
-    }
-    else if (this.mode === this.N_POLE || this.mode === this.S_POLE) {
-      if (this.mode === this.N_POLE) {
-        coslam = -coslam;
-      }
-      if (Math.abs(phi + this.phi0) < EPSLN) {
-        return null;
-      }
-      y = FORTPI - phi * 0.5;
-      y = 2 * ((this.mode === this.S_POLE) ? Math.cos(y) : Math.sin(y));
-      x = y * Math.sin(lam);
-      y *= coslam;
-    }
-  }
-  else {
-    sinb = 0;
-    cosb = 0;
-    b = 0;
-    coslam = Math.cos(lam);
-    sinlam = Math.sin(lam);
-    sinphi = Math.sin(phi);
-    q = qsfnz(this.e, sinphi);
-    if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {
-      sinb = q / this.qp;
-      cosb = Math.sqrt(1 - sinb * sinb);
-    }
-    switch (this.mode) {
-    case this.OBLIQ:
-      b = 1 + this.sinb1 * sinb + this.cosb1 * cosb * coslam;
-      break;
-    case this.EQUIT:
-      b = 1 + cosb * coslam;
-      break;
-    case this.N_POLE:
-      b = HALF_PI + phi;
-      q = this.qp - q;
-      break;
-    case this.S_POLE:
-      b = phi - HALF_PI;
-      q = this.qp + q;
-      break;
-    }
-    if (Math.abs(b) < EPSLN) {
-      return null;
-    }
-    switch (this.mode) {
-    case this.OBLIQ:
-    case this.EQUIT:
-      b = Math.sqrt(2 / b);
-      if (this.mode === this.OBLIQ) {
-        y = this.ymf * b * (this.cosb1 * sinb - this.sinb1 * cosb * coslam);
-      }
-      else {
-        y = (b = Math.sqrt(2 / (1 + cosb * coslam))) * sinb * this.ymf;
-      }
-      x = this.xmf * b * cosb * sinlam;
-      break;
-    case this.N_POLE:
-    case this.S_POLE:
-      if (q >= 0) {
-        x = (b = Math.sqrt(q)) * sinlam;
-        y = coslam * ((this.mode === this.S_POLE) ? b : -b);
-      }
-      else {
-        x = y = 0;
-      }
-      break;
-    }
-  }
-
-  p.x = this.a * x + this.x0;
-  p.y = this.a * y + this.y0;
-  return p;
-};
-
-/* Inverse equations
-  -----------------*/
-exports.inverse = function(p) {
-  p.x -= this.x0;
-  p.y -= this.y0;
-  var x = p.x / this.a;
-  var y = p.y / this.a;
-  var lam, phi, cCe, sCe, q, rho, ab;
-
-  if (this.sphere) {
-    var cosz = 0,
-      rh, sinz = 0;
-
-    rh = Math.sqrt(x * x + y * y);
-    phi = rh * 0.5;
-    if (phi > 1) {
-      return null;
-    }
-    phi = 2 * Math.asin(phi);
-    if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {
-      sinz = Math.sin(phi);
-      cosz = Math.cos(phi);
-    }
-    switch (this.mode) {
-    case this.EQUIT:
-      phi = (Math.abs(rh) <= EPSLN) ? 0 : Math.asin(y * sinz / rh);
-      x *= sinz;
-      y = cosz * rh;
-      break;
-    case this.OBLIQ:
-      phi = (Math.abs(rh) <= EPSLN) ? this.phi0 : Math.asin(cosz * this.sinph0 + y * sinz * this.cosph0 / rh);
-      x *= sinz * this.cosph0;
-      y = (cosz - Math.sin(phi) * this.sinph0) * rh;
-      break;
-    case this.N_POLE:
-      y = -y;
-      phi = HALF_PI - phi;
-      break;
-    case this.S_POLE:
-      phi -= HALF_PI;
-      break;
-    }
-    lam = (y === 0 && (this.mode === this.EQUIT || this.mode === this.OBLIQ)) ? 0 : Math.atan2(x, y);
-  }
-  else {
-    ab = 0;
-    if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {
-      x /= this.dd;
-      y *= this.dd;
-      rho = Math.sqrt(x * x + y * y);
-      if (rho < EPSLN) {
-        p.x = 0;
-        p.y = this.phi0;
-        return p;
-      }
-      sCe = 2 * Math.asin(0.5 * rho / this.rq);
-      cCe = Math.cos(sCe);
-      x *= (sCe = Math.sin(sCe));
-      if (this.mode === this.OBLIQ) {
-        ab = cCe * this.sinb1 + y * sCe * this.cosb1 / rho;
-        q = this.qp * ab;
-        y = rho * this.cosb1 * cCe - y * this.sinb1 * sCe;
-      }
-      else {
-        ab = y * sCe / rho;
-        q = this.qp * ab;
-        y = rho * cCe;
-      }
-    }
-    else if (this.mode === this.N_POLE || this.mode === this.S_POLE) {
-      if (this.mode === this.N_POLE) {
-        y = -y;
-      }
-      q = (x * x + y * y);
-      if (!q) {
-        p.x = 0;
-        p.y = this.phi0;
-        return p;
-      }
-      ab = 1 - q / this.qp;
-      if (this.mode === this.S_POLE) {
-        ab = -ab;
-      }
-    }
-    lam = Math.atan2(x, y);
-    phi = this.authlat(Math.asin(ab), this.apa);
-  }
-
-
-  p.x = adjust_lon(this.long0 + lam);
-  p.y = phi;
-  return p;
-};
-
-/* determine latitude from authalic latitude */
-exports.P00 = 0.33333333333333333333;
-exports.P01 = 0.17222222222222222222;
-exports.P02 = 0.10257936507936507936;
-exports.P10 = 0.06388888888888888888;
-exports.P11 = 0.06640211640211640211;
-exports.P20 = 0.01641501294219154443;
-
-exports.authset = function(es) {
-  var t;
-  var APA = [];
-  APA[0] = es * this.P00;
-  t = es * es;
-  APA[0] += t * this.P01;
-  APA[1] = t * this.P10;
-  t *= es;
-  APA[0] += t * this.P02;
-  APA[1] += t * this.P11;
-  APA[2] = t * this.P20;
-  return APA;
-};
-
-exports.authlat = function(beta, APA) {
-  var t = beta + beta;
-  return (beta + APA[0] * Math.sin(t) + APA[1] * Math.sin(t + t) + APA[2] * Math.sin(t + t + t));
-};
-exports.names = ["Lambert Azimuthal Equal Area", "Lambert_Azimuthal_Equal_Area", "laea"];
-
-},{"../common/adjust_lon":5,"../common/qsfnz":20}],50:[function(_dereq_,module,exports){
-var EPSLN = 1.0e-10;
-var msfnz = _dereq_('../common/msfnz');
-var tsfnz = _dereq_('../common/tsfnz');
-var HALF_PI = Math.PI/2;
-var sign = _dereq_('../common/sign');
-var adjust_lon = _dereq_('../common/adjust_lon');
-var phi2z = _dereq_('../common/phi2z');
-exports.init = function() {
-
-  // array of:  r_maj,r_min,lat1,lat2,c_lon,c_lat,false_east,false_north
-  //double c_lat;                   /* center latitude                      */
-  //double c_lon;                   /* center longitude                     */
-  //double lat1;                    /* first standard parallel              */
-  //double lat2;                    /* second standard parallel             */
-  //double r_maj;                   /* major axis                           */
-  //double r_min;                   /* minor axis                           */
-  //double false_east;              /* x offset in meters                   */
-  //double false_north;             /* y offset in meters                   */
-
-  if (!this.lat2) {
-    this.lat2 = this.lat1;
-  } //if lat2 is not defined
-  if (!this.k0) {
-    this.k0 = 1;
-  }
-  this.x0 = this.x0 || 0;
-  this.y0 = this.y0 || 0;
-  // Standard Parallels cannot be equal and on opposite sides of the equator
-  if (Math.abs(this.lat1 + this.lat2) < EPSLN) {
-    return;
-  }
-
-  var temp = this.b / this.a;
-  this.e = Math.sqrt(1 - temp * temp);
-
-  var sin1 = Math.sin(this.lat1);
-  var cos1 = Math.cos(this.lat1);
-  var ms1 = msfnz(this.e, sin1, cos1);
-  var ts1 = tsfnz(this.e, this.lat1, sin1);
-
-  var sin2 = Math.sin(this.lat2);
-  var cos2 = Math.cos(this.lat2);
-  var ms2 = msfnz(this.e, sin2, cos2);
-  var ts2 = tsfnz(this.e, this.lat2, sin2);
-
-  var ts0 = tsfnz(this.e, this.lat0, Math.sin(this.lat0));
-
-  if (Math.abs(this.lat1 - this.lat2) > EPSLN) {
-    this.ns = Math.log(ms1 / ms2) / Math.log(ts1 / ts2);
-  }
-  else {
-    this.ns = sin1;
-  }
-  if (isNaN(this.ns)) {
-    this.ns = sin1;
-  }
-  this.f0 = ms1 / (this.ns * Math.pow(ts1, this.ns));
-  this.rh = this.a * this.f0 * Math.pow(ts0, this.ns);
-  if (!this.title) {
-    this.title = "Lambert Conformal Conic";
-  }
-};
-
-
-// Lambert Conformal conic forward equations--mapping lat,long to x,y
-// -----------------------------------------------------------------
-exports.forward = function(p) {
-
-  var lon = p.x;
-  var lat = p.y;
-
-  // singular cases :
-  if (Math.abs(2 * Math.abs(lat) - Math.PI) <= EPSLN) {
-    lat = sign(lat) * (HALF_PI - 2 * EPSLN);
-  }
-
-  var con = Math.abs(Math.abs(lat) - HALF_PI);
-  var ts, rh1;
-  if (con > EPSLN) {
-    ts = tsfnz(this.e, lat, Math.sin(lat));
-    rh1 = this.a * this.f0 * Math.pow(ts, this.ns);
-  }
-  else {
-    con = lat * this.ns;
-    if (con <= 0) {
-      return null;
-    }
-    rh1 = 0;
-  }
-  var theta = this.ns * adjust_lon(lon - this.long0);
-  p.x = this.k0 * (rh1 * Math.sin(theta)) + this.x0;
-  p.y = this.k0 * (this.rh - rh1 * Math.cos(theta)) + this.y0;
-
-  return p;
-};
-
-// Lambert Conformal Conic inverse equations--mapping x,y to lat/long
-// -----------------------------------------------------------------
-exports.inverse = function(p) {
-
-  var rh1, con, ts;
-  var lat, lon;
-  var x = (p.x - this.x0) / this.k0;
-  var y = (this.rh - (p.y - this.y0) / this.k0);
-  if (this.ns > 0) {
-    rh1 = Math.sqrt(x * x + y * y);
-    con = 1;
-  }
-  else {
-    rh1 = -Math.sqrt(x * x + y * y);
-    con = -1;
-  }
-  var theta = 0;
-  if (rh1 !== 0) {
-    theta = Math.atan2((con * x), (con * y));
-  }
-  if ((rh1 !== 0) || (this.ns > 0)) {
-    con = 1 / this.ns;
-    ts = Math.pow((rh1 / (this.a * this.f0)), con);
-    lat = phi2z(this.e, ts);
-    if (lat === -9999) {
-      return null;
-    }
-  }
-  else {
-    lat = -HALF_PI;
-  }
-  lon = adjust_lon(theta / this.ns + this.long0);
-
-  p.x = lon;
-  p.y = lat;
-  return p;
-};
-
-exports.names = ["Lambert Tangential Conformal Conic Projection", "Lambert_Conformal_Conic", "Lambert_Conformal_Conic_2SP", "lcc"];
-
-},{"../common/adjust_lon":5,"../common/msfnz":15,"../common/phi2z":16,"../common/sign":21,"../common/tsfnz":24}],51:[function(_dereq_,module,exports){
-exports.init = function() {
-  //no-op for longlat
-};
-
-function identity(pt) {
-  return pt;
-}
-exports.forward = identity;
-exports.inverse = identity;
-exports.names = ["longlat", "identity"];
-
-},{}],52:[function(_dereq_,module,exports){
-var msfnz = _dereq_('../common/msfnz');
-var HALF_PI = Math.PI/2;
-var EPSLN = 1.0e-10;
-var R2D = 57.29577951308232088;
-var adjust_lon = _dereq_('../common/adjust_lon');
-var FORTPI = Math.PI/4;
-var tsfnz = _dereq_('../common/tsfnz');
-var phi2z = _dereq_('../common/phi2z');
-exports.init = function() {
-  var con = this.b / this.a;
-  this.es = 1 - con * con;
-  if(!('x0' in this)){
-    this.x0 = 0;
-  }
-  if(!('y0' in this)){
-    this.y0 = 0;
-  }
-  this.e = Math.sqrt(this.es);
-  if (this.lat_ts) {
-    if (this.sphere) {
-      this.k0 = Math.cos(this.lat_ts);
-    }
-    else {
-      this.k0 = msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts));
-    }
-  }
-  else {
-    if (!this.k0) {
-      if (this.k) {
-        this.k0 = this.k;
-      }
-      else {
-        this.k0 = 1;
-      }
-    }
-  }
-};
-
-/* Mercator forward equations--mapping lat,long to x,y
-  --------------------------------------------------*/
-
-exports.forward = function(p) {
-  var lon = p.x;
-  var lat = p.y;
-  // convert to radians
-  if (lat * R2D > 90 && lat * R2D < -90 && lon * R2D > 180 && lon * R2D < -180) {
-    return null;
-  }
-
-  var x, y;
-  if (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN) {
-    return null;
-  }
-  else {
-    if (this.sphere) {
-      x = this.x0 + this.a * this.k0 * adjust_lon(lon - this.long0);
-      y = this.y0 + this.a * this.k0 * Math.log(Math.tan(FORTPI + 0.5 * lat));
-    }
-    else {
-      var sinphi = Math.sin(lat);
-      var ts = tsfnz(this.e, lat, sinphi);
-      x = this.x0 + this.a * this.k0 * adjust_lon(lon - this.long0);
-      y = this.y0 - this.a * this.k0 * Math.log(ts);
-    }
-    p.x = x;
-    p.y = y;
-    return p;
-  }
-};
-
-
-/* Mercator inverse equations--mapping x,y to lat/long
-  --------------------------------------------------*/
-exports.inverse = function(p) {
-
-  var x = p.x - this.x0;
-  var y = p.y - this.y0;
-  var lon, lat;
-
-  if (this.sphere) {
-    lat = HALF_PI - 2 * Math.atan(Math.exp(-y / (this.a * this.k0)));
-  }
-  else {
-    var ts = Math.exp(-y / (this.a * this.k0));
-    lat = phi2z(this.e, ts);
-    if (lat === -9999) {
-      return null;
-    }
-  }
-  lon = adjust_lon(this.long0 + x / (this.a * this.k0));
-
-  p.x = lon;
-  p.y = lat;
-  return p;
-};
-
-exports.names = ["Mercator", "Popular Visualisation Pseudo Mercator", "Mercator_1SP", "Mercator_Auxiliary_Sphere", "merc"];
-
-},{"../common/adjust_lon":5,"../common/msfnz":15,"../common/phi2z":16,"../common/tsfnz":24}],53:[function(_dereq_,module,exports){
-var adjust_lon = _dereq_('../common/adjust_lon');
-/*
-  reference
-    "New Equal-Area Map Projections for Noncircular Regions", John P. Snyder,
-    The American Cartographer, Vol 15, No. 4, October 1988, pp. 341-355.
-  */
-
-
-/* Initialize the Miller Cylindrical projection
-  -------------------------------------------*/
-exports.init = function() {
-  //no-op
-};
-
-
-/* Miller Cylindrical forward equations--mapping lat,long to x,y
-    ------------------------------------------------------------*/
-exports.forward = function(p) {
-  var lon = p.x;
-  var lat = p.y;
-  /* Forward equations
-      -----------------*/
-  var dlon = adjust_lon(lon - this.long0);
-  var x = this.x0 + this.a * dlon;
-  var y = this.y0 + this.a * Math.log(Math.tan((Math.PI / 4) + (lat / 2.5))) * 1.25;
-
-  p.x = x;
-  p.y = y;
-  return p;
-};
-
-/* Miller Cylindrical inverse equations--mapping x,y to lat/long
-    ------------------------------------------------------------*/
-exports.inverse = function(p) {
-  p.x -= this.x0;
-  p.y -= this.y0;
-
-  var lon = adjust_lon(this.long0 + p.x / this.a);
-  var lat = 2.5 * (Math.atan(Math.exp(0.8 * p.y / this.a)) - Math.PI / 4);
-
-  p.x = lon;
-  p.y = lat;
-  return p;
-};
-exports.names = ["Miller_Cylindrical", "mill"];
-
-},{"../common/adjust_lon":5}],54:[function(_dereq_,module,exports){
-var adjust_lon = _dereq_('../common/adjust_lon');
-var EPSLN = 1.0e-10;
-exports.init = function() {};
-
-/* Mollweide forward equations--mapping lat,long to x,y
-    ----------------------------------------------------*/
-exports.forward = function(p) {
-
-  /* Forward equations
-      -----------------*/
-  var lon = p.x;
-  var lat = p.y;
-
-  var delta_lon = adjust_lon(lon - this.long0);
-  var theta = lat;
-  var con = Math.PI * Math.sin(lat);
-
-  /* Iterate using the Newton-Raphson method to find theta
-      -----------------------------------------------------*/
-  for (var i = 0; true; i++) {
-    var delta_theta = -(theta + Math.sin(theta) - con) / (1 + Math.cos(theta));
-    theta += delta_theta;
-    if (Math.abs(delta_theta) < EPSLN) {
-      break;
-    }
-  }
-  theta /= 2;
-
-  /* If the latitude is 90 deg, force the x coordinate to be "0 + false easting"
-       this is done here because of precision problems with "cos(theta)"
-       --------------------------------------------------------------------------*/
-  if (Math.PI / 2 - Math.abs(lat) < EPSLN) {
-    delta_lon = 0;
-  }
-  var x = 0.900316316158 * this.a * delta_lon * Math.cos(theta) + this.x0;
-  var y = 1.4142135623731 * this.a * Math.sin(theta) + this.y0;
-
-  p.x = x;
-  p.y = y;
-  return p;
-};
-
-exports.inverse = function(p) {
-  var theta;
-  var arg;
-
-  /* Inverse equations
-      -----------------*/
-  p.x -= this.x0;
-  p.y -= this.y0;
-  arg = p.y / (1.4142135623731 * this.a);
-
-  /* Because of division by zero problems, 'arg' can not be 1.  Therefore
-       a number very close to one is used instead.
-       -------------------------------------------------------------------*/
-  if (Math.abs(arg) > 0.999999999999) {
-    arg = 0.999999999999;
-  }
-  theta = Math.asin(arg);
-  var lon = adjust_lon(this.long0 + (p.x / (0.900316316158 * this.a * Math.cos(theta))));
-  if (lon < (-Math.PI)) {
-    lon = -Math.PI;
-  }
-  if (lon > Math.PI) {
-    lon = Math.PI;
-  }
-  arg = (2 * theta + Math.sin(2 * theta)) / Math.PI;
-  if (Math.abs(arg) > 1) {
-    arg = 1;
-  }
-  var lat = Math.asin(arg);
-
-  p.x = lon;
-  p.y = lat;
-  return p;
-};
-exports.names = ["Mollweide", "moll"];
-
-},{"../common/adjust_lon":5}],55:[function(_dereq_,module,exports){
-var SEC_TO_RAD = 4.84813681109535993589914102357e-6;
-/*
-  reference
-    Department of Land and Survey Technical Circular 1973/32
-      http://www.linz.govt.nz/docs/miscellaneous/nz-map-definition.pdf
-    OSG Technical Report 4.1
-      http://www.linz.govt.nz/docs/miscellaneous/nzmg.pdf
-  */
-
-/**
- * iterations: Number of iterations to refine inverse transform.
- *     0 -> km accuracy
- *     1 -> m accuracy -- suitable for most mapping applications
- *     2 -> mm accuracy
- */
-exports.iterations = 1;
-
-exports.init = function() {
-  this.A = [];
-  this.A[1] = 0.6399175073;
-  this.A[2] = -0.1358797613;
-  this.A[3] = 0.063294409;
-  this.A[4] = -0.02526853;
-  this.A[5] = 0.0117879;
-  this.A[6] = -0.0055161;
-  this.A[7] = 0.0026906;
-  this.A[8] = -0.001333;
-  this.A[9] = 0.00067;
-  this.A[10] = -0.00034;
-
-  this.B_re = [];
-  this.B_im = [];
-  this.B_re[1] = 0.7557853228;
-  this.B_im[1] = 0;
-  this.B_re[2] = 0.249204646;
-  this.B_im[2] = 0.003371507;
-  this.B_re[3] = -0.001541739;
-  this.B_im[3] = 0.041058560;
-  this.B_re[4] = -0.10162907;
-  this.B_im[4] = 0.01727609;
-  this.B_re[5] = -0.26623489;
-  this.B_im[5] = -0.36249218;
-  this.B_re[6] = -0.6870983;
-  this.B_im[6] = -1.1651967;
-
-  this.C_re = [];
-  this.C_im = [];
-  this.C_re[1] = 1.3231270439;
-  this.C_im[1] = 0;
-  this.C_re[2] = -0.577245789;
-  this.C_im[2] = -0.007809598;
-  this.C_re[3] = 0.508307513;
-  this.C_im[3] = -0.112208952;
-  this.C_re[4] = -0.15094762;
-  this.C_im[4] = 0.18200602;
-  this.C_re[5] = 1.01418179;
-  this.C_im[5] = 1.64497696;
-  this.C_re[6] = 1.9660549;
-  this.C_im[6] = 2.5127645;
-
-  this.D = [];
-  this.D[1] = 1.5627014243;
-  this.D[2] = 0.5185406398;
-  this.D[3] = -0.03333098;
-  this.D[4] = -0.1052906;
-  this.D[5] = -0.0368594;
-  this.D[6] = 0.007317;
-  this.D[7] = 0.01220;
-  this.D[8] = 0.00394;
-  this.D[9] = -0.0013;
-};
-
-/**
-    New Zealand Map Grid Forward  - long/lat to x/y
-    long/lat in radians
-  */
-exports.forward = function(p) {
-  var n;
-  var lon = p.x;
-  var lat = p.y;
-
-  var delta_lat = lat - this.lat0;
-  var delta_lon = lon - this.long0;
-
-  // 1. Calculate d_phi and d_psi    ...                          // and d_lambda
-  // For this algorithm, delta_latitude is in seconds of arc x 10-5, so we need to scale to those units. Longitude is radians.
-  var d_phi = delta_lat / SEC_TO_RAD * 1E-5;
-  var d_lambda = delta_lon;
-  var d_phi_n = 1; // d_phi^0
-
-  var d_psi = 0;
-  for (n = 1; n <= 10; n++) {
-    d_phi_n = d_phi_n * d_phi;
-    d_psi = d_psi + this.A[n] * d_phi_n;
-  }
-
-  // 2. Calculate theta
-  var th_re = d_psi;
-  var th_im = d_lambda;
-
-  // 3. Calculate z
-  var th_n_re = 1;
-  var th_n_im = 0; // theta^0
-  var th_n_re1;
-  var th_n_im1;
-
-  var z_re = 0;
-  var z_im = 0;
-  for (n = 1; n <= 6; n++) {
-    th_n_re1 = th_n_re * th_re - th_n_im * th_im;
-    th_n_im1 = th_n_im * th_re + th_n_re * th_im;
-    th_n_re = th_n_re1;
-    th_n_im = th_n_im1;
-    z_re = z_re + this.B_re[n] * th_n_re - this.B_im[n] * th_n_im;
-    z_im = z_im + this.B_im[n] * th_n_re + this.B_re[n] * th_n_im;
-  }
-
-  // 4. Calculate easting and northing
-  p.x = (z_im * this.a) + this.x0;
-  p.y = (z_re * this.a) + this.y0;
-
-  return p;
-};
-
-
-/**
-    New Zealand Map Grid Inverse  -  x/y to long/lat
-  */
-exports.inverse = function(p) {
-  var n;
-  var x = p.x;
-  var y = p.y;
-
-  var delta_x = x - this.x0;
-  var delta_y = y - this.y0;
-
-  // 1. Calculate z
-  var z_re = delta_y / this.a;
-  var z_im = delta_x / this.a;
-
-  // 2a. Calculate theta - first approximation gives km accuracy
-  var z_n_re = 1;
-  var z_n_im = 0; // z^0
-  var z_n_re1;
-  var z_n_im1;
-
-  var th_re = 0;
-  var th_im = 0;
-  for (n = 1; n <= 6; n++) {
-    z_n_re1 = z_n_re * z_re - z_n_im * z_im;
-    z_n_im1 = z_n_im * z_re + z_n_re * z_im;
-    z_n_re = z_n_re1;
-    z_n_im = z_n_im1;
-    th_re = th_re + this.C_re[n] * z_n_re - this.C_im[n] * z_n_im;
-    th_im = th_im + this.C_im[n] * z_n_re + this.C_re[n] * z_n_im;
-  }
-
-  // 2b. Iterate to refine the accuracy of the calculation
-  //        0 iterations gives km accuracy
-  //        1 iteration gives m accuracy -- good enough for most mapping applications
-  //        2 iterations bives mm accuracy
-  for (var i = 0; i < this.iterations; i++) {
-    var th_n_re = th_re;
-    var th_n_im = th_im;
-    var th_n_re1;
-    var th_n_im1;
-
-    var num_re = z_re;
-    var num_im = z_im;
-    for (n = 2; n <= 6; n++) {
-      th_n_re1 = th_n_re * th_re - th_n_im * th_im;
-      th_n_im1 = th_n_im * th_re + th_n_re * th_im;
-      th_n_re = th_n_re1;
-      th_n_im = th_n_im1;
-      num_re = num_re + (n - 1) * (this.B_re[n] * th_n_re - this.B_im[n] * th_n_im);
-      num_im = num_im + (n - 1) * (this.B_im[n] * th_n_re + this.B_re[n] * th_n_im);
-    }
-
-    th_n_re = 1;
-    th_n_im = 0;
-    var den_re = this.B_re[1];
-    var den_im = this.B_im[1];
-    for (n = 2; n <= 6; n++) {
-      th_n_re1 = th_n_re * th_re - th_n_im * th_im;
-      th_n_im1 = th_n_im * th_re + th_n_re * th_im;
-      th_n_re = th_n_re1;
-      th_n_im = th_n_im1;
-      den_re = den_re + n * (this.B_re[n] * th_n_re - this.B_im[n] * th_n_im);
-      den_im = den_im + n * (this.B_im[n] * th_n_re + this.B_re[n] * th_n_im);
-    }
-
-    // Complex division
-    var den2 = den_re * den_re + den_im * den_im;
-    th_re = (num_re * den_re + num_im * den_im) / den2;
-    th_im = (num_im * den_re - num_re * den_im) / den2;
-  }
-
-  // 3. Calculate d_phi              ...                                    // and d_lambda
-  var d_psi = th_re;
-  var d_lambda = th_im;
-  var d_psi_n = 1; // d_psi^0
-
-  var d_phi = 0;
-  for (n = 1; n <= 9; n++) {
-    d_psi_n = d_psi_n * d_psi;
-    d_phi = d_phi + this.D[n] * d_psi_n;
-  }
-
-  // 4. Calculate latitude and longitude
-  // d_phi is calcuated in second of arc * 10^-5, so we need to scale back to radians. d_lambda is in radians.
-  var lat = this.lat0 + (d_phi * SEC_TO_RAD * 1E5);
-  var lon = this.long0 + d_lambda;
-
-  p.x = lon;
-  p.y = lat;
-
-  return p;
-};
-exports.names = ["New_Zealand_Map_Grid", "nzmg"];
-},{}],56:[function(_dereq_,module,exports){
-var tsfnz = _dereq_('../common/tsfnz');
-var adjust_lon = _dereq_('../common/adjust_lon');
-var phi2z = _dereq_('../common/phi2z');
-var HALF_PI = Math.PI/2;
-var FORTPI = Math.PI/4;
-var EPSLN = 1.0e-10;
-
-/* Initialize the Oblique Mercator  projection
-    ------------------------------------------*/
-exports.init = function() {
-  this.no_off = this.no_off || false;
-  this.no_rot = this.no_rot || false;
-
-  if (isNaN(this.k0)) {
-    this.k0 = 1;
-  }
-  var sinlat = Math.sin(this.lat0);
-  var coslat = Math.cos(this.lat0);
-  var con = this.e * sinlat;
-
-  this.bl = Math.sqrt(1 + this.es / (1 - this.es) * Math.pow(coslat, 4));
-  this.al = this.a * this.bl * this.k0 * Math.sqrt(1 - this.es) / (1 - con * con);
-  var t0 = tsfnz(this.e, this.lat0, sinlat);
-  var dl = this.bl / coslat * Math.sqrt((1 - this.es) / (1 - con * con));
-  if (dl * dl < 1) {
-    dl = 1;
-  }
-  var fl;
-  var gl;
-  if (!isNaN(this.longc)) {
-    //Central point and azimuth method
-
-    if (this.lat0 >= 0) {
-      fl = dl + Math.sqrt(dl * dl - 1);
-    }
-    else {
-      fl = dl - Math.sqrt(dl * dl - 1);
-    }
-    this.el = fl * Math.pow(t0, this.bl);
-    gl = 0.5 * (fl - 1 / fl);
-    this.gamma0 = Math.asin(Math.sin(this.alpha) / dl);
-    this.long0 = this.longc - Math.asin(gl * Math.tan(this.gamma0)) / this.bl;
-
-  }
-  else {
-    //2 points method
-    var t1 = tsfnz(this.e, this.lat1, Math.sin(this.lat1));
-    var t2 = tsfnz(this.e, this.lat2, Math.sin(this.lat2));
-    if (this.lat0 >= 0) {
-      this.el = (dl + Math.sqrt(dl * dl - 1)) * Math.pow(t0, this.bl);
-    }
-    else {
-      this.el = (dl - Math.sqrt(dl * dl - 1)) * Math.pow(t0, this.bl);
-    }
-    var hl = Math.pow(t1, this.bl);
-    var ll = Math.pow(t2, this.bl);
-    fl = this.el / hl;
-    gl = 0.5 * (fl - 1 / fl);
-    var jl = (this.el * this.el - ll * hl) / (this.el * this.el + ll * hl);
-    var pl = (ll - hl) / (ll + hl);
-    var dlon12 = adjust_lon(this.long1 - this.long2);
-    this.long0 = 0.5 * (this.long1 + this.long2) - Math.atan(jl * Math.tan(0.5 * this.bl * (dlon12)) / pl) / this.bl;
-    this.long0 = adjust_lon(this.long0);
-    var dlon10 = adjust_lon(this.long1 - this.long0);
-    this.gamma0 = Math.atan(Math.sin(this.bl * (dlon10)) / gl);
-    this.alpha = Math.asin(dl * Math.sin(this.gamma0));
-  }
-
-  if (this.no_off) {
-    this.uc = 0;
-  }
-  else {
-    if (this.lat0 >= 0) {
-      this.uc = this.al / this.bl * Math.atan2(Math.sqrt(dl * dl - 1), Math.cos(this.alpha));
-    }
-    else {
-      this.uc = -1 * this.al / this.bl * Math.atan2(Math.sqrt(dl * dl - 1), Math.cos(this.alpha));
-    }
-  }
-
-};
-
-
-/* Oblique Mercator forward equations--mapping lat,long to x,y
-    ----------------------------------------------------------*/
-exports.forward = function(p) {
-  var lon = p.x;
-  var lat = p.y;
-  var dlon = adjust_lon(lon - this.long0);
-  var us, vs;
-  var con;
-  if (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN) {
-    if (lat > 0) {
-      con = -1;
-    }
-    else {
-      con = 1;
-    }
-    vs = this.al / this.bl * Math.log(Math.tan(FORTPI + con * this.gamma0 * 0.5));
-    us = -1 * con * HALF_PI * this.al / this.bl;
-  }
-  else {
-    var t = tsfnz(this.e, lat, Math.sin(lat));
-    var ql = this.el / Math.pow(t, this.bl);
-    var sl = 0.5 * (ql - 1 / ql);
-    var tl = 0.5 * (ql + 1 / ql);
-    var vl = Math.sin(this.bl * (dlon));
-    var ul = (sl * Math.sin(this.gamma0) - vl * Math.cos(this.gamma0)) / tl;
-    if (Math.abs(Math.abs(ul) - 1) <= EPSLN) {
-      vs = Number.POSITIVE_INFINITY;
-    }
-    else {
-      vs = 0.5 * this.al * Math.log((1 - ul) / (1 + ul)) / this.bl;
-    }
-    if (Math.abs(Math.cos(this.bl * (dlon))) <= EPSLN) {
-      us = this.al * this.bl * (dlon);
-    }
-    else {
-      us = this.al * Math.atan2(sl * Math.cos(this.gamma0) + vl * Math.sin(this.gamma0), Math.cos(this.bl * dlon)) / this.bl;
-    }
-  }
-
-  if (this.no_rot) {
-    p.x = this.x0 + us;
-    p.y = this.y0 + vs;
-  }
-  else {
-
-    us -= this.uc;
-    p.x = this.x0 + vs * Math.cos(this.alpha) + us * Math.sin(this.alpha);
-    p.y = this.y0 + us * Math.cos(this.alpha) - vs * Math.sin(this.alpha);
-  }
-  return p;
-};
-
-exports.inverse = function(p) {
-  var us, vs;
-  if (this.no_rot) {
-    vs = p.y - this.y0;
-    us = p.x - this.x0;
-  }
-  else {
-    vs = (p.x - this.x0) * Math.cos(this.alpha) - (p.y - this.y0) * Math.sin(this.alpha);
-    us = (p.y - this.y0) * Math.cos(this.alpha) + (p.x - this.x0) * Math.sin(this.alpha);
-    us += this.uc;
-  }
-  var qp = Math.exp(-1 * this.bl * vs / this.al);
-  var sp = 0.5 * (qp - 1 / qp);
-  var tp = 0.5 * (qp + 1 / qp);
-  var vp = Math.sin(this.bl * us / this.al);
-  var up = (vp * Math.cos(this.gamma0) + sp * Math.sin(this.gamma0)) / tp;
-  var ts = Math.pow(this.el / Math.sqrt((1 + up) / (1 - up)), 1 / this.bl);
-  if (Math.abs(up - 1) < EPSLN) {
-    p.x = this.long0;
-    p.y = HALF_PI;
-  }
-  else if (Math.abs(up + 1) < EPSLN) {
-    p.x = this.long0;
-    p.y = -1 * HALF_PI;
-  }
-  else {
-    p.y = phi2z(this.e, ts);
-    p.x = adjust_lon(this.long0 - Math.atan2(sp * Math.cos(this.gamma0) - vp * Math.sin(this.gamma0), Math.cos(this.bl * us / this.al)) / this.bl);
-  }
-  return p;
-};
-
-exports.names = ["Hotine_Oblique_Mercator", "Hotine Oblique Mercator", "Hotine_Oblique_Mercator_Azimuth_Natural_Origin", "Hotine_Oblique_Mercator_Azimuth_Center", "omerc"];
-},{"../common/adjust_lon":5,"../common/phi2z":16,"../common/tsfnz":24}],57:[function(_dereq_,module,exports){
-var e0fn = _dereq_('../common/e0fn');
-var e1fn = _dereq_('../common/e1fn');
-var e2fn = _dereq_('../common/e2fn');
-var e3fn = _dereq_('../common/e3fn');
-var adjust_lon = _dereq_('../common/adjust_lon');
-var adjust_lat = _dereq_('../common/adjust_lat');
-var mlfn = _dereq_('../common/mlfn');
-var EPSLN = 1.0e-10;
-var gN = _dereq_('../common/gN');
-var MAX_ITER = 20;
-exports.init = function() {
-  /* Place parameters in static storage for common use
-      -------------------------------------------------*/
-  this.temp = this.b / this.a;
-  this.es = 1 - Math.pow(this.temp, 2); // devait etre dans tmerc.js mais n y est pas donc je commente sinon retour de valeurs nulles
-  this.e = Math.sqrt(this.es);
-  this.e0 = e0fn(this.es);
-  this.e1 = e1fn(this.es);
-  this.e2 = e2fn(this.es);
-  this.e3 = e3fn(this.es);
-  this.ml0 = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0); //si que des zeros le calcul ne se fait pas
-};
-
-
-/* Polyconic forward equations--mapping lat,long to x,y
-    ---------------------------------------------------*/
-exports.forward = function(p) {
-  var lon = p.x;
-  var lat = p.y;
-  var x, y, el;
-  var dlon = adjust_lon(lon - this.long0);
-  el = dlon * Math.sin(lat);
-  if (this.sphere) {
-    if (Math.abs(lat) <= EPSLN) {
-      x = this.a * dlon;
-      y = -1 * this.a * this.lat0;
-    }
-    else {
-      x = this.a * Math.sin(el) / Math.tan(lat);
-      y = this.a * (adjust_lat(lat - this.lat0) + (1 - Math.cos(el)) / Math.tan(lat));
-    }
-  }
-  else {
-    if (Math.abs(lat) <= EPSLN) {
-      x = this.a * dlon;
-      y = -1 * this.ml0;
-    }
-    else {
-      var nl = gN(this.a, this.e, Math.sin(lat)) / Math.tan(lat);
-      x = nl * Math.sin(el);
-      y = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, lat) - this.ml0 + nl * (1 - Math.cos(el));
-    }
-
-  }
-  p.x = x + this.x0;
-  p.y = y + this.y0;
-  return p;
-};
-
-
-/* Inverse equations
-  -----------------*/
-exports.inverse = function(p) {
-  var lon, lat, x, y, i;
-  var al, bl;
-  var phi, dphi;
-  x = p.x - this.x0;
-  y = p.y - this.y0;
-
-  if (this.sphere) {
-    if (Math.abs(y + this.a * this.lat0) <= EPSLN) {
-      lon = adjust_lon(x / this.a + this.long0);
-      lat = 0;
-    }
-    else {
-      al = this.lat0 + y / this.a;
-      bl = x * x / this.a / this.a + al * al;
-      phi = al;
-      var tanphi;
-      for (i = MAX_ITER; i; --i) {
-        tanphi = Math.tan(phi);
-        dphi = -1 * (al * (phi * tanphi + 1) - phi - 0.5 * (phi * phi + bl) * tanphi) / ((phi - al) / tanphi - 1);
-        phi += dphi;
-        if (Math.abs(dphi) <= EPSLN) {
-          lat = phi;
-          break;
-        }
-      }
-      lon = adjust_lon(this.long0 + (Math.asin(x * Math.tan(phi) / this.a)) / Math.sin(lat));
-    }
-  }
-  else {
-    if (Math.abs(y + this.ml0) <= EPSLN) {
-      lat = 0;
-      lon = adjust_lon(this.long0 + x / this.a);
-    }
-    else {
-
-      al = (this.ml0 + y) / this.a;
-      bl = x * x / this.a / this.a + al * al;
-      phi = al;
-      var cl, mln, mlnp, ma;
-      var con;
-      for (i = MAX_ITER; i; --i) {
-        con = this.e * Math.sin(phi);
-        cl = Math.sqrt(1 - con * con) * Math.tan(phi);
-        mln = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, phi);
-        mlnp = this.e0 - 2 * this.e1 * Math.cos(2 * phi) + 4 * this.e2 * Math.cos(4 * phi) - 6 * this.e3 * Math.cos(6 * phi);
-        ma = mln / this.a;
-        dphi = (al * (cl * ma + 1) - ma - 0.5 * cl * (ma * ma + bl)) / (this.es * Math.sin(2 * phi) * (ma * ma + bl - 2 * al * ma) / (4 * cl) + (al - ma) * (cl * mlnp - 2 / Math.sin(2 * phi)) - mlnp);
-        phi -= dphi;
-        if (Math.abs(dphi) <= EPSLN) {
-          lat = phi;
-          break;
-        }
-      }
-
-      //lat=phi4z(this.e,this.e0,this.e1,this.e2,this.e3,al,bl,0,0);
-      cl = Math.sqrt(1 - this.es * Math.pow(Math.sin(lat), 2)) * Math.tan(lat);
-      lon = adjust_lon(this.long0 + Math.asin(x * cl / this.a) / Math.sin(lat));
-    }
-  }
-
-  p.x = lon;
-  p.y = lat;
-  return p;
-};
-exports.names = ["Polyconic", "poly"];
-},{"../common/adjust_lat":4,"../common/adjust_lon":5,"../common/e0fn":7,"../common/e1fn":8,"../common/e2fn":9,"../common/e3fn":10,"../common/gN":11,"../common/mlfn":14}],58:[function(_dereq_,module,exports){
-var adjust_lon = _dereq_('../common/adjust_lon');
-var adjust_lat = _dereq_('../common/adjust_lat');
-var pj_enfn = _dereq_('../common/pj_enfn');
-var MAX_ITER = 20;
-var pj_mlfn = _dereq_('../common/pj_mlfn');
-var pj_inv_mlfn = _dereq_('../common/pj_inv_mlfn');
-var HALF_PI = Math.PI/2;
-var EPSLN = 1.0e-10;
-var asinz = _dereq_('../common/asinz');
-exports.init = function() {
-  /* Place parameters in static storage for common use
-    -------------------------------------------------*/
-
-
-  if (!this.sphere) {
-    this.en = pj_enfn(this.es);
-  }
-  else {
-    this.n = 1;
-    this.m = 0;
-    this.es = 0;
-    this.C_y = Math.sqrt((this.m + 1) / this.n);
-    this.C_x = this.C_y / (this.m + 1);
-  }
-
-};
-
-/* Sinusoidal forward equations--mapping lat,long to x,y
-  -----------------------------------------------------*/
-exports.forward = function(p) {
-  var x, y;
-  var lon = p.x;
-  var lat = p.y;
-  /* Forward equations
-    -----------------*/
-  lon = adjust_lon(lon - this.long0);
-
-  if (this.sphere) {
-    if (!this.m) {
-      lat = this.n !== 1 ? Math.asin(this.n * Math.sin(lat)) : lat;
-    }
-    else {
-      var k = this.n * Math.sin(lat);
-      for (var i = MAX_ITER; i; --i) {
-        var V = (this.m * lat + Math.sin(lat) - k) / (this.m + Math.cos(lat));
-        lat -= V;
-        if (Math.abs(V) < EPSLN) {
-          break;
-        }
-      }
-    }
-    x = this.a * this.C_x * lon * (this.m + Math.cos(lat));
-    y = this.a * this.C_y * lat;
-
-  }
-  else {
-
-    var s = Math.sin(lat);
-    var c = Math.cos(lat);
-    y = this.a * pj_mlfn(lat, s, c, this.en);
-    x = this.a * lon * c / Math.sqrt(1 - this.es * s * s);
-  }
-
-  p.x = x;
-  p.y = y;
-  return p;
-};
-
-exports.inverse = function(p) {
-  var lat, temp, lon, s;
-
-  p.x -= this.x0;
-  lon = p.x / this.a;
-  p.y -= this.y0;
-  lat = p.y / this.a;
-
-  if (this.sphere) {
-    lat /= this.C_y;
-    lon = lon / (this.C_x * (this.m + Math.cos(lat)));
-    if (this.m) {
-      lat = asinz((this.m * lat + Math.sin(lat)) / this.n);
-    }
-    else if (this.n !== 1) {
-      lat = asinz(Math.sin(lat) / this.n);
-    }
-    lon = adjust_lon(lon + this.long0);
-    lat = adjust_lat(lat);
-  }
-  else {
-    lat = pj_inv_mlfn(p.y / this.a, this.es, this.en);
-    s = Math.abs(lat);
-    if (s < HALF_PI) {
-      s = Math.sin(lat);
-      temp = this.long0 + p.x * Math.sqrt(1 - this.es * s * s) / (this.a * Math.cos(lat));
-      //temp = this.long0 + p.x / (this.a * Math.cos(lat));
-      lon = adjust_lon(temp);
-    }
-    else if ((s - EPSLN) < HALF_PI) {
-      lon = this.long0;
-    }
-  }
-  p.x = lon;
-  p.y = lat;
-  return p;
-};
-exports.names = ["Sinusoidal", "sinu"];
-},{"../common/adjust_lat":4,"../common/adjust_lon":5,"../common/asinz":6,"../common/pj_enfn":17,"../common/pj_inv_mlfn":18,"../common/pj_mlfn":19}],59:[function(_dereq_,module,exports){
-/*
-  references:
-    Formules et constantes pour le Calcul pour la
-    projection cylindrique conforme à axe oblique et pour la transformation entre
-    des systèmes de référence.
-    http://www.swisstopo.admin.ch/internet/swisstopo/fr/home/topics/survey/sys/refsys/switzerland.parsysrelated1.31216.downloadList.77004.DownloadFile.tmp/swissprojectionfr.pdf
-  */
-exports.init = function() {
-  var phy0 = this.lat0;
-  this.lambda0 = this.long0;
-  var sinPhy0 = Math.sin(phy0);
-  var semiMajorAxis = this.a;
-  var invF = this.rf;
-  var flattening = 1 / invF;
-  var e2 = 2 * flattening - Math.pow(flattening, 2);
-  var e = this.e = Math.sqrt(e2);
-  this.R = this.k0 * semiMajorAxis * Math.sqrt(1 - e2) / (1 - e2 * Math.pow(sinPhy0, 2));
-  this.alpha = Math.sqrt(1 + e2 / (1 - e2) * Math.pow(Math.cos(phy0), 4));
-  this.b0 = Math.asin(sinPhy0 / this.alpha);
-  var k1 = Math.log(Math.tan(Math.PI / 4 + this.b0 / 2));
-  var k2 = Math.log(Math.tan(Math.PI / 4 + phy0 / 2));
-  var k3 = Math.log((1 + e * sinPhy0) / (1 - e * sinPhy0));
-  this.K = k1 - this.alpha * k2 + this.alpha * e / 2 * k3;
-};
-
-
-exports.forward = function(p) {
-  var Sa1 = Math.log(Math.tan(Math.PI / 4 - p.y / 2));
-  var Sa2 = this.e / 2 * Math.log((1 + this.e * Math.sin(p.y)) / (1 - this.e * Math.sin(p.y)));
-  var S = -this.alpha * (Sa1 + Sa2) + this.K;
-
-  // spheric latitude
-  var b = 2 * (Math.atan(Math.exp(S)) - Math.PI / 4);
-
-  // spheric longitude
-  var I = this.alpha * (p.x - this.lambda0);
-
-  // psoeudo equatorial rotation
-  var rotI = Math.atan(Math.sin(I) / (Math.sin(this.b0) * Math.tan(b) + Math.cos(this.b0) * Math.cos(I)));
-
-  var rotB = Math.asin(Math.cos(this.b0) * Math.sin(b) - Math.sin(this.b0) * Math.cos(b) * Math.cos(I));
-
-  p.y = this.R / 2 * Math.log((1 + Math.sin(rotB)) / (1 - Math.sin(rotB))) + this.y0;
-  p.x = this.R * rotI + this.x0;
-  return p;
-};
-
-exports.inverse = function(p) {
-  var Y = p.x - this.x0;
-  var X = p.y - this.y0;
-
-  var rotI = Y / this.R;
-  var rotB = 2 * (Math.atan(Math.exp(X / this.R)) - Math.PI / 4);
-
-  var b = Math.asin(Math.cos(this.b0) * Math.sin(rotB) + Math.sin(this.b0) * Math.cos(rotB) * Math.cos(rotI));
-  var I = Math.atan(Math.sin(rotI) / (Math.cos(this.b0) * Math.cos(rotI) - Math.sin(this.b0) * Math.tan(rotB)));
-
-  var lambda = this.lambda0 + I / this.alpha;
-
-  var S = 0;
-  var phy = b;
-  var prevPhy = -1000;
-  var iteration = 0;
-  while (Math.abs(phy - prevPhy) > 0.0000001) {
-    if (++iteration > 20) {
-      //...reportError("omercFwdInfinity");
-      return;
-    }
-    //S = Math.log(Math.tan(Math.PI / 4 + phy / 2));
-    S = 1 / this.alpha * (Math.log(Math.tan(Math.PI / 4 + b / 2)) - this.K) + this.e * Math.log(Math.tan(Math.PI / 4 + Math.asin(this.e * Math.sin(phy)) / 2));
-    prevPhy = phy;
-    phy = 2 * Math.atan(Math.exp(S)) - Math.PI / 2;
-  }
-
-  p.x = lambda;
-  p.y = phy;
-  return p;
-};
-
-exports.names = ["somerc"];
-
-},{}],60:[function(_dereq_,module,exports){
-var HALF_PI = Math.PI/2;
-var EPSLN = 1.0e-10;
-var sign = _dereq_('../common/sign');
-var msfnz = _dereq_('../common/msfnz');
-var tsfnz = _dereq_('../common/tsfnz');
-var phi2z = _dereq_('../common/phi2z');
-var adjust_lon = _dereq_('../common/adjust_lon');
-exports.ssfn_ = function(phit, sinphi, eccen) {
-  sinphi *= eccen;
-  return (Math.tan(0.5 * (HALF_PI + phit)) * Math.pow((1 - sinphi) / (1 + sinphi), 0.5 * eccen));
-};
-
-exports.init = function() {
-  this.coslat0 = Math.cos(this.lat0);
-  this.sinlat0 = Math.sin(this.lat0);
-  if (this.sphere) {
-    if (this.k0 === 1 && !isNaN(this.lat_ts) && Math.abs(this.coslat0) <= EPSLN) {
-      this.k0 = 0.5 * (1 + sign(this.lat0) * Math.sin(this.lat_ts));
-    }
-  }
-  else {
-    if (Math.abs(this.coslat0) <= EPSLN) {
-      if (this.lat0 > 0) {
-        //North pole
-        //trace('stere:north pole');
-        this.con = 1;
-      }
-      else {
-        //South pole
-        //trace('stere:south pole');
-        this.con = -1;
-      }
-    }
-    this.cons = Math.sqrt(Math.pow(1 + this.e, 1 + this.e) * Math.pow(1 - this.e, 1 - this.e));
-    if (this.k0 === 1 && !isNaN(this.lat_ts) && Math.abs(this.coslat0) <= EPSLN) {
-      this.k0 = 0.5 * this.cons * msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts)) / tsfnz(this.e, this.con * this.lat_ts, this.con * Math.sin(this.lat_ts));
-    }
-    this.ms1 = msfnz(this.e, this.sinlat0, this.coslat0);
-    this.X0 = 2 * Math.atan(this.ssfn_(this.lat0, this.sinlat0, this.e)) - HALF_PI;
-    this.cosX0 = Math.cos(this.X0);
-    this.sinX0 = Math.sin(this.X0);
-  }
-};
-
-// Stereographic forward equations--mapping lat,long to x,y
-exports.forward = function(p) {
-  var lon = p.x;
-  var lat = p.y;
-  var sinlat = Math.sin(lat);
-  var coslat = Math.cos(lat);
-  var A, X, sinX, cosX, ts, rh;
-  var dlon = adjust_lon(lon - this.long0);
-
-  if (Math.abs(Math.abs(lon - this.long0) - Math.PI) <= EPSLN && Math.abs(lat + this.lat0) <= EPSLN) {
-    //case of the origine point
-    //trace('stere:this is the origin point');
-    p.x = NaN;
-    p.y = NaN;
-    return p;
-  }
-  if (this.sphere) {
-    //trace('stere:sphere case');
-    A = 2 * this.k0 / (1 + this.sinlat0 * sinlat + this.coslat0 * coslat * Math.cos(dlon));
-    p.x = this.a * A * coslat * Math.sin(dlon) + this.x0;
-    p.y = this.a * A * (this.coslat0 * sinlat - this.sinlat0 * coslat * Math.cos(dlon)) + this.y0;
-    return p;
-  }
-  else {
-    X = 2 * Math.atan(this.ssfn_(lat, sinlat, this.e)) - HALF_PI;
-    cosX = Math.cos(X);
-    sinX = Math.sin(X);
-    if (Math.abs(this.coslat0) <= EPSLN) {
-      ts = tsfnz(this.e, lat * this.con, this.con * sinlat);
-      rh = 2 * this.a * this.k0 * ts / this.cons;
-      p.x = this.x0 + rh * Math.sin(lon - this.long0);
-      p.y = this.y0 - this.con * rh * Math.cos(lon - this.long0);
-      //trace(p.toString());
-      return p;
-    }
-    else if (Math.abs(this.sinlat0) < EPSLN) {
-      //Eq
-      //trace('stere:equateur');
-      A = 2 * this.a * this.k0 / (1 + cosX * Math.cos(dlon));
-      p.y = A * sinX;
-    }
-    else {
-      //other case
-      //trace('stere:normal case');
-      A = 2 * this.a * this.k0 * this.ms1 / (this.cosX0 * (1 + this.sinX0 * sinX + this.cosX0 * cosX * Math.cos(dlon)));
-      p.y = A * (this.cosX0 * sinX - this.sinX0 * cosX * Math.cos(dlon)) + this.y0;
-    }
-    p.x = A * cosX * Math.sin(dlon) + this.x0;
-  }
-  //trace(p.toString());
-  return p;
-};
-
-
-//* Stereographic inverse equations--mapping x,y to lat/long
-exports.inverse = function(p) {
-  p.x -= this.x0;
-  p.y -= this.y0;
-  var lon, lat, ts, ce, Chi;
-  var rh = Math.sqrt(p.x * p.x + p.y * p.y);
-  if (this.sphere) {
-    var c = 2 * Math.atan(rh / (0.5 * this.a * this.k0));
-    lon = this.long0;
-    lat = this.lat0;
-    if (rh <= EPSLN) {
-      p.x = lon;
-      p.y = lat;
-      return p;
-    }
-    lat = Math.asin(Math.cos(c) * this.sinlat0 + p.y * Math.sin(c) * this.coslat0 / rh);
-    if (Math.abs(this.coslat0) < EPSLN) {
-      if (this.lat0 > 0) {
-        lon = adjust_lon(this.long0 + Math.atan2(p.x, - 1 * p.y));
-      }
-      else {
-        lon = adjust_lon(this.long0 + Math.atan2(p.x, p.y));
-      }
-    }
-    else {
-      lon = adjust_lon(this.long0 + Math.atan2(p.x * Math.sin(c), rh * this.coslat0 * Math.cos(c) - p.y * this.sinlat0 * Math.sin(c)));
-    }
-    p.x = lon;
-    p.y = lat;
-    return p;
-  }
-  else {
-    if (Math.abs(this.coslat0) <= EPSLN) {
-      if (rh <= EPSLN) {
-        lat = this.lat0;
-        lon = this.long0;
-        p.x = lon;
-        p.y = lat;
-        //trace(p.toString());
-        return p;
-      }
-      p.x *= this.con;
-      p.y *= this.con;
-      ts = rh * this.cons / (2 * this.a * this.k0);
-      lat = this.con * phi2z(this.e, ts);
-      lon = this.con * adjust_lon(this.con * this.long0 + Math.atan2(p.x, - 1 * p.y));
-    }
-    else {
-      ce = 2 * Math.atan(rh * this.cosX0 / (2 * this.a * this.k0 * this.ms1));
-      lon = this.long0;
-      if (rh <= EPSLN) {
-        Chi = this.X0;
-      }
-      else {
-        Chi = Math.asin(Math.cos(ce) * this.sinX0 + p.y * Math.sin(ce) * this.cosX0 / rh);
-        lon = adjust_lon(this.long0 + Math.atan2(p.x * Math.sin(ce), rh * this.cosX0 * Math.cos(ce) - p.y * this.sinX0 * Math.sin(ce)));
-      }
-      lat = -1 * phi2z(this.e, Math.tan(0.5 * (HALF_PI + Chi)));
-    }
-  }
-  p.x = lon;
-  p.y = lat;
-
-  //trace(p.toString());
-  return p;
-
-};
-exports.names = ["stere", "Stereographic_South_Pole", "Polar Stereographic (variant B)"];
-
-},{"../common/adjust_lon":5,"../common/msfnz":15,"../common/phi2z":16,"../common/sign":21,"../common/tsfnz":24}],61:[function(_dereq_,module,exports){
-var gauss = _dereq_('./gauss');
-var adjust_lon = _dereq_('../common/adjust_lon');
-exports.init = function() {
-  gauss.init.apply(this);
-  if (!this.rc) {
-    return;
-  }
-  this.sinc0 = Math.sin(this.phic0);
-  this.cosc0 = Math.cos(this.phic0);
-  this.R2 = 2 * this.rc;
-  if (!this.title) {
-    this.title = "Oblique Stereographic Alternative";
-  }
-};
-
-exports.forward = function(p) {
-  var sinc, cosc, cosl, k;
-  p.x = adjust_lon(p.x - this.long0);
-  gauss.forward.apply(this, [p]);
-  sinc = Math.sin(p.y);
-  cosc = Math.cos(p.y);
-  cosl = Math.cos(p.x);
-  k = this.k0 * this.R2 / (1 + this.sinc0 * sinc + this.cosc0 * cosc * cosl);
-  p.x = k * cosc * Math.sin(p.x);
-  p.y = k * (this.cosc0 * sinc - this.sinc0 * cosc * cosl);
-  p.x = this.a * p.x + this.x0;
-  p.y = this.a * p.y + this.y0;
-  return p;
-};
-
-exports.inverse = function(p) {
-  var sinc, cosc, lon, lat, rho;
-  p.x = (p.x - this.x0) / this.a;
-  p.y = (p.y - this.y0) / this.a;
-
-  p.x /= this.k0;
-  p.y /= this.k0;
-  if ((rho = Math.sqrt(p.x * p.x + p.y * p.y))) {
-    var c = 2 * Math.atan2(rho, this.R2);
-    sinc = Math.sin(c);
-    cosc = Math.cos(c);
-    lat = Math.asin(cosc * this.sinc0 + p.y * sinc * this.cosc0 / rho);
-    lon = Math.atan2(p.x * sinc, rho * this.cosc0 * cosc - p.y * this.sinc0 * sinc);
-  }
-  else {
-    lat = this.phic0;
-    lon = 0;
-  }
-
-  p.x = lon;
-  p.y = lat;
-  gauss.inverse.apply(this, [p]);
-  p.x = adjust_lon(p.x + this.long0);
-  return p;
-};
-
-exports.names = ["Stereographic_North_Pole", "Oblique_Stereographic", "Polar_Stereographic", "sterea","Oblique Stereographic Alternative"];
-
-},{"../common/adjust_lon":5,"./gauss":46}],62:[function(_dereq_,module,exports){
-var e0fn = _dereq_('../common/e0fn');
-var e1fn = _dereq_('../common/e1fn');
-var e2fn = _dereq_('../common/e2fn');
-var e3fn = _dereq_('../common/e3fn');
-var mlfn = _dereq_('../common/mlfn');
-var adjust_lon = _dereq_('../common/adjust_lon');
-var HALF_PI = Math.PI/2;
-var EPSLN = 1.0e-10;
-var sign = _dereq_('../common/sign');
-var asinz = _dereq_('../common/asinz');
-
-exports.init = function() {
-  this.e0 = e0fn(this.es);
-  this.e1 = e1fn(this.es);
-  this.e2 = e2fn(this.es);
-  this.e3 = e3fn(this.es);
-  this.ml0 = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0);
-};
-
-/**
-    Transverse Mercator Forward  - long/lat to x/y
-    long/lat in radians
-  */
-exports.forward = function(p) {
-  var lon = p.x;
-  var lat = p.y;
-
-  var delta_lon = adjust_lon(lon - this.long0);
-  var con;
-  var x, y;
-  var sin_phi = Math.sin(lat);
-  var cos_phi = Math.cos(lat);
-
-  if (this.sphere) {
-    var b = cos_phi * Math.sin(delta_lon);
-    if ((Math.abs(Math.abs(b) - 1)) < 0.0000000001) {
-      return (93);
-    }
-    else {
-      x = 0.5 * this.a * this.k0 * Math.log((1 + b) / (1 - b));
-      con = Math.acos(cos_phi * Math.cos(delta_lon) / Math.sqrt(1 - b * b));
-      if (lat < 0) {
-        con = -con;
-      }
-      y = this.a * this.k0 * (con - this.lat0);
-    }
-  }
-  else {
-    var al = cos_phi * delta_lon;
-    var als = Math.pow(al, 2);
-    var c = this.ep2 * Math.pow(cos_phi, 2);
-    var tq = Math.tan(lat);
-    var t = Math.pow(tq, 2);
-    con = 1 - this.es * Math.pow(sin_phi, 2);
-    var n = this.a / Math.sqrt(con);
-    var ml = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, lat);
-
-    x = this.k0 * n * al * (1 + als / 6 * (1 - t + c + als / 20 * (5 - 18 * t + Math.pow(t, 2) + 72 * c - 58 * this.ep2))) + this.x0;
-    y = this.k0 * (ml - this.ml0 + n * tq * (als * (0.5 + als / 24 * (5 - t + 9 * c + 4 * Math.pow(c, 2) + als / 30 * (61 - 58 * t + Math.pow(t, 2) + 600 * c - 330 * this.ep2))))) + this.y0;
-
-  }
-  p.x = x;
-  p.y = y;
-  return p;
-};
-
-/**
-    Transverse Mercator Inverse  -  x/y to long/lat
-  */
-exports.inverse = function(p) {
-  var con, phi;
-  var delta_phi;
-  var i;
-  var max_iter = 6;
-  var lat, lon;
-
-  if (this.sphere) {
-    var f = Math.exp(p.x / (this.a * this.k0));
-    var g = 0.5 * (f - 1 / f);
-    var temp = this.lat0 + p.y / (this.a * this.k0);
-    var h = Math.cos(temp);
-    con = Math.sqrt((1 - h * h) / (1 + g * g));
-    lat = asinz(con);
-    if (temp < 0) {
-      lat = -lat;
-    }
-    if ((g === 0) && (h === 0)) {
-      lon = this.long0;
-    }
-    else {
-      lon = adjust_lon(Math.atan2(g, h) + this.long0);
-    }
-  }
-  else { // ellipsoidal form
-    var x = p.x - this.x0;
-    var y = p.y - this.y0;
-
-    con = (this.ml0 + y / this.k0) / this.a;
-    phi = con;
-    for (i = 0; true; i++) {
-      delta_phi = ((con + this.e1 * Math.sin(2 * phi) - this.e2 * Math.sin(4 * phi) + this.e3 * Math.sin(6 * phi)) / this.e0) - phi;
-      phi += delta_phi;
-      if (Math.abs(delta_phi) <= EPSLN) {
-        break;
-      }
-      if (i >= max_iter) {
-        return (95);
-      }
-    } // for()
-    if (Math.abs(phi) < HALF_PI) {
-      var sin_phi = Math.sin(phi);
-      var cos_phi = Math.cos(phi);
-      var tan_phi = Math.tan(phi);
-      var c = this.ep2 * Math.pow(cos_phi, 2);
-      var cs = Math.pow(c, 2);
-      var t = Math.pow(tan_phi, 2);
-      var ts = Math.pow(t, 2);
-      con = 1 - this.es * Math.pow(sin_phi, 2);
-      var n = this.a / Math.sqrt(con);
-      var r = n * (1 - this.es) / con;
-      var d = x / (n * this.k0);
-      var ds = Math.pow(d, 2);
-      lat = phi - (n * tan_phi * ds / r) * (0.5 - ds / 24 * (5 + 3 * t + 10 * c - 4 * cs - 9 * this.ep2 - ds / 30 * (61 + 90 * t + 298 * c + 45 * ts - 252 * this.ep2 - 3 * cs)));
-      lon = adjust_lon(this.long0 + (d * (1 - ds / 6 * (1 + 2 * t + c - ds / 20 * (5 - 2 * c + 28 * t - 3 * cs + 8 * this.ep2 + 24 * ts))) / cos_phi));
-    }
-    else {
-      lat = HALF_PI * sign(y);
-      lon = this.long0;
-    }
-  }
-  p.x = lon;
-  p.y = lat;
-  return p;
-};
-exports.names = ["Transverse_Mercator", "Transverse Mercator", "tmerc"];
-
-},{"../common/adjust_lon":5,"../common/asinz":6,"../common/e0fn":7,"../common/e1fn":8,"../common/e2fn":9,"../common/e3fn":10,"../common/mlfn":14,"../common/sign":21}],63:[function(_dereq_,module,exports){
-var D2R = 0.01745329251994329577;
-var tmerc = _dereq_('./tmerc');
-exports.dependsOn = 'tmerc';
-exports.init = function() {
-  if (!this.zone) {
-    return;
-  }
-  this.lat0 = 0;
-  this.long0 = ((6 * Math.abs(this.zone)) - 183) * D2R;
-  this.x0 = 500000;
-  this.y0 = this.utmSouth ? 10000000 : 0;
-  this.k0 = 0.9996;
-
-  tmerc.init.apply(this);
-  this.forward = tmerc.forward;
-  this.inverse = tmerc.inverse;
-};
-exports.names = ["Universal Transverse Mercator System", "utm"];
-
-},{"./tmerc":62}],64:[function(_dereq_,module,exports){
-var adjust_lon = _dereq_('../common/adjust_lon');
-var HALF_PI = Math.PI/2;
-var EPSLN = 1.0e-10;
-var asinz = _dereq_('../common/asinz');
-/* Initialize the Van Der Grinten projection
-  ----------------------------------------*/
-exports.init = function() {
-  //this.R = 6370997; //Radius of earth
-  this.R = this.a;
-};
-
-exports.forward = function(p) {
-
-  var lon = p.x;
-  var lat = p.y;
-
-  /* Forward equations
-    -----------------*/
-  var dlon = adjust_lon(lon - this.long0);
-  var x, y;
-
-  if (Math.abs(lat) <= EPSLN) {
-    x = this.x0 + this.R * dlon;
-    y = this.y0;
-  }
-  var theta = asinz(2 * Math.abs(lat / Math.PI));
-  if ((Math.abs(dlon) <= EPSLN) || (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN)) {
-    x = this.x0;
-    if (lat >= 0) {
-      y = this.y0 + Math.PI * this.R * Math.tan(0.5 * theta);
-    }
-    else {
-      y = this.y0 + Math.PI * this.R * -Math.tan(0.5 * theta);
-    }
-    //  return(OK);
-  }
-  var al = 0.5 * Math.abs((Math.PI / dlon) - (dlon / Math.PI));
-  var asq = al * al;
-  var sinth = Math.sin(theta);
-  var costh = Math.cos(theta);
-
-  var g = costh / (sinth + costh - 1);
-  var gsq = g * g;
-  var m = g * (2 / sinth - 1);
-  var msq = m * m;
-  var con = Math.PI * this.R * (al * (g - msq) + Math.sqrt(asq * (g - msq) * (g - msq) - (msq + asq) * (gsq - msq))) / (msq + asq);
-  if (dlon < 0) {
-    con = -con;
-  }
-  x = this.x0 + con;
-  //con = Math.abs(con / (Math.PI * this.R));
-  var q = asq + g;
-  con = Math.PI * this.R * (m * q - al * Math.sqrt((msq + asq) * (asq + 1) - q * q)) / (msq + asq);
-  if (lat >= 0) {
-    //y = this.y0 + Math.PI * this.R * Math.sqrt(1 - con * con - 2 * al * con);
-    y = this.y0 + con;
-  }
-  else {
-    //y = this.y0 - Math.PI * this.R * Math.sqrt(1 - con * con - 2 * al * con);
-    y = this.y0 - con;
-  }
-  p.x = x;
-  p.y = y;
-  return p;
-};
-
-/* Van Der Grinten inverse equations--mapping x,y to lat/long
-  ---------------------------------------------------------*/
-exports.inverse = function(p) {
-  var lon, lat;
-  var xx, yy, xys, c1, c2, c3;
-  var a1;
-  var m1;
-  var con;
-  var th1;
-  var d;
-
-  /* inverse equations
-    -----------------*/
-  p.x -= this.x0;
-  p.y -= this.y0;
-  con = Math.PI * this.R;
-  xx = p.x / con;
-  yy = p.y / con;
-  xys = xx * xx + yy * yy;
-  c1 = -Math.abs(yy) * (1 + xys);
-  c2 = c1 - 2 * yy * yy + xx * xx;
-  c3 = -2 * c1 + 1 + 2 * yy * yy + xys * xys;
-  d = yy * yy / c3 + (2 * c2 * c2 * c2 / c3 / c3 / c3 - 9 * c1 * c2 / c3 / c3) / 27;
-  a1 = (c1 - c2 * c2 / 3 / c3) / c3;
-  m1 = 2 * Math.sqrt(-a1 / 3);
-  con = ((3 * d) / a1) / m1;
-  if (Math.abs(con) > 1) {
-    if (con >= 0) {
-      con = 1;
-    }
-    else {
-      con = -1;
-    }
-  }
-  th1 = Math.acos(con) / 3;
-  if (p.y >= 0) {
-    lat = (-m1 * Math.cos(th1 + Math.PI / 3) - c2 / 3 / c3) * Math.PI;
-  }
-  else {
-    lat = -(-m1 * Math.cos(th1 + Math.PI / 3) - c2 / 3 / c3) * Math.PI;
-  }
-
-  if (Math.abs(xx) < EPSLN) {
-    lon = this.long0;
-  }
-  else {
-    lon = adjust_lon(this.long0 + Math.PI * (xys - 1 + Math.sqrt(1 + 2 * (xx * xx - yy * yy) + xys * xys)) / 2 / xx);
-  }
-
-  p.x = lon;
-  p.y = lat;
-  return p;
-};
-exports.names = ["Van_der_Grinten_I", "VanDerGrinten", "vandg"];
-},{"../common/adjust_lon":5,"../common/asinz":6}],65:[function(_dereq_,module,exports){
-var D2R = 0.01745329251994329577;
-var R2D = 57.29577951308232088;
-var PJD_3PARAM = 1;
-var PJD_7PARAM = 2;
-var datum_transform = _dereq_('./datum_transform');
-var adjust_axis = _dereq_('./adjust_axis');
-var proj = _dereq_('./Proj');
-var toPoint = _dereq_('./common/toPoint');
-module.exports = function transform(source, dest, point) {
-  var wgs84;
-  if (Array.isArray(point)) {
-    point = toPoint(point);
-  }
-  function checkNotWGS(source, dest) {
-    return ((source.datum.datum_type === PJD_3PARAM || source.datum.datum_type === PJD_7PARAM) && dest.datumCode !== "WGS84");
-  }
-
-  // Workaround for datum shifts towgs84, if either source or destination projection is not wgs84
-  if (source.datum && dest.datum && (checkNotWGS(source, dest) || checkNotWGS(dest, source))) {
-    wgs84 = new proj('WGS84');
-    transform(source, wgs84, point);
-    source = wgs84;
-  }
-  // DGR, 2010/11/12
-  if (source.axis !== "enu") {
-    adjust_axis(source, false, point);
-  }
-  // Transform source points to long/lat, if they aren't already.
-  if (source.projName === "longlat") {
-    point.x *= D2R; // convert degrees to radians
-    point.y *= D2R;
-  }
-  else {
-    if (source.to_meter) {
-      point.x *= source.to_meter;
-      point.y *= source.to_meter;
-    }
-    source.inverse(point); // Convert Cartesian to longlat
-  }
-  // Adjust for the prime meridian if necessary
-  if (source.from_greenwich) {
-    point.x += source.from_greenwich;
-  }
-
-  // Convert datums if needed, and if possible.
-  point = datum_transform(source.datum, dest.datum, point);
-
-  // Adjust for the prime meridian if necessary
-  if (dest.from_greenwich) {
-    point.x -= dest.from_greenwich;
-  }
-
-  if (dest.projName === "longlat") {
-    // convert radians to decimal degrees
-    point.x *= R2D;
-    point.y *= R2D;
-  }
-  else { // else project
-    dest.forward(point);
-    if (dest.to_meter) {
-      point.x /= dest.to_meter;
-      point.y /= dest.to_meter;
-    }
-  }
-
-  // DGR, 2010/11/12
-  if (dest.axis !== "enu") {
-    adjust_axis(dest, true, point);
-  }
-
-  return point;
-};
-},{"./Proj":2,"./adjust_axis":3,"./common/toPoint":23,"./datum_transform":31}],66:[function(_dereq_,module,exports){
-var D2R = 0.01745329251994329577;
-var extend = _dereq_('./extend');
-
-function mapit(obj, key, v) {
-  obj[key] = v.map(function(aa) {
-    var o = {};
-    sExpr(aa, o);
-    return o;
-  }).reduce(function(a, b) {
-    return extend(a, b);
-  }, {});
-}
-
-function sExpr(v, obj) {
-  var key;
-  if (!Array.isArray(v)) {
-    obj[v] = true;
-    return;
-  }
-  else {
-    key = v.shift();
-    if (key === 'PARAMETER') {
-      key = v.shift();
-    }
-    if (v.length === 1) {
-      if (Array.isArray(v[0])) {
-        obj[key] = {};
-        sExpr(v[0], obj[key]);
-      }
-      else {
-        obj[key] = v[0];
-      }
-    }
-    else if (!v.length) {
-      obj[key] = true;
-    }
-    else if (key === 'TOWGS84') {
-      obj[key] = v;
-    }
-    else {
-      obj[key] = {};
-      if (['UNIT', 'PRIMEM', 'VERT_DATUM'].indexOf(key) > -1) {
-        obj[key] = {
-          name: v[0].toLowerCase(),
-          convert: v[1]
-        };
-        if (v.length === 3) {
-          obj[key].auth = v[2];
-        }
-      }
-      else if (key === 'SPHEROID') {
-        obj[key] = {
-          name: v[0],
-          a: v[1],
-          rf: v[2]
-        };
-        if (v.length === 4) {
-          obj[key].auth = v[3];
-        }
-      }
-      else if (['GEOGCS', 'GEOCCS', 'DATUM', 'VERT_CS', 'COMPD_CS', 'LOCAL_CS', 'FITTED_CS', 'LOCAL_DATUM'].indexOf(key) > -1) {
-        v[0] = ['name', v[0]];
-        mapit(obj, key, v);
-      }
-      else if (v.every(function(aa) {
-        return Array.isArray(aa);
-      })) {
-        mapit(obj, key, v);
-      }
-      else {
-        sExpr(v, obj[key]);
-      }
-    }
-  }
-}
-
-function rename(obj, params) {
-  var outName = params[0];
-  var inName = params[1];
-  if (!(outName in obj) && (inName in obj)) {
-    obj[outName] = obj[inName];
-    if (params.length === 3) {
-      obj[outName] = params[2](obj[outName]);
-    }
-  }
-}
-
-function d2r(input) {
-  return input * D2R;
-}
-
-function cleanWKT(wkt) {
-  if (wkt.type === 'GEOGCS') {
-    wkt.projName = 'longlat';
-  }
-  else if (wkt.type === 'LOCAL_CS') {
-    wkt.projName = 'identity';
-    wkt.local = true;
-  }
-  else {
-    if (typeof wkt.PROJECTION === "object") {
-      wkt.projName = Object.keys(wkt.PROJECTION)[0];
-    }
-    else {
-      wkt.projName = wkt.PROJECTION;
-    }
-  }
-  if (wkt.UNIT) {
-    wkt.units = wkt.UNIT.name.toLowerCase();
-    if (wkt.units === 'metre') {
-      wkt.units = 'meter';
-    }
-    if (wkt.UNIT.convert) {
-      if (wkt.type === 'GEOGCS') {
-        if (wkt.DATUM && wkt.DATUM.SPHEROID) {
-          wkt.to_meter = parseFloat(wkt.UNIT.convert, 10)*wkt.DATUM.SPHEROID.a;
-        }
-      } else {
-        wkt.to_meter = parseFloat(wkt.UNIT.convert, 10);
-      }
-    }
-  }
-
-  if (wkt.GEOGCS) {
-    //if(wkt.GEOGCS.PRIMEM&&wkt.GEOGCS.PRIMEM.convert){
-    //  wkt.from_greenwich=wkt.GEOGCS.PRIMEM.convert*D2R;
-    //}
-    if (wkt.GEOGCS.DATUM) {
-      wkt.datumCode = wkt.GEOGCS.DATUM.name.toLowerCase();
-    }
-    else {
-      wkt.datumCode = wkt.GEOGCS.name.toLowerCase();
-    }
-    if (wkt.datumCode.slice(0, 2) === 'd_') {
-      wkt.datumCode = wkt.datumCode.slice(2);
-    }
-    if (wkt.datumCode === 'new_zealand_geodetic_datum_1949' || wkt.datumCode === 'new_zealand_1949') {
-      wkt.datumCode = 'nzgd49';
-    }
-    if (wkt.datumCode === "wgs_1984") {
-      if (wkt.PROJECTION === 'Mercator_Auxiliary_Sphere') {
-        wkt.sphere = true;
-      }
-      wkt.datumCode = 'wgs84';
-    }
-    if (wkt.datumCode.slice(-6) === '_ferro') {
-      wkt.datumCode = wkt.datumCode.slice(0, - 6);
-    }
-    if (wkt.datumCode.slice(-8) === '_jakarta') {
-      wkt.datumCode = wkt.datumCode.slice(0, - 8);
-    }
-    if (~wkt.datumCode.indexOf('belge')) {
-      wkt.datumCode = "rnb72";
-    }
-    if (wkt.GEOGCS.DATUM && wkt.GEOGCS.DATUM.SPHEROID) {
-      wkt.ellps = wkt.GEOGCS.DATUM.SPHEROID.name.replace('_19', '').replace(/[Cc]larke\_18/, 'clrk');
-      if (wkt.ellps.toLowerCase().slice(0, 13) === "international") {
-        wkt.ellps = 'intl';
-      }
-
-      wkt.a = wkt.GEOGCS.DATUM.SPHEROID.a;
-      wkt.rf = parseFloat(wkt.GEOGCS.DATUM.SPHEROID.rf, 10);
-    }
-    if (~wkt.datumCode.indexOf('osgb_1936')) {
-      wkt.datumCode = "osgb36";
-    }
-  }
-  if (wkt.b && !isFinite(wkt.b)) {
-    wkt.b = wkt.a;
-  }
-
-  function toMeter(input) {
-    var ratio = wkt.to_meter || 1;
-    return parseFloat(input, 10) * ratio;
-  }
-  var renamer = function(a) {
-    return rename(wkt, a);
-  };
-  var list = [
-    ['standard_parallel_1', 'Standard_Parallel_1'],
-    ['standard_parallel_2', 'Standard_Parallel_2'],
-    ['false_easting', 'False_Easting'],
-    ['false_northing', 'False_Northing'],
-    ['central_meridian', 'Central_Meridian'],
-    ['latitude_of_origin', 'Latitude_Of_Origin'],
-    ['latitude_of_origin', 'Central_Parallel'],
-    ['scale_factor', 'Scale_Factor'],
-    ['k0', 'scale_factor'],
-    ['latitude_of_center', 'Latitude_of_center'],
-    ['lat0', 'latitude_of_center', d2r],
-    ['longitude_of_center', 'Longitude_Of_Center'],
-    ['longc', 'longitude_of_center', d2r],
-    ['x0', 'false_easting', toMeter],
-    ['y0', 'false_northing', toMeter],
-    ['long0', 'central_meridian', d2r],
-    ['lat0', 'latitude_of_origin', d2r],
-    ['lat0', 'standard_parallel_1', d2r],
-    ['lat1', 'standard_parallel_1', d2r],
-    ['lat2', 'standard_parallel_2', d2r],
-    ['alpha', 'azimuth', d2r],
-    ['srsCode', 'name']
-  ];
-  list.forEach(renamer);
-  if (!wkt.long0 && wkt.longc && (wkt.projName === 'Albers_Conic_Equal_Area' || wkt.projName === "Lambert_Azimuthal_Equal_Area")) {
-    wkt.long0 = wkt.longc;
-  }
-  if (!wkt.lat_ts && wkt.lat1 && (wkt.projName === 'Stereographic_South_Pole' || wkt.projName === 'Polar Stereographic (variant B)')) {
-    wkt.lat0 = d2r(wkt.lat1 > 0 ? 90 : -90);
-    wkt.lat_ts = wkt.lat1;
-  }
-}
-module.exports = function(wkt, self) {
-  var lisp = JSON.parse(("," + wkt).replace(/\s*\,\s*([A-Z_0-9]+?)(\[)/g, ',["$1",').slice(1).replace(/\s*\,\s*([A-Z_0-9]+?)\]/g, ',"$1"]').replace(/,\["VERTCS".+/,''));
-  var type = lisp.shift();
-  var name = lisp.shift();
-  lisp.unshift(['name', name]);
-  lisp.unshift(['type', type]);
-  lisp.unshift('output');
-  var obj = {};
-  sExpr(lisp, obj);
-  cleanWKT(obj.output);
-  return extend(self, obj.output);
-};
-
-},{"./extend":34}],67:[function(_dereq_,module,exports){
-
-
-
-/**
- * UTM zones are grouped, and assigned to one of a group of 6
- * sets.
- *
- * {int} @private
- */
-var NUM_100K_SETS = 6;
-
-/**
- * The column letters (for easting) of the lower left value, per
- * set.
- *
- * {string} @private
- */
-var SET_ORIGIN_COLUMN_LETTERS = 'AJSAJS';
-
-/**
- * The row letters (for northing) of the lower left value, per
- * set.
- *
- * {string} @private
- */
-var SET_ORIGIN_ROW_LETTERS = 'AFAFAF';
-
-var A = 65; // A
-var I = 73; // I
-var O = 79; // O
-var V = 86; // V
-var Z = 90; // Z
-
-/**
- * Conversion of lat/lon to MGRS.
- *
- * @param {object} ll Object literal with lat and lon properties on a
- *     WGS84 ellipsoid.
- * @param {int} accuracy Accuracy in digits (5 for 1 m, 4 for 10 m, 3 for
- *      100 m, 2 for 1000 m or 1 for 10000 m). Optional, default is 5.
- * @return {string} the MGRS string for the given location and accuracy.
- */
-exports.forward = function(ll, accuracy) {
-  accuracy = accuracy || 5; // default accuracy 1m
-  return encode(LLtoUTM({
-    lat: ll[1],
-    lon: ll[0]
-  }), accuracy);
-};
-
-/**
- * Conversion of MGRS to lat/lon.
- *
- * @param {string} mgrs MGRS string.
- * @return {array} An array with left (longitude), bottom (latitude), right
- *     (longitude) and top (latitude) values in WGS84, representing the
- *     bounding box for the provided MGRS reference.
- */
-exports.inverse = function(mgrs) {
-  var bbox = UTMtoLL(decode(mgrs.toUpperCase()));
-  if (bbox.lat && bbox.lon) {
-    return [bbox.lon, bbox.lat, bbox.lon, bbox.lat];
-  }
-  return [bbox.left, bbox.bottom, bbox.right, bbox.top];
-};
-
-exports.toPoint = function(mgrs) {
-  var bbox = UTMtoLL(decode(mgrs.toUpperCase()));
-  if (bbox.lat && bbox.lon) {
-    return [bbox.lon, bbox.lat];
-  }
-  return [(bbox.left + bbox.right) / 2, (bbox.top + bbox.bottom) / 2];
-};
-/**
- * Conversion from degrees to radians.
- *
- * @private
- * @param {number} deg the angle in degrees.
- * @return {number} the angle in radians.
- */
-function degToRad(deg) {
-  return (deg * (Math.PI / 180.0));
-}
-
-/**
- * Conversion from radians to degrees.
- *
- * @private
- * @param {number} rad the angle in radians.
- * @return {number} the angle in degrees.
- */
-function radToDeg(rad) {
-  return (180.0 * (rad / Math.PI));
-}
-
-/**
- * Converts a set of Longitude and Latitude co-ordinates to UTM
- * using the WGS84 ellipsoid.
- *
- * @private
- * @param {object} ll Object literal with lat and lon properties
- *     representing the WGS84 coordinate to be converted.
- * @return {object} Object literal containing the UTM value with easting,
- *     northing, zoneNumber and zoneLetter properties, and an optional
- *     accuracy property in digits. Returns null if the conversion failed.
- */
-function LLtoUTM(ll) {
-  var Lat = ll.lat;
-  var Long = ll.lon;
-  var a = 6378137.0; //ellip.radius;
-  var eccSquared = 0.00669438; //ellip.eccsq;
-  var k0 = 0.9996;
-  var LongOrigin;
-  var eccPrimeSquared;
-  var N, T, C, A, M;
-  var LatRad = degToRad(Lat);
-  var LongRad = degToRad(Long);
-  var LongOriginRad;
-  var ZoneNumber;
-  // (int)
-  ZoneNumber = Math.floor((Long + 180) / 6) + 1;
-
-  //Make sure the longitude 180.00 is in Zone 60
-  if (Long === 180) {
-    ZoneNumber = 60;
-  }
-
-  // Special zone for Norway
-  if (Lat >= 56.0 && Lat < 64.0 && Long >= 3.0 && Long < 12.0) {
-    ZoneNumber = 32;
-  }
-
-  // Special zones for Svalbard
-  if (Lat >= 72.0 && Lat < 84.0) {
-    if (Long >= 0.0 && Long < 9.0) {
-      ZoneNumber = 31;
-    }
-    else if (Long >= 9.0 && Long < 21.0) {
-      ZoneNumber = 33;
-    }
-    else if (Long >= 21.0 && Long < 33.0) {
-      ZoneNumber = 35;
-    }
-    else if (Long >= 33.0 && Long < 42.0) {
-      ZoneNumber = 37;
-    }
-  }
-
-  LongOrigin = (ZoneNumber - 1) * 6 - 180 + 3; //+3 puts origin
-  // in middle of
-  // zone
-  LongOriginRad = degToRad(LongOrigin);
-
-  eccPrimeSquared = (eccSquared) / (1 - eccSquared);
-
-  N = a / Math.sqrt(1 - eccSquared * Math.sin(LatRad) * Math.sin(LatRad));
-  T = Math.tan(LatRad) * Math.tan(LatRad);
-  C = eccPrimeSquared * Math.cos(LatRad) * Math.cos(LatRad);
-  A = Math.cos(LatRad) * (LongRad - LongOriginRad);
-
-  M = a * ((1 - eccSquared / 4 - 3 * eccSquared * eccSquared / 64 - 5 * eccSquared * eccSquared * eccSquared / 256) * LatRad - (3 * eccSquared / 8 + 3 * eccSquared * eccSquared / 32 + 45 * eccSquared * eccSquared * eccSquared / 1024) * Math.sin(2 * LatRad) + (15 * eccSquared * eccSquared / 256 + 45 * eccSquared * eccSquared * eccSquared / 1024) * Math.sin(4 * LatRad) - (35 * eccSquared * eccSquared * eccSquared / 3072) * Math.sin(6 * LatRad));
-
-  var UTMEasting = (k0 * N * (A + (1 - T + C) * A * A * A / 6.0 + (5 - 18 * T + T * T + 72 * C - 58 * eccPrimeSquared) * A * A * A * A * A / 120.0) + 500000.0);
-
-  var UTMNorthing = (k0 * (M + N * Math.tan(LatRad) * (A * A / 2 + (5 - T + 9 * C + 4 * C * C) * A * A * A * A / 24.0 + (61 - 58 * T + T * T + 600 * C - 330 * eccPrimeSquared) * A * A * A * A * A * A / 720.0)));
-  if (Lat < 0.0) {
-    UTMNorthing += 10000000.0; //10000000 meter offset for
-    // southern hemisphere
-  }
-
-  return {
-    northing: Math.round(UTMNorthing),
-    easting: Math.round(UTMEasting),
-    zoneNumber: ZoneNumber,
-    zoneLetter: getLetterDesignator(Lat)
-  };
-}
-
-/**
- * Converts UTM coords to lat/long, using the WGS84 ellipsoid. This is a convenience
- * class where the Zone can be specified as a single string eg."60N" which
- * is then broken down into the ZoneNumber and ZoneLetter.
- *
- * @private
- * @param {object} utm An object literal with northing, easting, zoneNumber
- *     and zoneLetter properties. If an optional accuracy property is
- *     provided (in meters), a bounding box will be returned instead of
- *     latitude and longitude.
- * @return {object} An object literal containing either lat and lon values
- *     (if no accuracy was provided), or top, right, bottom and left values
- *     for the bounding box calculated according to the provided accuracy.
- *     Returns null if the conversion failed.
- */
-function UTMtoLL(utm) {
-
-  var UTMNorthing = utm.northing;
-  var UTMEasting = utm.easting;
-  var zoneLetter = utm.zoneLetter;
-  var zoneNumber = utm.zoneNumber;
-  // check the ZoneNummber is valid
-  if (zoneNumber < 0 || zoneNumber > 60) {
-    return null;
-  }
-
-  var k0 = 0.9996;
-  var a = 6378137.0; //ellip.radius;
-  var eccSquared = 0.00669438; //ellip.eccsq;
-  var eccPrimeSquared;
-  var e1 = (1 - Math.sqrt(1 - eccSquared)) / (1 + Math.sqrt(1 - eccSquared));
-  var N1, T1, C1, R1, D, M;
-  var LongOrigin;
-  var mu, phi1Rad;
-
-  // remove 500,000 meter offset for longitude
-  var x = UTMEasting - 500000.0;
-  var y = UTMNorthing;
-
-  // We must know somehow if we are in the Northern or Southern
-  // hemisphere, this is the only time we use the letter So even
-  // if the Zone letter isn't exactly correct it should indicate
-  // the hemisphere correctly
-  if (zoneLetter < 'N') {
-    y -= 10000000.0; // remove 10,000,000 meter offset used
-    // for southern hemisphere
-  }
-
-  // There are 60 zones with zone 1 being at West -180 to -174
-  LongOrigin = (zoneNumber - 1) * 6 - 180 + 3; // +3 puts origin
-  // in middle of
-  // zone
-
-  eccPrimeSquared = (eccSquared) / (1 - eccSquared);
-
-  M = y / k0;
-  mu = M / (a * (1 - eccSquared / 4 - 3 * eccSquared * eccSquared / 64 - 5 * eccSquared * eccSquared * eccSquared / 256));
-
-  phi1Rad = mu + (3 * e1 / 2 - 27 * e1 * e1 * e1 / 32) * Math.sin(2 * mu) + (21 * e1 * e1 / 16 - 55 * e1 * e1 * e1 * e1 / 32) * Math.sin(4 * mu) + (151 * e1 * e1 * e1 / 96) * Math.sin(6 * mu);
-  // double phi1 = ProjMath.radToDeg(phi1Rad);
-
-  N1 = a / Math.sqrt(1 - eccSquared * Math.sin(phi1Rad) * Math.sin(phi1Rad));
-  T1 = Math.tan(phi1Rad) * Math.tan(phi1Rad);
-  C1 = eccPrimeSquared * Math.cos(phi1Rad) * Math.cos(phi1Rad);
-  R1 = a * (1 - eccSquared) / Math.pow(1 - eccSquared * Math.sin(phi1Rad) * Math.sin(phi1Rad), 1.5);
-  D = x / (N1 * k0);
-
-  var lat = phi1Rad - (N1 * Math.tan(phi1Rad) / R1) * (D * D / 2 - (5 + 3 * T1 + 10 * C1 - 4 * C1 * C1 - 9 * eccPrimeSquared) * D * D * D * D / 24 + (61 + 90 * T1 + 298 * C1 + 45 * T1 * T1 - 252 * eccPrimeSquared - 3 * C1 * C1) * D * D * D * D * D * D / 720);
-  lat = radToDeg(lat);
-
-  var lon = (D - (1 + 2 * T1 + C1) * D * D * D / 6 + (5 - 2 * C1 + 28 * T1 - 3 * C1 * C1 + 8 * eccPrimeSquared + 24 * T1 * T1) * D * D * D * D * D / 120) / Math.cos(phi1Rad);
-  lon = LongOrigin + radToDeg(lon);
-
-  var result;
-  if (utm.accuracy) {
-    var topRight = UTMtoLL({
-      northing: utm.northing + utm.accuracy,
-      easting: utm.easting + utm.accuracy,
-      zoneLetter: utm.zoneLetter,
-      zoneNumber: utm.zoneNumber
-    });
-    result = {
-      top: topRight.lat,
-      right: topRight.lon,
-      bottom: lat,
-      left: lon
-    };
-  }
-  else {
-    result = {
-      lat: lat,
-      lon: lon
-    };
-  }
-  return result;
-}
-
-/**
- * Calculates the MGRS letter designator for the given latitude.
- *
- * @private
- * @param {number} lat The latitude in WGS84 to get the letter designator
- *     for.
- * @return {char} The letter designator.
- */
-function getLetterDesignator(lat) {
-  //This is here as an error flag to show that the Latitude is
-  //outside MGRS limits
-  var LetterDesignator = 'Z';
-
-  if ((84 >= lat) && (lat >= 72)) {
-    LetterDesignator = 'X';
-  }
-  else if ((72 > lat) && (lat >= 64)) {
-    LetterDesignator = 'W';
-  }
-  else if ((64 > lat) && (lat >= 56)) {
-    LetterDesignator = 'V';
-  }
-  else if ((56 > lat) && (lat >= 48)) {
-    LetterDesignator = 'U';
-  }
-  else if ((48 > lat) && (lat >= 40)) {
-    LetterDesignator = 'T';
-  }
-  else if ((40 > lat) && (lat >= 32)) {
-    LetterDesignator = 'S';
-  }
-  else if ((32 > lat) && (lat >= 24)) {
-    LetterDesignator = 'R';
-  }
-  else if ((24 > lat) && (lat >= 16)) {
-    LetterDesignator = 'Q';
-  }
-  else if ((16 > lat) && (lat >= 8)) {
-    LetterDesignator = 'P';
-  }
-  else if ((8 > lat) && (lat >= 0)) {
-    LetterDesignator = 'N';
-  }
-  else if ((0 > lat) && (lat >= -8)) {
-    LetterDesignator = 'M';
-  }
-  else if ((-8 > lat) && (lat >= -16)) {
-    LetterDesignator = 'L';
-  }
-  else if ((-16 > lat) && (lat >= -24)) {
-    LetterDesignator = 'K';
-  }
-  else if ((-24 > lat) && (lat >= -32)) {
-    LetterDesignator = 'J';
-  }
-  else if ((-32 > lat) && (lat >= -40)) {
-    LetterDesignator = 'H';
-  }
-  else if ((-40 > lat) && (lat >= -48)) {
-    LetterDesignator = 'G';
-  }
-  else if ((-48 > lat) && (lat >= -56)) {
-    LetterDesignator = 'F';
-  }
-  else if ((-56 > lat) && (lat >= -64)) {
-    LetterDesignator = 'E';
-  }
-  else if ((-64 > lat) && (lat >= -72)) {
-    LetterDesignator = 'D';
-  }
-  else if ((-72 > lat) && (lat >= -80)) {
-    LetterDesignator = 'C';
-  }
-  return LetterDesignator;
-}
-
-/**
- * Encodes a UTM location as MGRS string.
- *
- * @private
- * @param {object} utm An object literal with easting, northing,
- *     zoneLetter, zoneNumber
- * @param {number} accuracy Accuracy in digits (1-5).
- * @return {string} MGRS string for the given UTM location.
- */
-function encode(utm, accuracy) {
-  // prepend with leading zeroes
-  var seasting = "00000" + utm.easting,
-    snorthing = "00000" + utm.northing;
-
-  return utm.zoneNumber + utm.zoneLetter + get100kID(utm.easting, utm.northing, utm.zoneNumber) + seasting.substr(seasting.length - 5, accuracy) + snorthing.substr(snorthing.length - 5, accuracy);
-}
-
-/**
- * Get the two letter 100k designator for a given UTM easting,
- * northing and zone number value.
- *
- * @private
- * @param {number} easting
- * @param {number} northing
- * @param {number} zoneNumber
- * @return the two letter 100k designator for the given UTM location.
- */
-function get100kID(easting, northing, zoneNumber) {
-  var setParm = get100kSetForZone(zoneNumber);
-  var setColumn = Math.floor(easting / 100000);
-  var setRow = Math.floor(northing / 100000) % 20;
-  return getLetter100kID(setColumn, setRow, setParm);
-}
-
-/**
- * Given a UTM zone number, figure out the MGRS 100K set it is in.
- *
- * @private
- * @param {number} i An UTM zone number.
- * @return {number} the 100k set the UTM zone is in.
- */
-function get100kSetForZone(i) {
-  var setParm = i % NUM_100K_SETS;
-  if (setParm === 0) {
-    setParm = NUM_100K_SETS;
-  }
-
-  return setParm;
-}
-
-/**
- * Get the two-letter MGRS 100k designator given information
- * translated from the UTM northing, easting and zone number.
- *
- * @private
- * @param {number} column the column index as it relates to the MGRS
- *        100k set spreadsheet, created from the UTM easting.
- *        Values are 1-8.
- * @param {number} row the row index as it relates to the MGRS 100k set
- *        spreadsheet, created from the UTM northing value. Values
- *        are from 0-19.
- * @param {number} parm the set block, as it relates to the MGRS 100k set
- *        spreadsheet, created from the UTM zone. Values are from
- *        1-60.
- * @return two letter MGRS 100k code.
- */
-function getLetter100kID(column, row, parm) {
-  // colOrigin and rowOrigin are the letters at the origin of the set
-  var index = parm - 1;
-  var colOrigin = SET_ORIGIN_COLUMN_LETTERS.charCodeAt(index);
-  var rowOrigin = SET_ORIGIN_ROW_LETTERS.charCodeAt(index);
-
-  // colInt and rowInt are the letters to build to return
-  var colInt = colOrigin + column - 1;
-  var rowInt = rowOrigin + row;
-  var rollover = false;
-
-  if (colInt > Z) {
-    colInt = colInt - Z + A - 1;
-    rollover = true;
-  }
-
-  if (colInt === I || (colOrigin < I && colInt > I) || ((colInt > I || colOrigin < I) && rollover)) {
-    colInt++;
-  }
-
-  if (colInt === O || (colOrigin < O && colInt > O) || ((colInt > O || colOrigin < O) && rollover)) {
-    colInt++;
-
-    if (colInt === I) {
-      colInt++;
-    }
-  }
-
-  if (colInt > Z) {
-    colInt = colInt - Z + A - 1;
-  }
-
-  if (rowInt > V) {
-    rowInt = rowInt - V + A - 1;
-    rollover = true;
-  }
-  else {
-    rollover = false;
-  }
-
-  if (((rowInt === I) || ((rowOrigin < I) && (rowInt > I))) || (((rowInt > I) || (rowOrigin < I)) && rollover)) {
-    rowInt++;
-  }
-
-  if (((rowInt === O) || ((rowOrigin < O) && (rowInt > O))) || (((rowInt > O) || (rowOrigin < O)) && rollover)) {
-    rowInt++;
-
-    if (rowInt === I) {
-      rowInt++;
-    }
-  }
-
-  if (rowInt > V) {
-    rowInt = rowInt - V + A - 1;
-  }
-
-  var twoLetter = String.fromCharCode(colInt) + String.fromCharCode(rowInt);
-  return twoLetter;
-}
-
-/**
- * Decode the UTM parameters from a MGRS string.
- *
- * @private
- * @param {string} mgrsString an UPPERCASE coordinate string is expected.
- * @return {object} An object literal with easting, northing, zoneLetter,
- *     zoneNumber and accuracy (in meters) properties.
- */
-function decode(mgrsString) {
-
-  if (mgrsString && mgrsString.length === 0) {
-    throw ("MGRSPoint coverting from nothing");
-  }
-
-  var length = mgrsString.length;
-
-  var hunK = null;
-  var sb = "";
-  var testChar;
-  var i = 0;
-
-  // get Zone number
-  while (!(/[A-Z]/).test(testChar = mgrsString.charAt(i))) {
-    if (i >= 2) {
-      throw ("MGRSPoint bad conversion from: " + mgrsString);
-    }
-    sb += testChar;
-    i++;
-  }
-
-  var zoneNumber = parseInt(sb, 10);
-
-  if (i === 0 || i + 3 > length) {
-    // A good MGRS string has to be 4-5 digits long,
-    // ##AAA/#AAA at least.
-    throw ("MGRSPoint bad conversion from: " + mgrsString);
-  }
-
-  var zoneLetter = mgrsString.charAt(i++);
-
-  // Should we check the zone letter here? Why not.
-  if (zoneLetter <= 'A' || zoneLetter === 'B' || zoneLetter === 'Y' || zoneLetter >= 'Z' || zoneLetter === 'I' || zoneLetter === 'O') {
-    throw ("MGRSPoint zone letter " + zoneLetter + " not handled: " + mgrsString);
-  }
-
-  hunK = mgrsString.substring(i, i += 2);
-
-  var set = get100kSetForZone(zoneNumber);
-
-  var east100k = getEastingFromChar(hunK.charAt(0), set);
-  var north100k = getNorthingFromChar(hunK.charAt(1), set);
-
-  // We have a bug where the northing may be 2000000 too low.
-  // How
-  // do we know when to roll over?
-
-  while (north100k < getMinNorthing(zoneLetter)) {
-    north100k += 2000000;
-  }
-
-  // calculate the char index for easting/northing separator
-  var remainder = length - i;
-
-  if (remainder % 2 !== 0) {
-    throw ("MGRSPoint has to have an even number \nof digits after the zone letter and two 100km letters - front \nhalf for easting meters, second half for \nnorthing meters" + mgrsString);
-  }
-
-  var sep = remainder / 2;
-
-  var sepEasting = 0.0;
-  var sepNorthing = 0.0;
-  var accuracyBonus, sepEastingString, sepNorthingString, easting, northing;
-  if (sep > 0) {
-    accuracyBonus = 100000.0 / Math.pow(10, sep);
-    sepEastingString = mgrsString.substring(i, i + sep);
-    sepEasting = parseFloat(sepEastingString) * accuracyBonus;
-    sepNorthingString = mgrsString.substring(i + sep);
-    sepNorthing = parseFloat(sepNorthingString) * accuracyBonus;
-  }
-
-  easting = sepEasting + east100k;
-  northing = sepNorthing + north100k;
-
-  return {
-    easting: easting,
-    northing: northing,
-    zoneLetter: zoneLetter,
-    zoneNumber: zoneNumber,
-    accuracy: accuracyBonus
-  };
-}
-
-/**
- * Given the first letter from a two-letter MGRS 100k zone, and given the
- * MGRS table set for the zone number, figure out the easting value that
- * should be added to the other, secondary easting value.
- *
- * @private
- * @param {char} e The first letter from a two-letter MGRS 100´k zone.
- * @param {number} set The MGRS table set for the zone number.
- * @return {number} The easting value for the given letter and set.
- */
-function getEastingFromChar(e, set) {
-  // colOrigin is the letter at the origin of the set for the
-  // column
-  var curCol = SET_ORIGIN_COLUMN_LETTERS.charCodeAt(set - 1);
-  var eastingValue = 100000.0;
-  var rewindMarker = false;
-
-  while (curCol !== e.charCodeAt(0)) {
-    curCol++;
-    if (curCol === I) {
-      curCol++;
-    }
-    if (curCol === O) {
-      curCol++;
-    }
-    if (curCol > Z) {
-      if (rewindMarker) {
-        throw ("Bad character: " + e);
-      }
-      curCol = A;
-      rewindMarker = true;
-    }
-    eastingValue += 100000.0;
-  }
-
-  return eastingValue;
-}
-
-/**
- * Given the second letter from a two-letter MGRS 100k zone, and given the
- * MGRS table set for the zone number, figure out the northing value that
- * should be added to the other, secondary northing value. You have to
- * remember that Northings are determined from the equator, and the vertical
- * cycle of letters mean a 2000000 additional northing meters. This happens
- * approx. every 18 degrees of latitude. This method does *NOT* count any
- * additional northings. You have to figure out how many 2000000 meters need
- * to be added for the zone letter of the MGRS coordinate.
- *
- * @private
- * @param {char} n Second letter of the MGRS 100k zone
- * @param {number} set The MGRS table set number, which is dependent on the
- *     UTM zone number.
- * @return {number} The northing value for the given letter and set.
- */
-function getNorthingFromChar(n, set) {
-
-  if (n > 'V') {
-    throw ("MGRSPoint given invalid Northing " + n);
-  }
-
-  // rowOrigin is the letter at the origin of the set for the
-  // column
-  var curRow = SET_ORIGIN_ROW_LETTERS.charCodeAt(set - 1);
-  var northingValue = 0.0;
-  var rewindMarker = false;
-
-  while (curRow !== n.charCodeAt(0)) {
-    curRow++;
-    if (curRow === I) {
-      curRow++;
-    }
-    if (curRow === O) {
-      curRow++;
-    }
-    // fixing a bug making whole application hang in this loop
-    // when 'n' is a wrong character
-    if (curRow > V) {
-      if (rewindMarker) { // making sure that this loop ends
-        throw ("Bad character: " + n);
-      }
-      curRow = A;
-      rewindMarker = true;
-    }
-    northingValue += 100000.0;
-  }
-
-  return northingValue;
-}
-
-/**
- * The function getMinNorthing returns the minimum northing value of a MGRS
- * zone.
- *
- * Ported from Geotrans' c Lattitude_Band_Value structure table.
- *
- * @private
- * @param {char} zoneLetter The MGRS zone to get the min northing for.
- * @return {number}
- */
-function getMinNorthing(zoneLetter) {
-  var northing;
-  switch (zoneLetter) {
-  case 'C':
-    northing = 1100000.0;
-    break;
-  case 'D':
-    northing = 2000000.0;
-    break;
-  case 'E':
-    northing = 2800000.0;
-    break;
-  case 'F':
-    northing = 3700000.0;
-    break;
-  case 'G':
-    northing = 4600000.0;
-    break;
-  case 'H':
-    northing = 5500000.0;
-    break;
-  case 'J':
-    northing = 6400000.0;
-    break;
-  case 'K':
-    northing = 7300000.0;
-    break;
-  case 'L':
-    northing = 8200000.0;
-    break;
-  case 'M':
-    northing = 9100000.0;
-    break;
-  case 'N':
-    northing = 0.0;
-    break;
-  case 'P':
-    northing = 800000.0;
-    break;
-  case 'Q':
-    northing = 1700000.0;
-    break;
-  case 'R':
-    northing = 2600000.0;
-    break;
-  case 'S':
-    northing = 3500000.0;
-    break;
-  case 'T':
-    northing = 4400000.0;
-    break;
-  case 'U':
-    northing = 5300000.0;
-    break;
-  case 'V':
-    northing = 6200000.0;
-    break;
-  case 'W':
-    northing = 7000000.0;
-    break;
-  case 'X':
-    northing = 7900000.0;
-    break;
-  default:
-    northing = -1.0;
-  }
-  if (northing >= 0.0) {
-    return northing;
-  }
-  else {
-    throw ("Invalid zone letter: " + zoneLetter);
-  }
-
-}
-
-},{}],68:[function(_dereq_,module,exports){
-module.exports={
-  "name": "proj4",
-  "version": "2.3.14",
-  "description": "Proj4js is a JavaScript library to transform point coordinates from one coordinate system to another, including datum transformations.",
-  "main": "lib/index.js",
-  "directories": {
-    "test": "test",
-    "doc": "docs"
-  },
-  "scripts": {
-    "test": "./node_modules/istanbul/lib/cli.js test ./node_modules/mocha/bin/_mocha test/test.js"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/proj4js/proj4js.git"
-  },
-  "author": "",
-  "license": "MIT",
-  "jam": {
-    "main": "dist/proj4.js",
-    "include": [
-      "dist/proj4.js",
-      "README.md",
-      "AUTHORS",
-      "LICENSE.md"
-    ]
-  },
-  "devDependencies": {
-    "grunt-cli": "~0.1.13",
-    "grunt": "~0.4.2",
-    "grunt-contrib-connect": "~0.6.0",
-    "grunt-contrib-jshint": "~0.8.0",
-    "chai": "~1.8.1",
-    "mocha": "~1.17.1",
-    "grunt-mocha-phantomjs": "~0.4.0",
-    "browserify": "~12.0.1",
-    "grunt-browserify": "~4.0.1",
-    "grunt-contrib-uglify": "~0.11.1",
-    "curl": "git://github.com/cujojs/curl.git",
-    "istanbul": "~0.2.4",
-    "tin": "~0.4.0"
-  },
-  "dependencies": {
-    "mgrs": "~0.0.2"
-  }
-}
-},{}],"./includedProjections":[function(_dereq_,module,exports){
-module.exports=_dereq_('hTEDpn');
-},{}],"hTEDpn":[function(_dereq_,module,exports){
-var projs = [
- _dereq_('./lib/projections/tmerc'),
-	_dereq_('./lib/projections/utm'),
-	_dereq_('./lib/projections/sterea'),
-	_dereq_('./lib/projections/stere'),
-	_dereq_('./lib/projections/somerc'),
-	_dereq_('./lib/projections/omerc'),
-	_dereq_('./lib/projections/lcc'),
-	_dereq_('./lib/projections/krovak'),
-	_dereq_('./lib/projections/cass'),
-	_dereq_('./lib/projections/laea'),
-	_dereq_('./lib/projections/aea'),
-	_dereq_('./lib/projections/gnom'),
-	_dereq_('./lib/projections/cea'),
-	_dereq_('./lib/projections/eqc'),
-	_dereq_('./lib/projections/poly'),
-	_dereq_('./lib/projections/nzmg'),
-	_dereq_('./lib/projections/mill'),
-	_dereq_('./lib/projections/sinu'),
-	_dereq_('./lib/projections/moll'),
-	_dereq_('./lib/projections/eqdc'),
-	_dereq_('./lib/projections/vandg'),
-	_dereq_('./lib/projections/aeqd')
-];
-module.exports = function(proj4){
- projs.forEach(function(proj){
-   proj4.Proj.projections.add(proj);
- });
-}
-},{"./lib/projections/aea":40,"./lib/projections/aeqd":41,"./lib/projections/cass":42,"./lib/projections/cea":43,"./lib/projections/eqc":44,"./lib/projections/eqdc":45,"./lib/projections/gnom":47,"./lib/projections/krovak":48,"./lib/projections/laea":49,"./lib/projections/lcc":50,"./lib/projections/mill":53,"./lib/projections/moll":54,"./lib/projections/nzmg":55,"./lib/projections/omerc":56,"./lib/projections/poly":57,"./lib/projections/sinu":58,"./lib/projections/somerc":59,"./lib/projections/stere":60,"./lib/projections/sterea":61,"./lib/projections/tmerc":62,"./lib/projections/utm":63,"./lib/projections/vandg":64}]},{},[36])
-(36)
-});
\ No newline at end of file
diff --git a/mapWz/lid/proj4leaflet.js b/mapWz/lid/proj4leaflet.js
deleted file mode 100644
index cb42921..0000000
--- a/mapWz/lid/proj4leaflet.js
+++ /dev/null
@@ -1,263 +0,0 @@
-(function (factory) {
-	var L, proj4;
-	if (typeof define === 'function' && define.amd) {
-		// AMD
-		define(['leaflet', 'proj4'], factory);
-	} else if (typeof module === 'object' && typeof module.exports === "object") {
-		// Node/CommonJS
-		L = require('leaflet');
-		proj4 = require('proj4');
-		module.exports = factory(L, proj4);
-	} else {
-		// Browser globals
-		if (typeof window.L === 'undefined' || typeof window.proj4 === 'undefined')
-			throw 'Leaflet and proj4 must be loaded first';
-		factory(window.L, window.proj4);
-	}
-}(function (L, proj4) {
-
-	L.Proj = {};
-
-	L.Proj._isProj4Obj = function(a) {
-		return (typeof a.inverse !== 'undefined' &&
-			typeof a.forward !== 'undefined');
-	};
-
-	L.Proj.Projection = L.Class.extend({
-		initialize: function(code, def, bounds) {
-			var isP4 = L.Proj._isProj4Obj(code);
-			this._proj = isP4 ? code : this._projFromCodeDef(code, def);
-			this.bounds = isP4 ? def : bounds;
-		},
-
-		project: function (latlng) {
-			var point = this._proj.forward([latlng.lng, latlng.lat]);
-			return new L.Point(point[0], point[1]);
-		},
-
-		unproject: function (point, unbounded) {
-			var point2 = this._proj.inverse([point.x, point.y]);
-			return new L.LatLng(point2[1], point2[0], unbounded);
-		},
-
-		_projFromCodeDef: function(code, def) {
-			if (def) {
-				proj4.defs(code, def);
-			} else if (proj4.defs[code] === undefined) {
-				var urn = code.split(':');
-				if (urn.length > 3) {
-					code = urn[urn.length - 3] + ':' + urn[urn.length - 1];
-				}
-				if (proj4.defs[code] === undefined) {
-					throw 'No projection definition for code ' + code;
-				}
-			}
-
-			return proj4(code);
-		}
-	});
-
-	L.Proj.CRS = L.Class.extend({
-		includes: L.CRS,
-
-		options: {
-			transformation: new L.Transformation(1, 0, -1, 0)
-		},
-
-		initialize: function(a, b, c) {
-			var code,
-			    proj,
-			    def,
-			    options;
-
-			if (L.Proj._isProj4Obj(a)) {
-				proj = a;
-				code = proj.srsCode;
-				options = b || {};
-
-				this.projection = new L.Proj.Projection(proj, options.bounds);
-			} else {
-				code = a;
-				def = b;
-				options = c || {};
-				this.projection = new L.Proj.Projection(code, def, options.bounds);
-			}
-
-			L.Util.setOptions(this, options);
-			this.code = code;
-			this.transformation = this.options.transformation;
-
-			if (this.options.origin) {
-				this.transformation =
-					new L.Transformation(1, -this.options.origin[0],
-						-1, this.options.origin[1]);
-			}
-
-			if (this.options.scales) {
-				this._scales = this.options.scales;
-			} else if (this.options.resolutions) {
-				this._scales = [];
-				for (var i = this.options.resolutions.length - 1; i >= 0; i--) {
-					if (this.options.resolutions[i]) {
-						this._scales[i] = 1 / this.options.resolutions[i];
-					}
-				}
-			}
-
-			this.infinite = !this.options.bounds;
-
-		},
-
-		scale: function(zoom) {
-			var iZoom = Math.floor(zoom),
-				baseScale,
-				nextScale,
-				scaleDiff,
-				zDiff;
-			if (zoom === iZoom) {
-				return this._scales[zoom];
-			} else {
-				// Non-integer zoom, interpolate
-				baseScale = this._scales[iZoom];
-				nextScale = this._scales[iZoom + 1];
-				scaleDiff = nextScale - baseScale;
-				zDiff = (zoom - iZoom);
-				return baseScale + scaleDiff * zDiff;
-			}
-		},
-
-		zoom: function(scale) {
-			// Find closest number in this._scales, down
-			var downScale = this._closestElement(this._scales, scale),
-				downZoom = this._scales.indexOf(downScale),
-				nextScale,
-				nextZoom,
-				scaleDiff;
-			// Check if scale is downScale => return array index
-			if (scale === downScale) {
-				return downZoom;
-			}
-			// Interpolate
-			nextZoom = downZoom + 1;
-			nextScale = this._scales[nextZoom];
-			if (nextScale === undefined) {
-				return Infinity;
-			}
-			scaleDiff = nextScale - downScale;
-			return (scale - downScale) / scaleDiff + downZoom;
-		},
-
-		distance: L.CRS.Earth.distance,
-
-		R: L.CRS.Earth.R,
-
-		/* Get the closest lowest element in an array */
-		_closestElement: function(array, element) {
-			var low;
-			for (var i = array.length; i--;) {
-				if (array[i] <= element && (low === undefined || low < array[i])) {
-					low = array[i];
-				}
-			}
-			return low;
-		}
-	});
-
-	L.Proj.GeoJSON = L.GeoJSON.extend({
-		initialize: function(geojson, options) {
-			this._callLevel = 0;
-			L.GeoJSON.prototype.initialize.call(this, geojson, options);
-		},
-
-		addData: function(geojson) {
-			var crs;
-
-			if (geojson) {
-				if (geojson.crs && geojson.crs.type === 'name') {
-					crs = new L.Proj.CRS(geojson.crs.properties.name);
-				} else if (geojson.crs && geojson.crs.type) {
-					crs = new L.Proj.CRS(geojson.crs.type + ':' + geojson.crs.properties.code);
-				}
-
-				if (crs !== undefined) {
-					this.options.coordsToLatLng = function(coords) {
-						var point = L.point(coords[0], coords[1]);
-						return crs.projection.unproject(point);
-					};
-				}
-			}
-
-			// Base class' addData might call us recursively, but
-			// CRS shouldn't be cleared in that case, since CRS applies
-			// to the whole GeoJSON, inluding sub-features.
-			this._callLevel++;
-			try {
-				L.GeoJSON.prototype.addData.call(this, geojson);
-			} finally {
-				this._callLevel--;
-				if (this._callLevel === 0) {
-					delete this.options.coordsToLatLng;
-				}
-			}
-		}
-	});
-
-	L.Proj.geoJson = function(geojson, options) {
-		return new L.Proj.GeoJSON(geojson, options);
-	};
-
-	L.Proj.ImageOverlay = L.ImageOverlay.extend({
-		initialize: function (url, bounds, options) {
-			L.ImageOverlay.prototype.initialize.call(this, url, null, options);
-			this._projectedBounds = bounds;
-		},
-
-		// Danger ahead: Overriding internal methods in Leaflet.
-		// Decided to do this rather than making a copy of L.ImageOverlay
-		// and doing very tiny modifications to it.
-		// Future will tell if this was wise or not.
-		_animateZoom: function (event) {
-			var scale = this._map.getZoomScale(event.zoom);
-			var northWest = L.point(this._projectedBounds.min.x, this._projectedBounds.max.y);
-			var offset = this._projectedToNewLayerPoint(northWest, event.zoom, event.center);
-
-			L.DomUtil.setTransform(this._image, offset, scale);
-		},
-
-		_reset: function () {
-			var zoom = this._map.getZoom();
-			var pixelOrigin = this._map.getPixelOrigin();
-			var bounds = L.bounds(
-				this._transform(this._projectedBounds.min, zoom)._subtract(pixelOrigin),
-				this._transform(this._projectedBounds.max, zoom)._subtract(pixelOrigin)
-			);
-			var size = bounds.getSize();
-
-			L.DomUtil.setPosition(this._image, bounds.min);
-			this._image.style.width = size.x + 'px';
-			this._image.style.height = size.y + 'px';
-		},
-
-		_projectedToNewLayerPoint: function (point, zoom, center) {
-			var viewHalf = this._map.getSize()._divideBy(2);
-			var newTopLeft = this._map.project(center, zoom)._subtract(viewHalf)._round();
-			var topLeft = newTopLeft.add(this._map._getMapPanePos());
-
-			return this._transform(point, zoom)._subtract(topLeft);
-		},
-
-		_transform: function (point, zoom) {
-			var crs = this._map.options.crs;
-			var transformation = crs.transformation;
-			var scale = crs.scale(zoom);
-
-			return transformation.transform(point, scale);
-		}
-	});
-
-	L.Proj.imageOverlay = function (url, bounds, options) {
-		return new L.Proj.ImageOverlay(url, bounds, options);
-	};
-
-	return L.Proj;
-}));
diff --git a/mapWz/popup/user.html b/mapWz/popup/user.html
deleted file mode 100644
index 5e131bc..0000000
--- a/mapWz/popup/user.html
+++ /dev/null
@@ -1,37 +0,0 @@
-<!DOCTYPE html>
-<html>
-
-<head>
-    <meta charset="utf-8" />
-    <title>popup</title>
-    <!-- Vue -->
-	<script src="https://cdn.jsdelivr.net/npm/vue@2.6.12"></script>
-</head>
-
-<body>
-    <div id="popup">
-        <!-- 从layui传值给iframe 的占位input -->
-        <input type="text" id="user" ref="user" style="display:none">
-        46476978--
-        -{{ourData.title}}
-    </div>
-    <script>
-        var me = new Vue({
-            el: '#popup',
-            data: {
-                ourData: '',
-                oldtime: '',
-            },
-            mounted() {
-                this.oldtime = setTimeout(() => {//需要同步数据处理,input中value在mounted中没有直接传值
-                    clearTimeout(this.oldtime);
-                    this.ourData = JSON.parse(this.$refs.user.value);//json对象转js对象
-                    console.log(this.ourData,2)
-                }, 100);
-            }
-        })
-
-    </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/mapWz/xcxmap.html b/mapWz/xcxmap.html
deleted file mode 100644
index a1f9e63..0000000
--- a/mapWz/xcxmap.html
+++ /dev/null
@@ -1,127 +0,0 @@
-<!DOCTYPE html>
-<html>
-
-<head>
-    <meta charset="utf-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
-    <title>地图</title>
-    <!-- vue -->
-    <script src="https://cdn.jsdelivr.net/npm/vue@2.6.12"></script>
-
-    <!-- leaflet支持 -->
-    <script src="./lid/leaflet.js"></script>
-    <link rel="stylesheet" href="./lid/leaflet.css" />
-
-    <!-- leaflet聚合支持 -->
-    <link rel="stylesheet" href="./lid/MarkerCluster.css" />
-    <link rel="stylesheet" href="./lid/MarkerCluster.Default.css" />
-    <script src="./lid/leaflet.markercluster-src.js"></script>
-
-    <!-- layui支持 -->
-    <!-- <link rel="stylesheet" href="../map/lib/layui/css/layui.css" media="all"> -->
-    <!-- <script src="../map/lib/layui/layui.js" charset="utf-8"></script> -->
-
-    <!-- 百度地图api -->
-    <script type="text/javascript"
-        src="https://mapapi.qq.com/web/mapComponents/geoLocation/v/geolocation.min.js"></script>
-
-    <!-- axios支持 -->
-    <script src="../map/lib/axios.js"></script>
-
-    <!-- elementui -->
-    <script src="../map/lib/elementUi.js"></script>
-    <!-- <link rel="stylesheet" href="../map/lib/elementUi.css"> -->
-    <link rel="stylesheet" href="./css/elementUI.css">
-    <!-- <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css"> -->
-
-    <!-- jqurey -->
-    <script src="../map/lib/jquery.js" charset="utf-8"></script>
-
-    <!-- 微信支持 -->
-    <script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.4.0.js"></script>
-    <!-- <script src="./js/wx.js"></script> -->
-
-    <!-- uni 的 SDK -->
-    <script type="text/javascript" src="https://js.cdn.aliyun.dcloud.net.cn/dev/uni-app/uni.webview.1.5.2.js"></script>
-
-    <!-- omyself支持 -->
-    <link rel="stylesheet" href="./css/body.css" />
-
-    <!-- myDomMove -->
-    <script src="./js/move.js"></script>
-    <!-- sha1加密 -->
-    <!-- <script src="./js/sha1.js"></script> -->
-    <script src="https://pv.sohu.com/cityjson?ie=utf-8"></script>
-
-    <style>
-        #seedata {
-            position: relative;
-
-        }
-
-        .clear {
-            position: absolute;
-            right: 6px;
-            top: 6px;
-            width: 20px;
-            height: 20px;
-            z-index: 120;
-        }
-
-        .content {
-            padding: 10px;
-            position: absolute;
-            top: 0;
-            left: 0;
-            width: calc(100% - 20px);
-            height: calc(100% - 20px);
-            z-index: 99;
-
-            display: flex;
-            flex-direction: column;
-            /* justify-content: center; */
-            align-items: center;
-
-        }
-
-        .content div {
-            flex: 1;
-            max-height: 36px;
-            line-height: 1.6;
-        }
-
-        .content label {
-            display: inline-block;
-            width: 80px;
-        }
-    </style>
-
-
-</head>
-
-<body>
-    <div id="mapVue">
-        <div class="dingwei" @click="locationMap">
-            <img style="width: 80%;height: 80%;" src="./img/dingwei.png" alt="">
-        </div>
-        <div id="map">
-
-        </div>
-        <div id="seedata" style='display: none'>
-            <div class="clear">
-                <img style="width: 100%;height: 100%;" src="./img/gaunbi.png" alt="">
-            </div>
-            <div class="content">
-
-            </div>
-        </div>
-    </div>
-    <!-- vue渲染 -->
-    <script src="./js/vueMain.js"></script>
-    <!-- 引入高德地图所需秘钥 -->
-    <script type="text/javascript"
-        src='https://webapi.amap.com/maps?v=1.4.11&key=7ab53b28352e55dc5754699add0ad862&plugin=AMap.PlaceSearch'></script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/nativePlugins/AR-RtcModule/android/arsdk-release.aar b/nativePlugins/AR-RtcModule/android/arsdk-release.aar
deleted file mode 100644
index 27ade2f..0000000
--- a/nativePlugins/AR-RtcModule/android/arsdk-release.aar
+++ /dev/null
Binary files differ
diff --git a/nativePlugins/AR-RtcModule/android/rtc-release.aar b/nativePlugins/AR-RtcModule/android/rtc-release.aar
deleted file mode 100644
index 9266a84..0000000
--- a/nativePlugins/AR-RtcModule/android/rtc-release.aar
+++ /dev/null
Binary files differ
diff --git a/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/ARtcKit b/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/ARtcKit
deleted file mode 100644
index b7e2a07..0000000
--- a/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/ARtcKit
+++ /dev/null
Binary files differ
diff --git a/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Headers/AREnumerates.h b/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Headers/AREnumerates.h
deleted file mode 100644
index 756f9bc..0000000
--- a/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Headers/AREnumerates.h
+++ /dev/null
@@ -1,1817 +0,0 @@
-//
-//  AREnumerates.h
-//  ARtcKit
-//
-//  Created by 余生丶 on 2020/3/20.
-//  Copyright © 2020 zjq. All rights reserved.
-//
-
-#ifndef AREnumerates_h
-#define AREnumerates_h
-
-/** Warning code.
-
-警告代码表示 SDK 运行时出现了(网络或媒体相关的)警告。通常情况下,SDK 上报的警告信息 App 可以忽略,SDK 会自动恢复。比如和服务器失去连接时,SDK 可能会上报 ARWarningCodeOpenChannelTimeout(106) 警告,同时自动尝试重连。
-*/
-typedef NS_ENUM(NSInteger, ARWarningCode) {
-    /**
-     8: 指定的 view 无效,使用视频功能时需要指定 view,如果 view 尚未指定,则返回该警告。
-     */
-    ARWarningCodeInvalidView = 8,
-    /**
-     16: 初始化视频功能失败。有可能是因视频资源被占用导致的。用户无法看到视频画面,但不影响语音通信。
-     */
-    ARWarningCodeInitVideo = 16,
-     /**
-      20: 请求处于待定状态。一般是由于某个模块还没准备好,请求被延迟处理。
-      */
-    ARWarningCodePending = 20,
-    /**
-     103: 没有可用的频道资源。可能是因为服务端没法分配频道资源。
-     */
-    ARWarningCodeNoAvailableChannel = 103,
-    /**
-     104: 查找频道超时。在加入频道时 SDK 先要查找指定的频道,出现该警告一般是因为网络太差,连接不到服务器。
-     */
-    ARWarningCodeLookupChannelTimeout = 104,
-    /**
-     105: 查找频道请求被服务器拒绝。服务器可能没有办法处理这个请求或请求是非法的。
-     */
-    ARWarningCodeLookupChannelRejected = 105,
-    /**
-     106: 打开频道超时。查找到指定频道后,SDK 接着打开该频道,超时一般是因为网络太差,连接不到服务器。
-     */
-    ARWarningCodeOpenChannelTimeout = 106,
-    /**
-     107: 打开频道请求被服务器拒绝。服务器可能没有办法处理该请求或该请求是非法的。
-     */
-    ARWarningCodeOpenChannelRejected = 107,
-    /**
-     111: 切换直播视频超时。
-     */
-    ARWarningCodeSwitchLiveVideoTimeout = 111,
-    /**
-     118: 直播场景下设置用户角色超时。
-     */
-    ARWarningCodeSetClientRoleTimeout = 118,
-    /**
-     119: 直播场景下用户角色未授权。
-     */
-    ARWarningCodeSetClientRoleNotAuthorized = 119,
-    /**
-     121: TICKET 非法,打开频道失败。
-     */
-    ARWarningCodeOpenChannelInvalidTicket = 121,
-    /**
-     122: 尝试打开另一个服务器。
-     */
-    ARWarningCodeOpenChannelTryNextVos = 122,
-    /**
-     701: 打开伴奏出错。
-     */
-    ARWarningCodeAudioMixingOpenError = 701,
-    /**
-     1014: 音频设备模块:运行时播放设备出现警告。
-     */
-    ARWarningCodeAdmRuntimePlayoutWarning = 1014,
-    /**
-     1016: 音频设备模块:运行时录音设备出现警告。
-     */
-    ARWarningCodeAdmRuntimeRecordingWarning = 1016,
-    /**
-     1019: 音频设备模块:没有采集到有效的声音数据。该警告不影响正常通话。
-     */
-    ARWarningCodeAdmRecordAudioSilence = 1019,
-    /**
-     1020: 音频设备模块:播放设备故障。
-     */
-    ARWarningCodeAdmPlaybackMalfunction = 1020,
-    /**
-     1021: 音频设备模块:录音设备故障。
-     */
-    ARWarningCodeAdmRecordMalfunction = 1021,
-    /**
-     1025: 通话或直播被系统声音打断,比如电话、闹钟等。
-     */
-    ARWarningCodeAdmInterruption = 1025,
-    /**
-     1031: 音频设备模块:录到的声音太低。
-     */
-    ARWarningCodeAdmRecordAudioLowlevel = 1031,
-    /**
-     1032: 音频设备模块:播放的声音太低。
-     */
-    ARWarningCodeAdmPlayoutAudioLowlevel = 1032,
-    /**
-     1051: 音频设备模块:录音声音监测到啸叫。
-     */
-    ARWarningCodeApmHowling = 1051,
-    /**
-     1052: 音频设备模块:音频播放会卡顿。
-     */
-    ARWarningCodeAdmGlitchState = 1052,
-    /**
-     1053: 音频设备模块:音频底层设置被修改。
-     */
-    ARWarningCodeAdmImproperSettings = 1053,
-};
-
-/** 错误代码
-
-错误代码表示 SDK 运行时出现了(网络或媒体相关的)错误。通常情况下,SDK 上报的错误意味着 SDK 无法自动恢复,需要 App 干预或提示用户。 比如启动通话失败时,SDK 会上报 ARErrorCodeStartCall = 1002 错误。App可以提示用户启动通话失败,并调用 leaveChannel 退出频道。
-*/
-typedef NS_ENUM(NSInteger, ARErrorCode) {
-    /**
-     0: 没有错误。
-     */
-    ARErrorCodeNoError = 0,
-    /**
-     1: 一般性的错误(没有明确归类的错误原因)。
-     */
-    ARErrorCodeFailed = 1,
-    /**
-     2: API 调用了无效的参数。例如指定的频道名含有非法字符。
-     */
-    ARErrorCodeInvalidArgument = 2,
-    /**
-     3: SDK 未准备好。
-     处理方法:
-     * 检查音频设备状态
-     * 检查程序集完整性
-     * 尝试重新初始化 SDK
-    */
-    ARErrorCodeNotReady = 3,
-    /**
-     4: SDK 当前状态不支持此操作,因此不能进行此操作。
-     */
-    ARErrorCodeNotSupported = 4,
-    /**
-     5: 调用被拒绝。仅供 SDK 内部使用,不通过 API 或者回调事件返回给 App。
-     */
-    ARErrorCodeRefused = 5,
-    /**
-     6: 传入的缓冲区大小不足以存放返回的数据。
-     */
-    ARErrorCodeBufferTooSmall = 6,
-    /**
-     7: SDK 尚未初始化,就调用其 API。请确认在调用 API 之前已创建 ARtcEngineKit 对象并完成初始化。
-     */
-    ARErrorCodeNotInitialized = 7,
-    /**
-     9: 没有操作权限,请检查用户是否授予 app 音视频设备使用权限。
-     */
-    ARErrorCodeNoPermission = 9,
-    /**
-     10: API 调用超时。有些 API 调用需要 SDK 返回结果,如果 SDK 处理时间过长,超过 10 秒没有返回,会出现此错误。
-     */
-    ARErrorCodeTimedOut = 10,
-    /**
-     11: 请求被取消。仅供 SDK 内部使用,不通过 API 或者回调事件返回给 App。
-     */
-    ARErrorCodeCanceled = 11,
-    /**
-     12: 调用频率太高。仅供 SDK 内部使用,不通过 API 或者回调事件返回给 App。
-     */
-    ARErrorCodeTooOften = 12,
-    /**
-     13: SDK 内部绑定到网络 Socket 失败。仅供 SDK 内部使用,不通过 API 或者回调事件返回给 App。
-     */
-    ARErrorCodeBindSocket = 13,
-    /**
-     14: 网络不可用。仅供 SDK 内部使用,不通过 API 或者回调事件返回给 App。
-     */
-    ARErrorCodeNetDown = 14,
-    /**
-     15: 没有网络缓冲区可用。仅供 SDK 内部使用,不通过 API 或者回调事件返回给 App。
-     */
-    ARErrorCodeNoBufs = 15,
-    /**
-     17: 加入频道被拒绝。
-     一般有以下原因:
-     * 用户已进入频道,再次调用加入频道的 API,例如 joinChannelByToken,会返回此错误。停止调用该 API 即可。
-     * 用户在做 Echo 测试时尝试加入频道。等待 Echo test 结束后再加入频道即可。
-    */
-    ARErrorCodeJoinChannelRejected = 17,
-    /**
-     18: 离开频道失败。
-     一般有以下原因:
-     * 用户已离开频道,再次调用退出频道的 API,例如 leaveChannel,会返回此错误。停止调用该 API 即可。
-     * 用户尚未加入频道,就调用退出频道的 API。这种情况下无需额外操作。
-    */
-    ARErrorCodeLeaveChannelRejected = 18,
-    /**
-     19: 资源已被占用,不能重复使用。
-     */
-    ARErrorCodeAlreadyInUse = 19,
-    /**
-     20: SDK 放弃请求,可能由于请求次数太多。
-     */
-    ARErrorCodeAbort = 20,
-    /**
-     21: Windows 下特定的防火墙设置导致 SDK 初始化失败然后崩溃。
-     */
-    ARErrorCodeInitNetEngine = 21,
-    /**
-     22: 当用户 App 占用资源过多,或系统资源耗尽时,SDK 分配资源失败会返回该错误。
-     */
-    ARErrorCodeResourceLimited = 22,
-    /**
-     101: 不是有效的 App ID。请更换有效的 App ID 重新加入频道。
-     */
-    ARErrorCodeInvalidAppId = 101,
-    /**
-     102: 不是有效的频道名。请更换有效的频道名重新加入频道。
-     */
-    ARErrorCodeInvalidChannelId = 102,
-    /**
-     109: 当前使用的 Token 过期,不再有效。
-     connectionChangedToState 回调中 reason 参数的 ARConnectionChangedTokenExpired(9)。
-     一般有以下原因:
-     * Token 授权时间戳无效:Token 授权时间戳为 Token 生成时的时间戳,自 1970 年 1 月 1 日开始到当前时间的描述。授权该 Token 在生成后的 24 小时内可以访问 anyRTC 服务。如果 24 小时内没有访问,则该 Token 无法再使用。需要重新在服务端申请生成 Token。
-     * Token 服务到期时间戳已过期:用户设置的服务到期时间戳小于当前时间戳,无法继续使用 anyRTC 服务(比如正在进行的通话会被强制终止);设置服务到期时间并不意味着 Token 失效,而仅仅用于限制用户使用当前服务的时间。需要重新在服务端申请生成 Token。
-     */
-    ARErrorCodeTokenExpired = 109,
-    /**
-     110: 生成的 Token 无效。
-     connectionChangedToState 回调中 reason 参数的 ARConnectionChangedInvalidToken(8)。
-     一般有以下原因:
-     * 用户在控制台上启用了 App Certificate,但仍旧在代码里仅使用了 App ID。当启用了 App Certificate,必须使用 Token。
-     * 字段 uid 为生成 Token 的必须字段,用户在调用 joinChannelByToken 加入频道时必须设置相同的 uid。
-     */
-    ARErrorCodeInvalidToken = 110,
-    /**
-     111: 网络连接中断。仅适用于 anyRTC Web SDK。
-     */
-    ARErrorCodeConnectionInterrupted = 111,
-    /**
-     112: 网络连接丢失。仅适用于 anyRTC Web SDK。
-     */
-    ARErrorCodeConnectionLost = 112,
-    /**
-     113: 在调用 sendStreamMessage 时,如果用户不在频道内,会发生该错误。
-     */
-    ARErrorCodeNotInChannel = 113,
-    /**
-     114: 在调用 sendStreamMessage 时,当发送的数据长度大于 1024 个字节时,会发生该错误。
-     */
-    ARErrorCodeSizeTooLarge = 114,
-    /**
-     115: 在调用 sendStreamMessage 时,当发送的数据码率超过限制时 (6 Kbps),会发生该错误。
-     */
-    ARErrorCodeBitrateLimit = 115,
-    /**
-     116: 在调用 createDataStream 时,如果创建的数据通道过多(超过 5 个通道),会发生该错误。
-     */
-    ARErrorCodeTooManyDataStreams = 116,
-    /**
-     120: 解密失败,可能是用户加入频道用了不同的密码。请检查加入频道时的设置,或尝试重新加入频道。
-     */
-    ARErrorCodeDecryptionFailed = 120,
-    /**
-     124: 水印文件参数错误。
-     */
-    ARErrorCodeWatermarkParam = 124,
-    /**
-     125: 水印文件路径错误。
-     */
-    ARErrorCodeWatermarkPath = 125,
-    /**
-     126: 水印文件格式错误。
-     */
-    ARErrorCodeWatermarkPng = 126,
-    /**
-     127: 水印文件信息错误。
-     */
-    ARErrorCodeWatermarkInfo = 127,
-    /**
-     128: 水印文件数据格式错误。
-     */
-    ARErrorCodeWatermarkAGRB = 128,
-    /**
-     129: 水印文件读取错误。
-     */
-    ARErrorCodeWatermarkRead = 129,
-    /**
-     130: 推流已加密不能推流。
-     */
-    ARErrorCodeEncryptedStreamNotAllowedPublish = 130,
-    /**
-     134: 无效的 User Account。
-     */
-    ARErrorCodeInvalidUserAccount = 134,
-    /**
-     151: CDN 相关错误。请调用 removePublishStreamUrl 方法删除原来的推流地址,然后调用 addPublishStreamUrl 方法重新推流到新地址。
-     */
-    ARErrorCodePublishStreamCDNError = 151,
-    /**
-     152: 单个主播的推流地址数目达到上限 10。请删掉一些不用的推流地址再增加推流地址。
-     */
-    ARErrorCodePublishStreamNumReachLimit = 152,
-    /**
-     153: 操作不属于主播自己的流,例如更新其他主播的流参数、停止其他主播的流。请检查 App 逻辑。
-     */
-    ARErrorCodePublishStreamNotAuthorized = 153,
-    /**
-     154: 推流服务器出现错误。请调用 addPublishStreamUrl 重新推流。
-     */
-    ARErrorCodePublishStreamInternalServerError = 154,
-    /**
-     155: 服务器未找到这个流。
-     */
-    ARErrorCodePublishStreamNotFound = 155,
-    /**
-     156: 推流地址格式有错误。请检查推流地址格式是否正确。
-     */
-    ARErrorCodePublishStreamFormatNotSuppported = 156,
-    /**
-     1001: 加载媒体引擎失败。
-     */
-    ARErrorCodeLoadMediaEngine = 1001,
-    /**
-     1002: 启动媒体引擎开始通话失败。请尝试重新进入频道。
-     */
-    ARErrorCodeStartCall = 1002,
-    /**
-     1003: 启动摄像头失败,请检查摄像头是否被其他应用占用,或者尝试重新进入频道。
-     */
-    ARErrorCodeStartCamera = 1003,
-    /**
-     1004: 启动视频渲染模块失败。
-     */
-    ARErrorCodeStartVideoRender = 1004,
-    /**
-     1005: 音频设备模块:音频设备出现错误(未明确指明为何种错误)。请检查音频设备是否被其它应用占用,或者尝试重新进入频道。
-     */
-    ARErrorCodeAdmGeneralError = 1005,
-    /**
-     1006: 音频设备模块:使用 java 资源出现错误。
-     */
-    ARErrorCodeAdmJavaResource = 1006,
-    /**
-     1007: 音频设备模块:设置的采样频率出现错误。
-     */
-    ARErrorCodeAdmSampleRate = 1007,
-    /**
-     1008: 音频设备模块:初始化播放设备出现错误。请检查播放设备是否被其他应用占用,或者尝试重新进入频道。
-     */
-    ARErrorCodeAdmInitPlayout = 1008,
-    /**
-     1009: 音频设备模块:启动播放设备出现错误。请检查播放设备是否正常,或者尝试重新进入频道。
-     */
-    ARErrorCodeAdmStartPlayout = 1009,
-    /**
-     1010: 音频设备模块:停止播放设备出现错误。
-     */
-    ARErrorCodeAdmStopPlayout = 1010,
-    /**
-     1011: 音频设备模块:初始化录音设备时出现错误。请检查录音设备是否正常,或者尝试重新进入频道。
-     */
-    ARErrorCodeAdmInitRecording = 1011,
-    /**
-     1012: 音频设备模块:启动录音设备出现错误。请检查录音设备是否正常,或者尝试重新进入频道。
-     */
-    ARErrorCodeAdmStartRecording = 1012,
-    /**
-     1013: 音频设备模块:停止录音设备出现错误。
-     */
-    ARErrorCodeAdmStopRecording = 1013,
-    /**
-     1015: 音频设备模块:运行时播放出现错误。请检查播放设备是否正常,或者尝试重新进入频道。
-     */
-    ARErrorCodeAdmRuntimePlayoutError = 1015,
-    /**
-     1017: 音频设备模块:运行时录音错误。请检查录音设备是否正常,或者尝试重新进入频道。
-     */
-    ARErrorCodeAdmRuntimeRecordingError = 1017,
-    /**
-     1018: 音频设备模块:录音失败。
-     */
-    ARErrorCodeAdmRecordAudioFailed = 1018,
-    /**
-     1020: 音频设备模块:回放频率异常。
-     */
-    ARErrorCodeAdmPlayAbnormalFrequency = 1020,
-    /**
-     1021: 音频设备模块:录制频率异常。
-     */
-    ARErrorCodeAdmRecordAbnormalFrequency = 1021,
-    /**
-     1022: 音频设备模块:初始化 Loopback 设备错误。
-     */
-    ARErrorCodeAdmInitLoopback  = 1022,
-    /**
-     1023: 音频设备模块:启动 Loopback 设备错误。
-     */
-    ARErrorCodeAdmStartLoopback = 1023,
-    /**
-     1027: 音频设备模块:  在没有录音权限时发生错误。
-     */
-    ARErrorCodeAdmNoPermission = 1027,
-    /**
-     1359: 音频设备模块:无录制设备。请检查是否有可用的录放音设备或者录放音设备是否已经被其他应用占用。
-     */
-    ARErrorCodeAdmNoRecordingDevice = 1359,
-    /**
-     1360: 音频设备模块:无播放设备。
-     */
-    ARErrorCodeAdmNoPlayoutDevice = 1360,
-    /**
-     1501: 视频设备模块:没有摄像头使用权限。请检查是否已经打开摄像头权限。
-     */
-    ARErrorCodeVdmCameraNotAuthorized = 1501,
-    /**
-     1600: 视频设备模块:未知错误。
-     */
-    ARErrorCodeVcmUnknownError = 1600,
-    /**
-     1601: 视频设备模块:视频编码器初始化错误。该错误为严重错误,请尝试重新加入频道。
-     */
-    ARErrorCodeVcmEncoderInitError = 1601,
-    /**
-     1602: 视频设备模块:视频编码器错误。该错误为严重错误,请尝试重新加入频道。
-     */
-    ARErrorCodeVcmEncoderEncodeError = 1602
-};
-
-/** 混音音乐文件状态 */
-typedef NS_ENUM(NSInteger, ARAudioMixingStateCode){
-    /**
-     710: 视频设备模块:未知错误。
-     */
-    ARAudioMixingStatePlaying = 710,
-    /**
-     711: 音乐文件暂停播放
-     */
-    ARAudioMixingStatePaused = 711,
-    /**
-     713:音乐文件停止播放
-     */
-    ARAudioMixingStateStopped = 713,
-    /**
-     714:音乐文件播放出错
-     */
-    ARAudioMixingStateFailed = 714,
-};
-
-/** 混音音乐文件错误码 */
-typedef NS_ENUM(NSInteger, ARAudioMixingErrorCode){
-    /**
-     701: 音乐文件打开出错
-     */
-    ARAudioMixingErrorCanNotOpen = 701,
-    /**
-     702: 音乐文件打开太频繁
-     */
-    ARAudioMixingErrorTooFrequentCall = 702,
-    /**
-     703: 音乐文件打开中断
-     */
-    ARAudioMixingErrorInterruptedEOF = 703,
-    /**
-     0: 音乐文件状态正常
-     */
-    ARAudioMixingErrorOK = 0,
-};
-
-/** 频道使用场景 */
-typedef NS_ENUM(NSUInteger, ARChannelProfile ) {
-    /**
-     0: 通信场景
-     */
-    ARChannelProfileCommunication = 0,
-    /**
-     1: 直播场景
-     */
-    ARChannelProfileLiveBroadcasting = 1,
-    /**
-     2: 游戏语音场景
-     */
-    ARChannelProfileGame = 2
-};
-
-/** 视频显示模式 */
-typedef NS_ENUM(NSUInteger, ARVideoRenderMode ) {
-  /**
-   1:优先保证视窗被填满。视频尺寸等比缩放,直至整个视窗被视频填满。如果视频长宽与显示窗口不同,则视频流会按照显示视窗的比例进行周边裁剪或图像拉伸后填满视窗。
-   */
-   ARVideoRenderModeHidden = 1,
-  /**
-   2:优先保证视频内容全部显示。视频尺寸等比缩放,直至视频窗口的一边与视窗边框对齐。如果视频尺寸与显示视窗尺寸不一致,在保持长宽比的前提下,将视频进行缩放后填满视窗,缩放后的视频四周会有一圈黑边。
-   */
-   ARVideoRenderModeFit = 2,
-   /**
-   4:视频尺寸进行缩放和拉伸以充满显示视窗。
-   */
-   ARVideoRenderModeFill = 4
-};
-
-/** 视频镜像模式 */
-typedef NS_ENUM(NSUInteger, ARVideoMirrorMode ) {
-    /**
-     0: (Default) 由 SDK 决定镜像模式
-     */
-    ARVideoMirrorModeAuto = 0,
-    /**
-     1: 启用镜像模式
-     */
-    ARVideoMirrorModeEnabled = 1,
-    /**
-     2: 关闭镜像模式
-     */
-    ARVideoMirrorModeDisabled = 2
-
-};
-
-/** 直播场景里的用户角色 */
-typedef NS_ENUM(NSInteger, ARClientRole) {
-    /**
-     1:主播
-     */
-    ARClientRoleBroadcaster = 1,
-    /**
-     2:观众(默认)
-     */
-    ARClientRoleAudience = 2,
-};
-
-/** 用户离线原因 */
-typedef NS_ENUM(NSUInteger, ARUserOfflineReason) {
-    /**
-     0:用户主动离开
-     */
-    ARUserOfflineReasonQuit = 0,
-    /**
-     1:因过长时间收不到对方数据包,超时掉线。注意:由于 SDK 使用的是不可靠通道,也有可能对方主动离开本方没收到对方离开消息而误判为超时掉线
-     */
-    ARUserOfflineReasonDropped = 1,
-    /**
-     2:用户身份从主播切换为观众时触发
-     */
-    ARUserOfflineReasonBecomeAudience = 2,
-};
-
-/** 网络状态 */
-typedef NS_ENUM(NSInteger, ARNetworkType) {
-    /**
-     -1:网络连接类型未知
-     */
-    ARNetworkTypeUnknown = 0,
-    /**
-     1:网络类型为 LAN
-     */
-    ARNetworkTypeLAN = 1,
-    /**
-     2:网络类型为 Wi-Fi(包含热点)
-     */
-    ARNetworkTypeWIFI = 2,
-    /**
-     3:网络类型为 2G 移动网络
-     */
-    ARNetworkTypeMobile2G = 3,
-    /**
-     4:网络类型为 3G 移动网络
-     */
-    ARNetworkTypeMobile3G = 4,
-    /**
-     5:网络类型为 4G 移动网络
-     */
-    ARNetworkTypeMobile4G = 5
-};
-
-/** 网络连接状态类型 */
-typedef NS_ENUM(NSInteger, ARConnectionStateType) {
-    /**
-     1:网络连接断开
-     */
-    ARConnectionStateDisconnected = 1,
-    /**
-     2:建立网络连接中
-     */
-    ARConnectionStateConnecting = 2,
-    /**
-     3:网络已连接
-     */
-    ARConnectionStateConnected = 3,
-    /**
-     4:重新建立网络连接中
-     */
-    ARConnectionStateReconnecting = 4,
-    /**
-     5:网络连接失败
-     */
-    ARConnectionStateFailed = 5
-};
-
-/** 音频属性 */
-typedef NS_ENUM(NSInteger, ARAudioProfile) {
-    /**
-     0:默认设置,通信场景下,默认ARAudioProfileSpeechStandard。直播场景下,默认ARAudioProfileMusicStandard
-     */
-    ARAudioProfileDefault = 0,
-    /**
-     1:指定 32 KHz采样率,语音编码,单声道,编码码率最大值为 18 Kbps
-     */
-    ARAudioProfileSpeechStandard = 1,
-    /**
-     2:指定 48 KHz采样率,音乐编码,单声道,编码码率最大值为 48 Kbps。
-     */
-    ARAudioProfileMusicStandard = 2,
-    /**
-     3:指定 48 KHz采样率,音乐编码,双声道,编码码率最大值为 56 Kbps
-     */
-    ARAudioProfileMusicStandardStereo = 3,
-    /**
-     4:指定 48 KHz 采样率,音乐编码,单声道,编码码率最大值为 128 Kbps
-     */
-    ARAudioProfileMusicHighQuality = 4,
-    /**
-     5:指定 48 KHz采样率,音乐编码,双声道,编码码率最大值为 192 Kbps
-     */
-    ARAudioProfileMusicHighQualityStereo = 5
-};
-
-/** 设置音频应用场景 */
-typedef NS_ENUM(NSInteger, ARAudioScenario) {
-    /**
-     0: 默认的音频应用场景。 */
-    ARAudioScenarioDefault = 0,
-    /**
-     1: 娱乐应用,需要频繁上下麦的场景
-     */
-    ARAudioScenarioChatRoomEntertainment = 1,
-    /**
-     2: 教育场景,适用于需要高流畅度和稳定性的场景。
-     */
-    ARAudioScenarioEducation = 2,
-    /**
-     3: 高音质语聊房场景,适用于音乐为主的场景。
-     */
-    ARAudioScenarioGameStreaming = 3,
-    /**
-     4: 秀场场景,适用于需要高音质的单主播场景。
-     */
-    ARAudioScenarioShowRoom = 4,
-    /**
-     5: 游戏开黑场景,适用于只有人声的场景。
-     */
-    ARAudioScenarioChatRoomGaming = 5
-};
-
-/** 远端视频流状态 */
-typedef NS_ENUM(NSUInteger, ARVideoRemoteState) {
-    /**
-     0: 远端视频默认初始状态。在 ARVideoRemoteStateReasonLocalMuted(3)、ARVideoRemoteStateReasonRemoteMuted(5) 或 ARVideoRemoteStateReasonRemoteMuted(7) 的情况下,会报告该状态。
-     */
-    ARVideoRemoteStateStopped = 0,
-    /**
-     1: 本地用户已接收远端视频首包。
-     */
-    ARVideoRemoteStateStarting = 1,
-    /**
-     2: 远端视频流正在解码,正常播放。在 ARVideoRemoteStateReasonNetworkRecovery(2)、ARVideoRemoteStateReasonNetworkRecovery(4)、ARVideoRemoteStateReasonRemoteUnmuted(6) 或 ARVideoRemoteStateReasonAudioFallbackRecovery(9) 的情况下,会报告该状态。
-     */
-    ARVideoRemoteStateDecoding = 2,
-    /**
-     3: 远端视频流卡顿。在 ARVideoRemoteStateReasonNetworkCongestion(1) 或 ARVideoRemoteStateReasonAudioFallback(8) 的情况下,会报告该状态。
-     */
-    ARVideoRemoteStateFrozen = 3,
-    /**
-     4: 远端视频流播放失败。在 ARVideoRemoteStateReasonInternal(0) 的情况下,会报告该状态。
-     */
-    ARVideoRemoteStateFailed = 4,
-};
-
-/** 远端视频流状态改变的具体原因 */
-typedef NS_ENUM(NSUInteger, ARVideoRemoteStateReason ) {
-    /**
-     0: 内部原因。
-     */
-    ARVideoRemoteStateReasonInternal = 0,
-    /**
-     1: 网络阻塞。
-     */
-    ARVideoRemoteStateReasonNetworkCongestion = 1,
-    /**
-     2: 网络恢复正常。
-     */
-    ARVideoRemoteStateReasonNetworkRecovery = 2,
-    /**
-     3: 本地用户停止接收远端视频流或本地用户禁用视频模块。
-     */
-    ARVideoRemoteStateReasonLocalMuted = 3,
-    /**
-     4: 本地用户恢复接收远端视频流或本地用户启动视频模块。
-     */
-    ARVideoRemoteStateReasonLocalUnmuted = 4,
-    /**
-     5: 远端用户停止发送视频流或远端用户禁用视频模块。
-     */
-    ARVideoRemoteStateReasonRemoteMuted = 5,
-    /**
-     6: 远端用户恢复发送视频流或远端用户启用视频模块。
-     */
-    ARVideoRemoteStateReasonRemoteUnmuted = 6,
-    /**
-     7: 远端用户离开频道。
-     */
-    ARVideoRemoteStateReasonRemoteOffline = 7,
-    /**
-     8: 远端视频流已回退为音频流。
-     */
-    ARVideoRemoteStateReasonAudioFallback = 8,
-    /**
-     9: 回退的远端音频流恢复为视频流。
-     */
-    ARVideoRemoteStateReasonAudioFallbackRecovery = 9
-};
-
-/** 选择高码率高分辨率视频或低码率低分辨率视频 */
-typedef NS_ENUM(NSInteger, ARVideoStreamType ) {
-    /**
-    0:高码率、高分辨率视频
-    */
-    ARVideoStreamTypeHigh = 0,
-    /**
-    1:低码率、低分辨率视频
-    */
-    ARVideoStreamTypeLow = 1,
-};
-
-/** 视频输出方向模式 */
-typedef NS_ENUM(NSInteger, ARVideoOutputOrientationMode ) {
-    /**
-     0:自适应布局(默认)
-     该模式下SDK输出的视频方向与采集到的视频方向一致。接收端会根据收到的视频旋转信息对视频进行旋转。该模式适用于接收端可以调整视频方向的场景:
-     * 如果采集的视频是横屏模式,则输出的视频也是横屏模式。
-     * 如果采集的视频是竖屏模式,则输出的视频也是竖屏模式。
-     */
-    ARVideoOutputOrientationModeAdaptative = 0,
-    /**
-     1:横屏布局
-     该模式下SDK固定输出人像(横屏)模式的视频。如果采集到的视频是竖屏模式,则视频编码器会对其进行裁剪。该模式适用于当接收端无法调整视频方向时,如使用旁路推流场景下。
-     */
-    ARVideoOutputOrientationModeFixedLandscape = 1,
-    /**
-     2:竖屏布局
-     该模式下SDK固定输出人像(竖屏)模式的视频。如果采集到的视频是横屏模式,则视频编码器会对其进行裁剪。该模式适用于当接收端无法调整视频方向时,如使用旁路推流场景下。
-     */
-    ARVideoOutputOrientationModeFixedPortrait = 2,
-};
-
-/** 带宽受限时的视频编码降级偏好 */
-typedef NS_ENUM(NSInteger, ARDegradationPreference) {
-    /**
-     0:(默认)降低编码帧率以保证视频质量。
-     */
-    ARDegradationMaintainQuality = 0,
-    /**
-     1:降低视频质量以保证编码帧率。
-     */
-    ARDegradationMaintainFramerate = 1,
-    /**
-     2:(预留参数,暂不支持)在编码帧率和视频质量之间保持平衡。
-     */
-    ARDegradationBalanced = 2,
-};
-
-/** 视频帧率 */
-typedef NS_ENUM(NSInteger, ARVideoFrameRate) {
-    /**
-     1 fps.
-     */
-    ARVideoFrameRateFps1 = 1,
-    /**
-     7 fps.
-     */
-    ARVideoFrameRateFps7 = 7,
-    /**
-     10 fps.
-     */
-    ARVideoFrameRateFps10 = 10,
-    /**
-     15 fps.
-     */
-    ARVideoFrameRateFps15 = 15,
-    /**
-     24 fps.
-     */
-    ARVideoFrameRateFps24 = 24,
-    /**
-     30 fps.
-     */
-    ARVideoFrameRateFps30 = 30,
-    /**
-     60 fps (仅支持 macOS).
-     */
-    ARVideoFrameRateFps60 = 60,
-};
-
-/** 本地音频状态 */
-typedef NS_ENUM(NSUInteger, ARAudioLocalState) {
-    /**
-     0: 本地音频默认初始状态。
-     */
-    ARAudioLocalStateStopped = 0,
-    /**
-     1: 本地音频录制设备启动成功。
-     */
-    ARAudioLocalStateRecording = 1,
-    /**
-     2: 本地音频首帧编码成功。
-     */
-    ARAudioLocalStateEncoding = 2,
-    /**
-     3: 本地音频启动失败。
-     */
-    ARAudioLocalStateFailed = 3,
-};
-
-/** 本地音频出错原因 */
-typedef NS_ENUM(NSUInteger, ARAudioLocalError) {
-    /**
-     0: 本地音频状态正常。
-     */
-    ARAudioLocalErrorOk = 0,
-    /**
-     1: 本地音频出错原因不明确。
-     */
-    ARAudioLocalErrorFailure = 1,
-    /**
-     2: 没有权限启动本地音频录制设备。
-     */
-    ARAudioLocalErrorDeviceNoPermission = 2,
-    /**
-     3: 本地音频录制设备已经在使用中。
-     */
-    ARAudioLocalErrorDeviceBusy = 3,
-    /**
-     4: 本地音频录制失败,建议你检查录制设备是否正常工作。
-     */
-    ARAudioLocalErrorRecordFailure = 4,
-    /**
-     5: 本地音频编码失败。
-     */
-    ARAudioLocalErrorEncodeFailure = 5,
-};
-
-/** 远端音频状态 */
-typedef NS_ENUM(NSUInteger, ARAudioRemoteState) {
-    /**
-     0: 远端音频流默认初始状态。在 ARAudioRemoteReasonLocalMuted(3)、ARAudioRemoteReasonRemoteMuted(5) 或 ARAudioRemoteReasonRemoteOffline(7) 的情况下,会报告该状态。
-     */
-    ARAudioRemoteStateStopped = 0,
-    /**
-     1: 本地用户已接收远端音频首包。
-     */
-    ARAudioRemoteStateStarting = 1,
-    /**
-     2: 远端音频流正在解码,正常播放。在 ARAudioRemoteReasonNetworkRecovery(2)、ARAudioRemoteReasonLocalUnmuted(4) 或 ARAudioRemoteReasonRemoteUnmuted(6) 的情况下,会报告该状态。
-     */
-    ARAudioRemoteStateDecoding = 2,
-    /**
-     3: 远端音频流卡顿。在 ARAudioRemoteReasonNetworkCongestion(1) 的情况下,会报告该状态。
-     */
-    ARAudioRemoteStateFrozen = 3,
-    /**
-     4: 远端音频流播放失败。在 ARAudioRemoteReasonInternal(0) 的情况下,会报告该状态。
-     */
-    ARAudioRemoteStateFailed = 4,
-};
-
-/** 远端音频流状态改变的具体原因 */
-typedef NS_ENUM(NSUInteger, ARAudioRemoteStateReason) {
-    /**
-     0: 内部原因。
-     */
-    ARAudioRemoteReasonInternal = 0,
-    /**
-     1: 网络阻塞。
-     */
-    ARAudioRemoteReasonNetworkCongestion = 1,
-    /**
-     2: 网络恢复正常。
-     */
-    ARAudioRemoteReasonNetworkRecovery = 2,
-    /**
-     3: 本地用户停止接收远端音频流或本地用户禁用音频模块。
-     */
-    ARAudioRemoteReasonLocalMuted = 3,
-    /**
-     4: 本地用户恢复接收远端音频流或本地用户启用音频模块。
-     */
-    ARAudioRemoteReasonLocalUnmuted = 4,
-    /**
-     5: 远端用户停止发送音频流或远端用户禁用音频模块。
-     */
-    ARAudioRemoteReasonRemoteMuted = 5,
-    /**
-     6: 远端用户恢复发送音频流或远端用户启用音频模块。
-     */
-    ARAudioRemoteReasonRemoteUnmuted = 6,
-    /**
-     7: 远端用户离开频道。
-     */
-    ARAudioRemoteReasonRemoteOffline = 7,
-};
-
-/** 本地视频状态 */
-typedef NS_ENUM(NSInteger, ARLocalVideoStreamState) {
-    /**
-    0: 本地视频默认初始状态。
-    */
-    ARLocalVideoStreamStateStopped = 0,
-    /**
-    1: 本地视频采集设备启动成功。
-    */
-    ARLocalVideoStreamStateCapturing = 1,
-    /**
-    2: 本地视频首帧编码成功。
-    */
-    ARLocalVideoStreamStateEncoding = 2,
-    /**
-    3: 本地视频启动失败。
-     */
-    ARLocalVideoStreamStateFailed = 3,
-};
-
-/** 本地视频出错原因 */
-typedef NS_ENUM(NSInteger, ARLocalVideoStreamError) {
-    /**
-    0: 本地视频状态正常。
-    */
-    ARLocalVideoStreamErrorOK = 0,
-    /**
-    1: 出错原因不明确。
-    */
-    ARLocalVideoStreamErrorFailure = 1,
-    /**
-    2: 没有权限启动本地视频采集设备。
-    */
-    ARLocalVideoStreamErrorDeviceNoPermission = 2,
-    /**
-    3: 本地视频采集设备正在使用中。
-    */
-    ARLocalVideoStreamErrorDeviceBusy = 3,
-    /**
-    4: 本地视频采集失败,建议检查采集设备是否正常工作。
-    */
-    ARLocalVideoStreamErrorCaptureFailure = 4,
-    /**
-    5: 本地视频编码失败。
-    */
-    ARLocalVideoStreamErrorEncodeFailure = 5,
-    /**
-    6: (仅适用于 iOS)应用处于后台
-     
-     @since v4.2.0
-    */
-    ARLocalVideoStreamErrorCaptureInBackGround = 6,
-    /**
-    7: (仅支持 iOS) 应用窗口处于侧拉、分屏、画中画模式。
-        
-     @since v4.2.0
-    */
-    ARLocalVideoStreamErrorCaptureMultipleForegroundApps = 7,
-    /**
-    11:(仅支持 macOS)调用 startScreenCaptureByWindowId 方法共享窗口时, 共享窗口处于最小化的状态。
-     
-     @since v4.2.0
-    */
-    ARLocalVideoStreamErrorScreenCaptureWindowMinimized = 11,
-    /**
-     12:(仅支持 macOS)该错误码表示通过窗口 ID 共享的窗口已关闭,或通过窗口 ID 共享的全屏窗口已退出全屏。退出全屏模式后,远端用户将无法看到共享的窗口。为避免远端用户看到黑屏,Agora 建议你立即结束本次共享。
-           
-     @since v4.2.0
-    */
-    ARLocalVideoStreamErrorScreenCaptureWindowClosed = 12
-};
-
-/** 摄像头采集偏好 */
-typedef NS_ENUM(NSInteger, ARCameraCaptureOutputPreference) {
-    /**
-     0:(默认)自动调整采集参数。SDK 根据实际的采集设备性能及网络情况,选择合适的摄像头输出参数,在设备性能及视频预览质量之间,维持平衡。
-     */
-    ARCameraCaptureOutputPreferenceAuto = 0,
-    /**
-     1:优先保证设备性能。SDK 根据用户在 setVideoEncoderConfiguration 中设置编码器的分辨率和帧率,选择最接近的摄像头输出参数,从而保证设备性能。在这种情况下,预览质量接近于编码器的输出质量*/
-    ARCameraCaptureOutputPreferencePerformance = 1,
-    /**
-     2:优先保证视频预览质量。SDK 选择较高的摄像头输出参数,从而提高预览视频的质量。在这种情况下,会消耗更多的 CPU 及内存做视频前处理。
-     */
-    ARCameraCaptureOutputPreferencePreview = 2,
-    /**
-     3:仅供内部使用
-     */
-    ARCameraCaptureOutputPreferenceUnkown = 3
-};
-
-#if TARGET_OS_IOS
-/** 摄像头方向 */
-typedef NS_ENUM(NSInteger, ARCameraDirection) {
-    /**
-    0:使用后置摄像头
-    */
-    ARCameraDirectionRear = 0,
-    /**
-    1:使用前置摄像头
-    */
-    ARCameraDirectionFront = 1,
-};
-#endif
-
-/** 语音路由 */
-typedef NS_ENUM(NSInteger, ARAudioOutputRouting) {
-    /**
-     -1:使用默认的语音路由
-     */
-    ARAudioOutputRoutingDefault = -1,
-    /**
-     0:使用耳机为语音路由
-     */
-    ARAudioOutputRoutingHeadset = 0,
-    /**
-     1:使用听筒为语音路由
-     */
-    ARAudioOutputRoutingEarpiece = 1,
-    /**
-     2:使用不带麦的耳机为语音路由
-     */
-    ARAudioOutputRoutingHeadsetNoMic = 2,
-    /**
-     3:使用手机的扬声器为语音路由
-     */
-    ARAudioOutputRoutingSpeakerphone = 3,
-    /**
-     4:使用外接的扬声器为语音路由
-     */
-    ARAudioOutputRoutingLoudspeaker = 4,
-    /**
-     5:使用蓝牙耳机为语音路由
-     */
-    ARAudioOutputRoutingHeadsetBluetooth = 5
-};
-
-/** 引起网络连接状态发生改变的原因 */
-typedef NS_ENUM(NSUInteger, ARConnectionChangedReason) {
-    /**
-     0: 建立网络连接中。
-     */
-    ARConnectionChangedConnecting = 0,
-    /**
-     1: 成功加入频道。
-     */
-    ARConnectionChangedJoinSuccess = 1,
-    /**
-     2: 网络连接中断。
-     */
-    ARConnectionChangedInterrupted = 2,
-    /**
-     3: 网络连接被服务器禁止。
-     */
-    ARConnectionChangedBannedByServer = 3,
-    /**
-     4: 加入频道失败。SDK 在尝试加入频道 20 分钟后还是没能加入频道,会返回该状态,并停止尝试重连。
-     */
-    ARConnectionChangedJoinFailed = 4,
-    /**
-     5: 离开频道。
-     */
-    ARConnectionChangedLeaveChannel = 5,
-    /**
-     6: 不是有效的 APP ID。请更换有效的 APP ID 重新加入频道。
-     */
-    ARConnectionChangedInvalidAppId = 6,
-    /**
-     7: 不是有效的频道名。请更换有效的频道名重新加入频道。
-     */
-    ARConnectionChangedInvalidChannelName = 7,
-    /**
-     8: 生成的 Token 无效。一般有以下原因:
-     * 在控制台上启用了 App Certificate,但加入频道未使用 Token。当启用了 App Certificate,必须使用 Token。
-     * 在调用 joinChannelByToken 加入频道时指定的 uid 与生成 Token 时传入的 uid 不一致。
-     */
-    ARConnectionChangedInvalidToken = 8,
-    /**
-     9: 当前使用的 Token 过期,不再有效,需要重新在你的服务端申请生成 Token。
-     */
-    ARConnectionChangedTokenExpired = 9,
-    /**
-     10: 此用户被服务器禁止。
-     */
-    ARConnectionChangedRejectedByServer = 10,
-    /**
-     11: 由于设置了代理服务器,SDK 尝试重连。
-     */
-    ARConnectionChangedSettingProxyServer = 11,
-    /**
-     12: 更新 Token 引起网络连接状态改变。
-     */
-    ARConnectionChangedRenewToken = 12,
-    /**
-     13: 客户端 IP 地址变更,可能是由于网络类型,或网络运营商的 IP 或端口发生改变引起。
-     */
-    ARConnectionChangedClientIpAddressChanged = 13,
-    /**
-     14: SDK 和服务器连接保活超时,进入自动重连状态 ARConnectionStateReconnecting(4).
-     */
-    ARConnectionChangedKeepAliveTimeout = 14,
-};
-
-/** 日志过滤分级 */
-typedef NS_ENUM(NSUInteger, ARLogFilter) {
-    /**
-     不输出日志信息
-     */
-    ARLogFilterOff = 0,
-    /**
-     输出所有 API 日志信息。如果你想获取最完整的日志,可以将日志级别设为该等级。
-     */
-    ARLogFilterDebug = 0x080f,
-    /**
-     输出 CRITICAL、ERROR、WARNING 和 INFO 级别的日志信息。我们推荐你将日志级别设为该等级。
-     */
-    ARLogFilterInfo = 0x000f,
-    /**
-     输出 CRITICAL、ERROR 和 WARNING 级别的日志信息
-     */
-    ARLogFilterWarning = 0x000e,
-    /**
-     输出 CRITICAL 和 ERROR 级别的日志信息
-     */
-    ARLogFilterError = 0x000c,
-    /**
-     输出 CRITICAL 级别的日志信息
-     */
-    ARLogFilterCritical = 0x0008,
-};
-
-/** 远端用户的需求优先级。如果将某个用户的优先级设为高,那么发给这个用户的音视频流的优先级就会高于其他用户。 */
-typedef NS_ENUM(NSInteger, ARUserPriority ) {
-    /**
-     50:用户需求优先级为高
-     */
-    ARUserPriorityHigh = 50,
-    /**
-     100:(默认)用户需求优先级为正常
-     */
-    ARUserPriorityNormal = 100,
-};
-
-/** 音视频流回退处理选项 */
-typedef NS_ENUM(NSInteger, ARStreamFallbackOptions ) {
-    /**
-     0:上行/下行网络较弱时,不对音视频流作回退处理,但不能保证音视频流的质量。
-     */
-    ARStreamFallbackOptionDisabled = 0,
-    /**
-     1:在下行网络条件较差的情况下,SDK 将接收视频小流(低分辨率、低码率视频流)。此选项仅适用于 setRemoteSubscribeFallbackOption。
-     */
-    ARStreamFallbackOptionVideoStreamLow = 1,
-    /**
-     2:上行网络较弱时,只发布音频流;下行网络较弱时,先尝试只接收视频小流(低分辨率、低码率视频流),如果网络环境无法显示视频,则再回退到只接收音频流。
-     */
-    ARStreamFallbackOptionAudioOnly = 2,
-};
-
-/** 视频的编码类型 */
-typedef NS_ENUM(NSInteger, ARVideoCodecType) {
-    /**
-     1: VP8.
-     */
-    ARVideoCodecTypeVP8 = 1,
-    /**
-     2: (默认值)H.264。
-     */
-    ARVideoCodecTypeH264 = 2,
-    /**
-     3:  EVP
-     */
-    ARVideoCodecTypeEVP = 3,
-    /**
-     4:  E264
-     */
-    ARVideoCodecTypeE264 = 4,
-};
-
-/** 自上次统计后本地视频质量的自适应情况(基于目标帧率和目标码率) */
-typedef NS_ENUM(NSInteger, ARVideoQualityAdaptIndication) {
-    /**
-    0:本地视频质量不变
-    */
-    ARVideoQualityAdaptNone = 0,
-    /**
-    1:因网络带宽增加,本地视频质量改善
-    */
-    ARVideoQualityAdaptUpBandwidth = 1,
-    /**
-    2:因网络带宽减少,本地视频质量变差
-    */
-    ARVideoQualityAdaptDownBandwidth = 2,
-};
-
-/** 网络质量 */
-typedef NS_ENUM(NSUInteger, ARNetworkQuality) {
-    /**
-     0:网络质量未知
-     */
-    ARNetworkQualityUnknown = 0,
-    /**
-     1:网络质量极好
-     */
-    ARNetworkQualityExcellent = 1,
-    /**
-     2:用户主观感觉和 excellent 差不多,但码率可能略低于 excellent
-     */
-    ARNetworkQualityGood = 2,
-    /**
-     3:用户主观感受有瑕疵但不影响沟通
-     */
-    ARNetworkQualityPoor = 3,
-    /**
-     4:勉强能沟通但不顺畅
-     */
-    ARNetworkQualityBad = 4,
-     /**
-      5:网络质量非常差,基本不能沟通
-      */
-    ARNetworkQualityVBad = 5,
-     /**
-      6:网络连接已断开,完全无法沟通
-      */
-    ARNetworkQualityDown = 6,
-     /**
-      7:网络质量探测功能不可使用 (目前没有使用)
-      */
-    ARNetworkQualityUnsupported = 7,
-     /**
-      8:网络质量探测中
-      */
-    ARNetworkQualityDetecting = 8,
-};
-
-/** 视频buffer */
-typedef NS_ENUM(NSInteger, ARVideoBufferType ) {
-    /**
-     1:pixelbuffer
-     */
-    ARVideoBufferTypePixelBuffer = 1,
-    /**
-     2:rawdata
-     */
-    ARVideoBufferTypeRawData = 2,
-};
-
-/** 音频采集类型 */
-typedef NS_ENUM(NSInteger, ARAudioType) {
-    /**
-     1:音频由App产生
-     */
-    ARAudioTypeApp = 1,
-    /**
-     2:音频由麦克风产生
-     */
-    ARAudioTypeMic = 2,
-};
-
-/** 录音音质 */
-typedef NS_ENUM(NSInteger, ARAudioRecordingQuality) {
-    /**
-     低音质。采样率为 32 KHz,录制 10 分钟的文件大小为 1.2 M 左右
-     */
-    ARAudioRecordingQualityLow = 0,
-    /**
-     中音质。采样率为 32 KHz,录制 10 分钟的文件大小为 2 M 左右
-     */
-    ARAudioRecordingQualityMedium = 1,
-    /**
-     高音质。采样率为 32 KHz,录制 10 分钟的文件大小为 3.75 M 左右
-     */
-    ARAudioRecordingQualityHigh = 2
-};
-
-/** 音频的采样率 */
-typedef NS_ENUM(NSInteger, ARAudioSampleRateType) {
-    /** 32 kHz. */
-    ARAudioSampleRateType32000 = 32000,
-    /** 44.1 kHz. */
-    ARAudioSampleRateType44100 = 44100,
-    /** 48 kHz. */
-    ARAudioSampleRateType48000 = 48000,
-};
-
-/** 导入的外部视频源状态 */
-typedef NS_ENUM(NSUInteger, ARInjectStreamStatus) {
-    /** 外部视频流导入成功 */
-    ARInjectStreamStatusStartSuccess = 0,
-    /** 外部视频流已存在 */
-    ARInjectStreamStatusStartAlreadyExists = 1,
-    /** 外部视频流导入未经授权 */
-    ARInjectStreamStatusStartUnauthorized = 2,
-    /** 导入外部视频流超时 */
-    ARInjectStreamStatusStartTimedout = 3,
-    /** 外部视频流导入失败*/
-    ARInjectStreamStatusStartFailed = 4,
-    /** 外部视频流停止导入成功 */
-    ARInjectStreamStatusStopSuccess = 5,
-    /** 未找到要停止导入的外部视频流 */
-    ARInjectStreamStatusStopNotFound = 6,
-    /** 要停止导入的外部视频流未经授权*/
-    ARInjectStreamStatusStopUnauthorized = 7,
-    /** 停止导入外部视频流超时 */
-    ARInjectStreamStatusStopTimedout = 8,
-    /** 停止导入外部视频流失败 */
-    ARInjectStreamStatusStopFailed = 9,
-    /** 导入的外部视频流被中断*/
-    ARInjectStreamStatusBroken = 10,
-};
-
-/** 跨频道媒体流转发状态码
- */
-typedef NS_ENUM(NSInteger, ARChannelMediaRelayState) {
-    /** 0: SDK 正在初始化。
-     */
-    ARChannelMediaRelayStateIdle = 0,
-    /** 1: SDK 尝试跨频道。
-     */
-    ARChannelMediaRelayStateConnecting = 1,
-    /** 2: 源频道主播成功加入目标频道。
-     */
-    ARChannelMediaRelayStateRunning = 2,
-    /** 3: 发生异常,详见 error 中提示的错误信息。
-     */
-    ARChannelMediaRelayStateFailure = 3,
-};
-
-/** 跨频道媒体流转发事件码
- */
-typedef NS_ENUM(NSInteger, ARChannelMediaRelayEvent) {
-    /** 0: 网络中断导致用户与服务器连接断开。
-     */
-    ARChannelMediaRelayEventDisconnect = 0,
-    /** 1: 用户与服务器建立连接。
-     */
-    ARChannelMediaRelayEventConnected = 1,
-    /** 2: 用户已加入源频道。
-     */
-    ARChannelMediaRelayEventJoinedSourceChannel = 2,
-    /** 3: 用户已加入目标频道。
-     */
-    ARChannelMediaRelayEventJoinedDestinationChannel = 3,
-    /** 4: SDK 开始向目标频道发送数据包。
-     */
-    ARChannelMediaRelayEventSentToDestinationChannel = 4,
-    /** 5: 服务器收到了目标频道发送的视频流。
-     */
-    ARChannelMediaRelayEventReceivedVideoPacketFromSource = 5,
-    /** 6: 服务器收到了目标频道发送的音频流。
-     */
-    ARChannelMediaRelayEventReceivedAudioPacketFromSource = 6,
-    /** 7: 目标频道已更新。
-     */
-    ARChannelMediaRelayEventUpdateDestinationChannel = 7,
-    /** 8: 内部原因导致目标频道更新失败。
-     */
-    ARChannelMediaRelayEventUpdateDestinationChannelRefused = 8,
-    /** 9: 目标频道未发生改变,即目标频道更新失败。
-     */
-    ARChannelMediaRelayEventUpdateDestinationChannelNotChange = 9,
-    /** 10: 目标频道名为 NULL。
-     */
-    ARChannelMediaRelayEventUpdateDestinationChannelIsNil = 10,
-    /** 11: 视频属性已发送至服务器。
-     */
-    ARChannelMediaRelayEventVideoProfileUpdate = 11,
-};
-
-/** 跨频道媒体流转发出错的错误码
- */
-typedef NS_ENUM(NSInteger, ARChannelMediaRelayError) {
-    /** 0: 一切正常。
-     */
-    ARChannelMediaRelayErrorNone = 0,
-    /** 1: 服务器回应出错。
-     */
-    ARChannelMediaRelayErrorServerErrorResponse = 1,
-    /** 2: 服务器无回应。你可以调用 leaveChannel 方法离开频道。
-     */
-    ARChannelMediaRelayErrorServerNoResponse = 2,
-    /** 3: SDK 无法获取服务,可能是因为服务器资源有限导致。
-     */
-    ARChannelMediaRelayErrorNoResourceAvailable = 3,
-    /** 4: 发起跨频道转发媒体流请求失败。
-     */
-    ARChannelMediaRelayErrorFailedJoinSourceChannel = 4,
-    /** 5: 接受跨频道转发媒体流请求失败。
-     */
-    ARChannelMediaRelayErrorFailedJoinDestinationChannel = 5,
-    /** 6: 服务器接收跨频道转发媒体流失败。
-     */
-    ARChannelMediaRelayErrorFailedPacketReceivedFromSource = 6,
-    /** 7: 服务器发送跨频道转发媒体流失败。
-     */
-    ARChannelMediaRelayErrorFailedPacketSentToDestination = 7,
-    /** 8: SDK 因网络质量不佳与服务器断开。你可以调用 leaveChannel 方法离开当前频道。
-     */
-    ARChannelMediaRelayErrorServerConnectionLost = 8,
-    /** 9: 服务器内部出错。
-     */
-    ARChannelMediaRelayErrorInternalError = 9,
-    /** 10: 源频道的 Token 已过期。
-     */
-    ARChannelMediaRelayErrorSourceTokenExpired = 10,
-    /** 11: 目标频道的 Token 已过期。
-     */
-    ARChannelMediaRelayErrorDestinationTokenExpired = 11,
-};
-
-/** 发布状态 */
-typedef NS_ENUM(NSUInteger, ARStreamPublishState) {
-    /** 0: 加入频道后的初始发布状态。
-     */
-    ARStreamPublishIdle = 0,
-    /** 1: 发布失败。可能是因为:
-     - 本地用户调用 muteLocalAudioStream(YES) 或 muteLocalVideoStream(YES) 停止发送本地媒体流。
-     - 本地用户调用 disableAudio 或 disableVideo 关闭本地音频或视频模块。
-     - 本地用户调用 enableLocalAudio(NO) 或 enableLocalVideo(NO) 关闭本地音频或视频采集。
-     - 本地用户角色为观众。
-     */
-    ARStreamPublishNoPublished = 1,
-    /** 2: 正在发布。
-     */
-    ARStreamPublishPublishing = 2,
-    /** 3: 发布成功。
-     */
-    ARStreamPublishPublished = 3,
-};
-
-/** 订阅状态。 */
-typedef NS_ENUM(NSUInteger, ARStreamSubscribeState) {
-    /** 0: 加入频道后的初始订阅状态。
-     */
-    ARStreamSubscribeIdle = 0,
-    /** 1: 订阅失败。可能是因为:
-     
-     - 远端用户:
-        - 调用 muteLocalAudioStream(YES) 或 muteLocalVideoStream(YES) 停止发送本地媒体流。
-        - 调用 disableAudio 或 disableVideo 关闭本地音频或视频模块。
-        - 调用 enableLocalAudio(NO) 或 enableLocalVideo(NO) 关闭本地音频或视频采集。
-     - 用户角色为观众。
-     - 本地用户调用以下方法停止接收远端媒体流:
-        - 调用 muteRemoteAudioStream(YES)、muteAllRemoteAudioStreams(YES) 或 setDefaultMuteAllRemoteAudioStreams(YES) 停止接收远端音频流。
-        - 调用 muteRemoteVideoStream(YES)、muteAllRemoteVideoStreams(YES) 或 setDefaultMuteAllRemoteVideoStreams(YES) 停止接收远端视频流。
-     */
-    ARStreamSubscribeNoSubscribed = 1,
-    /** 2: 正在订阅。
-     */
-    ARStreamSubscribeSubscribing = 2,
-    /** 3: 收到了远端流,订阅成功。
-     */
-    ARStreamSubscribeSubscribed = 3,
-};
-
-/** 用于旁路直播的输出视频的编解码规格 */
-typedef NS_ENUM(NSInteger, ARVideoCodecProfileType) {
-    /** 66:Baseline 级别的视频编码规格,一般用于低阶或需要额外容错的应用,比如视频通话、手机视频等。 */
-    ARVideoCodecProfileTypeBaseLine = 66,
-    /** 77:Main 级别的视频编码规格,一般用于主流消费类电子产品,如 mp4、便携的视频播放器、PSP 和 iPad 等。 */
-    ARVideoCodecProfileTypeMain = 77,
-    /** 100:(默认)High 级别的视频编码规格,一般用于广播及视频碟片存储,高清电视。 */
-    ARVideoCodecProfileTypeHigh = 100
-};
-
-/** 音频编码规格 */
-typedef NS_ENUM(NSInteger, ARAudioCodecProfileType) {
-    /** 0: (默认) LC-AAC 规格,表示基本音频编码规格。 */
-    ARAudioCodecProfileLCAAC = 0,
-    /** 1: HE-AAC 规格,表示高效音频编码规格。 */
-    ARAudioCodecProfileHEAAC = 1
-};
-
-/** 推流错误信息 */
-typedef NS_ENUM(NSUInteger, ARtmpStreamingErrorCode) {
-    /** 推流成功 */
-    ARtmpStreamingErrorCodeOK = 0,
-    /** 参数无效。请检查输入参数是否正确。例如如果你在调用 addPublishStreamUrl 前没有调用 setLiveTranscoding 设置转码参数,SDK 会返回该错误。 */
-    ARtmpStreamingErrorCodeInvalidParameters = 1,
-    /** 推流已加密,不能推流。*/
-    ARtmpStreamingErrorCodeEncryptedStreamNotAllowed = 2,
-    /** 推流超时未成功。可调用 addPublishStreamUrl 重新推流。 */
-    ARtmpStreamingErrorCodeConnectionTimeout = 3,
-    /** 推流服务器出现错误。请调用 addPublishStreamUrl 重新推流。 */
-    ARtmpStreamingErrorCodeInternalServerError = 4,
-    /** RTMP 服务器出现错误。 */
-    ARtmpStreamingErrorCodeRtmpServerError = 5,
-    /** 推流请求过于频繁。*/
-    ARtmpStreamingErrorCodeTooOften = 6,
-    /** 单个主播的推流地址数目达到上线 10。请删掉一些不用的推流地址再增加推流地址。*/
-    ARtmpStreamingErrorCodeReachLimit = 7,
-    /** 主播操作不属于自己的流。例如更新其他主播的流参数、停止其他主播的流。请检查 App 逻辑。*/
-    ARtmpStreamingErrorCodeNotAuthorized = 8,
-    /** 服务器未找到这个流。 */
-    ARtmpStreamingErrorCodeStreamNotFound = 9,
-    /** 推流地址格式有错误。请检查推流地址格式是否正确。*/
-    ARtmpStreamingErrorCodeFormatNotSupported = 10,
-};
-
-/** RTMP 推流时发生的事件。*/
-typedef NS_ENUM(NSUInteger, ARtmpStreamingEvent) {
-    /** RTMP 推流时,添加背景图或水印出错。*/
-    ARtmpStreamingEventFailedLoadImage = 1,
-};
-
-/** 推流状态 */
-typedef NS_ENUM(NSUInteger, ARtmpStreamingState) {
-    /** 推流未开始或已结束。成功调用 removePublishStreamUrl 方法删除推流地址后,也会返回该状态。*/
-    ARtmpStreamingStateIdle = 0,
-    /** 正在连接推流服务器和 RTMP 服务器。调用 addPublishStreamUrl 方法后,会返回该状态。 */
-    ARtmpStreamingStateConnecting = 1,
-    /** 推流正在进行。成功推流后,会返回该状态*/
-    ARtmpStreamingStateRunning = 2,
-    /** 正在恢复推流。当 CDN 出现异常,或推流短暂中断时,SDK 会自动尝试恢复推流,并返回该状态。
-   
-     - 如成功恢复推流,则进入状态 ARtmpStreamingStateRunning(2)。
-     如服务器出错或 60 秒内未成功恢复,则进入状态 ARtmpStreamingStateFailure(4)。如果觉得 60 秒太长,也可以主动调用 removePublishStreamUrl 和 addPublishStreamUrl 方法尝试重连。
-     */
-    ARtmpStreamingStateRecovering = 3,
-    /** 推流失败。失败后,你可以通过返回的错误码排查错误原因,也可以再次调用 addPublishStreamUrl 重新尝试推流。 */
-    ARtmpStreamingStateFailure = 4,
-};
-
-/** Last mile 质量探测结果的状态 */
-typedef NS_ENUM(NSUInteger, ARLastmileProbeResultState) {
-    /** 1: 表示本次 last mile 质量探测的结果是完整的 */
-    ARLastmileProbeResultComplete = 1,
-    /** 2: 表示本次 last mile 质量探测未进行带宽预测,因此结果不完整。一个可能的原因是测试资源暂时受限。*/
-    ARLastmileProbeResultIncompleteNoBwe = 2,
-    /** 3: 未进行 last mile 质量探测。一个可能的原因是网络连接中断。 */
-    ARLastmileProbeResultUnavailable = 3,
-};
-
-/** 屏幕共享的内容类型 */
-typedef NS_ENUM(NSUInteger, ARVideoContentHint) {
-    /** 0:(默认)无指定的内容类型 */
-    ARVideoContentHintNone = 0,
-    /** 1: 内容类型为动画。当共享的内容是视频、电影或视频游戏时,推荐选择该内容类型。 */
-    ARVideoContentHintMotion = 1,
-    /** 2: 内容类型为细节。当共享的内容是图片或文字时,推荐选择该内容类型。 */
-    ARVideoContentHintDetails = 2,
-};
-
-/** 媒体设备类型. */
-typedef NS_ENUM(NSInteger, ARMediaDeviceType) {
-    /** 未知设备 */
-    ARMediaDeviceTypeAudioUnknown = -1,
-    /** 音频播放设备 */
-    ARMediaDeviceTypeAudioPlayout = 0,
-    /** 音频采集设备 */
-    ARMediaDeviceTypeAudioRecording = 1,
-    /** 视频渲染设备 */
-    ARMediaDeviceTypeVideoRender = 2,
-    /** 视频采集设备 */
-    ARMediaDeviceTypeVideoCapture = 3,
-};
-
-/**
-推流模式。
- */
-typedef NS_ENUM(NSInteger, ARStreamPushMode) {
-    /**
-     0: 音频
-     */
-    ARStreamPushModeAudMix = 0,
-    /**
-     1: 视频。
-     */
-    ARStreamPushModeVidMix = 1
-};
-
-/**
-推流状态。
- */
-typedef NS_ENUM(NSInteger, ARStreamPushState) {
-    /**
-     0: 连建立网络连接中
-     */
-    ARStreamPushStateConnecting = 0,
-    /**
-     1: 连接失败
-     */
-    ARStreamPushStateLostConnection = 1,
-    /**
-     1: 重连中。
-     */
-    ARStreamPushStateReConnecting = 2,
-    /**
-     1: 连接失败。
-     */
-    ARStreamPushStateFailed = 3
-};
-
-/**
-推流原因。
- */
-typedef NS_ENUM(NSInteger, ARStreamPushReason) {
-    /**
-     0: 推流正常
-     */
-    ARStreamPushReasonOK = 0,
-    /**
-     1: 网络原因。
-     */
-    ARStreamPushReasonNetwork = 1,
-    /**
-     2: 推流超时
-     */
-    ARStreamPushReasonTimeout = 2,
-    /**
-     3: 推流身份
-     */
-    ARStreamPushReasonAuth = 3
-};
-
-/**
-用于直播推流的输出视频的编码规格
- */
-typedef NS_ENUM(NSInteger, ARStreamVideoCodeProfileType) {
-    /**
-     66: Baseline 级别的视频编码规格,一般用于低阶或需要额外容错的应用,比如视频通话、手机视频等。
-     */
-    ARStreamVideoCodeProfileTypeBaseline = 66,
-    /**
-     77: Main 级别的视频编码规格,一般用于主流消费类电子产品,如 mp4、便携的视频播放器、PSP 和 iPad 等
-     */
-    ARStreamVideoCodeProfileTypeMain = 77,
-    /**
-     100(默认): High 级别的视频编码规格,一般用于广播及视频碟片存储,高清电视。
-     */
-    ARStreamVideoCodeProfileTypehigh = 100
-};
-
-/**
-音频的采样率
- */
-typedef NS_ENUM(NSInteger, ARStreamAudioSampleRateType) {
-    /**
-     32 kHz
-     */
-    ARStreamAudioSampleRateType32000 = 32000,
-    /**
-     44.1 kHz
-     */
-    ARStreamAudioSampleRateType44100 = 44100,
-    /**
-     48 kHz
-     */
-    ARStreamAudioSampleRateType48000 = 48000
-};
-
-/**
-音频编码规格
- */
-typedef NS_ENUM(NSInteger, ARStreamAudioCodecProfileType) {
-    /**
-     0:LC-AAC 规格,表示基本音频编码规格。
-     */
-    ARStreamAudioCodecProfileLCAAC = 0,
-    /**
-     1:HE-AAC 规格,表示高效音频编码规格。
-     */
-    ARStreamAudioCodecProfileHEAAC = 1
-};
-
-/** 加密模式 */
-typedef NS_ENUM(NSInteger, AREncryptionMode) {
-    /* OpenSSL Encryption Mode Start */
-    /** 1: (默认)128 位 AES 加密,XTS 模式。 */
-    AREncryptionModeAES128XTS = 1,
-    /** 2: 128 位 AES 加密,ECB 模式。 */
-    AREncryptionModeAES128ECB = 2,
-    /** 3: 256 位 AES 加密,XTS 模式。 */
-    AREncryptionModeAES256XTS = 3,
-    /* OpenSSL Encryption Mode End */
-
-    /** 4: 128 位 SM4 加密,ECB 模式。*/
-    AREncryptionModeSM4128ECB = 4,
-    /** 枚举值边界 */
-    AREncryptionModeEnd,
-};
-
-/** 语音音效均衡波段的中心频率 */
-typedef NS_ENUM(NSInteger, ARAudioEqualizationBandFrequency) {
-    /** 31 Hz. */
-    ARAudioEqualizationBand31 = 0,
-    /** 62 Hz. */
-    ARAudioEqualizationBand62 = 1,
-    /** 125 Hz. */
-    ARAudioEqualizationBand125 = 2,
-    /** 250 Hz. */
-    ARAudioEqualizationBand250 = 3,
-    /** 500 Hz */
-    ARAudioEqualizationBand500 = 4,
-    /** 1 kHz. */
-    ARAudioEqualizationBand1K = 5,
-    /** 2 kHz. */
-    ARAudioEqualizationBand2K = 6,
-    /** 4 kHz. */
-    ARAudioEqualizationBand4K = 7,
-    /** 8 kHz. */
-    ARAudioEqualizationBand8K = 8,
-    /** 16 kHz. */
-    ARAudioEqualizationBand16K = 9,
-};
-
-/** 音频混响类型 */
-typedef NS_ENUM(NSInteger, ARAudioReverbType) {
-    /** 原始音频强度,即所谓的 dry signal,取值范围 [-20,10],单位为 dB */
-    ARAudioReverbDryLevel = 0,
-    /** 早期反射信号强度,即所谓的 wet signal,取值范围 [-20,10],单位为 dB */
-    ARAudioReverbWetLevel = 1,
-    /** 所需混响效果的房间尺寸,一般房间越大,混响越强,取值范围 [0,100] */
-    ARAudioReverbRoomSize = 2,
-    /** wet signal 的初始延迟长度,取值范围 [0,200],单位为 ms*/
-    ARAudioReverbWetDelay = 3,
-     /** 混响持续的强度,取值范围 [0,100] */
-    ARAudioReverbStrength = 4,
-};
-
-/** 本地语音变声、美音或语聊美声效果选项 */
-typedef NS_ENUM(NSInteger, ARAudioVoiceChanger) {
-    /** 原声,即关闭本地语音的变声、美音或语聊美声效果。*/
-    ARAudioVoiceChangerOff = 0x00000000,
-    /** 变声:老年男性 */
-    ARAudioVoiceChangerOldMan = 0x00000001,
-    /** 变声:小男孩 */
-    ARAudioVoiceChangerBabyBoy = 0x00000002,
-    /** 变声:小女孩 */
-    ARAudioVoiceChangerBabyGirl = 0x00000003,
-    /** 变声:猪八戒 */
-    ARAudioVoiceChangerZhuBaJie = 0x00000004,
-    /** 变声:空灵 */
-    ARAudioVoiceChangerEthereal = 0x00000005,
-    /** 变声:绿巨人 */
-    ARAudioVoiceChangerHulk = 0x00000006,
-    /** 美音:浑厚 */
-    ARAudioVoiceBeautyVigorous = 0x00100001,
-    /** 美音:低沉 */
-    ARAudioVoiceBeautyDeep = 0x00100002,
-    /** 美音:圆润 */
-    ARAudioVoiceBeautyMellow = 0x00100003,
-    /** 美音:假音 */
-    ARAudioVoiceBeautyFalsetto = 0x00100004,
-    /** 美音:饱满 */
-    ARAudioVoiceBeautyFull = 0x00100005,
-    /** 美音:清澈 */
-    ARAudioVoiceBeautyClear = 0x00100006,
-    /** 美音:高亢 */
-    ARAudioVoiceBeautyResounding = 0x00100007,
-    /** 美音:嘹亮 */
-    ARAudioVoiceBeautyRinging = 0x00100008,
-    /** 美音:空旷 */
-    ARAudioVoiceBeautySpacial = 0x00100009,
-    /** 语聊美声:磁性(男)。此枚举为男声定制化效果,不适用于女声。若女声使用此音效设置,则音频可能会产生失真。 */
-    ARAudioGeneralBeautyVoiceMaleMagnetic = 0x00200001,
-    /** 语聊美声:清新(女)。此枚举为女声定制化效果,不适用于男声。若男声使用此音效设置,则音频可能会产生失真。*/
-    ARAudioGeneralBeautyVoiceFemaleFresh = 0x00200002,
-    /** 语聊美声:活力(女)。此枚举为女声定制化效果,不适用于男声。若男声使用此音效设置,则音频可能会产生失真。 */
-    ARAudioGeneralBeautyVoiceFemaleVitality = 0x00200003,
-};
-
-/** 本地语音混响选项 */
-typedef NS_ENUM(NSInteger, ARAudioReverbPreset) {
-    /** 原声,即关闭本地语音混响。*/
-    ARAudioReverbPresetOff = 0x00000000,
-    /** KTV(增强版)  */
-    ARAudioReverbPresetFxKTV = 0x00100001,
-    /** 演唱会(增强版)*/
-    ARAudioReverbPresetFxVocalConcert = 0x00100002,
-    /** 大叔 */
-    ARAudioReverbPresetFxUncle = 0x00100003,
-    /** 小姐姐 */
-    ARAudioReverbPresetFxSister = 0x00100004,
-    /** 录音棚(增强版) */
-    ARAudioReverbPresetFxStudio = 0x00100005,
-    /** 流行(增强版) */
-    ARAudioReverbPresetFxPopular = 0x00100006,
-    /** R&B(增强版) */
-    ARAudioReverbPresetFxRNB = 0x00100007,
-    /** 留声机 */
-    ARAudioReverbPresetFxPhonograph = 0x00100008,
-    /** 流行 */
-    ARAudioReverbPresetPopular = 0x00000001,
-    /** R&B */
-    ARAudioReverbPresetRnB = 0x00000002,
-    /** 摇滚 */
-    ARAudioReverbPresetRock = 0x00000003,
-    /** 嘻哈 */
-    ARAudioReverbPresetHipHop = 0x00000004,
-    /** 演唱会  */
-    ARAudioReverbPresetVocalConcert = 0x00000005,
-    /** KTV */
-    ARAudioReverbPresetKTV = 0x00000006,
-    /** 录音棚 */
-    ARAudioReverbPresetStudio = 0x00000007,
-    /** 虚拟立体声。虚拟立体声是指将单声道的音轨渲染出立体声的效果,使频道内所有用户听到有空间感的声音效果。为达到更好的虚拟立体声效果,AR 推荐在调用该方法前将 setAudioProfile 的 profile 参数设置为 ARAudioProfileMusicHighQualityStereo(5)。*/
-    ARAudioReverbPresetVirtualStereo = 0x00200001
-};
-
-#endif /* AREnumerates_h */
diff --git a/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Headers/ARMediaIO.h b/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Headers/ARMediaIO.h
deleted file mode 100644
index 32dadce..0000000
--- a/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Headers/ARMediaIO.h
+++ /dev/null
@@ -1,224 +0,0 @@
-//
-//  ARMediaIO.h
-//  ARtcKit
-//
-//  Created by 余生丶 on 2020/6/15.
-//  Copyright © 2020 zjq. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-#import <AVFoundation/AVFoundation.h>
-#import "AREnumerates.h"
-
-/** 视频像素格式
-
- 关于 YVU 图像格式的描述,请参考:
- FourCC YUV 格式说明
- Recommended 8-Bit YUV Formats for Video Rendering
- */
-typedef NS_ENUM(NSUInteger, ARVideoPixelFormat) {
-    /** I420 */
-    ARVideoPixelFormatI420   = 1,
-    /** BGRA */
-    ARVideoPixelFormatBGRA   = 2,
-    /** NV12 */
-    ARVideoPixelFormatNV12   = 8,
-};
-
-/** 视频的顺时针旋转角度
-
-如果设置为其他数字,系统会自动忽略
- */
-typedef NS_ENUM(NSInteger, ARVideoRotation) {
-    /** 顺时针旋转 0 度 */
-    ARVideoRotationNone      = 0,
-    /** 顺时针旋转 90 度*/
-    ARVideoRotation90        = 1,
-    /** 顺时针旋转 180 度 */
-    ARVideoRotation180       = 2,
-    /** 顺时针旋转 270 度 */
-    ARVideoRotation270       = 3,
-};
-
-/**
- ARVideoFrameConsumer 支持接收两种 Buffer 类型的视频帧数据:PixelBuffer 和裸数据。 自定义视频源时,开发者需要通过 bufferType 来指定一种 Buffer 类型,并在自定义视频源中只使用与其对应的方法来传递视频帧数据。
-*/
-@protocol ARVideoFrameConsumer <NSObject>
-
-/** PixelBuffer 类型
-
- @param pixelBuffer PixelBuffer 类型的视频 Buffer
- @param timestamp   传入的视频帧的时间戳,开发者必须为每一个视频帧设置一个时间戳。
- @param rotation    视频的顺时针旋转角度, 详见 ARVideoRotation
- */
-- (void)consumePixelBuffer:(CVPixelBufferRef _Nonnull)pixelBuffer
-             withTimestamp:(CMTime)timestamp
-                  rotation:(ARVideoRotation)rotation;
-
-/** RawData 类型
-
- @param rawData   RawData 类型的视频 Buffer
- @param timestamp 传入的视频帧的时间戳,以毫秒为单位。
- @param format    ARVideoPixelFormat
- @param size      视频裸数据的尺寸
- @param rotation  视频的顺时针旋转角度, 详见 ARVideoRotation
- */
-- (void)consumeRawData:(void * _Nonnull)rawData
-         withTimestamp:(CMTime)timestamp
-                format:(ARVideoPixelFormat)format
-                  size:(CGSize)size
-              rotation:(ARVideoRotation)rotation;
-
-
-@end
-
-
-/** ARVideoSourceProtocol 协议
- 
- ARVideoSourceProtocol 定义了一套协议,开发者通过实现该接口,来创建自定义的视频源,并设置给 sdk 底层的 Media Engine
-
- 实时通讯过程中,SDK 通常会启动默认的视频输入设备,即内置的摄像头,进行视频推流。 使用 ARVideoSourceProtocol 接口可以自定义视频源。通过调用 设置视频源 setVideoSource 接口,可以改变并控制默认的视频输入设备,再将自定义的视频源发送给 Media Engine,让 Media Engine 进行其它视频处理,如过滤视频、将视频发布到 RTC 链接等。
- 
- */
-@protocol ARVideoSourceProtocol <NSObject>
-@required
-/** ARVideoFrameConsumer 协议,详见 ARVideoFrameConsumer */
-@property (strong) id<ARVideoFrameConsumer> _Nullable consumer;
-/** 初始化视频源
-
- Media Engine 在初始化视频源的时候会回调此方法。开发者可以在这个方法中做一些准备工作,例如打开 Camera,或者初始化视频源,并通过返回值告诉 Media Engine,自定义的视频源是否已经准备好。
-
-**Note**
- 
- 初始化视频源过程中,开发者需要在 bufferType 中指定一种 Buffer 类型,并在自定义视频源中只使用与其对应的方法来传递视频帧数据。
-
- 在初始化视频源过程中,Media Engine 会传递给开发者的一个 ARVideoFrameConsumer 对象。开发者需要保存该对象,并在视频源启动后,通过这个对象把视频帧输入给 Media Engine。
-
- 开发者需要手动输入 YES 或 NO,以告诉 Media Engine 自定义视频源是否已准备好。
-
- @return 初始化状态:
- * YES: 自定义的视频源已经完成了初始化工作
- * NO: 自定义的视频源设备没准备好或者初始化失败,Media Engine 会停下来并上报错误
- */
-- (BOOL)shouldInitialize;
-
-/** 启动视频源
-
- Media Engine 在启动视频源时会回调这个方法。开发者可以在该方法中启动视频帧捕捉。开发者需要通过返回值告诉告知 Media Engine 自定义的视频源是否开启成功。
-
- 开发者需要手动输入 YES 或 NO,以告诉 Media Engine 自定义视频源是否开启:
-
- * YES:自定义的视频源已成功开启,接下来会打开 ARVideoFrameConsumer 的开关,接收开发者传输的视频帧
- * NO:自定义的视频源设备启动失败,Media Engine 会停下来并上报错误
- */
-- (void)shouldStart;
-
-/** 停止视频源
-
- Media Engine 在停止视频源的时候会回调这个方法。开发者可以在这个方法中停止视频的采集。Media Engine 通过这个回调通知开发者,ARVideoFrameConsumer 的帧输入开关即将关闭,之后输入的视频帧都会被丢弃。
- */
-- (void)shouldStop;
-
-/** 释放视频源
-
-Media Engine 通知开发者视频源即将失效,开发者可以在这个方法中关闭视频源设备。引擎会销毁 ARVideoFrameConsumer 对象,开发者需要确保在此回调之后不再使用它。
- */
-- (void)shouldDispose;
-
-/** 获取 Buffer 类型
-
- Media Engine 在初始化的时候,会调用这个方法来查询该视频源所使用的 Buffer 类型。开发者必须指定且只能指定一种 Buffer 类型并通过返回值告诉 Media Engine
-
- @return ARVideoBufferType
- */
-- (ARVideoBufferType)bufferType;
-
-@end
-
-/** ARVideoSinkProtocol 协议
-
- ARVideoSinkProtocol 定义了一套协议,开发者通过实现该接口,来创建自定义的视频渲染器,并设置给底层的 Media Engine。
-
- 实时通讯过程中,SDK 通常会启动默认的视频渲染器进行视频渲染。 ARVideoSinkProtocol 可以自定义视频渲染器,再通过调用 设置本地视频渲染器 setLocalVideoRenderer 和 设置远端视频渲染器 setRemoteVideoRenderer 接口,改变并控制默认的视频渲染器。
-
- ARVideoSinkProtocol 由以下方法组成:
-
- - 初始化渲染器(shouldInitialize)
- - 启动渲染器 (shouldStart)
- - 停止渲染器 (shouldStop)
- - 释放渲染器 (shouldDispose)
- - 获取 Buffer 类型 (AgoraVideoBufferType)
- - 获取像素格式 (AgoraVideoPixelFormat)
- - (可选) 输出视频像素 Buffer (renderPixelBuffer)
- - (可选) 输出视频裸数据 (renderRawData)
- Note: ARVideoSinkProtocol 接口中定义的所有方法都是回调方法,Media Engine 内部维护着状态机,并使用这些方法将自定义视频源及渲染器的状态传给 Media Engine。因此请避免直接在 App 中直接调用这些接口。 下面这个例子给出了自定义 video sink 的步骤:
-
- - 调用 bufferType 和 AgoraVideoPixelFormat 方法设置视频帧的 Buffer 类型和像素格式。
- - 实现 shouldInitialize、shouldStart、shouldStop 和 shouldDispose 管理自定义的 Video Sink。
- - 根据 ARVideoFrameConsumer 实现 buffer 类型和像素格式。
- - 创建 ARVideoFrameConsumer 自定义的 Video Sink 对象。
- - 调用 setLocalVideoRenderer 和 setRemoteVideoRenderer 方法设置本地和远端视频渲染器。
- - Media Engine 会根据内部状态调用 ARVideoSinkProtocol 接口中的方法。
- */
-@protocol ARVideoSinkProtocol <NSObject>
-@required
-/** 初始化渲染器
-
- Media Engine 初始化渲染器的时候调用这个方法。开发者可以在这个方法中做渲染器的初始化工作。如果是耗时操作,也可以提前初始化好,然后在这个方法中通过返回值告知 Media Engine 自定义渲染器已初始化好。 该方法需要开发者手动输入 YES 或 NO,告知 Media Engine 自定义渲染器的状态。
-
- @return - YES: Media Engine 会认为自定义的渲染器已经初始化好
- - NO: Media Engine 会认为自定义的渲染器初始化失败,不继续往下运行
- */
-- (BOOL)shouldInitialize;
-
-/** 启动渲染器
-
- Media Engine 在开启渲染功能的时候会回调这个方法。开发者可以在这个方法中启动渲染器。 该方法需要开发者手动输入 YES 或 NO,Media Engine 会根据输入值做对应的动作:
-
- - YES: Media Engine 继续进行渲染
- - NO:Media Engine 认为出错而停止渲染器的功能
- */
-- (void)shouldStart;
-
-/** 停止渲染器
-
- Media Engine 在停止渲染功能的时候会回调这个方法。开发者可以在这个方法中停止渲染。
- */
-- (void)shouldStop;
-
-/** 释放渲染器
-
- Media Engine 通知开发者渲染器即将被废弃。在 shouldDispose 返回之后,开发者就可以释放掉资源了。
- */
-- (void)shouldDispose;
-
-/** 获取 Buffer 类型
- 
- 用于在自定义渲染器的时候,需要指定 Buffer 类型,通过返回值告知引擎。Media Engine 会调用这个方法并检查返回值类型。
-
- @return  Buffer 类型
- */
-- (ARVideoBufferType)bufferType;
-
-/** 获取像素格式
-
- @return 用于自定义渲染器的时候,还需要指定视频数据的像素格式。
- */
-- (ARVideoPixelFormat)pixelFormat;
-
-@optional
-/** (可选)输出视频的 PixelBuffer
-
- @param pixelBuffer 视频的 PixelBuffer
- @param rotation   视频像素的顺时针旋转角度, ARVideoRotation
- */
-- (void)renderPixelBuffer:(CVPixelBufferRef _Nonnull)pixelBuffer rotation:(ARVideoRotation)rotation;
-
-/** 输出视频裸数据
-
- @param rawData RawData 格式的视频
- @param size     视频的尺寸
- @param rotation 视频的顺时针旋转角度, ARVideoRotation
- */
-- (void)renderRawData:(void * _Nonnull)rawData size:(CGSize)size rotation:(ARVideoRotation)rotation;
-@end
diff --git a/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Headers/ARMediaPlayerKit.h b/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Headers/ARMediaPlayerKit.h
deleted file mode 100644
index 89bb23d..0000000
--- a/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Headers/ARMediaPlayerKit.h
+++ /dev/null
@@ -1,413 +0,0 @@
-//
-//  ARMediaPlayerKit.h
-//  ARtcKit
-//
-//  Created by 余生丶 on 2020/11/2.
-//  Copyright © 2020 zjq. All rights reserved.
-//
-
-#import <AudioToolbox/AudioToolbox.h>
-#import <Foundation/Foundation.h>
-#import <VideoToolbox/VideoToolbox.h>
-#if TARGET_OS_IPHONE
-#import <UIKit/UIKit.h>
-typedef UIView View;
-#elif TARGET_OS_MAC
-#import <AppKit/AppKit.h>
-typedef NSView View;
-#endif
-NS_ASSUME_NONNULL_BEGIN
-
-// external key
-/**
- * set analyze duration for real time stream
- * @example "setPlayerOption(kMediaPlayerRealTimeStreamAnalyzeDuration,1000000)"
- */
-#define kMediaPlayerRealTimeStreamAnalyzeDuration    @"analyzeduration"
-
-/**
- * 设置播放器禁用播放音频
- * @example  "setPlayerOption(kMediaPlayerDisableAudio,0)"
- */
-#define kMediaPlayerDisableAudio                 @"audio_disable"
-
-/**
- * 设置播放器禁用播放视频
- * @example  "setPlayerOption(kMediaPlayerDisableVideo,0)"
- */
-#define kMediaPlayerDisableVideo                  @"video_disable"
-
-
-typedef NS_ENUM(NSInteger, ARMediaPlayerSpeed) {
-    /** origin playback speed
-     */
-    ARMediaPlayerSpeedDefault = 100,
-    /** playback speed slow down to 0.75
-     */
-    ARMediaPlayerSpeed75Percent = 75,
-    /** playback speed slow down to 0.5
-     */
-    ARMediaPlayerSpeed50Percent = 50,
-    /** playback speed speed up to 1.25
-     */
-    ARMediaPlayerSpeed125Percent = 125,
-    /** playback speed speed up to 1.5
-     */
-    ARMediaPlayerSpeed150Percent = 150,
-      /** playback speed speed up to 2.0
-     */
-    ARMediaPlayerSpeed200Percent = 200,
-
-};
-/** ARMediaPlayerState,播放器的状态 */
-typedef NS_ENUM(NSInteger, ARMediaPlayerState) {
-    /** 0: 默认状态 */
-    ARMediaPlayerStateIdle = 0,
-    /** 1: 正在打开媒体文件 */
-    ARMediaPlayerStateOpening = 1,
-    /** 2: 成功打开媒体文件 */
-    ARMediaPlayerStateOpenCompleted = 2,
-    /** 3: 正在播放 */
-    ARMediaPlayerStatePlaying = 3,
-    /** 4: 暂停播放 */
-    ARMediaPlayerStatePaused = 4,
-    /** 5: 播放完毕 */
-    ARMediaPlayerStatePlayBackCompleted = 5,
-    /** 6: 停止播放 */
-    ARMediaPlayerStateStopped = 6,
-    /** 100: 播放失败 */
-    ARMediaPlayerStateFailed = 100,
-};
-/** ARMediaPlayerError,播放器的错误码 */
-typedef NS_ENUM(NSInteger, ARMediaPlayerError) {
-    /** 0: 没有错误 */
-    ARMediaPlayerErrorNone = 0,
-    /** -1: 不正确的参数 */
-    ARMediaPlayerErrorInvalidArguments = -1,
-    /** -2: 内部错误 */
-    ARMediaPlayerErrorInternal = -2,
-    /** -3: 没有 resource */
-    ARMediaPlayerErrorNoSource = -3,
-    /** -4: 无效的 resource */
-    ARMediaPlayerErrorInvalidMediaSource = -4,
-    /** -5: 未知的媒体流类型 */
-    ARMediaPlayerErrorUnknowStreamType = -5,
-    /** -6: 对象没有初始化 */
-    ARMediaPlayerErrorObjNotInitialized = -6,
-    /** -7: 解码器不支持该 codec */
-    ARMediaPlayerErrorCodecNotSupported = -7,
-    /** -8: 无效的 renderer */
-    ARMediaPlayerErrorVideoRenderFailed = -8,
-    /** -9: 播放器内部状态错误 */
-    ARMediaPlayerErrorInvalidState = -9,
-    /** -10: 未找到该 URL */
-    ARMediaPlayerErrorUrlNotFound = -10,
-    /** -11: 播放器与服务器的连接无效 */
-    ARMediaPlayerErrorInvalidConnectState = -11,
-    /** -12: 播放缓冲区数据不足 */
-    ARMediaPlayerErrorSrcBufferUnderflow = -12,
-};
-/** ARMediaPlayerEvent,播放器的事件
- */
-typedef NS_ENUM(NSInteger, ARMediaPlayerEvent) {
-    /** 0: 开始定位 */
-    ARMediaPlayerEventSeekBegin = 0,
-    /** 1: 完成定位 */
-    ARMediaPlayerEventSeekComplete = 1,
-    /** 2: 定位出错 */
-    ARMediaPlayerEventSeekError = 2,
-};
-
-/**
- * ARMediaPlayerMetaDataType, 媒体附属信息数据类型
- */
-typedef NS_ENUM(NSUInteger, ARMediaPlayerMetaDataType) {
-    /** 0: 未知类型 */
-    ARMediaPlayerMetaDataTypeUnknown = 0,
-    /** 1: SEI(补充增强信息)类型 */
-    ARMediaPlayerMetaDataTypeSEI = 1,
-};
-
-/** ARMediaPixelFormat, reporting the pixel format of the video stream. */
-typedef NS_ENUM(NSInteger, ARMediaPixelFormat) {
-    /** `0`: The format is known.
-    */
-    ARMediaPixelFormatUnknown = 0,
-    /** `1`: The format is I420.
-    */
-    ARMediaPixelFormatI420 = 1,
-    /** `2`: The format is BGRA.
-    */
-    ARMediaPixelFormatBGRA = 2,
-    /** `3`: The format is Planar YUV422.
-    */
-    ARMediaPixelFormatI422 = 3,
-    /** `8`: The format is NV12.
-     */
-    ARMediaPixelFormatNV12 = 8,
-};
-/** ARMediaStreamType,媒体流的类型 */
-typedef NS_ENUM(NSInteger, ARMediaStreamType) {
-    /** 0: 未知类型 */
-    ARMediaStreamTypeUnknow = 0,
-    /** 1: 视频流 */
-    ARMediaStreamTypeVideo = 1,
-    /** 2: 音频流 */
-    ARMediaStreamTypeAudio = 2,
-    /** 3: 字幕流 */
-    ARMediaStreamTypeSubtitle = 3,
-};
-/** ARMediaPlayerRenderMode, 播放器视图的渲染模式 */
-typedef NS_ENUM(NSUInteger, ARMediaPlayerRenderMode) {
-    /** 1: 视频尺寸等比缩放,优先保证视窗被填满,因视频尺寸与显示视窗尺寸不一致而多出的视频将被截掉。
-     */
-    ARMediaPlayerRenderModeHidden = 1,
-
-    /** 2: 视频尺寸等比缩放,优先保证视频内容全部显示,因视频尺寸与显示视窗尺寸不一致造成的视窗未被填满的区域填充黑色。
-     */
-    ARMediaPlayerRenderModeFit = 2,
-};
-@class ARMediaPlayer;
-
-@class ARMediaStreamInfo;
-
-/** MediaPlayer 会通过代理方法 ARMediaPlayerDelegate 向 App 上报一些运行时的事件。 */
-@protocol ARMediaPlayerDelegate <NSObject>
-
-@optional
-
-/** 报告播放器状态改变
- 
- 当播放器状态改变时,SDK 会触发该回调,向你报告新的播放状态。
-
- @param playerKit ARMediaPlayer
-
- @param state 新的播放状态,详见 ARMediaPlayerState
-
- @param error 播放器错误码,详见 ARMediaPlayerError
- */
-- (void)rtcMediaPlayer:(ARMediaPlayer *_Nonnull)playerKit
-       didChangedToState:(ARMediaPlayerState)state
-                   error:(ARMediaPlayerError)error;
-
-/** 报告当前播放进度
-   
- 播放媒体文件时,SDK 每隔 1 秒会自动触发该回调,向你报告当前播放进度。
-
- @param playerKit ARMediaPlayer
-
- @param position 当前播放进度 (秒)
- */
-- (void)rtcMediaPlayer:(ARMediaPlayer *_Nonnull)playerKit
-    didChangedToPosition:(NSInteger)position;
-
-/** 报告定位播放的结果
-
- @param playerKit ARMediaPlayer
-
- @param event 定位播放的结果,详见 ARMediaPlayerEvent
- */
-- (void)rtcMediaPlayer:(ARMediaPlayer *_Nonnull)playerKit
-          didOccurEvent:(ARMediaPlayerEvent)event;
-
-/** 报告已获取媒体附属信息
-
- 当获取到媒体附属信息时,SDK 会触发该回调,向你报告媒体附属信息的数据类型和具体数据。
-
- @param playerKit ARMediaPlayer
-
- @param type 媒体附属信息数据类型,详见 ARMediaPlayerMetaDataType
-
- @param data 具体数据,用户自定义格式数据
-
- @param length 数据长度(字节)
- */
-- (void)rtcMediaPlayer:(ARMediaPlayer *_Nonnull)playerKit
-            metaDataType:(ARMediaPlayerMetaDataType) type
-          didReceiveData:(NSString *)data
-                  length:(NSInteger)length;
-/** 已获取视频帧回调
-
- 每次接收到一帧视频帧时,都会触发该回调,报告视频帧信息。
-
- @param playerKit ARMediaPlayer
-
- @param pixelBuffer 视频帧信息
- */
-- (void)rtcMediaPlayer:(ARMediaPlayer *_Nonnull)playerKit
-    didReceiveVideoFrame:(CVPixelBufferRef)pixelBuffer;
-/** 已获取音频帧回调
-
- 每次接收到一帧音频帧时,都会触发该回调,报告音频帧信息。
-
- @param playerKit ARMediaPlayer
-
- @param audioFrame 音频帧信息
- */
-- (void)rtcMediaPlayer:(ARMediaPlayer *_Nonnull)playerKit
-    didReceiveAudioFrame:(CMSampleBufferRef)audioFrame;
-
-@end
-
-/** ARMediaStreamInfo 类,包含媒体流的所有信息
- */
-__attribute__((visibility("default"))) @interface ARMediaStreamInfo : NSObject
-/** 此条媒体流的索引值 */
-@property(nonatomic, assign) NSInteger streamIndex;
-/** 此条媒体流的类型,详见 ARMediaStreamType */
-@property(nonatomic, assign) ARMediaStreamType streamType;
-/** 此条媒体流的编码规格 */
-@property(nonatomic, copy) NSString *_Nonnull codecName;
-/** 此条媒体流的语言 */
-@property(nonatomic, copy) NSString *_Nullable language;
-/** 如果此条媒体流是视频流,获取它的视频帧率 (fps) */
-@property(nonatomic, assign) NSInteger videoFrameRate;
-/** 如果此条媒体流是视频流,获取它的视频码率 (bps) */
-@property(nonatomic, assign) NSInteger videoBitRate;
-/** 如果此条媒体流是视频流,获取它的视频宽度 (pixel) */
-@property(nonatomic, assign) NSInteger videoWidth;
-/** 如果此条媒体流是视频流,获取它的视频高度 (pixel) */
-@property(nonatomic, assign) NSInteger videoHeight;
-/** 如果此条媒体流是音频流,获取它的音频采样率 (Hz) */
-@property(nonatomic, assign) NSInteger audioSampleRate;
-/** 如果此条媒体流是音频流,获取它的声道数 */
-@property(nonatomic, assign) NSInteger audioChannels;
-/** 此条媒体流的时长 (秒) */
-@property(nonatomic, assign) NSInteger duration;
-/** 如果此条媒体流是视频流,获取它的旋转角度 */
-@property(nonatomic, assign) NSInteger rotation;
-
-@end
-
-/** 媒体播放器组件 */
-__attribute__((visibility("default"))) @interface ARMediaPlayer : NSObject
-/** 是否静音:
-
-* YES: 静音
-* NO: 不静音
-*/
-@property(nonatomic, assign) BOOL mute;
-/** 本地播放音量。取值范围 0 到 100。 0 为无声,100 为媒体资源的原始音量。 */
-@property(nonatomic, assign) NSInteger volume;
-/** 播放状态,详见 ARMediaPlayerState*/
-@property(nonatomic, readonly) ARMediaPlayerState state;
-@property(nonatomic, weak) id<ARMediaPlayerDelegate> _Nullable delegate;
-/** 初始化一个 ARMediaPlayer 实例
-
- @param delegate ARMediaPlayerDelegate
-
- @return 一个 ARMediaPlayer 实例
- */
-- (instancetype)initWithDelegate:(id<ARMediaPlayerDelegate>)delegate;
-
-/** 设置播放器的渲染视图
-
- @param view 视频渲染视图
- */
-- (void)setView:(View *_Nullable)view;
-
-/** 设置播放器视图的渲染模式
-
- @param mode 播放器视图的渲染模式,详见 ARMediaPlayerRenderMode
- */
-- (void)setRenderMode:(ARMediaPlayerRenderMode)mode;
-
-/** 打开媒体文件
-
- @param url 设置媒体文件的路径,本地路径或网络路径
-
- @param startPos 设置起始播放位置 (s),默认值为 0
- */
-- (void)open:(NSString *)url startPos:(NSInteger)startPos;
-
-/** 播放媒体文件
-
- 打开 (open) 媒体文件或暂停 (pause 播放媒体文件后,你可以调用该方法播放媒体文件。
- */
-- (void)play;
-
-/** 暂停播放
-
- 如果你想恢复播放,请调用 play() 方法。
- */
-- (void)pause;
-
-/** 停止播放
- */
-- (void)stop;
-
-/** 从指定的位置播放媒体文件
-
- 成功调用该方法后,将收到didOccurEvent回调。
- @param position 指定的位置 (s)
- */
-- (void)seekToPosition:(NSInteger)position;
-
-/** 设置是否静音
- @param isMute 静音选项:
-
- * YES: 静音
- * NO: (默认)不静音
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)mute:(bool)isMute;
-
-/** 获取当前的静音状态
- @return 方法调用成功,返回:
-  - YES: 静音
-  - NO: (默认)不静音
- * 方法调用失败,返回 NO
- */
-- (bool)getMute;
-
-/** 调节本地播放音量
- @param volume 本地播放音量,取值范围从 0 到 100: - 0: 无声 - 100: (默认)媒体文件的原始播放音量
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)adjustVolume:(int)volume;
-
-/** 获取当前播放进度
- @return < 0: 方法调用失败,详见 ARMediaPlayerError
- * 其它:播放进度 (s)
- */
-- (NSInteger)getPosition;
-
-/** 获取媒体文件总时长
- @return < 0: 方法调用失败,详见 ARMediaPlayerError
- * 其它:媒体文件总时长 (s)
- */
-- (NSInteger)getDuration;
-
-/** 获取播放器当前状态
-
- @return 方法调用成功,返回播放器当前状态 详见 ARMediaPlayerState
- * 方法调用失败,返回 nil
- */
-- (ARMediaPlayerState)getPlayerState;
-
-/** 获取该媒体文件中媒体流的数量
-
- @return < 0: 方法调用失败,详见 ARMediaPlayerError
- * 其它:该媒体文件中媒体流的数量
- */
-- (NSInteger)getStreamCount;
-
-/** 通过此条媒体流的索引值获取媒体流信息
-
- @param index 媒体流索引值
-
- @return 方法调用成功,返回媒体流信息,详见 ARMediaStreamInfo
- * 方法调用失败,返回 nil
- */
-- (ARMediaStreamInfo *_Nullable)getStreamByIndex:(int)index;
-
-/** 销毁 ARMediaPlayerKit 实例
-
- 调用该方法后,你将无法再使用 Player 提供的其他 API。如果你需要重新使用 Player, 你需要调用 initWithDelegate 方法,重新创建一个 ARMediaPlayerKit 实例。
- */
-- (void)destroy;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Headers/ARObjects.h b/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Headers/ARObjects.h
deleted file mode 100644
index fce516a..0000000
--- a/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Headers/ARObjects.h
+++ /dev/null
@@ -1,1095 +0,0 @@
-//
-//  ARObjects.h
-//  ARtcKit
-//
-//  Created by 余生丶 on 2020/3/20.
-//  Copyright © 2020 zjq. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-#import <CoreMedia/CoreMedia.h>
-#import "AREnumerates.h"
-
-#if TARGET_OS_IPHONE
-#import <UIKit/UIKit.h>
-typedef UIView VIEW_CLASS;
-typedef UIColor COLOR_CLASS;
-typedef CGSize SIZE_CLASS;
-typedef CGPoint POINT_CLASS;
-#elif TARGET_OS_MAC
-#import <AppKit/AppKit.h>
-typedef NSView VIEW_CLASS;
-typedef NSColor COLOR_CLASS;
-typedef NSSize SIZE_CLASS;
-typedef NSPoint POINT_CLASS;
-#endif
-
-/** 视频画布对象的属性
-*/
-__attribute__((visibility("default"))) @interface ARtcVideoCanvas : NSObject
-
-/**
- 视频显示视窗
- 
- VIEW_CLASS 为统称,具体为:
- - iOS: UIView
- - MacOS: NSView
- */
-@property (strong, nonatomic) VIEW_CLASS* _Nullable view;
-/** 视频显示模式*/
-@property (assign, nonatomic) ARVideoRenderMode renderMode;
-
-/**
- * 频道id
- * 0 ~ 9
- * a ~ z A ~Z
- * "!", "#", "$", "%", "&", "(", ")", "+", "-", ":", ";", "<", "=", ".", ">", "?", "@", "[", "]", "^", "_", "{", "}", "|", "~", ",".
- 
-** Note **
- * 该参数默认值为空字符 ""。如果用户是通过 ARtcEngineKit 类的 joinChannelByToken 方法加入频道的,则将参数设为默认值,表示该用户在频道内的渲染视图。
- * 如果用户是通过 ARtcChannel 类的 joinChannelByToken 方法加入频道的,则将该参数设为该 ARtcChannel 类对应的 channelId,表示该用户在该 channelId 对应频道内的渲染视图。
-*/
-@property (copy, nonatomic) NSString * _Nullable channelId;
-/** 用户id */
-@property (copy, nonatomic) NSString * _Nonnull uid;
-/** 视图镜像模式,详见 ARVideoMirrorMode
- 
- **Note**:
-  
- * 本地视图镜像模式:如果你使用前置摄像头,默认启动本地视图镜像模式;如果你使用后置摄像头,默认关闭本地视图镜像模式。
- * 远端用户视图镜像模式:默认关闭远端用户的镜像模式。
- */
-@property (assign, nonatomic) ARVideoMirrorMode mirrorMode;
-
-@end
-
-
-/** 通话相关的统计信息
-*/
-__attribute__((visibility("default"))) @interface ARChannelStats : NSObject
-
-/** 通话时长,单位为秒,累计值
- */
-@property (assign, nonatomic) NSInteger duration;
-/** 音视频总发送字节数 (bytes),累计值
- */
-@property (assign, nonatomic) NSInteger txBytes;
-/** 音视频总接收字节数 (bytes),累计值
- */
-@property (assign, nonatomic) NSInteger rxBytes;
-/** 音频发送字节数(bytes),累计值
- */
-@property (assign, nonatomic) NSInteger txAudioBytes;
-/** 视频发送字节数(bytes),累计值
- */
-@property (assign, nonatomic) NSInteger txVideoBytes;
-/** 音频接收字节数(bytes),累计值
- */
-@property (assign, nonatomic) NSInteger rxAudioBytes;
-/** 视频接收字节数(bytes),累计值
- */
-@property (assign, nonatomic) NSInteger rxVideoBytes;
-/** 音视频总发送码率(Kbps),瞬时值
- */
-@property (assign, nonatomic) NSInteger txKBitrate;
-/** 音视频总接收码率(Kbps),瞬时值
- */
-@property (assign, nonatomic) NSInteger rxKBitrate;
-/** 音频发送码率 (Kbps),瞬时值
- */
-@property (assign, nonatomic) NSInteger txAudioKBitrate;
-/** 音频接收码率 (Kbps),瞬时值
- */
-@property (assign, nonatomic) NSInteger rxAudioKBitrate;
-/** 视频发送码率 (Kbps),瞬时值
- */
-@property (assign, nonatomic) NSInteger txVideoKBitrate;
-/** 视频接收码率 (Kbps),瞬时值
- */
-@property (assign, nonatomic) NSInteger rxVideoKBitrate;
-/** Last mile 的延迟(ms)
- */
-@property (assign, nonatomic) NSInteger lastmileDelay;
-/** 使用抗丢包技术前,本地客户端到边缘服务器的丢包率,单位为 %
- */
-@property (assign, nonatomic) NSInteger txPacketLossRate;
-/** 使用抗丢包技术前,边缘服务器到本地客户端的丢包率,单位为 %
- */
-@property (assign, nonatomic) NSInteger rxPacketLossRate;
-/** 当前频道内的用户人数
-
- * 通信场景下,当前频道内的用户人数。
- * 直播场景下,如果本地用户为观众,为频道内的主播人数 + 1;如果本地用户为主播,为频道内的主播人数。
- */
-@property (assign, nonatomic) NSInteger userCount;
-/** 当前 App 的 CPU 使用率 (%)
- */
-@property (assign, nonatomic) double cpuAppUsage;
-/** 当前系统的 CPU 使用率 (%)
- */
-@property (assign, nonatomic) double cpuTotalUsage;
-/** 客户端到本地路由器的往返时延 (ms)
- */
-@property (assign, nonatomic) NSInteger gatewayRtt;
-/** 当前 App 的内存占比 (%)
- 
-**Note**
- 
-该值仅作参考。受系统限制可能无法获取。
- */
-@property (assign, nonatomic) double memoryAppUsageRatio;
-/** 当前系统的内存占比 (%)
-
-**Note**
-
- 该值仅作参考。受系统限制可能无法获取。
- */
-@property (assign, nonatomic) double memoryTotalUsageRatio;
-/** 当前 App 的内存大小 (KB)
-
-**Note**
- 
- 该值仅作参考。受系统限制可能无法获取。
- */
-@property (assign, nonatomic) NSInteger memoryAppUsageInKbytes;
-
-@end
-
-/** 视频编码器配置的属性 */
-__attribute__((visibility("default"))) @interface ARVideoEncoderConfiguration : NSObject
-
-/** 视频编码的分辨率 (px),用于衡量编码质量,以长x宽表示,默认值为 640 x 480。
- 
- 用户可以自行设置分辨率,也可以在如下列表中直接选择想要的分辨率:
- 
- - ARVideoDimension120x120
- - ARVideoDimension160x120
- - ARVideoDimension180x180
- - ARVideoDimension240x180
- - ARVideoDimension320x180
- - ARVideoDimension240x240
- - ARVideoDimension320x240
- - ARVideoDimension424x240
- - ARVideoDimension360x360
- - ARVideoDimension480x360
- - ARVideoDimension640x360
- - ARVideoDimension480x480
- - ARVideoDimension640x480
- - ARVideoDimension840x480
- - ARVideoDimension960x720
- - ARVideoDimension1280x720
- - ARVideoDimension1920x1080 (macOS only)
- - ARVideoDimension2540x1440 (macOS only)
- - ARVideoDimension3840x2160 (macOS only)
-
-**Note**
-
- * 该值不代表最终视频输出的方向。请查阅 ARVideoOutputOrientationMode 了解设置视频方向
- * 视频能否达到 720P 的分辨率取决于设备的性能,在性能配备较低的设备上有可能无法实现。如果采用 720P 分辨率而设备性能跟不上,则有可能出现帧率过低的情况。
- * iPhone 不支持 720P 以上的分辨率。
- */
-
-@property (assign, nonatomic) CGSize dimensions;
-
-/** 视频编码的帧率(fps)
-
-用户可以自行设置帧率,也可以在如下列表中直接选择想要的帧率。默认值为 15 帧。建议不要超过 30 帧。
-
- *  ARVideoFrameRateFps1(1): 1 fps
- *  ARVideoFrameRateFps7(7): 7 fps
- *  ARVideoFrameRateFps10(10): 10 fps
- *  ARVideoFrameRateFps15(15): 15 fps
- *  ARVideoFrameRateFps24(24): 24 fps
- *  ARVideoFrameRateFps30(30): 30 fps
- *  ARVideoFrameRateFps60(30): 60 fps (macOS only)
-*/
-@property (assign, nonatomic) NSInteger frameRate;
-
-/** 最低视频编码帧率(fps)
-
-单位为 fps,默认值为 -1,表示使用系统默认的最低编码帧率。关于该参数的适用场景及注意事项,请参考 设置视频属性(iOS) 或 设置视频属性(macOS)。
-*/
-@property (assign, nonatomic) NSInteger minFrameRate;
-
-/** 视频编码的码率
-
- 该参数设置视频编码码率,单位为 Kbps。你可以根据场景需要,参考下表,手动设置你想要的码率。若设置的视频码率超出合理范围,SDK 会自动按照合理区间处理码率。你也可以直接选择如下任意一种模式进行设置:
-
- ARVideoBitrateStandard: (推荐)标准码率模式。该模式下,视频在通信和直播场景下的码率有所不同:通信场景下,码率与基准码率一致;直播场景下,码率对照基准码率翻倍。
- ARVideoBitrateCompatible: 适配码率模式。该模式下,视频在通信和直播场景下的码率均与基准码率一致。直播下如果选择该场景,视频帧率可能会低于设置的值。
- 在通信和直播场景下采用不同的编码方式,以提升不同场景下的用户体验。通信场景保证流畅,而直播场景则更注重画面质量,因此直播场景对码率的需求大于通信场景。所以推荐将该参数设置为 ARVideoBitrateStandard。
-
-**视频码率参考表**
-
-| Resolution            | Frame Rate (fps)     | Base Bitrate (Kbps, for Communication)     | Live Bitrate (Kbps, for Live Broadcast)     |
-|-------------------    |------------------    |----------------------------------------    |-----------------------------------------    |
-| 160 &times; 120       | 15                   | 65                                         | 130                                         |
-| 120 &times; 120       | 15                   | 50                                         | 100                                         |
-| 320 &times; 180       | 15                   | 140                                        | 280                                         |
-| 180 &times; 180       | 15                   | 100                                        | 200                                         |
-| 240 &times; 180       | 15                   | 120                                        | 240                                         |
-| 320 &times; 240       | 15                   | 200                                        | 400                                         |
-| 240 &times; 240       | 15                   | 140                                        | 280                                         |
-| 424 &times; 240       | 15                   | 220                                        | 440                                         |
-| 640 &times; 360       | 15                   | 400                                        | 800                                         |
-| 360 &times; 360       | 15                   | 260                                        | 520                                         |
-| 640 &times; 360       | 30                   | 600                                        | 1200                                        |
-| 360 &times; 360       | 30                   | 400                                        | 800                                         |
-| 480 &times; 360       | 15                   | 320                                        | 640                                         |
-| 480 &times; 360       | 30                   | 490                                        | 980                                         |
-| 640 &times; 480       | 15                   | 500                                        | 1000                                        |
-| 480 &times; 480       | 15                   | 400                                        | 800                                         |
-| 640 &times; 480       | 30                   | 750                                        | 1500                                        |
-| 480 &times; 480       | 30                   | 600                                        | 1200                                        |
-| 848 &times; 480       | 15                   | 610                                        | 1220                                        |
-| 848 &times; 480       | 30                   | 930                                        | 1860                                        |
-| 640 &times; 480       | 10                   | 400                                        | 800                                         |
-| 1280 &times; 720      | 15                   | 1130                                       | 2260                                        |
-| 1280 &times; 720      | 30                   | 1710                                       | 3420                                        |
-| 960 &times; 720       | 15                   | 910                                        | 1820                                        |
-| 960 &times; 720       | 30                   | 1380                                       | 2760                                        |
-| 1920 &times; 1080     | 15                   | 2080                                       | 4160                                        |
-| 1920 &times; 1080     | 30                   | 3150                                       | 6300                                        |
-| 1920 &times; 1080     | 60                   | 4780                                       | 6500                                        |
-| 2560 &times; 1440     | 30                   | 4850                                       | 6500                                        |
-| 2560 &times; 1440     | 60                   | 6500                                       | 6500                                        |
-| 3840 &times; 2160     | 30                   | 6500                                       | 6500                                        |
-| 3840 &times; 2160     | 60                   | 6500                                       | 6500                                        |
-
-
-**Note**
-
-该表中的基准码率适用于通信场景。直播场景下通常需要较大码率来提升视频质量。推荐通过设置 ARVideoBitrateStandard 模式来实现。你也可以直接将码率值设为基准码率值 x 2。
-*/
-@property (assign, nonatomic) NSInteger bitrate;
-
-/** 最低编码码率
-
-该参数设置最低编码码率,单位为 Kbps。
-
-SDK会根据网络状况自动调整视频编码码率。将参数设为高于默认值可强制视频编码器输出高质量图片,但在网络状况不佳的情况下可能导致网络丢包并影响视频播放的流畅度造成卡顿。因此如非对画质有特殊需求,建议不要修改该参数的值。
-
-**Note**
- 
-该参数仅适用于直播场景。
- */
-@property (assign, nonatomic) NSInteger minBitrate;
-
-/** 视频编码的方向模式
-
- * ARVideoOutputOrientationModeAdaptative(0): (默认)该模式下 SDK 输出的视频方向与采集到的视频方向一致。接收端会根据收到的视频旋转信息对视频进行旋转。该模式适用于接收端可以调整视频方向的场景:
-   - 如果采集的视频是横屏模式,则输出的视频也是横屏模式。
-   - 如果采集的视频是竖屏模式,则输出的视频也是竖屏模式。
- * ARVideoOutputOrientationModeFixedLandscape(1): 该模式下 SDK 固定输出风景(横屏)模式的视频。如果采集到的视频是竖屏模式,则视频编码器会对其进行裁剪。该模式适用于当接收端无法调整视频方向时,如使用旁路推流场景下。
- * ARVideoOutputOrientationModeFixedPortrait(2): 该模式下 SDK 固定输出人像(竖屏)模式的视频,如果采集到的视频是横屏模式,则视频编码器会对其进行裁剪。该模式适用于当接收端无法调整视频方向时,如使用旁路推流场景下。
- */
-@property (assign, nonatomic) ARVideoOutputOrientationMode orientationMode;
-
-/** 带宽受限时的视频编码降级偏好
-
-ARDegradationPreference,有如下选项:
-
- * ARDegradationMaintainQuality(0):(默认)降低编码帧率以保证视频质量
- * ARDegradationMaintainFramerate(1):降低视频质量以保证编码帧率
- * ARDegradationMaintainFramerate(2):(预留参数,暂不支持)在编码帧率和视频质量之间保持平衡。
-*/
-@property (assign, nonatomic) ARDegradationPreference degradationPreference;
-
-/** 设置本地发送视频的镜像模式
- 
- * 只影响远端用户看到的视频画面。详见 ARVideoMirrorMode
- * 默认关闭镜像模式
- */
-@property (assign, nonatomic) ARVideoMirrorMode mirrorMode;
-
-/** 指定视频分辨率并初始化一个 ARVideoEncoderConfiguration 对象
-
- @param size 视频分辨率
- @param frameRate 视频帧率,详见 ARVideoFrameRate
- @param bitrate 视频码率
- @param orientationMode 视频方向,详见 ARVideoOutputOrientationMode
- @return 初始化的 ARVideoEncoderConfiguration 对象
- */
-- (instancetype _Nonnull)initWithSize:(CGSize)size
-                            frameRate:(ARVideoFrameRate)frameRate
-                              bitrate:(NSInteger)bitrate
-                      orientationMode:(ARVideoOutputOrientationMode)orientationMode;
-
-/** 指定视频宽和高并初始化一个 ARVideoEncoderConfiguration 对象
-
- @param width 视频宽度
- @param height 视频高度
- @param frameRate 视频帧率,详见 ARVideoFrameRate
- @param bitrate 视频码率
- @param orientationMode 视频方向,详见 ARVideoOutputOrientationMode
- @return 初始化的 ARVideoEncoderConfiguration 对象
- */
-- (instancetype _Nonnull)initWithWidth:(NSInteger)width
-                                height:(NSInteger)height
-                             frameRate:(ARVideoFrameRate)frameRate
-                               bitrate:(NSInteger)bitrate
-                       orientationMode:(ARVideoOutputOrientationMode)orientationMode;
-
-@end
-
-/** 音量信息的属性 */
-__attribute__((visibility("default"))) @interface ARtcAudioVolumeInfo : NSObject
-
-/** 说话者的用户 ID。 */
-@property (copy, nonatomic) NSString * _Nonnull uid;
-/** 说话者各自混音后的音量,取值范围为 [0,255] */
-@property (assign, nonatomic) NSUInteger volume;
-/** 本地用户的人声状态。
-
- * 0: 本地用户不在说话。
- * 1: 本地用户在说话。
-
-**Note**
-
- * vad 无法报告远端用户的人声状态。对于远端用户,vad 的值始终为 0。
- * 若需使用此参数,请在 enableAudioVolumeIndication 方法中设置 report_vad 为 YES。
- */
-@property (assign, nonatomic) NSUInteger vad;
-/** 频道 ID,表明当前说话者在哪个频道。*/
-@property (copy, nonatomic) NSString * _Nonnull channelId;
-@end
-
-/** 摄像头采集偏好设置 */
-__attribute__((visibility("default"))) @interface ARCameraCapturerConfiguration : NSObject
-
-/** 摄像头采集偏好,详见 ARCameraCaptureOutputPreference
- */
-@property (assign, nonatomic) ARCameraCaptureOutputPreference preference;
-#if TARGET_OS_IOS
-/** 摄像头方向,详见 ARCameraDirection:
-
- * ARCameraDirectionRear: 使用后置摄像头
- * ARCameraDirectionFront: 使用前置摄像头
- */
-@property (assign, nonatomic) ARCameraDirection cameraDirection;
-#endif
-
-@end
-
-/** 远端音频统计信息
- */
-__attribute__((visibility("default"))) @interface ARtcRemoteAudioStats : NSObject
-/** 用户 ID,指定是哪个用户/主播的音频流
- */
-@property (copy, nonatomic) NSString * _Nonnull uid;
-/** 远端用户发送的音频流质量:
- 0:质量未知
- 1:质量极好
- 2:用户主观感觉和极好差不多 ,但码率可能略低于极好
- 3:用户主观感受有瑕疵,但不影响沟通
- 4:勉强能沟通但不顺畅
- 5:网络质量非常差,基本不能沟通
- 6:网络连接已断开,完全无法沟通
- 7:网络质量探测功能不可使用 (目前没有使用)
- 8:网络质量探测中
- */
-@property (assign, nonatomic) ARNetworkQuality quality;
-/** 音频发送端到接收端的网络延迟(毫秒)
- */
-@property (assign, nonatomic) NSUInteger networkTransportDelay;
-/** 接收端到网络抖动缓冲的网络延迟(毫秒)
- */
-@property (assign, nonatomic) NSUInteger jitterBufferDelay;
-/** 统计周期内的远端音频流的丢帧率(%)
- */
-@property (assign, nonatomic) NSUInteger audioLossRate;
-/** 声道数
- */
-@property (assign, nonatomic) NSUInteger numChannels;
-/** 统计周期内接收到的远端音频采样率(Hz)
- */
-@property (assign, nonatomic) NSUInteger receivedSampleRate;
-/** 接收流在统计周期内的平均码率(Kbps)
- */
-@property (assign, nonatomic) NSUInteger receivedBitrate;
-/** 远端用户在加入频道后发生音频卡顿的累计时长(ms)
- */
-@property (assign, nonatomic) NSUInteger totalFrozenTime;
-/** 远端用户在加入频道后发生音频卡顿的累计时长占音频总有效时长的百分比(%)。音频有效时长是指远端用户加入频道后音频未被停止发送或禁用的时长。
- */
-@property (assign, nonatomic) NSUInteger frozenRate;
-@end
-
-/** 本地视频统计回调
- */
-__attribute__((visibility("default"))) @interface ARtcLocalVideoStats : NSObject
-/** 实际发送码率 (Kbps) : 不包含丢包后重传视频等的发送码率 */
-@property (assign, nonatomic) NSUInteger sentBitrate;
-/** 实际发送帧率 (fps) : 不包含丢包后重传视频等的发送帧率 */
-@property (assign, nonatomic) NSUInteger sentFrameRate;
-/** 本地视频编码器的输出帧率,单位为 fps */
-@property (assign, nonatomic) NSUInteger encoderOutputFrameRate;
-/** 本地视频渲染器的输出帧率,单位为 fps */
-@property (assign, nonatomic) NSUInteger rendererOutputFrameRate;
-/** 当前编码器的目标编码码率,单位为 Kbps,该码率为 SDK 根据当前网络状况预估的一个值。*/
-@property (assign, nonatomic) NSUInteger sentTargetBitrate;
-/** 当前编码器的目标编码帧率,单位为 fps */
-@property (assign, nonatomic) NSUInteger sentTargetFrameRate;
-/** 统计周期内本地视频质量(基于目标帧率和目标码率)的自适应情况,详见 ARVideoQualityAdaptIndication。 */
-@property (assign, nonatomic) ARVideoQualityAdaptIndication qualityAdaptIndication;
-/** 视频编码码率(Kbps)。
- */
-@property (assign, nonatomic) NSUInteger encodedBitrate;
-/** 视频编码宽度(px)。
- */
-@property (assign, nonatomic) NSUInteger encodedFrameWidth;
-/** 视频编码高度(px)。
- */
-@property (assign, nonatomic) NSUInteger encodedFrameHeight;
-/** 视频发送的帧数,累计值。
- */
-@property (assign, nonatomic) NSUInteger encodedFrameCount;
-/** 视频的编码类型:
-
- * ARVideoCodecTypeVP8 = 1: VP8。
- * ARVideoCodecTypeH264 = 2: (默认值)H.264。
- */
-@property (assign, nonatomic) ARVideoCodecType codecType;
-
-/** 弱网对抗前本端到边缘服务器的视频丢包率 (%)。
- */
-@property (assign, nonatomic) NSInteger txPacketLossRate;
-
-/** 本地视频采集帧率 (fps)。
- */
-@property (assign, nonatomic) NSInteger captureFrameRate;
-
-@end
-
-/** 本地音频统计信息
- */
-__attribute__((visibility("default"))) @interface ARtcLocalAudioStats : NSObject
-/** 声道数。
- */
-@property (assign, nonatomic) NSUInteger numChannels;
-/** 发送的采样率,单位为 Hz。
- */
-@property (assign, nonatomic) NSUInteger sentSampleRate;
-/** 发送码率的平均值,单位为 Kbps。
- */
-@property (assign, nonatomic) NSUInteger sentBitrate;
-/** 弱网对抗前本端到边缘服务器的音频丢包率 (%)。
- */
-@property (assign, nonatomic) NSUInteger txPacketLossRate;
-@end
-
-/** 远端视频统计回调。
- */
-__attribute__((visibility("default"))) @interface ARtcRemoteVideoStats : NSObject
-/** 用户 ID,指定远程视频来自哪个用户
- */
-@property (copy, nonatomic) NSString * _Nonnull uid;
-/** 延时(毫秒),已废弃(Deprecated)
-*/
-@property (assign, nonatomic) NSUInteger delay;
-/** 视频流宽(像素)
- */
-@property (assign, nonatomic) NSUInteger width;
-/** 视频流高(像素)
- */
-@property (assign, nonatomic) NSUInteger height;
-/** 接收流的平均码率(Kbps)
- */
-@property (assign, nonatomic) NSUInteger receivedBitrate;
-/** 远端视频解码器的输出帧率,单位为 fps
- */
-@property (assign, nonatomic) NSUInteger decoderOutputFrameRate;
-/** 远端视频渲染器的输出帧率,单位为 fps
- */
-@property (assign, nonatomic) NSUInteger rendererOutputFrameRate;
-/** 远端视频在使用抗丢包技术之后的丢包率(%)。
- */
-@property (assign, nonatomic) NSUInteger packetLossRate;
-/** 视频流类型,大流或小流: ARVideoStreamType
- */
-@property (assign, nonatomic) ARVideoStreamType rxStreamType;
-/** 远端用户在加入频道后发生视频卡顿的累计时长(ms)。通话过程中,视频帧率设置不低于 5 fps 时,连续渲染的两帧视频之间间隔超过 500 ms,则计为一次视频卡顿。
- */
-@property (assign, nonatomic) NSUInteger totalFrozenTime;
-/** 远端用户在加入频道后发生视频卡顿的累计时长占视频总有效时长的百分比(%)。视频有效时长是指远端用户加入频道后视频未被停止发送或禁用的时长。
- */
-@property (assign, nonatomic) NSUInteger frozenRate;
-@end
-
-/** 用于封装视频帧数据传递给 SDK 的类
- */
-__attribute__((visibility("default"))) @interface ARVideoFrame : NSObject
-/** 传入的视频帧的格式
-必须指定为下面的某一个值:
- * 1: I420
- * 2: BGRA
- * 3: NV21
- * 4: RGBA
- * 5: IMC2
- * 7: ARGB
- * 8: NV12
- * 12: iOS texture (CVPixelBufferRef)
- * 13: H264 extra data(sps,pps data)
- * 14: H264 nomal data
- * 15: H264 key frame data
- */
-@property (assign, nonatomic) NSInteger format;
-
-/** 传入的视频帧的时间戳 (ms).
-
-以毫秒为单位。不正确的时间戳会导致丢帧或者音视频不同步。
-
- */
-@property (assign, nonatomic) CMTime time; // Time for this frame.
-
-/** 传入视频帧的行间距。单位为像素而不是字节。如果视频帧格式设为 12,则不使用该字段。
- */
-@property (assign, nonatomic) int strideInPixels;
-
-/** 传入视频帧的高度。单位为像素而不是字节。如果视频帧格式设为 12,则不使用该字段。
- */
-@property (assign, nonatomic) int height;
-
-/** iOS 纹理的 Buffer
- */
-@property (assign, nonatomic) CVPixelBufferRef _Nullable textureBuf;
-
-/** 裸数据格式的 Buffer。如果视频帧格式设为 12,则不使用该字段。
- */
-@property (strong, nonatomic) NSData * _Nullable dataBuf;
-
-/** 视频左边裁减掉的像素数量,默认为 0
- */
-@property (assign, nonatomic) int cropLeft;
-/** 视频顶部裁减掉的像素数量,默认为 0
- */
-@property (assign, nonatomic) int cropTop;
-/** 视频右边裁减掉的像素数量,默认为 0
- */
-@property (assign, nonatomic) int cropRight;
-/** 视频底部裁减掉的像素数量,默认为 0
- */
-@property (assign, nonatomic) int cropBottom;
-/** 是否对传入的视频做顺时针旋转操作
-
-可选值为 0,90,180,270。默认为 0。
- */
-@property (assign, nonatomic) int rotation;
-
-/** 视频缓冲区的长度
- */
-@property (assign, nonatomic) int length;
-/* Note
- * 1. strideInPixels
- *    Stride is in pixels, not bytes.
- * 2. About the frame width and height.
- *    No field is defined for the width. However, it can be deduced by:
- *       croppedWidth = (strideInPixels - cropLeft - cropRight)
- *    And
- *       croppedHeight = (height - cropTop - cropBottom)
- * 3. About crop.
- *    _________________________________________________________________.....
- *    |                        ^                                      |  ^
- *    |                        |                                      |  |
- *    |                     cropTop                                   |  |
- *    |                        |                                      |  |
- *    |                        v                                      |  |
- *    |                ________________________________               |  |
- *    |                |                              |               |  |
- *    |                |                              |               |  |
- *    |<-- cropLeft -->|          valid region        |<- cropRight ->|
- *    |                |                              |               | height
- *    |                |                              |               |
- *    |                |_____________________________ |               |  |
- *    |                        ^                                      |  |
- *    |                        |                                      |  |
- *    |                     cropBottom                                |  |
- *    |                        |                                      |  |
- *    |                        v                                      |  v
- *    _________________________________________________________________......
- *    |                                                               |
- *    |<---------------- strideInPixels ----------------------------->|
- *
- *    If your buffer contains garbage data, you can crop them. For example, if the frame size is
- *    360 &times; 640, often the buffer stride is 368, that is, the extra 8 pixels on the
- *    right are for padding, and should be removed. In this case, you can set:
- *    strideInPixels = 368;
- *    height = 640;
- *    cropRight = 8;
- *    // cropLeft, cropTop, cropBottom are set to a default of 0
- */
-@end
-
-/** 检测到的人脸信息
- */
-__attribute__((visibility("default"))) @interface ARFacePositionInfo : NSObject
-
-/** 人脸在画面中的 x 坐标 (px)。以摄像头采集画面的左上角为原点,x 坐标为人脸左上角相对于原点的横向位移。
- */
-@property (assign, nonatomic) NSInteger x;
-
-/** 人脸在画面中的 y 坐标 (px)。以摄像头采集画面的左上角为原点,y 坐标为人脸左上角相对原点的纵向位移。
- */
-@property (assign, nonatomic) NSInteger y;
-
-/** 人脸在画面中的宽度 (px)。
- */
-@property (assign, nonatomic) NSInteger width;
-
-/** 人脸在画面中的高度 (px)。
- */
-@property (assign, nonatomic) NSInteger height;
-
-/** 人脸距设备屏幕的距离 (cm)。
- */
-@property (assign, nonatomic) NSInteger distance;
-
-@end
-
-/** 频道媒体设置选项
- */
-__attribute__((visibility("default"))) @interface ARtcChannelMediaOptions : NSObject
-/** 设置加入频道时是否自动订阅音频流:
-
- - YES: (默认)订阅
- - NO: 不订阅
- 
- 该成员功能与 muteAllRemoteAudioStreams 相同。加入频道后,你可以通过 muteAllRemoteAudioStreams 方法重新设置是否订阅频道内的远端音频流。
- */
-@property (nonatomic, assign) BOOL autoSubscribeAudio;
-
-/** 设置加入频道是是否自动订阅视频流:
-
- - YES: (默认)订阅
- - NO: 不订阅
-
- 该成员功能与 muteAllRemoteVideoStreams 相同。加入频道后,你可以通过 muteAllRemoteVideoStreams 方法重新设置是否订阅频道内的远端视频流。
- */
-@property (nonatomic, assign) BOOL autoSubscribeVideo;
-@end
-
-/** 实况直播注入流配置
- */
-__attribute__((visibility("default"))) @interface ARLiveInjectStreamConfig: NSObject
-/** 添加进入直播的外部视频源尺寸。
-
-默认值为 0,即保留视频导入前的尺寸
- */
-@property (assign, nonatomic) CGSize size;
-/** 添加进入直播的外部视频源的 GOP。
-
-默认值为 30 帧
- */
-@property (assign, nonatomic) NSInteger videoGop;
-/** 添加进入直播的外部视频源的帧率。
-
-默认值为 15 fps
- */
-@property (assign, nonatomic) NSInteger videoFramerate;
-/** 添加进入直播的外部视频源的码率
-
-默认值为 400 Kbps
-
-视频码率的设置与分辨率相关。如果设置的视频码率超出合理范围,SDK 会按照合理区间自动设置码率。
- */
-@property (assign, nonatomic) NSInteger videoBitrate;
-
-/** 添加进入直播的外部音频采样率
-
-默认值为 48000。详见 ARAudioSampleRateType。
-
-**Note:**
-
-建议目前采用默认值,不要自行设置。
- */
-@property (assign, nonatomic) ARAudioSampleRateType audioSampleRate;
-/** 添加进入直播的外部音频码率
-
-默认值为 48 kbps。
-
-**Note:**
-
-建议目前采用默认值,不要自行设置。
- */
-@property (assign, nonatomic) NSInteger audioBitrate;
-/** 添加进入直播的外部音频频道数
-
-取值范围 [1,2],默认值为 1。
-
-**Note:**
-
-建议目前采用默认值,不要自行设置。
- */
-@property (assign, nonatomic) NSInteger audioChannels;
-
-/** 创建默认实况直播注入流配置
-
- @return 默认配置
- */
-+(ARLiveInjectStreamConfig *_Nonnull) defaultConfig;
-@end
-
-/** 目标频道信息
- */
-__attribute__((visibility("default"))) @interface ARChannelMediaRelayInfo: NSObject
-/** 能加入频道的 Token。
- */
-@property (copy, nonatomic) NSString * _Nullable token;
-/** 频道名。
- */
-@property (copy, nonatomic) NSString * _Nullable channelName;
-/** 用户 ID。
- */
-@property (copy, nonatomic) NSString * _Nonnull uid;
-/** 初始化 ARChannelMediaRelayInfo 类
- 
- @param token 能加入频道的 Token。
- */
-- (instancetype _Nonnull)initWithToken:(NSString *_Nullable)token;
-@end
-
-/** 跨频道媒体流转发参数配置类
-
- */
-__attribute__((visibility("default"))) @interface ARChannelMediaRelayConfiguration: NSObject
-/** 目标频道信息 ARChannelMediaRelayInfo ,包含如下成员:
-
- - `channelName`: 目标频道的频道名。
- - `uid`: 标识转发流到目标频道的主播 ID。取值范围为 0 到(232-1),请确保与目标频道中的所有 UID 不同。默认值为 0,表示 SDK 随机分配一个 UID。
- - `token`: 能加入目标频道的 token。由你在 destinationInfos 中设置的 channelName 和 uid 生成。
-
-   - 如未启用 App Certificate,可直接将该参数设为默认值 nil,表示 SDK 填充 App ID。
-   - 如已启用 App Certificate,则务必填入使用 channelName 和 uid 生成的 token。
- */
-@property (strong, nonatomic, readonly) NSDictionary<NSString *, ARChannelMediaRelayInfo *> *_Nullable destinationInfos;
-/** 源频道信息 ARChannelMediaRelayInfo ,包含如下成员:
-
- - `channelName`: 源频道名。默认值为 nil,表示 SDK 填充当前的频道名。
- - `uid`: 标识源频道中想要转发流的主播 ID。默认值为 0,表示 SDK 随机分配一个 uid。请确保设为 0。
- - `token`: 能加入源频道的 token。由你在 sourceInfo 中设置的 channelName 和 uid 生成。
-
-   - 如未启用 App Certificate,可直接将该参数设为默认值 nil,表示 SDK 填充 App ID。
-   - 如已启用 App Certificate,则务必填入使用 channelName 和 uid 生成的 token,且其中的 uid 必须为 0。
- */
-@property (strong, nonatomic) ARChannelMediaRelayInfo *_Nonnull sourceInfo;
-/** 设置目标频道信息。
-
- @param destinationInfo  目标频道信息 ARChannelMediaRelayInfo ,包含如下成员:
-
- - `channelName`: 目标频道的频道名。
- - `uid`:标识转发流到目标频道的主播 ID。取值范围为 0 到(232-1),请确保与目标频道中的所有 UID 不同。默认值为 0,表示 SDK 随机分配一个 UID。
- - `token`: 能加入目标频道的 token。由你在 destinationInfo 中设置的 channelName 和 uid 生成。
-
-   - 如未启用 App Certificate,可直接将该参数设为默认值 nil,表示 SDK 填充 App ID。
-   - 如已启用 App Certificate,则务必填入使用 channelName 和 uid 生成的 token。
-
- @param channelName 目标频道名,该参数必填,且需与该方法 destinationInfo 参数中的 channelName 一致。
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (BOOL)setDestinationInfo:(ARChannelMediaRelayInfo *_Nonnull)destinationInfo forChannelName:(NSString *_Nonnull)channelName;
-/** 删除目标频道。
-
- @param channelName 想要删除的目标频道名。
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (BOOL)removeDestinationInfoForChannelName:(NSString *_Nonnull)channelName;
-@end
-
-/** 提供旁路推流时特定用户音频/视频转码设置的类
- */
-__attribute__((visibility("default"))) @interface ARLiveTranscodingUser: NSObject
-/** 旁路推流的用户 ID
- */
-@property (copy, nonatomic) NSString *_Nonnull uid;
-/** 直播视频上用户视频在布局中相对左上角的位置和大小信息
- */
-@property (assign, nonatomic) CGRect rect;
-/**  直播视频上用户视频帧的图层编号
-
- 整数,取值范围为 0 到 100:
-
- - 最小值为 0(默认值),表示该区域图像位于最下层
- - 最大值为 100,表示该区域图像位于最上层
-
- Note: 如果取值小于 0 或大于 100,会返回错误 ARErrorCodeInvalidArgument。
- */
-@property (assign, nonatomic) NSInteger zOrder;
-/** 直播视频上用户视频的透明度。取值范围为 [0.0,1.0]。
-
- * 0.0: 表示该区域图像完全透明
- * 1.0: 表示该区域图像完全不透明。默认值为 1.0.
- */
-@property (assign, nonatomic) double alpha;
-/** 直播音频所在声道
-
- 取值范围为 [0,5],默认值为 0 :
-
-  - 0:(推荐) 默认混音设置,最多支持双声道,与主播端上行音频相关
-  - 1: 对应主播的音频,推流中位于 FL 声道。如果主播端上行音频是多声道,会先把多声道混音成单声道。
-  - 2: 对应主播的音频,推流中位于 FC 声道。如果主播端上行音频是多声道,会先把多声道混音成单声道。
-  - 3: 对应主播的音频,推流中位于 FR 声道。如果主播端上行音频是多声道,会先把多声道混音成单声道。
-  - 4: 对应主播的音频,推流中位于 BL 声道。如果主播端上行音频是多声道,会先把多声道混音成单声道。
-  - 5: 对应主播的音频,推流中位于 BR 声道。如果主播端上行音频是多声道,会先把多声道混音成单声道。
-Note: 选项不为 0 时,需要特殊的播放器支持。
- */
-@property (assign, nonatomic) NSInteger audioChannel;
-@end
-
-/** 图像属性
- 
- 用于设置直播视频的水印和背景图片的属性
- */
-__attribute__((visibility("default"))) @interface ARImage: NSObject
-/** 直播视频上图片的 HTTP/HTTPS 地址,字符长度不得超过 1024 字节。
- */
-@property (strong, nonatomic) NSURL *_Nonnull url;
-/** 图片在视频帧上的位置和大小,类型为 CGRect
- */
-@property (assign, nonatomic) CGRect rect;
-@end
-
-/** 管理旁路推流转码的类
- */
-__attribute__((visibility("default"))) @interface ARLiveTranscoding: NSObject
-/** 推流视频的总尺寸(宽和高),单位为像素。
- 
-- 如果推视频流,宽和高的值均不得低于 64,否则 SDK 会调整为 64。
-- 如果推音频流,请将宽和高都设为 0。
- */
-@property (assign, nonatomic) CGSize size;
-/** 用于旁路直播的输出视频的码率。单位为 Kbps。400 Kbps 为默认值。
-
-用于旁路直播的输出视频的码率。单位为 Kbps。400 Kbps 为默认值。
-
-你可以根据 Video Profile 参考表中的码率值进行设置;如果设置的码率超出合理范围,服务器会在合理区间内自动调整码率值。
- */
-@property (assign, nonatomic) NSInteger videoBitrate;
-/** 用于旁路直播的输出视频的帧率。取值范围是 (0,30],单位为 fps。
-
-@note 15 fps 为默认值。服务器会将高于 30 fps 的帧率设置改为 30 fps。
- */
-@property (assign, nonatomic) NSInteger videoFramerate;
-
-/** 用于旁路直播的输出视频的 GOP。单位为帧。默认值为 30 帧。*/
-@property (assign, nonatomic) NSInteger videoGop;
-/** 用于旁路直播的输出视频的编码规格。
-
- 可以设置为 66、77 或 100,详见 ARVideoCodecProfileType。
-
- 如果设置其它值,服务器会统一设为默认值 100。
- */
-@property (assign, nonatomic) ARVideoCodecProfileType videoCodecProfile;
-
-/** 用于管理参与旁路直播的视频转码合图的用户。最多支持 17 人同时参与转码合图,详见 ARLiveTranscodingUser
- */
-@property (copy, nonatomic) NSArray<ARLiveTranscodingUser *> *_Nullable transcodingUsers;
-
-/** 预留参数:用户自定义的发送到旁路推流客户端的信息,用于填充 H264/H265 视频中 SEI 帧内容。长度限制:4096 字节。关于 SEI 的详细信息,详见SEI 帧相关问题。
- */
-@property (copy, nonatomic) NSString *_Nullable transcodingExtraInfo;
-/** 用于旁路直播的输出视频上的水印图片
-
- 仅支持 PNG 格式的图片。添加后所有旁路直播的观众都可以看到水印。水印图片的定义详见 ARImage
- */
-@property (strong, nonatomic) ARImage *_Nullable watermark;
-/** 用于旁路直播的输出视频上的背景图片
-
-添加后所有旁路直播的观众都可以看到背景图片。背景图片的定义详见 ARImage
- */
-@property (strong, nonatomic) ARImage *_Nullable backgroundImage;
-/** 用于旁路直播的输出视频的背景色
-
- 格式为 RGB 定义下的十六进制整数,不要带 # 号,如 0xFFB6C1 表示浅粉色。默认 0x000000,黑色。
-
- COLOR_CLASS 为类型统称,具体为:
-
-* iOS: UIColor
-* macOS: NSColor
- */
-@property (strong, nonatomic) COLOR_CLASS *_Nullable backgroundColor;
-
-/** 用于旁路直播的输出音频的采样率,详见 ARAudioSampleRateType
- */
-@property (assign, nonatomic) ARAudioSampleRateType audioSampleRate;
-/** 用于旁路直播的输出音频的码率。单位为 Kbps,默认值为 48,最大值为 128
- */
-@property (assign, nonatomic) NSInteger audioBitrate;
-/** 用于旁路直播的输出音频的声道数,默认值为 1。
- 
- 取值范围为 [1,5] 中的整型,建议取 1 或 2。3、4、5需要特殊播放器支持:
-
- * 1: 单声道
- * 2: 双声道
- * 3: 三声道
- * 4: 四声道
- * 5: 五声道
- */
-@property (assign, nonatomic) NSInteger audioChannels;
-/**
- 用于旁路直播输出音频的编码规格,默认值为 ARAudioCodecProfileLCAAC(0)。详见 ARAudioCodecProfileType。
- */
-@property (assign, nonatomic) ARAudioCodecProfileType audioCodecProfile;
-
-/** 应用默认的转码设置
-
- @return 应用默认设置的 ARLiveTranscoding 对象
- */
-+(ARLiveTranscoding *_Nonnull) defaultTranscoding;
-
-/** 添加一个用户到已有的用户中。
- 
- @param user 参数合图的用户,定义详见 ARLiveTranscodingUser 。
-
- @return 0: 方法调用成功,< 0: 方法调用失败。
- */
--(int)addUser:(ARLiveTranscodingUser * _Nonnull)user;
-
-/** 删除转码合图用户
- 
- @param uid 待删除的用户 ID
-
- @return 0: 方法调用成功,< 0: 方法调用失败。
- */
--(int)removeUser:(NSString *_Nonnull)uid;
-
-@end
-
-/** Last mile 网络探测配置 */
-__attribute__((visibility("default"))) @interface ARLastmileProbeConfig : NSObject
-/** 是否探测上行网络带宽。有些用户不需要进行网络探测,如直播频道中的普通观众。
-
-- NO:不探测
-- YES:探测
-*/
-@property (assign, nonatomic) BOOL probeUplink;
-/** 是否探测下行网络带宽
-
-- NO:不探测
-- YES:探测
-*/
-@property (assign, nonatomic) BOOL probeDownlink;
-/** 用户期望的最高发送码率
-
- 单位为 bps,范围为 [100000,5000000]。anyRTC 推荐参考 setVideoEncoderConfiguration 中的码率值设置该参数的值。 */
-@property (assign, nonatomic) NSUInteger expectedUplinkBitrate;
-/** 用户期望的最高接收码率
-
- 单位为 bps,范围为 [100000,5000000]。
-*/
-@property (assign, nonatomic) NSUInteger expectedDownlinkBitrate;
-@end
-
-/** 单向网络质量探测结果 */
-__attribute__((visibility("default"))) @interface ARLastmileProbeOneWayResult : NSObject
-/** 网络丢包率,范围 [0,100]。 */
-@property (assign, nonatomic) NSUInteger packetLossRate;
-/** 网络抖动,单位为毫秒。*/
-@property (assign, nonatomic) NSUInteger jitter;
-/** 可用网络带宽预估,单位为 Kbps。*/
-@property (assign, nonatomic) NSUInteger availableBandwidth;
-@end
-
-/** 上下行 last mile 质量探测结果 */
-__attribute__((visibility("default"))) @interface ARLastmileProbeResult : NSObject
-/* Last mile 质量探测结果的状态
-*/
-@property (assign, nonatomic) ARLastmileProbeResultState state;
-/** 往返时延,单位为毫秒 */
-@property (assign, nonatomic) NSUInteger rtt;
-/** 上行网络质量报告
-
- 包含丢包率、网络抖动和可用带宽预估,详见 ARLastmileProbeOneWayResult。
-*/
-@property (strong, nonatomic) ARLastmileProbeOneWayResult *_Nonnull uplinkReport;
-/** 下行网络质量报告
-
- 包含丢包率、网络抖动和可用带宽预估,详见 ARLastmileProbeOneWayResult。
-*/
-@property (strong, nonatomic) ARLastmileProbeOneWayResult *_Nonnull downlinkReport;
-@end
-
-/** 设置屏幕共享编码配置的类
- */
-__attribute__((visibility("default"))) @interface ARScreenCaptureParameters: NSObject
-/**  屏幕共享视频发送的最大像素值
-
- 默认值为 1920 * 1080,即 2073600 像素。该像素值为计费标准。
-
- 当共享的屏幕分辨率宽高比与该值设置不一致时,SDK 按如下策略进行编码。假设 dimensions 为 1920 * 1080:
-
- - 如果屏幕分辨率小于 dimensions,如 1000 * 1000,SDK 直接按 1000 * 1000 进行编码。
- - 如果屏幕分辨率大于 dimensions,如 2000 * 1500,SDK 按屏幕分辨率的宽高比,即 4:3,取 dimensions 以内的最大分辨率进行编码,即 1440 * 1080。
- 无论实际编码分辨率如何,均按 dimensions 设置的值计费。
- */
-@property (assign, nonatomic) CGSize dimensions;
-
-/** 共享视频的帧率,单位为 fps;默认值为 5,建议不要超过 15。
- */
-@property (assign, nonatomic) NSInteger frameRate;
-
-/** 共享视频的码率,单位为 Kbps;默认值为 0,表示由 SDK 根据当前共享的分辨率计算出一个合理的值。
- */
-@property (assign, nonatomic) NSInteger bitrate;
-
-/** 是否采集鼠标用于屏幕共享
-
-- YES:(默认)采集鼠标
-- NO:不采集鼠标
- */
-@property (assign, nonatomic) BOOL captureMouseCursor;
-
-/** 调用 startScreenCaptureByWindowId 方法共享窗口时,是否将该窗口前置。
- 
- - YES:前置窗口。
- - NO: (默认)不前置窗口。
- */
-@property (assign, nonatomic) BOOL windowFocus;
-
-/** 待屏蔽窗口的 ID 列表。
- 
- 调用 startScreenCaptureByDisplayId 开启主屏幕共享 (即屏幕 ID 为 0)时,你可以通过该参数屏蔽指定的窗口。开启主屏幕共享后,你可以在调用 updateScreenCaptureParameters 更新屏幕共享的配置参数时,通过该参数动态屏蔽指定的窗口。
- */
-@property (copy, nonatomic) NSArray * _Nullable excludeWindowList;
-
-@end
-
-#if (!(TARGET_OS_IPHONE) && (TARGET_OS_MAC))
-
-/** 提供设备信息的类
- */
-__attribute__((visibility("default"))) @interface ARtcDeviceInfo : NSObject
-
-/** 设备类型,详见 ARMediaDeviceType
- */
-@property (assign, nonatomic) ARMediaDeviceType type;
-
-/** 设备 ID
- */
-@property (copy, nonatomic) NSString * _Nullable deviceId;
-
-/** 设备名称
- */
-@property (copy, nonatomic) NSString * _Nullable deviceName;
-
-@end
-
-#endif
-
-/** 配置内置加密模式和密钥
- */
-__attribute__((visibility("default"))) @interface AREncryptionConfig: NSObject
-
- /** 内置加密模式,默认为 AREncryptionModeAES128XTS 加密模式。详见 AREncryptionMode 。
-  */
- @property (assign, nonatomic) AREncryptionMode encryptionMode;
-
- /** 内置加密密钥,字符串类型。
- 
- **Note**
-
- 如果未指定该参数或将该参数设置为空,则无法启用内置加密,且 SDK 会返回错误码 -2 (ARErrorCodeInvalidArgument)。
-  */
- @property (copy, nonatomic) NSString * _Nullable encryptionKey;
- @end
diff --git a/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Headers/ARStreamingKit.h b/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Headers/ARStreamingKit.h
deleted file mode 100644
index 88d2185..0000000
--- a/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Headers/ARStreamingKit.h
+++ /dev/null
@@ -1,64 +0,0 @@
-//
-//  ARStreamingKit.h
-//  ARtcKit
-//
-//  Created by 余生丶 on 2020/12/24.
-//  Copyright © 2020 zjq. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-#import "ARtcEngineKit.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface ARStreamingKit : NSObject
-
-/**
-设置RtcEngine对象。
-
-@param rtcKit  一个 ARtcEngineKit 实例对象。
-
-@return 0方法调用成功,<0方法调用失败
-*/
-- (int)setRtcEngine:(ARtcEngineKit *)rtcKit;
-
-/**
-开始推Rtmp的流
-
-@param url  rtmp流地址
-
-@return 0方法调用成功,<0方法调用失败
-*/
-- (int)pushStream:(NSString *_Nonnull)url;
-
-/**
-停止推Rtmp的流
-
-@return 0方法调用成功,<0方法调用失败
-*/
-- (int)unPushStream;
-
-/**
-设置推流模式。
-
-@param mode  推流模式,详见ARStreamPushMode。
-
-@return 0方法调用成功,<0方法调用失败
-*/
-- (int)setMode:(ARStreamPushMode)mode;
-
-/**
-设置合流参数
-
-@param transcoding  合流参数,详见ARLiveTranscoding。
-*/
-- (int)setLiveTranscoding:(ARLiveTranscoding *_Nonnull)transcoding;
-
-/**
- 销毁 ARStreamingKit 实例
-*/
-- (void)destroy;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Headers/ARtcChannel.h b/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Headers/ARtcChannel.h
deleted file mode 100644
index bfaa97d..0000000
--- a/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Headers/ARtcChannel.h
+++ /dev/null
@@ -1,256 +0,0 @@
-//
-//  ARtcChannel.h
-//  ARtcKit
-//
-//  Created by 余生丶 on 2020/3/24.
-//  Copyright © 2020 zjq. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-#import "ARtcEngineKit.h"
-#import "ARObjects.h"
-#import "ARtcChannelDelegate.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface ARtcEngineKit()
-
-/** 实例化ARtcChannel对象
-
-@param channelId   当前 ARtcChannel 对象的频道 ID
-*/
-- (ARtcChannel * _Nullable)createRtcChannel:(NSString * _Nonnull)channelId;
-
-@end
-
-@interface ARtcChannel : NSObject
-
-/** 销毁 ARtcChannel 对象
-
-@return channelId   当前 ARtcChannel 对象的频道 ID
-*/
-- (int)destroy;
-
-/** 设置 ARtcChannel 对象的 Delegate
-
-@param channelDelegate   ARtcChannelDelegate
-*/
-- (void)setRtcChannelDelegate:(id<ARtcChannelDelegate> _Nullable)channelDelegate;
-
-/** 获取当前 ARtcChannel 对象的频道 ID
-
-@return channelId   当前 ARtcChannel 对象的频道 ID
-*/
-- (NSString * _Nullable)getChannelId;
-
-/** 通过用户 ID 加入频道
-
-@param token   动态密钥
-@param uid   用户 ID
-@param options   频道媒体设置选项 ARtcChannelMediaOptions
- 
-@return 0方法调用成功,<0方法调用失败
-*/
-- (int)joinChannelByToken:(NSString * _Nullable)token
-                      uid:(NSString * _Nullable)uid
-                  options:(ARtcChannelMediaOptions * _Nonnull)options;
-
-/** 离开频道
- 
-@return 0方法调用成功,<0方法调用失败
-*/
-- (int)leaveChannel;
-
-/** 将本地音视频流发布到本频道
- 
-@return 0方法调用成功,<0方法调用失败
-*/
-- (int)publish;
-
-/** 停止将本地音视频流发布到本频道
- 
-@return 0方法调用成功,<0方法调用失败
-*/
-- (int)unpublish;
-
-/** 设置用户角色
-
-该方法仅适用于直播场景。
-
-在加入频道前,用户需要通过本方法设置观众(默认)或主播角色。在直播场景中,只有角色为主播时可调用 publish 方法。
-
-如果你在加入频道后调用该方法切换用户角色,调用成功后会触发以下回调:
-
-- 本地:didClientRoleChanged 回调。
-- 远端:didJoinedOfUid 或 didOfflineOfUid 回调。
-
-@param role 直播场景里的用户角色
-
-- ARClientRoleBroadcaster(1): 直播频道中的主播,可以发布和接收音视频流。
-- ARClientRoleAudience(2): (默认)直播频道中的观众,只可以接收音视频流。
-
-@return 0方法调用成功,<0方法调用失败
-*/
-- (int)setClientRole:(ARClientRole)role;
-
-/** 更新 Token
-
-该方法用于更新 Token。如果启用了 Token 机制,过一段时间后使用的 Token 会失效。当以下任意一种情况发生时:
-
-- SDK 触发 tokenPrivilegeWillExpire 回调。
-- connectionChangedToState 回调 reason 参数报告 ARConnectionChangedTokenExpired(9)。
-
-App 应重新获取 Token,然后调用该 API 更新 Token,否则 SDK 无法和服务器建立连接。
-
-**Note**
-
-推荐使用 rtcChannelRequestToken 回调报告 ARErrorCodeTokenExpired(-109),而不是 didOccurError 回调.
-
-@param token The new token.
-
-@return 0方法调用成功,<0方法调用失败
-*/
-- (int)renewToken:(NSString *_Nonnull)token;
-
-/** 更新远端视图显示模式
-
-初始化远端用户视图后,你可以调用该方法更新远端用户视图在本地显示时的渲染和镜像模式。该方法只影响本地用户看到的视频画面。
-
-**Note**
-
- * 请在调用 setupRemoteVideo 方法初始化远端视图后,调用该方法。
- * 你可以在通话中多次调用该方法,多次更新远端用户视图的显示模式。
-
-@param uid   用户 ID
-@param renderMode   远端用户视图的渲染模式,详见 ARVideoRenderMode ;
-@param mirrorMode   远端用户视图的镜像模式,详见 ARVideoMirrorMode 。
-
-@return 0方法调用成功,<0方法调用失败
-*/
-- (int)setRemoteRenderMode:(NSString *_Nonnull)uid renderMode:(ARVideoRenderMode)renderMode mirrorMode:(ARVideoMirrorMode)mirrorMode;
-
-/** 设置是否默认接收音频流
-
-该方法在加入频道前后都可调用。如果在加入频道后调用 setDefaultMuteAllRemoteAudioStreams (YES),会接收不到设置后加入频道的用户的音频流。
- 
-**Note**
- 
- 停止接收音频流后,如果想要恢复接收,请调用 muteRemoteAudioStream (NO),并指定你想要接收的远端用户 uid;如果想恢复接收多个用户的音频流,则需要多次调用 muteRemoteAudioStream。setDefaultMuteAllRemoteAudioStreams (NO) 只能恢复接收后面加入频道的用户的音频流。
-
- @param mute 设置是否默认接收音频流:
-
- * YES: 默认停止接收所有远端音频流
- * NO: 默认继续接收所有远端音频流(默认)
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)setDefaultMuteAllRemoteAudioStreams:(BOOL)mute;
-
-/** 设置是否默认接收视频流
-  该方法在加入频道前后都可调用。如果在加入频道后调用setDefaultMuteAllRemoteVideoStreams(YES),会接收不到设置后加入频道的用户的视频流。
- 
-  **Note**
-  
- 停止接收视频流后,如果想要恢复接收,请调用 muteRemoteVideoStream (NO),并指定你想要接收的远端用户 uid;如果想恢复接收多个用户的视频流,则需要多次调用 muteRemoteVideoStream。setDefaultMuteAllRemoteVideoStreams (NO) 只能恢复接收后面加入频道的用户的视频流。
-
- @param mute 是否默认接收视频流
- 
- * YES: 不接收
- * NO: 接收
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)setDefaultMuteAllRemoteVideoStreams:(BOOL)mute;
-
-/** 停止/恢复接收指定用户的音频流
-
-**Note**
-
- 如果之前有调用过 muteAllRemoteAudioStreams(YES) 对所有远端音频进行静音,在调用本 API 之前请确保你已调用 muteAllRemoteAudioStreams(NO)。 muteAllRemoteAudioStreams 是全局控制,muteRemoteAudioStream 是精细控制。
-
- @param uid  指定用户的用户 ID
- @param mute 停止/恢复接收指定用户的音频流:
-
- * YES: 停止接收指定音频流
- * NO: 继续接收指定音频流(默认)
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)muteRemoteAudioStream:(NSString *_Nonnull)uid mute:(BOOL)mute;
-
-/** 调节本地播放的指定远端用户音量
-
-加入频道后,你可以多次调用该方法调节不同远端用户在本地播放的音量,或对某个远端用户在本地播放的音量调节多次。
-
-**Note**
-
-- 该方法要在加入频道后调用。
-- 该方法调节的是本地播放的指定远端用户混音后的音量。
-- 该方法每次只能调整一位远端用户在本地播放的音量。若需调整多位远端用户在本地播放的音量,则需多次调用该方法。
-
-@param uid 远端用户 ID,需和远端用户加入频道时用的 uid 一致。
-@param volume 播放音量,取值范围为 [0,100]。
-
-- 0: 静音
-- 100: 原始音量
-
-@return 0方法调用成功,<0方法调用失败
-*/
-- (int)adjustUserPlaybackSignalVolume:(NSString *_Nonnull)uid volume:(int)volume;
-
-/** 停止/恢复接收所有远端音频流
- 
-@param mute YES: 停止接收所有远端音频流;NO: 继续接收所有远端音频流(默认)。
- 
-@return 0方法调用成功,<0方法调用失败
-*/
-- (int)muteAllRemoteAudioStreams:(BOOL)mute;
-
-/** 停止/恢复接收指定视频流
-
-**Note**
-
- 如果之前有调用过 muteAllRemoteVideoStreams(YES) 暂停接收所有远端视频,在调用本 API 之前请确保你已调用 muteAllRemoteVideoStreams(NO)。 muteAllRemoteVideoStreams 是全局控制,muteRemoteVideoStream 是精细控制。
-
- @param uid  远端用户ID
- @param mute 停止/恢复接收指定视频流:
- * YES: 停止接收指定用户的视频流
- * NO: 允许接收指定用户的视频流(默认)
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)muteRemoteVideoStream:(NSString *_Nonnull)uid mute:(BOOL)mute;
-
-/** 停止/恢复接收所有视频流
-
- @param mute 禁止/允许接收所有人的视频流
-
- * YES: 停止接收所有视频流
- * NO: 允许接收所有视频流(默认)
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)muteAllRemoteVideoStreams:(BOOL)mute;
-
-/** 设置订阅的视频流类型
-
- 如果发送端选择发送视频双流(大流或小流),接收端可以选择接收大流还是小流。其中大流可以理解为高分辨率高码率的视频流,小流则是低分辨率低码率的视频流。该方法可以根据视频窗口的大小动态调整对应视频流的大小,以节约带宽和计算资源。
- 
-@param uid   用户 ID
-@param streamType   设置视频流大小,详见ARVideoStreamType
- 
-@return 0方法调用成功,<0方法调用失败
-*/
-- (int)setRemoteVideoStream:(NSString *_Nonnull)uid type:(ARVideoStreamType)streamType;
-
-/** 设置默认订阅的视频流类型
-
- @param streamType 设置默认接收的视频流类型,详见 ARVideoStreamType 。
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)setRemoteDefaultVideoStreamType:(ARVideoStreamType)streamType;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Headers/ARtcChannelDelegate.h b/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Headers/ARtcChannelDelegate.h
deleted file mode 100644
index 1a887f2..0000000
--- a/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Headers/ARtcChannelDelegate.h
+++ /dev/null
@@ -1,216 +0,0 @@
-//
-//  ARtcChannelDelegate.h
-//  ARtcKit
-//
-//  Created by 余生丶 on 2020/3/24.
-//  Copyright © 2020 zjq. All rights reserved.
-//
-
-#ifndef ARtcChannelDelegate_h
-#define ARtcChannelDelegate_h
-
-@protocol ARtcChannelDelegate <NSObject>
-
-@optional
-
-/** 发生警告回调
-
-@param rtcChannel   ARtcChannel 类。
-@param warningCode   ARWarningCode
-*/
-- (void)rtcChannel:(ARtcChannel *_Nonnull)rtcChannel didOccurWarning:(ARWarningCode)warningCode;
-
-/** 发生错误回调
-
-@param rtcChannel   ARtcChannel 类。
-@param errorCode   ARErrorCode
-*/
-- (void)rtcChannel:(ARtcChannel *_Nonnull)rtcChannel didOccurError:(ARErrorCode)errorCode;
-
-/** 加入频道回调
-
-@param rtcChannel   ARtcChannel 类。
-@param uid   用户ID
-@param elapsed   从调用joinChannelByToken开始到发生此事件过去的时间(ms)。
-*/
-- (void)rtcChannelDidJoinChannel:(ARtcChannel *_Nonnull)rtcChannel withUid:(NSString *_Nonnull)uid elapsed:(NSInteger)elapsed;
-
-/** 重新加入频道回调
-
-@param rtcChannel   ARtcChannel 类。
-@param uid   用户ID
-@param elapsed   从开始重连到重连成功的时间(ms)。
-*/
-- (void)rtcChannelDidRejoinChannel:(ARtcChannel *_Nonnull)rtcChannel withUid:(NSString *_Nonnull)uid elapsed:(NSInteger)elapsed;
-
-/** 已离开频道回调
-
-当用户调用 leaveChannel 离开频道后,SDK 会触发该回调。在该回调方法中,App 可以得到此次通话的总通话时长、SDK 收发数据的流量等信息。
-
-@param rtcChannel  ARtcChannel 类。
-@param stats   通话相关的统计信息:ARChannelStats
-*/
-- (void)rtcChannelDidLeaveChannel:(ARtcChannel *_Nonnull)rtcChannel withStats:(ARChannelStats *_Nonnull)stats;
-
-/** 用户角色已切换回调
-
-直播场景下,当本地用户在加入频道后调用 setClientRole 切换角色时会触发此回调,即主播切换为观众时,或观众切换为主播时。
-
-@param rtcChannel ARtcChannel 类。
-@param oldRole   切换前的角色
-@param newRole   切换后的角色
-*/
-- (void)rtcChannel:(ARtcChannel *_Nonnull)rtcChannel didClientRoleChanged:(ARClientRole)oldRole newRole:(ARClientRole)newRole;
-
-/** 远端用户/主播加入回调
-
-@param rtcChannel ARtcChannel 类。
-@param uid   新加入频道的远端用户/主播 ID。如果 joinChannelByToken 中指定了 uid,则此处返回该 ID;否则使用ar云平台服务器自动分配的 ID。
-@param elapsed   从本地用户加入频道 joinChannelByToken开始到发生此事件过去的时间(ms)。
-*/
-- (void)rtcChannel:(ARtcChannel *_Nonnull)rtcChannel didJoinedOfUid:(NSString *_Nonnull)uid elapsed:(NSInteger)elapsed;
-
-/** 远端用户(通信场景)/主播(直播场景)离开当前频道回调
-
-@param rtcChannel ARtcChannel 类。
-@param uid   离线的用户 ID。
-@param reason   离线原因,详见 ARUserOfflineReason。
-*/
-- (void)rtcChannel:(ARtcChannel *_Nonnull)rtcChannel didOfflineOfUid:(NSString *_Nonnull)uid reason:(ARUserOfflineReason)reason;
-
-/** 网络连接状态已改变回调
-
-该回调在网络连接状态发生改变的时候触发,并告知用户当前的网络连接状态,和引起网络状态改变的原因。
-
-@param rtcChannel ARtcChannel 类。
-@param state 当前的网络连接状态,详见 ARConnectionStateType。
-@param reason 引起网络连接状态发生改变的原因,详见 ARConnectionChangedReason。
-*/
-- (void)rtcChannel:(ARtcChannel * _Nonnull)rtcChannel connectionChangedToState:(ARConnectionStateType)state reason:(ARConnectionChangedReason)reason;
-
-/** 网络连接中断,且 SDK 无法在 10 秒内连接服务器回调
-
-SDK 在调用 joinChannelByToken 后无论是否加入成功,只要 10 秒和服务器无法连接就会触发该回调。
-
-如果 SDK 在断开连接后,20 分钟内还是没能重新加入频道,SDK 会停止尝试重连。
-
-@param rtcChannel ARtcChannel 类。
- */
-- (void)rtcChannelDidLost:(ARtcChannel * _Nonnull)rtcChannel;
-
-/** Token 服务即将过期回调
-
- 在调用 joinChannelByToken 时如果指定了 Token,由于 Token 具有一定的时效,在通话过程中如果 Token 即将失效,SDK 会提前 30 秒触发该回调,提醒应用程序更新 Token。 当收到该回调时,用户需要重新在服务端生成新的 Token,然后调用 renewToken 将新生成的 Token 传给 SDK。
-
- @param rtcChannel  ARtcChannel 类。
- @param token  即将服务失效的 Token
- */
-- (void)rtcChannel:(ARtcChannel * _Nonnull)rtcChannel tokenPrivilegeWillExpire:(NSString *_Nonnull)token;
-
-/** Token 过期回调
-
-在调用 joinChannelByToken 时如果指定了 Token,由于 Token 具有一定的时效,在通话过程中 SDK 可能由于网络原因和服务器失去连接,重连时可能需要新的 Token。 该回调通知 App 需要生成新的 Token,并需调用 renewToken 为 SDK 指定新的 Token。
-
-@param rtcChannel  ARtcChannel 类。
-*/
-- (void)rtcChannelRequestToken:(ARtcChannel *_Nonnull)rtcChannel;
-
-/** 监测到活跃用户的回调
-
-该回调获取当前时间段内累积音量最大者。如果用户开启了 enableAudioVolumeIndication 功能,则当音量检测模块监测到频道内有新的活跃用户说话时,会通过本回调返回该用户的 uid。
-
-**Note**
-- 你需要开启 enableAudioVolumeIndication 方法才能收到该回调
-- uid 返回的是当前时间段内声音最大的用户 uid,而不是瞬时声音最大的用户 uid。
- 
- @param rtcChannel      ARtcChannel 类。
- @param speakerUid 当前时间段声音最大的用户的 uid。
- */
-- (void)rtcChannel:(ARtcChannel * _Nonnull)rtcChannel activeSpeaker:(NSString * _Nonnull)speakerUid;
-
-/** 本地或远端视频大小和旋转信息发生改变回调
-
- @param rtcChannel   ARtcChannel 类。
- @param uid     图像尺寸和旋转信息发生变化的用户的用户 ID
- @param size    新的视频尺寸
- @param rotation 旋转信息 (0 到 360)
- */
-- (void)rtcChannel:(ARtcChannel * _Nonnull)rtcChannel videoSizeChangedOfUid:(NSString *_Nonnull)uid size:(CGSize)size rotation:(NSInteger)rotation;
-
-/** 远端视频状态发生改变回调
-
-@param rtcChannel  ARtcChannel 类。
-@param uid 发生视频状态改变的远端用户 ID。
-@param state 远端视频流状态。详见 ARVideoRemoteState。
-@param reason 远端视频流状态改变的具体原因。详见 ARVideoRemoteStateReason。
-@param elapsed 从本地用户调用 joinChannelByToken 方法到发生本事件经历的时间,单位为 ms。
-*/
-- (void)rtcChannel:(ARtcChannel *_Nonnull)rtcChannel remoteVideoStateChangedOfUid:(NSString *_Nonnull)uid state:(ARVideoRemoteState)state reason:(ARVideoRemoteStateReason)reason elapsed:(NSInteger)elapsed;
-
-/** 远端音频流状态发生改变回调。
-
- 远端用户/主播音频状态发生改变时,SDK 会触发该回调向本地用户报告当前的远端音频流状态。
- 
- @param rtcChannel  ARtcChannel 类。
- @param uid 发生音频状态改变的远端用户 ID。
- @param state  远端音频流状态。详见 ARAudioRemoteState。
- @param reason 远端音频流状态改变的具体原因。详见 ARAudioRemoteStateReason。
- @param elapsed 从本地用户调用 joinChannelByToken 方法到发生本事件经历的时间,单位为 ms。
- */
-- (void)rtcChannel:(ARtcChannel * _Nonnull)rtcChannel remoteAudioStateChangedOfUid:(NSString *_Nonnull)uid state:(ARAudioRemoteState)state reason:(ARAudioRemoteStateReason)reason elapsed:(NSInteger)elapsed;
-
-/** 当前通话统计回调。 该回调在通话或直播中每两秒触发一次。
-
- @param rtcChannel ARtcChannel 类。
- @param stats 通话相关的数据统计信息,详见 ARChannelStats
- */
-- (void)rtcChannel:(ARtcChannel * _Nonnull)rtcChannel reportRtcStats:(ARChannelStats * _Nonnull)stats;
-
-/** 通话中每个用户的网络上下行 last mile 质量报告回调
-
- 该回调描述每个用户在通话中的 last mile 网络状态,其中 last mile 是指设备到 ar云平台 边缘服务器的网络状态。
-
- 该回调每 2 秒触发一次。如果远端有多个用户,该回调每 2 秒会被触发多次。
-
- @param rtcChannel  ARtcChannel 类。
- @param uid       用户 ID。表示该回调报告的是持有该 ID 的用户的网络质量。
- @param txQuality
- 
- 该用户的上行网络质量。基于上行视频的发送码率、上行丢包率、平均往返时延和网络抖动计算。该值代表当前的上行网络质量,帮助判断是否可以支持当前设置的视频编码属性。
-
- 假设上行码率是 500 Kbps,那么支持 480 x 480 的分辨率、30 fps 的帧率没有问题,但是支持 1280 x 720 的分辨率就会有困难。详见 ARNetworkQuality。
- 
- @param rxQuality 该用户的下行网络质量。基于下行网络的丢包率、平均往返延时和网络抖动计算。详见 ARNetworkQuality。
- */
-- (void)rtcChannel:(ARtcChannel * _Nonnull)rtcChannel networkQuality:(NSString * _Nonnull)uid txQuality:(ARNetworkQuality)txQuality rxQuality:(ARNetworkQuality)rxQuality;
-
-/** 通话中远端视频流的统计信息回调
-
- 该回调描述远端用户在通话中端到端的视频流统计信息,针对每个远端用户/主播每 2 秒触发一次。
-
- 如果远端同时存在多个用户/主播,该回调每 2 秒会被触发多次。
-
- @param rtcChannel   ARtcChannel 类。
- @param stats  远端视频统计数据,详见 ARtcRemoteVideoStats
- */
-- (void)rtcChannel:(ARtcChannel * _Nonnull)rtcChannel remoteVideoStats:(ARtcRemoteVideoStats * _Nonnull)stats;
-
-/** 通话中远端音频流的统计信息回调,用于取代 audioQualityOfUid
-
- 该回调描述远端用户在通话中端到端的音频流统计信息,针对每个远端用户/主播每 2 秒触发一次。
-
- 如果远端同时存在多个用户/主播,该回调每 2 秒会被触发多次。
-
- 和 audioTransportStatsOfUid 回调相比,该回调更贴近用户的主观感受。
-
- 比如,当网络发生丢包时,因 FEC(Forward Error Correction,向前纠错码)或重传恢复,最终的音频丢帧率不高,则可以认为整个质量较好。
-
- @param rtcChannel   ARtcChannel 类。
- @param stats  远端音频统计数据,详细定义见 ARtcRemoteAudioStats。
- */
-- (void)rtcChannel:(ARtcChannel * _Nonnull)rtcChannel remoteAudioStats:(ARtcRemoteAudioStats * _Nonnull)stats;
-
-@end
-
-
-#endif /* ARtcChannelDelegate_h */
diff --git a/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Headers/ARtcEngineDelegate.h b/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Headers/ARtcEngineDelegate.h
deleted file mode 100644
index 5aef1d6..0000000
--- a/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Headers/ARtcEngineDelegate.h
+++ /dev/null
@@ -1,915 +0,0 @@
-//
-//  ARtcEngineDelegate.h
-//  ARtcKit
-//
-//  Created by 余生丶 on 2020/3/18.
-//  Copyright © 2020 zjq. All rights reserved.
-//
-
-#ifndef ARtcEngineDelegate_h
-#define ARtcEngineDelegate_h
-#import "AREnumerates.h"
-#import "ARObjects.h"
-
-@class ARtcEngineKit;
-
-@protocol ARtcEngineDelegate <NSObject>
-
-@optional
-
-//MARK: - 核心事件回调
-/**-----------------------------------------------------------------------------
-* @name 核心事件回调
-* -----------------------------------------------------------------------------
-*/
-
-/** 发生警告回调
-
-@param engine   ARtcEngineKit对象
-@param warningCode   警告码,详见 ARWarningCode
-*/
-- (void)rtcEngine:(ARtcEngineKit * _Nonnull)engine didOccurWarning:(ARWarningCode)warningCode;
-
-/** 发生错误回调
-
-@param engine   ARtcEngineKit对象
-@param errorCode   错误码,详见 ARErrorCode
-*/
-- (void)rtcEngine:(ARtcEngineKit *_Nonnull)engine didOccurError:(ARErrorCode)errorCode;
-
-/** 加入频道回调
-
-@param engine   ARtcEngineKit对象
-@param channel   频道名称
-@param uid   用户ID
-@param elapsed   从调用joinChannelByToken开始到发生此事件过去的时间(ms)。
-*/
-- (void)rtcEngine:(ARtcEngineKit * _Nonnull)engine didJoinChannel:(NSString * _Nonnull)channel withUid:(NSString * _Nonnull)uid elapsed:(NSInteger)elapsed;
-
-/** 重新加入频道回调
-
-有时候由于网络原因,客户端可能会和服务器失去连接,SDK 会进行自动重连,自动重连成功后触发此回调方法。
-
-@param engine   ARtcEngineKit对象
-@param channel   频道名称
-@param uid   用户ID
-@param elapsed   从开始重连到重连成功的时间(ms)。
-*/
-- (void)rtcEngine:(ARtcEngineKit *_Nonnull)engine didRejoinChannel:(NSString *_Nonnull)channel withUid:(NSString * _Nonnull)uid elapsed:(NSInteger)elapsed;
-
-/** 已离开频道回调
-
- 当用户调用 leaveChannel 离开频道后,SDK 会触发该回调。在该回调方法中,App 可以得到此次通话的总通话时长、SDK 收发数据的流量等信息。
-
- @param engine ARtcEngineKit对象
- @param stats  通话相关的统计信息,详见 ARChannelStats
- */
-- (void)rtcEngine:(ARtcEngineKit * _Nonnull)engine didLeaveChannelWithStats:(ARChannelStats * _Nonnull)stats;
-
-/** 用户角色已切换回调
-
-直播场景下,当本地用户在加入频道后调用 setClientRole 切换角色时会触发此回调,即主播切换为观众时,或观众切换为主播时。
-
-@param engine   ARtcEngineKit对象
-@param oldRole   切换前的角色
-@param newRole   切换后的角色
-*/
-- (void)rtcEngine:(ARtcEngineKit *_Nonnull)engine didClientRoleChanged:(ARClientRole)oldRole newRole:(ARClientRole)newRole;
-
-/** 远端用户/主播加入回调
-
-@param engine   ARtcEngineKit对象
-@param uid   新加入频道的远端用户/主播 ID。如果 joinChannelByToken 中指定了 uid,则此处返回该 ID;否则使用ar云平台服务器自动分配的 ID。
-@param elapsed   从本地用户加入频道 joinChannelByToken开始到发生此事件过去的时间(ms)。
-*/
-- (void)rtcEngine:(ARtcEngineKit *_Nonnull)engine didJoinedOfUid:(NSString *_Nonnull)uid elapsed:(NSInteger)elapsed;
-
-/** 远端用户(通信场景)/主播(直播场景)离开当前频道回调
-
-@param engine   ARtcEngineKit对象
-@param uid   离线的用户 ID。
-@param reason   离线原因,详见 ARUserOfflineReason。
-*/
-- (void)rtcEngine:(ARtcEngineKit *_Nonnull)engine didOfflineOfUid:(NSString *_Nonnull)uid reason:(ARUserOfflineReason)reason;
-
-/** 网络连接状态已改变回调
-
-该回调在网络连接状态发生改变的时候触发,并告知用户当前的网络连接状态,和引起网络状态改变的原因。
-
-@param engine ARtcEngineKit对象
-@param state 当前的网络连接状态,详见 ARConnectionStateType。
-@param reason 引起网络连接状态发生改变的原因,详见 ARConnectionChangedReason。
-*/
-- (void)rtcEngine:(ARtcEngineKit * _Nonnull)engine connectionChangedToState:(ARConnectionStateType)state reason:(ARConnectionChangedReason)reason;
-
-/** 本地网络类型发生改变回调
-
-@param engine   ARtcEngineKit对象
-@param type   网络连接类型,详见 ARNetworkType。
-*/
-- (void)rtcEngine:(ARtcEngineKit *_Nonnull)engine networkTypeChangedToType:(ARNetworkType)type;
-
-/** 网络连接中断,且 SDK 无法在 10 秒内连接服务器回调
-
-@param engine   ARtcEngineKit对象
-*/
-- (void)rtcEngineConnectionDidLost:(ARtcEngineKit *_Nonnull)engine;
-
-/** Token 服务即将过期回调
-
- 在调用 joinChannelByToken 时如果指定了 Token,由于 Token 具有一定的时效,在通话过程中如果 Token 即将失效,SDK 会提前 30 秒触发该回调,提醒应用程序更新 Token。 当收到该回调时,用户需要重新在服务端生成新的 Token,然后调用 renewToken 将新生成的 Token 传给 SDK。
-
- @param engine ARtcEngineKit 对象
- @param token  即将服务失效的 Token
- */
-- (void)rtcEngine:(ARtcEngineKit * _Nonnull)engine tokenPrivilegeWillExpire:(NSString *_Nonnull)token;
-
-/** Token 过期回调
-
- 在调用 joinChannelByToken 时如果指定了 Token,由于 Token 具有一定的时效,在通话过程中 SDK 可能由于网络原因和服务器失去连接,重连时可能需要新的 Token。 该回调通知 App 需要生成新的 Token,并需调用 renewToken 为 SDK 指定新的 Token。
-
- @param engine ARtcEngineKit 对象
- */
-- (void)rtcEngineRequestToken:(ARtcEngineKit * _Nonnull)engine;
-
-
-//MARK: - 媒体事件回调
-/**-----------------------------------------------------------------------------
-* @name 媒体事件回调
-* -----------------------------------------------------------------------------
-*/
-
-/** 提示频道内谁正在说话、说话者音量及本地用户是否在说话的回调
-
- 与 audioVolumeIndicationBlock 相同。
-
- 该回调报告频道内瞬时音量最高的几个用户(最多三个用户)的用户 ID、他们的音量及本地用户是否在说话。
-
- 该回调默认禁用。可以通过 enableAudioVolumeIndication 方法开启;开启后,无论频道内是否有人说话,SDK 都会按 enableAudioVolumeIndication 方法中设置的时间间隔触发 reportAudioVolumeIndicationOfSpeakers 回调。每次触发,用户会收到两个独立的 reportAudioVolumeIndicationOfSpeakers 回调,其中一个包含本地用户的音量信息,另一个包含远端所有用户的音量信息,详见下方参数描述。
-
-**Note:**
-
- - 若需使用该回调 speakers 数组中的 vad 参数(即本地人声检测功能),请在 enableAudioVolumeIndication 方法中设置 report_vad 为 YES 。
- - 如果有用户将自己静音(调用了 muteLocalAudioStream ),会对该回调的行为产生影响。
- - 本地用户静音后 SDK 即不再报告本地用户的音量提示回调。
- - 远端说话者静音后 20 秒,远端的音量提示回调中将不再包含该用户;如果远端所有用户都将自己静音,20 秒后 SDK 不再报告远端用户的音量提示回调。
-
- @param engine      ARtcEngineKit 对象
- @param speakers    ARtcAudioVolumeInfo 数组。
-
- - 在本地用户的回调中,此数组中包含以下成员:
-  - `uid` = 0,
-  - volume 等于 totalVolume,返回本地用户混音后的音量;
-  - vad,返回本地用户人声状态。
-
- - 在远端用户的回调中,此数组中包含以下成员:
-  - uid 为每位说话者各自的用户 ID;
-  - volume 为说话者各自混音后的音量;
-  - vad = 0,对远端用户无效。 如果报告的 speakers 数组为空,则表示此时远端没有人说话。
-
- @param totalVolume (混音后的)总音量,取值范围为 [0,255]。
-
- - 在本地用户的回调中,totalVolume 为本地用户混音后的音量。
- - 在远端用户的回调中,totalVolume 为所有说话者混音后的总音量。
- */
-- (void)rtcEngine:(ARtcEngineKit * _Nonnull)engine reportAudioVolumeIndicationOfSpeakers:(NSArray<ARtcAudioVolumeInfo *> * _Nonnull)speakers totalVolume:(NSInteger)totalVolume;
-
-/** 监测到活跃用户的回调
-
-该回调获取当前时间段内累积音量最大者。如果用户开启了 enableAudioVolumeIndication 功能,则当音量检测模块监测到频道内有新的活跃用户说话时,会通过本回调返回该用户的 uid。
-
-**Note**
-- 你需要开启 enableAudioVolumeIndication 方法才能收到该回调
-- uid 返回的是当前时间段内声音最大的用户 uid,而不是瞬时声音最大的用户 uid。
- 
- @param engine     ARtcEngineKit 对象
- @param speakerUid 当前时间段声音最大的用户的 uid。
- */
-- (void)rtcEngine:(ARtcEngineKit * _Nonnull)engine activeSpeaker:(NSString * _Nonnull)speakerUid;
-
-/** 已发送本地音频首帧的回调
-
- @param engine  ARtcEngineKit 对象
- @param elapsed 从本地用户调用joinChannelByToken开始到发生此事件过去的时间(ms)。
- */
-- (void)rtcEngine:(ARtcEngineKit * _Nonnull)engine firstLocalAudioFrame:(NSInteger)elapsed;
-
- /** 已显示本地视频首帧的回调
-
- 第一帧本地视频显示时,触发此回调。
-  
- @param engine  ARtcEngineKit 对象
- @param size    本地渲染的视频尺寸(宽度和高度)
- @param elapsed 从本地用户调用joinChannelByToken到发生此事件过去的时间(ms)。 如果在joinChannelByToken前调用了startPreview,是从startPreview到发生此事件过去的时间。
- */
-- (void)rtcEngine:(ARtcEngineKit * _Nonnull)engine firstLocalVideoFrameWithSize:(CGSize)size elapsed:(NSInteger)elapsed;
-
-/** 远端音频流状态发生改变回调。
-
- 远端用户/主播音频状态发生改变时,SDK 会触发该回调向本地用户报告当前的远端音频流状态。
- 
- @param engine ARtcEngineKit 对象
- @param uid 发生音频状态改变的远端用户 ID。
- @param state  远端音频流状态。详见 ARAudioRemoteState。
- @param reason 远端音频流状态改变的具体原因。详见 ARAudioRemoteStateReason。
- @param elapsed 从本地用户调用 joinChannelByToken 方法到发生本事件经历的时间,单位为 ms。
- */
-- (void)rtcEngine:(ARtcEngineKit * _Nonnull)engine remoteAudioStateChangedOfUid:(NSString *_Nonnull)uid state:(ARAudioRemoteState)state reason:(ARAudioRemoteStateReason)reason elapsed:(NSInteger)elapsed;
-
-/** 本地音频状态发生改变回调。
-
- 本地音频的状态发生改变时(包括本地麦克风录制状态和音频编码状态),SDK会触发该回调报告当前的本地音频状态。在本地音频出现故障时,该回调可以帮助你了解当前音频的状态以及出现故障的原因,方便你排查问题。
- 
- **Note:**
-    
- 当状态为 ARAudioLocalStateFailed(3) 时,你可以在 error 参数中查看返回的错误信息。
-
- @param engine ARtcEngineKit 对象
- @param state 当前的本地音频状态。详见 ARAudioLocalState。
- @param error 本地音频出错原因。详见 ARAudioLocalError。
- */
-- (void)rtcEngine:(ARtcEngineKit * _Nonnull)engine localAudioStateChange:(ARAudioLocalState)state error:(ARAudioLocalError)error;
-
-/** 已显示远端视频首帧回调
- 
-@param engine ARtcEngineKit 对象
-@param uid 远端用户 ID
-@param size 视频尺寸(宽和高)
-@param elapsed 从本地用户调用joinChannelByToken到发生此事件过去的时间(ms)。
-*/
-- (void)rtcEngine:(ARtcEngineKit *_Nonnull)engine firstRemoteVideoFrameOfUid:(NSString *_Nonnull)uid size:(CGSize)size elapsed:(NSInteger)elapsed;
-
-/** 音频发布状态改变回调
-
- 本地音频的发布状态发生改变时,SDK会触发该回调报告当前的本地音频发布状态。
- 
- @param engine     ARtcEngineKit 对象
- @param channel    频道名
- @param oldState   之前的发布状态,详见 ARStreamPublishState 。
- @param newState   当前的发布状态,详见 ARStreamPublishState 。
- @param elapseSinceLastState 两次状态变化时间间隔(毫秒)。
- */
-- (void)rtcEngine:(ARtcEngineKit * _Nonnull)engine didAudioPublishStateChange:(NSString *_Nonnull)channel oldState:(ARStreamPublishState)oldState newState:(ARStreamPublishState)newState elapseSinceLastState:(NSInteger)elapseSinceLastState;
-
-/** 视频发布状态改变回调
-
- 本地视频的发布状态发生改变时,SDK会触发该回调报告当前的本地视频发布状态。
-
- @param engine     ARtcEngineKit 对象
- @param channel    频道名
- @param oldState   之前的发布状态,详见 ARStreamPublishState 。
- @param newState   当前的发布状态,详见 ARStreamPublishState 。
- @param elapseSinceLastState 两次状态变化时间间隔(毫秒)。
- */
-- (void)rtcEngine:(ARtcEngineKit * _Nonnull)engine didVideoPublishStateChange:(NSString *_Nonnull)channel oldState:(ARStreamPublishState)oldState newState:(ARStreamPublishState)newState elapseSinceLastState:(NSInteger)elapseSinceLastState;
-
-/** 音频订阅状态发生改变回调
-
- 本地订阅远程音频的状态发生改变时,SDK会触发该回调报告当前订阅远程音频的状态。
-
- @param engine    ARtcEngineKit 对象
- @param channel   频道名
- @param uid       远端用户的 ID
- @param oldState 之前的订阅状态,详见 ARStreamSubscribeState 。
- @param newState  当前的订阅状态,详见 ARStreamSubscribeState 。
- @param elapseSinceLastState 两次状态变化时间间隔(毫秒)。
- */
-- (void)rtcEngine:(ARtcEngineKit * _Nonnull)engine didAudioSubscribeStateChange:(NSString *_Nonnull)channel withUid:(NSString * _Nonnull)uid oldState:(ARStreamSubscribeState)oldState newState:(ARStreamSubscribeState)newState elapseSinceLastState:(NSInteger)elapseSinceLastState;
-
-/** 视频订阅状态发生改变回调
-
- 本地订阅远程视频的状态发生改变时,SDK会触发该回调报告当前订阅远程视频的状态。
-
- @param engine    ARtcEngineKit 对象
- @param channel   频道名
- @param uid       远端用户的 ID
- @param oldState  之前的订阅状态,详见 ARStreamSubscribeState 。
- @param newState  当前的订阅状态,详见 ARStreamSubscribeState 。
- @param elapseSinceLastState 两次状态变化时间间隔(毫秒)。
- */
-- (void)rtcEngine:(ARtcEngineKit * _Nonnull)engine didVideoSubscribeStateChange:(NSString *_Nonnull)channel withUid:(NSString * _Nonnull)uid oldState:(ARStreamSubscribeState)oldState newState:(ARStreamSubscribeState)newState elapseSinceLastState:(NSInteger)elapseSinceLastState;
-
-/** 本地或远端视频大小和旋转信息发生改变回调
-
- @param engine   ARtcEngineKit 对象
- @param uid     图像尺寸和旋转信息发生变化的用户的用户 ID
- @param size    新的视频尺寸
- @param rotation 旋转信息 (0 到 360)
- */
-- (void)rtcEngine:(ARtcEngineKit * _Nonnull)engine videoSizeChangedOfUid:(NSString *_Nonnull)uid size:(CGSize)size rotation:(NSInteger)rotation;
-
-/** 远端视频状态发生改变回调
-
-@param engine ARtcEngineKit 对象。
-@param uid 发生视频状态改变的远端用户 ID。
-@param state 远端视频流状态。详见 ARVideoRemoteState。
-@param reason 远端视频流状态改变的具体原因。详见 ARVideoRemoteStateReason。
-@param elapsed 从本地用户调用 joinChannelByToken 方法到发生本事件经历的时间,单位为 ms。
-*/
-- (void)rtcEngine:(ARtcEngineKit *_Nonnull)engine remoteVideoStateChangedOfUid:(NSString *_Nonnull)uid state:(ARVideoRemoteState)state reason:(ARVideoRemoteStateReason)reason elapsed:(NSInteger)elapsed;
-
-/** 本地视频状态发生改变回调
-
-本地视频的状态发生改变时,SDK 会触发该回调返回当前的本地视频状态。
-
-在本地视频出现故障时,你可以通过该回调了解当前视频的状态以及出现故障的原因,方便排查问题。
-
- @param engine ARtcEngineKit 对象。
- @param state 本地视频状态,详见 ARLocalVideoStreamState。当本地视频状态为 ARLocalVideoStreamStateFailed(3) 时,你可以在 error 参数中查看返回的错误原因。
- @param error 本地视频出错原因,详见 ARLocalVideoStreamError。
- */
-- (void)rtcEngine:(ARtcEngineKit * _Nonnull)engine localVideoStateChange:(ARLocalVideoStreamState)state error:(ARLocalVideoStreamError)error;
-
-//MARK: - 统计数据事件回调
-/**-----------------------------------------------------------------------------
-* @name 统计数据事件回调
-* -----------------------------------------------------------------------------
-*/
-
-/** 通话中远端音频流的统计信息回调,用于取代 audioQualityOfUid
-
- 该回调描述远端用户在通话中端到端的音频流统计信息,针对每个远端用户/主播每 2 秒触发一次。
-
- 如果远端同时存在多个用户/主播,该回调每 2 秒会被触发多次。
-
- 和 audioTransportStatsOfUid 回调相比,该回调更贴近用户的主观感受。
-
- 比如,当网络发生丢包时,因 FEC(Forward Error Correction,向前纠错码)或重传恢复,最终的音频丢帧率不高,则可以认为整个质量较好。
-
- @param engine ARtcEngineKit 对象。
- @param stats  远端音频统计数据,详细定义见 ARtcRemoteAudioStats。
- */
-- (void)rtcEngine:(ARtcEngineKit * _Nonnull)engine remoteAudioStats:(ARtcRemoteAudioStats * _Nonnull)stats;
-
-
-/** 当前通话统计回调。 该回调在通话或直播中每两秒触发一次。
-
- @param engine ARtcEngineKit 对象。
- @param stats 通话相关的数据统计信息,详见 ARChannelStats
- */
-- (void)rtcEngine:(ARtcEngineKit * _Nonnull)engine reportRtcStats:(ARChannelStats * _Nonnull)stats;
-
-/** 通话前网络上下行 last mile 质量报告回调
-
- 该回调描述本地用户在加入频道前的 last mile 网络探测的结果,其中 last mile 是指设备到 边缘服务器的网络状态。
-
- 在调用 enableLastmileTest 之后,该回调每 2 秒触发一次。
-
- @param engine  ARtcEngineKit 对象。
- @param quality 网络上下行质量,基于上下行网络的丢包率和抖动计算,探测结果主要反映上行网络的状态。详见 ARNetworkQuality。
- */
-- (void)rtcEngine:(ARtcEngineKit * _Nonnull)engine lastmileQuality:(ARNetworkQuality)quality;
-
-/** 通话中每个用户的网络上下行 last mile 质量报告回调
-
- 该回调描述每个用户在通话中的 last mile 网络状态,其中 last mile 是指设备到 ar云平台 边缘服务器的网络状态。
-
- 该回调每 2 秒触发一次。如果远端有多个用户,该回调每 2 秒会被触发多次。
-
- @param engine  ARtcEngineKit 对象
- @param uid       用户 ID。表示该回调报告的是持有该 ID 的用户的网络质量。
- @param txQuality
- 
- 该用户的上行网络质量。基于上行视频的发送码率、上行丢包率、平均往返时延和网络抖动计算。该值代表当前的上行网络质量,帮助判断是否可以支持当前设置的视频编码属性。
-
- 假设上行码率是 500 Kbps,那么支持 480 x 480 的分辨率、30 fps 的帧率没有问题,但是支持 1280 x 720 的分辨率就会有困难。详见 ARNetworkQuality。
- 
- @param rxQuality 该用户的下行网络质量。基于下行网络的丢包率、平均往返延时和网络抖动计算。详见 ARNetworkQuality。
- */
-- (void)rtcEngine:(ARtcEngineKit * _Nonnull)engine networkQuality:(NSString * _Nonnull)uid txQuality:(ARNetworkQuality)txQuality rxQuality:(ARNetworkQuality)rxQuality;
-
-/** 通话前网络质量探测报告回调
-
- 通话前网络上下行 last mile 质量探测报告回调。在调用 startLastmileProbeTest 之后,SDK 会在约 30 秒内返回该回调。
-
- @param engine ARtcEngineKit 对象
- @param result 上下行 last mile 质量探测结果,详见 ARLastmileProbeResult。
- */
-- (void)rtcEngine:(ARtcEngineKit * _Nonnull)engine lastmileProbeTestResult:(ARLastmileProbeResult * _Nonnull)result;
-
-/** 本地视频流统计信息回调
-
- @param engine ARtcEngineKit 对象。
- @param stats 报告更新本地视频统计信息,该回调方法每两秒触发一次。
- */
-- (void)rtcEngine:(ARtcEngineKit * _Nonnull)engine localVideoStats:(ARtcLocalVideoStats * _Nonnull)stats;
-
-/** 通话中本地音频流的统计信息回调。
- 
- 该回调描述本地设备发送音频流的统计信息。SDK 每 2 秒触发该回调一次。
- 
- @param engine ARtcEngineKit 对象。
- @param stats 本地音频统计数据。详见 ARtcLocalAudioStats。
- */
-- (void)rtcEngine:(ARtcEngineKit * _Nonnull)engine localAudioStats:(ARtcLocalAudioStats * _Nonnull)stats;
-
-/** 通话中远端视频流的统计信息回调
-
- 该回调描述远端用户在通话中端到端的视频流统计信息,针对每个远端用户/主播每 2 秒触发一次。
-
- 如果远端同时存在多个用户/主播,该回调每 2 秒会被触发多次。
-
-
- @param engine ARtcEngineKit 对象。
- @param stats  远端视频统计数据,详见 ARtcRemoteVideoStats
- */
-- (void)rtcEngine:(ARtcEngineKit * _Nonnull)engine remoteVideoStats:(ARtcRemoteVideoStats * _Nonnull)stats;
-
-//MARK: - 音频播放事件回调
-/**-----------------------------------------------------------------------------
-* @name 音频播放事件回调
-* -----------------------------------------------------------------------------
-*/
-
-/** 本地音乐文件播放已结束回调
-
-本地用户调用 startAudioMixing 播放音乐文件音乐结束后,会触发该回调。如果调用 startAudioMixing 失败,会在 didOccurWarning 回调里,返回警告代码 ARWarningCodeAudioMixingOpenError。
-
-@param engine  ARtcEngineKit 对象。
-*/
-- (void)rtcEngineLocalAudioMixingDidFinish:(ARtcEngineKit *_Nonnull)engine;
-
-/** 本地音效文件播放已结束回调
-
- 当调用 playEffect 播放音效结束后,会触发该回调。
-
- @param engine  ARtcEngineKit 对象。
- @param soundId 自行设定的音效 ID,需保证唯一性。
- */
-- (void)rtcEngineDidAudioEffectFinish:(ARtcEngineKit * _Nonnull)engine soundId:(NSInteger)soundId;
-
-//MARK: - CDN 旁路推流事件回调
-
-/**-----------------------------------------------------------------------------
- * @name CDN 旁路推流事件回调
- * -----------------------------------------------------------------------------
- */
-
-/** RTMP 推流状态发生改变回调
-
- 该回调返回本地用户调用 addPublishStreamUrl 或 removePublishStreamUrl 方法的结果。
-
- RTMP 推流状态发生改变时,SDK 会触发该回调,并在回调中明确状态发生改变的 URL 地址及当前推流状态。
-
- 该回调方便推流用户了解当前的推流状态;推流出错时,你可以通过返回的错误码了解出错的原因,方便排查问题。
-
-@param engine ARtcEngineKit 对象。
-@param url 推流状态发生改变的 URL 地址。
-@param state 当前的推流状态,详见 ARtmpStreamingState。当推流状态为 ARtmpStreamingStateFailure(4) 时,你可以在 errorCode 参数中查看返回的错误信息。
-@param errorCode 具体的推流错误信息,详见 ARtmpStreamingErrorCode。
- */
-- (void)rtcEngine:(ARtcEngineKit * _Nonnull)engine rtmpStreamingChangedToState:(NSString * _Nonnull)url state:(ARtmpStreamingState)state errorCode:(ARtmpStreamingErrorCode)errorCode;
-
-/** RTMP 推流事件回调。
-
- @param engine ARtcEngineKit 对象。
- @param url RTMP 推流 URL。
- @param eventCode RTMP 推流事件码。详见 ARtmpStreamingEvent 。
- */
-- (void)rtcEngine:(ARtcEngineKit * _Nonnull)engine rtmpStreamingEventWithUrl:(NSString * _Nonnull)url eventCode:(ARtmpStreamingEvent)eventCode;
-
-/** 开启旁路推流的结果回调
- 
- 返回 addPublishStreamUrl 方法的调用结果。如果调用不成功,你可以在 errorCode 参数中查看详细的错误信息。
-
- @param engine    ARtcEngineKit 对象
- @param url       主播推流地址或输入的外部音视频流地址
- @param errorCode 常见的错误码如下,详情见 ARErrorCode
-
- - ARErrorCodeNoError(0):推流成功
- - ARErrorCodeFailed(1):推流失败
- - ARErrorCodeInvalidArgument(2):参数错误,如果你在调用 addPublishStreamUrl 前没有调用 setLiveTranscoding 配置 ARLiveTranscoding ,会导致此错误。
- - ARErrorCodeTimedOut(10):推流超时未成功
- - ARErrorCodeAlreadyInUse(19):推流地址已经在推流
- - ARErrorCodeAbort(20): SDK 与推流服务器断开连接,推流中断
- - ARErrorCodeResourceLimited(22):后台没有足够资源推流
- - ARErrorCodeEncryptedStreamNotAllowedPublish(130):推流已加密不能推流
- - ARErrorCodePublishStreamCDNError(151):CDN 相关错误。请调用 removePublishStreamUrl 方法删除原来的推流地址,然后调用 addPublishStreamUrl 方法重新推流到新地址。
- - ARErrorCodePublishStreamNumReachLimit(152):单个主播的推流地址数目达到上限 10。请删掉一些不用的推流地址再增加推流地址。
- - ARErrorCodePublishStreamNotAuthorized(153):操作不属于主播自己的流,例如更新其他主播的流参数、停止其他主播的流。请检查 App 逻辑。
- - ARErrorCodePublishStreamInternalServerError(154):推流服务器出现错误。请调用 addPublishStreamUrl 重新推流。
- - ARErrorCodePublishStreamFormatNotSuppported(156):推流地址格式有错误。请检查推流地址格式是否正确。
- */
-- (void)rtcEngine:(ARtcEngineKit * _Nonnull)engine streamPublishedWithUrl:(NSString * _Nonnull)url errorCode:(ARErrorCode)errorCode;
-
-/** 停止旁路推流的结果回调
-
- 返回 removePublishStreamUrl 方法的调用结果。
-
- @param engine ARtcEngineKit object.
- @param url    主播停止推流的 RTMP 地址
- */
-- (void)rtcEngine:(ARtcEngineKit * _Nonnull)engine streamUnpublishedWithUrl:(NSString * _Nonnull)url;
-
-/** 旁路推流设置被更新回调
-
- setLiveTranscoding 方法中的直播参数 LiveTranscoding rtcEngineTranscodingUpdated 回调会被触发并向主播报告更新信息。
-
- **Note:**
-
- 首次调用 setLiveTranscoding 方法设置转码参数 LiveTranscoding 时,不会触发此回调。
-
- @param engine ARtcEngineKit 对象。
- */
-- (void)rtcEngineTranscodingUpdated:(ARtcEngineKit * _Nonnull)engine;
-
-//MARK: - 直播输入在线媒体流事件回调
-/**-----------------------------------------------------------------------------
-* @name 直播输入在线媒体流事件回调
-* -----------------------------------------------------------------------------
-*/
-
-/** 输入外部视频流状态回调
-
- @param engine  ARtcEngineKit 对象
- @param url 输入进直播的外部视频源 URL 地址
- @param uid 用户 ID
- @param status 详见ARInjectStreamStatus
- */
-- (void)rtcEngine:(ARtcEngineKit *_Nonnull)engine streamInjectedStatusOfUrl:(NSString *_Nonnull)url uid:(NSString * _Nonnull)uid status:(ARInjectStreamStatus)status;
-
-//MARK: - 数据流事件回调
-
-/**-----------------------------------------------------------------------------
- * @name 数据流事件回调
- * -----------------------------------------------------------------------------
- */
-
-/** 接收到对方数据流消息的回调
-
- 该回调表示本地用户收到了远端用户调用 sendStreamMessage 方法发送的流消息。
-
- @param engine   ARtcEngineKit 对象
- @param uid      用户ID
- @param streamId 数据流 ID
- @param data     接收到的数据
- */
-- (void)rtcEngine:(ARtcEngineKit * _Nonnull)engine receiveStreamMessageFromUid:(NSString * _Nonnull)uid streamId:(NSInteger)streamId data:(NSData * _Nonnull)data;
-
-/** 接收对方数据流消息错误的回调
-
- 该回调表示本地用户未收到远端用户调用 sendStreamMessage 方法发送的流消息。
-
- @param engine   ARtcEngineKit 对象
- @param uid      用户 ID
- @param streamId 数据流 ID
- @param error   错误代码: ARErrorCode
- @param missed 丢失的消息数量
- @param cached 数据流中断时,后面缓存的消息数量
- */
-- (void)rtcEngine:(ARtcEngineKit * _Nonnull)engine didOccurStreamMessageErrorFromUid:(NSString * _Nonnull)uid streamId:(NSInteger)streamId error:(NSInteger)error missed:(NSInteger)missed cached:(NSInteger)cached;
-
-//MARK: - Miscellaneous Delegate Methods
-
-//MARK: - 音视频流回退事件回调
-/**-----------------------------------------------------------------------------
- * @name 本地发布流已回退为音频流
- * -----------------------------------------------------------------------------
- */
-
- /** 远端订阅流已回退为音频流
-
-  如果你调用了 setRemoteSubscribeFallbackOption, 接口并将回退选项设置为 ARStreamFallbackOptionAudioOnly,当下行网络环境不理想、仅接收远端音频流时,或当下行网络改善、恢复订阅音视频流时,会触发该回调。
-
- **Note:**
-
-  远端订阅流因弱网环境不能同时满足音视频而回退为小流时,你可以使用 remoteVideoStats 方法来监控远端视频大小流的切换。
-
- @param engine              ARtcEngineKit 对象。
- @param isFallbackOrRecover 回退为音频流或恢复为音视频流:
-
- * YES: 由于网络环境不理想,远端订阅流已回退为音频流
- * NO: 由于网络环境改善,订阅的音频流已恢复为音视频流
- @param uid  远端用户ID
- */
-- (void)rtcEngine:(ARtcEngineKit * _Nonnull)engine didRemoteSubscribeFallbackToAudioOnly:(BOOL)isFallbackOrRecover byUid:(NSString *_Nonnull)uid;
-
-//MARK: - 媒体设备事件回调
-/**-----------------------------------------------------------------------------
-* @name 媒体设备事件回调
-* -----------------------------------------------------------------------------
-*/
-
-#if (!(TARGET_OS_IPHONE) && (TARGET_OS_MAC))
-
-/** 设备状态改变回调 (仅支持 macOS)
-
- @param engine     ARtcEngineKit 对象
- @param deviceId   设备ID
- @param deviceType 设备类型,详见 ARMediaDeviceType
- @param state      设备的状态:
- - 0: 已添加。
- - 1: 删除。
- */
-- (void)rtcEngine:(ARtcEngineKit * _Nonnull)engine device:(NSString * _Nonnull)deviceId type:(ARMediaDeviceType)deviceType stateChanged:(NSInteger) state;
-
-#endif
-
-/** 语音路由已发生变化回调
-
-当语音路由发生变化时,SDK 会触发此回调。
-
- @param engine  ARtcEngineKit 对象
- @param routing 设置语音路由,详见 ARAudioOutputRouting
- */
-- (void)rtcEngine:(ARtcEngineKit * _Nonnull)engine didAudioRouteChanged:(ARAudioOutputRouting)routing;
-
-#if defined (TARGET_OS_IPHONE) && TARGET_OS_IPHONE
-
-/** 报告本地人脸检测结果。
- 
- 调用 enableFaceDetection(YES) 开启本地人脸检测后,你可以通过该回调实时获取以下人脸检测的信息:
- 
- - 摄像头采集的画面大小
- - 人脸在画面中的位置
- - 人脸距设备屏幕的距离,该值由 SDK 通过摄像头采集的画面大小和人脸在画面中的位置拟合计算得出。
- 
-**Note**
- 
- - 当检测到摄像头前没有人脸时,该回调触发频率会降低,以节省设备耗能。
- - 当人脸距离设备屏幕过近时,SDK 不会触发该回调。
- 
- @param engine ARtcEngineKit 对象。
- @param width 摄像头采集画面的宽度 (px)。
- @param height 摄像头采集画面的高度 (px)。
- @param faces 检测到的人脸信息,详见 ARFacePositionInfo 。
- 
- 检测到几张人脸,就会报告几个 ARFacePositionInfo 数组。数组长度可以为 0,表示没有检测到摄像头前出现人脸。
- */
-- (void)rtcEngine:(ARtcEngineKit * _Nonnull)engine facePositionDidChangeWidth:(int)width previewHeight:(int)height faces:(NSArray<ARFacePositionInfo *> *_Nullable)faces;
-
-#endif
-
-//MARK: - 跨频道媒体流转发回调
-
-/**-----------------------------------------------------------------------------
-* @name 跨频道媒体流转发回调
-* -----------------------------------------------------------------------------
-*/
-/** 跨频道媒体流转发状态发生改变回调。
-
- 当跨频道媒体流转发状态发生改变时,SDK 会触发该回调,并报告当前的转发状态以及相关的错误信息。
- 
- @param engine ARtcEngineKit 对象
- @param state 跨频道媒体流转发状态 ARChannelMediaRelayState。
- @param error 跨频道媒体流转发出错的错误码 ARChannelMediaRelayError。
- */
-- (void)rtcEngine:(ARtcEngineKit * _Nonnull)engine channelMediaRelayStateDidChange:(ARChannelMediaRelayState)state error:(ARChannelMediaRelayError)error;
-
-/** 跨频道媒体流转发事件回调。
- 
- @param engine ARtcEngineKit 对象
- @param event 跨频道媒体流转发事件码
- */
-- (void)rtcEngine:(ARtcEngineKit * _Nonnull)engine didReceiveChannelMediaRelayEvent:(ARChannelMediaRelayEvent)event;
-
-//MARK: - 其它回调方法(不推荐使用)
-/**-----------------------------------------------------------------------------
-* @name 其它回调方法
-* -----------------------------------------------------------------------------
-*/
-/** 已完成远端视频首帧解码回调
- 
-**Note**
- 
-收到该回调,可调用setupRemoteVideo方法显示远端视图。推荐使用 remoteVideoStateChangedOfUid 回调的 ARVideoRemoteStateStarting(1) 和 ARVideoRemoteStateDecoding(2)。
- 
-@param engine ARtcEngineKit 对象
-@param uid 远端用户 ID
-@param size 视频流尺寸(宽度和高度)
-@param elapsed 从本地用户调用 joinChannelByToken到发生此事件过去的时间(ms)。
-*/
-- (void)rtcEngine:(ARtcEngineKit *_Nonnull)engine firstRemoteVideoDecodedOfUid:(NSString *_Nonnull)uid size:(CGSize)size elapsed:(NSInteger)elapsed;
-
-/** 已接收远端音频首帧的回调
- 
-**Note**
-   
-推荐使用 remoteAudioStateChangedOfUid 回调。
-
-@param engine ARtcEngineKit 对象
-@param uid 远端用户 ID
-@param elapsed 从本地用户调用joinChannelByToken到发生此事件的时间(ms)。
-*/
-- (void)rtcEngine:(ARtcEngineKit *_Nonnull)engine firstRemoteAudioFrameOfUid:(NSString *_Nonnull)uid elapsed:(NSInteger)elapsed;
-
-/** 已解码远端音频首帧的回调
-
-**Note**
-    
-推荐使用 remoteAudioStateChangedOfUid 回调。SDK 完成远端音频首帧解码,并发送给音频模块用以播放时,会触发此回调。有两种情况:
- 
- * 远端用户首次上线后发送音频
- * 远端用户音频离线再上线发送音频。音频离线指本地在 15 秒内没有收到音频包,可能有如下原因:
-    * 远端用户离开频道
-    * 远端用户掉线
-    * 远端用户停止发送音频流(调用了 muteLocalAudioStream)
-    * 远端用户关闭音频(调用了 disableAudio)
-
-@param engine ARtcEngineKit 对象
-@param uid 远端用户 ID
-@param elapsed 从本地用户调用 joinChannelByToken 直至该回调触发的延迟,单位为毫秒。
-*/
-- (void)rtcEngine:(ARtcEngineKit *_Nonnull)engine firstRemoteAudioFrameDecodedOfUid:(NSString *_Nonnull)uid elapsed:(NSInteger)elapsed;
-
-/** 远端用户暂停/重新发送视频回调(由muteLocalVideoStream触发 )
-
-**Note**
- 
- 推荐使用 remoteVideoStateChangedOfUid 回调的:
- 
- * ARVideoRemoteStateStopped(0) and ARVideoRemoteStateReasonRemoteMuted(5).
- * ARVideoRemoteStateDecoding(2) 和 ARVideoRemoteStateReasonRemoteUnmuted(6)。
-
- 当频道内的用户或主播数超过 20 人,该回调会失效。
-
- @param engine ARtcEngineKit 对象
- @param muted  暂停或恢复发送视频流:
-
- * Yes: 该用户已暂停发送其视频流
- * No: 该用户已恢复发送其视频流
-
- @param uid    远端用户 UID
- */
-- (void)rtcEngine:(ARtcEngineKit * _Nonnull)engine didVideoMuted:(BOOL)muted byUid:(NSString *_Nonnull)uid;
-
-/** 远端用户音频静音回调
- 
- 该回调是由远端用户调用 muteLocalAudioStream 方法关闭或开启音频发送触发的。当频道内的用户或主播人数超过 20 时,该回调不生效。
-
-**Note**
-    
-推荐使用 remoteAudioStateChangedOfUid 回调:
- * ARAudioRemoteReasonRemoteMuted(5)
- * ARAudioRemoteReasonRemoteUnmuted(6)
-
-@param engine ARtcEngineKit 对象
-@param muted YES: 静音 NO:取消静音
-@param uid 远端用户 ID
-*/
-- (void)rtcEngine:(ARtcEngineKit *_Nonnull)engine didAudioMuted:(BOOL)muted byUid:(NSString *_Nonnull)uid;
-
-/** 其他用户启用/关闭视频回调(enableVideo 或 disableVideo触发)
-
-**Note**
-    
-推荐使用 remoteVideoStateChangedOfUid 回调的:
- 
- * ARVideoRemoteStateStopped(0) 和 ARVideoRemoteStateReasonRemoteMuted(5)。
- * ARVideoRemoteStateDecoding(2) 和 ARVideoRemoteStateReasonRemoteUnmuted(6)。
- 
-提示有其他用户启用/关闭了视频功能。关闭视频功能是指该用户只能进行语音直播,不能显示、发送自己的视频,也不能接收、显示别人的视频。
-该回调是由远端用户调用 enableVideo 或 disableVideo 方法开启或关闭视频模块触发的。
- 
-@param engine ARtcEngineKit 对象
-@param enabled 是否启用了视频功能:
- * YES: 该用户已启用了视频功能。启用后,该用户可以进行视频通话或直播。
- * NO: 该用户已关闭了视频功能。关闭后,该用户只能进行语音通话或直播,不能显示、发送自己的视频,也不能接收、显示别人的视频。
-@param uid 远端用户 ID
-*/
-- (void)rtcEngine:(ARtcEngineKit *_Nonnull)engine didVideoEnabled:(BOOL)enabled byUid:(NSString *_Nonnull)uid;
-
-/** 其他用户启用/关闭本地视频回调(enableLocalVideo触发)
-
-**Note**
-    
-推荐使用 remoteVideoStateChangedOfUid 回调的:
- 
- * ARVideoRemoteStateStopped(0) 和 ARVideoRemoteStateReasonRemoteMuted(5)。
- * ARVideoRemoteStateDecoding(2) 和 ARVideoRemoteStateReasonRemoteUnmuted(6)。
-
-@param engine ARtcEngineKit 对象
-@param enabled 是否启用了视频功能
- * YES: 该用户已启用本地视频功能。启用后,其他用户可以接收到该用户的视频流。
- * NO: 该用户已关闭视频功能。关闭后,该用户仍然可以接收其他用户的视频流,但其他用户接收不到该用户的视频流。
-@param uid 远端用户 ID
-*/
-- (void)rtcEngine:(ARtcEngineKit *_Nonnull)engine didLocalVideoEnabled:(BOOL)enabled byUid:(NSString *_Nonnull)uid;
-
-/** 麦克风状态已改变回调
- 
- 该回调是由本地用户调用 enableLocalAudio 方法开启或关闭本地音频采集触发的。
-
-**Note**
-    
-推荐使用 localAudioStateChange 回调的: ARAudioLocalStateStopped(0) 或 ARAudioLocalStateRecording(1)。
-
-@param engine ARtcEngineKit 对象
-@param enabled YES: 麦克风已启用 NO: 麦克风已禁用
-*/
-- (void)rtcEngine:(ARtcEngineKit *_Nonnull)engine didMicrophoneEnabled:(BOOL)enabled;
-
-/** 网络连接中断回调
- 
- SDK 在和服务器建立连接后,失去了网络连接超过 4 秒,会触发该回调。在触发事件后,SDK 会主动重连服务器,所以该事件可以用于 UI 提示。
-
- 与 rtcEngineConnectionDidLost 回调的区别是:
-
- rtcEngineConnectionDidInterrupted 回调一定是发生在加入频道成功后,且 SDK 刚失去和服务器连接超过 4 秒时触发。
- rtcEngineConnectionDidLost 回调是无论之前加入频道是否连接成功,只要 10 秒内和服务器无法建立连接都会触发。
- 如果 SDK 在断开连接后,20 分钟内还是没能重新加入频道,SDK 会停止尝试重连。
-
-**Note**
-    
-推荐使用connectionChangedToState回调。
-
-@param engine ARtcEngineKit 对象
-*/
-- (void)rtcEngineConnectionDidInterrupted:(ARtcEngineKit *_Nonnull)engine;
-
-/** 连接已被禁止回调
- 
- 当你被服务端禁掉连接的权限时,会触发该回调。
-
-**Note**
-    
-推荐使用connectionChangedToState回调。
-
-@param engine ARtcEngineKit 对象
-*/
-- (void)rtcEngineConnectionDidBanned:(ARtcEngineKit *_Nonnull)engine;
-
-/** 通话中远端音频流传输的统计信息回调
-
- 该回调描述远端用户通话中端到端的网络统计信息,通过音频包计算,用客观的数据,如丢包、网络延迟等,展示当前网络状态。
-
- 通话中,当用户收到远端用户/主播发送的音频数据包后,会每 2 秒触发一次该回调。
- 
- 和 remoteAudioStats 回调相比,该回调以数据展示当前网络状态,因此更客观。
- 
-**Note**
-     
- 推荐使用remoteAudioStats回调。
-
- @param engine ARtcEngineKit 对象
- @param uid 用户 ID,指定是哪个用户/主播的音频包
- @param delay 音频包从发送端到接收端的延时(毫秒)
- @param lost 音频包从发送端到接收端的丢包率(%)
- @param rxKBitRate 远端音频包的接收码率(Kbps)
- */
-- (void)rtcEngine:(ARtcEngineKit * _Nonnull)engine audioTransportStatsOfUid:(NSString *_Nonnull)uid delay:(NSUInteger)delay lost:(NSUInteger)lost rxKBitRate:(NSUInteger)rxKBitRate;
-
-/** 通话中远端视频流传输的统计信息回调
-
- 该回调描述远端用户通话中端到端的网络统计信息,通过视频包计算,用客观的数据,如丢包、网络延迟等,展示当前网络状态。
-
- 通话中,当用户收到远端用户/主播发送的视频数据包后,会每 2 秒触发一次该回调。
-
- 和 remoteVideoStats 回调相比,该回调以数据展示当前网络状态,因此更客观。
- 
-**Note**
-     
- 推荐使用remoteVideoStats回调。
-
- @param engine ARtcEngineKit 对象
- @param uid 用户 ID,指定是哪个用户/主播的视频包
- @param delay 视频包从发送端到接收端的延时(毫秒)
- @param lost 视频包从发送端到接收端 800 ms 内的丢包率(%)
- @param rxKBitRate 远端视频包的接收码率(Kbps)
- */
-- (void)rtcEngine:(ARtcEngineKit * _Nonnull)engine videoTransportStatsOfUid:(NSString *_Nonnull)uid delay:(NSUInteger)delay lost:(NSUInteger)lost rxKBitRate:(NSUInteger)rxKBitRate;
-
-/** 远端音频质量回调
-
- 该回调描述远端用户在通话中的音频质量,针对每个远端用户/主播每 2 秒触发一次。如果远端同时存在多个用户/主播,该回调每 2 秒会被触发多次。
- 
-**Note**
-     
- 推荐使用remoteVideoStats回调。
-
- @param engine  ARtcEngineKit 对象
- @param uid 用户 ID,指定是谁发的音频流。
- @param quality 语音质量,详见 ARNetworkQuality
- @param delay  音频包从发送端到接收端的延迟(毫秒)。包括声音采样前处理、网络传输、网络抖动缓冲引起的延迟。
- @param lost    音频包从发送端到接收端的丢包率(%)
- */
-- (void)rtcEngine:(ARtcEngineKit * _Nonnull)engine audioQualityOfUid:(NSString *_Nonnull)uid quality:(ARNetworkQuality)quality delay:(NSUInteger)delay lost:(NSUInteger)lost;
-
-/** 摄像头就绪回调
- 
- 提示已成功打开摄像头,可以开始捕获视频。
- 
-**Note**
-     
- 推荐使用localVideoStateChange回调 state 参数中的 ARLocalVideoStreamStateCapturing(1)。
- 
- @param engine ARtcEngineKit 对象
- */
-- (void)rtcEngineCameraDidReady:(ARtcEngineKit * _Nonnull)engine;
-
-/** 视频功能停止回调
- 
- 提示视频功能已停止。 App 如需在停止视频后对 view 做其他处理(比如显示其他画面),可以在这个回调中进行。
-
-**Note**
-     
- 推荐使用localVideoStateChange回调 state 参数中的 ARLocalVideoStreamStateCapturing(0)。
-
- @param engine ARtcEngineKit 对象
- */
-- (void)rtcEngineVideoDidStop:(ARtcEngineKit * _Nonnull)engine;
-
-@end
-
-
-#endif /* ARtcEngineDelegate_h */
diff --git a/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Headers/ARtcEngineKit.h b/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Headers/ARtcEngineKit.h
deleted file mode 100644
index 5f01d78..0000000
--- a/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Headers/ARtcEngineKit.h
+++ /dev/null
@@ -1,2143 +0,0 @@
-//
-//  ARtcEngineKit.h
-//  ARtcKit
-//
-//  Created by zjq on 2020/3/18.
-//  Copyright © 2020 zjq. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-#import "ARtcEngineDelegate.h"
-#import "ARObjects.h"
-#import "ARMediaIO.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@class ARtcEngineKit;
-@class ARtcChannel;
-
-__attribute__((visibility("default"))) @interface ARtcEngineKit : NSObject
-
-//MARK: - 核心方法
-
-/**-----------------------------------------------------------------------------
-* @name 核心方法
-* -----------------------------------------------------------------------------
-*/
-
-/** 实例化ARtcEngineKit对象
-
-该方法初始化一个 ARtcEngineKit 单例。使用 ARtcEngineKit,必须先调用该接口进行初始化。
-
-**Note**
- 
-请确保在调用其他 API 前先调用该方法创建并初始化 ARtcEngineKit。 一个 ARtcEngineKit 实例对象只能使用一个 App ID。如需更换 App ID,必须先调用 destroy 销毁当前实例,再调用本方法重新创建实例。
- 
-@param appId    ar云平台 为 App 开发者签发的 App ID。每个项目都应该有一个独一无二的 App ID。如果你的开发包里没有 App ID,请从ar云平台官网申请一个新的 App ID。在你调用 joinChannelByToken加入ar云平台的全球网络实现一对一或一对多直播通信时需要:
- 
- * 用 App ID 标示你的项目和所属组织
- * 用一个独一无二的频道名称
-@param delegate ARtcEngineDelegate.
-
-@return 一个 ARtcEngineKit 实例对象
-*/
-+ (instancetype _Nonnull)sharedEngineWithAppId:(NSString *_Nonnull)appId delegate:(id<ARtcEngineDelegate> _Nullable)delegate;
-
-/** 销毁 RtcEngine 实例
-
- 该方法用于释放SDK 使用的所有对象资源。帮助偶尔使用音视频通话的 App 在无需通话时释放资源。一旦 App 调用了 destroy 接口销毁创建的 ARtcEngineKit 实例,将无法调用 SDK 内的任何方法也不再会有任何回调产生。如需重启通话,请调用初始化方法 sharedEngineWithAppId创建一个新的 ARtcEngineKit 实例。
-
-**Note**
-
- * 该方法需要在子线程中操作
- * 该方法为同步调用。 App 不得在 SDK 生成的回调中调用该方法,不然 SDK 只能等候该回调返回才能重新获取相应的对象资源造成死锁。
- */
-+ (void)destroy;
-
-/** 设置频道使用场景
-
- * 为保证实时音视频质量,我们建议相同频道内的用户使用同一种频道场景。
- * 该方法必须在加入频道前调用,进入频道后无法再设置频道场景。
-
-@param profile   频道使用场景,详见ARChannelProfile。
- 
-@return 0方法调用成功,<0方法调用失败
-*/
-- (int)setChannelProfile:(ARChannelProfile)profile;
-
-/** 设置用户角色
- 
-在加入频道前,用户需要通过本方法设置观众(默认)或主播角色。在加入频道后,用户可以通过本方法切换用户角色。
-
-如果你在加入频道后调用该方法切换用户角色,调用成功后,本地会触发 didClientRoleChanged 回调;远端会触发 didJoinedOfUid 或 didOfflineOfUid(ARUserOfflineReasonBecomeAudience) 回调。
- 
-**Note**
-  
-该方法仅适用于直播场景。
-
-@param role   直播场景里的用户角色,详见ARClientRole:
- 
- * ARClientRoleBroadcaster = 1; 主播
- * ARClientRoleAudience = 2; 观众(默认)
- 
-@return 0方法调用成功,<0方法调用失败
-*/
-- (int)setClientRole:(ARClientRole)role;
-
-/** 加入频道
-
-该方法让用户加入通话频道,在同一个频道内的用户可以互相通话,多个用户加入同一个频道,可以群聊。 使用不同 App ID 的 App 是不能互通的。如果已在通话中,用户必须调用 leaveChannel 退出当前通话,才能进入下一个频道。SDK 在通话中使用 iOS 系统的 AVAudioSession 共享对象进行录音和播放, App 对该对象的操作可能会影响 SDK 的音频相关功能。
-
-调用该 API 后会触发 joinSuccessBlock 或 didJoinChannel 回调。block 比 delegate 优先级高,如果两种回调都实现了,只有 block 会触发。
-
-我们建议你将 joinSuccessBlock 设置为 nil,使用 delegate 回调。
-
-加入频道后,本地会触发 didJoinChannel 回调;通信场景下的用户和直播场景下的主播加入频道后,远端会触发 didJoinedOfUid 回调。
-
-在网络状况不理想的情况下,客户端可能会与 ar云平台 的服务器失去连接;SDK 会自动尝试重连,重连成功后,本地会触发 didRejoinChannel 回调。
-
-**Note**
-
- * 频道内每个用户的 UID 必须是唯一的。如果将 UID 设为 nil,系统将自动分配一个 UID。如果想要从不同的设备同时接入同一个频道,请确保每个设备上使用的 UID 是不同的。
- * 在加入频道时,SDK 调用 setCategory(AVAudioSessionCategoryPlayAndRecord) 将 AVAudioSession 设置到 PlayAndRecord 模式, App 不应将其设置到其他模式。设置该模式时,正在播放的声音会被打断(比如正在播放的响铃声)。
-
- @param token 动态密钥
-
- * 安全要求不高: 将值设为 nil
- * 安全要求高: 将值设置为 Token。如果你已经启用了 App Certificate,请务必使用 Token。
- * 请务必确保用于生成 Token 的 App ID 和 sharedEngineWithappId 方法初始化引擎时用的是同一个 App ID。
-
- @param channelId 标识通话频道的字符串,长度在 64 字节以内的字符串。
- 以下为支持的字符集范围(共 89 个字符):
-
- * 26 个小写英文字母 a-z
- * 26 个大写英文字母 A-Z
- * 10 个数字 0-9
- * 空格
- * "!", "#", "$", "%", "&", "(", ")", "+", "-", ":", ";", "<", "=", ".", ">", "?", "@", "[", "]", "^", "_", "{", "}", "|", "~", ","
-
-@param uid 用户 ID,建议设置长度1~48,确保uid符合规则,并保证唯一性。如果不填或设置为nil,SDK 会自动分配一个,并在 joinSuccessBlock 回调方法中返回,App 层必须记住该返回值并维护,SDK 不对该返回值进行维护。
- 
- * 26 个小写英文字母 a-z
- * 26 个大写英文字母 A-Z
- * 10 个数字 0-9
-@param joinSuccessBlock 成功加入频道回调。joinSuccessBlock 优先级高于 didJoinChannel,2 个同时存在时,didJoinChannel 会被忽略。 需要有 didJoinChannel 回调时,请将 joinSuccessBlock 设置为 nil 。
-
-@return 0方法调用成功,<0方法调用失败
-
- * ARErrorCodeInvalidArgument(-2)
- * ARErrorCodeNotReady(-3)
- * ARErrorCodeRefused(-5)
-*/
-- (int)joinChannelByToken:(NSString * _Nullable)token
-                channelId:(NSString * _Nonnull)channelId
-                      uid:(NSString * _Nullable)uid
-              joinSuccess:(void(^ _Nullable)(NSString * _Nonnull channel, NSString * _Nonnull uid, NSInteger elapsed))joinSuccessBlock;
-
-/** 快速切换直播频道。
-
- 当直播频道中的观众想从一个频道切换到另一个频道时,可以调用该方法,实现快速切换。
-
- 成功调用该方切换频道后,本地会先收到离开原频道的回调 didLeaveChannelWithStats,再收到成功加入新频道的回调 didJoinChannel。
- 
-**Note**
- 
- 该方法仅适用直播频道中的观众用户。
-
- @param token 动态密钥
-
- * 安全要求不高: 将值设为 nil
- * 安全要求高: 将值设置为 Token。如果你已经启用了 App Certificate,请务必使用 Token。
- * 请务必确保用于生成 Token 的 App ID 和 sharedEngineWithappId 方法初始化引擎时用的是同一个 App ID。
-
- @param channelId 标识通话频道的字符串,长度在 64 字节以内的字符串。
- 以下为支持的字符集范围(共 89 个字符):
-
- * 26 个小写英文字母 a-z
- * 26 个大写英文字母 A-Z
- * 10 个数字 0-9
- * 空格
- * "!", "#", "$", "%", "&", "(", ")", "+", "-", ":", ";", "<", "=", ".", ">", "?", "@", "[", "]", "^", "_", "{", "}", "|", "~", ","
- @param joinSuccessBlock 成功加入频道回调。joinSuccessBlock 优先级高于 didJoinChannel,2 个同时存在时,didJoinChannel 会被忽略。 需要有 didJoinChannel 回调时,请将 joinSuccessBlock 设置为 nil 。
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)switchChannelByToken:(NSString * _Nullable)token
-                  channelId:(NSString * _Nonnull)channelId
-                joinSuccess:(void(^ _Nullable)(NSString * _Nonnull channel, NSString *_Nonnull uid, NSInteger elapsed))joinSuccessBlock;
-
-/** 离开频道
-
-离开频道,即挂断或退出通话。
-
-当调用 joinChannelByToken 方法后,必须调用 leaveChannel 结束通话,否则无法开始下一次通话。 不管当前是否在通话中,都可以调用本方法,没有副作用。该方法会把会话相关的所有资源释放掉。该方法是异步操作,调用返回时并没有真正退出频道。
-
- * 成功调用该方法离开频道后,本地会触发 didLeaveChannelWithStats 回调;
- * 通信场景下的用户和直播场景下的主播离开频道后,远端会触发 didOfflineOfUid(ARUserOfflineReasonBecomeAudience) 回调。
-
-**Note**
-
-- 如果你调用了本方法后立即调用 destroy 方法,SDK 将无法触发 didLeaveChannelWithStats 回调。
-- 如果你在旁路推流时调用本方法, SDK 将自动调用 removePublishStreamUrl 方法。
-- 在调用本方法时,iOS 默认情况下 SDK 会停用 audio session,可能会对其他应用程序造成影响。如果想改变这种默认行为,可以通过setAudioSessionOperationRestriction 方法设置 ARAudioSessionOperationRestrictionDeactivateSession,这样在 leaveChannel 时,SDK 不会停用 audio session。
-
- @param leaveChannelBlock 成功离开频道的回调,提供通话相关的统计信息,详见 ARChannelStats
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)leaveChannel:(void (^ _Nullable) (ARChannelStats *_Nonnull stat))leaveChannelBlock;
-
-/** 更新 Token
-
-该方法用于更新 Token。如果启用了 Token 机制,过一段时间后使用的 Token 会失效。当以下任意一种情况发生时:
-
- * tokenPrivilegeWillExpire 回调。
- * connectionChangedToState 回调的 reason 参数报告 ARConnectionChangedTokenExpired(9)。
-
-**Note**
-
- App 应重新获取 Token,然后调用该 API 更新 Token,否则 SDK 无法和服务器建立连接。
-
- @param token 新的 Token
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)renewToken:(NSString * _Nonnull)token;
-
-/** 获取当前网络连接状态
- 
-@return 当前的网络连接状态,详见 ARConnectionStateType。
-*/
-- (ARConnectionStateType)getConnectionState;
-
-/** 开始跨频道媒体流转发。该方法可用于实现跨频道连麦等场景。
-
- 成功调用该方法后,SDK 会触发 channelMediaRelayStateDidChange 和 didReceiveChannelMediaRelayEvent 回调,并在回调中报告当前的跨频道媒体流转发状态和事件。
-
- 如果 channelMediaRelayStateDidChange 回调报告 ARChannelMediaRelayStateRunning(2) 和 ARChannelMediaRelayStateIdle(0),且 didReceiveChannelMediaRelayEvent 回调报告 ARChannelMediaRelayEventSentToDestinationChannel(4),则表示 SDK 开始在源频道和目标频道之间转发媒体流。
- 如果 channelMediaRelayStateDidChange 回调报告 ARChannelMediaRelayStateFailure(3),则表示跨频道媒体流转发出现异常。
- 
-**Note**
-
- - 请在成功加入频道后调用该方法。
- - 该方法仅对直播场景下的主播有效。
- - 成功调用该方法后,若你想再次调用该方法,必须先调用 stopChannelMediaRelay 方法退出当前的转发状态。
- - 跨频道媒体流转发功能需要提交工单联系技术支持开通。
-
- @param config 跨频道媒体流转发参数配置: ARChannelMediaRelayConfiguration 类。
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)startChannelMediaRelay:(ARChannelMediaRelayConfiguration * _Nonnull)config;
-
-/** 更新媒体流转发的频道。成功开始跨频道转发媒体流后,如果你希望将流转发到多个目标频道,或退出当前的转发频道,可以调用该方法。
-
- 成功调用该方法后,SDK 会触发 didReceiveChannelMediaRelayEvent 回调,并在回调中报告状态码 ARChannelMediaRelayEventUpdateDestinationChannel(7)。
-
- **Note**
-
- - 请在 startChannelMediaRelay 方法后调用该方法,更新媒体流转发的频道。
- - 跨频道媒体流转发最多支持 4 个目标频道。如果直播间里已经有 4 个频道了,你可以在调用该方法之前,调用 ARChannelMediaRelayConfiguration 中的 removeDestinationInfoForChannelName 方法移除不需要的频道。
- 
- @param config 跨频道媒体流转发参数配置: ARChannelMediaRelayConfiguration 类。
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)updateChannelMediaRelay:(ARChannelMediaRelayConfiguration * _Nonnull)config;
-
-/** 停止跨频道媒体流转发。一旦停止,主播会退出所有目标频道。
-
- 成功调用该方法后,SDK 会触发 channelMediaRelayStateDidChange 回调。如果报告 ARChannelMediaRelayStateIdle(0) 和 ARChannelMediaRelayErrorNone(0),则表示已停止转发媒体流。
-
- Note: 如果该方法调用不成功,SDK 会触发 channelMediaRelayStateDidChange 回调,并报告状态码 ARChannelMediaRelayErrorServerNoResponse(2) 或 ARChannelMediaRelayEventUpdateDestinationChannelRefused(8)。你可以调用 leaveChannel 方法离开频道,跨频道媒体流转发会自动停止。
- 
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)stopChannelMediaRelay;
-
-//MARK: - 音频核心方法
-
-/**-----------------------------------------------------------------------------
-* @name 音频核心方法
-* -----------------------------------------------------------------------------
-*/
-
-/** 启用音频模块
-
- 本方法可以启用音频模块,默认开启状态。
-
-**Note**
-
- * 该方法设置的是内部引擎为开启状态,在频道内和频道外均可调用,且在 leaveChannel 后仍然有效。
- * 该方法重置整个引擎,响应速度较慢,因此 ar云平台 建议使用如下方法来控制音频模块:
-
-    * enableLocalAudio:是否启动麦克风采集并创建本地音频流
-    * muteLocalAudioStream:是否发布本地音频流
-    * muteRemoteAudioStream:是否接收并播放远端音频流
-    * muteAllRemoteAudioStreams:是否接收并播放所有远端音频流
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)enableAudio;
-
-/** 关闭音频模块
-
- **Note**
-
- * 该方法设置的是内部引擎为禁用状态,在频道内和频道外均可调用,且在 leaveChannel 后仍然有效。
- * 该方法重置整个引擎,响应速度较慢,因此建议使用如下方法来控制音频模块:
-
-    - enableLocalAudio:是否启动麦克风采集并创建本地音频流
-    - muteLocalAudioStream:是否发布本地音频流
-    - muteRemoteAudioStream:是否接收并播放远端音频流
-    - muteAllRemoteAudioStreams:是否接收并播放所有远端音频流
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)disableAudio;
-
-/** 设置音频编码配置
-
-**Note**
-
- * 该方法需要在 joinChannelByToken 之前设置好,joinChannelByToken 之后设置不生效。
- * 通信场景下,该方法设置 profile 生效,设置 scenario 不生效。
- * 通信和直播场景下,音质(码率)会有网络自适应的调整,通过该方法设置的是一个最高码率。
- * 在有高音质需求的场景(例如音乐教学场景)中,建议将 profile 设置为 ARAudioProfileMusicHighQuality(4),scenario 设置为 ARAudioScenarioGameStreaming(3)
- 
- @param profile  音频属性,详见ARAudioProfile
- @param scenario 设置音频应用场景,详细定义见 ARAudioScenario。不同的音频场景下,设备的系统音量是不同的。
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)setAudioProfile:(ARAudioProfile)profile scenario:(ARAudioScenario)scenario;
-
-/** 调节录音音量
-
- @param volume 录音音量可在 0~400 范围内进行调节:
-
- * 0: 静音
- * 100: 原始音量
- * 400: 最大可为原始音量的 4 倍(自带溢出保护)
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)adjustRecordingSignalVolume:(NSInteger)volume;
-
-/** 调节本地播放的所有远端用户音量
-
-**Note**
-
-- 该方法调节的是本地播放的所有远端用户混音后的音量。
-- 静音本地音频需同时调用 adjustPlaybackSignalVolume 和 adjustAudioMixingPlayoutVolume 方法,并将 volume 参数设置为 0。
-
-@param volume 播放音量,取值范围为 [0,400]。
-
-* 0: 静音
-* 100: 原始音量
-* 400: 最大可为原始音量的 4 倍(自带溢出保护)
-
-@return 0方法调用成功,<0方法调用失败
-*/
-
-- (int)adjustPlaybackSignalVolume:(NSInteger)volume;
-
-/** 启用说话者音量提示
- 
-@param interval 指定音量提示的时间间隔
- 
- * <= 0: 禁用音量提示功能
- * > 0: 提示间隔,单位为毫秒。建议设置到大于 200 毫秒。最小不得少于 10 毫秒。启用该方法后,无论频道内是否有人说话,都会在 reportAudioVolumeIndicationOfSpeakers回调中按设置的时间间隔返回音量提示
- 
-@param smooth 指定音量提示的灵敏度。取值范围为 [0,10],建议值为 3,数字越大,波动越灵敏;数字越小,波动越平滑。
-@param report_vad 本地人声检测功能
- 
- * YES:开启本地人声检测功能。开启后, reportAudioVolumeIndicationOfSpeakers 回调的 vad 参数会报告是否在本地检测到人声。
- * NO:(默认)关闭本地人声检测功能。除引擎自动进行本地人声检测的场景外, reportAudioVolumeIndicationOfSpeakers 回调的 vad 参数不会报告是否在本地检测到人声。
- 
-@return 0方法调用成功,<0方法调用失败
-*/
-- (int)enableAudioVolumeIndication:(NSInteger)interval smooth:(NSInteger)smooth report_vad:(BOOL)report_vad;
-
-/** 开关本地音频采集
-
-当用户加入频道时,它的语音功能默认是开启的。该方法可以关闭或重新开启本地语音功能,即停止或重新开启本地音频采集。
-
-该方法不影响接收或播放远端音频流,enableLocalAudio(NO) 适用于只听不发的用户场景。
-
-语音功能关闭或重新开启后,会收到回调 didMicrophoneEnabled。
-
-**Note**
- 
- 该方法与 muteLocalAudioStream 的区别在于:
-
- * enableLocalAudio:开启或关闭本地语音采集及处理。使用 enableLocalAudio 关闭或开启本地采集后,本地听远端播放会有短暂中断。
- * muteLocalAudioStream:停止或继续发送本地音频流。
-
- @param enabled 开关本地音频采集
- 
- * YES: 重新开启本地语音功能,即开启本地语音采集(默认)
- * NO: 关闭本地语音功能,即停止本地语音采集或处理
- 
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)enableLocalAudio:(BOOL)enabled;
-
-/** 开关本地音频发送
-
- 该方法用于允许/禁止往网络发送本地音频流。成功调用该方法后,远端会触发 remoteAudioStateChangedOfUid 回调。
-
-**Note**
-
- * 该方法不影响录音状态,并没有禁用麦克风。
- * 如果你在该方法后调用 setChannelProfile 方法,SDK 会根据你设置的频道场景以及用户角色,重新设置是否停止发送本地音频。因此我们建议在 setChannelProfile 后调用该方法。
-
- @param mute 是否发送本地音频流
-
- * YES: 停止发送本地音频流
- * NO: (默认)继续发送本地音频流
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)muteLocalAudioStream:(BOOL)mute;
-
-/** 停止/恢复接收指定用户的音频流
-
-**Note**
-
- 如果之前有调用过 muteAllRemoteAudioStreams(YES) 对所有远端音频进行静音,在调用本 API 之前请确保你已调用 muteAllRemoteAudioStreams(NO)。 muteAllRemoteAudioStreams 是全局控制,muteRemoteAudioStream 是精细控制。
-
- @param uid  指定用户的用户 ID
- @param mute 停止/恢复接收指定用户的音频流:
-
- * YES: 停止接收指定音频流
- * NO: 继续接收指定音频流(默认)
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)muteRemoteAudioStream:(NSString *_Nonnull)uid mute:(BOOL)mute;
-
-/** 停止/恢复接收所有远端音频流
- 
-@param mute YES: 停止接收所有远端音频流;NO: 继续接收所有远端音频流(默认)。
- 
-@return 0方法调用成功,<0方法调用失败
-*/
-- (int)muteAllRemoteAudioStreams:(BOOL)mute;
-
-/** 设置是否默认接收音频流
-
-该方法在加入频道前后都可调用。如果在加入频道后调用 setDefaultMuteAllRemoteAudioStreams (YES),会接收不到设置后加入频道的用户的音频流。
- 
-**Note**
- 
- 停止接收音频流后,如果想要恢复接收,请调用 muteRemoteAudioStream (NO),并指定你想要接收的远端用户 uid;如果想恢复接收多个用户的音频流,则需要多次调用 muteRemoteAudioStream。setDefaultMuteAllRemoteAudioStreams (NO) 只能恢复接收后面加入频道的用户的音频流。
-
- @param mute 设置是否默认接收音频流:
-
- * YES: 默认停止接收所有远端音频流
- * NO: 默认继续接收所有远端音频流(默认)
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)setDefaultMuteAllRemoteAudioStreams:(BOOL)mute;
-
-/** 调节本地播放的指定远端用户音量
-
-加入频道后,你可以多次调用该方法调节不同远端用户在本地播放的音量,或对某个远端用户在本地播放的音量调节多次。
-
-**Note**
-
-- 该方法要在加入频道后调用。
-- 该方法调节的是本地播放的指定远端用户混音后的音量。
-- 该方法每次只能调整一位远端用户在本地播放的音量。若需调整多位远端用户在本地播放的音量,则需多次调用该方法。
-
-@param uid 远端用户 ID,需和远端用户加入频道时用的 uid 一致。
-@param volume 播放音量,取值范围为 [0,100]。
-
-- 0: 静音
-- 100: 原始音量
-
-@return 0方法调用成功,<0方法调用失败
-*/
-- (int)adjustUserPlaybackSignalVolume:(NSString *_Nonnull)uid volume:(int)volume;
-
-//MARK: - 视频核心方法
-
-/**-----------------------------------------------------------------------------
-* @name 视频核心方法
-* -----------------------------------------------------------------------------
-*/
-
-/** 启用视频模块
-
-该方法用于打开视频模式。可以在加入频道前或者通话中调用,在加入频道前调用,则自动开启视频模式,在通话中调用则由音频模式切换为视频模式。调用 disableVideo 方法可关闭视频模式。
-
-成功调用该方法后,远端会触发 didVideoEnabled(YES) 和 remoteVideoStateChangedOfUid 回调。
-
-**Note**
-
- * 该方法设置的是内部引擎为启用状态,在 leaveChannel 后仍然有效。
- * 该方法重置整个引擎,响应速度较慢,因此建议使用如下方法来控制视频模块:
-    - enableLocalVideo:是否启动摄像头采集并创建本地视频流
-    - muteLocalVideoStream:是否发布本地视频流
-    - muteRemoteVideoStream:是否接收并播放远端视频流
-    - muteAllRemoteVideoStreams:是否接收并播放所有远端视频流
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)enableVideo;
-
-/**
-
-该方法用于关闭视频。可以在加入频道前或者通话中调用,在加入频道前调用,则自动开启纯音频模式,在通话中调用则由视频模式切换为纯音频模式。调用 enableVideo 方法可开启视频模式。成功调用该方法后,远端会触发 didVideoEnabled(NO) 回调。
- 
-- 该方法设置的是内部引擎为启用状态,在 leaveChannel 后仍然有效。
- 
-@return 0方法调用成功,<0方法调用失败
-*/
-/** 关闭视频模块
-
-该方法用于关闭视频。可以在加入频道前或者通话中调用,在加入频道前调用,则自动开启纯音频模式,在通话中调用则由视频模式切换为纯音频模式。调用 enableVideo 方法可开启视频模式。
-
-成功调用该方法后,远端会触发remoteVideoStateChangedOfUid回调。
-
-**Note**
-
- * 该方法设置的是内部引擎为启用状态,在 leaveChannel 后仍然有效。
- * 该方法重置整个引擎,响应速度较慢,因此建议使用如下方法来控制视频模块:
-    - enableLocalVideo:是否启动摄像头采集并创建本地视频流
-    - muteLocalVideoStream:是否发布本地视频流
-    - muteRemoteVideoStream:是否接收并播放远端视频流
-    - muteAllRemoteVideoStreams:是否接收并播放所有远端视频流
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)disableVideo;
-
-/** 设置视频编码配置
- 
-该方法设置视频编码配置。每个配置对应一套视频参数,如分辨率、帧率、码率、视频方向等。 所有设置的参数均为理想情况下的最大值。当视频引擎因网络环境等原因无法达到设置的分辨率、帧率或码率的最大值时,会取最接近最大值的那个值。
-
-如果加入频道后不需要重新设置视频编码配置,建议在 enableVideo 之前调用该方法,可以加快首帧出图时间。
- 
-@param config   视频编码器配置的属性
- 
-@return 0方法调用成功,<0方法调用失败
-*/
-- (int)setVideoEncoderConfiguration:(ARVideoEncoderConfiguration *_Nonnull)config;
-
-/** 初始化本地视图
-
- 该方法初始化本地视图并设置本地用户视频显示信息,只影响本地用户看到的视频画面,不影响本地发布视频。调用该方法绑定本地视频流的显示视窗(view),并设置本地用户视图的渲染模式和镜像模式。在 App 开发中,通常在初始化后调用该方法进行本地视频设置,然后再加入频道。退出频道后,绑定仍然有效,如果需要解除绑定,可以指定空 (nil) view 调用本方法。
-
-**Note**
- 
- * 该方法在加入频道前后都能调用。
- * 如果你希望在通话中更新本地用户视图的渲染或镜像模式,请使用 setLocalRenderMode 方法。
- 
- @param local 通过 ARtcVideoCanvas 设置本地视频显示属性。
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)setupLocalVideo:(ARtcVideoCanvas *_Nullable)local;
-
-/** 初始化远端用户视图
-
-该方法绑定远端用户和显示视图,并设置远端用户视图在本地显示时的渲染模式和镜像模式,只影响本地用户看到的视频画面。调用该接口时需要指定远端用户的 uid,一般可以在进频道前提前设置好。
-
-如果 App 不能事先知道对方的 uid,可以在 APP 收到 didJoinedOfUid 事件时设置。如果启用了视频录制功能,视频录制服务会做为一个哑客户端加入频道,因此其他客户端也会收到它的 didJoinedOfUid 事件,App 不应给它绑定视图(因为它不会发送视频流),如果 App 不能识别哑客户端,可以在 firstRemoteVideoDecodedOfUid 事件时再绑定视图。解除某个用户的绑定视图可以把 view 设置为空。退出频道后,SDK 会把远端用户的绑定关系清除掉。
- 
-**Note**
-
-如果你希望在通话中更新远端用户视图的渲染或镜像模式,请使用 setRemoteRenderMode 方法。
- 
-- 该参数默认值为空字符 ""。如果用户是通过 ARtcEngineKit 类的 joinChannelByToken 方法加入频道的,则将参数设为默认值,表示该用户在频道内的渲染视图。
-- 如果用户是通过 ARtcChannel 类的 joinChannelByToken 方法加入频道的,则将该参数设为该 ARtcChannel 类对应的 channelId,表示该用户在该 channelId 对应频道内的渲染视图。
- 
- @param remote 通过 ARtcVideoCanvas 设置远端视频显示属性:
- 
- * view 视频显示视窗
- * renderMode: 视频显示模式:
-    - ARVideoRenderModeHidden (1):优先保证视窗被填满。因视频尺寸与显示视窗尺寸不一致而多出的视频将被截掉。
-    - ARVideoRenderModeFit (2):优先保证视频内容全部显示。因视频尺寸与显示视窗尺寸不一致造成的视窗未被填满的区域填充黑色。
- * uid: 用户 ID,指定要显示视窗的远端用户。
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)setupRemoteVideo:(ARtcVideoCanvas *_Nonnull)remote;
-
-/** 更新本地视图显示模式
-
-初始化本地用户视图后,你可以调用该方法更新本地用户视图的渲染和镜像模式。该方法只影响本地用户看到的视频画面,不影响本地发布视频。
-
-**Note**
- * 如果你使用前置摄像头,默认启动本地用户视图镜像模式;如果你使用后置摄像头,默认关闭本地视图镜像模式。
- * 请在调用 setupLocalVideo 方法初始化本地视图后,调用该方法。
- * 你可以在通话中多次调用该方法,多次更新本地用户视图的显示模式。
-
-@param renderMode   本地视图的渲染模式,详见 ARVideoRenderMode;
-@param mirrorMode   本地视图的镜像模式,详见 ARVideoMirrorMode。
-
-@return 0方法调用成功,<0方法调用失败
-*/
-- (int)setLocalRenderMode:(ARVideoRenderMode)renderMode mirrorMode:(ARVideoMirrorMode)mirrorMode;
-
-/** 更新远端视图显示模式
-
-初始化远端用户视图后,你可以调用该方法更新远端用户视图在本地显示时的渲染和镜像模式。该方法只影响本地用户看到的视频画面。
-
-**Note**
-
- * 请在调用 setupRemoteVideo 方法初始化远端视图后,调用该方法。
- * 你可以在通话中多次调用该方法,多次更新远端用户视图的显示模式。
-
-@param uid   用户 ID
-@param renderMode   远端用户视图的渲染模式,详见 ARVideoRenderMode ;
-@param mirrorMode   远端用户视图的镜像模式,详见 ARVideoMirrorMode,SDK 默认关闭远端用户视图的镜像模式 。
-
-@return 0方法调用成功,<0方法调用失败
-*/
-- (int)setRemoteRenderMode:(NSString *_Nonnull)uid renderMode:(ARVideoRenderMode)renderMode mirrorMode:(ARVideoMirrorMode)mirrorMode;
-
-/** 开启视频预览
-
-该方法用于在进入频道前启动本地视频预览。本地预览默认开启镜像功能。
-
-调用该 API 前,请调用:
-
- * 调用 setupLocalVideo 设置预览窗口及属性
- * 调用 enableVideo 开启视频功能
-
-**Note**
-
-启用了本地视频预览后,如果调用 leaveChannel退出频道,本地预览依然处于启动状态,如需要关闭本地预览,需要调用 stopPreview 。
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)startPreview;
-
-/** 停止本地视频预览
- 
-@return 0方法调用成功,<0方法调用失败
-*/
-- (int)stopPreview;
-
-/** 开关本地视频采集
- 
- 该方法禁用或重新启用本地视频采集,不影响接收远端视频。
-
- 调用 enableVideo 后,本地视频即默认开启。你可以调用 enableLocalVideo(NO) 关闭本地视频采集。关闭后如果想要重新开启,则可调用 enableLocalVideo(YES)。
-
- 成功禁用或启用本地视频采集后,远端会触发 didLocalVideoEnabled 回调。
-     
-**Note**
-
- 该方法设置的是内部引擎为启用/禁用状态,在 leaveChannel 后仍然有效。
-
- @param enabled 是否启用本地视频:
-
- * YES: 开启本地视频采集和渲染(默认)
- * NO: 关闭使用本地摄像头设备。关闭后远端用户会接收不到本地用户的视频流;但本地用户依然可以接收远端用户的视频流。设置为 NO 时,该方法不需要本地有摄像头。
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)enableLocalVideo:(BOOL)enabled;
-
-/** 开关本地视频发送
-
-成功调用该方法后,远端会触发 didVideoMuted 回调。你也可以使用 remoteVideoStateChangedOfUid 回调的:
- ARVideoRemoteStateStopped(0) 和 ARVideoRemoteStateReasonRemoteMuted(5)。
- ARVideoRemoteStateDecoding(2) 和 ARVideoRemoteStateReasonRemoteUnmuted(6)。
- 
-**Note**
-
- * 相比于调用 enableLocalVideo 控制本地视频流发送,调用该方法响应速度更快。
- * 该方法不影响视频采集状态,因为没有禁用摄像头。
- * 该方法在加入频道前后都能调用。如果你在该方法后调用 setChannelProfile 方法,SDK 会根据你设置的频道场景以及用户角色,重新设置是否取消发布本地视频。因此我们建议在 setChannelProfile 后调用该方法。
-
- @param mute 是否发送本地视频流
- 
- * YES: 不发送本地视频流
- * NO: 发送本地视频流(默认)
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)muteLocalVideoStream:(BOOL)mute;
-
-/** 停止/恢复接收所有视频流
-
- @param mute 禁止/允许接收所有人的视频流
-
- * YES: 停止接收所有视频流
- * NO: 允许接收所有视频流(默认)
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)muteAllRemoteVideoStreams:(BOOL)mute;
-
-/** 停止/恢复接收指定视频流
-
-**Note**
-
- 如果之前有调用过 muteAllRemoteVideoStreams(YES) 暂停接收所有远端视频,在调用本 API 之前请确保你已调用 muteAllRemoteVideoStreams(NO)。 muteAllRemoteVideoStreams 是全局控制,muteRemoteVideoStream 是精细控制。
-
- @param uid  远端用户ID
- @param mute 停止/恢复接收指定视频流:
- * YES: 停止接收指定用户的视频流
- * NO: 允许接收指定用户的视频流(默认)
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)muteRemoteVideoStream:(NSString *_Nonnull)uid mute:(BOOL)mute;
-
-/** 设置是否默认接收视频流
-  该方法在加入频道前后都可调用。如果在加入频道后调用setDefaultMuteAllRemoteVideoStreams(YES),会接收不到设置后加入频道的用户的视频流。
- 
-  **Note**
-  
- 停止接收视频流后,如果想要恢复接收,请调用 muteRemoteVideoStream (NO),并指定你想要接收的远端用户 uid;如果想恢复接收多个用户的视频流,则需要多次调用 muteRemoteVideoStream。setDefaultMuteAllRemoteVideoStreams (NO) 只能恢复接收后面加入频道的用户的视频流。
-
- @param mute 是否默认接收视频流
- 
- * YES: 不接收
- * NO: 接收
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)setDefaultMuteAllRemoteVideoStreams:(BOOL)mute;
-
-//MARK: - 视频前处理及后处理
-
-//MARK: - 音频播放路由
-
-/**-----------------------------------------------------------------------------
-* @name 音频播放路由
-* -----------------------------------------------------------------------------
-*/
-
-#if TARGET_OS_IPHONE
-/** 设置默认的语音路由
-
-该方法设置接收到的语音从听筒或扬声器出声。如果用户不调用本方法,语音默认从听筒出声。
-
-**Note**
-
- * 该方法仅使用于通信场景。
- * 该方法只在纯音频模式下工作,在有视频的模式下不工作。
-
- 各频道场景下默认的语音路由:
-
- * 通信:听筒。
- * 直播:扬声器。
-
- @param defaultToSpeaker 默认的语音路由:
-
- * YES: 默认从外放(扬声器)出声。如果设备连接了耳机或蓝牙,则无法切换到外放。
- * NO: (默认)默认从听筒出声。如果设备连接了耳机,则语音路由走耳机。
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)setDefaultAudioRouteToSpeakerphone:(BOOL)defaultToSpeaker;
-
-/** 启用/关闭扬声器播放
-
-该方法设置是否将语音路由到扬声器(外放)。调用该方法后,SDK 将返回 didAudioRouteChanged 回调提示状态已更改。
-
-**Note**
-
- * 请确保在调用此方法前已调用过 joinChannelByToken 方法。
- * SDK 会调用 setCategory(AVAudioSessionCategoryPlayAndRecord) 并配置耳麦或者外放,所以调用该方法后所有声音的路由都会按照该方法设置。
-
- @param enableSpeaker 启用/关闭扬声器播放:
-
- * YES: 切换到外放。如果设备连接了耳机或蓝牙,则无法切换到外放。
- * NO: 切换到听筒。如果设备连接了耳机,则语音路由走耳机。
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)setEnableSpeakerphone:(BOOL)enableSpeaker;
-
-/** 查询扬声器启用状态
-
- @return 扬声器状态:
- * YES: 扬声器已开启,语音会输出到扬声器
- * NO: 扬声器未开启,语音会输出到非扬声器(听筒、耳机等)
- */
-- (BOOL)isSpeakerphoneEnabled;
-#endif
-
-#if TARGET_OS_IPHONE
-//MARK: - 耳返设置
-/**-----------------------------------------------------------------------------
-* @name 耳返设置
-* -----------------------------------------------------------------------------
-*/
-
-/** 开启耳返功能
- 
-**Note**
- 
- 用户必须使用有线耳机才能听到耳返效果
-
- @param enabled 开启或关闭耳返功能:
- * YES: 开启耳返功能
- * NO: 关闭耳返功能(默认)
-
- @return 0方法调用成功,<0方法调用失败
-  */
-- (int)enableInEarMonitoring:(BOOL)enabled;
-
-/** 设置耳返音量
-
- @param volume 设置耳返音量,取值范围在 [0,100]。默认值为 100
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)setInEarMonitoringVolume:(NSInteger)volume;
-#endif
-
-//MARK: - 语音音效设置
-
-/**-----------------------------------------------------------------------------
- * @name 美声与音效
- * -----------------------------------------------------------------------------
- */
-
-/** 设置本地语音音调
- 
- 该方法改变本地说话人声音的音调。该方法在加入频道前后都能调用。
-
- @param pitch  语音频率。可以在 [0.5,2.0] 范围内设置。取值越小,则音调越低。默认值为 1.0,表示不需要修改音调。
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)setLocalVoicePitch:(double)pitch;
-
-/** 设置本地语音音效均衡
-
- @param bandFrequency 频谱子带索引,取值范围是 [0,9],分别代表 10 个 频带,对应的中心频率是 [31,62,125,250,500,1k,2k,4k,8k,16k] Hz,详见 ARAudioEqualizationBandFrequency 。
- @param gain  每个 band 的增益,单位是 dB,每一个值的范围是 [-15,15],默认值为 0。
-
- @return 0方法调用成功,<0方法调用失败
-*/
--(int)setLocalVoiceEqualizationOfBandFrequency:(ARAudioEqualizationBandFrequency)bandFrequency withGain:(NSInteger)gain;
-
-/** 设置本地音效混响
-
- 提供一个使用更为简便的接口 setLocalVoiceReverbPreset,通过一系列内置参数的调整,直接实现流行、R&B、摇滚、嘻哈等预置的混响效果。
- 
- 该方法在加入频道前后都能调用。
- 
- @param reverbType 混响音效类型,详见 ARAudioReverbType
- @param value     设置混响音效的效果数值,各混响音效对应的取值范围请参考 ARAudioReverbType
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)setLocalVoiceReverbOfType:(ARAudioReverbType)reverbType withValue:(NSInteger)value;
-
-/** 设置本地语音混响(含虚拟立体声效果)。
-
-**Note:**
-
- 当使用以 ARAudioReverbPresetFx 为前缀的枚举值时,请确保在调用该方法前将 setAudioProfile 的 profile 参数设置为 ARAudioProfileMusicHighQuality(4) 或 ARAudioProfileMusicHighQualityStereo(5),否则该方法设置无效。
- 当使用 ARAudioReverbPresetVirtualStereo 时,AR 推荐在调用该方法前将 setAudioProfile 的 profile 参数设置为 ARAudioProfileMusicHighQualityStereo(5)。
- 该方法对人声的处理效果最佳,AR 不推荐调用该方法处理含人声和音乐的音频数据。
- 该方法不能与 setLocalVoiceChanger 方法一同使用,否则先调的方法会不生效。更多注意事项,详见《变声与混响》。
-
- @param reverbPreset 本地语音混响选项,默认值为 ARAudioReverbPresetOff,即原声。详见 ARAudioReverbPreset。
-
- @return 0: 方法调用成功。< 0: 方法调用失败。请检查输入的枚举值是否正确。
- */
-- (int)setLocalVoiceReverbPreset:(ARAudioReverbPreset)reverbPreset;
-
-//MARK: - 音乐文件播放及混音设置
-/**-----------------------------------------------------------------------------
-* @name 音乐文件播放及混音设置
-* -----------------------------------------------------------------------------
-*/
-
-/** 开始播放音乐文件
-
- 指定本地或在线音频文件来和麦克风采集的音频流进行混音或替换。替换是指用指定的音频文件替换麦克风采集到的音频流。该方法可以选择是否让对方听到本地播放的音频,并指定循环播放的次数。
-
- 成功调用该方法后,本地会触发 localAudioMixingStateDidChanged(ARAudioMixingStatePlaying) 回调。播放结束后,会收到 localAudioMixingStateDidChanged(ARAudioMixingStateStopped) 回调。
-
-**Note**
-
- * 使用本方法前请确保你的 iOS 设备版本不低于 9.0。
- * 请在频道内调用该方法,如果在频道外调用该方法可能会出现问题。
- * 如果播放的是在线音乐文件,请确保重复调用该 API 的间隔超过 100 ms,否则 SDK 会返回 AudioFileOpenTooFrequent(702)警告码,表示音乐文件打开过于频繁。
- * 如果本地音乐文件不存在、文件格式不支持、无法访问在线音乐文件 URL 都会返回警告码 ARWarningCodeAudioMixingOpenError = 701。
-
- @param filePath 指定需要混音的音频文件名和文件路径名,例如: /var/mobile/Containers/Data/audio.mp4。建议填写文件后缀名。若无法确定文件后缀名,可不填。支持以下音频格式: mp3,aac,m4a,3gp,wav
- @param loopback 设置哪些用户可以听到音频混合:
- * YES: 只有本地可以听到混音或替换后的音频流
- * NO: 本地和对方都可以听到混音或替换后的音频流
- @param replace 设置混音麦克风内容:
- * YES: 只推送设置的本地音频文件或者线上音频文件,不传输麦克风收录的音频。
- * NO: 音频文件内容将会和麦克风采集的音频流进行混音
- @param cycle 指定音频文件循环播放的次数:
-
- * 正整数: 循环的次数
- * -1:无限循环
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)startAudioMixing:(NSString *  _Nonnull)filePath
-               loopback:(BOOL)loopback
-                replace:(BOOL)replace
-                  cycle:(NSInteger)cycle;
-
-/** 停止播放音乐文件
-
- 请在频道内调用该方法。
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)stopAudioMixing;
-
-/** 暂停播放音乐文件
-
- 请在频道内调用该方法。
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)pauseAudioMixing;
-
-/** 恢复播放音乐文件
-
- 请在频道内调用该方法。
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)resumeAudioMixing;
-
-/** 调节音乐文件的播放音量
- 
-**Note**
- 
- 该方法调节混音的音乐文件在本地和远端播放的音量大小。请在频道内调用该方法。
-
- @param volume 音乐文件播放音量范围为 0~100。默认 100 为原始文件音量
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)adjustAudioMixingVolume:(NSInteger)volume;
-
-/** 调节音乐文件在本地播放的音量
-
-**Note**
- 
-该方法调节混音的音乐文件在本地播放的音量大小。请在频道内调用该方法。
-
-@param volume 音乐文件播放音量范围为 0~100。默认 100 为原始文件音量
-@return 0方法调用成功,<0方法调用失败
-*/
-- (int)adjustAudioMixingPlayoutVolume:(NSInteger)volume;
-
-/** 调节音乐文件在远端播放的音量
-
-音乐文件播放音量范围为 0~100。默认 100 为原始文件音量
-
-@param volume 该方法调节混音的音乐文件在远端播放的音量大小。请在频道内调用该方法。
-@return 0方法调用成功,<0方法调用失败
-*/
-- (int)adjustAudioMixingPublishVolume:(NSInteger)volume;
-
-/** 获取音乐文件的本地播放音量
-
-该方法获取混音的音乐文件本地播放音量,方便排查音量相关问题。
- 
- @return 方法调用成功则返回音量值,范围为 [0,100]。<0:方法调用失败
-*/
-- (int)getAudioMixingPlayoutVolume;
-
-/** 获取音乐文件的远端播放音量
-
-该方法获取混音的音乐文件远端播放音量,方便排查音量相关问题。
- 
- @return 方法调用成功则返回音量值,范围为 [0,100]。<0:方法调用失败
-*/
-- (int)getAudioMixingPublishVolume;
-
-//MARK: - 音效文件播放管理
-
-/**-----------------------------------------------------------------------------
-* @name 音效文件播放管理
-* -----------------------------------------------------------------------------
-*/
-
-/** 获取音效文件播放音量
-
-@return 方法调用成功返回音效的音量值,范围为 [0.0,100.0],< 0: 方法调用失败
- */
-- (double)getEffectsVolume;
-
-/** 设置音效文件播放音量
-
- @param volume 取值范围为 [0.0,100.0]。 100.0 为默认值
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)setEffectsVolume:(double)volume;
-
-/** 实时调整音效文件播放音量
-
- @param soundId 自行设定的音效 ID,需保证唯一性。
- @param volume 取值范围为 [0.0,100.0]。100.0 为默认值
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)setVolumeOfEffect:(int)soundId
-              withVolume:(double)volume;
-
-/** 播放指定音效文件
-
-该方法可以播放指定的本地或在线音效文件来给应用增加音效,比如游戏中特定操作的音效。
-
-你可以在该方法中设置音效文件的播放次数、音调、音效的空间位置和增益,以及远端用户是否能听到该音效。你可以多次调用该方法,通过传入不同的音效文件的 soundID 和 filePath,同时播放多个音效文件,实现音效叠加。为获得最佳用户体验,我们建议同时播放的音效文件不要超过 3 个。
-
-调用该方法播放音效结束后,会触发 rtcEngineDidAudioEffectFinish 回调。
-
-**Note**
-
- macOS 上不支持同时播放多个在线音效文件。
- 
- @param soundId 自行设定的音效 ID,需保证唯一性。 如果你已通过 preloadEffect 将音效加载至内存,确保这里设置的 soundId 与 preloadEffect 设置的 soundId 相同。
- @param filePath 指定音效文件的绝对路径或 URL 地址(包含文件后缀名),例如:/var/mobile/Containers/Data/audio.mp4。支持以下音频格式: mp3、mp4、aac、m4a、3gp、wav。
- @param loopCount 设置音效文件循环播放的次数:
-
- * 0: 播放音效文件一次
- * 1: 循环播放音效文件两次
- * -1: 无限循环播放音效文件,直至调用 stopEffect 或 stopAllEffects 后停止
-
- @param pitch 设置音效的音调 取值范围为 [0.5,2]。默认值为 1.0,表示不需要修改音调。取值越小,则音调越低
- @param pan 设置音效的空间位置。取值范围为 [-1.0,1.0]:
-
- * 0.0: 音效出现在正前方
- * 1.0: 音效出现在右边
- * -1.0: 音效出现在左边
-
- @param gain 设置音效的音量。取值范围为 [0.0,100.0]。默认值为 100.0。取值越小,则音效的音量越低。
- @param publish 设置是否将音效传到远端
-
- * YES: 音效文件在本地播放的同时,会发布到 ar云平台 云上,因此远端用户也能听到该音效
- * NO: 音效文件不会发布到ar云平台云上,因此只能在本地听到该音效
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)playEffect:(int)soundId
-         filePath:(NSString * _Nullable)filePath
-        loopCount:(int)loopCount
-            pitch:(double)pitch
-              pan:(double)pan
-             gain:(double)gain
-          publish:(BOOL)publish;
-
-/** 停止播放指定音效文件
-
- @param soundId 自行设定的音效 ID,需保证唯一性。
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)stopEffect:(int)soundId;
-
-/** 停止播放所有音效文件
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)stopAllEffects;
-
-/** 将指定音效文件预加载至内存
-
- 为保证通信畅通,请注意控制预加载音效文件的大小,并在 joinChannelByToken 前就使用该方法完成音效预加载。
-
- 音效文件支持以下音频格式: mp3,aac,m4a,3gp,wav
-
-**Note**
- 
- 该方法不支持在线音效文件。
- 
- @param soundId 自行设定的音效 ID,需保证唯一性。
- @param filePath 音效文件的绝对路径
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)preloadEffect:(int)soundId
-            filePath:(NSString * _Nullable)filePath;
-
-/** 从内存释放某个预加载的音效文件
-
- @param soundId 自行设定的音效 ID,需保证唯一性。
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)unloadEffect:(int)soundId;
-
-/** 暂停音效文件播放
-
- @param soundId 自行设定的音效 ID,需保证唯一性。
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)pauseEffect:(int)soundId;
-
-/** 暂停所有音效文件播放
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)pauseAllEffects;
-
-/** 恢复播放指定音效文件
-
- @param soundId 自行设定的音效 ID,需保证唯一性。
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)resumeEffect:(int)soundId;
-
-/** 恢复播放所有音效文件
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)resumeAllEffects;
-
-//MARK: - 音频录制
-
-/**-----------------------------------------------------------------------------
- * @name 音频录制
- * -----------------------------------------------------------------------------
- */
-
-/** 开始客户端录音
-
-SDK 支持通话过程中在客户端进行录音。调用该方法后,你可以录制频道内所有用户的音频,并得到一个包含所有用户声音的录音文件。录音文件格式可以为:
-
- - .wav: 文件大,音质保真度较高。
- - .aac: 文件小,音质保真度较低。
-
-**Note**
-
- - 请确保你在该方法中指定的路径存在并且可写。
- - 该接口需在 joinChannelByToken 之后调用。如果调用 leaveChannel 时还在录音,录音会自动停止。
- - 为保证录音效果,当 sampleRate 设为 44100 Hz 或 48000 Hz 时,建议将 quality 设为 ARAudioRecordingQualityMedium 或 ARAudioRecordingQualityHigh 。
-
- @param filePath 录音文件在本地保存的绝对路径,由用户自行指定,需精确到文件名及格式,例如:/var/mobile/Containers/Data/audio.aac。
- @param sampleRate 录音采样率(Hz),可以设为以下值:
-
- - 16000
- - (Default) 32000
- - 44100
- - 48000
-
- @param quality 录音音质。详见 ARAudioRecordingQuality 。
-
-  @return 0方法调用成功,<0方法调用失败
- */
-- (int)startAudioRecording:(NSString * _Nonnull)filePath
-                   sampleRate:(NSInteger)sampleRate
-                   quality:(ARAudioRecordingQuality)quality;
-
-/** 停止客户端录音
-
-**Note:**
-
- 该接口需要在 leaveChannel 之前调用,不然会在调用 leaveChannel 时自动停止。
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)stopAudioRecording;
-
-//MARK: - 开启声卡采集
-
-//MARK: - 音频其他方法
-
-//MARK: - 网络相关测试
-
-/**-----------------------------------------------------------------------------
- * @name 网络相关测试
- * -----------------------------------------------------------------------------
- */
-
-/** 开始语音通话回路测试
-
- 该方法启动语音通话测试,目的是测试系统的音频设备(耳麦、扬声器等)和网络连接是否正常。在测试过程中,用户先说一段话,声音会在设置的时间间隔后回放出来。如果用户能正常听到自己刚才说的话,就表示系统音频设备和网络连接都是正常的。
-
-**Note:**
-
-- 请在加入频道前调用该方法。
-
-- 调用该方法后必须调用 stopEchoTest 以结束测试,否则不能进行下一次回声测试,也无法加入频道。
-
-- 直播场景下,该方法仅能由用户角色为主播的用户调用。
-
-@param interval 返回语音通话回路测试结果的时间间隔,取值范围为 [2,10],单位为秒,默认值为 10 秒。
-@param successBlock 成功开始语音通话测试回调。
-
-@return 0方法调用成功,<0方法调用失败
-*/
-- (int)startEchoTestWithInterval:(NSInteger)interval successBlock:(void(^ _Nullable)(NSString * _Nonnull channel, NSString * _Nonnull uid, NSInteger elapsed))successBlock;
-
-/** 停止语音通话回路测试
-
- @return 0方法调用成功,<0方法调用失败,如 ERR_REFUSED (-5):不能停止测试,可能语音通话测试没有成功启动。
- */
-- (int)stopEchoTest;
-
-/** 启动网络测试
-
- 该方法启用网络连接质量测试,用于检测用户网络接入质量。默认该功能为关闭状态。
-
- 该方法主要用于以下场景:
-
- - 用户加入频道前,可以调用该方法判断和预测目前的上行网络质量是否足够好。
- - 直播场景下,当用户角色想由观众切换为主播时,可以调用该方法判断和预测目前的上行网络质量是否足够好。
- 启用该方法会消耗一定的网络流量,影响通话质量,因此我们建议不要和 startLastmileProbeTest 同时使用。
-
- 在收到 lastmileQuality 回调后须调用 disableLastmileTest 停止测试,再加入频道或切换用户角色。
-
-**Note:**
-
- - 调用该方法后,在收到 lastmileQuality 回调之前请不要调用其他方法,否则可能会由于 API 操作过于频繁导致此回调无法执行。
- - 直播场景下,主播在加入频道后请勿调用该方法。
- - 加入频道前调用该方法检测网络质量后,SDK 会占用一路视频的带宽,码率与 setVideoEncoderConfiguration 中设置的码率相同。加入频道后,无论是否调用了 disableLastmileTest,SDK 均会自动停止带宽占用。
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)enableLastmileTest;
-
-/** 关闭网络测试
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)disableLastmileTest;
-
-/** 开始通话前网络质量探测
-
-
- 开始通话前网络质量探测,向用户反馈上下行网络的带宽、丢包、网络抖动和往返时延数据。
-
- 启用该方法后,SDK 会依次返回如下 2 个回调:
-
- lastmileQuality,视网络情况约 2 秒内返回。该回调通过打分反馈上下行网络质量,更贴近用户的主观感受。
- lastmileProbeResult,视网络情况约 30 秒内返回。该回调通过具体数据反馈上下行网络质量,更加客观。
- 该方法主要用于以下两种场景:
-
- - 用户加入频道前,可以调用该方法判断和预测目前的上行网络质量是否足够好。
- - 直播场景下,当用户角色想由观众切换为主播时,可以调用该方法判断和预测目前的上行网络质量是否足够好。
-
-**Note:**
-
- - 该方法会消耗一定的网络流量,影响通话质量,因此我们建议不要和 enableLastmileTest 同时使用。
- - 调用该方法后,在收到 lastmileQuality 和 lastmileProbeResult 回调之前请不要调用其他方法,否则可能会由于 API 操作过于频繁导致此方法无法执行。
- - 直播场景下,如果本地用户为主播,请勿在加入频道后调用该方法。
-
-@param config Last mile 网络探测配置,详见 ARLastmileProbeConfig
-
-@return 0方法调用成功,<0方法调用失败
-*/
-- (int)startLastmileProbeTest:(ARLastmileProbeConfig *_Nullable)config;
-
-/** 停止通话前网络质量探测
-
-@return 0方法调用成功,<0方法调用失败
-*/
-- (int)stopLastmileProbeTest;
-
-//MARK: - 自定义视频模块
-
-/**-----------------------------------------------------------------------------
- * @name 自定义视频模块
- * -----------------------------------------------------------------------------
-*/
-
-/** 设置自定义视频源
-
-该方法设置视频源。实时通讯过程中,ar云平台 SDK 通常会启动默认的视频输入设备,即内置的摄像头,进行视频推流。当需要自定义视频设备时,App 可以先通过 ARVideoSourceProtocol 自定义视频源,然后调用该方法将自定义的视频源加入到 SDK 中。
-
- @param videoSource 自定义的视频源,详见 ARVideoSourceProtocol
- */
-- (void)setVideoSource:(id<ARVideoSourceProtocol> _Nullable)videoSource;
-
-/** 本地自定义视频渲染器
-
- 该方法设置本地视频渲染器。实时通讯过程中, SDK 通常会启动默认的视频渲染器进行视频渲染。当需要自定义视频渲染设备时,App 可以先通过 ARVideoSinkProtocol 自定义渲染器,然后调用该方法将视频渲染器加入到 SDK 中。
-
- 该方法在加入频道前后都能调用。
-
- @param videoRenderer 自定义的视频渲染器,详见 ARVideoSinkProtocol
- */
-- (void)setLocalVideoRenderer:(id<ARVideoSinkProtocol> _Nullable)videoRenderer;
-
-/** 远端自定义视频渲染器
-
- 实时音视频互动过程中,SDK 通常会启动默认的视频渲染器进行视频渲染。当需要自定义视频渲染设备时,App 可以先通过 ARVideoSinkProtocol 自定义渲染器,然后调用该方法将视频渲染器加入到 SDK 中。
-
- 该方法在加入频道前后都能调用。如果在加入频道前调用,需要自行维护远端用户的 uid。
-
- @param videoRenderer 自定义的视频渲染器,详见 ARVideoSinkProtocol
- @param uid 远端用户的 uid
- */
-- (void)setRemoteVideoRenderer:(id<ARVideoSinkProtocol> _Nullable)videoRenderer forUserId:(NSString * _Nonnull)uid;
-
-/** 获取当前视频源
-
-  @return 当前视频源,详见ARVideoSourceProtocol.
- */
-- (id<ARVideoSourceProtocol> _Nullable)videoSource;
-
-/** 获取本地视频渲染器
-
- @return 本地视频渲染器。 详见ARVideoSinkProtocol.
- */
-- (id<ARVideoSinkProtocol> _Nullable)localVideoRenderer;
-
-/** 获取远端视频渲染器
-
- @param uid 远端用户的 uid
- @return 远端视频渲染器。 详见 ARVideoSinkProtocol.
- */
-- (id<ARVideoSinkProtocol> _Nullable)remoteVideoRendererOfUserId:(NSString * _Nonnull)uid;
-
-//MARK: - 音频自渲染
-
-//MARK: - 音频自采集 (仅适用于 push 模式)
-
-/**-----------------------------------------------------------------------------
- * @name 音频自采集 (仅适用于 push 模式)
- * -----------------------------------------------------------------------------
- */
-
-/** 开启外部音频采集
-
- 该方法必须在加入频道前调用
-
- @param sampleRate       外部音频源的采样率 (Hz),可设置为 8000,16000,32000,44100 或 48000
- @param channelsPerFrame 外部音频源的通道数,可设置为 1 或 2:
- * 1: 单声道
- * 2: 双声道
- 
-**Note:**
-该方法必须在 joinChannelByToken 和 startPreview 前调用
- */
-- (void)enableExternalAudioSourceWithSampleRate:(NSUInteger)sampleRate channelsPerFrame:(NSUInteger)channelsPerFrame;
-
-/** 关闭外部音频采集
-*/
-- (void)disableExternalAudioSource;
-
-/** 推送外部音频帧
-
- @param data     外部音频数据
- @param samples   音频帧的样本数量
- @param timestamp 外部音频帧的时间戳。该参数为必填。你可以使用该时间戳还原音频帧顺序;在有视频的场景中(包含使用外部视频源的场景),该参数可以帮助实现音视频同步。
- @return YES方法调用成功,NO方法调用失败
- */
-- (BOOL)pushExternalAudioFrameRawData:(void *_Nonnull)data samples:(NSUInteger)samples timestamp:(NSTimeInterval)timestamp;
-
-/** 推送外部 CMSampleBuffer 音频帧
-
- @param sampleBuffer 采样缓冲区
- @return YES方法调用成功,NO方法调用失败
- */
-- (BOOL)pushExternalAudioFrameSampleBuffer:(CMSampleBufferRef _Nonnull)sampleBuffer type:(ARAudioType)type;
-
-//MARK: - 视频自采集 (仅适用于 push 模式)
-
-/**-----------------------------------------------------------------------------
- * @name 视频自采集 (仅适用于 push 模式)
- * -----------------------------------------------------------------------------
- */
-
-/** 配置外部视频源
-
- 如果使用了外部视频源,请在调用 enableVideo 或 startPreview 之前调用此 API。
-
- @param enable 是否使用外部视频源:
-
- * YES: 使用外部视频源
- * NO: 不使用外部视频源(默认)
-
- @param useTexture 是否使用 Texture 作为输入:
-
- * YES: 使用 Texture 作为输入
- * NO: 不使用 Texture 作为输入
-
- @param pushMode 是否外部视频源需要调用 pushExternalVideoFrame 将视频帧主动推送给 ar云平台SDK:
-
- * YES: 使用推送 (push) 模式
- * NO: 使用拉 (pull) 模式(暂不支持)
- 
- **Note:**
- 该方法需要在加入频道前调用。
- */
-- (void)setExternalVideoSource:(BOOL)enable useTexture:(BOOL)useTexture pushMode:(BOOL)pushMode;
-
-/** 推送外部视频帧
-
-该方法主动将视频帧数据用 ARVideoFrame 类封装后传递给 SDK。请确保在你调用本方法前已调用 setExternalVideoSource,并将参数 pushMode 设为 YES,不然调用本方法后会一直报错。
-
- @param frame 该视频帧包含待 ar云平台SDK 编码的视频数据,详见 ARVideoFrame
- @return YES: 该帧推送成功 NO: 该帧推送不成功
- */
-- (BOOL)pushExternalVideoFrame:(ARVideoFrame * _Nonnull)frame;
-
-//MARK: - 原始音频数据处理
-
-//MARK: - 直播视频水印
-
-//MARK: - 直播音视频流回退
-/**-----------------------------------------------------------------------------
- * @name 直播音视频流回退
- * -----------------------------------------------------------------------------
- */
-
-/** 设置弱网条件下订阅的音视频流回退选项
-
- 网络不理想的环境下,订阅音视频的质量都会下降。使用该接口开启订阅音视频流的回退选项后,SDK 会在下行弱网且音视频质量严重受影响时,将视频流切换为小流,或关断视频流,从而保证或提高通信质量。同时 SDK 会持续监控网络质量,并在网络质量改善时恢复音视频流。当远端订阅流回退为音频流时,或由音频流恢复为音视频流时,SDK 会触发远端订阅流已回退为音频流回调。
-
- @param option 订阅音视频流的回退选项,默认为弱网时回退到视频小流,详见 ARStreamFallbackOptions
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)setRemoteSubscribeFallbackOption:(ARStreamFallbackOptions)option;
-
-//MARK: - 视频双流模式
-/**-----------------------------------------------------------------------------
-* @name 视频双流模式
-* -----------------------------------------------------------------------------
-*/
-
-/** 开关视频双流模式
-
-@param enabled   YES双流模式,NO单流模式,默认单流模式
- 
-@return 0方法调用成功,<0方法调用失败
-*/
-- (int)enableDualStreamMode:(BOOL)enabled;
-
-/** 设置订阅的视频流类型
-
- 如果发送端选择发送视频双流(大流或小流),接收端可以选择接收大流还是小流。其中大流可以理解为高分辨率高码率的视频流,小流则是低分辨率低码率的视频流。该方法可以根据视频窗口的大小动态调整对应视频流的大小,以节约带宽和计算资源。
- 
-@param uid   用户 ID
-@param streamType   设置视频流大小,详见ARVideoStreamType
- 
-@return 0方法调用成功,<0方法调用失败
-*/
-- (int)setRemoteVideoStream:(NSString *_Nonnull)uid type:(ARVideoStreamType)streamType;
-
-/** 设置默认订阅的视频流类型
-
- @param streamType 设置默认接收的视频流类型,详见 ARVideoStreamType 。
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)setRemoteDefaultVideoStreamType:(ARVideoStreamType)streamType;
-
-//MARK: - 加密
-
-/**-----------------------------------------------------------------------------
- * @name 加密
- * -----------------------------------------------------------------------------
- */
-
-/** Enables/Disables the built-in encryption.
-
- 在安全要求较高的场景下,建议你在加入频道前,调用 enableEncryption 方法开启内置加密。
-
- 同一频道内所有用户必须使用相同的加密模式和密钥。一旦所有用户都离开频道,该频道的加密密钥会自动清除。
- 
- **Note**
-
- - 如果开启了内置加密,则不能使用 RTMP/RTMPS 推流功能。
- - anyRTC 支持 4 种加密模式。除 SM4_128_ECB 模式外,其他加密模式都需要在集成 iOS SDK 时,额外添加加密库文件。详见《媒体流加密》。
-
- @param enabled 是否开启内置加密:
- - YES: 开启
- - NO: 关闭
-
- @param config 配置内置加密模式和密钥。详见 AREncryptionConfig 。
-
- @return 0方法调用成功,<0方法调用失败
-
- -2 (ARErrorCodeInvalidArgument): 调用了无效的参数。需重新指定参数。
- -7 (ARErrorCodeNotInitialized): SDK 尚未初始化。需在调用 API 之前已创建 ARRtcEngineKit 对象并完成初始化。
- -4 (ARErrorCodeNotSupported): 设置的加密模式不正确或加载外部加密库失败。需检查枚举值是否正确或重新加载外部加密库。
- */
-- (int)enableEncryption:(bool)enabled encryptionConfig:(AREncryptionConfig *)config;
-
-//MARK: - 直播输入在线媒体流
-
-/**-----------------------------------------------------------------------------
- * @name 直播输入在线媒体流
- * -----------------------------------------------------------------------------
- */
-
-/** 输入在线媒体流 URL
-
- 该方法通过在服务端拉取视频流并发送到频道中,将正在播放的视频输入到正在进行的直播中。可主要应用于赛事直播、多人看视频互动等直播场景。
-
- 调用该方法后,SDK 会在本地触发 streamInjectedStatusOfUrl 回调,报告输入在线媒体流的状态。
-
- 成功输入媒体流后,该音视频流会出现在频道中,频道内所有用户都会收到 didJoinedOfUid 回调,其中 uid 为 "share666"。
-
-**Note:**
-
- - 频道内同一时间只允许输入一个在线媒体流。
- - 请确保已开通旁路推流的功能,详见前提条件。
- @param url    添加到直播中的视频流 URL 地址, 支持 RTMP, HLS, HTTP-FLV 协议传输。
-
- - 支持的音频编码格式:AAC。
- - 支持的视频编码格式:H264 (AVC)。
- @param config 输入的视频流设置,详见 ARLiveInjectStreamConfig 。
-
-@return 0方法调用成功,<0方法调用失败
- 
-    - ARErrorCodeInvalidArgument(-2):输入的 URL 为空。请重新调用该方法,并确认输入的媒体流的 URL 是有效的。
-    - ARErrorCodeNotInitialized(-7):引擎没有初始化。请确认调用该方法前已创建 RtcEngine 对象并完成初始化。
-    - ARErrorCodeNotSupported(-4):频道非直播场景。请调用 setChannelProfile 并将频道设置为直播场景再调用该方法。
-    - ARErrorCodeNotReady(-3):用户没有加入频道。
-*/
-- (int)addInjectStreamUrl:(NSString * _Nonnull)url config:(ARLiveInjectStreamConfig * _Nonnull)config;
-
-/** 删除输入的在线媒体流
-
- 成功删除后会触发 didOfflineOfUid 回调,UID 为  "share666"。
-
- @param url 已输入、待删除的在线媒体流 URL 地址
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)removeInjectStreamUrl:(NSString * _Nonnull)url;
-
-//MARK: - CDN 旁路推流
-/**-----------------------------------------------------------------------------
- * @name CDN 旁路推流
- * -----------------------------------------------------------------------------
- */
-
-/** 增加旁路推流地址
-
- 该方法用于添加旁路推流地址,调用该方法后,SDK 会在本地触发 rtmpStreamingChangedToState 回调,报告增加旁路推流地址的状态。
-
- **Note:**
-
- - 该方法仅适用于直播场景。
- - 请确保在成功加入频道后再调用该接口。
- - 请确保已开通旁路推流的功能
- - 该方法每次只能增加一路旁路推流地址。若需推送多路流,则需多次调用该方法
-
- @param url CDN 推流地址,格式为 RTMP。该字符串长度不能超过 1024 字节。URL 不支持中文等特殊字符。
- @param transcodingEnabled 是否转码:
-
- - YES: 转码(转码是指在旁路推流时对音视频流做一些转码处理后再推送到其他 RTMP 服务器,常见的适用场景是对多主播进行混流、合图)。如果设为 YES,需先调用 setLiveTranscoding 方法。
- - NO: 不转码。
-
- @return 0方法调用成功,<0方法调用失败
-
-  - ARErrorCodeInvalidArgument(-2):参数无效,一般是 URL 为空或是长度为 0 的的字符串
-  - ARErrorCodeNotInitialized(-7):推流时未初始化引擎
- */
-- (int)addPublishStreamUrl:(NSString * _Nonnull)url transcodingEnabled:(BOOL)transcodingEnabled;
-
-/** 删除旁路推流地址
-
- 该方法用于删除旁路推流过程中已经设置的 RTMP 推流地址。调用该方法后,SDK 会在本地触发 rtmpStreamingChangedToState 回调,报告删除旁路推流地址的状态。
-
-**Note:**
-
- * 该方法仅适用于直播场景。
- * 该方法每次只能删除一路旁路推流地址。若需删除多路流,则需多次调用该方法。
- * URL 不支持中文等特殊字符。
-
- @param url 待删除的推流地址,格式为 RTMP。该字符串长度不能超过 1024 字节
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)removePublishStreamUrl:(NSString * _Nonnull)url;
-
-/** 设置直播转码
-
- 该方法用于旁路推流的视图布局及音频设置等。调用该方法更新转码设置后本地会触发 rtcEngineTranscodingUpdated 回调。
-
- **Note**
-
- - 该方法仅适用于直播场景。
- - 请确保已开通 CDN 旁路推流的功能
- - 首次调用该方法更新转码设置时,不会触发 rtcEngineTranscodingUpdated 回调。
-
-
- @param transcoding 一个 ARLiveTranscoding 的对象,详细设置见 ARLiveTranscoding 。
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)setLiveTranscoding:(ARLiveTranscoding *_Nullable)transcoding;
-
-//MARK: - 数据流
-
-/**-----------------------------------------------------------------------------
- * @name 数据流
- * -----------------------------------------------------------------------------
- */
-
-/** 创建数据流
-
- 该方法用于创建数据流。ARtcEngineKit 生命周期内,每个用户最多只能创建 5 个数据流。频道内数据通道最多允许数据延迟 5 秒,若超过 5 秒接收方尚未收到数据流,则数据通道会向 App 报错。 目前Native SDK 支持 99% 可靠和 100% 有序的数据传输。
-
-**Note:**
-
- 请将 reliable 和 ordered 同时设置为 YES 或 NO,暂不支持交叉设置。
-
- @param streamId 数据流 ID
- @param reliable 设置是否保证接收方在5秒内接收到发送方的数据流:
-
- - YES: 接收方 5 秒内会收到发送方所发送的数据,否则会收到 didOccurStreamMessageError 回调获得相应报错信息。
- - NO: 接收方不保证收到,就算数据丢失也不会报错。
-
- @param ordered  设置接收方是否收到发送顺序中的数据流:
-
- - YES: 接收方 5 秒内会按照发送方发送的顺序收到数据包。
- - NO: 接收方不保证按照发送方发送的顺序收到数据包
-
- @return 0方法调用成功,<0方法调用失败
-*/
-- (int)createDataStream:(NSInteger * _Nonnull)streamId reliable:(BOOL)reliable ordered:(BOOL)ordered;
-
-/** 发送数据流
-
- 该方法发送数据流消息到频道内所有用户。SDK 对该方法的实现进行了如下限制:频道内每秒最多能发送 30 个包,且每个包最大为 1 KB。 每个客户端每秒最多能发送 6 KB 数据。频道内每人最多能同时有 5 个数据通道。
-
- 成功调用该方法后,远端会触发 receiveStreamMessageFromUid 回调,远端用户可以在该回调中获取接收到的流消息;若调用失败,远端会触发 didOccurStreamMessageErrorFromUid 回调。
-
- **Note:**
-
- - 该方法仅适用于通信场景以及直播场景下的主播用户,如果直播场景下的观众调用此方法可能会造成观众变主播。
- - 请确保在调用该方法前,已调用 createDataStream 创建了数据通道。
-
- @param streamId 数据流 ID,createDataStream 的返回值。
- @param data   需要发送的消息
-
- @return 0方法调用成功,<0方法调用失败
-*/
-- (int)sendStreamMessage:(NSInteger)streamId data:(NSData * _Nonnull)data;
-
-//MARK: - 其他视频控制
-/**-----------------------------------------------------------------------------
-* @name 其他视频控制
-* -----------------------------------------------------------------------------
-*/
-
-/** 设置摄像头采集偏好
-
-一般的视频通话或直播中,默认由 SDK 自动控制摄像头的输出参数。在如下特殊场景中,默认的参数通常无法满足需求,或可能引起设备性能问题,我们推荐调用该方法设置摄像头的采集偏好:
-
-* 使用原始音视频数据自采集接口时,如果 SDK 输出的分辨率和帧率高于 setVideoEncoderConfiguration 中指定的参数,在后续处理视频帧的时候,比如美颜功能时,会需要更高的 CPU 及内存,容易导致性能问题。在这种情况下,我们推荐将摄像头采集偏好设置为 ARCameraCaptureOutputPreferencePerformance(1),避免性能问题。
-* 如果没有本地预览功能或者对预览质量没有要求,我们推荐将采集偏好设置为 ARCameraCaptureOutputPreferencePerformance(1),以优化 CPU 和内存的资源分配。
-* 如果用户希望本地预览视频比实际编码发送的视频清晰,可以将采集偏好设置为 ARCameraCaptureOutputPreferencePreview(2)。
-
-**Note**
-
-请在启动摄像头之前调用该方法,如 joinChannelByToken,enableVideo 或者 enableLocalVideo 之前。
-
-@param configuration 摄像头采集偏好,详见 ARCameraCapturerConfiguration
-
-@return 0方法调用成功,<0方法调用失败
- */
-- (int)setCameraCapturerConfiguration:(ARCameraCapturerConfiguration * _Nullable)configuration;
-
-/** 开启/关闭本地人脸检测
-
- 开启本地人脸检测后,SDK 会触发 facePositionDidChangeWidth 回调向你报告人脸检测的信息::
-
- - 摄像头采集的画面大小
- - 人脸在画面中的位置
- - 人脸距设备屏幕的距离
- 
- @param enable 是否开启人脸检测:
- 
- - YES: 开启人脸检测
- - NO: (默认)关闭人脸检测
- 
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)enableFaceDetection:(BOOL)enable;
-
-#if TARGET_OS_IPHONE
-
-//MARK: - 摄像头控制
-/**-----------------------------------------------------------------------------
-* @name 摄像头控制
-* -----------------------------------------------------------------------------
-*/
-
-/** 切换前置/后置摄像头
-
-**Note**
-
-本方法仅适用于 iOS 平台,不适用于 macOS。
- 
-@return 0方法调用成功,<0方法调用失败
-*/
-- (int)switchCamera;
-
-/** 检测设备是否支持摄像头缩放功能
- 
-@return YES: 设备支持摄像头缩放功能; NO: 设备不支持摄像头缩放功能。
-*/
-- (BOOL)isCameraZoomSupported;
-
-/** 检测设备是否支持闪光灯常开
-
-**Note**
- 
- * 本方法仅适用于 iOS 平台,不适用于 macOS。
- * 一般情况下,App 默认开启前置摄像头,因此如果你的前置摄像头不支持闪光灯常开,直接使用该方法会返回 NO。如果需要检查后置摄像头是否支持闪光灯常开,需要先使用 switchCamera 切换摄像头,再使用该方法。
- 
-@return YES: 设备支持闪光灯常开; NO:设备不支持闪光灯常开。
-*/
-- (BOOL)isCameraTorchSupported;
-
-/** 检测设备是否支持手动对焦功能
-
-**Note**
- 
-本方法仅适用于 iOS 平台,不适用于 macOS。
- 
-@return YES: 设备支持手动对焦功能;NO: 设备不支持手动对焦功能。
-*/
-- (BOOL)isCameraFocusPositionInPreviewSupported;
-
-/** 检测设备是否支持手动曝光功能
-
-**Note**
- 
-本方法仅适用于 iOS 平台,不适用于 macOS。
- 
-@return YES: 设备支持手动曝光功能;NO: 设备不支持手动曝光功能。
-*/
-- (BOOL)isCameraExposurePositionSupported;
-
-/** 检测设备是否支持人脸对焦功能
-
-**Note**
- 
-本方法仅适用于 iOS 平台,不适用于 macOS。
- 
-@return YES: 设备支持人脸对焦功能;NO: 设备不支持人脸对焦功能。
-*/
-- (BOOL)isCameraAutoFocusFaceModeSupported;
-
-/** 设置摄像头缩放比例
-
-**Note**
- 
-本方法仅适用于 iOS 平台,不适用于 macOS。
- 
-@param zoomFactor   摄像头缩放比例,有效范围是 1.0 到设备支持的最大缩放比例。
- 
-@return 设置成功返回设置的 factor 值,设置失败返回 < 0
-*/
-- (CGFloat)setCameraZoomFactor:(CGFloat)zoomFactor;
-
-/** 设置手动对焦位置,并触发对焦
- 
-**Note**
- 
-本方法仅适用于 iOS 平台,不适用于 macOS。成功调用该方法后,本地会触发 cameraFocusDidChangedToRect 回调。
-
-@param position 触摸点相对于视图的坐标
- 
-@return YES方法调用成功,NO方法调用失败
-*/
-- (BOOL)setCameraFocusPositionInPreview:(CGPoint)position;
-
-/** 设置摄像头曝光位置
-
-**Note**
- 
-本方法仅适用于 iOS 平台,不适用于 macOS。成功调用该方法后,本地会触发 cameraExposureDidChangedToRect 回调。
-
-@param positionInView 触摸点相对于视图的横坐标和纵坐标
- 
-@return YES方法调用成功,NO方法调用失败
-*/
-- (BOOL)setCameraExposurePosition:(CGPoint)positionInView;
-
-/** 设置是否打开闪光灯
-
-@param isOn YES打开,NO关闭
- 
-@return YES方法调用成功,NO方法调用失败
-*/
-- (BOOL)setCameraTorchOn:(BOOL)isOn;
-
-/** 设置是否开启人脸对焦功能
-
-@param enable YES开启,NO关闭,默认关闭
- 
-@return YES方法调用成功,NO方法调用失败
-*/
-- (BOOL)setCameraAutoFocusFaceModeEnabled:(BOOL)enable;
-
-#endif
-
-#if (!(TARGET_OS_IPHONE) && (TARGET_OS_MAC))
-//MARK: - 屏幕共享
-
-/**-----------------------------------------------------------------------------
- * @name 屏幕共享
- * -----------------------------------------------------------------------------
- */
-
-/** 通过屏幕 ID 共享屏幕(仅支持 macOS )
- 
-共享一个屏幕或该屏幕的部分区域。你需要在该方法中指定想要共享的屏幕 ID。
- 
-**Note**: 该方法需要在加入频道后调用。
-
-@param displayId 待共享的屏幕 ID。通过该参数指定你要共享的那个屏幕。
-@param rectangle (可选)待共享区域相对于整个屏幕的位置。如不填,则表示共享整个屏幕。由如下参数组成:
-
-- x:左上角的横向偏移
-- y:左上角的纵向偏移
-- width:待共享区域的宽
-- height:待共享区域的高
-
- 如果设置的共享区域超出了屏幕的边界,则只共享屏幕内的内容;如果宽或高设为 0,则共享整个屏幕。
-@param captureParams 屏幕共享的编码参数配置。默认的分辨率为 1920 x 1080,即 2073600 像素。该像素值为计费标准。 详见 ARScreenCaptureParameters 中的说明。
-
-@return 0方法调用成功,<0方法调用失败
- */
-- (int)startScreenCaptureByDisplayId:(NSUInteger)displayId
-                           rectangle:(CGRect)rectangle
-                          parameters:(ARScreenCaptureParameters * _Nonnull)captureParams;
-
-/** 通过窗口 ID 共享窗口(仅支持 macOS )
- 
-共享一个窗口或该窗口的部分区域。你需要在该方法中指定想要共享的窗口 ID。
- 
-**Note**: 该方法需要在加入频道后调用。
-
-@param windowId 待共享的窗口 ID。通过该参数指定你要共享的那个窗口
-@param rectangle (可选)待共享区域相对于整个窗口的位置。如不填,则表示共享整个窗口。由如下参数组成:
-
- - x:左上角的横向偏移
- - y:左上角的纵向偏移
- - width:待共享区域的宽
- - height:待共享区域的高
-
- 如果设置的共享区域超出了窗口的边界,则只共享窗口内的内容;如果宽或高设为 0,则共享整个窗口。
-@param captureParams 屏幕共享的编码参数配置。默认的分辨率为 1920 x 1080,即 2073600 像素。该像素值为计费标准。 详见 ARScreenCaptureParameters 中的说明。
-
-@return 0方法调用成功,<0方法调用失败
- */
-- (int)startScreenCaptureByWindowId:(NSUInteger)windowId
-                          rectangle:(CGRect)rectangle
-                         parameters:(ARScreenCaptureParameters * _Nonnull)captureParams;
-
-/** 更新屏幕共享的参数配置(仅支持 macOS )
-
-@param captureParams 屏幕共享的编码参数配置。默认的分辨率为 1920 x 1080,即 2073600 像素。该像素值为计费标准。
-
-@return 0方法调用成功,<0方法调用失败
- */
-- (int)updateScreenCaptureParameters:(ARScreenCaptureParameters * _Nonnull)captureParams;
-
-/** 更新屏幕共享区域 (仅支持 macOS )
-
- @param rect 待共享区域相对于整个屏幕或窗口的位置。如不填,则表示共享整个屏幕或窗口。由如下参数组成:
- 
- - x:左上角的横向偏移
- - y:左上角的纵向偏移
- - width:待共享区域的宽
- - height:待共享区域的高
- 
- 如果设置的共享区域超出了屏幕或窗口的边界,则只共享屏幕或窗口内的内容;如果宽或高设为 0,则共享整个屏幕或窗口。
-
-@return 0方法调用成功,<0方法调用失败
-*/
-- (int)updateScreenCaptureRegion:(CGRect)rect;
-
-/** 停止屏幕共享(仅支持 macOS )
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)stopScreenCapture;
-
-#endif
-
-#if (!(TARGET_OS_IPHONE) && (TARGET_OS_MAC))
-//MARK: - 音视频设备管理 (macOS)
-
-/**-----------------------------------------------------------------------------
- * @name 音视频设备管理 (仅支持 macOS)
- * -----------------------------------------------------------------------------
- */
-
-/** 监控设备改变 (仅支持 macOS)
-
- 该方法用来启动设备插拔检测,这里设备指的是音视频外接设备,比如外接摄像头等。开启后,会触发设备状态改变回调。
-
- @param enabled - YES: 开启监控
- - NO: 关闭监控
- */
-- (void)monitorDeviceChange:(BOOL)enabled;
-
-/** 获取系统中所有的音视频设备 (仅支持 macOS)
-
-**Note:**
-
- 不要在主线程调用该方法。
-
- 该方法返回一个 NSArray 对象,包含系统中所有的音视频设备。应用程序可以通过 ARtcDeviceInfo array 对象枚举设备。
-
- @param type 要枚举的设备类型,详见 ARMediaDeviceType
- @return 调用成功时,返回 ARtcDeviceInfo NSArray 对象,包含所有的音视频设备。
- */
-- (NSArray<ARtcDeviceInfo *> * _Nullable)enumerateDevices:(ARMediaDeviceType)type;
-
-/** 指定设备 (仅支持 macOS)
-
- @param type  设备的类型,包括音、视频采集或播放设备,详见 ARMediaDeviceType
- @param deviceId 设备的 Device ID,可通过 enumerateDevices获取。插拔设备不会影响 deviceId 。
- @return 0方法调用成功,<0方法调用失败
- */
-
-- (int)setDevice:(ARMediaDeviceType)type deviceId:(NSString * _Nonnull)deviceId;
-
-/** 获取设备音量 (仅支持 macOS)
-
- @param type 设备的类型,包括音、视频采集或播放设备,详见 ARMediaDeviceType
- @return 该方法获取当前设备的音量。
- */
-- (int)getDeviceVolume:(ARMediaDeviceType)type;
-
-/** 设置设备音量 (仅支持 macOS)
-
- @param type   设备的类型,包括音、视频采集或播放设备,详见 ARMediaDeviceType
- @param volume 设置的音量(0 ~ 100)
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)setDeviceVolume:(ARMediaDeviceType)type volume:(int)volume;
-
-/** 启动音频采集设备测试 (仅支持 macOS)
-
- 该方法测试音频采集设备是否能正常工作。
-
- 调用该方法后,SDK 会按设置的时间间隔触发 reportAudioVolumeIndicationOfSpeakers 回调,报告 uid = "0"及采集设备的音量信息。
-
- @param indicationInterval SDK 返回 reportAudioVolumeIndicationOfSpeakers 回调的时间间隔,单位为毫秒。建议设置到大于 200 毫秒。 不得少于 10 毫秒,否则会收不到 reportAudioVolumeIndicationOfSpeakers 回调。
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)startRecordingDeviceTest:(int)indicationInterval;
-
-/** 停止麦克风测试 (仅支持 macOS)
-
- 该方法停止麦克风测试。调用 startRecordingDeviceTest 后,必须调用该方法停止测试。
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)stopRecordingDeviceTest;
-
- /** 启动音频播放设备测试 (仅支持 macOS)
-
-  该方法测试音频播放设备是否能正常工作。启动测试后,SDK 播放指定的音频文件,测试者如果能听到声音,说明播放设备能正常工作。
-
-  调用该方法后,SDK 会每隔 100 ms 触发一次 reportAudioVolumeIndicationOfSpeakers 回调,报告 uid = "1" 及播放设备的音量信息。
-  
-**Note:** 该方法需要在加入频道前调用。
-
- @param audioFileName 指定音频文件的绝对路径,路径字符串使用UTF-8编码格式:
-  - 支持的文件格式: wav,mp3,m4a,aac
-  - 支持的文件采样率: 8000,16000,32000,44100,48000
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)startPlaybackDeviceTest:(NSString * _Nonnull)audioFileName;
-
-/** 停止播放设备测试 (仅支持 macOS)
-
- 该方法停止播放设备测试。调用 startPlaybackDeviceTest 后,必须调用该方法停止测试。
- 
-**Note:** 该方法需要在加入频道前调用。
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)stopPlaybackDeviceTest;
-
-/** 启动视频采集设备测试 (仅支持 macOS)
-
- 用于测试当前视频采集设备是否工作正常,使用前需保证已调用过 enableVideo ,且传入参数的 view 窗口有效。
- 
-**Note:** 该方法需要在加入频道前调用。
- 
- @param view 输入参数,用于显示图像的窗口
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)startCaptureDeviceTest:(NSView * _Nonnull)view;
-
-/** 停止视频采集设备测试 (仅支持 macOS)
-
- 停止视频采集设备测试,如果之前调用了 startCaptureDeviceTest,必须通过该方法停止测试。
- 
-**Note:** 该方法需要在加入频道前调用。
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)stopCaptureDeviceTest;
-
-/** 开始音频设备回路测试 (仅支持 macOS)
-
- 该方法测试音频采集和播放设备是否能正常工作。一旦测试开始,音频采集设备会采集本地音频,然后使用音频播放设备播放出来。SDK 会按设置的时间间隔触发 两个 reportAudioVolumeIndicationOfSpeakers 回调,分别报告音频采集设备(uid = 0)和音频播放设备(uid = 1)的音量信息。
-
-**Note:**
-
- - 该方法仅在本地进行音频设备测试,不涉及网络连接。
- - 该方法需要在加入频道前调用。
-
-@param indicationInterval SDK 返回 reportAudioVolumeIndicationOfSpeakers 回调的时间间隔,单位为毫秒。建议设置为大于 200 毫秒。 不得少于 10 毫秒,否则会收不到 reportAudioVolumeIndicationOfSpeakers 回调。
-
-@return 0方法调用成功,<0方法调用失败
-*/
--(int)startAudioDeviceLoopbackTest:(int)indicationInterval;
-
-/** 停止音频设备回路测试 (仅支持 macOS)
-
- 在调用 startAudioDeviceLoopbackTest 后,必须调用该方法停止音频设备回路测试。
- 
-**Note:** 该方法需要在加入频道前调用。
-
-@return 0方法调用成功,<0方法调用失败
-*/
--(int)stopAudioDeviceLoopbackTest;
-
-#endif
-
-//MARK: - 媒体附属信息
-
-//MARK: - 其它方法
-/**-----------------------------------------------------------------------------
-* @name 其它方法
-* -----------------------------------------------------------------------------
-*/
-
-/** 获取通话 ID
-
- 客户端在每次 joinChannelByToken 后会生成一个对应的 CallId,标识该客户端的此次通话。有些方法如 rate,complain需要在通话结束后调用,向 SDK 提交反馈,这些方法必须指定 CallId 参数。使用这些反馈方法,需要在通话过程中调用 getCallId 方法获取 CallId,在通话结束后在反馈方法中作为参数传入。
-
- @return 当前通话 ID
- */
-- (NSString * _Nullable)getCallId;
-
-/** 分发/不分发回调至主队列
-
- 如果不分发回调方法到主队列, App 应将 UI 操作分发到主队列。
-
- @param enabled 设置是否将委托方法分发到主队列:
-
- * YES: 分发回调方法到主队列
- * NO: 不分发回调方法到主队列
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)enableMainQueueDispatch:(BOOL)enabled;
-
-/** 查询 SDK 版本号
-
- @return 当前的 SDK 版本号,格式为字符串,如 4.0.0
- */
-+ (NSString * _Nonnull)getSdkVersion;
-
-/** 获取警告或错误描述。
-
- @param code didOccurWarning 或 didOccurError 提供的警告码或错误码。
-
- @return 警告或错误描述
- */
-+ (NSString * _Nullable)getErrorDescription:(NSInteger)code;
-
-/** 设置日志文件路径
-
-设置 SDK 的输出 log 文件。SDK 运行时产生的所有 log 将写入该文件。 App 必须保证指定的目录存在而且可写。
-
-**Note**
-
- - 日志文件的默认地址如下:
-   - iOS: `App Sandbox/Library/caches/ar_sdk.log`
-   - macOS
-     - 开启沙盒: `App Sandbox/Library/Logs/ar_sdk.log`, 例如 `/Users/<username>/Library/Containers/<App Bundle Identifier>/Data/Library/Logs/ar_sdk.log`.
-     - 关闭沙盒: `~/Library/Logs/ar_sdk.log`.
- - 如需调用本方法,请在调用 sharedEngineWithAppId 方法初始化 ARtcEngineKit 对象后立即调用,否则可能造成输出日志不完整。
-
- @param filePath 日志文件的完整路径。该日志文件为 UTF-8 编码。
-
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)setLogFile:(NSString * _Nonnull)filePath;
-
-/** 设置日志文件大小
-
-设置 SDK 输出的日志文件大小,单位为 KB。
-
-SDK 设有 2 个日志文件,每个文件大小为 512 KB。如果你将 fileSizeInKByte 设置为 1024 KB, SDK 会最多输出 2 MB 的日志文件。如果日志文件大小超出设置值,新的日志会覆盖之前的日志。
-
- @param fileSizeInKBytes 指定 SDK 输出日志文件的内存大小,单位为 KB。
-
- @return 0方法调用成功,<0方法调用失败,有可能是因为传入的参数无效
- */
-- (int)setLogFileSize:(NSUInteger)fileSizeInKBytes;
-
-/** 设置日志输出等级
-
-@param filter 日志输出等级
-
-@return 0方法调用成功,<0方法调用失败
-*/
-- (int)setLogFilter:(ARLogFilter)filter;
-
-/** 获取 Native SDK Engine 句柄
-
-该方法获取 native SDK engine 的 C++ handle,用于包括注册音视频帧观测器在内的特殊场景。
-*/
-- (void *_Nullable)getNativeHandle;
-
-/** 设置/获取 ARtcEngineDelegate
-
- ar云平台 Native SDK 通过指定的 delegate 通知 App 引擎运行时的事件。Delegate 中定义的所有方法都是可选实现的。
- */
-@property (nonatomic, weak) id<ARtcEngineDelegate> _Nullable delegate;
-
-//MARK: - 定制方法
-/**-----------------------------------------------------------------------------
-* @name 定制方法
-* -----------------------------------------------------------------------------
-*/
-
-/** 通过 JSON 配置 SDK 提供技术预览或特别定制功能
-
-**Note**
-
- JSON 选项默认不公开。
-
- @param options JSON 格式的 SDK 选项
- 
- @return 0方法调用成功,<0方法调用失败
- */
-- (int)setParameters:(NSString * _Nonnull)options;
-
-/** 获取 ar云平台 SDK 可供自定义的参数
-
-**Note**
-
- 该方法未公开,请联系ar云平台支持 hi@dync.cc 获取详情。
- 
- @param parameter 定制参数
- @param args 参数
- 
- @return json字符串
- */
-- (NSString * _Nullable)getParameter:(NSString * _Nonnull)parameter args:(NSString * _Nullable)args;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Headers/ARtcKit.h b/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Headers/ARtcKit.h
deleted file mode 100644
index 055c437..0000000
--- a/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Headers/ARtcKit.h
+++ /dev/null
@@ -1,29 +0,0 @@
-//
-//  ARtcKit.h
-//  ARtcKit
-//
-//  Created by zjq on 2020/3/18.
-//  Copyright © 2020 zjq. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-
-//! Project version number for ARtcKit.
-FOUNDATION_EXPORT double ARtcKitVersionNumber;
-
-//! Project version string for ARtcKit.
-FOUNDATION_EXPORT const unsigned char ARtcKitVersionString[];
-
-// In this header, you should import all the public headers of your framework using statements like #import <ARtcKit/PublicHeader.h>
-
-#import <ARtcKit/ARObjects.h>
-#import <ARtcKit/ARtcEngineDelegate.h>
-#import <ARtcKit/AREnumerates.h>
-#import <ARtcKit/ARtcEngineKit.h>
-#import <ARtcKit/ARtcChannel.h>
-#import <ARtcKit/ARtcChannelDelegate.h>
-#import <ARtcKit/ARMediaPlayerKit.h>
-#import <ARtcKit/ARStreamingKit.h>
-
-
-
diff --git a/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Headers/ArBase.h b/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Headers/ArBase.h
deleted file mode 100644
index 2c70c27..0000000
--- a/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Headers/ArBase.h
+++ /dev/null
@@ -1,826 +0,0 @@
-//  AR Engine SDK
-//
-//  Copyright (c) 2019 AR.io. All rights reserved.
-//
-
-#ifndef __AR_BASE_H__
-#define __AR_BASE_H__
-
-#include <stddef.h>
-#include <stdio.h>
-#include <stdarg.h>
-#include <string.h>
-#include <stdlib.h>
-
-#if defined(_WIN32)
-#define WIN32_LEAN_AND_MEAN
-#include <windows.h>
-#define AR_CALL __cdecl
-#if defined(ARRTC_EXPORT)
-#define AR_API extern "C" __declspec(dllexport)
-#else
-#define AR_API extern "C" __declspec(dllimport)
-#endif
-#elif defined(__APPLE__)
-#include <TargetConditionals.h>
-#define AR_API __attribute__((visibility("default"))) extern "C"
-#define AR_CALL
-#elif defined(__ANDROID__) || defined(__linux__)
-#define AR_API extern "C" __attribute__((visibility("default")))
-#define AR_CALL
-#else
-#define AR_API extern "C"
-#define AR_CPP_API
-#define AR_CALL
-#endif
-
-namespace ar {
-namespace util {
-
-template<class T>
-class AutoPtr {
-    typedef T value_type;
-    typedef T* pointer_type;
-public:
-    AutoPtr(pointer_type p=0)
-        :ptr_(p)
-    {}
-    ~AutoPtr() {
-        if (ptr_)
-            ptr_->release();
-    }
-    operator bool() const { return ptr_ != (pointer_type)0; }
-    value_type& operator*() const {
-        return *get();
-    }
-
-    pointer_type operator->() const {
-        return get();
-    }
-
-    pointer_type get() const {
-        return ptr_;
-    }
-
-    pointer_type release() {
-        pointer_type tmp = ptr_;
-        ptr_ = 0;
-        return tmp;
-    }
-
-    void reset(pointer_type ptr = 0) {
-        if (ptr != ptr_ && ptr_)
-            ptr_->release();
-        ptr_ = ptr;
-    }
-    template<class C1, class C2>
-    bool queryInterface(C1* c, C2 iid) {
-        pointer_type p = NULL;
-        if (c && !c->queryInterface(iid, (void**)&p))
-        {
-            reset(p);
-        }
-        return p != NULL;
-	}
-private:
-    AutoPtr(const AutoPtr&);
-    AutoPtr& operator=(const AutoPtr&);
-private:
-    pointer_type ptr_;
-};
-class IString {
-protected:
-    virtual ~IString(){}
-public:
-    virtual bool empty() const = 0;
-    virtual const char* c_str() = 0;
-    virtual const char* data() = 0;
-    virtual size_t length() = 0;
-    virtual void release() = 0;
-};
-typedef AutoPtr<IString> AString;
-
-}//namespace util
-
-enum INTERFACE_ID_TYPE
-{
-    AR_IID_AUDIO_DEVICE_MANAGER = 1,
-    AR_IID_VIDEO_DEVICE_MANAGER = 2,
-    AR_IID_RTC_ENGINE_PARAMETER = 3,
-    AR_IID_MEDIA_ENGINE = 4,
-    AR_IID_SIGNALING_ENGINE = 8,
-};
-
-    /** Warning code.
-     */
-enum WARN_CODE_TYPE
-{
-  /** 8: The specified view is invalid. Specify a view when using the video call function.
-  */
-    WARN_INVALID_VIEW = 8,
-    /** 16: Failed to initialize the video function, possibly caused by a lack of resources. The users cannot see the video while the voice communication is not affected.
-    */
-    WARN_INIT_VIDEO = 16,
-    /** 20: The request is pending, usually due to some module not being ready, and the SDK postponed processing the request.
-    */
-    WARN_PENDING = 20,
-    /** 103: No channel resources are available. Maybe because the server cannot allocate any channel resource.
-    */
-    WARN_NO_AVAILABLE_CHANNEL = 103,
-    /** 104: A timeout occurs when looking up the channel. When joining a channel, the SDK looks up the specified channel. This warning usually occurs when the network condition is too poor for the SDK to connect to the server.
-    */
-    WARN_LOOKUP_CHANNEL_TIMEOUT = 104,
-    /** **DEPRECATED** 105: The server rejects the request to look up the channel. The server cannot process this request or the request is illegal.
-     
-     Deprecated as of v2.4.1. Use CONNECTION_CHANGED_REJECTED_BY_SERVER(10) in the \ref ar::rtc::IRtcEngineEventHandler::onConnectionStateChanged "onConnectionStateChanged" callback instead.
-    */
-    WARN_LOOKUP_CHANNEL_REJECTED = 105,
-    /** 106: A timeout occurs when opening the channel. Once the specific channel is found, the SDK opens the channel. This warning usually occurs when the network condition is too poor for the SDK to connect to the server.
-    */
-    WARN_OPEN_CHANNEL_TIMEOUT = 106,
-    /** 107: The server rejects the request to open the channel. The server cannot process this request or the request is illegal.
-    */
-    WARN_OPEN_CHANNEL_REJECTED = 107,
-
-    // sdk: 100~1000
-    /** 111: A timeout occurs when switching to the live video.
-    */
-    WARN_SWITCH_LIVE_VIDEO_TIMEOUT = 111,
-    /** 118: A timeout occurs when setting the client role in the live interactive streaming profile.
-    */
-    WARN_SET_CLIENT_ROLE_TIMEOUT = 118,
-    /** 121: The ticket to open the channel is invalid.
-    */
-    WARN_OPEN_CHANNEL_INVALID_TICKET = 121,
-    /** 122: Try connecting to another server.
-    */
-    WARN_OPEN_CHANNEL_TRY_NEXT_VOS = 122,
-    /** 131: The channel connection cannot be recovered.
-     */
-    WARN_CHANNEL_CONNECTION_UNRECOVERABLE = 131,
-    /** 132: The IP address has changed.
-     */
-    WARN_CHANNEL_CONNECTION_IP_CHANGED = 132,
-    /** 133: The port has changed.
-     */
-    WARN_CHANNEL_CONNECTION_PORT_CHANGED = 133,
-    /** 134: The socket error occurs, try to rejoin channel.
-     */
-    WARN_CHANNEL_SOCKET_ERROR = 134,
-    /** 701: An error occurs in opening the audio mixing file.
-    */
-    WARN_AUDIO_MIXING_OPEN_ERROR = 701,
-    /** 1014: Audio Device Module: A warning occurs in the playback device.
-    */
-    WARN_ADM_RUNTIME_PLAYOUT_WARNING = 1014,
-    /** 1016: Audio Device Module: a warning occurs in the recording device.
-    */
-    WARN_ADM_RUNTIME_RECORDING_WARNING = 1016,
-    /** 1019: Audio Device Module: no valid audio data is recorded.
-    */
-    WARN_ADM_RECORD_AUDIO_SILENCE = 1019,
-    /** 1020: Audio device module: The audio playback frequency is abnormal, which may cause audio freezes. This abnormality is caused by high CPU usage. AR recommends stopping other apps.
-    */
-    WARN_ADM_PLAYOUT_MALFUNCTION = 1020,
-    /** 1021: Audio device module: the audio recording frequency is abnormal, which may cause audio freezes. This abnormality is caused by high CPU usage. AR recommends stopping other apps.
-    */
-    WARN_ADM_RECORD_MALFUNCTION = 1021,
-    /** 1025: The audio playback or recording is interrupted by system events (such as a phone call).
-    */
-    WARN_ADM_CALL_INTERRUPTION = 1025,
-    /** 1029: During a call, the audio session category should be set to
-     * AVAudioSessionCategoryPlayAndRecord, and RtcEngine monitors this value.
-     * If the audio session category is set to other values, this warning code
-     * is triggered and RtcEngine will forcefully set it back to
-     * AVAudioSessionCategoryPlayAndRecord.
-    */
-    WARN_ADM_IOS_CATEGORY_NOT_PLAYANDRECORD = 1029,
-    /** 1031: Audio Device Module: The recorded audio voice is too low.
-    */
-    WARN_ADM_RECORD_AUDIO_LOWLEVEL = 1031,
-    /** 1032: Audio Device Module: the playback audio voice is too low.
-    */
-    WARN_ADM_PLAYOUT_AUDIO_LOWLEVEL = 1032,
-    /** 1033: Audio device module: The audio recording device is occupied.
-     */
-    WARN_ADM_RECORD_AUDIO_IS_ACTIVE = 1033,
-    /** 1040: Audio device module: An exception occurs with the audio drive.
-     * Solutions:
-     * - Disable or re-enable the audio device.
-     * - Re-enable your device.
-     * - Update the sound card drive.
-     */
-    WARN_ADM_WINDOWS_NO_DATA_READY_EVENT = 1040,
-    /** 1042: Audio device module: The audio recording device is different from the audio playback device,
-     * which may cause echoes problem. AR recommends using the same audio device to record and playback
-     * audio.
-     */
-    WARN_ADM_INCONSISTENT_AUDIO_DEVICE = 1042,
-    /** 1051: (Communication profile only) Audio processing module: A howling sound is detected when recording the audio data.
-    */
-    WARN_APM_HOWLING = 1051,
-    /** 1052: Audio Device Module: The device is in the glitch state.
-    */
-    WARN_ADM_GLITCH_STATE = 1052,
-    /** 1053: Audio Processing Module: A residual echo is detected, which may be caused by the belated scheduling of system threads or the signal overflow.
-    */
-    WARN_APM_RESIDUAL_ECHO = 1053,
-    /// @cond
-    WARN_ADM_WIN_CORE_NO_RECORDING_DEVICE = 1322,
-    /// @endcond
-    /** 1323: Audio device module: No available playback device.
-     * Solution: Plug in the audio device.
-    */
-    WARN_ADM_WIN_CORE_NO_PLAYOUT_DEVICE = 1323,
-    /** Audio device module: The capture device is released improperly.
-     * Solutions:
-     * - Disable or re-enable the audio device.
-     * - Re-enable your device.
-     * - Update the sound card drive.
-     */
-    WARN_ADM_WIN_CORE_IMPROPER_CAPTURE_RELEASE = 1324,
-    /** 1610: The origin resolution of the remote video is beyond the range where the super-resolution algorithm can be applied.
-    */
-    WARN_SUPER_RESOLUTION_STREAM_OVER_LIMITATION = 1610,
-    /** 1611: Another user is already using the super-resolution algorithm.
-    */
-    WARN_SUPER_RESOLUTION_USER_COUNT_OVER_LIMITATION = 1611,
-    /** 1612: The device does not support the super-resolution algorithm.
-    */
-    WARN_SUPER_RESOLUTION_DEVICE_NOT_SUPPORTED = 1612,
-    /// @cond
-    WARN_RTM_LOGIN_TIMEOUT = 2005,
-    WARN_RTM_KEEP_ALIVE_TIMEOUT = 2009
-    /// @endcond
-};
-
-/** Error code.
-*/
-enum ERROR_CODE_TYPE
-{
-  /** 0: No error occurs.
-  */
-    ERR_OK = 0,
-    //1~1000
-    /** 1: A general error occurs (no specified reason).
-    */
-    ERR_FAILED = 1,
-    /** 2: An invalid parameter is used. For example, the specific channel name includes illegal characters.
-    */
-    ERR_INVALID_ARGUMENT = 2,
-    /** 3: The SDK module is not ready. Possible solutions:
-
-     - Check the audio device.
-     - Check the completeness of the application.
-     - Re-initialize the RTC engine.
-     */
-    ERR_NOT_READY = 3,
-    /** 4: The SDK does not support this function.
-     */
-    ERR_NOT_SUPPORTED = 4,
-    /** 5: The request is rejected.
-     */
-    ERR_REFUSED = 5,
-    /** 6: The buffer size is not big enough to store the returned data.
-     */
-    ERR_BUFFER_TOO_SMALL = 6,
-    /** 7: The SDK is not initialized before calling this method.
-     */
-    ERR_NOT_INITIALIZED = 7,
-    /** 9: No permission exists. Check if the user has granted access to the audio or video device.
-     */
-    ERR_NO_PERMISSION = 9,
-    /** 10: An API method timeout occurs. Some API methods require the SDK to return the execution result, and this error occurs if the request takes too long (more than 10 seconds) for the SDK to process.
-     */
-    ERR_TIMEDOUT = 10,
-    /** 11: The request is canceled. This is for internal SDK use only, and it does not return to the application through any method or callback.
-     */
-    ERR_CANCELED = 11,
-    /** 12: The method is called too often. This is for internal SDK use only, and it does not return to the application through any method or callback.
-     */
-    ERR_TOO_OFTEN = 12,
-    /** 13: The SDK fails to bind to the network socket. This is for internal SDK use only, and it does not return to the application through any method or callback.
-     */
-    ERR_BIND_SOCKET = 13,
-    /** 14: The network is unavailable. This is for internal SDK use only, and it does not return to the application through any method or callback.
-     */
-    ERR_NET_DOWN = 14,
-    /** 15: No network buffers are available. This is for internal SDK internal use only, and it does not return to the application through any method or callback.
-     */
-    ERR_NET_NOBUFS = 15,
-    /** 17: The request to join the channel is rejected.
-     *
-     * - This error usually occurs when the user is already in the channel, and still calls the method to join the channel, for example, \ref ar::rtc::IRtcEngine::joinChannel "joinChannel".
-     * - This error usually occurs when the user tries to join a channel during a call test (\ref ar::rtc::IRtcEngine::startEchoTest "startEchoTest"). Once you call \ref ar::rtc::IRtcEngine::startEchoTest "startEchoTest", you need to call \ref ar::rtc::IRtcEngine::stopEchoTest "stopEchoTest" before joining a channel.
-     */
-    ERR_JOIN_CHANNEL_REJECTED = 17,
-    /** 18: The request to leave the channel is rejected.
-
-     This error usually occurs:
-
-     - When the user has left the channel and still calls \ref ar::rtc::IRtcEngine::leaveChannel "leaveChannel" to leave the channel. In this case, stop calling \ref ar::rtc::IRtcEngine::leaveChannel "leaveChannel".
-     - When the user has not joined the channel and still calls \ref ar::rtc::IRtcEngine::leaveChannel "leaveChannel" to leave the channel. In this case, no extra operation is needed.
-     */
-    ERR_LEAVE_CHANNEL_REJECTED = 18,
-    /** 19: Resources are occupied and cannot be reused.
-     */
-    ERR_ALREADY_IN_USE = 19,
-    /** 20: The SDK gives up the request due to too many requests.
-     */
-    ERR_ABORTED = 20,
-    /** 21: In Windows, specific firewall settings can cause the SDK to fail to initialize and crash.
-     */
-    ERR_INIT_NET_ENGINE = 21,
-    /** 22: The application uses too much of the system resources and the SDK fails to allocate the resources.
-     */
-    ERR_RESOURCE_LIMITED = 22,
-    /** 101: The specified App ID is invalid. Please try to rejoin the channel with a valid App ID.
-     */
-    ERR_INVALID_APP_ID = 101,
-    /** 102: The specified channel name is invalid. Please try to rejoin the channel with a valid channel name.
-     */
-    ERR_INVALID_CHANNEL_NAME = 102,
-    /** 103: Fails to get server resources in the specified region. Please try to specify another region when calling \ref ar::rtc::IRtcEngine::initialize "initialize".
-     */
-    ERR_NO_SERVER_RESOURCES = 103,
-    /** **DEPRECATED** 109: Deprecated as of v2.4.1. Use CONNECTION_CHANGED_TOKEN_EXPIRED(9) in the \ref ar::rtc::IRtcEngineEventHandler::onConnectionStateChanged "onConnectionStateChanged" callback instead.
-
-     The token expired due to one of the following reasons:
-     
-     - Authorized Timestamp expired: The timestamp is represented by the number of seconds elapsed since 1/1/1970. The user can use the Token to access the AR service within five minutes after the Token is generated. If the user does not access the AR service after five minutes, this Token is no longer valid.
-     - Call Expiration Timestamp expired: The timestamp is the exact time when a user can no longer use the AR service (for example, when a user is forced to leave an ongoing call). When a value is set for the Call Expiration Timestamp, it does not mean that the token will expire, but that the user will be banned from the channel.
-     */
-    ERR_TOKEN_EXPIRED = 109,
-    /** **DEPRECATED** 110: Deprecated as of v2.4.1. Use CONNECTION_CHANGED_INVALID_TOKEN(8) in the \ref ar::rtc::IRtcEngineEventHandler::onConnectionStateChanged "onConnectionStateChanged" callback instead.
-     
-     The token is invalid due to one of the following reasons:
-     
-     - The App Certificate for the project is enabled in Console, but the user is still using the App ID. Once the App Certificate is enabled, the user must use a token.
-     - The uid is mandatory, and users must set the same uid as the one set in the \ref ar::rtc::IRtcEngine::joinChannel "joinChannel" method.
-     */
-    ERR_INVALID_TOKEN = 110,
-    /** 111: The internet connection is interrupted. This applies to the AR Web SDK only.
-     */
-    ERR_CONNECTION_INTERRUPTED = 111, // only used in web sdk
-    /** 112: The internet connection is lost. This applies to the AR Web SDK only.
-     */
-    ERR_CONNECTION_LOST = 112, // only used in web sdk
-    /** 113: The user is not in the channel when calling the \ref ar::rtc::IRtcEngine::sendStreamMessage "sendStreamMessage" or \ref ar::rtc::IRtcEngine::getUserInfoByUserAccount "getUserInfoByUserAccount" method.
-     */
-    ERR_NOT_IN_CHANNEL = 113,
-    /** 114: The size of the sent data is over 1024 bytes when the user calls the \ref ar::rtc::IRtcEngine::sendStreamMessage "sendStreamMessage" method.
-     */
-    ERR_SIZE_TOO_LARGE = 114,
-    /** 115: The bitrate of the sent data exceeds the limit of 6 Kbps when the user calls the \ref ar::rtc::IRtcEngine::sendStreamMessage "sendStreamMessage" method.
-     */
-    ERR_BITRATE_LIMIT = 115,
-    /** 116: Too many data streams (over 5 streams) are created when the user calls the \ref ar::rtc::IRtcEngine::createDataStream "createDataStream" method.
-     */
-    ERR_TOO_MANY_DATA_STREAMS = 116,
-    /** 117: The data stream transmission timed out.
-     */
-    ERR_STREAM_MESSAGE_TIMEOUT = 117,
-    /** 119: Switching roles fail. Please try to rejoin the channel.
-     */
-    ERR_SET_CLIENT_ROLE_NOT_AUTHORIZED = 119,
-    /** 120: Decryption fails. The user may have used a different encryption password to join the channel. Check your settings or try rejoining the channel.
-     */
-    ERR_DECRYPTION_FAILED = 120,
-    /** 123: The client is banned by the server.
-     */
-    ERR_CLIENT_IS_BANNED_BY_SERVER = 123,
-    /** 124: Incorrect watermark file parameter.
-     */
-    ERR_WATERMARK_PARAM = 124,
-    /** 125: Incorrect watermark file path.
-     */
-    ERR_WATERMARK_PATH = 125,
-    /** 126: Incorrect watermark file format.
-     */
-    ERR_WATERMARK_PNG = 126,
-    /** 127: Incorrect watermark file information.
-     */
-    ERR_WATERMARKR_INFO = 127,
-    /** 128: Incorrect watermark file data format.
-     */
-    ERR_WATERMARK_ARGB = 128,
-    /** 129: An error occurs in reading the watermark file.
-     */
-    ERR_WATERMARK_READ = 129,
-    /** 130: Encryption is enabled when the user calls the \ref ar::rtc::IRtcEngine::addPublishStreamUrl "addPublishStreamUrl" method (CDN live streaming does not support encrypted streams).
-     */
-    ERR_ENCRYPTED_STREAM_NOT_ALLOWED_PUBLISH = 130,
-    /** 134: The user account is invalid. */
-    ERR_INVALID_USER_ACCOUNT = 134,
-    
-    /** 151: CDN related errors. Remove the original URL address and add a new one by calling the \ref ar::rtc::IRtcEngine::removePublishStreamUrl "removePublishStreamUrl" and \ref ar::rtc::IRtcEngine::addPublishStreamUrl "addPublishStreamUrl" methods.
-     */
-    ERR_PUBLISH_STREAM_CDN_ERROR = 151,
-    /** 152: The host publishes more than 10 URLs. Delete the unnecessary URLs before adding new ones.
-     */
-    ERR_PUBLISH_STREAM_NUM_REACH_LIMIT = 152,
-    /** 153: The host manipulates other hosts' URLs. Check your app logic.
-     */
-    ERR_PUBLISH_STREAM_NOT_AUTHORIZED = 153,
-    /** 154: An error occurs in AR's streaming server. Call the addPublishStreamUrl method to publish the streaming again.
-     */
-    ERR_PUBLISH_STREAM_INTERNAL_SERVER_ERROR = 154,
-    /** 155: The server fails to find the stream.
-     */
-    ERR_PUBLISH_STREAM_NOT_FOUND = 155,
-    /** 156: The format of the RTMP stream URL is not supported. Check whether the URL format is correct.
-     */
-    ERR_PUBLISH_STREAM_FORMAT_NOT_SUPPORTED = 156,
-
-    //signaling: 400~600
-    /**
-    */
-    ERR_LOGOUT_OTHER = 400,  //
-    /** 401: The user logged out.
-     */
-    ERR_LOGOUT_USER = 401,  // logout by user
-    /** 402: Network failure.
-     */
-    ERR_LOGOUT_NET = 402,  // network failure
-    /** 403: Logged in another device.
-     */
-    ERR_LOGOUT_KICKED = 403,  // login in other device
-    /**
-     */
-    ERR_LOGOUT_PACKET = 404,  //
-    /** 405: The token expired.
-     */
-    ERR_LOGOUT_TOKEN_EXPIRED = 405,  // token expired
-    /**
-     */
-    ERR_LOGOUT_OLDVERSION = 406,  //
-    /**
-     */
-    ERR_LOGOUT_TOKEN_WRONG = 407,
-    /**
-    */
-    ERR_LOGOUT_ALREADY_LOGOUT = 408,
-    /**
-     */
-    ERR_LOGIN_OTHER = 420,
-    /**
-    */
-    ERR_LOGIN_NET = 421,
-    /**
-     */
-    ERR_LOGIN_FAILED = 422,
-    /**
-     */
-    ERR_LOGIN_CANCELED = 423,
-    /**
-     */
-    ERR_LOGIN_TOKEN_EXPIRED = 424,
-    /**
-     */
-    ERR_LOGIN_OLD_VERSION = 425,
-    /**
-     */
-    ERR_LOGIN_TOKEN_WRONG = 426,
-    /**
-     */
-    ERR_LOGIN_TOKEN_KICKED = 427,
-    /**
-     */
-    ERR_LOGIN_ALREADY_LOGIN = 428,
-    /**
-    */
-    ERR_JOIN_CHANNEL_OTHER = 440,
-    /**
-     */
-    ERR_SEND_MESSAGE_OTHER = 440,
-    /**
-     */
-    ERR_SEND_MESSAGE_TIMEOUT = 441,
-    /**
-     */
-    ERR_QUERY_USERNUM_OTHER = 450,
-    /**
-     */
-    ERR_QUERY_USERNUM_TIMEOUT = 451,
-    /**
-     */
-    ERR_QUERY_USERNUM_BYUSER = 452,
-    /**
-     */
-    ERR_LEAVE_CHANNEL_OTHER = 460,
-    /**
-     */
-    ERR_LEAVE_CHANNEL_KICKED = 461,
-    /**
-     */
-    ERR_LEAVE_CHANNEL_BYUSER = 462,
-    /**
-     */
-    ERR_LEAVE_CHANNEL_LOGOUT = 463,
-    /**
-     */
-    ERR_LEAVE_CHANNEL_DISCONNECTED = 464,
-    /**
-     */
-    ERR_INVITE_OTHER = 470,
-    /**
-     */
-    ERR_INVITE_REINVITE = 471,
-    /**
-     */
-    ERR_INVITE_NET = 472,
-    /**
-     */
-    ERR_INVITE_PEER_OFFLINE = 473,
-    ERR_INVITE_TIMEOUT = 474,
-    ERR_INVITE_CANT_RECV = 475,
-
-
-    //1001~2000
-    /** 1001: Fails to load the media engine.
-     */
-    ERR_LOAD_MEDIA_ENGINE = 1001,
-    /** 1002: Fails to start the call after enabling the media engine.
-     */
-    ERR_START_CALL = 1002,
-    /** **DEPRECATED** 1003: Fails to start the camera.
-     
-    Deprecated as of v2.4.1. Use LOCAL_VIDEO_STREAM_ERROR_CAPTURE_FAILURE(4) in the \ref ar::rtc::IRtcEngineEventHandler::onConnectionStateChanged "onConnectionStateChanged" callback instead.
-     */
-    ERR_START_CAMERA = 1003,
-    /** 1004: Fails to start the video rendering module.
-     */
-    ERR_START_VIDEO_RENDER = 1004,
-    /** 1005: A general error occurs in the Audio Device Module (no specified reason). Check if the audio device is used by another application, or try rejoining the channel.
-     */
-    ERR_ADM_GENERAL_ERROR = 1005,
-    /** 1006: Audio Device Module: An error occurs in using the Java resources.
-     */
-    ERR_ADM_JAVA_RESOURCE = 1006,
-    /** 1007: Audio Device Module: An error occurs in setting the sampling frequency.
-     */
-    ERR_ADM_SAMPLE_RATE = 1007,
-    /** 1008: Audio Device Module: An error occurs in initializing the playback device.
-     */
-    ERR_ADM_INIT_PLAYOUT = 1008,
-    /** 1009: Audio Device Module: An error occurs in starting the playback device.
-     */
-    ERR_ADM_START_PLAYOUT = 1009,
-    /** 1010: Audio Device Module: An error occurs in stopping the playback device.
-     */
-    ERR_ADM_STOP_PLAYOUT = 1010,
-    /** 1011: Audio Device Module: An error occurs in initializing the recording device.
-     */
-    ERR_ADM_INIT_RECORDING = 1011,
-    /** 1012: Audio Device Module: An error occurs in starting the recording device.
-     */
-    ERR_ADM_START_RECORDING = 1012,
-    /** 1013: Audio Device Module: An error occurs in stopping the recording device.
-     */
-    ERR_ADM_STOP_RECORDING = 1013,
-    /** 1015: Audio Device Module: A playback error occurs. Check your playback device and try rejoining the channel.
-     */
-    ERR_ADM_RUNTIME_PLAYOUT_ERROR = 1015,
-    /** 1017: Audio Device Module: A recording error occurs.
-     */
-    ERR_ADM_RUNTIME_RECORDING_ERROR = 1017,
-    /** 1018: Audio Device Module: Fails to record.
-     */
-    ERR_ADM_RECORD_AUDIO_FAILED = 1018,
-    /** 1022: Audio Device Module: An error occurs in initializing the 
-     * loopback device.
-     */
-    ERR_ADM_INIT_LOOPBACK = 1022,
-    /** 1023: Audio Device Module: An error occurs in starting the loopback 
-     * device.
-     */
-    ERR_ADM_START_LOOPBACK = 1023,
-    /** 1027: Audio Device Module: No recording permission exists. Check if the
-     *  recording permission is granted.
-     */
-    ERR_ADM_NO_PERMISSION = 1027,
-    /** 1033: Audio device module: The device is occupied. 
-    */
-    ERR_ADM_RECORD_AUDIO_IS_ACTIVE = 1033,
-    /** 1101: Audio device module: A fatal exception occurs.
-    */
-    ERR_ADM_ANDROID_JNI_JAVA_RESOURCE = 1101,
-    /** 1108: Audio device module: The recording frequency is lower than 50. 
-     * 0 indicates that the recording is not yet started. We recommend 
-     * checking your recording permission.
-    */
-    ERR_ADM_ANDROID_JNI_NO_RECORD_FREQUENCY = 1108,
-    /** 1109: The playback frequency is lower than 50. 0 indicates that the 
-     * playback is not yet started. We recommend checking if you have created 
-     * too many AudioTrack instances. 
-    */
-    ERR_ADM_ANDROID_JNI_NO_PLAYBACK_FREQUENCY = 1109,
-    /** 1111: Audio device module: AudioRecord fails to start up. A ROM system 
-     * error occurs. We recommend the following options to debug: 
-     * - Restart your App.
-     * - Restart your cellphone. 
-     * - Check your recording permission.
-     */
-    ERR_ADM_ANDROID_JNI_JAVA_START_RECORD = 1111,
-    /** 1112: Audio device module: AudioTrack fails to start up. A ROM system 
-     * error occurs. We recommend the following options to debug: 
-     * - Restart your App.
-     * - Restart your cellphone. 
-     * - Check your playback permission.
-    */
-    ERR_ADM_ANDROID_JNI_JAVA_START_PLAYBACK = 1112,
-    /** 1115: Audio device module: AudioRecord returns error. The SDK will 
-     * automatically restart AudioRecord. */
-    ERR_ADM_ANDROID_JNI_JAVA_RECORD_ERROR = 1115,
-    /** **DEPRECATED** */
-    ERR_ADM_ANDROID_OPENSL_CREATE_ENGINE = 1151,
-    /** **DEPRECATED** */
-    ERR_ADM_ANDROID_OPENSL_CREATE_AUDIO_RECORDER = 1153,
-    /** **DEPRECATED** */
-    ERR_ADM_ANDROID_OPENSL_START_RECORDER_THREAD = 1156,
-    /** **DEPRECATED** */
-    ERR_ADM_ANDROID_OPENSL_CREATE_AUDIO_PLAYER = 1157,
-    /** **DEPRECATED** */
-    ERR_ADM_ANDROID_OPENSL_START_PLAYER_THREAD = 1160,
-    /** 1201: Audio device module: The current device does not support audio 
-     * input, possibly because you have mistakenly configured the audio session
-     *  category, or because some other app is occupying the input device. We 
-     * recommend terminating all background apps and re-joining the channel. */
-    ERR_ADM_IOS_INPUT_NOT_AVAILABLE = 1201,
-    /** 1206: Audio device module: Cannot activate the Audio Session.*/
-    ERR_ADM_IOS_ACTIVATE_SESSION_FAIL = 1206,
-    /** 1210: Audio device module: Fails to initialize the audio device, 
-     * normally because the audio device parameters are wrongly set.*/
-    ERR_ADM_IOS_VPIO_INIT_FAIL = 1210,
-    /** 1213: Audio device module: Fails to re-initialize the audio device, 
-     * normally because the audio device parameters are wrongly set.*/
-    ERR_ADM_IOS_VPIO_REINIT_FAIL = 1213,
-    /** 1214: Fails to re-start up the Audio Unit, possibly because the audio 
-     * session category is not compatible with the settings of the Audio Unit.
-    */
-    ERR_ADM_IOS_VPIO_RESTART_FAIL = 1214,
-    ERR_ADM_IOS_SET_RENDER_CALLBACK_FAIL = 1219,
-    /** **DEPRECATED** */
-    ERR_ADM_IOS_SESSION_SAMPLERATR_ZERO = 1221,
-    /** 1301: Audio device module: An audio driver abnomality or a 
-     * compatibility issue occurs. Solutions: Disable and restart the audio 
-     * device, or reboot the system.*/
-    ERR_ADM_WIN_CORE_INIT = 1301,
-    /** 1303: Audio device module: A recording driver abnomality or a 
-     * compatibility issue occurs. Solutions: Disable and restart the audio 
-     * device, or reboot the system. */
-    ERR_ADM_WIN_CORE_INIT_RECORDING = 1303,
-    /** 1306: Audio device module: A playout driver abnomality or a 
-     * compatibility issue occurs. Solutions: Disable and restart the audio 
-     * device, or reboot the system. */
-    ERR_ADM_WIN_CORE_INIT_PLAYOUT = 1306,
-    /** 1307: Audio device module: No audio device is available. Solutions: 
-     * Plug in a proper audio device. */
-    ERR_ADM_WIN_CORE_INIT_PLAYOUT_NULL = 1307,
-    /** 1309: Audio device module: An audio driver abnomality or a 
-     * compatibility issue occurs. Solutions: Disable and restart the audio 
-     * device, or reboot the system. */
-    ERR_ADM_WIN_CORE_START_RECORDING = 1309,
-    /** 1311: Audio device module: Insufficient system memory or poor device 
-     * performance. Solutions: Reboot the system or replace the device.
-    */
-    ERR_ADM_WIN_CORE_CREATE_REC_THREAD = 1311,
-    /** 1314: Audio device module: An audio driver abnormality occurs. 
-     * Solutions:
-     * - Disable and then re-enable the audio device.
-     * - Reboot the system.
-     * - Upgrade your audio card driver.*/
-    ERR_ADM_WIN_CORE_CAPTURE_NOT_STARTUP = 1314,
-    /** 1319: Audio device module: Insufficient system memory or poor device 
-     * performance. Solutions: Reboot the system or replace the device. */
-    ERR_ADM_WIN_CORE_CREATE_RENDER_THREAD = 1319,
-    /** 1320: Audio device module: An audio driver abnormality occurs. 
-     * Solutions:
-     * - Disable and then re-enable the audio device.
-     * - Reboot the system.
-     * - Replace the device. */
-    ERR_ADM_WIN_CORE_RENDER_NOT_STARTUP = 1320,
-    /** 1322: Audio device module: No audio sampling device is available. 
-     * Solutions: Plug in a proper recording device. */
-    ERR_ADM_WIN_CORE_NO_RECORDING_DEVICE = 1322,
-    /** 1323: Audio device module: No audio playout device is available. 
-     * Solutions: Plug in a proper playback device.*/
-    ERR_ADM_WIN_CORE_NO_PLAYOUT_DEVICE = 1323,
-    /** 1351: Audio device module: An audio driver abnormality or a 
-     * compatibility issue occurs. Solutions:
-     * - Disable and then re-enable the audio device.
-     * - Reboot the system.
-     * - Upgrade your audio card driver. */
-    ERR_ADM_WIN_WAVE_INIT = 1351,
-    /** 1353: Audio device module: An audio driver abnormality occurs. 
-     * Solutions:
-     * - Disable and then re-enable the audio device.
-     * - Reboot the system.
-     * - Upgrade your audio card driver. */
-    ERR_ADM_WIN_WAVE_INIT_RECORDING = 1353,
-    /** 1354: Audio device module: An audio driver abnormality occurs. 
-     * Solutions:
-     * - Disable and then re-enable the audio device.
-     * - Reboot the system.
-     * - Upgrade your audio card driver. */
-    ERR_ADM_WIN_WAVE_INIT_MICROPHONE = 1354,
-    /** 1355: Audio device module: An audio driver abnormality occurs. 
-     * Solutions:
-     * - Disable and then re-enable the audio device.
-     * - Reboot the system.
-     * - Upgrade your audio card driver. */
-    ERR_ADM_WIN_WAVE_INIT_PLAYOUT = 1355,
-    /** 1356: Audio device module: An audio driver abnormality occurs. 
-     * Solutions:
-     * - Disable and then re-enable the audio device.
-     * - Reboot the system.
-     * - Upgrade your audio card driver. */
-    ERR_ADM_WIN_WAVE_INIT_SPEAKER = 1356,
-    /** 1357: Audio device module: An audio driver abnormality occurs. 
-     * Solutions:
-     * - Disable and then re-enable the audio device.
-     * - Reboot the system.
-     * - Upgrade your audio card driver. */
-    ERR_ADM_WIN_WAVE_START_RECORDING = 1357,
-    /** 1358: Audio device module: An audio driver abnormality occurs. 
-     * Solutions:
-     * - Disable and then re-enable the audio device.
-     * - Reboot the system.
-     * - Upgrade your audio card driver.*/
-    ERR_ADM_WIN_WAVE_START_PLAYOUT = 1358,
-    /** 1359: Audio Device Module: No recording device exists.
-     */
-    ERR_ADM_NO_RECORDING_DEVICE = 1359,
-    /** 1360: Audio Device Module: No playback device exists.
-     */
-    ERR_ADM_NO_PLAYOUT_DEVICE = 1360,
-
-    // VDM error code starts from 1500
-    /** 1501: Video Device Module: The camera is unauthorized.
-     */
-    ERR_VDM_CAMERA_NOT_AUTHORIZED = 1501,
-
-	// VDM error code starts from 1500
-	/** **DEPRECATED** 1502: Video Device Module: The camera in use.
-     
-     Deprecated as of v2.4.1. Use LOCAL_VIDEO_STREAM_ERROR_DEVICE_BUSY(3) in the \ref ar::rtc::IRtcEngineEventHandler::onConnectionStateChanged "onConnectionStateChanged" callback instead.
-	 */
-	ERR_VDM_WIN_DEVICE_IN_USE = 1502,
-
-    // VCM error code starts from 1600
-    /** 1600: Video Device Module: An unknown error occurs.
-     */
-    ERR_VCM_UNKNOWN_ERROR = 1600,
-    /** 1601: Video Device Module: An error occurs in initializing the video encoder.
-    */
-    ERR_VCM_ENCODER_INIT_ERROR = 1601,
-    /** 1602: Video Device Module: An error occurs in encoding.
-     */
-    ERR_VCM_ENCODER_ENCODE_ERROR = 1602,
-    /** 1603: Video Device Module: An error occurs in setting the video encoder.
-     */
-    ERR_VCM_ENCODER_SET_ERROR = 1603,
-};
-
-    /** Output log filter level. */
-enum LOG_FILTER_TYPE
-{
-/** 0: Do not output any log information. */
-    LOG_FILTER_OFF = 0,
-     /** 0x080f: Output all log information.
-      Set your log filter as debug if you want to get the most complete log file.      */
-    LOG_FILTER_DEBUG = 0x080f,
-     /** 0x000f: Output CRITICAL, ERROR, WARNING, and INFO level log information.
-      We recommend setting your log filter as this level.
-      */
-    LOG_FILTER_INFO = 0x000f,
-     /** 0x000e: Outputs CRITICAL, ERROR, and WARNING level log information.
-      */
-    LOG_FILTER_WARN = 0x000e,
-     /** 0x000c: Outputs CRITICAL and ERROR level log information. */
-    LOG_FILTER_ERROR = 0x000c,
-     /** 0x0008: Outputs CRITICAL level log information. */
-    LOG_FILTER_CRITICAL = 0x0008,
-    LOG_FILTER_MASK = 0x80f,
-};
-/** The output log level of the SDK.
- *
- * @since v3.3.0
- */
-enum class LOG_LEVEL {
-  /** 0: Do not output any log. */
-  LOG_LEVEL_NONE = 0x0000,
-  /** 0x0001: (Default) Output logs of the FATAL, ERROR, WARN and INFO level. We recommend setting your log filter as this level.
-   */
-  LOG_LEVEL_INFO = 0x0001,
-  /** 0x0002: Output logs of the FATAL, ERROR and WARN level.
-   */
-  LOG_LEVEL_WARN = 0x0002,
-  /** 0x0004: Output logs of the FATAL and ERROR level.  */
-  LOG_LEVEL_ERROR = 0x0004,
-  /** 0x0008: Output logs of the FATAL level.  */
-  LOG_LEVEL_FATAL = 0x0008,
-};
-} // namespace ar
-
-#endif
diff --git a/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Headers/ArMediaBase.h b/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Headers/ArMediaBase.h
deleted file mode 100644
index 1dd51d7..0000000
--- a/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Headers/ArMediaBase.h
+++ /dev/null
@@ -1,400 +0,0 @@
-//
-//  anyrtc Engine SDK
-//
-//  Created by Sting Feng in 2017-11.
-//  Copyright (c) 2017 anyrtc.io. All rights reserved.
-
-#ifndef __AR_MEDIA_BASE_H__  // NOLINT(build/header_guard)
-#define __AR_MEDIA_BASE_H__
-
-#include <stdint.h>
-#include <stddef.h>
-
-namespace ar {
-namespace media {
-namespace base {
-
-typedef void* view_t;
-
-typedef const char* user_id_t;
-
-
-/** The video pixel format.
- */
-enum VIDEO_PIXEL_FORMAT {
-  /** 0: The video pixel format is unknown.
-   */
-  VIDEO_PIXEL_UNKNOWN = 0,
-  /** 1: The video pixel format is I420.
-   */
-  VIDEO_PIXEL_I420 = 1,
-  /** 2: The video pixel format is BGRA.
-   */
-  VIDEO_PIXEL_BGRA = 2,
-  /** 3: Planar YUV 4:2:2 format.
-   */
-  VIDEO_PIXEL_I422 = 3,
-  /** 2: The video pixel format is RGBA.
-   */
-  VIDEO_PIXEL_RGBA = 4,
-  /** 8: The video pixel format is NV12.
-   */
-  VIDEO_PIXEL_NV12 = 8,
-};
-
-/** 
- * The video display mode. 
- */
-enum RENDER_MODE_TYPE {
-  /**
-   * 1: Uniformly scale the video until it fills the visible boundaries
-   * (cropped). One dimension of the video may have clipped contents.
-   */
-  RENDER_MODE_HIDDEN = 1,
-  /**
-   * 2: Uniformly scale the video until one of its dimension fits the boundary
-   * (zoomed to fit). Areas that are not filled due to the disparity in the
-   * aspect ratio will be filled with black.
-   */
-  RENDER_MODE_FIT = 2,
-  /**
-   * @deprecated
-   * 3: This mode is deprecated.
-   */
-  RENDER_MODE_ADAPTIVE = 3,
-};
-
-/** Definition of VideoFrame.
-
-The video data format is in YUV420. The buffer provides a pointer to a pointer. However, the
-interface cannot modify the pointer of the buffer, but can only modify the content of the buffer.
-
-*/
-struct VideoFrame {
-  VIDEO_PIXEL_FORMAT type;
-  /** Video pixel width.
-   */
-  int width;  // width of video frame
-  /** Video pixel height.
-   */
-  int height;  // height of video frame
-  /** Line span of Y buffer in YUV data.
-   */
-  int yStride;  // stride of Y data buffer
-  /** Line span of U buffer in YUV data.
-   */
-  int uStride;  // stride of U data buffer
-  /** Line span of V buffer in YUV data.
-   */
-  int vStride;  // stride of V data buffer
-  /** Pointer to the Y buffer pointer in the YUV data.
-   */
-  uint8_t* yBuffer;  // Y data buffer
-  /** Pointer to the U buffer pointer in the YUV data.
-   */
-  uint8_t* uBuffer;  // U data buffer
-  /** Pointer to the V buffer pointer in the YUV data
-   */
-  uint8_t* vBuffer;  // V data buffer
-  /** Set the rotation of this frame before rendering the video, and it supports 0, 90, 180, 270
-   * degrees clockwise.
-   */
-  int rotation;  // rotation of this frame (0, 90, 180, 270)
-  /** Timestamp to render the video stream. It instructs the users to use this timestamp to
-  synchronize the video stream render while rendering the video streams.
-
-  Note: This timestamp is for rendering the video stream, not for capturing the video stream.
-  */
-  int64_t renderTimeMs;
-  int avsync_type;
-};
-
-/**
- * The struct of AudioPcmFrame.
- */
-struct AudioPcmFrame {
-  /**
-   * The buffer size of the PCM audio frame.
-   */
-  enum : size_t {
-    // Stereo, 32 kHz, 60 ms (2 * 32 * 60)
-    kMaxDataSizeSamples = 3840,
-    kMaxDataSizeBytes = kMaxDataSizeSamples * sizeof(int16_t),
-  };
-
-  AudioPcmFrame() {}
-
-  uint32_t capture_timestamp = 0;
-  size_t samples_per_channel_ = 0;
-  int sample_rate_hz_ = 0;
-  size_t num_channels_ = 0;
-  size_t bytes_per_sample = 0;
-  int16_t data_[kMaxDataSizeSamples] = {0};
-
-  AudioPcmFrame(const AudioPcmFrame& frame) = delete;
-  void operator=(const AudioPcmFrame& frame) = delete;
-};
-
-class IVideoFrameObserver {
- public:
-  virtual void onFrame(const VideoFrame* frame) = 0;
-  virtual ~IVideoFrameObserver() {}
-};
-
-class IAudioFrameObserver {
- public:
-  virtual void onFrame(const AudioPcmFrame* frame) = 0;
-  virtual ~IAudioFrameObserver() {}
-};
-
-}  // namespace base
-}  // namespace media
-}  // namespace ar
-
-namespace ar {
-namespace media {
-
-/**
- * @brief Player state
- *
- */
-enum MEDIA_PLAYER_STATE {
-  /** Default state
-   */
-  PLAYER_STATE_IDLE = 0,
-  /** Opening media file
-   */
-  PLAYER_STATE_OPENING = 1,
-  /** Media file opened successfully
-   *
-   */
-  PLAYER_STATE_OPEN_COMPLETED = 2,
-  /** Player playing
-   */
-  PLAYER_STATE_PLAYING = 3,
-  /** Player paused
-   */
-  PLAYER_STATE_PAUSED = 4,
-  /** Player playback complete
-   */
-  PLAYER_STATE_PLAYBACK_COMPLETED = 5,
-  /** Player stopped
-   */
-  PLAYER_STATE_STOPPED = 6,
-  /** Player failed
-   */
-  PLAYER_STATE_FAILED = 100,
-};
-
-/**
- * @brief Player error code
- *
- */
-enum MEDIA_PLAYER_ERROR {
-  /** No error
-   */
-  PLAYER_ERROR_NONE = 0,
-  /** The parameter is incorrect
-   */
-  PLAYER_ERROR_INVALID_ARGUMENTS = -1,
-  /** Internel error
-   */
-  PLAYER_ERROR_INTERNAL = -2,
-  /** No resource error
-   */
-  PLAYER_ERROR_NO_RESOURCE = -3,
-  /** Media source is invalid
-   */
-  PLAYER_ERROR_INVALID_MEDIA_SOURCE = -4,
-  /** Unknown stream type
-   */
-  PLAYER_ERROR_UNKNOWN_STREAM_TYPE = -5,
-  /** Object is not initialized
-   */
-  PLAYER_ERROR_OBJ_NOT_INITIALIZED = -6,
-  /** Decoder codec not supported
-   */
-  PLAYER_ERROR_CODEC_NOT_SUPPORTED = -7,
-  /** Video renderer is invalid
-   */
-  PLAYER_ERROR_VIDEO_RENDER_FAILED = -8,
-  /** Internal state error
-   */
-  PLAYER_ERROR_INVALID_STATE = -9,
-  /** Url not found
-   */
-  PLAYER_ERROR_URL_NOT_FOUND = -10,
-  /** Invalid connection state
-   */
-  PLAYER_ERROR_INVALID_CONNECTION_STATE = -11,
-  /** Insufficient buffer data
-   */
-  PLAY_ERROR_SRC_BUFFER_UNDERFLOW = -12,
-};
-
-/**
- * @brief Media stream type
- *
- */
-enum MEDIA_STREAM_TYPE {
-  /** Unknown stream type
-   */
-  STREAM_TYPE_UNKNOWN = 0,
-  /** Video stream
-   */
-  STREAM_TYPE_VIDEO = 1,
-  /** Audio stream
-   */
-  STREAM_TYPE_AUDIO = 2,
-  /** Subtitle stream
-   */
-  STREAM_TYPE_SUBTITLE = 3,
-};
-
-/**
- * @brief Playback speed type
- *
- */
-enum MEDIA_PLAYER_PLAY_SPEED {
-  /** origin playback speed
-   */
-  ORIGIN_PLAYBACK_SPEED = 100,
-  /** playback speed slow down to 0.75
-   */
-  PLAYBACK_SPEED_75_PERCENT = 75,
-  /** playback speed slow down to 0.5
-   */
-  PLAYBACK_SPEED_50_PERCENT = 50,
-  /** playback speed speed up to 1.25
-   */
-  PLAYBACK_SPEED_125_PERCENT = 125,
-  /** playback speed speed up to 1.5
-   */
-  PLAYBACK_SPEED_150_PERCENT = 150,
-    /** playback speed speed up to 2.0
-   */
-  PLAYBACK_SPEED_200_PERCENT = 200,
-};
-
-/**
- * @brief Player event
- *
- */
-enum MEDIA_PLAYER_EVENT {
-  /** seek complete
-   */
-  PLAYER_EVENT_SEEK_BEGIN = 0,
-  /** seek complete
-   */
-  PLAYER_EVENT_SEEK_COMPLETE = 1,
-  /** seek failed
-   */
-  PLAYER_EVENT_SEEK_ERROR = 2,
-  /** player video published
-   */
-  PLAYER_EVENT_VIDEO_PUBLISHED = 3,
-  /** player audio published
-   */
-  PLAYER_EVENT_AUDIO_PUBLISHED = 4,
-  /** player audio track changed
-   */
-  PLAYER_EVENT_AUDIO_TRACK_CHANGED = 5,
-};
-
-/**
- * @brief Media stream object
- *
- */
-static const uint8_t kMaxCodecNameLength = 50;
-struct MediaStreamInfo { /* the index of the stream in the media file */
-  int streamIndex;
-
-  /* stream type */
-  MEDIA_STREAM_TYPE streamType;
-
-  /* stream encoding name */
-  char codecName[kMaxCodecNameLength];
-
-  /* streaming language */
-  char language[kMaxCodecNameLength];
-
-  /* If it is a video stream, video frames rate */
-  int videoFrameRate;
-
-  /* If it is a video stream, video bit rate */
-  int videoBitRate;
-
-  /* If it is a video stream, video width */
-  int videoWidth;
-
-  /* If it is a video stream, video height */
-  int videoHeight;
-
-  /* If it is a video stream, video rotation */
-  int videoRotation;
-
-  /* If it is an audio stream, audio bit rate */
-  int audioSampleRate;
-
-  /* If it is an audio stream, the number of audio channels */
-  int audioChannels;
-
-  /* stream duration in second */
-  int64_t duration;};
-
-/**
- * @brief Player Metadata type
- *
- */
-enum MEDIA_PLAYER_METADATA_TYPE {
-  /** data type unknown
-   */
-  PLAYER_METADATA_TYPE_UNKNOWN = 0,
-  /** sei data
-   */
-  PLAYER_METADATA_TYPE_SEI = 1,
-};
-
-}  // namespace media
-
-namespace rtc {
-/**
- * The audio route.
- */
-enum AudioRoute
-{
-  /**
-   * -1: The default audio route.
-   */
-  ROUTE_DEFAULT = -1,
-  /**
-   * The headset.
-   */
-  ROUTE_HEADSET,
-  /**
-   * The earpiece.
-   */
-  ROUTE_EARPIECE,
-  /**
-   * The headset with no microphone.
-   */
-  ROUTE_HEADSETNOMIC,
-  /**
-   * The speakerphone.
-   */
-  ROUTE_SPEAKERPHONE,
-  /**
-   * The loudspeaker.
-   */
-  ROUTE_LOUDSPEAKER,
-  /**
-   * The Bluetooth headset.
-   */
-  ROUTE_HEADSETBLUETOOTH
-};
-} // namespace rtc
-
-
-}  // namespace ar
-
-#endif // __AR_MEDIA_BASE_H__
diff --git a/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Headers/IArMediaEngine.h b/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Headers/IArMediaEngine.h
deleted file mode 100644
index 4ee79a5..0000000
--- a/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Headers/IArMediaEngine.h
+++ /dev/null
@@ -1,770 +0,0 @@
-#ifndef __I_AR_MEDIA_ENGINE_H__
-#define __I_AR_MEDIA_ENGINE_H__
-#include <stdint.h>
-
-#define AM ar::media 
-
-namespace ar {
-namespace media {
-/** **DEPRECATED** Type of audio device.
- */
-enum MEDIA_SOURCE_TYPE {
-  /** Audio playback device.
-   */
-  AUDIO_PLAYOUT_SOURCE = 0,
-  /** Microphone.
-   */
-  AUDIO_RECORDING_SOURCE = 1,
-};
-
-/**
- * The IAudioFrameObserver class.
- */
-class IAudioFrameObserver {
- public:
-  /** The frame type. */
-  enum AUDIO_FRAME_TYPE {
-    /** 0: PCM16. */
-    FRAME_TYPE_PCM16 = 0,  // PCM 16bit little endian
-  };
-  /** Definition of AudioFrame */
-  struct AudioFrame {
-    /** The type of the audio frame. See #AUDIO_FRAME_TYPE
-     */
-    AUDIO_FRAME_TYPE type;
-    /** The number of samples per channel in the audio frame.
-    */
-    int samples;  //number of samples for each channel in this frame
-    /**The number of bytes per audio sample, which is usually 16-bit (2-byte).
-     */
-    int bytesPerSample;  //number of bytes per sample: 2 for PCM16
-    /** The number of audio channels.
-     - 1: Mono
-     - 2: Stereo (the data is interleaved)
-     */
-    int channels;  //number of channels (data are interleaved if stereo)
-    /** The sample rate.
-     */
-    int samplesPerSec;  //sampling rate
-    /** The data buffer of the audio frame. When the audio frame uses a stereo channel, the data buffer is interleaved.
-     The size of the data buffer is as follows: `buffer` = `samples` × `channels` × `bytesPerSample`.
-     */
-    void* buffer;  //data buffer
-      /** The timestamp (ms) of the external audio frame. You can use this parameter for the following purposes:
-       - Restore the order of the captured audio frame.
-       - Synchronize audio and video frames in video-related scenarios, including where external video sources are used.
-       */
-    int64_t renderTimeMs;
-    /** Reserved parameter.
-    */
-    int avsync_type;
-  };
-
- public:
-  /** Retrieves the recorded audio frame.
-
-  The SDK triggers this callback once every 10 ms.
-
-   @param audioFrame Pointer to AudioFrame.
-   @return
-   - true: Valid buffer in AudioFrame, and the recorded audio frame is sent out.
-   - false: Invalid buffer in AudioFrame, and the recorded audio frame is discarded.
-   */
-  virtual bool onRecordAudioFrame(AudioFrame& audioFrame) = 0;
-  /** Retrieves the audio playback frame every 10 ms for getting the audio.
-
-   @param audioFrame Pointer to AudioFrame.
-   @return
-   - true: Valid buffer in AudioFrame, and the audio playback frame is sent out.
-   - false: Invalid buffer in AudioFrame, and the audio playback frame is discarded.
-   */
-  virtual bool onPlaybackAudioFrame(AudioFrame& audioFrame) = 0;
-  /** Retrieves the mixed recorded and playback audio frame.
-
-
-   @note This callback only returns the single-channel data.
-
-   @param audioFrame Pointer to AudioFrame.
-   @return
-   - true: Valid buffer in AudioFrame and the mixed recorded and playback audio frame is sent out.
-   - false: Invalid buffer in AudioFrame and the mixed recorded and playback audio frame is discarded.
-   */
-  virtual bool onMixedAudioFrame(AudioFrame& audioFrame) = 0;
-  /** Retrieves the audio frame of a specified user before mixing.
-
-  The SDK triggers this callback if isMultipleChannelFrameWanted returns false.
-
-  @param uid The user ID
-  @param audioFrame Pointer to AudioFrame.
-  @return
-  - true: Valid buffer in AudioFrame, and the mixed recorded and playback audio frame is sent out.
-  - false: Invalid buffer in AudioFrame, and the mixed recorded and playback audio frame is discarded.
-  */
-  virtual bool onPlaybackAudioFrameBeforeMixing(const char* uid,
-      AudioFrame& audioFrame) = 0;
-  /** Determines whether to receive audio data from multiple channels.
-
-   @since v3.0.1
-
-   After you register the audio frame observer, the SDK triggers this callback every time it captures an audio frame.
-
-   In the multi-channel scenario, if you want to get audio data from multiple channels,
-   set the return value of this callback as true. After that, the SDK triggers the
-   \ref IAudioFrameObserver::onPlaybackAudioFrameBeforeMixingEx "onPlaybackAudioFrameBeforeMixingEx" callback to send you the before-mixing
-   audio data from various channels. You can also get the channel ID of each audio frame.
-
-   @note
-   - Once you set the return value of this callback as true, the SDK triggers
-   only the \ref IAudioFrameObserver::onPlaybackAudioFrameBeforeMixingEx "onPlaybackAudioFrameBeforeMixingEx" callback
-   to send the before-mixing audio frame. \ref IAudioFrameObserver::onPlaybackAudioFrameBeforeMixing "onPlaybackAudioFrameBeforeMixing" is not triggered.
-   In the multi-channel scenario, AR recommends setting the return value as true.
-   - If you set the return value of this callback as false, the SDK triggers only the `onPlaybackAudioFrameBeforeMixing` callback to send the audio data.
-   @return
-   - `true`: Receive audio data from multiple channels.
-   - `false`: Do not receive audio data from multiple channels.
-   */
-  virtual bool isMultipleChannelFrameWanted() { return false; }
-
-  /** Gets the before-mixing playback audio frame from multiple channels.
-
-  After you successfully register the audio frame observer, if you set the return
-  value of \ref IAudioFrameObserver::isMultipleChannelFrameWanted "isMultipleChannelFrameWanted" as true, the SDK triggers this callback each
-  time it receives a before-mixing audio frame from any of the channel.
-
-  @param channelId The channel ID of this audio frame.
-  @param uid The ID of the user sending this audio frame.
-  @param audioFrame The pointer to AudioFrame.
-  @return
-  - `true`: The data in AudioFrame is valid, and send this audio frame.
-  - `false`: The data in AudioFrame in invalid, and do not send this audio frame.
-  */
-  virtual bool onPlaybackAudioFrameBeforeMixingEx(const char *channelId,
-      const char* uid, AudioFrame& audioFrame) { return true; }
-
-};
-
-/**
- * The IVideoFrameObserver class.
- */
-class IVideoFrameObserver {
- public:
- /** The video frame type. */
-  enum VIDEO_FRAME_TYPE {
-    /**
-     * 0: YUV420
-     */
-    FRAME_TYPE_YUV420 = 0,  // YUV 420 format
-    /**
-     * 1: YUV422
-     */
-    FRAME_TYPE_YUV422 = 1,  // YUV 422 format
-    /**
-     * 2: RGBA
-     */
-    FRAME_TYPE_RGBA = 2,    // RGBA format
-  };
-  /**
-   * The frame position of the video observer.
-   */
-  enum VIDEO_OBSERVER_POSITION {
-    /**
-     * 1: The post-capturer position, which corresponds to the video data in the onCaptureVideoFrame callback.
-     */
-    POSITION_POST_CAPTURER = 1 << 0,
-    /**
-     * 2: The pre-renderer position, which corresponds to the video data in the onRenderVideoFrame callback.
-     */
-    POSITION_PRE_RENDERER = 1 << 1,
-    /**
-     * 4: The pre-encoder position, which corresponds to the video data in the onPreEncodeVideoFrame callback.
-     */
-    POSITION_PRE_ENCODER = 1 << 2,
-  };
-  /** Video frame information. The video data format is YUV420. The buffer provides a pointer to a pointer. The interface cannot modify the pointer of the buffer, but can modify the content of the buffer only.
-   */
-  struct VideoFrame {
-    VIDEO_FRAME_TYPE type;
-    /** Video pixel width.
-     */
-    int width;  //width of video frame
-    /** Video pixel height.
-     */
-    int height;  //height of video frame
-    /** Line span of the Y buffer within the YUV data.
-     */
-    int yStride;  //stride of Y data buffer
-    /** Line span of the U buffer within the YUV data.
-     */
-    int uStride;  //stride of U data buffer
-    /** Line span of the V buffer within the YUV data.
-     */
-    int vStride;  //stride of V data buffer
-    /** Pointer to the Y buffer pointer within the YUV data.
-     */
-    void* yBuffer;  //Y data buffer
-    /** Pointer to the U buffer pointer within the YUV data.
-     */
-    void* uBuffer;  //U data buffer
-    /** Pointer to the V buffer pointer within the YUV data.
-     */
-    void* vBuffer;  //V data buffer
-    /** Set the rotation of this frame before rendering the video. Supports 0, 90, 180, 270 degrees clockwise.
-     */
-    int rotation; // rotation of this frame (0, 90, 180, 270)
-      /** The timestamp of the external audio frame. It is mandatory. You can use this parameter for the following purposes:
-       - Restore the order of the captured audio frame.
-       - Synchronize audio and video frames in video-related scenarios, including scenarios where external video sources are used.
-     @note This timestamp is for rendering the video stream, and not for capturing the video stream.
-     */
-    int64_t renderTimeMs;
-    int avsync_type;
-  };
-
- public:
-  /** Occurs each time the SDK receives a video frame captured by the local camera.
-   *
-   * After you successfully register the video frame observer, the SDK triggers this callback each time a video frame is received. In this callback, 
-   * you can get the video data captured by the local camera. You can then pre-process the data according to your scenarios.
-   *
-   * After pre-processing, you can send the processed video data back to the SDK by setting the `videoFrame` parameter in this callback.
-   *
-   * @note
-   * This callback does not support sending processed RGBA video data back to the SDK.
-   *
-   * @param videoFrame Pointer to VideoFrame.
-   * @return Whether or not to ignore the current video frame if the pre-processing fails:
-   * - true: Do not ignore.
-   * - false: Ignore the current video frame, and do not send it back to the SDK.
-   */
-  virtual bool onCaptureVideoFrame(VideoFrame& videoFrame) = 0;
-  /** Occurs each time the SDK receives a video frame before encoding.
-   *
-   * After you successfully register the video frame observer, the SDK triggers this callback each time when it receives a video frame. In this callback, you can get the video data before encoding. You can then process the data according to your particular scenarios.
-   *
-   * After processing, you can send the processed video data back to the SDK by setting the `VideoFrame` parameter in this callback.
-   *
-   * @note
-   * - The video data that this callback gets has been pre-processed, with its content cropped, rotated, and the image enhanced.
-   * - This callback does not support sending processed RGBA video data back to the SDK.
-   *
-   * @param videoFrame A pointer to VideoFrame
-   * @return Whether to ignore the current video frame if the processing fails:
-   * - true: Do not ignore the current video frame.
-   * - false: Ignore the current video frame, and do not send it back to the SDK.
-   */
-  virtual bool onPreEncodeVideoFrame(VideoFrame& videoFrame) { return true; }
-  /** Occurs each time the SDK receives a video encoded data after encoding.
-  * 
-  * After you successfully register the video frame observer, the SDK triggers this callback each time when it receives a video frame. In this callback, you can get the video enccoded data after encoding. You can then process the data according to your particular scenarios.
-  */
-  virtual bool onEncodeVideoData(bool keyFrame, const char*vidData, int vidLen) { return true; }
-  /** Occurs each time the SDK receives a video frame sent by the remote user.
-   * 
-   * After you successfully register the video frame observer, the SDK triggers this callback each time a video frame is received. In this callback, 
-   * you can get the video data sent by the remote user. You can then post-process the data according to your scenarios.
-   * 
-   * After post-processing, you can send the processed data back to the SDK by setting the `videoFrame` parameter in this callback.
-   *
-   * @note
-   * This callback does not support sending processed RGBA video data back to the SDK.
-   *
-   * @param uid ID of the remote user who sends the current video frame.
-   * @param videoFrame Pointer to VideoFrame.
-   * @return Whether or not to ignore the current video frame if the post-processing fails:
-   * - true: Do not ignore.
-   * - false: Ignore the current video frame, and do not send it back to the SDK.
-   */
-  virtual bool onRenderVideoFrame(const char* uid, VideoFrame& videoFrame) = 0;
-  /** Occurs each time the SDK receives a video frame and prompts you to set the video format. 
-   *
-   * YUV420 is the default video format. If you want to receive other video formats, register this callback in the IVideoFrameObserver class.
-   *
-   * After you successfully register the video frame observer, the SDK triggers this callback each time it receives a video frame. 
-   * You need to set your preferred video data in the return value of this callback.
-   *
-   * @return Sets the video format: #VIDEO_FRAME_TYPE
-   * - #FRAME_TYPE_YUV420 (0): (Default) YUV420.
-   * - #FRAME_TYPE_RGBA (2): RGBA
-   */
-  virtual VIDEO_FRAME_TYPE getVideoFormatPreference() { return FRAME_TYPE_YUV420; }
-  /** Occurs each time the SDK receives a video frame and prompts you whether or not to rotate the captured video according to the rotation member in the VideoFrame class. 
-   *
-   * The SDK does not rotate the captured video by default. If you want to rotate the captured video according to the rotation member in the VideoFrame class, register this callback in the IVideoFrameObserver class.
-   *
-   * After you successfully register the video frame observer, the SDK triggers this callback each time it receives a video frame. You need to set whether or not to rotate the video frame in the return value of this callback.
-   *
-   * @note 
-   * This callback applies to RGBA video data only.
-   *
-   * @return Sets whether or not to rotate the captured video:
-   * - true: Rotate.
-   * - false: (Default) Do not rotate.
-   */
-  virtual bool getRotationApplied() { return false; }
-  /** Occurs each time the SDK receives a video frame and prompts you whether or not to mirror the captured video.
-   * 
-   * The SDK does not mirror the captured video by default. Register this callback in the IVideoFrameObserver class if you want to mirror the captured video.
-   *
-   * After you successfully register the video frame observer, the SDK triggers this callback each time a video frame is received. 
-   * You need to set whether or not to mirror the captured video in the return value of this callback.
-   * 
-   * @note 
-   * This callback applies to RGBA video data only.
-   *
-   * @return Sets whether or not to mirror the captured video:
-   * - true: Mirror.
-   * - false: (Default) Do not mirror.
-   */
-  virtual bool getMirrorApplied() { return false; }
-  /** @since v3.0.0
-
-   Sets whether to output the acquired video frame smoothly.
-
-   If you want the video frames acquired from \ref IVideoFrameObserver::onRenderVideoFrame "onRenderVideoFrame" to be more evenly spaced, you can register the `getSmoothRenderingEnabled` callback in the `IVideoFrameObserver` class and set its return value as `true`.
-
-   @note
-   - Register this callback before joining a channel.
-   - This callback applies to scenarios where the acquired video frame is self-rendered after being processed, not to scenarios where the video frame is sent back to the SDK after being processed.
-
-   @return Set whether or not to smooth the video frames:
-   - true: Smooth the video frame.
-   - false: (Default) Do not smooth.
-   */
-  virtual bool getSmoothRenderingEnabled(){ return false; }
-  /**
-   * Sets the frame position for the video observer.
-   * @since v3.0.1
-   *
-   * After you successfully register the video observer, the SDK triggers this callback each time it receives a video frame. You can determine which position to observe by setting the return value.
-   * The SDK provides 3 positions for observer. Each position corresponds to a callback function:
-   * - `POSITION_POST_CAPTURER(1 << 0)`: The position after capturing the video data, which corresponds to the \ref onCaptureVideoFrame "onCaptureVideoFrame" callback.
-   * - `POSITION_PRE_RENDERER(1 << 1)`: The position before receiving the remote video data, which corresponds to the \ref onRenderVideoFrame "onRenderVideoFrame" callback.
-   * - `POSITION_PRE_ENCODER(1 << 2)`: The position before encoding the video data, which corresponds to the \ref onPreEncodeVideoFrame "onPreEncodeVideoFrame" callback.
-   *
-   * @note
-   * - Use '|' (the OR operator) to observe multiple frame positions.
-   * - This callback observes `POSITION_POST_CAPTURER(1 << 0)` and `POSITION_PRE_RENDERER(1 << 1)` by default.
-   * - To conserve the system consumption, you can reduce the number of frame positions that you want to observe.
-   *
-   * @return A bit mask that controls the frame position of the video observer: #VIDEO_OBSERVER_POSITION.
-   *
-   */
-  virtual uint32_t getObservedFramePosition() { return static_cast<uint32_t>(POSITION_POST_CAPTURER | POSITION_PRE_RENDERER); }
-
-  /** Determines whether to receive video data from multiple channels.
-
-   After you register the video frame observer, the SDK triggers this callback
-   every time it captures a video frame.
-
-   In the multi-channel scenario, if you want to get video data from multiple channels,
-   set the return value of this callback as true. After that, the SDK triggers the
-   onRenderVideoFrameEx callback to send you
-   the video data from various channels. You can also get the channel ID of each video frame.
-
-   @note
-   - Once you set the return value of this callback as true, the SDK triggers only the `onRenderVideoFrameEx` callback to
-   send the video frame. onRenderVideoFrame will not be triggered. In the multi-channel scenario, AR recommends setting the return value as true.
-   - If you set the return value of this callback as false, the SDK triggers only the `onRenderVideoFrame` callback to send the video data.
-   @return
-   - `true`: Receive video data from multiple channels.
-   - `false`: Do not receive video data from multiple channels.
-   */
-  virtual bool isMultipleChannelFrameWanted() { return false; }
-
-  /** Gets the video frame from multiple channels.
-
-   After you successfully register the video frame observer, if you set the return value of
-   isMultipleChannelFrameWanted as true, the SDK triggers this callback each time it receives a video frame
-   from any of the channel.
-
-   You can process the video data retrieved from this callback according to your scenario, and send the
-   processed data back to the SDK using the `videoFrame` parameter in this callback.
-
-   @note This callback does not support sending RGBA video data back to the SDK.
-
-   @param channelId The channel ID of this video frame.
-   @param uid The ID of the user sending this video frame.
-   @param videoFrame The pointer to VideoFrame.
-   @return Whether to send this video frame to the SDK if post-processing fails:
-   - `true`: Send this video frame.
-   - `false`: Do not send this video frame.
-   */
-  virtual bool onRenderVideoFrameEx(const char *channelId, const char* uid, VideoFrame& videoFrame) { return true; }
-};
-
-class IVideoFrame {
- public:
-  enum PLANE_TYPE {
-    Y_PLANE = 0,
-    U_PLANE = 1,
-    V_PLANE = 2,
-    NUM_OF_PLANES = 3
-  };
-  enum VIDEO_TYPE {
-    VIDEO_TYPE_UNKNOWN = 0,
-    VIDEO_TYPE_I420 = 1,
-    VIDEO_TYPE_IYUV = 2,
-    VIDEO_TYPE_RGB24 = 3,
-    VIDEO_TYPE_ABGR = 4,
-    VIDEO_TYPE_ARGB = 5,
-    VIDEO_TYPE_ARGB4444 = 6,
-    VIDEO_TYPE_RGB565 = 7,
-    VIDEO_TYPE_ARGB1555 = 8,
-    VIDEO_TYPE_YUY2 = 9,
-    VIDEO_TYPE_YV12 = 10,
-    VIDEO_TYPE_UYVY = 11,
-    VIDEO_TYPE_MJPG = 12,
-    VIDEO_TYPE_NV21 = 13,
-    VIDEO_TYPE_NV12 = 14,
-    VIDEO_TYPE_BGRA = 15,
-    VIDEO_TYPE_RGBA = 16,
-    VIDEO_TYPE_I422 = 17,
-  };
-  virtual void release() = 0;
-  virtual const unsigned char* buffer(PLANE_TYPE type) const = 0;
-
-  /** Copies the frame.
-
-   If the required size is larger than the allocated size, new buffers of the adequate size will be allocated.
-
-   @param dest_frame Address of the returned destination frame. See IVideoFrame.
-   @return
-   - 0: Success.
-   - -1: Failure.
-   */
-  virtual int copyFrame(IVideoFrame** dest_frame) const = 0;
-  /** Converts the frame.
-
-   @note The source and destination frames have equal heights.
-
-   @param dst_video_type Type of the output video.
-   @param dst_sample_size Required only for the parsing of M-JPEG.
-   @param dst_frame Pointer to a destination frame. See IVideoFrame.
-   @return
-   - 0: Success.
-   - < 0: Failure.
-   */
-  virtual int convertFrame(VIDEO_TYPE dst_video_type, int dst_sample_size,
-                           unsigned char* dst_frame) const = 0;
-  /** Retrieves the specified component in the YUV space.
-
-   @param type Component type: #PLANE_TYPE
-   */
-  virtual int allocated_size(PLANE_TYPE type) const = 0;
-  /** Retrieves the stride of the specified component in the YUV space.
-
-   @param type Component type: #PLANE_TYPE
-   */
-  virtual int stride(PLANE_TYPE type) const = 0;
-  /** Retrieves the width of the frame.
-   */
-  virtual int width() const = 0;
-  /** Retrieves the height of the frame.
-   */
-  virtual int height() const = 0;
-  /** Retrieves the timestamp (90 ms) of the frame.
-   */
-  virtual unsigned int timestamp() const = 0;
-  /** Retrieves the render time (ms).
-   */
-  virtual int64_t render_time_ms() const = 0;
-  /** Checks if a plane is of zero size.
-
-   @return
-   - true: The plane is of zero size.
-   - false: The plane is not of zero size.
-   */
-  virtual bool IsZeroSize() const = 0;
-
-  virtual VIDEO_TYPE GetVideoType() const = 0;
-};
-/** **DEPRECATED** */
-class IExternalVideoRenderCallback {
- public:
-  /** Occurs when the video view size has changed.
-  */
-  virtual void onViewSizeChanged(int width, int height) = 0;
-  /** Occurs when the video view is destroyed.
-  */
-  virtual void onViewDestroyed() = 0;
-};
-/** **DEPRECATED** */
-struct ExternalVideoRenerContext {
-  IExternalVideoRenderCallback* renderCallback;
-  /** Video display window.
-   */
-  void* view;
-  /** Video display mode: \ref ar::rtc::RENDER_MODE_TYPE "RENDER_MODE_TYPE" */
-  int renderMode;
-  /** The image layer location.
-
-   - 0: (Default) The image is at the bottom of the stack
-   - 100: The image is at the top of the stack.
-
-   @note If the value is set to below 0 or above 100, the #ERR_INVALID_ARGUMENT error occurs.
-   */
-  int zOrder;
-  /** Video layout distance from the left.
-   */
-  float left;
-  /** Video layout distance from the top.
-   */
-  float top;
-  /** Video layout distance from the right.
-   */
-  float right;
-  /** Video layout distance from the bottom.
-   */
-  float bottom;
-};
-
-class IExternalVideoRender {
- public:
-  virtual void release() = 0;
-  virtual int initialize() = 0;
-  virtual int deliverFrame(const IVideoFrame& videoFrame, int rotation,
-                           bool mirrored) = 0;
-};
-
-class IExternalVideoRenderFactory {
- public:
-  virtual IExternalVideoRender* createRenderInstance(
-      const ExternalVideoRenerContext& context) = 0;
-};
-
-/** The external video frame.
- */
-struct ExternalVideoFrame
-{
-    /** The video buffer type.
-     */
-    enum VIDEO_BUFFER_TYPE
-    {
-        /** 1: The video buffer in the format of raw data.
-         */
-        VIDEO_BUFFER_RAW_DATA = 1,
-		/** 10: The video buffer in the format of h264 extra data.
-		*/
-		VIDEO_BUFFER_H264_EXTRA_DATA = 10,
-		/** 11: The video buffer in the format of h264 data.
-		*/
-		VIDEO_BUFFER_H264_DATA = 11,
-		
-    };
-
-    /** The video pixel format.
-     */
-    enum VIDEO_PIXEL_FORMAT
-    {
-        /** 0: The video pixel format is unknown.
-         */
-        VIDEO_PIXEL_UNKNOWN = 0,
-        /** 1: The video pixel format is I420.
-         */
-        VIDEO_PIXEL_I420 = 1,
-        /** 2: The video pixel format is BGRA.
-         */
-        VIDEO_PIXEL_BGRA = 2,
-        /** 3: The video pixel format is NV21.
-         */
-        VIDEO_PIXEL_NV21 = 3,
-        /** 4: The video pixel format is RGBA.
-         */
-        VIDEO_PIXEL_RGBA = 4,
-        /** 5: The video pixel format is IMC2.
-         */
-        VIDEO_PIXEL_IMC2 = 5,
-        /** 7: The video pixel format is ARGB.
-         */
-        VIDEO_PIXEL_ARGB = 7,
-        /** 8: The video pixel format is NV12.
-         */
-        VIDEO_PIXEL_NV12 = 8,
-        /** 16: The video pixel format is I422.
-         */
-        VIDEO_PIXEL_I422 = 16,
-		/** 32: The video is key frame.
-		*/
-		VIDEO_KEY_FRAME = 32,
-		/** 64: The video is normal frame.
-		*/
-		VIDEO_NOR_FRAME = 64,
-    };
-
-    /** The buffer type. See #VIDEO_BUFFER_TYPE
-     */
-    VIDEO_BUFFER_TYPE type;
-    /** The pixel format. See #VIDEO_PIXEL_FORMAT
-     */
-    VIDEO_PIXEL_FORMAT format;
-    /** The video buffer.
-     */
-    void* buffer;
-	/** The length of video buffer.
-	 */
-	int length;
-    /** Line spacing of the incoming video frame, which must be in pixels instead of bytes. For textures, it is the width of the texture.
-     */
-    int stride;
-	/** Width of the incoming video frame.
-	 */
-	int width;
-    /** Height of the incoming video frame.
-     */
-    int height;
-    /** [Raw data related parameter] The number of pixels trimmed from the left. The default value is 0.
-     */
-    int cropLeft;
-    /** [Raw data related parameter] The number of pixels trimmed from the top. The default value is 0.
-     */
-    int cropTop;
-    /** [Raw data related parameter] The number of pixels trimmed from the right. The default value is 0.
-     */
-    int cropRight;
-    /** [Raw data related parameter] The number of pixels trimmed from the bottom. The default value is 0.
-     */
-    int cropBottom;
-    /** [Raw data related parameter] The clockwise rotation of the video frame. You can set the rotation angle as 0, 90, 180, or 270. The default value is 0.
-     */
-    int rotation;
-    /** Timestamp of the incoming video frame (ms). An incorrect timestamp results in frame loss or unsynchronized audio and video.
-     */
-    long long timestamp;
-
-    ExternalVideoFrame()
-    :cropLeft(0)
-    ,cropTop(0)
-    ,cropRight(0)
-    ,cropBottom(0)
-    ,rotation(0)
-    {}
-};
-
-class IMediaEngine {
- public:
-  virtual void release() = 0;
-  /** Registers an audio frame observer object.
-
-   This method is used to register an audio frame observer object (register a callback). This method is required to register callbacks when the engine is required to provide an \ref IAudioFrameObserver::onRecordAudioFrame "onRecordAudioFrame" or \ref IAudioFrameObserver::onPlaybackAudioFrame "onPlaybackAudioFrame" callback.
-
-   @param observer Audio frame observer object instance. If NULL is passed in, the registration is canceled.
-   @return
-   - 0: Success.
-   - < 0: Failure.
-   */
-  virtual int registerAudioFrameObserver(IAudioFrameObserver* observer) = 0;
-  /** Registers a video frame observer object.
-
-   You need to implement the IVideoFrameObserver class in this method, and register callbacks according to your scenarios.
-
-   After you successfully register the video frame observer, the SDK triggers the registered callbacks each time a video frame is received.
-
-   @note When handling the video data returned in the callbacks, pay attention to the changes in the `width` and `height` parameters,
-   which may be adapted under the following circumstances:
-   - When the network condition deteriorates, the video resolution decreases incrementally.
-   - If the user adjusts the video profile, the resolution of the video returned in the callbacks also changes.
-   @param observer Video frame observer object instance. If NULL is passed in, the registration is canceled.
-   @return
-   - 0: Success.
-   - < 0: Failure.
-   */
-  virtual int registerVideoFrameObserver(IVideoFrameObserver* observer) = 0;
-  /** **DEPRECATED** */
-  virtual int registerVideoRenderFactory(IExternalVideoRenderFactory* factory) = 0;
-  /** **DEPRECATED** Use \ref ar::media::IMediaEngine::pushAudioFrame(IAudioFrameObserver::AudioFrame* frame) "pushAudioFrame(IAudioFrameObserver::AudioFrame* frame)" instead.
-
-   Pushes the external audio frame.
-
-   @param type Type of audio capture device: #MEDIA_SOURCE_TYPE.
-   @param frame Audio frame pointer: \ref IAudioFrameObserver::AudioFrame "AudioFrame".
-   @param wrap Whether to use the placeholder. We recommend setting the default value.
-   - true: Use.
-   - false: (Default) Not use.
-
-   @return
-   - 0: Success.
-   - < 0: Failure.
-   */
-  virtual int pushAudioFrame(MEDIA_SOURCE_TYPE type,
-                             IAudioFrameObserver::AudioFrame* frame,
-                             bool wrap) = 0;
-  /** Pushes the external audio frame.
-
-   @param frame Pointer to the audio frame: \ref IAudioFrameObserver::AudioFrame "AudioFrame".
-
-   @return
-   - 0: Success.
-   - < 0: Failure.
-   */
-  virtual int pushAudioFrame(IAudioFrameObserver::AudioFrame* frame) = 0;
-  /** Pulls the remote audio data.
-   * 
-   * Before calling this method, call the 
-   * \ref ar::rtc::IRtcEngine::setExternalAudioSink 
-   * "setExternalAudioSink(enabled: true)" method to enable and set the 
-   * external audio sink.
-   * 
-   * After a successful method call, the app pulls the decoded and mixed 
-   * audio data for playback.
-   * 
-   * @note
-   * - Once you call the \ref ar::media::IMediaEngine::pullAudioFrame 
-   * "pullAudioFrame" method successfully, the app will not retrieve any audio 
-   * data from the 
-   * \ref ar::media::IAudioFrameObserver::onPlaybackAudioFrame 
-   * "onPlaybackAudioFrame" callback.
-   * - The difference between the 
-   * \ref ar::media::IAudioFrameObserver::onPlaybackAudioFrame 
-   * "onPlaybackAudioFrame" callback and the 
-   * \ref ar::media::IMediaEngine::pullAudioFrame "pullAudioFrame" method is as 
-   * follows:
-   *  - `onPlaybackAudioFrame`: The SDK sends the audio data to the app once 
-   * every 10 ms. Any delay in processing the audio frames may result in audio 
-   * jitter.
-   *  - `pullAudioFrame`: The app pulls the remote audio data. After setting the 
-   * audio data parameters, the SDK adjusts the frame buffer and avoids 
-   * problems caused by jitter in the external audio playback.
-   * 
-   * @param frame Pointers to the audio frame. 
-   * See: \ref IAudioFrameObserver::AudioFrame "AudioFrame".
-   * 
-   * @return
-   * - 0: Success.
-   * - < 0: Failure.
-   */
-  virtual int pullAudioFrame(IAudioFrameObserver::AudioFrame* frame) = 0;
-    /** Configures the external video source.
-
-    @param enable Sets whether to use the external video source:
-    - true: Use the external video source.
-    - false: (Default) Do not use the external video source.
-
-    @param useTexture Sets whether to use texture as an input:
-    - true: Use texture as an input.
-    - false: (Default) Do not use texture as an input.
-
-    @return
-    - 0: Success.
-    - < 0: Failure.
-    */
-    virtual int setExternalVideoSource(bool enable, bool useTexture) = 0;
-    /** Pushes the video frame using the \ref ExternalVideoFrame "ExternalVideoFrame" and passes the video frame to the AR SDK.
-
-     @param frame Video frame to be pushed. See \ref ExternalVideoFrame "ExternalVideoFrame".
-
-     @note In the `COMMUNICATION` profile, this method does not support video frames in the Texture format.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int pushVideoFrame(ExternalVideoFrame *frame) = 0;
-    
-    virtual void SetHeadset(bool bHead) = 0;
-};
-
-}  // namespace media
-
-}  // namespace ar
-
-#endif  // AR_MEDIA_ENGINE_H
diff --git a/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Headers/IArMediaPlayer.h b/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Headers/IArMediaPlayer.h
deleted file mode 100644
index afc93f7..0000000
--- a/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Headers/IArMediaPlayer.h
+++ /dev/null
@@ -1,378 +0,0 @@
-//
-//  anyrtc Rtc Engine SDK
-//
-//  Copyright (c) 2019 anyrtc.io. All rights reserved.
-//
-
-#ifndef __I_AR_MEDIA_PLAYER_H__
-#define __I_AR_MEDIA_PLAYER_H__
-
-#include "ArMediaBase.h"
-
-#ifndef AR
-#define AR ar::rtc
-#endif
-
-// external key
-/**
- * set analyze duration for real time stream
- * @example "setPlayerOption(KEY_PLAYER_REAL_TIME_STREAM_ANALYZE_DURATION,1000000)"
- */
-#define KEY_PLAYER_REAL_TIME_STREAM_ANALYZE_DURATION    "analyzeduration"
-
-/**
- * set the player disable to play audio
- * @example  "setPlayerOption(KEY_PLAYER_DISABLE_AUDIO,0)"
- */
-#define KEY_PLAYER_DISABLE_AUDIO                  "audio_disable"
-
-/**
- * set the player disable to play video
- * @example  "setPlayerOption(KEY_PLAYER_DISABLE_VIDEO,0)"
- */
-#define KEY_PLAYER_DISABLE_VIDEO                  "video_disable"
-
-namespace ar {
-namespace rtc {
-
-/** Definition of MediaPlayerContext.
- */
-struct MediaPlayerContext {
-  /** User Context, i.e., activity context in Android.
-   */
-  void* context;
-
-  MediaPlayerContext()
-      : context(nullptr) {}
-};
-
-class IMediaPlayerObserver;
-
-/**
- * @brief Player interface
- *
- */
-class IMediaPlayer {
- public:
-
-  virtual int initialize(const MediaPlayerContext& context) = 0;
-
-  /**
-   * @brief Open media file
-   *
-   * @param src Media path, local path or network path
-   * @param startPos Set the starting position for playback, in seconds
-   * @return int <= 0 On behalf of an error, the value corresponds to one of PLAYER_ERROR
-   */
-  virtual int open(const char* src, int64_t startPos) = 0;
-
-  /**
-   * @brief Play
-   *
-   * @return int <= 0 On behalf of an error, the value corresponds to one of PLAYER_ERROR
-   */
-  virtual int play() = 0;
-
-  /**
-   * @brief pause
-   *
-   * @return int <= 0 On behalf of an error, the value corresponds to one of PLAYER_ERROR
-   */
-  virtual int pause() = 0;
-
-  /**
-   * @brief stop
-   *
-   * @return int <= 0 On behalf of an error, the value corresponds to one of PLAYER_ERROR
-   */
-  virtual int stop() = 0;
-
-  /**
-   * @brief Play to a specified position
-   *
-   * @param pos The position to play, in seconds
-   * @return int <= 0 On behalf of an error, the value corresponds to one of PLAYER_ERROR
-   */
-  virtual int seek(int64_t pos) = 0;
-
-  /**
-   * @brief Turn mute on or off
-   *
-   * @param mute Whether to mute on
-   * @return int <= 0 On behalf of an error, the value corresponds to one of PLAYER_ERROR
-   */
-  virtual int mute(bool mute) = 0;
-
-  /**
-   * @brief Get mute state
-   *
-   * @param[out] mute Whether is mute on
-   * @return int <= 0 On behalf of an error, the value corresponds to one of PLAYER_ERROR
-   */
-  virtual int getMute(bool& mute) = 0;
-
-  /**
-   * @brief Adjust playback volume
-   *
-   * @param volume The volume value to be adjusted
-   * The volume can be adjusted from 0 to 400:
-   * 0: mute;
-   * 100: original volume;
-   * 400: Up to 4 times the original volume (with built-in overflow protection).
-   * @return int <= 0 On behalf of an error, the value corresponds to one of PLAYER_ERROR
-   */
-  virtual int adjustPlayoutVolume(int volume) = 0;
-
-  /**
-   * @brief Get the current playback volume
-   *
-   * @param[out] volume
-   * @return int <= 0 On behalf of an error, the value corresponds to one of PLAYER_ERROR
-   */
-  virtual int getPlayoutVolume(int& volume) = 0;
-
-  /**
-   * @brief Get the current playback progress
-   *
-   * @param[out] pos Progress in seconds
-   * @return int <= 0 On behalf of an error, the value corresponds to one of PLAYER_ERROR
-   */
-  virtual int getPlayPosition(int64_t& pos) = 0;
-
-  /**
-   * @brief Get the current playback progress
-   *
-   * @param[out] pos Progress in millisecond
-   * @return int <= 0 On behalf of an error, the value corresponds to one of PLAYER_ERROR
-   */
-  virtual int getPlayPositionInMillisecond(int64_t& positionInMs) = 0;
-
-  /**
-   * @brief Get media duration
-   *
-   * @param[out] duration Duration in seconds
-   * @return int <= 0 On behalf of an error, the value corresponds to one of PLAYER_ERROR
-   */
-  virtual int getDuration(int64_t& duration) = 0;
-
-  /**
-   * @brief Get player state
-   *
-   * @return PLAYER_STATE
-   */
-  virtual ar::media::MEDIA_PLAYER_STATE getState() = 0;
-
-  /**
-   * @brief Get the streams info count in the media
-   *
-   * @param[out] count
-   * @return int <= 0 On behalf of an error, the value corresponds to one of PLAYER_ERROR
-   */
-  virtual int getStreamCount(int& count) = 0;
-
-  /**
-   * @brief Get the streams info by index
-   *
-   * @param[in] index, index
-   * @param[out] info, stream info for return
-   */
-  virtual int getStreamInfo(int index, ar::media::MediaStreamInfo* info) = 0;
-
-  /**
-   * @brief Set video rendering view
-   *
-   * @param view view object, windows platform is HWND
-   * @return int <= 0 On behalf of an error, the value corresponds to one of PLAYER_ERROR
-   */
-  virtual int setView(ar::media::base::view_t view) = 0;
-
-  /**
-   * @brief Set video display mode
-   *
-   * @param renderMode Video display mode
-   * @return int <= 0 On behalf of an error, the value corresponds to one of PLAYER_ERROR
-   */
-  virtual int setRenderMode(ar::media::base::RENDER_MODE_TYPE renderMode) = 0;
-
-  /**
-   * @brief Register the player observer
-   *
-   * @param observer observer object
-   * @return int <= 0 On behalf of an error, the value corresponds to one of PLAYER_ERROR
-   */
-  virtual int registerPlayerObserver(IMediaPlayerObserver* observer) = 0;
-
-  /**
-   * @brief Unregister the player observer
-   *
-   * @param observer observer object
-   * @return int <= 0 On behalf of an error, the value corresponds to one of PLAYER_ERROR
-   */
-  virtual int unregisterPlayerObserver(IMediaPlayerObserver* observer) = 0;
-
-  /**
-   * @brief Register the player video observer
-   *
-   * @param observer observer object
-   * @return int <= 0 On behalf of an error, the value corresponds to one of PLAYER_ERROR
-   */
-  virtual int registerVideoFrameObserver(ar::media::base::IVideoFrameObserver* observer) = 0;
-
-  /**
-   * @brief UnRegister the player video observer
-   *
-   * @param observer observer object
-   * @return int <= 0 On behalf of an error, the value corresponds to one of PLAYER_ERROR
-   */
-  virtual int unregisterVideoFrameObserver(ar::media::base::IVideoFrameObserver* observer) = 0;
-
-  /**
-   * @brief register the player audio observer
-   *
-   * @param observer observer object
-   * @return int <= 0 On behalf of an error, the value corresponds to one of PLAYER_ERROR
-   */
-  virtual int registerAudioFrameObserver(ar::media::base::IAudioFrameObserver* observer) = 0;
-
-  /**
-   * @brief Unregister the player audio observer
-   *
-   * @param observer observer object
-   * @return int <= 0 On behalf of an error, the value corresponds to one of PLAYER_ERROR
-   */
-  virtual int unregisterAudioFrameObserver(ar::media::base::IAudioFrameObserver* observer) = 0;
-
-  /**
-   * @brief change log file position
-   *
-   * @return int <= 0 On behalf of an error, the value corresponds to one of PLAYER_ERROR
-   */
-  virtual int setLogFile(const char* filePath) = 0;
-
-  /**
-   * Sets the output log level of the SDK.
-   *
-   * You can use one or a combination of the filters. The log level follows the
-   * sequence of `OFF`, `CRITICAL`, `ERROR`, `WARNING`, `INFO`, and `DEBUG`. Choose a level
-   * and you will see logs preceding that level. For example, if you set the log level to
-   * `WARNING`, you see the logs within levels `CRITICAL`, `ERROR`, and `WARNING`.
-   *
-   * @param filter Sets the log filter level:
-   * - LOG_FILTER_DEBUG (0x80f): Output all API logs. Set your log filter as DEBUG
-   * if you want to get the most complete log file.
-   * - LOG_FILTER_INFO (0x0f): Output logs of the CRITICAL, ERROR, WARNING, and INFO
-   * level. We recommend setting your log filter as this level.
-   * - LOG_FILTER_WARNING (0x0e): Output logs of the CRITICAL, ERROR, and WARNING level.
-   * - LOG_FILTER_ERROR (0x0c): Output logs of the CRITICAL and ERROR level.
-   * - LOG_FILTER_CRITICAL (0x08): Output logs of the CRITICAL level.
-   * - LOG_FILTER_OFF (0): Do not output any log.
-   *
-   * @return
-   * - 0: Success.
-   * - < 0: Failure.
-   */
-  virtual int setLogFilter(unsigned int filter) = 0;
-
-   /**
-   * @brief modify player option before play,
-   * @param [in] key
-   *        the option key name
-   * @param [in] value
-   *        the option value
-   * @return int <= 0 On behalf of an error, the value corresponds to one of PLAYER_ERROR
-   */
-  virtual int setPlayerOption(const char *key ,int value) = 0;
-
-  /**
-   * @brief change playback speed
-   *
-   * @return int <= 0 On behalf of an error, the value corresponds to one of PLAYER_ERROR
-   */
-  virtual int changePlaybackSpeed(const ar::media::MEDIA_PLAYER_PLAY_SPEED speed) = 0;
-
-  /**
-   * @brief change audio track
-   *
-   * @return int <= 0 On behalf of an error, the value corresponds to one of PLAYER_ERROR
-   */
-  virtual int selectAudioTrack(int index) = 0;
-
-  /**
-   * @brief release IMediaPlayer object.
-   *
-   */
-  virtual void release(bool sync = true) = 0;
-
-  virtual ~IMediaPlayer() {}
-};
-
-class IMediaPlayerObserver {
- public:
-  /**
-   * @brief Triggered when the player state changes
-   *
-   * @param state New player state
-   * @param ec Player error message
-   */
-  virtual void onPlayerStateChanged(ar::media::MEDIA_PLAYER_STATE state,
-                                    ar::media::MEDIA_PLAYER_ERROR ec) = 0;
-
-  /**
-   * @brief Triggered when the player progress changes, once every 1 second
-   *
-   * @param position Current playback progress, in seconds
-   */
-  virtual void onPositionChanged(const int64_t position) = 0;
-
-  /**
-   * @brief Triggered when the player have some event
-   *
-   * @param event
-   */
-  virtual void onPlayerEvent(ar::media::MEDIA_PLAYER_EVENT event) = 0;
-
-  /**
-   * @brief Triggered when metadata is obtained
-   *
-   * @param type Metadata type
-   * @param data data
-   * @param length  data length
-   */
-  virtual void onMetadata(ar::media::MEDIA_PLAYER_METADATA_TYPE type, const uint8_t* data,
-                                  uint32_t length) = 0;
-
-  virtual ~IMediaPlayerObserver() {}
-};
-
-}  // namespace rtc
-}  // namespace ar
-
-
-#if defined(_WIN32)
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#include <windows.h>
-#define AR_PLAYER_API extern "C" __declspec(dllexport)
-#define AR_PLAYER_CALL
-#elif defined(__APPLE__)
-#include <TargetConditionals.h>
-#define AR_PLAYER_API __attribute__((visibility("default"))) extern "C"
-#define AR_PLAYER_CALL
-#elif defined(__ANDROID__) || defined(__linux__)
-#define AR_PLAYER_API extern "C" __attribute__((visibility("default")))
-#define AR_PLAYER_CALL
-#else
-#define AR_PLAYER_API extern "C"
-#define AR_PLAYER_CALL
-#endif
-
-/**
- * Creates an anyrtc media player object and returns the pointer.
- * @return
- * - The pointer to \ref ar::rtc::IMediaPlayer "IMediaPlayer", if the method call succeeds.
- * - The empty pointer NULL, if the method call fails.
- */
-AR_PLAYER_API ar::rtc::IMediaPlayer* AR_PLAYER_CALL createArMediaPlayer();
-
-#endif  // __I_AR_MEDIA_PLAYER_H__
diff --git a/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Headers/IArRtcEngine.h b/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Headers/IArRtcEngine.h
deleted file mode 100644
index 11c726f..0000000
--- a/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Headers/IArRtcEngine.h
+++ /dev/null
@@ -1,8998 +0,0 @@
-//
-//  ARRtcEngine SDK
-//
-//  Copyright (c) 2019 anyrtc.io. All rights reserved.
-//
-
-/**
- @defgroup createARRtcEngine Create an ARRtcEngine
- */
-
-#ifndef __I_AR_RTC_ENGINE_H__
-#define __I_AR_RTC_ENGINE_H__
-#include "ArBase.h"
-#include "IArService.h"
-
-#if defined(_WIN32)
-#include "IArMediaEngine.h"
-#endif
-
-#ifndef AR
-#define AR ar::rtc
-#endif
-#ifndef AU
-#define AU ar::util
-#endif
-
-namespace ar {
-namespace rtc {
-    typedef const char* uid_t;
-    typedef void* view_t;
-/** Maximum length of the device ID.
-*/
-enum MAX_DEVICE_ID_LENGTH_TYPE
-{
-  /** The maximum length of the device ID is 512 bytes.
-  */
-    MAX_DEVICE_ID_LENGTH = 512
-};
-/** Maximum length of user account.
- */
-enum MAX_USER_ACCOUNT_LENGTH_TYPE
-{
-  /** The maximum length of user account is 255 bytes.
-   */
-  MAX_USER_ACCOUNT_LENGTH = 256
-};
-/** Maximum length of channel ID.
- */
-enum MAX_CHANNEL_ID_LENGTH_TYPE
-{
-    /** The maximum length of channel id is 64 bytes.
-     */
-    MAX_CHANNEL_ID_LENGTH = 65
-};
-/** Formats of the quality report.
-*/
-enum QUALITY_REPORT_FORMAT_TYPE
-{
-  /** 0: The quality report in JSON format,
-  */
-    QUALITY_REPORT_JSON = 0,
-    /** 1: The quality report in HTML format.
-    */
-    QUALITY_REPORT_HTML = 1,
-};
-
-enum MEDIA_ENGINE_EVENT_CODE_TYPE
-{
-    /** 0: For internal use only.
-     */
-    MEDIA_ENGINE_RECORDING_ERROR = 0,
-    /** 1: For internal use only.
-     */
-    MEDIA_ENGINE_PLAYOUT_ERROR = 1,
-    /** 2: For internal use only.
-     */
-    MEDIA_ENGINE_RECORDING_WARNING = 2,
-    /** 3: For internal use only.
-     */
-    MEDIA_ENGINE_PLAYOUT_WARNING = 3,
-    /** 10: For internal use only.
-     */
-    MEDIA_ENGINE_AUDIO_FILE_MIX_FINISH = 10,
-    /** 12: For internal use only.
-     */
-    MEDIA_ENGINE_AUDIO_FAREND_MUSIC_BEGINS = 12,
-    /** 13: For internal use only.
-     */
-    MEDIA_ENGINE_AUDIO_FAREND_MUSIC_ENDS = 13,
-    /** 14: For internal use only.
-     */
-    MEDIA_ENGINE_LOCAL_AUDIO_RECORD_ENABLED = 14,
-    /** 15: For internal use only.
-     */
-    MEDIA_ENGINE_LOCAL_AUDIO_RECORD_DISABLED = 15,
-    // media engine role changed
-    /** 20: For internal use only.
-     */
-    MEDIA_ENGINE_ROLE_BROADCASTER_SOLO = 20,
-    /** 21: For internal use only.
-     */
-    MEDIA_ENGINE_ROLE_BROADCASTER_INTERACTIVE = 21,
-    /** 22: For internal use only.
-     */
-    MEDIA_ENGINE_ROLE_AUDIENCE = 22,
-    /** 23: For internal use only.
-     */
-    MEDIA_ENGINE_ROLE_COMM_PEER = 23,
-    /** 24: For internal use only.
-     */
-    MEDIA_ENGINE_ROLE_GAME_PEER = 24,
-    // iOS adm sample rate changed
-    /** 110: For internal use only.
-     */
-    MEDIA_ENGINE_AUDIO_ADM_REQUIRE_RESTART = 110,
-    /** 111: For internal use only.
-     */
-    MEDIA_ENGINE_AUDIO_ADM_SPECIAL_RESTART = 111,
-    /** 112: For internal use only.
-     */
-    MEDIA_ENGINE_AUDIO_ADM_USING_COMM_PARAMS = 112,
-    /** 113: For internal use only.
-     */
-    MEDIA_ENGINE_AUDIO_ADM_USING_NORM_PARAMS = 113,
-    // audio mix state
-    /** 710: For internal use only.
-     */
-    MEDIA_ENGINE_AUDIO_EVENT_MIXING_PLAY = 710,
-    /** 711: For internal use only.
-     */
-    MEDIA_ENGINE_AUDIO_EVENT_MIXING_PAUSED = 711,
-    /** 712: For internal use only.
-     */
-    MEDIA_ENGINE_AUDIO_EVENT_MIXING_RESTART         = 712,
-    /** 713: For internal use only.
-     */
-    MEDIA_ENGINE_AUDIO_EVENT_MIXING_STOPPED = 713,
-    /** 714: For internal use only.
-     */
-    MEDIA_ENGINE_AUDIO_EVENT_MIXING_ERROR = 714,
-    //Mixing error codes
-    /** 701: For internal use only.
-     */
-    MEDIA_ENGINE_AUDIO_ERROR_MIXING_OPEN = 701,
-    /** 702: For internal use only.
-     */
-    MEDIA_ENGINE_AUDIO_ERROR_MIXING_TOO_FREQUENT = 702,
-    /** 703: The audio mixing file playback is interrupted. For internal use only.
-     */
-    MEDIA_ENGINE_AUDIO_ERROR_MIXING_INTERRUPTED_EOF = 703,
-    /** 0: For internal use only.
-     */
-    MEDIA_ENGINE_AUDIO_ERROR_MIXING_NO_ERROR = 0,
-};
-
-/** The states of the local user's audio mixing file.
-*/
-enum AUDIO_MIXING_STATE_TYPE{
-    /** 710: The audio mixing file is playing.
-    */
-    AUDIO_MIXING_STATE_PLAYING = 710,
-    /** 711: The audio mixing file pauses playing.
-    */
-    AUDIO_MIXING_STATE_PAUSED = 711,
-    /** 713: The audio mixing file stops playing.
-    */
-    AUDIO_MIXING_STATE_STOPPED = 713,
-    /** 714: An exception occurs when playing the audio mixing file. See #AUDIO_MIXING_ERROR_TYPE.
-    */
-    AUDIO_MIXING_STATE_FAILED = 714,
-};
-
-/** The error codes of the local user's audio mixing file.
-*/
-enum AUDIO_MIXING_ERROR_TYPE{
-    /** 701: The SDK cannot open the audio mixing file.
-    */
-    AUDIO_MIXING_ERROR_CAN_NOT_OPEN = 701,
-    /** 702: The SDK opens the audio mixing file too frequently.
-    */
-    AUDIO_MIXING_ERROR_TOO_FREQUENT_CALL = 702,
-    /** 703: The audio mixing file playback is interrupted.
-     */
-    AUDIO_MIXING_ERROR_INTERRUPTED_EOF = 703,
-    /** 0: The SDK can open the audio mixing file.
-    */
-    AUDIO_MIXING_ERROR_OK = 0,
-};
-
-/** Media device states.
- */
-enum MEDIA_DEVICE_STATE_TYPE
-{
-  /** 1: The device is active.
-  */
-    MEDIA_DEVICE_STATE_ACTIVE = 1,
-    /** 2: The device is disabled.
-    */
-    MEDIA_DEVICE_STATE_DISABLED = 2,
-    /** 4: The device is not present.
-    */
-    MEDIA_DEVICE_STATE_NOT_PRESENT = 4,
-    /** 8: The device is unplugged.
-    */
-    MEDIA_DEVICE_STATE_UNPLUGGED = 8
-};
-
-/** Media device types.
- */
-enum MEDIA_DEVICE_TYPE
-{
-  /** -1: Unknown device type.
-  */
-    UNKNOWN_AUDIO_DEVICE = -1,
-    /** 0: Audio playback device.
-    */
-    AUDIO_PLAYOUT_DEVICE = 0,
-    /** 1: Audio recording device.
-    */
-    AUDIO_RECORDING_DEVICE = 1,
-    /** 2: Video renderer.
-    */
-    VIDEO_RENDER_DEVICE = 2,
-    /** 3: Video capturer.
-    */
-    VIDEO_CAPTURE_DEVICE = 3,
-    /** 4: Application audio playback device.
-    */
-    AUDIO_APPLICATION_PLAYOUT_DEVICE = 4,
-};
-
-/** Local video state types
- */
-enum LOCAL_VIDEO_STREAM_STATE
-{
-    /** 0: Initial state */
-    LOCAL_VIDEO_STREAM_STATE_STOPPED = 0,
-    /** 1: The local video capturing device starts successfully.
-     *
-     * The SDK also reports this state when you share a maximized window by calling \ref IRtcEngine::startScreenCaptureByWindowId "startScreenCaptureByWindowId".
-     */
-    LOCAL_VIDEO_STREAM_STATE_CAPTURING = 1,
-    /** 2: The first video frame is successfully encoded. */
-    LOCAL_VIDEO_STREAM_STATE_ENCODING = 2,
-    /** 3: The local video fails to start. */
-    LOCAL_VIDEO_STREAM_STATE_FAILED = 3
-};
-
-/** Local video state error codes
- */
-enum LOCAL_VIDEO_STREAM_ERROR {
-    /** 0: The local video is normal. */
-    LOCAL_VIDEO_STREAM_ERROR_OK = 0,
-    /** 1: No specified reason for the local video failure. */
-    LOCAL_VIDEO_STREAM_ERROR_FAILURE = 1,
-    /** 2: No permission to use the local video capturing device. */
-    LOCAL_VIDEO_STREAM_ERROR_DEVICE_NO_PERMISSION = 2,
-    /** 3: The local video capturing device is in use. */
-    LOCAL_VIDEO_STREAM_ERROR_DEVICE_BUSY = 3,
-    /** 4: The local video capture fails. Check whether the capturing device is working properly. */
-    LOCAL_VIDEO_STREAM_ERROR_CAPTURE_FAILURE = 4,
-    /** 5: The local video encoding fails. */
-    LOCAL_VIDEO_STREAM_ERROR_ENCODE_FAILURE = 5,
-	/** 6: (iOS only) The application is in the background.
-	 *
-	 * @since v3.3.0
-	 */
-	LOCAL_VIDEO_STREAM_ERROR_CAPTURE_INBACKGROUND = 6,
-	/** 7: (iOS only) The application is running in Slide Over, Split View, or Picture in Picture mode.
-	 *
-	 * @since v3.3.0
-	 */
-	LOCAL_VIDEO_STREAM_ERROR_CAPTURE_MULTIPLE_FOREGROUND_APPS = 7,
-    /** 11: The shared window is minimized when you call \ref IRtcEngine::startScreenCaptureByWindowId "startScreenCaptureByWindowId" to share a window.
-     */
-    LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_MINIMIZED = 11,
-    /** 12: The error code indicates that a window shared by the window ID has been closed, or a full-screen window
-     * shared by the window ID has exited full-screen mode.
-     * After exiting full-screen mode, remote users cannot see the shared window. To prevent remote users from seeing a
-     * black screen, AR recommends that you immediately stop screen sharing.
-     *
-     * Common scenarios for reporting this error code:
-     * - When the local user closes the shared window, the SDK reports this error code.
-     * - The local user shows some slides in full-screen mode first, and then shares the windows of the slides. After
-     * the user exits full-screen mode, the SDK reports this error code.
-     * - The local user watches web video or reads web document in full-screen mode first, and then shares the window of
-     * the web video or document. After the user exits full-screen mode, the SDK reports this error code.
-     */
-    LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_CLOSED = 12,
-};
-
-/** Local audio state types.
- */
-enum LOCAL_AUDIO_STREAM_STATE
-{
-    /** 0: The local audio is in the initial state.
-     */
-    LOCAL_AUDIO_STREAM_STATE_STOPPED = 0,
-    /** 1: The recording device starts successfully.
-     */
-    LOCAL_AUDIO_STREAM_STATE_RECORDING = 1,
-    /** 2: The first audio frame encodes successfully.
-     */
-    LOCAL_AUDIO_STREAM_STATE_ENCODING = 2,
-    /** 3: The local audio fails to start.
-     */
-    LOCAL_AUDIO_STREAM_STATE_FAILED = 3
-};
-
-/** Local audio state error codes.
- */
-enum LOCAL_AUDIO_STREAM_ERROR
-{
-    /** 0: The local audio is normal.
-     */
-    LOCAL_AUDIO_STREAM_ERROR_OK = 0,
-    /** 1: No specified reason for the local audio failure.
-     */
-    LOCAL_AUDIO_STREAM_ERROR_FAILURE = 1,
-    /** 2: No permission to use the local audio device.
-     */
-    LOCAL_AUDIO_STREAM_ERROR_DEVICE_NO_PERMISSION = 2,
-    /** 3: The microphone is in use.
-     */
-    LOCAL_AUDIO_STREAM_ERROR_DEVICE_BUSY = 3,
-    /** 4: The local audio recording fails. Check whether the recording device
-     * is working properly.
-     */
-    LOCAL_AUDIO_STREAM_ERROR_RECORD_FAILURE = 4,
-    /** 5: The local audio encoding fails.
-     */
-    LOCAL_AUDIO_STREAM_ERROR_ENCODE_FAILURE = 5
-};
-
-/** Audio recording qualities.
-*/
-enum AUDIO_RECORDING_QUALITY_TYPE
-{
-    /** 0: Low quality. The sample rate is 32 kHz, and the file size is around
-     * 1.2 MB after 10 minutes of recording.
-    */
-    AUDIO_RECORDING_QUALITY_LOW = 0,
-    /** 1: Medium quality. The sample rate is 32 kHz, and the file size is
-     * around 2 MB after 10 minutes of recording.
-    */
-    AUDIO_RECORDING_QUALITY_MEDIUM = 1,
-    /** 2: High quality. The sample rate is 32 kHz, and the file size is
-     * around 3.75 MB after 10 minutes of recording.
-    */
-    AUDIO_RECORDING_QUALITY_HIGH = 2,
-};
-
-/** Network quality types. */
-enum QUALITY_TYPE
-{
-    /** 0: The network quality is unknown. */
-    QUALITY_UNKNOWN = 0,
-    /**  1: The network quality is excellent. */
-    QUALITY_EXCELLENT = 1,
-    /** 2: The network quality is quite good, but the bitrate may be slightly lower than excellent. */
-    QUALITY_GOOD = 2,
-    /** 3: Users can feel the communication slightly impaired. */
-    QUALITY_POOR = 3,
-    /** 4: Users cannot communicate smoothly. */
-    QUALITY_BAD = 4,
-    /** 5: The network is so bad that users can barely communicate. */
-    QUALITY_VBAD = 5,
-    /** 6: The network is down and users cannot communicate at all. */
-    QUALITY_DOWN = 6,
-    /** 7: Users cannot detect the network quality. (Not in use.) */
-    QUALITY_UNSUPPORTED = 7,
-    /** 8: Detecting the network quality. */
-    QUALITY_DETECTING = 8,
-};
-
-/** Video display modes. */
-enum RENDER_MODE_TYPE
-{
-  /**
-1: Uniformly scale the video until it fills the visible boundaries (cropped). One dimension of the video may have clipped contents.
- */
-    RENDER_MODE_HIDDEN = 1,
-    /**
-2: Uniformly scale the video until one of its dimension fits the boundary (zoomed to fit). Areas that are not filled due to disparity in the aspect ratio are filled with black.
- */
-    RENDER_MODE_FIT = 2,
-    /** **DEPRECATED** 3: This mode is deprecated.
-     */
-    RENDER_MODE_ADAPTIVE = 3,
-    /**
-    4: The fill mode. In this mode, the SDK stretches or zooms the video to fill the display window.
-    */
-    RENDER_MODE_FILL = 4,
-};
-
-/** Video mirror modes. */
-enum VIDEO_MIRROR_MODE_TYPE
-{
-      /** 0: (Default) The SDK enables the mirror mode. 
-       */
-    VIDEO_MIRROR_MODE_AUTO = 0,//determined by SDK
-        /** 1: Enable mirror mode. */
-    VIDEO_MIRROR_MODE_ENABLED = 1,//enabled mirror
-        /** 2: Disable mirror mode. */
-    VIDEO_MIRROR_MODE_DISABLED = 2,//disable mirror
-};
-
-/** **DEPRECATED** Video profiles. */
-enum VIDEO_PROFILE_TYPE
-{
-    /** 0: 160 * 120, frame rate 15 fps, bitrate 65 Kbps. */
-    VIDEO_PROFILE_LANDSCAPE_120P = 0,
-    /** 2: 120 * 120, frame rate 15 fps, bitrate 50 Kbps. */
-    VIDEO_PROFILE_LANDSCAPE_120P_3 = 2,
-    /** 10: 320*180, frame rate 15 fps, bitrate 140 Kbps. */
-    VIDEO_PROFILE_LANDSCAPE_180P = 10,
-    /** 12: 180 * 180, frame rate 15 fps, bitrate 100 Kbps. */
-    VIDEO_PROFILE_LANDSCAPE_180P_3 = 12,
-    /** 13: 240 * 180, frame rate 15 fps, bitrate 120 Kbps. */
-    VIDEO_PROFILE_LANDSCAPE_180P_4 = 13,
-    /** 20: 320 * 240, frame rate 15 fps, bitrate 200 Kbps. */
-    VIDEO_PROFILE_LANDSCAPE_240P = 20,
-    /** 22: 240 * 240, frame rate 15 fps, bitrate 140 Kbps. */
-    VIDEO_PROFILE_LANDSCAPE_240P_3 = 22,
-    /** 23: 424 * 240, frame rate 15 fps, bitrate 220 Kbps. */
-    VIDEO_PROFILE_LANDSCAPE_240P_4 = 23,
-    /** 30: 640 * 360, frame rate 15 fps, bitrate 400 Kbps. */
-    VIDEO_PROFILE_LANDSCAPE_360P = 30,
-    /** 32: 360 * 360, frame rate 15 fps, bitrate 260 Kbps. */
-    VIDEO_PROFILE_LANDSCAPE_360P_3 = 32,
-    /** 33: 640 * 360, frame rate 30 fps, bitrate 600 Kbps. */
-    VIDEO_PROFILE_LANDSCAPE_360P_4 = 33,
-    /** 35: 360 * 360, frame rate 30 fps, bitrate 400 Kbps. */
-    VIDEO_PROFILE_LANDSCAPE_360P_6 = 35,
-    /** 36: 480 * 360, frame rate 15 fps, bitrate 320 Kbps. */
-    VIDEO_PROFILE_LANDSCAPE_360P_7 = 36,
-    /** 37: 480 * 360, frame rate 30 fps, bitrate 490 Kbps. */
-    VIDEO_PROFILE_LANDSCAPE_360P_8 = 37,
-    /** 38: 640 * 360, frame rate 15 fps, bitrate 800 Kbps.
-     @note `LIVE_BROADCASTING` profile only.
-     */
-    VIDEO_PROFILE_LANDSCAPE_360P_9 = 38,
-    /** 39: 640 * 360, frame rate 24 fps, bitrate 800 Kbps.
-     @note `LIVE_BROADCASTING` profile only.
-     */
-    VIDEO_PROFILE_LANDSCAPE_360P_10 = 39,
-    /** 100: 640 * 360, frame rate 24 fps, bitrate 1000 Kbps.
-     @note `LIVE_BROADCASTING` profile only.
-     */
-    VIDEO_PROFILE_LANDSCAPE_360P_11 = 100,
-    /** 40: 640 * 480, frame rate 15 fps, bitrate 500 Kbps. */
-    VIDEO_PROFILE_LANDSCAPE_480P = 40,
-    /** 42: 480 * 480, frame rate 15 fps, bitrate 400 Kbps. */
-    VIDEO_PROFILE_LANDSCAPE_480P_3 = 42,
-    /** 43: 640 * 480, frame rate 30 fps, bitrate 750 Kbps. */
-    VIDEO_PROFILE_LANDSCAPE_480P_4 = 43,
-    /** 45: 480 * 480, frame rate 30 fps, bitrate 600 Kbps. */
-    VIDEO_PROFILE_LANDSCAPE_480P_6 = 45,
-    /** 47: 848 * 480, frame rate 15 fps, bitrate 610 Kbps. */
-    VIDEO_PROFILE_LANDSCAPE_480P_8 = 47,
-    /** 48: 848 * 480, frame rate 30 fps, bitrate 930 Kbps. */
-    VIDEO_PROFILE_LANDSCAPE_480P_9 = 48,
-    /** 49: 640 * 480, frame rate 10 fps, bitrate 400 Kbps. */
-    VIDEO_PROFILE_LANDSCAPE_480P_10 = 49,
-    /** 50: 1280 * 720, frame rate 15 fps, bitrate 1130 Kbps. */
-    VIDEO_PROFILE_LANDSCAPE_720P = 50,
-    /** 52: 1280 * 720, frame rate 30 fps, bitrate 1710 Kbps. */
-    VIDEO_PROFILE_LANDSCAPE_720P_3 = 52,
-    /** 54: 960 * 720, frame rate 15 fps, bitrate 910 Kbps. */
-    VIDEO_PROFILE_LANDSCAPE_720P_5 = 54,
-    /** 55: 960 * 720, frame rate 30 fps, bitrate 1380 Kbps. */
-    VIDEO_PROFILE_LANDSCAPE_720P_6 = 55,
-    /** 60: 1920 * 1080, frame rate 15 fps, bitrate 2080 Kbps. */
-    VIDEO_PROFILE_LANDSCAPE_1080P = 60,
-    /** 62: 1920 * 1080, frame rate 30 fps, bitrate 3150 Kbps. */
-    VIDEO_PROFILE_LANDSCAPE_1080P_3 = 62,
-    /** 64: 1920 * 1080, frame rate 60 fps, bitrate 4780 Kbps. */
-    VIDEO_PROFILE_LANDSCAPE_1080P_5 = 64,
-    /** 66: 2560 * 1440, frame rate 30 fps, bitrate 4850 Kbps. */
-    VIDEO_PROFILE_LANDSCAPE_1440P = 66,
-    /** 67: 2560 * 1440, frame rate 60 fps, bitrate 6500 Kbps. */
-    VIDEO_PROFILE_LANDSCAPE_1440P_2 = 67,
-    /** 70: 3840 * 2160, frame rate 30 fps, bitrate 6500 Kbps. */
-    VIDEO_PROFILE_LANDSCAPE_4K = 70,
-    /** 72: 3840 * 2160, frame rate 60 fps, bitrate 6500 Kbps. */
-    VIDEO_PROFILE_LANDSCAPE_4K_3 = 72,
-    /** 1000: 120 * 160, frame rate 15 fps, bitrate 65 Kbps. */
-    VIDEO_PROFILE_PORTRAIT_120P = 1000,
-    /** 1002: 120 * 120, frame rate 15 fps, bitrate 50 Kbps. */
-    VIDEO_PROFILE_PORTRAIT_120P_3 = 1002,
-    /** 1010: 180 * 320, frame rate 15 fps, bitrate 140 Kbps. */
-    VIDEO_PROFILE_PORTRAIT_180P = 1010,
-    /** 1012: 180 * 180, frame rate 15 fps, bitrate 100 Kbps. */
-    VIDEO_PROFILE_PORTRAIT_180P_3 = 1012,
-    /** 1013: 180 * 240, frame rate 15 fps, bitrate 120 Kbps. */
-    VIDEO_PROFILE_PORTRAIT_180P_4 = 1013,
-    /** 1020: 240 * 320, frame rate 15 fps, bitrate 200 Kbps. */
-    VIDEO_PROFILE_PORTRAIT_240P = 1020,
-    /** 1022: 240 * 240, frame rate 15 fps, bitrate 140 Kbps. */
-    VIDEO_PROFILE_PORTRAIT_240P_3 = 1022,
-    /** 1023: 240 * 424, frame rate 15 fps, bitrate 220 Kbps. */
-    VIDEO_PROFILE_PORTRAIT_240P_4 = 1023,
-    /** 1030: 360 * 640, frame rate 15 fps, bitrate 400 Kbps. */
-    VIDEO_PROFILE_PORTRAIT_360P = 1030,
-    /** 1032: 360 * 360, frame rate 15 fps, bitrate 260 Kbps. */
-    VIDEO_PROFILE_PORTRAIT_360P_3 = 1032,
-    /** 1033: 360 * 640, frame rate 30 fps, bitrate 600 Kbps. */
-    VIDEO_PROFILE_PORTRAIT_360P_4 = 1033,
-    /** 1035: 360 * 360, frame rate 30 fps, bitrate 400 Kbps. */
-    VIDEO_PROFILE_PORTRAIT_360P_6 = 1035,
-    /** 1036: 360 * 480, frame rate 15 fps, bitrate 320 Kbps. */
-    VIDEO_PROFILE_PORTRAIT_360P_7 = 1036,
-    /** 1037: 360 * 480, frame rate 30 fps, bitrate 490 Kbps. */
-    VIDEO_PROFILE_PORTRAIT_360P_8 = 1037,
-    /** 1038: 360 * 640, frame rate 15 fps, bitrate 800 Kbps.
-     @note `LIVE_BROADCASTING` profile only.
-     */
-    VIDEO_PROFILE_PORTRAIT_360P_9 = 1038,
-    /** 1039: 360 * 640, frame rate 24 fps, bitrate 800 Kbps.
-     @note `LIVE_BROADCASTING` profile only.
-     */
-    VIDEO_PROFILE_PORTRAIT_360P_10 = 1039,
-    /** 1100: 360 * 640, frame rate 24 fps, bitrate 1000 Kbps.
-     @note `LIVE_BROADCASTING` profile only.
-     */
-    VIDEO_PROFILE_PORTRAIT_360P_11 = 1100,
-    /** 1040: 480 * 640, frame rate 15 fps, bitrate 500 Kbps. */
-    VIDEO_PROFILE_PORTRAIT_480P = 1040,
-    /** 1042: 480 * 480, frame rate 15 fps, bitrate 400 Kbps. */
-    VIDEO_PROFILE_PORTRAIT_480P_3 = 1042,
-    /** 1043: 480 * 640, frame rate 30 fps, bitrate 750 Kbps. */
-    VIDEO_PROFILE_PORTRAIT_480P_4 = 1043,
-    /** 1045: 480 * 480, frame rate 30 fps, bitrate 600 Kbps. */
-    VIDEO_PROFILE_PORTRAIT_480P_6 = 1045,
-    /** 1047: 480 * 848, frame rate 15 fps, bitrate 610 Kbps. */
-    VIDEO_PROFILE_PORTRAIT_480P_8 = 1047,
-    /** 1048: 480 * 848, frame rate 30 fps, bitrate 930 Kbps. */
-    VIDEO_PROFILE_PORTRAIT_480P_9 = 1048,
-    /** 1049: 480 * 640, frame rate 10 fps, bitrate 400 Kbps. */
-    VIDEO_PROFILE_PORTRAIT_480P_10 = 1049,
-    /** 1050: 720 * 1280, frame rate 15 fps, bitrate 1130 Kbps. */
-    VIDEO_PROFILE_PORTRAIT_720P = 1050,
-    /** 1052: 720 * 1280, frame rate 30 fps, bitrate 1710 Kbps. */
-    VIDEO_PROFILE_PORTRAIT_720P_3 = 1052,
-    /** 1054: 720 * 960, frame rate 15 fps, bitrate 910 Kbps. */
-    VIDEO_PROFILE_PORTRAIT_720P_5 = 1054,
-    /** 1055: 720 * 960, frame rate 30 fps, bitrate 1380 Kbps. */
-    VIDEO_PROFILE_PORTRAIT_720P_6 = 1055,
-    /** 1060: 1080 * 1920, frame rate 15 fps, bitrate 2080 Kbps. */
-    VIDEO_PROFILE_PORTRAIT_1080P = 1060,
-    /** 1062: 1080 * 1920, frame rate 30 fps, bitrate 3150 Kbps. */
-    VIDEO_PROFILE_PORTRAIT_1080P_3 = 1062,
-    /** 1064: 1080 * 1920, frame rate 60 fps, bitrate 4780 Kbps. */
-    VIDEO_PROFILE_PORTRAIT_1080P_5 = 1064,
-    /** 1066: 1440 * 2560, frame rate 30 fps, bitrate 4850 Kbps. */
-    VIDEO_PROFILE_PORTRAIT_1440P = 1066,
-    /** 1067: 1440 * 2560, frame rate 60 fps, bitrate 6500 Kbps. */
-    VIDEO_PROFILE_PORTRAIT_1440P_2 = 1067,
-    /** 1070: 2160 * 3840, frame rate 30 fps, bitrate 6500 Kbps. */
-    VIDEO_PROFILE_PORTRAIT_4K = 1070,
-    /** 1072: 2160 * 3840, frame rate 60 fps, bitrate 6500 Kbps. */
-    VIDEO_PROFILE_PORTRAIT_4K_3 = 1072,
-    /** Default 640 * 360, frame rate 15 fps, bitrate 400 Kbps. */
-    VIDEO_PROFILE_DEFAULT = VIDEO_PROFILE_LANDSCAPE_360P,
-};
-
-/** Audio profiles.
-
-Sets the sample rate, bitrate, encoding mode, and the number of channels:*/
-enum AUDIO_PROFILE_TYPE // sample rate, bit rate, mono/stereo, speech/music codec
-{
-    /**
-     0: Default audio profile:
-     - For the interactive streaming profile: A sample rate of 48 KHz, music encoding, mono, and a bitrate of up to 64 Kbps.
-     - For the `COMMUNICATION` profile:
-        - Windows: A sample rate of 16 KHz, music encoding, mono, and a bitrate of up to 16 Kbps.
-        - Android/macOS/iOS: A sample rate of 32 KHz, music encoding, mono, and a bitrate of up to 18 Kbps.
-    */
-    AUDIO_PROFILE_DEFAULT = 0, // use default settings
-    /**
-     1: A sample rate of 32 KHz, audio encoding, mono, and a bitrate of up to 18 Kbps.
-     */
-    AUDIO_PROFILE_SPEECH_STANDARD = 1, // 32Khz, 18Kbps, mono, speech
-    /**
-     2: A sample rate of 48 KHz, music encoding, mono, and a bitrate of up to 64 Kbps.
-     */
-    AUDIO_PROFILE_MUSIC_STANDARD = 2, // 48Khz, 48Kbps, mono, music
-    /**
-     3: A sample rate of 48 KHz, music encoding, stereo, and a bitrate of up to 80 Kbps.
-     */
-    AUDIO_PROFILE_MUSIC_STANDARD_STEREO = 3, // 48Khz, 56Kbps, stereo, music
-    /**
-     4: A sample rate of 48 KHz, music encoding, mono, and a bitrate of up to 96 Kbps.
-     */
-    AUDIO_PROFILE_MUSIC_HIGH_QUALITY = 4, // 48Khz, 128Kbps, mono, music
-    /**
-     5: A sample rate of 48 KHz, music encoding, stereo, and a bitrate of up to 128 Kbps.
-     */
-    AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO = 5, // 48Khz, 192Kbps, stereo, music
-    /**
-     6: A sample rate of 16 KHz, audio encoding, mono, and Acoustic Echo Cancellation (AES) enabled.
-     */
-    AUDIO_PROFILE_IOT                       = 6,
-    AUDIO_PROFILE_NUM = 7,
-};
-
-/** Audio application scenarios.
-*/
-enum AUDIO_SCENARIO_TYPE // set a suitable scenario for your app type
-{
-    /** 0: Default audio scenario. */
-    AUDIO_SCENARIO_DEFAULT = 0,
-    /** 1: Entertainment scenario where users need to frequently switch the user role. */
-    AUDIO_SCENARIO_CHATROOM_ENTERTAINMENT = 1,
-    /** 2: Education scenario where users want smoothness and stability. */
-    AUDIO_SCENARIO_EDUCATION = 2,
-    /** 3: High-quality audio chatroom scenario where hosts mainly play music. */
-    AUDIO_SCENARIO_GAME_STREAMING = 3,
-    /** 4: Showroom scenario where a single host wants high-quality audio. */
-    AUDIO_SCENARIO_SHOWROOM = 4,
-    /** 5: Gaming scenario for group chat that only contains the human voice. */
-    AUDIO_SCENARIO_CHATROOM_GAMING = 5,
-    /** 6: IoT (Internet of Things) scenario where users use IoT devices with low power consumption. */
-    AUDIO_SCENARIO_IOT = 6,
-    /** 8: Meeting scenario that mainly contains the human voice.
-     *
-     * @since v3.2.0
-     */
-    AUDIO_SCENARIO_MEETING = 8,
-    /** The number of elements in the enumeration.
-     */
-    AUDIO_SCENARIO_NUM = 9,
-};
-
- /** The channel profile of the AR RtcEngine.
- */
-enum CHANNEL_PROFILE_TYPE
-{
-   /** (Default) Communication. This profile applies to scenarios such as an audio call or video call,
-    * where all users can publish and subscribe to streams.
-    */
-    CHANNEL_PROFILE_COMMUNICATION = 0,
-   /** Live streaming. In this profile, uses have roles, namely, host and audience (default).
-    * A host both publishes and subscribes to streams, while an audience subscribes to streams only.
-    * This profile applies to scenarios such as a chat room or interactive video streaming.
-    */
-    CHANNEL_PROFILE_LIVE_BROADCASTING = 1,
-   /** 2: Gaming. This profile uses a codec with a lower bitrate and consumes less power. Applies to the gaming scenario, where all game players can talk freely.
-    *
-    * @note AR does not recommend using this setting.
-    */
-    CHANNEL_PROFILE_GAME = 2,
-};
-/// @cond
-/** The role of a user in a live interactive streaming. */
-enum CLIENT_ROLE_TYPE
-{
-    /** 1: Host. A host can both send and receive streams. */
-    CLIENT_ROLE_BROADCASTER = 1,
-    /** 2: (Default) Audience. An `audience` member can only receive streams. */
-    CLIENT_ROLE_AUDIENCE = 2,
-};
-
-/** The latency level of an audience member in a live interactive streaming.
- *
- * @note Takes effect only when the user role is `CLIENT_ROLE_BROADCASTER`.
- */
-enum AUDIENCE_LATENCY_LEVEL_TYPE
-{
-    /** 1: Low latency. */
-    AUDIENCE_LATENCY_LEVEL_LOW_LATENCY = 1,
-    /** 2: (Default) Ultra low latency. */
-    AUDIENCE_LATENCY_LEVEL_ULTRA_LOW_LATENCY = 2,
-};
-/// @cond
-/** The reason why the super-resolution algorithm is not successfully enabled.
- */
-enum SUPER_RESOLUTION_STATE_REASON
-{
-    /** 0: The super-resolution algorithm is successfully enabled.
-     */
-    SR_STATE_REASON_SUCCESS = 0,
-    /** 1: The origin resolution of the remote video is beyond the range where
-     * the super-resolution algorithm can be applied.
-     */
-    SR_STATE_REASON_STREAM_OVER_LIMITATION = 1,
-    /** 2: Another user is already using the super-resolution algorithm.
-     */
-    SR_STATE_REASON_USER_COUNT_OVER_LIMITATION = 2,
-    /** 3: The device does not support the super-resolution algorithm.
-     */
-    SR_STATE_REASON_DEVICE_NOT_SUPPORTED = 3,
-};
-/// @endcond
-
-/** Reasons for a user being offline. */
-enum USER_OFFLINE_REASON_TYPE
-{
-    /** 0: The user quits the call. */
-    USER_OFFLINE_QUIT = 0,
-    /** 1: The SDK times out and the user drops offline because no data packet is received within a certain period of time. If the user quits the call and the message is not passed to the SDK (due to an unreliable channel), the SDK assumes the user dropped offline. */
-    USER_OFFLINE_DROPPED = 1,
-      /** 2: (Live broadcast only.) The client role switched from the host to the audience. */
-    USER_OFFLINE_BECOME_AUDIENCE = 2,
-};
-/**
- States of the RTMP streaming.
- */
-enum RTMP_STREAM_PUBLISH_STATE
-{
-  /** The RTMP streaming has not started or has ended. This state is also triggered after you remove an RTMP address from the CDN by calling removePublishStreamUrl.
-   */
-  RTMP_STREAM_PUBLISH_STATE_IDLE = 0,
-  /** The SDK is connecting to AR's streaming server and the RTMP server. This state is triggered after you call the \ref IRtcEngine::addPublishStreamUrl "addPublishStreamUrl" method.
-   */
-  RTMP_STREAM_PUBLISH_STATE_CONNECTING = 1,
-  /** The RTMP streaming publishes. The SDK successfully publishes the RTMP streaming and returns this state.
-   */
-  RTMP_STREAM_PUBLISH_STATE_RUNNING = 2,
-  /** The RTMP streaming is recovering. When exceptions occur to the CDN, or the streaming is interrupted, the SDK tries to resume RTMP streaming and returns this state.
-
-   - If the SDK successfully resumes the streaming, #RTMP_STREAM_PUBLISH_STATE_RUNNING (2) returns.
-   - If the streaming does not resume within 60 seconds or server errors occur, #RTMP_STREAM_PUBLISH_STATE_FAILURE (4) returns. You can also reconnect to the server by calling the \ref IRtcEngine::removePublishStreamUrl "removePublishStreamUrl" and \ref IRtcEngine::addPublishStreamUrl "addPublishStreamUrl" methods.
-   */
-  RTMP_STREAM_PUBLISH_STATE_RECOVERING = 3,
-  /** The RTMP streaming fails. See the errCode parameter for the detailed error information. You can also call the \ref IRtcEngine::addPublishStreamUrl "addPublishStreamUrl" method to publish the RTMP streaming again.
-   */
-  RTMP_STREAM_PUBLISH_STATE_FAILURE = 4,
-};
-
-/**
- Error codes of the RTMP streaming.
- */
-enum RTMP_STREAM_PUBLISH_ERROR
-{
-  /** The RTMP streaming publishes successfully. */
-  RTMP_STREAM_PUBLISH_ERROR_OK = 0,
-  /** Invalid argument used. If, for example, you do not call the \ref IRtcEngine::setLiveTranscoding "setLiveTranscoding" method to configure the LiveTranscoding parameters before calling the addPublishStreamUrl method, the SDK returns this error. Check whether you set the parameters in the *setLiveTranscoding* method properly. */
-  RTMP_STREAM_PUBLISH_ERROR_INVALID_ARGUMENT = 1,
-  /** The RTMP streaming is encrypted and cannot be published. */
-  RTMP_STREAM_PUBLISH_ERROR_ENCRYPTED_STREAM_NOT_ALLOWED = 2,
-  /** Timeout for the RTMP streaming. Call the \ref IRtcEngine::addPublishStreamUrl "addPublishStreamUrl" method to publish the streaming again. */
-  RTMP_STREAM_PUBLISH_ERROR_CONNECTION_TIMEOUT = 3,
-  /** An error occurs in AR's streaming server. Call the addPublishStreamUrl method to publish the streaming again. */
-  RTMP_STREAM_PUBLISH_ERROR_INTERNAL_SERVER_ERROR = 4,
-  /** An error occurs in the RTMP server. */
-  RTMP_STREAM_PUBLISH_ERROR_RTMP_SERVER_ERROR = 5,
-  /** The RTMP streaming publishes too frequently. */
-  RTMP_STREAM_PUBLISH_ERROR_TOO_OFTEN = 6,
-  /** The host publishes more than 10 URLs. Delete the unnecessary URLs before adding new ones. */
-  RTMP_STREAM_PUBLISH_ERROR_REACH_LIMIT = 7,
-  /** The host manipulates other hosts' URLs. Check your app logic. */
-  RTMP_STREAM_PUBLISH_ERROR_NOT_AUTHORIZED = 8,
-  /** AR's server fails to find the RTMP streaming. */
-  RTMP_STREAM_PUBLISH_ERROR_STREAM_NOT_FOUND = 9,
-  /** The format of the RTMP streaming URL is not supported. Check whether the URL format is correct. */
-  RTMP_STREAM_PUBLISH_ERROR_FORMAT_NOT_SUPPORTED = 10,
-  /** 推流中的背景图片或者水印地址无法拉取 **/
-  RTMP_STREAMING_ERROR_FAILED_LOAD_IMAGE = 11,
-
-};
-
-/** Events during the RTMP streaming. */
-enum RTMP_STREAMING_EVENT
-{
-  /** An error occurs when you add a background image or a watermark image to the RTMP stream.
-   */
-  RTMP_STREAMING_EVENT_FAILED_LOAD_IMAGE = 1,
-};
-
-/** States of importing an external video stream in the live interactive streaming. */
-enum INJECT_STREAM_STATUS
-{
-    /** 0: The external video stream imported successfully. */
-    INJECT_STREAM_STATUS_START_SUCCESS = 0,
-    /** 1: The external video stream already exists. */
-    INJECT_STREAM_STATUS_START_ALREADY_EXISTS = 1,
-    /** 2: The external video stream to be imported is unauthorized. */
-    INJECT_STREAM_STATUS_START_UNAUTHORIZED = 2,
-    /** 3: Import external video stream timeout. */
-    INJECT_STREAM_STATUS_START_TIMEDOUT = 3,
-    /** 4: Import external video stream failed. */
-    INJECT_STREAM_STATUS_START_FAILED = 4,
-    /** 5: The external video stream stopped importing successfully. */
-    INJECT_STREAM_STATUS_STOP_SUCCESS = 5,
-    /** 6: No external video stream is found. */
-    INJECT_STREAM_STATUS_STOP_NOT_FOUND = 6,
-    /** 7: The external video stream to be stopped importing is unauthorized. */
-    INJECT_STREAM_STATUS_STOP_UNAUTHORIZED = 7,
-    /** 8: Stop importing external video stream timeout. */
-    INJECT_STREAM_STATUS_STOP_TIMEDOUT = 8,
-    /** 9: Stop importing external video stream failed. */
-    INJECT_STREAM_STATUS_STOP_FAILED = 9,
-    /** 10: The external video stream is corrupted. */
-    INJECT_STREAM_STATUS_BROKEN = 10,
-};
-/** Remote video stream types. */
-enum REMOTE_VIDEO_STREAM_TYPE
-{
-      /** 0: High-stream video. */
-    REMOTE_VIDEO_STREAM_HIGH = 0,
-      /** 1: Low-stream video. */
-    REMOTE_VIDEO_STREAM_LOW = 1,
-};
-
-/** Use modes of the \ref media::IAudioFrameObserver::onRecordAudioFrame "onRecordAudioFrame" callback. */
-enum RAW_AUDIO_FRAME_OP_MODE_TYPE
-{
-    /** 0: Read-only mode: Users only read the \ref AM::IAudioFrameObserver::AudioFrame "AudioFrame" data without modifying anything. For example, when users acquire the data with the AR SDK, then push the RTMP streams. */
-    RAW_AUDIO_FRAME_OP_MODE_READ_ONLY = 0,
-    /** 1: Write-only mode: Users replace the \ref AM::IAudioFrameObserver::AudioFrame "AudioFrame" data with their own data and pass the data to the SDK for encoding. For example, when users acquire the data. */
-    RAW_AUDIO_FRAME_OP_MODE_WRITE_ONLY = 1,
-    /** 2: Read and write mode: Users read the data from \ref AM::IAudioFrameObserver::AudioFrame "AudioFrame", modify it, and then play it. For example, when users have their own sound-effect processing module and perform some voice pre-processing, such as a voice change. */
-    RAW_AUDIO_FRAME_OP_MODE_READ_WRITE = 2,
-};
-
-/** Audio-sample rates. */
-enum AUDIO_SAMPLE_RATE_TYPE
-{
-    /** 32000: 32 kHz */
-    AUDIO_SAMPLE_RATE_32000 = 32000,
-    /** 44100: 44.1 kHz */
-    AUDIO_SAMPLE_RATE_44100 = 44100,
-      /** 48000: 48 kHz */
-    AUDIO_SAMPLE_RATE_48000 = 48000,
-};
-
-/** Video codec profile types. */
-enum VIDEO_CODEC_PROFILE_TYPE
-{  /** 66: Baseline video codec profile. Generally used in video calls on mobile phones. */
-    VIDEO_CODEC_PROFILE_BASELINE = 66,
-    /** 77: Main video codec profile. Generally used in mainstream electronics such as MP4 players, portable video players, PSP, and iPads. */
-    VIDEO_CODEC_PROFILE_MAIN = 77,
-      /** 100: (Default) High video codec profile. Generally used in high-resolution broadcasts or television. */
-    VIDEO_CODEC_PROFILE_HIGH = 100,
-};
-
-/** Video codec types */
-enum VIDEO_CODEC_TYPE {
-    /** Standard VP8 */
-    VIDEO_CODEC_VP8 = 1,
-    /** Standard H264 */
-    VIDEO_CODEC_H264 = 2,
-    /** Enhanced VP8 */
-    VIDEO_CODEC_EVP = 3,
-    /** Enhanced H264 */
-    VIDEO_CODEC_E264 = 4,
-	/** Standard Jpeg*/
-	VIDEO_CODEC_MJPG = 5,
-};
-
-/**
- * Audio codec type list.
- */
-enum AUDIO_CODEC_TYPE {
-	/**
-	 * 1: OPUS
-	 */
-	AUDIO_CODEC_OPUS = 1,
-	/**
-	 * 3: G711
-	 */
-	AUDIO_CODEC_G711A = 3,
-	AUDIO_CODEC_G711U = 4,
-	/**
-	 * 5: G722
-	 */
-	AUDIO_CODEC_G722 = 5,
-	/**
-	 * 8: AACLC
-	 */
-	AUDIO_CODEC_AACLC = 8,
-	/**
-	 * 9: HEAAC
-	 */
-	AUDIO_CODEC_HEAAC = 9,
-	/**
-	 * 253: GENERIC
-	 */
-	AUDIO_CODEC_GENERIC = 253,
-};
-
-/** Video Codec types for publishing streams. */
-enum VIDEO_CODEC_TYPE_FOR_STREAM
-{
-    VIDEO_CODEC_H264_FOR_STREAM = 1,
-    VIDEO_CODEC_H265_FOR_STREAM = 2,
-};
-
-/** Audio equalization band frequencies. */
-enum AUDIO_EQUALIZATION_BAND_FREQUENCY
-{
-    /** 0: 31 Hz */
-    AUDIO_EQUALIZATION_BAND_31 = 0,
-      /** 1: 62 Hz */
-    AUDIO_EQUALIZATION_BAND_62 = 1,
-    /** 2: 125 Hz */
-    AUDIO_EQUALIZATION_BAND_125 = 2,
-      /** 3: 250 Hz */
-    AUDIO_EQUALIZATION_BAND_250 = 3,
-      /** 4: 500 Hz */
-    AUDIO_EQUALIZATION_BAND_500 = 4,
-        /** 5: 1 kHz */
-    AUDIO_EQUALIZATION_BAND_1K = 5,
-        /** 6: 2 kHz */
-    AUDIO_EQUALIZATION_BAND_2K = 6,
-        /** 7: 4 kHz */
-    AUDIO_EQUALIZATION_BAND_4K = 7,
-        /** 8: 8 kHz */
-    AUDIO_EQUALIZATION_BAND_8K = 8,
-      /** 9: 16 kHz */
-    AUDIO_EQUALIZATION_BAND_16K = 9,
-};
-
-/** Audio reverberation types. */
-enum AUDIO_REVERB_TYPE
-{
-    /** 0: The level of the dry signal (db). The value is between -20 and 10. */
-    AUDIO_REVERB_DRY_LEVEL = 0, // (dB, [-20,10]), the level of the dry signal
-    /** 1: The level of the early reflection signal (wet signal) (dB). The value is between -20 and 10. */
-    AUDIO_REVERB_WET_LEVEL = 1, // (dB, [-20,10]), the level of the early reflection signal (wet signal)
-    /** 2: The room size of the reflection. The value is between 0 and 100. */
-    AUDIO_REVERB_ROOM_SIZE = 2, // ([0,100]), the room size of the reflection
-    /** 3: The length of the initial delay of the wet signal (ms). The value is between 0 and 200. */
-    AUDIO_REVERB_WET_DELAY = 3, // (ms, [0,200]), the length of the initial delay of the wet signal in ms
-    /** 4: The reverberation strength. The value is between 0 and 100. */
-    AUDIO_REVERB_STRENGTH = 4, // ([0,100]), the strength of the reverberation
-};
-
-/**
- * Local voice changer options.
- */
-enum VOICE_CHANGER_PRESET {
-    /**
-     * The original voice (no local voice change).
-     */
-    VOICE_CHANGER_OFF = 0x00000000, //Turn off the voice changer
-    /**
-     * The voice of an old man.
-     */
-    VOICE_CHANGER_OLDMAN = 0x00000001,
-    /**
-     * The voice of a little boy.
-     */
-    VOICE_CHANGER_BABYBOY = 0x00000002,
-    /**
-     * The voice of a little girl.
-     */
-    VOICE_CHANGER_BABYGIRL = 0x00000003,
-    /**
-     * The voice of Zhu Bajie, a character in Journey to the West who has a voice like that of a growling bear.
-     */
-    VOICE_CHANGER_ZHUBAJIE = 0x00000004,
-    /**
-     * The ethereal voice.
-     */
-    VOICE_CHANGER_ETHEREAL = 0x00000005,
-    /**
-     * The voice of Hulk.
-     */
-    VOICE_CHANGER_HULK = 0x00000006,
-    /**
-     * A more vigorous voice.
-     */
-    VOICE_BEAUTY_VIGOROUS = 0x00100001,//7,
-    /**
-     * A deeper voice.
-     */
-    VOICE_BEAUTY_DEEP = 0x00100002,
-    /**
-     * A mellower voice.
-     */
-    VOICE_BEAUTY_MELLOW = 0x00100003,
-    /**
-     * Falsetto.
-     */
-    VOICE_BEAUTY_FALSETTO = 0x00100004,
-    /**
-     * A fuller voice.
-     */
-    VOICE_BEAUTY_FULL = 0x00100005,
-    /**
-     * A clearer voice.
-     */
-    VOICE_BEAUTY_CLEAR = 0x00100006,
-    /**
-     * A more resounding voice.
-     */
-    VOICE_BEAUTY_RESOUNDING = 0x00100007,
-    /**
-     * A more ringing voice.
-     */
-    VOICE_BEAUTY_RINGING = 0x00100008,
-    /**
-     * A more spatially resonant voice.
-     */
-    VOICE_BEAUTY_SPACIAL = 0x00100009,
-    /**
-     * (For male only) A more magnetic voice. Do not use it when the speaker is a female; otherwise, voice distortion occurs.
-     */
-    GENERAL_BEAUTY_VOICE_MALE_MAGNETIC = 0x00200001,
-    /**
-     * (For female only) A fresher voice. Do not use it when the speaker is a male; otherwise, voice distortion occurs.
-     */
-    GENERAL_BEAUTY_VOICE_FEMALE_FRESH = 0x00200002,
-    /**
-     * 	(For female only) A more vital voice. Do not use it when the speaker is a male; otherwise, voice distortion occurs.
-     */
-    GENERAL_BEAUTY_VOICE_FEMALE_VITALITY = 0x00200003
-
-};
-
-/** Local voice reverberation presets. */
-enum AUDIO_REVERB_PRESET {
-    /**
-     * Turn off local voice reverberation, that is, to use the original voice.
-     */
-    AUDIO_REVERB_OFF = 0x00000000, // Turn off audio reverb
-    /**
-     * The reverberation style typical of a KTV venue (enhanced).
-     */
-    AUDIO_REVERB_FX_KTV = 0x00100001,
-    /**
-     * The reverberation style typical of a concert hall (enhanced).
-     */
-    AUDIO_REVERB_FX_VOCAL_CONCERT = 0x00100002,
-    /**
-     * The reverberation style typical of an uncle's voice.
-     */
-    AUDIO_REVERB_FX_UNCLE = 0x00100003,
-    /**
-     * The reverberation style typical of a little sister's voice.
-     */
-    AUDIO_REVERB_FX_SISTER = 0x00100004,
-    /**
-     * The reverberation style typical of a recording studio (enhanced).
-     */
-    AUDIO_REVERB_FX_STUDIO = 0x00100005,
-    /**
-     * The reverberation style typical of popular music (enhanced).
-     */
-    AUDIO_REVERB_FX_POPULAR = 0x00100006,
-    /**
-     * The reverberation style typical of R&B music (enhanced).
-     */
-    AUDIO_REVERB_FX_RNB = 0x00100007,
-    /**
-     * The reverberation style typical of the vintage phonograph.
-     */
-    AUDIO_REVERB_FX_PHONOGRAPH = 0x00100008,
-    /**
-     * The reverberation style typical of popular music.
-     */
-    AUDIO_REVERB_POPULAR = 0x00000001,
-    /**
-     * The reverberation style typical of R&B music.
-     */
-    AUDIO_REVERB_RNB = 0x00000002,
-    /**
-     * The reverberation style typical of rock music.
-     */
-    AUDIO_REVERB_ROCK = 0x00000003,
-    /**
-     * The reverberation style typical of hip-hop music.
-     */
-     AUDIO_REVERB_HIPHOP = 0x00000004,
-    /**
-     * The reverberation style typical of a concert hall.
-     */
-    AUDIO_REVERB_VOCAL_CONCERT = 0x00000005,
-    /**
-     * The reverberation style typical of a KTV venue.
-     */
-    AUDIO_REVERB_KTV = 0x00000006,
-    /**
-     * The reverberation style typical of a recording studio.
-     */
-    AUDIO_REVERB_STUDIO = 0x00000007,
-    /**
-     * The reverberation of the virtual stereo. The virtual stereo is an effect that renders the monophonic
-     * audio as the stereo audio, so that all users in the channel can hear the stereo voice effect.
-     * To achieve better virtual stereo reverberation, AR recommends setting `profile` in `setAudioProfile`
-     * as `AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO(5)`.
-     */
-    AUDIO_VIRTUAL_STEREO = 0x00200001,
-    /** 1: Electronic Voice.*/
-    AUDIO_ELECTRONIC_VOICE = 0x00300001,
-    /** 1: 3D Voice.*/
-    AUDIO_THREEDIM_VOICE = 0x00400001
-};
-/** The options for SDK preset voice beautifier effects.
- */
-enum VOICE_BEAUTIFIER_PRESET
-{
-    /** Turn off voice beautifier effects and use the original voice.
-     */
-    VOICE_BEAUTIFIER_OFF = 0x00000000,
-    /** A more magnetic voice.
-     *
-     * @note AR recommends using this enumerator to process a male-sounding voice; otherwise, you may experience vocal distortion.
-     */
-    CHAT_BEAUTIFIER_MAGNETIC = 0x01010100,
-    /** A fresher voice.
-     *
-     * @note AR recommends using this enumerator to process a female-sounding voice; otherwise, you may experience vocal distortion.
-     */
-    CHAT_BEAUTIFIER_FRESH = 0x01010200,
-    /** A more vital voice.
-     *
-     * @note AR recommends using this enumerator to process a female-sounding voice; otherwise, you may experience vocal distortion.
-     */
-    CHAT_BEAUTIFIER_VITALITY = 0x01010300,
-    /** A more vigorous voice.
-     */
-    TIMBRE_TRANSFORMATION_VIGOROUS = 0x01030100,
-    /** A deeper voice.
-     */
-    TIMBRE_TRANSFORMATION_DEEP = 0x01030200,
-    /** A mellower voice.
-     */
-    TIMBRE_TRANSFORMATION_MELLOW = 0x01030300,
-    /** A falsetto voice.
-     */
-    TIMBRE_TRANSFORMATION_FALSETTO = 0x01030400,
-    /** A falsetto voice.
-     */
-    TIMBRE_TRANSFORMATION_FULL = 0x01030500,
-    /** A clearer voice.
-     */
-    TIMBRE_TRANSFORMATION_CLEAR = 0x01030600,
-    /** A more resounding voice.
-     */
-    TIMBRE_TRANSFORMATION_RESOUNDING = 0x01030700,
-    /** A more ringing voice.
-     */
-    TIMBRE_TRANSFORMATION_RINGING = 0x01030800
-};
-/** The options for SDK preset audio effects.
- */
-enum AUDIO_EFFECT_PRESET
-{
-    /** Turn off audio effects and use the original voice.
-     */
-    AUDIO_EFFECT_OFF = 0x00000000,
-    /** An audio effect typical of a KTV venue.
-     *
-     * @note To achieve better audio effect quality, AR recommends calling \ref IRtcEngine::setAudioProfile "setAudioProfile"
-     * and setting the `profile` parameter to `AUDIO_PROFILE_MUSIC_HIGH_QUALITY(4)` or `AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO(5)`
-     * before setting this enumerator.
-     */
-    ROOM_ACOUSTICS_KTV = 0x02010100,
-    /** An audio effect typical of a concert hall.
-     *
-     * @note To achieve better audio effect quality, AR recommends calling \ref IRtcEngine::setAudioProfile "setAudioProfile"
-     * and setting the `profile` parameter to `AUDIO_PROFILE_MUSIC_HIGH_QUALITY(4)` or `AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO(5)`
-     * before setting this enumerator.
-     */
-    ROOM_ACOUSTICS_VOCAL_CONCERT = 0x02010200,
-    /** An audio effect typical of a recording studio.
-     *
-     * @note To achieve better audio effect quality, AR recommends calling \ref IRtcEngine::setAudioProfile "setAudioProfile"
-     * and setting the `profile` parameter to `AUDIO_PROFILE_MUSIC_HIGH_QUALITY(4)` or `AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO(5)`
-     * before setting this enumerator.
-     */
-    ROOM_ACOUSTICS_STUDIO = 0x02010300,
-    /** An audio effect typical of a vintage phonograph.
-     *
-     * @note To achieve better audio effect quality, AR recommends calling \ref IRtcEngine::setAudioProfile "setAudioProfile"
-     * and setting the `profile` parameter to `AUDIO_PROFILE_MUSIC_HIGH_QUALITY(4)` or `AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO(5)`
-     * before setting this enumerator.
-     */
-    ROOM_ACOUSTICS_PHONOGRAPH = 0x02010400,
-    /** A virtual stereo effect that renders monophonic audio as stereo audio.
-     *
-     * @note Call \ref IRtcEngine::setAudioProfile "setAudioProfile" and set the `profile` parameter to
-     * `AUDIO_PROFILE_MUSIC_STANDARD_STEREO(3)` or `AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO(5)` before setting this
-     * enumerator; otherwise, the enumerator setting does not take effect.
-     */
-    ROOM_ACOUSTICS_VIRTUAL_STEREO = 0x02010500,
-    /** A more spatial audio effect.
-     *
-     * @note To achieve better audio effect quality, AR recommends calling \ref IRtcEngine::setAudioProfile "setAudioProfile"
-     * and setting the `profile` parameter to `AUDIO_PROFILE_MUSIC_HIGH_QUALITY(4)` or `AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO(5)`
-     * before setting this enumerator.
-     */
-    ROOM_ACOUSTICS_SPACIAL = 0x02010600,
-    /** A more ethereal audio effect.
-     *
-     * @note To achieve better audio effect quality, AR recommends calling \ref IRtcEngine::setAudioProfile "setAudioProfile"
-     * and setting the `profile` parameter to `AUDIO_PROFILE_MUSIC_HIGH_QUALITY(4)` or `AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO(5)`
-     * before setting this enumerator.
-     */
-    ROOM_ACOUSTICS_ETHEREAL = 0x02010700,
-    /** A 3D voice effect that makes the voice appear to be moving around the user. The default cycle period of the 3D
-     * voice effect is 10 seconds. To change the cycle period, call \ref IRtcEngine::setAudioEffectParameters "setAudioEffectParameters"
-     * after this method.
-     *
-     * @note
-     * - Call \ref IRtcEngine::setAudioProfile "setAudioProfile" and set the `profile` parameter to `AUDIO_PROFILE_MUSIC_STANDARD_STEREO(3)`
-     * or `AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO(5)` before setting this enumerator; otherwise, the enumerator setting does not take effect.
-     * - If the 3D voice effect is enabled, users need to use stereo audio playback devices to hear the anticipated voice effect.
-     */
-    ROOM_ACOUSTICS_3D_VOICE = 0x02010800,
-    /** The voice of an uncle.
-     *
-     * @note
-     * - AR recommends using this enumerator to process a male-sounding voice; otherwise, you may not hear the anticipated voice effect.
-     * - To achieve better audio effect quality, AR recommends calling \ref IRtcEngine::setAudioProfile "setAudioProfile" and
-     * setting the `profile` parameter to `AUDIO_PROFILE_MUSIC_HIGH_QUALITY(4)` or `AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO(5)` before
-     * setting this enumerator.
-     */
-    VOICE_CHANGER_EFFECT_UNCLE = 0x02020100,
-    /** The voice of an old man.
-     *
-     * @note
-     * - AR recommends using this enumerator to process a male-sounding voice; otherwise, you may not hear the anticipated voice effect.
-     * - To achieve better audio effect quality, AR recommends calling \ref IRtcEngine::setAudioProfile "setAudioProfile" and setting
-     * the `profile` parameter to `AUDIO_PROFILE_MUSIC_HIGH_QUALITY(4)` or `AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO(5)` before setting
-     * this enumerator.
-     */
-    VOICE_CHANGER_EFFECT_OLDMAN = 0x02020200,
-    /** The voice of a boy.
-     *
-     * @note
-     * - AR recommends using this enumerator to process a male-sounding voice; otherwise, you may not hear the anticipated voice effect.
-     * - To achieve better audio effect quality, AR recommends calling \ref IRtcEngine::setAudioProfile "setAudioProfile" and setting
-     * the `profile` parameter to `AUDIO_PROFILE_MUSIC_HIGH_QUALITY(4)` or `AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO(5)` before
-     * setting this enumerator.
-     */
-    VOICE_CHANGER_EFFECT_BOY = 0x02020300,
-    /** The voice of a young woman.
-     *
-     * @note
-     * - AR recommends using this enumerator to process a female-sounding voice; otherwise, you may not hear the anticipated voice effect.
-     * - To achieve better audio effect quality, AR recommends calling \ref IRtcEngine::setAudioProfile "setAudioProfile" and setting
-     * the `profile` parameter to `AUDIO_PROFILE_MUSIC_HIGH_QUALITY(4)` or `AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO(5)` before
-     * setting this enumerator.
-     */
-    VOICE_CHANGER_EFFECT_SISTER = 0x02020400,
-    /** The voice of a girl.
-     *
-     * @note
-     * - AR recommends using this enumerator to process a female-sounding voice; otherwise, you may not hear the anticipated voice effect.
-     * - To achieve better audio effect quality, AR recommends calling \ref IRtcEngine::setAudioProfile "setAudioProfile" and setting
-     * the `profile` parameter to `AUDIO_PROFILE_MUSIC_HIGH_QUALITY(4)` or `AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO(5)` before
-     * setting this enumerator.
-     */
-    VOICE_CHANGER_EFFECT_GIRL = 0x02020500,
-    /** The voice of Pig King, a character in Journey to the West who has a voice like a growling bear.
-     *
-     * @note To achieve better audio effect quality, AR recommends calling \ref IRtcEngine::setAudioProfile "setAudioProfile" and
-     * setting the `profile` parameter to `AUDIO_PROFILE_MUSIC_HIGH_QUALITY(4)` or `AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO(5)` before
-     * setting this enumerator.
-     */
-    VOICE_CHANGER_EFFECT_PIGKING = 0x02020600,
-    /** The voice of Hulk.
-     *
-     * @note To achieve better audio effect quality, AR recommends calling \ref IRtcEngine::setAudioProfile "setAudioProfile" and
-     * setting the `profile` parameter to `AUDIO_PROFILE_MUSIC_HIGH_QUALITY(4)` or `AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO(5)` before
-     * setting this enumerator.
-     */
-    VOICE_CHANGER_EFFECT_HULK = 0x02020700,
-    /** An audio effect typical of R&B music.
-     *
-     * @note To achieve better audio effect quality, AR recommends calling \ref IRtcEngine::setAudioProfile "setAudioProfile" and
-     * setting the `profile` parameter to `AUDIO_PROFILE_MUSIC_HIGH_QUALITY(4)` or `AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO(5)` before
-     * setting this enumerator.
-     */
-    STYLE_TRANSFORMATION_RNB = 0x02030100,
-    /** An audio effect typical of popular music.
-     *
-     * @note To achieve better audio effect quality, AR recommends calling \ref IRtcEngine::setAudioProfile "setAudioProfile" and
-     * setting the `profile` parameter to `AUDIO_PROFILE_MUSIC_HIGH_QUALITY(4)` or `AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO(5)` before
-     * setting this enumerator.
-     */
-    STYLE_TRANSFORMATION_POPULAR = 0x02030200,
-    /** A pitch correction effect that corrects the user's pitch based on the pitch of the natural C major scale.
-     * To change the basic mode and tonic pitch, call \ref IRtcEngine::setAudioEffectParameters "setAudioEffectParameters" after this method.
-     *
-     * @note To achieve better audio effect quality, AR recommends calling \ref IRtcEngine::setAudioProfile "setAudioProfile" and
-     * setting the `profile` parameter to `AUDIO_PROFILE_MUSIC_HIGH_QUALITY(4)` or `AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO(5)` before
-     * setting this enumerator.
-     */
-    PITCH_CORRECTION = 0x02040100
-};
-/** Audio codec profile types. The default value is LC_ACC. */
-enum AUDIO_CODEC_PROFILE_TYPE
-{
-    /** 0: LC-AAC, which is the low-complexity audio codec type. */
-    AUDIO_CODEC_PROFILE_LC_AAC = 0,
-    /** 1: HE-AAC, which is the high-efficiency audio codec type. */
-    AUDIO_CODEC_PROFILE_HE_AAC = 1,
-};
-
-/** Remote audio states.
- */
-enum REMOTE_AUDIO_STATE
-{
-      /** 0: The remote audio is in the default state, probably due to
-       * #REMOTE_AUDIO_REASON_LOCAL_MUTED (3),
-       * #REMOTE_AUDIO_REASON_REMOTE_MUTED (5), or
-       * #REMOTE_AUDIO_REASON_REMOTE_OFFLINE (7).
-       */
-      REMOTE_AUDIO_STATE_STOPPED = 0,  // Default state, audio is started or remote user disabled/muted audio stream
-      /** 1: The first remote audio packet is received.
-       */
-      REMOTE_AUDIO_STATE_STARTING = 1,  // The first audio frame packet has been received
-      /** 2: The remote audio stream is decoded and plays normally, probably
-       * due to #REMOTE_AUDIO_REASON_NETWORK_RECOVERY (2),
-       * #REMOTE_AUDIO_REASON_LOCAL_UNMUTED (4), or
-       * #REMOTE_AUDIO_REASON_REMOTE_UNMUTED (6).
-       */
-      REMOTE_AUDIO_STATE_DECODING = 2,  // The first remote audio frame has been decoded or fronzen state ends
-      /** 3: The remote audio is frozen, probably due to
-       * #REMOTE_AUDIO_REASON_NETWORK_CONGESTION (1).
-       */
-      REMOTE_AUDIO_STATE_FROZEN = 3,    // Remote audio is frozen, probably due to network issue
-      /** 4: The remote audio fails to start, probably due to
-       * #REMOTE_AUDIO_REASON_INTERNAL (0).
-       */
-      REMOTE_AUDIO_STATE_FAILED = 4,    // Remote audio play failed
-};
-
-/** Remote audio state reasons.
- */
-enum REMOTE_AUDIO_STATE_REASON
-{
-      /** 0: Internal reasons.
-       */
-      REMOTE_AUDIO_REASON_INTERNAL = 0,
-      /** 1: Network congestion.
-       */
-      REMOTE_AUDIO_REASON_NETWORK_CONGESTION = 1,
-      /** 2: Network recovery.
-       */
-      REMOTE_AUDIO_REASON_NETWORK_RECOVERY = 2,
-      /** 3: The local user stops receiving the remote audio stream or
-       * disables the audio module.
-       */
-      REMOTE_AUDIO_REASON_LOCAL_MUTED = 3,
-      /** 4: The local user resumes receiving the remote audio stream or
-       * enables the audio module.
-       */
-      REMOTE_AUDIO_REASON_LOCAL_UNMUTED = 4,
-      /** 5: The remote user stops sending the audio stream or disables the
-       * audio module.
-       */
-      REMOTE_AUDIO_REASON_REMOTE_MUTED = 5,
-      /** 6: The remote user resumes sending the audio stream or enables the
-       * audio module.
-       */
-      REMOTE_AUDIO_REASON_REMOTE_UNMUTED = 6,
-      /** 7: The remote user leaves the channel.
-       */
-      REMOTE_AUDIO_REASON_REMOTE_OFFLINE = 7,
-};
-
-/** Remote video states. */
-// enum REMOTE_VIDEO_STATE
-// {
-//     // REMOTE_VIDEO_STATE_STOPPED is not used at this version. Ignore this value.
-//     // REMOTE_VIDEO_STATE_STOPPED = 0,  // Default state, video is started or remote user disabled/muted video stream
-//       /** 1: The remote video is playing. */
-//       REMOTE_VIDEO_STATE_RUNNING = 1,  // Running state, remote video can be displayed normally
-//       /** 2: The remote video is frozen. */
-//       REMOTE_VIDEO_STATE_FROZEN = 2,    // Remote video is frozen, probably due to network issue.
-// };
-
-/** The state of the remote video. */
-enum REMOTE_VIDEO_STATE {
-    /** 0: The remote video is in the default state, probably due to #REMOTE_VIDEO_STATE_REASON_LOCAL_MUTED (3), #REMOTE_VIDEO_STATE_REASON_REMOTE_MUTED (5), or #REMOTE_VIDEO_STATE_REASON_REMOTE_OFFLINE (7).
-     */
-    REMOTE_VIDEO_STATE_STOPPED = 0,
-
-    /** 1: The first remote video packet is received.
-     */
-    REMOTE_VIDEO_STATE_STARTING = 1,
-
-    /** 2: The remote video stream is decoded and plays normally, probably due to #REMOTE_VIDEO_STATE_REASON_NETWORK_RECOVERY (2), #REMOTE_VIDEO_STATE_REASON_LOCAL_UNMUTED (4), #REMOTE_VIDEO_STATE_REASON_REMOTE_UNMUTED (6), or #REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK_RECOVERY (9).
-     */
-    REMOTE_VIDEO_STATE_DECODING = 2,
-
-    /** 3: The remote video is frozen, probably due to #REMOTE_VIDEO_STATE_REASON_NETWORK_CONGESTION (1) or #REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK (8).
-     */
-    REMOTE_VIDEO_STATE_FROZEN = 3,
-
-    /** 4: The remote video fails to start, probably due to #REMOTE_VIDEO_STATE_REASON_INTERNAL (0).
-     */
-    REMOTE_VIDEO_STATE_FAILED = 4
-};
-/** The publishing state.
- */
-enum STREAM_PUBLISH_STATE {
-    /** 0: The initial publishing state after joining the channel.
-     */
-    PUB_STATE_IDLE = 0,
-    /** 1: Fails to publish the local stream. Possible reasons:
-     * - The local user calls \ref IRtcEngine::muteLocalAudioStream "muteLocalAudioStream(true)" or \ref IRtcEngine::muteLocalVideoStream "muteLocalVideoStream(true)" to stop sending local streams.
-     * - The local user calls \ref IRtcEngine::disableAudio "disableAudio" or \ref IRtcEngine::disableVideo "disableVideo" to disable the entire audio or video module.
-     * - The local user calls \ref IRtcEngine::enableLocalAudio "enableLocalAudio(false)" or \ref IRtcEngine::enableLocalVideo "enableLocalVideo(false)" to disable the local audio sampling or video capturing.
-     * - The role of the local user is `AUDIENCE`.
-     */
-    PUB_STATE_NO_PUBLISHED = 1,
-    /** 2: Publishing.
-     */
-    PUB_STATE_PUBLISHING = 2,
-    /** 3: Publishes successfully.
-     */
-    PUB_STATE_PUBLISHED = 3
-};
-/** The subscribing state.
- */
-enum STREAM_SUBSCRIBE_STATE {
-    /** 0: The initial subscribing state after joining the channel.
-     */
-    SUB_STATE_IDLE = 0,
-    /** 1: Fails to subscribe to the remote stream. Possible reasons:
-     * - The remote user:
-     *  - Calls \ref IRtcEngine::muteLocalAudioStream "muteLocalAudioStream(true)" or \ref IRtcEngine::muteLocalVideoStream "muteLocalVideoStream(true)" to stop sending local streams.
-     *  - Calls \ref IRtcEngine::disableAudio "disableAudio" or \ref IRtcEngine::disableVideo "disableVideo" to disable the entire audio or video modules.
-     *  - Calls \ref IRtcEngine::enableLocalAudio "enableLocalAudio(false)" or \ref IRtcEngine::enableLocalVideo "enableLocalVideo(false)" to disable the local audio sampling or video capturing.
-     *  - The role of the remote user is `AUDIENCE`.
-     * - The local user calls the following methods to stop receiving remote streams:
-     *  - Calls \ref IRtcEngine::muteRemoteAudioStream "muteRemoteAudioStream(true)", \ref IRtcEngine::muteAllRemoteAudioStreams "muteAllRemoteAudioStreams(true)", or \ref IRtcEngine::setDefaultMuteAllRemoteAudioStreams "setDefaultMuteAllRemoteAudioStreams(true)" to stop receiving remote audio streams.
-     *  - Calls \ref IRtcEngine::muteRemoteVideoStream "muteRemoteVideoStream(true)", \ref IRtcEngine::muteAllRemoteVideoStreams "muteAllRemoteVideoStreams(true)", or \ref IRtcEngine::setDefaultMuteAllRemoteVideoStreams "setDefaultMuteAllRemoteVideoStreams(true)" to stop receiving remote video streams.
-     */
-    SUB_STATE_NO_SUBSCRIBED = 1,
-    /** 2: Subscribing.
-     */
-    SUB_STATE_SUBSCRIBING = 2,
-    /** 3: Subscribes to and receives the remote stream successfully.
-     */
-    SUB_STATE_SUBSCRIBED = 3
-};
-
-/** The remote video frozen type. */
-enum XLA_REMOTE_VIDEO_FROZEN_TYPE {
-    /** 0: 500ms video frozen type.
-     */
-    XLA_REMOTE_VIDEO_FROZEN_500MS = 0,
-    /** 1: 200ms video frozen type.
-     */
-    XLA_REMOTE_VIDEO_FROZEN_200MS = 1,
-    /** 2: 600ms video frozen type.
-     */
-    XLA_REMOTE_VIDEO_FROZEN_600MS = 2,
-    /** 3: max video frozen type.
-     */
-    XLA_REMOTE_VIDEO_FROZEN_TYPE_MAX = 3,
-};
-
-/** The remote audio frozen type. */
-enum XLA_REMOTE_AUDIO_FROZEN_TYPE {
-    /** 0: 80ms audio frozen.
-     */
-    XLA_REMOTE_AUDIO_FROZEN_80MS = 0,
-    /** 1: 200ms audio frozen.
-     */
-    XLA_REMOTE_AUDIO_FROZEN_200MS = 1,
-    /** 2: max audio frozen type.
-     */
-    XLA_REMOTE_AUDIO_FROZEN_TYPE_MAX = 2,
-};
-
-/** The reason for the remote video state change. */
-enum REMOTE_VIDEO_STATE_REASON {
-    /** 0: The SDK reports this reason when the video state changes.
-     */
-    REMOTE_VIDEO_STATE_REASON_INTERNAL = 0,
-
-    /** 1: Network congestion.
-     */
-    REMOTE_VIDEO_STATE_REASON_NETWORK_CONGESTION = 1,
-
-    /** 2: Network recovery.
-     */
-    REMOTE_VIDEO_STATE_REASON_NETWORK_RECOVERY = 2,
-
-    /** 3: The local user stops receiving the remote video stream or disables the video module.
-     */
-    REMOTE_VIDEO_STATE_REASON_LOCAL_MUTED = 3,
-
-    /** 4: The local user resumes receiving the remote video stream or enables the video module.
-     */
-    REMOTE_VIDEO_STATE_REASON_LOCAL_UNMUTED = 4,
-
-    /** 5: The remote user stops sending the video stream or disables the video module.
-     */
-    REMOTE_VIDEO_STATE_REASON_REMOTE_MUTED = 5,
-
-    /** 6: The remote user resumes sending the video stream or enables the video module.
-     */
-    REMOTE_VIDEO_STATE_REASON_REMOTE_UNMUTED = 6,
-
-    /** 7: The remote user leaves the channel.
-     */
-    REMOTE_VIDEO_STATE_REASON_REMOTE_OFFLINE = 7,
-
-    /** 8: The remote audio-and-video stream falls back to the audio-only stream due to poor network conditions.
-     */
-    REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK = 8,
-
-    /** 9: The remote audio-only stream switches back to the audio-and-video stream after the network conditions improve.
-     */
-    REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK_RECOVERY = 9
-
-};
-
-/** Video frame rates. */
-enum FRAME_RATE
-{
-      /** 1: 1 fps */
-    FRAME_RATE_FPS_1 = 1,
-        /** 7: 7 fps */
-    FRAME_RATE_FPS_7 = 7,
-      /** 10: 10 fps */
-    FRAME_RATE_FPS_10 = 10,
-    /** 15: 15 fps */
-    FRAME_RATE_FPS_15 = 15,
-        /** 24: 24 fps */
-    FRAME_RATE_FPS_24 = 24,
-    /** 30: 30 fps */
-    FRAME_RATE_FPS_30 = 30,
-    /** 60: 60 fps (Windows and macOS only) */
-    FRAME_RATE_FPS_60 = 60,
-};
-
-/** Video output orientation modes.
- */
-enum ORIENTATION_MODE {
-  /** 0: (Default) Adaptive mode.
-
-   The video encoder adapts to the orientation mode of the video input device.
-
-   - If the width of the captured video from the SDK is greater than the height, the encoder sends the video in landscape mode. The encoder also sends the rotational information of the video, and the receiver uses the rotational information to rotate the received video.
-   - When you use a custom video source, the output video from the encoder inherits the orientation of the original video. If the original video is in portrait mode, the output video from the encoder is also in portrait mode. The encoder also sends the rotational information of the video to the receiver.
-   */
-    ORIENTATION_MODE_ADAPTIVE = 0,
-    /** 1: Landscape mode.
-
-     The video encoder always sends the video in landscape mode. The video encoder rotates the original video before sending it and the rotational infomation is 0. This mode applies to scenarios involving CDN live streaming.
-     */
-    ORIENTATION_MODE_FIXED_LANDSCAPE = 1,
-    /** 2: Portrait mode.
-
-     The video encoder always sends the video in portrait mode. The video encoder rotates the original video before sending it and the rotational infomation is 0. This mode applies to scenarios involving CDN live streaming.
-     */
-    ORIENTATION_MODE_FIXED_PORTRAIT = 2,
-};
-
-/** Video degradation preferences when the bandwidth is a constraint. */
-enum DEGRADATION_PREFERENCE {
-    /** 0: (Default) Degrade the frame rate in order to maintain the video quality. */
-    MAINTAIN_QUALITY = 0,
-    /** 1: Degrade the video quality in order to maintain the frame rate. */
-    MAINTAIN_FRAMERATE = 1,
-    /** 2: (For future use) Maintain a balance between the frame rate and video quality. */
-    MAINTAIN_BALANCED = 2,
-};
-
-/** Stream fallback options. */
-enum STREAM_FALLBACK_OPTIONS
-{
-    /** 0: No fallback behavior for the local/remote video stream when the uplink/downlink network conditions are poor. The quality of the stream is not guaranteed. */
-    STREAM_FALLBACK_OPTION_DISABLED = 0,
-    /** 1: Under poor downlink network conditions, the remote video stream, to which you subscribe, falls back to the low-stream (low resolution and low bitrate) video. You can set this option only in the \ref IRtcEngine::setRemoteSubscribeFallbackOption "setRemoteSubscribeFallbackOption" method. Nothing happens when you set this in the \ref IRtcEngine::setLocalPublishFallbackOption "setLocalPublishFallbackOption" method. */
-    STREAM_FALLBACK_OPTION_VIDEO_STREAM_LOW = 1,
-    /** 2: Under poor uplink network conditions, the published video stream falls back to audio only.
-
-    Under poor downlink network conditions, the remote video stream, to which you subscribe, first falls back to the low-stream (low resolution and low bitrate) video; and then to an audio-only stream if the network conditions worsen.*/
-    STREAM_FALLBACK_OPTION_AUDIO_ONLY = 2,
-};
-
- /** Camera capturer configuration.
- */
- enum CAPTURER_OUTPUT_PREFERENCE
- {
-     /** 0: (Default) self-adapts the camera output parameters to the system performance and network conditions to balance CPU consumption and video preview quality.
-     */
-     CAPTURER_OUTPUT_PREFERENCE_AUTO = 0,
-     /** 1: Prioritizes the system performance. The SDK chooses the dimension and frame rate of the local camera capture closest to those set by \ref IRtcEngine::setVideoEncoderConfiguration "setVideoEncoderConfiguration".
-     */
-     CAPTURER_OUTPUT_PREFERENCE_PERFORMANCE = 1,
-     /** 2: Prioritizes the local preview quality. The SDK chooses higher camera output parameters to improve the local video preview quality. This option requires extra CPU and RAM usage for video pre-processing.
-     */
-     CAPTURER_OUTPUT_PREFERENCE_PREVIEW = 2,
-     /** 3: Allows you to customize the width and height of the video image captured by the local camera.
-      *
-      * @since v3.3.0
-      */
-     CAPTURER_OUTPUT_PREFERENCE_MANUAL = 3,
- };
-
-/** The priority of the remote user.
- */
-enum PRIORITY_TYPE
-{
-  /** 50: The user's priority is high.
-   */
-  PRIORITY_HIGH = 50,
-  /** 100: (Default) The user's priority is normal.
-  */
-  PRIORITY_NORMAL = 100,
-};
-
-/** Connection states. */
-enum CONNECTION_STATE_TYPE
-{
-  /** 1: The SDK is disconnected from AR's edge server.
-
-   - This is the initial state before calling the \ref ar::rtc::IRtcEngine::joinChannel "joinChannel" method.
-   - The SDK also enters this state when the application calls the \ref ar::rtc::IRtcEngine::leaveChannel "leaveChannel" method.
-   */
-  CONNECTION_STATE_DISCONNECTED = 1,
-  /** 2: The SDK is connecting to AR's edge server.
-
-   - When the application calls the \ref ar::rtc::IRtcEngine::joinChannel "joinChannel" method, the SDK starts to establish a connection to the specified channel, triggers the \ref ar::rtc::IRtcEngineEventHandler::onConnectionStateChanged "onConnectionStateChanged" callback, and switches to the #CONNECTION_STATE_CONNECTING state.
-   - When the SDK successfully joins the channel, it triggers the \ref ar::rtc::IRtcEngineEventHandler::onConnectionStateChanged "onConnectionStateChanged" callback and switches to the #CONNECTION_STATE_CONNECTED state.
-   - After the SDK joins the channel and when it finishes initializing the media engine, the SDK triggers the \ref ar::rtc::IRtcEngineEventHandler::onJoinChannelSuccess "onJoinChannelSuccess" callback.
-   */
-  CONNECTION_STATE_CONNECTING = 2,
-  /** 3: The SDK is connected to AR's edge server and has joined a channel. You can now publish or subscribe to a media stream in the channel.
-
-   If the connection to the channel is lost because, for example, if the network is down or switched, the SDK automatically tries to reconnect and triggers:
-   - The \ref ar::rtc::IRtcEngineEventHandler::onConnectionInterrupted "onConnectionInterrupted" callback (deprecated).
-   - The \ref ar::rtc::IRtcEngineEventHandler::onConnectionStateChanged "onConnectionStateChanged" callback and switches to the #CONNECTION_STATE_RECONNECTING state.
-   */
-  CONNECTION_STATE_CONNECTED = 3,
-  /** 4: The SDK keeps rejoining the channel after being disconnected from a joined channel because of network issues.
-
-   - If the SDK cannot rejoin the channel within 10 seconds after being disconnected from AR's edge server, the SDK triggers the \ref ar::rtc::IRtcEngineEventHandler::onConnectionLost "onConnectionLost" callback, stays in the #CONNECTION_STATE_RECONNECTING state, and keeps rejoining the channel.
-   - If the SDK fails to rejoin the channel 20 minutes after being disconnected from AR's edge server, the SDK triggers the \ref ar::rtc::IRtcEngineEventHandler::onConnectionStateChanged "onConnectionStateChanged" callback, switches to the #CONNECTION_STATE_FAILED state, and stops rejoining the channel.
-   */
-  CONNECTION_STATE_RECONNECTING = 4,
-  /** 5: The SDK fails to connect to AR's edge server or join the channel.
-
-   You must call the \ref ar::rtc::IRtcEngine::leaveChannel "leaveChannel" method to leave this state, and call the \ref ar::rtc::IRtcEngine::joinChannel "joinChannel" method again to rejoin the channel.
-
-   If the SDK is banned from joining the channel by AR's edge server (through the RESTful API), the SDK triggers the \ref ar::rtc::IRtcEngineEventHandler::onConnectionBanned "onConnectionBanned" (deprecated) and \ref ar::rtc::IRtcEngineEventHandler::onConnectionStateChanged "onConnectionStateChanged" callbacks.
-   */
-  CONNECTION_STATE_FAILED = 5,
-};
-
-/** Reasons for a connection state change. */
-enum CONNECTION_CHANGED_REASON_TYPE
-{
-  /** 0: The SDK is connecting to AR's edge server. */
-  CONNECTION_CHANGED_CONNECTING = 0,
-  /** 1: The SDK has joined the channel successfully. */
-  CONNECTION_CHANGED_JOIN_SUCCESS = 1,
-  /** 2: The connection between the SDK and AR's edge server is interrupted. */
-  CONNECTION_CHANGED_INTERRUPTED = 2,
-  /** 3: The connection between the SDK and AR's edge server is banned by AR's edge server. */
-  CONNECTION_CHANGED_BANNED_BY_SERVER = 3,
-  /** 4: The SDK fails to join the channel for more than 20 minutes and stops reconnecting to the channel. */
-  CONNECTION_CHANGED_JOIN_FAILED = 4,
-  /** 5: The SDK has left the channel. */
-  CONNECTION_CHANGED_LEAVE_CHANNEL = 5,
-  /** 6: The connection failed since Appid is not valid. */
-  CONNECTION_CHANGED_INVALID_APP_ID = 6,
-  /** 7: The connection failed since channel name is not valid. */
-  CONNECTION_CHANGED_INVALID_CHANNEL_NAME = 7,
-  /** 8: The connection failed since token is not valid, possibly because:
-
-   - The App Certificate for the project is enabled in Console, but you do not use Token when joining the channel. If you enable the App Certificate, you must use a token to join the channel.
-   - The uid that you specify in the \ref ar::rtc::IRtcEngine::joinChannel "joinChannel" method is different from the uid that you pass for generating the token.
-   */
-  CONNECTION_CHANGED_INVALID_TOKEN = 8,
-  /** 9: The connection failed since token is expired. */
-  CONNECTION_CHANGED_TOKEN_EXPIRED = 9,
-  /** 10: The connection is rejected by server. This error usually occurs in the following situations:
-   * - When the user is already in the channel, and still calls the method to join the channel, for example,
-   * \ref IRtcEngine::joinChannel "joinChannel".
-   * - When the user tries to join a channel during \ref IRtcEngine::startEchoTest "startEchoTest". Once you
-   * call \ref IRtcEngine::startEchoTest "startEchoTest", you need to call \ref IRtcEngine::stopEchoTest "stopEchoTest" before joining a channel.
-   *
-   */
-  CONNECTION_CHANGED_REJECTED_BY_SERVER = 10,
-  /** 11: The connection changed to reconnecting since SDK has set a proxy server. */
-  CONNECTION_CHANGED_SETTING_PROXY_SERVER = 11,
-  /** 12: When SDK is in connection failed, the renew token operation will make it connecting. */
-  CONNECTION_CHANGED_RENEW_TOKEN = 12,
-  /** 13: The IP Address of SDK client has changed. i.e., Network type or IP/Port changed by network operator might change client IP address. */
-  CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED = 13,
-  /** 14: Timeout for the keep-alive of the connection between the SDK and AR's edge server. The connection state changes to CONNECTION_STATE_RECONNECTING(4). */
-  CONNECTION_CHANGED_KEEP_ALIVE_TIMEOUT = 14,
-};
-
-/** Network type. */
-enum NETWORK_TYPE
-{
-  /** -1: The network type is unknown. */
-  NETWORK_TYPE_UNKNOWN = -1,
-  /** 0: The SDK disconnects from the network. */
-  NETWORK_TYPE_DISCONNECTED = 0,
-  /** 1: The network type is LAN. */
-  NETWORK_TYPE_LAN = 1,
-  /** 2: The network type is Wi-Fi(including hotspots). */
-  NETWORK_TYPE_WIFI = 2,
-  /** 3: The network type is mobile 2G. */
-  NETWORK_TYPE_MOBILE_2G = 3,
-  /** 4: The network type is mobile 3G. */
-  NETWORK_TYPE_MOBILE_3G = 4,
-  /** 5: The network type is mobile 4G. */
-  NETWORK_TYPE_MOBILE_4G = 5,
-};
-
-/** States of the last-mile network probe test. */
-enum LASTMILE_PROBE_RESULT_STATE {
-  /** 1: The last-mile network probe test is complete. */
-  LASTMILE_PROBE_RESULT_COMPLETE = 1,
-  /** 2: The last-mile network probe test is incomplete and the bandwidth estimation is not available, probably due to limited test resources. */
-  LASTMILE_PROBE_RESULT_INCOMPLETE_NO_BWE = 2,
-  /** 3: The last-mile network probe test is not carried out, probably due to poor network conditions. */
-  LASTMILE_PROBE_RESULT_UNAVAILABLE = 3
-};
-/** Audio output routing. */
-enum AUDIO_ROUTE_TYPE {
-    /** Default.
-     */
-    AUDIO_ROUTE_DEFAULT = -1,
-    /** Headset.
-     */
-    AUDIO_ROUTE_HEADSET = 0,
-    /** Earpiece.
-     */
-    AUDIO_ROUTE_EARPIECE = 1,
-    /** Headset with no microphone.
-     */
-    AUDIO_ROUTE_HEADSET_NO_MIC = 2,
-    /** Speakerphone.
-     */
-    AUDIO_ROUTE_SPEAKERPHONE = 3,
-    /** Loudspeaker.
-     */
-    AUDIO_ROUTE_LOUDSPEAKER = 4,
-    /** Bluetooth headset.
-     */
-    AUDIO_ROUTE_BLUETOOTH = 5,
-    /** USB peripheral.
-     */
-    AUDIO_ROUTE_USB = 6,
-    /** HDMI peripheral.
-     */
-    AUDIO_ROUTE_HDMI = 7,
-    /** DisplayPort peripheral.
-     */
-    AUDIO_ROUTE_DISPLAYPORT = 8,
-    /** Apple AirPlay.
-     */
-    AUDIO_ROUTE_AIRPLAY = 9,
-};
-
-#if (defined(__APPLE__) && TARGET_OS_IOS)
-/** Audio session restriction. */
-enum AUDIO_SESSION_OPERATION_RESTRICTION {
-    /** No restriction, the SDK has full control of the audio session operations. */
-    AUDIO_SESSION_OPERATION_RESTRICTION_NONE = 0,
-    /** The SDK does not change the audio session category. */
-    AUDIO_SESSION_OPERATION_RESTRICTION_SET_CATEGORY = 1,
-    /** The SDK does not change any setting of the audio session (category, mode, categoryOptions). */
-    AUDIO_SESSION_OPERATION_RESTRICTION_CONFIGURE_SESSION = 1 << 1,
-    /** The SDK keeps the audio session active when leaving a channel. */
-    AUDIO_SESSION_OPERATION_RESTRICTION_DEACTIVATE_SESSION = 1 << 2,
-    /** The SDK does not configure the audio session anymore. */
-    AUDIO_SESSION_OPERATION_RESTRICTION_ALL = 1 << 7,
-};
-#endif
-
-#if defined(__ANDROID__) || (defined(__APPLE__) && TARGET_OS_IOS)
-enum CAMERA_DIRECTION {
-    /** The rear camera. */
-    CAMERA_REAR = 0,
-    /** The front camera. */
-    CAMERA_FRONT = 1,
-};
-#endif
-
-/** The uplink or downlink last-mile network probe test result. */
-struct LastmileProbeOneWayResult {
-  /** The packet loss rate (%). */
-  unsigned int packetLossRate;
-  /** The network jitter (ms). */
-  unsigned int jitter;
-  /* The estimated available bandwidth (bps). */
-  unsigned int availableBandwidth;
-};
-
-/** The uplink and downlink last-mile network probe test result. */
-struct LastmileProbeResult{
-  /** The state of the probe test. */
-  LASTMILE_PROBE_RESULT_STATE state;
-  /** The uplink last-mile network probe test result. */
-  LastmileProbeOneWayResult uplinkReport;
-  /** The downlink last-mile network probe test result. */
-  LastmileProbeOneWayResult downlinkReport;
-  /** The round-trip delay time (ms). */
-  unsigned int rtt;
-};
-
-/** Configurations of the last-mile network probe test. */
-struct LastmileProbeConfig {
-  /** Sets whether or not to test the uplink network. Some users, for example, the audience in a `LIVE_BROADCASTING` channel, do not need such a test:
-  - true: test.
-  - false: do not test. */
-  bool probeUplink;
-  /** Sets whether or not to test the downlink network:
-  - true: test.
-  - false: do not test. */
-  bool probeDownlink;
-  /** The expected maximum sending bitrate (bps) of the local user. The value ranges between 100000 and 5000000. We recommend setting this parameter according to the bitrate value set by \ref IRtcEngine::setVideoEncoderConfiguration "setVideoEncoderConfiguration". */
-  unsigned int expectedUplinkBitrate;
-  /** The expected maximum receiving bitrate (bps) of the local user. The value ranges between 100000 and 5000000. */
-  unsigned int expectedDownlinkBitrate;
-};
-
-/** Properties of the audio volume information.
-
- An array containing the user ID and volume information for each speaker.
- */
-struct AudioVolumeInfo
-{
-   /**
-    User ID of the speaker. The uid of the local user is 0.
-    */
-    uid_t uid;
-   /** The volume of the speaker. The volume ranges between 0 (lowest volume) and 255 (highest volume).
-    */
-    unsigned int volume;
-    /** Voice activity status of the local user.
-     * - 0: The local user is not speaking.
-     * - 1: The local user is speaking.
-     * 
-     * @note
-     * - The `vad` parameter cannot report the voice activity status of the remote users. In the remote users' callback, `vad` = 0.
-     * - Ensure that you set `report_vad`(true) in the \ref ar::rtc::IRtcEngine::enableAudioVolumeIndication(int, int, bool) "enableAudioVolumeIndication" method to enable the voice activity detection of the local user.
-     */
-    unsigned int vad;
-    /** The channel ID, which indicates which channel the speaker is in.
-     */
-    const char * channelId;
-};
-/// @cond
-/** The detailed options of a user.
- */
-struct ClientRoleOptions
-{
-    /** The latency level of an audience member in a live interactive streaming. See #AUDIENCE_LATENCY_LEVEL_TYPE.
-     */
-    AUDIENCE_LATENCY_LEVEL_TYPE audienceLatencyLevel;
-    ClientRoleOptions()
-        : audienceLatencyLevel(AUDIENCE_LATENCY_LEVEL_ULTRA_LOW_LATENCY) {}
-};
-/// @endcond
-/** Statistics of the channel.
- */
-struct RtcStats
-{
-  /**
-   Call duration (s), represented by an aggregate value.
-   */
-    unsigned int duration;
-    /**
-     Total number of bytes transmitted, represented by an aggregate value.
-     */
-    unsigned int txBytes;
-    /**
-     Total number of bytes received, represented by an aggregate value.
-     */
-    unsigned int rxBytes;
-     /** Total number of audio bytes sent (bytes), represented
-     * by an aggregate value.
-     */
-    unsigned int txAudioBytes;
-    /** Total number of video bytes sent (bytes), represented
-     * by an aggregate value.
-     */
-    unsigned int txVideoBytes;
-    /** Total number of audio bytes received (bytes) before
-     * network countermeasures, represented by an aggregate value.
-     */
-    unsigned int rxAudioBytes;
-    /** Total number of video bytes received (bytes),
-     * represented by an aggregate value.
-     */
-    unsigned int rxVideoBytes;
-
-    /**
-     Transmission bitrate (Kbps), represented by an instantaneous value.
-     */
-    unsigned short txKBitRate;
-    /**
-     Receive bitrate (Kbps), represented by an instantaneous value.
-     */
-    unsigned short rxKBitRate;
-    /**
-     Audio receive bitrate (Kbps), represented by an instantaneous value.
-     */
-    unsigned short rxAudioKBitRate;
-    /**
-     Audio transmission bitrate (Kbps), represented by an instantaneous value.
-     */
-    unsigned short txAudioKBitRate;
-    /**
-     Video receive bitrate (Kbps), represented by an instantaneous value.
-     */
-    unsigned short rxVideoKBitRate;
-    /**
-     Video transmission bitrate (Kbps), represented by an instantaneous value.
-     */
-    unsigned short txVideoKBitRate;
-    /** Client-server latency (ms)
-     */
-    unsigned short lastmileDelay;
-    /** The packet loss rate (%) from the local client to AR's edge server,
-     * before using the anti-packet-loss method.
-     */
-    unsigned short txPacketLossRate;
-    /** The packet loss rate (%) from AR's edge server to the local client,
-     * before using the anti-packet-loss method.
-     */
-    unsigned short rxPacketLossRate;
-    /** Number of users in the channel.
-
-     - Communication profile: The number of users in the channel.
-     - Live broadcast profile:
-
-         -  If the local user is an audience: The number of users in the channel = The number of hosts in the channel + 1.
-         -  If the user is a host: The number of users in the channel = The number of hosts in the channel.
-     */
-    unsigned int userCount;
-    /**
-     Application CPU usage (%).
-     */
-    double cpuAppUsage;
-    /**
-     System CPU usage (%).
-     */
-    double cpuTotalUsage;
-    /** The round-trip time delay from the client to the local router.
-     */
-    int gatewayRtt;
-    /**
-     The memory usage ratio of the app (%).
-     @note This value is for reference only. Due to system limitations, you may not get the value of this member.
-     */
-    double memoryAppUsageRatio;
-    /**
-     The memory usage ratio of the system (%).
-     @note This value is for reference only. Due to system limitations, you may not get the value of this member.
-     */
-    double memoryTotalUsageRatio;
-    /**
-     The memory usage of the app (KB).
-     @note This value is for reference only. Due to system limitations, you may not get the value of this member.
-     */
-    int memoryAppUsageInKbytes;
-  RtcStats()
-      : duration(0)
-      , txBytes(0)
-      , rxBytes(0)
-      , txAudioBytes(0)
-      , txVideoBytes(0)
-      , rxAudioBytes(0)
-      , rxVideoBytes(0)
-      , txKBitRate(0)
-      , rxKBitRate(0)
-      , rxAudioKBitRate(0)
-      , txAudioKBitRate(0)
-      , rxVideoKBitRate(0)
-      , txVideoKBitRate(0)
-      , lastmileDelay(0)
-      , txPacketLossRate(0)
-      , rxPacketLossRate(0)
-      , userCount(0)
-      , cpuAppUsage(0)
-      , cpuTotalUsage(0)
-      , gatewayRtt(0)
-      , memoryAppUsageRatio(0)
-      , memoryTotalUsageRatio(0)
-      , memoryAppUsageInKbytes(0) {}
-};
-
-/** Quality change of the local video in terms of target frame rate and target bit rate since last count.
-  */
-enum QUALITY_ADAPT_INDICATION {
-  /** The quality of the local video stays the same. */
-  ADAPT_NONE = 0,
-  /** The quality improves because the network bandwidth increases. */
-  ADAPT_UP_BANDWIDTH = 1,
-  /** The quality worsens because the network bandwidth decreases. */
-  ADAPT_DOWN_BANDWIDTH = 2,
-};
-
-/** The error code in CHANNEL_MEDIA_RELAY_ERROR. */
-enum CHANNEL_MEDIA_RELAY_ERROR {
-    /** 0: The state is normal.
-     */
-    RELAY_OK = 0,
-    /** 1: An error occurs in the server response.
-     */
-    RELAY_ERROR_SERVER_ERROR_RESPONSE = 1,
-    /** 2: No server response. You can call the
-     * \ref ar::rtc::IRtcEngine::leaveChannel "leaveChannel" method to
-     * leave the channel.
-     */
-    RELAY_ERROR_SERVER_NO_RESPONSE = 2,
-    /** 3: The SDK fails to access the service, probably due to limited
-     * resources of the server.
-     */
-    RELAY_ERROR_NO_RESOURCE_AVAILABLE = 3,
-    /** 4: Fails to send the relay request.
-     */
-    RELAY_ERROR_FAILED_JOIN_SRC = 4,
-    /** 5: Fails to accept the relay request.
-     */
-    RELAY_ERROR_FAILED_JOIN_DEST = 5,
-    /** 6: The server fails to receive the media stream.
-     */
-    RELAY_ERROR_FAILED_PACKET_RECEIVED_FROM_SRC = 6,
-    /** 7: The server fails to send the media stream.
-     */
-    RELAY_ERROR_FAILED_PACKET_SENT_TO_DEST = 7,
-    /** 8: The SDK disconnects from the server due to poor network
-     * connections. You can call the \ref ar::rtc::IRtcEngine::leaveChannel
-     * "leaveChannel" method to leave the channel.
-     */
-    RELAY_ERROR_SERVER_CONNECTION_LOST = 8,
-    /** 9: An internal error occurs in the server.
-     */
-    RELAY_ERROR_INTERNAL_ERROR = 9,
-    /** 10: The token of the source channel has expired.
-     */
-    RELAY_ERROR_SRC_TOKEN_EXPIRED = 10,
-    /** 11: The token of the destination channel has expired.
-     */
-    RELAY_ERROR_DEST_TOKEN_EXPIRED = 11,
-};
-
-/** The event code in CHANNEL_MEDIA_RELAY_EVENT. */
-enum CHANNEL_MEDIA_RELAY_EVENT {
-    /** 0: The user disconnects from the server due to poor network
-     * connections.
-     */
-    RELAY_EVENT_NETWORK_DISCONNECTED = 0,
-    /** 1: The network reconnects.
-     */
-    RELAY_EVENT_NETWORK_CONNECTED = 1,
-    /** 2: The user joins the source channel.
-     */
-    RELAY_EVENT_PACKET_JOINED_SRC_CHANNEL = 2,
-    /** 3: The user joins the destination channel.
-     */
-    RELAY_EVENT_PACKET_JOINED_DEST_CHANNEL = 3,
-    /** 4: The SDK starts relaying the media stream to the destination channel.
-     */
-    RELAY_EVENT_PACKET_SENT_TO_DEST_CHANNEL = 4,
-    /** 5: The server receives the video stream from the source channel.
-     */
-    RELAY_EVENT_PACKET_RECEIVED_VIDEO_FROM_SRC = 5,
-    /** 6: The server receives the audio stream from the source channel.
-     */
-    RELAY_EVENT_PACKET_RECEIVED_AUDIO_FROM_SRC = 6,
-    /** 7: The destination channel is updated.
-     */
-    RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL = 7,
-    /** 8: The destination channel update fails due to internal reasons.
-     */
-    RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_REFUSED = 8,
-    /** 9: The destination channel does not change, which means that the
-     * destination channel fails to be updated.
-     */
-    RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_NOT_CHANGE = 9,
-    /** 10: The destination channel name is NULL.
-     */
-    RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_IS_NULL = 10,
-    /** 11: The video profile is sent to the server.
-     */
-    RELAY_EVENT_VIDEO_PROFILE_UPDATE = 11,
-};
-
-/** The state code in CHANNEL_MEDIA_RELAY_STATE. */
-enum CHANNEL_MEDIA_RELAY_STATE {
-    /** 0: The SDK is initializing.
-     */
-    RELAY_STATE_IDLE = 0,
-    /** 1: The SDK tries to relay the media stream to the destination channel.
-     */
-    RELAY_STATE_CONNECTING = 1,
-    /** 2: The SDK successfully relays the media stream to the destination
-     * channel.
-     */
-    RELAY_STATE_RUNNING = 2,
-    /** 3: A failure occurs. See the details in code.
-     */
-    RELAY_STATE_FAILURE = 3,
-};
-
-/** Statistics of the local video stream.
- */
-struct LocalVideoStats
-{
-  /** Bitrate (Kbps) sent in the reported interval, which does not include
-   * the bitrate of the retransmission video after packet loss.
-   */
-  int sentBitrate;
-  /** Frame rate (fps) sent in the reported interval, which does not include
-   * the frame rate of the retransmission video after packet loss.
-   */
-  int sentFrameRate;
-  /** The encoder output frame rate (fps) of the local video.
-   */
-  int encoderOutputFrameRate;
-  /** The render output frame rate (fps) of the local video.
-   */
-  int rendererOutputFrameRate;
-  /** The target bitrate (Kbps) of the current encoder. This value is estimated by the SDK based on the current network conditions.
-    */
-  int targetBitrate;
-  /** The target frame rate (fps) of the current encoder.
-    */
-  int targetFrameRate;
-  /** Quality change of the local video in terms of target frame rate and
-   * target bit rate in this reported interval. See #QUALITY_ADAPT_INDICATION.
-   */
-  QUALITY_ADAPT_INDICATION qualityAdaptIndication;
-  /** The encoding bitrate (Kbps), which does not include the bitrate of the
-   * re-transmission video after packet loss.
-   */
-  int encodedBitrate;
-  /** The width of the encoding frame (px).
-   */
-  int encodedFrameWidth;
-  /** The height of the encoding frame (px).
-   */
-  int encodedFrameHeight;
-  /** The value of the sent frames, represented by an aggregate value.
-   */
-  int encodedFrameCount;
-  /** The codec type of the local video:
-   * - VIDEO_CODEC_VP8 = 1: VP8.
-   * - VIDEO_CODEC_H264 = 2: (Default) H.264.
-   */
-  VIDEO_CODEC_TYPE codecType;
-  /** The video packet loss rate (%) from the local client to the AR edge server before applying the anti-packet loss strategies.
-   */
-  unsigned short txPacketLossRate;
-  /** The capture frame rate (fps) of the local video.
-   */
-  int captureFrameRate;
-};
-
-/** Statistics of the remote video stream.
- */
-struct RemoteVideoStats
-{
-/**
- User ID of the remote user sending the video streams.
- */
-uid_t uid;
-/** **DEPRECATED** Time delay (ms).
- *
- * In scenarios where audio and video is synchronized, you can use the value of
- * `networkTransportDelay` and `jitterBufferDelay` in `RemoteAudioStats` to know the delay statistics of the remote video.
- */
-int delay;
-/** Width (pixels) of the video stream.
- */
-int width;
-/**
- Height (pixels) of the video stream.
- */
-int height;
-/**
- Bitrate (Kbps) received since the last count.
- */
-int receivedBitrate;
-/** The decoder output frame rate (fps) of the remote video.
- */
-int decoderOutputFrameRate;
-/** The render output frame rate (fps) of the remote video.
- */
-int rendererOutputFrameRate;
-/** Packet loss rate (%) of the remote video stream after using the anti-packet-loss method.
- */
-int packetLossRate;
-/** The type of the remote video stream: #REMOTE_VIDEO_STREAM_TYPE
- */
-REMOTE_VIDEO_STREAM_TYPE rxStreamType;
-/**
- The total freeze time (ms) of the remote video stream after the remote user joins the channel.
- In a video session where the frame rate is set to no less than 5 fps, video freeze occurs when
- the time interval between two adjacent renderable video frames is more than 500 ms.
- */
-int totalFrozenTime;
-/**
- The total video freeze time as a percentage (%) of the total time when the video is available.
- */
-int frozenRate;
-/**
- The total time (ms) when the remote user in the Communication profile or the remote
- broadcaster in the Live-broadcast profile neither stops sending the video stream nor
- disables the video module after joining the channel.
-
- @since v3.0.1
-*/
-int totalActiveTime;
-/**
- * The total publish duration (ms) of the remote video stream.
- */
-int publishDuration;
-};
-
-/** Audio statistics of the local user */
-struct LocalAudioStats
-{
-    /** The number of channels.
-     */
-    int numChannels;
-    /** The sample rate (Hz).
-     */
-    int sentSampleRate;
-    /** The average sending bitrate (Kbps).
-     */
-    int sentBitrate;
-    /** The audio packet loss rate (%) from the local client to the AR edge server before applying the anti-packet loss strategies.
-     */
-    unsigned short txPacketLossRate;
-};
-
-/** Audio statistics of a remote user */
-struct RemoteAudioStats
-{
-    /** User ID of the remote user sending the audio streams.
-     *
-     */
-    uid_t uid;
-    /** Audio quality received by the user: #QUALITY_TYPE.
-     */
-    int quality;
-    /** Network delay (ms) from the sender to the receiver.
-     */
-    int networkTransportDelay;
-    /** Network delay (ms) from the receiver to the jitter buffer.
-     */
-    int jitterBufferDelay;
-    /** The audio frame loss rate in the reported interval.
-     */
-    int audioLossRate;
-    /** The number of channels.
-     */
-    int numChannels;
-    /** The sample rate (Hz) of the received audio stream in the reported
-     * interval.
-     */
-    int receivedSampleRate;
-    /** The average bitrate (Kbps) of the received audio stream in the
-     * reported interval. */
-    int receivedBitrate;
-    /** The total freeze time (ms) of the remote audio stream after the remote user joins the channel. In a session, audio freeze occurs when the audio frame loss rate reaches 4%.
-     */
-    int totalFrozenTime;
-    /** The total audio freeze time as a percentage (%) of the total time when the audio is available. */
-    int frozenRate;
-    /** The total time (ms) when the remote user in the `COMMUNICATION` profile or the remote host in
-     the `LIVE_BROADCASTING` profile neither stops sending the audio stream nor disables the audio module after joining the channel.
-     */
-    int totalActiveTime;
-    /**
-     * The total publish duration (ms) of the remote audio stream.
-     */
-    int publishDuration;
-    /**
-     * Quality of experience (QoE) of the local user when receiving a remote audio stream. See #EXPERIENCE_QUALITY_TYPE.
-     *
-     * @since v3.3.0
-     */
-    int qoeQuality;
-    /**
-     * The reason for poor QoE of the local user when receiving a remote audio stream. See #EXPERIENCE_POOR_REASON.
-     *
-     * @since v3.3.0
-     */
-    int qualityChangedReason;
-     /**
-     * The mos value of remote audio.
-     */
-    int mosValue;
-};
-
-/**
- * Video dimensions.
- */
-struct VideoDimensions {
-    /** Width (pixels) of the video. */
-    int width;
-      /** Height (pixels) of the video. */
-    int height;
-    VideoDimensions()
-        : width(640), height(480)
-    {}
-    VideoDimensions(int w, int h)
-        : width(w), height(h)
-    {}
-};
-
-/** (Recommended) The standard bitrate set in the \ref IRtcEngine::setVideoEncoderConfiguration "setVideoEncoderConfiguration" method.
-
- In this mode, the bitrates differ between the live interactive streaming and communication profiles:
-
- - `COMMUNICATION` profile: The video bitrate is the same as the base bitrate.
- - `LIVE_BROADCASTING` profile: The video bitrate is twice the base bitrate.
-
- */
-const int STANDARD_BITRATE = 0;
-
-/** The compatible bitrate set in the \ref IRtcEngine::setVideoEncoderConfiguration "setVideoEncoderConfiguration" method.
-
- The bitrate remains the same regardless of the channel profile. If you choose this mode in the Live-broadcast profile, the video frame rate may be lower than the set value.
- */
-const int COMPATIBLE_BITRATE = -1;
-
-/** Use the default minimum bitrate.
- */
-const int DEFAULT_MIN_BITRATE = -1;
-
-/** Video encoder configurations.
- */
-struct VideoEncoderConfiguration {
-  /** The video frame dimensions (px) used to specify the video quality and measured by the total number of pixels along a frame's width and height: VideoDimensions. The default value is 640 x 360.
-  */
-    VideoDimensions dimensions;
-    /** The frame rate of the video: #FRAME_RATE. The default value is 15.
-
-     Note that we do not recommend setting this to a value greater than 30.
-    */
-    FRAME_RATE frameRate;
-    /** The minimum frame rate of the video. The default value is -1.
-     */
-    int minFrameRate;
-    /** The video encoding bitrate (Kbps).
-
-     Choose one of the following options:
-
-     - #STANDARD_BITRATE: (Recommended) The standard bitrate.
-        - the `COMMUNICATION` profile: the encoding bitrate equals the base bitrate.
-        - the `LIVE_BROADCASTING` profile: the encoding bitrate is twice the base bitrate.
-     - #COMPATIBLE_BITRATE: The compatible bitrate: the bitrate stays the same regardless of the profile.
-
-     the `COMMUNICATION` profile prioritizes smoothness, while the `LIVE_BROADCASTING` profile prioritizes video quality (requiring a higher bitrate). We recommend setting the bitrate mode as #STANDARD_BITRATE to address this difference.
-
-     The following table lists the recommended video encoder configurations, where the base bitrate applies to the `COMMUNICATION` profile. Set your bitrate based on this table. If you set a bitrate beyond the proper range, the SDK automatically sets it to within the range.
-
-     @note
-     In the following table, **Base Bitrate** applies to the `COMMUNICATION` profile, and **Live Bitrate** applies to the `LIVE_BROADCASTING` profile.
-
-     | Resolution             | Frame Rate (fps) | Base Bitrate (Kbps)                    | Live Bitrate (Kbps)                    |
-     |------------------------|------------------|----------------------------------------|----------------------------------------|
-     | 160 * 120              | 15               | 65                                     | 130                                    |
-     | 120 * 120              | 15               | 50                                     | 100                                    |
-     | 320 * 180              | 15               | 140                                    | 280                                    |
-     | 180 * 180              | 15               | 100                                    | 200                                    |
-     | 240 * 180              | 15               | 120                                    | 240                                    |
-     | 320 * 240              | 15               | 200                                    | 400                                    |
-     | 240 * 240              | 15               | 140                                    | 280                                    |
-     | 424 * 240              | 15               | 220                                    | 440                                    |
-     | 640 * 360              | 15               | 400                                    | 800                                    |
-     | 360 * 360              | 15               | 260                                    | 520                                    |
-     | 640 * 360              | 30               | 600                                    | 1200                                   |
-     | 360 * 360              | 30               | 400                                    | 800                                    |
-     | 480 * 360              | 15               | 320                                    | 640                                    |
-     | 480 * 360              | 30               | 490                                    | 980                                    |
-     | 640 * 480              | 15               | 500                                    | 1000                                   |
-     | 480 * 480              | 15               | 400                                    | 800                                    |
-     | 640 * 480              | 30               | 750                                    | 1500                                   |
-     | 480 * 480              | 30               | 600                                    | 1200                                   |
-     | 848 * 480              | 15               | 610                                    | 1220                                   |
-     | 848 * 480              | 30               | 930                                    | 1860                                   |
-     | 640 * 480              | 10               | 400                                    | 800                                    |
-     | 1280 * 720             | 15               | 1130                                   | 2260                                   |
-     | 1280 * 720             | 30               | 1710                                   | 3420                                   |
-     | 960 * 720              | 15               | 910                                    | 1820                                   |
-     | 960 * 720              | 30               | 1380                                   | 2760                                   |
-     | 1920 * 1080            | 15               | 2080                                   | 4160                                   |
-     | 1920 * 1080            | 30               | 3150                                   | 6300                                   |
-     | 1920 * 1080            | 60               | 4780                                   | 6500                                   |
-     | 2560 * 1440            | 30               | 4850                                   | 6500                                   |
-     | 2560 * 1440            | 60               | 6500                                   | 6500                                   |
-     | 3840 * 2160            | 30               | 6500                                   | 6500                                   |
-     | 3840 * 2160            | 60               | 6500                                   | 6500                                   |
-
-     */
-    int bitrate;
-    /** The minimum encoding bitrate (Kbps).
-
-     The SDK automatically adjusts the encoding bitrate to adapt to the network conditions. Using a value greater than the default value forces the video encoder to output high-quality images but may cause more packet loss and hence sacrifice the smoothness of the video transmission. That said, unless you have special requirements for image quality, AR does not recommend changing this value.
-
-     @note This parameter applies only to the `LIVE_BROADCASTING` profile.
-     */
-    int minBitrate;
-    /** The video orientation mode of the video: #ORIENTATION_MODE.
-    */
-    ORIENTATION_MODE orientationMode;
-    /** The video encoding degradation preference under limited bandwidth: #DEGRADATION_PREFERENCE.
-     */
-    DEGRADATION_PREFERENCE degradationPreference;
-    /** Sets the mirror mode of the published local video stream. It only affects the video that the remote user sees. See #VIDEO_MIRROR_MODE_TYPE
-
-    @note: The SDK disables the mirror mode by default.
-    */
-    VIDEO_MIRROR_MODE_TYPE mirrorMode;
-
-    VideoEncoderConfiguration(
-        const VideoDimensions& d, FRAME_RATE f,
-        int b, ORIENTATION_MODE m, VIDEO_MIRROR_MODE_TYPE mr = VIDEO_MIRROR_MODE_AUTO)
-        : dimensions(d), frameRate(f), minFrameRate(-1), bitrate(b),
-          minBitrate(DEFAULT_MIN_BITRATE), orientationMode(m),
-          degradationPreference(MAINTAIN_QUALITY), mirrorMode(mr)
-    {}
-    VideoEncoderConfiguration(
-        int width, int height, FRAME_RATE f,
-        int b, ORIENTATION_MODE m, VIDEO_MIRROR_MODE_TYPE mr = VIDEO_MIRROR_MODE_AUTO)
-        : dimensions(width, height), frameRate(f),
-          minFrameRate(-1), bitrate(b),
-          minBitrate(DEFAULT_MIN_BITRATE), orientationMode(m),
-          degradationPreference(MAINTAIN_QUALITY), mirrorMode(mr)
-    {}
-    VideoEncoderConfiguration()
-        : dimensions(640, 480)
-        , frameRate(FRAME_RATE_FPS_15)
-        , minFrameRate(-1)
-        , bitrate(STANDARD_BITRATE)
-        , minBitrate(DEFAULT_MIN_BITRATE)
-        , orientationMode(ORIENTATION_MODE_ADAPTIVE)
-        , degradationPreference(MAINTAIN_QUALITY)
-        , mirrorMode(VIDEO_MIRROR_MODE_AUTO)
-    {}
-};
-
-/** The video and audio properties of the user displaying the video in the CDN live. AR supports a maximum of 17 transcoding users in a CDN streaming channel.
-*/
-typedef struct TranscodingUser {
-  /** User ID of the user displaying the video in the CDN live.
-  */
-    uid_t uid;
-
-/** Horizontal position (pixel) of the video frame relative to the top left corner.
-*/
-    int x;
-    /** Vertical position (pixel) of the video frame relative to the top left corner.
-    */
-    int y;
-    /** Width (pixel) of the video frame. The default value is 360.
-    */
-    int width;
-    /** Height (pixel) of the video frame. The default value is 640.
-    */
-    int height;
-
-    /** The layer index of the video frame. An integer. The value range is [0, 100].
-
-     - 0: (Default) Bottom layer.
-     - 100: Top layer.
-
-     @note
-     - If zOrder is beyond this range, the SDK reports #ERR_INVALID_ARGUMENT.
-     - As of v2.3, the SDK supports zOrder = 0.
-     */
-    int zOrder;
-    /** The transparency level of the user's video. The value ranges between 0 and 1.0:
-
-     - 0: Completely transparent
-     - 1.0: (Default) Opaque
-     */
-    double alpha;
-    /** The audio channel of the sound. The default value is 0:
-
-     - 0: (Default) Supports dual channels at most, depending on the upstream of the host.
-     - 1: The audio stream of the host uses the FL audio channel. If the upstream of the host uses multiple audio channels, these channels are mixed into mono first.
-     - 2: The audio stream of the host uses the FC audio channel. If the upstream of the host uses multiple audio channels, these channels are mixed into mono first.
-     - 3: The audio stream of the host uses the FR audio channel. If the upstream of the host uses multiple audio channels, these channels are mixed into mono first.
-     - 4: The audio stream of the host uses the BL audio channel. If the upstream of the host uses multiple audio channels, these channels are mixed into mono first.
-     - 5: The audio stream of the host uses the BR audio channel. If the upstream of the host uses multiple audio channels, these channels are mixed into mono first.
-
-     @note If your setting is not 0, you may need a specialized player.
-     */
-    int audioChannel;
-    TranscodingUser()
-        : uid(0)
-        , x(0)
-        , y(0)
-        , width(0)
-        , height(0)
-        , zOrder(0)
-        , alpha(1.0)
-        , audioChannel(0)
-    {}
-
-} TranscodingUser;
-
-/** Image properties.
-
- The properties of the watermark and background images.
- */
-typedef struct RtcImage {
-    RtcImage() :
-       url(NULL),
-       x(0),
-       y(0),
-       width(0),
-       height(0)
-    {}
-    /** HTTP/HTTPS URL address of the image on the live video. The maximum length of this parameter is 1024 bytes. */
-    const char* url;
-    /** Horizontal position of the image from the upper left of the live video. */
-    int x;
-    /** Vertical position of the image from the upper left of the live video. */
-    int y;
-    /** Width of the image on the live video. */
-    int width;
-    /** Height of the image on the live video. */
-    int height;
-} RtcImage;
-/** The configuration for advanced features of the RTMP streaming with transcoding.
- */
-typedef struct LiveStreamAdvancedFeature {
-    LiveStreamAdvancedFeature() : featureName(NULL) , opened(false) {
-    }
-
-    /** The advanced feature for high-quality video with a lower bitrate. */
-    const char* LBHQ = "lbhq";
-    /** The advanced feature for the optimized video encoder. */
-    const char* VEO = "veo";
-
-    /** The name of the advanced feature. It contains LBHQ and VEO.
-     */
-    const char* featureName;
-
-    /** Whether to enable the advanced feature:
-     * - true: Enable the advanced feature.
-     * - false: (Default) Disable the advanced feature.
-     */
-    bool opened;
-} LiveStreamAdvancedFeature;
-
-/** A struct for managing CDN live audio/video transcoding settings.
-*/
-typedef struct LiveTranscoding {
-   /** The width of the video in pixels. The default value is 360.
-    * - When pushing video streams to the CDN, ensure that `width` is at least 64; otherwise, the AR server adjusts the value to 64.
-    * - When pushing audio streams to the CDN, set `width` and `height` as 0.
-    */
-    int width;
-    /** The height of the video in pixels. The default value is 640.
-     * - When pushing video streams to the CDN, ensure that `height` is at least 64; otherwise, the AR server adjusts the value to 64.
-     * - When pushing audio streams to the CDN, set `width` and `height` as 0.
-    */
-    int height;
-    /** Bitrate of the CDN live output video stream. The default value is 400 Kbps.
-
-    Set this parameter according to the Video Bitrate Table. If you set a bitrate beyond the proper range, the SDK automatically adapts it to a value within the range.
-    */
-    int videoBitrate;
-    /** Frame rate of the output video stream set for the CDN live streaming. The default value is 15 fps, and the value range is (0,30].
-
-    @note The AR server adjusts any value over 30 to 30.
-    */
-    int videoFramerate;
-
-    /** **DEPRECATED** Latency mode:
-
-     - true: Low latency with unassured quality.
-     - false: (Default) High latency with assured quality.
-     */
-    bool lowLatency;
-
-    /** Video GOP in frames. The default value is 30 fps.
-    */
-    int videoGop;
-    /** Self-defined video codec profile: #VIDEO_CODEC_PROFILE_TYPE.
-
-	@note If you set this parameter to other values, AR adjusts it to the default value of 100.
-    */
-    VIDEO_CODEC_PROFILE_TYPE videoCodecProfile;
-    /** The background color in RGB hex value. Value only. Do not include a preceeding #. For example, 0xFFB6C1 (light pink). The default value is 0x000000 (black).
-     */
-    unsigned int backgroundColor;
-
-    /** video codec type */
-    VIDEO_CODEC_TYPE_FOR_STREAM videoCodecType;
-
-    /** The number of users in the live interactive streaming.
-     */
-    unsigned int userCount;
-    /** TranscodingUser
-    */
-    TranscodingUser *transcodingUsers;
-    /** Reserved property. Extra user-defined information to send SEI for the H.264/H.265 video stream to the CDN live client. Maximum length: 4096 Bytes.
-
-     For more information on SEI frame, see [SEI-related questions](https://docs.ar.io/en/faq/sei).
-     */
-    const char *transcodingExtraInfo;
-
-    /** **DEPRECATED** The metadata sent to the CDN live client defined by the RTMP or FLV metadata.
-     */
-    const char *metadata;
-    /** The watermark image added to the CDN live publishing stream.
-
-	Ensure that the format of the image is PNG. Once a watermark image is added, the audience of the CDN live publishing stream can see the watermark image. See RtcImage.
-    */
-    RtcImage* watermark;
-    /** The background image added to the CDN live publishing stream.
-
-     Once a background image is added, the audience of the CDN live publishing stream can see the background image. See RtcImage.
-    */
-    RtcImage* backgroundImage;
-    /** Self-defined audio-sample rate: #AUDIO_SAMPLE_RATE_TYPE.
-    */
-    AUDIO_SAMPLE_RATE_TYPE audioSampleRate;
-    /** Bitrate of the CDN live audio output stream. The default value is 48 Kbps, and the highest value is 128.
-     */
-    int audioBitrate;
-    /** The numbder of audio channels for the CDN live stream. ar recommends choosing 1 (mono), or 2 (stereo) audio channels. Special players are required if you choose option 3, 4, or 5:
-
-     - 1: (Default) Mono.
-     - 2: Stereo.
-     - 3: Three audio channels.
-     - 4: Four audio channels.
-     - 5: Five audio channels.
-     */
-    int audioChannels;
-    /** Self-defined audio codec profile: #AUDIO_CODEC_PROFILE_TYPE.
-     */
-
-    AUDIO_CODEC_PROFILE_TYPE audioCodecProfile;
-
-    /** Advanced features of the RTMP streaming with transcoding. See LiveStreamAdvancedFeature.
-     *
-     * @since v3.1.0
-     */
-    LiveStreamAdvancedFeature* advancedFeatures;
-
-    /** The number of enabled advanced features. The default value is 0. */
-    unsigned int advancedFeatureCount;
-
-    LiveTranscoding()
-        : width(360)
-        , height(640)
-        , videoBitrate(400)
-        , videoFramerate(15)
-        , lowLatency(false)
-        , videoGop(30)
-        , videoCodecProfile(VIDEO_CODEC_PROFILE_HIGH)
-        , backgroundColor(0x000000)
-        , videoCodecType(VIDEO_CODEC_H264_FOR_STREAM)
-        , userCount(0)
-        , transcodingUsers(NULL)
-        , transcodingExtraInfo(NULL)
-        , metadata(NULL)
-        , watermark(NULL)
-        , backgroundImage(NULL)
-        , audioSampleRate(AUDIO_SAMPLE_RATE_48000)
-        , audioBitrate(48)
-        , audioChannels(1)
-        , audioCodecProfile(AUDIO_CODEC_PROFILE_LC_AAC)
-        , advancedFeatures(NULL)
-        , advancedFeatureCount(0)
-    {}
-} LiveTranscoding;
-
- /** Camera capturer configuration.
-  */
- struct CameraCapturerConfiguration{
-
-     /** Camera capturer preference settings. See: #CAPTURER_OUTPUT_PREFERENCE. */
-     CAPTURER_OUTPUT_PREFERENCE preference;
-     /** The width (px) of the video image captured by the local camera.
-      * To customize the width of the video image, set `preference` as #CAPTURER_OUTPUT_PREFERENCE_MANUAL (3) first,
-      * and then use `captureWidth`.
-      *
-      * @since v3.3.0
-      */
-     int captureWidth;
-     /** The height (px) of the video image captured by the local camera.
-      * To customize the height of the video image, set `preference` as #CAPTURER_OUTPUT_PREFERENCE_MANUAL (3) first,
-      * and then use `captureHeight`.
-      *
-      * @since v3.3.0
-      */
-     int captureHeight;
-     #if defined(__ANDROID__) || (defined(__APPLE__) && TARGET_OS_IOS)
-     /** Camera direction settings (for Android/iOS only). See: #CAMERA_DIRECTION. */
-     CAMERA_DIRECTION cameraDirection;
-     #endif
-
-     CameraCapturerConfiguration()
-        :preference(CAPTURER_OUTPUT_PREFERENCE_AUTO)
-        ,captureWidth(640)
-        ,captureHeight(480)
-        {}
-
-    CameraCapturerConfiguration(int width, int height)
-        :preference(CAPTURER_OUTPUT_PREFERENCE_MANUAL)
-        ,captureWidth(width)
-        ,captureHeight(height)
-        {}
- };
-/** The configurations for the data stream.
- *
- * @since v3.3.0
- *
- * |`syncWithAudio` |`ordered`| SDK behaviors|
- * |--------------|--------|-------------|
- * | false   |  false   |The SDK triggers the `onStreamMessage` callback immediately after the receiver receives a data packet      |
- * | true |  false | <p>If the data packet delay is within the audio delay, the SDK triggers the `onStreamMessage` callback when the synchronized audio packet is played out.</p><p>If the data packet delay exceeds the audio delay, the SDK triggers the `onStreamMessage` callback as soon as the data packet is received. In this case, the data packet is not synchronized with the audio packet.</p>   |
- * | false  |  true | <p>If the delay of a data packet is within five seconds, the SDK corrects the order of the data packet.</p><p>If the delay of a data packet exceeds five seconds, the SDK discards the data packet.</p>     |
- * |  true  |  true   | <p>If the delay of a data packet is within the audio delay, the SDK corrects the order of the data packet.</p><p>If the delay of a data packet exceeds the audio delay, the SDK discards this data packet.</p>     |
- */
-struct DataStreamConfig {
-    /** Whether to synchronize the data packet with the published audio packet.
-     *
-     * - true: Synchronize the data packet with the audio packet.
-     * - false: Do not synchronize the data packet with the audio packet.
-     *
-     * When you set the data packet to synchronize with the audio, then if the data
-     * packet delay is within the audio delay, the SDK triggers the `onStreamMessage` callback when
-     * the synchronized audio packet is played out. Do not set this parameter as `true` if you
-     * need the receiver to receive the data packet immediately. AR recommends that you set
-     * this parameter to `true` only when you need to implement specific functions, for example
-     * lyric synchronization.
-     */
-    bool syncWithAudio;
-    /** Whether the SDK guarantees that the receiver receives the data in the sent order.
-     *
-     * - true: Guarantee that the receiver receives the data in the sent order.
-     * - false: Do not guarantee that the receiver receives the data in the sent order.
-     *
-     * Do not set this parameter to `true` if you need the receiver to receive the data immediately.
-     */
-    bool ordered;
-};
-/** Configuration of the injected media stream.
- */
-struct InjectStreamConfig {
-    /** Width of the injected stream in the live interactive streaming. The default value is 0 (same width as the original stream).
-     */
-    int width;
-    /** Height of the injected stream in the live interactive streaming. The default value is 0 (same height as the original stream).
-     */
-    int height;
-    /** Video GOP (in frames) of the injected stream in the live interactive streaming. The default value is 30 fps.
-     */
-    int videoGop;
-    /** Video frame rate of the injected stream in the live interactive streaming. The default value is 15 fps.
-     */
-    int videoFramerate;
-    /** Video bitrate of the injected stream in the live interactive streaming. The default value is 400 Kbps.
-
-     @note The setting of the video bitrate is closely linked to the resolution. If the video bitrate you set is beyond a reasonable range, the SDK sets it within a reasonable range.
-     */
-    int videoBitrate;
-    /** Audio-sample rate of the injected stream in the live interactive streaming: #AUDIO_SAMPLE_RATE_TYPE. The default value is 48000 Hz.
-
-     @note We recommend setting the default value.
-     */
-    AUDIO_SAMPLE_RATE_TYPE audioSampleRate;
-    /** Audio bitrate of the injected stream in the live interactive streaming. The default value is 48.
-
-     @note We recommend setting the default value.
-     */
-    int audioBitrate;
-    /** Audio channels in the live interactive streaming.
-
-     - 1: (Default) Mono
-     - 2: Two-channel stereo
-
-     @note We recommend setting the default value.
-     */
-    int audioChannels;
-
-    // width / height default set to 0 means pull the stream with its original resolution
-    InjectStreamConfig()
-        : width(0)
-        , height(0)
-        , videoGop(30)
-        , videoFramerate(15)
-        , videoBitrate(400)
-        , audioSampleRate(AUDIO_SAMPLE_RATE_48000)
-        , audioBitrate(48)
-        , audioChannels(1)
-    {}
-};
-/** The definition of ChannelMediaInfo.
- */
-struct ChannelMediaInfo {
-    /** The channel name. 
-     */
-	const char* channelName;
-    /** The token that enables the user to join the channel.
-     */
-	const char* token;
-    /** The user ID.
-     */
-	uid_t uid;
-};
-
-/** The definition of ChannelMediaRelayConfiguration.
- */
-struct ChannelMediaRelayConfiguration {
-    /** Pointer to the information of the source channel: ChannelMediaInfo. It contains the following members:
-     * - `channelName`: The name of the source channel. The default value is `NULL`, which means the SDK applies the name of the current channel.
-     * - `uid`: ID of the host whose media stream you want to relay. The default value is 0, which means the SDK generates a random UID. You must set it as 0.
-     * - `token`: The token for joining the source channel. It is generated with the `channelName` and `uid` you set in `srcInfo`.
-     *   - If you have not enabled the App Certificate, set this parameter as the default value `NULL`, which means the SDK applies the App ID.
-     *   - If you have enabled the App Certificate, you must use the `token` generated with the `channelName` and `uid`, and the `uid` must be set as 0.
-     */
-    ChannelMediaInfo *srcInfo;
-    /** Pointer to the information of the destination channel: ChannelMediaInfo. It contains the following members:
-     * - `channelName`: The name of the destination channel.
-     * - `uid`: ID of the host in the destination channel. The value ranges from 0 to (2<sup>32</sup>-1). To avoid UID conflicts, this `uid` must be different from any other UIDs in the destination channel. The default value is 0, which means the SDK generates a random UID.
-     * - `token`: The token for joining the destination channel. It is generated with the `channelName` and `uid` you set in `destInfos`.
-     *   - If you have not enabled the App Certificate, set this parameter as the default value `NULL`, which means the SDK applies the App ID.
-     *   - If you have enabled the App Certificate, you must use the `token` generated with the `channelName` and `uid`.
-     */
-	ChannelMediaInfo *destInfos;
-    /** The number of destination channels. The default value is 0, and the
-     * value range is [0,4). Ensure that the value of this parameter
-     * corresponds to the number of ChannelMediaInfo structs you define in
-     * `destInfos`.
-     */
-	int destCount;
-
-	ChannelMediaRelayConfiguration()
-			: srcInfo(nullptr)
-			, destInfos(nullptr)
-			, destCount(0)
-	{}
-};
-
-/**  **DEPRECATED** Lifecycle of the CDN live video stream.
-*/
-enum RTMP_STREAM_LIFE_CYCLE_TYPE
-{
-  /** Bind to the channel lifecycle. If all hosts leave the channel, the CDN live streaming stops after 30 seconds.
-  */
-	RTMP_STREAM_LIFE_CYCLE_BIND2CHANNEL = 1,
-  /** Bind to the owner of the RTMP stream. If the owner leaves the channel, the CDN live streaming stops immediately.
-  */
-	RTMP_STREAM_LIFE_CYCLE_BIND2OWNER = 2,
-};
-
-/** Content hints for screen sharing.
-*/
-enum VideoContentHint
-{
-    /** (Default) No content hint.
-     */
-    CONTENT_HINT_NONE,
-    /** Motion-intensive content. Choose this option if you prefer smoothness or when you are sharing a video clip, movie, or video game.
-     */
-    CONTENT_HINT_MOTION,
-    /** Motionless content. Choose this option if you prefer sharpness or when you are sharing a picture, PowerPoint slide, or text.
-     */
-    CONTENT_HINT_DETAILS
-};
-
-/** The relative location of the region to the screen or window.
- */
-struct Rectangle
-{
-    /** The horizontal offset from the top-left corner.
-    */
-    int x;
-    /** The vertical offset from the top-left corner.
-    */
-    int y;
-    /** The width of the region.
-    */
-    int width;
-    /** The height of the region.
-    */
-    int height;
-
-    Rectangle(): x(0), y(0), width(0), height(0) {}
-    Rectangle(int xx, int yy, int ww, int hh): x(xx), y(yy), width(ww), height(hh) {}
-};
-
-/**  **DEPRECATED** Definition of the rectangular region. */
-typedef struct Rect {
-    /** Y-axis of the top line.
-     */
-    int top;
-    /** X-axis of the left line.
-     */
-    int left;
-    /** Y-axis of the bottom line.
-     */
-    int bottom;
-    /** X-axis of the right line.
-     */
-    int right;
-
-    Rect(): top(0), left(0), bottom(0), right(0) {}
-    Rect(int t, int l, int b, int r): top(t), left(l), bottom(b), right(r) {}
-} Rect;
-
-/** The options of the watermark image to be added. */
-typedef struct WatermarkOptions {
-    /** Sets whether or not the watermark image is visible in the local video preview: 
-     * - true: (Default) The watermark image is visible in preview.
-     * - false: The watermark image is not visible in preview. 
-     */
-    bool visibleInPreview;
-    /**
-     * The watermark position in the landscape mode. See Rectangle.
-     * For detailed information on the landscape mode, see the advanced guide *Video Rotation*.
-     */
-    Rectangle positionInLandscapeMode;
-    /**
-     * The watermark position in the portrait mode. See Rectangle.
-     * For detailed information on the portrait mode, see the advanced guide *Video Rotation*.
-     */
-    Rectangle positionInPortraitMode;
-
-    WatermarkOptions()
-        : visibleInPreview(true)
-        , positionInLandscapeMode(0, 0, 0, 0)
-        , positionInPortraitMode(0, 0, 0, 0)
-    {}
-} WatermarkOptions;
-
-/** Screen sharing encoding parameters.
-*/
-struct ScreenCaptureParameters
-{
-    /** The maximum encoding dimensions of the shared region in terms of width * height.
-
-     The default value is 1920 * 1080 pixels, that is, 2073600 pixels. AR uses the value of this parameter to calculate the charges.
-
-     If the aspect ratio is different between the encoding dimensions and screen dimensions, AR applies the following algorithms for encoding. Suppose the encoding dimensions are 1920 x 1080:
-
-	 - If the value of the screen dimensions is lower than that of the encoding dimensions, for example, 1000 &times; 1000, the SDK uses 1000 &times; 1000 for encoding.
-	 - If the value of the screen dimensions is higher than that of the encoding dimensions, for example, 2000 &times; 1500, the SDK uses the maximum value under 1920 &times; 1080 with the aspect ratio of the screen dimension (4:3) for encoding, that is, 1440 &times; 1080.
-     */
-    VideoDimensions dimensions;
-    /** The frame rate (fps) of the shared region.
-
-	The default value is 5. We do not recommend setting this to a value greater than 15.
-     */
-    int frameRate;
-    /** The bitrate (Kbps) of the shared region.
-
-	The default value is 0 (the SDK works out a bitrate according to the dimensions of the current screen).
-     */
-    int bitrate;
-    /** Sets whether or not to capture the mouse for screen sharing:
-
-	- true: (Default) Capture the mouse.
-	- false: Do not capture the mouse.
-     */
-    bool captureMouseCursor;
-	
-	/** Whether to bring the window to the front when calling \ref IRtcEngine::startScreenCaptureByWindowId "startScreenCaptureByWindowId" to share the window:
-     * - true: Bring the window to the front.
-     * - false: (Default) Do not bring the window to the front.
-     */
-    bool windowFocus;
-    /** A list of IDs of windows to be blocked.
-     *
-     * When calling \ref IRtcEngine::startScreenCaptureByScreenRect "startScreenCaptureByScreenRect" to start screen sharing, you can use this parameter to block the specified windows.
-     * When calling \ref IRtcEngine::updateScreenCaptureParameters "updateScreenCaptureParameters" to update the configuration for screen sharing, you can use this parameter to dynamically block the specified windows during screen sharing.
-     */
-    view_t* excludeWindowList;
-    /** The number of windows to be blocked.
-     */
-    int excludeWindowCount;
-	
-	/** Sets whether or not to capture the speaker audio for screen sharing:
-
-	- true: Capture the speaker audio.
-	- false: (Default) Do not capture the speaker audio.
-	 */
-	bool captureAudio;
-
-    ScreenCaptureParameters() : dimensions(1920, 1080), frameRate(5), bitrate(STANDARD_BITRATE), captureMouseCursor(true), windowFocus(false), excludeWindowList(NULL), excludeWindowCount(0) {}
-    ScreenCaptureParameters(const VideoDimensions& d, int f, int b, bool c, bool focus, view_t *ex = NULL, int cnt = 0) : dimensions(d), frameRate(f), bitrate(b), captureMouseCursor(c), windowFocus(focus), excludeWindowList(ex), excludeWindowCount(cnt) {}
-    ScreenCaptureParameters(int width, int height, int f, int b, bool c, bool focus, view_t *ex = NULL, int cnt = 0) : dimensions(width, height), frameRate(f), bitrate(b), captureMouseCursor(c), windowFocus(focus), excludeWindowList(ex), excludeWindowCount(cnt) {}
-};
-
-/** Video display settings of the VideoCanvas class.
-*/
-struct VideoCanvas
-{
-    /** Video display window (view).
-     */
-    view_t view;
-    /** The rendering mode of the video view. See RENDER_MODE_TYPE
-     */
-    int renderMode;
-    /** The unique channel name for the ARRTC session in the string format. The string length must be less than 64 bytes. Supported character scopes are:
-     - All lowercase English letters: a to z. 
-     - All uppercase English letters: A to Z. 
-     - All numeric characters: 0 to 9. 
-     - The space character. 
-     - Punctuation characters and other symbols, including: "!", "#", "$", "%", "&", "(", ")", "+", "-", ":", ";", "<", "=", ".", ">", "?", "@", "[", "]", "^", "_", " {", "}", "|", "~", ",".
-
-     @note 
-     - The default value is the empty string "". Use the default value if the user joins the channel using the \ref IRtcEngine::joinChannel "joinChannel" method in the IRtcEngine class. The `VideoCanvas` struct defines the video canvas of the user in the channel.
-     - If the user joins the channel using the \ref IRtcEngine::joinChannel "joinChannel" method in the IChannel class, set this parameter as the `channelId` of the `IChannel` object. The `VideoCanvas` struct defines the video canvas of the user in the channel with the specified channel ID.
-     */
-    char channelId[MAX_CHANNEL_ID_LENGTH];
-    /** The user ID. */
-    uid_t uid;
-    void *priv; // private data (underlying video engine denotes it)
-    /** The mirror mode of the video view. See VIDEO_MIRROR_MODE_TYPE
-     @note
-     - For the mirror mode of the local video view: If you use a front camera, the SDK enables the mirror mode by default; if you use a rear camera, the SDK disables the mirror mode by default.
-     - For the mirror mode of the remote video view: The SDK disables the mirror mode by default.
-    */
-    VIDEO_MIRROR_MODE_TYPE mirrorMode;
-
-    VideoCanvas()
-        : view(NULL)
-        , renderMode(RENDER_MODE_HIDDEN)
-        , uid(0)
-        , priv(NULL)
-        , mirrorMode(VIDEO_MIRROR_MODE_AUTO)
-    {
-        channelId[0] = '\0';
-    }
-    VideoCanvas(view_t v, int m, uid_t u)
-        : view(v)
-        , renderMode(m)
-        , uid(u)
-        , priv(NULL)
-        , mirrorMode(VIDEO_MIRROR_MODE_AUTO)
-    {
-        channelId[0] = '\0';
-    }
-    VideoCanvas(view_t v, int m, const char *ch, uid_t u)
-        : view(v)
-        , renderMode(m)
-        , uid(u)
-        , priv(NULL)
-        , mirrorMode(VIDEO_MIRROR_MODE_AUTO)
-    {
-        strncpy(channelId, ch, MAX_CHANNEL_ID_LENGTH);
-        channelId[MAX_CHANNEL_ID_LENGTH - 1] = '\0';
-    }
-    VideoCanvas(view_t v, int rm, uid_t u, VIDEO_MIRROR_MODE_TYPE mm)
-        : view(v)
-        , renderMode(rm)
-        , uid(u)
-        , priv(NULL)
-        , mirrorMode(mm)
-    {
-        channelId[0] = '\0';
-    }
-    VideoCanvas(view_t v, int rm, const char *ch, uid_t u, VIDEO_MIRROR_MODE_TYPE mm)
-        : view(v)
-        , renderMode(rm)
-        , uid(u)
-        , priv(NULL)
-        , mirrorMode(mm)
-    {
-        strncpy(channelId, ch, MAX_CHANNEL_ID_LENGTH);
-        channelId[MAX_CHANNEL_ID_LENGTH - 1] = '\0';
-    }
-};
-
-/** Image enhancement options.
-*/
-struct BeautyOptions {
-    /** The contrast level, used with the @p lightening parameter.
-    */
-    enum LIGHTENING_CONTRAST_LEVEL
-    {
-        /** Low contrast level. */
-        LIGHTENING_CONTRAST_LOW = 0,
-        /** (Default) Normal contrast level. */
-        LIGHTENING_CONTRAST_NORMAL,
-        /** High contrast level. */
-        LIGHTENING_CONTRAST_HIGH
-    };
-
-/** The contrast level, used with the @p lightening parameter.
-*/
-LIGHTENING_CONTRAST_LEVEL lighteningContrastLevel;
-
-/** The brightness level. The value ranges from 0.0 (original) to 1.0. */
-float lighteningLevel;
-
-/** The sharpness level. The value ranges between 0 (original) and 1. This parameter is usually used to remove blemishes.
- */
-float smoothnessLevel;
-
-/** The redness level. The value ranges between 0 (original) and 1. This parameter adjusts the red saturation level.
-*/
-float rednessLevel;
-
-BeautyOptions(LIGHTENING_CONTRAST_LEVEL contrastLevel, float lightening, float smoothness, float redness)
-    : lighteningLevel(lightening),
-    smoothnessLevel(smoothness),
-    rednessLevel(redness),
-    lighteningContrastLevel(contrastLevel) {}
-
-BeautyOptions()
-    : lighteningLevel(0),
-    smoothnessLevel(0),
-    rednessLevel(0),
-    lighteningContrastLevel(LIGHTENING_CONTRAST_NORMAL) {}
-};
-
-/**
- * The UserInfo struct.
- */
-struct UserInfo {
-  /**
-   * The user ID.
-   */
-  uid_t uid;
-  /**
-   * The user account.
-   */
-  char userAccount[MAX_USER_ACCOUNT_LENGTH];
-  UserInfo()
-      : uid(0) {
-    userAccount[0] = '\0';
-  }
-};
-
-/**
- *  Regions for connetion.
- */
-enum AREA_CODE {
-    /**
-     * Mainland China.
-     */
-    AREA_CODE_CN = 0x00000001,
-    /**
-     * North America.
-     */
-    AREA_CODE_NA = 0x00000002,
-    /**
-     * Europe.
-     */
-    AREA_CODE_EU = 0x00000004,
-    /**
-     * Asia, excluding Mainland China.
-     */
-    AREA_CODE_AS = 0x00000008,
-    /**
-     * Japan.
-     */
-    AREA_CODE_JP = 0x00000010,
-    /**
-     * India.
-     */
-    AREA_CODE_IN = 0x00000020,
-    /**
-     * (Default) Global.
-     */
-    AREA_CODE_GLOB = 0xFFFFFFFF
-};
-
-enum ENCRYPTION_CONFIG {
-    /**
-     * - 1: Force set master key and mode;
-     * - 0: Not force set, checking whether encryption plugin exists
-     */
-    ENCRYPTION_FORCE_SETTING = (1 << 0),
-    /**
-     * - 1: Force not encrypting packet;
-     * - 0: Not force encrypting;
-     */
-    ENCRYPTION_FORCE_DISABLE_PACKET = (1 << 1)
-};
-/** Definition of IPacketObserver.
-*/
-class IPacketObserver
-{
-public:
-/** Definition of Packet.
- */
-	struct Packet
-	{
-        /** Buffer address of the sent or received data.
-         * @note AR recommends that the value of buffer is more than 2048 bytes, otherwise, you may meet undefined behaviors such as a crash.
-         */
-		const unsigned char* buffer;
-        /** Buffer size of the sent or received data.
-         */
-		unsigned int size;
-	};
-	/** Occurs when the local user sends an audio packet.
-
-     @param packet The sent audio packet. See Packet.
-     @return
-     - true: The audio packet is sent successfully.
-     - false: The audio packet is discarded.
-     */
-	virtual bool onSendAudioPacket(Packet& packet) = 0;
-	/** Occurs when the local user sends a video packet.
-
-     @param packet The sent video packet. See Packet.
-     @return
-     - true: The video packet is sent successfully.
-     - false: The video packet is discarded.
-     */
-	virtual bool onSendVideoPacket(Packet& packet) = 0;
-	/** Occurs when the local user receives an audio packet.
-
-     @param packet The received audio packet. See Packet.
-     @return
-     - true: The audio packet is received successfully.
-     - false: The audio packet is discarded.
-	 */
-	virtual bool onReceiveAudioPacket(Packet& packet) = 0;
-	/** Occurs when the local user receives a video packet.
-
-     @param packet The received video packet. See Packet.
-     @return
-     - true: The video packet is received successfully.
-     - false: The video packet is discarded.
-     */
-    virtual bool onReceiveVideoPacket(Packet& packet) = 0;
-};
-
-
-#if defined(_WIN32)||defined(__ANDROID__) || (defined(__APPLE__) && (TARGET_OS_IOS || TARGET_OS_MAC))
-/** The capture type of the custom video source.
- */
-enum VIDEO_CAPTURE_TYPE {
-    /** Unknown type.
-     */
-    VIDEO_CAPTURE_UNKNOWN,
-    /** (Default) Video captured by the camera.
-     */
-    VIDEO_CAPTURE_CAMERA,
-    /** Video for screen sharing.
-     */
-    VIDEO_CAPTURE_SCREEN,
-};
-
-/** The IVideoFrameConsumer class. The SDK uses it to receive the video frame that you capture.
- */
-class IVideoFrameConsumer {
-public:
-    /** Receives the raw video frame.
-     *
-     * @note Ensure that the video frame type that you specify in this method is the same as that in the \ref ar::rtc::IVideoSource::getBufferType "getBufferType" callback.
-     *
-     * @param buffer The video buffer.
-     * @param frameType The video frame type. See \ref AM::ExternalVideoFrame::VIDEO_PIXEL_FORMAT "VIDEO_PIXEL_FORMAT".
-     * @param width The width (px) of the video frame.
-     * @param height The height (px) of the video frame.
-     * @param rotation The angle (degree) at which the video frame rotates clockwise. If you set the rotation angle, the
-     * SDK rotates the video frame after receiving it. You can set the rotation angle as `0`, `90`, `180`, and `270`.
-     * @param timestamp The Unix timestamp (ms) of the video frame. You must set a timestamp for each video frame.
-     */
-#if defined(_WIN32)
-    virtual void consumeRawVideoFrame(const unsigned char *buffer, AM::ExternalVideoFrame::VIDEO_PIXEL_FORMAT frameType, int width, int height, int rotation, long timestamp) = 0;
-#endif
-};
-
-/** The IVideoSource class. You can use it to customize the video source.
- */
-class IVideoSource {
-public:
-    /** Notification for initializing the custom video source.
-     *
-     * The SDK triggers this callback to remind you to initialize the custom video source. After receiving this callback,
-     * you can do some preparation, such as enabling the camera, and then use the return value to tell the SDK whether the
-     * custom video source is prepared.
-     *
-     * @param consumer An IVideoFrameConsumer object that the SDK passes to you. You need to reserve this object and use it
-     * to send the video frame to the SDK once the custom video source is started. See IVideoFrameConsumer.
-     *
-     * @return
-     * - true: The custom video source is initialized.
-     * - false: The custom video source is not ready or fails to initialize. The SDK stops and reports the error.
-     */
-    virtual bool onInitialize(IVideoFrameConsumer *consumer) = 0;
-
-    /** Notification for disabling the custom video source.
-     *
-     * The SDK triggers this callback to remind you to disable the custom video source device. This callback tells you
-     * that the SDK is about to release the IVideoFrameConsumer object. Ensure that you no longer use IVideoFrameConsumer
-     * after receiving this callback.
-     */
-    virtual void onDispose() = 0;
-
-    /** Notification for starting the custom video source.
-     *
-     * The SDK triggers this callback to remind you to start the custom video source for capturing video. The SDK uses
-     * IVideoFrameConsumer to receive the video frame that you capture after the video source is started. You must use
-     * the return value to tell the SDK whether the custom video source is started.
-     *
-     * @return
-     * - true: The custom video source is started.
-     * - false: The custom video source fails to start. The SDK stops and reports the error.
-     */
-    virtual bool onStart() = 0;
-
-    /** Notification for stopping capturing video.
-     *
-     * The SDK triggers this callback to remind you to stop capturing video. This callback tells you that the SDK is about
-     * to stop using IVideoFrameConsumer to receive the video frame that you capture.
-     */
-    virtual void onStop() = 0;
-
-    /** Gets the video frame type.
-     *
-     * Before you initialize the custom video source, the SDK triggers this callback to query the video frame type. You
-     * must specify the video frame type in the return value and then pass it to the SDK.
-     *
-     * @note Ensure that the video frame type that you specify in this callback is the same as that in the \ref ar::rtc::IVideoFrameConsumer::consumeRawVideoFrame "consumeRawVideoFrame" method.
-     *
-     * @return \ref AM::ExternalVideoFrame::VIDEO_PIXEL_FORMAT "VIDEO_PIXEL_FORMAT"
-     */
-#if defined(_WIN32)
-    virtual AM::ExternalVideoFrame::VIDEO_PIXEL_FORMAT getBufferType() = 0;
-#endif
-    /** Gets the capture type of the custom video source.
-     *
-     * Before you initialize the custom video source, the SDK triggers this callback to query the capture type of the video source.
-     * You must specify the capture type in the return value and then pass it to the SDK. The SDK enables the corresponding video
-     * processing algorithm according to the capture type after receiving the video frame.
-     *
-     * @return #VIDEO_CAPTURE_TYPE
-     */
-    virtual VIDEO_CAPTURE_TYPE getVideoCaptureType() = 0;
-    /** Gets the content hint of the custom video source.
-     *
-     * If you specify the custom video source as a screen-sharing video, the SDK triggers this callback to query the
-     * content hint of the video source before you initialize the video source. You must specify the content hint in the
-     * return value and then pass it to the SDK. The SDK enables the corresponding video processing algorithm according
-     * to the content hint after receiving the video frame.
-     *
-     * @return \ref ar::rtc::VideoContentHint "VideoContentHint"
-     */
-    virtual VideoContentHint getVideoContentHint() = 0;
-};
-#endif
-
-/** The SDK uses the IRtcEngineEventHandler interface class to send callbacks to the application. The application inherits the methods of this interface class to retrieve these callbacks.
-
- All methods in this interface class have default (empty) implementations. Therefore, the application can only inherit some required events. In the callbacks, avoid time-consuming tasks or calling blocking APIs, such as the SendMessage method. Otherwise, the SDK may not work properly.
- */
-class IRtcEngineEventHandler
-{
-public:
-    virtual ~IRtcEngineEventHandler() {}
-    
-    /** Reports a warning during SDK runtime.
-
-     In most cases, the application can ignore the warning reported by the SDK because the SDK can usually fix the issue and resume running. For example, when losing connection with the server, the SDK may report #WARN_LOOKUP_CHANNEL_TIMEOUT and automatically try to reconnect.
-
-     @param warn Warning code: #WARN_CODE_TYPE.
-     @param msg Pointer to the warning message.
-     */
-    virtual void onWarning(int warn, const char* msg) {
-        (void)warn;
-        (void)msg;
-    }
-
-    /** Reports an error during SDK runtime.
-
-     In most cases, the SDK cannot fix the issue and resume running. The SDK requires the application to take action or informs the user about the issue.
-
-     For example, the SDK reports an #ERR_START_CALL error when failing to initialize a call. The application informs the user that the call initialization failed and invokes the \ref IRtcEngine::leaveChannel "leaveChannel" method to leave the channel.
-
-     @param err Error code: #ERROR_CODE_TYPE.
-     @param msg Pointer to the error message.
-     */
-    virtual void onError(int err, const char* msg) {
-        (void)err;
-        (void)msg;
-    }
-
-    /** Occurs when a user joins a channel.
-
-     This callback notifies the application that a user joins a specified channel when the application calls the \ref IRtcEngine::joinChannel "joinChannel" method.
-
-     The channel name assignment is based on @p channelName specified in the \ref IRtcEngine::joinChannel "joinChannel" method.
-
-     If the @p uid is not specified in the *joinChannel* method, the server automatically assigns a @p uid.
-
-     @param channel  Pointer to the channel name.
-     @param  uid User ID of the user joining the channel.
-     @param  elapsed Time elapsed (ms) from the user calling the \ref IRtcEngine::joinChannel "joinChannel" method until the SDK triggers this callback.
-     */
-    virtual void onJoinChannelSuccess(const char* channel, uid_t uid, int elapsed) {
-        (void)channel;
-        (void)uid;
-        (void)elapsed;
-    }
-
-    /** Occurs when a user rejoins the channel after disconnection due to network problems.
-
-    When a user loses connection with the server because of network problems, the SDK automatically tries to reconnect and triggers this callback upon reconnection.
-
-     @param channel Pointer to the channel name.
-     @param uid User ID of the user rejoining the channel.
-     @param elapsed Time elapsed (ms) from starting to reconnect until the SDK triggers this callback.
-     */
-    virtual void onRejoinChannelSuccess(const char* channel, uid_t uid, int elapsed) {
-        (void)channel;
-        (void)uid;
-        (void)elapsed;
-    }
-
-    /** Occurs when a user leaves the channel.
-
-    This callback notifies the application that a user leaves the channel when the application calls the \ref IRtcEngine::leaveChannel "leaveChannel" method.
-
-    The application retrieves information, such as the call duration and statistics.
-
-     @param stats Pointer to the statistics of the call: RtcStats.
-     */
-    virtual void onLeaveChannel(const RtcStats& stats) {
-        (void)stats;
-    }
-
-    /** Occurs when the user role switches in a live broadcast. For example, from a host to an audience or vice versa.
-
-    This callback notifies the application of a user role switch when the application calls the \ref IRtcEngine::setClientRole "setClientRole" method.
-
-    The SDK triggers this callback when the local user switches the user role by calling the \ref ar::rtc::IRtcEngine::setClientRole "setClientRole" method after joining the channel.
-     @param oldRole Role that the user switches from: #CLIENT_ROLE_TYPE.
-     @param newRole Role that the user switches to: #CLIENT_ROLE_TYPE.
-     */
-    virtual void onClientRoleChanged(CLIENT_ROLE_TYPE oldRole, CLIENT_ROLE_TYPE newRole) {
-    }
-
-    /** Occurs when a remote user (Communication)/ host (Live Broadcast) joins the channel.
-
-     - Communication profile: This callback notifies the application that another user joins the channel. If other users are already in the channel, the SDK also reports to the application on the existing users.
-     - Live-broadcast profile: This callback notifies the application that the host joins the channel. If other hosts are already in the channel, the SDK also reports to the application on the existing hosts. We recommend limiting the number of hosts to 17.
-
-     The SDK triggers this callback under one of the following circumstances:
-     - A remote user/host joins the channel by calling the \ref ar::rtc::IRtcEngine::joinChannel "joinChannel" method.
-     - A remote user switches the user role to the host by calling the \ref ar::rtc::IRtcEngine::setClientRole "setClientRole" method after joining the channel.
-     - A remote user/host rejoins the channel after a network interruption.
-     - The host injects an online media stream into the channel by calling the \ref ar::rtc::IRtcEngine::addInjectStreamUrl "addInjectStreamUrl" method.
-
-     @note In the Live-broadcast profile:
-     - The host receives this callback when another host joins the channel.
-     - The audience in the channel receives this callback when a new host joins the channel.
-     - When a web application joins the channel, the SDK triggers this callback as long as the web application publishes streams.
-
-     @param uid User ID of the user or host joining the channel.
-     @param elapsed Time delay (ms) from the local user calling the \ref IRtcEngine::joinChannel "joinChannel" method until the SDK triggers this callback.
-     */
-    virtual void onUserJoined(uid_t uid, int elapsed) {
-        (void)uid;
-        (void)elapsed;
-    }
-
-    /** Occurs when a remote user (Communication)/host (Live Broadcast) leaves the channel.
-
-    Reasons why the user is offline:
-
-    - Leave the channel: When the user/host leaves the channel, the user/host sends a goodbye message. When the message is received, the SDK assumes that the user/host leaves the channel.
-    - Drop offline: When no data packet of the user or host is received for a certain period of time, the SDK assumes that the user/host drops offline. Unreliable network connections may lead to false detections, so we recommend using a signaling system for more reliable offline detection.
-
-     @param uid User ID of the user leaving the channel or going offline.
-     @param reason Reason why the user is offline: #USER_OFFLINE_REASON_TYPE.
-     */
-    virtual void onUserOffline(uid_t uid, USER_OFFLINE_REASON_TYPE reason) {
-        (void)uid;
-        (void)reason;
-    }
-
-    /** Reports the last mile network quality of the local user once every two seconds before the user joins the channel.
-
-     Last mile refers to the connection between the local device and AR's edge server. After the application calls the \ref IRtcEngine::enableLastmileTest "enableLastmileTest" method, this callback reports once every two seconds the uplink and downlink last mile network conditions of the local user before the user joins the channel.
-
-     @param quality The last mile network quality: #QUALITY_TYPE.
-     */
-    virtual void onLastmileQuality(int quality) {
-        (void)quality;
-    }
-
-    /** Reports the last-mile network probe result.
-
-    The SDK triggers this callback within 30 seconds after the app calls the \ref ar::rtc::IRtcEngine::startLastmileProbeTest "startLastmileProbeTest" method.
-
-    @param result The uplink and downlink last-mile network probe test result. See LastmileProbeResult.
-    */
-    virtual void onLastmileProbeResult(const LastmileProbeResult& result) {
-        (void)result;
-    }
-
-    /** **DEPRECATED** Occurs when the connection between the SDK and the server is interrupted.
-
-     Deprecated as of v2.3.2. Replaced by the \ref ar::rtc::IRtcEngineEventHandler::onConnectionStateChanged "onConnectionStateChanged(CONNECTION_STATE_RECONNECTING, CONNECTION_CHANGED_INTERRUPTED)" callback.
-
-     The SDK triggers this callback when it loses connection with the server for more than four seconds after the connection is established.
-
-     After triggering this callback, the SDK tries reconnecting to the server. You can use this callback to implement pop-up reminders.
-
-     This callback is different from \ref ar::rtc::IRtcEngineEventHandler::onConnectionLost "onConnectionLost":
-     - The SDK triggers the \ref ar::rtc::IRtcEngineEventHandler::onConnectionInterrupted "onConnectionInterrupted" callback when it loses connection with the server for more than four seconds after it successfully joins the channel.
-     - The SDK triggers the \ref ar::rtc::IRtcEngineEventHandler::onConnectionLost "onConnectionLost" callback when it loses connection with the server for more than 10 seconds, whether or not it joins the channel.
-
-     If the SDK fails to rejoin the channel 20 minutes after being disconnected from AR's edge server, the SDK stops rejoining the channel.
-
-    */
-    virtual void onConnectionInterrupted() {}
-
-    /** Occurs when the SDK cannot reconnect to AR's edge server 10 seconds after its connection to the server is interrupted.
-
-    The SDK triggers this callback when it cannot connect to the server 10 seconds after calling the \ref IRtcEngine::joinChannel "joinChannel" method, whether or not it is in the channel.
-
-    This callback is different from \ref ar::rtc::IRtcEngineEventHandler::onConnectionInterrupted "onConnectionInterrupted":
-
-    - The SDK triggers the \ref ar::rtc::IRtcEngineEventHandler::onConnectionInterrupted "onConnectionInterrupted" callback when it loses connection with the server for more than four seconds after it successfully joins the channel.
-    - The SDK triggers the \ref ar::rtc::IRtcEngineEventHandler::onConnectionLost "onConnectionLost" callback when it loses connection with the server for more than 10 seconds, whether or not it joins the channel.
-
-    If the SDK fails to rejoin the channel 20 minutes after being disconnected from AR's edge server, the SDK stops rejoining the channel.
-
-     */
-    virtual void onConnectionLost() {}
-
-    /** **DEPRECATED** Deprecated as of v2.3.2. Replaced by the \ref ar::rtc::IRtcEngineEventHandler::onConnectionStateChanged "onConnectionStateChanged(CONNECTION_STATE_FAILED, CONNECTION_CHANGED_BANNED_BY_SERVER)" callback.
-
-    Occurs when your connection is banned by the AR Server.
-     */
-    virtual void onConnectionBanned() {}
-
-    /** Occurs when a method is executed by the SDK.
-
-     @param err The error code (#ERROR_CODE_TYPE) returned by the SDK when a method call fails. If the SDK returns 0, then the method call is successful.
-     @param api Pointer to the method executed by the SDK.
-     @param result Pointer to the result of the method call.
-     */
-    virtual void onApiCallExecuted(int err, const char* api, const char* result) {
-        (void)err;
-        (void)api;
-        (void)result;
-    }
-
-    /** Occurs when the token expires.
-
-     After a token is specified by calling the \ref IRtcEngine::joinChannel "joinChannel" method, if the SDK losses connection with the AR server due to network issues, the token may expire after a certain period of time and a new token may be required to reconnect to the server.
-
-     This callback notifies the application to generate a new token. Call the \ref IRtcEngine::renewToken "renewToken" method to renew the token.
-     */
-    virtual void onRequestToken() {
-    }
-
-    /** Occurs when the token expires in 30 seconds.
-
-     The user becomes offline if the token used in the \ref IRtcEngine::joinChannel "joinChannel" method expires. The SDK triggers this callback 30 seconds before the token expires to remind the application to get a new token. Upon receiving this callback, generate a new token on the server and call the \ref IRtcEngine::renewToken "renewToken" method to pass the new token to the SDK.
-
-     @param token Pointer to the token that expires in 30 seconds.
-     */
-    virtual void onTokenPrivilegeWillExpire(const char* token) {
-        (void)token;
-    }
-
-    /** **DEPRECATED** Reports the statistics of the audio stream from each remote user/host.
-
-    Deprecated as of v2.3.2. Use the \ref ar::rtc::IRtcEngineEventHandler::onRemoteAudioStats "onRemoteAudioStats" callback instead.
-
-     The SDK triggers this callback once every two seconds to report the audio quality of each remote user/host sending an audio stream. If a channel has multiple users/hosts sending audio streams, the SDK triggers this callback as many times.
-
-     @param uid User ID of the speaker.
-     @param quality Audio quality of the user: #QUALITY_TYPE.
-     @param delay Time delay (ms) of sending the audio packet from the sender to the receiver, including the time delay of audio sampling pre-processing, transmission, and the jitter buffer.
-     @param lost Packet loss rate (%) of the audio packet sent from the sender to the receiver.
-     */
-    virtual void onAudioQuality(uid_t uid, int quality, unsigned short delay, unsigned short lost) {
-        (void)uid;
-        (void)quality;
-        (void)delay;
-        (void)lost;
-    }
-
-    /** Reports the statistics of the current call. 
-    
-     The SDK triggers this callback once every two seconds after the user joins the channel.
-     
-     @param stats Statistics of the RtcEngine: RtcStats.
-     */
-    virtual void onRtcStats(const RtcStats& stats) {
-        (void)stats;
-    }
-
-    /** Reports the last mile network quality of each user in the channel once every two seconds.
-
-     Last mile refers to the connection between the local device and AR's edge server. This callback reports once every two seconds the last mile network conditions of each user in the channel. If a channel includes multiple users, the SDK triggers this callback as many times.
-
-     @param uid User ID. The network quality of the user with this @p uid is reported. If @p uid is 0, the local network quality is reported.
-     @param txQuality Uplink transmission quality rating of the user in terms of the transmission bitrate, packet loss rate, average RTT (Round-Trip Time), and jitter of the uplink network. @p txQuality is a quality rating helping you understand how well the current uplink network conditions can support the selected VideoEncoderConfiguration. For example, a 1000 Kbps uplink network may be adequate for video frames with a resolution of 640 &times; 480 and a frame rate of 15 fps in the Live-broadcast profile, but may be inadequate for resolutions higher than 1280 &times; 720. See #QUALITY_TYPE.
-     @param rxQuality Downlink network quality rating of the user in terms of the packet loss rate, average RTT, and jitter of the downlink network. See #QUALITY_TYPE.
-     */
-    virtual void onNetworkQuality(uid_t uid, int txQuality, int rxQuality) {
-    (void)uid;
-    (void)txQuality;
-    (void)rxQuality;
-    }
-
-    /** Reports the statistics of the local video stream.
-     *
-     * The SDK triggers this callback once every two seconds for each
-     * user/host. If there are multiple users/hosts in the channel, the SDK
-     * triggers this callback as many times.
-     *
-     * @note
-     * If you have called the \ref ar::rtc::IRtcEngine::enableDualStream
-     * "enableDualStream" method, the \ref onLocalVideoStats()
-     * "onLocalVideoStats" callback reports the statistics of the high-video
-     * stream (high bitrate, and high-resolution video stream).
-     *
-     * @param stats Statistics of the local video stream. See LocalVideoStats.
-     */
-  virtual void onLocalVideoStats(const LocalVideoStats& stats) {
-    (void)stats;
-    }
-
-    /** Reports the statistics of the video stream from each remote user/host.
-     *
-     * The SDK triggers this callback once every two seconds for each remote
-     * user/host. If a channel includes multiple remote users, the SDK
-     * triggers this callback as many times.
-     *
-     * @param stats Statistics of the remote video stream. See
-     * RemoteVideoStats.
-     */
-    virtual void onRemoteVideoStats(const RemoteVideoStats& stats) {
-      (void)stats;
-      }
-
-    /** Reports the statistics of the local audio stream.
-     *
-     * The SDK triggers this callback once every two seconds.
-     *
-     * @param stats The statistics of the local audio stream.
-     * See LocalAudioStats.
-     */
-    virtual void onLocalAudioStats(const LocalAudioStats& stats) {
-        (void)stats;
-    }
-
-    /** Reports the statistics of the audio stream from each remote user/host.
-
-     This callback replaces the \ref ar::rtc::IRtcEngineEventHandler::onAudioQuality "onAudioQuality" callback.
-
-     The SDK triggers this callback once every two seconds for each remote user/host. If a channel includes multiple remote users, the SDK triggers this callback as many times.
-
-     @param stats Pointer to the statistics of the received remote audio streams. See RemoteAudioStats.
-     */
-    virtual void onRemoteAudioStats(const RemoteAudioStats& stats) {
-        (void)stats;
-    }
-
-    /** Occurs when the local audio state changes.
-     *
-     * This callback indicates the state change of the local audio stream,
-     * including the state of the audio recording and encoding, and allows
-     * you to troubleshoot issues when exceptions occur.
-     *
-     * @note
-     * When the state is #LOCAL_AUDIO_STREAM_STATE_FAILED (3), see the `error`
-     * parameter for details.
-     *
-     * @param state State of the local audio. See #LOCAL_AUDIO_STREAM_STATE.
-     * @param error The error information of the local audio.
-     * See #LOCAL_AUDIO_STREAM_ERROR.
-     */
-    virtual void onLocalAudioStateChanged(LOCAL_AUDIO_STREAM_STATE state, LOCAL_AUDIO_STREAM_ERROR error) {
-        (void)state;
-        (void)error;
-    }
-
-    /** Occurs when the remote audio state changes.
-     *
-     * This callback indicates the state change of the remote audio stream.
-     *
-     * @param uid ID of the remote user whose audio state changes.
-     * @param state State of the remote audio. See #REMOTE_AUDIO_STATE.
-     * @param reason The reason of the remote audio state change.
-     * See #REMOTE_AUDIO_STATE_REASON.
-     * @param elapsed Time elapsed (ms) from the local user calling the
-     * \ref IRtcEngine::joinChannel "joinChannel" method until the SDK
-     * triggers this callback.
-     */
-    virtual void onRemoteAudioStateChanged(uid_t uid, REMOTE_AUDIO_STATE state, REMOTE_AUDIO_STATE_REASON reason, int elapsed) {
-        (void)uid;
-        (void)state;
-        (void)reason;
-        (void)elapsed;
-    }
-
-    /** Occurs when the audio publishing state changes.
-     *
-     * @since v3.1.0
-     *
-     * This callback indicates the publishing state change of the local audio stream.
-     *
-     * @param channel The channel name.
-     * @param oldState The previous publishing state. For details, see #STREAM_PUBLISH_STATE.
-     * @param newState The current publishing state. For details, see #STREAM_PUBLISH_STATE.
-     * @param elapseSinceLastState The time elapsed (ms) from the previous state to the current state.
-     */
-    virtual void onAudioPublishStateChanged(const char* channel, STREAM_PUBLISH_STATE oldState, STREAM_PUBLISH_STATE newState, int elapseSinceLastState) {
-        (void)channel;
-        (void)oldState;
-        (void)newState;
-        (void)elapseSinceLastState;
-    }
-
-    /** Occurs when the video publishing state changes.
-     *
-     * @since v3.1.0
-     *
-     * This callback indicates the publishing state change of the local video stream.
-     *
-     * @param channel The channel name.
-     * @param oldState The previous publishing state. For details, see #STREAM_PUBLISH_STATE.
-     * @param newState The current publishing state. For details, see #STREAM_PUBLISH_STATE.
-     * @param elapseSinceLastState The time elapsed (ms) from the previous state to the current state.
-     */
-    virtual void onVideoPublishStateChanged(const char* channel, STREAM_PUBLISH_STATE oldState, STREAM_PUBLISH_STATE newState, int elapseSinceLastState) {
-        (void)channel;
-        (void)oldState;
-        (void)newState;
-        (void)elapseSinceLastState;
-    }
-
-    /** Occurs when the audio subscribing state changes.
-     *
-     * @since v3.1.0
-     *
-     * This callback indicates the subscribing state change of a remote audio stream.
-     *
-     * @param channel The channel name.
-     * @param uid The ID of the remote user.
-     * @param oldState The previous subscribing state. For details, see #STREAM_SUBSCRIBE_STATE.
-     * @param newState The current subscribing state. For details, see #STREAM_SUBSCRIBE_STATE.
-     * @param elapseSinceLastState The time elapsed (ms) from the previous state to the current state.
-     */
-    virtual void onAudioSubscribeStateChanged(const char* channel, uid_t uid, STREAM_SUBSCRIBE_STATE oldState, STREAM_SUBSCRIBE_STATE newState, int elapseSinceLastState) {
-        (void)channel;
-        (void)uid;
-        (void)oldState;
-        (void)newState;
-        (void)elapseSinceLastState;
-    }
-
-    /** Occurs when the audio subscribing state changes.
-     *
-     * @since v3.1.0
-     *
-     * This callback indicates the subscribing state change of a remote video stream.
-     *
-     * @param channel The channel name.
-     * @param uid The ID of the remote user.
-     * @param oldState The previous subscribing state. For details, see #STREAM_SUBSCRIBE_STATE.
-     * @param newState The current subscribing state. For details, see #STREAM_SUBSCRIBE_STATE.
-     * @param elapseSinceLastState The time elapsed (ms) from the previous state to the current state.
-     */
-    virtual void onVideoSubscribeStateChanged(const char* channel, uid_t uid, STREAM_SUBSCRIBE_STATE oldState, STREAM_SUBSCRIBE_STATE newState, int elapseSinceLastState) {
-        (void)channel;
-        (void)uid;
-        (void)oldState;
-        (void)newState;
-        (void)elapseSinceLastState;
-    }
-
-    /** Reports which users are speaking, the speakers' volume and whether the local user is speaking.
-
-     This callback reports the IDs and volumes of the loudest speakers at the moment in the channel, and whether the local user is speaking.
-
-     By default, this callback is disabled. You can enable it by calling the \ref IRtcEngine::enableAudioVolumeIndication(int, int, bool) "enableAudioVolumeIndication" method.
-     Once enabled, this callback is triggered at the set interval, regardless of whether a user speaks or not.
-
-     The SDK triggers two independent `onAudioVolumeIndication` callbacks at one time, which separately report the volume information of the local user and all the remote speakers. 
-     For more information, see the detailed parameter descriptions.
-
-     @note
-     - To enable the voice activity detection of the local user, ensure that you set `report_vad`(true) in the `enableAudioVolumeIndication` method.
-     - Calling the \ref ar::rtc::IRtcEngine::muteLocalAudioStream "muteLocalAudioStream" method affects the SDK's behavior:
-        - If the local user calls the \ref ar::rtc::IRtcEngine::muteLocalAudioStream "muteLocalAudioStream" method, the SDK stops triggering the local user's callback.
-        - 20 seconds after a remote speaker calls the *muteLocalAudioStream* method, the remote speakers' callback excludes this remote user's information; 20 seconds after all remote users call the *muteLocalAudioStream* method, the SDK stops triggering the remote speakers' callback.
-     - An empty @p speakers array in the *onAudioVolumeIndication* callback suggests that no remote user is speaking at the moment.
-
-     @param speakers A pointer to AudioVolumeInfo:
-     - In the local user's callback, this struct contains the following members:
-       - `uid` = 0, 
-       - `volume` = `totalVolume`, which reports the sum of the voice volume and audio-mixing volume of the local user, and
-       - `vad`, which reports the voice activity status of the local user.
-     - In the remote speakers' callback, this array contains the following members:
-       - `uid` of the remote speaker,
-       - `volume`, which reports the sum of the voice volume and audio-mixing volume of each remote speaker, and
-       - `vad` = 0.
-       
-       An empty speakers array in the callback indicates that no remote user is speaking at the moment.
-     @param speakerNumber Total number of speakers. The value range is [0, 3].
-     - In the local user’s callback, `speakerNumber` = 1, regardless of whether the local user speaks or not.
-     - In the remote speakers' callback, the callback reports the IDs and volumes of the three loudest speakers when there are more than three remote users in the channel, and `speakerNumber` = 3.
-     @param totalVolume Total volume after audio mixing. The value ranges between 0 (lowest volume) and 255 (highest volume).
-     - In the local user’s callback, `totalVolume` is the sum of the voice volume and audio-mixing volume of the local user.
-     - In the remote speakers' callback, `totalVolume` is the sum of the voice volume and audio-mixing volume of all the remote speakers.
-     */
-    virtual void onAudioVolumeIndication(const AudioVolumeInfo* speakers, unsigned int speakerNumber, int totalVolume) {
-        (void)speakers;
-        (void)speakerNumber;
-        (void)totalVolume;
-    }
-
-    /** Occurs when the most active speaker is detected.
-
-     After a successful call of \ref IRtcEngine::enableAudioVolumeIndication(int, int, bool) "enableAudioVolumeIndication", 
-     the SDK continuously detects which remote user has the loudest volume. During the current period, the remote user, 
-     who is detected as the loudest for the most times, is the most active user.
-
-     When the number of user is no less than two and an active speaker exists, the SDK triggers this callback and reports the `uid` of the most active speaker.
-     - If the most active speaker is always the same user, the SDK triggers this callback only once.
-     - If the most active speaker changes to another user, the SDK triggers this callback again and reports the `uid` of the new active speaker.
-    
-     @param uid The user ID of the most active speaker.
-    */
-    virtual void onActiveSpeaker(uid_t uid) {
-        (void)uid;
-    }
-
-    /** **DEPRECATED** Occurs when the video stops playing.
-
-     The application can use this callback to change the configuration of the view (for example, displaying other pictures in the view) after the video stops playing.
-
-     Deprecated as of v2.4.1. Use LOCAL_VIDEO_STREAM_STATE_STOPPED(0) in the \ref ar::rtc::IRtcEngineEventHandler::onLocalVideoStateChanged "onLocalVideoStateChanged" callback instead.
-     */
-    virtual void onVideoStopped() {}
-
-    /** Occurs when the first local video frame is displayed/rendered on the local video view.
-
-    @param width Width (px) of the first local video frame.
-    @param height Height (px) of the first local video frame.
-    @param elapsed Time elapsed (ms) from the local user calling the \ref IRtcEngine::joinChannel "joinChannel" method until the SDK triggers this callback.
-    If you call the \ref IRtcEngine::startPreview "startPreview" method  before calling the *joinChannel* method, then @p elapsed is the time elapsed from calling the *startPreview* method until the SDK triggers this callback.
-    */
-    virtual void onFirstLocalVideoFrame(int width, int height, int elapsed) {
-        (void)width;
-        (void)height;
-        (void)elapsed;
-    }
-
-    /** Occurs when the first video frame is published.
-     *
-     * @since v3.1.0
-     *
-     * The SDK triggers this callback under one of the following circumstances:
-     * - The local client enables the video module and calls \ref IRtcEngine::joinChannel "joinChannel" successfully.
-     * - The local client calls \ref IRtcEngine::muteLocalVideoStream "muteLocalVideoStream(true)" and \ref IRtcEngine::muteLocalVideoStream "muteLocalVideoStream(false)" in sequence.
-     * - The local client calls \ref IRtcEngine::disableVideo "disableVideo" and \ref IRtcEngine::enableVideo "enableVideo" in sequence.
-     *
-     * @param elapsed The time elapsed (ms) from the local client calling \ref IRtcEngine::joinChannel "joinChannel" until the SDK triggers this callback.
-     */
-    virtual void onFirstLocalVideoFramePublished(int elapsed) {
-        (void)elapsed;
-    }
-
-    /** Occurs when the first remote video frame is received and decoded.
-     *
-     * @deprecated
-     * This callback is deprecated and replaced by the
-     * \ref onRemoteVideoStateChanged() "onRemoteVideoStateChanged" callback
-     * with the following parameters:
-     * - #REMOTE_VIDEO_STATE_STARTING (1)
-     * - #REMOTE_VIDEO_STATE_DECODING (2)
-     *
-     * This callback is triggered in either of the following scenarios:
-     *
-     * - The remote user joins the channel and sends the video stream.
-     * - The remote user stops sending the video stream and re-sends it after
-     * 15 seconds. Reasons for such an interruption include:
-     *  - The remote user leaves the channel.
-     *  - The remote user drops offline.
-     *  - The remote user calls the
-     * \ref ar::rtc::IRtcEngine::muteLocalVideoStream "muteLocalVideoStream"
-     *  method to stop sending the video stream.
-     *  - The remote user calls the
-     * \ref ar::rtc::IRtcEngine::disableVideo "disableVideo" method to
-     * disable video.
-     *
-     * The application can configure the user view settings in this callback.
-     *
-     * @param uid User ID of the remote user sending the video stream.
-     * @param width Width (px) of the video stream.
-     * @param height Height (px) of the video stream.
-     * @param elapsed Time elapsed (ms) from the local user calling the
-     * \ref IRtcEngine::joinChannel "joinChannel" method until the SDK
-     * triggers this callback.
-     */
-    virtual void onFirstRemoteVideoDecoded(uid_t uid, int width, int height, int elapsed) {
-        (void)uid;
-        (void)width;
-        (void)height;
-        (void)elapsed;
-    }
-
-    /** Occurs when the first remote video frame is rendered.
-
-    The SDK triggers this callback when the first frame of the remote video is displayed in the user's video window. The application can retrieve the time elapsed from a user joining the channel until the first video frame is displayed.
-
-    @param uid User ID of the remote user sending the video stream.
-    @param width Width (px) of the video frame.
-    @param height Height (px) of the video stream.
-    @param elapsed Time elapsed (ms) from the local user calling the \ref IRtcEngine::joinChannel "joinChannel" method until the SDK triggers this callback.
-    */
-    virtual void onFirstRemoteVideoFrame(uid_t uid, int width, int height, int elapsed) {
-        (void)uid;
-        (void)width;
-        (void)height;
-        (void)elapsed;
-    }
-
-    /** @deprecated This method is deprecated from v3.0.0, use the \ref ar::rtc::IRtcEngineEventHandler::onRemoteAudioStateChanged "onRemoteAudioStateChanged" callback instead.
-
-     Occurs when a remote user's audio stream playback pauses/resumes.
-
-     The SDK triggers this callback when the remote user stops or resumes sending the audio stream by calling the \ref ar::rtc::IRtcEngine::muteLocalAudioStream "muteLocalAudioStream" method.
-
-     @note This callback does not work properly when the number of users (in the `COMMUNICATION` profile) or hosts (in the `LIVE_BROADCASTING` profile) in the channel exceeds 17.
-
-     @param uid User ID of the remote user.
-     @param muted Whether the remote user's audio stream is muted/unmuted:
-     - true: Muted.
-     - false: Unmuted.
-     */
-    virtual void onUserMuteAudio(uid_t uid, bool muted) {
-        (void)uid;
-        (void)muted;
-    }
-     
-    /** Occurs when a remote user's video stream playback pauses/resumes.
-     *
-     * You can also use the
-     * \ref onRemoteVideoStateChanged() "onRemoteVideoStateChanged" callback
-     * with the following parameters:
-     * - #REMOTE_VIDEO_STATE_STOPPED (0) and
-     * #REMOTE_VIDEO_STATE_REASON_REMOTE_MUTED (5).
-     * - #REMOTE_VIDEO_STATE_DECODING (2) and
-     * #REMOTE_VIDEO_STATE_REASON_REMOTE_UNMUTED (6).
-     *
-     * The SDK triggers this callback when the remote user stops or resumes
-     * sending the video stream by calling the
-     * \ref ar::rtc::IRtcEngine::muteLocalVideoStream
-     * "muteLocalVideoStream" method.
-     *
-     * @note This callback does not work properly when the number of users (in the `COMMUNICATION` profile) or hosts (in the `LIVE_BROADCASTING` profile) in the channel exceeds 17.
-     *
-     * @param uid User ID of the remote user.
-     * @param muted Whether the remote user's video stream playback is
-     * paused/resumed:
-     * - true: Paused.
-     * - false: Resumed.
-     */
-    virtual void onUserMuteVideo(uid_t uid, bool muted) {
-        (void)uid;
-        (void)muted;
-    }
-
-    /** Occurs when a specific remote user enables/disables the video
-     * module.
-     *
-     * @deprecated
-     * This callback is deprecated and replaced by the
-     * \ref onRemoteVideoStateChanged() "onRemoteVideoStateChanged" callback
-     * with the following parameters:
-     * - #REMOTE_VIDEO_STATE_STOPPED (0) and
-     * #REMOTE_VIDEO_STATE_REASON_REMOTE_MUTED (5).
-     * - #REMOTE_VIDEO_STATE_DECODING (2) and
-     * #REMOTE_VIDEO_STATE_REASON_REMOTE_UNMUTED (6).
-     *
-     * Once the video module is disabled, the remote user can only use a
-     * voice call. The remote user cannot send or receive any video from
-     * other users.
-     *
-     * The SDK triggers this callback when the remote user enables or disables
-     * the video module by calling the
-     * \ref ar::rtc::IRtcEngine::enableVideo "enableVideo" or
-     * \ref ar::rtc::IRtcEngine::disableVideo "disableVideo" method.
-     *
-     * @note This callback returns invalid when the number of users in a
-     * channel exceeds 20.
-     *
-     * @param uid User ID of the remote user.
-     * @param enabled Whether the remote user enables/disables the video
-     * module:
-     * - true: Enable. The remote user can enter a video session.
-     * - false: Disable. The remote user can only enter a voice session, and
-     * cannot send or receive any video stream.
-     */
-    	virtual void onUserEnableVideo(uid_t uid, bool enabled) {
-    		(void)uid;
-    		(void)enabled;
-    	}
-
-    /** Occurs when the audio device state changes.
-
-     This callback notifies the application that the system's audio device state is changed. For example, a headset is unplugged from the device.
-
-     @param deviceId Pointer to the device ID.
-     @param deviceType Device type: #MEDIA_DEVICE_TYPE.
-     @param deviceState Device state: #MEDIA_DEVICE_STATE_TYPE.
-     */
-    virtual void onAudioDeviceStateChanged(const char* deviceId, int deviceType, int deviceState) {
-        (void)deviceId;
-        (void)deviceType;
-        (void)deviceState;
-    }
-
-    /** Occurs when the volume of the playback device, microphone, or application changes.
-
-     @param deviceType Device type: #MEDIA_DEVICE_TYPE.
-     @param volume Volume of the device. The value ranges between 0 and 255.
-     @param muted
-     - true: The audio device is muted.
-     - false: The audio device is not muted.
-     */
-    virtual void onAudioDeviceVolumeChanged(MEDIA_DEVICE_TYPE deviceType, int volume, bool muted) {
-        (void)deviceType;
-        (void)volume;
-        (void)muted;
-    }
-
-    /** **DEPRECATED** Occurs when the camera turns on and is ready to capture the video.
-
-     If the camera fails to turn on, fix the error reported in the \ref IRtcEngineEventHandler::onError "onError" callback.
-
-     Deprecated as of v2.4.1. Use #LOCAL_VIDEO_STREAM_STATE_CAPTURING (1) in the \ref ar::rtc::IRtcEngineEventHandler::onLocalVideoStateChanged "onLocalVideoStateChanged" callback instead.
-     */
-    virtual void onCameraReady() {}
-
-    /** Occurs when the camera focus area changes.
-
-     The SDK triggers this callback when the local user changes the camera focus position by calling the setCameraFocusPositionInPreview method.
-     
-     @note This callback is for Android and iOS only.
-
-     @param x x coordinate of the changed camera focus area.
-     @param y y coordinate of the changed camera focus area.
-     @param width Width of the changed camera focus area.
-     @param height Height of the changed camera focus area.
-     */
-    virtual void onCameraFocusAreaChanged(int x, int y, int width, int height) {
-        (void)x;
-        (void)y;
-        (void)width;
-        (void)height;
-    }
-#if defined(__ANDROID__) || (defined(__APPLE__) && TARGET_OS_IOS)
-    /**
-     * Reports the face detection result of the local user. Applies to Android and iOS only.
-     * @since v3.0.1
-     *
-     * Once you enable face detection by calling \ref IRtcEngine::enableFaceDetection "enableFaceDetection"(true), you can get the following information on the local user in real-time:
-     * - The width and height of the local video.
-     * - The position of the human face in the local video.
-     * - The distance between the human face and the device screen. This value is based on the fitting calculation of the local video size and the position of the human face.
-     *
-     * @note
-     * - If the SDK does not detect a face, it reduces the frequency of this callback to reduce power consumption on the local device.
-     * - The SDK stops triggering this callback when a human face is in close proximity to the screen.
-     * - On Android, the `distance` value reported in this callback may be slightly different from the actual distance. Therefore, AR does not recommend using it for
-     * accurate calculation.
-     * @param imageWidth The width (px) of the local video.
-     * @param imageHeight The height (px) of the local video.
-     * @param vecRectangle The position and size of the human face on the local video:
-     * - `x`: The x coordinate (px) of the human face in the local video. Taking the top left corner of the captured video as the origin,
-     * the x coordinate represents the relative lateral displacement of the top left corner of the human face to the origin.
-     * - `y`: The y coordinate (px) of the human face in the local video. Taking the top left corner of the captured video as the origin,
-     * the y coordinate represents the relative longitudinal displacement of the top left corner of the human face to the origin.
-     * - `width`: The width (px) of the human face in the captured video.
-     * - `height`: The height (px) of the human face in the captured video.
-     * @param vecDistance The distance (cm) between the human face and the screen.
-     * @param numFaces The number of faces detected. If the value is 0, it means that no human face is detected.
-     */
-    virtual void onFacePositionChanged(int imageWidth, int imageHeight, Rectangle* vecRectangle, int* vecDistance, int numFaces){
-       (void)imageWidth;
-       (void)imageHeight;
-       (void)vecRectangle;
-       (void)vecDistance;
-        (void)numFaces;
-    }
-#endif
-    /** Occurs when the camera exposure area changes.
-
-    The SDK triggers this callback when the local user changes the camera exposure position by calling the setCameraExposurePosition method.
-     
-     @note This callback is for Android and iOS only.
-     
-     @param x x coordinate of the changed camera exposure area.
-     @param y y coordinate of the changed camera exposure area.
-     @param width Width of the changed camera exposure area.
-     @param height Height of the changed camera exposure area.
-     */
-    virtual void onCameraExposureAreaChanged(int x, int y, int width, int height) {
-        (void)x;
-        (void)y;
-        (void)width;
-        (void)height;
-    }
-
-    /** Occurs when the audio mixing file playback finishes.
-
-     **DEPRECATED**  use onAudioMixingStateChanged instead.
-
-     You can start an audio mixing file playback by calling the \ref IRtcEngine::startAudioMixing "startAudioMixing" method. The SDK triggers this callback when the audio mixing file playback finishes.
-
-     If the *startAudioMixing* method call fails, an error code returns in the \ref IRtcEngineEventHandler::onError "onError" callback.
-
-     */
-    virtual void onAudioMixingFinished() {
-    }
-
-    /** Occurs when the state of the local user's audio mixing file changes.
-
-     When you call the \ref IRtcEngine::startAudioMixing "startAudioMixing" method and the state of audio mixing file changes, the SDK triggers this callback.
-     - When the audio mixing file plays, pauses playing, or stops playing, this callback returns 710, 711, or 713 in @p state, and 0 in @p errorCode.
-     - When exceptions occur during playback, this callback returns 714 in @p state and an error in @p errorCode.
-     - If the local audio mixing file does not exist, or if the SDK does not support the file format or cannot access the music file URL, the SDK returns WARN_AUDIO_MIXING_OPEN_ERROR = 701.
-
-     @param state The state code. See #AUDIO_MIXING_STATE_TYPE.
-     @param errorCode The error code. See #AUDIO_MIXING_ERROR_TYPE.
-     */
-    virtual void onAudioMixingStateChanged(AUDIO_MIXING_STATE_TYPE state, AUDIO_MIXING_ERROR_TYPE errorCode){
-    }
-    /** Occurs when a remote user starts audio mixing.
-
-     When a remote user calls \ref IRtcEngine::startAudioMixing "startAudioMixing" to play the background music, the SDK reports this callback.
-     */
-    virtual void onRemoteAudioMixingBegin() {
-    }
-    /** Occurs when a remote user finishes audio mixing.
-     */
-    virtual void onRemoteAudioMixingEnd() {
-    }
-
-    /** Occurs when the local audio effect playback finishes.
-
-     The SDK triggers this callback when the local audio effect file playback finishes.
-
-     @param soundId ID of the local audio effect. Each local audio effect has a unique ID.
-     */
-    virtual void onAudioEffectFinished(int soundId) {
-    }
-
-
-    /**
-     Occurs when the SDK decodes the first remote audio frame for playback.
-
-     @deprecated v3.0.0
-
-     This callback is deprecated. Use `onRemoteAudioStateChanged` instead.
-
-     This callback is triggered in either of the following scenarios:
-
-     - The remote user joins the channel and sends the audio stream.
-     - The remote user stops sending the audio stream and re-sends it after 15 seconds. Reasons for such an interruption include:
-         - The remote user leaves channel.
-         - The remote user drops offline.
-         - The remote user calls the \ref ar::rtc::IRtcEngine::muteLocalAudioStream "muteLocalAudioStream" method to stop sending the local audio stream.
-         - The remote user calls the \ref ar::rtc::IRtcEngine::disableAudio "disableAudio" method to disable audio.
-
-     @param uid User ID of the remote user sending the audio stream.
-     @param elapsed Time elapsed (ms) from the local user calling the \ref IRtcEngine::joinChannel "joinChannel" method until the SDK triggers this callback.
-     */
-    virtual void onFirstRemoteAudioDecoded(uid_t uid, int elapsed) {
-        (void)uid;
-        (void)elapsed;
-    }
-
-    /** Occurs when the video device state changes.
-
-     @note On a Windows device with an external camera for video capturing, the video disables once the external camera is unplugged.
-
-     @param deviceId Pointer to the device ID of the video device that changes state.
-     @param deviceType Device type: #MEDIA_DEVICE_TYPE.
-     @param deviceState Device state: #MEDIA_DEVICE_STATE_TYPE.
-     */
-    virtual void onVideoDeviceStateChanged(const char* deviceId, int deviceType, int deviceState) {
-        (void)deviceId;
-        (void)deviceType;
-        (void)deviceState;
-    }
-
-    /** Occurs when the local video stream state changes.
-
-     This callback indicates the state of the local video stream, including camera capturing and video encoding, and allows you to troubleshoot issues when exceptions occur.
-
-     @note For some device models, the SDK will not trigger this callback when the state of the local video changes while the local video capturing device is in use, so you have to make your own timeout judgment.
-
-     @param localVideoState State type #LOCAL_VIDEO_STREAM_STATE. When the state is LOCAL_VIDEO_STREAM_STATE_FAILED (3), see the `error` parameter for details.
-     @param error The detailed error information: #LOCAL_VIDEO_STREAM_ERROR.
-     */
-    virtual void onLocalVideoStateChanged(LOCAL_VIDEO_STREAM_STATE localVideoState, LOCAL_VIDEO_STREAM_ERROR error) {
-        (void)localVideoState;
-        (void)error;
-    }
-
-    /** Occurs when the video size or rotation of a specified user changes.
-
-     @param uid User ID of the remote user or local user (0) whose video size or rotation changes.
-     @param width New width (pixels) of the video.
-     @param height New height (pixels) of the video.
-     @param rotation New rotation of the video [0 to 360).
-     */
-    virtual void onVideoSizeChanged(uid_t uid, int width, int height, int rotation) {
-        (void)uid;
-        (void)width;
-        (void)height;
-        (void)rotation;
-    }
-    /** Occurs when the remote video state changes.
-     *
-     * @param uid ID of the remote user whose video state changes.
-     * @param state State of the remote video. See #REMOTE_VIDEO_STATE.
-     * @param reason The reason of the remote video state change. See
-     * #REMOTE_VIDEO_STATE_REASON.
-     * @param elapsed Time elapsed (ms) from the local user calling the
-     * \ref ar::rtc::IRtcEngine::joinChannel "joinChannel" method until the
-     * SDK triggers this callback.
-     */
-    virtual void onRemoteVideoStateChanged(uid_t uid, REMOTE_VIDEO_STATE state, REMOTE_VIDEO_STATE_REASON reason, int elapsed) {
-        (void)uid;
-        (void)state;
-        (void)reason;
-        (void)elapsed;
-    }
-
-	/** Occurs when a specified remote user enables/disables the local video
-     * capturing function.
-     *
-     * @deprecated
-     * This callback is deprecated and replaced by the
-     * \ref onRemoteVideoStateChanged() "onRemoteVideoStateChanged" callback
-     * with the following parameters:
-     * - #REMOTE_VIDEO_STATE_STOPPED (0) and
-     * #REMOTE_VIDEO_STATE_REASON_REMOTE_MUTED (5).
-     * - #REMOTE_VIDEO_STATE_DECODING (2) and
-     * #REMOTE_VIDEO_STATE_REASON_REMOTE_UNMUTED (6).
-     *
-     * This callback is only applicable to the scenario when the user only
-     * wants to watch the remote video without sending any video stream to the
-     * other user.
-     *
-     * The SDK triggers this callback when the remote user resumes or stops
-     * capturing the video stream by calling the
-     * \ref ar::rtc::IRtcEngine::enableLocalVideo "enableLocalVideo" method.
-     *
-     * @param uid User ID of the remote user.
-     * @param enabled Whether the specified remote user enables/disables the
-     * local video capturing function:
-     * - true: Enable. Other users in the channel can see the video of this
-     * remote user.
-     * - false: Disable. Other users in the channel can no longer receive the
-     * video stream from this remote user, while this remote user can still
-     * receive the video streams from other users.
-     */
-    virtual void onUserEnableLocalVideo(uid_t uid, bool enabled) {
-        (void)uid;
-        (void)enabled;
-    }
-
-//    virtual void onStreamError(int streamId, int code, int parameter, const char* message, size_t length) {}
-    /** Occurs when the local user receives the data stream from the remote user within five seconds.
-
-    The SDK triggers this callback when the local user receives the stream message that the remote user sends by calling the \ref ar::rtc::IRtcEngine::sendStreamMessage "sendStreamMessage" method.
-    @param uid User ID of the remote user sending the message.
-    @param streamId Stream ID.
-    @param data Pointer to the data received by the local user.
-    @param length Length of the data in bytes.
-    */
-    virtual void onStreamMessage(uid_t uid, int streamId, const char* data, size_t length) {
-        (void)uid;
-        (void)streamId;
-        (void)data;
-        (void)length;
-    }
-
-	/** Occurs when the local user does not receive the data stream from the remote user within five seconds.
-
-     The SDK triggers this callback when the local user fails to receive the stream message that the remote user sends by calling the \ref ar::rtc::IRtcEngine::sendStreamMessage "sendStreamMessage" method.
-     @param uid User ID of the remote user sending the message.
-     @param streamId Stream ID.
-     @param code Error code: #ERROR_CODE_TYPE.
-     @param missed Number of lost messages.
-     @param cached Number of incoming cached messages when the data stream is interrupted.
-     */
-	virtual void onStreamMessageError(uid_t uid, int streamId, int code, int missed, int cached) {
-        (void)uid;
-        (void)streamId;
-        (void)code;
-        (void)missed;
-        (void)cached;
-    }
-
-    /** Occurs when the media engine loads.*/
-    virtual void onMediaEngineLoadSuccess() {
-    }
-    /** Occurs when the media engine call starts.*/
-    virtual void onMediaEngineStartCallSuccess() {
-    }
-    /// @cond
-    /** Reports whether the super-resolution algorithm is enabled.
-     *
-     * @since v3.2.0
-     *
-     * After calling \ref IRtcEngine::enableRemoteSuperResolution "enableRemoteSuperResolution", the SDK triggers this
-     * callback to report whether the super-resolution algorithm is successfully enabled. If not successfully enabled,
-     * you can use reason for troubleshooting.
-     *
-     * @param uid The ID of the remote user.
-     * @param enabled Whether the super-resolution algorithm is successfully enabled:
-     * - true: The super-resolution algorithm is successfully enabled.
-     * - false: The super-resolution algorithm is not successfully enabled.
-     * @param reason The reason why the super-resolution algorithm is not successfully enabled. See #SUPER_RESOLUTION_STATE_REASON.
-     */
-    virtual void onUserSuperResolutionEnabled(uid_t uid, bool enabled, SUPER_RESOLUTION_STATE_REASON reason) {
-        (void)uid;
-        (void)enabled;
-        (void)reason;
-    }
-    /// @endcond
-
-    /** Occurs when the state of the media stream relay changes.
-     *
-     * The SDK returns the state of the current media relay with any error
-     * message.
-     *
-     * @param state The state code in #CHANNEL_MEDIA_RELAY_STATE.
-     * @param code The error code in #CHANNEL_MEDIA_RELAY_ERROR.
-     */
-    virtual void onChannelMediaRelayStateChanged(CHANNEL_MEDIA_RELAY_STATE state,CHANNEL_MEDIA_RELAY_ERROR code) {
-    }
-
-    /** Reports events during the media stream relay.
-     *
-     * @param code The event code in #CHANNEL_MEDIA_RELAY_EVENT.
-     */
-    virtual void onChannelMediaRelayEvent(CHANNEL_MEDIA_RELAY_EVENT code) {
-    }
-
-    /** Occurs when the engine sends the first local audio frame.
-
-     @deprecated Deprecated as of v3.1.0. Use the \ref IRtcEngineEventHandler::onFirstLocalAudioFramePublished "onFirstLocalAudioFramePublished" callback instead.
-
-     @param elapsed Time elapsed (ms) from the local user calling \ref IRtcEngine::joinChannel "joinChannel" until the SDK triggers this callback.
-     */
-    virtual void onFirstLocalAudioFrame(int elapsed) {
-        (void)elapsed;
-    }
-
-    /** Occurs when the first audio frame is published.
-     *
-     * @since v3.1.0
-     *
-     * The SDK triggers this callback under one of the following circumstances:
-     * - The local client enables the audio module and calls \ref IRtcEngine::joinChannel "joinChannel" successfully.
-     * - The local client calls \ref IRtcEngine::muteLocalAudioStream "muteLocalAudioStream(true)" and \ref IRtcEngine::muteLocalAudioStream "muteLocalAudioStream(false)" in sequence.
-     * - The local client calls \ref IRtcEngine::disableAudio "disableAudio" and \ref IRtcEngine::enableAudio "enableAudio" in sequence.
-     *
-     * @param elapsed The time elapsed (ms) from the local client calling \ref IRtcEngine::joinChannel "joinChannel" until the SDK triggers this callback.
-     */
-    virtual void onFirstLocalAudioFramePublished(int elapsed) {
-        (void)elapsed;
-    }
-
-    /** Occurs when the engine receives the first audio frame from a specific remote user.
-
-    @param uid User ID of the remote user.
-    @param elapsed Time elapsed (ms) from the remote user calling \ref IRtcEngine::joinChannel "joinChannel" until the SDK triggers this callback.
-    */
-    virtual void onFirstRemoteAudioFrame(uid_t uid, int elapsed) {
-        (void)uid;
-        (void)elapsed;
-    }
-
-  /**
-   Occurs when the state of the RTMP streaming changes.
-
-   The SDK triggers this callback to report the result of the local user calling the \ref ar::rtc::IRtcEngine::addPublishStreamUrl "addPublishStreamUrl" or \ref ar::rtc::IRtcEngine::removePublishStreamUrl "removePublishStreamUrl" method.
-
-   This callback indicates the state of the RTMP streaming. When exceptions occur, you can troubleshoot issues by referring to the detailed error descriptions in the *errCode* parameter.
-
-   @param url The RTMP URL address.
-   @param state The RTMP streaming state. See: #RTMP_STREAM_PUBLISH_STATE.
-   @param errCode The detailed error information for streaming. See: #RTMP_STREAM_PUBLISH_ERROR.
-   */
-  virtual void onRtmpStreamingStateChanged(const char *url, RTMP_STREAM_PUBLISH_STATE state, RTMP_STREAM_PUBLISH_ERROR errCode) {
-    (void) url;
-    (void) state;
-    (void) errCode;
-  }
-
- /** Reports events during the RTMP streaming.
-  *
-  * @since v3.1.0
-  *
-  * @param url The RTMP streaming URL.
-  * @param eventCode The event code. See #RTMP_STREAMING_EVENT
-  */
-  virtual void onRtmpStreamingEvent(const char* url, RTMP_STREAMING_EVENT eventCode) {
-      (void) url;
-      (void) eventCode;
-  }
-
-    /** @deprecated This method is deprecated, use the \ref ar::rtc::IRtcEngineEventHandler::onRtmpStreamingStateChanged "onRtmpStreamingStateChanged" callback instead.
-
-     Reports the result of calling the \ref IRtcEngine::addPublishStreamUrl "addPublishStreamUrl" method. (CDN live only.)
-
-     @param url The RTMP URL address.
-     @param error Error code: #ERROR_CODE_TYPE. Main errors include:
-     - #ERR_OK (0): The publishing succeeds.
-     - #ERR_FAILED (1): The publishing fails.
-     - #ERR_INVALID_ARGUMENT (2): Invalid argument used. If, for example, you did not call \ref ar::rtc::IRtcEngine::setLiveTranscoding "setLiveTranscoding" to configure LiveTranscoding before calling \ref ar::rtc::IRtcEngine::addPublishStreamUrl "addPublishStreamUrl", the SDK reports #ERR_INVALID_ARGUMENT.
-     - #ERR_TIMEDOUT (10): The publishing timed out.
-     - #ERR_ALREADY_IN_USE (19): The chosen URL address is already in use for CDN live streaming.
-     - #ERR_RESOURCE_LIMITED (22): The backend system does not have enough resources for the CDN live streaming.
-     - #ERR_ENCRYPTED_STREAM_NOT_ALLOWED_PUBLISH (130): You cannot publish an encrypted stream.
-     - #ERR_PUBLISH_STREAM_CDN_ERROR (151)
-     - #ERR_PUBLISH_STREAM_NUM_REACH_LIMIT (152)
-     - #ERR_PUBLISH_STREAM_NOT_AUTHORIZED (153)
-     - #ERR_PUBLISH_STREAM_INTERNAL_SERVER_ERROR (154)
-     - #ERR_PUBLISH_STREAM_FORMAT_NOT_SUPPORTED (156)
-     */
-    virtual void onStreamPublished(const char *url, int error) {
-        (void)url;
-        (void)error;
-    }
-    /** Reports the result of calling the \ref ar::rtc::IRtcEngine::removePublishStreamUrl "removePublishStreamUrl" method. (CDN live only.)
-
-     This callback indicates whether you have successfully removed an RTMP stream from the CDN.
-
-     @param url The RTMP URL address.
-     */
-    virtual void onStreamUnpublished(const char *url) {
-        (void)url;
-    }
-/** Occurs when the publisher's transcoding is updated. 
- * 
- * When the `LiveTranscoding` class in the \ref ar::rtc::IRtcEngine::setLiveTranscoding "setLiveTranscoding" method updates, the SDK triggers the `onTranscodingUpdated` callback to report the update information to the local host.
- * 
- * @note If you call the `setLiveTranscoding` method to set the LiveTranscoding class for the first time, the SDK does not trigger the `onTranscodingUpdated` callback.
- * 
- */
-    virtual void onTranscodingUpdated() {
-    }
-   /** Occurs when a voice or video stream URL address is added to a live broadcast.
-
-    @param url Pointer to the URL address of the externally injected stream.
-    @param uid User ID.
-    @param status State of the externally injected stream: #INJECT_STREAM_STATUS.
-    */
-    virtual void onStreamInjectedStatus(const char* url, uid_t uid, int status) {
-        (void)url;
-        (void)uid;
-        (void)status;
-    }
-
-    /** Occurs when the local audio route changes.
-
-     The SDK triggers this callback when the local audio route switches to an earpiece, speakerphone, headset, or Bluetooth device.
-
-     @note This callback is for Android and iOS only.
-
-     @param routing Audio output routing. See: #AUDIO_ROUTE_TYPE.
-     */
-    virtual void onAudioRouteChanged(AUDIO_ROUTE_TYPE routing) {
-		(void)routing;
-	}
-
-   /** Occurs when the locally published media stream falls back to an audio-only stream due to poor network conditions or switches back to the video after the network conditions improve.
-
-    If you call \ref IRtcEngine::setLocalPublishFallbackOption "setLocalPublishFallbackOption" and set *option* as #STREAM_FALLBACK_OPTION_AUDIO_ONLY, the SDK triggers this callback when the locally published stream falls back to audio-only mode due to poor uplink conditions, or when the audio stream switches back to the video after the uplink network condition improves.
-
-    @param isFallbackOrRecover Whether the locally published stream falls back to audio-only or switches back to the video:
-    - true: The locally published stream falls back to audio-only due to poor network conditions.
-    - false: The locally published stream switches back to the video after the network conditions improve.
-    */
-    virtual void onLocalPublishFallbackToAudioOnly(bool isFallbackOrRecover) {
-        (void)isFallbackOrRecover;
-    }
-
-    /** Occurs when the remote media stream falls back to audio-only stream
-     * due to poor network conditions or switches back to the video stream
-     * after the network conditions improve.
-     *
-     * If you call
-     * \ref IRtcEngine::setRemoteSubscribeFallbackOption
-     * "setRemoteSubscribeFallbackOption" and set
-     * @p option as #STREAM_FALLBACK_OPTION_AUDIO_ONLY, the SDK triggers this
-     * callback when the remote media stream falls back to audio-only mode due
-     * to poor uplink conditions, or when the remote media stream switches
-     * back to the video after the uplink network condition improves.
-     *
-     * @note Once the remote media stream switches to the low stream due to
-     * poor network conditions, you can monitor the stream switch between a
-     * high and low stream in the RemoteVideoStats callback.
-     *
-     * @param uid ID of the remote user sending the stream.
-     * @param isFallbackOrRecover Whether the remotely subscribed media stream
-     * falls back to audio-only or switches back to the video:
-     * - true: The remotely subscribed media stream falls back to audio-only
-     * due to poor network conditions.
-     * - false: The remotely subscribed media stream switches back to the
-     * video stream after the network conditions improved.
-     */
-    virtual void onRemoteSubscribeFallbackToAudioOnly(uid_t uid, bool isFallbackOrRecover) {
-        (void)uid;
-        (void)isFallbackOrRecover;
-    }
-
-    /** Reports the transport-layer statistics of each remote audio stream.
-     *
-     * @deprecated
-     * This callback is deprecated and replaced by the
-     * \ref onRemoteAudioStats() "onRemoteAudioStats" callback.
-     *
-     * This callback reports the transport-layer statistics, such as the
-     * packet loss rate and network time delay, once every two seconds after
-     * the local user receives an audio packet from a remote user.
-     *
-     * @param uid  User ID of the remote user sending the audio packet.
-     * @param delay Network time delay (ms) from the remote user sending the
-     * audio packet to the local user.
-     * @param lost Packet loss rate (%) of the audio packet sent from the
-     * remote user.
-     * @param rxKBitRate  Received bitrate (Kbps) of the audio packet sent
-     * from the remote user.
-     */
-    virtual void onRemoteAudioTransportStats(
-        uid_t uid, unsigned short delay, unsigned short lost,
-        unsigned short rxKBitRate) {
-        (void)uid;
-        (void)delay;
-        (void)lost;
-        (void)rxKBitRate;
-    }
-
-    /** Reports the transport-layer statistics of each remote video stream.
-     *
-     * @deprecated
-     * This callback is deprecated and replaced by the
-     * \ref onRemoteVideoStats() "onRemoteVideoStats" callback.
-     *
-     * This callback reports the transport-layer statistics, such as the
-     * packet loss rate and network time delay, once every two seconds after
-     * the local user receives a video packet from a remote user.
-     *
-     * @param uid User ID of the remote user sending the video packet.
-     * @param delay Network time delay (ms) from the remote user sending the
-     * video packet to the local user.
-     * @param lost Packet loss rate (%) of the video packet sent from the
-     * remote user.
-     * @param rxKBitRate Received bitrate (Kbps) of the video packet sent
-     * from the remote user.
-     */
-    virtual void onRemoteVideoTransportStats(
-        uid_t uid, unsigned short delay, unsigned short lost,
-        unsigned short rxKBitRate) {
-        (void)uid;
-        (void)delay;
-        (void)lost;
-        (void)rxKBitRate;
-    }
-
-    /** **DEPRECATED** Occurs when the microphone is enabled/disabled.
-     *
-     * The \ref onMicrophoneEnabled() "onMicrophoneEnabled" callback is
-     * deprecated. Use #LOCAL_AUDIO_STREAM_STATE_STOPPED (0) or
-     * #LOCAL_AUDIO_STREAM_STATE_RECORDING (1) in the
-     * \ref onLocalAudioStateChanged() "onLocalAudioStateChanged" callback
-     * instead.
-     *
-     * The SDK triggers this callback when the local user resumes or stops
-     * capturing the local audio stream by calling the
-     * \ref ar::rtc::IRtcEngine::enableLocalAudio "enbaleLocalAudio" method.
-     *
-     * @param enabled Whether the microphone is enabled/disabled:
-     * - true: Enabled.
-     * - false: Disabled.
-     */
-    virtual void onMicrophoneEnabled(bool enabled) {
-        (void)enabled;
-    }
-    /** Occurs when the connection state between the SDK and the server changes.
-
-     @param state See #CONNECTION_STATE_TYPE.
-     @param reason See #CONNECTION_CHANGED_REASON_TYPE.
-     */
-    virtual void onConnectionStateChanged(
-        CONNECTION_STATE_TYPE state, CONNECTION_CHANGED_REASON_TYPE reason) {
-      (void)state;
-      (void)reason;
-    }
-
-    /** Occurs when the local network type changes.
-
-	When the network connection is interrupted, this callback indicates whether the interruption is caused by a network type change or poor network conditions.
-
-     @param type See #NETWORK_TYPE.
-     */
-    virtual void onNetworkTypeChanged(NETWORK_TYPE type) {
-      (void)type;
-    }
-    /** Occurs when the local user successfully registers a user account by calling the \ref ar::rtc::IRtcEngine::registerLocalUserAccount "registerLocalUserAccount" method or joins a channel by calling the \ref ar::rtc::IRtcEngine::joinChannelWithUserAccount "joinChannelWithUserAccount" method.This callback reports the user ID and user account of the local user.
-
-     @param uid The ID of the local user.
-     @param userAccount The user account of the local user.
-     */
-    virtual void onLocalUserRegistered(uid_t uid, const char* userAccount) {
-      (void)uid;
-      (void)userAccount;
-    }
-    /** Occurs when the SDK gets the user ID and user account of the remote user.
-
-     After a remote user joins the channel, the SDK gets the UID and user account of the remote user,
-     caches them in a mapping table object (`userInfo`), and triggers this callback on the local client.
-
-     @param uid The ID of the remote user.
-     @param info The `UserInfo` object that contains the user ID and user account of the remote user.
-     */
-    virtual void onUserInfoUpdated(uid_t uid, const UserInfo& info) {
-      (void)uid;
-      (void)info;
-    }
-};
-
-/**
-* Video device collection methods.
-
- The IVideoDeviceCollection interface class retrieves the video device information.
-*/
-class IVideoDeviceCollection
-{
-protected:
-    virtual ~IVideoDeviceCollection(){}
-public:
-    /** Retrieves the total number of the indexed video devices in the system.
-
-    @return Total number of the indexed video devices:
-    */
-    virtual int getCount() = 0;
-
-    /** Retrieves a specified piece of information about an indexed video device.
-
-     @param index The specified index of the video device that must be less than the return value of \ref IVideoDeviceCollection::getCount "getCount".
-     @param deviceName Pointer to the video device name.
-     @param deviceId Pointer to the video device ID.
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int getDevice(int index, char deviceName[MAX_DEVICE_ID_LENGTH], char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;
-
-    /** Sets the device with the device ID.
-
-     @param deviceId Device ID of the device.
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int setDevice(const char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;
-
-    /** Releases all IVideoDeviceCollection resources.
-    */
-    virtual void release() = 0;
-};
-
-/** Video device management methods.
-
- The IVideoDeviceManager interface class tests the video device interfaces. Instantiate an AVideoDeviceManager class to retrieve an IVideoDeviceManager interface.
-*/
-class IVideoDeviceManager
-{
-protected:
-    virtual ~IVideoDeviceManager(){}
-public:
-
-    /** Enumerates the video devices.
-
-     This method returns an IVideoDeviceCollection object including all video devices in the system. With the IVideoDeviceCollection object, the application can enumerate the video devices. The application must call the \ref IVideoDeviceCollection::release "release" method to release the returned object after using it.
-
-     @return
-     - An IVideoDeviceCollection object including all video devices in the system: Success.
-     - NULL: Failure.
-     */
-    virtual IVideoDeviceCollection* enumerateVideoDevices() = 0;
-
-    /** Starts the video-capture device test.
-
-     This method tests whether the video-capture device works properly. Before calling this method, ensure that you have already called the \ref IRtcEngine::enableVideo "enableVideo" method, and the window handle (*hwnd*) parameter is valid.
-
-     @param hwnd The window handle used to display the screen.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int startDeviceTest(view_t hwnd) = 0;
-
-    /** Stops the video-capture device test.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int stopDeviceTest() = 0;
-
-    /** Sets a device with the device ID.
-
-     @param deviceId Pointer to the video-capture device ID. Call the \ref IVideoDeviceManager::enumerateVideoDevices "enumerateVideoDevices" method to retrieve it.
-
-     @note Plugging or unplugging the device does not change the device ID.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int setDevice(const char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;
-
-    /** Retrieves the video-capture device that is in use.
-
-     @param deviceId Pointer to the video-capture device ID.
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int getDevice(char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;
-
-	/** Select video device for Screen cast.
-
-	 @param deviceId Pointer to the video-capture device ID.
-	 @note: deviceId - scree0 for default desktop
-	 @return
-	 - 0: Success.
-	 - < 0: Failure.
-	 */
-	virtual int selectScreenCastDevice(char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;
-
-    /** Releases all IVideoDeviceManager resources.
-    */
-    virtual void release() = 0;
-};
-
-/** Audio device collection methods.
-
-The IAudioDeviceCollection interface class retrieves device-related information.
-*/
-class IAudioDeviceCollection
-{
-protected:
-    virtual ~IAudioDeviceCollection(){}
-public:
-
-    /** Retrieves the total number of audio playback or audio recording devices.
-
-     @note You must first call the \ref IAudioDeviceManager::enumeratePlaybackDevices "enumeratePlaybackDevices" or \ref IAudioDeviceManager::enumerateRecordingDevices "enumerateRecordingDevices" method before calling this method to return the number of  audio playback or audio recording devices.
-
-     @return Number of audio playback or audio recording devices.
-     */
-    virtual int getCount() = 0;
-
-    /** Retrieves a specified piece of information about an indexed audio device.
-
-     @param index The specified index that must be less than the return value of \ref IAudioDeviceCollection::getCount "getCount".
-     @param deviceName Pointer to the audio device name.
-     @param deviceId Pointer to the audio device ID.
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int getDevice(int index, char deviceName[MAX_DEVICE_ID_LENGTH], char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;
-
-    /** Specifies a device with the device ID.
-
-     @param deviceId Pointer to the device ID of the device.
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int setDevice(const char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;
-
-    /** Sets the volume of the application.
-
-    @param volume Application volume. The value ranges between 0 (lowest volume) and 255 (highest volume).
-    @return
-    - 0: Success.
-    - < 0: Failure.
-    */
-    virtual int setApplicationVolume(int volume) = 0;
-
-    /** Retrieves the volume of the application.
-
-     @param volume Pointer to the application volume. The volume value ranges between 0 (lowest volume) and 255 (highest volume).
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int getApplicationVolume(int& volume) = 0;
-
-    /** Mutes the application.
-
-     @param mute Sets whether to mute/unmute the application:
-     - true: Mute the application.
-     - false: Unmute the application.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int setApplicationMute(bool mute) = 0;
-    /** Gets the mute state of the application.
-
-     @param mute Pointer to whether the application is muted/unmuted.
-     - true: The application is muted.
-     - false: The application is not muted.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int isApplicationMute(bool& mute) = 0;
-
-    /** Releases all IAudioDeviceCollection resources.
-    */
-    virtual void release() = 0;
-};
-/** Audio device management methods.
-
- The IAudioDeviceManager interface class allows for audio device interface testing. Instantiate an AAudioDeviceManager class to retrieve the IAudioDeviceManager interface.
-*/
-class IAudioDeviceManager
-{
-protected:
-    virtual ~IAudioDeviceManager(){}
-public:
-
-    /** Enumerates the audio playback devices.
-
-     This method returns an IAudioDeviceCollection object that includes all audio playback devices in the system. With the IAudioDeviceCollection object, the application can enumerate the audio playback devices.
-
-     @note The application must call the \ref IAudioDeviceCollection::release "release" method to release the returned object after using it.
-
-     @return
-     - Success: Returns an IAudioDeviceCollection object that includes all audio playback devices in the system. For wireless Bluetooth headset devices with master and slave headsets, the master headset is the playback device.
-     - Returns NULL: Failure.
-     */
-    virtual IAudioDeviceCollection* enumeratePlaybackDevices() = 0;
-
-    /** Enumerates the audio recording devices.
-
-     This method returns an IAudioDeviceCollection object that includes all audio recording devices in the system. With the IAudioDeviceCollection object, the application can enumerate the audio recording devices.
-
-     @note The application needs to call the \ref IAudioDeviceCollection::release "release" method to release the returned object after using it.
-
-     @return
-     - Returns an IAudioDeviceCollection object that includes all audio recording devices in the system: Success.
-     - Returns NULL: Failure.
-     */
-    virtual IAudioDeviceCollection* enumerateRecordingDevices() = 0;
-
-    /** Sets the audio playback device using the device ID.
-
-     @note Plugging or unplugging the audio device does not change the device ID.
-
-     @param deviceId Device ID of the audio playback device, retrieved by calling the \ref IAudioDeviceManager::enumeratePlaybackDevices "enumeratePlaybackDevices" method.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int setPlaybackDevice(const char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;
-
-    /** Sets the audio recording device using the device ID.
-
-     @param deviceId Device ID of the audio recording device, retrieved by calling the \ref IAudioDeviceManager::enumerateRecordingDevices "enumerateRecordingDevices" method.
-
-     @note Plugging or unplugging the audio device does not change the device ID.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int setRecordingDevice(const char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;
-
-    /** Starts the audio playback device test.
-
-     This method tests if the playback device works properly. In the test, the SDK plays an audio file specified by the user. If the user can hear the audio, the playback device works properly.
-
-     @param testAudioFilePath Pointer to the path of the audio file for the audio playback device test in UTF-8:
-     - Supported file formats: wav, mp3, m4a, and aac.
-     - Supported file sample rates: 8000, 16000, 32000, 44100, and 48000 Hz.
-
-     @return
-     - 0: Success, and you can hear the sound of the specified audio file.
-     - < 0: Failure.
-     */
-    virtual int startPlaybackDeviceTest(const char* testAudioFilePath) = 0;
-
-    /** Stops the audio playback device test.
-
-     This method stops testing the audio playback device. You must call this method to stop the test after calling the \ref IAudioDeviceManager::startPlaybackDeviceTest "startPlaybackDeviceTest" method.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int stopPlaybackDeviceTest() = 0;
-
-    /** Sets the volume of the audio playback device.
-
-     @param volume Sets the volume of the audio playback device. The value ranges between 0 (lowest volume) and 255 (highest volume).
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int setPlaybackDeviceVolume(int volume) = 0;
-
-    /** Retrieves the volume of the audio playback device.
-
-     @param volume Pointer to the audio playback device volume. The volume value ranges between 0 (lowest volume) and 255 (highest volume).
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int getPlaybackDeviceVolume(int *volume) = 0;
-
-    /** Sets the volume of the microphone.
-
-     @param volume Sets the volume of the microphone. The value ranges between 0 (lowest volume) and 255 (highest volume).
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int setRecordingDeviceVolume(int volume) = 0;
-
-    /** Retrieves the volume of the microphone.
-
-     @param volume Pointer to the microphone volume. The volume value ranges between 0 (lowest volume) and 255 (highest volume).
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int getRecordingDeviceVolume(int *volume) = 0;
-
-    /** Mutes the audio playback device.
-
-     @param mute Sets whether to mute/unmute the audio playback device:
-     - true: Mutes.
-     - false: Unmutes.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int setPlaybackDeviceMute(bool mute) = 0;
-    /** Retrieves the mute status of the audio playback device.
-
-     @param mute Pointer to whether the audio playback device is muted/unmuted.
-     - true: Muted.
-     - false: Unmuted.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int getPlaybackDeviceMute(bool *mute) = 0;
-    /** Mutes/Unmutes the microphone.
-
-     @param mute Sets whether to mute/unmute the microphone:
-     - true: Mutes.
-     - false: Unmutes.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int setRecordingDeviceMute(bool mute) = 0;
-
-    /** Retrieves the microphone's mute status.
-
-     @param mute Pointer to whether the microphone is muted/unmuted.
-     - true: Muted.
-     - false: Unmuted.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int getRecordingDeviceMute(bool *mute) = 0;
-
-    /** Starts the microphone test.
-
-     This method tests whether the microphone works properly. Once the test starts, the SDK uses the \ref IRtcEngineEventHandler::onAudioVolumeIndication "onAudioVolumeIndication" callback to notify the application with the volume information.
-
-     @param indicationInterval Interval period (ms) of the \ref IRtcEngineEventHandler::onAudioVolumeIndication "onAudioVolumeIndication" callback cycle.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int startRecordingDeviceTest(int indicationInterval) = 0;
-
-    /** Stops the microphone test.
-
-     This method stops the microphone test. You must call this method to stop the test after calling the \ref IAudioDeviceManager::startRecordingDeviceTest "startRecordingDeviceTest" method.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int stopRecordingDeviceTest() = 0;
-
-    /** Retrieves the audio playback device associated with the device ID.
-
-     @param deviceId Pointer to the ID of the audio playback device.
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int getPlaybackDevice(char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;
-
-    /** Retrieves the audio playback device information associated with the device ID and device name.
-
-     @param deviceId Pointer to the device ID of the audio playback device.
-     @param deviceName Pointer to the device name of the audio playback device.
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int getPlaybackDeviceInfo(char deviceId[MAX_DEVICE_ID_LENGTH], char deviceName[MAX_DEVICE_ID_LENGTH]) = 0;
-
-    /** Retrieves the audio recording device associated with the device ID.
-
-     @param deviceId Pointer to the device ID of the audio recording device.
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int getRecordingDevice(char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;
-
-    /** Retrieves the audio recording device information associated with the device ID and device name.
-
-     @param deviceId Pointer to the device ID of the recording audio device.
-     @param deviceName Pointer to the device name of the recording audio device.
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-   virtual int getRecordingDeviceInfo(char deviceId[MAX_DEVICE_ID_LENGTH], char deviceName[MAX_DEVICE_ID_LENGTH]) = 0;
-
-   /** Starts the audio device loopback test.
-
-   This method tests whether the local audio devices are working properly. After calling this method, the microphone captures the local audio and plays it through the speaker. The \ref IRtcEngineEventHandler::onAudioVolumeIndication "onAudioVolumeIndication" callback returns the local audio volume information at the set interval.
-
-   @note This method tests the local audio devices and does not report the network conditions.
-
-   @param indicationInterval The time interval (ms) at which the \ref IRtcEngineEventHandler::onAudioVolumeIndication "onAudioVolumeIndication" callback returns.
-
-   @return
-   - 0: Success.
-   - < 0: Failure.
-   */
-   virtual int startAudioDeviceLoopbackTest(int indicationInterval) = 0;
-
-   /** Stops the audio device loopback test.
-
-   @note Ensure that you call this method to stop the loopback test after calling the \ref IAudioDeviceManager::startAudioDeviceLoopbackTest "startAudioDeviceLoopbackTest" method.
-
-   @return
-   - 0: Success.
-   - < 0: Failure.
-   */
-   virtual int stopAudioDeviceLoopbackTest() = 0;
-
-   /** Releases all IAudioDeviceManager resources.
-   */
-    virtual void release() = 0;
-};
-
-/** The configuration of the log files.
- *
- * @since v3.3.0
- */
-struct LogConfig
-{
-    /** The absolute path of log files.
-     *
-     * The default file path is:
-     * - Android: `/storage/emulated/0/Android/data/<package name>/files/ar_sdk.log`
-     * - iOS: `App Sandbox/Library/caches/ar_sdk.log`
-     * - macOS:
-     *  - Sandbox enabled: `App Sandbox/Library/Logs/ar_sdk.log`, such as `/Users/<username>/Library/Containers/<App Bundle Identifier>/Data/Library/Logs/ar_sdk.log`.
-     *  - Sandbox disabled: `~/Library/Logs/ar_sdk.log`.
-     * - Windows: `C:\Users\<user_name>\AppData\Local\AR\<process_name>\ar_sdk.log`
-     *
-     * Ensure that the directory for the log files exists and is writable. You can use this parameter to rename the log files.
-     */
-    const char* filePath;
-    /** The size (KB) of a log file. The default value is 1024 KB. If you set `fileSize` to 1024 KB, the SDK outputs at most 5 MB log files;
-     * if you set it to less than 1024 KB, the setting is invalid, and the maximum size of a log file is still 1024 KB.
-     */
-    int fileSize;
-    /** The output log level of the SDK. See #LOG_LEVEL.
-     *
-     * For example, if you set the log level to WARN, the SDK outputs the logs within levels FATAL, ERROR, and WARN.
-     */
-    LOG_LEVEL level;
-    LogConfig()
-    :filePath(NULL)
-    ,fileSize(-1)
-    ,level(LOG_LEVEL::LOG_LEVEL_INFO)
-    {}
-};
-
-/** Definition of RtcEngineContext.
-*/
-struct RtcEngineContext
-{
-    /** The IRtcEngineEventHandler object.
-     */
-    IRtcEngineEventHandler* eventHandler;
-    /** App ID issued to you by AR. Apply for a new App ID from AR if
-     * it is missing from your kit.
-     */
-    const char* appId;
-    // For android, it the context(Activity or Application
-	// for windows,Video hot plug device
-    /** The video window handle. Once set, this parameter enables you to plug
-     * or unplug the video devices while they are powered.
-     */
-    void* context;
-    /**
-     * The region for connection. This advanced feature applies to scenarios that have regional restrictions.
-     *
-     * For the regions that AR supports, see #AREA_CODE. After specifying the region, the app that integrates the AR SDK connects to the AR servers within that region.
-     */
-	unsigned int areaCode;
-    /** The configuration of the log files that the SDK outputs. See LogConfig.
-     *
-     * @since v3.3.0
-     *
-     * By default, the SDK outputs five log files, `ar_sdk.log`, `ar_sdk_1.log`, `ar_sdk_2.log`, `ar_sdk_3.log`, `ar_sdk_4.log`, each with
-     * a default size of 1024 KB. These log files are encoded in UTF-8. The SDK writes the latest logs in `ar_sdk.log`. When `ar_sdk.log` is
-     * full, the SDK deletes the log file with the earliest modification time among the other four, renames `ar_sdk.log` to the name of the
-     * deleted log file, and creates a new `ar_sdk.log` to record latest logs.
-     *
-     */
-    LogConfig logConfig;
-    RtcEngineContext()
-    :eventHandler(NULL)
-    ,appId(NULL)
-    ,context(NULL)
-    ,areaCode(rtc::AREA_CODE_GLOB)
-    {}
-};
-
-/** Definition of IMetadataObserver
-*/
-class IMetadataObserver
-{
-public:
-    /** Metadata type of the observer.
-     @note We only support video metadata for now.
-     */
-    enum METADATA_TYPE
-    {
-        /** -1: the metadata type is unknown.
-         */
-        UNKNOWN_METADATA = -1,
-        /** 0: the metadata type is video.
-         */
-        VIDEO_METADATA = 0,
-    };
-
-    struct Metadata
-    {
-        /** The User ID.
-
-         - For the receiver: the ID of the user who sent the metadata.
-         - For the sender: ignore it.
-         */
-        char* uid;
-        /** Buffer size of the sent or received Metadata.
-         */
-        unsigned int size;
-        /** Buffer address of the sent or received Metadata.
-         */
-        unsigned char *buffer;
-        /** Time statmp of the frame following the metadata.
-         */
-        long long timeStampMs;
-    };
-
-    virtual ~IMetadataObserver() {};
-
-    /** Occurs when the SDK requests the maximum size of the Metadata.
-
-     The metadata includes the following parameters:
-     - `uid`: ID of the user who sends the metadata.
-     - `size`: The size of the sent or received metadata.
-     - `buffer`: The sent or received metadata.
-     - `timeStampMs`: The timestamp of the metadata.
-
-     The SDK triggers this callback after you successfully call the \ref ar::rtc::IRtcEngine::registerMediaMetadataObserver "registerMediaMetadataObserver" method. You need to specify the maximum size of the metadata in the return value of this callback.
-
-     @return The maximum size of the buffer of the metadata that you want to use. The highest value is 1024 bytes. Ensure that you set the return value.
-     */
-    virtual int getMaxMetadataSize() = 0;
-
-    /** Occurs when the SDK is ready to receive and send metadata.
-
-     @note Ensure that the size of the metadata does not exceed the value set in the \ref ar::rtc::IMetadataObserver::getMaxMetadataSize "getMaxMetadataSize" callback.
-
-     @param metadata The Metadata to be sent.
-     @return
-     - true:  Send.
-     - false: Do not send.
-     */
-    virtual bool onReadyToSendMetadata(Metadata &metadata) = 0;
-
-    /** Occurs when the local user receives the metadata.
-
-     @param metadata The received Metadata.
-     */
-    virtual void onMetadataReceived(const Metadata &metadata) = 0;
-};
-
-/** Encryption mode.
-*/
-enum ENCRYPTION_MODE
-{
-    /** 1: (Default) 128-bit AES encryption, XTS mode.
-     */
-    AES_128_XTS = 1,
-    /** 2: 128-bit AES encryption, ECB mode.
-     */
-    AES_128_ECB = 2,
-    /** 3: 256-bit AES encryption, XTS mode.
-     */
-    AES_256_XTS = 3,
-    /** 4: 128-bit SM4 encryption, ECB mode.
-     */
-    SM4_128_ECB = 4,
-    /** Enumerator boundary.
-     */
-    MODE_END,
-};
-
-/** Configurations of built-in encryption schemas. */
-struct EncryptionConfig{
-    /**
-     * Encryption mode. The default encryption mode is `AES_128_XTS`. See #ENCRYPTION_MODE.
-     */
-    ENCRYPTION_MODE encryptionMode;
-    /**
-     * Encryption key in string type.
-     *
-     * @note If you do not set an encryption key or set it as NULL, you cannot use the built-in encryption, and the SDK returns #ERR_INVALID_ARGUMENT (-2).
-     */
-    const char* encryptionKey;
-
-    EncryptionConfig() {
-        encryptionMode = AES_128_XTS;
-        encryptionKey = nullptr;
-    }
-
-    /// @cond
-    const char* getEncryptionString() const {
-        switch(encryptionMode)
-        {
-            case AES_128_XTS:
-                return "aes-128-xts";
-            case AES_128_ECB:
-                return "aes-128-ecb";
-            case AES_256_XTS:
-                return "aes-256-xts";
-            case SM4_128_ECB:
-                return "sm4-128-ecb";
-            default:
-                return "aes-128-xts";
-        }
-        return "aes-128-xts";
-    }
-    /// @endcond
-};
-
-/** IRtcEngine is the base interface class of the AR SDK that provides the main AR SDK methods invoked by your application.
-
-Enable the AR SDK's communication functionality through the creation of an IRtcEngine object, then call the methods of this object.
- */
-class IRtcEngine
-{
-protected:
-    virtual ~IRtcEngine() {}
-public:
-
-    /** 初始化 anyRTC SDK 服务.
-     *
-     * 请确保在调用其他 API 前先调用 createARRtcEngine 和 initialize 创建并初始化 IRtcEngine
-     *
-     * @param context Pointer to the RTC engine context. 详见 RtcEngineContext.
-     *
-     * @return
-     * - 0(ERR_OK): 方法调用成功.
-     * - < 0: 方法调用失败.
-	 *  - -1(ERR_FAILED): 一般性的错误(未明确归类)。
-	 *  - -2(ERR_INALID_ARGUMENT): 未提供 IRtcEngineEventHandler 指针。
-	 *  - -7(ERR_NOT_INITIALIZED): SDK 初始化失败。请检查 context 内容是否正确。
-	 *  - -22(ERR_RESOURCE_LIMITED): 资源申请失败。当 app 占用资源过多,或系统资源耗尽时,SDK 分配资源失败,会返回该错误
-     *  - -101(ERR_INVALID_APP_ID): 不是有效的 App ID.
-     */
-    virtual int initialize(const RtcEngineContext& context) = 0;
-
-    /** 销毁 IRtcEngine 对象并释放资源.
-     *
-     * 该方法释放 anyRTC SDK 使用的所有资源。有些 app 只在用户需要时才进行实时音视频通信,不需要时则将资源释放出来用于其他操作, 该方法适用于此类情况。调用 release 方法后,你将无法再使用 SDK 的其它方法和回调。如需再次使用实时音视频通信功能, 你必须重新依次调用 createARRtcEngine 和 initialize 方法创建一个新的 IRtcEngine 对象.
-     *
-     * @note 如需在销毁后再次创建 IRtcEngine 对象,需要等待 release 方法执行结束后再创建实例.
-     *
-     * @param sync
-     * - true: 该方法为同步调用。需要等待 IRtcEngine 资源释放后才能执行其他操作,所以我们建议在子线程中调用该方法,避免主线程阻塞。此外,我们不建议在 SDK 的回调中调用 release,否则由于 SDK 要等待回调返回才能回收相关的对象资源,会造成死锁。SDK 会自动检测这种死锁并转为异步调用,但是检测本身会消耗额外的时间.
-     * - false: 该方法为异步调用。不需要等待 IRtcEngine 资源释放后就能执行其他操作。使用异步调用时要注意,不要在该调用后立即卸载 SDK 动态库,否则可能会因为 SDK 的清理线程还没有退出而崩溃.
-     */
-    virtual void release(bool sync=false) = 0;
-
-    /** 设置频道场景.
-     *
-     * 该方法用于设置 anyRTC IRtcEngine 频道的使用场景。RtcEngine 会针对不同的使用场景采用不同的优化策略,如通信场景偏好流畅,直播场景偏好画质.
-     *
-     * @warning
-     * - 为保证实时音视频质量,我们建议相同频道内的用户使用同一种频道场景.
-     * - 该方法必须在 joinChannel 前调用和进行设置,进入频道后无法再设置.(Join之后设置返回0,参数不会生效,生成错误日志)
-     * - 不同的频道场景下,SDK 的默认音频路由和默认视频编码码率是不同的,详见 setDefaultAudioRouteToSpeakerphone 和 setVideoEncoderConfiguration 方法中的说明.
-     *
-     * @param profile 频道使用场景. 详见 #CHANNEL_PROFILE_TYPE
-     * @return
-     * - 0(ERR_OK): 方法调用成功.
-     * - < 0: 方法调用失败.
-     *  - -2 (ERR_INVALID_ARGUMENT): 参数无效.
-     *  - -7(ERR_NOT_INITIALIZED): SDK 尚未初始化.
-     */
-    virtual int setChannelProfile(CHANNEL_PROFILE_TYPE profile) = 0;
-
-    /** 设置用户角色.
-     *
-     * 在加入频道前,用户需要通过本方法设置观众(默认)或主播。在加入频道后,用户可以通过本方法切换用户角色.
-     *
-     * 直播场景下,如果你在加入频道后调用该方法切换用户角色,调用成功后,本地会触发 onClientRoleChanged 回调; 远端会触发 onUserJoined 回调或 onUserOffline (BECOME_AUDIENCE) 回调
-     *
-     * @note
-     * This method applies only to the `LIVE_BROADCASTING` profile.
-     *
-     * @param role Sets the role of the user. See #CLIENT_ROLE_TYPE.
-     *
-     * @return
-     * - 0(ERR_OK): Success.
-     * - < 0: Failure.
-     *  - -1(ERR_FAILED): A general error occurs (no specified reason).
-     *  - -2(ERR_INALID_ARGUMENT): The parameter is invalid.
-     *  - -7(ERR_NOT_INITIALIZED): The SDK is not initialized.
-     */
-    virtual int setClientRole(CLIENT_ROLE_TYPE role) = 0;
-    /// @cond
-    /** Sets the role of a user in a live interactive streaming.
-     *
-     * @since v3.2.0
-     *
-     * You can call this method either before or after joining the channel to set the user role as audience or host. If
-     * you call this method to switch the user role after joining the channel, the SDK triggers the following callbacks:
-     * - The local client: \ref IRtcEngineEventHandler::onClientRoleChanged "onClientRoleChanged".
-     * - The remote client: \ref IRtcEngineEventHandler::onUserJoined "onUserJoined"
-     * or \ref IRtcEngineEventHandler::onUserOffline "onUserOffline".
-     *
-     * @note
-     * - This method applies to the `LIVE_BROADCASTING` profile only (when the `profile` parameter in
-     * \ref IRtcEngine::setChannelProfile "setChannelProfile" is set as `CHANNEL_PROFILE_LIVE_BROADCASTING`).
-     * - The difference between this method and \ref IRtcEngine::setClientRole(CLIENT_ROLE_TYPE) "setClientRole1" is that
-     * this method can set the user level in addition to the user role.
-     *  - The user role determines the permissions that the SDK grants to a user, such as permission to send local
-     * streams, receive remote streams, and push streams to a CDN address.
-     *  - The user level determines the level of services that a user can enjoy within the permissions of the user's
-     * role. For example, an audience can choose to receive remote streams with low latency or ultra low latency. Levels
-     * affect prices.
-     *
-     * **Example**
-     * ```cpp
-     * ClientRoleOptions options;
-     * options.audienceLatencyLevel = AUDIENCE_LATENCY_LEVEL_ULTRA_LOW_LATENCY;
-     * options.audienceLatencyLevel = AUDIENCE_LATENCY_LEVEL_LOW_LATENCY;
-     * arEngine->setClientRole(role, options);
-     * ```
-     *
-     * @param role The role of a user in a live interactive streaming. See #CLIENT_ROLE_TYPE.
-     * @param options The detailed options of a user, including user level. See ClientRoleOptions.
-     *
-     * @return
-     * - 0(ERR_OK): Success.
-     * - < 0: Failure.
-     *  - -1(ERR_FAILED): A general error occurs (no specified reason).
-     *  - -2(ERR_INALID_ARGUMENT): The parameter is invalid.
-     *  - -7(ERR_NOT_INITIALIZED): The SDK is not initialized.
-     */
-    virtual int setClientRole(CLIENT_ROLE_TYPE role, const ClientRoleOptions& options) = 0;
-    /// @endcond
-	/** 加入频道.
-
-	 该方法让用户加入通话频道,在同一个频道内的用户可以互相通话,多个用户加入同一个频道,可以群聊。 使用不同 App ID 的 App 是不能互通的.
-
-	 如果已在通话中,用户必须调用 leaveChannel 退出当前通话,才能进入下一个频道.
-
-	 成功调用该方加入频道后,会触发如下回调:
-	 - 本地:客户端会触发:onJoinChannelSuccess 回调
-	 - 远端:通信场景下的用户和直播场景下的主播加入频道后,远端会触发 onUserJoined 回调.
-
-	 在网络状况不理想的情况下,客户端可能会与 anyRTC 的服务器失去连接;SDK 会自动尝试重连,重连成功后,本地会触发 onRejoinChannelSuccess 回调.
-
-	 用户成功加入频道后,默认订阅频道内所有其他用户的音频流和视频流,因此产生用量并影响计费。如果想取消订阅,可以通过调用相应的 mute 方法实现
-
-	 @note 频道内每个用户的用户 ID 必须是唯一的。如果将 uid 设为NULL或空字符串,系统将自动分配一个 uid。如果想要从不同的设备同时接入同一个频道,请确保每个设备上使用的 uid 是不同的.
-	 @warning 请务必确保用于生成 Token 的 App ID 和 initialize 方法初始化引擎时用的是同一个 App ID,否则会造成旁路推流失败.
-
-	 @param 动态秘钥 (由应用的服务端生成。在大多数情况下,应用程序ID即可满足安全需求。为了增加更高安全性,还请使用令牌).
-	 - 安全要求不高: 将值设为 NULL.
-	 - 安全要求高: 将值设置为 Token。如果你已经启用了 App Certificate, 请务必使用 Token.
-	 @param channelId 标识通话的频道名称,长度在 64 字节以内的字符串。以下为支持的字符集范围(共 89 个字符):
-	 - 26 个小写英文字母(All lowercase English letters): a to z.
-	 - 26 个大写英文字母(All uppercase English letters): A to Z.
-	 - 10个数字(All numeric characters): 0 to 9.
-	 - 空格(The space character).
-	 - 特殊字符(Punctuation characters and other symbols, including): "!", "#", "$", "%", "&", "(", ")", "+", "-", ":", ";", "<", "=", ".", ">", "?", "@", "[", "]", "^", "_", " {", "}", "|", "~", ",".
-	 @param info (非必选项) 开发者需加入的任何附加信息。一般可设置为空字符串,或频道相关信息。该信息不会传递给频道内的其他用户.
-	 @param uid (非必选项) 用户 ID,最多32位字符串,并保证唯一性。如果不指定(即设为NULL或空字符串),SDK 会自动分配一个,并在 onJoinChannelSuccess 回调方法中返回,App 层必须记住该返回值并维护,SDK 不对该返回值进行维护.
-
-	 @返回
-		- 0(ERR_OK): 方法调用成功。
-		- < 0: 方法调用失败。
-		- -2(ERR_INALID_ARGUMENT): 参数无效。
-		- -3(ERR_NOT_READY): SDK 初始化失败,请尝试重新初始化 SDK。
-		- -5(ERR_REFUSED): 调用被拒绝。可能有如下两个原因:
-			已经创建了一个同名的 IChannel 频道。
-			已经通过 IChannel 加入了一个频道,并在该 IChannel 频道中发布了音视频流。由于通过 IRtcEngine 加入频道会默认发布音视频流,而 SDK 不支持同时在两个频道发布音视频流,因此会报错。
-		- -7(ERR_NOT_INITIALIZED): SDK 尚未初始化,就调用该方法。请确认在调用 API 之前已创建 IRtcEngine 对象并完成初始化。
-	 */
-    virtual int joinChannel(const char* token, const char* channelId, const char* info, uid_t uid) = 0;
-    /** 快速切换直播频道.
-     *
-     * 当直播频道中的观众想从一个频道切换到另一个频道时,可以调用该方法,实现快速切换.
-     *
-     * 成功调用该方切换频道后,本地会先收到离开原频道的回调 onLeaveChannel,再收到成功加入新频道的回调 onJoinChannelSuccess。
-	 * 用户成功切换频道后,默认订阅频道内所有其他用户的音频流和视频流,因此产生用量并影响计费。如果想取消订阅,可以通过调用相应的 mute 方法实现。
-     *
-     * @note
-     * 该方法仅适用于直播场景中,角色为观众的用户。
-     *
-     * @param token 在服务器端生成的用于鉴权的 Token:
-     * - 安全要求不高:你可以使用控制台生成的临时 Token,详见 获取临时 Token.
-     * - 安全要求高:将值设为你的服务端生成的正式 Token,详见 获取正式 Token.
-     * @param channelId 标识频道的频道名,最大不超过 64 字节。以下为支持的字符集范围 (共 89 个字符):
-     * - The 26 lowercase English letters: a to z.
-     * - The 26 uppercase English letters: A to Z.
-     * - The 10 numbers: 0 to 9.
-     * - The space.
-     * - "!", "#", "$", "%", "&", "(", ")", "+", "-", ":", ";", "<", "=", ".",
-     * ">", "?", "@", "[", "]", "^", "_", " {", "}", "|", "~", ",".
-
-     @return
-     - 0(ERR_OK): Success.
-     - < 0: Failure.
-		- -1(ERR_FAILED): 一般性的错误(未明确归类)。
-		- -2(ERR_INALID_ARGUMENT): 参数无效。
-		- -5(ERR_REFUSED): 调用被拒绝。可能因为用户角色不是观众。
-		- -7(ERR_NOT_INITIALIZED): SDK 尚未初始化。
-		- -102(ERR_INVALID_CHANNEL_NAME): 频道名无效。请更换有效的频道名。
-		- -113(ERR_NOT_IN_CHANNEL): 用户不在频道内。
-
-     */
-    virtual int switchChannel(const char* token, const char* channelId) = 0;
-    
-    /** 离开频道,即挂断或退出通话.
-
-     当调用 joinChannel 方法后,必须调用 leaveChannel 结束通话,否则无法开始下一次通话。不管当前是否在通话中,都可以调用 leaveChannel,没有副作用。
-
-     该方法会把会话相关的所有资源释放掉。
-
-    该方法是异步操作,调用返回时并没有真正退出频道。
-
-     在真正退出频道后,SDK 会触发 onLeaveChannel 回调:
-     - 成功调用该方法离开频道后,本地会触发 onLeaveChannel 回调;
-     - 通信场景下的用户和直播场景下的主播离开频道后,远端会触发 onUserOffline 回调。
-
-     @note
-     - 如果你调用了 leaveChannel 后立即调用 release,SDK 将无法触发 onLeaveChannel 回调。
-     - 如果你在旁路推流时调用 leaveChannel 方法, SDK 将自动调用 removePublishStreamUrl 方法。
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-	  - -1(ERR_FAILED): 一般性的错误(未明确归类)。
-	  - -2(ERR_INALID_ARGUMENT): 参数无效。
-	  - -7(ERR_NOT_INITIALIZED): SDK 尚未初始化。
-     */
-    virtual int leaveChannel() = 0;
-    
-    /** 更新 Token.
-
-     该方法用于更新 Token。如果启用了 Token 机制,过一段时间后使用的 Token 会失效。当:
-
-     - 发生 onTokenPrivilegeWillExpire 回调时,或发生
-     - onConnectionStateChanged 回调报告 CONNECTION_CHANGED_TOKEN_EXPIRED(9) 时。
-
-     App 应重新获取 Token,然后调用该方法更新 Token,否则 SDK 无法和服务器建立连接。
-
-     @param token Pointer to the new token.
-     @return
-     - 0: Success.
-     - < 0: Failure.
-	  - -1(ERR_FAILED): 一般性的错误(未明确归类)。
-	  - -2(ERR_INALID_ARGUMENT): 参数无效。
-	  - -7(ERR_NOT_INITIALIZED): SDK 尚未初始化。
-     */
-    virtual int renewToken(const char* token) = 0;
-
-    /** 获取设备管理员对象的指针.
-
-     @param iid 想要获取的接口的ID.
-     @param inter 指向 DeviceManager 对象的指针.
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int queryInterface(INTERFACE_ID_TYPE iid, void** inter) = 0;
-
-     /** Registers a user account.
-
-     Once registered, the user account can be used to identify the local user when the user joins the channel.
-     After the user successfully registers a user account, the SDK triggers the \ref ar::rtc::IRtcEngineEventHandler::onLocalUserRegistered "onLocalUserRegistered" callback on the local client,
-     reporting the user ID and user account of the local user.
-
-     To join a channel with a user account, you can choose either of the following:
-
-     - Call the \ref ar::rtc::IRtcEngine::registerLocalUserAccount "registerLocalUserAccount" method to create a user account, and then the \ref ar::rtc::IRtcEngine::joinChannelWithUserAccount "joinChannelWithUserAccount" method to join the channel.
-     - Call the \ref ar::rtc::IRtcEngine::joinChannelWithUserAccount "joinChannelWithUserAccount" method to join the channel.
-
-     The difference between the two is that for the former, the time elapsed between calling the \ref ar::rtc::IRtcEngine::joinChannelWithUserAccount "joinChannelWithUserAccount" method
-     and joining the channel is shorter than the latter.
-
-     @note
-     - Ensure that you set the `userAccount` parameter. Otherwise, this method does not take effect.
-     - Ensure that the value of the `userAccount` parameter is unique in the channel.
-     - To ensure smooth communication, use the same parameter type to identify the user. For example, if a user joins the channel with a user ID, then ensure all the other users use the user ID too. The same applies to the user account. If a user joins the channel with the AR Web SDK, ensure that the uid of the user is set to the same parameter type.
-
-     @param appId The App ID of your project.
-     @param userAccount The user account. The maximum length of this parameter is 255 bytes. Ensure that you set this parameter and do not set it as null. Supported character scopes are:
-     - All lowercase English letters: a to z.
-     - All uppercase English letters: A to Z.
-     - All numeric characters: 0 to 9.
-     - The space character.
-     - Punctuation characters and other symbols, including: "!", "#", "$", "%", "&", "(", ")", "+", "-", ":", ";", "<", "=", ".", ">", "?", "@", "[", "]", "^", "_", " {", "}", "|", "~", ",".
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-    */
-    virtual int registerLocalUserAccount(
-        const char* appId, const char* userAccount) = 0;
-    /** Joins the channel with a user account.
-
-     After the user successfully joins the channel, the SDK triggers the following callbacks:
-
-     - The local client: \ref ar::rtc::IRtcEngineEventHandler::onLocalUserRegistered "onLocalUserRegistered" and \ref ar::rtc::IRtcEngineEventHandler::onJoinChannelSuccess "onJoinChannelSuccess" .
-     The remote client: \ref ar::rtc::IRtcEngineEventHandler::onUserJoined "onUserJoined" and \ref ar::rtc::IRtcEngineEventHandler::onUserInfoUpdated "onUserInfoUpdated" , if the user joining the channel is in the Communication profile, or is a BROADCASTER in the Live Broadcast profile.
-
-     @note To ensure smooth communication, use the same parameter type to identify the user. For example, if a user joins the channel with a user ID, then ensure all the other users use the user ID too. The same applies to the user account.
-     If a user joins the channel with the AR Web SDK, ensure that the uid of the user is set to the same parameter type.
-
-     @param token The token generated at your server:
-     - For low-security requirements: You can use the temporary token generated at Console. For details, see [Get a temporary toke](https://docs.ar.io/en/Voice/token?platform=All%20Platforms#get-a-temporary-token).
-     - For high-security requirements: Set it as the token generated at your server. For details, see [Get a token](https://docs.ar.io/en/Voice/token?platform=All%20Platforms#get-a-token).
-     @param channelId The channel name. The maximum length of this parameter is 64 bytes. Supported character scopes are:
-      The 26 lowercase English letters: a to z.
-     - The 26 uppercase English letters: A to Z.
-     - The 10 numbers: 0 to 9.
-     - The space.
-     - "!", "#", "$", "%", "&", "(", ")", "+", "-", ":", ";", "<", "=", ".", ">", "?", "@", "[", "]", "^", "_", " {", "}", "|", "~", ",".
-     @param userAccount The user account. The maximum length of this parameter is 255 bytes. Ensure that you set this parameter and do not set it as null. Supported character scopes are:
-     - The 26 lowercase English letters: a to z.
-     - The 26 uppercase English letters: A to Z.
-     - The 10 numbers: 0 to 9.
-     - The space.
-     - "!", "#", "$", "%", "&", "(", ")", "+", "-", ":", ";", "<", "=", ".", ">", "?", "@", "[", "]", "^", "_", " {", "}", "|", "~", ",".
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-        - #ERR_INVALID_ARGUMENT (-2)
-        - #ERR_NOT_READY (-3)
-        - #ERR_REFUSED (-5) 
-     */
-    virtual int joinChannelWithUserAccount(const char* token,
-                                           const char* channelId,
-                                           const char* userAccount) = 0;
-    
-    /** Gets the user information by passing in the user account.
-
-     After a remote user joins the channel, the SDK gets the user ID and user account of the remote user, caches them
-     in a mapping table object (`userInfo`), and triggers the \ref ar::rtc::IRtcEngineEventHandler::onUserInfoUpdated "onUserInfoUpdated" callback on the local client.
-
-     After receiving the o\ref ar::rtc::IRtcEngineEventHandler::onUserInfoUpdated "onUserInfoUpdated" callback, you can call this method to get the user ID of the
-     remote user from the `userInfo` object by passing in the user account.
-
-     @param userAccount The user account of the user. Ensure that you set this parameter.
-     @param[in/out] userInfo A userInfo object that identifies the user:
-     - Input: A userInfo object.
-     - Output: A userInfo object that contains the user account and user ID of the user.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int getUserInfoByUserAccount(const char* userAccount, UserInfo* userInfo) = 0;
-    /** Gets the user information by passing in the user ID.
-
-     After a remote user joins the channel, the SDK gets the user ID and user account of the remote user,
-     caches them in a mapping table object (`userInfo`), and triggers the \ref ar::rtc::IRtcEngineEventHandler::onUserInfoUpdated "onUserInfoUpdated" callback on the local client.
-
-     After receiving the \ref ar::rtc::IRtcEngineEventHandler::onUserInfoUpdated "onUserInfoUpdated" callback, you can call this method to get the user account of the remote user
-     from the `userInfo` object by passing in the user ID.
-
-     @param uid The user ID of the remote user. Ensure that you set this parameter.
-     @param[in/out] userInfo A userInfo object that identifies the user:
-     - Input: A userInfo object.
-     - Output: A userInfo object that contains the user account and user ID of the user.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int getUserInfoByUid(uid_t uid, UserInfo* userInfo) = 0;
-
-    /** **DEPRECATED** Starts an audio call test.
-
-     This method is deprecated as of v2.4.0.
-
-     This method starts an audio call test to check whether the audio devices (for example, headset and speaker) and the network connection are working properly.
-
-     To conduct the test:
-
-     - The user speaks and the recording is played back within 10 seconds.
-     - If the user can hear the recording within 10 seconds, the audio devices and network connection are working properly.
-
-     @note
-     - After calling this method, always call the \ref IRtcEngine::stopEchoTest "stopEchoTest" method to end the test. Otherwise, the application cannot run the next echo test.
-     - In the Live-broadcast profile, only the hosts can call this method. If the user switches from the Communication to Live-broadcast profile, the user must call the \ref IRtcEngine::setClientRole "setClientRole" method to change the user role from the audience (default) to the host before calling this method.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int startEchoTest() = 0;
-
-    /** 开始语音通话回路测试.
-
-    该方法启动语音通话测试,目的是测试系统的音频设备(耳麦、扬声器等)和网络连接是否正常。 
-	
-	在测试过程中,用户先说一段话,声音会在设置的时间间隔(单位为秒)后回放出来。 如果用户能正常听到自己刚才说的话,就表示系统音频设备和网络连接都是正常的。
-
-    @note
-    - 请在加入频道前调用该方法。
-    - 调用 startEchoTest 后必须调用 stopEchoTest 以结束测试,否则不能进行下一次回声测试,也无法加入频道。
-    - 直播场景下,该方法仅能由用户角色为主播的用户调用。
-    @param intervalInSeconds 设置返回语音通话回路测试结果的时间间隔,取值范围为 [2, 10],单位为秒,默认为 10 秒。
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-  virtual int startEchoTest(int intervalInSeconds) = 0;
-
-    /** 停止语音通话回路测试。
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int stopEchoTest() = 0;
-
-    /** Enables the video module.
-
-     Call this method either before joining a channel or during a call. If this method is called before joining a channel, the call starts in the video mode. If this method is called during an audio call, the audio mode switches to the video mode. To disable the video module, call the \ref IRtcEngine::disableVideo "disableVideo" method.
-
-     A successful \ref ar::rtc::IRtcEngine::enableVideo "enableVideo" method call triggers the \ref ar::rtc::IRtcEngineEventHandler::onUserEnableVideo "onUserEnableVideo" (true) callback on the remote client.
-     @note
-     - This method affects the internal engine and can be called after the \ref ar::rtc::IRtcEngine::leaveChannel "leaveChannel" method.
-     - This method resets the internal engine and takes some time to take effect. We recommend using the following API methods to control the video engine modules separately:
-         - \ref IRtcEngine::enableLocalVideo "enableLocalVideo": Whether to enable the camera to create the local video stream.
-         - \ref IRtcEngine::muteLocalVideoStream "muteLocalVideoStream": Whether to publish the local video stream.
-         - \ref IRtcEngine::muteRemoteVideoStream "muteRemoteVideoStream": Whether to subscribe to and play the remote video stream.
-         - \ref IRtcEngine::muteAllRemoteVideoStreams "muteAllRemoteVideoStreams": Whether to subscribe to and play all remote video streams.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int enableVideo() = 0;
-
-    /** Disables the video module.
-
-    This method can be called before joining a channel or during a call. If this method is called before joining a channel, the call starts in audio mode. If this method is called during a video call, the video mode switches to the audio mode. To enable the video module, call the \ref IRtcEngine::enableVideo "enableVideo" method.
-
-    A successful \ref ar::rtc::IRtcEngine::disableVideo "disableVideo" method call triggers the \ref ar::rtc::IRtcEngineEventHandler::onUserEnableVideo "onUserEnableVideo" (false) callback on the remote client.
-     @note
-     - This method affects the internal engine and can be called after the \ref ar::rtc::IRtcEngine::leaveChannel "leaveChannel" method.
-     - This method resets the internal engine and takes some time to take effect. We recommend using the following API methods to control the video engine modules separately:
-         - \ref IRtcEngine::enableLocalVideo "enableLocalVideo": Whether to enable the camera to create the local video stream.
-         - \ref IRtcEngine::muteLocalVideoStream "muteLocalVideoStream": Whether to publish the local video stream.
-         - \ref IRtcEngine::muteRemoteVideoStream "muteRemoteVideoStream": Whether to subscribe to and play the remote video stream.
-         - \ref IRtcEngine::muteAllRemoteVideoStreams "muteAllRemoteVideoStreams": Whether to subscribe to and play all remote video streams.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int disableVideo() = 0;
-
-    /** **DEPRECATED** Sets the video profile.
-
-     This method is deprecated as of v2.3. Use the \ref IRtcEngine::setVideoEncoderConfiguration "setVideoEncoderConfiguration" method instead.
-
-     Each video profile includes a set of parameters, such as the resolution, frame rate, and bitrate. If the camera device does not support the specified resolution, the SDK automatically chooses a suitable camera resolution, keeping the encoder resolution specified by the *setVideoProfile* method.
-
-     @note
-     - If you do not need to set the video profile after joining the channel, call this method before the \ref IRtcEngine::enableVideo "enableVideo" method to reduce the render time of the first video frame.
-     - Always set the video profile before calling the \ref IRtcEngine::joinChannel "joinChannel" or \ref IRtcEngine::startPreview "startPreview" method.
-
-     @param profile Sets the video profile. See #VIDEO_PROFILE_TYPE.
-     @param swapWidthAndHeight Sets whether to swap the width and height of the video stream:
-     - true: Swap the width and height.
-     - false: (Default) Do not swap the width and height.
-     The width and height of the output video are consistent with the set video profile.
-     @note Since the landscape or portrait mode of the output video can be decided directly by the video profile, We recommend setting *swapWidthAndHeight* to *false* (default).
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int setVideoProfile(VIDEO_PROFILE_TYPE profile, bool swapWidthAndHeight) = 0;
-
-    /** Sets the video encoder configuration.
-
-     Each video encoder configuration corresponds to a set of video parameters, including the resolution, frame rate, bitrate, and video orientation.
-
-     The parameters specified in this method are the maximum values under ideal network conditions. If the video engine cannot render the video using the specified parameters due to poor network conditions, the parameters further down the list are considered until a successful configuration is found.
-
-     @note If you do not need to set the video encoder configuration after joining the channel, you can call this method before the \ref IRtcEngine::enableVideo "enableVideo" method to reduce the render time of the first video frame.
-
-     @param config Sets the local video encoder configuration. See VideoEncoderConfiguration.
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int setVideoEncoderConfiguration(const VideoEncoderConfiguration& config) = 0;
-    /** Sets the camera capture configuration.
-
-     For a video call or live broadcast, generally the SDK controls the camera output parameters. When the default camera capturer settings do not meet special requirements or cause performance problems, we recommend using this method to set the camera capturer configuration:
-
-     - If the resolution or frame rate of the captured raw video data are higher than those set by \ref IRtcEngine::setVideoEncoderConfiguration "setVideoEncoderConfiguration", processing video frames requires extra CPU and RAM usage and degrades performance. We recommend setting config as CAPTURER_OUTPUT_PREFERENCE_PERFORMANCE = 1 to avoid such problems.
-     - If you do not need local video preview or are willing to sacrifice preview quality, we recommend setting config as CAPTURER_OUTPUT_PREFERENCE_PERFORMANCE = 1 to optimize CPU and RAM usage.
-     - If you want better quality for the local video preview, we recommend setting config as CAPTURER_OUTPUT_PREFERENCE_PREVIEW = 2.
-
-     @note Call this method before enabling the local camera. That said, you can call this method before calling \ref ar::rtc::IRtcEngine::joinChannel "joinChannel", \ref ar::rtc::IRtcEngine::enableVideo "enableVideo", or \ref IRtcEngine::enableLocalVideo "enableLocalVideo", depending on which method you use to turn on your local camera.
-
-     @param config Sets the camera capturer configuration. See CameraCapturerConfiguration.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int setCameraCapturerConfiguration(const CameraCapturerConfiguration& config) = 0;
-
-    /** Initializes the local video view.
-
-     This method initializes the video view of a local stream on the local device. It affects only the video view that the local user sees, not the published local video stream.
-     
-     Call this method to bind the local video stream to a video view and to set the rendering and mirror modes of the video view.
-     The binding is still valid after the user leaves the channel, which means that the window still displays. To unbind the view, set the *view* in VideoCanvas to NULL.
-     
-     @note 
-     - Call this method before joining a channel.
-     - To update the rendering or mirror mode of the local video view during a call, use the \ref IRtcEngine::setLocalRenderMode "setLocalRenderMode" method.
-     @param canvas Pointer to the local video view and settings. See VideoCanvas.
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int setupLocalVideo(const VideoCanvas& canvas) = 0;
-
-    /** Initializes the video view of a remote user.
-
-     This method initializes the video view of a remote stream on the local device. It affects only the video view that the local user sees.
-
-     Call this method to bind the remote video stream to a video view and to set the rendering and mirror modes of the video view.
-
-     The application specifies the uid of the remote video in this method before the remote user joins the channel. If the remote uid is unknown to the application, set it after the application receives the \ref IRtcEngineEventHandler::onUserJoined "onUserJoined" callback.
-     If the Video Recording function is enabled, the Video Recording Service joins the channel as a dummy client, causing other clients to also receive the \ref IRtcEngineEventHandler::onUserJoined "onUserJoined" callback. Do not bind the dummy client to the application view because the dummy client does not send any video streams. If your application does not recognize the dummy client, bind the remote user to the view when the SDK triggers the \ref IRtcEngineEventHandler::onFirstRemoteVideoDecoded "onFirstRemoteVideoDecoded" callback.
-     To unbind the remote user from the view, set the view in VideoCanvas to NULL. Once the remote user leaves the channel, the SDK unbinds the remote user.
-
-     @note To update the rendering or mirror mode of the remote video view during a call, use the \ref IRtcEngine::setRemoteRenderMode "setRemoteRenderMode" method.
-
-     @param canvas Pointer to the remote video view and settings. See VideoCanvas.
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int setupRemoteVideo(const VideoCanvas& canvas) = 0;
-
-    /** Starts the local video preview before joining the channel.
-
-     Before calling this method, you must:
-
-     - Call the \ref IRtcEngine::setupLocalVideo "setupLocalVideo" method to set up the local preview window and configure the attributes.
-     - Call the \ref IRtcEngine::enableVideo "enableVideo" method to enable video.
-
-     @note Once the startPreview method is called to start the local video preview, if you leave the channel by calling the \ref IRtcEngine::leaveChannel "leaveChannel" method, the local video preview remains until you call the \ref IRtcEngine::stopPreview "stopPreview" method to disable it.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int startPreview() = 0;
-
-    /** Prioritizes a remote user's stream.
-
-    Use this method with the \ref IRtcEngine::setRemoteSubscribeFallbackOption "setRemoteSubscribeFallbackOption" method. If the fallback function is enabled for a subscribed stream, the SDK ensures the high-priority user gets the best possible stream quality.
-
-    @note The AR SDK supports setting @p userPriority as high for one user only.
-
-    @param  uid  The ID of the remote user.
-    @param  userPriority Sets the priority of the remote user. See #PRIORITY_TYPE.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int setRemoteUserPriority(uid_t uid, PRIORITY_TYPE userPriority) = 0;
-
-    /** Stops the local video preview and disables video.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int stopPreview() = 0;
-
-    /** Enables the audio module.
-
-    The audio mode is enabled by default.
-
-     @note
-     - This method affects the internal engine and can be called after the \ref ar::rtc::IRtcEngine::leaveChannel "leaveChannel" method. You can call this method either before or after joining a channel.
-     - This method resets the internal engine and takes some time to take effect. We recommend using the following API methods to control the audio engine modules separately:
-         - \ref IRtcEngine::enableLocalAudio "enableLocalAudio": Whether to enable the microphone to create the local audio stream.
-         - \ref IRtcEngine::muteLocalAudioStream "muteLocalAudioStream": Whether to publish the local audio stream.
-         - \ref IRtcEngine::muteRemoteAudioStream "muteRemoteAudioStream": Whether to subscribe to and play the remote audio stream.
-         - \ref IRtcEngine::muteAllRemoteAudioStreams "muteAllRemoteAudioStreams": Whether to subscribe to and play all remote audio streams.
-
-    @return
-    - 0: Success.
-    - < 0: Failure.
-    */
-    virtual int enableAudio() = 0;
-
-    /** Disables/Re-enables the local audio function.
-
-    The audio function is enabled by default. This method disables or re-enables the local audio function, that is, to stop or restart local audio capturing.
-
-    This method does not affect receiving or playing the remote audio streams,and enableLocalAudio(false) is applicable to scenarios where the user wants to 
-    receive remote audio streams without sending any audio stream to other users in the channel.
-
-    The SDK triggers the \ref IRtcEngineEventHandler::onMicrophoneEnabled "onMicrophoneEnabled" callback once the local audio function is disabled or enabled.
-
-     @note
-     - Call this method after the \ref IRtcEngine::joinChannel "joinChannel" method.
-     - This method is different from the \ref ar::rtc::IRtcEngine::muteLocalAudioStream "muteLocalAudioStream" method:
-
-        - \ref ar::rtc::IRtcEngine::enableLocalAudio "enableLocalAudio": Disables/Re-enables the local audio capturing and processing. 
-        If you disable or re-enable local audio recording using the `enableLocalAudio` method, the local user may hear a pause in the remote audio playback.
-        - \ref ar::rtc::IRtcEngine::muteLocalAudioStream "muteLocalAudioStream": Sends/Stops sending the local audio streams.
-     
-     @param enabled Sets whether to disable/re-enable the local audio function:
-     - true: (Default) Re-enable the local audio function, that is, to start the local audio capturing device (for example, the microphone).
-     - false: Disable the local audio function, that is, to stop local audio capturing.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int enableLocalAudio(bool enabled) = 0;
-
-    /** Disables the audio module.
-
-     @note
-     - This method affects the internal engine and can be called after the \ref ar::rtc::IRtcEngine::leaveChannel "leaveChannel" method. You can call this method either before or after joining a channel.
-     - This method resets the internal engine and takes some time to take effect. We recommend using the \ref ar::rtc::IRtcEngine::enableLocalAudio "enableLocalAudio" and \ref ar::rtc::IRtcEngine::muteLocalAudioStream "muteLocalAudioStream" methods to capture, process, and send the local audio streams.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int disableAudio() = 0;
-
-	/** Sets the audio parameters and application scenarios.
-
-     @note
-     - The *setAudioProfile* method must be called before the \ref IRtcEngine::joinChannel "joinChannel" method.
-     - In the Communication and Live-broadcast profiles, the bitrate may be different from your settings due to network self-adaptation.
-     - In scenarios requiring high-quality audio, for example, a music teaching scenario, we recommend setting profile as AUDIO_PROFILE_MUSIC_HIGH_QUALITY (4) and  scenario as AUDIO_SCENARIO_GAME_STREAMING (3).
-
-     @param  profile Sets the sample rate, bitrate, encoding mode, and the number of channels. See #AUDIO_PROFILE_TYPE.
-     @param  scenario Sets the audio application scenario. See #AUDIO_SCENARIO_TYPE. Under different audio scenarios, the device uses different volume tracks, i.e. either the in-call volume or the media volume. For details, see [What is the difference between the in-call volume and the media volume?](https://docs.ar.io/en/faq/system_volume).
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int setAudioProfile(AUDIO_PROFILE_TYPE profile, AUDIO_SCENARIO_TYPE scenario) = 0;
-    /** Stops/Resumes sending the local audio stream.
-
-     A successful \ref ar::rtc::IRtcEngine::muteLocalAudioStream "muteLocalAudioStream" method call triggers the \ref ar::rtc::IRtcEngineEventHandler::onUserMuteAudio "onUserMuteAudio" callback on the remote client.
-     @note 
-     - When @p mute is set as @p true, this method does not disable the microphone, which does not affect any ongoing recording.
-     - If you call \ref ar::rtc::IRtcEngine::setChannelProfile "setChannelProfile" after this method, the SDK resets whether or not to mute the local audio according to the channel profile and user role. Therefore, we recommend calling this method after the `setChannelProfile` method.
-
-     @param mute Sets whether to send/stop sending the local audio stream:
-     - true: Stops sending the local audio stream.
-     - false: (Default) Sends the local audio stream.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int muteLocalAudioStream(bool mute) = 0;
-    /** Stops/Resumes receiving all remote users' audio streams.
-
-     @param mute Sets whether to receive/stop receiving all remote users' audio streams.
-     - true: Stops receiving all remote users' audio streams.
-     - false: (Default) Receives all remote users' audio streams.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-	virtual int muteAllRemoteAudioStreams(bool mute) = 0;
-    /** Stops/Resumes receiving all remote users' audio streams by default.
-
-     You can call this method either before or after joining a channel. If you call `setDefaultMuteAllRemoteAudioStreams (true)` after joining a channel, the remote audio streams of all subsequent users are not received.
-
-     @note If you want to resume receiving the audio stream, call \ref ar::rtc::IRtcEngine::muteRemoteAudioStream "muteRemoteAudioStream (false)",
-     and specify the ID of the remote user whose audio stream you want to receive.
-     To receive the audio streams of multiple remote users, call `muteRemoteAudioStream (false)` as many times.
-     Calling `setDefaultMuteAllRemoteAudioStreams (false)` resumes receiving the audio streams of subsequent users only.
-
-     @param mute Sets whether to receive/stop receiving all remote users' audio streams by default:
-     - true:  Stops receiving all remote users' audio streams by default.
-     - false: (Default) Receives all remote users' audio streams by default.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-	virtual int setDefaultMuteAllRemoteAudioStreams(bool mute) = 0;
-    
-    /** Adjusts the playback volume of a specified remote user.
-
-     You can call this method as many times as necessary to adjust the playback volume of different remote users, or to repeatedly adjust the playback volume of the same remote user.
-     
-     @note
-     - Call this method after joining a channel.
-     - The playback volume here refers to the mixed volume of a specified remote user.
-     - This method can only adjust the playback volume of one specified remote user at a time. To adjust the playback volume of different remote users, call the method as many times, once for each remote user.
-
-     @param uid The ID of the remote user.
-     @param volume The playback volume of the specified remote user. The value ranges from 0 to 100:
-     - 0: Mute.
-     - 100: Original volume.
-
-     @return
-     - 0: Success.
-	 - < 0: Failure. 
-     */
-    virtual int adjustUserPlaybackSignalVolume(AR::uid_t uid, int volume) = 0;
-	/** Stops/Resumes receiving a specified remote user's audio stream.
-
-	 @note If you called the \ref ar::rtc::IRtcEngine::muteAllRemoteAudioStreams "muteAllRemoteAudioStreams" method and set @p mute as @p true to stop receiving all remote users' audio streams, call the *muteAllRemoteAudioStreams* method and set @p mute as @p false before calling this method. The *muteAllRemoteAudioStreams* method sets all remote audio streams, while the *muteRemoteAudioStream* method sets a specified remote audio stream.
-
-	 @param userId User ID of the specified remote user sending the audio.
-	 @param mute Sets whether to receive/stop receiving a specified remote user's audio stream:
-	 - true: Stops receiving the specified remote user's audio stream.
-	 - false: (Default) Receives the specified remote user's audio stream.
-
-	 @return
-	 - 0: Success.
-	 - < 0: Failure.
-
-	 */
-	virtual int muteRemoteAudioStream(uid_t userId, bool mute) = 0;
-    /** Stops/Resumes sending the local video stream.
-
-     A successful \ref ar::rtc::IRtcEngine::muteLocalVideoStream "muteLocalVideoStream" method call triggers the \ref ar::rtc::IRtcEngineEventHandler::onUserMuteVideo "onUserMuteVideo" callback on the remote client.
-     
-     @note 
-     - When set to *true*, this method does not disable the camera which does not affect the retrieval of the local video streams. This method executes faster than the \ref ar::rtc::IRtcEngine::enableLocalVideo "enableLocalVideo" method which controls the sending of the local video stream.
-     - If you call \ref ar::rtc::IRtcEngine::setChannelProfile "setChannelProfile" after this method, the SDK resets whether or not to mute the local video according to the channel profile and user role. Therefore, we recommend calling this method after the `setChannelProfile` method.
-
-     @param mute Sets whether to send/stop sending the local video stream:
-     - true: Stop sending the local video stream.
-     - false: (Default) Send the local video stream.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-	virtual int muteLocalVideoStream(bool mute) = 0;
-    /** Enables/Disables the local video capture.
-
-     This method disables or re-enables the local video capturer, and does not affect receiving the remote video stream.
-
-     After you call the \ref ar::rtc::IRtcEngine::enableVideo "enableVideo" method, the local video capturer is enabled by default. You can call \ref ar::rtc::IRtcEngine::enableLocalVideo "enableLocalVideo(false)" to disable the local video capturer. If you want to re-enable it, call \ref ar::rtc::IRtcEngine::enableLocalVideo "enableLocalVideo(true)".
-
-     After the local video capturer is successfully disabled or re-enabled, the SDK triggers the \ref ar::rtc::IRtcEngineEventHandler::onUserEnableLocalVideo "onUserEnableLocalVideo" callback on the remote client.
-     
-     @note This method affects the internal engine and can be called after the \ref ar::rtc::IRtcEngine::leaveChannel "leaveChannel" method.
-
-     @param enabled Sets whether to disable/re-enable the local video, including the capturer, renderer, and sender:
-     - true: (Default) Re-enable the local video.
-     - false: Disable the local video. Once the local video is disabled, the remote users can no longer receive the video stream of this user, while this user can still receive the video streams of the other remote users.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-	virtual int enableLocalVideo(bool enabled) = 0;
-    /** Stops/Resumes receiving all video stream from a specified remote user.
-
-     @param  mute Sets whether to receive/stop receiving all remote users' video streams:
-     - true: Stop receiving all remote users' video streams.
-     - false: (Default) Receive all remote users' video streams.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-	virtual int muteAllRemoteVideoStreams(bool mute) = 0;
-    /** Stops/Resumes receiving all remote users' video streams by default.
-
-     @param mute Sets whether to receive/stop receiving all remote users' video streams by default:
-     - true: Stop receiving all remote users' video streams by default.
-     - false: (Default) Receive all remote users' video streams by default.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-	virtual int setDefaultMuteAllRemoteVideoStreams(bool mute) = 0;
-    /** Stops/Resumes receiving the video stream from a specified remote user.
-
-     @note If you called the \ref ar::rtc::IRtcEngine::muteAllRemoteVideoStreams "muteAllRemoteVideoStreams" method and set @p mute as @p true to stop receiving all remote video streams, call the *muteAllRemoteVideoStreams* method and set @p mute as @p false before calling this method.
-
-     @param userId User ID of the specified remote user.
-     @param mute Sets whether to stop/resume receiving the video stream from a specified remote user:
-     - true: Stop receiving the specified remote user's video stream.
-     - false: (Default) Receive the specified remote user's video stream.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-	virtual int muteRemoteVideoStream(uid_t userId, bool mute) = 0;
-    /** Sets the remote user's video stream type received by the local user when the remote user sends dual streams.
-
-     This method allows the application to adjust the corresponding video-stream type based on the size of the video window to reduce the bandwidth and resources.
-
-     - If the remote user enables the dual-stream mode by calling the \ref ar::rtc::IRtcEngine::enableDualStreamMode "enableDualStreamMode" method, the SDK receives the high-stream video by default.
-     - If the dual-stream mode is not enabled, the SDK receives the high-stream video by default.
-
-     The method result returns in the \ref ar::rtc::IRtcEngineEventHandler::onApiCallExecuted "onApiCallExecuted" callback. The SDK receives the high-stream video by default to reduce the bandwidth. If needed, users may use this method to switch to the low-stream video.
-     By default, the aspect ratio of the low-stream video is the same as the high-stream video. Once the resolution of the high-stream video is set, the system automatically sets the resolution, frame rate, and bitrate of the low-stream video.
-
-     @param userId ID of the remote user sending the video stream.
-     @param streamType  Sets the video-stream type. See #REMOTE_VIDEO_STREAM_TYPE.
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-	virtual int setRemoteVideoStreamType(uid_t userId, REMOTE_VIDEO_STREAM_TYPE streamType) = 0;
-    /** Sets the default video-stream type for the video received by the local user when the remote user sends dual streams.
-
-     - If the dual-stream mode is enabled by calling the \ref ar::rtc::IRtcEngine::enableDualStreamMode "enableDualStreamMode" method, the user receives the high-stream video by default. The @p setRemoteDefaultVideoStreamType method allows the application to adjust the corresponding video-stream type according to the size of the video window, reducing the bandwidth and resources.
-     - If the dual-stream mode is not enabled, the user receives the high-stream video by default.
-
-     The result after calling this method is returned in the \ref ar::rtc::IRtcEngineEventHandler::onApiCallExecuted "onApiCallExecuted" callback. The AR SDK receives the high-stream video by default to reduce the bandwidth. If needed, users can switch to the low-stream video through this method.
-
-     @param streamType Sets the default video-stream type. See #REMOTE_VIDEO_STREAM_TYPE.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-	virtual int setRemoteDefaultVideoStreamType(REMOTE_VIDEO_STREAM_TYPE streamType) = 0;
-
-    /** Enables the \ref ar::rtc::IRtcEngineEventHandler::onAudioVolumeIndication "onAudioVolumeIndication" callback at a set time interval to report on which users are speaking and the speakers' volume.
-
-     Once this method is enabled, the SDK returns the volume indication in the \ref ar::rtc::IRtcEngineEventHandler::onAudioVolumeIndication "onAudioVolumeIndication" callback at the set time interval, whether or not any user is speaking in the channel.
-
-     @param interval Sets the time interval between two consecutive volume indications:
-     - &le; 0: Disables the volume indication.
-     - > 0: Time interval (ms) between two consecutive volume indications. We recommend setting @p interval &gt; 200 ms. Do not set @p interval &lt; 10 ms, or the *onAudioVolumeIndication* callback will not be triggered.
-     @param smooth  Smoothing factor sets the sensitivity of the audio volume indicator. The value ranges between 0 and 10. The greater the value, the more sensitive the indicator. The recommended value is 3.
-     @param report_vad
-     
-     - true: Enable the voice activity detection of the local user. Once it is enabled, the `vad` parameter of the `onAudioVolumeIndication` callback reports the voice activity status of the local user.
-     - false: (Default) Disable the voice activity detection of the local user. Once it is disabled, the `vad` parameter of the `onAudioVolumeIndication` callback does not report the voice activity status of the local user, except for the scenario where the engine automatically detects the voice activity of the local user.
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-	virtual int enableAudioVolumeIndication(int interval, int smooth, bool report_vad) = 0;
-    /** **DEPRECATED** Starts an audio recording.
-     * Use \ref IRtcEngine::startAudioRecording(const char* filePath, int sampleRate, AUDIO_RECORDING_QUALITY_TYPE quality) "startAudioRecording"2 instead.
-
-     The SDK allows recording during a call. Supported formats:
-
-     - .wav: Large file size with high fidelity.
-     - .aac: Small file size with low fidelity.
-
-     This method has a fixed sample rate of 32 kHz.
-
-     Ensure that the directory to save the recording file exists and is writable.
-     This method is usually called after the \ref ar::rtc::IRtcEngine::joinChannel "joinChannel" method.
-     The recording automatically stops when the \ref ar::rtc::IRtcEngine::leaveChannel "leaveChannel" method is called.
-
-     @param filePath Pointer to the absolute file path of the recording file. The string of the file name is in UTF-8.
-     @param quality Sets the audio recording quality. See #AUDIO_RECORDING_QUALITY_TYPE.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-	virtual int startAudioRecording(const char* filePath, AUDIO_RECORDING_QUALITY_TYPE quality) = 0;
-
-    /** Starts an audio recording on the client.
-     * 
-     * The SDK allows recording during a call. After successfully calling this method, you can record the audio of all the users in the channel and get an audio recording file. 
-     * Supported formats of the recording file are as follows:
-     * - .wav: Large file size with high fidelity.
-     * - .aac: Small file size with low fidelity.
-     * 
-     * @note
-     * - Ensure that the directory you use to save the recording file exists and is writable.
-     * - This method is usually called after the `joinChannel` method. The recording automatically stops when you call the `leaveChannel` method.
-     * - For better recording effects, set quality as #AUDIO_RECORDING_QUALITY_MEDIUM or #AUDIO_RECORDING_QUALITY_HIGH when `sampleRate` is 44.1 kHz or 48 kHz.
-     * 
-     * @param filePath Pointer to the absolute file path of the recording file. The string of the file name is in UTF-8.
-     * @param sampleRate Sample rate (kHz) of the recording file. Supported values are as follows:
-     * - 16
-     * - (Default) 32
-     * - 44.1
-     * - 48
-     * @param quality Sets the audio recording quality. See #AUDIO_RECORDING_QUALITY_TYPE.
-     * 
-     * @return
-     * - 0: Success.
-     * - < 0: Failure.
-     */
-	virtual int startAudioRecording(const char* filePath, int sampleRate, AUDIO_RECORDING_QUALITY_TYPE quality) = 0;
-    /** Stops an audio recording on the client.
-
-     You can call this method before calling the \ref ar::rtc::IRtcEngine::leaveChannel "leaveChannel" method else, the recording automatically stops when the \ref ar::rtc::IRtcEngine::leaveChannel "leaveChannel" method is called.
-
-     @return
-     - 0: Success
-     - < 0: Failure.
-     */
-	virtual int stopAudioRecording() = 0;
-    /** Starts playing and mixing the music file.
-
-     This method mixes the specified local audio file with the audio stream from the microphone, or replaces the microphone's audio stream with the specified local audio file. You can choose whether the other user can hear the local audio playback and specify the number of playback loops. This method also supports online music playback.
-
-     When the audio mixing file playback finishes after calling this method, the SDK triggers the \ref ar::rtc::IRtcEngineEventHandler::onAudioMixingFinished "onAudioMixingFinished" callback.
-
-     A successful \ref ar::rtc::IRtcEngine::startAudioMixing "startAudioMixing" method call triggers the \ref ar::rtc::IRtcEngineEventHandler::onAudioMixingStateChanged "onAudioMixingStateChanged" (PLAY) callback on the local client.
-
-     When the audio mixing file playback finishes, the SDK triggers the \ref ar::rtc::IRtcEngineEventHandler::onAudioMixingStateChanged "onAudioMixingStateChanged" (STOPPED) callback on the local client.
-     @note
-     - Call this method when you are in a channel.
-     - If the local audio mixing file does not exist, or if the SDK does not support the file format or cannot access the music file URL, the SDK returns WARN_AUDIO_MIXING_OPEN_ERROR = 701.
-
-     @param filePath Pointer to the absolute path of the local or online audio file to mix. Supported audio formats: 3GP, ASF, ADTS, AVI, MP3, MPEG-4, SAMI, and WAVE. For more information, see [Supported Media Formats in Media Foundation](https://docs.microsoft.com/en-us/windows/desktop/medfound/supported-media-formats-in-media-foundation).
-     @param loopback Sets which user can hear the audio mixing:
-     - true: Only the local user can hear the audio mixing.
-     - false: Both users can hear the audio mixing.
-     @param replace Sets the audio mixing content:
-     - true: Only the specified audio file is published; the audio stream received by the microphone is not published.
-     - false: The local audio file is mixed with the audio stream from the microphone.
-     @param cycle Sets the number of playback loops:
-     - Positive integer: Number of playback loops.
-     - -1: Infinite playback loops.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-	virtual int startAudioMixing(const char* filePath, bool loopback, bool replace, int cycle) = 0;
-    /** Stops playing and mixing the music file.
-
-     Call this method when you are in a channel.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-	virtual int stopAudioMixing() = 0;
-    /** Pauses playing and mixing the music file.
-
-     Call this method when you are in a channel.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-	virtual int pauseAudioMixing() = 0;
-    /** Resumes playing and mixing the music file.
-
-     Call this method when you are in a channel.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-	virtual int resumeAudioMixing() = 0;
-    /** **DEPRECATED** AR does not recommend using this method.
-
-     Sets the high-quality audio preferences. Call this method and set all parameters before joining a channel.
-
-     Do not call this method again after joining a channel.
-
-     @param fullband Sets whether to enable/disable full-band codec (48-kHz sample rate). Not compatible with SDK versions before v1.7.4:
-     - true: Enable full-band codec.
-     - false: Disable full-band codec.
-     @param  stereo Sets whether to enable/disable stereo codec. Not compatible with SDK versions before v1.7.4:
-     - true: Enable stereo codec.
-     - false: Disable stereo codec.
-     @param fullBitrate Sets whether to enable/disable high-bitrate mode. Recommended in voice-only mode:
-     - true: Enable high-bitrate mode.
-     - false: Disable high-bitrate mode.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int setHighQualityAudioParameters(bool fullband, bool stereo, bool fullBitrate) = 0;
-    /** Adjusts the volume during audio mixing.
-
-     Call this method when you are in a channel.
-
-     @note Calling this method does not affect the volume of audio effect file playback invoked by the \ref ar::rtc::IRtcEngine::playEffect "playEffect" method.
-
-     @param volume Audio mixing volume. The value ranges between 0 and 100 (default).
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-	virtual int adjustAudioMixingVolume(int volume) = 0;
-    /** Adjusts the audio mixing volume for local playback.
-
-     @note Call this method when you are in a channel.
-
-     @param volume Audio mixing volume for local playback. The value ranges between 0 and 100 (default).
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int adjustAudioMixingPlayoutVolume(int volume) = 0;
-    /** Retrieves the audio mixing volume for local playback.
-
-     This method helps troubleshoot audio volume related issues.
-
-     @note Call this method when you are in a channel.
-
-     @return
-     - &ge; 0: The audio mixing volume, if this method call succeeds. The value range is [0,100].
-     - < 0: Failure.
-     */
-    virtual int getAudioMixingPlayoutVolume() = 0;
-    /** Adjusts the audio mixing volume for publishing (for remote users).
-
-     @note Call this method when you are in a channel.
-
-     @param volume Audio mixing volume for publishing. The value ranges between 0 and 100 (default).
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int adjustAudioMixingPublishVolume(int volume) = 0;
-    /** Retrieves the audio mixing volume for publishing.
-
-     This method helps troubleshoot audio volume related issues.
-
-     @note Call this method when you are in a channel.
-
-     @return
-     - &ge; 0: The audio mixing volume for publishing, if this method call succeeds. The value range is [0,100].
-     - < 0: Failure.
-     */
-    virtual int getAudioMixingPublishVolume() = 0;
-
-    /** Retrieves the duration (ms) of the music file.
-
-     Call this method when you are in a channel.
-
-     @return
-     - &ge; 0: The audio mixing duration, if this method call succeeds.
-     - < 0: Failure.
-     */
-	virtual int getAudioMixingDuration() = 0;
-    /** Retrieves the playback position (ms) of the music file.
-
-     Call this method when you are in a channel.
-
-     @return
-     - &ge; 0: The current playback position of the audio mixing, if this method call succeeds.
-     - < 0: Failure.
-     */
-	virtual int getAudioMixingCurrentPosition() = 0;
-    /** Sets the playback position of the music file to a different starting position (the default plays from the beginning).
-
-     @param pos The playback starting position (ms) of the music file.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int setAudioMixingPosition(int pos /*in ms*/) = 0;
-    /** Sets the pitch of the local music file.
-     * @since v3.0.1
-     *
-     * When a local music file is mixed with a local human voice, call this method to set the pitch of the local music file only.
-     *
-     * @note
-     * Call this method after calling `startAudioMixing`.
-     *
-     * @param pitch Sets the pitch of the local music file by chromatic scale. The default value is 0,
-     * which means keeping the original pitch. The value ranges from -12 to 12, and the pitch value between
-     * consecutive values is a chromatic value. The greater the absolute value of this parameter, the
-     * higher or lower the pitch of the local music file.
-     *
-     * @return
-     * - 0: Success.
-     * - < 0: Failure.
-     */
-    virtual int setAudioMixingPitch(int pitch) = 0;
-    /** Retrieves the volume of the audio effects.
-
-     The value ranges between 0.0 and 100.0.
-
-     @return
-     - &ge; 0: Volume of the audio effects, if this method call succeeds.
-
-     - < 0: Failure.
-     */
-	virtual int getEffectsVolume() = 0;
-    /** Sets the volume of the audio effects.
-
-     @param volume Sets the volume of the audio effects. The value ranges between 0 and 100 (default).
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-	virtual int setEffectsVolume(int volume) = 0;
-    /** Sets the volume of a specified audio effect.
-
-     @param soundId ID of the audio effect. Each audio effect has a unique ID.
-     @param volume Sets the volume of the specified audio effect. The value ranges between 0 and 100 (default).
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-	virtual int setVolumeOfEffect(int soundId, int volume) = 0;
-
-#if defined(__ANDROID__) || (defined(__APPLE__) && TARGET_OS_IOS)
-    /**
-     * Enables/Disables face detection for the local user. Applies to Android and iOS only.
-     * @since v3.0.1
-     *
-     * Once face detection is enabled, the SDK triggers the \ref IRtcEngineEventHandler::onFacePositionChanged "onFacePositionChanged" callback
-     * to report the face information of the local user, which includes the following aspects:
-     * - The width and height of the local video.
-     * - The position of the human face in the local video.
-     * - The distance between the human face and the device screen.
-     *
-     * @param enable Determines whether to enable the face detection function for the local user:
-     * - true: Enable face detection.
-     * - false: (Default) Disable face detection.
-     * @return
-     * - 0: Success.
-     * - < 0: Failure.
-     */
-    virtual int enableFaceDetection(bool enable) = 0;
-#endif
-    /** Plays a specified local or online audio effect file.
-
-     This method allows you to set the loop count, pitch, pan, and gain of the audio effect file, as well as whether the remote user can hear the audio effect.
-
-     To play multiple audio effect files simultaneously, call this method multiple times with different soundIds and filePaths. We recommend playing no more than three audio effect files at the same time.
-
-     @param soundId ID of the specified audio effect. Each audio effect has a unique ID.
-
-     @note
-     - If the audio effect is preloaded into the memory through the \ref IRtcEngine::preloadEffect "preloadEffect" method, the value of @p soundID must be the same as that in the *preloadEffect* method.
-     - Playing multiple online audio effect files simultaneously is not supported on macOS and Windows.
-
-     @param filePath The absolute path to the local audio effect file or the URL of the online audio effect file.
-     @param loopCount Sets the number of times the audio effect loops:
-     - 0: Play the audio effect once.
-     - 1: Play the audio effect twice.
-     - -1: Play the audio effect in an indefinite loop until the \ref IRtcEngine::stopEffect "stopEffect" or \ref IRtcEngine::stopAllEffects "stopAllEffects" method is called.
-     @param pitch Sets the pitch of the audio effect. The value ranges between 0.5 and 2. The default value is 1 (no change to the pitch). The lower the value, the lower the pitch.
-     @param pan Sets the spatial position of the audio effect. The value ranges between -1.0 and 1.0:
-     - 0.0: The audio effect displays ahead.
-     - 1.0: The audio effect displays to the right.
-     - -1.0: The audio effect displays to the left.
-     @param gain  Sets the volume of the audio effect. The value ranges between 0 and 100 (default). The lower the value, the lower the volume of the audio effect.
-     @param publish Sets whether or not to publish the specified audio effect to the remote stream:
-     - true: The locally played audio effect is published to the AR Cloud and the remote users can hear it.
-     - false: The locally played audio effect is not published to the AR Cloud and the remote users cannot hear it.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-	virtual int playEffect(int soundId, const char* filePath, int loopCount, double pitch, double pan, int gain, bool publish = false) = 0;
-    /** Stops playing a specified audio effect.
-
-     @param soundId ID of the audio effect to stop playing. Each audio effect has a unique ID.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-	virtual int stopEffect(int soundId) = 0;
-    /** Stops playing all audio effects.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-	virtual int stopAllEffects() = 0;
-
-    /** Preloads a specified audio effect file into the memory.
-
-     @note This method does not support online audio effect files.
-
-     To ensure smooth communication, limit the size of the audio effect file. We recommend using this method to preload the audio effect before calling the \ref IRtcEngine::joinChannel "joinChannel" method.
-
-     Supported audio formats: mp3, aac, m4a, 3gp, and wav.
-
-     @param soundId ID of the audio effect. Each audio effect has a unique ID.
-     @param filePath Pointer to the absolute path of the audio effect file.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-	virtual int preloadEffect(int soundId, const char* filePath) = 0;
-    /** Releases a specified preloaded audio effect from the memory.
-
-     @param soundId ID of the audio effect. Each audio effect has a unique ID.
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-	virtual int unloadEffect(int soundId) = 0;
-    /** Pauses a specified audio effect.
-
-     @param soundId ID of the audio effect. Each audio effect has a unique ID.
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-	virtual int pauseEffect(int soundId) = 0;
-    /** Pauses all audio effects.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-	virtual int pauseAllEffects() = 0;
-    /** Resumes playing a specified audio effect.
-
-     @param soundId ID of the audio effect. Each audio effect has a unique ID.
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-	virtual int resumeEffect(int soundId) = 0;
-    /** Resumes playing all audio effects.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-	virtual int resumeAllEffects() = 0;
-    /** Enables/Disables stereo panning for remote users.
-
-     Ensure that you call this method before joinChannel to enable stereo panning for remote users so that the local user can track the position of a remote user by calling \ref ar::rtc::IRtcEngine::setRemoteVoicePosition "setRemoteVoicePosition".
-
-     @param enabled Sets whether or not to enable stereo panning for remote users:
-     - true: enables stereo panning.
-     - false: disables stereo panning.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int enableSoundPositionIndication(bool enabled) = 0;
-    /** Sets the sound position and gain of a remote user.
-
-     When the local user calls this method to set the sound position of a remote user, the sound difference between the left and right channels allows the local user to track the real-time position of the remote user, creating a real sense of space. This method applies to massively multiplayer online games, such as Battle Royale games.
-
-     @note
-     - For this method to work, enable stereo panning for remote users by calling the \ref ar::rtc::IRtcEngine::enableSoundPositionIndication "enableSoundPositionIndication" method before joining a channel.
-     - This method requires hardware support. For the best sound positioning, we recommend using a stereo speaker.
-
-     @param uid The ID of the remote user.
-     @param pan The sound position of the remote user. The value ranges from -1.0 to 1.0:
-     - 0.0: the remote sound comes from the front.
-     - -1.0: the remote sound comes from the left.
-     - 1.0: the remote sound comes from the right.
-     @param gain Gain of the remote user. The value ranges from 0.0 to 100.0. The default value is 100.0 (the original gain of the remote user). The smaller the value, the less the gain.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int setRemoteVoicePosition(uid_t uid, double pan, double gain) = 0;
-
-    /** Changes the voice pitch of the local speaker.
-
-     @param pitch Sets the voice pitch. The value ranges between 0.5 and 2.0. The lower the value, the lower the voice pitch. The default value is 1.0 (no change to the local voice pitch).
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-	virtual int setLocalVoicePitch(double pitch) = 0;
-    /** Sets the local voice equalization effect.
-
-     @param bandFrequency Sets the band frequency. The value ranges between 0 and 9, representing the respective 10-band center frequencies of the voice effects, including 31, 62, 125, 500, 1k, 2k, 4k, 8k, and 16k Hz. See #AUDIO_EQUALIZATION_BAND_FREQUENCY.
-     @param bandGain  Sets the gain of each band in dB. The value ranges between -15 and 15.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-	virtual int setLocalVoiceEqualization(AUDIO_EQUALIZATION_BAND_FREQUENCY bandFrequency, int bandGain) = 0;
-    /**  Sets the local voice reverberation.
-
-     v2.4.0 adds the \ref ar::rtc::IRtcEngine::setLocalVoiceReverbPreset "setLocalVoiceReverbPreset" method, a more user-friendly method for setting the local voice reverberation. You can use this method to set the local reverberation effect, such as pop music, R&B, rock music, and hip-hop.
-
-     @param reverbKey Sets the reverberation key. See #AUDIO_REVERB_TYPE.
-     @param value Sets the value of the reverberation key.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-	virtual int setLocalVoiceReverb(AUDIO_REVERB_TYPE reverbKey, int value) = 0;
-    /** Sets the local voice changer option.
-
-     @note Do not use this method together with the \ref ar::rtc::IRtcEngine::setLocalVoiceReverbPreset "setLocalVoiceReverbPreset" method, because the method called later overrides the one called earlier.
-
-     @param voiceChanger Sets the local voice changer option. See #VOICE_CHANGER_PRESET.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int setLocalVoiceChanger(VOICE_CHANGER_PRESET voiceChanger) = 0;
-    /** Sets the preset local voice reverberation effect.
-
-     @note
-     - Do not use this method together with \ref ar::rtc::IRtcEngine::setLocalVoiceReverb "setLocalVoiceReverb".
-     - Do not use this method together with the \ref ar::rtc::IRtcEngine::setLocalVoiceChanger "setLocalVoiceChanger" method, because the method called later overrides the one called earlier.
-
-     @param reverbPreset Sets the preset audio reverberation configuration. See #AUDIO_REVERB_PRESET.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int setLocalVoiceReverbPreset(AUDIO_REVERB_PRESET reverbPreset) = 0;
-    /** Sets an SDK preset voice beautifier effect.
-     *
-     * @since v3.2.0
-     *
-     * Call this method to set an SDK preset voice beautifier effect for the local user who sends an audio stream. After
-     * setting a voice beautifier effect, all users in the channel can hear the effect.
-     *
-     * You can set different voice beautifier effects for different scenarios. See *Set the Voice Beautifier and Audio Effects*.
-     *
-     * To achieve better audio effect quality, AR recommends calling \ref IRtcEngine::setAudioProfile "setAudioProfile" and
-     * setting the `scenario` parameter to `AUDIO_SCENARIO_GAME_STREAMING(3)` and the `profile` parameter to
-     * `AUDIO_PROFILE_MUSIC_HIGH_QUALITY(4)` or `AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO(5)` before calling this method.
-     *
-     * @note
-     * - You can call this method either before or after joining a channel.
-     * - Do not set the `profile` parameter of \ref IRtcEngine::setAudioProfile "setAudioProfile" to `AUDIO_PROFILE_SPEECH_STANDARD(1)`
-     * or `AUDIO_PROFILE_IOT(6)`; otherwise, this method call fails.
-     * - This method works best with the human voice. AR does not recommend using this method for audio containing music.
-     * - After calling this method, AR recommends not calling the following methods, because they can override \ref IRtcEngine::setAudioEffectParameters "setAudioEffectParameters":
-     *  - \ref IRtcEngine::setAudioEffectPreset "setAudioEffectPreset"
-     *  - \ref IRtcEngine::setVoiceBeautifierPreset "setVoiceBeautifierPreset"
-     *  - \ref IRtcEngine::setLocalVoiceReverbPreset "setLocalVoiceReverbPreset"
-     *  - \ref IRtcEngine::setLocalVoiceChanger "setLocalVoiceChanger"
-     *  - \ref IRtcEngine::setLocalVoicePitch "setLocalVoicePitch"
-     *  - \ref IRtcEngine::setLocalVoiceEqualization "setLocalVoiceEqualization"
-     *  - \ref IRtcEngine::setLocalVoiceReverb "setLocalVoiceReverb"
-     *
-     * @param preset The options for SDK preset voice beautifier effects: #VOICE_BEAUTIFIER_PRESET.
-     *
-     * @return
-     * - 0: Success.
-     * - < 0: Failure.
-     */
-    virtual int setVoiceBeautifierPreset(VOICE_BEAUTIFIER_PRESET preset) = 0;
-    /** Sets an SDK preset audio effect.
-     *
-     * @since v3.2.0
-     *
-     * Call this method to set an SDK preset audio effect for the local user who sends an audio stream. This audio effect
-     * does not change the gender characteristics of the original voice. After setting an audio effect, all users in the
-     * channel can hear the effect.
-     *
-     * You can set different audio effects for different scenarios. See *Set the Voice Beautifier and Audio Effects*.
-     *
-     * To achieve better audio effect quality, AR recommends calling \ref IRtcEngine::setAudioProfile "setAudioProfile"
-     * and setting the `scenario` parameter to `AUDIO_SCENARIO_GAME_STREAMING(3)` before calling this method.
-     *
-     * @note
-     * - You can call this method either before or after joining a channel.
-     * - Do not set the profile `parameter` of `setAudioProfile` to `AUDIO_PROFILE_SPEECH_STANDARD(1)` or `AUDIO_PROFILE_IOT(6)`;
-     * otherwise, this method call fails.
-     * - This method works best with the human voice. AR does not recommend using this method for audio containing music.
-     * - If you call this method and set the `preset` parameter to enumerators except `ROOM_ACOUSTICS_3D_VOICE` or `PITCH_CORRECTION`,
-     * do not call \ref IRtcEngine::setAudioEffectParameters "setAudioEffectParameters"; otherwise, `setAudioEffectParameters`
-     * overrides this method.
-     * - After calling this method, AR recommends not calling the following methods, because they can override `setAudioEffectPreset`:
-     *  - \ref IRtcEngine::setVoiceBeautifierPreset "setVoiceBeautifierPreset"
-     *  - \ref IRtcEngine::setLocalVoiceReverbPreset "setLocalVoiceReverbPreset"
-     *  - \ref IRtcEngine::setLocalVoiceChanger "setLocalVoiceChanger"
-     *  - \ref IRtcEngine::setLocalVoicePitch "setLocalVoicePitch"
-     *  - \ref IRtcEngine::setLocalVoiceEqualization "setLocalVoiceEqualization"
-     *  - \ref IRtcEngine::setLocalVoiceReverb "setLocalVoiceReverb"
-     *
-     * @param preset The options for SDK preset audio effects. See #AUDIO_EFFECT_PRESET.
-     *
-     * @return
-     * - 0: Success.
-     * - < 0: Failure.
-     */
-    virtual int setAudioEffectPreset(AUDIO_EFFECT_PRESET preset) = 0;
-    /** Sets parameters for SDK preset audio effects.
-     *
-     * @since v3.2.0
-     *
-     * Call this method to set the following parameters for the local user who send an audio stream:
-     * - 3D voice effect: Sets the cycle period of the 3D voice effect.
-     * - Pitch correction effect: Sets the basic mode and tonic pitch of the pitch correction effect. Different songs
-     * have different modes and tonic pitches. AR recommends bounding this method with interface elements to enable
-     * users to adjust the pitch correction interactively.
-     *
-     * After setting parameters, all users in the channel can hear the relevant effect.
-     *
-     * You can call this method directly or after \ref IRtcEngine::setAudioEffectPreset "setAudioEffectPreset". If you
-     * call this method after \ref IRtcEngine::setAudioEffectPreset "setAudioEffectPreset", ensure that you set the preset
-     * parameter of `setAudioEffectPreset` to `ROOM_ACOUSTICS_3D_VOICE` or `PITCH_CORRECTION` and then call this method
-     * to set the same enumerator; otherwise, this method overrides `setAudioEffectPreset`.
-     *
-     * @note
-     * - You can call this method either before or after joining a channel.
-     * - To achieve better audio effect quality, AR recommends calling \ref IRtcEngine::setAudioProfile "setAudioProfile"
-     * and setting the `scenario` parameter to `AUDIO_SCENARIO_GAME_STREAMING(3)` before calling this method.
-     * - Do not set the `profile` parameter of \ref IRtcEngine::setAudioProfile "setAudioProfile" to `AUDIO_PROFILE_SPEECH_STANDARD(1)` or
-     * `AUDIO_PROFILE_IOT(6)`; otherwise, this method call fails.
-     * - This method works best with the human voice. AR does not recommend using this method for audio containing music.
-     * - After calling this method, AR recommends not calling the following methods, because they can override `setAudioEffectParameters`:
-     *  - \ref IRtcEngine::setAudioEffectPreset "setAudioEffectPreset"
-     *  - \ref IRtcEngine::setVoiceBeautifierPreset "setVoiceBeautifierPreset"
-     *  - \ref IRtcEngine::setLocalVoiceReverbPreset "setLocalVoiceReverbPreset"
-     *  - \ref IRtcEngine::setLocalVoiceChanger "setLocalVoiceChanger"
-     *  - \ref IRtcEngine::setLocalVoicePitch "setLocalVoicePitch"
-     *  - \ref IRtcEngine::setLocalVoiceEqualization "setLocalVoiceEqualization"
-     *  - \ref IRtcEngine::setLocalVoiceReverb "setLocalVoiceReverb"
-     *
-     * @param preset The options for SDK preset audio effects:
-     * - 3D voice effect: `ROOM_ACOUSTICS_3D_VOICE`.
-     *  - Call \ref IRtcEngine::setAudioProfile "setAudioProfile" and set the `profile` parameter to `AUDIO_PROFILE_MUSIC_STANDARD_STEREO(3)`
-     * or `AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO(5)` before setting this enumerator; otherwise, the enumerator setting does not take effect.
-     *  - If the 3D voice effect is enabled, users need to use stereo audio playback devices to hear the anticipated voice effect.
-     * - Pitch correction effect: `PITCH_CORRECTION`. To achieve better audio effect quality, AR recommends calling
-     * \ref IRtcEngine::setAudioProfile "setAudioProfile" and setting the `profile` parameter to `AUDIO_PROFILE_MUSIC_HIGH_QUALITY(4)` or
-     * `AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO(5)` before setting this enumerator.
-     * @param param1
-     * - If you set `preset` to `ROOM_ACOUSTICS_3D_VOICE`, the `param1` sets the cycle period of the 3D voice effect.
-     * The value range is [1,60] and the unit is a second. The default value is 10 seconds, indicating that the voice moves
-     * around you every 10 seconds.
-     * - If you set `preset` to `PITCH_CORRECTION`, `param1` sets the basic mode of the pitch correction effect:
-     *  - `1`: (Default) Natural major scale.
-     *  - `2`: Natural minor scale.
-     *  - `3`: Japanese pentatonic scale.
-     * @param param2
-     * - If you set `preset` to `ROOM_ACOUSTICS_3D_VOICE`, you do not need to set `param2`.
-     * - If you set `preset` to `PITCH_CORRECTION`, `param2` sets the tonic pitch of the pitch correction effect:
-     *  - `1`: A
-     *  - `2`: A#
-     *  - `3`: B
-     *  - `4`: (Default) C
-     *  - `5`: C#
-     *  - `6`: D
-     *  - `7`: D#
-     *  - `8`: E
-     *  - `9`: F
-     *  - `10`: F#
-     *  - `11`: G
-     *  - `12`: G#
-     *
-     * @return
-     * - 0: Success.
-     * - < 0: Failure.
-     */
-    virtual int setAudioEffectParameters(AUDIO_EFFECT_PRESET preset, int param1, int param2) = 0;
-    /** Sets the log files that the SDK outputs.
-     *
-     * By default, the SDK outputs five log files, `arsdk.log`, `arsdk_1.log`, `arsdk_2.log`, `arsdk_3.log`, `arsdk_4.log`, each with a default size of 1024 KB.
-     * These log files are encoded in UTF-8. The SDK writes the latest logs in `arsdk.log`. When `arsdk.log` is full, the SDK deletes the log file with the earliest
-     * modification time among the other four, renames `arsdk.log` to the name of the deleted log file, and create a new `arsdk.log` to record latest logs.
-     *
-     * @note Ensure that you call this method immediately after calling \ref ar::rtc::IRtcEngine::initialize "initialize" , otherwise the output logs may not be complete.
-     *
-     * @see \ref IRtcEngine::setLogFileSize "setLogFileSize"
-     * @see \ref IRtcEngine::setLogFilter "setLogFilter"
-     *
-     * @param filePath The absolute path of log files. The default file path is `C: \Users\<user_name>\AppData\Local\AR\<process_name>\arsdk.log`.
-     * Ensure that the directory for the log files exists and is writable. You can use this parameter to rename the log files.
-     *
-     * @return
-     * - 0: Success.
-     * - < 0: Failure.
-     */
-	virtual int setLogFile(const char* filePath) = 0;
-    /** Sets the output log level of the SDK.
-
-     You can use one or a combination of the log filter levels. The log level follows the sequence of OFF, CRITICAL, ERROR, WARNING, INFO, and DEBUG. Choose a level to see the logs preceding that level.
-
-     If you set the log level to WARNING, you see the logs within levels CRITICAL, ERROR, and WARNING.
-
-     @param filter Sets the log filter level. See #LOG_FILTER_TYPE.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-	virtual int setLogFilter(unsigned int filter) = 0;
-    /** Sets the log file size (KB).
-
-     The SDK has two log files, each with a default size of 512 KB. If you set @p fileSizeInBytes as 1024 KB, the SDK outputs log files with a total maximum size of 2 MB. If the total size of the log files exceed the set value, the new output log files overwrite the old output log files.
-
-     @param fileSizeInKBytes The SDK log file size (KB).
-     @return
-     - 0: Success.
-     - <0: Failure.
-     */
-    virtual int setLogFileSize(unsigned int fileSizeInKBytes) = 0;
-    /** 
-     @deprecated This method is deprecated, use the \ref IRtcEngine::setLocalRenderMode(RENDER_MODE_TYPE renderMode, VIDEO_MIRROR_MODE_TYPE mirrorMode) "setLocalRenderMode"2 method instead.
-     Sets the local video display mode.
-
-     This method can be called multiple times during a call to change the display mode.
-
-     @param renderMode  Sets the local video display mode. See #RENDER_MODE_TYPE.
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-	virtual int setLocalRenderMode(RENDER_MODE_TYPE renderMode) = 0;
-    /** Updates the display mode of the local video view.
-
-     After initializing the local video view, you can call this method to update its rendering and mirror modes. It affects only the video view that the local user sees, not the published local video stream.
-     
-     @note
-     - Ensure that you have called the \ref IRtcEngine::setupLocalVideo "setupLocalVideo" method to initialize the local video view before calling this method.
-     @param renderMode The rendering mode of the local video view. See #RENDER_MODE_TYPE.
-     @param mirrorMode 
-     - The mirror mode of the local video view. See #VIDEO_MIRROR_MODE_TYPE. 
-     - **Note**: If you use a front camera, the SDK enables the mirror mode by default; if you use a rear camera, the SDK disables the mirror mode by default.
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int setLocalRenderMode(RENDER_MODE_TYPE renderMode, VIDEO_MIRROR_MODE_TYPE mirrorMode) = 0;
-    /** 
-     @deprecated This method is deprecated, use the \ref IRtcEngine::setRemoteRenderMode(uid_t userId, RENDER_MODE_TYPE renderMode, VIDEO_MIRROR_MODE_TYPE mirrorMode) "setRemoteRenderMode"2 method instead.
-     Sets the video display mode of a specified remote user.
-
-     This method can be called multiple times during a call to change the display mode.
-
-     @param userId ID of the remote user.
-     @param renderMode  Sets the video display mode. See #RENDER_MODE_TYPE.
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-	virtual int setRemoteRenderMode(uid_t userId, RENDER_MODE_TYPE renderMode) = 0;
-    /** Updates the display mode of the video view of a remote user.
-
-     After initializing the video view of a remote user, you can call this method to update its rendering and mirror modes. This method affects only the video view that the local user sees.
-
-     @note
-     - Ensure that you have called the \ref IRtcEngine::setupRemoteVideo "setupRemoteVideo" method to initialize the remote video view before calling this method.
-     - During a call, you can call this method as many times as necessary to update the display mode of the video view of a remote user.
-
-     @param userId The ID of the remote user.
-     @param renderMode The rendering mode of the remote video view. See #RENDER_MODE_TYPE.
-     @param mirrorMode 
-     - The mirror mode of the remote video view. See #VIDEO_MIRROR_MODE_TYPE.
-     - **Note**: The SDK disables the mirror mode by default.
-     
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int setRemoteRenderMode(uid_t userId, RENDER_MODE_TYPE renderMode, VIDEO_MIRROR_MODE_TYPE mirrorMode) = 0;
-    /** 
-     @deprecated This method is deprecated, use the \ref IRtcEngine::setupLocalVideo "setupLocalVideo" 
-     or \ref IRtcEngine::setLocalRenderMode(RENDER_MODE_TYPE renderMode, VIDEO_MIRROR_MODE_TYPE mirrorMode) "setLocalRenderMode" method instead.
-     Sets the local video mirror mode.
-
-     You must call this method before calling the \ref ar::rtc::IRtcEngine::startPreview "startPreview" method, otherwise the mirror mode will not work.
-
-     @warning
-     - Call this method after calling the \ref ar::rtc::IRtcEngine::setupLocalVideo "setupLocalVideo" method to initialize the local video view.
-     - During a call, you can call this method as many times as necessary to update the mirror mode of the local video view.
-
-     @param mirrorMode Sets the local video mirror mode. See #VIDEO_MIRROR_MODE_TYPE.
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-	virtual int setLocalVideoMirrorMode(VIDEO_MIRROR_MODE_TYPE mirrorMode) = 0;
-    /** Sets the stream mode to the single-stream (default) or dual-stream mode. (Live broadcast only.)
-
-     If the dual-stream mode is enabled, the receiver can choose to receive the high stream (high-resolution and high-bitrate video stream), or the low stream (low-resolution and low-bitrate video stream).
-
-     @param enabled Sets the stream mode:
-     - true: Dual-stream mode.
-     - false: (Default) Single-stream mode.
-     */
-	virtual int enableDualStreamMode(bool enabled) = 0;
-    /** Sets the external audio source. Please call this method before \ref ar::rtc::IRtcEngine::joinChannel "joinChannel".
-
-     @param enabled Sets whether to enable/disable the external audio source:
-     - true: Enables the external audio source.
-     - false: (Default) Disables the external audio source.
-     @param sampleRate Sets the sample rate (Hz) of the external audio source, which can be set as 8000, 16000, 32000, 44100, or 48000 Hz.
-     @param channels Sets the number of audio channels of the external audio source:
-     - 1: Mono.
-     - 2: Stereo.
-     
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-	virtual int setExternalAudioSource(bool enabled, int sampleRate, int channels) = 0;
-    /** Sets the external audio sink.
-     * This method applies to scenarios where you want to use external audio
-     * data for playback. After enabling the external audio sink, you can call
-     * the \ref AM::IMediaEngine::pullAudioFrame "pullAudioFrame" method to pull the remote audio data, process
-     * it, and play it with the audio effects that you want.
-     *
-     * @note
-     * Once you enable the external audio sink, the app will not retrieve any
-     * audio data from the
-     * \ref AM::IAudioFrameObserver::onPlaybackAudioFrame "onPlaybackAudioFrame" callback.
-     *
-     * @param enabled
-     * - true: Enables the external audio sink.
-     * - false: (Default) Disables the external audio sink.
-     * @param sampleRate Sets the sample rate (Hz) of the external audio sink, which can be set as 16000, 32000, 44100 or 48000.
-     * @param channels Sets the number of audio channels of the external
-     * audio sink:
-     * - 1: Mono.
-     * - 2: Stereo.
-     *
-     * @return
-     * - 0: Success.
-     * - < 0: Failure.
-     */
-    virtual int setExternalAudioSink(bool enabled, int sampleRate, int channels) = 0;
-    /** Sets the audio recording format for the \ref AM::IAudioFrameObserver::onRecordAudioFrame "onRecordAudioFrame" callback. 
-    
-
-     @param sampleRate Sets the sample rate (@p samplesPerSec) returned in the *onRecordAudioFrame* callback, which can be set as 8000, 16000, 32000, 44100, or 48000 Hz.
-     @param channel Sets the number of audio channels (@p channels) returned in the *onRecordAudioFrame* callback:
-     - 1: Mono
-     - 2: Stereo
-     @param mode Sets the use mode (see #RAW_AUDIO_FRAME_OP_MODE_TYPE) of the *onRecordAudioFrame* callback.
-     @param samplesPerCall Sets the number of samples returned in the *onRecordAudioFrame* callback. `samplesPerCall` is usually set as 1024 for RTMP streaming.
-
-
-     @note The SDK triggers the `onRecordAudioFrame` callback according to the sample interval. Ensure that the sample interval >= 0.01 (s). And, Sample interval (sec) = `samplePerCall`/(`sampleRate` x `channel`). 
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-	virtual int setRecordingAudioFrameParameters(int sampleRate, int channel, RAW_AUDIO_FRAME_OP_MODE_TYPE mode, int samplesPerCall) = 0;
-    /** Sets the audio playback format for the \ref AM::IAudioFrameObserver::onPlaybackAudioFrame "onPlaybackAudioFrame" callback.
-     
-     
-     @param sampleRate Sets the sample rate (@p samplesPerSec) returned in the *onPlaybackAudioFrame* callback, which can be set as 8000, 16000, 32000, 44100, or 48000 Hz.
-     @param channel Sets the number of channels (@p channels) returned in the *onPlaybackAudioFrame* callback:
-     - 1: Mono
-     - 2: Stereo
-     @param mode Sets the use mode (see #RAW_AUDIO_FRAME_OP_MODE_TYPE) of the *onPlaybackAudioFrame* callback.
-     @param samplesPerCall Sets the number of samples returned in the *onPlaybackAudioFrame* callback. `samplesPerCall` is usually set as 1024 for RTMP streaming.
-     
-     @note The SDK triggers the `onPlaybackAudioFrame` callback according to the sample interval. Ensure that the sample interval >= 0.01 (s). And, Sample interval (sec) = `samplePerCall`/(`sampleRate` x `channel`).
-     
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-	virtual int setPlaybackAudioFrameParameters(int sampleRate, int channel, RAW_AUDIO_FRAME_OP_MODE_TYPE mode, int samplesPerCall) = 0;
-    /** Sets the mixed audio format for the \ref AM::IAudioFrameObserver::onMixedAudioFrame "onMixedAudioFrame" callback.
-     
-    
-     @param sampleRate Sets the sample rate (@p samplesPerSec) returned in the *onMixedAudioFrame* callback, which can be set as 8000, 16000, 32000, 44100, or 48000 Hz.
-     @param samplesPerCall Sets the number of samples (`samples`) returned in the *onMixedAudioFrame* callback. `samplesPerCall` is usually set as 1024 for RTMP streaming.
-     
-     @note The SDK triggers the `onMixedAudioFrame` callback according to the sample interval. Ensure that the sample interval >= 0.01 (s). And, Sample interval (sec) = `samplePerCall`/(`sampleRate` x `channels`).
-    
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-	virtual int setMixedAudioFrameParameters(int sampleRate, int samplesPerCall) = 0;
-    /** Adjusts the recording volume.
-
-     @param volume Recording volume. The value ranges between 0 and 400:
-     - 0: Mute.
-     - 100: Original volume.
-     - 400: (Maximum) Four times the original volume with signal clipping protection.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-	virtual int adjustRecordingSignalVolume(int volume) = 0;
-    /** Adjusts the playback volume of all remote users.
-     
-     @note 
-     - This method adjusts the playback volume that is the mixed volume of all remote users.
-     - (Since v2.3.2) To mute the local audio playback, call both the `adjustPlaybackSignalVolume` and \ref IRtcEngine::adjustAudioMixingVolume "adjustAudioMixingVolume" methods and set the volume as `0`.
-
-     @param volume The playback volume of all remote users. The value ranges from 0 to 400:
-     - 0: Mute.
-     - 100: Original volume.
-     - 400: (Maximum) Four times the original volume with signal clipping protection.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-	virtual int adjustPlaybackSignalVolume(int volume) = 0;
-
-    /** 
-     @deprecated This method is deprecated. As of v3.0.0, the Native SDK automatically enables interoperability with the Web SDK, so you no longer need to call this method.
-     Enables interoperability with the AR Web SDK.
-
-     @note 
-     - This method applies only to the Live-broadcast profile. In the Communication profile, interoperability with the AR Web SDK is enabled by default.
-     - If the channel has Web SDK users, ensure that you call this method, or the video of the Native user will be a black screen for the Web user.
-
-     @param enabled Sets whether to enable/disable interoperability with the AR Web SDK:
-     - true: Enable.
-     - false: (Default) Disable.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-	virtual int enableWebSdkInteroperability(bool enabled) = 0;
-    //only for live broadcast
-    /** **DEPRECATED** Sets the preferences for the high-quality video. (Live broadcast only).
-
-     This method is deprecated as of v2.4.0.
-
-     @param preferFrameRateOverImageQuality Sets the video quality preference:
-     - true: Frame rate over image quality.
-     - false: (Default) Image quality over frame rate.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int setVideoQualityParameters(bool preferFrameRateOverImageQuality) = 0;
-    /** Sets the fallback option for the locally published video stream based on the network conditions.
-
-     If `option` is set as #STREAM_FALLBACK_OPTION_AUDIO_ONLY (2), the SDK will:
-
-     - Disable the upstream video but enable audio only when the network conditions deteriorate and cannot support both video and audio.
-     - Re-enable the video when the network conditions improve.
-     
-     When the locally published video stream falls back to audio only or when the audio-only stream switches back to the video, the SDK triggers the \ref ar::rtc::IRtcEngineEventHandler::onLocalPublishFallbackToAudioOnly "onLocalPublishFallbackToAudioOnly" callback.
-
-     @note AR does not recommend using this method for CDN live streaming, because the remote CDN live user will have a noticeable lag when the locally published video stream falls back to audio only.
-
-     @param option Sets the fallback option for the locally published video stream:
-     - #STREAM_FALLBACK_OPTION_DISABLED (0): (Default) No fallback behavior for the locally published video stream when the uplink network condition is poor. The stream quality is not guaranteed.
-     - #STREAM_FALLBACK_OPTION_AUDIO_ONLY (2): The locally published video stream falls back to audio only when the uplink network condition is poor.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int setLocalPublishFallbackOption(STREAM_FALLBACK_OPTIONS option) = 0;
-    /** Sets the fallback option for the remotely subscribed video stream based on the network conditions.
-
-     The default setting for `option` is #STREAM_FALLBACK_OPTION_VIDEO_STREAM_LOW (1), where the remotely subscribed video stream falls back to the low-stream video (low resolution and low bitrate) under poor downlink network conditions.
-
-     If `option` is set as #STREAM_FALLBACK_OPTION_AUDIO_ONLY (2), the SDK automatically switches the video from a high-stream to a low-stream, or disables the video when the downlink network conditions cannot support both audio and video to guarantee the quality of the audio. The SDK monitors the network quality and restores the video stream when the network conditions improve.
-
-     When the remotely subscribed video stream falls back to audio only or when the audio-only stream switches back to the video stream, the SDK triggers the \ref ar::rtc::IRtcEngineEventHandler::onRemoteSubscribeFallbackToAudioOnly "onRemoteSubscribeFallbackToAudioOnly" callback.
-
-     @param  option  Sets the fallback option for the remotely subscribed video stream. See #STREAM_FALLBACK_OPTIONS.
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int setRemoteSubscribeFallbackOption(STREAM_FALLBACK_OPTIONS option) = 0;
-
-#if defined(__ANDROID__) || (defined(__APPLE__) && TARGET_OS_IOS)
-	/** Switches between front and rear cameras.
-
-     @note This method is for Android and iOS only.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int switchCamera() = 0;
-    /** Switches between front and rear cameras.
-
-     @note This method is for Android and iOS only, and it is private.
-     
-     @param direction Sets the camera to be used:
-     - CAMERA_DIRECTION.CAMERA_REAR: Use the rear camera.
-     - CAMERA_DIRECTION.CAMERA_FRONT: Use the front camera.
-     
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int switchCamera(CAMERA_DIRECTION direction) = 0;
-    /** Sets the default audio playback route.
-
-     This method sets whether the received audio is routed to the earpiece or speakerphone by default before joining a channel.
-     If a user does not call this method, the audio is routed to the earpiece by default. If you need to change the default audio route after joining a channel, call the \ref IRtcEngine::setEnableSpeakerphone "setEnableSpeakerphone" method.
-
-     The default setting for each profile:
-     - `COMMUNICATION`: In a voice call, the default audio route is the earpiece. In a video call, the default audio route is the speakerphone. If a user who is in the `COMMUNICATION` profile calls
-     the \ref IRtcEngine.disableVideo "disableVideo" method or if the user calls
-     the \ref IRtcEngine.muteLocalVideoStream "muteLocalVideoStream" and
-     \ref IRtcEngine.muteAllRemoteVideoStreams "muteAllRemoteVideoStreams" methods, the
-     default audio route switches back to the earpiece automatically.
-     - `LIVE_BROADCASTING`: Speakerphone.
-
-     @note
-     - This method is for Android and iOS only.
-     - This method only works in audio mode.
-     - Call this method before calling the \ref IRtcEngine::joinChannel "joinChannel" method.
-     - Regardless of whether the audio is routed to the speakerphone or earpiece by default, once a headset is plugged in or Bluetooth device is connected, the default audio route changes. The default audio route switches to the earpiece once removing the headset or disconnecting the Bluetooth device.
-
-     @param defaultToSpeaker Sets the default audio route:
-     - true: Route the audio to the speakerphone. If the playback device connects to the earpiece or Bluetooth, the audio cannot be routed to the speakerphone.
-     - false: (Default) Route the audio to the earpiece. If a headset is plugged in, the audio is routed to the headset.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-	virtual int setDefaultAudioRouteToSpeakerphone(bool defaultToSpeaker) = 0;
-    /** Enables/Disables the audio playback route to the speakerphone.
-
-     This method sets whether the audio is routed to the speakerphone or earpiece.
-
-     See the default audio route explanation in the \ref IRtcEngine::setDefaultAudioRouteToSpeakerphone "setDefaultAudioRouteToSpeakerphone" method and check whether it is necessary to call this method.
-
-     @note
-     - This method is for Android and iOS only.
-     - Ensure that you have successfully called the \ref IRtcEngine::joinChannel "joinChannel" method before calling this method.
-     - After calling this method, the SDK returns the \ref IRtcEngineEventHandler::onAudioRouteChanged "onAudioRouteChanged" callback to indicate the changes.
-     - This method does not take effect if a headset is used.
-
-     @param speakerOn Sets whether to route the audio to the speakerphone or earpiece:
-     - true: Route the audio to the speakerphone.
-     - false: Route the audio to the earpiece.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-	virtual int setEnableSpeakerphone(bool speakerOn) = 0;
-    /** Enables in-ear monitoring (for Android and iOS only).
-     @param enabled Sets whether to enable/disable in-ear monitoring:
-     - true: Enable.
-     - false: (Default) Disable.
-     
-     * @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int enableInEarMonitoring(bool enabled) = 0;
-    /** Sets the volume of the in-ear monitor.
-
-     @param volume Sets the volume of the in-ear monitor. The value ranges between 0 and 100 (default).
-
-     @note This method is for Android and iOS only.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-	virtual int setInEarMonitoringVolume(int volume) = 0;
-    /** Checks whether the speakerphone is enabled.
-
-     @note This method is for Android and iOS only.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual bool isSpeakerphoneEnabled() = 0;
-    
-    virtual bool isCameraZoomSupported() = 0;
-    virtual bool isCameraTorchSupported() = 0;
-    virtual bool isCameraFocusPositionInPreviewSupported() = 0;
-    virtual bool isCameraExposurePositionSupported() = 0;
-    virtual bool isCameraAutoFocusFaceModeSupported() = 0;
-    virtual float setCameraZoomFactor(float zoomFactor) = 0;
-    virtual bool setCameraFocusPositionInPreview(float x, float y) = 0;
-    virtual bool setCameraExposurePosition(float x, float y) = 0;
-    virtual bool setCameraTorchOn(bool enabled) = 0;
-    virtual bool setCameraAutoFocusFaceModeEnabled(bool enabled) = 0;
-    
-#endif
-
-#if (defined(__APPLE__) && TARGET_OS_IOS)
-    /** Sets the audio session’s operational restriction.
-
-     The SDK and the app can both configure the audio session by default. The app may occasionally use other apps or third-party components to manipulate the audio session and restrict the SDK from doing so. This method allows the app to restrict the SDK’s manipulation of the audio session.
-
-     You can call this method at any time to return the control of the audio sessions to the SDK.
-
-     @note
-     - This method is for iOS only.
-     - This method restricts the SDK’s manipulation of the audio session. Any operation to the audio session relies solely on the app, other apps, or third-party components.
-
-     @param restriction The operational restriction (bit mask) of the SDK on the audio session. See #AUDIO_SESSION_OPERATION_RESTRICTION.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int setAudioSessionOperationRestriction(AUDIO_SESSION_OPERATION_RESTRICTION restriction) = 0;
-#endif
-
-#if (defined(__APPLE__) && TARGET_OS_MAC && !TARGET_OS_IPHONE) || defined(_WIN32)
-    /** Enables loopback recording.
-
-     If you enable loopback recording, the output of the sound card is mixed into the audio stream sent to the other end.
-
-     @param enabled Sets whether to enable/disable loopback recording.
-     - true: Enable loopback recording.
-     - false: (Default) Disable loopback recording.
-     @param deviceName Pointer to the device name of the sound card. The default value is NULL (the default sound card).
-
-     @note
-     - This method is for macOS and Windows only.
-     - macOS does not support loopback recording of the default sound card. If you need to use this method, please use a virtual sound card and pass its name to the deviceName parameter. AR has tested and recommends using soundflower.
-
-     */
-    virtual int enableLoopbackRecording(bool enabled, const char* deviceName = NULL) = 0;
-
-#if (defined(__APPLE__) && TARGET_OS_MAC && !TARGET_OS_IPHONE)
-    /** Shares the whole or part of a screen by specifying the display ID.
-
-     @note This method is for macOS only.
-
-     @param  displayId The display ID of the screen to be shared. This parameter specifies which screen you want to share.
-     @param  regionRect (Optional) Sets the relative location of the region to the screen. NIL means sharing the whole screen. See Rectangle. If the specified region overruns the screen, the SDK shares only the region within it; if you set width or height as 0, the SDK shares the whole screen.
-     @param  captureParams Sets the screen sharing encoding parameters. See ScreenCaptureParameters.
-
-
-     @return
-     - 0: Success.
-     - < 0: Failure:
-        - #ERR_INVALID_ARGUMENT: the argument is invalid.
-     */
-    virtual int startScreenCaptureByDisplayId(unsigned int displayId, const Rectangle& regionRect, const ScreenCaptureParameters& captureParams) = 0;
-#endif
-
-#if defined(_WIN32)
-    /** Shares the whole or part of a screen by specifying the screen rect.
-
-     @param  screenRect Sets the relative location of the screen to the virtual screen. For information on how to get screenRect, see [Share the Screen](https://docs.ar.io/en/Video/screensharing_windows?platform=Windows).
-     @param  regionRect (Optional) Sets the relative location of the region to the screen. NULL means sharing the whole screen. See Rectangle. If the specified region overruns the screen, the SDK shares only the region within it; if you set width or height as 0, the SDK shares the whole screen.
-     @param  captureParams Sets the screen sharing encoding parameters. See ScreenCaptureParameters.
-
-     @return
-     - 0: Success.
-     - < 0: Failure:
-        - ERR_INVALID_STATE: the screen sharing state is invalid, probably because another screen or window is being shared. Call \ref ar::rtc::IRtcEngine::stopScreenCapture "stopScreenCapture" to stop the current screen sharing.
-        - ERR_INVALID_ARGUMENT: the argument is invalid.
-     */
-    virtual int startScreenCaptureByScreenRect(const Rectangle& screenRect, const Rectangle& regionRect, const ScreenCaptureParameters& captureParams) = 0;
-#endif
-
-    /** Shares the whole or part of a window by specifying the window ID.
-
-     Since v3.0.0, this method supports sharing with common Windows platforms. AR tests the mainstream Windows applications, see details as follows:
-
-     <table>
-         <tr>
-             <td><b>OS version</b></td>
-             <td><b>Software</b></td>
-             <td><b>Software name</b></td>
-             <td><b>Whether support</b></td>
-         </tr>
-         <tr>
-             <td rowspan="8">win10</td>
-             <td >Chrome</td>
-             <td>76.0.3809.100</td>
-             <td>No</td>
-         </tr>
-         <tr>
-             <td>Office Word</td>
-             <td rowspan="3">18.1903.1152.0</td>
-             <td>Yes</td>
-         </tr>
-             <tr>
-             <td>Office Excel</td>
-             <td>No</td>
-         </tr>
-         <tr>
-             <td>Office PPT</td>
-             <td>No</td>
-         </tr>
-      <tr>
-             <td>WPS Word</td>
-             <td rowspan="3">11.1.0.9145</td>
-             <td rowspan="3">Yes</td>
-         </tr>
-             <tr>
-             <td>WPS Excel</td>
-         </tr>
-         <tr>
-             <td>WPS PPT</td>
-         </tr>
-             <tr>
-             <td>Media Player (come with the system)</td>
-             <td>All</td>
-             <td>Yes</td>
-         </tr>
-          <tr>
-             <td rowspan="8">win8</td>
-             <td >Chrome</td>
-             <td>All</td>
-             <td>Yes</td>
-         </tr>
-         <tr>
-             <td>Office Word</td>
-             <td rowspan="3">All</td>
-             <td rowspan="3">Yes</td>
-         </tr>
-             <tr>
-             <td>Office Excel</td>
-         </tr>
-         <tr>
-             <td>Office PPT</td>
-         </tr>
-      <tr>
-             <td>WPS Word</td>
-             <td rowspan="3">11.1.0.9098</td>
-             <td rowspan="3">Yes</td>
-         </tr>
-             <tr>
-             <td>WPS Excel</td>
-         </tr>
-         <tr>
-             <td>WPS PPT</td>
-         </tr>
-             <tr>
-             <td>Media Player(come with the system)</td>
-             <td>All</td>
-             <td>Yes</td>
-         </tr>
-       <tr>
-             <td rowspan="8">win7</td>
-             <td >Chrome</td>
-             <td>73.0.3683.103</td>
-             <td>No</td>
-         </tr>
-         <tr>
-             <td>Office Word</td>
-             <td rowspan="3">All</td>
-             <td rowspan="3">Yes</td>
-         </tr>
-             <tr>
-             <td>Office Excel</td>
-         </tr>
-         <tr>
-             <td>Office PPT</td>
-         </tr>
-      <tr>
-             <td>WPS Word</td>
-             <td rowspan="3">11.1.0.9098</td>
-             <td rowspan="3">No</td>
-         </tr>
-             <tr>
-             <td>WPS Excel</td>
-         </tr>
-         <tr>
-             <td>WPS PPT</td>
-         </tr>
-             <tr>
-             <td>Media Player(come with the system)</td>
-             <td>All</td>
-             <td>No</td>
-         </tr>
-     </table>
-
-     @param  windowId The ID of the window to be shared. For information on how to get the windowId, see the advanced guide *Share Screen*.
-     @param  regionRect (Optional) The relative location of the region to the window. NULL/NIL means sharing the whole window. See Rectangle. If the specified region overruns the window, the SDK shares only the region within it; if you set width or height as 0, the SDK shares the whole window.
-     @param  captureParams Window sharing encoding parameters. See ScreenCaptureParameters.
-
-     @return
-     - 0: Success.
-     - < 0: Failure:
-        - #ERR_INVALID_ARGUMENT: the argument is invalid.
-     */
-    virtual int startScreenCaptureByWindowId(view_t windowId, const Rectangle& regionRect, const ScreenCaptureParameters& captureParams) = 0;
-
-    /** Sets the content hint for screen sharing.
-
-    A content hint suggests the type of the content being shared, so that the SDK applies different optimization algorithm to different types of content.
-
-     @param  contentHint Sets the content hint for screen sharing. See VideoContentHint.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int setScreenCaptureContentHint(VideoContentHint contentHint) = 0;
-
-    /** Updates the screen sharing parameters.
-
-     @param  captureParams Sets the screen sharing encoding parameters. See ScreenCaptureParameters.
-
-     @return
-     - 0: Success.
-     - < 0: Failure:
-        - #ERR_NOT_READY: no screen or windows is being shared.
-     */
-    virtual int updateScreenCaptureParameters(const ScreenCaptureParameters& captureParams) = 0;
-
-    /** Updates the screen sharing region.
-
-     @param  regionRect Sets the relative location of the region to the screen or window. NULL means sharing the whole screen or window. See Rectangle. If the specified region overruns the screen or window, the SDK shares only the region within it; if you set width or height as 0, the SDK shares the whole screen or window.
-
-     @return
-     - 0: Success.
-     - < 0: Failure:
-        - #ERR_NOT_READY: no screen or window is being shared.
-     */
-    virtual int updateScreenCaptureRegion(const Rectangle& regionRect) = 0;
-
-    /** Stop screen sharing.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-    */
-    virtual int stopScreenCapture() = 0;
-
-#if defined(__APPLE__)
-    typedef unsigned int WindowIDType;
-#elif defined(_WIN32)
-    typedef HWND WindowIDType;
-#endif
-
-    /** **DEPRECATED** Starts screen sharing.
-
-     This method is deprecated as of v2.4.0. See the following methods instead:
-
-     - \ref ar::rtc::IRtcEngine::startScreenCaptureByDisplayId "startScreenCaptureByDisplayId"
-     - \ref ar::rtc::IRtcEngine::startScreenCaptureByScreenRect "startScreenCaptureByScreenRect"
-     - \ref ar::rtc::IRtcEngine::startScreenCaptureByWindowId "startScreenCaptureByWindowId"
-
-     This method shares the whole screen, specified window, or specified region:
-
-     - Whole screen: Set @p windowId as 0 and @p rect as NULL.
-     - Specified window: Set @p windowId as a value other than 0. Each window has a @p windowId that is not 0.
-     - Specified region: Set @p windowId as 0 and @p rect not as NULL. In this case, you can share the specified region, for example by dragging the mouse or implementing your own logic.
-
-     @note The specified region is a region on the whole screen. Currently, sharing a specified region in a specific window is not supported.
-     *captureFreq* is the captured frame rate once the screen-sharing function is enabled. The mandatory value ranges between 1 fps and 15 fps.
-
-     @param windowId Sets the screen sharing area. See WindowIDType.
-     @param captureFreq (Mandatory) The captured frame rate. The value ranges between 1 fps and 15 fps.
-     @param rect Specifies the screen-sharing region. @p rect is valid when @p windowsId is set as 0. When @p rect is set as NULL, the whole screen is shared.
-     @param bitrate The captured bitrate.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int startScreenCapture(WindowIDType windowId, int captureFreq, const Rect *rect, int bitrate) = 0;
-
-    /** **DEPRECATED** Updates the screen capture region.
-
-     @param rect Specifies the required region inside the screen or window.
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int updateScreenCaptureRegion(const Rect *rect) = 0;
-#endif
-
-#if defined(_WIN32)||defined(__ANDROID__) || (defined(__APPLE__) && (TARGET_OS_IOS || TARGET_OS_MAC))
-    /** Sets a custom video source.
-     *
-     * During real-time communication, the AR SDK enables the default video input device, that is, the built-in camera to
-     * capture video. If you need a custom video source, implement the IVideoSource class first, and call this method to add
-     * the custom video source to the SDK.
-     *
-     * @param source The custom video source. See IVideoSource.
-     *
-     * @return
-     * - true: The custom video source is added to the SDK.
-     * - false: The custom video source is not added to the SDK.
-     */
-    virtual bool setVideoSource(IVideoSource *source) = 0;
-#endif
-
-    /** Retrieves the current call ID.
-
-     When a user joins a channel on a client, a @p callId is generated to identify the call from the client. Feedback methods, such as \ref IRtcEngine::rate "rate" and \ref IRtcEngine::complain "complain", must be called after the call ends to submit feedback to the SDK.
-
-     The \ref IRtcEngine::rate "rate" and \ref IRtcEngine::complain "complain" methods require the @p callId parameter retrieved from the *getCallId* method during a call. @p callId is passed as an argument into the \ref IRtcEngine::rate "rate" and \ref IRtcEngine::complain "complain" methods after the call ends.
-
-     @param callId Pointer to the current call ID.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int getCallId(ar::util::AString& callId) = 0;
-
-    /** Allows a user to rate a call after the call ends.
-
-     @param callId Pointer to the ID of the call, retrieved from the \ref IRtcEngine::getCallId "getCallId" method.
-     @param rating  Rating of the call. The value is between 1 (lowest score) and 5 (highest score). If you set a value out of this range, the #ERR_INVALID_ARGUMENT (2) error returns.
-     @param description (Optional) Pointer to the description of the rating, with a string length of less than 800 bytes.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int rate(const char* callId, int rating, const char* description) = 0;
-
-    /** Allows a user to complain about the call quality after a call ends.
-
-    @param callId Pointer to the ID of the call, retrieved from the \ref IRtcEngine::getCallId "getCallId" method.
-    @param description (Optional) Pointer to the description of the complaint, with a string length of less than 800 bytes.
-
-    @return
-    - 0: Success.
-    - < 0: Failure.
-
-    */
-    virtual int complain(const char* callId, const char* description) = 0;
-
-    /** Retrieves the SDK version number.
-
-     @param build Pointer to the build number.
-     @return The version of the current SDK in the string format. For example, 2.3.1.
-     */
-    virtual const char* getVersion(int* build) = 0;
-
-    /**  Enables the network connection quality test.
-
-     This method tests the quality of the users' network connections and is disabled by default.
-
-     Before a user joins a channel or before an audience switches to a host, call this method to check the uplink network quality.
-
-     This method consumes additional network traffic, and hence may affect communication quality.
-
-     Call the \ref IRtcEngine::disableLastmileTest "disableLastmileTest" method to disable this test after receiving the \ref IRtcEngineEventHandler::onLastmileQuality "onLastmileQuality" callback, and before joining a channel.
-
-     @note
-     - Do not call any other methods before receiving the \ref IRtcEngineEventHandler::onLastmileQuality "onLastmileQuality" callback. Otherwise, the callback may be interrupted by other methods, and hence may not be triggered.
-     - A host should not call this method after joining a channel (when in a call).
-     - If you call this method to test the last-mile quality, the SDK consumes the bandwidth of a video stream, whose bitrate corresponds to the bitrate you set in the \ref ar::rtc::IRtcEngine::setVideoEncoderConfiguration "setVideoEncoderConfiguration" method. After you join the channel, whether you have called the `disableLastmileTest` method or not, the SDK automatically stops consuming the bandwidth.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int enableLastmileTest() = 0;
-
-    /** Disables the network connection quality test.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int disableLastmileTest() = 0;
-
-    /** Starts the last-mile network probe test.
-
-    This method starts the last-mile network probe test before joining a channel to get the uplink and downlink last-mile network statistics, including the bandwidth, packet loss, jitter, and round-trip time (RTT).
-
-    Call this method to check the uplink network quality before users join a channel or before an audience switches to a host.
-    Once this method is enabled, the SDK returns the following callbacks:
-    - \ref IRtcEngineEventHandler::onLastmileQuality "onLastmileQuality": the SDK triggers this callback within two seconds depending on the network conditions. This callback rates the network conditions and is more closely linked to the user experience.
-    - \ref IRtcEngineEventHandler::onLastmileProbeResult "onLastmileProbeResult": the SDK triggers this callback within 30 seconds depending on the network conditions. This callback returns the real-time statistics of the network conditions and is more objective.
-
-    @note
-    - This method consumes extra network traffic and may affect communication quality. We do not recommend calling this method together with enableLastmileTest.
-    - Do not call other methods before receiving the \ref IRtcEngineEventHandler::onLastmileQuality "onLastmileQuality" and \ref IRtcEngineEventHandler::onLastmileProbeResult "onLastmileProbeResult" callbacks. Otherwise, the callbacks may be interrupted.
-    - In the Live-broadcast profile, a host should not call this method after joining a channel.
-
-    @param config Sets the configurations of the last-mile network probe test. See LastmileProbeConfig.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int startLastmileProbeTest(const LastmileProbeConfig& config) = 0;
-
-    /** Stops the last-mile network probe test. */
-    virtual int stopLastmileProbeTest() = 0;
-
-    /** Retrieves the warning or error description.
-
-     @param code Warning code or error code returned in the \ref ar::rtc::IRtcEngineEventHandler::onWarning "onWarning" or \ref ar::rtc::IRtcEngineEventHandler::onError "onError" callback.
-     
-     @return #WARN_CODE_TYPE or #ERROR_CODE_TYPE.
-     */
-    virtual const char* getErrorDescription(int code) = 0;
-
-    /** Enables built-in encryption with an encryption password before users join a channel.
-
-     All users in a channel must use the same encryption password. The encryption password is automatically cleared once a user leaves the channel.
-
-     If an encryption password is not specified, the encryption functionality will be disabled.
-
-     @note
-     - Do not use this method for CDN live streaming.
-     - For optimal transmission, ensure that the encrypted data size does not exceed the original data size + 16 bytes. 16 bytes is the maximum padding size for AES encryption.
-
-     @param secret Pointer to the encryption password.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int setEncryptionSecret(const char* secret) = 0;
-
-    /** Sets the built-in encryption mode.
-
-     The AR SDK supports built-in encryption, which is set to the @p aes-128-xts mode by default. Call this method to use other encryption modes.
-
-     All users in the same channel must use the same encryption mode and password.
-
-     Refer to the information related to the AES encryption algorithm on the differences between the encryption modes.
-
-     @note Call the \ref IRtcEngine::setEncryptionSecret "setEncryptionSecret" method to enable the built-in encryption function before calling this method.
-
-     @param encryptionMode Pointer to the set encryption mode:
-     - "aes-128-xts": (Default) 128-bit AES encryption, XTS mode.
-     - "aes-128-ecb": 128-bit AES encryption, ECB mode.
-     - "aes-256-xts": 256-bit AES encryption, XTS mode.
-     - "": When encryptionMode is set as NULL, the encryption mode is set as "aes-128-xts" by default.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int setEncryptionMode(const char* encryptionMode) = 0;
-
-    /** Enables/Disables the built-in encryption.
-     *
-     * @since v3.1.0
-     *
-     * In scenarios requiring high security, AR recommends calling this method to enable the built-in encryption before joining a channel.
-     *
-     * All users in the same channel must use the same encryption mode and encryption key. Once all users leave the channel, the encryption key of this channel is automatically cleared.
-     *
-     * @note
-     * - If you enable the built-in encryption, you cannot use the RTMP streaming function.
-     * - AR supports four encryption modes. If you choose an encryption mode (excepting `SM4_128_ECB` mode), you need to add an external encryption library when integrating the SDK. See the advanced guide *Channel Encryption*.
-     *
-     * @param enabled Whether to enable the built-in encryption:
-     * - true: Enable the built-in encryption.
-     * - false: Disable the built-in encryption.
-     * @param config Configurations of built-in encryption schemas. See EncryptionConfig.
-     *
-     * @return
-     * - 0: Success.
-     * - < 0: Failure.
-     *  - -2(ERR_INVALID_ARGUMENT): An invalid parameter is used. Set the parameter with a valid value.
-     *  - -4(ERR_NOT_SUPPORTED): The encryption mode is incorrect or the SDK fails to load the external encryption library. Check the enumeration or reload the external encryption library.
-     *  - -7(ERR_NOT_INITIALIZED): The SDK is not initialized. Initialize the `IRtcEngine` instance before calling this method.
-     */
-    virtual int enableEncryption(bool enabled, const EncryptionConfig& config) = 0;
-
-    /** Registers a packet observer.
-
-     The AR SDK allows your application to register a packet observer to receive callbacks for voice or video packet transmission.
-     
-     @note
-     - The size of the packet sent to the network after processing should not exceed 1200 bytes, otherwise, the packet may fail to be sent.
-     - Ensure that both receivers and senders call this method, otherwise, you may meet undefined behaviors such as no voice and black screen.
-     - When you use CDN live streaming, recording or storage functions, AR doesn't recommend calling this method.
-
-     @param observer Pointer to the registered packet observer. See IPacketObserver.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int registerPacketObserver(IPacketObserver* observer) = 0;
-
-    /** Creates a data stream.
-
-     Each user can create up to five data streams during the lifecycle of the IRtcEngine.
-
-     @note Set both the @p reliable and @p ordered parameters to true or false. Do not set one as true and the other as false.
-
-     @param streamId Pointer to the ID of the created data stream.
-     @param reliable Sets whether or not the recipients are guaranteed to receive the data stream from the sender within five seconds:
-     - true: The recipients receive the data stream from the sender within five seconds. If the recipient does not receive the data stream within five seconds, an error is reported to the application.
-     - false: There is no guarantee that the recipients receive the data stream within five seconds and no error message is reported for any delay or missing data stream.
-     @param ordered Sets whether or not the recipients receive the data stream in the sent order:
-     - true: The recipients receive the data stream in the sent order.
-     - false: The recipients do not receive the data stream in the sent order.
-
-     @return
-     - Returns 0: Success.
-     - < 0: Failure.
-     */
-    virtual int createDataStream(int* streamId, bool reliable, bool ordered) = 0;
-
-    /** Sends data stream messages to all users in a channel.
-
-     The SDK has the following restrictions on this method:
-     - Up to 30 packets can be sent per second in a channel with each packet having a maximum size of 1 kB.
-     - Each client can send up to 6 kB of data per second.
-     - Each user can have up to five data streams simultaneously.
-
-     A successful \ref ar::rtc::IRtcEngine::sendStreamMessage "sendStreamMessage" method call triggers the \ref ar::rtc::IRtcEngineEventHandler::onStreamMessage "onStreamMessage" callback on the remote client, from which the remote user gets the stream message.
-
-     A failed \ref ar::rtc::IRtcEngine::sendStreamMessage "sendStreamMessage" method call triggers the \ref ar::rtc::IRtcEngineEventHandler::onStreamMessageError "onStreamMessage" callback on the remote client.
-     @note This method applies only to the Communication profile or to the hosts in the Live-broadcast profile. If an audience in the Live-broadcast profile calls this method, the audience may be switched to a host.
-
-     @param  streamId  ID of the sent data stream, returned in the \ref IRtcEngine::createDataStream "createDataStream" method.
-     @param data Pointer to the sent data.
-     @param length Length of the sent data.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int sendStreamMessage(int streamId, const char* data, size_t length) = 0;
-
-    /** Publishes the local stream to a specified CDN live RTMP address.  (CDN live only.)
-
-     The SDK returns the result of this method call in the \ref IRtcEngineEventHandler::onStreamPublished "onStreamPublished" callback.
-
-     The \ref ar::rtc::IRtcEngine::addPublishStreamUrl "addPublishStreamUrl" method call triggers the \ref ar::rtc::IRtcEngineEventHandler::onRtmpStreamingStateChanged "onRtmpStreamingStateChanged" callback on the local client to report the state of adding a local stream to the CDN.
-     @note
-     - Ensure that the user joins the channel before calling this method.
-     - Ensure that you enable the RTMP Converter service before using this function. See [Prerequisites](https://docs.ar.io/en/Interactive%20Broadcast/cdn_streaming_windows?platform=Windows#prerequisites).
-     - This method adds only one stream RTMP URL address each time it is called.
-     - This method applies to Live Broadcast only.
-
-     @param url The CDN streaming URL in the RTMP format. The maximum length of this parameter is 1024 bytes. The RTMP URL address must not contain special characters, such as Chinese language characters.
-     @param  transcodingEnabled Sets whether transcoding is enabled/disabled:
-     - true: Enable transcoding. To [transcode](https://docs.ar.io/en/AR%20Platform/terms?platform=All%20Platforms#transcoding) the audio or video streams when publishing them to CDN live, often used for combining the audio and video streams of multiple hosts in CDN live. If you set this parameter as `true`, ensure that you call the \ref IRtcEngine::setLiveTranscoding "setLiveTranscoding" method before this method.
-     - false: Disable transcoding.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-          - #ERR_INVALID_ARGUMENT (2): The RTMP URL address is NULL or has a string length of 0.
-          - #ERR_NOT_INITIALIZED (7): You have not initialized the RTC engine when publishing the stream.
-     */
-    virtual int addPublishStreamUrl(const char *url, bool transcodingEnabled) = 0;
-
-    /** Removes an RTMP stream from the CDN. (CDN live only.)
-
-     This method removes the RTMP URL address (added by the \ref IRtcEngine::addPublishStreamUrl "addPublishStreamUrl" method) from a CDN live stream. The SDK returns the result of this method call in the \ref IRtcEngineEventHandler::onStreamUnpublished "onStreamUnpublished" callback.
-
-     The \ref ar::rtc::IRtcEngine::removePublishStreamUrl "removePublishStreamUrl" method call triggers the \ref ar::rtc::IRtcEngineEventHandler::onRtmpStreamingStateChanged "onRtmpStreamingStateChanged" callback on the local client to report the state of removing an RTMP stream from the CDN.
-     @note
-     - This method removes only one RTMP URL address each time it is called.
-     - The RTMP URL address must not contain special characters, such as Chinese language characters.
-     - This method applies to Live Broadcast only.
-
-     @param url The RTMP URL address to be removed. The maximum length of this parameter is 1024 bytes.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int removePublishStreamUrl(const char *url) = 0;
-
-    /** Sets the video layout and audio settings for CDN live. (CDN live only.)
-     
-     The SDK triggers the \ref ar::rtc::IRtcEngineEventHandler::onTranscodingUpdated "onTranscodingUpdated" callback when you call the `setLiveTranscoding` method to update the transcoding setting.
-     
-     @note
-     - This method applies to Live Broadcast only.
-     - Ensure that you enable the RTMP Converter service before using this function. See [Prerequisites](https://docs.ar.io/en/Interactive%20Broadcast/cdn_streaming_windows?platform=Windows#prerequisites).
-     - If you call the `setLiveTranscoding` method to update the transcoding setting for the first time, the SDK does not trigger the `onTranscodingUpdated` callback.
-  
-     @param transcoding Sets the CDN live audio/video transcoding settings. See LiveTranscoding.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int setLiveTranscoding(const LiveTranscoding &transcoding) = 0;
-
-    /** **DEPRECATED** Adds a watermark image to the local video or CDN live stream.
-
-     This method is deprecated from v2.9.1. Use \ref ar::rtc::IRtcEngine::addVideoWatermark(const char* watermarkUrl, const WatermarkOptions& options) "addVideoWatermark"2 instead.
-
-     This method adds a PNG watermark image to the local video stream for the recording device, channel audience, and CDN live audience to view and capture.
-
-     To add the PNG file to the CDN live publishing stream, see the \ref IRtcEngine::setLiveTranscoding "setLiveTranscoding" method.
-
-     @param watermark Pointer to the watermark image to be added to the local video stream. See RtcImage.
-
-     @note
-     - The URL descriptions are different for the local video and CDN live streams:
-        - In a local video stream, @p url in RtcImage refers to the absolute path of the added watermark image file in the local video stream.
-        - In a CDN live stream, @p url in RtcImage refers to the URL address of the added watermark image in the CDN live broadcast.
-     - The source file of the watermark image must be in the PNG file format. If the width and height of the PNG file differ from your settings in this method, the PNG file will be cropped to conform to your settings.
-     - The AR SDK supports adding only one watermark image onto a local video or CDN live stream. The newly added watermark image replaces the previous one.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int addVideoWatermark(const RtcImage& watermark) = 0;
-
-    /** Adds a watermark image to the local video.
-
-     This method adds a PNG watermark image to the local video in a live broadcast. Once the watermark image is added, all the audience in the channel (CDN audience included), 
-     and the recording device can see and capture it. AR supports adding only one watermark image onto the local video, and the newly watermark image replaces the previous one.
-
-     The watermark position depends on the settings in the \ref IRtcEngine::setVideoEncoderConfiguration "setVideoEncoderConfiguration" method:
-     - If the orientation mode of the encoding video is #ORIENTATION_MODE_FIXED_LANDSCAPE, or the landscape mode in #ORIENTATION_MODE_ADAPTIVE, the watermark uses the landscape orientation.
-     - If the orientation mode of the encoding video is #ORIENTATION_MODE_FIXED_PORTRAIT, or the portrait mode in #ORIENTATION_MODE_ADAPTIVE, the watermark uses the portrait orientation.
-     - When setting the watermark position, the region must be less than the dimensions set in the `setVideoEncoderConfiguration` method. Otherwise, the watermark image will be cropped.
-
-     @note
-     - Ensure that you have called the \ref ar::rtc::IRtcEngine::enableVideo "enableVideo" method to enable the video module before calling this method.
-     - If you only want to add a watermark image to the local video for the audience in the CDN live broadcast channel to see and capture, you can call this method or the \ref ar::rtc::IRtcEngine::setLiveTranscoding "setLiveTranscoding" method.
-     - This method supports adding a watermark image in the PNG file format only. Supported pixel formats of the PNG image are RGBA, RGB, Palette, Gray, and Alpha_gray.
-     - If the dimensions of the PNG image differ from your settings in this method, the image will be cropped or zoomed to conform to your settings.
-     - If you have enabled the local video preview by calling the \ref ar::rtc::IRtcEngine::startPreview "startPreview" method, you can use the `visibleInPreview` member in the WatermarkOptions class to set whether or not the watermark is visible in preview.
-     - If you have mirrored the local video by calling the \ref ar::rtc::IRtcEngine::setupLocalVideo "setupLocalVideo" or \ref ar::rtc::IRtcEngine::setLocalRenderMode(RENDER_MODE_TYPE renderMode, VIDEO_MIRROR_MODE_TYPE mirrorMode) "setLocalRenderMode" method, the watermark image in preview is also mirrored.
-     
-     @param watermarkUrl The local file path of the watermark image to be added. This method supports adding a watermark image from the local absolute or relative file path.
-     @param options Pointer to the watermark's options to be added. See WatermarkOptions for more infomation.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int addVideoWatermark(const char* watermarkUrl, const WatermarkOptions& options) = 0;
-
-    /** Removes the watermark image from the video stream added by the \ref ar::rtc::IRtcEngine::addVideoWatermark(const char* watermarkUrl, const WatermarkOptions& options) "addVideoWatermark" method.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int clearVideoWatermarks() = 0;
-
-    /** Enables/Disables image enhancement and sets the options.
-
-    @note 
-    - Call this method after calling the enableVideo method.
-    - Currently this method does not apply for macOS.
-
-    @param enabled Sets whether or not to enable image enhancement:
-    - true: enables image enhancement.
-    - false: disables image enhancement.
-    @param options Sets the image enhancement option. See BeautyOptions.
-    */
-    virtual int setBeautyEffectOptions(bool enabled, BeautyOptions options) = 0;
-
-    /** Adds a voice or video stream URL address to a live broadcast.
-
-    The \ref IRtcEngineEventHandler::onStreamPublished "onStreamPublished" callback returns the inject status. If this method call is successful, the server pulls the voice or video stream and injects it into a live channel. This is applicable to scenarios where all audience members in the channel can watch a live show and interact with each other.
-
-     The \ref ar::rtc::IRtcEngine::addInjectStreamUrl "addInjectStreamUrl" method call triggers the following callbacks:
-    - The local client:
-      - \ref ar::rtc::IRtcEngineEventHandler::onStreamInjectedStatus "onStreamInjectedStatus" , with the state of the injecting the online stream.
-      - \ref ar::rtc::IRtcEngineEventHandler::onUserJoined "onUserJoined" (uid: 666), if the method call is successful and the online media stream is injected into the channel.
-    - The remote client:
-      - \ref ar::rtc::IRtcEngineEventHandler::onUserJoined "onUserJoined" (uid: 666), if the method call is successful and the online media stream is injected into the channel.
-
-     @note
-     - Ensure that you enable the RTMP Converter service before using this function. See [Prerequisites](https://docs.ar.io/en/Interactive%20Broadcast/cdn_streaming_windows?platform=Windows#prerequisites).
-     - This method applies to the Native SDK v2.4.1 and later.
-
-     @param url Pointer to the URL address to be added to the ongoing live broadcast. Valid protocols are RTMP, HLS, and FLV.
-     - Supported FLV audio codec type: AAC.
-     - Supported FLV video codec type: H264 (AVC).
-     @param config Pointer to the InjectStreamConfig object that contains the configuration of the added voice or video stream.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-        - #ERR_INVALID_ARGUMENT (2): The injected URL does not exist. Call this method again to inject the stream and ensure that the URL is valid.
-        - #ERR_NOT_READY (3): The user is not in the channel.
-        - #ERR_NOT_SUPPORTED (4): The channel profile is not live broadcast. Call the \ref ar::rtc::IRtcEngine::setChannelProfile "setChannelProfile" method and set the channel profile to live broadcast before calling this method.
-        - #ERR_NOT_INITIALIZED (7): The SDK is not initialized. Ensure that the IRtcEngine object is initialized before calling this method.
-     */
-    virtual int addInjectStreamUrl(const char* url, const InjectStreamConfig& config) = 0;
-    /** Starts to relay media streams across channels.
-     *
-     * After a successful method call, the SDK triggers the
-     * \ref ar::rtc::IRtcEngineEventHandler::onChannelMediaRelayStateChanged
-     *  "onChannelMediaRelayStateChanged" and
-     * \ref ar::rtc::IRtcEngineEventHandler::onChannelMediaRelayEvent
-     * "onChannelMediaRelayEvent" callbacks, and these callbacks return the
-     * state and events of the media stream relay.
-     * - If the
-     * \ref ar::rtc::IRtcEngineEventHandler::onChannelMediaRelayStateChanged
-     *  "onChannelMediaRelayStateChanged" callback returns
-     * #RELAY_STATE_RUNNING (2) and #RELAY_OK (0), and the
-     * \ref ar::rtc::IRtcEngineEventHandler::onChannelMediaRelayEvent
-     * "onChannelMediaRelayEvent" callback returns
-     * #RELAY_EVENT_PACKET_SENT_TO_DEST_CHANNEL (4), the broadcaster starts
-     * sending data to the destination channel.
-     * - If the
-     * \ref ar::rtc::IRtcEngineEventHandler::onChannelMediaRelayStateChanged
-     *  "onChannelMediaRelayStateChanged" callback returns
-     * #RELAY_STATE_FAILURE (3), an exception occurs during the media stream
-     * relay.
-     *
-     * @note
-     * - Call this method after the \ref joinChannel() "joinChannel" method.
-     * - This method takes effect only when you are a broadcaster in a
-     * Live-broadcast channel.
-     * - After a successful method call, if you want to call this method
-     * again, ensure that you call the
-     * \ref stopChannelMediaRelay() "stopChannelMediaRelay" method to quit the
-     * current relay.
-     * - Contact sales-us@ar.io before implementing this function.
-     * - We do not support string user accounts in this API.
-     *
-     * @param configuration The configuration of the media stream relay:
-     * ChannelMediaRelayConfiguration.
-     *
-     * @return
-     * - 0: Success.
-     * - < 0: Failure.
-     */
-	virtual int startChannelMediaRelay(const ChannelMediaRelayConfiguration &configuration) = 0;
-    /** Updates the channels for media stream relay. After a successful
-     * \ref startChannelMediaRelay() "startChannelMediaRelay" method call, if
-     * you want to relay the media stream to more channels, or leave the
-     * current relay channel, you can call the
-     * \ref updateChannelMediaRelay() "updateChannelMediaRelay" method.
-     *
-     * After a successful method call, the SDK triggers the
-     * \ref ar::rtc::IRtcEngineEventHandler::onChannelMediaRelayEvent
-     *  "onChannelMediaRelayEvent" callback with the
-     * #RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL (7) state code.
-     *
-     * @note
-     * Call this method after the
-     * \ref startChannelMediaRelay() "startChannelMediaRelay" method to update
-     * the destination channel.
-     *
-     * @param configuration The media stream relay configuration:
-     * ChannelMediaRelayConfiguration.
-     *
-     * @return
-     * - 0: Success.
-     * - < 0: Failure.
-     */
-	virtual int updateChannelMediaRelay(const ChannelMediaRelayConfiguration &configuration) = 0;
-    /** Stops the media stream relay.
-     *
-     * Once the relay stops, the broadcaster quits all the destination
-     * channels.
-     *
-     * After a successful method call, the SDK triggers the
-     * \ref ar::rtc::IRtcEngineEventHandler::onChannelMediaRelayStateChanged
-     *  "onChannelMediaRelayStateChanged" callback. If the callback returns
-     * #RELAY_STATE_IDLE (0) and #RELAY_OK (0), the broadcaster successfully
-     * stops the relay.
-     *
-     * @note
-     * If the method call fails, the SDK triggers the
-     * \ref ar::rtc::IRtcEngineEventHandler::onChannelMediaRelayStateChanged
-     *  "onChannelMediaRelayStateChanged" callback with the
-     * #RELAY_ERROR_SERVER_NO_RESPONSE (2) or
-     * #RELAY_ERROR_SERVER_CONNECTION_LOST (8) state code. You can leave the
-     * channel by calling the \ref leaveChannel() "leaveChannel" method, and
-     * the media stream relay automatically stops.
-     *
-     * @return
-     * - 0: Success.
-     * - < 0: Failure.
-     */
-	virtual int stopChannelMediaRelay() = 0;
-
-    /** Removes the voice or video stream URL address from a live broadcast.
-
-     This method removes the URL address (added by the \ref IRtcEngine::addInjectStreamUrl "addInjectStreamUrl" method) from the live broadcast.
-
-     @note If this method is called successfully, the SDK triggers the \ref IRtcEngineEventHandler::onUserOffline "onUserOffline" callback and returns a stream uid of 666.
-
-     @param url Pointer to the URL address of the added stream to be removed.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int removeInjectStreamUrl(const char* url) = 0;
-    virtual bool registerEventHandler(IRtcEngineEventHandler *eventHandler) = 0;
-    virtual bool unregisterEventHandler(IRtcEngineEventHandler *eventHandler) = 0;
-    /** AR supports reporting and analyzing customized messages.
-     *
-     * @since v3.1.0
-     *
-     * This function is in the beta stage with a free trial. The ability provided in its beta test version is reporting a maximum of 10 message pieces within 6 seconds, with each message piece not exceeding 256 bytes.
-     * To try out this function, contact [support@ar.io](mailto:support@ar.io) and discuss the format of customized messages with us.
-     */
-    virtual int sendCustomReportMessage(const char *id, const char* category, const char* event, const char* label, int value) = 0;
-    /** Gets the current connection state of the SDK.
-
-     @return #CONNECTION_STATE_TYPE.
-     */
-    virtual CONNECTION_STATE_TYPE getConnectionState() = 0;
-    /// @cond
-    /** Enables/Disables the super-resolution algorithm for a remote user's video stream.
-     *
-     * @since v3.2.0
-     *
-     * The algorithm effectively improves the resolution of the specified remote user's video stream. When the original
-     * resolution of the remote video stream is axb pixels, you can receive and render the stream at a higher
-     * resolution (2ax2b pixels) by enabling the algorithm.
-     *
-     * After calling this method, the SDK triggers the
-     * \ref IRtcEngineEventHandler::onUserSuperResolutionEnabled "onUserSuperResolutionEnabled" callback to report
-     * whether you have successfully enabled the super-resolution algorithm.
-     *
-     * @warning The super-resolution algorithm requires extra system resources.
-     * To balance the visual experience and system usage, the SDK poses the following restrictions:
-     * - The algorithm can only be used for a single user at a time.
-     * - On the Android platform, the original resolution of the remote video must not exceed 640x360 pixels.
-     * - On the iOS platform, the original resolution of the remote video must not exceed 640x480 pixels.
-     * If you exceed these limitations, the SDK triggers the \ref IRtcEngineEventHandler::onWarning "onWarning"
-     * callback with the corresponding warning codes:
-     * - #WARN_SUPER_RESOLUTION_STREAM_OVER_LIMITATION (1610): The origin resolution of the remote video is beyond the range where the super-resolution algorithm can be applied.
-     * - #WARN_SUPER_RESOLUTION_USER_COUNT_OVER_LIMITATION (1611): Another user is already using the super-resolution algorithm.
-     * - #WARN_SUPER_RESOLUTION_DEVICE_NOT_SUPPORTED (1612): The device does not support the super-resolution algorithm.
-     *
-     * @note
-     * - This method applies to Android and iOS only.
-     * - Requirements for the user's device:
-     *  - Android: The following devices are known to support the method:
-     *    - VIVO: V1821A, NEX S, 1914A, 1916A, and 1824BA
-     *    - OPPO: PCCM00
-     *    - OnePlus: A6000
-     *    - Xiaomi: Mi 8, Mi 9, MIX3, and Redmi K20 Pro
-     *    - SAMSUNG: SM-G9600, SM-G9650, SM-N9600, SM-G9708, SM-G960U, and SM-G9750
-     *    - HUAWEI: SEA-AL00, ELE-AL00, VOG-AL00, YAL-AL10, HMA-AL00, and EVR-AN00
-     *  - iOS: This method is supported on devices running iOS 12.0 or later. The following
-     * device models are known to support the method:
-     *      - iPhone XR
-     *      - iPhone XS
-     *      - iPhone XS Max
-     *      - iPhone 11
-     *      - iPhone 11 Pro
-     *      - iPhone 11 Pro Max
-     *      - iPad Pro 11-inch (3rd Generation)
-     *      - iPad Pro 12.9-inch (3rd Generation)
-     *      - iPad Air 3 (3rd Generation)
-     *
-     * @param userId The ID of the remote user.
-     * @param enable Whether to enable the super-resolution algorithm:
-     * - true: Enable the super-resolution algorithm.
-     * - false: Disable the super-resolution algorithm.
-     *
-     * @return
-     * - 0: Success.
-     * - < 0: Failure.
-     */
-    virtual int enableRemoteSuperResolution(uid_t userId, bool enable) = 0;
-    /// @endcond
-
-    /** Registers the metadata observer.
-
-     Registers the metadata observer. You need to implement the IMetadataObserver class and specify the metadata type in this method. A successful call of this method triggers the \ref ar::rtc::IMetadataObserver::getMaxMetadataSize "getMaxMetadataSize" callback.
-     This method enables you to add synchronized metadata in the video stream for more diversified live broadcast interactions, such as sending shopping links, digital coupons, and online quizzes.
-
-     @note
-     - Call this method before the joinChannel method.
-     - This method applies to the Live-broadcast channel profile.
-
-     @param observer The IMetadataObserver class. See the definition of IMetadataObserver for details.
-     @param type See \ref IMetadataObserver::METADATA_TYPE "METADATA_TYPE". The SDK supports VIDEO_METADATA (0) only for now.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int registerMediaMetadataObserver(IMetadataObserver *observer, IMetadataObserver::METADATA_TYPE type) = 0;
-    /** Provides technical preview functionalities or special customizations by configuring the SDK with JSON options.
-
-     The JSON options are not public by default. AR is working on making commonly used JSON options public in a standard way.
-
-     @param parameters Sets the parameter as a JSON string in the specified format.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int setParameters(const char* parameters) = 0;
-};
-
-
-class IRtcEngineParameter
-{
-public:
-    virtual ~IRtcEngineParameter () {}
-    /**
-    * Releases all IRtcEngineParameter resources.
-    */
-    virtual void release() = 0;
-
-    /** Sets the bool value of a specified key in the JSON format.
-
-     @param key Pointer to the name of the key.
-     @param value Sets the value.
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int setBool(const char* key, bool value) = 0;
-
-    /** Sets the int value of a specified key in the JSON format.
-
-     @param key Pointer to the name of the key.
-     @param value Sets the value.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int setInt(const char* key, int value) = 0;
-
-    /** Sets the unsigned int value of a specified key in the JSON format.
-
-     @param key Pointer to the name of the key.
-     @param value Sets the value.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int setUInt(const char* key, unsigned int value) = 0;
-
-    /** Sets the double value of a specified key in the JSON format.
-
-     @param key Pointer to the name of the key.
-     @param value Sets the value.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int setNumber(const char* key, double value) = 0;
-
-    /** Sets the string value of a specified key in the JSON format.
-
-     @param key Pointer to the name of the key.
-     @param value Pointer to the set value.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int setString(const char* key, const char* value) = 0;
-
-    /** Sets the object value of a specified key in the JSON format.
-
-     @param key Pointer to the name of the key.
-     @param value Pointer to the set value.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int setObject(const char* key, const char* value) = 0;
-
-    /** Retrieves the bool value of a specified key in the JSON format.
-
-     @param key Pointer to the name of the key.
-     @param value Pointer to the retrieved value.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int getBool(const char* key, bool& value) = 0;
-
-    /** Retrieves the int value of the JSON format.
-
-     @param key Pointer to the name of the key.
-     @param value Pointer to the retrieved value.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int getInt(const char* key, int& value) = 0;
-
-    /** Retrieves the unsigned int value of a specified key in the JSON format.
-
-     @param key Pointer to the name of the key.
-     @param value Pointer to the retrieved value.
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int getUInt(const char* key, unsigned int& value) = 0;
-
-    /** Retrieves the double value of a specified key in the JSON format.
-
-     @param key Pointer to the name of the key.
-     @param value Pointer to the retrieved value.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int getNumber(const char* key, double& value) = 0;
-
-    /** Retrieves the string value of a specified key in the JSON format.
-
-     @param key Pointer to the name of the key.
-     @param value Pointer to the retrieved value.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-    */
-    virtual int getString(const char* key, ar::util::AString& value) = 0;
-
-    /** Retrieves a child object value of a specified key in the JSON format.
-
-     @param key Pointer to the name of the key.
-     @param value Pointer to the retrieved value.
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int getObject(const char* key, ar::util::AString& value) = 0;
-
-    /** Retrieves the array value of a specified key in the JSON format.
-
-     @param key Pointer to the name of the key.
-     @param value Pointer to the retrieved value.
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int getArray(const char* key, ar::util::AString& value) = 0;
-
-    /** Provides the technical preview functionalities or special customizations by configuring the SDK with JSON options.
-
-     @param parameters Pointer to the set parameters in a JSON string.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int setParameters(const char* parameters) = 0;
-
-    /** Sets the profile to control the RTC engine.
-
-     @param profile Pointer to the set profile.
-     @param merge Sets whether to merge the profile data with the original value:
-     - true: Merge the profile data with the original value.
-     - false: Do not merge the profile data with the original value.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    virtual int setProfile(const char* profile, bool merge) = 0;
-
-	virtual int convertPath(const char* filePath, ar::util::AString& value) = 0;
-};
-
-class AAudioDeviceManager : public ar::util::AutoPtr<IAudioDeviceManager>
-{
-public:
-    AAudioDeviceManager(IRtcEngine* engine)
-    {
-		queryInterface(engine, AR_IID_AUDIO_DEVICE_MANAGER);
-    }
-};
-
-class AVideoDeviceManager : public ar::util::AutoPtr<IVideoDeviceManager>
-{
-public:
-    AVideoDeviceManager(IRtcEngine* engine)
-    {
-		queryInterface(engine, AR_IID_VIDEO_DEVICE_MANAGER);
-    }
-};
-
-class AParameter : public ar::util::AutoPtr<IRtcEngineParameter>
-{
-public:
-    AParameter(IRtcEngine& engine) { initialize(&engine); }
-    AParameter(IRtcEngine* engine) { initialize(engine); }
-    AParameter(IRtcEngineParameter* p) :ar::util::AutoPtr<IRtcEngineParameter>(p) {}
-private:
-    bool initialize(IRtcEngine* engine)
-    {
-        IRtcEngineParameter* p = NULL;
-        if (engine && !engine->queryInterface(AR_IID_RTC_ENGINE_PARAMETER, (void**)&p))
-            reset(p);
-        return p != NULL;
-    }
-};
-/** **DEPRECATED** The RtcEngineParameters class is deprecated, use the IRtcEngine class instead.
-*/
-class RtcEngineParameters
-{
-public:
-    RtcEngineParameters(IRtcEngine& engine)
-        :m_parameter(&engine){}
-    RtcEngineParameters(IRtcEngine* engine)
-        :m_parameter(engine){}
-
-    
-    int enableLocalVideo(bool enabled) {
-        return setParameters("{\"rtc.video.capture\":%s,\"che.video.local.capture\":%s,\"che.video.local.render\":%s,\"che.video.local.send\":%s}", enabled ? "true" : "false", enabled ? "true" : "false", enabled ? "true" : "false", enabled ? "true" : "false");
-    }
-
-
-   
-    int muteLocalVideoStream(bool mute) {
-        return setParameters("{\"rtc.video.mute_me\":%s,\"che.video.local.send\":%s}", mute ? "true" : "false", mute ? "false" : "true");
-    }
-
-    
-    int muteAllRemoteVideoStreams(bool mute) {
-        return m_parameter ? m_parameter->setBool("rtc.video.mute_peers", mute) : -ERR_NOT_INITIALIZED;
-    }
-
-
-    
-    int setDefaultMuteAllRemoteVideoStreams(bool mute) {
-        return m_parameter ? m_parameter->setBool("rtc.video.set_default_mute_peers", mute) : -ERR_NOT_INITIALIZED;
-    }
-
-    
-    int muteRemoteVideoStream(uid_t uid, bool mute) {
-        return setObject("rtc.video.mute_peer", "{\"uid\":%u,\"mute\":%s}", uid, mute ? "true" : "false");
-    }
-
-   
-    int setPlaybackDeviceVolume(int volume) {// [0,255]
-        return m_parameter ? m_parameter->setInt("che.audio.output.volume", volume) : -ERR_NOT_INITIALIZED;
-    }
-
-    
-    int startAudioRecording(const char* filePath, AUDIO_RECORDING_QUALITY_TYPE quality) {
-        return startAudioRecording(filePath, 32000, quality);
-    }
-
-    int startAudioRecording(const char* filePath, int sampleRate, AUDIO_RECORDING_QUALITY_TYPE quality) {
-        if (!m_parameter) return -ERR_NOT_INITIALIZED;
-#if defined(_WIN32)
-        util::AString path;
-        if (!m_parameter->convertPath(filePath, path))
-            filePath = path->c_str();
-        else
-            return -ERR_INVALID_ARGUMENT;
-#endif
-        return setObject("che.audio.start_recording", "{\"filePath\":\"%s\",\"sampleRate\":%d,\"quality\":%d}", filePath, sampleRate, quality);
-    }
-
-    
-    int stopAudioRecording() {
-        return m_parameter ? m_parameter->setBool("che.audio.stop_recording", true) : -ERR_NOT_INITIALIZED;
-    }
-
-    
-    int startAudioMixing(const char* filePath, bool loopback, bool replace, int cycle) {
-        if (!m_parameter) return -ERR_NOT_INITIALIZED;
-#if defined(_WIN32)
-        util::AString path;
-        if (!m_parameter->convertPath(filePath, path))
-            filePath = path->c_str();
-        else
-            return -ERR_INVALID_ARGUMENT;
-#endif
-        return setObject("che.audio.start_file_as_playout", "{\"filePath\":\"%s\",\"loopback\":%s,\"replace\":%s,\"cycle\":%d}",
-                         filePath,
-                         loopback?"true":"false",
-                         replace?"true":"false",
-                         cycle);
-    }
-
-   
-    int stopAudioMixing() {
-        return m_parameter ? m_parameter->setBool("che.audio.stop_file_as_playout", true) : -ERR_NOT_INITIALIZED;
-    }
-
-    
-    int pauseAudioMixing() {
-        return m_parameter ? m_parameter->setBool("che.audio.pause_file_as_playout", true) : -ERR_NOT_INITIALIZED;
-    }
-
-    
-    int resumeAudioMixing() {
-        return m_parameter ? m_parameter->setBool("che.audio.pause_file_as_playout", false) : -ERR_NOT_INITIALIZED;
-    }
-
-    
-    int adjustAudioMixingVolume(int volume) {
-        int ret = adjustAudioMixingPlayoutVolume(volume);
-        if (ret == 0) {
-            adjustAudioMixingPublishVolume(volume);
-        }
-        return ret;
-    }
-
-    
-    int adjustAudioMixingPlayoutVolume(int volume) {
-        return m_parameter ? m_parameter->setInt("che.audio.set_file_as_playout_volume", volume) : -ERR_NOT_INITIALIZED;
-    }
-
-    
-    int getAudioMixingPlayoutVolume() {
-        int volume = 0;
-        int r = m_parameter ? m_parameter->getInt("che.audio.get_file_as_playout_volume", volume) : -ERR_NOT_INITIALIZED;
-        if (r == 0)
-            r = volume;
-        return r;
-    }
-
-    
-    int adjustAudioMixingPublishVolume(int volume) {
-        return m_parameter ? m_parameter->setInt("che.audio.set_file_as_playout_publish_volume", volume) : -ERR_NOT_INITIALIZED;
-    }
-
-   
-    int getAudioMixingPublishVolume() {
-        int volume = 0;
-        int r = m_parameter ? m_parameter->getInt("che.audio.get_file_as_playout_publish_volume", volume) : -ERR_NOT_INITIALIZED;
-        if (r == 0)
-            r = volume;
-        return r;
-    }
-
-    
-    int getAudioMixingDuration() {
-        int duration = 0;
-        int r = m_parameter ? m_parameter->getInt("che.audio.get_mixing_file_length_ms", duration) : -ERR_NOT_INITIALIZED;
-        if (r == 0)
-            r = duration;
-        return r;
-    }
-
-    
-    int getAudioMixingCurrentPosition() {
-        if (!m_parameter) return -ERR_NOT_INITIALIZED;
-        int pos = 0;
-        int r = m_parameter->getInt("che.audio.get_mixing_file_played_ms", pos);
-        if (r == 0)
-            r = pos;
-        return r;
-    }
-    
-    int setAudioMixingPosition(int pos /*in ms*/) {
-        return m_parameter ? m_parameter->setInt("che.audio.mixing.file.position", pos) : -ERR_NOT_INITIALIZED;
-    }
-
-    int setAudioMixingPitch(int pitch) {
-        if (!m_parameter) {
-            return -ERR_NOT_INITIALIZED;
-        }
-        if (pitch > 12 || pitch < -12) {
-            return -ERR_INVALID_ARGUMENT;
-        }
-        return m_parameter->setInt("che.audio.set_playout_file_pitch_semitones", pitch);
-    }
-
-    int getEffectsVolume() {
-        if (!m_parameter) return -ERR_NOT_INITIALIZED;
-        int volume = 0;
-        int r = m_parameter->getInt("che.audio.game_get_effects_volume", volume);
-        if (r == 0)
-            r = volume;
-        return r;
-    }
-
-    
-    int setEffectsVolume(int volume) {
-        return m_parameter ? m_parameter->setInt("che.audio.game_set_effects_volume", volume) : -ERR_NOT_INITIALIZED;
-    }
-
-   
-    int setVolumeOfEffect(int soundId, int volume) {
-        return setObject(
-                         "che.audio.game_adjust_effect_volume",
-                         "{\"soundId\":%d,\"gain\":%d}",
-                         soundId, volume);
-    }
-
-    
-    int playEffect(int soundId, const char* filePath, int loopCount, double pitch, double pan, int gain, bool publish = false) {
-#if defined(_WIN32)
-        util::AString path;
-        if (!m_parameter->convertPath(filePath, path))
-            filePath = path->c_str();
-        else if (!filePath)
-            filePath = "";
-#endif
-        return setObject(
-                         "che.audio.game_play_effect",
-                         "{\"soundId\":%d,\"filePath\":\"%s\",\"loopCount\":%d, \"pitch\":%lf,\"pan\":%lf,\"gain\":%d, \"send2far\":%d}",
-                         soundId, filePath, loopCount, pitch, pan, gain, publish);
-    }
-
-    
-    int stopEffect(int soundId) {
-        return m_parameter ? m_parameter->setInt(
-                                                 "che.audio.game_stop_effect", soundId) : -ERR_NOT_INITIALIZED;
-    }
-
-   
-    int stopAllEffects() {
-        return m_parameter ? m_parameter->setBool(
-                                                  "che.audio.game_stop_all_effects", true) : -ERR_NOT_INITIALIZED;
-    }
-
-    
-    int preloadEffect(int soundId, char* filePath) {
-        return setObject(
-                         "che.audio.game_preload_effect",
-                         "{\"soundId\":%d,\"filePath\":\"%s\"}",
-                         soundId, filePath);
-    }
-
-    
-    int unloadEffect(int soundId) {
-        return m_parameter ? m_parameter->setInt(
-                                                 "che.audio.game_unload_effect", soundId) : -ERR_NOT_INITIALIZED;
-    }
-
-    
-    int pauseEffect(int soundId) {
-        return m_parameter ? m_parameter->setInt(
-                                                 "che.audio.game_pause_effect", soundId) : -ERR_NOT_INITIALIZED;
-    }
-
-    
-    int pauseAllEffects() {
-        return m_parameter ? m_parameter->setBool(
-                                                  "che.audio.game_pause_all_effects", true) : -ERR_NOT_INITIALIZED;
-    }
-
-    
-    int resumeEffect(int soundId) {
-        return m_parameter ? m_parameter->setInt(
-                                                 "che.audio.game_resume_effect", soundId) : -ERR_NOT_INITIALIZED;
-    }
-
-    
-    int resumeAllEffects() {
-        return m_parameter ? m_parameter->setBool(
-                                                  "che.audio.game_resume_all_effects", true) : -ERR_NOT_INITIALIZED;
-    }
-
-
-    int enableSoundPositionIndication(bool enabled) {
-        return m_parameter ? m_parameter->setBool(
-                                                  "che.audio.enable_sound_position", enabled) : -ERR_NOT_INITIALIZED;
-    }
-
-    
-    int setRemoteVoicePosition(uid_t uid, double pan, double gain) {
-        return setObject("che.audio.game_place_sound_position", "{\"uid\":%u,\"pan\":%lf,\"gain\":%lf}", uid, pan, gain);
-    }
-
-    
-    int setLocalVoicePitch(double pitch) {
-        return m_parameter ? m_parameter->setInt(
-                                                 "che.audio.morph.pitch_shift",
-                                                 static_cast<int>(pitch * 100)) : -ERR_NOT_INITIALIZED;
-    }
-    
-    int setLocalVoiceEqualization(AUDIO_EQUALIZATION_BAND_FREQUENCY bandFrequency, int bandGain) {
-        return setObject(
-                         "che.audio.morph.equalization",
-                         "{\"index\":%d,\"gain\":%d}",
-                         static_cast<int>(bandFrequency), bandGain);
-    }
-    
-    int setLocalVoiceReverb(AUDIO_REVERB_TYPE reverbKey, int value) {
-        return setObject(
-                         "che.audio.morph.reverb",
-                         "{\"key\":%d,\"value\":%d}",
-                         static_cast<int>(reverbKey), value);
-    }
-
-    
-    int setLocalVoiceChanger(VOICE_CHANGER_PRESET voiceChanger) {
-        if(!m_parameter)
-            return -ERR_NOT_INITIALIZED;
-        if(voiceChanger == 0x00000000) {
-            return m_parameter->setInt("che.audio.morph.voice_changer", static_cast<int>(voiceChanger));
-        }
-        else if(voiceChanger > 0x00000000 && voiceChanger < 0x00100000) {
-            return m_parameter->setInt("che.audio.morph.voice_changer", static_cast<int>(voiceChanger));
-        }
-        else if(voiceChanger > 0x00100000 && voiceChanger < 0x00200000) {
-            return m_parameter->setInt("che.audio.morph.voice_changer", static_cast<int>(voiceChanger - 0x00100000 + 6));
-        }
-        else if(voiceChanger > 0x00200000 && voiceChanger < 0x00300000) {
-            return m_parameter->setInt("che.audio.morph.beauty_voice", static_cast<int>(voiceChanger - 0x00200000));
-        }
-        else {
-            return -ERR_INVALID_ARGUMENT;
-        }
-    }
-
-    
-    int setLocalVoiceReverbPreset(AUDIO_REVERB_PRESET reverbPreset) {
-        if(!m_parameter)
-            return -ERR_NOT_INITIALIZED;
-        if(reverbPreset == 0x00000000) {
-            return m_parameter->setInt("che.audio.morph.reverb_preset", static_cast<int>(reverbPreset));
-        }
-        else if(reverbPreset > 0x00000000 && reverbPreset < 0x00100000) {
-            return m_parameter->setInt("che.audio.morph.reverb_preset", static_cast<int>(reverbPreset + 8));
-        }
-        else if(reverbPreset > 0x00100000 && reverbPreset < 0x00200000) {
-            return m_parameter->setInt("che.audio.morph.reverb_preset", static_cast<int>(reverbPreset - 0x00100000));
-        }
-        else if(reverbPreset > 0x00200000 && reverbPreset < 0x00200002) {
-            return m_parameter->setInt("che.audio.morph.virtual_stereo", static_cast<int>(reverbPreset - 0x00200000));
-        }
-        else if (reverbPreset > (AUDIO_REVERB_PRESET) 0x00300000 && reverbPreset < (AUDIO_REVERB_PRESET) 0x00300002)
-            return setObject( "che.audio.morph.electronic_voice", "{\"key\":%d,\"value\":%d}", 1, 4);
-        else if (reverbPreset > (AUDIO_REVERB_PRESET) 0x00400000 && reverbPreset < (AUDIO_REVERB_PRESET) 0x00400002)
-            return m_parameter->setInt("che.audio.morph.threedim_voice", 10);
-        else {
-            return -ERR_INVALID_ARGUMENT;
-        }
-    }
-
-    int setAudioEffectPreset(AUDIO_EFFECT_PRESET preset){
-        if(!m_parameter)
-            return -ERR_NOT_INITIALIZED;
-        if(preset == AUDIO_EFFECT_OFF) {
-            return m_parameter->setInt("che.audio.morph.voice_changer", 0);
-        }
-        if(preset == ROOM_ACOUSTICS_KTV){
-            return m_parameter->setInt("che.audio.morph.reverb_preset", 1);
-        }
-        if(preset == ROOM_ACOUSTICS_VOCAL_CONCERT) {
-            return m_parameter->setInt("che.audio.morph.reverb_preset", 2);
-        }
-        if(preset == ROOM_ACOUSTICS_STUDIO) {
-            return m_parameter->setInt("che.audio.morph.reverb_preset", 5);
-        }
-        if(preset == ROOM_ACOUSTICS_PHONOGRAPH) {
-            return m_parameter->setInt("che.audio.morph.reverb_preset", 8);
-        }
-        if(preset == ROOM_ACOUSTICS_VIRTUAL_STEREO) {
-            return m_parameter->setInt("che.audio.morph.virtual_stereo", 1);
-        }
-        if(preset == ROOM_ACOUSTICS_SPACIAL) {
-            return m_parameter->setInt("che.audio.morph.voice_changer", 15);
-        }
-        if(preset == ROOM_ACOUSTICS_ETHEREAL) {
-            return m_parameter->setInt("che.audio.morph.voice_changer", 5);
-        }
-        if(preset == ROOM_ACOUSTICS_3D_VOICE) {
-            return m_parameter->setInt("che.audio.morph.threedim_voice", 10);
-        }
-        if(preset == VOICE_CHANGER_EFFECT_UNCLE) {
-            return m_parameter->setInt("che.audio.morph.reverb_preset", 3);
-        }
-        if(preset == VOICE_CHANGER_EFFECT_OLDMAN) {
-            return m_parameter->setInt("che.audio.morph.voice_changer", 1);
-        }
-        if(preset == VOICE_CHANGER_EFFECT_BOY) {
-            return m_parameter->setInt("che.audio.morph.voice_changer", 2);
-        }
-        if(preset == VOICE_CHANGER_EFFECT_SISTER) {
-            return m_parameter->setInt("che.audio.morph.reverb_preset", 4);
-        }
-        if(preset == VOICE_CHANGER_EFFECT_GIRL) {
-            return m_parameter->setInt("che.audio.morph.voice_changer", 3);
-        }
-        if(preset == VOICE_CHANGER_EFFECT_PIGKING) {
-            return m_parameter->setInt("che.audio.morph.voice_changer", 4);
-        }
-        if(preset == VOICE_CHANGER_EFFECT_HULK) {
-            return m_parameter->setInt("che.audio.morph.voice_changer", 6);
-        }
-        if(preset == STYLE_TRANSFORMATION_RNB) {
-            return m_parameter->setInt("che.audio.morph.reverb_preset", 7);
-        }
-        if(preset == STYLE_TRANSFORMATION_POPULAR) {
-            return m_parameter->setInt("che.audio.morph.reverb_preset", 6);
-        }
-        if(preset == PITCH_CORRECTION) {
-            return setObject( "che.audio.morph.electronic_voice", "{\"key\":%d,\"value\":%d}", 1, 4);
-        }
-        return -ERR_INVALID_ARGUMENT;
-    }
-
-    int setVoiceBeautifierPreset(VOICE_BEAUTIFIER_PRESET preset) {
-        if(!m_parameter)
-            return -ERR_NOT_INITIALIZED;
-        if(preset == VOICE_BEAUTIFIER_OFF) {
-            return m_parameter->setInt("che.audio.morph.voice_changer", 0);
-        }
-        if(preset == CHAT_BEAUTIFIER_MAGNETIC) {
-            return m_parameter->setInt("che.audio.morph.beauty_voice", 1);
-        }
-        if(preset == CHAT_BEAUTIFIER_FRESH) {
-            return m_parameter->setInt("che.audio.morph.beauty_voice", 2);
-        }
-        if(preset == CHAT_BEAUTIFIER_VITALITY) {
-            return m_parameter->setInt("che.audio.morph.beauty_voice", 3);
-        }
-        /*if(preset == SINGING_BEAUTIFICATION_MAN) {
-            return m_parameter->setInt("che.audio.morph.beauty_sing", 1);
-        }
-        if(preset == SINGING_BEAUTIFICATION_WOMAN) {
-            return m_parameter->setInt("che.audio.morph.beauty_sing", 2);
-        }*/
-        if(preset == TIMBRE_TRANSFORMATION_VIGOROUS) {
-            return m_parameter->setInt("che.audio.morph.voice_changer", 7);
-        }
-        if(preset == TIMBRE_TRANSFORMATION_DEEP) {
-            return m_parameter->setInt("che.audio.morph.voice_changer", 8);
-        }
-        if(preset == TIMBRE_TRANSFORMATION_MELLOW) {
-            return m_parameter->setInt("che.audio.morph.voice_changer", 9);
-        }
-        if(preset == TIMBRE_TRANSFORMATION_FALSETTO) {
-            return m_parameter->setInt("che.audio.morph.voice_changer", 10);
-        }
-        if(preset == TIMBRE_TRANSFORMATION_FULL) {
-            return m_parameter->setInt("che.audio.morph.voice_changer", 11);
-        }
-        if(preset == TIMBRE_TRANSFORMATION_CLEAR) {
-            return m_parameter->setInt("che.audio.morph.voice_changer", 12);
-        }
-        if(preset == TIMBRE_TRANSFORMATION_RESOUNDING) {
-            return m_parameter->setInt("che.audio.morph.voice_changer", 13);
-        }
-        if(preset == TIMBRE_TRANSFORMATION_RINGING) {
-            return m_parameter->setInt("che.audio.morph.voice_changer", 14);
-        }
-        return -ERR_INVALID_ARGUMENT;
-    }
-
-    int setAudioEffectParameters(AUDIO_EFFECT_PRESET preset, int param1, int param2){
-        if(!m_parameter)
-            return -ERR_NOT_INITIALIZED;
-        if(preset == PITCH_CORRECTION){
-            return setObject( "che.audio.morph.electronic_voice", "{\"key\":%d,\"value\":%d}", param1, param2);
-        }
-        if(preset == ROOM_ACOUSTICS_3D_VOICE){
-            return m_parameter->setInt("che.audio.morph.threedim_voice", param1);
-        }
-        return -ERR_INVALID_ARGUMENT;
-    }
-
-    /** **DEPRECATED** Use \ref IRtcEngine::disableAudio "disableAudio" instead. Disables the audio function in the channel.
-
-     @return
-     - 0: Success.
-     - < 0: Failure.
-     */
-    int pauseAudio() {
-        return m_parameter ? m_parameter->setBool("che.pause.audio", true) : -ERR_NOT_INITIALIZED;
-    }
-
-    
-    int resumeAudio() {
-        return m_parameter ? m_parameter->setBool("che.pause.audio", false) : -ERR_NOT_INITIALIZED;
-    }
-
-    
-    int setHighQualityAudioParameters(bool fullband, bool stereo, bool fullBitrate) {
-        return setObject("che.audio.codec.hq", "{\"fullband\":%s,\"stereo\":%s,\"fullBitrate\":%s}", fullband ? "true" : "false", stereo ? "true" : "false", fullBitrate ? "true" : "false");
-    }
-
-    
-    int adjustRecordingSignalVolume(int volume) {//[0, 400]: e.g. 50~0.5x 100~1x 400~4x
-        if (volume < 0)
-            volume = 0;
-        else if (volume > 400)
-            volume = 400;
-        return m_parameter ? m_parameter->setInt("che.audio.record.signal.volume", volume) : -ERR_NOT_INITIALIZED;
-    }
-
-    
-    int adjustPlaybackSignalVolume(int volume) {//[0, 400]
-        if (volume < 0)
-            volume = 0;
-        else if (volume > 400)
-            volume = 400;
-        return m_parameter ? m_parameter->setInt("che.audio.playout.signal.volume", volume) : -ERR_NOT_INITIALIZED;
-    }
-
-    
-    int enableAudioVolumeIndication(int interval, int smooth, bool report_vad) { // in ms: <= 0: disable, > 0: enable, interval in ms
-        if (interval < 0)
-            interval = 0;
-        return setObject("che.audio.volume_indication", "{\"interval\":%d,\"smooth\":%d,\"vad\":%d}", interval, smooth, report_vad);
-    }
-
-    
-    int muteLocalAudioStream(bool mute) {
-        return setParameters("{\"rtc.audio.mute_me\":%s,\"che.audio.mute_me\":%s}", mute ? "true" : "false", mute ? "true" : "false");
-    }
-    // mute/unmute all peers. unmute will clear all muted peers specified mutePeer() interface
-
-    
-    int muteRemoteAudioStream(uid_t uid, bool mute) {
-        return setObject("rtc.audio.mute_peer", "{\"uid\":%u,\"mute\":%s}", uid, mute?"true":"false");
-    }
-
-    
-    int muteAllRemoteAudioStreams(bool mute) {
-        return m_parameter ? m_parameter->setBool("rtc.audio.mute_peers", mute) : -ERR_NOT_INITIALIZED;
-    }
-
-    
-    int setDefaultMuteAllRemoteAudioStreams(bool mute) {
-        return m_parameter ? m_parameter->setBool("rtc.audio.set_default_mute_peers", mute) : -ERR_NOT_INITIALIZED;
-    }
-
-    
-    int setExternalAudioSource(bool enabled, int sampleRate, int channels) {
-        if (enabled)
-            return setParameters("{\"che.audio.external_capture\":true,\"che.audio.external_capture.push\":true,\"che.audio.set_capture_raw_audio_format\":{\"sampleRate\":%d,\"channelCnt\":%d,\"mode\":%d}}", sampleRate, channels, RAW_AUDIO_FRAME_OP_MODE_TYPE::RAW_AUDIO_FRAME_OP_MODE_READ_WRITE);
-        else
-            return setParameters("{\"che.audio.external_capture\":false,\"che.audio.external_capture.push\":false}");
-    }
-
-    
-    int setExternalAudioSink(bool enabled, int sampleRate, int channels) {
-        if (enabled)
-            return setParameters("{\"che.audio.external_render\":true,\"che.audio.external_render.pull\":true,\"che.audio.set_render_raw_audio_format\":{\"sampleRate\":%d,\"channelCnt\":%d,\"mode\":%d}}", sampleRate, channels, RAW_AUDIO_FRAME_OP_MODE_TYPE::RAW_AUDIO_FRAME_OP_MODE_READ_ONLY);
-        else
-            return setParameters("{\"che.audio.external_render\":false,\"che.audio.external_render.pull\":false}");
-    }
-
-    
-    int setLogFile(const char* filePath) {
-        if (!m_parameter) return -ERR_NOT_INITIALIZED;
-#if defined(_WIN32)
-        util::AString path;
-        if (!m_parameter->convertPath(filePath, path))
-            filePath = path->c_str();
-        else if (!filePath)
-            filePath = "";
-#endif
-        return m_parameter->setString("rtc.log_file", filePath);
-    }
-
-    
-    int setLogFilter(unsigned int filter) {
-        return m_parameter ? m_parameter->setUInt("rtc.log_filter", filter&LOG_FILTER_MASK) : -ERR_NOT_INITIALIZED;
-    }
-
-    
-    int setLogFileSize(unsigned int fileSizeInKBytes) {
-        return m_parameter ? m_parameter->setUInt("rtc.log_size", fileSizeInKBytes) : -ERR_NOT_INITIALIZED;
-    }
-
-   
-    int setLocalRenderMode(RENDER_MODE_TYPE renderMode) {
-        return setRemoteRenderMode(0, renderMode);
-    }
-
-    
-    int setRemoteRenderMode(uid_t uid, RENDER_MODE_TYPE renderMode) {
-        return setParameters("{\"che.video.render_mode\":[{\"uid\":%u,\"renderMode\":%d}]}", uid, renderMode);
-    }
-
-    
-    int setCameraCapturerConfiguration(const CameraCapturerConfiguration& config) {
-        if (!m_parameter) return -ERR_NOT_INITIALIZED;
-        return m_parameter->setInt("che.video.camera_capture_mode", (int)config.preference);
-    }
-
-    
-    int enableDualStreamMode(bool enabled) {
-        return setParameters("{\"rtc.dual_stream_mode\":%s,\"che.video.enableLowBitRateStream\":%d}", enabled ? "true" : "false", enabled ? 1 : 0);
-    }
-
-    
-    int setRemoteVideoStreamType(uid_t uid, REMOTE_VIDEO_STREAM_TYPE streamType) {
-        return setParameters("{\"rtc.video.set_remote_video_stream\":{\"uid\":%u,\"stream\":%d}, \"che.video.setstream\":{\"uid\":%u,\"stream\":%d}}", uid, streamType, uid, streamType);
-//        return setObject("rtc.video.set_remote_video_stream", "{\"uid\":%u,\"stream\":%d}", uid, streamType);
-    }
-
-    
-    int setRemoteDefaultVideoStreamType(REMOTE_VIDEO_STREAM_TYPE streamType) {
-        return m_parameter ? m_parameter->setInt("rtc.video.set_remote_default_video_stream_type", streamType) : -ERR_NOT_INITIALIZED;
-    }
-
-    
-    int setRecordingAudioFrameParameters(int sampleRate, int channel, RAW_AUDIO_FRAME_OP_MODE_TYPE mode, int samplesPerCall) {
-        return setObject("che.audio.set_capture_raw_audio_format", "{\"sampleRate\":%d,\"channelCnt\":%d,\"mode\":%d,\"samplesPerCall\":%d}", sampleRate, channel, mode, samplesPerCall);
-    }
-    
-    int setPlaybackAudioFrameParameters(int sampleRate, int channel, RAW_AUDIO_FRAME_OP_MODE_TYPE mode, int samplesPerCall) {
-        return setObject("che.audio.set_render_raw_audio_format", "{\"sampleRate\":%d,\"channelCnt\":%d,\"mode\":%d,\"samplesPerCall\":%d}", sampleRate, channel, mode, samplesPerCall);
-    }
-    
-    int setMixedAudioFrameParameters(int sampleRate, int samplesPerCall) {
-        return setObject("che.audio.set_mixed_raw_audio_format", "{\"sampleRate\":%d,\"samplesPerCall\":%d}", sampleRate, samplesPerCall);
-    }
-
-    
-    int enableWebSdkInteroperability(bool enabled) {//enable interoperability with zero-plugin web sdk
-        return setParameters("{\"rtc.video.web_h264_interop_enable\":%s,\"che.video.web_h264_interop_enable\":%s}", enabled ? "true" : "false", enabled ? "true" : "false");
-    }
-
-    //only for live broadcast
-    
-    int setVideoQualityParameters(bool preferFrameRateOverImageQuality) {
-        return setParameters("{\"rtc.video.prefer_frame_rate\":%s,\"che.video.prefer_frame_rate\":%s}", preferFrameRateOverImageQuality ? "true" : "false", preferFrameRateOverImageQuality ? "true" : "false");
-    }
-
-    
-    int setLocalVideoMirrorMode(VIDEO_MIRROR_MODE_TYPE mirrorMode) {
-        if (!m_parameter) return -ERR_NOT_INITIALIZED;
-        const char *value;
-        switch (mirrorMode) {
-            case VIDEO_MIRROR_MODE_AUTO:
-                value = "default";
-                break;
-            case VIDEO_MIRROR_MODE_ENABLED:
-                value = "forceMirror";
-                break;
-            case VIDEO_MIRROR_MODE_DISABLED:
-                value = "disableMirror";
-                break;
-            default:
-                return -ERR_INVALID_ARGUMENT;
-        }
-        return m_parameter->setString("che.video.localViewMirrorSetting", value);
-    }
-
-   
-    int setLocalPublishFallbackOption(STREAM_FALLBACK_OPTIONS option) {
-        return m_parameter ? m_parameter->setInt("rtc.local_publish_fallback_option", option) : -ERR_NOT_INITIALIZED;
-    }
-
-    
-    int setRemoteSubscribeFallbackOption(STREAM_FALLBACK_OPTIONS option) {
-        return m_parameter ? m_parameter->setInt("rtc.remote_subscribe_fallback_option", option) : -ERR_NOT_INITIALIZED;
-    }
-
-#if (defined(__APPLE__) && TARGET_OS_MAC && !TARGET_OS_IPHONE) || defined(_WIN32)
-    
-    int enableLoopbackRecording(bool enabled, const char* deviceName = NULL) {
-        if (!deviceName) {
-            return setParameters("{\"che.audio.loopback.recording\":%s}", enabled ? "true" : "false");
-        }
-        else {
-            return setParameters("{\"che.audio.loopback.deviceName\":\"%s\",\"che.audio.loopback.recording\":%s}", deviceName, enabled ? "true" : "false");
-        }
-    }
-#endif
-
-    
-    int setInEarMonitoringVolume(int volume) {
-        return m_parameter ? m_parameter->setInt("che.audio.headset.monitoring.parameter", volume) : -ERR_NOT_INITIALIZED;
-    }
-
-protected:
-    AParameter& parameter() {
-        return m_parameter;
-    }
-    int setParameters(const char* format, ...) {
-        char buf[512];
-        va_list args;
-        va_start(args, format);
-        vsnprintf(buf, sizeof(buf)-1, format, args);
-        va_end(args);
-        return m_parameter ? m_parameter->setParameters(buf) : -ERR_NOT_INITIALIZED;
-    }
-    int setObject(const char* key, const char* format, ...) {
-        char buf[512];
-        va_list args;
-        va_start(args, format);
-        vsnprintf(buf, sizeof(buf)-1, format, args);
-        va_end(args);
-        return m_parameter ? m_parameter->setObject(key, buf) : -ERR_NOT_INITIALIZED;
-    }
-    int stopAllRemoteVideo() {
-        return m_parameter ? m_parameter->setBool("che.video.peer.stop_render", true) : -ERR_NOT_INITIALIZED;
-    }
-private:
-    AParameter m_parameter;
-};
-
-} //namespace rtc
-} // namespace ar
-
-
-#define getARRtcEngineVersion getARSdkVersion
-
-////////////////////////////////////////////////////////
-/** \addtogroup createARRtcEngine
- @{
- */
-////////////////////////////////////////////////////////
-
-/** Creates the IRtcEngine object and returns the pointer.
- * 
- * @return Pointer to the IRtcEngine object.
- */ 
-AR_API ar::rtc::IRtcEngine* AR_CALL createARRtcEngine();
-
-////////////////////////////////////////////////////////
-/** @} */
-////////////////////////////////////////////////////////
-
-#define getARRtcEngineErrorDescription getARSdkErrorDescription
-#define setARRtcEngineExternalSymbolLoader setARSdkExternalSymbolLoader
-
-#endif
diff --git a/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Headers/IArService.h b/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Headers/IArService.h
deleted file mode 100644
index 0a01981..0000000
--- a/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Headers/IArService.h
+++ /dev/null
@@ -1,76 +0,0 @@
-//  AR SDK
-//
-//  Copyright (c) 2019 AR.io. All rights reserved.
-//
-
-#ifndef __I_AR_SERVICE_H__
-#define __I_AR_SERVICE_H__
-#include "ArBase.h"
-
-namespace ar {
-    namespace rtc {
-        class IRtcEngine;
-    }
-    namespace rtm {
-        class IRtmService;
-    }
-namespace base {
-
-struct ARServiceContext
-{
-};
-
-
-class IARService
-{
-protected:
-    virtual ~IARService(){}
-public:
-    virtual void release() = 0;
-
-	/** Initializes the engine.
-     
-    @param context RtcEngine context.
-    @return
-     - 0: Success.
-     - < 0: Failure.
-    */
-    virtual int initialize(const ARServiceContext& context) = 0;
-
-    /** Retrieves the SDK version number.
-    * @param build Build number.
-    * @return The current SDK version in the string format. For example, 2.4.0
-    */
-    virtual const char* getVersion(int* build) = 0;
-
-    virtual rtm::IRtmService* createRtmService() = 0;
-};
-
-} //namespace base
-} // namespace ar
-
-/** Gets the SDK version number.
- 
- @param build Build number of the AR SDK.
- @return
- - 0: Success.
- - < 0: Failure.
-*/
-AR_API const char* AR_CALL getARSdkVersion(int* build);
-
-/**
-* Creates the RtcEngine object and returns the pointer.
-* @param err Error code
-* @return returns Description of the error code
-*/
-AR_API const char* AR_CALL getARSdkErrorDescription(int err);
-
-/**
-* Creates the AR Service object and returns the pointer.
-* @return returns Pointer of the AR Service object
-*/
-AR_API ar::base::IARService* AR_CALL createARService();
-
-AR_API int AR_CALL setARSdkExternalSymbolLoader(void* (*func)(const char* symname));
-
-#endif
diff --git a/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Info.plist b/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Info.plist
deleted file mode 100644
index 09c64f8..0000000
--- a/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Info.plist
+++ /dev/null
Binary files differ
diff --git a/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Modules/module.modulemap b/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Modules/module.modulemap
deleted file mode 100644
index 416e62f..0000000
--- a/nativePlugins/AR-RtcModule/ios/ARtcKit.framework/Modules/module.modulemap
+++ /dev/null
@@ -1,6 +0,0 @@
-framework module ARtcKit {
-  umbrella header "ARtcKit.h"
-
-  export *
-  module * { export * }
-}
diff --git a/nativePlugins/AR-RtcModule/ios/ArRtcUniPlugin.framework/ArRtcUniPlugin b/nativePlugins/AR-RtcModule/ios/ArRtcUniPlugin.framework/ArRtcUniPlugin
deleted file mode 100644
index 026c065..0000000
--- a/nativePlugins/AR-RtcModule/ios/ArRtcUniPlugin.framework/ArRtcUniPlugin
+++ /dev/null
Binary files differ
diff --git a/nativePlugins/AR-RtcModule/ios/ArRtcUniPlugin.framework/Frameworks/ARtcKit.framework/ARtcKit b/nativePlugins/AR-RtcModule/ios/ArRtcUniPlugin.framework/Frameworks/ARtcKit.framework/ARtcKit
deleted file mode 100644
index 319d1df..0000000
--- a/nativePlugins/AR-RtcModule/ios/ArRtcUniPlugin.framework/Frameworks/ARtcKit.framework/ARtcKit
+++ /dev/null
Binary files differ
diff --git a/nativePlugins/AR-RtcModule/ios/ArRtcUniPlugin.framework/Frameworks/ARtcKit.framework/Info.plist b/nativePlugins/AR-RtcModule/ios/ArRtcUniPlugin.framework/Frameworks/ARtcKit.framework/Info.plist
deleted file mode 100644
index 09c64f8..0000000
--- a/nativePlugins/AR-RtcModule/ios/ArRtcUniPlugin.framework/Frameworks/ARtcKit.framework/Info.plist
+++ /dev/null
Binary files differ
diff --git a/nativePlugins/AR-RtcModule/ios/ArRtcUniPlugin.framework/Frameworks/ARtcKit.framework/_CodeSignature/CodeResources b/nativePlugins/AR-RtcModule/ios/ArRtcUniPlugin.framework/Frameworks/ARtcKit.framework/_CodeSignature/CodeResources
deleted file mode 100644
index dfd443b..0000000
--- a/nativePlugins/AR-RtcModule/ios/ArRtcUniPlugin.framework/Frameworks/ARtcKit.framework/_CodeSignature/CodeResources
+++ /dev/null
@@ -1,101 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>files</key>
-	<dict>
-		<key>Info.plist</key>
-		<data>
-		ea52Cqx2Xud4WA0lw2WZ1aUYdyE=
-		</data>
-	</dict>
-	<key>files2</key>
-	<dict/>
-	<key>rules</key>
-	<dict>
-		<key>^.*</key>
-		<true/>
-		<key>^.*\.lproj/</key>
-		<dict>
-			<key>optional</key>
-			<true/>
-			<key>weight</key>
-			<real>1000</real>
-		</dict>
-		<key>^.*\.lproj/locversion.plist$</key>
-		<dict>
-			<key>omit</key>
-			<true/>
-			<key>weight</key>
-			<real>1100</real>
-		</dict>
-		<key>^Base\.lproj/</key>
-		<dict>
-			<key>weight</key>
-			<real>1010</real>
-		</dict>
-		<key>^version.plist$</key>
-		<true/>
-	</dict>
-	<key>rules2</key>
-	<dict>
-		<key>.*\.dSYM($|/)</key>
-		<dict>
-			<key>weight</key>
-			<real>11</real>
-		</dict>
-		<key>^(.*/)?\.DS_Store$</key>
-		<dict>
-			<key>omit</key>
-			<true/>
-			<key>weight</key>
-			<real>2000</real>
-		</dict>
-		<key>^.*</key>
-		<true/>
-		<key>^.*\.lproj/</key>
-		<dict>
-			<key>optional</key>
-			<true/>
-			<key>weight</key>
-			<real>1000</real>
-		</dict>
-		<key>^.*\.lproj/locversion.plist$</key>
-		<dict>
-			<key>omit</key>
-			<true/>
-			<key>weight</key>
-			<real>1100</real>
-		</dict>
-		<key>^Base\.lproj/</key>
-		<dict>
-			<key>weight</key>
-			<real>1010</real>
-		</dict>
-		<key>^Info\.plist$</key>
-		<dict>
-			<key>omit</key>
-			<true/>
-			<key>weight</key>
-			<real>20</real>
-		</dict>
-		<key>^PkgInfo$</key>
-		<dict>
-			<key>omit</key>
-			<true/>
-			<key>weight</key>
-			<real>20</real>
-		</dict>
-		<key>^embedded\.provisionprofile$</key>
-		<dict>
-			<key>weight</key>
-			<real>20</real>
-		</dict>
-		<key>^version\.plist$</key>
-		<dict>
-			<key>weight</key>
-			<real>20</real>
-		</dict>
-	</dict>
-</dict>
-</plist>
diff --git a/nativePlugins/AR-RtcModule/ios/ArRtcUniPlugin.framework/Info.plist b/nativePlugins/AR-RtcModule/ios/ArRtcUniPlugin.framework/Info.plist
deleted file mode 100644
index cffeb97..0000000
--- a/nativePlugins/AR-RtcModule/ios/ArRtcUniPlugin.framework/Info.plist
+++ /dev/null
Binary files differ
diff --git a/nativePlugins/AR-RtcModule/ios/ArRtcUniPlugin.framework/_CodeSignature/CodeDirectory b/nativePlugins/AR-RtcModule/ios/ArRtcUniPlugin.framework/_CodeSignature/CodeDirectory
deleted file mode 100644
index 496380b..0000000
--- a/nativePlugins/AR-RtcModule/ios/ArRtcUniPlugin.framework/_CodeSignature/CodeDirectory
+++ /dev/null
Binary files differ
diff --git a/nativePlugins/AR-RtcModule/ios/ArRtcUniPlugin.framework/_CodeSignature/CodeRequirements b/nativePlugins/AR-RtcModule/ios/ArRtcUniPlugin.framework/_CodeSignature/CodeRequirements
deleted file mode 100644
index 153a630..0000000
--- a/nativePlugins/AR-RtcModule/ios/ArRtcUniPlugin.framework/_CodeSignature/CodeRequirements
+++ /dev/null
Binary files differ
diff --git a/nativePlugins/AR-RtcModule/ios/ArRtcUniPlugin.framework/_CodeSignature/CodeRequirements-1 b/nativePlugins/AR-RtcModule/ios/ArRtcUniPlugin.framework/_CodeSignature/CodeRequirements-1
deleted file mode 100644
index e57b6de..0000000
--- a/nativePlugins/AR-RtcModule/ios/ArRtcUniPlugin.framework/_CodeSignature/CodeRequirements-1
+++ /dev/null
Binary files differ
diff --git a/nativePlugins/AR-RtcModule/ios/ArRtcUniPlugin.framework/_CodeSignature/CodeResources b/nativePlugins/AR-RtcModule/ios/ArRtcUniPlugin.framework/_CodeSignature/CodeResources
deleted file mode 100644
index fb547ca..0000000
--- a/nativePlugins/AR-RtcModule/ios/ArRtcUniPlugin.framework/_CodeSignature/CodeResources
+++ /dev/null
@@ -1,147 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>files</key>
-	<dict>
-		<key>Frameworks/ARtcKit.framework/ARtcKit</key>
-		<data>
-		zSTdfD26r2Z5oNp2BjEkOyIAJi8=
-		</data>
-		<key>Frameworks/ARtcKit.framework/Info.plist</key>
-		<data>
-		ea52Cqx2Xud4WA0lw2WZ1aUYdyE=
-		</data>
-		<key>Frameworks/ARtcKit.framework/_CodeSignature/CodeResources</key>
-		<data>
-		FNzX1qfO6b1WYfbM5ft9XvZjJDU=
-		</data>
-		<key>Info.plist</key>
-		<data>
-		FlAs63hum7QtW+kVR2M2RDY8570=
-		</data>
-	</dict>
-	<key>files2</key>
-	<dict>
-		<key>Frameworks/ARtcKit.framework/ARtcKit</key>
-		<dict>
-			<key>hash</key>
-			<data>
-			zSTdfD26r2Z5oNp2BjEkOyIAJi8=
-			</data>
-			<key>hash2</key>
-			<data>
-			XN9KFvy17so6EVuc6EqPjdL0zJrNKkZZlNFXBYTzhpw=
-			</data>
-		</dict>
-		<key>Frameworks/ARtcKit.framework/Info.plist</key>
-		<dict>
-			<key>hash</key>
-			<data>
-			ea52Cqx2Xud4WA0lw2WZ1aUYdyE=
-			</data>
-			<key>hash2</key>
-			<data>
-			lWoQu2XnhV26Xzkbh3xQFJN2WJO/s+w8+94MDmaJs+k=
-			</data>
-		</dict>
-		<key>Frameworks/ARtcKit.framework/_CodeSignature/CodeResources</key>
-		<dict>
-			<key>hash</key>
-			<data>
-			FNzX1qfO6b1WYfbM5ft9XvZjJDU=
-			</data>
-			<key>hash2</key>
-			<data>
-			wujn+kDmAWCNHbxPR0cKrNpyI2fKLSE2hDVbFt8OqcQ=
-			</data>
-		</dict>
-	</dict>
-	<key>rules</key>
-	<dict>
-		<key>^.*</key>
-		<true/>
-		<key>^.*\.lproj/</key>
-		<dict>
-			<key>optional</key>
-			<true/>
-			<key>weight</key>
-			<real>1000</real>
-		</dict>
-		<key>^.*\.lproj/locversion.plist$</key>
-		<dict>
-			<key>omit</key>
-			<true/>
-			<key>weight</key>
-			<real>1100</real>
-		</dict>
-		<key>^Base\.lproj/</key>
-		<dict>
-			<key>weight</key>
-			<real>1010</real>
-		</dict>
-		<key>^version.plist$</key>
-		<true/>
-	</dict>
-	<key>rules2</key>
-	<dict>
-		<key>.*\.dSYM($|/)</key>
-		<dict>
-			<key>weight</key>
-			<real>11</real>
-		</dict>
-		<key>^(.*/)?\.DS_Store$</key>
-		<dict>
-			<key>omit</key>
-			<true/>
-			<key>weight</key>
-			<real>2000</real>
-		</dict>
-		<key>^.*</key>
-		<true/>
-		<key>^.*\.lproj/</key>
-		<dict>
-			<key>optional</key>
-			<true/>
-			<key>weight</key>
-			<real>1000</real>
-		</dict>
-		<key>^.*\.lproj/locversion.plist$</key>
-		<dict>
-			<key>omit</key>
-			<true/>
-			<key>weight</key>
-			<real>1100</real>
-		</dict>
-		<key>^Base\.lproj/</key>
-		<dict>
-			<key>weight</key>
-			<real>1010</real>
-		</dict>
-		<key>^Info\.plist$</key>
-		<dict>
-			<key>omit</key>
-			<true/>
-			<key>weight</key>
-			<real>20</real>
-		</dict>
-		<key>^PkgInfo$</key>
-		<dict>
-			<key>omit</key>
-			<true/>
-			<key>weight</key>
-			<real>20</real>
-		</dict>
-		<key>^embedded\.provisionprofile$</key>
-		<dict>
-			<key>weight</key>
-			<real>20</real>
-		</dict>
-		<key>^version\.plist$</key>
-		<dict>
-			<key>weight</key>
-			<real>20</real>
-		</dict>
-	</dict>
-</dict>
-</plist>
diff --git a/nativePlugins/AR-RtcModule/ios/ArRtcUniPlugin.framework/_CodeSignature/CodeSignature b/nativePlugins/AR-RtcModule/ios/ArRtcUniPlugin.framework/_CodeSignature/CodeSignature
deleted file mode 100644
index 6d41f5c..0000000
--- a/nativePlugins/AR-RtcModule/ios/ArRtcUniPlugin.framework/_CodeSignature/CodeSignature
+++ /dev/null
Binary files differ
diff --git a/nativePlugins/AR-RtcModule/package.json b/nativePlugins/AR-RtcModule/package.json
deleted file mode 100644
index 80dfb50..0000000
--- a/nativePlugins/AR-RtcModule/package.json
+++ /dev/null
@@ -1,81 +0,0 @@
-{
-	"name": "AR-RtcModule",
-	"id": "AR-RtcModule",
-	"version": "1.0.5",
-	"description": "anyRTC音视频插件提供音视频功能,支持Android、iOS。",
-	"_dp_type": "nativeplugin", 
-	"_dp_nativeplugin": {
-		"android": {
-			"plugins": [{
-					"type": "module",
-					"name": "AR-RtcModule",
-					"class": "org.ar.arsdk.RtcModule"
-				},
-				{
-					"type": "component",
-					"name": "AR-CanvasView",
-					"class": "org.ar.arsdk.RtcComponent"
-				}
-			],
-			"integrateType": "aar",
-			"dependencies": [
-				"com.github.bumptech.glide:glide:4.9.0",
-				"com.alibaba:fastjson:1.1.46.android",
-				"com.android.support:recyclerview-v7:26.1.0",
-				"com.facebook.fresco:fresco:1.13.0",
-				"com.facebook.fresco:animated-gif:1.13.0",
-				"com.github.bumptech.glide:glide:4.9.0",
-				"com.alibaba:fastjson:1.1.46.android"
-			],
-			"compileOptions": {
-				"sourceCompatibility": "1.8",
-				"targetCompatibility": "1.8"
-			},
-			"abis": [
-				"armeabi-v7a",
-				"x86"
-			],
-			"minSdkVersion": "19",
-			"useAndroidX": false,
-			"permissions": [
-				"android.permission.INTERNET",
-				"android.permission.RECORD_AUDIO",
-				"android.permission.MODIFY_AUDIO_SETTINGS",
-				"android.permission.ACCESS_NETWORK_STATE",
-				"android.permission.READ_PHONE_STATE",
-				"android.permission.CAMERA",
-				"android.permission.WRITE_EXTERNAL_STORAGE",
-				"android.permission.BLUETOOTH",
-				"android.permission.WAKE_LOCK",
-				"android.permission.READ_EXTERNAL_STORAGE"
-			]
-		},
-        "ios": {
-            "plugins": [
-                {
-                "type": "module",
-                "name": "AR-RtcModule",
-                "class": "RtcModule"
-                },
-                {
-                "type": "component",
-                "name": "AR-CanvasView",
-                "class": "RtcComponent"
-                }
-            ],
-            "frameworks": [
-                "ARtcKit.framework"
-            ],
-            "embedFrameworks": [
-                "ARtcKit.framework"
-            ],
-            "integrateType": "framework",
-            "deploymentTarget": "9.0",
-            "privacies": [
-                "NSCameraUsageDescription",
-                "NSMicrophoneUsageDescription"
-            ]
-        }
-	}
-}
-
diff --git a/package.json b/package.json
deleted file mode 100644
index d9e304c..0000000
--- a/package.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
-  "dependencies": {
-    "@smallwei/avue": "^2.8.14",
-    "axios": "^0.21.1",
-    "js-md5": "^0.7.3",
-    "uni-read-pages": "^1.0.5",
-    "uni-simple-router": "^2.0.6",
-    "uview-ui": "^1.8.4"
-  },
-  "name": "qfqk-android",
-  "version": "1.0.0",
-  "main": "main.js",
-  "devDependencies": {},
-  "scripts": {
-    "test": "echo \"Error: no test specified\" && exit 1"
-  },
-  "repository": {
-    "type": "git",
-    "url": "http://192.168.0.105:10010/r/qfqk-android.git"
-  },
-  "keywords": [],
-  "author": "",
-  "license": "ISC",
-  "description": ""
-}
diff --git a/pages.json b/pages.json
deleted file mode 100644
index da528ac..0000000
--- a/pages.json
+++ /dev/null
@@ -1,461 +0,0 @@
-{
-	"easycom": {
-		"^u-(.*)": "@/uview-ui/components/u-$1/u-$1.vue"
-	},
-	"pages": [{
-			"path": "pages/login/login-account",
-			"style": {
-				"navigationBarTitleText": "登录",
-				"enablePullDownRefresh": false,
-				"navigationStyle": "custom"
-			}
-		}, {
-			"path": "pages/home/home",
-			"style": {
-				"navigationBarTitleText": "首页",
-				"enablePullDownRefresh": false,
-				"navigationStyle": "custom"
-			}
-		},
-		{
-			"path": "pages/registerUser/registerUser",
-			"name": "loging",
-			"style": {
-				"navigationBarTitleText": "注册账号",
-				"navigationBarBackgroundColor": "#0BB9C8",
-				"navigationBarTextStyle": "white"
-				// "app-plus": {
-				// 	"animationType": "fade-in",
-				// 	"animationDuration": 300
-				// }
-			}
-		},
-
-		{
-			"path": "pages/service/service",
-			"style": {
-				"navigationBarTitleText": "服务",
-				"enablePullDownRefresh": false,
-				"navigationStyle": "custom"
-			}
-		},
-		{
-			"path": "pages/manage/manage",
-			"style": {
-				"navigationBarTitleText": "工作台",
-				"enablePullDownRefresh": false,
-				"navigationStyle": "custom"
-			}
-		},
-		{
-			"path": "pages/user/center",
-			"style": {
-				"navigationBarTitleText": "我的",
-				"enablePullDownRefresh": false,
-				"navigationStyle": "custom"
-			}
-		},
-		{
-			"path": "pages/talking/talking",
-			"style": {
-				"navigationBarTitleText": "聊天",
-				"enablePullDownRefresh": false,
-				"navigationStyle": "custom"
-			}
-		},
-		{
-			"path": "pages/groupChat/groupChat",
-			"style": {
-				"navigationBarTitleText": "聊天室",
-				"enablePullDownRefresh": false,
-				"navigationStyle": "custom"
-			}
-		},
-		{
-			"path": "pages/groupChat/chatingQZ",
-			"style": {
-				"navigationBarTitleText": "聊天室",
-				"enablePullDownRefresh": false,
-				"navigationStyle": "custom"
-			}
-		},
-		{
-			"path": "pages/groupChat/chating",
-			"style": {
-				"navigationBarTitleText": "聊天室",
-				"enablePullDownRefresh": false,
-				"navigationStyle": "custom"
-			}
-		},
-		{
-			"path": "pages/groupChat/friendrequest",
-			"style": {
-				"navigationStyle": "custom"
-			}
-		},
-		{
-			"path": "pages/groupChat/addFriend",
-			"style": {
-				"navigationStyle": "custom"
-			}
-		},
-		{
-			"path": "pages/securityStaff/exhibition",
-			"style": {
-				"navigationBarTitleText": "保安管理",
-				"navigationBarBackgroundColor": "#0BB9C8",
-				"navigationBarTextStyle": "white",
-				"enablePullDownRefresh": true
-			}
-		},
-		{
-			"path": "pages/securityStaff/information",
-			"style": {
-				"navigationBarTitleText": "详细信息",
-				"enablePullDownRefresh": false,
-				"navigationStyle": "custom"
-			}
-		},
-		{
-			"path": "pages/company/company",
-			"style": {
-				"navigationBarTitleText": "保安单位",
-				"navigationBarBackgroundColor": "#0BB9C8",
-				"navigationBarTextStyle": "white",
-				"enablePullDownRefresh": true
-			}
-		},
-		{
-			"path": "pages/company/companyDetail",
-			"style": {
-				"navigationBarTitleText": "保安单位管理",
-				"enablePullDownRefresh": false,
-				"navigationBarBackgroundColor": "#0BB9C8",
-				"navigationBarTextStyle": "white"
-			}
-		},
-		{
-			"path": "pages/report/report",
-			"style": {
-				"navigationBarTitleText": "工作汇报",
-				"navigationBarBackgroundColor": "#0BB9C8",
-				"navigationBarTextStyle": "white",
-				"navigationStyle": "custom",
-				"enablePullDownRefresh": true
-			}
-		},
-		{
-			"path": "pages/report/initiate",
-			"style": {
-				"navigationBarTitleText": "发起汇报",
-				"enablePullDownRefresh": false,
-				"navigationBarBackgroundColor": "#0BB9C8",
-				"navigationBarTextStyle": "white"
-			}
-		},
-		{
-			"path": "pages/report/sendDetail",
-			"style": {
-				"navigationBarTitleText": "发送汇报详情",
-				"enablePullDownRefresh": false,
-				"navigationBarBackgroundColor": "#0BB9C8",
-				"navigationBarTextStyle": "white"
-			}
-		},
-		{
-			"path": "pages/report/receiveDetail",
-			"style": {
-				"navigationBarTitleText": "接收汇报详情",
-				"enablePullDownRefresh": false,
-				"navigationBarBackgroundColor": "#0BB9C8",
-				"navigationBarTextStyle": "white"
-			}
-		},
-		{
-			"path": "pages/dispatch/dispatch",
-			"style": {
-				"navigationBarTitleText": "调度指令",
-				"enablePullDownRefresh": true,
-				"navigationBarBackgroundColor": "#0BB9C8",
-				"navigationBarTextStyle": "white",
-				"navigationStyle": "custom"
-			}
-		},
-		{
-			"path": "pages/dispatch/lookDetail",
-			"style": {
-				"navigationBarTitleText": "指令详情",
-				"enablePullDownRefresh": false,
-				"navigationBarBackgroundColor": "#0BB9C8",
-				"navigationBarTextStyle": "white"
-			}
-		},
-		{
-			"path": "pages/dispatch/imgissue",
-			"style": {
-				"navigationBarTitleText": "指令下发",
-				"enablePullDownRefresh": false,
-				"navigationBarBackgroundColor": "#0BB9C8",
-				"navigationBarTextStyle": "white"
-			}
-		},
-		{
-			"path": "pages/message/message",
-			"style": {
-				"navigationBarTitleText": "通知通告",
-				"enablePullDownRefresh": true,
-				"navigationBarBackgroundColor": "#0BB9C8",
-				"navigationBarTextStyle": "white",
-				"navigationStyle": "custom"
-			}
-		},
-		{
-			"path": "pages/message/messageDetail",
-			"style": {
-				"navigationBarTitleText": "通知通告详情",
-				"enablePullDownRefresh": false,
-				"navigationBarBackgroundColor": "#0BB9C8",
-				"navigationBarTextStyle": "white"
-			}
-		},
-		{
-			"path": "pages/message/addMessage",
-			"style": {
-				"navigationBarTitleText": "发送通知",
-				"enablePullDownRefresh": false,
-				"navigationBarBackgroundColor": "#0BB9C8",
-				"navigationBarTextStyle": "white"
-			}
-		},
-		{
-			"path": "pages/examine/examine",
-			"style": {
-				"navigationBarTitleText": "现场检查",
-				"enablePullDownRefresh": true,
-				"navigationBarBackgroundColor": "#0BB9C8",
-				"navigationBarTextStyle": "white",
-				"navigationStyle": "custom"
-			}
-		}, {
-			"path": "pages/examine/unitDetail",
-			"style": {
-				"navigationBarTitleText": "单位检查详情",
-				"enablePullDownRefresh": false,
-				"navigationBarBackgroundColor": "#0BB9C8",
-				"navigationBarTextStyle": "white"
-			}
-		}, {
-			"path": "pages/examine/peopleDetail",
-			"style": {
-				"navigationBarTitleText": "保安检查详情",
-				"enablePullDownRefresh": false,
-				"navigationBarBackgroundColor": "#0BB9C8",
-				"navigationBarTextStyle": "white"
-			}
-		}, {
-			"path": "pages/examine/addunit",
-			"style": {
-				"navigationBarTitleText": "新增单位检查",
-				"enablePullDownRefresh": false,
-				"navigationBarBackgroundColor": "#0BB9C8",
-				"navigationBarTextStyle": "white"
-			}
-		}, {
-			"path": "pages/examine/addpeople",
-			"style": {
-				"navigationBarTitleText": "新增人员检查",
-				"enablePullDownRefresh": false,
-				"navigationBarBackgroundColor": "#0BB9C8",
-				"navigationBarTextStyle": "white"
-			}
-		}, {
-			"path": "pages/map/map",
-			"style": {
-				"navigationBarTitleText": "保安员位置",
-				"enablePullDownRefresh": false,
-				"navigationBarBackgroundColor": "#0BB9C8",
-				"navigationBarTextStyle": "white"
-			}
-		},
-		{
-			"path": "pages/map/map",
-			"name": "map",
-			"style": {
-				"navigationBarTitleText": "保安位置",
-				"navigationBarBackgroundColor": "#0BB9C8",
-				"navigationBarTextStyle": "white"
-			}
-		},
-		{
-			"path": "pages/user/profile",
-			"style": {
-				"navigationBarTitleText": "个人资料",
-				"enablePullDownRefresh": false,
-				"navigationStyle": "custom"
-			}
-		},
-		{
-			"path": "pages/login/login-phone",
-			"style": {
-				"navigationBarTitleText": "手机登录",
-				"enablePullDownRefresh": false,
-				"navigationStyle": "custom"
-			}
-		},
-		{
-			"path": "pages/login/login-account",
-			"style": {
-				"navigationBarTitleText": "账号登录",
-				"enablePullDownRefresh": false,
-				"navigationStyle": "custom"
-			}
-		},
-		{
-			"path": "pages/system/setting",
-			"style": {
-				"navigationBarTitleText": "设置",
-				"enablePullDownRefresh": false,
-				"navigationStyle": "custom"
-			}
-		},
-		{
-			"path": "pages/news/list",
-			"style": {
-				"navigationBarTitleText": "新闻动态",
-				"enablePullDownRefresh": false,
-				"navigationStyle": "custom"
-			}
-		},
-		{
-			"path": "pages/news/detail",
-			"style": {
-				"navigationBarTitleText": "新闻详情页",
-				"enablePullDownRefresh": false,
-				"navigationStyle": "custom"
-			}
-		},
-		{
-			"path": "pages/demo/demo",
-			"style": {
-				"navigationBarTitleText": "示例页",
-				"enablePullDownRefresh": false,
-				"navigationStyle": "custom"
-			}
-		},
-		{
-			"path": "pages/demo/storage",
-			"style": {
-				"navigationBarTitleText": "storage测试页",
-				"enablePullDownRefresh": false,
-				"navigationStyle": "custom"
-			}
-		},
-		{
-			"path": "pages/demo/vuex",
-			"style": {
-				"navigationBarTitleText": "vuex测试页",
-				"enablePullDownRefresh": false,
-				"navigationStyle": "custom"
-			}
-		},
-		{
-			"path": "pages/demo/mock",
-			"style": {
-				"navigationBarTitleText": "mock测试页",
-				"enablePullDownRefresh": false,
-				"navigationStyle": "custom"
-			}
-		},
-		{
-			"path": "pages/demo/request",
-			"style": {
-				"navigationBarTitleText": "request测试页",
-				"enablePullDownRefresh": false,
-				"navigationStyle": "custom"
-			}
-		},
-		{
-			"path": "pages/demo/crud",
-			"style": {
-				"navigationBarTitleText": "crud测试页",
-				"enablePullDownRefresh": false,
-				"navigationStyle": "custom"
-			}
-		},
-		{
-			"path": "pages/videoCall/videoCall",
-			"style": {
-				"navigationBarTitleText": "视频通话",
-				"enablePullDownRefresh": false,
-				"navigationStyle": "custom"
-				// "enablePullDownRefresh": false
-			}
-		}, {
-			"path": "pages/groupChat/newGroup/newGroup",
-			"style": {
-				"navigationBarTitleText": "新建群组",
-				"navigationBarBackgroundColor": "#0BB9C8",
-				"navigationBarTextStyle": "white"
-			}
-
-		}, {
-			"path": "pages/groupChat/chatMessage",
-			"style": {
-				"navigationBarTitleText": "聊天信息",
-				"navigationBarBackgroundColor": "#0BB9C8",
-				"navigationBarTextStyle": "white",
-				"navigationStyle": "custom",
-				"enablePullDownRefresh": false
-			}
-		}
-	],
-	"globalStyle": {
-		"navigationBarTextStyle": "black",
-		"navigationBarTitleText": "",
-		"navigationBarBackgroundColor": "#fff",
-		"backgroundColor": "#F7F7F7"
-		// "app-plus": {
-		// 	"titleNView": true,
-		// 	"bounce": "none"
-		// }
-	},
-	"tabBar": {
-		"color": "#A6ABB5",
-		"selectedColor": "#0BB9C8",
-		"borderStyle": "white",
-		"backgroundColor": "#ffffff",
-		"list": [{
-				"pagePath": "pages/home/home",
-				"iconPath": "static/images/tabbar/home.png",
-				"selectedIconPath": "static/images/tabbar/home_selected.png",
-				"text": "首页"
-			},
-			{
-				"pagePath": "pages/groupChat/groupChat",
-				"iconPath": "static/images/tabbar/call.png",
-				"selectedIconPath": "static/images/tabbar/select-call.png",
-				"text": "聊天"
-			},
-			{
-				"pagePath": "pages/manage/manage",
-				"text": "工作台",
-				"iconPath": "static/images/tabbar/job.png",
-				"selectedIconPath": "static/images/tabbar/select-job.png"
-			},
-			{
-				"pagePath": "pages/user/center",
-				"iconPath": "static/images/tabbar/user.png",
-				"selectedIconPath": "static/images/tabbar/user_selected.png",
-				"text": "我的"
-			}
-		]
-	},
-	"condition": { //模式配置,仅开发期间生效
-		"current": 0, //当前激活的模式(list 的索引项)
-		"list": [{
-			"name": "", //模式名称
-			"path": "", //启动页面,必选
-			"query": "" //启动参数,在页面的onLoad函数里面得到
-		}]
-	}
-}
diff --git a/pages/company/company.vue b/pages/company/company.vue
deleted file mode 100644
index 6060302..0000000
--- a/pages/company/company.vue
+++ /dev/null
@@ -1,245 +0,0 @@
-<template>
-	<view class="container">
-
-		<u-search v-model='keyValue' placeholder='请输入公司名称' shape="round" class="u-search" input-align="center"
-			height="70" @search='searchValue' @custom='searchValue' @clear='clearValue' @change='changeValue'>
-		</u-search>
-
-		<view v-if="newsList.length > 0">
-			<view class="inTmain" v-for="(item,index) in newsList">
-				<u-card :title="item.enterprisename" @click="goDetail(item)">
-					<view class="" slot="body">
-						<view>
-							<view style="margin-bottom: 10px;" class="u-body-item-title u-line-1">公司地址:{{item.address}}
-							</view>
-						</view>
-						<view>
-							<view class="u-body-item-title u-line-1">经营范围:{{item.business}}</view>
-						</view>
-					</view>
-					<view class="" slot="foot">
-						</u-icon>法定代表人:{{item.representative}}</view>
-				</u-card>
-			</view>
-			<u-loadmore class='msg' :status="status" />
-		</view>
-
-		<view class="msg" v-else>
-			暂无数据
-		</view>
-
-	</view>
-</template>
-
-<script>
-	export default {
-		data() {
-			return {
-				dataList: [],
-				newsList: [],
-				status: 'loadmore',
-				keyValue: '',
-				pagelist: 0,
-				pages: 0,
-				flag: true,
-
-				pullDown: false
-			};
-		},
-		onLoad() {
-
-		},
-		onReachBottom() {
-			var that = this;
-
-			if (that.flag == false) {
-				that.status = 'nomore';
-				return
-			}
-			// 后续将改为与后端联动
-			that.status = 'loading';
-
-			setTimeout(() => {
-				that.getCompany();
-			}, 1000);
-
-
-		},
-
-		onPullDownRefresh: function() {
-			this.pullDown = true;
-			this.pagelist = 0;
-			this.pages = 0;
-			this.flag = true;
-			this.dataList = [];
-			this.newsList = [];
-			this.status = 'loading';
-			this.keyValue = '';
-			setTimeout(() => {
-				this.getCompany();
-			}, 1000)
-
-		},
-
-		mounted() {
-			this.getCompany();
-		},
-		methods: {
-			getCompany() {
-				var that = this;
-
-				if (that.pagelist < that.pages || that.pagelist == 0) {
-					that.pagelist++
-				} else if (that.pagelist == that.pages) {
-					that.flag = false
-					that.status = 'nomore';
-					return
-				}
-
-				uni.request({
-					url: that.$store.state.piAPI + "/information/page",
-					method: "get",
-					data: {
-						current: that.pagelist,
-						jurisdiction: this.$store.state
-							.UserData.jurisdiction,
-						size: 10
-					},
-					success: (res) => {
-						that.pages = res.data.data.pages;
-
-						var resdata = res.data.data.records;
-
-						if (this.pullDown == true) {
-							this.pullDown = false;
-							uni.stopPullDownRefresh();
-						}
-
-						if (resdata.length == 0) {
-							that.flag = false
-							that.status = 'nomore';
-							return
-						} else {
-							resdata.forEach(item => {
-								that.newsList.push(item)
-								that.dataList.push(item)
-							})
-						}
-
-						if (that.pagelist == that.pages) {
-							that.flag = false
-							that.status = 'nomore';
-							return
-						}
-
-					}
-				});
-			},
-			goDetail(item) {
-				uni.navigateTo({
-					url: './companyDetail?detailData=' + JSON.stringify(item)
-				});
-			},
-			searchValue(value) {
-				var that = this;
-				var str = value.replace(/\s*/g, "");
-				if (str == '') {
-					return
-				} else {
-					that.newsList = [];
-
-					uni.request({
-						url: that.$store.state.piAPI + "/information/page",
-						method: "get",
-						data: {
-							current: 1,
-							size: 999999,
-							jurisdiction: this.$store.state
-								.UserData.jurisdiction,
-							enterprisename: str
-						},
-						success: (res) => {
-
-							var resdata = res.data.data.records;
-
-							resdata.forEach(item => {
-								that.newsList.push(item)
-							})
-
-						}
-					});
-
-					that.flag = false
-					that.status = 'nomore';
-				}
-			},
-			clearValue() {
-				this.keyValue = ''
-				this.newsList = [];
-
-				this.dataList.forEach(item => {
-					this.newsList.push(item)
-				})
-
-				if (this.pagelist < this.pages) {
-					this.flag = true;
-					this.status = 'loading';
-				} else {
-					this.flag = false;
-					this.status = 'nomore';
-				}
-			},
-			changeValue(value) {
-				if (value == '') {
-					this.newsList = [];
-
-					this.dataList.forEach(item => {
-						this.newsList.push(item)
-					})
-
-					if (this.pagelist < this.pages) {
-						this.flag = true;
-						this.status = 'loading';
-					} else {
-						this.flag = false;
-						this.status = 'nomore';
-					}
-				}
-			}
-		}
-	};
-</script>
-
-<style lang="scss">
-	.u-card-wrap {
-		background-color: $u-bg-color;
-		padding: 1px;
-	}
-
-	.u-body-item {
-		font-size: 32rpx;
-		color: #333;
-		padding: 20rpx 10rpx;
-	}
-
-	.u-body-item image {
-		width: 120rpx;
-		flex: 0 0 120rpx;
-		height: 120rpx;
-		border-radius: 8rpx;
-		margin-left: 12rpx;
-	}
-
-	.u-search {
-		padding: 20rpx 30rpx 0 30rpx;
-	}
-
-	.inTmain {}
-
-	.msg {
-		height: 74rpx;
-		line-height: 72rpx;
-		text-align: center;
-		color: #999;
-	}
-</style>
diff --git a/pages/company/companyDetail.vue b/pages/company/companyDetail.vue
deleted file mode 100644
index f0758a1..0000000
--- a/pages/company/companyDetail.vue
+++ /dev/null
@@ -1,398 +0,0 @@
-<template>
-	<view class="container">
-
-		<u-tabs :list="list" :is-scroll="false" :current="current" active-color="#14B9C8" inactive-color="#595959"
-			height="100" @change="change"></u-tabs>
-
-		<view v-show="current == 0">
-
-			<view style="
-				width: 100%; 
-				height:500rpx;
-				margin-top: 30rpx;">
-
-				<l-echart ref="chart"></l-echart>
-
-			</view>
-
-			<view style="
-				width: 100%; 
-				height:500rpx;
-				margin-top: 30rpx;">
-
-				<l-echart ref="certificateEchart"></l-echart>
-
-			</view>
-
-		</view>
-
-		<view v-show="current == 1">
-
-			<u-form :model="detailData" ref="uForm" class="companyForm">
-
-				<u-form-item label-width='132' label="单位名称">
-					<span> {{ detailData.enterprisename }} </span>
-				</u-form-item>
-
-				<u-form-item label-width='132' label="成立日期">
-					<span> {{ detailData.establishtime }} </span>
-				</u-form-item>
-
-				<u-form-item label-width='158' label="法定代表人">
-					<span> {{ detailData.representative }} </span>
-				</u-form-item>
-
-				<u-form-item label-width='266' label="法定代表人联系方式">
-					<span> {{ detailData.representativecell }} </span>
-				</u-form-item>
-
-				<u-form-item label-width='98' label="联系人">
-					<span> {{ detailData.contacts }} </span>
-				</u-form-item>
-
-				<u-form-item label-width='152' label="联系人电话">
-					<span> {{ detailData.contactscell }} </span>
-				</u-form-item>
-
-				<u-form-item label-width='132' label="注册资本">
-					<span> {{ detailData.registeredcapital }} </span>
-				</u-form-item>
-
-				<u-form-item label-width='132' label="实缴资本">
-					<span> {{ detailData.capital }} </span>
-				</u-form-item>
-
-				<u-form-item label-width='132' label="注册地址">
-					<span> {{ detailData.address }} </span>
-				</u-form-item>
-
-				<u-form-item label-width='132' label="经营范围">
-					<span> {{ detailData.business }} </span>
-				</u-form-item>
-
-				<u-form-item label-width='132' label="所属地区">
-					<span> {{ detailData.region }} </span>
-				</u-form-item>
-
-				<u-form-item label-width='132' label="登记机关">
-					<span> {{ detailData.registration }} </span>
-				</u-form-item>
-
-				<u-form-item label-width='132' label="所属行业">
-					<span> {{ detailData.industry }} </span>
-				</u-form-item>
-
-				<u-form-item label-width='158' label="工商注册号">
-					<span> {{ detailData.registrationnumber }} </span>
-				</u-form-item>
-
-				<u-form-item label-width='184' label="组织机构代码">
-					<span> {{ detailData.organizationcode }} </span>
-				</u-form-item>
-
-				<u-form-item label-width='184' label="纳税人识别号">
-					<span> {{ detailData.identificationnumber }} </span>
-				</u-form-item>
-
-				<u-form-item label-width='236' label="统一社会信用代码">
-					<span> {{ detailData.creditcode }} </span>
-				</u-form-item>
-
-			</u-form>
-
-		</view>
-
-	</view>
-
-</template>
-
-<script>
-	import * as echarts from '@/uni_modules/lime-echart/components/l-echart/echarts';
-
-	export default {
-		data() {
-			return {
-				list: [{
-						name: '保安员比例'
-					},
-					{
-						name: '注册信息'
-					}
-				],
-				current: 0,
-				detailData: {},
-
-				seriesData: [{
-					name: '男',
-					value: 0,
-					state: 1
-				}, {
-					name: '女',
-					value: 0,
-					state: 2
-				}, ],
-
-				certificateData: [{
-					name: '持证',
-					value: 0,
-					state: 1
-				}, {
-					name: '未持证',
-					value: 0,
-					state: 2
-				}, {
-					name: '已吊销',
-					value: 0,
-					state: 3
-				}]
-			};
-		},
-		onLoad(event) {
-
-			var that = this;
-
-			this.detailData = JSON.parse(decodeURIComponent(event.detailData))
-
-		},
-		mounted() {
-			this.getCompanyData()
-		},
-		methods: {
-			change(index) {
-
-				if (this.current == index) return;
-
-				this.current = index;
-
-			},
-			getChartOption() {
-				return {
-					color: ['#00aaff', '#ff00ff'],
-					title: {
-						text: '保安员男女比例',
-						left: 'center',
-						textStyle: {
-							color: '#069ec8'
-						}
-					},
-					tooltip: {
-						trigger: 'axis',
-						axisPointer: {
-							// 坐标轴指示器,坐标轴触发有效
-							type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
-						},
-						confine: true
-					},
-					legend: {
-						orient: 'vertical',
-						top: 'center',
-						right: 40,
-						data: ['男', '女'],
-						formatter: (name) => {
-							if (this.seriesData.length) {
-								const item = this.seriesData.filter((item) => item.name === name)[0];
-								return `${item.name}: ${item.value}`;
-							}
-						},
-					},
-					grid: {
-						left: 20,
-						right: 20,
-						bottom: 15,
-						top: 40,
-						containLabel: true
-					},
-					series: [{
-						name: '保安男女占比',
-						type: 'pie',
-						center: ['32%', '50%'],
-						radius: ['45%', '65%'],
-						label: {
-							normal: {
-								show: false,
-								position: 'center',
-								formatter: '{value|{c}}\n{label|{b}}',
-								rich: {
-									value: {
-										padding: 5,
-										align: 'center',
-										verticalAlign: 'middle',
-										fontSize: 32,
-									},
-									label: {
-										align: 'center',
-										verticalAlign: 'middle',
-										fontSize: 16,
-									},
-								},
-							},
-							emphasis: {
-								show: true,
-								textStyle: {
-									fontSize: '12',
-								},
-							},
-						},
-						labelLine: {
-							show: false,
-							length: 0,
-							length2: 0,
-						},
-						data: this.seriesData
-					}]
-				}
-			},
-			getCertificateOption() {
-				return {
-					color: ['#0000ff', '#ffaa00', '#aa0000'],
-					title: {
-						text: '保安员持证',
-						left: 'center',
-						textStyle: {
-							color: '#069ec8'
-						}
-					},
-					tooltip: {
-						trigger: 'axis',
-						axisPointer: {
-							// 坐标轴指示器,坐标轴触发有效
-							type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
-						},
-						confine: true
-					},
-					legend: {
-						orient: 'vertical',
-						top: 'center',
-						right: 40,
-						data: ['持证', '未持证', '已吊销'],
-						formatter: (name) => {
-							if (this.certificateData.length) {
-								const item = this.certificateData.filter((item) => item.name === name)[0];
-								return `${item.name}: ${item.value}`;
-							}
-						},
-					},
-					grid: {
-						left: 20,
-						right: 20,
-						bottom: 15,
-						top: 40,
-						containLabel: true
-					},
-					series: [{
-						name: '保安男女占比',
-						type: 'pie',
-						center: ['32%', '50%'],
-						radius: ['45%', '65%'],
-						label: {
-							normal: {
-								show: false,
-								position: 'center',
-								formatter: '{value|{c}}\n{label|{b}}',
-								rich: {
-									value: {
-										padding: 5,
-										align: 'center',
-										verticalAlign: 'middle',
-										fontSize: 32,
-									},
-									label: {
-										align: 'center',
-										verticalAlign: 'middle',
-										fontSize: 16,
-									},
-								},
-							},
-							emphasis: {
-								show: true,
-								textStyle: {
-									fontSize: '12',
-								},
-							},
-						},
-						labelLine: {
-							show: false,
-							length: 0,
-							length2: 0,
-						},
-						data: this.certificateData
-					}]
-				}
-			},
-			getCompanyData() {
-				uni.request({
-					url: this.$store.state.piAPI + "/blade-user/pages?deptId=" + this.detailData.departmentid,
-					method: "get",
-					data: {
-						current: 1,
-						size: 9999
-					},
-					success: (res) => {
-
-						var resdata = res.data.data.records;
-
-						this.seriesData.forEach(it => {
-							it.value = 0
-						})
-
-						this.certificateData.forEach(it => {
-							it.value = 0
-						})
-
-						resdata.forEach(item => {
-
-
-							this.seriesData.forEach(it => {
-								if (item.sex == it.state) {
-									it.value += 1
-								}
-							})
-
-							this.certificateData.forEach(it => {
-								if (item.hold == it.state) {
-									it.value += 1
-								}
-							})
-
-						})
-
-						var chartOption = this.getChartOption()
-						this.$refs.chart.init(config => {
-							const {
-								canvas
-							} = config;
-							const chart = echarts.init(canvas, null, config);
-							canvas.setChart(chart);
-							chart.setOption(chartOption);
-							// 需要把 chart 返回
-							return chart;
-						});
-
-						var certificateOption = this.getCertificateOption()
-						this.$refs.certificateEchart.init(config => {
-							const {
-								canvas
-							} = config;
-							const chart = echarts.init(canvas, null, config);
-							canvas.setChart(chart);
-							chart.setOption(certificateOption);
-							// 需要把 chart 返回
-							return chart;
-						});
-
-					}
-				});
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	.companyForm {
-		padding: 30rpx;
-
-		span {
-			color: #999;
-		}
-	}
-</style>
diff --git a/pages/demo/crud.vue b/pages/demo/crud.vue
deleted file mode 100644
index 70db39f..0000000
--- a/pages/demo/crud.vue
+++ /dev/null
@@ -1,24 +0,0 @@
-<template>
-	<view class="container">
-		<u-navbar :is-fixed="false" :border-bottom="false" :is-back="true" back-icon-name="arrow-leftward"
-			back-icon-color="#fff" back-icon-size="35" :background="{ background: '#0BB9C8' }" title="CRUD 操作"
-			title-color="#fff">
-		</u-navbar>
-		<view class="u-demo">
-			<view class="u-demo-wrap">
-				<view class="u-demo-title">很快到来</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-
-	export default {
-		data() {
-			return {
-				data: {}
-			};
-		},
-	}
-</script>
diff --git a/pages/demo/demo.config.js b/pages/demo/demo.config.js
deleted file mode 100644
index c6aa3c4..0000000
--- a/pages/demo/demo.config.js
+++ /dev/null
@@ -1,36 +0,0 @@
-export default [{
-		groupName: '基础功能',
-		list: [{
-			path: '/pages/demo/storage',
-			icon: 'cell',
-			title: 'Storage 操作',
-		}, {
-			path: '/pages/demo/vuex',
-			icon: 'sticky',
-			title: 'Vuex 操作',
-		}]
-	},
-	{
-		groupName: '网络功能',
-		list: [{
-			path: '/pages/demo/mock',
-			icon: 'layout',
-			title: 'Mock 调用',
-		}, {
-			path: '/pages/demo/request',
-			icon: 'tabbar',
-			title: 'API 调用',
-		}]
-	}, {
-		groupName: '业务功能',
-		list: [{
-			path: '/pages/demo/crud',
-			icon: 'tag',
-			title: 'CRUD 操作',
-		},{
-			path: '/pages/componentsA/parse/index',
-			icon: 'loading',
-			title: '未完待续',
-		}]
-	},
-]
diff --git a/pages/demo/demo.vue b/pages/demo/demo.vue
deleted file mode 100644
index 6ae1674..0000000
--- a/pages/demo/demo.vue
+++ /dev/null
@@ -1,74 +0,0 @@
-<template>
-	<view class="wrap">
-		<page-nav :desc="desc" :title="title"></page-nav>
-		<view class="list-wrap">
-			<u-cell-group title-bg-color="rgb(243, 244, 246)" :title="getGroupTitle(item)" v-for="(item, index) in list"
-				:key="index">
-				<u-cell-item :titleStyle="{fontWeight: 500}" @click="openPage(item1.path)" :title="getFieldTitle(item1)"
-					v-for="(item1, index1) in item.list" :key="index1">
-					<image slot="icon" class="u-cell-icon" :src="getIcon(item1.icon)" mode="widthFix"></image>
-				</u-cell-item>
-			</u-cell-group>
-		</view>
-		<u-gap height="70"></u-gap>
-	</view>
-</template>
-
-<script>
-	import pageNav from '@/components/page-nav/page-nav.vue';
-	import list from "./demo.config.js";
-	export default {
-		components: {
-			pageNav
-		},
-		data() {
-			return {
-				list: list,
-				title: '基础功能示例合集',
-				desc: '众多示例覆盖开发过程的各个需求,正在不断完善中。可让您快速集成,开箱即用。'
-			}
-		},
-		computed: {
-			getIcon() {
-				return path => {
-					return 'https://cdn.uviewui.com/uview/example/' + path + '.png';
-				}
-			},
-		},
-		onShow() {
-			uni.setNavigationBarTitle({
-				title: "233"
-			});
-		},
-		created() {
-
-		},
-		methods: {
-			openPage(path) {
-				this.$u.route({
-					url: path
-				})
-			},
-			getGroupTitle(item) {
-				return item.groupName
-			},
-			getFieldTitle(item) {
-				return item.title
-			}
-		}
-	}
-</script>
-
-<style>
-	/* page {
-		background-color: rgb(240, 242, 244);
-	} */
-</style>
-
-<style lang="scss" scoped>
-	.u-cell-icon {
-		width: 36rpx;
-		height: 36rpx;
-		margin-right: 8rpx;
-	}
-</style>
diff --git a/pages/demo/mock.vue b/pages/demo/mock.vue
deleted file mode 100644
index 87b24bd..0000000
--- a/pages/demo/mock.vue
+++ /dev/null
@@ -1,49 +0,0 @@
-<template>
-	<view class="container">
-		<u-navbar :is-fixed="false" :border-bottom="false" :is-back="true" back-icon-name="arrow-leftward"
-			back-icon-color="#fff" back-icon-size="35" :background="{ background: '#0BB9C8' }" title="Mock 调用"
-			title-color="#fff">
-		</u-navbar>
-		<view class="u-demo">
-			<view class="u-demo-wrap">
-				<view class="u-demo-title">演示效果</view>
-				<view class="u-demo-area u-flex u-row-center">
-					数据为:{{data}}
-				</view>
-			</view>
-			<view class="u-config-wrap">
-				<view class="u-config-title u-border-bottom">参数操作</view>
-				<view class="u-config-item">
-					<view class="u-item-title">按钮点击</view>
-					<u-button @click="doRequest">获取数据</u-button>
-				</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	import {
-		fakeBannerList
-	} from "@/api/mock/home.js";
-	export default {
-		data() {
-			return {
-				data: {}
-			};
-		},
-		methods: {
-			doRequest() {
-				let keyword = "";
-				fakeBannerList().then(data => {
-					this.data = data;
-					this.$u.func.showToast({
-						title: '数据获取成功',
-					})
-				}).catch(() => {
-
-				})
-			}
-		},
-	}
-</script>
diff --git a/pages/demo/request.vue b/pages/demo/request.vue
deleted file mode 100644
index 350da14..0000000
--- a/pages/demo/request.vue
+++ /dev/null
@@ -1,48 +0,0 @@
-<template>
-	<view class="container">
-		<u-navbar :is-fixed="false" :border-bottom="false" :is-back="true" back-icon-name="arrow-leftward"
-			back-icon-color="#fff" back-icon-size="35" :background="{ background: '#0BB9C8' }" title="API 请求"
-			title-color="#fff">
-		</u-navbar>
-		<view class="u-demo">
-			<view class="u-demo-wrap">
-				<view class="u-demo-title">演示效果</view>
-				<view class="u-demo-area u-flex u-row-center">
-					<u-image width="300rpx" height="100rpx" :src="url"></u-image>
-				</view>
-			</view>
-			<view class="u-config-wßrap">
-				<view class="u-config-title u-border-bottom">参数操作</view>
-				<view class="u-config-item">
-					<view class="u-item-title">按钮点击</view>
-					<u-button @click="doRequest">刷新验证码</u-button>
-				</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	export default {
-		data() {
-			return {
-				url: ''
-			};
-		},
-		methods: {
-			doRequest() {
-				let keyword = "";
-				// 自动挂载至this.$u.api,无需引入
-				// captcha 在 /api/demo.js 内定义
-				this.$u.api.captcha().then(data => {
-					this.url = data.image;
-					this.$u.func.showToast({
-						title: '数据获取成功',
-					})
-				}).catch(() => {
-
-				})
-			}
-		},
-	}
-</script>
diff --git a/pages/demo/storage.vue b/pages/demo/storage.vue
deleted file mode 100644
index ab3c1cf..0000000
--- a/pages/demo/storage.vue
+++ /dev/null
@@ -1,42 +0,0 @@
-<template>
-	<view class="container">
-		<u-navbar :is-fixed="false" :border-bottom="false" :is-back="true" back-icon-name="arrow-leftward"
-			back-icon-color="#fff" back-icon-size="35" :background="{ background: '#0BB9C8' }" title="Storage 操作"
-			title-color="#fff">
-		</u-navbar>
-		<view class="u-demo">
-			<view class="u-demo-wrap">
-				<view class="u-demo-title">演示效果</view>
-				<view class="u-demo-area u-flex u-row-center">
-					[ BladeX ] 的官网为:{{domain}}
-				</view>
-			</view>
-			<view class="u-config-wrap">
-				<view class="u-config-title u-border-bottom">参数操作</view>
-				<view class="u-config-item">
-					<view class="u-item-title">按钮点击</view>
-					<u-button @click="modifyStorage">修改变量</u-button>
-				</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	export default {
-		data() {
-			return {
-				domain: ''
-			}
-		},
-		onLoad() {
-			this.domain = uni.getStorageSync('domain');
-		},
-		methods: {
-			modifyStorage() {
-				uni.setStorageSync('domain', 'https://bladex.vip');
-				this.domain = uni.getStorageSync('domain');
-			}
-		},
-	}
-</script>
diff --git a/pages/demo/vuex.vue b/pages/demo/vuex.vue
deleted file mode 100644
index d61323c..0000000
--- a/pages/demo/vuex.vue
+++ /dev/null
@@ -1,41 +0,0 @@
-<template>
-	<view class="container">
-		<u-navbar :is-fixed="false" :border-bottom="false" :is-back="true" back-icon-name="arrow-leftward"
-			back-icon-color="#fff" back-icon-size="35" :background="{ background: '#0BB9C8' }" title="Vuex 操作"
-			title-color="#fff">
-		</u-navbar>
-		<view class="u-demo">
-			<view class="u-demo-wrap">
-				<view class="u-demo-title">演示效果</view>
-				<view class="u-demo-area u-flex u-row-center">
-					<!-- vuex已做过封装,可以直接使用state内的变量 -->
-					版本号为:{{version}}
-				</view>
-				<view class="u-demo-area u-flex u-row-center">
-					[ BladeX ] 的作者为:{{userInfo.nickName}}
-				</view>
-			</view>
-			<view class="u-config-wrap">
-				<view class="u-config-title u-border-bottom">参数操作</view>
-				<view class="u-config-item">
-					<view class="u-item-title">按钮点击</view>
-					<u-button @click="modifyVuex">修改变量</u-button>
-				</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	export default {
-		methods: {
-			// vuex已做过封装,可以直接this.$u.vuex(key, value)修改,无需引入
-			modifyVuex() {
-				// version不在lifeData,每次刷新会丢失
-				this.$u.vuex('version', '1.0.1');
-				// userInfo在lifeData,刷新重启会保留
-				this.$u.vuex('userInfo.nickName', '翼');
-			}
-		},
-	}
-</script>
diff --git a/pages/dispatch/dispatch.vue b/pages/dispatch/dispatch.vue
deleted file mode 100644
index 8b33dab..0000000
--- a/pages/dispatch/dispatch.vue
+++ /dev/null
@@ -1,568 +0,0 @@
-<template>
-
-	<view class="page-container" style="height: 100%; position: relative;">
-		<view class="head top-absolute">
-			<u-navbar :is-fixed="false" :border-bottom="false" :is-back="false" title=""
-				:background="{ background: '#0BB9C8' }">
-				<view class="nav-wrap">
-
-					<view style="position: relative;">
-
-						<view class="btn-return-box">
-							<view class="btn-return">
-								<i class="uni-btn-icon" @click="goReturnPage"
-									style="color: rgb(255, 255, 255); font-size: 27px;"></i>
-							</view>
-						</view>
-
-						<span class="header-title">调度指令</span>
-
-						<u-icon v-if="$store.state.UserData.rname[0].indexOf('保安') == -1" @click="goToAddPage" top='4'
-							class="header-add" name="plus" color="#fff">
-						</u-icon>
-
-					</view>
-
-				</view>
-			</u-navbar>
-		</view>
-		<view class="head">
-			<u-navbar :is-fixed="false" :border-bottom="false" :is-back="false" title=""
-				:background="{ background: '#0BB9C8' }">
-				<view class="nav-wrap">
-
-					<view style="position: relative;">
-
-						<view class="btn-return-box">
-							<view class="btn-return">
-								<i class="uni-btn-icon" @click="goReturnPage"
-									style="color: rgb(255, 255, 255); font-size: 27px;"></i>
-							</view>
-						</view>
-
-						<span class="header-title">调度指令</span>
-
-						<u-icon @click="goToAddPage" top='4' class="header-add" name="plus" color="#fff">
-						</u-icon>
-
-					</view>
-
-				</view>
-			</u-navbar>
-		</view>
-
-		<view class="wrapper">
-
-			<view class="body">
-
-				<view class="body-content">
-
-					<u-tabs :list="list" :is-scroll="false" :current="current" active-color="#14B9C8"
-						inactive-color="#595959" height="100" @change="change"></u-tabs>
-
-					<u-search v-model='keyValue' placeholder='请输入指令内容' shape="round" class="u-search"
-						input-align="center" height="70" @search='searchValue' @custom='searchValue' @clear='clearValue'
-						@change='changeValue'>
-					</u-search>
-
-					<view v-show="current == 0 && newsList.length > 0">
-						<view class="inTmain" v-for="(item,index) in newsList">
-							<u-card :title="item.content" @click="goDetail(item)">
-								<view class="" slot="body">
-									<view>
-										<view style="margin-bottom: 10px;" class="u-body-item-title u-line-2">
-											发送指令人:{{item.sendName}}</view>
-									</view>
-									<view>
-										<view class="u-body-item-title u-line-2">接受指令人:{{item.receiveName}}</view>
-									</view>
-								</view>
-								<view class="" slot="foot">
-									</u-icon>发送指令时间:{{item.sendTime}}</view>
-							</u-card>
-						</view>
-						<u-loadmore class='msg' :status="status" />
-					</view>
-
-					<view v-show="current == 1 && newsList.length > 0">
-						<view class="inTmain" v-for="(item,index) in newsList">
-							<u-card :title="item.content" @click="goDetail(item)">
-								<view class="" slot="body">
-									<view>
-										<view style="margin-bottom: 10px;" class="u-body-item-title u-line-2">
-											发送指令人:{{item.sendName}}</view>
-									</view>
-									<view>
-										<view class="u-body-item-title u-line-2">接受指令人:{{item.receiveName}}</view>
-									</view>
-								</view>
-								<view class="" slot="foot">
-									</u-icon>发送指令时间:{{item.sendTime}}</view>
-							</u-card>
-						</view>
-						<u-loadmore class='msg' :status="status" />
-					</view>
-
-					<view class="msg" v-show='newsList.length == 0'>
-						暂无数据
-					</view>
-
-				</view>
-
-			</view>
-
-		</view>
-	</view>
-
-</template>
-
-<script>
-	export default {
-		data() {
-			return {
-
-				list: [],
-
-				current: 0,
-
-				dataList: [],
-				newsList: [],
-
-				status: 'loadmore',
-				keyValue: '',
-
-				dataList: [],
-				newsList: [],
-				pagelist: 0,
-				pages: 0,
-				flag: true,
-
-				pullDown: false
-
-			};
-		},
-		onLoad() {
-
-			if (this.$store.state.UserData.rname[0] == '保安') {
-
-				this.list = [{
-					name: '接收指令查询'
-				}]
-				
-				this.getSend();
-
-			} else if (this.$store.state.UserData.rname[0] == '保安公司管理员') {
-
-				this.list = [{
-					name: '接收指令查询'
-				}]
-				
-				this.getSend();
-
-			} else {
-				this.list = [{
-					name: '下发指令查询'
-				}, {
-					name: '接收指令查询'
-				}]
-				
-				this.getReceive()
-			}
-
-		},
-		onReachBottom() {
-			var that = this;
-
-			if (that.flag == false) {
-				that.status = 'nomore';
-				return
-			}
-			// 后续将改为与后端联动
-			that.status = 'loading';
-
-			setTimeout(() => {
-				if (that.current == 0) {
-					that.getReceive();
-				} else {
-					that.getSend();
-				}
-			}, 1000);
-		},
-
-		onPullDownRefresh: function() {
-			var that = this;
-
-			this.pullDown = true;
-			this.pagelist = 0;
-			this.pages = 0;
-			this.flag = true;
-			this.dataList = [];
-			this.newsList = [];
-			this.status = 'loading';
-			this.keyValue = '';
-			setTimeout(() => {
-				if (that.current == 0) {
-					that.getReceive();
-				} else {
-					that.getSend();
-				}
-			}, 1000)
-
-		},
-		mounted() {
-		},
-		methods: {
-			getReceive() {
-				var that = this;
-
-				if (that.pagelist < that.pages || that.pagelist == 0) {
-					that.pagelist++
-				} else if (that.pagelist == that.pages) {
-					that.flag = false
-					that.status = 'nomore';
-					return
-				}
-
-				uni.request({
-					url: this.$store.state.piAPI + "/directive/page?sendDirectiveId=" + this.$store.state
-						.puserID,
-					method: "get",
-					data: {
-						current: that.pagelist,
-						size: 10
-					},
-					success: (res) => {
-						that.pages = res.data.data.pages;
-
-						var resdata = res.data.data.records;
-
-						if (this.pullDown == true) {
-							this.pullDown = false;
-							uni.stopPullDownRefresh();
-						}
-
-						if (resdata.length == 0) {
-							that.flag = false
-							that.status = 'nomore';
-							return
-						} else {
-							resdata.forEach(item => {
-								that.newsList.push(item)
-								that.dataList.push(item)
-							})
-						}
-
-						if (that.pagelist == that.pages) {
-							that.flag = false
-							that.status = 'nomore';
-							return
-						}
-
-					}
-				});
-			},
-			getSend() {
-				var that = this;
-
-				if (that.pagelist < that.pages || that.pagelist == 0) {
-					that.pagelist++
-				} else if (that.pagelist == that.pages) {
-					that.flag = false
-					that.status = 'nomore';
-					return
-				}
-
-				uni.request({
-					url: this.$store.state.piAPI + "/directive/page?receiveDirectiveIds=" + this.$store.state.puserID,
-					method: "get",
-					data: {
-						current: that.pagelist,
-						size: 10
-					},
-					success: (res) => {
-						that.pages = res.data.data.pages;
-
-						var resdata = res.data.data.records;
-
-						if (this.pullDown == true) {
-							this.pullDown = false;
-							uni.stopPullDownRefresh();
-						}
-
-						if (resdata.length == 0) {
-							that.flag = false
-							that.status = 'nomore';
-							return
-						} else {
-							resdata.forEach(item => {
-								that.newsList.push(item)
-								that.dataList.push(item)
-							})
-						}
-
-						if (that.pagelist == that.pages) {
-							that.flag = false
-							that.status = 'nomore';
-							return
-						}
-
-					}
-				});
-			},
-			goDetail(item) {
-				uni.navigateTo({
-					url: './lookDetail?detailData=' + JSON.stringify(item)
-				});
-			},
-			change(index) {
-				if (this.current == index) return;
-				this.dataList = [];
-				this.newsList = [];
-				this.pagelist = 0;
-				this.pages = 0;
-				this.flag = true;
-				this.current = index;
-				if (index == 0) {
-					this.getReceive();
-				} else {
-					this.getSend();
-				}
-			},
-			searchValue(value) {
-				var that = this;
-				var str = value.replace(/\s*/g, "");
-				if (str == '') {
-					return
-				} else {
-					that.newsList = [];
-
-					if (that.current == 0) {
-						uni.request({
-							url: this.$store.state.piAPI + "/directive/page?receiveDirectiveIds=" + this.$store
-								.state
-								.puserID,
-							method: "get",
-							data: {
-								current: 1,
-								size: 999999,
-								content: str
-							},
-							success: (res) => {
-								var resdata = res.data.data.records;
-
-								resdata.forEach(item => {
-									that.newsList.push(item)
-								})
-
-							}
-						});
-					} else {
-						uni.request({
-							url: this.$store.state.piAPI + "/directive/page?sendDirectiveId=" + this.$store.state
-								.puserID,
-							method: "get",
-							data: {
-								current: 1,
-								size: 999999,
-								content: str
-							},
-							success: (res) => {
-								var resdata = res.data.data.records;
-
-								resdata.forEach(item => {
-									that.newsList.push(item)
-								})
-
-							}
-						});
-					}
-
-					that.flag = false
-					that.status = 'nomore';
-				}
-			},
-			clearValue() {
-				this.keyValue = ''
-				this.newsList = [];
-
-				this.dataList.forEach(item => {
-					this.newsList.push(item)
-				})
-
-				if (this.pagelist < this.pages) {
-					this.flag = true;
-					this.status = 'loading';
-				} else {
-					this.flag = false;
-					this.status = 'nomore';
-				}
-			},
-			changeValue(value) {
-				if (value == '') {
-					this.newsList = [];
-
-					this.dataList.forEach(item => {
-						this.newsList.push(item)
-					})
-
-					if (this.pagelist < this.pages) {
-						this.flag = true;
-						this.status = 'loading';
-					} else {
-						this.flag = false;
-						this.status = 'nomore';
-					}
-				}
-			},
-			goReturnPage() {
-				uni.switchTab({
-					url: '/pages/home/home'
-				});
-			},
-			goToAddPage() {
-				uni.navigateTo({
-					url: './imgissue'
-				});
-			},
-		}
-	};
-</script>
-
-<style lang="scss">
-	.page-container {
-		position: fixed;
-		display: block;
-		width: 100%;
-		max-height: 100vh;
-
-
-
-		.head {
-			position: relative;
-
-
-			width: 100%;
-
-
-			.nav-wrap {
-				width: 100%;
-				height: 44px;
-				line-height: 30px;
-				padding: 7px 3px;
-				height: calc(44px + constant(safe-area-inset-top));
-				height: calc(44px + env(safe-area-inset-top));
-				color: rgb(255, 255, 255);
-
-				.btn-return-box {
-					display: flex;
-					align-items: center;
-					font-size: 16px;
-					box-sizing: border-box;
-
-					.btn-return {
-						position: relative;
-						width: auto;
-						margin: 0 2px;
-						word-break: keep-all;
-						white-space: pre;
-						cursor: pointer;
-					}
-				}
-
-				.header-title {
-					position: absolute;
-					top: 0;
-					left: 0;
-					right: 0;
-					bottom: 0;
-					margin: auto;
-					width: 60%;
-					font-weight: 700;
-					line-height: 30px;
-					font-size: 16px;
-					opacity: 1;
-					text-overflow: ellipsis;
-					text-align: center;
-					min-width: 1em;
-				}
-
-				.header-add {
-					position: absolute;
-					top: 0;
-					left: auto;
-					right: 10px;
-					bottom: 0;
-					margin: auto;
-					display: inline-block;
-					font: normal normal normal 14px/1 unibtn;
-					text-rendering: auto;
-					-webkit-font-smoothing: antialiased;
-					font-size: 24px;
-				}
-			}
-
-		}
-
-		.top-absolute {
-			position: fixed;
-			top: 0;
-			left: 0;
-			z-index: 101;
-		}
-
-		.wrapper {
-
-			width: 100%;
-			display: block;
-			height: calc(100% - 44px);
-			height: calc(100% - 44px - constant(safe-area-inset-top));
-			height: calc(100% - 44px - env(safe-area-inset-top));
-
-			.body {
-				width: 100%;
-				height: 100%;
-				overflow-x: hidden;
-				overflow-y: auto;
-
-				.body-content {
-					height: auto;
-
-				}
-
-			}
-
-		}
-	}
-
-	.u-card-wrap {
-		background-color: $u-bg-color;
-		padding: 1px;
-	}
-
-	.u-body-item {
-		font-size: 32rpx;
-		color: #333;
-		padding: 20rpx 10rpx;
-	}
-
-	.u-body-item image {
-		width: 120rpx;
-		flex: 0 0 120rpx;
-		height: 120rpx;
-		border-radius: 8rpx;
-		margin-left: 12rpx;
-	}
-
-	.u-search {
-		padding: 20rpx 30rpx 0 30rpx;
-	}
-
-	.inTmain {}
-
-	.msg {
-		height: 72rpx;
-		line-height: 72rpx;
-		text-align: center;
-		color: #999;
-	}
-</style>
diff --git a/pages/dispatch/imgissue.vue b/pages/dispatch/imgissue.vue
deleted file mode 100644
index 8c4db3a..0000000
--- a/pages/dispatch/imgissue.vue
+++ /dev/null
@@ -1,339 +0,0 @@
-<template>
-	<view class="container">
-
-		<view class="group-chat-box">
-
-			<u-form :model="form" ref="uForm">
-
-				<u-form-item label-width='132' prop="content" label="指令内容" :required="true">
-					<u-input type='textarea' v-model="form.content" placeholder="请输入指令内容" />
-				</u-form-item>
-
-				<u-form-item label-width='158' prop="recipientText" label="指令接收人" :required="true">
-
-					<u-input type='textarea' v-model="form.recipientPeople" placeholder="请选择指令接收人"
-						@click="recipientClick" autoHeight  />
-
-					<!-- <u-button slot="right" type="success" size="mini" @click="recipientClick">选择接收人</u-button> -->
-
-					<u-popup :closeable="true" v-model="recipientShow" mode="bottom" height="50%" border-radius="14">
-
-						<view>
-
-							<u-checkbox-group v-show="recipientList.length > 0" @change="checkboxGroupChange"
-								:wrap='true' :size="40">
-
-								<u-checkbox v-model="item.checked" v-for="(item, index) in recipientList" :key="index"
-									:name="item.id" shape="circle"
-									style="padding: 0 40rpx; height: 92rpx; position: relative; box-sizing: border-box;">
-
-									<view style="margin-left: 22rpx">
-										{{item.real_name}}
-									</view>
-
-								</u-checkbox>
-
-							</u-checkbox-group>
-
-							<view style=" height: 92rpx; padding: 0 40rpx;" v-show="recipientList.length == 0">
-
-								暂无数据
-
-							</view>
-
-						</view>
-
-					</u-popup>
-
-				</u-form-item>
-
-				<u-form-item label-width='184' label="指令相关图片" class='imgissue-upload'>
-					<seeImgs :imgs="imgs" :videos="[]" @del="delImg" :type="'imgs'"></seeImgs>
-					<image style="width: 4rem; height: 4rem; display: block;" @tap="takePhoto"
-						src="../../static/images/upload.png" mode=""></image>
-				</u-form-item>
-
-			</u-form>
-
-		</view>
-
-		<view class="establish-box">
-
-			<u-button class="submit" type="primary" @click="initiateClick">发送</u-button>
-
-		</view>
-
-		<view>
-			<u-toast ref="uToast" />
-		</view>
-
-	</view>
-</template>
-
-<script>
-	import seeImgs from '../../components/seeImges/seeImges.vue';
-	export default {
-		components: {
-			seeImgs
-		},
-		data() {
-			return {
-				recipientShow: false,
-				recipientList: [],
-				form: {
-					content: '',
-					recipient: '',
-					recipientData: [],
-					recipientPeople: ''
-				},
-				rules: {
-
-					content: [{
-						min: 5,
-						required: true,
-						message: '指令内容不能少于5个字',
-						trigger: ['change', 'blur'],
-					}],
-
-				},
-				imgs: [],
-			};
-		},
-		onLoad() {},
-		onReachBottom() {
-
-		},
-		mounted() {},
-		onReady() {
-			this.$refs.uForm.setRules(this.rules);
-		},
-		methods: {
-			recipientClick() {
-				if (this.recipientList.length > 0) {
-					this.recipientShow = true;
-					return;
-				}
-
-				uni.request({
-					url: this.$store.state.piAPI + "/blade-user/seleL",
-					method: "get",
-					data: {
-						type: 1,
-						jurisdiction: this.$store.state
-							.UserData.jurisdiction,
-					},
-					success: (res) => {
-						this.recipientList = []
-
-						res.data.data.forEach(item => {
-							var flag = true
-
-							if (this.recipientList.length > 0) {
-								this.recipientList.forEach(it => {
-									if (item.id == it.id) flag = false
-								})
-							}
-
-							if (flag == true) {
-								if (item.id != this.$store.state
-									.UserData.user_id
-								) {
-									item.checked = false;
-									this.recipientList.push(item)
-								}
-							}
-
-						})
-
-						this.recipientShow = true;
-					}
-				});
-
-			},
-
-			initiateClick() {
-				var imgurl = '';
-				this.imgs.forEach((item, index) => {
-					if (index == this.imgs.length - 1) {
-						imgurl += item.src
-					} else {
-						imgurl += item.src + ','
-					}
-				})
-				this.$refs.uForm.validate(valid => {
-					if (valid) {
-
-						if (this.form.recipientData.length == 0) {
-							this.$refs.uToast.show({
-								title: '请最少选择一个接收人',
-							})
-							return
-						}
-
-						var str = '';
-
-						this.form.recipientData.forEach(item => {
-							str += item + ','
-						})
-
-						str = str.substr(0, str.length - 1);
-
-						uni.request({
-							url: this.$store.state.piAPI + "/directive/saveDirectiveAndFile",
-							method: "post",
-							data: {
-								// 接收
-								receiveDirectiveIds: str,
-								// 发送
-								sendDirectiveId: this.$store.state
-									.UserData.user_id,
-								content: this.form.content,
-								url: imgurl
-
-							},
-							success: (res) => {
-								if (res.data.msg.indexOf('成功') != -1) {
-									this.$refs.uToast.show({
-										title: '指令下发成功',
-										type: 'success',
-										url: '/pages/dispatch/dispatch'
-									})
-								}
-							}
-						});
-					} else {
-						console.log('验证失败');
-					}
-				});
-			},
-			//图片删除
-			delImg(index) {
-				this.imgs.splice(index, 1);
-			},
-			//图片上传
-			takePhoto() {
-				var that = this;
-				uni.chooseImage({
-					count: 3, //可选择数量,默认9
-					sizeType: ['compressed', 'original'], //上传压缩图,原图
-					sourceType: ['album', 'camera'], //从相册选择或从使用相机
-					success: async (res) => {
-						for (var i = 0; i < res.tempFiles.length; i++) {
-							if (res.tempFiles[i].size > 10 * 1024 * 1000) { //上传图片大小限制
-								uni.showToast({
-									title: "照片大小不能超过10MB",
-									icon: "none"
-								})
-								return
-							}
-						}
-						var tempFilePath = res.tempFilePaths;
-						// try {
-						uni.showLoading({
-							title: "上传中...",
-							mask: true
-						})
-						var that = this;
-						// 循环调用uni.uploadFile ,因微信小程序只支持单文件上传
-						for (var i = 0; i < tempFilePath.length; i++) {
-							uni.uploadFile({
-								// url: 'https://web.byisf.com/api/blade-jfpts/depl/put-depl', //仅为示例,非真实的接口地址
-								url: this.$store.state.piAPI +
-									'/blade-resource/oss/endpoint/put-file-app',
-								filePath: tempFilePath[i],
-								name: 'file',
-								formData: {
-									'user': 'test' // 上传附带参数
-								},
-								success: (data) => {
-									console.log(data, JSON.parse(data.data).data)
-									uni.showToast({
-										title: '上传图片成功!',
-										duration: 1000
-									});
-									// 根据接口具体返回格式   赋值具体对应url
-									that.imgs.push({
-										id: i,
-										src: JSON.parse(data.data).data
-									})
-								}
-							});
-						}
-					}
-				});
-			},
-			checkboxGroupChange(e) {
-				var that = this
-
-				this.form.recipientData = e
-
-				var str = ""
-				var num = 0
-
-				that.form.recipientData.forEach((item, index) => {
-					that.recipientList.forEach((it, index) => {
-						if (item == it.id) {
-							if (num > 0) {
-								str += '、';
-								str += it.real_name;
-							} else {
-								str += it.real_name
-							}
-							num += 1
-							return
-						}
-					})
-				})
-
-				this.form.recipientPeople = str
-
-			},
-
-		}
-	};
-</script>
-
-
-<style lang="scss">
-	.submit {
-		border: none;
-		width: 94%;
-		height: 86rpx;
-		line-height: 86rpx;
-		box-sizing: border-box;
-		border-radius: 15rpx;
-		color: #ffffff;
-		font-size: 38rpx;
-
-	}
-
-	.container {
-		height: 100%;
-
-		.group-chat-box {
-			height: calc(100% - 116rpx);
-			padding: 0 36rpx;
-			box-sizing: border-box;
-			overflow-y: auto;
-		}
-
-		.establish-box {
-			position: relative;
-			height: 116rpx;
-			background: #fff;
-			text-align: center;
-
-			uni-button {
-				margin: 0;
-				position: absolute;
-				top: 0;
-				left: 0;
-				right: 0;
-				bottom: 0;
-				margin: auto;
-			}
-
-		}
-
-	}
-</style>
diff --git a/pages/dispatch/lookDetail.vue b/pages/dispatch/lookDetail.vue
deleted file mode 100644
index 32039b2..0000000
--- a/pages/dispatch/lookDetail.vue
+++ /dev/null
@@ -1,70 +0,0 @@
-<template>
-	<view class="container">
-		<u-form :model="detailData" ref="uForm" class="receive-detail">
-			
-			<u-form-item label-width='132' label="指令内容">
-				<span>{{ detailData.content }}</span>
-			</u-form-item>
-			
-			<u-form-item label-width='158' label="发送指令人">
-				<span>{{ detailData.sendName }}</span>
-			</u-form-item>
-			
-			<u-form-item label-width='158' label="接受指令人">
-				<span>{{ detailData.receiveName }}</span>
-			</u-form-item>
-			
-			<u-form-item label-width='184' label="发送指令时间">
-				<span>{{ detailData.sendTime }}</span>
-			</u-form-item>
-	
-			<u-form-item label-width='184' label="指令相关图片">
-				<img :src="detailData.url" alt="">
-			</u-form-item>
-			
-		</u-form>
-	</view>
-</template>
-
-<script>
-	export default {
-		data() {
-			return {
-				list: [{
-						name: '注册信息'
-					},
-					{
-						name: '保安员管理'
-					}
-				],
-				current: 0,
-				detailData: {},
-			};
-		},
-		onLoad(event) {
-			var that = this;
-			this.detailData = JSON.parse(decodeURIComponent(event.detailData));
-			console.log(this.detailData)
-		},
-		onReachBottom() {
-
-		},
-		mounted() {
-
-		},
-		methods: {
-
-
-		}
-	};
-</script>
-
-<style lang="scss">
-	.receive-detail {
-		padding: 0 30rpx;
-
-		span {
-			color: #999;
-		}
-	}
-</style>
diff --git a/pages/examine/addpeople.vue b/pages/examine/addpeople.vue
deleted file mode 100644
index 610d1a9..0000000
--- a/pages/examine/addpeople.vue
+++ /dev/null
@@ -1,323 +0,0 @@
-<template>
-	<view class="container">
-		<view class="group-chat-box">
-			<u-form :model="form" ref="uForm">
-
-				<u-form-item label-width='132' label="检查人">
-					<u-input type='text' disabled="disabled" v-model="createData.nick_name" placeholder="请输入检查内容" />
-				</u-form-item>
-
-				<u-form-item label-width='158' label="检查人单位">
-					<u-input type='text' disabled="disabled" v-model="createData.deptName" placeholder="请输入检查内容" />
-				</u-form-item>
-
-				<u-form-item label-width='158' prop="peopleText" label="保安员姓名" :required="true">
-
-					<u-input v-model="form.peopleText" type="select" placeholder="请选择保安员" :border="false"
-						@click="peopleClick" />
-					<u-select v-model="peopleShow" mode="mutil-column-auto" :list="peopleList" @confirm="peopleConfirm">
-					</u-select>
-
-				</u-form-item>
-
-
-				<u-form-item label-width='132' prop="content" label="检查内容" :required="true">
-					<u-input type='textarea' v-model="form.content" placeholder="请输入检查内容" />
-				</u-form-item>
-
-				<u-form-item label-width='132' prop="outcome" label="检查结果" :required="true">
-					<u-input type='textarea' v-model="form.outcome" placeholder="请输入检查结果" />
-				</u-form-item>
-
-				<u-form-item label-width='132' label="附属图片" class='imgissue-upload'>
-					<seeImgs :imgs="imgs" :videos="[]" @del="delImg" :type="'imgs'"></seeImgs>
-					<image style="width: 4rem; height: 4rem; display: block;" @tap="takePhoto"
-						src="../../static/images/upload.png" mode=""></image>
-				</u-form-item>
-
-			</u-form>
-
-		</view>
-		<view class="establish-box">
-			<u-button class="submit" type="primary" @click="initiateClick">发送</u-button>
-		</view>
-		<view>
-			<u-toast ref="uToast" />
-		</view>
-	</view>
-</template>
-
-<script>
-	import seeImgs from '../../components/seeImges/seeImges.vue';
-	export default {
-		components: {
-			seeImgs
-		},
-		data() {
-			return {
-
-				peopleShow: false,
-				peopleList: [],
-
-				form: {
-					content: '',
-					outcome: '',
-					people: '',
-					peopleText: '',
-					unitText: '',
-				},
-				rules: {
-					content: [{
-						min: 5,
-						required: true,
-						message: '检查内容不能少于5个字',
-						trigger: ['change', 'blur'],
-					}],
-
-					outcome: [{
-						min: 2,
-						required: true,
-						message: '检查结果不能少于2个字',
-						trigger: ['change', 'blur'],
-					}],
-
-					peopleText: [{
-						required: true,
-						message: '请选择保安员',
-						trigger: ['change', 'blur'],
-					}],
-				},
-				imgs: [],
-				createData: null,
-			};
-		},
-		onLoad() {
-			this.createData = this.$store.state.UserData
-		},
-		onReachBottom() {
-
-		},
-		mounted() {},
-		onReady() {
-			this.$refs.uForm.setRules(this.rules);
-
-
-		},
-		methods: {
-
-			peopleClick() {
-				console.log(123456)
-				uni.request({
-					url: this.$store.state.piAPI + "/blade-user/seleL",
-					method: "get",
-					data: {
-						type: 5,
-						jurisdiction: this.$store.state
-							.UserData.jurisdiction,
-					},
-					success: (res) => {
-						this.peopleList = []
-
-						res.data.data.forEach(item => {
-
-							if (item.id != this.$store.state
-								.UserData.user_id
-							) {
-
-								item.value = item.id
-
-								item.label = item.real_name
-
-								this.peopleList.push(item)
-							}
-
-						})
-
-						this.peopleShow = true;
-					}
-				});
-
-			},
-
-			peopleConfirm(e) {
-				this.form.people = e[0].value
-				this.form.peopleText = e[0].label
-			},
-
-			getCurrentTime() {
-				let date = new Date();
-				let dateYear = date.getFullYear(); //获取年 
-				let dateMonth = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : (date.getMonth() + 1); //获取月  
-				let dateDate = date.getDate() < 10 ? '0' + date.getDate() : date.getDate(); //获取当日
-				let dateDay = date.getDay(); //获取当日星期数
-				let dateHours = date.getHours() < 10 ? '0' + date.getHours() : date.getHours(); //获取小时
-				let dateMinutes = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes(); //获取分钟
-				let dateSeconds = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds(); //获取秒
-
-				return dateYear + '-' + dateMonth + '-' + dateDate + ' ' + dateHours + ':' + dateMinutes + ':' +
-					dateSeconds
-			},
-
-			initiateClick() {
-				var imgurl = '';
-				this.imgs.forEach((item, index) => {
-					if (index == this.imgs.length - 1) {
-						imgurl += item.src
-					} else {
-						imgurl += item.src + ','
-					}
-				})
-
-				this.$refs.uForm.validate(valid => {
-					if (valid) {
-						let d = {
-							examinerId: this.createData.Id,
-							examinerDeptId: this.createData.dept_id,
-							// realname: this.form.peopleText,
-							// sname: this.form.unitText,
-							securityId: this.form.people,
-							// reviewtime: this.getCurrentTime(),
-							content: this.form.content,
-							result: this.form.outcome,
-							url: imgurl
-						};
-						uni.request({
-							url: this.$store.state.piAPI + "/seinspect/save",
-							method: "post",
-							data: d,
-							success: (res) => {
-								if (res.data.msg.indexOf('成功') != -1) {
-									this.$refs.uToast.show({
-										title: '新增人员检查成功',
-										type: 'success',
-										url: '/pages/examine/examine'
-									})
-								}
-							}
-						});
-					} else {
-						console.log('验证失败');
-					}
-				});
-			},
-			//图片删除
-			delImg(index) {
-				this.imgs.splice(index, 1);
-			},
-			//图片上传
-			takePhoto() {
-				var that = this;
-				uni.chooseImage({
-					count: 3, //可选择数量,默认9
-					sizeType: ['compressed', 'original'], //上传压缩图,原图
-					sourceType: ['album', 'camera'], //从相册选择或从使用相机
-					success: async (res) => {
-
-						for (var i = 0; i < res.tempFiles.length; i++) {
-							if (res.tempFiles[i].size > 10 * 1024 * 1000) { //上传图片大小限制
-								uni.showToast({
-									title: "照片大小不能超过10MB",
-									icon: "none"
-								})
-								return
-							}
-						}
-
-						var tempFilePath = res.tempFilePaths;
-						// try {
-						uni.showLoading({
-							title: "上传中...",
-							mask: true
-						})
-						var that = this;
-						// 循环调用uni.uploadFile ,因微信小程序只支持单文件上传
-						for (var i = 0; i < tempFilePath.length; i++) {
-							uni.uploadFile({
-								// url: 'https://web.byisf.com/api/blade-jfpts/depl/put-depl', //仅为示例,非真实的接口地址
-								url: this.$store.state.piAPI +
-									'/blade-resource/oss/endpoint/put-file-app',
-								filePath: tempFilePath[i],
-								name: 'file',
-								formData: {
-									'user': 'test' // 上传附带参数
-								},
-								success: (data) => {
-
-									function isJSON_test(str) {
-										if (typeof str == 'string') {
-											try {
-												var obj = JSON.parse(str);
-												return obj.data;
-											} catch (e) {
-												return str;
-											}
-										}
-										console.log('It is not a string!')
-									}
-
-									uni.showToast({
-										title: '上传图片成功!',
-										duration: 1000
-									});
-
-									// 根据接口具体返回格式   赋值具体对应url
-									that.imgs.push({
-										id: i,
-										src: isJSON_test(data.data)
-									})
-
-								}
-							});
-						}
-
-					}
-				});
-			},
-		}
-	};
-</script>
-
-
-<style lang="scss">
-	.submit {
-		border: none;
-		width: 94%;
-		height: 86rpx;
-		line-height: 86rpx;
-		box-sizing: border-box;
-		border-radius: 15rpx;
-		color: #ffffff;
-		font-size: 38rpx;
-
-	}
-
-	.container {
-		height: 100%;
-
-		.group-chat-box {
-			height: calc(100% - 116rpx);
-			padding: 0 36rpx;
-			box-sizing: border-box;
-			overflow-y: auto;
-		}
-
-		.establish-box {
-			position: relative;
-			height: 116rpx;
-			background: #fff;
-			text-align: center;
-
-			uni-button {
-				margin: 0;
-				position: absolute;
-				top: 0;
-				left: 0;
-				right: 0;
-				bottom: 0;
-				margin: auto;
-			}
-
-		}
-
-	}
-</style>
diff --git a/pages/examine/addunit.vue b/pages/examine/addunit.vue
deleted file mode 100644
index e8200b2..0000000
--- a/pages/examine/addunit.vue
+++ /dev/null
@@ -1,343 +0,0 @@
-<template>
-	<view class="container">
-		<view class="group-chat-box">
-			<u-form :model="form" ref="uForm">
-
-				<u-form-item label-width='132' label="检查人">
-					<u-input type='text' disabled="disabled" v-model="createData.nick_name" placeholder="请输入检查内容" />
-				</u-form-item>
-
-				<u-form-item label-width='158' label="检查人单位">
-					<u-input type='text' disabled="disabled" v-model="createData.deptName" placeholder="请输入检查内容" />
-				</u-form-item>
-
-				<u-form-item label-width='158' prop="unit" label="被检查单位" :required="true">
-
-					<u-input v-model="form.unitText" type="select" placeholder="请选择被检查单位" :border="false"
-						@click="unitClick" />
-					<u-select v-model="unitShow" mode="mutil-column-auto" :list="unitList" @confirm="unitConfirm">
-					</u-select>
-
-				</u-form-item>
-
-
-				<u-form-item label-width='132' prop="content" label="检查内容" :required="true">
-					<u-input type='textarea' v-model="form.content" placeholder="请输入检查内容" />
-				</u-form-item>
-
-				<u-form-item label-width='132' prop="outcome" label="检查结果" :required="true">
-					<u-input type='textarea' v-model="form.outcome" placeholder="请输入检查结果" />
-				</u-form-item>
-
-				<u-form-item label-width='132' label="附属图片" class='imgissue-upload'>
-					<seeImgs :imgs="imgs" :videos="[]" @del="delImg" :type="'imgs'"></seeImgs>
-					<image style="width: 4rem; height: 4rem; display: block;" @tap="takePhoto"
-						src="../../static/images/upload.png" mode=""></image>
-				</u-form-item>
-
-			</u-form>
-		</view>
-		<view class="establish-box">
-			<u-button class="submit" type="primary" @click="initiateClick">发送</u-button>
-		</view>
-		<view>
-			<u-toast ref="uToast" />
-		</view>
-	</view>
-</template>
-
-<script>
-	import seeImgs from '../../components/seeImges/seeImges.vue';
-	export default {
-		components: {
-			seeImgs
-		},
-		data() {
-			return {
-
-				unitShow: false,
-				unitList: [],
-
-				form: {
-					content: '',
-					outcome: '',
-					unit: '',
-					unitText: ''
-				},
-				rules: {
-					content: [{
-						min: 5,
-						required: true,
-						message: '检查内容不能少于5个字',
-						trigger: ['change', 'blur'],
-					}],
-
-					outcome: [{
-						min: 2,
-						required: true,
-						message: '检查结果不能少于2个字',
-						trigger: ['change', 'blur'],
-					}],
-
-					unit: [{
-						required: true,
-						message: '请选择被检查单位',
-						trigger: ['change', 'blur'],
-					}],
-				},
-				imgs: [],
-				createData: null,
-			};
-		},
-		onLoad() {
-			this.createData = this.$store.state.UserData
-
-		},
-		onReachBottom() {
-
-		},
-		mounted() {},
-		onReady() {
-			this.$refs.uForm.setRules(this.rules);
-
-
-		},
-		methods: {
-
-			unitClick() {
-				uni.request({
-					url: this.$store.state.piAPI + "/blade-system/dept/security_lazy-tree",
-					method: "get",
-					data: {
-						jurisdiction: this.$store.state
-							.UserData.jurisdiction,
-					},
-					success: (res) => {
-						this.unitList = []
-
-						res.data.data.forEach(item => {
-							var data = {}
-
-							data.value = item.id
-
-							data.label = item.title
-
-							if (item.children != undefined) {
-								data.children = []
-
-								item.children.forEach(chi => {
-									var ch = {}
-
-									ch.value = chi.id
-
-									ch.label = chi.title
-
-									data.children.push(ch)
-								})
-							} else {
-								data.children = [{
-									value: 112233,
-									label: "暂无数据"
-								}]
-							}
-
-							this.unitList.push(data)
-						})
-						// console.log(this.unitList)
-
-						this.unitShow = true;
-
-					}
-				});
-
-			},
-
-			unitConfirm(e) {
-				this.form.unit = e[1].value
-				this.form.unitText = e[1].label
-
-			},
-
-			getCurrentTime() {
-				let date = new Date();
-				let dateYear = date.getFullYear(); //获取年 
-				let dateMonth = date.getMonth() + 1 < 10 ? '0' + date.getMonth() + 1 : date.getMonth() + 1; //获取月  
-				let dateDate = date.getDate() < 10 ? '0' + date.getDate() : date.getDate(); //获取当日
-				let dateDay = date.getDay(); //获取当日星期数
-				let dateHours = date.getHours() < 10 ? '0' + date.getHours() : date.getHours(); //获取小时
-				let dateMinutes = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes(); //获取分钟
-				let dateSeconds = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds(); //获取秒
-
-				return dateYear + '-' + dateMonth + '-' + dateDate + ' ' + dateHours + ':' + dateMinutes + ':' +
-					dateSeconds
-			},
-
-			initiateClick() {
-				var imgurl = '';
-				this.imgs.forEach((item, index) => {
-					if (index == this.imgs.length - 1) {
-						imgurl += item.src
-					} else {
-						imgurl += item.src + ','
-					}
-				})
-				this.$refs.uForm.validate(valid => {
-					if (valid && this.form.unit != 112233) {
-						let d = {
-							// name: this.createData.nick_name,
-							// deptname: this.createData.deptName,
-							// sname: this.form.unitText,
-							// reviewtime: this.getCurrentTime(),
-							// insid: this.form.content,
-							// results: this.form.outcome,
-							// url: imgurl
-							examinerId: this.createData.Id,
-							examinerDeptId: this.createData.dept_id,
-							reviewedDeptId: this.form.unit,
-							// reviewtime: this.getCurrentTime(),
-							insid: this.form.content,
-							results: this.form.outcome,
-							url: imgurl
-						};
-						console.log(d, "dddddddddddddddddd")
-						uni.request({
-							url: this.$store.state.piAPI + "/coinspect/save",
-							method: "post",
-							data: d,
-							success: (res) => {
-								if (res.data.msg.indexOf('成功') != -1) {
-									this.$refs.uToast.show({
-										title: '新增单位检查成功',
-										type: 'success',
-										url: '/pages/examine/examine'
-									})
-								}
-							}
-						});
-					} else {
-						console.log('验证失败');
-					}
-				});
-			},
-			//图片删除
-			delImg(index) {
-				this.imgs.splice(index, 1);
-			},
-			//图片上传
-			takePhoto() {
-				var that = this;
-				uni.chooseImage({
-					count: 3, //可选择数量,默认9
-					sizeType: ['compressed', 'original'], //上传压缩图,原图
-					sourceType: ['album', 'camera'], //从相册选择或从使用相机
-					success: async (res) => {
-
-						for (var i = 0; i < res.tempFiles.length; i++) {
-							if (res.tempFiles[i].size > 10 * 1024 * 1000) { //上传图片大小限制
-								uni.showToast({
-									title: "照片大小不能超过10MB",
-									icon: "none"
-								})
-								return
-							}
-						}
-
-						var tempFilePath = res.tempFilePaths;
-						// try {
-						uni.showLoading({
-							title: "上传中...",
-							mask: true
-						})
-
-						var that = this;
-
-						// 循环调用uni.uploadFile ,因微信小程序只支持单文件上传
-						for (var i = 0; i < tempFilePath.length; i++) {
-							uni.uploadFile({
-								// url: 'https://web.byisf.com/api/blade-jfpts/depl/put-depl', //仅为示例,非真实的接口地址
-								url: this.$store.state.piAPI +
-									'/blade-resource/oss/endpoint/put-file-app',
-								filePath: tempFilePath[i],
-								name: 'file',
-								formData: {
-									'user': 'test' // 上传附带参数
-								},
-								success: (data) => {
-
-									function isJSON_test(str) {
-										if (typeof str == 'string') {
-											try {
-												var obj = JSON.parse(str);
-												return obj.data;
-											} catch (e) {
-												return str;
-											}
-										}
-										console.log('It is not a string!')
-									}
-
-									uni.showToast({
-										title: '上传图片成功!',
-										duration: 1000
-									});
-
-									// 根据接口具体返回格式   赋值具体对应url
-									that.imgs.push({
-										id: i,
-										src: isJSON_test(data.data)
-									})
-								}
-							});
-						}
-
-					}
-				});
-			},
-		}
-	};
-</script>
-
-
-<style lang="scss">
-	.submit {
-		border: none;
-		width: 94%;
-		height: 86rpx;
-		line-height: 86rpx;
-		box-sizing: border-box;
-		border-radius: 15rpx;
-		color: #ffffff;
-		font-size: 38rpx;
-
-	}
-
-	.container {
-		height: 100%;
-
-		.group-chat-box {
-			height: calc(100% - 116rpx);
-			padding: 0 36rpx;
-			box-sizing: border-box;
-			overflow-y: auto;
-		}
-
-		.establish-box {
-			position: relative;
-			height: 116rpx;
-			background: #fff;
-			text-align: center;
-
-			uni-button {
-				margin: 0;
-				position: absolute;
-				top: 0;
-				left: 0;
-				right: 0;
-				bottom: 0;
-				margin: auto;
-			}
-
-		}
-
-	}
-</style>
diff --git a/pages/examine/examine.vue b/pages/examine/examine.vue
deleted file mode 100644
index 39bf787..0000000
--- a/pages/examine/examine.vue
+++ /dev/null
@@ -1,573 +0,0 @@
-<template>
-
-	<view class="page-container" style="height: 100%; position: relative;">
-		<view class="head top-absolute">
-			<u-navbar :is-fixed="false" :border-bottom="false" :is-back="false" title=""
-				:background="{ background: '#0BB9C8' }">
-				<view class="nav-wrap">
-
-					<view style="position: relative;">
-
-						<view class="btn-return-box">
-							<view class="btn-return">
-								<i class="uni-btn-icon" @click="goReturnPage"
-									style="color: rgb(255, 255, 255); font-size: 27px;"></i>
-							</view>
-						</view>
-
-						<span class="header-title">现场检查</span>
-
-						<u-icon v-if="$store.state.UserData.rname[0].indexOf('保安') == -1" @click="goToAddPage" top='4'
-							class="header-add" name="plus" color="#fff">
-						</u-icon>
-
-					</view>
-
-				</view>
-			</u-navbar>
-		</view>
-		<view class="head">
-			<u-navbar :is-fixed="false" :border-bottom="false" :is-back="false" title=""
-				:background="{ background: '#0BB9C8' }">
-				<view class="nav-wrap">
-
-					<view style="position: relative;">
-
-						<view class="btn-return-box">
-							<view class="btn-return">
-								<i class="uni-btn-icon" @click="goReturnPage"
-									style="color: rgb(255, 255, 255); font-size: 27px;"></i>
-							</view>
-						</view>
-
-						<span class="header-title">现场检查</span>
-
-						<u-icon @click="goToAddPage" top='4' class="header-add" name="plus" color="#fff">
-						</u-icon>
-
-					</view>
-
-				</view>
-			</u-navbar>
-		</view>
-
-		<view class="wrapper">
-
-			<view class="body">
-
-				<view class="body-content">
-
-					<u-tabs :list="list" :is-scroll="false" :current="current" active-color="#14B9C8"
-						inactive-color="#595959" height="100" @change="change"></u-tabs>
-
-					<u-search v-show="current == 0" v-model='keyValue' placeholder='请输入保安员姓名' shape="round"
-						class="u-search" input-align="center" height="70" @search='searchValue' @custom='searchValue'
-						@clear='clearValue' @change='changeValue'>
-					</u-search>
-
-					<u-search v-show="current == 1" v-model='keyValue' placeholder='请输入被检查公司名称' shape="round"
-						class="u-search" input-align="center" height="70" @search='searchValue' @custom='searchValue'
-						@clear='clearValue' @change='changeValue'>
-					</u-search>
-
-					<view v-show="current == 0 && newsList.length > 0">
-						<view class="inTmain" v-for="(item,index) in newsList" :key="index">
-							<u-card :title="item.securityName" @click="goDetail(item)">
-								<view class="" slot="body">
-									<view>
-										<view style="margin-bottom: 10px;" class="u-body-item-title u-line-1">
-											检查人姓名:{{item.realName}}
-										</view>
-									</view>
-									<view>
-										<view class="u-body-item-title u-line-1">
-											检查人单位:{{item.examinerDeptName}}</view>
-									</view>
-								</view>
-								<view class="" slot="foot">
-									</u-icon>检查日期:{{item.reviewtime}}</view>
-							</u-card>
-						</view>
-						<u-loadmore class='msg' :status="status" />
-					</view>
-
-					<view v-show="current == 1 && newsList.length > 0">
-						<view class="inTmain" v-for="(item,index) in newsList">
-							<u-card :title="item.reviewedDeptName" @click="goDetail(item)">
-								<view class="" slot="body">
-									<view>
-										<view style="margin-bottom: 10px;" class="u-body-item-title u-line-1">
-											检查人姓名:{{item.realName}}
-										</view>
-									</view>
-									<view>
-										<view class="u-body-item-title u-line-1">
-											检查人单位:{{item.examinerDeptName}}</view>
-									</view>
-								</view>
-								<view class="" slot="foot">
-									</u-icon>检查日期:{{item.reviewtime}}</view>
-							</u-card>
-						</view>
-						<u-loadmore class='msg' :status="status" />
-					</view>
-
-					<view class="msg" v-show='newsList.length == 0'>
-						暂无数据
-					</view>
-
-				</view>
-
-			</view>
-
-		</view>
-	</view>
-
-</template>
-
-<script>
-	export default {
-		data() {
-			return {
-
-				list: [{
-						name: '保安员检查列表'
-					},
-					{
-						name: '单位检查列表'
-					}
-				],
-
-				current: 0,
-
-				dataList: [],
-				// newsList: [],
-
-				status: 'loadmore',
-				keyValue: '',
-
-				dataList: [],
-				newsList: [],
-				pagelist: 0,
-				pages: 0,
-				flag: true,
-
-				pullDown: false
-
-			};
-		},
-		onLoad() {
-
-		},
-		onReachBottom() {
-			var that = this;
-
-			if (that.flag == false) {
-				that.status = 'nomore';
-				return
-			}
-			// 后续将改为与后端联动
-			that.status = 'loading';
-
-			setTimeout(() => {
-				if (that.current == 0) {
-					that.getReceive();
-				} else {
-					that.getSend();
-				}
-			}, 1000);
-		},
-
-		onPullDownRefresh: function() {
-			var that = this;
-
-			this.pullDown = true;
-			this.pagelist = 0;
-			this.pages = 0;
-			this.flag = true;
-			this.dataList = [];
-			this.newsList = [];
-			this.status = 'loading';
-			this.keyValue = '';
-			setTimeout(() => {
-				if (that.current == 0) {
-					that.getReceive();
-				} else {
-					that.getSend();
-				}
-			}, 1000)
-
-		},
-
-		mounted() {
-			this.getReceive();
-		},
-		methods: {
-			getReceive() {
-				var that = this;
-
-				if (that.pagelist < that.pages || that.pagelist == 0) {
-					that.pagelist++
-				} else if (that.pagelist == that.pages) {
-					that.flag = false
-					that.status = 'nomore';
-					return
-				}
-
-				uni.request({
-					url: this.$store.state.piAPI + "/seinspect/page",
-					method: "get",
-					data: {
-						deptId: this.$store.state.UserData
-							.dept_id,
-						current: that.pagelist,
-						size: 10
-					},
-					success: (res) => {
-						that.pages = res.data.data.pages;
-
-						var resdata = res.data.data.records;
-
-						if (this.pullDown == true) {
-							this.pullDown = false;
-							uni.stopPullDownRefresh();
-						}
-
-						if (resdata.length == 0) {
-							that.flag = false
-							that.status = 'nomore';
-							return
-						} else {
-
-							resdata.forEach(item => {
-								that.newsList.push(item)
-								that.dataList.push(item)
-							})
-						}
-
-						if (that.pagelist == that.pages) {
-							that.flag = false
-							that.status = 'nomore';
-							return
-						}
-
-					}
-				});
-			},
-			getSend() {
-				var that = this;
-
-				if (that.pagelist < that.pages || that.pagelist == 0) {
-					that.pagelist++
-				} else if (that.pagelist == that.pages) {
-					that.flag = false
-					that.status = 'nomore';
-					return
-				}
-
-				uni.request({
-					// url: this.$store.state.piAPI + "/coinspect/page?deptId=" + this.$store.state.UserData
-					// 	.dept_id + '&userId=' + this.$store.state.puserID,
-					url: this.$store.state.piAPI + "/coinspect/page",
-					method: "get",
-					data: {
-						current: that.pagelist,
-						size: 10
-					},
-					success: (res) => {
-						that.pages = res.data.data.pages;
-
-						var resdata = res.data.data.records;
-
-						if (this.pullDown == true) {
-							this.pullDown = false;
-							uni.stopPullDownRefresh();
-						}
-
-						if (resdata.length == 0) {
-							that.flag = false
-							that.status = 'nomore';
-							return
-						} else {
-							resdata.forEach(item => {
-								that.newsList.push(item)
-								that.dataList.push(item)
-							})
-						}
-						console.log(that.newsList)
-						if (that.pagelist == that.pages) {
-							that.flag = false
-							that.status = 'nomore';
-							return
-						}
-
-					}
-				});
-			},
-			goDetail(item) {
-				if (this.current == 0) {
-					uni.navigateTo({
-						url: './peopleDetail?detailData=' + JSON.stringify(item)
-					});
-				} else {
-					uni.navigateTo({
-						url: './unitDetail?detailData=' + JSON.stringify(item)
-					});
-				}
-			},
-			change(index) {
-				if (this.current == index) return;
-				this.dataList = [];
-				this.newsList = [];
-				this.pagelist = 0;
-				this.pages = 0;
-				this.flag = true;
-				this.current = index;
-				if (index == 0) {
-					this.getReceive();
-				} else {
-					this.getSend();
-				}
-			},
-			searchValue(value) {
-				var that = this;
-				var str = value.replace(/\s*/g, "");
-				if (str == '') {
-					return
-				} else {
-					that.newsList = [];
-
-					if (that.current == 0) {
-						uni.request({
-							url: this.$store.state.piAPI + "/seinspect/page",
-							method: "get",
-							data: {
-								current: 1,
-								size: 999999,
-								realname: str
-							},
-							success: (res) => {
-								var resdata = res.data.data.records;
-
-								resdata.forEach(item => {
-									that.newsList.push(item)
-								})
-
-							}
-						});
-					} else {
-						uni.request({
-							url: this.$store.state.piAPI + "/coinspect/page?deptId=" + this.$store.state.UserData
-								.dept_id + '&userId=' + this.$store.state.puserID,
-							method: "get",
-							data: {
-								current: 1,
-								size: 999999,
-								sname: str
-							},
-							success: (res) => {
-								var resdata = res.data.data.records;
-
-								resdata.forEach(item => {
-									that.newsList.push(item)
-								})
-
-							}
-						});
-					}
-
-					that.flag = false
-					that.status = 'nomore';
-				}
-			},
-			clearValue() {
-				this.keyValue = ''
-				this.newsList = [];
-
-				this.dataList.forEach(item => {
-					this.newsList.push(item)
-				})
-
-				if (this.pagelist < this.pages) {
-					this.flag = true;
-					this.status = 'loading';
-				} else {
-					this.flag = false;
-					this.status = 'nomore';
-				}
-			},
-			changeValue(value) {
-				if (value == '') {
-					this.newsList = [];
-
-					this.dataList.forEach(item => {
-						this.newsList.push(item)
-					})
-
-					if (this.pagelist < this.pages) {
-						this.flag = true;
-						this.status = 'loading';
-					} else {
-						this.flag = false;
-						this.status = 'nomore';
-					}
-				}
-			},
-			goReturnPage() {
-				uni.switchTab({
-					url: '/pages/home/home'
-				});
-			},
-			goToAddPage() {
-				if (this.current == 0) {
-					uni.navigateTo({
-						url: './addpeople'
-					});
-				} else {
-					uni.navigateTo({
-						url: './addunit'
-					});
-				}
-			},
-		}
-	};
-</script>
-
-<style lang="scss">
-	.page-container {
-		position: fixed;
-		display: block;
-		width: 100%;
-		max-height: 100vh;
-
-
-
-		.head {
-			position: relative;
-
-
-			width: 100%;
-
-
-			.nav-wrap {
-				width: 100%;
-				height: 44px;
-				line-height: 30px;
-				padding: 7px 3px;
-				height: calc(44px + constant(safe-area-inset-top));
-				height: calc(44px + env(safe-area-inset-top));
-				color: rgb(255, 255, 255);
-
-				.btn-return-box {
-					display: flex;
-					align-items: center;
-					font-size: 16px;
-					box-sizing: border-box;
-
-					.btn-return {
-						position: relative;
-						width: auto;
-						margin: 0 2px;
-						word-break: keep-all;
-						white-space: pre;
-						cursor: pointer;
-					}
-				}
-
-				.header-title {
-					position: absolute;
-					top: 0;
-					left: 0;
-					right: 0;
-					bottom: 0;
-					margin: auto;
-					width: 60%;
-					font-weight: 700;
-					line-height: 30px;
-					font-size: 16px;
-					opacity: 1;
-					text-overflow: ellipsis;
-					text-align: center;
-					min-width: 1em;
-				}
-
-				.header-add {
-					position: absolute;
-					top: 0;
-					left: auto;
-					right: 10px;
-					bottom: 0;
-					margin: auto;
-					display: inline-block;
-					font: normal normal normal 14px/1 unibtn;
-					text-rendering: auto;
-					-webkit-font-smoothing: antialiased;
-					font-size: 24px;
-				}
-			}
-
-		}
-
-		.top-absolute {
-			position: fixed;
-			top: 0;
-			left: 0;
-			z-index: 101;
-		}
-
-		.wrapper {
-
-			width: 100%;
-			display: block;
-			height: calc(100% - 44px);
-			height: calc(100% - 44px - constant(safe-area-inset-top));
-			height: calc(100% - 44px - env(safe-area-inset-top));
-
-			.body {
-				width: 100%;
-				height: 100%;
-				overflow-x: hidden;
-				overflow-y: auto;
-
-				.body-content {
-					height: auto;
-
-				}
-
-			}
-
-		}
-	}
-
-	.u-card-wrap {
-		background-color: $u-bg-color;
-		padding: 1px;
-	}
-
-	.u-body-item {
-		font-size: 32rpx;
-		color: #333;
-		padding: 20rpx 10rpx;
-	}
-
-	.u-body-item image {
-		width: 120rpx;
-		flex: 0 0 120rpx;
-		height: 120rpx;
-		border-radius: 8rpx;
-		margin-left: 12rpx;
-	}
-
-	.u-search {
-		padding: 20rpx 30rpx 0 30rpx;
-	}
-
-	.inTmain {}
-
-	.msg {
-		height: 72rpx;
-		line-height: 72rpx;
-		text-align: center;
-		color: #999;
-	}
-</style>
diff --git a/pages/examine/peopleDetail.vue b/pages/examine/peopleDetail.vue
deleted file mode 100644
index e682eab..0000000
--- a/pages/examine/peopleDetail.vue
+++ /dev/null
@@ -1,82 +0,0 @@
-<template>
-	<view class="container">
-		<u-form :model="detailData" ref="uForm" class="send-detail">
-			<u-form-item label-width='158' label="检查人姓名">
-				<span>{{ detailData.inspectman }}</span>
-			</u-form-item>
-			<u-form-item label-width='158' label="检查人单位">
-				<span>{{ detailData.deptname }}</span>
-			</u-form-item>
-			<u-form-item label-width='158' label="保安员姓名">
-				<span>{{ detailData.realname }}</span>
-			</u-form-item>
-			<u-form-item label-width='158' label="保安员单位">
-				<span>{{ detailData.sname }}</span>
-			</u-form-item>
-			<u-form-item label-width='158' label="保安身份证">
-				<span>{{ detailData.carid }}</span>
-			</u-form-item>
-			<u-form-item label-width='132' label="检查日期">
-				<span>{{ detailData.reviewtime }}</span>
-			</u-form-item>
-			<u-form-item label-width='132' label="检查内容">
-				<span>{{ detailData.insid }}</span>
-			</u-form-item>
-			<u-form-item label-width='132' label="检查结果">
-				<span>{{ detailData.examinationType }}</span>
-			</u-form-item>
-			<u-form-item label-width='132' label="相关附图">
-				<view class="img-box">
-					<img :src="item" alt="" v-for='item in detailData.url'>
-				</view>
-			</u-form-item>
-		</u-form>
-	</view>
-</template>
-
-<script>
-	export default {
-		data() {
-			return {
-				detailData: {},
-			};
-		},
-		onLoad(event) {
-			var that = this;
-			
-			this.detailData = JSON.parse(decodeURIComponent(event.detailData));
-
-			this.detailData.url = this.detailData.url.split(',')
-		},
-		onReachBottom() {
-
-		},
-		mounted() {
-
-		},
-		methods: {
-
-
-		}
-	};
-</script>
-
-<style lang="scss">
-	.send-detail {
-		padding: 0 30rpx;
-
-		span {
-			color: #999;
-		}
-	}
-
-	.img-box {
-		display: flex;
-		justify-content: space-around;
-		flex-wrap: wrap;
-
-		img {
-			height: 180rpx;
-		}
-	}
-</style>
diff --git a/pages/examine/unitDetail.vue b/pages/examine/unitDetail.vue
deleted file mode 100644
index b4a74c9..0000000
--- a/pages/examine/unitDetail.vue
+++ /dev/null
@@ -1,76 +0,0 @@
-<template>
-	<view class="container">
-		<u-form :model="detailData" ref="uForm" class="send-detail">
-			<u-form-item label-width='158' label="检查人姓名">
-				<span>{{ detailData.name }}</span>
-			</u-form-item>
-			<u-form-item label-width='158' label="检查人单位">
-				<span>{{ detailData.deptname }}</span>
-			</u-form-item>
-			<u-form-item label-width='158' label="被检查单位">
-				<span>{{ detailData.sname }}</span>
-			</u-form-item>
-			<u-form-item label-width='132' label="检查日期">
-				<span>{{ detailData.reviewtime }}</span>
-			</u-form-item>
-			<u-form-item label-width='132' label="检查内容">
-				<span>{{ detailData.insid }}</span>
-			</u-form-item>
-			<u-form-item label-width='132' label="检查结果">
-				<span>{{ detailData.results }}</span>
-			</u-form-item>
-			<u-form-item label-width='132' label="相关附图">
-				<view class="img-box">
-					<img :src="item" alt="" v-for='item in detailData.url'>
-				</view>
-			</u-form-item>
-		</u-form>
-	</view>
-</template>
-
-<script>
-	export default {
-		data() {
-			return {
-				detailData: {},
-			};
-		},
-		onLoad(event) {
-			var that = this;
-			this.detailData = JSON.parse(decodeURIComponent(event.detailData));
-			
-			this.detailData.url = this.detailData.url.split(',')
-			
-		},
-		onReachBottom() {
-
-		},
-		mounted() {
-
-		},
-		methods: {
-
-
-		}
-	};
-</script>
-
-<style lang="scss">
-	.send-detail {
-		padding: 0 30rpx;
-
-		span {
-			color: #999;
-		}
-	}
-
-	.img-box {
-		display: flex;
-		justify-content: space-around;
-		flex-wrap: wrap;
-
-		img {
-			height: 180rpx;
-		}
-	}
-</style>
diff --git a/pages/groupChat/addFriend.vue b/pages/groupChat/addFriend.vue
deleted file mode 100644
index e24980c..0000000
--- a/pages/groupChat/addFriend.vue
+++ /dev/null
@@ -1,226 +0,0 @@
-<template>
-	<view class="container">
-		
-		<u-navbar style="position: relative;" :is-fixed="false" :border-bottom="true" :is-back="true"
-			title="添加好友" back-icon-color="#fff" :background="{ background: '#0BB9C8' }" title-color="#fff">
-		
-		</u-navbar>
-		
-		<view class="main">
-			<u-search style="z-index: 9999;" :show-action="true" @custom="search" @search="search" :clearabled="true" placeholder="请输入姓名或手机号" action-text="搜索" :animation="true"></u-search>
-			<!-- <image class="friendEmpty" src="../../static/wjg.png"></image> -->
-			<view v-if="fempty" class="friendEmpty">
-				<u-empty text="无搜索结果" mode="list"></u-empty>
-			</view>
-			<view class="requestr" v-for="(item, index) in requestList" :key="index">
-				<view class="request-top">
-					<view class="reject btn"></view>
-					<view class="header-img">
-						<image :src="item.avatar" mode="" class="header-img" />
-					</view>
-					<view @click="aggree(item)" class="aggree btn">申请</view>
-				</view>
-
-				<view class="request-center">
-					<view class="title">{{ item.realName }}</view>
-					<view class="time">联系方式:{{ item.phone}}</view>
-				</view>
-
-				<view class="notic">
-					<text>留言:</text>
-					<u-input placeholder="请输入留言" v-model="item.bz"/>
-				</view>
-			</view>
-
-		</view>
-	</view>
-</template>
-
-<script>
-	import datas from '@/debugdate/debugdate.js'
-	import filter from '@/config/filter.js'
-	import WxStorage from "../../static/lib/wxStorage.js"
-	export default {
-		onLoad(option) {
-		},
-		data() {
-			return {
-				requestList: [],
-				fempty:false,
-				fvalue:"",
-			};
-		},
-
-		methods: {
-			// 返回键
-			backOne() {
-				uni.navigateBack({
-					delta: 1
-				})
-			},
-			_FriendRequest() {
-				this.requestList = datas.firendsRequest()
-			},
-			aggree(item) {
-				var that = this;
-				var date = that.currTime();
-				uni.request({
-					url: this.$store.state.piAPI + "/friend/submit",
-					method: "POST",
-					data: {
-						applicant:WxStorage.get("ids"),
-						type: 0,
-						friend:item.friendid,
-						bz:item.bz,
-						time:date
-					},
-					success: (res) => {
-						uni.showToast({
-							title: '申请成功',
-							icon: "none",
-							duration: 1000
-						});
-					}
-				});
-			},
-			currTime(){
-				var date = new Date();
-				var Y = date.getFullYear() + '-';
-				var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
-				var D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) + ' ';
-				var h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':';
-				var m = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':';
-				var s = (date.getSeconds() < 10 ? '0' + date.getSeconds(): date.getSeconds());
-				return Y + M + D + h + m + s;
-			},
-			search(value){
-				var that = this;
-				uni.request({
-					url: this.$store.state.piAPI + "/friend/addFriend",
-					method: "GET",
-					data: {
-						applicant: value,
-					},
-					success: (res) => {
-						var resdata = res.data.data.records;
-						for (var i = 0; i < resdata.length; i++) {
-							if (resdata[i].avatar == null || resdata[i].avatar == "") {
-								resdata[i].avatar = "https://gimg2.baidu.com/image_search/src=http%3A%2F%2F5b0988e595225.cdn.sohucs.com%2Fimages%2F20191109%2F1d3d4d82715444c4b8284f65e3feed10.jpeg&refer=http%3A%2F%2F5b0988e595225.cdn.sohucs.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1632484198&t=1f4086a5894cbf83b311fa37c276405c";
-							}
-						}
-						that.requestList = resdata;
-						if(resdata.length == 0){
-							that.fempty = true;
-						}else{
-							that.fempty = false;
-						}
-					}
-				});
-			},
-			
-		},
-		filters: {
-			date(time) {
-				return filter.date(time)
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	@import '../../common/style/common.scss';
-
-	.friendEmpty {
-		width: 200upx;
-		height: 200upx;
-		position: absolute;
-		margin: auto;
-		top: 0;
-		left: 0;
-		bottom: 0;
-		right: 0;
-	}
-
-	.main {
-		padding: 16rpx 32upx;
-		background: rgba(255, 255, 255, .6);
-
-		.requestr {
-			margin-top: 112rpx;
-			padding: 32upx;
-			background: rgba(255, 255, 255, 1);
-			border-radius: 20upx;
-			box-shadow: 0px 24rpx 64rpx -8rpx rgba(0, 0, 0, .1);
-
-			.request-top {
-				display: flex;
-				flex-direction: row;
-
-				.btn {
-					flex: none;
-					width: 160rpx;
-					height: 64rpx;
-					background: rgba(255, 93, 91, .1);
-					border-radius: 40rpx;
-					text-align: center;
-					font-size: 32upx;
-					font-weight: 400;
-					line-height: 64rpx;
-				}
-
-				.reject {
-					color: rgba(255, 93, 91, 1);
-					background-color: rgba(255, 255, 255, 0.1);
-				}
-
-				.aggree {
-					color: rgba(39, 40, 50, 1);
-					background-color: rgba(255, 228, 49, 1);
-				}
-
-				.header-img {
-					margin-top: -52rpx;
-					flex: auto;
-					text-align: center;
-
-					image {
-						width: 144rpx;
-						height: 144rpx;
-						border-radius: 50%;
-					}
-				}
-
-			}
-
-			.request-center {
-				text-align: center;
-				padding-top: 20rpx;
-				padding-bottom: 40rpx;
-
-				.title {
-					font-size: 36rpx;
-					font-weight: 500;
-					color: rgba(39, 40, 50, 1);
-					line-height: 50rpx;
-				}
-
-				.time {
-					font-size: 24upx;
-					color: rgba(39, 40, 50, 0.4);
-					line-height: 34rpx;
-				}
-
-			}
-
-			.notic {
-				font-size: 28upx;
-				color: rgba(39, 40, 50, 1);
-				line-height: 40rpx;
-				padding: 10px 32upx;
-				border-radius: 20upx;
-				background: rgba(243, 244, 246, 1);
-			}
-		}
-
-	}
-</style>
diff --git a/pages/groupChat/chatMessage.vue b/pages/groupChat/chatMessage.vue
deleted file mode 100644
index d0767be..0000000
--- a/pages/groupChat/chatMessage.vue
+++ /dev/null
@@ -1,334 +0,0 @@
-<template>
-	<view class="container">
-		<u-navbar style="position: relative;" :is-fixed="false" :border-bottom="true" :is-back="true"
-			 :title="recName" back-icon-color="#fff"
-			:background="{ background: '#0BB9C8' }" title-color="#fff">
-		</u-navbar>
-		
-		<view class="groupmain">
-			<scroll-view scroll-y="true">
-				
-				<view class="memberbox">
-					<view class="member-item" v-for="item in getGroupInfo.user_list" :key="item.user._id" @tap="goInfo(item.user._id)">
-						<image :src="item.user.avatars" mode="aspectFill"></image>
-						<view class="manager" v-if="item.user._id == getGroupInfo.manager"><image src="../../static/images/group/manager.png" mode="widthFix"></image></view>
-						<view class="m_name">{{ item.nickName }}</view>
-					</view>
-					<view class="member-item">
-						<view class="m_imgbox" @tap="goAdd"><image src="../../static/images/group/Group.png" mode="widthFix"></image></view>
-					</view>
-					<view class="more" @tap="more">查看全部群成员</view>
-				</view>
-				<view class="info">
-					<view class="info_item">
-						<view class="info_title">群名称</view>
-						<view class="info_content">{{ getGroupInfo.name }}</view>
-						<view class="info_oprea"><view v-show="isManager">></view></view>
-					</view>
-					<view class="info_item">
-						<view class="info_title">群公告</view>
-						<view class="info_content">{{ getGroupInfo.notice }}</view>
-						<view class="info_oprea">></view>
-					</view>
-					<view class="info_item">
-						<view class="info_title">群内昵称</view>
-						<view class="info_content">{{ getG_nickName }}</view>
-						<view class="info_oprea">></view>
-					</view>
-				</view>
-				<view class="operation">
-					<view class="op_item">
-						<view class="op_type">消息免打扰</view>
-						<view class="op_opera"><switch class="switch" color="#FFE431" :checked="false" @change="switch1" /></view>
-					</view>
-				</view>
-				<view class="dissolve" v-if="isManager" @tap="dissolve">解散该群</view>
-				<view class="dissolve" v-if="isManager" @tap="management">移除群成员</view>
-				<view class="btn" @tap="exitGroup">退出群聊</view>
-			</scroll-view>
-		</view>
-	</view>
-</template>
-
-<script>
-export default {
-	data() {
-		return {
-			recName: '聊天信息',
-			id: null,
-			nickName: null,
-			isScroll: false,
-			isManager: false,
-			type: '',
-			getGroupInfo: {},
-			getG_nickName: ''
-		};
-	},
-	onLoad(option) {
-		this.id = option.id;
-		
-	},
-	methods: {
-		// 消息免打扰按钮
-		switch1(e) {
-			console.log('switch1 发生 change 事件,携带值为', e.target.value);
-		},
-		
-		// 查看群成员信息
-		goInfo(id) {
-			uni.navigateTo({
-				url: '../information/information?id=' + id
-			});
-		},
-		// 跳转到添加群成员界面
-		goAdd() {
-			uni.navigateTo({
-				url: 'add/add?id=' + this.id
-			});
-		},
-		//查看所有群成员
-		more(){
-			uni.navigateTo({
-				url: 'members/members'
-			});
-		},
-		// 移除群成员
-		management(){
-			uni.navigateTo({
-				url: 'members/members?id=' + this.id +"&&type=management"
-			});
-		},
-		// 退出群聊
-		exitGroup() {
-			console.log("退群提醒")
-		},
-		// 解散群聊
-		async dissolve(){
-			console.log("解散群聊")
-		},
-		// 群聊天页面
-		goGroupChat(){
-			uni.navigateTo({
-				url:"../chat/chat?id="+this.id+"&&type=group"
-			})
-		},
-	}
-};
-</script>
-
-<style lang="scss" scoped>
-@import '../../common/css/mycss.scss';
-.groupinfo {
-	padding-top: var(--status-bar-height);
-}
-.comtarbar {
-	background: white;
-	.info{
-		margin-left: 30rpx;
-	}
-}
-.groupmain {
-	padding-bottom: 0rpx;
-	height: calc(100vh - 88rpx);
-	scroll-view {
-		height: 100%;
-	}
-	.g_avatar {
-		background: white;
-		height: 35vh;
-		position: relative;
-		overflow: hidden;
-		.g_imgbox {
-			position: absolute;
-			z-index: 3;
-			top: 50%;
-			left: 50%;
-			transform: translateX(-50%) translateY(-50%);
-			.g_box {
-				display: flex;
-				justify-content: center;
-				.g_img {
-					border-radius: 50%;
-					width: 200rpx;
-					height: 200rpx;
-					overflow: hidden;
-					margin: 10rpx;
-					border: 4rpx solid white;
-					position: relative;
-					image {
-						width: 100%;
-						height: 100%;
-						position: absolute;
-						top: 50%;
-						left: 50%;
-						transform: translateX(-50%) translateY(-50%);
-					}
-				}
-			}
-
-			.g_info {
-				color: white;
-				text-align: center;
-				margin-top: 20rpx;
-			}
-		}
-
-		.bg-img {
-			position: absolute;
-			z-index: 0;
-			top: 0;
-			left: 0;
-			bottom: 0;
-			right: 0;
-			image {
-				width: 100%;
-				height: auto;
-				position: absolute;
-				top: 50%;
-				left: 50%;
-				transform: translateX(-50%) translateY(-50%);
-			}
-		}
-		.mask {
-			position: absolute;
-			z-index: 1;
-			top: 0;
-			left: 0;
-			bottom: 0;
-			right: 0;
-			background: rgba(0, 0, 0, 0.3);
-		}
-	}
-
-	.memberbox {
-		padding-top: 20rpx;
-		margin: 20rpx;
-		display: flex;
-		flex-direction: row;
-		flex-wrap: wrap;
-		.member-item {
-			width: 20%;
-			display: flex;
-			justify-content: center;
-			flex-wrap: wrap;
-			margin-bottom: 20rpx;
-			position: relative;
-			.manager {
-				position: absolute;
-				top: -20rpx;
-				right: 4rpx;
-				image {
-					width: 40rpx;
-					height: auto;
-				}
-			}
-			image {
-				width: 100rpx;
-				height: 100rpx;
-				border-radius: 10rpx;
-			}
-			.m_name {
-				margin-top: 10rpx;
-				width: 100rpx;
-				text-align: center;
-				font-size: 26rpx;
-				color: rgba(25, 29, 35, 0.5);
-				overflow: hidden;
-				text-overflow: ellipsis;
-				white-space: nowrap;
-			}
-			.m_imgbox {
-				width: 100rpx;
-				height: 100rpx;
-				background: #ffe431;
-				border-radius: 10%;
-				display: flex;
-				justify-content: center;
-				align-items: center;
-				image {
-					height: 60rpx;
-					width: 60rpx;
-				}
-			}
-		}
-		.more {
-			margin: 30rpx 0rpx;
-			width: 100%;
-			font-size: 30rpx;
-			color: #ccc;
-			text-align: center;
-		}
-	}
-	.info {
-		border-top: 10rpx solid #dfdfdf;
-		border-bottom: 10rpx solid #dfdfdf;
-		.info_item {
-			margin: 0rpx 20rpx;
-			display: flex;
-			height: 100rpx;
-			view {
-				height: 100rpx;
-				line-height: 100rpx;
-			}
-			.info_title {
-				color: rgba(39, 40, 50, 1);
-				font-size: 32rpx;
-				flex: 3;
-			}
-			.info_content {
-				color: rgba(39, 40, 50, 0.6);
-				font-size: 32rpx;
-				flex: 6;
-				overflow: hidden;
-				text-overflow: ellipsis;
-				white-space: nowrap;
-			}
-			.info_oprea {
-				text-align: right;
-				color: rgba(39, 40, 50, 0.6);
-				font-size: 38rpx;
-				flex: 1;
-			}
-		}
-	}
-	.info .info_item:not(:last-child) {
-		border-bottom: 2rpx solid #e2e2e2;
-	}
-	.operation {
-		border-bottom: 10rpx solid #dfdfdf;
-		.op_item {
-			margin: 0rpx 20rpx;
-			display: flex;
-			height: 100rpx;
-			.op_type {
-				flex: 4;
-				color: rgba(39, 40, 50, 1);
-				font-size: 32rpx;
-				height: 100rpx;
-				line-height: 100rpx;
-			}
-			.op_opera {
-				flex: 1;
-				text-align: right;
-				.switch {
-					margin-top: 16rpx;
-					transform: scale(0.8);
-				}
-			}
-		}
-	}
-	.dissolve {
-		height: 100rpx;
-		line-height: 100rpx;
-		text-align: center;
-		color: red;
-		border-bottom: 10rpx solid #dfdfdf;
-	}
-	.btn {
-		height: 100rpx;
-		line-height: 100rpx;
-		text-align: center;
-		color: red;
-	}
-}
-</style>
diff --git a/pages/groupChat/chating.vue b/pages/groupChat/chating.vue
deleted file mode 100644
index 802467a..0000000
--- a/pages/groupChat/chating.vue
+++ /dev/null
@@ -1,691 +0,0 @@
-<template>
-	<view class="container">
-
-		<!-- 头部 -->
-		<u-navbar style="position: relative;" :is-fixed="false" :border-bottom="true" :is-back="true" :title="recName"
-			back-icon-color="#fff" :background="{ background: '#0BB9C8' }" :placeholder="true" title-color="#fff">
-
-			<!-- 	<view slot='right'>
-				<u-icon @click="chatMessageDetail" class="set-icon" name="more-dot-fill" color="#fff" size="28">
-				</u-icon>
-			</view> -->
-		</u-navbar>
-
-
-
-		<scroll-view id="chatingBox" :style="{ height: swiperHeight + 'px' }" scroll-y="true" class="chat"
-			scroll-with-animation="isanimation" :scroll-into-view="scrollToView" @scrolltoupper="nextPage">
-			<view class="chat-main" :style="{paddingBottom:inputh + 'px'}">
-				<view class="loading" :class="{displaynone:isload}">
-					<image src="@/static/images/chatroom/load.png" mode="" class="loading-img"
-						:animation="animationData" />
-				</view>
-				<view class="chat-ls" v-for="(item, index) in msgs" :key="index" :id="'msg' + item.id">
-					<view class="chat-time" v-if="item.postTime != ''">{{ item.postTime | Msgdate }}</view>
-
-					<view class="msg-m msg-left" v-if="item.senderId != senId">
-						<image :src=recAvatar mode="" class="user-img" />
-						<!-- text -->
-						<view class="message" v-if="item.messageType == 0">
-							<view class="msg-text">{{ item.postMessage }}</view>
-						</view>
-						<!-- image -->
-						<view class="message" v-if="item.messageType == 1">
-							<image :src="item.postMessage" class="msg-img" mode="widthFix"
-								@tap="previewImage(item.postMessage)" />
-						</view>
-						<!-- voice -->
-						<view class="message" v-if="item.messageType == 2">
-							<view class="msg-text voice" :style="{width:item.postMessage.time * 4 + 60 + 'px'}"
-								@tap="playVoice(item.postMessage)">
-
-								<image src="../../static/images/chatroom/sound.png" mode="" class="voice-img" />
-								{{ item.postMessage.time }}"
-
-							</view>
-						</view>
-						<!-- location -->
-						<view class="message" v-if="item.messageType == 3">
-							<view class="msg-map" @tap="openLocation(item.postMessage)">
-								<view class="map-name">{{ item.postMessage.name }}</view>
-								<view class="map-address">{{ item.postMessage.address }}</view>
-								<image src="../../static/images/chatroom/map.jpg" mode="aspectFit" class="map-img" />
-							</view>
-						</view>
-
-					</view>
-
-					<view class="msg-m msg-right" v-if="item.senderId == senId">
-						<image :src=senAvatar mode="" class="user-img" />
-						<view class="message" v-if="item.messageType == 0">
-							<view class="msg-text">{{ item.postMessage }}</view>
-						</view>
-						<view class="message" v-if="item.messageType == 1">
-							<image :src="item.postMessage" class="msg-img" mode="widthFix"
-								@tap="previewImage(item.postMessage)" />
-						</view>
-						<!-- voice -->
-						<view class="message" v-if="item.messageType == 2">
-							<view class="msg-text voice" :style="{width:item.postMessage.time * 4 + 60 + 'px'}"
-								@tap="playVoice(item.postMessage)">
-								{{ item.postMessage.time }}"
-								<image src="@/static/images/chatroom/sound.png" mode="" class="voice-img" />
-							</view>
-						</view>
-						<!-- location -->
-						<view class="message" v-if="item.messageType == 3">
-							<view class="msg-map" @tap="openLocation(item.postMessage)">
-								<view class="map-name">{{ item.postMessage.name }}</view>
-								<view class="map-address">{{ item.postMessage.address }}</view>
-								<!-- <map class="map"
-									 :latitude="item.postMessage.latitude"
-									 :longitude="item.postMessage.longitude"
-									 :markers="covers(item.postMessage)"/> -->
-								<image src="../../static/images/chatroom/map.jpg" mode="aspectFit" class="map-img" />
-							</view>
-						</view>
-					</view>
-
-
-				</view>
-
-			</view>
-
-		</scroll-view>
-		<submit @inputs="inputs" :names="name" :callname="callName" @heights="heights" />
-	</view>
-</template>
-
-<script>
-	import datas from '@/debugdate/debugdate.js'
-	import filter from '@/config/filter.js'
-	import submit from '@/components/submit/submit.vue'
-	import WxStorage from "../../static/lib/wxStorage.js"
-
-
-	export default {
-		data() {
-			return {
-				swiperHeight: 0,
-				msgs: [],
-				imgMsg: [],
-				oldTime: new Date(),
-				scrollToView: '',
-				inputh: '72',
-				recipientId: null, //接收者id
-				recAvatar: null, //接收者头像
-				recName: null, //接收者姓名
-				senAvatar: null, //发送者头像
-				senId: null, //接收者id
-				getData: null,
-				animationData: {}, // 动画
-				nowpage: 0, // 页码
-				loading: '', // 滚动事件
-				isload: true,
-				isanimation: true,
-				begainloading: true,
-
-				name: [], //视频 双方id
-				innerAudioContext: uni.createInnerAudioContext()
-			};
-		},
-		components: {
-			submit,
-		},
-		onLoad(option) {
-			this.recipientId = option.chatID;
-			this._getMsg(this.nowpage)
-			// this.nextPage()
-			var data = option.data
-
-			if (this.isJSON(option.data) == true) {
-				data = JSON.parse(option.data)
-
-			}
-
-			this.name = ['wo', option.chatID];
-			if (typeof data.recipientName == "undefined") {
-				this.callName = data.realName;
-			} else {
-				this.callName = data.recipientName;
-			}
-
-		},
-
-		onReady() {
-			let that = this;
-			uni.getSystemInfo({
-				success(e) {
-					let {
-						windowWidth,
-						windowHeight,
-						safeArea
-					} = e;
-					const query = uni.createSelectorQuery().in(that);
-					query
-						.select('#chatingBox')
-						.boundingClientRect(data => {
-
-							that.swiperHeight = (safeArea.bottom - data.top);
-
-						})
-						.exec();
-				}
-			});
-		},
-
-		onUnload() {
-			var innerAudioContext = this.innerAudioContext = uni.createInnerAudioContext()
-
-			innerAudioContext.destroy()
-		},
-
-		methods: {
-			chatMessageDetail() {
-
-			},
-
-			// 返回键
-			backOne() {
-				uni.navigateBack({
-					delta: 1
-				})
-			},
-
-			// 滚动顶部加载上一页
-			nextPage() {
-				// if(this.nowpage > 0 && this.begainloading) {
-				// 	// 出现loading icon
-				// 	this.isload = false
-				// 	this.begainloading = false
-
-				// 	var animation = uni.createAnimation({
-				// 		duration: 1000,
-				// 		timingFunction: 'step-start'
-				// 	})
-
-				// 	this.animation = animation
-
-
-				// 	let i = 1
-				// 	this.loading = setInterval(function() {
-				// 		animation.rotate(i * 30).step()
-				// 		this.animationData = animation.export()
-				// 		i++
-				// 		// 滑动加载数据
-				// 		if(i > 40) {
-				// 			this._getMsg(this.nowpage)
-				// 		}
-
-				// 	}.bind(this), 100)
-				// }
-
-
-			},
-			// 获取聊天数据
-			_getMsg(page) {
-				var that = this;
-				that.senId = WxStorage.get("ids");
-				uni.request({
-					url: this.$store.state.piAPI + "/chat-records/getSingleMessagePage",
-					method: "get",
-					data: {
-						senderId: that.senId,
-						recipientId: that.recipientId
-						// recipientId: "1370571848600920066"
-					},
-					success: (res) => {
-						// recAvatar: null,//接收者头像
-						// senAvatar:null,//发送者头像
-						var resdata = res.data.data.user;
-						for (var i = 0; i < resdata.length; i++) {
-							if (resdata[i].avatar == null || resdata[i].avatar == "") {
-								resdata[i].avatar =
-									"https://gimg2.baidu.com/image_search/src=http%3A%2F%2F5b0988e595225.cdn.sohucs.com%2Fimages%2F20191109%2F1d3d4d82715444c4b8284f65e3feed10.jpeg&refer=http%3A%2F%2F5b0988e595225.cdn.sohucs.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1632484198&t=1f4086a5894cbf83b311fa37c276405c";
-							}
-
-							if (resdata[i].id == that.senId) {
-								that.senAvatar = resdata[i].avatar;
-							} else {
-								that.recAvatar = resdata[i].avatar;
-								that.recName = resdata[i].realName;
-							}
-
-						}
-						let msg = res.data.data.chatRecordsIPage
-						that.getData = msg;
-						// 页数加1
-						//let msg = datas.message()			
-						let maxpages = msg.length
-						if (msg.length > (page + 1) * 10) {
-							maxpages = (page + 1) * 10
-							that.nowpage++
-						} else {
-							// 数据获取完毕
-							that.nowpage = -1
-						}
-						// 数据分页加载 每十条为一页
-						for (var i = 0; i < msg.length; i++) {
-							msg[i].imgUrl = '../../static/images/index/friend-list/' + msg[i].imgUrl
-							// 时间间隔
-							if (i < msg.length - 1) {
-								let t = filter.spaceTime(that.oldTime, msg[i].postTime)
-								if (t) {
-									that.oldTime = t
-								}
-								msg[i].postTime = t
-							}
-							// 补充图片地址
-							if (msg[i].types == 1) {
-								msg[i].message = '../../static/images/index/friend-list/' + msg[i].message
-								that.imgMsg.unshift(msg[i].message)
-							}
-
-							if (that.isJSON(msg[i].postMessage) == true) {
-								msg[i].postMessage = JSON.parse(msg[i].postMessage)
-							}
-
-							that.msgs.unshift(msg[i])
-
-						}
-
-						that.$nextTick(() => {
-							that.isanimation = false
-							if (that.getData.length != 0) {
-								that.scrollToView = 'msg' + that.getData[0].id
-							}
-
-						})
-						// 数据加载完毕关闭动画,停止数据加载
-						clearInterval(this.loading)
-						// 关闭loading icon
-						this.isload = true
-						// 开启加载
-						this.begainloading = true
-
-					}
-				})
-
-			},
-
-			isJSON(str) {
-
-				if (typeof str == 'string') {
-					try {
-						var obj = JSON.parse(str);
-						if (typeof obj == 'object' && obj) {
-							return true;
-						} else {
-							return false;
-						}
-
-					} catch (e) {
-						return false;
-					}
-				}
-
-			},
-
-			// 预览图片
-			previewImage(e) {
-
-				let index = 0
-				for (var i = 0; i < this.imgMsg.length; i++) {
-					if (this.imgMsg[i] == e) {
-						index = i
-					}
-				}
-				uni.previewImage({
-					current: index,
-					urls: this.imgMsg,
-					longPressActions: {
-						itemList: ['发送给朋友', '保存图片', '收藏'],
-						success: function(data) {
-							// console.log('选中了第' + (data.tapIndex + 1) + '个按钮,第' + (data.index + 1) + '张图片');
-						},
-						fail: function(err) {
-							// console.log(err.errMsg);
-						}
-					}
-				});
-			},
-			// 音频播放
-			playVoice(e) {
-
-				var innerAudioContext = this.innerAudioContext = uni.createInnerAudioContext()
-				// innerAudioContext.autoplay = false
-				innerAudioContext.src = e.voice
-				innerAudioContext.play()
-
-				setTimeout(() => {
-					innerAudioContext.destroy()
-				}, e.time * 1000)
-
-			},
-			// 接收输入内容
-			inputs(e) {
-				var that = this;
-				this.isanimation = true
-				let len = this.msgs.length - 1
-				let nowTime = new Date();
-				var sentTime = that.dateFormat("YYYY-mm-dd HH:MM:SS", nowTime);
-				let t = filter.spaceTime(this.oldTime, nowTime)
-				if (t) {
-					this.oldTime = t
-				}
-				nowTime = t
-				let sendMsg = {
-					senderId: that.senId,
-					recipientId: that.recipientId,
-					postMessage: e.message,
-					messageType: e.types,
-					status: 0,
-					postTime: nowTime,
-				}
-
-				var mesagess = null;
-
-				if (e.message instanceof Object) {
-					mesagess = JSON.stringify(e.message)
-				} else {
-					mesagess = e.message
-				}
-
-				uni.request({
-					url: this.$store.state.piAPI + "/chat-records/insertSingleChat",
-					method: "post",
-					data: {
-						senderId: that.senId,
-						recipientId: that.recipientId,
-						postMessage: mesagess,
-						messageType: e.types,
-						status: 0,
-						postTime: sentTime,
-					},
-					success: (res) => {
-
-
-					}
-				});
-
-				this.msgs.push(sendMsg)
-
-				console.log(this.msgs, 789)
-
-				this.$nextTick(() => {
-					this.scrollToView = 'msg' + len
-				})
-				if (e.types == 1) {
-					this.imgMsg.push(e.message)
-				}
-			},
-			// 输入框高度
-			heights(e) {
-				this.inputh = e
-				this.goBottom()
-			},
-			// 滚动到底部
-			goBottom() {
-				this.isanimation = true
-				this.scrollToView = ''
-				this.$nextTick(() => {
-					let len = this.getData.length - 1
-					if (this.getData.length != 0) {
-						this.scrollToView = 'msg' + this.getData[0].id
-					}
-
-				})
-			},
-			// 地图定位
-			covers(e) {
-				let map = [{
-					latitude: e.latitude,
-					longitude: e.longitude,
-					iconPath: '../../static/images/chatroom/placeholder-r.png'
-				}]
-				return (map)
-			},
-			// 导航
-			openLocation(e) {
-				uni.openLocation({
-					latitude: e.latitude,
-					longitude: e.longitude,
-					name: e.name,
-					address: e.address,
-					success: () => {
-						// console.log('success')
-					}
-				})
-			},
-			//时间格式化
-			dateFormat(fmt, date) {
-				let ret;
-				const opt = {
-					"Y+": date.getFullYear().toString(), // 年
-					"m+": (date.getMonth() + 1).toString(), // 月
-					"d+": date.getDate().toString(), // 日
-					"H+": date.getHours().toString(), // 时
-					"M+": date.getMinutes().toString(), // 分
-					"S+": date.getSeconds().toString() // 秒
-					// 有其他格式化字符需求可以继续添加,必须转化成字符串
-				};
-				for (let k in opt) {
-					ret = new RegExp("(" + k + ")").exec(fmt);
-					if (ret) {
-						fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
-					};
-				};
-				return fmt;
-			}
-		},
-		filters: {
-			Msgdate(time) {
-				return filter.Msgdate(time)
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	@import '../../static/scss/index.scss';
-
-	.content {
-		height: 100%;
-		background: rgba(244, 244, 244, 1);
-		// background: #2C405A;
-	}
-
-	.set-icon {
-		vertical-align: middle;
-		width: 41rpx;
-		height: auto;
-		margin-right: 35rpx;
-	}
-
-	.chat {
-		height: 100%;
-
-		.chat-main {
-			padding-left: $uni-spacing-col-base;
-			padding-right: $uni-spacing-col-base;
-			padding-top: 16rpx;
-			// padding-bottom: 120rpx;
-			display: flex;
-			flex-direction: column;
-
-			.loading {
-				text-align: center;
-
-				.loading-img {
-					width: 60rpx;
-					height: 60rpx;
-				}
-			}
-		}
-
-		.chat-ls {
-
-			.chat-time {
-				font-size: $uni-font-size-base;
-				color: rgba(39, 40, 50, .6);
-				line-height: 34rpx;
-				padding: 20rpx 0;
-				text-align: center;
-			}
-
-			.msg-m {
-				display: flex;
-				padding: 20rpx 0;
-
-				.user-img {
-					flex: none;
-					width: 88upx;
-					;
-					height: 88upx;
-					;
-					border-radius: $uni-border-radius-base;
-				}
-
-				.message {
-					flex: none;
-					max-width: 480rpx;
-
-				}
-
-				.msg-text {
-					font-size: $uni-font-size-lg;
-					color: $uni-text-color;
-					line-height: 44rpx;
-					padding: 18rpx 20rpx;
-				}
-
-				.msg-img {
-					border-radius: $uni-border-radius-base;
-					max-width: 400rpx;
-				}
-
-				.voice {
-					width: 200rpx;
-					min-width: 110rpx;
-					max-width: 400rpx;
-
-					.voice-img {
-						width: 20px;
-						height: 40rpx;
-						top: 2rpx;
-						// padding-top: -8rpx;
-					}
-
-				}
-
-				// 陶 我想你
-				.msg-map {
-					background: #fff;
-					width: 464rpx;
-					height: 284rpx;
-					overflow: hidden;
-
-					.map-name {
-						font-size: $uni-font-size-lg;
-						color: $uni-text-color;
-						line-height: 44rpx;
-						padding: 18rpx 24rpx 0 24rpx;
-						display: -webkit-box;
-						-webkit-box-orient: vertical;
-						-webkit-line-clamp: 1;
-						overflow: hidden;
-					}
-
-					.map-address {
-						font-size: $uni-font-size-sm;
-						color: $uni-text-color-disable;
-						padding: 0rpx 24rpx;
-						display: -webkit-box;
-						-webkit-box-orient: vertical;
-						-webkit-line-clamp: 1;
-						overflow: hidden;
-					}
-
-					// .map {
-					// 	padding-top: 8rpx;
-					// 	width: 464rpx;
-					// 	height: 190rpx;
-					// 	overflow: hidden;
-					// }
-
-					.map-img {
-						width: 464rpx;
-						// padding-top: 8rpx;
-						height: 310rpx;
-						// top: -70rpx;
-					}
-				}
-
-			}
-
-			.msg-left {
-				flex-direction: row;
-
-				.msg-text {
-					margin-left: 16rpx;
-					border-radius: 0 20rpx 20rpx 20rpx;
-					background-color: rgba(255, 170, 0, 0.8);
-				}
-
-				.msg-img {
-					padding-left: 16rpx;
-				}
-
-				.msg-map {
-					margin-left: 16rpx;
-					border-radius: 0 20rpx 20rpx 20rpx;
-				}
-
-				.voice {
-					text-align: right;
-
-					.voice-img {
-						float: left;
-					}
-
-				}
-
-			}
-
-			.msg-right {
-				flex-direction: row-reverse;
-
-				.msg-text {
-					margin-right: 16rpx;
-					background-color: rgba(255, 228, 49, .8);
-					border-radius: 20rpx 0rpx 20rpx 20rpx;
-				}
-
-				.msg-img {
-					padding-right: 16rpx;
-				}
-
-				.msg-map {
-					margin-right: 16rpx;
-					border-radius: 20rpx 0rpx 20rpx 20rpx;
-				}
-
-				.voice {
-					text-align: left;
-
-					.voice-img {
-						float: right;
-						transform: rotate(180deg);
-					}
-
-				}
-
-			}
-		}
-
-	}
-
-	.displaynone {
-		display: none;
-	}
-</style>
diff --git a/pages/groupChat/chatingQZ.vue b/pages/groupChat/chatingQZ.vue
deleted file mode 100644
index 08db0fc..0000000
--- a/pages/groupChat/chatingQZ.vue
+++ /dev/null
@@ -1,676 +0,0 @@
-<template>
-	<view class="container">
-
-		<u-navbar style="position: relative;" :is-fixed="false" :border-bottom="true" :is-back="true"
-			 :title="recName" back-icon-color="#fff"
-			:background="{ background: '#0BB9C8' }" title-color="#fff">
-			<view slot='right'>
-				<u-icon @click="chatMessageDetail" class="set-icon" name="more-dot-fill" color="#fff" size="28"></u-icon>
-			</view>
-		</u-navbar>
-
-		<scroll-view id="chatingQzBox" :style="{ height: swiperHeight + 'px' }" scroll-y="true" class="chat"
-			scroll-with-animation="isanimation" :scroll-into-view="scrollToView" @scrolltoupper="nextPage">
-			<view class="chat-main" :style="{paddingBottom:inputh + 'px'}">
-				<view class="loading" :class="{displaynone:isload}">
-					<image src="@/static/images/chatroom/load.png" mode="" class="loading-img"
-						:animation="animationData" />
-				</view>
-				<view class="chat-ls" v-for="(item, index) in msgs" :key="index" :id="'msg' + item.id">
-					<view class="chat-time" v-if="item.post_time != ''">{{ item.post_time | Msgdate }}</view>
-
-					<view class="msg-m msg-left" v-if="item.sender_id != senId">
-
-						<image :src="item.avatar == '' ? 'https://gimg2.baidu.com/image_search/src=http%3A%2F%2F5b0988e595225.cdn.sohucs.com%2Fimages%2F20191109%2F1d3d4d82715444c4b8284f65e3feed10.jpeg&refer=http%3A%2F%2F5b0988e595225.cdn.sohucs.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1632484198&t=1f4086a5894cbf83b311fa37c276405c' : item.avatar" mode="" class="user-img" />
-						<view>
-							<view class="sent_name">
-								{{item.real_name}}
-							</view>
-							<!-- text -->
-							<view class="message" v-if="item.message_type == 0">
-								<view class="msg-text">{{ item.post_message }}</view>
-							</view>
-							<!-- image -->
-							<view class="message" v-if="item.message_type == 1">
-								<image :src="item.post_message" class="msg-img" mode="widthFix"
-									@tap="previewImage(item.post_message)" />
-							</view>
-							<!-- voice -->
-							<view class="message" v-if="item.message_type == 2">
-								<view class="msg-text voice" :style="{width:item.post_message.time * 4 + 60 + 'px'}"
-									@tap="playVoice(item.post_message)">
-								
-									<image src="../../static/images/chatroom/sound.png" mode="" class="voice-img" />
-									{{ item.post_message.time }}"
-								
-								</view>
-							</view>
-							<!-- location -->
-							<view class="message" v-if="item.message_type == 3">
-								<view class="msg-map" @tap="openLocation(item.post_message)">
-									<view class="map-name">{{ item.post_message.name }}</view>
-									<view class="map-address">{{ item.post_message.address }}</view>
-									<image src="../../static/images/chatroom/map.jpg" mode="aspectFit"
-										class="map-img" />
-								</view>
-							</view>
-						</view>
-					</view>
-
-					<view class="msg-m msg-right" v-if="item.sender_id == senId">
-						<image :src="item.avatar == '' ? 'https://gimg2.baidu.com/image_search/src=http%3A%2F%2F5b0988e595225.cdn.sohucs.com%2Fimages%2F20191109%2F1d3d4d82715444c4b8284f65e3feed10.jpeg&refer=http%3A%2F%2F5b0988e595225.cdn.sohucs.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1632484198&t=1f4086a5894cbf83b311fa37c276405c' : item.avatar" mode="" class="user-img" />
-						<view class="message" v-if="item.message_type == 0">
-							<view class="msg-text">{{ item.post_message }}</view>
-						</view>
-						<view class="message" v-if="item.message_type == 1">
-							<image :src="item.post_message" class="msg-img" mode="widthFix"
-								@tap="previewImage(item.post_message)" />
-						</view>
-						<!-- voice -->
-						<view class="message" v-if="item.message_type == 2">
-							<view class="msg-text voice" :style="{width:item.post_message.time * 4 + 60 + 'px'}"
-								@tap="playVoice(item.post_message)">
-								{{ item.post_message.time }}"
-								<image src="@/static/images/chatroom/sound.png" mode="" class="voice-img" />
-							</view>
-						</view>
-						<!-- location -->
-						<view class="message" v-if="item.message_type == 3">
-							<view class="msg-map" @tap="openLocation(item.post_message)">
-								<view class="map-name">{{ item.post_message.name }}</view>
-								<view class="map-address">{{ item.post_message.address }}</view>
-								<!-- <map class="map"
-									 :latitude="item.post_message.latitude"
-									 :longitude="item.post_message.longitude"
-									 :markers="covers(item.post_message)"/> -->
-								<image src="../../static/images/chatroom/map.jpg" mode="aspectFit" class="map-img" />
-							</view>
-						</view>
-					</view>
-
-
-				</view>
-
-			</view>
-		</scroll-view>
-
-		<submit @inputs="inputs" @heights="heights" />
-	</view>
-</template>
-
-<script>
-	import datas from '@/debugdate/debugdate.js'
-	import filter from '@/config/filter.js'
-	import submit from '@/components/submit/submit.vue'
-	import WxStorage from "../../static/lib/wxStorage.js"
-
-	export default {
-		data() {
-			return {
-				swiperHeight: 0,
-				msgs: [],
-				imgMsg: [],
-				oldTime: new Date(),
-				scrollToView: '',
-				inputh: '72',
-				recipientId: null, //接收者id
-				recAvatar: null, //接收者头像
-				recName: null, //接收者姓名
-				senAvatar: null, //发送者头像
-				senId: null, //接收者id
-				getData: null,
-				animationData: {}, // 动画
-				nowpage: 0, // 页码
-				loading: '', // 滚动事件
-				isload: true,
-				isanimation: true,
-				begainloading: true
-			};
-		},
-		components: {
-			submit,
-		},
-		onLoad(option) {
-			console.log(option)
-			this.recipientId = option.chatID;
-			var data = JSON.parse(option.data)
-			this.recName = data.GroupName;
-			this._getMsg(this.nowpage)
-			// this.nextPage()
-		},
-
-		onReady() {
-			let that = this;
-			uni.getSystemInfo({
-				success(e) {
-					console.log(e);
-					let {
-						windowWidth,
-						windowHeight,
-						safeArea
-					} = e;
-					const query = uni.createSelectorQuery().in(that);
-					query
-						.select('#chatingQzBox')
-						.boundingClientRect(data => {
-
-							that.swiperHeight = (safeArea.bottom - data.top);
-
-						})
-						.exec();
-				}
-			});
-		},
-
-		methods: {
-			// 返回键
-			backOne() {
-				uni.navigateBack({
-					delta: 1
-				})
-			},
-			// 滚动顶部加载上一页
-			nextPage() {
-				// if(this.nowpage > 0 && this.begainloading) {
-				// 	// 出现loading icon
-				// 	this.isload = false
-				// 	this.begainloading = false
-
-				// 	var animation = uni.createAnimation({
-				// 		duration: 1000,
-				// 		timingFunction: 'step-start'
-				// 	})
-
-				// 	this.animation = animation
-
-
-				// 	let i = 1
-				// 	this.loading = setInterval(function() {
-				// 		animation.rotate(i * 30).step()
-				// 		this.animationData = animation.export()
-				// 		i++
-				// 		// 滑动加载数据
-				// 		if(i > 40) {
-				// 			this._getMsg(this.nowpage)
-				// 		}
-
-				// 	}.bind(this), 100)
-				// }
-
-
-			},
-			// 获取聊天数据
-			_getMsg(page) {
-
-				var that = this;
-				that.senId = WxStorage.get("ids");
-				uni.request({
-					url: this.$store.state.piAPI + "/chatgroupc/selectList",
-					method: "post",
-					header: {
-						'content-type': 'application/x-www-form-urlencoded',
-					},
-					data: {
-						gid: that.recipientId
-						//gid: "1"
-					},
-					success: (res) => {
-						// recAvatar: null,//接收者头像
-						// senAvatar:null,//发送者头像
-						var resdata = res.data.data;
-						for (var i = 0; i < resdata.length; i++) {
-							if (resdata[i].avatar == null || resdata[i].avatar == "") {
-								resdata[i].avatar = "";
-							} else {
-								resdata[i].avatar = resdata[i].avatar;
-							}
-							if (resdata[i].sender_id == that.senId) {
-								that.senAvatar = resdata[i].avatar;
-							}
-
-						}
-						let msg = res.data.data;
-						that.getData = msg;
-						// 页数加1
-						//let msg = datas.message()			
-						let maxpages = msg.length
-						if (msg.length > (page + 1) * 10) {
-							maxpages = (page + 1) * 10
-							that.nowpage++
-						} else {
-							// 数据获取完毕
-							that.nowpage = -1
-						}
-						// 数据分页加载 每十条为一页
-						for (var i = 0; i < msg.length; i++) {
-							msg[i].imgUrl = '../../static/images/index/friend-list/' + msg[i].imgUrl
-							// 时间间隔
-							if (i < msg.length - 1) {
-								let t = filter.spaceTime(that.oldTime, msg[i].post_time)
-								if (t) {
-									that.oldTime = t
-								}
-								msg[i].post_time = t
-							}
-							// 补充图片地址
-							if (msg[i].types == 1) {
-								msg[i].message = '../../static/images/index/friend-list/' + msg[i].message
-								that.imgMsg.unshift(msg[i].message)
-							}
-							
-							if (that.isJSON(msg[i].post_message) == true) {
-								msg[i].post_message = JSON.parse(msg[i].post_message)
-							}
-							
-							
-							that.msgs.unshift(msg[i])
-						}
-
-						that.$nextTick(() => {
-							that.isanimation = false
-							that.scrollToView = 'msg' + that.getData[0].id
-						})
-						// 数据加载完毕关闭动画,停止数据加载
-						clearInterval(this.loading)
-						// 关闭loading icon
-						this.isload = true
-						// 开启加载
-						this.begainloading = true
-						
-						console.log(that.msgs, 456)
-
-					}
-				})
-
-			},
-			
-			isJSON(str) {
-			
-				if (typeof str == 'string') {
-					try {
-						var obj = JSON.parse(str);
-						if (typeof obj == 'object' && obj) {
-							return true;
-						} else {
-							return false;
-						}
-			
-					} catch (e) {
-						return false;
-					}
-				}
-			
-			},
-			
-			// 预览图片
-			previewImage(e) {
-
-				let index = 0
-				for (var i = 0; i < this.imgMsg.length; i++) {
-					if (this.imgMsg[i] == e) {
-						index = i
-					}
-				}
-				uni.previewImage({
-					current: index,
-					urls: this.imgMsg,
-					longPressActions: {
-						itemList: ['发送给朋友', '保存图片', '收藏'],
-						success: function(data) {
-							console.log('选中了第' + (data.tapIndex + 1) + '个按钮,第' + (data.index + 1) + '张图片');
-						},
-						fail: function(err) {
-							console.log(err.errMsg);
-						}
-					}
-				});
-			},
-			// 音频播放
-			playVoice(e) {
-			
-				var innerAudioContext = this.innerAudioContext = uni.createInnerAudioContext()
-				// innerAudioContext.autoplay = false
-				innerAudioContext.src = e.voice
-				innerAudioContext.play()
-			
-				setTimeout(() => {
-					innerAudioContext.destroy()
-				}, e.time * 1000)
-			
-			},
-			// 接收输入内容
-			inputs(e) {
-				console.log(e, 123)
-				var that = this;
-				this.isanimation = true
-				let len = this.msgs.length - 1
-				let nowTime = new Date();
-				var sentTime = that.dateFormat("YYYY-mm-dd HH:MM:SS", nowTime);
-				let t = filter.spaceTime(this.oldTime, nowTime)
-				if (t) {
-					this.oldTime = t
-				}
-				nowTime = t
-				let sendMsg = {
-					sender_id: that.senId,
-					post_message: e.message,
-					message_type: e.types,
-					status: 0,
-					post_time: nowTime,
-					avatar: that.senAvatar
-				}
-				
-				var mesagess = null;
-				
-				if (e.message instanceof Object) {
-					mesagess = JSON.stringify(e.message)
-				} else {
-					mesagess = e.message
-				}
-				
-				uni.request({
-					url: this.$store.state.piAPI + "/chatgroupc/submit",
-					method: "post",
-					data: {
-						senderId: that.senId,
-						postMessage: mesagess,
-						messageType: e.types,
-						status: 0,
-						postTime: sentTime,
-						gid: that.recipientId
-					},
-					success: (res) => {}
-				});
-
-				this.msgs.push(sendMsg)
-				this.$nextTick(() => {
-					this.scrollToView = 'msg' + len
-				})
-				if (e.types == 1) {
-					this.imgMsg.push(e.message)
-				}
-			},
-			// 输入框高度
-			heights(e) {
-				this.inputh = e
-				this.goBottom()
-				// console.log('高度' + e)
-			},
-			// 滚动到底部
-			goBottom() {
-				this.isanimation = true
-				this.scrollToView = ''
-				this.$nextTick(() => {
-					let len = this.getData.length - 1
-					this.scrollToView = 'msg' + this.getData[0].id
-				})
-			},
-			// 地图定位
-			covers(e) {
-				let map = [{
-					latitude: e.latitude,
-					longitude: e.longitude,
-					iconPath: '../../static/images/chatroom/placeholder-r.png'
-				}]
-				return (map)
-			},
-			// 导航
-			openLocation(e) {
-				uni.openLocation({
-					latitude: e.latitude,
-					longitude: e.longitude,
-					name: e.name,
-					address: e.address,
-					success: () => {
-						console.log('success')
-					}
-				})
-			},
-			//时间格式化
-			dateFormat(fmt, date) {
-				let ret;
-				const opt = {
-					"Y+": date.getFullYear().toString(), // 年
-					"m+": (date.getMonth() + 1).toString(), // 月
-					"d+": date.getDate().toString(), // 日
-					"H+": date.getHours().toString(), // 时
-					"M+": date.getMinutes().toString(), // 分
-					"S+": date.getSeconds().toString() // 秒
-					// 有其他格式化字符需求可以继续添加,必须转化成字符串
-				};
-				for (let k in opt) {
-					ret = new RegExp("(" + k + ")").exec(fmt);
-					if (ret) {
-						fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
-					};
-				};
-				return fmt;
-			},
-			chatMessageDetail() {
-				uni.navigateTo({
-					url: './chatMessage?'
-				});
-			}
-		},
-		filters: {
-			Msgdate(time) {
-				return filter.Msgdate(time)
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	@import '../../static/scss/index.scss';
-
-	page {
-		height: 100%;
-	}
-
-	.content {
-		height: 100%;
-		background: rgba(244, 244, 244, 1);
-		// background: #2C405A;
-	}
-
-	.set-icon {
-		vertical-align: middle;
-		width: 41rpx;
-		height: auto;
-		margin-right: 35rpx;
-	}
-
-	.chat {
-		height: 100%;
-
-		.chat-main {
-			padding-left: $uni-spacing-col-base;
-			padding-right: $uni-spacing-col-base;
-			padding-top: 16rpx;
-			// padding-bottom: 120rpx;
-			display: flex;
-			flex-direction: column;
-
-			.loading {
-				text-align: center;
-
-				.loading-img {
-					width: 60rpx;
-					height: 60rpx;
-				}
-			}
-		}
-
-		.chat-ls {
-
-			.chat-time {
-				font-size: $uni-font-size-base;
-				color: rgba(39, 40, 50, .6);
-				line-height: 34rpx;
-				padding: 20rpx 0;
-				text-align: center;
-			}
-
-			.msg-m {
-				display: flex;
-				padding: 20rpx 0;
-
-				.user-img {
-					flex: none;
-					width: 88upx;
-					;
-					height: 88upx;
-					;
-					border-radius: $uni-border-radius-base;
-				}
-
-				.message {
-					flex: none;
-					max-width: 480rpx;
-
-				}
-
-				.msg-text {
-					font-size: $uni-font-size-lg;
-					color: $uni-text-color;
-					line-height: 44rpx;
-					padding: 18rpx 34rpx;
-				}
-
-				.msg-img {
-					border-radius: $uni-border-radius-base;
-					max-width: 400rpx;
-				}
-
-				.voice {
-					width: 200rpx;
-					min-width: 110rpx;
-					max-width: 400rpx;
-
-					.voice-img {
-						width: 20px;
-						height: 40rpx;
-						top: 2rpx;
-						// padding-top: -8rpx;
-					}
-
-				}
-
-				// 陶 我想你
-				.msg-map {
-					background: #fff;
-					width: 464rpx;
-					height: 284rpx;
-					overflow: hidden;
-
-					.map-name {
-						font-size: $uni-font-size-lg;
-						color: $uni-text-color;
-						line-height: 44rpx;
-						padding: 18rpx 24rpx 0 24rpx;
-						display: -webkit-box;
-						-webkit-box-orient: vertical;
-						-webkit-line-clamp: 1;
-						overflow: hidden;
-					}
-
-					.map-address {
-						font-size: $uni-font-size-sm;
-						color: $uni-text-color-disable;
-						padding: 0rpx 24rpx;
-						display: -webkit-box;
-						-webkit-box-orient: vertical;
-						-webkit-line-clamp: 1;
-						overflow: hidden;
-					}
-
-					// .map {
-					// 	padding-top: 8rpx;
-					// 	width: 464rpx;
-					// 	height: 190rpx;
-					// 	overflow: hidden;
-					// }
-
-					.map-img {
-						width: 464rpx;
-						// padding-top: 8rpx;
-						height: 310rpx;
-						// top: -70rpx;
-					}
-				}
-
-			}
-
-			.msg-left {
-				flex-direction: row;
-
-				.msg-text {
-					margin-left: 16rpx;
-					border-radius: 0 20rpx 20rpx 20rpx;
-					background-color: rgba(255, 170, 0, 0.8);
-
-				}
-
-				.msg-img {
-					padding-left: 16rpx;
-				}
-
-				.msg-map {
-					margin-left: 16rpx;
-					border-radius: 0 20rpx 20rpx 20rpx;
-				}
-
-				.voice {
-					text-align: right;
-
-					.voice-img {
-						float: left;
-					}
-
-				}
-
-			}
-
-			.msg-right {
-				flex-direction: row-reverse;
-
-				.msg-text {
-					margin-right: 16rpx;
-					background-color: rgba(255, 228, 49, .8);
-					border-radius: 20rpx 0rpx 20rpx 20rpx;
-				}
-
-				.msg-img {
-					padding-right: 16rpx;
-				}
-
-				.msg-map {
-					margin-right: 16rpx;
-					border-radius: 20rpx 0rpx 20rpx 20rpx;
-				}
-
-				.voice {
-					text-align: left;
-
-					.voice-img {
-						float: right;
-						transform: rotate(180deg);
-					}
-
-				}
-
-			}
-		}
-
-	}
-
-	.displaynone {
-		display: none;
-	}
-
-	.sent_name {
-		margin-left: 8px;
-		font-size: 8px;
-		padding-bottom: 5px;
-	}
-</style>
diff --git a/pages/groupChat/chatingcopy.vue b/pages/groupChat/chatingcopy.vue
deleted file mode 100644
index d948384..0000000
--- a/pages/groupChat/chatingcopy.vue
+++ /dev/null
@@ -1,590 +0,0 @@
-<template>
-	<view class="content">
-	
-	<!-- 头部 -->
-	<view class="top-bar">
-		<view class="top-bar-left" @tap="backOne()">
-			<view class="back-img">
-				<image src="@/static/images/common/back.png" />
-			</view>
-		</view>
-		<view class="top-bar-center title">
-			<text>水原希子kiko</text>
-		</view>
-		<view class="top-bar-right search pice">
-			<view class="group-img">
-				<image src="@/static/images/index/friend-list/kiko.jpg"
-							 mode=""/>
-			</view>
-		</view>
-	</view>
-	
-	<scroll-view scroll-y="true"
-							 class="chat"
-							 scroll-with-animation="isanimation"
-							 :scroll-into-view="scrollToView"
-							 @scrolltoupper="nextPage">
-		<view class="chat-main"
-					:style="{paddingBottom:inputh + 'px'}">
-			<view class="loading"
-						:class="{displaynone:isload}">
-				<image src="@/static/images/chatroom/load.png" 
-							 mode=""
-							 class="loading-img"
-							 :animation="animationData"/>
-			</view>
-			<view class="chat-ls" v-for="(item, index) in msgs"
-													  :key="index"
-														:id="'msg' + item.tip">
-				<view class="chat-time" v-if="item.time != ''">{{ item.time | Msgdate }}</view>
-				
-				<view class="msg-m msg-left" v-if="item.id != 1">
-					<image :src="item.imgUrl" 
-								 mode=""
-								 class="user-img" />
-					<!-- text -->
-					<view class="message" v-if="item.types == 0">
-						<view class="msg-text">{{ item.message }}</view>
-					</view>
-					<!-- image -->
-					<view class="message" v-if="item.types == 1">
-						<image :src="item.message" 
-									 class="msg-img"
-									 mode="widthFix"
-									 @tap="previewImage(item.message)"/>
-					</view>
-					<!-- voice -->
-					<view class="message" v-if="item.types == 2">
-						<view class="msg-text voice"
-									:style="{width:item.message.time * 4 + 'px'}"
-									@tap="playVoice(item.message.voice)">
-							<image src="../../static/images/chatroom/sound.png" 
-										 mode=""
-										 class="voice-img"/>
-							{{ item.message.time }} "
-						</view>
-					</view>
-					<!-- location -->
-					<view class="message" v-if="item.types == 3">
-						<view class="msg-map"
-									@tap="openLocation(item.message)">
-							<view class="map-name">{{ item.message.name }}</view>
-							<view class="map-address">{{ item.message.address }}</view>
-							<image src="../../static/images/chatroom/map.jpg" 
-										 mode="aspectFit" 
-										 class="map-img"/>
-						</view>
-					</view>
-					
-				</view>
-				
-				<view class="msg-m msg-right" v-if="item.id == 1">
-					<image :src="item.imgUrl" 
-								 mode=""
-								 class="user-img" />
-					<view class="message" v-if="item.types == 0">
-						<view class="msg-text">{{ item.message }}</view>
-					</view>
-					<view class="message" v-if="item.types == 1">
-						<image :src="item.message" 
-									 class="msg-img"
-									 mode="widthFix"
-									 @tap="previewImage(item.message)"/>
-					</view>
-					<!-- voice -->
-					<view class="message" v-if="item.types == 2">
-						<view class="msg-text voice"
-									:style="{width:item.message.time * 4 + 'px'}"
-									@tap="playVoice(item.message.voice)">
-							{{ item.message.time }} "
-							<image src="@/static/images/chatroom/sound.png"
-										 mode=""
-										 class="voice-img"/>
-						</view>
-					</view>
-					<!-- location -->
-					<view class="message" v-if="item.types == 3">
-						<view class="msg-map"
-									@tap="openLocation(item.message)">
-							<view class="map-name">{{ item.message.name }}</view>
-							<view class="map-address">{{ item.message.address }}</view>
-							<!-- <map class="map"
-									 :latitude="item.message.latitude"
-									 :longitude="item.message.longitude"
-									 :markers="covers(item.message)"/> -->
-							<image src="../../static/images/chatroom/map.jpg"
-										 mode="aspectFit" 
-										 class="map-img"/>
-						</view>
-					</view>
-				</view>
-				
-				
-			</view>
-			
-		</view>
-		<!-- <view class="padbt"></view> -->
-	</scroll-view>
-	<submit @inputs="inputs" 
-					@heights="heights"/>
-	</view>
-</template>
-
-<script>
-	import datas from  '@/debugdate/debugdate.js'
-	import filter from '@/config/filter.js'
-	import submit from '@/components/submit/submit.vue'
-	import WxStorage from "../../static/lib/wxStorage.js"
-	const innerAudioContext = uni.createInnerAudioContext()
-	
-	export default {
-		data() {
-			return {
-				msgs: [],
-				imgMsg: [],
-				oldTime: new Date(),
-				scrollToView: '',
-				inputh: '72',   
-				recipientId: null,//接收者id
-				recAvatar: null,//接收者头像
-				senAvatar:null,//发送者头像
-				animationData: {},            // 动画
-				nowpage: 0,                   // 页码
-				loading: '',                  // 滚动事件
-				isload: true,
-				isanimation: true,
-				begainloading: true
-			};
-		},
-		components:{
-			submit,
-		},
-		onLoad(option) {
-			this.recipientId = option.chatID;
-			this._getMsg(this.nowpage)
-			// this.nextPage()
-		},
-		methods:{
-			// 返回键
-			backOne() {
-				uni.navigateBack({
-					delta: 1
-				})
-			},
-			// 滚动顶部加载上一页
-			nextPage() {
-				if(this.nowpage > 0 && this.begainloading) {
-					// 出现loading icon
-					this.isload = false
-					this.begainloading = false
-					
-					var animation = uni.createAnimation({
-						duration: 1000,
-						timingFunction: 'step-start'
-					})
-					
-					this.animation = animation
-					
-					
-					let i = 1
-					this.loading = setInterval(function() {
-						animation.rotate(i * 30).step()
-						this.animationData = animation.export()
-						i++
-						// 滑动加载数据
-						if(i > 40) {
-							this._getMsg(this.nowpage)
-						}
-						
-					}.bind(this), 100)
-				}
-				
-				
-			},
-			// 获取聊天数据
-			_getMsg(page) {
-				
-				var that = this;
-				uni.request({
-					url:this.$store.state.piAPI + "/chat-records/getSingleMessagePage",
-					method:"get",
-					data:{
-						senderId: WxStorage.get("ids"),
-						recipientId: that.recipientId
-					},
-					success:(res)=> {
-						// recAvatar: null,//接收者头像
-						// senAvatar:null,//发送者头像
-						var resdata = res.data.data.user;
-						for (var i = 0; i < resdata.length; i++) {
-							if(resdata[i].avatar == null || resdata[i].avatar == ""){
-								resdata[i].avatar = "http://s16s652780.51mypc.cn/img/bg/img-logo.png";
-							}
-							
-							if(resdata[i].senderId == WxStorage.get("ids")){
-								that.senAvatar = resdata[i].avatar;
-							}else{
-								that.recAvatar = resdata[i].avatar;
-							}
-						}
-					}
-				})
-				//let msg = res.data.data.chatRecordsIPage.records
-				// 页数加1
-				let msg = datas.message()			
-				let maxpages = msg.length
-				debugger
-				if(msg.length > (page + 1) * 10) {
-					maxpages = (page + 1) * 10
-					this.nowpage++
-				}else {
-					// 数据获取完毕
-					this.nowpage = -1
-				}
-				
-				// 数据分页加载 每十条为一页
-				for(var i = page * 10; i < maxpages; i++){
-					msg[i].imgUrl = '../../static/images/index/friend-list/'+msg[i].imgUrl
-					// 时间间隔
-					if(i < msg.length-1){
-						let t = filter.spaceTime(this.oldTime, msg[i].time)
-						if(t){
-							this.oldTime = t
-						}
-						msg[i].time = t
-					}
-					// 补充图片地址
-					if(msg[i].types == 1){
-						msg[i].message = '../../static/images/index/friend-list/'+msg[i].message
-						this.imgMsg.unshift(msg[i].message)
-					}
-					this.msgs.unshift(msg[i])
-				}
-				
-				this.$nextTick(() => {
-					this.isanimation = false
-					this.scrollToView = 'msg' + this.msgs[maxpages - page * 10 - 1].tip
-				})
-				// 数据加载完毕关闭动画,停止数据加载
-				clearInterval(this.loading)
-				// 关闭loading icon
-				this.isload = true
-				// 开启加载
-				this.begainloading = true
-			},
-			// 预览图片
-			previewImage(e) {
-				
-				let index = 0
-				for(var i =0; i < this.imgMsg.length; i++){
-					if(this.imgMsg[i] == e) {
-						index = i
-					}
-				}
-				uni.previewImage({
-					current: index,
-					urls: this.imgMsg,
-					longPressActions: {
-						itemList: ['发送给朋友', '保存图片', '收藏'],
-						success: function(data) {
-							console.log('选中了第' + (data.tapIndex + 1) + '个按钮,第' + (data.index + 1) + '张图片');
-						},
-						fail: function(err) {
-							console.log(err.errMsg);
-						}
-					}
-				});
-			},
-			// 音频播放
-			playVoice(e) {
-				console.log('ok')
-				innerAudioContext.src = e
-				innerAudioContext.play()
-			},
-			// 接收输入内容
-			inputs(e) {
-				this.isanimation = true
-				let len = this.msgs.length -1				
-				let nowTime = new Date()				
-				let t = filter.spaceTime(this.oldTime, nowTime)
-				if(t){
-					this.oldTime = t
-				}
-				nowTime = t
-				let sendMsg = {
-					id: 1,
-					imgUrl: '../../static/images/index/friend-list/me.jpg',
-					message: e.message,
-					types: e.types,
-					time: nowTime,
-					tip: len
-				}
-				this.msgs.push(sendMsg)
-				this.$nextTick(() => {
-					this.scrollToView = 'msg' + len
-				})
-				if(e.types == 1) {
-					this.imgMsg.push(e.message)
-				}
-			},
-			// 输入框高度
-			heights(e) {
-				this.inputh = e
-				this.goBottom()
-				// console.log('高度' + e)
-			},
-			// 滚动到底部
-			goBottom() {
-				this.isanimation = true
-				this.scrollToView = ''
-				this.$nextTick(() => {
-					let len = this.msgs.length -1
-					this.scrollToView = 'msg' + this.msgs[len].tip
-				}) 
-			},
-			// 地图定位
-			covers(e) {
-				let map = [
-					{
-						latitude: e.latitude,
-						longitude: e.longitude,
-						iconPath: '../../static/images/chatroom/placeholder-r.png'
-					}
-				]
-				return (map)
-			},
-			// 导航
-			openLocation(e) {
-				uni.openLocation({
-					latitude: e.latitude,
-					longitude: e.longitude,
-					name: e.name,
-					address: e.address,
-					success: () => {
-						console.log('success')
-					}
-				})
-			},
-		},
-		filters:{
-			Msgdate(time) {
-			 return	filter.Msgdate(time)
-			}
-		}
-	}
-	
-</script>
-
-<style lang="scss">	
-	@import '../../static/scss/index.scss';
-	.padbt {
-		height: var(--status-bar-height);
-		width: 100%;
-	}
-	page {
-		height: 100%;
-	}
-	.content {
-		height: 100%;
-		background: rgba(244, 244, 244, 1);
-		// background: #2C405A;
-	}
-	
-	.top-bar {
-		background: rgba(244, 244, 244, .96);
-		// box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, .1);
-		border-bottom: 1px solid $uni-border-color;
-		
-		.group-img {
-			image{
-				position: absolute;
-				bottom: 10rpx;
-				right: $uni-spacing-col-base;
-				width: 68rpx;
-				height: 68rpx;
-				border-radius: 16rpx;
-				// justify-content: center;
-			}
-		}
-	}
-
-	.chat {
-		height: 100%;
-		
-		.chat-main {
-			padding-left: $uni-spacing-col-base;
-			padding-right: $uni-spacing-col-base;
-			padding-top: 100rpx;
-			// padding-bottom: 120rpx;
-			display: flex;
-			flex-direction: column;
-			
-			.loading {
-				text-align: center;
-				
-				.loading-img {
-					width: 60rpx;
-					height: 60rpx;
-				}
-			}
-		}
-		
-		.chat-ls {
-			
-			.chat-time {
-				font-size: $uni-font-size-base;
-				color: rgba(39, 40, 50, .6);
-				line-height: 34rpx;
-				padding: 20rpx 0;
-				text-align: center;
-			}
-			
-			.msg-m {
-				display: flex;
-				padding: 20rpx 0;
-				
-				.user-img {
-					flex: none;
-					width: 88upx;;
-					height: 88upx;;
-					border-radius: $uni-border-radius-base;
-				}
-				
-				.message {
-					flex: none;
-					max-width: 480rpx;
-					
-				}
-				
-				.msg-text {
-					font-size: $uni-font-size-lg;
-					color: $uni-text-color;
-					line-height: 44rpx;
-					padding: 18rpx 34rpx;
-				}
-				
-				.msg-img {
-					border-radius: $uni-border-radius-base;
-					max-width: 400rpx;
-				}
-				
-				.voice {
-					width: 200rpx;
-					min-width: 110rpx;
-					max-width: 400rpx;
-					
-					.voice-img {
-						width: 20px;
-						height: 40rpx;
-						top: 2rpx;
-						// padding-top: -8rpx;
-					}
-					
-				}
-				// 陶 我想你
-				.msg-map {
-					background: #fff;
-					width: 464rpx;
-					height: 284rpx;
-					overflow: hidden;
-					
-					.map-name {
-						font-size: $uni-font-size-lg;
-						color: $uni-text-color;
-						line-height: 44rpx;
-						padding: 18rpx 24rpx 0 24rpx;
-						display: -webkit-box;
-						-webkit-box-orient: vertical;
-						-webkit-line-clamp: 1;
-						overflow: hidden;
-					}
-					
-					.map-address {
-						font-size: $uni-font-size-sm;
-						color: $uni-text-color-disable;
-						padding: 0rpx 24rpx;
-						display: -webkit-box;
-						-webkit-box-orient: vertical;
-						-webkit-line-clamp: 1;
-						overflow: hidden;
-					}
-					
-					// .map {
-					// 	padding-top: 8rpx;
-					// 	width: 464rpx;
-					// 	height: 190rpx;
-					// 	overflow: hidden;
-					// }
-					
-					.map-img {
-						width: 464rpx;
-						// padding-top: 8rpx;
-						height: 310rpx;
-						// top: -70rpx;
-					}
-				}
-				
-			}
-			.msg-left {
-				flex-direction: row;
-				.msg-text {
-					margin-left: 16rpx;
-					background-color: #fff;
-					border-radius: 0 20rpx 20rpx 20rpx;
-				}
-				
-				.msg-img {
-					padding-left: 16rpx;
-				}
-				
-				.msg-map {
-					margin-left: 16rpx;
-					border-radius: 0 20rpx 20rpx 20rpx;
-				}
-				
-				.voice {
-					text-align: right;
-					
-					.voice-img {
-						float: left;			
-					}
-					
-				}
-				
-			}
-			
-			.msg-right {
-				flex-direction: row-reverse;
-				.msg-text {
-					margin-right: 16rpx;
-					background-color: rgba(255, 228, 49, .8);
-					border-radius: 20rpx 0rpx 20rpx 20rpx;
-				}
-				
-				.msg-img {
-					padding-right: 16rpx;
-				}
-				
-				.msg-map {
-					margin-right: 16rpx;
-					border-radius: 20rpx 0rpx 20rpx 20rpx;
-				}
-				
-				.voice {
-					text-align: left;
-					
-					.voice-img {
-						float: right;
-						transform: rotate(180deg);					
-					}
-					
-				}
-				
-			}
-		}
-		
-	}
-	.displaynone {
-		display: none;
-	}
-</style>
diff --git a/pages/groupChat/friendrequest.vue b/pages/groupChat/friendrequest.vue
deleted file mode 100644
index ac26ffc..0000000
--- a/pages/groupChat/friendrequest.vue
+++ /dev/null
@@ -1,220 +0,0 @@
-<template>
-	<view class="container">
-		
-		<u-navbar style="position: relative;" :is-fixed="false" :border-bottom="true" :is-back="true"
-			title="好友申请" back-icon-color="#fff" :background="{ background: '#0BB9C8' }" title-color="#fff">
-		
-		</u-navbar>
-		
-		<view class="main">
-			<u-empty class="friendEmpty" v-if="requestList.length == 0" text="暂无好友申请" mode="list"></u-empty>
-			<view class="requestr" v-for="(item, index) in requestList" :key="index">
-
-				<view class="request-top">
-					<view @click="reject(item)" class="reject btn">拒绝</view>
-					<view class="header-img">
-						<image :src="item.avatar" mode="" class="header-img" />
-					</view>
-					<view @click="aggree(item)" class="aggree btn">同意</view>
-				</view>
-
-				<view class="request-center">
-					<view class="title">{{ item.realName }}</view>
-					<view class="time">{{ item.time | date }}</view>
-				</view>
-
-				<view class="notic">
-					<text>留言:</text>
-					<text>{{ item.bz }}</text>
-				</view>
-			</view>
-
-		</view>
-	</view>
-</template>
-
-<script>
-	import datas from '@/debugdate/debugdate.js'
-	import filter from '@/config/filter.js'
-	import WxStorage from "../../static/lib/wxStorage.js"
-	export default {
-		onLoad(option) {
-			this.friendApplication();
-		},
-		data() {
-			return {
-				requestList: []
-			};
-		},
-
-		methods: {
-			// 返回键
-			backOne() {
-				uni.navigateBack({
-					delta: 1
-				})
-			},
-			_FriendRequest() {
-				this.requestList = datas.firendsRequest()
-			},
-			friendApplication() {
-				//获取所有好友申请
-				uni.request({
-					url: this.$store.state.piAPI + "/friend/friendApplication",
-					method: "GET",
-					data: {
-						applicant: WxStorage.get("ids")
-					},
-					success: (res) => {
-						var resdata = res.data.data.records;
-						for (var i = 0; i < resdata.length; i++) {
-							if (resdata[i].avatar == null || resdata[i].avatar == "") {
-								resdata[i].avatar = "https://gimg2.baidu.com/image_search/src=http%3A%2F%2F5b0988e595225.cdn.sohucs.com%2Fimages%2F20191109%2F1d3d4d82715444c4b8284f65e3feed10.jpeg&refer=http%3A%2F%2F5b0988e595225.cdn.sohucs.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1632484198&t=1f4086a5894cbf83b311fa37c276405c";
-							}
-						}
-						this.requestList = resdata;
-					}
-				});
-			},
-			aggree(item) {
-				var that = this;
-				uni.request({
-					url: this.$store.state.piAPI + "/friend/submit",
-					method: "POST",
-					data: {
-						id: item.id,
-						type: 1
-					},
-					success: (res) => {
-						uni.showToast({
-							title: '操作成功',
-							icon: "none",
-							duration: 1000
-						});
-						that.friendApplication();
-					}
-				});
-			},
-			reject(item) {
-				var that = this;
-				uni.request({
-					url: this.$store.state.piAPI + "/friend/submit",
-					method: "POST",
-					data: {
-						id: item.id,
-						type: 2
-					},
-					success: (res) => {
-						uni.showToast({
-							title: '操作成功',
-							icon: "none",
-							duration: 1000
-						});
-						that.friendApplication();
-					}
-				});
-			}
-		},
-		filters: {
-			date(time) {
-				return filter.date(time)
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	@import '../../common/style/common.scss';
-
-	.friendEmpty {
-		position: absolute;
-		margin: auto;
-		top: 0;
-		left: 0;
-		bottom: 0;
-		right: 0;
-	}
-
-	.main {
-		padding: 16rpx 32upx;
-		background: rgba(255, 255, 255, .6);
-
-		.requestr {
-			margin-top: 112rpx;
-			padding: 32upx;
-			background: rgba(255, 255, 255, 1);
-			border-radius: 20upx;
-			box-shadow: 0px 24rpx 64rpx -8rpx rgba(0, 0, 0, .1);
-
-			.request-top {
-				display: flex;
-				flex-direction: row;
-
-				.btn {
-					flex: none;
-					width: 160rpx;
-					height: 64rpx;
-					background: rgba(255, 93, 91, .1);
-					border-radius: 40rpx;
-					text-align: center;
-					font-size: 32upx;
-					font-weight: 400;
-					line-height: 64rpx;
-				}
-
-				.reject {
-					color: rgba(255, 93, 91, 1);
-					background-color: rgba(255, 93, 91, .1);
-				}
-
-				.aggree {
-					color: rgba(39, 40, 50, 1);
-					background-color: rgba(255, 228, 49, 1);
-				}
-
-				.header-img {
-					margin-top: -52rpx;
-					flex: auto;
-					text-align: center;
-
-					image {
-						width: 144rpx;
-						height: 144rpx;
-						border-radius: 50%;
-					}
-				}
-
-			}
-
-			.request-center {
-				text-align: center;
-				padding-top: 20rpx;
-				padding-bottom: 40rpx;
-
-				.title {
-					font-size: 36rpx;
-					font-weight: 500;
-					color: rgba(39, 40, 50, 1);
-					line-height: 50rpx;
-				}
-
-				.time {
-					font-size: 24upx;
-					color: rgba(39, 40, 50, 0.4);
-					line-height: 34rpx;
-				}
-
-			}
-
-			.notic {
-				font-size: 28upx;
-				color: rgba(39, 40, 50, 1);
-				line-height: 40rpx;
-				padding: 10px 32upx;
-				border-radius: 20upx;
-				background: rgba(243, 244, 246, 1);
-			}
-		}
-
-	}
-</style>
diff --git a/pages/groupChat/groupChat.vue b/pages/groupChat/groupChat.vue
deleted file mode 100644
index f4fdfea..0000000
--- a/pages/groupChat/groupChat.vue
+++ /dev/null
@@ -1,560 +0,0 @@
-<!-- 工作台 -->
-<template>
-	<view class="work">
-		<!-- 自定义顶部导航栏 -->
-		<!-- <navBarTop :title="'聊天室'"></navBarTop> -->
-
-		<u-navbar style="position: relative;" :is-fixed="false" :border-bottom="false" :is-back="false" title="好友"
-			:background="{ background: '#0BB9C8' }" title-color="#fff">
-			<u-icon @click="addFriend" slot="right" class="message-icon" mode="widthFix" name="plus" color="#fff">
-			</u-icon>
-		</u-navbar>
-
-		<view class="tab">
-			<u-tabs :list="list" :is-scroll="false" :current="current" active-color="#14B9C8" inactive-color="#595959"
-				height="100" @change="change"></u-tabs>
-		</view>
-
-		<swiper id="swiperBoxPeo" :style="{ height: swiperHeight + 'px' }" :current="current" @change="tabsChange">
-
-			<swiper-item class="swiper-item" v-for="(item, indexs) in list" :key="indexs">
-
-				<scroll-view scroll-y :scroll-top="scrollTop" style="width: 100%;height: 100%;"
-					:refresher-enabled="refresherFlag" :refresher-threshold="threshold" :refresher-triggered="triggered"
-					@refresherrefresh="refreshing" @refresherrestore="refresherrestore">
-
-					<view v-if="indexs == 0" class="main">
-
-						<div>
-							<div class="m-main">
-								<!-- <view class="inTitle">{{Task}}</view> -->
-								<view class="inTmain">
-									<contacts v-for="(item,index) in dataListP" :key="index" :Pdata="item"
-										:fromW="indexs" @refreshTask="refreshTask"></contacts>
-								</view>
-							</div>
-						</div>
-					</view>
-					<view v-if="indexs == 1" class="main">
-						<div>
-							<div class="m-main">
-								<!-- <view class="inTitle">{{Task}}</view> -->
-								<view class="applys" @click="toFriendRequest">
-									<view class="head-wrap">
-										<image src="../../static/apply.png" class="head" />
-										<view v-if=false class="tip">233</view>
-									</view>
-									<view class="content-wrap">
-										<text class="name">好友申请</text>
-										<text class="mess">若人生只如初见</text>
-									</view>
-									<view class="data-wrap">
-										<text class="data"></text>
-									</view>
-								</view>
-								<view class="inTmain">
-									<contacts v-for="(item,index) in dataListTXL" :key="index" :Pdata="item"
-										:fromW="indexs" @refreshTask="refreshTask"></contacts>
-								</view>
-							</div>
-						</div>
-					</view>
-					<view v-if="indexs == 2" class="main">
-						<div>
-							<div class="m-main">
-
-								<view class="applys" @click="newGroup">
-									<view class="head-wraps">
-										<image src="../../static/qunzhu.png" class="head" />
-										<view v-if=false class="tip">233</view>
-									</view>
-									<view class="content-wrap">
-										<text class="name">群组创建</text>
-										<text class="mess">何事秋风悲画扇</text>
-									</view>
-									<view class="data-wrap">
-										<text class="data"></text>
-									</view>
-								</view>
-
-								<!-- <view class="inTitle">{{Task}}</view> -->
-								<view class="inTmain">
-									<contacts v-for="(item,index) in dataListQZ" :key="index" :Pdata="item"
-										:fromW="indexs" @refreshTask="refreshTask"></contacts>
-								</view>
-							</div>
-						</div>
-					</view>
-
-				</scroll-view>
-
-			</swiper-item>
-
-		</swiper>
-
-	</view>
-</template>
-
-<script>
-	import WxStorage from "../../static/lib/wxStorage.js"
-	import axios from '../../static/lib/axios.js'
-	import contacts from '../../components/contacts/contacts.vue'
-	import navBarTop from '../../components/nav-bar-top/nav-bar-top.vue';
-	export default {
-		components: {
-			navBarTop,
-			contacts
-		},
-		data() {
-			return {
-				list: [{
-						name: '正在聊天'
-					},
-					{
-						name: '好友'
-					},
-					{
-						name: '群组'
-					}
-				],
-				swiperHeight: 0,
-				zhanwei: '', //因为小程序中底部和顶部栏占位置,uniapp中不占位置
-				current: 0,
-				show: true,
-				dataListP: [],
-				dataListQZ: [],
-				dataListTXL: [],
-				fromW: '',
-				onTop: false, //是否吸顶
-				rect: '', //页面滚动距离
-				menutop: '', //组件距离顶部的距离
-				titleTop: '', //
-				hello: false,
-				userName: '',
-				scrollTop: 0,
-				threshold: 50,
-				triggered: false,
-				isRefreshing: false, // 是否在刷新中
-				refresherFlag: true,
-			}
-		},
-		activated() {
-			this.beginObj();
-			this.getdataList(0);
-		},
-		onReady() {
-			let that = this;
-			uni.getSystemInfo({
-				success(e) {
-					console.log(e);
-					let {
-						windowWidth,
-						windowHeight,
-						safeArea
-					} = e;
-					const query = uni.createSelectorQuery().in(that);
-					query
-						.select('#swiperBoxPeo')
-						.boundingClientRect(data => {
-
-							that.swiperHeight = (safeArea.bottom - data.top);
-
-						})
-						.exec();
-				}
-			});
-		},
-		methods: {
-
-			
-			refreshing() {
-				
-				if (this.isRefreshing) {
-					return;
-				}
-				this.isRefreshing = true;
-				//界面下拉触发,triggered可能不是true,要设为true
-				if (!this.triggered) {
-					this.triggered = true;
-				}
-				
-				this.dataListP = [];
-				this.dataListQZ = [];
-				this.dataListTXL = [];
-				
-				this.getdataList()
-			},
-
-			refresherrestore() {
-		
-			
-				
-			},
-
-			change(index) {
-				this.current = index;
-			},
-			tabsChange(e) {
-				this.current = e.detail.current;
-				this.getdataList();
-			},
-			beginObj() {
-				this.titleTop = '2.6rem';
-				this.zhanwei = '3rem';
-				//#ifdef MP-WEIXIN
-				console.log('uni-app小程序中')
-				this.titleTop = '0';
-				this.zhanwei = '0';
-				//#endif
-			},
-			onClick(e) {
-				console.log(e, 777878)
-			},
-			getdataList() {
-				var that = this;
-				if (this.current == 0) {
-					uni.request({
-						url: this.$store.state.piAPI + "/chat-records/getChatListPage",
-						method: "get",
-						data: {
-							senderId: WxStorage.get("ids")
-						},
-						success: (res) => {
-							var resdata = res.data.data;
-							for (var i = 0; i < resdata.length; i++) {
-								if (resdata[i].avatar == null || resdata[i].avatar == "") {
-									resdata[i].avatar = "https://gimg2.baidu.com/image_search/src=http%3A%2F%2F5b0988e595225.cdn.sohucs.com%2Fimages%2F20191109%2F1d3d4d82715444c4b8284f65e3feed10.jpeg&refer=http%3A%2F%2F5b0988e595225.cdn.sohucs.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1632484198&t=1f4086a5894cbf83b311fa37c276405c";
-								}
-							}
-							that.dataListP = resdata;
-
-							that.scrollTop = 0;
-
-							setTimeout(() => {
-								that.triggered = false; //触发onRestore,并关闭刷新图标 正常应该放在请求成功得接口里
-								that.isRefreshing = false;
-							}, 1000)
-
-						}
-					});
-				} else if (this.current == 1) {
-					uni.request({
-						url: this.$store.state.piAPI + "/friend/page?current=1&size=9999",
-						method: "get",
-						data: {
-							applicant: WxStorage.get("ids")
-						},
-						success: (res) => {
-							var resdata = res.data.data.records;
-							for (var i = 0; i < resdata.length; i++) {
-
-								if (resdata[i].avatar == null || resdata[i].avatar == "") {
-									resdata[i].avatar = "https://gimg2.baidu.com/image_search/src=http%3A%2F%2F5b0988e595225.cdn.sohucs.com%2Fimages%2F20191109%2F1d3d4d82715444c4b8284f65e3feed10.jpeg&refer=http%3A%2F%2F5b0988e595225.cdn.sohucs.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1632484198&t=1f4086a5894cbf83b311fa37c276405c";
-								}
-							}
-
-							that.dataListTXL = resdata;
-
-							that.scrollTop = 0;
-							
-							setTimeout(() => {
-								that.triggered = false; //触发onRestore,并关闭刷新图标 正常应该放在请求成功得接口里
-								that.isRefreshing = false;
-							}, 1000)
-
-						}
-					})
-				} else if (this.current == 2) {
-
-					uni.request({
-						url: this.$store.state.piAPI + "/chatgroup/selectList",
-						method: "GET",
-						data: {
-							id: WxStorage.get("ids")
-						},
-						contentType: "application/x-www-form-urlencoded",
-						success: (res) => {
-							var resdata = res.data.data;
-							for (var i = 0; i < resdata.length; i++) {
-								if (resdata[i].avatar == null || resdata[i].avatar == "") {
-									resdata[i].avatar = "../../static/images/people.png";
-								}
-							}
-							that.dataListQZ = resdata;
-
-							that.scrollTop = 0;
-							
-							setTimeout(() => {
-								that.triggered = false; //触发onRestore,并关闭刷新图标 正常应该放在请求成功得接口里
-								that.isRefreshing = false;
-							}, 1000)
-
-						}
-					});
-				}
-			},
-			refreshTask() {
-				this.getdataList(1);
-			},
-			toFriendRequest() {
-				uni.navigateTo({
-					url: '/pages/groupChat/friendrequest?'
-				});
-			},
-			addFriend() {
-				uni.navigateTo({
-					url: '/pages/groupChat/addFriend?'
-				});
-			},
-			newGroup() {
-				uni.navigateTo({
-					url: '/pages/groupChat/newGroup/newGroup?'
-				});
-			}
-		},
-		mounted() {
-			
-
-		},
-		onShow() {
-			this.beginObj();
-			this.getdataList(0);
-		},
-		onPageScroll(e) {
-			this.rect = e.scrollTop
-		},
-		watch: {
-			rect() {
-				if (this.rect >= this.menutop) {
-					this.onTop = true
-				} else {
-					this.onTop = false
-				}
-			}
-		},
-		onLoad: function(options) {
-			this.userName = options.login;
-			// if(options.txlType == 2){
-			// this.current = 0;
-			// }
-
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	.work {
-		width: 100%;
-		height: 100%;
-		padding: 0;
-		box-sizing: border-box;
-
-		.hello {
-			position: absolute;
-			top: 0;
-			left: 25%;
-			width: 50%;
-			height: 2rem;
-			border-radius: 20rem;
-			color: #fff;
-			background-color: rgba($color: #000000, $alpha: 0.5);
-			display: flex;
-			align-items: center;
-			justify-content: center;
-		}
-
-		.center {
-			padding-top: 0.5rem;
-			display: flex;
-			align-items: center;
-			justify-content: space-around;
-
-			.left,
-			.right {
-				display: flex;
-				align-items: center;
-				justify-content: center;
-				flex-direction: column;
-
-				image {
-					width: 4rem;
-					height: 4rem;
-				}
-			}
-		}
-
-		.main {
-			margin-top: 0.225rem;
-
-			.m-title {
-				width: 100%;
-				height: 2rem;
-				display: flex;
-				align-items: center;
-				justify-content: space-around;
-				padding-top: 0.8rem;
-				padding-bottom: 0.5rem;
-				// border: 1px solid #B3E19D;
-				box-sizing: border-box;
-
-				.m-t {
-					padding-bottom: 0.5rem;
-					box-sizing: border-box;
-				}
-			}
-
-			.m-titletop {
-				width: 95%;
-				height: 2.2rem;
-				display: flex;
-				align-items: center;
-				justify-content: space-around;
-				padding-top: 0.8rem;
-				padding-bottom: 0.5rem;
-				// border: 1px solid #B3E19D;
-				box-sizing: border-box;
-				position: fixed;
-				background-color: #fff;
-				z-index: 3;
-				border-bottom: 1px solid rgba($color: #000000, $alpha: 0.3);
-
-				.m-t {
-					padding-bottom: 0.5rem;
-					box-sizing: border-box;
-				}
-
-			}
-
-			.m-main {
-				box-sizing: border-box;
-
-				.main {
-					padding: 0 16px;
-				}
-			}
-		}
-	}
-
-	.message-icon {
-		font-size: 28px;
-		margin-right: 27rpx;
-	}
-
-	.top-bar {
-		background-color: rgba(255, 255, 255, .96);
-		// background-color: #42B983;
-		box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, .1);
-	}
-
-	.applys {
-		display: flex;
-		// margin: 40rpx 0;
-		margin: 16rpx 32rpx !important;
-		height: 130rpx;
-		align-items: center;
-		border-bottom: 1px solid rgba(0, 0, 0, .1);
-
-		&:active {
-			background-color: rgba(243, 244, 246, 1);
-		}
-
-		.head-wrap {
-			position: relative;
-
-
-			image {
-				width: 96rpx;
-				height: 96rpx;
-				border-radius: 20upx;
-				background-color: rgba(255, 228, 49, 1);
-			}
-
-			.tip {
-				position: absolute;
-				top: -6rpx;
-				left: 68rpx;
-				height: 36rpx;
-				min-width: 20rpx;
-				min-height: 20rpx;
-				background-color: rgba(255, 93, 91, 1);
-				border-radius: 18rpx;
-				padding: 0 6rpx;
-				font-size: 24upx;
-				color: rgba(255, 228, 49, 1);
-				line-height: 36rpx;
-				text-align: center;
-			}
-		}
-
-		.head-wraps {
-			position: relative;
-
-
-			image {
-				width: 96rpx;
-				height: 96rpx;
-				border-radius: 20upx;
-				background-color: rgba(85, 170, 255, 1.0);
-			}
-
-			.tip {
-				position: absolute;
-				top: -6rpx;
-				left: 68rpx;
-				height: 36rpx;
-				min-width: 20rpx;
-				min-height: 20rpx;
-				background-color: rgba(255, 93, 91, 1);
-				border-radius: 18rpx;
-				padding: 0 6rpx;
-				font-size: 24upx;
-				color: rgba(255, 228, 49, 1);
-				line-height: 36rpx;
-				text-align: center;
-			}
-		}
-
-		.content-wrap {
-			margin-left: 32rpx;
-			flex: 1;
-
-			.name {
-				display: block;
-				color: rgba(39, 40, 50, 1);
-				font-size: 36rpx;
-				font-weight: 400;
-				line-height: 50rpx;
-			}
-
-			.mess {
-				display: block;
-				color: rgba(39, 40, 50, .6);
-				font-size: 28upx;
-				line-height: 40rpx;
-				display: -webkit-box;
-				-webkit-box-orient: vertical;
-				-webkit-line-clamp: 1;
-				overflow: hidden;
-			}
-		}
-
-		.data-wrap {
-
-			justify-content: right;
-
-			.data {
-				font-size: 24upx;
-				color: rgba(39, 40, 50, 0.4);
-				line-height: 50rpx;
-			}
-		}
-	}
-
-	.swiper-item {
-		overflow-y: auto !important;
-	}
-
-	.tab {
-		margin-bottom: 10rpx;
-	}
-</style>
diff --git a/pages/groupChat/modify/modify.vue b/pages/groupChat/modify/modify.vue
deleted file mode 100644
index da9a71d..0000000
--- a/pages/groupChat/modify/modify.vue
+++ /dev/null
@@ -1,223 +0,0 @@
-<template>
-	<view class="modifybox" :animation="animationData">
-		<view class="mask" :animation="animationData2"></view>
-		<view class="content">
-			<view class="m_title">{{ type }}</view>
-			<view class="close" @tap="show"><image src="../../../static/images/group/close.png" mode="widthFix"></image></view>
-			<view class="name" v-if="type == '群名'">
-				<view class="namebox"><input type="text" v-model="name" /></view>
-				<view class="notice-btn"><view class="modify-btn" @tap="modifyInfo('name')">修改</view></view>
-			</view>
-			<view class="notice" v-if="type == '公告'">
-				<view class="notice-content" v-show="!isModify">{{ notice }}</view>
-				<view class="notice-text" v-show="isModify"><textarea auto-height="true" v-model="notice" placeholder="" /></view>
-				<view class="notice-btn">
-					<view class="modify-btn" @tap="modifyNotice" v-show="!isModify && isManager">修改</view>
-					<view class="confirm-btn" @tap="modifyInfo('notice')" v-show="isModify">确定</view>
-				</view>
-			</view>
-			<view class="nickName" v-if="type == '昵称'">
-				<view class="nickbox"><input type="text" v-model="nickName" /></view>
-				<view class="notice-btn"><view class="modify-btn" @tap="modifyInfo('nickName')">修改</view></view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-export default {
-	data() {
-		return {
-			isModify: false,
-			animationData: {},
-			animationData2: {},
-			isShow: false,
-			name: '',
-			notice: '',
-			nickName: ''
-		};
-	},
-	props: ['isManager', 'groupInfo', 'n_Name', 'type'],
-	created() {
-		setTimeout(() => {
-			this.name = this.groupInfo.name;
-			this.notice = this.groupInfo.notice;
-			this.nickName = this.n_Name;
-		}, 100);
-	},
-	methods: {
-		show() {
-			this.isShow = !this.isShow;
-			var animation = uni.createAnimation({
-				duration: 600,
-				timingFunction: 'ease'
-			});
-			var animation2 = uni.createAnimation({
-				duration: 400,
-				timingFunction: 'ease'
-			});
-			if (this.isShow) {
-				animation.bottom(0).step();
-				this.animationData = animation.export();
-				setTimeout(
-					function() {
-						animation2.opacity(1).step();
-						this.animationData2 = animation2.export();
-					}.bind(this),
-					600
-				);
-			} else {
-				animation2.opacity(0).step();
-				this.animationData2 = animation2.export();
-				setTimeout(
-					function() {
-						animation.bottom('-100vh').step();
-						this.animationData = animation.export();
-						setTimeout(() => {
-							this.isModify = false;
-						}, 500);
-					}.bind(this),
-					400
-				);
-			}
-		},
-		modifyNotice() {
-			this.isModify = !this.isModify;
-		},
-		modifyInfo(type) {
-			let key = null;
-			let value = null;
-			if (type == 'name') {
-				key = 'name';
-				value = this.name;
-			} else if (type == 'notice') {
-				key = 'notice';
-				value = this.notice;
-				this.isModify = !this.isModify;
-			} else if(type =="nickName"){
-				key = 'nickName';
-				value = this.nickName;
-			}
-			this.$emit('modify', { [key]: value });
-			this.show()
-		}
-	}
-};
-</script>
-
-<style lang="scss" scoped>
-.modifybox {
-	position: fixed;
-	bottom: -100vh;
-	left: 0rpx;
-	right: 0rpx;
-	height: 100vh;
-	display: flex;
-	justify-content: center;
-	align-items: center;
-	z-index: 1000;
-	.mask {
-		position: absolute;
-		bottom: 0rpx;
-		left: 0rpx;
-		right: 0rpx;
-		height: 100vh;
-		background: rgba(0, 0, 0, 0.5);
-		opacity: 0;
-	}
-	.content {
-		background: white;
-		width: 80vw;
-		height: auto;
-		padding-bottom: 20rpx;
-		box-sizing: border-box;
-		position: relative;
-		display: block;
-		.m_title {
-			height: 80rpx;
-			line-height: 80rpx;
-			width: 100%;
-			border-bottom: 2rpx solid #ccc;
-			text-align: center;
-			// background: red;
-		}
-		.close {
-			position: absolute;
-			top: 0rpx;
-			right: 0;
-			width: 80rpx;
-			height: 80rpx;
-			display: flex;
-			justify-content: center;
-			align-items: center;
-			image {
-				height: 50rpx;
-				width: 50rpx;
-			}
-		}
-	}
-	.name {
-		margin: 30rpx;
-		margin-top: 40rpx;
-		width: calc(100% - 60rpx);
-		font-size: 32rpx;
-		.namebox {
-			border: 2rpx solid #ccc;
-			input {
-				padding: 10rpx 5%;
-				text-align: center;
-			}
-		}
-	}
-	.notice-btn {
-		margin-top: 30rpx;
-		display: flex;
-		justify-content: center;
-		.modify-btn {
-			padding: 10rpx;
-			background: red;
-			color: white;
-			width: 100rpx;
-			text-align: center;
-		}
-		.confirm-btn {
-			padding: 10rpx;
-			background: #5a9bec;
-			color: white;
-			width: 100rpx;
-			text-align: center;
-		}
-	}
-	.notice {
-		margin: 0rpx 30rpx;
-		width: calc(100% - 60rpx);
-		font-size: 32rpx;
-		.notice-content {
-			margin-top: 40rpx;
-		}
-		.notice-text {
-			margin-top: 40rpx;
-			// height: 80rpx;
-			border: 2rpx solid #ccc;
-			textarea {
-				max-height: 300rpx;
-				width: 90%;
-				padding: 10rpx 5%;
-			}
-		}
-	}
-	.nickName {
-		margin: 30rpx;
-		margin-top: 40rpx;
-		width: calc(100% - 60rpx);
-		font-size: 32rpx;
-		.nickbox {
-			border: 2rpx solid #ccc;
-			input {
-				padding: 10rpx 5%;
-				text-align: center;
-			}
-		}
-	}
-}
-</style>
diff --git a/pages/groupChat/newGroup/newGroup.vue b/pages/groupChat/newGroup/newGroup.vue
deleted file mode 100644
index 5ef5d99..0000000
--- a/pages/groupChat/newGroup/newGroup.vue
+++ /dev/null
@@ -1,238 +0,0 @@
-<template>
-	<view class="registerUser">
-
-		<view class="group-chat-box" id="groupChatBox" :style="{ height: swiperHeight + 'px' }">
-
-			<u-form :model="form" ref="uForm">
-
-				<u-checkbox-group @change="checkboxGroupChange" :wrap='true' :size="40">
-
-					<u-checkbox v-model="item.checked" v-for="(item, index) in friend" :key="index"
-						:name="item.friendid" shape="circle"
-						style="padding: 16rpx 0; height: 92rpx; position: relative; box-sizing: border-box;">
-
-						<view class="head-wrap">
-							<image
-								:src="item.avatar == '' ? 'https://gimg2.baidu.com/image_search/src=http%3A%2F%2F5b0988e595225.cdn.sohucs.com%2Fimages%2F20191109%2F1d3d4d82715444c4b8284f65e3feed10.jpeg&refer=http%3A%2F%2F5b0988e595225.cdn.sohucs.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1632484198&t=1f4086a5894cbf83b311fa37c276405c' : item.avatar" />
-						</view>
-
-						<view style="margin-left: 106rpx">
-							{{item.realName}}
-						</view>
-
-					</u-checkbox>
-				</u-checkbox-group>
-
-			</u-form>
-
-		</view>
-
-
-		<view class="establish-box">
-
-			<u-button class="submit" type='primary' @click="submit">
-				立即创建
-			</u-button>
-
-		</view>
-
-	</view>
-</template>
-
-<script>
-	import WxStorage from "../../../static/lib/wxStorage.js"
-	export default {
-		data() {
-			return {
-				friend: [],
-				form: {
-					groupname: '',
-					groupcontent: '',
-					groupnotice: '',
-					groupmember: '',
-				},
-				swiperHeight: 0
-			}
-		},
-		onReady() {
-			this.$refs.uForm.setRules(this.rules);
-			let that = this;
-			uni.getSystemInfo({
-				success(e) {
-					console.log(e);
-					let {
-						windowWidth,
-						windowHeight,
-						safeArea
-					} = e;
-					const query = uni.createSelectorQuery().in(that);
-					query
-						.select('#groupChatBox')
-						.boundingClientRect(data => {
-					
-							that.swiperHeight = (safeArea.bottom - 58);
-					
-						})
-						.exec();
-				}
-			});
-		},
-		onLoad() {
-			this.getFriend();
-		},
-		methods: {
-			submit() {
-				var that = this;
-				var d = that.form;
-				if (d.groupmember == "") {
-					uni.showToast({
-						title: '请至少选择一个群成员',
-						icon: "none",
-						duration: 1000
-					});
-					return;
-				}
-				d.time = that.currTime();
-				d.groupid = WxStorage.get("ids");
-				uni.request({
-					url: that.$store.state.piAPI + "/chatgroup/submit",
-					method: "POST",
-					data: d,
-					success: (res) => {
-						uni.showToast({
-							title: '创建成功',
-							icon: "none",
-							duration: 1000
-						});
-
-						uni.switchTab({
-							url: '/pages/groupChat/groupChat?'
-						});
-					}
-				});
-			},
-			currTime() {
-				var date = new Date();
-				var Y = date.getFullYear() + '-';
-				var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
-				var D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) + ' ';
-				var h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':';
-				var m = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':';
-				var s = (date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds());
-				return Y + M + D + h + m + s;
-			},
-			checkboxGroupChange(e) {
-				var arr = "";
-				for (var i = 0; i < e.length; i++) {
-					arr += e[i] + ",";
-				}
-				var obj = arr.substr(0, arr.length - 1);
-				this.form.groupmember = obj;
-			},
-			getFriend() {
-				var that = this;
-				uni.request({
-					url: this.$store.state.piAPI + "/friend/page?current=1&size=9999",
-					method: "get",
-					data: {
-						applicant: WxStorage.get("ids")
-					},
-					success: (res) => {
-						var resdata = res.data.data.records;
-
-						that.friend = resdata;
-
-						var str = '';
-						resdata.forEach((item, index) => {
-
-							if (index > 2) return;
-
-							str += item.realName + '、';
-
-						})
-
-						this.form.groupname = (str.substr(0, str.length - 1) + '···')
-					}
-				})
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	@import '../../../common/style/common.scss';
-	
-	.warp {
-		display: flex;
-		align-items: center;
-		justify-content: center;
-		height: 100%;
-	}
-
-	.rect {
-		text-align: center;
-		width: 120px;
-		height: 120px;
-	}
-
-	.submit {
-		border: none;
-		width: 94%;
-		height: 86rpx;
-		line-height: 86rpx;
-		box-sizing: border-box;
-		border-radius: 15rpx;
-		color: #ffffff;
-		font-size: 38rpx;
-
-	}
-
-	.registerUser {
-		background: #f7f7f7;
-
-		.group-chat-box {
-			padding: 0 1.2rem;
-			box-sizing: border-box;
-			overflow-y: auto;
-		}
-
-		.establish-box {
-			position: relative;
-			height: 116rpx;
-			background: #fff;
-			text-align: center;
-
-			uni-button {
-				margin: 0;
-				position: absolute;
-				top: 0;
-				left: 0;
-				right: 0;
-				bottom: 0;
-				margin: auto;
-			}
-
-		}
-	}
-
-	.head-wrap {
-		position: absolute;
-		top: 0;
-		left: 66rpx;
-		bottom: 0;
-		right: auto;
-		margin: auto;
-		width: 66rpx;
-		height: 66rpx;
-		border-radius: 50%;
-		background: #e7e7e7;
-
-		uni-image {
-			width: 66rpx;
-			height: 66rpx;
-			border-radius: 50%;
-
-			vertical-align: middle;
-		}
-	}
-</style>
diff --git a/pages/home/home - f.vue b/pages/home/home - f.vue
deleted file mode 100644
index fb6a7dd..0000000
--- a/pages/home/home - f.vue
+++ /dev/null
@@ -1,556 +0,0 @@
-<template>
-	<view class="container">
-		<!-- 头部 start -->
-		<view class="head">
-			<u-navbar :is-fixed="false" :border-bottom="false" :is-back="false" title=""
-				:background="{ background: '#0BB9C8' }">
-				<view class="nav-wrap">
-					<picker mode="selector" :range="positionArr" range-key="name" @change="changePicker"
-						class="picker-box">
-						{{ position }}
-						<u-icon name="arrow-down" class="arrow" size="18" color="#C9C9C9"></u-icon>
-					</picker>
-					<image src="/static/images/rider.png" class="rider" mode="widthFix" v-if="!focus"></image>
-
-					<view class="search-input" v-else>
-						<u-search height="50" placeholder="关键字" @blur="handleSearchBlur" :show-action="false"
-							v-model="keyword"></u-search>
-					</view>
-
-					<view class="tool">
-						<image src="/static/images/home/search.png" class="icon search-icon" mode="widthFix"
-							@click="handleFocus" v-if="!focus"></image>
-						<image src="/static/images/home/message.png" class="icon message-icon" mode="widthFix"></image>
-						<image src="/static/images/home/qr.png" class="icon qr-icon" mode="widthFix"></image>
-					</view>
-				</view>
-			</u-navbar>
-			<view class="head-bg"></view>
-			<swiper class="swiper-box" :indicator-dots="false" :autoplay="true" :interval="3000" :duration="1000">
-				<swiper-item v-for="(item, index) in bannerList" :key="index">
-					<navigator :url="item.url" hover-class="none" class="swiper-item">
-						<image :src="item.img" class="banner"></image>
-					</navigator>
-				</swiper-item>
-			</swiper>
-		</view>
-		<!-- 头部 end -->
-
-		<!-- 头部按钮 start -->
-		<!-- <view class="nav">
-			<u-grid :col="5" :border="false">
-				<u-grid-item bg-color="transparent" v-for="(item, index) in navButton" :key="index">
-					<navigator :url="item.url" hover-class="none" class="nav-item">
-						<image :src="item.img" mode="widthFix" class="nav-item-img"></image>
-						<view class="nav-item-name">{{ item.name }}</view>
-					</navigator>
-				</u-grid-item>
-			</u-grid>
-		</view> -->
-		<!-- 头部按钮 end -->
-
-		<!-- 公告 start -->
-		<!-- <view class="notice-box">
-			<image src="/static/images/home/notice.png" class="img" mode="widthFix"></image>
-			<view class="notice-info">
-				<navigator hover-class="none" class="notice-cell" v-for="(item, index) in noticeList" :key="index">
-					<image :src="item.img" class="icon" mode="widthFix"></image>
-					<view class="text">{{item.title}}</view>
-					<u-icon name="arrow-right" size="12" color="#C9C9C9"></u-icon>
-				</navigator>
-			</view>
-		</view> -->
-		<!-- 公告 end -->
-
-		<!-- 服务按钮 start -->
-		<view class="service-box">
-			<u-grid :col="4" :border="false">
-				<u-grid-item bg-color="transparent" v-for="(item, index) in serviceButton" :key="index"
-					@click="goBusinessPage(item.url,index,item.name)">
-					<!-- <navigator url="" hover-class="none" class="service-item">
-						<image :src="item.img" mode="widthFix" class="img"></image>
-						<view class="name">{{ item.name }}</view>
-					</navigator> -->
-					<view url="" hover-class="none" class="service-item">
-						<image :src="item.img" mode="widthFix" class="img"></image>
-						<view class="name">{{ item.name }}</view>
-					</view>
-				</u-grid-item>
-				<u-grid-item bg-color="transparent" key="8">
-					<navigator url="/pages/service/service" hover-class="none" class="service-item">
-						<image src="/static/images/home/s8.png" mode="widthFix" class="img"></image>
-						<view class="name">更多</view>
-					</navigator>
-				</u-grid-item>
-			</u-grid>
-		</view>
-		<!-- 服务按钮 end -->
-
-		<!-- 新闻模块 start -->
-		<view class="news" style="display: none;">
-			<navigator hover-class="none" url="/pages/news/list" class="cell">
-				<view class="ctitle">通知公告</view>
-				<view class="more">
-					更多
-					<u-icon name="arrow-right" color="#A6ABB5" size="16"></u-icon>
-				</view>
-			</navigator>
-
-			<view class="news-list">
-				<navigator url="/pages/news/detail" hover-class="none" class="news-item"
-					v-for="(item, index) in newsList" :key="index">
-					<view class="left">
-						<view class="info">
-							[火灾防范] 严禁在建筑内的共用走道、楼梯间、安全出口处等公共区域停放电动车或者为电动车充电。
-						</view>
-						<view class="date">
-							<image src="/static/images/home/date.png" class="icon" mode=""></image>
-							2021.06.17
-						</view>
-					</view>
-					<image src="" mode="" class="img"></image>
-				</navigator>
-				<u-loadmore :status="status" />
-			</view>
-			<!-- 新闻模块 end -->
-		</view>
-			<!-- <u-button class="ccbut" type="primary" @click="openVideo('Mains')">测试点视频通话:主播</u-button>
-			<u-button class="ccbut" type="primary" @click="openVideo('Receiver')">测试点视频通话:第二个</u-button> -->
-	</view>
-</template>
-
-<script>
-	import {
-		fakePosition,
-		fakeBannerList,
-		fakeNoticeList,
-		fakeNavButton,
-		fakeServiceButton
-	} from "@/api/mock/home.js";
-	export default {
-		data() {
-			return {
-				position: '',
-				positionArr: [],
-				status: 'loadmore',
-				list: 15,
-				page: 0,
-				keyword: '',
-				focus: false,
-				bannerList: [],
-				noticeList: [],
-				newsList: [{}, {}],
-				navButton: [],
-				serviceButton: []
-			};
-		},
-		mounted() {
-			var socketOpen = false;
-			//websocket连接
-			// uni.connectSocket({
-			// 	url: 'ws://192.168.0.111:9034/websocket'
-			// });
-			
-			// uni.onSocketOpen(function(res) {
-			// 	socketOpen = true;
-			// 	sendSocketMessage();
-			// });
-			
-			// function sendSocketMessage() {
-			// 	var data = {
-			// 				type: 'my',
-			// 				id: '1415922341221867522'
-			// 			}
-			// 	if (socketOpen) {
-			// 		uni.sendSocketMessage({
-			// 			data: JSON.stringify(data)
-			// 		});
-			// 	}
-			// }
-			
-			// uni.onSocketMessage(function(res) {
-			// 	console.log('收到服务器内容:' + res.data);
-			// });
-			
-		},
-		onLoad() {
-			
-			// 后续将改为与后端联动
-			// 加载banner数据
-			fakePosition().then(data => {
-				this.position = data.position;
-				this.positionArr = data.positionArr;
-			});
-			// 加载banner数据
-			fakeBannerList().then(data => {
-				this.bannerList = data;
-			});
-			// 加载通知公告数据
-			fakeNoticeList().then(data => {
-				this.noticeList = data;
-			});
-			// 加载顶部按钮数据
-			fakeNavButton().then(data => {
-				this.navButton = data;
-			});
-			// 加载服务按钮数据
-			fakeServiceButton().then(data => {
-				this.serviceButton = data;
-			});
-		},
-		onReachBottom() {
-			// 后续将改为与后端联动
-			if (this.page >= 3) return;
-			this.status = 'loading';
-			this.page = ++this.page;
-			setTimeout(() => {
-				this.list += 10;
-				if (this.page >= 3) this.status = 'nomore';
-				else this.status = 'loading';
-				this.newsList.push(...[{}, {}]);
-			}, 2000);
-		},
-		methods: {
-			openVideo(val){
-				uni.navigateTo({
-				    // url: '../videoCall/videoCall?state=' + val + '&type=video'
-					url: '../videoCall/videoCall?state=Mains&type=video&myname=wo&toname=1424647828935819265'
-				});
-			},
-			changePicker(e) {
-				console.log(this.pickerArr[e.detail.value].name);
-				this.position = this.pickerArr[e.detail.value].name;
-			},
-			//页面跳转
-			goBusinessPage(url, index, name) {
-				// console.log(url,index)
-				if (name == "位置查看") {
-					uni.request({
-						url: this.$store.state.piAPI + "/blade-user/page",
-						method: "get",
-						data: {
-							size: 99999
-						},
-						success: (res) => {
-							var re = res.data.data.records;
-							var d = [];
-							for (var k in re) {
-								if (re[k].latitude != '' && re[k].longitude != '') {
-									d.push(re[k]);
-								}
-							}
-							console.log(d);
-							uni.navigateTo({
-								url: `${url}?data=${JSON.stringify(d)}`
-							})
-						}
-					})
-					return;
-				}
-
-				uni.navigateTo({
-					url: url
-				})
-			},
-			handleFocus() {
-				this.focus = !this.focus;
-			},
-			handleSearchBlur() {
-				this.focus = false;
-			}
-		}
-	};
-</script>
-
-<style lang="scss">
-	.container {
-		background-color: #f7f7f7;
-		min-height: 100vh;
-		overflow: hidden;
-	}
-
-	.head {
-		position: relative;
-		top: 0;
-		left: 0;
-		z-index: 1;
-	}
-
-	.head-bg {
-		position: absolute;
-		left: 0px;
-		top: 0px;
-		z-index: -1;
-		width: 750rpx;
-		height: 270rpx;
-		background: #0bb9c8;
-	}
-
-	.nav-wrap {
-		width: 100%;
-		padding: 0 22rpx;
-		display: flex;
-		justify-content: space-between;
-		align-items: center;
-
-		.picker-box {
-			flex: 1;
-			display: flex;
-			align-items: center;
-			justify-content: flex-start;
-			font-size: 32rpx;
-			font-family: Microsoft YaHei;
-			font-weight: bold;
-			color: #ffffff;
-
-			.arrow {
-				margin-left: 10rpx;
-			}
-		}
-
-		.rider {
-			flex-shrink: 0;
-			width: 131rpx;
-			height: auto;
-		}
-
-		.search-input {
-			width: 300rpx;
-			height: 50rpx;
-		}
-
-		.tool {
-			flex: 1;
-			display: flex;
-			align-items: center;
-			justify-content: flex-end;
-
-			.icon {
-				height: auto;
-			}
-
-			.search-icon {
-				width: 40rpx;
-				margin-right: 34rpx;
-			}
-
-			.message-icon {
-				width: 32rpx;
-				margin-right: 27rpx;
-			}
-
-			.qr-icon {
-				width: 37rpx;
-			}
-		}
-	}
-
-	.swiper-box {
-		margin: 50rpx auto 0;
-		width: 710rpx;
-		height: 253rpx;
-
-		.swiper-item {
-			width: 100%;
-			height: 100%;
-
-			.banner {
-				width: 100%;
-				height: 100%;
-			}
-		}
-	}
-
-	.nav {
-		margin: 0rpx 0;
-		box-sizing: border-box;
-		padding: 0 10rpx;
-
-		&-item {
-			width: 100%;
-			box-sizing: border-box;
-			display: flex;
-			flex-direction: column;
-			align-items: center;
-			justify-content: space-between;
-			height: 130rpx;
-
-			&-img {
-				width: 80rpx;
-				height: 80rpx;
-			}
-
-			&-name {
-				font-size: 26rpx;
-				font-family: PingFang SC;
-				font-weight: 400;
-				color: #585b61;
-			}
-		}
-	}
-
-	.notice-box {
-		display: flex;
-		align-items: center;
-		background: #ffffff;
-		border-radius: 20px 20px 20px 20px;
-		margin: 0 20rpx;
-		padding: 30rpx 20rpx;
-
-		.img {
-			width: 75rpx;
-			height: auto;
-			margin-right: 36rpx;
-			margin-left: 10rpx;
-		}
-
-		.notice-info {
-			flex: 1;
-
-			.notice-cell:first-of-type {
-				margin-bottom: 15rpx;
-			}
-		}
-
-		.notice-cell {
-			display: flex;
-			align-items: center;
-			font-size: 24rpx;
-			font-family: PingFang SC;
-			font-weight: 500;
-			color: #585b61;
-
-			.icon {
-				width: 63rpx;
-				margin-right: 18rpx;
-			}
-
-			.text {
-				flex: 1;
-				min-width: 0;
-				overflow: hidden;
-				text-overflow: ellipsis;
-				display: -webkit-box;
-				-webkit-line-clamp: 1;
-				-webkit-box-orient: vertical;
-			}
-		}
-	}
-
-	.service-box {
-		background: #ffffff;
-		border-radius: 20px 20px 20px 20px;
-		margin: 30rpx 20rpx 0;
-		padding: 0rpx 20rpx;
-
-		.service-item {
-			display: flex;
-			flex-direction: column;
-			justify-content: space-between;
-			align-items: center;
-			width: 100%;
-			height: 120rpx;
-			font-size: 26rpx;
-			font-family: PingFang SC;
-			font-weight: 500;
-			color: #585b61;
-
-			.img {
-				width: 70rpx;
-				height: auto;
-			}
-		}
-	}
-
-	.news {
-		background: #ffffff;
-		border-radius: 20px 20px 20px 20px;
-		margin: 30rpx 20rpx 60rpx;
-		padding: 30rpx 20rpx;
-
-		.cell {
-			display: flex;
-			justify-content: space-between;
-			align-items: center;
-
-			.ctitle {
-				font-size: 32rpx;
-				font-family: PingFang SC;
-				font-weight: bold;
-				color: #585b61;
-			}
-
-			.more {
-				display: flex;
-				align-items: center;
-				font-size: 26rpx;
-				font-family: PingFang SC;
-				font-weight: 500;
-				color: #a6abb5;
-			}
-		}
-
-		.news-list {
-			margin-top: 30rpx;
-
-			.news-item {
-				&:not(:last-of-type) {
-					padding: 0 0 30rpx;
-					margin-bottom: 30rpx;
-					border-bottom: 1px solid #eeeeee;
-				}
-
-				display: flex;
-				align-items: center;
-				justify-content: space-between;
-
-				.left {
-					flex: 1;
-					height: 160rpx;
-					display: flex;
-					flex-direction: column;
-					justify-content: space-around;
-
-					.info {
-						min-width: 0;
-						overflow: hidden;
-						text-overflow: ellipsis;
-						display: -webkit-box;
-						-webkit-line-clamp: 2;
-						-webkit-box-orient: vertical;
-
-						font-size: 28rpx;
-						font-family: PingFang SC;
-						font-weight: 500;
-						color: #585b61;
-						line-height: 36rpx;
-					}
-
-					.date {
-						display: flex;
-						align-items: center;
-
-						.icon {
-							width: 21rpx;
-							height: 21rpx;
-							margin-right: 9rpx;
-						}
-
-						font-size: 26rpx;
-						font-family: PingFang SC;
-						font-weight: 500;
-						color: #a6abb5;
-					}
-				}
-
-				.img {
-					flex-shrink: 0;
-					width: 252rpx;
-					height: 160rpx;
-					border-radius: 20rpx;
-					background-color: #82848a;
-				}
-			}
-		}
-	}
-</style>
diff --git a/pages/home/home.vue b/pages/home/home.vue
deleted file mode 100644
index 71d27ef..0000000
--- a/pages/home/home.vue
+++ /dev/null
@@ -1,706 +0,0 @@
-<template>
-	<view class="container">
-		<!-- 头部 start -->
-		<view class="head">
-			<u-navbar :is-fixed="false" :border-bottom="false" :is-back="false" title="智慧保安"
-				:background="{ background: '#0BB9C8' }" title-color="#fff" title-size='32rpx' title-bold>
-				<view class="nav-wrap">
-					<!-- <picker mode="selector" :range="positionArr" range-key="name" @change="changePicker"
-						class="picker-box">
-						{{ position }}
-						<u-icon name="arrow-down" class="arrow" size="18" color="#C9C9C9"></u-icon>
-					</picker> -->
-
-					<!-- <image src="/static/images/rider.png" class="rider" mode="widthFix" v-if="!focus"></image>
-
-					<view class="search-input" v-else>
-						<u-search height="50" placeholder="关键字" @blur="handleSearchBlur" :show-action="false"
-							v-model="keyword"></u-search>
-					</view> -->
-
-					<view class="tool">
-						<!-- 	<image src="/static/images/home/search.png" class="icon search-icon" mode="widthFix"
-							@click="handleFocus" v-if="!focus"></image> -->
-						<image src="/static/images/home/message.png" class="icon message-icon" mode="widthFix"></image>
-						<!-- <image src="/static/images/home/qr.png" class="icon qr-icon" mode="widthFix"></image> -->
-					</view>
-				</view>
-			</u-navbar>
-			<view class="head-bg"></view>
-			<swiper class="swiper-box" :indicator-dots="false" :autoplay="true" :interval="3000" :duration="1000">
-				<swiper-item v-for="(item, index) in bannerList" :key="index">
-					<navigator :url="item.url" hover-class="none" class="swiper-item">
-						<image :src="item.img" class="banner"></image>
-					</navigator>
-				</swiper-item>
-			</swiper>
-		</view>
-		<!-- 头部 end -->
-
-		<!-- 头部按钮 start -->
-		<!-- <view class="nav">
-			<u-grid :col="5" :border="false">
-				<u-grid-item bg-color="transparent" v-for="(item, index) in navButton" :key="index">
-					<navigator :url="item.url" hover-class="none" class="nav-item">
-						<image :src="item.img" mode="widthFix" class="nav-item-img"></image>
-						<view class="nav-item-name">{{ item.name }}</view>
-					</navigator>
-				</u-grid-item>
-			</u-grid>
-		</view> -->
-		<!-- 头部按钮 end -->
-
-		<!-- 公告 start -->
-		<!-- <view class="notice-box">
-			<image src="/static/images/home/notice.png" class="img" mode="widthFix"></image>
-			<view class="notice-info">
-				<navigator hover-class="none" class="notice-cell" v-for="(item, index) in noticeList" :key="index">
-					<image :src="item.img" class="icon" mode="widthFix"></image>
-					<view class="text">{{item.title}}</view>
-					<u-icon name="arrow-right" size="12" color="#C9C9C9"></u-icon>
-				</navigator>
-			</view>
-		</view> -->
-		<!-- 公告 end -->
-
-		<!-- 服务按钮 start -->
-		<view class="service-box">
-			<u-grid :col="4" :border="false">
-				<u-grid-item bg-color="transparent" v-for="(item, index) in serviceButton" :key="index"
-					@click="goBusinessPage(item.url,index,item.name)">
-					<!-- <navigator url="" hover-class="none" class="service-item">
-						<image :src="item.img" mode="widthFix" class="img"></image>
-						<view class="name">{{ item.name }}</view>
-					</navigator> -->
-					<view url="" hover-class="none" class="service-item">
-						<image :src="item.img" mode="widthFix" class="img"></image>
-						<view class="name">{{ item.name }}</view>
-					</view>
-				</u-grid-item>
-				<u-grid-item bg-color="transparent" key="8">
-					<navigator url="/pages/service/service" hover-class="none" class="service-item">
-						<image src="/static/images/home/s8.png" mode="widthFix" class="img"></image>
-						<view class="name">更多</view>
-					</navigator>
-				</u-grid-item>
-			</u-grid>
-		</view>
-		<!-- 服务按钮 end -->
-
-		<!-- 新闻模块 start -->
-		<view class="news">
-
-			<navigator hover-class="none" url="/pages/news/listsss" class="cell">
-				<view class="ctitle">通知通告</view>
-				<view hover-class="bg-light" class="more" @click="goArticle()">
-					更多
-					<u-icon name="arrow-right" color="#A6ABB5" size="16"></u-icon>
-				</view>
-			</navigator>
-
-			<view class="news-list">
-				<view hover-class="none" class="news-item" @click="goArticleDetail(item)"
-					v-for="(item, index) in newsList" :key="index">
-					<view class="left">
-						<view class="info">
-							{{item.title}}
-						</view>
-						
-						<view class="new-content u-line-1" v-html="item.content">
-							
-						</view>
-						<view class="date">
-							<!-- <image src="/static/images/home/date.png" class="icon" mode=""></image> -->
-							<view class="advisory-title-name">{{item.category == 1 ? '单位公告' : '公安公告'}}</view>
-							<view class="advisory-title-time">{{item.releaseTime}}</view>
-						</view>
-					</view>
-				</view>
-				<u-loadmore :status="status" />
-			</view>
-
-			<!-- 新闻模块 end -->
-		</view>
-
-		<!-- <u-button class="ccbut" type="primary" @click="openVideo('Mains')">测试点视频通话:主播</u-button>
-			<u-button class="ccbut" type="primary" @click="openVideo('Receiver')">测试点视频通话:第二个</u-button> -->
-	</view>
-</template>
-
-<script>
-	import {
-		fakePosition,
-		fakeBannerList,
-		fakeNoticeList,
-		fakeNavButton,
-		fakeServiceButton
-	} from "@/api/mock/home.js";
-	export default {
-		data() {
-			return {
-				position: '',
-				positionArr: [],
-				status: 'loadmore',
-				list: 15,
-
-				keyword: '',
-				focus: false,
-				bannerList: [],
-				noticeList: [],
-				page: 1,
-				pagesize: 2,
-				newsList: [],
-				navButton: [],
-				serviceButton: []
-			};
-		},
-		mounted() {
-			var socketOpen = false;
-			//websocket连接
-			// uni.connectSocket({
-			// 	url: 'ws://192.168.0.111:9034/websocket'
-			// });
-
-			// uni.onSocketOpen(function(res) {
-			// 	socketOpen = true;
-			// 	sendSocketMessage();
-			// });
-
-			// function sendSocketMessage() {
-			// 	var data = {
-			// 				type: 'my',
-			// 				id: '1415922341221867522'
-			// 			}
-			// 	if (socketOpen) {
-			// 		uni.sendSocketMessage({
-			// 			data: JSON.stringify(data)
-			// 		});
-			// 	}
-			// }
-
-			// uni.onSocketMessage(function(res) {
-			// 	console.log('收到服务器内容:' + res.data);
-			// });
-
-		},
-		onLoad() {
-
-		},
-		onShow() {
-
-			this.serviceButton = []
-
-			// 后续将改为与后端联动
-			// 加载banner数据
-			fakePosition().then(data => {
-				this.position = data.position;
-				this.positionArr = data.positionArr;
-			});
-			// 加载banner数据
-			fakeBannerList().then(data => {
-				this.bannerList = data;
-			});
-			// 加载通知公告数据
-			fakeNoticeList().then(data => {
-				this.noticeList = data;
-			});
-			// 加载顶部按钮数据
-			fakeNavButton().then(data => {
-				this.navButton = data;
-			});
-			// 加载服务按钮数据
-			fakeServiceButton().then(data => {
-
-				if (this.$store.state.UserData.rname[0] == '保安') {
-
-					data.forEach((item, index) => {
-						if (item.name == '保安单位') {
-							data.splice(index, 1)
-						}
-					})
-
-					data.forEach((item, index) => {
-						if (item.name == '保安管理') {
-							data.splice(index, 1)
-						}
-					})
-
-					data.forEach((item, index) => {
-						if (item.name == '保安员位置') {
-							data.splice(index, 1)
-						}
-					})
-
-					data.forEach((item, index) => {
-						if (item.name == '现场检查') {
-							data.splice(index, 1)
-						}
-					})
-
-				} else if (this.$store.state.UserData.rname[0] == '保安公司管理员') {
-
-					data.forEach(item => {
-						if (item.name == '保安单位') {
-							data.splice(0, 1)
-						}
-					})
-
-					data.forEach((item, index) => {
-						if (item.name == '现场检查') {
-							data.splice(index, 1)
-						}
-					})
-
-				}
-
-				this.serviceButton = data;
-
-			});
-
-			this.page = 1
-			this.pagesize = 2
-			this.newsList = []
-
-			//获取新闻信息
-			this.getArtcilePageList();
-
-		},
-		onReachBottom() {
-			if (this.status == 'nomore') return;
-			this.page = ++this.page;
-			setTimeout(() => {
-				this.getArtcilePageList();
-			}, 2000);
-		},
-		methods: {
-			//点击更多跳转资讯页
-			goArticle() {
-				uni.navigateTo({
-					url: '../message/message'
-				})
-			},
-			//去跳转详情页面
-			goArticleDetail(item) {
-
-				console.log(item)
-
-				if (item.content != undefined && item.content.indexOf('<p>') != -1) {
-
-					var reg1 = /<\/?p[^>]*>/g;
-
-					item.content = item.content.replace(reg1, '');
-
-					var reg2 = /[&nbsp;]/g;
-
-					item.content = item.content.replace(reg2, '');
-
-				}
-
-				uni.navigateTo({
-					url: '../message/messageDetail?detailData=' + JSON.stringify(item)
-				});
-
-			},
-			openVideo(val) {
-				uni.navigateTo({
-					// url: '../videoCall/videoCall?state=' + val + '&type=video'
-					url: '../videoCall/videoCall?state=Mains&type=video&myname=wo&toname=1424647828935819265'
-				});
-			},
-			changePicker(e) {
-				console.log(this.pickerArr[e.detail.value].name);
-				this.position = this.pickerArr[e.detail.value].name;
-			},
-			//页面跳转
-			goBusinessPage(url, index, name) {
-				// console.log(url,index)
-				// if (name == "位置查看") {
-				// 	uni.request({
-				// 		url: this.$store.state.piAPI + "/blade-user/page",
-				// 		method: "get",
-				// 		data: {
-				// 			size: 99999
-				// 		},
-				// 		success: (res) => {
-				// 			var re = res.data.data.records;
-				// 			var d = [];
-				// 			for (var k in re) {
-				// 				if (re[k].latitude != '' && re[k].longitude != '') {
-				// 					d.push(re[k]);
-				// 				}
-				// 			}
-				// 			console.log(d);
-				// 			uni.navigateTo({
-				// 				url: `${url}?data=${JSON.stringify(d)}`
-				// 			})
-				// 		}
-				// 	})
-				// 	return;
-				// }
-
-				uni.navigateTo({
-					url: url
-				})
-			},
-			handleFocus() {
-				this.focus = !this.focus;
-			},
-			handleSearchBlur() {
-				this.focus = false;
-			},
-			//获取资讯信息
-			getArtcilePageList() {
-				var that = this;
-				uni.request({
-					url: this.$store.state.piAPI + "/blade-desk/notice/page?category=2&deptId=" + this.$store.state
-						.UserData
-						.dept_id,
-					method: 'GET',
-					data: {
-						type: 1,
-						current: this.page,
-						size: this.pagesize
-					},
-					success: (res) => {
-						if (res.data.code == 200) {
-							if (res.data.data.records) {
-
-								//如果总数小于pageSize,不做其他操作
-								if (res.data.data.total < this.pagesize) {
-									that.newsList = res.data.data.records;
-								} else {
-									if (res.data.data.records.length < this.pagesize) {
-										//如果数量小于分页数量,则为最后一页
-										this.status = 'nomore'
-									} else {
-										//如果数量小于分页数量,则为最后一页
-										this.status = 'loading';
-									}
-									res.data.data.records.forEach(item => {
-										console.log(item);
-										that.newsList.push(item);
-									})
-								}
-							}
-							uni.stopPullDownRefresh();
-
-						}
-					}
-				});
-			}
-		}
-	};
-</script>
-
-<style lang="scss">
-	.container {
-		background-color: #f7f7f7;
-		min-height: 100vh;
-		overflow: hidden;
-	}
-
-	.head {
-		position: relative;
-		top: 0;
-		left: 0;
-		z-index: 1;
-	}
-
-	.head-bg {
-		position: absolute;
-		left: 0px;
-		top: 0px;
-		z-index: -1;
-		width: 750rpx;
-		height: 270rpx;
-		background: #0bb9c8;
-	}
-
-	.nav-wrap {
-		width: 100%;
-		padding: 0 22rpx;
-		display: flex;
-		justify-content: space-between;
-		align-items: center;
-
-		.picker-box {
-			flex: 1;
-			display: flex;
-			align-items: center;
-			justify-content: flex-start;
-			font-size: 32rpx;
-			font-family: Microsoft YaHei;
-			font-weight: bold;
-			color: #ffffff;
-
-			.arrow {
-				margin-left: 10rpx;
-			}
-		}
-
-		.rider {
-			flex-shrink: 0;
-			width: 131rpx;
-			height: auto;
-		}
-
-		.search-input {
-			width: 300rpx;
-			height: 50rpx;
-		}
-
-		.tool {
-			flex: 1;
-			display: flex;
-			align-items: center;
-			justify-content: flex-end;
-
-			.icon {
-				height: auto;
-			}
-
-			.search-icon {
-				width: 40rpx;
-				margin-right: 34rpx;
-			}
-
-			.message-icon {
-				width: 32rpx;
-				margin-right: 27rpx;
-			}
-
-			.qr-icon {
-				width: 37rpx;
-			}
-		}
-	}
-
-	.swiper-box {
-		margin: 50rpx auto 0;
-		width: 710rpx;
-		height: 253rpx;
-
-		.swiper-item {
-			width: 100%;
-			height: 100%;
-
-			.banner {
-				width: 100%;
-				height: 100%;
-			}
-		}
-	}
-
-	.nav {
-		margin: 0rpx 0;
-		box-sizing: border-box;
-		padding: 0 10rpx;
-
-		&-item {
-			width: 100%;
-			box-sizing: border-box;
-			display: flex;
-			flex-direction: column;
-			align-items: center;
-			justify-content: space-between;
-			height: 130rpx;
-
-			&-img {
-				width: 80rpx;
-				height: 80rpx;
-			}
-
-			&-name {
-				font-size: 26rpx;
-				font-family: PingFang SC;
-				font-weight: 400;
-				color: #585b61;
-			}
-		}
-	}
-
-	.notice-box {
-		display: flex;
-		align-items: center;
-		background: #ffffff;
-		border-radius: 20px 20px 20px 20px;
-		margin: 0 20rpx;
-		padding: 30rpx 20rpx;
-
-		.img {
-			width: 75rpx;
-			height: auto;
-			margin-right: 36rpx;
-			margin-left: 10rpx;
-		}
-
-		.notice-info {
-			flex: 1;
-
-			.notice-cell:first-of-type {
-				margin-bottom: 15rpx;
-			}
-		}
-
-		.notice-cell {
-			display: flex;
-			align-items: center;
-			font-size: 24rpx;
-			font-family: PingFang SC;
-			font-weight: 500;
-			color: #585b61;
-
-			.icon {
-				width: 63rpx;
-				margin-right: 18rpx;
-			}
-
-			.text {
-				flex: 1;
-				min-width: 0;
-				overflow: hidden;
-				text-overflow: ellipsis;
-				display: -webkit-box;
-				-webkit-line-clamp: 1;
-				-webkit-box-orient: vertical;
-			}
-		}
-	}
-
-	.service-box {
-		background: #ffffff;
-		border-radius: 20px 20px 20px 20px;
-		margin: 30rpx 20rpx 0;
-		padding: 0rpx 20rpx;
-
-		.service-item {
-			display: flex;
-			flex-direction: column;
-			justify-content: space-between;
-			align-items: center;
-			width: 100%;
-			height: 120rpx;
-			font-size: 26rpx;
-			font-family: PingFang SC;
-			font-weight: 500;
-			color: #585b61;
-
-			.img {
-				width: 70rpx;
-				height: auto;
-			}
-		}
-	}
-
-	.news {
-		background: #ffffff;
-		border-radius: 20px 20px 20px 20px;
-		margin: 30rpx 20rpx 60rpx;
-		padding: 30rpx 20rpx;
-
-		.cell {
-			display: flex;
-			justify-content: space-between;
-			align-items: center;
-
-			.ctitle {
-				font-size: 32rpx;
-				font-family: PingFang SC;
-				font-weight: bold;
-				color: #585b61;
-			}
-
-			.more {
-				display: flex;
-				align-items: center;
-				font-size: 26rpx;
-				font-family: PingFang SC;
-				font-weight: 500;
-				color: #a6abb5;
-			}
-		}
-
-		.news-list {
-			margin-top: 30rpx;
-
-			.news-item {
-				&:not(:last-of-type) {
-					padding: 0 0 30rpx;
-					margin-bottom: 30rpx;
-					border-bottom: 1px solid #eeeeee;
-				}
-
-				display: flex;
-				align-items: center;
-				justify-content: space-between;
-
-				.left {
-					width: 100%;
-					height: 160rpx;
-					display: flex;
-					flex-direction: column;
-					justify-content: space-around;
-
-					.info {
-						min-width: 0;
-						overflow: hidden;
-						text-overflow: ellipsis;
-						display: -webkit-box;
-						-webkit-line-clamp: 2;
-						-webkit-box-orient: vertical;
-
-						font-size: 28rpx;
-						font-family: PingFang SC;
-						font-weight: 550;
-						color: #585b61;
-						line-height: 36rpx;
-						letter-spacing: 1px;
-					}
-					
-					.new-content {
-						margin: 12rpx 0;
-						font-size: 0.46rem;
-						color: #4d4d4d;
-					}
-
-					.date {
-						display: flex;
-						justify-content: space-between;
-						align-items: center;
-
-						.icon {
-							width: 21rpx;
-							height: 21rpx;
-							margin-right: 9rpx;
-						}
-
-						font-size: 26rpx;
-						font-family: PingFang SC;
-						font-weight: 500;
-						color: #a6abb5;
-
-
-						.advisory-title-name {
-							font-size: 0.7rem;
-							letter-spacing: 1px;
-						}
-
-						.advisory-title-time {
-							// margin-left: 0.8rem;
-							font-size: 0.7rem;
-						}
-					}
-				}
-
-				.img {
-					flex-shrink: 0;
-					width: 232rpx;
-					height: 140rpx;
-					border-radius: 20rpx;
-					background-color: #82848a;
-					margin-left: 0.5rem;
-				}
-			}
-		}
-	}
-</style>
diff --git a/pages/login/login-account.vue b/pages/login/login-account.vue
deleted file mode 100644
index efac432..0000000
--- a/pages/login/login-account.vue
+++ /dev/null
@@ -1,370 +0,0 @@
-<template>
-	<view class="container">
-		<u-navbar :is-fixed="false" :border-bottom="false" :is-back="false" back-icon-name="arrow-leftward" title="登录"
-			:background="{ background: '#fff' }" title-color="#000000">
-			<view class="" slot="right">
-				<image src="/static/images/login/c8.png" class="set-icon" mode="widthFix"></image>
-			</view>
-		</u-navbar>
-
-		<view class="content">
-			<view class="top">
-				<view class="titie">
-					<span>智慧保安互联网APP</span>
-				</view>
-				<view class="cell">
-					<view class="name">账号</view>
-					<view class="input-box">
-						<input type="text" v-model="names" placeholder="请输入账号" class="ipt" placeholder-class="hold"
-							@blur="handleInputCheck" />
-					</view>
-				</view>
-				<view class="cell">
-					<view class="name">密码</view>
-					<view class="input-box">
-						<input type="password" v-model="passwords" placeholder="请输入密码" class="ipt"
-							placeholder-class="hold" @blur="handleInputCheck" />
-					</view>
-				</view>
-
-				<!-- <view class="agree">
-					登录即代表同意
-					<text class="a">《用户协议》</text>
-					和
-					<text class="a">《隐私政策》</text>
-				</view> -->
-				<button class="submit" @click="longing(names,passwords)" :disabled="disabled">登录</button>
-				<!-- <view class="tip">未注册用户注册审核通过后才可登录</view> -->
-				<!-- <navigator url="/pages/registerUser/registerUser" hover-class="none" class="change">注册 ></navigator> -->
-			</view>
-
-			<!-- 社交账号登录 -->
-			<!-- 	<view class="bottom">
-				<view class="tag"></view>
-				<view class="tsp">江西北邮信息通信技术有限公司</view>
-			</view> -->
-		</view>
-		<!--  -->
-	</view>
-</template>
-
-<script>
-	import WxStorage from "../../static/lib/wxStorage.js" //微信Storage
-	export default {
-		data() {
-			return {
-				icons: '',
-				names: '',
-				passwords: '',
-				msg: '',
-				colors: '#123456',
-				disabled: true
-			}
-		},
-		computed: {
-			
-			OURpass() {
-				return this.$store.state.loging;
-			}
-		},
-		methods: {
-			judgeUse() {
-				var login = WxStorage.get("init") //重复登录
-				var name = WxStorage.get("name")
-				var userID = WxStorage.get("ids")
-				var accounts = WxStorage.get("accounts");
-				var pass = WxStorage.get("pass");
-				console.log(login);
-				if (login == "true" && name != '') {
-					//获取用户信息
-					var data = {
-						userName: name,
-						userID: userID
-					}
-					this.$store.commit('getUse', data)
-					// wx.reLaunch({
-					// 	url: '/pages/alarm_list/alarm_list?login=' + data.userName
-					// })
-					this.names = accounts;
-					this.passwords = pass;
-				}
-			},
-			judgeMsg() {
-				this.msg = this.names == '' ? (this.passwords == '' ? '账号密码不能为空' : '账号不能为空') : (this.passwords == '' ?
-					'密码不能为空' : this.passwords.length <= 4 ? '密码最少6位' :
-					'格式正确');
-				if (this.msg == "格式正确") {
-					this.icons = 'success';
-					this.colors = '#4ac503';
-					this.disabled = false
-				} else {
-					this.icons = 'warn';
-					this.colors = '#d53c00';
-				}
-			},
-			longing(name, pass) {
-				var data = {
-					name: name,
-					pass: pass,
-				}
-				this.judgeMsg();
-				if (this.msg == "格式正确") {
-					uni.showNavigationBarLoading();
-					this.$store.dispatch('loging', data)
-				} else {
-					uni.showToast({
-						title: '格式错误,请重试',
-						icon: 'none',
-						duration: 2000
-					});
-				}
-			},
-			handleInputCheck() {
-				//this.disabled = false
-			},
-			zhuce() {
-				uni.navigateTo({
-					url: '/pages/registerUser/registerUser'
-				})
-			}
-		},
-		created() {
-			this.judgeUse();
-		},
-		watch: {
-			names() {
-				this.judgeMsg();
-			},
-			passwords() {
-				this.judgeMsg();
-			},
-			OURpass() {
-				if (this.OURpass == true) {
-					// this.passwords = '******';
-					uni.hideNavigationBarLoading();
-					uni.redirectTo({
-						url: '/pages/home/home'
-					})
-					return '成功登录'
-				} else {
-					this.icons = 'warn';
-					this.colors = '#d53c00';
-					this.msg = '账号密码错误';
-					this.$store.commit('loginReset', this); //重置登录
-					uni.hideNavigationBarLoading();
-					return '未成功登录'
-				}
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	.titie {
-		display: block;
-		width: 420rpx;
-		height: auto;
-		margin: 0 auto 120rpx;
-
-		span {
-			font-weight: 600;
-			font-size: 6vw;
-			color: #14b9c8;
-		}
-	}
-
-	.container {
-		min-height: 100vh;
-		overflow: hidden;
-
-		.set-icon {
-			vertical-align: middle;
-			width: 41rpx;
-			height: auto;
-			margin-right: 35rpx;
-		}
-	}
-
-	.content {
-		display: flex;
-		flex-direction: column;
-		justify-content: space-around;
-		align-items: center;
-
-		height: 90vh;
-		width: 100%;
-
-		.top {
-			width: 100%;
-		}
-
-		.logo {
-			display: block;
-			width: 281rpx;
-			height: auto;
-			margin: 0 auto 120rpx;
-		}
-
-		.cell {
-			width: 100%;
-			padding: 0 85rpx;
-			box-sizing: border-box;
-			margin-top: 36rpx;
-
-			.name {
-				font-size: 22rpx;
-				font-family: Source Han Sans CN;
-				font-weight: 400;
-				color: #3e4a59;
-				line-height: 30rpx;
-				opacity: 0.72;
-			}
-
-			.input-box {
-				padding: 30rpx 0;
-				border-bottom: 2rpx solid #f6f6f6;
-				display: flex;
-				align-items: center;
-
-				.code {
-					font-size: 22rpx;
-					font-family: Source Han Sans CN;
-					font-weight: 400;
-					color: #0d0d0d;
-					line-height: 30rpx;
-
-					text {
-						color: #14b9c8;
-					}
-				}
-
-				.ipt {
-					flex: 1;
-					// height: 24rpx;
-					font-size: 24rpx;
-				}
-
-				.hold {
-					font-size: 26rpx;
-					font-family: Source Han Sans CN;
-					font-weight: 400;
-					color: #3e4a59;
-					line-height: 30px;
-					opacity: 0.45;
-				}
-			}
-		}
-
-		.agree {
-			margin: 27rpx 95rpx 0;
-			font-size: 22rpx;
-			font-family: Adobe Heiti Std;
-			font-weight: normal;
-			color: #cacaca;
-			line-height: 34rpx;
-
-			.a {
-				color: #000000;
-			}
-		}
-
-		.submit {
-			margin: 60rpx 90rpx 0;
-			border: none;
-			width: 572rpx;
-			height: 86rpx;
-			line-height: 86rpx;
-			box-sizing: border-box;
-			border-radius: 15rpx;
-			background-color: #14b9c8;
-			color: #ffffff;
-
-			&::after {
-				content: none;
-			}
-
-			&::before {
-				content: none;
-			}
-
-			&[disabled='true'] {
-				background: #e4e4e4;
-				font-size: 36rpx;
-				font-family: Source Han Sans CN;
-				font-weight: 500;
-				color: #ffffff;
-			}
-		}
-
-		.tip {
-			margin-top: 30rpx;
-			text-align: center;
-			font-size: 22rpx;
-			font-family: Adobe Heiti Std;
-			font-weight: normal;
-			color: #cacaca;
-			line-height: 34rpx;
-		}
-
-		.tsp {
-			margin-top: 30rpx;
-			text-align: center;
-			font-size: 28rpx;
-			font-family: Adobe Heiti Std;
-			font-weight: normal;
-			color: #a8a8a8;
-			line-height: 34rpx;
-		}
-
-		.change {
-			margin-top: 20rpx;
-			text-align: center;
-			font-size: 22rpx;
-			font-family: Adobe Heiti Std;
-			font-weight: normal;
-			color: #14b9c8;
-			line-height: 34rpx;
-		}
-
-		.tag {
-			display: flex;
-			justify-content: center;
-			align-items: center;
-			font-size: 22rpx;
-			font-family: Adobe Heiti Std;
-			font-weight: normal;
-			color: #9f9f9f;
-			line-height: 34rpx;
-
-			&::before {
-				content: '';
-				display: block;
-				width: 160rpx;
-				height: 1px;
-				background: #d8d8d8;
-				opacity: 0.86;
-			}
-
-			&::after {
-				content: '';
-				display: block;
-				width: 160rpx;
-				height: 1px;
-				background: #d8d8d8;
-				opacity: 0.86;
-			}
-		}
-
-		.chat-arr {
-			margin-top: 50rpx;
-			display: flex;
-			align-items: center;
-			justify-content: space-between;
-
-			.icon {
-				width: 73rpx;
-				height: 73rpx;
-			}
-		}
-	}
-</style>
diff --git a/pages/login/login-phone.vue b/pages/login/login-phone.vue
deleted file mode 100644
index 21c1985..0000000
--- a/pages/login/login-phone.vue
+++ /dev/null
@@ -1,290 +0,0 @@
-<template>
-	<view class="container">
-		<u-navbar :is-fixed="false" :border-bottom="false" :is-back="false" back-icon-name="arrow-leftward" title="登录"
-			:background="{ background: '#fff' }" title-color="#000000">
-			<view class="" slot="right">
-				<image src="/static/images/user/c8.png" class="set-icon" mode="widthFix"></image>
-			</view>
-		</u-navbar>
-
-		<view class="content">
-			<view class="top">
-				<image src="/static/images/logo.png" class="logo" mode="widthFix"></image>
-				<view class="cell">
-					<view class="name">手机号</view>
-					<view class="input-box">
-						<input type="number" v-model="phone" placeholder="请输入手机号码" class="ipt" placeholder-class="hold"
-							@blur="handleInputCheck" />
-					</view>
-				</view>
-				<view class="cell">
-					<view class="name">短信验证码</view>
-					<view class="input-box">
-						<input type="number" v-model="code" placeholder="请输入验证码" class="ipt" placeholder-class="hold"
-							@blur="handleInputCheck" />
-						<view class="code" @click="sendCode" v-if="count === 60">获取验证码</view>
-						<view class="code" v-else><text>{{ count }}</text>秒重新获取</view>
-					</view>
-				</view>
-				<!-- <view class="agree">
-					登录即代表同意
-					<text class="a">《用户协议》</text>
-					和
-					<text class="a">《隐私政策》</text>
-				</view> -->
-				<button class="submit" @click="submit" :disabled="disabled">登录</button>
-				<view class="tip">未注册用户验证后将自动注册并登录</view>
-				<navigator url="/pages/login/login-account" hover-class="none" class="change">密码登录 ></navigator>
-			</view>
-
-			<!-- 社交账号登录 -->
-			<view class="bottom">
-				<view class="tag">社交账号登录</view>
-				<view class="chat-arr">
-					<image src="/static/images/wx.png" class="icon" mode=""></image>
-					<image src="/static/images/qq.png" class="icon" mode=""></image>
-					<image src="/static/images/wb.png" class="icon" mode=""></image>
-				</view>
-			</view>
-		</view>
-		<!--  -->
-	</view>
-</template>
-
-<script>
-	export default {
-		data() {
-			return {
-				phone: '',
-				code: '',
-				disabled: true,
-				count: 60,
-				timer: ''
-			};
-		},
-		methods: {
-			submit() {
-				this.$u.func.showToast({
-					title: '新版本即将到来',
-				})
-			},
-			handleInputCheck() {
-				if (!this.phone && !/^1\d{10}$/.test(this.phone)) {
-					this.disabled = true
-					return uni.showToast({
-						title: '请输入正确的手机号',
-						duration: 2000,
-						icon: 'none'
-					});
-				}
-				if (!this.code) {
-					this.disabled = true
-					return uni.showToast({
-						title: '请输入验证码',
-						duration: 2000,
-						icon: 'none'
-					});
-				}
-				this.disabled = false
-			},
-			async sendCode() {
-				this.count = this.count - 1;
-				this.timer = setInterval(() => {
-					if (this.count == 0) {
-						clearInterval(this.timer);
-						this.count = 60;
-						return;
-					}
-					this.count = this.count - 1;
-				}, 1000);
-			}
-		}
-	};
-</script>
-
-<style lang="scss">
-	.container {
-		min-height: 100vh;
-		overflow: hidden;
-
-		.set-icon {
-			vertical-align: middle;
-			width: 41rpx;
-			height: auto;
-			margin-right: 35rpx;
-		}
-	}
-
-	.content {
-		display: flex;
-		flex-direction: column;
-		justify-content: space-around;
-		align-items: center;
-
-		height: 90vh;
-		width: 100%;
-
-		.top {
-			width: 100%;
-		}
-
-		.logo {
-			display: block;
-			width: 281rpx;
-			height: auto;
-			margin: 0 auto 120rpx;
-		}
-
-		.cell {
-			width: 100%;
-			padding: 0 85rpx;
-			box-sizing: border-box;
-			margin-top: 36rpx;
-
-			.name {
-				font-size: 22rpx;
-				font-family: Source Han Sans CN;
-				font-weight: 400;
-				color: #3e4a59;
-				line-height: 30rpx;
-				opacity: 0.72;
-			}
-
-			.input-box {
-				padding: 30rpx 0;
-				border-bottom: 2rpx solid #f6f6f6;
-				display: flex;
-				align-items: center;
-
-				.code {
-					font-size: 22rpx;
-					font-family: Source Han Sans CN;
-					font-weight: 400;
-					color: #0d0d0d;
-					line-height: 30rpx;
-
-					text {
-						color: #14b9c8;
-					}
-				}
-
-				.ipt {
-					flex: 1;
-					// height: 24rpx;
-					font-size: 24rpx;
-				}
-
-				.hold {
-					font-size: 26rpx;
-					font-family: Source Han Sans CN;
-					font-weight: 400;
-					color: #3e4a59;
-					line-height: 30px;
-					opacity: 0.45;
-				}
-			}
-		}
-
-		.agree {
-			margin: 27rpx 95rpx 0;
-			font-size: 22rpx;
-			font-family: Adobe Heiti Std;
-			font-weight: normal;
-			color: #cacaca;
-			line-height: 34rpx;
-
-			.a {
-				color: #000000;
-			}
-		}
-
-		.submit {
-			margin: 60rpx 90rpx 0;
-			border: none;
-			width: 572rpx;
-			height: 86rpx;
-			line-height: 86rpx;
-			box-sizing: border-box;
-			border-radius: 15rpx;
-			background-color: #14b9c8;
-			color: #ffffff;
-
-			&::after {
-				content: none;
-			}
-
-			&::before {
-				content: none;
-			}
-
-			&[disabled='true'] {
-				background: #e4e4e4;
-				font-size: 36rpx;
-				font-family: Source Han Sans CN;
-				font-weight: 500;
-				color: #ffffff;
-			}
-		}
-
-		.tip {
-			margin-top: 30rpx;
-			text-align: center;
-			font-size: 22rpx;
-			font-family: Adobe Heiti Std;
-			font-weight: normal;
-			color: #cacaca;
-			line-height: 34rpx;
-		}
-
-		.change {
-			margin-top: 20rpx;
-			text-align: center;
-			font-size: 22rpx;
-			font-family: Adobe Heiti Std;
-			font-weight: normal;
-			color: #14b9c8;
-			line-height: 34rpx;
-		}
-
-		.tag {
-			display: flex;
-			justify-content: center;
-			align-items: center;
-			font-size: 22rpx;
-			font-family: Adobe Heiti Std;
-			font-weight: normal;
-			color: #9f9f9f;
-			line-height: 34rpx;
-
-			&::before {
-				content: '';
-				display: block;
-				width: 160rpx;
-				height: 1px;
-				background: #d8d8d8;
-				opacity: 0.86;
-			}
-
-			&::after {
-				content: '';
-				display: block;
-				width: 160rpx;
-				height: 1px;
-				background: #d8d8d8;
-				opacity: 0.86;
-			}
-		}
-
-		.chat-arr {
-			margin-top: 50rpx;
-			display: flex;
-			align-items: center;
-			justify-content: space-between;
-
-			.icon {
-				width: 73rpx;
-				height: 73rpx;
-			}
-		}
-	}
-</style>
diff --git a/pages/manage/manage.vue b/pages/manage/manage.vue
deleted file mode 100644
index 0f2ae87..0000000
--- a/pages/manage/manage.vue
+++ /dev/null
@@ -1,154 +0,0 @@
-<template>
-	<view class="container">
-		<u-navbar :is-fixed="false" :border-bottom="false" :is-back="false" title="工作台"
-			:background="{ background: '#0BB9C8' }" title-color="#fff">
-		</u-navbar>
-
-		<scroll-view id="swiperBox" :style="{ height: swiperHeight + 'px' }" scroll-y>
-			<view class="content">
-				<u-grid :col="3">
-					<u-grid-item v-for="(_item, _index) in gridList" :key="_index">
-						<navigator :url="_item.url" hover-class="none" class="gitem">
-							<image :src="_item.img" class="img" mode="widthFix"></image>
-							<view class="name">{{ _item.name }}</view>
-						</navigator>
-					</u-grid-item>
-				</u-grid>
-			</view>
-		</scroll-view>
-
-	</view>
-</template>
-
-<script>
-	export default {
-		data() {
-			return {
-				swiperHeight: 0,
-
-				gridList: []
-			};
-		},
-		mounted() {
-
-			if (this.$store.state.UserData.rname[0] == '保安') {
-
-
-				this.gridList = [{
-						name: '发送通知',
-						img: '/static/images/manage/g8.png',
-						url: '/pages/message/addMessage'
-					},
-					{
-						name: '工作汇报添加',
-						img: '/static/images/manage/g11.png',
-						url: '/pages/report/initiate'
-					}
-				]
-
-			} else if (this.$store.state.UserData.rname[0] == '保安公司管理员') {
-
-				this.gridList = [{
-						name: '发送通知',
-						img: '/static/images/manage/g8.png',
-						url: '/pages/message/addMessage'
-					},
-					{
-						name: '工作汇报添加',
-						img: '/static/images/manage/g11.png',
-						url: '/pages/report/initiate'
-					},
-					{
-						name: '保安员位置',
-						img: '/static/images/manage/g12.png',
-						url: '/pages/map/map'
-					},
-				]
-
-			} else {
-
-				this.gridList = [{
-						name: '发送通知',
-						img: '/static/images/manage/g8.png',
-						url: '/pages/message/addMessage'
-					},
-					{
-						name: '人员检查',
-						img: '/static/images/manage/g7.png',
-						url: '/pages/examine/addpeople'
-					},
-					{
-						name: '单位检查',
-						img: '/static/images/manage/g9.png',
-						url: '/pages/examine/addunit'
-					},
-					{
-						name: '指令下发',
-						img: '/static/images/manage/g10.png',
-						url: '/pages/dispatch/imgissue'
-					},
-					{
-						name: '工作汇报添加',
-						img: '/static/images/manage/g11.png',
-						url: '/pages/report/initiate'
-					},
-					{
-						name: '保安员位置',
-						img: '/static/images/manage/g12.png',
-						url: '/pages/map/map'
-					},
-				]
-
-			}
-
-		},
-		onReady() {
-			let that = this;
-			uni.getSystemInfo({
-				success(e) {
-					console.log(e);
-					let {
-						windowWidth,
-						windowHeight,
-						safeArea
-					} = e;
-					const query = uni.createSelectorQuery().in(that);
-					query
-						.select('#swiperBox')
-						.boundingClientRect(data => {
-							that.swiperHeight = safeArea.bottom - data.top;
-						})
-						.exec();
-				}
-			});
-		},
-		methods: {
-
-		}
-	};
-</script>
-
-<style lang="scss">
-	.swiper-box {
-		height: 100vh;
-	}
-
-	.gitem {
-		display: flex;
-		align-items: center;
-		justify-content: center;
-		flex-direction: column;
-
-		.img {
-			width: 54rpx;
-			height: auto;
-			margin-bottom: 26rpx;
-		}
-
-		font-size: 28rpx;
-		font-family: PingFang SC;
-		font-weight: bold;
-		color: #030305;
-		line-height: 36rpx;
-	}
-</style>
diff --git a/pages/map/map copy.vue b/pages/map/map copy.vue
deleted file mode 100644
index 2c79809..0000000
--- a/pages/map/map copy.vue
+++ /dev/null
@@ -1,49 +0,0 @@
-<template>
-	<view class="content">
-		<web-view :src="urls"></web-view>
-	</view>
-</template>
-
-<script>
-	export default {
-		data() {
-			return {
-				urls: '',
-				// dataList: [],
-			}
-		},
-		methods: {},
-		mounted() {},
-		onLoad: function(options) {
-			var data = [];
-			// console.log(options,"options")
-			if (options.data == undefined) {
-				data = [{
-					"id": '100000',
-					"place": '无数据',
-					"state": '0',
-					"dtype": '0',
-					"size": '300',
-					"jd": "114.822311",
-					"wd": "28.646341"
-				}]
-				data = JSON.stringify(data);
-			} else {
-				// data = options.data;
-			}
-			console.log(data)
-			// console.log(options.html)
-			// var a = options.html != undefined ? options.html : "xcxMapWz/xcxmap.html";
-			// console.log(a)
-			this.urls = "http://web.byisf.com/xcxMapWz/xcxmap.html?id="+ this.$store.state.UserData.jurisdiction+"&data=" + data;
-			// this.urls = "http://127.0.0.1:5500/xcxMapWz/xcxmap.html?id="+ this.$store.state.UserData.jurisdiction +"&data=" + data;
-			
-			
-			// this.dataList = data;
-			// console.log(this.urls,'url');
-		},
-	}
-</script>
-
-<style>
-</style>
diff --git a/pages/map/map.vue b/pages/map/map.vue
deleted file mode 100644
index d4e85e3..0000000
--- a/pages/map/map.vue
+++ /dev/null
@@ -1,59 +0,0 @@
-<template>
-	<view class="content" style="width: 100%; height: 100%;">
-
-		<!-- <u-loading size="66" :show="flag" mode="circle"></u-loading> -->
-
-		<view v-show="flag" class="loading">{{loadingText}}</view>
-		
-		<view v-show="!flag">
-			
-			<web-view :src="urls" style="width: 100%; height: 100%;"></web-view>
-			
-		</view>
-
-	</view>
-</template>
-
-<script>
-	export default {
-		data() {
-			return {
-				urls: '',
-				flag: true,
-				loadingText: '加载中...'
-				// dataList: [],
-			}
-		},
-		methods: {},
-		mounted() {
-			// uni.showNavigationBarLoading();
-
-			this.urls = "http://web.byisf.com/mapWz/xcxmap.html?id=" + this.$store.state.UserData.jurisdiction +
-				"&userid=" + this.$store.state.UserData.user_id +
-				"&roleName=" + this.$store.state.UserData.rname[0] +
-				"&deptid=" + this.$store.state.UserData.dept_id;
-
-
-			setTimeout(() => {
-				// uni.hideNavigationBarLoading();
-				this.flag = false
-			}, 3000)
-
-		},
-		onLoad: function(options) {
-
-
-
-			// this.urls = "http://127.0.0.1:5500/mapWz/xcxmap.html?id=" + this.$store.state.UserData.jurisdiction +
-			// 	"&userid=" + this.$store.state.UserData.user_id;
-
-		},
-	}
-</script>
-
-<style>
-	.loading {
-		text-align: center;
-		line-height: 80px;
-	}
-</style>
diff --git a/pages/message/addMessage.vue b/pages/message/addMessage.vue
deleted file mode 100644
index 05f79b5..0000000
--- a/pages/message/addMessage.vue
+++ /dev/null
@@ -1,182 +0,0 @@
-<template>
-	<view class="container">
-
-		<view class="group-chat-box">
-
-			<u-form :model="form" ref="uForm">
-
-				<u-form-item label-width='132' prop="title" label="通知标题" :required="true">
-					<u-input type='text' v-model="form.title" placeholder="请输入通知标题" />
-				</u-form-item>
-
-				<u-form-item label-width='132' prop="content" label="通知内容" :required="true">
-					<u-input type='textarea' v-model="form.content" placeholder="请输入通知内容" />
-				</u-form-item>
-
-			</u-form>
-
-		</view>
-
-		<view class="establish-box">
-			<u-button class="submit" type="primary" @click="initiateClick">发送
-			</u-button>
-		</view>
-
-		<view>
-			<u-toast ref="uToast" />
-		</view>
-
-	</view>
-</template>
-
-<script>
-	export default {
-		data() {
-			return {
-
-				form: {
-					title: '',
-					content: ''
-				},
-				rules: {
-					content: [{
-						min: 5,
-						required: true,
-						message: '通知内容不能少于5个字',
-						trigger: ['change', 'blur'],
-					}],
-
-					title: [{
-						required: true,
-						message: '请输入通知标题',
-						trigger: ['change', 'blur'],
-					}],
-
-				},
-				createData: null,
-			};
-		},
-		onLoad() {
-			this.createData = this.$store.state.UserData
-		},
-		onReachBottom() {
-
-		},
-		mounted() {},
-		onReady() {
-			this.$refs.uForm.setRules(this.rules);
-
-
-		},
-		methods: {
-
-			getCurrentTime() {
-				let date = new Date();
-				let dateYear = date.getFullYear(); //获取年 
-				let dateMonth = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : (date.getMonth() + 1); //获取月  
-				let dateDate = date.getDate() < 10 ? '0' + date.getDate() : date.getDate(); //获取当日
-				let dateDay = date.getDay(); //获取当日星期数
-				let dateHours = date.getHours() < 10 ? '0' + date.getHours() : date.getHours(); //获取小时
-				let dateMinutes = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes(); //获取分钟
-				let dateSeconds = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds(); //获取秒
-
-				return dateYear + '-' + dateMonth + '-' + dateDate + ' ' + dateHours + ':' + dateMinutes + ':' +
-					dateSeconds
-			},
-
-			initiateClick() {
-
-				this.$refs.uForm.validate(valid => {
-					if (valid) {
-
-						uni.request({
-							url: this.$store.state.piAPI + "/blade-system/dept/detail",
-							method: "get",
-							data: {
-								id: this.createData.dept_id
-							},
-							success: (result) => {
-
-								var deptCategory = result.data.data.deptCategory;
-
-								uni.request({
-									url: this.$store.state.piAPI + "/blade-desk/notice/submit",
-									method: "post",
-									data: {
-										type: 1,
-										title: this.form.title,
-										content: this.form.content,
-										category: deptCategory,
-										deptId: this.createData.dept_id,
-										releaseTime: this.getCurrentTime(),
-									},
-									success: (res) => {
-										if (res.data.msg == "操作成功") {
-											this.$refs.uToast.show({
-												title: '新增通知成功',
-												type: 'success',
-												url: '/pages/message/message'
-											})
-										}
-									}
-								});
-
-							}
-						});
-
-
-					} else {
-						console.log('验证失败');
-					}
-				});
-			},
-
-
-		}
-	};
-</script>
-
-
-<style lang="scss">
-	.submit {
-		border: none;
-		width: 94%;
-		height: 86rpx;
-		line-height: 86rpx;
-		box-sizing: border-box;
-		border-radius: 15rpx;
-		color: #ffffff;
-		font-size: 38rpx;
-
-	}
-
-	.container {
-		height: 100%;
-
-		.group-chat-box {
-			height: calc(100% - 116rpx);
-			padding: 0 36rpx;
-			box-sizing: border-box;
-			overflow-y: auto;
-		}
-
-		.establish-box {
-			position: relative;
-			height: 116rpx;
-			background: #fff;
-			text-align: center;
-
-			uni-button {
-				margin: 0;
-				position: absolute;
-				top: 0;
-				left: 0;
-				right: 0;
-				bottom: 0;
-				margin: auto;
-			}
-
-		}
-
-	}
-</style>
diff --git a/pages/message/message.vue b/pages/message/message.vue
deleted file mode 100644
index 8e93e3a..0000000
--- a/pages/message/message.vue
+++ /dev/null
@@ -1,568 +0,0 @@
-<template>
-
-	<view class="page-container" style="height: 100%; position: relative;">
-		<view class="head top-absolute">
-			<u-navbar :is-fixed="false" :border-bottom="false" :is-back="false" title=""
-				:background="{ background: '#0BB9C8' }">
-				<view class="nav-wrap">
-
-					<view style="position: relative;">
-
-						<view class="btn-return-box">
-							<view class="btn-return">
-								<i class="uni-btn-icon" @click="goReturnPage"
-									style="color: rgb(255, 255, 255); font-size: 27px;"></i>
-							</view>
-						</view>
-
-						<span class="header-title">通知公告</span>
-
-						<u-icon v-if="$store.state.UserData.rname[0] != '保安'" @click="goToAddPage" top='4' class="header-add" name="plus" color="#fff">
-						</u-icon>
-
-					</view>
-
-				</view>
-			</u-navbar>
-		</view>
-		<view class="head">
-			<u-navbar :is-fixed="false" :border-bottom="false" :is-back="false" title=""
-				:background="{ background: '#0BB9C8' }">
-				<view class="nav-wrap">
-
-					<view style="position: relative;">
-
-						<view class="btn-return-box">
-							<view class="btn-return">
-								<i class="uni-btn-icon" @click="goReturnPage"
-									style="color: rgb(255, 255, 255); font-size: 27px;"></i>
-							</view>
-						</view>
-
-						<span class="header-title">通知公告</span>
-
-						<u-icon @click="goToAddPage" top='4' class="header-add" name="plus" color="#fff">
-						</u-icon>
-
-					</view>
-
-				</view>
-			</u-navbar>
-		</view>
-
-		<view class="wrapper">
-
-			<view class="body">
-
-				<view class="body-content">
-
-					<u-tabs :list="list" :is-scroll="false" :current="current" active-color="#14B9C8"
-						inactive-color="#595959" height="100" @change="change"></u-tabs>
-
-					<u-search v-model='keyValue' placeholder='请输入通知标题' shape="round" class="u-search"
-						input-align="center" height="70" @search='searchValue' @custom='searchValue' @clear='clearValue'
-						@change='changeValue'>
-					</u-search>
-
-					<view v-show="current == 0 && newsList.length > 0">
-						<view class="inTmain" v-for="(item,index) in newsList">
-							<u-card :title="'通知标题:' + item.title" @click="goDetail(item)">
-								<view class="" slot="body">
-									<view>
-										<view style="margin-bottom: 10px;" class="u-body-item-title u-line-1">
-											通知类型:{{item.category == 1 ? '单位公告' : '公安公告'}}</view>
-									</view>
-									<view>
-										<view class="u-body-item-title u-line-1">通知日期:{{item.releaseTime}}</view>
-									</view>
-								</view>
-								<view class="" slot="foot">
-									</u-icon>发布单位:{{item.depName}}</view>
-							</u-card>
-						</view>
-						<u-loadmore class='msg' :status="status" />
-					</view>
-
-					<view v-show="current == 1 && newsList.length > 0">
-						<view class="inTmain" v-for="(item,index) in newsList">
-							<u-card :title="'通知标题:' + item.title" @click="goDetail(item)">
-								<view class="" slot="body">
-									<view>
-										<view style="margin-bottom: 10px;" class="u-body-item-title u-line-1">
-											通知类型:{{item.category == 1 ? '单位公告' : '公安公告'}}</view>
-									</view>
-									<view>
-										<view class="u-body-item-title u-line-1">通知日期:{{item.releaseTime}}</view>
-									</view>
-								</view>
-								<view class="" slot="foot">
-									</u-icon>发布单位:{{item.deptName}}</view>
-							</u-card>
-						</view>
-						<u-loadmore class='msg' :status="status" />
-					</view>
-
-					<view class="msg" v-show='newsList.length == 0'>
-						暂无数据
-					</view>
-
-				</view>
-
-			</view>
-
-		</view>
-	</view>
-
-</template>
-
-<script>
-	export default {
-		data() {
-			return {
-
-				list: [{
-						name: '单位通知列表'
-					},
-					{
-						name: '公安通知列表'
-					}
-				],
-
-				current: 0,
-
-				dataList: [],
-				newsList: [],
-
-				status: 'loadmore',
-				keyValue: '',
-
-				dataList: [],
-				newsList: [],
-				pagelist: 0,
-				pages: 0,
-				flag: true,
-				
-				pullDown: false
-			};
-		},
-		onLoad() {
-
-		},
-		onReachBottom() {
-			var that = this;
-
-			if (that.flag == false) {
-				that.status = 'nomore';
-				return
-			}
-			// 后续将改为与后端联动
-			that.status = 'loading';
-
-			setTimeout(() => {
-				if (that.current == 0) {
-					that.getReceive();
-				} else {
-					that.getSend();
-				}
-			}, 1000);
-		},
-
-		onPullDownRefresh: function() {
-			var that = this;
-			
-			this.pullDown = true;
-			this.pagelist = 0;
-			this.pages = 0;
-			this.flag = true;
-			this.dataList = [];
-			this.newsList = [];
-			this.status = 'loading';
-			this.keyValue = '';
-			setTimeout(() => {
-				if (that.current == 0) {
-					that.getReceive();
-				} else {
-					that.getSend();
-				}
-			}, 1000)
-
-		},
-
-		mounted() {
-			this.getReceive();
-		},
-		methods: {
-			getReceive() {
-				var that = this;
-
-				if (that.pagelist < that.pages || that.pagelist == 0) {
-					that.pagelist++
-				} else if (that.pagelist == that.pages) {
-					that.flag = false
-					that.status = 'nomore';
-					return
-				}
-
-				uni.request({
-					url: this.$store.state.piAPI + "/blade-desk/notice/page?category=1&deptId=" + this.$store.state
-						.UserData
-						.dept_id,
-					method: "get",
-					data: {
-						type: 1,
-						current: that.pagelist,
-						size: 10
-					},
-					success: (res) => {
-						that.pages = res.data.data.pages;
-
-						var resdata = res.data.data.records;
-
-						if (this.pullDown == true) {
-							this.pullDown = false;
-							uni.stopPullDownRefresh();
-						}
-
-						if (resdata.length == 0) {
-							that.flag = false
-							that.status = 'nomore';
-							return
-						} else {
-							resdata.forEach(item => {
-								that.newsList.push(item)
-								that.dataList.push(item)
-							})
-						}
-
-						if (that.pagelist == that.pages) {
-							that.flag = false
-							that.status = 'nomore';
-							return
-						}
-
-					}
-				});
-			},
-			getSend() {
-				var that = this;
-
-				if (that.pagelist < that.pages || that.pagelist == 0) {
-					that.pagelist++
-				} else if (that.pagelist == that.pages) {
-					that.flag = false
-					that.status = 'nomore';
-					return
-				}
-
-				uni.request({
-					url: this.$store.state.piAPI + "/blade-desk/notice/page?category=2&deptId=" + this.$store.state
-						.UserData
-						.dept_id,
-					method: "get",
-					data: {
-						type: 1,
-						current: that.pagelist,
-						size: 10
-					},
-					success: (res) => {
-						that.pages = res.data.data.pages;
-
-						var resdata = res.data.data.records;
-
-						if (this.pullDown == true) {
-							this.pullDown = false;
-							uni.stopPullDownRefresh();
-						}
-
-						if (resdata.length == 0) {
-							that.flag = false
-							that.status = 'nomore';
-							return
-						} else {
-							resdata.forEach(item => {
-								that.newsList.push(item)
-								that.dataList.push(item)
-							})
-						}
-
-						if (that.pagelist == that.pages) {
-							that.flag = false
-							that.status = 'nomore';
-							return
-						}
-
-					}
-				});
-			},
-			goDetail(item) {
-				var reg1 = /<\/?p[^>]*>/g;
-
-				item.content = item.content.replace(reg1, '');
-
-				var reg2 = /[&nbsp;]/g;
-
-				item.content = item.content.replace(reg2, '');
-
-				console.log(item)
-
-				uni.navigateTo({
-					url: './messageDetail?detailData=' + JSON.stringify(item)
-				});
-			},
-			change(index) {
-				if (this.current == index) return;
-				this.dataList = [];
-				this.newsList = [];
-				this.pagelist = 0;
-				this.pages = 0;
-				this.flag = true;
-				this.current = index;
-				if (index == 0) {
-					this.getReceive();
-				} else {
-					this.getSend();
-				}
-			},
-			searchValue(value) {
-				var that = this;
-				var str = value.replace(/\s*/g, "");
-				if (str == '') {
-					return
-				} else {
-					that.newsList = [];
-
-					if (that.current == 0) {
-						uni.request({
-							url: this.$store.state.piAPI + "/blade-desk/notice/page?category=1&deptId=" + this
-								.$store.state
-								.UserData
-								.dept_id,
-							method: "get",
-							data: {
-								type: 1,
-								current: 1,
-								size: 999999,
-								title: str
-							},
-							success: (res) => {
-								var resdata = res.data.data.records;
-
-								resdata.forEach(item => {
-									that.newsList.push(item)
-								})
-
-							}
-						});
-					} else {
-						uni.request({
-							url: this.$store.state.piAPI + "/blade-desk/notice/page?category=2&deptId=" + this
-								.$store.state
-								.UserData
-								.dept_id,
-							method: "get",
-							data: {
-								type: 1,
-								current: 1,
-								size: 999999,
-								title: str
-							},
-							success: (res) => {
-								var resdata = res.data.data.records;
-
-								resdata.forEach(item => {
-									that.newsList.push(item)
-								})
-
-							}
-						});
-					}
-
-					that.flag = false
-					that.status = 'nomore';
-				}
-			},
-			clearValue() {
-				this.keyValue = ''
-				this.newsList = [];
-
-				this.dataList.forEach(item => {
-					this.newsList.push(item)
-				})
-
-				if (this.pagelist < this.pages) {
-					this.flag = true;
-					this.status = 'loading';
-				} else {
-					this.flag = false;
-					this.status = 'nomore';
-				}
-			},
-			changeValue(value) {
-				if (value == '') {
-					this.newsList = [];
-
-					this.dataList.forEach(item => {
-						this.newsList.push(item)
-					})
-
-					if (this.pagelist < this.pages) {
-						this.flag = true;
-						this.status = 'loading';
-					} else {
-						this.flag = false;
-						this.status = 'nomore';
-					}
-				}
-			},
-			goReturnPage() {
-				uni.switchTab({
-					url: '/pages/home/home'
-				});
-			},
-			goToAddPage() {
-				uni.navigateTo({
-					url: './addMessage'
-				});
-			},
-		}
-	};
-</script>
-
-<style lang="scss">
-	.page-container {
-		position: fixed;
-		display: block;
-		width: 100%;
-		max-height: 100vh;
-
-
-
-		.head {
-			position: relative;
-
-
-			width: 100%;
-
-
-			.nav-wrap {
-				width: 100%;
-				height: 44px;
-				line-height: 30px;
-				padding: 7px 3px;
-				height: calc(44px + constant(safe-area-inset-top));
-				height: calc(44px + env(safe-area-inset-top));
-				color: rgb(255, 255, 255);
-
-				.btn-return-box {
-					display: flex;
-					align-items: center;
-					font-size: 16px;
-					box-sizing: border-box;
-
-					.btn-return {
-						position: relative;
-						width: auto;
-						margin: 0 2px;
-						word-break: keep-all;
-						white-space: pre;
-						cursor: pointer;
-					}
-				}
-
-				.header-title {
-					position: absolute;
-					top: 0;
-					left: 0;
-					right: 0;
-					bottom: 0;
-					margin: auto;
-					width: 60%;
-					font-weight: 700;
-					line-height: 30px;
-					font-size: 16px;
-					opacity: 1;
-					text-overflow: ellipsis;
-					text-align: center;
-					min-width: 1em;
-				}
-
-				.header-add {
-					position: absolute;
-					top: 0;
-					left: auto;
-					right: 10px;
-					bottom: 0;
-					margin: auto;
-					display: inline-block;
-					font: normal normal normal 14px/1 unibtn;
-					text-rendering: auto;
-					-webkit-font-smoothing: antialiased;
-					font-size: 24px;
-				}
-			}
-
-		}
-
-		.top-absolute {
-			position: fixed;
-			top: 0;
-			left: 0;
-			z-index: 101;
-		}
-
-		.wrapper {
-
-			width: 100%;
-			display: block;
-			height: calc(100% - 44px);
-			height: calc(100% - 44px - constant(safe-area-inset-top));
-			height: calc(100% - 44px - env(safe-area-inset-top));
-
-			.body {
-				width: 100%;
-				height: 100%;
-				overflow-x: hidden;
-				overflow-y: auto;
-
-				.body-content {
-					height: auto;
-
-				}
-
-			}
-
-		}
-	}
-
-	.u-card-wrap {
-		background-color: $u-bg-color;
-		padding: 1px;
-	}
-
-	.u-body-item {
-		font-size: 32rpx;
-		color: #333;
-		padding: 20rpx 10rpx;
-	}
-
-	.u-body-item image {
-		width: 120rpx;
-		flex: 0 0 120rpx;
-		height: 120rpx;
-		border-radius: 8rpx;
-		margin-left: 12rpx;
-	}
-
-	.u-search {
-		padding: 20rpx 30rpx 0 30rpx;
-	}
-
-	.inTmain {}
-
-	.msg {
-		height: 72rpx;
-		line-height: 72rpx;
-		text-align: center;
-		color: #999;
-	}
-</style>
diff --git a/pages/message/messageDetail.vue b/pages/message/messageDetail.vue
deleted file mode 100644
index e9b7886..0000000
--- a/pages/message/messageDetail.vue
+++ /dev/null
@@ -1,68 +0,0 @@
-<template>
-	<view class="container">
-		<u-form :model="detailData" ref="uForm" class="send-detail">
-			<u-form-item label-width='132' label="通知标题">
-				<span>{{ detailData.title }}</span>
-			</u-form-item>
-			<u-form-item label-width='132' label="通知类型">
-				<span>{{detailData.category == 1 ? '单位公告' : '公安公告'}}</span>
-			</u-form-item>
-			<u-form-item label-width='132' label="发布单位">
-				<span>{{ detailData.deptName }}</span>
-			</u-form-item>
-			<u-form-item label-width='132' label="通知日期">
-				<span>{{ detailData.releaseTime }}</span>
-			</u-form-item>
-			<u-form-item label-width='132' label="通知内容">
-				<span>{{ detailData.content }}</span>
-			</u-form-item>
-		</u-form>
-	</view>
-</template>
-
-<script>
-	export default {
-		data() {
-			return {
-				detailData: {},
-			};
-		},
-		onLoad(event) {
-			var that = this;
-
-			this.detailData = JSON.parse(decodeURIComponent(event.detailData));
-
-			console.log(this.detailData, event, 465)
-		},
-		onReachBottom() {
-
-		},
-		mounted() {
-
-		},
-		methods: {
-
-
-		}
-	};
-</script>
-
-<style lang="scss">
-	.send-detail {
-		padding: 0 30rpx;
-
-		span {
-			color: #999;
-		}
-	}
-
-	.img-box {
-		display: flex;
-		justify-content: space-around;
-		flex-wrap: wrap;
-
-		img {
-			height: 180rpx;
-		}
-	}
-</style>
diff --git a/pages/news/detail.vue b/pages/news/detail.vue
deleted file mode 100644
index 72168cc..0000000
--- a/pages/news/detail.vue
+++ /dev/null
@@ -1,290 +0,0 @@
-<template>
-	<view class="container">
-		<u-navbar :is-fixed="false" :border-bottom="false" :is-back="true" back-icon-name="arrow-leftward" title="新闻详情页"
-			:background="{ background: '#fff' }" title-color="#000000">
-			<view class="right-nav" slot="right">
-				<image src="/static/images/news/search.png" class="icon icon-search" mode="widthFix"></image>
-				<image src="/static/images/news/menu.png" class="icon icon-menu" mode="widthFix"></image>
-			</view>
-		</u-navbar>
-
-		<view class="header">
-			<image src="" class="avatar" mode=""></image>
-			<view class="info">
-				<view class="name">
-					中国空间站
-					<text class="tag">专栏作家</text>
-				</view>
-				<view class="date">06-17</view>
-			</view>
-			<view class="btn">+关注</view>
-		</view>
-
-		<view class="content">
-			<view class="title">
-				神舟十二号载人发射任务圆满成功
-			</view>
-			<view class="static">
-				<view class="left">
-					<view class="block">
-						<image src="/static/images/news/gf.png" class="gf"></image>
-						官方
-					</view>
-					<view class="block">
-						<image src="/static/images/news/x.png" class="gf"></image>
-						焦点新闻
-					</view>
-				</view>
-				<view class="right">
-					<image src="/static/images/news/l.png" class="l" mode="widthFix"></image>
-					66666
-				</view>
-			</view>
-			<view class="detail">
-				<u-parse :html="content"></u-parse>
-			</view>
-		</view>
-
-		<view class="footer">
-			<input type="text" value="" placeholder="说点什么..." class="ipt" />
-			<view class="control">
-				<view class="block">
-					<image src="/static/images/news/c.png" class="icon c" mode="widthFix"></image>
-					458
-				</view>
-				<view class="block">
-					<image src="/static/images/news/s.png" class="icon s" mode="widthFix"></image>
-				</view>
-				<view class="block">
-					<image src="/static/images/news/t.png" class="icon t" mode="widthFix"></image>
-				</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-
-<script>
-	export default {
-		data() {
-			return {
-				content: `<p>神舟十二号载人飞船在长征2F运载火箭的托举下,以一往无前之势冲入澄澈霄汉。随后,神舟十二号载人飞船成功进入预定轨道,并完成太阳翼展开。这是中国载人航天史上由中国人书写的又一壮举,标志中国空间站建造任务再次向前迈出了一大步。</p>
-				<p>据了解,神舟十二号载人飞船是由航天科技集团五院抓总研制,迄今为止我国研制的标准最高,各方面指标要求最严格的载人航天器。</p>
-				<p>“神舟飞船是航天员实现天地往返的‘生命之舟’”。五院总体设计部神舟十二号载人飞船系统总体副主任设计师高旭介绍,神舟十二号飞船由轨道舱、返回舱和推进舱构成,全船共有14个分系统。</p>
-				<p>据了解,神舟十二号飞船轨道舱配备了航天员在轨生活支持设备、交会对接敏感器等关键设备,为自主快速交会对接做好充分准备。返回舱是飞船发射和返回过程中航天员所乘坐的舱段,是飞船的“大脑”,推进舱则装配推进系统、电源等设备,为飞船提供动力,并在飞行过程中进行姿态轨道的控制。</p>
-				<p>神舟十二号载人飞船是我国空间站任务阶段第一艘载人飞船,是载人空间站建设的重中之重。按照预定计划,飞船搭乘航天员采用自主快速交会对接的模式,与空间站天和核心舱前向对接口对接形成组合体,航天员驻留太空约90天后返回地面。</p>`
-			};
-		}
-	};
-</script>
-
-<style lang="scss">
-	.container {
-		padding: 0 0 150rpx;
-	}
-
-	.right-nav {
-		display: flex;
-		align-items: center;
-		margin-right: 40rpx;
-
-		.icon {
-			height: auto;
-
-			&-search {
-				width: 40rpx;
-				margin-right: 40rpx;
-			}
-
-			&-menu {
-				width: 40rpx;
-			}
-		}
-	}
-
-	.header {
-		display: flex;
-		align-items: center;
-		padding: 44rpx;
-
-		.avatar {
-			flex-shrink: 0;
-			width: 69rpx;
-			height: 69rpx;
-			background: #ffffff;
-			border: 1px solid #14b9c8;
-			border-radius: 50%;
-		}
-
-		.info {
-			flex: 1;
-			margin-left: 14rpx;
-
-			.name {
-				display: flex;
-				align-items: center;
-				font-size: 28rpx;
-				font-family: PingFang SC;
-				font-weight: bold;
-				color: #000000;
-				line-height: 36rpx;
-
-				.tag {
-					margin-left: 10rpx;
-					display: inline-block;
-					padding: 8rpx 10rpx;
-					font-size: 14rpx;
-					font-family: PingFang SC;
-					font-weight: 500;
-					color: #4cbeca;
-					line-height: 21rpx;
-					border: 1px solid #0bb9c8;
-					border-radius: 6px;
-				}
-			}
-
-			.date {
-				font-size: 24rpx;
-				font-family: PingFang SC;
-				font-weight: 500;
-				color: #a3a3a3;
-				line-height: 36rpx;
-			}
-		}
-
-		.btn {
-			padding: 8rpx 19rpx;
-			background: #e6e6e6;
-			border-radius: 6rpx;
-			font-size: 20rpx;
-			font-family: PingFang SC;
-			font-weight: bold;
-			color: #4cbeca;
-			line-height: 1;
-		}
-	}
-
-	.content {
-		padding: 0 44rpx;
-
-		.title {
-			font-size: 40rpx;
-			font-family: PingFang SC;
-			font-weight: bold;
-			color: #000000;
-			line-height: 47rpx;
-		}
-
-		.static {
-			margin-top: 34rpx;
-			display: flex;
-			justify-content: space-between;
-			align-items: center;
-
-			.left,
-			.right {
-				display: flex;
-				align-items: center;
-
-				.block {
-					display: flex;
-					align-items: center;
-					margin-right: 10rpx;
-				}
-			}
-
-			.left {
-				font-size: 20rpx;
-				font-family: PingFang SC;
-				font-weight: bold;
-				color: #787878;
-				line-height: 1;
-
-				.gf {
-					width: 24rpx;
-					height: 24rpx;
-					margin-right: 8rpx;
-				}
-			}
-
-			.right {
-				font-size: 20rpx;
-				font-family: PingFang SC;
-				font-weight: bold;
-				color: #787878;
-				line-height: 1;
-
-				.l {
-					width: 25rpx;
-					height: auto;
-					margin-right: 6rpx;
-				}
-			}
-		}
-
-		.detail {
-			font-size: 24rpx;
-			font-family: PingFang SC;
-			font-weight: 500;
-			color: #000000;
-			line-height: 47rpx;
-			margin-top: 50rpx;
-		}
-	}
-
-	.footer {
-		position: fixed;
-		bottom: 0;
-		left: 0;
-		right: 0;
-		z-index: 999;
-		height: 100rpx;
-		padding: 20rpx;
-		box-sizing: border-box;
-		display: flex;
-		align-items: center;
-		justify-content: center;
-		background-color: #ffffff;
-
-		.ipt {
-			width: 380rpx;
-			height: 77rpx;
-			background: #f7f7f7;
-			border-radius: 38px;
-			padding: 0 37rpx;
-			box-sizing: border-box;
-			margin-right: 20rpx;
-		}
-
-		.control {
-			flex: 1;
-			display: flex;
-			align-items: center;
-			justify-content: space-around;
-
-			.block {
-				display: flex;
-				align-items: center;
-				justify-content: center;
-				flex: 1;
-			}
-
-			.icon {
-				height: auto;
-			}
-
-			.c {
-				width: 41rpx;
-				margin-right: 10rpx;
-			}
-
-			.s {
-				width: 36rpx;
-			}
-
-			.t {
-				width: 31rpx;
-			}
-		}
-	}
-</style>
diff --git a/pages/news/list.vue b/pages/news/list.vue
deleted file mode 100644
index c289967..0000000
--- a/pages/news/list.vue
+++ /dev/null
@@ -1,258 +0,0 @@
-<template>
-	<view class="container">
-		<u-navbar :is-fixed="false" :border-bottom="false" :is-back="true" back-icon-name="arrow-leftward"
-			back-icon-color="#fff" back-icon-size="35" title="新闻动态" :background="{ background: '#0BB9C8' }"
-			title-color="#fff">
-			<image slot="right" src="/static/images/home/message.png" class="message-icon" mode="widthFix"></image>
-		</u-navbar>
-
-		<view class="tab">
-			<u-tabs :list="tabs" :is-scroll="false" :current="current" active-color="#14B9C8" inactive-color="#595959"
-				height="100" @change="change"></u-tabs>
-		</view>
-
-		<swiper id="swiperBox" :style="{ height: swiperHeight + 'px' }" :current="current" @change="tabsChange">
-			<swiper-item class="swiper-item" v-for="(pitem, pindex) in tabs" :key="pindex">
-				<scroll-view scroll-y style="width: 100%;height: 100%;" refresher-enabled
-					:refresher-triggered="pitem.triggered" @scrolltolower="onreachBottom"
-					@refresherrefresh="refresherrefresh(pindex)" @refresherrestore="refresherrestore(pindex)"
-					@refresherabort="refresherabort(pindex)">
-					<view class="content">
-						<navigator class="news" v-for="(item, index) in contentList[pindex].list" :key="index"
-							url="/pages/news/detail" hover-class="none">
-							<view class="head">
-								<image src="" class="avatar" mode=""></image>
-								<view class="info">
-									<view class="name">
-										中国空间站
-										<text class="tag">专栏作家</text>
-									</view>
-									<view class="date">06-11</view>
-								</view>
-								<u-icon name="arrow-right" size="35" color="#C5C5C5"></u-icon>
-							</view>
-							<view class="des">
-								神舟十二号载人发射任务取得圆满成功。
-							</view>
-						</navigator>
-						<view class="nomore">
-							<u-loadmore :status="contentList[pindex].status" />
-						</view>
-					</view>
-				</scroll-view>
-			</swiper-item>
-		</swiper>
-	</view>
-</template>
-
-<script>
-	export default {
-		data() {
-			return {
-				swiperHeight: 0,
-				tabs: [{
-						name: '互动',
-						triggered: false,
-						_triggered: false
-					},
-					{
-						name: '动态',
-						triggered: false,
-						_triggered: false
-					},
-					{
-						name: '通知',
-						triggered: false,
-						_triggered: false
-					}
-				],
-				contentList: [{
-						list: 8,
-						page: 1,
-						status: 'loadmore'
-					},
-					{
-						list: 8,
-						page: 1,
-						status: 'loadmore'
-					},
-					{
-						list: 8,
-						page: 1,
-						status: 'loadmore'
-					}
-				],
-				current: 0
-			};
-		},
-		onLoad() {},
-		onReady() {
-			let that = this;
-			uni.getSystemInfo({
-				success(e) {
-					console.log(e);
-					let {
-						windowWidth,
-						windowHeight,
-						safeArea
-					} = e;
-					const query = uni.createSelectorQuery().in(that);
-					query
-						.select('#swiperBox')
-						.boundingClientRect(data => {
-							that.swiperHeight = safeArea.bottom - data.top;
-						})
-						.exec();
-				}
-			});
-		},
-		onPullDownRefresh() {
-			setTimeout(() => {
-				uni.stopPullDownRefresh();
-			}, 1500);
-		},
-		methods: {
-			tabsChange(e) {
-				this.current = e.detail.current;
-			},
-			refresherrefresh(index) {
-				console.log('自定义下拉刷新被触发');
-				let _this = this;
-				if (_this.tabs[index]._triggered) {
-					return;
-				}
-				_this.tabs[index]._triggered = true;
-				//界面下拉触发,triggered可能不是true,要设为true
-				if (!_this.tabs[index].triggered) {
-					_this.tabs[index].triggered = true;
-				}
-
-				setTimeout(() => {
-					_this.tabs[index].triggered = false; //触发onRestore,并关闭刷新图标
-					_this.tabs[index]._triggered = false;
-				}, 1000);
-			},
-			refresherrestore(index) {
-				console.log('自定义下拉刷新被复位');
-				let _this = this;
-				_this.tabs[index].triggered = false;
-				_this.tabs[index]._triggered = false;
-			},
-			refresherabort(index) {
-				console.log('自定义下拉刷新被中止	');
-				let _this = this;
-				_this.tabs[index].triggered = false;
-				_this.tabs[index]._triggered = false;
-			},
-			// scroll-view到底部加载更多
-			onreachBottom() {
-				let current = this.current;
-				if (this.contentList[current].page >= 3) return;
-				this.contentList[current].status = 'loading';
-				setTimeout(() => {
-					this.contentList[current].page = ++this.contentList[current].page;
-					this.contentList[current].list += 10;
-					if (this.contentList[current].page >= 3)
-						this.contentList[current].status = 'nomore';
-					else this.contentList[current].status = 'loading';
-				}, 2000);
-			},
-			change(index) {
-				this.current = index;
-			}
-		}
-	};
-</script>
-
-<style lang="scss">
-	.message-icon {
-		width: 32rpx;
-		height: auto;
-		margin-right: 27rpx;
-	}
-
-	.tab {
-		margin: 0 0 10rpx;
-		border-bottom: 1px solid #e4e7ed;
-	}
-
-	.content {
-		padding: 0 0 150rpx;
-
-		.news {
-			&:not(:last-of-type) {
-				border-bottom: 2rpx solid #e4e7ed;
-			}
-		}
-	}
-
-	.nomore {
-		padding: 30rpx 20rpx;
-	}
-
-	.news {
-		margin: 30rpx 30rpx 0;
-		padding: 0 0 30rpx;
-
-		.head {
-			display: flex;
-
-			.avatar {
-				flex-shrink: 0;
-				width: 69rpx;
-				height: 69rpx;
-				background: #ffffff;
-				border: 1px solid #14b9c8;
-				border-radius: 50%;
-			}
-
-			.info {
-				flex: 1;
-				margin-left: 14rpx;
-
-				.name {
-					display: flex;
-					align-items: center;
-					font-size: 28rpx;
-					font-family: PingFang SC;
-					font-weight: bold;
-					color: #000000;
-					line-height: 36rpx;
-
-					.tag {
-						margin-left: 15rpx;
-						display: inline-block;
-						padding: 8rpx 10rpx;
-						font-size: 14rpx;
-						font-family: PingFang SC;
-						font-weight: 500;
-						color: #4cbeca;
-						line-height: 21rpx;
-						border: 1px solid #0bb9c8;
-						border-radius: 6px;
-					}
-				}
-
-				.date {
-					font-size: 24rpx;
-					font-family: PingFang SC;
-					font-weight: 500;
-					color: #a3a3a3;
-					line-height: 36rpx;
-				}
-			}
-		}
-
-		.des {
-			margin-top: 40rpx;
-			font-size: 30rpx;
-			font-family: PingFang SC;
-			color: #000000;
-			line-height: 47rpx;
-		}
-	}
-
-	.swiper-box {
-		height: 100vh;
-	}
-</style>
diff --git a/pages/registerUser/index.css b/pages/registerUser/index.css
deleted file mode 100644
index 410aa76..0000000
--- a/pages/registerUser/index.css
+++ /dev/null
@@ -1 +0,0 @@
-@charset "UTF-8";.avue-article__body,.avue-comment__body{font-family:Segoe UI,Lucida Grande,Helvetica,Arial,Microsoft YaHei,FreeSans,Arimo,Droid Sans,wenquanyi micro hei,Hiragino Sans GB,Hiragino Sans GB W3,FontAwesome,sans-serif}.avue-affix{position:fixed;z-index:10}.avue-sign{padding:5px}.avue-sign__canvas{border:1px solid #ccc}.avue-carousel--fullscreen{height:100%}.avue-carousel--fullscreen .el-carousel,.avue-carousel--fullscreen .el-carousel__container{height:90%}.avue-carousel__item{position:relative;width:100%;height:100%}.avue-carousel__item a{width:100%;height:100%;display:block}.avue-carousel__img{height:100%;background-size:cover;background-position:center center}.avue-carousel__title{z-index:1024;position:absolute;left:0;bottom:0;width:100%;height:50px;line-height:50px;font-size:16px;text-align:center;color:#fff;background-color:rgba(0,0,0,.6)}.avue-article__title{margin-bottom:15px;font-size:32px;line-height:32px;font-weight:400}.avue-article__meta{display:block;margin-bottom:20px;font-size:12px;color:#999}.avue-article__lead{color:#666;font-size:14px;line-height:22px;border:1px solid #dedede;border-radius:2px;background:#f9f9f9;padding:10px}.avue-article__body{padding-top:10px;background:#fff;color:#333;font-size:14px}.avue-article blockquote{margin:0;font-family:Georgia,Times New Roman,Times,Kai,Kaiti SC,KaiTi,BiauKai,FontAwesome,serif;padding:1px 0 1px 15px;border-left:4px solid #ddd}.avue-avatar{font-size:14px;font-variant:tabular-nums;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:0;list-style:none;display:inline-block;text-align:center;background:#ccc;color:#fff;white-space:nowrap;position:relative;overflow:hidden;vertical-align:middle;width:32px;height:32px;line-height:32px;border-radius:50%}.avue-avatar__images{width:100%;height:100%}.avue-avatar__icon{font-size:18px}.avue-avatar__string{position:absolute;left:50%;-webkit-transform-origin:0 center;transform-origin:0 center}.avue-avatar--lg{width:40px;height:40px;line-height:40px;border-radius:50%;font-size:24px}.avue-avatar--sm{width:24px;height:24px;line-height:24px;border-radius:50%;font-size:14px}.avue-avatar--square{border-radius:4px}.avue-skeleton__avatar{width:40px;height:40px;line-height:40px;display:inline-block;border-radius:50%;background:#f2f2f2}.avue-skeleton__header{display:table-cell;vertical-align:top;padding-right:16px}.avue-skeleton__content{display:table-cell;vertical-align:top;width:100%}.avue-skeleton__title{margin-top:16px;height:16px;width:40%;background:#f2f2f2}.avue-skeleton__item{padding-top:16px;padding-bottom:16px;border-bottom:1px solid #e8e8e8}.avue-skeleton__item:last-child{border-bottom:none}.avue-skeleton__li{margin-bottom:10px;height:16px;background:#f2f2f2;list-style:none;width:100%}.avue-skeleton__li:last-child{width:50%}.avue-skeleton__loading{background:-webkit-gradient(linear,left top,right top,color-stop(25%,#f2f2f2),color-stop(37%,#e6e6e6),color-stop(63%,#f2f2f2));background:linear-gradient(90deg,#f2f2f2 25%,#e6e6e6 37%,#f2f2f2 63%);-webkit-animation:avue-skeleton-loading 1.4s ease infinite;animation:avue-skeleton-loading 1.4s ease infinite;background-size:400% 100%}@-webkit-keyframes avue-skeleton-loading{0%{background-position:100% 50%}100%{background-position:0 50%}}@keyframes avue-skeleton-loading{0%{background-position:100% 50%}100%{background-position:0 50%}}.avue-crud{margin:0 auto;width:100%}.avue-crud .el-card+.el-card{margin-top:8px}.avue-crud--card .el-card{border:none}.avue-crud--card .el-card__body{padding:0}.avue-crud--card .el-card+.el-card{margin-top:0}.avue-crud .el-table .el-form-item{margin-bottom:0;display:inline-block;width:100%}.avue-crud .el-table .el-form-item__label{position:absolute;left:2px}.avue-crud .el-table .el-form-item__content{line-height:inherit;font-size:inherit}.avue-crud .el-table .el-form-item__error{width:100%;text-align:left;position:relative}.avue-crud .el-dropdown+.el-button{margin-left:10px}.avue-crud .el-checkbox:last-of-type{margin-right:0}.avue-crud .el-range-editor--mini{height:28px}.avue-crud__img{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.avue-crud__img img{height:40px;margin-left:5px;-o-object-fit:contain;object-fit:contain}.avue-crud__column .el-checkbox{margin-bottom:10px;cursor:move}.avue-crud__menu{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;position:relative;width:100%;min-height:40px;height:auto;overflow:hidden;margin-bottom:5px;background-color:#fff}.avue-crud__search .el-form-item--medium.el-form-item{margin-bottom:22px}.avue-crud__search .el-form-item--mini.el-form-item,.avue-crud__search .el-form-item--small.el-form-item{margin-bottom:14px}.avue-crud .el-table--mini .avue-crud__color{width:20px;height:20px}.avue-crud .el-table--mini .avue-crud__icon{font-size:20px}.avue-crud .el-table--small .avue-crud__color{width:30px;height:30px}.avue-crud .el-table--small .avue-crud__icon{font-size:30px}.avue-crud th{word-break:break-word;color:rgba(0,0,0,.85);background-color:#fafafa}.avue-crud .ms-tree-title{padding-left:10px}.avue-crud .ms-tree-space{position:relative;top:1px;display:inline-block;font-style:normal;font-weight:400;line-height:1;width:15px;height:14px}.avue-crud .ms-tree-space::before{content:""}.avue-crud .processContainer{width:100%;height:100%}.avue-crud table td{line-height:26px}.avue-crud .tree-ctrl{position:relative;cursor:pointer;color:#666;margin-left:-15px;display:inline-block;width:17px;height:17px;text-align:center;line-height:14px;border:1px solid #e8e8e8;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background:#fff;font-size:10px}.avue-crud .tree-ctrl i{padding-top:3px}@keyframes treeTableShow{from{opacity:0}to{opacity:1}}@-webkit-keyframes treeTableShow{from{opacity:0}to{opacity:1}}.avue-crud--indeterminate .is-indeterminate .el-checkbox__inner{background-color:#fff;border-color:#dcdfe6}.avue-crud .el-table th{word-break:break-word;color:rgba(0,0,0,.85);background-color:#fafafa}.avue-crud__color{margin:0 auto;width:40px;height:40px;border-radius:5px;display:block}.avue-crud__icon{font-size:45px}.avue-crud__icon--small{font-size:20px}.avue-crud__ghost{cursor:move;opacity:.4}.avue-crud__pagination{position:relative;padding:25px 0 20px 20px;text-align:right}.avue-crud__pagination .el-pagination{display:inline-block}.avue-crud__tip,.avue-crud__title{display:-webkit-box;display:-ms-flexbox}.avue-crud__form{padding:0 8px}.avue-crud__empty{padding:60px 0}.avue-crud__header{margin-bottom:10px}.avue-crud__header>.el-button{padding:12px 25px}.avue-crud__title{font-weight:700;margin-bottom:20px;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-size:22px}.avue-crud__tip{margin:8px 0;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:12px}.avue-crud__tip-name{margin-right:10px}.avue-crud__tip-count{font-size:16px;font-weight:600}.avue-crud__tip .el-button{margin-bottom:0}.avue-crud__filter-item{margin-bottom:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.avue-crud__filter-menu{padding:0 5px;margin-bottom:20px}.avue-crud__filter-label{margin:0 5px;width:120px!important}.avue-crud__filter-symbol{margin:0 5px;width:80px!important}.avue-crud__filter-value{margin:0 5px;width:150px!important}.avue-crud__filter-value .el-date-editor.el-input,.avue-crud__filter-value .el-date-editor.el-input__inner{width:100%}.avue-crud__filter-icon{margin-left:10px}.avue-crud__dialog--fullscreen .el-dialog{left:0!important;top:0!important}.avue-crud__dialog__header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.avue-crud__dialog .el-transfer__buttons,.avue-form__item--top{-ms-flex-direction:column;-webkit-box-orient:vertical;-webkit-box-direction:normal}.avue-crud__dialog__menu{padding-right:20px}.avue-crud__dialog__menu i{color:#909399;font-size:15px}.avue-crud__dialog__menu i:hover{color:#409EFF}.avue-crud__dialog .el-transfer{position:relative;padding:0 20px;height:80%}.avue-crud__dialog .el-transfer-panel__body,.avue-crud__dialog .el-transfer-panel__list.is-filterable{height:90%!important}.avue-crud__dialog .el-transfer__buttons{display:-webkit-box;display:-ms-flexbox;display:flex;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.avue-crud__dialog .el-transfer__buttons .el-button{margin:5px 0}.avue-crud__dialog .el-transfer-panel{min-width:200px;width:40%}.avue-crud__dialog .el-dialog__body{padding:20px 20px 5px 10px}.avue-crud__dialog .el-scrollbar__wrap{overflow-x:hidden}.avue-crud__dialog .avue-form__menu{padding-top:15px}.avue-card__item{margin-bottom:16px;border:1px solid #e8e8e8;background-color:#fff;-webkit-box-sizing:border-box;box-sizing:border-box;color:rgba(0,0,0,.65);font-size:14px;font-variant:tabular-nums;line-height:1.5;list-style:none;-webkit-font-feature-settings:"tnum";font-feature-settings:"tnum";cursor:pointer;height:200px}.avue-card__item:hover{border-color:rgba(0,0,0,.09);-webkit-box-shadow:0 2px 8px rgba(0,0,0,.09);box-shadow:0 2px 8px rgba(0,0,0,.09)}.avue-chat,.avue-data-pay .item{-webkit-box-shadow:1px 2px 10px #eee}.avue-card__item--add{border:1px dashed #d9d9d9;width:100%;color:rgba(0,0,0,.45);background-color:#fff;border-radius:2px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:16px}.avue-card__item--add i{margin-right:10px}.avue-card__item--add:hover{color:#40a9ff;background-color:#fff;border-color:#40a9ff}.avue-card__body{display:-webkit-box;display:-ms-flexbox;display:flex;padding:24px}.avue-card__detail{-webkit-box-flex:1;-ms-flex:1;flex:1}.avue-card__avatar{width:48px;height:48px;border-radius:48px;overflow:hidden;margin-right:12px}.avue-card__avatar img{width:100%;height:100%}.avue-card__title{color:rgba(0,0,0,.85);margin-bottom:12px;font-size:16px}.avue-card__title:hover{color:#1890ff}.avue-card__info,.avue-card__menu{display:-webkit-box;color:rgba(0,0,0,.45)}.avue-card__info{-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden;height:64px}.avue-card__menu{display:-ms-flexbox;display:flex;-ms-flex-pack:distribute;justify-content:space-around;height:50px;background:#f7f9fa;text-align:center;line-height:50px}.avue-card__menu:hover{color:#1890ff}.avue-comment{margin-bottom:30px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.avue-comment--reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.avue-comment--reverse .avue-comment__main:after,.avue-comment--reverse .avue-comment__main:before{left:auto;right:-8px;border-width:8px 0 8px 8px}.avue-comment--reverse .avue-comment__main:before{border-left-color:#dedede}.avue-comment--reverse .avue-comment__main:after{border-left-color:#f8f8f8;margin-right:1px;margin-left:auto}.avue-comment__avatar{width:48px;height:48px;border-radius:50%;border:1px solid transparent;-webkit-box-sizing:border-box;box-sizing:border-box;vertical-align:middle}.avue-comment__header{padding:5px 15px;background:#f8f8f8;border-bottom:1px solid #eee;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.avue-comment__author{font-weight:700;font-size:14px;color:#999}.avue-comment__main{-webkit-box-flex:1;-ms-flex:1;flex:1;margin:0 20px;position:relative;border:1px solid #dedede;border-radius:2px}.avue-comment__main:after,.avue-comment__main:before{position:absolute;top:10px;left:-8px;right:100%;width:0;height:0;display:block;content:" ";border-color:transparent;border-style:solid solid outset;border-width:8px 8px 8px 0;pointer-events:none}.avue-comment__main:before{border-right-color:#dedede;z-index:1}.avue-comment__main:after{border-right-color:#f8f8f8;margin-left:1px;z-index:2}.avue-comment__body{padding:15px;overflow:hidden;background:#fff;color:#333;font-size:14px}.avue-comment blockquote{margin:0;font-family:Georgia,Times New Roman,Times,Kai,Kaiti SC,KaiTi,BiauKai,FontAwesome,serif;padding:1px 0 1px 15px;border-left:4px solid #ddd}.avue-chat{box-shadow:1px 2px 10px #eee;position:relative;background-color:#fcfcfc}.avue-chat li,.avue-chat ul{padding:0;margin:0}.avue-chat li{list-style:none;cursor:pointer}.avue-chat .web__content{height:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.avue-chat .web__main{height:calc(100% - 200px);padding:15px 15px 20px;overflow-x:hidden;overflow-y:auto;-webkit-box-sizing:border-box;box-sizing:border-box}.avue-chat .web__logo{background-color:#409eff;display:-webkit-box;display:-ms-flexbox;display:flex;padding:15px 12px;margin:0 auto;vertical-align:middle}.avue-chat .web__logo-img{margin-top:3px;width:35px;height:35px;border-radius:100%;-webkit-box-shadow:0 3px 3px 0 rgba(0,0,0,.1);box-shadow:0 3px 3px 0 rgba(0,0,0,.1)}.avue-chat .web__logo-info{margin-left:10px}.avue-chat .web__logo-name{position:relative;margin-top:5px;font-size:13px}.avue-chat .web__logo-dept{margin-top:1px;font-size:12px}.avue-chat .web__logo-dept,.avue-chat .web__logo-name{color:#fff;margin:0;padding:0;width:175px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.avue-chat .web__main-item{position:relative;font-size:0;margin-bottom:10px;padding-left:60px;min-height:68px}.avue-chat .web__main-text,.avue-chat .web__main-user{display:inline-block;vertical-align:top;font-size:14px}.avue-chat .web__main-user{position:absolute;left:3px}.avue-chat .web__main-user img{width:40px;height:40px;border-radius:100%}.avue-chat .web__main-user cite{position:absolute;left:60px;top:-2px;width:500px;line-height:24px;font-size:12px;white-space:nowrap;color:#999;text-align:left;font-style:normal}.avue-chat .web__main-user cite i{padding-left:15px;font-style:normal}.avue-chat .web__main-text{position:relative;line-height:22px;margin-top:25px;padding:8px 15px;background-color:#f3f3f3;border-radius:3px;border:1px solid #f0f0f0;color:#000;word-break:break-all}.avue-chat .web__main-arrow{top:6px;left:-8px;position:absolute;display:block;width:0;height:0;border-color:transparent #ebeef5 transparent transparent;border-style:solid;border-width:8px 8px 8px 0}.avue-chat .web__main-arrow::after{content:" ";top:-7px;left:1px;position:absolute;display:block;width:0;height:0;border-color:transparent #fff transparent transparent;border-style:solid;border-width:7px 7px 7px 0}.avue-chat .web__main-item--mine .web__main-text .web__main-arrow{left:auto;right:-5px;border-color:transparent transparent transparent #409eff;border-style:solid;border-width:8px 0 8px 8px}.avue-chat .web__main-item--mine .web__main-text .web__main-arrow::after{left:auto;right:-2px;border-color:transparent transparent transparent #409eff;border-style:solid;border-width:7px 0 7px 7px}.avue-chat .web__main-list{margin:10px 0}.avue-chat .web__main-list li{height:30px;color:#409eff;line-height:30px}.avue-chat .web__main-item--mine{text-align:right;padding-left:0;padding-right:60px}.avue-chat .web__main-item--mine .web__main-user{left:auto;right:3px}.avue-chat .web__main-item--mine .web__main-user cite{left:auto;right:60px;text-align:right}.avue-chat .web__main-item--mine .web__main-user cite i{padding-left:0;padding-right:15px}.avue-chat .web__main-item--mine .web__main-text{margin-left:0;text-align:left;background-color:#409eff;color:#fff}.avue-chat .web__footer{-webkit-box-shadow:0 -1px 0 0 rgba(0,0,0,.04),0 -2px 0 0 rgba(0,0,0,.01);box-shadow:0 -1px 0 0 rgba(0,0,0,.04),0 -2px 0 0 rgba(0,0,0,.01);position:absolute;left:0;bottom:0;width:100%;background-color:#fff}.avue-chat .web__msg{padding:10px;height:auto;overflow:hidden}.avue-chat .web__msg--file,.avue-chat .web__msg--img,.avue-chat .web__msg--video{position:relative;max-width:250px;min-width:200px;width:100%;margin:10px 0;border:1px solid #eee;overflow:hidden;border-radius:5px;cursor:pointer;display:block}.avue-chat .web__msg--file span,.avue-image-preview__box,.avue-img--center{display:-webkit-box;display:-ms-flexbox;-webkit-box-align:center}.avue-chat .web__msg--file{height:140px;background-color:#fff}.avue-chat .web__msg--file span{-webkit-box-sizing:border-box;box-sizing:border-box;padding:3px 5px;color:#333;display:flex;-ms-flex-align:center;align-items:center;width:100%;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:calc(100% - 80px);overflow:hidden;font-size:13px;text-align:center}.avue-chat .web__msg--file h2{margin:0;width:100%;text-align:center;line-height:80px;background-color:#409EFF;color:#fff}.avue-chat .web__msg--map{height:160px}.avue-chat .web__msg-input{display:block;width:100%;height:60px;overflow-x:hidden;overflow-y:auto;-webkit-box-sizing:border-box;box-sizing:border-box;resize:none;outline:0;background-color:#fff;border:0;word-break:break-all;font-size:13px;line-height:17px;-webkit-appearance:none}.avue-chat .web__msg-submit{float:right;display:block;outline:0;cursor:pointer;text-align:center}.avue-chat .web__tools{padding:8px 10px 0;-webkit-box-sizing:border-box;box-sizing:border-box}.avue-chat .web__tools i{margin-right:12px;font-size:20px;color:#888a91}.avue-chat .web__tools i:hover{color:#76b1f9}.avue-draggable{padding:10px;position:absolute;cursor:move;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.avue-draggable__focus{opacity:0;position:absolute!important;top:0;left:0;z-index:-1024}.avue-draggable__mask{width:100%;height:100%;border:0;position:absolute;top:0;right:0;bottom:0;left:0;z-index:1}.avue-draggable--active{cursor:move;border:1px dashed #09f;background-color:rgba(115,170,229,.5)}.avue-draggable--move{opacity:.6;background-color:rgba(115,170,229,.5)}.avue-draggable--click{cursor:pointer}.avue-draggable__line--left{position:absolute;border-top:1px dashed #09f;width:10000px;height:0;top:0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}.avue-draggable__line--top{position:absolute;border-left:1px dashed #09f;width:0;height:10000px;left:0;-webkit-transform:translateY(-100%);transform:translateY(-100%)}.avue-draggable__line--label{top:-5px;left:-8px;position:absolute;padding:5px;-webkit-transform:translate(-100%,-100%);transform:translate(-100%,-100%);color:#09f;font-size:18px;white-space:nowrap;cursor:move}.avue-draggable__menu{position:absolute;top:0;left:0;background-color:#409EFF;font-size:25px;color:#fff;z-index:9999;cursor:pointer}.avue-draggable__range{position:absolute;width:10px;height:10px;border-radius:100%;z-index:9999;background-color:#09f}.avue-draggable__range--left,.avue-draggable__range--right{top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.avue-draggable__range--left:hover,.avue-draggable__range--right:hover{cursor:ew-resize}.avue-draggable__range--left{left:-6px}.avue-draggable__range--right{right:-6px}.avue-draggable__range--bottom,.avue-draggable__range--top{left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.avue-draggable__range--bottom:hover,.avue-draggable__range--top:hover{cursor:ns-resize}.avue-draggable__range--top{top:-6px}.avue-draggable__range--bottom{bottom:-6px}.avue-draggable__range--bottom-right:hover,.avue-draggable__range--top-left:hover{cursor:nwse-resize}.avue-draggable__range--bottom-left:hover,.avue-draggable__range--top-right:hover{cursor:nesw-resize}.avue-draggable__range--top-right{top:-6px;right:-6px}.avue-draggable__range--top-left{top:-6px;left:-6px}.avue-draggable__range--bottom-right{bottom:-6px;right:-6px}.avue-draggable__range--bottom-left{bottom:-6px;left:-6px}.avue-img--center{display:flex;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.avue-img--fullscreen .el-dialog__body{height:100%}.avue-image-preview{position:fixed;top:0;left:0;width:100%;height:100%;-webkit-transition:all .5s;transition:all .5s;z-index:9998}.avue-image-preview .el-image-viewer__close i{color:#fff}.avue-image-preview .el-image-viewer__btn{z-index:1024}.avue-image-preview img{-webkit-transition:all .5s;transition:all .5s;cursor:pointer}.avue-image-preview__mask{position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.5)}.avue-image-preview__box{width:100%;height:100%;display:flex;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.avue-image-preview__box .el-carousel{width:90%;height:100%}.avue-image-preview__box .el-carousel__container{height:100%}.avue-image-preview__box .el-carousel__item{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.avue-input-tree .el-tag__close{display:none!important}.avue-input-table__crud .avue-crud__pagination{padding:10px 0 2px 10px;margin:0}.amap-icon img,.amap-marker-content img{width:25px;height:34px}.avue-input-map__marker{position:absolute;top:-20px;right:-118px;color:#fff;padding:4px 10px;-webkit-box-shadow:1px 1px 1px rgba(10,10,10,.2);box-shadow:1px 1px 1px rgba(10,10,10,.2);white-space:nowrap;font-size:12px;font-family:"";background-color:#25a5f7;border-radius:3px}.avue-input-map__content-input{margin-bottom:10px}.avue-input-map__content-box{position:relative}.avue-input-map__content-container{width:100%;height:450px}.avue-input-map__content-result{display:block!important;position:absolute;top:0;right:-8px;width:250px;height:450px;overflow-y:auto}.avue-input-icon__item{text-align:center;max-width:80px;padding:20px;-webkit-transition:all .2s;transition:all .2s}.avue-input-icon__item:hover{-webkit-transform:scale(1.4);transform:scale(1.4)}.avue-input-icon__item--active{-webkit-transform:scale(1.4);transform:scale(1.4);color:#409EFF}.avue-input-icon__list{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.avue-input-icon__icon{font-size:32px!important}.avue-upload--upload .el-upload,.avue-upload--upload .el-upload__tip{display:none}.avue-upload--upload .el-upload--picture-img{display:inline-block}.avue-upload--upload .el-upload-list{margin-top:-6px}.avue-upload--list .el-upload{border:1px dashed #d9d9d9;border-radius:6px;cursor:pointer;position:relative;overflow:hidden}.avue-upload--list .el-upload:hover{border-color:#409eff}.avue-upload__dialog .el-dialog__header{display:none}.avue-upload__dialog .el-dialog__body{padding:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.avue-upload__menu{position:absolute;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.5);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;z-index:1024}.avue-form,.avue-form__group .el-col{position:relative}.avue-upload__menu i{color:#fff;margin:0 8px;font-size:20px}.avue-upload__icon{font-size:28px;color:#8c939d;width:178px;height:178px;line-height:178px;text-align:center}.avue-upload__avatar{width:178px;height:178px;display:block}.avue-form{margin:0 auto;-webkit-box-sizing:border-box;box-sizing:border-box}.avue-form__item--top{display:-webkit-box;display:-ms-flexbox;display:flex;flex-direction:column}.avue-form__item--top .el-form-item__label{width:100%!important;text-align:left!important}.avue-form__item--top .el-form-item__content{margin-left:0!important}.avue-form__item--left .el-form-item__label{text-align:left!important}.avue-form__menu{padding:5px 10px 0;-webkit-box-sizing:border-box;box-sizing:border-box}.avue-form__menu--center{text-align:center}.avue-form__menu--center .el-button{margin:0 5px}.avue-form__menu--left{text-align:left}.avue-form__menu--right{text-align:right}.avue-form__tabs{padding:0 10px;-webkit-box-sizing:border-box;box-sizing:border-box}.avue-form__group{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-ms-flex-wrap:wrap;flex-wrap:wrap;height:auto}.avue-form__group--flex{display:-webkit-box;display:-ms-flexbox;display:flex}.avue-form__line{display:inline-block;height:42px}.avue-form__row--block{width:100%;display:block}.avue-flow__node,.avue-flow__node-body{display:-webkit-box;display:-ms-flexbox}.avue-form__row--cursor{cursor:pointer}.avue-form__option{position:absolute;right:0;top:-10px;z-index:999}.avue-flow,.avue-flow__node,.avue-tree{position:relative}.avue-form__option i{color:#666}.avue-form__option i+i{margin-left:10px}.el-drawer .avue-form{padding:0 20px}.avue-flow .avue-draggable{padding:0}.avue-flow__node{display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:200px;height:80px;border-radius:5px;-webkit-box-shadow:'#66a6e0 0px 0px 12px 0px';box-shadow:'#66a6e0 0px 0px 12px 0px';border:1px solid #eee;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.avue-flow__node--active{border-width:2px;border-color:#f56c6c}.avue-flow__node-drag{margin:0 5px;display:inline-block}.avue-flow__node-header{-webkit-box-flex:1;-ms-flex:1;flex:1;background-color:#66a6e0}.avue-flow__node-body{display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-flex:1.5;-ms-flex:1.5;flex:1.5;text-align:center;background:#fff}.avue-date__group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.avue-date__radio .el-radio-button:last-child .el-radio-button__inner{border-radius:0;border-right:0}.avue-date__date{width:300px}.avue-date__date .el-date-editor{border-top-left-radius:0;border-bottom-left-radius:0}.avue-empty{margin:0 8px;font-size:14px;line-height:22px;text-align:center}.avue-checkbox .el-checkbox+.el-checkbox,.avue-crud .avue-crud__left .el-button+.el-button,.avue-crud .avue-crud__right .el-button+.el-button,.avue-form .avue-crud__left .el-button+.el-button,.avue-form .avue-crud__right .el-button+.el-button,.avue-radio .el-radio+.el-radio{margin-left:0}.avue-checkbox .el-checkbox,.avue-radio .el-radio{margin-right:10px}.avue-empty__image{height:100px;margin-bottom:8px}.avue-empty__image img{height:100%;vertical-align:middle;border-style:none}.avue-empty__desc{color:rgba(0,0,0,.65)}.avue-select .sortable-ghost{opacity:.8;color:#fff!important;background:#409EFF!important}.avue-select .el-tag{cursor:pointer}.avue-select__desc{float:right;color:#8492a6;font-size:13px}.avue-group{width:100%}.avue-group .el-collapse,.avue-group .el-collapse-item__wrap{border-color:#fff}.avue-group .el-collapse-item__header{height:inherit;border:none;border-bottom:1px solid #eee;margin-bottom:20px}.avue-group .el-collapse-item__content,.avue-group .van-collapse-item__content{padding-bottom:0}.avue-group .van-collapse-item__content{padding:0 2px}.avue-group .van-hairline--top-bottom::after,.avue-group .van-hairline-unset--top-bottom::after,.avue-group--arrow .el-collapse-item__arrow,.avue-group--arrow .van-icon-arrow{display:none}.avue-group .van-collapse-item__title,.avue-group__header,.avue-tree__filter{display:-webkit-box;display:-ms-flexbox}.avue-group .van-collapse-item__title{padding:0 10px;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.avue-group .van-collapse-item__title::after{left:0!important}.avue-group--none{margin:0!important;border:none!important}.avue-group--header .el-collapse-item__header,.avue-group--header .van-collapse-item__title{display:none}.avue-group--collapse .el-collapse-item__arrow,.avue-group--collapse .el-collapse-item__header{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.avue-group__item{margin-bottom:10px;background-color:#fff;border-bottom:1px solid #eee;border-radius:5px;-webkit-box-sizing:border-box;box-sizing:border-box}.avue-group__item:last-child{border-bottom:none}.avue-group__header{width:100%;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:50px;line-height:50px;-webkit-box-sizing:border-box;box-sizing:border-box}.avue-group__icon{margin-right:8px;font-size:20px;color:rgba(0,0,0,.85)}.avue-group__title{font-size:16px;font-weight:500;color:rgba(0,0,0,.85)}.avue-tree__menu{width:200px;position:fixed;z-index:1024;-ms-flex-wrap:wrap;flex-wrap:wrap;background-color:#fff}.avue-tree__item,.avue-video{position:relative;overflow:hidden}.avue-tree__dialog .el-dialog__body{padding:30px 20px 0}.avue-tree__item{height:34px;line-height:34px;outline:0;padding:0 10px;white-space:nowrap;text-overflow:ellipsis;width:100%;color:#666}.avue-tree__item:hover{cursor:pointer;color:#409eff}.avue-tree__filter{margin-bottom:5px;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.avue-tree__content{padding:5px 0;height:calc(100% - 32px)}.avue-title p{font-weight:700;font-size:18px;margin:5px 10px}.avue-search{padding:0 20px}.avue-search__item{padding:20px 0 10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;border-bottom:1px dashed #e8e8e8}.avue-search__item:last-child{border-bottom:none}.avue-search__tags{padding:0 12px;margin-right:24px;margin-bottom:12px;font-size:14px;color:rgba(0,0,0,.65);cursor:pointer;white-space:nowrap;display:inline-block}.avue-search__tags:hover{color:#1890ff}.avue-search__tags--active{color:#fff;background-color:#1890ff;border-radius:5px}.avue-search__tags--active:hover{opacity:.85;color:#fff}.avue-search__title{margin:0;padding:0 20px;width:120px;font-size:14px;text-align:right;display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box}.avue-search__content{width:calc(100% - 190px);display:inline-block}.avue-dynamic__item,.avue-notice__item{display:-webkit-box;display:-ms-flexbox}.avue-search__content .el-tag{margin-right:10px;margin-bottom:10px}.avue-video{width:500px}.avue-video__border span{position:absolute;width:30px;height:30px;border-width:4px;color:#0073eb;border-style:solid}.avue-video__border span:nth-child(1){left:15px;top:15px;border-right:0;border-bottom:0}.avue-video__border span:nth-child(2){right:15px;top:15px;border-left:0;border-bottom:0}.avue-video__border span:nth-child(3){bottom:15px;left:15px;border-right:0;border-top:0}.avue-video__border span:nth-child(4){bottom:15px;right:15px;border-left:0;border-top:0}.avue-video__img{width:100px;position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.avue-video__main{width:100%}.avue-dynamic__item{margin-bottom:10px;width:100%;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.avue-dynamic__header{padding-left:40px}.avue-dynamic__row{position:relative;border-top:1px dashed #eee;padding-top:13px}.avue-dynamic__row:first-child{border-top:0}.avue-dynamic__menu{position:absolute;right:0;z-index:1024}.avue-dynamic__input{margin-right:8px;width:100%}.avue-dynamic__button{margin-bottom:0!important}.avue-verify__item{padding:5px 10px;display:inline-block;margin:0 4px;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid #e1e1e1;font-size:64px;text-align:center}.avue-text-ellipsis__more{padding:0 2px}.avue-login .el-form-item{margin-bottom:18px}.avue-login .el-input-group__append{padding:0;overflow:hidden}.avue-login__send{min-width:150px;-webkit-box-sizing:border-box;box-sizing:border-box}.avue-login__send:hover{color:#C0C4CC!important;border-color:#EBEEF5!important;background-color:#F5F7FA!important}.avue-login__submit{width:100%}.avue-keyboard--default .akeyboard-keyboard{height:100%;width:100%;background:#f0f0f0;border-radius:5px;padding:9px 5px 5px;-webkit-box-sizing:border-box;box-sizing:border-box}.avue-keyboard--default .akeyboard-keyboard-innerKeys{text-align:center}.avue-keyboard--default .akeyboard-keyboard-keys{height:40px;min-width:40px;padding:0 10px;border-radius:5px;background:#fff;display:inline-block;line-height:40px;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;margin:4px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.avue-keyboard--default .akeyboard-keyboard-keys:hover,.avue-keyboard--default .keyboard-keyboard-keys-focus{background:#1e9fff;color:#fff}.avue-keyboard--default .akeyboard-mobileKeyboard-keys,.avue-keyboard--green .akeyboard-keyboard-keys{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;display:inline-block;cursor:pointer}.avue-keyboard--default .akeyboard-keyboard-keys-Delete,.avue-keyboard--default .akeyboard-keyboard-keys-Tab{width:80px}.avue-keyboard--default .akeyboard-keyboard-keys-Caps{width:77px}.avue-keyboard--default .akeyboard-keyboard-keys-Enter{width:90px}.avue-keyboard--default .akeyboard-keyboard-keys-Shift{width:106px}.avue-keyboard--default .akeyboard-keyboard-keys-Space{width:350px}.avue-keyboard--default .akeyboard-keyboard-fixedBottomCenter{width:100%!important;height:auto!important;position:fixed;bottom:0;left:0;border-radius:0!important}.avue-keyboard--default .akeyboard-numberKeyboard{height:100%;width:100%;background:#f0f0f0;border-radius:5px;padding:10px 5px 5px;-webkit-box-sizing:border-box;box-sizing:border-box}.avue-keyboard--default .akeyboard-numberKeyboard-keys-Enter{height:40px;width:100px}.avue-keyboard--default .akeyboard-mobileKeyboard{height:100%;width:100%;background:#f0f0f0;border-radius:5px;padding:11px 5px 5px;-webkit-box-sizing:border-box;box-sizing:border-box}.avue-keyboard--default .akeyboard-mobileKeyboard-keys{height:25px;min-width:25px;padding:0 10px;border-radius:3px;background:#fff;line-height:25px;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;margin:3px 2px 2px;user-select:none;font-size:10px}.avue-keyboard--default .akeyboard-mobileKeyboard-keys:hover{background:#1e9fff!important;color:#fff}.avue-keyboard--default .akeyboard-mobileKeyboard-keys-⇦,.avue-keyboard--default .akeyboard-mobileKeyboard-keys-⇧{width:25px;background-color:#999faf}.avue-keyboard--default .akeyboard-mobileKeyboard-keys-Space{height:28px;width:100px;line-height:28px;margin-left:55px}.avue-keyboard--default .akeyboard-mobileKeyboard-keys-Enter{height:28px;width:55px;line-height:28px;background:#1e9fff!important;color:#fff}.avue-keyboard--default .akeyboard-mobileKeyboard-keys-focus{background:#1e9fff!important;color:#fff}.avue-keyboard--green .akeyboard-keyboard{height:100%;width:100%;background:#030;border-radius:5px;padding:9px 5px 5px;-webkit-box-sizing:border-box;box-sizing:border-box}.avue-keyboard--green .akeyboard-keyboard-innerKeys{text-align:center}.avue-keyboard--green .akeyboard-keyboard-keys{height:40px;min-width:40px;padding:0 10px;border-radius:5px;background:#cc9;line-height:40px;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;margin:4px;user-select:none}.avue-keyboard--green .akeyboard-keyboard-keys:hover,.avue-keyboard--green .keyboard-keyboard-keys-focus{background:#693;color:#fff}.avue-keyboard--green .akeyboard-keyboard-keys-Delete,.avue-keyboard--green .akeyboard-keyboard-keys-Tab{width:80px}.avue-keyboard--green .akeyboard-keyboard-keys-Caps{width:77px}.avue-keyboard--green .akeyboard-keyboard-keys-Enter{width:90px}.avue-keyboard--green .akeyboard-keyboard-keys-Shift{width:106px}.avue-keyboard--green .akeyboard-keyboard-keys-Space{width:350px}.avue-keyboard--green .akeyboard-keyboard-fixedBottomCenter{width:100%!important;height:auto!important;position:fixed;bottom:0;left:0;border-radius:0!important}.avue-keyboard--green .akeyboard-numberKeyboard{height:100%;width:100%;background:#030;border-radius:5px;padding:10px 5px 5px;-webkit-box-sizing:border-box;box-sizing:border-box}.avue-keyboard--green .akeyboard-numberKeyboard-keys-Enter{height:40px;width:100px}.avue-keyboard--green .akeyboard-mobileKeyboard{height:100%;width:100%;background:#030;border-radius:5px;padding:11px 5px 5px;-webkit-box-sizing:border-box;box-sizing:border-box}.avue-keyboard--green .akeyboard-mobileKeyboard-keys{height:25px;min-width:25px;padding:0 10px;border-radius:3px;background:#cc9;display:inline-block;line-height:25px;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;margin:3px 2px 2px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-size:10px}.avue-keyboard--green .akeyboard-mobileKeyboard-keys:hover{background:#693!important;color:#fff}.avue-keyboard--green .akeyboard-mobileKeyboard-keys-⇦,.avue-keyboard--green .akeyboard-mobileKeyboard-keys-⇧{width:25px;background-color:#999faf}.avue-keyboard--green .akeyboard-mobileKeyboard-keys-Space{height:28px;width:100px;line-height:28px;margin-left:55px}.avue-keyboard--green .akeyboard-mobileKeyboard-keys-Enter{height:28px;width:55px;line-height:28px;background:#693!important;color:#fff}.avue-keyboard--green .akeyboard-mobileKeyboard-keys-focus{background:#693!important;color:#fff}.avue-keyboard--dark .akeyboard-keyboard{height:100%;width:100%;background:#000;color:#fff;border-radius:5px;padding:9px 5px 5px;-webkit-box-sizing:border-box;box-sizing:border-box}.avue-keyboard--dark .akeyboard-keyboard-innerKeys{text-align:center}.avue-keyboard--dark .akeyboard-keyboard-keys{height:40px;min-width:40px;padding:0 10px;border-radius:5px;background:#393d49;color:#fff;display:inline-block;line-height:40px;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;margin:4px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.avue-keyboard--dark .akeyboard-keyboard-keys:hover,.avue-keyboard--dark .keyboard-keyboard-keys-focus{background:#1e9fff}.avue-keyboard--dark .akeyboard-keyboard-keys-Delete,.avue-keyboard--dark .akeyboard-keyboard-keys-Tab{width:80px}.avue-keyboard--dark .akeyboard-keyboard-keys-Caps{width:77px}.avue-keyboard--dark .akeyboard-keyboard-keys-Enter{width:90px}.avue-keyboard--dark .akeyboard-keyboard-keys-Shift{width:106px}.avue-keyboard--dark .akeyboard-keyboard-keys-Space{width:350px}.avue-keyboard--dark .akeyboard-keyboard-fixedBottomCenter{width:100%!important;height:auto!important;position:fixed;bottom:0;left:0;border-radius:0!important}.avue-keyboard--dark .akeyboard-numberKeyboard{height:100%;width:100%;background:#000;border-radius:5px;padding:10px 5px 5px;-webkit-box-sizing:border-box;box-sizing:border-box}.avue-keyboard--dark .akeyboard-numberKeyboard-keys-Enter{height:40px;width:100px}.avue-keyboard--dark .akeyboard-mobileKeyboard{height:100%;width:100%;background:#000;border-radius:5px;padding:11px 5px 5px;-webkit-box-sizing:border-box;box-sizing:border-box}.avue-keyboard--dark .akeyboard-mobileKeyboard-keys{height:25px;min-width:25px;padding:0 10px;border-radius:3px;background:#393d49;color:#fff;display:inline-block;line-height:25px;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;margin:3px 2px 2px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-size:10px}.avue-keyboard--dark .akeyboard-mobileKeyboard-keys:hover{background:#1e9fff!important;color:#fff}.avue-keyboard--dark .akeyboard-mobileKeyboard-keys-⇦,.avue-keyboard--dark .akeyboard-mobileKeyboard-keys-⇧{width:25px;background-color:#999faf}.avue-keyboard--dark .akeyboard-mobileKeyboard-keys-Space{height:28px;width:100px;line-height:28px;margin-left:55px}.avue-keyboard--dark .akeyboard-mobileKeyboard-keys-Enter{height:28px;width:55px;line-height:28px;background:#1e9fff!important;color:#fff}.avue-keyboard--dark .akeyboard-mobileKeyboard-keys-focus{background:#1e9fff!important;color:#fff}.avue-keyboard--classic .akeyboard-keyboard{height:100%;width:100%;background:#2f4056;border-radius:5px;padding:9px 5px 5px;-webkit-box-sizing:border-box;box-sizing:border-box}.avue-keyboard--classic .akeyboard-keyboard-innerKeys{text-align:center}.avue-keyboard--classic .akeyboard-keyboard-keys{height:40px;min-width:40px;padding:0 10px;border-radius:5px;background:#fff;display:inline-block;line-height:40px;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;margin:4px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.avue-keyboard--classic .akeyboard-keyboard-keys:hover,.avue-keyboard--classic .keyboard-keyboard-keys-focus{background:#c2c2c2;color:#fff}.avue-keyboard--classic .akeyboard-keyboard-keys-Delete,.avue-keyboard--classic .akeyboard-keyboard-keys-Tab{width:80px}.avue-keyboard--classic .akeyboard-keyboard-keys-Caps{width:77px}.avue-keyboard--classic .akeyboard-keyboard-keys-Enter{width:90px}.avue-keyboard--classic .akeyboard-keyboard-keys-Shift{width:106px}.avue-keyboard--classic .akeyboard-keyboard-keys-Space{width:350px}.avue-keyboard--classic .akeyboard-keyboard-fixedBottomCenter{width:100%!important;height:auto!important;position:fixed;bottom:0;left:0;border-radius:0!important}.avue-keyboard--classic .akeyboard-numberKeyboard{height:100%;width:100%;background:#2f4056;border-radius:5px;padding:10px 5px 5px;-webkit-box-sizing:border-box;box-sizing:border-box}.avue-keyboard--classic .akeyboard-numberKeyboard-keys-Enter{height:40px;width:100px}.avue-keyboard--classic .akeyboard-mobileKeyboard{height:100%;width:100%;background:#2f4056;border-radius:5px;padding:11px 5px 5px;-webkit-box-sizing:border-box;box-sizing:border-box}.avue-keyboard--classic .akeyboard-mobileKeyboard-keys{height:25px;min-width:25px;padding:0 10px;border-radius:3px;background:#fff;display:inline-block;line-height:25px;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;margin:3px 2px 2px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-size:10px}.avue-keyboard--classic .akeyboard-mobileKeyboard-keys:hover{background:#c2c2c2!important;color:#fff}.avue-keyboard--classic .akeyboard-mobileKeyboard-keys-⇦,.avue-keyboard--classic .akeyboard-mobileKeyboard-keys-⇧{width:25px;background-color:#999faf}.avue-keyboard--classic .akeyboard-mobileKeyboard-keys-Space{height:28px;width:100px;line-height:28px;margin-left:55px}.avue-keyboard--classic .akeyboard-mobileKeyboard-keys-Enter{height:28px;width:55px;line-height:28px;background:#c2c2c2!important;color:#fff}.avue-keyboard--classic .akeyboard-mobileKeyboard-keys-focus{background:#c2c2c2!important;color:#fff}.avue-notice__item{padding:12px 24px;border-bottom:1px solid #e8eaec;cursor:pointer;-webkit-transition:background-color .2s ease-in-out;transition:background-color .2s ease-in-out;text-align:left;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.avue-array__input,.avue-data-tabs .item-tip,.data-box .item a{display:-webkit-box;display:-ms-flexbox}.avue-notice__content{-webkit-box-flex:1;-ms-flex:1;flex:1}.avue-notice__img{width:38px;height:38px;border-radius:100%;margin-top:5px;margin-right:10px;overflow:hidden}.avue-notice__img img{width:100%;height:100%}.avue-notice__name{line-height:25px}.avue-notice__title{font-size:14px;font-weight:400;line-height:22px;color:#515a6e;margin-bottom:4px}.avue-notice__tag{float:right;margin-top:2px}.avue-notice__subtitle{font-size:12px;color:#808695}.avue-notice__more{cursor:pointer;color:#2d8cf0;text-align:center;padding:10px 0}.avue-array__item{margin-bottom:5px}.ant-form-item,.ant-form-item-with-help{margin-bottom:0}.avue-array__input{display:flex}.avue-array__input .el-input{-webkit-box-flex:1;-ms-flex:auto;flex:auto}.avue-array__input .el-button{margin-left:5px}.ant-btn+.ant-btn{margin-left:10px}.ant-calendar-picker,.ant-time-picker{width:100%}.ant-form{padding-right:50px}.ant-form-item-control{line-height:34px}.ant-form-item{height:60px}.avue-data-tabs .item{position:relative;margin:15px;padding:12px;height:160px;border-radius:4px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;color:#fff}.avue-data-tabs .item a{color:#fff}.avue-data-tabs .item-header{position:relative}.avue-data-tabs .item-header>p{color:#fff;margin:0;font-size:14px}.avue-data-tabs .item-header>span{position:absolute;right:0;top:0;padding:2px 8px;border-radius:4px;font-size:12px;background:rgba(255,255,255,.3)}.avue-data-tabs .item-body .h2{color:#fff;margin:0;font-size:32px;line-height:60px;font-weight:700}.avue-data-tabs .item-footer{padding-top:8px;line-height:20px}.avue-data-tabs .item-footer>span{font-size:10px}.avue-data-tabs .item-footer>p{color:#fff;margin:0;font-size:12px}.avue-data-tabs .item-tip{display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;position:absolute;width:80px;height:80px;bottom:10px;right:10px;border:2px solid #fff;border-radius:100%;font-size:48px;-webkit-transform:rotate(-40deg);transform:rotate(-40deg);opacity:.1}.avue-data-cardText .item{padding:20px 25px;margin:10px 20px;background:#F8F8F8;border-radius:6px;-webkit-box-shadow:2px 2px 20px #ccc;box-shadow:2px 2px 20px #ccc}.avue-data-cardText .item-header{position:relative}.avue-data-cardText .item-header i{font-size:26px;color:#009688}.avue-data-cardText .item-header a{font-size:16px;margin-left:6px;position:absolute;bottom:4px}.avue-data-cardText .item-content{margin-top:8PX;font-size:14px;line-height:22px;color:#333}.avue-data-cardText .item-footer{position:relative}.avue-data-cardText .item-footer span:nth-child(1){color:#777;font-size:12px;text-overflow:ellipsis;word-break:break-all}.avue-data-cardText .item-footer span:nth-child(2){color:#CCC;font-size:12px;line-height:24px;position:absolute;right:0}.data-box .item{position:relative;margin:0 auto 10px;width:96%;height:100px;overflow:hidden;border-radius:5px;-webkit-box-sizing:border-box;box-sizing:border-box}.data-box .item:hover .item-text{top:0}.data-box .item a{display:flex}.data-box .item-icon{width:100px;height:100px;color:#fff;text-align:center;line-height:100px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;display:-webkit-box;display:-ms-flexbox;display:flex}.data-box .item-icon i{font-size:48px!important}.data-box .item-info{border-radius:0 5px 5px 0;border:1px solid #eee;border-left:none;background-color:#fff;-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.data-icons .item,.data-progress .item-header{display:-webkit-box;display:-ms-flexbox;-webkit-box-align:center}.data-box .item-info .title{font-size:30px;line-height:40px;text-align:center}.data-box .item-info .info{color:#999;font-size:14px;text-align:center}.data-progress .item{margin:10px}.data-progress .item-header{margin-bottom:10px;display:flex;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.data-progress .item-count{line-height:26px;font-size:26px;color:#666}.data-progress .item-title{color:#999;font-size:14px}.data-icons .item{display:flex;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:90%;margin:10px 15px}.data-icons .item-icon{margin-top:3px;margin-right:0!important;text-align:center}.data-icons .item-icon>i{font-size:46px!important}.data-icons .item-info{text-align:center;padding:10px 0}.data-icons .item-info>span{display:block;padding:5px 0;color:#999;font-size:12px}.data-icons .item-info .count{font-size:20px;line-height:25px}.data-icons .item--easy{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.data-icons .item--easy>.item-icon{margin:0}.data-icons .item--easy>.item-info{margin-top:-15px}.data-icons .item--easy>.item-info>span{font-size:14px}.data-card .item{position:relative;margin:0 auto 50px;width:230px;height:340px;overflow:hidden;border-radius:5px;border-color:#fff;border-width:1px;border-style:solid}.data-card .item:hover .item-text{top:0}.data-card .item-img{width:100%;border-radius:5px 5px 0 0}.data-card .item-text{position:absolute;top:150px;padding:20px 15px;width:100%;height:340px;overflow:auto;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:0 0 5px 5px;opacity:.9;-webkit-transition:top .4s;transition:top .4s}.data-card .item-text>p{font-size:12px;line-height:25px;text-indent:2em}.avue-data-display .item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:5px 0;text-align:center}.avue-data-display .count{display:block;margin:8px 0 15px;font-weight:700;font-size:32px;color:#15A0FF}.avue-data-display .title{line-height:32px;color:#999}.avue-data-display .splitLine{display:block;margin:0 auto;width:24px;height:1px;background:#9B9B9B}.avue-data-imgtext .item{position:relative;height:340px;width:240px;margin:10px auto 50px;border-radius:5px;-webkit-box-shadow:2px 2px 20px #ccc;box-shadow:2px 2px 20px #ccc}.avue-data-imgtext .item-header img{width:100%;height:170px;background:red;border-radius:5px 5px 0 0}.avue-data-imgtext .item-content{padding:10px 15px;color:#333!important}.avue-data-imgtext .item-content span{font-size:20px}.avue-data-imgtext .item-content:hover span{color:#1890ff}.avue-data-imgtext .item-content p{font-size:14px;height:60px;margin:6px 0;overflow:hidden}.avue-data-imgtext .item-footer{padding:10px 15px;position:relative}.avue-data-imgtext .item-footer img{height:20px;width:20px;border-radius:50%}.avue-data-imgtext .item-footer div{display:inline-block}.avue-data-imgtext .item-footer div li,.avue-data-imgtext .item-footer div ul{padding:0;margin:0 0 0 -8px;list-style:none;display:inline-block;border:2px solid #fff;border-radius:50%}.avue-data-imgtext .item-footer div:nth-child(1){font-size:14px;color:#ccc!important}.avue-data-imgtext .item-footer div:nth-child(2){position:absolute;right:15px}.avue-data-operatext .item{margin:5px 10px;-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;border-radius:3px;background:#fff;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1);box-shadow:0 1px 1px rgba(0,0,0,.1)}.avue-data-operatext .item a{color:#333}.avue-data-operatext .item-header{padding:20px 20px 60px;border-top-right-radius:3px;border-top-left-radius:3px;color:#fff;background-position:center center}.avue-data-operatext .item-title{margin-top:0;margin-bottom:5px;font-size:25px;font-weight:300;text-shadow:0 1px 1px rgba(0,0,0,.2);display:block}.avue-data-operatext .item-subtitle{font-size:14px;font-weight:400}.avue-data-operatext .item-content{border-top:1px solid #f4f4f4;padding:10px 10px 20px;background-color:#fff;border-radius:0 0 3px 3px}.avue-data-operatext .item-img{margin:-60px auto 5px;width:90px;height:90px;border-radius:100%;overflow:hidden;border:4px solid #fff}.avue-data-operatext .item-img img{width:100%;height:100%}.avue-data-operatext .item-list{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.avue-data-operatext .item-row{-webkit-box-sizing:border-box;box-sizing:border-box;width:33.33%;text-align:center}.avue-data-operatext .item-label{margin-bottom:5px;display:block;font-weight:600;font-size:16px}.avue-data-operatext .item-value{display:block;font-weight:300;text-transform:uppercase}.avue-data-rotate .item{margin:5px 10px;-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;color:#fff;border-radius:3px}.avue-data-rotate .item-box{padding:10px 20px}.avue-data-rotate .item-count{margin-bottom:5px;font-size:38px;white-space:nowrap;font-weight:300;display:block}.avue-data-rotate .item-title{font-size:15px}.avue-data-rotate .item-icon{-webkit-transition:all .3s linear;transition:all .3s linear;position:absolute;top:20px;right:20px;font-size:65px;color:rgba(0,0,0,.15)}.avue-data-rotate .item-icon:hover{font-size:70px}.avue-data-rotate .item-more{position:relative;text-align:center;padding:3px 0;color:#fff;color:rgba(255,255,255,.8);display:block;z-index:10;font-size:14px;letter-spacing:2px;background:rgba(0,0,0,.1);text-decoration:none}.avue-data-pay .item{margin:0 auto;padding-bottom:16px;width:80%;position:relative;border-radius:4px;background-color:#fff;min-height:670px;box-shadow:1px 2px 10px #eee}.avue-data-pay .top{width:100%;height:6px;position:absolute;top:0;left:0;border-radius:4px 4px 0 0}.avue-data-pay .header{margin-bottom:40px;text-align:center}.avue-data-pay .title{text-align:center;padding:20px 0 10px;font-size:20px;font-weight:200}.avue-data-pay .money span{margin-right:5px;font-size:14px}.avue-data-pay .money .b{margin-right:2px;font-size:20px;font-weight:700}.avue-data-pay .money s{margin-right:3px;font-size:12px}.avue-data-pay .money em{font-size:14px;font-style:normal}.avue-data-pay .img{width:50px}.avue-data-pay .line{width:60%;height:1px;background:rgba(150,150,150,.1);margin:20px auto}.avue-data-pay .btn{display:block;width:120px;height:32px;line-height:32px;margin:0 auto;text-align:center;border-radius:32px;color:#fff;cursor:pointer;-webkit-transition:opacity .2s ease-in-out;transition:opacity .2s ease-in-out}.avue-data-pay .list-item{list-style:none;padding-left:20px;margin-bottom:12px;color:#666;font-size:14px}.avue-data-pay .list-item a{color:#666}.avue-data-pay .list-item-icon{color:#515a6e;margin-right:8px}.avue-data-pay .list-item--link{font-size:12px;color:#2d8cf0}.avue-data-pay .list-item--no,.avue-data-pay .list-item--no+span{color:#c5c8ce}.data-price .item{margin:0 20px;text-align:center;-webkit-box-shadow:2px 3px 15px #eee;box-shadow:2px 3px 15px #eee}.data-price .item:hover{border:1px solid #00a680}.data-price .item:hover .body{color:#fff;background-color:#00a680}.data-price .item:hover .body::after{border-top-color:#00a680}.data-price .item:hover .list{color:#00a680}.data-price .item:hover .price{color:#fff}.data-price .item .title{height:80px;line-height:80px;font-size:18px;color:#333}.data-price .item .body,.data-price .item .price{margin:0 0 50px;line-height:120px;height:120px;color:#6b6b6b}.data-price .item .price{padding:0 8px;font-size:42px}.data-price .item .append{font-size:16px}.data-price .item .body{position:relative;padding:0;background-color:#f4f4f4;font-size:42px}.data-price .item .body::before{content:"¥";font-size:16px;font-weight:400}.data-price .item .body::after{content:'';position:absolute;display:block;width:0;height:0;bottom:-15px;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);border-color:#f4f4f4 transparent transparent;border-style:solid;border-width:20px 30px 0}.data-price .item .list{padding-bottom:30px;color:#666;font-size:14px}.avue-data-panel .item{padding:0 30px;margin:0 20px;cursor:pointer;height:108px;font-size:12px;position:relative;overflow:hidden;color:#666;background:#fff;-webkit-box-shadow:4px 4px 40px rgba(0,0,0,.05);box-shadow:4px 4px 40px rgba(0,0,0,.05);border-color:rgba(0,0,0,.05);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.avue-data-panel .item-icon{font-size:52px}.avue-data-panel .item-info{text-align:center}.avue-data-panel .item-title{line-height:18px;color:rgba(0,0,0,.45);font-size:16px;margin-bottom:12px}.avue-data-panel .item-count{font-size:20px}[class^=avue-data-] a,[class^=data-] a{text-decoration:none}@-webkit-keyframes rotating{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes rotating{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.avue-echart-tabs .el-select{width:100%}.avue-echart-tabs .el-input,.avue-echart-tabs .el-select,.avue-echart-tabs input{height:100%}.avue-echart-tabs .el-input{font-size:inherit}.avue-echart-tabs__list{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-pack:distribute;justify-content:space-around;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:100%}.avue-echart-tabs__icon{margin-right:10px}.avue-echart-tabs__item{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-sizing:border-box;box-sizing:border-box}.avue-echart-iframe iframe{border:none;width:100%;height:100%}.avue-echart-text{overflow:hidden}.avue-echart-text__box{width:100%;height:100%}.avue-echart-text__text{display:block;text-decoration:none}.avue-echart-swiper .el-carousel,.avue-echart-swiper .el-carousel__container{height:100%}.avue-echart-swiper img{width:100%;height:100%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.avue-echart-pie__title{position:absolute;width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.avue-echart-slide .swiper-container{width:100%;height:100%}.avue-echart-slide .swiper-slide{text-align:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.avue-echart-table__body{position:relative;overflow:hidden}.avue-echart-table__menu{position:absolute;padding:0 5px;text-align:right}.avue-echart-table__menu i{margin-right:10px;font-size:20px}.avue-echart-table__allview{opacity:.9}.avue-echart-table__allview .el-table--enable-row-hover .el-table__body tr:hover>td{background-color:#333}.avue-echart-table__tr{display:-webkit-box;display:-ms-flexbox;display:flex}.avue-echart-table__tr--line{-webkit-transition:all .5s;transition:all .5s;width:100%;position:absolute}.avue-echart-table__td{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;-o-text-overflow:ellipsis;-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.avue-echart-table__header{margin-bottom:20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;border-bottom-width:0}.avue-echart-table__index{margin:0 auto;width:30px;height:30px;line-height:30px;text-align:center;color:#fff;background-color:#144280;border-radius:100%}.avue-echart-table__index--1{background-color:#fdd706}.avue-echart-table__index--2,.avue-echart-table__index--3{background-color:#1f94f4}.avue-echart-table__item{display:inline-block;padding:5px 10px;border-style:solid;border-width:1px}.avue-echart-table__item--active{color:#fff!important}.avue-echart-table table{width:100%;border-width:1px;border-style:solid}.avue-echart-table td,.avue-echart-table th{border-width:0 0 1px;border-style:solid;font-size:16px;font-weight:300}.avue-echart-header{padding:10px}.avue-echart-header--center{text-align:center}.avue-echart-header--right{text-align:right}.avue-echart-header__title{margin-right:5px;font-size:18px;font-weight:400;color:#333;text-decoration:none}.avue-echart-header__info{display:inline-block}.avue-echart-progress{position:relative}.avue-echart-progress__text--circle{position:absolute;width:100%;top:50%;-webkit-transform:translate(0,-50%);transform:translate(0,-50%);text-align:center}.avue-echart-progress__text--line{margin-bottom:20px;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.avue-echart-progress__text--line p{margin-right:5px}.avue-echart-img--rotate{-webkit-animation:rotating 0s linear infinite;animation:rotating 0s linear infinite}.avue-echart-flop .el-tooltip{width:100%}.avue-echart-flop__count{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.avue-echart-flop__item{font-family:"Microsoft Yahei";font-size:28px;font-weight:400;color:#fff;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block}.avue-echart-flop__item--img{padding:0 5px;border-image-slice:10 16 15 10 fill;border-width:10px 16px 15px 10px;border-style:solid}.avue-echart-flop__item--none{padding:0!important;border-width:0!important;background-color:transparent!important}.avue-echart-map{position:relative}.avue-echart-map__bg{position:absolute;top:0;left:0}.avue-echart-map__box{position:relative}.avue-echart-map__location{position:absolute;background-color:red;width:10px;height:10px}.avue-echart-map__location:hover{background-color:green}.avue-checkbox__mobile .avue__tag,.avue-radio__mobile .avue__tag{margin-right:5px;margin-bottom:2px}.avue-grid__mobile{padding:30px 0 0}.avue-grid__mobile .avue-grid__icon{width:50px;height:50px;line-height:50px;text-align:center}.avue-grid__mobile .avue-grid__icon i{line-height:50px;font-size:26px;color:#fff}.avue-grid__mobile .avue-grid__item{margin-bottom:20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.avue-grid__mobile .avue-grid__img{width:50px;height:50px}.avue-grid__mobile .avue-grid__title{line-height:30px;font-size:13px}.avue-swipe__mobile .avue-swipe__item{position:relative}.avue-swipe__mobile .avue-swipe__title{width:100%;padding:8px 0;position:absolute;left:0;bottom:0;background-color:rgba(0,0,0,.5);color:#fff;font-size:14px;text-align:center}.avue-swipe__mobile .avue-swipe__img{-o-object-fit:cover;object-fit:cover}.avue-cell__mobile .avue-cell__icon{margin-right:5px;font-size:20px}.avue-cell__mobile .avue-cell__icon--color{width:30px;height:30px;text-align:center;line-height:30px;border-radius:3px;color:#fff}.van-cell::after{display:block!important}.avue--detail .el-radio,.avue--detail .el-radio .el-radio__inner,.avue-canvas{display:none}.van-image-preview{z-index:9999!important}.van-field__control{-ms-flex-wrap:wrap;flex-wrap:wrap}.avue-crud__mobile .avue-crud__page{margin-top:10px;background-color:#fff}.avue-crud__mobile .van-cell-group{margin-bottom:10px}body{font-family:Chinese Quote,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol}*{outline:0}.avue-ghost{opacity:.5;background:#c8ebfb}.avue--disabled{color:#ccc}.avue--detail .el-input.is-disabled .el-input__inner,.avue--detail .el-range-editor.is-disabled,.avue--detail .el-range-editor.is-disabled input,.avue--detail .el-textarea.is-disabled .el-textarea__inner{color:#606266;background-color:#fff}.avue--detail .hover-row td{background-color:#fff!important}.avue--detail .el-input-group__append,.avue--detail .el-input-group__prepend{background-color:transparent;border:none}.avue--detail .el-checkbox__input.is-disabled+span.el-checkbox__label{color:#606266}.avue--detail .el-input__inner,.avue--detail .el-textarea__inner{border:none}.avue--detail .el-input__inner::-webkit-input-placeholder,.avue--detail .el-textarea__inner::-webkit-input-placeholder{color:transparent!important}.avue--detail .el-input__inner::-moz-placeholder,.avue--detail .el-textarea__inner::-moz-placeholder{color:transparent!important}.avue--detail .el-input__inner::-ms-input-placeholder,.avue--detail .el-textarea__inner::-ms-input-placeholder{color:transparent!important}.avue--detail .el-radio .is-disabled.is-checked,.avue--detail .el-radio.is-checked{display:inline-block;color:#606266}.avue--detail .el-radio .is-disabled.is-checked .el-radio__label,.avue--detail .el-radio.is-checked .el-radio__label{padding-left:14px;color:#606266;font-weight:400;font-size:14px}.avue--detail .el-checkbox{display:none}.avue--detail .el-checkbox .is-disabled.is-checked,.avue--detail .el-checkbox.is-checked{display:inline-block;color:#606266}.avue--detail .el-checkbox .el-checkbox__inner,.avue--detail .el-form-item.is-required:not(.is-no-asterisk) .el-form-item__label-wrap>.el-form-item__label:before,.avue--detail .el-form-item.is-required:not(.is-no-asterisk)>.el-form-item__label:before,.avue--detail .el-input__suffix,.avue--view .el-input-number.is-disabled .el-input-number__decrease,.avue--view .el-input-number.is-disabled .el-input-number__increase{display:none}.avue--detail .el-checkbox .is-disabled.is-checked .el-checkbox__label,.avue--detail .el-checkbox.is-checked .el-checkbox__label{padding-left:14px;color:#606266;font-weight:400;font-size:14px}.avue--view .el-textarea.is-disabled .el-textarea__inner{background-color:#fff;border-color:#dcdfe6;color:#606266;resize:none}.avue--view .el-input.is-disabled .el-input__inner{background-color:#fff;border-color:#dcdfe6;color:#606266}.avue--view .el-input-number.is-disabled .el-input__inner{padding-left:15px}.avue-grid{position:absolute;top:0;left:0;width:100%;height:100%;background-size:20px 20px,20px 20px;background-image:linear-gradient(rgba(0,0,0,.1) 1px,transparent 0),linear-gradient(90deg,rgba(0,0,0,.1) 1px,transparent 0)}#nprogress .bar,.avue-mask{position:fixed;top:0;left:0}.avue-mask{bottom:0;right:0;background-color:rgba(55,55,55,.6);height:100%;z-index:1000}.avue--card{-webkit-box-shadow:2px 1px 8px rgba(0,0,0,.15);box-shadow:2px 1px 8px rgba(0,0,0,.15);border-radius:5px}.avue-dialog .el-dialog{border-radius:2px}.avue-dialog .el-dialog__title,.avue-dialog .el-drawer__header{color:rgba(0,0,0,.85);font-weight:500;word-wrap:break-word}.el-select-dropdown .el-tree-node__label,.el-select-dropdown__item.selected{font-weight:400}.avue-dialog .el-drawer__header{margin:0;min-height:20px;padding:16px 10px 16px 24px;border-bottom:1px solid #f0f0f0}.avue-dialog .el-drawer__body{padding:30px 10px}.avue-dialog .el-dialog__footer{padding:10px 16px;border-top:1px solid #f0f0f0}.avue-dialog .el-dialog__header{padding:16px 24px;min-height:20px;border-bottom:1px solid #f0f0f0}.avue-dialog iframe{width:100%;height:100%;border:0;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box}.avue-queue--block{display:inline-block}.avue-opacity{opacity:0}.avue-opacity--active{opacity:1}.fade-enter-active,.fade-leave-active{-webkit-transition:opacity .3s;transition:opacity .3s}.fade-enter,.fade-leave-to{opacity:0}.el-tooltip__popper{max-width:60%}.avue-crud .avue-input-number,.avue-crud .el-cascader,.avue-crud .el-date-editor.el-input,.avue-crud .el-date-editor.el-input__inner,.avue-crud .el-select,.avue-form .avue-input-number,.avue-form .el-cascader,.avue-form .el-date-editor.el-input,.avue-form .el-date-editor.el-input__inner,.avue-form .el-select{width:100%!important}.avue-crud .el-input-number .el-input__inner,.avue-form .el-input-number .el-input__inner{text-align:left}.avue-crud .avue-crud__left .el-button,.avue-crud .avue-crud__right .el-button,.avue-form .avue-crud__left .el-button,.avue-form .avue-crud__right .el-button{margin-right:8px;margin-bottom:8px}.avue-crud .el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content,.avue-form .el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{color:#409EFF}.avue-crud .el-tree-node__label,.avue-form .el-tree-node__label{margin-left:8px}.avue-crud .el-input__inner,.avue-form .el-input__inner{height:38px;line-height:38px}.avue-crud .el-range-editor--small,.avue-form .el-range-editor--small{height:32px;line-height:32px}.avue-crud .el-range-editor--mini,.avue-form .el-range-editor--mini{height:28px;line-height:28px}.avue-crud .el-input--small input,.avue-form .el-input--small input{height:32px;line-height:32px}.avue-crud .el-input--mini input,.avue-form .el-input--mini input{height:28px;line-height:28px}.avue-crud .el-table--medium td,.avue-form .el-table--medium td{padding:7px 0!important}.avue-crud .el-tooltip__popper,.avue-form .el-tooltip__popper{max-width:60%}.avue-crud .el-dropdown-menu__item,.avue-form .el-dropdown-menu__item{line-height:25px}.avue-crud .el-table-filter__list,.avue-form .el-table-filter__list{width:100%;height:300px;overflow-y:auto}.el-form-item--mini .el-color-picker--mini,.el-form-item--mini .el-color-picker--mini .el-color-picker__trigger{width:23px;height:23px}.el-dropdown-menu .el-button--text{width:100%!important}.el-pagination__editor.el-input .el-input__inner{line-height:28px}.el-drawer__body{height:100%}.el-checkbox:last-of-type{margin-right:8px}.el-table colgroup.gutter,.el-table th.gutter{display:table-cell!important}.el-input-number .el-input__suffix{display:none}.el-input-number__decrease,.el-input-number__increase{background-color:transparent;color:#c0c4cc!important;font-size:16px!important}.el-transfer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-tree-node.is-current>.el-tree-node__content{color:#409eff;background-color:#F5F7FA}.el-transfer-panel__item{width:100%}.el-select-dropdown .el-scrollbar .el-scrollbar__view .el-select-dropdown__item{height:auto;padding:0}.el-select-dropdown .el-scrollbar .el-scrollbar__view .el-select-dropdown__item>span{padding:0 20px}.el-select-dropdown ul li>>>.el-tree .el-tree-node__content{height:auto;padding:0 20px}.el-select-dropdown .el-tree>>>.is-current .el-tree-node__label{color:#409EFF;font-weight:700}.el-select-dropdown .el-tree>>>.is-current .el-tree-node__children .el-tree-node__label{color:#606266;font-weight:400}.el-form-item.is-error .avue-dynamic{border:1px solid #F56C6C;border-radius:3px}.el-dropdown-menu__item{padding-top:3px!important;padding-bottom:3px!important}.avue-theme--dark body{background:#000}.avue-theme--dark .el-pagination.is-background .btn-next,.avue-theme--dark .el-pagination.is-background .btn-prev,.avue-theme--dark .el-pagination.is-background .el-pager li{background-color:#151518;color:#525256;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid #313135}.avue-theme--dark .el-pagination.is-background .el-pager li:not(.disabled).active{background-color:#151518;border-color:#409EFF}.avue-theme--dark .el-cascader-menu{border-right:solid 1px #313135}.avue-theme--dark .el-select-dropdown.is-multiple .el-select-dropdown__item.selected,.avue-theme--dark .el-select-dropdown.is-multiple .el-select-dropdown__item.selected.hover{background-color:#151518}.avue-theme--dark .el-cascader__dropdown,.avue-theme--dark .el-input__inner,.avue-theme--dark .el-range-input,.avue-theme--dark .el-select-dropdown{background-color:#151518;color:#999;border:1px solid #313135}.avue-theme--dark .el-cascader__dropdown:hover,.avue-theme--dark .el-input__inner:hover,.avue-theme--dark .el-range-input:hover,.avue-theme--dark .el-select-dropdown:hover{border-color:#409EFF}.avue-theme--dark .el-cascader__dropdown::-webkit-input-placeholder,.avue-theme--dark .el-input__inner::-webkit-input-placeholder,.avue-theme--dark .el-range-input::-webkit-input-placeholder,.avue-theme--dark .el-select-dropdown::-webkit-input-placeholder{color:#525256}.avue-theme--dark .el-cascader__dropdown::-moz-placeholder,.avue-theme--dark .el-input__inner::-moz-placeholder,.avue-theme--dark .el-range-input::-moz-placeholder,.avue-theme--dark .el-select-dropdown::-moz-placeholder{color:#525256}.avue-theme--dark .el-cascader__dropdown:-moz-placeholder,.avue-theme--dark .el-input__inner:-moz-placeholder,.avue-theme--dark .el-range-input:-moz-placeholder,.avue-theme--dark .el-select-dropdown:-moz-placeholder{color:#525256}.avue-theme--dark .el-cascader__dropdown:-ms-input-placeholder,.avue-theme--dark .el-input__inner:-ms-input-placeholder,.avue-theme--dark .el-range-input:-ms-input-placeholder,.avue-theme--dark .el-select-dropdown:-ms-input-placeholder{color:#525256}.avue-theme--dark .el-form-item__label{color:#9a9a9f}.avue-theme--dark .el-switch__core{background:#151518;border-color:#151518}.avue-theme--dark .avue-group__item{background-color:#000}.avue-theme--dark .el-table--border,.avue-theme--dark .el-table--group{border-color:#313135}.avue-theme--dark .el-table__body tr.current-row>td,.avue-theme--dark .el-table__body tr.hover-row>td{background-color:#151518}.avue-theme--dark .el-table--border td,.avue-theme--dark .el-table--border th,.avue-theme--dark .el-table__body-wrapper .el-table--border.is-scrolling-left~.el-table__fixed{border-color:#999}.avue-theme--dark .avue-crud .el-table th,.avue-theme--dark .el-table,.avue-theme--dark .el-table th,.avue-theme--dark .el-table tr,.avue-theme--dark .el-table__fixed-footer-wrapper tbody td,.avue-theme--dark .el-table__footer-wrapper tbody td,.avue-theme--dark .el-table__header-wrapper tbody td{background-color:#151518;color:#999;border-color:#999}@media screen and (max-width:992px){.el-dialog__footer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-button+.el-button{margin-left:0}.avue-upload__avatar,.avue-upload__icon,.el-upload--picture-card,.el-upload-list--picture-card .el-upload-list__item{width:100px;height:100px;line-height:100px}.avue-crud .el-form-item,.avue-crud__title .avue-date__radio,.avue-crud__title .avue-date__radio .el-radio-group .el-radio-button__inner,.avue-crud__title .avue-date__radio .el-radio-group label{width:100%}.avue-tip{display:none}.avue-crud__menu,.avue-crud__title{display:block!important}.avue-crud .el-form-item__label{-webkit-box-flex:1;-ms-flex:1;flex:1}.avue-crud .el-form-item__content{-webkit-box-flex:5;-ms-flex:5;flex:5}.avue-crud__searchMenu{text-align:center}.avue-crud__title p{margin-bottom:20px}.avue-crud__title .avue-date__group{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.avue-crud__title .avue-date__date{display:none}.avue-crud__title .avue-date__radio .el-radio-group{display:-webkit-box;display:-ms-flexbox;display:flex}.avue-crud__title .avue-date__radio .el-radio-button:last-child .el-radio-button__inner{border-radius:0 4px 4px 0;border-right:1px solid #dcdfe6}}#nprogress{pointer-events:none}#nprogress .bar{background:#29d;z-index:1031;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;-webkit-box-shadow:0 0 10px #29d,0 0 5px #29d;box-shadow:0 0 10px #29d,0 0 5px #29d;opacity:1;-webkit-transform:rotate(3deg) translate(0,-4px);transform:rotate(3deg) translate(0,-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;-webkit-box-sizing:border-box;box-sizing:border-box;border:2px solid transparent;border-top-color:#29d;border-left-color:#29d;border-radius:50%;-webkit-animation:nprogress-spinner .4s linear infinite;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@-webkit-keyframes nprogress-spinner{0%{-webkit-transform:rotate(0)}100%{-webkit-transform:rotate(360deg)}}@keyframes nprogress-spinner{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}
\ No newline at end of file
diff --git a/pages/registerUser/registerUser.vue b/pages/registerUser/registerUser.vue
deleted file mode 100644
index f49843d..0000000
--- a/pages/registerUser/registerUser.vue
+++ /dev/null
@@ -1,483 +0,0 @@
-<template>
-	<view class="registerUser">
-		<u-form :model="form" ref="uForm">
-			<u-form-item :label="item.title" :prop="item.froms" label-width="200" :left-icon="item.img" :required="item.requireds"
-				v-for="(item, index) in list" :key="index">
-				<u-input v-model="form[item.froms]"  :placeholder="item.placeholder" />
-			</u-form-item>
-			<u-form-item label="部门" left-icon="account-fill" label-width="200" :required="true">
-				<u-input v-model="form.obj" type="select" placeholder="请选择部门" :border="true" @click="depl" />
-				<u-select v-model="show" mode="mutil-column-auto" :list="listbm" @confirm="confirm"></u-select>
-			</u-form-item>
-			
-			<u-form-item label="性别" label-width="200" left-icon="man">
-				<u-radio-group v-model="form.sex">
-					<u-radio v-for="(item, index) in sex" :key="index" :name="item.name" :disabled="item.disabled">
-						{{ item.name }}
-					</u-radio>
-				</u-radio-group>
-			</u-form-item>
-		</u-form>
-		<u-button class="submit" @click="zc">
-			注册{{faceMsg}}</u-button>
-		<!-- <u-button class="submit" @click="submit">提交</u-button> -->
-	</view>
-</template>
-
-<script>
-	export default {
-		data() {
-			return {
-				show: false,
-				listbm: [],
-				flag: false,
-				list: [{
-						title: '账号',
-						img: 'man-add-fill',
-						froms: 'user',
-						requireds:true,
-						placeholder: '请输入帐号'
-					},
-					{
-						title: '密码',
-						img: 'lock-fill',
-						froms: 'pass',
-						requireds:true,
-						placeholder: '请输入密码'
-					},
-					{
-						title: '确认密码',
-						img: 'lock-fill',
-						froms: 'passTwo',
-						requireds:true,
-						placeholder: '请确认密码'
-					},
-					{
-						title: '姓名',
-						img: 'account',
-						froms: 'name',
-						requireds:true,
-						placeholder: '请输入姓名'
-					},
-					// {
-					// 	title: '身份证',
-					// 	img: 'fingerprint',
-					// 	froms: 'carId',
-					// 	placeholder: '请输入身份证'
-					// },
-					{
-						title: '手机号',
-						img: 'phone-fill',
-						froms: 'phone',
-						requireds:false,
-						placeholder: '请输入手机号'
-					},
-					// {
-					// 	title: '部门',
-					// 	img: 'phone-fill',
-					// 	froms: 'depl',
-					// 	placeholder: '请选择部门'
-					// },
-				
-				],
-				sex: [{
-						name: '男',
-						disabled: false
-					},
-					{
-						name: '女',
-						disabled: false
-					},
-				],
-				objList: [{
-						text: '赣州'
-					},
-					{
-						text: '南昌'
-					}
-				],
-				form: {
-					user: '',
-					pass: '',
-					passTwo: '',
-					name: '',
-					carId: '',
-					phone: '',
-					sex: '男',
-					obj: '',
-					objId: '',
-				},
-				rules: {
-					user: [{
-						required: true,
-						message: '请输入账号',
-						// 可以单个或者同时写两个触发验证方式 
-						trigger: ['change', 'blur'],
-					}],
-					pass: [{
-						required: true,
-						message: '请输入密码',
-						// 可以单个或者同时写两个触发验证方式 
-						trigger: ['change', 'blur'],
-					}, {
-						min: 6,
-						message: '密码不能少于6个字',
-						trigger: ['change', 'blur']
-					}],
-					passTwo: [{
-						required: true,
-						message: '请再次输入密码',
-						// 可以单个或者同时写两个触发验证方式 
-						trigger: ['change', 'blur'],
-					}, {
-						validator: (rule, value, callback) => {
-							console.log(this.form.pass, value)
-							if (this.form.pass == value) {
-								return true
-							} else {
-								return false
-							}
-							// return this.$u.test.code(this.form.pass,value);
-						},
-						message: '两次输入密码不正确',
-						trigger: ['change', 'blur'],
-					}],
-					name: [{
-						required: true,
-						message: '请输入姓名',
-						// 可以单个或者同时写两个触发验证方式 
-						trigger: ['change', 'blur'],
-					}],
-					depts: [{
-						required: true,
-						message: '请输入姓名',
-						// 可以单个或者同时写两个触发验证方式 
-						trigger: ['change', 'blur'],
-					}],
-					carId: [{
-							required: true,
-							message: '请输入身份证',
-							// 可以单个或者同时写两个触发验证方式 
-							trigger: ['change', 'blur'],
-						},
-						{
-							validator: (rule, value, callback) => {
-								return this.$u.test.idCard(value);
-							},
-							message: '身份证号码不正确',
-							trigger: ['change', 'blur'],
-						}
-					],
-					// phone: [{
-					// 	required: false,
-					// 	message: '请输入手机号',
-					// 	// 可以单个或者同时写两个触发验证方式 
-					// 	trigger: ['change', 'blur'],
-					// }, {
-					// 	validator: (rule, value, callback) => {
-					// 		return this.$u.test.mobile(value);
-					// 	},
-					// 	message: '手机号码不正确',
-					// 	trigger: ['change', 'blur'],
-					// }],
-				},
-				showGetFace: false,
-				faceState: -2,
-				facebc: '#fff',
-				faceco: '#000',
-				faceMsg: ''
-			};
-		},
-		methods: {
-			zc(){
-				var that = this;
-				if(that.form.obj == "" || that.form.obj == null){
-					uni.showToast({
-						title: '请选择部门',
-						icon:'none',
-						duration: 2000
-					});
-					return;
-				}
-				
-				this.$refs.uForm.validate(valid => {
-					if (valid) {
-				console.log(this.form);
-				var d = this.form;
-				var url = this.$store.state.piAPI + '/zc/inster',
-					data = {
-						// deptid: ,
-						password: d.pass,
-						password2: d.passTwo,
-						phone: d.phone,
-						sex: d.sex == '男' ? 1 : 2,
-						sname: d.name,
-						username: d.user,
-						deptid:d.objId
-					}
-				uni.request({
-					url: url,
-					method: 'POST',
-					data: data,
-					success: (res) => {
-						uni.showToast({
-							title: '注册成功,请等待审核',
-							icon:'none',
-							duration: 2000
-						});
-						setTimeout(function(){
-							uni.navigateTo({
-								url: '/pages/loging/loging'
-							})
-						},2000);
-						
-					}
-				});
-				}
-			});
-			},
-			depl(){
-				var that = this;
-				uni.request({
-					url: this.$store.state.piAPI + "/blade-system/dept/trees",
-					method: 'get',
-					success: (res) => {
-						var routerArr = res.data.data;
-						var arr = that.formatRoutes(routerArr);
-						console.log(arr)
-						var list = [];
-						list.push(arr[0]);
-						that.listbm = list;
-						that.show = true;
-					}
-				})
-			},
-			confirm(e) {
-				this.form.obj = e[e.length - 1].label;
-				var arr = "";
-				for (var i = 0; i < e.length; i++) {
-					arr += e[i].value + ",";
-				}
-				var obj = arr.substr(0,arr.length-1);
-				this.form.objId = obj;
-			},
-			formatRoutes(routerArr){
-				var that = this;
-				const arr = [];
-				let obj = {};	
-				routerArr.forEach(router => {	
-					const tmp = { ...router };
-					if (tmp.hasChildren == true) {
-						tmp.children = that.formatRoutes(tmp.children);
-						
-						const {id, title} = router;
-						
-						obj = {
-							label: tmp.title,
-							value: tmp.id,
-							children: tmp.children
-						}						
-					}else if(tmp.hasChildren == false){
-						obj = {
-							label: tmp.title,
-							value: tmp.id,
-						}
-					}
-					arr.push(obj);
-				})
-				return arr;
-			},
-			camera() {
-				let that = this;
-				uni.showToast({
-					title: '功能研发中',
-					icon:'none',
-					duration: 2000
-				});
-				// uni.showLoading({
-				// 	title: '加载中'
-				// });
-				// var i = 0;
-				// var time = setTimeout(() => {
-				// 	if (i == 0) {
-				// 		uni.showToast({
-				// 			title: '未进行验证!',
-				// 			icon: "none",
-				// 			duration: 1000
-				// 		});
-				// 		clearTimeout(time);
-				// 		time = null;
-				// 	} else {
-				// 		// console.log('进行验证')
-				// 	}
-				// }, 2000)
-				// uni.chooseImage({
-				// 	count: 1, //默认9
-				// 	sizeType: ['compressed'], //可以指定是原图还是压缩图,默认二者都有
-				// 	// sourceType: 'camera', //从相册选择
-				// 	sourceType: ['camera', 'album'], //从相册选择
-				// 	success: function(res) {
-				// 		i = 1;
-				// 		var img = res.tempFiles;
-				// 		console.log('img', img)
-				// 		// imgToBase64(res)
-				// 		var url = that.$store.state.piAPI + '/blade-user/faceCompare',
-				// 			// var url = 'http://192.168.0.114:82/' + 'blade-user/faceCompare',
-				// 			data = {
-				// 				"name": that.form.name,
-				// 				"idCardNo": that.form.carId
-				// 			};
-				// 		uni.uploadFile({
-				// 			url: url,
-				// 			filePath: img[0].path,
-				// 			name: 'file',
-				// 			formData: data,
-				// 			success: (data) => {
-				// 				if (data.statusCode == 200) {
-				// 					var data = JSON.parse(data.data);
-				// 					if (data.data.result == 0) {
-				// 						that.faceState = 1;
-				// 						uni.showToast({
-				// 							title: '人脸识别成功!',
-				// 							icon: "none",
-				// 							duration: 1000
-				// 						});
-				// 					} else {
-				// 						that.faceState = -1;
-				// 						uni.showToast({
-				// 							title: data.data.errMsg == "pic not has face" ?
-				// 								'未检测到人脸' : data.data.errMsg,
-				// 							icon: "none",
-				// 							duration: 1000
-				// 						});
-				// 					}
-				// 				} else {
-				// 					that.faceState = 0;
-				// 					uni.showToast({
-				// 						title: '服务器连接失败!',
-				// 						icon: "none",
-				// 						duration: 1000
-				// 					});
-				// 				}
-				// 				console.log(data)
-				// 			}
-				// 		});
-				// 	},
-				// 	complete: function() {
-				// 		console.log(4534)
-				// 	}
-				// })
-			},
-			startRecord() {
-				this.flag = true;
-				// this.$message.success('开始录制')
-				this.$refs.video.startRecord();
-			},
-			stopRecord() {
-				this.flag = false;
-				// this.$message.success('请看控制台视频文件的base64')
-				this.$refs.video.stopRecord();
-			},
-			dataChange(data) {
-				console.log(data);
-			},
-			objCallback(index) {
-				this.form.obj = this.objList[index].text;
-			},
-			submit() {
-				this.$refs.uForm.validate(valid => {
-					if (valid && this.faceState == 1) {
-						// console.log('验证通过');
-						console.log(this.form);
-						var d = this.form;
-						var url = this.$store.state.piAPI + '/zc/inster',
-							data = {
-								// deptid: ,
-								password: d.pass,
-								password2: d.passTwo,
-								phone: d.phone,
-								sex: d.sex == '男' ? 1 : 2,
-								sname: d.name,
-								username: d.user,
-							}
-						uni.request({
-							url: url,
-							method: 'POST',
-							data: data,
-							success: (res) => {
-								console.log(res)
-							}
-						})
-						// uni.showToast({
-						// 	title: '提交成功!',
-						// 	icon: "none",
-						// 	duration: 1000
-						// });
-					} else {
-						// console.log('验证失败');
-						uni.showToast({
-							title: '确认信息无误后重试!',
-							icon: "none",
-							duration: 1000
-						});
-					}
-				});
-			}
-		},
-		onReady() {
-			this.$refs.uForm.setRules(this.rules);
-		},
-		watch: {
-			faceState() {
-				// console.log(this.faceState);
-				if (this.faceState == -1) {
-					this.facebc = '#ff7f29';
-					this.faceco = '#fff';
-					this.faceMsg = '(信息有误!请重新验证)';
-				} else if (this.faceState == 1) {
-					this.facebc = '#15dd55';
-					this.faceMsg = '(验证成功!)';
-					this.faceco = '#fff';
-				} else if (this.faceState == 0) {
-					this.facebc = '#f7f7f7';
-					this.faceco = '#000';
-					this.faceMsg = '(服务连接失败!)';
-				}
-			}
-		}
-	};
-</script>
-</script>
-
-<style lang="scss" scoped>
-	.submit {
-		margin: 30rpx 50rpx 0;
-		border: none;
-		width: 572rpx;
-		height: 86rpx;
-		line-height: 86rpx;
-		box-sizing: border-box;
-		border-radius: 15rpx;
-		background-color: #14b9c8;
-		color: #ffffff;
-		
-		&::after {
-			content: none;
-		}
-		
-		&::before {
-			content: none;
-		}
-		
-		&[disabled='true'] {
-			background: #e4e4e4;
-			font-size: 36rpx;
-			font-family: Source Han Sans CN;
-			font-weight: 500;
-			color: #ffffff;
-		}
-	}
-	.registerUser {
-		padding: 0 1.2rem;
-	}
-</style>
diff --git a/pages/report/initiate.vue b/pages/report/initiate.vue
deleted file mode 100644
index 0677f20..0000000
--- a/pages/report/initiate.vue
+++ /dev/null
@@ -1,403 +0,0 @@
-<template>
-	<view class="container">
-
-		<view class="group-chat-box">
-
-			<u-form :model="form" ref="uForm">
-
-				<u-form-item label-width='132' prop="categoryText" label="汇报类别" :required="true">
-					<u-input v-model="form.categoryText" type="select" placeholder="请选择汇报类别" :border="false"
-						@click="categoryClick" />
-					<u-select v-model="categoryShow" mode="single-column" :list="categoryList"
-						@confirm="categoryConfirm">
-					</u-select>
-				</u-form-item>
-				<u-form-item label-width='132' prop="typeText" label="汇报类型" :required="true">
-					<u-input v-model="form.typeText" type="select" placeholder="请选择汇报类型" :border="false"
-						@click="typeClick" />
-					<u-select v-model="typeShow" mode="single-column" :list="typeList" @confirm="typeConfirm">
-					</u-select>
-				</u-form-item>
-
-				<u-form-item label-width='132' prop="content" label="汇报内容" :required="true">
-					<u-input type='textarea' v-model="form.content" placeholder="请输入汇报内容" />
-				</u-form-item>
-
-				<u-form-item label-width='132' label="接收人">
-
-					<u-input type='textarea' v-model="form.recipientPeople" placeholder="请选择接收人"
-						@click="recipientClick" autoHeight  />
-
-					<u-popup :closeable="true" v-model="recipientShow" mode="bottom" height="50%" border-radius="14">
-						
-							<view>
-							
-								<u-checkbox-group v-show="recipientList.length > 0" @change="checkboxGroupChange" :wrap='true' :size="40">
-							
-									<u-checkbox v-model="item.checked" v-for="(item, index) in recipientList" :key="index"
-										:name="item.id" shape="circle"
-										style="padding: 0 40rpx; height: 92rpx; position: relative; box-sizing: border-box;">
-							
-										<view style="margin-left: 22rpx">
-											{{item.real_name}}
-										</view>
-							
-									</u-checkbox>
-							
-								</u-checkbox-group>
-								
-								<view style=" height: 92rpx; padding: 0 40rpx;" v-show="recipientList.length == 0">
-									
-									暂无数据
-									
-								</view>
-							
-							</view>
-							
-					</u-popup>
-
-				</u-form-item>
-
-			</u-form>
-
-		</view>
-
-		<view class="establish-box">
-
-			<u-button class="submit" type="primary" @click="initiateClick">发送</u-button>
-
-		</view>
-
-		<view>
-			<u-toast ref="uToast" />
-		</view>
-
-	</view>
-</template>
-
-<script>
-	export default {
-		data() {
-			return {
-				categoryShow: false,
-				typeShow: false,
-				recipientShow: false,
-
-
-				categoryList: [],
-				typeList: [{
-						value: '1',
-						label: '日报'
-					},
-					{
-						value: '2',
-						label: '周报'
-					},
-					{
-						value: '3',
-						label: '月报'
-					}
-				],
-				recipientList: [],
-
-				form: {
-					content: '',
-					category: '',
-					categoryText: '',
-					type: '',
-					typeText: '',
-					recipientData: [],
-					recipientPeople: ''
-				},
-				rules: {
-					categoryText: [{
-						required: true,
-						message: '请选择汇报类别',
-						// 可以单个或者同时写两个触发验证方式 
-						trigger: ['change', 'blur'],
-					}],
-					typeText: [{
-						required: true,
-						message: '请选择汇报类型',
-						trigger: ['change', 'blur'],
-					}],
-					content: [{
-						min: 5,
-						required: true,
-						message: '汇报内容不能少于5个字',
-						trigger: ['change', 'blur'],
-					}],
-				},
-				peopleSelect: false,
-			};
-		},
-		onLoad() {
-
-		},
-		onReachBottom() {
-
-		},
-		mounted() {
-
-			if (this.$store.state.UserData.rname[0] == '保安') {
-
-				this.categoryList = [{
-						value: '1',
-						label: '保安向保安汇报'
-					},
-					{
-						value: '2',
-						label: '保安向民警汇报'
-					}
-				]
-
-			} else if (this.$store.state.UserData.rname[0] == '保安公司管理员') {
-
-				this.categoryList = [{
-						value: '1',
-						label: '保安向保安汇报'
-					},
-					{
-						value: '2',
-						label: '保安向民警汇报'
-					}
-				]
-
-			} else {
-				this.categoryList = [{
-					value: '3',
-					label: '民警向民警汇报'
-				}]
-			}
-
-		},
-		onReady() {
-
-			this.$refs.uForm.setRules(this.rules);
-
-		},
-		methods: {
-			categoryClick() {
-				this.categoryShow = true;
-			},
-			typeClick() {
-				this.typeShow = true;
-			},
-			recipientClick() {
-				if (this.form.category == '') {
-					uni.showToast({
-						title: '请选择汇报类别',
-						icon: 'none',
-						duration: 2000
-					});
-					return;
-				} else {
-
-					if (this.peopleSelect == false) {
-						var data = null;
-						if (this.form
-							.category == 1) {
-
-							data = {
-								type: 2,
-								deptid: this.$store.state.UserData.dept_id
-							}
-
-						} else if (this.form
-							.category == 2) {
-
-							data = {
-								type: 3,
-								deptid: this.$store.state.UserData.dept_id,
-								userId: this.$store.state.UserData.user_id
-							}
-
-						} else if (this.form
-							.category == 3) {
-
-							data = {
-								type: 4,
-								deptid: this.$store.state.UserData.dept_id
-								// jurisdiction: this.$store.state
-								// 	.UserData.jurisdiction,
-							}
-
-						}
-
-						uni.request({
-							url: this.$store.state.piAPI + "/blade-user/seleL",
-							method: "get",
-							data: data,
-							success: (res) => {
-
-								this.recipientList = []
-								res.data.data.forEach(item => {
-									
-									var flag = true
-									
-									if (this.recipientList.length > 0) {
-										this.recipientList.forEach(it => {
-											if (item.id == it.id) flag = false
-										})
-									}
-									
-									if (flag == true) {
-										if (item.id != this.$store.state
-											.UserData.user_id
-										) {
-											item.checked = false;
-											this.recipientList.push(item)
-										}
-									}
-									
-								})
-
-								this.recipientShow = true;
-
-								this.peopleSelect = true;
-								
-							}
-						});
-
-					} else {
-
-						this.recipientShow = true;
-
-					}
-
-				}
-			},
-			categoryConfirm(e) {
-				if (this.form.categoryText == e[0].label) {
-					return;
-				} else {
-					this.form.category = e[0].value
-					this.form.categoryText = e[0].label
-					this.peopleSelect = false
-				}
-			},
-			typeConfirm(e) {
-				this.form.type = e[0].value
-				this.form.typeText = e[0].label
-			},
-			
-			initiateClick() {
-				this.$refs.uForm.validate(valid => {
-					if (valid) {
-						
-						if (this.form.recipientData.length == 0) {
-							this.$refs.uToast.show({
-								title: '请最少选择一个接收人',
-							})
-							return
-						}
-						
-						var str = '';
-						
-						this.form.recipientData.forEach(item => {
-							str += item + ','
-						})
-						
-						str = str.substr(0, str.length - 1);
-						
-						uni.request({
-							url: this.$store.state.piAPI + "/workReport/submit",
-							method: "post",
-							data: {
-								type: this.form.type,
-								category: this.form.category,
-								content: this.form.content,
-								userId: this.$store.state.puserID,
-								deptId: this.$store.state.UserData.dept_id,
-								receivedIds: str
-							},
-							success: (res) => {
-								if (res.data.msg == "操作成功") {
-									this.$refs.uToast.show({
-										title: '发送成功',
-										type: 'success',
-										url: '/pages/report/report'
-									})
-								}
-							}
-						});
-					} else {
-						console.log('验证失败');
-					}
-				});
-			},
-			checkboxGroupChange(e) {
-				var that = this
-
-				this.form.recipientData = e
-				
-				var str = ""
-				var num = 0
-				
-				that.form.recipientData.forEach((item, index) => {
-					that.recipientList.forEach((it, index) => {
-						if (item == it.id) {
-							if (num > 0) {
-								str += '、';
-								str += it.real_name;
-							} else {
-								str += it.real_name
-							}
-							num += 1
-							return
-						}
-					})
-				})
-				
-				this.form.recipientPeople = str
-
-			},
-
-		}
-	};
-</script>
-
-
-<style lang="scss">
-	.submit {
-		border: none;
-		width: 94%;
-		height: 86rpx;
-		line-height: 86rpx;
-		box-sizing: border-box;
-		border-radius: 15rpx;
-		color: #ffffff;
-		font-size: 38rpx;
-
-	}
-
-	.container {
-		height: 100%;
-
-		.group-chat-box {
-			height: calc(100% - 116rpx);
-			padding: 0 36rpx;
-			box-sizing: border-box;
-			overflow-y: auto;
-		}
-
-		.establish-box {
-			position: relative;
-			height: 116rpx;
-			background: #fff;
-			text-align: center;
-
-			uni-button {
-				margin: 0;
-				position: absolute;
-				top: 0;
-				left: 0;
-				right: 0;
-				bottom: 0;
-				margin: auto;
-			}
-
-		}
-
-	}
-</style>
diff --git a/pages/report/receiveDetail.vue b/pages/report/receiveDetail.vue
deleted file mode 100644
index 032de0c..0000000
--- a/pages/report/receiveDetail.vue
+++ /dev/null
@@ -1,70 +0,0 @@
-<template>
-	<view class="container">
-		<u-form :model="detailData" ref="uForm" class="receive-detail">
-			<u-form-item label-width='132' label="汇报人">
-				<span>{{ detailData.realName }}</span>
-			</u-form-item>
-			<u-form-item label-width='158' label="汇报人单位">
-				<span>{{ detailData.deptName }}</span>
-			</u-form-item>
-			<u-form-item label-width='132' label="汇报类型">
-				<span>{{ detailData.type == 1 ? '日报' : detailData.type == 2 ? '周报' : '月报'}}</span>
-			</u-form-item>
-			<u-form-item label-width='132' label="汇报内容">
-				<span>{{ detailData.content }}</span>
-			</u-form-item>
-			<u-form-item label-width='132' label="回复内容">
-				<span>{{ detailData.replyContent }}</span>
-			</u-form-item>
-			<u-form-item label-width='132' label="汇报时间">
-				<span>{{ detailData.reportTime }}</span>
-			</u-form-item>
-			<u-form-item label-width='132' label="回复时间">
-				<span>{{ detailData.replyTime }}</span>
-			</u-form-item>
-		</u-form>
-	</view>
-</template>
-
-<script>
-	export default {
-		data() {
-			return {
-				list: [{
-						name: '注册信息'
-					},
-					{
-						name: '保安员管理'
-					}
-				],
-				current: 0,
-				detailData: {},
-			};
-		},
-		onLoad(event) {
-			var that = this;
-			this.detailData = JSON.parse(decodeURIComponent(event.detailData));
-			console.log(this.detailData)
-		},
-		onReachBottom() {
-
-		},
-		mounted() {
-
-		},
-		methods: {
-
-
-		}
-	};
-</script>
-
-<style lang="scss">
-	.receive-detail {
-		padding: 0 30rpx;
-
-		span {
-			color: #999;
-		}
-	}
-</style>
diff --git a/pages/report/report.vue b/pages/report/report.vue
deleted file mode 100644
index c81313f..0000000
--- a/pages/report/report.vue
+++ /dev/null
@@ -1,559 +0,0 @@
-<template>
-
-	<view class="page-container" style="height: 100%; position: relative;">
-		<view class="head top-absolute">
-			<u-navbar :is-fixed="false" :border-bottom="false" :is-back="false" title=""
-				:background="{ background: '#0BB9C8' }">
-				<view class="nav-wrap">
-
-					<view style="position: relative;">
-
-						<view class="btn-return-box">
-							<view class="btn-return">
-								<i class="uni-btn-icon" @click="goReturnPage"
-									style="color: rgb(255, 255, 255); font-size: 27px;"></i>
-							</view>
-						</view>
-
-						<span class="header-title">工作汇报</span>
-
-						<u-icon @click="goToAddPage" top='4' class="header-add" name="plus" color="#fff">
-						</u-icon>
-
-					</view>
-
-				</view>
-			</u-navbar>
-		</view>
-		<view class="head">
-			<u-navbar :is-fixed="false" :border-bottom="false" :is-back="false" title=""
-				:background="{ background: '#0BB9C8' }">
-				<view class="nav-wrap">
-
-					<view style="position: relative;">
-
-						<view class="btn-return-box">
-							<view class="btn-return">
-								<i class="uni-btn-icon" @click="goReturnPage"
-									style="color: rgb(255, 255, 255); font-size: 27px;"></i>
-							</view>
-						</view>
-
-						<span class="header-title">工作汇报</span>
-
-						<u-icon @click="goToAddPage" top='4' class="header-add" name="plus" color="#fff">
-						</u-icon>
-
-					</view>
-
-				</view>
-			</u-navbar>
-		</view>
-
-		<view class="wrapper">
-
-			<view class="body">
-
-				<view class="body-content">
-
-					<u-tabs :list="list" :is-scroll="false" :current="current" active-color="#14B9C8"
-						inactive-color="#595959" height="100" @change="change"></u-tabs>
-
-					<u-search v-model='keyValue' placeholder='请输入汇报内容' shape="round" class="u-search"
-						input-align="center" height="70" @search='searchValue' @custom='searchValue' @clear='clearValue'
-						@change='changeValue'>
-					</u-search>
-
-					<view v-show="current == 0 && newsList.length > 0">
-						<view class="inTmain" v-for="(item,index) in newsList">
-							<u-card :title="'汇报内容:' + item.content" @click="goDetail(item)">
-								<view class="" slot="body">
-									<view>
-										<view style="margin-bottom: 10px;" class="u-body-item-title u-line-1">
-											汇报人:{{item.realName}}</view>
-									</view>
-									<view>
-										<view class="u-body-item-title u-line-1">
-											汇报类型:{{item.type == 1 ? '日报' : item.type == 2 ? '周报' : '月报' }}</view>
-									</view>
-								</view>
-								<view class="" slot="foot">
-									</u-icon>汇报时间:{{item.reportTime}}</view>
-							</u-card>
-						</view>
-						<u-loadmore class='msg' :status="status" />
-					</view>
-
-					<view v-show="current == 1 && newsList.length > 0">
-						<view class="inTmain" v-for="(item,index) in newsList">
-							<u-card :title="'汇报内容:' + item.content" @click="goDetail(item)">
-								<view class="" slot="body">
-									<view>
-										<view style="margin-bottom: 10px;" class="u-body-item-title u-line-1">
-											汇报人:{{item.realName}}
-										</view>
-									</view>
-									<view>
-										<view class="u-body-item-title u-line-1">
-											汇报类型:{{item.type == 1 ? '日报' : item.type == 2 ? '周报' : '月报' }}</view>
-									</view>
-								</view>
-								<view class="" slot="foot">
-									</u-icon>汇报时间:{{item.reportTime}}</view>
-							</u-card>
-						</view>
-						<u-loadmore class='msg' :status="status" />
-					</view>
-
-					<view class="msg" v-show='newsList.length == 0'>
-						暂无数据
-					</view>
-
-				</view>
-
-			</view>
-
-		</view>
-	</view>
-
-</template>
-
-<script>
-	export default {
-		data() {
-			return {
-
-				list: [{
-						name: '汇报接收列表'
-					},
-					{
-						name: '汇报发送列表'
-					}
-				],
-
-				current: 0,
-
-				dataList: [],
-				newsList: [],
-
-				status: 'loadmore',
-				keyValue: '',
-
-				dataList: [],
-				newsList: [],
-				pagelist: 0,
-				pages: 0,
-				flag: true,
-
-				pullDown: false
-
-			};
-		},
-		onLoad() {
-
-		},
-		onReachBottom() {
-			var that = this;
-
-			if (that.flag == false) {
-				that.status = 'nomore';
-				return
-			}
-			// 后续将改为与后端联动
-			that.status = 'loading';
-
-			setTimeout(() => {
-				if (that.current == 0) {
-					that.getReceive();
-				} else {
-					that.getSend();
-				}
-			}, 1000);
-		},
-
-		onPullDownRefresh: function() {
-			var that = this;
-			this.pullDown = true;
-			this.pagelist = 0;
-			this.pages = 0;
-			this.flag = true;
-			this.dataList = [];
-			this.newsList = [];
-			this.status = 'loading';
-			this.keyValue = '';
-			setTimeout(() => {
-				if (that.current == 0) {
-					that.getReceive();
-				} else {
-					that.getSend();
-				}
-			}, 1000)
-		},
-
-		mounted() {
-			this.getReceive();
-		},
-		methods: {
-			getReceive() {
-				var that = this;
-
-				if (that.pagelist < that.pages || that.pagelist == 0) {
-					that.pagelist++
-				} else if (that.pagelist == that.pages) {
-					that.flag = false
-					that.status = 'nomore';
-					return
-				}
-
-				uni.request({
-					url: this.$store.state.piAPI + "/workReport/pageReply?deptId=" + this.$store.state.UserData
-						.dept_id + '&userId=' + this.$store.state.puserID,
-					method: "get",
-					data: {
-						current: that.pagelist,
-						size: 10
-					},
-					success: (res) => {
-						that.pages = res.data.data.pages;
-
-						var resdata = res.data.data.records;
-
-						if (that.pullDown == true) {
-							that.pullDown = false;
-							uni.stopPullDownRefresh();
-						}
-
-						if (resdata.length == 0) {
-							that.flag = false
-							that.status = 'nomore';
-							return
-						} else {
-							resdata.forEach(item => {
-								that.newsList.push(item)
-								that.dataList.push(item)
-							})
-						}
-
-						if (that.pagelist == that.pages) {
-							that.flag = false
-							that.status = 'nomore';
-							return
-						}
-
-					}
-				});
-			},
-			getSend() {
-				var that = this;
-
-				if (that.pagelist < that.pages || that.pagelist == 0) {
-					that.pagelist++
-				} else if (that.pagelist == that.pages) {
-					that.flag = false
-					that.status = 'nomore';
-					return
-				}
-
-				uni.request({
-					url: this.$store.state.piAPI + "/workReport/page?deptId=" + this.$store.state.UserData
-						.dept_id + '&userId=' + this.$store.state.puserID,
-					method: "get",
-					data: {
-						current: that.pagelist,
-						size: 10
-					},
-					success: (res) => {
-						that.pages = res.data.data.pages;
-
-						var resdata = res.data.data.records;
-
-						if (that.pullDown == true) {
-							that.pullDown = false;
-							uni.stopPullDownRefresh();
-						}
-
-						if (resdata.length == 0) {
-							that.flag = false
-							that.status = 'nomore';
-							return
-						} else {
-							resdata.forEach(item => {
-								that.newsList.push(item)
-								that.dataList.push(item)
-							})
-						}
-
-						if (that.pagelist == that.pages) {
-							that.flag = false
-							that.status = 'nomore';
-							return
-						}
-
-
-
-					}
-				});
-			},
-			goDetail(item) {
-				if (this.current == 0) {
-					uni.navigateTo({
-						url: './receiveDetail?detailData=' + JSON.stringify(item)
-					});
-				} else {
-					uni.navigateTo({
-						url: './sendDetail?detailData=' + JSON.stringify(item)
-					});
-				}
-			},
-			change(index) {
-				if (this.current == index) return;
-				this.dataList = [];
-				this.newsList = [];
-				this.pagelist = 0;
-				this.pages = 0;
-				this.flag = true;
-				this.current = index;
-				if (index == 0) {
-					this.getReceive();
-				} else {
-					this.getSend();
-				}
-			},
-			searchValue(value) {
-				var that = this;
-				var str = value.replace(/\s*/g, "");
-				if (str == '') {
-					return
-				} else {
-					that.newsList = [];
-
-					if (that.current == 0) {
-						uni.request({
-							url: this.$store.state.piAPI + "/workReport/pageReply?deptId=" + this.$store.state
-								.UserData
-								.dept_id + '&userId=' + this.$store.state.puserID,
-							method: "get",
-							data: {
-								current: 1,
-								size: 999999,
-								content: str
-							},
-							success: (res) => {
-								var resdata = res.data.data.records;
-
-								resdata.forEach(item => {
-									that.newsList.push(item)
-								})
-
-							}
-						});
-					} else {
-						uni.request({
-							url: this.$store.state.piAPI + "/workReport/page?deptId=" + this.$store.state.UserData
-								.dept_id + '&userId=' + this.$store.state.puserID,
-							method: "get",
-							data: {
-								current: 1,
-								size: 999999,
-								content: str
-							},
-							success: (res) => {
-								var resdata = res.data.data.records;
-
-								resdata.forEach(item => {
-									that.newsList.push(item)
-								})
-
-							}
-						});
-					}
-
-					that.flag = false
-					that.status = 'nomore';
-				}
-			},
-			clearValue() {
-				this.keyValue = ''
-				this.newsList = [];
-
-				this.dataList.forEach(item => {
-					this.newsList.push(item)
-				})
-
-				if (this.pagelist < this.pages) {
-					this.flag = true;
-					this.status = 'loading';
-				} else {
-					this.flag = false;
-					this.status = 'nomore';
-				}
-			},
-			changeValue(value) {
-				if (value == '') {
-					this.newsList = [];
-
-					this.dataList.forEach(item => {
-						this.newsList.push(item)
-					})
-
-					if (this.pagelist < this.pages) {
-						this.flag = true;
-						this.status = 'loading';
-					} else {
-						this.flag = false;
-						this.status = 'nomore';
-					}
-				}
-			},
-			goReturnPage() {
-				uni.switchTab({
-					url: '/pages/home/home'
-				});
-			},
-			goToAddPage() {
-				uni.navigateTo({
-					url: './initiate'
-				});
-			},
-		}
-	};
-</script>
-
-<style lang="scss">
-	.page-container {
-		position: fixed;
-		display: block;
-		width: 100%;
-		max-height: 100vh;
-
-
-
-		.head {
-			position: relative;
-
-
-			width: 100%;
-
-
-			.nav-wrap {
-				width: 100%;
-				height: 44px;
-				line-height: 30px;
-				padding: 7px 3px;
-				height: calc(44px + constant(safe-area-inset-top));
-				height: calc(44px + env(safe-area-inset-top));
-				color: rgb(255, 255, 255);
-
-				.btn-return-box {
-					display: flex;
-					align-items: center;
-					font-size: 16px;
-					box-sizing: border-box;
-
-					.btn-return {
-						position: relative;
-						width: auto;
-						margin: 0 2px;
-						word-break: keep-all;
-						white-space: pre;
-						cursor: pointer;
-					}
-				}
-
-				.header-title {
-					position: absolute;
-					top: 0;
-					left: 0;
-					right: 0;
-					bottom: 0;
-					margin: auto;
-					width: 60%;
-					font-weight: 700;
-					line-height: 30px;
-					font-size: 16px;
-					opacity: 1;
-					text-overflow: ellipsis;
-					text-align: center;
-					min-width: 1em;
-				}
-
-				.header-add {
-					position: absolute;
-					top: 0;
-					left: auto;
-					right: 10px;
-					bottom: 0;
-					margin: auto;
-					display: inline-block;
-					font: normal normal normal 14px/1 unibtn;
-					text-rendering: auto;
-					-webkit-font-smoothing: antialiased;
-					font-size: 24px;
-				}
-			}
-
-		}
-
-		.top-absolute {
-			position: fixed;
-			top: 0;
-			left: 0;
-			z-index: 101;
-		}
-
-		.wrapper {
-
-			width: 100%;
-			display: block;
-			height: calc(100% - 44px);
-			height: calc(100% - 44px - constant(safe-area-inset-top));
-			height: calc(100% - 44px - env(safe-area-inset-top));
-
-			.body {
-				width: 100%;
-				height: 100%;
-				overflow-x: hidden;
-				overflow-y: auto;
-
-				.body-content {
-					height: auto;
-
-				}
-
-			}
-
-		}
-	}
-
-	.u-card-wrap {
-		background-color: $u-bg-color;
-		padding: 1px;
-	}
-
-	.u-body-item {
-		font-size: 32rpx;
-		color: #333;
-		padding: 20rpx 10rpx;
-	}
-
-	.u-body-item image {
-		width: 120rpx;
-		flex: 0 0 120rpx;
-		height: 120rpx;
-		border-radius: 8rpx;
-		margin-left: 12rpx;
-	}
-
-	.u-search {
-		padding: 20rpx 30rpx 0 30rpx;
-	}
-
-	.inTmain {}
-
-	.msg {
-		height: 72rpx;
-		line-height: 72rpx;
-		text-align: center;
-		color: #999;
-	}
-</style>
diff --git a/pages/report/sendDetail.vue b/pages/report/sendDetail.vue
deleted file mode 100644
index b0d9a68..0000000
--- a/pages/report/sendDetail.vue
+++ /dev/null
@@ -1,72 +0,0 @@
-<template>
-	<view class="container">
-		<u-form :model="detailData" ref="uForm" class="send-detail">
-			<u-form-item label-width='132' label="汇报人">
-				<span>{{ detailData.realName }}</span>
-			</u-form-item>
-			<u-form-item label-width='132' label="汇报类别">
-				<span>{{ detailData.category == 1 ? '保安向保安汇报' : detailData.category == 2 ? '保安向民警汇报' : '民警向民警汇报' }}</span>
-			</u-form-item>
-			<u-form-item label-width='132' label="汇报类型">
-				<span>{{ detailData.type == 1 ? '日报' : detailData.type == 2 ? '周报' : '月报'}}</span>
-			</u-form-item>
-			<u-form-item label-width='132' label="汇报内容">
-				<span>{{ detailData.content }}</span>
-			</u-form-item>
-			<u-form-item label-width='132' label="接收人">
-				<span>{{ detailData.replyRealName }}</span>
-			</u-form-item>
-			<u-form-item label-width='158' label="接收人单位">
-				<span>{{ detailData.replyDeptName }}</span>
-			</u-form-item>
-			<u-form-item label-width='132' label="回复内容">
-				<span>{{ detailData.replyContent }}</span>
-			</u-form-item>
-			<u-form-item label-width='132' label="汇报时间">
-				<span>{{ detailData.reportTime }}</span>
-			</u-form-item>
-		</u-form>
-	</view>
-</template>
-
-<script>
-	export default {
-		data() {
-			return {
-				list: [{
-						name: '注册信息'
-					},
-					{
-						name: '保安员管理'
-					}
-				],
-				current: 0,
-				detailData: {},
-			};
-		},
-		onLoad(event) {
-			var that = this;
-			this.detailData = JSON.parse(decodeURIComponent(event.detailData));
-			console.log(this.detailData)
-		},
-		onReachBottom() {
-
-		},
-		mounted() {
-
-		},
-		methods: {
-
-
-		}
-	};
-</script>
-
-<style lang="scss">
-	.send-detail {
-		padding: 0 30rpx;
-		span {
-			color: #999;
-		}
-	}
-</style>
diff --git a/pages/securityStaff/certificates.vue b/pages/securityStaff/certificates.vue
deleted file mode 100644
index 65e3856..0000000
--- a/pages/securityStaff/certificates.vue
+++ /dev/null
@@ -1,12 +0,0 @@
-<template>
-	<view class="certificates">
-		证件
-		
-	</view>
-</template>
-
-<script>
-</script>
-
-<style>
-</style>
diff --git a/pages/securityStaff/data.js b/pages/securityStaff/data.js
deleted file mode 100644
index 77ba1c6..0000000
--- a/pages/securityStaff/data.js
+++ /dev/null
@@ -1,65 +0,0 @@
-export var data = [{
-	name: '原俊袆',
-	age: 18,
-	obj: '适普科技'
-}, {
-	name: '钟日健',
-	age: 18,
-	obj: '适普科技'
-}, {
-	name: '唐子玉',
-	age: 18,
-	obj: '适普科技'
-}, {
-	name: '曾杭',
-	age: 18,
-	obj: '适普科技'
-}, {
-	name: '刘运贵',
-	age: 18,
-	obj: '适普科技'
-}, {
-	name: '唐子玉',
-	age: 18,
-	obj: '适普科技'
-}, {
-	name: '曾杭',
-	age: 18,
-	obj: '适普科技'
-}, {
-	name: '刘运贵',
-	age: 18,
-	obj: '适普科技'
-}, {
-	name: '原俊袆',
-	age: 18,
-	obj: '适普科技'
-}, {
-	name: '钟日健',
-	age: 18,
-	obj: '适普科技'
-}, {
-	name: '唐子玉',
-	age: 18,
-	obj: '适普科技'
-}, {
-	name: '曾杭',
-	age: 18,
-	obj: '适普科技'
-}, {
-	name: '刘运贵',
-	age: 18,
-	obj: '适普科技'
-}, {
-	name: '唐子玉',
-	age: 18,
-	obj: '适普科技'
-}, {
-	name: '曾杭',
-	age: 18,
-	obj: '适普科技'
-}, {
-	name: '刘运贵',
-	age: 18,
-	obj: '适普科技'
-}]
diff --git a/pages/securityStaff/employer.vue b/pages/securityStaff/employer.vue
deleted file mode 100644
index ededfbc..0000000
--- a/pages/securityStaff/employer.vue
+++ /dev/null
@@ -1,12 +0,0 @@
-<template>
-	<view class="employer">
-		从业单位
-		
-	</view>
-</template>
-
-<script>
-</script>
-
-<style>
-</style>
diff --git a/pages/securityStaff/exhibition - f.vue b/pages/securityStaff/exhibition - f.vue
deleted file mode 100644
index 0845daf..0000000
--- a/pages/securityStaff/exhibition - f.vue
+++ /dev/null
@@ -1,204 +0,0 @@
-<template>
-	<view class="container">
-		<u-search v-model='keyValue' placeholder='请输入公司名称' shape="round" class="u-search" input-align="center"
-			height="70" @search='searchValue' @custom='searchValue' @clear='clearValue' @change='changeValue'>
-		</u-search>
-
-		<view v-if="newsList.length > 0">
-			<view class="inTmain" v-for="(item,index) in newsList">
-				<u-card :title="item.realName" @click="goDetail(item)">
-					<view class="" slot="body">
-						<view>
-							<view style="margin-bottom: 10px;" class="u-body-item-title u-line-1">公司:{{item.deptName}}
-							</view>
-						</view> 
-						<view>
-							<view class="u-body-item-title u-line-1">地区:{{item.address}}</view>
-						</view>
-					</view>
-					<view class="" slot="foot">
-						</u-icon>电话:{{item.phone}}</view>
-				</u-card>
-			</view>
-			<u-loadmore class='msg' :status="status" />
-		</view>
-
-		<view class="msg" v-else>
-			暂无数据
-		</view>
-
-	</view>
-</template>
-
-<script>
-	export default {
-		data() {
-			return {
-				dataList: [],
-				newsList: [],
-				status: 'loadmore',
-				keyValue: '',
-				pagelist: 0,
-			};
-		},
-		onLoad() {
-
-		},
-		onReachBottom() {
-			var that = this;
-			if (that.dataList.length - 1 == that.pagelist) {
-				this.status = 'nomore';
-				return;
-			}
-			// 后续将改为与后端联动
-			this.status = 'loading';
-			setTimeout(() => {
-				for (var i = 0; i < 5; i++) {
-
-					if (that.pagelist <= that.dataList.length - 1) {
-
-						that.newsList.push(that.dataList[that.pagelist])
-
-						if (that.pagelist <= that.dataList.length - 2) {
-
-							that.pagelist += 1
-
-							if (that.dataList.length - 1 == that.pagelist) {
-								that.newsList.push(that.dataList[that.pagelist])
-							}
-
-						}
-
-					}
-
-				}
-			}, 2000);
-		},
-		mounted() {
-			this.getCompany();
-		},
-		methods: {
-			getCompany() {
-				var that = this;
-				uni.request({
-					url: this.$store.state.piAPI + "/blade-user/page",
-					method: "get",
-					data: {
-						size: 99999
-					},
-					success: (res) => {
-						var resdata = res.data.data.records;
-						that.dataList = resdata;
-
-						for (var i = 0; i < 5; i++) {
-
-							if (that.pagelist <= that.dataList.length - 1) {
-
-								that.newsList.push(that.dataList[that.pagelist])
-
-								if (that.pagelist <= that.dataList.length - 2) {
-									that.pagelist += 1
-
-									if (that.dataList.length - 1 == that.pagelist) {
-										that.newsList.push(that.dataList[that.pagelist])
-									}
-
-								} else {
-
-									that.status = 'nomore';
-
-								}
-
-							}
-
-						}
-
-					}
-				});
-			},
-			goDetail(item) {
-				uni.navigateTo({
-					url: `../securityStaff/information?data=${JSON.stringify(item)}`
-				});
-			},
-			searchValue(value) {
-				var that = this;
-				var str = value.replace(/\s*/g, "");
-				if (str == '') {
-					return
-				} else {
-					that.newsList = [];
-					that.dataList.forEach(item => {
-						if (item.realName.indexOf(str) != -1) {
-							that.newsList.push(item)
-						}
-					})
-					that.status = 'nomore';
-				}
-			},
-			clearValue() {
-				this.keyValue = ''
-				this.newsList = [];
-				for (var i = 0; i < this.pagelist; i++) {
-					this.newsList.push(this.dataList[i])
-				}
-
-				if (this.dataList.length - 1 == this.pagelist) {
-					this.newsList.push(this.dataList[this.pagelist])
-					this.status = 'nomore';
-				} else if (this.pagelist < this.dataList.length - 1) {
-					this.status = 'loadmore';
-				}
-			},
-			changeValue(value) {
-				if (value == '') {
-					this.newsList = [];
-					for (var i = 0; i < this.pagelist; i++) {
-						this.newsList.push(this.dataList[i])
-					}
-					if (this.dataList.length - 1 == this.pagelist) {
-						this.newsList.push(this.dataList[this.pagelist])
-						this.status = 'nomore';
-					} else if (this.pagelist < this.dataList.length - 1) {
-						this.status = 'loadmore';
-					}
-				}
-			}
-
-		}
-	};
-</script>
-
-<style lang="scss">
-	.u-card-wrap {
-		background-color: $u-bg-color;
-		padding: 1px;
-	}
-
-	.u-body-item {
-		font-size: 32rpx;
-		color: #333;
-		padding: 20rpx 10rpx;
-	}
-
-	.u-body-item image {
-		width: 120rpx;
-		flex: 0 0 120rpx;
-		height: 120rpx;
-		border-radius: 8rpx;
-		margin-left: 12rpx;
-	}
-
-	.u-search {
-		padding: 20rpx 30rpx 0 30rpx;
-	}
-
-	.inTmain {}
-
-	.msg {
-		height: 72rpx;
-		line-height: 72rpx;
-		text-align: center;
-		color: #999;
-	}
-</style>
diff --git a/pages/securityStaff/exhibition.vue b/pages/securityStaff/exhibition.vue
deleted file mode 100644
index 5ec18b6..0000000
--- a/pages/securityStaff/exhibition.vue
+++ /dev/null
@@ -1,323 +0,0 @@
-<template>
-	<view class="container">
-
-		<u-search v-model='keyValue' placeholder='请输入保安员姓名' shape="round" class="u-search" input-align="center"
-			height="70" @search='searchValue' @custom='searchValue' @clear='clearValue' @change='changeValue'>
-		</u-search>
-
-		<view v-if="newsList.length > 0">
-			<view class="inTmain" v-for="(item,index) in newsList">
-				<u-card :title="item.realName" @click="goDetail(item)">
-					<view class="" slot="body">
-						<view>
-							<view style="margin-bottom: 10px;" class="u-body-item-title u-line-1">公司:{{item.deptName}}
-							</view>
-						</view>
-						<view>
-							<view class="u-body-item-title u-line-1">地区:{{item.address}}</view>
-						</view>
-					</view>
-					<view class="" slot="foot">
-						</u-icon>电话:{{item.phone}}</view>
-				</u-card>
-			</view>
-			<u-loadmore class='msg' :status="status" />
-		</view>
-
-		<view class="msg" v-else>
-			暂无数据
-		</view>
-
-	</view>
-</template>
-
-<script>
-	export default {
-		data() {
-			return {
-				dataList: [],
-				newsList: [],
-				status: 'loadmore',
-				keyValue: '',
-				pagelist: 0,
-				pages: 0,
-				flag: true,
-
-				pullDown: false
-			};
-		},
-		onLoad() {
-
-		},
-		onReachBottom() {
-			var that = this;
-
-			if (that.flag == false) {
-				that.status = 'nomore';
-				return
-			}
-			// 后续将改为与后端联动
-			that.status = 'loading';
-
-			setTimeout(() => {
-				that.getCompany();
-			}, 1000);
-
-
-		},
-
-		onPullDownRefresh: function() {
-			this.pullDown = true;
-			this.pagelist = 0;
-			this.pages = 0;
-			this.flag = true;
-			this.dataList = [];
-			this.newsList = [];
-			this.status = 'loading';
-			this.keyValue = '';
-			setTimeout(() => {
-				this.getCompany();
-			}, 1000)
-
-		},
-
-		mounted() {
-			this.getCompany();
-		},
-		methods: {
-			getCompany() {
-				var that = this;
-
-				if (that.pagelist < that.pages || that.pagelist == 0) {
-					that.pagelist++
-				} else if (that.pagelist == that.pages) {
-					that.flag = false
-					that.status = 'nomore';
-					return
-				}
-
-				
-				
-				if (this.$store.state.UserData.rname[0] == '保安公司管理员') {
-				
-					uni.request({
-						url: that.$store.state.piAPI + "/blade-user/pages",
-						method: "get",
-						data: {
-							current: that.pagelist,
-							size: 10,
-							deptId: this.$store.state.UserData.dept_id,
-							roleAlias: 111
-						},
-						success: (res) => {
-							that.pages = res.data.data.pages;
-					
-							var resdata = res.data.data.records;
-					
-							if (this.pullDown == true) {
-								this.pullDown = false;
-								uni.stopPullDownRefresh();
-							}
-					
-							if (resdata.length == 0) {
-								that.flag = false
-								that.status = 'nomore';
-								return
-							} else {
-								resdata.forEach(item => {
-									that.newsList.push(item)
-									that.dataList.push(item)
-								})
-							}
-					
-							if (that.pagelist == that.pages) {
-								that.flag = false
-								that.status = 'nomore';
-								return
-							}
-					
-						}
-					});
-				
-				} else {
-					
-					uni.request({
-						url: that.$store.state.piAPI + "/blade-user/pages",
-						method: "get",
-						data: {
-							dispatch: 0,
-							status: 1,
-							roleAlias: 111,
-							jurisdiction: this.$store.state
-								.UserData.jurisdiction,
-							current: that.pagelist,
-							size: 10
-						},
-						success: (res) => {
-							that.pages = res.data.data.pages;
-					
-							var resdata = res.data.data.records;
-					
-							if (this.pullDown == true) {
-								this.pullDown = false;
-								uni.stopPullDownRefresh();
-							}
-					
-							if (resdata.length == 0) {
-								that.flag = false
-								that.status = 'nomore';
-								return
-							} else {
-								resdata.forEach(item => {
-									that.newsList.push(item)
-									that.dataList.push(item)
-								})
-							}
-					
-							if (that.pagelist == that.pages) {
-								that.flag = false
-								that.status = 'nomore';
-								return
-							}
-					
-						}
-					});
-					
-				}
-			},
-			goDetail(item) {
-				uni.navigateTo({
-					url: './information?detailData=' + JSON.stringify(item)
-				});
-			},
-			searchValue(value) {
-				var that = this;
-				var str = value.replace(/\s*/g, "");
-				if (str == '') {
-					return
-				} else {
-					that.newsList = [];
-					
-					if (this.$store.state.UserData.rname[0] == '保安公司管理员') {
-						
-						uni.request({
-							url: that.$store.state.piAPI + "/blade-user/pages",
-							method: "get",
-							data: {
-								current: 1,
-								size: 999999,
-								realName: str,
-								deptId: this.$store.state.UserData.dept_id,
-								roleAlias: 111
-							},
-							success: (res) => {
-								
-								var resdata = res.data.data.records;
-														
-								resdata.forEach(item => {
-									that.newsList.push(item)
-								})
-						
-							}
-						});
-						
-					} else {
-						
-						uni.request({
-							url: that.$store.state.piAPI + "/blade-user/pages",
-							method: "get",
-							data: {
-								current: 1,
-								size: 999999,
-								realName: str,
-								dispatch: 0,
-								jurisdiction: this.$store.state
-									.UserData.jurisdiction,
-							},
-							success: (res) => {
-						
-								var resdata = res.data.data.records;
-						
-								resdata.forEach(item => {
-									that.newsList.push(item)
-								})
-						
-							}
-						});
-						
-					}
-					
-					that.flag = false
-					that.status = 'nomore';
-				}
-			},
-			clearValue() {
-				this.keyValue = ''
-				this.newsList = [];
-
-				this.dataList.forEach(item => {
-					this.newsList.push(item)
-				})
-
-				if (this.pagelist < this.pages) {
-					this.flag = true;
-					this.status = 'loading';
-				} else {
-					this.flag = false;
-					this.status = 'nomore';
-				}
-			},
-			changeValue(value) {
-				if (value == '') {
-					this.newsList = [];
-
-					this.dataList.forEach(item => {
-						this.newsList.push(item)
-					})
-
-					if (this.pagelist < this.pages) {
-						this.flag = true;
-						this.status = 'loading';
-					} else {
-						this.flag = false;
-						this.status = 'nomore';
-					}
-				}
-			}
-		}
-	};
-</script>
-
-<style lang="scss">
-	.u-card-wrap {
-		background-color: $u-bg-color;
-		padding: 1px;
-	}
-
-	.u-body-item {
-		font-size: 32rpx;
-		color: #333;
-		padding: 20rpx 10rpx;
-	}
-
-	.u-body-item image {
-		width: 120rpx;
-		flex: 0 0 120rpx;
-		height: 120rpx;
-		border-radius: 8rpx;
-		margin-left: 12rpx;
-	}
-
-	.u-search {
-		padding: 20rpx 30rpx 0 30rpx;
-	}
-
-	.inTmain {}
-
-	.msg {
-		height: 72rpx;
-		line-height: 72rpx;
-		text-align: center;
-		color: #999;
-	}
-</style>
diff --git a/pages/securityStaff/information.vue b/pages/securityStaff/information.vue
deleted file mode 100644
index 5b053c0..0000000
--- a/pages/securityStaff/information.vue
+++ /dev/null
@@ -1,344 +0,0 @@
-<template>
-	<view class="information">
-		<view class="head">
-			<u-navbar :is-fixed="true" :border-bottom="false" :is-back="true" title="" :back-icon-color="'#fff'"
-				:background="{ background: '#0BB9C8' }">
-			</u-navbar>
-			<view class="head-bg"></view>
-		</view>
-		<view class="bodys">
-			<view class="once sole">
-				<i>照片</i>
-				<!-- <image :src="datalist.imgSrc" mode=""></image> -->
-				<u-image class="img" width="136rpx" height="136rpx" :src="datalist.myPicture">
-					<view slot="error" style="font-size: 24rpx;">暂无照片</view>
-				</u-image>
-			</view>
-			<view class="once">
-				<i>姓名</i> <span> {{ datalist.realName }} </span>
-			</view>
-			<view class="once">
-				<i>性别</i> <span> {{ datalist.sex == 2 ? '女' : datalist.sex == 1 ? '男' : ' ' }} </span>
-			</view>
-			<view class="once">
-				<i>籍贯</i> <span> {{ datalist.nativePlace }} </span>
-			</view>
-			<view class="once">
-				<i>学历</i> <span> {{ datalist.education }} </span>
-			</view>
-			<view class="once">
-				<i>出生日期</i> <span> {{ datalist.birthday }} </span>
-			</view>
-			<view class="once">
-				<i>政治面貌</i> <span> {{ datalist.politicaloutlook }} </span>
-			</view>
-			<view class="once">
-				<i>联系电话</i> <span> {{ datalist.phone }} </span>
-			</view>
-			<view class="once">
-				<i>所属公司</i> <span> {{ datalist.deptName }} </span>
-			</view>
-			<view class="once">
-				<i>入职时间</i> <span> {{ datalist.rtime }} </span>
-			</view>
-
-			<view class="once">
-				<u-button class="ubut" type="success" @click="openCongye" size="medium" :ripple="true"
-					ripple-bg-color="#fff">从业单位</u-button>
-				<u-button class="ubut" type="success" @click="openCertificates" size="medium" :ripple="true"
-					ripple-bg-color="#fff">查看证件</u-button>
-			</view>
-		</view>
-		<u-popup class="certificates" v-model="showi" mode="bottom" border-radius="10">
-			<view class="certificatesnj">
-				<view class="titleonce">
-					保安员证
-				</view>
-				<view class="once">
-					姓名: <view class="o-once"> {{datalist.realName}}</view>
-				</view>
-				<view class="once">
-					性别:<view class="o-once"> {{datalist.sex == 1 ? '男' : '女'}}</view>
-				</view>
-				<view class="once">
-					编号:<view class="o-once"> {{datalist.securitynumber}}</view>
-				</view>
-				<view class="once">
-					发证机关:<view class="o-once"> 南昌市公安局 </view>
-				</view>
-				<view class="once">
-					发证日期:<view class="o-once"> {{datalist.updateTime}}</view>
-				</view>
-				
-				<u-image class="img" width="150rpx" height="150rpx" :src="datalist.avatar">
-					<view slot="error" style="font-size: 1rem;">暂无证件</view>
-				</u-image>
-			</view>
-		</u-popup>
-		<u-popup v-model="showc" mode="bottom" border-radius="10">
-			<view class="">
-				<u-empty text="没有数据" :color="'#0BB9C8'" :icon-color="'#0BB9C8'" mode="list" :show="cylist.length == 0">
-				</u-empty>
-			</view>
-			<view class="Congye">
-				<u-time-line>
-					<u-time-line-item nodeTop="2" v-for="(item,index) in cylist" :key="index">
-						<!-- 此处自定义了左边内容,用一个图标替代 -->
-						<template v-slot:node>
-							<view class="u-node" style="background: #19be6b;">
-								<!-- 此处为uView的icon组件 -->
-								<u-icon name="pushpin-fill" color="#fff" :size="24"></u-icon>
-							</view>
-						</template>
-						<template v-slot:content>
-							<view>
-								<view class="u-order-title">在职时间:<view class="titles">
-										{{item.entrytime}}至 {{item.departuretime}}
-									</view>
-								</view>
-								<view class="u-order-desc">公司名称:{{item.companyname}}</view>
-								<view class="u-order-desc">岗位:{{item.post}}</view>
-								<view class="u-order-desc">岗位职责:{{item.responsibilities}}</view>
-								<view class="u-order-time">离职原因:{{item.leaving}}</view>
-							</view>
-						</template>
-					</u-time-line-item>
-					<!-- <u-time-line-item>
-						<template v-slot:content>
-							<view>
-								<view class="u-order-desc">【深圳市】日照香炉生紫烟,遥看瀑布挂前川,飞流直下三千尺,疑是银河落九天。</view>
-								<view class="u-order-time">2019-12-06 22:30</view>
-							</view>
-						</template>
-					</u-time-line-item> -->
-				</u-time-line>
-			</view>
-		</u-popup>
-
-	</view>
-</template>
-
-<script>
-	export default {
-		data() {
-			return {
-				datalist: {
-					// realName: '原俊袆',
-					// age: '男',
-					// obj: '适普科技',
-					// honor: '扶老奶奶过马路',
-					// punishment: '不看红绿灯',
-					// avatar: "https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png",
-					// cardid: 342,
-					// baoanzheng: "赣06284538",
-					// fzobj: '南昌市公安局',
-					// fztime: "2014.04.20",
-					// politicaloutlook: '党员'
-				},
-				showi: false,
-				showc: false,
-				cylist: []
-			}
-		},
-		onLoad(event) {
-
-			var that = this;
-
-			this.datalist = JSON.parse(decodeURIComponent(event.detailData))
-
-		},
-		methods: {
-			openCertificates() {
-				this.showi = true;
-			},
-			openCongye() {
-				this.showc = true;
-			},
-			getcongye() {
-				var url = this.$store.state.piAPI + '/experience/page',
-					data = {
-						securityid: this.datalist.id
-					},
-					that = this;
-
-				uni.request({
-					url: url,
-					data: data,
-					method: 'get',
-					success: (res) => {
-						var d = res.data.data.records;
-						var a = []
-						// for(var k = 1 ;k < 30; k++){
-						a.push(...d)
-						// }
-						that.cylist = a;
-						
-						console.log(that.cylist, 456)
-					}
-
-				})
-
-
-				// axios({
-				// 	url: url,
-				// 	params: data
-				// }).then(res => {
-				// 	var d = res.data.data;
-				// 	var a = []
-				// 	// for(var k = 1 ;k < 30; k++){
-				// 	a.push(...d)
-				// 	// }
-				// 	console.log(d);
-				// 	that.cylist = a;
-				// })
-			}
-		},
-		mounted() {
-
-			this.getcongye();
-
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	.information {
-		background-color: #f7f7f7;
-		min-height: 100vh;
-		overflow: hidden;
-
-		.bodys {
-			width: 100%;
-			margin: 0 auto;
-
-			.sole.once {
-				line-height: 154rpx;
-				height: 154rpx;
-				position: relative;
-
-				.img {
-					position: absolute;
-					top: 0;
-					bottom: 0;
-					margin: auto;
-				}
-
-				img {
-					vertical-align: middle;
-				}
-			}
-
-			.once {
-				width: 100%;
-				height: auto;
-				background-color: #fff;
-				line-height: 44px;
-				padding: 0 2.5% 0 2.5%;
-
-				i {
-					font-style: normal;
-					margin-right: 20rpx;
-				}
-
-				span {
-					color: #999;
-				}
-			}
-
-			.img {
-				display: inline-block;
-				position: relative;
-				top: 10px;
-			}
-
-			.once:not(:nth-child(1)) {
-				margin: 10px 0 10px 0;
-			}
-
-
-			.once:last-child {
-				background-color: transparent;
-				display: flex;
-				align-items: center;
-				justify-content: center;
-			}
-		}
-
-		.certificatesnj {
-			padding: 0.6rem 1.6rem 1.6rem 1.6rem;
-			background-image: url(../../static/images/salf/bazbj.png);
-			background-size: 100% 100%;
-			height: 100%;
-		}
-
-		.certificates {
-			
-
-			.img {
-				position: absolute;
-				top: 3rem;
-				right: 1.5rem;
-			}
-
-			.titleonce {
-				font-size: 1.3rem;
-				width: 100%;
-				height: 2.8rem;
-				display: flex;
-				align-items: center;
-				justify-content: center;
-				letter-spacing: 1rem;
-				font-weight: 500;
-			}
-
-			.once {
-				width: 100%;
-				height: auto;
-				line-height: 1.6rem;
-				font-size: 0.72rem;
-
-				.o-once {
-					display: inline-block;
-					font-size: 0.72rem;
-				}
-			}
-		}
-
-		.Congye {
-			padding: 30rpx;
-			max-height: 70vh;
-			overflow: scroll;
-		}
-	}
-
-	.u-node {
-		width: 44rpx;
-		height: 44rpx;
-		border-radius: 100rpx;
-		display: flex;
-		justify-content: center;
-		align-items: center;
-		background: #d0d0d0;
-	}
-
-	.u-order-title {
-		color: #333333;
-		font-weight: bold;
-		font-size: 32rpx;
-
-		.titles {
-			font-size: 26rpx;
-		}
-	}
-
-	.u-order-desc {
-		// color: rgb(150, 150, 150);
-		font-size: 28rpx;
-		margin-bottom: 6rpx;
-	}
-
-	.u-order-time {
-		// color: rgb(200, 200, 200);
-		font-size: 26rpx;
-	}
-</style>
diff --git a/pages/service/service.vue b/pages/service/service.vue
deleted file mode 100644
index 817bb9a..0000000
--- a/pages/service/service.vue
+++ /dev/null
@@ -1,188 +0,0 @@
-<template>
-	<view class="container">
-		<view class="head">
-			<u-navbar :is-fixed="false" :border-bottom="false" :is-back="true" back-icon-name="arrow-leftward"
-				back-icon-color="#fff" back-icon-size="35" :background="{ background: '#0BB9C8' }" title="服务"
-				title-color="#fff"></u-navbar>
-			<view class="head-bg"></view>
-			<!-- 我的订阅 start -->
-			<view class="card sub">
-				<view class="title">我的订阅</view>
-				<view class="list">
-					<u-grid :col="4" :border="false">
-						<u-grid-item bg-color="transparent" v-for="(item, index) in subscribeList" :key="index">
-							<navigator url="" hover-class="none" class="nav-item">
-								<image :src="item.img" mode="widthFix" class="nav-item-img"></image>
-								<view class="nav-item-name">{{ item.name }}</view>
-							</navigator>
-						</u-grid-item>
-					</u-grid>
-				</view>
-			</view>
-			<!-- 我的订阅 end -->
-
-			<!-- 服务列表 start -->
-			<view class="card wrap" v-for="(item, index) in serviceList" :key="index">
-				<view class="title">{{item.name}}</view>
-				<view class="list">
-					<u-grid :col="4" :border="false">
-						<u-grid-item bg-color="transparent" v-for="(_item, _index) in item.list" :key="_index">
-							<navigator url="" hover-class="none" class="nav-item">
-								<image :src="_item.img" mode="widthFix" class="nav-item-img"></image>
-								<view class="nav-item-name">{{ _item.name }}</view>
-							</navigator>
-						</u-grid-item>
-					</u-grid>
-				</view>
-			</view>
-			<!-- 服务列表 end -->
-
-		</view>
-	</view>
-</template>
-
-<script>
-	import {
-		fakeSubscribeList,
-		fakeServiceList,
-	} from "@/api/mock/service.js";
-	export default {
-		data() {
-			return {
-				// 我的订阅
-				subscribeList: [],
-				// 服务列表
-				serviceList: [],
-			};
-		},
-		onLoad() {
-			// 后续将改为与后端联动
-			// 加载我的订阅数据
-			fakeSubscribeList().then(data => {
-				this.subscribeList = data;
-			})
-			// 加载服务集合数据
-			fakeServiceList().then(data => {
-				this.serviceList = data;
-			})
-		}
-	};
-</script>
-
-<style lang="scss">
-	.container {
-		background-color: #f7f7f7;
-		min-height: 100vh;
-		overflow: hidden;
-	}
-
-	.head {
-		position: relative;
-		top: 0;
-		left: 0;
-		z-index: 1;
-	}
-
-	.head-bg {
-		position: absolute;
-		left: 0px;
-		top: 0px;
-		z-index: -1;
-		width: 750rpx;
-		height: 270rpx;
-		background: #0bb9c8;
-	}
-
-	.card {
-		margin: 30rpx;
-		background: #ffffff;
-		border-radius: 20rpx;
-		margin-top: 36rpx;
-	}
-
-	.sub {
-		.title {
-			padding-top: 36rpx;
-			display: flex;
-			justify-content: center;
-			align-items: center;
-
-			font-size: 30rpx;
-			font-family: Source Han Sans CN;
-			font-weight: 500;
-			color: #000000;
-
-			&::before {
-				content: '';
-				display: block;
-				width: 135rpx;
-				height: 1rpx;
-				background: #e4e7ed;
-				margin: 0 17rpx;
-			}
-
-			&::after {
-				content: '';
-				display: block;
-				width: 135rpx;
-				height: 1rpx;
-				background: #e4e7ed;
-				margin: 0 17rpx;
-			}
-		}
-	}
-
-	.list {
-		display: flex;
-		flex-wrap: wrap;
-		padding: 0 0 30rpx;
-
-		.nav-item {
-			width: 100%;
-			display: flex;
-			flex-direction: column;
-			justify-content: space-between;
-			align-items: center;
-			font-size: 30rpx;
-			font-family: Source Han Sans CN;
-			font-weight: 400;
-			color: #131313;
-			line-height: 48rpx;
-			opacity: 0.77;
-
-			&-img {
-				width: 54rpx;
-				height: 54rpx;
-				margin-bottom: 30rpx;
-			}
-
-			&-name {
-				font-size: 26rpx;
-				font-family: PingFang SC;
-				font-weight: 400;
-				color: #585b61;
-			}
-		}
-	}
-
-	.wrap {
-		.title {
-			padding: 36rpx 16rpx;
-			display: flex;
-			align-items: center;
-			font-size: 32rpx;
-			font-family: Source Han Sans CN;
-			font-weight: 500;
-			color: #000000;
-
-			&::before {
-				content: "";
-				display: block;
-				width: 5rpx;
-				height: 36rpx;
-				margin-right: 10rpx;
-				background: #3ac4d1;
-			}
-		}
-	}
-</style>
diff --git a/pages/system/setting.vue b/pages/system/setting.vue
deleted file mode 100644
index a41b8fe..0000000
--- a/pages/system/setting.vue
+++ /dev/null
@@ -1,22 +0,0 @@
-<template>
-	<view class="container">
-		<u-navbar :is-fixed="false" :border-bottom="false" :is-back="true" back-icon-name="arrow-leftward"
-			back-icon-size="35" :background="{ background: '#fff' }" title="设置" title-color="#000">
-		</u-navbar>
-		<view class="u-demo">
-			<view class="u-demo-wrap">
-				<view class="u-demo-title">很快到来</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	export default {
-		data() {
-			return {
-				data: {}
-			};
-		},
-	}
-</script>
diff --git a/pages/talking/talking.vue b/pages/talking/talking.vue
deleted file mode 100644
index ae48bde..0000000
--- a/pages/talking/talking.vue
+++ /dev/null
@@ -1,55 +0,0 @@
-<template>
-	<view class="container">
-		<u-navbar :is-fixed="false" :border-bottom="false" :is-back="false" title="好友"
-			:background="{ background: '#0BB9C8' }" title-color="#fff">
-			<image slot="right" src="/static/images/home/message.png" class="message-icon" mode="widthFix"></image>
-		</u-navbar>
-		<friend v-for="(item,index) in friendlist" :key='index' :data="item"></friend>
-	</view>
-</template>
-
-<script>
-	export default {
-		data() {
-			return {
-				friendlist:[
-					{
-						name: 'liu',
-						havetalk: 0,
-						id: 1,
-						msg: 'xxxxxxxxxx',
-						imgsrc:''
-					},{
-						name: 'liu2',
-						havetalk: 4,
-						id: 2,
-						msg: 'xxxxxxxxxx',
-						imgsrc:''
-					},
-				]
-			};
-		},
-		onReady() {
-			
-		},
-		methods: {
-		}
-	};
-</script>
-
-<style lang="scss">
-	.swiper-box {
-		height: 100vh;
-	}
-
-	.message-icon {
-		width: 32rpx;
-		height: auto;
-		margin-right: 27rpx;
-	}
-
-	.tab {
-		margin-bottom: 10rpx;
-	}
-
-</style>
diff --git a/pages/user/center.vue b/pages/user/center.vue
deleted file mode 100644
index 3028bcf..0000000
--- a/pages/user/center.vue
+++ /dev/null
@@ -1,307 +0,0 @@
-<template>
-	<view class="container">
-		<view class="head">
-			<u-navbar :is-fixed="false" :border-bottom="false" :is-back="false" title="个人中心"
-				:background="{ background: 'transprent' }" title-color="#FFFFFF">
-				<!-- <view @click="$u.func.route('/pages/system/setting')" slot="right"> -->
-				<view slot="right">
-					<image src="/static/images/user/setting.png" class="set-icon" mode="widthFix"></image>
-				</view>
-			</u-navbar>
-			<image src="/static/images/user/bg.png" class="head-bg" />
-
-			<!-- 用户信息 -->
-			<view class="user-box">
-				<view class="left">
-					<image :src="useimg" class="avatar" mode=""></image>
-					<view class="user-name">{{ name }}</view>
-					<view class="tag">用户id: {{ id }}</view>
-					<!-- <view class="tag">{{ tenantName }}</view> -->
-				</view>
-				<view @click="$u.func.route('/pages/user/profile')" class="edit-btn">编辑资料</view>
-				<!-- <view class="edit-btn">编辑资料</view> -->
-			</view>
-			<!-- 操作按钮 -->
-			<view class="nav">
-	<!-- 			<navigator url="" hover-class="none" class="nav-item">
-					<image src="/static/images/user/n1.png" class="icon" mode=""></image>
-					<view class="name">我的消息</view>
-				</navigator>
-				<navigator url="" hover-class="none" class="nav-item">
-					<image src="/static/images/user/n2.png" class="icon" mode=""></image>
-					<view class="name">我的待办</view>
-				</navigator> -->
-				<view hover-class="none" class="nav-item" @click="openMap">
-					<image src="/static/images/user/n3.png" class="icon" mode=""></image>
-					<view class="name">我的地址</view>
-				</view>
-				
-				<!-- <navigator url="" hover-class="none" class="nav-item">
-					<image src="/static/images/user/n4.png" class="icon" mode=""></image>
-					<view class="name">我的收藏</view>
-				</navigator> -->
-			</view>
-		</view>
-		<!-- 功能列表 -->
-		<!-- <view class="cell-box">
-			<u-cell-group :border="false">
-				<u-cell-item title="我的评价">
-					<image slot="icon" src="/static/images/user/c1.png" class="icon" mode=""></image>
-				</u-cell-item>
-				<u-cell-item title="常见问题">
-					<image slot="icon" src="/static/images/user/c2.png" class="icon" mode=""></image>
-				</u-cell-item>
-				<u-cell-item title="客服中心" :border-bottom="false">
-					<image slot="icon" src="/static/images/user/c3.png" class="icon" mode=""></image>
-				</u-cell-item>
-			</u-cell-group>
-		</view> -->
-		<view class="cell-box">
-			<u-cell-group :border="false">
-				<!-- <u-cell-item title="推荐">
-					<image slot="icon" src="/static/images/user/c4.png" class="icon" mode=""></image>
-				</u-cell-item> -->
-				<!-- <u-cell-item title="评分">
-					<image slot="icon" src="/static/images/user/c5.png" class="icon" mode=""></image>
-				</u-cell-item> -->
-				<u-cell-item title="隐私">
-					<image slot="icon" src="/static/images/user/c6.png" class="icon" mode=""></image>
-				</u-cell-item>
-				<u-cell-item title="关于" :border-bottom="false">
-					<image slot="icon" src="/static/images/user/c7.png" class="icon" mode=""></image>
-				</u-cell-item>
-			</u-cell-group>
-		</view>
-		<u-action-sheet :list="list" @click="outInClick" v-model="show"></u-action-sheet>
-		<view class="cell-box">
-			<u-cell-group :border="false">
-				<u-cell-item title="登出" :border-bottom="false" @click="show = true">
-					<image slot="icon" src="/static/images/user/dengchu.png" class="icon" mode=""></image>
-				</u-cell-item>
-			</u-cell-group>
-		</view>
-	</view>
-</template>
-
-<script>
-	export default {
-		data() {
-			return {
-				list: [{
-					text: '登出'
-				}],
-				show: false,
-				name: '',
-				id: '',
-				tenantName: '',
-				useimg: ''
-			};
-		},
-		methods: {
-			outInClick(index) {
-				if (index == 0) {
-					this.$u.func.logout(); 
-					// this.$store.commit('loginReset'); //重置登录
-					// uni.redirectTo({ //关闭并打开
-					// 	url: '../login/login-account',
-					// 	animationType: 'slide-in-top',
-					// 	animationDuration: 20000
-					// });
-				}
-			},
-			//登录成功后,获取个人信息
-			getOneselfInFo() {
-				var that = this;
-				//保安信息查询
-				console.log(this.$store.state.UserData, 999)
-				if (this.$store.state.UserData) {
-					that.name = this.$store.state.UserData.nick_name
-					that.id = this.$store.state.UserData.user_id
-					// that.tenantName = this.$store.state.UserData.tenantName
-
-				}
-			},
-			// 地图
-			openMap(){
-				uni.getLocation({
-				    type: 'gcj02', //返回可以用于uni.openLocation的经纬度
-				    success: function (res) {
-						console.log(res) 
-				        const latitude = res.latitude;
-				        const longitude = res.longitude;
-				        uni.openLocation({
-				            latitude: latitude,
-				            longitude: longitude,
-				            success: function () {
-				                console.log('success');
-				            }
-				        });
-				    }
-				});
-			}
-		},
-		mounted() {
-			console.log(this.$store.state)
-			if (this.$store.state.puserID) {
-				//获取个人信息
-				this.getOneselfInFo();
-			}
-			if (this.$store.state.UserData.avatar != null && this.$store.state.UserData.avatar != '') {
-				this.useimg = this.$store.state.UserData.avatar;
-				console.log(this.useimg)
-			}
-		},
-		onLoad() {
-
-		},
-	};
-</script>
-
-<style lang="scss">
-	.container {
-		background-color: #f7f7f7;
-		min-height: 100vh;
-		overflow: hidden;
-	}
-
-	.head {
-		position: relative;
-		top: 0;
-		left: 0;
-		z-index: 1;
-		min-height: 582rpx;
-		overflow: hidden;
-		background: #0bb9c8;
-
-		.set-icon {
-			vertical-align: middle;
-			width: 41rpx;
-			height: auto;
-			margin-right: 35rpx;
-		}
-
-		.head-bg {
-			position: absolute;
-			left: 0px;
-			top: 0px;
-			z-index: -1;
-			width: 750rpx;
-			height: 582rpx;
-			background: #0bb9c8;
-		}
-	}
-
-	.user-box {
-		display: flex;
-		justify-content: space-between;
-		padding: 0 20rpx 0 64rpx;
-		margin-top: 36rpx;
-
-		.left {
-			display: flex;
-			flex-direction: column;
-			align-items: end;
-
-			.avatar {
-				width: 128rpx;
-				height: 128rpx;
-				background: #ffffff;
-				border-radius: 50%;
-			}
-
-			.user-name {
-				margin-top: 20rpx;
-				font-size: 36rpx;
-				font-family: Source Han Sans CN;
-				font-weight: 500;
-				color: #ffffff;
-			}
-
-			.tag {
-				margin-top: 20rpx;
-				display: flex;
-				justify-content: center;
-				align-items: center;
-				padding: 5rpx 16rpx;
-				border: 1px solid #f5f5f5;
-				border-radius: 7rpx;
-
-				font-size: 19rpx;
-				font-family: Source Han Sans CN;
-				font-weight: 300;
-				color: #ffffff;
-			}
-		}
-
-		.edit-btn {
-			margin-top: 20rpx;
-			flex-shrink: 0;
-			display: flex;
-			justify-content: center;
-			align-items: center;
-
-			width: 165rpx;
-			height: 54rpx;
-			border: 2rpx solid #f5f5f5;
-			border-radius: 11rpx;
-
-			font-size: 27rpx;
-			font-family: Source Han Sans CN;
-			font-weight: 400;
-			color: #ffffff;
-		}
-	}
-
-	.nav {
-		display: flex;
-		//border-top: 2rpx solid #7dcdd6;
-		margin: 36rpx 38rpx 0;
-		padding: 36rpx 0 42rpx;
-
-		.nav-item {
-			width: calc(100% / 4);
-			display: flex;
-			flex-direction: column;
-			align-items: center;
-			justify-content: space-between;
-
-			font-size: 25rpx;
-			font-family: Source Han Sans CN;
-			font-weight: 400;
-			color: #ffffff;
-
-			&:not(:last-of-type) {
-				position: relative;
-
-				&::after {
-					position: absolute;
-					right: 0;
-					top: 50%;
-					transform: translateY(-50%);
-					content: '';
-					display: block;
-					width: 2rpx;
-					background-color: #3ac4d1;
-					height: 30rpx;
-				}
-			}
-
-			.icon {
-				width: 48rpx;
-				height: 48rpx;
-				margin-bottom: 6rpx;
-			}
-		}
-	}
-
-	.cell-box {
-		background: #ffffff;
-		margin: 18rpx;
-
-		.icon {
-			width: 32rpx;
-			height: 32rpx;
-			margin-right: 22rpx;
-		}
-	}
-</style>
diff --git a/pages/user/profile.vue b/pages/user/profile.vue
deleted file mode 100644
index 1e013ae..0000000
--- a/pages/user/profile.vue
+++ /dev/null
@@ -1,285 +0,0 @@
-<template>
-	<view class="container">
-		<u-navbar :is-fixed="false" :border-bottom="false" :is-back="true" back-icon-color="#fff" title="个人资料"
-			back-icon-size="35" :background="{ background: '#0BB9C8' }" title-color="#fff">
-			<view class="complie" slot="right" @click="submit">完成</view>
-		</u-navbar>
-
-		<view class="content">
-			<view class="avatar" style="height: 420rpx">
-				<image :src="detail.avatar" class="avatar-image" mode=""></image>
-				<view class="a" @click="handleChooseImg">更换头像</view>
-			</view>
-
-			<view class="detail-content">
-				
-				<view class='row-content'>
-					<span class="title">
-						名 称
-					</span>
-					<span>
-						{{detail.nick_name}}
-					</span>
-				</view>
-				
-				<view class='row-content'>
-					<span class="title">
-						单 位
-					</span>
-					<span>
-						{{detail.deptName}}
-					</span>
-				</view>
-				
-				<view class='row-content' v-show="detail.rname[0] == '保安'">
-					<span class="title">
-						性 别
-					</span>
-					<span>
-						{{detail.list.sex == 1 ? '男' : detail.list.sex == 2 ? '女' : ''}}
-					</span>
-				</view>
-				
-				<view class='row-content' v-show="detail.rname[0] == '保安'">
-					<span class="title">
-						年 龄
-					</span>
-					<span>
-						{{detail.age}}
-					</span>
-				</view>
-				
-				<view class='row-content' v-show="detail.rname[0] == '保安'">
-					<span class="title">
-						籍 贯
-					</span>
-					<span>
-						{{detail.list.nativeplace}}
-					</span>
-				</view>
-				
-				<view class='row-content' v-show="detail.rname[0] == '保安'">
-					<span class="title">
-						联系电话
-					</span>
-					<span>
-						{{detail.list.phone}}
-					</span>
-				</view>
-				
-				<view class='row-content' v-show="detail.rname[0] == '保安'">
-					<span class="title">
-						证件编号
-					</span>
-					<span>
-						{{detail.list.securitynumber}}
-					</span>
-				</view>
-
-			</view>
-
-		</view>
-		<!--  -->
-		<!-- <view class="back" @click="logout">退出登录</view> -->
-		<u-toast ref="uToast" />
-	</view>
-</template>
-
-<script>
-	import pickRegions from '@/components/pick-regions/pick-regions.vue';
-	export default {
-		components: {
-			pickRegions
-		},
-		data() {
-			return {
-				sexPicker: [{
-						name: '男'
-					},
-					{
-						name: '女'
-					}
-				],
-				detail: {}
-			};
-		},
-		onLoad() {
-
-			if (this.$store.state
-				.UserData) {
-				this.detail = this.$store.state
-					.UserData
-
-				var usercode = this.detail.cardid;
-				var date = new Date();
-				var year = date.getFullYear();
-				var birthday_year = parseInt(usercode.substr(6, 4));
-				var userage = year - birthday_year;
-
-				this.detail.age = userage;
-			}
-
-		},
-		methods: {
-			logout() {
-				this.$u.func.logout();
-			},
-			submit() {
-				// let detail = this.detail
-				// if (!detail.phone && !/^1\d{10}$/.test(detail.phone)) {
-				// 	return uni.showToast({
-				// 		title: '请输入正确的手机号',
-				// 		duration: 2000,
-				// 		icon: 'none'
-				// 	});
-				// }
-				var that = this;
-				uni.request({
-					url: this.$store.state.piAPI + "/blade-user/update-info",
-					method: "post",
-					data: {
-						realName: this.detail.nick_name,
-						avatar: this.detail.avatar,
-						id: this.detail.user_id
-					},
-					success: (res) => {
-						if (res.data.msg == "操作成功") {
-							that.$refs.uToast.show({
-								title: '修改成功',
-								type: 'success',
-								callback: () => {
-									uni.navigateBack();
-								}
-							})
-						}
-					}
-				});
-
-			},
-			changeDefaultPicker(name, e) {
-				this.detail[name] = e.detail.value;
-			},
-			changePicker(name, e) {
-				this.detail[name] = this[`${name}Picker`][e.detail.value].name;
-			},
-			handleChooseImg() {
-				let that = this;
-				uni.chooseImage({
-					count: 1,
-					success(e) {
-						that.detail.avatar = e.tempFilePaths[0];
-					}
-				});
-			}
-		}
-	};
-</script>
-
-<style lang="scss">
-	.container {
-
-		height: 100vh;
-		overflow: hidden;
-
-		background: #0ED2F7;
-		/* fallback for old browsers */
-		background: -webkit-linear-gradient(to left, #B2FEFA, #0ED2F7);
-		/* Chrome 10-25, Safari 5.1-6 */
-		background: linear-gradient(to left, #B2FEFA, #0ED2F7);
-		/* W3C, IE 10+/ Edge, Firefox 16+, Chrome 26+, Opera 12+, Safari 7+ */
-
-
-
-	}
-
-	.complie {
-		vertical-align: middle;
-		padding: 10rpx 20rpx;
-		font-size: 32rpx;
-		font-family: Source Han Sans CN;
-		font-weight: 400;
-		color: #fff;
-	}
-
-	.content {
-		height: 100%;
-		overflow-y: auto;
-	}
-
-	.avatar {
-		display: flex;
-		justify-content: center;
-		align-items: center;
-		flex-direction: column;
-
-		font-size: 30rpx;
-		font-family: Source Han Sans CN;
-		font-weight: 400;
-		color: #fff;
-
-		background: #0BB9C8;
-		/* fallback for old browsers */
-		background: -webkit-linear-gradient(to left, #0BB9C8, #0cd9e7, #0cd9e7, #0BB9C8);
-		/* Chrome 10-25, Safari 5.1-6 */
-		background: linear-gradient(to left, #0BB9C8, #0cd9e7, #0cd9e7, #0BB9C8);
-		/* W3C, IE 10+/ Edge, Firefox 16+, Chrome 26+, Opera 12+, Safari 7+ */
-
-		.avatar-image {
-			width: 162rpx;
-			height: 162rpx;
-			background: #ffffff;
-			border-radius: 50%;
-			background-color: #82848a;
-			margin-bottom: 15rpx;
-		}
-	}
-
-	.detail-content {
-		margin-top: 8px;
-		margin-left: 2.5%;
-		padding: 8px 2.5%;
-		width: 95%;
-		background-color: rgba(65, 64, 66, 0.1);
-		border-radius: 5px;
-		display: flex;
-		flex-direction: column;
-		
-		min-height: calc(100% - 634rpx);
-
-		.row-content {
-			width: 100%;
-			height: 60px;
-			/* background-color: seashell; */
-			display: flex;
-			align-items: center;
-			/* justify-content: center; */
-			color: #fff;
-			margin: 0 auto;
-			border-bottom: 1px solid rgba(255, 255, 255, 0.5);
-
-			.title {
-				margin-left: 6%;
-				display: inline-block;
-				width: 21%;
-				min-width: 144rpx;
-			}
-		}
-
-	}
-
-
-
-
-	.back {
-		margin-top: 40rpx;
-		text-align: center;
-		height: 109rpx;
-		background: #ffffff;
-
-		font-size: 34rpx;
-		font-family: Source Han Sans CN;
-		font-weight: bold;
-		color: #141414;
-		line-height: 109rpx;
-	}
-</style>
diff --git a/pages/videoCall/moban.vue b/pages/videoCall/moban.vue
deleted file mode 100644
index eb4c8bf..0000000
--- a/pages/videoCall/moban.vue
+++ /dev/null
@@ -1,577 +0,0 @@
-<template>
-	<view class="content">
-		<!-- 加入频道 -->
-		<view class="index" v-if="!videoShow">
-			<!-- 输入频道 -->
-			<view class="chanel">
-				<input class="uni-input activetext" v-model="channel" focus placeholder="请输入频道号" />
-			</view>
-
-			<view class="setrole">
-
-				<button type="default" :class="role == 1? 'active': 'button'" @click="setClientRole(1)"><text class="text button_text"
-					 :class="role == 1? 'activetext': ''">我是主播</text></button>
-
-				<button type="default" :class="role == 2? 'active': 'button'" @click="setClientRole(2)"><text class="text" :class="role == 2? 'activetext': ''">我是游客</text></button>
-			</view>
-
-			<view class="join">
-				<button type="primary" class="button jion_bg" @click="join"><text class="activetext">加入频道</text></button>
-			</view>
-		</view>
-
-		<!-- 视频 -->
-		<view class="vedio vedioWatch" v-else>
-
-			<view class="video_bg">
-				<image class="video_bg_img" src="../../static/BG.png" mode=""></image>
-				<!-- <text class="activetext" v-if="videoShowBg"></text> -->
-				<!-- 	<view class="video_bg video_bg_text">
-			
-					<text class="activetext">{{promptText}}</text>
-				</view> -->
-			</view>
-
-			<view class="video_region" :class="PeerVideoUser.length > 1 ? 'video_region_padding' : ''">
-				<!-- 渲染视频 -->
-				<view v-for="peervideo in PeerVideoUser" :key="peervideo">
-					<view :class="PeerVideoUserStyle" v-if="peervideo == uid && role == 2 ? false : true">
-						<AR-CanvasView :ref="`popup${peervideo}`" style="flex: 1;"></AR-CanvasView>
-					</view>
-
-				</view>
-			</view>
-
-			<!-- 转换摄像头 -->
-			<view class="camera position" @click="cameraSwitchFn" v-if="role == 1">
-				<image class="video_bg_img" src="../../static/camera.png" mode=""></image>
-
-			</view>
-			<!-- 音视频基本开关 -->
-			<view class="videoshow_control position">
-				<!-- 音频开关 -->
-				<view class="open" @click="audioSwitchFn" v-if="role == 1">
-					<image class="video_bg_img" src="../../static/au_in.png" mode="" v-if="audioSwitch == 'open'"></image>
-					<image class="video_bg_img" src="../../static/au_on.png" mode="" v-else></image>
-					<text class="open_text">音频</text>
-				</view>
-
-				<!-- 挂断 -->
-				<view class="open" @click="phoneFn">
-					<image class="video_bg_img" src="../../static/over.png" mode=""></image>
-					<text class="open_text">挂断</text>
-
-				</view>
-
-				<!-- 视频开关 -->
-				<view class="open" @click="vedioSwitchFn" v-if="role == 1">
-					<image class="video_bg_img" src="../../static/vi_on.png" mode="" v-if="vedioSwitch == 'open'"></image>
-					<image class="video_bg_img" src="../../static/vi_in.png" mode="" v-else></image>
-					<text class="open_text">视频</text>
-				</view>
-
-				<!-- 	<scroll-view scroll-y="true" style="height: 500px;padding: 20px;">
-					<view v-for="(item,value) in closeArray" :key='item+value'>{{item}}</view>
-				</scroll-view> -->
-			</view>
-			<!-- 提示文字 -->
-			<view class="video_bg video_bg_text" v-if="promptText">
-				<!-- <view class="video_bg video_bg_text"> -->
-				<text class="activetext">{{promptText}}</text>
-				<!-- </view> -->
-			</view>
-		</view>
-		<uni-popup ref="popup" type="center">
-			<uni-popup-message :type="popupType" :message="popupMessage" :duration="2000"></uni-popup-message>
-		</uni-popup>
-	</view>
-
-
-</template>
-
-<script>
-	const RtcModule = uni.requireNativePlugin('AR-RtcModule');
-	import uniPopup from '@/components/uni-popup/uni-popup.vue'
-	import uniPopupMessage from '@/components/uni-popup-message/uni-popup-message.vue'
-	import uniPopupDialog from '@/components/uni-popup-dialog/uni-popup-dialog.vue'
-	import permision from "@/js_sdk/wa-permission/permission.js"
-	export default {
-		components: {
-			uniPopup,
-			uniPopupMessage,
-			uniPopupDialog
-		},
-		data() {
-			return {
-				//anyRTC 为 App 开发者签发的 App ID。每个项目都应该有一个独一无二的 App ID。如果你的开发包里没有 App ID,请从anyRTC官网(https://www.anyrtc.io)申请一个新的 App ID
-				appid: "d5a164cd8e0a8352ee108c561ba2e44e",
-				channel: "",
-				uid: "",
-				role: 1, //角色 主播-游客
-
-				videoShow: false, //视频展示
-				// videoShowBg: true, //背景展示
-				promptText: "loading...",
-
-				PeerVideoUser: [], //用户视频加入存储
-				PeerVideoUserStyle: "video_local", //用户视频加入样式
-
-				// 本地
-				audioSwitch: "open", //音频开关 
-				vedioSwitch: "open", //视频开关
-
-				videoWidth: 0,
-				videoHeight: 0,
-				//提示
-				popupType: "",
-				popupMessage: "",
-
-				// closeArray: []
-			}
-		},
-		// 页面初始加载(仅执行一次)
-		onReady() {
-			// 初始化
-			console.log(RtcModule)
-			this.init();
-		},
-
-		watch: {
-			PeerVideoUser: function(newName) {
-				if (this.role == 2) {
-					newName = newName.filter((x) => x !== this.uid);
-				}
-				// video_local
-				if (newName.length == 1) {
-					this.PeerVideoUserStyle = "video_local"
-				} else if (newName.length > 1 && newName.length < 5) {
-					this.PeerVideoUserStyle = "video_local_1"
-				} else if (newName.length > 4 && newName.length < 10) {
-					this.PeerVideoUserStyle = "video_local_2"
-				} else if (newName.length > 9 && newName.length < 17) {
-					this.PeerVideoUserStyle = "video_local_3"
-				} else if (newName.length == 0) {
-					this.role == 2 ? this.promptText = "暂无主播播放视频" : this.promptText = "loading..."
-				}
-			}
-		},
-		methods: {
-			// 初始化
-			async init() {
-				// 查看权限
-				if (uni.getSystemInfoSync().platform == 'ios') {
-					//查看相机权限
-					await this.requestAndroidPermission("camera", 'ios');
-					//查看录音权限
-					await this.requestAndroidPermission("record", 'ios');
-
-				} else if (uni.getSystemInfoSync().platform === 'android') {
-					//查看相机权限
-					await this.requestAndroidPermission("android.permission.CAMERA", 'android');
-					//查看录音权限
-					await this.requestAndroidPermission("android.permission.RECORD_AUDIO", 'android');
-				}
-				// 初始化 setCallBack
-				await this.callbackFn();
-				// 初始化 create
-
-				await RtcModule.create({
-					"appId": this.appid
-				}, (res) => {
-
-				});
-				this.uid = this.randomFn(6);
-			},
-			//设置角色
-			setClientRole(num) {
-				this.role = num;
-				//设置直播场景下的用户角色
-				RtcModule.setClientRole({
-					"role": num
-				}, (ret) => {});
-			},
-
-			//加入频道 跳转到视频
-			async join() {
-				uni.showLoading({
-					title: '加载中',
-					mask: true
-				});
-				//加入房间
-				await RtcModule.joinChannel({
-					"token": "",
-					"channelId": this.channel,
-					"uid": this.uid
-				}, (res) => {
-					console.log(res,'join break')
-				})
-			},
-
-			// 挂断 离开
-			phoneFn() {
-				//离开频道
-				RtcModule.leaveChannel((res) => {})
-			},
-
-			//添加本地视频到页面
-			setupLocalVideoFn() {
-				//视频 
-				RtcModule.enableVideo((res) => {});
-				this.$refs[`popup${this.uid}`][0].setupLocalVideo({
-					"renderMode": 1,
-					"channelId": this.channel,
-					"uid": this.uid,
-					"mirrorMode": 0
-				}, (res) => {});
-				// 本地预览
-				RtcModule.startPreview((res) => {});
-			},
-
-			// 视频
-			vedioSwitchFn() {
-				let open = true;
-
-				if (this.vedioSwitch == "open") {
-					this.vedioSwitch = "colse";
-					open = false;
-				} else {
-					this.vedioSwitch = "open";
-					open = true;
-				}
-				RtcModule.enableLocalVideo({
-					"enabled": open
-				}, (res) => {
-					if (res.code == 0) {
-						open == false ? this.promptFn("warn", "关闭本地视频采集") : this.promptFn("info", "开启本地视频采集");
-					}
-				});
-			},
-			// 音频
-			audioSwitchFn() {
-				let open = true;
-				if (this.audioSwitch == "open") {
-					this.audioSwitch = "colse";
-					open = false;
-				} else {
-					this.audioSwitch = "open";
-					open = true;
-				}
-
-				RtcModule.enableLocalAudio({
-					"enabled": open
-				}, (res) => {
-					if (res.code == 0) {
-						open == false ? this.promptFn("warn", "关闭本地音频采集") : this.promptFn("info", "开启本地音频采集");
-					}
-				});
-			},
-			//转化摄像头
-			cameraSwitchFn() {
-				RtcModule.switchCamera((res) => {
-					res.code == 0 ? this.promptFn("success", "切换摄像头成功") : this.promptFn("error", "切换摄像头失败");
-				})
-			},
-
-			//callback 接收
-			callbackFn() {
-				RtcModule.setCallBack((res) => {
-					switch (res.engineEvent) {
-						case "onWarning":
-							this.promptFn("warn", res.warningCode);
-							break;
-						case "onError":
-							res.errorCode != 18 ? this.promptFn("error", res.errorCode) : '';
-							break;
-						case "onJoinChannelSuccess": //用户加入成功
-							uni.hideLoading();
-							this.role == 1 ? this.PeerVideoUser.push(res.uid) : "";
-							this.videoShow = true;
-							setTimeout(() => {
-								// this.videoShowBg = false;
-								this.promptText = ""
-								//扬声器
-								RtcModule.setEnableSpeakerphone({
-									"enabled": true
-								}, (res) => {})
-								setTimeout(() => {
-									// 启用视频模块。
-									this.role == 1 ? this.setupLocalVideoFn() : RtcModule.enableVideo((res) => {});
-								}, 200)
-							}, 2000)
-							break;
-						case "onLeaveChannel": //离开频道回调
-							setTimeout(() => {
-								this.closeAll()
-							}, 500)
-							break;
-						case "onUserJoined": //远端用户加入当前频道回调。
-							// this.promptFn("info", "远端用户加入当前频道回调");
-							this.PeerVideoUser.push(res.uid);
-							break;
-						case "onUserOffline": //远端用户离开当前频道回调。
-							this.PeerVideoUser = this.PeerVideoUser.filter((x) => x !== res.uid);
-							break;
-
-						case "onFirstLocalAudioFrame": //已发送本地音频首帧的回调。(页面上添加音频)
-							break;
-						case "onFirstLocalVideoFrame": //已显示本地视频首帧的回调。(页面添加本地视频)
-							// this.promptFn("error", "已显示本地视频首帧的回调");
-							break;
-						case "onFirstRemoteVideoDecoded": //已完成远端视频首帧解码回调。(页面添加远端视频)
-							// this.promptFn("info", "已完成远端视频首帧解码回调");
-							this.promptText = "请稍等。。。"
-							let uid = []
-							uid.push(res.uid)
-							setTimeout(() => {
-								this.promptText = "";
-								// this.videoShowBg = false; //设置背景开关
-								setTimeout(() => {
-									uid.map(item => {
-										this.$refs[`popup${item}`][0].setupRemoteVideo({
-											"renderMode": 1,
-											"channelId": this.chanel,
-											"uid": item,
-											"mirrorMode": 0
-										}, (res) => {})
-										//预览
-										RtcModule.startPreview((res) => {});
-									})
-								}, 500)
-
-							}, 2000)
-							break;
-					}
-
-				})
-			},
-			//提示
-			promptFn(type, content) {
-				this.popupType = type;
-				this.popupMessage = content;
-				this.$refs.popup.open()
-			},
-			//支持自定义字符长度和特征字符集合
-			randomFn(len, charSet) {
-				charSet = charSet || 'abcdefghijklmnopqrstuvwxyz0123456789';
-				let randomString = '';
-				for (let i = 0; i < len; i++) {
-					let randomPoz = Math.floor(Math.random() * charSet.length);
-					randomString += charSet.substring(randomPoz, randomPoz + 1);
-				}
-				return randomString;
-			},
-			// 离开清空
-			async closeAll() {
-				// 销毁实例
-				await RtcModule.destroyRtc((res) => {});
-				this.videoShow = false; //视频展示
-				// this.videoShowBg = true; //背景展示
-				this.promptText = "loading...";
-
-				this.PeerVideoUser = []; //远端用户加入存储
-				// 本地
-				this.audioSwitch = "open"; //音频开关 
-				this.vedioSwitch = "open"; //视频开关
-				// 重新创建实例
-				await this.init();
-			  // 如果需要跳转其它页面请按下边步骤
-				// await uni.redirectTo({
-				// 	url: '..',
-				// 	success: () => {
-				// 		RtcModule.destroyRtc((res) => {
-				// 			console.log("页面销毁", res.code);
-				// 		});
-				// 	}
-				// });
-
-			},
-			//查看授权
-			async requestAndroidPermission(permisionID, type) {
-				let result = 0;
-				let strStatus = "";
-				type == 'ios' ? result = await permision.judgeIosPermission(permisionID) : result = await permision.requestAndroidPermission(
-					permisionID);
-				if (result == 1) {
-					strStatus = "已获得授权"
-				} else if (result == 0) {
-					strStatus = "未获得授权"
-				} else {
-					strStatus = "被永久拒绝权限"
-				}
-			},
-
-		}
-	}
-</script>
-
-<style>
-	.content {
-		flex: 1;
-	}
-
-	/* 加入频道 */
-	.index {
-		flex: 1;
-		background-color: #0A1621;
-	}
-
-	.chanel {
-		padding: 120px 20px 20px;
-	}
-
-	.uni-input {
-		height: 120rpx;
-		padding: 0 20px;
-		background-color: #2F3041;
-		border-radius: 6px;
-	}
-
-	.setrole {
-		padding: 60px 20px;
-		flex-direction: row;
-		justify-content: space-between;
-	}
-
-	.button {
-		padding: 10px 70rpx;
-		background-color: #2F3041;
-		border-radius: 6px;
-		border-width: 2px;
-		border-color: #2f3041;
-	}
-
-	.text {
-		color: #B4B5BE;
-	}
-
-
-
-	.activetext {
-		color: #fff;
-	}
-
-	.active {
-		padding: 10px 70rpx;
-		border-radius: 6px;
-		border-width: 2px;
-		border-color: #40a3fb;
-		background-color: #0A1621;
-	}
-
-	.join {
-		padding: 20px;
-	}
-
-	.jion_bg {
-		background-color: #40A3FB;
-		border-width: 0;
-	}
-
-
-	/* 视频 */
-	.vedioWatch {
-		flex: 1;
-		position: relative;
-	}
-
-	/* 初始背景 */
-	.video_bg {
-		flex: 1;
-		position: absolute;
-		top: 0;
-		left: 0;
-		right: 0;
-		bottom: 0;
-		background-color: transparent;
-	}
-
-	.video_bg_img {
-		flex: 1;
-	}
-
-	.video_bg_text {
-		justify-content: center;
-		align-items: center;
-	}
-
-	/* 转换摄像头 */
-	.camera {
-		width: 44px;
-		height: 37px;
-		/* position: absolute; */
-		left: 20px;
-		top: 40px;
-	}
-
-	/* 视频区域 */
-	.video_region {
-		flex: 1;
-		/* position: absolute; */
-		flex-wrap: wrap;
-		flex-direction: row;
-		background-color: transparent;
-	}
-
-	/* 1个视频 */
-	.video_local {
-		width: 750rpx;
-		height: 1334rpx;
-		background-color: transparent;
-	}
-
-	.video_region_padding {
-		margin-top: 20px;
-		padding: 200rpx 0 260rpx;
-		width: 750rpx;
-		height: 840rpx;
-	}
-
-	/* 4个视频 */
-	.video_local_1 {
-		width: 375rpx;
-		height: 420rpx;
-	}
-
-	/* 9个视频 */
-	.video_local_2 {
-		width: 250rpx;
-		height: 280rpx;
-	}
-
-	/* 16个视频 */
-	.video_local_3 {
-		width: 187.5rpx;
-		height: 210rpx;
-	}
-
-	/* 音视频基本开关 */
-	.videoshow_control {
-		/* position: absolute; */
-		bottom: 20rpx;
-		left: 0;
-		width: 750rpx;
-		/* background-color: #007AFF; */
-		/* height: 250rpx; */
-		padding: 20px;
-		background-color: transparent;
-		color: #fff;
-		flex-direction: row;
-		justify-content: space-around;
-	}
-
-	.open {
-		height: 205rpx;
-		width: 128rpx;
-		justify-content: center;
-	}
-
-	.open_text {
-		padding: 15px 0 0;
-		text-align: center;
-		color: #fff;
-	}
-
-	.position {
-		position: absolute;
-	}
-</style>
diff --git a/pages/videoCall/mylyg.vue b/pages/videoCall/mylyg.vue
deleted file mode 100644
index b661ea4..0000000
--- a/pages/videoCall/mylyg.vue
+++ /dev/null
@@ -1,705 +0,0 @@
-<template>
-	<view class="content">
-		<!-- 加入频道 -->
-		<view class="index" v-if="!videoShow">
-			<view class="Mains" v-if="isMain">
-				<view class="title">
-					正在呼叫{{MainName}}
-					<u-loading size="36" mode="flower"></u-loading>
-				</view>
-				<!-- 挂断 -->
-				<view class="open" @click="phoneFnMain">
-					<image class="video_bg_img" src="../../static/over.png" mode=""></image>
-					<text class="open_text">取消呼叫</text>
-				</view>
-			</view>
-			<view class="Receiver" v-if="!isMain">
-				<view class="title">
-					是否接收来自{{userName}}的视频请求
-					<u-loading size="36" mode="flower"></u-loading>
-				</view>
-				<view class="Receiver-but">
-					<view class="open" @click="join('Receiver')">
-						<image class="video_bg_img" src="../../static/phone.png" mode=""></image>
-						<text class="open_text">接受</text>
-
-					</view>
-					<view class="open" @click="comeBack">
-						<image class="video_bg_img" src="../../static/over.png" mode=""></image>
-						<text class="open_text">挂断</text>
-
-					</view>
-				</view>
-			</view>
-		</view>
-		<!-- 视频 -->
-		<view class="vedio-vedioWatch" v-else>
-
-
-			<view class="video_region" :class="PeerVideoUser.length > 0 ? 'video_region_padding' : ''">
-				<!-- 渲染视频 -->
-				<view v-for="peervideo in PeerVideoUser" :key="peervideo">
-					<view :class="PeerVideoUserStyle" v-if="peervideo == uid && role == 2 ? false : true">
-						<AR-CanvasView :ref="`popup${peervideo}`" style="flex: 1;"></AR-CanvasView>
-					</view>
-
-				</view>
-			</view>
-			<!-- 转换摄像头 -->
-			<view class="camera position" @click="cameraSwitchFn" v-if="role == 1">
-				<image class="video_bg_img" src="../../static/camera.png" mode=""></image>
-
-			</view>
-			<!-- 控制开关 -->
-			<view class="vider-but">
-				<!-- 音频开关 -->
-				<view class="open" @click="audioSwitchFn" v-if="role == 1">
-					<image class="video_bg_img" src="../../static/au_in.png" mode="" v-if="audioSwitch == 'open'">
-					</image>
-					<image class="video_bg_img" src="../../static/au_on.png" mode="" v-else></image>
-					<text class="open_text">音频</text>
-				</view>
-
-				<!-- 挂断 -->
-				<view class="open" @click="phoneFn">
-					<image class="video_bg_img" src="../../static/over.png" mode=""></image>
-					<text class="open_text">挂断</text>
-
-				</view>
-
-				<!-- 视频开关 -->
-				<view class="open" @click="vedioSwitchFn" v-if="role == 1">
-					<image class="video_bg_img" src="../../static/vi_on.png" mode="" v-if="vedioSwitch == 'open'">
-					</image>
-					<image class="video_bg_img" src="../../static/vi_in.png" mode="" v-else></image>
-					<text class="open_text">视频</text>
-				</view>
-			</view>
-
-			<uni-popup ref="popup" type="center">
-				<uni-popup-message :type="popupType" :message="popupMessage" :duration="2000"></uni-popup-message>
-			</uni-popup>
-		</view>
-	</view>
-</template>
-
-<script>
-	const RtcModule = uni.requireNativePlugin('AR-RtcModule');
-	import uniPopup from '@/components/uni-popup/uni-popup.vue'
-	import uniPopupMessage from '@/components/uni-popup-message/uni-popup-message.vue'
-	import uniPopupDialog from '@/components/uni-popup-dialog/uni-popup-dialog.vue'
-	import permision from "@/js_sdk/wa-permission/permission.js"
-	export default {
-		components: {
-			uniPopup,
-			uniPopupMessage,
-			uniPopupDialog
-		},
-		data() {
-			return {
-				appid: "d5a164cd8e0a8352ee108c561ba2e44e",
-				channel: "",
-				uid: "",
-				role: 1, //角色 主播-游客
-
-
-				videoShow: false, //视频展示
-				// videoShowBg: true, //背景展示
-				promptText: "loading...",
-
-				PeerVideoUser: ['aaaaaaa'], //用户视频加入存储
-				PeerVideoUserStyle: "video_local", //用户视频加入样式
-
-				// 本地
-				audioSwitch: "colse", //音频开关 
-				vedioSwitch: "open", //视频开关
-
-				videoWidth: 0,
-				videoHeight: 0,
-				//提示
-				popupType: "",
-				popupMessage: "",
-
-
-				isMain: false,
-				MainName: '222',
-				userName: '111'
-			}
-		},
-		// 页面初始加载(仅执行一次)
-		onReady() {
-			// 初始化
-			this.channel = 2554;
-			this.init();
-		},
-		onLoad(option) {
-			console.log(option.state);
-			if (option.state == "Mains") {
-				this.isMain = true;
-				setTimeout(res => {
-					this.join();
-				}, 2000)
-			} else if (option.state == "Receiver") {
-				this.isMain = false;
-			}
-		},
-
-		watch: {
-			PeerVideoUser: function(newName) {
-				if (this.role == 2) {
-					newName = newName.filter((x) => x !== this.uid);
-				}
-				// video_local
-				if (newName.length == 1) {
-					this.PeerVideoUserStyle = "video_local"
-				} else if (newName.length > 1 && newName.length < 5) {
-					this.PeerVideoUserStyle = "video_local_1"
-				} else if (newName.length > 4 && newName.length < 10) {
-					this.PeerVideoUserStyle = "video_local_2"
-				} else if (newName.length > 9 && newName.length < 17) {
-					this.PeerVideoUserStyle = "video_local_3"
-				} else if (newName.length == 0) {
-					this.role == 2 ? this.promptText = "暂无主播播放视频" : this.promptText = "loading..."
-				}
-			}
-		},
-		methods: {
-			// 初始化
-			async init() {
-				// 查看权限
-				if (uni.getSystemInfoSync().platform == 'ios') {
-					//查看相机权限
-					await this.requestAndroidPermission("camera", 'ios');
-					//查看录音权限
-					await this.requestAndroidPermission("record", 'ios');
-
-				} else if (uni.getSystemInfoSync().platform === 'android') {
-					//查看相机权限
-					await this.requestAndroidPermission("android.permission.CAMERA", 'android');
-					//查看录音权限
-					await this.requestAndroidPermission("android.permission.RECORD_AUDIO", 'android');
-				}
-				// 初始化 setCallBack
-				await this.callbackFn();
-				// 初始化 create
-
-				await RtcModule.create({
-					"appId": this.appid
-				}, (res) => {
-					console.log(res);
-				});
-				this.uid = this.randomFn(6);
-				console.log(this.uid, '当前id码')
-			},
-			//设置角色
-			setClientRole(num) {
-				this.role = num;
-				//设置直播场景下的用户角色
-				RtcModule.setClientRole({
-					"role": num
-				}, (ret) => {});
-			},
-
-
-			//加入频道 跳转到视频
-			async join(val) {
-				var that = this;
-				// if (val == "Mains") { //视频发起人进入
-				console.log('视频发起人进入');
-				console.log(this.uid, '进入检测uid')
-				uni.showLoading({
-					title: '加载中',
-					mask: true
-				});
-				//加入房间
-				await RtcModule.joinChannel({
-					"token": "",
-					"channelId": this.channel,
-					"uid": this.uid
-				}, (res) => {
-					console.log(res, 'join break');
-					console.log('成功进入房间:' + that.channel);
-					that.videoShow = true;
-				})
-				// } else if (val == 'Receiver') { //视频接收人进入
-				// 	console.log('视频接收人进入');
-				// 	uni.showLoading({
-				// 		title: '加载中',
-				// 		mask: true
-				// 	});
-				// 	//加入房间
-				// 	await RtcModule.joinChannel({
-				// 		"token": "",
-				// 		"channelId": this.channel,
-				// 		"uid": this.uid
-				// 	}, (res) => {
-				// 		console.log(res, 'join break');
-				// 		console.log('成功进入房间:' + that.channel);
-				// 	})
-				// }
-
-			},
-			// 等待时候挂断
-			phoneFnMain() {
-				// RtcModule.leaveChannel((res) => {});
-				console.log("等待时候挂断");
-				uni.navigateBack();
-				this.closeAll();
-			},
-			//拒绝进入视频
-			comeBack() {
-				console.log("拒绝进入视频");
-				uni.navigateBack();
-				RtcModule.leaveChannel((res) => {});
-				this.closeAll();
-			},
-
-			// 挂断 离开
-			phoneFn() {
-				//离开频道
-				RtcModule.leaveChannel((res) => {});
-				this.closeAll();
-				uni.navigateBack();
-			},
-
-			//添加本地视频到页面
-			setupLocalVideoFn() {
-				//视频 
-				var that = this;
-				RtcModule.enableVideo((res) => {});
-				console.log(that,'thatsss')
-				console.log(that.$refs,'refsssss')
-				this.$refs[`popup${this.uid}`][0].setupLocalVideo({
-					"renderMode": 4,
-					"channelId": this.channel,
-					"uid": this.uid,
-					"mirrorMode": 0
-				}, (res) => {});
-				// 本地预览
-				RtcModule.startPreview((res) => {});
-			},
-
-			// 视频
-			vedioSwitchFn() {
-				let open = true;
-
-				if (this.vedioSwitch == "open") {
-					this.vedioSwitch = "colse";
-					open = false;
-				} else {
-					this.vedioSwitch = "open";
-					open = true;
-				}
-				RtcModule.enableLocalVideo({
-					"enabled": open
-				}, (res) => {
-					if (res.code == 0) {
-						open == false ? this.promptFn("warn", "关闭本地视频采集") : this.promptFn("info", "开启本地视频采集");
-					}
-				});
-			},
-			// 音频
-			audioSwitchFn() {
-				let open = true;
-				if (this.audioSwitch == "open") {
-					this.audioSwitch = "colse";
-					open = false;
-				} else {
-					this.audioSwitch = "open";
-					open = true;
-				}
-
-				RtcModule.enableLocalAudio({
-					"enabled": open
-				}, (res) => {
-					if (res.code == 0) {
-						open == false ? this.promptFn("warn", "关闭本地音频采集") : this.promptFn("info", "开启本地音频采集");
-					}
-				});
-			},
-			//转化摄像头
-			cameraSwitchFn() {
-				RtcModule.switchCamera((res) => {
-					res.code == 0 ? this.promptFn("success", "切换摄像头成功") : this.promptFn("error", "切换摄像头失败");
-				})
-			},
-
-			//callback 接收
-			callbackFn() {
-				RtcModule.setCallBack((res) => {
-					switch (res.engineEvent) {
-						case "onWarning":
-							this.promptFn("warn", res.warningCode);
-							break;
-						case "onError":
-							res.errorCode != 18 ? this.promptFn("error", res.errorCode) : '';
-							break;
-						case "onJoinChannelSuccess": //用户加入成功
-							uni.hideLoading();
-							this.role == 1 ? this.PeerVideoUser.push(res.uid) : "";
-							console.log(res.uid, 'uidsssss')
-							this.videoShow = true;
-							setTimeout(() => {
-								// this.videoShowBg = false;
-								this.promptText = ""
-								//扬声器
-								RtcModule.setEnableSpeakerphone({
-									"enabled": true
-								}, (res) => {})
-								setTimeout(() => {
-									console.log(this.PeerVideoUser,'this.PeerVideoUser')
-									// 启用视频模块。
-									this.role == 1 ? this.setupLocalVideoFn() : RtcModule
-										.enableVideo((res) => {});
-								}, 200)
-							}, 2000)
-							break;
-						case "onLeaveChannel": //离开频道回调
-							setTimeout(() => {
-								this.closeAll()
-							}, 500)
-							break;
-						case "onUserJoined": //远端用户加入当前频道回调。
-							// this.promptFn("info", "远端用户加入当前频道回调");
-							this.PeerVideoUser.push(res.uid);
-							break;
-						case "onUserOffline": //远端用户离开当前频道回调。
-							this.PeerVideoUser = this.PeerVideoUser.filter((x) => x !== res.uid);
-							break;
-
-						case "onFirstLocalAudioFrame": //已发送本地音频首帧的回调。(页面上添加音频)
-							break;
-						case "onFirstLocalVideoFrame": //已显示本地视频首帧的回调。(页面添加本地视频)
-							// this.promptFn("error", "已显示本地视频首帧的回调");
-							break;
-						case "onFirstRemoteVideoDecoded": //已完成远端视频首帧解码回调。(页面添加远端视频)
-							// this.promptFn("info", "已完成远端视频首帧解码回调");
-							this.promptText = "请稍等。。。"
-							let uid = []
-							uid.push(res.uid)
-							setTimeout(() => {
-								this.promptText = "";
-								// this.videoShowBg = false; //设置背景开关
-								setTimeout(() => {
-									uid.map(item => {
-										this.$refs[`popup${item}`][0].setupRemoteVideo({
-											"renderMode": 1,
-											"channelId": this.chanel,
-											"uid": item,
-											"mirrorMode": 0
-										}, (res) => {})
-										//预览
-										RtcModule.startPreview((res) => {});
-									})
-								}, 500)
-
-							}, 2000)
-							break;
-					}
-
-				})
-			},
-			//提示
-			promptFn(type, content) {
-				this.popupType = type;
-				this.popupMessage = content;
-				this.$refs.popup.open()
-			},
-			//支持自定义字符长度和特征字符集合
-			randomFn(len, charSet) {
-				charSet = charSet || 'abcdefghijklmnopqrstuvwxyz0123456789';
-				let randomString = '';
-				for (let i = 0; i < len; i++) {
-					let randomPoz = Math.floor(Math.random() * charSet.length);
-					randomString += charSet.substring(randomPoz, randomPoz + 1);
-				}
-				return randomString;
-			},
-			// 离开清空
-			async closeAll() {
-				// 销毁实例
-				await RtcModule.destroyRtc((res) => {});
-				this.videoShow = false; //视频展示
-				// this.videoShowBg = true; //背景展示
-				this.promptText = "loading...";
-
-				this.PeerVideoUser = []; //远端用户加入存储
-				// 本地
-				this.audioSwitch = "open"; //音频开关 
-				this.vedioSwitch = "open"; //视频开关
-				// 重新创建实例
-				await this.init();
-				// 如果需要跳转其它页面请按下边步骤
-				// await uni.redirectTo({
-				// 	url: '..',
-				// 	success: () => {
-				// 		RtcModule.destroyRtc((res) => {
-				// 			console.log("页面销毁", res.code);
-				// 		});
-				// 	}
-				// });
-
-			},
-			//查看授权
-			async requestAndroidPermission(permisionID, type) {
-				let result = 0;
-				let strStatus = "";
-				type == 'ios' ? result = await permision.judgeIosPermission(permisionID) : result = await permision
-					.requestAndroidPermission(
-						permisionID);
-				if (result == 1) {
-					strStatus = "已获得授权"
-				} else if (result == 0) {
-					strStatus = "未获得授权"
-				} else {
-					strStatus = "被永久拒绝权限"
-				}
-			},
-
-		},
-		destroyed() {
-			console.log('this.closeAll();');
-			this.closeAll();
-			uni.hideLoading();
-		}
-
-	}
-</script>
-
-<style lang="scss" scoped>
-	$butFixedButtom: 2rem;
-
-	.content {
-		width: 100%;
-		// height: 100%;
-		height: 100vh;
-		
-
-		/* 等待时候样式   Main */
-		.index {
-			width: 100%;
-			height: 100%;
-			background-color: #0A1621;
-
-			.Mains {
-				width: 100%;
-				height: 100%;
-				box-sizing: border-box;
-				// border: 1px solid #fff;
-				display: flex;
-				align-items: center;
-				justify-content: center;
-
-				// bottom: 0;
-				.title {
-					color: #fff;
-				}
-
-				.open {
-					// border: 1px solid #fff;
-					position: fixed;
-					bottom: $butFixedButtom;
-					width: 100%;
-					left: 0;
-					height: 4.3rem;
-					display: flex;
-					align-items: center;
-					justify-content: center;
-					flex-direction: column;
-					z-index: 10;
-
-					.video_bg_img {
-						width: 2.1rem;
-						height: 2rem;
-					}
-
-					.open_text {
-						padding: 5px 0 0;
-						text-align: center;
-						display: block;
-						// border: 1px solid #fff;
-						color: #fff;
-					}
-				}
-			}
-
-			.Receiver {
-				// position: absolute;
-				width: 100%;
-				height: 100vh;
-				// position: fixed;
-				// bottom: 2rem;
-				box-sizing: border-box;
-				// border: 1px solid #fff;
-				display: flex;
-				align-items: center;
-				justify-content: center;
-
-				// bottom: 0;
-				.title {
-					color: #fff;
-				}
-
-				.Receiver-but {
-					width: 100%;
-					position: fixed;
-					bottom: $butFixedButtom;
-					left: 0;
-					display: flex;
-					align-items: center;
-					justify-content: space-around;
-
-					.open {
-						// border: 1px solid #fff;
-						// position: fixed;
-						// bottom: 3rem;
-						// width: 100%;
-						height: 4.3rem;
-						display: flex;
-						align-items: center;
-						justify-content: center;
-						flex-direction: column;
-						z-index: 10;
-
-						.video_bg_img {
-							width: 2.1rem;
-							height: 2rem;
-						}
-
-						.open_text {
-							padding: 5px 0 0;
-							text-align: center;
-							display: block;
-							// border: 1px solid #fff;
-							color: #fff;
-						}
-					}
-				}
-			}
-		}
-
-		/*视频样式*/
-		.vedio-vedioWatch {
-			width: 100%;
-			height: 100vh;
-
-			/*视频主体样式*/
-			.video_region {
-				z-index: 8;
-				width: 100%;
-				height: 100vh;
-				border: 1px solid red;
-			}
-
-			// 一个视频  自己的
-			.video_region_padding {
-				z-index: 8;
-				width: 100%;
-				height: 30vh;
-				border: 3px solid green;
-			}
-
-			//接通视频  2人
-			.video_local {
-				z-index: 8;
-				width: 100%;
-				height: 30vh;
-				position: relative;
-				top: 30vh;
-				background-color: transparent;
-				border: 3px solid yellow;
-			}
-			
-			/* 视频区域 */
-			// .video_region {
-			// 	flex: 1;
-			// 	/* position: absolute; */
-			// 	flex-wrap: wrap;
-			// 	flex-direction: row;
-			// 	background-color: transparent;
-			// }
-			
-			// /* 1个视频 */
-			// .video_local {
-			// 	width: 750rpx;
-			// 	height: 1334rpx;
-			// 	background-color: transparent;
-			// }
-			
-			// .video_region_padding {
-			// 	margin-top: 20px;
-			// 	padding: 200rpx 0 260rpx;
-			// 	width: 750rpx;
-			// 	height: 840rpx;
-			// }
-			
-			// /* 4个视频 */
-			// .video_local_1 {
-			// 	width: 375rpx;
-			// 	height: 420rpx;
-			// }
-			
-			// /* 9个视频 */
-			// .video_local_2 {
-			// 	width: 250rpx;
-			// 	height: 280rpx;
-			// }
-			
-			// /* 16个视频 */
-			// .video_local_3 {
-			// 	width: 187.5rpx;
-			// 	height: 210rpx;
-			// }
-
-			/* 转换摄像头 */
-			.camera {
-				width: 2.1rem;
-				height: 2rem;
-				position: fixed;
-				left: 20px;
-				top: 60px;
-
-				.video_bg_img {
-					width: 2.1rem;
-					height: 2rem;
-				}
-
-				z-index: 10;
-			}
-
-
-			/*视频按钮样式*/
-			.vider-but {
-				width: 100%;
-				display: flex;
-				align-items: center;
-				justify-content: space-around;
-				position: fixed;
-				bottom: $butFixedButtom;
-
-				.open {
-					height: 4.3rem;
-					display: flex;
-					align-items: center;
-					justify-content: center;
-					flex-direction: column;
-					z-index: 10;
-
-					.video_bg_img {
-						width: 2.1rem;
-						height: 2rem;
-					}
-
-					.open_text {
-						padding: 5px 0 0;
-						text-align: center;
-						display: block;
-						// border: 1px solid #fff;
-						color: #fff;
-					}
-				}
-			}
-		}
-
-	}
-</style>
diff --git a/pages/videoCall/videoCall - f.vue b/pages/videoCall/videoCall - f.vue
deleted file mode 100644
index 8b6e50e..0000000
--- a/pages/videoCall/videoCall - f.vue
+++ /dev/null
@@ -1,749 +0,0 @@
-<template>
-	<view class="content">
-		<!-- 加入频道 -->
-		<view class="index" v-if="!videoShow">
-			<!-- 输入频道 -->
-			<!-- <view class="chanel">
-				<input class="uni-input activetext" v-model="channel" focus placeholder="请输入频道号" />
-			</view>
-
-			<view class="setrole">
-
-				<button type="default" :class="role == 1? 'active': 'button'" @click="setClientRole(1)"><text class="text button_text"
-					 :class="role == 1? 'activetext': ''">我是主播</text></button>
-
-				<button type="default" :class="role == 2? 'active': 'button'" @click="setClientRole(2)"><text class="text" :class="role == 2? 'activetext': ''">我是游客</text></button>
-			</view>
-
-			<view class="join">
-				<button type="primary" class="button jion_bg" @click="join"><text class="activetext">加入频道</text></button>
-			</view> -->
-			<view class="Mains" v-if="isMain">
-				<view class="title">
-					正在呼叫{{MainName}}
-					<u-loading size="36" mode="flower"></u-loading>
-				</view>
-
-				<!-- 挂断 -->
-				<view class="open" @click="phoneFnMain">
-					<image class="video_bg_img" src="../../static/over.png" mode=""></image>
-					<text class="open_text">取消呼叫</text>
-
-				</view>
-			</view>
-			<view class="Receiver" v-if="!isMain">
-				<!-- <u-button class="ccbut" type="primary" @click="join('Receiver')">确认进入{{channel}}号房间</u-button> -->
-				<!-- <u-button class="ccbut" type="primary" @click="comeBack">拒绝进入</u-button> -->
-				<view class="open" @click="join('Receiver')">
-					<image class="video_bg_img" src="../../static/phone.png" mode=""></image>
-					<text class="open_text">接受</text>
-
-				</view>
-				<view class="open" @click="comeBack">
-					<image class="video_bg_img" src="../../static/over.png" mode=""></image>
-					<text class="open_text">挂断</text>
-
-				</view>
-			</view>
-		</view>
-
-		<!-- 视频 -->
-		<view class="vedio vedioWatch" v-else>
-
-			<view class="video_bg">
-				<image class="video_bg_img" src="../../static/BG.png" mode=""></image>
-				<!-- <text class="activetext" v-if="videoShowBg"></text> -->
-				<!-- 	<view class="video_bg video_bg_text">
-			
-					<text class="activetext">{{promptText}}</text>
-				</view> -->
-			</view>
-
-			<view class="video_region" :class="PeerVideoUser.length > 1 ? 'video_region_padding' : ''">
-				<!-- 渲染视频 -->
-				<view v-for="peervideo in PeerVideoUser" :key="peervideo">
-					<view :class="PeerVideoUserStyle" v-if="peervideo == uid && role == 2 ? false : true">
-						<AR-CanvasView :ref="`popup${peervideo}`" style="flex: 1;"></AR-CanvasView>
-					</view>
-
-				</view>
-			</view>
-
-			<!-- 转换摄像头 -->
-			<view class="camera position" @click="cameraSwitchFn" v-if="role == 1">
-				<image class="video_bg_img" src="../../static/camera.png" mode=""></image>
-
-			</view>
-			<!-- 音视频基本开关 -->
-			<view class="videoshow_control position">
-				<!-- 音频开关 -->
-				<view class="open" @click="audioSwitchFn" v-if="role == 1">
-					<image class="video_bg_img" src="../../static/au_in.png" mode="" v-if="audioSwitch == 'open'">
-					</image>
-					<image class="video_bg_img" src="../../static/au_on.png" mode="" v-else></image>
-					<text class="open_text">音频</text>
-				</view>
-
-				<!-- 挂断 -->
-				<view class="open" @click="phoneFn">
-					<image class="video_bg_img" src="../../static/over.png" mode=""></image>
-					<text class="open_text">挂断</text>
-
-				</view>
-
-				<!-- 视频开关 -->
-				<view class="open" @click="vedioSwitchFn" v-if="role == 1">
-					<image class="video_bg_img" src="../../static/vi_on.png" mode="" v-if="vedioSwitch == 'open'">
-					</image>
-					<image class="video_bg_img" src="../../static/vi_in.png" mode="" v-else></image>
-					<text class="open_text">视频</text>
-				</view>
-
-				<!-- 	<scroll-view scroll-y="true" style="height: 500px;padding: 20px;">
-					<view v-for="(item,value) in closeArray" :key='item+value'>{{item}}</view>
-				</scroll-view> -->
-			</view>
-			<!-- 提示文字 -->
-			<view class="video_bg video_bg_text" v-if="promptText">
-				<!-- <view class="video_bg video_bg_text"> -->
-				<text class="activetext">{{promptText}}</text>
-				<!-- </view> -->
-			</view>
-		</view>
-		<uni-popup ref="popup" type="center">
-			<uni-popup-message :type="popupType" :message="popupMessage" :duration="2000"></uni-popup-message>
-		</uni-popup>
-	</view>
-
-
-</template>
-
-<script>
-	const RtcModule = uni.requireNativePlugin('AR-RtcModule');
-	import uniPopup from '@/components/uni-popup/uni-popup.vue'
-	import uniPopupMessage from '@/components/uni-popup-message/uni-popup-message.vue'
-	import uniPopupDialog from '@/components/uni-popup-dialog/uni-popup-dialog.vue'
-	import permision from "@/js_sdk/wa-permission/permission.js"
-	export default {
-		components: {
-			uniPopup,
-			uniPopupMessage,
-			uniPopupDialog
-		},
-		data() {
-			return {
-				//anyRTC 为 App 开发者签发的 App ID。每个项目都应该有一个独一无二的 App ID。如果你的开发包里没有 App ID,请从anyRTC官网(https://www.anyrtc.io)申请一个新的 App ID
-				appid: "d5a164cd8e0a8352ee108c561ba2e44e",
-				channel: "",
-				uid: "",
-				role: 1, //角色 主播-游客
-
-				videoShow: false, //视频展示
-				// videoShowBg: true, //背景展示
-				promptText: "loading...",
-
-				PeerVideoUser: [{
-					a: 1
-				}, {
-					a: 2
-				}, {
-					a: 3
-				}], //用户视频加入存储
-				PeerVideoUserStyle: "video_local", //用户视频加入样式
-
-				// 本地
-				audioSwitch: "open", //音频开关 
-				vedioSwitch: "open", //视频开关
-
-				videoWidth: 0,
-				videoHeight: 0,
-				//提示
-				popupType: "",
-				popupMessage: "",
-
-				isMain: false,
-				MainName: '222',
-				userName: '111'
-
-				// closeArray: []
-			}
-		},
-		// 页面初始加载(仅执行一次)
-		onReady() {
-			// 初始化
-			this.channel = 2554;
-			this.init();
-		},
-		onLoad(option) {
-			console.log(option.state);
-			if (option.state == "Mains") {
-				this.isMain = true;
-				setTimeout(res => {
-					this.join();
-				}, 2000)
-			} else if (option.state == "Receiver") {
-				this.isMain = false;
-			}
-		},
-
-		watch: {
-			PeerVideoUser: function(newName) {
-				if (this.role == 2) {
-					newName = newName.filter((x) => x !== this.uid);
-				}
-				// video_local
-				if (newName.length == 1) {
-					this.PeerVideoUserStyle = "video_local"
-				} else if (newName.length > 1 && newName.length < 5) {
-					this.PeerVideoUserStyle = "video_local_1"
-				} else if (newName.length > 4 && newName.length < 10) {
-					this.PeerVideoUserStyle = "video_local_2"
-				} else if (newName.length > 9 && newName.length < 17) {
-					this.PeerVideoUserStyle = "video_local_3"
-				} else if (newName.length == 0) {
-					this.role == 2 ? this.promptText = "暂无主播播放视频" : this.promptText = "loading..."
-				}
-			}
-		},
-		methods: {
-			// 初始化
-			async init() {
-				// 查看权限
-				if (uni.getSystemInfoSync().platform == 'ios') {
-					//查看相机权限
-					await this.requestAndroidPermission("camera", 'ios');
-					//查看录音权限
-					await this.requestAndroidPermission("record", 'ios');
-
-				} else if (uni.getSystemInfoSync().platform === 'android') {
-					//查看相机权限
-					await this.requestAndroidPermission("android.permission.CAMERA", 'android');
-					//查看录音权限
-					await this.requestAndroidPermission("android.permission.RECORD_AUDIO", 'android');
-				}
-				// 初始化 setCallBack
-				await this.callbackFn();
-				// 初始化 create
-
-				await RtcModule.create({
-					"appId": this.appid
-				}, (res) => {
-
-				});
-				this.uid = this.randomFn(6);
-			},
-			//设置角色
-			setClientRole(num) {
-				this.role = num;
-				//设置直播场景下的用户角色
-				RtcModule.setClientRole({
-					"role": num
-				}, (ret) => {});
-			},
-
-
-			//加入频道 跳转到视频
-			async join(val) {
-				var that = this;
-				// if (val == "Mains") { //视频发起人进入
-				console.log('视频发起人进入');
-				uni.showLoading({
-					title: '加载中',
-					mask: true
-				});
-				//加入房间
-				await RtcModule.joinChannel({
-					"token": "",
-					"channelId": this.channel,
-					"uid": this.uid
-				}, (res) => {
-					console.log(res, 'join break');
-					console.log('成功进入房间:' + that.channel);
-				})
-				// } else if (val == 'Receiver') { //视频接收人进入
-				// 	console.log('视频接收人进入');
-				// 	uni.showLoading({
-				// 		title: '加载中',
-				// 		mask: true
-				// 	});
-				// 	//加入房间
-				// 	await RtcModule.joinChannel({
-				// 		"token": "",
-				// 		"channelId": this.channel,
-				// 		"uid": this.uid
-				// 	}, (res) => {
-				// 		console.log(res, 'join break');
-				// 		console.log('成功进入房间:' + that.channel);
-				// 	})
-				// }
-
-			},
-			// 等待时候挂断
-			phoneFnMain() {
-				// RtcModule.leaveChannel((res) => {});
-				console.log("等待时候挂断");
-				uni.navigateBack();
-				this.closeAll();
-			},
-			//拒绝进入视频
-			comeBack() {
-				console.log("拒绝进入视频");
-				uni.navigateBack();
-				this.closeAll();
-			},
-
-			// 挂断 离开
-			phoneFn() {
-				//离开频道
-				RtcModule.leaveChannel((res) => {});
-				this.closeAll();
-			},
-
-			//添加本地视频到页面
-			setupLocalVideoFn() {
-				//视频 
-				RtcModule.enableVideo((res) => {});
-				this.$refs[`popup${this.uid}`][0].setupLocalVideo({
-					"renderMode": 1,
-					"channelId": this.channel,
-					"uid": this.uid,
-					"mirrorMode": 0
-				}, (res) => {});
-				// 本地预览
-				RtcModule.startPreview((res) => {});
-			},
-
-			// 视频
-			vedioSwitchFn() {
-				let open = true;
-
-				if (this.vedioSwitch == "open") {
-					this.vedioSwitch = "colse";
-					open = false;
-				} else {
-					this.vedioSwitch = "open";
-					open = true;
-				}
-				RtcModule.enableLocalVideo({
-					"enabled": open
-				}, (res) => {
-					if (res.code == 0) {
-						open == false ? this.promptFn("warn", "关闭本地视频采集") : this.promptFn("info", "开启本地视频采集");
-					}
-				});
-			},
-			// 音频
-			audioSwitchFn() {
-				let open = true;
-				if (this.audioSwitch == "open") {
-					this.audioSwitch = "colse";
-					open = false;
-				} else {
-					this.audioSwitch = "open";
-					open = true;
-				}
-
-				RtcModule.enableLocalAudio({
-					"enabled": open
-				}, (res) => {
-					if (res.code == 0) {
-						open == false ? this.promptFn("warn", "关闭本地音频采集") : this.promptFn("info", "开启本地音频采集");
-					}
-				});
-			},
-			//转化摄像头
-			cameraSwitchFn() {
-				RtcModule.switchCamera((res) => {
-					res.code == 0 ? this.promptFn("success", "切换摄像头成功") : this.promptFn("error", "切换摄像头失败");
-				})
-			},
-
-			//callback 接收
-			callbackFn() {
-				RtcModule.setCallBack((res) => {
-					switch (res.engineEvent) {
-						case "onWarning":
-							this.promptFn("warn", res.warningCode);
-							break;
-						case "onError":
-							res.errorCode != 18 ? this.promptFn("error", res.errorCode) : '';
-							break;
-						case "onJoinChannelSuccess": //用户加入成功
-							uni.hideLoading();
-							this.role == 1 ? this.PeerVideoUser.push(res.uid) : "";
-							this.videoShow = true;
-							setTimeout(() => {
-								// this.videoShowBg = false;
-								this.promptText = ""
-								//扬声器
-								RtcModule.setEnableSpeakerphone({
-									"enabled": true
-								}, (res) => {})
-								setTimeout(() => {
-									// 启用视频模块。
-									this.role == 1 ? this.setupLocalVideoFn() : RtcModule
-										.enableVideo((res) => {});
-								}, 200)
-							}, 2000)
-							break;
-						case "onLeaveChannel": //离开频道回调
-							setTimeout(() => {
-								this.closeAll()
-							}, 500)
-							break;
-						case "onUserJoined": //远端用户加入当前频道回调。
-							// this.promptFn("info", "远端用户加入当前频道回调");
-							this.PeerVideoUser.push(res.uid);
-							break;
-						case "onUserOffline": //远端用户离开当前频道回调。
-							this.PeerVideoUser = this.PeerVideoUser.filter((x) => x !== res.uid);
-							break;
-
-						case "onFirstLocalAudioFrame": //已发送本地音频首帧的回调。(页面上添加音频)
-							break;
-						case "onFirstLocalVideoFrame": //已显示本地视频首帧的回调。(页面添加本地视频)
-							// this.promptFn("error", "已显示本地视频首帧的回调");
-							break;
-						case "onFirstRemoteVideoDecoded": //已完成远端视频首帧解码回调。(页面添加远端视频)
-							// this.promptFn("info", "已完成远端视频首帧解码回调");
-							this.promptText = "请稍等。。。"
-							let uid = []
-							uid.push(res.uid)
-							setTimeout(() => {
-								this.promptText = "";
-								// this.videoShowBg = false; //设置背景开关
-								setTimeout(() => {
-									uid.map(item => {
-										this.$refs[`popup${item}`][0].setupRemoteVideo({
-											"renderMode": 1,
-											"channelId": this.chanel,
-											"uid": item,
-											"mirrorMode": 0
-										}, (res) => {})
-										//预览
-										RtcModule.startPreview((res) => {});
-									})
-								}, 500)
-
-							}, 2000)
-							break;
-					}
-
-				})
-			},
-			//提示
-			promptFn(type, content) {
-				this.popupType = type;
-				this.popupMessage = content;
-				this.$refs.popup.open()
-			},
-			//支持自定义字符长度和特征字符集合
-			randomFn(len, charSet) {
-				charSet = charSet || 'abcdefghijklmnopqrstuvwxyz0123456789';
-				let randomString = '';
-				for (let i = 0; i < len; i++) {
-					let randomPoz = Math.floor(Math.random() * charSet.length);
-					randomString += charSet.substring(randomPoz, randomPoz + 1);
-				}
-				return randomString;
-			},
-			// 离开清空
-			async closeAll() {
-				// 销毁实例
-				await RtcModule.destroyRtc((res) => {});
-				this.videoShow = false; //视频展示
-				// this.videoShowBg = true; //背景展示
-				this.promptText = "loading...";
-
-				this.PeerVideoUser = []; //远端用户加入存储
-				// 本地
-				this.audioSwitch = "open"; //音频开关 
-				this.vedioSwitch = "open"; //视频开关
-				// 重新创建实例
-				await this.init();
-				// 如果需要跳转其它页面请按下边步骤
-				// await uni.redirectTo({
-				// 	url: '..',
-				// 	success: () => {
-				// 		RtcModule.destroyRtc((res) => {
-				// 			console.log("页面销毁", res.code);
-				// 		});
-				// 	}
-				// });
-
-			},
-			//查看授权
-			async requestAndroidPermission(permisionID, type) {
-				let result = 0;
-				let strStatus = "";
-				type == 'ios' ? result = await permision.judgeIosPermission(permisionID) : result = await permision
-					.requestAndroidPermission(
-						permisionID);
-				if (result == 1) {
-					strStatus = "已获得授权"
-				} else if (result == 0) {
-					strStatus = "未获得授权"
-				} else {
-					strStatus = "被永久拒绝权限"
-				}
-			},
-
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	.content {
-		flex: 1;
-		height: 100%;
-		overflow: hidden;
-	}
-
-	/* 加入频道 */
-	.index {
-		flex: 1;
-		background-color: #0A1621;
-		height: 100%;
-	}
-
-	/* 等待时候样式   Main */
-
-	.Mains {
-		// position: absolute;
-		// width: 100%;
-		// height: 5rem;
-		width: 100%;
-		height: 100%;
-		box-sizing: border-box;
-		// border: 1px solid #fff;
-		display: flex;
-		align-items: center;
-		justify-content: center;
-
-		// bottom: 0;
-		.title {
-			color: #fff;
-		}
-
-		.open {
-			// border: 1px solid #fff;
-			position: fixed;
-			bottom: 3rem;
-			width: 100%;
-			height: 4.3rem;
-			display: flex;
-			align-items: center;
-			justify-content: center;
-			flex-direction: column;
-
-			.video_bg_img {
-				width: 3rem;
-				height: 2rem;
-			}
-
-			.open_text {
-				padding: 5px 0 0;
-				text-align: center;
-				display: block;
-				// border: 1px solid #fff;
-				color: #fff;
-			}
-		}
-	}
-
-	.Receiver {
-		// position: absolute;
-		// width: 100%;
-		// height: 5rem;
-		width: 100%;
-		height: 100%;
-		box-sizing: border-box;
-		// border: 1px solid #fff;
-		display: flex;
-		align-items: center;
-		justify-content: center;
-
-		// bottom: 0;
-		.title {
-			color: #fff;
-		}
-
-		.open {
-			// border: 1px solid #fff;
-			position: relative;
-			top: 12rem;
-			width: 100%;
-			height: 4.3rem;
-			display: flex;
-			align-items: center;
-			justify-content: center;
-			flex-direction: column;
-
-			.video_bg_img {
-				width: 3rem;
-				height: 2rem;
-			}
-
-			.open_text {
-				padding: 5px 0 0;
-				text-align: center;
-				display: block;
-				// border: 1px solid #fff;
-				color: #fff;
-			}
-		}
-	}
-
-
-	.text {
-		color: #B4B5BE;
-	}
-
-
-
-	.activetext {
-		color: #fff;
-	}
-
-	.active {
-		padding: 10px 70rpx;
-		border-radius: 6px;
-		border-width: 2px;
-		border-color: #40a3fb;
-		background-color: #0A1621;
-	}
-
-
-	/* 视频 */
-	.vedioWatch {
-		flex: 1;
-		position: relative;
-		width: 100%;
-		height: 100vh;
-		background-color: #0A1621;
-
-
-	}
-
-	/* 初始背景 */
-	.video_bg {
-		flex: 1;
-		position: absolute;
-		top: 0;
-		left: 0;
-		right: 0;
-		bottom: 0;
-		background-color: transparent;
-	}
-
-	.video_bg_img {
-		flex: 1;
-		width: 100%;
-	}
-
-	.video_bg_text {
-		justify-content: center;
-		align-items: center;	
-	}
-
-	/* 转换摄像头 */
-	.camera {
-		width: 44px;
-		height: 37px;
-		/* position: absolute; */
-		left: 20px;
-		top: 40px;
-	}
-
-	/* 视频区域 */
-	.video_region {
-		flex: 1;
-		/* position: absolute; */
-		flex-wrap: wrap;
-		flex-direction: row;
-		background-color: transparent;
-	}
-	
-	/* 1个视频 */
-	.video_local {
-		width: 750rpx;
-		height: 1334rpx;
-		background-color: transparent;
-	}
-	
-	.video_region_padding {
-		margin-top: 20px;
-		padding: 200rpx 0 260rpx;
-		width: 750rpx;
-		height: 840rpx;
-	}
-	
-	/* 4个视频 */
-	.video_local_1 {
-		width: 375rpx;
-		height: 420rpx;
-	}
-
-	/* 9个视频 */
-	.video_local_2 {
-		width: 250rpx;
-		height: 280rpx;
-	}
-
-	/* 16个视频 */
-	.video_local_3 {
-		width: 187.5rpx;
-		height: 210rpx;
-	}
-
-	/* 音视频基本开关 */
-	.videoshow_control {
-		position: absolute;
-		bottom: 3rem;
-		left: 0;
-		width: 750rpx;
-		/* background-color: #007AFF; */
-		/* height: 250rpx; */
-		padding: 20px;
-		background-color: transparent;
-		color: #fff;
-		display: flex;
-		flex-direction: row;
-		justify-content: space-around;
-
-		image {
-			width: 3rem;
-		}
-
-		.open {
-			display: flex;
-			align-items: center;
-			justify-content: center;
-			flex-direction: column;
-			height: 4.3rem;
-		}
-	}
-
-	.camera {
-		image {
-			width: 2rem;
-			height: 2rem;
-		}
-	}
-
-	.open {
-		height: 205rpx;
-		width: 128rpx;
-		justify-content: center;
-	}
-
-	.open_text {
-		padding: 5px 0 0;
-		text-align: center;
-		color: #fff;
-	}
-
-	.position {
-		position: absolute;
-	}
-</style>
diff --git a/pages/videoCall/videoCall.nvue b/pages/videoCall/videoCall.nvue
deleted file mode 100644
index 142a707..0000000
--- a/pages/videoCall/videoCall.nvue
+++ /dev/null
@@ -1,1044 +0,0 @@
-<template>
-	<view class="content">
-		<!-- 加入频道 -->
-		<view class="index" v-if="!videoShow">
-			<view class="Mains" v-if="isMain">
-				<view class="Mains-t">
-					<text class="activetext">正在呼叫{{callname}}</text>
-					<u-loading size="36" mode="flower"></u-loading>
-				</view>
-				<!-- 挂断 -->
-				<view class="i-open" @click="phoneFnMain">
-					<image class="i-video_bg_img" src="../../static/over.png" mode=""></image>
-					<text class="open_text">取消呼叫</text>
-				</view>
-			</view>
-			<view class="Receiver" v-if="!isMain">
-				<view class="Mains-t">
-					<text class="activetext">是否接收来自{{callname}}的{{Otype == 'video'? '视频': '音频'}}邀请</text>
-					<!-- <text class="activetext">接受进入{{channel}}</text> -->
-					<u-loading size="36" mode="flower"></u-loading>
-				</view>
-				<view class="i-control">
-					<view class="i-c-open" @click="joinit">
-						<image class="i-video_bg_img" src="../../static/phone.png" mode=""></image>
-						<text class="open_text">接受</text>
-
-					</view>
-					<view class="i-c-open" @click="comeBack">
-						<image class="i-video_bg_img" src="../../static/over.png" mode=""></image>
-						<text class="open_text">挂断</text>
-
-					</view>
-				</view>
-			</view>
-		</view>
-
-		<!-- 视频 -->
-		<view class="vedioWatch" v-if="videoShow && Otype == 'video'">
-
-			<view class="video_bg">
-				<image class="video_bg_img" src="../../static/BG.png" mode=""></image>
-				<!-- <text class="activetext" v-if="videoShowBg"></text> -->
-				<!-- 	<view class="video_bg video_bg_text">
-			
-					<text class="activetext">{{promptText}}</text>
-				</view> -->
-			</view>
-
-			<view class="video_region">
-				<!-- 渲染视频 -->
-				<view v-for="(peervideo,index) in PeerVideoUser" :key="peervideo">
-					<view :class="PeerVideoUserStyle[index]" v-if="peervideo == uid && role == 2 ? false : true">
-						<AR-CanvasView :ref="`popup${peervideo}`" style="flex: 1;"></AR-CanvasView>
-					</view>
-
-				</view>
-
-				<!-- {{PeerVideoUser}} -->
-			</view>
-
-			<!-- 转换摄像头 -->
-			<view class="camera position" @click="cameraSwitchFn" v-if="role == 1">
-				<image class="video_bg_img" src="../../static/camera.png" mode=""></image>
-
-			</view>
-			<!-- 音视频基本开关 -->
-			<view class="videoshow_control position">
-				<!-- 音频开关 -->
-				<view class="open" @click="audioSwitchFn" v-if="role == 1">
-					<image class="video_bg_img" src="../../static/au_in.png" mode="" v-if="audioSwitch == 'open'">
-					</image>
-					<image class="video_bg_img" src="../../static/au_on.png" mode="" v-else></image>
-					<text class="open_text">音频</text>
-				</view>
-
-				<!-- 挂断 -->
-				<view class="open" @click="phoneFn">
-					<image class="video_bg_img" src="../../static/over.png" mode=""></image>
-					<text class="open_text">挂断</text>
-
-				</view>
-
-				<!-- 视频开关 -->
-				<view class="open" @click="vedioSwitchFn" v-if="role == 1">
-					<image class="video_bg_img" src="../../static/vi_on.png" mode="" v-if="vedioSwitch == 'open'">
-					</image>
-					<image class="video_bg_img" src="../../static/vi_in.png" mode="" v-else></image>
-					<text class="open_text">视频</text>
-				</view>
-
-				<!-- 	<scroll-view scroll-y="true" style="height: 500px;padding: 20px;">
-					<view v-for="(item,value) in closeArray" :key='item+value'>{{item}}</view>
-				</scroll-view> -->
-			</view>
-			<!-- 提示文字 -->
-			<view class="video_bg video_bg_text" v-if="promptText">
-				<!-- <view class="video_bg video_bg_text"> -->
-				<text class="activetext">{{promptText}}</text>
-				<!-- </view> -->
-			</view>
-		</view>
-
-		<!-- 音频 -->
-		<view class="vedioWatch" v-if="videoShow && Otype == 'audio'">
-			<view class="video_bg">
-				<image class="video_bg_img" src="../../static/BG.png" mode=""></image>
-				<!-- <text class="activetext" v-if="videoShowBg"></text> -->
-				<!-- 	<view class="video_bg video_bg_text">
-			
-					<text class="activetext">{{promptText}}</text>
-				</view> -->
-			</view>
-			<!-- 文字提示 -->
-			<view class="Mains-t">
-				<text class="activetext">语音通话中</text>
-				<u-loading size="36" mode="flower"></u-loading>
-			</view>
-
-
-			<!-- 音视频基本开关 -->
-			<view class="videoshow_control position">
-				<!-- 音频开关 -->
-				<view class="open" @click="audioSwitchFn" v-if="role == 1">
-					<image class="video_bg_img" src="../../static/au_in.png" mode="" v-if="audioSwitch == 'open'">
-					</image>
-					<image class="video_bg_img" src="../../static/au_on.png" mode="" v-else></image>
-					<text class="open_text">音频</text>
-				</view>
-
-				<!-- 挂断 -->
-				<view class="open" @click="phoneFn">
-					<image class="video_bg_img" src="../../static/over.png" mode=""></image>
-					<text class="open_text">挂断</text>
-
-				</view>
-
-				<!-- 视频开关 -->
-				<!-- <view class="open" @click="vedioSwitchFn" v-if="role == 1">
-					<image class="video_bg_img" src="../../static/vi_on.png" mode="" v-if="vedioSwitch == 'open'">
-					</image>
-					<image class="video_bg_img" src="../../static/vi_in.png" mode="" v-else></image>
-					<text class="open_text">视频</text>
-				</view> -->
-
-				<!-- 	<scroll-view scroll-y="true" style="height: 500px;padding: 20px;">
-					<view v-for="(item,value) in closeArray" :key='item+value'>{{item}}</view>
-				</scroll-view> -->
-			</view>
-			<!-- 提示文字 -->
-			<view class="video_bg video_bg_text" v-if="promptText">
-				<!-- <view class="video_bg video_bg_text"> -->
-				<text class="activetext">{{promptText}}</text>
-				<!-- </view> -->
-			</view>
-
-		</view>
-		<uni-popup ref="popup" type="center">
-			<uni-popup-message :type="popupType" :message="popupMessage" :duration="2000"></uni-popup-message>
-		</uni-popup>
-	</view>
-
-
-</template>
-
-<script>
-	const RtcModule = uni.requireNativePlugin('AR-RtcModule');
-	import uniPopup from '@/components/uni-popup/uni-popup.vue'
-	import uniPopupMessage from '@/components/uni-popup-message/uni-popup-message.vue'
-	import uniPopupDialog from '@/components/uni-popup-dialog/uni-popup-dialog.vue'
-	import permision from "@/js_sdk/wa-permission/permission.js"
-	export default {
-		components: {
-			uniPopup,
-			uniPopupMessage,
-			uniPopupDialog
-		},
-		data() {
-			return {
-				appid: "d5a164cd8e0a8352ee108c561ba2e44e",
-				channel: "",
-				uid: "",
-				role: 1, //角色 主播-游客
-
-
-				videoShow: false, //视频展示
-				// videoShowBg: true, //背景展示
-				promptText: "loading...",
-
-				PeerVideoUser: [], //用户视频加入存储
-				PeerVideoUserStyle: [
-					'video_local_call', "video_local"
-				], //用户视频加入样式
-
-				// 本地
-				audioSwitch: "open", //音频开关 
-				vedioSwitch: "open", //视频开关
-
-				videoWidth: 0,
-				videoHeight: 0,
-				//提示
-				popupType: "",
-				popupMessage: "",
-
-
-				isMain: true,
-				userName: '111',
-				toName: '',
-				Otype: '',
-
-				formName: '',
-
-				callname: '',
-
-
-
-				faqiid: '',
-				jieshouid: ''
-
-			}
-		},
-		// 页面初始加载(仅执行一次)
-		onReady() {
-			// 初始化
-			// this.channel = 2554;
-			// this.init();
-		},
-		onLoad(option) {
-
-			var that = this;
-			that.toName = option.toname;
-			that.callname = option.callname;
-			console.log(option)
-			if (option.type) {
-				that.Otype = option.type;
-			} else {
-				return
-			}
-			console.log(option.state);
-			
-		
-
-			if (option.state == "Mains") {
-
-				that.jieshouid = option.toname;
-				that.faqiid = that.$store.state.puserID;
-
-				that.isMain = true;
-				var call = false;
-				this.userName = 'faqiren';
-				this.init();
-				// setTimeout(res => {
-				//发起请求  给后端双方姓名
-
-				//得到返回值   开始视频  或者拒绝视频
-				// console.log(that.$store.state);
-				uni.request({
-					url: that.$store.state.api + '/pushMsg/inviteVideoCall',
-					data: {
-						userId: option.toname,
-						faqiid: that.$store.state.puserID,
-						name: that.$store.state.puserName,
-						type: 'video'
-					},
-					success(res) {
-						// if(res.data.res == 0){
-
-						// }
-						var d = res.data.data;
-						if (d.res == 0) {
-							console.log('对方不在线--退出');
-							uni.showToast({
-								title: '对方不在线',
-								duration: 2000,
-								icon: 'none'
-							});
-							setTimeout(res => {
-								
-								let routes = getCurrentPages();
-								
-								let curRoute = routes[routes.length - 1].route;
-								
-								if(curRoute.indexOf('/videoCall/videoCall') != -1) {
-									
-									uni.navigateBack();
-									
-								}
-								
-							}, 2000)
-
-						} else if (d.res == 1) {
-							that.channel = d.roomId;
-							console.log('对方在线-- 等待对方接受', d);
-							// call = true;
-							setTimeout(res => {
-								// console.log(111)
-								that.join();
-								console.log('成功进入')
-							}, 2000)
-						}
-					}
-				})
-
-
-
-				// }, 5000)
-			} else if (option.state == "Receiver") {
-				that.userName = 'jieshouren';
-				// that.formName = 'wo';
-				that.callname = option.name;
-				that.channel = option.room;
-				that.faqiid = option.faqiid;
-				that.jieshouid = that.$store.state.puserID;
-				that.init();
-				that.isMain = false;
-
-
-
-
-			}
-
-
-
-			uni.onSocketMessage(function(res) {
-				console.log(res.data);
-				var data = JSON.parse(res.data)
-				// if (call && ) {
-
-				// }
-				// console.log(that,1111111111111)
-
-
-				if (data.type == 'close') {
-
-					// await RtcModule.destroyRtc((res) => {});
-					that.videoShow = false; //视频展示
-					// this.videoShowBg = true; //背景展示
-					that.promptText = "loading...";
-
-					that.PeerVideoUser = []; //远端用户加入存储
-					// 本地
-					that.audioSwitch = "open"; //音频开关 
-					that.vedioSwitch = "open"; //视频开关
-
-					RtcModule.leaveChannel((res) => {
-					})
-
-					RtcModule.destroyRtc((res) => {
-					});
-					
-					let routes = getCurrentPages();
-					
-					let curRoute = routes[routes.length - 1].route;
-					
-					if(curRoute.indexOf('/videoCall/videoCall') != -1) {
-						
-						uni.navigateBack();
-						
-					}
-
-				}
-
-			});
-
-
-
-		},
-
-		watch: {
-			PeerVideoUser: function(newName) {
-				if (this.role == 2) {
-					newName = newName.filter((x) => x !== this.uid);
-				}
-
-				if (newName.length == 1) {
-					// this.PeerVideoUserStyle = [
-					// 	'video_local', "video_local_call"
-					// ]
-					this.PeerVideoUserStyle = [
-						'video_local_call', "video_local"
-					]
-				} else if (newName.length == 2) {
-					this.PeerVideoUserStyle = [
-						'video_local_call', "video_local"
-					]
-				}
-
-				// 	// video_local
-				// 	if (newName.length == 1) {
-				// 		this.PeerVideoUserStyle = "video_local"
-				// 	} else if (newName.length > 1 && newName.length < 5) {
-				// 		this.PeerVideoUserStyle = "video_local_1"
-				// 	} else if (newName.length > 4 && newName.length < 10) {
-				// 		this.PeerVideoUserStyle = "video_local_2"
-				// 	} else if (newName.length > 9 && newName.length < 17) {
-				// 		this.PeerVideoUserStyle = "video_local_3"
-				// 	} else if (newName.length == 0) {
-				// 		this.role == 2 ? this.promptText = "暂无主播播放视频" : this.promptText = "loading..."
-				// 	}
-			}
-		},
-		methods: {
-			// 初始化
-			async init() {
-				// 查看权限
-				console.log('开始初始化')
-				this.uid = this.userName;
-				console.log('初始化完成’', this.uid, '当前id码');
-				// uni.showToast({
-				// 	title: this.uid,
-				// 	duration: 2000,
-				// 	// icon: 'none'
-				// });
-				if (uni.getSystemInfoSync().platform == 'ios') {
-					//查看相机权限
-					await this.requestAndroidPermission("camera", 'ios');
-					//查看录音权限
-					await this.requestAndroidPermission("record", 'ios');
-
-				} else if (uni.getSystemInfoSync().platform === 'android') {
-					//查看相机权限
-					await this.requestAndroidPermission("android.permission.CAMERA", 'android');
-					//查看录音权限
-					await this.requestAndroidPermission("android.permission.RECORD_AUDIO", 'android');
-				}
-				// 初始化 setCallBack
-				await this.callbackFn();
-				// 初始化 create
-
-				await RtcModule.create({
-					"appId": this.appid
-				}, (res) => {
-					console.log(res, 11111111111111111111111111111111);
-				});
-				// this.uid = this.randomFn(6);
-
-			},
-			//设置角色
-			setClientRole(num) {
-				this.role = num;
-				//设置直播场景下的用户角色
-				RtcModule.setClientRole({
-					"role": num
-				}, (ret) => {});
-			},
-
-
-			//加入频道 跳转到视频
-			async join(val) {
-				var that = this;
-				// if (val == "Mains") { //视频发起人进入
-				console.log('视频发起人进入');
-				console.log(this.uid, '进入检测uid')
-				// uni.showLoading({
-				// 	title: '加载中',
-				// 	mask: true
-				// });
-				//加入房间
-				console.log('room', this.channel, 'useid', this.uid)
-				await RtcModule.joinChannel({
-					"token": "",
-					"channelId": this.channel,
-					"uid": this.uid
-				}, (res) => {
-					console.log(res, 'join break');
-					console.log('成功进入房间:' + that.channel);
-					that.videoShow = true;
-				})
-				// } else if (val == 'Receiver') { //视频接收人进入
-				// 	console.log('视频接收人进入');
-				// 	uni.showLoading({
-				// 		title: '加载中',
-				// 		mask: true
-				// 	});
-				// 	//加入房间
-				// 	await RtcModule.joinChannel({
-				// 		"token": "",
-				// 		"channelId": this.channel,
-				// 		"uid": this.uid
-				// 	}, (res) => {
-				// 		console.log(res, 'join break');
-				// 		console.log('成功进入房间:' + that.channel);
-				// 	})
-				// }
-
-			},
-			// 等待时候挂断
-			phoneFnMain() {
-
-				var data = {
-					sentId: this.faqiid,
-					acceptId: this.jieshouid
-				}
-
-				uni.request({
-					url: this.$store.state.api + '/pushMsg/closeVideoCall',
-					data: data,
-					success: (res) => {
-
-						this.closeAll();
-
-					}
-				})
-
-			},
-			joinit() { //接受进入视频
-				// 传输接受的值
-
-				// 开始进入视频通话
-				this.join();
-			},
-			//拒绝进入视频
-			comeBack() {
-
-				var data = {
-					sentId: this.faqiid,
-					acceptId: this.jieshouid
-				}
-
-				uni.request({
-					url: this.$store.state.api + '/pushMsg/closeVideoCall',
-					data: data,
-					success: (res) => {
-
-						this.closeAll();
-
-					}
-				})
-
-			},
-
-			// 挂断 离开
-			phoneFn() {
-
-				var data = {
-					sentId: this.faqiid,
-					acceptId: this.jieshouid
-				}
-
-				uni.request({
-					url: this.$store.state.api + '/pushMsg/closeVideoCall',
-					data: data,
-					success: (res) => {
-
-						this.closeAll();
-
-					}
-				})
-
-			},
-
-			//添加本地视频到页面
-			setupLocalVideoFn() {
-				//视频 
-				var that = this;
-				RtcModule.enableVideo((res) => {});
-				this.$refs[`popup${this.uid}`][0].setupLocalVideo({
-					"renderMode": 4,
-					"channelId": this.channel,
-					"uid": this.uid,
-					"mirrorMode": 0
-				}, (res) => {});
-				// 本地预览
-				RtcModule.startPreview((res) => {});
-			},
-
-			// 视频
-			vedioSwitchFn() {
-				let open = true;
-
-				if (this.vedioSwitch == "open") {
-					this.vedioSwitch = "colse";
-					open = false;
-				} else {
-					this.vedioSwitch = "open";
-					open = true;
-				}
-				RtcModule.enableLocalVideo({
-					"enabled": open
-				}, (res) => {
-					if (res.code == 0) {
-						open == false ? this.promptFn("warn", "关闭本地视频采集") : this.promptFn("info", "开启本地视频采集");
-					}
-				});
-			},
-			// 音频
-			audioSwitchFn() {
-				let open = true;
-				if (this.audioSwitch == "open") {
-					this.audioSwitch = "colse";
-					open = false;
-				} else {
-					this.audioSwitch = "open";
-					open = true;
-				}
-
-				RtcModule.enableLocalAudio({
-					"enabled": open
-				}, (res) => {
-					if (res.code == 0) {
-						open == false ? this.promptFn("warn", "关闭本地音频采集") : this.promptFn("info", "开启本地音频采集");
-					}
-				});
-			},
-			//转化摄像头
-			cameraSwitchFn() {
-				RtcModule.switchCamera((res) => {
-					res.code == 0 ? this.promptFn("success", "切换摄像头成功") : this.promptFn("error", "切换摄像头失败");
-				})
-			},
-
-			//callback 接收
-			callbackFn() {
-				RtcModule.setCallBack((res) => {
-					switch (res.engineEvent) {
-						case "onWarning":
-							this.promptFn("warn", res.warningCode);
-							break;
-						case "onError":
-							res.errorCode != 18 ? this.promptFn("error", res.errorCode) : '';
-							break;
-						case "onJoinChannelSuccess": //用户加入成功
-							uni.hideLoading();
-							this.role == 1 ? this.PeerVideoUser.push(res.uid) : "";
-							console.log(res.uid, 'uidsssss')
-							this.videoShow = true;
-							setTimeout(() => {
-								// this.videoShowBg = false;
-								this.promptText = ""
-								//扬声器
-								RtcModule.setEnableSpeakerphone({
-									"enabled": true
-								}, (res) => {})
-								setTimeout(() => {
-									console.log(this.PeerVideoUser, 'this.PeerVideoUser')
-									// 启用视频模块。
-									this.role == 1 ? this.setupLocalVideoFn() : RtcModule
-										.enableVideo((res) => {});
-								}, 200)
-							}, 2000)
-							break;
-						case "onLeaveChannel": //离开频道回调
-							setTimeout(() => {
-								this.closeAll()
-							}, 500)
-							break;
-						case "onUserJoined": //远端用户加入当前频道回调。
-							// this.promptFn("info", "远端用户加入当前频道回调");
-							this.PeerVideoUser.push(res.uid);
-							break;
-						case "onUserOffline": //远端用户离开当前频道回调。
-							this.PeerVideoUser = this.PeerVideoUser.filter((x) => x !== res.uid);
-							break;
-
-						case "onFirstLocalAudioFrame": //已发送本地音频首帧的回调。(页面上添加音频)
-							break;
-						case "onFirstLocalVideoFrame": //已显示本地视频首帧的回调。(页面添加本地视频)
-							// this.promptFn("error", "已显示本地视频首帧的回调");
-							break;
-						case "onFirstRemoteVideoDecoded": //已完成远端视频首帧解码回调。(页面添加远端视频)
-							// this.promptFn("info", "已完成远端视频首帧解码回调");
-							this.promptText = "请稍等。。。"
-							let uid = []
-							uid.push(res.uid)
-							setTimeout(() => {
-								this.promptText = "";
-								// this.videoShowBg = false; //设置背景开关
-								setTimeout(() => {
-									uid.map(item => {
-										this.$refs[`popup${item}`][0].setupRemoteVideo({
-											"renderMode": 1,
-											"channelId": this.chanel,
-											"uid": item,
-											"mirrorMode": 0
-										}, (res) => {})
-										//预览
-										RtcModule.startPreview((res) => {});
-									})
-								}, 500)
-
-							}, 2000)
-							break;
-					}
-
-				})
-			},
-			//提示
-			promptFn(type, content) {
-				this.popupType = type;
-				this.popupMessage = content;
-				this.$refs.popup.open()
-			},
-			//支持自定义字符长度和特征字符集合
-			randomFn(len, charSet) {
-				charSet = charSet || 'abcdefghijklmnopqrstuvwxyz0123456789';
-				let randomString = '';
-				for (let i = 0; i < len; i++) {
-					let randomPoz = Math.floor(Math.random() * charSet.length);
-					randomString += charSet.substring(randomPoz, randomPoz + 1);
-				}
-				// return randomString;
-				return this.userName;
-			},
-			// 离开清空
-			closeAll() {
-				this.videoShow = false; //视频展示
-				// this.videoShowBg = true; //背景展示
-				this.promptText = "loading...";
-
-				this.PeerVideoUser = []; //远端用户加入存储
-				// 本地
-				this.audioSwitch = "open"; //音频开关 
-				this.vedioSwitch = "open"; //视频开关
-				
-
-				RtcModule.leaveChannel((res) => {
-				})
-
-				RtcModule.destroyRtc((res) => {
-					console.log("页面销毁", res.code);
-					console.log('成功关闭')
-				});
-				
-				
-				let routes = getCurrentPages();
-				
-				let curRoute = routes[routes.length - 1].route;
-				
-				if(curRoute.indexOf('/videoCall/videoCall') != -1) {
-					
-					uni.navigateBack();
-					
-				}
-
-			},
-			//查看授权
-			async requestAndroidPermission(permisionID, type) {
-				let result = 0;
-				let strStatus = "";
-				type == 'ios' ? result = await permision.judgeIosPermission(permisionID) : result = await permision
-					.requestAndroidPermission(
-						permisionID);
-				if (result == 1) {
-					strStatus = "已获得授权"
-				} else if (result == 0) {
-					strStatus = "未获得授权"
-				} else {
-					strStatus = "被永久拒绝权限"
-				}
-			},
-
-		},
-		destroyed() {
-			// console.log('this.closeAll();');
-			// this.closeAll();
-			var that = this;
-			uni.hideLoading();
-			// uni.onSocketMessage(function(res) {
-			// 	console.log(res.data);
-			// 	var data = JSON.parse(res.data)
-			// 	// if (call && ) {
-
-			// 	// }
-			// 	if (data.type == 'close') {
-
-			// 		console.log('对方已挂断');
-			// 		// RtcModule.leaveChannel((res) => {});
-			// 		that.closeAll();
-			// 	}
-			// });
-			uni.onSocketMessage(function(res) {
-				console.log(res.data);
-				var data = JSON.parse(res.data)
-				if (data.type == 'video') {
-					// this.receiveVideo('Receiver', );
-					console.log('进入接受 跳转', data.type)
-					uni.navigateTo({
-						url: '../videoCall/videoCall?state=Receiver&type=' + data.type + '&room=' + data
-							.roomId + '&name=' + data.name + '&faqiid=' + data.faqiid
-					});
-				}
-				// console.log('收到服务器内容:' + res.data);
-			});
-		}
-
-	}
-</script>
-
-<style>
-	.content {
-		flex: 1;
-		width: 750rpx;
-
-	}
-
-	/* 加入频道 */
-	.index {
-		flex: 1;
-		background-color: #0A1621;
-		width: 750rpx;
-		height: 1080rpx;
-
-	}
-
-	.Mains {
-		flex: 1;
-		width: 750rpx;
-	}
-
-	.Mains-t {
-		padding-top: 500rpx;
-		flex-direction: row;
-		justify-content: center;
-	}
-
-	.i-open {
-		width: 750rpx;
-		position: fixed;
-		bottom: 20rpx;
-		flex-direction: column;
-		align-items: center;
-		justify-content: center;
-		background-color: transparent;
-	}
-
-	.i-video_bg_img {
-		width: 50rpx;
-		height: 50rpx;
-	}
-
-	/* 是否接受 */
-	.Receiver {
-		flex: 1;
-		width: 750rpx;
-	}
-
-	.i-control {
-		width: 750rpx;
-		bottom: 20rpx;
-		position: fixed;
-		/* bottom: 20px; */
-		/* width: 600px; */
-		flex-direction: row;
-		justify-content: center;
-	}
-
-	.i-c-open {
-		width: 325rpx;
-		flex-direction: column;
-		align-items: center;
-		justify-content: center;
-		/* padding: 350px 150px 0 0; */
-	}
-
-
-	.chanel {
-		padding: 120px 70px 40px;
-	}
-
-	.uni-input {
-		height: 120rpx;
-		padding: 0 20px;
-		background-color: #2F3041;
-		border-radius: 6px;
-	}
-
-	.setrole {
-		padding: 60px 20px;
-		flex-direction: row;
-		justify-content: space-between;
-	}
-
-	.button {
-		padding: 10px 70rpx;
-		background-color: #2F3041;
-		border-radius: 6px;
-		border-width: 2px;
-		border-color: #2f3041;
-	}
-
-	.text {
-		color: #B4B5BE;
-	}
-
-
-
-	.activetext {
-		color: #fff;
-	}
-
-	.active {
-		padding: 10px 70rpx;
-		border-radius: 6px;
-		border-width: 2px;
-		border-color: #40a3fb;
-		background-color: #0A1621;
-	}
-
-	.join {
-		padding: 20px;
-	}
-
-	.jion_bg {
-		background-color: #40A3FB;
-		border-width: 0;
-	}
-
-
-	/* 视频 */
-	.vedioWatch {
-		flex: 1;
-		position: relative;
-		width: 750rpx;
-		height: 1080rpx;
-	}
-
-	/* 初始背景 */
-	.video_bg {
-		flex: 1;
-		position: absolute;
-		top: 0;
-		left: 0;
-		right: 0;
-		bottom: 0;
-		background-color: transparent;
-	}
-
-	.video_bg_img {
-		flex: 1;
-	}
-
-	.video_bg_text {
-		justify-content: center;
-		align-items: center;
-	}
-
-	/* 转换摄像头 */
-	.camera {
-		width: 44px;
-		height: 37px;
-		/* position: absolute; */
-		left: 20px;
-		top: 40px;
-		z-index: 10;
-	}
-
-	/* 视频区域 */
-
-	.video_region {
-		/* position: fixed;
-		top: 0;
-		left: 0; */
-		flex: 1;
-		/* position: absolute; */
-		/* width: 750rpx;
-		height: 1334rpx; */
-		/* border: 1px solid red; */
-		flex-wrap: wrap;
-		flex-direction: row;
-		background-color: transparent;
-	}
-
-	/* 1个视频 */
-	.video_local {
-		flex: 1;
-		width: 750rpx;
-		height: 1344rpx;
-		/* border: 2px solid green; */
-		background-color: transparent;
-		z-index: 5;
-	}
-
-	.video_local_call {
-		position: fixed;
-		top: 60rpx;
-		right: 30rpx;
-		width: 300rpx;
-		/* border: 2px solid yellow; */
-		height: 400rpx;
-		background-color: transparent;
-		z-index: 6;
-	}
-
-	.video_none {
-		width: 0;
-		height: 0;
-	}
-
-	.video_region_padding {
-		margin-top: 20px;
-		padding: 200rpx 0 260rpx;
-		width: 750rpx;
-		height: 1080rpx;
-	}
-
-	/* 4个视频 */
-	/* .video_local_1 {
-		width: 375rpx;
-		height: 420rpx;
-	} */
-
-	/* 9个视频 */
-	/* .video_local_2 {
-		width: 250rpx;
-		height: 280rpx;
-	} */
-
-	/* 16个视频 */
-	/* .video_local_3 {
-		width: 187.5rpx;
-		height: 210rpx;
-	} */
-
-	/* 音视频基本开关 */
-	.videoshow_control {
-		/* position: absolute; */
-		bottom: 20rpx;
-		left: 0;
-		width: 750rpx;
-		/* background-color: #007AFF; */
-		/* height: 250rpx; */
-		padding: 20px;
-		background-color: transparent;
-		color: #fff;
-		flex-direction: row;
-		justify-content: space-around;
-		z-index: 10;
-	}
-
-	.open {
-		height: 205rpx;
-		width: 128rpx;
-		justify-content: center;
-	}
-
-	.open_text {
-		padding: 15px 0 0;
-		text-align: center;
-		color: #fff;
-	}
-
-	.position {
-		position: absolute;
-	}
-</style>
diff --git a/router/router.js b/router/router.js
deleted file mode 100644
index 75082d1..0000000
--- a/router/router.js
+++ /dev/null
@@ -1,38 +0,0 @@
-// router.js
-import {
-	RouterMount,
-	createRouter
-} from 'uni-simple-router';
-import WxStorage from "../static/lib/wxStorage.js" //微信Storage
-
-const router = createRouter({
-	platform: process.env.VUE_APP_PLATFORM,
-	routes: [...ROUTES]
-});
-//全局路由前置守卫
-router.beforeEach((to, from, next) => {
-	console.log('跳转开始')
-	if (to.name == 'loging') {
-		next();
-		return
-	}
-	var inTher = WxStorage.get("init");
-	console.log(inTher);
-	if (inTher == "false") {
-		next({
-			name: 'loging'
-		});
-	} else if (inTher == "true") {
-		next();
-	}
-
-});
-// 全局路由后置守卫
-router.afterEach((to, from) => {
-	console.log('跳转结束')
-})
-
-export {
-	router,
-	RouterMount
-}
diff --git a/static/BG.png b/static/BG.png
deleted file mode 100644
index 7d539ec..0000000
--- a/static/BG.png
+++ /dev/null
Binary files differ
diff --git a/static/add.png b/static/add.png
deleted file mode 100644
index 9479fec..0000000
--- a/static/add.png
+++ /dev/null
Binary files differ
diff --git a/static/apply.png b/static/apply.png
deleted file mode 100644
index d02cf2d..0000000
--- a/static/apply.png
+++ /dev/null
Binary files differ
diff --git a/static/au_in.png b/static/au_in.png
deleted file mode 100644
index bb7e437..0000000
--- a/static/au_in.png
+++ /dev/null
Binary files differ
diff --git a/static/au_on.png b/static/au_on.png
deleted file mode 100644
index dd79d7d..0000000
--- a/static/au_on.png
+++ /dev/null
Binary files differ
diff --git a/static/camera.png b/static/camera.png
deleted file mode 100644
index b3e5de9..0000000
--- a/static/camera.png
+++ /dev/null
Binary files differ
diff --git a/static/images/GPUCache/data_0 b/static/images/GPUCache/data_0
deleted file mode 100644
index d76fb77..0000000
--- a/static/images/GPUCache/data_0
+++ /dev/null
Binary files differ
diff --git a/static/images/GPUCache/data_1 b/static/images/GPUCache/data_1
deleted file mode 100644
index 111e36b..0000000
--- a/static/images/GPUCache/data_1
+++ /dev/null
Binary files differ
diff --git a/static/images/GPUCache/data_2 b/static/images/GPUCache/data_2
deleted file mode 100644
index c7e2eb9..0000000
--- a/static/images/GPUCache/data_2
+++ /dev/null
Binary files differ
diff --git a/static/images/GPUCache/data_3 b/static/images/GPUCache/data_3
deleted file mode 100644
index 5eec973..0000000
--- a/static/images/GPUCache/data_3
+++ /dev/null
Binary files differ
diff --git a/static/images/GPUCache/index b/static/images/GPUCache/index
deleted file mode 100644
index ea3da4c..0000000
--- a/static/images/GPUCache/index
+++ /dev/null
Binary files differ
diff --git a/static/images/article/menu.png b/static/images/article/menu.png
deleted file mode 100644
index be426ea..0000000
--- a/static/images/article/menu.png
+++ /dev/null
Binary files differ
diff --git a/static/images/article/microphone.png b/static/images/article/microphone.png
deleted file mode 100644
index f935545..0000000
--- a/static/images/article/microphone.png
+++ /dev/null
Binary files differ
diff --git a/static/images/article/search.png b/static/images/article/search.png
deleted file mode 100644
index 3295537..0000000
--- a/static/images/article/search.png
+++ /dev/null
Binary files differ
diff --git a/static/images/chatroom/add.png b/static/images/chatroom/add.png
deleted file mode 100644
index c23c2aa..0000000
--- a/static/images/chatroom/add.png
+++ /dev/null
Binary files differ
diff --git a/static/images/chatroom/camera.png b/static/images/chatroom/camera.png
deleted file mode 100644
index e6f2e3c..0000000
--- a/static/images/chatroom/camera.png
+++ /dev/null
Binary files differ
diff --git a/static/images/chatroom/emoji.png b/static/images/chatroom/emoji.png
deleted file mode 100644
index f185ca5..0000000
--- a/static/images/chatroom/emoji.png
+++ /dev/null
Binary files differ
diff --git a/static/images/chatroom/file.png b/static/images/chatroom/file.png
deleted file mode 100644
index 294822d..0000000
--- a/static/images/chatroom/file.png
+++ /dev/null
Binary files differ
diff --git a/static/images/chatroom/load.png b/static/images/chatroom/load.png
deleted file mode 100644
index 092d727..0000000
--- a/static/images/chatroom/load.png
+++ /dev/null
Binary files differ
diff --git a/static/images/chatroom/location.png b/static/images/chatroom/location.png
deleted file mode 100644
index 3c29740..0000000
--- a/static/images/chatroom/location.png
+++ /dev/null
Binary files differ
diff --git a/static/images/chatroom/map.jpg b/static/images/chatroom/map.jpg
deleted file mode 100644
index c138282..0000000
--- a/static/images/chatroom/map.jpg
+++ /dev/null
Binary files differ
diff --git a/static/images/chatroom/phone.png b/static/images/chatroom/phone.png
deleted file mode 100644
index 922f59e..0000000
--- a/static/images/chatroom/phone.png
+++ /dev/null
Binary files differ
diff --git a/static/images/chatroom/photo.png b/static/images/chatroom/photo.png
deleted file mode 100644
index 8811ac2..0000000
--- a/static/images/chatroom/photo.png
+++ /dev/null
Binary files differ
diff --git a/static/images/chatroom/placeholder-b.png b/static/images/chatroom/placeholder-b.png
deleted file mode 100644
index 6c1a4d8..0000000
--- a/static/images/chatroom/placeholder-b.png
+++ /dev/null
Binary files differ
diff --git a/static/images/chatroom/placeholder-r.png b/static/images/chatroom/placeholder-r.png
deleted file mode 100644
index afdde32..0000000
--- a/static/images/chatroom/placeholder-r.png
+++ /dev/null
Binary files differ
diff --git a/static/images/chatroom/sound.png b/static/images/chatroom/sound.png
deleted file mode 100644
index 2e2f3e9..0000000
--- a/static/images/chatroom/sound.png
+++ /dev/null
Binary files differ
diff --git a/static/images/chatroom/vedio.png b/static/images/chatroom/vedio.png
deleted file mode 100644
index b8a0cf1..0000000
--- a/static/images/chatroom/vedio.png
+++ /dev/null
Binary files differ
diff --git a/static/images/chatroom/voice.png b/static/images/chatroom/voice.png
deleted file mode 100644
index 0e0e918..0000000
--- a/static/images/chatroom/voice.png
+++ /dev/null
Binary files differ
diff --git a/static/images/clock/position01.png b/static/images/clock/position01.png
deleted file mode 100644
index 1c2c5a0..0000000
--- a/static/images/clock/position01.png
+++ /dev/null
Binary files differ
diff --git a/static/images/common/back.png b/static/images/common/back.png
deleted file mode 100644
index 57c1793..0000000
--- a/static/images/common/back.png
+++ /dev/null
Binary files differ
diff --git a/static/images/dispatch/ZHBA.png b/static/images/dispatch/ZHBA.png
deleted file mode 100644
index afe727f..0000000
--- a/static/images/dispatch/ZHBA.png
+++ /dev/null
Binary files differ
diff --git a/static/images/dispatch/imgissue.png b/static/images/dispatch/imgissue.png
deleted file mode 100644
index 3b0d66a..0000000
--- a/static/images/dispatch/imgissue.png
+++ /dev/null
Binary files differ
diff --git a/static/images/dispatch/issue.png b/static/images/dispatch/issue.png
deleted file mode 100644
index 7bceee0..0000000
--- a/static/images/dispatch/issue.png
+++ /dev/null
Binary files differ
diff --git a/static/images/dispatch/look.png b/static/images/dispatch/look.png
deleted file mode 100644
index 37eeed8..0000000
--- a/static/images/dispatch/look.png
+++ /dev/null
Binary files differ
diff --git a/static/images/examine/addpeople.png b/static/images/examine/addpeople.png
deleted file mode 100644
index 97f4496..0000000
--- a/static/images/examine/addpeople.png
+++ /dev/null
Binary files differ
diff --git a/static/images/examine/addunit.png b/static/images/examine/addunit.png
deleted file mode 100644
index 774cf6d..0000000
--- a/static/images/examine/addunit.png
+++ /dev/null
Binary files differ
diff --git a/static/images/examine/people.png b/static/images/examine/people.png
deleted file mode 100644
index 8f11666..0000000
--- a/static/images/examine/people.png
+++ /dev/null
Binary files differ
diff --git a/static/images/examine/unit.png b/static/images/examine/unit.png
deleted file mode 100644
index d6dabea..0000000
--- a/static/images/examine/unit.png
+++ /dev/null
Binary files differ
diff --git a/static/images/friendrequest/Forbes.jpg b/static/images/friendrequest/Forbes.jpg
deleted file mode 100644
index 78c0f07..0000000
--- a/static/images/friendrequest/Forbes.jpg
+++ /dev/null
Binary files differ
diff --git a/static/images/friendrequest/evanyou.jpg b/static/images/friendrequest/evanyou.jpg
deleted file mode 100644
index 8b8540d..0000000
--- a/static/images/friendrequest/evanyou.jpg
+++ /dev/null
Binary files differ
diff --git a/static/images/friendrequest/mayun.jpg b/static/images/friendrequest/mayun.jpg
deleted file mode 100644
index ce3082c..0000000
--- a/static/images/friendrequest/mayun.jpg
+++ /dev/null
Binary files differ
diff --git a/static/images/group/Group.png b/static/images/group/Group.png
deleted file mode 100644
index ac09b13..0000000
--- a/static/images/group/Group.png
+++ /dev/null
Binary files differ
diff --git a/static/images/group/addimage.png b/static/images/group/addimage.png
deleted file mode 100644
index 1bddc15..0000000
--- a/static/images/group/addimage.png
+++ /dev/null
Binary files differ
diff --git a/static/images/group/close.png b/static/images/group/close.png
deleted file mode 100644
index b00f3d2..0000000
--- a/static/images/group/close.png
+++ /dev/null
Binary files differ
diff --git a/static/images/group/create.png b/static/images/group/create.png
deleted file mode 100644
index 144b64f..0000000
--- a/static/images/group/create.png
+++ /dev/null
Binary files differ
diff --git a/static/images/group/groupchat.png b/static/images/group/groupchat.png
deleted file mode 100644
index ff194b5..0000000
--- a/static/images/group/groupchat.png
+++ /dev/null
Binary files differ
diff --git a/static/images/group/manager.png b/static/images/group/manager.png
deleted file mode 100644
index 16edb9e..0000000
--- a/static/images/group/manager.png
+++ /dev/null
Binary files differ
diff --git a/static/images/home/banner.png b/static/images/home/banner.png
deleted file mode 100644
index c1d12b0..0000000
--- a/static/images/home/banner.png
+++ /dev/null
Binary files differ
diff --git a/static/images/home/date.png b/static/images/home/date.png
deleted file mode 100644
index 8e3f7b0..0000000
--- a/static/images/home/date.png
+++ /dev/null
Binary files differ
diff --git a/static/images/home/focus.png b/static/images/home/focus.png
deleted file mode 100644
index 85691fd..0000000
--- a/static/images/home/focus.png
+++ /dev/null
Binary files differ
diff --git a/static/images/home/handle.png b/static/images/home/handle.png
deleted file mode 100644
index 80ce56a..0000000
--- a/static/images/home/handle.png
+++ /dev/null
Binary files differ
diff --git a/static/images/home/handle001.png b/static/images/home/handle001.png
deleted file mode 100644
index 5170b50..0000000
--- a/static/images/home/handle001.png
+++ /dev/null
Binary files differ
diff --git a/static/images/home/handle002.png b/static/images/home/handle002.png
deleted file mode 100644
index 4bee926..0000000
--- a/static/images/home/handle002.png
+++ /dev/null
Binary files differ
diff --git a/static/images/home/homeTop1.png b/static/images/home/homeTop1.png
deleted file mode 100644
index 32eb4b9..0000000
--- a/static/images/home/homeTop1.png
+++ /dev/null
Binary files differ
diff --git a/static/images/home/homeTop2.png b/static/images/home/homeTop2.png
deleted file mode 100644
index b73a74f..0000000
--- a/static/images/home/homeTop2.png
+++ /dev/null
Binary files differ
diff --git a/static/images/home/homeTop3.png b/static/images/home/homeTop3.png
deleted file mode 100644
index f9dc1cf..0000000
--- a/static/images/home/homeTop3.png
+++ /dev/null
Binary files differ
diff --git a/static/images/home/look.png b/static/images/home/look.png
deleted file mode 100644
index 610c8a6..0000000
--- a/static/images/home/look.png
+++ /dev/null
Binary files differ
diff --git a/static/images/home/message.png b/static/images/home/message.png
deleted file mode 100644
index bc15163..0000000
--- a/static/images/home/message.png
+++ /dev/null
Binary files differ
diff --git a/static/images/home/more.png b/static/images/home/more.png
deleted file mode 100644
index 0a9a229..0000000
--- a/static/images/home/more.png
+++ /dev/null
Binary files differ
diff --git a/static/images/home/n1.png b/static/images/home/n1.png
deleted file mode 100644
index 9e33bc5..0000000
--- a/static/images/home/n1.png
+++ /dev/null
Binary files differ
diff --git a/static/images/home/n2.png b/static/images/home/n2.png
deleted file mode 100644
index 9214eb4..0000000
--- a/static/images/home/n2.png
+++ /dev/null
Binary files differ
diff --git a/static/images/home/n3.png b/static/images/home/n3.png
deleted file mode 100644
index e950c0b..0000000
--- a/static/images/home/n3.png
+++ /dev/null
Binary files differ
diff --git a/static/images/home/n4.png b/static/images/home/n4.png
deleted file mode 100644
index cd3a656..0000000
--- a/static/images/home/n4.png
+++ /dev/null
Binary files differ
diff --git a/static/images/home/n5.png b/static/images/home/n5.png
deleted file mode 100644
index 5522b3a..0000000
--- a/static/images/home/n5.png
+++ /dev/null
Binary files differ
diff --git a/static/images/home/notice.png b/static/images/home/notice.png
deleted file mode 100644
index a78b14a..0000000
--- a/static/images/home/notice.png
+++ /dev/null
Binary files differ
diff --git a/static/images/home/partrol.png b/static/images/home/partrol.png
deleted file mode 100644
index cdffdca..0000000
--- a/static/images/home/partrol.png
+++ /dev/null
Binary files differ
diff --git a/static/images/home/qr.png b/static/images/home/qr.png
deleted file mode 100644
index a0af882..0000000
--- a/static/images/home/qr.png
+++ /dev/null
Binary files differ
diff --git a/static/images/home/report.png b/static/images/home/report.png
deleted file mode 100644
index 1c3637b..0000000
--- a/static/images/home/report.png
+++ /dev/null
Binary files differ
diff --git a/static/images/home/report001.png b/static/images/home/report001.png
deleted file mode 100644
index 6378116..0000000
--- a/static/images/home/report001.png
+++ /dev/null
Binary files differ
diff --git a/static/images/home/report002.png b/static/images/home/report002.png
deleted file mode 100644
index 909f76e..0000000
--- a/static/images/home/report002.png
+++ /dev/null
Binary files differ
diff --git a/static/images/home/s1.png b/static/images/home/s1.png
deleted file mode 100644
index 74cbd64..0000000
--- a/static/images/home/s1.png
+++ /dev/null
Binary files differ
diff --git a/static/images/home/s10.png b/static/images/home/s10.png
deleted file mode 100644
index 97f2c3f..0000000
--- a/static/images/home/s10.png
+++ /dev/null
Binary files differ
diff --git a/static/images/home/s11.png b/static/images/home/s11.png
deleted file mode 100644
index ab82132..0000000
--- a/static/images/home/s11.png
+++ /dev/null
Binary files differ
diff --git a/static/images/home/s2.png b/static/images/home/s2.png
deleted file mode 100644
index 705917a..0000000
--- a/static/images/home/s2.png
+++ /dev/null
Binary files differ
diff --git a/static/images/home/s3.png b/static/images/home/s3.png
deleted file mode 100644
index c6e48f7..0000000
--- a/static/images/home/s3.png
+++ /dev/null
Binary files differ
diff --git a/static/images/home/s4.png b/static/images/home/s4.png
deleted file mode 100644
index aa0096c..0000000
--- a/static/images/home/s4.png
+++ /dev/null
Binary files differ
diff --git a/static/images/home/s5.png b/static/images/home/s5.png
deleted file mode 100644
index e96e2c6..0000000
--- a/static/images/home/s5.png
+++ /dev/null
Binary files differ
diff --git a/static/images/home/s6.png b/static/images/home/s6.png
deleted file mode 100644
index 44dd953..0000000
--- a/static/images/home/s6.png
+++ /dev/null
Binary files differ
diff --git a/static/images/home/s7.png b/static/images/home/s7.png
deleted file mode 100644
index 6efb16d..0000000
--- a/static/images/home/s7.png
+++ /dev/null
Binary files differ
diff --git a/static/images/home/s8.png b/static/images/home/s8.png
deleted file mode 100644
index e22ef52..0000000
--- a/static/images/home/s8.png
+++ /dev/null
Binary files differ
diff --git a/static/images/home/say.png b/static/images/home/say.png
deleted file mode 100644
index 84672b6..0000000
--- a/static/images/home/say.png
+++ /dev/null
Binary files differ
diff --git a/static/images/home/search.png b/static/images/home/search.png
deleted file mode 100644
index 5ca9212..0000000
--- a/static/images/home/search.png
+++ /dev/null
Binary files differ
diff --git a/static/images/home/search003.png b/static/images/home/search003.png
deleted file mode 100644
index 1a7e884..0000000
--- a/static/images/home/search003.png
+++ /dev/null
Binary files differ
diff --git a/static/images/home/search004.png b/static/images/home/search004.png
deleted file mode 100644
index 97e25bd..0000000
--- a/static/images/home/search004.png
+++ /dev/null
Binary files differ
diff --git a/static/images/home/search02.png b/static/images/home/search02.png
deleted file mode 100644
index cf47d06..0000000
--- a/static/images/home/search02.png
+++ /dev/null
Binary files differ
diff --git a/static/images/home/searchs.png b/static/images/home/searchs.png
deleted file mode 100644
index a2823a6..0000000
--- a/static/images/home/searchs.png
+++ /dev/null
Binary files differ
diff --git a/static/images/home/service.png b/static/images/home/service.png
deleted file mode 100644
index a619ed5..0000000
--- a/static/images/home/service.png
+++ /dev/null
Binary files differ
diff --git a/static/images/index/friend-list/apply.png b/static/images/index/friend-list/apply.png
deleted file mode 100644
index d02cf2d..0000000
--- a/static/images/index/friend-list/apply.png
+++ /dev/null
Binary files differ
diff --git a/static/images/index/friend-list/kiko.jpg b/static/images/index/friend-list/kiko.jpg
deleted file mode 100644
index 3081f49..0000000
--- a/static/images/index/friend-list/kiko.jpg
+++ /dev/null
Binary files differ
diff --git a/static/images/index/friend-list/me.jpg b/static/images/index/friend-list/me.jpg
deleted file mode 100644
index c9413d4..0000000
--- a/static/images/index/friend-list/me.jpg
+++ /dev/null
Binary files differ
diff --git a/static/images/index/friend-list/mengzi.jpg b/static/images/index/friend-list/mengzi.jpg
deleted file mode 100644
index 866385c..0000000
--- a/static/images/index/friend-list/mengzi.jpg
+++ /dev/null
Binary files differ
diff --git a/static/images/index/friend-list/xiedi.jpg b/static/images/index/friend-list/xiedi.jpg
deleted file mode 100644
index 361b340..0000000
--- a/static/images/index/friend-list/xiedi.jpg
+++ /dev/null
Binary files differ
diff --git a/static/images/index/top-bar/add.png b/static/images/index/top-bar/add.png
deleted file mode 100644
index 9479fec..0000000
--- a/static/images/index/top-bar/add.png
+++ /dev/null
Binary files differ
diff --git a/static/images/index/top-bar/me.jpg b/static/images/index/top-bar/me.jpg
deleted file mode 100644
index c9413d4..0000000
--- a/static/images/index/top-bar/me.jpg
+++ /dev/null
Binary files differ
diff --git a/static/images/index/top-bar/search.png b/static/images/index/top-bar/search.png
deleted file mode 100644
index 35a377d..0000000
--- a/static/images/index/top-bar/search.png
+++ /dev/null
Binary files differ
diff --git a/static/images/login/biyan.png b/static/images/login/biyan.png
deleted file mode 100644
index 2ab7e3a..0000000
--- a/static/images/login/biyan.png
+++ /dev/null
Binary files differ
diff --git a/static/images/login/c8.png b/static/images/login/c8.png
deleted file mode 100644
index 17dc005..0000000
--- a/static/images/login/c8.png
+++ /dev/null
Binary files differ
diff --git a/static/images/login/look.png b/static/images/login/look.png
deleted file mode 100644
index 5641c39..0000000
--- a/static/images/login/look.png
+++ /dev/null
Binary files differ
diff --git a/static/images/login/right1.png b/static/images/login/right1.png
deleted file mode 100644
index dbc6d36..0000000
--- a/static/images/login/right1.png
+++ /dev/null
Binary files differ
diff --git a/static/images/logo.png b/static/images/logo.png
deleted file mode 100644
index 98ed83f..0000000
--- a/static/images/logo.png
+++ /dev/null
Binary files differ
diff --git a/static/images/manage/g1.png b/static/images/manage/g1.png
deleted file mode 100644
index 22e5d31..0000000
--- a/static/images/manage/g1.png
+++ /dev/null
Binary files differ
diff --git a/static/images/manage/g10.png b/static/images/manage/g10.png
deleted file mode 100644
index ba9daa4..0000000
--- a/static/images/manage/g10.png
+++ /dev/null
Binary files differ
diff --git a/static/images/manage/g11.png b/static/images/manage/g11.png
deleted file mode 100644
index f3c52a0..0000000
--- a/static/images/manage/g11.png
+++ /dev/null
Binary files differ
diff --git a/static/images/manage/g12.png b/static/images/manage/g12.png
deleted file mode 100644
index 0b1df87..0000000
--- a/static/images/manage/g12.png
+++ /dev/null
Binary files differ
diff --git a/static/images/manage/g2.png b/static/images/manage/g2.png
deleted file mode 100644
index f3ce60a..0000000
--- a/static/images/manage/g2.png
+++ /dev/null
Binary files differ
diff --git a/static/images/manage/g3.png b/static/images/manage/g3.png
deleted file mode 100644
index fc377e3..0000000
--- a/static/images/manage/g3.png
+++ /dev/null
Binary files differ
diff --git a/static/images/manage/g4.png b/static/images/manage/g4.png
deleted file mode 100644
index 90efa10..0000000
--- a/static/images/manage/g4.png
+++ /dev/null
Binary files differ
diff --git a/static/images/manage/g5.png b/static/images/manage/g5.png
deleted file mode 100644
index 3954f7a..0000000
--- a/static/images/manage/g5.png
+++ /dev/null
Binary files differ
diff --git a/static/images/manage/g6.png b/static/images/manage/g6.png
deleted file mode 100644
index 96e8a52..0000000
--- a/static/images/manage/g6.png
+++ /dev/null
Binary files differ
diff --git a/static/images/manage/g7.png b/static/images/manage/g7.png
deleted file mode 100644
index 2d2016d..0000000
--- a/static/images/manage/g7.png
+++ /dev/null
Binary files differ
diff --git a/static/images/manage/g8.png b/static/images/manage/g8.png
deleted file mode 100644
index 2bff2a8..0000000
--- a/static/images/manage/g8.png
+++ /dev/null
Binary files differ
diff --git a/static/images/manage/g9.png b/static/images/manage/g9.png
deleted file mode 100644
index de5acc0..0000000
--- a/static/images/manage/g9.png
+++ /dev/null
Binary files differ
diff --git a/static/images/nav/back.png b/static/images/nav/back.png
deleted file mode 100644
index a41827e..0000000
--- a/static/images/nav/back.png
+++ /dev/null
Binary files differ
diff --git a/static/images/nav/back01.png b/static/images/nav/back01.png
deleted file mode 100644
index fe900af..0000000
--- a/static/images/nav/back01.png
+++ /dev/null
Binary files differ
diff --git a/static/images/nav/back02.png b/static/images/nav/back02.png
deleted file mode 100644
index 8687521..0000000
--- a/static/images/nav/back02.png
+++ /dev/null
Binary files differ
diff --git a/static/images/news/c.png b/static/images/news/c.png
deleted file mode 100644
index 780d504..0000000
--- a/static/images/news/c.png
+++ /dev/null
Binary files differ
diff --git a/static/images/news/gf.png b/static/images/news/gf.png
deleted file mode 100644
index a8b4bcc..0000000
--- a/static/images/news/gf.png
+++ /dev/null
Binary files differ
diff --git a/static/images/news/l.png b/static/images/news/l.png
deleted file mode 100644
index 77bcd7b..0000000
--- a/static/images/news/l.png
+++ /dev/null
Binary files differ
diff --git a/static/images/news/menu.png b/static/images/news/menu.png
deleted file mode 100644
index 25c71d6..0000000
--- a/static/images/news/menu.png
+++ /dev/null
Binary files differ
diff --git a/static/images/news/s.png b/static/images/news/s.png
deleted file mode 100644
index 8fe28f9..0000000
--- a/static/images/news/s.png
+++ /dev/null
Binary files differ
diff --git a/static/images/news/search.png b/static/images/news/search.png
deleted file mode 100644
index 420c89c..0000000
--- a/static/images/news/search.png
+++ /dev/null
Binary files differ
diff --git a/static/images/news/t.png b/static/images/news/t.png
deleted file mode 100644
index 51f4a8d..0000000
--- a/static/images/news/t.png
+++ /dev/null
Binary files differ
diff --git a/static/images/news/x.png b/static/images/news/x.png
deleted file mode 100644
index 204fee3..0000000
--- a/static/images/news/x.png
+++ /dev/null
Binary files differ
diff --git a/static/images/pColumn/alarm.png b/static/images/pColumn/alarm.png
deleted file mode 100644
index 16baa55..0000000
--- a/static/images/pColumn/alarm.png
+++ /dev/null
Binary files differ
diff --git a/static/images/pColumn/position-bule.png b/static/images/pColumn/position-bule.png
deleted file mode 100644
index 86ffdcb..0000000
--- a/static/images/pColumn/position-bule.png
+++ /dev/null
Binary files differ
diff --git a/static/images/pColumn/position.png b/static/images/pColumn/position.png
deleted file mode 100644
index b13a078..0000000
--- a/static/images/pColumn/position.png
+++ /dev/null
Binary files differ
diff --git a/static/images/people.jfif b/static/images/people.jfif
deleted file mode 100644
index b612055..0000000
--- a/static/images/people.jfif
+++ /dev/null
Binary files differ
diff --git a/static/images/people.png b/static/images/people.png
deleted file mode 100644
index 4f1ba0b..0000000
--- a/static/images/people.png
+++ /dev/null
Binary files differ
diff --git a/static/images/qq.png b/static/images/qq.png
deleted file mode 100644
index aa4b01b..0000000
--- a/static/images/qq.png
+++ /dev/null
Binary files differ
diff --git a/static/images/report/initiate.png b/static/images/report/initiate.png
deleted file mode 100644
index b272052..0000000
--- a/static/images/report/initiate.png
+++ /dev/null
Binary files differ
diff --git a/static/images/report/receive.png b/static/images/report/receive.png
deleted file mode 100644
index 0e0e9ee..0000000
--- a/static/images/report/receive.png
+++ /dev/null
Binary files differ
diff --git a/static/images/report/start.png b/static/images/report/start.png
deleted file mode 100644
index f98fcc4..0000000
--- a/static/images/report/start.png
+++ /dev/null
Binary files differ
diff --git a/static/images/rider.png b/static/images/rider.png
deleted file mode 100644
index a07a7f3..0000000
--- a/static/images/rider.png
+++ /dev/null
Binary files differ
diff --git a/static/images/salf/bazbj.png b/static/images/salf/bazbj.png
deleted file mode 100644
index 7ffef78..0000000
--- a/static/images/salf/bazbj.png
+++ /dev/null
Binary files differ
diff --git a/static/images/search/search.png b/static/images/search/search.png
deleted file mode 100644
index 3dcc60e..0000000
--- a/static/images/search/search.png
+++ /dev/null
Binary files differ
diff --git a/static/images/search/searchresultImg1.jpg b/static/images/search/searchresultImg1.jpg
deleted file mode 100644
index f351583..0000000
--- a/static/images/search/searchresultImg1.jpg
+++ /dev/null
Binary files differ
diff --git a/static/images/search/searchresultImg2.jpg b/static/images/search/searchresultImg2.jpg
deleted file mode 100644
index 8c389cb..0000000
--- a/static/images/search/searchresultImg2.jpg
+++ /dev/null
Binary files differ
diff --git a/static/images/search/searchresultImg3.jpg b/static/images/search/searchresultImg3.jpg
deleted file mode 100644
index 18dd4fe..0000000
--- a/static/images/search/searchresultImg3.jpg
+++ /dev/null
Binary files differ
diff --git a/static/images/search/searchresultImg4.jpg b/static/images/search/searchresultImg4.jpg
deleted file mode 100644
index 6c00205..0000000
--- a/static/images/search/searchresultImg4.jpg
+++ /dev/null
Binary files differ
diff --git a/static/images/search/searchresultImg5.jpg b/static/images/search/searchresultImg5.jpg
deleted file mode 100644
index 2ee8db5..0000000
--- a/static/images/search/searchresultImg5.jpg
+++ /dev/null
Binary files differ
diff --git a/static/images/search/searchresultImg6.jpg b/static/images/search/searchresultImg6.jpg
deleted file mode 100644
index 1df7a18..0000000
--- a/static/images/search/searchresultImg6.jpg
+++ /dev/null
Binary files differ
diff --git a/static/images/search/searchresultImg7.jpg b/static/images/search/searchresultImg7.jpg
deleted file mode 100644
index dd9deff..0000000
--- a/static/images/search/searchresultImg7.jpg
+++ /dev/null
Binary files differ
diff --git a/static/images/search/searchresultImg8.jpg b/static/images/search/searchresultImg8.jpg
deleted file mode 100644
index 69588bc..0000000
--- a/static/images/search/searchresultImg8.jpg
+++ /dev/null
Binary files differ
diff --git a/static/images/service/b1.png b/static/images/service/b1.png
deleted file mode 100644
index 30957ec..0000000
--- a/static/images/service/b1.png
+++ /dev/null
Binary files differ
diff --git a/static/images/service/b2.png b/static/images/service/b2.png
deleted file mode 100644
index 84ea33f..0000000
--- a/static/images/service/b2.png
+++ /dev/null
Binary files differ
diff --git a/static/images/service/b3.png b/static/images/service/b3.png
deleted file mode 100644
index 5f2ddc1..0000000
--- a/static/images/service/b3.png
+++ /dev/null
Binary files differ
diff --git a/static/images/service/b4.png b/static/images/service/b4.png
deleted file mode 100644
index fbfb506..0000000
--- a/static/images/service/b4.png
+++ /dev/null
Binary files differ
diff --git a/static/images/service/b5.png b/static/images/service/b5.png
deleted file mode 100644
index d04f2a7..0000000
--- a/static/images/service/b5.png
+++ /dev/null
Binary files differ
diff --git a/static/images/service/b6.png b/static/images/service/b6.png
deleted file mode 100644
index 3083518..0000000
--- a/static/images/service/b6.png
+++ /dev/null
Binary files differ
diff --git a/static/images/service/b7.png b/static/images/service/b7.png
deleted file mode 100644
index 4eb501b..0000000
--- a/static/images/service/b7.png
+++ /dev/null
Binary files differ
diff --git a/static/images/service/b8.png b/static/images/service/b8.png
deleted file mode 100644
index 68a9b04..0000000
--- a/static/images/service/b8.png
+++ /dev/null
Binary files differ
diff --git a/static/images/service/s1.png b/static/images/service/s1.png
deleted file mode 100644
index f194816..0000000
--- a/static/images/service/s1.png
+++ /dev/null
Binary files differ
diff --git a/static/images/service/s2.png b/static/images/service/s2.png
deleted file mode 100644
index d347dbd..0000000
--- a/static/images/service/s2.png
+++ /dev/null
Binary files differ
diff --git a/static/images/service/s3.png b/static/images/service/s3.png
deleted file mode 100644
index a4f3de1..0000000
--- a/static/images/service/s3.png
+++ /dev/null
Binary files differ
diff --git a/static/images/service/s4.png b/static/images/service/s4.png
deleted file mode 100644
index 2a4d598..0000000
--- a/static/images/service/s4.png
+++ /dev/null
Binary files differ
diff --git a/static/images/service/s5.png b/static/images/service/s5.png
deleted file mode 100644
index 6639de1..0000000
--- a/static/images/service/s5.png
+++ /dev/null
Binary files differ
diff --git a/static/images/service/s6.png b/static/images/service/s6.png
deleted file mode 100644
index 06c74c8..0000000
--- a/static/images/service/s6.png
+++ /dev/null
Binary files differ
diff --git a/static/images/service/s7.png b/static/images/service/s7.png
deleted file mode 100644
index 88f25bc..0000000
--- a/static/images/service/s7.png
+++ /dev/null
Binary files differ
diff --git a/static/images/service/s8.png b/static/images/service/s8.png
deleted file mode 100644
index 906f0f9..0000000
--- a/static/images/service/s8.png
+++ /dev/null
Binary files differ
diff --git a/static/images/service/t1.png b/static/images/service/t1.png
deleted file mode 100644
index d165a70..0000000
--- a/static/images/service/t1.png
+++ /dev/null
Binary files differ
diff --git a/static/images/service/t2.png b/static/images/service/t2.png
deleted file mode 100644
index ccd0462..0000000
--- a/static/images/service/t2.png
+++ /dev/null
Binary files differ
diff --git a/static/images/service/t3.png b/static/images/service/t3.png
deleted file mode 100644
index 848db59..0000000
--- a/static/images/service/t3.png
+++ /dev/null
Binary files differ
diff --git a/static/images/service/t4.png b/static/images/service/t4.png
deleted file mode 100644
index a97222f..0000000
--- a/static/images/service/t4.png
+++ /dev/null
Binary files differ
diff --git a/static/images/service/t5.png b/static/images/service/t5.png
deleted file mode 100644
index 9b67d74..0000000
--- a/static/images/service/t5.png
+++ /dev/null
Binary files differ
diff --git a/static/images/service/t6.png b/static/images/service/t6.png
deleted file mode 100644
index 16479df..0000000
--- a/static/images/service/t6.png
+++ /dev/null
Binary files differ
diff --git a/static/images/service/t7.png b/static/images/service/t7.png
deleted file mode 100644
index ab51547..0000000
--- a/static/images/service/t7.png
+++ /dev/null
Binary files differ
diff --git a/static/images/service/t8.png b/static/images/service/t8.png
deleted file mode 100644
index be9f9fa..0000000
--- a/static/images/service/t8.png
+++ /dev/null
Binary files differ
diff --git a/static/images/tabbar/call.png b/static/images/tabbar/call.png
deleted file mode 100644
index 9476cb3..0000000
--- a/static/images/tabbar/call.png
+++ /dev/null
Binary files differ
diff --git a/static/images/tabbar/demo.png b/static/images/tabbar/demo.png
deleted file mode 100644
index 8169312..0000000
--- a/static/images/tabbar/demo.png
+++ /dev/null
Binary files differ
diff --git a/static/images/tabbar/demo_selected.png b/static/images/tabbar/demo_selected.png
deleted file mode 100644
index 35a674b..0000000
--- a/static/images/tabbar/demo_selected.png
+++ /dev/null
Binary files differ
diff --git a/static/images/tabbar/home.png b/static/images/tabbar/home.png
deleted file mode 100644
index e68f339..0000000
--- a/static/images/tabbar/home.png
+++ /dev/null
Binary files differ
diff --git a/static/images/tabbar/home_selected.png b/static/images/tabbar/home_selected.png
deleted file mode 100644
index 4fe97de..0000000
--- a/static/images/tabbar/home_selected.png
+++ /dev/null
Binary files differ
diff --git a/static/images/tabbar/job.png b/static/images/tabbar/job.png
deleted file mode 100644
index e4f685d..0000000
--- a/static/images/tabbar/job.png
+++ /dev/null
Binary files differ
diff --git a/static/images/tabbar/manage.png b/static/images/tabbar/manage.png
deleted file mode 100644
index b7c29d7..0000000
--- a/static/images/tabbar/manage.png
+++ /dev/null
Binary files differ
diff --git a/static/images/tabbar/manage_selected.png b/static/images/tabbar/manage_selected.png
deleted file mode 100644
index 3629791..0000000
--- a/static/images/tabbar/manage_selected.png
+++ /dev/null
Binary files differ
diff --git a/static/images/tabbar/select-call.png b/static/images/tabbar/select-call.png
deleted file mode 100644
index e77cd4a..0000000
--- a/static/images/tabbar/select-call.png
+++ /dev/null
Binary files differ
diff --git a/static/images/tabbar/select-job.png b/static/images/tabbar/select-job.png
deleted file mode 100644
index 0674f58..0000000
--- a/static/images/tabbar/select-job.png
+++ /dev/null
Binary files differ
diff --git a/static/images/tabbar/user.png b/static/images/tabbar/user.png
deleted file mode 100644
index ea6117b..0000000
--- a/static/images/tabbar/user.png
+++ /dev/null
Binary files differ
diff --git a/static/images/tabbar/user_selected.png b/static/images/tabbar/user_selected.png
deleted file mode 100644
index 6fc3c5f..0000000
--- a/static/images/tabbar/user_selected.png
+++ /dev/null
Binary files differ
diff --git a/static/images/upload.png b/static/images/upload.png
deleted file mode 100644
index c67a931..0000000
--- a/static/images/upload.png
+++ /dev/null
Binary files differ
diff --git a/static/images/user/bg.png b/static/images/user/bg.png
deleted file mode 100644
index 34eb510..0000000
--- a/static/images/user/bg.png
+++ /dev/null
Binary files differ
diff --git a/static/images/user/c1.png b/static/images/user/c1.png
deleted file mode 100644
index 6713788..0000000
--- a/static/images/user/c1.png
+++ /dev/null
Binary files differ
diff --git a/static/images/user/c2.png b/static/images/user/c2.png
deleted file mode 100644
index 6d1ee0d..0000000
--- a/static/images/user/c2.png
+++ /dev/null
Binary files differ
diff --git a/static/images/user/c3.png b/static/images/user/c3.png
deleted file mode 100644
index f899ba6..0000000
--- a/static/images/user/c3.png
+++ /dev/null
Binary files differ
diff --git a/static/images/user/c4.png b/static/images/user/c4.png
deleted file mode 100644
index f4585b1..0000000
--- a/static/images/user/c4.png
+++ /dev/null
Binary files differ
diff --git a/static/images/user/c5.png b/static/images/user/c5.png
deleted file mode 100644
index 1cf832b..0000000
--- a/static/images/user/c5.png
+++ /dev/null
Binary files differ
diff --git a/static/images/user/c6.png b/static/images/user/c6.png
deleted file mode 100644
index 6663e38..0000000
--- a/static/images/user/c6.png
+++ /dev/null
Binary files differ
diff --git a/static/images/user/c7.png b/static/images/user/c7.png
deleted file mode 100644
index c10256f..0000000
--- a/static/images/user/c7.png
+++ /dev/null
Binary files differ
diff --git a/static/images/user/c8.png b/static/images/user/c8.png
deleted file mode 100644
index 17dc005..0000000
--- a/static/images/user/c8.png
+++ /dev/null
Binary files differ
diff --git a/static/images/user/dengchu.png b/static/images/user/dengchu.png
deleted file mode 100644
index 43c3592..0000000
--- a/static/images/user/dengchu.png
+++ /dev/null
Binary files differ
diff --git a/static/images/user/n1.png b/static/images/user/n1.png
deleted file mode 100644
index cac2844..0000000
--- a/static/images/user/n1.png
+++ /dev/null
Binary files differ
diff --git a/static/images/user/n2.png b/static/images/user/n2.png
deleted file mode 100644
index a5eab0e..0000000
--- a/static/images/user/n2.png
+++ /dev/null
Binary files differ
diff --git a/static/images/user/n3.png b/static/images/user/n3.png
deleted file mode 100644
index 6edce78..0000000
--- a/static/images/user/n3.png
+++ /dev/null
Binary files differ
diff --git a/static/images/user/n4.png b/static/images/user/n4.png
deleted file mode 100644
index dd5069f..0000000
--- a/static/images/user/n4.png
+++ /dev/null
Binary files differ
diff --git a/static/images/user/setting.png b/static/images/user/setting.png
deleted file mode 100644
index f7ba7c0..0000000
--- a/static/images/user/setting.png
+++ /dev/null
Binary files differ
diff --git a/static/images/userdetails/right-arrow.png b/static/images/userdetails/right-arrow.png
deleted file mode 100644
index 9f13d2a..0000000
--- a/static/images/userdetails/right-arrow.png
+++ /dev/null
Binary files differ
diff --git a/static/images/userhome/famale.png b/static/images/userhome/famale.png
deleted file mode 100644
index e4814d7..0000000
--- a/static/images/userhome/famale.png
+++ /dev/null
Binary files differ
diff --git a/static/images/userhome/gender.png b/static/images/userhome/gender.png
deleted file mode 100644
index 6d6719e..0000000
--- a/static/images/userhome/gender.png
+++ /dev/null
Binary files differ
diff --git a/static/images/userhome/male.png b/static/images/userhome/male.png
deleted file mode 100644
index 285cf30..0000000
--- a/static/images/userhome/male.png
+++ /dev/null
Binary files differ
diff --git a/static/images/userhome/more.png b/static/images/userhome/more.png
deleted file mode 100644
index 46d7f77..0000000
--- a/static/images/userhome/more.png
+++ /dev/null
Binary files differ
diff --git a/static/images/wb.png b/static/images/wb.png
deleted file mode 100644
index bd32cbd..0000000
--- a/static/images/wb.png
+++ /dev/null
Binary files differ
diff --git a/static/images/wx.png b/static/images/wx.png
deleted file mode 100644
index 88e20cd..0000000
--- a/static/images/wx.png
+++ /dev/null
Binary files differ
diff --git a/static/images/wz.png b/static/images/wz.png
deleted file mode 100644
index 440bf5e..0000000
--- a/static/images/wz.png
+++ /dev/null
Binary files differ
diff --git a/static/lib/axios.js b/static/lib/axios.js
deleted file mode 100644
index fc6c8b6..0000000
--- a/static/lib/axios.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/* axios v0.21.1 | (c) 2020 by Matt Zabriskie */
-!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.axios=t():e.axios=t()}(this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={exports:{},id:r,loaded:!1};return e[r].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){e.exports=n(1)},function(e,t,n){"use strict";function r(e){var t=new i(e),n=s(i.prototype.request,t);return o.extend(n,i.prototype,t),o.extend(n,t),n}var o=n(2),s=n(3),i=n(4),a=n(22),u=n(10),c=r(u);c.Axios=i,c.create=function(e){return r(a(c.defaults,e))},c.Cancel=n(23),c.CancelToken=n(24),c.isCancel=n(9),c.all=function(e){return Promise.all(e)},c.spread=n(25),c.isAxiosError=n(26),e.exports=c,e.exports.default=c},function(e,t,n){"use strict";function r(e){return"[object Array]"===R.call(e)}function o(e){return"undefined"==typeof e}function s(e){return null!==e&&!o(e)&&null!==e.constructor&&!o(e.constructor)&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}function i(e){return"[object ArrayBuffer]"===R.call(e)}function a(e){return"undefined"!=typeof FormData&&e instanceof FormData}function u(e){var t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer}function c(e){return"string"==typeof e}function f(e){return"number"==typeof e}function p(e){return null!==e&&"object"==typeof e}function d(e){if("[object Object]"!==R.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function l(e){return"[object Date]"===R.call(e)}function h(e){return"[object File]"===R.call(e)}function m(e){return"[object Blob]"===R.call(e)}function y(e){return"[object Function]"===R.call(e)}function g(e){return p(e)&&y(e.pipe)}function v(e){return"undefined"!=typeof URLSearchParams&&e instanceof URLSearchParams}function x(e){return e.replace(/^\s*/,"").replace(/\s*$/,"")}function w(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)}function b(e,t){if(null!==e&&"undefined"!=typeof e)if("object"!=typeof e&&(e=[e]),r(e))for(var n=0,o=e.length;n<o;n++)t.call(null,e[n],n,e);else for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&t.call(null,e[s],s,e)}function E(){function e(e,n){d(t[n])&&d(e)?t[n]=E(t[n],e):d(e)?t[n]=E({},e):r(e)?t[n]=e.slice():t[n]=e}for(var t={},n=0,o=arguments.length;n<o;n++)b(arguments[n],e);return t}function j(e,t,n){return b(t,function(t,r){n&&"function"==typeof t?e[r]=S(t,n):e[r]=t}),e}function C(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e}var S=n(3),R=Object.prototype.toString;e.exports={isArray:r,isArrayBuffer:i,isBuffer:s,isFormData:a,isArrayBufferView:u,isString:c,isNumber:f,isObject:p,isPlainObject:d,isUndefined:o,isDate:l,isFile:h,isBlob:m,isFunction:y,isStream:g,isURLSearchParams:v,isStandardBrowserEnv:w,forEach:b,merge:E,extend:j,trim:x,stripBOM:C}},function(e,t){"use strict";e.exports=function(e,t){return function(){for(var n=new Array(arguments.length),r=0;r<n.length;r++)n[r]=arguments[r];return e.apply(t,n)}}},function(e,t,n){"use strict";function r(e){this.defaults=e,this.interceptors={request:new i,response:new i}}var o=n(2),s=n(5),i=n(6),a=n(7),u=n(22);r.prototype.request=function(e){"string"==typeof e?(e=arguments[1]||{},e.url=arguments[0]):e=e||{},e=u(this.defaults,e),e.method?e.method=e.method.toLowerCase():this.defaults.method?e.method=this.defaults.method.toLowerCase():e.method="get";var t=[a,void 0],n=Promise.resolve(e);for(this.interceptors.request.forEach(function(e){t.unshift(e.fulfilled,e.rejected)}),this.interceptors.response.forEach(function(e){t.push(e.fulfilled,e.rejected)});t.length;)n=n.then(t.shift(),t.shift());return n},r.prototype.getUri=function(e){return e=u(this.defaults,e),s(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},o.forEach(["delete","get","head","options"],function(e){r.prototype[e]=function(t,n){return this.request(u(n||{},{method:e,url:t,data:(n||{}).data}))}}),o.forEach(["post","put","patch"],function(e){r.prototype[e]=function(t,n,r){return this.request(u(r||{},{method:e,url:t,data:n}))}}),e.exports=r},function(e,t,n){"use strict";function r(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var o=n(2);e.exports=function(e,t,n){if(!t)return e;var s;if(n)s=n(t);else if(o.isURLSearchParams(t))s=t.toString();else{var i=[];o.forEach(t,function(e,t){null!==e&&"undefined"!=typeof e&&(o.isArray(e)?t+="[]":e=[e],o.forEach(e,function(e){o.isDate(e)?e=e.toISOString():o.isObject(e)&&(e=JSON.stringify(e)),i.push(r(t)+"="+r(e))}))}),s=i.join("&")}if(s){var a=e.indexOf("#");a!==-1&&(e=e.slice(0,a)),e+=(e.indexOf("?")===-1?"?":"&")+s}return e}},function(e,t,n){"use strict";function r(){this.handlers=[]}var o=n(2);r.prototype.use=function(e,t){return this.handlers.push({fulfilled:e,rejected:t}),this.handlers.length-1},r.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},r.prototype.forEach=function(e){o.forEach(this.handlers,function(t){null!==t&&e(t)})},e.exports=r},function(e,t,n){"use strict";function r(e){e.cancelToken&&e.cancelToken.throwIfRequested()}var o=n(2),s=n(8),i=n(9),a=n(10);e.exports=function(e){r(e),e.headers=e.headers||{},e.data=s(e.data,e.headers,e.transformRequest),e.headers=o.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),o.forEach(["delete","get","head","post","put","patch","common"],function(t){delete e.headers[t]});var t=e.adapter||a.adapter;return t(e).then(function(t){return r(e),t.data=s(t.data,t.headers,e.transformResponse),t},function(t){return i(t)||(r(e),t&&t.response&&(t.response.data=s(t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)})}},function(e,t,n){"use strict";var r=n(2);e.exports=function(e,t,n){return r.forEach(n,function(n){e=n(e,t)}),e}},function(e,t){"use strict";e.exports=function(e){return!(!e||!e.__CANCEL__)}},function(e,t,n){"use strict";function r(e,t){!s.isUndefined(e)&&s.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}function o(){var e;return"undefined"!=typeof XMLHttpRequest?e=n(12):"undefined"!=typeof process&&"[object process]"===Object.prototype.toString.call(process)&&(e=n(12)),e}var s=n(2),i=n(11),a={"Content-Type":"application/x-www-form-urlencoded"},u={adapter:o(),transformRequest:[function(e,t){return i(t,"Accept"),i(t,"Content-Type"),s.isFormData(e)||s.isArrayBuffer(e)||s.isBuffer(e)||s.isStream(e)||s.isFile(e)||s.isBlob(e)?e:s.isArrayBufferView(e)?e.buffer:s.isURLSearchParams(e)?(r(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):s.isObject(e)?(r(t,"application/json;charset=utf-8"),JSON.stringify(e)):e}],transformResponse:[function(e){if("string"==typeof e)try{e=JSON.parse(e)}catch(e){}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,validateStatus:function(e){return e>=200&&e<300}};u.headers={common:{Accept:"application/json, text/plain, */*"}},s.forEach(["delete","get","head"],function(e){u.headers[e]={}}),s.forEach(["post","put","patch"],function(e){u.headers[e]=s.merge(a)}),e.exports=u},function(e,t,n){"use strict";var r=n(2);e.exports=function(e,t){r.forEach(e,function(n,r){r!==t&&r.toUpperCase()===t.toUpperCase()&&(e[t]=n,delete e[r])})}},function(e,t,n){"use strict";var r=n(2),o=n(13),s=n(16),i=n(5),a=n(17),u=n(20),c=n(21),f=n(14);e.exports=function(e){return new Promise(function(t,n){var p=e.data,d=e.headers;r.isFormData(p)&&delete d["Content-Type"];var l=new XMLHttpRequest;if(e.auth){var h=e.auth.username||"",m=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";d.Authorization="Basic "+btoa(h+":"+m)}var y=a(e.baseURL,e.url);if(l.open(e.method.toUpperCase(),i(y,e.params,e.paramsSerializer),!0),l.timeout=e.timeout,l.onreadystatechange=function(){if(l&&4===l.readyState&&(0!==l.status||l.responseURL&&0===l.responseURL.indexOf("file:"))){var r="getAllResponseHeaders"in l?u(l.getAllResponseHeaders()):null,s=e.responseType&&"text"!==e.responseType?l.response:l.responseText,i={data:s,status:l.status,statusText:l.statusText,headers:r,config:e,request:l};o(t,n,i),l=null}},l.onabort=function(){l&&(n(f("Request aborted",e,"ECONNABORTED",l)),l=null)},l.onerror=function(){n(f("Network Error",e,null,l)),l=null},l.ontimeout=function(){var t="timeout of "+e.timeout+"ms exceeded";e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),n(f(t,e,"ECONNABORTED",l)),l=null},r.isStandardBrowserEnv()){var g=(e.withCredentials||c(y))&&e.xsrfCookieName?s.read(e.xsrfCookieName):void 0;g&&(d[e.xsrfHeaderName]=g)}if("setRequestHeader"in l&&r.forEach(d,function(e,t){"undefined"==typeof p&&"content-type"===t.toLowerCase()?delete d[t]:l.setRequestHeader(t,e)}),r.isUndefined(e.withCredentials)||(l.withCredentials=!!e.withCredentials),e.responseType)try{l.responseType=e.responseType}catch(t){if("json"!==e.responseType)throw t}"function"==typeof e.onDownloadProgress&&l.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&l.upload&&l.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then(function(e){l&&(l.abort(),n(e),l=null)}),p||(p=null),l.send(p)})}},function(e,t,n){"use strict";var r=n(14);e.exports=function(e,t,n){var o=n.config.validateStatus;n.status&&o&&!o(n.status)?t(r("Request failed with status code "+n.status,n.config,null,n.request,n)):e(n)}},function(e,t,n){"use strict";var r=n(15);e.exports=function(e,t,n,o,s){var i=new Error(e);return r(i,t,n,o,s)}},function(e,t){"use strict";e.exports=function(e,t,n,r,o){return e.config=t,n&&(e.code=n),e.request=r,e.response=o,e.isAxiosError=!0,e.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},e}},function(e,t,n){"use strict";var r=n(2);e.exports=r.isStandardBrowserEnv()?function(){return{write:function(e,t,n,o,s,i){var a=[];a.push(e+"="+encodeURIComponent(t)),r.isNumber(n)&&a.push("expires="+new Date(n).toGMTString()),r.isString(o)&&a.push("path="+o),r.isString(s)&&a.push("domain="+s),i===!0&&a.push("secure"),document.cookie=a.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}}():function(){return{write:function(){},read:function(){return null},remove:function(){}}}()},function(e,t,n){"use strict";var r=n(18),o=n(19);e.exports=function(e,t){return e&&!r(t)?o(e,t):t}},function(e,t){"use strict";e.exports=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)}},function(e,t){"use strict";e.exports=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}},function(e,t,n){"use strict";var r=n(2),o=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];e.exports=function(e){var t,n,s,i={};return e?(r.forEach(e.split("\n"),function(e){if(s=e.indexOf(":"),t=r.trim(e.substr(0,s)).toLowerCase(),n=r.trim(e.substr(s+1)),t){if(i[t]&&o.indexOf(t)>=0)return;"set-cookie"===t?i[t]=(i[t]?i[t]:[]).concat([n]):i[t]=i[t]?i[t]+", "+n:n}}),i):i}},function(e,t,n){"use strict";var r=n(2);e.exports=r.isStandardBrowserEnv()?function(){function e(e){var t=e;return n&&(o.setAttribute("href",t),t=o.href),o.setAttribute("href",t),{href:o.href,protocol:o.protocol?o.protocol.replace(/:$/,""):"",host:o.host,search:o.search?o.search.replace(/^\?/,""):"",hash:o.hash?o.hash.replace(/^#/,""):"",hostname:o.hostname,port:o.port,pathname:"/"===o.pathname.charAt(0)?o.pathname:"/"+o.pathname}}var t,n=/(msie|trident)/i.test(navigator.userAgent),o=document.createElement("a");return t=e(window.location.href),function(n){var o=r.isString(n)?e(n):n;return o.protocol===t.protocol&&o.host===t.host}}():function(){return function(){return!0}}()},function(e,t,n){"use strict";var r=n(2);e.exports=function(e,t){function n(e,t){return r.isPlainObject(e)&&r.isPlainObject(t)?r.merge(e,t):r.isPlainObject(t)?r.merge({},t):r.isArray(t)?t.slice():t}function o(o){r.isUndefined(t[o])?r.isUndefined(e[o])||(s[o]=n(void 0,e[o])):s[o]=n(e[o],t[o])}t=t||{};var s={},i=["url","method","data"],a=["headers","auth","proxy","params"],u=["baseURL","transformRequest","transformResponse","paramsSerializer","timeout","timeoutMessage","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","decompress","maxContentLength","maxBodyLength","maxRedirects","transport","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding"],c=["validateStatus"];r.forEach(i,function(e){r.isUndefined(t[e])||(s[e]=n(void 0,t[e]))}),r.forEach(a,o),r.forEach(u,function(o){r.isUndefined(t[o])?r.isUndefined(e[o])||(s[o]=n(void 0,e[o])):s[o]=n(void 0,t[o])}),r.forEach(c,function(r){r in t?s[r]=n(e[r],t[r]):r in e&&(s[r]=n(void 0,e[r]))});var f=i.concat(a).concat(u).concat(c),p=Object.keys(e).concat(Object.keys(t)).filter(function(e){return f.indexOf(e)===-1});return r.forEach(p,o),s}},function(e,t){"use strict";function n(e){this.message=e}n.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},n.prototype.__CANCEL__=!0,e.exports=n},function(e,t,n){"use strict";function r(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise(function(e){t=e});var n=this;e(function(e){n.reason||(n.reason=new o(e),t(n.reason))})}var o=n(23);r.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},r.source=function(){var e,t=new r(function(t){e=t});return{token:t,cancel:e}},e.exports=r},function(e,t){"use strict";e.exports=function(e){return function(t){return e.apply(null,t)}}},function(e,t){"use strict";e.exports=function(e){return"object"==typeof e&&e.isAxiosError===!0}}])});
-//# sourceMappingURL=axios.min.map
\ No newline at end of file
diff --git a/static/lib/wxStorage.js b/static/lib/wxStorage.js
deleted file mode 100644
index e2a8c38..0000000
--- a/static/lib/wxStorage.js
+++ /dev/null
@@ -1,27 +0,0 @@
-const _getStorage = (key)=>{
-  return wx.getStorageSync( key );
-}
- 
-// 设置本地存储对应key
-const _setStorage = (key,value)=>{
-  return wx.setStorageSync( key,value );
-}
- 
-// 清除全部本地存储
-const _clearStorage = ()=>{
-  wx.clearStorageSync();
-}
- 
-// 清除指定key本地存储
-const _removeStorage = ( key )=>{
-  wx.removeStorageSync( key );
-}
- 
-const WxStorage = {
-	get : _getStorage,
-	set : _setStorage,
-	clear : _clearStorage,
-	remov : _removeStorage,
-}
-
-export default WxStorage
\ No newline at end of file
diff --git a/static/logo.png b/static/logo.png
deleted file mode 100644
index b5771e2..0000000
--- a/static/logo.png
+++ /dev/null
Binary files differ
diff --git a/static/over.png b/static/over.png
deleted file mode 100644
index 6f7508a..0000000
--- a/static/over.png
+++ /dev/null
Binary files differ
diff --git a/static/phone.png b/static/phone.png
deleted file mode 100644
index 1345081..0000000
--- a/static/phone.png
+++ /dev/null
Binary files differ
diff --git a/static/qunzhu.png b/static/qunzhu.png
deleted file mode 100644
index 5df7a63..0000000
--- a/static/qunzhu.png
+++ /dev/null
Binary files differ
diff --git a/static/scss/index.scss b/static/scss/index.scss
deleted file mode 100644
index 3fb00f9..0000000
--- a/static/scss/index.scss
+++ /dev/null
@@ -1,109 +0,0 @@
-// 页面开头公共样式
-
-.content {
-	padding-top: var(--status-bar-height);
-	}
-
-
-// 头部公共样式
-.top-bar {
-			height: 88rpx;
-			position: fixed;
-			left: 0;
-			top: 0;
-			width: 100%;			
-			display: flex;
-			align-items: center;
-			z-index: 999;
-			padding-top: var(--status-bar-height);
-
-			
-			.top-bar-left {
-				margin-left: 32rpx;
-				justify-content: left;
-				flex: 1;
-							
-				image {
-					width: 68rpx;
-					height: 68rpx;
-					border-radius: 16rpx;
-				}
-								
-				.back-img {
-					left: 0;
-					width: 88rpx;
-					height : 88rpx;
-					
-					image {
-						width: 26rpx;
-						height: 45rpx;
-						margin-top: 22rpx;
-					}
-				}
-
-			}
-			.top-bar-center {
-				
-				.logo {
-					font-weight: bold;
-					color: grey;
-				}
-			}
-			
-			.top-bar-right {
-				margin-right: 32rpx;
-				flex: 1;
-				text-align: right;
-				justify-content: right;
-				
-				image {
-					width: 52rpx;
-					height: 52rpx;
-					margin-left: 52rpx;
-				}
-				
-				.text {
-					font-size: $uni-font-size-lg;
-					font-weight: 500;
-					color: $uni-text-color;
-				}
-				
-				.more-img {
-					padding-right: $uni-spacing-col-base;
-					position: relative;
-					
-					image {
-						width: 52rpx;
-						height: 12rpx;
-						top: 0;
-						right: 0;
-						position: absolute;
-					}
-				}
-			}
-		}
-		
-		// 底部样式
-		.bottom-bar {
-			position: fixed;
-			bottom: 0;
-			height: 90rpx;
-			width: 100%;
-			// padding: 12rpx $uni-spacing-col-base;
-			padding-top: 10rpx;
-			padding-bottom: var(--status-bar-height);
-				
-		}
-		
-		// 按钮公共样式1
-		.btn1 {
-			margin: 0 $uni-spacing-col-base;
-			line-height: 80rpx;			
-			height: 80rpx;
-			border-radius: $uni-border-radius-sm;
-			font-size: 32rpx;
-			color: $uni-text-color;
-			text-align: center;
-		}
-		
-		
\ No newline at end of file
diff --git a/static/start-audio.png b/static/start-audio.png
deleted file mode 100644
index 0cf13df..0000000
--- a/static/start-audio.png
+++ /dev/null
Binary files differ
diff --git a/static/start-input.png b/static/start-input.png
deleted file mode 100644
index e32190d..0000000
--- a/static/start-input.png
+++ /dev/null
Binary files differ
diff --git a/static/style/app.scss b/static/style/app.scss
deleted file mode 100644
index 6ebb247..0000000
--- a/static/style/app.scss
+++ /dev/null
@@ -1,86 +0,0 @@
-@import '~@/uni.scss';
-
-/* start--演示页面使用的统一样式--start */
-.u-demo {
-	padding: 25px 20px;
-}
-
-.u-demo-wrap {
-	border-width: 1px;
-	border-color: #ddd;
-	border-style: dashed;
-	background-color: rgb(250, 250, 250);
-	padding: 20px 10px;
-	border-radius: 3px;
-}
-
-.u-demo-area {
-	text-align: center;
-}
-
-.u-no-demo-here {
-	color: $u-tips-color;
-	font-size: 13px;
-}
-
-.u-demo-result-line {
-	border-width: 1px;
-	border-color: #ddd;
-	border-style: dashed;
-	padding: 5px 20px;
-	margin-top: 30px;
-	border-radius: 5px;
-	background-color: rgb(240, 240, 240);
-	color: $u-content-color;
-	font-size: 16px;
-	/* #ifndef APP-NVUE */
-	word-break: break-word;
-	display: inline-block;
-	/* #endif */
-	text-align: left;
-	
-}
-
-.u-demo-title,
-.u-config-title {
-	text-align: center;
-	font-size: 16px;
-	font-weight: bold;
-	margin-bottom: 20px;
-}
-
-.u-config-item {
-	margin-top: 25px;
-}
-
-.u-config-title {
-	margin-top: 20px;
-	padding-bottom: 5px;
-}
-
-.u-item-title {
-	position: relative;
-	font-size: 15px;
-	padding-left: 8px;
-	line-height: 1;
-	margin-bottom: 11px;
-}
-
-.u-item-title:after {
-	position: absolute;
-	width: 4px;
-	top: -1px;
-	height: 16px;
-	/* #ifndef APP-NVUE */
-	content: '';
-	/* #endif */
-	left: 0;
-	border-radius: 10px;
-	background-color: $u-content-color;
-}
-/* end--演示页面使用的统一样式--end */
-.imgissue-upload {
-		.u-form-item--right__content__slot  {
-			flex-wrap: wrap !important;
-		}
-}
\ No newline at end of file
diff --git a/static/tabbar/article.png b/static/tabbar/article.png
deleted file mode 100644
index d22eb75..0000000
--- a/static/tabbar/article.png
+++ /dev/null
Binary files differ
diff --git a/static/tabbar/articleH.png b/static/tabbar/articleH.png
deleted file mode 100644
index 84a8e7e..0000000
--- a/static/tabbar/articleH.png
+++ /dev/null
Binary files differ
diff --git a/static/tabbar/business.png b/static/tabbar/business.png
deleted file mode 100644
index ae5ffe4..0000000
--- a/static/tabbar/business.png
+++ /dev/null
Binary files differ
diff --git a/static/tabbar/businessH.png b/static/tabbar/businessH.png
deleted file mode 100644
index 8d5759c..0000000
--- a/static/tabbar/businessH.png
+++ /dev/null
Binary files differ
diff --git a/static/tabbar/home.png b/static/tabbar/home.png
deleted file mode 100644
index 1016814..0000000
--- a/static/tabbar/home.png
+++ /dev/null
Binary files differ
diff --git a/static/tabbar/homeHL.png b/static/tabbar/homeHL.png
deleted file mode 100644
index 6ac3235..0000000
--- a/static/tabbar/homeHL.png
+++ /dev/null
Binary files differ
diff --git a/static/tabbar/index-03.png b/static/tabbar/index-03.png
deleted file mode 100644
index 0e920db..0000000
--- a/static/tabbar/index-03.png
+++ /dev/null
Binary files differ
diff --git a/static/tabbar/index01.png b/static/tabbar/index01.png
deleted file mode 100644
index 0942770..0000000
--- a/static/tabbar/index01.png
+++ /dev/null
Binary files differ
diff --git a/static/tabbar/index02.png b/static/tabbar/index02.png
deleted file mode 100644
index 9d6ae20..0000000
--- a/static/tabbar/index02.png
+++ /dev/null
Binary files differ
diff --git a/static/tabbar/index04.png b/static/tabbar/index04.png
deleted file mode 100644
index 95faffa..0000000
--- a/static/tabbar/index04.png
+++ /dev/null
Binary files differ
diff --git a/static/tabbar/investigation.png b/static/tabbar/investigation.png
deleted file mode 100644
index d5e1102..0000000
--- a/static/tabbar/investigation.png
+++ /dev/null
Binary files differ
diff --git a/static/tabbar/investigation22.png b/static/tabbar/investigation22.png
deleted file mode 100644
index e9dbcc0..0000000
--- a/static/tabbar/investigation22.png
+++ /dev/null
Binary files differ
diff --git a/static/tabbar/investigationH.png b/static/tabbar/investigationH.png
deleted file mode 100644
index f983dfb..0000000
--- a/static/tabbar/investigationH.png
+++ /dev/null
Binary files differ
diff --git a/static/tabbar/investigationH22.png b/static/tabbar/investigationH22.png
deleted file mode 100644
index 9227478..0000000
--- a/static/tabbar/investigationH22.png
+++ /dev/null
Binary files differ
diff --git a/static/tabbar/map.png b/static/tabbar/map.png
deleted file mode 100644
index c517c2c..0000000
--- a/static/tabbar/map.png
+++ /dev/null
Binary files differ
diff --git a/static/tabbar/mapHL.png b/static/tabbar/mapHL.png
deleted file mode 100644
index 2c1e0a2..0000000
--- a/static/tabbar/mapHL.png
+++ /dev/null
Binary files differ
diff --git a/static/tabbar/my-blue.png b/static/tabbar/my-blue.png
deleted file mode 100644
index abb0434..0000000
--- a/static/tabbar/my-blue.png
+++ /dev/null
Binary files differ
diff --git a/static/tabbar/my.png b/static/tabbar/my.png
deleted file mode 100644
index 8c9cf5d..0000000
--- a/static/tabbar/my.png
+++ /dev/null
Binary files differ
diff --git a/static/tabbar/patrol-blue.png b/static/tabbar/patrol-blue.png
deleted file mode 100644
index da3ef4b..0000000
--- a/static/tabbar/patrol-blue.png
+++ /dev/null
Binary files differ
diff --git a/static/tabbar/patrol.png b/static/tabbar/patrol.png
deleted file mode 100644
index da1eb8a..0000000
--- a/static/tabbar/patrol.png
+++ /dev/null
Binary files differ
diff --git a/static/tabbar/user.png b/static/tabbar/user.png
deleted file mode 100644
index 609bb1a..0000000
--- a/static/tabbar/user.png
+++ /dev/null
Binary files differ
diff --git a/static/tabbar/userHL.png b/static/tabbar/userHL.png
deleted file mode 100644
index 907abb0..0000000
--- a/static/tabbar/userHL.png
+++ /dev/null
Binary files differ
diff --git a/static/tabbar/workbench.png b/static/tabbar/workbench.png
deleted file mode 100644
index 8676ea1..0000000
--- a/static/tabbar/workbench.png
+++ /dev/null
Binary files differ
diff --git a/static/tabbar/workbenchH.png b/static/tabbar/workbenchH.png
deleted file mode 100644
index c52e750..0000000
--- a/static/tabbar/workbenchH.png
+++ /dev/null
Binary files differ
diff --git a/static/vi_in.png b/static/vi_in.png
deleted file mode 100644
index 8d5d782..0000000
--- a/static/vi_in.png
+++ /dev/null
Binary files differ
diff --git a/static/vi_on.png b/static/vi_on.png
deleted file mode 100644
index d3ff572..0000000
--- a/static/vi_on.png
+++ /dev/null
Binary files differ
diff --git a/static/wjg.png b/static/wjg.png
deleted file mode 100644
index d5d7ec0..0000000
--- a/static/wjg.png
+++ /dev/null
Binary files differ
diff --git a/static/workbench/addressbook.png b/static/workbench/addressbook.png
deleted file mode 100644
index e5e84ad..0000000
--- a/static/workbench/addressbook.png
+++ /dev/null
Binary files differ
diff --git a/static/workbench/bracket.png b/static/workbench/bracket.png
deleted file mode 100644
index 0a7375a..0000000
--- a/static/workbench/bracket.png
+++ /dev/null
Binary files differ
diff --git a/static/workbench/daka.png b/static/workbench/daka.png
deleted file mode 100644
index 41bc1ef..0000000
--- a/static/workbench/daka.png
+++ /dev/null
Binary files differ
diff --git a/static/workbench/feedback01.png b/static/workbench/feedback01.png
deleted file mode 100644
index 7f5d536..0000000
--- a/static/workbench/feedback01.png
+++ /dev/null
Binary files differ
diff --git a/static/workbench/huojian.png b/static/workbench/huojian.png
deleted file mode 100644
index 50b127e..0000000
--- a/static/workbench/huojian.png
+++ /dev/null
Binary files differ
diff --git a/static/workbench/luxian.png b/static/workbench/luxian.png
deleted file mode 100644
index 8f48f1a..0000000
--- a/static/workbench/luxian.png
+++ /dev/null
Binary files differ
diff --git a/static/workbench/myself.png b/static/workbench/myself.png
deleted file mode 100644
index ac7b11a..0000000
--- a/static/workbench/myself.png
+++ /dev/null
Binary files differ
diff --git a/static/workbench/policeDerails/guanbiimg.png b/static/workbench/policeDerails/guanbiimg.png
deleted file mode 100644
index 360bca3..0000000
--- a/static/workbench/policeDerails/guanbiimg.png
+++ /dev/null
Binary files differ
diff --git a/static/workbench/policeDerails/shiping11.png b/static/workbench/policeDerails/shiping11.png
deleted file mode 100644
index c94662f..0000000
--- a/static/workbench/policeDerails/shiping11.png
+++ /dev/null
Binary files differ
diff --git a/static/workbench/policeDerails/xiangji.png b/static/workbench/policeDerails/xiangji.png
deleted file mode 100644
index 6aa4b02..0000000
--- a/static/workbench/policeDerails/xiangji.png
+++ /dev/null
Binary files differ
diff --git a/static/workbench/report.png b/static/workbench/report.png
deleted file mode 100644
index da5756a..0000000
--- a/static/workbench/report.png
+++ /dev/null
Binary files differ
diff --git a/static/workbench/system.png b/static/workbench/system.png
deleted file mode 100644
index 3eb53dd..0000000
--- a/static/workbench/system.png
+++ /dev/null
Binary files differ
diff --git a/static/workbench/task.png b/static/workbench/task.png
deleted file mode 100644
index b040a78..0000000
--- a/static/workbench/task.png
+++ /dev/null
Binary files differ
diff --git a/static/workbench/task1.png b/static/workbench/task1.png
deleted file mode 100644
index 5499846..0000000
--- a/static/workbench/task1.png
+++ /dev/null
Binary files differ
diff --git a/static/workbench/task2.png b/static/workbench/task2.png
deleted file mode 100644
index e4c43a7..0000000
--- a/static/workbench/task2.png
+++ /dev/null
Binary files differ
diff --git a/static/workbench/task3.png b/static/workbench/task3.png
deleted file mode 100644
index 1b63d85..0000000
--- a/static/workbench/task3.png
+++ /dev/null
Binary files differ
diff --git a/static/workbench/task4.png b/static/workbench/task4.png
deleted file mode 100644
index 4a5167f..0000000
--- a/static/workbench/task4.png
+++ /dev/null
Binary files differ
diff --git a/static/workbench/update.png b/static/workbench/update.png
deleted file mode 100644
index 3aa2c44..0000000
--- a/static/workbench/update.png
+++ /dev/null
Binary files differ
diff --git a/static/workbench/user01.png b/static/workbench/user01.png
deleted file mode 100644
index b50786e..0000000
--- a/static/workbench/user01.png
+++ /dev/null
Binary files differ
diff --git a/store/$u.mixin.js b/store/$u.mixin.js
deleted file mode 100644
index 54fa0cb..0000000
--- a/store/$u.mixin.js
+++ /dev/null
@@ -1,32 +0,0 @@
-// $u.mixin.js
-
-import {
-	mapState
-} from 'vuex'
-import store from "@/store"
-
-// 尝试将用户在根目录中的store/index.js的vuex的state变量,全部加载到全局变量中
-let $uStoreKey = [];
-try {
-	$uStoreKey = store.state ? Object.keys(store.state) : [];
-} catch (e) {
-
-}
-
-module.exports = {
-	mounted() {
-		// 将vuex方法挂在到$u中
-		// 使用方法为:如果要修改vuex的state中的user.name变量为"史诗" => this.$u.vuex('user.name', '史诗')
-		// 如果要修改vuex的state的version变量为1.0.1 => this.$u.vuex('version', '1.0.1')
-		this.$u.vuex = (name, value) => {
-			this.$store.commit('$uStore', {
-				name,
-				value
-			})
-		}
-	},
-	computed: {
-		// 将vuex的state中的所有变量,解构到全局混入的mixin中
-		...mapState($uStoreKey)
-	}
-}
diff --git a/store/actions.111.js b/store/actions.111.js
deleted file mode 100644
index da30573..0000000
--- a/store/actions.111.js
+++ /dev/null
@@ -1,176 +0,0 @@
-import md5 from 'js-md5'
-import axios from 'axios'
-
-const actions = {
-	loging(store, data) {
-		var user = [{
-					name: '1',
-					password: '111111'
-				},
-				{
-					name: '2',
-					password: '222222'
-				},
-				{
-					name: '3',
-					password: '333333'
-				},
-			],
-			pasw = md5(data.pass),
-			url = store.state.piAPI + '/blade-auth/oauth/token?tenantId=000000&username=' + data.name +
-			' &password=' + pasw + '&grant_type=password&scope=all&type=account';
-		// url ='http://192.168.0.109:82/blade-auth/oauth/token';
-		// url ='http://192.168.0.109:82/blade-auth/oauth/token?tenantId=000000&username=admin&password=93369e86dc5fa854a0eaf75558c4039d&grant_type=password';
-		// url ='http://web.byisf.com/api/blade-auth/oauth/token?tenantId=000000&username=admin&password=93369e86dc5fa854a0eaf75558c4039d&grant_type=password&scope=all';
-		wx.request({ //uniapp 自带axios
-			url: url, //仅为示例,并非真实接口地址。
-			// data: d,
-			// data: {
-			// 	tenantId: '000000',
-			// 	username: data.name,
-			// 	password: pasw,
-			// 	grant_type: 'password',
-			// 	scope: 'all',
-			// 	type: "account"
-			// },
-			header: {
-				// "Content-Type":"",
-				"Authorization": "Basic c2FiZXI6c2FiZXJfc2VjcmV0",
-				"Tenant-Id": "963841"
-				// "Cookie": "JSESSIONID=maOJY05vT2jj4nHwsQGSPgWWVFH1mY-TGWOLYCSh"
-			},
-			method: "post",
-			// 	// dataType: 'JSON',
-			success: (res) => {
-				
-				var geolocation = null;
-
-				var qqTime = setInterval(function() {
-					if (window.qq) {
-						console.log(window.qq);
-						geolocation = new qq.maps.Geolocation(
-							"T7RBZ-62U3X-RSQ4P-ZZVCB-WE7JT-HRBOG",
-							"myapp");
-
-						clearInterval(qqTime)
-					}
-				}, 1000)
-
-				var getLocationData = (userId) => {
-
-					var positionNum = 0;
-					var options = {
-						timeout: 8000
-					};
-
-					function showPosition(position) {
-						var adCode = position.adCode; //邮政编码
-						var nation = position.nation; //中国
-						var city = position.city; //城市
-						var addr = position.addr; //详细地址
-
-						wx.request({
-							url: "http://223.82.109.183:2080/api/liveLocation/saveLiveLocationAndLocus",
-							method: "post",
-							data: {
-								type: 1,
-								workerId: userId,
-								longitude: position.lng,
-								latitude: position.lat,
-								location: addr == '' ? position.province + position.city :
-									position.province + position
-									.city +
-									addr
-							}
-						}).then((result) => {
-
-						})
-
-					};
-
-					function showErr() {
-						//TODO 如果出错了调用此方法 
-						alert(123)
-					};
-
-					geolocation.getLocation(showPosition, showErr, options);
-
-				};
-
-
-				if (res.statusCode == 200) {
-					if (res.data.error_code == "400") {
-						uni.showToast({
-							title: '密码错误,请重试',
-							icon: 'none',
-							duration: 2000
-						});
-						return;
-					}
-					store.commit('getUserData', res.data)
-					data.isit = true;
-					data.userName = res.data.nick_name; //警袁姓名
-					data.userID = res.data.user_id; //警袁id
-					data.avatar = res.data.avatar; //头像
-					data.accounts = data.name;
-					data.pass = data.pass;
-					// data.userPhon = res.user_id;
-					// uni.getLocation({
-					// 	type: 'wgs84',
-					// 	geocode: true,
-					// 	success: (res) => {
-					// 	}
-					// })
-					setInterval(function() {
-
-							if (geolocation != null) {
-								getLocationData(res.data.user_id);
-							}
-
-
-						},
-						30000);
-
-					uni.request({
-						url: this.$store.state.piAPI + "/blade-system/dept/detail?id=" + res
-							.data.dept_id,
-						method: "get",
-						data: {
-
-						},
-						success: (result) => {
-							data.deptName = result.data.data.deptName
-							res.data.deptName = result.data.data.deptName
-							store.commit('login', data);
-							uni.$u.func.login(res.data)
-						}
-					});
-
-
-				}
-			},
-			fail: (res) => {
-				console.log('失去连接 请稍等');
-				// console.log(res);
-			}
-		});
-		// var time = setTimeout(() => { //模拟请求时间
-		// 	var ud = user,
-		// 		isit = false;
-		// 	for (var key in ud) {
-		// 		if (ud[key].name == data.name && ud[key].password == data.pass) {
-		// 			isit = true;
-		// 			break;
-		// 		} else {
-		// 			isit = false;
-		// 		}
-		// 	}
-		// 	data.isit = isit;
-		// 	store.commit('login', data);
-		// }, 2000)
-
-	}
-
-}
-
-export default actions
diff --git a/store/actions.js b/store/actions.js
deleted file mode 100644
index f39f0a1..0000000
--- a/store/actions.js
+++ /dev/null
@@ -1,163 +0,0 @@
-import md5 from 'js-md5'
-import axios from 'axios'
-const actions = {
-	loging(store, data) {
-		var user = [{
-					name: '1',
-					password: '111111'
-				},
-				{
-					name: '2',
-					password: '222222'
-				},
-				{
-					name: '3',
-					password: '333333'
-				},
-			],
-			pasw = md5(data.pass),
-			// url = this.$store.state.piAPI + '/blade-auth/oauth/token?tenantId=000000&username=' + data.name +
-			url = store.state.piAPI + '/blade-auth/oauth/token?tenantId=000000&username=' + data.name +
-			' &password=' + pasw + '&grant_type=password&scope=all&type=account';
-		// url ='http://192.168.0.109:82/blade-auth/oauth/token';
-		// url ='http://192.168.0.109:82/blade-auth/oauth/token?tenantId=000000&username=admin&password=93369e86dc5fa854a0eaf75558c4039d&grant_type=password';
-		// url ='http://web.byisf.com/api/blade-auth/oauth/token?tenantId=000000&username=admin&password=93369e86dc5fa854a0eaf75558c4039d&grant_type=password&scope=all';
-		console.log(store.state.piAPI);
-		wx.request({ //uniapp 自带axios
-			url: url, //仅为示例,并非真实接口地址。
-			// data: d,
-			// data: {
-			// 	tenantId: '000000',
-			// 	username: data.name,
-			// 	password: pasw,
-			// 	grant_type: 'password',
-			// 	scope: 'all',
-			// 	type: "account"
-			// },
-			header: {
-				// "Content-Type":"",
-				"Authorization": "Basic c2FiZXI6c2FiZXJfc2VjcmV0",
-				"Tenant-Id": "963841"
-
-				// "Cookie": "JSESSIONID=maOJY05vT2jj4nHwsQGSPgWWVFH1mY-TGWOLYCSh"
-			},
-			method: "post",
-			// 	// dataType: 'JSON',
-			success: (res) => {
-
-				if (res.statusCode == 200) {
-					if (res.data.error_code == "400") {
-						uni.showToast({
-							title: '密码错误,请重试',
-							icon: 'none',
-							duration: 2000
-						});
-						return;
-					}
-					store.commit('getUserData', res.data)
-					// console.log(res.data,123542);
-					data.isit = true;
-					data.userName = res.data.nick_name; //警袁姓名
-					data.userID = res.data.user_id; //警袁id
-					data.avatar = res.data.avatar; //头像
-					data.accounts = data.name;
-					data.pass = data.pass;
-					// data.userPhon = res.user_id;
-
-
-
-
-					// 实时定位获取得方法
-
-					uni.getLocation({
-						type: 'gcj02',
-						geocode: true,
-						success: function(wzres) {
-							uni.request({
-								url: "http://223.82.109.183:2080/api/liveLocation/saveLiveLocationAndLocus",
-								method: "post",
-								data: {
-									type: 1,
-									workerId: res.data.user_id,
-									longitude: wzres.longitude,
-									latitude: wzres.latitude,
-									location: wzres.address.country +
-										wzres.address.province + wzres
-										.address.city + wzres.address
-										.district + wzres.address
-										.street + wzres.address
-										.streetNum
-								}
-							})
-						}
-					});
-
-					setInterval(function() {
-
-						uni.getLocation({
-							type: 'gcj02',
-							geocode: true,
-							success: function(wzres) {
-								uni.request({
-									url: "http://223.82.109.183:2080/api/liveLocation/saveLiveLocationAndLocus",
-									method: "post",
-									data: {
-										type: 1,
-										workerId: res.data.user_id,
-										longitude: wzres.longitude,
-										latitude: wzres.latitude,
-										location: wzres.address.country +
-											wzres.address.province + wzres
-											.address.city + wzres.address
-											.district + wzres.address
-											.street + wzres.address
-											.streetNum
-									}
-								})
-							}
-						});
-
-					}, 30000)
-
-					uni.request({
-						url: store.state.piAPI + "/blade-system/dept/detail?id=" + res
-							.data.dept_id,
-						method: "get",
-						data: {
-
-						},
-						success: (result) => {
-							data.deptName = result.data.data.deptName
-							res.data.deptName = result.data.data.deptName
-							store.commit('login', data);
-							uni.$u.func.login(res.data)
-						}
-					});
-
-
-				}
-			},
-			fail: (res) => {
-				console.log('失去连接 请稍等');
-				// console.log(res);
-			}
-		});
-		// var time = setTimeout(() => { //模拟请求时间
-		// 	var ud = user,
-		// 		isit = false;
-		// 	for (var key in ud) {
-		// 		if (ud[key].name == data.name && ud[key].password == data.pass) {
-		// 			isit = true;
-		// 			break;
-		// 		} else {
-		// 			isit = false;
-		// 		}
-		// 	}
-		// 	data.isit = isit;
-		// 	store.commit('login', data);
-		// }, 2000)
-
-	}
-}
-
-export default actions
diff --git a/store/index.js b/store/index.js
deleted file mode 100644
index a07ac56..0000000
--- a/store/index.js
+++ /dev/null
@@ -1,76 +0,0 @@
-import Vue from 'vue'
-import Vuex from 'vuex'
-import mutations from './mutations.js'
-import actions from './actions.js'
-Vue.use(Vuex)
-
-let lifeData = {};
-
-try {
-	// 尝试获取本地是否存在lifeData变量,第一次启动APP时是不存在的
-	lifeData = uni.getStorageSync('lifeData');
-} catch (e) {
-
-}
-
-
-const store = new Vuex.Store({
-	// 下面这些值仅为示例,使用过程中请删除
-	state: {
-
-		// 如果上面从本地获取的lifeData对象下有对应的属性,就赋值给state中对应的变量
-		userInfo: lifeData.userInfo ? lifeData.userInfo : {
-			avatar: '',
-			nick_name: '游客',
-			tenant_id: '暂无'
-		},
-		accessToken: lifeData.accessToken ? lifeData.accessToken : '',
-		isLogin: lifeData.isLogin ? lifeData.isLogin : false,
-		// 如果version无需保存到本地永久存储,无需lifeData.version方式
-		version: '1.0.0',
-		loging: false,
-		message: {
-			useName: '过客 ',
-		},
-		logPath: '',
-		piAPI: 'http://223.82.109.183:2080/api',
-		// piAPI: 'http://192.168.0.114:81',
-		api: 'http://223.82.109.183:2080/api',
-		// piAPI: 'http://localhost:83/',
-		// piAPI: 'http://192.168.0.115:83',
-		puserName: '',
-		puserID: '',
-		puserIphone: '',
-		avatar: "../../static/logo.png",
-		UserData: {},
-		tabbar: [{
-				pagePath: "pages/home/home",
-				iconPath: "static/images/tabbar/home.png",
-				selectedIconPath: "static/images/tabbar/home_selected.png",
-				text: "首页"
-			},
-			{
-				pagePath: "pages/groupChat/groupChat",
-				iconPath: "static/images/tabbar/demo.png",
-				selectedIconPath: "static/images/tabbar/demo_selected.png",
-				text: "聊天"
-			},
-			{
-				pagePath: "pages/manage/manage",
-				text: "工作台",
-				iconPath: "static/tabbar/workbench.png",
-				selectedIconPath: "static/tabbar/workbenchH.png"
-			},
-			{
-				pagePath: "pages/user/center",
-				iconPath: "static/images/tabbar/user.png",
-				selectedIconPath: "static/images/tabbar/user_selected.png",
-				text: "我的"
-			}
-		]
-	},
-	mutations: mutations,
-	actions: actions
-})
-
-export default store
diff --git a/store/mutations.js b/store/mutations.js
deleted file mode 100644
index 469ee9b..0000000
--- a/store/mutations.js
+++ /dev/null
@@ -1,178 +0,0 @@
-import WxStorage from "../static/lib/wxStorage.js" //微信Storage
-// 需要永久存储,且下次APP启动需要取出的,在state中的变量名
-let saveStateKeys = ['userInfo', 'accessToken', 'isLogin'];
-
-// 保存变量到本地存储中
-const saveLifeData = function(key, value) {
-	// 判断变量名是否在需要存储的数组中
-	if (saveStateKeys.indexOf(key) != -1) {
-		// 获取本地存储的lifeData对象,将变量添加到对象中
-		let tmp = uni.getStorageSync('lifeData');
-		// 第一次打开APP,不存在lifeData变量,故放一个{}空对象
-		tmp = tmp ? tmp : {};
-		tmp[key] = value;
-		// 执行这一步后,所有需要存储的变量,都挂载在本地的lifeData对象中
-		uni.setStorageSync(key, value);
-		uni.setStorageSync('lifeData', tmp);
-	}
-}
-const mutations = {
-	$uStore(state, payload) {
-		// 判断是否多层级调用,state中为对象存在的情况,诸如user.info.score = 1
-		let nameArr = payload.name.split('.');
-		let saveKey = '';
-		let len = nameArr.length;
-		if (nameArr.length >= 2) {
-			let obj = state[nameArr[0]];
-			for (let i = 1; i < len - 1; i++) {
-				obj = obj[nameArr[i]];
-			}
-			obj[nameArr[len - 1]] = payload.value;
-			saveKey = nameArr[0];
-		} else {
-			// 单层级变量,在state就是一个普通变量的情况
-			state[payload.name] = payload.value;
-			saveKey = payload.name;
-		}
-		// 保存变量到本地,见顶部函数定义
-		saveLifeData(saveKey, state[saveKey])
-	},
-	login(state, data) {
-		// console.log(data);
-		state.loging = data.isit; //登录状态
-		if (data.isit) { //写入用户数据
-			state.message.useName = data.userName;
-			state.puserName = data.userName;
-			state.puserID = data.userID;
-			state.avatar = data.avatar;
-		}
-		console.log('登入数据传输成功  开始进入连接')
-
-		var url = 'ws://223.82.109.183:2086/websocket';
-
-		uni.connectSocket({
-			url: url
-			// url: 'ws://192.168.0.111:2086/websocket'
-		});
-
-		var socketOpen = false;
-
-		var heartbeatInterval = null;
-		var reconnect = null;
-
-
-
-		uni.onSocketOpen(function(res) {
-			socketOpen = true;
-			console.log('持续连接成功')
-
-			if (reconnect && reconnect != null) {
-				clearInterval(reconnect)
-			}
-
-			sendSocketMessage();
-
-			// 5秒发送一次心跳
-			heartbeatInterval = setInterval(() => {
-
-				console.log('发送心跳中')
-
-				uni.sendSocketMessage({
-					data: 'ping'
-				});
-
-			}, 5000)
-
-		});
-
-
-		// 监听连接失败
-		uni.onSocketError(function(res) {
-			console.log('WebSocket连接打开失败,请检查!');
-			//停止发送心跳
-
-			if (heartbeatInterval && heartbeatInterval != null) {
-				clearInterval(heartbeatInterval)
-			}
-			//如果不是人为关闭的话,进行重连
-			// if (!_this.isSocketClose) {}
-			reconnect = setInterval(() => { // 断线重连
-
-				console.log(`断线重连中...123`)
-				// 连接
-				uni.connectSocket({
-					url: url,
-				});
-
-			}, 3000)
-		});
-
-
-
-
-		function sendSocketMessage() {
-			var data = {
-				// type: state.puserName,
-
-				id: state.puserID,
-				type: 'login'
-			}
-
-			if (socketOpen) {
-				uni.sendSocketMessage({
-					data: JSON.stringify(data)
-				});
-			}
-		}
-
-		uni.onSocketMessage(function(res) {
-			console.log(res.data);
-			var data = JSON.parse(res.data)
-			if (data.type == 'video') {
-				// this.receiveVideo('Receiver', );
-				console.log('进入接受 跳转', data.type)
-				uni.navigateTo({
-					url: '../videoCall/videoCall?state=Receiver&type=' + data.type + '&room=' + data
-						.roomId + '&name=' + data.name + '&faqiid=' + data.faqiid
-				});
-			}
-			// console.log('收到服务器内容:' + res.data);
-		});
-
-
-		//储存用户
-		WxStorage.set("init", "true");
-		WxStorage.set("name", data.userName);
-		WxStorage.set("ids", data.userID);
-		WxStorage.set("accounts", data.accounts);
-		WxStorage.set("pass", data.pass);
-	},
-	// useWebSocket(state){
-	// 	uni.onSocketMessage(function(res) {
-	// 		console.log(res.data);
-	// 		var data  = JSON.parse(res.data)
-	// 		if (data.type == 'video') {
-	// 			// this.receiveVideo('Receiver', );
-	// 			console.log('进入接受 跳转',data.type)
-	// 			uni.navigateTo({
-	// 				url: '../videoCall/videoCall?state=Receiver&type=' + data.type +'&room=' + data.roomId + '&name=' + data.name + '&faqiid=' + data.faqiid
-	// 			});
-	// 		}
-	// 		// console.log('收到服务器内容:' + res.data);
-	// 	});
-	// }
-	loginReset(state) { //重置
-		state.loging = false;
-		state.message.useName = '过客 ';
-		WxStorage.clear();
-	},
-	getUse(state, data) {
-		state.puserName = data.userName;
-		state.puserID = data.userID;
-	},
-	getUserData(state, data) {
-		state.UserData = data;
-	}
-}
-
-export default mutations
diff --git a/template.h5.html b/template.h5.html
deleted file mode 100644
index 78f2488..0000000
--- a/template.h5.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!DOCTYPE html>
-<html lang="zh-CN">
-	<head>
-		<meta charset="utf-8">
-		<meta http-equiv="X-UA-Compatible" content="IE=edge">
-		<link rel="shortcut icon" type="image/x-icon" href="static/favicon.ico">
-		<meta name="viewport"
-			content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
-		<title>
-			<%= htmlWebpackPlugin.options.title %>
-		</title>
-		<link rel="stylesheet" href="<%= BASE_URL %>static/index.css" />
-		<script>
-			document.addEventListener('DOMContentLoaded', function() {
-				document.documentElement.style.fontSize = document.documentElement.clientWidth / 20 + 'px'
-			})
-		</script>
-		
-	</head>
-	<body>
-		<noscript>
-			<strong>本站点必须要开启JavaScript才能运行</strong>
-		</noscript>
-		<div id="app"></div>
-	</body>
-</html>
diff --git a/uni.scss b/uni.scss
deleted file mode 100644
index 63879f3..0000000
--- a/uni.scss
+++ /dev/null
@@ -1,5 +0,0 @@
-/**
- * 下方引入的为uView UI的集成样式文件,为scss预处理器,其中包含了一些"u-"开头的自定义变量
- * uView自定义的css类名和scss变量,均以"u-"开头,不会造成冲突,请放心使用 
- */
-@import 'uview-ui/theme.scss';
diff --git a/uni_modules/lime-echart/changelog.md b/uni_modules/lime-echart/changelog.md
deleted file mode 100644
index e4dc38a..0000000
--- a/uni_modules/lime-echart/changelog.md
+++ /dev/null
@@ -1,70 +0,0 @@
-## 0.3.4(2021-08-03)
-- chore: 增加 setOption的参数值
-## 0.3.3(2021-07-22)
-- fix: 修复 径向渐变报错的问题
-## 0.3.2(2021-07-09)
-- chore: 统一命名规范,无须主动引入组件
-## [代码示例站点1](https://limeui.qcoon.cn/#/echart-example)
-## [代码示例站点2](http://liangei.gitee.io/limeui/#/echart-example)
-## 0.3.1(2021-06-21)
-- fix: 修复 app-nvue ios is-enable 无效的问题
-## [代码示例站点1](https://limeui.qcoon.cn/#/echart-example)
-## [代码示例站点2](http://liangei.gitee.io/limeui/#/echart-example)
-## 0.3.0(2021-06-14)
-- fix: 修复 头条系小程序 2d 报 JSON.stringify 的问题
-- 目前 头条系小程序 2d 无法在开发工具上预览,划动图表页面无法滚动,axisLabel 字体颜色无法更改,建议使用非2d。
-## 0.2.9(2021-06-06)
-- fix: 修复 头条系小程序 2d 放大的BUG 
-- 头条系小程序 2d 无法在开发工具上预览,也存在划动图表页面无法滚动的问题。
-## [代码示例:http://liangei.gitee.io/limeui/#/echart-example](http://liangei.gitee.io/limeui/#/echart-example)
-## 0.2.8(2021-05-19)
-- fix: 修复 微信小程序 PC 显示过大的问题
-## 0.2.7(2021-05-19)
-- fix: 修复 微信小程序 PC 不显示问题
-## [代码示例:http://liangei.gitee.io/limeui/#/echart-example](http://liangei.gitee.io/limeui/#/echart-example)
-## 0.2.6(2021-05-14)
-- feat: 支持 `image`
-- feat: props 增加 `ec.clear`,更新时是否先删除图表样式 
-- feat: props 增加 `isDisableScroll` ,触摸图表时是否禁止页面滚动
-- feat: props 增加 `webviewStyles` ,webview 的样式, 仅nvue有效
-## 0.2.5(2021-05-13)
-- docs: 插件用到了css 预编译器 [stylus](https://ext.dcloud.net.cn/plugin?name=compile-stylus) 请安装它
-## 0.2.4(2021-05-12)
-- fix: 修复 百度平台 多个图表ctx 和 渐变色 bug
-- ## [代码示例:http://liangei.gitee.io/limeui/#/echart-example](http://liangei.gitee.io/limeui/#/echart-example)
-## 0.2.3(2021-05-10)
-- feat: 增加 `canvasToTempFilePath` 方法,用于生成图片
-```js
-this.$refs.chart.canvasToTempFilePath({success: (res) => {
-	console.log('tempFilePath:', res.tempFilePath)
-}})
-```
-## 0.2.2(2021-05-10)
-- feat: 增加 `dispose` 方法,用于销毁实例
-- feat: 增加 `isClickable` 是否派发点击
-- feat: 实验性的支持 `nvue` 使用要慎重考虑
-- ## [代码示例:http://liangei.gitee.io/limeui/#/echart-example](http://liangei.gitee.io/limeui/#/echart-example)
-## 0.2.1(2021-05-06)
-- fix:修复 微信小程序 json 报错
-- chore: `reset` 更改为 `setChart`
-- feat: 增加 `isEnable` 开启初始化 启用这个后 无须再使用`init`方法
-```html
-<l-echart ref="chart" is-enable />
-```
-```js
-// 显示加载
-this.$refs.chart.showLoading()
-// 使用实例回调
-this.$refs.chart.setChart(chart => ...code)
-// 直接设置图表配置
-this.$refs.chart.setOption(data)
-```
-## 0.2.0(2021-05-05)
-- fix:修复 头条 百度 偏移的问题
-- docs: 更新文档
-## [代码示例:http://liangei.gitee.io/limeui/#/echart-example](http://liangei.gitee.io/limeui/#/echart-example)
-## 0.1.0(2021-05-02)
-- chore:  第一次上传,基本全端兼容,使用方法与官网一致。
-- 已知BUG:非2d 无法使用背景色,已反馈官方
-- 已知BUG:头条 百度 有许些偏移
-- 后期计划:兼容nvue
diff --git a/uni_modules/lime-echart/components/l-echart/canvas.js b/uni_modules/lime-echart/components/l-echart/canvas.js
deleted file mode 100644
index 012bfce..0000000
--- a/uni_modules/lime-echart/components/l-echart/canvas.js
+++ /dev/null
@@ -1,219 +0,0 @@
-const cacheChart = {}
-class Image {
-	constructor() {
-		// __zr.dom
-		this.currentSrc = null
-		this.naturalHeight = 0
-		this.naturalWidth = 0
-		this.width = 0
-		this.height = 0
-		this.tagName = 'IMG'
-	}
-	set src(src) {
-		this.currentSrc = src
-		uni.getImageInfo({
-			src,
-			success: (res) => {
-				this.naturalWidth = this.width = res.width
-				this.naturalHeight = this.height = res.height
-				this.onload()
-			},
-			fail: () => {
-				this.onerror()
-			}
-		})
-	}
-	get src() {
-		return this.currentSrc
-	}
-}
-export default class Canvas {
-	constructor(ctx, canvasId, isNew, canvasNode) {
-		cacheChart[canvasId] = {ctx}
-		this.canvasId = canvasId;
-		this.chart = null;
-		this.isNew = isNew
-		if (isNew) {
-			this.canvasNode = canvasNode;
-		} else {
-			this.canvasNode = {
-				createImage: () => {
-					return new Image()
-				}
-			};
-			this._initStyle(ctx);
-		}
-		this._initEvent();
-	}
-
-	getContext(contextType) {
-		if (contextType === '2d') {
-			return this.ctx;
-		}
-	}
-	setChart(chart) {
-		this.chart = chart;
-	}
-	attachEvent(e) {}
-	detachEvent() {}
-	addEventListener() {}
-	removeEventListener() {}
-	_initCanvas(zrender, ctx) {
-		zrender.util.getContext = function() {
-			return ctx;
-		};
-		zrender.util.$override('measureText', function(text, font) {
-			ctx.font = font || '12px sans-serif';
-			return ctx.measureText(text, font);
-		});
-	}
-	strLen(str) {
-		let len = 0;
-		for (let i = 0; i < str.length; i++) {
-			if (str.charCodeAt(i) > 0 && str.charCodeAt(i) < 128) {
-				len++;
-			} else {
-				len += 2;
-			}
-		}
-		return len;
-	}
-	_initStyle(ctx) {
-		var styles = [
-			'fillStyle',
-			'strokeStyle',
-			'fontSize',
-			'globalAlpha',
-			'opacity',
-			'textAlign',
-			'textBaseline',
-			'shadow',
-			'lineWidth',
-			'lineCap',
-			'lineJoin',
-			'lineDash',
-			'miterLimit',
-			// #ifdef MP-TOUTIAO
-			'font'
-			// #endif
-		];
-		const fontSizeReg = /([\d\.]+)px/;
-		const colorReg = /#([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])\b/g;
-		styles.forEach(style => {
-			Object.defineProperty(ctx, style, {
-				set: value => {
-					if (style === 'font' && fontSizeReg.test(value)) {
-						const match = fontSizeReg.exec(value);
-						ctx.setFontSize(match[1]);
-						return;
-					}
-					if (style === 'opacity') {
-						ctx.setGlobalAlpha(value)
-						return;
-					}
-					if (style !== 'fillStyle' && style !== 'strokeStyle' || value !== 'none' && value !== null) {
-						// #ifdef H5 || APP-PLUS || MP-BAIDU
-						if(typeof value == 'object') {
-							if (value.hasOwnProperty('colorStop') || value.hasOwnProperty('colors')) {
-								ctx['set' + style.charAt(0).toUpperCase() + style.slice(1)](value);
-							}
-							return
-						} 
-						// #endif
-						// #ifdef MP-TOUTIAO
-						if(colorReg.test(value)) {
-							value = value.replace(colorReg, '#$1$1$2$2$3$3')
-						}
-						// #endif
-						ctx['set' + style.charAt(0).toUpperCase() + style.slice(1)](value);
-					}
-				}
-			});
-		});
-		if(!this.isNew) {
-			ctx.uniDrawImage = ctx.drawImage
-			ctx.drawImage = (...a) => {
-				a[0] = a[0].src
-				ctx.uniDrawImage(...a)
-			}
-		}
-		if(!ctx.createRadialGradient) {
-			ctx.createRadialGradient = function() {
-				return ctx.createCircularGradient(...[...arguments].slice(-3))
-			};
-		}
-		// 字节不支持
-		if (!ctx.strokeText) {
-			ctx.strokeText = (...a) => {
-				ctx.fillText(...a)
-			}
-		}
-		// 钉钉不支持 
-		if (!ctx.measureText) {
-			ctx.measureText = (text, font) => {
-				let fontSize = 12;
-				if (font) {
-					fontSize = parseInt(font.match(/([\d\.]+)px/)[1])
-				}
-				fontSize /= 2;
-				return {
-					width: this.strLen(text) * fontSize
-				};
-			}
-		}
-	}
-
-	_initEvent() {
-		this.event = {};
-		const eventNames = [{
-			wxName: 'touchStart',
-			ecName: 'mousedown'
-		}, {
-			wxName: 'touchMove',
-			ecName: 'mousemove'
-		}, {
-			wxName: 'touchEnd',
-			ecName: 'mouseup'
-		}, {
-			wxName: 'touchEnd',
-			ecName: 'click'
-		}];
-
-		eventNames.forEach(name => {
-			this.event[name.wxName] = e => {
-				const touch = e.touches[0];
-				this.chart.getZr().handler.dispatch(name.ecName, {
-					zrX: name.wxName === 'tap' ? touch.clientX : touch.x,
-					zrY: name.wxName === 'tap' ? touch.clientY : touch.y
-				});
-			};
-		});
-	}
-
-	set width(w) {
-		if (this.canvasNode) this.canvasNode.width = w
-	}
-	set height(h) {
-		if (this.canvasNode) this.canvasNode.height = h
-	}
-
-	get width() {
-		if (this.canvasNode)
-			return this.canvasNode.width
-		return 0
-	}
-	get height() {
-		if (this.canvasNode)
-			return this.canvasNode.height
-		return 0
-	}
-	get ctx() {
-		return cacheChart[this.canvasId]['ctx'] || null
-	}
-	set chart(chart) {
-		cacheChart[this.canvasId]['chart'] = chart
-	}
-	get chart() {
-		return cacheChart[this.canvasId]['chart'] || null
-	}
-}
diff --git a/uni_modules/lime-echart/components/l-echart/echarts.js b/uni_modules/lime-echart/components/l-echart/echarts.js
deleted file mode 100644
index 276ba4b..0000000
--- a/uni_modules/lime-echart/components/l-echart/echarts.js
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-* Licensed to the Apache Software Foundation (ASF) under one
-* or more contributor license agreements.  See the NOTICE file
-* distributed with this work for additional information
-* regarding copyright ownership.  The ASF licenses this file
-* to you under the Apache License, Version 2.0 (the
-* "License"); you may not use this file except in compliance
-* with the License.  You may obtain a copy of the License at
-*
-*   http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing,
-* software distributed under the License is distributed on an
-* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-* KIND, either express or implied.  See the License for the
-* specific language governing permissions and limitations
-* under the License.
-*/
-
-!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).echarts={})}(this,(function(t){"use strict";
-/*! *****************************************************************************
-    Copyright (c) Microsoft Corporation.
-
-    Permission to use, copy, modify, and/or distribute this software for any
-    purpose with or without fee is hereby granted.
-
-    THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
-    REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-    AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
-    INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-    LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-    OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-    PERFORMANCE OF THIS SOFTWARE.
-    ***************************************************************************** */var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(t,n)};function n(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}var i=function(){return(i=Object.assign||function(t){for(var e,n=1,i=arguments.length;n<i;n++)for(var r in e=arguments[n])Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t}).apply(this,arguments)};function r(){for(var t=0,e=0,n=arguments.length;e<n;e++)t+=arguments[e].length;var i=Array(t),r=0;for(e=0;e<n;e++)for(var o=arguments[e],a=0,s=o.length;a<s;a++,r++)i[r]=o[a];return i}var o=function(){this.firefox=!1,this.ie=!1,this.edge=!1,this.newEdge=!1,this.weChat=!1},a=new function(){this.browser=new o,this.node=!1,this.wxa=!1,this.worker=!1,this.canvasSupported=!1,this.svgSupported=!1,this.touchEventsSupported=!1,this.pointerEventsSupported=!1,this.domSupported=!1,this.transformSupported=!1,this.transform3dSupported=!1};"object"==typeof wx&&"function"==typeof wx.getSystemInfoSync?(a.wxa=!0,a.canvasSupported=!0,a.touchEventsSupported=!0):"undefined"==typeof document&&"undefined"!=typeof self?(a.worker=!0,a.canvasSupported=!0):"undefined"==typeof navigator?(a.node=!0,a.canvasSupported=!0,a.svgSupported=!0):function(t,e){var n=e.browser,i=t.match(/Firefox\/([\d.]+)/),r=t.match(/MSIE\s([\d.]+)/)||t.match(/Trident\/.+?rv:(([\d.]+))/),o=t.match(/Edge?\/([\d.]+)/),a=/micromessenger/i.test(t);i&&(n.firefox=!0,n.version=i[1]);r&&(n.ie=!0,n.version=r[1]);o&&(n.edge=!0,n.version=o[1],n.newEdge=+o[1].split(".")[0]>18);a&&(n.weChat=!0);e.canvasSupported=!!document.createElement("canvas").getContext,e.svgSupported="undefined"!=typeof SVGRect,e.touchEventsSupported="ontouchstart"in window&&!n.ie&&!n.edge,e.pointerEventsSupported="onpointerdown"in window&&(n.edge||n.ie&&+n.version>=11),e.domSupported="undefined"!=typeof document;var s=document.documentElement.style;e.transform3dSupported=(n.ie&&"transition"in s||n.edge||"WebKitCSSMatrix"in window&&"m11"in new WebKitCSSMatrix||"MozPerspective"in s)&&!("OTransition"in s),e.transformSupported=e.transform3dSupported||n.ie&&+n.version>=9}(navigator.userAgent,a);var s={"[object Function]":!0,"[object RegExp]":!0,"[object Date]":!0,"[object Error]":!0,"[object CanvasGradient]":!0,"[object CanvasPattern]":!0,"[object Image]":!0,"[object Canvas]":!0},l={"[object Int8Array]":!0,"[object Uint8Array]":!0,"[object Uint8ClampedArray]":!0,"[object Int16Array]":!0,"[object Uint16Array]":!0,"[object Int32Array]":!0,"[object Uint32Array]":!0,"[object Float32Array]":!0,"[object Float64Array]":!0},u=Object.prototype.toString,h=Array.prototype,c=h.forEach,p=h.filter,d=h.slice,f=h.map,g=function(){}.constructor,y=g?g.prototype:null,v={};function m(t,e){v[t]=e}var _=2311;function x(){return _++}function b(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];"undefined"!=typeof console&&console.error.apply(console,t)}function w(t){if(null==t||"object"!=typeof t)return t;var e=t,n=u.call(t);if("[object Array]"===n){if(!lt(t)){e=[];for(var i=0,r=t.length;i<r;i++)e[i]=w(t[i])}}else if(l[n]){if(!lt(t)){var o=t.constructor;if(o.from)e=o.from(t);else{e=new o(t.length);for(i=0,r=t.length;i<r;i++)e[i]=w(t[i])}}}else if(!s[n]&&!lt(t)&&!j(t))for(var a in e={},t)t.hasOwnProperty(a)&&(e[a]=w(t[a]));return e}function S(t,e,n){if(!Y(e)||!Y(t))return n?w(e):t;for(var i in e)if(e.hasOwnProperty(i)){var r=t[i],o=e[i];!Y(o)||!Y(r)||F(o)||F(r)||j(o)||j(r)||X(o)||X(r)||lt(o)||lt(r)?!n&&i in t||(t[i]=w(e[i])):S(r,o,n)}return t}function M(t,e){for(var n=t[0],i=1,r=t.length;i<r;i++)n=S(n,t[i],e);return n}function I(t,e){if(Object.assign)Object.assign(t,e);else for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}function T(t,e,n){for(var i=z(e),r=0;r<i.length;r++){var o=i[r];(n?null!=e[o]:null==t[o])&&(t[o]=e[o])}return t}var C=function(){return v.createCanvas()};function A(t,e){if(t){if(t.indexOf)return t.indexOf(e);for(var n=0,i=t.length;n<i;n++)if(t[n]===e)return n}return-1}function D(t,e){var n=t.prototype;function i(){}for(var r in i.prototype=e.prototype,t.prototype=new i,n)n.hasOwnProperty(r)&&(t.prototype[r]=n[r]);t.prototype.constructor=t,t.superClass=e}function L(t,e,n){if(t="prototype"in t?t.prototype:t,e="prototype"in e?e.prototype:e,Object.getOwnPropertyNames)for(var i=Object.getOwnPropertyNames(e),r=0;r<i.length;r++){var o=i[r];"constructor"!==o&&(n?null!=e[o]:null==t[o])&&(t[o]=e[o])}else T(t,e,n)}function k(t){return!!t&&("string"!=typeof t&&"number"==typeof t.length)}function P(t,e,n){if(t&&e)if(t.forEach&&t.forEach===c)t.forEach(e,n);else if(t.length===+t.length)for(var i=0,r=t.length;i<r;i++)e.call(n,t[i],i,t);else for(var o in t)t.hasOwnProperty(o)&&e.call(n,t[o],o,t)}function O(t,e,n){if(!t)return[];if(!e)return nt(t);if(t.map&&t.map===f)return t.map(e,n);for(var i=[],r=0,o=t.length;r<o;r++)i.push(e.call(n,t[r],r,t));return i}function R(t,e,n,i){if(t&&e){for(var r=0,o=t.length;r<o;r++)n=e.call(i,n,t[r],r,t);return n}}function N(t,e,n){if(!t)return[];if(!e)return nt(t);if(t.filter&&t.filter===p)return t.filter(e,n);for(var i=[],r=0,o=t.length;r<o;r++)e.call(n,t[r],r,t)&&i.push(t[r]);return i}function E(t,e,n){if(t&&e)for(var i=0,r=t.length;i<r;i++)if(e.call(n,t[i],i,t))return t[i]}function z(t){if(!t)return[];if(Object.keys)return Object.keys(t);var e=[];for(var n in t)t.hasOwnProperty(n)&&e.push(n);return e}v.createCanvas=function(){return document.createElement("canvas")};var B=y&&G(y.bind)?y.call.bind(y.bind):function(t,e){for(var n=[],i=2;i<arguments.length;i++)n[i-2]=arguments[i];return function(){return t.apply(e,n.concat(d.call(arguments)))}};function V(t){for(var e=[],n=1;n<arguments.length;n++)e[n-1]=arguments[n];return function(){return t.apply(this,e.concat(d.call(arguments)))}}function F(t){return Array.isArray?Array.isArray(t):"[object Array]"===u.call(t)}function G(t){return"function"==typeof t}function H(t){return"string"==typeof t}function W(t){return"[object String]"===u.call(t)}function U(t){return"number"==typeof t}function Y(t){var e=typeof t;return"function"===e||!!t&&"object"===e}function X(t){return!!s[u.call(t)]}function Z(t){return!!l[u.call(t)]}function j(t){return"object"==typeof t&&"number"==typeof t.nodeType&&"object"==typeof t.ownerDocument}function q(t){return null!=t.colorStops}function K(t){return null!=t.image}function $(t){return"[object RegExp]"===u.call(t)}function J(t){return t!=t}function Q(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];for(var n=0,i=t.length;n<i;n++)if(null!=t[n])return t[n]}function tt(t,e){return null!=t?t:e}function et(t,e,n){return null!=t?t:null!=e?e:n}function nt(t){for(var e=[],n=1;n<arguments.length;n++)e[n-1]=arguments[n];return d.apply(t,e)}function it(t){if("number"==typeof t)return[t,t,t,t];var e=t.length;return 2===e?[t[0],t[1],t[0],t[1]]:3===e?[t[0],t[1],t[2],t[1]]:t}function rt(t,e){if(!t)throw new Error(e)}function ot(t){return null==t?null:"function"==typeof t.trim?t.trim():t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")}var at="__ec_primitive__";function st(t){t[at]=!0}function lt(t){return t[at]}var ut=function(){function t(e){this.data={};var n=F(e);this.data={};var i=this;function r(t,e){n?i.set(t,e):i.set(e,t)}e instanceof t?e.each(r):e&&P(e,r)}return t.prototype.get=function(t){return this.data.hasOwnProperty(t)?this.data[t]:null},t.prototype.set=function(t,e){return this.data[t]=e},t.prototype.each=function(t,e){for(var n in this.data)this.data.hasOwnProperty(n)&&t.call(e,this.data[n],n)},t.prototype.keys=function(){return z(this.data)},t.prototype.removeKey=function(t){delete this.data[t]},t}();function ht(t){return new ut(t)}function ct(t,e){for(var n=new t.constructor(t.length+e.length),i=0;i<t.length;i++)n[i]=t[i];var r=t.length;for(i=0;i<e.length;i++)n[i+r]=e[i];return n}function pt(t,e){var n;if(Object.create)n=Object.create(t);else{var i=function(){};i.prototype=t,n=new i}return e&&I(n,e),n}function dt(t,e){return t.hasOwnProperty(e)}function ft(){}var gt=Object.freeze({__proto__:null,$override:m,guid:x,logError:b,clone:w,merge:S,mergeAll:M,extend:I,defaults:T,createCanvas:C,indexOf:A,inherits:D,mixin:L,isArrayLike:k,each:P,map:O,reduce:R,filter:N,find:E,keys:z,bind:B,curry:V,isArray:F,isFunction:G,isString:H,isStringSafe:W,isNumber:U,isObject:Y,isBuiltInObject:X,isTypedArray:Z,isDom:j,isGradientObject:q,isPatternObject:K,isRegExp:$,eqNaN:J,retrieve:Q,retrieve2:tt,retrieve3:et,slice:nt,normalizeCssArray:it,assert:rt,trim:ot,setAsPrimitive:st,isPrimitive:lt,HashMap:ut,createHashMap:ht,concatArray:ct,createObject:pt,hasOwn:dt,noop:ft});function yt(t,e){return null==t&&(t=0),null==e&&(e=0),[t,e]}function vt(t,e){return t[0]=e[0],t[1]=e[1],t}function mt(t){return[t[0],t[1]]}function _t(t,e,n){return t[0]=e,t[1]=n,t}function xt(t,e,n){return t[0]=e[0]+n[0],t[1]=e[1]+n[1],t}function bt(t,e,n,i){return t[0]=e[0]+n[0]*i,t[1]=e[1]+n[1]*i,t}function wt(t,e,n){return t[0]=e[0]-n[0],t[1]=e[1]-n[1],t}function St(t){return Math.sqrt(It(t))}var Mt=St;function It(t){return t[0]*t[0]+t[1]*t[1]}var Tt=It;function Ct(t,e,n){return t[0]=e[0]*n,t[1]=e[1]*n,t}function At(t,e){var n=St(e);return 0===n?(t[0]=0,t[1]=0):(t[0]=e[0]/n,t[1]=e[1]/n),t}function Dt(t,e){return Math.sqrt((t[0]-e[0])*(t[0]-e[0])+(t[1]-e[1])*(t[1]-e[1]))}var Lt=Dt;function kt(t,e){return(t[0]-e[0])*(t[0]-e[0])+(t[1]-e[1])*(t[1]-e[1])}var Pt=kt;function Ot(t,e,n,i){return t[0]=e[0]+i*(n[0]-e[0]),t[1]=e[1]+i*(n[1]-e[1]),t}function Rt(t,e,n){var i=e[0],r=e[1];return t[0]=n[0]*i+n[2]*r+n[4],t[1]=n[1]*i+n[3]*r+n[5],t}function Nt(t,e,n){return t[0]=Math.min(e[0],n[0]),t[1]=Math.min(e[1],n[1]),t}function Et(t,e,n){return t[0]=Math.max(e[0],n[0]),t[1]=Math.max(e[1],n[1]),t}var zt=Object.freeze({__proto__:null,create:yt,copy:vt,clone:mt,set:_t,add:xt,scaleAndAdd:bt,sub:wt,len:St,length:Mt,lenSquare:It,lengthSquare:Tt,mul:function(t,e,n){return t[0]=e[0]*n[0],t[1]=e[1]*n[1],t},div:function(t,e,n){return t[0]=e[0]/n[0],t[1]=e[1]/n[1],t},dot:function(t,e){return t[0]*e[0]+t[1]*e[1]},scale:Ct,normalize:At,distance:Dt,dist:Lt,distanceSquare:kt,distSquare:Pt,negate:function(t,e){return t[0]=-e[0],t[1]=-e[1],t},lerp:Ot,applyTransform:Rt,min:Nt,max:Et}),Bt=function(t,e){this.target=t,this.topTarget=e&&e.topTarget},Vt=function(){function t(t){this.handler=t,t.on("mousedown",this._dragStart,this),t.on("mousemove",this._drag,this),t.on("mouseup",this._dragEnd,this)}return t.prototype._dragStart=function(t){for(var e=t.target;e&&!e.draggable;)e=e.parent;e&&(this._draggingTarget=e,e.dragging=!0,this._x=t.offsetX,this._y=t.offsetY,this.handler.dispatchToElement(new Bt(e,t),"dragstart",t.event))},t.prototype._drag=function(t){var e=this._draggingTarget;if(e){var n=t.offsetX,i=t.offsetY,r=n-this._x,o=i-this._y;this._x=n,this._y=i,e.drift(r,o,t),this.handler.dispatchToElement(new Bt(e,t),"drag",t.event);var a=this.handler.findHover(n,i,e).target,s=this._dropTarget;this._dropTarget=a,e!==a&&(s&&a!==s&&this.handler.dispatchToElement(new Bt(s,t),"dragleave",t.event),a&&a!==s&&this.handler.dispatchToElement(new Bt(a,t),"dragenter",t.event))}},t.prototype._dragEnd=function(t){var e=this._draggingTarget;e&&(e.dragging=!1),this.handler.dispatchToElement(new Bt(e,t),"dragend",t.event),this._dropTarget&&this.handler.dispatchToElement(new Bt(this._dropTarget,t),"drop",t.event),this._draggingTarget=null,this._dropTarget=null},t}(),Ft=function(){function t(t){t&&(this._$eventProcessor=t)}return t.prototype.on=function(t,e,n,i){this._$handlers||(this._$handlers={});var r=this._$handlers;if("function"==typeof e&&(i=n,n=e,e=null),!n||!t)return this;var o=this._$eventProcessor;null!=e&&o&&o.normalizeQuery&&(e=o.normalizeQuery(e)),r[t]||(r[t]=[]);for(var a=0;a<r[t].length;a++)if(r[t][a].h===n)return this;var s={h:n,query:e,ctx:i||this,callAtLast:n.zrEventfulCallAtLast},l=r[t].length-1,u=r[t][l];return u&&u.callAtLast?r[t].splice(l,0,s):r[t].push(s),this},t.prototype.isSilent=function(t){var e=this._$handlers;return!e||!e[t]||!e[t].length},t.prototype.off=function(t,e){var n=this._$handlers;if(!n)return this;if(!t)return this._$handlers={},this;if(e){if(n[t]){for(var i=[],r=0,o=n[t].length;r<o;r++)n[t][r].h!==e&&i.push(n[t][r]);n[t]=i}n[t]&&0===n[t].length&&delete n[t]}else delete n[t];return this},t.prototype.trigger=function(t){for(var e=[],n=1;n<arguments.length;n++)e[n-1]=arguments[n];if(!this._$handlers)return this;var i=this._$handlers[t],r=this._$eventProcessor;if(i)for(var o=e.length,a=i.length,s=0;s<a;s++){var l=i[s];if(!r||!r.filter||null==l.query||r.filter(t,l.query))switch(o){case 0:l.h.call(l.ctx);break;case 1:l.h.call(l.ctx,e[0]);break;case 2:l.h.call(l.ctx,e[0],e[1]);break;default:l.h.apply(l.ctx,e)}}return r&&r.afterTrigger&&r.afterTrigger(t),this},t.prototype.triggerWithContext=function(t){if(!this._$handlers)return this;var e=this._$handlers[t],n=this._$eventProcessor;if(e)for(var i=arguments,r=i.length,o=i[r-1],a=e.length,s=0;s<a;s++){var l=e[s];if(!n||!n.filter||null==l.query||n.filter(t,l.query))switch(r){case 0:l.h.call(o);break;case 1:l.h.call(o,i[0]);break;case 2:l.h.call(o,i[0],i[1]);break;default:l.h.apply(o,i.slice(1,r-1))}}return n&&n.afterTrigger&&n.afterTrigger(t),this},t}(),Gt=Math.log(2);function Ht(t,e,n,i,r,o){var a=i+"-"+r,s=t.length;if(o.hasOwnProperty(a))return o[a];if(1===e){var l=Math.round(Math.log((1<<s)-1&~r)/Gt);return t[n][l]}for(var u=i|1<<n,h=n+1;i&1<<h;)h++;for(var c=0,p=0,d=0;p<s;p++){var f=1<<p;f&r||(c+=(d%2?-1:1)*t[n][p]*Ht(t,e-1,h,u,r|f,o),d++)}return o[a]=c,c}function Wt(t,e){var n=[[t[0],t[1],1,0,0,0,-e[0]*t[0],-e[0]*t[1]],[0,0,0,t[0],t[1],1,-e[1]*t[0],-e[1]*t[1]],[t[2],t[3],1,0,0,0,-e[2]*t[2],-e[2]*t[3]],[0,0,0,t[2],t[3],1,-e[3]*t[2],-e[3]*t[3]],[t[4],t[5],1,0,0,0,-e[4]*t[4],-e[4]*t[5]],[0,0,0,t[4],t[5],1,-e[5]*t[4],-e[5]*t[5]],[t[6],t[7],1,0,0,0,-e[6]*t[6],-e[6]*t[7]],[0,0,0,t[6],t[7],1,-e[7]*t[6],-e[7]*t[7]]],i={},r=Ht(n,8,0,0,0,i);if(0!==r){for(var o=[],a=0;a<8;a++)for(var s=0;s<8;s++)null==o[s]&&(o[s]=0),o[s]+=((a+s)%2?-1:1)*Ht(n,7,0===a?1:0,1<<a,1<<s,i)/r*e[a];return function(t,e,n){var i=e*o[6]+n*o[7]+1;t[0]=(e*o[0]+n*o[1]+o[2])/i,t[1]=(e*o[3]+n*o[4]+o[5])/i}}}var Ut=[];function Yt(t,e,n,i,r){if(e.getBoundingClientRect&&a.domSupported&&!Xt(e)){var o=e.___zrEVENTSAVED||(e.___zrEVENTSAVED={}),s=function(t,e,n){for(var i=n?"invTrans":"trans",r=e[i],o=e.srcCoords,a=[],s=[],l=!0,u=0;u<4;u++){var h=t[u].getBoundingClientRect(),c=2*u,p=h.left,d=h.top;a.push(p,d),l=l&&o&&p===o[c]&&d===o[c+1],s.push(t[u].offsetLeft,t[u].offsetTop)}return l&&r?r:(e.srcCoords=a,e[i]=n?Wt(s,a):Wt(a,s))}(function(t,e){var n=e.markers;if(n)return n;n=e.markers=[];for(var i=["left","right"],r=["top","bottom"],o=0;o<4;o++){var a=document.createElement("div"),s=o%2,l=(o>>1)%2;a.style.cssText=["position: absolute","visibility: hidden","padding: 0","margin: 0","border-width: 0","user-select: none","width:0","height:0",i[s]+":0",r[l]+":0",i[1-s]+":auto",r[1-l]+":auto",""].join("!important;"),t.appendChild(a),n.push(a)}return n}(e,o),o,r);if(s)return s(t,n,i),!0}return!1}function Xt(t){return"CANVAS"===t.nodeName.toUpperCase()}var Zt="undefined"!=typeof window&&!!window.addEventListener&&!uni,jt=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,qt=[];function Kt(t,e,n,i){return n=n||{},i||!a.canvasSupported?$t(t,e,n):a.browser.firefox&&null!=e.layerX&&e.layerX!==e.offsetX?(n.zrX=e.layerX,n.zrY=e.layerY):null!=e.offsetX?(n.zrX=e.offsetX,n.zrY=e.offsetY):$t(t,e,n),n}function $t(t,e,n){if(a.domSupported&&t.getBoundingClientRect){var i=e.clientX,r=e.clientY;if(Xt(t)){var o=t.getBoundingClientRect();return n.zrX=i-o.left,void(n.zrY=r-o.top)}if(Yt(qt,t,i,r))return n.zrX=qt[0],void(n.zrY=qt[1])}n.zrX=n.zrY=0}function Jt(t){return t||window.event}function Qt(t,e,n){if(null!=(e=Jt(e)).zrX)return e;var i=e.type;if(i&&i.indexOf("touch")>=0){var r="touchend"!==i?e.targetTouches[0]:e.changedTouches[0];r&&Kt(t,r,e,n)}else{Kt(t,e,e,n);var o=function(t){var e=t.wheelDelta;if(e)return e;var n=t.deltaX,i=t.deltaY;if(null==n||null==i)return e;return 3*(0!==i?Math.abs(i):Math.abs(n))*(i>0?-1:i<0?1:n>0?-1:1)}(e);e.zrDelta=o?o/120:-(e.detail||0)/3}var a=e.button;return null==e.which&&void 0!==a&&jt.test(e.type)&&(e.which=1&a?1:2&a?3:4&a?2:0),e}function te(t,e,n,i){Zt?t?.addEventListener(e,n,i):t.attachEvent("on"+e,n)}var ee=Zt?function(t){t.preventDefault(),t.stopPropagation(),t.cancelBubble=!0}:function(t){t.returnValue=!1,t.cancelBubble=!0};function ne(t){return 2===t.which||3===t.which}var ie=function(){function t(){this._track=[]}return t.prototype.recognize=function(t,e,n){return this._doTrack(t,e,n),this._recognize(t)},t.prototype.clear=function(){return this._track.length=0,this},t.prototype._doTrack=function(t,e,n){var i=t.touches;if(i){for(var r={points:[],touches:[],target:e,event:t},o=0,a=i.length;o<a;o++){var s=i[o],l=Kt(n,s,{});r.points.push([l.zrX,l.zrY]),r.touches.push(s)}this._track.push(r)}},t.prototype._recognize=function(t){for(var e in oe)if(oe.hasOwnProperty(e)){var n=oe[e](this._track,t);if(n)return n}},t}();function re(t){var e=t[1][0]-t[0][0],n=t[1][1]-t[0][1];return Math.sqrt(e*e+n*n)}var oe={pinch:function(t,e){var n=t.length;if(n){var i,r=(t[n-1]||{}).points,o=(t[n-2]||{}).points||r;if(o&&o.length>1&&r&&r.length>1){var a=re(r)/re(o);!isFinite(a)&&(a=1),e.pinchScale=a;var s=[((i=r)[0][0]+i[1][0])/2,(i[0][1]+i[1][1])/2];return e.pinchX=s[0],e.pinchY=s[1],{type:"pinch",target:t[0].target,event:e}}}}},ae="silent";function se(){ee(this.event)}var le=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.handler=null,e}return n(e,t),e.prototype.dispose=function(){},e.prototype.setCursor=function(){},e}(Ft),ue=function(t,e){this.x=t,this.y=e},he=["click","dblclick","mousewheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],ce=function(t){function e(e,n,i,r){var o=t.call(this)||this;return o._hovered=new ue(0,0),o.storage=e,o.painter=n,o.painterRoot=r,i=i||new le,o.proxy=null,o.setHandlerProxy(i),o._draggingMgr=new Vt(o),o}return n(e,t),e.prototype.setHandlerProxy=function(t){this.proxy&&this.proxy.dispose(),t&&(P(he,(function(e){t.on&&t.on(e,this[e],this)}),this),t.handler=this),this.proxy=t},e.prototype.mousemove=function(t){var e=t.zrX,n=t.zrY,i=de(this,e,n),r=this._hovered,o=r.target;o&&!o.__zr&&(o=(r=this.findHover(r.x,r.y)).target);var a=this._hovered=i?new ue(e,n):this.findHover(e,n),s=a.target,l=this.proxy;l.setCursor&&l.setCursor(s?s.cursor:"default"),o&&s!==o&&this.dispatchToElement(r,"mouseout",t),this.dispatchToElement(a,"mousemove",t),s&&s!==o&&this.dispatchToElement(a,"mouseover",t)},e.prototype.mouseout=function(t){var e=t.zrEventControl;"only_globalout"!==e&&this.dispatchToElement(this._hovered,"mouseout",t),"no_globalout"!==e&&this.trigger("globalout",{type:"globalout",event:t})},e.prototype.resize=function(){this._hovered=new ue(0,0)},e.prototype.dispatch=function(t,e){var n=this[t];n&&n.call(this,e)},e.prototype.dispose=function(){this.proxy.dispose(),this.storage=null,this.proxy=null,this.painter=null},e.prototype.setCursorStyle=function(t){var e=this.proxy;e.setCursor&&e.setCursor(t)},e.prototype.dispatchToElement=function(t,e,n){var i=(t=t||{}).target;if(!i||!i.silent){for(var r="on"+e,o=function(t,e,n){return{type:t,event:n,target:e.target,topTarget:e.topTarget,cancelBubble:!1,offsetX:n.zrX,offsetY:n.zrY,gestureEvent:n.gestureEvent,pinchX:n.pinchX,pinchY:n.pinchY,pinchScale:n.pinchScale,wheelDelta:n.zrDelta,zrByTouch:n.zrByTouch,which:n.which,stop:se}}(e,t,n);i&&(i[r]&&(o.cancelBubble=!!i[r].call(i,o)),i.trigger(e,o),i=i.__hostTarget?i.__hostTarget:i.parent,!o.cancelBubble););o.cancelBubble||(this.trigger(e,o),this.painter&&this.painter.eachOtherLayer&&this.painter.eachOtherLayer((function(t){"function"==typeof t[r]&&t[r].call(t,o),t.trigger&&t.trigger(e,o)})))}},e.prototype.findHover=function(t,e,n){for(var i=this.storage.getDisplayList(),r=new ue(t,e),o=i.length-1;o>=0;o--){var a=void 0;if(i[o]!==n&&!i[o].ignore&&(a=pe(i[o],t,e))&&(!r.topTarget&&(r.topTarget=i[o]),a!==ae)){r.target=i[o];break}}return r},e.prototype.processGesture=function(t,e){this._gestureMgr||(this._gestureMgr=new ie);var n=this._gestureMgr;"start"===e&&n.clear();var i=n.recognize(t,this.findHover(t.zrX,t.zrY,null).target,this.proxy.dom);if("end"===e&&n.clear(),i){var r=i.type;t.gestureEvent=r;var o=new ue;o.target=i.target,this.dispatchToElement(o,r,i.event)}},e}(Ft);function pe(t,e,n){if(t[t.rectHover?"rectContain":"contain"](e,n)){for(var i=t,r=void 0,o=!1;i;){if(i.ignoreClip&&(o=!0),!o){var a=i.getClipPath();if(a&&!a.contain(e,n))return!1;i.silent&&(r=!0)}var s=i.__hostTarget;i=s||i.parent}return!r||ae}return!1}function de(t,e,n){var i=t.painter;return e<0||e>i.getWidth()||n<0||n>i.getHeight()}function fe(){return[1,0,0,1,0,0]}function ge(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t}function ye(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t}function ve(t,e,n){var i=e[0]*n[0]+e[2]*n[1],r=e[1]*n[0]+e[3]*n[1],o=e[0]*n[2]+e[2]*n[3],a=e[1]*n[2]+e[3]*n[3],s=e[0]*n[4]+e[2]*n[5]+e[4],l=e[1]*n[4]+e[3]*n[5]+e[5];return t[0]=i,t[1]=r,t[2]=o,t[3]=a,t[4]=s,t[5]=l,t}function me(t,e,n){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4]+n[0],t[5]=e[5]+n[1],t}function _e(t,e,n){var i=e[0],r=e[2],o=e[4],a=e[1],s=e[3],l=e[5],u=Math.sin(n),h=Math.cos(n);return t[0]=i*h+a*u,t[1]=-i*u+a*h,t[2]=r*h+s*u,t[3]=-r*u+h*s,t[4]=h*o+u*l,t[5]=h*l-u*o,t}function xe(t,e,n){var i=n[0],r=n[1];return t[0]=e[0]*i,t[1]=e[1]*r,t[2]=e[2]*i,t[3]=e[3]*r,t[4]=e[4]*i,t[5]=e[5]*r,t}function be(t,e){var n=e[0],i=e[2],r=e[4],o=e[1],a=e[3],s=e[5],l=n*a-o*i;return l?(l=1/l,t[0]=a*l,t[1]=-o*l,t[2]=-i*l,t[3]=n*l,t[4]=(i*s-a*r)*l,t[5]=(o*r-n*s)*l,t):null}function we(t){var e=[1,0,0,1,0,0];return ye(e,t),e}P(["click","mousedown","mouseup","mousewheel","dblclick","contextmenu"],(function(t){ce.prototype[t]=function(e){var n,i,r=e.zrX,o=e.zrY,a=de(this,r,o);if("mouseup"===t&&a||(i=(n=this.findHover(r,o)).target),"mousedown"===t)this._downEl=i,this._downPoint=[e.zrX,e.zrY],this._upEl=i;else if("mouseup"===t)this._upEl=i;else if("click"===t){if(this._downEl!==this._upEl||!this._downPoint||Lt(this._downPoint,[e.zrX,e.zrY])>4)return;this._downPoint=null}this.dispatchToElement(n,t,e)}}));var Se=Object.freeze({__proto__:null,create:fe,identity:ge,copy:ye,mul:ve,translate:me,rotate:_e,scale:xe,invert:be,clone:we}),Me=ge,Ie=5e-5;function Te(t){return t>Ie||t<-5e-5}var Ce=[],Ae=[],De=[1,0,0,1,0,0],Le=Math.abs,ke=function(){function t(){}return t.prototype.setPosition=function(t){this.x=t[0],this.y=t[1]},t.prototype.setScale=function(t){this.scaleX=t[0],this.scaleY=t[1]},t.prototype.setOrigin=function(t){this.originX=t[0],this.originY=t[1]},t.prototype.needLocalTransform=function(){return Te(this.rotation)||Te(this.x)||Te(this.y)||Te(this.scaleX-1)||Te(this.scaleY-1)},t.prototype.updateTransform=function(){var t=this.parent,e=t&&t.transform,n=this.needLocalTransform(),i=this.transform;n||e?(i=i||[1,0,0,1,0,0],n?this.getLocalTransform(i):Me(i),e&&(n?ve(i,t.transform,i):ye(i,t.transform)),this.transform=i,this._resolveGlobalScaleRatio(i)):i&&Me(i)},t.prototype._resolveGlobalScaleRatio=function(t){var e=this.globalScaleRatio;if(null!=e&&1!==e){this.getGlobalScale(Ce);var n=Ce[0]<0?-1:1,i=Ce[1]<0?-1:1,r=((Ce[0]-n)*e+n)/Ce[0]||0,o=((Ce[1]-i)*e+i)/Ce[1]||0;t[0]*=r,t[1]*=r,t[2]*=o,t[3]*=o}this.invTransform=this.invTransform||[1,0,0,1,0,0],be(this.invTransform,t)},t.prototype.getLocalTransform=function(e){return t.getLocalTransform(this,e)},t.prototype.getComputedTransform=function(){for(var t=this,e=[];t;)e.push(t),t=t.parent;for(;t=e.pop();)t.updateTransform();return this.transform},t.prototype.setLocalTransform=function(t){if(t){var e=t[0]*t[0]+t[1]*t[1],n=t[2]*t[2]+t[3]*t[3];Te(e-1)&&(e=Math.sqrt(e)),Te(n-1)&&(n=Math.sqrt(n)),t[0]<0&&(e=-e),t[3]<0&&(n=-n),this.rotation=Math.atan2(-t[1]/n,t[0]/e),e<0&&n<0&&(this.rotation+=Math.PI,e=-e,n=-n),this.x=t[4],this.y=t[5],this.scaleX=e,this.scaleY=n}},t.prototype.decomposeTransform=function(){if(this.transform){var t=this.parent,e=this.transform;t&&t.transform&&(ve(Ae,t.invTransform,e),e=Ae);var n=this.originX,i=this.originY;(n||i)&&(De[4]=n,De[5]=i,ve(Ae,e,De),Ae[4]-=n,Ae[5]-=i,e=Ae),this.setLocalTransform(e)}},t.prototype.getGlobalScale=function(t){var e=this.transform;return t=t||[],e?(t[0]=Math.sqrt(e[0]*e[0]+e[1]*e[1]),t[1]=Math.sqrt(e[2]*e[2]+e[3]*e[3]),e[0]<0&&(t[0]=-t[0]),e[3]<0&&(t[1]=-t[1]),t):(t[0]=1,t[1]=1,t)},t.prototype.transformCoordToLocal=function(t,e){var n=[t,e],i=this.invTransform;return i&&Rt(n,n,i),n},t.prototype.transformCoordToGlobal=function(t,e){var n=[t,e],i=this.transform;return i&&Rt(n,n,i),n},t.prototype.getLineScale=function(){var t=this.transform;return t&&Le(t[0]-1)>1e-10&&Le(t[3]-1)>1e-10?Math.sqrt(Le(t[0]*t[3]-t[2]*t[1])):1},t.getLocalTransform=function(t,e){Me(e=e||[]);var n=t.originX||0,i=t.originY||0,r=t.scaleX,o=t.scaleY,a=t.rotation||0,s=t.x,l=t.y;return e[4]-=n,e[5]-=i,e[0]*=r,e[1]*=o,e[2]*=r,e[3]*=o,e[4]*=r,e[5]*=o,a&&_e(e,e,a),e[4]+=n,e[5]+=i,e[4]+=s,e[5]+=l,e},t.initDefaultProps=function(){var e=t.prototype;e.x=0,e.y=0,e.scaleX=1,e.scaleY=1,e.originX=0,e.originY=0,e.rotation=0,e.globalScaleRatio=1}(),t}(),Pe={linear:function(t){return t},quadraticIn:function(t){return t*t},quadraticOut:function(t){return t*(2-t)},quadraticInOut:function(t){return(t*=2)<1?.5*t*t:-.5*(--t*(t-2)-1)},cubicIn:function(t){return t*t*t},cubicOut:function(t){return--t*t*t+1},cubicInOut:function(t){return(t*=2)<1?.5*t*t*t:.5*((t-=2)*t*t+2)},quarticIn:function(t){return t*t*t*t},quarticOut:function(t){return 1- --t*t*t*t},quarticInOut:function(t){return(t*=2)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2)},quinticIn:function(t){return t*t*t*t*t},quinticOut:function(t){return--t*t*t*t*t+1},quinticInOut:function(t){return(t*=2)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)},sinusoidalIn:function(t){return 1-Math.cos(t*Math.PI/2)},sinusoidalOut:function(t){return Math.sin(t*Math.PI/2)},sinusoidalInOut:function(t){return.5*(1-Math.cos(Math.PI*t))},exponentialIn:function(t){return 0===t?0:Math.pow(1024,t-1)},exponentialOut:function(t){return 1===t?1:1-Math.pow(2,-10*t)},exponentialInOut:function(t){return 0===t?0:1===t?1:(t*=2)<1?.5*Math.pow(1024,t-1):.5*(2-Math.pow(2,-10*(t-1)))},circularIn:function(t){return 1-Math.sqrt(1-t*t)},circularOut:function(t){return Math.sqrt(1- --t*t)},circularInOut:function(t){return(t*=2)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},elasticIn:function(t){var e,n=.1;return 0===t?0:1===t?1:(!n||n<1?(n=1,e=.1):e=.4*Math.asin(1/n)/(2*Math.PI),-n*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/.4))},elasticOut:function(t){var e,n=.1;return 0===t?0:1===t?1:(!n||n<1?(n=1,e=.1):e=.4*Math.asin(1/n)/(2*Math.PI),n*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/.4)+1)},elasticInOut:function(t){var e,n=.1,i=.4;return 0===t?0:1===t?1:(!n||n<1?(n=1,e=.1):e=i*Math.asin(1/n)/(2*Math.PI),(t*=2)<1?n*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/i)*-.5:n*Math.pow(2,-10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/i)*.5+1)},backIn:function(t){var e=1.70158;return t*t*((e+1)*t-e)},backOut:function(t){var e=1.70158;return--t*t*((e+1)*t+e)+1},backInOut:function(t){var e=2.5949095;return(t*=2)<1?t*t*((e+1)*t-e)*.5:.5*((t-=2)*t*((e+1)*t+e)+2)},bounceIn:function(t){return 1-Pe.bounceOut(1-t)},bounceOut:function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},bounceInOut:function(t){return t<.5?.5*Pe.bounceIn(2*t):.5*Pe.bounceOut(2*t-1)+.5}},Oe=function(){function t(t){this._initialized=!1,this._startTime=0,this._pausedTime=0,this._paused=!1,this._life=t.life||1e3,this._delay=t.delay||0,this.loop=null!=t.loop&&t.loop,this.gap=t.gap||0,this.easing=t.easing||"linear",this.onframe=t.onframe,this.ondestroy=t.ondestroy,this.onrestart=t.onrestart}return t.prototype.step=function(t,e){if(this._initialized||(this._startTime=t+this._delay,this._initialized=!0),!this._paused){var n=(t-this._startTime-this._pausedTime)/this._life;n<0&&(n=0),n=Math.min(n,1);var i=this.easing,r="string"==typeof i?Pe[i]:i,o="function"==typeof r?r(n):n;if(this.onframe&&this.onframe(o),1===n){if(!this.loop)return!0;this._restart(t),this.onrestart&&this.onrestart()}return!1}this._pausedTime+=e},t.prototype._restart=function(t){var e=(t-this._startTime-this._pausedTime)%this._life;this._startTime=t-e+this.gap,this._pausedTime=0},t.prototype.pause=function(){this._paused=!0},t.prototype.resume=function(){this._paused=!1},t}(),Re=function(t){this.value=t},Ne=function(){function t(){this._len=0}return t.prototype.insert=function(t){var e=new Re(t);return this.insertEntry(e),e},t.prototype.insertEntry=function(t){this.head?(this.tail.next=t,t.prev=this.tail,t.next=null,this.tail=t):this.head=this.tail=t,this._len++},t.prototype.remove=function(t){var e=t.prev,n=t.next;e?e.next=n:this.head=n,n?n.prev=e:this.tail=e,t.next=t.prev=null,this._len--},t.prototype.len=function(){return this._len},t.prototype.clear=function(){this.head=this.tail=null,this._len=0},t}(),Ee=function(){function t(t){this._list=new Ne,this._maxSize=10,this._map={},this._maxSize=t}return t.prototype.put=function(t,e){var n=this._list,i=this._map,r=null;if(null==i[t]){var o=n.len(),a=this._lastRemovedEntry;if(o>=this._maxSize&&o>0){var s=n.head;n.remove(s),delete i[s.key],r=s.value,this._lastRemovedEntry=s}a?a.value=e:a=new Re(e),a.key=t,n.insertEntry(a),i[t]=a}return r},t.prototype.get=function(t){var e=this._map[t],n=this._list;if(null!=e)return e!==n.tail&&(n.remove(e),n.insertEntry(e)),e.value},t.prototype.clear=function(){this._list.clear(),this._map={}},t.prototype.len=function(){return this._list.len()},t}(),ze={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]};function Be(t){return(t=Math.round(t))<0?0:t>255?255:t}function Ve(t){return t<0?0:t>1?1:t}function Fe(t){var e=t;return e.length&&"%"===e.charAt(e.length-1)?Be(parseFloat(e)/100*255):Be(parseInt(e,10))}function Ge(t){var e=t;return e.length&&"%"===e.charAt(e.length-1)?Ve(parseFloat(e)/100):Ve(parseFloat(e))}function He(t,e,n){return n<0?n+=1:n>1&&(n-=1),6*n<1?t+(e-t)*n*6:2*n<1?e:3*n<2?t+(e-t)*(2/3-n)*6:t}function We(t,e,n){return t+(e-t)*n}function Ue(t,e,n,i,r){return t[0]=e,t[1]=n,t[2]=i,t[3]=r,t}function Ye(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t}var Xe=new Ee(20),Ze=null;function je(t,e){Ze&&Ye(Ze,e),Ze=Xe.put(t,Ze||e.slice())}function qe(t,e){if(t){e=e||[];var n=Xe.get(t);if(n)return Ye(e,n);var i=(t+="").replace(/ /g,"").toLowerCase();if(i in ze)return Ye(e,ze[i]),je(t,e),e;var r,o=i.length;if("#"===i.charAt(0))return 4===o||5===o?(r=parseInt(i.slice(1,4),16))>=0&&r<=4095?(Ue(e,(3840&r)>>4|(3840&r)>>8,240&r|(240&r)>>4,15&r|(15&r)<<4,5===o?parseInt(i.slice(4),16)/15:1),je(t,e),e):void Ue(e,0,0,0,1):7===o||9===o?(r=parseInt(i.slice(1,7),16))>=0&&r<=16777215?(Ue(e,(16711680&r)>>16,(65280&r)>>8,255&r,9===o?parseInt(i.slice(7),16)/255:1),je(t,e),e):void Ue(e,0,0,0,1):void 0;var a=i.indexOf("("),s=i.indexOf(")");if(-1!==a&&s+1===o){var l=i.substr(0,a),u=i.substr(a+1,s-(a+1)).split(","),h=1;switch(l){case"rgba":if(4!==u.length)return 3===u.length?Ue(e,+u[0],+u[1],+u[2],1):Ue(e,0,0,0,1);h=Ge(u.pop());case"rgb":return 3!==u.length?void Ue(e,0,0,0,1):(Ue(e,Fe(u[0]),Fe(u[1]),Fe(u[2]),h),je(t,e),e);case"hsla":return 4!==u.length?void Ue(e,0,0,0,1):(u[3]=Ge(u[3]),Ke(u,e),je(t,e),e);case"hsl":return 3!==u.length?void Ue(e,0,0,0,1):(Ke(u,e),je(t,e),e);default:return}}Ue(e,0,0,0,1)}}function Ke(t,e){var n=(parseFloat(t[0])%360+360)%360/360,i=Ge(t[1]),r=Ge(t[2]),o=r<=.5?r*(i+1):r+i-r*i,a=2*r-o;return Ue(e=e||[],Be(255*He(a,o,n+1/3)),Be(255*He(a,o,n)),Be(255*He(a,o,n-1/3)),1),4===t.length&&(e[3]=t[3]),e}function $e(t,e){var n=qe(t);if(n){for(var i=0;i<3;i++)n[i]=e<0?n[i]*(1-e)|0:(255-n[i])*e+n[i]|0,n[i]>255?n[i]=255:n[i]<0&&(n[i]=0);return an(n,4===n.length?"rgba":"rgb")}}function Je(t){var e=qe(t);if(e)return((1<<24)+(e[0]<<16)+(e[1]<<8)+ +e[2]).toString(16).slice(1)}function Qe(t,e,n){if(e&&e.length&&t>=0&&t<=1){n=n||[];var i=t*(e.length-1),r=Math.floor(i),o=Math.ceil(i),a=e[r],s=e[o],l=i-r;return n[0]=Be(We(a[0],s[0],l)),n[1]=Be(We(a[1],s[1],l)),n[2]=Be(We(a[2],s[2],l)),n[3]=Ve(We(a[3],s[3],l)),n}}var tn=Qe;function en(t,e,n){if(e&&e.length&&t>=0&&t<=1){var i=t*(e.length-1),r=Math.floor(i),o=Math.ceil(i),a=qe(e[r]),s=qe(e[o]),l=i-r,u=an([Be(We(a[0],s[0],l)),Be(We(a[1],s[1],l)),Be(We(a[2],s[2],l)),Ve(We(a[3],s[3],l))],"rgba");return n?{color:u,leftIndex:r,rightIndex:o,value:i}:u}}var nn=en;function rn(t,e,n,i){var r=qe(t);if(t)return r=function(t){if(t){var e,n,i=t[0]/255,r=t[1]/255,o=t[2]/255,a=Math.min(i,r,o),s=Math.max(i,r,o),l=s-a,u=(s+a)/2;if(0===l)e=0,n=0;else{n=u<.5?l/(s+a):l/(2-s-a);var h=((s-i)/6+l/2)/l,c=((s-r)/6+l/2)/l,p=((s-o)/6+l/2)/l;i===s?e=p-c:r===s?e=1/3+h-p:o===s&&(e=2/3+c-h),e<0&&(e+=1),e>1&&(e-=1)}var d=[360*e,n,u];return null!=t[3]&&d.push(t[3]),d}}(r),null!=e&&(r[0]=function(t){return(t=Math.round(t))<0?0:t>360?360:t}(e)),null!=n&&(r[1]=Ge(n)),null!=i&&(r[2]=Ge(i)),an(Ke(r),"rgba")}function on(t,e){var n=qe(t);if(n&&null!=e)return n[3]=Ve(e),an(n,"rgba")}function an(t,e){if(t&&t.length){var n=t[0]+","+t[1]+","+t[2];return"rgba"!==e&&"hsva"!==e&&"hsla"!==e||(n+=","+t[3]),e+"("+n+")"}}function sn(t,e){var n=qe(t);return n?(.299*n[0]+.587*n[1]+.114*n[2])*n[3]/255+(1-n[3])*e:0}var ln=Object.freeze({__proto__:null,parse:qe,lift:$e,toHex:Je,fastLerp:Qe,fastMapToColor:tn,lerp:en,mapToColor:nn,modifyHSL:rn,modifyAlpha:on,stringify:an,lum:sn,random:function(){return"rgb("+Math.round(255*Math.random())+","+Math.round(255*Math.random())+","+Math.round(255*Math.random())+")"}}),un=Array.prototype.slice;function hn(t,e,n){return(e-t)*n+t}function cn(t,e,n,i){for(var r=e.length,o=0;o<r;o++)t[o]=hn(e[o],n[o],i)}function pn(t,e,n,i){for(var r=e.length,o=0;o<r;o++)t[o]=e[o]+n[o]*i;return t}function dn(t,e,n,i){for(var r=e.length,o=r&&e[0].length,a=0;a<r;a++){t[a]||(t[a]=[]);for(var s=0;s<o;s++)t[a][s]=e[a][s]+n[a][s]*i}return t}function fn(t,e,n){var i=t,r=e;if(i.push&&r.push){var o=i.length,a=r.length;if(o!==a)if(o>a)i.length=a;else for(var s=o;s<a;s++)i.push(1===n?r[s]:un.call(r[s]));var l=i[0]&&i[0].length;for(s=0;s<i.length;s++)if(1===n)isNaN(i[s])&&(i[s]=r[s]);else for(var u=0;u<l;u++)isNaN(i[s][u])&&(i[s][u]=r[s][u])}}function gn(t,e){var n=t.length;if(n!==e.length)return!1;for(var i=0;i<n;i++)if(t[i]!==e[i])return!1;return!0}function yn(t,e,n,i,r,o,a){var s=.5*(n-t),l=.5*(i-e);return(2*(e-n)+s+l)*a+(-3*(e-n)-2*s-l)*o+s*r+e}function vn(t,e,n,i,r,o,a,s){for(var l=e.length,u=0;u<l;u++)t[u]=yn(e[u],n[u],i[u],r[u],o,a,s)}function mn(t){if(k(t)){var e=t.length;if(k(t[0])){for(var n=[],i=0;i<e;i++)n.push(un.call(t[i]));return n}return un.call(t)}return t}function _n(t){return t[0]=Math.floor(t[0]),t[1]=Math.floor(t[1]),t[2]=Math.floor(t[2]),"rgba("+t.join(",")+")"}var xn,bn,wn=[0,0,0,0],Sn=function(){function t(t){this.keyframes=[],this.maxTime=0,this.arrDim=0,this.interpolable=!0,this._needsSort=!1,this._isAllValueEqual=!0,this._lastFrame=0,this._lastFramePercent=0,this.propName=t}return t.prototype.isFinished=function(){return this._finished},t.prototype.setFinished=function(){this._finished=!0,this._additiveTrack&&this._additiveTrack.setFinished()},t.prototype.needsAnimate=function(){return!this._isAllValueEqual&&this.keyframes.length>=2&&this.interpolable},t.prototype.getAdditiveTrack=function(){return this._additiveTrack},t.prototype.addKeyframe=function(t,e){t>=this.maxTime?this.maxTime=t:this._needsSort=!0;var n=this.keyframes,i=n.length;if(this.interpolable)if(k(e)){var r=function(t){return k(t&&t[0])?2:1}(e);if(i>0&&this.arrDim!==r)return void(this.interpolable=!1);if(1===r&&"number"!=typeof e[0]||2===r&&"number"!=typeof e[0][0])return void(this.interpolable=!1);if(i>0){var o=n[i-1];this._isAllValueEqual&&(1===r&&gn(e,o.value)||(this._isAllValueEqual=!1))}this.arrDim=r}else{if(this.arrDim>0)return void(this.interpolable=!1);if("string"==typeof e){var a=qe(e);a?(e=a,this.isValueColor=!0):this.interpolable=!1}else if("number"!=typeof e||isNaN(e))return void(this.interpolable=!1);if(this._isAllValueEqual&&i>0){o=n[i-1];(this.isValueColor&&!gn(o.value,e)||o.value!==e)&&(this._isAllValueEqual=!1)}}var s={time:t,value:e,percent:0};return this.keyframes.push(s),s},t.prototype.prepare=function(t){var e=this.keyframes;this._needsSort&&e.sort((function(t,e){return t.time-e.time}));for(var n=this.arrDim,i=e.length,r=e[i-1],o=0;o<i;o++)e[o].percent=e[o].time/this.maxTime,n>0&&o!==i-1&&fn(e[o].value,r.value,n);if(t&&this.needsAnimate()&&t.needsAnimate()&&n===t.arrDim&&this.isValueColor===t.isValueColor&&!t._finished){this._additiveTrack=t;var a=e[0].value;for(o=0;o<i;o++)0===n?this.isValueColor?e[o].additiveValue=pn([],e[o].value,a,-1):e[o].additiveValue=e[o].value-a:1===n?e[o].additiveValue=pn([],e[o].value,a,-1):2===n&&(e[o].additiveValue=dn([],e[o].value,a,-1))}},t.prototype.step=function(t,e){if(!this._finished){this._additiveTrack&&this._additiveTrack._finished&&(this._additiveTrack=null);var n,i=null!=this._additiveTrack,r=i?"additiveValue":"value",o=this.keyframes,a=this.keyframes.length,s=this.propName,l=this.arrDim,u=this.isValueColor;if(e<0)n=0;else if(e<this._lastFramePercent){for(n=Math.min(this._lastFrame+1,a-1);n>=0&&!(o[n].percent<=e);n--);n=Math.min(n,a-2)}else{for(n=this._lastFrame;n<a&&!(o[n].percent>e);n++);n=Math.min(n-1,a-2)}var h=o[n+1],c=o[n];if(c&&h){this._lastFrame=n,this._lastFramePercent=e;var p=h.percent-c.percent;if(0!==p){var d=(e-c.percent)/p,f=i?this._additiveValue:u?wn:t[s];if((l>0||u)&&!f&&(f=this._additiveValue=[]),this.useSpline){var g=o[n][r],y=o[0===n?n:n-1][r],v=o[n>a-2?a-1:n+1][r],m=o[n>a-3?a-1:n+2][r];if(l>0)1===l?vn(f,y,g,v,m,d,d*d,d*d*d):function(t,e,n,i,r,o,a,s){for(var l=e.length,u=e[0].length,h=0;h<l;h++){t[h]||(t[1]=[]);for(var c=0;c<u;c++)t[h][c]=yn(e[h][c],n[h][c],i[h][c],r[h][c],o,a,s)}}(f,y,g,v,m,d,d*d,d*d*d);else if(u)vn(f,y,g,v,m,d,d*d,d*d*d),i||(t[s]=_n(f));else{var _=void 0;_=this.interpolable?yn(y,g,v,m,d,d*d,d*d*d):v,i?this._additiveValue=_:t[s]=_}}else if(l>0)1===l?cn(f,c[r],h[r],d):function(t,e,n,i){for(var r=e.length,o=r&&e[0].length,a=0;a<r;a++){t[a]||(t[a]=[]);for(var s=0;s<o;s++)t[a][s]=hn(e[a][s],n[a][s],i)}}(f,c[r],h[r],d);else if(u)cn(f,c[r],h[r],d),i||(t[s]=_n(f));else{_=void 0;_=this.interpolable?hn(c[r],h[r],d):function(t,e,n){return n>.5?e:t}(c[r],h[r],d),i?this._additiveValue=_:t[s]=_}i&&this._addToTarget(t)}}}},t.prototype._addToTarget=function(t){var e=this.arrDim,n=this.propName,i=this._additiveValue;0===e?this.isValueColor?(qe(t[n],wn),pn(wn,wn,i,1),t[n]=_n(wn)):t[n]=t[n]+i:1===e?pn(t[n],t[n],i,1):2===e&&dn(t[n],t[n],i,1)},t}(),Mn=function(){function t(t,e,n){this._tracks={},this._trackKeys=[],this._delay=0,this._maxTime=0,this._paused=!1,this._started=0,this._clip=null,this._target=t,this._loop=e,e&&n?b("Can' use additive animation on looped animation."):this._additiveAnimators=n}return t.prototype.getTarget=function(){return this._target},t.prototype.changeTarget=function(t){this._target=t},t.prototype.when=function(t,e){return this.whenWithKeys(t,e,z(e))},t.prototype.whenWithKeys=function(t,e,n){for(var i=this._tracks,r=0;r<n.length;r++){var o=n[r],a=i[o];if(!a){a=i[o]=new Sn(o);var s=void 0,l=this._getAdditiveTrack(o);if(l){var u=l.keyframes[l.keyframes.length-1];s=u&&u.value,l.isValueColor&&s&&(s=_n(s))}else s=this._target[o];if(null==s)continue;0!==t&&a.addKeyframe(0,mn(s)),this._trackKeys.push(o)}a.addKeyframe(t,mn(e[o]))}return this._maxTime=Math.max(this._maxTime,t),this},t.prototype.pause=function(){this._clip.pause(),this._paused=!0},t.prototype.resume=function(){this._clip.resume(),this._paused=!1},t.prototype.isPaused=function(){return!!this._paused},t.prototype._doneCallback=function(){this._setTracksFinished(),this._clip=null;var t=this._doneList;if(t)for(var e=t.length,n=0;n<e;n++)t[n].call(this)},t.prototype._abortedCallback=function(){this._setTracksFinished();var t=this.animation,e=this._abortedList;if(t&&t.removeClip(this._clip),this._clip=null,e)for(var n=0;n<e.length;n++)e[n].call(this)},t.prototype._setTracksFinished=function(){for(var t=this._tracks,e=this._trackKeys,n=0;n<e.length;n++)t[e[n]].setFinished()},t.prototype._getAdditiveTrack=function(t){var e,n=this._additiveAnimators;if(n)for(var i=0;i<n.length;i++){var r=n[i].getTrack(t);r&&(e=r)}return e},t.prototype.start=function(t,e){if(!(this._started>0)){this._started=1;for(var n=this,i=[],r=0;r<this._trackKeys.length;r++){var o=this._trackKeys[r],a=this._tracks[o],s=this._getAdditiveTrack(o),l=a.keyframes;if(a.prepare(s),a.needsAnimate())i.push(a);else if(!a.interpolable){var u=l[l.length-1];u&&(n._target[a.propName]=u.value)}}if(i.length||e){var h=new Oe({life:this._maxTime,loop:this._loop,delay:this._delay,onframe:function(t){n._started=2;var e=n._additiveAnimators;if(e){for(var r=!1,o=0;o<e.length;o++)if(e[o]._clip){r=!0;break}r||(n._additiveAnimators=null)}for(o=0;o<i.length;o++)i[o].step(n._target,t);var a=n._onframeList;if(a)for(o=0;o<a.length;o++)a[o](n._target,t)},ondestroy:function(){n._doneCallback()}});this._clip=h,this.animation&&this.animation.addClip(h),t&&"spline"!==t&&(h.easing=t)}else this._doneCallback();return this}},t.prototype.stop=function(t){if(this._clip){var e=this._clip;t&&e.onframe(1),this._abortedCallback()}},t.prototype.delay=function(t){return this._delay=t,this},t.prototype.during=function(t){return t&&(this._onframeList||(this._onframeList=[]),this._onframeList.push(t)),this},t.prototype.done=function(t){return t&&(this._doneList||(this._doneList=[]),this._doneList.push(t)),this},t.prototype.aborted=function(t){return t&&(this._abortedList||(this._abortedList=[]),this._abortedList.push(t)),this},t.prototype.getClip=function(){return this._clip},t.prototype.getTrack=function(t){return this._tracks[t]},t.prototype.stopTracks=function(t,e){if(!t.length||!this._clip)return!0;for(var n=this._tracks,i=this._trackKeys,r=0;r<t.length;r++){var o=n[t[r]];o&&(e?o.step(this._target,1):1===this._started&&o.step(this._target,0),o.setFinished())}var a=!0;for(r=0;r<i.length;r++)if(!n[i[r]].isFinished()){a=!1;break}return a&&this._abortedCallback(),a},t.prototype.saveFinalToTarget=function(t,e){if(t){e=e||this._trackKeys;for(var n=0;n<e.length;n++){var i=e[n],r=this._tracks[i];if(r&&!r.isFinished()){var o=r.keyframes,a=o[o.length-1];if(a){var s=mn(a.value);r.isValueColor&&(s=_n(s)),t[i]=s}}}}},t.prototype.__changeFinalValue=function(t,e){e=e||z(t);for(var n=0;n<e.length;n++){var i=e[n],r=this._tracks[i];if(r){var o=r.keyframes;if(o.length>1){var a=o.pop();r.addKeyframe(a.time,t[i]),r.prepare(r.getAdditiveTrack())}}}},t}(),In=function(){function t(t,e){this.x=t||0,this.y=e||0}return t.prototype.copy=function(t){return this.x=t.x,this.y=t.y,this},t.prototype.clone=function(){return new t(this.x,this.y)},t.prototype.set=function(t,e){return this.x=t,this.y=e,this},t.prototype.equal=function(t){return t.x===this.x&&t.y===this.y},t.prototype.add=function(t){return this.x+=t.x,this.y+=t.y,this},t.prototype.scale=function(t){this.x*=t,this.y*=t},t.prototype.scaleAndAdd=function(t,e){this.x+=t.x*e,this.y+=t.y*e},t.prototype.sub=function(t){return this.x-=t.x,this.y-=t.y,this},t.prototype.dot=function(t){return this.x*t.x+this.y*t.y},t.prototype.len=function(){return Math.sqrt(this.x*this.x+this.y*this.y)},t.prototype.lenSquare=function(){return this.x*this.x+this.y*this.y},t.prototype.normalize=function(){var t=this.len();return this.x/=t,this.y/=t,this},t.prototype.distance=function(t){var e=this.x-t.x,n=this.y-t.y;return Math.sqrt(e*e+n*n)},t.prototype.distanceSquare=function(t){var e=this.x-t.x,n=this.y-t.y;return e*e+n*n},t.prototype.negate=function(){return this.x=-this.x,this.y=-this.y,this},t.prototype.transform=function(t){if(t){var e=this.x,n=this.y;return this.x=t[0]*e+t[2]*n+t[4],this.y=t[1]*e+t[3]*n+t[5],this}},t.prototype.toArray=function(t){return t[0]=this.x,t[1]=this.y,t},t.prototype.fromArray=function(t){this.x=t[0],this.y=t[1]},t.set=function(t,e,n){t.x=e,t.y=n},t.copy=function(t,e){t.x=e.x,t.y=e.y},t.len=function(t){return Math.sqrt(t.x*t.x+t.y*t.y)},t.lenSquare=function(t){return t.x*t.x+t.y*t.y},t.dot=function(t,e){return t.x*e.x+t.y*e.y},t.add=function(t,e,n){t.x=e.x+n.x,t.y=e.y+n.y},t.sub=function(t,e,n){t.x=e.x-n.x,t.y=e.y-n.y},t.scale=function(t,e,n){t.x=e.x*n,t.y=e.y*n},t.scaleAndAdd=function(t,e,n,i){t.x=e.x+n.x*i,t.y=e.y+n.y*i},t.lerp=function(t,e,n,i){var r=1-i;t.x=r*e.x+i*n.x,t.y=r*e.y+i*n.y},t}(),Tn=Math.min,Cn=Math.max,An=new In,Dn=new In,Ln=new In,kn=new In,Pn=new In,On=new In,Rn=function(){function t(t,e,n,i){n<0&&isFinite(n)&&(t+=n,n=-n),i<0&&isFinite(i)&&(e+=i,i=-i),this.x=t,this.y=e,this.width=n,this.height=i}return t.prototype.union=function(t){var e=Tn(t.x,this.x),n=Tn(t.y,this.y);isFinite(this.x)&&isFinite(this.width)?this.width=Cn(t.x+t.width,this.x+this.width)-e:this.width=t.width,isFinite(this.y)&&isFinite(this.height)?this.height=Cn(t.y+t.height,this.y+this.height)-n:this.height=t.height,this.x=e,this.y=n},t.prototype.applyTransform=function(e){t.applyTransform(this,this,e)},t.prototype.calculateTransform=function(t){var e=this,n=t.width/e.width,i=t.height/e.height,r=[1,0,0,1,0,0];return me(r,r,[-e.x,-e.y]),xe(r,r,[n,i]),me(r,r,[t.x,t.y]),r},t.prototype.intersect=function(e,n){if(!e)return!1;e instanceof t||(e=t.create(e));var i=this,r=i.x,o=i.x+i.width,a=i.y,s=i.y+i.height,l=e.x,u=e.x+e.width,h=e.y,c=e.y+e.height,p=!(o<l||u<r||s<h||c<a);if(n){var d=1/0,f=0,g=Math.abs(o-l),y=Math.abs(u-r),v=Math.abs(s-h),m=Math.abs(c-a),_=Math.min(g,y),x=Math.min(v,m);o<l||u<r?_>f&&(f=_,g<y?In.set(On,-g,0):In.set(On,y,0)):_<d&&(d=_,g<y?In.set(Pn,g,0):In.set(Pn,-y,0)),s<h||c<a?x>f&&(f=x,v<m?In.set(On,0,-v):In.set(On,0,m)):_<d&&(d=_,v<m?In.set(Pn,0,v):In.set(Pn,0,-m))}return n&&In.copy(n,p?Pn:On),p},t.prototype.contain=function(t,e){var n=this;return t>=n.x&&t<=n.x+n.width&&e>=n.y&&e<=n.y+n.height},t.prototype.clone=function(){return new t(this.x,this.y,this.width,this.height)},t.prototype.copy=function(e){t.copy(this,e)},t.prototype.plain=function(){return{x:this.x,y:this.y,width:this.width,height:this.height}},t.prototype.isFinite=function(){return isFinite(this.x)&&isFinite(this.y)&&isFinite(this.width)&&isFinite(this.height)},t.prototype.isZero=function(){return 0===this.width||0===this.height},t.create=function(e){return new t(e.x,e.y,e.width,e.height)},t.copy=function(t,e){t.x=e.x,t.y=e.y,t.width=e.width,t.height=e.height},t.applyTransform=function(e,n,i){if(i){if(i[1]<1e-5&&i[1]>-1e-5&&i[2]<1e-5&&i[2]>-1e-5){var r=i[0],o=i[3],a=i[4],s=i[5];return e.x=n.x*r+a,e.y=n.y*o+s,e.width=n.width*r,e.height=n.height*o,e.width<0&&(e.x+=e.width,e.width=-e.width),void(e.height<0&&(e.y+=e.height,e.height=-e.height))}An.x=Ln.x=n.x,An.y=kn.y=n.y,Dn.x=kn.x=n.x+n.width,Dn.y=Ln.y=n.y+n.height,An.transform(i),kn.transform(i),Dn.transform(i),Ln.transform(i),e.x=Tn(An.x,Dn.x,Ln.x,kn.x),e.y=Tn(An.y,Dn.y,Ln.y,kn.y);var l=Cn(An.x,Dn.x,Ln.x,kn.x),u=Cn(An.y,Dn.y,Ln.y,kn.y);e.width=l-e.x,e.height=u-e.y}else e!==n&&t.copy(e,n)},t}(),Nn={},En="12px sans-serif";var zn={measureText:function(t,e){return xn||(xn=C().getContext("2d")),bn!==e&&(bn=xn.font=e||En),xn.measureText(t,e)}};function Bn(t,e){var n=Nn[e=e||En];n||(n=Nn[e]=new Ee(500));var i=n.get(t);return null==i&&(i=zn.measureText(t,e).width,n.put(t,i)),i}function Vn(t,e,n,i){var r=Bn(t,e),o=Wn(e),a=Gn(0,r,n),s=Hn(0,o,i);return new Rn(a,s,r,o)}function Fn(t,e,n,i){var r=((t||"")+"").split("\n");if(1===r.length)return Vn(r[0],e,n,i);for(var o=new Rn(0,0,0,0),a=0;a<r.length;a++){var s=Vn(r[a],e,n,i);0===a?o.copy(s):o.union(s)}return o}function Gn(t,e,n){return"right"===n?t-=e:"center"===n&&(t-=e/2),t}function Hn(t,e,n){return"middle"===n?t-=e/2:"bottom"===n&&(t-=e),t}function Wn(t){return Bn("国",t)}function Un(t,e){return"string"==typeof t?t.lastIndexOf("%")>=0?parseFloat(t)/100*e:parseFloat(t):t}function Yn(t,e,n){var i=e.position||"inside",r=null!=e.distance?e.distance:5,o=n.height,a=n.width,s=o/2,l=n.x,u=n.y,h="left",c="top";if(i instanceof Array)l+=Un(i[0],n.width),u+=Un(i[1],n.height),h=null,c=null;else switch(i){case"left":l-=r,u+=s,h="right",c="middle";break;case"right":l+=r+a,u+=s,c="middle";break;case"top":l+=a/2,u-=r,h="center",c="bottom";break;case"bottom":l+=a/2,u+=o+r,h="center";break;case"inside":l+=a/2,u+=s,h="center",c="middle";break;case"insideLeft":l+=r,u+=s,c="middle";break;case"insideRight":l+=a-r,u+=s,h="right",c="middle";break;case"insideTop":l+=a/2,u+=r,h="center";break;case"insideBottom":l+=a/2,u+=o-r,h="center",c="bottom";break;case"insideTopLeft":l+=r,u+=r;break;case"insideTopRight":l+=a-r,u+=r,h="right";break;case"insideBottomLeft":l+=r,u+=o-r,c="bottom";break;case"insideBottomRight":l+=a-r,u+=o-r,h="right",c="bottom"}return(t=t||{}).x=l,t.y=u,t.align=h,t.verticalAlign=c,t}var Xn=1;"undefined"!=typeof window&&(Xn=Math.max(window.devicePixelRatio||window.screen&&window.screen.deviceXDPI/window.screen.logicalXDPI||1,1));var Zn=Xn,jn="#333333",qn="#cccccc",Kn="__zr_normal__",$n=["x","y","scaleX","scaleY","originX","originY","rotation","ignore"],Jn={x:!0,y:!0,scaleX:!0,scaleY:!0,originX:!0,originY:!0,rotation:!0,ignore:!1},Qn={},ti=new Rn(0,0,0,0),ei=function(){function t(t){this.id=x(),this.animators=[],this.currentStates=[],this.states={},this._init(t)}return t.prototype._init=function(t){this.attr(t)},t.prototype.drift=function(t,e,n){switch(this.draggable){case"horizontal":e=0;break;case"vertical":t=0}var i=this.transform;i||(i=this.transform=[1,0,0,1,0,0]),i[4]+=t,i[5]+=e,this.decomposeTransform(),this.markRedraw()},t.prototype.beforeUpdate=function(){},t.prototype.afterUpdate=function(){},t.prototype.update=function(){this.updateTransform(),this.__dirty&&this.updateInnerText()},t.prototype.updateInnerText=function(t){var e=this._textContent;if(e&&(!e.ignore||t)){this.textConfig||(this.textConfig={});var n=this.textConfig,i=n.local,r=e.attachedTransform,o=void 0,a=void 0,s=!1;r.parent=i?this:null;var l=!1;if(r.x=e.x,r.y=e.y,r.originX=e.originX,r.originY=e.originY,r.rotation=e.rotation,r.scaleX=e.scaleX,r.scaleY=e.scaleY,null!=n.position){var u=ti;n.layoutRect?u.copy(n.layoutRect):u.copy(this.getBoundingRect()),i||u.applyTransform(this.transform),this.calculateTextPosition?this.calculateTextPosition(Qn,n,u):Yn(Qn,n,u),r.x=Qn.x,r.y=Qn.y,o=Qn.align,a=Qn.verticalAlign;var h=n.origin;if(h&&null!=n.rotation){var c=void 0,p=void 0;"center"===h?(c=.5*u.width,p=.5*u.height):(c=Un(h[0],u.width),p=Un(h[1],u.height)),l=!0,r.originX=-r.x+c+(i?0:u.x),r.originY=-r.y+p+(i?0:u.y)}}null!=n.rotation&&(r.rotation=n.rotation);var d=n.offset;d&&(r.x+=d[0],r.y+=d[1],l||(r.originX=-d[0],r.originY=-d[1]));var f=null==n.inside?"string"==typeof n.position&&n.position.indexOf("inside")>=0:n.inside,g=this._innerTextDefaultStyle||(this._innerTextDefaultStyle={}),y=void 0,v=void 0,m=void 0;f&&this.canBeInsideText()?(y=n.insideFill,v=n.insideStroke,null!=y&&"auto"!==y||(y=this.getInsideTextFill()),null!=v&&"auto"!==v||(v=this.getInsideTextStroke(y),m=!0)):(y=n.outsideFill,v=n.outsideStroke,null!=y&&"auto"!==y||(y=this.getOutsideFill()),null!=v&&"auto"!==v||(v=this.getOutsideStroke(y),m=!0)),(y=y||"#000000")===g.fill&&v===g.stroke&&m===g.autoStroke&&o===g.align&&a===g.verticalAlign||(s=!0,g.fill=y,g.stroke=v,g.autoStroke=m,g.align=o,g.verticalAlign=a,e.setDefaultTextStyle(g)),s&&e.dirtyStyle(),e.markRedraw()}},t.prototype.canBeInsideText=function(){return!0},t.prototype.getInsideTextFill=function(){return"#ffffff"},t.prototype.getInsideTextStroke=function(t){return"#000000"},t.prototype.getOutsideFill=function(){return this.__zr&&this.__zr.isDarkMode()?qn:jn},t.prototype.getOutsideStroke=function(t){var e=this.__zr&&this.__zr.getBackgroundColor(),n="string"==typeof e&&qe(e);n||(n=[255,255,255,1]);for(var i=n[3],r=this.__zr.isDarkMode(),o=0;o<3;o++)n[o]=n[o]*i+(r?0:255)*(1-i);return n[3]=1,an(n,"rgba")},t.prototype.traverse=function(t,e){},t.prototype.attrKV=function(t,e){"textConfig"===t?this.setTextConfig(e):"textContent"===t?this.setTextContent(e):"clipPath"===t?this.setClipPath(e):"extra"===t?(this.extra=this.extra||{},I(this.extra,e)):this[t]=e},t.prototype.hide=function(){this.ignore=!0,this.markRedraw()},t.prototype.show=function(){this.ignore=!1,this.markRedraw()},t.prototype.attr=function(t,e){if("string"==typeof t)this.attrKV(t,e);else if(Y(t))for(var n=z(t),i=0;i<n.length;i++){var r=n[i];this.attrKV(r,t[r])}return this.markRedraw(),this},t.prototype.saveCurrentToNormalState=function(t){this._innerSaveToNormal(t);for(var e=this._normalState,n=0;n<this.animators.length;n++){var i=this.animators[n],r=i.__fromStateTransition;if(!r||r===Kn){var o=i.targetName,a=o?e[o]:e;i.saveFinalToTarget(a)}}},t.prototype._innerSaveToNormal=function(t){var e=this._normalState;e||(e=this._normalState={}),t.textConfig&&!e.textConfig&&(e.textConfig=this.textConfig),this._savePrimaryToNormal(t,e,$n)},t.prototype._savePrimaryToNormal=function(t,e,n){for(var i=0;i<n.length;i++){var r=n[i];null==t[r]||r in e||(e[r]=this[r])}},t.prototype.hasState=function(){return this.currentStates.length>0},t.prototype.getState=function(t){return this.states[t]},t.prototype.ensureState=function(t){var e=this.states;return e[t]||(e[t]={}),e[t]},t.prototype.clearStates=function(t){this.useState(Kn,!1,t)},t.prototype.useState=function(e,n,i){var r=e===Kn;if(this.hasState()||!r){var o=this.currentStates,a=this.stateTransition;if(!(A(o,e)>=0)||!n&&1!==o.length){var s;if(this.stateProxy&&!r&&(s=this.stateProxy(e)),s||(s=this.states&&this.states[e]),s||r){r||this.saveCurrentToNormalState(s);var l=!(!s||!s.hoverLayer);return l&&this._toggleHoverLayerFlag(!0),this._applyStateObj(e,s,this._normalState,n,!i&&!this.__inHover&&a&&a.duration>0,a),this._textContent&&this._textContent.useState(e,n),this._textGuide&&this._textGuide.useState(e,n),r?(this.currentStates=[],this._normalState={}):n?this.currentStates.push(e):this.currentStates=[e],this._updateAnimationTargets(),this.markRedraw(),!l&&this.__inHover&&(this._toggleHoverLayerFlag(!1),this.__dirty&=~t.REDARAW_BIT),s}b("State "+e+" not exists.")}}},t.prototype.useStates=function(e,n){if(e.length){var i=[],r=this.currentStates,o=e.length,a=o===r.length;if(a)for(var s=0;s<o;s++)if(e[s]!==r[s]){a=!1;break}if(a)return;for(s=0;s<o;s++){var l=e[s],u=void 0;this.stateProxy&&(u=this.stateProxy(l,e)),u||(u=this.states[l]),u&&i.push(u)}var h=!(!i[o-1]||!i[o-1].hoverLayer);h&&this._toggleHoverLayerFlag(!0);var c=this._mergeStates(i),p=this.stateTransition;this.saveCurrentToNormalState(c),this._applyStateObj(e.join(","),c,this._normalState,!1,!n&&!this.__inHover&&p&&p.duration>0,p),this._textContent&&this._textContent.useStates(e),this._textGuide&&this._textGuide.useStates(e),this._updateAnimationTargets(),this.currentStates=e.slice(),this.markRedraw(),!h&&this.__inHover&&(this._toggleHoverLayerFlag(!1),this.__dirty&=~t.REDARAW_BIT)}else this.clearStates()},t.prototype._updateAnimationTargets=function(){for(var t=0;t<this.animators.length;t++){var e=this.animators[t];e.targetName&&e.changeTarget(this[e.targetName])}},t.prototype.removeState=function(t){var e=A(this.currentStates,t);if(e>=0){var n=this.currentStates.slice();n.splice(e,1),this.useStates(n)}},t.prototype.replaceState=function(t,e,n){var i=this.currentStates.slice(),r=A(i,t),o=A(i,e)>=0;r>=0?o?i.splice(r,1):i[r]=e:n&&!o&&i.push(e),this.useStates(i)},t.prototype.toggleState=function(t,e){e?this.useState(t,!0):this.removeState(t)},t.prototype._mergeStates=function(t){for(var e,n={},i=0;i<t.length;i++){var r=t[i];I(n,r),r.textConfig&&I(e=e||{},r.textConfig)}return e&&(n.textConfig=e),n},t.prototype._applyStateObj=function(t,e,n,i,r,o){var a=!(e&&i);e&&e.textConfig?(this.textConfig=I({},i?this.textConfig:n.textConfig),I(this.textConfig,e.textConfig)):a&&n.textConfig&&(this.textConfig=n.textConfig);for(var s={},l=!1,u=0;u<$n.length;u++){var h=$n[u],c=r&&Jn[h];e&&null!=e[h]?c?(l=!0,s[h]=e[h]):this[h]=e[h]:a&&null!=n[h]&&(c?(l=!0,s[h]=n[h]):this[h]=n[h])}if(!r)for(u=0;u<this.animators.length;u++){var p=this.animators[u],d=p.targetName;p.__changeFinalValue(d?(e||n)[d]:e||n)}l&&this._transitionState(t,s,o)},t.prototype._attachComponent=function(t){if(t.__zr&&!t.__hostTarget)throw new Error("Text element has been added to zrender.");if(t===this)throw new Error("Recursive component attachment.");var e=this.__zr;e&&t.addSelfToZr(e),t.__zr=e,t.__hostTarget=this},t.prototype._detachComponent=function(t){t.__zr&&t.removeSelfFromZr(t.__zr),t.__zr=null,t.__hostTarget=null},t.prototype.getClipPath=function(){return this._clipPath},t.prototype.setClipPath=function(t){this._clipPath&&this._clipPath!==t&&this.removeClipPath(),this._attachComponent(t),this._clipPath=t,this.markRedraw()},t.prototype.removeClipPath=function(){var t=this._clipPath;t&&(this._detachComponent(t),this._clipPath=null,this.markRedraw())},t.prototype.getTextContent=function(){return this._textContent},t.prototype.setTextContent=function(t){var e=this._textContent;if(e!==t){if(e&&e!==t&&this.removeTextContent(),t.__zr&&!t.__hostTarget)throw new Error("Text element has been added to zrender.");t.attachedTransform=new ke,this._attachComponent(t),this._textContent=t,this.markRedraw()}},t.prototype.setTextConfig=function(t){this.textConfig||(this.textConfig={}),I(this.textConfig,t),this.markRedraw()},t.prototype.removeTextConfig=function(){this.textConfig=null,this.markRedraw()},t.prototype.removeTextContent=function(){var t=this._textContent;t&&(t.attachedTransform=null,this._detachComponent(t),this._textContent=null,this._innerTextDefaultStyle=null,this.markRedraw())},t.prototype.getTextGuideLine=function(){return this._textGuide},t.prototype.setTextGuideLine=function(t){this._textGuide&&this._textGuide!==t&&this.removeTextGuideLine(),this._attachComponent(t),this._textGuide=t,this.markRedraw()},t.prototype.removeTextGuideLine=function(){var t=this._textGuide;t&&(this._detachComponent(t),this._textGuide=null,this.markRedraw())},t.prototype.markRedraw=function(){this.__dirty|=t.REDARAW_BIT;var e=this.__zr;e&&(this.__inHover?e.refreshHover():e.refresh()),this.__hostTarget&&this.__hostTarget.markRedraw()},t.prototype.dirty=function(){this.markRedraw()},t.prototype._toggleHoverLayerFlag=function(t){this.__inHover=t;var e=this._textContent,n=this._textGuide;e&&(e.__inHover=t),n&&(n.__inHover=t)},t.prototype.addSelfToZr=function(t){this.__zr=t;var e=this.animators;if(e)for(var n=0;n<e.length;n++)t.animation.addAnimator(e[n]);this._clipPath&&this._clipPath.addSelfToZr(t),this._textContent&&this._textContent.addSelfToZr(t),this._textGuide&&this._textGuide.addSelfToZr(t)},t.prototype.removeSelfFromZr=function(t){this.__zr=null;var e=this.animators;if(e)for(var n=0;n<e.length;n++)t.animation.removeAnimator(e[n]);this._clipPath&&this._clipPath.removeSelfFromZr(t),this._textContent&&this._textContent.removeSelfFromZr(t),this._textGuide&&this._textGuide.removeSelfFromZr(t)},t.prototype.animate=function(t,e){var n=t?this[t]:this;if(n){var i=new Mn(n,e);return this.addAnimator(i,t),i}b('Property "'+t+'" is not existed in element '+this.id)},t.prototype.addAnimator=function(t,e){var n=this.__zr,i=this;t.during((function(){i.updateDuringAnimation(e)})).done((function(){var e=i.animators,n=A(e,t);n>=0&&e.splice(n,1)})),this.animators.push(t),n&&n.animation.addAnimator(t),n&&n.wakeUp()},t.prototype.updateDuringAnimation=function(t){this.markRedraw()},t.prototype.stopAnimation=function(t,e){for(var n=this.animators,i=n.length,r=[],o=0;o<i;o++){var a=n[o];t&&t!==a.scope?r.push(a):a.stop(e)}return this.animators=r,this},t.prototype.animateTo=function(t,e,n){ni(this,t,e,n)},t.prototype.animateFrom=function(t,e,n){ni(this,t,e,n,!0)},t.prototype._transitionState=function(t,e,n,i){for(var r=ni(this,e,n,i),o=0;o<r.length;o++)r[o].__fromStateTransition=t},t.prototype.getBoundingRect=function(){return null},t.prototype.getPaintRect=function(){return null},t.REDARAW_BIT=1,t.initDefaultProps=function(){var e=t.prototype;e.type="element",e.name="",e.ignore=!1,e.silent=!1,e.isGroup=!1,e.draggable=!1,e.dragging=!1,e.ignoreClip=!1,e.__inHover=!1,e.__dirty=t.REDARAW_BIT;var n={};function i(t,e,i){n[t+e+i]||(console.warn("DEPRECATED: '"+t+"' has been deprecated. use '"+e+"', '"+i+"' instead"),n[t+e+i]=!0)}function r(t,n,r,o){function a(t,e){Object.defineProperty(e,0,{get:function(){return t[r]},set:function(e){t[r]=e}}),Object.defineProperty(e,1,{get:function(){return t[o]},set:function(e){t[o]=e}})}Object.defineProperty(e,t,{get:function(){(i(t,r,o),this[n])||a(this,this[n]=[]);return this[n]},set:function(e){i(t,r,o),this[r]=e[0],this[o]=e[1],this[n]=e,a(this,e)}})}Object.defineProperty&&(!a.browser.ie||a.browser.version>8)&&(r("position","_legacyPos","x","y"),r("scale","_legacyScale","scaleX","scaleY"),r("origin","_legacyOrigin","originX","originY"))}(),t}();function ni(t,e,n,i,r){var o=[];oi(t,"",t,e,n=n||{},i,o,r);var a=o.length,s=!1,l=n.done,u=n.aborted,h=function(){s=!0,--a<=0&&(s?l&&l():u&&u())},c=function(){--a<=0&&(s?l&&l():u&&u())};a||l&&l(),o.length>0&&n.during&&o[0].during((function(t,e){n.during(e)}));for(var p=0;p<o.length;p++){var d=o[p];h&&d.done(h),c&&d.aborted(c),d.start(n.easing,n.force)}return o}function ii(t,e,n){for(var i=0;i<n;i++)t[i]=e[i]}function ri(t,e,n){if(k(e[n]))if(k(t[n])||(t[n]=[]),Z(e[n])){var i=e[n].length;t[n].length!==i&&(t[n]=new e[n].constructor(i),ii(t[n],e[n],i))}else{var r=e[n],o=t[n],a=r.length;if(k(r[0]))for(var s=r[0].length,l=0;l<a;l++)o[l]?ii(o[l],r[l],s):o[l]=Array.prototype.slice.call(r[l]);else ii(o,r,a);o.length=r.length}else t[n]=e[n]}function oi(t,e,n,i,r,o,a,s){for(var l=[],u=[],h=z(i),c=r.duration,p=r.delay,d=r.additive,f=r.setToFinal,g=!Y(o),y=0;y<h.length;y++){if(null!=n[I=h[y]]&&null!=i[I]&&(g||o[I]))if(Y(i[I])&&!k(i[I])){if(e){s||(n[I]=i[I],t.updateDuringAnimation(e));continue}oi(t,I,n[I],i[I],r,o&&o[I],a,s)}else l.push(I),u.push(I);else s||(n[I]=i[I],t.updateDuringAnimation(e),u.push(I))}var v=l.length;if(v>0||r.force&&!a.length){for(var m=t.animators,_=[],x=0;x<m.length;x++)m[x].targetName===e&&_.push(m[x]);if(!d&&_.length)for(x=0;x<_.length;x++){if(_[x].stopTracks(u)){var b=A(m,_[x]);m.splice(b,1)}}var w=void 0,S=void 0,M=void 0;if(s){S={},f&&(w={});for(x=0;x<v;x++){S[I=l[x]]=n[I],f?w[I]=i[I]:n[I]=i[I]}}else if(f){M={};for(x=0;x<v;x++){var I;M[I=l[x]]=mn(n[I]),ri(n,i,I)}}var T=new Mn(n,!1,d?_:null);T.targetName=e,r.scope&&(T.scope=r.scope),f&&w&&T.whenWithKeys(0,w,l),M&&T.whenWithKeys(0,M,l),T.whenWithKeys(null==c?500:c,s?S:i,l).delay(p||0),t.addAnimator(T,e),a.push(T)}}L(ei,Ft),L(ei,ke);function ai(t,e,n,i){var r=e+1;if(r===n)return 1;if(i(t[r++],t[e])<0){for(;r<n&&i(t[r],t[r-1])<0;)r++;!function(t,e,n){n--;for(;e<n;){var i=t[e];t[e++]=t[n],t[n--]=i}}(t,e,r)}else for(;r<n&&i(t[r],t[r-1])>=0;)r++;return r-e}function si(t,e,n,i,r){for(i===e&&i++;i<n;i++){for(var o,a=t[i],s=e,l=i;s<l;)r(a,t[o=s+l>>>1])<0?l=o:s=o+1;var u=i-s;switch(u){case 3:t[s+3]=t[s+2];case 2:t[s+2]=t[s+1];case 1:t[s+1]=t[s];break;default:for(;u>0;)t[s+u]=t[s+u-1],u--}t[s]=a}}function li(t,e,n,i,r,o){var a=0,s=0,l=1;if(o(t,e[n+r])>0){for(s=i-r;l<s&&o(t,e[n+r+l])>0;)a=l,(l=1+(l<<1))<=0&&(l=s);l>s&&(l=s),a+=r,l+=r}else{for(s=r+1;l<s&&o(t,e[n+r-l])<=0;)a=l,(l=1+(l<<1))<=0&&(l=s);l>s&&(l=s);var u=a;a=r-l,l=r-u}for(a++;a<l;){var h=a+(l-a>>>1);o(t,e[n+h])>0?a=h+1:l=h}return l}function ui(t,e,n,i,r,o){var a=0,s=0,l=1;if(o(t,e[n+r])<0){for(s=r+1;l<s&&o(t,e[n+r-l])<0;)a=l,(l=1+(l<<1))<=0&&(l=s);l>s&&(l=s);var u=a;a=r-l,l=r-u}else{for(s=i-r;l<s&&o(t,e[n+r+l])>=0;)a=l,(l=1+(l<<1))<=0&&(l=s);l>s&&(l=s),a+=r,l+=r}for(a++;a<l;){var h=a+(l-a>>>1);o(t,e[n+h])<0?l=h:a=h+1}return l}function hi(t,e){var n,i,r=7,o=0;t.length;var a=[];function s(s){var l=n[s],u=i[s],h=n[s+1],c=i[s+1];i[s]=u+c,s===o-3&&(n[s+1]=n[s+2],i[s+1]=i[s+2]),o--;var p=ui(t[h],t,l,u,0,e);l+=p,0!==(u-=p)&&0!==(c=li(t[l+u-1],t,h,c,c-1,e))&&(u<=c?function(n,i,o,s){var l=0;for(l=0;l<i;l++)a[l]=t[n+l];var u=0,h=o,c=n;if(t[c++]=t[h++],0==--s){for(l=0;l<i;l++)t[c+l]=a[u+l];return}if(1===i){for(l=0;l<s;l++)t[c+l]=t[h+l];return void(t[c+s]=a[u])}var p,d,f,g=r;for(;;){p=0,d=0,f=!1;do{if(e(t[h],a[u])<0){if(t[c++]=t[h++],d++,p=0,0==--s){f=!0;break}}else if(t[c++]=a[u++],p++,d=0,1==--i){f=!0;break}}while((p|d)<g);if(f)break;do{if(0!==(p=ui(t[h],a,u,i,0,e))){for(l=0;l<p;l++)t[c+l]=a[u+l];if(c+=p,u+=p,(i-=p)<=1){f=!0;break}}if(t[c++]=t[h++],0==--s){f=!0;break}if(0!==(d=li(a[u],t,h,s,0,e))){for(l=0;l<d;l++)t[c+l]=t[h+l];if(c+=d,h+=d,0===(s-=d)){f=!0;break}}if(t[c++]=a[u++],1==--i){f=!0;break}g--}while(p>=7||d>=7);if(f)break;g<0&&(g=0),g+=2}if((r=g)<1&&(r=1),1===i){for(l=0;l<s;l++)t[c+l]=t[h+l];t[c+s]=a[u]}else{if(0===i)throw new Error;for(l=0;l<i;l++)t[c+l]=a[u+l]}}(l,u,h,c):function(n,i,o,s){var l=0;for(l=0;l<s;l++)a[l]=t[o+l];var u=n+i-1,h=s-1,c=o+s-1,p=0,d=0;if(t[c--]=t[u--],0==--i){for(p=c-(s-1),l=0;l<s;l++)t[p+l]=a[l];return}if(1===s){for(d=(c-=i)+1,p=(u-=i)+1,l=i-1;l>=0;l--)t[d+l]=t[p+l];return void(t[c]=a[h])}var f=r;for(;;){var g=0,y=0,v=!1;do{if(e(a[h],t[u])<0){if(t[c--]=t[u--],g++,y=0,0==--i){v=!0;break}}else if(t[c--]=a[h--],y++,g=0,1==--s){v=!0;break}}while((g|y)<f);if(v)break;do{if(0!==(g=i-ui(a[h],t,n,i,i-1,e))){for(i-=g,d=(c-=g)+1,p=(u-=g)+1,l=g-1;l>=0;l--)t[d+l]=t[p+l];if(0===i){v=!0;break}}if(t[c--]=a[h--],1==--s){v=!0;break}if(0!==(y=s-li(t[u],a,0,s,s-1,e))){for(s-=y,d=(c-=y)+1,p=(h-=y)+1,l=0;l<y;l++)t[d+l]=a[p+l];if(s<=1){v=!0;break}}if(t[c--]=t[u--],0==--i){v=!0;break}f--}while(g>=7||y>=7);if(v)break;f<0&&(f=0),f+=2}(r=f)<1&&(r=1);if(1===s){for(d=(c-=i)+1,p=(u-=i)+1,l=i-1;l>=0;l--)t[d+l]=t[p+l];t[c]=a[h]}else{if(0===s)throw new Error;for(p=c-(s-1),l=0;l<s;l++)t[p+l]=a[l]}}(l,u,h,c))}return n=[],i=[],{mergeRuns:function(){for(;o>1;){var t=o-2;if(t>=1&&i[t-1]<=i[t]+i[t+1]||t>=2&&i[t-2]<=i[t]+i[t-1])i[t-1]<i[t+1]&&t--;else if(i[t]>i[t+1])break;s(t)}},forceMergeRuns:function(){for(;o>1;){var t=o-2;t>0&&i[t-1]<i[t+1]&&t--,s(t)}},pushRun:function(t,e){n[o]=t,i[o]=e,o+=1}}}function ci(t,e,n,i){n||(n=0),i||(i=t.length);var r=i-n;if(!(r<2)){var o=0;if(r<32)si(t,n,i,n+(o=ai(t,n,i,e)),e);else{var a=hi(t,e),s=function(t){for(var e=0;t>=32;)e|=1&t,t>>=1;return t+e}(r);do{if((o=ai(t,n,i,e))<s){var l=r;l>s&&(l=s),si(t,n,n+l,n+o,e),o=l}a.pushRun(n,o),a.mergeRuns(),r-=o,n+=o}while(0!==r);a.forceMergeRuns()}}}var pi=!1;function di(){pi||(pi=!0,console.warn("z / z2 / zlevel of displayable is invalid, which may cause unexpected errors"))}function fi(t,e){return t.zlevel===e.zlevel?t.z===e.z?t.z2-e.z2:t.z-e.z:t.zlevel-e.zlevel}var gi,yi,vi=function(){function t(){this._roots=[],this._displayList=[],this._displayListLen=0,this.displayableSortFunc=fi}return t.prototype.traverse=function(t,e){for(var n=0;n<this._roots.length;n++)this._roots[n].traverse(t,e)},t.prototype.getDisplayList=function(t,e){e=e||!1;var n=this._displayList;return!t&&n.length||this.updateDisplayList(e),n},t.prototype.updateDisplayList=function(t){this._displayListLen=0;for(var e=this._roots,n=this._displayList,i=0,r=e.length;i<r;i++)this._updateAndAddDisplayable(e[i],null,t);n.length=this._displayListLen,a.canvasSupported&&ci(n,fi)},t.prototype._updateAndAddDisplayable=function(t,e,n){if(!t.ignore||n){t.beforeUpdate(),t.update(),t.afterUpdate();var i=t.getClipPath();if(t.ignoreClip)e=null;else if(i){e=e?e.slice():[];for(var r=i,o=t;r;)r.parent=o,r.updateTransform(),e.push(r),o=r,r=r.getClipPath()}if(t.childrenRef){for(var a=t.childrenRef(),s=0;s<a.length;s++){var l=a[s];t.__dirty&&(l.__dirty|=ei.REDARAW_BIT),this._updateAndAddDisplayable(l,e,n)}t.__dirty=0}else{var u=t;e&&e.length?u.__clipPaths=e:u.__clipPaths&&u.__clipPaths.length>0&&(u.__clipPaths=[]),isNaN(u.z)&&(di(),u.z=0),isNaN(u.z2)&&(di(),u.z2=0),isNaN(u.zlevel)&&(di(),u.zlevel=0),this._displayList[this._displayListLen++]=u}var h=t.getDecalElement&&t.getDecalElement();h&&this._updateAndAddDisplayable(h,e,n);var c=t.getTextGuideLine();c&&this._updateAndAddDisplayable(c,e,n);var p=t.getTextContent();p&&this._updateAndAddDisplayable(p,e,n)}},t.prototype.addRoot=function(t){t.__zr&&t.__zr.storage===this||this._roots.push(t)},t.prototype.delRoot=function(t){if(t instanceof Array)for(var e=0,n=t.length;e<n;e++)this.delRoot(t[e]);else{var i=A(this._roots,t);i>=0&&this._roots.splice(i,1)}},t.prototype.delAllRoots=function(){this._roots=[],this._displayList=[],this._displayListLen=0},t.prototype.getRoots=function(){return this._roots},t.prototype.dispose=function(){this._displayList=null,this._roots=null},t}(),mi="undefined"!=typeof window&&(window.requestAnimationFrame&&window.requestAnimationFrame.bind(window)||window.msRequestAnimationFrame&&window.msRequestAnimationFrame.bind(window)||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame)||function(t){return setTimeout(t,16)},_i=function(t){function e(e){var n=t.call(this)||this;return n._running=!1,n._time=0,n._pausedTime=0,n._pauseStart=0,n._paused=!1,e=e||{},n.stage=e.stage||{},n.onframe=e.onframe||function(){},n}return n(e,t),e.prototype.addClip=function(t){t.animation&&this.removeClip(t),this._clipsHead?(this._clipsTail.next=t,t.prev=this._clipsTail,t.next=null,this._clipsTail=t):this._clipsHead=this._clipsTail=t,t.animation=this},e.prototype.addAnimator=function(t){t.animation=this;var e=t.getClip();e&&this.addClip(e)},e.prototype.removeClip=function(t){if(t.animation){var e=t.prev,n=t.next;e?e.next=n:this._clipsHead=n,n?n.prev=e:this._clipsTail=e,t.next=t.prev=t.animation=null}},e.prototype.removeAnimator=function(t){var e=t.getClip();e&&this.removeClip(e),t.animation=null},e.prototype.update=function(t){for(var e=(new Date).getTime()-this._pausedTime,n=e-this._time,i=this._clipsHead;i;){var r=i.next;i.step(e,n)?(i.ondestroy&&i.ondestroy(),this.removeClip(i),i=r):i=r}this._time=e,t||(this.onframe(n),this.trigger("frame",n),this.stage.update&&this.stage.update())},e.prototype._startLoop=function(){var t=this;this._running=!0,mi((function e(){t._running&&(mi(e),!t._paused&&t.update())}))},e.prototype.start=function(){this._running||(this._time=(new Date).getTime(),this._pausedTime=0,this._startLoop())},e.prototype.stop=function(){this._running=!1},e.prototype.pause=function(){this._paused||(this._pauseStart=(new Date).getTime(),this._paused=!0)},e.prototype.resume=function(){this._paused&&(this._pausedTime+=(new Date).getTime()-this._pauseStart,this._paused=!1)},e.prototype.clear=function(){for(var t=this._clipsHead;t;){var e=t.next;t.prev=t.next=t.animation=null,t=e}this._clipsHead=this._clipsTail=null},e.prototype.isFinished=function(){return null==this._clipsHead},e.prototype.animate=function(t,e){e=e||{},this.start();var n=new Mn(t,e.loop);return this.addAnimator(n),n},e}(Ft),xi=a.domSupported,bi=(yi={pointerdown:1,pointerup:1,pointermove:1,pointerout:1},{mouse:gi=["click","dblclick","mousewheel","wheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],touch:["touchstart","touchend","touchmove"],pointer:O(gi,(function(t){var e=t.replace("mouse","pointer");return yi.hasOwnProperty(e)?e:t}))}),wi=["mousemove","mouseup"],Si=["pointermove","pointerup"],Mi=!1;function Ii(t){var e=t.pointerType;return"pen"===e||"touch"===e}function Ti(t){t&&(t.zrByTouch=!0)}function Ci(t,e){for(var n=e,i=!1;n&&9!==n.nodeType&&!(i=n.domBelongToZr||n!==e&&n===t.painterRoot);)n=n.parentNode;return i}var Ai=function(t,e){this.stopPropagation=ft,this.stopImmediatePropagation=ft,this.preventDefault=ft,this.type=e.type,this.target=this.currentTarget=t.dom,this.pointerType=e.pointerType,this.clientX=e.clientX,this.clientY=e.clientY},Di={mousedown:function(t){t=Qt(this.dom,t),this.__mayPointerCapture=[t.zrX,t.zrY],this.trigger("mousedown",t)},mousemove:function(t){t=Qt(this.dom,t);var e=this.__mayPointerCapture;!e||t.zrX===e[0]&&t.zrY===e[1]||this.__togglePointerCapture(!0),this.trigger("mousemove",t)},mouseup:function(t){t=Qt(this.dom,t),this.__togglePointerCapture(!1),this.trigger("mouseup",t)},mouseout:function(t){Ci(this,(t=Qt(this.dom,t)).toElement||t.relatedTarget)||(this.__pointerCapturing&&(t.zrEventControl="no_globalout"),this.trigger("mouseout",t))},wheel:function(t){Mi=!0,t=Qt(this.dom,t),this.trigger("mousewheel",t)},mousewheel:function(t){Mi||(t=Qt(this.dom,t),this.trigger("mousewheel",t))},touchstart:function(t){Ti(t=Qt(this.dom,t)),this.__lastTouchMoment=new Date,this.handler.processGesture(t,"start"),Di.mousemove.call(this,t),Di.mousedown.call(this,t)},touchmove:function(t){Ti(t=Qt(this.dom,t)),this.handler.processGesture(t,"change"),Di.mousemove.call(this,t)},touchend:function(t){Ti(t=Qt(this.dom,t)),this.handler.processGesture(t,"end"),Di.mouseup.call(this,t),+new Date-+this.__lastTouchMoment<300&&Di.click.call(this,t)},pointerdown:function(t){Di.mousedown.call(this,t)},pointermove:function(t){Ii(t)||Di.mousemove.call(this,t)},pointerup:function(t){Di.mouseup.call(this,t)},pointerout:function(t){Ii(t)||Di.mouseout.call(this,t)}};P(["click","dblclick","contextmenu"],(function(t){Di[t]=function(e){e=Qt(this.dom,e),this.trigger(t,e)}}));var Li={pointermove:function(t){Ii(t)||Li.mousemove.call(this,t)},pointerup:function(t){Li.mouseup.call(this,t)},mousemove:function(t){this.trigger("mousemove",t)},mouseup:function(t){var e=this.__pointerCapturing;this.__togglePointerCapture(!1),this.trigger("mouseup",t),e&&(t.zrEventControl="only_globalout",this.trigger("mouseout",t))}};function ki(t,e){var n=e.domHandlers;a.pointerEventsSupported?P(bi.pointer,(function(i){Oi(e,i,(function(e){n[i].call(t,e)}))})):(a.touchEventsSupported&&P(bi.touch,(function(i){Oi(e,i,(function(r){n[i].call(t,r),function(t){t.touching=!0,null!=t.touchTimer&&(clearTimeout(t.touchTimer),t.touchTimer=null),t.touchTimer=setTimeout((function(){t.touching=!1,t.touchTimer=null}),700)}(e)}))})),P(bi.mouse,(function(i){Oi(e,i,(function(r){r=Jt(r),e.touching||n[i].call(t,r)}))})))}function Pi(t,e){function n(n){Oi(e,n,(function(i){i=Jt(i),Ci(t,i.target)||(i=function(t,e){return Qt(t.dom,new Ai(t,e),!0)}(t,i),e.domHandlers[n].call(t,i))}),{capture:!0})}a.pointerEventsSupported?P(Si,n):a.touchEventsSupported||P(wi,n)}function Oi(t,e,n,i){t.mounted[e]=n,t.listenerOpts[e]=i,te(t.domTarget,e,n,i)}function Ri(t){var e,n,i,r,o=t.mounted;for(var a in o)o.hasOwnProperty(a)&&(e=t.domTarget,n=a,i=o[a],r=t.listenerOpts[a],Zt?e.removeEventListener(n,i,r):e.detachEvent("on"+n,i));t.mounted={}}var Ni=function(t,e){this.mounted={},this.listenerOpts={},this.touching=!1,this.domTarget=t,this.domHandlers=e},Ei=function(t){function e(e,n){var i=t.call(this)||this;return i.__pointerCapturing=!1,i.dom=e,i.painterRoot=n,i._localHandlerScope=new Ni(e,Di),xi&&(i._globalHandlerScope=new Ni(document,Li)),ki(i,i._localHandlerScope),i}return n(e,t),e.prototype.dispose=function(){Ri(this._localHandlerScope),xi&&Ri(this._globalHandlerScope)},e.prototype.setCursor=function(t){this.dom.style&&(this.dom.style.cursor=t||"default")},e.prototype.__togglePointerCapture=function(t){if(this.__mayPointerCapture=null,xi&&+this.__pointerCapturing^+t){this.__pointerCapturing=t;var e=this._globalHandlerScope;t?Pi(this,e):Ri(e)}},e}(Ft),zi=function(t){function e(e){var n=t.call(this)||this;return n.isGroup=!0,n._children=[],n.attr(e),n}return n(e,t),e.prototype.childrenRef=function(){return this._children},e.prototype.children=function(){return this._children.slice()},e.prototype.childAt=function(t){return this._children[t]},e.prototype.childOfName=function(t){for(var e=this._children,n=0;n<e.length;n++)if(e[n].name===t)return e[n]},e.prototype.childCount=function(){return this._children.length},e.prototype.add=function(t){if(t&&(t!==this&&t.parent!==this&&(this._children.push(t),this._doAdd(t)),t.__hostTarget))throw"This elemenet has been used as an attachment";return this},e.prototype.addBefore=function(t,e){if(t&&t!==this&&t.parent!==this&&e&&e.parent===this){var n=this._children,i=n.indexOf(e);i>=0&&(n.splice(i,0,t),this._doAdd(t))}return this},e.prototype.replaceAt=function(t,e){var n=this._children,i=n[e];if(t&&t!==this&&t.parent!==this&&t!==i){n[e]=t,i.parent=null;var r=this.__zr;r&&i.removeSelfFromZr(r),this._doAdd(t)}return this},e.prototype._doAdd=function(t){t.parent&&t.parent.remove(t),t.parent=this;var e=this.__zr;e&&e!==t.__zr&&t.addSelfToZr(e),e&&e.refresh()},e.prototype.remove=function(t){var e=this.__zr,n=this._children,i=A(n,t);return i<0||(n.splice(i,1),t.parent=null,e&&t.removeSelfFromZr(e),e&&e.refresh()),this},e.prototype.removeAll=function(){for(var t=this._children,e=this.__zr,n=0;n<t.length;n++){var i=t[n];e&&i.removeSelfFromZr(e),i.parent=null}return t.length=0,this},e.prototype.eachChild=function(t,e){for(var n=this._children,i=0;i<n.length;i++){var r=n[i];t.call(e,r,i)}return this},e.prototype.traverse=function(t,e){for(var n=0;n<this._children.length;n++){var i=this._children[n],r=t.call(e,i);i.isGroup&&!r&&i.traverse(t,e)}return this},e.prototype.addSelfToZr=function(e){t.prototype.addSelfToZr.call(this,e);for(var n=0;n<this._children.length;n++){this._children[n].addSelfToZr(e)}},e.prototype.removeSelfFromZr=function(e){t.prototype.removeSelfFromZr.call(this,e);for(var n=0;n<this._children.length;n++){this._children[n].removeSelfFromZr(e)}},e.prototype.getBoundingRect=function(t){for(var e=new Rn(0,0,0,0),n=t||this._children,i=[],r=null,o=0;o<n.length;o++){var a=n[o];if(!a.ignore&&!a.invisible){var s=a.getBoundingRect(),l=a.getLocalTransform(i);l?(Rn.applyTransform(e,s,l),(r=r||e.clone()).union(e)):(r=r||s.clone()).union(s)}}return r||e},e}(ei);zi.prototype.type="group";
-/*!
-    * ZRender, a high performance 2d drawing library.
-    *
-    * Copyright (c) 2013, Baidu Inc.
-    * All rights reserved.
-    *
-    * LICENSE
-    * https://github.com/ecomfe/zrender/blob/master/LICENSE.txt
-    */
-var Bi=!a.canvasSupported,Vi={},Fi={};var Gi=function(){function t(t,e,n){var i=this;this._sleepAfterStill=10,this._stillFrameAccum=0,this._needsRefresh=!0,this._needsRefreshHover=!0,this._darkMode=!1,n=n||{},this.dom=e,this.id=t;var r=new vi,o=n.renderer||"canvas";if(Bi)throw new Error("IE8 support has been dropped since 5.0");if(Vi[o]||(o=z(Vi)[0]),!Vi[o])throw new Error("Renderer '"+o+"' is not imported. Please import it first.");n.useDirtyRect=null!=n.useDirtyRect&&n.useDirtyRect;var s=new Vi[o](e,r,n,t);this.storage=r,this.painter=s;var l=a.node||a.worker?null:new Ei(s.getViewportRoot(),s.root);this.handler=new ce(r,s,l,s.root),this.animation=new _i({stage:{update:function(){return i._flush(!0)}}}),this.animation.start()}return t.prototype.add=function(t){t&&(this.storage.addRoot(t),t.addSelfToZr(this),this.refresh())},t.prototype.remove=function(t){t&&(this.storage.delRoot(t),t.removeSelfFromZr(this),this.refresh())},t.prototype.configLayer=function(t,e){this.painter.configLayer&&this.painter.configLayer(t,e),this.refresh()},t.prototype.setBackgroundColor=function(t){this.painter.setBackgroundColor&&this.painter.setBackgroundColor(t),this.refresh(),this._backgroundColor=t,this._darkMode=function(t){if(!t)return!1;if("string"==typeof t)return sn(t,1)<.4;if(t.colorStops){for(var e=t.colorStops,n=0,i=e.length,r=0;r<i;r++)n+=sn(e[r].color,1);return(n/=i)<.4}return!1}(t)},t.prototype.getBackgroundColor=function(){return this._backgroundColor},t.prototype.setDarkMode=function(t){this._darkMode=t},t.prototype.isDarkMode=function(){return this._darkMode},t.prototype.refreshImmediately=function(t){t||this.animation.update(!0),this._needsRefresh=!1,this.painter.refresh(),this._needsRefresh=!1},t.prototype.refresh=function(){this._needsRefresh=!0,this.animation.start()},t.prototype.flush=function(){this._flush(!1)},t.prototype._flush=function(t){var e,n=(new Date).getTime();this._needsRefresh&&(e=!0,this.refreshImmediately(t)),this._needsRefreshHover&&(e=!0,this.refreshHoverImmediately());var i=(new Date).getTime();e?(this._stillFrameAccum=0,this.trigger("rendered",{elapsedTime:i-n})):this._sleepAfterStill>0&&(this._stillFrameAccum++,this._stillFrameAccum>this._sleepAfterStill&&this.animation.stop())},t.prototype.setSleepAfterStill=function(t){this._sleepAfterStill=t},t.prototype.wakeUp=function(){this.animation.start(),this._stillFrameAccum=0},t.prototype.addHover=function(t){},t.prototype.removeHover=function(t){},t.prototype.clearHover=function(){},t.prototype.refreshHover=function(){this._needsRefreshHover=!0},t.prototype.refreshHoverImmediately=function(){this._needsRefreshHover=!1,this.painter.refreshHover&&"canvas"===this.painter.getType()&&this.painter.refreshHover()},t.prototype.resize=function(t){t=t||{},this.painter.resize(t.width,t.height),this.handler.resize()},t.prototype.clearAnimation=function(){this.animation.clear()},t.prototype.getWidth=function(){return this.painter.getWidth()},t.prototype.getHeight=function(){return this.painter.getHeight()},t.prototype.pathToImage=function(t,e){if(this.painter.pathToImage)return this.painter.pathToImage(t,e)},t.prototype.setCursorStyle=function(t){this.handler.setCursorStyle(t)},t.prototype.findHover=function(t,e){return this.handler.findHover(t,e)},t.prototype.on=function(t,e,n){return this.handler.on(t,e,n),this},t.prototype.off=function(t,e){this.handler.off(t,e)},t.prototype.trigger=function(t,e){this.handler.trigger(t,e)},t.prototype.clear=function(){for(var t=this.storage.getRoots(),e=0;e<t.length;e++)t[e]instanceof zi&&t[e].removeSelfFromZr(this);this.storage.delAllRoots(),this.painter.clear()},t.prototype.dispose=function(){var t;this.animation.stop(),this.clear(),this.storage.dispose(),this.painter.dispose(),this.handler.dispose(),this.animation=this.storage=this.painter=this.handler=null,t=this.id,delete Fi[t]},t}();function Hi(t,e){var n=new Gi(x(),t,e);return Fi[n.id]=n,n}function Wi(t,e){Vi[t]=e}var Ui=Object.freeze({__proto__:null,init:Hi,dispose:function(t){t.dispose()},disposeAll:function(){for(var t in Fi)Fi.hasOwnProperty(t)&&Fi[t].dispose();Fi={}},getInstance:function(t){return Fi[t]},registerPainter:Wi,version:"5.1.0"}),Yi=1e-4;function Xi(t,e,n,i){var r=e[1]-e[0],o=n[1]-n[0];if(0===r)return 0===o?n[0]:(n[0]+n[1])/2;if(i)if(r>0){if(t<=e[0])return n[0];if(t>=e[1])return n[1]}else{if(t>=e[0])return n[0];if(t<=e[1])return n[1]}else{if(t===e[0])return n[0];if(t===e[1])return n[1]}return(t-e[0])/r*o+n[0]}function Zi(t,e){switch(t){case"center":case"middle":t="50%";break;case"left":case"top":t="0%";break;case"right":case"bottom":t="100%"}return"string"==typeof t?(n=t,n.replace(/^\s+|\s+$/g,"")).match(/%$/)?parseFloat(t)/100*e:parseFloat(t):null==t?NaN:+t;var n}function ji(t,e,n){return null==e&&(e=10),e=Math.min(Math.max(0,e),20),t=(+t).toFixed(e),n?t:+t}function qi(t){return t.sort((function(t,e){return t-e})),t}function Ki(t){if(t=+t,isNaN(t))return 0;for(var e=1,n=0;Math.round(t*e)/e!==t;)e*=10,n++;return n}function $i(t){var e=t.toString(),n=e.indexOf("e");if(n>0){var i=+e.slice(n+1);return i<0?-i:0}var r=e.indexOf(".");return r<0?0:e.length-1-r}function Ji(t,e){var n=Math.log,i=Math.LN10,r=Math.floor(n(t[1]-t[0])/i),o=Math.round(n(Math.abs(e[1]-e[0]))/i),a=Math.min(Math.max(-r+o,0),20);return isFinite(a)?a:20}function Qi(t,e,n){if(!t[e])return 0;var i=R(t,(function(t,e){return t+(isNaN(e)?0:e)}),0);if(0===i)return 0;for(var r=Math.pow(10,n),o=O(t,(function(t){return(isNaN(t)?0:t)/i*r*100})),a=100*r,s=O(o,(function(t){return Math.floor(t)})),l=R(s,(function(t,e){return t+e}),0),u=O(o,(function(t,e){return t-s[e]}));l<a;){for(var h=Number.NEGATIVE_INFINITY,c=null,p=0,d=u.length;p<d;++p)u[p]>h&&(h=u[p],c=p);++s[c],u[c]=0,++l}return s[e]/r}var tr=9007199254740991;function er(t){var e=2*Math.PI;return(t%e+e)%e}function nr(t){return t>-1e-4&&t<Yi}var ir=/^(?:(\d{4})(?:[-\/](\d{1,2})(?:[-\/](\d{1,2})(?:[T ](\d{1,2})(?::(\d{1,2})(?::(\d{1,2})(?:[.,](\d+))?)?)?(Z|[\+\-]\d\d:?\d\d)?)?)?)?)?$/;function rr(t){if(t instanceof Date)return t;if("string"==typeof t){var e=ir.exec(t);if(!e)return new Date(NaN);if(e[8]){var n=+e[4]||0;return"Z"!==e[8].toUpperCase()&&(n-=+e[8].slice(0,3)),new Date(Date.UTC(+e[1],+(e[2]||1)-1,+e[3]||1,n,+(e[5]||0),+e[6]||0,+e[7]||0))}return new Date(+e[1],+(e[2]||1)-1,+e[3]||1,+e[4]||0,+(e[5]||0),+e[6]||0,+e[7]||0)}return null==t?new Date(NaN):new Date(Math.round(t))}function or(t){return Math.pow(10,ar(t))}function ar(t){if(0===t)return 0;var e=Math.floor(Math.log(t)/Math.LN10);return t/Math.pow(10,e)>=10&&e++,e}function sr(t,e){var n=ar(t),i=Math.pow(10,n),r=t/i;return t=(e?r<1.5?1:r<2.5?2:r<4?3:r<7?5:10:r<1?1:r<2?2:r<3?3:r<5?5:10)*i,n>=-20?+t.toFixed(n<0?-n:0):t}function lr(t,e){var n=(t.length-1)*e+1,i=Math.floor(n),r=+t[i-1],o=n-i;return o?r+o*(t[i]-r):r}function ur(t){t.sort((function(t,e){return s(t,e,0)?-1:1}));for(var e=-1/0,n=1,i=0;i<t.length;){for(var r=t[i].interval,o=t[i].close,a=0;a<2;a++)r[a]<=e&&(r[a]=e,o[a]=a?1:1-n),e=r[a],n=o[a];r[0]===r[1]&&o[0]*o[1]!=1?t.splice(i,1):i++}return t;function s(t,e,n){return t.interval[n]<e.interval[n]||t.interval[n]===e.interval[n]&&(t.close[n]-e.close[n]==(n?-1:1)||!n&&s(t,e,1))}}function hr(t){var e=parseFloat(t);return e==t&&(0!==e||"string"!=typeof t||t.indexOf("x")<=0)?e:NaN}function cr(t){return!isNaN(hr(t))}function pr(){return Math.round(9*Math.random())}function dr(t,e){return 0===e?t:dr(e,t%e)}function fr(t,e){return null==t?e:null==e?t:t*e/dr(t,e)}"undefined"!=typeof console&&console.warn&&console.log;function gr(t){0}function yr(t){throw new Error(t)}var vr="series\0",mr="\0_ec_\0";function _r(t){return t instanceof Array?t:null==t?[]:[t]}function xr(t,e,n){if(t){t[e]=t[e]||{},t.emphasis=t.emphasis||{},t.emphasis[e]=t.emphasis[e]||{};for(var i=0,r=n.length;i<r;i++){var o=n[i];!t.emphasis[e].hasOwnProperty(o)&&t[e].hasOwnProperty(o)&&(t.emphasis[e][o]=t[e][o])}}}var br=["fontStyle","fontWeight","fontSize","fontFamily","rich","tag","color","textBorderColor","textBorderWidth","width","height","lineHeight","align","verticalAlign","baseline","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","textShadowColor","textShadowBlur","textShadowOffsetX","textShadowOffsetY","backgroundColor","borderColor","borderWidth","borderRadius","padding"];function wr(t){return!Y(t)||F(t)||t instanceof Date?t:t.value}function Sr(t,e,n){var i="normalMerge"===n,r="replaceMerge"===n,o="replaceAll"===n;t=t||[],e=(e||[]).slice();var a=ht();P(e,(function(t,n){Y(t)||(e[n]=null)}));var s,l,u=function(t,e,n){var i=[];if("replaceAll"===n)return i;for(var r=0;r<t.length;r++){var o=t[r];o&&null!=o.id&&e.set(o.id,r),i.push({existing:"replaceMerge"===n||Ar(o)?null:o,newOption:null,keyInfo:null,brandNew:null})}return i}(t,a,n);return(i||r)&&function(t,e,n,i){P(i,(function(r,o){if(r&&null!=r.id){var a=Ir(r.id),s=n.get(a);if(null!=s){var l=t[s];rt(!l.newOption,'Duplicated option on id "'+a+'".'),l.newOption=r,l.existing=e[s],i[o]=null}}}))}(u,t,a,e),i&&function(t,e){P(e,(function(n,i){if(n&&null!=n.name)for(var r=0;r<t.length;r++){var o=t[r].existing;if(!t[r].newOption&&o&&(null==o.id||null==n.id)&&!Ar(n)&&!Ar(o)&&Mr("name",o,n))return t[r].newOption=n,void(e[i]=null)}}))}(u,e),i||r?function(t,e,n){P(e,(function(e){if(e){for(var i,r=0;(i=t[r])&&(i.newOption||Ar(i.existing)||i.existing&&null!=e.id&&!Mr("id",e,i.existing));)r++;i?(i.newOption=e,i.brandNew=n):t.push({newOption:e,brandNew:n,existing:null,keyInfo:null}),r++}}))}(u,e,r):o&&function(t,e){P(e,(function(e){t.push({newOption:e,brandNew:!0,existing:null,keyInfo:null})}))}(u,e),s=u,l=ht(),P(s,(function(t){var e=t.existing;e&&l.set(e.id,t)})),P(s,(function(t){var e=t.newOption;rt(!e||null==e.id||!l.get(e.id)||l.get(e.id)===t,"id duplicates: "+(e&&e.id)),e&&null!=e.id&&l.set(e.id,t),!t.keyInfo&&(t.keyInfo={})})),P(s,(function(t,e){var n=t.existing,i=t.newOption,r=t.keyInfo;if(Y(i)){if(r.name=null!=i.name?Ir(i.name):n?n.name:vr+e,n)r.id=Ir(n.id);else if(null!=i.id)r.id=Ir(i.id);else{var o=0;do{r.id="\0"+r.name+"\0"+o++}while(l.get(r.id))}l.set(r.id,t)}})),u}function Mr(t,e,n){var i=Tr(e[t],null),r=Tr(n[t],null);return null!=i&&null!=r&&i===r}function Ir(t){return Tr(t,"")}function Tr(t,e){if(null==t)return e;var n=typeof t;return"string"===n?t:"number"===n||W(t)?t+"":e}function Cr(t){var e=t.name;return!(!e||!e.indexOf(vr))}function Ar(t){return t&&null!=t.id&&0===Ir(t.id).indexOf(mr)}function Dr(t,e){return null!=e.dataIndexInside?e.dataIndexInside:null!=e.dataIndex?F(e.dataIndex)?O(e.dataIndex,(function(e){return t.indexOfRawIndex(e)})):t.indexOfRawIndex(e.dataIndex):null!=e.name?F(e.name)?O(e.name,(function(e){return t.indexOfName(e)})):t.indexOfName(e.name):void 0}function Lr(){var t="__ec_inner_"+kr++;return function(e){return e[t]||(e[t]={})}}var kr=pr();function Pr(t,e,n){var i=Or(e,n),r=i.mainTypeSpecified,o=i.queryOptionMap,a=i.others,s=n?n.defaultMainType:null;return!r&&s&&o.set(s,{}),o.each((function(e,i){var r=Er(t,i,e,{useDefault:s===i,enableAll:!n||null==n.enableAll||n.enableAll,enableNone:!n||null==n.enableNone||n.enableNone});a[i+"Models"]=r.models,a[i+"Model"]=r.models[0]})),a}function Or(t,e){var n;if(H(t)){var i={};i[t+"Index"]=0,n=i}else n=t;var r=ht(),o={},a=!1;return P(n,(function(t,n){if("dataIndex"!==n&&"dataIndexInside"!==n){var i=n.match(/^(\w+)(Index|Id|Name)$/)||[],s=i[1],l=(i[2]||"").toLowerCase();if(s&&l&&!(e&&e.includeMainTypes&&A(e.includeMainTypes,s)<0))a=a||!!s,(r.get(s)||r.set(s,{}))[l]=t}else o[n]=t})),{mainTypeSpecified:a,queryOptionMap:r,others:o}}var Rr={useDefault:!0,enableAll:!1,enableNone:!1},Nr={useDefault:!1,enableAll:!0,enableNone:!0};function Er(t,e,n,i){i=i||Rr;var r=n.index,o=n.id,a=n.name,s={models:null,specified:null!=r||null!=o||null!=a};if(!s.specified){var l=void 0;return s.models=i.useDefault&&(l=t.getComponent(e))?[l]:[],s}return"none"===r||!1===r?(rt(i.enableNone,'`"none"` or `false` is not a valid value on index option.'),s.models=[],s):("all"===r&&(rt(i.enableAll,'`"all"` is not a valid value on index option.'),r=o=a=null),s.models=t.queryComponents({mainType:e,index:r,id:o,name:a}),s)}function zr(t,e,n){t.setAttribute?t.setAttribute(e,n):t[e]=n}function Br(t,e){var n=ht(),i=[];return P(t,(function(t){var r=e(t);(n.get(r)||(i.push(r),n.set(r,[]))).push(t)})),{keys:i,buckets:n}}function Vr(t,e,n,i,r){var o=null==e||"auto"===e;if(null==i)return i;if("number"==typeof i)return ji(d=hn(n||0,i,r),o?Math.max($i(n||0),$i(i)):e);if("string"==typeof i)return r<1?n:i;for(var a=[],s=n,l=i,u=Math.max(s?s.length:0,l.length),h=0;h<u;++h){if("ordinal"===t.getDimensionInfo(h).type)a[h]=(r<1&&s?s:l)[h];else{var c=s&&s[h]?s[h]:0,p=l[h],d=hn(c,p,r);a[h]=ji(d,o?Math.max($i(c),$i(p)):e)}}return a}var Fr="___EC__COMPONENT__CONTAINER___",Gr="___EC__EXTENDED_CLASS___";function Hr(t){var e={main:"",sub:""};if(t){var n=t.split(".");e.main=n[0]||"",e.sub=n[1]||""}return e}function Wr(t,e){t.$constructor=t,t.extend=function(t){var e=this;function n(){for(var i=[],o=0;o<arguments.length;o++)i[o]=arguments[o];if(t.$constructor)t.$constructor.apply(this,arguments);else{if(Ur(e)){var a=pt(n.prototype,new(e.bind.apply(e,r([void 0],i))));return a}e.apply(this,arguments)}}return n[Gr]=!0,I(n.prototype,t),n.extend=this.extend,n.superCall=Zr,n.superApply=jr,D(n,this),n.superClass=e,n}}function Ur(t){return"function"==typeof t&&/^class\s/.test(Function.prototype.toString.call(t))}function Yr(t,e){t.extend=e.extend}var Xr=Math.round(10*Math.random());function Zr(t,e){for(var n=[],i=2;i<arguments.length;i++)n[i-2]=arguments[i];return this.superClass.prototype[e].apply(t,n)}function jr(t,e,n){return this.superClass.prototype[e].apply(t,n)}function qr(t){var e={};t.registerClass=function(t){var n,i=t.type||t.prototype.type;if(i){rt(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(n=i),'componentType "'+n+'" illegal'),t.prototype.type=i;var r=Hr(i);if(r.sub){if(r.sub!==Fr){(function(t){var n=e[t.main];n&&n[Fr]||((n=e[t.main]={})[Fr]=!0);return n}(r))[r.sub]=t}}else e[r.main]=t}return t},t.getClass=function(t,n,i){var r=e[t];if(r&&r[Fr]&&(r=n?r[n]:null),i&&!r)throw new Error(n?"Component "+t+"."+(n||"")+" is used but not imported.":t+".type should be specified.");return r},t.getClassesByMainType=function(t){var n=Hr(t),i=[],r=e[n.main];return r&&r[Fr]?P(r,(function(t,e){e!==Fr&&i.push(t)})):i.push(r),i},t.hasClass=function(t){var n=Hr(t);return!!e[n.main]},t.getAllClassMainTypes=function(){var t=[];return P(e,(function(e,n){t.push(n)})),t},t.hasSubTypes=function(t){var n=Hr(t),i=e[n.main];return i&&i[Fr]}}function Kr(t,e){for(var n=0;n<t.length;n++)t[n][1]||(t[n][1]=t[n][0]);return e=e||!1,function(n,i,r){for(var o={},a=0;a<t.length;a++){var s=t[a][1];if(!(i&&A(i,s)>=0||r&&A(r,s)<0)){var l=n.getShallow(s,e);null!=l&&(o[t[a][0]]=l)}}return o}}var $r=Kr([["fill","color"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["opacity"],["shadowColor"]]),Jr=function(){function t(){}return t.prototype.getAreaStyle=function(t,e){return $r(this,t,e)},t}(),Qr=new Ee(50);function to(t){if("string"==typeof t){var e=Qr.get(t);return e&&e.image}return t}function eo(t,e,n,i,r){if(t){if("string"==typeof t){if(e&&e.__zrImageSrc===t||!n)return e;var o=Qr.get(t),a={hostEl:n,cb:i,cbPayload:r};return o?!io(e=o.image)&&o.pending.push(a):((e=n.__zr.dom.canvasNode.createImage()).onload=e.onerror=no,Qr.put(t,e.__cachedImgObj={image:e,pending:[a]}),e.src=e.__zrImageSrc=t),e}return t}return e}function no(){var t=this.__cachedImgObj;this.onload=this.onerror=this.__cachedImgObj=null;for(var e=0;e<t.pending.length;e++){var n=t.pending[e],i=n.cb;i&&i(this,n.cbPayload),n.hostEl.dirty()}t.pending.length=0}function io(t){return t&&t.width&&t.height}var ro=/\{([a-zA-Z0-9_]+)\|([^}]*)\}/g;function oo(t,e,n,i,r){if(!e)return"";var o=(t+"").split("\n");r=ao(e,n,i,r);for(var a=0,s=o.length;a<s;a++)o[a]=so(o[a],r);return o.join("\n")}function ao(t,e,n,i){var r=I({},i=i||{});r.font=e,n=tt(n,"..."),r.maxIterations=tt(i.maxIterations,2);var o=r.minChar=tt(i.minChar,0);r.cnCharWidth=Bn("国",e);var a=r.ascCharWidth=Bn("a",e);r.placeholder=tt(i.placeholder,"");for(var s=t=Math.max(0,t-1),l=0;l<o&&s>=a;l++)s-=a;var u=Bn(n,e);return u>s&&(n="",u=0),s=t-u,r.ellipsis=n,r.ellipsisWidth=u,r.contentWidth=s,r.containerWidth=t,r}function so(t,e){var n=e.containerWidth,i=e.font,r=e.contentWidth;if(!n)return"";var o=Bn(t,i);if(o<=n)return t;for(var a=0;;a++){if(o<=r||a>=e.maxIterations){t+=e.ellipsis;break}var s=0===a?lo(t,r,e.ascCharWidth,e.cnCharWidth):o>0?Math.floor(t.length*r/o):0;o=Bn(t=t.substr(0,s),i)}return""===t&&(t=e.placeholder),t}function lo(t,e,n,i){for(var r=0,o=0,a=t.length;o<a&&r<e;o++){var s=t.charCodeAt(o);r+=0<=s&&s<=127?n:i}return o}var uo=function(){},ho=function(t){this.tokens=[],t&&(this.tokens=t)},co=function(){this.width=0,this.height=0,this.contentWidth=0,this.contentHeight=0,this.outerWidth=0,this.outerHeight=0,this.lines=[]};function po(t,e,n,i,r){var o,a,s=""===e,l=r&&n.rich[r]||{},u=t.lines,h=l.font||n.font,c=!1;if(i){var p=l.padding,d=p?p[1]+p[3]:0;if(null!=l.width&&"auto"!==l.width){var f=Un(l.width,i.width)+d;u.length>0&&f+i.accumWidth>i.width&&(o=e.split("\n"),c=!0),i.accumWidth=f}else{var g=yo(e,h,i.width,i.breakAll,i.accumWidth);i.accumWidth=g.accumWidth+d,a=g.linesWidths,o=g.lines}}else o=e.split("\n");for(var y=0;y<o.length;y++){var v=o[y],m=new uo;if(m.styleName=r,m.text=v,m.isLineHolder=!v&&!s,"number"==typeof l.width?m.width=l.width:m.width=a?a[y]:Bn(v,h),y||c)u.push(new ho([m]));else{var _=(u[u.length-1]||(u[0]=new ho)).tokens,x=_.length;1===x&&_[0].isLineHolder?_[0]=m:(v||!x||s)&&_.push(m)}}}var fo=R(",&?/;] ".split(""),(function(t,e){return t[e]=!0,t}),{});function go(t){return!function(t){var e=t.charCodeAt(0);return e>=33&&e<=255}(t)||!!fo[t]}function yo(t,e,n,i,r){for(var o=[],a=[],s="",l="",u=0,h=0,c=0;c<t.length;c++){var p=t.charAt(c);if("\n"!==p){var d=Bn(p,e),f=!i&&!go(p);(o.length?h+d>n:r+h+d>n)?h?(s||l)&&(f?(s||(s=l,l="",h=u=0),o.push(s),a.push(h-u),l+=p,s="",h=u+=d):(l&&(s+=l,h+=u,l="",u=0),o.push(s),a.push(h),s=p,h=d)):f?(o.push(l),a.push(u),l=p,u=d):(o.push(p),a.push(d)):(h+=d,f?(l+=p,u+=d):(l&&(s+=l,l="",u=0),s+=p))}else l&&(s+=l,h+=u),o.push(s),a.push(h),s="",l="",u=0,h=0}return o.length||s||(s=t,l="",u=0),l&&(s+=l),s&&(o.push(s),a.push(h)),1===o.length&&(h+=r),{accumWidth:h,lines:o,linesWidths:a}}var vo="__zr_style_"+Math.round(10*Math.random()),mo={shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0,shadowColor:"#000000",opacity:1,blend:"source-over"},_o={style:{shadowBlur:!0,shadowOffsetX:!0,shadowOffsetY:!0,shadowColor:!0,opacity:!0}};mo[vo]=!0;var xo=["z","z2","invisible"],bo=function(t){function e(e){return t.call(this,e)||this}var i;return n(e,t),e.prototype._init=function(e){for(var n=z(e),i=0;i<n.length;i++){var r=n[i];"style"===r?this.useStyle(e[r]):t.prototype.attrKV.call(this,r,e[r])}this.style||this.useStyle({})},e.prototype.beforeBrush=function(){},e.prototype.afterBrush=function(){},e.prototype.innerBeforeBrush=function(){},e.prototype.innerAfterBrush=function(){},e.prototype.shouldBePainted=function(t,e,n,i){var r=this.transform;if(this.ignore||this.invisible||0===this.style.opacity||this.culling&&function(t,e,n){wo.copy(t.getBoundingRect()),t.transform&&wo.applyTransform(t.transform);return So.width=e,So.height=n,!wo.intersect(So)}(this,t,e)||r&&!r[0]&&!r[3])return!1;if(n&&this.__clipPaths)for(var o=0;o<this.__clipPaths.length;++o)if(this.__clipPaths[o].isZeroArea())return!1;if(i&&this.parent)for(var a=this.parent;a;){if(a.ignore)return!1;a=a.parent}return!0},e.prototype.contain=function(t,e){return this.rectContain(t,e)},e.prototype.traverse=function(t,e){t.call(e,this)},e.prototype.rectContain=function(t,e){var n=this.transformCoordToLocal(t,e);return this.getBoundingRect().contain(n[0],n[1])},e.prototype.getPaintRect=function(){var t=this._paintRect;if(!this._paintRect||this.__dirty){var e=this.transform,n=this.getBoundingRect(),i=this.style,r=i.shadowBlur||0,o=i.shadowOffsetX||0,a=i.shadowOffsetY||0;t=this._paintRect||(this._paintRect=new Rn(0,0,0,0)),e?Rn.applyTransform(t,n,e):t.copy(n),(r||o||a)&&(t.width+=2*r+Math.abs(o),t.height+=2*r+Math.abs(a),t.x=Math.min(t.x,t.x+o-r),t.y=Math.min(t.y,t.y+a-r));var s=this.dirtyRectTolerance;t.isZero()||(t.x=Math.floor(t.x-s),t.y=Math.floor(t.y-s),t.width=Math.ceil(t.width+1+2*s),t.height=Math.ceil(t.height+1+2*s))}return t},e.prototype.setPrevPaintRect=function(t){t?(this._prevPaintRect=this._prevPaintRect||new Rn(0,0,0,0),this._prevPaintRect.copy(t)):this._prevPaintRect=null},e.prototype.getPrevPaintRect=function(){return this._prevPaintRect},e.prototype.animateStyle=function(t){return this.animate("style",t)},e.prototype.updateDuringAnimation=function(t){"style"===t?this.dirtyStyle():this.markRedraw()},e.prototype.attrKV=function(e,n){"style"!==e?t.prototype.attrKV.call(this,e,n):this.style?this.setStyle(n):this.useStyle(n)},e.prototype.setStyle=function(t,e){return"string"==typeof t?this.style[t]=e:I(this.style,t),this.dirtyStyle(),this},e.prototype.dirtyStyle=function(){this.markRedraw(),this.__dirty|=e.STYLE_CHANGED_BIT,this._rect&&(this._rect=null)},e.prototype.dirty=function(){this.dirtyStyle()},e.prototype.styleChanged=function(){return!!(this.__dirty&e.STYLE_CHANGED_BIT)},e.prototype.styleUpdated=function(){this.__dirty&=~e.STYLE_CHANGED_BIT},e.prototype.createStyle=function(t){return pt(mo,t)},e.prototype.useStyle=function(t){t[vo]||(t=this.createStyle(t)),this.__inHover?this.__hoverStyle=t:this.style=t,this.dirtyStyle()},e.prototype.isStyleObject=function(t){return t[vo]},e.prototype._innerSaveToNormal=function(e){t.prototype._innerSaveToNormal.call(this,e);var n=this._normalState;e.style&&!n.style&&(n.style=this._mergeStyle(this.createStyle(),this.style)),this._savePrimaryToNormal(e,n,xo)},e.prototype._applyStateObj=function(e,n,i,r,o,a){t.prototype._applyStateObj.call(this,e,n,i,r,o,a);var s,l=!(n&&r);if(n&&n.style?o?r?s=n.style:(s=this._mergeStyle(this.createStyle(),i.style),this._mergeStyle(s,n.style)):(s=this._mergeStyle(this.createStyle(),r?this.style:i.style),this._mergeStyle(s,n.style)):l&&(s=i.style),s)if(o){var u=this.style;if(this.style=this.createStyle(l?{}:u),l)for(var h=z(u),c=0;c<h.length;c++){(d=h[c])in s&&(s[d]=s[d],this.style[d]=u[d])}var p=z(s);for(c=0;c<p.length;c++){var d=p[c];this.style[d]=this.style[d]}this._transitionState(e,{style:s},a,this.getAnimationStyleProps())}else this.useStyle(s);for(c=0;c<xo.length;c++){d=xo[c];n&&null!=n[d]?this[d]=n[d]:l&&null!=i[d]&&(this[d]=i[d])}},e.prototype._mergeStates=function(e){for(var n,i=t.prototype._mergeStates.call(this,e),r=0;r<e.length;r++){var o=e[r];o.style&&(n=n||{},this._mergeStyle(n,o.style))}return n&&(i.style=n),i},e.prototype._mergeStyle=function(t,e){return I(t,e),t},e.prototype.getAnimationStyleProps=function(){return _o},e.STYLE_CHANGED_BIT=2,e.initDefaultProps=((i=e.prototype).type="displayable",i.invisible=!1,i.z=0,i.z2=0,i.zlevel=0,i.culling=!1,i.cursor="pointer",i.rectHover=!1,i.incremental=!1,i._rect=null,i.dirtyRectTolerance=0,void(i.__dirty=ei.REDARAW_BIT|e.STYLE_CHANGED_BIT)),e}(ei),wo=new Rn(0,0,0,0),So=new Rn(0,0,0,0);var Mo=Math.pow,Io=Math.sqrt,To=1e-8,Co=1e-4,Ao=Io(3),Do=1/3,Lo=yt(),ko=yt(),Po=yt();function Oo(t){return t>-1e-8&&t<To}function Ro(t){return t>To||t<-1e-8}function No(t,e,n,i,r){var o=1-r;return o*o*(o*t+3*r*e)+r*r*(r*i+3*o*n)}function Eo(t,e,n,i,r){var o=1-r;return 3*(((e-t)*o+2*(n-e)*r)*o+(i-n)*r*r)}function zo(t,e,n,i,r,o){var a=i+3*(e-n)-t,s=3*(n-2*e+t),l=3*(e-t),u=t-r,h=s*s-3*a*l,c=s*l-9*a*u,p=l*l-3*s*u,d=0;if(Oo(h)&&Oo(c)){if(Oo(s))o[0]=0;else(M=-l/s)>=0&&M<=1&&(o[d++]=M)}else{var f=c*c-4*h*p;if(Oo(f)){var g=c/h,y=-g/2;(M=-s/a+g)>=0&&M<=1&&(o[d++]=M),y>=0&&y<=1&&(o[d++]=y)}else if(f>0){var v=Io(f),m=h*s+1.5*a*(-c+v),_=h*s+1.5*a*(-c-v);(M=(-s-((m=m<0?-Mo(-m,Do):Mo(m,Do))+(_=_<0?-Mo(-_,Do):Mo(_,Do))))/(3*a))>=0&&M<=1&&(o[d++]=M)}else{var x=(2*h*s-3*a*c)/(2*Io(h*h*h)),b=Math.acos(x)/3,w=Io(h),S=Math.cos(b),M=(-s-2*w*S)/(3*a),I=(y=(-s+w*(S+Ao*Math.sin(b)))/(3*a),(-s+w*(S-Ao*Math.sin(b)))/(3*a));M>=0&&M<=1&&(o[d++]=M),y>=0&&y<=1&&(o[d++]=y),I>=0&&I<=1&&(o[d++]=I)}}return d}function Bo(t,e,n,i,r){var o=6*n-12*e+6*t,a=9*e+3*i-3*t-9*n,s=3*e-3*t,l=0;if(Oo(a)){if(Ro(o))(h=-s/o)>=0&&h<=1&&(r[l++]=h)}else{var u=o*o-4*a*s;if(Oo(u))r[0]=-o/(2*a);else if(u>0){var h,c=Io(u),p=(-o-c)/(2*a);(h=(-o+c)/(2*a))>=0&&h<=1&&(r[l++]=h),p>=0&&p<=1&&(r[l++]=p)}}return l}function Vo(t,e,n,i,r,o){var a=(e-t)*r+t,s=(n-e)*r+e,l=(i-n)*r+n,u=(s-a)*r+a,h=(l-s)*r+s,c=(h-u)*r+u;o[0]=t,o[1]=a,o[2]=u,o[3]=c,o[4]=c,o[5]=h,o[6]=l,o[7]=i}function Fo(t,e,n,i,r,o,a,s,l,u,h){var c,p,d,f,g,y=.005,v=1/0;Lo[0]=l,Lo[1]=u;for(var m=0;m<1;m+=.05)ko[0]=No(t,n,r,a,m),ko[1]=No(e,i,o,s,m),(f=Pt(Lo,ko))<v&&(c=m,v=f);v=1/0;for(var _=0;_<32&&!(y<Co);_++)p=c-y,d=c+y,ko[0]=No(t,n,r,a,p),ko[1]=No(e,i,o,s,p),f=Pt(ko,Lo),p>=0&&f<v?(c=p,v=f):(Po[0]=No(t,n,r,a,d),Po[1]=No(e,i,o,s,d),g=Pt(Po,Lo),d<=1&&g<v?(c=d,v=g):y*=.5);return h&&(h[0]=No(t,n,r,a,c),h[1]=No(e,i,o,s,c)),Io(v)}function Go(t,e,n,i,r,o,a,s,l){for(var u=t,h=e,c=0,p=1/l,d=1;d<=l;d++){var f=d*p,g=No(t,n,r,a,f),y=No(e,i,o,s,f),v=g-u,m=y-h;c+=Math.sqrt(v*v+m*m),u=g,h=y}return c}function Ho(t,e,n,i){var r=1-i;return r*(r*t+2*i*e)+i*i*n}function Wo(t,e,n,i){return 2*((1-i)*(e-t)+i*(n-e))}function Uo(t,e,n){var i=t+n-2*e;return 0===i?.5:(t-e)/i}function Yo(t,e,n,i,r){var o=(e-t)*i+t,a=(n-e)*i+e,s=(a-o)*i+o;r[0]=t,r[1]=o,r[2]=s,r[3]=s,r[4]=a,r[5]=n}function Xo(t,e,n,i,r,o,a,s,l){var u,h=.005,c=1/0;Lo[0]=a,Lo[1]=s;for(var p=0;p<1;p+=.05){ko[0]=Ho(t,n,r,p),ko[1]=Ho(e,i,o,p),(y=Pt(Lo,ko))<c&&(u=p,c=y)}c=1/0;for(var d=0;d<32&&!(h<Co);d++){var f=u-h,g=u+h;ko[0]=Ho(t,n,r,f),ko[1]=Ho(e,i,o,f);var y=Pt(ko,Lo);if(f>=0&&y<c)u=f,c=y;else{Po[0]=Ho(t,n,r,g),Po[1]=Ho(e,i,o,g);var v=Pt(Po,Lo);g<=1&&v<c?(u=g,c=v):h*=.5}}return l&&(l[0]=Ho(t,n,r,u),l[1]=Ho(e,i,o,u)),Io(c)}function Zo(t,e,n,i,r,o,a){for(var s=t,l=e,u=0,h=1/a,c=1;c<=a;c++){var p=c*h,d=Ho(t,n,r,p),f=Ho(e,i,o,p),g=d-s,y=f-l;u+=Math.sqrt(g*g+y*y),s=d,l=f}return u}var jo=Math.min,qo=Math.max,Ko=Math.sin,$o=Math.cos,Jo=2*Math.PI,Qo=yt(),ta=yt(),ea=yt();function na(t,e,n){if(0!==t.length){for(var i=t[0],r=i[0],o=i[0],a=i[1],s=i[1],l=1;l<t.length;l++)i=t[l],r=jo(r,i[0]),o=qo(o,i[0]),a=jo(a,i[1]),s=qo(s,i[1]);e[0]=r,e[1]=a,n[0]=o,n[1]=s}}function ia(t,e,n,i,r,o){r[0]=jo(t,n),r[1]=jo(e,i),o[0]=qo(t,n),o[1]=qo(e,i)}var ra=[],oa=[];function aa(t,e,n,i,r,o,a,s,l,u){var h=Bo,c=No,p=h(t,n,r,a,ra);l[0]=1/0,l[1]=1/0,u[0]=-1/0,u[1]=-1/0;for(var d=0;d<p;d++){var f=c(t,n,r,a,ra[d]);l[0]=jo(f,l[0]),u[0]=qo(f,u[0])}p=h(e,i,o,s,oa);for(d=0;d<p;d++){var g=c(e,i,o,s,oa[d]);l[1]=jo(g,l[1]),u[1]=qo(g,u[1])}l[0]=jo(t,l[0]),u[0]=qo(t,u[0]),l[0]=jo(a,l[0]),u[0]=qo(a,u[0]),l[1]=jo(e,l[1]),u[1]=qo(e,u[1]),l[1]=jo(s,l[1]),u[1]=qo(s,u[1])}function sa(t,e,n,i,r,o,a,s){var l=Uo,u=Ho,h=qo(jo(l(t,n,r),1),0),c=qo(jo(l(e,i,o),1),0),p=u(t,n,r,h),d=u(e,i,o,c);a[0]=jo(t,r,p),a[1]=jo(e,o,d),s[0]=qo(t,r,p),s[1]=qo(e,o,d)}function la(t,e,n,i,r,o,a,s,l){var u=Nt,h=Et,c=Math.abs(r-o);if(c%Jo<1e-4&&c>1e-4)return s[0]=t-n,s[1]=e-i,l[0]=t+n,void(l[1]=e+i);if(Qo[0]=$o(r)*n+t,Qo[1]=Ko(r)*i+e,ta[0]=$o(o)*n+t,ta[1]=Ko(o)*i+e,u(s,Qo,ta),h(l,Qo,ta),(r%=Jo)<0&&(r+=Jo),(o%=Jo)<0&&(o+=Jo),r>o&&!a?o+=Jo:r<o&&a&&(r+=Jo),a){var p=o;o=r,r=p}for(var d=0;d<o;d+=Math.PI/2)d>r&&(ea[0]=$o(d)*n+t,ea[1]=Ko(d)*i+e,u(s,ea,s),h(l,ea,l))}var ua={M:1,L:2,C:3,Q:4,A:5,Z:6,R:7},ha=[],ca=[],pa=[],da=[],fa=[],ga=[],ya=Math.min,va=Math.max,ma=Math.cos,_a=Math.sin,xa=Math.sqrt,ba=Math.abs,wa=Math.PI,Sa=2*wa,Ma="undefined"!=typeof Float32Array,Ia=[];function Ta(t){return Math.round(t/wa*1e8)/1e8%2*wa}function Ca(t,e){var n=Ta(t[0]);n<0&&(n+=Sa);var i=n-t[0],r=t[1];r+=i,!e&&r-n>=Sa?r=n+Sa:e&&n-r>=Sa?r=n-Sa:!e&&n>r?r=n+(Sa-Ta(n-r)):e&&n<r&&(r=n-(Sa-Ta(r-n))),t[0]=n,t[1]=r}var Aa=function(){function t(t){this.dpr=1,this._version=0,this._xi=0,this._yi=0,this._x0=0,this._y0=0,this._len=0,t&&(this._saveData=!1),this._saveData&&(this.data=[])}return t.prototype.increaseVersion=function(){this._version++},t.prototype.getVersion=function(){return this._version},t.prototype.setScale=function(t,e,n){(n=n||0)>0&&(this._ux=ba(n/Zn/t)||0,this._uy=ba(n/Zn/e)||0)},t.prototype.setDPR=function(t){this.dpr=t},t.prototype.setContext=function(t){this._ctx=t},t.prototype.getContext=function(){return this._ctx},t.prototype.beginPath=function(){return this._ctx&&this._ctx.beginPath(),this.reset(),this},t.prototype.reset=function(){this._saveData&&(this._len=0),this._lineDash&&(this._lineDash=null,this._dashOffset=0),this._pathSegLen&&(this._pathSegLen=null,this._pathLen=0),this._version++},t.prototype.moveTo=function(t,e){return this.addData(ua.M,t,e),this._ctx&&this._ctx.moveTo(t,e),this._x0=t,this._y0=e,this._xi=t,this._yi=e,this},t.prototype.lineTo=function(t,e){var n=ba(t-this._xi)>this._ux||ba(e-this._yi)>this._uy||this._len<5;return this.addData(ua.L,t,e),this._ctx&&n&&(this._needsDash?this._dashedLineTo(t,e):this._ctx.lineTo(t,e)),n&&(this._xi=t,this._yi=e),this},t.prototype.bezierCurveTo=function(t,e,n,i,r,o){return this.addData(ua.C,t,e,n,i,r,o),this._ctx&&(this._needsDash?this._dashedBezierTo(t,e,n,i,r,o):this._ctx.bezierCurveTo(t,e,n,i,r,o)),this._xi=r,this._yi=o,this},t.prototype.quadraticCurveTo=function(t,e,n,i){return this.addData(ua.Q,t,e,n,i),this._ctx&&(this._needsDash?this._dashedQuadraticTo(t,e,n,i):this._ctx.quadraticCurveTo(t,e,n,i)),this._xi=n,this._yi=i,this},t.prototype.arc=function(t,e,n,i,r,o){Ia[0]=i,Ia[1]=r,Ca(Ia,o),i=Ia[0];var a=(r=Ia[1])-i;return this.addData(ua.A,t,e,n,n,i,a,0,o?0:1),this._ctx&&this._ctx.arc(t,e,n,i,r,o),this._xi=ma(r)*n+t,this._yi=_a(r)*n+e,this},t.prototype.arcTo=function(t,e,n,i,r){return this._ctx&&this._ctx.arcTo(t,e,n,i,r),this},t.prototype.rect=function(t,e,n,i){return this._ctx&&this._ctx.rect(t,e,n,i),this.addData(ua.R,t,e,n,i),this},t.prototype.closePath=function(){this.addData(ua.Z);var t=this._ctx,e=this._x0,n=this._y0;return t&&(this._needsDash&&this._dashedLineTo(e,n),t.closePath()),this._xi=e,this._yi=n,this},t.prototype.fill=function(t){t&&t.fill(),this.toStatic()},t.prototype.stroke=function(t){t&&t.stroke(),this.toStatic()},t.prototype.setLineDash=function(t){if(t instanceof Array){this._lineDash=t,this._dashIdx=0;for(var e=0,n=0;n<t.length;n++)e+=t[n];this._dashSum=e,this._needsDash=!0}else this._lineDash=null,this._needsDash=!1;return this},t.prototype.setLineDashOffset=function(t){return this._dashOffset=t,this},t.prototype.len=function(){return this._len},t.prototype.setData=function(t){var e=t.length;this.data&&this.data.length===e||!Ma||(this.data=new Float32Array(e));for(var n=0;n<e;n++)this.data[n]=t[n];this._len=e},t.prototype.appendPath=function(t){t instanceof Array||(t=[t]);for(var e=t.length,n=0,i=this._len,r=0;r<e;r++)n+=t[r].len();Ma&&this.data instanceof Float32Array&&(this.data=new Float32Array(i+n));for(r=0;r<e;r++)for(var o=t[r].data,a=0;a<o.length;a++)this.data[i++]=o[a];this._len=i},t.prototype.addData=function(t,e,n,i,r,o,a,s,l){if(this._saveData){var u=this.data;this._len+arguments.length>u.length&&(this._expandData(),u=this.data);for(var h=0;h<arguments.length;h++)u[this._len++]=arguments[h]}},t.prototype._expandData=function(){if(!(this.data instanceof Array)){for(var t=[],e=0;e<this._len;e++)t[e]=this.data[e];this.data=t}},t.prototype._dashedLineTo=function(t,e){var n,i,r=this._dashSum,o=this._lineDash,a=this._ctx,s=this._dashOffset,l=this._xi,u=this._yi,h=t-l,c=e-u,p=xa(h*h+c*c),d=l,f=u,g=o.length;for(s<0&&(s=r+s),d-=(s%=r)*(h/=p),f-=s*(c/=p);h>0&&d<=t||h<0&&d>=t||0===h&&(c>0&&f<=e||c<0&&f>=e);)d+=h*(n=o[i=this._dashIdx]),f+=c*n,this._dashIdx=(i+1)%g,h>0&&d<l||h<0&&d>l||c>0&&f<u||c<0&&f>u||a[i%2?"moveTo":"lineTo"](h>=0?ya(d,t):va(d,t),c>=0?ya(f,e):va(f,e));h=d-t,c=f-e,this._dashOffset=-xa(h*h+c*c)},t.prototype._dashedBezierTo=function(t,e,n,i,r,o){var a,s,l,u,h,c=this._ctx,p=this._dashSum,d=this._dashOffset,f=this._lineDash,g=this._xi,y=this._yi,v=0,m=this._dashIdx,_=f.length,x=0;for(d<0&&(d=p+d),d%=p,a=0;a<1;a+=.1)s=No(g,t,n,r,a+.1)-No(g,t,n,r,a),l=No(y,e,i,o,a+.1)-No(y,e,i,o,a),v+=xa(s*s+l*l);for(;m<_&&!((x+=f[m])>d);m++);for(a=(x-d)/v;a<=1;)u=No(g,t,n,r,a),h=No(y,e,i,o,a),m%2?c.moveTo(u,h):c.lineTo(u,h),a+=f[m]/v,m=(m+1)%_;m%2!=0&&c.lineTo(r,o),s=r-u,l=o-h,this._dashOffset=-xa(s*s+l*l)},t.prototype._dashedQuadraticTo=function(t,e,n,i){var r=n,o=i;n=(n+2*t)/3,i=(i+2*e)/3,t=(this._xi+2*t)/3,e=(this._yi+2*e)/3,this._dashedBezierTo(t,e,n,i,r,o)},t.prototype.toStatic=function(){if(this._saveData){var t=this.data;t instanceof Array&&(t.length=this._len,Ma&&this._len>11&&(this.data=new Float32Array(t)))}},t.prototype.getBoundingRect=function(){pa[0]=pa[1]=fa[0]=fa[1]=Number.MAX_VALUE,da[0]=da[1]=ga[0]=ga[1]=-Number.MAX_VALUE;var t,e=this.data,n=0,i=0,r=0,o=0;for(t=0;t<this._len;){var a=e[t++],s=1===t;switch(s&&(r=n=e[t],o=i=e[t+1]),a){case ua.M:n=r=e[t++],i=o=e[t++],fa[0]=r,fa[1]=o,ga[0]=r,ga[1]=o;break;case ua.L:ia(n,i,e[t],e[t+1],fa,ga),n=e[t++],i=e[t++];break;case ua.C:aa(n,i,e[t++],e[t++],e[t++],e[t++],e[t],e[t+1],fa,ga),n=e[t++],i=e[t++];break;case ua.Q:sa(n,i,e[t++],e[t++],e[t],e[t+1],fa,ga),n=e[t++],i=e[t++];break;case ua.A:var l=e[t++],u=e[t++],h=e[t++],c=e[t++],p=e[t++],d=e[t++]+p;t+=1;var f=!e[t++];s&&(r=ma(p)*h+l,o=_a(p)*c+u),la(l,u,h,c,p,d,f,fa,ga),n=ma(d)*h+l,i=_a(d)*c+u;break;case ua.R:ia(r=n=e[t++],o=i=e[t++],r+e[t++],o+e[t++],fa,ga);break;case ua.Z:n=r,i=o}Nt(pa,pa,fa),Et(da,da,ga)}return 0===t&&(pa[0]=pa[1]=da[0]=da[1]=0),new Rn(pa[0],pa[1],da[0]-pa[0],da[1]-pa[1])},t.prototype._calculateLength=function(){var t=this.data,e=this._len,n=this._ux,i=this._uy,r=0,o=0,a=0,s=0;this._pathSegLen||(this._pathSegLen=[]);for(var l=this._pathSegLen,u=0,h=0,c=0;c<e;){var p=t[c++],d=1===c;d&&(a=r=t[c],s=o=t[c+1]);var f=-1;switch(p){case ua.M:r=a=t[c++],o=s=t[c++];break;case ua.L:var g=t[c++],y=(_=t[c++])-o;(ba(D=g-r)>n||ba(y)>i||c===e-1)&&(f=Math.sqrt(D*D+y*y),r=g,o=_);break;case ua.C:var v=t[c++],m=t[c++],_=(g=t[c++],t[c++]),x=t[c++],b=t[c++];f=Go(r,o,v,m,g,_,x,b,10),r=x,o=b;break;case ua.Q:f=Zo(r,o,v=t[c++],m=t[c++],g=t[c++],_=t[c++],10),r=g,o=_;break;case ua.A:var w=t[c++],S=t[c++],M=t[c++],I=t[c++],T=t[c++],C=t[c++],A=C+T;c+=1;t[c++];d&&(a=ma(T)*M+w,s=_a(T)*I+S),f=va(M,I)*ya(Sa,Math.abs(C)),r=ma(A)*M+w,o=_a(A)*I+S;break;case ua.R:a=r=t[c++],s=o=t[c++],f=2*t[c++]+2*t[c++];break;case ua.Z:var D=a-r;y=s-o;f=Math.sqrt(D*D+y*y),r=a,o=s}f>=0&&(l[h++]=f,u+=f)}return this._pathLen=u,u},t.prototype.rebuildPath=function(t,e){var n,i,r,o,a,s,l,u,h=this.data,c=this._ux,p=this._uy,d=this._len,f=e<1,g=0,y=0;if(!f||(this._pathSegLen||this._calculateLength(),l=this._pathSegLen,u=e*this._pathLen))t:for(var v=0;v<d;){var m=h[v++],_=1===v;switch(_&&(n=r=h[v],i=o=h[v+1]),m){case ua.M:n=r=h[v++],i=o=h[v++],t.moveTo(r,o);break;case ua.L:if(a=h[v++],s=h[v++],ba(a-r)>c||ba(s-o)>p||v===d-1){if(f){if(g+(H=l[y++])>u){var x=(u-g)/H;t.lineTo(r*(1-x)+a*x,o*(1-x)+s*x);break t}g+=H}t.lineTo(a,s),r=a,o=s}break;case ua.C:var b=h[v++],w=h[v++],S=h[v++],M=h[v++],I=h[v++],T=h[v++];if(f){if(g+(H=l[y++])>u){Vo(r,b,S,I,x=(u-g)/H,ha),Vo(o,w,M,T,x,ca),t.bezierCurveTo(ha[1],ca[1],ha[2],ca[2],ha[3],ca[3]);break t}g+=H}t.bezierCurveTo(b,w,S,M,I,T),r=I,o=T;break;case ua.Q:b=h[v++],w=h[v++],S=h[v++],M=h[v++];if(f){if(g+(H=l[y++])>u){Yo(r,b,S,x=(u-g)/H,ha),Yo(o,w,M,x,ca),t.quadraticCurveTo(ha[1],ca[1],ha[2],ca[2]);break t}g+=H}t.quadraticCurveTo(b,w,S,M),r=S,o=M;break;case ua.A:var C=h[v++],A=h[v++],D=h[v++],L=h[v++],k=h[v++],P=h[v++],O=h[v++],R=!h[v++],N=D>L?D:L,E=ba(D-L)>.001,z=k+P,B=!1;if(f)g+(H=l[y++])>u&&(z=k+P*(u-g)/H,B=!0),g+=H;if(E&&t.ellipse?t.ellipse(C,A,D,L,O,k,z,R):t.arc(C,A,N,k,z,R),B)break t;_&&(n=ma(k)*D+C,i=_a(k)*L+A),r=ma(z)*D+C,o=_a(z)*L+A;break;case ua.R:n=r=h[v],i=o=h[v+1],a=h[v++],s=h[v++];var V=h[v++],F=h[v++];if(f){if(g+(H=l[y++])>u){var G=u-g;t.moveTo(a,s),t.lineTo(a+ya(G,V),s),(G-=V)>0&&t.lineTo(a+V,s+ya(G,F)),(G-=F)>0&&t.lineTo(a+va(V-G,0),s+F),(G-=V)>0&&t.lineTo(a,s+va(F-G,0));break t}g+=H}t.rect(a,s,V,F);break;case ua.Z:if(f){var H;if(g+(H=l[y++])>u){x=(u-g)/H;t.lineTo(r*(1-x)+n*x,o*(1-x)+i*x);break t}g+=H}t.closePath(),r=n,o=i}}},t.CMD=ua,t.initDefaultProps=function(){var e=t.prototype;e._saveData=!0,e._needsDash=!1,e._dashOffset=0,e._dashIdx=0,e._dashSum=0,e._ux=0,e._uy=0}(),t}();function Da(t,e,n,i,r,o,a){if(0===r)return!1;var s=r,l=0;if(a>e+s&&a>i+s||a<e-s&&a<i-s||o>t+s&&o>n+s||o<t-s&&o<n-s)return!1;if(t===n)return Math.abs(o-t)<=s/2;var u=(l=(e-i)/(t-n))*o-a+(t*i-n*e)/(t-n);return u*u/(l*l+1)<=s/2*s/2}function La(t,e,n,i,r,o,a,s,l,u,h){if(0===l)return!1;var c=l;return!(h>e+c&&h>i+c&&h>o+c&&h>s+c||h<e-c&&h<i-c&&h<o-c&&h<s-c||u>t+c&&u>n+c&&u>r+c&&u>a+c||u<t-c&&u<n-c&&u<r-c&&u<a-c)&&Fo(t,e,n,i,r,o,a,s,u,h,null)<=c/2}function ka(t,e,n,i,r,o,a,s,l){if(0===a)return!1;var u=a;return!(l>e+u&&l>i+u&&l>o+u||l<e-u&&l<i-u&&l<o-u||s>t+u&&s>n+u&&s>r+u||s<t-u&&s<n-u&&s<r-u)&&Xo(t,e,n,i,r,o,s,l,null)<=u/2}var Pa=2*Math.PI;function Oa(t){return(t%=Pa)<0&&(t+=Pa),t}var Ra=2*Math.PI;function Na(t,e,n,i,r,o,a,s,l){if(0===a)return!1;var u=a;s-=t,l-=e;var h=Math.sqrt(s*s+l*l);if(h-u>n||h+u<n)return!1;if(Math.abs(i-r)%Ra<1e-4)return!0;if(o){var c=i;i=Oa(r),r=Oa(c)}else i=Oa(i),r=Oa(r);i>r&&(r+=Ra);var p=Math.atan2(l,s);return p<0&&(p+=Ra),p>=i&&p<=r||p+Ra>=i&&p+Ra<=r}function Ea(t,e,n,i,r,o){if(o>e&&o>i||o<e&&o<i)return 0;if(i===e)return 0;var a=(o-e)/(i-e),s=i<e?1:-1;1!==a&&0!==a||(s=i<e?.5:-.5);var l=a*(n-t)+t;return l===r?1/0:l>r?s:0}var za=Aa.CMD,Ba=2*Math.PI;var Va=[-1,-1,-1],Fa=[-1,-1];function Ga(t,e,n,i,r,o,a,s,l,u){if(u>e&&u>i&&u>o&&u>s||u<e&&u<i&&u<o&&u<s)return 0;var h,c=zo(e,i,o,s,u,Va);if(0===c)return 0;for(var p=0,d=-1,f=void 0,g=void 0,y=0;y<c;y++){var v=Va[y],m=0===v||1===v?.5:1;No(t,n,r,a,v)<l||(d<0&&(d=Bo(e,i,o,s,Fa),Fa[1]<Fa[0]&&d>1&&(h=void 0,h=Fa[0],Fa[0]=Fa[1],Fa[1]=h),f=No(e,i,o,s,Fa[0]),d>1&&(g=No(e,i,o,s,Fa[1]))),2===d?v<Fa[0]?p+=f<e?m:-m:v<Fa[1]?p+=g<f?m:-m:p+=s<g?m:-m:v<Fa[0]?p+=f<e?m:-m:p+=s<f?m:-m)}return p}function Ha(t,e,n,i,r,o,a,s){if(s>e&&s>i&&s>o||s<e&&s<i&&s<o)return 0;var l=function(t,e,n,i,r){var o=t-2*e+n,a=2*(e-t),s=t-i,l=0;if(Oo(o))Ro(a)&&(h=-s/a)>=0&&h<=1&&(r[l++]=h);else{var u=a*a-4*o*s;if(Oo(u))(h=-a/(2*o))>=0&&h<=1&&(r[l++]=h);else if(u>0){var h,c=Io(u),p=(-a-c)/(2*o);(h=(-a+c)/(2*o))>=0&&h<=1&&(r[l++]=h),p>=0&&p<=1&&(r[l++]=p)}}return l}(e,i,o,s,Va);if(0===l)return 0;var u=Uo(e,i,o);if(u>=0&&u<=1){for(var h=0,c=Ho(e,i,o,u),p=0;p<l;p++){var d=0===Va[p]||1===Va[p]?.5:1;Ho(t,n,r,Va[p])<a||(Va[p]<u?h+=c<e?d:-d:h+=o<c?d:-d)}return h}d=0===Va[0]||1===Va[0]?.5:1;return Ho(t,n,r,Va[0])<a?0:o<e?d:-d}function Wa(t,e,n,i,r,o,a,s){if((s-=e)>n||s<-n)return 0;var l=Math.sqrt(n*n-s*s);Va[0]=-l,Va[1]=l;var u=Math.abs(i-r);if(u<1e-4)return 0;if(u>=Ba-1e-4){i=0,r=Ba;var h=o?1:-1;return a>=Va[0]+t&&a<=Va[1]+t?h:0}if(i>r){var c=i;i=r,r=c}i<0&&(i+=Ba,r+=Ba);for(var p=0,d=0;d<2;d++){var f=Va[d];if(f+t>a){var g=Math.atan2(s,f);h=o?1:-1;g<0&&(g=Ba+g),(g>=i&&g<=r||g+Ba>=i&&g+Ba<=r)&&(g>Math.PI/2&&g<1.5*Math.PI&&(h=-h),p+=h)}}return p}function Ua(t,e,n,i,r){for(var o,a,s,l,u=t.data,h=t.len(),c=0,p=0,d=0,f=0,g=0,y=0;y<h;){var v=u[y++],m=1===y;switch(v===za.M&&y>1&&(n||(c+=Ea(p,d,f,g,i,r))),m&&(f=p=u[y],g=d=u[y+1]),v){case za.M:p=f=u[y++],d=g=u[y++];break;case za.L:if(n){if(Da(p,d,u[y],u[y+1],e,i,r))return!0}else c+=Ea(p,d,u[y],u[y+1],i,r)||0;p=u[y++],d=u[y++];break;case za.C:if(n){if(La(p,d,u[y++],u[y++],u[y++],u[y++],u[y],u[y+1],e,i,r))return!0}else c+=Ga(p,d,u[y++],u[y++],u[y++],u[y++],u[y],u[y+1],i,r)||0;p=u[y++],d=u[y++];break;case za.Q:if(n){if(ka(p,d,u[y++],u[y++],u[y],u[y+1],e,i,r))return!0}else c+=Ha(p,d,u[y++],u[y++],u[y],u[y+1],i,r)||0;p=u[y++],d=u[y++];break;case za.A:var _=u[y++],x=u[y++],b=u[y++],w=u[y++],S=u[y++],M=u[y++];y+=1;var I=!!(1-u[y++]);o=Math.cos(S)*b+_,a=Math.sin(S)*w+x,m?(f=o,g=a):c+=Ea(p,d,o,a,i,r);var T=(i-_)*w/b+_;if(n){if(Na(_,x,w,S,S+M,I,e,T,r))return!0}else c+=Wa(_,x,w,S,S+M,I,T,r);p=Math.cos(S+M)*b+_,d=Math.sin(S+M)*w+x;break;case za.R:if(f=p=u[y++],g=d=u[y++],o=f+u[y++],a=g+u[y++],n){if(Da(f,g,o,g,e,i,r)||Da(o,g,o,a,e,i,r)||Da(o,a,f,a,e,i,r)||Da(f,a,f,g,e,i,r))return!0}else c+=Ea(o,g,o,a,i,r),c+=Ea(f,a,f,g,i,r);break;case za.Z:if(n){if(Da(p,d,f,g,e,i,r))return!0}else c+=Ea(p,d,f,g,i,r);p=f,d=g}}return n||(s=d,l=g,Math.abs(s-l)<1e-4)||(c+=Ea(p,d,f,g,i,r)||0),0!==c}var Ya=T({fill:"#000000",stroke:null,strokePercent:1,fillOpacity:1,strokeOpacity:1,lineDashOffset:0,lineWidth:1,lineCap:"butt",miterLimit:10,strokeNoScale:!1,strokeFirst:!1},mo),Xa={style:T({fill:!0,stroke:!0,strokePercent:!0,fillOpacity:!0,strokeOpacity:!0,lineDashOffset:!0,lineWidth:!0,miterLimit:!0},_o.style)},Za=["x","y","rotation","scaleX","scaleY","originX","originY","invisible","culling","z","z2","zlevel","parent"],ja=function(t){function e(e){return t.call(this,e)||this}var i;return n(e,t),e.prototype.update=function(){var n=this;t.prototype.update.call(this);var i=this.style;if(i.decal){var r=this._decalEl=this._decalEl||new e;r.buildPath===e.prototype.buildPath&&(r.buildPath=function(t){n.buildPath(t,n.shape)}),r.silent=!0;var o=r.style;for(var a in i)o[a]!==i[a]&&(o[a]=i[a]);o.fill=i.fill?i.decal:null,o.decal=null,o.shadowColor=null,i.strokeFirst&&(o.stroke=null);for(var s=0;s<Za.length;++s)r[Za[s]]=this[Za[s]];r.__dirty|=ei.REDARAW_BIT}else this._decalEl&&(this._decalEl=null)},e.prototype.getDecalElement=function(){return this._decalEl},e.prototype._init=function(e){var n=z(e);this.shape=this.getDefaultShape();var i=this.getDefaultStyle();i&&this.useStyle(i);for(var r=0;r<n.length;r++){var o=n[r],a=e[o];"style"===o?this.style?I(this.style,a):this.useStyle(a):"shape"===o?I(this.shape,a):t.prototype.attrKV.call(this,o,a)}this.style||this.useStyle({})},e.prototype.getDefaultStyle=function(){return null},e.prototype.getDefaultShape=function(){return{}},e.prototype.canBeInsideText=function(){return this.hasFill()},e.prototype.getInsideTextFill=function(){var t=this.style.fill;if("none"!==t){if(H(t)){var e=sn(t,0);return e>.5?jn:e>.2?"#eeeeee":qn}if(t)return qn}return jn},e.prototype.getInsideTextStroke=function(t){var e=this.style.fill;if(H(e)){var n=this.__zr;if(!(!n||!n.isDarkMode())===sn(t,0)<.4)return e}},e.prototype.buildPath=function(t,e,n){},e.prototype.pathUpdated=function(){this.__dirty&=~e.SHAPE_CHANGED_BIT},e.prototype.createPathProxy=function(){this.path=new Aa(!1)},e.prototype.hasStroke=function(){var t=this.style,e=t.stroke;return!(null==e||"none"===e||!(t.lineWidth>0))},e.prototype.hasFill=function(){var t=this.style.fill;return null!=t&&"none"!==t},e.prototype.getBoundingRect=function(){var t=this._rect,n=this.style,i=!t;if(i){var r=!1;this.path||(r=!0,this.createPathProxy());var o=this.path;(r||this.__dirty&e.SHAPE_CHANGED_BIT)&&(o.beginPath(),this.buildPath(o,this.shape,!1),this.pathUpdated()),t=o.getBoundingRect()}if(this._rect=t,this.hasStroke()&&this.path&&this.path.len()>0){var a=this._rectWithStroke||(this._rectWithStroke=t.clone());if(this.__dirty||i){a.copy(t);var s=n.strokeNoScale?this.getLineScale():1,l=n.lineWidth;if(!this.hasFill()){var u=this.strokeContainThreshold;l=Math.max(l,null==u?4:u)}s>1e-10&&(a.width+=l/s,a.height+=l/s,a.x-=l/s/2,a.y-=l/s/2)}return a}return t},e.prototype.contain=function(t,e){var n=this.transformCoordToLocal(t,e),i=this.getBoundingRect(),r=this.style;if(t=n[0],e=n[1],i.contain(t,e)){var o=this.path;if(this.hasStroke()){var a=r.lineWidth,s=r.strokeNoScale?this.getLineScale():1;if(s>1e-10&&(this.hasFill()||(a=Math.max(a,this.strokeContainThreshold)),function(t,e,n,i){return Ua(t,e,!0,n,i)}(o,a/s,t,e)))return!0}if(this.hasFill())return function(t,e,n){return Ua(t,0,!1,e,n)}(o,t,e)}return!1},e.prototype.dirtyShape=function(){this.__dirty|=e.SHAPE_CHANGED_BIT,this._rect&&(this._rect=null),this._decalEl&&this._decalEl.dirtyShape(),this.markRedraw()},e.prototype.dirty=function(){this.dirtyStyle(),this.dirtyShape()},e.prototype.animateShape=function(t){return this.animate("shape",t)},e.prototype.updateDuringAnimation=function(t){"style"===t?this.dirtyStyle():"shape"===t?this.dirtyShape():this.markRedraw()},e.prototype.attrKV=function(e,n){"shape"===e?this.setShape(n):t.prototype.attrKV.call(this,e,n)},e.prototype.setShape=function(t,e){var n=this.shape;return n||(n=this.shape={}),"string"==typeof t?n[t]=e:I(n,t),this.dirtyShape(),this},e.prototype.shapeChanged=function(){return!!(this.__dirty&e.SHAPE_CHANGED_BIT)},e.prototype.createStyle=function(t){return pt(Ya,t)},e.prototype._innerSaveToNormal=function(e){t.prototype._innerSaveToNormal.call(this,e);var n=this._normalState;e.shape&&!n.shape&&(n.shape=I({},this.shape))},e.prototype._applyStateObj=function(e,n,i,r,o,a){t.prototype._applyStateObj.call(this,e,n,i,r,o,a);var s,l=!(n&&r);if(n&&n.shape?o?r?s=n.shape:(s=I({},i.shape),I(s,n.shape)):(s=I({},r?this.shape:i.shape),I(s,n.shape)):l&&(s=i.shape),s)if(o){this.shape=I({},this.shape);for(var u={},h=z(s),c=0;c<h.length;c++){var p=h[c];"object"==typeof s[p]?this.shape[p]=s[p]:u[p]=s[p]}this._transitionState(e,{shape:u},a)}else this.shape=s,this.dirtyShape()},e.prototype._mergeStates=function(e){for(var n,i=t.prototype._mergeStates.call(this,e),r=0;r<e.length;r++){var o=e[r];o.shape&&(n=n||{},this._mergeStyle(n,o.shape))}return n&&(i.shape=n),i},e.prototype.getAnimationStyleProps=function(){return Xa},e.prototype.isZeroArea=function(){return!1},e.extend=function(t){var i=function(e){function i(n){var i=e.call(this,n)||this;return t.init&&t.init.call(i,n),i}return n(i,e),i.prototype.getDefaultStyle=function(){return w(t.style)},i.prototype.getDefaultShape=function(){return w(t.shape)},i}(e);for(var r in t)"function"==typeof t[r]&&(i.prototype[r]=t[r]);return i},e.SHAPE_CHANGED_BIT=4,e.initDefaultProps=((i=e.prototype).type="path",i.strokeContainThreshold=5,i.segmentIgnoreThreshold=0,i.subPixelOptimize=!1,i.autoBatch=!1,void(i.__dirty=ei.REDARAW_BIT|bo.STYLE_CHANGED_BIT|e.SHAPE_CHANGED_BIT)),e}(bo),qa=T({strokeFirst:!0,font:En,x:0,y:0,textAlign:"left",textBaseline:"top",miterLimit:2},Ya),Ka=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.hasStroke=function(){var t=this.style,e=t.stroke;return null!=e&&"none"!==e&&t.lineWidth>0},e.prototype.hasFill=function(){var t=this.style.fill;return null!=t&&"none"!==t},e.prototype.createStyle=function(t){return pt(qa,t)},e.prototype.setBoundingRect=function(t){this._rect=t},e.prototype.getBoundingRect=function(){var t=this.style;if(!this._rect){var e=t.text;null!=e?e+="":e="";var n=Fn(e,t.font,t.textAlign,t.textBaseline);if(n.x+=t.x||0,n.y+=t.y||0,this.hasStroke()){var i=t.lineWidth;n.x-=i/2,n.y-=i/2,n.width+=i,n.height+=i}this._rect=n}return this._rect},e.initDefaultProps=void(e.prototype.dirtyRectTolerance=10),e}(bo);Ka.prototype.type="tspan";var $a=T({x:0,y:0},mo),Ja={style:T({x:!0,y:!0,width:!0,height:!0,sx:!0,sy:!0,sWidth:!0,sHeight:!0},_o.style)};var Qa=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.createStyle=function(t){return pt($a,t)},e.prototype._getSize=function(t){var e=this.style,n=e[t];if(null!=n)return n;var i,r=(i=e.image)&&"string"!=typeof i&&i.width&&i.height?e.image:this.__image;if(!r)return 0;var o="width"===t?"height":"width",a=e[o];return null==a?r[t]:r[t]/r[o]*a},e.prototype.getWidth=function(){return this._getSize("width")},e.prototype.getHeight=function(){return this._getSize("height")},e.prototype.getAnimationStyleProps=function(){return Ja},e.prototype.getBoundingRect=function(){var t=this.style;return this._rect||(this._rect=new Rn(t.x||0,t.y||0,this.getWidth(),this.getHeight())),this._rect},e}(bo);Qa.prototype.type="image";var ts=Math.round;function es(t,e,n){if(e){var i=e.x1,r=e.x2,o=e.y1,a=e.y2;t.x1=i,t.x2=r,t.y1=o,t.y2=a;var s=n&&n.lineWidth;return s?(ts(2*i)===ts(2*r)&&(t.x1=t.x2=is(i,s,!0)),ts(2*o)===ts(2*a)&&(t.y1=t.y2=is(o,s,!0)),t):t}}function ns(t,e,n){if(e){var i=e.x,r=e.y,o=e.width,a=e.height;t.x=i,t.y=r,t.width=o,t.height=a;var s=n&&n.lineWidth;return s?(t.x=is(i,s,!0),t.y=is(r,s,!0),t.width=Math.max(is(i+o,s,!1)-t.x,0===o?0:1),t.height=Math.max(is(r+a,s,!1)-t.y,0===a?0:1),t):t}}function is(t,e,n){if(!e)return t;var i=ts(2*t);return(i+ts(e))%2==0?i/2:(i+(n?1:-1))/2}var rs=function(){this.x=0,this.y=0,this.width=0,this.height=0},os={},as=function(t){function e(e){return t.call(this,e)||this}return n(e,t),e.prototype.getDefaultShape=function(){return new rs},e.prototype.buildPath=function(t,e){var n,i,r,o;if(this.subPixelOptimize){var a=ns(os,e,this.style);n=a.x,i=a.y,r=a.width,o=a.height,a.r=e.r,e=a}else n=e.x,i=e.y,r=e.width,o=e.height;e.r?function(t,e){var n,i,r,o,a,s=e.x,l=e.y,u=e.width,h=e.height,c=e.r;u<0&&(s+=u,u=-u),h<0&&(l+=h,h=-h),"number"==typeof c?n=i=r=o=c:c instanceof Array?1===c.length?n=i=r=o=c[0]:2===c.length?(n=r=c[0],i=o=c[1]):3===c.length?(n=c[0],i=o=c[1],r=c[2]):(n=c[0],i=c[1],r=c[2],o=c[3]):n=i=r=o=0,n+i>u&&(n*=u/(a=n+i),i*=u/a),r+o>u&&(r*=u/(a=r+o),o*=u/a),i+r>h&&(i*=h/(a=i+r),r*=h/a),n+o>h&&(n*=h/(a=n+o),o*=h/a),t.moveTo(s+n,l),t.lineTo(s+u-i,l),0!==i&&t.arc(s+u-i,l+i,i,-Math.PI/2,0),t.lineTo(s+u,l+h-r),0!==r&&t.arc(s+u-r,l+h-r,r,0,Math.PI/2),t.lineTo(s+o,l+h),0!==o&&t.arc(s+o,l+h-o,o,Math.PI/2,Math.PI),t.lineTo(s,l+n),0!==n&&t.arc(s+n,l+n,n,Math.PI,1.5*Math.PI)}(t,e):t.rect(n,i,r,o)},e.prototype.isZeroArea=function(){return!this.shape.width||!this.shape.height},e}(ja);as.prototype.type="rect";var ss={fill:"#000000"},ls={style:T({fill:!0,stroke:!0,fillOpacity:!0,strokeOpacity:!0,lineWidth:!0,fontSize:!0,lineHeight:!0,width:!0,height:!0,textShadowColor:!0,textShadowBlur:!0,textShadowOffsetX:!0,textShadowOffsetY:!0,backgroundColor:!0,padding:!0,borderColor:!0,borderWidth:!0,borderRadius:!0},_o.style)},us=function(t){function e(e){var n=t.call(this)||this;return n.type="text",n._children=[],n._defaultStyle=ss,n.attr(e),n}return n(e,t),e.prototype.childrenRef=function(){return this._children},e.prototype.update=function(){this.styleChanged()&&this._updateSubTexts();for(var e=0;e<this._children.length;e++){var n=this._children[e];n.zlevel=this.zlevel,n.z=this.z,n.z2=this.z2,n.culling=this.culling,n.cursor=this.cursor,n.invisible=this.invisible}var i=this.attachedTransform;if(i){i.updateTransform();var r=i.transform;r?(this.transform=this.transform||[],ye(this.transform,r)):this.transform=null}else t.prototype.update.call(this)},e.prototype.getComputedTransform=function(){return this.__hostTarget&&(this.__hostTarget.getComputedTransform(),this.__hostTarget.updateInnerText(!0)),this.attachedTransform?this.attachedTransform.getComputedTransform():t.prototype.getComputedTransform.call(this)},e.prototype._updateSubTexts=function(){var t;this._childCursor=0,ps(t=this.style),P(t.rich,ps),this.style.rich?this._updateRichTexts():this._updatePlainTexts(),this._children.length=this._childCursor,this.styleUpdated()},e.prototype.addSelfToZr=function(e){t.prototype.addSelfToZr.call(this,e);for(var n=0;n<this._children.length;n++)this._children[n].__zr=e},e.prototype.removeSelfFromZr=function(e){t.prototype.removeSelfFromZr.call(this,e);for(var n=0;n<this._children.length;n++)this._children[n].__zr=null},e.prototype.getBoundingRect=function(){if(this.styleChanged()&&this._updateSubTexts(),!this._rect){for(var t=new Rn(0,0,0,0),e=this._children,n=[],i=null,r=0;r<e.length;r++){var o=e[r],a=o.getBoundingRect(),s=o.getLocalTransform(n);s?(t.copy(a),t.applyTransform(s),(i=i||t.clone()).union(t)):(i=i||a.clone()).union(a)}this._rect=i||t}return this._rect},e.prototype.setDefaultTextStyle=function(t){this._defaultStyle=t||ss},e.prototype.setTextContent=function(t){throw new Error("Can't attach text on another text")},e.prototype._mergeStyle=function(t,e){if(!e)return t;var n=e.rich,i=t.rich||n&&{};return I(t,e),n&&i?(this._mergeRich(i,n),t.rich=i):i&&(t.rich=i),t},e.prototype._mergeRich=function(t,e){for(var n=z(e),i=0;i<n.length;i++){var r=n[i];t[r]=t[r]||{},I(t[r],e[r])}},e.prototype.getAnimationStyleProps=function(){return ls},e.prototype._getOrCreateChild=function(t){var e=this._children[this._childCursor];return e&&e instanceof t||(e=new t),this._children[this._childCursor++]=e,e.__zr=this.__zr,e.parent=this,e},e.prototype._updatePlainTexts=function(){var t=this.style,e=t.font||En,n=t.padding,i=function(t,e){null!=t&&(t+="");var n,i=e.overflow,r=e.padding,o=e.font,a="truncate"===i,s=Wn(o),l=tt(e.lineHeight,s),u="truncate"===e.lineOverflow,h=e.width,c=(n=null!=h&&"break"===i||"breakAll"===i?t?yo(t,e.font,h,"breakAll"===i,0).lines:[]:t?t.split("\n"):[]).length*l,p=tt(e.height,c);if(c>p&&u){var d=Math.floor(p/l);n=n.slice(0,d)}var f=p,g=h;if(r&&(f+=r[0]+r[2],null!=g&&(g+=r[1]+r[3])),t&&a&&null!=g)for(var y=ao(h,o,e.ellipsis,{minChar:e.truncateMinChar,placeholder:e.placeholder}),v=0;v<n.length;v++)n[v]=so(n[v],y);if(null==h){var m=0;for(v=0;v<n.length;v++)m=Math.max(Bn(n[v],o),m);h=m}return{lines:n,height:p,outerHeight:f,lineHeight:l,calculatedLineHeight:s,contentHeight:c,width:h}}(gs(t),t),r=ys(t),o=!!t.backgroundColor,a=i.outerHeight,s=i.lines,l=i.lineHeight,u=this._defaultStyle,h=t.x||0,c=t.y||0,p=t.align||u.align||"left",d=t.verticalAlign||u.verticalAlign||"top",f=h,g=Hn(c,i.contentHeight,d);if(r||n){var y=i.width;n&&(y+=n[1]+n[3]);var v=Gn(h,y,p),m=Hn(c,a,d);r&&this._renderBackground(t,t,v,m,y,a)}g+=l/2,n&&(f=fs(h,p,n),"top"===d?g+=n[0]:"bottom"===d&&(g-=n[2]));for(var _,x=0,b=!1,w=(null==(_="fill"in t?t.fill:(b=!0,u.fill))||"none"===_?null:_.image||_.colorStops?"#000000":_),S=(ds("stroke"in t?t.stroke:o||u.autoStroke&&!b?null:(x=2,u.stroke))),M=t.textShadowBlur>0,I=null!=t.width&&("truncate"===t.overflow||"break"===t.overflow||"breakAll"===t.overflow),T=i.calculatedLineHeight,C=0;C<s.length;C++){var A=this._getOrCreateChild(Ka),D=A.createStyle();A.useStyle(D),D.text=s[C],D.x=f,D.y=g,p&&(D.textAlign=p),D.textBaseline="middle",D.opacity=t.opacity,D.strokeFirst=!0,M&&(D.shadowBlur=t.textShadowBlur||0,D.shadowColor=t.textShadowColor||"transparent",D.shadowOffsetX=t.textShadowOffsetX||0,D.shadowOffsetY=t.textShadowOffsetY||0),S&&(D.stroke=S,D.lineWidth=t.lineWidth||x,D.lineDash=t.lineDash,D.lineDashOffset=t.lineDashOffset||0),w&&(D.fill=w),D.font=e,g+=l,I&&A.setBoundingRect(new Rn(Gn(D.x,t.width,D.textAlign),Hn(D.y,T,D.textBaseline),t.width,T))}},e.prototype._updateRichTexts=function(){var t=this.style,e=function(t,e){var n=new co;if(null!=t&&(t+=""),!t)return n;for(var i,r=e.width,o=e.height,a=e.overflow,s="break"!==a&&"breakAll"!==a||null==r?null:{width:r,accumWidth:0,breakAll:"breakAll"===a},l=ro.lastIndex=0;null!=(i=ro.exec(t));){var u=i.index;u>l&&po(n,t.substring(l,u),e,s),po(n,i[2],e,s,i[1]),l=ro.lastIndex}l<t.length&&po(n,t.substring(l,t.length),e,s);var h=[],c=0,p=0,d=e.padding,f="truncate"===a,g="truncate"===e.lineOverflow;function y(t,e,n){t.width=e,t.lineHeight=n,c+=n,p=Math.max(p,e)}t:for(var v=0;v<n.lines.length;v++){for(var m=n.lines[v],_=0,x=0,b=0;b<m.tokens.length;b++){var w=(P=m.tokens[b]).styleName&&e.rich[P.styleName]||{},S=P.textPadding=w.padding,M=S?S[1]+S[3]:0,I=P.font=w.font||e.font;P.contentHeight=Wn(I);var T=tt(w.height,P.contentHeight);if(P.innerHeight=T,S&&(T+=S[0]+S[2]),P.height=T,P.lineHeight=et(w.lineHeight,e.lineHeight,T),P.align=w&&w.align||e.align,P.verticalAlign=w&&w.verticalAlign||"middle",g&&null!=o&&c+P.lineHeight>o){b>0?(m.tokens=m.tokens.slice(0,b),y(m,x,_),n.lines=n.lines.slice(0,v+1)):n.lines=n.lines.slice(0,v);break t}var C=w.width,A=null==C||"auto"===C;if("string"==typeof C&&"%"===C.charAt(C.length-1))P.percentWidth=C,h.push(P),P.contentWidth=Bn(P.text,I);else{if(A){var D=w.backgroundColor,L=D&&D.image;L&&io(L=to(L))&&(P.width=Math.max(P.width,L.width*T/L.height))}var k=f&&null!=r?r-x:null;null!=k&&k<P.width?!A||k<M?(P.text="",P.width=P.contentWidth=0):(P.text=oo(P.text,k-M,I,e.ellipsis,{minChar:e.truncateMinChar}),P.width=P.contentWidth=Bn(P.text,I)):P.contentWidth=Bn(P.text,I)}P.width+=M,x+=P.width,w&&(_=Math.max(_,P.lineHeight))}y(m,x,_)}for(n.outerWidth=n.width=tt(r,p),n.outerHeight=n.height=tt(o,c),n.contentHeight=c,n.contentWidth=p,d&&(n.outerWidth+=d[1]+d[3],n.outerHeight+=d[0]+d[2]),v=0;v<h.length;v++){var P,O=(P=h[v]).percentWidth;P.width=parseInt(O,10)/100*n.width}return n}(gs(t),t),n=e.width,i=e.outerWidth,r=e.outerHeight,o=t.padding,a=t.x||0,s=t.y||0,l=this._defaultStyle,u=t.align||l.align,h=t.verticalAlign||l.verticalAlign,c=Gn(a,i,u),p=Hn(s,r,h),d=c,f=p;o&&(d+=o[3],f+=o[0]);var g=d+n;ys(t)&&this._renderBackground(t,t,c,p,i,r);for(var y=!!t.backgroundColor,v=0;v<e.lines.length;v++){for(var m=e.lines[v],_=m.tokens,x=_.length,b=m.lineHeight,w=m.width,S=0,M=d,I=g,T=x-1,C=void 0;S<x&&(!(C=_[S]).align||"left"===C.align);)this._placeToken(C,t,b,f,M,"left",y),w-=C.width,M+=C.width,S++;for(;T>=0&&"right"===(C=_[T]).align;)this._placeToken(C,t,b,f,I,"right",y),w-=C.width,I-=C.width,T--;for(M+=(n-(M-d)-(g-I)-w)/2;S<=T;)C=_[S],this._placeToken(C,t,b,f,M+C.width/2,"center",y),M+=C.width,S++;f+=b}},e.prototype._placeToken=function(t,e,n,i,r,o,a){var s=e.rich[t.styleName]||{};s.text=t.text;var l=t.verticalAlign,u=i+n/2;"top"===l?u=i+t.height/2:"bottom"===l&&(u=i+n-t.height/2),!t.isLineHolder&&ys(s)&&this._renderBackground(s,e,"right"===o?r-t.width:"center"===o?r-t.width/2:r,u-t.height/2,t.width,t.height);var h=!!s.backgroundColor,c=t.textPadding;c&&(r=fs(r,o,c),u-=t.height/2-c[0]-t.innerHeight/2);var p=this._getOrCreateChild(Ka),d=p.createStyle();p.useStyle(d);var f=this._defaultStyle,g=!1,y=0,v=ds("fill"in s?s.fill:"fill"in e?e.fill:(g=!0,f.fill)),m=ds("stroke"in s?s.stroke:"stroke"in e?e.stroke:h||a||f.autoStroke&&!g?null:(y=2,f.stroke)),_=s.textShadowBlur>0||e.textShadowBlur>0;d.text=t.text,d.x=r,d.y=u,_&&(d.shadowBlur=s.textShadowBlur||e.textShadowBlur||0,d.shadowColor=s.textShadowColor||e.textShadowColor||"transparent",d.shadowOffsetX=s.textShadowOffsetX||e.textShadowOffsetX||0,d.shadowOffsetY=s.textShadowOffsetY||e.textShadowOffsetY||0),d.textAlign=o,d.textBaseline="middle",d.font=t.font||En,d.opacity=et(s.opacity,e.opacity,1),m&&(d.lineWidth=et(s.lineWidth,e.lineWidth,y),d.lineDash=tt(s.lineDash,e.lineDash),d.lineDashOffset=e.lineDashOffset||0,d.stroke=m),v&&(d.fill=v);var x=t.contentWidth,b=t.contentHeight;p.setBoundingRect(new Rn(Gn(d.x,x,d.textAlign),Hn(d.y,b,d.textBaseline),x,b))},e.prototype._renderBackground=function(t,e,n,i,r,o){var a,s,l,u=t.backgroundColor,h=t.borderWidth,c=t.borderColor,p=H(u),d=t.borderRadius,f=this;if(p||h&&c){(a=this._getOrCreateChild(as)).useStyle(a.createStyle()),a.style.fill=null;var g=a.shape;g.x=n,g.y=i,g.width=r,g.height=o,g.r=d,a.dirtyShape()}if(p)(l=a.style).fill=u||null,l.fillOpacity=tt(t.fillOpacity,1);else if(u&&u.image){(s=this._getOrCreateChild(Qa)).onload=function(){f.dirtyStyle()};var y=s.style;y.image=u.image,y.x=n,y.y=i,y.width=r,y.height=o}h&&c&&((l=a.style).lineWidth=h,l.stroke=c,l.strokeOpacity=tt(t.strokeOpacity,1),l.lineDash=t.borderDash,l.lineDashOffset=t.borderDashOffset||0,a.strokeContainThreshold=0,a.hasFill()&&a.hasStroke()&&(l.strokeFirst=!0,l.lineWidth*=2));var v=(a||s).style;v.shadowBlur=t.shadowBlur||0,v.shadowColor=t.shadowColor||"transparent",v.shadowOffsetX=t.shadowOffsetX||0,v.shadowOffsetY=t.shadowOffsetY||0,v.opacity=et(t.opacity,e.opacity,1)},e.makeFont=function(t){var e="";if(t.fontSize||t.fontFamily||t.fontWeight){var n="";n="string"!=typeof t.fontSize||-1===t.fontSize.indexOf("px")&&-1===t.fontSize.indexOf("rem")&&-1===t.fontSize.indexOf("em")?isNaN(+t.fontSize)?"12px":t.fontSize+"px":t.fontSize,e=[t.fontStyle,t.fontWeight,n,t.fontFamily||"sans-serif"].join(" ")}return e&&ot(e)||t.textFont||t.font},e}(bo),hs={left:!0,right:1,center:1},cs={top:1,bottom:1,middle:1};function ps(t){if(t){t.font=us.makeFont(t);var e=t.align;"middle"===e&&(e="center"),t.align=null==e||hs[e]?e:"left";var n=t.verticalAlign;"center"===n&&(n="middle"),t.verticalAlign=null==n||cs[n]?n:"top",t.padding&&(t.padding=it(t.padding))}}function ds(t,e){return null==t||e<=0||"transparent"===t||"none"===t?null:t.image||t.colorStops?"#000000":t}function fs(t,e,n){return"right"===e?t-n[1]:"center"===e?t+n[3]/2-n[1]/2:t+n[3]}function gs(t){var e=t.text;return null!=e&&(e+=""),e}function ys(t){return!!(t.backgroundColor||t.borderWidth&&t.borderColor)}var vs=Lr(),ms=1,_s={},xs=Lr(),bs=["emphasis","blur","select"],ws=["normal","emphasis","blur","select"],Ss=10,Ms="highlight",Is="downplay",Ts="select",Cs="unselect",As="toggleSelect";function Ds(t){return null!=t&&"none"!==t}var Ls=new Ee(100);function ks(t){if("string"!=typeof t)return t;var e=Ls.get(t);return e||(e=$e(t,-.1),Ls.put(t,e)),e}function Ps(t,e,n){t.onHoverStateChange&&(t.hoverState||0)!==n&&t.onHoverStateChange(e),t.hoverState=n}function Os(t){Ps(t,"emphasis",2)}function Rs(t){2===t.hoverState&&Ps(t,"normal",0)}function Ns(t){Ps(t,"blur",1)}function Es(t){1===t.hoverState&&Ps(t,"normal",0)}function zs(t){t.selected=!0}function Bs(t){t.selected=!1}function Vs(t,e,n){e(t,n)}function Fs(t,e,n){Vs(t,e,n),t.isGroup&&t.traverse((function(t){Vs(t,e,n)}))}function Gs(t,e){switch(e){case"emphasis":t.hoverState=2;break;case"normal":t.hoverState=0;break;case"blur":t.hoverState=1;break;case"select":t.selected=!0}}function Hs(t,e){var n=this.states[t];if(this.style){if("emphasis"===t)return function(t,e,n,i){var r=n&&A(n,"select")>=0,o=!1;if(t instanceof ja){var a=xs(t),s=r&&a.selectFill||a.normalFill,l=r&&a.selectStroke||a.normalStroke;if(Ds(s)||Ds(l)){var u=(i=i||{}).style||{};!Ds(u.fill)&&Ds(s)?(o=!0,i=I({},i),(u=I({},u)).fill=ks(s)):!Ds(u.stroke)&&Ds(l)&&(o||(i=I({},i),u=I({},u)),u.stroke=ks(l)),i.style=u}}if(i&&null==i.z2){o||(i=I({},i));var h=t.z2EmphasisLift;i.z2=t.z2+(null!=h?h:Ss)}return i}(this,0,e,n);if("blur"===t)return function(t,e,n){var i=A(t.currentStates,e)>=0,r=t.style.opacity,o=i?null:function(t,e,n,i){for(var r=t.style,o={},a=0;a<e.length;a++){var s=e[a],l=r[s];o[s]=null==l?i&&i[s]:l}for(a=0;a<t.animators.length;a++){var u=t.animators[a];u.__fromStateTransition&&u.__fromStateTransition.indexOf(n)<0&&"style"===u.targetName&&u.saveFinalToTarget(o,e)}return o}(t,["opacity"],e,{opacity:1}),a=(n=n||{}).style||{};return null==a.opacity&&(n=I({},n),a=I({opacity:i?r:.1*o.opacity},a),n.style=a),n}(this,t,n);if("select"===t)return function(t,e,n){if(n&&null==n.z2){n=I({},n);var i=t.z2SelectLift;n.z2=t.z2+(null!=i?i:9)}return n}(this,0,n)}return n}function Ws(t){t.stateProxy=Hs;var e=t.getTextContent(),n=t.getTextGuideLine();e&&(e.stateProxy=Hs),n&&(n.stateProxy=Hs)}function Us(t,e){!Js(t,e)&&!t.__highByOuter&&Fs(t,Os)}function Ys(t,e){!Js(t,e)&&!t.__highByOuter&&Fs(t,Rs)}function Xs(t,e){t.__highByOuter|=1<<(e||0),Fs(t,Os)}function Zs(t,e){!(t.__highByOuter&=~(1<<(e||0)))&&Fs(t,Rs)}function js(t){Fs(t,Ns)}function qs(t){Fs(t,Es)}function Ks(t){Fs(t,zs)}function $s(t){Fs(t,Bs)}function Js(t,e){return t.__highDownSilentOnTouch&&e.zrByTouch}function Qs(t){t.getModel().eachComponent((function(e,n){("series"===e?t.getViewOfSeriesModel(n):t.getViewOfComponentModel(n)).group.traverse((function(t){Es(t)}))}))}function tl(t,e,n,i){var r=i.getModel();function o(t,e){for(var n=0;n<e.length;n++){var i=t.getItemGraphicEl(e[n]);i&&qs(i)}}if(n=n||"coordinateSystem",null!=t&&e&&"none"!==e){var a=r.getSeriesByIndex(t),s=a.coordinateSystem;s&&s.master&&(s=s.master);var l=[];r.eachSeries((function(t){var r=a===t,u=t.coordinateSystem;if(u&&u.master&&(u=u.master),!("series"===n&&!r||"coordinateSystem"===n&&!(u&&s?u===s:r)||"series"===e&&r)){if(i.getViewOfSeriesModel(t).group.traverse((function(t){Ns(t)})),k(e))o(t.getData(),e);else if(Y(e))for(var h=z(e),c=0;c<h.length;c++)o(t.getData(h[c]),e[h[c]]);l.push(t)}})),r.eachComponent((function(t,e){if("series"!==t){var n=i.getViewOfComponentModel(e);n&&n.blurSeries&&n.blurSeries(l,r)}}))}}function el(t,e,n){if(null!=t&&null!=e){var i=n.getModel().getComponent(t,e);if(i){var r=n.getViewOfComponentModel(i);r&&r.focusBlurEnabled&&r.group.traverse((function(t){Ns(t)}))}}}function nl(t,e,n,i){var r={focusSelf:!1,dispatchers:null};if(null==t||"series"===t||null==e||null==n)return r;var o=i.getModel().getComponent(t,e);if(!o)return r;var a=i.getViewOfComponentModel(o);if(!a||!a.findHighDownDispatchers)return r;for(var s,l=a.findHighDownDispatchers(n),u=0;u<l.length;u++)if("self"===vs(l[u]).focus){s=!0;break}return{focusSelf:s,dispatchers:l}}function il(t){P(t.getAllData(),(function(e){var n=e.data,i=e.type;n.eachItemGraphicEl((function(e,n){t.isSelected(n,i)?Ks(e):$s(e)}))}))}function rl(t){var e=[];return t.eachSeries((function(t){P(t.getAllData(),(function(n){n.data;var i=n.type,r=t.getSelectedDataIndices();if(r.length>0){var o={dataIndex:r,seriesIndex:t.seriesIndex};null!=i&&(o.dataType=i),e.push(o)}}))})),e}function ol(t,e,n){hl(t,!0),Fs(t,Ws),al(t,e,n)}function al(t,e,n){var i=vs(t);null!=e?(i.focus=e,i.blurScope=n):i.focus&&(i.focus=null)}var sl=["emphasis","blur","select"],ll={itemStyle:"getItemStyle",lineStyle:"getLineStyle",areaStyle:"getAreaStyle"};function ul(t,e,n,i){n=n||"itemStyle";for(var r=0;r<sl.length;r++){var o=sl[r],a=e.getModel([o,n]);t.ensureState(o).style=i?i(a):a[ll[n]]()}}function hl(t,e){var n=!1===e,i=t;t.highDownSilentOnTouch&&(i.__highDownSilentOnTouch=t.highDownSilentOnTouch),n&&!i.__highDownDispatcher||(i.__highByOuter=i.__highByOuter||0,i.__highDownDispatcher=!n)}function cl(t){return!(!t||!t.__highDownDispatcher)}function pl(t){var e=t.type;return e===Ts||e===Cs||e===As}function dl(t){var e=t.type;return e===Ms||e===Is}var fl=Aa.CMD,gl=[[],[],[]],yl=Math.sqrt,vl=Math.atan2;var ml=Math.sqrt,_l=Math.sin,xl=Math.cos,bl=Math.PI;function wl(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])}function Sl(t,e){return(t[0]*e[0]+t[1]*e[1])/(wl(t)*wl(e))}function Ml(t,e){return(t[0]*e[1]<t[1]*e[0]?-1:1)*Math.acos(Sl(t,e))}function Il(t,e,n,i,r,o,a,s,l,u,h){var c=l*(bl/180),p=xl(c)*(t-n)/2+_l(c)*(e-i)/2,d=-1*_l(c)*(t-n)/2+xl(c)*(e-i)/2,f=p*p/(a*a)+d*d/(s*s);f>1&&(a*=ml(f),s*=ml(f));var g=(r===o?-1:1)*ml((a*a*(s*s)-a*a*(d*d)-s*s*(p*p))/(a*a*(d*d)+s*s*(p*p)))||0,y=g*a*d/s,v=g*-s*p/a,m=(t+n)/2+xl(c)*y-_l(c)*v,_=(e+i)/2+_l(c)*y+xl(c)*v,x=Ml([1,0],[(p-y)/a,(d-v)/s]),b=[(p-y)/a,(d-v)/s],w=[(-1*p-y)/a,(-1*d-v)/s],S=Ml(b,w);if(Sl(b,w)<=-1&&(S=bl),Sl(b,w)>=1&&(S=0),S<0){var M=Math.round(S/bl*1e6)/1e6;S=2*bl+M%2*bl}h.addData(u,m,_,a,s,x,S,c,o)}var Tl=/([mlvhzcqtsa])([^mlvhzcqtsa]*)/gi,Cl=/-?([0-9]*\.)?[0-9]+([eE]-?[0-9]+)?/g;var Al=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.applyTransform=function(t){},e}(ja);function Dl(t){return null!=t.setData}function Ll(t,e){var n=function(t){var e=new Aa;if(!t)return e;var n,i=0,r=0,o=i,a=r,s=Aa.CMD,l=t.match(Tl);if(!l)return e;for(var u=0;u<l.length;u++){for(var h=l[u],c=h.charAt(0),p=void 0,d=h.match(Cl)||[],f=d.length,g=0;g<f;g++)d[g]=parseFloat(d[g]);for(var y=0;y<f;){var v=void 0,m=void 0,_=void 0,x=void 0,b=void 0,w=void 0,S=void 0,M=i,I=r,T=void 0,C=void 0;switch(c){case"l":i+=d[y++],r+=d[y++],p=s.L,e.addData(p,i,r);break;case"L":i=d[y++],r=d[y++],p=s.L,e.addData(p,i,r);break;case"m":i+=d[y++],r+=d[y++],p=s.M,e.addData(p,i,r),o=i,a=r,c="l";break;case"M":i=d[y++],r=d[y++],p=s.M,e.addData(p,i,r),o=i,a=r,c="L";break;case"h":i+=d[y++],p=s.L,e.addData(p,i,r);break;case"H":i=d[y++],p=s.L,e.addData(p,i,r);break;case"v":r+=d[y++],p=s.L,e.addData(p,i,r);break;case"V":r=d[y++],p=s.L,e.addData(p,i,r);break;case"C":p=s.C,e.addData(p,d[y++],d[y++],d[y++],d[y++],d[y++],d[y++]),i=d[y-2],r=d[y-1];break;case"c":p=s.C,e.addData(p,d[y++]+i,d[y++]+r,d[y++]+i,d[y++]+r,d[y++]+i,d[y++]+r),i+=d[y-2],r+=d[y-1];break;case"S":v=i,m=r,T=e.len(),C=e.data,n===s.C&&(v+=i-C[T-4],m+=r-C[T-3]),p=s.C,M=d[y++],I=d[y++],i=d[y++],r=d[y++],e.addData(p,v,m,M,I,i,r);break;case"s":v=i,m=r,T=e.len(),C=e.data,n===s.C&&(v+=i-C[T-4],m+=r-C[T-3]),p=s.C,M=i+d[y++],I=r+d[y++],i+=d[y++],r+=d[y++],e.addData(p,v,m,M,I,i,r);break;case"Q":M=d[y++],I=d[y++],i=d[y++],r=d[y++],p=s.Q,e.addData(p,M,I,i,r);break;case"q":M=d[y++]+i,I=d[y++]+r,i+=d[y++],r+=d[y++],p=s.Q,e.addData(p,M,I,i,r);break;case"T":v=i,m=r,T=e.len(),C=e.data,n===s.Q&&(v+=i-C[T-4],m+=r-C[T-3]),i=d[y++],r=d[y++],p=s.Q,e.addData(p,v,m,i,r);break;case"t":v=i,m=r,T=e.len(),C=e.data,n===s.Q&&(v+=i-C[T-4],m+=r-C[T-3]),i+=d[y++],r+=d[y++],p=s.Q,e.addData(p,v,m,i,r);break;case"A":_=d[y++],x=d[y++],b=d[y++],w=d[y++],S=d[y++],Il(M=i,I=r,i=d[y++],r=d[y++],w,S,_,x,b,p=s.A,e);break;case"a":_=d[y++],x=d[y++],b=d[y++],w=d[y++],S=d[y++],Il(M=i,I=r,i+=d[y++],r+=d[y++],w,S,_,x,b,p=s.A,e)}}"z"!==c&&"Z"!==c||(p=s.Z,e.addData(p),i=o,r=a),n=p}return e.toStatic(),e}(t),i=I({},e);return i.buildPath=function(t){if(Dl(t)){t.setData(n.data),(e=t.getContext())&&t.rebuildPath(e,1)}else{var e=t;n.rebuildPath(e,1)}},i.applyTransform=function(t){!function(t,e){var n,i,r,o,a,s,l=t.data,u=t.len(),h=fl.M,c=fl.C,p=fl.L,d=fl.R,f=fl.A,g=fl.Q;for(r=0,o=0;r<u;){switch(n=l[r++],o=r,i=0,n){case h:case p:i=1;break;case c:i=3;break;case g:i=2;break;case f:var y=e[4],v=e[5],m=yl(e[0]*e[0]+e[1]*e[1]),_=yl(e[2]*e[2]+e[3]*e[3]),x=vl(-e[1]/_,e[0]/m);l[r]*=m,l[r++]+=y,l[r]*=_,l[r++]+=v,l[r++]*=m,l[r++]*=_,l[r++]+=x,l[r++]+=x,o=r+=2;break;case d:s[0]=l[r++],s[1]=l[r++],Rt(s,s,e),l[o++]=s[0],l[o++]=s[1],s[0]+=l[r++],s[1]+=l[r++],Rt(s,s,e),l[o++]=s[0],l[o++]=s[1]}for(a=0;a<i;a++){var b=gl[a];b[0]=l[r++],b[1]=l[r++],Rt(b,b,e),l[o++]=b[0],l[o++]=b[1]}}t.increaseVersion()}(n,t),this.dirtyShape()},i}function kl(t,e){return new Al(Ll(t,e))}var Pl=function(){this.cx=0,this.cy=0,this.r=0},Ol=function(t){function e(e){return t.call(this,e)||this}return n(e,t),e.prototype.getDefaultShape=function(){return new Pl},e.prototype.buildPath=function(t,e,n){n&&t.moveTo(e.cx+e.r,e.cy),t.arc(e.cx,e.cy,e.r,0,2*Math.PI)},e}(ja);Ol.prototype.type="circle";var Rl=function(){this.cx=0,this.cy=0,this.rx=0,this.ry=0},Nl=function(t){function e(e){return t.call(this,e)||this}return n(e,t),e.prototype.getDefaultShape=function(){return new Rl},e.prototype.buildPath=function(t,e){var n=.5522848,i=e.cx,r=e.cy,o=e.rx,a=e.ry,s=o*n,l=a*n;t.moveTo(i-o,r),t.bezierCurveTo(i-o,r-l,i-s,r-a,i,r-a),t.bezierCurveTo(i+s,r-a,i+o,r-l,i+o,r),t.bezierCurveTo(i+o,r+l,i+s,r+a,i,r+a),t.bezierCurveTo(i-s,r+a,i-o,r+l,i-o,r),t.closePath()},e}(ja);Nl.prototype.type="ellipse";var El=Math.PI,zl=2*El,Bl=Math.sin,Vl=Math.cos,Fl=Math.acos,Gl=Math.atan2,Hl=Math.abs,Wl=Math.sqrt,Ul=Math.max,Yl=Math.min,Xl=1e-4;function Zl(t,e,n,i,r,o,a){var s=t-n,l=e-i,u=(a?o:-o)/Wl(s*s+l*l),h=u*l,c=-u*s,p=t+h,d=e+c,f=n+h,g=i+c,y=(p+f)/2,v=(d+g)/2,m=f-p,_=g-d,x=m*m+_*_,b=r-o,w=p*g-f*d,S=(_<0?-1:1)*Wl(Ul(0,b*b*x-w*w)),M=(w*_-m*S)/x,I=(-w*m-_*S)/x,T=(w*_+m*S)/x,C=(-w*m+_*S)/x,A=M-y,D=I-v,L=T-y,k=C-v;return A*A+D*D>L*L+k*k&&(M=T,I=C),{cx:M,cy:I,x01:-h,y01:-c,x11:M*(r/b-1),y11:I*(r/b-1)}}function jl(t,e){var n=Ul(e.r,0),i=Ul(e.r0||0,0),r=n>0;if(r||i>0){if(r||(n=i,i=0),i>n){var o=n;n=i,i=o}var a,s=!!e.clockwise,l=e.startAngle,u=e.endAngle;if(l===u)a=0;else{var h=[l,u];Ca(h,!s),a=Hl(h[0]-h[1])}var c=e.cx,p=e.cy,d=e.cornerRadius||0,f=e.innerCornerRadius||0;if(n>Xl)if(a>zl-Xl)t.moveTo(c+n*Vl(l),p+n*Bl(l)),t.arc(c,p,n,l,u,!s),i>Xl&&(t.moveTo(c+i*Vl(u),p+i*Bl(u)),t.arc(c,p,i,u,l,s));else{var g=Hl(n-i)/2,y=Yl(g,d),v=Yl(g,f),m=v,_=y,x=n*Vl(l),b=n*Bl(l),w=i*Vl(u),S=i*Bl(u),M=void 0,I=void 0,T=void 0,C=void 0;if((y>Xl||v>Xl)&&(M=n*Vl(u),I=n*Bl(u),T=i*Vl(l),C=i*Bl(l),a<El)){var A=function(t,e,n,i,r,o,a,s){var l=n-t,u=i-e,h=a-r,c=s-o,p=c*l-h*u;if(!(p*p<Xl))return[t+(p=(h*(e-o)-c*(t-r))/p)*l,e+p*u]}(x,b,T,C,M,I,w,S);if(A){var D=x-A[0],L=b-A[1],k=M-A[0],P=I-A[1],O=1/Bl(Fl((D*k+L*P)/(Wl(D*D+L*L)*Wl(k*k+P*P)))/2),R=Wl(A[0]*A[0]+A[1]*A[1]);m=Yl(v,(i-R)/(O-1)),_=Yl(y,(n-R)/(O+1))}}if(a>Xl)if(_>Xl){var N=Zl(T,C,x,b,n,_,s),E=Zl(M,I,w,S,n,_,s);t.moveTo(c+N.cx+N.x01,p+N.cy+N.y01),_<y?t.arc(c+N.cx,p+N.cy,_,Gl(N.y01,N.x01),Gl(E.y01,E.x01),!s):(t.arc(c+N.cx,p+N.cy,_,Gl(N.y01,N.x01),Gl(N.y11,N.x11),!s),t.arc(c,p,n,Gl(N.cy+N.y11,N.cx+N.x11),Gl(E.cy+E.y11,E.cx+E.x11),!s),t.arc(c+E.cx,p+E.cy,_,Gl(E.y11,E.x11),Gl(E.y01,E.x01),!s))}else t.moveTo(c+x,p+b),t.arc(c,p,n,l,u,!s);else t.moveTo(c+x,p+b);if(i>Xl&&a>Xl)if(m>Xl){N=Zl(w,S,M,I,i,-m,s),E=Zl(x,b,T,C,i,-m,s);t.lineTo(c+N.cx+N.x01,p+N.cy+N.y01),m<v?t.arc(c+N.cx,p+N.cy,m,Gl(N.y01,N.x01),Gl(E.y01,E.x01),!s):(t.arc(c+N.cx,p+N.cy,m,Gl(N.y01,N.x01),Gl(N.y11,N.x11),!s),t.arc(c,p,i,Gl(N.cy+N.y11,N.cx+N.x11),Gl(E.cy+E.y11,E.cx+E.x11),s),t.arc(c+E.cx,p+E.cy,m,Gl(E.y11,E.x11),Gl(E.y01,E.x01),!s))}else t.lineTo(c+w,p+S),t.arc(c,p,i,u,l,s);else t.lineTo(c+w,p+S)}else t.moveTo(c,p);t.closePath()}}var ql=function(){this.cx=0,this.cy=0,this.r0=0,this.r=0,this.startAngle=0,this.endAngle=2*Math.PI,this.clockwise=!0,this.cornerRadius=0,this.innerCornerRadius=0},Kl=function(t){function e(e){return t.call(this,e)||this}return n(e,t),e.prototype.getDefaultShape=function(){return new ql},e.prototype.buildPath=function(t,e){jl(t,e)},e.prototype.isZeroArea=function(){return this.shape.startAngle===this.shape.endAngle||this.shape.r===this.shape.r0},e}(ja);Kl.prototype.type="sector";var $l=function(){this.cx=0,this.cy=0,this.r=0,this.r0=0},Jl=function(t){function e(e){return t.call(this,e)||this}return n(e,t),e.prototype.getDefaultShape=function(){return new $l},e.prototype.buildPath=function(t,e){var n=e.cx,i=e.cy,r=2*Math.PI;t.moveTo(n+e.r,i),t.arc(n,i,e.r,0,r,!1),t.moveTo(n+e.r0,i),t.arc(n,i,e.r0,0,r,!0)},e}(ja);function Ql(t,e,n,i,r,o,a){var s=.5*(n-t),l=.5*(i-e);return(2*(e-n)+s+l)*a+(-3*(e-n)-2*s-l)*o+s*r+e}function tu(t,e,n){var i=e.smooth,r=e.points;if(r&&r.length>=2){if(i&&"spline"!==i){var o=function(t,e,n,i){var r,o,a,s,l=[],u=[],h=[],c=[];if(i){a=[1/0,1/0],s=[-1/0,-1/0];for(var p=0,d=t.length;p<d;p++)Nt(a,a,t[p]),Et(s,s,t[p]);Nt(a,a,i[0]),Et(s,s,i[1])}for(p=0,d=t.length;p<d;p++){var f=t[p];if(n)r=t[p?p-1:d-1],o=t[(p+1)%d];else{if(0===p||p===d-1){l.push(mt(t[p]));continue}r=t[p-1],o=t[p+1]}wt(u,o,r),Ct(u,u,e);var g=Dt(f,r),y=Dt(f,o),v=g+y;0!==v&&(g/=v,y/=v),Ct(h,u,-g),Ct(c,u,y);var m=xt([],f,h),_=xt([],f,c);i&&(Et(m,m,a),Nt(m,m,s),Et(_,_,a),Nt(_,_,s)),l.push(m),l.push(_)}return n&&l.push(l.shift()),l}(r,i,n,e.smoothConstraint);t.moveTo(r[0][0],r[0][1]);for(var a=r.length,s=0;s<(n?a:a-1);s++){var l=o[2*s],u=o[2*s+1],h=r[(s+1)%a];t.bezierCurveTo(l[0],l[1],u[0],u[1],h[0],h[1])}}else{"spline"===i&&(r=function(t,e){for(var n=t.length,i=[],r=0,o=1;o<n;o++)r+=Dt(t[o-1],t[o]);var a=r/2;for(a=a<n?n:a,o=0;o<a;o++){var s=o/(a-1)*(e?n:n-1),l=Math.floor(s),u=s-l,h=void 0,c=t[l%n],p=void 0,d=void 0;e?(h=t[(l-1+n)%n],p=t[(l+1)%n],d=t[(l+2)%n]):(h=t[0===l?l:l-1],p=t[l>n-2?n-1:l+1],d=t[l>n-3?n-1:l+2]);var f=u*u,g=u*f;i.push([Ql(h[0],c[0],p[0],d[0],u,f,g),Ql(h[1],c[1],p[1],d[1],u,f,g)])}return i}(r,n)),t.moveTo(r[0][0],r[0][1]);s=1;for(var c=r.length;s<c;s++)t.lineTo(r[s][0],r[s][1])}n&&t.closePath()}}Jl.prototype.type="ring";var eu=function(){this.points=null,this.smooth=0,this.smoothConstraint=null},nu=function(t){function e(e){return t.call(this,e)||this}return n(e,t),e.prototype.getDefaultShape=function(){return new eu},e.prototype.buildPath=function(t,e){tu(t,e,!0)},e}(ja);nu.prototype.type="polygon";var iu=function(){this.points=null,this.percent=1,this.smooth=0,this.smoothConstraint=null},ru=function(t){function e(e){return t.call(this,e)||this}return n(e,t),e.prototype.getDefaultStyle=function(){return{stroke:"#000000",fill:null}},e.prototype.getDefaultShape=function(){return new iu},e.prototype.buildPath=function(t,e){tu(t,e,!1)},e}(ja);ru.prototype.type="polyline";var ou={},au=function(){this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.percent=1},su=function(t){function e(e){return t.call(this,e)||this}return n(e,t),e.prototype.getDefaultStyle=function(){return{stroke:"#000000",fill:null}},e.prototype.getDefaultShape=function(){return new au},e.prototype.buildPath=function(t,e){var n,i,r,o;if(this.subPixelOptimize){var a=es(ou,e,this.style);n=a.x1,i=a.y1,r=a.x2,o=a.y2}else n=e.x1,i=e.y1,r=e.x2,o=e.y2;var s=e.percent;0!==s&&(t.moveTo(n,i),s<1&&(r=n*(1-s)+r*s,o=i*(1-s)+o*s),t.lineTo(r,o))},e.prototype.pointAt=function(t){var e=this.shape;return[e.x1*(1-t)+e.x2*t,e.y1*(1-t)+e.y2*t]},e}(ja);su.prototype.type="line";var lu=[],uu=function(){this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.cpx1=0,this.cpy1=0,this.percent=1};function hu(t,e,n){var i=t.cpx2,r=t.cpy2;return null===i||null===r?[(n?Eo:No)(t.x1,t.cpx1,t.cpx2,t.x2,e),(n?Eo:No)(t.y1,t.cpy1,t.cpy2,t.y2,e)]:[(n?Wo:Ho)(t.x1,t.cpx1,t.x2,e),(n?Wo:Ho)(t.y1,t.cpy1,t.y2,e)]}var cu=function(t){function e(e){return t.call(this,e)||this}return n(e,t),e.prototype.getDefaultStyle=function(){return{stroke:"#000000",fill:null}},e.prototype.getDefaultShape=function(){return new uu},e.prototype.buildPath=function(t,e){var n=e.x1,i=e.y1,r=e.x2,o=e.y2,a=e.cpx1,s=e.cpy1,l=e.cpx2,u=e.cpy2,h=e.percent;0!==h&&(t.moveTo(n,i),null==l||null==u?(h<1&&(Yo(n,a,r,h,lu),a=lu[1],r=lu[2],Yo(i,s,o,h,lu),s=lu[1],o=lu[2]),t.quadraticCurveTo(a,s,r,o)):(h<1&&(Vo(n,a,l,r,h,lu),a=lu[1],l=lu[2],r=lu[3],Vo(i,s,u,o,h,lu),s=lu[1],u=lu[2],o=lu[3]),t.bezierCurveTo(a,s,l,u,r,o)))},e.prototype.pointAt=function(t){return hu(this.shape,t,!1)},e.prototype.tangentAt=function(t){var e=hu(this.shape,t,!0);return At(e,e)},e}(ja);cu.prototype.type="bezier-curve";var pu=function(){this.cx=0,this.cy=0,this.r=0,this.startAngle=0,this.endAngle=2*Math.PI,this.clockwise=!0},du=function(t){function e(e){return t.call(this,e)||this}return n(e,t),e.prototype.getDefaultStyle=function(){return{stroke:"#000000",fill:null}},e.prototype.getDefaultShape=function(){return new pu},e.prototype.buildPath=function(t,e){var n=e.cx,i=e.cy,r=Math.max(e.r,0),o=e.startAngle,a=e.endAngle,s=e.clockwise,l=Math.cos(o),u=Math.sin(o);t.moveTo(l*r+n,u*r+i),t.arc(n,i,r,o,a,!s)},e}(ja);du.prototype.type="arc";var fu=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="compound",e}return n(e,t),e.prototype._updatePathDirty=function(){for(var t=this.shape.paths,e=this.shapeChanged(),n=0;n<t.length;n++)e=e||t[n].shapeChanged();e&&this.dirtyShape()},e.prototype.beforeBrush=function(){this._updatePathDirty();for(var t=this.shape.paths||[],e=this.getGlobalScale(),n=0;n<t.length;n++)t[n].path||t[n].createPathProxy(),t[n].path.setScale(e[0],e[1],t[n].segmentIgnoreThreshold)},e.prototype.buildPath=function(t,e){for(var n=e.paths||[],i=0;i<n.length;i++)n[i].buildPath(t,n[i].shape,!0)},e.prototype.afterBrush=function(){for(var t=this.shape.paths||[],e=0;e<t.length;e++)t[e].pathUpdated()},e.prototype.getBoundingRect=function(){return this._updatePathDirty.call(this),ja.prototype.getBoundingRect.call(this)},e}(ja),gu=function(){function t(t){this.colorStops=t||[]}return t.prototype.addColorStop=function(t,e){this.colorStops.push({offset:t,color:e})},t}(),yu=function(t){function e(e,n,i,r,o,a){var s=t.call(this,o)||this;return s.x=null==e?0:e,s.y=null==n?0:n,s.x2=null==i?1:i,s.y2=null==r?0:r,s.type="linear",s.global=a||!1,s}return n(e,t),e}(gu),vu=function(t){function e(e,n,i,r,o){var a=t.call(this,r)||this;return a.x=null==e?.5:e,a.y=null==n?.5:n,a.r=null==i?.5:i,a.type="radial",a.global=o||!1,a}return n(e,t),e}(gu),mu=[0,0],_u=[0,0],xu=new In,bu=new In,wu=function(){function t(t,e){this._corners=[],this._axes=[],this._origin=[0,0];for(var n=0;n<4;n++)this._corners[n]=new In;for(n=0;n<2;n++)this._axes[n]=new In;t&&this.fromBoundingRect(t,e)}return t.prototype.fromBoundingRect=function(t,e){var n=this._corners,i=this._axes,r=t.x,o=t.y,a=r+t.width,s=o+t.height;if(n[0].set(r,o),n[1].set(a,o),n[2].set(a,s),n[3].set(r,s),e)for(var l=0;l<4;l++)n[l].transform(e);In.sub(i[0],n[1],n[0]),In.sub(i[1],n[3],n[0]),i[0].normalize(),i[1].normalize();for(l=0;l<2;l++)this._origin[l]=i[l].dot(n[0])},t.prototype.intersect=function(t,e){var n=!0,i=!e;return xu.set(1/0,1/0),bu.set(0,0),!this._intersectCheckOneSide(this,t,xu,bu,i,1)&&(n=!1,i)||!this._intersectCheckOneSide(t,this,xu,bu,i,-1)&&(n=!1,i)||i||In.copy(e,n?xu:bu),n},t.prototype._intersectCheckOneSide=function(t,e,n,i,r,o){for(var a=!0,s=0;s<2;s++){var l=this._axes[s];if(this._getProjMinMaxOnAxis(s,t._corners,mu),this._getProjMinMaxOnAxis(s,e._corners,_u),mu[1]<_u[0]||mu[0]>_u[1]){if(a=!1,r)return a;var u=Math.abs(_u[0]-mu[1]),h=Math.abs(mu[0]-_u[1]);Math.min(u,h)>i.len()&&(u<h?In.scale(i,l,-u*o):In.scale(i,l,h*o))}else if(n){u=Math.abs(_u[0]-mu[1]),h=Math.abs(mu[0]-_u[1]);Math.min(u,h)<n.len()&&(u<h?In.scale(n,l,u*o):In.scale(n,l,-h*o))}}return a},t.prototype._getProjMinMaxOnAxis=function(t,e,n){for(var i=this._axes[t],r=this._origin,o=e[0].dot(i)+r[t],a=o,s=o,l=1;l<e.length;l++){var u=e[l].dot(i)+r[t];a=Math.min(u,a),s=Math.max(u,s)}n[0]=a,n[1]=s},t}(),Su=[],Mu=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.notClear=!0,e.incremental=!0,e._displayables=[],e._temporaryDisplayables=[],e._cursor=0,e}return n(e,t),e.prototype.traverse=function(t,e){t.call(e,this)},e.prototype.useStyle=function(){this.style={}},e.prototype.getCursor=function(){return this._cursor},e.prototype.innerAfterBrush=function(){this._cursor=this._displayables.length},e.prototype.clearDisplaybles=function(){this._displayables=[],this._temporaryDisplayables=[],this._cursor=0,this.markRedraw(),this.notClear=!1},e.prototype.clearTemporalDisplayables=function(){this._temporaryDisplayables=[]},e.prototype.addDisplayable=function(t,e){e?this._temporaryDisplayables.push(t):this._displayables.push(t),this.markRedraw()},e.prototype.addDisplayables=function(t,e){e=e||!1;for(var n=0;n<t.length;n++)this.addDisplayable(t[n],e)},e.prototype.getDisplayables=function(){return this._displayables},e.prototype.getTemporalDisplayables=function(){return this._temporaryDisplayables},e.prototype.eachPendingDisplayable=function(t){for(var e=this._cursor;e<this._displayables.length;e++)t&&t(this._displayables[e]);for(e=0;e<this._temporaryDisplayables.length;e++)t&&t(this._temporaryDisplayables[e])},e.prototype.update=function(){this.updateTransform();for(var t=this._cursor;t<this._displayables.length;t++){(e=this._displayables[t]).parent=this,e.update(),e.parent=null}for(t=0;t<this._temporaryDisplayables.length;t++){var e;(e=this._temporaryDisplayables[t]).parent=this,e.update(),e.parent=null}},e.prototype.getBoundingRect=function(){if(!this._rect){for(var t=new Rn(1/0,1/0,-1/0,-1/0),e=0;e<this._displayables.length;e++){var n=this._displayables[e],i=n.getBoundingRect().clone();n.needLocalTransform()&&i.applyTransform(n.getLocalTransform(Su)),t.union(i)}this._rect=t}return this._rect},e.prototype.contain=function(t,e){var n=this.transformCoordToLocal(t,e);if(this.getBoundingRect().contain(n[0],n[1]))for(var i=0;i<this._displayables.length;i++){if(this._displayables[i].contain(t,e))return!0}return!1},e}(bo),Iu=Math.max,Tu=Math.min,Cu={};function Au(t){return ja.extend(t)}var Du=function(t,e){var i=Ll(t,e);return function(t){function e(e){var n=t.call(this,e)||this;return n.applyTransform=i.applyTransform,n.buildPath=i.buildPath,n}return n(e,t),e}(Al)};function Lu(t,e){return Du(t,e)}function ku(t,e){Cu[t]=e}function Pu(t){if(Cu.hasOwnProperty(t))return Cu[t]}function Ou(t,e,n,i){var r=kl(t,e);return n&&("center"===i&&(n=Nu(n,r.getBoundingRect())),zu(r,n)),r}function Ru(t,e,n){var i=new Qa({style:{image:t,x:e.x,y:e.y,width:e.width,height:e.height},onload:function(t){if("center"===n){var r={width:t.width,height:t.height};i.setStyle(Nu(e,r))}}});return i}function Nu(t,e){var n,i=e.width/e.height,r=t.height*i;return n=r<=t.width?t.height:(r=t.width)/i,{x:t.x+t.width/2-r/2,y:t.y+t.height/2-n/2,width:r,height:n}}var Eu=function(t,e){for(var n=[],i=t.length,r=0;r<i;r++){var o=t[r];o.path||o.createPathProxy(),o.shapeChanged()&&o.buildPath(o.path,o.shape,!0),n.push(o.path)}var a=new ja(e);return a.createPathProxy(),a.buildPath=function(t){if(Dl(t)){t.appendPath(n);var e=t.getContext();e&&t.rebuildPath(e,1)}},a};function zu(t,e){if(t.applyTransform){var n=t.getBoundingRect().calculateTransform(e);t.applyTransform(n)}}var Bu=is;function Vu(t,e,n,i,r,o,a){var s,l=!1;"function"==typeof r?(a=o,o=r,r=null):Y(r)&&(o=r.cb,a=r.during,l=r.isFrom,s=r.removeOpt,r=r.dataIndex);var u,h="update"===t,c="remove"===t;if(i&&i.ecModel){var p=i.ecModel.getUpdatePayload();u=p&&p.animation}var d=i&&i.isAnimationEnabled();if(c||e.stopAnimation("remove"),d){var f=void 0,g=void 0,y=void 0;u?(f=u.duration||0,g=u.easing||"cubicOut",y=u.delay||0):c?(f=tt((s=s||{}).duration,200),g=tt(s.easing,"cubicOut"),y=0):(f=i.getShallow(h?"animationDurationUpdate":"animationDuration"),g=i.getShallow(h?"animationEasingUpdate":"animationEasing"),y=i.getShallow(h?"animationDelayUpdate":"animationDelay")),"function"==typeof y&&(y=y(r,i.getAnimationDelayParams?i.getAnimationDelayParams(e,r):null)),"function"==typeof f&&(f=f(r)),f>0?l?e.animateFrom(n,{duration:f,delay:y||0,easing:g,done:o,force:!!o||!!a,scope:t,during:a}):e.animateTo(n,{duration:f,delay:y||0,easing:g,done:o,force:!!o||!!a,setToFinal:!0,scope:t,during:a}):(e.stopAnimation(),!l&&e.attr(n),o&&o())}else e.stopAnimation(),!l&&e.attr(n),a&&a(1),o&&o()}function Fu(t,e,n,i,r,o){Vu("update",t,e,n,i,r,o)}function Gu(t,e,n,i,r,o){Vu("init",t,e,n,i,r,o)}function Hu(t,e,n,i,r,o){Yu(t)||Vu("remove",t,e,n,i,r,o)}function Wu(t,e,n,i){t.removeTextContent(),t.removeTextGuideLine(),Hu(t,{style:{opacity:0}},e,n,i)}function Uu(t,e,n){function i(){t.parent&&t.parent.remove(t)}t.isGroup?t.traverse((function(t){t.isGroup||Wu(t,e,n,i)})):Wu(t,e,n,i)}function Yu(t){if(!t.__zr)return!0;for(var e=0;e<t.animators.length;e++){if("remove"===t.animators[e].scope)return!0}return!1}function Xu(t,e){for(var n=ge([]);t&&t!==e;)ve(n,t.getLocalTransform(),n),t=t.parent;return n}function Zu(t,e,n){return e&&!k(e)&&(e=ke.getLocalTransform(e)),n&&(e=be([],e)),Rt([],t,e)}function ju(t,e,n){var i=0===e[4]||0===e[5]||0===e[0]?1:Math.abs(2*e[4]/e[0]),r=0===e[4]||0===e[5]||0===e[2]?1:Math.abs(2*e[4]/e[2]),o=["left"===t?-i:"right"===t?i:0,"top"===t?-r:"bottom"===t?r:0];return o=Zu(o,e,n),Math.abs(o[0])>Math.abs(o[1])?o[0]>0?"right":"left":o[1]>0?"bottom":"top"}function qu(t){return!t.isGroup}function Ku(t,e,n){if(t&&e){var i,r=(i={},t.traverse((function(t){qu(t)&&t.anid&&(i[t.anid]=t)})),i);e.traverse((function(t){if(qu(t)&&t.anid){var e=r[t.anid];if(e){var i=o(t);t.attr(o(e)),Fu(t,i,n,vs(t).dataIndex)}}}))}function o(t){var e={x:t.x,y:t.y,rotation:t.rotation};return function(t){return null!=t.shape}(t)&&(e.shape=I({},t.shape)),e}}function $u(t,e){return O(t,(function(t){var n=t[0];n=Iu(n,e.x),n=Tu(n,e.x+e.width);var i=t[1];return i=Iu(i,e.y),[n,i=Tu(i,e.y+e.height)]}))}function Ju(t,e){var n=Iu(t.x,e.x),i=Tu(t.x+t.width,e.x+e.width),r=Iu(t.y,e.y),o=Tu(t.y+t.height,e.y+e.height);if(i>=n&&o>=r)return{x:n,y:r,width:i-n,height:o-r}}function Qu(t,e,n){var i=I({rectHover:!0},e),r=i.style={strokeNoScale:!0};if(n=n||{x:-1,y:-1,width:2,height:2},t)return 0===t.indexOf("image://")?(r.image=t.slice(8),T(r,n),new Qa(i)):Ou(t.replace("path://",""),i,n,"center")}function th(t,e,n,i,r){for(var o=0,a=r[r.length-1];o<r.length;o++){var s=r[o];if(eh(t,e,n,i,s[0],s[1],a[0],a[1]))return!0;a=s}}function eh(t,e,n,i,r,o,a,s){var l,u=n-t,h=i-e,c=a-r,p=s-o,d=nh(c,p,u,h);if((l=d)<=1e-6&&l>=-1e-6)return!1;var f=t-r,g=e-o,y=nh(f,g,u,h)/d;if(y<0||y>1)return!1;var v=nh(f,g,c,p)/d;return!(v<0||v>1)}function nh(t,e,n,i){return t*i-n*e}function ih(t){var e=t.itemTooltipOption,n=t.componentModel,i=t.itemName,r=H(e)?{formatter:e}:e,o=n.mainType,a=n.componentIndex,s={componentType:o,name:i,$vars:["name"]};s[o+"Index"]=a;var l=t.formatterParamsExtra;l&&P(z(l),(function(t){dt(s,t)||(s[t]=l[t],s.$vars.push(t))}));var u=vs(t.el);u.componentMainType=o,u.componentIndex=a,u.tooltipConfig={name:i,option:T({content:i,formatterParams:s},r)}}ku("circle",Ol),ku("ellipse",Nl),ku("sector",Kl),ku("ring",Jl),ku("polygon",nu),ku("polyline",ru),ku("rect",as),ku("line",su),ku("bezierCurve",cu),ku("arc",du);var rh=Object.freeze({__proto__:null,extendShape:Au,extendPath:Lu,registerShape:ku,getShapeClass:Pu,makePath:Ou,makeImage:Ru,mergePath:Eu,resizePath:zu,subPixelOptimizeLine:function(t){return es(t.shape,t.shape,t.style),t},subPixelOptimizeRect:function(t){return ns(t.shape,t.shape,t.style),t},subPixelOptimize:Bu,updateProps:Fu,initProps:Gu,removeElement:Hu,removeElementWithFadeOut:Uu,isElementRemoved:Yu,getTransform:Xu,applyTransform:Zu,transformDirection:ju,groupTransition:Ku,clipPointsByRect:$u,clipRectByRect:Ju,createIcon:Qu,linePolygonIntersect:th,lineLineIntersect:eh,setTooltipConfig:ih,Group:zi,Image:Qa,Text:us,Circle:Ol,Ellipse:Nl,Sector:Kl,Ring:Jl,Polygon:nu,Polyline:ru,Rect:as,Line:su,BezierCurve:cu,Arc:du,IncrementalDisplayable:Mu,CompoundPath:fu,LinearGradient:yu,RadialGradient:vu,BoundingRect:Rn,OrientedBoundingRect:wu,Point:In,Path:ja}),oh={};function ah(t,e){for(var n=0;n<bs.length;n++){var i=bs[n],r=e[i],o=t.ensureState(i);o.style=o.style||{},o.style.text=r}var a=t.currentStates.slice();t.clearStates(!0),t.setStyle({text:e.normal}),t.useStates(a,!0)}function sh(t,e,n){var i,r=t.labelFetcher,o=t.labelDataIndex,a=t.labelDimIndex,s=e.normal;r&&(i=r.getFormattedLabel(o,"normal",null,a,s&&s.get("formatter"),null!=n?{interpolatedValue:n}:null)),null==i&&(i=G(t.defaultText)?t.defaultText(o,t,n):t.defaultText);for(var l={normal:i},u=0;u<bs.length;u++){var h=bs[u],c=e[h];l[h]=tt(r?r.getFormattedLabel(o,h,null,a,c&&c.get("formatter")):null,i)}return l}function lh(t,e,n,i){n=n||oh;for(var r=t instanceof us,o=!1,a=0;a<ws.length;a++){if((p=e[ws[a]])&&p.getShallow("show")){o=!0;break}}var s=r?t:t.getTextContent();if(o){r||(s||(s=new us,t.setTextContent(s)),t.stateProxy&&(s.stateProxy=t.stateProxy));var l=sh(n,e),u=e.normal,h=!!u.getShallow("show"),c=hh(u,i&&i.normal,n,!1,!r);c.text=l.normal,r||t.setTextConfig(ch(u,n,!1));for(a=0;a<bs.length;a++){var p,d=bs[a];if(p=e[d]){var f=s.ensureState(d),g=!!tt(p.getShallow("show"),h);if(g!==h&&(f.ignore=!g),f.style=hh(p,i&&i[d],n,!0,!r),f.style.text=l[d],!r)t.ensureState(d).textConfig=ch(p,n,!0)}}s.silent=!!u.getShallow("silent"),null!=s.style.x&&(c.x=s.style.x),null!=s.style.y&&(c.y=s.style.y),s.ignore=!h,s.useStyle(c),s.dirty(),n.enableTextSetter&&(vh(s).setLabelText=function(t){var i=sh(n,e,t);ah(s,i)})}else s&&(s.ignore=!0);t.dirty()}function uh(t,e){e=e||"label";for(var n={normal:t.getModel(e)},i=0;i<bs.length;i++){var r=bs[i];n[r]=t.getModel([r,e])}return n}function hh(t,e,n,i,r){var o={};return function(t,e,n,i,r){n=n||oh;var o,a=e.ecModel,s=a&&a.option.textStyle,l=function(t){var e;for(;t&&t!==t.ecModel;){var n=(t.option||oh).rich;if(n){e=e||{};for(var i=z(n),r=0;r<i.length;r++){e[i[r]]=1}}t=t.parentModel}return e}(e);if(l)for(var u in o={},l)if(l.hasOwnProperty(u)){var h=e.getModel(["rich",u]);gh(o[u]={},h,s,n,i,r,!1,!0)}o&&(t.rich=o);var c=e.get("overflow");c&&(t.overflow=c);var p=e.get("minMargin");null!=p&&(t.margin=p);gh(t,e,s,n,i,r,!0,!1)}(o,t,n,i,r),e&&I(o,e),o}function ch(t,e,n){e=e||{};var i,r={},o=t.getShallow("rotate"),a=tt(t.getShallow("distance"),n?null:5),s=t.getShallow("offset");return"outside"===(i=t.getShallow("position")||(n?null:"inside"))&&(i=e.defaultOutsidePosition||"top"),null!=i&&(r.position=i),null!=s&&(r.offset=s),null!=o&&(o*=Math.PI/180,r.rotation=o),null!=a&&(r.distance=a),r.outsideFill="inherit"===t.get("color")?e.inheritColor||null:"auto",r}var ph=["fontStyle","fontWeight","fontSize","fontFamily","textShadowColor","textShadowBlur","textShadowOffsetX","textShadowOffsetY"],dh=["align","lineHeight","width","height","tag","verticalAlign"],fh=["padding","borderWidth","borderRadius","borderDashOffset","backgroundColor","borderColor","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY"];function gh(t,e,n,i,r,o,a,s){n=!r&&n||oh;var l=i&&i.inheritColor,u=e.getShallow("color"),h=e.getShallow("textBorderColor"),c=tt(e.getShallow("opacity"),n.opacity);"inherit"!==u&&"auto"!==u||(u=l||null),"inherit"!==h&&"auto"!==h||(h=l||null),o||(u=u||n.color,h=h||n.textBorderColor),null!=u&&(t.fill=u),null!=h&&(t.stroke=h);var p=tt(e.getShallow("textBorderWidth"),n.textBorderWidth);null!=p&&(t.lineWidth=p);var d=tt(e.getShallow("textBorderType"),n.textBorderType);null!=d&&(t.lineDash=d);var f=tt(e.getShallow("textBorderDashOffset"),n.textBorderDashOffset);null!=f&&(t.lineDashOffset=f),r||null!=c||s||(c=i&&i.defaultOpacity),null!=c&&(t.opacity=c),r||o||null==t.fill&&i.inheritColor&&(t.fill=i.inheritColor);for(var g=0;g<ph.length;g++){var y=ph[g];null!=(m=tt(e.getShallow(y),n[y]))&&(t[y]=m)}for(g=0;g<dh.length;g++){y=dh[g];null!=(m=e.getShallow(y))&&(t[y]=m)}if(null==t.verticalAlign){var v=e.getShallow("baseline");null!=v&&(t.verticalAlign=v)}if(!a||!i.disableBox){for(g=0;g<fh.length;g++){var m;y=fh[g];null!=(m=e.getShallow(y))&&(t[y]=m)}var _=e.getShallow("borderType");null!=_&&(t.borderDash=_),"auto"!==t.backgroundColor&&"inherit"!==t.backgroundColor||!l||(t.backgroundColor=l),"auto"!==t.borderColor&&"inherit"!==t.borderColor||!l||(t.borderColor=l)}}function yh(t,e){var n=e&&e.getModel("textStyle");return ot([t.fontStyle||n&&n.getShallow("fontStyle")||"",t.fontWeight||n&&n.getShallow("fontWeight")||"",(t.fontSize||n&&n.getShallow("fontSize")||12)+"px",t.fontFamily||n&&n.getShallow("fontFamily")||"sans-serif"].join(" "))}var vh=Lr();function mh(t,e,n,i){if(t){var r=vh(t);r.prevValue=r.value,r.value=n;var o=e.normal;r.valueAnimation=o.get("valueAnimation"),r.valueAnimation&&(r.precision=o.get("precision"),r.defaultInterpolatedText=i,r.statesModels=e)}}function _h(t,e,n,i,r){var o=vh(t);if(o.valueAnimation){var a=o.defaultInterpolatedText,s=tt(o.interpolatedValue,o.prevValue),l=o.value;(null==s?Gu:Fu)(t,{},i,e,null,(function(i){var u=Vr(n,o.precision,s,l,i);o.interpolatedValue=1===i?null:u;var h=sh({labelDataIndex:e,labelFetcher:r,defaultText:a?a(u):u+""},o.statesModels,u);ah(t,h)}))}}var xh,bh,wh=["textStyle","color"],Sh=new us,Mh=function(){function t(){}return t.prototype.getTextColor=function(t){var e=this.ecModel;return this.getShallow("color")||(!t&&e?e.get(wh):null)},t.prototype.getFont=function(){return yh({fontStyle:this.getShallow("fontStyle"),fontWeight:this.getShallow("fontWeight"),fontSize:this.getShallow("fontSize"),fontFamily:this.getShallow("fontFamily")},this.ecModel)},t.prototype.getTextRect=function(t){return Sh.useStyle({text:t,fontStyle:this.getShallow("fontStyle"),fontWeight:this.getShallow("fontWeight"),fontSize:this.getShallow("fontSize"),fontFamily:this.getShallow("fontFamily"),verticalAlign:this.getShallow("verticalAlign")||this.getShallow("baseline"),padding:this.getShallow("padding"),lineHeight:this.getShallow("lineHeight"),rich:this.getShallow("rich")}),Sh.update(),Sh.getBoundingRect()},t}(),Ih=[["lineWidth","width"],["stroke","color"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"],["lineDash","type"],["lineDashOffset","dashOffset"],["lineCap","cap"],["lineJoin","join"],["miterLimit"]],Th=Kr(Ih),Ch=function(){function t(){}return t.prototype.getLineStyle=function(t){return Th(this,t)},t}(),Ah=[["fill","color"],["stroke","borderColor"],["lineWidth","borderWidth"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"],["lineDash","borderType"],["lineDashOffset","borderDashOffset"],["lineCap","borderCap"],["lineJoin","borderJoin"],["miterLimit","borderMiterLimit"]],Dh=Kr(Ah),Lh=function(){function t(){}return t.prototype.getItemStyle=function(t,e){return Dh(this,t,e)},t}(),kh=function(){function t(t,e,n){this.parentModel=e,this.ecModel=n,this.option=t}return t.prototype.init=function(t,e,n){for(var i=[],r=3;r<arguments.length;r++)i[r-3]=arguments[r]},t.prototype.mergeOption=function(t,e){S(this.option,t,!0)},t.prototype.get=function(t,e){return null==t?this.option:this._doGet(this.parsePath(t),!e&&this.parentModel)},t.prototype.getShallow=function(t,e){var n=this.option,i=null==n?n:n[t];if(null==i&&!e){var r=this.parentModel;r&&(i=r.getShallow(t))}return i},t.prototype.getModel=function(e,n){var i=null!=e,r=i?this.parsePath(e):null;return new t(i?this._doGet(r):this.option,n=n||this.parentModel&&this.parentModel.getModel(this.resolveParentPath(r)),this.ecModel)},t.prototype.isEmpty=function(){return null==this.option},t.prototype.restoreData=function(){},t.prototype.clone=function(){return new(0,this.constructor)(w(this.option))},t.prototype.parsePath=function(t){return"string"==typeof t?t.split("."):t},t.prototype.resolveParentPath=function(t){return t},t.prototype.isAnimationEnabled=function(){if(!a.node&&this.option){if(null!=this.option.animation)return!!this.option.animation;if(this.parentModel)return this.parentModel.isAnimationEnabled()}},t.prototype._doGet=function(t,e){var n=this.option;if(!t)return n;for(var i=0;i<t.length&&(!t[i]||null!=(n=n&&"object"==typeof n?n[t[i]]:null));i++);return null==n&&e&&(n=e._doGet(this.resolveParentPath(t),e.parentModel)),n},t}();Wr(kh),xh=kh,bh=["__\0is_clz",Xr++].join("_"),xh.prototype[bh]=!0,xh.isInstance=function(t){return!(!t||!t[bh])},L(kh,Ch),L(kh,Lh),L(kh,Jr),L(kh,Mh);var Ph=Math.round(10*Math.random());function Oh(t){return[t||"",Ph++].join("_")}function Rh(t,e){return S(S({},t,!0),e,!0)}var Nh="ZH",Eh="EN",zh=Eh,Bh={},Vh={},Fh=a.domSupported&&(document.documentElement.lang||navigator.language||navigator.browserLanguage).toUpperCase().indexOf(Nh)>-1?Nh:zh;function Gh(t,e){t=t.toUpperCase(),Vh[t]=new kh(e),Bh[t]=e}Gh(Eh,{time:{month:["January","February","March","April","May","June","July","August","September","October","November","December"],monthAbbr:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayOfWeek:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayOfWeekAbbr:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},legend:{selector:{all:"All",inverse:"Inv"}},toolbox:{brush:{title:{rect:"Box Select",polygon:"Lasso Select",lineX:"Horizontally Select",lineY:"Vertically Select",keep:"Keep Selections",clear:"Clear Selections"}},dataView:{title:"Data View",lang:["Data View","Close","Refresh"]},dataZoom:{title:{zoom:"Zoom",back:"Zoom Reset"}},magicType:{title:{line:"Switch to Line Chart",bar:"Switch to Bar Chart",stack:"Stack",tiled:"Tile"}},restore:{title:"Restore"},saveAsImage:{title:"Save as Image",lang:["Right Click to Save Image"]}},series:{typeNames:{pie:"Pie chart",bar:"Bar chart",line:"Line chart",scatter:"Scatter plot",effectScatter:"Ripple scatter plot",radar:"Radar chart",tree:"Tree",treemap:"Treemap",boxplot:"Boxplot",candlestick:"Candlestick",k:"K line chart",heatmap:"Heat map",map:"Map",parallel:"Parallel coordinate map",lines:"Line graph",graph:"Relationship graph",sankey:"Sankey diagram",funnel:"Funnel chart",gauge:"Guage",pictorialBar:"Pictorial bar",themeRiver:"Theme River Map",sunburst:"Sunburst"}},aria:{general:{withTitle:'This is a chart about "{title}"',withoutTitle:"This is a chart"},series:{single:{prefix:"",withName:" with type {seriesType} named {seriesName}.",withoutName:" with type {seriesType}."},multiple:{prefix:". It consists of {seriesCount} series count.",withName:" The {seriesId} series is a {seriesType} representing {seriesName}.",withoutName:" The {seriesId} series is a {seriesType}.",separator:{middle:"",end:""}}},data:{allData:"The data is as follows: ",partialData:"The first {displayCnt} items are: ",withName:"the data for {name} is {value}",withoutName:"{value}",separator:{middle:", ",end:". "}}}}),Gh(Nh,{time:{month:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthAbbr:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],dayOfWeek:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayOfWeekAbbr:["日","一","二","三","四","五","六"]},legend:{selector:{all:"全选",inverse:"反选"}},toolbox:{brush:{title:{rect:"矩形选择",polygon:"圈选",lineX:"横向选择",lineY:"纵向选择",keep:"保持选择",clear:"清除选择"}},dataView:{title:"数据视图",lang:["数据视图","关闭","刷新"]},dataZoom:{title:{zoom:"区域缩放",back:"区域缩放还原"}},magicType:{title:{line:"切换为折线图",bar:"切换为柱状图",stack:"切换为堆叠",tiled:"切换为平铺"}},restore:{title:"还原"},saveAsImage:{title:"保存为图片",lang:["右键另存为图片"]}},series:{typeNames:{pie:"饼图",bar:"柱状图",line:"折线图",scatter:"散点图",effectScatter:"涟漪散点图",radar:"雷达图",tree:"树图",treemap:"矩形树图",boxplot:"箱型图",candlestick:"K线图",k:"K线图",heatmap:"热力图",map:"地图",parallel:"平行坐标图",lines:"线图",graph:"关系图",sankey:"桑基图",funnel:"漏斗图",gauge:"仪表盘图",pictorialBar:"象形柱图",themeRiver:"主题河流图",sunburst:"旭日图"}},aria:{general:{withTitle:"这是一个关于“{title}”的图表。",withoutTitle:"这是一个图表,"},series:{single:{prefix:"",withName:"图表类型是{seriesType},表示{seriesName}。",withoutName:"图表类型是{seriesType}。"},multiple:{prefix:"它由{seriesCount}个图表系列组成。",withName:"第{seriesId}个系列是一个表示{seriesName}的{seriesType},",withoutName:"第{seriesId}个系列是一个{seriesType},",separator:{middle:";",end:"。"}}},data:{allData:"其数据是——",partialData:"其中,前{displayCnt}项是——",withName:"{name}的数据是{value}",withoutName:"{value}",separator:{middle:",",end:""}}}});var Hh=1e3,Wh=6e4,Uh=36e5,Yh=864e5,Xh=31536e6,Zh={year:"{yyyy}",month:"{MMM}",day:"{d}",hour:"{HH}:{mm}",minute:"{HH}:{mm}",second:"{HH}:{mm}:{ss}",millisecond:"{hh}:{mm}:{ss} {SSS}",none:"{yyyy}-{MM}-{dd} {hh}:{mm}:{ss} {SSS}"},jh="{yyyy}-{MM}-{dd}",qh={year:"{yyyy}",month:"{yyyy}-{MM}",day:jh,hour:"{yyyy}-{MM}-{dd} "+Zh.hour,minute:"{yyyy}-{MM}-{dd} "+Zh.minute,second:"{yyyy}-{MM}-{dd} "+Zh.second,millisecond:Zh.none},Kh=["year","month","day","hour","minute","second","millisecond"],$h=["year","half-year","quarter","month","week","half-week","day","half-day","quarter-day","hour","minute","second","millisecond"];function Jh(t,e){return"0000".substr(0,e-(t+="").length)+t}function Qh(t){switch(t){case"half-year":case"quarter":return"month";case"week":case"half-week":return"day";case"half-day":case"quarter-day":return"hour";default:return t}}function tc(t){return t===Qh(t)}function ec(t,e,n,i){var r=rr(t),o=r[rc(n)](),a=r[oc(n)]()+1,s=Math.floor((a-1)/4)+1,l=r[ac(n)](),u=r["get"+(n?"UTC":"")+"Day"](),h=r[sc(n)](),c=(h-1)%12+1,p=r[lc(n)](),d=r[uc(n)](),f=r[hc(n)](),g=(i instanceof kh?i:function(t){return Vh[t]}(i||Fh)||Vh.EN).getModel("time"),y=g.get("month"),v=g.get("monthAbbr"),m=g.get("dayOfWeek"),_=g.get("dayOfWeekAbbr");return(e||"").replace(/{yyyy}/g,o+"").replace(/{yy}/g,o%100+"").replace(/{Q}/g,s+"").replace(/{MMMM}/g,y[a-1]).replace(/{MMM}/g,v[a-1]).replace(/{MM}/g,Jh(a,2)).replace(/{M}/g,a+"").replace(/{dd}/g,Jh(l,2)).replace(/{d}/g,l+"").replace(/{eeee}/g,m[u]).replace(/{ee}/g,_[u]).replace(/{e}/g,u+"").replace(/{HH}/g,Jh(h,2)).replace(/{H}/g,h+"").replace(/{hh}/g,Jh(c+"",2)).replace(/{h}/g,c+"").replace(/{mm}/g,Jh(p,2)).replace(/{m}/g,p+"").replace(/{ss}/g,Jh(d,2)).replace(/{s}/g,d+"").replace(/{SSS}/g,Jh(f,3)).replace(/{S}/g,f+"")}function nc(t,e){var n=rr(t),i=n[oc(e)]()+1,r=n[ac(e)](),o=n[sc(e)](),a=n[lc(e)](),s=n[uc(e)](),l=0===n[hc(e)](),u=l&&0===s,h=u&&0===a,c=h&&0===o,p=c&&1===r;return p&&1===i?"year":p?"month":c?"day":h?"hour":u?"minute":l?"second":"millisecond"}function ic(t,e,n){var i="number"==typeof t?rr(t):t;switch(e=e||nc(t,n)){case"year":return i[rc(n)]();case"half-year":return i[oc(n)]()>=6?1:0;case"quarter":return Math.floor((i[oc(n)]()+1)/4);case"month":return i[oc(n)]();case"day":return i[ac(n)]();case"half-day":return i[sc(n)]()/24;case"hour":return i[sc(n)]();case"minute":return i[lc(n)]();case"second":return i[uc(n)]();case"millisecond":return i[hc(n)]()}}function rc(t){return t?"getUTCFullYear":"getFullYear"}function oc(t){return t?"getUTCMonth":"getMonth"}function ac(t){return t?"getUTCDate":"getDate"}function sc(t){return t?"getUTCHours":"getHours"}function lc(t){return t?"getUTCMinutes":"getMinutes"}function uc(t){return t?"getUTCSeconds":"getSeconds"}function hc(t){return t?"getUTCSeconds":"getSeconds"}function cc(t){return t?"setUTCFullYear":"setFullYear"}function pc(t){return t?"setUTCMonth":"setMonth"}function dc(t){return t?"setUTCDate":"setDate"}function fc(t){return t?"setUTCHours":"setHours"}function gc(t){return t?"setUTCMinutes":"setMinutes"}function yc(t){return t?"setUTCSeconds":"setSeconds"}function vc(t){return t?"setUTCSeconds":"setSeconds"}function mc(t){if(!cr(t))return H(t)?t:"-";var e=(t+"").split(".");return e[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g,"$1,")+(e.length>1?"."+e[1]:"")}function _c(t,e){return t=(t||"").toLowerCase().replace(/-(.)/g,(function(t,e){return e.toUpperCase()})),e&&t&&(t=t.charAt(0).toUpperCase()+t.slice(1)),t}var xc=it,bc=/([&<>"'])/g,wc={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function Sc(t){return null==t?"":(t+"").replace(bc,(function(t,e){return wc[e]}))}function Mc(t,e,n){function i(t){return t&&ot(t)?t:"-"}function r(t){return!(null==t||isNaN(t)||!isFinite(t))}var o="time"===e,a=t instanceof Date;if(o||a){var s=o?rr(t):t;if(!isNaN(+s))return ec(s,"{yyyy}-{MM}-{dd} {hh}:{mm}:{ss}",n);if(a)return"-"}if("ordinal"===e)return W(t)?i(t):U(t)&&r(t)?t+"":"-";var l=hr(t);return r(l)?mc(l):W(t)?i(t):"-"}var Ic=["a","b","c","d","e","f","g"],Tc=function(t,e){return"{"+t+(null==e?"":e)+"}"};function Cc(t,e,n){F(e)||(e=[e]);var i=e.length;if(!i)return"";for(var r=e[0].$vars||[],o=0;o<r.length;o++){var a=Ic[o];t=t.replace(Tc(a),Tc(a,0))}for(var s=0;s<i;s++)for(var l=0;l<r.length;l++){var u=e[s][r[l]];t=t.replace(Tc(Ic[l],s),n?Sc(u):u)}return t}function Ac(t,e){var n=H(t)?{color:t,extraCssText:e}:t||{},i=n.color,r=n.type;e=n.extraCssText;var o=n.renderMode||"html";return i?"html"===o?"subItem"===r?'<span style="display:inline-block;vertical-align:middle;margin-right:8px;margin-left:3px;border-radius:4px;width:4px;height:4px;background-color:'+Sc(i)+";"+(e||"")+'"></span>':'<span style="display:inline-block;margin-right:4px;border-radius:10px;width:10px;height:10px;background-color:'+Sc(i)+";"+(e||"")+'"></span>':{renderMode:o,content:"{"+(n.markerId||"markerX")+"|}  ",style:"subItem"===r?{width:4,height:4,borderRadius:2,backgroundColor:i}:{width:10,height:10,borderRadius:5,backgroundColor:i}}:""}function Dc(t,e){return e=e||"transparent",H(t)?t:Y(t)&&t.colorStops&&(t.colorStops[0]||{}).color||e}function Lc(t,e){if("_blank"===e||"blank"===e){var n=window.open();n.opener=null,n.location.href=t}else window.open(t,e)}var kc=P,Pc=["left","right","top","bottom","width","height"],Oc=[["width","left","right"],["height","top","bottom"]];function Rc(t,e,n,i,r){var o=0,a=0;null==i&&(i=1/0),null==r&&(r=1/0);var s=0;e.eachChild((function(l,u){var h,c,p=l.getBoundingRect(),d=e.childAt(u+1),f=d&&d.getBoundingRect();if("horizontal"===t){var g=p.width+(f?-f.x+p.x:0);(h=o+g)>i||l.newline?(o=0,h=g,a+=s+n,s=p.height):s=Math.max(s,p.height)}else{var y=p.height+(f?-f.y+p.y:0);(c=a+y)>r||l.newline?(o+=s+n,a=0,c=y,s=p.width):s=Math.max(s,p.width)}l.newline||(l.x=o,l.y=a,l.markRedraw(),"horizontal"===t?o=h+n:a=c+n)}))}var Nc=Rc;V(Rc,"vertical"),V(Rc,"horizontal");function Ec(t,e,n){n=xc(n||0);var i=e.width,r=e.height,o=Zi(t.left,i),a=Zi(t.top,r),s=Zi(t.right,i),l=Zi(t.bottom,r),u=Zi(t.width,i),h=Zi(t.height,r),c=n[2]+n[0],p=n[1]+n[3],d=t.aspect;switch(isNaN(u)&&(u=i-s-p-o),isNaN(h)&&(h=r-l-c-a),null!=d&&(isNaN(u)&&isNaN(h)&&(d>i/r?u=.8*i:h=.8*r),isNaN(u)&&(u=d*h),isNaN(h)&&(h=u/d)),isNaN(o)&&(o=i-s-u-p),isNaN(a)&&(a=r-l-h-c),t.left||t.right){case"center":o=i/2-u/2-n[3];break;case"right":o=i-u-p}switch(t.top||t.bottom){case"middle":case"center":a=r/2-h/2-n[0];break;case"bottom":a=r-h-c}o=o||0,a=a||0,isNaN(u)&&(u=i-p-o-(s||0)),isNaN(h)&&(h=r-c-a-(l||0));var f=new Rn(o+n[3],a+n[0],u,h);return f.margin=n,f}function zc(t,e,n,i,r){var o=!r||!r.hv||r.hv[0],a=!r||!r.hv||r.hv[1],s=r&&r.boundingMode||"all";if(o||a){var l;if("raw"===s)l="group"===t.type?new Rn(0,0,+e.width||0,+e.height||0):t.getBoundingRect();else if(l=t.getBoundingRect(),t.needLocalTransform()){var u=t.getLocalTransform();(l=l.clone()).applyTransform(u)}var h=Ec(T({width:l.width,height:l.height},e),n,i),c=o?h.x-l.x:0,p=a?h.y-l.y:0;"raw"===s?(t.x=c,t.y=p):(t.x+=c,t.y+=p),t.markRedraw()}}function Bc(t){var e=t.layoutMode||t.constructor.layoutMode;return Y(e)?e:e?{type:e}:null}function Vc(t,e,n){var i=n&&n.ignoreSize;!F(i)&&(i=[i,i]);var r=a(Oc[0],0),o=a(Oc[1],1);function a(n,r){var o={},a=0,u={},h=0;if(kc(n,(function(e){u[e]=t[e]})),kc(n,(function(t){s(e,t)&&(o[t]=u[t]=e[t]),l(o,t)&&a++,l(u,t)&&h++})),i[r])return l(e,n[1])?u[n[2]]=null:l(e,n[2])&&(u[n[1]]=null),u;if(2!==h&&a){if(a>=2)return o;for(var c=0;c<n.length;c++){var p=n[c];if(!s(o,p)&&s(t,p)){o[p]=t[p];break}}return o}return u}function s(t,e){return t.hasOwnProperty(e)}function l(t,e){return null!=t[e]&&"auto"!==t[e]}function u(t,e,n){kc(t,(function(t){e[t]=n[t]}))}u(Oc[0],t,r),u(Oc[1],t,o)}function Fc(t){return Gc({},t)}function Gc(t,e){return e&&t&&kc(Pc,(function(n){e.hasOwnProperty(n)&&(t[n]=e[n])})),t}var Hc=Lr(),Wc=function(t){function e(e,n,i){var r=t.call(this,e,n,i)||this;return r.uid=Oh("ec_cpt_model"),r}return n(e,t),e.prototype.init=function(t,e,n){this.mergeDefaultAndTheme(t,n)},e.prototype.mergeDefaultAndTheme=function(t,e){var n=Bc(this),i=n?Fc(t):{};S(t,e.getTheme().get(this.mainType)),S(t,this.getDefaultOption()),n&&Vc(t,i,n)},e.prototype.mergeOption=function(t,e){S(this.option,t,!0);var n=Bc(this);n&&Vc(this.option,t,n)},e.prototype.optionUpdated=function(t,e){},e.prototype.getDefaultOption=function(){var t=this.constructor;if(!function(t){return!(!t||!t[Gr])}(t))return t.defaultOption;var e=Hc(this);if(!e.defaultOption){for(var n=[],i=t;i;){var r=i.prototype.defaultOption;r&&n.push(r),i=i.superClass}for(var o={},a=n.length-1;a>=0;a--)o=S(o,n[a],!0);e.defaultOption=o}return e.defaultOption},e.prototype.getReferringComponents=function(t,e){var n=t+"Index",i=t+"Id";return Er(this.ecModel,t,{index:this.get(n,!0),id:this.get(i,!0)},e)},e.prototype.getBoxLayoutParams=function(){var t=this;return{left:t.get("left"),top:t.get("top"),right:t.get("right"),bottom:t.get("bottom"),width:t.get("width"),height:t.get("height")}},e.protoInitialize=function(){var t=e.prototype;t.type="component",t.id="",t.name="",t.mainType="",t.subType="",t.componentIndex=0}(),e}(kh);Yr(Wc,kh),qr(Wc),function(t){var e={};t.registerSubTypeDefaulter=function(t,n){var i=Hr(t);e[i.main]=n},t.determineSubType=function(n,i){var r=i.type;if(!r){var o=Hr(n).main;t.hasSubTypes(n)&&e[o]&&(r=e[o](i))}return r}}(Wc),function(t,e){function n(t,e){return t[e]||(t[e]={predecessor:[],successor:[]}),t[e]}t.topologicalTravel=function(t,i,r,o){if(t.length){var a=function(t){var i={},r=[];return P(t,(function(o){var a=n(i,o),s=function(t,e){var n=[];return P(t,(function(t){A(e,t)>=0&&n.push(t)})),n}(a.originalDeps=e(o),t);a.entryCount=s.length,0===a.entryCount&&r.push(o),P(s,(function(t){A(a.predecessor,t)<0&&a.predecessor.push(t);var e=n(i,t);A(e.successor,t)<0&&e.successor.push(o)}))})),{graph:i,noEntryList:r}}(i),s=a.graph,l=a.noEntryList,u={};for(P(t,(function(t){u[t]=!0}));l.length;){var h=l.pop(),c=s[h],p=!!u[h];p&&(r.call(o,h,c.originalDeps.slice()),delete u[h]),P(c.successor,p?f:d)}P(u,(function(){var t="";throw new Error(t)}))}function d(t){s[t].entryCount--,0===s[t].entryCount&&l.push(t)}function f(t){u[t]=!0,d(t)}}}(Wc,(function(t){var e=[];P(Wc.getClassesByMainType(t),(function(t){e=e.concat(t.dependencies||t.prototype.dependencies||[])})),e=O(e,(function(t){return Hr(t).main})),"dataset"!==t&&A(e,"dataset")<=0&&e.unshift("dataset");return e}));var Uc="";"undefined"!=typeof navigator&&(Uc=navigator.platform||"");var Yc="rgba(0, 0, 0, 0.2)",Xc={darkMode:"auto",color:["#5470c6","#91cc75","#fac858","#ee6666","#73c0de","#3ba272","#fc8452","#9a60b4","#ea7ccc"],gradientColor:["#f6efa6","#d88273","#bf444c"],aria:{decal:{decals:[{color:Yc,dashArrayX:[1,0],dashArrayY:[2,5],symbolSize:1,rotation:Math.PI/6},{color:Yc,symbol:"circle",dashArrayX:[[8,8],[0,8,8,0]],dashArrayY:[6,0],symbolSize:.8},{color:Yc,dashArrayX:[1,0],dashArrayY:[4,3],rotation:-Math.PI/4},{color:Yc,dashArrayX:[[6,6],[0,6,6,0]],dashArrayY:[6,0]},{color:Yc,dashArrayX:[[1,0],[1,6]],dashArrayY:[1,0,6,0],rotation:Math.PI/4},{color:Yc,symbol:"triangle",dashArrayX:[[9,9],[0,9,9,0]],dashArrayY:[7,2],symbolSize:.75}]}},textStyle:{fontFamily:Uc.match(/^Win/)?"Microsoft YaHei":"sans-serif",fontSize:12,fontStyle:"normal",fontWeight:"normal"},blendMode:null,stateAnimation:{duration:300,easing:"cubicOut"},animation:"auto",animationDuration:1e3,animationDurationUpdate:500,animationEasing:"cubicInOut",animationEasingUpdate:"cubicInOut",animationThreshold:2e3,progressiveThreshold:3e3,progressive:400,hoverLayerThreshold:3e3,useUTC:!1},Zc=ht(["tooltip","label","itemName","itemId","seriesName"]),jc="original",qc="arrayRows",Kc="objectRows",$c="keyedColumns",Jc="typedArray",Qc="unknown",tp="column",ep="row",np=1,ip=2,rp=3,op=Lr();function ap(t,e,n){var i={},r=lp(e);if(!r||!t)return i;var o,a,s=[],l=[],u=e.ecModel,h=op(u).datasetMap,c=r.uid+"_"+n.seriesLayoutBy;P(t=t.slice(),(function(e,n){var r=Y(e)?e:t[n]={name:e};"ordinal"===r.type&&null==o&&(o=n,a=f(r)),i[r.name]=[]}));var p=h.get(c)||h.set(c,{categoryWayDim:a,valueWayDim:0});function d(t,e,n){for(var i=0;i<n;i++)t.push(e+i)}function f(t){var e=t.dimsDef;return e?e.length:1}return P(t,(function(t,e){var n=t.name,r=f(t);if(null==o){var a=p.valueWayDim;d(i[n],a,r),d(l,a,r),p.valueWayDim+=r}else if(o===e)d(i[n],0,r),d(s,0,r);else{a=p.categoryWayDim;d(i[n],a,r),d(l,a,r),p.categoryWayDim+=r}})),s.length&&(i.itemName=s),l.length&&(i.seriesName=l),i}function sp(t,e,n){var i={};if(!lp(t))return i;var r,o=e.sourceFormat,a=e.dimensionsDefine;o!==Kc&&o!==$c||P(a,(function(t,e){"name"===(Y(t)?t.name:t)&&(r=e)}));var s=function(){for(var t={},i={},s=[],l=0,u=Math.min(5,n);l<u;l++){var h=hp(e.data,o,e.seriesLayoutBy,a,e.startIndex,l);s.push(h);var c=h===rp;if(c&&null==t.v&&l!==r&&(t.v=l),(null==t.n||t.n===t.v||!c&&s[t.n]===rp)&&(t.n=l),p(t)&&s[t.n]!==rp)return t;c||(h===ip&&null==i.v&&l!==r&&(i.v=l),null!=i.n&&i.n!==i.v||(i.n=l))}function p(t){return null!=t.v&&null!=t.n}return p(t)?t:p(i)?i:null}();if(s){i.value=[s.v];var l=null!=r?r:s.n;i.itemName=[l],i.seriesName=[l]}return i}function lp(t){if(!t.get("data",!0))return Er(t.ecModel,"dataset",{index:t.get("datasetIndex",!0),id:t.get("datasetId",!0)},Rr).models[0]}function up(t,e){return hp(t.data,t.sourceFormat,t.seriesLayoutBy,t.dimensionsDefine,t.startIndex,e)}function hp(t,e,n,i,r,o){var a,s,l;if(Z(t))return rp;if(i){var u=i[o];Y(u)?(s=u.name,l=u.type):H(u)&&(s=u)}if(null!=l)return"ordinal"===l?np:rp;if(e===qc){var h=t;if(n===ep){for(var c=h[o],p=0;p<(c||[]).length&&p<5;p++)if(null!=(a=m(c[r+p])))return a}else for(p=0;p<h.length&&p<5;p++){var d=h[r+p];if(d&&null!=(a=m(d[o])))return a}}else if(e===Kc){var f=t;if(!s)return rp;for(p=0;p<f.length&&p<5;p++){if((y=f[p])&&null!=(a=m(y[s])))return a}}else if(e===$c){if(!s)return rp;if(!(c=t[s])||Z(c))return rp;for(p=0;p<c.length&&p<5;p++)if(null!=(a=m(c[p])))return a}else if(e===jc){var g=t;for(p=0;p<g.length&&p<5;p++){var y,v=wr(y=g[p]);if(!F(v))return rp;if(null!=(a=m(v[o])))return a}}function m(t){var e=H(t);return null!=t&&isFinite(t)&&""!==t?e?ip:rp:e&&"-"!==t?np:void 0}return rp}var cp=ht();var pp,dp,fp,gp=Lr(),yp=Lr(),vp=function(){function t(){}return t.prototype.getColorFromPalette=function(t,e,n){var i=_r(this.get("color",!0)),r=this.get("colorLayer",!0);return _p(this,gp,i,r,t,e,n)},t.prototype.clearColorPalette=function(){!function(t,e){e(t).paletteIdx=0,e(t).paletteNameMap={}}(this,gp)},t}();function mp(t,e,n,i){var r=_r(t.get(["aria","decal","decals"]));return _p(t,yp,r,null,e,n,i)}function _p(t,e,n,i,r,o,a){var s=e(o=o||t),l=s.paletteIdx||0,u=s.paletteNameMap=s.paletteNameMap||{};if(u.hasOwnProperty(r))return u[r];var h=null!=a&&i?function(t,e){for(var n=t.length,i=0;i<n;i++)if(t[i].length>e)return t[i];return t[n-1]}(i,a):n;if((h=h||n)&&h.length){var c=h[l];return r&&(u[r]=c),s.paletteIdx=(l+1)%h.length,c}}var xp=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.init=function(t,e,n,i,r,o){i=i||{},this.option=null,this._theme=new kh(i),this._locale=new kh(r),this._optionManager=o},e.prototype.setOption=function(t,e,n){var i=Sp(e);this._optionManager.setOption(t,n,i),this._resetOption(null,i)},e.prototype.resetOption=function(t,e){return this._resetOption(t,Sp(e))},e.prototype._resetOption=function(t,e){var n=!1,i=this._optionManager;if(!t||"recreate"===t){var r=i.mountOption("recreate"===t);this.option&&"recreate"!==t?(this.restoreData(),this._mergeOption(r,e)):fp(this,r),n=!0}if("timeline"!==t&&"media"!==t||this.restoreData(),!t||"recreate"===t||"timeline"===t){var o=i.getTimelineOption(this);o&&(n=!0,this._mergeOption(o,e))}if(!t||"recreate"===t||"media"===t){var a=i.getMediaOption(this);a.length&&P(a,(function(t){n=!0,this._mergeOption(t,e)}),this)}return n},e.prototype.mergeOption=function(t){this._mergeOption(t,null)},e.prototype._mergeOption=function(t,e){var n=this.option,i=this._componentsMap,r=this._componentsCount,o=[],a=ht(),s=e&&e.replaceMergeMainTypeMap;op(this).datasetMap=ht(),P(t,(function(t,e){null!=t&&(Wc.hasClass(e)?e&&(o.push(e),a.set(e,!0)):n[e]=null==n[e]?w(t):S(n[e],t,!0))})),s&&s.each((function(t,e){Wc.hasClass(e)&&!a.get(e)&&(o.push(e),a.set(e,!0))})),Wc.topologicalTravel(o,Wc.getAllClassMainTypes(),(function(e){var o=function(t,e,n){var i=cp.get(e);if(!i)return n;var r=i(t);return r?n.concat(r):n}(this,e,_r(t[e])),a=i.get(e),l=a?s&&s.get(e)?"replaceMerge":"normalMerge":"replaceAll",u=Sr(a,o,l);(function(t,e,n){P(t,(function(t){var i=t.newOption;Y(i)&&(t.keyInfo.mainType=e,t.keyInfo.subType=function(t,e,n,i){return e.type?e.type:n?n.subType:i.determineSubType(t,e)}(e,i,t.existing,n))}))})(u,e,Wc),n[e]=null,i.set(e,null),r.set(e,0);var h=[],c=[],p=0;P(u,(function(t,n){var i=t.existing,r=t.newOption;if(r){var o="series"===e,a=Wc.getClass(e,t.keyInfo.subType,!o);if(!a)return;if(i&&i.constructor===a)i.name=t.keyInfo.name,i.mergeOption(r,this),i.optionUpdated(r,!1);else{var s=I({componentIndex:n},t.keyInfo);I(i=new a(r,this,this,s),s),t.brandNew&&(i.__requireNewView=!0),i.init(r,this,this),i.optionUpdated(null,!0)}}else i&&(i.mergeOption({},this),i.optionUpdated({},!1));i?(h.push(i.option),c.push(i),p++):(h.push(void 0),c.push(void 0))}),this),n[e]=h,i.set(e,c),r.set(e,p),"series"===e&&pp(this)}),this),this._seriesIndices||pp(this)},e.prototype.getOption=function(){var t=w(this.option);return P(t,(function(e,n){if(Wc.hasClass(n)){for(var i=_r(e),r=i.length,o=!1,a=r-1;a>=0;a--)i[a]&&!Ar(i[a])?o=!0:(i[a]=null,!o&&r--);i.length=r,t[n]=i}})),delete t["\0_ec_inner"],t},e.prototype.getTheme=function(){return this._theme},e.prototype.getLocaleModel=function(){return this._locale},e.prototype.getLocale=function(t){return this.getLocaleModel().get(t)},e.prototype.setUpdatePayload=function(t){this._payload=t},e.prototype.getUpdatePayload=function(){return this._payload},e.prototype.getComponent=function(t,e){var n=this._componentsMap.get(t);if(n){var i=n[e||0];if(i)return i;if(null==e)for(var r=0;r<n.length;r++)if(n[r])return n[r]}},e.prototype.queryComponents=function(t){var e=t.mainType;if(!e)return[];var n,i=t.index,r=t.id,o=t.name,a=this._componentsMap.get(e);return a&&a.length?(null!=i?(n=[],P(_r(i),(function(t){a[t]&&n.push(a[t])}))):n=null!=r?bp("id",r,a):null!=o?bp("name",o,a):N(a,(function(t){return!!t})),wp(n,t)):[]},e.prototype.findComponents=function(t){var e,n,i,r,o,a=t.query,s=t.mainType,l=(n=s+"Index",i=s+"Id",r=s+"Name",!(e=a)||null==e[n]&&null==e[i]&&null==e[r]?null:{mainType:s,index:e[n],id:e[i],name:e[r]}),u=l?this.queryComponents(l):N(this._componentsMap.get(s),(function(t){return!!t}));return o=wp(u,t),t.filter?N(o,t.filter):o},e.prototype.eachComponent=function(t,e,n){var i=this._componentsMap;if(G(t)){var r=e,o=t;i.each((function(t,e){for(var n=0;t&&n<t.length;n++){var i=t[n];i&&o.call(r,e,i,i.componentIndex)}}))}else for(var a=H(t)?i.get(t):Y(t)?this.findComponents(t):null,s=0;a&&s<a.length;s++){var l=a[s];l&&e.call(n,l,l.componentIndex)}},e.prototype.getSeriesByName=function(t){var e=Tr(t,null);return N(this._componentsMap.get("series"),(function(t){return!!t&&null!=e&&t.name===e}))},e.prototype.getSeriesByIndex=function(t){return this._componentsMap.get("series")[t]},e.prototype.getSeriesByType=function(t){return N(this._componentsMap.get("series"),(function(e){return!!e&&e.subType===t}))},e.prototype.getSeries=function(){return N(this._componentsMap.get("series").slice(),(function(t){return!!t}))},e.prototype.getSeriesCount=function(){return this._componentsCount.get("series")},e.prototype.eachSeries=function(t,e){dp(this),P(this._seriesIndices,(function(n){var i=this._componentsMap.get("series")[n];t.call(e,i,n)}),this)},e.prototype.eachRawSeries=function(t,e){P(this._componentsMap.get("series"),(function(n){n&&t.call(e,n,n.componentIndex)}))},e.prototype.eachSeriesByType=function(t,e,n){dp(this),P(this._seriesIndices,(function(i){var r=this._componentsMap.get("series")[i];r.subType===t&&e.call(n,r,i)}),this)},e.prototype.eachRawSeriesByType=function(t,e,n){return P(this.getSeriesByType(t),e,n)},e.prototype.isSeriesFiltered=function(t){return dp(this),null==this._seriesIndicesMap.get(t.componentIndex)},e.prototype.getCurrentSeriesIndices=function(){return(this._seriesIndices||[]).slice()},e.prototype.filterSeries=function(t,e){dp(this);var n=[];P(this._seriesIndices,(function(i){var r=this._componentsMap.get("series")[i];t.call(e,r,i)&&n.push(i)}),this),this._seriesIndices=n,this._seriesIndicesMap=ht(n)},e.prototype.restoreData=function(t){pp(this);var e=this._componentsMap,n=[];e.each((function(t,e){Wc.hasClass(e)&&n.push(e)})),Wc.topologicalTravel(n,Wc.getAllClassMainTypes(),(function(n){P(e.get(n),(function(e){!e||"series"===n&&function(t,e){if(e){var n=e.seriesIndex,i=e.seriesId,r=e.seriesName;return null!=n&&t.componentIndex!==n||null!=i&&t.id!==i||null!=r&&t.name!==r}}(e,t)||e.restoreData()}))}))},e.internalField=(pp=function(t){var e=t._seriesIndices=[];P(t._componentsMap.get("series"),(function(t){t&&e.push(t.componentIndex)})),t._seriesIndicesMap=ht(e)},dp=function(t){},void(fp=function(t,e){t.option={},t.option["\0_ec_inner"]=1,t._componentsMap=ht({series:[]}),t._componentsCount=ht();var n=e.aria;Y(n)&&null==n.enabled&&(n.enabled=!0),function(t,e){var n=t.color&&!t.colorLayer;P(e,(function(e,i){"colorLayer"===i&&n||Wc.hasClass(i)||("object"==typeof e?t[i]=t[i]?S(t[i],e,!1):w(e):null==t[i]&&(t[i]=e))}))}(e,t._theme.option),S(e,Xc,!1),t._mergeOption(e,null)})),e}(kh);function bp(t,e,n){if(F(e)){var i=ht();return P(e,(function(t){null!=t&&(null!=Tr(t,null)&&i.set(t,!0))})),N(n,(function(e){return e&&i.get(e[t])}))}var r=Tr(e,null);return N(n,(function(e){return e&&null!=r&&e[t]===r}))}function wp(t,e){return e.hasOwnProperty("subType")?N(t,(function(t){return t&&t.subType===e.subType})):t}function Sp(t){var e=ht();return t&&P(_r(t.replaceMerge),(function(t){e.set(t,!0)})),{replaceMergeMainTypeMap:e}}L(xp,vp);var Mp=["getDom","getZr","getWidth","getHeight","getDevicePixelRatio","dispatchAction","isDisposed","on","off","getDataURL","getConnectedDataURL","getOption","getId","updateLabelLayout"],Ip=function(t){P(Mp,(function(e){this[e]=B(t[e],t)}),this)},Tp={},Cp=function(){function t(){this._coordinateSystems=[]}return t.prototype.create=function(t,e){var n=[];P(Tp,(function(i,r){var o=i.create(t,e);n=n.concat(o||[])})),this._coordinateSystems=n},t.prototype.update=function(t,e){P(this._coordinateSystems,(function(n){n.update&&n.update(t,e)}))},t.prototype.getCoordinateSystems=function(){return this._coordinateSystems.slice()},t.register=function(t,e){Tp[t]=e},t.get=function(t){return Tp[t]},t}(),Ap=/^(min|max)?(.+)$/,Dp=function(){function t(t){this._timelineOptions=[],this._mediaList=[],this._currentMediaIndices=[],this._api=t}return t.prototype.setOption=function(t,e,n){t&&(P(_r(t.series),(function(t){t&&t.data&&Z(t.data)&&st(t.data)})),P(_r(t.dataset),(function(t){t&&t.source&&Z(t.source)&&st(t.source)}))),t=w(t);var i=this._optionBackup,r=function(t,e,n){var i,r,o=[],a=t.baseOption,s=t.timeline,l=t.options,u=t.media,h=!!t.media,c=!!(l||s||a&&a.timeline);a?(r=a).timeline||(r.timeline=s):((c||h)&&(t.options=t.media=null),r=t);h&&F(u)&&P(u,(function(t){t&&t.option&&(t.query?o.push(t):i||(i=t))}));function p(t){P(e,(function(e){e(t,n)}))}return p(r),P(l,(function(t){return p(t)})),P(o,(function(t){return p(t.option)})),{baseOption:r,timelineOptions:l||[],mediaDefault:i,mediaList:o}}(t,e,!i);this._newBaseOption=r.baseOption,i?(r.timelineOptions.length&&(i.timelineOptions=r.timelineOptions),r.mediaList.length&&(i.mediaList=r.mediaList),r.mediaDefault&&(i.mediaDefault=r.mediaDefault)):this._optionBackup=r},t.prototype.mountOption=function(t){var e=this._optionBackup;return this._timelineOptions=e.timelineOptions,this._mediaList=e.mediaList,this._mediaDefault=e.mediaDefault,this._currentMediaIndices=[],w(t?e.baseOption:this._newBaseOption)},t.prototype.getTimelineOption=function(t){var e,n=this._timelineOptions;if(n.length){var i=t.getComponent("timeline");i&&(e=w(n[i.getCurrentIndex()]))}return e},t.prototype.getMediaOption=function(t){var e,n,i=this._api.getWidth(),r=this._api.getHeight(),o=this._mediaList,a=this._mediaDefault,s=[],l=[];if(!o.length&&!a)return l;for(var u=0,h=o.length;u<h;u++)Lp(o[u].query,i,r)&&s.push(u);return!s.length&&a&&(s=[-1]),s.length&&(e=s,n=this._currentMediaIndices,e.join(",")!==n.join(","))&&(l=O(s,(function(t){return w(-1===t?a.option:o[t].option)}))),this._currentMediaIndices=s,l},t}();function Lp(t,e,n){var i={width:e,height:n,aspectratio:e/n},r=!0;return P(t,(function(t,e){var n=e.match(Ap);if(n&&n[1]&&n[2]){var o=n[1],a=n[2].toLowerCase();(function(t,e,n){return"min"===n?t>=e:"max"===n?t<=e:t===e})(i[a],t,o)||(r=!1)}})),r}var kp=P,Pp=Y,Op=["areaStyle","lineStyle","nodeStyle","linkStyle","chordStyle","label","labelLine"];function Rp(t){var e=t&&t.itemStyle;if(e)for(var n=0,i=Op.length;n<i;n++){var r=Op[n],o=e.normal,a=e.emphasis;o&&o[r]&&(t[r]=t[r]||{},t[r].normal?S(t[r].normal,o[r]):t[r].normal=o[r],o[r]=null),a&&a[r]&&(t[r]=t[r]||{},t[r].emphasis?S(t[r].emphasis,a[r]):t[r].emphasis=a[r],a[r]=null)}}function Np(t,e,n){if(t&&t[e]&&(t[e].normal||t[e].emphasis)){var i=t[e].normal,r=t[e].emphasis;i&&(n?(t[e].normal=t[e].emphasis=null,T(t[e],i)):t[e]=i),r&&(t.emphasis=t.emphasis||{},t.emphasis[e]=r,r.focus&&(t.emphasis.focus=r.focus),r.blurScope&&(t.emphasis.blurScope=r.blurScope))}}function Ep(t){Np(t,"itemStyle"),Np(t,"lineStyle"),Np(t,"areaStyle"),Np(t,"label"),Np(t,"labelLine"),Np(t,"upperLabel"),Np(t,"edgeLabel")}function zp(t,e){var n=Pp(t)&&t[e],i=Pp(n)&&n.textStyle;if(i){0;for(var r=0,o=br.length;r<o;r++){var a=br[r];i.hasOwnProperty(a)&&(n[a]=i[a])}}}function Bp(t){t&&(Ep(t),zp(t,"label"),t.emphasis&&zp(t.emphasis,"label"))}function Vp(t){return F(t)?t:t?[t]:[]}function Fp(t){return(F(t)?t[0]:t)||{}}function Gp(t,e){kp(Vp(t.series),(function(t){Pp(t)&&function(t){if(Pp(t)){Rp(t),Ep(t),zp(t,"label"),zp(t,"upperLabel"),zp(t,"edgeLabel"),t.emphasis&&(zp(t.emphasis,"label"),zp(t.emphasis,"upperLabel"),zp(t.emphasis,"edgeLabel"));var e=t.markPoint;e&&(Rp(e),Bp(e));var n=t.markLine;n&&(Rp(n),Bp(n));var i=t.markArea;i&&Bp(i);var r=t.data;if("graph"===t.type){r=r||t.nodes;var o=t.links||t.edges;if(o&&!Z(o))for(var a=0;a<o.length;a++)Bp(o[a]);P(t.categories,(function(t){Ep(t)}))}if(r&&!Z(r))for(a=0;a<r.length;a++)Bp(r[a]);if((e=t.markPoint)&&e.data){var s=e.data;for(a=0;a<s.length;a++)Bp(s[a])}if((n=t.markLine)&&n.data){var l=n.data;for(a=0;a<l.length;a++)F(l[a])?(Bp(l[a][0]),Bp(l[a][1])):Bp(l[a])}"gauge"===t.type?(zp(t,"axisLabel"),zp(t,"title"),zp(t,"detail")):"treemap"===t.type?(Np(t.breadcrumb,"itemStyle"),P(t.levels,(function(t){Ep(t)}))):"tree"===t.type&&Ep(t.leaves)}}(t)}));var n=["xAxis","yAxis","radiusAxis","angleAxis","singleAxis","parallelAxis","radar"];e&&n.push("valueAxis","categoryAxis","logAxis","timeAxis"),kp(n,(function(e){kp(Vp(t[e]),(function(t){t&&(zp(t,"axisLabel"),zp(t.axisPointer,"label"))}))})),kp(Vp(t.parallel),(function(t){var e=t&&t.parallelAxisDefault;zp(e,"axisLabel"),zp(e&&e.axisPointer,"label")})),kp(Vp(t.calendar),(function(t){Np(t,"itemStyle"),zp(t,"dayLabel"),zp(t,"monthLabel"),zp(t,"yearLabel")})),kp(Vp(t.radar),(function(t){zp(t,"name"),t.name&&null==t.axisName&&(t.axisName=t.name,delete t.name),null!=t.nameGap&&null==t.axisNameGap&&(t.axisNameGap=t.nameGap,delete t.nameGap)})),kp(Vp(t.geo),(function(t){Pp(t)&&(Bp(t),kp(Vp(t.regions),(function(t){Bp(t)})))})),kp(Vp(t.timeline),(function(t){Bp(t),Np(t,"label"),Np(t,"itemStyle"),Np(t,"controlStyle",!0);var e=t.data;F(e)&&P(e,(function(t){Y(t)&&(Np(t,"label"),Np(t,"itemStyle"))}))})),kp(Vp(t.toolbox),(function(t){Np(t,"iconStyle"),kp(t.feature,(function(t){Np(t,"iconStyle")}))})),zp(Fp(t.axisPointer),"label"),zp(Fp(t.tooltip).axisPointer,"label")}function Hp(t){t&&P(Wp,(function(e){e[0]in t&&!(e[1]in t)&&(t[e[1]]=t[e[0]])}))}var Wp=[["x","left"],["y","top"],["x2","right"],["y2","bottom"]],Up=["grid","geo","parallel","legend","toolbox","title","visualMap","dataZoom","timeline"],Yp=[["borderRadius","barBorderRadius"],["borderColor","barBorderColor"],["borderWidth","barBorderWidth"]];function Xp(t){var e=t&&t.itemStyle;if(e)for(var n=0;n<Yp.length;n++){var i=Yp[n][1],r=Yp[n][0];null!=e[i]&&(e[r]=e[i])}}function Zp(t){t&&"edge"===t.alignTo&&null!=t.margin&&null==t.edgeDistance&&(t.edgeDistance=t.margin)}function jp(t){t&&t.downplay&&!t.blur&&(t.blur=t.downplay)}function qp(t,e){if(t)for(var n=0;n<t.length;n++)e(t[n]),t[n]&&qp(t[n].children,e)}function Kp(t,e){Gp(t,e),t.series=_r(t.series),P(t.series,(function(t){if(Y(t)){var e=t.type;if("line"===e)null!=t.clipOverflow&&(t.clip=t.clipOverflow);else if("pie"===e||"gauge"===e){if(null!=t.clockWise&&(t.clockwise=t.clockWise),Zp(t.label),(r=t.data)&&!Z(r))for(var n=0;n<r.length;n++)Zp(r[n]);null!=t.hoverOffset&&(t.emphasis=t.emphasis||{},(t.emphasis.scaleSize=null)&&(t.emphasis.scaleSize=t.hoverOffset))}else if("gauge"===e){var i=function(t,e){for(var n=e.split(","),i=t,r=0;r<n.length&&null!=(i=i&&i[n[r]]);r++);return i}(t,"pointer.color");null!=i&&function(t,e,n,i){for(var r,o=e.split(","),a=t,s=0;s<o.length-1;s++)null==a[r=o[s]]&&(a[r]={}),a=a[r];(i||null==a[o[s]])&&(a[o[s]]=n)}(t,"itemStyle.color",i)}else if("bar"===e){var r;if(Xp(t),Xp(t.backgroundStyle),Xp(t.emphasis),(r=t.data)&&!Z(r))for(n=0;n<r.length;n++)"object"==typeof r[n]&&(Xp(r[n]),Xp(r[n]&&r[n].emphasis))}else if("sunburst"===e){var o=t.highlightPolicy;o&&(t.emphasis=t.emphasis||{},t.emphasis.focus||(t.emphasis.focus=o)),jp(t),qp(t.data,jp)}else"graph"===e||"sankey"===e?function(t){t&&null!=t.focusNodeAdjacency&&(t.emphasis=t.emphasis||{},null==t.emphasis.focus&&(t.emphasis.focus="adjacency"))}(t):"map"===e&&(t.mapType&&!t.map&&(t.map=t.mapType),t.mapLocation&&T(t,t.mapLocation));null!=t.hoverAnimation&&(t.emphasis=t.emphasis||{},t.emphasis&&null==t.emphasis.scale&&(t.emphasis.scale=t.hoverAnimation)),Hp(t)}})),t.dataRange&&(t.visualMap=t.dataRange),P(Up,(function(e){var n=t[e];n&&(F(n)||(n=[n]),P(n,(function(t){Hp(t)})))}))}function $p(t){P(t,(function(e,n){var i=[],r=[NaN,NaN],o=[e.stackResultDimension,e.stackedOverDimension],a=e.data,s=e.isStackedByIndex,l=a.map(o,(function(o,l,u){var h,c,p=a.get(e.stackedDimension,u);if(isNaN(p))return r;s?c=a.getRawIndex(u):h=a.get(e.stackedByDimension,u);for(var d=NaN,f=n-1;f>=0;f--){var g=t[f];if(s||(c=g.data.rawIndexOf(g.stackedByDimension,h)),c>=0){var y=g.data.getByRawIndex(g.stackResultDimension,c);if(p>=0&&y>0||p<=0&&y<0){p+=y,d=y;break}}}return i[0]=p,i[1]=d,i}));a.hostModel.setData(l),e.data=l}))}var Jp,Qp,td,ed,nd,id=function(t){this.data=t.data||(t.sourceFormat===$c?{}:[]),this.sourceFormat=t.sourceFormat||Qc,this.seriesLayoutBy=t.seriesLayoutBy||tp,this.startIndex=t.startIndex||0,this.dimensionsDefine=t.dimensionsDefine,this.dimensionsDetectedCount=t.dimensionsDetectedCount,this.encodeDefine=t.encodeDefine,this.metaRawOption=t.metaRawOption};function rd(t){return t instanceof id}function od(t,e,n,i){n=n||ld(t);var r=e.seriesLayoutBy,o=function(t,e,n,i,r){var o,a;if(!t)return{dimensionsDefine:ud(r),startIndex:a,dimensionsDetectedCount:o};if(e===qc){var s=t;"auto"===i||null==i?hd((function(t){null!=t&&"-"!==t&&(H(t)?null==a&&(a=1):a=0)}),n,s,10):a=U(i)?i:i?1:0,r||1!==a||(r=[],hd((function(t,e){r[e]=null!=t?t+"":""}),n,s,1/0)),o=r?r.length:n===ep?s.length:s[0]?s[0].length:null}else if(e===Kc)r||(r=function(t){var e,n=0;for(;n<t.length&&!(e=t[n++]););if(e){var i=[];return P(e,(function(t,e){i.push(e)})),i}}(t));else if(e===$c)r||(r=[],P(t,(function(t,e){r.push(e)})));else if(e===jc){var l=wr(t[0]);o=F(l)&&l.length||1}return{startIndex:a,dimensionsDefine:ud(r),dimensionsDetectedCount:o}}(t,n,r,e.sourceHeader,e.dimensions);return new id({data:t,sourceFormat:n,seriesLayoutBy:r,dimensionsDefine:o.dimensionsDefine,startIndex:o.startIndex,dimensionsDetectedCount:o.dimensionsDetectedCount,encodeDefine:sd(i),metaRawOption:w(e)})}function ad(t){return new id({data:t,sourceFormat:Z(t)?Jc:jc})}function sd(t){return t?ht(t):null}function ld(t){var e=Qc;if(Z(t))e=Jc;else if(F(t)){0===t.length&&(e=qc);for(var n=0,i=t.length;n<i;n++){var r=t[n];if(null!=r){if(F(r)){e=qc;break}if(Y(r)){e=Kc;break}}}}else if(Y(t))for(var o in t)if(dt(t,o)&&k(t[o])){e=$c;break}return e}function ud(t){if(t){var e=ht();return O(t,(function(t,n){var i={name:(t=Y(t)?t:{name:t}).name,displayName:t.displayName,type:t.type};if(null==i.name)return i;i.name+="",null==i.displayName&&(i.displayName=i.name);var r=e.get(i.name);return r?i.name+="-"+r.count++:e.set(i.name,{count:1}),i}))}}function hd(t,e,n,i){if(e===ep)for(var r=0;r<n.length&&r<i;r++)t(n[r]?n[r][0]:null,r);else{var o=n[0]||[];for(r=0;r<o.length&&r<i;r++)t(o[r],r)}}var cd=function(){function t(t,e){var n=rd(t)?t:ad(t);this._source=n;var i=this._data=n.data;n.sourceFormat===Jc&&(this._offset=0,this._dimSize=e,this._data=i),nd(this,i,n)}return t.prototype.getSource=function(){return this._source},t.prototype.count=function(){return 0},t.prototype.getItem=function(t,e){},t.prototype.appendData=function(t){},t.prototype.clean=function(){},t.protoInitialize=function(){var e=t.prototype;e.pure=!1,e.persistent=!0}(),t.internalField=function(){var t;nd=function(t,r,o){var a=o.sourceFormat,s=o.seriesLayoutBy,l=o.startIndex,u=o.dimensionsDefine,h=ed[bd(a,s)];if(I(t,h),a===Jc)t.getItem=e,t.count=i,t.fillStorage=n;else{var c=fd(a,s);t.getItem=B(c,null,r,l,u);var p=vd(a,s);t.count=B(p,null,r,l,u)}};var e=function(t,e){t-=this._offset,e=e||[];for(var n=this._data,i=this._dimSize,r=i*t,o=0;o<i;o++)e[o]=n[r+o];return e},n=function(t,e,n,i){for(var r=this._data,o=this._dimSize,a=0;a<o;a++){for(var s=i[a],l=null==s[0]?1/0:s[0],u=null==s[1]?-1/0:s[1],h=e-t,c=n[a],p=0;p<h;p++){var d=r[p*o+a];c[t+p]=d,d<l&&(l=d),d>u&&(u=d)}s[0]=l,s[1]=u}},i=function(){return this._data?this._data.length/this._dimSize:0};function r(t){for(var e=0;e<t.length;e++)this._data.push(t[e])}(t={}).arrayRows_column={pure:!0,appendData:r},t.arrayRows_row={pure:!0,appendData:function(){throw new Error('Do not support appendData when set seriesLayoutBy: "row".')}},t.objectRows={pure:!0,appendData:r},t.keyedColumns={pure:!0,appendData:function(t){var e=this._data;P(t,(function(t,n){for(var i=e[n]||(e[n]=[]),r=0;r<(t||[]).length;r++)i.push(t[r])}))}},t.original={appendData:r},t.typedArray={persistent:!1,pure:!0,appendData:function(t){this._data=t},clean:function(){this._offset+=this.count(),this._data=null}},ed=t}(),t}(),pd=function(t,e,n,i){return t[i]},dd=((Jp={}).arrayRows_column=function(t,e,n,i){return t[i+e]},Jp.arrayRows_row=function(t,e,n,i){i+=e;for(var r=[],o=t,a=0;a<o.length;a++){var s=o[a];r.push(s?s[i]:null)}return r},Jp.objectRows=pd,Jp.keyedColumns=function(t,e,n,i){for(var r=[],o=0;o<n.length;o++){var a=n[o].name;0;var s=t[a];r.push(s?s[i]:null)}return r},Jp.original=pd,Jp);function fd(t,e){var n=dd[bd(t,e)];return n}var gd=function(t,e,n){return t.length},yd=((Qp={}).arrayRows_column=function(t,e,n){return Math.max(0,t.length-e)},Qp.arrayRows_row=function(t,e,n){var i=t[0];return i?Math.max(0,i.length-e):0},Qp.objectRows=gd,Qp.keyedColumns=function(t,e,n){var i=n[0].name;var r=t[i];return r?r.length:0},Qp.original=gd,Qp);function vd(t,e){var n=yd[bd(t,e)];return n}var md=function(t,e,n){return null!=e?t[e]:t},_d=((td={}).arrayRows=md,td.objectRows=function(t,e,n){return null!=e?t[n]:t},td.keyedColumns=md,td.original=function(t,e,n){var i=wr(t);return null!=e&&i instanceof Array?i[e]:i},td.typedArray=md,td);function xd(t){var e=_d[t];return e}function bd(t,e){return t===qc?t+"_"+e:t}function wd(t,e,n){if(t){var i=t.getRawDataItem(e);if(null!=i){var r,o,a=t.getProvider().getSource().sourceFormat,s=t.getDimensionInfo(n);return s&&(r=s.name,o=s.index),xd(a)(i,o,r)}}}var Sd=/\{@(.+?)\}/g,Md=function(){function t(){}return t.prototype.getDataParams=function(t,e){var n=this.getData(e),i=this.getRawValue(t,e),r=n.getRawIndex(t),o=n.getName(t),a=n.getRawDataItem(t),s=n.getItemVisual(t,"style"),l=s&&s[n.getItemVisual(t,"drawType")||"fill"],u=s&&s.stroke,h=this.mainType,c="series"===h,p=n.userOutput;return{componentType:h,componentSubType:this.subType,componentIndex:this.componentIndex,seriesType:c?this.subType:null,seriesIndex:this.seriesIndex,seriesId:c?this.id:null,seriesName:c?this.name:null,name:o,dataIndex:r,data:a,dataType:e,value:i,color:l,borderColor:u,dimensionNames:p?p.dimensionNames:null,encode:p?p.encode:null,$vars:["seriesName","name","value"]}},t.prototype.getFormattedLabel=function(t,e,n,i,r,o){e=e||"normal";var a=this.getData(n),s=this.getDataParams(t,n);(o&&(s.value=o.interpolatedValue),null!=i&&F(s.value)&&(s.value=s.value[i]),r)||(r=a.getItemModel(t).get("normal"===e?["label","formatter"]:[e,"label","formatter"]));return"function"==typeof r?(s.status=e,s.dimensionIndex=i,r(s)):"string"==typeof r?Cc(r,s).replace(Sd,(function(e,n){var i=n.length,r="["===n.charAt(0)&&"]"===n.charAt(i-1)?+n.slice(1,i-1):n,s=wd(a,t,r);if(o&&F(o.interpolatedValue)){var l=a.getDimensionInfo(r);l&&(s=o.interpolatedValue[l.index])}return null!=s?s+"":""})):void 0},t.prototype.getRawValue=function(t,e){return wd(this.getData(e),t)},t.prototype.formatTooltip=function(t,e,n){},t}();function Id(t){var e,n;return Y(t)?t.type&&(n=t):e=t,{markupText:e,markupFragment:n}}function Td(t){return new Cd(t)}var Cd=function(){function t(t){t=t||{},this._reset=t.reset,this._plan=t.plan,this._count=t.count,this._onDirty=t.onDirty,this._dirty=!0}return t.prototype.perform=function(t){var e,n=this._upstream,i=t&&t.skip;if(this._dirty&&n){var r=this.context;r.data=r.outputData=n.context.outputData}this.__pipeline&&(this.__pipeline.currentTask=this),this._plan&&!i&&(e=this._plan(this.context));var o,a=h(this._modBy),s=this._modDataCount||0,l=h(t&&t.modBy),u=t&&t.modDataCount||0;function h(t){return!(t>=1)&&(t=1),t}a===l&&s===u||(e="reset"),(this._dirty||"reset"===e)&&(this._dirty=!1,o=this._doReset(i)),this._modBy=l,this._modDataCount=u;var c=t&&t.step;if(this._dueEnd=n?n._outputDueEnd:this._count?this._count(this.context):1/0,this._progress){var p=this._dueIndex,d=Math.min(null!=c?this._dueIndex+c:1/0,this._dueEnd);if(!i&&(o||p<d)){var f=this._progress;if(F(f))for(var g=0;g<f.length;g++)this._doProgress(f[g],p,d,l,u);else this._doProgress(f,p,d,l,u)}this._dueIndex=d;var y=null!=this._settedOutputEnd?this._settedOutputEnd:d;0,this._outputDueEnd=y}else this._dueIndex=this._outputDueEnd=null!=this._settedOutputEnd?this._settedOutputEnd:this._dueEnd;return this.unfinished()},t.prototype.dirty=function(){this._dirty=!0,this._onDirty&&this._onDirty(this.context)},t.prototype._doProgress=function(t,e,n,i,r){Ad.reset(e,n,i,r),this._callingProgress=t,this._callingProgress({start:e,end:n,count:n-e,next:Ad.next},this.context)},t.prototype._doReset=function(t){var e,n;this._dueIndex=this._outputDueEnd=this._dueEnd=0,this._settedOutputEnd=null,!t&&this._reset&&((e=this._reset(this.context))&&e.progress&&(n=e.forceFirstProgress,e=e.progress),F(e)&&!e.length&&(e=null)),this._progress=e,this._modBy=this._modDataCount=null;var i=this._downstream;return i&&i.dirty(),n},t.prototype.unfinished=function(){return this._progress&&this._dueIndex<this._dueEnd},t.prototype.pipe=function(t){(this._downstream!==t||this._dirty)&&(this._downstream=t,t._upstream=this,t.dirty())},t.prototype.dispose=function(){this._disposed||(this._upstream&&(this._upstream._downstream=null),this._downstream&&(this._downstream._upstream=null),this._dirty=!1,this._disposed=!0)},t.prototype.getUpstream=function(){return this._upstream},t.prototype.getDownstream=function(){return this._downstream},t.prototype.setOutputEnd=function(t){this._outputDueEnd=this._settedOutputEnd=t},t}(),Ad=function(){var t,e,n,i,r,o={reset:function(l,u,h,c){e=l,t=u,n=h,i=c,r=Math.ceil(i/n),o.next=n>1&&i>0?s:a}};return o;function a(){return e<t?e++:null}function s(){var o=e%r*n+Math.ceil(e/r),a=e>=t?null:o<i?o:e;return e++,a}}();function Dd(t,e){var n=e&&e.type;if("ordinal"===n){var i=e&&e.ordinalMeta;return i?i.parseAndCollect(t):t}return"time"===n&&"number"!=typeof t&&null!=t&&"-"!==t&&(t=+rr(t)),null==t||""===t?NaN:+t}var Ld=ht({number:function(t){return parseFloat(t)},time:function(t){return+rr(t)},trim:function(t){return"string"==typeof t?ot(t):t}});function kd(t){return Ld.get(t)}var Pd={lt:function(t,e){return t<e},lte:function(t,e){return t<=e},gt:function(t,e){return t>e},gte:function(t,e){return t>=e}},Od=function(){function t(t,e){if("number"!=typeof e){var n="";0,yr(n)}this._opFn=Pd[t],this._rvalFloat=hr(e)}return t.prototype.evaluate=function(t){return"number"==typeof t?this._opFn(t,this._rvalFloat):this._opFn(hr(t),this._rvalFloat)},t}(),Rd=function(){function t(t,e){var n="desc"===t;this._resultLT=n?1:-1,null==e&&(e=n?"min":"max"),this._incomparable="min"===e?-1/0:1/0}return t.prototype.evaluate=function(t,e){var n=typeof t,i=typeof e,r="number"===n?t:hr(t),o="number"===i?e:hr(e),a=isNaN(r),s=isNaN(o);if(a&&(r=this._incomparable),s&&(o=this._incomparable),a&&s){var l="string"===n,u="string"===i;l&&(r=u?t:0),u&&(o=l?e:0)}return r<o?this._resultLT:r>o?-this._resultLT:0},t}(),Nd=function(){function t(t,e){this._rval=e,this._isEQ=t,this._rvalTypeof=typeof e,this._rvalFloat=hr(e)}return t.prototype.evaluate=function(t){var e=t===this._rval;if(!e){var n=typeof t;n===this._rvalTypeof||"number"!==n&&"number"!==this._rvalTypeof||(e=hr(t)===this._rvalFloat)}return this._isEQ?e:!e},t}();function Ed(t,e){return"eq"===t||"ne"===t?new Nd("eq"===t,e):dt(Pd,t)?new Od(t,e):null}var zd=function(){function t(){}return t.prototype.getRawData=function(){throw new Error("not supported")},t.prototype.getRawDataItem=function(t){throw new Error("not supported")},t.prototype.cloneRawData=function(){},t.prototype.getDimensionInfo=function(t){},t.prototype.cloneAllDimensionInfo=function(){},t.prototype.count=function(){},t.prototype.retrieveValue=function(t,e){},t.prototype.retrieveValueFromItem=function(t,e){},t.prototype.convertValue=function(t,e){return Dd(t,e)},t}();function Bd(t){var e=t.sourceFormat;if(!Ud(e)){var n="";0,yr(n)}return t.data}function Vd(t){var e=t.sourceFormat,n=t.data;if(!Ud(e)){var i="";0,yr(i)}if(e===qc){for(var r=[],o=0,a=n.length;o<a;o++)r.push(n[o].slice());return r}if(e===Kc){for(r=[],o=0,a=n.length;o<a;o++)r.push(I({},n[o]));return r}}function Fd(t,e,n){if(null!=n)return"number"==typeof n||!isNaN(n)&&!dt(e,n)?t[n]:dt(e,n)?e[n]:void 0}function Gd(t){return w(t)}var Hd=ht();function Wd(t,e,n,i){var r="";e.length||yr(r),Y(t)||yr(r);var o=t.type,a=Hd.get(o);a||yr(r);var s=O(e,(function(t){return function(t,e){var n=new zd,i=t.data,r=n.sourceFormat=t.sourceFormat,o=t.startIndex,a="";t.seriesLayoutBy!==tp&&yr(a);var s=[],l={},u=t.dimensionsDefine;if(u)P(u,(function(t,e){var n=t.name,i={index:e,name:n,displayName:t.displayName};if(s.push(i),null!=n){var r="";dt(l,n)&&yr(r),l[n]=i}}));else for(var h=0;h<t.dimensionsDetectedCount;h++)s.push({index:h});var c=fd(r,tp);e.__isBuiltIn&&(n.getRawDataItem=function(t){return c(i,o,s,t)},n.getRawData=B(Bd,null,t)),n.cloneRawData=B(Vd,null,t);var p=vd(r,tp);n.count=B(p,null,i,o,s);var d=xd(r);n.retrieveValue=function(t,e){var n=c(i,o,s,t);return f(n,e)};var f=n.retrieveValueFromItem=function(t,e){if(null!=t){var n=s[e];return n?d(t,e,n.name):void 0}};return n.getDimensionInfo=B(Fd,null,s,l),n.cloneAllDimensionInfo=B(Gd,null,s),n}(t,a)})),l=_r(a.transform({upstream:s[0],upstreamList:s,config:w(t.config)}));return O(l,(function(t,n){var i,r="";Y(t)||yr(r),t.data||yr(r),Ud(ld(t.data))||yr(r);var o=e[0];if(o&&0===n&&!t.dimensions){var a=o.startIndex;a&&(t.data=o.data.slice(0,a).concat(t.data)),i={seriesLayoutBy:tp,sourceHeader:a,dimensions:o.metaRawOption.dimensions}}else i={seriesLayoutBy:tp,sourceHeader:0,dimensions:t.dimensions};return od(t.data,i,null,null)}))}function Ud(t){return t===qc||t===Kc}var Yd=function(){function t(t){this._sourceList=[],this._upstreamSignList=[],this._versionSignBase=0,this._sourceHost=t}return t.prototype.dirty=function(){this._setLocalSource([],[])},t.prototype._setLocalSource=function(t,e){this._sourceList=t,this._upstreamSignList=e,this._versionSignBase++,this._versionSignBase>9e10&&(this._versionSignBase=0)},t.prototype._getVersionSign=function(){return this._sourceHost.uid+"_"+this._versionSignBase},t.prototype.prepareSource=function(){this._isDirty()&&this._createSource()},t.prototype._createSource=function(){this._setLocalSource([],[]);var t,e,n=this._sourceHost,i=this._getUpstreamSourceManagers(),r=!!i.length;if(Zd(n)){var o=n,a=void 0,s=void 0,l=void 0;if(r){var u=i[0];u.prepareSource(),a=(l=u.getSource()).data,s=l.sourceFormat,e=[u._getVersionSign()]}else s=Z(a=o.get("data",!0))?Jc:jc,e=[];var h=this._getSourceMetaRawOption(),c=l?l.metaRawOption:null;t=[od(a,{seriesLayoutBy:tt(h.seriesLayoutBy,c?c.seriesLayoutBy:null),sourceHeader:tt(h.sourceHeader,c?c.sourceHeader:null),dimensions:tt(h.dimensions,c?c.dimensions:null)},s,o.get("encode",!0))]}else{var p=n;if(r){var d=this._applyTransform(i);t=d.sourceList,e=d.upstreamSignList}else{t=[od(p.get("source",!0),this._getSourceMetaRawOption(),null,null)],e=[]}}this._setLocalSource(t,e)},t.prototype._applyTransform=function(t){var e,n=this._sourceHost,i=n.get("transform",!0),r=n.get("fromTransformResult",!0);if(null!=r){var o="";1!==t.length&&jd(o)}var a,s=[],l=[];return P(t,(function(t){t.prepareSource();var e=t.getSource(r||0),n="";null==r||e||jd(n),s.push(e),l.push(t._getVersionSign())})),i?e=function(t,e,n){var i=_r(t),r=i.length,o="";r||yr(o);for(var a=0,s=r;a<s;a++)e=Wd(i[a],e),a!==s-1&&(e.length=Math.max(e.length,1));return e}(i,s,n.componentIndex):null!=r&&(e=[(a=s[0],new id({data:a.data,sourceFormat:a.sourceFormat,seriesLayoutBy:a.seriesLayoutBy,dimensionsDefine:w(a.dimensionsDefine),startIndex:a.startIndex,dimensionsDetectedCount:a.dimensionsDetectedCount,encodeDefine:sd(a.encodeDefine)}))]),{sourceList:e,upstreamSignList:l}},t.prototype._isDirty=function(){if(!this._sourceList.length)return!0;for(var t=this._getUpstreamSourceManagers(),e=0;e<t.length;e++){var n=t[e];if(n._isDirty()||this._upstreamSignList[e]!==n._getVersionSign())return!0}},t.prototype.getSource=function(t){return this._sourceList[t||0]},t.prototype._getUpstreamSourceManagers=function(){var t=this._sourceHost;if(Zd(t)){var e=lp(t);return e?[e.getSourceManager()]:[]}return O(function(t){return t.get("transform",!0)||t.get("fromTransformResult",!0)?Er(t.ecModel,"dataset",{index:t.get("fromDatasetIndex",!0),id:t.get("fromDatasetId",!0)},Rr).models:[]}(t),(function(t){return t.getSourceManager()}))},t.prototype._getSourceMetaRawOption=function(){var t,e,n,i=this._sourceHost;if(Zd(i))t=i.get("seriesLayoutBy",!0),e=i.get("sourceHeader",!0),n=i.get("dimensions",!0);else if(!this._getUpstreamSourceManagers().length){var r=i;t=r.get("seriesLayoutBy",!0),e=r.get("sourceHeader",!0),n=r.get("dimensions",!0)}return{seriesLayoutBy:t,sourceHeader:e,dimensions:n}},t}();function Xd(t){t.option.transform&&st(t.option.transform)}function Zd(t){return"series"===t.mainType}function jd(t){throw new Error(t)}function qd(t,e){var n=t.color||"#6e7079",i=t.fontSize||12,r=t.fontWeight||"400",o=t.color||"#464646",a=t.fontSize||14,s=t.fontWeight||"900";return"html"===e?{nameStyle:"font-size:"+Sc(i+"")+"px;color:"+Sc(n)+";font-weight:"+Sc(r+""),valueStyle:"font-size:"+Sc(a+"")+"px;color:"+Sc(o)+";font-weight:"+Sc(s+"")}:{nameStyle:{fontSize:i,fill:n,fontWeight:r},valueStyle:{fontSize:a,fill:o,fontWeight:s}}}var Kd=[0,10,20,30],$d=["","\n","\n\n","\n\n\n"];function Jd(t,e){return e.type=t,e}function Qd(t){return dt(tf,t.type)&&tf[t.type]}var tf={section:{planLayout:function(t){var e=t.blocks.length,n=e>1||e>0&&!t.noHeader,i=0;P(t.blocks,(function(t){Qd(t).planLayout(t);var e=t.__gapLevelBetweenSubBlocks;e>=i&&(i=e+(!n||e&&("section"!==t.type||t.noHeader)?0:1))})),t.__gapLevelBetweenSubBlocks=i},build:function(t,e,n,i){var r=e.noHeader,o=nf(e),a=function(t,e,n,i){var r=[],o=e.blocks||[];rt(!o||F(o)),o=o||[];var a=t.orderMode;if(e.sortBlocks&&a){o=o.slice();var s={valueAsc:"asc",valueDesc:"desc"};if(dt(s,a)){var l=new Rd(s[a],null);o.sort((function(t,e){return l.evaluate(t.sortParam,e.sortParam)}))}else"seriesDesc"===a&&o.reverse()}var u=nf(e);if(P(o,(function(e,n){var o=Qd(e).build(t,e,n>0?u.html:0,i);null!=o&&r.push(o)})),!r.length)return;return"richText"===t.renderMode?r.join(u.richText):rf(r.join(""),n)}(t,e,r?n:o.html,i);if(r)return a;var s=Mc(e.header,"ordinal",t.useUTC),l=qd(i,t.renderMode).nameStyle;return"richText"===t.renderMode?of(t,s,l)+o.richText+a:rf('<div style="'+l+";"+'line-height:1;">'+Sc(s)+"</div>"+a,n)}},nameValue:{planLayout:function(t){t.__gapLevelBetweenSubBlocks=0},build:function(t,e,n,i){var r=t.renderMode,o=e.noName,a=e.noValue,s=!e.markerType,l=e.name,u=e.value,h=t.useUTC;if(!o||!a){var c=s?"":t.markupStyleCreator.makeTooltipMarker(e.markerType,e.markerColor||"#333333",r),p=o?"":Mc(l,"ordinal",h),d=e.valueType,f=a?[]:F(u)?O(u,(function(t,e){return Mc(t,F(d)?d[e]:d,h)})):[Mc(u,F(d)?d[0]:d,h)],g=!s||!o,y=!s&&o,v=qd(i,r),m=v.nameStyle,_=v.valueStyle;return"richText"===r?(s?"":c)+(o?"":of(t,p,m))+(a?"":function(t,e,n,i,r){var o=[r],a=i?10:20;return n&&o.push({padding:[0,0,0,a],align:"right"}),t.markupStyleCreator.wrapRichTextStyle(e.join("  "),o)}(t,f,g,y,_)):rf((s?"":c)+(o?"":function(t,e,n){return'<span style="'+n+";"+(e?"margin-left:2px":"")+'">'+Sc(t)+"</span>"}(p,!s,m))+(a?"":function(t,e,n,i){var r=n?"10px":"20px";return'<span style="'+(e?"float:right;margin-left:"+r:"")+";"+i+'">'+O(t,(function(t){return Sc(t)})).join("&nbsp;&nbsp;")+"</span>"}(f,g,y,_)),n)}}}};function ef(t,e,n,i,r,o){if(t){var a=Qd(t);a.planLayout(t);var s={useUTC:r,renderMode:n,orderMode:i,markupStyleCreator:e};return a.build(s,t,0,o)}}function nf(t){var e=t.__gapLevelBetweenSubBlocks;return{html:Kd[e],richText:$d[e]}}function rf(t,e){return'<div style="'+("margin: "+e+"px 0 0")+";"+'line-height:1;">'+t+'<div style="clear:both"></div></div>'}function of(t,e,n){return t.markupStyleCreator.wrapRichTextStyle(e,n)}function af(t,e){return Dc(t.getData().getItemVisual(e,"style")[t.visualDrawType])}function sf(t,e){var n=t.get("padding");return null!=n?n:"richText"===e?[8,10]:10}var lf=function(){function t(){this.richTextStyles={},this._nextStyleNameId=pr()}return t.prototype._generateStyleName=function(){return"__EC_aUTo_"+this._nextStyleNameId++},t.prototype.makeTooltipMarker=function(t,e,n){var i="richText"===n?this._generateStyleName():null,r=Ac({color:e,type:t,renderMode:n,markerId:i});return H(r)?r:(this.richTextStyles[i]=r.style,r.content)},t.prototype.wrapRichTextStyle=function(t,e){var n={};F(e)?P(e,(function(t){return I(n,t)})):I(n,e);var i=this._generateStyleName();return this.richTextStyles[i]=n,"{"+i+"|"+t+"}"},t}();function uf(t){var e,n,i,r,o=t.series,a=t.dataIndex,s=t.multipleSeries,l=o.getData(),u=l.mapDimensionsAll("defaultedTooltip"),h=u.length,c=o.getRawValue(a),p=F(c),d=af(o,a);if(h>1||p&&!h){var f=function(t,e,n,i,r){var o=e.getData(),a=R(t,(function(t,e,n){var i=o.getDimensionInfo(n);return t||i&&!1!==i.tooltip&&null!=i.displayName}),!1),s=[],l=[],u=[];function h(t,e){var n=o.getDimensionInfo(e);n&&!1!==n.otherDims.tooltip&&(a?u.push(Jd("nameValue",{markerType:"subItem",markerColor:r,name:n.displayName,value:t,valueType:n.type})):(s.push(t),l.push(n.type)))}return i.length?P(i,(function(t){h(wd(o,n,t),t)})):P(t,h),{inlineValues:s,inlineValueTypes:l,blocks:u}}(c,o,a,u,d);e=f.inlineValues,n=f.inlineValueTypes,i=f.blocks,r=f.inlineValues[0]}else if(h){var g=l.getDimensionInfo(u[0]);r=e=wd(l,a,u[0]),n=g.type}else r=e=p?c[0]:c;var y=Cr(o),v=y&&o.name||"",m=l.getName(a),_=s?v:m;return Jd("section",{header:v,noHeader:s||!y,sortParam:r,blocks:[Jd("nameValue",{markerType:"item",markerColor:d,name:_,noName:!ot(_),value:e,valueType:n})].concat(i||[])})}var hf=Lr();function cf(t,e){return t.getName(e)||t.getId(e)}var pf=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._selectedDataIndicesMap={},e}return n(e,t),e.prototype.init=function(t,e,n){this.seriesIndex=this.componentIndex,this.dataTask=Td({count:ff,reset:gf}),this.dataTask.context={model:this},this.mergeDefaultAndTheme(t,n),(hf(this).sourceManager=new Yd(this)).prepareSource();var i=this.getInitialData(t,n);vf(i,this),this.dataTask.context.data=i,hf(this).dataBeforeProcessed=i,df(this),this._initSelectedMapFromData(i)},e.prototype.mergeDefaultAndTheme=function(t,e){var n=Bc(this),i=n?Fc(t):{},r=this.subType;Wc.hasClass(r)&&(r+="Series"),S(t,e.getTheme().get(this.subType)),S(t,this.getDefaultOption()),xr(t,"label",["show"]),this.fillDataTextStyle(t.data),n&&Vc(t,i,n)},e.prototype.mergeOption=function(t,e){t=S(this.option,t,!0),this.fillDataTextStyle(t.data);var n=Bc(this);n&&Vc(this.option,t,n);var i=hf(this).sourceManager;i.dirty(),i.prepareSource();var r=this.getInitialData(t,e);vf(r,this),this.dataTask.dirty(),this.dataTask.context.data=r,hf(this).dataBeforeProcessed=r,df(this),this._initSelectedMapFromData(r)},e.prototype.fillDataTextStyle=function(t){if(t&&!Z(t))for(var e=["show"],n=0;n<t.length;n++)t[n]&&t[n].label&&xr(t[n],"label",e)},e.prototype.getInitialData=function(t,e){},e.prototype.appendData=function(t){this.getRawData().appendData(t.data)},e.prototype.getData=function(t){var e=_f(this);if(e){var n=e.context.data;return null==t?n:n.getLinkedData(t)}return hf(this).data},e.prototype.getAllData=function(){var t=this.getData();return t&&t.getLinkedDataAll?t.getLinkedDataAll():[{data:t}]},e.prototype.setData=function(t){var e=_f(this);if(e){var n=e.context;n.outputData=t,e!==this.dataTask&&(n.data=t)}hf(this).data=t},e.prototype.getSource=function(){return hf(this).sourceManager.getSource()},e.prototype.getRawData=function(){return hf(this).dataBeforeProcessed},e.prototype.getBaseAxis=function(){var t=this.coordinateSystem;return t&&t.getBaseAxis&&t.getBaseAxis()},e.prototype.formatTooltip=function(t,e,n){return uf({series:this,dataIndex:t,multipleSeries:e})},e.prototype.isAnimationEnabled=function(){if(a.node)return!1;var t=this.getShallow("animation");return t&&this.getData().count()>this.getShallow("animationThreshold")&&(t=!1),!!t},e.prototype.restoreData=function(){this.dataTask.dirty()},e.prototype.getColorFromPalette=function(t,e,n){var i=this.ecModel,r=vp.prototype.getColorFromPalette.call(this,t,e,n);return r||(r=i.getColorFromPalette(t,e,n)),r},e.prototype.coordDimToDataDim=function(t){return this.getRawData().mapDimensionsAll(t)},e.prototype.getProgressive=function(){return this.get("progressive")},e.prototype.getProgressiveThreshold=function(){return this.get("progressiveThreshold")},e.prototype.select=function(t,e){this._innerSelect(this.getData(e),t)},e.prototype.unselect=function(t,e){var n=this.option.selectedMap;if(n)for(var i=this.getData(e),r=0;r<t.length;r++){var o=cf(i,t[r]);n[o]=!1,this._selectedDataIndicesMap[o]=-1}},e.prototype.toggleSelect=function(t,e){for(var n=[],i=0;i<t.length;i++)n[0]=t[i],this.isSelected(t[i],e)?this.unselect(n,e):this.select(n,e)},e.prototype.getSelectedDataIndices=function(){for(var t=this._selectedDataIndicesMap,e=z(t),n=[],i=0;i<e.length;i++){var r=t[e[i]];r>=0&&n.push(r)}return n},e.prototype.isSelected=function(t,e){var n=this.option.selectedMap;return n&&n[cf(this.getData(e),t)]||!1},e.prototype._innerSelect=function(t,e){var n,i,r=this.option.selectedMode,o=e.length;if(r&&o)if("multiple"===r)for(var a=this.option.selectedMap||(this.option.selectedMap={}),s=0;s<o;s++){var l=e[s];a[h=cf(t,l)]=!0,this._selectedDataIndicesMap[h]=t.getRawIndex(l)}else if("single"===r||!0===r){var u=e[o-1],h=cf(t,u);this.option.selectedMap=((n={})[h]=!0,n),this._selectedDataIndicesMap=((i={})[h]=t.getRawIndex(u),i)}},e.prototype._initSelectedMapFromData=function(t){if(!this.option.selectedMap){var e=[];t.hasItemOption&&t.each((function(n){var i=t.getRawDataItem(n);i&&i.selected&&e.push(n)})),e.length>0&&this._innerSelect(t,e)}},e.registerClass=function(t){return Wc.registerClass(t)},e.protoInitialize=function(){var t=e.prototype;t.type="series.__base__",t.seriesIndex=0,t.useColorPaletteOnData=!1,t.ignoreStyleOnData=!1,t.hasSymbolVisual=!1,t.defaultSymbol="circle",t.visualStyleAccessPath="itemStyle",t.visualDrawType="fill"}(),e}(Wc);function df(t){var e=t.name;Cr(t)||(t.name=function(t){var e=t.getRawData(),n=e.mapDimensionsAll("seriesName"),i=[];return P(n,(function(t){var n=e.getDimensionInfo(t);n.displayName&&i.push(n.displayName)})),i.join(" ")}(t)||e)}function ff(t){return t.model.getRawData().count()}function gf(t){var e=t.model;return e.setData(e.getRawData().cloneShallow()),yf}function yf(t,e){e.outputData&&t.end>e.outputData.count()&&e.model.getRawData().cloneShallow(e.outputData)}function vf(t,e){P(r(t.CHANGABLE_METHODS,t.DOWNSAMPLE_METHODS),(function(n){t.wrapMethod(n,V(mf,e))}))}function mf(t,e){var n=_f(t);return n&&n.setOutputEnd((e||this).count()),e}function _f(t){var e=(t.ecModel||{}).scheduler,n=e&&e.getPipeline(t.uid);if(n){var i=n.currentTask;if(i){var r=i.agentStubMap;r&&(i=r.get(t.uid))}return i}}L(pf,Md),L(pf,vp),Yr(pf,Wc);var xf=function(){function t(){this.group=new zi,this.uid=Oh("viewComponent")}return t.prototype.init=function(t,e){},t.prototype.render=function(t,e,n,i){},t.prototype.dispose=function(t,e){},t.prototype.updateView=function(t,e,n,i){},t.prototype.updateLayout=function(t,e,n,i){},t.prototype.updateVisual=function(t,e,n,i){},t.prototype.blurSeries=function(t,e){},t}();function bf(){var t=Lr();return function(e){var n=t(e),i=e.pipelineContext,r=!!n.large,o=!!n.progressiveRender,a=n.large=!(!i||!i.large),s=n.progressiveRender=!(!i||!i.progressiveRender);return!(r===a&&o===s)&&"reset"}}Wr(xf),qr(xf);var wf=Lr(),Sf=bf(),Mf=function(){function t(){this.group=new zi,this.uid=Oh("viewChart"),this.renderTask=Td({plan:Cf,reset:Af}),this.renderTask.context={view:this}}return t.prototype.init=function(t,e){},t.prototype.render=function(t,e,n,i){},t.prototype.highlight=function(t,e,n,i){Tf(t.getData(),i,"emphasis")},t.prototype.downplay=function(t,e,n,i){Tf(t.getData(),i,"normal")},t.prototype.remove=function(t,e){this.group.removeAll()},t.prototype.dispose=function(t,e){},t.prototype.updateView=function(t,e,n,i){this.render(t,e,n,i)},t.prototype.updateLayout=function(t,e,n,i){this.render(t,e,n,i)},t.prototype.updateVisual=function(t,e,n,i){this.render(t,e,n,i)},t.markUpdateMethod=function(t,e){wf(t).updateMethod=e},t.protoInitialize=void(t.prototype.type="chart"),t}();function If(t,e,n){t&&("emphasis"===e?Xs:Zs)(t,n)}function Tf(t,e,n){var i=Dr(t,e),r=e&&null!=e.highlightKey?function(t){var e=_s[t];return null==e&&ms<=32&&(e=_s[t]=ms++),e}(e.highlightKey):null;null!=i?P(_r(i),(function(e){If(t.getItemGraphicEl(e),n,r)})):t.eachItemGraphicEl((function(t){If(t,n,r)}))}function Cf(t){return Sf(t.model)}function Af(t){var e=t.model,n=t.ecModel,i=t.api,r=t.payload,o=e.pipelineContext.progressiveRender,a=t.view,s=r&&wf(r).updateMethod,l=o?"incrementalPrepareRender":s&&a[s]?s:"render";return"render"!==l&&a[l](e,n,i,r),Df[l]}Wr(Mf),qr(Mf);var Df={incrementalPrepareRender:{progress:function(t,e){e.view.incrementalRender(t,e.model,e.ecModel,e.api,e.payload)}},render:{forceFirstProgress:!0,progress:function(t,e){e.view.render(e.model,e.ecModel,e.api,e.payload)}}},Lf="\0__throttleOriginMethod",kf="\0__throttleRate",Pf="\0__throttleType";function Of(t,e,n){var i,r,o,a,s,l=0,u=0,h=null;function c(){u=(new Date).getTime(),h=null,t.apply(o,a||[])}e=e||0;var p=function(){for(var t=[],p=0;p<arguments.length;p++)t[p]=arguments[p];i=(new Date).getTime(),o=this,a=t;var d=s||e,f=s||n;s=null,r=i-(f?l:u)-d,clearTimeout(h),f?h=setTimeout(c,d):r>=0?c():h=setTimeout(c,-r),l=i};return p.clear=function(){h&&(clearTimeout(h),h=null)},p.debounceNextCall=function(t){s=t},p}function Rf(t,e,n,i){var r=t[e];if(r){var o=r[Lf]||r,a=r[Pf];if(r[kf]!==n||a!==i){if(null==n||!i)return t[e]=o;(r=t[e]=Of(o,n,"debounce"===i))[Lf]=o,r[Pf]=i,r[kf]=n}return r}}var Nf=Lr(),Ef={itemStyle:Kr(Ah,!0),lineStyle:Kr(Ih,!0)},zf={lineStyle:"stroke",itemStyle:"fill"};function Bf(t,e){var n=t.visualStyleMapper||Ef[e];return n||(console.warn("Unkown style type '"+e+"'."),Ef.itemStyle)}function Vf(t,e){var n=t.visualDrawType||zf[e];return n||(console.warn("Unkown style type '"+e+"'."),"fill")}var Ff={createOnAllSeries:!0,performRawSeries:!0,reset:function(t,e){var n=t.getData(),i=t.visualStyleAccessPath||"itemStyle",r=t.getModel(i),o=Bf(t,i)(r),a=r.getShallow("decal");a&&(n.setVisual("decal",a),a.dirty=!0);var s=Vf(t,i),l=o[s],u=G(l)?l:null,h="auto"===o.fill||"auto"===o.stroke;if(!o[s]||u||h){var c=t.getColorFromPalette(t.name,null,e.getSeriesCount());o[s]||(o[s]=c,n.setVisual("colorFromPalette",!0)),o.fill="auto"===o.fill||"function"==typeof o.fill?c:o.fill,o.stroke="auto"===o.stroke||"function"==typeof o.stroke?c:o.stroke}if(n.setVisual("style",o),n.setVisual("drawType",s),!e.isSeriesFiltered(t)&&u)return n.setVisual("colorFromPalette",!1),{dataEach:function(e,n){var i=t.getDataParams(n),r=I({},o);r[s]=u(i),e.setItemVisual(n,"style",r)}}}},Gf=new kh,Hf={createOnAllSeries:!0,performRawSeries:!0,reset:function(t,e){if(!t.ignoreStyleOnData&&!e.isSeriesFiltered(t)){var n=t.getData(),i=t.visualStyleAccessPath||"itemStyle",r=Bf(t,i),o=n.getVisual("drawType");return{dataEach:n.hasItemOption?function(t,e){var n=t.getRawDataItem(e);if(n&&n[i]){Gf.option=n[i];var a=r(Gf);I(t.ensureUniqueItemVisual(e,"style"),a),Gf.option.decal&&(t.setItemVisual(e,"decal",Gf.option.decal),Gf.option.decal.dirty=!0),o in a&&t.setItemVisual(e,"colorFromPalette",!1)}}:null}}}},Wf={performRawSeries:!0,overallReset:function(t){var e=ht();t.eachSeries((function(t){if(t.useColorPaletteOnData){var n=e.get(t.type);n||(n={},e.set(t.type,n)),Nf(t).scope=n}})),t.eachSeries((function(e){if(e.useColorPaletteOnData&&!t.isSeriesFiltered(e)){var n=e.getRawData(),i={},r=e.getData(),o=Nf(e).scope,a=e.visualStyleAccessPath||"itemStyle",s=Vf(e,a);r.each((function(t){var e=r.getRawIndex(t);i[e]=t})),n.each((function(t){var a=i[t];if(r.getItemVisual(a,"colorFromPalette")){var l=r.ensureUniqueItemVisual(a,"style"),u=n.getName(t)||t+"",h=n.count();l[s]=e.getColorFromPalette(u,o,h)}}))}}))}},Uf=Math.PI;var Yf=function(){function t(t,e,n,i){this._stageTaskMap=ht(),this.ecInstance=t,this.api=e,n=this._dataProcessorHandlers=n.slice(),i=this._visualHandlers=i.slice(),this._allHandlers=n.concat(i)}return t.prototype.restoreData=function(t,e){t.restoreData(e),this._stageTaskMap.each((function(t){var e=t.overallTask;e&&e.dirty()}))},t.prototype.getPerformArgs=function(t,e){if(t.__pipeline){var n=this._pipelineMap.get(t.__pipeline.id),i=n.context,r=!e&&n.progressiveEnabled&&(!i||i.progressiveRender)&&t.__idxInPipeline>n.blockIndex?n.step:null,o=i&&i.modDataCount;return{step:r,modBy:null!=o?Math.ceil(o/r):null,modDataCount:o}}},t.prototype.getPipeline=function(t){return this._pipelineMap.get(t)},t.prototype.updateStreamModes=function(t,e){var n=this._pipelineMap.get(t.uid),i=t.getData().count(),r=n.progressiveEnabled&&e.incrementalPrepareRender&&i>=n.threshold,o=t.get("large")&&i>=t.get("largeThreshold"),a="mod"===t.get("progressiveChunkMode")?i:null;t.pipelineContext=n.context={progressiveRender:r,modDataCount:a,large:o}},t.prototype.restorePipelines=function(t){var e=this,n=e._pipelineMap=ht();t.eachSeries((function(t){var i=t.getProgressive(),r=t.uid;n.set(r,{id:r,head:null,tail:null,threshold:t.getProgressiveThreshold(),progressiveEnabled:i&&!(t.preventIncremental&&t.preventIncremental()),blockIndex:-1,step:Math.round(i||700),count:0}),e._pipe(t,t.dataTask)}))},t.prototype.prepareStageTasks=function(){var t=this._stageTaskMap,e=this.api.getModel(),n=this.api;P(this._allHandlers,(function(i){var r=t.get(i.uid)||t.set(i.uid,{}),o="";rt(!(i.reset&&i.overallReset),o),i.reset&&this._createSeriesStageTask(i,r,e,n),i.overallReset&&this._createOverallStageTask(i,r,e,n)}),this)},t.prototype.prepareView=function(t,e,n,i){var r=t.renderTask,o=r.context;o.model=e,o.ecModel=n,o.api=i,r.__block=!t.incrementalPrepareRender,this._pipe(e,r)},t.prototype.performDataProcessorTasks=function(t,e){this._performStageTasks(this._dataProcessorHandlers,t,e,{block:!0})},t.prototype.performVisualTasks=function(t,e,n){this._performStageTasks(this._visualHandlers,t,e,n)},t.prototype._performStageTasks=function(t,e,n,i){i=i||{};var r=!1,o=this;function a(t,e){return t.setDirty&&(!t.dirtyMap||t.dirtyMap.get(e.__pipeline.id))}P(t,(function(t,s){if(!i.visualType||i.visualType===t.visualType){var l=o._stageTaskMap.get(t.uid),u=l.seriesTaskMap,h=l.overallTask;if(h){var c,p=h.agentStubMap;p.each((function(t){a(i,t)&&(t.dirty(),c=!0)})),c&&h.dirty(),o.updatePayload(h,n);var d=o.getPerformArgs(h,i.block);p.each((function(t){t.perform(d)})),h.perform(d)&&(r=!0)}else u&&u.each((function(s,l){a(i,s)&&s.dirty();var u=o.getPerformArgs(s,i.block);u.skip=!t.performRawSeries&&e.isSeriesFiltered(s.context.model),o.updatePayload(s,n),s.perform(u)&&(r=!0)}))}})),this.unfinished=r||this.unfinished},t.prototype.performSeriesTasks=function(t){var e;t.eachSeries((function(t){e=t.dataTask.perform()||e})),this.unfinished=e||this.unfinished},t.prototype.plan=function(){this._pipelineMap.each((function(t){var e=t.tail;do{if(e.__block){t.blockIndex=e.__idxInPipeline;break}e=e.getUpstream()}while(e)}))},t.prototype.updatePayload=function(t,e){"remain"!==e&&(t.context.payload=e)},t.prototype._createSeriesStageTask=function(t,e,n,i){var r=this,o=e.seriesTaskMap,a=e.seriesTaskMap=ht(),s=t.seriesType,l=t.getTargetSeries;function u(e){var s=e.uid,l=a.set(s,o&&o.get(s)||Td({plan:Kf,reset:$f,count:tg}));l.context={model:e,ecModel:n,api:i,useClearVisual:t.isVisual&&!t.isLayout,plan:t.plan,reset:t.reset,scheduler:r},r._pipe(e,l)}t.createOnAllSeries?n.eachRawSeries(u):s?n.eachRawSeriesByType(s,u):l&&l(n,i).each(u)},t.prototype._createOverallStageTask=function(t,e,n,i){var r=this,o=e.overallTask=e.overallTask||Td({reset:Xf});o.context={ecModel:n,api:i,overallReset:t.overallReset,scheduler:r};var a=o.agentStubMap,s=o.agentStubMap=ht(),l=t.seriesType,u=t.getTargetSeries,h=!0,c=!1,p="";function d(t){var e=t.uid,n=s.set(e,a&&a.get(e)||(c=!0,Td({reset:Zf,onDirty:qf})));n.context={model:t,overallProgress:h},n.agent=o,n.__block=h,r._pipe(t,n)}rt(!t.createOnAllSeries,p),l?n.eachRawSeriesByType(l,d):u?u(n,i).each(d):(h=!1,P(n.getSeries(),d)),c&&o.dirty()},t.prototype._pipe=function(t,e){var n=t.uid,i=this._pipelineMap.get(n);!i.head&&(i.head=e),i.tail&&i.tail.pipe(e),i.tail=e,e.__idxInPipeline=i.count++,e.__pipeline=i},t.wrapStageHandler=function(t,e){return G(t)&&(t={overallReset:t,seriesType:eg(t)}),t.uid=Oh("stageHandler"),e&&(t.visualType=e),t},t}();function Xf(t){t.overallReset(t.ecModel,t.api,t.payload)}function Zf(t){return t.overallProgress&&jf}function jf(){this.agent.dirty(),this.getDownstream().dirty()}function qf(){this.agent&&this.agent.dirty()}function Kf(t){return t.plan?t.plan(t.model,t.ecModel,t.api,t.payload):null}function $f(t){t.useClearVisual&&t.data.clearAllVisual();var e=t.resetDefines=_r(t.reset(t.model,t.ecModel,t.api,t.payload));return e.length>1?O(e,(function(t,e){return Qf(e)})):Jf}var Jf=Qf(0);function Qf(t){return function(e,n){var i=n.data,r=n.resetDefines[t];if(r&&r.dataEach)for(var o=e.start;o<e.end;o++)r.dataEach(i,o);else r&&r.progress&&r.progress(e,i)}}function tg(t){return t.data.count()}function eg(t){ng=null;try{t(ig,rg)}catch(t){}return ng}var ng,ig={},rg={};function og(t,e){for(var n in e.prototype)t[n]=ft}og(ig,xp),og(rg,Ip),ig.eachSeriesByType=ig.eachRawSeriesByType=function(t){ng=t},ig.eachComponent=function(t){"series"===t.mainType&&t.subType&&(ng=t.subType)};var ag=["#37A2DA","#32C5E9","#67E0E3","#9FE6B8","#FFDB5C","#ff9f7f","#fb7293","#E062AE","#E690D1","#e7bcf3","#9d96f5","#8378EA","#96BFFF"],sg={color:ag,colorLayer:[["#37A2DA","#ffd85c","#fd7b5f"],["#37A2DA","#67E0E3","#FFDB5C","#ff9f7f","#E062AE","#9d96f5"],["#37A2DA","#32C5E9","#9FE6B8","#FFDB5C","#ff9f7f","#fb7293","#e7bcf3","#8378EA","#96BFFF"],ag]},lg="#B9B8CE",ug="#100C2A",hg=function(){return{axisLine:{lineStyle:{color:lg}},splitLine:{lineStyle:{color:"#484753"}},splitArea:{areaStyle:{color:["rgba(255,255,255,0.02)","rgba(255,255,255,0.05)"]}},minorSplitLine:{lineStyle:{color:"#20203B"}}}},cg=["#4992ff","#7cffb2","#fddd60","#ff6e76","#58d9f9","#05c091","#ff8a45","#8d48e3","#dd79ff"],pg={darkMode:!0,color:cg,backgroundColor:ug,axisPointer:{lineStyle:{color:"#817f91"},crossStyle:{color:"#817f91"},label:{color:"#ffffff"}},legend:{textStyle:{color:lg}},textStyle:{color:lg},title:{textStyle:{color:"#EEF1FA"},subtextStyle:{color:"#B9B8CE"}},toolbox:{iconStyle:{borderColor:lg}},dataZoom:{borderColor:"#71708A",textStyle:{color:lg},brushStyle:{color:"rgba(135,163,206,0.3)"},handleStyle:{color:"#353450",borderColor:"#C5CBE3"},moveHandleStyle:{color:"#B0B6C3",opacity:.3},fillerColor:"rgba(135,163,206,0.2)",emphasis:{handleStyle:{borderColor:"#91B7F2",color:"#4D587D"},moveHandleStyle:{color:"#636D9A",opacity:.7}},dataBackground:{lineStyle:{color:"#71708A",width:1},areaStyle:{color:"#71708A"}},selectedDataBackground:{lineStyle:{color:"#87A3CE"},areaStyle:{color:"#87A3CE"}}},visualMap:{textStyle:{color:lg}},timeline:{lineStyle:{color:lg},label:{color:lg},controlStyle:{color:lg,borderColor:lg}},calendar:{itemStyle:{color:ug},dayLabel:{color:lg},monthLabel:{color:lg},yearLabel:{color:lg}},timeAxis:hg(),logAxis:hg(),valueAxis:hg(),categoryAxis:hg(),line:{symbol:"circle"},graph:{color:cg},gauge:{title:{color:lg},axisLine:{lineStyle:{color:[[1,"rgba(207,212,219,0.2)"]]}},axisLabel:{color:lg},detail:{color:"#EEF1FA"}},candlestick:{itemStyle:{color:"#f64e56",color0:"#54ea92",borderColor:"#f64e56",borderColor0:"#54ea92"}}};pg.categoryAxis.splitLine.show=!1;var dg=function(){function t(){}return t.prototype.normalizeQuery=function(t){var e={},n={},i={};if(H(t)){var r=Hr(t);e.mainType=r.main||null,e.subType=r.sub||null}else{var o=["Index","Name","Id"],a={name:1,dataIndex:1,dataType:1};P(t,(function(t,r){for(var s=!1,l=0;l<o.length;l++){var u=o[l],h=r.lastIndexOf(u);if(h>0&&h===r.length-u.length){var c=r.slice(0,h);"data"!==c&&(e.mainType=c,e[u.toLowerCase()]=t,s=!0)}}a.hasOwnProperty(r)&&(n[r]=t,s=!0),s||(i[r]=t)}))}return{cptQuery:e,dataQuery:n,otherQuery:i}},t.prototype.filter=function(t,e){var n=this.eventInfo;if(!n)return!0;var i=n.targetEl,r=n.packedEvent,o=n.model,a=n.view;if(!o||!a)return!0;var s=e.cptQuery,l=e.dataQuery;return u(s,o,"mainType")&&u(s,o,"subType")&&u(s,o,"index","componentIndex")&&u(s,o,"name")&&u(s,o,"id")&&u(l,r,"name")&&u(l,r,"dataIndex")&&u(l,r,"dataType")&&(!a.filterForExposedEvent||a.filterForExposedEvent(t,e.otherQuery,i,r));function u(t,e,n,i){return null==t[n]||e[i||n]===t[n]}},t.prototype.afterTrigger=function(){this.eventInfo=null},t}(),fg={createOnAllSeries:!0,performRawSeries:!0,reset:function(t,e){var n=t.getData();if(t.legendSymbol&&n.setVisual("legendSymbol",t.legendSymbol),t.hasSymbolVisual){var i=t.get("symbol"),r=t.get("symbolSize"),o=t.get("symbolKeepAspect"),a=t.get("symbolRotate"),s=t.get("symbolOffset"),l=G(i),u=G(r),h=G(a),c=G(s),p=l||u||h||c,d=!l&&i?i:t.defaultSymbol,f=u?null:r,g=h?null:a,y=c?null:s;if(n.setVisual({legendSymbol:t.legendSymbol||d,symbol:d,symbolSize:f,symbolKeepAspect:o,symbolRotate:g,symbolOffset:y}),!e.isSeriesFiltered(t))return{dataEach:p?function(e,n){var o=t.getRawValue(n),p=t.getDataParams(n);l&&e.setItemVisual(n,"symbol",i(o,p)),u&&e.setItemVisual(n,"symbolSize",r(o,p)),h&&e.setItemVisual(n,"symbolRotate",a(o,p)),c&&e.setItemVisual(n,"symbolOffset",s(o,p))}:null}}}};function gg(t,e,n){switch(n){case"color":return t.getItemVisual(e,"style")[t.getVisual("drawType")];case"opacity":return t.getItemVisual(e,"style").opacity;case"symbol":case"symbolSize":case"liftZ":return t.getItemVisual(e,n);default:0}}function yg(t,e){switch(e){case"color":return t.getVisual("style")[t.getVisual("drawType")];case"opacity":return t.getVisual("style").opacity;case"symbol":case"symbolSize":case"liftZ":return t.getVisual(e);default:0}}function vg(t,e,n,i){switch(n){case"color":t.ensureUniqueItemVisual(e,"style")[t.getVisual("drawType")]=i,t.setItemVisual(e,"colorFromPalette",!1);break;case"opacity":t.ensureUniqueItemVisual(e,"style").opacity=i;break;case"symbol":case"symbolSize":case"liftZ":t.setItemVisual(e,n,i);break;default:0}}var mg=2*Math.PI,_g=Aa.CMD,xg=["top","right","bottom","left"];function bg(t,e,n,i,r){var o=n.width,a=n.height;switch(t){case"top":i.set(n.x+o/2,n.y-e),r.set(0,-1);break;case"bottom":i.set(n.x+o/2,n.y+a+e),r.set(0,1);break;case"left":i.set(n.x-e,n.y+a/2),r.set(-1,0);break;case"right":i.set(n.x+o+e,n.y+a/2),r.set(1,0)}}function wg(t,e,n,i,r,o,a,s,l){a-=t,s-=e;var u=Math.sqrt(a*a+s*s),h=(a/=u)*n+t,c=(s/=u)*n+e;if(Math.abs(i-r)%mg<1e-4)return l[0]=h,l[1]=c,u-n;if(o){var p=i;i=Oa(r),r=Oa(p)}else i=Oa(i),r=Oa(r);i>r&&(r+=mg);var d=Math.atan2(s,a);if(d<0&&(d+=mg),d>=i&&d<=r||d+mg>=i&&d+mg<=r)return l[0]=h,l[1]=c,u-n;var f=n*Math.cos(i)+t,g=n*Math.sin(i)+e,y=n*Math.cos(r)+t,v=n*Math.sin(r)+e,m=(f-a)*(f-a)+(g-s)*(g-s),_=(y-a)*(y-a)+(v-s)*(v-s);return m<_?(l[0]=f,l[1]=g,Math.sqrt(m)):(l[0]=y,l[1]=v,Math.sqrt(_))}function Sg(t,e,n,i,r,o,a,s){var l=r-t,u=o-e,h=n-t,c=i-e,p=Math.sqrt(h*h+c*c),d=(l*(h/=p)+u*(c/=p))/p;s&&(d=Math.min(Math.max(d,0),1)),d*=p;var f=a[0]=t+d*h,g=a[1]=e+d*c;return Math.sqrt((f-r)*(f-r)+(g-o)*(g-o))}function Mg(t,e,n,i,r,o,a){n<0&&(t+=n,n=-n),i<0&&(e+=i,i=-i);var s=t+n,l=e+i,u=a[0]=Math.min(Math.max(r,t),s),h=a[1]=Math.min(Math.max(o,e),l);return Math.sqrt((u-r)*(u-r)+(h-o)*(h-o))}var Ig=[];function Tg(t,e,n){var i=Mg(e.x,e.y,e.width,e.height,t.x,t.y,Ig);return n.set(Ig[0],Ig[1]),i}function Cg(t,e,n){for(var i,r,o=0,a=0,s=0,l=0,u=1/0,h=e.data,c=t.x,p=t.y,d=0;d<h.length;){var f=h[d++];1===d&&(s=o=h[d],l=a=h[d+1]);var g=u;switch(f){case _g.M:o=s=h[d++],a=l=h[d++];break;case _g.L:g=Sg(o,a,h[d],h[d+1],c,p,Ig,!0),o=h[d++],a=h[d++];break;case _g.C:g=Fo(o,a,h[d++],h[d++],h[d++],h[d++],h[d],h[d+1],c,p,Ig),o=h[d++],a=h[d++];break;case _g.Q:g=Xo(o,a,h[d++],h[d++],h[d],h[d+1],c,p,Ig),o=h[d++],a=h[d++];break;case _g.A:var y=h[d++],v=h[d++],m=h[d++],_=h[d++],x=h[d++],b=h[d++];d+=1;var w=!!(1-h[d++]);i=Math.cos(x)*m+y,r=Math.sin(x)*_+v,d<=1&&(s=i,l=r),g=wg(y,v,_,x,x+b,w,(c-y)*_/m+y,p,Ig),o=Math.cos(x+b)*m+y,a=Math.sin(x+b)*_+v;break;case _g.R:g=Mg(s=o=h[d++],l=a=h[d++],h[d++],h[d++],c,p,Ig);break;case _g.Z:g=Sg(o,a,s,l,c,p,Ig,!0),o=s,a=l}g<u&&(u=g,n.set(Ig[0],Ig[1]))}return u}var Ag=new In,Dg=new In,Lg=new In,kg=new In,Pg=new In;function Og(t,e){if(t){var n=t.getTextGuideLine(),i=t.getTextContent();if(i&&n){var r=t.textGuideLineConfig||{},o=[[0,0],[0,0],[0,0]],a=r.candidates||xg,s=i.getBoundingRect().clone();s.applyTransform(i.getComputedTransform());var l=1/0,u=r.anchor,h=t.getComputedTransform(),c=h&&be([],h),p=e.get("length2")||0;u&&Lg.copy(u);for(var d=0;d<a.length;d++){bg(a[d],0,s,Ag,kg),In.scaleAndAdd(Dg,Ag,kg,p),Dg.transform(c);var f=t.getBoundingRect(),g=u?u.distance(Dg):t instanceof ja?Cg(Dg,t.path,Lg):Tg(Dg,f,Lg);g<l&&(l=g,Dg.transform(h),Lg.transform(h),Lg.toArray(o[0]),Dg.toArray(o[1]),Ag.toArray(o[2]))}Eg(o,e.get("minTurnAngle")),n.setShape({points:o})}}}var Rg=[],Ng=new In;function Eg(t,e){if(e<=180&&e>0){e=e/180*Math.PI,Ag.fromArray(t[0]),Dg.fromArray(t[1]),Lg.fromArray(t[2]),In.sub(kg,Ag,Dg),In.sub(Pg,Lg,Dg);var n=kg.len(),i=Pg.len();if(!(n<.001||i<.001)){kg.scale(1/n),Pg.scale(1/i);var r=kg.dot(Pg);if(Math.cos(e)<r){var o=Sg(Dg.x,Dg.y,Lg.x,Lg.y,Ag.x,Ag.y,Rg,!1);Ng.fromArray(Rg),Ng.scaleAndAdd(Pg,o/Math.tan(Math.PI-e));var a=Lg.x!==Dg.x?(Ng.x-Dg.x)/(Lg.x-Dg.x):(Ng.y-Dg.y)/(Lg.y-Dg.y);if(isNaN(a))return;a<0?In.copy(Ng,Dg):a>1&&In.copy(Ng,Lg),Ng.toArray(t[1])}}}}function zg(t,e,n){if(n<=180&&n>0){n=n/180*Math.PI,Ag.fromArray(t[0]),Dg.fromArray(t[1]),Lg.fromArray(t[2]),In.sub(kg,Dg,Ag),In.sub(Pg,Lg,Dg);var i=kg.len(),r=Pg.len();if(!(i<.001||r<.001))if(kg.scale(1/i),Pg.scale(1/r),kg.dot(e)<Math.cos(n)){var o=Sg(Dg.x,Dg.y,Lg.x,Lg.y,Ag.x,Ag.y,Rg,!1);Ng.fromArray(Rg);var a=Math.PI/2,s=a+Math.acos(Pg.dot(e))-n;if(s>=a)In.copy(Ng,Lg);else{Ng.scaleAndAdd(Pg,o/Math.tan(Math.PI/2-s));var l=Lg.x!==Dg.x?(Ng.x-Dg.x)/(Lg.x-Dg.x):(Ng.y-Dg.y)/(Lg.y-Dg.y);if(isNaN(l))return;l<0?In.copy(Ng,Dg):l>1&&In.copy(Ng,Lg)}Ng.toArray(t[1])}}}function Bg(t,e,n,i){var r="normal"===n,o=r?t:t.ensureState(n);o.ignore=e;var a=i.get("smooth");a&&!0===a&&(a=.3),o.shape=o.shape||{},a>0&&(o.shape.smooth=a);var s=i.getModel("lineStyle").getLineStyle();r?t.useStyle(s):o.style=s}function Vg(t,e){var n=e.smooth,i=e.points;if(i)if(t.moveTo(i[0][0],i[0][1]),n>0&&i.length>=3){var r=Lt(i[0],i[1]),o=Lt(i[1],i[2]);if(!r||!o)return t.lineTo(i[1][0],i[1][1]),void t.lineTo(i[2][0],i[2][1]);var a=Math.min(r,o)*n,s=Ot([],i[1],i[0],a/r),l=Ot([],i[1],i[2],a/o),u=Ot([],s,l,.5);t.bezierCurveTo(s[0],s[1],s[0],s[1],u[0],u[1]),t.bezierCurveTo(l[0],l[1],l[0],l[1],i[2][0],i[2][1])}else for(var h=1;h<i.length;h++)t.lineTo(i[h][0],i[h][1])}function Fg(t,e,n){var i=t.getTextGuideLine(),r=t.getTextContent();if(r){for(var o=e.normal,a=o.get("show"),s=r.ignore,l=0;l<ws.length;l++){var u=ws[l],h=e[u],c="normal"===u;if(h){var p=h.get("show");if((c?s:tt(r.states[u]&&r.states[u].ignore,s))||!tt(p,a)){var d=c?i:i&&i.states.normal;d&&(d.ignore=!0);continue}i||(i=new ru,t.setTextGuideLine(i),c||!s&&a||Bg(i,!0,"normal",e.normal),t.stateProxy&&(i.stateProxy=t.stateProxy)),Bg(i,!1,u,h)}}if(i){T(i.style,n),i.style.fill=null;var f=o.get("showAbove");(t.textGuideLineConfig=t.textGuideLineConfig||{}).showAbove=f||!1,i.buildPath=Vg}}else i&&t.removeTextGuideLine()}function Gg(t,e){e=e||"labelLine";for(var n={normal:t.getModel(e)},i=0;i<bs.length;i++){var r=bs[i];n[r]=t.getModel([r,e])}return n}function Hg(t,e,n,i,r,o){var a=t.length;if(!(a<2)){t.sort((function(t,n){return t.rect[e]-n.rect[e]}));for(var s,l=0,u=!1,h=0,c=0;c<a;c++){var p=t[c],d=p.rect;(s=d[e]-l)<0&&(d[e]-=s,p.label[e]-=s,u=!0),h+=Math.max(-s,0),l=d[e]+d[n]}h>0&&o&&x(-h/a,0,a);var f,g,y=t[0],v=t[a-1];return m(),f<0&&b(-f,.8),g<0&&b(g,.8),m(),_(f,g,1),_(g,f,-1),m(),f<0&&w(-f),g<0&&w(g),u}function m(){f=y.rect[e]-i,g=r-v.rect[e]-v.rect[n]}function _(t,e,n){if(t<0){var i=Math.min(e,-t);if(i>0){x(i*n,0,a);var r=i+t;r<0&&b(-r*n,1)}else b(-t*n,1)}}function x(n,i,r){0!==n&&(u=!0);for(var o=i;o<r;o++){var a=t[o];a.rect[e]+=n,a.label[e]+=n}}function b(i,r){for(var o=[],s=0,l=1;l<a;l++){var u=t[l-1].rect,h=Math.max(t[l].rect[e]-u[e]-u[n],0);o.push(h),s+=h}if(s){var c=Math.min(Math.abs(i)/s,r);if(i>0)for(l=0;l<a-1;l++){x(o[l]*c,0,l+1)}else for(l=a-1;l>0;l--){x(-(o[l-1]*c),l,a)}}}function w(t){var e=t<0?-1:1;t=Math.abs(t);for(var n=Math.ceil(t/(a-1)),i=0;i<a-1;i++)if(e>0?x(n,0,i+1):x(-n,a-i-1,a),(t-=n)<=0)return}}function Wg(t,e,n,i){return Hg(t,"y","height",e,n,i)}function Ug(t){if(t){for(var e=[],n=0;n<t.length;n++)e.push(t[n].slice());return e}}function Yg(t,e){var n=t.label,i=e&&e.getTextGuideLine();return{dataIndex:t.dataIndex,dataType:t.dataType,seriesIndex:t.seriesModel.seriesIndex,text:t.label.style.text,rect:t.hostRect,labelRect:t.rect,align:n.style.align,verticalAlign:n.style.verticalAlign,labelLinePoints:Ug(i&&i.shape.points)}}var Xg=["align","verticalAlign","width","height","fontSize"],Zg=new ke,jg=Lr(),qg=Lr();function Kg(t,e,n){for(var i=0;i<n.length;i++){var r=n[i];null!=e[r]&&(t[r]=e[r])}}var $g=["x","y","rotation"],Jg=function(){function t(){this._labelList=[],this._chartViewList=[]}return t.prototype.clearLabels=function(){this._labelList=[],this._chartViewList=[]},t.prototype._addLabel=function(t,e,n,i,r){var o=i.style,a=i.__hostTarget.textConfig||{},s=i.getComputedTransform(),l=i.getBoundingRect().plain();Rn.applyTransform(l,l,s),s?Zg.setLocalTransform(s):(Zg.x=Zg.y=Zg.rotation=Zg.originX=Zg.originY=0,Zg.scaleX=Zg.scaleY=1);var u,h=i.__hostTarget;if(h){u=h.getBoundingRect().plain();var c=h.getComputedTransform();Rn.applyTransform(u,u,c)}var p=u&&h.getTextGuideLine();this._labelList.push({label:i,labelLine:p,seriesModel:n,dataIndex:t,dataType:e,layoutOption:r,computedLayoutOption:null,rect:l,hostRect:u,priority:u?u.width*u.height:0,defaultAttr:{ignore:i.ignore,labelGuideIgnore:p&&p.ignore,x:Zg.x,y:Zg.y,scaleX:Zg.scaleX,scaleY:Zg.scaleY,rotation:Zg.rotation,style:{x:o.x,y:o.y,align:o.align,verticalAlign:o.verticalAlign,width:o.width,height:o.height,fontSize:o.fontSize},cursor:i.cursor,attachedPos:a.position,attachedRot:a.rotation}})},t.prototype.addLabelsOfSeries=function(t){var e=this;this._chartViewList.push(t);var n=t.__model,i=n.get("labelLayout");(G(i)||z(i).length)&&t.group.traverse((function(t){if(t.ignore)return!0;var r=t.getTextContent(),o=vs(t);r&&!r.disableLabelLayout&&e._addLabel(o.dataIndex,o.dataType,n,r,i)}))},t.prototype.updateLayoutConfig=function(t){var e=t.getWidth(),n=t.getHeight();function i(t,e){return function(){Og(t,e)}}for(var r=0;r<this._labelList.length;r++){var o=this._labelList[r],a=o.label,s=a.__hostTarget,l=o.defaultAttr,u=void 0;u=(u="function"==typeof o.layoutOption?o.layoutOption(Yg(o,s)):o.layoutOption)||{},o.computedLayoutOption=u;var h=Math.PI/180;s&&s.setTextConfig({local:!1,position:null!=u.x||null!=u.y?null:l.attachedPos,rotation:null!=u.rotate?u.rotate*h:l.attachedRot,offset:[u.dx||0,u.dy||0]});var c=!1;if(null!=u.x?(a.x=Zi(u.x,e),a.setStyle("x",0),c=!0):(a.x=l.x,a.setStyle("x",l.style.x)),null!=u.y?(a.y=Zi(u.y,n),a.setStyle("y",0),c=!0):(a.y=l.y,a.setStyle("y",l.style.y)),u.labelLinePoints){var p=s.getTextGuideLine();p&&(p.setShape({points:u.labelLinePoints}),c=!1)}jg(a).needsUpdateLabelLine=c,a.rotation=null!=u.rotate?u.rotate*h:l.rotation,a.scaleX=l.scaleX,a.scaleY=l.scaleY;for(var d=0;d<Xg.length;d++){var f=Xg[d];a.setStyle(f,null!=u[f]?u[f]:l.style[f])}if(u.draggable){if(a.draggable=!0,a.cursor="move",s){var g=o.seriesModel;if(null!=o.dataIndex)g=o.seriesModel.getData(o.dataType).getItemModel(o.dataIndex);a.on("drag",i(s,g.getModel("labelLine")))}}else a.off("drag"),a.cursor=l.cursor}},t.prototype.layout=function(t){var e,n=t.getWidth(),i=t.getHeight(),r=function(t){for(var e=[],n=0;n<t.length;n++){var i=t[n];if(!i.defaultAttr.ignore){var r=i.label,o=r.getComputedTransform(),a=r.getBoundingRect(),s=!o||o[1]<1e-5&&o[2]<1e-5,l=r.style.margin||0,u=a.clone();u.applyTransform(o),u.x-=l/2,u.y-=l/2,u.width+=l,u.height+=l;var h=s?new wu(a,o):null;e.push({label:r,labelLine:i.labelLine,rect:u,localRect:a,obb:h,priority:i.priority,defaultAttr:i.defaultAttr,layoutOption:i.computedLayoutOption,axisAligned:s,transform:o})}}return e}(this._labelList),o=N(r,(function(t){return"shiftX"===t.layoutOption.moveOverlap})),a=N(r,(function(t){return"shiftY"===t.layoutOption.moveOverlap}));Hg(o,"x","width",0,n,e),Wg(a,0,i),function(t){var e=[];t.sort((function(t,e){return e.priority-t.priority}));var n=new Rn(0,0,0,0);function i(t){if(!t.ignore){var e=t.ensureState("emphasis");null==e.ignore&&(e.ignore=!1)}t.ignore=!0}for(var r=0;r<t.length;r++){var o=t[r],a=o.axisAligned,s=o.localRect,l=o.transform,u=o.label,h=o.labelLine;n.copy(o.rect),n.width-=.1,n.height-=.1,n.x+=.05,n.y+=.05;for(var c=o.obb,p=!1,d=0;d<e.length;d++){var f=e[d];if(n.intersect(f.rect)){if(a&&f.axisAligned){p=!0;break}if(f.obb||(f.obb=new wu(f.localRect,f.transform)),c||(c=new wu(s,l)),c.intersect(f.obb)){p=!0;break}}}p?(i(u),h&&i(h)):(u.attr("ignore",o.defaultAttr.ignore),h&&h.attr("ignore",o.defaultAttr.labelGuideIgnore),e.push(o))}}(N(r,(function(t){return t.layoutOption.hideOverlap})))},t.prototype.processLabelsOverall=function(){var t=this;P(this._chartViewList,(function(e){var n=e.__model,i=e.ignoreLabelLineUpdate,r=n.isAnimationEnabled();e.group.traverse((function(e){if(e.ignore)return!0;var o=!i,a=e.getTextContent();!o&&a&&(o=jg(a).needsUpdateLabelLine),o&&t._updateLabelLine(e,n),r&&t._animateLabels(e,n)}))}))},t.prototype._updateLabelLine=function(t,e){var n=t.getTextContent(),i=vs(t),r=i.dataIndex;if(n&&null!=r){var o=e.getData(i.dataType),a=o.getItemModel(r),s={},l=o.getItemVisual(r,"style"),u=o.getVisual("drawType");s.stroke=l[u];var h=a.getModel("labelLine");Fg(t,Gg(a),s),Og(t,h)}},t.prototype._animateLabels=function(t,e){var n=t.getTextContent(),i=t.getTextGuideLine();if(n&&!n.ignore&&!n.invisible&&!t.disableLabelAnimation&&!Yu(t)){var r=(d=jg(n)).oldLayout,o=vs(t),a=o.dataIndex,s={x:n.x,y:n.y,rotation:n.rotation},l=e.getData(o.dataType);if(r){n.attr(r);var u=t.prevStates;u&&(A(u,"select")>=0&&n.attr(d.oldLayoutSelect),A(u,"emphasis")>=0&&n.attr(d.oldLayoutEmphasis)),Fu(n,s,e,a)}else if(n.attr(s),!vh(n).valueAnimation){var h=tt(n.style.opacity,1);n.style.opacity=0,Gu(n,{style:{opacity:h}},e,a)}if(d.oldLayout=s,n.states.select){var c=d.oldLayoutSelect={};Kg(c,s,$g),Kg(c,n.states.select,$g)}if(n.states.emphasis){var p=d.oldLayoutEmphasis={};Kg(p,s,$g),Kg(p,n.states.emphasis,$g)}_h(n,a,l,e,e)}if(i&&!i.ignore&&!i.invisible){r=(d=qg(i)).oldLayout;var d,f={points:i.shape.points};r?(i.attr({shape:r}),Fu(i,{shape:f},e)):(i.setShape(f),i.style.strokePercent=0,Gu(i,{style:{strokePercent:1}},e)),d.oldLayout=f}},t}();function Qg(t,e){function n(e,n){var i=[];return e.eachComponent({mainType:"series",subType:t,query:n},(function(t){i.push(t.seriesIndex)})),i}P([[t+"ToggleSelect","toggleSelect"],[t+"Select","select"],[t+"UnSelect","unselect"]],(function(t){e(t[0],(function(e,i,r){e=I({},e),r.dispatchAction(I(e,{type:t[1],seriesIndex:n(i,e)}))}))}))}function ty(t,e,n,i,r){var o=t+e;n.isSilent(o)||i.eachComponent({mainType:"series",subType:"pie"},(function(t){for(var e=t.seriesIndex,i=r.selected,a=0;a<i.length;a++)if(i[a].seriesIndex===e){var s=t.getData(),l=Dr(s,r.fromActionPayload);n.trigger(o,{type:o,seriesId:t.id,name:F(l)?s.getName(l[0]):s.getName(l),selected:I({},t.option.selectedMap)})}}))}function ey(t,e,n){for(var i;t&&(!e(t)||(i=t,!n));)t=t.__hostTarget||t.parent;return i}var ny=Math.round(9*Math.random()),iy=function(){function t(){this._id="__ec_inner_"+ny++}return t.prototype.get=function(t){return this._guard(t)[this._id]},t.prototype.set=function(t,e){var n=this._guard(t);return"function"==typeof Object.defineProperty?Object.defineProperty(n,this._id,{value:e,enumerable:!1,configurable:!0}):n[this._id]=e,this},t.prototype.delete=function(t){return!!this.has(t)&&(delete this._guard(t)[this._id],!0)},t.prototype.has=function(t){return!!this._guard(t)[this._id]},t.prototype._guard=function(t){if(t!==Object(t))throw TypeError("Value of WeakMap is not a non-null object.");return t},t}(),ry=ja.extend({type:"triangle",shape:{cx:0,cy:0,width:0,height:0},buildPath:function(t,e){var n=e.cx,i=e.cy,r=e.width/2,o=e.height/2;t.moveTo(n,i-o),t.lineTo(n+r,i+o),t.lineTo(n-r,i+o),t.closePath()}}),oy=ja.extend({type:"diamond",shape:{cx:0,cy:0,width:0,height:0},buildPath:function(t,e){var n=e.cx,i=e.cy,r=e.width/2,o=e.height/2;t.moveTo(n,i-o),t.lineTo(n+r,i),t.lineTo(n,i+o),t.lineTo(n-r,i),t.closePath()}}),ay=ja.extend({type:"pin",shape:{x:0,y:0,width:0,height:0},buildPath:function(t,e){var n=e.x,i=e.y,r=e.width/5*3,o=Math.max(r,e.height),a=r/2,s=a*a/(o-a),l=i-o+a+s,u=Math.asin(s/a),h=Math.cos(u)*a,c=Math.sin(u),p=Math.cos(u),d=.6*a,f=.7*a;t.moveTo(n-h,l+s),t.arc(n,l,a,Math.PI-u,2*Math.PI+u),t.bezierCurveTo(n+h-c*d,l+s+p*d,n,i-f,n,i),t.bezierCurveTo(n,i-f,n-h+c*d,l+s+p*d,n-h,l+s),t.closePath()}}),sy=ja.extend({type:"arrow",shape:{x:0,y:0,width:0,height:0},buildPath:function(t,e){var n=e.height,i=e.width,r=e.x,o=e.y,a=i/3*2;t.moveTo(r,o),t.lineTo(r+a,o+n),t.lineTo(r,o+n/4*3),t.lineTo(r-a,o+n),t.lineTo(r,o),t.closePath()}}),ly={line:function(t,e,n,i,r){r.x1=t,r.y1=e+i/2,r.x2=t+n,r.y2=e+i/2},rect:function(t,e,n,i,r){r.x=t,r.y=e,r.width=n,r.height=i},roundRect:function(t,e,n,i,r){r.x=t,r.y=e,r.width=n,r.height=i,r.r=Math.min(n,i)/4},square:function(t,e,n,i,r){var o=Math.min(n,i);r.x=t,r.y=e,r.width=o,r.height=o},circle:function(t,e,n,i,r){r.cx=t+n/2,r.cy=e+i/2,r.r=Math.min(n,i)/2},diamond:function(t,e,n,i,r){r.cx=t+n/2,r.cy=e+i/2,r.width=n,r.height=i},pin:function(t,e,n,i,r){r.x=t+n/2,r.y=e+i/2,r.width=n,r.height=i},arrow:function(t,e,n,i,r){r.x=t+n/2,r.y=e+i/2,r.width=n,r.height=i},triangle:function(t,e,n,i,r){r.cx=t+n/2,r.cy=e+i/2,r.width=n,r.height=i}},uy={};P({line:su,rect:as,roundRect:as,square:as,circle:Ol,diamond:oy,pin:ay,arrow:sy,triangle:ry},(function(t,e){uy[e]=new t}));var hy=ja.extend({type:"symbol",shape:{symbolType:"",x:0,y:0,width:0,height:0},calculateTextPosition:function(t,e,n){var i=Yn(t,e,n),r=this.shape;return r&&"pin"===r.symbolType&&"inside"===e.position&&(i.y=n.y+.4*n.height),i},buildPath:function(t,e,n){var i=e.symbolType;if("none"!==i){var r=uy[i];r||(r=uy[i="rect"]),ly[i](e.x,e.y,e.width,e.height,r.shape),r.buildPath(t,r.shape,n)}}});function cy(t,e){if("image"!==this.type){var n=this.style;this.__isEmptyBrush?(n.stroke=t,n.fill=e||"#ffffff",n.lineWidth=2):"line"===this.shape.symbolType?n.stroke=t:n.fill=t,this.markRedraw()}}function py(t,e,n,i,r,o,a){var s,l=0===t.indexOf("empty");return l&&(t=t.substr(5,1).toLowerCase()+t.substr(6)),(s=0===t.indexOf("image://")?Ru(t.slice(8),new Rn(e,n,i,r),a?"center":"cover"):0===t.indexOf("path://")?Ou(t.slice(7),{},new Rn(e,n,i,r),a?"center":"cover"):new hy({shape:{symbolType:t,x:e,y:n,width:i,height:r}})).__isEmptyBrush=l,s.setColor=cy,o&&s.setColor(o),s}function dy(t,e,n){for(var i="radial"===e.type?function(t,e,n){var i=n.width,r=n.height,o=Math.min(i,r),a=null==e.x?.5:e.x,s=null==e.y?.5:e.y,l=null==e.r?.5:e.r;return e.global||(a=a*i+n.x,s=s*r+n.y,l*=o),t.createRadialGradient(a,s,0,a,s,l)}(t,e,n):function(t,e,n){var i=null==e.x?0:e.x,r=null==e.x2?1:e.x2,o=null==e.y?0:e.y,a=null==e.y2?0:e.y2;return e.global||(i=i*n.width+n.x,r=r*n.width+n.x,o=o*n.height+n.y,a=a*n.height+n.y),i=isNaN(i)?0:i,r=isNaN(r)?1:r,o=isNaN(o)?0:o,a=isNaN(a)?0:a,t.createLinearGradient(i,o,r,a)}(t,e,n),r=e.colorStops,o=0;o<r.length;o++)i.addColorStop(r[o].offset,r[o].color);return i}function fy(t,e){if(t===e||!t&&!e)return!1;if(!t||!e||t.length!==e.length)return!0;for(var n=0;n<t.length;n++)if(t[n]!==e[n])return!0;return!1}function gy(t,e){return t&&"solid"!==t&&e>0?(e=e||1,"dashed"===t?[4*e,2*e]:"dotted"===t?[e]:U(t)?[t]:F(t)?t:null):null}var yy=new Aa(!0);function vy(t){var e=t.stroke;return!(null==e||"none"===e||!(t.lineWidth>0))}function my(t){var e=t.fill;return null!=e&&"none"!==e}function _y(t,e){if(null!=e.fillOpacity&&1!==e.fillOpacity){var n=t.globalAlpha;t.globalAlpha=e.fillOpacity*e.opacity,t.fill(),t.globalAlpha=n}else t.fill()}function xy(t,e){if(null!=e.strokeOpacity&&1!==e.strokeOpacity){var n=t.globalAlpha;t.globalAlpha=e.strokeOpacity*e.opacity,t.stroke(),t.globalAlpha=n}else t.stroke()}function by(t,e,n){var i=eo(e.image,e.__image,n);if(io(i)){var r=t.createPattern(i,e.repeat||"repeat");if("function"==typeof DOMMatrix&&r.setTransform){var o=new DOMMatrix;o.rotateSelf(0,0,(e.rotation||0)/Math.PI*180),o.scaleSelf(e.scaleX||1,e.scaleY||1),o.translateSelf(e.x||0,e.y||0),r.setTransform(o)}return r}}var wy=["shadowBlur","shadowOffsetX","shadowOffsetY"],Sy=[["lineCap","butt"],["lineJoin","miter"],["miterLimit",10]];function My(t,e,n,i,r){var o=!1;if(!i&&e===(n=n||{}))return!1;if(i||e.opacity!==n.opacity){o||(Cy(t,r),o=!0);var a=Math.max(Math.min(e.opacity,1),0);t.globalAlpha=isNaN(a)?mo.opacity:a}(i||e.blend!==n.blend)&&(o||(Cy(t,r),o=!0),t.globalCompositeOperation=e.blend||mo.blend);for(var s=0;s<wy.length;s++){var l=wy[s];(i||e[l]!==n[l])&&(o||(Cy(t,r),o=!0),t[l]=t.dpr*(e[l]||0))}return(i||e.shadowColor!==n.shadowColor)&&(o||(Cy(t,r),o=!0),t.shadowColor=e.shadowColor||mo.shadowColor),o}function Iy(t,e,n,i,r){var o=Ay(e,r.inHover),a=i?null:n&&Ay(n,r.inHover)||{};if(o===a)return!1;var s=My(t,o,a,i,r);if((i||o.fill!==a.fill)&&(s||(Cy(t,r),s=!0),t.fillStyle=o.fill),(i||o.stroke!==a.stroke)&&(s||(Cy(t,r),s=!0),t.strokeStyle=o.stroke),(i||o.opacity!==a.opacity)&&(s||(Cy(t,r),s=!0),t.globalAlpha=null==o.opacity?1:o.opacity),e.hasStroke()){var l=o.lineWidth/(o.strokeNoScale&&e&&e.getLineScale?e.getLineScale():1);t.lineWidth!==l&&(s||(Cy(t,r),s=!0),t.lineWidth=l)}for(var u=0;u<Sy.length;u++){var h=Sy[u],c=h[0];(i||o[c]!==a[c])&&(s||(Cy(t,r),s=!0),t[c]=o[c]||h[1])}return s}function Ty(t,e){var n=e.transform,i=t.dpr||1;n?t.setTransform(i*n[0],i*n[1],i*n[2],i*n[3],i*n[4],i*n[5]):t.setTransform(i,0,0,i,0,0)}function Cy(t,e){e.batchFill&&t.fill(),e.batchStroke&&t.stroke(),e.batchFill="",e.batchStroke=""}function Ay(t,e){return e&&t.__hoverStyle||t.style}function Dy(t,e){Ly(t,e,{inHover:!1,viewWidth:0,viewHeight:0},!0)}function Ly(t,e,n,i){var r=e.transform;if(!e.shouldBePainted(n.viewWidth,n.viewHeight,!1,!1))return e.__dirty&=~ei.REDARAW_BIT,void(e.__isRendered=!1);var o=e.__clipPaths,a=n.prevElClipPaths,s=!1,l=!1;if(a&&!fy(o,a)||(a&&a.length&&(Cy(t,n),t.restore(),l=s=!0,n.prevElClipPaths=null,n.allClipped=!1,n.prevEl=null),o&&o.length&&(Cy(t,n),t.save(),function(t,e,n){for(var i=!1,r=0;r<t.length;r++){var o=t[r];i=i||o.isZeroArea(),Ty(e,o),e.beginPath(),o.buildPath(e,o.shape),e.clip()}n.allClipped=i}(o,t,n),s=!0),n.prevElClipPaths=o),n.allClipped)e.__isRendered=!1;else{e.beforeBrush&&e.beforeBrush(),e.innerBeforeBrush();var u=n.prevEl;u||(l=s=!0);var h,c,p=e instanceof ja&&e.autoBatch&&function(t){var e=my(t),n=vy(t);return!(t.lineDash||!(+e^+n)||e&&"string"!=typeof t.fill||n&&"string"!=typeof t.stroke||t.strokePercent<1||t.strokeOpacity<1||t.fillOpacity<1)}(e.style);s||(h=r,c=u.transform,h&&c?h[0]!==c[0]||h[1]!==c[1]||h[2]!==c[2]||h[3]!==c[3]||h[4]!==c[4]||h[5]!==c[5]:h||c)?(Cy(t,n),Ty(t,e)):p||Cy(t,n);var d=Ay(e,n.inHover);e instanceof ja?(1!==n.lastDrawType&&(l=!0,n.lastDrawType=1),Iy(t,e,u,l,n),p&&(n.batchFill||n.batchStroke)||t.beginPath(),function(t,e,n,i){var r=vy(n),o=my(n),a=n.strokePercent,s=a<1,l=!e.path;e.silent&&!s||!l||e.createPathProxy();var u=e.path||yy;if(!i){var h=n.fill,c=n.stroke,p=o&&!!h.colorStops,d=r&&!!c.colorStops,f=o&&!!h.image,g=r&&!!c.image,y=void 0,v=void 0,m=void 0,_=void 0,x=void 0;(p||d)&&(x=e.getBoundingRect()),p&&(y=e.__dirty?dy(t,h,x):e.__canvasFillGradient,e.__canvasFillGradient=y),d&&(v=e.__dirty?dy(t,c,x):e.__canvasStrokeGradient,e.__canvasStrokeGradient=v),f&&(m=e.__dirty||!e.__canvasFillPattern?by(t,h,e):e.__canvasFillPattern,e.__canvasFillPattern=m),g&&(_=e.__dirty||!e.__canvasStrokePattern?by(t,c,e):e.__canvasStrokePattern,e.__canvasStrokePattern=m),p?t.fillStyle=y:f&&(m?t.fillStyle=m:o=!1),d?t.strokeStyle=v:g&&(_?t.strokeStyle=_:r=!1)}var b=n.lineDash&&n.lineWidth>0&&gy(n.lineDash,n.lineWidth),w=n.lineDashOffset,S=!!t.setLineDash,M=e.getGlobalScale();if(u.setScale(M[0],M[1],e.segmentIgnoreThreshold),b){var I=n.strokeNoScale&&e.getLineScale?e.getLineScale():1;I&&1!==I&&(b=O(b,(function(t){return t/I})),w/=I)}var T=!0;(l||e.__dirty&ja.SHAPE_CHANGED_BIT||b&&!S&&r)&&(u.setDPR(t.dpr),s?u.setContext(null):(u.setContext(t),T=!1),u.reset(),b&&!S&&(u.setLineDash(b),u.setLineDashOffset(w)),e.buildPath(u,e.shape,i),u.toStatic(),e.pathUpdated()),T&&u.rebuildPath(t,s?a:1),b&&S&&(t.setLineDash(b),t.lineDashOffset=w),i||(n.strokeFirst?(r&&xy(t,n),o&&_y(t,n)):(o&&_y(t,n),r&&xy(t,n))),b&&S&&t.setLineDash([])}(t,e,d,p),p&&(n.batchFill=d.fill||"",n.batchStroke=d.stroke||"")):e instanceof Ka?(3!==n.lastDrawType&&(l=!0,n.lastDrawType=3),Iy(t,e,u,l,n),function(t,e,n){var i=n.text;if(null!=i&&(i+=""),i){t.font=n.font||En,t.textAlign=n.textAlign,t.textBaseline=n.textBaseline;var r=void 0;if(t.setLineDash){var o=n.lineDash&&n.lineWidth>0&&gy(n.lineDash,n.lineWidth),a=n.lineDashOffset;if(o){var s=n.strokeNoScale&&e.getLineScale?e.getLineScale():1;s&&1!==s&&(o=O(o,(function(t){return t/s})),a/=s),t.setLineDash(o),t.lineDashOffset=a,r=!0}}n.strokeFirst?(vy(n)&&t.strokeText(i,n.x,n.y),my(n)&&t.fillText(i,n.x,n.y)):(my(n)&&t.fillText(i,n.x,n.y),vy(n)&&t.strokeText(i,n.x,n.y)),r&&t.setLineDash([])}}(t,e,d)):e instanceof Qa?(2!==n.lastDrawType&&(l=!0,n.lastDrawType=2),function(t,e,n,i,r){My(t,Ay(e,r.inHover),n&&Ay(n,r.inHover),i,r)}(t,e,u,l,n),function(t,e,n){var i=e.__image=eo(n.image,e.__image,e,e.onload);if(i&&io(i)){var r=n.x||0,o=n.y||0,a=e.getWidth(),s=e.getHeight(),l=i.width/i.height;if(null==a&&null!=s?a=s*l:null==s&&null!=a?s=a/l:null==a&&null==s&&(a=i.width,s=i.height),n.sWidth&&n.sHeight){var u=n.sx||0,h=n.sy||0;t.drawImage(i,u,h,n.sWidth,n.sHeight,r,o,a,s)}else if(n.sx&&n.sy){var c=a-(u=n.sx),p=s-(h=n.sy);t.drawImage(i,u,h,c,p,r,o,a,s)}else t.drawImage(i,r,o,a,s)}}(t,e,d)):e instanceof Mu&&(4!==n.lastDrawType&&(l=!0,n.lastDrawType=4),function(t,e,n){var i=e.getDisplayables(),r=e.getTemporalDisplayables();t.save();var o,a,s={prevElClipPaths:null,prevEl:null,allClipped:!1,viewWidth:n.viewWidth,viewHeight:n.viewHeight,inHover:n.inHover};for(o=e.getCursor(),a=i.length;o<a;o++){(h=i[o]).beforeBrush&&h.beforeBrush(),h.innerBeforeBrush(),Ly(t,h,s,o===a-1),h.innerAfterBrush(),h.afterBrush&&h.afterBrush(),s.prevEl=h}for(var l=0,u=r.length;l<u;l++){var h;(h=r[l]).beforeBrush&&h.beforeBrush(),h.innerBeforeBrush(),Ly(t,h,s,l===u-1),h.innerAfterBrush(),h.afterBrush&&h.afterBrush(),s.prevEl=h}e.clearTemporalDisplayables(),e.notClear=!0,t.restore()}(t,e,n)),p&&i&&Cy(t,n),e.innerAfterBrush(),e.afterBrush&&e.afterBrush(),n.prevEl=e,e.__dirty=0,e.__isRendered=!0}}var ky,Py=new iy,Oy=new Ee(100),Ry=["symbol","symbolSize","symbolKeepAspect","color","backgroundColor","dashArrayX","dashArrayY","maxTileWidth","maxTileHeight"];function Ny(t,e){if("none"===t)return null;var n=e.getDevicePixelRatio(),i=e.getZr(),r="svg"===i.painter.type;t.dirty&&Py.delete(t);var o=Py.get(t);if(o)return o;var a=T(t,{symbol:"rect",symbolSize:1,symbolKeepAspect:!0,color:"rgba(0, 0, 0, 0.2)",backgroundColor:null,dashArrayX:5,dashArrayY:5,rotation:0,maxTileWidth:512,maxTileHeight:512});"none"===a.backgroundColor&&(a.backgroundColor=null);var s={repeat:"repeat"};return function(t){for(var e,o=[n],s=!0,l=0;l<Ry.length;++l){var u=a[Ry[l]],h=typeof u;if(null!=u&&!F(u)&&"string"!==h&&"number"!==h&&"boolean"!==h){s=!1;break}o.push(u)}if(s){e=o.join(",")+(r?"-svg":"");var c=Oy.get(e);c&&(r?t.svgElement=c:t.image=c)}var p,d=zy(a.dashArrayX),f=function(t){if(!t||"object"==typeof t&&0===t.length)return[0,0];if("number"==typeof t){var e=Math.ceil(t);return[e,e]}var n=O(t,(function(t){return Math.ceil(t)}));return t.length%2?n.concat(n):n}(a.dashArrayY),g=Ey(a.symbol),y=(b=d,O(b,(function(t){return By(t)}))),v=By(f),m=!r&&C(),_=r&&i.painter.createSVGElement("g"),x=function(){for(var t=1,e=0,n=y.length;e<n;++e)t=fr(t,y[e]);var i=1;for(e=0,n=g.length;e<n;++e)i=fr(i,g[e].length);t*=i;var r=v*y.length*g.length;return{width:Math.max(1,Math.min(t,a.maxTileWidth)),height:Math.max(1,Math.min(r,a.maxTileHeight))}}();var b;m&&(m.width=x.width*n,m.height=x.height*n,p=m.getContext("2d"));(function(){p&&(p.clearRect(0,0,m.width,m.height),a.backgroundColor&&(p.fillStyle=a.backgroundColor,p.fillRect(0,0,m.width,m.height)));for(var t=0,e=0;e<f.length;++e)t+=f[e];if(t<=0)return;var o=-v,s=0,l=0,u=0;for(;o<x.height;){if(s%2==0){for(var h=l/2%g.length,c=0,y=0,b=0;c<2*x.width;){var w=0;for(e=0;e<d[u].length;++e)w+=d[u][e];if(w<=0)break;if(y%2==0){var S=.5*(1-a.symbolSize),M=c+d[u][y]*S,I=o+f[s]*S,T=d[u][y]*a.symbolSize,C=f[s]*a.symbolSize,A=b/2%g[h].length;D(M,I,T,C,g[h][A])}c+=d[u][y],++b,++y===d[u].length&&(y=0)}++u===d.length&&(u=0)}o+=f[s],++l,++s===f.length&&(s=0)}function D(t,e,o,s,l){var u=r?1:n,h=py(l,t*u,e*u,o*u,s*u,a.color,a.symbolKeepAspect);r?_.appendChild(i.painter.paintOne(h)):Dy(p,h)}})(),s&&Oy.put(e,m||_);t.image=m,t.svgElement=_,t.svgWidth=x.width,t.svgHeight=x.height}(s),s.rotation=a.rotation,s.scaleX=s.scaleY=r?1:1/n,Py.set(t,s),t.dirty=!1,s}function Ey(t){if(!t||0===t.length)return[["rect"]];if("string"==typeof t)return[[t]];for(var e=!0,n=0;n<t.length;++n)if("string"!=typeof t[n]){e=!1;break}if(e)return Ey([t]);var i=[];for(n=0;n<t.length;++n)"string"==typeof t[n]?i.push([t[n]]):i.push(t[n]);return i}function zy(t){if(!t||0===t.length)return[[0,0]];if("number"==typeof t)return[[r=Math.ceil(t),r]];for(var e=!0,n=0;n<t.length;++n)if("number"!=typeof t[n]){e=!1;break}if(e)return zy([t]);var i=[];for(n=0;n<t.length;++n)if("number"==typeof t[n]){var r=Math.ceil(t[n]);i.push([r,r])}else{(r=O(t[n],(function(t){return Math.ceil(t)}))).length%2==1?i.push(r.concat(r)):i.push(r)}return i}function By(t){for(var e=0,n=0;n<t.length;++n)e+=t[n];return t.length%2==1?2*e:e}function Vy(t){H(t)&&(t=(new DOMParser).parseFromString(t,"text/xml"));var e=t;for(9===e.nodeType&&(e=e.firstChild);"svg"!==e.nodeName.toLowerCase()||1!==e.nodeType;)e=e.nextSibling;return e}var Fy={fill:"fill",stroke:"stroke","stroke-width":"lineWidth",opacity:"opacity","fill-opacity":"fillOpacity","stroke-opacity":"strokeOpacity","stroke-dasharray":"lineDash","stroke-dashoffset":"lineDashOffset","stroke-linecap":"lineCap","stroke-linejoin":"lineJoin","stroke-miterlimit":"miterLimit","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight","text-anchor":"textAlign",visibility:"visibility",display:"display"},Gy=z(Fy),Hy={"alignment-baseline":"textBaseline","stop-color":"stopColor"},Wy=z(Hy),Uy=function(){function t(){this._defs={},this._root=null}return t.prototype.parse=function(t,e){e=e||{};var n=Vy(t);if(!n)throw new Error("Illegal svg");this._defsUsePending=[];var i=new zi;this._root=i;var r=[],o=n.getAttribute("viewBox")||"",a=parseFloat(n.getAttribute("width")||e.width),s=parseFloat(n.getAttribute("height")||e.height);isNaN(a)&&(a=null),isNaN(s)&&(s=null),Ky(n,i,null,!0,!1);for(var l,u,h=n.firstChild;h;)this._parseNode(h,i,r,null,!1,!1),h=h.nextSibling;if(function(t,e){for(var n=0;n<e.length;n++){var i=e[n];i[0].style[i[1]]=t[i[2]]}}(this._defs,this._defsUsePending),this._defsUsePending=[],o){var c=tv(o);c.length>=4&&(l={x:parseFloat(c[0]||0),y:parseFloat(c[1]||0),width:parseFloat(c[2]),height:parseFloat(c[3])})}if(l&&null!=a&&null!=s&&(u=rv(l,{x:0,y:0,width:a,height:s}),!e.ignoreViewBox)){var p=i;(i=new zi).add(p),p.scaleX=p.scaleY=u.scale,p.x=u.x,p.y=u.y}return e.ignoreRootClip||null==a||null==s||i.setClipPath(new as({shape:{x:0,y:0,width:a,height:s}})),{root:i,width:a,height:s,viewBoxRect:l,viewBoxTransform:u,named:r}},t.prototype._parseNode=function(t,e,n,i,r,o){var a,s=t.nodeName.toLowerCase(),l=i;if("defs"===s&&(r=!0),"text"===s&&(o=!0),"defs"===s||"switch"===s)a=e;else{if(!r){var u=ky[s];if(u&&dt(ky,s)){a=u.call(this,t,e);var h=t.getAttribute("name");if(h){var c={name:h,namedFrom:null,svgNodeTagLower:s,el:a};n.push(c),"g"===s&&(l=c)}else i&&n.push({name:i.name,namedFrom:i,svgNodeTagLower:s,el:a});e.add(a)}}var p=Yy[s];if(p&&dt(Yy,s)){var d=p.call(this,t),f=t.getAttribute("id");f&&(this._defs[f]=d)}}if(a&&a.isGroup)for(var g=t.firstChild;g;)1===g.nodeType?this._parseNode(g,a,n,l,r,o):3===g.nodeType&&o&&this._parseText(g,a),g=g.nextSibling},t.prototype._parseText=function(t,e){var n=new Ka({style:{text:t.textContent},silent:!0,x:this._textX||0,y:this._textY||0});jy(e,n),Ky(t,n,this._defsUsePending,!1,!1),function(t,e){var n=e.__selfStyle;if(n){var i=n.textBaseline,r=i;i&&"auto"!==i?"baseline"===i?r="alphabetic":"before-edge"===i||"text-before-edge"===i?r="top":"after-edge"===i||"text-after-edge"===i?r="bottom":"central"!==i&&"mathematical"!==i||(r="middle"):r="alphabetic",t.style.textBaseline=r}var o=e.__inheritedStyle;if(o){var a=o.textAlign,s=a;a&&("middle"===a&&(s="center"),t.style.textAlign=s)}}(n,e);var i=n.style,r=i.fontSize;r&&r<9&&(i.fontSize=9,n.scaleX*=r/9,n.scaleY*=r/9);var o=(i.fontSize||i.fontFamily)&&[i.fontStyle,i.fontWeight,(i.fontSize||12)+"px",i.fontFamily||"sans-serif"].join(" ");i.font=o;var a=n.getBoundingRect();return this._textX+=a.width,e.add(n),n},t.internalField=void(ky={g:function(t,e){var n=new zi;return jy(e,n),Ky(t,n,this._defsUsePending,!1,!1),n},rect:function(t,e){var n=new as;return jy(e,n),Ky(t,n,this._defsUsePending,!1,!1),n.setShape({x:parseFloat(t.getAttribute("x")||"0"),y:parseFloat(t.getAttribute("y")||"0"),width:parseFloat(t.getAttribute("width")||"0"),height:parseFloat(t.getAttribute("height")||"0")}),n.silent=!0,n},circle:function(t,e){var n=new Ol;return jy(e,n),Ky(t,n,this._defsUsePending,!1,!1),n.setShape({cx:parseFloat(t.getAttribute("cx")||"0"),cy:parseFloat(t.getAttribute("cy")||"0"),r:parseFloat(t.getAttribute("r")||"0")}),n.silent=!0,n},line:function(t,e){var n=new su;return jy(e,n),Ky(t,n,this._defsUsePending,!1,!1),n.setShape({x1:parseFloat(t.getAttribute("x1")||"0"),y1:parseFloat(t.getAttribute("y1")||"0"),x2:parseFloat(t.getAttribute("x2")||"0"),y2:parseFloat(t.getAttribute("y2")||"0")}),n.silent=!0,n},ellipse:function(t,e){var n=new Nl;return jy(e,n),Ky(t,n,this._defsUsePending,!1,!1),n.setShape({cx:parseFloat(t.getAttribute("cx")||"0"),cy:parseFloat(t.getAttribute("cy")||"0"),rx:parseFloat(t.getAttribute("rx")||"0"),ry:parseFloat(t.getAttribute("ry")||"0")}),n.silent=!0,n},polygon:function(t,e){var n,i=t.getAttribute("points");i&&(n=qy(i));var r=new nu({shape:{points:n||[]},silent:!0});return jy(e,r),Ky(t,r,this._defsUsePending,!1,!1),r},polyline:function(t,e){var n,i=t.getAttribute("points");i&&(n=qy(i));var r=new ru({shape:{points:n||[]},silent:!0});return jy(e,r),Ky(t,r,this._defsUsePending,!1,!1),r},image:function(t,e){var n=new Qa;return jy(e,n),Ky(t,n,this._defsUsePending,!1,!1),n.setStyle({image:t.getAttribute("xlink:href"),x:+t.getAttribute("x"),y:+t.getAttribute("y"),width:+t.getAttribute("width"),height:+t.getAttribute("height")}),n.silent=!0,n},text:function(t,e){var n=t.getAttribute("x")||"0",i=t.getAttribute("y")||"0",r=t.getAttribute("dx")||"0",o=t.getAttribute("dy")||"0";this._textX=parseFloat(n)+parseFloat(r),this._textY=parseFloat(i)+parseFloat(o);var a=new zi;return jy(e,a),Ky(t,a,this._defsUsePending,!1,!0),a},tspan:function(t,e){var n=t.getAttribute("x"),i=t.getAttribute("y");null!=n&&(this._textX=parseFloat(n)),null!=i&&(this._textY=parseFloat(i));var r=t.getAttribute("dx")||"0",o=t.getAttribute("dy")||"0",a=new zi;return jy(e,a),Ky(t,a,this._defsUsePending,!1,!0),this._textX+=parseFloat(r),this._textY+=parseFloat(o),a},path:function(t,e){var n=kl(t.getAttribute("d")||"");return jy(e,n),Ky(t,n,this._defsUsePending,!1,!1),n.silent=!0,n}}),t}(),Yy={lineargradient:function(t){var e=parseInt(t.getAttribute("x1")||"0",10),n=parseInt(t.getAttribute("y1")||"0",10),i=parseInt(t.getAttribute("x2")||"10",10),r=parseInt(t.getAttribute("y2")||"0",10),o=new yu(e,n,i,r);return Xy(t,o),Zy(t,o),o},radialgradient:function(t){var e=parseInt(t.getAttribute("cx")||"0",10),n=parseInt(t.getAttribute("cy")||"0",10),i=parseInt(t.getAttribute("r")||"0",10),r=new vu(e,n,i);return Xy(t,r),Zy(t,r),r}};function Xy(t,e){"userSpaceOnUse"===t.getAttribute("gradientUnits")&&(e.global=!0)}function Zy(t,e){for(var n=t.firstChild;n;){if(1===n.nodeType&&"stop"===n.nodeName.toLocaleLowerCase()){var i=n.getAttribute("offset"),r=void 0;r=i&&i.indexOf("%")>0?parseInt(i,10)/100:i?parseFloat(i):0;var o={};iv(n,o,o);var a=o.stopColor||n.getAttribute("stop-color")||"#000000";e.colorStops.push({offset:r,color:a})}n=n.nextSibling}}function jy(t,e){t&&t.__inheritedStyle&&(e.__inheritedStyle||(e.__inheritedStyle={}),T(e.__inheritedStyle,t.__inheritedStyle))}function qy(t){for(var e=tv(t),n=[],i=0;i<e.length;i+=2){var r=parseFloat(e[i]),o=parseFloat(e[i+1]);n.push([r,o])}return n}function Ky(t,e,n,i,r){var o=e,a=o.__inheritedStyle=o.__inheritedStyle||{},s={};1===t.nodeType&&(function(t,e){var n=t.getAttribute("transform");if(n){n=n.replace(/,/g," ");var i=[],r=null;n.replace(ev,(function(t,e,n){return i.push(e,n),""}));for(var o=i.length-1;o>0;o-=2){var a=i[o],s=void 0;switch(r=r||[1,0,0,1,0,0],i[o-1]){case"translate":s=tv(a),me(r,r,[parseFloat(s[0]),parseFloat(s[1]||"0")]);break;case"scale":s=tv(a),xe(r,r,[parseFloat(s[0]),parseFloat(s[1]||s[0])]);break;case"rotate":s=tv(a),_e(r,r,-parseFloat(s[0])/180*Math.PI);break;case"skew":s=tv(a),console.warn("Skew transform is not supported yet");break;case"matrix":s=tv(a),r[0]=parseFloat(s[0]),r[1]=parseFloat(s[1]),r[2]=parseFloat(s[2]),r[3]=parseFloat(s[3]),r[4]=parseFloat(s[4]),r[5]=parseFloat(s[5])}}e.setLocalTransform(r)}}(t,e),iv(t,a,s),i||function(t,e,n){for(var i=0;i<Gy.length;i++){var r=Gy[i];null!=(o=t.getAttribute(r))&&(e[Fy[r]]=o)}for(i=0;i<Wy.length;i++){var o;r=Wy[i];null!=(o=t.getAttribute(r))&&(n[Hy[r]]=o)}}(t,a,s)),o.style=o.style||{},null!=a.fill&&(o.style.fill=Jy(o,"fill",a.fill,n)),null!=a.stroke&&(o.style.stroke=Jy(o,"stroke",a.stroke,n)),P(["lineWidth","opacity","fillOpacity","strokeOpacity","miterLimit","fontSize"],(function(t){null!=a[t]&&(o.style[t]=parseFloat(a[t]))})),P(["lineDashOffset","lineCap","lineJoin","fontWeight","fontFamily","fontStyle","textAlign"],(function(t){null!=a[t]&&(o.style[t]=a[t])})),r&&(o.__selfStyle=s),a.lineDash&&(o.style.lineDash=O(tv(a.lineDash),(function(t){return parseFloat(t)}))),"hidden"!==a.visibility&&"collapse"!==a.visibility||(o.invisible=!0),"none"===a.display&&(o.ignore=!0),o.z=-1e4,o.z2=-1e3}var $y=/^url\(\s*#(.*?)\)/;function Jy(t,e,n,i){var r=n&&n.match($y);if(!r)return"none"===n&&(n=null),n;var o=ot(r[1]);i.push([t,e,o])}var Qy=/-?([0-9]*\.)?[0-9]+([eE]-?[0-9]+)?/g;function tv(t){return t.match(Qy)||[]}var ev=/(translate|scale|rotate|skewX|skewY|matrix)\(([\-\s0-9\.eE,]*)\)/g;var nv=/([^\s:;]+)\s*:\s*([^:;]+)/g;function iv(t,e,n){var i,r=t.getAttribute("style");if(r)for(nv.lastIndex=0;null!=(i=nv.exec(r));){var o=i[1],a=dt(Fy,o)?Fy[o]:null;a&&(e[a]=i[2]);var s=dt(Hy,o)?Hy[o]:null;s&&(n[s]=i[2])}}function rv(t,e){var n=e.width/t.width,i=e.height/t.height,r=Math.min(n,i);return{scale:r,x:-(t.x+t.width/2)*r+(e.x+e.width/2),y:-(t.y+t.height/2)*r+(e.y+e.height/2)}}function ov(t,e){return Math.abs(t-e)<1e-8}function av(t,e,n){var i=0,r=t[0];if(!r)return!1;for(var o=1;o<t.length;o++){var a=t[o];i+=Ea(r[0],r[1],a[0],a[1],e,n),r=a}var s=t[0];return ov(r[0],s[0])&&ov(r[1],s[1])||(i+=Ea(r[0],r[1],s[0],s[1],e,n)),0!==i}var sv=[],lv=function(){function t(t){this.name=t}return t.prototype.getCenter=function(){},t}(),uv=function(t){function e(e,n,i){var r=t.call(this,e)||this;if(r.type="geoJSON",r.geometries=n,i)i=[i[0],i[1]];else{var o=r.getBoundingRect();i=[o.x+o.width/2,o.y+o.height/2]}return r._center=i,r}return n(e,t),e.prototype.getBoundingRect=function(){var t=this._rect;if(t)return t;for(var e=Number.MAX_VALUE,n=[e,e],i=[-e,-e],r=[],o=[],a=this.geometries,s=0;s<a.length;s++){if("polygon"===a[s].type)na(a[s].exterior,r,o),Nt(n,n,r),Et(i,i,o)}return 0===s&&(n[0]=n[1]=i[0]=i[1]=0),this._rect=new Rn(n[0],n[1],i[0]-n[0],i[1]-n[1])},e.prototype.contain=function(t){var e=this.getBoundingRect(),n=this.geometries;if(!e.contain(t[0],t[1]))return!1;t:for(var i=0,r=n.length;i<r;i++)if("polygon"===n[i].type){var o=n[i].exterior,a=n[i].interiors;if(av(o,t[0],t[1])){for(var s=0;s<(a?a.length:0);s++)if(av(a[s],t[0],t[1]))continue t;return!0}}return!1},e.prototype.transformTo=function(t,e,n,i){var r=this.getBoundingRect(),o=r.width/r.height;n?i||(i=n/o):n=o*i;for(var a=new Rn(t,e,n,i),s=r.calculateTransform(a),l=this.geometries,u=0;u<l.length;u++)if("polygon"===l[u].type){for(var h=l[u].exterior,c=l[u].interiors,p=0;p<h.length;p++)Rt(h[p],h[p],s);for(var d=0;d<(c?c.length:0);d++)for(p=0;p<c[d].length;p++)Rt(c[d][p],c[d][p],s)}(r=this._rect).copy(a),this._center=[r.x+r.width/2,r.y+r.height/2]},e.prototype.cloneShallow=function(t){null==t&&(t=this.name);var n=new e(t,this.geometries,this._center);return n._rect=this._rect,n.transformTo=null,n},e.prototype.getCenter=function(){return this._center},e.prototype.setCenter=function(t){this._center=t},e}(lv),hv=function(t){function e(e,n){var i=t.call(this,e)||this;return i.type="geoSVG",i._elOnlyForCalculate=n,i}return n(e,t),e.prototype.getCenter=function(){var t=this._center;return t||(t=this._center=this._calculateCenter()),t},e.prototype._calculateCenter=function(){for(var t=this._elOnlyForCalculate,e=t.getBoundingRect(),n=[e.x+e.width/2,e.y+e.height/2],i=ge(sv),r=t;r&&!r.isGeoSVGGraphicRoot;)ve(i,r.getLocalTransform(),i),r=r.parent;return be(i,i),Rt(n,n,i),n},e}(lv),cv=ht(["rect","circle","line","ellipse","polygon","polyline","path","text","tspan","g"]),pv=function(){function t(t,e){this.type="geoSVG",this._usedGraphicMap=ht(),this._freedGraphics=[],this._mapName=t,this._parsedXML=Vy(e)}return t.prototype.load=function(){var t=this._firstGraphic;if(!t){t=this._firstGraphic=this._buildGraphic(this._parsedXML),this._freedGraphics.push(t),this._boundingRect=this._firstGraphic.boundingRect.clone();var e=function(t){var e=[],n=ht();return P(t,(function(t){if(null==t.namedFrom){var i=new hv(t.name,t.el);e.push(i),n.set(t.name,i)}})),{regions:e,regionsMap:n}}(t.named),n=e.regions,i=e.regionsMap;this._regions=n,this._regionsMap=i}return{boundingRect:this._boundingRect,regions:this._regions,regionsMap:this._regionsMap}},t.prototype._buildGraphic=function(t){var e,n,i,r;try{rt(null!=(n=(e=t&&(i=t,r={ignoreViewBox:!0,ignoreRootClip:!0},(new Uy).parse(i,r))||{}).root))}catch(t){throw new Error("Invalid svg format\n"+t.message)}var o=new zi;o.add(n),o.isGeoSVGGraphicRoot=!0;var a=e.width,s=e.height,l=e.viewBoxRect,u=this._boundingRect;if(!u){var h=void 0,c=void 0,p=void 0,d=void 0;if(null!=a?(h=0,p=a):l&&(h=l.x,p=l.width),null!=s?(c=0,d=s):l&&(c=l.y,d=l.height),null==h||null==c){var f=n.getBoundingRect();null==h&&(h=f.x,p=f.width),null==c&&(c=f.y,d=f.height)}u=this._boundingRect=new Rn(h,c,p,d)}if(l){var g=rv(l,u);n.scaleX=n.scaleY=g.scale,n.x=g.x,n.y=g.y}o.setClipPath(new as({shape:u.plain()}));var y=[];return P(e.named,(function(t){var e;null!=cv.get(t.svgNodeTagLower)&&(y.push(t),(e=t.el).silent=!1,e.isGroup&&e.traverse((function(t){t.silent=!1})))})),{root:o,boundingRect:u,named:y}},t.prototype.useGraphic=function(t){var e=this._usedGraphicMap,n=e.get(t);return n||(n=this._freedGraphics.pop()||this._buildGraphic(this._parsedXML),e.set(t,n),n)},t.prototype.freeGraphic=function(t){var e=this._usedGraphicMap,n=e.get(t);n&&(e.removeKey(t),this._freedGraphics.push(n))},t}();function dv(t,e,n){for(var i=[],r=e[0],o=e[1],a=0;a<t.length;a+=2){var s=t.charCodeAt(a)-64,l=t.charCodeAt(a+1)-64;s=s>>1^-(1&s),l=l>>1^-(1&l),r=s+=r,o=l+=o,i.push([s/n,l/n])}return i}function fv(t,e){return O(N((t=function(t){if(!t.UTF8Encoding)return t;var e=t,n=e.UTF8Scale;null==n&&(n=1024);for(var i=e.features,r=0;r<i.length;r++){var o=i[r].geometry;if("Polygon"===o.type)for(var a=o.coordinates,s=0;s<a.length;s++)a[s]=dv(a[s],o.encodeOffsets[s],n);else if("MultiPolygon"===o.type)for(a=o.coordinates,s=0;s<a.length;s++)for(var l=a[s],u=0;u<l.length;u++)l[u]=dv(l[u],o.encodeOffsets[s][u],n)}return e.UTF8Encoding=!1,e}(t)).features,(function(t){return t.geometry&&t.properties&&t.geometry.coordinates.length>0})),(function(t){var n=t.properties,i=t.geometry,r=[];if("Polygon"===i.type){var o=i.coordinates;r.push({type:"polygon",exterior:o[0],interiors:o.slice(1)})}"MultiPolygon"===i.type&&P(o=i.coordinates,(function(t){t[0]&&r.push({type:"polygon",exterior:t[0],interiors:t.slice(1)})}));var a=new uv(n[e||"name"],r,n.cp);return a.properties=n,a}))}for(var gv=[126,25],yv=[[[0,3.5],[7,11.2],[15,11.9],[30,7],[42,.7],[52,.7],[56,7.7],[59,.7],[64,.7],[64,0],[5,0],[0,3.5]],[[13,16.1],[19,14.7],[16,21.7],[11,23.1],[13,16.1]],[[12,32.2],[14,38.5],[15,38.5],[13,32.2],[12,32.2]],[[16,47.6],[12,53.2],[13,53.2],[18,47.6],[16,47.6]],[[6,64.4],[8,70],[9,70],[8,64.4],[6,64.4]],[[23,82.6],[29,79.8],[30,79.8],[25,82.6],[23,82.6]],[[37,70.7],[43,62.3],[44,62.3],[39,70.7],[37,70.7]],[[48,51.1],[51,45.5],[53,45.5],[50,51.1],[48,51.1]],[[51,35],[51,28.7],[53,28.7],[53,35],[51,35]],[[52,22.4],[55,17.5],[56,17.5],[53,22.4],[52,22.4]],[[58,12.6],[62,7],[63,7],[60,12.6],[58,12.6]],[[0,3.5],[0,93.1],[64,93.1],[64,0],[63,0],[63,92.4],[1,92.4],[1,3.5],[0,3.5]]],vv=0;vv<yv.length;vv++)for(var mv=0;mv<yv[vv].length;mv++)yv[vv][mv][0]/=10.5,yv[vv][mv][1]/=-14,yv[vv][mv][0]+=gv[0],yv[vv][mv][1]+=gv[1];var _v={"南海诸岛":[32,80],"广东":[0,-10],"香港":[10,5],"澳门":[-10,10],"天津":[5,5]};var xv={Russia:[100,60],"United States":[-99,38],"United States of America":[-99,38]};var bv=[[[123.45165252685547,25.73527164402261],[123.49731445312499,25.73527164402261],[123.49731445312499,25.750734064600884],[123.45165252685547,25.750734064600884],[123.45165252685547,25.73527164402261]]];var wv=function(){function t(t,e,n){var i;this.type="geoJSON",this._parsedMap=ht(),this._mapName=t,this._specialAreas=n,this._geoJSON=H(i=e)?"undefined"!=typeof JSON&&JSON.parse?JSON.parse(i):new Function("return ("+i+");")():i}return t.prototype.load=function(t,e){e=e||"name";var n=this._parsedMap.get(e);if(!n){var i=this._parseToRegions(e);n=this._parsedMap.set(e,{regions:i,boundingRect:Sv(i)})}var r=ht(),o=[];return P(n.regions,(function(e){var n=e.name;t&&t.hasOwnProperty(n)&&(e=e.cloneShallow(n=t[n])),o.push(e),r.set(n,e)})),{regions:o,boundingRect:n.boundingRect||new Rn(0,0,0,0),regionsMap:r}},t.prototype._parseToRegions=function(t){var e,n,i=this._mapName,r=this._geoJSON;try{e=r?fv(r,t):[]}catch(t){throw new Error("Invalid geoJson format\n"+t.message)}return n=e,"china"===i&&n.push(new uv("南海诸岛",O(yv,(function(t){return{type:"polygon",exterior:t}})),gv)),P(e,(function(t){var e=t.name;!function(t,e){if("china"===t){var n=_v[e.name];if(n){var i=e.getCenter();i[0]+=n[0]/10.5,i[1]+=-n[1]/14,e.setCenter(i)}}}(i,t),function(t,e){if("world"===t){var n=xv[e.name];if(n){var i=[n[0],n[1]];e.setCenter(i)}}}(i,t),function(t,e){"china"===t&&"台湾"===e.name&&e.geometries.push({type:"polygon",exterior:bv[0]})}(i,t);var n=this._specialAreas&&this._specialAreas[e];n&&t.transformTo(n.left,n.top,n.width,n.height)}),this),e},t.prototype.getMapForUser=function(){return{geoJson:this._geoJSON,geoJSON:this._geoJSON,specialAreas:this._specialAreas}},t}();function Sv(t){for(var e,n=0;n<t.length;n++){var i=t[n].getBoundingRect();(e=e||i.clone()).union(i)}return e}var Mv=ht(),Iv=function(t,e,n){if(e.svg){var i=new pv(t,e.svg);Mv.set(t,i)}else{var r=e.geoJson||e.geoJSON;r&&!e.features?n=e.specialAreas:r=e;i=new wv(t,r,n);Mv.set(t,i)}},Tv=function(t){return Mv.get(t)},Cv=function(t){var e=Mv.get(t);return e&&"geoJSON"===e.type&&e.getMapForUser()},Av=function(t,e,n){var i=Mv.get(t);if(i)return i.load(e,n)},Dv=rt,Lv=P,kv=G,Pv=Y,Ov=A,Rv="undefined"!=typeof window,Nv=2e3,Ev=4500,zv={PROCESSOR:{FILTER:1e3,SERIES_FILTER:800,STATISTIC:5e3},VISUAL:{LAYOUT:1e3,PROGRESSIVE_LAYOUT:1100,GLOBAL:Nv,CHART:3e3,POST_CHART_LAYOUT:4600,COMPONENT:4e3,BRUSH:5e3,CHART_ITEM:Ev,ARIA:6e3,DECAL:7e3}},Bv=/^[a-zA-Z0-9_]+$/,Vv="__connectUpdateStatus";function Fv(t){return function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];if(!this.isDisposed())return Hv(this,t,e);gm(this.id)}}function Gv(t){return function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return Hv(this,t,e)}}function Hv(t,e,n){return n[0]=n[0]&&n[0].toLowerCase(),Ft.prototype[e].apply(t,n)}var Wv,Uv,Yv,Xv,Zv,jv,qv,Kv,$v,Jv,Qv,tm,em,nm,im,rm,om,am,sm,lm,um,hm=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e}(Ft),cm=hm.prototype;cm.on=Gv("on"),cm.off=Gv("off");var pm=function(t){function e(e,n,i){var r=t.call(this,new dg)||this;r._chartsViews=[],r._chartsMap={},r._componentsViews=[],r._componentsMap={},r._pendingActions=[],i=i||{},"string"==typeof n&&(n=Sm[n]),r._dom=e;var o="canvas",a=!1,s=r._zr=Hi(e,{renderer:i.renderer||o,devicePixelRatio:i.devicePixelRatio,width:i.width,height:i.height,useDirtyRect:null==i.useDirtyRect?a:i.useDirtyRect});r._throttledZrFlush=Of(B(s.flush,s),17),(n=w(n))&&Kp(n,!0),r._theme=n,r._locale=function(t){if(H(t)){var e=Bh[t.toUpperCase()]||{};return t===Nh||t===Eh?w(e):S(w(e),w(Bh.EN),!1)}return S(w(t),w(Bh.EN),!1)}(i.locale||Fh),r._coordSysMgr=new Cp;var l=r._api=om(r);function u(t,e){return t.__prio-e.__prio}return ci(wm,u),ci(mm,u),r._scheduler=new Yf(r,l,mm,wm),r._messageCenter=new hm,r._labelManager=new Jg,r._initEvents(),r.resize=B(r.resize,r),s.animation.on("frame",r._onframe,r),Jv(s,r),Qv(s,r),st(r),r}return n(e,t),e.prototype._onframe=function(){if(!this._disposed){um(this);var t=this._scheduler;if(this.__optionUpdated){var e=this.__optionUpdated.silent;this.__flagInMainProcess=!0,Wv(this),Xv.update.call(this),this._zr.flush(),this.__flagInMainProcess=!1,this.__optionUpdated=!1,Kv.call(this,e),$v.call(this,e)}else if(t.unfinished){var n=1,i=this._model,r=this._api;t.unfinished=!1;do{var o=+new Date;t.performSeriesTasks(i),t.performDataProcessorTasks(i),jv(this,i),t.performVisualTasks(i),im(this,this._model,r,"remain"),n-=+new Date-o}while(n>0&&t.unfinished);t.unfinished||this._zr.flush()}}},e.prototype.getDom=function(){return this._dom},e.prototype.getId=function(){return this.id},e.prototype.getZr=function(){return this._zr},e.prototype.setOption=function(t,e,n){if(this._disposed)gm(this.id);else{var i,r,o;if(Pv(e)&&(n=e.lazyUpdate,i=e.silent,r=e.replaceMerge,o=e.transition,e=e.notMerge),this.__flagInMainProcess=!0,!this._model||e){var a=new Dp(this._api),s=this._theme,l=this._model=new xp;l.scheduler=this._scheduler,l.init(null,null,null,s,this._locale,a)}this._model.setOption(t,{replaceMerge:r},_m),sm(this,o),n?(this.__optionUpdated={silent:i},this.__flagInMainProcess=!1,this.getZr().wakeUp()):(Wv(this),Xv.update.call(this),this._zr.flush(),this.__optionUpdated=!1,this.__flagInMainProcess=!1,Kv.call(this,i),$v.call(this,i))}},e.prototype.setTheme=function(){console.error("ECharts#setTheme() is DEPRECATED in ECharts 3.0")},e.prototype.getModel=function(){return this._model},e.prototype.getOption=function(){return this._model&&this._model.getOption()},e.prototype.getWidth=function(){return this._zr.getWidth()},e.prototype.getHeight=function(){return this._zr.getHeight()},e.prototype.getDevicePixelRatio=function(){return this._zr.painter.dpr||Rv&&window.devicePixelRatio||1},e.prototype.getRenderedCanvas=function(t){if(a.canvasSupported)return(t=I({},t||{})).pixelRatio=t.pixelRatio||this.getDevicePixelRatio(),t.backgroundColor=t.backgroundColor||this._model.get("backgroundColor"),this._zr.painter.getRenderedCanvas(t)},e.prototype.getSvgDataURL=function(){if(a.svgSupported){var t=this._zr;return P(t.storage.getDisplayList(),(function(t){t.stopAnimation(null,!0)})),t.painter.toDataURL()}},e.prototype.getDataURL=function(t){if(!this._disposed){var e=(t=t||{}).excludeComponents,n=this._model,i=[],r=this;Lv(e,(function(t){n.eachComponent({mainType:t},(function(t){var e=r._componentsMap[t.__viewId];e.group.ignore||(i.push(e),e.group.ignore=!0)}))}));var o="svg"===this._zr.painter.getType()?this.getSvgDataURL():this.getRenderedCanvas(t).toDataURL("image/"+(t&&t.type||"png"));return Lv(i,(function(t){t.group.ignore=!1})),o}gm(this.id)},e.prototype.getConnectedDataURL=function(t){if(this._disposed)gm(this.id);else if(a.canvasSupported){var e="svg"===t.type,n=this.group,i=Math.min,r=Math.max,o=1/0;if(Tm[n]){var s=o,l=o,u=-1/0,h=-1/0,c=[],p=t&&t.pixelRatio||this.getDevicePixelRatio();P(Im,(function(o,a){if(o.group===n){var p=e?o.getZr().painter.getSvgDom().innerHTML:o.getRenderedCanvas(w(t)),d=o.getDom().getBoundingClientRect();s=i(d.left,s),l=i(d.top,l),u=r(d.right,u),h=r(d.bottom,h),c.push({dom:p,left:d.left,top:d.top})}}));var d=(u*=p)-(s*=p),f=(h*=p)-(l*=p),g=C(),y=Hi(g,{renderer:e?"svg":"canvas"});if(y.resize({width:d,height:f}),e){var v="";return Lv(c,(function(t){var e=t.left-s,n=t.top-l;v+='<g transform="translate('+e+","+n+')">'+t.dom+"</g>"})),y.painter.getSvgRoot().innerHTML=v,t.connectedBackgroundColor&&y.painter.setBackgroundColor(t.connectedBackgroundColor),y.refreshImmediately(),y.painter.toDataURL()}return t.connectedBackgroundColor&&y.add(new as({shape:{x:0,y:0,width:d,height:f},style:{fill:t.connectedBackgroundColor}})),Lv(c,(function(t){var e=new Qa({style:{x:t.left*p-s,y:t.top*p-l,image:t.dom}});y.add(e)})),y.refreshImmediately(),g.toDataURL("image/"+(t&&t.type||"png"))}return this.getDataURL(t)}},e.prototype.convertToPixel=function(t,e){return Zv(this,"convertToPixel",t,e)},e.prototype.convertFromPixel=function(t,e){return Zv(this,"convertFromPixel",t,e)},e.prototype.containPixel=function(t,e){var n;if(!this._disposed)return P(Pr(this._model,t),(function(t,i){i.indexOf("Models")>=0&&P(t,(function(t){var r=t.coordinateSystem;if(r&&r.containPoint)n=n||!!r.containPoint(e);else if("seriesModels"===i){var o=this._chartsMap[t.__viewId];o&&o.containPoint&&(n=n||o.containPoint(e,t))}else 0}),this)}),this),!!n;gm(this.id)},e.prototype.getVisual=function(t,e){var n=Pr(this._model,t,{defaultMainType:"series"}),i=n.seriesModel;var r=i.getData(),o=n.hasOwnProperty("dataIndexInside")?n.dataIndexInside:n.hasOwnProperty("dataIndex")?r.indexOfRawIndex(n.dataIndex):null;return null!=o?gg(r,o,e):yg(r,e)},e.prototype.getViewOfComponentModel=function(t){return this._componentsMap[t.__viewId]},e.prototype.getViewOfSeriesModel=function(t){return this._chartsMap[t.__viewId]},e.prototype._initEvents=function(){var t,e,n,i=this;Lv(fm,(function(t){var e=function(e){var n,r=i.getModel(),o=e.target,a="globalout"===t;if(a?n={}:o&&ey(o,(function(t){var e=vs(t);if(e&&null!=e.dataIndex){var i=e.dataModel||r.getSeriesByIndex(e.seriesIndex);return n=i&&i.getDataParams(e.dataIndex,e.dataType)||{},!0}if(e.eventData)return n=I({},e.eventData),!0}),!0),n){var s=n.componentType,l=n.componentIndex;"markLine"!==s&&"markPoint"!==s&&"markArea"!==s||(s="series",l=n.seriesIndex);var u=s&&null!=l&&r.getComponent(s,l),h=u&&i["series"===u.mainType?"_chartsMap":"_componentsMap"][u.__viewId];0,n.event=e,n.type=t,i._$eventProcessor.eventInfo={targetEl:o,packedEvent:n,model:u,view:h},i.trigger(t,n)}};e.zrEventfulCallAtLast=!0,i._zr.on(t,e,i)})),Lv(vm,(function(t,e){i._messageCenter.on(e,(function(t){this.trigger(e,t)}),i)})),Lv(["selectchanged"],(function(t){i._messageCenter.on(t,(function(e){this.trigger(t,e)}),i)})),t=this._messageCenter,e=this,n=this._api,t.on("selectchanged",(function(t){var i=n.getModel();t.isFromClick?(ty("map","selectchanged",e,i,t),ty("pie","selectchanged",e,i,t)):"select"===t.fromAction?(ty("map","selected",e,i,t),ty("pie","selected",e,i,t)):"unselect"===t.fromAction&&(ty("map","unselected",e,i,t),ty("pie","unselected",e,i,t))}))},e.prototype.isDisposed=function(){return this._disposed},e.prototype.clear=function(){this._disposed?gm(this.id):this.setOption({series:[]},!0)},e.prototype.dispose=function(){if(this._disposed)gm(this.id);else{this._disposed=!0,zr(this.getDom(),Dm,"");var t=this._api,e=this._model;Lv(this._componentsViews,(function(n){n.dispose(e,t)})),Lv(this._chartsViews,(function(n){n.dispose(e,t)})),this._zr.dispose(),delete Im[this.id]}},e.prototype.resize=function(t){if(this._disposed)gm(this.id);else{this._zr.resize(t);var e=this._model;if(this._loadingFX&&this._loadingFX.resize(),e){var n=e.resetOption("media"),i=t&&t.silent;this.__flagInMainProcess=!0,n&&Wv(this),Xv.update.call(this,{type:"resize",animation:I({duration:0},t&&t.animation)}),this.__flagInMainProcess=!1,Kv.call(this,i),$v.call(this,i)}}},e.prototype.showLoading=function(t,e){if(this._disposed)gm(this.id);else if(Pv(t)&&(e=t,t=""),t=t||"default",this.hideLoading(),Mm[t]){var n=Mm[t](this._api,e),i=this._zr;this._loadingFX=n,i.add(n)}},e.prototype.hideLoading=function(){this._disposed?gm(this.id):(this._loadingFX&&this._zr.remove(this._loadingFX),this._loadingFX=null)},e.prototype.makeActionFromEvent=function(t){var e=I({},t);return e.type=vm[t.type],e},e.prototype.dispatchAction=function(t,e){if(this._disposed)gm(this.id);else if(Pv(e)||(e={silent:!!e}),ym[t.type]&&this._model)if(this.__flagInMainProcess)this._pendingActions.push(t);else{var n=e.silent;qv.call(this,t,n);var i=e.flush;i?this._zr.flush():!1!==i&&a.browser.weChat&&this._throttledZrFlush(),Kv.call(this,n),$v.call(this,n)}},e.prototype.updateLabelLayout=function(){var t=this._labelManager;t.updateLayoutConfig(this._api),t.layout(this._api),t.processLabelsOverall()},e.prototype.appendData=function(t){if(this._disposed)gm(this.id);else{var e=t.seriesIndex,n=this.getModel().getSeriesByIndex(e);0,n.appendData(t),this._scheduler.unfinished=!0,this.getZr().wakeUp()}},e.internalField=function(){function t(t){for(var e=[],n=t.currentStates,i=0;i<n.length;i++){var r=n[i];"emphasis"!==r&&"blur"!==r&&"select"!==r&&e.push(r)}t.selected&&t.states.select&&e.push("select"),2===t.hoverState&&t.states.emphasis?e.push("emphasis"):1===t.hoverState&&t.states.blur&&e.push("blur"),t.useStates(e)}function e(t,e){t.preventAutoZ||i(e.group,t.get("z")||0,t.get("zlevel")||0,-1/0)}function i(t,e,n,r){var o=t.getTextContent(),a=t.getTextGuideLine();if(t.isGroup)for(var s=t.childrenRef(),l=0;l<s.length;l++)r=Math.max(i(s[l],e,n,r),r);else t.z=e,t.zlevel=n,r=Math.max(t.z2,r);if(o&&(o.z=e,o.zlevel=n,isFinite(r)&&(o.z2=r+2)),a){var u=t.textGuideLineConfig;a.z=e,a.zlevel=n,isFinite(r)&&(a.z2=r+(u&&u.showAbove?1:-1))}return r}function r(t,e){e.group.traverse((function(t){if(!Yu(t)){var e=t.getTextContent(),n=t.getTextGuideLine();t.stateTransition&&(t.stateTransition=null),e&&e.stateTransition&&(e.stateTransition=null),n&&n.stateTransition&&(n.stateTransition=null),t.hasState()?(t.prevStates=t.currentStates,t.clearStates()):t.prevStates&&(t.prevStates=null)}}))}function o(e,n){var i=e.getModel("stateAnimation"),r=e.isAnimationEnabled(),o=i.get("duration"),a=o>0?{duration:o,delay:i.get("delay"),easing:i.get("easing")}:null;n.group.traverse((function(e){if(e.states&&e.states.emphasis){if(Yu(e))return;if(e instanceof ja&&function(t){var e=xs(t);e.normalFill=t.style.fill,e.normalStroke=t.style.stroke;var n=t.states.select||{};e.selectFill=n.style&&n.style.fill||null,e.selectStroke=n.style&&n.style.stroke||null}(e),e.__dirty){var n=e.prevStates;n&&e.useStates(n)}if(r){e.stateTransition=a;var i=e.getTextContent(),o=e.getTextGuideLine();i&&(i.stateTransition=a),o&&(o.stateTransition=a)}e.__dirty&&t(e)}}))}Wv=function(t){var e=t._scheduler;e.restorePipelines(t._model),e.prepareStageTasks(),Uv(t,!0),Uv(t,!1),e.plan()},Uv=function(t,e){for(var n=t._model,i=t._scheduler,r=e?t._componentsViews:t._chartsViews,o=e?t._componentsMap:t._chartsMap,a=t._zr,s=t._api,l=0;l<r.length;l++)r[l].__alive=!1;function u(t){var l=t.__requireNewView;t.__requireNewView=!1;var u="_ec_"+t.id+"_"+t.type,h=!l&&o[u];if(!h){var c=Hr(t.type),p=e?xf.getClass(c.main,c.sub):Mf.getClass(c.sub);0,(h=new p).init(n,s),o[u]=h,r.push(h),a.add(h.group)}t.__viewId=h.__id=u,h.__alive=!0,h.__model=t,h.group.__ecComponentInfo={mainType:t.mainType,index:t.componentIndex},!e&&i.prepareView(h,t,n,s)}e?n.eachComponent((function(t,e){"series"!==t&&u(e)})):n.eachSeries(u);for(l=0;l<r.length;){var h=r[l];h.__alive?l++:(!e&&h.renderTask.dispose(),a.remove(h.group),h.dispose(n,s),r.splice(l,1),o[h.__id]===h&&delete o[h.__id],h.__id=h.group.__ecComponentInfo=null)}},Yv=function(t,e,n,i,r){var o=t._model;if(o.setUpdatePayload(n),i){var a={};a[i+"Id"]=n[i+"Id"],a[i+"Index"]=n[i+"Index"],a[i+"Name"]=n[i+"Name"];var s={mainType:i,query:a};r&&(s.subType=r);var l,u=n.excludeSeriesId;null!=u&&(l=ht(),Lv(_r(u),(function(t){var e=Tr(t,null);null!=e&&l.set(e,!0)}))),dl(n)&&Qs(t._api),o&&o.eachComponent(s,(function(e){if(!l||null==l.get(e.id)){if(dl(n))if(e instanceof pf)n.type!==Ms||n.notBlur||function(t,e,n){var i=t.seriesIndex,r=t.getData(e.dataType),o=Dr(r,e);o=(F(o)?o[0]:o)||0;var a=r.getItemGraphicEl(o);if(!a)for(var s=r.count(),l=0;!a&&l<s;)a=r.getItemGraphicEl(l++);if(a){var u=vs(a);tl(i,u.focus,u.blurScope,n)}else{var h=t.get(["emphasis","focus"]),c=t.get(["emphasis","blurScope"]);null!=h&&tl(i,h,c,n)}}(e,n,t._api);else{var r=nl(e.mainType,e.componentIndex,n.name,t._api),o=r.focusSelf,a=r.dispatchers;n.type===Ms&&o&&!n.notBlur&&el(e.mainType,e.componentIndex,t._api),a&&Lv(a,(function(t){n.type===Ms?Xs(t):Zs(t)}))}else pl(n)&&e instanceof pf&&(!function(t,e,n){if(pl(e)){var i=e.dataType,r=Dr(t.getData(i),e);F(r)||(r=[r]),t[e.type===As?"toggleSelect":e.type===Ts?"select":"unselect"](r,i)}}(e,n,t._api),il(e),lm(t));h(t["series"===i?"_chartsMap":"_componentsMap"][e.__viewId])}}),t)}else Lv([].concat(t._componentsViews).concat(t._chartsViews),h);function h(i){i&&i.__alive&&i[e]&&i[e](i.__model,o,t._api,n)}},Xv={prepareAndUpdate:function(t){Wv(this),Xv.update.call(this,t)},update:function(t){var e=this._model,n=this._api,i=this._zr,r=this._coordSysMgr,o=this._scheduler;if(e){e.setUpdatePayload(t),o.restoreData(e,t),o.performSeriesTasks(e),r.create(e,n),o.performDataProcessorTasks(e,t),jv(this,e),r.update(e,n),tm(e),o.performVisualTasks(e,t),em(this,e,n,t);var s=e.get("backgroundColor")||"transparent",l=e.get("darkMode");if(a.canvasSupported)i.setBackgroundColor(s),null!=l&&"auto"!==l&&i.setDarkMode(l);else{var u=qe(s);s=an(u,"rgb"),0===u[3]&&(s="transparent")}rm(e,n)}},updateTransform:function(t){var e=this,n=this._model,i=this._api;if(n){n.setUpdatePayload(t);var r=[];n.eachComponent((function(o,a){if("series"!==o){var s=e.getViewOfComponentModel(a);if(s&&s.__alive)if(s.updateTransform){var l=s.updateTransform(a,n,i,t);l&&l.update&&r.push(s)}else r.push(s)}}));var o=ht();n.eachSeries((function(r){var a=e._chartsMap[r.__viewId];if(a.updateTransform){var s=a.updateTransform(r,n,i,t);s&&s.update&&o.set(r.uid,1)}else o.set(r.uid,1)})),tm(n),this._scheduler.performVisualTasks(n,t,{setDirty:!0,dirtyMap:o}),im(this,n,i,t,o),rm(n,this._api)}},updateView:function(t){var e=this._model;e&&(e.setUpdatePayload(t),Mf.markUpdateMethod(t,"updateView"),tm(e),this._scheduler.performVisualTasks(e,t,{setDirty:!0}),em(this,this._model,this._api,t),rm(e,this._api))},updateVisual:function(t){var e=this,n=this._model;n&&(n.setUpdatePayload(t),n.eachSeries((function(t){t.getData().clearAllVisual()})),Mf.markUpdateMethod(t,"updateVisual"),tm(n),this._scheduler.performVisualTasks(n,t,{visualType:"visual",setDirty:!0}),n.eachComponent((function(i,r){if("series"!==i){var o=e.getViewOfComponentModel(r);o&&o.__alive&&o.updateVisual(r,n,e._api,t)}})),n.eachSeries((function(i){e._chartsMap[i.__viewId].updateVisual(i,n,e._api,t)})),rm(n,this._api))},updateLayout:function(t){Xv.update.call(this,t)}},Zv=function(t,e,n,i){if(t._disposed)gm(t.id);else{for(var r,o=t._model,a=t._coordSysMgr.getCoordinateSystems(),s=Pr(o,n),l=0;l<a.length;l++){var u=a[l];if(u[e]&&null!=(r=u[e](o,s,i)))return r}0}},jv=function(t,e){var n=t._chartsMap,i=t._scheduler;e.eachSeries((function(t){i.updateStreamModes(t,n[t.__viewId])}))},qv=function(t,e){var n=this,i=this.getModel(),r=t.type,o=t.escapeConnect,a=ym[r],s=a.actionInfo,l=(s.update||"update").split(":"),u=l.pop(),h=null!=l[0]&&Hr(l[0]);this.__flagInMainProcess=!0;var c=[t],p=!1;t.batch&&(p=!0,c=O(t.batch,(function(e){return(e=T(I({},e),t)).batch=null,e})));var d,f=[],g=pl(t),y=dl(t);if(Lv(c,(function(e){if((d=(d=a.action(e,n._model,n._api))||I({},e)).type=s.event||d.type,f.push(d),y){var i=Or(t),r=i.queryOptionMap,o=i.mainTypeSpecified?r.keys()[0]:"series";Yv(n,u,e,o),lm(n)}else g?(Yv(n,u,e,"series"),lm(n)):h&&Yv(n,u,e,h.main,h.sub)})),"none"===u||y||g||h||(this.__optionUpdated?(Wv(this),Xv.update.call(this,t),this.__optionUpdated=!1):Xv[u].call(this,t)),d=p?{type:s.event||r,escapeConnect:o,batch:f}:f[0],this.__flagInMainProcess=!1,!e){var v=this._messageCenter;if(v.trigger(d.type,d),g){var m={type:"selectchanged",escapeConnect:o,selected:rl(i),isFromClick:t.isFromClick||!1,fromAction:t.type,fromActionPayload:t};v.trigger(m.type,m)}}},Kv=function(t){for(var e=this._pendingActions;e.length;){var n=e.shift();qv.call(this,n,t)}},$v=function(t){!t&&this.trigger("updated")},Jv=function(t,e){t.on("rendered",(function(n){e.trigger("rendered",n),!t.animation.isFinished()||e.__optionUpdated||e._scheduler.unfinished||e._pendingActions.length||e.trigger("finished")}))},Qv=function(t,e){t.on("mouseover",(function(t){var n=ey(t.target,cl);n&&(!function(t,e,n){var i=vs(t),r=nl(i.componentMainType,i.componentIndex,i.componentHighDownName,n),o=r.dispatchers,a=r.focusSelf;o?(a&&el(i.componentMainType,i.componentIndex,n),P(o,(function(t){return Us(t,e)}))):(tl(i.seriesIndex,i.focus,i.blurScope,n),"self"===i.focus&&el(i.componentMainType,i.componentIndex,n),Us(t,e))}(n,t,e._api),lm(e))})).on("mouseout",(function(t){var n=ey(t.target,cl);n&&(!function(t,e,n){Qs(n);var i=vs(t),r=nl(i.componentMainType,i.componentIndex,i.componentHighDownName,n).dispatchers;r?P(r,(function(t){return Ys(t,e)})):Ys(t,e)}(n,t,e._api),lm(e))})).on("click",(function(t){var n=ey(t.target,(function(t){return null!=vs(t).dataIndex}),!0);if(n){var i=n.selected?"unselect":"select",r=vs(n);e._api.dispatchAction({type:i,dataType:r.dataType,dataIndexInside:r.dataIndex,seriesIndex:r.seriesIndex,isFromClick:!0})}}))},tm=function(t){t.clearColorPalette(),t.eachSeries((function(t){t.clearColorPalette()}))},em=function(t,e,n,i){nm(t,e,n,i),Lv(t._chartsViews,(function(t){t.__alive=!1})),im(t,e,n,i),Lv(t._chartsViews,(function(t){t.__alive||t.remove(e,n)}))},nm=function(t,n,i,a,s){Lv(s||t._componentsViews,(function(t){var s=t.__model;r(s,t),t.render(s,n,i,a),e(s,t),o(s,t)}))},im=function(t,n,i,s,l){var u=t._scheduler,h=t._labelManager;h.clearLabels();var c=!1;n.eachSeries((function(e){var n=t._chartsMap[e.__viewId];n.__alive=!0;var i=n.renderTask;u.updatePayload(i,s),r(e,n),l&&l.get(e.uid)&&i.dirty(),i.perform(u.getPerformArgs(i))&&(c=!0),e.__transientTransitionOpt=null,n.group.silent=!!e.get("silent"),function(t,e){var n=t.get("blendMode")||null;0;e.group.traverse((function(t){t.isGroup||(t.style.blend=n),t.eachPendingDisplayable&&t.eachPendingDisplayable((function(t){t.style.blend=n}))}))}(e,n),il(e),h.addLabelsOfSeries(n)})),u.unfinished=c||u.unfinished,h.updateLayoutConfig(i),h.layout(i),h.processLabelsOverall(),n.eachSeries((function(n){var i=t._chartsMap[n.__viewId];e(n,i),o(n,i)})),function(t,e){var n=t._zr.storage,i=0;n.traverse((function(t){t.isGroup||i++})),i>e.get("hoverLayerThreshold")&&!a.node&&!a.worker&&e.eachSeries((function(e){if(!e.preventUsingHoverLayer){var n=t._chartsMap[e.__viewId];n.__alive&&n.group.traverse((function(t){t.states.emphasis&&(t.states.emphasis.hoverLayer=!0)}))}}))}(t,n)},rm=function(t,e){Lv(bm,(function(n){n(t,e)}))},lm=function(t){t.__needsUpdateStatus=!0,t.getZr().wakeUp()},um=function(e){e.__needsUpdateStatus&&(e.getZr().storage.traverse((function(e){Yu(e)||t(e)})),e.__needsUpdateStatus=!1)},om=function(t){return new(function(e){function i(){return null!==e&&e.apply(this,arguments)||this}return n(i,e),i.prototype.getCoordinateSystems=function(){return t._coordSysMgr.getCoordinateSystems()},i.prototype.getComponentByElement=function(e){for(;e;){var n=e.__ecComponentInfo;if(null!=n)return t._model.getComponent(n.mainType,n.index);e=e.parent}},i.prototype.enterEmphasis=function(e,n){Xs(e,n),lm(t)},i.prototype.leaveEmphasis=function(e,n){Zs(e,n),lm(t)},i.prototype.enterBlur=function(e){js(e),lm(t)},i.prototype.leaveBlur=function(e){qs(e),lm(t)},i.prototype.enterSelect=function(e){Ks(e),lm(t)},i.prototype.leaveSelect=function(e){$s(e),lm(t)},i.prototype.getModel=function(){return t.getModel()},i.prototype.getViewOfComponentModel=function(e){return t.getViewOfComponentModel(e)},i.prototype.getViewOfSeriesModel=function(e){return t.getViewOfSeriesModel(e)},i}(Ip))(t)},am=function(t){function e(t,e){for(var n=0;n<t.length;n++){t[n][Vv]=e}}Lv(vm,(function(n,i){t._messageCenter.on(i,(function(n){if(Tm[t.group]&&0!==t[Vv]){if(n&&n.escapeConnect)return;var i=t.makeActionFromEvent(n),r=[];Lv(Im,(function(e){e!==t&&e.group===t.group&&r.push(e)})),e(r,0),Lv(r,(function(t){1!==t[Vv]&&t.dispatchAction(i)})),e(r,2)}}))}))},sm=function(t,e){var n=t._model;P(_r(e),(function(t){var e,i=t.from,r=t.to;null==r&&yr(e);var o={includeMainTypes:["series"],enableAll:!1,enableNone:!1},a=i?Pr(n,i,o):null,s=Pr(n,r,o).seriesModel;null==s&&(e=""),a&&a.seriesModel!==s&&(e=""),null!=e&&yr(e),s.__transientTransitionOpt={from:i?i.dimension:null,to:r.dimension,dividingMethod:t.dividingMethod}}))}}(),e}(Ft),dm=pm.prototype;dm.on=Fv("on"),dm.off=Fv("off"),dm.one=function(t,e,n){var i=this;gr(),this.on.call(this,t,(function n(){for(var r=[],o=0;o<arguments.length;o++)r[o]=arguments[o];e&&e.apply&&e.apply(this,r),i.off(t,n)}),n)};var fm=["click","dblclick","mouseover","mouseout","mousemove","mousedown","mouseup","globalout","contextmenu"];function gm(t){0}var ym={},vm={},mm=[],_m=[],xm=[],bm=[],wm=[],Sm={},Mm={},Im={},Tm={},Cm=+new Date-0,Am=+new Date-0,Dm="_echarts_instance_";function Lm(t){Tm[t]=!1}var km=Lm;function Pm(t){return Im[function(t,e){return t.getAttribute?t.getAttribute(e):t[e]}(t,Dm)]}function Om(t,e){Sm[t]=e}function Rm(t){Ov(_m,t)<0&&_m.push(t)}function Nm(t,e){Wm(mm,t,e,2e3)}function Em(t){Ov(xm,t)<0&&t&&xm.push(t)}function zm(t){Ov(bm,t)<0&&t&&bm.push(t)}function Bm(t,e,n){"function"==typeof e&&(n=e,e="");var i=Pv(t)?t.type:[t,t={event:e}][0];t.event=(t.event||i).toLowerCase(),e=t.event,vm[e]||(Dv(Bv.test(i)&&Bv.test(e)),ym[i]||(ym[i]={action:n,actionInfo:t}),vm[e]=i)}function Vm(t,e){Cp.register(t,e)}function Fm(t,e){Wm(wm,t,e,1e3,"layout")}function Gm(t,e){Wm(wm,t,e,3e3,"visual")}var Hm=[];function Wm(t,e,n,i,r){if((kv(e)||Pv(e))&&(n=e,e=i),!(Ov(Hm,n)>=0)){Hm.push(n);var o=Yf.wrapStageHandler(n,r);o.__prio=e,o.__raw=n,t.push(o)}}function Um(t,e){Mm[t]=e}function Ym(t,e,n){Iv(t,e,n)}var Xm=function(t){var e=(t=w(t)).type,n="";e||yr(n);var i=e.split(":");2!==i.length&&yr(n);var r=!1;"echarts"===i[0]&&(e=i[1],r=!0),t.__isBuiltIn=r,Hd.set(e,t)};Gm(Nv,Ff),Gm(Ev,Hf),Gm(Ev,Wf),Gm(Nv,fg),Gm(Ev,{createOnAllSeries:!0,performRawSeries:!0,reset:function(t,e){if(t.hasSymbolVisual&&!e.isSeriesFiltered(t))return{dataEach:t.getData().hasItemOption?function(t,e){var n=t.getItemModel(e),i=n.getShallow("symbol",!0),r=n.getShallow("symbolSize",!0),o=n.getShallow("symbolRotate",!0),a=n.getShallow("symbolOffset",!0),s=n.getShallow("symbolKeepAspect",!0);null!=i&&t.setItemVisual(e,"symbol",i),null!=r&&t.setItemVisual(e,"symbolSize",r),null!=o&&t.setItemVisual(e,"symbolRotate",o),null!=a&&t.setItemVisual(e,"symbolOffset",a),null!=s&&t.setItemVisual(e,"symbolKeepAspect",s)}:null}}}),Gm(7e3,(function(t,e){t.eachRawSeries((function(n){if(!t.isSeriesFiltered(n)){var i=n.getData();i.hasItemVisual()&&i.each((function(t){var n=i.getItemVisual(t,"decal");n&&(i.ensureUniqueItemVisual(t,"style").decal=Ny(n,e))}));var r=i.getVisual("decal");if(r)i.getVisual("style").decal=Ny(r,e)}}))})),Rm(Kp),Nm(900,(function(t){var e=ht();t.eachSeries((function(t){var n=t.get("stack");if(n){var i=e.get(n)||e.set(n,[]),r=t.getData(),o={stackResultDimension:r.getCalculationInfo("stackResultDimension"),stackedOverDimension:r.getCalculationInfo("stackedOverDimension"),stackedDimension:r.getCalculationInfo("stackedDimension"),stackedByDimension:r.getCalculationInfo("stackedByDimension"),isStackedByIndex:r.getCalculationInfo("isStackedByIndex"),data:r,seriesModel:t};if(!o.stackedDimension||!o.isStackedByIndex&&!o.stackedByDimension)return;i.length&&r.setCalculationInfo("stackedOnSeries",i[i.length-1].seriesModel),i.push(o)}})),e.each($p)})),Um("default",(function(t,e){T(e=e||{},{text:"loading",textColor:"#000000",fontSize:12,fontWeight:"normal",fontStyle:"normal",fontFamily:"sans-serif",maskColor:"rgba(255, 255, 255, 0.8)",showSpinner:!0,color:"#5470c6",spinnerRadius:10,lineWidth:5,zlevel:0});var n=new zi,i=new as({style:{fill:e.maskColor},zlevel:e.zlevel,z:1e4});n.add(i);var r,o=new us({style:{text:e.text,fill:e.textColor,fontSize:e.fontSize,fontWeight:e.fontWeight,fontStyle:e.fontStyle,fontFamily:e.fontFamily},zlevel:e.zlevel,z:10001}),a=new as({style:{fill:"none"},textContent:o,textConfig:{position:"right",distance:10},zlevel:e.zlevel,z:10001});return n.add(a),e.showSpinner&&((r=new du({shape:{startAngle:-Uf/2,endAngle:-Uf/2+.1,r:e.spinnerRadius},style:{stroke:e.color,lineCap:"round",lineWidth:e.lineWidth},zlevel:e.zlevel,z:10001})).animateShape(!0).when(1e3,{endAngle:3*Uf/2}).start("circularInOut"),r.animateShape(!0).when(1e3,{startAngle:3*Uf/2}).delay(300).start("circularInOut"),n.add(r)),n.resize=function(){var n=o.getBoundingRect().width,s=e.showSpinner?e.spinnerRadius:0,l=(t.getWidth()-2*s-(e.showSpinner&&n?10:0)-n)/2-(e.showSpinner&&n?0:5+n/2)+(e.showSpinner?0:n/2)+(n?0:s),u=t.getHeight()/2;e.showSpinner&&r.setShape({cx:l,cy:u}),a.setShape({x:l-s,y:u-s,width:2*s,height:2*s}),i.setShape({x:0,y:0,width:t.getWidth(),height:t.getHeight()})},n.resize(),n})),Bm({type:Ms,event:Ms,update:Ms},ft),Bm({type:Is,event:Is,update:Is},ft),Bm({type:Ts,event:Ts,update:Ts},ft),Bm({type:Cs,event:Cs,update:Cs},ft),Bm({type:As,event:As,update:As},ft),Om("light",sg),Om("dark",pg);var Zm=[],jm={registerPreprocessor:Rm,registerProcessor:Nm,registerPostInit:Em,registerPostUpdate:zm,registerAction:Bm,registerCoordinateSystem:Vm,registerLayout:Fm,registerVisual:Gm,registerTransform:Xm,registerLoading:Um,registerMap:Ym,PRIORITY:zv,ComponentModel:Wc,ComponentView:xf,SeriesModel:pf,ChartView:Mf,registerComponentModel:function(t){Wc.registerClass(t)},registerComponentView:function(t){xf.registerClass(t)},registerSeriesModel:function(t){pf.registerClass(t)},registerChartView:function(t){Mf.registerClass(t)},registerSubTypeDefaulter:function(t,e){Wc.registerSubTypeDefaulter(t,e)},registerPainter:function(t,e){Wi(t,e)}};function qm(t){F(t)?P(t,(function(t){qm(t)})):A(Zm,t)>=0||(Zm.push(t),G(t)&&(t={install:t}),t.install(jm))}function Km(t){return null==t?0:t.length||1}function $m(t){return t}var Jm=function(){function t(t,e,n,i,r,o){this._old=t,this._new=e,this._oldKeyGetter=n||$m,this._newKeyGetter=i||$m,this.context=r,this._diffModeMultiple="multiple"===o}return t.prototype.add=function(t){return this._add=t,this},t.prototype.update=function(t){return this._update=t,this},t.prototype.updateManyToOne=function(t){return this._updateManyToOne=t,this},t.prototype.updateOneToMany=function(t){return this._updateOneToMany=t,this},t.prototype.remove=function(t){return this._remove=t,this},t.prototype.execute=function(){this[this._diffModeMultiple?"_executeMultiple":"_executeOneToOne"]()},t.prototype._executeOneToOne=function(){var t=this._old,e=this._new,n={},i=new Array(t.length),r=new Array(e.length);this._initIndexMap(t,null,i,"_oldKeyGetter"),this._initIndexMap(e,n,r,"_newKeyGetter");for(var o=0;o<t.length;o++){var a=i[o],s=n[a],l=Km(s);if(l>1){var u=s.shift();1===s.length&&(n[a]=s[0]),this._update&&this._update(u,o)}else 1===l?(n[a]=null,this._update&&this._update(s,o)):this._remove&&this._remove(o)}this._performRestAdd(r,n)},t.prototype._executeMultiple=function(){var t=this._old,e=this._new,n={},i={},r=[],o=[];this._initIndexMap(t,n,r,"_oldKeyGetter"),this._initIndexMap(e,i,o,"_newKeyGetter");for(var a=0;a<r.length;a++){var s=r[a],l=n[s],u=i[s],h=Km(l),c=Km(u);if(h>1&&1===c)this._updateManyToOne&&this._updateManyToOne(u,l),i[s]=null;else if(1===h&&c>1)this._updateOneToMany&&this._updateOneToMany(u,l),i[s]=null;else if(1===h&&1===c)this._update&&this._update(u,l),i[s]=null;else if(h>1)for(var p=0;p<h;p++)this._remove&&this._remove(l[p]);else this._remove&&this._remove(l)}this._performRestAdd(o,i)},t.prototype._performRestAdd=function(t,e){for(var n=0;n<t.length;n++){var i=t[n],r=e[i],o=Km(r);if(o>1)for(var a=0;a<o;a++)this._add&&this._add(r[a]);else 1===o&&this._add&&this._add(r);e[i]=null}},t.prototype._initIndexMap=function(t,e,n,i){for(var r=this._diffModeMultiple,o=0;o<t.length;o++){var a="_ec_"+this[i](t[o],o);if(r||(n[o]=a),e){var s=e[a],l=Km(s);0===l?(e[a]=o,r&&n.push(a)):1===l?e[a]=[s,o]:s.push(o)}}},t}();function Qm(t,e){return t.hasOwnProperty(e)||(t[e]=[]),t[e]}function t_(t){return"category"===t?"ordinal":"time"===t?"time":"float"}var e_,n_,i_,r_,o_,a_,s_,l_,u_,h_,c_,p_,d_,f_,g_=function(t){this.otherDims={},null!=t&&I(this,t)},y_=Math.floor,v_=Y,m_=O,__="undefined",x_={float:typeof Float64Array===__?Array:Float64Array,int:typeof Int32Array===__?Array:Int32Array,ordinal:Array,number:Array,time:Array},b_=typeof Uint32Array===__?Array:Uint32Array,w_=typeof Int32Array===__?Array:Int32Array,S_=typeof Uint16Array===__?Array:Uint16Array,M_=["hasItemOption","_nameList","_idList","_invertedIndicesMap","_rawData","_dimValueGetter","_count","_rawCount","_nameDimIdx","_idDimIdx","_nameRepeatCount"],I_=["_extent","_approximateExtent","_rawExtent"],T_=function(){function t(t,e){this.type="list",this._count=0,this._rawCount=0,this._storage={},this._storageArr=[],this._nameList=[],this._idList=[],this._visual={},this._layout={},this._itemVisuals=[],this._itemLayouts=[],this._graphicEls=[],this._rawExtent={},this._extent={},this._approximateExtent={},this._calculationInfo={},this.hasItemOption=!0,this.TRANSFERABLE_METHODS=["cloneShallow","downSample","lttbDownSample","map"],this.CHANGABLE_METHODS=["filterSelf","selectRange"],this.DOWNSAMPLE_METHODS=["downSample","lttbDownSample"],this.getRawIndex=o_,t=t||["x","y"];for(var n={},i=[],r={},o=0;o<t.length;o++){var a=t[o],s=H(a)?new g_({name:a}):a instanceof g_?a:new g_(a),l=s.name;s.type=s.type||"float",s.coordDim||(s.coordDim=l,s.coordDimIndex=0);var u=s.otherDims=s.otherDims||{};i.push(l),n[l]=s,s.index=o,s.createInvertedIndices&&(r[l]=[]),0===u.itemName&&(this._nameDimIdx=o,this._nameOrdinalMeta=s.ordinalMeta),0===u.itemId&&(this._idDimIdx=o,this._idOrdinalMeta=s.ordinalMeta)}this.dimensions=i,this._dimensionInfos=n,this.hostModel=e,this._dimensionsSummary=function(t){var e={},n=e.encode={},i=ht(),r=[],o=[],a=e.userOutput={dimensionNames:t.dimensions.slice(),encode:{}};P(t.dimensions,(function(e){var s,l=t.getDimensionInfo(e),u=l.coordDim;if(u){var h=l.coordDimIndex;Qm(n,u)[h]=e,l.isExtraCoord||(i.set(u,1),"ordinal"!==(s=l.type)&&"time"!==s&&(r[0]=e),Qm(a.encode,u)[h]=l.index),l.defaultTooltip&&o.push(e)}Zc.each((function(t,e){var i=Qm(n,e),r=l.otherDims[e];null!=r&&!1!==r&&(i[r]=l.name)}))}));var s=[],l={};i.each((function(t,e){var i=n[e];l[e]=i[0],s=s.concat(i)})),e.dataDimsOnCoord=s,e.encodeFirstDimNotExtra=l;var u=n.label;u&&u.length&&(r=u.slice());var h=n.tooltip;return h&&h.length?o=h.slice():o.length||(o=r.slice()),n.defaultedLabel=r,n.defaultedTooltip=o,e}(this),this._invertedIndicesMap=r,this.userOutput=this._dimensionsSummary.userOutput}return t.prototype.getDimension=function(t){return"number"!=typeof t&&(isNaN(t)||this._dimensionInfos.hasOwnProperty(t))||(t=this.dimensions[t]),t},t.prototype.getDimensionInfo=function(t){return this._dimensionInfos[this.getDimension(t)]},t.prototype.getDimensionsOnCoord=function(){return this._dimensionsSummary.dataDimsOnCoord.slice()},t.prototype.mapDimension=function(t,e){var n=this._dimensionsSummary;if(null==e)return n.encodeFirstDimNotExtra[t];var i=n.encode[t];return i?i[e]:null},t.prototype.mapDimensionsAll=function(t){return(this._dimensionsSummary.encode[t]||[]).slice()},t.prototype.initData=function(t,e,n){var i=rd(t)||k(t),r=i?new cd(t,this.dimensions.length):t;this._rawData=r;var o=r.getSource().sourceFormat;this._storage={},this._indices=null,this._dontMakeIdFromName=null!=this._idDimIdx||o===Jc||!!r.fillStorage,this._nameList=(e||[]).slice(),this._idList=[],this._nameRepeatCount={},n||(this.hasItemOption=!1),this.defaultDimValueGetter=e_[o],this._dimValueGetter=n=n||this.defaultDimValueGetter,this._dimValueGetterArrayRows=e_.arrayRows,this._rawExtent={},this._initDataFromProvider(0,r.count()),r.pure&&(this.hasItemOption=!1)},t.prototype.getProvider=function(){return this._rawData},t.prototype.appendData=function(t){var e=this._rawData,n=this.count();e.appendData(t);var i=e.count();e.persistent||(i+=n),this._initDataFromProvider(n,i,!0)},t.prototype.appendValues=function(t,e){for(var n=this._storage,i=this.dimensions,r=i.length,o=this._rawExtent,a=this.count(),s=a+Math.max(t.length,e?e.length:0),l=0;l<r;l++){var u=i[l];o[u]||(o[u]=p_()),r_(n,this._dimensionInfos[u],s,!0)}for(var h=m_(i,(function(t){return o[t]})),c=this._storageArr=m_(i,(function(t){return n[t]})),p=[],d=a;d<s;d++){for(var f=d-a,g=0;g<r;g++){u=i[g];var y=this._dimValueGetterArrayRows(t[f]||p,u,f,g);c[g][d]=y;var v=h[g];y<v[0]&&(v[0]=y),y>v[1]&&(v[1]=y)}e&&(this._nameList[d]=e[f],this._dontMakeIdFromName||u_(this,d))}this._rawCount=this._count=s,this._extent={},n_(this)},t.prototype._initDataFromProvider=function(t,e,n){if(!(t>=e)){for(var i=this._rawData,r=this._storage,o=this.dimensions,a=o.length,s=this._dimensionInfos,l=this._nameList,u=this._idList,h=this._rawExtent,c=i.getSource().sourceFormat===jc,p=0;p<a;p++){var d=o[p];h[d]||(h[d]=p_()),r_(r,s[d],e,n)}var f=this._storageArr=m_(o,(function(t){return r[t]})),g=m_(o,(function(t){return h[t]}));if(i.fillStorage)i.fillStorage(t,e,f,g);else for(var y=[],v=t;v<e;v++){y=i.getItem(v,y);for(var m=0;m<a;m++){d=o[m];var _=f[m],x=this._dimValueGetter(y,d,v,m);_[v]=x;var b=g[m];x<b[0]&&(b[0]=x),x>b[1]&&(b[1]=x)}if(c&&!i.pure&&y){var w=y.name;null==l[v]&&null!=w&&(l[v]=Tr(w,null));var S=y.id;null==u[v]&&null!=S&&(u[v]=Tr(S,null))}this._dontMakeIdFromName||u_(this,v)}!i.persistent&&i.clean&&i.clean(),this._rawCount=this._count=e,this._extent={},n_(this)}},t.prototype.count=function(){return this._count},t.prototype.getIndices=function(){var t,e=this._indices;if(e){var n=e.constructor,i=this._count;if(n===Array){t=new n(i);for(var r=0;r<i;r++)t[r]=e[r]}else t=new n(e.buffer,0,i)}else{t=new(n=i_(this))(this.count());for(r=0;r<t.length;r++)t[r]=r}return t},t.prototype.getByDimIdx=function(t,e){if(!(e>=0&&e<this._count))return NaN;var n=this._storageArr[t];return n?n[this.getRawIndex(e)]:NaN},t.prototype.get=function(t,e){if(!(e>=0&&e<this._count))return NaN;var n=this._storage[t];return n?n[this.getRawIndex(e)]:NaN},t.prototype.getByRawIndex=function(t,e){if(!(e>=0&&e<this._rawCount))return NaN;var n=this._storage[t];return n?n[e]:NaN},t.prototype.getValues=function(t,e){var n=[];F(t)||(e=t,t=this.dimensions);for(var i=0,r=t.length;i<r;i++)n.push(this.get(t[i],e));return n},t.prototype.hasValue=function(t){for(var e=this._dimensionsSummary.dataDimsOnCoord,n=0,i=e.length;n<i;n++)if(isNaN(this.get(e[n],t)))return!1;return!0},t.prototype.getDataExtent=function(t){t=this.getDimension(t);var e=this._storage[t],n=p_();if(!e)return n;var i,r=this.count();if(!this._indices)return this._rawExtent[t].slice();if(i=this._extent[t])return i.slice();for(var o=(i=n)[0],a=i[1],s=0;s<r;s++){var l=e[this.getRawIndex(s)];l<o&&(o=l),l>a&&(a=l)}return i=[o,a],this._extent[t]=i,i},t.prototype.getApproximateExtent=function(t){return t=this.getDimension(t),this._approximateExtent[t]||this.getDataExtent(t)},t.prototype.setApproximateExtent=function(t,e){e=this.getDimension(e),this._approximateExtent[e]=t.slice()},t.prototype.getCalculationInfo=function(t){return this._calculationInfo[t]},t.prototype.setCalculationInfo=function(t,e){v_(t)?I(this._calculationInfo,t):this._calculationInfo[t]=e},t.prototype.getSum=function(t){var e=0;if(this._storage[t])for(var n=0,i=this.count();n<i;n++){var r=this.get(t,n);isNaN(r)||(e+=r)}return e},t.prototype.getMedian=function(t){var e=[];this.each(t,(function(t){isNaN(t)||e.push(t)}));var n=e.sort((function(t,e){return t-e})),i=this.count();return 0===i?0:i%2==1?n[(i-1)/2]:(n[i/2]+n[i/2-1])/2},t.prototype.rawIndexOf=function(t,e){var n=t&&this._invertedIndicesMap[t];var i=n[e];return null==i||isNaN(i)?-1:i},t.prototype.indexOfName=function(t){for(var e=0,n=this.count();e<n;e++)if(this.getName(e)===t)return e;return-1},t.prototype.indexOfRawIndex=function(t){if(t>=this._rawCount||t<0)return-1;if(!this._indices)return t;var e=this._indices,n=e[t];if(null!=n&&n<this._count&&n===t)return t;for(var i=0,r=this._count-1;i<=r;){var o=(i+r)/2|0;if(e[o]<t)i=o+1;else{if(!(e[o]>t))return o;r=o-1}}return-1},t.prototype.indicesOfNearest=function(t,e,n){var i=this._storage[t],r=[];if(!i)return r;null==n&&(n=1/0);for(var o=1/0,a=-1,s=0,l=0,u=this.count();l<u;l++){var h=e-i[this.getRawIndex(l)],c=Math.abs(h);c<=n&&((c<o||c===o&&h>=0&&a<0)&&(o=c,a=h,s=0),h===a&&(r[s++]=l))}return r.length=s,r},t.prototype.getRawDataItem=function(t){if(this._rawData.persistent)return this._rawData.getItem(this.getRawIndex(t));for(var e=[],n=0;n<this.dimensions.length;n++){var i=this.dimensions[n];e.push(this.get(i,t))}return e},t.prototype.getName=function(t){var e=this.getRawIndex(t),n=this._nameList[e];return null==n&&null!=this._nameDimIdx&&(n=l_(this,this._nameDimIdx,this._nameOrdinalMeta,e)),null==n&&(n=""),n},t.prototype.getId=function(t){return s_(this,this.getRawIndex(t))},t.prototype.each=function(t,e,n,i){var r=this;if(this._count){"function"==typeof t&&(i=n,n=e,e=t,t=[]);var o=n||i||this,a=m_(h_(t),this.getDimension,this);0;for(var s=a.length,l=m_(a,(function(t){return r._dimensionInfos[t].index})),u=this._storageArr,h=0,c=this.count();h<c;h++){var p=this.getRawIndex(h);switch(s){case 0:e.call(o,h);break;case 1:e.call(o,u[l[0]][p],h);break;case 2:e.call(o,u[l[0]][p],u[l[1]][p],h);break;default:for(var d=0,f=[];d<s;d++)f[d]=u[l[d]][p];f[d]=h,e.apply(o,f)}}}},t.prototype.filterSelf=function(t,e,n,i){var r=this;if(this._count){"function"==typeof t&&(i=n,n=e,e=t,t=[]);var o=n||i||this,a=m_(h_(t),this.getDimension,this);0;for(var s=this.count(),l=new(i_(this))(s),u=[],h=a.length,c=0,p=m_(a,(function(t){return r._dimensionInfos[t].index})),d=p[0],f=this._storageArr,g=0;g<s;g++){var y=void 0,v=this.getRawIndex(g);if(0===h)y=e.call(o,g);else if(1===h){var m=f[d][v];y=e.call(o,m,g)}else{for(var _=0;_<h;_++)u[_]=f[p[_]][v];u[_]=g,y=e.apply(o,u)}y&&(l[c++]=v)}return c<s&&(this._indices=l),this._count=c,this._extent={},this.getRawIndex=this._indices?a_:o_,this}},t.prototype.selectRange=function(t){var e=this,n=this._count;if(n){var i=[];for(var r in t)t.hasOwnProperty(r)&&i.push(r);0;var o=i.length;if(o){var a=this.count(),s=new(i_(this))(a),l=0,u=i[0],h=m_(i,(function(t){return e._dimensionInfos[t].index})),c=t[u][0],p=t[u][1],d=this._storageArr,f=!1;if(!this._indices){var g=0;if(1===o){for(var y=d[h[0]],v=0;v<n;v++){((b=y[v])>=c&&b<=p||isNaN(b))&&(s[l++]=g),g++}f=!0}else if(2===o){y=d[h[0]];var m=d[h[1]],_=t[i[1]][0],x=t[i[1]][1];for(v=0;v<n;v++){var b=y[v],w=m[v];(b>=c&&b<=p||isNaN(b))&&(w>=_&&w<=x||isNaN(w))&&(s[l++]=g),g++}f=!0}}if(!f)if(1===o)for(v=0;v<a;v++){var S=this.getRawIndex(v);((b=d[h[0]][S])>=c&&b<=p||isNaN(b))&&(s[l++]=S)}else for(v=0;v<a;v++){for(var M=!0,I=(S=this.getRawIndex(v),0);I<o;I++){var T=i[I];((b=d[h[I]][S])<t[T][0]||b>t[T][1])&&(M=!1)}M&&(s[l++]=this.getRawIndex(v))}return l<a&&(this._indices=s),this._count=l,this._extent={},this.getRawIndex=this._indices?a_:o_,this}}},t.prototype.mapArray=function(t,e,n,i){"function"==typeof t&&(i=n,n=e,e=t,t=[]),n=n||i||this;var r=[];return this.each(t,(function(){r.push(e&&e.apply(this,arguments))}),n),r},t.prototype.map=function(t,e,n,i){var r=n||i||this,o=m_(h_(t),this.getDimension,this);var a=c_(this,o),s=a._storage;a._indices=this._indices,a.getRawIndex=a._indices?a_:o_;for(var l=[],u=o.length,h=this.count(),c=[],p=a._rawExtent,d=0;d<h;d++){for(var f=0;f<u;f++)c[f]=this.get(o[f],d);c[u]=d;var g=e&&e.apply(r,c);if(null!=g){"object"!=typeof g&&(l[0]=g,g=l);for(var y=this.getRawIndex(d),v=0;v<g.length;v++){var m=o[v],_=g[v],x=p[m],b=s[m];b&&(b[y]=_),_<x[0]&&(x[0]=_),_>x[1]&&(x[1]=_)}}}return a},t.prototype.downSample=function(t,e,n,i){for(var r=c_(this,[t]),o=r._storage,a=[],s=y_(1/e),l=o[t],u=this.count(),h=r._rawExtent[t],c=new(i_(this))(u),p=0,d=0;d<u;d+=s){s>u-d&&(s=u-d,a.length=s);for(var f=0;f<s;f++){var g=this.getRawIndex(d+f);a[f]=l[g]}var y=n(a),v=this.getRawIndex(Math.min(d+i(a,y)||0,u-1));l[v]=y,y<h[0]&&(h[0]=y),y>h[1]&&(h[1]=y),c[p++]=v}return r._count=p,r._indices=c,r.getRawIndex=a_,r},t.prototype.lttbDownSample=function(t,e){var n,i,r,o=c_(this,[]),a=o._storage[t],s=this.count(),l=new(i_(this))(s),u=0,h=y_(1/e),c=this.getRawIndex(0);l[u++]=c;for(var p=1;p<s-1;p+=h){for(var d=Math.min(p+h,s-1),f=Math.min(p+2*h,s),g=(f+d)/2,y=0,v=d;v<f;v++){var m=a[S=this.getRawIndex(v)];isNaN(m)||(y+=m)}y/=f-d;var _=p,x=Math.min(p+h,s),b=p-1,w=a[c];n=-1,r=_;for(v=_;v<x;v++){var S;m=a[S=this.getRawIndex(v)];isNaN(m)||(i=Math.abs((b-g)*(m-w)-(b-v)*(y-w)))>n&&(n=i,r=S)}l[u++]=r,c=r}return l[u++]=this.getRawIndex(s-1),o._count=u,o._indices=l,o.getRawIndex=a_,o},t.prototype.getItemModel=function(t){var e=this.hostModel,n=this.getRawDataItem(t);return new kh(n,e,e&&e.ecModel)},t.prototype.diff=function(t){var e=this;return new Jm(t?t.getIndices():[],this.getIndices(),(function(e){return s_(t,e)}),(function(t){return s_(e,t)}))},t.prototype.getVisual=function(t){var e=this._visual;return e&&e[t]},t.prototype.setVisual=function(t,e){this._visual=this._visual||{},v_(t)?I(this._visual,t):this._visual[t]=e},t.prototype.getItemVisual=function(t,e){var n=this._itemVisuals[t],i=n&&n[e];return null==i?this.getVisual(e):i},t.prototype.hasItemVisual=function(){return this._itemVisuals.length>0},t.prototype.ensureUniqueItemVisual=function(t,e){var n=this._itemVisuals,i=n[t];i||(i=n[t]={});var r=i[e];return null==r&&(F(r=this.getVisual(e))?r=r.slice():v_(r)&&(r=I({},r)),i[e]=r),r},t.prototype.setItemVisual=function(t,e,n){var i=this._itemVisuals[t]||{};this._itemVisuals[t]=i,v_(e)?I(i,e):i[e]=n},t.prototype.clearAllVisual=function(){this._visual={},this._itemVisuals=[]},t.prototype.setLayout=function(t,e){if(v_(t))for(var n in t)t.hasOwnProperty(n)&&this.setLayout(n,t[n]);else this._layout[t]=e},t.prototype.getLayout=function(t){return this._layout[t]},t.prototype.getItemLayout=function(t){return this._itemLayouts[t]},t.prototype.setItemLayout=function(t,e,n){this._itemLayouts[t]=n?I(this._itemLayouts[t]||{},e):e},t.prototype.clearItemLayouts=function(){this._itemLayouts.length=0},t.prototype.setItemGraphicEl=function(t,e){var n=this.hostModel;if(e){var i=vs(e);i.dataIndex=t,i.dataType=this.dataType,i.seriesIndex=n&&n.seriesIndex,"group"===e.type&&e.traverse(d_,e)}this._graphicEls[t]=e},t.prototype.getItemGraphicEl=function(t){return this._graphicEls[t]},t.prototype.eachItemGraphicEl=function(t,e){P(this._graphicEls,(function(n,i){n&&t&&t.call(e,n,i)}))},t.prototype.cloneShallow=function(e){e||(e=new t(m_(this.dimensions,this.getDimensionInfo,this),this.hostModel));if(e._storage=this._storage,e._storageArr=this._storageArr,f_(e,this),this._indices){var n=this._indices.constructor;if(n===Array){var i=this._indices.length;e._indices=new n(i);for(var r=0;r<i;r++)e._indices[r]=this._indices[r]}else e._indices=new n(this._indices)}else e._indices=null;return e.getRawIndex=e._indices?a_:o_,e},t.prototype.wrapMethod=function(t,e){var n=this[t];"function"==typeof n&&(this.__wrappedMethods=this.__wrappedMethods||[],this.__wrappedMethods.push(t),this[t]=function(){var t=n.apply(this,arguments);return e.apply(this,[t].concat(nt(arguments)))})},t.internalField=function(){function e(t,e,n,i){return Dd(t[i],this._dimensionInfos[e])}e_={arrayRows:e,objectRows:function(t,e,n,i){return Dd(t[e],this._dimensionInfos[e])},keyedColumns:e,original:function(t,e,n,i){var r=t&&(null==t.value?t:t.value);return!this._rawData.pure&&function(t){return Y(t)&&!(t instanceof Array)}(t)&&(this.hasItemOption=!0),Dd(r instanceof Array?r[i]:r,this._dimensionInfos[e])},typedArray:function(t,e,n,i){return t[i]}},n_=function(t){var e=t._invertedIndicesMap;P(e,(function(n,i){var r=t._dimensionInfos[i].ordinalMeta;if(r){n=e[i]=new w_(r.categories.length);for(var o=0;o<n.length;o++)n[o]=-1;for(o=0;o<t._count;o++)n[t.get(i,o)]=o}}))},l_=function(t,e,n,i){var r,o=t._storageArr[e];return o&&(r=o[i],n&&n.categories.length&&(r=n.categories[r])),Tr(r,null)},i_=function(t){return t._rawCount>65535?b_:S_},r_=function(t,e,n,i){var r=x_[e.type],o=e.name;if(i){var a=t[o],s=a&&a.length;if(s!==n){for(var l=new r(n),u=0;u<s;u++)l[u]=a[u];t[o]=l}}else t[o]=new r(n)},o_=function(t){return t},a_=function(t){return t<this._count&&t>=0?this._indices[t]:-1},s_=function(t,e){var n=t._idList[e];return null==n&&null!=t._idDimIdx&&(n=l_(t,t._idDimIdx,t._idOrdinalMeta,e)),null==n&&(n="e\0\0"+e),n},h_=function(t){return F(t)||(t=null!=t?[t]:[]),t},function(t,e){for(var n=0;n<e.length;n++)t._dimensionInfos[e[n]]||console.error("Unkown dimension "+e[n])},c_=function(e,n){var i=e.dimensions,r=new t(m_(i,e.getDimensionInfo,e),e.hostModel);f_(r,e);for(var o,a,s=r._storage={},l=e._storage,u=r._storageArr=[],h=0;h<i.length;h++){var c=i[h];l[c]&&(A(n,c)>=0?(s[c]=(o=l[c],a=void 0,(a=o.constructor)===Array?o.slice():new a(o)),r._rawExtent[c]=p_(),r._extent[c]=null):s[c]=l[c],u.push(s[c]))}return r},p_=function(){return[1/0,-1/0]},d_=function(t){var e=vs(t),n=vs(this);e.seriesIndex=n.seriesIndex,e.dataIndex=n.dataIndex,e.dataType=n.dataType},f_=function(t,e){P(M_.concat(e.__wrappedMethods||[]),(function(n){e.hasOwnProperty(n)&&(t[n]=e[n])})),t.__wrappedMethods=e.__wrappedMethods,P(I_,(function(n){t[n]=w(e[n])})),t._calculationInfo=I({},e._calculationInfo)},u_=function(t,e){var n=t._nameList,i=t._idList,r=t._nameDimIdx,o=t._idDimIdx,a=n[e],s=i[e];if(null==a&&null!=r&&(n[e]=a=l_(t,r,t._nameOrdinalMeta,e)),null==s&&null!=o&&(i[e]=s=l_(t,o,t._idOrdinalMeta,e)),null==s&&null!=a){var l=t._nameRepeatCount,u=l[a]=(l[a]||0)+1;s=a,u>1&&(s+="__ec__"+u),i[e]=s}}}(),t}();function C_(t,e,n){rd(e)||(e=ad(e)),n=n||{},t=(t||[]).slice();for(var i=(n.dimsDef||[]).slice(),r=ht(),o=ht(),a=[],s=function(t,e,n,i){var r=Math.max(t.dimensionsDetectedCount||1,e.length,n.length,i||0);return P(e,(function(t){var e;Y(t)&&(e=t.dimsDef)&&(r=Math.max(r,e.length))})),r}(e,t,i,n.dimCount),l=0;l<s;l++){var u=i[l],h=i[l]=I({},Y(u)?u:{name:u}),c=h.name,p=a[l]=new g_;null!=c&&null==r.get(c)&&(p.name=p.displayName=c,r.set(c,l)),null!=h.type&&(p.type=h.type),null!=h.displayName&&(p.displayName=h.displayName)}var d=n.encodeDef;!d&&n.encodeDefaulter&&(d=n.encodeDefaulter(e,s));var f=ht(d);f.each((function(t,e){var n=_r(t).slice();if(1===n.length&&!H(n[0])&&n[0]<0)f.set(e,!1);else{var i=f.set(e,[]);P(n,(function(t,n){var o=H(t)?r.get(t):t;null!=o&&o<s&&(i[n]=o,y(a[o],e,n))}))}}));var g=0;function y(t,e,n){null!=Zc.get(e)?t.otherDims[e]=n:(t.coordDim=e,t.coordDimIndex=n,o.set(e,!0))}P(t,(function(t){var e,n,i,r;if(H(t))e=t,r={};else{e=(r=t).name;var o=r.ordinalMeta;r.ordinalMeta=null,(r=w(r)).ordinalMeta=o,n=r.dimsDef,i=r.otherDims,r.name=r.coordDim=r.coordDimIndex=r.dimsDef=r.otherDims=null}var s=f.get(e);if(!1!==s){if(!(s=_r(s)).length)for(var l=0;l<(n&&n.length||1);l++){for(;g<a.length&&null!=a[g].coordDim;)g++;g<a.length&&s.push(g++)}P(s,(function(t,o){var s=a[t];if(y(T(s,r),e,o),null==s.name&&n){var l=n[o];!Y(l)&&(l={name:l}),s.name=s.displayName=l.name,s.defaultTooltip=l.defaultTooltip}i&&T(s.otherDims,i)}))}}));var v=n.generateCoord,m=n.generateCoordCount,_=null!=m;m=v?m||1:0;for(var x=v||"value",b=0;b<s;b++){null==(p=a[b]=a[b]||new g_).coordDim&&(p.coordDim=A_(x,o,_),p.coordDimIndex=0,(!v||m<=0)&&(p.isExtraCoord=!0),m--),null==p.name&&(p.name=A_(p.coordDim,r,!1)),null!=p.type||up(e,b)!==np&&(!p.isExtraCoord||null==p.otherDims.itemName&&null==p.otherDims.seriesName)||(p.type="ordinal")}return a}function A_(t,e,n){if(n||null!=e.get(t)){for(var i=0;null!=e.get(t+i);)i++;t+=i}return e.set(t,!0),t}function D_(t,e){return C_((e=e||{}).coordDimensions||[],t,{dimsDef:e.dimensionsDefine||t.dimensionsDefine,encodeDef:e.encodeDefine||t.encodeDefine,dimCount:e.dimensionsCount,encodeDefaulter:e.encodeDefaulter,generateCoord:e.generateCoord,generateCoordCount:e.generateCoordCount})}var L_=function(t){this.coordSysDims=[],this.axisMap=ht(),this.categoryAxisMap=ht(),this.coordSysName=t};var k_={cartesian2d:function(t,e,n,i){var r=t.getReferringComponents("xAxis",Rr).models[0],o=t.getReferringComponents("yAxis",Rr).models[0];e.coordSysDims=["x","y"],n.set("x",r),n.set("y",o),P_(r)&&(i.set("x",r),e.firstCategoryDimIndex=0),P_(o)&&(i.set("y",o),null==e.firstCategoryDimIndex&&(e.firstCategoryDimIndex=1))},singleAxis:function(t,e,n,i){var r=t.getReferringComponents("singleAxis",Rr).models[0];e.coordSysDims=["single"],n.set("single",r),P_(r)&&(i.set("single",r),e.firstCategoryDimIndex=0)},polar:function(t,e,n,i){var r=t.getReferringComponents("polar",Rr).models[0],o=r.findAxisModel("radiusAxis"),a=r.findAxisModel("angleAxis");e.coordSysDims=["radius","angle"],n.set("radius",o),n.set("angle",a),P_(o)&&(i.set("radius",o),e.firstCategoryDimIndex=0),P_(a)&&(i.set("angle",a),null==e.firstCategoryDimIndex&&(e.firstCategoryDimIndex=1))},geo:function(t,e,n,i){e.coordSysDims=["lng","lat"]},parallel:function(t,e,n,i){var r=t.ecModel,o=r.getComponent("parallel",t.get("parallelIndex")),a=e.coordSysDims=o.dimensions.slice();P(o.parallelAxisIndex,(function(t,o){var s=r.getComponent("parallelAxis",t),l=a[o];n.set(l,s),P_(s)&&(i.set(l,s),null==e.firstCategoryDimIndex&&(e.firstCategoryDimIndex=o))}))}};function P_(t){return"category"===t.get("type")}function O_(t,e,n){var i,r,o,a,s=(n=n||{}).byIndex,l=n.stackedCoordDimension,u=!(!t||!t.get("stack"));if(P(e,(function(t,n){H(t)&&(e[n]=t={name:t}),u&&!t.isExtraCoord&&(s||i||!t.ordinalMeta||(i=t),r||"ordinal"===t.type||"time"===t.type||l&&l!==t.coordDim||(r=t))})),!r||s||i||(s=!0),r){o="__\0ecstackresult",a="__\0ecstackedover",i&&(i.createInvertedIndices=!0);var h=r.coordDim,c=r.type,p=0;P(e,(function(t){t.coordDim===h&&p++})),e.push({name:o,coordDim:h,coordDimIndex:p,type:c,isExtraCoord:!0,isCalculationCoord:!0}),p++,e.push({name:a,coordDim:a,coordDimIndex:p,type:c,isExtraCoord:!0,isCalculationCoord:!0})}return{stackedDimension:r&&r.name,stackedByDimension:i&&i.name,isStackedByIndex:s,stackedOverDimension:a,stackResultDimension:o}}function R_(t,e){return!!e&&e===t.getCalculationInfo("stackedDimension")}function N_(t,e){return R_(t,e)?t.getCalculationInfo("stackResultDimension"):e}function E_(t,e,n){n=n||{},rd(t)||(t=ad(t));var i,r=e.get("coordinateSystem"),o=Cp.get(r),a=function(t){var e=t.get("coordinateSystem"),n=new L_(e),i=k_[e];if(i)return i(t,n,n.axisMap,n.categoryAxisMap),n}(e);a&&a.coordSysDims&&(i=O(a.coordSysDims,(function(t){var e={name:t},n=a.axisMap.get(t);if(n){var i=n.get("type");e.type=t_(i)}return e}))),i||(i=o&&(o.getDimensionsInfo?o.getDimensionsInfo():o.dimensions.slice())||["x","y"]);var s,l,u=n.useEncodeDefaulter,h=D_(t,{coordDimensions:i,generateCoord:n.generateCoord,encodeDefaulter:G(u)?u:u?V(ap,i,e):null});a&&P(h,(function(t,e){var i=t.coordDim,r=a.categoryAxisMap.get(i);r&&(null==s&&(s=e),t.ordinalMeta=r.getOrdinalMeta(),n.createInvertedIndices&&(t.createInvertedIndices=!0)),null!=t.otherDims.itemName&&(l=!0)})),l||null==s||(h[s].otherDims.itemName=0);var c=O_(e,h),p=new T_(h,e);p.setCalculationInfo(c);var d=null!=s&&function(t){if(t.sourceFormat===jc){var e=function(t){var e=0;for(;e<t.length&&null==t[e];)e++;return t[e]}(t.data||[]);return null!=e&&!F(wr(e))}}(t)?function(t,e,n,i){return i===s?n:this.defaultDimValueGetter(t,e,n,i)}:null;return p.hasItemOption=!1,p.initData(t,null,d),p}var z_=function(){function t(t){this._setting=t||{},this._extent=[1/0,-1/0]}return t.prototype.getSetting=function(t){return this._setting[t]},t.prototype.unionExtent=function(t){var e=this._extent;t[0]<e[0]&&(e[0]=t[0]),t[1]>e[1]&&(e[1]=t[1])},t.prototype.unionExtentFromData=function(t,e){this.unionExtent(t.getApproximateExtent(e))},t.prototype.getExtent=function(){return this._extent.slice()},t.prototype.setExtent=function(t,e){var n=this._extent;isNaN(t)||(n[0]=t),isNaN(e)||(n[1]=e)},t.prototype.isInExtentRange=function(t){return this._extent[0]<=t&&this._extent[1]>=t},t.prototype.isBlank=function(){return this._isBlank},t.prototype.setBlank=function(t){this._isBlank=t},t}();qr(z_);var B_=function(){function t(t){this.categories=t.categories||[],this._needCollect=t.needCollect,this._deduplication=t.deduplication}return t.createByAxisModel=function(e){var n=e.option,i=n.data,r=i&&O(i,V_);return new t({categories:r,needCollect:!r,deduplication:!1!==n.dedplication})},t.prototype.getOrdinal=function(t){return this._getOrCreateMap().get(t)},t.prototype.parseAndCollect=function(t){var e,n=this._needCollect;if("string"!=typeof t&&!n)return t;if(n&&!this._deduplication)return e=this.categories.length,this.categories[e]=t,e;var i=this._getOrCreateMap();return null==(e=i.get(t))&&(n?(e=this.categories.length,this.categories[e]=t,i.set(t,e)):e=NaN),e},t.prototype._getOrCreateMap=function(){return this._map||(this._map=ht(this.categories))},t}();function V_(t){return Y(t)&&null!=t.value?t.value:t+""}var F_=ji;function G_(t,e,n,i){var r={},o=t[1]-t[0],a=r.interval=sr(o/e,!0);null!=n&&a<n&&(a=r.interval=n),null!=i&&a>i&&(a=r.interval=i);var s=r.intervalPrecision=H_(a);return function(t,e){!isFinite(t[0])&&(t[0]=e[0]),!isFinite(t[1])&&(t[1]=e[1]),W_(t,0,e),W_(t,1,e),t[0]>t[1]&&(t[0]=t[1])}(r.niceTickExtent=[F_(Math.ceil(t[0]/a)*a,s),F_(Math.floor(t[1]/a)*a,s)],t),r}function H_(t){return $i(t)+2}function W_(t,e,n){t[e]=Math.max(Math.min(t[e],n[1]),n[0])}function U_(t,e){return t>=e[0]&&t<=e[1]}function Y_(t,e){return e[1]===e[0]?.5:(t-e[0])/(e[1]-e[0])}function X_(t,e){return t*(e[1]-e[0])+e[0]}var Z_=function(t){function e(e){var n=t.call(this,e)||this;n.type="ordinal";var i=n.getSetting("ordinalMeta");return i||(i=new B_({})),F(i)&&(i=new B_({categories:O(i,(function(t){return Y(t)?t.value:t}))})),n._ordinalMeta=i,n._extent=n.getSetting("extent")||[0,i.categories.length-1],n}return n(e,t),e.prototype.parse=function(t){return"string"==typeof t?this._ordinalMeta.getOrdinal(t):Math.round(t)},e.prototype.contain=function(t){return U_(t=this.parse(t),this._extent)&&null!=this._ordinalMeta.categories[t]},e.prototype.normalize=function(t){return Y_(t=this._getTickNumber(this.parse(t)),this._extent)},e.prototype.scale=function(t){return t=Math.round(X_(t,this._extent)),this.getRawOrdinalNumber(t)},e.prototype.getTicks=function(){for(var t=[],e=this._extent,n=e[0];n<=e[1];)t.push({value:n}),n++;return t},e.prototype.getMinorTicks=function(t){},e.prototype.setSortInfo=function(t){if(null!=t){for(var e=t.ordinalNumbers,n=this._ordinalNumbersByTick=[],i=this._ticksByOrdinalNumber=[],r=0,o=this._ordinalMeta.categories.length,a=Math.min(o,e.length);r<a;++r){var s=e[r];n[r]=s,i[s]=r}for(var l=0;r<o;++r){for(;null!=i[l];)l++;n.push(l),i[l]=r}}else this._ordinalNumbersByTick=this._ticksByOrdinalNumber=null},e.prototype._getTickNumber=function(t){var e=this._ticksByOrdinalNumber;return e&&t>=0&&t<e.length?e[t]:t},e.prototype.getRawOrdinalNumber=function(t){var e=this._ordinalNumbersByTick;return e&&t>=0&&t<e.length?e[t]:t},e.prototype.getLabel=function(t){if(!this.isBlank()){var e=this.getRawOrdinalNumber(t.value),n=this._ordinalMeta.categories[e];return null==n?"":n+""}},e.prototype.count=function(){return this._extent[1]-this._extent[0]+1},e.prototype.unionExtentFromData=function(t,e){this.unionExtent(t.getApproximateExtent(e))},e.prototype.isInExtentRange=function(t){return t=this._getTickNumber(t),this._extent[0]<=t&&this._extent[1]>=t},e.prototype.getOrdinalMeta=function(){return this._ordinalMeta},e.prototype.niceTicks=function(){},e.prototype.niceExtent=function(){},e.type="ordinal",e}(z_);z_.registerClass(Z_);var j_=ji,q_=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="interval",e._interval=0,e._intervalPrecision=2,e}return n(e,t),e.prototype.parse=function(t){return t},e.prototype.contain=function(t){return U_(t,this._extent)},e.prototype.normalize=function(t){return Y_(t,this._extent)},e.prototype.scale=function(t){return X_(t,this._extent)},e.prototype.setExtent=function(t,e){var n=this._extent;isNaN(t)||(n[0]=parseFloat(t)),isNaN(e)||(n[1]=parseFloat(e))},e.prototype.unionExtent=function(t){var e=this._extent;t[0]<e[0]&&(e[0]=t[0]),t[1]>e[1]&&(e[1]=t[1]),this.setExtent(e[0],e[1])},e.prototype.getInterval=function(){return this._interval},e.prototype.setInterval=function(t){this._interval=t,this._niceExtent=this._extent.slice(),this._intervalPrecision=H_(t)},e.prototype.getTicks=function(t){var e=this._interval,n=this._extent,i=this._niceExtent,r=this._intervalPrecision,o=[];if(!e)return o;n[0]<i[0]&&(t?o.push({value:j_(i[0]-e,r)}):o.push({value:n[0]}));for(var a=i[0];a<=i[1]&&(o.push({value:a}),(a=j_(a+e,r))!==o[o.length-1].value);)if(o.length>1e4)return[];var s=o.length?o[o.length-1].value:i[1];return n[1]>s&&(t?o.push({value:j_(s+e,r)}):o.push({value:n[1]})),o},e.prototype.getMinorTicks=function(t){for(var e=this.getTicks(!0),n=[],i=this.getExtent(),r=1;r<e.length;r++){for(var o=e[r],a=e[r-1],s=0,l=[],u=(o.value-a.value)/t;s<t-1;){var h=j_(a.value+(s+1)*u);h>i[0]&&h<i[1]&&l.push(h),s++}n.push(l)}return n},e.prototype.getLabel=function(t,e){if(null==t)return"";var n=e&&e.precision;return null==n?n=$i(t.value)||0:"auto"===n&&(n=this._intervalPrecision),mc(j_(t.value,n,!0))},e.prototype.niceTicks=function(t,e,n){t=t||5;var i=this._extent,r=i[1]-i[0];if(isFinite(r)){r<0&&(r=-r,i.reverse());var o=G_(i,t,e,n);this._intervalPrecision=o.intervalPrecision,this._interval=o.interval,this._niceExtent=o.niceTickExtent}},e.prototype.niceExtent=function(t){var e=this._extent;if(e[0]===e[1])if(0!==e[0]){var n=e[0];t.fixMax||(e[1]+=n/2),e[0]-=n/2}else e[1]=1;var i=e[1]-e[0];isFinite(i)||(e[0]=0,e[1]=1),this.niceTicks(t.splitNumber,t.minInterval,t.maxInterval);var r=this._interval;t.fixMin||(e[0]=j_(Math.floor(e[0]/r)*r)),t.fixMax||(e[1]=j_(Math.ceil(e[1]/r)*r))},e.type="interval",e}(z_);z_.registerClass(q_);var K_="__ec_stack_",$_="undefined"!=typeof Float32Array?Float32Array:Array;function J_(t){return t.get("stack")||K_+t.seriesIndex}function Q_(t){return t.dim+t.index}function tx(t,e){var n=[];return e.eachSeriesByType(t,(function(t){ax(t)&&!sx(t)&&n.push(t)})),n}function ex(t){var e=function(t){var e={};P(t,(function(t){var n=t.coordinateSystem.getBaseAxis();if("time"===n.type||"value"===n.type)for(var i=t.getData(),r=n.dim+"_"+n.index,o=i.mapDimension(n.dim),a=0,s=i.count();a<s;++a){var l=i.get(o,a);e[r]?e[r].push(l):e[r]=[l]}}));var n={};for(var i in e)if(e.hasOwnProperty(i)){var r=e[i];if(r){r.sort((function(t,e){return t-e}));for(var o=null,a=1;a<r.length;++a){var s=r[a]-r[a-1];s>0&&(o=null===o?s:Math.min(o,s))}n[i]=o}}return n}(t),n=[];return P(t,(function(t){var i,r=t.coordinateSystem.getBaseAxis(),o=r.getExtent();if("category"===r.type)i=r.getBandWidth();else if("value"===r.type||"time"===r.type){var a=r.dim+"_"+r.index,s=e[a],l=Math.abs(o[1]-o[0]),u=r.scale.getExtent(),h=Math.abs(u[1]-u[0]);i=s?l/h*s:l}else{var c=t.getData();i=Math.abs(o[1]-o[0])/c.count()}var p=Zi(t.get("barWidth"),i),d=Zi(t.get("barMaxWidth"),i),f=Zi(t.get("barMinWidth")||1,i),g=t.get("barGap"),y=t.get("barCategoryGap");n.push({bandWidth:i,barWidth:p,barMaxWidth:d,barMinWidth:f,barGap:g,barCategoryGap:y,axisKey:Q_(r),stackId:J_(t)})})),nx(n)}function nx(t){var e={};P(t,(function(t,n){var i=t.axisKey,r=t.bandWidth,o=e[i]||{bandWidth:r,remainedWidth:r,autoWidthCount:0,categoryGap:null,gap:"20%",stacks:{}},a=o.stacks;e[i]=o;var s=t.stackId;a[s]||o.autoWidthCount++,a[s]=a[s]||{width:0,maxWidth:0};var l=t.barWidth;l&&!a[s].width&&(a[s].width=l,l=Math.min(o.remainedWidth,l),o.remainedWidth-=l);var u=t.barMaxWidth;u&&(a[s].maxWidth=u);var h=t.barMinWidth;h&&(a[s].minWidth=h);var c=t.barGap;null!=c&&(o.gap=c);var p=t.barCategoryGap;null!=p&&(o.categoryGap=p)}));var n={};return P(e,(function(t,e){n[e]={};var i=t.stacks,r=t.bandWidth,o=t.categoryGap;if(null==o){var a=z(i).length;o=Math.max(35-4*a,15)+"%"}var s=Zi(o,r),l=Zi(t.gap,1),u=t.remainedWidth,h=t.autoWidthCount,c=(u-s)/(h+(h-1)*l);c=Math.max(c,0),P(i,(function(t){var e=t.maxWidth,n=t.minWidth;if(t.width){i=t.width;e&&(i=Math.min(i,e)),n&&(i=Math.max(i,n)),t.width=i,u-=i+l*i,h--}else{var i=c;e&&e<i&&(i=Math.min(e,u)),n&&n>i&&(i=n),i!==c&&(t.width=i,u-=i+l*i,h--)}})),c=(u-s)/(h+(h-1)*l),c=Math.max(c,0);var p,d=0;P(i,(function(t,e){t.width||(t.width=c),p=t,d+=t.width*(1+l)})),p&&(d-=p.width*l);var f=-d/2;P(i,(function(t,i){n[e][i]=n[e][i]||{bandWidth:r,offset:f,width:t.width},f+=t.width*(1+l)}))})),n}function ix(t,e,n){if(t&&e){var i=t[Q_(e)];return null!=i&&null!=n?i[J_(n)]:i}}function rx(t,e){var n=tx(t,e),i=ex(n),r={};P(n,(function(t){var e=t.getData(),n=t.coordinateSystem,o=n.getBaseAxis(),a=J_(t),s=i[Q_(o)][a],l=s.offset,u=s.width,h=n.getOtherAxis(o),c=t.get("barMinHeight")||0;r[a]=r[a]||[],e.setLayout({bandWidth:s.bandWidth,offset:l,size:u});for(var p=e.mapDimension(h.dim),d=e.mapDimension(o.dim),f=R_(e,p),g=h.isHorizontal(),y=lx(o,h),v=0,m=e.count();v<m;v++){var _=e.get(p,v),x=e.get(d,v),b=_>=0?"p":"n",w=y;f&&(r[a][x]||(r[a][x]={p:y,n:y}),w=r[a][x][b]);var S,M=void 0,I=void 0,T=void 0,C=void 0;if(g)M=w,I=(S=n.dataToPoint([_,x]))[1]+l,T=S[0]-y,C=u,Math.abs(T)<c&&(T=(T<0?-1:1)*c),isNaN(T)||f&&(r[a][x][b]+=T);else M=(S=n.dataToPoint([x,_]))[0]+l,I=w,T=u,C=S[1]-y,Math.abs(C)<c&&(C=(C<=0?-1:1)*c),isNaN(C)||f&&(r[a][x][b]+=C);e.setItemLayout(v,{x:M,y:I,width:T,height:C})}}))}var ox={seriesType:"bar",plan:bf(),reset:function(t){if(ax(t)&&sx(t)){var e=t.getData(),n=t.coordinateSystem,i=n.master.getRect(),r=n.getBaseAxis(),o=n.getOtherAxis(r),a=e.mapDimension(o.dim),s=e.mapDimension(r.dim),l=o.isHorizontal(),u=l?0:1,h=ix(ex([t]),r,t).width;return h>.5||(h=.5),{progress:function(t,e){for(var c,p=t.count,d=new $_(2*p),f=new $_(2*p),g=new $_(p),y=[],v=[],m=0,_=0;null!=(c=t.next());)v[u]=e.get(a,c),v[1-u]=e.get(s,c),y=n.dataToPoint(v,null,y),f[m]=l?i.x+i.width:y[0],d[m++]=y[0],f[m]=l?y[1]:i.y+i.height,d[m++]=y[1],g[_++]=c;e.setLayout({largePoints:d,largeDataIndices:g,largeBackgroundPoints:f,barWidth:h,valueAxisStart:lx(r,o),backgroundStart:l?i.x:i.y,valueAxisHorizontal:l})}}}}};function ax(t){return t.coordinateSystem&&"cartesian2d"===t.coordinateSystem.type}function sx(t){return t.pipelineContext&&t.pipelineContext.large}function lx(t,e,n){return e.toGlobalCoord(e.dataToCoord("log"===e.type?1:0))}var ux=function(t){function e(e){var n=t.call(this,e)||this;return n.type="time",n}return n(e,t),e.prototype.getLabel=function(t){var e=this.getSetting("useUTC");return ec(t.value,qh[function(t){switch(t){case"year":case"month":return"day";case"millisecond":return"millisecond";default:return"second"}}(Qh(this._minLevelUnit))]||qh.second,e,this.getSetting("locale"))},e.prototype.getFormattedLabel=function(t,e,n){var i=this.getSetting("useUTC");return function(t,e,n,i,r){var o=null;if("string"==typeof n)o=n;else if("function"==typeof n)o=n(t.value,e,{level:t.level});else{var a=I({},Zh);if(t.level>0)for(var s=0;s<Kh.length;++s)a[Kh[s]]="{primary|"+a[Kh[s]]+"}";var l=n?!1===n.inherit?n:T(n,a):a,u=nc(t.value,r);if(l[u])o=l[u];else if(l.inherit){for(s=$h.indexOf(u)-1;s>=0;--s)if(l[u]){o=l[u];break}o=o||a.none}if(F(o)){var h=null==t.level?0:t.level>=0?t.level:o.length+t.level;o=o[h=Math.min(h,o.length-1)]}}return ec(new Date(t.value),o,r,i)}(t,e,n,this.getSetting("locale"),i)},e.prototype.getTicks=function(t){var e=this._interval,n=this._extent,i=[];if(!e)return i;i.push({value:n[0],level:0});var r=this.getSetting("useUTC"),o=function(t,e,n,i){var r=1e4,o=$h,a=0;function s(t,e,n,r,o,a,s){for(var l=new Date(e),u=e,h=l[r]();u<n&&u<=i[1];)s.push({value:u}),h+=t,l[o](h),u=l.getTime();s.push({value:u,notAdd:!0})}function l(t,r,o){var a=[],l=!r.length;if(!function(t,e,n,i){var r=rr(e),o=rr(n),a=function(t){return ic(r,t,i)===ic(o,t,i)},s=function(){return a("year")},l=function(){return s()&&a("month")},u=function(){return l()&&a("day")},h=function(){return u()&&a("hour")},c=function(){return h()&&a("minute")},p=function(){return c()&&a("second")},d=function(){return p()&&a("millisecond")};switch(t){case"year":return s();case"month":return l();case"day":return u();case"hour":return h();case"minute":return c();case"second":return p();case"millisecond":return d()}}(Qh(t),i[0],i[1],n)){l&&(r=[{value:yx(new Date(i[0]),t,n)},{value:i[1]}]);for(var u=0;u<r.length-1;u++){var h=r[u].value,c=r[u+1].value;if(h!==c){var p=void 0,d=void 0,f=void 0,g=!1;switch(t){case"year":p=Math.max(1,Math.round(e/Yh/365)),d=rc(n),f=cc(n);break;case"half-year":case"quarter":case"month":p=px(e),d=oc(n),f=pc(n);break;case"week":case"half-week":case"day":p=cx(e),d=ac(n),f=dc(n),g=!0;break;case"half-day":case"quarter-day":case"hour":p=dx(e),d=sc(n),f=fc(n);break;case"minute":p=fx(e,!0),d=lc(n),f=gc(n);break;case"second":p=fx(e,!1),d=uc(n),f=yc(n);break;case"millisecond":p=gx(e),d=hc(n),f=vc(n)}s(p,h,c,d,f,g,a),"year"===t&&o.length>1&&0===u&&o.unshift({value:o[0].value-p})}}for(u=0;u<a.length;u++)o.push(a[u]);return a}}for(var u=[],h=[],c=0,p=0,d=0;d<o.length&&a++<r;++d){var f=Qh(o[d]);if(tc(o[d]))if(l(o[d],u[u.length-1]||[],h),f!==(o[d+1]?Qh(o[d+1]):null)){if(h.length){p=c,h.sort((function(t,e){return t.value-e.value}));for(var g=[],y=0;y<h.length;++y){var v=h[y].value;0!==y&&h[y-1].value===v||(g.push(h[y]),v>=i[0]&&v<=i[1]&&c++)}var m=(i[1]-i[0])/e;if(c>1.5*m&&p>m/1.5)break;if(u.push(g),c>m||t===o[d])break}h=[]}}0;var _=N(O(u,(function(t){return N(t,(function(t){return t.value>=i[0]&&t.value<=i[1]&&!t.notAdd}))})),(function(t){return t.length>0})),x=[],b=_.length-1;for(d=0;d<_.length;++d)for(var w=_[d],S=0;S<w.length;++S)x.push({value:w[S].value,level:b-d});x.sort((function(t,e){return t.value-e.value}));var M=[];for(d=0;d<x.length;++d)0!==d&&x[d].value===x[d-1].value||M.push(x[d]);return M}(this._minLevelUnit,this._approxInterval,r,n);return(i=i.concat(o)).push({value:n[1],level:0}),i},e.prototype.niceExtent=function(t){var e=this._extent;if(e[0]===e[1]&&(e[0]-=Yh,e[1]+=Yh),e[1]===-1/0&&e[0]===1/0){var n=new Date;e[1]=+new Date(n.getFullYear(),n.getMonth(),n.getDate()),e[0]=e[1]-Yh}this.niceTicks(t.splitNumber,t.minInterval,t.maxInterval)},e.prototype.niceTicks=function(t,e,n){t=t||10;var i=this._extent,r=i[1]-i[0];this._approxInterval=r/t,null!=e&&this._approxInterval<e&&(this._approxInterval=e),null!=n&&this._approxInterval>n&&(this._approxInterval=n);var o=hx.length,a=Math.min(function(t,e,n,i){for(;n<i;){var r=n+i>>>1;t[r][1]<e?n=r+1:i=r}return n}(hx,this._approxInterval,0,o),o-1);this._interval=hx[a][1],this._minLevelUnit=hx[Math.max(a-1,0)][0]},e.prototype.parse=function(t){return"number"==typeof t?t:+rr(t)},e.prototype.contain=function(t){return U_(this.parse(t),this._extent)},e.prototype.normalize=function(t){return Y_(this.parse(t),this._extent)},e.prototype.scale=function(t){return X_(t,this._extent)},e.type="time",e}(q_),hx=[["second",Hh],["minute",Wh],["hour",Uh],["quarter-day",216e5],["half-day",432e5],["day",10368e4],["half-week",3024e5],["week",6048e5],["month",26784e5],["quarter",8208e6],["half-year",Xh/2],["year",Xh]];function cx(t,e){return(t/=Yh)>16?16:t>7.5?7:t>3.5?4:t>1.5?2:1}function px(t){return(t/=2592e6)>6?6:t>3?3:t>2?2:1}function dx(t){return(t/=Uh)>12?12:t>6?6:t>3.5?4:t>2?2:1}function fx(t,e){return(t/=e?Wh:Hh)>30?30:t>20?20:t>15?15:t>10?10:t>5?5:t>2?2:1}function gx(t){return sr(t,!0)}function yx(t,e,n){var i=new Date(t);switch(Qh(e)){case"year":case"month":i[pc(n)](0);case"day":i[dc(n)](1);case"hour":i[fc(n)](0);case"minute":i[gc(n)](0);case"second":i[yc(n)](0),i[vc(n)](0)}return i.getTime()}z_.registerClass(ux);var vx=z_.prototype,mx=q_.prototype,_x=$i,xx=ji,bx=Math.floor,Sx=Math.ceil,Mx=Math.pow,Ix=Math.log,Tx=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="log",e.base=10,e._originalScale=new q_,e._interval=0,e}return n(e,t),e.prototype.getTicks=function(t){var e=this._originalScale,n=this._extent,i=e.getExtent();return O(mx.getTicks.call(this,t),(function(t){var e=t.value,r=ji(Mx(this.base,e));return r=e===n[0]&&this._fixMin?Ax(r,i[0]):r,{value:r=e===n[1]&&this._fixMax?Ax(r,i[1]):r}}),this)},e.prototype.setExtent=function(t,e){var n=this.base;t=Ix(t)/Ix(n),e=Ix(e)/Ix(n),mx.setExtent.call(this,t,e)},e.prototype.getExtent=function(){var t=this.base,e=vx.getExtent.call(this);e[0]=Mx(t,e[0]),e[1]=Mx(t,e[1]);var n=this._originalScale.getExtent();return this._fixMin&&(e[0]=Ax(e[0],n[0])),this._fixMax&&(e[1]=Ax(e[1],n[1])),e},e.prototype.unionExtent=function(t){this._originalScale.unionExtent(t);var e=this.base;t[0]=Ix(t[0])/Ix(e),t[1]=Ix(t[1])/Ix(e),vx.unionExtent.call(this,t)},e.prototype.unionExtentFromData=function(t,e){this.unionExtent(t.getApproximateExtent(e))},e.prototype.niceTicks=function(t){t=t||10;var e=this._extent,n=e[1]-e[0];if(!(n===1/0||n<=0)){var i=or(n);for(t/n*i<=.5&&(i*=10);!isNaN(i)&&Math.abs(i)<1&&Math.abs(i)>0;)i*=10;var r=[ji(Sx(e[0]/i)*i),ji(bx(e[1]/i)*i)];this._interval=i,this._niceExtent=r}},e.prototype.niceExtent=function(t){mx.niceExtent.call(this,t),this._fixMin=t.fixMin,this._fixMax=t.fixMax},e.prototype.parse=function(t){return t},e.prototype.contain=function(t){return U_(t=Ix(t)/Ix(this.base),this._extent)},e.prototype.normalize=function(t){return Y_(t=Ix(t)/Ix(this.base),this._extent)},e.prototype.scale=function(t){return t=X_(t,this._extent),Mx(this.base,t)},e.type="log",e}(z_),Cx=Tx.prototype;function Ax(t,e){return xx(t,_x(e))}Cx.getMinorTicks=mx.getMinorTicks,Cx.getLabel=mx.getLabel,z_.registerClass(Tx);var Dx=function(){function t(t,e,n){this._prepareParams(t,e,n)}return t.prototype._prepareParams=function(t,e,n){n[1]<n[0]&&(n=[NaN,NaN]),this._dataMin=n[0],this._dataMax=n[1];var i=this._isOrdinal="ordinal"===t.type;this._needCrossZero=e.getNeedCrossZero&&e.getNeedCrossZero();var r=this._modelMinRaw=e.get("min",!0);G(r)?this._modelMinNum=Ox(t,r({min:n[0],max:n[1]})):"dataMin"!==r&&(this._modelMinNum=Ox(t,r));var o=this._modelMaxRaw=e.get("max",!0);if(G(o)?this._modelMaxNum=Ox(t,o({min:n[0],max:n[1]})):"dataMax"!==o&&(this._modelMaxNum=Ox(t,o)),i)this._axisDataLen=e.getCategories().length;else{var a=e.get("boundaryGap"),s=F(a)?a:[a||0,a||0];"boolean"==typeof s[0]||"boolean"==typeof s[1]?this._boundaryGapInner=[0,0]:this._boundaryGapInner=[Un(s[0],1),Un(s[1],1)]}},t.prototype.calculate=function(){var t=this._isOrdinal,e=this._dataMin,n=this._dataMax,i=this._axisDataLen,r=this._boundaryGapInner,o=t?null:n-e||Math.abs(e),a="dataMin"===this._modelMinRaw?e:this._modelMinNum,s="dataMax"===this._modelMaxRaw?n:this._modelMaxNum,l=null!=a,u=null!=s;null==a&&(a=t?i?0:NaN:e-r[0]*o),null==s&&(s=t?i?i-1:NaN:n+r[1]*o),(null==a||!isFinite(a))&&(a=NaN),(null==s||!isFinite(s))&&(s=NaN),a>s&&(a=NaN,s=NaN);var h=J(a)||J(s)||t&&!i;this._needCrossZero&&(a>0&&s>0&&!l&&(a=0),a<0&&s<0&&!u&&(s=0));var c=this._determinedMin,p=this._determinedMax;return null!=c&&(a=c,l=!0),null!=p&&(s=p,u=!0),{min:a,max:s,minFixed:l,maxFixed:u,isBlank:h}},t.prototype.modifyDataMinMax=function(t,e){this[kx[t]]=e},t.prototype.setDeterminedMinMax=function(t,e){var n=Lx[t];this[n]=e},t.prototype.freeze=function(){this.frozen=!0},t}(),Lx={min:"_determinedMin",max:"_determinedMax"},kx={min:"_dataMin",max:"_dataMax"};function Px(t,e,n){var i=t.rawExtentInfo;return i||(i=new Dx(t,e,n),t.rawExtentInfo=i,i)}function Ox(t,e){return null==e?null:J(e)?NaN:t.parse(e)}function Rx(t,e){var n=t.type,i=Px(t,e,t.getExtent()).calculate();t.setBlank(i.isBlank);var r=i.min,o=i.max,a=e.ecModel;if(a&&"time"===n){var s=tx("bar",a),l=!1;if(P(s,(function(t){l=l||t.getBaseAxis()===e.axis})),l){var u=ex(s),h=function(t,e,n,i){var r=n.axis.getExtent(),o=r[1]-r[0],a=ix(i,n.axis);if(void 0===a)return{min:t,max:e};var s=1/0;P(a,(function(t){s=Math.min(t.offset,s)}));var l=-1/0;P(a,(function(t){l=Math.max(t.offset+t.width,l)})),s=Math.abs(s),l=Math.abs(l);var u=s+l,h=e-t,c=h/(1-(s+l)/o)-h;return{min:t-=c*(s/u),max:e+=c*(l/u)}}(r,o,e,u);r=h.min,o=h.max}}return{extent:[r,o],fixMin:i.minFixed,fixMax:i.maxFixed}}function Nx(t,e){var n=Rx(t,e),i=n.extent,r=e.get("splitNumber");t instanceof Tx&&(t.base=e.get("logBase"));var o=t.type;t.setExtent(i[0],i[1]),t.niceExtent({splitNumber:r,fixMin:n.fixMin,fixMax:n.fixMax,minInterval:"interval"===o||"time"===o?e.get("minInterval"):null,maxInterval:"interval"===o||"time"===o?e.get("maxInterval"):null});var a=e.get("interval");null!=a&&t.setInterval&&t.setInterval(a)}function Ex(t,e){if(e=e||t.get("type"))switch(e){case"category":return new Z_({ordinalMeta:t.getOrdinalMeta?t.getOrdinalMeta():t.getCategories(),extent:[1/0,-1/0]});case"time":return new ux({locale:t.ecModel.getLocaleModel(),useUTC:t.ecModel.get("useUTC")});default:return new(z_.getClass(e)||q_)}}function zx(t){var e,n,i=t.getLabelModel().get("formatter"),r="category"===t.type?t.scale.getExtent()[0]:null;return"time"===t.scale.type?(n=i,function(e,i){return t.scale.getFormattedLabel(e,i,n)}):"string"==typeof i?function(e){return function(n){var i=t.scale.getLabel(n);return e.replace("{value}",null!=i?i:"")}}(i):"function"==typeof i?(e=i,function(n,i){return null!=r&&(i=n.value-r),e(Bx(t,n),i,null!=n.level?{level:n.level}:null)}):function(e){return t.scale.getLabel(e)}}function Bx(t,e){return"category"===t.type?t.scale.getLabel(e):e.value}function Vx(t,e){var n=e*Math.PI/180,i=t.width,r=t.height,o=i*Math.abs(Math.cos(n))+Math.abs(r*Math.sin(n)),a=i*Math.abs(Math.sin(n))+Math.abs(r*Math.cos(n));return new Rn(t.x,t.y,o,a)}function Fx(t){var e=t.get("interval");return null==e?"auto":e}function Gx(t){return"category"===t.type&&0===Fx(t.getLabelModel())}function Hx(t,e){var n={};return P(t.mapDimensionsAll(e),(function(e){n[N_(t,e)]=!0})),z(n)}var Wx=function(){function t(){}return t.prototype.getNeedCrossZero=function(){return!this.option.scale},t.prototype.getCoordSysModel=function(){},t}();var Ux={isDimensionStacked:R_,enableDataStack:O_,getStackedDimension:N_};var Yx=Object.freeze({__proto__:null,createList:function(t){return E_(t.getSource(),t)},getLayoutRect:Ec,dataStack:Ux,createScale:function(t,e){var n=e;e instanceof kh||(n=new kh(e));var i=Ex(n);return i.setExtent(t[0],t[1]),Nx(i,n),i},mixinAxisModelCommonMethods:function(t){L(t,Wx)},getECData:vs,createTextStyle:function(t,e){return hh(t,null,null,"normal"!==(e=e||{}).state)},createDimensions:D_,createSymbol:py,enableHoverEmphasis:ol}),Xx=Object.freeze({__proto__:null,linearMap:Xi,round:ji,asc:qi,getPrecision:Ki,getPrecisionSafe:$i,getPixelPrecision:Ji,getPercentWithPrecision:Qi,MAX_SAFE_INTEGER:tr,remRadian:er,isRadianAroundZero:nr,parseDate:rr,quantity:or,quantityExponent:ar,nice:sr,quantile:lr,reformIntervals:ur,isNumeric:cr,numericToNumber:hr}),Zx=Object.freeze({__proto__:null,parse:rr,format:ec}),jx=Object.freeze({__proto__:null,extendShape:Au,extendPath:Lu,makePath:Ou,makeImage:Ru,mergePath:Eu,resizePath:zu,createIcon:Qu,updateProps:Fu,initProps:Gu,getTransform:Xu,clipPointsByRect:$u,clipRectByRect:Ju,registerShape:ku,getShapeClass:Pu,Group:zi,Image:Qa,Text:us,Circle:Ol,Ellipse:Nl,Sector:Kl,Ring:Jl,Polygon:nu,Polyline:ru,Rect:as,Line:su,BezierCurve:cu,Arc:du,IncrementalDisplayable:Mu,CompoundPath:fu,LinearGradient:yu,RadialGradient:vu,BoundingRect:Rn}),qx=Object.freeze({__proto__:null,addCommas:mc,toCamelCase:_c,normalizeCssArray:xc,encodeHTML:Sc,formatTpl:Cc,getTooltipMarker:Ac,formatTime:function(t,e,n){"week"!==t&&"month"!==t&&"quarter"!==t&&"half-year"!==t&&"year"!==t||(t="MM-dd\nyyyy");var i=rr(e),r=n?"UTC":"",o=i["get"+r+"FullYear"](),a=i["get"+r+"Month"]()+1,s=i["get"+r+"Date"](),l=i["get"+r+"Hours"](),u=i["get"+r+"Minutes"](),h=i["get"+r+"Seconds"](),c=i["get"+r+"Milliseconds"]();return t=t.replace("MM",Jh(a,2)).replace("M",a).replace("yyyy",o).replace("yy",o%100+"").replace("dd",Jh(s,2)).replace("d",s).replace("hh",Jh(l,2)).replace("h",l).replace("mm",Jh(u,2)).replace("m",u).replace("ss",Jh(h,2)).replace("s",h).replace("SSS",Jh(c,3))},capitalFirst:function(t){return t?t.charAt(0).toUpperCase()+t.substr(1):t},truncateText:oo,getTextRect:function(t,e,n,i,r,o,a,s){return gr(),new us({style:{text:t,font:e,align:n,verticalAlign:i,padding:r,rich:o,overflow:a?"truncate":null,lineHeight:s}}).getBoundingRect()}}),Kx=Object.freeze({__proto__:null,map:O,each:P,indexOf:A,inherits:D,reduce:R,filter:N,bind:B,curry:V,isArray:F,isString:H,isObject:Y,isFunction:G,extend:I,defaults:T,clone:w,merge:S}),$x=Lr();function Jx(t){return"category"===t.type?function(t){var e=t.getLabelModel(),n=tb(t,e);return!e.get("show")||t.scale.isBlank()?{labels:[],labelCategoryInterval:n.labelCategoryInterval}:n}(t):function(t){var e=t.scale.getTicks(),n=zx(t);return{labels:O(e,(function(e,i){return{formattedLabel:n(e,i),rawLabel:t.scale.getLabel(e),tickValue:e.value}}))}}(t)}function Qx(t,e){return"category"===t.type?function(t,e){var n,i,r=eb(t,"ticks"),o=Fx(e),a=nb(r,o);if(a)return a;e.get("show")&&!t.scale.isBlank()||(n=[]);if(G(o))n=ob(t,o,!0);else if("auto"===o){var s=tb(t,t.getLabelModel());i=s.labelCategoryInterval,n=O(s.labels,(function(t){return t.tickValue}))}else n=rb(t,i=o,!0);return ib(r,o,{ticks:n,tickCategoryInterval:i})}(t,e):{ticks:O(t.scale.getTicks(),(function(t){return t.value}))}}function tb(t,e){var n,i,r=eb(t,"labels"),o=Fx(e),a=nb(r,o);return a||(G(o)?n=ob(t,o):(i="auto"===o?function(t){var e=$x(t).autoInterval;return null!=e?e:$x(t).autoInterval=t.calculateCategoryInterval()}(t):o,n=rb(t,i)),ib(r,o,{labels:n,labelCategoryInterval:i}))}function eb(t,e){return $x(t)[e]||($x(t)[e]=[])}function nb(t,e){for(var n=0;n<t.length;n++)if(t[n].key===e)return t[n].value}function ib(t,e,n){return t.push({key:e,value:n}),n}function rb(t,e,n){var i=zx(t),r=t.scale,o=r.getExtent(),a=t.getLabelModel(),s=[],l=Math.max((e||0)+1,1),u=o[0],h=r.count();0!==u&&l>1&&h/l>2&&(u=Math.round(Math.ceil(u/l)*l));var c=Gx(t),p=a.get("showMinLabel")||c,d=a.get("showMaxLabel")||c;p&&u!==o[0]&&g(o[0]);for(var f=u;f<=o[1];f+=l)g(f);function g(t){var e={value:t};s.push(n?t:{formattedLabel:i(e),rawLabel:r.getLabel(e),tickValue:t})}return d&&f-l!==o[1]&&g(o[1]),s}function ob(t,e,n){var i=t.scale,r=zx(t),o=[];return P(i.getTicks(),(function(t){var a=i.getLabel(t),s=t.value;e(t.value,a)&&o.push(n?s:{formattedLabel:r(t),rawLabel:a,tickValue:s})})),o}var ab=[0,1],sb=function(){function t(t,e,n){this.onBand=!1,this.inverse=!1,this.dim=t,this.scale=e,this._extent=n||[0,0]}return t.prototype.contain=function(t){var e=this._extent,n=Math.min(e[0],e[1]),i=Math.max(e[0],e[1]);return t>=n&&t<=i},t.prototype.containData=function(t){return this.scale.contain(t)},t.prototype.getExtent=function(){return this._extent.slice()},t.prototype.getPixelPrecision=function(t){return Ji(t||this.scale.getExtent(),this._extent)},t.prototype.setExtent=function(t,e){var n=this._extent;n[0]=t,n[1]=e},t.prototype.dataToCoord=function(t,e){var n=this._extent,i=this.scale;return t=i.normalize(t),this.onBand&&"ordinal"===i.type&&lb(n=n.slice(),i.count()),Xi(t,ab,n,e)},t.prototype.coordToData=function(t,e){var n=this._extent,i=this.scale;this.onBand&&"ordinal"===i.type&&lb(n=n.slice(),i.count());var r=Xi(t,n,ab,e);return this.scale.scale(r)},t.prototype.pointToData=function(t,e){},t.prototype.getTicksCoords=function(t){var e=(t=t||{}).tickModel||this.getTickModel(),n=O(Qx(this,e).ticks,(function(t){return{coord:this.dataToCoord("ordinal"===this.scale.type?this.scale.getRawOrdinalNumber(t):t),tickValue:t}}),this);return function(t,e,n,i){var r=e.length;if(!t.onBand||n||!r)return;var o,a,s=t.getExtent();if(1===r)e[0].coord=s[0],o=e[1]={coord:s[0]};else{var l=e[r-1].tickValue-e[0].tickValue,u=(e[r-1].coord-e[0].coord)/l;P(e,(function(t){t.coord-=u/2})),a=1+t.scale.getExtent()[1]-e[r-1].tickValue,o={coord:e[r-1].coord+u*a},e.push(o)}var h=s[0]>s[1];c(e[0].coord,s[0])&&(i?e[0].coord=s[0]:e.shift());i&&c(s[0],e[0].coord)&&e.unshift({coord:s[0]});c(s[1],o.coord)&&(i?o.coord=s[1]:e.pop());i&&c(o.coord,s[1])&&e.push({coord:s[1]});function c(t,e){return t=ji(t),e=ji(e),h?t>e:t<e}}(this,n,e.get("alignWithLabel"),t.clamp),n},t.prototype.getMinorTicksCoords=function(){if("ordinal"===this.scale.type)return[];var t=this.model.getModel("minorTick").get("splitNumber");return t>0&&t<100||(t=5),O(this.scale.getMinorTicks(t),(function(t){return O(t,(function(t){return{coord:this.dataToCoord(t),tickValue:t}}),this)}),this)},t.prototype.getViewLabels=function(){return Jx(this).labels},t.prototype.getLabelModel=function(){return this.model.getModel("axisLabel")},t.prototype.getTickModel=function(){return this.model.getModel("axisTick")},t.prototype.getBandWidth=function(){var t=this._extent,e=this.scale.getExtent(),n=e[1]-e[0]+(this.onBand?1:0);0===n&&(n=1);var i=Math.abs(t[1]-t[0]);return Math.abs(i)/n},t.prototype.calculateCategoryInterval=function(){return function(t){var e=function(t){var e=t.getLabelModel();return{axisRotate:t.getRotate?t.getRotate():t.isHorizontal&&!t.isHorizontal()?90:0,labelRotate:e.get("rotate")||0,font:e.getFont()}}(t),n=zx(t),i=(e.axisRotate-e.labelRotate)/180*Math.PI,r=t.scale,o=r.getExtent(),a=r.count();if(o[1]-o[0]<1)return 0;var s=1;a>40&&(s=Math.max(1,Math.floor(a/40)));for(var l=o[0],u=t.dataToCoord(l+1)-t.dataToCoord(l),h=Math.abs(u*Math.cos(i)),c=Math.abs(u*Math.sin(i)),p=0,d=0;l<=o[1];l+=s){var f,g,y=Fn(n({value:l}),e.font,"center","top");f=1.3*y.width,g=1.3*y.height,p=Math.max(p,f,7),d=Math.max(d,g,7)}var v=p/h,m=d/c;isNaN(v)&&(v=1/0),isNaN(m)&&(m=1/0);var _=Math.max(0,Math.floor(Math.min(v,m))),x=$x(t.model),b=t.getExtent(),w=x.lastAutoInterval,S=x.lastTickCount;return null!=w&&null!=S&&Math.abs(w-_)<=1&&Math.abs(S-a)<=1&&w>_&&x.axisExtent0===b[0]&&x.axisExtent1===b[1]?_=w:(x.lastTickCount=a,x.lastAutoInterval=_,x.axisExtent0=b[0],x.axisExtent1=b[1]),_}(this)},t}();function lb(t,e){var n=(t[1]-t[0])/e/2;t[0]+=n,t[1]-=n}function ub(t){return document.createElementNS("http://www.w3.org/2000/svg",t)}function hb(t,e,n,i,r){for(var o=e.length,a=n.length,s=t.newPos,l=s-i,u=0;s+1<o&&l+1<a&&r(e[s+1],n[l+1]);)s++,l++,u++;return u&&t.components.push({count:u,added:!1,removed:!1,indices:[]}),t.newPos=s,l}function cb(t,e,n){var i=t[t.length-1];i&&i.added===e&&i.removed===n?t[t.length-1]={count:i.count+1,added:e,removed:n,indices:[]}:t.push({count:1,added:e,removed:n,indices:[]})}function pb(t){for(var e=0,n=t.length,i=0,r=0;e<n;e++){var o=t[e];if(o.removed){for(s=r;s<r+o.count;s++)o.indices.push(s);r+=o.count}else{for(var a=[],s=i;s<i+o.count;s++)a.push(s);o.indices=a,i+=o.count,o.added||(r+=o.count)}}return t}function db(t,e,n){return function(t,e,n){n||(n=function(t,e){return t===e}),t=t.slice();var i=(e=e.slice()).length,r=t.length,o=1,a=i+r,s=[{newPos:-1,components:[]}],l=hb(s[0],e,t,0,n);if(s[0].newPos+1>=i&&l+1>=r){for(var u=[],h=0;h<e.length;h++)u.push(h);return[{indices:u,count:e.length,added:!1,removed:!1}]}function c(){for(var a=-1*o;a<=o;a+=2){var l,u=s[a-1],h=s[a+1],c=(h?h.newPos:0)-a;u&&(s[a-1]=void 0);var p=u&&u.newPos+1<i,d=h&&0<=c&&c<r;if(p||d){if(!p||d&&u.newPos<h.newPos?cb((l={newPos:(f=h).newPos,components:f.components.slice(0)}).components,!1,!0):((l=u).newPos++,cb(l.components,!0,!1)),c=hb(l,e,t,a,n),l.newPos+1>=i&&c+1>=r)return pb(l.components);s[a]=l}else s[a]=void 0}var f;o++}for(;o<=a;){var p=c();if(p)return p}}(t,e,n)}var fb="none",gb=Math.round,yb=Math.sin,vb=Math.cos,mb=Math.PI,_b=2*Math.PI,xb=180/mb,bb=1e-4;function wb(t){return gb(1e3*t)/1e3}function Sb(t){return gb(1e4*t)/1e4}function Mb(t){return t<bb&&t>-1e-4}function Ib(t,e){e&&Tb(t,"transform","matrix("+wb(e[0])+","+wb(e[1])+","+wb(e[2])+","+wb(e[3])+","+Sb(e[4])+","+Sb(e[5])+")")}function Tb(t,e,n){(!n||"linear"!==n.type&&"radial"!==n.type)&&t.setAttribute(e,n)}function Cb(t,e,n){var i=null==e.opacity?1:e.opacity;if(n instanceof Qa)t.style.opacity=i+"";else{if(function(t){var e=t.fill;return null!=e&&e!==fb}(e)){var r=e.fill;Tb(t,"fill",r="transparent"===r?fb:r),Tb(t,"fill-opacity",(null!=e.fillOpacity?e.fillOpacity*i:i)+"")}else Tb(t,"fill",fb);if(function(t){var e=t.stroke;return null!=e&&e!==fb}(e)){var o=e.stroke;Tb(t,"stroke",o="transparent"===o?fb:o);var a=e.lineWidth,s=e.strokeNoScale?n.getLineScale():1;Tb(t,"stroke-width",(s?a/s:0)+""),Tb(t,"paint-order",e.strokeFirst?"stroke":"fill"),Tb(t,"stroke-opacity",(null!=e.strokeOpacity?e.strokeOpacity*i:i)+"");var l=e.lineDash&&a>0&&gy(e.lineDash,a);if(l){var u=e.lineDashOffset;s&&1!==s&&(l=O(l,(function(t){return t/s})),u&&(u=gb(u/=s))),Tb(t,"stroke-dasharray",l.join(",")),Tb(t,"stroke-dashoffset",(u||0)+"")}else Tb(t,"stroke-dasharray","");e.lineCap&&Tb(t,"stroke-linecap",e.lineCap),e.lineJoin&&Tb(t,"stroke-linejoin",e.lineJoin),e.miterLimit&&Tb(t,"stroke-miterlimit",e.miterLimit+"")}else Tb(t,"stroke",fb)}}var Ab=function(){function t(){}return t.prototype.reset=function(){this._d=[],this._str=""},t.prototype.moveTo=function(t,e){this._add("M",t,e)},t.prototype.lineTo=function(t,e){this._add("L",t,e)},t.prototype.bezierCurveTo=function(t,e,n,i,r,o){this._add("C",t,e,n,i,r,o)},t.prototype.quadraticCurveTo=function(t,e,n,i){this._add("Q",t,e,n,i)},t.prototype.arc=function(t,e,n,i,r,o){this.ellipse(t,e,n,n,0,i,r,o)},t.prototype.ellipse=function(t,e,n,i,r,o,a,s){var l=0===this._d.length,u=a-o,h=!s,c=Math.abs(u),p=Mb(c-_b)||(h?u>=_b:-u>=_b),d=u>0?u%_b:u%_b+_b,f=!1;f=!!p||!Mb(c)&&d>=mb==!!h;var g=Sb(t+n*vb(o)),y=Sb(e+i*yb(o));p&&(u=h?_b-1e-4:1e-4-_b,f=!0,l&&this._d.push("M",g,y));var v=Sb(t+n*vb(o+u)),m=Sb(e+i*yb(o+u));if(isNaN(g)||isNaN(y)||isNaN(n)||isNaN(i)||isNaN(r)||isNaN(xb)||isNaN(v)||isNaN(m))return"";this._d.push("A",Sb(n),Sb(i),gb(r*xb),+f,+h,v,m)},t.prototype.rect=function(t,e,n,i){this._add("M",t,e),this._add("L",t+n,e),this._add("L",t+n,e+i),this._add("L",t,e+i),this._add("L",t,e)},t.prototype.closePath=function(){this._d.length>0&&this._add("Z")},t.prototype._add=function(t,e,n,i,r,o,a,s,l){this._d.push(t);for(var u=1;u<arguments.length;u++){var h=arguments[u];if(isNaN(h))return void(this._invalid=!0);this._d.push(Sb(h))}},t.prototype.generateStr=function(){this._str=this._invalid?"":this._d.join(" "),this._d=[]},t.prototype.getStr=function(){return this._str},t}(),Db={brush:function(t){var e=t.style,n=t.__svgEl;n||(n=ub("path"),t.__svgEl=n),t.path||t.createPathProxy();var i=t.path;t.shapeChanged()&&(i.beginPath(),t.buildPath(i,t.shape),t.pathUpdated());var r=i.getVersion(),o=t,a=o.__svgPathBuilder;(o.__svgPathVersion!==r||!a||t.style.strokePercent<1)&&(a||(a=o.__svgPathBuilder=new Ab),a.reset(),i.rebuildPath(a,t.style.strokePercent),a.generateStr(),o.__svgPathVersion=r),Tb(n,"d",a.getStr()),Cb(n,e,t),Ib(n,t.transform)}},Lb={brush:function(t){var e=t.style,n=e.image;if(n instanceof HTMLImageElement?n=n.src:n instanceof HTMLCanvasElement&&(n=n.toDataURL()),n){var i=e.x||0,r=e.y||0,o=e.width,a=e.height,s=t.__svgEl;s||(s=ub("image"),t.__svgEl=s),n!==t.__imageSrc&&(!function(t,e,n){t.setAttributeNS("http://www.w3.org/1999/xlink",e,n)}(s,"href",n),t.__imageSrc=n),Tb(s,"width",o+""),Tb(s,"height",a+""),Tb(s,"x",i+""),Tb(s,"y",r+""),Cb(s,e,t),Ib(s,t.transform)}}},kb={left:"start",right:"end",center:"middle",middle:"middle"};var Pb={brush:function(t){var e=t.style,n=e.text;if(null!=n&&(n+=""),n&&!isNaN(e.x)&&!isNaN(e.y)){var i=t.__svgEl;i||(function(t,e,n){t.setAttributeNS("http://www.w3.org/XML/1998/namespace",e,n)}(i=ub("text"),"xml:space","preserve"),t.__svgEl=i);var r=e.font||En;i.style.font=r,i.textContent=n,Cb(i,e,t),Ib(i,t.transform);var o=e.x||0,a=function(t,e,n){return"top"===n?t+=e/2:"bottom"===n&&(t-=e/2),t}(e.y||0,Wn(r),e.textBaseline),s=kb[e.textAlign]||e.textAlign;Tb(i,"dominant-baseline","central"),Tb(i,"text-anchor",s),Tb(i,"x",o+""),Tb(i,"y",a+"")}}},Ob=function(){function t(t,e,n,i,r){this.nextId=0,this._domName="_dom",this.createElement=ub,this._zrId=t,this._svgRoot=e,this._tagNames="string"==typeof n?[n]:n,this._markLabel=i,r&&(this._domName=r)}return t.prototype.getDefs=function(t){var e=this._svgRoot,n=this._svgRoot.getElementsByTagName("defs");if(0===n.length){if(t){var i=e.insertBefore(this.createElement("defs"),e.firstChild);return i.contains||(i.contains=function(t){var e=i.children;if(!e)return!1;for(var n=e.length-1;n>=0;--n)if(e[n]===t)return!0;return!1}),i}return null}return n[0]},t.prototype.doUpdate=function(t,e){if(t){var n=this.getDefs(!1);if(t[this._domName]&&n.contains(t[this._domName]))"function"==typeof e&&e(t);else{var i=this.add(t);i&&(t[this._domName]=i)}}},t.prototype.add=function(t){return null},t.prototype.addDom=function(t){var e=this.getDefs(!0);t.parentNode!==e&&e.appendChild(t)},t.prototype.removeDom=function(t){var e=this.getDefs(!1);e&&t[this._domName]&&(e.removeChild(t[this._domName]),t[this._domName]=null)},t.prototype.getDoms=function(){var t=this.getDefs(!1);if(!t)return[];var e=[];return P(this._tagNames,(function(n){for(var i=t.getElementsByTagName(n),r=0;r<i.length;r++)e.push(i[r])})),e},t.prototype.markAllUnused=function(){var t=this.getDoms(),e=this;P(t,(function(t){t[e._markLabel]="0"}))},t.prototype.markDomUsed=function(t){t&&(t[this._markLabel]="1")},t.prototype.markDomUnused=function(t){t&&(t[this._markLabel]="0")},t.prototype.isDomUnused=function(t){return t&&"1"!==t[this._markLabel]},t.prototype.removeUnused=function(){var t=this,e=this.getDefs(!1);e&&P(this.getDoms(),(function(n){t.isDomUnused(n)&&e.removeChild(n)}))},t.prototype.getSvgProxy=function(t){return t instanceof ja?Db:t instanceof Qa?Lb:t instanceof Ka?Pb:Db},t.prototype.getSvgElement=function(t){return t.__svgEl},t}();function Rb(t){return"linear"===t.type}function Nb(t){return"radial"===t.type}function Eb(t){return t&&("linear"===t.type||"radial"===t.type)}var zb=function(t){function e(e,n){return t.call(this,e,n,["linearGradient","radialGradient"],"__gradient_in_use__")||this}return n(e,t),e.prototype.addWithoutUpdate=function(t,e){if(e&&e.style){var n=this;P(["fill","stroke"],(function(i){var r=e.style[i];if(Eb(r)){var o=r,a=n.getDefs(!0),s=void 0;o.__dom?(s=o.__dom,a.contains(o.__dom)||n.addDom(s)):s=n.add(o),n.markUsed(e);var l=s.getAttribute("id");t.setAttribute(i,"url(#"+l+")")}}))}},e.prototype.add=function(t){var e;if(Rb(t))e=this.createElement("linearGradient");else{if(!Nb(t))return b("Illegal gradient type."),null;e=this.createElement("radialGradient")}return t.id=t.id||this.nextId++,e.setAttribute("id","zr"+this._zrId+"-gradient-"+t.id),this.updateDom(t,e),this.addDom(e),e},e.prototype.update=function(t){if(Eb(t)){var e=this;this.doUpdate(t,(function(){var n=t.__dom;if(n){var i=n.tagName,r=t.type;"linear"===r&&"linearGradient"===i||"radial"===r&&"radialGradient"===i?e.updateDom(t,t.__dom):(e.removeDom(t),e.add(t))}}))}},e.prototype.updateDom=function(t,e){if(Rb(t))e.setAttribute("x1",t.x+""),e.setAttribute("y1",t.y+""),e.setAttribute("x2",t.x2+""),e.setAttribute("y2",t.y2+"");else{if(!Nb(t))return void b("Illegal gradient type.");e.setAttribute("cx",t.x+""),e.setAttribute("cy",t.y+""),e.setAttribute("r",t.r+"")}t.global?e.setAttribute("gradientUnits","userSpaceOnUse"):e.setAttribute("gradientUnits","objectBoundingBox"),e.innerHTML="";for(var n=t.colorStops,i=0,r=n.length;i<r;++i){var o=this.createElement("stop");o.setAttribute("offset",100*n[i].offset+"%");var a=n[i].color;if(a.indexOf("rgba")>-1){var s=qe(a)[3],l=Je(a);o.setAttribute("stop-color","#"+l),o.setAttribute("stop-opacity",s+"")}else o.setAttribute("stop-color",n[i].color);e.appendChild(o)}t.__dom=e},e.prototype.markUsed=function(e){if(e.style){var n=e.style.fill;n&&n.__dom&&t.prototype.markDomUsed.call(this,n.__dom),(n=e.style.stroke)&&n.__dom&&t.prototype.markDomUsed.call(this,n.__dom)}},e}(Ob);function Bb(t){return t&&(!!t.image||!!t.svgElement)}var Vb=new iy,Fb=function(t){function e(e,n){return t.call(this,e,n,["pattern"],"__pattern_in_use__")||this}return n(e,t),e.prototype.addWithoutUpdate=function(t,e){if(e&&e.style){var n=this;P(["fill","stroke"],(function(i){var r=e.style[i];if(Bb(r)){var o=n.getDefs(!0),a=Vb.get(r);a?o.contains(a)||n.addDom(a):a=n.add(r),n.markUsed(e);var s=a.getAttribute("id");t.setAttribute(i,"url(#"+s+")")}}))}},e.prototype.add=function(t){if(Bb(t)){var e=this.createElement("pattern");return t.id=null==t.id?this.nextId++:t.id,e.setAttribute("id","zr"+this._zrId+"-pattern-"+t.id),e.setAttribute("x","0"),e.setAttribute("y","0"),e.setAttribute("patternUnits","userSpaceOnUse"),this.updateDom(t,e),this.addDom(e),e}},e.prototype.update=function(t){if(Bb(t)){var e=this;this.doUpdate(t,(function(){var n=Vb.get(t);e.updateDom(t,n)}))}},e.prototype.updateDom=function(t,e){var n=t.svgElement;if(n instanceof SVGElement)n.parentNode!==e&&(e.innerHTML="",e.appendChild(n),e.setAttribute("width",t.svgWidth+""),e.setAttribute("height",t.svgHeight+""));else{var i=void 0,r=e.getElementsByTagName("image");if(r.length){if(!t.image)return void e.removeChild(r[0]);i=r[0]}else t.image&&(i=this.createElement("image"));if(i){var o=void 0;if("string"==typeof t.image?o=t.image:t.image instanceof HTMLImageElement?o=t.image.src:t.image instanceof HTMLCanvasElement&&(o=t.image.toDataURL()),o){i.setAttribute("href",o),i.setAttribute("x","0"),i.setAttribute("y","0");var a=eo(o,i,{dirty:function(){}},(function(t){e.setAttribute("width",t.width+""),e.setAttribute("height",t.height+"")}));a&&a.width&&a.height&&(e.setAttribute("width",a.width+""),e.setAttribute("height",a.height+"")),e.appendChild(i)}}}var s="translate("+(t.x||0)+", "+(t.y||0)+") rotate("+(t.rotation||0)/Math.PI*180+") scale("+(t.scaleX||1)+", "+(t.scaleY||1)+")";e.setAttribute("patternTransform",s),Vb.set(t,e)},e.prototype.markUsed=function(e){e.style&&(Bb(e.style.fill)&&t.prototype.markDomUsed.call(this,Vb.get(e.style.fill)),Bb(e.style.stroke)&&t.prototype.markDomUsed.call(this,Vb.get(e.style.stroke)))},e}(Ob);function Gb(t){var e=t.__clipPaths;return e&&e.length>0}var Hb=function(t){function e(e,n){var i=t.call(this,e,n,"clipPath","__clippath_in_use__")||this;return i._refGroups={},i._keyDuplicateCount={},i}return n(e,t),e.prototype.markAllUnused=function(){for(var e in t.prototype.markAllUnused.call(this),this._refGroups)this.markDomUnused(this._refGroups[e]);this._keyDuplicateCount={}},e.prototype._getClipPathGroup=function(t,e){if(Gb(t)){var n=t.__clipPaths,i=this._keyDuplicateCount,r=function(t){var e=[];if(t)for(var n=0;n<t.length;n++){var i=t[n];e.push(i.id)}return e.join(",")}(n);return fy(n,e&&e.__clipPaths)&&(i[r]=i[r]||0,i[r]&&(r+="-"+i[r]),i[r]++),this._refGroups[r]||(this._refGroups[r]=this.createElement("g"))}},e.prototype.update=function(t,e){var n=this._getClipPathGroup(t,e);return n&&(this.markDomUsed(n),this.updateDom(n,t.__clipPaths)),n},e.prototype.updateDom=function(t,e){if(e&&e.length>0){var n=this.getDefs(!0),i=e[0],r=void 0,o=void 0;i._dom?(o=i._dom.getAttribute("id"),r=i._dom,n.contains(r)||n.appendChild(r)):(o="zr"+this._zrId+"-clip-"+this.nextId,++this.nextId,(r=this.createElement("clipPath")).setAttribute("id",o),n.appendChild(r),i._dom=r),this.getSvgProxy(i).brush(i);var a=this.getSvgElement(i);r.innerHTML="",r.appendChild(a),t.setAttribute("clip-path","url(#"+o+")"),e.length>1&&this.updateDom(r,e.slice(1))}else t&&t.setAttribute("clip-path","none")},e.prototype.markUsed=function(e){var n=this;e.__clipPaths&&P(e.__clipPaths,(function(e){e._dom&&t.prototype.markDomUsed.call(n,e._dom)}))},e.prototype.removeUnused=function(){t.prototype.removeUnused.call(this);var e={};for(var n in this._refGroups){var i=this._refGroups[n];this.isDomUnused(i)?i.parentNode&&i.parentNode.removeChild(i):e[n]=i}this._refGroups=e},e}(Ob),Wb=function(t){function e(e,n){var i=t.call(this,e,n,["filter"],"__filter_in_use__","_shadowDom")||this;return i._shadowDomMap={},i._shadowDomPool=[],i}return n(e,t),e.prototype._getFromPool=function(){var t=this._shadowDomPool.pop();if(!t){(t=this.createElement("filter")).setAttribute("id","zr"+this._zrId+"-shadow-"+this.nextId++);var e=this.createElement("feDropShadow");t.appendChild(e),this.addDom(t)}return t},e.prototype.update=function(t,e){if(function(t){return t&&(t.shadowBlur||t.shadowOffsetX||t.shadowOffsetY)}(e.style)){var n=function(t){var e=t.style,n=t.getGlobalScale();return[e.shadowColor,(e.shadowBlur||0).toFixed(2),(e.shadowOffsetX||0).toFixed(2),(e.shadowOffsetY||0).toFixed(2),n[0],n[1]].join(",")}(e),i=e._shadowDom=this._shadowDomMap[n];i||(i=this._getFromPool(),this._shadowDomMap[n]=i),this.updateDom(t,e,i)}else this.remove(t,e)},e.prototype.remove=function(t,e){null!=e._shadowDom&&(e._shadowDom=null,t.style.filter="")},e.prototype.updateDom=function(t,e,n){var i=n.children[0],r=e.style,o=e.getGlobalScale(),a=o[0],s=o[1];if(a&&s){var l=r.shadowOffsetX||0,u=r.shadowOffsetY||0,h=r.shadowBlur,c=r.shadowColor;i.setAttribute("dx",l/a+""),i.setAttribute("dy",u/s+""),i.setAttribute("flood-color",c);var p=h/2/a+" "+h/2/s;i.setAttribute("stdDeviation",p),n.setAttribute("x","-100%"),n.setAttribute("y","-100%"),n.setAttribute("width","300%"),n.setAttribute("height","300%"),e._shadowDom=n;var d=n.getAttribute("id");t.style.filter="url(#"+d+")"}},e.prototype.removeUnused=function(){if(this.getDefs(!1)){var t=this._shadowDomPool;for(var e in this._shadowDomMap){var n=this._shadowDomMap[e];t.push(n)}this._shadowDomMap={}}},e}(Ob);function Ub(t){return parseInt(t,10)}function Yb(t){return t instanceof ja?Db:t instanceof Qa?Lb:t instanceof Ka?Pb:Db}function Xb(t,e){return e&&t&&e.parentNode!==t}function Zb(t,e,n){if(Xb(t,e)&&n){var i=n.nextSibling;i?t.insertBefore(e,i):t.appendChild(e)}}function jb(t,e){if(Xb(t,e)){var n=t.firstChild;n?t.insertBefore(e,n):t.appendChild(e)}}function qb(t,e){e&&t&&e.parentNode===t&&t.removeChild(e)}function Kb(t){return t.__svgEl}var $b=function(){function t(t,e,n,i){this.type="svg",this.refreshHover=Jb("refreshHover"),this.pathToImage=Jb("pathToImage"),this.configLayer=Jb("configLayer"),this.root=t,this.storage=e,this._opts=n=I({},n||{});var r=ub("svg");r.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns","http://www.w3.org/2000/svg"),r.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink","http://www.w3.org/1999/xlink"),r.setAttribute("version","1.1"),r.setAttribute("baseProfile","full"),r.style.cssText="user-select:none;position:absolute;left:0;top:0;";var o=ub("g");r.appendChild(o);var a=ub("g");r.appendChild(a),this._gradientManager=new zb(i,a),this._patternManager=new Fb(i,a),this._clipPathManager=new Hb(i,a),this._shadowManager=new Wb(i,a);var s=document.createElement("div");s.style.cssText="overflow:hidden;position:relative",this._svgDom=r,this._svgRoot=a,this._backgroundRoot=o,this._viewport=s,t.appendChild(s),s.appendChild(r),this.resize(n.width,n.height),this._visibleList=[]}return t.prototype.getType=function(){return"svg"},t.prototype.getViewportRoot=function(){return this._viewport},t.prototype.getSvgDom=function(){return this._svgDom},t.prototype.getSvgRoot=function(){return this._svgRoot},t.prototype.getViewportRootOffset=function(){var t=this.getViewportRoot();if(t)return{offsetLeft:t.offsetLeft||0,offsetTop:t.offsetTop||0}},t.prototype.refresh=function(){var t=this.storage.getDisplayList(!0);this._paintList(t)},t.prototype.setBackgroundColor=function(t){this._backgroundRoot&&this._backgroundNode&&this._backgroundRoot.removeChild(this._backgroundNode);var e=ub("rect");e.setAttribute("width",this.getWidth()),e.setAttribute("height",this.getHeight()),e.setAttribute("x",0),e.setAttribute("y",0),e.setAttribute("id",0),e.style.fill=t,this._backgroundRoot.appendChild(e),this._backgroundNode=e},t.prototype.createSVGElement=function(t){return ub(t)},t.prototype.paintOne=function(t){var e=Yb(t);return e&&e.brush(t),Kb(t)},t.prototype._paintList=function(t){var e=this._gradientManager,n=this._patternManager,i=this._clipPathManager,r=this._shadowManager;e.markAllUnused(),n.markAllUnused(),i.markAllUnused(),r.markAllUnused();for(var o=this._svgRoot,a=this._visibleList,s=t.length,l=[],u=0;u<s;u++){var h=Yb(x=t[u]),c=Kb(x);x.invisible||(!x.__dirty&&c||(h&&h.brush(x),(c=Kb(x))&&x.style&&(e.update(x.style.fill),e.update(x.style.stroke),n.update(x.style.fill),n.update(x.style.stroke),r.update(c,x)),x.__dirty=0),c&&l.push(x))}var p,d,f,g,y,v=db(a,l);for(u=0;u<v.length;u++){if((_=v[u]).removed)for(var m=0;m<_.count;m++){c=Kb(x=a[_.indices[m]]);Gb(x)?(f=c)&&f.parentNode&&f.parentNode.removeChild(f):qb(o,c)}}for(u=0;u<v.length;u++){var _;if(!(_=v[u]).removed)for(m=0;m<_.count;m++){var x=l[_.indices[m]],b=i.update(x,g);b!==y&&(p=d,b&&(p?Zb(o,b,p):jb(o,b),d=b,p=null),y=b);c=Kb(x);p?Zb(y||o,c,p):jb(y||o,c),p=c||p,y||(d=p),e.markUsed(x),e.addWithoutUpdate(c,x),n.markUsed(x),n.addWithoutUpdate(c,x),i.markUsed(x),g=x}}e.removeUnused(),n.removeUnused(),i.removeUnused(),r.removeUnused(),this._visibleList=l},t.prototype.resize=function(t,e){var n=this._viewport;n.style.display="none";var i=this._opts;if(null!=t&&(i.width=t),null!=e&&(i.height=e),t=this._getSize(0),e=this._getSize(1),n.style.display="",this._width!==t||this._height!==e){this._width=t,this._height=e;var r=n.style;r.width=t+"px",r.height=e+"px";var o=this._svgDom;o.setAttribute("width",t+""),o.setAttribute("height",e+"")}this._backgroundNode&&(this._backgroundNode.setAttribute("width",t),this._backgroundNode.setAttribute("height",e))},t.prototype.getWidth=function(){return this._width},t.prototype.getHeight=function(){return this._height},t.prototype._getSize=function(t){var e=this._opts,n=["width","height"][t],i=["clientWidth","clientHeight"][t],r=["paddingLeft","paddingTop"][t],o=["paddingRight","paddingBottom"][t];if(null!=e[n]&&"auto"!==e[n])return parseFloat(e[n]);var a=this.root,s=document.defaultView.getComputedStyle(a);return(a[i]||Ub(s[n])||Ub(a.style[n]))-(Ub(s[r])||0)-(Ub(s[o])||0)|0},t.prototype.dispose=function(){this.root.innerHTML="",this._svgRoot=this._backgroundRoot=this._svgDom=this._backgroundNode=this._viewport=this.storage=null},t.prototype.clear=function(){var t=this._viewport;t&&t.parentNode&&t.parentNode.removeChild(t)},t.prototype.toDataURL=function(){this.refresh();var t=this._svgDom,e=t.outerHTML||(t.parentNode&&t.parentNode).innerHTML;return"data:image/svg+xml;charset=UTF-8,"+encodeURIComponent(e.replace(/></g,">\n\r<"))},t}();function Jb(t){return function(){b('In SVG mode painter not support method "'+t+'"')}}function Qb(){return!1}function tw(t,e,n){var i=C(),r=e.getWidth(),o=e.getHeight(),a=i.style;return a&&(a.position="absolute",a.left="0",a.top="0",a.width=r+"px",a.height=o+"px",i.setAttribute("data-zr-dom-id",t)),i.width=r*n,i.height=o*n,i}var ew=function(t){function e(e,n,i){var r,o=t.call(this)||this;o.motionBlur=!1,o.lastFrameAlpha=.7,o.dpr=1,o.virtual=!1,o.config={},o.incremental=!1,o.zlevel=0,o.maxRepaintRectCount=5,o.__dirty=!0,o.__firstTimePaint=!0,o.__used=!1,o.__drawIndex=0,o.__startIndex=0,o.__endIndex=0,o.__prevStartIndex=null,o.__prevEndIndex=null,i=i||Zn,"string"==typeof e?r=tw(e,n,i):Y(e)&&(e=(r=e).id),o.id=e,o.dom=r;var a=r.style;return a&&(r.onselectstart=Qb,a.webkitUserSelect="none",a.userSelect="none",a.webkitTapHighlightColor="rgba(0,0,0,0)",a["-webkit-touch-callout"]="none",a.padding="0",a.margin="0",a.borderWidth="0"),o.domBack=null,o.ctxBack=null,o.painter=n,o.config=null,o.dpr=i,o}return n(e,t),e.prototype.getElementCount=function(){return this.__endIndex-this.__startIndex},e.prototype.afterBrush=function(){this.__prevStartIndex=this.__startIndex,this.__prevEndIndex=this.__endIndex},e.prototype.initContext=function(){this.ctx=this.dom.getContext("2d"),this.ctx.dpr=this.dpr},e.prototype.setUnpainted=function(){this.__firstTimePaint=!0},e.prototype.createBackBuffer=function(){var t=this.dpr;this.domBack=tw("back-"+this.id,this.painter,t),this.ctxBack=this.domBack.getContext("2d"),1!==t&&this.ctxBack.scale(t,t)},e.prototype.createRepaintRects=function(t,e,n,i){if(this.__firstTimePaint)return this.__firstTimePaint=!1,null;var r,o=[],a=this.maxRepaintRectCount,s=!1,l=new Rn(0,0,0,0);function u(t){if(t.isFinite()&&!t.isZero())if(0===o.length){(e=new Rn(0,0,0,0)).copy(t),o.push(e)}else{for(var e,n=!1,i=1/0,r=0,u=0;u<o.length;++u){var h=o[u];if(h.intersect(t)){var c=new Rn(0,0,0,0);c.copy(h),c.union(t),o[u]=c,n=!0;break}if(s){l.copy(t),l.union(h);var p=t.width*t.height,d=h.width*h.height,f=l.width*l.height-p-d;f<i&&(i=f,r=u)}}if(s&&(o[r].union(t),n=!0),!n)(e=new Rn(0,0,0,0)).copy(t),o.push(e);s||(s=o.length>=a)}}for(var h=this.__startIndex;h<this.__endIndex;++h){if(d=t[h]){var c=d.shouldBePainted(n,i,!0,!0);(f=d.__isRendered&&(d.__dirty&ei.REDARAW_BIT||!c)?d.getPrevPaintRect():null)&&u(f);var p=c&&(d.__dirty&ei.REDARAW_BIT||!d.__isRendered)?d.getPaintRect():null;p&&u(p)}}for(h=this.__prevStartIndex;h<this.__prevEndIndex;++h){var d,f;c=(d=e[h]).shouldBePainted(n,i,!0,!0);if(d&&(!c||!d.__zr)&&d.__isRendered)(f=d.getPrevPaintRect())&&u(f)}do{r=!1;for(h=0;h<o.length;)if(o[h].isZero())o.splice(h,1);else{for(var g=h+1;g<o.length;)o[h].intersect(o[g])?(r=!0,o[h].union(o[g]),o.splice(g,1)):g++;h++}}while(r);return this._paintRects=o,o},e.prototype.debugGetPaintRects=function(){return(this._paintRects||[]).slice()},e.prototype.resize=function(t,e){var n=this.dpr,i=this.dom,r=i.style,o=this.domBack;r&&(r.width=t+"px",r.height=e+"px"),i.width=t*n,i.height=e*n,o&&(o.width=t*n,o.height=e*n,1!==n&&this.ctxBack.scale(n,n))},e.prototype.clear=function(t,e,n){var i=this.dom,r=this.ctx,o=i.width,a=i.height;e=e||this.clearColor;var s=this.motionBlur&&!t,l=this.lastFrameAlpha,u=this.dpr,h=this;s&&(this.domBack||this.createBackBuffer(),this.ctxBack.globalCompositeOperation="copy",this.ctxBack.drawImage(i,0,0,o/u,a/u));var c=this.domBack;function p(t,n,i,o){if(r.clearRect(t,n,i,o),e&&"transparent"!==e){var a=void 0;q(e)?(a=e.__canvasGradient||dy(r,e,{x:0,y:0,width:i,height:o}),e.__canvasGradient=a):K(e)&&(a=by(r,e,{dirty:function(){h.setUnpainted(),h.__painter.refresh()}})),r.save(),r.fillStyle=a||e,r.fillRect(t,n,i,o),r.restore()}s&&(r.save(),r.globalAlpha=l,r.drawImage(c,t,n,i,o),r.restore())}!n||s?p(0,0,o,a):n.length&&P(n,(function(t){p(t.x*u,t.y*u,t.width*u,t.height*u)}))},e}(Ft),nw=1e5,iw=314159,rw=.01;function ow(t){return parseInt(t,10)}var aw=function(){function t(t,e,n,i){this.type="canvas",this._zlevelList=[],this._prevDisplayList=[],this._layers={},this._layerConfig={},this._needsManuallyCompositing=!1,this.type="canvas";var r=!t.nodeName||"CANVAS"===t.nodeName.toUpperCase();this._opts=n=I({},n||{}),this.dpr=n.devicePixelRatio||Zn,this._singleCanvas=r,this.root=t;var o=t.style;o&&(o.webkitTapHighlightColor="transparent",o.webkitUserSelect="none",o.userSelect="none",o["-webkit-touch-callout"]="none",t.innerHTML=""),this.storage=e;var a=this._zlevelList;this._prevDisplayList=[];var s=this._layers;if(r){var l=t,u=l.width,h=l.height;null!=n.width&&(u=n.width),null!=n.height&&(h=n.height),this.dpr=n.devicePixelRatio||1,l.width=u*this.dpr,l.height=h*this.dpr,this._width=u,this._height=h;var c=new ew(l,this,this.dpr);c.__builtin__=!0,c.initContext(),s[314159]=c,c.zlevel=iw,a.push(iw),this._domRoot=t}else{this._width=this._getSize(0),this._height=this._getSize(1);var p=this._domRoot=function(t,e){var n=document.createElement("div");return n.style.cssText=["position:relative","width:"+t+"px","height:"+e+"px","padding:0","margin:0","border-width:0"].join(";")+";",n}(this._width,this._height);t.appendChild(p)}}return t.prototype.getType=function(){return"canvas"},t.prototype.isSingleCanvas=function(){return this._singleCanvas},t.prototype.getViewportRoot=function(){return this._domRoot},t.prototype.getViewportRootOffset=function(){var t=this.getViewportRoot();if(t)return{offsetLeft:t.offsetLeft||0,offsetTop:t.offsetTop||0}},t.prototype.refresh=function(t){var e=this.storage.getDisplayList(!0),n=this._prevDisplayList,i=this._zlevelList;this._redrawId=Math.random(),this._paintList(e,n,t,this._redrawId);for(var r=0;r<i.length;r++){var o=i[r],a=this._layers[o];if(!a.__builtin__&&a.refresh){var s=0===r?this._backgroundColor:null;a.refresh(s)}}return this._opts.useDirtyRect&&(this._prevDisplayList=e.slice()),this},t.prototype.refreshHover=function(){this._paintHoverList(this.storage.getDisplayList(!1))},t.prototype._paintHoverList=function(t){var e=t.length,n=this._hoverlayer;if(n&&n.clear(),e){for(var i,r={inHover:!0,viewWidth:this._width,viewHeight:this._height},o=0;o<e;o++){var a=t[o];a.__inHover&&(n||(n=this._hoverlayer=this.getLayer(nw)),i||(i=n.ctx).save(),Ly(i,a,r,o===e-1))}i&&i.restore()}},t.prototype.getHoverLayer=function(){return this.getLayer(nw)},t.prototype.paintOne=function(t,e){Dy(t,e)},t.prototype._paintList=function(t,e,n,i){if(this._redrawId===i){n=n||!1,this._updateLayerStatus(t);var r=this._doPaintList(t,e,n),o=r.finished,a=r.needsRefreshHover;if(this._needsManuallyCompositing&&this._compositeManually(),a&&this._paintHoverList(t),o)this.eachLayer((function(t){t.afterBrush&&t.afterBrush()}));else{var s=this;mi((function(){s._paintList(t,e,n,i)}))}}},t.prototype._compositeManually=function(){var t=this.getLayer(iw).ctx,e=this._domRoot.width,n=this._domRoot.height;t.clearRect(0,0,e,n),this.eachBuiltinLayer((function(i){i.virtual&&t.drawImage(i.dom,0,0,e,n)}))},t.prototype._doPaintList=function(t,e,n){for(var i=this,r=[],o=this._opts.useDirtyRect,s=0;s<this._zlevelList.length;s++){var l=this._zlevelList[s],u=this._layers[l];u.__builtin__&&u!==this._hoverlayer&&(u.__dirty||n)&&r.push(u)}for(var h=!0,c=!1,p=function(a){var s=r[a],l=s.ctx,u=o&&s.createRepaintRects(t,e,d._width,d._height);l.save();var p,f=n?s.__startIndex:s.__drawIndex,g=!n&&s.incremental&&Date.now,y=g&&Date.now(),v=s.zlevel===d._zlevelList[0]?d._backgroundColor:null;if(s.__startIndex===s.__endIndex)s.clear(!1,v,u);else if(f===s.__startIndex){var m=t[f];m.incremental&&m.notClear&&!n||s.clear(!1,v,u)}-1===f&&(console.error("For some unknown reason. drawIndex is -1"),f=s.__startIndex);var _=function(e){var n={inHover:!1,allClipped:!1,prevEl:null,viewWidth:i._width,viewHeight:i._height};for(p=f;p<s.__endIndex;p++){var r=t[p];if(r.__inHover&&(c=!0),i._doPaintEl(r,s,o,e,n,p===s.__endIndex-1),g)if(Date.now()-y>15)break}n.prevElClipPaths&&l.restore()};if(u)if(0===u.length)p=s.__endIndex;else for(var x=d.dpr,b=0;b<u.length;++b){var w=u[b];l.save(),l.beginPath(),l.rect(w.x*x,w.y*x,w.width*x,w.height*x),l.clip(),_(w),l.restore()}else l.save(),_(),l.restore();s.__drawIndex=p,s.__drawIndex<s.__endIndex&&(h=!1)},d=this,f=0;f<r.length;f++)p(f);return a.wxa&&P(this._layers,(function(t){t&&t.ctx&&t.ctx.draw&&t.ctx.draw()})),{finished:h,needsRefreshHover:c}},t.prototype._doPaintEl=function(t,e,n,i,r,o){var a=e.ctx;if(n){var s=t.getPaintRect();(!i||s&&s.intersect(i))&&(Ly(a,t,r,o),t.setPrevPaintRect(s))}else Ly(a,t,r,o)},t.prototype.getLayer=function(t,e){this._singleCanvas&&!this._needsManuallyCompositing&&(t=iw);var n=this._layers[t];return n||((n=new ew("zr_"+t,this,this.dpr)).zlevel=t,n.__builtin__=!0,this._layerConfig[t]?S(n,this._layerConfig[t],!0):this._layerConfig[t-rw]&&S(n,this._layerConfig[t-rw],!0),e&&(n.virtual=e),this.insertLayer(t,n),n.initContext()),n},t.prototype.insertLayer=function(t,e){var n=this._layers,i=this._zlevelList,r=i.length,o=this._domRoot,a=null,s=-1;if(n[t])b("ZLevel "+t+" has been used already");else if(function(t){return!!t&&(!!t.__builtin__||"function"==typeof t.resize&&"function"==typeof t.refresh)}(e)){if(r>0&&t>i[0]){for(s=0;s<r-1&&!(i[s]<t&&i[s+1]>t);s++);a=n[i[s]]}if(i.splice(s+1,0,t),n[t]=e,!e.virtual)if(a){var l=a.dom;l.nextSibling?o.insertBefore(e.dom,l.nextSibling):o.appendChild(e.dom)}else o.firstChild?o.insertBefore(e.dom,o.firstChild):o.appendChild(e.dom);e.__painter=this}else b("Layer of zlevel "+t+" is not valid")},t.prototype.eachLayer=function(t,e){for(var n=this._zlevelList,i=0;i<n.length;i++){var r=n[i];t.call(e,this._layers[r],r)}},t.prototype.eachBuiltinLayer=function(t,e){for(var n=this._zlevelList,i=0;i<n.length;i++){var r=n[i],o=this._layers[r];o.__builtin__&&t.call(e,o,r)}},t.prototype.eachOtherLayer=function(t,e){for(var n=this._zlevelList,i=0;i<n.length;i++){var r=n[i],o=this._layers[r];o.__builtin__||t.call(e,o,r)}},t.prototype.getLayers=function(){return this._layers},t.prototype._updateLayerStatus=function(t){function e(t){o&&(o.__endIndex!==t&&(o.__dirty=!0),o.__endIndex=t)}if(this.eachBuiltinLayer((function(t,e){t.__dirty=t.__used=!1})),this._singleCanvas)for(var n=1;n<t.length;n++){if((s=t[n]).zlevel!==t[n-1].zlevel||s.incremental){this._needsManuallyCompositing=!0;break}}var i,r,o=null,a=0;for(r=0;r<t.length;r++){var s,l=(s=t[r]).zlevel,u=void 0;i!==l&&(i=l,a=0),s.incremental?((u=this.getLayer(l+.001,this._needsManuallyCompositing)).incremental=!0,a=1):u=this.getLayer(l+(a>0?rw:0),this._needsManuallyCompositing),u.__builtin__||b("ZLevel "+l+" has been used by unkown layer "+u.id),u!==o&&(u.__used=!0,u.__startIndex!==r&&(u.__dirty=!0),u.__startIndex=r,u.incremental?u.__drawIndex=-1:u.__drawIndex=r,e(r),o=u),s.__dirty&ei.REDARAW_BIT&&!s.__inHover&&(u.__dirty=!0,u.incremental&&u.__drawIndex<0&&(u.__drawIndex=r))}e(r),this.eachBuiltinLayer((function(t,e){!t.__used&&t.getElementCount()>0&&(t.__dirty=!0,t.__startIndex=t.__endIndex=t.__drawIndex=0),t.__dirty&&t.__drawIndex<0&&(t.__drawIndex=t.__startIndex)}))},t.prototype.clear=function(){return this.eachBuiltinLayer(this._clearLayer),this},t.prototype._clearLayer=function(t){t.clear()},t.prototype.setBackgroundColor=function(t){this._backgroundColor=t,P(this._layers,(function(t){t.setUnpainted()}))},t.prototype.configLayer=function(t,e){if(e){var n=this._layerConfig;n[t]?S(n[t],e,!0):n[t]=e;for(var i=0;i<this._zlevelList.length;i++){var r=this._zlevelList[i];if(r===t||r===t+rw)S(this._layers[r],n[t],!0)}}},t.prototype.delLayer=function(t){var e=this._layers,n=this._zlevelList,i=e[t];i&&(i.dom.parentNode.removeChild(i.dom),delete e[t],n.splice(A(n,t),1))},t.prototype.resize=function(t,e){if(this._domRoot.style){var n=this._domRoot;n.style.display="none";var i=this._opts;if(null!=t&&(i.width=t),null!=e&&(i.height=e),t=this._getSize(0),e=this._getSize(1),n.style.display="",this._width!==t||e!==this._height){for(var r in n.style.width=t+"px",n.style.height=e+"px",this._layers)this._layers.hasOwnProperty(r)&&this._layers[r].resize(t,e);this.refresh(!0)}this._width=t,this._height=e}else{if(null==t||null==e)return;this._width=t,this._height=e,this.getLayer(iw).resize(t,e)}return this},t.prototype.clearLayer=function(t){var e=this._layers[t];e&&e.clear()},t.prototype.dispose=function(){this.root.innerHTML="",this.root=this.storage=this._domRoot=this._layers=null},t.prototype.getRenderedCanvas=function(t){if(t=t||{},this._singleCanvas&&!this._compositeManually)return this._layers[314159].dom;var e=new ew("image",this,t.pixelRatio||this.dpr);e.initContext(),e.clear(!1,t.backgroundColor||this._backgroundColor);var n=e.ctx;if(t.pixelRatio<=this.dpr){this.refresh();var i=e.dom.width,r=e.dom.height;this.eachLayer((function(t){t.__builtin__?n.drawImage(t.dom,0,0,i,r):t.renderToCanvas&&(n.save(),t.renderToCanvas(n),n.restore())}))}else for(var o={inHover:!1,viewWidth:this._width,viewHeight:this._height},a=this.storage.getDisplayList(!0),s=0,l=a.length;s<l;s++){var u=a[s];Ly(n,u,o,s===l-1)}return e.dom},t.prototype.getWidth=function(){return this._width},t.prototype.getHeight=function(){return this._height},t.prototype._getSize=function(t){var e=this._opts,n=["width","height"][t],i=["clientWidth","clientHeight"][t],r=["paddingLeft","paddingTop"][t],o=["paddingRight","paddingBottom"][t];if(null!=e[n]&&"auto"!==e[n])return parseFloat(e[n]);var a=this.root,s=document.defaultView.getComputedStyle(a);return(a[i]||ow(s[n])||ow(a.style[n]))-(ow(s[r])||0)-(ow(s[o])||0)|0},t.prototype.pathToImage=function(t,e){e=e||this.dpr;var n=document.createElement("canvas"),i=n.getContext("2d"),r=t.getBoundingRect(),o=t.style,a=o.shadowBlur*e,s=o.shadowOffsetX*e,l=o.shadowOffsetY*e,u=t.hasStroke()?o.lineWidth:0,h=Math.max(u/2,-s+a),c=Math.max(u/2,s+a),p=Math.max(u/2,-l+a),d=Math.max(u/2,l+a),f=r.width+h+c,g=r.height+p+d;n.width=f*e,n.height=g*e,i.scale(e,e),i.clearRect(0,0,f,g),i.dpr=e;var y={x:t.x,y:t.y,scaleX:t.scaleX,scaleY:t.scaleY,rotation:t.rotation,originX:t.originX,originY:t.originY};t.x=h-r.x,t.y=p-r.y,t.rotation=0,t.scaleX=1,t.scaleY=1,t.updateTransform(),t&&Ly(i,t,{inHover:!1,viewWidth:this._width,viewHeight:this._height},!0);var v=new Qa({style:{x:0,y:0,image:n}});return I(t,y),v},t}();var sw=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.hasSymbolVisual=!0,n}return n(e,t),e.prototype.getInitialData=function(t){return E_(this.getSource(),this,{useEncodeDefaulter:!0})},e.prototype.getLegendIcon=function(t){var e=new zi,n=py("line",0,t.itemHeight/2,t.itemWidth,0,t.lineStyle.stroke,!1);e.add(n),n.setStyle(t.lineStyle);var i=this.getData().getVisual("symbol"),r="none"===i?"circle":i,o=.8*t.itemHeight,a=py(r,(t.itemWidth-o)/2,(t.itemHeight-o)/2,o,o,t.itemStyle.fill,t.symbolKeepAspect);return e.add(a),a.setStyle(t.itemStyle),r.indexOf("empty")>-1&&(a.style.stroke=a.style.fill,a.style.fill="#ffffff",a.style.lineWidth=2),e},e.type="series.line",e.dependencies=["grid","polar"],e.defaultOption={zlevel:0,z:3,coordinateSystem:"cartesian2d",legendHoverLink:!0,clip:!0,label:{position:"top"},endLabel:{show:!1,valueAnimation:!0,distance:8},lineStyle:{width:2,type:"solid"},emphasis:{scale:!0,lineStyle:{width:"bolder"}},step:!1,smooth:!1,smoothMonotone:null,symbol:"emptyCircle",symbolSize:4,symbolRotate:null,showSymbol:!0,showAllSymbol:"auto",connectNulls:!1,sampling:"none",animationEasing:"linear",progressive:0,hoverLayerThreshold:1/0},e}(pf);function lw(t,e){var n=t.mapDimensionsAll("defaultedLabel"),i=n.length;if(1===i){var r=wd(t,e,n[0]);return null!=r?r+"":null}if(i){for(var o=[],a=0;a<n.length;a++)o.push(wd(t,e,n[a]));return o.join(" ")}}function uw(t,e){var n=t.mapDimensionsAll("defaultedLabel");if(!F(e))return e+"";for(var i=[],r=0;r<n.length;r++){var o=t.getDimensionInfo(n[r]);o&&i.push(e[o.index])}return i.join(" ")}var hw=function(t){function e(e,n,i,r){var o=t.call(this)||this;return o.updateData(e,n,i,r),o}return n(e,t),e.prototype._createSymbol=function(t,e,n,i,r){this.removeAll();var o=py(t,-1,-1,2,2,null,r);o.attr({z2:100,culling:!0,scaleX:i[0]/2,scaleY:i[1]/2}),o.drift=cw,this._symbolType=t,this.add(o)},e.prototype.stopSymbolAnimation=function(t){this.childAt(0).stopAnimation(null,t)},e.prototype.getSymbolPath=function(){return this.childAt(0)},e.prototype.highlight=function(){Xs(this.childAt(0))},e.prototype.downplay=function(){Zs(this.childAt(0))},e.prototype.setZ=function(t,e){var n=this.childAt(0);n.zlevel=t,n.z=e},e.prototype.setDraggable=function(t){var e=this.childAt(0);e.draggable=t,e.cursor=t?"move":e.cursor},e.prototype.updateData=function(t,n,i,r){this.silent=!1;var o=t.getItemVisual(n,"symbol")||"circle",a=t.hostModel,s=e.getSymbolSize(t,n),l=o!==this._symbolType,u=r&&r.disableAnimation;if(l){var h=t.getItemVisual(n,"symbolKeepAspect");this._createSymbol(o,t,n,s,h)}else{(p=this.childAt(0)).silent=!1;var c={scaleX:s[0]/2,scaleY:s[1]/2};u?p.attr(c):Fu(p,c,a,n)}if(this._updateCommon(t,n,s,i,r),l){var p=this.childAt(0);if(!u){c={scaleX:this._sizeX,scaleY:this._sizeY,style:{opacity:p.style.opacity}};p.scaleX=p.scaleY=0,p.style.opacity=0,Gu(p,c,a,n)}}u&&this.childAt(0).stopAnimation("remove"),this._seriesModel=a},e.prototype._updateCommon=function(t,e,n,i,r){var o,a,s,l,u,h,c,p,d=this.childAt(0),f=t.hostModel;if(i&&(o=i.emphasisItemStyle,a=i.blurItemStyle,s=i.selectItemStyle,l=i.focus,u=i.blurScope,h=i.labelStatesModels,c=i.hoverScale,p=i.cursorStyle),!i||t.hasItemOption){var g=i&&i.itemModel?i.itemModel:t.getItemModel(e),y=g.getModel("emphasis");o=y.getModel("itemStyle").getItemStyle(),s=g.getModel(["select","itemStyle"]).getItemStyle(),a=g.getModel(["blur","itemStyle"]).getItemStyle(),l=y.get("focus"),u=y.get("blurScope"),h=uh(g),c=y.getShallow("scale"),p=g.getShallow("cursor")}var v=t.getItemVisual(e,"symbolRotate");d.attr("rotation",(v||0)*Math.PI/180||0);var m=t.getItemVisual(e,"symbolOffset")||0;m&&(F(m)||(m=[m,m]),d.x=Zi(m[0],n[0]),d.y=Zi(tt(m[1],m[0])||0,n[1])),p&&d.attr("cursor",p);var _=t.getItemVisual(e,"style"),x=_.fill;if(d instanceof Qa){var b=d.style;d.useStyle(I({image:b.image,x:b.x,y:b.y,width:b.width,height:b.height},_))}else d.__isEmptyBrush?d.useStyle(I({},_)):d.useStyle(_),d.style.decal=null,d.setColor(x,r&&r.symbolInnerColor),d.style.strokeNoScale=!0;var w=t.getItemVisual(e,"liftZ"),S=this._z2;null!=w?null==S&&(this._z2=d.z2,d.z2+=w):null!=S&&(d.z2=S,this._z2=null);var M=r&&r.useNameLabel;lh(d,h,{labelFetcher:f,labelDataIndex:e,defaultText:function(e){return M?t.getName(e):lw(t,e)},inheritColor:x,defaultOpacity:_.opacity}),this._sizeX=n[0]/2,this._sizeY=n[1]/2;var T=d.ensureState("emphasis");if(T.style=o,d.ensureState("select").style=s,d.ensureState("blur").style=a,c){var C=Math.max(1.1,3/this._sizeY);T.scaleX=this._sizeX*C,T.scaleY=this._sizeY*C}this.setSymbolScale(1),ol(this,l,u)},e.prototype.setSymbolScale=function(t){this.scaleX=this.scaleY=t},e.prototype.fadeOut=function(t,e){var n=this.childAt(0),i=this._seriesModel,r=vs(this).dataIndex,o=e&&e.animation;if(this.silent=n.silent=!0,e&&e.fadeLabel){var a=n.getTextContent();a&&Hu(a,{style:{opacity:0}},i,{dataIndex:r,removeOpt:o,cb:function(){n.removeTextContent()}})}else n.removeTextContent();Hu(n,{style:{opacity:0},scaleX:0,scaleY:0},i,{dataIndex:r,cb:t,removeOpt:o})},e.getSymbolSize=function(t,e){var n=t.getItemVisual(e,"symbolSize");return F(n)?n.slice():[+n,+n]},e}(zi);function cw(t,e){this.parent.drift(t,e)}function pw(t,e,n,i){return e&&!isNaN(e[0])&&!isNaN(e[1])&&!(i.isIgnore&&i.isIgnore(n))&&!(i.clipShape&&!i.clipShape.contain(e[0],e[1]))&&"none"!==t.getItemVisual(n,"symbol")}function dw(t){return null==t||Y(t)||(t={isIgnore:t}),t||{}}function fw(t){var e=t.hostModel,n=e.getModel("emphasis");return{emphasisItemStyle:n.getModel("itemStyle").getItemStyle(),blurItemStyle:e.getModel(["blur","itemStyle"]).getItemStyle(),selectItemStyle:e.getModel(["select","itemStyle"]).getItemStyle(),focus:n.get("focus"),blurScope:n.get("blurScope"),hoverScale:n.get("scale"),labelStatesModels:uh(e),cursorStyle:e.get("cursor")}}var gw=function(){function t(t){this.group=new zi,this._SymbolCtor=t||hw}return t.prototype.updateData=function(t,e){e=dw(e);var n=this.group,i=t.hostModel,r=this._data,o=this._SymbolCtor,a=e.disableAnimation,s=fw(t),l={disableAnimation:a},u=e.getSymbolPoint||function(e){return t.getItemLayout(e)};r||n.removeAll(),t.diff(r).add((function(i){var r=u(i);if(pw(t,r,i,e)){var a=new o(t,i,s,l);a.setPosition(r),t.setItemGraphicEl(i,a),n.add(a)}})).update((function(h,c){var p=r.getItemGraphicEl(c),d=u(h);if(pw(t,d,h,e)){if(p){p.updateData(t,h,s,l);var f={x:d[0],y:d[1]};a?p.attr(f):Fu(p,f,i)}else(p=new o(t,h)).setPosition(d);n.add(p),t.setItemGraphicEl(h,p)}else n.remove(p)})).remove((function(t){var e=r.getItemGraphicEl(t);e&&e.fadeOut((function(){n.remove(e)}))})).execute(),this._getSymbolPoint=u,this._data=t},t.prototype.isPersistent=function(){return!0},t.prototype.updateLayout=function(){var t=this,e=this._data;e&&e.eachItemGraphicEl((function(e,n){var i=t._getSymbolPoint(n);e.setPosition(i),e.markRedraw()}))},t.prototype.incrementalPrepareUpdate=function(t){this._seriesScope=fw(t),this._data=null,this.group.removeAll()},t.prototype.incrementalUpdate=function(t,e,n){function i(t){t.isGroup||(t.incremental=!0,t.ensureState("emphasis").hoverLayer=!0)}n=dw(n);for(var r=t.start;r<t.end;r++){var o=e.getItemLayout(r);if(pw(e,o,r,n)){var a=new this._SymbolCtor(e,r,this._seriesScope);a.traverse(i),a.setPosition(o),this.group.add(a),e.setItemGraphicEl(r,a)}}},t.prototype.remove=function(t){var e=this.group,n=this._data;n&&t?n.eachItemGraphicEl((function(t){t.fadeOut((function(){e.remove(t)}))})):e.removeAll()},t}();function yw(t,e,n){var i=t.getBaseAxis(),r=t.getOtherAxis(i),o=function(t,e){var n=0,i=t.scale.getExtent();"start"===e?n=i[0]:"end"===e?n=i[1]:i[0]>0?n=i[0]:i[1]<0&&(n=i[1]);return n}(r,n),a=i.dim,s=r.dim,l=e.mapDimension(s),u=e.mapDimension(a),h="x"===s||"radius"===s?1:0,c=O(t.dimensions,(function(t){return e.mapDimension(t)})),p=!1,d=e.getCalculationInfo("stackResultDimension");return R_(e,c[0])&&(p=!0,c[0]=d),R_(e,c[1])&&(p=!0,c[1]=d),{dataDimsForPoint:c,valueStart:o,valueAxisDim:s,baseAxisDim:a,stacked:!!p,valueDim:l,baseDim:u,baseDataOffset:h,stackedOverDimension:e.getCalculationInfo("stackedOverDimension")}}function vw(t,e,n,i){var r=NaN;t.stacked&&(r=n.get(n.getCalculationInfo("stackedOverDimension"),i)),isNaN(r)&&(r=t.valueStart);var o=t.baseDataOffset,a=[];return a[o]=n.get(t.baseDim,i),a[1-o]=r,e.dataToPoint(a)}var mw="undefined"!=typeof Float32Array,_w=mw?Float32Array:Array;function xw(t){return F(t)?mw?new Float32Array(t):t:new _w(t)}var bw=Math.min,ww=Math.max;function Sw(t,e){return isNaN(t)||isNaN(e)}function Mw(t,e,n,i,r,o,a,s,l){for(var u,h,c,p,d,f,g=n,y=0;y<i;y++){var v=e[2*g],m=e[2*g+1];if(g>=r||g<0)break;if(Sw(v,m)){if(l){g+=o;continue}break}if(g===n)t[o>0?"moveTo":"lineTo"](v,m),c=v,p=m;else{var _=v-u,x=m-h;if(_*_+x*x<.5){g+=o;continue}if(a>0){var b=g+o,w=e[2*b],S=e[2*b+1],M=y+1;if(l)for(;Sw(w,S)&&M<i;)M++,w=e[2*(b+=o)],S=e[2*b+1];var I=.5,T=0,C=0,A=void 0,D=void 0;if(M>=i||Sw(w,S))d=v,f=m;else{T=w-u,C=S-h;var L=v-u,k=w-v,P=m-h,O=S-m,R=void 0,N=void 0;"x"===s?(R=Math.abs(L),N=Math.abs(k),d=v-R*a,f=m,A=v+R*a,D=m):"y"===s?(R=Math.abs(P),N=Math.abs(O),d=v,f=m-R*a,A=v,D=m+R*a):(R=Math.sqrt(L*L+P*P),d=v-T*a*(1-(I=(N=Math.sqrt(k*k+O*O))/(N+R))),f=m-C*a*(1-I),D=m+C*a*I,A=bw(A=v+T*a*I,ww(w,v)),D=bw(D,ww(S,m)),A=ww(A,bw(w,v)),f=m-(C=(D=ww(D,bw(S,m)))-m)*R/N,d=bw(d=v-(T=A-v)*R/N,ww(u,v)),f=bw(f,ww(h,m)),A=v+(T=v-(d=ww(d,bw(u,v))))*N/R,D=m+(C=m-(f=ww(f,bw(h,m))))*N/R)}t.bezierCurveTo(c,p,d,f,v,m),c=A,p=D}else t.lineTo(v,m)}u=v,h=m,g+=o}return y}var Iw=function(){this.smooth=0,this.smoothConstraint=!0},Tw=function(t){function e(e){var n=t.call(this,e)||this;return n.type="ec-polyline",n}return n(e,t),e.prototype.getDefaultStyle=function(){return{stroke:"#000000",fill:null}},e.prototype.getDefaultShape=function(){return new Iw},e.prototype.buildPath=function(t,e){var n=e.points,i=0,r=n.length/2;if(e.connectNulls){for(;r>0&&Sw(n[2*r-2],n[2*r-1]);r--);for(;i<r&&Sw(n[2*i],n[2*i+1]);i++);}for(;i<r;)i+=Mw(t,n,i,r,r,1,e.smooth,e.smoothMonotone,e.connectNulls)+1},e.prototype.getPointOn=function(t,e){this.path||(this.createPathProxy(),this.buildPath(this.path,this.shape));for(var n,i,r=this.path.data,o=Aa.CMD,a="x"===e,s=[],l=0;l<r.length;){var u=void 0,h=void 0,c=void 0,p=void 0,d=void 0,f=void 0,g=void 0;switch(r[l++]){case o.M:n=r[l++],i=r[l++];break;case o.L:if(u=r[l++],h=r[l++],(g=a?(t-n)/(u-n):(t-i)/(h-i))<=1&&g>=0){var y=a?(h-i)*g+i:(u-n)*g+n;return a?[t,y]:[y,t]}n=u,i=h;break;case o.C:u=r[l++],h=r[l++],c=r[l++],p=r[l++],d=r[l++],f=r[l++];var v=a?zo(n,u,c,d,t,s):zo(i,h,p,f,t,s);if(v>0)for(var m=0;m<v;m++){var _=s[m];if(_<=1&&_>=0){y=a?No(i,h,p,f,_):No(n,u,c,d,_);return a?[t,y]:[y,t]}}n=d,i=f}}},e}(ja),Cw=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e}(Iw),Aw=function(t){function e(e){var n=t.call(this,e)||this;return n.type="ec-polygon",n}return n(e,t),e.prototype.getDefaultShape=function(){return new Cw},e.prototype.buildPath=function(t,e){var n=e.points,i=e.stackedOnPoints,r=0,o=n.length/2,a=e.smoothMonotone;if(e.connectNulls){for(;o>0&&Sw(n[2*o-2],n[2*o-1]);o--);for(;r<o&&Sw(n[2*r],n[2*r+1]);r++);}for(;r<o;){var s=Mw(t,n,r,o,o,1,e.smooth,a,e.connectNulls);Mw(t,i,r+s-1,s,o,-1,e.stackedOnSmooth,a,e.connectNulls),r+=s+1,t.closePath()}},e}(ja);function Dw(t,e,n,i,r){var o=t.getArea(),a=o.x,s=o.y,l=o.width,u=o.height,h=n.get(["lineStyle","width"])||2;a-=h/2,s-=h/2,l+=h,u+=h,a=Math.floor(a),l=Math.round(l);var c=new as({shape:{x:a,y:s,width:l,height:u}});if(e){var p=t.getBaseAxis(),d=p.isHorizontal(),f=p.inverse;d?(f&&(c.shape.x+=l),c.shape.width=0):(f||(c.shape.y+=u),c.shape.height=0),Gu(c,{shape:{width:l,height:u,x:a,y:s}},n,null,i,"function"==typeof r?function(t){r(t,c)}:null)}return c}function Lw(t,e,n){var i=t.getArea(),r=ji(i.r0,1),o=ji(i.r,1),a=new Kl({shape:{cx:ji(t.cx,1),cy:ji(t.cy,1),r0:r,r:o,startAngle:i.startAngle,endAngle:i.endAngle,clockwise:i.clockwise}});e&&("angle"===t.getBaseAxis().dim?a.shape.endAngle=i.startAngle:a.shape.r=r,Gu(a,{shape:{endAngle:i.endAngle,r:o}},n));return a}function kw(t,e,n,i,r){return t?"polar"===t.type?Lw(t,e,n):"cartesian2d"===t.type?Dw(t,e,n,i,r):null:null}function Pw(t,e){return t.type===e}function Ow(t,e){if(t.length===e.length){for(var n=0;n<t.length;n++)if(t[n]!==e[n])return;return!0}}function Rw(t){for(var e=1/0,n=1/0,i=-1/0,r=-1/0,o=0;o<t.length;){var a=t[o++],s=t[o++];isNaN(a)||(e=Math.min(a,e),i=Math.max(a,i)),isNaN(s)||(n=Math.min(s,n),r=Math.max(s,r))}return[[e,n],[i,r]]}function Nw(t,e){var n=Rw(t),i=n[0],r=n[1],o=Rw(e),a=o[0],s=o[1];return Math.max(Math.abs(i[0]-a[0]),Math.abs(i[1]-a[1]),Math.abs(r[0]-s[0]),Math.abs(r[1]-s[1]))}function Ew(t){return"number"==typeof t?t:t?.5:0}function zw(t,e,n){for(var i=e.getBaseAxis(),r="x"===i.dim||"radius"===i.dim?0:1,o=[],a=0,s=[],l=[],u=[];a<t.length-2;a+=2)switch(u[0]=t[a+2],u[1]=t[a+3],l[0]=t[a],l[1]=t[a+1],o.push(l[0],l[1]),n){case"end":s[r]=u[r],s[1-r]=l[1-r],o.push(s[0],s[1]);break;case"middle":var h=(l[r]+u[r])/2,c=[];s[r]=c[r]=h,s[1-r]=l[1-r],c[1-r]=u[1-r],o.push(s[0],s[1]),o.push(c[0],c[1]);break;default:s[r]=l[r],s[1-r]=u[1-r],o.push(s[0],s[1])}return o.push(t[a++],t[a++]),o}function Bw(t,e,n){var i=t.get("showAllSymbol"),r="auto"===i;if(!i||r){var o=n.getAxesByScale("ordinal")[0];if(o&&(!r||!function(t,e){var n=t.getExtent(),i=Math.abs(n[1]-n[0])/t.scale.count();isNaN(i)&&(i=0);for(var r=e.count(),o=Math.max(1,Math.round(r/5)),a=0;a<r;a+=o)if(1.5*hw.getSymbolSize(e,a)[t.isHorizontal()?1:0]>i)return!1;return!0}(o,e))){var a=e.mapDimension(o.dim),s={};return P(o.getViewLabels(),(function(t){var e=o.scale.getRawOrdinalNumber(t.tickValue);s[e]=1})),function(t){return!s.hasOwnProperty(e.get(a,t))}}}}function Vw(t,e){return[t[2*e],t[2*e+1]]}function Fw(t,e,n,i){if(Pw(e,"cartesian2d")){var r=i.getModel("endLabel"),o=r.get("show"),a=r.get("valueAnimation"),s=i.getData(),l={lastFrameIndex:0},u=o?function(n,i){t._endLabelOnDuring(n,i,s,l,a,r,e)}:null,h=e.getBaseAxis().isHorizontal(),c=Dw(e,n,i,(function(){var e=t._endLabel;e&&n&&null!=l.originalX&&e.attr({x:l.originalX,y:l.originalY})}),u);if(!i.get("clip",!0)){var p=c.shape,d=Math.max(p.width,p.height);h?(p.y-=d,p.height+=2*d):(p.x-=d,p.width+=2*d)}return u&&u(1,c),c}return Lw(e,n,i)}var Gw=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.init=function(){var t=new zi,e=new gw;this.group.add(e.group),this._symbolDraw=e,this._lineGroup=t},e.prototype.render=function(t,e,n){var i=this,r=t.coordinateSystem,o=this.group,a=t.getData(),s=t.getModel("lineStyle"),l=t.getModel("areaStyle"),u=a.getLayout("points")||[],h="polar"===r.type,c=this._coordSys,p=this._symbolDraw,d=this._polyline,f=this._polygon,g=this._lineGroup,y=t.get("animation"),v=!l.isEmpty(),m=l.get("origin"),_=yw(r,a,m),x=v&&function(t,e,n){if(!n.valueDim)return[];for(var i=e.count(),r=xw(2*i),o=0;o<i;o++){var a=vw(n,t,e,o);r[2*o]=a[0],r[2*o+1]=a[1]}return r}(r,a,_),b=t.get("showSymbol"),w=b&&!h&&Bw(t,a,r),S=this._data;S&&S.eachItemGraphicEl((function(t,e){t.__temp&&(o.remove(t),S.setItemGraphicEl(e,null))})),b||p.remove(),o.add(g);var M,I=!h&&t.get("step");r&&r.getArea&&t.get("clip",!0)&&(null!=(M=r.getArea()).width?(M.x-=.1,M.y-=.1,M.width+=.2,M.height+=.2):M.r0&&(M.r0-=.5,M.r+=.5)),this._clipShapeForSymbol=M;var C=function(t,e){var n=t.getVisual("visualMeta");if(n&&n.length&&t.count()&&"cartesian2d"===e.type){for(var i,r,o=n.length-1;o>=0;o--){var a=n[o].dimension,s=t.dimensions[a],l=t.getDimensionInfo(s);if("x"===(i=l&&l.coordDim)||"y"===i){r=n[o];break}}if(r){var u=e.getAxis(i),h=O(r.stops,(function(t){return{offset:0,coord:u.toGlobalCoord(u.dataToCoord(t.value)),color:t.color}})),c=h.length,p=r.outerColors.slice();c&&h[0].coord>h[c-1].coord&&(h.reverse(),p.reverse());var d=h[0].coord-10,f=h[c-1].coord+10,g=f-d;if(g<.001)return"transparent";P(h,(function(t){t.offset=(t.coord-d)/g})),h.push({offset:c?h[c-1].offset:.5,color:p[1]||"transparent"}),h.unshift({offset:c?h[0].offset:.5,color:p[0]||"transparent"});var y=new yu(0,0,0,0,h,!0);return y[i]=d,y[i+"2"]=f,y}}}(a,r)||a.getVisual("style")[a.getVisual("drawType")];d&&c.type===r.type&&I===this._step?(v&&!f?f=this._newPolygon(u,x):f&&!v&&(g.remove(f),f=this._polygon=null),h||this._initOrUpdateEndLabel(t,r,Dc(C)),g.setClipPath(Fw(this,r,!1,t)),b&&p.updateData(a,{isIgnore:w,clipShape:M,disableAnimation:!0,getSymbolPoint:function(t){return[u[2*t],u[2*t+1]]}}),Ow(this._stackedOnPoints,x)&&Ow(this._points,u)||(y?this._doUpdateAnimation(a,x,r,n,I,m):(I&&(u=zw(u,r,I),x&&(x=zw(x,r,I))),d.setShape({points:u}),f&&f.setShape({points:u,stackedOnPoints:x})))):(b&&p.updateData(a,{isIgnore:w,clipShape:M,disableAnimation:!0,getSymbolPoint:function(t){return[u[2*t],u[2*t+1]]}}),y&&this._initSymbolLabelAnimation(a,r,M),I&&(u=zw(u,r,I),x&&(x=zw(x,r,I))),d=this._newPolyline(u),v&&(f=this._newPolygon(u,x)),h||this._initOrUpdateEndLabel(t,r,Dc(C)),g.setClipPath(Fw(this,r,!0,t)));var A=t.get(["emphasis","focus"]),D=t.get(["emphasis","blurScope"]);(d.useStyle(T(s.getLineStyle(),{fill:"none",stroke:C,lineJoin:"bevel"})),ul(d,t,"lineStyle"),d.style.lineWidth>0&&"bolder"===t.get(["emphasis","lineStyle","width"]))&&(d.getState("emphasis").style.lineWidth=+d.style.lineWidth+1);vs(d).seriesIndex=t.seriesIndex,ol(d,A,D);var L=Ew(t.get("smooth")),k=t.get("smoothMonotone"),R=t.get("connectNulls");if(d.setShape({smooth:L,smoothMonotone:k,connectNulls:R}),f){var N=a.getCalculationInfo("stackedOnSeries"),E=0;f.useStyle(T(l.getAreaStyle(),{fill:C,opacity:.7,lineJoin:"bevel",decal:a.getVisual("style").decal})),N&&(E=Ew(N.get("smooth"))),f.setShape({smooth:L,stackedOnSmooth:E,smoothMonotone:k,connectNulls:R}),ul(f,t,"areaStyle"),vs(f).seriesIndex=t.seriesIndex,ol(f,A,D)}var z=function(t){i._changePolyState(t)};a.eachItemGraphicEl((function(t){t&&(t.onHoverStateChange=z)})),this._polyline.onHoverStateChange=z,this._data=a,this._coordSys=r,this._stackedOnPoints=x,this._points=u,this._step=I,this._valueOrigin=m},e.prototype.dispose=function(){},e.prototype.highlight=function(t,e,n,i){var r=t.getData(),o=Dr(r,i);if(this._changePolyState("emphasis"),!(o instanceof Array)&&null!=o&&o>=0){var a=r.getLayout("points"),s=r.getItemGraphicEl(o);if(!s){var l=a[2*o],u=a[2*o+1];if(isNaN(l)||isNaN(u))return;if(this._clipShapeForSymbol&&!this._clipShapeForSymbol.contain(l,u))return;(s=new hw(r,o)).x=l,s.y=u,s.setZ(t.get("zlevel"),t.get("z"));var h=s.getSymbolPath().getTextContent();h&&(h.z2=this._polyline.z2+1),s.__temp=!0,r.setItemGraphicEl(o,s),s.stopSymbolAnimation(!0),this.group.add(s)}s.highlight()}else Mf.prototype.highlight.call(this,t,e,n,i)},e.prototype.downplay=function(t,e,n,i){var r=t.getData(),o=Dr(r,i);if(this._changePolyState("normal"),null!=o&&o>=0){var a=r.getItemGraphicEl(o);a&&(a.__temp?(r.setItemGraphicEl(o,null),this.group.remove(a)):a.downplay())}else Mf.prototype.downplay.call(this,t,e,n,i)},e.prototype._changePolyState=function(t){var e=this._polygon;Gs(this._polyline,t),e&&Gs(e,t)},e.prototype._newPolyline=function(t){var e=this._polyline;return e&&this._lineGroup.remove(e),e=new Tw({shape:{points:t},segmentIgnoreThreshold:2,z2:10}),this._lineGroup.add(e),this._polyline=e,e},e.prototype._newPolygon=function(t,e){var n=this._polygon;return n&&this._lineGroup.remove(n),n=new Aw({shape:{points:t,stackedOnPoints:e},segmentIgnoreThreshold:2}),this._lineGroup.add(n),this._polygon=n,n},e.prototype._initSymbolLabelAnimation=function(t,e,n){var i,r,o=e.getBaseAxis(),a=o.inverse;"cartesian2d"===e.type?(i=o.isHorizontal(),r=!1):"polar"===e.type&&(i="angle"===o.dim,r=!0);var s=t.hostModel,l=s.get("animationDuration");"function"==typeof l&&(l=l(null));var u=s.get("animationDelay")||0,h="function"==typeof u?u(null):u;t.eachItemGraphicEl((function(t,o){var s=t;if(s){var c=[t.x,t.y],p=void 0,d=void 0,f=void 0;if(r){var g=n,y=e.pointToCoord(c);i?(p=g.startAngle,d=g.endAngle,f=-y[1]/180*Math.PI):(p=g.r0,d=g.r,f=y[0])}else{var v=n;i?(p=v.x,d=v.x+v.width,f=t.x):(p=v.y+v.height,d=v.y,f=t.y)}var m=d===p?0:(f-p)/(d-p);a&&(m=1-m);var _="function"==typeof u?u(o):l*m+h,x=s.getSymbolPath(),b=x.getTextContent();s.attr({scaleX:0,scaleY:0}),s.animateTo({scaleX:1,scaleY:1},{duration:200,delay:_}),b&&b.animateFrom({style:{opacity:0}},{duration:300,delay:_}),x.disableLabelAnimation=!0}}))},e.prototype._initOrUpdateEndLabel=function(t,e,n){var i=t.getModel("endLabel");if(i.get("show")){var r=t.getData(),o=this._polyline,a=this._endLabel;a||((a=this._endLabel=new us({z2:200})).ignoreClip=!0,o.setTextContent(this._endLabel),o.disableLabelAnimation=!0);var s=function(t){for(var e,n,i=t.length/2;i>0&&(e=t[2*i-2],n=t[2*i-1],isNaN(e)||isNaN(n));i--);return i-1}(r.getLayout("points"));s>=0&&(lh(o,uh(t,"endLabel"),{inheritColor:n,labelFetcher:t,labelDataIndex:s,defaultText:function(t,e,n){return null!=n?uw(r,n):lw(r,t)},enableTextSetter:!0},function(t,e){var n=e.getBaseAxis(),i=n.isHorizontal(),r=n.inverse,o=i?r?"right":"left":"center",a=i?"middle":r?"top":"bottom";return{normal:{align:t.get("align")||o,verticalAlign:t.get("verticalAlign")||a}}}(i,e)),o.textConfig.position=null)}else this._endLabel&&(this._polyline.removeTextContent(),this._endLabel=null)},e.prototype._endLabelOnDuring=function(t,e,n,i,r,o,a){var s=this._endLabel,l=this._polyline;if(s){t<1&&null==i.originalX&&(i.originalX=s.x,i.originalY=s.y);var u=n.getLayout("points"),h=n.hostModel,c=h.get("connectNulls"),p=o.get("precision"),d=o.get("distance")||0,f=a.getBaseAxis(),g=f.isHorizontal(),y=f.inverse,v=e.shape,m=y?g?v.x:v.y+v.height:g?v.x+v.width:v.y,_=(g?d:0)*(y?-1:1),x=(g?0:-d)*(y?-1:1),b=g?"x":"y",w=function(t,e,n){for(var i,r,o=t.length/2,a="x"===n?0:1,s=0,l=-1,u=0;u<o;u++)if(r=t[2*u+a],!isNaN(r)&&!isNaN(t[2*u+1-a]))if(0!==u){if(i<=e&&r>=e||i>=e&&r<=e){l=u;break}s=u,i=r}else i=r;return{range:[s,l],t:(e-i)/(r-i)}}(u,m,b),S=w.range,M=S[1]-S[0],I=void 0;if(M>=1){if(M>1&&!c){var T=Vw(u,S[0]);s.attr({x:T[0]+_,y:T[1]+x}),r&&(I=h.getRawValue(S[0]))}else{(T=l.getPointOn(m,b))&&s.attr({x:T[0]+_,y:T[1]+x});var C=h.getRawValue(S[0]),A=h.getRawValue(S[1]);r&&(I=Vr(n,p,C,A,w.t))}i.lastFrameIndex=S[0]}else{var D=1===t||i.lastFrameIndex>0?S[0]:0;T=Vw(u,D);r&&(I=h.getRawValue(D)),s.attr({x:T[0]+_,y:T[1]+x})}r&&vh(s).setLabelText(I)}},e.prototype._doUpdateAnimation=function(t,e,n,i,r,o){var a=this._polyline,s=this._polygon,l=t.hostModel,u=function(t,e,n,i,r,o,a,s){for(var l=function(t,e){var n=[];return e.diff(t).add((function(t){n.push({cmd:"+",idx:t})})).update((function(t,e){n.push({cmd:"=",idx:e,idx1:t})})).remove((function(t){n.push({cmd:"-",idx:t})})).execute(),n}(t,e),u=[],h=[],c=[],p=[],d=[],f=[],g=[],y=yw(r,e,a),v=(yw(o,t,s),t.getLayout("points")||[]),m=e.getLayout("points")||[],_=0;_<l.length;_++){var x=l[_],b=!0,w=void 0,S=void 0;switch(x.cmd){case"=":w=2*x.idx,S=2*x.idx1;var M=v[w],I=v[w+1],T=m[S],C=m[S+1];(isNaN(M)||isNaN(I))&&(M=T,I=C),u.push(M,I),h.push(T,C),c.push(n[w],n[w+1]),p.push(i[S],i[S+1]),g.push(e.getRawIndex(x.idx1));break;case"+":var A=x.idx,D=y.dataDimsForPoint,L=r.dataToPoint([e.get(D[0],A),e.get(D[1],A)]);S=2*A,u.push(L[0],L[1]),h.push(m[S],m[S+1]);var k=vw(y,r,e,A);c.push(k[0],k[1]),p.push(i[S],i[S+1]),g.push(e.getRawIndex(A));break;case"-":b=!1}b&&(d.push(x),f.push(f.length))}f.sort((function(t,e){return g[t]-g[e]}));var P=u.length,O=xw(P),R=xw(P),N=xw(P),E=xw(P),z=[];for(_=0;_<f.length;_++){var B=f[_],V=2*_,F=2*B;O[V]=u[F],O[V+1]=u[F+1],R[V]=h[F],R[V+1]=h[F+1],N[V]=c[F],N[V+1]=c[F+1],E[V]=p[F],E[V+1]=p[F+1],z[_]=d[B]}return{current:O,next:R,stackedOnCurrent:N,stackedOnNext:E,status:z}}(this._data,t,this._stackedOnPoints,e,this._coordSys,n,this._valueOrigin,o),h=u.current,c=u.stackedOnCurrent,p=u.next,d=u.stackedOnNext;if(r&&(h=zw(u.current,n,r),c=zw(u.stackedOnCurrent,n,r),p=zw(u.next,n,r),d=zw(u.stackedOnNext,n,r)),Nw(h,p)>3e3||s&&Nw(c,d)>3e3)return a.setShape({points:p}),void(s&&s.setShape({points:p,stackedOnPoints:d}));a.shape.__points=u.current,a.shape.points=h;var f={shape:{points:p}};u.current!==h&&(f.shape.__points=u.next),a.stopAnimation(),Fu(a,f,l),s&&(s.setShape({points:h,stackedOnPoints:c}),s.stopAnimation(),Fu(s,{shape:{stackedOnPoints:d}},l),a.shape.points!==s.shape.points&&(s.shape.points=a.shape.points));for(var g=[],y=u.status,v=0;v<y.length;v++){if("="===y[v].cmd){var m=t.getItemGraphicEl(y[v].idx1);m&&g.push({el:m,ptIdx:v})}}a.animators&&a.animators.length&&a.animators[0].during((function(){s&&s.dirtyShape();for(var t=a.shape.__points,e=0;e<g.length;e++){var n=g[e].el,i=2*g[e].ptIdx;n.x=t[i],n.y=t[i+1],n.markRedraw()}}))},e.prototype.remove=function(t){var e=this.group,n=this._data;this._lineGroup.removeAll(),this._symbolDraw.remove(!0),n&&n.eachItemGraphicEl((function(t,i){t.__temp&&(e.remove(t),n.setItemGraphicEl(i,null))})),this._polyline=this._polygon=this._coordSys=this._points=this._stackedOnPoints=this._endLabel=this._data=null},e.type="line",e}(Mf);function Hw(t,e){return{seriesType:t,plan:bf(),reset:function(t){var n=t.getData(),i=t.coordinateSystem,r=t.pipelineContext,o=e||r.large;if(i){var a=O(i.dimensions,(function(t){return n.mapDimension(t)})).slice(0,2),s=a.length,l=n.getCalculationInfo("stackResultDimension");R_(n,a[0])&&(a[0]=l),R_(n,a[1])&&(a[1]=l);var u=n.getDimensionInfo(a[0]),h=n.getDimensionInfo(a[1]),c=u&&u.index,p=h&&h.index;return s&&{progress:function(t,e){for(var n=t.end-t.start,r=o&&xw(n*s),a=[],l=[],u=t.start,h=0;u<t.end;u++){var d=void 0;if(1===s){var f=e.getByDimIdx(c,u);d=i.dataToPoint(f,null,l)}else a[0]=e.getByDimIdx(c,u),a[1]=e.getByDimIdx(p,u),d=i.dataToPoint(a,null,l);o?(r[h++]=d[0],r[h++]=d[1]):e.setItemLayout(u,d.slice())}o&&e.setLayout("points",r)}}}}}}var Ww={average:function(t){for(var e=0,n=0,i=0;i<t.length;i++)isNaN(t[i])||(e+=t[i],n++);return 0===n?NaN:e/n},sum:function(t){for(var e=0,n=0;n<t.length;n++)e+=t[n]||0;return e},max:function(t){for(var e=-1/0,n=0;n<t.length;n++)t[n]>e&&(e=t[n]);return isFinite(e)?e:NaN},min:function(t){for(var e=1/0,n=0;n<t.length;n++)t[n]<e&&(e=t[n]);return isFinite(e)?e:NaN},nearest:function(t){return t[0]}},Uw=function(t){return Math.round(t.length/2)};function Yw(t){return{seriesType:t,reset:function(t,e,n){var i=t.getData(),r=t.get("sampling"),o=t.coordinateSystem,a=i.count();if(a>10&&"cartesian2d"===o.type&&r){var s=o.getBaseAxis(),l=o.getOtherAxis(s),u=s.getExtent(),h=n.getDevicePixelRatio(),c=Math.abs(u[1]-u[0])*(h||1),p=Math.round(a/c);if(p>1){"lttb"===r&&t.setData(i.lttbDownSample(i.mapDimension(l.dim),1/p));var d=void 0;"string"==typeof r?d=Ww[r]:"function"==typeof r&&(d=r),d&&t.setData(i.downSample(i.mapDimension(l.dim),1/p,d,Uw))}}}}}var Xw=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.getInitialData=function(t,e){return E_(this.getSource(),this,{useEncodeDefaulter:!0})},e.prototype.getMarkerPosition=function(t){var e=this.coordinateSystem;if(e){var n=e.dataToPoint(e.clampData(t)),i=this.getData(),r=i.getLayout("offset"),o=i.getLayout("size");return n[e.getBaseAxis().isHorizontal()?0:1]+=r+o/2,n}return[NaN,NaN]},e.type="series.__base_bar__",e.defaultOption={zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,barMinHeight:0,barMinAngle:0,large:!1,largeThreshold:400,progressive:3e3,progressiveChunkMode:"mod"},e}(pf);pf.registerClass(Xw);var Zw=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.getInitialData=function(){return E_(this.getSource(),this,{useEncodeDefaulter:!0,createInvertedIndices:!!this.get("realtimeSort",!0)||null})},e.prototype.getProgressive=function(){return!!this.get("large")&&this.get("progressive")},e.prototype.getProgressiveThreshold=function(){var t=this.get("progressiveThreshold"),e=this.get("largeThreshold");return e>t&&(t=e),t},e.prototype.brushSelector=function(t,e,n){return n.rect(e.getItemLayout(t))},e.type="series.bar",e.dependencies=["grid","polar"],e.defaultOption=Rh(Xw.defaultOption,{clip:!0,roundCap:!1,showBackground:!1,backgroundStyle:{color:"rgba(180, 180, 180, 0.2)",borderColor:null,borderWidth:0,borderType:"solid",borderRadius:0,shadowBlur:0,shadowColor:null,shadowOffsetX:0,shadowOffsetY:0,opacity:1},select:{itemStyle:{borderColor:"#212121"}},realtimeSort:!1}),e}(Xw),jw=function(){this.cx=0,this.cy=0,this.r0=0,this.r=0,this.startAngle=0,this.endAngle=2*Math.PI,this.clockwise=!0},qw=function(t){function e(e){var n=t.call(this,e)||this;return n.type="sausage",n}return n(e,t),e.prototype.getDefaultShape=function(){return new jw},e.prototype.buildPath=function(t,e){var n=e.cx,i=e.cy,r=Math.max(e.r0||0,0),o=Math.max(e.r,0),a=.5*(o-r),s=r+a,l=e.startAngle,u=e.endAngle,h=e.clockwise,c=Math.cos(l),p=Math.sin(l),d=Math.cos(u),f=Math.sin(u);(h?u-l<2*Math.PI:l-u<2*Math.PI)&&(t.moveTo(c*r+n,p*r+i),t.arc(c*s+n,p*s+i,a,-Math.PI+l,l,!h)),t.arc(n,i,o,l,u,!h),t.moveTo(d*o+n,f*o+i),t.arc(d*s+n,f*s+i,a,u-2*Math.PI,u-Math.PI,!h),0!==r&&(t.arc(n,i,r,u,l,h),t.moveTo(c*r+n,f*r+i)),t.closePath()},e}(ja),Kw=[0,0],$w=Math.max,Jw=Math.min;var Qw=function(t){function e(){var n=t.call(this)||this;return n.type=e.type,n._isFirstFrame=!0,n}return n(e,t),e.prototype.render=function(t,e,n,i){this._model=t,this._removeOnRenderedListener(n),this._updateDrawMode(t);var r=t.get("coordinateSystem");("cartesian2d"===r||"polar"===r)&&(this._isLargeDraw?this._renderLarge(t,e,n):this._renderNormal(t,e,n,i))},e.prototype.incrementalPrepareRender=function(t){this._clear(),this._updateDrawMode(t),this._updateLargeClip(t)},e.prototype.incrementalRender=function(t,e){this._incrementalRenderLarge(t,e)},e.prototype._updateDrawMode=function(t){var e=t.pipelineContext.large;null!=this._isLargeDraw&&e===this._isLargeDraw||(this._isLargeDraw=e,this._clear())},e.prototype._renderNormal=function(t,e,n,i){var r,o=this.group,a=t.getData(),s=this._data,l=t.coordinateSystem,u=l.getBaseAxis();"cartesian2d"===l.type?r=u.isHorizontal():"polar"===l.type&&(r="angle"===u.dim);var h=t.isAnimationEnabled()?t:null,c=function(t,e){var n=t.get("realtimeSort",!0),i=e.getBaseAxis();0;if(n&&"category"===i.type&&"cartesian2d"===e.type)return{baseAxis:i,otherAxis:e.getOtherAxis(i)}}(t,l);c&&this._enableRealtimeSort(c,a,n);var p=t.get("clip",!0)||c,d=function(t,e){var n=t.getArea&&t.getArea();if(Pw(t,"cartesian2d")){var i=t.getBaseAxis();if("category"!==i.type||!i.onBand){var r=e.getLayout("bandWidth");i.isHorizontal()?(n.x-=r,n.width+=2*r):(n.y-=r,n.height+=2*r)}}return n}(l,a);o.removeClipPath();var f=t.get("roundCap",!0),g=t.get("showBackground",!0),y=t.getModel("backgroundStyle"),v=y.get("borderRadius")||0,m=[],_=this._backgroundEls,x=i&&i.isInitSort,b=i&&"changeAxisOrder"===i.type;function w(t){var e=iS[l.type](a,t),n=function(t,e,n){return new("polar"===t.type?Kl:as)({shape:uS(e,n,t),silent:!0,z2:0})}(l,r,e);return n.useStyle(y.getItemStyle()),"cartesian2d"===l.type&&n.setShape("r",v),m[t]=n,n}a.diff(s).add((function(e){var n=a.getItemModel(e),i=iS[l.type](a,e,n);if(g&&w(e),a.hasValue(e)){var s=!1;p&&(s=tS[l.type](d,i));var y=eS[l.type](t,a,e,i,r,h,u.model,!1,f);rS(y,a,e,n,i,t,r,"polar"===l.type),x?y.attr({shape:i}):c?nS(c,h,y,i,e,r,!1,!1):Gu(y,{shape:i},t,e),a.setItemGraphicEl(e,y),o.add(y),y.ignore=s}})).update((function(e,n){var i=a.getItemModel(e),S=iS[l.type](a,e,i);if(g){var M=void 0;0===_.length?M=w(n):((M=_[n]).useStyle(y.getItemStyle()),"cartesian2d"===l.type&&M.setShape("r",v),m[e]=M);var I=iS[l.type](a,e);Fu(M,{shape:uS(r,I,l)},h,e)}var T=s.getItemGraphicEl(n);if(!a.hasValue(e))return o.remove(T),void(T=null);var C=!1;p&&(C=tS[l.type](d,S))&&o.remove(T),T||(T=eS[l.type](t,a,e,S,r,h,u.model,!!T,f)),b||rS(T,a,e,i,S,t,r,"polar"===l.type),x?T.attr({shape:S}):c?nS(c,h,T,S,e,r,!0,b):Fu(T,{shape:S},t,e,null),a.setItemGraphicEl(e,T),T.ignore=C,o.add(T)})).remove((function(e){var n=s.getItemGraphicEl(e);n&&Uu(n,t,e)})).execute();var S=this._backgroundGroup||(this._backgroundGroup=new zi);S.removeAll();for(var M=0;M<m.length;++M)S.add(m[M]);o.add(S),this._backgroundEls=m,this._data=a},e.prototype._renderLarge=function(t,e,n){this._clear(),sS(t,this.group),this._updateLargeClip(t)},e.prototype._incrementalRenderLarge=function(t,e){this._removeBackground(),sS(e,this.group,!0)},e.prototype._updateLargeClip=function(t){var e=t.get("clip",!0)?kw(t.coordinateSystem,!1,t):null;e?this.group.setClipPath(e):this.group.removeClipPath()},e.prototype._enableRealtimeSort=function(t,e,n){var i=this;if(e.count()){var r=t.baseAxis;if(this._isFirstFrame)this._dispatchInitSort(e,t,n),this._isFirstFrame=!1;else{var o=function(t){var n=e.getItemGraphicEl(t);if(n){var i=n.shape;return(r.isHorizontal()?Math.abs(i.height):Math.abs(i.width))||0}return 0};this._onRendered=function(){i._updateSortWithinSameData(e,o,r,n)},n.getZr().on("rendered",this._onRendered)}}},e.prototype._dataSort=function(t,e,n){var i=[];return t.each(t.mapDimension(e.dim),(function(t,e){var r=n(e);r=null==r?NaN:r,i.push({dataIndex:e,mappedValue:r,ordinalNumber:t})})),i.sort((function(t,e){return e.mappedValue-t.mappedValue})),{ordinalNumbers:O(i,(function(t){return t.ordinalNumber}))}},e.prototype._isOrderChangedWithinSameData=function(t,e,n){for(var i=n.scale,r=t.mapDimension(n.dim),o=Number.MAX_VALUE,a=0,s=i.getOrdinalMeta().categories.length;a<s;++a){var l=t.rawIndexOf(r,i.getRawOrdinalNumber(a)),u=l<0?Number.MIN_VALUE:e(t.indexOfRawIndex(l));if(u>o)return!0;o=u}return!1},e.prototype._isOrderDifferentInView=function(t,e){for(var n=e.scale,i=n.getExtent(),r=Math.max(0,i[0]),o=Math.min(i[1],n.getOrdinalMeta().categories.length-1);r<=o;++r)if(t.ordinalNumbers[r]!==n.getRawOrdinalNumber(r))return!0},e.prototype._updateSortWithinSameData=function(t,e,n,i){if(this._isOrderChangedWithinSameData(t,e,n)){var r=this._dataSort(t,n,e);this._isOrderDifferentInView(r,n)&&(this._removeOnRenderedListener(i),i.dispatchAction({type:"changeAxisOrder",componentType:n.dim+"Axis",axisId:n.index,sortInfo:r}))}},e.prototype._dispatchInitSort=function(t,e,n){var i=e.baseAxis,r=this._dataSort(t,i,(function(n){return t.get(t.mapDimension(e.otherAxis.dim),n)}));n.dispatchAction({type:"changeAxisOrder",componentType:i.dim+"Axis",isInitSort:!0,axisId:i.index,sortInfo:r,animation:{duration:0}})},e.prototype.remove=function(t,e){this._clear(this._model),this._removeOnRenderedListener(e)},e.prototype.dispose=function(t,e){this._removeOnRenderedListener(e)},e.prototype._removeOnRenderedListener=function(t){this._onRendered&&(t.getZr().off("rendered",this._onRendered),this._onRendered=null)},e.prototype._clear=function(t){var e=this.group,n=this._data;t&&t.isAnimationEnabled()&&n&&!this._isLargeDraw?(this._removeBackground(),this._backgroundEls=[],n.eachItemGraphicEl((function(e){Uu(e,t,vs(e).dataIndex)}))):e.removeAll(),this._data=null,this._isFirstFrame=!0},e.prototype._removeBackground=function(){this.group.remove(this._backgroundGroup),this._backgroundGroup=null},e.type="bar",e}(Mf),tS={cartesian2d:function(t,e){var n=e.width<0?-1:1,i=e.height<0?-1:1;n<0&&(e.x+=e.width,e.width=-e.width),i<0&&(e.y+=e.height,e.height=-e.height);var r=t.x+t.width,o=t.y+t.height,a=$w(e.x,t.x),s=Jw(e.x+e.width,r),l=$w(e.y,t.y),u=Jw(e.y+e.height,o),h=s<a,c=u<l;return e.x=h&&a>r?s:a,e.y=c&&l>o?u:l,e.width=h?0:s-a,e.height=c?0:u-l,n<0&&(e.x+=e.width,e.width=-e.width),i<0&&(e.y+=e.height,e.height=-e.height),h||c},polar:function(t,e){var n=e.r0<=e.r?1:-1;if(n<0){var i=e.r;e.r=e.r0,e.r0=i}var r=Jw(e.r,t.r),o=$w(e.r0,t.r0);e.r=r,e.r0=o;var a=r-o<0;if(n<0){i=e.r;e.r=e.r0,e.r0=i}return a}},eS={cartesian2d:function(t,e,n,i,r,o,a,s,l){var u=new as({shape:I({},i),z2:1});(u.__dataIndex=n,u.name="item",o)&&(u.shape[r?"height":"width"]=0);return u},polar:function(t,e,n,i,r,o,a,s,l){var u=i.startAngle<i.endAngle,h=new(!r&&l?qw:Kl)({shape:T({clockwise:u},i),z2:1});if(h.name="item",o){var c=r?"r":"endAngle",p={};h.shape[c]=r?0:i.startAngle,p[c]=i[c],(s?Fu:Gu)(h,{shape:p},o)}return h}};function nS(t,e,n,i,r,o,a,s){var l,u;o?(u={x:i.x,width:i.width},l={y:i.y,height:i.height}):(u={y:i.y,height:i.height},l={x:i.x,width:i.width}),s||(a?Fu:Gu)(n,{shape:l},e,r,null),(a?Fu:Gu)(n,{shape:u},e?t.baseAxis.model:null,r)}var iS={cartesian2d:function(t,e,n){var i=t.getItemLayout(e),r=n?function(t,e){var n=t.get(["itemStyle","borderColor"]);if(!n||"none"===n)return 0;var i=t.get(["itemStyle","borderWidth"])||0,r=isNaN(e.width)?Number.MAX_VALUE:Math.abs(e.width),o=isNaN(e.height)?Number.MAX_VALUE:Math.abs(e.height);return Math.min(i,r,o)}(n,i):0,o=i.width>0?1:-1,a=i.height>0?1:-1;return{x:i.x+o*r/2,y:i.y+a*r/2,width:i.width-o*r,height:i.height-a*r}},polar:function(t,e,n){var i=t.getItemLayout(e);return{cx:i.cx,cy:i.cy,r0:i.r0,r:i.r,startAngle:i.startAngle,endAngle:i.endAngle}}};function rS(t,e,n,i,r,o,a,s){var l=e.getItemVisual(n,"style");s||t.setShape("r",i.get(["itemStyle","borderRadius"])||0),t.useStyle(l);var u=i.getShallow("cursor");if(u&&t.attr("cursor",u),!s){var h=a?r.height>0?"bottom":"top":r.width>0?"left":"right",c=uh(i);lh(t,c,{labelFetcher:o,labelDataIndex:n,defaultText:lw(o.getData(),n),inheritColor:l.fill,defaultOpacity:l.opacity,defaultOutsidePosition:h}),mh(t.getTextContent(),c,o.getRawValue(n),(function(t){return uw(e,t)}))}var p=i.getModel(["emphasis"]);ol(t,p.get("focus"),p.get("blurScope")),ul(t,i),function(t){return null!=t.startAngle&&null!=t.endAngle&&t.startAngle===t.endAngle}(r)&&(t.style.fill="none",t.style.stroke="none",P(t.states,(function(t){t.style&&(t.style.fill=t.style.stroke="none")})))}var oS=function(){},aS=function(t){function e(e){var n=t.call(this,e)||this;return n.type="largeBar",n}return n(e,t),e.prototype.getDefaultShape=function(){return new oS},e.prototype.buildPath=function(t,e){for(var n=e.points,i=this.__startPoint,r=this.__baseDimIdx,o=0;o<n.length;o+=2)i[r]=n[o+r],t.moveTo(i[0],i[1]),t.lineTo(n[o],n[o+1])},e}(ja);function sS(t,e,n){var i=t.getData(),r=[],o=i.getLayout("valueAxisHorizontal")?1:0;r[1-o]=i.getLayout("valueAxisStart");var a=i.getLayout("largeDataIndices"),s=i.getLayout("barWidth"),l=t.getModel("backgroundStyle");if(t.get("showBackground",!0)){var u=i.getLayout("largeBackgroundPoints"),h=[];h[1-o]=i.getLayout("backgroundStart");var c=new aS({shape:{points:u},incremental:!!n,silent:!0,z2:0});c.__startPoint=h,c.__baseDimIdx=o,c.__largeDataIndices=a,c.__barWidth=s,function(t,e,n){var i=e.get("borderColor")||e.get("color"),r=e.getItemStyle();t.useStyle(r),t.style.fill=null,t.style.stroke=i,t.style.lineWidth=n.getLayout("barWidth")}(c,l,i),e.add(c)}var p=new aS({shape:{points:i.getLayout("largePoints")},incremental:!!n});p.__startPoint=r,p.__baseDimIdx=o,p.__largeDataIndices=a,p.__barWidth=s,e.add(p),function(t,e,n){var i=n.getVisual("style");t.useStyle(I({},i)),t.style.fill=null,t.style.stroke=i.fill,t.style.lineWidth=n.getLayout("barWidth")}(p,0,i),vs(p).seriesIndex=t.seriesIndex,t.get("silent")||(p.on("mousedown",lS),p.on("mousemove",lS))}var lS=Of((function(t){var e=function(t,e,n){var i=t.__baseDimIdx,r=1-i,o=t.shape.points,a=t.__largeDataIndices,s=Math.abs(t.__barWidth/2),l=t.__startPoint[r];Kw[0]=e,Kw[1]=n;for(var u=Kw[i],h=Kw[1-i],c=u-s,p=u+s,d=0,f=o.length/2;d<f;d++){var g=2*d,y=o[g+i],v=o[g+r];if(y>=c&&y<=p&&(l<=v?h>=l&&h<=v:h>=v&&h<=l))return a[d]}return-1}(this,t.offsetX,t.offsetY);vs(this).dataIndex=e>=0?e:null}),30,!1);function uS(t,e,n){if(Pw(n,"cartesian2d")){var i=e,r=n.getArea();return{x:t?i.x:r.x,y:t?r.y:i.y,width:t?i.width:r.width,height:t?r.height:i.height}}var o=e;return{cx:(r=n.getArea()).cx,cy:r.cy,r0:t?r.r0:o.r0,r:t?r.r:o.r,startAngle:t?o.startAngle:0,endAngle:t?o.endAngle:2*Math.PI}}var hS=2*Math.PI,cS=Math.PI/180;function pS(t,e,n){e.eachSeriesByType(t,(function(t){var e=t.getData(),i=e.mapDimension("value"),r=function(t,e){return Ec(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}(t,n),o=t.get("center"),a=t.get("radius");F(a)||(a=[0,a]),F(o)||(o=[o,o]);var s=Zi(r.width,n.getWidth()),l=Zi(r.height,n.getHeight()),u=Math.min(s,l),h=Zi(o[0],s)+r.x,c=Zi(o[1],l)+r.y,p=Zi(a[0],u/2),d=Zi(a[1],u/2),f=-t.get("startAngle")*cS,g=t.get("minAngle")*cS,y=0;e.each(i,(function(t){!isNaN(t)&&y++}));var v=e.getSum(i),m=Math.PI/(v||y)*2,_=t.get("clockwise"),x=t.get("roseType"),b=t.get("stillShowZeroSum"),w=e.getDataExtent(i);w[0]=0;var S=hS,M=0,I=f,T=_?1:-1;if(e.setLayout({viewRect:r,r:d}),e.each(i,(function(t,n){var i;if(isNaN(t))e.setItemLayout(n,{angle:NaN,startAngle:NaN,endAngle:NaN,clockwise:_,cx:h,cy:c,r0:p,r:x?NaN:d});else{(i="area"!==x?0===v&&b?m:t*m:hS/y)<g?(i=g,S-=g):M+=t;var r=I+T*i;e.setItemLayout(n,{angle:i,startAngle:I,endAngle:r,clockwise:_,cx:h,cy:c,r0:p,r:x?Xi(t,w,[p,d]):d}),I=r}})),S<hS&&y)if(S<=.001){var C=hS/y;e.each(i,(function(t,n){if(!isNaN(t)){var i=e.getItemLayout(n);i.angle=C,i.startAngle=f+T*n*C,i.endAngle=f+T*(n+1)*C}}))}else m=S/M,I=f,e.each(i,(function(t,n){if(!isNaN(t)){var i=e.getItemLayout(n),r=i.angle===g?g:t*m;i.startAngle=I,i.endAngle=I+T*r,I+=T*r}}))}))}function dS(t){return{seriesType:t,reset:function(t,e){var n=e.findComponents({mainType:"legend"});if(n&&n.length){var i=t.getData();i.filterSelf((function(t){for(var e=i.getName(t),r=0;r<n.length;r++)if(!n[r].isSelected(e))return!1;return!0}))}}}}var fS=Math.PI/180;function gS(t,e,n,i,r,o,a,s,l,u){if(!(t.length<2)){for(var h=t.length,c=0;c<h;c++)if("outer"===t[c].position&&"labelLine"===t[c].labelAlignTo){var p=t[c].label.x-u;t[c].linePoints[1][0]+=p,t[c].label.x=u}Wg(t,l,l+a)&&function(t){for(var o={list:[],maxY:0},a={list:[],maxY:0},s=0;s<t.length;s++)if("none"===t[s].labelAlignTo){var l=t[s],u=l.label.y>n?a:o,h=Math.abs(l.label.y-n);if(h>u.maxY){var c=l.label.x-e-l.len2*r,p=i+l.len,f=Math.abs(c)<p?Math.sqrt(h*h/(1-c*c/p/p)):p;u.rB=f,u.maxY=h}u.list.push(l)}d(o),d(a)}(t)}function d(t){for(var o=t.rB,a=o*o,s=0;s<t.list.length;s++){var l=t.list[s],u=Math.abs(l.label.y-n),h=i+l.len,c=h*h,p=Math.sqrt((1-Math.abs(u*u/a))*c);l.label.x=e+(p+l.len2)*r}}}function yS(t){return"center"===t.position}function vS(t){var e,n,i=t.getData(),r=[],o=!1,a=(t.get("minShowLabelAngle")||0)*fS,s=i.getLayout("viewRect"),l=i.getLayout("r"),u=s.width,h=s.x,c=s.y,p=s.height;function d(t){t.ignore=!0}i.each((function(t){var s=i.getItemGraphicEl(t),c=s.shape,p=s.getTextContent(),f=s.getTextGuideLine(),g=i.getItemModel(t),y=g.getModel("label"),v=y.get("position")||g.get(["emphasis","label","position"]),m=y.get("distanceToLabelLine"),_=y.get("alignTo"),x=Zi(y.get("edgeDistance"),u),b=y.get("bleedMargin"),w=g.getModel("labelLine"),S=w.get("length");S=Zi(S,u);var M=w.get("length2");if(M=Zi(M,u),Math.abs(c.endAngle-c.startAngle)<a)return P(p.states,d),void(p.ignore=!0);if(function(t){if(!t.ignore)return!0;for(var e in t.states)if(!1===t.states[e].ignore)return!0;return!1}(p)){var I,T,C,A,D=(c.startAngle+c.endAngle)/2,L=Math.cos(D),k=Math.sin(D);e=c.cx,n=c.cy;var O,R="inside"===v||"inner"===v;if("center"===v)I=c.cx,T=c.cy,A="center";else{var N=(R?(c.r+c.r0)/2*L:c.r*L)+e,E=(R?(c.r+c.r0)/2*k:c.r*k)+n;if(I=N+3*L,T=E+3*k,!R){var z=N+L*(S+l-c.r),B=E+k*(S+l-c.r),V=z+(L<0?-1:1)*M;I="edge"===_?L<0?h+x:h+u-x:V+(L<0?-m:m),T=B,C=[[N,E],[z,B],[V,B]]}A=R?"center":"edge"===_?L>0?"right":"left":L>0?"left":"right"}var F=y.get("rotate");if(O="number"==typeof F?F*(Math.PI/180):F?L<0?-D+Math.PI:-D:0,o=!!O,p.x=I,p.y=T,p.rotation=O,p.setStyle({verticalAlign:"middle"}),R){p.setStyle({align:A});var G=p.states.select;G&&(G.x+=p.x,G.y+=p.y)}else{var H=p.getBoundingRect().clone();H.applyTransform(p.getComputedTransform());var W=(p.style.margin||0)+2.1;H.y-=W/2,H.height+=W,r.push({label:p,labelLine:f,position:v,len:S,len2:M,minTurnAngle:w.get("minTurnAngle"),maxSurfaceAngle:w.get("maxSurfaceAngle"),surfaceNormal:new In(L,k),linePoints:C,textAlign:A,labelDistance:m,labelAlignTo:_,edgeDistance:x,bleedMargin:b,rect:H})}s.setTextConfig({inside:R})}})),!o&&t.get("avoidLabelOverlap")&&function(t,e,n,i,r,o,a,s){for(var l=[],u=[],h=Number.MAX_VALUE,c=-Number.MAX_VALUE,p=0;p<t.length;p++){var d=t[p].label;yS(t[p])||(d.x<e?(h=Math.min(h,d.x),l.push(t[p])):(c=Math.max(c,d.x),u.push(t[p])))}for(gS(u,e,n,i,1,0,o,0,s,c),gS(l,e,n,i,-1,0,o,0,s,h),p=0;p<t.length;p++){var f=t[p];if(d=f.label,!yS(f)){var g=f.linePoints;if(g){var y="edge"===f.labelAlignTo,v=f.rect.width,m=void 0;(m=y?d.x<e?g[2][0]-f.labelDistance-a-f.edgeDistance:a+r-f.edgeDistance-g[2][0]-f.labelDistance:d.x<e?d.x-a-f.bleedMargin:a+r-d.x-f.bleedMargin)<f.rect.width&&(f.label.style.width=m,"edge"===f.labelAlignTo&&(v=m));var _=g[1][0]-g[2][0];y?d.x<e?g[2][0]=a+f.edgeDistance+v+f.labelDistance:g[2][0]=a+r-f.edgeDistance-v-f.labelDistance:(d.x<e?g[2][0]=d.x+f.labelDistance:g[2][0]=d.x-f.labelDistance,g[1][0]=g[2][0]+_),g[1][1]=g[2][1]=d.y}}}}(r,e,n,l,u,p,h,c);for(var f=0;f<r.length;f++){var g=r[f],y=g.label,v=g.labelLine,m=isNaN(y.x)||isNaN(y.y);if(y){y.setStyle({align:g.textAlign}),m&&(P(y.states,d),y.ignore=!0);var _=y.states.select;_&&(_.x+=y.x,_.y+=y.y)}if(v){var x=g.linePoints;m||!x?(P(v.states,d),v.ignore=!0):(Eg(x,g.minTurnAngle),zg(x,g.surfaceNormal,g.maxSurfaceAngle),v.setShape({points:x}),y.__hostTarget.textGuideLineConfig={anchor:new In(x[0][0],x[0][1])})}}}function mS(t,e){var n=t.get("borderRadius");return null==n?null:(F(n)||(n=[n,n]),{innerCornerRadius:Un(n[0],e.r0),cornerRadius:Un(n[1],e.r)})}var _S=function(t){function e(e,n,i){var r=t.call(this)||this;r.z2=2;var o=new us;return r.setTextContent(o),r.updateData(e,n,i,!0),r}return n(e,t),e.prototype.updateData=function(t,e,n,r){var o=this,a=t.hostModel,s=t.getItemModel(e),l=s.getModel("emphasis"),u=t.getItemLayout(e),h=I(mS(s.getModel("itemStyle"),u)||{},u);if(isNaN(h.startAngle))o.setShape(h);else{if(r)o.setShape(h),"scale"===a.getShallow("animationType")?(o.shape.r=u.r0,Gu(o,{shape:{r:u.r}},a,e)):null!=n?(o.setShape({startAngle:n,endAngle:n}),Gu(o,{shape:{startAngle:u.startAngle,endAngle:u.endAngle}},a,e)):(o.shape.endAngle=u.startAngle,Fu(o,{shape:{endAngle:u.endAngle}},a,e));else Fu(o,{shape:h},a,e);o.useStyle(t.getItemVisual(e,"style")),ul(o,s);var c=(u.startAngle+u.endAngle)/2,p=a.get("selectedOffset"),d=Math.cos(c)*p,f=Math.sin(c)*p,g=s.getShallow("cursor");g&&o.attr("cursor",g),this._updateLabel(a,t,e),o.ensureState("emphasis").shape=i({r:u.r+(l.get("scale")&&l.get("scaleSize")||0)},mS(l.getModel("itemStyle"),u)),I(o.ensureState("select"),{x:d,y:f,shape:mS(s.getModel(["select","itemStyle"]),u)}),I(o.ensureState("blur"),{shape:mS(s.getModel(["blur","itemStyle"]),u)});var y=o.getTextGuideLine(),v=o.getTextContent();y&&I(y.ensureState("select"),{x:d,y:f}),I(v.ensureState("select"),{x:d,y:f}),ol(this,l.get("focus"),l.get("blurScope"))}},e.prototype._updateLabel=function(t,e,n){var i=this,r=e.getItemModel(n),o=r.getModel("labelLine"),a=e.getItemVisual(n,"style"),s=a&&a.fill,l=a&&a.opacity;lh(i,uh(r),{labelFetcher:e.hostModel,labelDataIndex:n,inheritColor:s,defaultOpacity:l,defaultText:t.getFormattedLabel(n,"normal")||e.getName(n)});var u=i.getTextContent();i.setTextConfig({position:null,rotation:null}),u.attr({z2:10});var h=t.get(["label","position"]);if("outside"!==h&&"outer"!==h)i.removeTextGuideLine();else{var c=this.getTextGuideLine();c||(c=new ru,this.setTextGuideLine(c)),Fg(this,Gg(r),{stroke:s,opacity:et(o.get(["lineStyle","opacity"]),l,1)})}},e}(Kl),xS=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.ignoreLabelLineUpdate=!0,e}return n(e,t),e.prototype.init=function(){var t=new zi;this._sectorGroup=t},e.prototype.render=function(t,e,n,i){var r,o=t.getData(),a=this._data,s=this.group;if(!a&&o.count()>0){for(var l=o.getItemLayout(0),u=1;isNaN(l&&l.startAngle)&&u<o.count();++u)l=o.getItemLayout(u);l&&(r=l.startAngle)}o.diff(a).add((function(t){var e=new _S(o,t,r);o.setItemGraphicEl(t,e),s.add(e)})).update((function(t,e){var n=a.getItemGraphicEl(e);n.updateData(o,t,r),n.off("click"),s.add(n),o.setItemGraphicEl(t,n)})).remove((function(e){Uu(a.getItemGraphicEl(e),t,e)})).execute(),vS(t),"expansion"!==t.get("animationTypeUpdate")&&(this._data=o)},e.prototype.dispose=function(){},e.prototype.containPoint=function(t,e){var n=e.getData().getItemLayout(0);if(n){var i=t[0]-n.cx,r=t[1]-n.cy,o=Math.sqrt(i*i+r*r);return o<=n.r&&o>=n.r0}},e.type="pie",e}(Mf);function bS(t,e,n){e=F(e)&&{coordDimensions:e}||I({},e);var i=t.getSource(),r=D_(i,e),o=new T_(r,t);return o.initData(i,n),o}var wS=function(){function t(t,e){this._getDataWithEncodedVisual=t,this._getRawData=e}return t.prototype.getAllNames=function(){var t=this._getRawData();return t.mapArray(t.getName)},t.prototype.containName=function(t){return this._getRawData().indexOfName(t)>=0},t.prototype.indexOfName=function(t){return this._getDataWithEncodedVisual().indexOfName(t)},t.prototype.getItemVisual=function(t,e){return this._getDataWithEncodedVisual().getItemVisual(t,e)},t}(),SS=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.useColorPaletteOnData=!0,e}return n(e,t),e.prototype.init=function(e){t.prototype.init.apply(this,arguments),this.legendVisualProvider=new wS(B(this.getData,this),B(this.getRawData,this)),this._defaultLabelLine(e)},e.prototype.mergeOption=function(){t.prototype.mergeOption.apply(this,arguments)},e.prototype.getInitialData=function(){return bS(this,{coordDimensions:["value"],encodeDefaulter:V(sp,this)})},e.prototype.getDataParams=function(e){var n=this.getData(),i=t.prototype.getDataParams.call(this,e),r=[];return n.each(n.mapDimension("value"),(function(t){r.push(t)})),i.percent=Qi(r,e,n.hostModel.get("percentPrecision")),i.$vars.push("percent"),i},e.prototype._defaultLabelLine=function(t){xr(t,"labelLine",["show"]);var e=t.labelLine,n=t.emphasis.labelLine;e.show=e.show&&t.label.show,n.show=n.show&&t.emphasis.label.show},e.type="series.pie",e.defaultOption={zlevel:0,z:2,legendHoverLink:!0,center:["50%","50%"],radius:[0,"75%"],clockwise:!0,startAngle:90,minAngle:0,minShowLabelAngle:0,selectedOffset:10,percentPrecision:2,stillShowZeroSum:!0,left:0,top:0,right:0,bottom:0,width:null,height:null,label:{rotate:0,show:!0,overflow:"truncate",position:"outer",alignTo:"none",edgeDistance:"25%",bleedMargin:10,distanceToLabelLine:5},labelLine:{show:!0,length:15,length2:15,smooth:!1,minTurnAngle:90,maxSurfaceAngle:90,lineStyle:{width:1,type:"solid"}},itemStyle:{borderWidth:1},labelLayout:{hideOverlap:!0},emphasis:{scale:!0,scaleSize:5},avoidLabelOverlap:!0,animationType:"expansion",animationDuration:1e3,animationTypeUpdate:"transition",animationEasingUpdate:"cubicInOut",animationDurationUpdate:500,animationEasing:"cubicInOut"},e}(pf);var MS=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.hasSymbolVisual=!0,n}return n(e,t),e.prototype.getInitialData=function(t,e){return E_(this.getSource(),this,{useEncodeDefaulter:!0})},e.prototype.getProgressive=function(){var t=this.option.progressive;return null==t?this.option.large?5e3:this.get("progressive"):t},e.prototype.getProgressiveThreshold=function(){var t=this.option.progressiveThreshold;return null==t?this.option.large?1e4:this.get("progressiveThreshold"):t},e.prototype.brushSelector=function(t,e,n){return n.point(e.getItemLayout(t))},e.type="series.scatter",e.dependencies=["grid","polar","geo","singleAxis","calendar"],e.defaultOption={coordinateSystem:"cartesian2d",zlevel:0,z:2,legendHoverLink:!0,symbolSize:10,large:!1,largeThreshold:2e3,itemStyle:{opacity:.8},emphasis:{scale:!0},clip:!0,select:{itemStyle:{borderColor:"#212121"}}},e}(pf),IS=function(){},TS=function(t){function e(e){return t.call(this,e)||this}return n(e,t),e.prototype.getDefaultShape=function(){return new IS},e.prototype.buildPath=function(t,e){var n=e.points,i=e.size,r=this.symbolProxy,o=r.shape,a=t.getContext?t.getContext():t;if(a&&i[0]<4)this._ctx=a;else{this._ctx=null;for(var s=0;s<n.length;){var l=n[s++],u=n[s++];isNaN(l)||isNaN(u)||(this.softClipShape&&!this.softClipShape.contain(l,u)||(o.x=l-i[0]/2,o.y=u-i[1]/2,o.width=i[0],o.height=i[1],r.buildPath(t,o,!0)))}}},e.prototype.afterBrush=function(){var t=this.shape,e=t.points,n=t.size,i=this._ctx;if(i)for(var r=0;r<e.length;){var o=e[r++],a=e[r++];isNaN(o)||isNaN(a)||(this.softClipShape&&!this.softClipShape.contain(o,a)||i.fillRect(o-n[0]/2,a-n[1]/2,n[0],n[1]))}},e.prototype.findDataIndex=function(t,e){for(var n=this.shape,i=n.points,r=n.size,o=Math.max(r[0],4),a=Math.max(r[1],4),s=i.length/2-1;s>=0;s--){var l=2*s,u=i[l]-o/2,h=i[l+1]-a/2;if(t>=u&&e>=h&&t<=u+o&&e<=h+a)return s}return-1},e}(ja),CS=function(){function t(){this.group=new zi}return t.prototype.isPersistent=function(){return!this._incremental},t.prototype.updateData=function(t,e){this.group.removeAll();var n=new TS({rectHover:!0,cursor:"default"});n.setShape({points:t.getLayout("points")}),this._setCommon(n,t,!1,e),this.group.add(n),this._incremental=null},t.prototype.updateLayout=function(t){if(!this._incremental){var e=t.getLayout("points");this.group.eachChild((function(t){if(null!=t.startIndex){var n=2*(t.endIndex-t.startIndex),i=4*t.startIndex*2;e=new Float32Array(e.buffer,i,n)}t.setShape("points",e)}))}},t.prototype.incrementalPrepareUpdate=function(t){this.group.removeAll(),this._clearIncremental(),t.count()>2e6?(this._incremental||(this._incremental=new Mu({silent:!0})),this.group.add(this._incremental)):this._incremental=null},t.prototype.incrementalUpdate=function(t,e,n){var i;this._incremental?(i=new TS,this._incremental.addDisplayable(i,!0)):((i=new TS({rectHover:!0,cursor:"default",startIndex:t.start,endIndex:t.end})).incremental=!0,this.group.add(i)),i.setShape({points:e.getLayout("points")}),this._setCommon(i,e,!!this._incremental,n)},t.prototype._setCommon=function(t,e,n,i){var r=e.hostModel;i=i||{};var o=e.getVisual("symbolSize");t.setShape("size",o instanceof Array?o:[o,o]),t.softClipShape=i.clipShape||null,t.symbolProxy=py(e.getVisual("symbol"),0,0,0,0),t.setColor=t.symbolProxy.setColor;var a=t.shape.size[0]<4;t.useStyle(r.getModel("itemStyle").getItemStyle(a?["color","shadowBlur","shadowColor"]:["color"]));var s=e.getVisual("style"),l=s&&s.fill;if(l&&t.setColor(l),!n){var u=vs(t);u.seriesIndex=r.seriesIndex,t.on("mousemove",(function(e){u.dataIndex=null;var n=t.findDataIndex(e.offsetX,e.offsetY);n>=0&&(u.dataIndex=n+(t.startIndex||0))}))}},t.prototype.remove=function(){this._clearIncremental(),this._incremental=null,this.group.removeAll()},t.prototype._clearIncremental=function(){var t=this._incremental;t&&t.clearDisplaybles()},t}(),AS=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){var i=t.getData();this._updateSymbolDraw(i,t).updateData(i,{clipShape:this._getClipShape(t)}),this._finished=!0},e.prototype.incrementalPrepareRender=function(t,e,n){var i=t.getData();this._updateSymbolDraw(i,t).incrementalPrepareUpdate(i),this._finished=!1},e.prototype.incrementalRender=function(t,e,n){this._symbolDraw.incrementalUpdate(t,e.getData(),{clipShape:this._getClipShape(e)}),this._finished=t.end===e.getData().count()},e.prototype.updateTransform=function(t,e,n){var i=t.getData();if(this.group.dirty(),!this._finished||i.count()>1e4||!this._symbolDraw.isPersistent())return{update:!0};var r=Hw("").reset(t,e,n);r.progress&&r.progress({start:0,end:i.count(),count:i.count()},i),this._symbolDraw.updateLayout(i)},e.prototype._getClipShape=function(t){var e=t.coordinateSystem,n=e&&e.getArea&&e.getArea();return t.get("clip",!0)?n:null},e.prototype._updateSymbolDraw=function(t,e){var n=this._symbolDraw,i=e.pipelineContext.large;return n&&i===this._isLargeDraw||(n&&n.remove(),n=this._symbolDraw=i?new CS:new gw,this._isLargeDraw=i,this.group.removeAll()),this.group.add(n.group),n},e.prototype.remove=function(t,e){this._symbolDraw&&this._symbolDraw.remove(!0),this._symbolDraw=null},e.prototype.dispose=function(){},e.type="scatter",e}(Mf),DS=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.type="grid",e.dependencies=["xAxis","yAxis"],e.layoutMode="box",e.defaultOption={show:!1,zlevel:0,z:0,left:"10%",top:60,right:"10%",bottom:70,containLabel:!1,backgroundColor:"rgba(0,0,0,0)",borderWidth:1,borderColor:"#cccccc"},e}(Wc),LS=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.getCoordSysModel=function(){return this.getReferringComponents("grid",Rr).models[0]},e.type="cartesian2dAxis",e}(Wc);L(LS,Wx);var kS={show:!0,zlevel:0,z:0,inverse:!1,name:"",nameLocation:"end",nameRotate:null,nameTruncate:{maxWidth:null,ellipsis:"...",placeholder:"."},nameTextStyle:{},nameGap:15,silent:!1,triggerEvent:!1,tooltip:{show:!1},axisPointer:{},axisLine:{show:!0,onZero:!0,onZeroAxisIndex:null,lineStyle:{color:"#6E7079",width:1,type:"solid"},symbol:["none","none"],symbolSize:[10,15]},axisTick:{show:!0,inside:!1,length:5,lineStyle:{width:1}},axisLabel:{show:!0,inside:!1,rotate:0,showMinLabel:null,showMaxLabel:null,margin:8,fontSize:12},splitLine:{show:!0,lineStyle:{color:["#E0E6F1"],width:1,type:"solid"}},splitArea:{show:!1,areaStyle:{color:["rgba(250,250,250,0.2)","rgba(210,219,238,0.2)"]}}},PS=S({boundaryGap:!0,deduplication:null,splitLine:{show:!1},axisTick:{alignWithLabel:!1,interval:"auto"},axisLabel:{interval:"auto"}},kS),OS=S({boundaryGap:[0,0],axisLine:{show:"auto"},axisTick:{show:"auto"},splitNumber:5,minorTick:{show:!1,splitNumber:5,length:3,lineStyle:{}},minorSplitLine:{show:!1,lineStyle:{color:"#F4F7FD",width:1}}},kS),RS={category:PS,value:OS,time:S({scale:!0,splitNumber:6,axisLabel:{showMinLabel:!1,showMaxLabel:!1,rich:{primary:{fontWeight:"bold"}}},splitLine:{show:!1}},OS),log:T({scale:!0,logBase:10},OS)},NS={value:1,category:1,time:1,log:1};function ES(t,e,i,r){P(NS,(function(o,a){var s=S(S({},RS[a],!0),r,!0),l=function(t){function i(){for(var n=[],i=0;i<arguments.length;i++)n[i]=arguments[i];var r=t.apply(this,n)||this;return r.type=e+"Axis."+a,r}return n(i,t),i.prototype.mergeDefaultAndTheme=function(t,e){var n=Bc(this),i=n?Fc(t):{};S(t,e.getTheme().get(a+"Axis")),S(t,this.getDefaultOption()),t.type=zS(t),n&&Vc(t,i,n)},i.prototype.optionUpdated=function(){"category"===this.option.type&&(this.__ordinalMeta=B_.createByAxisModel(this))},i.prototype.getCategories=function(t){var e=this.option;if("category"===e.type)return t?e.data:this.__ordinalMeta.categories},i.prototype.getOrdinalMeta=function(){return this.__ordinalMeta},i.type=e+"Axis."+a,i.defaultOption=s,i}(i);t.registerComponentModel(l)})),t.registerSubTypeDefaulter(e+"Axis",zS)}function zS(t){return t.type||(t.data?"category":"value")}var BS=function(){function t(t){this.type="cartesian",this._dimList=[],this._axes={},this.name=t||""}return t.prototype.getAxis=function(t){return this._axes[t]},t.prototype.getAxes=function(){return O(this._dimList,(function(t){return this._axes[t]}),this)},t.prototype.getAxesByScale=function(t){return t=t.toLowerCase(),N(this.getAxes(),(function(e){return e.scale.type===t}))},t.prototype.addAxis=function(t){var e=t.dim;this._axes[e]=t,this._dimList.push(e)},t}(),VS=["x","y"];function FS(t){return"interval"===t.type||"time"===t.type}var GS=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="cartesian2d",e.dimensions=VS,e}return n(e,t),e.prototype.calcAffineTransform=function(){this._transform=this._invTransform=null;var t=this.getAxis("x").scale,e=this.getAxis("y").scale;if(FS(t)&&FS(e)){var n=t.getExtent(),i=e.getExtent(),r=this.dataToPoint([n[0],i[0]]),o=this.dataToPoint([n[1],i[1]]),a=n[1]-n[0],s=i[1]-i[0];if(a&&s){var l=(o[0]-r[0])/a,u=(o[1]-r[1])/s,h=r[0]-n[0]*l,c=r[1]-i[0]*u,p=this._transform=[l,0,0,u,h,c];this._invTransform=be([],p)}}},e.prototype.getBaseAxis=function(){return this.getAxesByScale("ordinal")[0]||this.getAxesByScale("time")[0]||this.getAxis("x")},e.prototype.containPoint=function(t){var e=this.getAxis("x"),n=this.getAxis("y");return e.contain(e.toLocalCoord(t[0]))&&n.contain(n.toLocalCoord(t[1]))},e.prototype.containData=function(t){return this.getAxis("x").containData(t[0])&&this.getAxis("y").containData(t[1])},e.prototype.dataToPoint=function(t,e,n){n=n||[];var i=t[0],r=t[1];if(this._transform&&null!=i&&isFinite(i)&&null!=r&&isFinite(r))return Rt(n,t,this._transform);var o=this.getAxis("x"),a=this.getAxis("y");return n[0]=o.toGlobalCoord(o.dataToCoord(i)),n[1]=a.toGlobalCoord(a.dataToCoord(r)),n},e.prototype.clampData=function(t,e){var n=this.getAxis("x").scale,i=this.getAxis("y").scale,r=n.getExtent(),o=i.getExtent(),a=n.parse(t[0]),s=i.parse(t[1]);return(e=e||[])[0]=Math.min(Math.max(Math.min(r[0],r[1]),a),Math.max(r[0],r[1])),e[1]=Math.min(Math.max(Math.min(o[0],o[1]),s),Math.max(o[0],o[1])),e},e.prototype.pointToData=function(t,e){if(e=e||[],this._invTransform)return Rt(e,t,this._invTransform);var n=this.getAxis("x"),i=this.getAxis("y");return e[0]=n.coordToData(n.toLocalCoord(t[0])),e[1]=i.coordToData(i.toLocalCoord(t[1])),e},e.prototype.getOtherAxis=function(t){return this.getAxis("x"===t.dim?"y":"x")},e.prototype.getArea=function(){var t=this.getAxis("x").getGlobalExtent(),e=this.getAxis("y").getGlobalExtent(),n=Math.min(t[0],t[1]),i=Math.min(e[0],e[1]),r=Math.max(t[0],t[1])-n,o=Math.max(e[0],e[1])-i;return new Rn(n,i,r,o)},e}(BS),HS=function(t){function e(e,n,i,r,o){var a=t.call(this,e,n,i)||this;return a.index=0,a.type=r||"value",a.position=o||"bottom",a}return n(e,t),e.prototype.isHorizontal=function(){var t=this.position;return"top"===t||"bottom"===t},e.prototype.getGlobalExtent=function(t){var e=this.getExtent();return e[0]=this.toGlobalCoord(e[0]),e[1]=this.toGlobalCoord(e[1]),t&&e[0]>e[1]&&e.reverse(),e},e.prototype.pointToData=function(t,e){return this.coordToData(this.toLocalCoord(t["x"===this.dim?0:1]),e)},e.prototype.setCategorySortInfo=function(t){if("category"!==this.type)return!1;this.model.option.categorySortInfo=t,this.scale.setSortInfo(t)},e}(sb);function WS(t,e,n){n=n||{};var i=t.coordinateSystem,r=e.axis,o={},a=r.getAxesOnZeroOf()[0],s=r.position,l=a?"onZero":s,u=r.dim,h=i.getRect(),c=[h.x,h.x+h.width,h.y,h.y+h.height],p={left:0,right:1,top:0,bottom:1,onZero:2},d=e.get("offset")||0,f="x"===u?[c[2]-d,c[3]+d]:[c[0]-d,c[1]+d];if(a){var g=a.toGlobalCoord(a.dataToCoord(0));f[p.onZero]=Math.max(Math.min(g,f[1]),f[0])}o.position=["y"===u?f[p[l]]:c[0],"x"===u?f[p[l]]:c[3]],o.rotation=Math.PI/2*("x"===u?0:1);o.labelDirection=o.tickDirection=o.nameDirection={top:-1,bottom:1,left:-1,right:1}[s],o.labelOffset=a?f[p[s]]-f[p.onZero]:0,e.get(["axisTick","inside"])&&(o.tickDirection=-o.tickDirection),Q(n.labelInside,e.get(["axisLabel","inside"]))&&(o.labelDirection=-o.labelDirection);var y=e.get(["axisLabel","rotate"]);return o.labelRotate="top"===l?-y:y,o.z2=1,o}function US(t){return"cartesian2d"===t.get("coordinateSystem")}function YS(t){var e={xAxisModel:null,yAxisModel:null};return P(e,(function(n,i){var r=i.replace(/Model$/,""),o=t.getReferringComponents(r,Rr).models[0];e[i]=o})),e}var XS=function(){function t(t,e,n){this.type="grid",this._coordsMap={},this._coordsList=[],this._axesMap={},this._axesList=[],this.axisPointerEnabled=!0,this.dimensions=VS,this._initCartesian(t,e,n),this.model=t}return t.prototype.getRect=function(){return this._rect},t.prototype.update=function(t,e){var n=this._axesMap;this._updateScale(t,this.model),P(n.x,(function(t){Nx(t.scale,t.model)})),P(n.y,(function(t){Nx(t.scale,t.model)}));var i={};P(n.x,(function(t){jS(n,"y",t,i)})),P(n.y,(function(t){jS(n,"x",t,i)})),this.resize(this.model,e)},t.prototype.resize=function(t,e,n){var i=t.getBoxLayoutParams(),r=!n&&t.get("containLabel"),o=Ec(i,{width:e.getWidth(),height:e.getHeight()});this._rect=o;var a=this._axesList;function s(){P(a,(function(t){var e=t.isHorizontal(),n=e?[0,o.width]:[0,o.height],i=t.inverse?1:0;t.setExtent(n[i],n[1-i]),function(t,e){var n=t.getExtent(),i=n[0]+n[1];t.toGlobalCoord="x"===t.dim?function(t){return t+e}:function(t){return i-t+e},t.toLocalCoord="x"===t.dim?function(t){return t-e}:function(t){return i-t+e}}(t,e?o.x:o.y)}))}s(),r&&(P(a,(function(t){if(!t.model.get(["axisLabel","inside"])){var e=function(t){var e=t.model,n=t.scale;if(e.get(["axisLabel","show"])&&!n.isBlank()){var i,r,o=n.getExtent();r=n instanceof Z_?n.count():(i=n.getTicks()).length;var a,s=t.getLabelModel(),l=zx(t),u=1;r>40&&(u=Math.ceil(r/40));for(var h=0;h<r;h+=u){var c=l(i?i[h]:{value:o[0]+h},h),p=Vx(s.getTextRect(c),s.get("rotate")||0);a?a.union(p):a=p}return a}}(t);if(e){var n=t.isHorizontal()?"height":"width",i=t.model.get(["axisLabel","margin"]);o[n]-=e[n]+i,"top"===t.position?o.y+=e.height+i:"left"===t.position&&(o.x+=e.width+i)}}})),s()),P(this._coordsList,(function(t){t.calcAffineTransform()}))},t.prototype.getAxis=function(t,e){var n=this._axesMap[t];if(null!=n)return n[e||0]},t.prototype.getAxes=function(){return this._axesList.slice()},t.prototype.getCartesian=function(t,e){if(null!=t&&null!=e){var n="x"+t+"y"+e;return this._coordsMap[n]}Y(t)&&(e=t.yAxisIndex,t=t.xAxisIndex);for(var i=0,r=this._coordsList;i<r.length;i++)if(r[i].getAxis("x").index===t||r[i].getAxis("y").index===e)return r[i]},t.prototype.getCartesians=function(){return this._coordsList.slice()},t.prototype.convertToPixel=function(t,e,n){var i=this._findConvertTarget(e);return i.cartesian?i.cartesian.dataToPoint(n):i.axis?i.axis.toGlobalCoord(i.axis.dataToCoord(n)):null},t.prototype.convertFromPixel=function(t,e,n){var i=this._findConvertTarget(e);return i.cartesian?i.cartesian.pointToData(n):i.axis?i.axis.coordToData(i.axis.toLocalCoord(n)):null},t.prototype._findConvertTarget=function(t){var e,n,i=t.seriesModel,r=t.xAxisModel||i&&i.getReferringComponents("xAxis",Rr).models[0],o=t.yAxisModel||i&&i.getReferringComponents("yAxis",Rr).models[0],a=t.gridModel,s=this._coordsList;if(i)A(s,e=i.coordinateSystem)<0&&(e=null);else if(r&&o)e=this.getCartesian(r.componentIndex,o.componentIndex);else if(r)n=this.getAxis("x",r.componentIndex);else if(o)n=this.getAxis("y",o.componentIndex);else if(a){a.coordinateSystem===this&&(e=this._coordsList[0])}return{cartesian:e,axis:n}},t.prototype.containPoint=function(t){var e=this._coordsList[0];if(e)return e.containPoint(t)},t.prototype._initCartesian=function(t,e,n){var i=this,r=this,o={left:!1,right:!1,top:!1,bottom:!1},a={x:{},y:{}},s={x:0,y:0};if(e.eachComponent("xAxis",l("x"),this),e.eachComponent("yAxis",l("y"),this),!s.x||!s.y)return this._axesMap={},void(this._axesList=[]);function l(e){return function(n,i){if(ZS(n,t)){var l=n.get("position");"x"===e?"top"!==l&&"bottom"!==l&&(l=o.bottom?"top":"bottom"):"left"!==l&&"right"!==l&&(l=o.left?"right":"left"),o[l]=!0;var u=new HS(e,Ex(n),[0,0],n.get("type"),l),h="category"===u.type;u.onBand=h&&n.get("boundaryGap"),u.inverse=n.get("inverse"),n.axis=u,u.model=n,u.grid=r,u.index=i,r._axesList.push(u),a[e][i]=u,s[e]++}}}this._axesMap=a,P(a.x,(function(e,n){P(a.y,(function(r,o){var a="x"+n+"y"+o,s=new GS(a);s.master=i,s.model=t,i._coordsMap[a]=s,i._coordsList.push(s),s.addAxis(e),s.addAxis(r)}))}))},t.prototype._updateScale=function(t,e){function n(t,e){P(Hx(t,e.dim),(function(n){e.scale.unionExtentFromData(t,n)}))}P(this._axesList,(function(t){if(t.scale.setExtent(1/0,-1/0),"category"===t.type){var e=t.model.get("categorySortInfo");t.scale.setSortInfo(e)}})),t.eachSeries((function(t){if(US(t)){var i=YS(t),r=i.xAxisModel,o=i.yAxisModel;if(!ZS(r,e)||!ZS(o,e))return;var a=this.getCartesian(r.componentIndex,o.componentIndex),s=t.getData(),l=a.getAxis("x"),u=a.getAxis("y");"list"===s.type&&(n(s,l),n(s,u))}}),this)},t.prototype.getTooltipAxes=function(t){var e=[],n=[];return P(this.getCartesians(),(function(i){var r=null!=t&&"auto"!==t?i.getAxis(t):i.getBaseAxis(),o=i.getOtherAxis(r);A(e,r)<0&&e.push(r),A(n,o)<0&&n.push(o)})),{baseAxes:e,otherAxes:n}},t.create=function(e,n){var i=[];return e.eachComponent("grid",(function(r,o){var a=new t(r,e,n);a.name="grid_"+o,a.resize(r,n,!0),r.coordinateSystem=a,i.push(a)})),e.eachSeries((function(t){if(US(t)){var e=YS(t),n=e.xAxisModel,i=e.yAxisModel,r=n.getCoordSysModel();0;var o=r.coordinateSystem;t.coordinateSystem=o.getCartesian(n.componentIndex,i.componentIndex)}})),i},t.dimensions=VS,t}();function ZS(t,e){return t.getCoordSysModel()===e}function jS(t,e,n,i){n.getAxesOnZeroOf=function(){return r?[r]:[]};var r,o=t[e],a=n.model,s=a.get(["axisLine","onZero"]),l=a.get(["axisLine","onZeroAxisIndex"]);if(s){if(null!=l)qS(o[l])&&(r=o[l]);else for(var u in o)if(o.hasOwnProperty(u)&&qS(o[u])&&!i[h(o[u])]){r=o[u];break}r&&(i[h(r)]=!0)}function h(t){return t.dim+"_"+t.index}}function qS(t){return t&&"category"!==t.type&&"time"!==t.type&&function(t){var e=t.scale.getExtent(),n=e[0],i=e[1];return!(n>0&&i>0||n<0&&i<0)}(t)}var KS=Math.PI,$S=function(){function t(t,e){this.group=new zi,this.opt=e,this.axisModel=t,T(e,{labelOffset:0,nameDirection:1,tickDirection:1,labelDirection:1,silent:!0,handleAutoShown:function(){return!0}});var n=new zi({x:e.position[0],y:e.position[1],rotation:e.rotation});n.updateTransform(),this._transformGroup=n}return t.prototype.hasBuilder=function(t){return!!JS[t]},t.prototype.add=function(t){JS[t](this.opt,this.axisModel,this.group,this._transformGroup)},t.prototype.getGroup=function(){return this.group},t.innerTextLayout=function(t,e,n){var i,r,o=er(e-t);return nr(o)?(r=n>0?"top":"bottom",i="center"):nr(o-KS)?(r=n>0?"bottom":"top",i="center"):(r="middle",i=o>0&&o<KS?n>0?"right":"left":n>0?"left":"right"),{rotation:o,textAlign:i,textVerticalAlign:r}},t.makeAxisEventDataBase=function(t){var e={componentType:t.mainType,componentIndex:t.componentIndex};return e[t.mainType+"Index"]=t.componentIndex,e},t.isLabelSilent=function(t){var e=t.get("tooltip");return t.get("silent")||!(t.get("triggerEvent")||e&&e.show)},t}(),JS={axisLine:function(t,e,n,i){var r=e.get(["axisLine","show"]);if("auto"===r&&t.handleAutoShown&&(r=t.handleAutoShown("axisLine")),r){var o=e.axis.getExtent(),a=i.transform,s=[o[0],0],l=[o[1],0];a&&(Rt(s,s,a),Rt(l,l,a));var u=I({lineCap:"round"},e.getModel(["axisLine","lineStyle"]).getLineStyle()),h=new su({subPixelOptimize:!0,shape:{x1:s[0],y1:s[1],x2:l[0],y2:l[1]},style:u,strokeContainThreshold:t.strokeContainThreshold||5,silent:!0,z2:1});h.anid="line",n.add(h);var c=e.get(["axisLine","symbol"]),p=e.get(["axisLine","symbolSize"]),d=e.get(["axisLine","symbolOffset"])||0;if("number"==typeof d&&(d=[d,d]),null!=c){"string"==typeof c&&(c=[c,c]),"string"!=typeof p&&"number"!=typeof p||(p=[p,p]);var f=p[0],g=p[1];P([{rotate:t.rotation+Math.PI/2,offset:d[0],r:0},{rotate:t.rotation-Math.PI/2,offset:d[1],r:Math.sqrt((s[0]-l[0])*(s[0]-l[0])+(s[1]-l[1])*(s[1]-l[1]))}],(function(e,i){if("none"!==c[i]&&null!=c[i]){var r=py(c[i],-f/2,-g/2,f,g,u.stroke,!0),o=e.r+e.offset;r.attr({rotation:e.rotate,x:s[0]+o*Math.cos(t.rotation),y:s[1]-o*Math.sin(t.rotation),silent:!0,z2:11}),n.add(r)}}))}}},axisTickLabel:function(t,e,n,i){var r=function(t,e,n,i){var r=n.axis,o=n.getModel("axisTick"),a=o.get("show");"auto"===a&&i.handleAutoShown&&(a=i.handleAutoShown("axisTick"));if(!a||r.scale.isBlank())return;for(var s=o.getModel("lineStyle"),l=i.tickDirection*o.get("length"),u=nM(r.getTicksCoords(),e.transform,l,T(s.getLineStyle(),{stroke:n.get(["axisLine","lineStyle","color"])}),"ticks"),h=0;h<u.length;h++)t.add(u[h]);return u}(n,i,e,t),o=function(t,e,n,i){var r=n.axis;if(!Q(i.axisLabelShow,n.get(["axisLabel","show"]))||r.scale.isBlank())return;var o=n.getModel("axisLabel"),a=o.get("margin"),s=r.getViewLabels(),l=(Q(i.labelRotate,o.get("rotate"))||0)*KS/180,u=$S.innerTextLayout(i.rotation,l,i.labelDirection),h=n.getCategories&&n.getCategories(!0),c=[],p=$S.isLabelSilent(n),d=n.get("triggerEvent");return P(s,(function(s,l){var f="ordinal"===r.scale.type?r.scale.getRawOrdinalNumber(s.tickValue):s.tickValue,g=s.formattedLabel,y=s.rawLabel,v=o;if(h&&h[f]){var m=h[f];Y(m)&&m.textStyle&&(v=new kh(m.textStyle,o,n.ecModel))}var _=v.getTextColor()||n.get(["axisLine","lineStyle","color"]),x=r.dataToCoord(f),b=new us({x:x,y:i.labelOffset+i.labelDirection*a,rotation:u.rotation,silent:p,z2:10,style:hh(v,{text:g,align:v.getShallow("align",!0)||u.textAlign,verticalAlign:v.getShallow("verticalAlign",!0)||v.getShallow("baseline",!0)||u.textVerticalAlign,fill:"function"==typeof _?_("category"===r.type?y:"value"===r.type?f+"":f,l):_})});if(b.anid="label_"+f,d){var w=$S.makeAxisEventDataBase(n);w.targetType="axisLabel",w.value=y,vs(b).eventData=w}e.add(b),b.updateTransform(),c.push(b),t.add(b),b.decomposeTransform()})),c}(n,i,e,t);!function(t,e,n){if(Gx(t.axis))return;var i=t.get(["axisLabel","showMinLabel"]),r=t.get(["axisLabel","showMaxLabel"]);n=n||[];var o=(e=e||[])[0],a=e[1],s=e[e.length-1],l=e[e.length-2],u=n[0],h=n[1],c=n[n.length-1],p=n[n.length-2];!1===i?(QS(o),QS(u)):tM(o,a)&&(i?(QS(a),QS(h)):(QS(o),QS(u)));!1===r?(QS(s),QS(c)):tM(l,s)&&(r?(QS(l),QS(p)):(QS(s),QS(c)))}(e,o,r),function(t,e,n,i){var r=n.axis,o=n.getModel("minorTick");if(!o.get("show")||r.scale.isBlank())return;var a=r.getMinorTicksCoords();if(!a.length)return;for(var s=o.getModel("lineStyle"),l=i*o.get("length"),u=T(s.getLineStyle(),T(n.getModel("axisTick").getLineStyle(),{stroke:n.get(["axisLine","lineStyle","color"])})),h=0;h<a.length;h++)for(var c=nM(a[h],e.transform,l,u,"minorticks_"+h),p=0;p<c.length;p++)t.add(c[p])}(n,i,e,t.tickDirection)},axisName:function(t,e,n,i){var r=Q(t.axisName,e.get("name"));if(r){var o,a,s=e.get("nameLocation"),l=t.nameDirection,u=e.getModel("nameTextStyle"),h=e.get("nameGap")||0,c=e.axis.getExtent(),p=c[0]>c[1]?-1:1,d=["start"===s?c[0]-p*h:"end"===s?c[1]+p*h:(c[0]+c[1])/2,eM(s)?t.labelOffset+l*h:0],f=e.get("nameRotate");null!=f&&(f=f*KS/180),eM(s)?o=$S.innerTextLayout(t.rotation,null!=f?f:t.rotation,l):(o=function(t,e,n,i){var r,o,a=er(n-t),s=i[0]>i[1],l="start"===e&&!s||"start"!==e&&s;nr(a-KS/2)?(o=l?"bottom":"top",r="center"):nr(a-1.5*KS)?(o=l?"top":"bottom",r="center"):(o="middle",r=a<1.5*KS&&a>KS/2?l?"left":"right":l?"right":"left");return{rotation:a,textAlign:r,textVerticalAlign:o}}(t.rotation,s,f||0,c),null!=(a=t.axisNameAvailableWidth)&&(a=Math.abs(a/Math.sin(o.rotation)),!isFinite(a)&&(a=null)));var g=u.getFont(),y=e.get("nameTruncate",!0)||{},v=y.ellipsis,m=Q(t.nameTruncateMaxWidth,y.maxWidth,a),_=new us({x:d[0],y:d[1],rotation:o.rotation,silent:$S.isLabelSilent(e),style:hh(u,{text:r,font:g,overflow:"truncate",width:m,ellipsis:v,fill:u.getTextColor()||e.get(["axisLine","lineStyle","color"]),align:u.get("align")||o.textAlign,verticalAlign:u.get("verticalAlign")||o.textVerticalAlign}),z2:1});if(ih({el:_,componentModel:e,itemName:r}),_.__fullText=r,_.anid="name",e.get("triggerEvent")){var x=$S.makeAxisEventDataBase(e);x.targetType="axisName",x.name=r,vs(_).eventData=x}i.add(_),_.updateTransform(),n.add(_),_.decomposeTransform()}}};function QS(t){t&&(t.ignore=!0)}function tM(t,e){var n=t&&t.getBoundingRect().clone(),i=e&&e.getBoundingRect().clone();if(n&&i){var r=ge([]);return _e(r,r,-t.rotation),n.applyTransform(ve([],r,t.getLocalTransform())),i.applyTransform(ve([],r,e.getLocalTransform())),n.intersect(i)}}function eM(t){return"middle"===t||"center"===t}function nM(t,e,n,i,r){for(var o=[],a=[],s=[],l=0;l<t.length;l++){var u=t[l].coord;a[0]=u,a[1]=0,s[0]=u,s[1]=n,e&&(Rt(a,a,e),Rt(s,s,e));var h=new su({subPixelOptimize:!0,shape:{x1:a[0],y1:a[1],x2:s[0],y2:s[1]},style:i,z2:2,autoBatch:!0,silent:!0});h.anid=r+"_"+t[l].tickValue,o.push(h)}return o}function iM(t,e){var n={axesInfo:{},seriesInvolved:!1,coordSysAxesInfo:{},coordSysMap:{}};return function(t,e,n){var i=e.getComponent("tooltip"),r=e.getComponent("axisPointer"),o=r.get("link",!0)||[],a=[];P(n.getCoordinateSystems(),(function(n){if(n.axisPointerEnabled){var s=lM(n.model),l=t.coordSysAxesInfo[s]={};t.coordSysMap[s]=n;var u=n.model.getModel("tooltip",i);if(P(n.getAxes(),V(d,!1,null)),n.getTooltipAxes&&i&&u.get("show")){var h="axis"===u.get("trigger"),c="cross"===u.get(["axisPointer","type"]),p=n.getTooltipAxes(u.get(["axisPointer","axis"]));(h||c)&&P(p.baseAxes,V(d,!c||"cross",h)),c&&P(p.otherAxes,V(d,"cross",!1))}}function d(i,s,h){var c=h.model.getModel("axisPointer",r),p=c.get("show");if(p&&("auto"!==p||i||sM(c))){null==s&&(s=c.get("triggerTooltip"));var d=(c=i?function(t,e,n,i,r,o){var a=e.getModel("axisPointer"),s={};P(["type","snap","lineStyle","shadowStyle","label","animation","animationDurationUpdate","animationEasingUpdate","z"],(function(t){s[t]=w(a.get(t))})),s.snap="category"!==t.type&&!!o,"cross"===a.get("type")&&(s.type="line");var l=s.label||(s.label={});if(null==l.show&&(l.show=!1),"cross"===r){var u=a.get(["label","show"]);if(l.show=null==u||u,!o){var h=s.lineStyle=a.get("crossStyle");h&&T(l,h.textStyle)}}return t.model.getModel("axisPointer",new kh(s,n,i))}(h,u,r,e,i,s):c).get("snap"),f=lM(h.model),g=s||d||"category"===h.type,y=t.axesInfo[f]={key:f,axis:h,coordSys:n,axisPointerModel:c,triggerTooltip:s,involveSeries:g,snap:d,useHandle:sM(c),seriesModels:[],linkGroup:null};l[f]=y,t.seriesInvolved=t.seriesInvolved||g;var v=function(t,e){for(var n=e.model,i=e.dim,r=0;r<t.length;r++){var o=t[r]||{};if(rM(o[i+"AxisId"],n.id)||rM(o[i+"AxisIndex"],n.componentIndex)||rM(o[i+"AxisName"],n.name))return r}}(o,h);if(null!=v){var m=a[v]||(a[v]={axesInfo:{}});m.axesInfo[f]=y,m.mapper=o[v].mapper,y.linkGroup=m}}}}))}(n,t,e),n.seriesInvolved&&function(t,e){e.eachSeries((function(e){var n=e.coordinateSystem,i=e.get(["tooltip","trigger"],!0),r=e.get(["tooltip","show"],!0);n&&"none"!==i&&!1!==i&&"item"!==i&&!1!==r&&!1!==e.get(["axisPointer","show"],!0)&&P(t.coordSysAxesInfo[lM(n.model)],(function(t){var i=t.axis;n.getAxis(i.dim)===i&&(t.seriesModels.push(e),null==t.seriesDataCount&&(t.seriesDataCount=0),t.seriesDataCount+=e.getData().count())}))}))}(n,t),n}function rM(t,e){return"all"===t||F(t)&&A(t,e)>=0||t===e}function oM(t){var e=aM(t);if(e){var n=e.axisPointerModel,i=e.axis.scale,r=n.option,o=n.get("status"),a=n.get("value");null!=a&&(a=i.parse(a));var s=sM(n);null==o&&(r.status=s?"show":"hide");var l=i.getExtent().slice();l[0]>l[1]&&l.reverse(),(null==a||a>l[1])&&(a=l[1]),a<l[0]&&(a=l[0]),r.value=a,s&&(r.status=e.axis.scale.isBlank()?"hide":"show")}}function aM(t){var e=(t.ecModel.getComponent("axisPointer")||{}).coordSysAxesInfo;return e&&e.axesInfo[lM(t)]}function sM(t){return!!t.get(["handle","show"])}function lM(t){return t.type+"||"+t.id}var uM={},hM=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(e,n,i,r){this.axisPointerClass&&oM(e),t.prototype.render.apply(this,arguments),this._doUpdateAxisPointerClass(e,i,!0)},e.prototype.updateAxisPointer=function(t,e,n,i){this._doUpdateAxisPointerClass(t,n,!1)},e.prototype.remove=function(t,e){var n=this._axisPointer;n&&n.remove(e)},e.prototype.dispose=function(e,n){this._disposeAxisPointer(n),t.prototype.dispose.apply(this,arguments)},e.prototype._doUpdateAxisPointerClass=function(t,n,i){var r=e.getAxisPointerClass(this.axisPointerClass);if(r){var o=function(t){var e=aM(t);return e&&e.axisPointerModel}(t);o?(this._axisPointer||(this._axisPointer=new r)).render(t,o,n,i):this._disposeAxisPointer(n)}},e.prototype._disposeAxisPointer=function(t){this._axisPointer&&this._axisPointer.dispose(t),this._axisPointer=null},e.registerAxisPointerClass=function(t,e){uM[t]=e},e.getAxisPointerClass=function(t){return t&&uM[t]},e.type="axis",e}(xf),cM=Lr();function pM(t,e,n,i){var r=n.axis;if(!r.scale.isBlank()){var o=n.getModel("splitArea"),a=o.getModel("areaStyle"),s=a.get("color"),l=i.coordinateSystem.getRect(),u=r.getTicksCoords({tickModel:o,clamp:!0});if(u.length){var h=s.length,c=cM(t).splitAreaColors,p=ht(),d=0;if(c)for(var f=0;f<u.length;f++){var g=c.get(u[f].tickValue);if(null!=g){d=(g+(h-1)*f)%h;break}}var y=r.toGlobalCoord(u[0].coord),v=a.getAreaStyle();s=F(s)?s:[s];for(f=1;f<u.length;f++){var m=r.toGlobalCoord(u[f].coord),_=void 0,x=void 0,b=void 0,w=void 0;r.isHorizontal()?(_=y,x=l.y,b=m-_,w=l.height,y=_+b):(_=l.x,x=y,b=l.width,y=x+(w=m-x));var S=u[f-1].tickValue;null!=S&&p.set(S,d),e.add(new as({anid:null!=S?"area_"+S:null,shape:{x:_,y:x,width:b,height:w},style:T({fill:s[d]},v),autoBatch:!0,silent:!0})),d=(d+1)%h}cM(t).splitAreaColors=p}}}function dM(t){cM(t).splitAreaColors=null}var fM=["axisLine","axisTickLabel","axisName"],gM=["splitArea","splitLine","minorSplitLine"],yM=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.axisPointerClass="CartesianAxisPointer",n}return n(e,t),e.prototype.render=function(e,n,i,r){this.group.removeAll();var o=this._axisGroup;if(this._axisGroup=new zi,this.group.add(this._axisGroup),e.get("show")){var a=e.getCoordSysModel(),s=WS(a,e),l=new $S(e,I({handleAutoShown:function(t){for(var n=a.coordinateSystem.getCartesians(),i=0;i<n.length;i++){var r=n[i].getOtherAxis(e.axis).type;if("value"===r||"log"===r)return!0}return!1}},s));P(fM,l.add,l),this._axisGroup.add(l.getGroup()),P(gM,(function(t){e.get([t,"show"])&&vM[t](this,this._axisGroup,e,a)}),this),Ku(o,this._axisGroup,e),t.prototype.render.call(this,e,n,i,r)}},e.prototype.remove=function(){dM(this)},e.type="cartesianAxis",e}(hM),vM={splitLine:function(t,e,n,i){var r=n.axis;if(!r.scale.isBlank()){var o=n.getModel("splitLine"),a=o.getModel("lineStyle"),s=a.get("color");s=F(s)?s:[s];for(var l=i.coordinateSystem.getRect(),u=r.isHorizontal(),h=0,c=r.getTicksCoords({tickModel:o}),p=[],d=[],f=a.getLineStyle(),g=0;g<c.length;g++){var y=r.toGlobalCoord(c[g].coord);u?(p[0]=y,p[1]=l.y,d[0]=y,d[1]=l.y+l.height):(p[0]=l.x,p[1]=y,d[0]=l.x+l.width,d[1]=y);var v=h++%s.length,m=c[g].tickValue;e.add(new su({anid:null!=m?"line_"+c[g].tickValue:null,subPixelOptimize:!0,autoBatch:!0,shape:{x1:p[0],y1:p[1],x2:d[0],y2:d[1]},style:T({stroke:s[v]},f),silent:!0}))}}},minorSplitLine:function(t,e,n,i){var r=n.axis,o=n.getModel("minorSplitLine").getModel("lineStyle"),a=i.coordinateSystem.getRect(),s=r.isHorizontal(),l=r.getMinorTicksCoords();if(l.length)for(var u=[],h=[],c=o.getLineStyle(),p=0;p<l.length;p++)for(var d=0;d<l[p].length;d++){var f=r.toGlobalCoord(l[p][d].coord);s?(u[0]=f,u[1]=a.y,h[0]=f,h[1]=a.y+a.height):(u[0]=a.x,u[1]=f,h[0]=a.x+a.width,h[1]=f),e.add(new su({anid:"minor_line_"+l[p][d].tickValue,subPixelOptimize:!0,autoBatch:!0,shape:{x1:u[0],y1:u[1],x2:h[0],y2:h[1]},style:c,silent:!0}))}},splitArea:function(t,e,n,i){pM(t,e,n,i)}},mM=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="xAxis",e}(yM),_M=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type=mM.type,e}return n(e,t),e.type="yAxis",e}(yM),xM=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="grid",e}return n(e,t),e.prototype.render=function(t,e){this.group.removeAll(),t.get("show")&&this.group.add(new as({shape:t.coordinateSystem.getRect(),style:T({fill:t.get("backgroundColor")},t.getItemStyle()),silent:!0,z2:-1}))},e.type="grid",e}(xf),bM={offset:0};function wM(t){t.registerComponentView(xM),t.registerComponentModel(DS),t.registerCoordinateSystem("cartesian2d",XS),ES(t,"x",LS,bM),ES(t,"y",LS,bM),t.registerComponentView(mM),t.registerComponentView(_M),t.registerPreprocessor((function(t){t.xAxis&&t.yAxis&&!t.grid&&(t.grid={})}))}function SM(t){t.eachSeriesByType("radar",(function(t){var e=t.getData(),n=[],i=t.coordinateSystem;if(i){var r=i.getIndicatorAxes();P(r,(function(t,o){e.each(e.mapDimension(r[o].dim),(function(t,e){n[e]=n[e]||[];var r=i.dataToPoint(t,o);n[e][o]=MM(r)?r:IM(i)}))})),e.each((function(t){var r=E(n[t],(function(t){return MM(t)}))||IM(i);n[t].push(r.slice()),e.setItemLayout(t,n[t])}))}}))}function MM(t){return!isNaN(t[0])&&!isNaN(t[1])}function IM(t){return[t.cx,t.cy]}function TM(t){var e=t.polar;if(e){F(e)||(e=[e]);var n=[];P(e,(function(e,i){e.indicator?(e.type&&!e.shape&&(e.shape=e.type),t.radar=t.radar||[],F(t.radar)||(t.radar=[t.radar]),t.radar.push(e)):n.push(e)})),t.polar=n}P(t.series,(function(t){t&&"radar"===t.type&&t.polarIndex&&(t.radarIndex=t.polarIndex)}))}var CM=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){var i=t.coordinateSystem,r=this.group,o=t.getData(),a=this._data;function s(t,e){var n=t.getItemVisual(e,"symbol")||"circle";if("none"!==n){var i=function(t){return F(t)||(t=[+t,+t]),t}(t.getItemVisual(e,"symbolSize")),r=py(n,-1,-1,2,2),o=t.getItemVisual(e,"symbolRotate")||0;return r.attr({style:{strokeNoScale:!0},z2:100,scaleX:i[0]/2,scaleY:i[1]/2,rotation:o*Math.PI/180||0}),r}}function l(e,n,i,r,o,a){i.removeAll();for(var l=0;l<n.length-1;l++){var u=s(r,o);u&&(u.__dimIdx=l,e[l]?(u.setPosition(e[l]),rh[a?"initProps":"updateProps"](u,{x:n[l][0],y:n[l][1]},t,o)):u.setPosition(n[l]),i.add(u))}}function u(t){return O(t,(function(t){return[i.cx,i.cy]}))}o.diff(a).add((function(e){var n=o.getItemLayout(e);if(n){var i=new nu,r=new ru,a={shape:{points:n}};i.shape.points=u(n),r.shape.points=u(n),Gu(i,a,t,e),Gu(r,a,t,e);var s=new zi,h=new zi;s.add(r),s.add(i),s.add(h),l(r.shape.points,n,h,o,e,!0),o.setItemGraphicEl(e,s)}})).update((function(e,n){var i=a.getItemGraphicEl(n),r=i.childAt(0),s=i.childAt(1),u=i.childAt(2),h={shape:{points:o.getItemLayout(e)}};h.shape.points&&(l(r.shape.points,h.shape.points,u,o,e,!1),Fu(r,h,t),Fu(s,h,t),o.setItemGraphicEl(e,i))})).remove((function(t){r.remove(a.getItemGraphicEl(t))})).execute(),o.eachItemGraphicEl((function(t,e){var n=o.getItemModel(e),i=t.childAt(0),a=t.childAt(1),s=t.childAt(2),l=o.getItemVisual(e,"style"),u=l.fill;r.add(t),i.useStyle(T(n.getModel("lineStyle").getLineStyle(),{fill:"none",stroke:u})),ul(i,n,"lineStyle"),ul(a,n,"areaStyle");var h=n.getModel("areaStyle"),c=h.isEmpty()&&h.parentModel.isEmpty();a.ignore=c,P(["emphasis","select","blur"],(function(t){var e=n.getModel([t,"areaStyle"]),i=e.isEmpty()&&e.parentModel.isEmpty();a.ensureState(t).ignore=i&&c})),a.useStyle(T(h.getAreaStyle(),{fill:u,opacity:.7,decal:l.decal}));var p=n.getModel("emphasis"),d=p.getModel("itemStyle").getItemStyle();s.eachChild((function(t){if(t instanceof Qa){var i=t.style;t.useStyle(I({image:i.image,x:i.x,y:i.y,width:i.width,height:i.height},l))}else t.useStyle(l),t.setColor(u);t.ensureState("emphasis").style=w(d);var r=o.get(o.dimensions[t.__dimIdx],e);(null==r||isNaN(r))&&(r=""),lh(t,uh(n),{labelFetcher:o.hostModel,labelDataIndex:e,labelDimIndex:t.__dimIdx,defaultText:r,inheritColor:u,defaultOpacity:l.opacity})})),ol(t,p.get("focus"),p.get("blurScope"))})),this._data=o},e.prototype.remove=function(){this.group.removeAll(),this._data=null},e.type="radar",e}(Mf),AM=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.useColorPaletteOnData=!0,n.hasSymbolVisual=!0,n}return n(e,t),e.prototype.init=function(e){t.prototype.init.apply(this,arguments),this.legendVisualProvider=new wS(B(this.getData,this),B(this.getRawData,this))},e.prototype.getInitialData=function(t,e){return bS(this,{generateCoord:"indicator_",generateCoordCount:1/0})},e.prototype.formatTooltip=function(t,e,n){var i=this.getData(),r=this.coordinateSystem.getIndicatorAxes(),o=this.getData().getName(t),a=""===o?this.name:o,s=af(this,t);return Jd("section",{header:a,sortBlocks:!0,blocks:O(r,(function(e){var n=i.get(i.mapDimension(e.dim),t);return Jd("nameValue",{markerType:"subItem",markerColor:s,name:e.name,value:n,sortParam:n})}))})},e.prototype.getTooltipPosition=function(t){if(null!=t)for(var e=this.getData(),n=this.coordinateSystem,i=e.getValues(O(n.dimensions,(function(t){return e.mapDimension(t)})),t),r=0,o=i.length;r<o;r++)if(!isNaN(i[r])){var a=n.getIndicatorAxes();return n.coordToPoint(a[r].dataToCoord(i[r]),r)}},e.type="series.radar",e.dependencies=["radar"],e.defaultOption={zlevel:0,z:2,coordinateSystem:"radar",legendHoverLink:!0,radarIndex:0,lineStyle:{width:2,type:"solid"},label:{position:"top"},symbolSize:8},e}(pf),DM=RS.value;function LM(t,e){return T({show:e},t)}var kM=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.optionUpdated=function(){var t=this.get("boundaryGap"),e=this.get("splitNumber"),n=this.get("scale"),i=this.get("axisLine"),r=this.get("axisTick"),o=this.get("axisLabel"),a=this.get("axisName"),s=this.get(["axisName","show"]),l=this.get(["axisName","formatter"]),u=this.get("axisNameGap"),h=this.get("triggerEvent"),c=O(this.get("indicator")||[],(function(c){null!=c.max&&c.max>0&&!c.min?c.min=0:null!=c.min&&c.min<0&&!c.max&&(c.max=0);var p=a;null!=c.color&&(p=T({color:c.color},a));var d=S(w(c),{boundaryGap:t,splitNumber:e,scale:n,axisLine:i,axisTick:r,axisLabel:o,name:c.text,nameLocation:"end",nameGap:u,nameTextStyle:p,triggerEvent:h},!1);if(s||(d.name=""),"string"==typeof l){var f=d.name;d.name=l.replace("{value}",null!=f?f:"")}else"function"==typeof l&&(d.name=l(d.name,d));var g=new kh(d,null,this.ecModel);return L(g,Wx.prototype),g.mainType="radar",g.componentIndex=this.componentIndex,g}),this);this._indicatorModels=c},e.prototype.getIndicatorModels=function(){return this._indicatorModels},e.type="radar",e.defaultOption={zlevel:0,z:0,center:["50%","50%"],radius:"75%",startAngle:90,axisName:{show:!0},boundaryGap:[0,0],splitNumber:5,axisNameGap:15,scale:!1,shape:"polygon",axisLine:S({lineStyle:{color:"#bbbbbb"}},DM.axisLine),axisLabel:LM(DM.axisLabel,!1),axisTick:LM(DM.axisTick,!1),splitLine:LM(DM.splitLine,!0),splitArea:LM(DM.splitArea,!0),indicator:[]},e}(Wc),PM=["axisLine","axisTickLabel","axisName"],OM=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){this.group.removeAll(),this._buildAxes(t),this._buildSplitLineAndArea(t)},e.prototype._buildAxes=function(t){var e=t.coordinateSystem;P(O(e.getIndicatorAxes(),(function(t){return new $S(t.model,{position:[e.cx,e.cy],rotation:t.angle,labelDirection:-1,tickDirection:-1,nameDirection:1})})),(function(t){P(PM,t.add,t),this.group.add(t.getGroup())}),this)},e.prototype._buildSplitLineAndArea=function(t){var e=t.coordinateSystem,n=e.getIndicatorAxes();if(n.length){var i=t.get("shape"),r=t.getModel("splitLine"),o=t.getModel("splitArea"),a=r.getModel("lineStyle"),s=o.getModel("areaStyle"),l=r.get("show"),u=o.get("show"),h=a.get("color"),c=s.get("color"),p=F(h)?h:[h],d=F(c)?c:[c],f=[],g=[];if("circle"===i)for(var y=n[0].getTicksCoords(),v=e.cx,m=e.cy,_=0;_<y.length;_++){if(l)f[A(f,p,_)].push(new Ol({shape:{cx:v,cy:m,r:y[_].coord}}));if(u&&_<y.length-1)g[A(g,d,_)].push(new Jl({shape:{cx:v,cy:m,r0:y[_].coord,r:y[_+1].coord}}))}else{var x,b=O(n,(function(t,n){var i=t.getTicksCoords();return x=null==x?i.length-1:Math.min(i.length-1,x),O(i,(function(t){return e.coordToPoint(t.coord,n)}))})),w=[];for(_=0;_<=x;_++){for(var S=[],M=0;M<n.length;M++)S.push(b[M][_]);if(S[0]&&S.push(S[0].slice()),l)f[A(f,p,_)].push(new ru({shape:{points:S}}));if(u&&w)g[A(g,d,_-1)].push(new nu({shape:{points:S.concat(w)}}));w=S.slice().reverse()}}var I=a.getLineStyle(),C=s.getAreaStyle();P(g,(function(t,e){this.group.add(Eu(t,{style:T({stroke:"none",fill:d[e%d.length]},C),silent:!0}))}),this),P(f,(function(t,e){this.group.add(Eu(t,{style:T({fill:"none",stroke:p[e%p.length]},I),silent:!0}))}),this)}function A(t,e,n){var i=n%e.length;return t[i]=t[i]||[],i}},e.type="radar",e}(xf),RM=function(t){function e(e,n,i){var r=t.call(this,e,n,i)||this;return r.type="value",r.angle=0,r.name="",r}return n(e,t),e}(sb),NM=function(){function t(t,e,n){this.dimensions=[],this._model=t,this._indicatorAxes=O(t.getIndicatorModels(),(function(t,e){var n="indicator_"+e,i=new RM(n,new q_);return i.name=t.get("name"),i.model=t,t.axis=i,this.dimensions.push(n),i}),this),this.resize(t,n)}return t.prototype.getIndicatorAxes=function(){return this._indicatorAxes},t.prototype.dataToPoint=function(t,e){var n=this._indicatorAxes[e];return this.coordToPoint(n.dataToCoord(t),e)},t.prototype.coordToPoint=function(t,e){var n=this._indicatorAxes[e].angle;return[this.cx+t*Math.cos(n),this.cy-t*Math.sin(n)]},t.prototype.pointToData=function(t){var e=t[0]-this.cx,n=t[1]-this.cy,i=Math.sqrt(e*e+n*n);e/=i,n/=i;for(var r,o=Math.atan2(-n,e),a=1/0,s=-1,l=0;l<this._indicatorAxes.length;l++){var u=this._indicatorAxes[l],h=Math.abs(o-u.angle);h<a&&(r=u,s=l,a=h)}return[s,+(r&&r.coordToData(i))]},t.prototype.resize=function(t,e){var n=t.get("center"),i=e.getWidth(),r=e.getHeight(),o=Math.min(i,r)/2;this.cx=Zi(n[0],i),this.cy=Zi(n[1],r),this.startAngle=t.get("startAngle")*Math.PI/180;var a=t.get("radius");"string"!=typeof a&&"number"!=typeof a||(a=[0,a]),this.r0=Zi(a[0],o),this.r=Zi(a[1],o),P(this._indicatorAxes,(function(t,e){t.setExtent(this.r0,this.r);var n=this.startAngle+e*Math.PI*2/this._indicatorAxes.length;n=Math.atan2(Math.sin(n),Math.cos(n)),t.angle=n}),this)},t.prototype.update=function(t,e){var n=this._indicatorAxes,i=this._model;P(n,(function(t){t.scale.setExtent(1/0,-1/0)})),t.eachSeriesByType("radar",(function(e,r){if("radar"===e.get("coordinateSystem")&&t.getComponent("radar",e.get("radarIndex"))===i){var o=e.getData();P(n,(function(t){t.scale.unionExtentFromData(o,o.mapDimension(t.dim))}))}}),this);var r=i.get("splitNumber");function o(t){var e=Math.pow(10,Math.floor(Math.log(t)/Math.LN10)),n=t/e;return 2===n?n=5:n*=2,n*e}P(n,(function(t,e){var n=Rx(t.scale,t.model).extent;Nx(t.scale,t.model);var i=t.model,a=t.scale,s=Ox(a,i.get("min",!0)),l=Ox(a,i.get("max",!0)),u=a.getInterval();if(null!=s&&null!=l)a.setExtent(+s,+l),a.setInterval((l-s)/r);else if(null!=s){var h=void 0;do{h=s+u*r,a.setExtent(+s,h),a.setInterval(u),u=o(u)}while(h<n[1]&&isFinite(h)&&isFinite(n[1]))}else if(null!=l){var c=void 0;do{c=l-u*r,a.setExtent(c,+l),a.setInterval(u),u=o(u)}while(c>n[0]&&isFinite(c)&&isFinite(n[0]))}else{a.getTicks().length-1>r&&(u=o(u));c=ji((h=Math.ceil(n[1]/u)*u)-u*r);a.setExtent(c,h),a.setInterval(u)}}))},t.prototype.convertToPixel=function(t,e,n){return console.warn("Not implemented."),null},t.prototype.convertFromPixel=function(t,e,n){return console.warn("Not implemented."),null},t.prototype.containPoint=function(t){return console.warn("Not implemented."),!1},t.create=function(e,n){var i=[];return e.eachComponent("radar",(function(r){var o=new t(r,e,n);i.push(o),r.coordinateSystem=o})),e.eachSeriesByType("radar",(function(t){"radar"===t.get("coordinateSystem")&&(t.coordinateSystem=i[t.get("radarIndex")||0])})),i},t.dimensions=[],t}();function EM(t){t.registerCoordinateSystem("radar",NM),t.registerComponentModel(kM),t.registerComponentView(OM),t.registerVisual({seriesType:"radar",reset:function(t){var e=t.getData();e.each((function(t){e.setItemVisual(t,"legendSymbol","roundRect")})),e.setVisual("legendSymbol","roundRect")}})}var zM="\0_ec_interaction_mutex";function BM(t,e){return!!VM(t)[e]}function VM(t){return t[zM]||(t[zM]={})}Bm({type:"takeGlobalCursor",event:"globalCursorTaken",update:"update"},(function(){}));var FM=function(t){function e(e){var n=t.call(this)||this;n._zr=e;var i=B(n._mousedownHandler,n),r=B(n._mousemoveHandler,n),o=B(n._mouseupHandler,n),a=B(n._mousewheelHandler,n),s=B(n._pinchHandler,n);return n.enable=function(t,n){this.disable(),this._opt=T(w(n)||{},{zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!1,preventDefaultMouseMove:!0}),null==t&&(t=!0),!0!==t&&"move"!==t&&"pan"!==t||(e.on("mousedown",i),e.on("mousemove",r),e.on("mouseup",o)),!0!==t&&"scale"!==t&&"zoom"!==t||(e.on("mousewheel",a),e.on("pinch",s))},n.disable=function(){e.off("mousedown",i),e.off("mousemove",r),e.off("mouseup",o),e.off("mousewheel",a),e.off("pinch",s)},n}return n(e,t),e.prototype.isDragging=function(){return this._dragging},e.prototype.isPinching=function(){return this._pinching},e.prototype.setPointerChecker=function(t){this.pointerChecker=t},e.prototype.dispose=function(){this.disable()},e.prototype._mousedownHandler=function(t){if(!(ne(t)||t.target&&t.target.draggable)){var e=t.offsetX,n=t.offsetY;this.pointerChecker&&this.pointerChecker(t,e,n)&&(this._x=e,this._y=n,this._dragging=!0)}},e.prototype._mousemoveHandler=function(t){if(this._dragging&&WM("moveOnMouseMove",t,this._opt)&&"pinch"!==t.gestureEvent&&!BM(this._zr,"globalPan")){var e=t.offsetX,n=t.offsetY,i=this._x,r=this._y,o=e-i,a=n-r;this._x=e,this._y=n,this._opt.preventDefaultMouseMove&&ee(t.event),HM(this,"pan","moveOnMouseMove",t,{dx:o,dy:a,oldX:i,oldY:r,newX:e,newY:n,isAvailableBehavior:null})}},e.prototype._mouseupHandler=function(t){ne(t)||(this._dragging=!1)},e.prototype._mousewheelHandler=function(t){var e=WM("zoomOnMouseWheel",t,this._opt),n=WM("moveOnMouseWheel",t,this._opt),i=t.wheelDelta,r=Math.abs(i),o=t.offsetX,a=t.offsetY;if(0!==i&&(e||n)){if(e){var s=r>3?1.4:r>1?1.2:1.1;GM(this,"zoom","zoomOnMouseWheel",t,{scale:i>0?s:1/s,originX:o,originY:a,isAvailableBehavior:null})}if(n){var l=Math.abs(i);GM(this,"scrollMove","moveOnMouseWheel",t,{scrollDelta:(i>0?1:-1)*(l>3?.4:l>1?.15:.05),originX:o,originY:a,isAvailableBehavior:null})}}},e.prototype._pinchHandler=function(t){BM(this._zr,"globalPan")||GM(this,"zoom",null,t,{scale:t.pinchScale>1?1.1:1/1.1,originX:t.pinchX,originY:t.pinchY,isAvailableBehavior:null})},e}(Ft);function GM(t,e,n,i,r){t.pointerChecker&&t.pointerChecker(i,r.originX,r.originY)&&(ee(i.event),HM(t,e,n,i,r))}function HM(t,e,n,i,r){r.isAvailableBehavior=B(WM,null,n,i),t.trigger(e,r)}function WM(t,e,n){var i=n[t];return!t||i&&(!H(i)||e.event[i+"Key"])}function UM(t,e,n){var i=t.target;i.x+=e,i.y+=n,i.dirty()}function YM(t,e,n,i){var r=t.target,o=t.zoomLimit,a=t.zoom=t.zoom||1;if(a*=e,o){var s=o.min||0,l=o.max||1/0;a=Math.max(Math.min(l,a),s)}var u=a/t.zoom;t.zoom=a,r.x-=(n-r.x)*(u-1),r.y-=(i-r.y)*(u-1),r.scaleX*=u,r.scaleY*=u,r.dirty()}var XM={axisPointer:1,tooltip:1,brush:1};function ZM(t,e,n){var i=e.getComponentByElement(t.topTarget),r=i&&i.coordinateSystem;return i&&i!==n&&!XM.hasOwnProperty(i.mainType)&&r&&r.model!==n}var jM=["rect","circle","line","ellipse","polygon","polyline","path"],qM=ht(jM),KM=ht(jM.concat(["g"])),$M=ht(jM.concat(["g"])),JM=Lr();function QM(t){var e=t.getItemStyle(),n=t.get("areaColor");return null!=n&&(e.fill=n),e}var tI=function(){function t(t){var e=new zi;this.uid=Oh("ec_map_draw"),this._controller=new FM(t.getZr()),this._controllerHost={target:e},this.group=e,e.add(this._regionsGroup=new zi),e.add(this._svgGroup=new zi)}return t.prototype.draw=function(t,e,n,i,r){var o="geo"===t.mainType,a=t.getData&&t.getData();o&&e.eachComponent({mainType:"series",subType:"map"},(function(e){a||e.getHostGeoModel()!==t||(a=e.getData())}));var s=t.coordinateSystem,l=this._regionsGroup,u=this.group,h=s.getTransformInfo(),c=h.raw,p=h.roam;!l.childAt(0)||r?(u.x=p.x,u.y=p.y,u.scaleX=p.scaleX,u.scaleY=p.scaleY,u.dirty()):Fu(u,p,t);var d=a&&a.getVisual("visualMeta")&&a.getVisual("visualMeta").length>0,f={api:n,geo:s,mapOrGeoModel:t,data:a,isVisualEncodedByVisualMap:d,isGeo:o,transformInfoRaw:c};"geoJSON"===s.resourceType?this._buildGeoJSON(f):"geoSVG"===s.resourceType&&this._buildSVG(f),this._updateController(t,e,n),this._updateMapSelectHandler(t,l,n,i)},t.prototype._buildGeoJSON=function(t){var e=this._regionsGroupByName=ht(),n=this._regionsGroup,i=t.transformInfoRaw,r=t.mapOrGeoModel,o=t.data,a=function(t){return[t[0]*i.scaleX+i.x,t[1]*i.scaleY+i.y]};n.removeAll(),P(t.geo.regions,(function(i){var s=i.name,l=r.getRegionModel(s),u=o?o.indexOfName(s):null,h=e.get(s),c=!!h;c||(h=e.set(s,new zi),n.add(h));var p=new fu({segmentIgnoreThreshold:1,shape:{paths:[]}});h.add(p),c||(iI(t,h,s,l,r,u),rI(t,h,s,l,r),oI(t,h,s,l,r)),P(i.geometries,(function(t){if("polygon"===t.type){for(var e=[],n=0;n<t.exterior.length;++n)e.push(a(t.exterior[n]));p.shape.paths.push(new nu({segmentIgnoreThreshold:1,shape:{points:e}}));for(n=0;n<(t.interiors?t.interiors.length:0);++n){for(var i=t.interiors[n],r=[],o=0;o<i.length;++o)r.push(a(i[o]));p.shape.paths.push(new nu({segmentIgnoreThreshold:1,shape:{points:r}}))}}})),eI(t,p,u,l),p instanceof bo&&(p.culling=!0);var d=a(i.getCenter());nI(t,p,s,l,r,u,d)}),this)},t.prototype._buildSVG=function(t){var e=t.geo.map,n=t.transformInfoRaw;this._svgGroup.x=n.x,this._svgGroup.y=n.y,this._svgGroup.scaleX=n.scaleX,this._svgGroup.scaleY=n.scaleY,this._svgResourceChanged(e)&&(this._freeSVG(),this._useSVG(e));var i=this._svgDispatcherMap=ht(),r=!1;P(this._svgGraphicRecord.named,(function(e){var n=e.name,o=t.mapOrGeoModel,a=t.data,s=e.svgNodeTagLower,l=e.el,u=a?a.indexOfName(n):null,h=o.getRegionModel(n);(null!=qM.get(s)&&l instanceof bo&&eI(t,l,u,h),l instanceof bo&&(l.culling=!0),l.z2EmphasisLift=0,e.namedFrom)||(null!=$M.get(s)&&nI(t,l,n,h,o,u,null),iI(t,l,n,h,o,u),rI(t,l,n,h,o),null!=KM.get(s)&&("self"===oI(t,l,n,h,o)&&(r=!0),(i.get(n)||i.set(n,[])).push(l)))}),this),this._enableBlurEntireSVG(r,t)},t.prototype._enableBlurEntireSVG=function(t,e){if(t&&e.isGeo){var n=e.mapOrGeoModel.getModel(["blur","itemStyle"]).getItemStyle().opacity;this._svgGraphicRecord.root.traverse((function(t){if(!t.isGroup){Ws(t);var e=t.ensureState("blur").style||{};null==e.opacity&&null!=n&&(e.opacity=n),t.ensureState("emphasis")}}))}},t.prototype.remove=function(){this._regionsGroup.removeAll(),this._regionsGroupByName=null,this._svgGroup.removeAll(),this._freeSVG(),this._controller.dispose(),this._controllerHost=null},t.prototype.findHighDownDispatchers=function(t,e){if(null==t)return[];var n=e.coordinateSystem;if("geoJSON"===n.resourceType){var i=this._regionsGroupByName;if(i){var r=i.get(t);return r?[r]:[]}}else if("geoSVG"===n.resourceType)return this._svgDispatcherMap&&this._svgDispatcherMap.get(t)||[]},t.prototype._svgResourceChanged=function(t){return this._svgMapName!==t},t.prototype._useSVG=function(t){var e=Tv(t);if(e&&"geoSVG"===e.type){var n=e.useGraphic(this.uid);this._svgGroup.add(n.root),this._svgGraphicRecord=n,this._svgMapName=t}},t.prototype._freeSVG=function(){var t=this._svgMapName;if(null!=t){var e=Tv(t);e&&"geoSVG"===e.type&&e.freeGraphic(this.uid),this._svgGraphicRecord=null,this._svgDispatcherMap=null,this._svgGroup.removeAll(),this._svgMapName=null}},t.prototype._updateController=function(t,e,n){var i=t.coordinateSystem,r=this._controller,o=this._controllerHost;o.zoomLimit=t.get("scaleLimit"),o.zoom=i.getZoom(),r.enable(t.get("roam")||!1);var a=t.mainType;function s(){var e={type:"geoRoam",componentType:a};return e[a+"Id"]=t.id,e}r.off("pan").on("pan",(function(t){this._mouseDownFlag=!1,UM(o,t.dx,t.dy),n.dispatchAction(I(s(),{dx:t.dx,dy:t.dy}))}),this),r.off("zoom").on("zoom",(function(t){this._mouseDownFlag=!1,YM(o,t.scale,t.originX,t.originY),n.dispatchAction(I(s(),{zoom:t.scale,originX:t.originX,originY:t.originY}))}),this),r.setPointerChecker((function(e,r,o){return i.containPoint([r,o])&&!ZM(e,n,t)}))},t.prototype.resetForLabelLayout=function(){this.group.traverse((function(t){var e=t.getTextContent();e&&(e.ignore=JM(e).ignore)}))},t.prototype._updateMapSelectHandler=function(t,e,n,i){var r=this;e.off("mousedown"),e.off("click"),t.get("selectedMode")&&(e.on("mousedown",(function(){r._mouseDownFlag=!0})),e.on("click",(function(t){r._mouseDownFlag&&(r._mouseDownFlag=!1)})))},t}();function eI(t,e,n,i){var r=i.getModel("itemStyle"),o=i.getModel(["emphasis","itemStyle"]),a=i.getModel(["blur","itemStyle"]),s=i.getModel(["select","itemStyle"]),l=QM(r),u=QM(o),h=QM(s),c=QM(a),p=t.data;if(p){var d=p.getItemVisual(n,"style"),f=p.getItemVisual(n,"decal");t.isVisualEncodedByVisualMap&&d.fill&&(l.fill=d.fill),f&&(l.decal=Ny(f,t.api))}e.setStyle(l),e.style.strokeNoScale=!0,e.ensureState("emphasis").style=u,e.ensureState("select").style=h,e.ensureState("blur").style=c,Ws(e)}function nI(t,e,n,i,r,o,a){var s=t.data,l=t.isGeo,u=s&&isNaN(s.get(s.mapDimension("value"),o)),h=s&&s.getItemLayout(o);if(l||u||h&&h.showLabel){var c=l?n:o,p=void 0;(!s||o>=0)&&(p=r);var d=a?{normal:{align:"center",verticalAlign:"middle"}}:null;lh(e,uh(i),{labelFetcher:p,labelDataIndex:c,defaultText:n},d);var f=e.getTextContent();if(f&&(JM(f).ignore=f.ignore,e.textConfig&&a)){var g=e.getBoundingRect().clone();e.textConfig.position=[(a[0]-g.x)/g.width*100+"%",(a[1]-g.y)/g.height*100+"%"]}!function(t,e,n){vs(t).dataIndex=e,vs(t).dataType=n}(e,o,null),e.disableLabelAnimation=!0}else e.removeTextContent(),e.removeTextConfig(),e.disableLabelAnimation=null}function iI(t,e,n,i,r,o){t.data?t.data.setItemGraphicEl(o,e):vs(e).eventData={componentType:"geo",componentIndex:r.componentIndex,geoIndex:r.componentIndex,name:n,region:i&&i.option||{}}}function rI(t,e,n,i,r){t.data||ih({el:e,componentModel:r,itemName:n,itemTooltipOption:i.get("tooltip")})}function oI(t,e,n,i,r){e.highDownSilentOnTouch=!!r.get("selectedMode");var o=i.getModel("emphasis"),a=o.get("focus");return ol(e,a,o.get("blurScope")),t.isGeo&&function(t,e,n){var i=vs(t);i.componentMainType=e.mainType,i.componentIndex=e.componentIndex,i.componentHighDownName=n}(e,r,n),a}var aI=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n,i){if(!i||"mapToggleSelect"!==i.type||i.from!==this.uid){var r=this.group;if(r.removeAll(),!t.getHostGeoModel()){if(this._mapDraw&&i&&"geoRoam"===i.type&&this._mapDraw.resetForLabelLayout(),i&&"geoRoam"===i.type&&"series"===i.componentType&&i.seriesId===t.id)(o=this._mapDraw)&&r.add(o.group);else if(t.needsDrawMap){var o=this._mapDraw||new tI(n);r.add(o.group),o.draw(t,e,n,this,i),this._mapDraw=o}else this._mapDraw&&this._mapDraw.remove(),this._mapDraw=null;t.get("showLegendSymbol")&&e.getComponent("legend")&&this._renderSymbols(t,e,n)}}},e.prototype.remove=function(){this._mapDraw&&this._mapDraw.remove(),this._mapDraw=null,this.group.removeAll()},e.prototype.dispose=function(){this._mapDraw&&this._mapDraw.remove(),this._mapDraw=null},e.prototype._renderSymbols=function(t,e,n){var i=t.originalData,r=this.group;i.each(i.mapDimension("value"),(function(e,n){if(!isNaN(e)){var o=i.getItemLayout(n);if(o&&o.point){var a=o.point,s=o.offset,l=new Ol({style:{fill:t.getData().getVisual("style").fill},shape:{cx:a[0]+9*s,cy:a[1],r:3},silent:!0,z2:8+(s?0:11)});if(!s){var u=t.mainSeries.getData(),h=i.getName(n),c=u.indexOfName(h),p=i.getItemModel(n),d=p.getModel("label"),f=u.getItemGraphicEl(c);lh(l,uh(p),{labelFetcher:{getFormattedLabel:function(e,n){return t.getFormattedLabel(c,n)}}}),l.disableLabelAnimation=!0,d.get("position")||l.setTextConfig({position:"bottom"}),f.onHoverStateChange=function(t){Gs(l,t)}}r.add(l)}}}))},e.type="map",e}(Mf),sI=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.needsDrawMap=!1,n.seriesGroup=[],n.getTooltipPosition=function(t){if(null!=t){var e=this.getData().getName(t),n=this.coordinateSystem,i=n.getRegion(e);return i&&n.dataToPoint(i.getCenter())}},n}return n(e,t),e.prototype.getInitialData=function(t){for(var e=bS(this,{coordDimensions:["value"],encodeDefaulter:V(sp,this)}),n=ht(),i=[],r=0,o=e.count();r<o;r++){var a=e.getName(r);n.set(a,!0)}return P(Av(this.getMapType(),this.option.nameMap,this.option.nameProperty).regions,(function(t){var e=t.name;n.get(e)||i.push(e)})),e.appendValues([],i),e},e.prototype.getHostGeoModel=function(){var t=this.option.geoIndex;return null!=t?this.ecModel.getComponent("geo",t):null},e.prototype.getMapType=function(){return(this.getHostGeoModel()||this).option.map},e.prototype.getRawValue=function(t){var e=this.getData();return e.get(e.mapDimension("value"),t)},e.prototype.getRegionModel=function(t){var e=this.getData();return e.getItemModel(e.indexOfName(t))},e.prototype.formatTooltip=function(t,e,n){for(var i=this.getData(),r=this.getRawValue(t),o=i.getName(t),a=this.seriesGroup,s=[],l=0;l<a.length;l++){var u=a[l].originalData.indexOfName(o),h=i.mapDimension("value");isNaN(a[l].originalData.get(h,u))||s.push(a[l].name)}return Jd("section",{header:s.join(", "),noHeader:!s.length,blocks:[Jd("nameValue",{name:o,value:r})]})},e.prototype.setZoom=function(t){this.option.zoom=t},e.prototype.setCenter=function(t){this.option.center=t},e.prototype.getLegendIcon=function(t){var e=t.symbolType||"roundRect",n=py(e,0,0,t.itemWidth,t.itemHeight,t.itemStyle.fill,t.symbolKeepAspect);return n.setStyle(t.itemStyle),n.style.stroke="none",e.indexOf("empty")>-1&&(n.style.stroke=n.style.fill,n.style.fill="#ffffff",n.style.lineWidth=2),n},e.type="series.map",e.dependencies=["geo"],e.layoutMode="box",e.defaultOption={zlevel:0,z:2,coordinateSystem:"geo",map:"",left:"center",top:"center",aspectScale:null,showLegendSymbol:!0,boundingCoords:null,center:null,zoom:1,scaleLimit:null,selectedMode:!0,label:{show:!1,color:"#000000"},itemStyle:{borderWidth:.5,borderColor:"#444444",areaColor:"#eeeeee"},emphasis:{label:{show:!0,color:"rgb(100,0,0)"},itemStyle:{areaColor:"rgba(255,215,0,0.8)"}},select:{label:{show:!0,color:"rgb(100,0,0)"},itemStyle:{color:"rgba(255,215,0,0.8)"}},nameProperty:"name"},e}(pf);function lI(t){var e={};t.eachSeriesByType("map",(function(t){var n=t.getHostGeoModel(),i=n?"o"+n.id:"i"+t.getMapType();(e[i]=e[i]||[]).push(t)})),P(e,(function(t,e){for(var n,i,r,o=(n=O(t,(function(t){return t.getData()})),i=t[0].get("mapValueCalculation"),r={},P(n,(function(t){t.each(t.mapDimension("value"),(function(e,n){var i="ec-"+t.getName(n);r[i]=r[i]||[],isNaN(e)||r[i].push(e)}))})),n[0].map(n[0].mapDimension("value"),(function(t,e){for(var o="ec-"+n[0].getName(e),a=0,s=1/0,l=-1/0,u=r[o].length,h=0;h<u;h++)s=Math.min(s,r[o][h]),l=Math.max(l,r[o][h]),a+=r[o][h];return 0===u?NaN:"min"===i?s:"max"===i?l:"average"===i?a/u:a}))),a=0;a<t.length;a++)t[a].originalData=t[a].getData();for(a=0;a<t.length;a++)t[a].seriesGroup=t,t[a].needsDrawMap=0===a&&!t[a].getHostGeoModel(),t[a].setData(o.cloneShallow()),t[a].mainSeries=t[0]}))}function uI(t){var e={};t.eachSeriesByType("map",(function(n){var i=n.getMapType();if(!n.getHostGeoModel()&&!e[i]){var r={};P(n.seriesGroup,(function(e){var n=e.coordinateSystem,i=e.originalData;e.get("showLegendSymbol")&&t.getComponent("legend")&&i.each(i.mapDimension("value"),(function(t,e){var o=i.getName(e),a=n.getRegion(o);if(a&&!isNaN(t)){var s=r[o]||0,l=n.dataToPoint(a.getCenter());r[o]=s+1,i.setItemLayout(e,{point:l,offset:s})}}))}));var o=n.getData();o.each((function(t){var e=o.getName(t),n=o.getItemLayout(t)||{};n.showLabel=!r[e],o.setItemLayout(t,n)})),e[i]=!0}}))}var hI=Rt,cI=function(t){function e(e){var n=t.call(this)||this;return n.type="view",n.dimensions=["x","y"],n._roamTransformable=new ke,n._rawTransformable=new ke,n.name=e,n}return n(e,t),e.prototype.setBoundingRect=function(t,e,n,i){return this._rect=new Rn(t,e,n,i),this._rect},e.prototype.getBoundingRect=function(){return this._rect},e.prototype.setViewRect=function(t,e,n,i){this._transformTo(t,e,n,i),this._viewRect=new Rn(t,e,n,i)},e.prototype._transformTo=function(t,e,n,i){var r=this.getBoundingRect(),o=this._rawTransformable;o.transform=r.calculateTransform(new Rn(t,e,n,i));var a=o.parent;o.parent=null,o.decomposeTransform(),o.parent=a,this._updateTransform()},e.prototype.setCenter=function(t){t&&(this._center=t,this._updateCenterAndZoom())},e.prototype.setZoom=function(t){t=t||1;var e=this.zoomLimit;e&&(null!=e.max&&(t=Math.min(e.max,t)),null!=e.min&&(t=Math.max(e.min,t))),this._zoom=t,this._updateCenterAndZoom()},e.prototype.getDefaultCenter=function(){var t=this.getBoundingRect();return[t.x+t.width/2,t.y+t.height/2]},e.prototype.getCenter=function(){return this._center||this.getDefaultCenter()},e.prototype.getZoom=function(){return this._zoom||1},e.prototype.getRoamTransform=function(){return this._roamTransformable.getLocalTransform()},e.prototype._updateCenterAndZoom=function(){var t=this._rawTransformable.getLocalTransform(),e=this._roamTransformable,n=this.getDefaultCenter(),i=this.getCenter(),r=this.getZoom();i=Rt([],i,t),n=Rt([],n,t),e.originX=i[0],e.originY=i[1],e.x=n[0]-i[0],e.y=n[1]-i[1],e.scaleX=e.scaleY=r,this._updateTransform()},e.prototype._updateTransform=function(){var t=this._roamTransformable,e=this._rawTransformable;e.parent=t,t.updateTransform(),e.updateTransform(),ye(this.transform||(this.transform=[]),e.transform||[1,0,0,1,0,0]),this._rawTransform=e.getLocalTransform(),this.invTransform=this.invTransform||[],be(this.invTransform,this.transform),this.decomposeTransform()},e.prototype.getTransformInfo=function(){var t=this._rawTransformable,e=this._roamTransformable,n=new ke;return n.transform=e.transform,n.decomposeTransform(),{roam:{x:n.x,y:n.y,scaleX:n.scaleX,scaleY:n.scaleY},raw:{x:t.x,y:t.y,scaleX:t.scaleX,scaleY:t.scaleY}}},e.prototype.getViewRect=function(){return this._viewRect},e.prototype.getViewRectAfterRoam=function(){var t=this.getBoundingRect().clone();return t.applyTransform(this.transform),t},e.prototype.dataToPoint=function(t,e,n){var i=e?this._rawTransform:this.transform;return n=n||[],i?hI(n,t,i):vt(n,t)},e.prototype.pointToData=function(t){var e=this.invTransform;return e?hI([],t,e):[t[0],t[1]]},e.prototype.convertToPixel=function(t,e,n){var i=pI(e);return i===this?i.dataToPoint(n):null},e.prototype.convertFromPixel=function(t,e,n){var i=pI(e);return i===this?i.pointToData(n):null},e.prototype.containPoint=function(t){return this.getViewRectAfterRoam().contain(t[0],t[1])},e.dimensions=["x","y"],e}(ke);function pI(t){var e=t.seriesModel;return e?e.coordinateSystem:null}var dI={geoJSON:{aspectScale:.75,invertLongitute:!0},geoSVG:{aspectScale:1,invertLongitute:!1}},fI=function(t){function e(e,n,i){var r=t.call(this,e)||this;r.dimensions=["lng","lat"],r.type="geo",r._nameCoordMap=ht(),r.map=n;var o=Av(n,i.nameMap,i.nameProperty),a=Tv(n);r.resourceType=a?a.type:null;var s=dI[a.type];r._regionsMap=o.regionsMap,r._invertLongitute=s.invertLongitute,r.regions=o.regions,r.aspectScale=tt(i.aspectScale,s.aspectScale);var l=o.boundingRect;return r.setBoundingRect(l.x,l.y,l.width,l.height),r}return n(e,t),e.prototype._transformTo=function(t,e,n,i){var r=this.getBoundingRect(),o=this._invertLongitute;r=r.clone(),o&&(r.y=-r.y-r.height);var a=this._rawTransformable;a.transform=r.calculateTransform(new Rn(t,e,n,i));var s=a.parent;a.parent=null,a.decomposeTransform(),a.parent=s,o&&(a.scaleY=-a.scaleY),this._updateTransform()},e.prototype.getRegion=function(t){return this._regionsMap.get(t)},e.prototype.getRegionByCoord=function(t){for(var e=this.regions,n=0;n<e.length;n++){var i=e[n];if("geoJSON"===i.type&&i.contain(t))return e[n]}},e.prototype.addGeoCoord=function(t,e){this._nameCoordMap.set(t,e)},e.prototype.getGeoCoord=function(t){var e=this._regionsMap.get(t);return this._nameCoordMap.get(t)||e&&e.getCenter()},e.prototype.dataToPoint=function(t,e,n){if("string"==typeof t&&(t=this.getGeoCoord(t)),t)return cI.prototype.dataToPoint.call(this,t,e,n)},e.prototype.convertToPixel=function(t,e,n){var i=gI(e);return i===this?i.dataToPoint(n):null},e.prototype.convertFromPixel=function(t,e,n){var i=gI(e);return i===this?i.pointToData(n):null},e}(cI);function gI(t){var e=t.geoModel,n=t.seriesModel;return e?e.coordinateSystem:n?n.coordinateSystem||(n.getReferringComponents("geo",Rr).models[0]||{}).coordinateSystem:null}function yI(t,e){var n=t.get("boundingCoords");if(null!=n){var i=n[0],r=n[1];isNaN(i[0])||isNaN(i[1])||isNaN(r[0])||isNaN(r[1])||this.setBoundingRect(i[0],i[1],r[0]-i[0],r[1]-i[1])}var o,a,s,l=this.getBoundingRect(),u=t.get("layoutCenter"),h=t.get("layoutSize"),c=e.getWidth(),p=e.getHeight(),d=l.width/l.height*this.aspectScale,f=!1;if(u&&h&&(o=[Zi(u[0],c),Zi(u[1],p)],a=Zi(h,Math.min(c,p)),isNaN(o[0])||isNaN(o[1])||isNaN(a)||(f=!0)),f)s={},d>1?(s.width=a,s.height=a/d):(s.height=a,s.width=a*d),s.y=o[1]-s.height/2,s.x=o[0]-s.width/2;else{var g=t.getBoxLayoutParams();g.aspect=d,s=Ec(g,{width:c,height:p})}this.setViewRect(s.x,s.y,s.width,s.height),this.setCenter(t.get("center")),this.setZoom(t.get("zoom"))}L(fI,cI);var vI=new(function(){function t(){this.dimensions=fI.prototype.dimensions}return t.prototype.create=function(t,e){var n=[];t.eachComponent("geo",(function(t,i){var r=t.get("map"),o=new fI(r+i,r,{nameMap:t.get("nameMap"),nameProperty:t.get("nameProperty"),aspectScale:t.get("aspectScale")});o.zoomLimit=t.get("scaleLimit"),n.push(o),t.coordinateSystem=o,o.model=t,o.resize=yI,o.resize(t,e)})),t.eachSeries((function(t){if("geo"===t.get("coordinateSystem")){var e=t.get("geoIndex")||0;t.coordinateSystem=n[e]}}));var i={};return t.eachSeriesByType("map",(function(t){if(!t.getHostGeoModel()){var e=t.getMapType();i[e]=i[e]||[],i[e].push(t)}})),P(i,(function(t,i){var r=O(t,(function(t){return t.get("nameMap")})),o=new fI(i,i,{nameMap:M(r),nameProperty:t[0].get("nameProperty"),aspectScale:t[0].get("aspectScale")});o.zoomLimit=Q.apply(null,O(t,(function(t){return t.get("scaleLimit")}))),n.push(o),o.resize=yI,o.resize(t[0],e),P(t,(function(t){t.coordinateSystem=o,function(t,e){P(e.get("geoCoord"),(function(e,n){t.addGeoCoord(n,e)}))}(o,t)}))})),n},t.prototype.getFilledRegions=function(t,e,n,i){for(var r=(t||[]).slice(),o=ht(),a=0;a<r.length;a++)o.set(r[a].name,r[a]);return P(Av(e,n,i).regions,(function(t){var e=t.name;!o.get(e)&&r.push({name:e})})),r},t}()),mI=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.init=function(t,e,n){var i=Tv(t.map);if(i&&"geoJSON"===i.type){var r=t.itemStyle=t.itemStyle||{};"color"in r||(r.color="#eeeeee")}this.mergeDefaultAndTheme(t,n),xr(t,"label",["show"])},e.prototype.optionUpdated=function(){var t=this,e=this.option;e.regions=vI.getFilledRegions(e.regions,e.map,e.nameMap,e.nameProperty);var n={};this._optionModelMap=R(e.regions||[],(function(e,i){var r=i.name;return r&&(e.set(r,new kh(i,t,t.ecModel)),i.selected&&(n[r]=!0)),e}),ht()),e.selectedMap||(e.selectedMap=n)},e.prototype.getRegionModel=function(t){return this._optionModelMap.get(t)||new kh(null,this,this.ecModel)},e.prototype.getFormattedLabel=function(t,e){var n=this.getRegionModel(t),i="normal"===e?n.get(["label","formatter"]):n.get(["emphasis","label","formatter"]),r={name:t};return"function"==typeof i?(r.status=e,i(r)):"string"==typeof i?i.replace("{a}",null!=t?t:""):void 0},e.prototype.setZoom=function(t){this.option.zoom=t},e.prototype.setCenter=function(t){this.option.center=t},e.prototype.select=function(t){var e=this.option,n=e.selectedMode;n&&("multiple"!==n&&(e.selectedMap=null),(e.selectedMap||(e.selectedMap={}))[t]=!0)},e.prototype.unSelect=function(t){var e=this.option.selectedMap;e&&(e[t]=!1)},e.prototype.toggleSelected=function(t){this[this.isSelected(t)?"unSelect":"select"](t)},e.prototype.isSelected=function(t){var e=this.option.selectedMap;return!(!e||!e[t])},e.type="geo",e.layoutMode="box",e.defaultOption={zlevel:0,z:0,show:!0,left:"center",top:"center",aspectScale:null,silent:!1,map:"",boundingCoords:null,center:null,zoom:1,scaleLimit:null,label:{show:!1,color:"#000000"},itemStyle:{borderWidth:.5,borderColor:"#444444"},emphasis:{label:{show:!0,color:"rgb(100,0,0)"},itemStyle:{color:"rgba(255,215,0,0.8)"}},select:{label:{show:!0,color:"rgb(100,0,0)"},itemStyle:{color:"rgba(255,215,0,0.8)"}},regions:[]},e}(Wc);function _I(t,e,n){var i=t.getZoom(),r=t.getCenter(),o=e.zoom,a=t.dataToPoint(r);if(null!=e.dx&&null!=e.dy&&(a[0]-=e.dx,a[1]-=e.dy,t.setCenter(t.pointToData(a))),null!=o){if(n){var s=n.min||0,l=n.max||1/0;o=Math.max(Math.min(i*o,l),s)/i}t.scaleX*=o,t.scaleY*=o;var u=(e.originX-t.x)*(o-1),h=(e.originY-t.y)*(o-1);t.x-=u,t.y-=h,t.updateTransform(),t.setCenter(t.pointToData(a)),t.setZoom(o*i)}return{center:t.getCenter(),zoom:t.getZoom()}}var xI=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.focusBlurEnabled=!0,n}return n(e,t),e.prototype.init=function(t,e){var n=new tI(e);this._mapDraw=n,this.group.add(n.group),this._api=e},e.prototype.render=function(t,e,n,i){var r=this._mapDraw;t.get("show")?r.draw(t,e,n,this,i):this._mapDraw.group.removeAll(),r.group.on("click",this._handleRegionClick,this),r.group.silent=t.get("silent"),this._model=t,this.updateSelectStatus(t,e,n)},e.prototype._handleRegionClick=function(t){var e;ey(t.target,(function(t){return null!=(e=vs(t).eventData)}),!0),e&&this._api.dispatchAction({type:"geoToggleSelect",geoId:this._model.id,name:e.name})},e.prototype.updateSelectStatus=function(t,e,n){var i=this;this._mapDraw.group.traverse((function(t){var e=vs(t).eventData;if(e)return i._model.isSelected(e.name)?n.enterSelect(t):n.leaveSelect(t),!0}))},e.prototype.findHighDownDispatchers=function(t){return this._mapDraw&&this._mapDraw.findHighDownDispatchers(t,this._model)},e.prototype.dispose=function(){this._mapDraw&&this._mapDraw.remove()},e.type="geo",e}(xf);function bI(t){function e(e,n){n.update="geo:updateSelectStatus",t.registerAction(n,(function(t,n){var i={},r=[];return n.eachComponent({mainType:"geo",query:t},(function(n){n[e](t.name),P(n.coordinateSystem.regions,(function(t){i[t.name]=n.isSelected(t.name)||!1}));var o=[];P(i,(function(t,e){i[e]&&o.push(e)})),r.push({geoIndex:n.componentIndex,name:o})})),{selected:i,allSelected:r,name:t.name}}))}t.registerCoordinateSystem("geo",vI),t.registerComponentModel(mI),t.registerComponentView(xI),e("toggleSelected",{type:"geoToggleSelect",event:"geoselectchanged"}),e("select",{type:"geoSelect",event:"geoselected"}),e("unSelect",{type:"geoUnSelect",event:"geounselected"}),t.registerAction({type:"geoRoam",event:"geoRoam",update:"updateTransform"},(function(t,e){var n=t.componentType||"series";e.eachComponent({mainType:n,query:t},(function(e){var i=e.coordinateSystem;if("geo"===i.type){var r=_I(i,t,e.get("scaleLimit"));e.setCenter&&e.setCenter(r.center),e.setZoom&&e.setZoom(r.zoom),"series"===n&&P(e.seriesGroup,(function(t){t.setCenter(r.center),t.setZoom(r.zoom)}))}}))}))}function wI(t,e){var n=t.isExpand?t.children:[],i=t.parentNode.children,r=t.hierNode.i?i[t.hierNode.i-1]:null;if(n.length){!function(t){var e=t.children,n=e.length,i=0,r=0;for(;--n>=0;){var o=e[n];o.hierNode.prelim+=i,o.hierNode.modifier+=i,r+=o.hierNode.change,i+=o.hierNode.shift+r}}(t);var o=(n[0].hierNode.prelim+n[n.length-1].hierNode.prelim)/2;r?(t.hierNode.prelim=r.hierNode.prelim+e(t,r),t.hierNode.modifier=t.hierNode.prelim-o):t.hierNode.prelim=o}else r&&(t.hierNode.prelim=r.hierNode.prelim+e(t,r));t.parentNode.hierNode.defaultAncestor=function(t,e,n,i){if(e){for(var r=t,o=t,a=o.parentNode.children[0],s=e,l=r.hierNode.modifier,u=o.hierNode.modifier,h=a.hierNode.modifier,c=s.hierNode.modifier;s=TI(s),o=CI(o),s&&o;){r=TI(r),a=CI(a),r.hierNode.ancestor=t;var p=s.hierNode.prelim+c-o.hierNode.prelim-u+i(s,o);p>0&&(DI(AI(s,t,n),t,p),u+=p,l+=p),c+=s.hierNode.modifier,u+=o.hierNode.modifier,l+=r.hierNode.modifier,h+=a.hierNode.modifier}s&&!TI(r)&&(r.hierNode.thread=s,r.hierNode.modifier+=c-l),o&&!CI(a)&&(a.hierNode.thread=o,a.hierNode.modifier+=u-h,n=t)}return n}(t,r,t.parentNode.hierNode.defaultAncestor||i[0],e)}function SI(t){var e=t.hierNode.prelim+t.parentNode.hierNode.modifier;t.setLayout({x:e},!0),t.hierNode.modifier+=t.parentNode.hierNode.modifier}function MI(t){return arguments.length?t:LI}function II(t,e){return t-=Math.PI/2,{x:e*Math.cos(t),y:e*Math.sin(t)}}function TI(t){var e=t.children;return e.length&&t.isExpand?e[e.length-1]:t.hierNode.thread}function CI(t){var e=t.children;return e.length&&t.isExpand?e[0]:t.hierNode.thread}function AI(t,e,n){return t.hierNode.ancestor.parentNode===e.parentNode?t.hierNode.ancestor:n}function DI(t,e,n){var i=n/(e.hierNode.i-t.hierNode.i);e.hierNode.change-=i,e.hierNode.shift+=n,e.hierNode.modifier+=n,e.hierNode.prelim+=n,t.hierNode.change+=i}function LI(t,e){return t.parentNode===e.parentNode?1:2}var kI=function(){this.parentPoint=[],this.childPoints=[]},PI=function(t){function e(e){return t.call(this,e)||this}return n(e,t),e.prototype.getDefaultStyle=function(){return{stroke:"#000000",fill:null}},e.prototype.getDefaultShape=function(){return new kI},e.prototype.buildPath=function(t,e){var n=e.childPoints,i=n.length,r=e.parentPoint,o=n[0],a=n[i-1];if(1===i)return t.moveTo(r[0],r[1]),void t.lineTo(o[0],o[1]);var s=e.orient,l="TB"===s||"BT"===s?0:1,u=1-l,h=Zi(e.forkPosition,1),c=[];c[l]=r[l],c[u]=r[u]+(a[u]-r[u])*h,t.moveTo(r[0],r[1]),t.lineTo(c[0],c[1]),t.moveTo(o[0],o[1]),c[l]=o[l],t.lineTo(c[0],c[1]),c[l]=a[l],t.lineTo(c[0],c[1]),t.lineTo(a[0],a[1]);for(var p=1;p<i-1;p++){var d=n[p];t.moveTo(d[0],d[1]),c[l]=d[l],t.lineTo(c[0],c[1])}},e}(ja),OI=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n._mainGroup=new zi,n}return n(e,t),e.prototype.init=function(t,e){this._controller=new FM(e.getZr()),this._controllerHost={target:this.group},this.group.add(this._mainGroup)},e.prototype.render=function(t,e,n){var i=t.getData(),r=t.layoutInfo,o=this._mainGroup;"radial"===t.get("layout")?(o.x=r.x+r.width/2,o.y=r.y+r.height/2):(o.x=r.x,o.y=r.y),this._updateViewCoordSys(t),this._updateController(t,e,n);var a=this._data;i.diff(a).add((function(e){RI(i,e)&&NI(i,e,null,o,t)})).update((function(e,n){var r=a.getItemGraphicEl(n);RI(i,e)?NI(i,e,r,o,t):r&&EI(a,n,r,o,t)})).remove((function(e){var n=a.getItemGraphicEl(e);n&&EI(a,e,n,o,t)})).execute(),this._nodeScaleRatio=t.get("nodeScaleRatio"),this._updateNodeAndLinkScale(t),!0===t.get("expandAndCollapse")&&i.eachItemGraphicEl((function(e,i){e.off("click").on("click",(function(){n.dispatchAction({type:"treeExpandAndCollapse",seriesId:t.id,dataIndex:i})}))})),this._data=i},e.prototype._updateViewCoordSys=function(t){var e=t.getData(),n=[];e.each((function(t){var i=e.getItemLayout(t);!i||isNaN(i.x)||isNaN(i.y)||n.push([+i.x,+i.y])}));var i=[],r=[];na(n,i,r);var o=this._min,a=this._max;r[0]-i[0]==0&&(i[0]=o?o[0]:i[0]-1,r[0]=a?a[0]:r[0]+1),r[1]-i[1]==0&&(i[1]=o?o[1]:i[1]-1,r[1]=a?a[1]:r[1]+1);var s=t.coordinateSystem=new cI;s.zoomLimit=t.get("scaleLimit"),s.setBoundingRect(i[0],i[1],r[0]-i[0],r[1]-i[1]),s.setCenter(t.get("center")),s.setZoom(t.get("zoom")),this.group.attr({x:s.x,y:s.y,scaleX:s.scaleX,scaleY:s.scaleY}),this._min=i,this._max=r},e.prototype._updateController=function(t,e,n){var i=this,r=this._controller,o=this._controllerHost,a=this.group;r.setPointerChecker((function(e,i,r){var o=a.getBoundingRect();return o.applyTransform(a.transform),o.contain(i,r)&&!ZM(e,n,t)})),r.enable(t.get("roam")),o.zoomLimit=t.get("scaleLimit"),o.zoom=t.coordinateSystem.getZoom(),r.off("pan").off("zoom").on("pan",(function(e){UM(o,e.dx,e.dy),n.dispatchAction({seriesId:t.id,type:"treeRoam",dx:e.dx,dy:e.dy})})).on("zoom",(function(e){YM(o,e.scale,e.originX,e.originY),n.dispatchAction({seriesId:t.id,type:"treeRoam",zoom:e.scale,originX:e.originX,originY:e.originY}),i._updateNodeAndLinkScale(t),n.updateLabelLayout()}))},e.prototype._updateNodeAndLinkScale=function(t){var e=t.getData(),n=this._getNodeGlobalScale(t);e.eachItemGraphicEl((function(t,e){t.setSymbolScale(n)}))},e.prototype._getNodeGlobalScale=function(t){var e=t.coordinateSystem;if("view"!==e.type)return 1;var n=this._nodeScaleRatio,i=e.scaleX||1;return((e.getZoom()-1)*n+1)/i},e.prototype.dispose=function(){this._controller&&this._controller.dispose(),this._controllerHost=null},e.prototype.remove=function(){this._mainGroup.removeAll(),this._data=null},e.type="tree",e}(Mf);function RI(t,e){var n=t.getItemLayout(e);return n&&!isNaN(n.x)&&!isNaN(n.y)}function NI(t,e,n,i,r){var o=!n,a=t.tree.getNodeByDataIndex(e),s=a.getModel(),l=a.getVisual("style").fill,u=!1===a.isExpand&&0!==a.children.length?l:"#ffffff",h=t.tree.root,c=a.parentNode===h?a:a.parentNode||a,p=t.getItemGraphicEl(c.dataIndex),d=c.getLayout(),f=p?{x:p.__oldX,y:p.__oldY,rawX:p.__radialOldRawX,rawY:p.__radialOldRawY}:d,g=a.getLayout();o?((n=new hw(t,e,null,{symbolInnerColor:u,useNameLabel:!0})).x=f.x,n.y=f.y):n.updateData(t,e,null,{symbolInnerColor:u,useNameLabel:!0}),n.__radialOldRawX=n.__radialRawX,n.__radialOldRawY=n.__radialRawY,n.__radialRawX=g.rawX,n.__radialRawY=g.rawY,i.add(n),t.setItemGraphicEl(e,n),n.__oldX=n.x,n.__oldY=n.y,Fu(n,{x:g.x,y:g.y},r);var y=n.getSymbolPath();if("radial"===r.get("layout")){var v=h.children[0],m=v.getLayout(),_=v.children.length,x=void 0,b=void 0;if(g.x===m.x&&!0===a.isExpand){var w={x:(v.children[0].getLayout().x+v.children[_-1].getLayout().x)/2,y:(v.children[0].getLayout().y+v.children[_-1].getLayout().y)/2};(x=Math.atan2(w.y-m.y,w.x-m.x))<0&&(x=2*Math.PI+x),(b=w.x<m.x)&&(x-=Math.PI)}else(x=Math.atan2(g.y-m.y,g.x-m.x))<0&&(x=2*Math.PI+x),0===a.children.length||0!==a.children.length&&!1===a.isExpand?(b=g.x<m.x)&&(x-=Math.PI):(b=g.x>m.x)||(x-=Math.PI);var S=b?"left":"right",M=s.getModel("label"),I=M.get("rotate"),C=I*(Math.PI/180),A=y.getTextContent();A&&(y.setTextConfig({position:M.get("position")||S,rotation:null==I?-x:C,origin:"center"}),A.setStyle("verticalAlign","middle"))}var D=s.get(["emphasis","focus"]),L="ancestor"===D?a.getAncestorsIndices():"descendant"===D?a.getDescendantIndices():null;L&&(vs(n).focus=L),function(t,e,n,i,r,o,a,s){var l=e.getModel(),u=t.get("edgeShape"),h=t.get("layout"),c=t.getOrient(),p=t.get(["lineStyle","curveness"]),d=t.get("edgeForkPosition"),f=l.getModel("lineStyle").getLineStyle(),g=i.__edge;if("curve"===u)e.parentNode&&e.parentNode!==n&&(g||(g=i.__edge=new cu({shape:zI(h,c,p,r,r)})),Fu(g,{shape:zI(h,c,p,o,a)},t));else if("polyline"===u)if("orthogonal"===h){if(e!==n&&e.children&&0!==e.children.length&&!0===e.isExpand){for(var y=e.children,v=[],m=0;m<y.length;m++){var _=y[m].getLayout();v.push([_.x,_.y])}g||(g=i.__edge=new PI({shape:{parentPoint:[a.x,a.y],childPoints:[[a.x,a.y]],orient:c,forkPosition:d}})),Fu(g,{shape:{parentPoint:[a.x,a.y],childPoints:v}},t)}}else 0;g&&(g.useStyle(T({strokeNoScale:!0,fill:null},f)),ul(g,l,"lineStyle"),Ws(g),s.add(g))}(r,a,h,n,f,d,g,i),n.__edge&&(n.onHoverStateChange=function(e){if("blur"!==e){var i=a.parentNode&&t.getItemGraphicEl(a.parentNode.dataIndex);i&&1===i.hoverState||Gs(n.__edge,e)}})}function EI(t,e,n,i,r){for(var o,a=t.tree.getNodeByDataIndex(e),s=t.tree.root,l=a.parentNode===s?a:a.parentNode||a;null==(o=l.getLayout());)l=l.parentNode===s?l:l.parentNode||l;var u={duration:r.get("animationDurationUpdate"),easing:r.get("animationEasingUpdate")};Hu(n,{x:o.x+1,y:o.y+1},r,{cb:function(){i.remove(n),t.setItemGraphicEl(e,null)},removeOpt:u}),n.fadeOut(null,{fadeLabel:!0,animation:u});var h=t.getItemGraphicEl(l.dataIndex).__edge,c=n.__edge||(!1===l.isExpand||1===l.children.length?h:void 0),p=r.get("edgeShape"),d=r.get("layout"),f=r.get("orient"),g=r.get(["lineStyle","curveness"]);c&&("curve"===p?Hu(c,{shape:zI(d,f,g,o,o),style:{opacity:0}},r,{cb:function(){i.remove(c)},removeOpt:u}):"polyline"===p&&"orthogonal"===r.get("layout")&&Hu(c,{shape:{parentPoint:[o.x,o.y],childPoints:[[o.x,o.y]]},style:{opacity:0}},r,{cb:function(){i.remove(c)},removeOpt:u}))}function zI(t,e,n,i,r){var o,a,s,l,u,h,c,p;if("radial"===t){u=i.rawX,c=i.rawY,h=r.rawX,p=r.rawY;var d=II(u,c),f=II(u,c+(p-c)*n),g=II(h,p+(c-p)*n),y=II(h,p);return{x1:d.x||0,y1:d.y||0,x2:y.x||0,y2:y.y||0,cpx1:f.x||0,cpy1:f.y||0,cpx2:g.x||0,cpy2:g.y||0}}return u=i.x,c=i.y,h=r.x,p=r.y,"LR"!==e&&"RL"!==e||(o=u+(h-u)*n,a=c,s=h+(u-h)*n,l=p),"TB"!==e&&"BT"!==e||(o=u,a=c+(p-c)*n,s=h,l=p+(c-p)*n),{x1:u,y1:c,x2:h,y2:p,cpx1:o,cpy1:a,cpx2:s,cpy2:l}}var BI=Lr();function VI(t){var e=t.mainData,n=t.datas;n||(n={main:e},t.datasAttr={main:"data"}),t.datas=t.mainData=null,YI(e,n,t),P(n,(function(n){P(e.TRANSFERABLE_METHODS,(function(e){n.wrapMethod(e,V(FI,t))}))})),e.wrapMethod("cloneShallow",V(HI,t)),P(e.CHANGABLE_METHODS,(function(n){e.wrapMethod(n,V(GI,t))})),rt(n[e.dataType]===e)}function FI(t,e){if(BI(i=this).mainData===i){var n=I({},BI(this).datas);n[this.dataType]=e,YI(e,n,t)}else XI(e,this.dataType,BI(this).mainData,t);var i;return e}function GI(t,e){return t.struct&&t.struct.update(),e}function HI(t,e){return P(BI(e).datas,(function(n,i){n!==e&&XI(n.cloneShallow(),i,e,t)})),e}function WI(t){var e=BI(this).mainData;return null==t||null==e?e:BI(e).datas[t]}function UI(){var t=BI(this).mainData;return null==t?[{data:t}]:O(z(BI(t).datas),(function(e){return{type:e,data:BI(t).datas[e]}}))}function YI(t,e,n){BI(t).datas={},P(e,(function(e,i){XI(e,i,t,n)}))}function XI(t,e,n,i){BI(n).datas[e]=t,BI(t).mainData=n,t.dataType=e,i.struct&&(t[i.structAttr]=i.struct,i.struct[i.datasAttr[e]]=t),t.getLinkedData=WI,t.getLinkedDataAll=UI}var ZI=function(){function t(t,e){this.depth=0,this.height=0,this.dataIndex=-1,this.children=[],this.viewChildren=[],this.isExpand=!1,this.name=t||"",this.hostTree=e}return t.prototype.isRemoved=function(){return this.dataIndex<0},t.prototype.eachNode=function(t,e,n){"function"==typeof t&&(n=e,e=t,t=null),H(t=t||{})&&(t={order:t});var i,r=t.order||"preorder",o=this[t.attr||"children"];"preorder"===r&&(i=e.call(n,this));for(var a=0;!i&&a<o.length;a++)o[a].eachNode(t,e,n);"postorder"===r&&e.call(n,this)},t.prototype.updateDepthAndHeight=function(t){var e=0;this.depth=t;for(var n=0;n<this.children.length;n++){var i=this.children[n];i.updateDepthAndHeight(t+1),i.height>e&&(e=i.height)}this.height=e+1},t.prototype.getNodeById=function(t){if(this.getId()===t)return this;for(var e=0,n=this.children,i=n.length;e<i;e++){var r=n[e].getNodeById(t);if(r)return r}},t.prototype.contains=function(t){if(t===this)return!0;for(var e=0,n=this.children,i=n.length;e<i;e++){var r=n[e].contains(t);if(r)return r}},t.prototype.getAncestors=function(t){for(var e=[],n=t?this:this.parentNode;n;)e.push(n),n=n.parentNode;return e.reverse(),e},t.prototype.getAncestorsIndices=function(){for(var t=[],e=this;e;)t.push(e.dataIndex),e=e.parentNode;return t.reverse(),t},t.prototype.getDescendantIndices=function(){var t=[];return this.eachNode((function(e){t.push(e.dataIndex)})),t},t.prototype.getValue=function(t){var e=this.hostTree.data;return e.get(e.getDimension(t||"value"),this.dataIndex)},t.prototype.setLayout=function(t,e){this.dataIndex>=0&&this.hostTree.data.setItemLayout(this.dataIndex,t,e)},t.prototype.getLayout=function(){return this.hostTree.data.getItemLayout(this.dataIndex)},t.prototype.getModel=function(t){if(!(this.dataIndex<0))return this.hostTree.data.getItemModel(this.dataIndex).getModel(t)},t.prototype.getLevelModel=function(){return(this.hostTree.levelModels||[])[this.depth]},t.prototype.setVisual=function(t,e){this.dataIndex>=0&&this.hostTree.data.setItemVisual(this.dataIndex,t,e)},t.prototype.getVisual=function(t){return this.hostTree.data.getItemVisual(this.dataIndex,t)},t.prototype.getRawIndex=function(){return this.hostTree.data.getRawIndex(this.dataIndex)},t.prototype.getId=function(){return this.hostTree.data.getId(this.dataIndex)},t.prototype.isAncestorOf=function(t){for(var e=t.parentNode;e;){if(e===this)return!0;e=e.parentNode}return!1},t.prototype.isDescendantOf=function(t){return t!==this&&t.isAncestorOf(this)},t}(),jI=function(){function t(t){this.type="tree",this._nodes=[],this.hostModel=t}return t.prototype.eachNode=function(t,e,n){this.root.eachNode(t,e,n)},t.prototype.getNodeByDataIndex=function(t){var e=this.data.getRawIndex(t);return this._nodes[e]},t.prototype.getNodeById=function(t){return this.root.getNodeById(t)},t.prototype.update=function(){for(var t=this.data,e=this._nodes,n=0,i=e.length;n<i;n++)e[n].dataIndex=-1;for(n=0,i=t.count();n<i;n++)e[t.getRawIndex(n)].dataIndex=n},t.prototype.clearLayouts=function(){this.data.clearItemLayouts()},t.createTree=function(e,n,i){var r=new t(n),o=[],a=1;!function t(e,n){var i=e.value;a=Math.max(a,F(i)?i.length:1),o.push(e);var s=new ZI(Tr(e.name,""),r);n?function(t,e){var n=e.children;if(t.parentNode===e)return;n.push(t),t.parentNode=e}(s,n):r.root=s,r._nodes.push(s);var l=e.children;if(l)for(var u=0;u<l.length;u++)t(l[u],s)}(e),r.root.updateDepthAndHeight(0);var s=D_(o,{coordDimensions:["value"],dimensionsCount:a}),l=new T_(s,n);return l.initData(o),i&&i(l),VI({mainData:l,struct:r,structAttr:"tree"}),r.update(),r},t}();var qI=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.hasSymbolVisual=!0,e.ignoreStyleOnData=!0,e}return n(e,t),e.prototype.getInitialData=function(t){var e={name:t.name,children:t.data},n=t.leaves||{},i=new kh(n,this,this.ecModel),r=jI.createTree(e,this,(function(t){t.wrapMethod("getItemModel",(function(t,e){var n=r.getNodeByDataIndex(e);return n.children.length&&n.isExpand||(t.parentModel=i),t}))}));var o=0;r.eachNode("preorder",(function(t){t.depth>o&&(o=t.depth)}));var a=t.expandAndCollapse&&t.initialTreeDepth>=0?t.initialTreeDepth:o;return r.root.eachNode("preorder",(function(t){var e=t.hostTree.data.getRawDataItem(t.dataIndex);t.isExpand=e&&null!=e.collapsed?!e.collapsed:t.depth<=a})),r.data},e.prototype.getOrient=function(){var t=this.get("orient");return"horizontal"===t?t="LR":"vertical"===t&&(t="TB"),t},e.prototype.setZoom=function(t){this.option.zoom=t},e.prototype.setCenter=function(t){this.option.center=t},e.prototype.formatTooltip=function(t,e,n){for(var i=this.getData().tree,r=i.root.children[0],o=i.getNodeByDataIndex(t),a=o.getValue(),s=o.name;o&&o!==r;)s=o.parentNode.name+"."+s,o=o.parentNode;return Jd("nameValue",{name:s,value:a,noValue:isNaN(a)||null==a})},e.type="series.tree",e.layoutMode="box",e.defaultOption={zlevel:0,z:2,coordinateSystem:"view",left:"12%",top:"12%",right:"12%",bottom:"12%",layout:"orthogonal",edgeShape:"curve",edgeForkPosition:"50%",roam:!1,nodeScaleRatio:.4,center:null,zoom:1,orient:"LR",symbol:"emptyCircle",symbolSize:7,expandAndCollapse:!0,initialTreeDepth:2,lineStyle:{color:"#cccccc",width:1.5,curveness:.5},itemStyle:{color:"lightsteelblue",borderWidth:1.5},label:{show:!0},animationEasing:"linear",animationDuration:700,animationDurationUpdate:500},e}(pf);function KI(t,e){for(var n,i=[t];n=i.pop();)if(e(n),n.isExpand){var r=n.children;if(r.length)for(var o=r.length-1;o>=0;o--)i.push(r[o])}}function $I(t,e){t.eachSeriesByType("tree",(function(t){!function(t,e){var n=function(t,e){return Ec(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}(t,e);t.layoutInfo=n;var i=t.get("layout"),r=0,o=0,a=null;"radial"===i?(r=2*Math.PI,o=Math.min(n.height,n.width)/2,a=MI((function(t,e){return(t.parentNode===e.parentNode?1:2)/t.depth}))):(r=n.width,o=n.height,a=MI());var s=t.getData().tree.root,l=s.children[0];if(l){!function(t){var e=t;e.hierNode={defaultAncestor:null,ancestor:e,prelim:0,modifier:0,change:0,shift:0,i:0,thread:null};for(var n,i,r=[e];n=r.pop();)if(i=n.children,n.isExpand&&i.length)for(var o=i.length-1;o>=0;o--){var a=i[o];a.hierNode={defaultAncestor:null,ancestor:a,prelim:0,modifier:0,change:0,shift:0,i:o,thread:null},r.push(a)}}(s),function(t,e,n){for(var i,r=[t],o=[];i=r.pop();)if(o.push(i),i.isExpand){var a=i.children;if(a.length)for(var s=0;s<a.length;s++)r.push(a[s])}for(;i=o.pop();)e(i,n)}(l,wI,a),s.hierNode.modifier=-l.hierNode.prelim,KI(l,SI);var u=l,h=l,c=l;KI(l,(function(t){var e=t.getLayout().x;e<u.getLayout().x&&(u=t),e>h.getLayout().x&&(h=t),t.depth>c.depth&&(c=t)}));var p=u===h?1:a(u,h)/2,d=p-u.getLayout().x,f=0,g=0,y=0,v=0;if("radial"===i)f=r/(h.getLayout().x+p+d),g=o/(c.depth-1||1),KI(l,(function(t){y=(t.getLayout().x+d)*f,v=(t.depth-1)*g;var e=II(y,v);t.setLayout({x:e.x,y:e.y,rawX:y,rawY:v},!0)}));else{var m=t.getOrient();"RL"===m||"LR"===m?(g=o/(h.getLayout().x+p+d),f=r/(c.depth-1||1),KI(l,(function(t){v=(t.getLayout().x+d)*g,y="LR"===m?(t.depth-1)*f:r-(t.depth-1)*f,t.setLayout({x:y,y:v},!0)}))):"TB"!==m&&"BT"!==m||(f=r/(h.getLayout().x+p+d),g=o/(c.depth-1||1),KI(l,(function(t){y=(t.getLayout().x+d)*f,v="TB"===m?(t.depth-1)*g:o-(t.depth-1)*g,t.setLayout({x:y,y:v},!0)})))}}}(t,e)}))}function JI(t){t.eachSeriesByType("tree",(function(t){var e=t.getData();e.tree.eachNode((function(t){var n=t.getModel().getModel("itemStyle").getItemStyle();I(e.ensureUniqueItemVisual(t.dataIndex,"style"),n)}))}))}function QI(t,e,n){if(t&&A(e,t.type)>=0){var i=n.getData().tree.root,r=t.targetNode;if("string"==typeof r&&(r=i.getNodeById(r)),r&&i.contains(r))return{node:r};var o=t.targetNodeId;if(null!=o&&(r=i.getNodeById(o)))return{node:r}}}function tT(t){for(var e=[];t;)(t=t.parentNode)&&e.push(t);return e.reverse()}function eT(t,e){return A(tT(t),e)>=0}function nT(t,e){for(var n=[];t;){var i=t.dataIndex;n.push({name:t.name,dataIndex:i,value:e.getRawValue(i)}),t=t.parentNode}return n.reverse(),n}var iT=function(){},rT=["treemapZoomToNode","treemapRender","treemapMove"];function oT(t){var e=t.getData().tree,n={};e.eachNode((function(e){for(var i=e;i&&i.depth>1;)i=i.parentNode;var r=mp(t.ecModel,i.name||i.dataIndex+"",n);e.setVisual("decal",r)}))}var aT=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.preventUsingHoverLayer=!0,n}return n(e,t),e.prototype.getInitialData=function(t,e){var n={name:t.name,children:t.data};sT(n);var i=t.levels||[],r=this.designatedVisualItemStyle={},o=new kh({itemStyle:r},this,e),a=O((i=t.levels=function(t,e){var n,i,r=_r(e.get("color")),o=_r(e.get(["aria","decal","decals"]));if(!r)return;P(t=t||[],(function(t){var e=new kh(t),r=e.get("color"),o=e.get("decal");(e.get(["itemStyle","color"])||r&&"none"!==r)&&(n=!0),(e.get(["itemStyle","decal"])||o&&"none"!==o)&&(i=!0)}));var a=t[0]||(t[0]={});n||(a.color=r.slice());!i&&o&&(a.decal=o.slice());return t}(i,e))||[],(function(t){return new kh(t,o,e)}),this),s=jI.createTree(n,this,(function(t){t.wrapMethod("getItemModel",(function(t,e){var n=s.getNodeByDataIndex(e),i=a[n.depth];return t.parentModel=i||o,t}))}));return s.data},e.prototype.optionUpdated=function(){this.resetViewRoot()},e.prototype.formatTooltip=function(t,e,n){var i=this.getData(),r=this.getRawValue(t);return Jd("nameValue",{name:i.getName(t),value:r})},e.prototype.getDataParams=function(e){var n=t.prototype.getDataParams.apply(this,arguments),i=this.getData().tree.getNodeByDataIndex(e);return n.treePathInfo=nT(i,this),n},e.prototype.setLayoutInfo=function(t){this.layoutInfo=this.layoutInfo||{},I(this.layoutInfo,t)},e.prototype.mapIdToIndex=function(t){var e=this._idIndexMap;e||(e=this._idIndexMap=ht(),this._idIndexMapCount=0);var n=e.get(t);return null==n&&e.set(t,n=this._idIndexMapCount++),n},e.prototype.getViewRoot=function(){return this._viewRoot},e.prototype.resetViewRoot=function(t){t?this._viewRoot=t:t=this._viewRoot;var e=this.getRawData().tree.root;t&&(t===e||e.contains(t))||(this._viewRoot=e)},e.prototype.enableAriaDecal=function(){oT(this)},e.type="series.treemap",e.layoutMode="box",e.defaultOption={progressive:0,left:"center",top:"middle",width:"80%",height:"80%",sort:!0,clipWindow:"origin",squareRatio:.5*(1+Math.sqrt(5)),leafDepth:null,drillDownIcon:"▶",zoomToNodeRatio:.1024,roam:!0,nodeClick:"zoomToNode",animation:!0,animationDurationUpdate:900,animationEasing:"quinticInOut",breadcrumb:{show:!0,height:22,left:"center",top:"bottom",emptyItemWidth:25,itemStyle:{color:"rgba(0,0,0,0.7)",textStyle:{color:"#ffffff"}}},label:{show:!0,distance:0,padding:5,position:"inside",color:"#ffffff",overflow:"truncate"},upperLabel:{show:!1,position:[0,"50%"],height:20,overflow:"truncate",verticalAlign:"middle"},itemStyle:{color:null,colorAlpha:null,colorSaturation:null,borderWidth:0,gapWidth:0,borderColor:"#ffffff",borderColorSaturation:null},emphasis:{upperLabel:{show:!0,position:[0,"50%"],ellipsis:!0,verticalAlign:"middle"}},visualDimension:0,visualMin:null,visualMax:null,color:[],colorAlpha:null,colorSaturation:null,colorMappingBy:"index",visibleMin:10,childrenVisibleMin:null,levels:[]},e}(pf);function sT(t){var e=0;P(t.children,(function(t){sT(t);var n=t.value;F(n)&&(n=n[0]),e+=n}));var n=t.value;F(n)&&(n=n[0]),(null==n||isNaN(n))&&(n=e),n<0&&(n=0),F(t.value)?t.value[0]=n:t.value=n}var lT=function(){function t(t){this.group=new zi,t.add(this.group)}return t.prototype.render=function(t,e,n,i){var r=t.getModel("breadcrumb"),o=this.group;if(o.removeAll(),r.get("show")&&n){var a=r.getModel("itemStyle"),s=a.getModel("textStyle"),l={pos:{left:r.get("left"),right:r.get("right"),top:r.get("top"),bottom:r.get("bottom")},box:{width:e.getWidth(),height:e.getHeight()},emptyItemWidth:r.get("emptyItemWidth"),totalWidth:0,renderList:[]};this._prepare(n,l,s),this._renderContent(t,l,a,s,i),zc(o,l.pos,l.box)}},t.prototype._prepare=function(t,e,n){for(var i=t;i;i=i.parentNode){var r=Tr(i.getModel().get("name"),""),o=n.getTextRect(r),a=Math.max(o.width+16,e.emptyItemWidth);e.totalWidth+=a+8,e.renderList.push({node:i,text:r,width:a})}},t.prototype._renderContent=function(t,e,n,i,r){for(var o,a,s,l,u,h,c,p,d,f=0,g=e.emptyItemWidth,y=t.get(["breadcrumb","height"]),v=(o=e.pos,a=e.box,l=a.width,u=a.height,h=Zi(o.left,l),c=Zi(o.top,u),p=Zi(o.right,l),d=Zi(o.bottom,u),(isNaN(h)||isNaN(parseFloat(o.left)))&&(h=0),(isNaN(p)||isNaN(parseFloat(o.right)))&&(p=l),(isNaN(c)||isNaN(parseFloat(o.top)))&&(c=0),(isNaN(d)||isNaN(parseFloat(o.bottom)))&&(d=u),s=xc(s||0),{width:Math.max(p-h-s[1]-s[3],0),height:Math.max(d-c-s[0]-s[2],0)}),m=e.totalWidth,_=e.renderList,x=_.length-1;x>=0;x--){var b=_[x],w=b.node,S=b.width,M=b.text;m>v.width&&(m-=S-g,S=g,M=null);var I=new nu({shape:{points:uT(f,0,S,y,x===_.length-1,0===x)},style:T(n.getItemStyle(),{lineJoin:"bevel"}),textContent:new us({style:{text:M,fill:i.getTextColor(),font:i.getFont()}}),textConfig:{position:"inside"},z2:1e5,onclick:V(r,w)});I.disableLabelAnimation=!0,this.group.add(I),hT(I,t,w),f+=S+8}},t.prototype.remove=function(){this.group.removeAll()},t}();function uT(t,e,n,i,r,o){var a=[[r?t:t-5,e],[t+n,e],[t+n,e+i],[r?t:t-5,e+i]];return!o&&a.splice(2,0,[t+n+5,e+i/2]),!r&&a.push([t,e+i/2]),a}function hT(t,e,n){vs(t).eventData={componentType:"series",componentSubType:"treemap",componentIndex:e.componentIndex,seriesIndex:e.componentIndex,seriesName:e.name,seriesType:"treemap",selfType:"breadcrumb",nodeData:{dataIndex:n&&n.dataIndex,name:n&&n.name},treePathInfo:n&&nT(n,e)}}var cT=function(){function t(){this._storage=[],this._elExistsMap={}}return t.prototype.add=function(t,e,n,i,r){return!this._elExistsMap[t.id]&&(this._elExistsMap[t.id]=!0,this._storage.push({el:t,target:e,duration:n,delay:i,easing:r}),!0)},t.prototype.finished=function(t){return this._finishedCallback=t,this},t.prototype.start=function(){for(var t=this,e=this._storage.length,n=function(){--e<=0&&(t._storage.length=0,t._elExistsMap={},t._finishedCallback&&t._finishedCallback())},i=0,r=this._storage.length;i<r;i++){var o=this._storage[i];o.el.animateTo(o.target,{duration:o.duration,delay:o.delay,easing:o.easing,setToFinal:!0,done:n,aborted:n})}return this},t}();var pT=zi,dT=as,fT="label",gT="upperLabel",yT=Kr([["fill","color"],["stroke","strokeColor"],["lineWidth","strokeWidth"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]),vT=function(t){var e=yT(t);return e.stroke=e.fill=e.lineWidth=null,e},mT=Lr(),_T=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n._state="ready",n._storage={nodeGroup:[],background:[],content:[]},n}return n(e,t),e.prototype.render=function(t,e,n,i){if(!(A(e.findComponents({mainType:"series",subType:"treemap",query:i}),t)<0)){this.seriesModel=t,this.api=n,this.ecModel=e;var r=QI(i,["treemapZoomToNode","treemapRootToNode"],t),o=i&&i.type,a=t.layoutInfo,s=!this._oldTree,l=this._storage,u="treemapRootToNode"===o&&r&&l?{rootNodeGroup:l.nodeGroup[r.node.getRawIndex()],direction:i.direction}:null,h=this._giveContainerGroup(a),c=this._doRender(h,t,u);s||o&&"treemapZoomToNode"!==o&&"treemapRootToNode"!==o?c.renderFinally():this._doAnimation(h,c,t,u),this._resetController(n),this._renderBreadcrumb(t,n,r)}},e.prototype._giveContainerGroup=function(t){var e=this._containerGroup;return e||(e=this._containerGroup=new pT,this._initEvents(e),this.group.add(e)),e.x=t.x,e.y=t.y,e},e.prototype._doRender=function(t,e,n){var i=e.getData().tree,r=this._oldTree,o={nodeGroup:[],background:[],content:[]},a={nodeGroup:[],background:[],content:[]},s=this._storage,l=[];function u(t,i,r,u){return function(t,e,n,i,r,o,a,s,l,u){if(!a)return;var h=a.getLayout(),c=t.getData(),p=a.getModel();if(c.setItemGraphicEl(a.dataIndex,null),!h||!h.isInView)return;var d=h.width,f=h.height,g=h.borderWidth,y=h.invisible,v=a.getRawIndex(),m=s&&s.getRawIndex(),_=a.viewChildren,x=h.upperHeight,b=_&&_.length,w=p.getModel("itemStyle"),S=p.getModel(["emphasis","itemStyle"]),M=p.getModel(["blur","itemStyle"]),T=p.getModel(["select","itemStyle"]),C=w.get("borderRadius")||0,A=V("nodeGroup",pT);if(!A)return;if(l.add(A),A.x=h.x||0,A.y=h.y||0,A.markRedraw(),mT(A).nodeWidth=d,mT(A).nodeHeight=f,h.isAboveViewRoot)return A;var D=V("background",dT,u,20);D&&R(A,D,b&&h.upperLabelHeight);var L=p.get(["emphasis","focus"]),k=p.get(["emphasis","blurScope"]),P="ancestor"===L?a.getAncestorsIndices():"descendant"===L?a.getDescendantIndices():L;if(b)cl(A)&&hl(A,!1),D&&(hl(D,!0),c.setItemGraphicEl(a.dataIndex,D),al(D,P,k));else{var O=V("content",dT,u,30);O&&N(A,O),D&&cl(D)&&hl(D,!1),hl(A,!0),c.setItemGraphicEl(a.dataIndex,A),al(A,P,k)}return A;function R(e,n,i){var r=vs(n);if(r.dataIndex=a.dataIndex,r.seriesIndex=t.seriesIndex,n.setShape({x:0,y:0,width:d,height:f,r:C}),y)E(n);else{n.invisible=!1;var o=a.getVisual("style"),s=o.stroke,l=vT(w);l.fill=s;var u=yT(S);u.fill=S.get("borderColor");var h=yT(M);h.fill=M.get("borderColor");var c=yT(T);if(c.fill=T.get("borderColor"),i){var p=d-2*g;z(n,s,o.opacity,{x:g,y:0,width:p,height:x})}else n.removeTextContent();n.setStyle(l),n.ensureState("emphasis").style=u,n.ensureState("blur").style=h,n.ensureState("select").style=c,Ws(n)}e.add(n)}function N(e,n){var i=vs(n);i.dataIndex=a.dataIndex,i.seriesIndex=t.seriesIndex;var r=Math.max(d-2*g,0),o=Math.max(f-2*g,0);if(n.culling=!0,n.setShape({x:g,y:g,width:r,height:o,r:C}),y)E(n);else{n.invisible=!1;var s=a.getVisual("style"),l=s.fill,u=vT(w);u.fill=l,u.decal=s.decal;var h=yT(S),c=yT(M),p=yT(T);z(n,l,s.opacity,null),n.setStyle(u),n.ensureState("emphasis").style=h,n.ensureState("blur").style=c,n.ensureState("select").style=p,Ws(n)}e.add(n)}function E(t){!t.invisible&&o.push(t)}function z(e,n,i,r){var o=p.getModel(r?gT:fT),s=Tr(p.get("name"),null),l=o.getShallow("show");lh(e,uh(p,r?gT:fT),{defaultText:l?s:null,inheritColor:n,defaultOpacity:i,labelFetcher:t,labelDataIndex:a.dataIndex});var u=e.getTextContent(),c=u.style,d=it(c.padding||0);r&&(e.setTextConfig({layoutRect:r}),u.disableLabelLayout=!0),u.beforeUpdate=function(){var t=Math.max((r?r.width:e.shape.width)-d[1]-d[3],0),n=Math.max((r?r.height:e.shape.height)-d[0]-d[2],0);c.width===t&&c.height===n||u.setStyle({width:t,height:n})},c.truncateMinChar=2,c.lineOverflow="truncate",B(c,r,h);var f=u.getState("emphasis");B(f?f.style:null,r,h)}function B(e,n,i){var r=e?e.text:null;if(!n&&i.isLeafRoot&&null!=r){var o=t.get("drillDownIcon",!0);e.text=o?o+" "+r:r}}function V(t,i,o,a){var s=null!=m&&n[t][m],l=r[t];return s?(n[t][m]=null,F(l,s)):y||((s=new i)instanceof bo&&(s.z2=function(t,e){return 100*t+e}(o,a)),G(l,s)),e[t][v]=s}function F(t,e){var n=t[v]={};e instanceof pT?(n.oldX=e.x,n.oldY=e.y):n.oldShape=I({},e.shape)}function G(t,e){var n=t[v]={},o=a.parentNode,s=e instanceof zi;if(o&&(!i||"drillDown"===i.direction)){var l=0,u=0,h=r.background[o.getRawIndex()];!i&&h&&h.oldShape&&(l=h.oldShape.width,u=h.oldShape.height),s?(n.oldX=0,n.oldY=u):n.oldShape={x:l,y:u,width:0,height:0}}n.fadein=!s}}(e,a,s,n,o,l,t,i,r,u)}!function t(e,n,i,r,o){r?(n=e,P(e,(function(t,e){!t.isRemoved()&&s(e,e)}))):new Jm(n,e,a,a).add(s).update(s).remove(V(s,null)).execute();function a(t){return t.getId()}function s(a,s){var l=null!=a?e[a]:null,h=null!=s?n[s]:null,c=u(l,h,i,o);c&&t(l&&l.viewChildren||[],h&&h.viewChildren||[],c,r,o+1)}}(i.root?[i.root]:[],r&&r.root?[r.root]:[],t,i===r||!r,0);var h=function(t){var e={nodeGroup:[],background:[],content:[]};return t&&P(t,(function(t,n){var i=e[n];P(t,(function(t){t&&(i.push(t),mT(t).willDelete=!0)}))})),e}(s);return this._oldTree=i,this._storage=a,{lastsForAnimation:o,willDeleteEls:h,renderFinally:function(){P(h,(function(t){P(t,(function(t){t.parent&&t.parent.remove(t)}))})),P(l,(function(t){t.invisible=!0,t.dirty()}))}}},e.prototype._doAnimation=function(t,e,n,i){if(n.get("animation")){var r=n.get("animationDurationUpdate"),o=n.get("animationEasing"),a=(G(r)?0:r)||0,s=(G(o)?null:o)||"cubicOut",l=new cT;P(e.willDeleteEls,(function(t,e){P(t,(function(t,n){if(!t.invisible){var r,o=t.parent,u=mT(o);if(i&&"drillDown"===i.direction)r=o===i.rootNodeGroup?{shape:{x:0,y:0,width:u.nodeWidth,height:u.nodeHeight},style:{opacity:0}}:{style:{opacity:0}};else{var h=0,c=0;u.willDelete||(h=u.nodeWidth/2,c=u.nodeHeight/2),r="nodeGroup"===e?{x:h,y:c,style:{opacity:0}}:{shape:{x:h,y:c,width:0,height:0},style:{opacity:0}}}r&&l.add(t,r,a,0,s)}}))})),P(this._storage,(function(t,n){P(t,(function(t,i){var r=e.lastsForAnimation[n][i],o={};r&&(t instanceof zi?null!=r.oldX&&(o.x=t.x,o.y=t.y,t.x=r.oldX,t.y=r.oldY):(r.oldShape&&(o.shape=I({},t.shape),t.setShape(r.oldShape)),r.fadein?(t.setStyle("opacity",0),o.style={opacity:1}):1!==t.style.opacity&&(o.style={opacity:1})),l.add(t,o,a,0,s))}))}),this),this._state="animating",l.finished(B((function(){this._state="ready",e.renderFinally()}),this)).start()}},e.prototype._resetController=function(t){var e=this._controller;e||((e=this._controller=new FM(t.getZr())).enable(this.seriesModel.get("roam")),e.on("pan",B(this._onPan,this)),e.on("zoom",B(this._onZoom,this)));var n=new Rn(0,0,t.getWidth(),t.getHeight());e.setPointerChecker((function(t,e,i){return n.contain(e,i)}))},e.prototype._clearController=function(){var t=this._controller;t&&(t.dispose(),t=null)},e.prototype._onPan=function(t){if("animating"!==this._state&&(Math.abs(t.dx)>3||Math.abs(t.dy)>3)){var e=this.seriesModel.getData().tree.root;if(!e)return;var n=e.getLayout();if(!n)return;this.api.dispatchAction({type:"treemapMove",from:this.uid,seriesId:this.seriesModel.id,rootRect:{x:n.x+t.dx,y:n.y+t.dy,width:n.width,height:n.height}})}},e.prototype._onZoom=function(t){var e=t.originX,n=t.originY;if("animating"!==this._state){var i=this.seriesModel.getData().tree.root;if(!i)return;var r=i.getLayout();if(!r)return;var o=new Rn(r.x,r.y,r.width,r.height),a=this.seriesModel.layoutInfo,s=[1,0,0,1,0,0];me(s,s,[-(e-=a.x),-(n-=a.y)]),xe(s,s,[t.scale,t.scale]),me(s,s,[e,n]),o.applyTransform(s),this.api.dispatchAction({type:"treemapRender",from:this.uid,seriesId:this.seriesModel.id,rootRect:{x:o.x,y:o.y,width:o.width,height:o.height}})}},e.prototype._initEvents=function(t){var e=this;t.on("click",(function(t){if("ready"===e._state){var n=e.seriesModel.get("nodeClick",!0);if(n){var i=e.findTarget(t.offsetX,t.offsetY);if(i){var r=i.node;if(r.getLayout().isLeafRoot)e._rootToNode(i);else if("zoomToNode"===n)e._zoomToNode(i);else if("link"===n){var o=r.hostTree.data.getItemModel(r.dataIndex),a=o.get("link",!0),s=o.get("target",!0)||"blank";a&&Lc(a,s)}}}}}),this)},e.prototype._renderBreadcrumb=function(t,e,n){var i=this;n||(n=null!=t.get("leafDepth",!0)?{node:t.getViewRoot()}:this.findTarget(e.getWidth()/2,e.getHeight()/2))||(n={node:t.getData().tree.root}),(this._breadcrumb||(this._breadcrumb=new lT(this.group))).render(t,e,n.node,(function(e){"animating"!==i._state&&(eT(t.getViewRoot(),e)?i._rootToNode({node:e}):i._zoomToNode({node:e}))}))},e.prototype.remove=function(){this._clearController(),this._containerGroup&&this._containerGroup.removeAll(),this._storage={nodeGroup:[],background:[],content:[]},this._state="ready",this._breadcrumb&&this._breadcrumb.remove()},e.prototype.dispose=function(){this._clearController()},e.prototype._zoomToNode=function(t){this.api.dispatchAction({type:"treemapZoomToNode",from:this.uid,seriesId:this.seriesModel.id,targetNode:t.node})},e.prototype._rootToNode=function(t){this.api.dispatchAction({type:"treemapRootToNode",from:this.uid,seriesId:this.seriesModel.id,targetNode:t.node})},e.prototype.findTarget=function(t,e){var n;return this.seriesModel.getViewRoot().eachNode({attr:"viewChildren",order:"preorder"},(function(i){var r=this._storage.background[i.getRawIndex()];if(r){var o=r.transformCoordToLocal(t,e),a=r.shape;if(!(a.x<=o[0]&&o[0]<=a.x+a.width&&a.y<=o[1]&&o[1]<=a.y+a.height))return!1;n={node:i,offsetX:o[0],offsetY:o[1]}}}),this),n},e.type="treemap",e}(Mf);var xT=P,bT=Y,wT=-1,ST=function(){function t(e){var n=e.mappingMethod,i=e.type,r=this.option=w(e);this.type=i,this.mappingMethod=n,this._normalizeData=OT[n];var o=t.visualHandlers[i];this.applyVisual=o.applyVisual,this.getColorMapper=o.getColorMapper,this._normalizedToVisual=o._normalizedToVisual[n],"piecewise"===n?(MT(r),function(t){var e=t.pieceList;t.hasSpecialVisual=!1,P(e,(function(e,n){e.originIndex=n,null!=e.visual&&(t.hasSpecialVisual=!0)}))}(r)):"category"===n?r.categories?function(t){var e=t.categories,n=t.categoryMap={},i=t.visual;if(xT(e,(function(t,e){n[t]=e})),!F(i)){var r=[];Y(i)?xT(i,(function(t,e){var i=n[e];r[null!=i?i:wT]=t})):r[-1]=i,i=PT(t,r)}for(var o=e.length-1;o>=0;o--)null==i[o]&&(delete n[e[o]],e.pop())}(r):MT(r,!0):(rt("linear"!==n||r.dataExtent),MT(r))}return t.prototype.mapValueToVisual=function(t){var e=this._normalizeData(t);return this._normalizedToVisual(e,t)},t.prototype.getNormalizer=function(){return B(this._normalizeData,this)},t.listVisualTypes=function(){return z(t.visualHandlers)},t.isValidType=function(e){return t.visualHandlers.hasOwnProperty(e)},t.eachVisual=function(t,e,n){Y(t)?P(t,e,n):e.call(n,t)},t.mapVisual=function(e,n,i){var r,o=F(e)?[]:Y(e)?{}:(r=!0,null);return t.eachVisual(e,(function(t,e){var a=n.call(i,t,e);r?o=a:o[e]=a})),o},t.retrieveVisuals=function(e){var n,i={};return e&&xT(t.visualHandlers,(function(t,r){e.hasOwnProperty(r)&&(i[r]=e[r],n=!0)})),n?i:null},t.prepareVisualTypes=function(t){if(F(t))t=t.slice();else{if(!bT(t))return[];var e=[];xT(t,(function(t,n){e.push(n)})),t=e}return t.sort((function(t,e){return"color"===e&&"color"!==t&&0===t.indexOf("color")?1:-1})),t},t.dependsOn=function(t,e){return"color"===e?!(!t||0!==t.indexOf(e)):t===e},t.findPieceIndex=function(t,e,n){for(var i,r=1/0,o=0,a=e.length;o<a;o++){var s=e[o].value;if(null!=s){if(s===t||"string"==typeof s&&s===t+"")return o;n&&c(s,o)}}for(o=0,a=e.length;o<a;o++){var l=e[o],u=l.interval,h=l.close;if(u){if(u[0]===-1/0){if(RT(h[1],t,u[1]))return o}else if(u[1]===1/0){if(RT(h[0],u[0],t))return o}else if(RT(h[0],u[0],t)&&RT(h[1],t,u[1]))return o;n&&c(u[0],o),n&&c(u[1],o)}}if(n)return t===1/0?e.length-1:t===-1/0?0:i;function c(e,n){var o=Math.abs(e-t);o<r&&(r=o,i=n)}},t.visualHandlers={color:{applyVisual:CT("color"),getColorMapper:function(){var t=this.option;return B("category"===t.mappingMethod?function(t,e){return!e&&(t=this._normalizeData(t)),AT.call(this,t)}:function(e,n,i){var r=!!i;return!n&&(e=this._normalizeData(e)),i=Qe(e,t.parsedVisual,i),r?i:an(i,"rgba")},this)},_normalizedToVisual:{linear:function(t){return an(Qe(t,this.option.parsedVisual),"rgba")},category:AT,piecewise:function(t,e){var n=kT.call(this,e);return null==n&&(n=an(Qe(t,this.option.parsedVisual),"rgba")),n},fixed:DT}},colorHue:IT((function(t,e){return rn(t,e)})),colorSaturation:IT((function(t,e){return rn(t,null,e)})),colorLightness:IT((function(t,e){return rn(t,null,null,e)})),colorAlpha:IT((function(t,e){return on(t,e)})),decal:{applyVisual:CT("decal"),_normalizedToVisual:{linear:null,category:AT,piecewise:null,fixed:null}},opacity:{applyVisual:CT("opacity"),_normalizedToVisual:LT([0,1])},liftZ:{applyVisual:CT("liftZ"),_normalizedToVisual:{linear:DT,category:DT,piecewise:DT,fixed:DT}},symbol:{applyVisual:function(t,e,n){n("symbol",this.mapValueToVisual(t))},_normalizedToVisual:{linear:TT,category:AT,piecewise:function(t,e){var n=kT.call(this,e);return null==n&&(n=TT.call(this,t)),n},fixed:DT}},symbolSize:{applyVisual:CT("symbolSize"),_normalizedToVisual:LT([0,1])}},t}();function MT(t,e){var n=t.visual,i=[];Y(n)?xT(n,(function(t){i.push(t)})):null!=n&&i.push(n);e||1!==i.length||{color:1,symbol:1}.hasOwnProperty(t.type)||(i[1]=i[0]),PT(t,i)}function IT(t){return{applyVisual:function(e,n,i){var r=this.mapValueToVisual(e);i("color",t(n("color"),r))},_normalizedToVisual:LT([0,1])}}function TT(t){var e=this.option.visual;return e[Math.round(Xi(t,[0,1],[0,e.length-1],!0))]||{}}function CT(t){return function(e,n,i){i(t,this.mapValueToVisual(e))}}function AT(t){var e=this.option.visual;return e[this.option.loop&&t!==wT?t%e.length:t]}function DT(){return this.option.visual[0]}function LT(t){return{linear:function(e){return Xi(e,t,this.option.visual,!0)},category:AT,piecewise:function(e,n){var i=kT.call(this,n);return null==i&&(i=Xi(e,t,this.option.visual,!0)),i},fixed:DT}}function kT(t){var e=this.option,n=e.pieceList;if(e.hasSpecialVisual){var i=n[ST.findPieceIndex(t,n)];if(i&&i.visual)return i.visual[this.type]}}function PT(t,e){return t.visual=e,"color"===t.type&&(t.parsedVisual=O(e,(function(t){return qe(t)}))),e}var OT={linear:function(t){return Xi(t,this.option.dataExtent,[0,1],!0)},piecewise:function(t){var e=this.option.pieceList,n=ST.findPieceIndex(t,e,!0);if(null!=n)return Xi(n,[0,e.length-1],[0,1],!0)},category:function(t){var e=this.option.categories?this.option.categoryMap[t]:t;return null==e?wT:e},fixed:ft};function RT(t,e,n){return t?e<=n:e<n}var NT=Lr(),ET={seriesType:"treemap",reset:function(t){var e=t.getData().tree.root;e.isRemoved()||zT(e,{},t.getViewRoot().getAncestors(),t)}};function zT(t,e,n,i){var r=t.getModel(),o=t.getLayout(),a=t.hostTree.data;if(o&&!o.invisible&&o.isInView){var s,l=r.getModel("itemStyle"),u=function(t,e,n){var i=I({},e),r=n.designatedVisualItemStyle;return P(["color","colorAlpha","colorSaturation"],(function(n){r[n]=e[n];var o=t.get(n);r[n]=null,null!=o&&(i[n]=o)})),i}(l,e,i),h=a.ensureUniqueItemVisual(t.dataIndex,"style"),c=l.get("borderColor"),p=l.get("borderColorSaturation");null!=p&&(c=function(t,e){return null!=e?rn(e,null,null,t):null}(p,s=BT(u))),h.stroke=c;var d=t.viewChildren;if(d&&d.length){var f=function(t,e,n,i,r,o){if(!o||!o.length)return;var a=FT(e,"color")||null!=r.color&&"none"!==r.color&&(FT(e,"colorAlpha")||FT(e,"colorSaturation"));if(!a)return;var s=e.get("visualMin"),l=e.get("visualMax"),u=n.dataExtent.slice();null!=s&&s<u[0]&&(u[0]=s),null!=l&&l>u[1]&&(u[1]=l);var h=e.get("colorMappingBy"),c={type:a.name,dataExtent:u,visual:a.range};"color"!==c.type||"index"!==h&&"id"!==h?c.mappingMethod="linear":(c.mappingMethod="category",c.loop=!0);var p=new ST(c);return NT(p).drColorMappingBy=h,p}(0,r,o,0,u,d);P(d,(function(t,e){if(t.depth>=n.length||t===n[t.depth]){var o=function(t,e,n,i,r,o){var a=I({},e);if(r){var s=r.type,l="color"===s&&NT(r).drColorMappingBy,u="index"===l?i:"id"===l?o.mapIdToIndex(n.getId()):n.getValue(t.get("visualDimension"));a[s]=r.mapValueToVisual(u)}return a}(r,u,t,e,f,i);zT(t,o,n,i)}}))}else s=BT(u),h.fill=s}}function BT(t){var e=VT(t,"color");if(e){var n=VT(t,"colorAlpha"),i=VT(t,"colorSaturation");return i&&(e=rn(e,null,null,i)),n&&(e=on(e,n)),e}}function VT(t,e){var n=t[e];if(null!=n&&"none"!==n)return n}function FT(t,e){var n=t.get(e);return F(n)&&n.length?{name:e,range:n}:null}var GT=Math.max,HT=Math.min,WT=Q,UT=P,YT=["itemStyle","borderWidth"],XT=["itemStyle","gapWidth"],ZT=["upperLabel","show"],jT=["upperLabel","height"],qT={seriesType:"treemap",reset:function(t,e,n,i){var r=n.getWidth(),o=n.getHeight(),a=t.option,s=Ec(t.getBoxLayoutParams(),{width:n.getWidth(),height:n.getHeight()}),l=a.size||[],u=Zi(WT(s.width,l[0]),r),h=Zi(WT(s.height,l[1]),o),c=i&&i.type,p=QI(i,["treemapZoomToNode","treemapRootToNode"],t),d="treemapRender"===c||"treemapMove"===c?i.rootRect:null,f=t.getViewRoot(),g=tT(f);if("treemapMove"!==c){var y="treemapZoomToNode"===c?function(t,e,n,i,r){var o,a=(e||{}).node,s=[i,r];if(!a||a===n)return s;var l=i*r,u=l*t.option.zoomToNodeRatio;for(;o=a.parentNode;){for(var h=0,c=o.children,p=0,d=c.length;p<d;p++)h+=c[p].getValue();var f=a.getValue();if(0===f)return s;u*=h/f;var g=o.getModel(),y=g.get(YT);(u+=4*y*y+(3*y+Math.max(y,tC(g)))*Math.pow(u,.5))>tr&&(u=tr),a=o}u<l&&(u=l);var v=Math.pow(u/l,.5);return[i*v,r*v]}(t,p,f,u,h):d?[d.width,d.height]:[u,h],v=a.sort;v&&"asc"!==v&&"desc"!==v&&(v="desc");var m={squareRatio:a.squareRatio,sort:v,leafDepth:a.leafDepth};f.hostTree.clearLayouts();var _={x:0,y:0,width:y[0],height:y[1],area:y[0]*y[1]};f.setLayout(_),KT(f,m,!1,0),_=f.getLayout(),UT(g,(function(t,e){var n=(g[e+1]||f).getValue();t.setLayout(I({dataExtent:[n,n],borderWidth:0,upperHeight:0},_))}))}var x=t.getData().tree.root;x.setLayout(function(t,e,n){if(e)return{x:e.x,y:e.y};var i={x:0,y:0};if(!n)return i;var r=n.node,o=r.getLayout();if(!o)return i;var a=[o.width/2,o.height/2],s=r;for(;s;){var l=s.getLayout();a[0]+=l.x,a[1]+=l.y,s=s.parentNode}return{x:t.width/2-a[0],y:t.height/2-a[1]}}(s,d,p),!0),t.setLayoutInfo(s),QT(x,new Rn(-s.x,-s.y,r,o),g,f,0)}};function KT(t,e,n,i){var r,o;if(!t.isRemoved()){var a=t.getLayout();r=a.width,o=a.height;var s=t.getModel(),l=s.get(YT),u=s.get(XT)/2,h=tC(s),c=Math.max(l,h),p=l-u,d=c-u;t.setLayout({borderWidth:l,upperHeight:c,upperLabelHeight:h},!0);var f=(r=GT(r-2*p,0))*(o=GT(o-p-d,0)),g=function(t,e,n,i,r,o){var a=t.children||[],s=i.sort;"asc"!==s&&"desc"!==s&&(s=null);var l=null!=i.leafDepth&&i.leafDepth<=o;if(r&&!l)return t.viewChildren=[];!function(t,e){e&&t.sort((function(t,n){var i="asc"===e?t.getValue()-n.getValue():n.getValue()-t.getValue();return 0===i?"asc"===e?t.dataIndex-n.dataIndex:n.dataIndex-t.dataIndex:i}))}(a=N(a,(function(t){return!t.isRemoved()})),s);var u=function(t,e,n){for(var i=0,r=0,o=e.length;r<o;r++)i+=e[r].getValue();var a,s=t.get("visualDimension");e&&e.length?"value"===s&&n?(a=[e[e.length-1].getValue(),e[0].getValue()],"asc"===n&&a.reverse()):(a=[1/0,-1/0],UT(e,(function(t){var e=t.getValue(s);e<a[0]&&(a[0]=e),e>a[1]&&(a[1]=e)}))):a=[NaN,NaN];return{sum:i,dataExtent:a}}(e,a,s);if(0===u.sum)return t.viewChildren=[];if(u.sum=function(t,e,n,i,r){if(!i)return n;for(var o=t.get("visibleMin"),a=r.length,s=a,l=a-1;l>=0;l--){var u=r["asc"===i?a-l-1:l].getValue();u/n*e<o&&(s=l,n-=u)}return"asc"===i?r.splice(0,a-s):r.splice(s,a-s),n}(e,n,u.sum,s,a),0===u.sum)return t.viewChildren=[];for(var h=0,c=a.length;h<c;h++){var p=a[h].getValue()/u.sum*n;a[h].setLayout({area:p})}l&&(a.length&&t.setLayout({isLeafRoot:!0},!0),a.length=0);return t.viewChildren=a,t.setLayout({dataExtent:u.dataExtent},!0),a}(t,s,f,e,n,i);if(g.length){var y={x:p,y:d,width:r,height:o},v=HT(r,o),m=1/0,_=[];_.area=0;for(var x=0,b=g.length;x<b;){var w=g[x];_.push(w),_.area+=w.getLayout().area;var S=$T(_,v,e.squareRatio);S<=m?(x++,m=S):(_.area-=_.pop().getLayout().area,JT(_,v,y,u,!1),v=HT(y.width,y.height),_.length=_.area=0,m=1/0)}if(_.length&&JT(_,v,y,u,!0),!n){var M=s.get("childrenVisibleMin");null!=M&&f<M&&(n=!0)}for(x=0,b=g.length;x<b;x++)KT(g[x],e,n,i+1)}}}function $T(t,e,n){for(var i=0,r=1/0,o=0,a=void 0,s=t.length;o<s;o++)(a=t[o].getLayout().area)&&(a<r&&(r=a),a>i&&(i=a));var l=t.area*t.area,u=e*e*n;return l?GT(u*i/l,l/(u*r)):1/0}function JT(t,e,n,i,r){var o=e===n.width?0:1,a=1-o,s=["x","y"],l=["width","height"],u=n[s[o]],h=e?t.area/e:0;(r||h>n[l[a]])&&(h=n[l[a]]);for(var c=0,p=t.length;c<p;c++){var d=t[c],f={},g=h?d.getLayout().area/h:0,y=f[l[a]]=GT(h-2*i,0),v=n[s[o]]+n[l[o]]-u,m=c===p-1||v<g?v:g,_=f[l[o]]=GT(m-2*i,0);f[s[a]]=n[s[a]]+HT(i,y/2),f[s[o]]=u+HT(i,_/2),u+=m,d.setLayout(f,!0)}n[s[a]]+=h,n[l[a]]-=h}function QT(t,e,n,i,r){var o=t.getLayout(),a=n[r],s=a&&a===t;if(!(a&&!s||r===n.length&&t!==i)){t.setLayout({isInView:!0,invisible:!s&&!e.intersect(o),isAboveViewRoot:s},!0);var l=new Rn(e.x-o.x,e.y-o.y,e.width,e.height);UT(t.viewChildren||[],(function(t){QT(t,l,n,i,r+1)}))}}function tC(t){return t.get(ZT)?t.get(jT):0}function eC(t){var e=t.findComponents({mainType:"legend"});e&&e.length&&t.eachSeriesByType("graph",(function(t){var n=t.getCategoriesData(),i=t.getGraph().data,r=n.mapArray(n.getName);i.filterSelf((function(t){var n=i.getItemModel(t).getShallow("category");if(null!=n){"number"==typeof n&&(n=r[n]);for(var o=0;o<e.length;o++)if(!e[o].isSelected(n))return!1}return!0}))}))}function nC(t){var e={};t.eachSeriesByType("graph",(function(t){var n=t.getCategoriesData(),i=t.getData(),r={};n.each((function(i){var o=n.getName(i);r["ec-"+o]=i;var a=n.getItemModel(i),s=a.getModel("itemStyle").getItemStyle();s.fill||(s.fill=t.getColorFromPalette(o,e)),n.setItemVisual(i,"style",s);for(var l=["symbol","symbolSize","symbolKeepAspect"],u=0;u<l.length;u++){var h=a.getShallow(l[u],!0);null!=h&&n.setItemVisual(i,l[u],h)}})),n.count()&&i.each((function(t){var e=i.getItemModel(t).getShallow("category");if(null!=e){"string"==typeof e&&(e=r["ec-"+e]);var o=n.getItemVisual(e,"style");I(i.ensureUniqueItemVisual(t,"style"),o);for(var a=["symbol","symbolSize","symbolKeepAspect"],s=0;s<a.length;s++)i.setItemVisual(t,a[s],n.getItemVisual(e,a[s]))}}))}))}function iC(t){return t instanceof Array||(t=[t,t]),t}function rC(t){t.eachSeriesByType("graph",(function(t){var e=t.getGraph(),n=t.getEdgeData(),i=iC(t.get("edgeSymbol")),r=iC(t.get("edgeSymbolSize"));n.setVisual("fromSymbol",i&&i[0]),n.setVisual("toSymbol",i&&i[1]),n.setVisual("fromSymbolSize",r&&r[0]),n.setVisual("toSymbolSize",r&&r[1]),n.setVisual("style",t.getModel("lineStyle").getLineStyle()),n.each((function(t){var i=n.getItemModel(t),r=e.getEdgeByIndex(t),o=iC(i.getShallow("symbol",!0)),a=iC(i.getShallow("symbolSize",!0)),s=i.getModel("lineStyle").getLineStyle(),l=n.ensureUniqueItemVisual(t,"style");switch(I(l,s),l.stroke){case"source":var u=r.node1.getVisual("style");l.stroke=u&&u.fill;break;case"target":u=r.node2.getVisual("style");l.stroke=u&&u.fill}o[0]&&r.setVisual("fromSymbol",o[0]),o[1]&&r.setVisual("toSymbol",o[1]),a[0]&&r.setVisual("fromSymbolSize",a[0]),a[1]&&r.setVisual("toSymbolSize",a[1])}))}))}var oC="--\x3e",aC=function(t){return t.get("autoCurveness")||null},sC=function(t,e){var n=aC(t),i=20,r=[];if("number"==typeof n)i=n;else if(F(n))return void(t.__curvenessList=n);e>i&&(i=e);var o=i%2?i+2:i+3;r=[];for(var a=0;a<o;a++)r.push((a%2?a+1:a)/10*(a%2?-1:1));t.__curvenessList=r},lC=function(t,e,n){var i=[t.id,t.dataIndex].join("."),r=[e.id,e.dataIndex].join(".");return[n.uid,i,r].join(oC)},uC=function(t){var e=t.split(oC);return[e[0],e[2],e[1]].join(oC)},hC=function(t,e){var n=e.__edgeMap;return n[t]?n[t].length:0};function cC(t,e,n,i){var r=aC(e),o=F(r);if(!r)return null;var a=function(t,e){var n=lC(t.node1,t.node2,e);return e.__edgeMap[n]}(t,e);if(!a)return null;for(var s=-1,l=0;l<a.length;l++)if(a[l]===n){s=l;break}var u=function(t,e){return hC(lC(t.node1,t.node2,e),e)+hC(lC(t.node2,t.node1,e),e)}(t,e);sC(e,u),t.lineStyle=t.lineStyle||{};var h=lC(t.node1,t.node2,e),c=e.__curvenessList,p=o||u%2?0:1;if(a.isForward)return c[p+s];var d=uC(h),f=hC(d,e),g=c[s+f+p];return i?o?r&&0===r[0]?(f+p)%2?g:-g:((f%2?0:1)+p)%2?g:-g:(f+p)%2?g:-g:c[s+f+p]}function pC(t){var e=t.coordinateSystem;if(!e||"view"===e.type){var n=t.getGraph();n.eachNode((function(t){var e=t.getModel();t.setLayout([+e.get("x"),+e.get("y")])})),dC(n,t)}}function dC(t,e){t.eachEdge((function(t,n){var i=et(t.getModel().get(["lineStyle","curveness"]),-cC(t,e,n,!0),0),r=mt(t.node1.getLayout()),o=mt(t.node2.getLayout()),a=[r,o];+i&&a.push([(r[0]+o[0])/2-(r[1]-o[1])*i,(r[1]+o[1])/2-(o[0]-r[0])*i]),t.setLayout(a)}))}function fC(t,e){t.eachSeriesByType("graph",(function(t){var e=t.get("layout"),n=t.coordinateSystem;if(n&&"view"!==n.type){var i=t.getData(),r=[];P(n.dimensions,(function(t){r=r.concat(i.mapDimensionsAll(t))}));for(var o=0;o<i.count();o++){for(var a=[],s=!1,l=0;l<r.length;l++){var u=i.get(r[l],o);isNaN(u)||(s=!0),a.push(u)}s?i.setItemLayout(o,n.dataToPoint(a)):i.setItemLayout(o,[NaN,NaN])}dC(i.graph,t)}else e&&"none"!==e||pC(t)}))}function gC(t){var e=t.coordinateSystem;if("view"!==e.type)return 1;var n=t.option.nodeScaleRatio,i=e.scaleX;return((e.getZoom()-1)*n+1)/i}function yC(t){var e=t.getVisual("symbolSize");return e instanceof Array&&(e=(e[0]+e[1])/2),+e}var vC=Math.PI,mC=[];function _C(t,e){var n=t.coordinateSystem;if(!n||"view"===n.type){var i=n.getBoundingRect(),r=t.getData(),o=r.graph,a=i.width/2+i.x,s=i.height/2+i.y,l=Math.min(i.width,i.height)/2,u=r.count();r.setLayout({cx:a,cy:s}),u&&(xC[e](t,o,r,l,a,s,u),o.eachEdge((function(e,n){var i,r=et(e.getModel().get(["lineStyle","curveness"]),cC(e,t,n),0),o=mt(e.node1.getLayout()),l=mt(e.node2.getLayout()),u=(o[0]+l[0])/2,h=(o[1]+l[1])/2;+r&&(i=[a*(r*=3)+u*(1-r),s*r+h*(1-r)]),e.setLayout([o,l,i])})))}}var xC={value:function(t,e,n,i,r,o,a){var s=0,l=n.getSum("value"),u=2*Math.PI/(l||a);e.eachNode((function(t){var e=t.getValue("value"),n=u*(l?e:1)/2;s+=n,t.setLayout([i*Math.cos(s)+r,i*Math.sin(s)+o]),s+=n}))},symbolSize:function(t,e,n,i,r,o,a){var s=0;mC.length=a;var l=gC(t);e.eachNode((function(t){var e=yC(t);isNaN(e)&&(e=2),e<0&&(e=0),e*=l;var n=Math.asin(e/2/i);isNaN(n)&&(n=vC/2),mC[t.dataIndex]=n,s+=2*n}));var u=(2*vC-s)/a/2,h=0;e.eachNode((function(t){var e=u+mC[t.dataIndex];h+=e,t.setLayout([i*Math.cos(h)+r,i*Math.sin(h)+o]),h+=e}))}};function bC(t){t.eachSeriesByType("graph",(function(t){"circular"===t.get("layout")&&_C(t,"symbolSize")}))}var wC=bt;function SC(t){t.eachSeriesByType("graph",(function(t){var e=t.coordinateSystem;if(!e||"view"===e.type)if("force"===t.get("layout")){var n=t.preservedPoints||{},i=t.getGraph(),r=i.data,o=i.edgeData,a=t.getModel("force"),s=a.get("initLayout");t.preservedPoints?r.each((function(t){var e=r.getId(t);r.setItemLayout(t,n[e]||[NaN,NaN])})):s&&"none"!==s?"circular"===s&&_C(t,"value"):pC(t);var l=r.getDataExtent("value"),u=o.getDataExtent("value"),h=a.get("repulsion"),c=a.get("edgeLength"),p=F(h)?h:[h,h],d=F(c)?c:[c,c];d=[d[1],d[0]];var f=r.mapArray("value",(function(t,e){var n=r.getItemLayout(e),i=Xi(t,l,p);return isNaN(i)&&(i=(p[0]+p[1])/2),{w:i,rep:i,fixed:r.getItemModel(e).get("fixed"),p:!n||isNaN(n[0])||isNaN(n[1])?null:n}})),g=o.mapArray("value",(function(e,n){var r=i.getEdgeByIndex(n),o=Xi(e,u,d);isNaN(o)&&(o=(d[0]+d[1])/2);var a=r.getModel(),s=et(r.getModel().get(["lineStyle","curveness"]),-cC(r,t,n,!0),0);return{n1:f[r.node1.dataIndex],n2:f[r.node2.dataIndex],d:o,curveness:s,ignoreForceLayout:a.get("ignoreForceLayout")}})),y=e.getBoundingRect(),v=function(t,e,n){for(var i=t,r=e,o=n.rect,a=o.width,s=o.height,l=[o.x+a/2,o.y+s/2],u=null==n.gravity?.1:n.gravity,h=0;h<i.length;h++){var c=i[h];c.p||(c.p=yt(a*(Math.random()-.5)+l[0],s*(Math.random()-.5)+l[1])),c.pp=mt(c.p),c.edges=null}var p,d,f=null==n.friction?.6:n.friction,g=f;return{warmUp:function(){g=.8*f},setFixed:function(t){i[t].fixed=!0},setUnfixed:function(t){i[t].fixed=!1},beforeStep:function(t){p=t},afterStep:function(t){d=t},step:function(t){p&&p(i,r);for(var e=[],n=i.length,o=0;o<r.length;o++){var a=r[o];if(!a.ignoreForceLayout){var s=a.n1;wt(e,(y=a.n2).p,s.p);var h=St(e)-a.d,c=y.w/(s.w+y.w);isNaN(c)&&(c=0),At(e,e),!s.fixed&&wC(s.p,s.p,e,c*h*g),!y.fixed&&wC(y.p,y.p,e,-(1-c)*h*g)}}for(o=0;o<n;o++)(_=i[o]).fixed||(wt(e,l,_.p),wC(_.p,_.p,e,u*g));for(o=0;o<n;o++){s=i[o];for(var f=o+1;f<n;f++){var y;wt(e,(y=i[f]).p,s.p),0===(h=St(e))&&(_t(e,Math.random()-.5,Math.random()-.5),h=1);var v=(s.rep+y.rep)/h/h;!s.fixed&&wC(s.pp,s.pp,e,v),!y.fixed&&wC(y.pp,y.pp,e,-v)}}var m=[];for(o=0;o<n;o++){var _;(_=i[o]).fixed||(wt(m,_.p,_.pp),wC(_.p,_.p,m,g),vt(_.pp,_.p))}var x=(g*=.992)<.01;d&&d(i,r,x),t&&t(x)}}}(f,g,{rect:y,gravity:a.get("gravity"),friction:a.get("friction")});v.beforeStep((function(t,e){for(var n=0,r=t.length;n<r;n++)t[n].fixed&&vt(t[n].p,i.getNodeByIndex(n).getLayout())})),v.afterStep((function(t,e,o){for(var a=0,s=t.length;a<s;a++)t[a].fixed||i.getNodeByIndex(a).setLayout(t[a].p),n[r.getId(a)]=t[a].p;for(a=0,s=e.length;a<s;a++){var l=e[a],u=i.getEdgeByIndex(a),h=l.n1.p,c=l.n2.p,p=u.getLayout();(p=p?p.slice():[])[0]=p[0]||[],p[1]=p[1]||[],vt(p[0],h),vt(p[1],c),+l.curveness&&(p[2]=[(h[0]+c[0])/2-(h[1]-c[1])*l.curveness,(h[1]+c[1])/2-(c[0]-h[0])*l.curveness]),u.setLayout(p)}})),t.forceLayout=v,t.preservedPoints=n,v.step()}else t.forceLayout=null}))}function MC(t,e){var n=[];return t.eachSeriesByType("graph",(function(t){var i=t.get("coordinateSystem");if(!i||"view"===i){var r=t.getData(),o=[],a=[];na(r.mapArray((function(t){var e=r.getItemModel(t);return[+e.get("x"),+e.get("y")]})),o,a),a[0]-o[0]==0&&(a[0]+=1,o[0]-=1),a[1]-o[1]==0&&(a[1]+=1,o[1]-=1);var s=(a[0]-o[0])/(a[1]-o[1]),l=function(t,e,n){return Ec(I(t.getBoxLayoutParams(),{aspect:n}),{width:e.getWidth(),height:e.getHeight()})}(t,e,s);isNaN(s)&&(o=[l.x,l.y],a=[l.x+l.width,l.y+l.height]);var u=a[0]-o[0],h=a[1]-o[1],c=l.width,p=l.height,d=t.coordinateSystem=new cI;d.zoomLimit=t.get("scaleLimit"),d.setBoundingRect(o[0],o[1],u,h),d.setViewRect(l.x,l.y,c,p),d.setCenter(t.get("center")),d.setZoom(t.get("zoom")),n.push(d)}})),n}var IC=su.prototype,TC=cu.prototype,CC=function(){this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.percent=1};!function(t){function e(){return null!==t&&t.apply(this,arguments)||this}n(e,t)}(CC);function AC(t){return isNaN(+t.cpx1)||isNaN(+t.cpy1)}var DC=function(t){function e(e){var n=t.call(this,e)||this;return n.type="ec-line",n}return n(e,t),e.prototype.getDefaultStyle=function(){return{stroke:"#000000",fill:null}},e.prototype.getDefaultShape=function(){return new CC},e.prototype.buildPath=function(t,e){AC(e)?IC.buildPath.call(this,t,e):TC.buildPath.call(this,t,e)},e.prototype.pointAt=function(t){return AC(this.shape)?IC.pointAt.call(this,t):TC.pointAt.call(this,t)},e.prototype.tangentAt=function(t){var e=this.shape,n=AC(e)?[e.x2-e.x1,e.y2-e.y1]:TC.tangentAt.call(this,t);return At(n,n)},e}(ja),LC=["fromSymbol","toSymbol"];function kC(t){return"_"+t+"Type"}function PC(t,e,n){var i=e.getItemVisual(n,t);if(i&&"none"!==i){var r=e.getItemVisual(n,t+"Size"),o=e.getItemVisual(n,t+"Rotate"),a=e.getItemVisual(n,t+"Offset")||0,s=e.getItemVisual(n,t+"KeepAspect"),l=F(r)?r:[r,r],u=F(a)?a:[a,a];u[0]=Zi(u[0],l[0]),u[1]=Zi(tt(u[1],u[0]),l[1]);var h=py(i,-l[0]/2+u[0],-l[1]/2+u[1],l[0],l[1],null,s);return h.__specifiedRotation=null==o||isNaN(o)?void 0:+o*Math.PI/180||0,h.name=t,h}}function OC(t,e){t.x1=e[0][0],t.y1=e[0][1],t.x2=e[1][0],t.y2=e[1][1],t.percent=1;var n=e[2];n?(t.cpx1=n[0],t.cpy1=n[1]):(t.cpx1=NaN,t.cpy1=NaN)}var RC=function(t){function e(e,n,i){var r=t.call(this)||this;return r._createLine(e,n,i),r}return n(e,t),e.prototype._createLine=function(t,e,n){var i=t.hostModel,r=function(t){var e=new DC({name:"line",subPixelOptimize:!0});return OC(e.shape,t),e}(t.getItemLayout(e));r.shape.percent=0,Gu(r,{shape:{percent:1}},i,e),this.add(r),P(LC,(function(n){var i=PC(n,t,e);this.add(i),this[kC(n)]=t.getItemVisual(e,n)}),this),this._updateCommonStl(t,e,n)},e.prototype.updateData=function(t,e,n){var i=t.hostModel,r=this.childOfName("line"),o=t.getItemLayout(e),a={shape:{}};OC(a.shape,o),Fu(r,a,i,e),P(LC,(function(n){var i=t.getItemVisual(e,n),r=kC(n);if(this[r]!==i){this.remove(this.childOfName(n));var o=PC(n,t,e);this.add(o)}this[r]=i}),this),this._updateCommonStl(t,e,n)},e.prototype.getLinePath=function(){return this.childAt(0)},e.prototype._updateCommonStl=function(t,e,n){var i=t.hostModel,r=this.childOfName("line"),o=n&&n.emphasisLineStyle,a=n&&n.blurLineStyle,s=n&&n.selectLineStyle,l=n&&n.labelStatesModels;if(!n||t.hasItemOption){var u=t.getItemModel(e);o=u.getModel(["emphasis","lineStyle"]).getLineStyle(),a=u.getModel(["blur","lineStyle"]).getLineStyle(),s=u.getModel(["select","lineStyle"]).getLineStyle(),l=uh(u)}var h=t.getItemVisual(e,"style"),c=h.stroke;r.useStyle(h),r.style.fill=null,r.style.strokeNoScale=!0,r.ensureState("emphasis").style=o,r.ensureState("blur").style=a,r.ensureState("select").style=s,P(LC,(function(t){var e=this.childOfName(t);if(e){e.setColor(c),e.style.opacity=h.opacity;for(var n=0;n<bs.length;n++){var i=bs[n],o=r.getState(i);if(o){var a=o.style||{},s=e.ensureState(i),l=s.style||(s.style={});null!=a.stroke&&(l[e.__isEmptyBrush?"stroke":"fill"]=a.stroke),null!=a.opacity&&(l.opacity=a.opacity)}}e.markRedraw()}}),this);var p=i.getRawValue(e);lh(this,l,{labelDataIndex:e,labelFetcher:{getFormattedLabel:function(e,n){return i.getFormattedLabel(e,n,t.dataType)}},inheritColor:c||"#000000",defaultOpacity:h.opacity,defaultText:(null==p?t.getName(e):isFinite(p)?ji(p):p)+""});var d=this.getTextContent();if(d){var f=l.normal;d.__align=d.style.align,d.__verticalAlign=d.style.verticalAlign,d.__position=f.get("position")||"middle";var g=f.get("distance");F(g)||(g=[g,g]),d.__labelDistance=g}this.setTextConfig({position:null,local:!0,inside:!1}),ol(this)},e.prototype.highlight=function(){Xs(this)},e.prototype.downplay=function(){Zs(this)},e.prototype.updateLayout=function(t,e){this.setLinePoints(t.getItemLayout(e))},e.prototype.setLinePoints=function(t){var e=this.childOfName("line");OC(e.shape,t),e.dirty()},e.prototype.beforeUpdate=function(){var t=this,e=t.childOfName("fromSymbol"),n=t.childOfName("toSymbol"),i=t.getTextContent();if(e||n||i&&!i.ignore){for(var r=1,o=this.parent;o;)o.scaleX&&(r/=o.scaleX),o=o.parent;var a=t.childOfName("line");if(this.__dirty||a.__dirty){var s=a.shape.percent,l=a.pointAt(0),u=a.pointAt(s),h=wt([],u,l);if(At(h,h),e&&(e.setPosition(l),S(e,0),e.scaleX=e.scaleY=r*s,e.markRedraw()),n&&(n.setPosition(u),S(n,1),n.scaleX=n.scaleY=r*s,n.markRedraw()),i&&!i.ignore){i.x=i.y=0,i.originX=i.originY=0;var c=void 0,p=void 0,d=i.__labelDistance,f=d[0]*r,g=d[1]*r,y=s/2,v=a.tangentAt(y),m=[v[1],-v[0]],_=a.pointAt(y);m[1]>0&&(m[0]=-m[0],m[1]=-m[1]);var x=v[0]<0?-1:1;if("start"!==i.__position&&"end"!==i.__position){var b=-Math.atan2(v[1],v[0]);u[0]<l[0]&&(b=Math.PI+b),i.rotation=b}var w=void 0;switch(i.__position){case"insideStartTop":case"insideMiddleTop":case"insideEndTop":case"middle":w=-g,p="bottom";break;case"insideStartBottom":case"insideMiddleBottom":case"insideEndBottom":w=g,p="top";break;default:w=0,p="middle"}switch(i.__position){case"end":i.x=h[0]*f+u[0],i.y=h[1]*g+u[1],c=h[0]>.8?"left":h[0]<-.8?"right":"center",p=h[1]>.8?"top":h[1]<-.8?"bottom":"middle";break;case"start":i.x=-h[0]*f+l[0],i.y=-h[1]*g+l[1],c=h[0]>.8?"right":h[0]<-.8?"left":"center",p=h[1]>.8?"bottom":h[1]<-.8?"top":"middle";break;case"insideStartTop":case"insideStart":case"insideStartBottom":i.x=f*x+l[0],i.y=l[1]+w,c=v[0]<0?"right":"left",i.originX=-f*x,i.originY=-w;break;case"insideMiddleTop":case"insideMiddle":case"insideMiddleBottom":case"middle":i.x=_[0],i.y=_[1]+w,c="center",i.originY=-w;break;case"insideEndTop":case"insideEnd":case"insideEndBottom":i.x=-f*x+u[0],i.y=u[1]+w,c=v[0]>=0?"right":"left",i.originX=f*x,i.originY=-w}i.scaleX=i.scaleY=r,i.setStyle({verticalAlign:i.__verticalAlign||p,align:i.__align||c})}}}function S(t,e){var n=t.__specifiedRotation;if(null==n){var i=a.tangentAt(e);t.attr("rotation",(1===e?-1:1)*Math.PI/2-Math.atan2(i[1],i[0]))}else t.attr("rotation",n)}},e}(zi),NC=function(){function t(t){this.group=new zi,this._LineCtor=t||RC}return t.prototype.isPersistent=function(){return!0},t.prototype.updateData=function(t){var e=this,n=this,i=n.group,r=n._lineData;n._lineData=t,r||i.removeAll();var o=EC(t);t.diff(r).add((function(n){e._doAdd(t,n,o)})).update((function(n,i){e._doUpdate(r,t,i,n,o)})).remove((function(t){i.remove(r.getItemGraphicEl(t))})).execute()},t.prototype.updateLayout=function(){var t=this._lineData;t&&t.eachItemGraphicEl((function(e,n){e.updateLayout(t,n)}),this)},t.prototype.incrementalPrepareUpdate=function(t){this._seriesScope=EC(t),this._lineData=null,this.group.removeAll()},t.prototype.incrementalUpdate=function(t,e){function n(t){t.isGroup||function(t){return t.animators&&t.animators.length>0}(t)||(t.incremental=!0,t.ensureState("emphasis").hoverLayer=!0)}for(var i=t.start;i<t.end;i++){if(BC(e.getItemLayout(i))){var r=new this._LineCtor(e,i,this._seriesScope);r.traverse(n),this.group.add(r),e.setItemGraphicEl(i,r)}}},t.prototype.remove=function(){this.group.removeAll()},t.prototype._doAdd=function(t,e,n){if(BC(t.getItemLayout(e))){var i=new this._LineCtor(t,e,n);t.setItemGraphicEl(e,i),this.group.add(i)}},t.prototype._doUpdate=function(t,e,n,i,r){var o=t.getItemGraphicEl(n);BC(e.getItemLayout(i))?(o?o.updateData(e,i,r):o=new this._LineCtor(e,i,r),e.setItemGraphicEl(i,o),this.group.add(o)):this.group.remove(o)},t}();function EC(t){var e=t.hostModel;return{lineStyle:e.getModel("lineStyle").getLineStyle(),emphasisLineStyle:e.getModel(["emphasis","lineStyle"]).getLineStyle(),blurLineStyle:e.getModel(["blur","lineStyle"]).getLineStyle(),selectLineStyle:e.getModel(["select","lineStyle"]).getLineStyle(),labelStatesModels:uh(e)}}function zC(t){return isNaN(t[0])||isNaN(t[1])}function BC(t){return!zC(t[0])&&!zC(t[1])}var VC=[],FC=[],GC=[],HC=Ho,WC=Pt,UC=Math.abs;function YC(t,e,n){for(var i,r=t[0],o=t[1],a=t[2],s=1/0,l=n*n,u=.1,h=.1;h<=.9;h+=.1){VC[0]=HC(r[0],o[0],a[0],h),VC[1]=HC(r[1],o[1],a[1],h),(d=UC(WC(VC,e)-l))<s&&(s=d,i=h)}for(var c=0;c<32;c++){var p=i+u;FC[0]=HC(r[0],o[0],a[0],i),FC[1]=HC(r[1],o[1],a[1],i),GC[0]=HC(r[0],o[0],a[0],p),GC[1]=HC(r[1],o[1],a[1],p);var d=WC(FC,e)-l;if(UC(d)<.01)break;var f=WC(GC,e)-l;u/=2,d<0?f>=0?i+=u:i-=u:f>=0?i-=u:i+=u}return i}function XC(t,e){var n=[],i=Yo,r=[[],[],[]],o=[[],[]],a=[];e/=2,t.eachEdge((function(t,s){var l=t.getLayout(),u=t.getVisual("fromSymbol"),h=t.getVisual("toSymbol");l.__original||(l.__original=[mt(l[0]),mt(l[1])],l[2]&&l.__original.push(mt(l[2])));var c=l.__original;if(null!=l[2]){if(vt(r[0],c[0]),vt(r[1],c[2]),vt(r[2],c[1]),u&&"none"!==u){var p=yC(t.node1),d=YC(r,c[0],p*e);i(r[0][0],r[1][0],r[2][0],d,n),r[0][0]=n[3],r[1][0]=n[4],i(r[0][1],r[1][1],r[2][1],d,n),r[0][1]=n[3],r[1][1]=n[4]}if(h&&"none"!==h){p=yC(t.node2),d=YC(r,c[1],p*e);i(r[0][0],r[1][0],r[2][0],d,n),r[1][0]=n[1],r[2][0]=n[2],i(r[0][1],r[1][1],r[2][1],d,n),r[1][1]=n[1],r[2][1]=n[2]}vt(l[0],r[0]),vt(l[1],r[2]),vt(l[2],r[1])}else{if(vt(o[0],c[0]),vt(o[1],c[1]),wt(a,o[1],o[0]),At(a,a),u&&"none"!==u){p=yC(t.node1);bt(o[0],o[0],a,p*e)}if(h&&"none"!==h){p=yC(t.node2);bt(o[1],o[1],a,-p*e)}vt(l[0],o[0]),vt(l[1],o[1])}}))}function ZC(t){return"view"===t.type}var jC=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.init=function(t,e){var n=new gw,i=new NC,r=this.group;this._controller=new FM(e.getZr()),this._controllerHost={target:r},r.add(n.group),r.add(i.group),this._symbolDraw=n,this._lineDraw=i,this._firstRender=!0},e.prototype.render=function(t,e,n){var i=this,r=t.coordinateSystem;this._model=t;var o=this._symbolDraw,a=this._lineDraw,s=this.group;if(ZC(r)){var l={x:r.x,y:r.y,scaleX:r.scaleX,scaleY:r.scaleY};this._firstRender?s.attr(l):Fu(s,l,t)}XC(t.getGraph(),gC(t));var u=t.getData();o.updateData(u);var h=t.getEdgeData();a.updateData(h),this._updateNodeAndLinkScale(),this._updateController(t,e,n),clearTimeout(this._layoutTimeout);var c=t.forceLayout,p=t.get(["force","layoutAnimation"]);c&&this._startForceLayoutIteration(c,p),u.graph.eachNode((function(t){var e=t.dataIndex,n=t.getGraphicEl(),r=t.getModel();n.off("drag").off("dragend");var o=r.get("draggable");o&&n.on("drag",(function(){c&&(c.warmUp(),!i._layouting&&i._startForceLayoutIteration(c,p),c.setFixed(e),u.setItemLayout(e,[n.x,n.y]))})).on("dragend",(function(){c&&c.setUnfixed(e)})),n.setDraggable(o&&!!c),"adjacency"===r.get(["emphasis","focus"])&&(vs(n).focus=t.getAdjacentDataIndices())})),u.graph.eachEdge((function(t){var e=t.getGraphicEl();"adjacency"===t.getModel().get(["emphasis","focus"])&&(vs(e).focus={edge:[t.dataIndex],node:[t.node1.dataIndex,t.node2.dataIndex]})}));var d="circular"===t.get("layout")&&t.get(["circular","rotateLabel"]),f=u.getLayout("cx"),g=u.getLayout("cy");u.eachItemGraphicEl((function(t,e){var n=u.getItemModel(e).get(["label","rotate"])||0,i=t.getSymbolPath();if(d){var r=u.getItemLayout(e),o=Math.atan2(r[1]-g,r[0]-f);o<0&&(o=2*Math.PI+o);var a=r[0]<f;a&&(o-=Math.PI);var s=a?"left":"right";i.setTextConfig({rotation:-o,position:s,origin:"center"});var l=i.ensureState("emphasis");I(l.textConfig||(l.textConfig={}),{position:s})}else i.setTextConfig({rotation:n*=Math.PI/180})})),this._firstRender=!1},e.prototype.dispose=function(){this._controller&&this._controller.dispose(),this._controllerHost=null},e.prototype._startForceLayoutIteration=function(t,e){var n=this;!function i(){t.step((function(t){n.updateLayout(n._model),(n._layouting=!t)&&(e?n._layoutTimeout=setTimeout(i,16):i())}))}()},e.prototype._updateController=function(t,e,n){var i=this,r=this._controller,o=this._controllerHost,a=this.group;r.setPointerChecker((function(e,i,r){var o=a.getBoundingRect();return o.applyTransform(a.transform),o.contain(i,r)&&!ZM(e,n,t)})),ZC(t.coordinateSystem)?(r.enable(t.get("roam")),o.zoomLimit=t.get("scaleLimit"),o.zoom=t.coordinateSystem.getZoom(),r.off("pan").off("zoom").on("pan",(function(e){UM(o,e.dx,e.dy),n.dispatchAction({seriesId:t.id,type:"graphRoam",dx:e.dx,dy:e.dy})})).on("zoom",(function(e){YM(o,e.scale,e.originX,e.originY),n.dispatchAction({seriesId:t.id,type:"graphRoam",zoom:e.scale,originX:e.originX,originY:e.originY}),i._updateNodeAndLinkScale(),XC(t.getGraph(),gC(t)),i._lineDraw.updateLayout(),n.updateLabelLayout()}))):r.disable()},e.prototype._updateNodeAndLinkScale=function(){var t=this._model,e=t.getData(),n=gC(t);e.eachItemGraphicEl((function(t,e){t.setSymbolScale(n)}))},e.prototype.updateLayout=function(t){XC(t.getGraph(),gC(t)),this._symbolDraw.updateLayout(),this._lineDraw.updateLayout()},e.prototype.remove=function(t,e){this._symbolDraw&&this._symbolDraw.remove(),this._lineDraw&&this._lineDraw.remove()},e.type="graph",e}(Mf);function qC(t){return"_EC_"+t}var KC=function(){function t(t){this.type="graph",this.nodes=[],this.edges=[],this._nodesMap={},this._edgesMap={},this._directed=t||!1}return t.prototype.isDirected=function(){return this._directed},t.prototype.addNode=function(t,e){t=null==t?""+e:""+t;var n=this._nodesMap;if(!n[qC(t)]){var i=new $C(t,e);return i.hostGraph=this,this.nodes.push(i),n[qC(t)]=i,i}},t.prototype.getNodeByIndex=function(t){var e=this.data.getRawIndex(t);return this.nodes[e]},t.prototype.getNodeById=function(t){return this._nodesMap[qC(t)]},t.prototype.addEdge=function(t,e,n){var i=this._nodesMap,r=this._edgesMap;if("number"==typeof t&&(t=this.nodes[t]),"number"==typeof e&&(e=this.nodes[e]),t instanceof $C||(t=i[qC(t)]),e instanceof $C||(e=i[qC(e)]),t&&e){var o=t.id+"-"+e.id,a=new JC(t,e,n);return a.hostGraph=this,this._directed&&(t.outEdges.push(a),e.inEdges.push(a)),t.edges.push(a),t!==e&&e.edges.push(a),this.edges.push(a),r[o]=a,a}},t.prototype.getEdgeByIndex=function(t){var e=this.edgeData.getRawIndex(t);return this.edges[e]},t.prototype.getEdge=function(t,e){t instanceof $C&&(t=t.id),e instanceof $C&&(e=e.id);var n=this._edgesMap;return this._directed?n[t+"-"+e]:n[t+"-"+e]||n[e+"-"+t]},t.prototype.eachNode=function(t,e){for(var n=this.nodes,i=n.length,r=0;r<i;r++)n[r].dataIndex>=0&&t.call(e,n[r],r)},t.prototype.eachEdge=function(t,e){for(var n=this.edges,i=n.length,r=0;r<i;r++)n[r].dataIndex>=0&&n[r].node1.dataIndex>=0&&n[r].node2.dataIndex>=0&&t.call(e,n[r],r)},t.prototype.breadthFirstTraverse=function(t,e,n,i){if(e instanceof $C||(e=this._nodesMap[qC(e)]),e){for(var r="out"===n?"outEdges":"in"===n?"inEdges":"edges",o=0;o<this.nodes.length;o++)this.nodes[o].__visited=!1;if(!t.call(i,e,null))for(var a=[e];a.length;){var s=a.shift(),l=s[r];for(o=0;o<l.length;o++){var u=l[o],h=u.node1===s?u.node2:u.node1;if(!h.__visited){if(t.call(i,h,s))return;a.push(h),h.__visited=!0}}}}},t.prototype.update=function(){for(var t=this.data,e=this.edgeData,n=this.nodes,i=this.edges,r=0,o=n.length;r<o;r++)n[r].dataIndex=-1;for(r=0,o=t.count();r<o;r++)n[t.getRawIndex(r)].dataIndex=r;e.filterSelf((function(t){var n=i[e.getRawIndex(t)];return n.node1.dataIndex>=0&&n.node2.dataIndex>=0}));for(r=0,o=i.length;r<o;r++)i[r].dataIndex=-1;for(r=0,o=e.count();r<o;r++)i[e.getRawIndex(r)].dataIndex=r},t.prototype.clone=function(){for(var e=new t(this._directed),n=this.nodes,i=this.edges,r=0;r<n.length;r++)e.addNode(n[r].id,n[r].dataIndex);for(r=0;r<i.length;r++){var o=i[r];e.addEdge(o.node1.id,o.node2.id,o.dataIndex)}return e},t}(),$C=function(){function t(t,e){this.inEdges=[],this.outEdges=[],this.edges=[],this.dataIndex=-1,this.id=null==t?"":t,this.dataIndex=null==e?-1:e}return t.prototype.degree=function(){return this.edges.length},t.prototype.inDegree=function(){return this.inEdges.length},t.prototype.outDegree=function(){return this.outEdges.length},t.prototype.getModel=function(t){if(!(this.dataIndex<0))return this.hostGraph.data.getItemModel(this.dataIndex).getModel(t)},t.prototype.getAdjacentDataIndices=function(){for(var t={edge:[],node:[]},e=0;e<this.edges.length;e++){var n=this.edges[e];n.dataIndex<0||(t.edge.push(n.dataIndex),t.node.push(n.node1.dataIndex,n.node2.dataIndex))}return t},t}(),JC=function(){function t(t,e,n){this.dataIndex=-1,this.node1=t,this.node2=e,this.dataIndex=null==n?-1:n}return t.prototype.getModel=function(t){if(!(this.dataIndex<0))return this.hostGraph.edgeData.getItemModel(this.dataIndex).getModel(t)},t.prototype.getAdjacentDataIndices=function(){return{edge:[this.dataIndex],node:[this.node1.dataIndex,this.node2.dataIndex]}},t}();function QC(t,e){return{getValue:function(n){var i=this[t][e];return i.get(i.getDimension(n||"value"),this.dataIndex)},setVisual:function(n,i){this.dataIndex>=0&&this[t][e].setItemVisual(this.dataIndex,n,i)},getVisual:function(n){return this[t][e].getItemVisual(this.dataIndex,n)},setLayout:function(n,i){this.dataIndex>=0&&this[t][e].setItemLayout(this.dataIndex,n,i)},getLayout:function(){return this[t][e].getItemLayout(this.dataIndex)},getGraphicEl:function(){return this[t][e].getItemGraphicEl(this.dataIndex)},getRawIndex:function(){return this[t][e].getRawIndex(this.dataIndex)}}}function tA(t,e,n,i,r){for(var o=new KC(i),a=0;a<t.length;a++)o.addNode(Q(t[a].id,t[a].name,a),a);var s=[],l=[],u=0;for(a=0;a<e.length;a++){var h=e[a],c=h.source,p=h.target;o.addEdge(c,p,u)&&(l.push(h),s.push(Q(Tr(h.id,null),c+" > "+p)),u++)}var d,f=n.get("coordinateSystem");if("cartesian2d"===f||"polar"===f)d=E_(t,n);else{var g=Cp.get(f),y=g&&g.dimensions||[];A(y,"value")<0&&y.concat(["value"]);var v=D_(t,{coordDimensions:y});(d=new T_(v,n)).initData(t)}var m=new T_(["value"],n);return m.initData(l,s),r&&r(d,m),VI({mainData:d,struct:o,structAttr:"graph",datas:{node:d,edge:m},datasAttr:{node:"data",edge:"edgeData"}}),o.update(),o}L($C,QC("hostGraph","data")),L(JC,QC("hostGraph","edgeData"));var eA=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.hasSymbolVisual=!0,n}return n(e,t),e.prototype.init=function(e){t.prototype.init.apply(this,arguments);var n=this;function i(){return n._categoriesData}this.legendVisualProvider=new wS(i,i),this.fillDataTextStyle(e.edges||e.links),this._updateCategoriesData()},e.prototype.mergeOption=function(e){t.prototype.mergeOption.apply(this,arguments),this.fillDataTextStyle(e.edges||e.links),this._updateCategoriesData()},e.prototype.mergeDefaultAndTheme=function(e){t.prototype.mergeDefaultAndTheme.apply(this,arguments),xr(e,"edgeLabel",["show"])},e.prototype.getInitialData=function(t,e){var n,i=t.edges||t.links||[],r=t.data||t.nodes||[],o=this;if(r&&i){aC(n=this)&&(n.__curvenessList=[],n.__edgeMap={},sC(n));var a=tA(r,i,this,!0,(function(t,e){t.wrapMethod("getItemModel",(function(t){var e=o._categoriesModels[t.getShallow("category")];return e&&(e.parentModel=t.parentModel,t.parentModel=e),t}));var n=kh.prototype.getModel;function i(t,e){var i=n.call(this,t,e);return i.resolveParentPath=r,i}function r(t){if(t&&("label"===t[0]||"label"===t[1])){var e=t.slice();return"label"===t[0]?e[0]="edgeLabel":"label"===t[1]&&(e[1]="edgeLabel"),e}return t}e.wrapMethod("getItemModel",(function(t){return t.resolveParentPath=r,t.getModel=i,t}))}));return P(a.edges,(function(t){!function(t,e,n,i){if(aC(n)){var r=lC(t,e,n),o=n.__edgeMap,a=o[uC(r)];o[r]&&!a?o[r].isForward=!0:a&&o[r]&&(a.isForward=!0,o[r].isForward=!1),o[r]=o[r]||[],o[r].push(i)}}(t.node1,t.node2,this,t.dataIndex)}),this),a.data}},e.prototype.getGraph=function(){return this.getData().graph},e.prototype.getEdgeData=function(){return this.getGraph().edgeData},e.prototype.getCategoriesData=function(){return this._categoriesData},e.prototype.formatTooltip=function(t,e,n){if("edge"===n){var i=this.getData(),r=this.getDataParams(t,n),o=i.graph.getEdgeByIndex(t),a=i.getName(o.node1.dataIndex),s=i.getName(o.node2.dataIndex),l=[];return null!=a&&l.push(a),null!=s&&l.push(s),Jd("nameValue",{name:l.join(" > "),value:r.value,noValue:null==r.value})}return uf({series:this,dataIndex:t,multipleSeries:e})},e.prototype._updateCategoriesData=function(){var t=O(this.option.categories||[],(function(t){return null!=t.value?t:I({value:0},t)})),e=new T_(["value"],this);e.initData(t),this._categoriesData=e,this._categoriesModels=e.mapArray((function(t){return e.getItemModel(t)}))},e.prototype.setZoom=function(t){this.option.zoom=t},e.prototype.setCenter=function(t){this.option.center=t},e.prototype.isAnimationEnabled=function(){return t.prototype.isAnimationEnabled.call(this)&&!("force"===this.get("layout")&&this.get(["force","layoutAnimation"]))},e.type="series.graph",e.dependencies=["grid","polar","geo","singleAxis","calendar"],e.defaultOption={zlevel:0,z:2,coordinateSystem:"view",legendHoverLink:!0,layout:null,circular:{rotateLabel:!1},force:{initLayout:null,repulsion:[0,50],gravity:.1,friction:.6,edgeLength:30,layoutAnimation:!0},left:"center",top:"center",symbol:"circle",symbolSize:10,edgeSymbol:["none","none"],edgeSymbolSize:10,edgeLabel:{position:"middle",distance:5},draggable:!1,roam:!1,center:null,zoom:1,nodeScaleRatio:.6,label:{show:!1,formatter:"{b}"},itemStyle:{},lineStyle:{color:"#aaaaaa",width:1,opacity:.5},emphasis:{scale:!0,label:{show:!0}},select:{itemStyle:{borderColor:"#212121"}}},e}(pf),nA={type:"graphRoam",event:"graphRoam",update:"none"};var iA=function(){this.angle=0,this.width=10,this.r=10,this.x=0,this.y=0},rA=function(t){function e(e){var n=t.call(this,e)||this;return n.type="pointer",n}return n(e,t),e.prototype.getDefaultShape=function(){return new iA},e.prototype.buildPath=function(t,e){var n=Math.cos,i=Math.sin,r=e.r,o=e.width,a=e.angle,s=e.x-n(a)*o*(o>=r/3?1:2),l=e.y-i(a)*o*(o>=r/3?1:2);a=e.angle-Math.PI/2,t.moveTo(s,l),t.lineTo(e.x+n(a)*o,e.y+i(a)*o),t.lineTo(e.x+n(e.angle)*r,e.y+i(e.angle)*r),t.lineTo(e.x-n(a)*o,e.y-i(a)*o),t.lineTo(s,l)},e}(ja);function oA(t,e){var n=null==t?"":t+"";return e&&("string"==typeof e?n=e.replace("{value}",n):"function"==typeof e&&(n=e(t))),n}var aA=2*Math.PI,sA=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){this.group.removeAll();var i=t.get(["axisLine","lineStyle","color"]),r=function(t,e){var n=t.get("center"),i=e.getWidth(),r=e.getHeight(),o=Math.min(i,r);return{cx:Zi(n[0],e.getWidth()),cy:Zi(n[1],e.getHeight()),r:Zi(t.get("radius"),o/2)}}(t,n);this._renderMain(t,e,n,i,r),this._data=t.getData()},e.prototype.dispose=function(){},e.prototype._renderMain=function(t,e,n,i,r){for(var o=this.group,a=t.get("clockwise"),s=-t.get("startAngle")/180*Math.PI,l=-t.get("endAngle")/180*Math.PI,u=t.getModel("axisLine"),h=u.get("roundCap")?qw:Kl,c=u.get("show"),p=u.getModel("lineStyle"),d=p.get("width"),f=(l-s)%aA||l===s?(l-s)%aA:aA,g=s,y=0;c&&y<i.length;y++){var v=new h({shape:{startAngle:g,endAngle:l=s+f*Math.min(Math.max(i[y][0],0),1),cx:r.cx,cy:r.cy,clockwise:a,r0:r.r-d,r:r.r},silent:!0});v.setStyle({fill:i[y][1]}),v.setStyle(p.getLineStyle(["color","width"])),o.add(v),g=l}var m=function(t){if(t<=0)return i[0][1];var e;for(e=0;e<i.length;e++)if(i[e][0]>=t&&(0===e?0:i[e-1][0])<t)return i[e][1];return i[e-1][1]};if(!a){var _=s;s=l,l=_}this._renderTicks(t,e,n,m,r,s,l,a,d),this._renderTitleAndDetail(t,e,n,m,r),this._renderAnchor(t,r),this._renderPointer(t,e,n,m,r,s,l,a,d)},e.prototype._renderTicks=function(t,e,n,i,r,o,a,s,l){for(var u,h,c=this.group,p=r.cx,d=r.cy,f=r.r,g=+t.get("min"),y=+t.get("max"),v=t.getModel("splitLine"),m=t.getModel("axisTick"),_=t.getModel("axisLabel"),x=t.get("splitNumber"),b=m.get("splitNumber"),w=Zi(v.get("length"),f),S=Zi(m.get("length"),f),M=o,I=(a-o)/x,T=I/b,C=v.getModel("lineStyle").getLineStyle(),A=m.getModel("lineStyle").getLineStyle(),D=v.get("distance"),L=0;L<=x;L++){if(u=Math.cos(M),h=Math.sin(M),v.get("show")){var k=new su({shape:{x1:u*(f-(P=D?D+l:l))+p,y1:h*(f-P)+d,x2:u*(f-w-P)+p,y2:h*(f-w-P)+d},style:C,silent:!0});"auto"===C.stroke&&k.setStyle({stroke:i(L/x)}),c.add(k)}if(_.get("show")){var P=_.get("distance")+D,O=oA(ji(L/x*(y-g)+g),_.get("formatter")),R=i(L/x);c.add(new us({style:hh(_,{text:O,x:u*(f-w-P)+p,y:h*(f-w-P)+d,verticalAlign:h<-.8?"top":h>.8?"bottom":"middle",align:u<-.4?"left":u>.4?"right":"center"},{inheritColor:R}),silent:!0}))}if(m.get("show")&&L!==x){P=(P=m.get("distance"))?P+l:l;for(var N=0;N<=b;N++){u=Math.cos(M),h=Math.sin(M);var E=new su({shape:{x1:u*(f-P)+p,y1:h*(f-P)+d,x2:u*(f-S-P)+p,y2:h*(f-S-P)+d},silent:!0,style:A});"auto"===A.stroke&&E.setStyle({stroke:i((L+N/b)/x)}),c.add(E),M+=T}M-=T}else M+=I}},e.prototype._renderPointer=function(t,e,n,i,r,o,a,s,l){var u=this.group,h=this._data,c=this._progressEls,p=[],d=t.get(["pointer","show"]),f=t.getModel("progress"),g=f.get("show"),y=t.getData(),v=y.mapDimension("value"),m=+t.get("min"),_=+t.get("max"),x=[m,_],b=[o,a];function w(e,n){var i,o=y.getItemModel(e).getModel("pointer"),a=Zi(o.get("width"),r.r),s=Zi(o.get("length"),r.r),l=t.get(["pointer","icon"]),u=o.get("offsetCenter"),h=Zi(u[0],r.r),c=Zi(u[1],r.r),p=o.get("keepAspect");return(i=l?py(l,h-a/2,c-s,a,s,null,p):new rA({shape:{angle:-Math.PI/2,width:a,r:s,x:h,y:c}})).rotation=-(n+Math.PI/2),i.x=r.cx,i.y=r.cy,i}function S(t,e){var n=f.get("roundCap")?qw:Kl,i=f.get("overlap"),a=i?f.get("width"):l/y.count(),u=i?r.r-a:r.r-(t+1)*a,h=i?r.r:r.r-t*a,c=new n({shape:{startAngle:o,endAngle:e,cx:r.cx,cy:r.cy,clockwise:s,r0:u,r:h}});return i&&(c.z2=_-y.get(v,t)%_),c}(g||d)&&(y.diff(h).add((function(e){if(d){var n=w(e,o);Gu(n,{rotation:-(Xi(y.get(v,e),x,b,!0)+Math.PI/2)},t),u.add(n),y.setItemGraphicEl(e,n)}if(g){var i=S(e,o),r=f.get("clip");Gu(i,{shape:{endAngle:Xi(y.get(v,e),x,b,r)}},t),u.add(i),p[e]=i}})).update((function(e,n){if(d){var i=h.getItemGraphicEl(n),r=i?i.rotation:o,a=w(e,r);a.rotation=r,Fu(a,{rotation:-(Xi(y.get(v,e),x,b,!0)+Math.PI/2)},t),u.add(a),y.setItemGraphicEl(e,a)}if(g){var s=c[n],l=S(e,s?s.shape.endAngle:o),m=f.get("clip");Fu(l,{shape:{endAngle:Xi(y.get(v,e),x,b,m)}},t),u.add(l),p[e]=l}})).execute(),y.each((function(t){var e=y.getItemModel(t),n=e.getModel("emphasis");if(d){var r=y.getItemGraphicEl(t),o=y.getItemVisual(t,"style"),a=o.fill;if(r instanceof Qa){var s=r.style;r.useStyle(I({image:s.image,x:s.x,y:s.y,width:s.width,height:s.height},o))}else r.useStyle(o),"pointer"!==r.type&&r.setColor(a);r.setStyle(e.getModel(["pointer","itemStyle"]).getItemStyle()),"auto"===r.style.fill&&r.setStyle("fill",i(Xi(y.get(v,t),x,[0,1],!0))),r.z2EmphasisLift=0,ul(r,e),ol(r,n.get("focus"),n.get("blurScope"))}if(g){var l=p[t];l.useStyle(y.getItemVisual(t,"style")),l.setStyle(e.getModel(["progress","itemStyle"]).getItemStyle()),l.z2EmphasisLift=0,ul(l,e),ol(l,n.get("focus"),n.get("blurScope"))}})),this._progressEls=p)},e.prototype._renderAnchor=function(t,e){var n=t.getModel("anchor");if(n.get("show")){var i=n.get("size"),r=n.get("icon"),o=n.get("offsetCenter"),a=n.get("keepAspect"),s=py(r,e.cx-i/2+Zi(o[0],e.r),e.cy-i/2+Zi(o[1],e.r),i,i,null,a);s.z2=n.get("showAbove")?1:0,s.setStyle(n.getModel("itemStyle").getItemStyle()),this.group.add(s)}},e.prototype._renderTitleAndDetail=function(t,e,n,i,r){var o=this,a=t.getData(),s=a.mapDimension("value"),l=+t.get("min"),u=+t.get("max"),h=new zi,c=[],p=[],d=t.isAnimationEnabled();a.diff(this._data).add((function(t){c[t]=new us({silent:!0}),p[t]=new us({silent:!0})})).update((function(t,e){c[t]=o._titleEls[e],p[t]=o._detailEls[e]})).execute(),a.each((function(e){var n=a.getItemModel(e),o=a.get(s,e),f=new zi,g=i(Xi(o,[l,u],[0,1],!0)),y=n.getModel("title");if(y.get("show")){var v=y.get("offsetCenter"),m=r.cx+Zi(v[0],r.r),_=r.cy+Zi(v[1],r.r);(C=c[e]).attr({style:hh(y,{x:m,y:_,text:a.getName(e),align:"center",verticalAlign:"middle"},{inheritColor:g})}),f.add(C)}var x=n.getModel("detail");if(x.get("show")){var b=x.get("offsetCenter"),w=r.cx+Zi(b[0],r.r),S=r.cy+Zi(b[1],r.r),M=Zi(x.get("width"),r.r),I=Zi(x.get("height"),r.r),T=t.get(["progress","show"])?a.getItemVisual(e,"style").fill:g,C=p[e],A=x.get("formatter");C.attr({style:hh(x,{x:w,y:S,text:oA(o,A),width:isNaN(M)?null:M,height:isNaN(I)?null:I,align:"center",verticalAlign:"middle"},{inheritColor:T})}),mh(C,{normal:x},o,(function(t){return oA(t,A)})),d&&_h(C,e,a,t,{getFormattedLabel:function(t,e,n,i,r,a){return oA(a?a.interpolatedValue:o,A)}}),f.add(C)}h.add(f)})),this.group.add(h),this._titleEls=c,this._detailEls=p},e.type="gauge",e}(Mf),lA=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.visualStyleAccessPath="itemStyle",n.useColorPaletteOnData=!0,n}return n(e,t),e.prototype.getInitialData=function(t,e){return bS(this,["value"])},e.type="series.gauge",e.defaultOption={zlevel:0,z:2,center:["50%","50%"],legendHoverLink:!0,radius:"75%",startAngle:225,endAngle:-45,clockwise:!0,min:0,max:100,splitNumber:10,axisLine:{show:!0,roundCap:!1,lineStyle:{color:[[1,"#E6EBF8"]],width:10}},progress:{show:!1,overlap:!0,width:10,roundCap:!1,clip:!0},splitLine:{show:!0,length:10,distance:10,lineStyle:{color:"#63677A",width:3,type:"solid"}},axisTick:{show:!0,splitNumber:5,length:6,distance:10,lineStyle:{color:"#63677A",width:1,type:"solid"}},axisLabel:{show:!0,distance:15,color:"#464646",fontSize:12},pointer:{icon:null,offsetCenter:[0,0],show:!0,length:"60%",width:6,keepAspect:!1},anchor:{show:!1,showAbove:!1,size:6,icon:"circle",offsetCenter:[0,0],keepAspect:!1,itemStyle:{color:"#ffffff",borderWidth:0,borderColor:"#5470c6"}},title:{show:!0,offsetCenter:[0,"20%"],color:"#464646",fontSize:16,valueAnimation:!1},detail:{show:!0,backgroundColor:"rgba(0,0,0,0)",borderWidth:0,borderColor:"#cccccc",width:100,height:null,padding:[5,10],offsetCenter:[0,"40%"],color:"#464646",fontSize:30,fontWeight:"bold",lineHeight:30,valueAnimation:!1}},e}(pf);var uA=["itemStyle","opacity"],hA=function(t){function e(e,n){var i=t.call(this)||this,r=i,o=new ru,a=new us;return r.setTextContent(a),i.setTextGuideLine(o),i.updateData(e,n,!0),i}return n(e,t),e.prototype.updateData=function(t,e,n){var i=this,r=t.hostModel,o=t.getItemModel(e),a=t.getItemLayout(e),s=o.getModel("emphasis"),l=o.get(uA);l=null==l?1:l,i.useStyle(t.getItemVisual(e,"style")),i.style.lineJoin="round",n?(i.setShape({points:a.points}),i.style.opacity=0,Gu(i,{style:{opacity:l}},r,e)):Fu(i,{style:{opacity:l},shape:{points:a.points}},r,e),ul(i,o),this._updateLabel(t,e),ol(this,s.get("focus"),s.get("blurScope"))},e.prototype._updateLabel=function(t,e){var n=this,i=this.getTextGuideLine(),r=n.getTextContent(),o=t.hostModel,a=t.getItemModel(e),s=t.getItemLayout(e).label,l=t.getItemVisual(e,"style"),u=l.fill;lh(r,uh(a),{labelFetcher:t.hostModel,labelDataIndex:e,defaultOpacity:l.opacity,defaultText:t.getName(e)},{normal:{align:s.textAlign,verticalAlign:s.verticalAlign}}),n.setTextConfig({local:!0,inside:!!s.inside,insideStroke:u,outsideFill:u});var h=s.linePoints;i.setShape({points:h}),n.textGuideLineConfig={anchor:h?new In(h[0][0],h[0][1]):null},Fu(r,{style:{x:s.x,y:s.y}},o,e),r.attr({rotation:s.rotation,originX:s.x,originY:s.y,z2:10}),Fg(n,Gg(a),{stroke:u})},e}(nu),cA=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.ignoreLabelLineUpdate=!0,n}return n(e,t),e.prototype.render=function(t,e,n){var i=t.getData(),r=this._data,o=this.group;i.diff(r).add((function(t){var e=new hA(i,t);i.setItemGraphicEl(t,e),o.add(e)})).update((function(t,e){var n=r.getItemGraphicEl(e);n.updateData(i,t),o.add(n),i.setItemGraphicEl(t,n)})).remove((function(e){Uu(r.getItemGraphicEl(e),t,e)})).execute(),this._data=i},e.prototype.remove=function(){this.group.removeAll(),this._data=null},e.prototype.dispose=function(){},e.type="funnel",e}(Mf),pA=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.useColorPaletteOnData=!0,n}return n(e,t),e.prototype.init=function(e){t.prototype.init.apply(this,arguments),this.legendVisualProvider=new wS(B(this.getData,this),B(this.getRawData,this)),this._defaultLabelLine(e)},e.prototype.getInitialData=function(t,e){return bS(this,{coordDimensions:["value"],encodeDefaulter:V(sp,this)})},e.prototype._defaultLabelLine=function(t){xr(t,"labelLine",["show"]);var e=t.labelLine,n=t.emphasis.labelLine;e.show=e.show&&t.label.show,n.show=n.show&&t.emphasis.label.show},e.prototype.getDataParams=function(e){var n=this.getData(),i=t.prototype.getDataParams.call(this,e),r=n.mapDimension("value"),o=n.getSum(r);return i.percent=o?+(n.get(r,e)/o*100).toFixed(2):0,i.$vars.push("percent"),i},e.type="series.funnel",e.defaultOption={zlevel:0,z:2,legendHoverLink:!0,left:80,top:60,right:80,bottom:60,minSize:"0%",maxSize:"100%",sort:"descending",orient:"vertical",gap:0,funnelAlign:"center",label:{show:!0,position:"outer"},labelLine:{show:!0,length:20,lineStyle:{width:1}},itemStyle:{borderColor:"#ffffff",borderWidth:1},emphasis:{label:{show:!0}},select:{itemStyle:{borderColor:"#212121"}}},e}(pf);function dA(t,e){t.eachSeriesByType("funnel",(function(t){var n=t.getData(),i=n.mapDimension("value"),r=t.get("sort"),o=function(t,e){return Ec(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}(t,e),a=t.get("orient"),s=o.width,l=o.height,u=function(t,e){for(var n=t.mapDimension("value"),i=t.mapArray(n,(function(t){return t})),r=[],o="ascending"===e,a=0,s=t.count();a<s;a++)r[a]=a;return"function"==typeof e?r.sort(e):"none"!==e&&r.sort((function(t,e){return o?i[t]-i[e]:i[e]-i[t]})),r}(n,r),h=o.x,c=o.y,p="horizontal"===a?[Zi(t.get("minSize"),l),Zi(t.get("maxSize"),l)]:[Zi(t.get("minSize"),s),Zi(t.get("maxSize"),s)],d=n.getDataExtent(i),f=t.get("min"),g=t.get("max");null==f&&(f=Math.min(d[0],0)),null==g&&(g=d[1]);var y=t.get("funnelAlign"),v=t.get("gap"),m=(("horizontal"===a?s:l)-v*(n.count()-1))/n.count(),_=function(t,e){if("horizontal"===a){var r=Xi(n.get(i,t)||0,[f,g],p,!0),o=void 0;switch(y){case"top":o=c;break;case"center":o=c+(l-r)/2;break;case"bottom":o=c+(l-r)}return[[e,o],[e,o+r]]}var u,d=Xi(n.get(i,t)||0,[f,g],p,!0);switch(y){case"left":u=h;break;case"center":u=h+(s-d)/2;break;case"right":u=h+s-d}return[[u,e],[u+d,e]]};"ascending"===r&&(m=-m,v=-v,"horizontal"===a?h+=s:c+=l,u=u.reverse());for(var x=0;x<u.length;x++){var b=u[x],w=u[x+1],S=n.getItemModel(b);if("horizontal"===a){var M=S.get(["itemStyle","width"]);null==M?M=m:(M=Zi(M,s),"ascending"===r&&(M=-M));var I=_(b,h),T=_(w,h+M);h+=M+v,n.setItemLayout(b,{points:I.concat(T.slice().reverse())})}else{var C=S.get(["itemStyle","height"]);null==C?C=m:(C=Zi(C,l),"ascending"===r&&(C=-C));I=_(b,c),T=_(w,c+C);c+=C+v,n.setItemLayout(b,{points:I.concat(T.slice().reverse())})}}!function(t){var e=t.hostModel.get("orient");t.each((function(n){var i,r,o,a,s=t.getItemModel(n),l=s.getModel("label").get("position"),u=s.getModel("labelLine"),h=t.getItemLayout(n),c=h.points,p="inner"===l||"inside"===l||"center"===l||"insideLeft"===l||"insideRight"===l;if(p)"insideLeft"===l?(r=(c[0][0]+c[3][0])/2+5,o=(c[0][1]+c[3][1])/2,i="left"):"insideRight"===l?(r=(c[1][0]+c[2][0])/2-5,o=(c[1][1]+c[2][1])/2,i="right"):(r=(c[0][0]+c[1][0]+c[2][0]+c[3][0])/4,o=(c[0][1]+c[1][1]+c[2][1]+c[3][1])/4,i="center"),a=[[r,o],[r,o]];else{var d=void 0,f=void 0,g=void 0,y=void 0,v=u.get("length");"left"===l?(d=(c[3][0]+c[0][0])/2,f=(c[3][1]+c[0][1])/2,r=(g=d-v)-5,i="right"):"right"===l?(d=(c[1][0]+c[2][0])/2,f=(c[1][1]+c[2][1])/2,r=(g=d+v)+5,i="left"):"top"===l?(d=(c[3][0]+c[0][0])/2,o=(y=(f=(c[3][1]+c[0][1])/2)-v)-5,i="center"):"bottom"===l?(d=(c[1][0]+c[2][0])/2,o=(y=(f=(c[1][1]+c[2][1])/2)+v)+5,i="center"):"rightTop"===l?(d="horizontal"===e?c[3][0]:c[1][0],f="horizontal"===e?c[3][1]:c[1][1],"horizontal"===e?(o=(y=f-v)-5,i="center"):(r=(g=d+v)+5,i="top")):"rightBottom"===l?(d=c[2][0],f=c[2][1],"horizontal"===e?(o=(y=f+v)+5,i="center"):(r=(g=d+v)+5,i="bottom")):"leftTop"===l?(d=c[0][0],f="horizontal"===e?c[0][1]:c[1][1],"horizontal"===e?(o=(y=f-v)-5,i="center"):(r=(g=d-v)-5,i="right")):"leftBottom"===l?(d="horizontal"===e?c[1][0]:c[3][0],f="horizontal"===e?c[1][1]:c[2][1],"horizontal"===e?(o=(y=f+v)+5,i="center"):(r=(g=d-v)-5,i="right")):(d=(c[1][0]+c[2][0])/2,f=(c[1][1]+c[2][1])/2,"horizontal"===e?(o=(y=f+v)+5,i="center"):(r=(g=d+v)+5,i="left")),"horizontal"===e?r=g=d:o=y=f,a=[[d,f],[g,y]]}h.label={linePoints:a,x:r,y:o,verticalAlign:"middle",textAlign:i,inside:p}}))}(n)}))}var fA=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n._dataGroup=new zi,n._initialized=!1,n}return n(e,t),e.prototype.init=function(){this.group.add(this._dataGroup)},e.prototype.render=function(t,e,n,i){var r=this._dataGroup,o=t.getData(),a=this._data,s=t.coordinateSystem,l=s.dimensions,u=vA(t);if(o.diff(a).add((function(t){mA(yA(o,r,t,l,s),o,t,u)})).update((function(e,n){var i=a.getItemGraphicEl(n),r=gA(o,e,l,s);o.setItemGraphicEl(e,i),Fu(i,{shape:{points:r}},t,e),mA(i,o,e,u)})).remove((function(t){var e=a.getItemGraphicEl(t);r.remove(e)})).execute(),!this._initialized){this._initialized=!0;var h=function(t,e,n){var i=t.model,r=t.getRect(),o=new as({shape:{x:r.x,y:r.y,width:r.width,height:r.height}}),a="horizontal"===i.get("layout")?"width":"height";return o.setShape(a,0),Gu(o,{shape:{width:r.width,height:r.height}},e,n),o}(s,t,(function(){setTimeout((function(){r.removeClipPath()}))}));r.setClipPath(h)}this._data=o},e.prototype.incrementalPrepareRender=function(t,e,n){this._initialized=!0,this._data=null,this._dataGroup.removeAll()},e.prototype.incrementalRender=function(t,e,n){for(var i=e.getData(),r=e.coordinateSystem,o=r.dimensions,a=vA(e),s=t.start;s<t.end;s++){var l=yA(i,this._dataGroup,s,o,r);l.incremental=!0,mA(l,i,s,a)}},e.prototype.remove=function(){this._dataGroup&&this._dataGroup.removeAll(),this._data=null},e.type="parallel",e}(Mf);function gA(t,e,n,i){for(var r,o=[],a=0;a<n.length;a++){var s=n[a],l=t.get(t.mapDimension(s),e);r=l,("category"===i.getAxis(s).type?null==r:null==r||isNaN(r))||o.push(i.dataToPoint(l,s))}return o}function yA(t,e,n,i,r){var o=gA(t,n,i,r),a=new ru({shape:{points:o},z2:10});return e.add(a),t.setItemGraphicEl(n,a),a}function vA(t){var e=t.get("smooth",!0);return!0===e&&(e=.3),J(e=hr(e))&&(e=0),{smooth:e}}function mA(t,e,n,i){t.useStyle(e.getItemVisual(n,"style")),t.style.fill=null,t.setShape("smooth",i.smooth);var r=e.getItemModel(n),o=r.getModel("emphasis");ul(t,r,"lineStyle"),ol(t,o.get("focus"),o.get("blurScope"))}var _A=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.visualStyleAccessPath="lineStyle",n.visualDrawType="stroke",n}return n(e,t),e.prototype.getInitialData=function(t,e){return E_(this.getSource(),this,{useEncodeDefaulter:B(xA,null,this)})},e.prototype.getRawIndicesByActiveState=function(t){var e=this.coordinateSystem,n=this.getData(),i=[];return e.eachActiveState(n,(function(e,r){t===e&&i.push(n.getRawIndex(r))})),i},e.type="series.parallel",e.dependencies=["parallel"],e.defaultOption={zlevel:0,z:2,coordinateSystem:"parallel",parallelIndex:0,label:{show:!1},inactiveOpacity:.05,activeOpacity:1,lineStyle:{width:1,opacity:.45,type:"solid"},emphasis:{label:{show:!1}},progressive:500,smooth:!1,animationEasing:"linear"},e}(pf);function xA(t){var e=t.ecModel.getComponent("parallel",t.get("parallelIndex"));if(e){var n={};return P(e.dimensions,(function(t){var e=+t.replace("dim","");n[t]=e})),n}}var bA=["lineStyle","opacity"],wA={seriesType:"parallel",reset:function(t,e){var n=t.coordinateSystem,i={normal:t.get(["lineStyle","opacity"]),active:t.get("activeOpacity"),inactive:t.get("inactiveOpacity")};return{progress:function(t,e){n.eachActiveState(e,(function(t,n){var r=i[t];if("normal"===t&&e.hasItemOption){var o=e.getItemModel(n).get(bA,!0);null!=o&&(r=o)}e.ensureUniqueItemVisual(n,"style").opacity=r}),t.start,t.end)}}}};function SA(t){!function(t){if(t.parallel)return;var e=!1;P(t.series,(function(t){t&&"parallel"===t.type&&(e=!0)})),e&&(t.parallel=[{}])}(t),function(t){P(_r(t.parallelAxis),(function(e){if(Y(e)){var n=e.parallelIndex||0,i=_r(t.parallel)[n];i&&i.parallelAxisDefault&&S(e,i.parallelAxisDefault,!1)}}))}(t)}var MA=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){this._model=t,this._api=n,this._handlers||(this._handlers={},P(IA,(function(t,e){n.getZr().on(e,this._handlers[e]=B(t,this))}),this)),Rf(this,"_throttledDispatchExpand",t.get("axisExpandRate"),"fixRate")},e.prototype.dispose=function(t,e){P(this._handlers,(function(t,n){e.getZr().off(n,t)})),this._handlers=null},e.prototype._throttledDispatchExpand=function(t){this._dispatchExpand(t)},e.prototype._dispatchExpand=function(t){t&&this._api.dispatchAction(I({type:"parallelAxisExpand"},t))},e.type="parallel",e}(xf),IA={mousedown:function(t){TA(this,"click")&&(this._mouseDownPoint=[t.offsetX,t.offsetY])},mouseup:function(t){var e=this._mouseDownPoint;if(TA(this,"click")&&e){var n=[t.offsetX,t.offsetY];if(Math.pow(e[0]-n[0],2)+Math.pow(e[1]-n[1],2)>5)return;var i=this._model.coordinateSystem.getSlidedAxisExpandWindow([t.offsetX,t.offsetY]);"none"!==i.behavior&&this._dispatchExpand({axisExpandWindow:i.axisExpandWindow})}this._mouseDownPoint=null},mousemove:function(t){if(!this._mouseDownPoint&&TA(this,"mousemove")){var e=this._model,n=e.coordinateSystem.getSlidedAxisExpandWindow([t.offsetX,t.offsetY]),i=n.behavior;"jump"===i&&this._throttledDispatchExpand.debounceNextCall(e.get("axisExpandDebounce")),this._throttledDispatchExpand("none"===i?null:{axisExpandWindow:n.axisExpandWindow,animation:"jump"===i?null:{duration:0}})}}};function TA(t,e){var n=t._model;return n.get("axisExpandable")&&n.get("axisExpandTriggerOn")===e}var CA=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.init=function(){t.prototype.init.apply(this,arguments),this.mergeOption({})},e.prototype.mergeOption=function(t){var e=this.option;t&&S(e,t,!0),this._initDimensions()},e.prototype.contains=function(t,e){var n=t.get("parallelIndex");return null!=n&&e.getComponent("parallel",n)===this},e.prototype.setAxisExpand=function(t){P(["axisExpandable","axisExpandCenter","axisExpandCount","axisExpandWidth","axisExpandWindow"],(function(e){t.hasOwnProperty(e)&&(this.option[e]=t[e])}),this)},e.prototype._initDimensions=function(){var t=this.dimensions=[],e=this.parallelAxisIndex=[];P(N(this.ecModel.queryComponents({mainType:"parallelAxis"}),(function(t){return(t.get("parallelIndex")||0)===this.componentIndex}),this),(function(n){t.push("dim"+n.get("dim")),e.push(n.componentIndex)}))},e.type="parallel",e.dependencies=["parallelAxis"],e.layoutMode="box",e.defaultOption={zlevel:0,z:0,left:80,top:60,right:80,bottom:60,layout:"horizontal",axisExpandable:!1,axisExpandCenter:null,axisExpandCount:0,axisExpandWidth:50,axisExpandRate:17,axisExpandDebounce:50,axisExpandSlideTriggerArea:[-.15,.05,.4],axisExpandTriggerOn:"click",parallelAxisDefault:null},e}(Wc),AA=function(t){function e(e,n,i,r,o){var a=t.call(this,e,n,i)||this;return a.type=r||"value",a.axisIndex=o,a}return n(e,t),e.prototype.isHorizontal=function(){return"horizontal"!==this.coordinateSystem.getModel().get("layout")},e}(sb);function DA(t,e,n,i,r,o){t=t||0;var a=n[1]-n[0];if(null!=r&&(r=kA(r,[0,a])),null!=o&&(o=Math.max(o,null!=r?r:0)),"all"===i){var s=Math.abs(e[1]-e[0]);s=kA(s,[0,a]),r=o=kA(s,[r,o]),i=0}e[0]=kA(e[0],n),e[1]=kA(e[1],n);var l=LA(e,i);e[i]+=t;var u,h=r||0,c=n.slice();return l.sign<0?c[0]+=h:c[1]-=h,e[i]=kA(e[i],c),u=LA(e,i),null!=r&&(u.sign!==l.sign||u.span<r)&&(e[1-i]=e[i]+l.sign*r),u=LA(e,i),null!=o&&u.span>o&&(e[1-i]=e[i]+u.sign*o),e}function LA(t,e){var n=t[e]-t[1-e];return{span:Math.abs(n),sign:n>0?-1:n<0?1:e?-1:1}}function kA(t,e){return Math.min(null!=e[1]?e[1]:1/0,Math.max(null!=e[0]?e[0]:-1/0,t))}var PA=P,OA=Math.min,RA=Math.max,NA=Math.floor,EA=Math.ceil,zA=ji,BA=Math.PI,VA=function(){function t(t,e,n){this.type="parallel",this._axesMap=ht(),this._axesLayout={},this.dimensions=t.dimensions,this._model=t,this._init(t,e,n)}return t.prototype._init=function(t,e,n){var i=t.dimensions,r=t.parallelAxisIndex;PA(i,(function(t,n){var i=r[n],o=e.getComponent("parallelAxis",i),a=this._axesMap.set(t,new AA(t,Ex(o),[0,0],o.get("type"),i)),s="category"===a.type;a.onBand=s&&o.get("boundaryGap"),a.inverse=o.get("inverse"),o.axis=a,a.model=o,a.coordinateSystem=o.coordinateSystem=this}),this)},t.prototype.update=function(t,e){this._updateAxesFromSeries(this._model,t)},t.prototype.containPoint=function(t){var e=this._makeLayoutInfo(),n=e.axisBase,i=e.layoutBase,r=e.pixelDimIndex,o=t[1-r],a=t[r];return o>=n&&o<=n+e.axisLength&&a>=i&&a<=i+e.layoutLength},t.prototype.getModel=function(){return this._model},t.prototype._updateAxesFromSeries=function(t,e){e.eachSeries((function(n){if(t.contains(n,e)){var i=n.getData();PA(this.dimensions,(function(t){var e=this._axesMap.get(t);e.scale.unionExtentFromData(i,i.mapDimension(t)),Nx(e.scale,e.model)}),this)}}),this)},t.prototype.resize=function(t,e){this._rect=Ec(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()}),this._layoutAxes()},t.prototype.getRect=function(){return this._rect},t.prototype._makeLayoutInfo=function(){var t,e=this._model,n=this._rect,i=["x","y"],r=["width","height"],o=e.get("layout"),a="horizontal"===o?0:1,s=n[r[a]],l=[0,s],u=this.dimensions.length,h=FA(e.get("axisExpandWidth"),l),c=FA(e.get("axisExpandCount")||0,[0,u]),p=e.get("axisExpandable")&&u>3&&u>c&&c>1&&h>0&&s>0,d=e.get("axisExpandWindow");d?(t=FA(d[1]-d[0],l),d[1]=d[0]+t):(t=FA(h*(c-1),l),(d=[h*(e.get("axisExpandCenter")||NA(u/2))-t/2])[1]=d[0]+t);var f=(s-t)/(u-c);f<3&&(f=0);var g=[NA(zA(d[0]/h,1))+1,EA(zA(d[1]/h,1))-1],y=f/h*d[0];return{layout:o,pixelDimIndex:a,layoutBase:n[i[a]],layoutLength:s,axisBase:n[i[1-a]],axisLength:n[r[1-a]],axisExpandable:p,axisExpandWidth:h,axisCollapseWidth:f,axisExpandWindow:d,axisCount:u,winInnerIndices:g,axisExpandWindow0Pos:y}},t.prototype._layoutAxes=function(){var t=this._rect,e=this._axesMap,n=this.dimensions,i=this._makeLayoutInfo(),r=i.layout;e.each((function(t){var e=[0,i.axisLength],n=t.inverse?1:0;t.setExtent(e[n],e[1-n])})),PA(n,(function(e,n){var o=(i.axisExpandable?HA:GA)(n,i),a={horizontal:{x:o.position,y:i.axisLength},vertical:{x:0,y:o.position}},s={horizontal:BA/2,vertical:0},l=[a[r].x+t.x,a[r].y+t.y],u=s[r],h=[1,0,0,1,0,0];_e(h,h,u),me(h,h,l),this._axesLayout[e]={position:l,rotation:u,transform:h,axisNameAvailableWidth:o.axisNameAvailableWidth,axisLabelShow:o.axisLabelShow,nameTruncateMaxWidth:o.nameTruncateMaxWidth,tickDirection:1,labelDirection:1}}),this)},t.prototype.getAxis=function(t){return this._axesMap.get(t)},t.prototype.dataToPoint=function(t,e){return this.axisCoordToPoint(this._axesMap.get(e).dataToCoord(t),e)},t.prototype.eachActiveState=function(t,e,n,i){null==n&&(n=0),null==i&&(i=t.count());var r=this._axesMap,o=this.dimensions,a=[],s=[];P(o,(function(e){a.push(t.mapDimension(e)),s.push(r.get(e).model)}));for(var l=this.hasAxisBrushed(),u=n;u<i;u++){var h=void 0;if(l){h="active";for(var c=t.getValues(a,u),p=0,d=o.length;p<d;p++){if("inactive"===s[p].getActiveState(c[p])){h="inactive";break}}}else h="normal";e(h,u)}},t.prototype.hasAxisBrushed=function(){for(var t=this.dimensions,e=this._axesMap,n=!1,i=0,r=t.length;i<r;i++)"normal"!==e.get(t[i]).model.getActiveState()&&(n=!0);return n},t.prototype.axisCoordToPoint=function(t,e){return Zu([t,0],this._axesLayout[e].transform)},t.prototype.getAxisLayout=function(t){return w(this._axesLayout[t])},t.prototype.getSlidedAxisExpandWindow=function(t){var e=this._makeLayoutInfo(),n=e.pixelDimIndex,i=e.axisExpandWindow.slice(),r=i[1]-i[0],o=[0,e.axisExpandWidth*(e.axisCount-1)];if(!this.containPoint(t))return{behavior:"none",axisExpandWindow:i};var a,s=t[n]-e.layoutBase-e.axisExpandWindow0Pos,l="slide",u=e.axisCollapseWidth,h=this._model.get("axisExpandSlideTriggerArea"),c=null!=h[0];if(u)c&&u&&s<r*h[0]?(l="jump",a=s-r*h[2]):c&&u&&s>r*(1-h[0])?(l="jump",a=s-r*(1-h[2])):(a=s-r*h[1])>=0&&(a=s-r*(1-h[1]))<=0&&(a=0),(a*=e.axisExpandWidth/u)?DA(a,i,o,"all"):l="none";else{var p=i[1]-i[0];(i=[RA(0,o[1]*s/p-p/2)])[1]=OA(o[1],i[0]+p),i[0]=i[1]-p}return{axisExpandWindow:i,behavior:l}},t}();function FA(t,e){return OA(RA(t,e[0]),e[1])}function GA(t,e){var n=e.layoutLength/(e.axisCount-1);return{position:n*t,axisNameAvailableWidth:n,axisLabelShow:!0}}function HA(t,e){var n,i,r=e.layoutLength,o=e.axisExpandWidth,a=e.axisCount,s=e.axisCollapseWidth,l=e.winInnerIndices,u=s,h=!1;return t<l[0]?(n=t*s,i=s):t<=l[1]?(n=e.axisExpandWindow0Pos+t*o-e.axisExpandWindow[0],u=o,h=!0):(n=r-(a-1-t)*s,i=s),{position:n,axisNameAvailableWidth:u,axisLabelShow:h,nameTruncateMaxWidth:i}}var WA={create:function(t,e){var n=[];return t.eachComponent("parallel",(function(i,r){var o=new VA(i,t,e);o.name="parallel_"+r,o.resize(i,e),i.coordinateSystem=o,o.model=i,n.push(o)})),t.eachSeries((function(t){if("parallel"===t.get("coordinateSystem")){var e=t.getReferringComponents("parallel",Rr).models[0];t.coordinateSystem=e.coordinateSystem}})),n}},UA=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.activeIntervals=[],n}return n(e,t),e.prototype.getAreaSelectStyle=function(){return Kr([["fill","color"],["lineWidth","borderWidth"],["stroke","borderColor"],["width","width"],["opacity","opacity"]])(this.getModel("areaSelectStyle"))},e.prototype.setActiveIntervals=function(t){var e=this.activeIntervals=w(t);if(e)for(var n=e.length-1;n>=0;n--)qi(e[n])},e.prototype.getActiveState=function(t){var e=this.activeIntervals;if(!e.length)return"normal";if(null==t||isNaN(+t))return"inactive";if(1===e.length){var n=e[0];if(n[0]<=t&&t<=n[1])return"active"}else for(var i=0,r=e.length;i<r;i++)if(e[i][0]<=t&&t<=e[i][1])return"active";return"inactive"},e}(Wc);L(UA,Wx);var YA=!0,XA=Math.min,ZA=Math.max,jA=Math.pow,qA="globalPan",KA={w:[0,0],e:[0,1],n:[1,0],s:[1,1]},$A={w:"ew",e:"ew",n:"ns",s:"ns",ne:"nesw",sw:"nesw",nw:"nwse",se:"nwse"},JA={brushStyle:{lineWidth:2,stroke:"rgba(210,219,238,0.3)",fill:"#D2DBEE"},transformable:!0,brushMode:"single",removeOnClick:!1},QA=0,tD=function(t){function e(e){var n=t.call(this)||this;return n._track=[],n._covers=[],n._handlers={},n._zr=e,n.group=new zi,n._uid="brushController_"+QA++,P(CD,(function(t,e){this._handlers[e]=B(t,this)}),n),n}return n(e,t),e.prototype.enableBrush=function(t){return this._brushType&&this._doDisableBrush(),t.brushType&&this._doEnableBrush(t),this},e.prototype._doEnableBrush=function(t){var e=this._zr;this._enableGlobalPan||function(t,e,n){VM(t)[e]=n}(e,qA,this._uid),P(this._handlers,(function(t,n){e.on(n,t)})),this._brushType=t.brushType,this._brushOption=S(w(JA),t,!0)},e.prototype._doDisableBrush=function(){var t=this._zr;!function(t,e,n){var i=VM(t);i[e]===n&&(i[e]=null)}(t,qA,this._uid),P(this._handlers,(function(e,n){t.off(n,e)})),this._brushType=this._brushOption=null},e.prototype.setPanels=function(t){if(t&&t.length){var e=this._panels={};P(t,(function(t){e[t.panelId]=w(t)}))}else this._panels=null;return this},e.prototype.mount=function(t){t=t||{},this._enableGlobalPan=t.enableGlobalPan;var e=this.group;return this._zr.add(e),e.attr({x:t.x||0,y:t.y||0,rotation:t.rotation||0,scaleX:t.scaleX||1,scaleY:t.scaleY||1}),this._transform=e.getLocalTransform(),this},e.prototype.updateCovers=function(t){t=O(t,(function(t){return S(w(JA),t,!0)}));var e=this._covers,n=this._covers=[],i=this,r=this._creatingCover;return new Jm(e,t,(function(t,e){return o(t.__brushOption,e)}),o).add(a).update(a).remove((function(t){e[t]!==r&&i.group.remove(e[t])})).execute(),this;function o(t,e){return(null!=t.id?t.id:"\0-brush-index-"+e)+"-"+t.brushType}function a(o,a){var s=t[o];if(null!=a&&e[a]===r)n[o]=e[a];else{var l=n[o]=null!=a?(e[a].__brushOption=s,e[a]):nD(i,eD(i,s));oD(i,l)}}},e.prototype.unmount=function(){return this.enableBrush(!1),uD(this),this._zr.remove(this.group),this},e.prototype.dispose=function(){this.unmount(),this.off()},e}(Ft);function eD(t,e){var n=DD[e.brushType].createCover(t,e);return n.__brushOption=e,rD(n,e),t.group.add(n),n}function nD(t,e){var n=aD(e);return n.endCreating&&(n.endCreating(t,e),rD(e,e.__brushOption)),e}function iD(t,e){var n=e.__brushOption;aD(e).updateCoverShape(t,e,n.range,n)}function rD(t,e){var n=e.z;null==n&&(n=1e4),t.traverse((function(t){t.z=n,t.z2=n}))}function oD(t,e){aD(e).updateCommon(t,e),iD(t,e)}function aD(t){return DD[t.__brushOption.brushType]}function sD(t,e,n){var i,r=t._panels;if(!r)return YA;var o=t._transform;return P(r,(function(t){t.isTargetByCursor(e,n,o)&&(i=t)})),i}function lD(t,e){var n=t._panels;if(!n)return YA;var i=e.__brushOption.panelId;return null!=i?n[i]:YA}function uD(t){var e=t._covers,n=e.length;return P(e,(function(e){t.group.remove(e)}),t),e.length=0,!!n}function hD(t,e){var n=O(t._covers,(function(t){var e=t.__brushOption,n=w(e.range);return{brushType:e.brushType,panelId:e.panelId,range:n}}));t.trigger("brush",{areas:n,isEnd:!!e.isEnd,removeOnClick:!!e.removeOnClick})}function cD(t){var e=t.length-1;return e<0&&(e=0),[t[0],t[e]]}function pD(t,e,n,i){var r=new zi;return r.add(new as({name:"main",style:yD(n),silent:!0,draggable:!0,cursor:"move",drift:V(_D,t,e,r,["n","s","w","e"]),ondragend:V(hD,e,{isEnd:!0})})),P(i,(function(n){r.add(new as({name:n.join(""),style:{opacity:0},draggable:!0,silent:!0,invisible:!0,drift:V(_D,t,e,r,n),ondragend:V(hD,e,{isEnd:!0})}))})),r}function dD(t,e,n,i){var r=i.brushStyle.lineWidth||0,o=ZA(r,6),a=n[0][0],s=n[1][0],l=a-r/2,u=s-r/2,h=n[0][1],c=n[1][1],p=h-o+r/2,d=c-o+r/2,f=h-a,g=c-s,y=f+r,v=g+r;gD(t,e,"main",a,s,f,g),i.transformable&&(gD(t,e,"w",l,u,o,v),gD(t,e,"e",p,u,o,v),gD(t,e,"n",l,u,y,o),gD(t,e,"s",l,d,y,o),gD(t,e,"nw",l,u,o,o),gD(t,e,"ne",p,u,o,o),gD(t,e,"sw",l,d,o,o),gD(t,e,"se",p,d,o,o))}function fD(t,e){var n=e.__brushOption,i=n.transformable,r=e.childAt(0);r.useStyle(yD(n)),r.attr({silent:!i,cursor:i?"move":"default"}),P([["w"],["e"],["n"],["s"],["s","e"],["s","w"],["n","e"],["n","w"]],(function(n){var r=e.childOfName(n.join("")),o=1===n.length?mD(t,n[0]):function(t,e){var n=[mD(t,e[0]),mD(t,e[1])];return("e"===n[0]||"w"===n[0])&&n.reverse(),n.join("")}(t,n);r&&r.attr({silent:!i,invisible:!i,cursor:i?$A[o]+"-resize":null})}))}function gD(t,e,n,i,r,o,a){var s=e.childOfName(n);s&&s.setShape(function(t){var e=XA(t[0][0],t[1][0]),n=XA(t[0][1],t[1][1]),i=ZA(t[0][0],t[1][0]),r=ZA(t[0][1],t[1][1]);return{x:e,y:n,width:i-e,height:r-n}}(wD(t,e,[[i,r],[i+o,r+a]])))}function yD(t){return T({strokeNoScale:!0},t.brushStyle)}function vD(t,e,n,i){var r=[XA(t,n),XA(e,i)],o=[ZA(t,n),ZA(e,i)];return[[r[0],o[0]],[r[1],o[1]]]}function mD(t,e){return{left:"w",right:"e",top:"n",bottom:"s"}[ju({w:"left",e:"right",n:"top",s:"bottom"}[e],function(t){return Xu(t.group)}(t))]}function _D(t,e,n,i,r,o){var a=n.__brushOption,s=t.toRectRange(a.range),l=bD(e,r,o);P(i,(function(t){var e=KA[t];s[e[0]][e[1]]+=l[e[0]]})),a.range=t.fromRectRange(vD(s[0][0],s[1][0],s[0][1],s[1][1])),oD(e,n),hD(e,{isEnd:!1})}function xD(t,e,n,i){var r=e.__brushOption.range,o=bD(t,n,i);P(r,(function(t){t[0]+=o[0],t[1]+=o[1]})),oD(t,e),hD(t,{isEnd:!1})}function bD(t,e,n){var i=t.group,r=i.transformCoordToLocal(e,n),o=i.transformCoordToLocal(0,0);return[r[0]-o[0],r[1]-o[1]]}function wD(t,e,n){var i=lD(t,e);return i&&i!==YA?i.clipPath(n,t._transform):w(n)}function SD(t){var e=t.event;e.preventDefault&&e.preventDefault()}function MD(t,e,n){return t.childOfName("main").contain(e,n)}function ID(t,e,n,i){var r,o=t._creatingCover,a=t._creatingPanel,s=t._brushOption;if(t._track.push(n.slice()),function(t){var e=t._track;if(!e.length)return!1;var n=e[e.length-1],i=e[0],r=n[0]-i[0],o=n[1]-i[1];return jA(r*r+o*o,.5)>6}(t)||o){if(a&&!o){"single"===s.brushMode&&uD(t);var l=w(s);l.brushType=TD(l.brushType,a),l.panelId=a===YA?null:a.panelId,o=t._creatingCover=eD(t,l),t._covers.push(o)}if(o){var u=DD[TD(t._brushType,a)];o.__brushOption.range=u.getCreatingRange(wD(t,o,t._track)),i&&(nD(t,o),u.updateCommon(t,o)),iD(t,o),r={isEnd:i}}}else i&&"single"===s.brushMode&&s.removeOnClick&&sD(t,e,n)&&uD(t)&&(r={isEnd:i,removeOnClick:!0});return r}function TD(t,e){return"auto"===t?e.defaultBrushType:t}var CD={mousedown:function(t){if(this._dragging)AD(this,t);else if(!t.target||!t.target.draggable){SD(t);var e=this.group.transformCoordToLocal(t.offsetX,t.offsetY);this._creatingCover=null,(this._creatingPanel=sD(this,t,e))&&(this._dragging=!0,this._track=[e.slice()])}},mousemove:function(t){var e=t.offsetX,n=t.offsetY,i=this.group.transformCoordToLocal(e,n);if(function(t,e,n){if(t._brushType&&!function(t,e,n){var i=t._zr;return e<0||e>i.getWidth()||n<0||n>i.getHeight()}(t,e.offsetX,e.offsetY)){var i=t._zr,r=t._covers,o=sD(t,e,n);if(!t._dragging)for(var a=0;a<r.length;a++){var s=r[a].__brushOption;if(o&&(o===YA||s.panelId===o.panelId)&&DD[s.brushType].contain(r[a],n[0],n[1]))return}o&&i.setCursorStyle("crosshair")}}(this,t,i),this._dragging){SD(t);var r=ID(this,t,i,!1);r&&hD(this,r)}},mouseup:function(t){AD(this,t)}};function AD(t,e){if(t._dragging){SD(e);var n=e.offsetX,i=e.offsetY,r=t.group.transformCoordToLocal(n,i),o=ID(t,e,r,!0);t._dragging=!1,t._track=[],t._creatingCover=null,o&&hD(t,o)}}var DD={lineX:LD(0),lineY:LD(1),rect:{createCover:function(t,e){function n(t){return t}return pD({toRectRange:n,fromRectRange:n},t,e,[["w"],["e"],["n"],["s"],["s","e"],["s","w"],["n","e"],["n","w"]])},getCreatingRange:function(t){var e=cD(t);return vD(e[1][0],e[1][1],e[0][0],e[0][1])},updateCoverShape:function(t,e,n,i){dD(t,e,n,i)},updateCommon:fD,contain:MD},polygon:{createCover:function(t,e){var n=new zi;return n.add(new ru({name:"main",style:yD(e),silent:!0})),n},getCreatingRange:function(t){return t},endCreating:function(t,e){e.remove(e.childAt(0)),e.add(new nu({name:"main",draggable:!0,drift:V(xD,t,e),ondragend:V(hD,t,{isEnd:!0})}))},updateCoverShape:function(t,e,n,i){e.childAt(0).setShape({points:wD(t,e,n)})},updateCommon:fD,contain:MD}};function LD(t){return{createCover:function(e,n){return pD({toRectRange:function(e){var n=[e,[0,100]];return t&&n.reverse(),n},fromRectRange:function(e){return e[t]}},e,n,[[["w"],["e"]],[["n"],["s"]]][t])},getCreatingRange:function(e){var n=cD(e);return[XA(n[0][t],n[1][t]),ZA(n[0][t],n[1][t])]},updateCoverShape:function(e,n,i,r){var o,a=lD(e,n);if(a!==YA&&a.getLinearBrushOtherExtent)o=a.getLinearBrushOtherExtent(t);else{var s=e._zr;o=[0,[s.getWidth(),s.getHeight()][1-t]]}var l=[i,o];t&&l.reverse(),dD(e,n,l,r)},updateCommon:fD,contain:MD}}function kD(t){return t=RD(t),function(e){return $u(e,t)}}function PD(t,e){return t=RD(t),function(n){var i=null!=e?e:n,r=i?t.width:t.height,o=i?t.x:t.y;return[o,o+(r||0)]}}function OD(t,e,n){var i=RD(t);return function(t,r){return i.contain(r[0],r[1])&&!ZM(t,e,n)}}function RD(t){return Rn.create(t)}var ND=["axisLine","axisTickLabel","axisName"],ED=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.init=function(e,n){t.prototype.init.apply(this,arguments),(this._brushController=new tD(n.getZr())).on("brush",B(this._onBrush,this))},e.prototype.render=function(t,e,n,i){if(!function(t,e,n){return n&&"axisAreaSelect"===n.type&&e.findComponents({mainType:"parallelAxis",query:n})[0]===t}(t,e,i)){this.axisModel=t,this.api=n,this.group.removeAll();var r=this._axisGroup;if(this._axisGroup=new zi,this.group.add(this._axisGroup),t.get("show")){var o=function(t,e){return e.getComponent("parallel",t.get("parallelIndex"))}(t,e),a=o.coordinateSystem,s=t.getAreaSelectStyle(),l=s.width,u=t.axis.dim,h=I({strokeContainThreshold:l},a.getAxisLayout(u)),c=new $S(t,h);P(ND,c.add,c),this._axisGroup.add(c.getGroup()),this._refreshBrushController(h,s,t,o,l,n),Ku(r,this._axisGroup,t)}}},e.prototype._refreshBrushController=function(t,e,n,i,r,o){var a=n.axis.getExtent(),s=a[1]-a[0],l=Math.min(30,.1*Math.abs(s)),u=Rn.create({x:a[0],y:-r/2,width:s,height:r});u.x-=l,u.width+=2*l,this._brushController.mount({enableGlobalPan:!0,rotation:t.rotation,x:t.position[0],y:t.position[1]}).setPanels([{panelId:"pl",clipPath:kD(u),isTargetByCursor:OD(u,o,i),getLinearBrushOtherExtent:PD(u,0)}]).enableBrush({brushType:"lineX",brushStyle:e,removeOnClick:!0}).updateCovers(function(t){var e=t.axis;return O(t.activeIntervals,(function(t){return{brushType:"lineX",panelId:"pl",range:[e.dataToCoord(t[0],!0),e.dataToCoord(t[1],!0)]}}))}(n))},e.prototype._onBrush=function(t){var e=t.areas,n=this.axisModel,i=n.axis,r=O(e,(function(t){return[i.coordToData(t.range[0],!0),i.coordToData(t.range[1],!0)]}));(!n.option.realtime===t.isEnd||t.removeOnClick)&&this.api.dispatchAction({type:"axisAreaSelect",parallelAxisId:n.id,intervals:r})},e.prototype.dispose=function(){this._brushController.dispose()},e.type="parallelAxis",e}(xf);var zD={type:"axisAreaSelect",event:"axisAreaSelected"};var BD={type:"value",areaSelectStyle:{width:20,borderWidth:1,borderColor:"rgba(160,197,232)",color:"rgba(160,197,232)",opacity:.3},realtime:!0,z:10};function VD(t){t.registerComponentView(MA),t.registerComponentModel(CA),t.registerCoordinateSystem("parallel",WA),t.registerPreprocessor(SA),t.registerComponentModel(UA),t.registerComponentView(ED),ES(t,"parallel",UA,BD),function(t){t.registerAction(zD,(function(t,e){e.eachComponent({mainType:"parallelAxis",query:t},(function(e){e.axis.model.setActiveIntervals(t.intervals)}))})),t.registerAction("parallelAxisExpand",(function(t,e){e.eachComponent({mainType:"parallel",query:t},(function(e){e.setAxisExpand(t)}))}))}(t)}var FD=function(){this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.cpx1=0,this.cpy1=0,this.cpx2=0,this.cpy2=0,this.extent=0},GD=function(t){function e(e){return t.call(this,e)||this}return n(e,t),e.prototype.getDefaultShape=function(){return new FD},e.prototype.buildPath=function(t,e){var n=e.extent;t.moveTo(e.x1,e.y1),t.bezierCurveTo(e.cpx1,e.cpy1,e.cpx2,e.cpy2,e.x2,e.y2),"vertical"===e.orient?(t.lineTo(e.x2+n,e.y2),t.bezierCurveTo(e.cpx2+n,e.cpy2,e.cpx1+n,e.cpy1,e.x1+n,e.y1)):(t.lineTo(e.x2,e.y2+n),t.bezierCurveTo(e.cpx2,e.cpy2+n,e.cpx1,e.cpy1+n,e.x1,e.y1+n)),t.closePath()},e.prototype.highlight=function(){Xs(this)},e.prototype.downplay=function(){Zs(this)},e}(ja),HD=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n._focusAdjacencyDisabled=!1,n}return n(e,t),e.prototype.render=function(t,e,n){var i=this,r=t.getGraph(),o=this.group,a=t.layoutInfo,s=a.width,l=a.height,u=t.getData(),h=t.getData("edge"),c=t.get("orient");this._model=t,o.removeAll(),o.x=a.x,o.y=a.y,r.eachEdge((function(e){var n=new GD,i=vs(n);i.dataIndex=e.dataIndex,i.seriesIndex=t.seriesIndex,i.dataType="edge";var r,a,u,p,d,f,g,y,v=e.getModel(),m=v.getModel("lineStyle"),_=m.get("curveness"),x=e.node1.getLayout(),b=e.node1.getModel(),w=b.get("localX"),S=b.get("localY"),M=e.node2.getLayout(),I=e.node2.getModel(),T=I.get("localX"),C=I.get("localY"),A=e.getLayout();switch(n.shape.extent=Math.max(1,A.dy),n.shape.orient=c,"vertical"===c?(r=(null!=w?w*s:x.x)+A.sy,a=(null!=S?S*l:x.y)+x.dy,u=(null!=T?T*s:M.x)+A.ty,d=r,f=a*(1-_)+(p=null!=C?C*l:M.y)*_,g=u,y=a*_+p*(1-_)):(r=(null!=w?w*s:x.x)+x.dx,a=(null!=S?S*l:x.y)+A.sy,d=r*(1-_)+(u=null!=T?T*s:M.x)*_,f=a,g=r*_+u*(1-_),y=p=(null!=C?C*l:M.y)+A.ty),n.setShape({x1:r,y1:a,x2:u,y2:p,cpx1:d,cpy1:f,cpx2:g,cpy2:y}),n.useStyle(m.getItemStyle()),n.style.fill){case"source":n.style.fill=e.node1.getVisual("color"),n.style.decal=e.node1.getVisual("style").decal;break;case"target":n.style.fill=e.node2.getVisual("color"),n.style.decal=e.node2.getVisual("style").decal;break;case"gradient":var D=e.node1.getVisual("color"),L=e.node2.getVisual("color");"string"==typeof D&&"string"==typeof L&&(n.style.fill=new yu(0,0,1,0,[{color:D,offset:0},{color:L,offset:1}]))}var k=v.getModel("emphasis");ul(n,v,"lineStyle",(function(t){return t.getItemStyle()})),o.add(n),h.setItemGraphicEl(e.dataIndex,n);var P=k.get("focus");ol(n,"adjacency"===P?e.getAdjacentDataIndices():P,k.get("blurScope")),vs(n).dataType="edge"})),r.eachNode((function(e){var n=e.getLayout(),i=e.getModel(),r=i.get("localX"),a=i.get("localY"),h=i.getModel("emphasis"),c=new as({shape:{x:null!=r?r*s:n.x,y:null!=a?a*l:n.y,width:n.dx,height:n.dy},style:i.getModel("itemStyle").getItemStyle(),z2:10});lh(c,uh(i),{labelFetcher:t,labelDataIndex:e.dataIndex,defaultText:e.id}),c.disableLabelAnimation=!0,c.setStyle("fill",e.getVisual("color")),c.setStyle("decal",e.getVisual("style").decal),ul(c,i),o.add(c),u.setItemGraphicEl(e.dataIndex,c),vs(c).dataType="node";var p=h.get("focus");ol(c,"adjacency"===p?e.getAdjacentDataIndices():p,h.get("blurScope"))})),u.eachItemGraphicEl((function(e,r){u.getItemModel(r).get("draggable")&&(e.drift=function(e,o){i._focusAdjacencyDisabled=!0,this.shape.x+=e,this.shape.y+=o,this.dirty(),n.dispatchAction({type:"dragNode",seriesId:t.id,dataIndex:u.getRawIndex(r),localX:this.shape.x/s,localY:this.shape.y/l})},e.ondragend=function(){i._focusAdjacencyDisabled=!1},e.draggable=!0,e.cursor="move")})),!this._data&&t.isAnimationEnabled()&&o.setClipPath(function(t,e,n){var i=new as({shape:{x:t.x-10,y:t.y-10,width:0,height:t.height+20}});return Gu(i,{shape:{width:t.width+20}},e,n),i}(o.getBoundingRect(),t,(function(){o.removeClipPath()}))),this._data=t.getData()},e.prototype.dispose=function(){},e.type="sankey",e}(Mf);var WD=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.getInitialData=function(t,e){var n=t.edges||t.links,i=t.data||t.nodes,r=t.levels;this.levelModels=[];for(var o=this.levelModels,a=0;a<r.length;a++)null!=r[a].depth&&r[a].depth>=0&&(o[r[a].depth]=new kh(r[a],this,e));if(i&&n)return tA(i,n,this,!0,(function(t,e){t.wrapMethod("getItemModel",(function(t,e){var n=t.parentModel,i=n.getData().getItemLayout(e);if(i){var r=i.depth,o=n.levelModels[r];o&&(t.parentModel=o)}return t})),e.wrapMethod("getItemModel",(function(t,e){var n=t.parentModel,i=n.getGraph().getEdgeByIndex(e).node1.getLayout();if(i){var r=i.depth,o=n.levelModels[r];o&&(t.parentModel=o)}return t}))})).data},e.prototype.setNodePosition=function(t,e){var n=this.option.data[t];n.localX=e[0],n.localY=e[1]},e.prototype.getGraph=function(){return this.getData().graph},e.prototype.getEdgeData=function(){return this.getGraph().edgeData},e.prototype.formatTooltip=function(t,e,n){function i(t){return isNaN(t)||null==t}if("edge"===n){var r=this.getDataParams(t,n),o=r.data,a=r.value;return Jd("nameValue",{name:o.source+" -- "+o.target,value:a,noValue:i(a)})}var s=this.getGraph().getNodeByIndex(t).getLayout().value,l=this.getDataParams(t,n).data.name;return Jd("nameValue",{name:null!=l?l+"":null,value:s,noValue:i(s)})},e.prototype.optionUpdated=function(){this.option},e.prototype.getDataParams=function(e,n){var i=t.prototype.getDataParams.call(this,e,n);if(null==i.value&&"node"===n){var r=this.getGraph().getNodeByIndex(e).getLayout().value;i.value=r}return i},e.type="series.sankey",e.defaultOption={zlevel:0,z:2,coordinateSystem:"view",left:"5%",top:"5%",right:"20%",bottom:"5%",orient:"horizontal",nodeWidth:20,nodeGap:8,draggable:!0,layoutIterations:32,label:{show:!0,position:"right",fontSize:12},levels:[],nodeAlign:"justify",lineStyle:{color:"#314656",opacity:.2,curveness:.5},emphasis:{label:{show:!0},lineStyle:{opacity:.5}},select:{itemStyle:{borderColor:"#212121"}},animationEasing:"linear",animationDuration:1e3},e}(pf);function UD(t,e){t.eachSeriesByType("sankey",(function(t){var n=t.get("nodeWidth"),i=t.get("nodeGap"),r=function(t,e){return Ec(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}(t,e);t.layoutInfo=r;var o=r.width,a=r.height,s=t.getGraph(),l=s.nodes,u=s.edges;!function(t){P(t,(function(t){var e=tL(t.outEdges,QD),n=tL(t.inEdges,QD),i=t.getValue()||0,r=Math.max(e,n,i);t.setLayout({value:r},!0)}))}(l),function(t,e,n,i,r,o,a,s,l){(function(t,e,n,i,r,o,a){for(var s=[],l=[],u=[],h=[],c=0,p=0;p<e.length;p++)s[p]=1;for(p=0;p<t.length;p++)l[p]=t[p].inEdges.length,0===l[p]&&u.push(t[p]);var d=-1;for(;u.length;){for(var f=0;f<u.length;f++){var g=u[f],y=g.hostGraph.data.getRawDataItem(g.dataIndex),v=null!=y.depth&&y.depth>=0;v&&y.depth>d&&(d=y.depth),g.setLayout({depth:v?y.depth:c},!0),"vertical"===o?g.setLayout({dy:n},!0):g.setLayout({dx:n},!0);for(var m=0;m<g.outEdges.length;m++){var _=g.outEdges[m];s[e.indexOf(_)]=0;var x=_.node2;0==--l[t.indexOf(x)]&&h.indexOf(x)<0&&h.push(x)}}++c,u=h,h=[]}for(p=0;p<s.length;p++)if(1===s[p])throw new Error("Sankey is a DAG, the original data has cycle!");var b=d>c-1?d:c-1;a&&"left"!==a&&function(t,e,n,i){if("right"===e){for(var r=[],o=t,a=0;o.length;){for(var s=0;s<o.length;s++){var l=o[s];l.setLayout({skNodeHeight:a},!0);for(var u=0;u<l.inEdges.length;u++){var h=l.inEdges[u];r.indexOf(h.node1)<0&&r.push(h.node1)}}o=r,r=[],++a}P(t,(function(t){YD(t)||t.setLayout({depth:Math.max(0,i-t.getLayout().skNodeHeight)},!0)}))}else"justify"===e&&function(t,e){P(t,(function(t){YD(t)||t.outEdges.length||t.setLayout({depth:e},!0)}))}(t,i)}(t,a,0,b);!function(t,e,n){P(t,(function(t){var i=t.getLayout().depth*e;"vertical"===n?t.setLayout({y:i},!0):t.setLayout({x:i},!0)}))}(t,"vertical"===o?(r-n)/b:(i-n)/b,o)})(t,e,n,r,o,s,l),function(t,e,n,i,r,o,a){var s=function(t,e){var n=[],i="vertical"===e?"y":"x",r=Br(t,(function(t){return t.getLayout()[i]}));return r.keys.sort((function(t,e){return t-e})),P(r.keys,(function(t){n.push(r.buckets.get(t))})),n}(t,a);(function(t,e,n,i,r,o){var a=1/0;P(t,(function(t){var e=t.length,s=0;P(t,(function(t){s+=t.getLayout().value}));var l="vertical"===o?(i-(e-1)*r)/s:(n-(e-1)*r)/s;l<a&&(a=l)})),P(t,(function(t){P(t,(function(t,e){var n=t.getLayout().value*a;"vertical"===o?(t.setLayout({x:e},!0),t.setLayout({dx:n},!0)):(t.setLayout({y:e},!0),t.setLayout({dy:n},!0))}))})),P(e,(function(t){var e=+t.getValue()*a;t.setLayout({dy:e},!0)}))})(s,e,n,i,r,a),XD(s,r,n,i,a);for(var l=1;o>0;o--)ZD(s,l*=.99,a),XD(s,r,n,i,a),eL(s,l,a),XD(s,r,n,i,a)}(t,e,o,r,i,a,s),function(t,e){var n="vertical"===e?"x":"y";P(t,(function(t){t.outEdges.sort((function(t,e){return t.node2.getLayout()[n]-e.node2.getLayout()[n]})),t.inEdges.sort((function(t,e){return t.node1.getLayout()[n]-e.node1.getLayout()[n]}))})),P(t,(function(t){var e=0,n=0;P(t.outEdges,(function(t){t.setLayout({sy:e},!0),e+=t.getLayout().dy})),P(t.inEdges,(function(t){t.setLayout({ty:n},!0),n+=t.getLayout().dy}))}))}(t,s)}(l,u,n,i,o,a,0!==N(l,(function(t){return 0===t.getLayout().value})).length?0:t.get("layoutIterations"),t.get("orient"),t.get("nodeAlign"))}))}function YD(t){var e=t.hostGraph.data.getRawDataItem(t.dataIndex);return null!=e.depth&&e.depth>=0}function XD(t,e,n,i,r){var o="vertical"===r?"x":"y";P(t,(function(t){var a,s,l;t.sort((function(t,e){return t.getLayout()[o]-e.getLayout()[o]}));for(var u=0,h=t.length,c="vertical"===r?"dx":"dy",p=0;p<h;p++)(l=u-(s=t[p]).getLayout()[o])>0&&(a=s.getLayout()[o]+l,"vertical"===r?s.setLayout({x:a},!0):s.setLayout({y:a},!0)),u=s.getLayout()[o]+s.getLayout()[c]+e;if((l=u-e-("vertical"===r?i:n))>0){a=s.getLayout()[o]-l,"vertical"===r?s.setLayout({x:a},!0):s.setLayout({y:a},!0),u=a;for(p=h-2;p>=0;--p)(l=(s=t[p]).getLayout()[o]+s.getLayout()[c]+e-u)>0&&(a=s.getLayout()[o]-l,"vertical"===r?s.setLayout({x:a},!0):s.setLayout({y:a},!0)),u=s.getLayout()[o]}}))}function ZD(t,e,n){P(t.slice().reverse(),(function(t){P(t,(function(t){if(t.outEdges.length){var i=tL(t.outEdges,jD,n)/tL(t.outEdges,QD);if(isNaN(i)){var r=t.outEdges.length;i=r?tL(t.outEdges,qD,n)/r:0}if("vertical"===n){var o=t.getLayout().x+(i-JD(t,n))*e;t.setLayout({x:o},!0)}else{var a=t.getLayout().y+(i-JD(t,n))*e;t.setLayout({y:a},!0)}}}))}))}function jD(t,e){return JD(t.node2,e)*t.getValue()}function qD(t,e){return JD(t.node2,e)}function KD(t,e){return JD(t.node1,e)*t.getValue()}function $D(t,e){return JD(t.node1,e)}function JD(t,e){return"vertical"===e?t.getLayout().x+t.getLayout().dx/2:t.getLayout().y+t.getLayout().dy/2}function QD(t){return t.getValue()}function tL(t,e,n){for(var i=0,r=t.length,o=-1;++o<r;){var a=+e(t[o],n);isNaN(a)||(i+=a)}return i}function eL(t,e,n){P(t,(function(t){P(t,(function(t){if(t.inEdges.length){var i=tL(t.inEdges,KD,n)/tL(t.inEdges,QD);if(isNaN(i)){var r=t.inEdges.length;i=r?tL(t.inEdges,$D,n)/r:0}if("vertical"===n){var o=t.getLayout().x+(i-JD(t,n))*e;t.setLayout({x:o},!0)}else{var a=t.getLayout().y+(i-JD(t,n))*e;t.setLayout({y:a},!0)}}}))}))}function nL(t){t.eachSeriesByType("sankey",(function(t){var e=t.getGraph().nodes;if(e.length){var n=1/0,i=-1/0;P(e,(function(t){var e=t.getLayout().value;e<n&&(n=e),e>i&&(i=e)})),P(e,(function(e){var r=new ST({type:"color",mappingMethod:"linear",dataExtent:[n,i],visual:t.get("color")}).mapValueToVisual(e.getLayout().value),o=e.getModel().get(["itemStyle","color"]);null!=o?(e.setVisual("color",o),e.setVisual("style",{fill:o})):(e.setVisual("color",r),e.setVisual("style",{fill:r}))}))}}))}var iL=function(){function t(){}return t.prototype.getInitialData=function(t,e){var n,i,r=e.getComponent("xAxis",this.get("xAxisIndex")),o=e.getComponent("yAxis",this.get("yAxisIndex")),a=r.get("type"),s=o.get("type");"category"===a?(t.layout="horizontal",n=r.getOrdinalMeta(),i=!0):"category"===s?(t.layout="vertical",n=o.getOrdinalMeta(),i=!0):t.layout=t.layout||"horizontal";var l=["x","y"],u="horizontal"===t.layout?0:1,h=this._baseAxisDim=l[u],c=l[1-u],p=[r,o],d=p[u].get("type"),f=p[1-u].get("type"),g=t.data;if(g&&i){var y=[];P(g,(function(t,e){var n;F(t)?(n=t.slice(),t.unshift(e)):F(t.value)?(n=t.value.slice(),t.value.unshift(e)):n=t,y.push(n)})),t.data=y}var v=this.defaultValueDimensions,m=[{name:h,type:t_(d),ordinalMeta:n,otherDims:{tooltip:!1,itemName:0},dimsDef:["base"]},{name:c,type:t_(f),dimsDef:v.slice()}];return bS(this,{coordDimensions:m,dimensionsCount:v.length+1,encodeDefaulter:V(ap,m,this)})},t.prototype.getBaseAxis=function(){var t=this._baseAxisDim;return this.ecModel.getComponent(t+"Axis",this.get(t+"AxisIndex")).axis},t}(),rL=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.defaultValueDimensions=[{name:"min",defaultTooltip:!0},{name:"Q1",defaultTooltip:!0},{name:"median",defaultTooltip:!0},{name:"Q3",defaultTooltip:!0},{name:"max",defaultTooltip:!0}],n.visualDrawType="stroke",n}return n(e,t),e.type="series.boxplot",e.dependencies=["xAxis","yAxis","grid"],e.defaultOption={zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,layout:null,boxWidth:[7,50],itemStyle:{color:"#ffffff",borderWidth:1},emphasis:{scale:!0,itemStyle:{borderWidth:2,shadowBlur:5,shadowOffsetX:1,shadowOffsetY:1,shadowColor:"rgba(0,0,0,0.2)"}},animationDuration:800},e}(pf);L(rL,iL,!0);var oL=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){var i=t.getData(),r=this.group,o=this._data;this._data||r.removeAll();var a="horizontal"===t.get("layout")?1:0;i.diff(o).add((function(t){if(i.hasValue(t)){var e=lL(i.getItemLayout(t),i,t,a,!0);i.setItemGraphicEl(t,e),r.add(e)}})).update((function(t,e){var n=o.getItemGraphicEl(e);if(i.hasValue(t)){var s=i.getItemLayout(t);n?uL(s,n,i,t):n=lL(s,i,t,a),r.add(n),i.setItemGraphicEl(t,n)}else r.remove(n)})).remove((function(t){var e=o.getItemGraphicEl(t);e&&r.remove(e)})).execute(),this._data=i},e.prototype.remove=function(t){var e=this.group,n=this._data;this._data=null,n&&n.eachItemGraphicEl((function(t){t&&e.remove(t)}))},e.type="boxplot",e}(Mf),aL=function(){},sL=function(t){function e(e){var n=t.call(this,e)||this;return n.type="boxplotBoxPath",n}return n(e,t),e.prototype.getDefaultShape=function(){return new aL},e.prototype.buildPath=function(t,e){var n=e.points,i=0;for(t.moveTo(n[i][0],n[i][1]),i++;i<4;i++)t.lineTo(n[i][0],n[i][1]);for(t.closePath();i<n.length;i++)t.moveTo(n[i][0],n[i][1]),i++,t.lineTo(n[i][0],n[i][1])},e}(ja);function lL(t,e,n,i,r){var o=t.ends,a=new sL({shape:{points:r?hL(o,i,t):o}});return uL(t,a,e,n,r),a}function uL(t,e,n,i,r){var o=n.hostModel;(0,rh[r?"initProps":"updateProps"])(e,{shape:{points:t.ends}},o,i),e.useStyle(n.getItemVisual(i,"style")),e.style.strokeNoScale=!0,e.z2=100;var a=n.getItemModel(i);ul(e,a),ol(e,a.get(["emphasis","focus"]),a.get(["emphasis","blurScope"]))}function hL(t,e,n){return O(t,(function(t){return(t=t.slice())[e]=n.initBaseline,t}))}function cL(t,e){}var pL=P;function dL(t){var e=function(t){var e=[],n=[];return t.eachSeriesByType("boxplot",(function(t){var i=t.getBaseAxis(),r=A(n,i);r<0&&(r=n.length,n[r]=i,e[r]={axis:i,seriesModels:[]}),e[r].seriesModels.push(t)})),e}(t);pL(e,(function(t){var e=t.seriesModels;e.length&&(!function(t){var e,n,i=t.axis,r=t.seriesModels,o=r.length,a=t.boxWidthList=[],s=t.boxOffsetList=[],l=[];if("category"===i.type)n=i.getBandWidth();else{var u=0;pL(r,(function(t){u=Math.max(u,t.getData().count())})),e=i.getExtent(),Math.abs(e[1]-e[0])}pL(r,(function(t){var e=t.get("boxWidth");F(e)||(e=[e,e]),l.push([Zi(e[0],n)||0,Zi(e[1],n)||0])}));var h=.8*n-2,c=h/o*.3,p=(h-c*(o-1))/o,d=p/2-h/2;pL(r,(function(t,e){s.push(d),d+=c+p,a.push(Math.min(Math.max(p,l[e][0]),l[e][1]))}))}(t),pL(e,(function(e,n){!function(t,e,n){var i=t.coordinateSystem,r=t.getData(),o=n/2,a="horizontal"===t.get("layout")?0:1,s=1-a,l=["x","y"],u=r.mapDimension(l[a]),h=r.mapDimensionsAll(l[s]);if(null==u||h.length<5)return;for(var c=0;c<r.count();c++){var p=r.get(u,c),d=_(p,h[2],c),f=_(p,h[0],c),g=_(p,h[1],c),y=_(p,h[3],c),v=_(p,h[4],c),m=[];x(m,g,!1),x(m,y,!0),m.push(f,g,v,y),b(m,f),b(m,v),b(m,d),r.setItemLayout(c,{initBaseline:d[s],ends:m})}function _(t,n,o){var l,u=r.get(n,o),h=[];return h[a]=t,h[s]=u,isNaN(t)||isNaN(u)?l=[NaN,NaN]:(l=i.dataToPoint(h))[a]+=e,l}function x(t,e,n){var i=e.slice(),r=e.slice();i[a]+=o,r[a]-=o,n?t.push(i,r):t.push(r,i)}function b(t,e){var n=e.slice(),i=e.slice();n[a]-=o,i[a]+=o,t.push(n,i)}}(e,t.boxOffsetList[n],t.boxWidthList[n])})))}))}var fL={type:"echarts:boxplot",transform:function(t){var e=t.upstream;if(e.sourceFormat!==qc){var n="";0,yr(n)}var i=function(t,e){for(var n=[],i=[],r=(e=e||{}).boundIQR,o="none"===r||0===r,a=0;a<t.length;a++){var s=qi(t[a].slice()),l=lr(s,.25),u=lr(s,.5),h=lr(s,.75),c=s[0],p=s[s.length-1],d=(null==r?1.5:r)*(h-l),f=o?c:Math.max(c,l-d),g=o?p:Math.min(p,h+d),y=e.itemNameFormatter,v=G(y)?y({value:a}):H(y)?y.replace("{value}",a+""):a+"";n.push([v,f,l,u,h,g]);for(var m=0;m<s.length;m++){var _=s[m];if(_<f||_>g){var x=[v,_];i.push(x)}}}return{boxData:n,outliers:i}}(e.getRawData(),t.config);return[{dimensions:["ItemName","Low","Q1","Q2","Q3","High"],data:i.boxData},{data:i.outliers}]}};var gL=["color","borderColor"],yL=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){this.group.removeClipPath(),this._updateDrawMode(t),this._isLargeDraw?this._renderLarge(t):this._renderNormal(t)},e.prototype.incrementalPrepareRender=function(t,e,n){this._clear(),this._updateDrawMode(t)},e.prototype.incrementalRender=function(t,e,n,i){this._isLargeDraw?this._incrementalRenderLarge(t,e):this._incrementalRenderNormal(t,e)},e.prototype._updateDrawMode=function(t){var e=t.pipelineContext.large;null!=this._isLargeDraw&&e===this._isLargeDraw||(this._isLargeDraw=e,this._clear())},e.prototype._renderNormal=function(t){var e=t.getData(),n=this._data,i=this.group,r=e.getLayout("isSimpleBox"),o=t.get("clip",!0),a=t.coordinateSystem,s=a.getArea&&a.getArea();this._data||i.removeAll(),e.diff(n).add((function(n){if(e.hasValue(n)){var a=e.getItemLayout(n);if(o&&xL(s,a))return;var l=_L(a,n,!0);Gu(l,{shape:{points:a.ends}},t,n),bL(l,e,n,r),i.add(l),e.setItemGraphicEl(n,l)}})).update((function(a,l){var u=n.getItemGraphicEl(l);if(e.hasValue(a)){var h=e.getItemLayout(a);o&&xL(s,h)?i.remove(u):(u?Fu(u,{shape:{points:h.ends}},t,a):u=_L(h),bL(u,e,a,r),i.add(u),e.setItemGraphicEl(a,u))}else i.remove(u)})).remove((function(t){var e=n.getItemGraphicEl(t);e&&i.remove(e)})).execute(),this._data=e},e.prototype._renderLarge=function(t){this._clear(),IL(t,this.group);var e=t.get("clip",!0)?kw(t.coordinateSystem,!1,t):null;e?this.group.setClipPath(e):this.group.removeClipPath()},e.prototype._incrementalRenderNormal=function(t,e){for(var n,i=e.getData(),r=i.getLayout("isSimpleBox");null!=(n=t.next());){var o=_L(i.getItemLayout(n));bL(o,i,n,r),o.incremental=!0,this.group.add(o)}},e.prototype._incrementalRenderLarge=function(t,e){IL(e,this.group,!0)},e.prototype.remove=function(t){this._clear()},e.prototype._clear=function(){this.group.removeAll(),this._data=null},e.type="candlestick",e}(Mf),vL=function(){},mL=function(t){function e(e){var n=t.call(this,e)||this;return n.type="normalCandlestickBox",n}return n(e,t),e.prototype.getDefaultShape=function(){return new vL},e.prototype.buildPath=function(t,e){var n=e.points;this.__simpleBox?(t.moveTo(n[4][0],n[4][1]),t.lineTo(n[6][0],n[6][1])):(t.moveTo(n[0][0],n[0][1]),t.lineTo(n[1][0],n[1][1]),t.lineTo(n[2][0],n[2][1]),t.lineTo(n[3][0],n[3][1]),t.closePath(),t.moveTo(n[4][0],n[4][1]),t.lineTo(n[5][0],n[5][1]),t.moveTo(n[6][0],n[6][1]),t.lineTo(n[7][0],n[7][1]))},e}(ja);function _L(t,e,n){var i=t.ends;return new mL({shape:{points:n?wL(i,t):i},z2:100})}function xL(t,e){for(var n=!0,i=0;i<e.ends.length;i++)if(t.contain(e.ends[i][0],e.ends[i][1])){n=!1;break}return n}function bL(t,e,n,i){var r=e.getItemModel(n);t.useStyle(e.getItemVisual(n,"style")),t.style.strokeNoScale=!0,t.__simpleBox=i,ul(t,r)}function wL(t,e){return O(t,(function(t){return(t=t.slice())[1]=e.initBaseline,t}))}var SL=function(){},ML=function(t){function e(e){var n=t.call(this,e)||this;return n.type="largeCandlestickBox",n}return n(e,t),e.prototype.getDefaultShape=function(){return new SL},e.prototype.buildPath=function(t,e){for(var n=e.points,i=0;i<n.length;)if(this.__sign===n[i++]){var r=n[i++];t.moveTo(r,n[i++]),t.lineTo(r,n[i++])}else i+=3},e}(ja);function IL(t,e,n){var i=t.getData().getLayout("largePoints"),r=new ML({shape:{points:i},__sign:1});e.add(r);var o=new ML({shape:{points:i},__sign:-1});e.add(o),TL(1,r,t),TL(-1,o,t),n&&(r.incremental=!0,o.incremental=!0)}function TL(t,e,n,i){var r=n.get(["itemStyle",t>0?"borderColor":"borderColor0"])||n.get(["itemStyle",t>0?"color":"color0"]),o=n.getModel("itemStyle").getItemStyle(gL);e.useStyle(o),e.style.fill=null,e.style.stroke=r}var CL=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.defaultValueDimensions=[{name:"open",defaultTooltip:!0},{name:"close",defaultTooltip:!0},{name:"lowest",defaultTooltip:!0},{name:"highest",defaultTooltip:!0}],n}return n(e,t),e.prototype.getShadowDim=function(){return"open"},e.prototype.brushSelector=function(t,e,n){var i=e.getItemLayout(t);return i&&n.rect(i.brushRect)},e.type="series.candlestick",e.dependencies=["xAxis","yAxis","grid"],e.defaultOption={zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,layout:null,clip:!0,itemStyle:{color:"#eb5454",color0:"#47b262",borderColor:"#eb5454",borderColor0:"#47b262",borderWidth:1},emphasis:{scale:!0,itemStyle:{borderWidth:2}},barMaxWidth:null,barMinWidth:null,barWidth:null,large:!0,largeThreshold:600,progressive:3e3,progressiveThreshold:1e4,progressiveChunkMode:"mod",animationEasing:"linear",animationDuration:300},e}(pf);function AL(t){t&&F(t.series)&&P(t.series,(function(t){Y(t)&&"k"===t.type&&(t.type="candlestick")}))}L(CL,iL,!0);var DL=["itemStyle","borderColor"],LL=["itemStyle","borderColor0"],kL=["itemStyle","color"],PL=["itemStyle","color0"],OL={seriesType:"candlestick",plan:bf(),performRawSeries:!0,reset:function(t,e){function n(t,e){return e.get(t>0?kL:PL)}function i(t,e){return e.get(t>0?DL:LL)}t.getData();if(!e.isSeriesFiltered(t))return!t.pipelineContext.large&&{progress:function(t,e){for(var r;null!=(r=t.next());){var o=e.getItemModel(r),a=e.getItemLayout(r).sign,s=o.getItemStyle();s.fill=n(a,o),s.stroke=i(a,o)||s.fill,I(e.ensureUniqueItemVisual(r,"style"),s)}}}}},RL="undefined"!=typeof Float32Array?Float32Array:Array,NL={seriesType:"candlestick",plan:bf(),reset:function(t){var e=t.coordinateSystem,n=t.getData(),i=function(t,e){var n,i=t.getBaseAxis(),r="category"===i.type?i.getBandWidth():(n=i.getExtent(),Math.abs(n[1]-n[0])/e.count()),o=Zi(tt(t.get("barMaxWidth"),r),r),a=Zi(tt(t.get("barMinWidth"),1),r),s=t.get("barWidth");return null!=s?Zi(s,r):Math.max(Math.min(r/2,o),a)}(t,n),r=["x","y"],o=n.mapDimension(r[0]),a=n.mapDimensionsAll(r[1]),s=a[0],l=a[1],u=a[2],h=a[3];if(n.setLayout({candleWidth:i,isSimpleBox:i<=1.3}),!(null==o||a.length<4))return{progress:t.pipelineContext.large?function(t,n){var i,r,a=new RL(4*t.count),c=0,p=[],d=[];for(;null!=(r=t.next());){var f=n.get(o,r),g=n.get(s,r),y=n.get(l,r),v=n.get(u,r),m=n.get(h,r);isNaN(f)||isNaN(v)||isNaN(m)?(a[c++]=NaN,c+=3):(a[c++]=EL(n,r,g,y,l),p[0]=f,p[1]=v,i=e.dataToPoint(p,null,d),a[c++]=i?i[0]:NaN,a[c++]=i?i[1]:NaN,p[1]=m,i=e.dataToPoint(p,null,d),a[c++]=i?i[1]:NaN)}n.setLayout("largePoints",a)}:function(t,n){var r;for(;null!=(r=t.next());){var a=n.get(o,r),c=n.get(s,r),p=n.get(l,r),d=n.get(u,r),f=n.get(h,r),g=Math.min(c,p),y=Math.max(c,p),v=w(g,a),m=w(y,a),_=w(d,a),x=w(f,a),b=[];S(b,m,0),S(b,v,1),b.push(I(x),I(m),I(_),I(v)),n.setItemLayout(r,{sign:EL(n,r,c,p,l),initBaseline:c>p?m[1]:v[1],ends:b,brushRect:M(d,f,a)})}function w(t,n){var i=[];return i[0]=n,i[1]=t,isNaN(n)||isNaN(t)?[NaN,NaN]:e.dataToPoint(i)}function S(t,e,n){var r=e.slice(),o=e.slice();r[0]=Bu(r[0]+i/2,1,!1),o[0]=Bu(o[0]-i/2,1,!0),n?t.push(r,o):t.push(o,r)}function M(t,e,n){var r=w(t,n),o=w(e,n);return r[0]-=i/2,o[0]-=i/2,{x:r[0],y:r[1],width:i,height:o[1]-r[1]}}function I(t){return t[0]=Bu(t[0],1),t}}}}};function EL(t,e,n,i,r){return n>i?-1:n<i?1:e>0?t.get(r,e-1)<=i?1:-1:1}function zL(t,e){var n=e.rippleEffectColor||e.color;t.eachChild((function(t){t.attr({z:e.z,zlevel:e.zlevel,style:{stroke:"stroke"===e.brushType?n:null,fill:"fill"===e.brushType?n:null}})}))}var BL=function(t){function e(e,n){var i=t.call(this)||this,r=new hw(e,n),o=new zi;return i.add(r),i.add(o),i.updateData(e,n),i}return n(e,t),e.prototype.stopEffectAnimation=function(){this.childAt(1).removeAll()},e.prototype.startEffectAnimation=function(t){for(var e=t.symbolType,n=t.color,i=this.childAt(1),r=0;r<3;r++){var o=py(e,-1,-1,2,2,n);o.attr({style:{strokeNoScale:!0},z2:99,silent:!0,scaleX:.5,scaleY:.5});var a=-r/3*t.period+t.effectOffset;o.animate("",!0).when(t.period,{scaleX:t.rippleScale/2,scaleY:t.rippleScale/2}).delay(a).start(),o.animateStyle(!0).when(t.period,{opacity:0}).delay(a).start(),i.add(o)}zL(i,t)},e.prototype.updateEffectAnimation=function(t){for(var e=this._effectCfg,n=this.childAt(1),i=["symbolType","period","rippleScale"],r=0;r<i.length;r++){var o=i[r];if(e[o]!==t[o])return this.stopEffectAnimation(),void this.startEffectAnimation(t)}zL(n,t)},e.prototype.highlight=function(){Xs(this)},e.prototype.downplay=function(){Zs(this)},e.prototype.updateData=function(t,e){var n=this,i=t.hostModel;this.childAt(0).updateData(t,e);var r=this.childAt(1),o=t.getItemModel(e),a=t.getItemVisual(e,"symbol"),s=function(t){return F(t)||(t=[+t,+t]),t}(t.getItemVisual(e,"symbolSize")),l=t.getItemVisual(e,"style"),u=l&&l.fill;r.setScale(s),r.traverse((function(t){t.setStyle("fill",u)}));var h=t.getItemVisual(e,"symbolOffset");h&&(F(h)||(h=[h,h]),r.x=Zi(h[0],s[0]),r.y=Zi(tt(h[1],h[0])||0,s[1]));var c=t.getItemVisual(e,"symbolRotate");r.rotation=(c||0)*Math.PI/180||0;var p={};p.showEffectOn=i.get("showEffectOn"),p.rippleScale=o.get(["rippleEffect","scale"]),p.brushType=o.get(["rippleEffect","brushType"]),p.period=1e3*o.get(["rippleEffect","period"]),p.effectOffset=e/t.count(),p.z=i.getShallow("z")||0,p.zlevel=i.getShallow("zlevel")||0,p.symbolType=a,p.color=u,p.rippleEffectColor=o.get(["rippleEffect","color"]),this.off("mouseover").off("mouseout").off("emphasis").off("normal"),"render"===p.showEffectOn?(this._effectCfg?this.updateEffectAnimation(p):this.startEffectAnimation(p),this._effectCfg=p):(this._effectCfg=null,this.stopEffectAnimation(),this.onHoverStateChange=function(t){"emphasis"===t?"render"!==p.showEffectOn&&n.startEffectAnimation(p):"normal"===t&&"render"!==p.showEffectOn&&n.stopEffectAnimation()}),this._effectCfg=p,ol(this)},e.prototype.fadeOut=function(t){this.off("mouseover").off("mouseout"),t&&t()},e}(zi),VL=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.init=function(){this._symbolDraw=new gw(BL)},e.prototype.render=function(t,e,n){var i=t.getData(),r=this._symbolDraw;r.updateData(i,{clipShape:this._getClipShape(t)}),this.group.add(r.group)},e.prototype._getClipShape=function(t){var e=t.coordinateSystem,n=e&&e.getArea&&e.getArea();return t.get("clip",!0)?n:null},e.prototype.updateTransform=function(t,e,n){var i=t.getData();this.group.dirty();var r=Hw("").reset(t,e,n);r.progress&&r.progress({start:0,end:i.count(),count:i.count()},i),this._symbolDraw.updateLayout()},e.prototype._updateGroupTransform=function(t){var e=t.coordinateSystem;e&&e.getRoamTransform&&(this.group.transform=we(e.getRoamTransform()),this.group.decomposeTransform())},e.prototype.remove=function(t,e){this._symbolDraw&&this._symbolDraw.remove(!0)},e.type="effectScatter",e}(Mf),FL=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.hasSymbolVisual=!0,n}return n(e,t),e.prototype.getInitialData=function(t,e){return E_(this.getSource(),this,{useEncodeDefaulter:!0})},e.prototype.brushSelector=function(t,e,n){return n.point(e.getItemLayout(t))},e.type="series.effectScatter",e.dependencies=["grid","polar"],e.defaultOption={coordinateSystem:"cartesian2d",zlevel:0,z:2,legendHoverLink:!0,effectType:"ripple",progressive:0,showEffectOn:"render",clip:!0,rippleEffect:{period:4,scale:2.5,brushType:"fill"},symbolSize:10},e}(pf);var GL=function(t){function e(e,n,i){var r=t.call(this)||this;return r.add(r.createLine(e,n,i)),r._updateEffectSymbol(e,n),r}return n(e,t),e.prototype.createLine=function(t,e,n){return new RC(t,e,n)},e.prototype._updateEffectSymbol=function(t,e){var n=t.getItemModel(e).getModel("effect"),i=n.get("symbolSize"),r=n.get("symbol");F(i)||(i=[i,i]);var o=t.getItemVisual(e,"style"),a=n.get("color")||o&&o.stroke,s=this.childAt(1);this._symbolType!==r&&(this.remove(s),(s=py(r,-.5,-.5,1,1,a)).z2=100,s.culling=!0,this.add(s)),s&&(s.setStyle("shadowColor",a),s.setStyle(n.getItemStyle(["color"])),s.scaleX=i[0],s.scaleY=i[1],s.setColor(a),this._symbolType=r,this._symbolScale=i,this._updateEffectAnimation(t,n,e))},e.prototype._updateEffectAnimation=function(t,e,n){var i=this.childAt(1);if(i){var r=this,o=t.getItemLayout(n),a=1e3*e.get("period"),s=e.get("loop"),l=e.get("constantSpeed"),u=Q(e.get("delay"),(function(e){return e/t.count()*a/3}));if(i.ignore=!0,this._updateAnimationPoints(i,o),l>0&&(a=this._getLineLength(i)/l*1e3),(a!==this._period||s!==this._loop)&&(i.stopAnimation(),a>0)){var h=void 0;h="function"==typeof u?u(n):u,i.__t>0&&(h=-a*i.__t),i.__t=0;var c=i.animate("",s).when(a,{__t:1}).delay(h).during((function(){r._updateSymbolPosition(i)}));s||c.done((function(){r.remove(i)})),c.start()}this._period=a,this._loop=s}},e.prototype._getLineLength=function(t){return Lt(t.__p1,t.__cp1)+Lt(t.__cp1,t.__p2)},e.prototype._updateAnimationPoints=function(t,e){t.__p1=e[0],t.__p2=e[1],t.__cp1=e[2]||[(e[0][0]+e[1][0])/2,(e[0][1]+e[1][1])/2]},e.prototype.updateData=function(t,e,n){this.childAt(0).updateData(t,e,n),this._updateEffectSymbol(t,e)},e.prototype._updateSymbolPosition=function(t){var e=t.__p1,n=t.__p2,i=t.__cp1,r=t.__t,o=[t.x,t.y],a=o.slice(),s=Ho,l=Wo;o[0]=s(e[0],i[0],n[0],r),o[1]=s(e[1],i[1],n[1],r);var u=l(e[0],i[0],n[0],r),h=l(e[1],i[1],n[1],r);t.rotation=-Math.atan2(h,u)-Math.PI/2,"line"!==this._symbolType&&"rect"!==this._symbolType&&"roundRect"!==this._symbolType||(void 0!==t.__lastT&&t.__lastT<t.__t?(t.scaleY=1.05*Lt(a,o),1===r&&(o[0]=a[0]+(o[0]-a[0])/2,o[1]=a[1]+(o[1]-a[1])/2)):1===t.__lastT?t.scaleY=2*Lt(e,o):t.scaleY=this._symbolScale[1]),t.__lastT=t.__t,t.ignore=!1,t.x=o[0],t.y=o[1]},e.prototype.updateLayout=function(t,e){this.childAt(0).updateLayout(t,e);var n=t.getItemModel(e).getModel("effect");this._updateEffectAnimation(t,n,e)},e}(zi),HL=function(t){function e(e,n,i){var r=t.call(this)||this;return r._createPolyline(e,n,i),r}return n(e,t),e.prototype._createPolyline=function(t,e,n){var i=t.getItemLayout(e),r=new ru({shape:{points:i}});this.add(r),this._updateCommonStl(t,e,n)},e.prototype.updateData=function(t,e,n){var i=t.hostModel;Fu(this.childAt(0),{shape:{points:t.getItemLayout(e)}},i,e),this._updateCommonStl(t,e,n)},e.prototype._updateCommonStl=function(t,e,n){var i=this.childAt(0),r=t.getItemModel(e),o=n&&n.emphasisLineStyle;n&&!t.hasItemOption||(o=r.getModel(["emphasis","lineStyle"]).getLineStyle()),i.useStyle(t.getItemVisual(e,"style")),i.style.fill=null,i.style.strokeNoScale=!0,i.ensureState("emphasis").style=o,ol(this)},e.prototype.updateLayout=function(t,e){this.childAt(0).setShape("points",t.getItemLayout(e))},e}(zi),WL=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._lastFrame=0,e._lastFramePercent=0,e}return n(e,t),e.prototype.createLine=function(t,e,n){return new HL(t,e,n)},e.prototype._updateAnimationPoints=function(t,e){this._points=e;for(var n=[0],i=0,r=1;r<e.length;r++){var o=e[r-1],a=e[r];i+=Lt(o,a),n.push(i)}if(0!==i){for(r=0;r<n.length;r++)n[r]/=i;this._offsets=n,this._length=i}else this._length=0},e.prototype._getLineLength=function(){return this._length},e.prototype._updateSymbolPosition=function(t){var e=t.__t,n=this._points,i=this._offsets,r=n.length;if(i){var o,a=this._lastFrame;if(e<this._lastFramePercent){for(o=Math.min(a+1,r-1);o>=0&&!(i[o]<=e);o--);o=Math.min(o,r-2)}else{for(o=a;o<r&&!(i[o]>e);o++);o=Math.min(o-1,r-2)}var s=(e-i[o])/(i[o+1]-i[o]),l=n[o],u=n[o+1];t.x=l[0]*(1-s)+s*u[0],t.y=l[1]*(1-s)+s*u[1];var h=u[0]-l[0],c=u[1]-l[1];t.rotation=-Math.atan2(c,h)-Math.PI/2,this._lastFrame=o,this._lastFramePercent=e,t.ignore=!1}},e}(GL),UL=function(){this.polyline=!1,this.curveness=0,this.segs=[]},YL=function(t){function e(e){return t.call(this,e)||this}return n(e,t),e.prototype.getDefaultStyle=function(){return{stroke:"#000000",fill:null}},e.prototype.getDefaultShape=function(){return new UL},e.prototype.buildPath=function(t,e){var n=e.segs,i=e.curveness;if(e.polyline)for(var r=0;r<n.length;){var o=n[r++];if(o>0){t.moveTo(n[r++],n[r++]);for(var a=1;a<o;a++)t.lineTo(n[r++],n[r++])}}else for(r=0;r<n.length;){var s=n[r++],l=n[r++],u=n[r++],h=n[r++];if(t.moveTo(s,l),i>0){var c=(s+u)/2-(l-h)*i,p=(l+h)/2-(u-s)*i;t.quadraticCurveTo(c,p,u,h)}else t.lineTo(u,h)}},e.prototype.findDataIndex=function(t,e){var n=this.shape,i=n.segs,r=n.curveness,o=this.style.lineWidth;if(n.polyline)for(var a=0,s=0;s<i.length;){var l=i[s++];if(l>0)for(var u=i[s++],h=i[s++],c=1;c<l;c++){if(Da(u,h,p=i[s++],d=i[s++],o,t,e))return a}a++}else for(a=0,s=0;s<i.length;){u=i[s++],h=i[s++];var p=i[s++],d=i[s++];if(r>0){if(ka(u,h,(u+p)/2-(h-d)*r,(h+d)/2-(p-u)*r,p,d,o,t,e))return a}else if(Da(u,h,p,d,o,t,e))return a;a++}return-1},e}(ja),XL=function(){function t(){this.group=new zi}return t.prototype.isPersistent=function(){return!this._incremental},t.prototype.updateData=function(t){this.group.removeAll();var e=new YL({rectHover:!0,cursor:"default"});e.setShape({segs:t.getLayout("linesPoints")}),this._setCommon(e,t),this.group.add(e),this._incremental=null},t.prototype.incrementalPrepareUpdate=function(t){this.group.removeAll(),this._clearIncremental(),t.count()>5e5?(this._incremental||(this._incremental=new Mu({silent:!0})),this.group.add(this._incremental)):this._incremental=null},t.prototype.incrementalUpdate=function(t,e){var n=new YL;n.setShape({segs:e.getLayout("linesPoints")}),this._setCommon(n,e,!!this._incremental),this._incremental?this._incremental.addDisplayable(n,!0):(n.rectHover=!0,n.cursor="default",n.__startIndex=t.start,this.group.add(n))},t.prototype.remove=function(){this._clearIncremental(),this._incremental=null,this.group.removeAll()},t.prototype._setCommon=function(t,e,n){var i=e.hostModel;t.setShape({polyline:i.get("polyline"),curveness:i.get(["lineStyle","curveness"])}),t.useStyle(i.getModel("lineStyle").getLineStyle()),t.style.strokeNoScale=!0;var r=e.getVisual("style");if(r&&r.stroke&&t.setStyle("stroke",r.stroke),t.setStyle("fill",null),!n){var o=vs(t);o.seriesIndex=i.seriesIndex,t.on("mousemove",(function(e){o.dataIndex=null;var n=t.findDataIndex(e.offsetX,e.offsetY);n>0&&(o.dataIndex=n+t.__startIndex)}))}},t.prototype._clearIncremental=function(){var t=this._incremental;t&&t.clearDisplaybles()},t}(),ZL={seriesType:"lines",plan:bf(),reset:function(t){var e=t.coordinateSystem,n=t.get("polyline"),i=t.pipelineContext.large;return{progress:function(r,o){var a=[];if(i){var s=void 0,l=r.end-r.start;if(n){for(var u=0,h=r.start;h<r.end;h++)u+=t.getLineCoordsCount(h);s=new Float32Array(l+2*u)}else s=new Float32Array(4*l);var c=0,p=[];for(h=r.start;h<r.end;h++){var d=t.getLineCoords(h,a);n&&(s[c++]=d);for(var f=0;f<d;f++)p=e.dataToPoint(a[f],!1,p),s[c++]=p[0],s[c++]=p[1]}o.setLayout("linesPoints",s)}else for(h=r.start;h<r.end;h++){var g=o.getItemModel(h),y=(d=t.getLineCoords(h,a),[]);if(n)for(var v=0;v<d;v++)y.push(e.dataToPoint(a[v]));else{y[0]=e.dataToPoint(a[0]),y[1]=e.dataToPoint(a[1]);var m=g.get(["lineStyle","curveness"]);+m&&(y[2]=[(y[0][0]+y[1][0])/2-(y[0][1]-y[1][1])*m,(y[0][1]+y[1][1])/2-(y[1][0]-y[0][0])*m])}o.setItemLayout(h,y)}}}}},jL=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){var i=t.getData(),r=this._updateLineDraw(i,t),o=t.get("zlevel"),a=t.get(["effect","trailLength"]),s=n.getZr(),l="svg"===s.painter.getType();(l||s.painter.getLayer(o).clear(!0),null==this._lastZlevel||l||s.configLayer(this._lastZlevel,{motionBlur:!1}),this._showEffect(t)&&a)&&(l||s.configLayer(o,{motionBlur:!0,lastFrameAlpha:Math.max(Math.min(a/10+.9,1),0)}));r.updateData(i);var u=t.get("clip",!0)&&kw(t.coordinateSystem,!1,t);u?this.group.setClipPath(u):this.group.removeClipPath(),this._lastZlevel=o,this._finished=!0},e.prototype.incrementalPrepareRender=function(t,e,n){var i=t.getData();this._updateLineDraw(i,t).incrementalPrepareUpdate(i),this._clearLayer(n),this._finished=!1},e.prototype.incrementalRender=function(t,e,n){this._lineDraw.incrementalUpdate(t,e.getData()),this._finished=t.end===e.getData().count()},e.prototype.updateTransform=function(t,e,n){var i=t.getData(),r=t.pipelineContext;if(!this._finished||r.large||r.progressiveRender)return{update:!0};var o=ZL.reset(t,e,n);o.progress&&o.progress({start:0,end:i.count(),count:i.count()},i),this._lineDraw.updateLayout(),this._clearLayer(n)},e.prototype._updateLineDraw=function(t,e){var n=this._lineDraw,i=this._showEffect(e),r=!!e.get("polyline"),o=e.pipelineContext.large;return n&&i===this._hasEffet&&r===this._isPolyline&&o===this._isLargeDraw||(n&&n.remove(),n=this._lineDraw=o?new XL:new NC(r?i?WL:HL:i?GL:RC),this._hasEffet=i,this._isPolyline=r,this._isLargeDraw=o,this.group.removeAll()),this.group.add(n.group),n},e.prototype._showEffect=function(t){return!!t.get(["effect","show"])},e.prototype._clearLayer=function(t){var e=t.getZr();"svg"===e.painter.getType()||null==this._lastZlevel||e.painter.getLayer(this._lastZlevel).clear(!0)},e.prototype.remove=function(t,e){this._lineDraw&&this._lineDraw.remove(),this._lineDraw=null,this._clearLayer(e)},e.type="lines",e}(Mf),qL="undefined"==typeof Uint32Array?Array:Uint32Array,KL="undefined"==typeof Float64Array?Array:Float64Array;function $L(t){var e=t.data;e&&e[0]&&e[0][0]&&e[0][0].coord&&(t.data=O(e,(function(t){var e={coords:[t[0].coord,t[1].coord]};return t[0].name&&(e.fromName=t[0].name),t[1].name&&(e.toName=t[1].name),M([e,t[0],t[1]])})))}var JL=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.visualStyleAccessPath="lineStyle",n.visualDrawType="stroke",n}return n(e,t),e.prototype.init=function(e){e.data=e.data||[],$L(e);var n=this._processFlatCoordsArray(e.data);this._flatCoords=n.flatCoords,this._flatCoordsOffset=n.flatCoordsOffset,n.flatCoords&&(e.data=new Float32Array(n.count)),t.prototype.init.apply(this,arguments)},e.prototype.mergeOption=function(e){if($L(e),e.data){var n=this._processFlatCoordsArray(e.data);this._flatCoords=n.flatCoords,this._flatCoordsOffset=n.flatCoordsOffset,n.flatCoords&&(e.data=new Float32Array(n.count))}t.prototype.mergeOption.apply(this,arguments)},e.prototype.appendData=function(t){var e=this._processFlatCoordsArray(t.data);e.flatCoords&&(this._flatCoords?(this._flatCoords=ct(this._flatCoords,e.flatCoords),this._flatCoordsOffset=ct(this._flatCoordsOffset,e.flatCoordsOffset)):(this._flatCoords=e.flatCoords,this._flatCoordsOffset=e.flatCoordsOffset),t.data=new Float32Array(e.count)),this.getRawData().appendData(t.data)},e.prototype._getCoordsFromItemModel=function(t){var e=this.getData().getItemModel(t),n=e.option instanceof Array?e.option:e.getShallow("coords");return n},e.prototype.getLineCoordsCount=function(t){return this._flatCoordsOffset?this._flatCoordsOffset[2*t+1]:this._getCoordsFromItemModel(t).length},e.prototype.getLineCoords=function(t,e){if(this._flatCoordsOffset){for(var n=this._flatCoordsOffset[2*t],i=this._flatCoordsOffset[2*t+1],r=0;r<i;r++)e[r]=e[r]||[],e[r][0]=this._flatCoords[n+2*r],e[r][1]=this._flatCoords[n+2*r+1];return i}var o=this._getCoordsFromItemModel(t);for(r=0;r<o.length;r++)e[r]=e[r]||[],e[r][0]=o[r][0],e[r][1]=o[r][1];return o.length},e.prototype._processFlatCoordsArray=function(t){var e=0;if(this._flatCoords&&(e=this._flatCoords.length),"number"==typeof t[0]){for(var n=t.length,i=new qL(n),r=new KL(n),o=0,a=0,s=0,l=0;l<n;){s++;var u=t[l++];i[a++]=o+e,i[a++]=u;for(var h=0;h<u;h++){var c=t[l++],p=t[l++];r[o++]=c,r[o++]=p}}return{flatCoordsOffset:new Uint32Array(i.buffer,0,a),flatCoords:r,count:s}}return{flatCoordsOffset:null,flatCoords:null,count:t.length}},e.prototype.getInitialData=function(t,e){var n=new T_(["value"],this);return n.hasItemOption=!1,n.initData(t.data,[],(function(t,e,i,r){if(t instanceof Array)return NaN;n.hasItemOption=!0;var o=t.value;return null!=o?o instanceof Array?o[r]:o:void 0})),n},e.prototype.formatTooltip=function(t,e,n){var i=this.getData().getItemModel(t),r=i.get("name");if(r)return r;var o=i.get("fromName"),a=i.get("toName"),s=[];return null!=o&&s.push(o),null!=a&&s.push(a),Jd("nameValue",{name:s.join(" > ")})},e.prototype.preventIncremental=function(){return!!this.get(["effect","show"])},e.prototype.getProgressive=function(){var t=this.option.progressive;return null==t?this.option.large?1e4:this.get("progressive"):t},e.prototype.getProgressiveThreshold=function(){var t=this.option.progressiveThreshold;return null==t?this.option.large?2e4:this.get("progressiveThreshold"):t},e.type="series.lines",e.dependencies=["grid","polar","geo","calendar"],e.defaultOption={coordinateSystem:"geo",zlevel:0,z:2,legendHoverLink:!0,xAxisIndex:0,yAxisIndex:0,symbol:["none","none"],symbolSize:[10,10],geoIndex:0,effect:{show:!1,period:4,constantSpeed:0,symbol:"circle",symbolSize:3,loop:!0,trailLength:.2},large:!1,largeThreshold:2e3,polyline:!1,clip:!0,label:{show:!1,position:"end"},lineStyle:{opacity:.5}},e}(pf);function QL(t){return t instanceof Array||(t=[t,t]),t}var tk={seriesType:"lines",reset:function(t){var e=QL(t.get("symbol")),n=QL(t.get("symbolSize")),i=t.getData();return i.setVisual("fromSymbol",e&&e[0]),i.setVisual("toSymbol",e&&e[1]),i.setVisual("fromSymbolSize",n&&n[0]),i.setVisual("toSymbolSize",n&&n[1]),{dataEach:i.hasItemOption?function(t,e){var n=t.getItemModel(e),i=QL(n.getShallow("symbol",!0)),r=QL(n.getShallow("symbolSize",!0));i[0]&&t.setItemVisual(e,"fromSymbol",i[0]),i[1]&&t.setItemVisual(e,"toSymbol",i[1]),r[0]&&t.setItemVisual(e,"fromSymbolSize",r[0]),r[1]&&t.setItemVisual(e,"toSymbolSize",r[1])}:null}}};var ek=function(){function t(){this.blurSize=30,this.pointSize=20,this.maxOpacity=1,this.minOpacity=0,this._gradientPixels={inRange:null,outOfRange:null};var t=C();this.canvas=t}return t.prototype.update=function(t,e,n,i,r,o){var a=this._getBrush(),s=this._getGradient(r,"inRange"),l=this._getGradient(r,"outOfRange"),u=this.pointSize+this.blurSize,h=this.canvas,c=h.getContext("2d"),p=t.length;h.width=e,h.height=n;for(var d=0;d<p;++d){var f=t[d],g=f[0],y=f[1],v=i(f[2]);c.globalAlpha=v,c.drawImage(a,g-u,y-u)}if(!h.width||!h.height)return h;for(var m=c.getImageData(0,0,h.width,h.height),_=m.data,x=0,b=_.length,w=this.minOpacity,S=this.maxOpacity-w;x<b;){v=_[x+3]/256;var M=4*Math.floor(255*v);if(v>0){var I=o(v)?s:l;v>0&&(v=v*S+w),_[x++]=I[M],_[x++]=I[M+1],_[x++]=I[M+2],_[x++]=I[M+3]*v*256}else x+=4}return c.putImageData(m,0,0),h},t.prototype._getBrush=function(){var t=this._brushCanvas||(this._brushCanvas=C()),e=this.pointSize+this.blurSize,n=2*e;t.width=n,t.height=n;var i=t.getContext("2d");return i.clearRect(0,0,n,n),i.shadowOffsetX=n,i.shadowBlur=this.blurSize,i.shadowColor="#000000",i.beginPath(),i.arc(-e,e,this.pointSize,0,2*Math.PI,!0),i.closePath(),i.fill(),t},t.prototype._getGradient=function(t,e){for(var n=this._gradientPixels,i=n[e]||(n[e]=new Uint8ClampedArray(1024)),r=[0,0,0,0],o=0,a=0;a<256;a++)t[e](a/255,!0,r),i[o++]=r[0],i[o++]=r[1],i[o++]=r[2],i[o++]=r[3];return i},t}();function nk(t){var e=t.dimensions;return"lng"===e[0]&&"lat"===e[1]}var ik=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){var i;e.eachComponent("visualMap",(function(e){e.eachTargetSeries((function(n){n===t&&(i=e)}))})),this.group.removeAll(),this._incrementalDisplayable=null;var r=t.coordinateSystem;"cartesian2d"===r.type||"calendar"===r.type?this._renderOnCartesianAndCalendar(t,n,0,t.getData().count()):nk(r)&&this._renderOnGeo(r,t,i,n)},e.prototype.incrementalPrepareRender=function(t,e,n){this.group.removeAll()},e.prototype.incrementalRender=function(t,e,n,i){var r=e.coordinateSystem;r&&(nk(r)?this.render(e,n,i):this._renderOnCartesianAndCalendar(e,i,t.start,t.end,!0))},e.prototype._renderOnCartesianAndCalendar=function(t,e,n,i,r){var o,a,s,l,u=t.coordinateSystem;if(Pw(u,"cartesian2d")){var h=u.getAxis("x"),c=u.getAxis("y");0,o=h.getBandWidth(),a=c.getBandWidth(),s=h.scale.getExtent(),l=c.scale.getExtent()}for(var p=this.group,d=t.getData(),f=t.getModel(["emphasis","itemStyle"]).getItemStyle(),g=t.getModel(["blur","itemStyle"]).getItemStyle(),y=t.getModel(["select","itemStyle"]).getItemStyle(),v=uh(t),m=t.get(["emphasis","focus"]),_=t.get(["emphasis","blurScope"]),x=Pw(u,"cartesian2d")?[d.mapDimension("x"),d.mapDimension("y"),d.mapDimension("value")]:[d.mapDimension("time"),d.mapDimension("value")],b=n;b<i;b++){var w=void 0,S=d.getItemVisual(b,"style");if(Pw(u,"cartesian2d")){var M=d.get(x[0],b),I=d.get(x[1],b);if(isNaN(d.get(x[2],b))||M<s[0]||M>s[1]||I<l[0]||I>l[1])continue;var T=u.dataToPoint([M,I]);w=new as({shape:{x:Math.floor(Math.round(T[0])-o/2),y:Math.floor(Math.round(T[1])-a/2),width:Math.ceil(o),height:Math.ceil(a)},style:S})}else{if(isNaN(d.get(x[1],b)))continue;w=new as({z2:1,shape:u.dataToRect([d.get(x[0],b)]).contentShape,style:S})}var C=d.getItemModel(b);if(d.hasItemOption){var A=C.getModel("emphasis");f=A.getModel("itemStyle").getItemStyle(),g=C.getModel(["blur","itemStyle"]).getItemStyle(),y=C.getModel(["select","itemStyle"]).getItemStyle(),m=A.get("focus"),_=A.get("blurScope"),v=uh(C)}var D=t.getRawValue(b),L="-";D&&null!=D[2]&&(L=D[2]+""),lh(w,v,{labelFetcher:t,labelDataIndex:b,defaultOpacity:S.opacity,defaultText:L}),w.ensureState("emphasis").style=f,w.ensureState("blur").style=g,w.ensureState("select").style=y,ol(w,m,_),w.incremental=r,r&&(w.states.emphasis.hoverLayer=!0),p.add(w),d.setItemGraphicEl(b,w)}},e.prototype._renderOnGeo=function(t,e,n,i){var r=n.targetVisuals.inRange,o=n.targetVisuals.outOfRange,a=e.getData(),s=this._hmLayer||this._hmLayer||new ek;s.blurSize=e.get("blurSize"),s.pointSize=e.get("pointSize"),s.minOpacity=e.get("minOpacity"),s.maxOpacity=e.get("maxOpacity");var l=t.getViewRect().clone(),u=t.getRoamTransform();l.applyTransform(u);var h=Math.max(l.x,0),c=Math.max(l.y,0),p=Math.min(l.width+l.x,i.getWidth()),d=Math.min(l.height+l.y,i.getHeight()),f=p-h,g=d-c,y=[a.mapDimension("lng"),a.mapDimension("lat"),a.mapDimension("value")],v=a.mapArray(y,(function(e,n,i){var r=t.dataToPoint([e,n]);return r[0]-=h,r[1]-=c,r.push(i),r})),m=n.getExtent(),_="visualMap.continuous"===n.type?function(t,e){var n=t[1]-t[0];return e=[(e[0]-t[0])/n,(e[1]-t[0])/n],function(t){return t>=e[0]&&t<=e[1]}}(m,n.option.range):function(t,e,n){var i=t[1]-t[0],r=(e=O(e,(function(e){return{interval:[(e.interval[0]-t[0])/i,(e.interval[1]-t[0])/i]}}))).length,o=0;return function(t){var i;for(i=o;i<r;i++)if((a=e[i].interval)[0]<=t&&t<=a[1]){o=i;break}if(i===r)for(i=o-1;i>=0;i--){var a;if((a=e[i].interval)[0]<=t&&t<=a[1]){o=i;break}}return i>=0&&i<r&&n[i]}}(m,n.getPieceList(),n.option.selected);s.update(v,f,g,r.color.getNormalizer(),{inRange:r.color.getColorMapper(),outOfRange:o.color.getColorMapper()},_);var x=new Qa({style:{width:f,height:g,x:h,y:c,image:s.canvas},silent:!0});this.group.add(x)},e.type="heatmap",e}(Mf),rk=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.getInitialData=function(t,e){return E_(this.getSource(),this,{generateCoord:"value"})},e.prototype.preventIncremental=function(){var t=Cp.get(this.get("coordinateSystem"));if(t&&t.dimensions)return"lng"===t.dimensions[0]&&"lat"===t.dimensions[1]},e.type="series.heatmap",e.dependencies=["grid","geo","calendar"],e.defaultOption={coordinateSystem:"cartesian2d",zlevel:0,z:2,geoIndex:0,blurSize:30,pointSize:20,maxOpacity:1,minOpacity:0,select:{itemStyle:{borderColor:"#212121"}}},e}(pf);var ok=["itemStyle","borderWidth"],ak=[{xy:"x",wh:"width",index:0,posDesc:["left","right"]},{xy:"y",wh:"height",index:1,posDesc:["top","bottom"]}],sk=new Ol,lk=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){var i=this.group,r=t.getData(),o=this._data,a=t.coordinateSystem,s=a.getBaseAxis().isHorizontal(),l=a.master.getRect(),u={ecSize:{width:n.getWidth(),height:n.getHeight()},seriesModel:t,coordSys:a,coordSysExtent:[[l.x,l.x+l.width],[l.y,l.y+l.height]],isHorizontal:s,valueDim:ak[+s],categoryDim:ak[1-+s]};return r.diff(o).add((function(t){if(r.hasValue(t)){var e=yk(r,t),n=uk(r,t,e,u),o=_k(r,u,n);r.setItemGraphicEl(t,o),i.add(o),Mk(o,u,n)}})).update((function(t,e){var n=o.getItemGraphicEl(e);if(r.hasValue(t)){var a=yk(r,t),s=uk(r,t,a,u),l=bk(r,s);n&&l!==n.__pictorialShapeStr&&(i.remove(n),r.setItemGraphicEl(t,null),n=null),n?function(t,e,n){var i=n.animationModel,r=n.dataIndex;Fu(t.__pictorialBundle,{x:n.bundlePosition[0],y:n.bundlePosition[1]},i,r),n.symbolRepeat?pk(t,e,n,!0):dk(t,e,n,!0);fk(t,n,!0),gk(t,e,n,!0)}(n,u,s):n=_k(r,u,s,!0),r.setItemGraphicEl(t,n),n.__pictorialSymbolMeta=s,i.add(n),Mk(n,u,s)}else i.remove(n)})).remove((function(t){var e=o.getItemGraphicEl(t);e&&xk(o,t,e.__pictorialSymbolMeta.animationModel,e)})).execute(),this._data=r,this.group},e.prototype.remove=function(t,e){var n=this.group,i=this._data;t.get("animation")?i&&i.eachItemGraphicEl((function(e){xk(i,vs(e).dataIndex,t,e)})):n.removeAll()},e.type="pictorialBar",e}(Mf);function uk(t,e,n,i){var r=t.getItemLayout(e),o=n.get("symbolRepeat"),a=n.get("symbolClip"),s=n.get("symbolPosition")||"start",l=(n.get("symbolRotate")||0)*Math.PI/180||0,u=n.get("symbolPatternSize")||2,h=n.isAnimationEnabled(),c={dataIndex:e,layout:r,itemModel:n,symbolType:t.getItemVisual(e,"symbol")||"circle",style:t.getItemVisual(e,"style"),symbolClip:a,symbolRepeat:o,symbolRepeatDirection:n.get("symbolRepeatDirection"),symbolPatternSize:u,rotation:l,animationModel:h?n:null,hoverScale:h&&n.get(["emphasis","scale"]),z2:n.getShallow("z",!0)||0};!function(t,e,n,i,r){var o,a=i.valueDim,s=t.get("symbolBoundingData"),l=i.coordSys.getOtherAxis(i.coordSys.getBaseAxis()),u=l.toGlobalCoord(l.dataToCoord(0)),h=1-+(n[a.wh]<=0);if(F(s)){var c=[hk(l,s[0])-u,hk(l,s[1])-u];c[1]<c[0]&&c.reverse(),o=c[h]}else o=null!=s?hk(l,s)-u:e?i.coordSysExtent[a.index][h]-u:n[a.wh];r.boundingLength=o,e&&(r.repeatCutLength=n[a.wh]);r.pxSign=o>0?1:o<0?-1:0}(n,o,r,i,c),function(t,e,n,i,r,o,a,s,l,u){var h,c=l.valueDim,p=l.categoryDim,d=Math.abs(n[p.wh]),f=t.getItemVisual(e,"symbolSize");h=F(f)?f.slice():null==f?["100%","100%"]:[f,f];h[p.index]=Zi(h[p.index],d),h[c.index]=Zi(h[c.index],i?d:Math.abs(o)),u.symbolSize=h,(u.symbolScale=[h[0]/s,h[1]/s])[c.index]*=(l.isHorizontal?-1:1)*a}(t,e,r,o,0,c.boundingLength,c.pxSign,u,i,c),function(t,e,n,i,r){var o=t.get(ok)||0;o&&(sk.attr({scaleX:e[0],scaleY:e[1],rotation:n}),sk.updateTransform(),o/=sk.getLineScale(),o*=e[i.valueDim.index]);r.valueLineWidth=o}(n,c.symbolScale,l,i,c);var p=c.symbolSize,d=n.get("symbolOffset");return F(d)&&(d=[Zi(d[0],p[0]),Zi(d[1],p[1])]),function(t,e,n,i,r,o,a,s,l,u,h,c){var p=h.categoryDim,d=h.valueDim,f=c.pxSign,g=Math.max(e[d.index]+s,0),y=g;if(i){var v=Math.abs(l),m=Q(t.get("symbolMargin"),"15%")+"",_=!1;m.lastIndexOf("!")===m.length-1&&(_=!0,m=m.slice(0,m.length-1));var x=Zi(m,e[d.index]),b=Math.max(g+2*x,0),w=_?0:2*x,S=cr(i),M=S?i:Ik((v+w)/b);b=g+2*(x=(v-M*g)/2/(_?M:M-1)),w=_?0:2*x,S||"fixed"===i||(M=u?Ik((Math.abs(u)+w)/b):0),y=M*b-w,c.repeatTimes=M,c.symbolMargin=x}var T=f*(y/2),C=c.pathPosition=[];C[p.index]=n[p.wh]/2,C[d.index]="start"===a?T:"end"===a?l-T:l/2,o&&(C[0]+=o[0],C[1]+=o[1]);var A=c.bundlePosition=[];A[p.index]=n[p.xy],A[d.index]=n[d.xy];var D=c.barRectShape=I({},n);D[d.wh]=f*Math.max(Math.abs(n[d.wh]),Math.abs(C[d.index]+T)),D[p.wh]=n[p.wh];var L=c.clipShape={};L[p.xy]=-n[p.xy],L[p.wh]=h.ecSize[p.wh],L[d.xy]=0,L[d.wh]=n[d.wh]}(n,p,r,o,0,d,s,c.valueLineWidth,c.boundingLength,c.repeatCutLength,i,c),c}function hk(t,e){return t.toGlobalCoord(t.dataToCoord(t.scale.parse(e)))}function ck(t){var e=t.symbolPatternSize,n=py(t.symbolType,-e/2,-e/2,e,e);return n.attr({culling:!0}),"image"!==n.type&&n.setStyle({strokeNoScale:!0}),n}function pk(t,e,n,i){var r=t.__pictorialBundle,o=n.symbolSize,a=n.valueLineWidth,s=n.pathPosition,l=e.valueDim,u=n.repeatTimes||0,h=0,c=o[e.valueDim.index]+a+2*n.symbolMargin;for(wk(t,(function(t){t.__pictorialAnimationIndex=h,t.__pictorialRepeatTimes=u,h<u?Sk(t,null,f(h),n,i):Sk(t,null,{scaleX:0,scaleY:0},n,i,(function(){r.remove(t)})),h++}));h<u;h++){var p=ck(n);p.__pictorialAnimationIndex=h,p.__pictorialRepeatTimes=u,r.add(p);var d=f(h);Sk(p,{x:d.x,y:d.y,scaleX:0,scaleY:0},{scaleX:d.scaleX,scaleY:d.scaleY,rotation:d.rotation},n,i)}function f(t){var e=s.slice(),i=n.pxSign,r=t;return("start"===n.symbolRepeatDirection?i>0:i<0)&&(r=u-1-t),e[l.index]=c*(r-u/2+.5)+s[l.index],{x:e[0],y:e[1],scaleX:n.symbolScale[0],scaleY:n.symbolScale[1],rotation:n.rotation}}}function dk(t,e,n,i){var r=t.__pictorialBundle,o=t.__pictorialMainPath;o?Sk(o,null,{x:n.pathPosition[0],y:n.pathPosition[1],scaleX:n.symbolScale[0],scaleY:n.symbolScale[1],rotation:n.rotation},n,i):(o=t.__pictorialMainPath=ck(n),r.add(o),Sk(o,{x:n.pathPosition[0],y:n.pathPosition[1],scaleX:0,scaleY:0,rotation:n.rotation},{scaleX:n.symbolScale[0],scaleY:n.symbolScale[1]},n,i))}function fk(t,e,n){var i=I({},e.barRectShape),r=t.__pictorialBarRect;r?Sk(r,null,{shape:i},e,n):(r=t.__pictorialBarRect=new as({z2:2,shape:i,silent:!0,style:{stroke:"transparent",fill:"transparent",lineWidth:0}}),t.add(r))}function gk(t,e,n,i){if(n.symbolClip){var r=t.__pictorialClipPath,o=I({},n.clipShape),a=e.valueDim,s=n.animationModel,l=n.dataIndex;if(r)Fu(r,{shape:o},s,l);else{o[a.wh]=0,r=new as({shape:o}),t.__pictorialBundle.setClipPath(r),t.__pictorialClipPath=r;var u={};u[a.wh]=n.clipShape[a.wh],rh[i?"updateProps":"initProps"](r,{shape:u},s,l)}}}function yk(t,e){var n=t.getItemModel(e);return n.getAnimationDelayParams=vk,n.isAnimationEnabled=mk,n}function vk(t){return{index:t.__pictorialAnimationIndex,count:t.__pictorialRepeatTimes}}function mk(){return this.parentModel.isAnimationEnabled()&&!!this.getShallow("animation")}function _k(t,e,n,i){var r=new zi,o=new zi;return r.add(o),r.__pictorialBundle=o,o.x=n.bundlePosition[0],o.y=n.bundlePosition[1],n.symbolRepeat?pk(r,e,n):dk(r,0,n),fk(r,n,i),gk(r,e,n,i),r.__pictorialShapeStr=bk(t,n),r.__pictorialSymbolMeta=n,r}function xk(t,e,n,i){var r=i.__pictorialBarRect;r&&r.removeTextContent();var o=[];wk(i,(function(t){o.push(t)})),i.__pictorialMainPath&&o.push(i.__pictorialMainPath),i.__pictorialClipPath&&(n=null),P(o,(function(t){Hu(t,{scaleX:0,scaleY:0},n,e,(function(){i.parent&&i.parent.remove(i)}))})),t.setItemGraphicEl(e,null)}function bk(t,e){return[t.getItemVisual(e.dataIndex,"symbol")||"none",!!e.symbolRepeat,!!e.symbolClip].join(":")}function wk(t,e,n){P(t.__pictorialBundle.children(),(function(i){i!==t.__pictorialBarRect&&e.call(n,i)}))}function Sk(t,e,n,i,r,o){e&&t.attr(e),i.symbolClip&&!r?n&&t.attr(n):n&&rh[r?"updateProps":"initProps"](t,n,i.animationModel,i.dataIndex,o)}function Mk(t,e,n){var i=n.dataIndex,r=n.itemModel,o=r.getModel("emphasis"),a=o.getModel("itemStyle").getItemStyle(),s=r.getModel(["blur","itemStyle"]).getItemStyle(),l=r.getModel(["select","itemStyle"]).getItemStyle(),u=r.getShallow("cursor"),h=o.get("focus"),c=o.get("blurScope"),p=o.get("scale");wk(t,(function(t){if(t instanceof Qa){var e=t.style;t.useStyle(I({image:e.image,x:e.x,y:e.y,width:e.width,height:e.height},n.style))}else t.useStyle(n.style);var i=t.ensureState("emphasis");i.style=a,p&&(i.scaleX=1.1*t.scaleX,i.scaleY=1.1*t.scaleY),t.ensureState("blur").style=s,t.ensureState("select").style=l,u&&(t.cursor=u),t.z2=n.z2}));var d=e.valueDim.posDesc[+(n.boundingLength>0)];lh(t.__pictorialBarRect,uh(r),{labelFetcher:e.seriesModel,labelDataIndex:i,defaultText:lw(e.seriesModel.getData(),i),inheritColor:n.style.fill,defaultOpacity:n.style.opacity,defaultOutsidePosition:d}),ol(t,h,c)}function Ik(t){var e=Math.round(t);return Math.abs(t-e)<1e-4?e:Math.ceil(t)}var Tk=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.hasSymbolVisual=!0,n.defaultSymbol="roundRect",n}return n(e,t),e.prototype.getInitialData=function(e){return e.stack=null,t.prototype.getInitialData.apply(this,arguments)},e.type="series.pictorialBar",e.dependencies=["grid"],e.defaultOption=Rh(Xw.defaultOption,{symbol:"circle",symbolSize:null,symbolRotate:null,symbolPosition:null,symbolOffset:null,symbolMargin:null,symbolRepeat:!1,symbolRepeatDirection:"end",symbolClip:!1,symbolBoundingData:null,symbolPatternSize:400,barGap:"-100%",progressive:0,emphasis:{scale:!1},select:{itemStyle:{borderColor:"#212121"}}}),e}(Xw);var Ck=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n._layers=[],n}return n(e,t),e.prototype.render=function(t,e,n){var i=t.getData(),r=this,o=this.group,a=t.getLayerSeries(),s=i.getLayout("layoutInfo"),l=s.rect,u=s.boundaryGap;function h(t){return t.name}o.x=0,o.y=l.y+u[0];var c=new Jm(this._layersSeries||[],a,h,h),p=[];function d(e,n,s){var l=r._layers;if("remove"!==e){for(var u,h,c=[],d=[],f=a[n].indices,g=0;g<f.length;g++){var y=i.getItemLayout(f[g]),v=y.x,m=y.y0,_=y.y;c.push(v,m),d.push(v,m+_),u=i.getItemVisual(f[g],"style")}var x=i.getItemLayout(f[0]),b=t.getModel("label").get("margin"),w=t.getModel("emphasis");if("add"===e){var S=p[n]=new zi;h=new Aw({shape:{points:c,stackedOnPoints:d,smooth:.4,stackedOnSmooth:.4,smoothConstraint:!1},z2:0}),S.add(h),o.add(S),t.isAnimationEnabled()&&h.setClipPath(function(t,e,n){var i=new as({shape:{x:t.x-10,y:t.y-10,width:0,height:t.height+20}});return Gu(i,{shape:{x:t.x-50,width:t.width+100,height:t.height+20}},e,n),i}(h.getBoundingRect(),t,(function(){h.removeClipPath()})))}else{S=l[s];h=S.childAt(0),o.add(S),p[n]=S,Fu(h,{shape:{points:c,stackedOnPoints:d}},t)}lh(h,uh(t),{labelDataIndex:f[g-1],defaultText:i.getName(f[g-1]),inheritColor:u.fill},{normal:{verticalAlign:"middle"}}),h.setTextConfig({position:null,local:!0});var M=h.getTextContent();M&&(M.x=x.x-b,M.y=x.y0+x.y/2),h.useStyle(u),i.setItemGraphicEl(n,h),ul(h,t),ol(h,w.get("focus"),w.get("blurScope"))}else o.remove(l[n])}c.add(B(d,this,"add")).update(B(d,this,"update")).remove(B(d,this,"remove")).execute(),this._layersSeries=a,this._layers=p},e.type="themeRiver",e}(Mf);var Ak=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.useColorPaletteOnData=!0,n}return n(e,t),e.prototype.init=function(e){t.prototype.init.apply(this,arguments),this.legendVisualProvider=new wS(B(this.getData,this),B(this.getRawData,this))},e.prototype.fixData=function(t){var e=t.length,n={},i=Br(t,(function(t){return n.hasOwnProperty(t[0]+"")||(n[t[0]+""]=-1),t[2]})),r=[];i.buckets.each((function(t,e){r.push({name:e,dataList:t})}));for(var o=r.length,a=0;a<o;++a){for(var s=r[a].name,l=0;l<r[a].dataList.length;++l){var u=r[a].dataList[l][0]+"";n[u]=a}for(var u in n)n.hasOwnProperty(u)&&n[u]!==a&&(n[u]=a,t[e]=[u,0,s],e++)}return t},e.prototype.getInitialData=function(t,e){for(var n=this.getReferringComponents("singleAxis",Rr).models[0].get("type"),i=N(t.data,(function(t){return void 0!==t[2]})),r=this.fixData(i||[]),o=[],a=this.nameMap=ht(),s=0,l=0;l<r.length;++l)o.push(r[l][2]),a.get(r[l][2])||(a.set(r[l][2],s),s++);var u=D_(r,{coordDimensions:["single"],dimensionsDefine:[{name:"time",type:t_(n)},{name:"value",type:"float"},{name:"name",type:"ordinal"}],encodeDefine:{single:0,value:1,itemName:2}}),h=new T_(u,this);return h.initData(r),h},e.prototype.getLayerSeries=function(){for(var t=this.getData(),e=t.count(),n=[],i=0;i<e;++i)n[i]=i;var r=t.mapDimension("single"),o=Br(n,(function(e){return t.get("name",e)})),a=[];return o.buckets.each((function(e,n){e.sort((function(e,n){return t.get(r,e)-t.get(r,n)})),a.push({name:n,indices:e})})),a},e.prototype.getAxisTooltipData=function(t,e,n){F(t)||(t=t?[t]:[]);for(var i,r=this.getData(),o=this.getLayerSeries(),a=[],s=o.length,l=0;l<s;++l){for(var u=Number.MAX_VALUE,h=-1,c=o[l].indices.length,p=0;p<c;++p){var d=r.get(t[0],o[l].indices[p]),f=Math.abs(d-e);f<=u&&(i=d,u=f,h=o[l].indices[p])}a.push(h)}return{dataIndices:a,nestestValue:i}},e.prototype.formatTooltip=function(t,e,n){var i=this.getData();return Jd("nameValue",{name:i.getName(t),value:i.get(i.mapDimension("value"),t)})},e.type="series.themeRiver",e.dependencies=["singleAxis"],e.defaultOption={zlevel:0,z:2,coordinateSystem:"singleAxis",boundaryGap:["10%","10%"],singleAxisIndex:0,animationEasing:"linear",label:{margin:4,show:!0,position:"left",fontSize:11},emphasis:{label:{show:!0}}},e}(pf);function Dk(t,e){t.eachSeriesByType("themeRiver",(function(t){var e=t.getData(),n=t.coordinateSystem,i={},r=n.getRect();i.rect=r;var o=t.get("boundaryGap"),a=n.getAxis();(i.boundaryGap=o,"horizontal"===a.orient)?(o[0]=Zi(o[0],r.height),o[1]=Zi(o[1],r.height),Lk(e,t,r.height-o[0]-o[1])):(o[0]=Zi(o[0],r.width),o[1]=Zi(o[1],r.width),Lk(e,t,r.width-o[0]-o[1]));e.setLayout("layoutInfo",i)}))}function Lk(t,e,n){if(t.count())for(var i,r=e.coordinateSystem,o=e.getLayerSeries(),a=t.mapDimension("single"),s=t.mapDimension("value"),l=O(o,(function(e){return O(e.indices,(function(e){var n=r.dataToPoint(t.get(a,e));return n[1]=t.get(s,e),n}))})),u=function(t){for(var e=t.length,n=t[0].length,i=[],r=[],o=0,a=0;a<n;++a){for(var s=0,l=0;l<e;++l)s+=t[l][a][1];s>o&&(o=s),i.push(s)}for(var u=0;u<n;++u)r[u]=(o-i[u])/2;o=0;for(var h=0;h<n;++h){var c=i[h]+r[h];c>o&&(o=c)}return{y0:r,max:o}}(l),h=u.y0,c=n/u.max,p=o.length,d=o[0].indices.length,f=0;f<d;++f){i=h[f]*c,t.setItemLayout(o[0].indices[f],{layerIndex:0,x:l[0][f][0],y0:i,y:l[0][f][1]*c});for(var g=1;g<p;++g)i+=l[g-1][f][1]*c,t.setItemLayout(o[g].indices[f],{layerIndex:g,x:l[g][f][0],y0:i,y:l[g][f][1]*c})}}var kk=function(t){function e(e,n,i,r){var o=t.call(this)||this;o.z2=2,o.textConfig={inside:!0},vs(o).seriesIndex=n.seriesIndex;var a=new us({z2:4,silent:e.getModel().get(["label","silent"])});return o.setTextContent(a),o.updateData(!0,e,n,i,r),o}return n(e,t),e.prototype.updateData=function(t,e,n,i,r){this.node=e,e.piece=this,n=n||this._seriesModel,i=i||this._ecModel;var o=this;vs(o).dataIndex=e.dataIndex;var a=e.getModel(),s=a.getModel("emphasis"),l=e.getLayout(),u=I({},l);u.label=null;var h=e.getVisual("style");h.lineJoin="bevel";var c=e.getVisual("decal");c&&(h.decal=Ny(c,r));var p=mS(a.getModel("itemStyle"),u);I(u,p),P(bs,(function(t){var e=o.ensureState(t),n=a.getModel([t,"itemStyle"]);e.style=n.getItemStyle();var i=mS(n,u);i&&(e.shape=i)})),t?(o.setShape(u),o.shape.r=l.r0,Fu(o,{shape:{r:l.r}},n,e.dataIndex)):Fu(o,{shape:u},n),o.useStyle(h),this._updateLabel(n);var d=a.getShallow("cursor");d&&o.attr("cursor",d),this._seriesModel=n||this._seriesModel,this._ecModel=i||this._ecModel;var f=s.get("focus");ol(this,"ancestor"===f?e.getAncestorsIndices():"descendant"===f?e.getDescendantIndices():f,s.get("blurScope"))},e.prototype._updateLabel=function(t){var e=this,n=this.node.getModel(),i=n.getModel("label"),r=this.node.getLayout(),o=r.endAngle-r.startAngle,a=(r.startAngle+r.endAngle)/2,s=Math.cos(a),l=Math.sin(a),u=this,h=u.getTextContent(),c=this.node.dataIndex,p=i.get("minAngle")/180*Math.PI,d=i.get("show")&&!(null!=p&&Math.abs(o)<p);function f(t,e){var n=t.get(e);return null==n?i.get(e):n}h.ignore=!d,P(ws,(function(i){var o="normal"===i?n.getModel("label"):n.getModel([i,"label"]),p="normal"===i,d=p?h:h.ensureState(i),g=t.getFormattedLabel(c,i);p&&(g=g||e.node.name),d.style=hh(o,{},null,"normal"!==i,!0),g&&(d.style.text=g);var y=o.get("show");null==y||p||(d.ignore=!y);var v,m=f(o,"position"),_=p?u:u.states[i],x=_.style.fill;_.textConfig={outsideFill:"inherit"===o.get("color")?x:null,inside:"outside"!==m};var b=f(o,"distance")||0,w=f(o,"align");"outside"===m?(v=r.r+b,w=a>Math.PI/2?"right":"left"):w&&"center"!==w?"left"===w?(v=r.r0+b,a>Math.PI/2&&(w="right")):"right"===w&&(v=r.r-b,a>Math.PI/2&&(w="left")):(v=(r.r+r.r0)/2,w="center"),d.style.align=w,d.style.verticalAlign=f(o,"verticalAlign")||"middle",d.x=v*s+r.cx,d.y=v*l+r.cy;var S=f(o,"rotate"),M=0;"radial"===S?(M=-a)<-Math.PI/2&&(M+=Math.PI):"tangential"===S?(M=Math.PI/2-a)>Math.PI/2?M-=Math.PI:M<-Math.PI/2&&(M+=Math.PI):"number"==typeof S&&(M=S*Math.PI/180),d.rotation=M})),h.dirtyStyle()},e}(Kl),Pk="sunburstRootToNode",Ok="sunburstHighlight";var Rk=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n,i){var r=this;this.seriesModel=t,this.api=n,this.ecModel=e;var o=t.getData(),a=o.tree.root,s=t.getViewRoot(),l=this.group,u=t.get("renderLabelForZeroData"),h=[];s.eachNode((function(t){h.push(t)}));var c=this._oldChildren||[];!function(i,r){if(0===i.length&&0===r.length)return;function s(t){return t.getId()}function h(s,h){!function(i,r){u||!i||i.getValue()||(i=null);if(i!==a&&r!==a)if(r&&r.piece)i?(r.piece.updateData(!1,i,t,e,n),o.setItemGraphicEl(i.dataIndex,r.piece)):function(t){if(!t)return;t.piece&&(l.remove(t.piece),t.piece=null)}(r);else if(i){var s=new kk(i,t,e,n);l.add(s),o.setItemGraphicEl(i.dataIndex,s)}}(null==s?null:i[s],null==h?null:r[h])}new Jm(r,i,s,s).add(h).update(h).remove(V(h,null)).execute()}(h,c),function(i,o){o.depth>0?(r.virtualPiece?r.virtualPiece.updateData(!1,i,t,e,n):(r.virtualPiece=new kk(i,t,e,n),l.add(r.virtualPiece)),o.piece.off("click"),r.virtualPiece.on("click",(function(t){r._rootToNode(o.parentNode)}))):r.virtualPiece&&(l.remove(r.virtualPiece),r.virtualPiece=null)}(a,s),this._initEvents(),this._oldChildren=h},e.prototype._initEvents=function(){var t=this;this.group.off("click"),this.group.on("click",(function(e){var n=!1;t.seriesModel.getViewRoot().eachNode((function(i){if(!n&&i.piece&&i.piece===e.target){var r=i.getModel().get("nodeClick");if("rootToNode"===r)t._rootToNode(i);else if("link"===r){var o=i.getModel(),a=o.get("link");if(a)Lc(a,o.get("target",!0)||"_blank")}n=!0}}))}))},e.prototype._rootToNode=function(t){t!==this.seriesModel.getViewRoot()&&this.api.dispatchAction({type:Pk,from:this.uid,seriesId:this.seriesModel.id,targetNode:t})},e.prototype.containPoint=function(t,e){var n=e.getData().getItemLayout(0);if(n){var i=t[0]-n.cx,r=t[1]-n.cy,o=Math.sqrt(i*i+r*r);return o<=n.r&&o>=n.r0}},e.type="sunburst",e}(Mf),Nk=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.ignoreStyleOnData=!0,n}return n(e,t),e.prototype.getInitialData=function(t,e){var n={name:t.name,children:t.data};Ek(n);var i=O(t.levels||[],(function(t){return new kh(t,this,e)}),this),r=jI.createTree(n,this,(function(t){t.wrapMethod("getItemModel",(function(t,e){var n=r.getNodeByDataIndex(e),o=i[n.depth];return o&&(t.parentModel=o),t}))}));return r.data},e.prototype.optionUpdated=function(){this.resetViewRoot()},e.prototype.getDataParams=function(e){var n=t.prototype.getDataParams.apply(this,arguments),i=this.getData().tree.getNodeByDataIndex(e);return n.treePathInfo=nT(i,this),n},e.prototype.getViewRoot=function(){return this._viewRoot},e.prototype.resetViewRoot=function(t){t?this._viewRoot=t:t=this._viewRoot;var e=this.getRawData().tree.root;t&&(t===e||e.contains(t))||(this._viewRoot=e)},e.prototype.enableAriaDecal=function(){oT(this)},e.type="series.sunburst",e.defaultOption={zlevel:0,z:2,center:["50%","50%"],radius:[0,"75%"],clockwise:!0,startAngle:90,minAngle:0,stillShowZeroSum:!0,nodeClick:"rootToNode",renderLabelForZeroData:!1,label:{rotate:"radial",show:!0,opacity:1,align:"center",position:"inside",distance:5,silent:!0},itemStyle:{borderWidth:1,borderColor:"white",borderType:"solid",shadowBlur:0,shadowColor:"rgba(0, 0, 0, 0.2)",shadowOffsetX:0,shadowOffsetY:0,opacity:1},emphasis:{focus:"descendant"},blur:{itemStyle:{opacity:.2},label:{opacity:.1}},animationType:"expansion",animationDuration:1e3,animationDurationUpdate:500,data:[],levels:[],sort:"desc"},e}(pf);function Ek(t){var e=0;P(t.children,(function(t){Ek(t);var n=t.value;F(n)&&(n=n[0]),e+=n}));var n=t.value;F(n)&&(n=n[0]),(null==n||isNaN(n))&&(n=e),n<0&&(n=0),F(t.value)?t.value[0]=n:t.value=n}var zk=Math.PI/180;function Bk(t,e,n){e.eachSeriesByType(t,(function(t){var e=t.get("center"),i=t.get("radius");F(i)||(i=[0,i]),F(e)||(e=[e,e]);var r=n.getWidth(),o=n.getHeight(),a=Math.min(r,o),s=Zi(e[0],r),l=Zi(e[1],o),u=Zi(i[0],a/2),h=Zi(i[1],a/2),c=-t.get("startAngle")*zk,p=t.get("minAngle")*zk,d=t.getData().tree.root,f=t.getViewRoot(),g=f.depth,y=t.get("sort");null!=y&&Vk(f,y);var v=0;P(f.children,(function(t){!isNaN(t.getValue())&&v++}));var m=f.getValue(),_=Math.PI/(m||v)*2,x=f.depth>0,b=f.height-(x?-1:1),w=(h-u)/(b||1),S=t.get("clockwise"),M=t.get("stillShowZeroSum"),I=S?1:-1,T=function(t,e){if(t){var n=e;if(t!==d){var i=t.getValue(),r=0===m&&M?_:i*_;r<p&&(r=p),n=e+I*r;var o=t.depth-g-(x?-1:1),h=u+w*o,c=u+w*(o+1),f=t.getModel();null!=f.get("r0")&&(h=Zi(f.get("r0"),a/2)),null!=f.get("r")&&(c=Zi(f.get("r"),a/2)),t.setLayout({angle:r,startAngle:e,endAngle:n,clockwise:S,cx:s,cy:l,r0:h,r:c})}if(t.children&&t.children.length){var y=0;P(t.children,(function(t){y+=T(t,e+y)}))}return n-e}};if(x){var C=u,A=u+w,D=2*Math.PI;d.setLayout({angle:D,startAngle:c,endAngle:c+D,clockwise:S,cx:s,cy:l,r0:C,r:A})}T(f,c)}))}function Vk(t,e){var n=t.children||[];t.children=function(t,e){if("function"==typeof e){var n=O(t,(function(t,e){var n=t.getValue();return{params:{depth:t.depth,height:t.height,dataIndex:t.dataIndex,getValue:function(){return n}},index:e}}));return n.sort((function(t,n){return e(t.params,n.params)})),O(n,(function(e){return t[e.index]}))}var i="asc"===e;return t.sort((function(t,e){var n=(t.getValue()-e.getValue())*(i?1:-1);return 0===n?(t.dataIndex-e.dataIndex)*(i?-1:1):n}))}(n,e),n.length&&P(t.children,(function(t){Vk(t,e)}))}function Fk(t){var e={};t.eachSeriesByType("sunburst",(function(t){var n=t.getData(),i=n.tree;i.eachNode((function(r){var o=r.getModel().getModel("itemStyle").getItemStyle();o.fill||(o.fill=function(t,n,i){for(var r=t;r&&r.depth>1;)r=r.parentNode;var o=n.getColorFromPalette(r.name||r.dataIndex+"",e);return t.depth>1&&"string"==typeof o&&(o=$e(o,(t.depth-1)/(i-1)*.5)),o}(r,t,i.root.height)),I(n.ensureUniqueItemVisual(r.dataIndex,"style"),o)}))}))}function Gk(t,e){return e=e||[0,0],O(["x","y"],(function(n,i){var r=this.getAxis(n),o=e[i],a=t[i]/2;return"category"===r.type?r.getBandWidth():Math.abs(r.dataToCoord(o-a)-r.dataToCoord(o+a))}),this)}function Hk(t,e){return e=e||[0,0],O([0,1],(function(n){var i=e[n],r=t[n]/2,o=[],a=[];return o[n]=i-r,a[n]=i+r,o[1-n]=a[1-n]=e[1-n],Math.abs(this.dataToPoint(o)[n]-this.dataToPoint(a)[n])}),this)}function Wk(t,e){var n=this.getAxis(),i=e instanceof Array?e[0]:e,r=(t instanceof Array?t[0]:t)/2;return"category"===n.type?n.getBandWidth():Math.abs(n.dataToCoord(i-r)-n.dataToCoord(i+r))}function Uk(t,e){return e=e||[0,0],O(["Radius","Angle"],(function(n,i){var r=this["get"+n+"Axis"](),o=e[i],a=t[i]/2,s="category"===r.type?r.getBandWidth():Math.abs(r.dataToCoord(o-a)-r.dataToCoord(o+a));return"Angle"===n&&(s=s*Math.PI/180),s}),this)}function Yk(t,e,n,i){return t&&(t.legacy||!1!==t.legacy&&!n&&!i&&"tspan"!==e&&("text"===e||dt(t,"text")))}function Xk(t,e,n){var i,r,o,a=t;if("text"===e)o=a;else{o={},dt(a,"text")&&(o.text=a.text),dt(a,"rich")&&(o.rich=a.rich),dt(a,"textFill")&&(o.fill=a.textFill),dt(a,"textStroke")&&(o.stroke=a.textStroke),r={type:"text",style:o,silent:!0},i={};var s=dt(a,"textPosition");n?i.position=s?a.textPosition:"inside":s&&(i.position=a.textPosition),dt(a,"textPosition")&&(i.position=a.textPosition),dt(a,"textOffset")&&(i.offset=a.textOffset),dt(a,"textRotation")&&(i.rotation=a.textRotation),dt(a,"textDistance")&&(i.distance=a.textDistance)}return Zk(o,t),P(o.rich,(function(t){Zk(t,t)})),{textConfig:i,textContent:r}}function Zk(t,e){e&&(e.font=e.textFont||e.font,dt(e,"textStrokeWidth")&&(t.lineWidth=e.textStrokeWidth),dt(e,"textAlign")&&(t.align=e.textAlign),dt(e,"textVerticalAlign")&&(t.verticalAlign=e.textVerticalAlign),dt(e,"textLineHeight")&&(t.lineHeight=e.textLineHeight),dt(e,"textWidth")&&(t.width=e.textWidth),dt(e,"textHeight")&&(t.height=e.textHeight),dt(e,"textBackgroundColor")&&(t.backgroundColor=e.textBackgroundColor),dt(e,"textPadding")&&(t.padding=e.textPadding),dt(e,"textBorderColor")&&(t.borderColor=e.textBorderColor),dt(e,"textBorderWidth")&&(t.borderWidth=e.textBorderWidth),dt(e,"textBorderRadius")&&(t.borderRadius=e.textBorderRadius),dt(e,"textBoxShadowColor")&&(t.shadowColor=e.textBoxShadowColor),dt(e,"textBoxShadowBlur")&&(t.shadowBlur=e.textBoxShadowBlur),dt(e,"textBoxShadowOffsetX")&&(t.shadowOffsetX=e.textBoxShadowOffsetX),dt(e,"textBoxShadowOffsetY")&&(t.shadowOffsetY=e.textBoxShadowOffsetY))}function jk(t,e,n){var i=t;i.textPosition=i.textPosition||n.position||"inside",null!=n.offset&&(i.textOffset=n.offset),null!=n.rotation&&(i.textRotation=n.rotation),null!=n.distance&&(i.textDistance=n.distance);var r=i.textPosition.indexOf("inside")>=0,o=t.fill||"#000000";qk(i,e);var a=null==i.textFill;return r?a&&(i.textFill=n.insideFill||"#ffffff",!i.textStroke&&n.insideStroke&&(i.textStroke=n.insideStroke),!i.textStroke&&(i.textStroke=o),null==i.textStrokeWidth&&(i.textStrokeWidth=2)):(a&&(i.textFill=t.fill||n.outsideFill||"#000000"),!i.textStroke&&n.outsideStroke&&(i.textStroke=n.outsideStroke)),i.text=e.text,i.rich=e.rich,P(e.rich,(function(t){qk(t,t)})),i}function qk(t,e){e&&(dt(e,"fill")&&(t.textFill=e.fill),dt(e,"stroke")&&(t.textStroke=e.fill),dt(e,"lineWidth")&&(t.textStrokeWidth=e.lineWidth),dt(e,"font")&&(t.font=e.font),dt(e,"fontStyle")&&(t.fontStyle=e.fontStyle),dt(e,"fontWeight")&&(t.fontWeight=e.fontWeight),dt(e,"fontSize")&&(t.fontSize=e.fontSize),dt(e,"fontFamily")&&(t.fontFamily=e.fontFamily),dt(e,"align")&&(t.textAlign=e.align),dt(e,"verticalAlign")&&(t.textVerticalAlign=e.verticalAlign),dt(e,"lineHeight")&&(t.textLineHeight=e.lineHeight),dt(e,"width")&&(t.textWidth=e.width),dt(e,"height")&&(t.textHeight=e.height),dt(e,"backgroundColor")&&(t.textBackgroundColor=e.backgroundColor),dt(e,"padding")&&(t.textPadding=e.padding),dt(e,"borderColor")&&(t.textBorderColor=e.borderColor),dt(e,"borderWidth")&&(t.textBorderWidth=e.borderWidth),dt(e,"borderRadius")&&(t.textBorderRadius=e.borderRadius),dt(e,"shadowColor")&&(t.textBoxShadowColor=e.shadowColor),dt(e,"shadowBlur")&&(t.textBoxShadowBlur=e.shadowBlur),dt(e,"shadowOffsetX")&&(t.textBoxShadowOffsetX=e.shadowOffsetX),dt(e,"shadowOffsetY")&&(t.textBoxShadowOffsetY=e.shadowOffsetY),dt(e,"textShadowColor")&&(t.textShadowColor=e.textShadowColor),dt(e,"textShadowBlur")&&(t.textShadowBlur=e.textShadowBlur),dt(e,"textShadowOffsetX")&&(t.textShadowOffsetX=e.textShadowOffsetX),dt(e,"textShadowOffsetY")&&(t.textShadowOffsetY=e.textShadowOffsetY))}var Kk=Aa.CMD,$k=2*Math.PI,Jk=["x","y"],Qk=["width","height"],tP=[];function eP(t,e){return Math.abs(t-e)<1e-5}function nP(t){var e,n,i,r,o,a=t.data,s=t.len(),l=[],u=0,h=0,c=0,p=0;function d(t,n){e&&e.length>2&&l.push(e),e=[t,n]}function f(t,n,i,r){eP(t,i)&&eP(n,r)||e.push(t,n,i,r,i,r)}function g(t,n,i,r,o,a){var s=Math.abs(n-t),l=4*Math.tan(s/4)/3,u=n<t?-1:1,h=Math.cos(t),c=Math.sin(t),p=Math.cos(n),d=Math.sin(n),f=h*o+i,g=c*a+r,y=p*o+i,v=d*a+r,m=o*l*u,_=a*l*u;e.push(f-m*c,g+_*h,y+m*d,v-_*p,y,v)}for(var y=0;y<s;){var v=a[y++],m=1===y;switch(m&&(c=u=a[y],p=h=a[y+1],v!==Kk.L&&v!==Kk.C&&v!==Kk.Q||(e=[c,p])),v){case Kk.M:u=c=a[y++],h=p=a[y++],d(c,p);break;case Kk.L:f(u,h,n=a[y++],i=a[y++]),u=n,h=i;break;case Kk.C:e.push(a[y++],a[y++],a[y++],a[y++],u=a[y++],h=a[y++]);break;case Kk.Q:n=a[y++],i=a[y++],r=a[y++],o=a[y++],e.push(u+2/3*(n-u),h+2/3*(i-h),r+2/3*(n-r),o+2/3*(i-o),r,o),u=r,h=o;break;case Kk.A:var _=a[y++],x=a[y++],b=a[y++],w=a[y++],S=a[y++],M=a[y++]+S;y+=1;var I=!a[y++];n=Math.cos(S)*b+_,i=Math.sin(S)*w+x,m?d(c=n,p=i):f(u,h,n,i),u=Math.cos(M)*b+_,h=Math.sin(M)*w+x;for(var T=(I?-1:1)*Math.PI/2,C=S;I?C>M:C<M;C+=T){g(C,I?Math.max(C+T,M):Math.min(C+T,M),_,x,b,w)}break;case Kk.R:c=u=a[y++],p=h=a[y++],n=c+a[y++],i=p+a[y++],d(n,p),f(n,p,n,i),f(n,i,c,i),f(c,i,c,p),f(c,p,n,p);break;case Kk.Z:e&&f(u,h,c,p),u=c,h=p}}return e&&e.length>2&&l.push(e),l}function iP(t,e){var n=t.length,i=e.length;if(n===i)return[t,e];for(var r=n<i?t:e,o=Math.min(n,i),a=Math.abs(i-n)/6,s=(o-2)/6,l=Math.ceil(a/s)+1,u=[r[0],r[1]],h=a,c=[],p=[],d=2;d<o;){var f=r[d-2],g=r[d-1],y=r[d++],v=r[d++],m=r[d++],_=r[d++],x=r[d++],b=r[d++];if(h<=0)u.push(y,v,m,_,x,b);else{for(var w=Math.min(h,l-1)+1,S=1;S<=w;S++){var M=S/w;Vo(f,y,m,x,M,c),Vo(g,v,_,b,M,p),f=c[3],g=p[3],u.push(c[1],p[1],c[2],p[2],f,g),y=c[5],v=p[5],m=c[6],_=p[6]}h-=w-1}}return r===t?[u,e]:[t,u]}function rP(t,e){for(var n=t.length,i=t[n-2],r=t[n-1],o=[],a=0;a<e.length;)o[a++]=i,o[a++]=r;return o}function oP(t){for(var e=0,n=0,i=0,r=t.length,o=0,a=r-2;o<r;a=o,o+=2){var s=t[a],l=t[a+1],u=t[o],h=t[o+1],c=s*h-u*l;e+=c,n+=(s+u)*c,i+=(l+h)*c}return 0===e?[t[0]||0,t[1]||0]:[n/e/3,i/e/3,e]}function aP(t,e,n,i){for(var r=(t.length-2)/6,o=1/0,a=0,s=t.length,l=s-2,u=0;u<r;u++){for(var h=6*u,c=0,p=0;p<s;p+=2){var d=0===p?h:(h+p-2)%l+2,f=t[d]-n[0],g=t[d+1]-n[1],y=e[p]-i[0]-f,v=e[p+1]-i[1]-g;c+=y*y+v*v}c<o&&(o=c,a=u)}return a}function sP(t){for(var e=[],n=t.length,i=0;i<n;i+=2)e[i]=t[n-i-2],e[i+1]=t[n-i-1];return e}function lP(t,e,n){var i,r;if(!t||!e)return e;!t.path&&t.createPathProxy(),(i=t.path).beginPath(),t.buildPath(i,t.shape),!e.path&&e.createPathProxy(),(r=e.path)===i&&(r=new Aa(!1)),r.beginPath(),cP(e)?e.__oldBuildPath(r,e.shape):e.buildPath(r,e.shape);var o=function(t,e){for(var n,i,r,o=[],a=[],s=0;s<Math.max(t.length,e.length);s++){var l=t[s],u=e[s],h=void 0,c=void 0;l?u?(i=h=(n=iP(l,u))[0],r=c=n[1]):(c=rP(r||l,l),h=l):(h=rP(i||u,u),c=u),o.push(h),a.push(c)}return[o,a]}(nP(i),nP(r)),a=function(t,e,n,i){for(var r,o=[],a=0;a<t.length;a++){var s=t[a],l=e[a],u=oP(s),h=oP(l);null==r&&(r=u[2]<0!=h[2]<0);var c=[],p=[],d=0,f=1/0,g=[],y=s.length;r&&(s=sP(s));for(var v=6*aP(s,l,u,h),m=y-2,_=0;_<m;_+=2){var x=(v+_)%m+2;c[_+2]=s[x]-u[0],c[_+3]=s[x+1]-u[1]}if(c[0]=s[v]-u[0],c[1]=s[v+1]-u[1],n>0)for(var b=i/n,w=-i/2;w<=i/2;w+=b){var S=Math.sin(w),M=Math.cos(w),I=0;for(_=0;_<s.length;_+=2){var T=c[_],C=c[_+1],A=l[_]-h[0],D=l[_+1]-h[1],L=A*M-D*S,k=A*S+D*M;g[_]=L,g[_+1]=k;var P=L-T,O=k-C;I+=P*P+O*O}if(I<f){f=I,d=w;for(var R=0;R<g.length;R++)p[R]=g[R]}}else for(var N=0;N<y;N+=2)p[N]=l[N]-h[0],p[N+1]=l[N+1]-h[1];o.push({from:c,to:p,fromCp:u,toCp:h,rotation:-d})}return o}(o[0],o[1],10,Math.PI);!function(t,e,n){if(cP(t))return void hP(t,e,n);var i=t;i.__oldBuildPath=i.buildPath,i.buildPath=uP,hP(i,e,n)}(e,a,0);var s=n&&n.done,l=n&&n.aborted,u=n&&n.during;return e.animateTo({__morphT:1},T({during:function(t){e.dirtyShape(),u&&u(t)},done:function(){var t;cP(t=e)&&(t.buildPath=t.__oldBuildPath,t.__oldBuildPath=t.__morphingData=null),e.createPathProxy(),e.dirtyShape(),s&&s()},aborted:function(){l&&l()}},n)),e}function uP(t){for(var e=this.__morphingData,n=this.__morphT,i=1-n,r=[],o=0;o<e.length;o++){var a=e[o],s=a.from,l=a.to,u=a.rotation*n,h=a.fromCp,c=a.toCp,p=Math.sin(u),d=Math.cos(u);Ot(r,h,c,n);for(var f=0;f<s.length;f+=2){var g=s[f],y=s[f+1],v=g*i+l[f]*n,m=y*i+l[f+1]*n;tP[f]=v*d-m*p+r[0],tP[f+1]=v*p+m*d+r[1]}for(f=0;f<s.length;)0===f&&t.moveTo(tP[f++],tP[f++]),t.bezierCurveTo(tP[f++],tP[f++],tP[f++],tP[f++],tP[f++],tP[f++])}}function hP(t,e,n){t.__morphingData=e,t.__morphT=n}function cP(t){return null!=t.__oldBuildPath}function pP(t){return!!t.__combiningSubList}function dP(t,e,n,i){for(var r=[],o=0,a=0;a<t.length;a++){var s=t[a];if(pP(s)){for(var l=s.__combiningSubList,u=0;u<l.length;u++)r.push(l[u]);o+=l.length}else r.push(s),o++}if(o){var h=n?n.dividingMethod:null,c=_P(e,o,h);rt(c.length===o);var p=n&&n.done,d=n&&n.aborted,f=n&&n.during,g=0,y=!1,v=T({during:function(t){f&&f(t)},done:function(){++g===c.length&&(!function(t){if(!pP(t))return;var e=t;fP(e,null),e.addSelfToZr=e.__oldAddSelfToZr,e.removeSelfFromZr=e.__oldRemoveSelfFromZr,e.buildPath=e.__oldBuildPath,e.childrenRef=e.__combiningSubList=e.__oldAddSelfToZr=e.__oldRemoveSelfFromZr=e.__oldBuildPath=null}(e),p&&p())},aborted:function(){y||(y=!0,d&&d())}},n);for(a=0;a<o;a++){var m=r[a],_=c[a];i&&i(e,_,!0),lP(m,_,v)}return function(t,e){if(pP(t))return void fP(t,e);var n=t;fP(n,e),n.__oldAddSelfToZr=t.addSelfToZr,n.__oldRemoveSelfFromZr=t.removeSelfFromZr,n.addSelfToZr=gP,n.removeSelfFromZr=vP,n.__oldBuildPath=n.buildPath,n.buildPath=ft,n.childrenRef=mP}(e,c),{fromIndividuals:r,toIndividuals:c,count:o}}}function fP(t,e){if(t.__combiningSubList!==e){if(yP(t,"removeSelfFromZr"),t.__combiningSubList=e,e)for(var n=0;n<e.length;n++)e[n].parent=t;yP(t,"addSelfToZr")}}function gP(t){this.__oldAddSelfToZr(t),yP(this,"addSelfToZr")}function yP(t,e){var n=t.__combiningSubList,i=t.__zr;if(n&&i)for(var r=0;r<n.length;r++){n[r][e](i)}}function vP(t){this.__oldRemoveSelfFromZr(t);for(var e=this.__combiningSubList,n=0;n<e.length;n++){e[n].removeSelfFromZr(t)}}function mP(){return this.__combiningSubList}function _P(t,e,n){return"duplicate"===n?xP(t,e):function(t,e){var n=[];if(e<=0)return n;if(1===e)return xP(t,e);if(t instanceof as)for(var i=(c=t.shape).height>c.width?1:0,r=Qk[i],o=Jk[i],a=c[r]/e,s=c[o],l=0;l<e;l++,s+=a){var u={x:c.x,y:c.y,width:c.width,height:c.height};u[o]=s,u[r]=l<e-1?a:c[o]+c[r]-s;var h=new as({shape:u});n.push(h)}else{if(!(t instanceof Kl))return xP(t,e);var c,p=(c=t.shape).clockwise,d=c.startAngle,f=c.endAngle,g=(function(t,e,n){return e+$k*Math[n?"ceil":"floor"]((t-e)/$k)}(d,c.endAngle,p)-d)/e,y=d;for(l=0;l<e;l++,y+=g){h=new Kl({shape:{cx:c.cx,cy:c.cy,r:c.r,r0:c.r0,clockwise:p,startAngle:y,endAngle:l===e-1?f:y+g}});n.push(h)}}return n}(t,e)}function xP(t,e){var n=[];if(e<=0)return n;for(var i=t.constructor,r=0;r<e;r++){var o=new i({shape:w(t.shape)});n.push(o)}return n}var bP=Lr(),wP={x:1,y:1,scaleX:1,scaleY:1,originX:1,originY:1,rotation:1},SP=(z(wP).join(", "),{color:"fill",borderColor:"stroke"}),MP={symbol:1,symbolSize:1,symbolKeepAspect:1,legendSymbol:1,visualMeta:1,liftZ:1,decal:1},IP="emphasis",TP="normal",CP="blur",AP="select",DP=[TP,IP,CP,AP],LP={normal:["itemStyle"],emphasis:[IP,"itemStyle"],blur:[CP,"itemStyle"],select:[AP,"itemStyle"]},kP={normal:["label"],emphasis:[IP,"label"],blur:[CP,"label"],select:[AP,"label"]},PP={normal:{},emphasis:{},blur:{},select:{}},OP={position:["x","y"],scale:["scaleX","scaleY"],origin:["originX","originY"]},RP=new ke,NP={cartesian2d:function(t){var e=t.master.getRect();return{coordSys:{type:"cartesian2d",x:e.x,y:e.y,width:e.width,height:e.height},api:{coord:function(e){return t.dataToPoint(e)},size:B(Gk,t)}}},geo:function(t){var e=t.getBoundingRect();return{coordSys:{type:"geo",x:e.x,y:e.y,width:e.width,height:e.height,zoom:t.getZoom()},api:{coord:function(e){return t.dataToPoint(e)},size:B(Hk,t)}}},singleAxis:function(t){var e=t.getRect();return{coordSys:{type:"singleAxis",x:e.x,y:e.y,width:e.width,height:e.height},api:{coord:function(e){return t.dataToPoint(e)},size:B(Wk,t)}}},polar:function(t){var e=t.getRadiusAxis(),n=t.getAngleAxis(),i=e.getExtent();return i[0]>i[1]&&i.reverse(),{coordSys:{type:"polar",cx:t.cx,cy:t.cy,r:i[1],r0:i[0]},api:{coord:function(i){var r=e.dataToRadius(i[0]),o=n.dataToAngle(i[1]),a=t.coordToPoint([r,o]);return a.push(r,o*Math.PI/180),a},size:B(Uk,t)}}},calendar:function(t){var e=t.getRect(),n=t.getRangeInfo();return{coordSys:{type:"calendar",x:e.x,y:e.y,width:e.width,height:e.height,cellWidth:t.getCellWidth(),cellHeight:t.getCellHeight(),rangeInfo:{start:n.start,end:n.end,weeks:n.weeks,dayCount:n.allDay}},api:{coord:function(e,n){return t.dataToPoint(e,n)}}}}},EP=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.optionUpdated=function(){this.currentZLevel=this.get("zlevel",!0),this.currentZ=this.get("z",!0)},e.prototype.getInitialData=function(t,e){return E_(this.getSource(),this)},e.prototype.getDataParams=function(e,n,i){var r=t.prototype.getDataParams.call(this,e,n);return i&&(r.info=bP(i).info),r},e.type="series.custom",e.dependencies=["grid","polar","geo","singleAxis","calendar"],e.defaultOption={coordinateSystem:"cartesian2d",zlevel:0,z:2,legendHoverLink:!0,clip:!1},e}(pf),zP=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n,i){var r=this._data,o=t.getData(),a=this.group,s=iO(t,o,e,n),l=t.__transientTransitionOpt;if(!l||null!=l.from&&null!=l.to){var u=new mO(t,l),h=l?"multiple":"oneToOne";new Jm(r?r.getIndices():[],o.getIndices(),BP(r,h,l&&l.from),BP(o,h,l&&l.to),null,h).add((function(e){oO(n,null,e,s(e,i),t,a,o,null)})).remove((function(e){fO(r.getItemGraphicEl(e),t,a)})).update((function(e,l){u.reset("oneToOne");var h=r.getItemGraphicEl(l);u.findAndAddFrom(h),u.hasFrom()&&(vO(h,a),h=null),oO(n,h,e,s(e,i),t,a,o,u),u.applyMorphing()})).updateManyToOne((function(e,l){u.reset("manyToOne");for(var h=0;h<l.length;h++){var c=r.getItemGraphicEl(l[h]);u.findAndAddFrom(c),vO(c,a)}oO(n,null,e,s(e,i),t,a,o,u),u.applyMorphing()})).updateOneToMany((function(e,l){u.reset("oneToMany");var h=e.length,c=r.getItemGraphicEl(l);u.findAndAddFrom(c),vO(c,a);for(var p=0;p<h;p++)oO(n,null,e[p],s(e[p],i),t,a,o,u);u.applyMorphing()})).execute()}else r&&r.each((function(e){fO(r.getItemGraphicEl(e),t,a)})),o.each((function(e){oO(n,null,e,s(e,i),t,a,o,null)}));var c=t.get("clip",!0)?kw(t.coordinateSystem,!1,t):null;c?a.setClipPath(c):a.removeClipPath(),this._data=o},e.prototype.incrementalPrepareRender=function(t,e,n){this.group.removeAll(),this._data=null},e.prototype.incrementalRender=function(t,e,n,i,r){var o=e.getData(),a=iO(e,o,n,i);function s(t){t.isGroup||(t.incremental=!0,t.ensureState("emphasis").hoverLayer=!0)}for(var l=t.start;l<t.end;l++){oO(null,null,l,a(l,r),e,this.group,o,null).traverse(s)}},e.prototype.filterForExposedEvent=function(t,e,n,i){var r=e.element;if(null==r||n.name===r)return!0;for(;(n=n.__hostTarget||n.parent)&&n!==this.group;)if(n.name===r)return!0;return!1},e.type="custom",e}(Mf);function BP(t,e,n){if(t){if("oneToOne"===e)return function(e,n){return t.getId(n)};var i=t.getDimension(n),r=t.getDimensionInfo(i);if(!r){var o="";0,yr(o)}var a=r.ordinalMeta;return function(e,n){var r=t.get(i,n);return a&&(r=a.categories[r]),null==r||J(r)?e+"":"_ec_"+r}}}function VP(t){var e,n=t.type;if("path"===n){var i=t.shape,r=null!=i.width&&null!=i.height?{x:i.x||0,y:i.y||0,width:i.width,height:i.height}:null,o=gO(i);e=Ou(o,null,r,i.layout||"center"),bP(e).customPathData=o}else if("image"===n)e=new Qa({}),bP(e).customImagePath=t.style.image;else if("text"===n)e=new us({});else if("group"===n)e=new zi;else{if("compoundPath"===n)throw new Error('"compoundPath" is not supported yet.');var a=Pu(n);if(!a){var s="";0,yr(s)}e=new a}return bP(e).customGraphicType=n,e.name=t.name,e.z2EmphasisLift=1,e.z2SelectLift=1,e}function FP(t,e,n,i,r,o,a,s,l,u){var h={},c={},p=e.isGroup?null:e;!n&&WP("shape",e,null,r,h,l),UP("shape",r,c),!n&&WP("extra",e,null,r,h,l),UP("extra",r,c),!n&&YP(e,null,r,h,l),function(t,e){tO(t,e,"position"),tO(t,e,"scale"),tO(t,e,"origin"),eO(t,e,"x"),eO(t,e,"y"),eO(t,e,"scaleX"),eO(t,e,"scaleY"),eO(t,e,"originX"),eO(t,e,"originY"),eO(t,e,"rotation")}(r,c);var d=a&&a.normal.cfg;if(d&&e.setTextConfig(d),"text"===e.type&&o){var f=o;dt(f,"textFill")&&(f.fill=f.textFill),dt(f,"textStroke")&&(f.stroke=f.textStroke)}if(o){var g=void 0,y=yO(e)?o.decal:null;t&&y&&(y.dirty=!0,g=Ny(y,t)),o.__decalPattern=g}return!n&&XP(e,null,r,o,h,l),p&&dt(r,"invisible")&&(p.invisible=r.invisible),n||(GP(e,c,o),HP(e,i,r,s,h,l)),dt(r,"silent")&&(e.silent=r.silent),dt(r,"ignore")&&(e.ignore=r.ignore),u||dt(r,"info")&&(bP(e).info=r.info),o?e.dirty():e.markRedraw(),n?c:null}function GP(t,e,n){var i=t.isGroup?null:t;if(i&&n){var r=n.__decalPattern,o=void 0;r&&(o=n.decal,n.decal=r),i.useStyle(n),r&&(n.decal=o);for(var a=i.animators,s=0;s<a.length;s++){var l=a[s];"style"===l.targetName&&l.changeTarget(i.style)}}e&&t.attr(e)}function HP(t,e,n,i,r,o){if(r){var a=n.during;bP(t).userDuring=a;var s={dataIndex:e,isFrom:!0,during:a?B($P,{el:t,userDuring:a}):null};o?Gu(t,r,i,s):Fu(t,r,i,s)}}function WP(t,e,n,i,r,o){var a=i[t];if(a){var s,l=e[t],u=a.enterFrom;if(o&&u){!s&&(s=r[t]={});for(var h=z(u),c=0;c<h.length;c++){s[_=h[c]]=u[_]}}if(!o&&l&&(null==n||"shape"!==t))if(a.transition){!s&&(s=r[t]={});var p=_r(a.transition);for(c=0;c<p.length;c++){var d=l[_=p[c]];0,s[_]=d}}else if(A(i.transition,t)>=0){!s&&(s=r[t]={});var f=z(l);for(c=0;c<f.length;c++){d=l[_=f[c]];ZP(a[_],d)&&(s[_]=d)}}var g=a.leaveTo;if(g){var y=jP(e),v=y[t]||(y[t]={}),m=z(g);for(c=0;c<m.length;c++){var _;v[_=m[c]]=g[_]}}}}function UP(t,e,n){var i=e[t];if(i)for(var r=n[t]={},o=z(i),a=0;a<o.length;a++){var s=o[a];r[s]=mn(i[s])}}function YP(t,e,n,i,r){var o=n.enterFrom;if(r&&o)for(var a=z(o),s=0;s<a.length;s++){0,i[f=a[s]]=o[f]}if(!r)if(e){var l=function(t,e){if(!t||t===e||t.parent===e.parent)return t;var n=RP.transform||(RP.transform=ge([])),i=t.getComputedTransform();i?ye(n,i):ge(n);var r=e.parent;r&&r.getComputedTransform();return RP.originX=t.originX,RP.originY=t.originY,RP.parent=r,RP.decomposeTransform(),RP}(e,t);nO(i,"x",l),nO(i,"y",l),nO(i,"scaleX",l),nO(i,"scaleY",l),nO(i,"originX",l),nO(i,"originY",l),nO(i,"rotation",l)}else if(n.transition){var u=_r(n.transition);for(s=0;s<u.length;s++){if("style"!==(f=u[s])&&"shape"!==f&&"extra"!==f){var h=t[f];0,i[f]=h}}}else nO(i,"x",t),nO(i,"y",t);var c=n.leaveTo;if(c){var p=jP(t),d=z(c);for(s=0;s<d.length;s++){var f;0,p[f=d[s]]=c[f]}}}function XP(t,e,n,i,r,o){if(i){var a,s=(e||t).style,l=i.enterFrom;if(o&&l){var u=z(l);!a&&(a=r.style={});for(var h=0;h<u.length;h++){a[x=u[h]]=l[x]}}if(!o&&s)if(i.transition){var c=_r(i.transition);!a&&(a=r.style={});for(h=0;h<c.length;h++){var p=s[x=c[h]];a[x]=p}}else if(t.getAnimationStyleProps&&A(n.transition,"style")>=0){var d=t.getAnimationStyleProps(),f=d?d.style:null;if(f){!a&&(a=r.style={});var g=z(i);for(h=0;h<g.length;h++){if(f[x=g[h]]){p=s[x];a[x]=p}}}}var y=i.leaveTo;if(y){var v=z(y),m=jP(t),_=m.style||(m.style={});for(h=0;h<v.length;h++){var x;_[x=v[h]]=y[x]}}}}function ZP(t,e){return k(t)?t!==e:null!=t&&isFinite(t)}function jP(t){var e=bP(t);return e.leaveToProps||(e.leaveToProps={})}var qP={},KP={setTransform:function(t,e){return qP.el[t]=e,this},getTransform:function(t){return qP.el[t]},setShape:function(t,e){return(qP.el.shape||(qP.el.shape={}))[t]=e,qP.isShapeDirty=!0,this},getShape:function(t){var e=qP.el.shape;if(e)return e[t]},setStyle:function(t,e){var n=qP.el.style;return n&&(n[t]=e,qP.isStyleDirty=!0),this},getStyle:function(t){var e=qP.el.style;if(e)return e[t]},setExtra:function(t,e){return(qP.el.extra||(qP.el.extra={}))[t]=e,this},getExtra:function(t){var e=qP.el.extra;if(e)return e[t]}};function $P(){var t=this,e=t.el;if(e){var n=bP(e).userDuring,i=t.userDuring;n===i?(qP.el=e,qP.isShapeDirty=!1,qP.isStyleDirty=!1,i(KP),qP.isShapeDirty&&e.dirtyShape&&e.dirtyShape(),qP.isStyleDirty&&e.dirtyStyle&&e.dirtyStyle()):t.el=t.userDuring=null}}function JP(t,e,n,i,r,o,a){var s=e.isGroup?null:e,l=r&&r[t].cfg;if(s){var u=s.ensureState(t);if(!1===i){var h=s.getState(t);h&&(h.style=null)}else u.style=i||null;l&&(u.textConfig=l),Ws(s)}}function QP(t,e,n){var i=n===TP,r=i?e:uO(e,n),o=r?r.z2:null;null!=o&&((i?t:t.ensureState(n)).z2=o||0)}function tO(t,e,n,i){var r=t[n],o=OP[n];r&&(i?(e[o[0]]=i[o[0]],e[o[1]]=i[o[1]]):(e[o[0]]=r[0],e[o[1]]=r[1]))}function eO(t,e,n,i){null!=t[n]&&(e[n]=i?i[n]:t[n])}function nO(t,e,n){n&&(t[e]=n[e])}function iO(t,e,n,i){var r=t.get("renderItem"),o=t.coordinateSystem,a={};o&&(a=o.prepareCustoms?o.prepareCustoms(o):NP[o.type](o));for(var s,l,u=T({getWidth:i.getWidth,getHeight:i.getHeight,getZr:i.getZr,getDevicePixelRatio:i.getDevicePixelRatio,value:function(t,n){return null==n&&(n=s),e.get(e.getDimension(t||0),n)},style:function(n,i){0;null==i&&(i=s);var r=e.getItemVisual(i,"style"),o=r&&r.fill,a=r&&r.opacity,l=m(i,TP).getItemStyle();null!=o&&(l.fill=o),null!=a&&(l.opacity=a);var u={inheritColor:H(o)?o:"#000000"},h=_(i,TP),c=hh(h,null,u,!1,!0);c.text=h.getShallow("show")?tt(t.getFormattedLabel(i,TP),lw(e,i)):null;var p=ch(h,u,!1);return b(n,l),l=jk(l,c,p),n&&x(l,n),l.legacy=!0,l},ordinalRawValue:function(t,n){null==n&&(n=s);var i=e.getDimensionInfo(t||0);if(!i)return;var r=e.get(i.name,n),o=i&&i.ordinalMeta;return o?o.categories[r]:r},styleEmphasis:function(n,i){0;null==i&&(i=s);var r=m(i,IP).getItemStyle(),o=_(i,IP),a=hh(o,null,null,!0,!0);a.text=o.getShallow("show")?et(t.getFormattedLabel(i,IP),t.getFormattedLabel(i,TP),lw(e,i)):null;var l=ch(o,null,!0);return b(n,r),r=jk(r,a,l),n&&x(r,n),r.legacy=!0,r},visual:function(t,n){if(null==n&&(n=s),dt(SP,t)){var i=e.getItemVisual(n,"style");return i?i[SP[t]]:null}if(dt(MP,t))return e.getItemVisual(n,t)},barLayout:function(t){if("cartesian2d"===o.type){return function(t){var e=[],n=t.axis,i="axis0";if("category"===n.type){for(var r=n.getBandWidth(),o=0;o<t.count;o++)e.push(T({bandWidth:r,axisKey:i,stackId:K_+o},t));var a=nx(e),s=[];for(o=0;o<t.count;o++){var l=a.axis0[K_+o];l.offsetCenter=l.offset+l.width/2,s.push(l)}return s}}(T({axis:o.getBaseAxis()},t))}},currentSeriesIndices:function(){return n.getCurrentSeriesIndices()},font:function(t){return yh(t,n)}},a.api||{}),h={context:{},seriesId:t.id,seriesName:t.name,seriesIndex:t.seriesIndex,coordSys:a.coordSys,dataInsideLength:e.count(),encode:rO(t.getData())},c={},p={},d={},f={},g=0;g<DP.length;g++){var y=DP[g];d[y]=t.getModel(LP[y]),f[y]=t.getModel(kP[y])}function v(t){return t===s?l||(l=e.getItemModel(t)):e.getItemModel(t)}function m(t,n){return e.hasItemOption?t===s?c[n]||(c[n]=v(t).getModel(LP[n])):v(t).getModel(LP[n]):d[n]}function _(t,n){return e.hasItemOption?t===s?p[n]||(p[n]=v(t).getModel(kP[n])):v(t).getModel(kP[n]):f[n]}return function(t,n){return s=t,l=null,c={},p={},r&&r(T({dataIndexInside:t,dataIndex:e.getRawIndex(t),actionType:n?n.type:null},h),u)};function x(t,e){for(var n in e)dt(e,n)&&(t[n]=e[n])}function b(t,e){t&&(t.textFill&&(e.textFill=t.textFill),t.textPosition&&(e.textPosition=t.textPosition))}}function rO(t){var e={};return P(t.dimensions,(function(n,i){var r=t.getDimensionInfo(n);if(!r.isExtraCoord){var o=r.coordDim;(e[o]=e[o]||[])[r.coordDimIndex]=i}})),e}function oO(t,e,n,i,r,o,a,s){if(i)return(e=aO(t,e,n,i,r,o,!0,s))&&a.setItemGraphicEl(n,e),ol(e,i.focus,i.blurScope),e;vO(e,o)}function aO(t,e,n,i,r,o,a,s){var l=-1;e&&sO(e,i)&&(l=o.childrenRef().indexOf(e),e=null);var u=!e;e?e.clearStates():e=VP(i);var h=(bP(e).canMorph=i.morph&&yO(e))&&s&&s.hasFrom(),c=u&&!h;PP.normal.cfg=PP.normal.conOpt=PP.emphasis.cfg=PP.emphasis.conOpt=PP.blur.cfg=PP.blur.conOpt=PP.select.cfg=PP.select.conOpt=null,PP.isLegacy=!1,function(t,e,n,i,r,o){if(t.isGroup)return;lO(n,null,o),lO(n,IP,o);var a=o.normal.conOpt,s=o.emphasis.conOpt,l=o.blur.conOpt,u=o.select.conOpt;if(null!=a||null!=s||null!=u||null!=l){var h=t.getTextContent();if(!1===a)h&&t.removeTextContent();else{a=o.normal.conOpt=a||{type:"text"},h?h.clearStates():(h=VP(a),t.setTextContent(h));var c=a&&a.style;FP(null,h,null,e,a,c,null,i,r,!0);for(var p=0;p<DP.length;p++){var d=DP[p];if(d!==TP){var f=o[d].conOpt;JP(d,h,0,hO(a,f,d),null)}}c?h.dirty():h.markRedraw()}}}(e,n,i,r,c,PP),function(t,e,n,i,r){var o=n.clipPath;if(!1===o)t&&t.getClipPath()&&t.removeClipPath();else if(o){var a=t.getClipPath();a&&sO(a,o)&&(a=null),a||(a=VP(o),t.setClipPath(a)),FP(null,a,null,e,o,null,null,i,r,!1)}}(e,n,i,r,c);var p=FP(t,e,h,n,i,i.style,PP,r,c,!1);h&&s.addTo(e,i,n,p);for(var d=0;d<DP.length;d++){var f=DP[d];if(f!==TP){var g=uO(i,f);JP(f,e,0,hO(i,g,f),PP)}}return function(t,e,n,i){if(!t.isGroup){var r=t,o=n.currentZ,a=n.currentZLevel;r.z=o,r.zlevel=a;var s=e.z2;null!=s&&(r.z2=s||0);for(var l=0;l<DP.length;l++)QP(r,e,DP[l])}}(e,i,r),"group"===i.type&&function(t,e,n,i,r,o){var a=i.children,s=a?a.length:0,l=i.$mergeChildren,u="byName"===l||i.diffChildrenByName,h=!1===l;if(!s&&!u&&!h)return;if(u)return c={api:t,oldChildren:e.children()||[],newChildren:a||[],dataIndex:n,seriesModel:r,group:e,morphPreparation:o},void new Jm(c.oldChildren,c.newChildren,cO,cO,c).add(pO).update(pO).remove(dO).execute();var c;h&&e.removeAll();for(var p=0;p<s;p++)a[p]&&aO(t,e.childAt(p),n,a[p],r,e,!1,o);for(var d=e.childCount()-1;d>=p;d--)fO(e.childAt(d),r,e)}(t,e,n,i,r,s),l>=0?o.replaceAt(e,l):o.add(e),e}function sO(t,e){var n,i=bP(t),r=e.type,o=e.shape,a=e.style;return null!=r&&r!==i.customGraphicType||"path"===r&&((n=o)&&(dt(n,"pathData")||dt(n,"d")))&&gO(o)!==i.customPathData||"image"===r&&dt(a,"image")&&a.image!==i.customImagePath}function lO(t,e,n){var i=e?uO(t,e):t,r=e?hO(t,i,IP):t.style,o=t.type,a=i?i.textConfig:null,s=t.textContent,l=s?e?uO(s,e):s:null;if(r&&(n.isLegacy||Yk(r,o,!!a,!!l))){n.isLegacy=!0;var u=Xk(r,o,!e);!a&&u.textConfig&&(a=u.textConfig),!l&&u.textContent&&(l=u.textContent)}if(!e&&l){var h=l;!h.type&&(h.type="text")}var c=e?n[e]:n.normal;c.cfg=a,c.conOpt=l}function uO(t,e){return e?t?t[e]:null:t}function hO(t,e,n){var i=e&&e.style;return null==i&&n===IP&&t&&(i=t.styleEmphasis),i}function cO(t,e){var n=t&&t.name;return null!=n?n:"e\0\0"+e}function pO(t,e){var n=this.context,i=null!=t?n.newChildren[t]:null,r=null!=e?n.oldChildren[e]:null;aO(n.api,r,n.dataIndex,i,n.seriesModel,n.group,0,n.morphPreparation)}function dO(t){var e=this.context;fO(e.oldChildren[t],e.seriesModel,e.group)}function fO(t,e,n){if(t){var i=bP(t).leaveToProps;i?Fu(t,i,e,{cb:function(){n.remove(t)}}):n.remove(t)}}function gO(t){return t&&(t.pathData||t.d)}function yO(t){return t&&t instanceof ja}function vO(t,e){t&&e.remove(t)}var mO=function(){function t(t,e){this._fromList=[],this._toList=[],this._toElOptionList=[],this._allPropsFinalList=[],this._toDataIndices=[],this._morphConfigList=[],this._seriesModel=t,this._transOpt=e}return t.prototype.hasFrom=function(){return!!this._fromList.length},t.prototype.findAndAddFrom=function(t){if(t&&(bP(t).canMorph&&this._fromList.push(t),t.isGroup))for(var e=t.childrenRef(),n=0;n<e.length;n++)this.findAndAddFrom(e[n])},t.prototype.addTo=function(t,e,n,i){t&&(this._toList.push(t),this._toElOptionList.push(e),this._toDataIndices.push(n),this._allPropsFinalList.push(i))},t.prototype.applyMorphing=function(){var t=this._type,e=this._fromList,n=this._toList.length,i=e.length;if(i&&n)if("oneToOne"===t)for(var r=0;r<n;r++)this._oneToOneForSingleTo(r,r);else if("manyToOne"===t)for(var o=Math.max(1,Math.floor(i/n)),a=(r=0,0);r<n;r++,a+=o){var s=r+1>=n?i-a:o;this._manyToOneForSingleTo(r,a>=i?null:a,s)}else if("oneToMany"===t)for(var l=Math.max(1,Math.floor(n/i)),u=0,h=0;u<n;u+=l,h++){var c=u+l>=n?n-u:l;this._oneToManyForSingleFrom(u,c,h>=i?null:h)}},t.prototype._oneToOneForSingleTo=function(t,e){var n,i=this._toList[t],r=this._toElOptionList[t],o=this._toDataIndices[t],a=this._allPropsFinalList[t],s=this._fromList[e],l=this._getOrCreateMorphConfig(o),u=l.duration;if(s&&pP(s)){if(GP(i,a,r.style),u){var h=dP([s],i,l,_O);this._processResultIndividuals(h,t,null)}}else{var c=u&&s&&(s!==i||(cP(n=s)||pP(n)))?s:null,p={};WP("shape",i,c,r,p,!1),WP("extra",i,c,r,p,!1),YP(i,c,r,p,!1),XP(i,c,r,r.style,p,!1),GP(i,a,r.style),c&&lP(c,i,l),HP(i,o,r,this._seriesModel,p,!1)}},t.prototype._manyToOneForSingleTo=function(t,e,n){var i=this._toList[t],r=this._toElOptionList[t];GP(i,this._allPropsFinalList[t],r.style);var o=this._getOrCreateMorphConfig(this._toDataIndices[t]);if(o.duration&&null!=e){for(var a=[],s=e;s<n;s++)a.push(this._fromList[s]);var l=dP(a,i,o,_O);this._processResultIndividuals(l,t,null)}},t.prototype._oneToManyForSingleFrom=function(t,e,n){for(var i=null==n?null:this._fromList[n],r=this._toList,o=[],a=t;a<e;a++){var s=r[a];GP(s,this._allPropsFinalList[a],this._toElOptionList[a].style),o.push(s)}var l=this._getOrCreateMorphConfig(this._toDataIndices[t]);if(l.duration&&i){var u=function(t,e,n,i){var r,o=e.length,a=n?n.dividingMethod:null,s=!1;if(pP(t)){var l=t.__combiningSubList;l.length===o?r=l:(r=_P(t,o,a),s=!0)}else r=_P(t,o,a),s=!0;rt(r.length===o);for(var u=0;u<o;u++)s&&i&&i(t,r[u],!1),lP(r[u],e[u],n);return{fromIndividuals:r,toIndividuals:e,count:o}}(i,o,l,_O);this._processResultIndividuals(u,t,e)}},t.prototype._processResultIndividuals=function(t,e,n){for(var i=null!=n,r=0;r<t.count;r++){var o=t.fromIndividuals[r],a=t.toIndividuals[r],s=e+(i?r:0),l=this._toElOptionList[s],u=this._toDataIndices[s],h={};YP(a,o,l,h,!1),XP(a,o,l,l.style,h,!1),HP(a,u,l,this._seriesModel,h,!1)}},t.prototype._getOrCreateMorphConfig=function(t){var e,n,i,r=this._morphConfigList,o=r[t];if(o)return o;var a=this._seriesModel,s=this._transOpt;if(a.isAnimationEnabled()){var l=void 0;if(a&&a.ecModel){var u=a.ecModel.getUpdatePayload();l=u&&u.animation}if(l)e=l.duration||0,n=l.easing||"cubicOut",i=l.delay||0;else{n=a.get("animationEasingUpdate");var h=a.get("animationDelayUpdate");i=G(h)?h(t):h;var c=a.get("animationDurationUpdate");e=G(c)?c(t):c}}return o={duration:e||0,delay:i,easing:n,dividingMethod:s?s.dividingMethod:null},r[t]=o,o},t.prototype.reset=function(t){this._type=t,this._fromList.length=this._toList.length=this._toElOptionList.length=this._allPropsFinalList.length=this._toDataIndices.length=0},t}();function _O(t,e,n){e.style=n?w(t.style):t.style,e.zlevel=t.zlevel,e.z=t.z,e.z2=t.z2}var xO=Lr(),bO=w,wO=B,SO=function(){function t(){this._dragging=!1,this.animationThreshold=15}return t.prototype.render=function(t,e,n,i){var r=e.get("value"),o=e.get("status");if(this._axisModel=t,this._axisPointerModel=e,this._api=n,i||this._lastValue!==r||this._lastStatus!==o){this._lastValue=r,this._lastStatus=o;var a=this._group,s=this._handle;if(!o||"hide"===o)return a&&a.hide(),void(s&&s.hide());a&&a.show(),s&&s.show();var l={};this.makeElOption(l,r,t,e,n);var u=l.graphicKey;u!==this._lastGraphicKey&&this.clear(n),this._lastGraphicKey=u;var h=this._moveAnimation=this.determineAnimation(t,e);if(a){var c=V(MO,e,h);this.updatePointerEl(a,l,c),this.updateLabelEl(a,l,c,e)}else a=this._group=new zi,this.createPointerEl(a,l,t,e),this.createLabelEl(a,l,t,e),n.getZr().add(a);AO(a,e,!0),this._renderHandle(r)}},t.prototype.remove=function(t){this.clear(t)},t.prototype.dispose=function(t){this.clear(t)},t.prototype.determineAnimation=function(t,e){var n=e.get("animation"),i=t.axis,r="category"===i.type,o=e.get("snap");if(!o&&!r)return!1;if("auto"===n||null==n){var a=this.animationThreshold;if(r&&i.getBandWidth()>a)return!0;if(o){var s=aM(t).seriesDataCount,l=i.getExtent();return Math.abs(l[0]-l[1])/s>a}return!1}return!0===n},t.prototype.makeElOption=function(t,e,n,i,r){},t.prototype.createPointerEl=function(t,e,n,i){var r=e.pointer;if(r){var o=xO(t).pointerEl=new rh[r.type](bO(e.pointer));t.add(o)}},t.prototype.createLabelEl=function(t,e,n,i){if(e.label){var r=xO(t).labelEl=new us(bO(e.label));t.add(r),TO(r,i)}},t.prototype.updatePointerEl=function(t,e,n){var i=xO(t).pointerEl;i&&e.pointer&&(i.setStyle(e.pointer.style),n(i,{shape:e.pointer.shape}))},t.prototype.updateLabelEl=function(t,e,n,i){var r=xO(t).labelEl;r&&(r.setStyle(e.label.style),n(r,{x:e.label.x,y:e.label.y}),TO(r,i))},t.prototype._renderHandle=function(t){if(!this._dragging&&this.updateHandleTransform){var e,n=this._axisPointerModel,i=this._api.getZr(),r=this._handle,o=n.getModel("handle"),a=n.get("status");if(!o.get("show")||!a||"hide"===a)return r&&i.remove(r),void(this._handle=null);this._handle||(e=!0,r=this._handle=Qu(o.get("icon"),{cursor:"move",draggable:!0,onmousemove:function(t){ee(t.event)},onmousedown:wO(this._onHandleDragMove,this,0,0),drift:wO(this._onHandleDragMove,this),ondragend:wO(this._onHandleDragEnd,this)}),i.add(r)),AO(r,n,!1),r.setStyle(o.getItemStyle(null,["color","borderColor","borderWidth","opacity","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY"]));var s=o.get("size");F(s)||(s=[s,s]),r.scaleX=s[0]/2,r.scaleY=s[1]/2,Rf(this,"_doDispatchAxisPointer",o.get("throttle")||0,"fixRate"),this._moveHandleToValue(t,e)}},t.prototype._moveHandleToValue=function(t,e){MO(this._axisPointerModel,!e&&this._moveAnimation,this._handle,CO(this.getHandleTransform(t,this._axisModel,this._axisPointerModel)))},t.prototype._onHandleDragMove=function(t,e){var n=this._handle;if(n){this._dragging=!0;var i=this.updateHandleTransform(CO(n),[t,e],this._axisModel,this._axisPointerModel);this._payloadInfo=i,n.stopAnimation(),n.attr(CO(i)),xO(n).lastProp=null,this._doDispatchAxisPointer()}},t.prototype._doDispatchAxisPointer=function(){if(this._handle){var t=this._payloadInfo,e=this._axisModel;this._api.dispatchAction({type:"updateAxisPointer",x:t.cursorPoint[0],y:t.cursorPoint[1],tooltipOption:t.tooltipOption,axesInfo:[{axisDim:e.axis.dim,axisIndex:e.componentIndex}]})}},t.prototype._onHandleDragEnd=function(){if(this._dragging=!1,this._handle){var t=this._axisPointerModel.get("value");this._moveHandleToValue(t),this._api.dispatchAction({type:"hideTip"})}},t.prototype.clear=function(t){this._lastValue=null,this._lastStatus=null;var e=t.getZr(),n=this._group,i=this._handle;e&&n&&(this._lastGraphicKey=null,n&&e.remove(n),i&&e.remove(i),this._group=null,this._handle=null,this._payloadInfo=null)},t.prototype.doClear=function(){},t.prototype.buildLabel=function(t,e,n){return{x:t[n=n||0],y:t[1-n],width:e[n],height:e[1-n]}},t}();function MO(t,e,n,i){IO(xO(n).lastProp,i)||(xO(n).lastProp=i,e?Fu(n,i,t):(n.stopAnimation(),n.attr(i)))}function IO(t,e){if(Y(t)&&Y(e)){var n=!0;return P(e,(function(e,i){n=n&&IO(t[i],e)})),!!n}return t===e}function TO(t,e){t[e.get(["label","show"])?"show":"hide"]()}function CO(t){return{x:t.x||0,y:t.y||0,rotation:t.rotation||0}}function AO(t,e,n){var i=e.get("z"),r=e.get("zlevel");t&&t.traverse((function(t){"group"!==t.type&&(null!=i&&(t.z=i),null!=r&&(t.zlevel=r),t.silent=n)}))}function DO(t){var e,n=t.get("type"),i=t.getModel(n+"Style");return"line"===n?(e=i.getLineStyle()).fill=null:"shadow"===n&&((e=i.getAreaStyle()).stroke=null),e}function LO(t,e,n,i,r){var o=kO(n.get("value"),e.axis,e.ecModel,n.get("seriesDataIndices"),{precision:n.get(["label","precision"]),formatter:n.get(["label","formatter"])}),a=n.getModel("label"),s=xc(a.get("padding")||0),l=a.getFont(),u=Fn(o,l),h=r.position,c=u.width+s[1]+s[3],p=u.height+s[0]+s[2],d=r.align;"right"===d&&(h[0]-=c),"center"===d&&(h[0]-=c/2);var f=r.verticalAlign;"bottom"===f&&(h[1]-=p),"middle"===f&&(h[1]-=p/2),function(t,e,n,i){var r=i.getWidth(),o=i.getHeight();t[0]=Math.min(t[0]+e,r)-e,t[1]=Math.min(t[1]+n,o)-n,t[0]=Math.max(t[0],0),t[1]=Math.max(t[1],0)}(h,c,p,i);var g=a.get("backgroundColor");g&&"auto"!==g||(g=e.get(["axisLine","lineStyle","color"])),t.label={x:h[0],y:h[1],style:hh(a,{text:o,font:l,fill:a.getTextColor(),padding:s,backgroundColor:g}),z2:10}}function kO(t,e,n,i,r){t=e.scale.parse(t);var o=e.scale.getLabel({value:t},{precision:r.precision}),a=r.formatter;if(a){var s={value:Bx(e,{value:t}),axisDimension:e.dim,axisIndex:e.index,seriesData:[]};P(i,(function(t){var e=n.getSeriesByIndex(t.seriesIndex),i=t.dataIndexInside,r=e&&e.getDataParams(i);r&&s.seriesData.push(r)})),H(a)?o=a.replace("{value}",o):G(a)&&(o=a(s))}return o}function PO(t,e,n){var i=[1,0,0,1,0,0];return _e(i,i,n.rotation),me(i,i,n.position),Zu([t.dataToCoord(e),(n.labelOffset||0)+(n.labelDirection||1)*(n.labelMargin||0)],i)}function OO(t,e,n,i,r,o){var a=$S.innerTextLayout(n.rotation,0,n.labelDirection);n.labelMargin=r.get(["label","margin"]),LO(e,i,r,o,{position:PO(i.axis,t,n),align:a.textAlign,verticalAlign:a.textVerticalAlign})}function RO(t,e,n){return{x1:t[n=n||0],y1:t[1-n],x2:e[n],y2:e[1-n]}}function NO(t,e,n){return{x:t[n=n||0],y:t[1-n],width:e[n],height:e[1-n]}}function EO(t,e,n,i,r,o){return{cx:t,cy:e,r0:n,r:i,startAngle:r,endAngle:o,clockwise:!0}}var zO=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.makeElOption=function(t,e,n,i,r){var o=n.axis,a=o.grid,s=i.get("type"),l=BO(a,o).getOtherAxis(o).getGlobalExtent(),u=o.toGlobalCoord(o.dataToCoord(e,!0));if(s&&"none"!==s){var h=DO(i),c=VO[s](o,u,l);c.style=h,t.graphicKey=c.type,t.pointer=c}OO(e,t,WS(a.model,n),n,i,r)},e.prototype.getHandleTransform=function(t,e,n){var i=WS(e.axis.grid.model,e,{labelInside:!1});i.labelMargin=n.get(["handle","margin"]);var r=PO(e.axis,t,i);return{x:r[0],y:r[1],rotation:i.rotation+(i.labelDirection<0?Math.PI:0)}},e.prototype.updateHandleTransform=function(t,e,n,i){var r=n.axis,o=r.grid,a=r.getGlobalExtent(!0),s=BO(o,r).getOtherAxis(r).getGlobalExtent(),l="x"===r.dim?0:1,u=[t.x,t.y];u[l]+=e[l],u[l]=Math.min(a[1],u[l]),u[l]=Math.max(a[0],u[l]);var h=(s[1]+s[0])/2,c=[h,h];c[l]=u[l];return{x:u[0],y:u[1],rotation:t.rotation,cursorPoint:c,tooltipOption:[{verticalAlign:"middle"},{align:"center"}][l]}},e}(SO);function BO(t,e){var n={};return n[e.dim+"AxisIndex"]=e.index,t.getCartesian(n)}var VO={line:function(t,e,n){return{type:"Line",subPixelOptimize:!0,shape:RO([e,n[0]],[e,n[1]],FO(t))}},shadow:function(t,e,n){var i=Math.max(1,t.getBandWidth()),r=n[1]-n[0];return{type:"Rect",shape:NO([e-i/2,n[0]],[i,r],FO(t))}}};function FO(t){return"x"===t.dim?0:1}var GO=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="axisPointer",e.defaultOption={show:"auto",zlevel:0,z:50,type:"line",snap:!1,triggerTooltip:!0,value:null,status:null,link:[],animation:null,animationDurationUpdate:200,lineStyle:{color:"#B9BEC9",width:1,type:"dashed"},shadowStyle:{color:"rgba(210,219,238,0.2)"},label:{show:!0,formatter:null,precision:"auto",margin:3,color:"#ffffff",padding:[5,7,5,7],backgroundColor:"auto",borderColor:null,borderWidth:0,borderRadius:3},handle:{show:!1,icon:"M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7v-1.2h6.6z M13.3,22H6.7v-1.2h6.6z M13.3,19.6H6.7v-1.2h6.6z",size:45,margin:50,color:"#333333",shadowBlur:3,shadowColor:"#aaaaaa",shadowOffsetX:0,shadowOffsetY:2,throttle:40}},e}(Wc),HO=Lr(),WO=P;function UO(t,e,n){if(!a.node){var i=e.getZr();HO(i).records||(HO(i).records={}),function(t,e){if(HO(t).initialized)return;function n(n,i){t.on(n,(function(n){var r=function(t){var e={showTip:[],hideTip:[]},n=function(i){var r=e[i.type];r?r.push(i):(i.dispatchAction=n,t.dispatchAction(i))};return{dispatchAction:n,pendings:e}}(e);WO(HO(t).records,(function(t){t&&i(t,n,r.dispatchAction)})),function(t,e){var n,i=t.showTip.length,r=t.hideTip.length;i?n=t.showTip[i-1]:r&&(n=t.hideTip[r-1]);n&&(n.dispatchAction=null,e.dispatchAction(n))}(r.pendings,e)}))}HO(t).initialized=!0,n("click",V(XO,"click")),n("mousemove",V(XO,"mousemove")),n("globalout",YO)}(i,e),(HO(i).records[t]||(HO(i).records[t]={})).handler=n}}function YO(t,e,n){t.handler("leave",null,n)}function XO(t,e,n,i){e.handler(t,n,i)}function ZO(t,e){if(!a.node){var n=e.getZr();(HO(n).records||{})[t]&&(HO(n).records[t]=null)}}var jO=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){var i=e.getComponent("tooltip"),r=t.get("triggerOn")||i&&i.get("triggerOn")||"mousemove|click";UO("axisPointer",n,(function(t,e,n){"none"!==r&&("leave"===t||r.indexOf(t)>=0)&&n({type:"updateAxisPointer",currTrigger:t,x:e&&e.offsetX,y:e&&e.offsetY})}))},e.prototype.remove=function(t,e){ZO("axisPointer",e)},e.prototype.dispose=function(t,e){ZO("axisPointer",e)},e.type="axisPointer",e}(xf);function qO(t,e){var n,i=[],r=t.seriesIndex;if(null==r||!(n=e.getSeriesByIndex(r)))return{point:[]};var o=n.getData(),a=Dr(o,t);if(null==a||a<0||F(a))return{point:[]};var s=o.getItemGraphicEl(a),l=n.coordinateSystem;if(n.getTooltipPosition)i=n.getTooltipPosition(a)||[];else if(l&&l.dataToPoint)if(t.isStacked){var u=l.getBaseAxis(),h=l.getOtherAxis(u).dim,c=u.dim,p="x"===h||"radius"===h?1:0,d=o.mapDimension(c),f=[];f[p]=o.get(d,a),f[1-p]=o.get(o.getCalculationInfo("stackResultDimension"),a),i=l.dataToPoint(f)||[]}else i=l.dataToPoint(o.getValues(O(l.dimensions,(function(t){return o.mapDimension(t)})),a))||[];else if(s){var g=s.getBoundingRect().clone();g.applyTransform(s.transform),i=[g.x+g.width/2,g.y+g.height/2]}return{point:i,el:s}}var KO=Lr();function $O(t,e,n){var i=t.currTrigger,r=[t.x,t.y],o=t,a=t.dispatchAction||B(n.dispatchAction,n),s=e.getComponent("axisPointer").coordSysAxesInfo;if(s){nR(r)&&(r=qO({seriesIndex:o.seriesIndex,dataIndex:o.dataIndex},e).point);var l=nR(r),u=o.axesInfo,h=s.axesInfo,c="leave"===i||nR(r),p={},d={},f={list:[],map:{}},g={showPointer:V(QO,d),showTooltip:V(tR,f)};P(s.coordSysMap,(function(t,e){var n=l||t.containPoint(r);P(s.coordSysAxesInfo[e],(function(t,e){var i=t.axis,o=function(t,e){for(var n=0;n<(t||[]).length;n++){var i=t[n];if(e.axis.dim===i.axisDim&&e.axis.model.componentIndex===i.axisIndex)return i}}(u,t);if(!c&&n&&(!u||o)){var a=o&&o.value;null!=a||l||(a=i.pointToData(r)),null!=a&&JO(t,a,g,!1,p)}}))}));var y={};return P(h,(function(t,e){var n=t.linkGroup;n&&!d[e]&&P(n.axesInfo,(function(e,i){var r=d[i];if(e!==t&&r){var o=r.value;n.mapper&&(o=t.axis.scale.parse(n.mapper(o,eR(e),eR(t)))),y[t.key]=o}}))})),P(y,(function(t,e){JO(h[e],t,g,!0,p)})),function(t,e,n){var i=n.axesInfo=[];P(e,(function(e,n){var r=e.axisPointerModel.option,o=t[n];o?(!e.useHandle&&(r.status="show"),r.value=o.value,r.seriesDataIndices=(o.payloadBatch||[]).slice()):!e.useHandle&&(r.status="hide"),"show"===r.status&&i.push({axisDim:e.axis.dim,axisIndex:e.axis.model.componentIndex,value:r.value})}))}(d,h,p),function(t,e,n,i){if(nR(e)||!t.list.length)return void i({type:"hideTip"});var r=((t.list[0].dataByAxis[0]||{}).seriesDataIndices||[])[0]||{};i({type:"showTip",escapeConnect:!0,x:e[0],y:e[1],tooltipOption:n.tooltipOption,position:n.position,dataIndexInside:r.dataIndexInside,dataIndex:r.dataIndex,seriesIndex:r.seriesIndex,dataByCoordSys:t.list})}(f,r,t,a),function(t,e,n){var i=n.getZr(),r="axisPointerLastHighlights",o=KO(i)[r]||{},a=KO(i)[r]={};P(t,(function(t,e){var n=t.axisPointerModel.option;"show"===n.status&&P(n.seriesDataIndices,(function(t){var e=t.seriesIndex+" | "+t.dataIndex;a[e]=t}))}));var s=[],l=[];P(o,(function(t,e){!a[e]&&l.push(t)})),P(a,(function(t,e){!o[e]&&s.push(t)})),l.length&&n.dispatchAction({type:"downplay",escapeConnect:!0,notBlur:!0,batch:l}),s.length&&n.dispatchAction({type:"highlight",escapeConnect:!0,notBlur:!0,batch:s})}(h,0,n),p}}function JO(t,e,n,i,r){var o=t.axis;if(!o.scale.isBlank()&&o.containData(e))if(t.involveSeries){var a=function(t,e){var n=e.axis,i=n.dim,r=t,o=[],a=Number.MAX_VALUE,s=-1;return P(e.seriesModels,(function(e,l){var u,h,c=e.getData().mapDimensionsAll(i);if(e.getAxisTooltipData){var p=e.getAxisTooltipData(c,t,n);h=p.dataIndices,u=p.nestestValue}else{if(!(h=e.getData().indicesOfNearest(c[0],t,"category"===n.type?.5:null)).length)return;u=e.getData().get(c[0],h[0])}if(null!=u&&isFinite(u)){var d=t-u,f=Math.abs(d);f<=a&&((f<a||d>=0&&s<0)&&(a=f,s=d,r=u,o.length=0),P(h,(function(t){o.push({seriesIndex:e.seriesIndex,dataIndexInside:t,dataIndex:e.getData().getRawIndex(t)})})))}})),{payloadBatch:o,snapToValue:r}}(e,t),s=a.payloadBatch,l=a.snapToValue;s[0]&&null==r.seriesIndex&&I(r,s[0]),!i&&t.snap&&o.containData(l)&&null!=l&&(e=l),n.showPointer(t,e,s),n.showTooltip(t,a,l)}else n.showPointer(t,e)}function QO(t,e,n,i){t[e.key]={value:n,payloadBatch:i}}function tR(t,e,n,i){var r=n.payloadBatch,o=e.axis,a=o.model,s=e.axisPointerModel;if(e.triggerTooltip&&r.length){var l=e.coordSys.model,u=lM(l),h=t.map[u];h||(h=t.map[u]={coordSysId:l.id,coordSysIndex:l.componentIndex,coordSysType:l.type,coordSysMainType:l.mainType,dataByAxis:[]},t.list.push(h)),h.dataByAxis.push({axisDim:o.dim,axisIndex:a.componentIndex,axisType:a.type,axisId:a.id,value:i,valueLabelOpt:{precision:s.get(["label","precision"]),formatter:s.get(["label","formatter"])},seriesDataIndices:r.slice()})}}function eR(t){var e=t.axis.model,n={},i=n.axisDim=t.axis.dim;return n.axisIndex=n[i+"AxisIndex"]=e.componentIndex,n.axisName=n[i+"AxisName"]=e.name,n.axisId=n[i+"AxisId"]=e.id,n}function nR(t){return!t||null==t[0]||isNaN(t[0])||null==t[1]||isNaN(t[1])}function iR(t){hM.registerAxisPointerClass("CartesianAxisPointer",zO),t.registerComponentModel(GO),t.registerComponentView(jO),t.registerPreprocessor((function(t){if(t){(!t.axisPointer||0===t.axisPointer.length)&&(t.axisPointer={});var e=t.axisPointer.link;e&&!F(e)&&(t.axisPointer.link=[e])}})),t.registerProcessor(t.PRIORITY.PROCESSOR.STATISTIC,(function(t,e){t.getComponent("axisPointer").coordSysAxesInfo=iM(t,e)})),t.registerAction({type:"updateAxisPointer",event:"updateAxisPointer",update:":updateAxisPointer"},$O)}var rR=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.makeElOption=function(t,e,n,i,r){var o=n.axis;"angle"===o.dim&&(this.animationThreshold=Math.PI/18);var a=o.polar,s=a.getOtherAxis(o).getExtent(),l=o.dataToCoord(e),u=i.get("type");if(u&&"none"!==u){var h=DO(i),c=oR[u](o,a,l,s);c.style=h,t.graphicKey=c.type,t.pointer=c}var p=function(t,e,n,i,r){var o=e.axis,a=o.dataToCoord(t),s=i.getAngleAxis().getExtent()[0];s=s/180*Math.PI;var l,u,h,c=i.getRadiusAxis().getExtent();if("radius"===o.dim){var p=[1,0,0,1,0,0];_e(p,p,s),me(p,p,[i.cx,i.cy]),l=Zu([a,-r],p);var d=e.getModel("axisLabel").get("rotate")||0,f=$S.innerTextLayout(s,d*Math.PI/180,-1);u=f.textAlign,h=f.textVerticalAlign}else{var g=c[1];l=i.coordToPoint([g+r,a]);var y=i.cx,v=i.cy;u=Math.abs(l[0]-y)/g<.3?"center":l[0]>y?"left":"right",h=Math.abs(l[1]-v)/g<.3?"middle":l[1]>v?"top":"bottom"}return{position:l,align:u,verticalAlign:h}}(e,n,0,a,i.get(["label","margin"]));LO(t,n,i,r,p)},e}(SO);var oR={line:function(t,e,n,i){return"angle"===t.dim?{type:"Line",shape:RO(e.coordToPoint([i[0],n]),e.coordToPoint([i[1],n]))}:{type:"Circle",shape:{cx:e.cx,cy:e.cy,r:n}}},shadow:function(t,e,n,i){var r=Math.max(1,t.getBandWidth()),o=Math.PI/180;return"angle"===t.dim?{type:"Sector",shape:EO(e.cx,e.cy,i[0],i[1],(-n-r/2)*o,(r/2-n)*o)}:{type:"Sector",shape:EO(e.cx,e.cy,n-r/2,n+r/2,0,2*Math.PI)}}},aR=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.findAxisModel=function(t){var e;return this.ecModel.eachComponent(t,(function(t){t.getCoordSysModel()===this&&(e=t)}),this),e},e.type="polar",e.dependencies=["radiusAxis","angleAxis"],e.defaultOption={zlevel:0,z:0,center:["50%","50%"],radius:"80%"},e}(Wc),sR=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.getCoordSysModel=function(){return this.getReferringComponents("polar",Rr).models[0]},e.type="polarAxis",e}(Wc);L(sR,Wx);var lR=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="angleAxis",e}(sR),uR=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="radiusAxis",e}(sR),hR=function(t){function e(e,n){return t.call(this,"radius",e,n)||this}return n(e,t),e.prototype.pointToData=function(t,e){return this.polar.pointToData(t,e)["radius"===this.dim?0:1]},e}(sb);hR.prototype.dataToRadius=sb.prototype.dataToCoord,hR.prototype.radiusToData=sb.prototype.coordToData;var cR=Lr(),pR=function(t){function e(e,n){return t.call(this,"angle",e,n||[0,360])||this}return n(e,t),e.prototype.pointToData=function(t,e){return this.polar.pointToData(t,e)["radius"===this.dim?0:1]},e.prototype.calculateCategoryInterval=function(){var t=this,e=t.getLabelModel(),n=t.scale,i=n.getExtent(),r=n.count();if(i[1]-i[0]<1)return 0;var o=i[0],a=t.dataToCoord(o+1)-t.dataToCoord(o),s=Math.abs(a),l=Fn(null==o?"":o+"",e.getFont(),"center","top"),u=Math.max(l.height,7)/s;isNaN(u)&&(u=1/0);var h=Math.max(0,Math.floor(u)),c=cR(t.model),p=c.lastAutoInterval,d=c.lastTickCount;return null!=p&&null!=d&&Math.abs(p-h)<=1&&Math.abs(d-r)<=1&&p>h?h=p:(c.lastTickCount=r,c.lastAutoInterval=h),h},e}(sb);pR.prototype.dataToAngle=sb.prototype.dataToCoord,pR.prototype.angleToData=sb.prototype.coordToData;var dR=function(){function t(t){this.dimensions=["radius","angle"],this.type="polar",this.cx=0,this.cy=0,this._radiusAxis=new hR,this._angleAxis=new pR,this.axisPointerEnabled=!0,this.name=t||"",this._radiusAxis.polar=this._angleAxis.polar=this}return t.prototype.containPoint=function(t){var e=this.pointToCoord(t);return this._radiusAxis.contain(e[0])&&this._angleAxis.contain(e[1])},t.prototype.containData=function(t){return this._radiusAxis.containData(t[0])&&this._angleAxis.containData(t[1])},t.prototype.getAxis=function(t){return this["_"+t+"Axis"]},t.prototype.getAxes=function(){return[this._radiusAxis,this._angleAxis]},t.prototype.getAxesByScale=function(t){var e=[],n=this._angleAxis,i=this._radiusAxis;return n.scale.type===t&&e.push(n),i.scale.type===t&&e.push(i),e},t.prototype.getAngleAxis=function(){return this._angleAxis},t.prototype.getRadiusAxis=function(){return this._radiusAxis},t.prototype.getOtherAxis=function(t){var e=this._angleAxis;return t===e?this._radiusAxis:e},t.prototype.getBaseAxis=function(){return this.getAxesByScale("ordinal")[0]||this.getAxesByScale("time")[0]||this.getAngleAxis()},t.prototype.getTooltipAxes=function(t){var e=null!=t&&"auto"!==t?this.getAxis(t):this.getBaseAxis();return{baseAxes:[e],otherAxes:[this.getOtherAxis(e)]}},t.prototype.dataToPoint=function(t,e){return this.coordToPoint([this._radiusAxis.dataToRadius(t[0],e),this._angleAxis.dataToAngle(t[1],e)])},t.prototype.pointToData=function(t,e){var n=this.pointToCoord(t);return[this._radiusAxis.radiusToData(n[0],e),this._angleAxis.angleToData(n[1],e)]},t.prototype.pointToCoord=function(t){var e=t[0]-this.cx,n=t[1]-this.cy,i=this.getAngleAxis(),r=i.getExtent(),o=Math.min(r[0],r[1]),a=Math.max(r[0],r[1]);i.inverse?o=a-360:a=o+360;var s=Math.sqrt(e*e+n*n);e/=s,n/=s;for(var l=Math.atan2(-n,e)/Math.PI*180,u=l<o?1:-1;l<o||l>a;)l+=360*u;return[s,l]},t.prototype.coordToPoint=function(t){var e=t[0],n=t[1]/180*Math.PI;return[Math.cos(n)*e+this.cx,-Math.sin(n)*e+this.cy]},t.prototype.getArea=function(){var t=this.getAngleAxis(),e=this.getRadiusAxis().getExtent().slice();e[0]>e[1]&&e.reverse();var n=t.getExtent(),i=Math.PI/180;return{cx:this.cx,cy:this.cy,r0:e[0],r:e[1],startAngle:-n[0]*i,endAngle:-n[1]*i,clockwise:t.inverse,contain:function(t,e){var n=t-this.cx,i=e-this.cy,r=n*n+i*i,o=this.r,a=this.r0;return r<=o*o&&r>=a*a}}},t.prototype.convertToPixel=function(t,e,n){return fR(e)===this?this.dataToPoint(n):null},t.prototype.convertFromPixel=function(t,e,n){return fR(e)===this?this.pointToData(n):null},t}();function fR(t){var e=t.seriesModel,n=t.polarModel;return n&&n.coordinateSystem||e&&e.coordinateSystem}function gR(t,e){var n=this,i=n.getAngleAxis(),r=n.getRadiusAxis();if(i.scale.setExtent(1/0,-1/0),r.scale.setExtent(1/0,-1/0),t.eachSeries((function(t){if(t.coordinateSystem===n){var e=t.getData();P(Hx(e,"radius"),(function(t){r.scale.unionExtentFromData(e,t)})),P(Hx(e,"angle"),(function(t){i.scale.unionExtentFromData(e,t)}))}})),Nx(i.scale,i.model),Nx(r.scale,r.model),"category"===i.type&&!i.onBand){var o=i.getExtent(),a=360/i.scale.count();i.inverse?o[1]+=a:o[1]-=a,i.setExtent(o[0],o[1])}}function yR(t,e){if(t.type=e.get("type"),t.scale=Ex(e),t.onBand=e.get("boundaryGap")&&"category"===t.type,t.inverse=e.get("inverse"),function(t){return"angleAxis"===t.mainType}(e)){t.inverse=t.inverse!==e.get("clockwise");var n=e.get("startAngle");t.setExtent(n,n+(t.inverse?-360:360))}e.axis=t,t.model=e}var vR={dimensions:dR.prototype.dimensions,create:function(t,e){var n=[];return t.eachComponent("polar",(function(t,i){var r=new dR(i+"");r.update=gR;var o=r.getRadiusAxis(),a=r.getAngleAxis(),s=t.findAxisModel("radiusAxis"),l=t.findAxisModel("angleAxis");yR(o,s),yR(a,l),function(t,e,n){var i=e.get("center"),r=n.getWidth(),o=n.getHeight();t.cx=Zi(i[0],r),t.cy=Zi(i[1],o);var a=t.getRadiusAxis(),s=Math.min(r,o)/2,l=e.get("radius");null==l?l=[0,"100%"]:F(l)||(l=[0,l]);var u=[Zi(l[0],s),Zi(l[1],s)];a.inverse?a.setExtent(u[1],u[0]):a.setExtent(u[0],u[1])}(r,t,e),n.push(r),t.coordinateSystem=r,r.model=t})),t.eachSeries((function(t){if("polar"===t.get("coordinateSystem")){var e=t.getReferringComponents("polar",Rr).models[0];0,t.coordinateSystem=e.coordinateSystem}})),n}},mR=["axisLine","axisLabel","axisTick","minorTick","splitLine","minorSplitLine","splitArea"];function _R(t,e,n){e[1]>e[0]&&(e=e.slice().reverse());var i=t.coordToPoint([e[0],n]),r=t.coordToPoint([e[1],n]);return{x1:i[0],y1:i[1],x2:r[0],y2:r[1]}}function xR(t){return t.getRadiusAxis().inverse?0:1}function bR(t){var e=t[0],n=t[t.length-1];e&&n&&Math.abs(Math.abs(e.coord-n.coord)-360)<1e-4&&t.pop()}var wR=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.axisPointerClass="PolarAxisPointer",n}return n(e,t),e.prototype.render=function(t,e){if(this.group.removeAll(),t.get("show")){var n=t.axis,i=n.polar,r=i.getRadiusAxis().getExtent(),o=n.getTicksCoords(),a=n.getMinorTicksCoords(),s=O(n.getViewLabels(),(function(t){t=w(t);var e=n.scale,i="ordinal"===e.type?e.getRawOrdinalNumber(t.tickValue):t.tickValue;return t.coord=n.dataToCoord(i),t}));bR(s),bR(o),P(mR,(function(e){!t.get([e,"show"])||n.scale.isBlank()&&"axisLine"!==e||SR[e](this.group,t,i,o,a,r,s)}),this)}},e.type="angleAxis",e}(hM),SR={axisLine:function(t,e,n,i,r,o){var a,s=e.getModel(["axisLine","lineStyle"]),l=xR(n),u=l?0:1;(a=0===o[u]?new Ol({shape:{cx:n.cx,cy:n.cy,r:o[l]},style:s.getLineStyle(),z2:1,silent:!0}):new Jl({shape:{cx:n.cx,cy:n.cy,r:o[l],r0:o[u]},style:s.getLineStyle(),z2:1,silent:!0})).style.fill=null,t.add(a)},axisTick:function(t,e,n,i,r,o){var a=e.getModel("axisTick"),s=(a.get("inside")?-1:1)*a.get("length"),l=o[xR(n)],u=O(i,(function(t){return new su({shape:_R(n,[l,l+s],t.coord)})}));t.add(Eu(u,{style:T(a.getModel("lineStyle").getLineStyle(),{stroke:e.get(["axisLine","lineStyle","color"])})}))},minorTick:function(t,e,n,i,r,o){if(r.length){for(var a=e.getModel("axisTick"),s=e.getModel("minorTick"),l=(a.get("inside")?-1:1)*s.get("length"),u=o[xR(n)],h=[],c=0;c<r.length;c++)for(var p=0;p<r[c].length;p++)h.push(new su({shape:_R(n,[u,u+l],r[c][p].coord)}));t.add(Eu(h,{style:T(s.getModel("lineStyle").getLineStyle(),T(a.getLineStyle(),{stroke:e.get(["axisLine","lineStyle","color"])}))}))}},axisLabel:function(t,e,n,i,r,o,a){var s=e.getCategories(!0),l=e.getModel("axisLabel"),u=l.get("margin"),h=e.get("triggerEvent");P(a,(function(i,r){var a=l,c=i.tickValue,p=o[xR(n)],d=n.coordToPoint([p+u,i.coord]),f=n.cx,g=n.cy,y=Math.abs(d[0]-f)/p<.3?"center":d[0]>f?"left":"right",v=Math.abs(d[1]-g)/p<.3?"middle":d[1]>g?"top":"bottom";if(s&&s[c]){var m=s[c];Y(m)&&m.textStyle&&(a=new kh(m.textStyle,l,l.ecModel))}var _=new us({silent:$S.isLabelSilent(e),style:hh(a,{x:d[0],y:d[1],fill:a.getTextColor()||e.get(["axisLine","lineStyle","color"]),text:i.formattedLabel,align:y,verticalAlign:v})});if(t.add(_),h){var x=$S.makeAxisEventDataBase(e);x.targetType="axisLabel",x.value=i.rawLabel,vs(_).eventData=x}}),this)},splitLine:function(t,e,n,i,r,o){var a=e.getModel("splitLine").getModel("lineStyle"),s=a.get("color"),l=0;s=s instanceof Array?s:[s];for(var u=[],h=0;h<i.length;h++){var c=l++%s.length;u[c]=u[c]||[],u[c].push(new su({shape:_R(n,o,i[h].coord)}))}for(h=0;h<u.length;h++)t.add(Eu(u[h],{style:T({stroke:s[h%s.length]},a.getLineStyle()),silent:!0,z:e.get("z")}))},minorSplitLine:function(t,e,n,i,r,o){if(r.length){for(var a=e.getModel("minorSplitLine").getModel("lineStyle"),s=[],l=0;l<r.length;l++)for(var u=0;u<r[l].length;u++)s.push(new su({shape:_R(n,o,r[l][u].coord)}));t.add(Eu(s,{style:a.getLineStyle(),silent:!0,z:e.get("z")}))}},splitArea:function(t,e,n,i,r,o){if(i.length){var a=e.getModel("splitArea").getModel("areaStyle"),s=a.get("color"),l=0;s=s instanceof Array?s:[s];for(var u=[],h=Math.PI/180,c=-i[0].coord*h,p=Math.min(o[0],o[1]),d=Math.max(o[0],o[1]),f=e.get("clockwise"),g=1,y=i.length;g<=y;g++){var v=g===y?i[0].coord:i[g].coord,m=l++%s.length;u[m]=u[m]||[],u[m].push(new Kl({shape:{cx:n.cx,cy:n.cy,r0:p,r:d,startAngle:c,endAngle:-v*h,clockwise:f},silent:!0})),c=-v*h}for(g=0;g<u.length;g++)t.add(Eu(u[g],{style:T({fill:s[g%s.length]},a.getAreaStyle()),silent:!0}))}}},MR=["axisLine","axisTickLabel","axisName"],IR=["splitLine","splitArea","minorSplitLine"],TR=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.axisPointerClass="PolarAxisPointer",n}return n(e,t),e.prototype.render=function(t,e){if(this.group.removeAll(),t.get("show")){var n=this._axisGroup,i=this._axisGroup=new zi;this.group.add(i);var r=t.axis,o=r.polar,a=o.getAngleAxis(),s=r.getTicksCoords(),l=r.getMinorTicksCoords(),u=a.getExtent()[0],h=r.getExtent(),c=function(t,e,n){return{position:[t.cx,t.cy],rotation:n/180*Math.PI,labelDirection:-1,tickDirection:-1,nameDirection:1,labelRotate:e.getModel("axisLabel").get("rotate"),z2:1}}(o,t,u),p=new $S(t,c);P(MR,p.add,p),i.add(p.getGroup()),Ku(n,i,t),P(IR,(function(e){t.get([e,"show"])&&!r.scale.isBlank()&&CR[e](this.group,t,o,u,h,s,l)}),this)}},e.type="radiusAxis",e}(hM),CR={splitLine:function(t,e,n,i,r,o){var a=e.getModel("splitLine").getModel("lineStyle"),s=a.get("color"),l=0;s=s instanceof Array?s:[s];for(var u=[],h=0;h<o.length;h++){var c=l++%s.length;u[c]=u[c]||[],u[c].push(new Ol({shape:{cx:n.cx,cy:n.cy,r:o[h].coord}}))}for(h=0;h<u.length;h++)t.add(Eu(u[h],{style:T({stroke:s[h%s.length],fill:null},a.getLineStyle()),silent:!0}))},minorSplitLine:function(t,e,n,i,r,o,a){if(a.length){for(var s=e.getModel("minorSplitLine").getModel("lineStyle"),l=[],u=0;u<a.length;u++)for(var h=0;h<a[u].length;h++)l.push(new Ol({shape:{cx:n.cx,cy:n.cy,r:a[u][h].coord}}));t.add(Eu(l,{style:T({fill:null},s.getLineStyle()),silent:!0}))}},splitArea:function(t,e,n,i,r,o){if(o.length){var a=e.getModel("splitArea").getModel("areaStyle"),s=a.get("color"),l=0;s=s instanceof Array?s:[s];for(var u=[],h=o[0].coord,c=1;c<o.length;c++){var p=l++%s.length;u[p]=u[p]||[],u[p].push(new Kl({shape:{cx:n.cx,cy:n.cy,r0:h,r:o[c].coord,startAngle:0,endAngle:2*Math.PI},silent:!0})),h=o[c].coord}for(c=0;c<u.length;c++)t.add(Eu(u[c],{style:T({fill:s[c%s.length]},a.getAreaStyle()),silent:!0}))}}};function AR(t){return t.get("stack")||"__ec_stack_"+t.seriesIndex}function DR(t,e){return e.dim+t.model.componentIndex}function LR(t,e,n){var i={},r=function(t){var e={};P(t,(function(t,n){var i=t.getData(),r=t.coordinateSystem,o=r.getBaseAxis(),a=DR(r,o),s=o.getExtent(),l="category"===o.type?o.getBandWidth():Math.abs(s[1]-s[0])/i.count(),u=e[a]||{bandWidth:l,remainedWidth:l,autoWidthCount:0,categoryGap:"20%",gap:"30%",stacks:{}},h=u.stacks;e[a]=u;var c=AR(t);h[c]||u.autoWidthCount++,h[c]=h[c]||{width:0,maxWidth:0};var p=Zi(t.get("barWidth"),l),d=Zi(t.get("barMaxWidth"),l),f=t.get("barGap"),g=t.get("barCategoryGap");p&&!h[c].width&&(p=Math.min(u.remainedWidth,p),h[c].width=p,u.remainedWidth-=p),d&&(h[c].maxWidth=d),null!=f&&(u.gap=f),null!=g&&(u.categoryGap=g)}));var n={};return P(e,(function(t,e){n[e]={};var i=t.stacks,r=t.bandWidth,o=Zi(t.categoryGap,r),a=Zi(t.gap,1),s=t.remainedWidth,l=t.autoWidthCount,u=(s-o)/(l+(l-1)*a);u=Math.max(u,0),P(i,(function(t,e){var n=t.maxWidth;n&&n<u&&(n=Math.min(n,s),t.width&&(n=Math.min(n,t.width)),s-=n,t.width=n,l--)})),u=(s-o)/(l+(l-1)*a),u=Math.max(u,0);var h,c=0;P(i,(function(t,e){t.width||(t.width=u),h=t,c+=t.width*(1+a)})),h&&(c-=h.width*a);var p=-c/2;P(i,(function(t,i){n[e][i]=n[e][i]||{offset:p,width:t.width},p+=t.width*(1+a)}))})),n}(N(e.getSeriesByType(t),(function(t){return!e.isSeriesFiltered(t)&&t.coordinateSystem&&"polar"===t.coordinateSystem.type})));e.eachSeriesByType(t,(function(t){if("polar"===t.coordinateSystem.type){var e=t.getData(),n=t.coordinateSystem,o=n.getBaseAxis(),a=DR(n,o),s=AR(t),l=r[a][s],u=l.offset,h=l.width,c=n.getOtherAxis(o),p=t.coordinateSystem.cx,d=t.coordinateSystem.cy,f=t.get("barMinHeight")||0,g=t.get("barMinAngle")||0;i[s]=i[s]||[];for(var y=e.mapDimension(c.dim),v=e.mapDimension(o.dim),m=R_(e,y),_="radius"!==o.dim||!t.get("roundCap",!0),x=c.dataToCoord(0),b=0,w=e.count();b<w;b++){var S=e.get(y,b),M=e.get(v,b),I=S>=0?"p":"n",T=x;m&&(i[s][M]||(i[s][M]={p:x,n:x}),T=i[s][M][I]);var C=void 0,A=void 0,D=void 0,L=void 0;if("radius"===c.dim){var k=c.dataToCoord(S)-x,P=o.dataToCoord(M);Math.abs(k)<f&&(k=(k<0?-1:1)*f),C=T,A=T+k,L=(D=P-u)-h,m&&(i[s][M][I]=A)}else{var O=c.dataToCoord(S,_)-x,R=o.dataToCoord(M);Math.abs(O)<g&&(O=(O<0?-1:1)*g),A=(C=R+u)+h,D=T,L=T+O,m&&(i[s][M][I]=L)}e.setItemLayout(b,{cx:p,cy:d,r0:C,r:A,startAngle:-D*Math.PI/180,endAngle:-L*Math.PI/180})}}}))}var kR={startAngle:90,clockwise:!0,splitNumber:12,axisLabel:{rotate:0}},PR={splitNumber:5},OR=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="polar",e}(xf);function RR(t,e){e=e||{};var n=t.coordinateSystem,i=t.axis,r={},o=i.position,a=i.orient,s=n.getRect(),l=[s.x,s.x+s.width,s.y,s.y+s.height],u={horizontal:{top:l[2],bottom:l[3]},vertical:{left:l[0],right:l[1]}};r.position=["vertical"===a?u.vertical[o]:l[0],"horizontal"===a?u.horizontal[o]:l[3]];r.rotation=Math.PI/2*{horizontal:0,vertical:1}[a];r.labelDirection=r.tickDirection=r.nameDirection={top:-1,bottom:1,right:1,left:-1}[o],t.get(["axisTick","inside"])&&(r.tickDirection=-r.tickDirection),Q(e.labelInside,t.get(["axisLabel","inside"]))&&(r.labelDirection=-r.labelDirection);var h=e.rotate;return null==h&&(h=t.get(["axisLabel","rotate"])),r.labelRotation="top"===o?-h:h,r.z2=1,r}var NR=["axisLine","axisTickLabel","axisName"],ER=["splitArea","splitLine"],zR=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.axisPointerClass="SingleAxisPointer",n}return n(e,t),e.prototype.render=function(e,n,i,r){var o=this.group;o.removeAll();var a=this._axisGroup;this._axisGroup=new zi;var s=RR(e),l=new $S(e,s);P(NR,l.add,l),o.add(this._axisGroup),o.add(l.getGroup()),P(ER,(function(t){e.get([t,"show"])&&BR[t](this,this.group,this._axisGroup,e)}),this),Ku(a,this._axisGroup,e),t.prototype.render.call(this,e,n,i,r)},e.prototype.remove=function(){dM(this)},e.type="singleAxis",e}(hM),BR={splitLine:function(t,e,n,i){var r=i.axis;if(!r.scale.isBlank()){var o=i.getModel("splitLine"),a=o.getModel("lineStyle"),s=a.get("color");s=s instanceof Array?s:[s];for(var l=i.coordinateSystem.getRect(),u=r.isHorizontal(),h=[],c=0,p=r.getTicksCoords({tickModel:o}),d=[],f=[],g=0;g<p.length;++g){var y=r.toGlobalCoord(p[g].coord);u?(d[0]=y,d[1]=l.y,f[0]=y,f[1]=l.y+l.height):(d[0]=l.x,d[1]=y,f[0]=l.x+l.width,f[1]=y);var v=c++%s.length;h[v]=h[v]||[],h[v].push(new su({subPixelOptimize:!0,shape:{x1:d[0],y1:d[1],x2:f[0],y2:f[1]},silent:!0}))}var m=a.getLineStyle(["color"]);for(g=0;g<h.length;++g)e.add(Eu(h[g],{style:T({stroke:s[g%s.length]},m),silent:!0}))}},splitArea:function(t,e,n,i){pM(t,n,i,i)}},VR=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.getCoordSysModel=function(){return this},e.type="singleAxis",e.layoutMode="box",e.defaultOption={left:"5%",top:"5%",right:"5%",bottom:"5%",type:"value",position:"bottom",orient:"horizontal",axisLine:{show:!0,lineStyle:{width:1,type:"solid"}},tooltip:{show:!0},axisTick:{show:!0,length:6,lineStyle:{width:1}},axisLabel:{show:!0,interval:"auto"},splitLine:{show:!0,lineStyle:{type:"dashed",opacity:.2}}},e}(Wc);L(VR,Wx.prototype);var FR=function(t){function e(e,n,i,r,o){var a=t.call(this,e,n,i)||this;return a.type=r||"value",a.position=o||"bottom",a}return n(e,t),e.prototype.isHorizontal=function(){var t=this.position;return"top"===t||"bottom"===t},e.prototype.pointToData=function(t,e){return this.coordinateSystem.pointToData(t)[0]},e}(sb),GR=function(){function t(t,e,n){this.type="single",this.dimension="single",this.dimensions=["single"],this.axisPointerEnabled=!0,this.model=t,this._init(t,e,n)}return t.prototype._init=function(t,e,n){var i=this.dimension,r=new FR(i,Ex(t),[0,0],t.get("type"),t.get("position")),o="category"===r.type;r.onBand=o&&t.get("boundaryGap"),r.inverse=t.get("inverse"),r.orient=t.get("orient"),t.axis=r,r.model=t,r.coordinateSystem=this,this._axis=r},t.prototype.update=function(t,e){t.eachSeries((function(t){if(t.coordinateSystem===this){var e=t.getData();P(e.mapDimensionsAll(this.dimension),(function(t){this._axis.scale.unionExtentFromData(e,t)}),this),Nx(this._axis.scale,this._axis.model)}}),this)},t.prototype.resize=function(t,e){this._rect=Ec({left:t.get("left"),top:t.get("top"),right:t.get("right"),bottom:t.get("bottom"),width:t.get("width"),height:t.get("height")},{width:e.getWidth(),height:e.getHeight()}),this._adjustAxis()},t.prototype.getRect=function(){return this._rect},t.prototype._adjustAxis=function(){var t=this._rect,e=this._axis,n=e.isHorizontal(),i=n?[0,t.width]:[0,t.height],r=e.reverse?1:0;e.setExtent(i[r],i[1-r]),this._updateAxisTransform(e,n?t.x:t.y)},t.prototype._updateAxisTransform=function(t,e){var n=t.getExtent(),i=n[0]+n[1],r=t.isHorizontal();t.toGlobalCoord=r?function(t){return t+e}:function(t){return i-t+e},t.toLocalCoord=r?function(t){return t-e}:function(t){return i-t+e}},t.prototype.getAxis=function(){return this._axis},t.prototype.getBaseAxis=function(){return this._axis},t.prototype.getAxes=function(){return[this._axis]},t.prototype.getTooltipAxes=function(){return{baseAxes:[this.getAxis()],otherAxes:[]}},t.prototype.containPoint=function(t){var e=this.getRect(),n=this.getAxis();return"horizontal"===n.orient?n.contain(n.toLocalCoord(t[0]))&&t[1]>=e.y&&t[1]<=e.y+e.height:n.contain(n.toLocalCoord(t[1]))&&t[0]>=e.y&&t[0]<=e.y+e.height},t.prototype.pointToData=function(t){var e=this.getAxis();return[e.coordToData(e.toLocalCoord(t["horizontal"===e.orient?0:1]))]},t.prototype.dataToPoint=function(t){var e=this.getAxis(),n=this.getRect(),i=[],r="horizontal"===e.orient?0:1;return t instanceof Array&&(t=t[0]),i[r]=e.toGlobalCoord(e.dataToCoord(+t)),i[1-r]=0===r?n.y+n.height/2:n.x+n.width/2,i},t.prototype.convertToPixel=function(t,e,n){return HR(e)===this?this.dataToPoint(n):null},t.prototype.convertFromPixel=function(t,e,n){return HR(e)===this?this.pointToData(n):null},t}();function HR(t){var e=t.seriesModel,n=t.singleAxisModel;return n&&n.coordinateSystem||e&&e.coordinateSystem}var WR={create:function(t,e){var n=[];return t.eachComponent("singleAxis",(function(i,r){var o=new GR(i,t,e);o.name="single_"+r,o.resize(i,e),i.coordinateSystem=o,n.push(o)})),t.eachSeries((function(t){if("singleAxis"===t.get("coordinateSystem")){var e=t.getReferringComponents("singleAxis",Rr).models[0];t.coordinateSystem=e&&e.coordinateSystem}})),n},dimensions:GR.prototype.dimensions},UR=["x","y"],YR=["width","height"],XR=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.makeElOption=function(t,e,n,i,r){var o=n.axis,a=o.coordinateSystem,s=qR(a,1-jR(o)),l=a.dataToPoint(e)[0],u=i.get("type");if(u&&"none"!==u){var h=DO(i),c=ZR[u](o,l,s);c.style=h,t.graphicKey=c.type,t.pointer=c}OO(e,t,RR(n),n,i,r)},e.prototype.getHandleTransform=function(t,e,n){var i=RR(e,{labelInside:!1});i.labelMargin=n.get(["handle","margin"]);var r=PO(e.axis,t,i);return{x:r[0],y:r[1],rotation:i.rotation+(i.labelDirection<0?Math.PI:0)}},e.prototype.updateHandleTransform=function(t,e,n,i){var r=n.axis,o=r.coordinateSystem,a=jR(r),s=qR(o,a),l=[t.x,t.y];l[a]+=e[a],l[a]=Math.min(s[1],l[a]),l[a]=Math.max(s[0],l[a]);var u=qR(o,1-a),h=(u[1]+u[0])/2,c=[h,h];return c[a]=l[a],{x:l[0],y:l[1],rotation:t.rotation,cursorPoint:c,tooltipOption:{verticalAlign:"middle"}}},e}(SO),ZR={line:function(t,e,n){return{type:"Line",subPixelOptimize:!0,shape:RO([e,n[0]],[e,n[1]],jR(t))}},shadow:function(t,e,n){var i=t.getBandWidth(),r=n[1]-n[0];return{type:"Rect",shape:NO([e-i/2,n[0]],[i,r],jR(t))}}};function jR(t){return t.isHorizontal()?0:1}function qR(t,e){var n=t.getRect();return[n[UR[e]],n[UR[e]]+n[YR[e]]]}var KR=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="single",e}(xf);var $R=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.init=function(e,n,i){var r=Fc(e);t.prototype.init.apply(this,arguments),JR(e,r)},e.prototype.mergeOption=function(e){t.prototype.mergeOption.apply(this,arguments),JR(this.option,e)},e.prototype.getCellSize=function(){return this.option.cellSize},e.type="calendar",e.defaultOption={zlevel:0,z:2,left:80,top:60,cellSize:20,orient:"horizontal",splitLine:{show:!0,lineStyle:{color:"#000000",width:1,type:"solid"}},itemStyle:{color:"#ffffff",borderWidth:1,borderColor:"#cccccc"},dayLabel:{show:!0,firstDay:0,position:"start",margin:"50%",nameMap:"en",color:"#000000"},monthLabel:{show:!0,position:"start",margin:5,align:"center",nameMap:"en",formatter:null,color:"#000000"},yearLabel:{show:!0,position:null,margin:30,formatter:null,color:"#cccccc",fontFamily:"sans-serif",fontWeight:"bolder",fontSize:20}},e}(Wc);function JR(t,e){var n,i=t.cellSize;1===(n=F(i)?i:t.cellSize=[i,i]).length&&(n[1]=n[0]);var r=O([0,1],(function(t){return function(t,e){return null!=t[Oc[e][0]]||null!=t[Oc[e][1]]&&null!=t[Oc[e][2]]}(e,t)&&(n[t]="auto"),null!=n[t]&&"auto"!==n[t]}));Vc(t,e,{type:"box",ignoreSize:r})}var QR={EN:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],CN:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},tN={EN:["S","M","T","W","T","F","S"],CN:["日","一","二","三","四","五","六"]},eN=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){var i=this.group;i.removeAll();var r=t.coordinateSystem,o=r.getRangeInfo(),a=r.getOrient();this._renderDayRect(t,o,i),this._renderLines(t,o,a,i),this._renderYearText(t,o,a,i),this._renderMonthText(t,a,i),this._renderWeekText(t,o,a,i)},e.prototype._renderDayRect=function(t,e,n){for(var i=t.coordinateSystem,r=t.getModel("itemStyle").getItemStyle(),o=i.getCellWidth(),a=i.getCellHeight(),s=e.start.time;s<=e.end.time;s=i.getNextNDay(s,1).time){var l=i.dataToRect([s],!1).tl,u=new as({shape:{x:l[0],y:l[1],width:o,height:a},cursor:"default",style:r});n.add(u)}},e.prototype._renderLines=function(t,e,n,i){var r=this,o=t.coordinateSystem,a=t.getModel(["splitLine","lineStyle"]).getLineStyle(),s=t.get(["splitLine","show"]),l=a.lineWidth;this._tlpoints=[],this._blpoints=[],this._firstDayOfMonth=[],this._firstDayPoints=[];for(var u=e.start,h=0;u.time<=e.end.time;h++){p(u.formatedDate),0===h&&(u=o.getDateInfo(e.start.y+"-"+e.start.m));var c=u.date;c.setMonth(c.getMonth()+1),u=o.getDateInfo(c)}function p(e){r._firstDayOfMonth.push(o.getDateInfo(e)),r._firstDayPoints.push(o.dataToRect([e],!1).tl);var l=r._getLinePointsOfOneWeek(t,e,n);r._tlpoints.push(l[0]),r._blpoints.push(l[l.length-1]),s&&r._drawSplitline(l,a,i)}p(o.getNextNDay(e.end.time,1).formatedDate),s&&this._drawSplitline(r._getEdgesPoints(r._tlpoints,l,n),a,i),s&&this._drawSplitline(r._getEdgesPoints(r._blpoints,l,n),a,i)},e.prototype._getEdgesPoints=function(t,e,n){var i=[t[0].slice(),t[t.length-1].slice()],r="horizontal"===n?0:1;return i[0][r]=i[0][r]-e/2,i[1][r]=i[1][r]+e/2,i},e.prototype._drawSplitline=function(t,e,n){var i=new ru({z2:20,shape:{points:t},style:e});n.add(i)},e.prototype._getLinePointsOfOneWeek=function(t,e,n){for(var i=t.coordinateSystem,r=i.getDateInfo(e),o=[],a=0;a<7;a++){var s=i.getNextNDay(r.time,a),l=i.dataToRect([s.time],!1);o[2*s.day]=l.tl,o[2*s.day+1]=l["horizontal"===n?"bl":"tr"]}return o},e.prototype._formatterLabel=function(t,e){return"string"==typeof t&&t?(n=t,P(e,(function(t,e){n=n.replace("{"+e+"}",i?Sc(t):t)})),n):"function"==typeof t?t(e):e.nameMap;var n,i},e.prototype._yearTextPositionControl=function(t,e,n,i,r){var o=e[0],a=e[1],s=["center","bottom"];"bottom"===i?(a+=r,s=["center","top"]):"left"===i?o-=r:"right"===i?(o+=r,s=["center","top"]):a-=r;var l=0;return"left"!==i&&"right"!==i||(l=Math.PI/2),{rotation:l,x:o,y:a,style:{align:s[0],verticalAlign:s[1]}}},e.prototype._renderYearText=function(t,e,n,i){var r=t.getModel("yearLabel");if(r.get("show")){var o=r.get("margin"),a=r.get("position");a||(a="horizontal"!==n?"top":"left");var s=[this._tlpoints[this._tlpoints.length-1],this._blpoints[0]],l=(s[0][0]+s[1][0])/2,u=(s[0][1]+s[1][1])/2,h="horizontal"===n?0:1,c={top:[l,s[h][1]],bottom:[l,s[1-h][1]],left:[s[1-h][0],u],right:[s[h][0],u]},p=e.start.y;+e.end.y>+e.start.y&&(p=p+"-"+e.end.y);var d=r.get("formatter"),f={start:e.start.y,end:e.end.y,nameMap:p},g=this._formatterLabel(d,f),y=new us({z2:30,style:hh(r,{text:g})});y.attr(this._yearTextPositionControl(y,c[a],n,a,o)),i.add(y)}},e.prototype._monthTextPositionControl=function(t,e,n,i,r){var o="left",a="top",s=t[0],l=t[1];return"horizontal"===n?(l+=r,e&&(o="center"),"start"===i&&(a="bottom")):(s+=r,e&&(a="middle"),"start"===i&&(o="right")),{x:s,y:l,align:o,verticalAlign:a}},e.prototype._renderMonthText=function(t,e,n){var i=t.getModel("monthLabel");if(i.get("show")){var r=i.get("nameMap"),o=i.get("margin"),a=i.get("position"),s=i.get("align"),l=[this._tlpoints,this._blpoints];H(r)&&(r=QR[r.toUpperCase()]||[]);var u="start"===a?0:1,h="horizontal"===e?0:1;o="start"===a?-o:o;for(var c="center"===s,p=0;p<l[u].length-1;p++){var d=l[u][p].slice(),f=this._firstDayOfMonth[p];if(c){var g=this._firstDayPoints[p];d[h]=(g[h]+l[0][p+1][h])/2}var y=i.get("formatter"),v=r[+f.m-1],m={yyyy:f.y,yy:(f.y+"").slice(2),MM:f.m,M:+f.m,nameMap:v},_=this._formatterLabel(y,m),x=new us({z2:30,style:I(hh(i,{text:_}),this._monthTextPositionControl(d,c,e,a,o))});n.add(x)}}},e.prototype._weekTextPositionControl=function(t,e,n,i,r){var o="center",a="middle",s=t[0],l=t[1],u="start"===n;return"horizontal"===e?(s=s+i+(u?1:-1)*r[0]/2,o=u?"right":"left"):(l=l+i+(u?1:-1)*r[1]/2,a=u?"bottom":"top"),{x:s,y:l,align:o,verticalAlign:a}},e.prototype._renderWeekText=function(t,e,n,i){var r=t.getModel("dayLabel");if(r.get("show")){var o=t.coordinateSystem,a=r.get("position"),s=r.get("nameMap"),l=r.get("margin"),u=o.getFirstDayOfWeek();H(s)&&(s=tN[s.toUpperCase()]||[]);var h=o.getNextNDay(e.end.time,7-e.lweek).time,c=[o.getCellWidth(),o.getCellHeight()];l=Zi(l,Math.min(c[1],c[0])),"start"===a&&(h=o.getNextNDay(e.start.time,-(7+e.fweek)).time,l=-l);for(var p=0;p<7;p++){var d,f=o.getNextNDay(h,p),g=o.dataToRect([f.time],!1).center;d=Math.abs((p+u)%7);var y=new us({z2:30,style:I(hh(r,{text:s[d]}),this._weekTextPositionControl(g,n,a,l,c))});i.add(y)}}},e.type="calendar",e}(xf),nN=864e5,iN=function(){function t(e,n,i){this.type="calendar",this.dimensions=t.dimensions,this.getDimensionsInfo=t.getDimensionsInfo,this._model=e}return t.getDimensionsInfo=function(){return[{name:"time",type:"time"},"value"]},t.prototype.getRangeInfo=function(){return this._rangeInfo},t.prototype.getModel=function(){return this._model},t.prototype.getRect=function(){return this._rect},t.prototype.getCellWidth=function(){return this._sw},t.prototype.getCellHeight=function(){return this._sh},t.prototype.getOrient=function(){return this._orient},t.prototype.getFirstDayOfWeek=function(){return this._firstDayOfWeek},t.prototype.getDateInfo=function(t){var e=(t=rr(t)).getFullYear(),n=t.getMonth()+1,i=n<10?"0"+n:""+n,r=t.getDate(),o=r<10?"0"+r:""+r,a=t.getDay();return{y:e+"",m:i,d:o,day:a=Math.abs((a+7-this.getFirstDayOfWeek())%7),time:t.getTime(),formatedDate:e+"-"+i+"-"+o,date:t}},t.prototype.getNextNDay=function(t,e){return 0===(e=e||0)||(t=new Date(this.getDateInfo(t).time)).setDate(t.getDate()+e),this.getDateInfo(t)},t.prototype.update=function(t,e){this._firstDayOfWeek=+this._model.getModel("dayLabel").get("firstDay"),this._orient=this._model.get("orient"),this._lineWidth=this._model.getModel("itemStyle").getItemStyle().lineWidth||0,this._rangeInfo=this._getRangeInfo(this._initRangeOption());var n=this._rangeInfo.weeks||1,i=["width","height"],r=this._model.getCellSize().slice(),o=this._model.getBoxLayoutParams(),a="horizontal"===this._orient?[n,7]:[7,n];P([0,1],(function(t){u(r,t)&&(o[i[t]]=r[t]*a[t])}));var s={width:e.getWidth(),height:e.getHeight()},l=this._rect=Ec(o,s);function u(t,e){return null!=t[e]&&"auto"!==t[e]}P([0,1],(function(t){u(r,t)||(r[t]=l[i[t]]/a[t])})),this._sw=r[0],this._sh=r[1]},t.prototype.dataToPoint=function(t,e){F(t)&&(t=t[0]),null==e&&(e=!0);var n=this.getDateInfo(t),i=this._rangeInfo,r=n.formatedDate;if(e&&!(n.time>=i.start.time&&n.time<i.end.time+nN))return[NaN,NaN];var o=n.day,a=this._getRangeInfo([i.start.time,r]).nthWeek;return"vertical"===this._orient?[this._rect.x+o*this._sw+this._sw/2,this._rect.y+a*this._sh+this._sh/2]:[this._rect.x+a*this._sw+this._sw/2,this._rect.y+o*this._sh+this._sh/2]},t.prototype.pointToData=function(t){var e=this.pointToDate(t);return e&&e.time},t.prototype.dataToRect=function(t,e){var n=this.dataToPoint(t,e);return{contentShape:{x:n[0]-(this._sw-this._lineWidth)/2,y:n[1]-(this._sh-this._lineWidth)/2,width:this._sw-this._lineWidth,height:this._sh-this._lineWidth},center:n,tl:[n[0]-this._sw/2,n[1]-this._sh/2],tr:[n[0]+this._sw/2,n[1]-this._sh/2],br:[n[0]+this._sw/2,n[1]+this._sh/2],bl:[n[0]-this._sw/2,n[1]+this._sh/2]}},t.prototype.pointToDate=function(t){var e=Math.floor((t[0]-this._rect.x)/this._sw)+1,n=Math.floor((t[1]-this._rect.y)/this._sh)+1,i=this._rangeInfo.range;return"vertical"===this._orient?this._getDateByWeeksAndDay(n,e-1,i):this._getDateByWeeksAndDay(e,n-1,i)},t.prototype.convertToPixel=function(t,e,n){var i=rN(e);return i===this?i.dataToPoint(n):null},t.prototype.convertFromPixel=function(t,e,n){var i=rN(e);return i===this?i.pointToData(n):null},t.prototype.containPoint=function(t){return console.warn("Not implemented."),!1},t.prototype._initRangeOption=function(){var t,e=this._model.get("range");if(F(e)&&1===e.length&&(e=e[0]),F(e))t=e;else{var n=e.toString();if(/^\d{4}$/.test(n)&&(t=[n+"-01-01",n+"-12-31"]),/^\d{4}[\/|-]\d{1,2}$/.test(n)){var i=this.getDateInfo(n),r=i.date;r.setMonth(r.getMonth()+1);var o=this.getNextNDay(r,-1);t=[i.formatedDate,o.formatedDate]}/^\d{4}[\/|-]\d{1,2}[\/|-]\d{1,2}$/.test(n)&&(t=[n,n])}if(!t)return e;var a=this._getRangeInfo(t);return a.start.time>a.end.time&&t.reverse(),t},t.prototype._getRangeInfo=function(t){var e,n=[this.getDateInfo(t[0]),this.getDateInfo(t[1])];n[0].time>n[1].time&&(e=!0,n.reverse());var i=Math.floor(n[1].time/nN)-Math.floor(n[0].time/nN)+1,r=new Date(n[0].time),o=r.getDate(),a=n[1].date.getDate();r.setDate(o+i-1);var s=r.getDate();if(s!==a)for(var l=r.getTime()-n[1].time>0?1:-1;(s=r.getDate())!==a&&(r.getTime()-n[1].time)*l>0;)i-=l,r.setDate(s-l);var u=Math.floor((i+n[0].day+6)/7),h=e?1-u:u-1;return e&&n.reverse(),{range:[n[0].formatedDate,n[1].formatedDate],start:n[0],end:n[1],allDay:i,weeks:u,nthWeek:h,fweek:n[0].day,lweek:n[1].day}},t.prototype._getDateByWeeksAndDay=function(t,e,n){var i=this._getRangeInfo(n);if(t>i.weeks||0===t&&e<i.fweek||t===i.weeks&&e>i.lweek)return null;var r=7*(t-1)-i.fweek+e,o=new Date(i.start.time);return o.setDate(+i.start.d+r),this.getDateInfo(o)},t.create=function(e,n){var i=[];return e.eachComponent("calendar",(function(r){var o=new t(r,e,n);i.push(o),r.coordinateSystem=o})),e.eachSeries((function(t){"calendar"===t.get("coordinateSystem")&&(t.coordinateSystem=i[t.get("calendarIndex")||0])})),i},t.dimensions=["time","value"],t}();function rN(t){var e=t.calendarModel,n=t.seriesModel;return e?e.coordinateSystem:n?n.coordinateSystem:null}var oN=Lr(),aN={path:null,compoundPath:null,group:zi,image:Qa,text:us},sN=function(t){var e=t.graphic;F(e)?e[0]&&e[0].elements?t.graphic=[t.graphic[0]]:t.graphic=[{elements:e}]:e&&!e.elements&&(t.graphic=[{elements:[e]}])},lN=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.preventAutoZ=!0,n}return n(e,t),e.prototype.mergeOption=function(e,n){var i=this.option.elements;this.option.elements=null,t.prototype.mergeOption.call(this,e,n),this.option.elements=i},e.prototype.optionUpdated=function(t,e){var n=this.option,i=(e?n:t).elements,r=n.elements=e?[]:n.elements,o=[];this._flatten(i,o,null);var a=Sr(r,o,"normalMerge"),s=this._elOptionsToUpdate=[];P(a,(function(t,e){var n=t.newOption;n&&(s.push(n),function(t,e){var n=t.existing;if(e.id=t.keyInfo.id,!e.type&&n&&(e.type=n.type),null==e.parentId){var i=e.parentOption;i?e.parentId=i.id:n&&(e.parentId=n.parentId)}e.parentOption=null}(t,n),function(t,e,n){var i=I({},n),r=t[e],o=n.$action||"merge";if("merge"===o){if(r)S(r,i,!0),Vc(r,i,{ignoreSize:!0}),Gc(n,r);else t[e]=i}else"replace"===o?t[e]=i:"remove"===o&&r&&(t[e]=null)}(r,e,n),function(t,e){if(!t)return;if(t.hv=e.hv=[pN(e,["left","right"]),pN(e,["top","bottom"])],"group"===t.type){var n=t,i=e;null==n.width&&(n.width=i.width=0),null==n.height&&(n.height=i.height=0)}}(r[e],n))}),this);for(var l=r.length-1;l>=0;l--)null==r[l]?r.splice(l,1):delete r[l].$action},e.prototype._flatten=function(t,e,n){P(t,(function(t){if(t){n&&(t.parentOption=n),e.push(t);var i=t.children;"group"===t.type&&i&&this._flatten(i,e,t),delete t.children}}),this)},e.prototype.useElOptionsToUpdate=function(){var t=this._elOptionsToUpdate;return this._elOptionsToUpdate=null,t},e.type="graphic",e.defaultOption={elements:[]},e}(Wc),uN=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.init=function(){this._elMap=ht()},e.prototype.render=function(t,e,n){t!==this._lastGraphicModel&&this._clear(),this._lastGraphicModel=t,this._updateElements(t),this._relocate(t,n)},e.prototype._updateElements=function(t){var e=t.useElOptionsToUpdate();if(e){var n=this._elMap,i=this.group;P(e,(function(e){var r=Tr(e.id,null),o=null!=r?n.get(r):null,a=Tr(e.parentId,null),s=null!=a?n.get(a):i,l=e.type,u=e.style;"text"===l&&u&&e.hv&&e.hv[1]&&(u.textVerticalAlign=u.textBaseline=u.verticalAlign=u.align=null);var h=e.textContent,c=e.textConfig;if(u&&Yk(u,l,!!c,!!h)){var p=Xk(u,l,!0);!c&&p.textConfig&&(c=e.textConfig=p.textConfig),!h&&p.textContent&&(h=p.textContent)}var d=function(t){return t=I({},t),P(["id","parentId","$action","hv","bounding","textContent"].concat(Pc),(function(e){delete t[e]})),t}(e);var f=e.$action||"merge";"merge"===f?o?o.attr(d):hN(r,s,d,n):"replace"===f?(cN(o,n),hN(r,s,d,n)):"remove"===f&&cN(o,n);var g=n.get(r);if(g&&h)if("merge"===f){var y=g.getTextContent();y?y.attr(h):g.setTextContent(new us(h))}else"replace"===f&&g.setTextContent(new us(h));if(g){var v=oN(g);v.__ecGraphicWidthOption=e.width,v.__ecGraphicHeightOption=e.height,function(t,e,n){var i=vs(t).eventData;t.silent||t.ignore||i||(i=vs(t).eventData={componentType:"graphic",componentIndex:e.componentIndex,name:t.name});i&&(i.info=n.info)}(g,t,e),ih({el:g,componentModel:t,itemName:g.name,itemTooltipOption:e.tooltip})}}))}},e.prototype._relocate=function(t,e){for(var n=t.option.elements,i=this.group,r=this._elMap,o=e.getWidth(),a=e.getHeight(),s=0;s<n.length;s++){if((d=null!=(p=Tr((c=n[s]).id,null))?r.get(p):null)&&d.isGroup){var l=(f=d.parent)===i,u=oN(d),h=oN(f);u.__ecGraphicWidth=Zi(u.__ecGraphicWidthOption,l?o:h.__ecGraphicWidth)||0,u.__ecGraphicHeight=Zi(u.__ecGraphicHeightOption,l?a:h.__ecGraphicHeight)||0}}for(s=n.length-1;s>=0;s--){var c,p,d;if(d=null!=(p=Tr((c=n[s]).id,null))?r.get(p):null){var f=d.parent;h=oN(f);zc(d,c,f===i?{width:o,height:a}:{width:h.__ecGraphicWidth,height:h.__ecGraphicHeight},null,{hv:c.hv,boundingMode:c.bounding})}}},e.prototype._clear=function(){var t=this._elMap;t.each((function(e){cN(e,t)})),this._elMap=ht()},e.prototype.dispose=function(){this._clear()},e.type="graphic",e}(xf);function hN(t,e,n,i){var r=n.type;var o=dt(aN,r)?aN[r]:Pu(r);var a=new o(n);e.add(a),i.set(t,a),oN(a).__ecGraphicId=t}function cN(t,e){var n=t&&t.parent;n&&("group"===t.type&&t.traverse((function(t){cN(t,e)})),e.removeKey(oN(t).__ecGraphicId),n.remove(t))}function pN(t,e){var n;return P(e,(function(e){null!=t[e]&&"auto"!==t[e]&&(n=!0)})),n}var dN=["x","y","radius","angle","single"],fN=["cartesian2d","polar","singleAxis"];function gN(t){return t+"Axis"}function yN(t,e){var n,i=ht(),r=[],o=ht();t.eachComponent({mainType:"dataZoom",query:e},(function(t){o.get(t.uid)||s(t)}));do{n=!1,t.eachComponent("dataZoom",a)}while(n);function a(t){!o.get(t.uid)&&function(t){var e=!1;return t.eachTargetAxis((function(t,n){var r=i.get(t);r&&r[n]&&(e=!0)})),e}(t)&&(s(t),n=!0)}function s(t){o.set(t.uid,!0),r.push(t),t.eachTargetAxis((function(t,e){(i.get(t)||i.set(t,[]))[e]=!0}))}return r}function vN(t){var e=t.ecModel,n={infoList:[],infoMap:ht()};return t.eachTargetAxis((function(t,i){var r=e.getComponent(gN(t),i);if(r){var o=r.getCoordSysModel();if(o){var a=o.uid,s=n.infoMap.get(a);s||(s={model:o,axisModels:[]},n.infoList.push(s),n.infoMap.set(a,s)),s.axisModels.push(r)}}})),n}var mN=function(){function t(){this.indexList=[],this.indexMap=[]}return t.prototype.add=function(t){this.indexMap[t]||(this.indexList.push(t),this.indexMap[t]=!0)},t}(),_N=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n._autoThrottle=!0,n._noTarget=!0,n._rangePropMode=["percent","percent"],n}return n(e,t),e.prototype.init=function(t,e,n){var i=xN(t);this.settledOption=i,this.mergeDefaultAndTheme(t,n),this._doInit(i)},e.prototype.mergeOption=function(t){var e=xN(t);S(this.option,t,!0),S(this.settledOption,e,!0),this._doInit(e)},e.prototype._doInit=function(t){var e=this.option;this._setDefaultThrottle(t),this._updateRangeUse(t);var n=this.settledOption;P([["start","startValue"],["end","endValue"]],(function(t,i){"value"===this._rangePropMode[i]&&(e[t[0]]=n[t[0]]=null)}),this),this._resetTarget()},e.prototype._resetTarget=function(){var t=this.get("orient",!0),e=this._targetAxisInfoMap=ht();this._fillSpecifiedTargetAxis(e)?this._orient=t||this._makeAutoOrientByTargetAxis():(this._orient=t||"horizontal",this._fillAutoTargetAxisByOrient(e,this._orient)),this._noTarget=!0,e.each((function(t){t.indexList.length&&(this._noTarget=!1)}),this)},e.prototype._fillSpecifiedTargetAxis=function(t){var e=!1;return P(dN,(function(n){var i=this.getReferringComponents(gN(n),Nr);if(i.specified){e=!0;var r=new mN;P(i.models,(function(t){r.add(t.componentIndex)})),t.set(n,r)}}),this),e},e.prototype._fillAutoTargetAxisByOrient=function(t,e){var n=this.ecModel,i=!0;if(i){var r="vertical"===e?"y":"x";o(n.findComponents({mainType:r+"Axis"}),r)}i&&o(n.findComponents({mainType:"singleAxis",filter:function(t){return t.get("orient",!0)===e}}),"single");function o(e,n){var r=e[0];if(r){var o=new mN;if(o.add(r.componentIndex),t.set(n,o),i=!1,"x"===n||"y"===n){var a=r.getReferringComponents("grid",Rr).models[0];a&&P(e,(function(t){r.componentIndex!==t.componentIndex&&a===t.getReferringComponents("grid",Rr).models[0]&&o.add(t.componentIndex)}))}}}i&&P(dN,(function(e){if(i){var r=n.findComponents({mainType:gN(e),filter:function(t){return"category"===t.get("type",!0)}});if(r[0]){var o=new mN;o.add(r[0].componentIndex),t.set(e,o),i=!1}}}),this)},e.prototype._makeAutoOrientByTargetAxis=function(){var t;return this.eachTargetAxis((function(e){!t&&(t=e)}),this),"y"===t?"vertical":"horizontal"},e.prototype._setDefaultThrottle=function(t){if(t.hasOwnProperty("throttle")&&(this._autoThrottle=!1),this._autoThrottle){var e=this.ecModel.option;this.option.throttle=e.animation&&e.animationDurationUpdate>0?100:20}},e.prototype._updateRangeUse=function(t){var e=this._rangePropMode,n=this.get("rangeMode");P([["start","startValue"],["end","endValue"]],(function(i,r){var o=null!=t[i[0]],a=null!=t[i[1]];o&&!a?e[r]="percent":!o&&a?e[r]="value":n?e[r]=n[r]:o&&(e[r]="percent")}))},e.prototype.noTarget=function(){return this._noTarget},e.prototype.getFirstTargetAxisModel=function(){var t;return this.eachTargetAxis((function(e,n){null==t&&(t=this.ecModel.getComponent(gN(e),n))}),this),t},e.prototype.eachTargetAxis=function(t,e){this._targetAxisInfoMap.each((function(n,i){P(n.indexList,(function(n){t.call(e,i,n)}))}))},e.prototype.getAxisProxy=function(t,e){var n=this.getAxisModel(t,e);if(n)return n.__dzAxisProxy},e.prototype.getAxisModel=function(t,e){var n=this._targetAxisInfoMap.get(t);if(n&&n.indexMap[e])return this.ecModel.getComponent(gN(t),e)},e.prototype.setRawRange=function(t){var e=this.option,n=this.settledOption;P([["start","startValue"],["end","endValue"]],(function(i){null==t[i[0]]&&null==t[i[1]]||(e[i[0]]=n[i[0]]=t[i[0]],e[i[1]]=n[i[1]]=t[i[1]])}),this),this._updateRangeUse(t)},e.prototype.setCalculatedRange=function(t){var e=this.option;P(["start","startValue","end","endValue"],(function(n){e[n]=t[n]}))},e.prototype.getPercentRange=function(){var t=this.findRepresentativeAxisProxy();if(t)return t.getDataPercentWindow()},e.prototype.getValueRange=function(t,e){if(null!=t||null!=e)return this.getAxisProxy(t,e).getDataValueWindow();var n=this.findRepresentativeAxisProxy();return n?n.getDataValueWindow():void 0},e.prototype.findRepresentativeAxisProxy=function(t){if(t)return t.__dzAxisProxy;for(var e,n=this._targetAxisInfoMap.keys(),i=0;i<n.length;i++)for(var r=n[i],o=this._targetAxisInfoMap.get(r),a=0;a<o.indexList.length;a++){var s=this.getAxisProxy(r,o.indexList[a]);if(s.hostedBy(this))return s;e||(e=s)}return e},e.prototype.getRangePropMode=function(){return this._rangePropMode.slice()},e.prototype.getOrient=function(){return this._orient},e.type="dataZoom",e.dependencies=["xAxis","yAxis","radiusAxis","angleAxis","singleAxis","series","toolbox"],e.defaultOption={zlevel:0,z:4,filterMode:"filter",start:0,end:100},e}(Wc);function xN(t){var e={};return P(["start","end","startValue","endValue","throttle"],(function(n){t.hasOwnProperty(n)&&(e[n]=t[n])})),e}var bN=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="dataZoom.select",e}(_N),wN=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n,i){this.dataZoomModel=t,this.ecModel=e,this.api=n},e.type="dataZoom",e}(xf),SN=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="dataZoom.select",e}(wN),MN=P,IN=qi,TN=function(){function t(t,e,n,i){this._dimName=t,this._axisIndex=e,this.ecModel=i,this._dataZoomModel=n}return t.prototype.hostedBy=function(t){return this._dataZoomModel===t},t.prototype.getDataValueWindow=function(){return this._valueWindow.slice()},t.prototype.getDataPercentWindow=function(){return this._percentWindow.slice()},t.prototype.getTargetSeriesModels=function(){var t=[];return this.ecModel.eachSeries((function(e){if(function(t){var e=t.get("coordinateSystem");return A(fN,e)>=0}(e)){var n=gN(this._dimName),i=e.getReferringComponents(n,Rr).models[0];i&&this._axisIndex===i.componentIndex&&t.push(e)}}),this),t},t.prototype.getAxisModel=function(){return this.ecModel.getComponent(this._dimName+"Axis",this._axisIndex)},t.prototype.getMinMaxSpan=function(){return w(this._minMaxSpan)},t.prototype.calculateDataWindow=function(t){var e,n=this._dataExtent,i=this.getAxisModel().axis.scale,r=this._dataZoomModel.getRangePropMode(),o=[0,100],a=[],s=[];MN(["start","end"],(function(l,u){var h=t[l],c=t[l+"Value"];"percent"===r[u]?(null==h&&(h=o[u]),c=i.parse(Xi(h,o,n))):(e=!0,h=Xi(c=null==c?n[u]:i.parse(c),n,o)),s[u]=c,a[u]=h})),IN(s),IN(a);var l=this._minMaxSpan;function u(t,e,n,r,o){var a=o?"Span":"ValueSpan";DA(0,t,n,"all",l["min"+a],l["max"+a]);for(var s=0;s<2;s++)e[s]=Xi(t[s],n,r,!0),o&&(e[s]=i.parse(e[s]))}return e?u(s,a,n,o,!1):u(a,s,o,n,!0),{valueWindow:s,percentWindow:a}},t.prototype.reset=function(t){if(t===this._dataZoomModel){var e=this.getTargetSeriesModels();this._dataExtent=function(t,e,n){var i=[1/0,-1/0];MN(n,(function(t){!function(t,e,n){e&&P(Hx(e,n),(function(n){var i=e.getApproximateExtent(n);i[0]<t[0]&&(t[0]=i[0]),i[1]>t[1]&&(t[1]=i[1])}))}(i,t.getData(),e)}));var r=t.getAxisModel(),o=Px(r.axis.scale,r,i).calculate();return[o.min,o.max]}(this,this._dimName,e),this._updateMinMaxSpan();var n=this.calculateDataWindow(t.settledOption);this._valueWindow=n.valueWindow,this._percentWindow=n.percentWindow,this._setAxisModel()}},t.prototype.filterData=function(t,e){if(t===this._dataZoomModel){var n=this._dimName,i=this.getTargetSeriesModels(),r=t.get("filterMode"),o=this._valueWindow;"none"!==r&&MN(i,(function(t){var e=t.getData(),i=e.mapDimensionsAll(n);i.length&&("weakFilter"===r?e.filterSelf((function(t){for(var n,r,a,s=0;s<i.length;s++){var l=e.get(i[s],t),u=!isNaN(l),h=l<o[0],c=l>o[1];if(u&&!h&&!c)return!0;u&&(a=!0),h&&(n=!0),c&&(r=!0)}return a&&n&&r})):MN(i,(function(n){if("empty"===r)t.setData(e=e.map(n,(function(t){return function(t){return t>=o[0]&&t<=o[1]}(t)?t:NaN})));else{var i={};i[n]=o,e.selectRange(i)}})),MN(i,(function(t){e.setApproximateExtent(o,t)})))}))}},t.prototype._updateMinMaxSpan=function(){var t=this._minMaxSpan={},e=this._dataZoomModel,n=this._dataExtent;MN(["min","max"],(function(i){var r=e.get(i+"Span"),o=e.get(i+"ValueSpan");null!=o&&(o=this.getAxisModel().axis.scale.parse(o)),null!=o?r=Xi(n[0]+o,n,[0,100],!0):null!=r&&(o=Xi(r,[0,100],n,!0)-n[0]),t[i+"Span"]=r,t[i+"ValueSpan"]=o}),this)},t.prototype._setAxisModel=function(){var t=this.getAxisModel(),e=this._percentWindow,n=this._valueWindow;if(e){var i=Ji(n,[0,500]);i=Math.min(i,20);var r=t.axis.scale.rawExtentInfo;0!==e[0]&&r.setDeterminedMinMax("min",+n[0].toFixed(i)),100!==e[1]&&r.setDeterminedMinMax("max",+n[1].toFixed(i)),r.freeze()}},t}();var CN={getTargetSeries:function(t){function e(e){t.eachComponent("dataZoom",(function(n){n.eachTargetAxis((function(i,r){var o=t.getComponent(gN(i),r);e(i,r,o,n)}))}))}e((function(t,e,n,i){n.__dzAxisProxy=null}));var n=[];e((function(e,i,r,o){r.__dzAxisProxy||(r.__dzAxisProxy=new TN(e,i,o,t),n.push(r.__dzAxisProxy))}));var i=ht();return P(n,(function(t){P(t.getTargetSeriesModels(),(function(t){i.set(t.uid,t)}))})),i},overallReset:function(t,e){t.eachComponent("dataZoom",(function(t){t.eachTargetAxis((function(e,n){t.getAxisProxy(e,n).reset(t)})),t.eachTargetAxis((function(n,i){t.getAxisProxy(n,i).filterData(t,e)}))})),t.eachComponent("dataZoom",(function(t){var e=t.findRepresentativeAxisProxy();if(e){var n=e.getDataPercentWindow(),i=e.getDataValueWindow();t.setCalculatedRange({start:n[0],end:n[1],startValue:i[0],endValue:i[1]})}}))}};var AN=!1;function DN(t){AN||(AN=!0,t.registerProcessor(t.PRIORITY.PROCESSOR.FILTER,CN),function(t){t.registerAction("dataZoom",(function(t,e){P(yN(e,t),(function(e){e.setRawRange({start:t.start,end:t.end,startValue:t.startValue,endValue:t.endValue})}))}))}(t),t.registerSubTypeDefaulter("dataZoom",(function(){return"slider"})))}function LN(t){t.registerComponentModel(bN),t.registerComponentView(SN),DN(t)}var kN=function(){},PN={};function ON(t,e){PN[t]=e}function RN(t){return PN[t]}var NN=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.optionUpdated=function(){t.prototype.optionUpdated.apply(this,arguments);var e=this.ecModel;P(this.option.feature,(function(t,n){var i=RN(n);i&&(i.getDefaultOption&&(i.defaultOption=i.getDefaultOption(e)),S(t,i.defaultOption))}))},e.type="toolbox",e.layoutMode={type:"box",ignoreSize:!0},e.defaultOption={show:!0,z:6,zlevel:0,orient:"horizontal",left:"right",top:"top",backgroundColor:"transparent",borderColor:"#cccccc",borderRadius:0,borderWidth:0,padding:5,itemSize:15,itemGap:8,showTitle:!0,iconStyle:{borderColor:"#666666",color:"none"},emphasis:{iconStyle:{borderColor:"#3E98C5"}},tooltip:{show:!1,position:"bottom"}},e}(Wc);function EN(t,e){var n=xc(e.get("padding")),i=e.getItemStyle(["color","opacity"]);return i.fill=e.get("backgroundColor"),t=new as({shape:{x:t.x-n[3],y:t.y-n[0],width:t.width+n[1]+n[3],height:t.height+n[0]+n[2],r:e.get("borderRadius")},style:i,silent:!0,z2:-1})}var zN=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.render=function(t,e,n,i){var r=this.group;if(r.removeAll(),t.get("show")){var o=+t.get("itemSize"),a=t.get("feature")||{},s=this._features||(this._features={}),l=[];P(a,(function(t,e){l.push(e)})),new Jm(this._featureNames||[],l).add(u).update(u).remove(V(u,null)).execute(),this._featureNames=l,function(t,e,n){var i=e.getBoxLayoutParams(),r=e.get("padding"),o={width:n.getWidth(),height:n.getHeight()},a=Ec(i,o,r);Nc(e.get("orient"),t,e.get("itemGap"),a.width,a.height),zc(t,i,o,r)}(r,t,n),r.add(EN(r.getBoundingRect(),t)),r.eachChild((function(t){var e=t.__title,i=t.ensureState("emphasis"),a=i.textConfig||(i.textConfig={}),s=t.getTextContent(),l=s&&s.states.emphasis;if(l&&!G(l)&&e){var u=l.style||(l.style={}),h=Fn(e,us.makeFont(u)),c=t.x+r.x,p=!1;t.y+r.y+o+h.height>n.getHeight()&&(a.position="top",p=!0);var d=p?-5-h.height:o+8;c+h.width/2>n.getWidth()?(a.position=["100%",d],u.align="right"):c-h.width/2<0&&(a.position=[0,d],u.align="left")}}))}function u(u,h){var c,p=l[u],d=l[h],f=a[p],g=new kh(f,t,t.ecModel);if(i&&null!=i.newTitle&&i.featureName===p&&(f.title=i.newTitle),p&&!d){if(function(t){return 0===t.indexOf("my")}(p))c={onclick:g.option.onclick,featureName:p};else{var y=RN(p);if(!y)return;c=new y}s[p]=c}else if(!(c=s[d]))return;if(c.uid=Oh("toolbox-feature"),c.model=g,c.ecModel=e,c.api=n,c instanceof kN){if(!p&&d)return void(c.dispose&&c.dispose(e,n));if(!g.get("show")||c.unusable)return void(c.remove&&c.remove(e,n))}!function(i,a,s){var l,u,h=i.getModel("iconStyle"),c=i.getModel(["emphasis","iconStyle"]),p=a instanceof kN&&a.getIcons?a.getIcons():i.get("icon"),d=i.get("title")||{};"string"==typeof p?(l={})[s]=p:l=p;"string"==typeof d?(u={})[s]=d:u=d;var f=i.iconPaths={};P(l,(function(s,l){var p=Qu(s,{},{x:-o/2,y:-o/2,width:o,height:o});p.setStyle(h.getItemStyle()),p.ensureState("emphasis").style=c.getItemStyle();var d=new us({style:{text:u[l],align:c.get("textAlign"),borderRadius:c.get("textBorderRadius"),padding:c.get("textPadding"),fill:null},ignore:!0});p.setTextContent(d),ih({el:p,componentModel:t,itemName:l,formatterParamsExtra:{title:u[l]}}),p.__title=u[l],p.on("mouseover",(function(){var e=c.getItemStyle(),n="vertical"===t.get("orient")?null==t.get("right")?"right":"left":null==t.get("bottom")?"bottom":"top";d.setStyle({fill:c.get("textFill")||e.fill||e.stroke||"#000000",backgroundColor:c.get("textBackgroundColor")}),p.setTextConfig({position:c.get("textPosition")||n}),d.ignore=!t.get("showTitle"),Xs(this)})).on("mouseout",(function(){"emphasis"!==i.get(["iconStatus",l])&&Zs(this),d.hide()})),("emphasis"===i.get(["iconStatus",l])?Xs:Zs)(p),r.add(p),p.on("click",B(a.onclick,a,e,n,l)),f[l]=p}))}(g,c,p),g.setIconStatus=function(t,e){var n=this.option,i=this.iconPaths;n.iconStatus=n.iconStatus||{},n.iconStatus[t]=e,i[t]&&("emphasis"===e?Xs:Zs)(i[t])},c instanceof kN&&c.render&&c.render(g,e,n,i)}},e.prototype.updateView=function(t,e,n,i){P(this._features,(function(t){t instanceof kN&&t.updateView&&t.updateView(t.model,e,n,i)}))},e.prototype.remove=function(t,e){P(this._features,(function(n){n instanceof kN&&n.remove&&n.remove(t,e)})),this.group.removeAll()},e.prototype.dispose=function(t,e){P(this._features,(function(n){n instanceof kN&&n.dispose&&n.dispose(t,e)}))},e.type="toolbox",e}(xf);var BN=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.onclick=function(t,e){var n=this.model,i=n.get("name")||t.get("title.0.text")||"echarts",r="svg"===e.getZr().painter.getType(),o=r?"svg":n.get("type",!0)||"png",s=e.getConnectedDataURL({type:o,backgroundColor:n.get("backgroundColor",!0)||t.get("backgroundColor")||"#ffffff",connectedBackgroundColor:n.get("connectedBackgroundColor"),excludeComponents:n.get("excludeComponents"),pixelRatio:n.get("pixelRatio")});if("function"!=typeof MouseEvent||!a.browser.newEdge&&(a.browser.ie||a.browser.edge))if(window.navigator.msSaveOrOpenBlob||r){var l=s.split(","),u=l[0].indexOf("base64")>-1,h=r?decodeURIComponent(l[1]):l[1];u&&(h=atob(h));var c=i+"."+o;if(window.navigator.msSaveOrOpenBlob){for(var p=h.length,d=new Uint8Array(p);p--;)d[p]=h.charCodeAt(p);var f=new Blob([d]);window.navigator.msSaveOrOpenBlob(f,c)}else{var g=document.createElement("iframe");document.body.appendChild(g);var y=g.contentWindow,v=y.document;v.open("image/svg+xml","replace"),v.write(h),v.close(),y.focus(),v.execCommand("SaveAs",!0,c),document.body.removeChild(g)}}else{var m=n.get("lang"),_='<body style="margin:0;"><img src="'+s+'" style="max-width:100%;" title="'+(m&&m[0]||"")+'" /></body>',x=window.open();x.document.write(_),x.document.title=i}else{var b=document.createElement("a");b.download=i+"."+o,b.target="_blank",b.href=s;var w=new MouseEvent("click",{view:document.defaultView,bubbles:!0,cancelable:!1});b.dispatchEvent(w)}},e.getDefaultOption=function(t){return{show:!0,icon:"M4.7,22.9L29.3,45.5L54.7,23.4M4.6,43.6L4.6,58L53.8,58L53.8,43.6M29.2,45.1L29.2,0",title:t.getLocale(["toolbox","saveAsImage","title"]),type:"png",connectedBackgroundColor:"#ffffff",name:"",excludeComponents:["toolbox"],lang:t.getLocale(["toolbox","saveAsImage","lang"])}},e}(kN);BN.prototype.unusable=!a.canvasSupported;var VN="__ec_magicType_stack__",FN=[["line","bar"],["stack"]],GN=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.getIcons=function(){var t=this.model,e=t.get("icon"),n={};return P(t.get("type"),(function(t){e[t]&&(n[t]=e[t])})),n},e.getDefaultOption=function(t){return{show:!0,type:[],icon:{line:"M4.1,28.9h7.1l9.3-22l7.4,38l9.7-19.7l3,12.8h14.9M4.1,58h51.4",bar:"M6.7,22.9h10V48h-10V22.9zM24.9,13h10v35h-10V13zM43.2,2h10v46h-10V2zM3.1,58h53.7",stack:"M8.2,38.4l-8.4,4.1l30.6,15.3L60,42.5l-8.1-4.1l-21.5,11L8.2,38.4z M51.9,30l-8.1,4.2l-13.4,6.9l-13.9-6.9L8.2,30l-8.4,4.2l8.4,4.2l22.2,11l21.5-11l8.1-4.2L51.9,30z M51.9,21.7l-8.1,4.2L35.7,30l-5.3,2.8L24.9,30l-8.4-4.1l-8.3-4.2l-8.4,4.2L8.2,30l8.3,4.2l13.9,6.9l13.4-6.9l8.1-4.2l8.1-4.1L51.9,21.7zM30.4,2.2L-0.2,17.5l8.4,4.1l8.3,4.2l8.4,4.2l5.5,2.7l5.3-2.7l8.1-4.2l8.1-4.2l8.1-4.1L30.4,2.2z"},title:t.getLocale(["toolbox","magicType","title"]),option:{},seriesIndex:{}}},e.prototype.onclick=function(t,e,n){var i=this.model,r=i.get(["seriesIndex",n]);if(HN[n]){var o,a={series:[]};P(FN,(function(t){A(t,n)>=0&&P(t,(function(t){i.setIconStatus(t,"normal")}))})),i.setIconStatus(n,"emphasis"),t.eachComponent({mainType:"series",query:null==r?null:{seriesIndex:r}},(function(t){var e=t.subType,r=t.id,o=HN[n](e,r,t,i);o&&(T(o,t.option),a.series.push(o));var s=t.coordinateSystem;if(s&&"cartesian2d"===s.type&&("line"===n||"bar"===n)){var l=s.getAxesByScale("ordinal")[0];if(l){var u=l.dim+"Axis",h=t.getReferringComponents(u,Rr).models[0].componentIndex;a[u]=a[u]||[];for(var c=0;c<=h;c++)a[u][h]=a[u][h]||{};a[u][h].boundaryGap="bar"===n}}})),"stack"===n&&(o=S({stack:i.option.title.tiled,tiled:i.option.title.stack},i.option.title)),e.dispatchAction({type:"changeMagicType",currentType:n,newOption:a,newTitle:o,featureName:"magicType"})}},e}(kN),HN={line:function(t,e,n,i){if("bar"===t)return S({id:e,type:"line",data:n.get("data"),stack:n.get("stack"),markPoint:n.get("markPoint"),markLine:n.get("markLine")},i.get(["option","line"])||{},!0)},bar:function(t,e,n,i){if("line"===t)return S({id:e,type:"bar",data:n.get("data"),stack:n.get("stack"),markPoint:n.get("markPoint"),markLine:n.get("markLine")},i.get(["option","bar"])||{},!0)},stack:function(t,e,n,i){var r=n.get("stack")===VN;if("line"===t||"bar"===t)return i.setIconStatus("stack",r?"normal":"emphasis"),S({id:e,stack:r?"":VN},i.get(["option","stack"])||{},!0)}};Bm({type:"changeMagicType",event:"magicTypeChanged",update:"prepareAndUpdate"},(function(t,e){e.mergeOption(t.newOption)}));var WN=new Array(60).join("-"),UN="\t";function YN(t){return t.replace(/^\s\s*/,"").replace(/\s\s*$/,"")}var XN=new RegExp("[\t]+","g");function ZN(t,e){var n=t.split(new RegExp("\n*"+WN+"\n*","g")),i={series:[]};return P(n,(function(t,n){if(function(t){if(t.slice(0,t.indexOf("\n")).indexOf(UN)>=0)return!0}(t)){var r=function(t){for(var e=t.split(/\n+/g),n=[],i=O(YN(e.shift()).split(XN),(function(t){return{name:t,data:[]}})),r=0;r<e.length;r++){var o=YN(e[r]).split(XN);n.push(o.shift());for(var a=0;a<o.length;a++)i[a]&&(i[a].data[r]=o[a])}return{series:i,categories:n}}(t),o=e[n],a=o.axisDim+"Axis";o&&(i[a]=i[a]||[],i[a][o.axisIndex]={data:r.categories},i.series=i.series.concat(r.series))}else{r=function(t){for(var e=t.split(/\n+/g),n=YN(e.shift()),i=[],r=0;r<e.length;r++){var o=YN(e[r]);if(o){var a=o.split(XN),s="",l=void 0,u=!1;isNaN(a[0])?(u=!0,s=a[0],a=a.slice(1),i[r]={name:s,value:[]},l=i[r].value):l=i[r]=[];for(var h=0;h<a.length;h++)l.push(+a[h]);1===l.length&&(u?i[r].value=l[0]:i[r]=l[0])}}return{name:n,data:i}}(t);i.series.push(r)}})),i}var jN=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.onclick=function(t,e){var n=e.getDom(),i=this.model;this._dom&&n.removeChild(this._dom);var r=document.createElement("div");r.style.cssText="position:absolute;left:5px;top:5px;bottom:5px;right:5px;",r.style.backgroundColor=i.get("backgroundColor")||"#ffffff";var o=document.createElement("h4"),a=i.get("lang")||[];o.innerHTML=a[0]||i.get("title"),o.style.cssText="margin: 10px 20px;",o.style.color=i.get("textColor");var s=document.createElement("div"),l=document.createElement("textarea");s.style.cssText="display:block;width:100%;overflow:auto;";var u=i.get("optionToContent"),h=i.get("contentToOption"),c=function(t){var e,n,i,r=function(t){var e={},n=[],i=[];return t.eachRawSeries((function(t){var r=t.coordinateSystem;if(!r||"cartesian2d"!==r.type&&"polar"!==r.type)n.push(t);else{var o=r.getBaseAxis();if("category"===o.type){var a=o.dim+"_"+o.index;e[a]||(e[a]={categoryAxis:o,valueAxis:r.getOtherAxis(o),series:[]},i.push({axisDim:o.dim,axisIndex:o.index})),e[a].series.push(t)}else n.push(t)}})),{seriesGroupByCategoryAxis:e,other:n,meta:i}}(t);return{value:N([(n=r.seriesGroupByCategoryAxis,i=[],P(n,(function(t,e){var n=t.categoryAxis,r=t.valueAxis.dim,o=[" "].concat(O(t.series,(function(t){return t.name}))),a=[n.model.getCategories()];P(t.series,(function(t){var e=t.getRawData();a.push(t.getRawData().mapArray(e.mapDimension(r),(function(t){return t})))}));for(var s=[o.join(UN)],l=0;l<a[0].length;l++){for(var u=[],h=0;h<a.length;h++)u.push(a[h][l]);s.push(u.join(UN))}i.push(s.join("\n"))})),i.join("\n\n"+WN+"\n\n")),(e=r.other,O(e,(function(t){var e=t.getRawData(),n=[t.name],i=[];return e.each(e.dimensions,(function(){for(var t=arguments.length,r=arguments[t-1],o=e.getName(r),a=0;a<t-1;a++)i[a]=arguments[a];n.push((o?o+UN:"")+i.join(UN))})),n.join("\n")})).join("\n\n"+WN+"\n\n"))],(function(t){return!!t.replace(/[\n\t\s]/g,"")})).join("\n\n"+WN+"\n\n"),meta:r.meta}}(t);if("function"==typeof u){var p=u(e.getOption());"string"==typeof p?s.innerHTML=p:j(p)&&s.appendChild(p)}else s.appendChild(l),l.readOnly=i.get("readOnly"),l.style.cssText="width:100%;height:100%;font-family:monospace;font-size:14px;line-height:1.6rem;",l.style.color=i.get("textColor"),l.style.borderColor=i.get("textareaBorderColor"),l.style.backgroundColor=i.get("textareaColor"),l.value=c.value;var d=c.meta,f=document.createElement("div");f.style.cssText="position:absolute;bottom:0;left:0;right:0;";var g="float:right;margin-right:20px;border:none;cursor:pointer;padding:2px 5px;font-size:12px;border-radius:3px",y=document.createElement("div"),v=document.createElement("div");g+=";background-color:"+i.get("buttonColor"),g+=";color:"+i.get("buttonTextColor");var m=this;function _(){n.removeChild(r),m._dom=null}te(y,"click",_),te(v,"click",(function(){if(null==h&&null!=u||null!=h&&null==u)_();else{var t;try{t="function"==typeof h?h(s,e.getOption()):ZN(l.value,d)}catch(t){throw _(),new Error("Data view format error "+t)}t&&e.dispatchAction({type:"changeDataView",newOption:t}),_()}})),y.innerHTML=a[1],v.innerHTML=a[2],v.style.cssText=g,y.style.cssText=g,!i.get("readOnly")&&f.appendChild(v),f.appendChild(y),r.appendChild(o),r.appendChild(s),r.appendChild(f),s.style.height=n.clientHeight-80+"px",n.appendChild(r),this._dom=r},e.prototype.remove=function(t,e){this._dom&&e.getDom().removeChild(this._dom)},e.prototype.dispose=function(t,e){this.remove(t,e)},e.getDefaultOption=function(t){return{show:!0,readOnly:!1,optionToContent:null,contentToOption:null,icon:"M17.5,17.3H33 M17.5,17.3H33 M45.4,29.5h-28 M11.5,2v56H51V14.8L38.4,2H11.5z M38.4,2.2v12.7H51 M45.4,41.7h-28",title:t.getLocale(["toolbox","dataView","title"]),lang:t.getLocale(["toolbox","dataView","lang"]),backgroundColor:"#ffffff",textColor:"#000000",textareaColor:"#ffffff",textareaBorderColor:"#333333",buttonColor:"#c23531",buttonTextColor:"#ffffff"}},e}(kN);function qN(t,e){return O(t,(function(t,n){var i=e&&e[n];if(Y(i)&&!F(i)){Y(t)&&!F(t)||(t={value:t});var r=null!=i.name&&null==t.name;return t=T(t,i),r&&delete t.name,t}return t}))}Bm({type:"changeDataView",event:"dataViewChanged",update:"prepareAndUpdate"},(function(t,e){var n=[];P(t.newOption.series,(function(t){var i=e.getSeriesByName(t.name)[0];if(i){var r=i.get("data");n.push({name:t.name,data:qN(t.data,r)})}else n.push(I({type:"scatter"},t))})),e.mergeOption(T({series:n},t.newOption))}));var KN=P,$N=Lr();function JN(t){var e=$N(t);return e.snapshots||(e.snapshots=[{}]),e.snapshots}var QN=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.onclick=function(t,e){!function(t){$N(t).snapshots=null}(t),e.dispatchAction({type:"restore",from:this.uid})},e.getDefaultOption=function(t){return{show:!0,icon:"M3.8,33.4 M47,18.9h9.8V8.7 M56.3,20.1 C52.1,9,40.5,0.6,26.8,2.1C12.6,3.7,1.6,16.2,2.1,30.6 M13,41.1H3.1v10.2 M3.7,39.9c4.2,11.1,15.8,19.5,29.5,18 c14.2-1.6,25.2-14.1,24.7-28.5",title:t.getLocale(["toolbox","restore","title"])}},e}(kN);Bm({type:"restore",event:"restore",update:"prepareAndUpdate"},(function(t,e){e.resetOption("recreate")}));var tE=["dataToPoint","pointToData"],eE=["grid","xAxis","yAxis","geo","graph","polar","radiusAxis","angleAxis","bmap"],nE=function(){function t(t,e,n){var i=this;this._targetInfoList=[];var r=rE(e,t);P(oE,(function(t,e){(!n||!n.include||A(n.include,e)>=0)&&t(r,i._targetInfoList)}))}return t.prototype.setOutputRanges=function(t,e){return this.matchOutputRanges(t,e,(function(t,e,n){if((t.coordRanges||(t.coordRanges=[])).push(e),!t.coordRange){t.coordRange=e;var i=lE[t.brushType](0,n,e);t.__rangeOffset={offset:hE[t.brushType](i.values,t.range,[1,1]),xyMinMax:i.xyMinMax}}})),t},t.prototype.matchOutputRanges=function(t,e,n){P(t,(function(t){var i=this.findTargetInfo(t,e);i&&!0!==i&&P(i.coordSyses,(function(i){var r=lE[t.brushType](1,i,t.range);n(t,r.values,i,e)}))}),this)},t.prototype.setInputRanges=function(t,e){P(t,(function(t){var n,i,r,o,a,s=this.findTargetInfo(t,e);if(t.range=t.range||[],s&&!0!==s){t.panelId=s.panelId;var l=lE[t.brushType](0,s.coordSys,t.coordRange),u=t.__rangeOffset;t.range=u?hE[t.brushType](l.values,u.offset,(n=l.xyMinMax,i=u.xyMinMax,r=pE(n),o=pE(i),a=[r[0]/o[0],r[1]/o[1]],isNaN(a[0])&&(a[0]=1),isNaN(a[1])&&(a[1]=1),a)):l.values}}),this)},t.prototype.makePanelOpts=function(t,e){return O(this._targetInfoList,(function(n){var i=n.getPanelRect();return{panelId:n.panelId,defaultBrushType:e?e(n):null,clipPath:kD(i),isTargetByCursor:OD(i,t,n.coordSysModel),getLinearBrushOtherExtent:PD(i)}}))},t.prototype.controlSeries=function(t,e,n){var i=this.findTargetInfo(t,n);return!0===i||i&&A(i.coordSyses,e.coordinateSystem)>=0},t.prototype.findTargetInfo=function(t,e){for(var n=this._targetInfoList,i=rE(e,t),r=0;r<n.length;r++){var o=n[r],a=t.panelId;if(a){if(o.panelId===a)return o}else for(var s=0;s<aE.length;s++)if(aE[s](i,o))return o}return!0},t}();function iE(t){return t[0]>t[1]&&t.reverse(),t}function rE(t,e){return Pr(t,e,{includeMainTypes:eE})}var oE={grid:function(t,e){var n=t.xAxisModels,i=t.yAxisModels,r=t.gridModels,o=ht(),a={},s={};(n||i||r)&&(P(n,(function(t){var e=t.axis.grid.model;o.set(e.id,e),a[e.id]=!0})),P(i,(function(t){var e=t.axis.grid.model;o.set(e.id,e),s[e.id]=!0})),P(r,(function(t){o.set(t.id,t),a[t.id]=!0,s[t.id]=!0})),o.each((function(t){var r=t.coordinateSystem,o=[];P(r.getCartesians(),(function(t,e){(A(n,t.getAxis("x").model)>=0||A(i,t.getAxis("y").model)>=0)&&o.push(t)})),e.push({panelId:"grid--"+t.id,gridModel:t,coordSysModel:t,coordSys:o[0],coordSyses:o,getPanelRect:sE.grid,xAxisDeclared:a[t.id],yAxisDeclared:s[t.id]})})))},geo:function(t,e){P(t.geoModels,(function(t){var n=t.coordinateSystem;e.push({panelId:"geo--"+t.id,geoModel:t,coordSysModel:t,coordSys:n,coordSyses:[n],getPanelRect:sE.geo})}))}},aE=[function(t,e){var n=t.xAxisModel,i=t.yAxisModel,r=t.gridModel;return!r&&n&&(r=n.axis.grid.model),!r&&i&&(r=i.axis.grid.model),r&&r===e.gridModel},function(t,e){var n=t.geoModel;return n&&n===e.geoModel}],sE={grid:function(){return this.coordSys.master.getRect().clone()},geo:function(){var t=this.coordSys,e=t.getBoundingRect().clone();return e.applyTransform(Xu(t)),e}},lE={lineX:V(uE,0),lineY:V(uE,1),rect:function(t,e,n){var i=e[tE[t]]([n[0][0],n[1][0]]),r=e[tE[t]]([n[0][1],n[1][1]]),o=[iE([i[0],r[0]]),iE([i[1],r[1]])];return{values:o,xyMinMax:o}},polygon:function(t,e,n){var i=[[1/0,-1/0],[1/0,-1/0]];return{values:O(n,(function(n){var r=e[tE[t]](n);return i[0][0]=Math.min(i[0][0],r[0]),i[1][0]=Math.min(i[1][0],r[1]),i[0][1]=Math.max(i[0][1],r[0]),i[1][1]=Math.max(i[1][1],r[1]),r})),xyMinMax:i}}};function uE(t,e,n,i){var r=n.getAxis(["x","y"][t]),o=iE(O([0,1],(function(t){return e?r.coordToData(r.toLocalCoord(i[t])):r.toGlobalCoord(r.dataToCoord(i[t]))}))),a=[];return a[t]=o,a[1-t]=[NaN,NaN],{values:o,xyMinMax:a}}var hE={lineX:V(cE,0),lineY:V(cE,1),rect:function(t,e,n){return[[t[0][0]-n[0]*e[0][0],t[0][1]-n[0]*e[0][1]],[t[1][0]-n[1]*e[1][0],t[1][1]-n[1]*e[1][1]]]},polygon:function(t,e,n){return O(t,(function(t,i){return[t[0]-n[0]*e[i][0],t[1]-n[1]*e[i][1]]}))}};function cE(t,e,n,i){return[e[0]-i[t]*n[0],e[1]-i[t]*n[1]]}function pE(t){return t?[t[0][1]-t[0][0],t[1][1]-t[1][0]]:[NaN,NaN]}var dE,fE,gE=P,yE=mr+"toolbox-dataZoom_",vE=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.render=function(t,e,n,i){this._brushController||(this._brushController=new tD(n.getZr()),this._brushController.on("brush",B(this._onBrush,this)).mount()),function(t,e,n,i,r){var o=n._isZoomActive;i&&"takeGlobalCursor"===i.type&&(o="dataZoomSelect"===i.key&&i.dataZoomSelectActive);n._isZoomActive=o,t.setIconStatus("zoom",o?"emphasis":"normal");var a=new nE(_E(t),e,{include:["grid"]}).makePanelOpts(r,(function(t){return t.xAxisDeclared&&!t.yAxisDeclared?"lineX":!t.xAxisDeclared&&t.yAxisDeclared?"lineY":"rect"}));n._brushController.setPanels(a).enableBrush(!(!o||!a.length)&&{brushType:"auto",brushStyle:t.getModel("brushStyle").getItemStyle()})}(t,e,this,i,n),function(t,e){t.setIconStatus("back",function(t){return JN(t).length}(e)>1?"emphasis":"normal")}(t,e)},e.prototype.onclick=function(t,e,n){mE[n].call(this)},e.prototype.remove=function(t,e){this._brushController&&this._brushController.unmount()},e.prototype.dispose=function(t,e){this._brushController&&this._brushController.dispose()},e.prototype._onBrush=function(t){var e=t.areas;if(t.isEnd&&e.length){var n={},i=this.ecModel;this._brushController.updateCovers([]),new nE(_E(this.model),i,{include:["grid"]}).matchOutputRanges(e,i,(function(t,e,n){if("cartesian2d"===n.type){var i=t.brushType;"rect"===i?(r("x",n,e[0]),r("y",n,e[1])):r({lineX:"x",lineY:"y"}[i],n,e)}})),function(t,e){var n=JN(t);KN(e,(function(e,i){for(var r=n.length-1;r>=0&&!n[r][i];r--);if(r<0){var o=t.queryComponents({mainType:"dataZoom",subType:"select",id:i})[0];if(o){var a=o.getPercentRange();n[0][i]={dataZoomId:i,start:a[0],end:a[1]}}}})),n.push(e)}(i,n),this._dispatchZoomAction(n)}function r(t,e,r){var o=e.getAxis(t),a=o.model,s=function(t,e,n){var i;return n.eachComponent({mainType:"dataZoom",subType:"select"},(function(n){n.getAxisModel(t,e.componentIndex)&&(i=n)})),i}(t,a,i),l=s.findRepresentativeAxisProxy(a).getMinMaxSpan();null==l.minValueSpan&&null==l.maxValueSpan||(r=DA(0,r.slice(),o.scale.getExtent(),0,l.minValueSpan,l.maxValueSpan)),s&&(n[s.id]={dataZoomId:s.id,startValue:r[0],endValue:r[1]})}},e.prototype._dispatchZoomAction=function(t){var e=[];gE(t,(function(t,n){e.push(w(t))})),e.length&&this.api.dispatchAction({type:"dataZoom",from:this.uid,batch:e})},e.getDefaultOption=function(t){return{show:!0,filterMode:"filter",icon:{zoom:"M0,13.5h26.9 M13.5,26.9V0 M32.1,13.5H58V58H13.5 V32.1",back:"M22,1.4L9.9,13.5l12.3,12.3 M10.3,13.5H54.9v44.6 H10.3v-26"},title:t.getLocale(["toolbox","dataZoom","title"]),brushStyle:{borderWidth:0,color:"rgba(210,219,238,0.2)"}}},e}(kN),mE={zoom:function(){var t=!this._isZoomActive;this.api.dispatchAction({type:"takeGlobalCursor",key:"dataZoomSelect",dataZoomSelectActive:t})},back:function(){this._dispatchZoomAction(function(t){var e=JN(t),n=e[e.length-1];e.length>1&&e.pop();var i={};return KN(n,(function(t,n){for(var r=e.length-1;r>=0;r--)if(t=e[r][n]){i[n]=t;break}})),i}(this.ecModel))}};function _E(t){var e={xAxisIndex:t.get("xAxisIndex",!0),yAxisIndex:t.get("yAxisIndex",!0),xAxisId:t.get("xAxisId",!0),yAxisId:t.get("yAxisId",!0)};return null==e.xAxisIndex&&null==e.xAxisId&&(e.xAxisIndex="all"),null==e.yAxisIndex&&null==e.yAxisId&&(e.yAxisIndex="all"),e}dE="dataZoom",fE=function(t){var e=t.getComponent("toolbox",0);if(e){var n=e.getModel(["feature","dataZoom"]),i=[],r=Pr(t,_E(n));return gE(r.xAxisModels,(function(t){return o(t,"xAxis","xAxisIndex")})),gE(r.yAxisModels,(function(t){return o(t,"yAxis","yAxisIndex")})),i}function o(t,e,r){var o=t.componentIndex,a={type:"select",$fromToolbox:!0,filterMode:n.get("filterMode",!0)||"filter",id:yE+e+o};a[r]=o,i.push(a)}},rt(null==cp.get(dE)&&fE),cp.set(dE,fE);var xE=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="tooltip",e.dependencies=["axisPointer"],e.defaultOption={zlevel:0,z:60,show:!0,showContent:!0,trigger:"item",triggerOn:"mousemove|click",alwaysShowContent:!1,displayMode:"single",renderMode:"auto",confine:null,showDelay:0,hideDelay:100,transitionDuration:.4,enterable:!1,backgroundColor:"#ffffff",shadowBlur:10,shadowColor:"rgba(0, 0, 0, .2)",shadowOffsetX:1,shadowOffsetY:2,borderRadius:4,borderWidth:1,padding:null,extraCssText:"",axisPointer:{type:"line",axis:"auto",animation:"auto",animationDurationUpdate:200,animationEasingUpdate:"exponentialOut",crossStyle:{color:"#999999",width:1,type:"dashed",textStyle:{}}},textStyle:{color:"#666666",fontSize:14}},e}(Wc);function bE(t){var e=t.get("confine");return null!=e?!!e:"richText"===t.get("renderMode")}function wE(t){if(a.domSupported)for(var e=document.documentElement.style,n=0,i=t.length;n<i;n++)if(t[n]in e)return t[n]}var SE=wE(["transform","webkitTransform","OTransform","MozTransform","msTransform"]);function ME(t,e){if(!t)return e;e=_c(e,!0);var n=t.indexOf(e);return(t=-1===n?e:"-"+t.slice(0,n)+"-"+e).toLowerCase()}function IE(t,e){var n=t.currentStyle||document.defaultView&&document.defaultView.getComputedStyle(t);return n?e?n[e]:n:null}var TE=ME(wE(["webkitTransition","transition","OTransition","MozTransition","msTransition"]),"transition"),CE=ME(SE,"transform"),AE="position:absolute;display:block;border-style:solid;white-space:nowrap;z-index:9999999;"+(a.transform3dSupported?"will-change:transform;":"");function DE(t,e,n){var i=t.toFixed(0)+"px",r=e.toFixed(0)+"px";if(!a.transformSupported)return n?"top:"+r+";left:"+i+";":[["top",r],["left",i]];var o=a.transform3dSupported,s="translate"+(o?"3d":"")+"("+i+","+r+(o?",0":"")+")";return n?"top:0;left:0;"+CE+":"+s+";":[["top",0],["left",0],[SE,s]]}function LE(t,e,n){var i=[],r=t.get("transitionDuration"),o=t.get("backgroundColor"),s=t.get("shadowBlur"),l=t.get("shadowColor"),u=t.get("shadowOffsetX"),h=t.get("shadowOffsetY"),c=t.getModel("textStyle"),p=sf(t,"html"),d=u+"px "+h+"px "+s+"px "+l;return i.push("box-shadow:"+d),e&&r&&i.push(function(t,e){var n="cubic-bezier(0.23,1,0.32,1)",i=" "+t/2+"s "+n,r="opacity"+i+",visibility"+i;return e||(i=" "+t+"s "+n,r+=a.transformSupported?","+SE+i:",left"+i+",top"+i),TE+":"+r}(r,n)),o&&(a.canvasSupported?i.push("background-color:"+o):(i.push("background-color:#"+Je(o)),i.push("filter:alpha(opacity=70)"))),P(["width","color","radius"],(function(e){var n="border-"+e,r=_c(n),o=t.get(r);null!=o&&i.push(n+":"+o+("color"===e?"":"px"))})),i.push(function(t){var e=[],n=t.get("fontSize"),i=t.getTextColor();i&&e.push("color:"+i),e.push("font:"+t.getFont()),n&&e.push("line-height:"+Math.round(3*n/2)+"px");var r=t.get("textShadowColor"),o=t.get("textShadowBlur")||0,a=t.get("textShadowOffsetX")||0,s=t.get("textShadowOffsetY")||0;return r&&o&&e.push("text-shadow:"+a+"px "+s+"px "+o+"px "+r),P(["decoration","align"],(function(n){var i=t.get(n);i&&e.push("text-"+n+":"+i)})),e.join(";")}(c)),null!=p&&i.push("padding:"+xc(p).join("px ")+"px"),i.join(";")+";"}function kE(t,e,n,i,r){var o=e&&e.painter;if(n){var a=o&&o.getViewportRoot();a&&function(t,e,n,i,r){Yt(Ut,e,i,r,!0)&&Yt(t,n,Ut[0],Ut[1])}(t,a,document.body,i,r)}else{t[0]=i,t[1]=r;var s=o&&o.getViewportRootOffset();s&&(t[0]+=s.offsetLeft,t[1]+=s.offsetTop)}t[2]=t[0]/e.getWidth(),t[3]=t[1]/e.getHeight()}var PE=function(){function t(t,e,n){if(this._show=!1,this._styleCoord=[0,0,0,0],this._enterable=!0,this._firstShow=!0,this._longHide=!0,a.wxa)return null;var i=document.createElement("div");i.domBelongToZr=!0,this.el=i;var r=this._zr=e.getZr(),o=this._appendToBody=n&&n.appendToBody;kE(this._styleCoord,r,o,e.getWidth()/2,e.getHeight()/2),o?document.body.appendChild(i):t.appendChild(i),this._container=t;var s=this;i.onmouseenter=function(){s._enterable&&(clearTimeout(s._hideTimeout),s._show=!0),s._inContent=!0},i.onmousemove=function(t){if(t=t||window.event,!s._enterable){var e=r.handler;Qt(r.painter.getViewportRoot(),t,!0),e.dispatch("mousemove",t)}},i.onmouseleave=function(){s._inContent=!1,s._enterable&&s._show&&s.hideLater(s._hideDelay)}}return t.prototype.update=function(t){var e=this._container,n=IE(e,"position"),i=e.style;"absolute"!==i.position&&"absolute"!==n&&(i.position="relative"),t.get("alwaysShowContent")&&this._moveIfResized(),this.el.className=t.get("className")||""},t.prototype.show=function(t,e){clearTimeout(this._hideTimeout),clearTimeout(this._longHideTimeout);var n=this.el,i=n.style,r=this._styleCoord;n.innerHTML?i.cssText=AE+LE(t,!this._firstShow,this._longHide)+DE(r[0],r[1],!0)+"border-color:"+Dc(e)+";"+(t.get("extraCssText")||"")+";pointer-event:"+(this._enterable?"auto":"none"):i.display="none",this._show=!0,this._firstShow=!1,this._longHide=!1},t.prototype.setContent=function(t,e,n,i,r){if(null!=t){var o=this.el;if(H(r)&&"item"===n.get("trigger")&&!bE(n)&&(t+=function(t,e,n){if(!H(n)||"inside"===n)return"";e=Dc(e);var i,r="left"===(i=n)?"right":"right"===i?"left":"top"===i?"bottom":"top",o=r+":-6px;",a=CE+":";A(["left","right"],r)>-1?(o+="top:50%",a+="translateY(-50%) rotate("+("left"===r?-225:-45)+"deg)"):(o+="left:50%",a+="translateX(-50%) rotate("+("top"===r?225:45)+"deg)");var s=e+" solid 1px;";return'<div style="'+["position:absolute;width:10px;height:10px;",o+";"+a+";","border-bottom:"+s,"border-right:"+s,"background-color:"+t+";","box-shadow:8px 8px 16px -3px #000;"].join("")+'"></div>'}(n.get("backgroundColor"),i,r)),H(t))o.innerHTML=t;else if(t){o.innerHTML="",F(t)||(t=[t]);for(var a=0;a<t.length;a++)j(t[a])&&t[a].parentNode!==o&&o.appendChild(t[a])}}},t.prototype.setEnterable=function(t){this._enterable=t},t.prototype.getSize=function(){var t=this.el;return[t.clientWidth,t.clientHeight]},t.prototype.moveTo=function(t,e){var n=this._styleCoord;if(kE(n,this._zr,this._appendToBody,t,e),null!=n[0]&&null!=n[1]){var i=this.el.style;P(DE(n[0],n[1]),(function(t){i[t[0]]=t[1]}))}},t.prototype._moveIfResized=function(){var t=this._styleCoord[2],e=this._styleCoord[3];this.moveTo(t*this._zr.getWidth(),e*this._zr.getHeight())},t.prototype.hide=function(){var t=this,e=this.el.style;e.visibility="hidden",e.opacity="0",a.transform3dSupported&&(e.willChange=""),this._show=!1,this._longHideTimeout=setTimeout((function(){return t._longHide=!0}),500)},t.prototype.hideLater=function(t){!this._show||this._inContent&&this._enterable||(t?(this._hideDelay=t,this._show=!1,this._hideTimeout=setTimeout(B(this.hide,this),t)):this.hide())},t.prototype.isShow=function(){return this._show},t.prototype.dispose=function(){this.el.parentNode.removeChild(this.el)},t.prototype.getOuterSize=function(){var t=this.el.clientWidth,e=this.el.clientHeight,n=IE(this.el);return n&&(t+=parseInt(n.borderLeftWidth,10)+parseInt(n.borderRightWidth,10),e+=parseInt(n.borderTopWidth,10)+parseInt(n.borderBottomWidth,10)),{width:t,height:e}},t}(),OE=function(){function t(t){this._show=!1,this._styleCoord=[0,0,0,0],this._enterable=!0,this._zr=t.getZr(),EE(this._styleCoord,this._zr,t.getWidth()/2,t.getHeight()/2)}return t.prototype.update=function(t){t.get("alwaysShowContent")&&this._moveIfResized()},t.prototype.show=function(){this._hideTimeout&&clearTimeout(this._hideTimeout),this.el.show(),this._show=!0},t.prototype.setContent=function(t,e,n,i,r){Y(t)&&yr(""),this.el&&this._zr.remove(this.el);var o=n.getModel("textStyle");this.el=new us({style:{rich:e.richTextStyles,text:t,lineHeight:22,backgroundColor:n.get("backgroundColor"),borderRadius:n.get("borderRadius"),borderWidth:1,borderColor:i,shadowColor:n.get("shadowColor"),shadowBlur:n.get("shadowBlur"),shadowOffsetX:n.get("shadowOffsetX"),shadowOffsetY:n.get("shadowOffsetY"),textShadowColor:o.get("textShadowColor"),textShadowBlur:o.get("textShadowBlur")||0,textShadowOffsetX:o.get("textShadowOffsetX")||0,textShadowOffsetY:o.get("textShadowOffsetY")||0,fill:n.get(["textStyle","color"]),padding:sf(n,"richText"),verticalAlign:"top",align:"left"},z:n.get("z")}),this._zr.add(this.el);var a=this;this.el.on("mouseover",(function(){a._enterable&&(clearTimeout(a._hideTimeout),a._show=!0),a._inContent=!0})),this.el.on("mouseout",(function(){a._enterable&&a._show&&a.hideLater(a._hideDelay),a._inContent=!1}))},t.prototype.setEnterable=function(t){this._enterable=t},t.prototype.getSize=function(){var t=this.el,e=this.el.getBoundingRect(),n=NE(t.style);return[e.width+n.left+n.right,e.height+n.top+n.bottom]},t.prototype.moveTo=function(t,e){var n=this.el;if(n){var i=this._styleCoord;EE(i,this._zr,t,e),t=i[0],e=i[1];var r=n.style,o=RE(r.borderWidth||0),a=NE(r);n.x=t+o+a.left,n.y=e+o+a.top,n.markRedraw()}},t.prototype._moveIfResized=function(){var t=this._styleCoord[2],e=this._styleCoord[3];this.moveTo(t*this._zr.getWidth(),e*this._zr.getHeight())},t.prototype.hide=function(){this.el&&this.el.hide(),this._show=!1},t.prototype.hideLater=function(t){!this._show||this._inContent&&this._enterable||(t?(this._hideDelay=t,this._show=!1,this._hideTimeout=setTimeout(B(this.hide,this),t)):this.hide())},t.prototype.isShow=function(){return this._show},t.prototype.getOuterSize=function(){var t=this.getSize();return{width:t[0],height:t[1]}},t.prototype.dispose=function(){this._zr.remove(this.el)},t}();function RE(t){return Math.max(0,t)}function NE(t){var e=RE(t.shadowBlur||0),n=RE(t.shadowOffsetX||0),i=RE(t.shadowOffsetY||0);return{left:RE(e-n),right:RE(e+n),top:RE(e-i),bottom:RE(e+i)}}function EE(t,e,n,i){t[0]=n,t[1]=i,t[2]=t[0]/e.getWidth(),t[3]=t[1]/e.getHeight()}var zE=B,BE=P,VE=Zi,FE=new as({shape:{x:-1,y:-1,width:2,height:2}}),GE=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.init=function(t,e){if(!a.node){var n,i=t.getComponent("tooltip"),r=i.get("renderMode");this._renderMode="auto"===(n=r)?a.domSupported?"html":"richText":n||"html",this._tooltipContent="richText"===this._renderMode?new OE(e):new PE(e.getDom(),e,{appendToBody:i.get("appendToBody",!0)})}},e.prototype.render=function(t,e,n){if(!a.node){this.group.removeAll(),this._tooltipModel=t,this._ecModel=e,this._api=n,this._alwaysShowContent=t.get("alwaysShowContent");var i=this._tooltipContent;i.update(t),i.setEnterable(t.get("enterable")),this._initGlobalListener(),this._keepShow()}},e.prototype._initGlobalListener=function(){var t=this._tooltipModel.get("triggerOn");UO("itemTooltip",this._api,zE((function(e,n,i){"none"!==t&&(t.indexOf(e)>=0?this._tryShow(n,i):"leave"===e&&this._hide(i))}),this))},e.prototype._keepShow=function(){var t=this._tooltipModel,e=this._ecModel,n=this._api;if(null!=this._lastX&&null!=this._lastY&&"none"!==t.get("triggerOn")){var i=this;clearTimeout(this._refreshUpdateTimeout),this._refreshUpdateTimeout=setTimeout((function(){!n.isDisposed()&&i.manuallyShowTip(t,e,n,{x:i._lastX,y:i._lastY,dataByCoordSys:i._lastDataByCoordSys})}))}},e.prototype.manuallyShowTip=function(t,e,n,i){if(i.from!==this.uid&&!a.node){var r=WE(i,n);this._ticket="";var o=i.dataByCoordSys,s=function(t,e,n){var i=Or(t).queryOptionMap,r=i.keys()[0];if(!r||"series"===r)return;var o,a=Er(e,r,i.get(r),{useDefault:!1,enableAll:!1,enableNone:!1}).models[0];if(!a)return;if(n.getViewOfComponentModel(a).group.traverse((function(e){var n=vs(e).tooltipConfig;if(n&&n.name===t.name)return o=e,!0})),o)return{componentMainType:r,componentIndex:a.componentIndex,el:o}}(i,e,n);if(s){var l=s.el.getBoundingRect().clone();l.applyTransform(s.el.transform),this._tryShow({offsetX:l.x+l.width/2,offsetY:l.y+l.height/2,target:s.el,position:i.position,positionDefault:"bottom"},r)}else if(i.tooltip&&null!=i.x&&null!=i.y){var u=FE;u.x=i.x,u.y=i.y,u.update(),vs(u).tooltipConfig={name:null,option:i.tooltip},this._tryShow({offsetX:i.x,offsetY:i.y,target:u},r)}else if(o)this._tryShow({offsetX:i.x,offsetY:i.y,position:i.position,dataByCoordSys:o,tooltipOption:i.tooltipOption},r);else if(null!=i.seriesIndex){if(this._manuallyAxisShowTip(t,e,n,i))return;var h=qO(i,e),c=h.point[0],p=h.point[1];null!=c&&null!=p&&this._tryShow({offsetX:c,offsetY:p,target:h.el,position:i.position,positionDefault:"bottom"},r)}else null!=i.x&&null!=i.y&&(n.dispatchAction({type:"updateAxisPointer",x:i.x,y:i.y}),this._tryShow({offsetX:i.x,offsetY:i.y,position:i.position,target:n.getZr().findHover(i.x,i.y).target},r))}},e.prototype.manuallyHideTip=function(t,e,n,i){var r=this._tooltipContent;!this._alwaysShowContent&&this._tooltipModel&&r.hideLater(this._tooltipModel.get("hideDelay")),this._lastX=this._lastY=this._lastDataByCoordSys=null,i.from!==this.uid&&this._hide(WE(i,n))},e.prototype._manuallyAxisShowTip=function(t,e,n,i){var r=i.seriesIndex,o=i.dataIndex,a=e.getComponent("axisPointer").coordSysAxesInfo;if(null!=r&&null!=o&&null!=a){var s=e.getSeriesByIndex(r);if(s)if("axis"===HE([s.getData().getItemModel(o),s,(s.coordinateSystem||{}).model],this._tooltipModel).get("trigger"))return n.dispatchAction({type:"updateAxisPointer",seriesIndex:r,dataIndex:o,position:i.position}),!0}},e.prototype._tryShow=function(t,e){var n=t.target;if(this._tooltipModel){this._lastX=t.offsetX,this._lastY=t.offsetY;var i=t.dataByCoordSys;if(i&&i.length)this._showAxisTooltip(i,t);else if(n){var r,o;this._lastDataByCoordSys=null,ey(n,(function(t){return null!=vs(t).dataIndex?(r=t,!0):null!=vs(t).tooltipConfig?(o=t,!0):void 0}),!0),r?this._showSeriesItemTooltip(t,r,e):o?this._showComponentItemTooltip(t,o,e):this._hide(e)}else this._lastDataByCoordSys=null,this._hide(e)}},e.prototype._showOrMove=function(t,e){var n=t.get("showDelay");e=B(e,this),clearTimeout(this._showTimout),n>0?this._showTimout=setTimeout(e,n):e()},e.prototype._showAxisTooltip=function(t,e){var n=this._ecModel,i=this._tooltipModel,r=[e.offsetX,e.offsetY],o=HE([e.tooltipOption],i),a=this._renderMode,s=[],l=Jd("section",{blocks:[],noHeader:!0}),u=[],h=new lf;BE(t,(function(t){BE(t.dataByAxis,(function(t){var e=n.getComponent(t.axisDim+"Axis",t.axisIndex),i=t.value;if(e&&null!=i){var r=kO(i,e.axis,n,t.seriesDataIndices,t.valueLabelOpt),o=Jd("section",{header:r,noHeader:!ot(r),sortBlocks:!0,blocks:[]});l.blocks.push(o),P(t.seriesDataIndices,(function(l){var c=n.getSeriesByIndex(l.seriesIndex),p=l.dataIndexInside,d=c.getDataParams(p);d.axisDim=t.axisDim,d.axisIndex=t.axisIndex,d.axisType=t.axisType,d.axisId=t.axisId,d.axisValue=Bx(e.axis,{value:i}),d.axisValueLabel=r,d.marker=h.makeTooltipMarker("item",Dc(d.color),a);var f=Id(c.formatTooltip(p,!0,null));f.markupFragment&&o.blocks.push(f.markupFragment),f.markupText&&u.push(f.markupText),s.push(d)}))}}))})),l.blocks.reverse(),u.reverse();var c=e.position,p=o.get("order"),d=ef(l,h,a,p,n.get("useUTC"),o.get("textStyle"));d&&u.unshift(d);var f="richText"===a?"\n\n":"<br/>",g=u.join(f);this._showOrMove(o,(function(){this._updateContentNotChangedOnAxis(t)?this._updatePosition(o,c,r[0],r[1],this._tooltipContent,s):this._showTooltipContent(o,g,s,Math.random()+"",r[0],r[1],c,null,h)}))},e.prototype._showSeriesItemTooltip=function(t,e,n){var i=this._ecModel,r=vs(e),o=r.seriesIndex,a=i.getSeriesByIndex(o),s=r.dataModel||a,l=r.dataIndex,u=r.dataType,h=s.getData(u),c=this._renderMode,p=t.positionDefault,d=HE([h.getItemModel(l),s,a&&(a.coordinateSystem||{}).model],this._tooltipModel,p?{position:p}:null),f=d.get("trigger");if(null==f||"item"===f){var g=s.getDataParams(l,u),y=new lf;g.marker=y.makeTooltipMarker("item",Dc(g.color),c);var v=Id(s.formatTooltip(l,!1,u)),m=d.get("order"),_=v.markupFragment?ef(v.markupFragment,y,c,m,i.get("useUTC"),d.get("textStyle")):v.markupText,x="item_"+s.name+"_"+l;this._showOrMove(d,(function(){this._showTooltipContent(d,_,g,x,t.offsetX,t.offsetY,t.position,t.target,y)})),n({type:"showTip",dataIndexInside:l,dataIndex:h.getRawIndex(l),seriesIndex:o,from:this.uid})}},e.prototype._showComponentItemTooltip=function(t,e,n){var i=vs(e),r=i.tooltipConfig.option;if(H(r)){r={content:r,formatter:r}}var o=[r],a=this._ecModel.getComponent(i.componentMainType,i.componentIndex);a&&o.push(a);var s=t.positionDefault,l=HE(o,this._tooltipModel,s?{position:s}:null),u=l.get("content"),h=Math.random()+"",c=new lf;this._showOrMove(l,(function(){var n=w(l.get("formatterParams")||{});this._showTooltipContent(l,u,n,h,t.offsetX,t.offsetY,t.position,e,c)})),n({type:"showTip",from:this.uid})},e.prototype._showTooltipContent=function(t,e,n,i,r,o,a,s,l){if(this._ticket="",t.get("showContent")&&t.get("show")){var u=this._tooltipContent,h=t.get("formatter");a=a||t.get("position");var c=e,p=this._getNearestPoint([r,o],n,t.get("trigger"),t.get("borderColor")).color;if(h&&H(h)){var d=t.ecModel.get("useUTC"),f=F(n)?n[0]:n;c=h,f&&f.axisType&&f.axisType.indexOf("time")>=0&&(c=ec(f.axisValue,c,d)),c=Cc(c,n,!0)}else if(G(h)){var g=zE((function(e,i){e===this._ticket&&(u.setContent(i,l,t,p,a),this._updatePosition(t,a,r,o,u,n,s))}),this);this._ticket=i,c=h(n,i,g)}u.setContent(c,l,t,p,a),u.show(t,p),this._updatePosition(t,a,r,o,u,n,s)}},e.prototype._getNearestPoint=function(t,e,n,i){return"axis"===n||F(e)?{color:i||("html"===this._renderMode?"#ffffff":"none")}:F(e)?void 0:{color:i||e.color||e.borderColor}},e.prototype._updatePosition=function(t,e,n,i,r,o,a){var s=this._api.getWidth(),l=this._api.getHeight();e=e||t.get("position");var u=r.getSize(),h=t.get("align"),c=t.get("verticalAlign"),p=a&&a.getBoundingRect().clone();if(a&&p.applyTransform(a.transform),G(e)&&(e=e([n,i],o,r.el,p,{viewSize:[s,l],contentSize:u.slice()})),F(e))n=VE(e[0],s),i=VE(e[1],l);else if(Y(e)){var d=e;d.width=u[0],d.height=u[1];var f=Ec(d,{width:s,height:l});n=f.x,i=f.y,h=null,c=null}else if(H(e)&&a){var g=function(t,e,n){var i=n[0],r=n[1],o=10,a=5,s=0,l=0,u=e.width,h=e.height;switch(t){case"inside":s=e.x+u/2-i/2,l=e.y+h/2-r/2;break;case"top":s=e.x+u/2-i/2,l=e.y-r-o;break;case"bottom":s=e.x+u/2-i/2,l=e.y+h+o;break;case"left":s=e.x-i-o-a,l=e.y+h/2-r/2;break;case"right":s=e.x+u+o+a,l=e.y+h/2-r/2}return[s,l]}(e,p,u);n=g[0],i=g[1]}else{g=function(t,e,n,i,r,o,a){var s=n.getOuterSize(),l=s.width,u=s.height;null!=o&&(t+l+o+2>i?t-=l+o:t+=o);null!=a&&(e+u+a>r?e-=u+a:e+=a);return[t,e]}(n,i,r,s,l,h?null:20,c?null:20);n=g[0],i=g[1]}if(h&&(n-=UE(h)?u[0]/2:"right"===h?u[0]:0),c&&(i-=UE(c)?u[1]/2:"bottom"===c?u[1]:0),bE(t)){g=function(t,e,n,i,r){var o=n.getOuterSize(),a=o.width,s=o.height;return t=Math.min(t+a,i)-a,e=Math.min(e+s,r)-s,t=Math.max(t,0),e=Math.max(e,0),[t,e]}(n,i,r,s,l);n=g[0],i=g[1]}r.moveTo(n,i)},e.prototype._updateContentNotChangedOnAxis=function(t){var e=this._lastDataByCoordSys,n=!!e&&e.length===t.length;return n&&BE(e,(function(e,i){var r=e.dataByAxis||[],o=(t[i]||{}).dataByAxis||[];(n=n&&r.length===o.length)&&BE(r,(function(t,e){var i=o[e]||{},r=t.seriesDataIndices||[],a=i.seriesDataIndices||[];(n=n&&t.value===i.value&&t.axisType===i.axisType&&t.axisId===i.axisId&&r.length===a.length)&&BE(r,(function(t,e){var i=a[e];n=n&&t.seriesIndex===i.seriesIndex&&t.dataIndex===i.dataIndex}))}))})),this._lastDataByCoordSys=t,!!n},e.prototype._hide=function(t){this._lastDataByCoordSys=null,t({type:"hideTip",from:this.uid})},e.prototype.dispose=function(t,e){a.node||(this._tooltipContent.dispose(),ZO("itemTooltip",e))},e.type="tooltip",e}(xf);function HE(t,e,n){var i,r=e.ecModel;n?(i=new kh(n,r,r),i=new kh(e.option,i,r)):i=e;for(var o=t.length-1;o>=0;o--){var a=t[o];a&&(a instanceof kh&&(a=a.get("tooltip",!0)),H(a)&&(a={formatter:a}),a&&(i=new kh(a,i,r)))}return i}function WE(t,e){return t.dispatchAction||B(e.dispatchAction,e)}function UE(t){return"center"===t||"middle"===t}var YE=["rect","polygon","keep","clear"];function XE(t,e){var n=_r(t?t.brush:[]);if(n.length){var i=[];P(n,(function(t){var e=t.hasOwnProperty("toolbox")?t.toolbox:[];e instanceof Array&&(i=i.concat(e))}));var r=t&&t.toolbox;F(r)&&(r=r[0]),r||(r={feature:{}},t.toolbox=[r]);var o=r.feature||(r.feature={}),a=o.brush||(o.brush={}),s=a.type||(a.type=[]);s.push.apply(s,i),function(t){var e={};P(t,(function(t){e[t]=1})),t.length=0,P(e,(function(e,n){t.push(n)}))}(s),e&&!s.length&&s.push.apply(s,YE)}}var ZE=P;function jE(t){if(t)for(var e in t)if(t.hasOwnProperty(e))return!0}function qE(t,e,n){var i={};return ZE(e,(function(e){var r,o=i[e]=((r=function(){}).prototype.__hidden=r.prototype,new r);ZE(t[e],(function(t,i){if(ST.isValidType(i)){var r={type:i,visual:t};n&&n(r,e),o[i]=new ST(r),"opacity"===i&&((r=w(r)).type="colorAlpha",o.__hidden.__alphaForOpacity=new ST(r))}}))})),i}function KE(t,e,n){var i;P(n,(function(t){e.hasOwnProperty(t)&&jE(e[t])&&(i=!0)})),i&&P(n,(function(n){e.hasOwnProperty(n)&&jE(e[n])?t[n]=w(e[n]):delete t[n]}))}var $E={lineX:JE(0),lineY:JE(1),rect:{point:function(t,e,n){return t&&n.boundingRect.contain(t[0],t[1])},rect:function(t,e,n){return t&&n.boundingRect.intersect(t)}},polygon:{point:function(t,e,n){return t&&n.boundingRect.contain(t[0],t[1])&&av(n.range,t[0],t[1])},rect:function(t,e,n){var i=n.range;if(!t||i.length<=1)return!1;var r=t.x,o=t.y,a=t.width,s=t.height,l=i[0];return!!(av(i,r,o)||av(i,r+a,o)||av(i,r,o+s)||av(i,r+a,o+s)||Rn.create(t).contain(l[0],l[1])||th(r,o,r+a,o,i)||th(r,o,r,o+s,i)||th(r+a,o,r+a,o+s,i)||th(r,o+s,r+a,o+s,i))||void 0}}};function JE(t){var e=["x","y"],n=["width","height"];return{point:function(e,n,i){if(e){var r=i.range;return QE(e[t],r)}},rect:function(i,r,o){if(i){var a=o.range,s=[i[e[t]],i[e[t]]+i[n[t]]];return s[1]<s[0]&&s.reverse(),QE(s[0],a)||QE(s[1],a)||QE(a[0],s)||QE(a[1],s)}}}}function QE(t,e){return e[0]<=t&&t<=e[1]}var tz=["inBrush","outOfBrush"],ez="__ecBrushSelect",nz="__ecInBrushSelectEvent";function iz(t){t.eachComponent({mainType:"brush"},(function(e){(e.brushTargetManager=new nE(e.option,t)).setInputRanges(e.areas,t)}))}function rz(t,e,n){var i,r,o=[];t.eachComponent({mainType:"brush"},(function(t){n&&"takeGlobalCursor"===n.type&&t.setBrushOption("brush"===n.key?n.brushOption:{brushType:!1})})),iz(t),t.eachComponent({mainType:"brush"},(function(e,n){var a={brushId:e.id,brushIndex:n,brushName:e.name,areas:w(e.areas),selected:[]};o.push(a);var s=e.option,l=s.brushLink,u=[],h=[],c=[],p=!1;n||(i=s.throttleType,r=s.throttleDelay);var d=O(e.areas,(function(t){var e=sz[t.brushType],n=T({boundingRect:e?e(t):void 0},t);return n.selectors=function(t){var e=t.brushType,n={point:function(i){return $E[e].point(i,n,t)},rect:function(i){return $E[e].rect(i,n,t)}};return n}(n),n})),f=qE(e.option,tz,(function(t){t.mappingMethod="fixed"}));function g(t){return"all"===l||!!u[t]}function y(t){return!!t.length}F(l)&&P(l,(function(t){u[t]=1})),t.eachSeries((function(n,i){var r=c[i]=[];"parallel"===n.subType?function(t,e){var n=t.coordinateSystem;p=p||n.hasAxisBrushed(),g(e)&&n.eachActiveState(t.getData(),(function(t,e){"active"===t&&(h[e]=1)}))}(n,i):function(n,i,r){if(!n.brushSelector||function(t,e){var n=t.option.seriesIndex;return null!=n&&"all"!==n&&(F(n)?A(n,e)<0:e!==n)}(e,i))return;if(P(d,(function(i){e.brushTargetManager.controlSeries(i,n,t)&&r.push(i),p=p||y(r)})),g(i)&&y(r)){var o=n.getData();o.each((function(t){az(n,r,o,t)&&(h[t]=1)}))}}(n,i,r)})),t.eachSeries((function(t,e){var n={seriesId:t.id,seriesIndex:e,seriesName:t.name,dataIndex:[]};a.selected.push(n);var i=c[e],r=t.getData(),o=g(e)?function(t){return h[t]?(n.dataIndex.push(r.getRawIndex(t)),"inBrush"):"outOfBrush"}:function(e){return az(t,i,r,e)?(n.dataIndex.push(r.getRawIndex(e)),"inBrush"):"outOfBrush"};(g(e)?p:y(i))&&function(t,e,n,i,r,o){var a,s={};function l(t){return gg(n,a,t)}function u(t,e){vg(n,a,t,e)}function h(t,h){a=null==o?t:h;var c=n.getRawDataItem(a);if(!c||!1!==c.visualMap)for(var p=i.call(r,t),d=e[p],f=s[p],g=0,y=f.length;g<y;g++){var v=f[g];d[v]&&d[v].applyVisual(t,l,u)}}P(t,(function(t){var n=ST.prepareVisualTypes(e[t]);s[t]=n})),null==o?n.each(h):n.each([o],h)}(tz,f,r,o)}))})),function(t,e,n,i,r){if(!r)return;var o=t.getZr();if(o[nz])return;o.__ecBrushSelect||(o.__ecBrushSelect=oz);Rf(o,ez,n,e)(t,i)}(e,i,r,o,n)}function oz(t,e){if(!t.isDisposed()){var n=t.getZr();n[nz]=!0,t.dispatchAction({type:"brushSelect",batch:e}),n[nz]=!1}}function az(t,e,n,i){for(var r=0,o=e.length;r<o;r++){var a=e[r];if(t.brushSelector(i,n,a.selectors,a))return!0}}var sz={rect:function(t){return lz(t.range)},polygon:function(t){for(var e,n=t.range,i=0,r=n.length;i<r;i++){e=e||[[1/0,-1/0],[1/0,-1/0]];var o=n[i];o[0]<e[0][0]&&(e[0][0]=o[0]),o[0]>e[0][1]&&(e[0][1]=o[0]),o[1]<e[1][0]&&(e[1][0]=o[1]),o[1]>e[1][1]&&(e[1][1]=o[1])}return e&&lz(e)}};function lz(t){return new Rn(t[0][0],t[1][0],t[0][1]-t[0][0],t[1][1]-t[1][0])}var uz=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.init=function(t,e){this.ecModel=t,this.api=e,this.model,(this._brushController=new tD(e.getZr())).on("brush",B(this._onBrush,this)).mount()},e.prototype.render=function(t,e,n,i){this.model=t,this._updateController(t,e,n,i)},e.prototype.updateTransform=function(t,e,n,i){iz(e),this._updateController(t,e,n,i)},e.prototype.updateVisual=function(t,e,n,i){this.updateTransform(t,e,n,i)},e.prototype.updateView=function(t,e,n,i){this._updateController(t,e,n,i)},e.prototype._updateController=function(t,e,n,i){(!i||i.$from!==t.id)&&this._brushController.setPanels(t.brushTargetManager.makePanelOpts(n)).enableBrush(t.brushOption).updateCovers(t.areas.slice())},e.prototype.dispose=function(){this._brushController.dispose()},e.prototype._onBrush=function(t){var e=this.model.id,n=this.model.brushTargetManager.setOutputRanges(t.areas,this.ecModel);(!t.isEnd||t.removeOnClick)&&this.api.dispatchAction({type:"brush",brushId:e,areas:w(n),$from:e}),t.isEnd&&this.api.dispatchAction({type:"brushEnd",brushId:e,areas:w(n),$from:e})},e.type="brush",e}(xf),hz=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.areas=[],n.brushOption={},n}return n(e,t),e.prototype.optionUpdated=function(t,e){var n=this.option;!e&&KE(n,t,["inBrush","outOfBrush"]);var i=n.inBrush=n.inBrush||{};n.outOfBrush=n.outOfBrush||{color:"#dddddd"},i.hasOwnProperty("liftZ")||(i.liftZ=5)},e.prototype.setAreas=function(t){t&&(this.areas=O(t,(function(t){return cz(this.option,t)}),this))},e.prototype.setBrushOption=function(t){this.brushOption=cz(this.option,t),this.brushType=this.brushOption.brushType},e.type="brush",e.dependencies=["geo","grid","xAxis","yAxis","parallel","series"],e.defaultOption={seriesIndex:"all",brushType:"rect",brushMode:"single",transformable:!0,brushStyle:{borderWidth:1,color:"rgba(210,219,238,0.3)",borderColor:"#D2DBEE"},throttleType:"fixRate",throttleDelay:0,removeOnClick:!0,z:1e4},e}(Wc);function cz(t,e){return S({brushType:t.brushType,brushMode:t.brushMode,transformable:t.transformable,brushStyle:new kh(t.brushStyle).getItemStyle(),removeOnClick:t.removeOnClick,z:t.z},e,!0)}var pz=["rect","polygon","lineX","lineY","keep","clear"],dz=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.render=function(t,e,n){var i,r,o;e.eachComponent({mainType:"brush"},(function(t){i=t.brushType,r=t.brushOption.brushMode||"single",o=o||!!t.areas.length})),this._brushType=i,this._brushMode=r,P(t.get("type",!0),(function(e){t.setIconStatus(e,("keep"===e?"multiple"===r:"clear"===e?o:e===i)?"emphasis":"normal")}))},e.prototype.updateView=function(t,e,n){this.render(t,e,n)},e.prototype.getIcons=function(){var t=this.model,e=t.get("icon",!0),n={};return P(t.get("type",!0),(function(t){e[t]&&(n[t]=e[t])})),n},e.prototype.onclick=function(t,e,n){var i=this._brushType,r=this._brushMode;"clear"===n?(e.dispatchAction({type:"axisAreaSelect",intervals:[]}),e.dispatchAction({type:"brush",command:"clear",areas:[]})):e.dispatchAction({type:"takeGlobalCursor",key:"brush",brushOption:{brushType:"keep"===n?i:i!==n&&n,brushMode:"keep"===n?"multiple"===r?"single":"multiple":r}})},e.getDefaultOption=function(t){return{show:!0,type:pz.slice(),icon:{rect:"M7.3,34.7 M0.4,10V-0.2h9.8 M89.6,10V-0.2h-9.8 M0.4,60v10.2h9.8 M89.6,60v10.2h-9.8 M12.3,22.4V10.5h13.1 M33.6,10.5h7.8 M49.1,10.5h7.8 M77.5,22.4V10.5h-13 M12.3,31.1v8.2 M77.7,31.1v8.2 M12.3,47.6v11.9h13.1 M33.6,59.5h7.6 M49.1,59.5 h7.7 M77.5,47.6v11.9h-13",polygon:"M55.2,34.9c1.7,0,3.1,1.4,3.1,3.1s-1.4,3.1-3.1,3.1 s-3.1-1.4-3.1-3.1S53.5,34.9,55.2,34.9z M50.4,51c1.7,0,3.1,1.4,3.1,3.1c0,1.7-1.4,3.1-3.1,3.1c-1.7,0-3.1-1.4-3.1-3.1 C47.3,52.4,48.7,51,50.4,51z M55.6,37.1l1.5-7.8 M60.1,13.5l1.6-8.7l-7.8,4 M59,19l-1,5.3 M24,16.1l6.4,4.9l6.4-3.3 M48.5,11.6 l-5.9,3.1 M19.1,12.8L9.7,5.1l1.1,7.7 M13.4,29.8l1,7.3l6.6,1.6 M11.6,18.4l1,6.1 M32.8,41.9 M26.6,40.4 M27.3,40.2l6.1,1.6 M49.9,52.1l-5.6-7.6l-4.9-1.2",lineX:"M15.2,30 M19.7,15.6V1.9H29 M34.8,1.9H40.4 M55.3,15.6V1.9H45.9 M19.7,44.4V58.1H29 M34.8,58.1H40.4 M55.3,44.4 V58.1H45.9 M12.5,20.3l-9.4,9.6l9.6,9.8 M3.1,29.9h16.5 M62.5,20.3l9.4,9.6L62.3,39.7 M71.9,29.9H55.4",lineY:"M38.8,7.7 M52.7,12h13.2v9 M65.9,26.6V32 M52.7,46.3h13.2v-9 M24.9,12H11.8v9 M11.8,26.6V32 M24.9,46.3H11.8v-9 M48.2,5.1l-9.3-9l-9.4,9.2 M38.9-3.9V12 M48.2,53.3l-9.3,9l-9.4-9.2 M38.9,62.3V46.4",keep:"M4,10.5V1h10.3 M20.7,1h6.1 M33,1h6.1 M55.4,10.5V1H45.2 M4,17.3v6.6 M55.6,17.3v6.6 M4,30.5V40h10.3 M20.7,40 h6.1 M33,40h6.1 M55.4,30.5V40H45.2 M21,18.9h62.9v48.6H21V18.9z",clear:"M22,14.7l30.9,31 M52.9,14.7L22,45.7 M4.7,16.8V4.2h13.1 M26,4.2h7.8 M41.6,4.2h7.8 M70.3,16.8V4.2H57.2 M4.7,25.9v8.6 M70.3,25.9v8.6 M4.7,43.2v12.6h13.1 M26,55.8h7.8 M41.6,55.8h7.8 M70.3,43.2v12.6H57.2"},title:t.getLocale(["toolbox","brush","title"])}},e}(kN);var fz=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.layoutMode={type:"box",ignoreSize:!0},n}return n(e,t),e.type="title",e.defaultOption={zlevel:0,z:6,show:!0,text:"",target:"blank",subtext:"",subtarget:"blank",left:0,top:0,backgroundColor:"rgba(0,0,0,0)",borderColor:"#cccccc",borderWidth:0,padding:5,itemGap:10,textStyle:{fontSize:18,fontWeight:"bold",color:"#464646"},subtextStyle:{fontSize:12,color:"#6E7079"}},e}(Wc),gz=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){if(this.group.removeAll(),t.get("show")){var i=this.group,r=t.getModel("textStyle"),o=t.getModel("subtextStyle"),a=t.get("textAlign"),s=tt(t.get("textBaseline"),t.get("textVerticalAlign")),l=new us({style:hh(r,{text:t.get("text"),fill:r.getTextColor()},{disableBox:!0}),z2:10}),u=l.getBoundingRect(),h=t.get("subtext"),c=new us({style:hh(o,{text:h,fill:o.getTextColor(),y:u.height+t.get("itemGap"),verticalAlign:"top"},{disableBox:!0}),z2:10}),p=t.get("link"),d=t.get("sublink"),f=t.get("triggerEvent",!0);l.silent=!p&&!f,c.silent=!d&&!f,p&&l.on("click",(function(){Lc(p,"_"+t.get("target"))})),d&&c.on("click",(function(){Lc(d,"_"+t.get("subtarget"))})),vs(l).eventData=vs(c).eventData=f?{componentType:"title",componentIndex:t.componentIndex}:null,i.add(l),h&&i.add(c);var g=i.getBoundingRect(),y=t.getBoxLayoutParams();y.width=g.width,y.height=g.height;var v=Ec(y,{width:n.getWidth(),height:n.getHeight()},t.get("padding"));a||("middle"===(a=t.get("left")||t.get("right"))&&(a="center"),"right"===a?v.x+=v.width:"center"===a&&(v.x+=v.width/2)),s||("center"===(s=t.get("top")||t.get("bottom"))&&(s="middle"),"bottom"===s?v.y+=v.height:"middle"===s&&(v.y+=v.height/2),s=s||"top"),i.x=v.x,i.y=v.y,i.markRedraw();var m={align:a,verticalAlign:s};l.setStyle(m),c.setStyle(m),g=i.getBoundingRect();var _=v.margin,x=t.getItemStyle(["color","opacity"]);x.fill=t.get("backgroundColor");var b=new as({shape:{x:g.x-_[3],y:g.y-_[0],width:g.width+_[1]+_[3],height:g.height+_[0]+_[2],r:t.get("borderRadius")},style:x,subPixelOptimize:!0,silent:!0});i.add(b)}},e.type="title",e}(xf);var yz=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.layoutMode="box",n}return n(e,t),e.prototype.init=function(t,e,n){this.mergeDefaultAndTheme(t,n),this._initData()},e.prototype.mergeOption=function(e){t.prototype.mergeOption.apply(this,arguments),this._initData()},e.prototype.setCurrentIndex=function(t){null==t&&(t=this.option.currentIndex);var e=this._data.count();this.option.loop?t=(t%e+e)%e:(t>=e&&(t=e-1),t<0&&(t=0)),this.option.currentIndex=t},e.prototype.getCurrentIndex=function(){return this.option.currentIndex},e.prototype.isIndexMax=function(){return this.getCurrentIndex()>=this._data.count()-1},e.prototype.setPlayState=function(t){this.option.autoPlay=!!t},e.prototype.getPlayState=function(){return!!this.option.autoPlay},e.prototype._initData=function(){var t,e=this.option,n=e.data||[],i=e.axisType,r=this._names=[];"category"===i?(t=[],P(n,(function(e,n){var i,o=Tr(wr(e),"");Y(e)?(i=w(e)).value=n:i=n,t.push(i),r.push(o)}))):t=n;var o={category:"ordinal",time:"time",value:"number"}[i]||"number";(this._data=new T_([{name:"value",type:o}],this)).initData(t,r)},e.prototype.getData=function(){return this._data},e.prototype.getCategories=function(){if("category"===this.get("axisType"))return this._names.slice()},e.type="timeline",e.defaultOption={zlevel:0,z:4,show:!0,axisType:"time",realtime:!0,left:"20%",top:null,right:"20%",bottom:0,width:null,height:40,padding:5,controlPosition:"left",autoPlay:!1,rewind:!1,loop:!0,playInterval:2e3,currentIndex:0,itemStyle:{},label:{color:"#000000"},data:[]},e}(Wc),vz=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="timeline.slider",e.defaultOption=Rh(yz.defaultOption,{backgroundColor:"rgba(0,0,0,0)",borderColor:"#cccccc",borderWidth:0,orient:"horizontal",inverse:!1,tooltip:{trigger:"item"},symbol:"circle",symbolSize:12,lineStyle:{show:!0,width:2,color:"#DAE1F5"},label:{position:"auto",show:!0,interval:"auto",rotate:0,color:"#A4B1D7"},itemStyle:{color:"#A4B1D7",borderWidth:1},checkpointStyle:{symbol:"circle",symbolSize:15,color:"#316bf3",borderColor:"#ffffff",borderWidth:2,shadowBlur:2,shadowOffsetX:1,shadowOffsetY:1,shadowColor:"rgba(0, 0, 0, 0.3)",animation:!0,animationDuration:300,animationEasing:"quinticInOut"},controlStyle:{show:!0,showPlayBtn:!0,showPrevBtn:!0,showNextBtn:!0,itemSize:24,itemGap:12,position:"left",playIcon:"path://M31.6,53C17.5,53,6,41.5,6,27.4S17.5,1.8,31.6,1.8C45.7,1.8,57.2,13.3,57.2,27.4S45.7,53,31.6,53z M31.6,3.3 C18.4,3.3,7.5,14.1,7.5,27.4c0,13.3,10.8,24.1,24.1,24.1C44.9,51.5,55.7,40.7,55.7,27.4C55.7,14.1,44.9,3.3,31.6,3.3z M24.9,21.3 c0-2.2,1.6-3.1,3.5-2l10.5,6.1c1.899,1.1,1.899,2.9,0,4l-10.5,6.1c-1.9,1.1-3.5,0.2-3.5-2V21.3z",stopIcon:"path://M30.9,53.2C16.8,53.2,5.3,41.7,5.3,27.6S16.8,2,30.9,2C45,2,56.4,13.5,56.4,27.6S45,53.2,30.9,53.2z M30.9,3.5C17.6,3.5,6.8,14.4,6.8,27.6c0,13.3,10.8,24.1,24.101,24.1C44.2,51.7,55,40.9,55,27.6C54.9,14.4,44.1,3.5,30.9,3.5z M36.9,35.8c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H36c0.5,0,0.9,0.4,0.9,1V35.8z M27.8,35.8 c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H27c0.5,0,0.9,0.4,0.9,1L27.8,35.8L27.8,35.8z",nextIcon:"M2,18.5A1.52,1.52,0,0,1,.92,18a1.49,1.49,0,0,1,0-2.12L7.81,9.36,1,3.11A1.5,1.5,0,1,1,3,.89l8,7.34a1.48,1.48,0,0,1,.49,1.09,1.51,1.51,0,0,1-.46,1.1L3,18.08A1.5,1.5,0,0,1,2,18.5Z",prevIcon:"M10,.5A1.52,1.52,0,0,1,11.08,1a1.49,1.49,0,0,1,0,2.12L4.19,9.64,11,15.89a1.5,1.5,0,1,1-2,2.22L1,10.77A1.48,1.48,0,0,1,.5,9.68,1.51,1.51,0,0,1,1,8.58L9,.92A1.5,1.5,0,0,1,10,.5Z",prevBtnSize:18,nextBtnSize:18,color:"#A4B1D7",borderColor:"#A4B1D7",borderWidth:1},emphasis:{label:{show:!0,color:"#6f778d"},itemStyle:{color:"#316BF3"},controlStyle:{color:"#316BF3",borderColor:"#316BF3",borderWidth:2}},progress:{lineStyle:{color:"#316BF3"},itemStyle:{color:"#316BF3"},label:{color:"#6f778d"}},data:[]}),e}(yz);L(vz,Md.prototype);var mz=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="timeline",e}(xf),_z=function(t){function e(e,n,i,r){var o=t.call(this,e,n,i)||this;return o.type=r||"value",o}return n(e,t),e.prototype.getLabelModel=function(){return this.model.getModel("label")},e.prototype.isHorizontal=function(){return"horizontal"===this.model.get("orient")},e}(sb),xz=Math.PI,bz=Lr(),wz=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.init=function(t,e){this.api=e},e.prototype.render=function(t,e,n){if(this.model=t,this.api=n,this.ecModel=e,this.group.removeAll(),t.get("show",!0)){var i=this._layout(t,n),r=this._createGroup("_mainGroup"),o=this._createGroup("_labelGroup"),a=this._axis=this._createAxis(i,t);t.formatTooltip=function(t){return Jd("nameValue",{noName:!0,value:a.scale.getLabel({value:t})})},P(["AxisLine","AxisTick","Control","CurrentPointer"],(function(e){this["_render"+e](i,r,a,t)}),this),this._renderAxisLabel(i,o,a,t),this._position(i,t)}this._doPlayStop(),this._updateTicksStatus()},e.prototype.remove=function(){this._clearTimer(),this.group.removeAll()},e.prototype.dispose=function(){this._clearTimer()},e.prototype._layout=function(t,e){var n,i,r,o,a=t.get(["label","position"]),s=t.get("orient"),l=function(t,e){return Ec(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()},t.get("padding"))}(t,e),u={horizontal:"center",vertical:(n=null==a||"auto"===a?"horizontal"===s?l.y+l.height/2<e.getHeight()/2?"-":"+":l.x+l.width/2<e.getWidth()/2?"+":"-":H(a)?{horizontal:{top:"-",bottom:"+"},vertical:{left:"-",right:"+"}}[s][a]:a)>=0||"+"===n?"left":"right"},h={horizontal:n>=0||"+"===n?"top":"bottom",vertical:"middle"},c={horizontal:0,vertical:xz/2},p="vertical"===s?l.height:l.width,d=t.getModel("controlStyle"),f=d.get("show",!0),g=f?d.get("itemSize"):0,y=f?d.get("itemGap"):0,v=g+y,m=t.get(["label","rotate"])||0;m=m*xz/180;var _=d.get("position",!0),x=f&&d.get("showPlayBtn",!0),b=f&&d.get("showPrevBtn",!0),w=f&&d.get("showNextBtn",!0),S=0,M=p;"left"===_||"bottom"===_?(x&&(i=[0,0],S+=v),b&&(r=[S,0],S+=v),w&&(o=[M-g,0],M-=v)):(x&&(i=[M-g,0],M-=v),b&&(r=[0,0],S+=v),w&&(o=[M-g,0],M-=v));var I=[S,M];return t.get("inverse")&&I.reverse(),{viewRect:l,mainLength:p,orient:s,rotation:c[s],labelRotation:m,labelPosOpt:n,labelAlign:t.get(["label","align"])||u[s],labelBaseline:t.get(["label","verticalAlign"])||t.get(["label","baseline"])||h[s],playPosition:i,prevBtnPosition:r,nextBtnPosition:o,axisExtent:I,controlSize:g,controlGap:y}},e.prototype._position=function(t,e){var n=this._mainGroup,i=this._labelGroup,r=t.viewRect;if("vertical"===t.orient){var o=[1,0,0,1,0,0],a=r.x,s=r.y+r.height;me(o,o,[-a,-s]),_e(o,o,-xz/2),me(o,o,[a,s]),(r=r.clone()).applyTransform(o)}var l=y(r),u=y(n.getBoundingRect()),h=y(i.getBoundingRect()),c=[n.x,n.y],p=[i.x,i.y];p[0]=c[0]=l[0][0];var d,f=t.labelPosOpt;null==f||H(f)?(v(c,u,l,1,d="+"===f?0:1),v(p,h,l,1,1-d)):(v(c,u,l,1,d=f>=0?0:1),p[1]=c[1]+f);function g(t){t.originX=l[0][0]-t.x,t.originY=l[1][0]-t.y}function y(t){return[[t.x,t.x+t.width],[t.y,t.y+t.height]]}function v(t,e,n,i,r){t[i]+=n[i][r]-e[i][r]}n.setPosition(c),i.setPosition(p),n.rotation=i.rotation=t.rotation,g(n),g(i)},e.prototype._createAxis=function(t,e){var n=e.getData(),i=e.get("axisType"),r=function(t,e){if(e=e||t.get("type"))switch(e){case"category":return new Z_({ordinalMeta:t.getCategories(),extent:[1/0,-1/0]});case"time":return new ux({locale:t.ecModel.getLocaleModel(),useUTC:t.ecModel.get("useUTC")});default:return new q_}}(e,i);r.getTicks=function(){return n.mapArray(["value"],(function(t){return{value:t}}))};var o=n.getDataExtent("value");r.setExtent(o[0],o[1]),r.niceTicks();var a=new _z("value",r,t.axisExtent,i);return a.model=e,a},e.prototype._createGroup=function(t){var e=this[t]=new zi;return this.group.add(e),e},e.prototype._renderAxisLine=function(t,e,n,i){var r=n.getExtent();if(i.get(["lineStyle","show"])){var o=new su({shape:{x1:r[0],y1:0,x2:r[1],y2:0},style:I({lineCap:"round"},i.getModel("lineStyle").getLineStyle()),silent:!0,z2:1});e.add(o);var a=this._progressLine=new su({shape:{x1:r[0],x2:this._currentPointer?this._currentPointer.x:r[0],y1:0,y2:0},style:T({lineCap:"round",lineWidth:o.style.lineWidth},i.getModel(["progress","lineStyle"]).getLineStyle()),silent:!0,z2:1});e.add(a)}},e.prototype._renderAxisTick=function(t,e,n,i){var r=this,o=i.getData(),a=n.scale.getTicks();this._tickSymbols=[],P(a,(function(t){var a=n.dataToCoord(t.value),s=o.getItemModel(t.value),l=s.getModel("itemStyle"),u=s.getModel(["emphasis","itemStyle"]),h=s.getModel(["progress","itemStyle"]),c={x:a,y:0,onclick:B(r._changeTimeline,r,t.value)},p=Sz(s,l,e,c);p.ensureState("emphasis").style=u.getItemStyle(),p.ensureState("progress").style=h.getItemStyle(),ol(p);var d=vs(p);s.get("tooltip")?(d.dataIndex=t.value,d.dataModel=i):d.dataIndex=d.dataModel=null,r._tickSymbols.push(p)}))},e.prototype._renderAxisLabel=function(t,e,n,i){var r=this;if(n.getLabelModel().get("show")){var o=i.getData(),a=n.getViewLabels();this._tickLabels=[],P(a,(function(i){var a=i.tickValue,s=o.getItemModel(a),l=s.getModel("label"),u=s.getModel(["emphasis","label"]),h=s.getModel(["progress","label"]),c=n.dataToCoord(i.tickValue),p=new us({x:c,y:0,rotation:t.labelRotation-t.rotation,onclick:B(r._changeTimeline,r,a),silent:!1,style:hh(l,{text:i.formattedLabel,align:t.labelAlign,verticalAlign:t.labelBaseline})});p.ensureState("emphasis").style=hh(u),p.ensureState("progress").style=hh(h),e.add(p),ol(p),bz(p).dataIndex=a,r._tickLabels.push(p)}))}},e.prototype._renderControl=function(t,e,n,i){var r=t.controlSize,o=t.rotation,a=i.getModel("controlStyle").getItemStyle(),s=i.getModel(["emphasis","controlStyle"]).getItemStyle(),l=i.getPlayState(),u=i.get("inverse",!0);function h(t,n,l,u){if(t){var h=Un(tt(i.get(["controlStyle",n+"BtnSize"]),r),r),c=function(t,e,n,i){var r=i.style,o=Qu(t.get(["controlStyle",e]),i||{},new Rn(n[0],n[1],n[2],n[3]));r&&o.setStyle(r);return o}(i,n+"Icon",[0,-h/2,h,h],{x:t[0],y:t[1],originX:r/2,originY:0,rotation:u?-o:0,rectHover:!0,style:a,onclick:l});c.ensureState("emphasis").style=s,e.add(c),ol(c)}}h(t.nextBtnPosition,"next",B(this._changeTimeline,this,u?"-":"+")),h(t.prevBtnPosition,"prev",B(this._changeTimeline,this,u?"+":"-")),h(t.playPosition,l?"stop":"play",B(this._handlePlayClick,this,!l),!0)},e.prototype._renderCurrentPointer=function(t,e,n,i){var r=i.getData(),o=i.getCurrentIndex(),a=r.getItemModel(o).getModel("checkpointStyle"),s=this,l={onCreate:function(t){t.draggable=!0,t.drift=B(s._handlePointerDrag,s),t.ondragend=B(s._handlePointerDragend,s),Mz(t,s._progressLine,o,n,i,!0)},onUpdate:function(t){Mz(t,s._progressLine,o,n,i)}};this._currentPointer=Sz(a,a,this._mainGroup,{},this._currentPointer,l)},e.prototype._handlePlayClick=function(t){this._clearTimer(),this.api.dispatchAction({type:"timelinePlayChange",playState:t,from:this.uid})},e.prototype._handlePointerDrag=function(t,e,n){this._clearTimer(),this._pointerChangeTimeline([n.offsetX,n.offsetY])},e.prototype._handlePointerDragend=function(t){this._pointerChangeTimeline([t.offsetX,t.offsetY],!0)},e.prototype._pointerChangeTimeline=function(t,e){var n=this._toAxisCoord(t)[0],i=qi(this._axis.getExtent().slice());n>i[1]&&(n=i[1]),n<i[0]&&(n=i[0]),this._currentPointer.x=n,this._currentPointer.markRedraw(),this._progressLine.shape.x2=n,this._progressLine.dirty();var r=this._findNearestTick(n),o=this.model;(e||r!==o.getCurrentIndex()&&o.get("realtime"))&&this._changeTimeline(r)},e.prototype._doPlayStop=function(){var t=this;this._clearTimer(),this.model.getPlayState()&&(this._timer=setTimeout((function(){var e=t.model;t._changeTimeline(e.getCurrentIndex()+(e.get("rewind",!0)?-1:1))}),this.model.get("playInterval")))},e.prototype._toAxisCoord=function(t){return Zu(t,this._mainGroup.getLocalTransform(),!0)},e.prototype._findNearestTick=function(t){var e,n=this.model.getData(),i=1/0,r=this._axis;return n.each(["value"],(function(n,o){var a=r.dataToCoord(n),s=Math.abs(a-t);s<i&&(i=s,e=o)})),e},e.prototype._clearTimer=function(){this._timer&&(clearTimeout(this._timer),this._timer=null)},e.prototype._changeTimeline=function(t){var e=this.model.getCurrentIndex();"+"===t?t=e+1:"-"===t&&(t=e-1),this.api.dispatchAction({type:"timelineChange",currentIndex:t,from:this.uid})},e.prototype._updateTicksStatus=function(){var t=this.model.getCurrentIndex(),e=this._tickSymbols,n=this._tickLabels;if(e)for(var i=0;i<e.length;i++)e&&e[i]&&e[i].toggleState("progress",i<t);if(n)for(i=0;i<n.length;i++)n&&n[i]&&n[i].toggleState("progress",bz(n[i]).dataIndex<=t)},e.type="timeline.slider",e}(mz);function Sz(t,e,n,i,r,o){var a=e.get("color");r?(r.setColor(a),n.add(r),o&&o.onUpdate(r)):((r=py(t.get("symbol"),-1,-1,2,2,a)).setStyle("strokeNoScale",!0),n.add(r),o&&o.onCreate(r));var s=e.getItemStyle(["color"]);r.setStyle(s),i=S({rectHover:!0,z2:100},i,!0);var l=t.get("symbolSize");l=l instanceof Array?l.slice():[+l,+l],i.scaleX=l[0]/2,i.scaleY=l[1]/2;var u=t.get("symbolOffset");u&&(i.x=i.x||0,i.y=i.y||0,i.x+=Zi(u[0],l[0]),i.y+=Zi(u[1],l[1]));var h=t.get("symbolRotate");return i.rotation=(h||0)*Math.PI/180||0,r.attr(i),r.updateTransform(),r}function Mz(t,e,n,i,r,o){if(!t.dragging){var a=r.getModel("checkpointStyle"),s=i.dataToCoord(r.getData().get("value",n));if(o||!a.get("animation",!0))t.attr({x:s,y:0}),e&&e.attr({shape:{x2:s}});else{var l={duration:a.get("animationDuration",!0),easing:a.get("animationEasing",!0)};t.stopAnimation(null,!0),t.animateTo({x:s,y:0},l),e&&e.animateTo({shape:{x2:s}},l)}}}function Iz(t){var e=t&&t.timeline;F(e)||(e=e?[e]:[]),P(e,(function(t){t&&function(t){var e=t.type,n={number:"value",time:"time"};n[e]&&(t.axisType=n[e],delete t.type);if(Tz(t),Cz(t,"controlPosition")){var i=t.controlStyle||(t.controlStyle={});Cz(i,"position")||(i.position=t.controlPosition),"none"!==i.position||Cz(i,"show")||(i.show=!1,delete i.position),delete t.controlPosition}P(t.data||[],(function(t){Y(t)&&!F(t)&&(!Cz(t,"value")&&Cz(t,"name")&&(t.value=t.name),Tz(t))}))}(t)}))}function Tz(t){var e=t.itemStyle||(t.itemStyle={}),n=e.emphasis||(e.emphasis={}),i=t.label||t.label||{},r=i.normal||(i.normal={}),o={normal:1,emphasis:1};P(i,(function(t,e){o[e]||Cz(r,e)||(r[e]=t)})),n.label&&!Cz(i,"emphasis")&&(i.emphasis=n.label,delete n.label)}function Cz(t,e){return t.hasOwnProperty(e)}function Az(t,e){if(!t)return!1;for(var n=F(t)?t:[t],i=0;i<n.length;i++)if(n[i]&&n[i][e])return!0;return!1}function Dz(t){xr(t,"label",["show"])}var Lz=Lr(),kz=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.createdBySelf=!1,n}return n(e,t),e.prototype.init=function(t,e,n){this.mergeDefaultAndTheme(t,n),this._mergeOption(t,n,!1,!0)},e.prototype.isAnimationEnabled=function(){if(a.node)return!1;var t=this.__hostSeries;return this.getShallow("animation")&&t&&t.isAnimationEnabled()},e.prototype.mergeOption=function(t,e){this._mergeOption(t,e,!1,!1)},e.prototype._mergeOption=function(t,e,n,i){var r=this.mainType;n||e.eachSeries((function(t){var n=t.get(this.mainType,!0),o=Lz(t)[r];n&&n.data?(o?o._mergeOption(n,e,!0):(i&&Dz(n),P(n.data,(function(t){t instanceof Array?(Dz(t[0]),Dz(t[1])):Dz(t)})),I(o=this.createMarkerModelFromSeries(n,this,e),{mainType:this.mainType,seriesIndex:t.seriesIndex,name:t.name,createdBySelf:!0}),o.__hostSeries=t),Lz(t)[r]=o):Lz(t)[r]=null}),this)},e.prototype.formatTooltip=function(t,e,n){var i=this.getData(),r=this.getRawValue(t),o=i.getName(t);return Jd("section",{header:this.name,blocks:[Jd("nameValue",{name:o,value:r,noName:!o,noValue:null==r})]})},e.prototype.getData=function(){return this._data},e.prototype.setData=function(t){this._data=t},e.getMarkerModelFromSeries=function(t,e){return Lz(t)[e]},e.type="marker",e.dependencies=["series","grid","polar","geo"],e}(Wc);L(kz,Md.prototype);var Pz=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.createMarkerModelFromSeries=function(t,n,i){return new e(t,n,i)},e.type="markPoint",e.defaultOption={zlevel:0,z:5,symbol:"pin",symbolSize:50,tooltip:{trigger:"item"},label:{show:!0,position:"inside"},itemStyle:{borderWidth:2},emphasis:{label:{show:!0}}},e}(kz);function Oz(t,e,n,i,r,o){var a=[],s=R_(e,i)?e.getCalculationInfo("stackResultDimension"):i,l=Vz(e,s,t),u=e.indicesOfNearest(s,l)[0];a[r]=e.get(n,u),a[o]=e.get(s,u);var h=e.get(i,u),c=Ki(e.get(i,u));return(c=Math.min(c,20))>=0&&(a[o]=+a[o].toFixed(c)),[a,h]}var Rz={min:V(Oz,"min"),max:V(Oz,"max"),average:V(Oz,"average"),median:V(Oz,"median")};function Nz(t,e){var n=t.getData(),i=t.coordinateSystem;if(e&&!function(t){return!isNaN(parseFloat(t.x))&&!isNaN(parseFloat(t.y))}(e)&&!F(e.coord)&&i){var r=i.dimensions,o=Ez(e,n,i,t);if((e=w(e)).type&&Rz[e.type]&&o.baseAxis&&o.valueAxis){var a=A(r,o.baseAxis.dim),s=A(r,o.valueAxis.dim),l=Rz[e.type](n,o.baseDataDim,o.valueDataDim,a,s);e.coord=l[0],e.value=l[1]}else{for(var u=[null!=e.xAxis?e.xAxis:e.radiusAxis,null!=e.yAxis?e.yAxis:e.angleAxis],h=0;h<2;h++)Rz[u[h]]&&(u[h]=Vz(n,n.mapDimension(r[h]),u[h]));e.coord=u}}return e}function Ez(t,e,n,i){var r={};return null!=t.valueIndex||null!=t.valueDim?(r.valueDataDim=null!=t.valueIndex?e.getDimension(t.valueIndex):t.valueDim,r.valueAxis=n.getAxis(function(t,e){var n=t.getData(),i=n.dimensions;e=n.getDimension(e);for(var r=0;r<i.length;r++){var o=n.getDimensionInfo(i[r]);if(o.name===e)return o.coordDim}}(i,r.valueDataDim)),r.baseAxis=n.getOtherAxis(r.valueAxis),r.baseDataDim=e.mapDimension(r.baseAxis.dim)):(r.baseAxis=i.getBaseAxis(),r.valueAxis=n.getOtherAxis(r.baseAxis),r.baseDataDim=e.mapDimension(r.baseAxis.dim),r.valueDataDim=e.mapDimension(r.valueAxis.dim)),r}function zz(t,e){return!(t&&t.containData&&e.coord&&!function(t){return!(isNaN(parseFloat(t.x))&&isNaN(parseFloat(t.y)))}(e))||t.containData(e.coord)}function Bz(t,e,n,i){return i<2?t.coord&&t.coord[i]:t.value}function Vz(t,e,n){if("average"===n){var i=0,r=0;return t.each(e,(function(t,e){isNaN(t)||(i+=t,r++)})),i/r}return"median"===n?t.getMedian(e):t.getDataExtent(e)["max"===n?1:0]}var Fz=Lr(),Gz=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.init=function(){this.markerGroupMap=ht()},e.prototype.render=function(t,e,n){var i=this,r=this.markerGroupMap;r.each((function(t){Fz(t).keep=!1})),e.eachSeries((function(t){var r=kz.getMarkerModelFromSeries(t,i.type);r&&i.renderSeries(t,r,e,n)})),r.each((function(t){!Fz(t).keep&&i.group.remove(t.group)}))},e.prototype.markKeep=function(t){Fz(t).keep=!0},e.prototype.blurSeries=function(t){var e=this;P(t,(function(t){var n=kz.getMarkerModelFromSeries(t,e.type);n&&n.getData().eachItemGraphicEl((function(t){t&&js(t)}))}))},e.type="marker",e}(xf);function Hz(t,e,n){var i=e.coordinateSystem;t.each((function(r){var o,a=t.getItemModel(r),s=Zi(a.get("x"),n.getWidth()),l=Zi(a.get("y"),n.getHeight());if(isNaN(s)||isNaN(l)){if(e.getMarkerPosition)o=e.getMarkerPosition(t.getValues(t.dimensions,r));else if(i){var u=t.get(i.dimensions[0],r),h=t.get(i.dimensions[1],r);o=i.dataToPoint([u,h])}}else o=[s,l];isNaN(s)||(o[0]=s),isNaN(l)||(o[1]=l),t.setItemLayout(r,o)}))}var Wz=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.updateTransform=function(t,e,n){e.eachSeries((function(t){var e=kz.getMarkerModelFromSeries(t,"markPoint");e&&(Hz(e.getData(),t,n),this.markerGroupMap.get(t.id).updateLayout())}),this)},e.prototype.renderSeries=function(t,e,n,i){var r=t.coordinateSystem,o=t.id,a=t.getData(),s=this.markerGroupMap,l=s.get(o)||s.set(o,new gw),u=function(t,e,n){var i;i=t?O(t&&t.dimensions,(function(t){return T({name:t},e.getData().getDimensionInfo(e.getData().mapDimension(t))||{})})):[{name:"value",type:"float"}];var r=new T_(i,n),o=O(n.get("data"),V(Nz,e));t&&(o=N(o,V(zz,t)));return r.initData(o,null,t?Bz:function(t){return t.value}),r}(r,t,e);e.setData(u),Hz(e.getData(),t,i),u.each((function(t){var n=u.getItemModel(t),i=n.getShallow("symbol"),r=n.getShallow("symbolSize"),o=n.getShallow("symbolRotate");if(G(i)||G(r)||G(o)){var s=e.getRawValue(t),l=e.getDataParams(t);G(i)&&(i=i(s,l)),G(r)&&(r=r(s,l)),G(o)&&(o=o(s,l))}var h=n.getModel("itemStyle").getItemStyle(),c=yg(a,"color");h.fill||(h.fill=c),u.setItemVisual(t,{symbol:i,symbolSize:r,symbolRotate:o,style:h})})),l.updateData(u),this.group.add(l.group),u.eachItemGraphicEl((function(t){t.traverse((function(t){vs(t).dataModel=e}))})),this.markKeep(l),l.group.silent=e.get("silent")||t.get("silent")},e.type="markPoint",e}(Gz);var Uz=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.createMarkerModelFromSeries=function(t,n,i){return new e(t,n,i)},e.type="markLine",e.defaultOption={zlevel:0,z:5,symbol:["circle","arrow"],symbolSize:[8,16],symbolOffset:0,precision:2,tooltip:{trigger:"item"},label:{show:!0,position:"end",distance:5},lineStyle:{type:"dashed"},emphasis:{label:{show:!0},lineStyle:{width:3}},animationEasing:"linear"},e}(kz),Yz=Lr(),Xz=function(t,e,n,i){var r,o=t.getData();if(F(i))r=i;else{var a=i.type;if("min"===a||"max"===a||"average"===a||"median"===a||null!=i.xAxis||null!=i.yAxis){var s=void 0,l=void 0;if(null!=i.yAxis||null!=i.xAxis)s=e.getAxis(null!=i.yAxis?"y":"x"),l=Q(i.yAxis,i.xAxis);else{var u=Ez(i,o,e,t);s=u.valueAxis,l=Vz(o,N_(o,u.valueDataDim),a)}var h="x"===s.dim?0:1,c=1-h,p=w(i),d={coord:[]};p.type=null,p.coord=[],p.coord[c]=-1/0,d.coord[c]=1/0;var f=n.get("precision");f>=0&&"number"==typeof l&&(l=+l.toFixed(Math.min(f,20))),p.coord[h]=d.coord[h]=l,r=[p,d,{type:a,valueIndex:i.valueIndex,value:l}]}else r=[]}var g=[Nz(t,r[0]),Nz(t,r[1]),I({},r[2])];return g[2].type=g[2].type||null,S(g[2],g[0]),S(g[2],g[1]),g};function Zz(t){return!isNaN(t)&&!isFinite(t)}function jz(t,e,n,i){var r=1-t,o=i.dimensions[t];return Zz(e[r])&&Zz(n[r])&&e[t]===n[t]&&i.getAxis(o).containData(e[t])}function qz(t,e){if("cartesian2d"===t.type){var n=e[0].coord,i=e[1].coord;if(n&&i&&(jz(1,n,i,t)||jz(0,n,i,t)))return!0}return zz(t,e[0])&&zz(t,e[1])}function Kz(t,e,n,i,r){var o,a=i.coordinateSystem,s=t.getItemModel(e),l=Zi(s.get("x"),r.getWidth()),u=Zi(s.get("y"),r.getHeight());if(isNaN(l)||isNaN(u)){if(i.getMarkerPosition)o=i.getMarkerPosition(t.getValues(t.dimensions,e));else{var h=a.dimensions,c=t.get(h[0],e),p=t.get(h[1],e);o=a.dataToPoint([c,p])}if(Pw(a,"cartesian2d")){var d=a.getAxis("x"),f=a.getAxis("y");h=a.dimensions;Zz(t.get(h[0],e))?o[0]=d.toGlobalCoord(d.getExtent()[n?0:1]):Zz(t.get(h[1],e))&&(o[1]=f.toGlobalCoord(f.getExtent()[n?0:1]))}isNaN(l)||(o[0]=l),isNaN(u)||(o[1]=u)}else o=[l,u];t.setItemLayout(e,o)}var $z=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.updateTransform=function(t,e,n){e.eachSeries((function(t){var e=kz.getMarkerModelFromSeries(t,"markLine");if(e){var i=e.getData(),r=Yz(e).from,o=Yz(e).to;r.each((function(e){Kz(r,e,!0,t,n),Kz(o,e,!1,t,n)})),i.each((function(t){i.setItemLayout(t,[r.getItemLayout(t),o.getItemLayout(t)])})),this.markerGroupMap.get(t.id).updateLayout()}}),this)},e.prototype.renderSeries=function(t,e,n,i){var r=t.coordinateSystem,o=t.id,a=t.getData(),s=this.markerGroupMap,l=s.get(o)||s.set(o,new NC);this.group.add(l.group);var u=function(t,e,n){var i;i=t?O(t&&t.dimensions,(function(t){return T({name:t},e.getData().getDimensionInfo(e.getData().mapDimension(t))||{})})):[{name:"value",type:"float"}];var r=new T_(i,n),o=new T_(i,n),a=new T_([],n),s=O(n.get("data"),V(Xz,e,t,n));t&&(s=N(s,V(qz,t)));var l=t?Bz:function(t){return t.value};return r.initData(O(s,(function(t){return t[0]})),null,l),o.initData(O(s,(function(t){return t[1]})),null,l),a.initData(O(s,(function(t){return t[2]}))),a.hasItemOption=!0,{from:r,to:o,line:a}}(r,t,e),h=u.from,c=u.to,p=u.line;Yz(e).from=h,Yz(e).to=c,e.setData(p);var d=e.get("symbol"),f=e.get("symbolSize"),g=e.get("symbolRotate"),y=e.get("symbolOffset");function v(e,n,r){var o=e.getItemModel(n);Kz(e,n,r,t,i);var s=o.getModel("itemStyle").getItemStyle();null==s.fill&&(s.fill=yg(a,"color")),e.setItemVisual(n,{symbolKeepAspect:o.get("symbolKeepAspect"),symbolOffset:tt(o.get("symbolOffset"),y[r?0:1]),symbolRotate:tt(o.get("symbolRotate",!0),g[r?0:1]),symbolSize:tt(o.get("symbolSize"),f[r?0:1]),symbol:tt(o.get("symbol",!0),d[r?0:1]),style:s})}F(d)||(d=[d,d]),F(f)||(f=[f,f]),F(g)||(g=[g,g]),F(y)||(y=[y,y]),u.from.each((function(t){v(h,t,!0),v(c,t,!1)})),p.each((function(t){var e=p.getItemModel(t).getModel("lineStyle").getLineStyle();p.setItemLayout(t,[h.getItemLayout(t),c.getItemLayout(t)]),null==e.stroke&&(e.stroke=h.getItemVisual(t,"style").fill),p.setItemVisual(t,{fromSymbolKeepAspect:h.getItemVisual(t,"symbolKeepAspect"),fromSymbolOffset:h.getItemVisual(t,"symbolOffset"),fromSymbolRotate:h.getItemVisual(t,"symbolRotate"),fromSymbolSize:h.getItemVisual(t,"symbolSize"),fromSymbol:h.getItemVisual(t,"symbol"),toSymbolKeepAspect:c.getItemVisual(t,"symbolKeepAspect"),toSymbolOffset:c.getItemVisual(t,"symbolOffset"),toSymbolRotate:c.getItemVisual(t,"symbolRotate"),toSymbolSize:c.getItemVisual(t,"symbolSize"),toSymbol:c.getItemVisual(t,"symbol"),style:e})})),l.updateData(p),u.line.eachItemGraphicEl((function(t,n){t.traverse((function(t){vs(t).dataModel=e}))})),this.markKeep(l),l.group.silent=e.get("silent")||t.get("silent")},e.type="markLine",e}(Gz);var Jz=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.createMarkerModelFromSeries=function(t,n,i){return new e(t,n,i)},e.type="markArea",e.defaultOption={zlevel:0,z:1,tooltip:{trigger:"item"},animation:!1,label:{show:!0,position:"top"},itemStyle:{borderWidth:0},emphasis:{label:{show:!0,position:"top"}}},e}(kz),Qz=Lr(),tB=function(t,e,n,i){var r=Nz(t,i[0]),o=Nz(t,i[1]),a=r.coord,s=o.coord;a[0]=Q(a[0],-1/0),a[1]=Q(a[1],-1/0),s[0]=Q(s[0],1/0),s[1]=Q(s[1],1/0);var l=M([{},r,o]);return l.coord=[r.coord,o.coord],l.x0=r.x,l.y0=r.y,l.x1=o.x,l.y1=o.y,l};function eB(t){return!isNaN(t)&&!isFinite(t)}function nB(t,e,n,i){var r=1-t;return eB(e[r])&&eB(n[r])}function iB(t,e){var n=e.coord[0],i=e.coord[1];return!!(Pw(t,"cartesian2d")&&n&&i&&(nB(1,n,i)||nB(0,n,i)))||(zz(t,{coord:n,x:e.x0,y:e.y0})||zz(t,{coord:i,x:e.x1,y:e.y1}))}function rB(t,e,n,i,r){var o,a=i.coordinateSystem,s=t.getItemModel(e),l=Zi(s.get(n[0]),r.getWidth()),u=Zi(s.get(n[1]),r.getHeight());if(isNaN(l)||isNaN(u)){if(i.getMarkerPosition)o=i.getMarkerPosition(t.getValues(n,e));else{var h=[d=t.get(n[0],e),f=t.get(n[1],e)];a.clampData&&a.clampData(h,h),o=a.dataToPoint(h,!0)}if(Pw(a,"cartesian2d")){var c=a.getAxis("x"),p=a.getAxis("y"),d=t.get(n[0],e),f=t.get(n[1],e);eB(d)?o[0]=c.toGlobalCoord(c.getExtent()["x0"===n[0]?0:1]):eB(f)&&(o[1]=p.toGlobalCoord(p.getExtent()["y0"===n[1]?0:1]))}isNaN(l)||(o[0]=l),isNaN(u)||(o[1]=u)}else o=[l,u];return o}var oB=[["x0","y0"],["x1","y0"],["x1","y1"],["x0","y1"]],aB=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.updateTransform=function(t,e,n){e.eachSeries((function(t){var e=kz.getMarkerModelFromSeries(t,"markArea");if(e){var i=e.getData();i.each((function(e){var r=O(oB,(function(r){return rB(i,e,r,t,n)}));i.setItemLayout(e,r),i.getItemGraphicEl(e).setShape("points",r)}))}}),this)},e.prototype.renderSeries=function(t,e,n,i){var r=t.coordinateSystem,o=t.id,a=t.getData(),s=this.markerGroupMap,l=s.get(o)||s.set(o,{group:new zi});this.group.add(l.group),this.markKeep(l);var u=function(t,e,n){var i,r,o=["x0","y0","x1","y1"];t?(i=O(t&&t.dimensions,(function(t){var n=e.getData();return T({name:t},n.getDimensionInfo(n.mapDimension(t))||{})})),r=new T_(O(o,(function(t,e){return{name:t,type:i[e%2].type}})),n)):r=new T_(i=[{name:"value",type:"float"}],n);var a=O(n.get("data"),V(tB,e,t,n));t&&(a=N(a,V(iB,t)));var s=t?function(t,e,n,i){return t.coord[Math.floor(i/2)][i%2]}:function(t){return t.value};return r.initData(a,null,s),r.hasItemOption=!0,r}(r,t,e);e.setData(u),u.each((function(e){var n=O(oB,(function(n){return rB(u,e,n,t,i)})),o=r.getAxis("x").scale,s=r.getAxis("y").scale,l=o.getExtent(),h=s.getExtent(),c=[o.parse(u.get("x0",e)),o.parse(u.get("x1",e))],p=[s.parse(u.get("y0",e)),s.parse(u.get("y1",e))];qi(c),qi(p);var d=!!(l[0]>c[1]||l[1]<c[0]||h[0]>p[1]||h[1]<p[0]);u.setItemLayout(e,{points:n,allClipped:d});var f=u.getItemModel(e).getModel("itemStyle").getItemStyle(),g=yg(a,"color");f.fill||(f.fill=g,"string"==typeof f.fill&&(f.fill=on(f.fill,.4))),f.stroke||(f.stroke=g),u.setItemVisual(e,"style",f)})),u.diff(Qz(l).data).add((function(t){var e=u.getItemLayout(t);if(!e.allClipped){var n=new nu({shape:{points:e.points}});u.setItemGraphicEl(t,n),l.group.add(n)}})).update((function(t,n){var i=Qz(l).data.getItemGraphicEl(n),r=u.getItemLayout(t);r.allClipped?i&&l.group.remove(i):(i?Fu(i,{shape:{points:r.points}},e,t):i=new nu({shape:{points:r.points}}),u.setItemGraphicEl(t,i),l.group.add(i))})).remove((function(t){var e=Qz(l).data.getItemGraphicEl(t);l.group.remove(e)})).execute(),u.eachItemGraphicEl((function(t,n){var i=u.getItemModel(n),r=u.getItemVisual(n,"style");t.useStyle(u.getItemVisual(n,"style")),lh(t,uh(i),{labelFetcher:e,labelDataIndex:n,defaultText:u.getName(n)||"",inheritColor:"string"==typeof r.fill?on(r.fill,1):"#000000"}),ul(t,i),ol(t),vs(t).dataModel=e})),Qz(l).data=u,l.group.silent=e.get("silent")||t.get("silent")},e.type="markArea",e}(Gz);var sB=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.layoutMode={type:"box",ignoreSize:!0},n}return n(e,t),e.prototype.init=function(t,e,n){this.mergeDefaultAndTheme(t,n),t.selected=t.selected||{},this._updateSelector(t)},e.prototype.mergeOption=function(e,n){t.prototype.mergeOption.call(this,e,n),this._updateSelector(e)},e.prototype._updateSelector=function(t){var e=t.selector,n=this.ecModel;!0===e&&(e=t.selector=["all","inverse"]),F(e)&&P(e,(function(t,i){H(t)&&(t={type:t}),e[i]=S(t,function(t,e){return"all"===e?{type:"all",title:t.getLocale(["legend","selector","all"])}:"inverse"===e?{type:"inverse",title:t.getLocale(["legend","selector","inverse"])}:void 0}(n,t.type))}))},e.prototype.optionUpdated=function(){this._updateData(this.ecModel);var t=this._data;if(t[0]&&"single"===this.get("selectedMode")){for(var e=!1,n=0;n<t.length;n++){var i=t[n].get("name");if(this.isSelected(i)){this.select(i),e=!0;break}}!e&&this.select(t[0].get("name"))}},e.prototype._updateData=function(t){var e=[],n=[];t.eachRawSeries((function(i){var r,o=i.name;if(n.push(o),i.legendVisualProvider){var a=i.legendVisualProvider.getAllNames();t.isSeriesFiltered(i)||(n=n.concat(a)),a.length?e=e.concat(a):r=!0}else r=!0;r&&Cr(i)&&e.push(i.name)})),this._availableNames=n;var i=O(this.get("data")||e,(function(t){return"string"!=typeof t&&"number"!=typeof t||(t={name:t}),new kh(t,this,this.ecModel)}),this);this._data=i},e.prototype.getData=function(){return this._data},e.prototype.select=function(t){var e=this.option.selected;"single"===this.get("selectedMode")&&P(this._data,(function(t){e[t.get("name")]=!1}));e[t]=!0},e.prototype.unSelect=function(t){"single"!==this.get("selectedMode")&&(this.option.selected[t]=!1)},e.prototype.toggleSelected=function(t){var e=this.option.selected;e.hasOwnProperty(t)||(e[t]=!0),this[e[t]?"unSelect":"select"](t)},e.prototype.allSelect=function(){var t=this._data,e=this.option.selected;P(t,(function(t){e[t.get("name",!0)]=!0}))},e.prototype.inverseSelect=function(){var t=this._data,e=this.option.selected;P(t,(function(t){var n=t.get("name",!0);e.hasOwnProperty(n)||(e[n]=!0),e[n]=!e[n]}))},e.prototype.isSelected=function(t){var e=this.option.selected;return!(e.hasOwnProperty(t)&&!e[t])&&A(this._availableNames,t)>=0},e.prototype.getOrient=function(){return"vertical"===this.get("orient")?{index:1,name:"vertical"}:{index:0,name:"horizontal"}},e.type="legend.plain",e.dependencies=["series"],e.defaultOption={zlevel:0,z:4,show:!0,orient:"horizontal",left:"center",top:0,align:"auto",backgroundColor:"rgba(0,0,0,0)",borderColor:"#cccccc",borderRadius:0,borderWidth:0,padding:5,itemGap:10,itemWidth:25,itemHeight:14,symbolSize:"auto",inactiveColor:"#cccccc",inactiveBorderColor:"#cccccc",inactiveBorderWidth:"auto",itemStyle:{color:"inherit",opacity:"inherit",decal:"inherit",shadowBlur:0,shadowColor:null,shadowOffsetX:0,shadowOffsetY:0,borderColor:"inherit",borderWidth:"auto",borderCap:"inherit",borderJoin:"inherit",borderDashOffset:"inherit",borderMiterLimit:"inherit"},lineStyle:{width:"auto",color:"inherit",inactiveColor:"#cccccc",inactiveWidth:2,opacity:"inherit",type:"inherit",cap:"inherit",join:"inherit",dashOffset:"inherit",miterLimit:"inherit",shadowBlur:0,shadowColor:null,shadowOffsetX:0,shadowOffsetY:0},textStyle:{color:"#333333"},selectedMode:!0,selector:!1,selectorLabel:{show:!0,borderRadius:10,padding:[3,5,3,5],fontSize:12,fontFamily:" sans-serif",color:"#666666",borderWidth:1,borderColor:"#666666"},emphasis:{selectorLabel:{show:!0,color:"#eeeeee",backgroundColor:"#666666"}},selectorPosition:"auto",selectorItemGap:7,selectorButtonGap:10,tooltip:{show:!1}},e}(Wc),lB=V,uB=P,hB=zi,cB=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.newlineDisabled=!1,n}return n(e,t),e.prototype.init=function(){this.group.add(this._contentGroup=new hB),this.group.add(this._selectorGroup=new hB),this._isFirstRender=!0},e.prototype.getContentGroup=function(){return this._contentGroup},e.prototype.getSelectorGroup=function(){return this._selectorGroup},e.prototype.render=function(t,e,n){var i=this._isFirstRender;if(this._isFirstRender=!1,this.resetInner(),t.get("show",!0)){var r=t.get("align"),o=t.get("orient");r&&"auto"!==r||(r="right"===t.get("left")&&"vertical"===o?"right":"left");var a=t.get("selector",!0),s=t.get("selectorPosition",!0);!a||s&&"auto"!==s||(s="horizontal"===o?"end":"start"),this.renderInner(r,t,e,n,a,o,s);var l=t.getBoxLayoutParams(),u={width:n.getWidth(),height:n.getHeight()},h=t.get("padding"),c=Ec(l,u,h),p=this.layoutInner(t,r,c,i,a,s),d=Ec(T({width:p.width,height:p.height},l),u,h);this.group.x=d.x-p.x,this.group.y=d.y-p.y,this.group.markRedraw(),this.group.add(this._backgroundEl=EN(p,t))}},e.prototype.resetInner=function(){this.getContentGroup().removeAll(),this._backgroundEl&&this.group.remove(this._backgroundEl),this.getSelectorGroup().removeAll()},e.prototype.renderInner=function(t,e,n,i,r,o,a){var s=this.getContentGroup(),l=ht(),u=e.get("selectedMode"),h=[];n.eachRawSeries((function(t){!t.get("legendHoverLink")&&h.push(t.id)})),uB(e.getData(),(function(r,o){var a=r.get("name");if(!this.newlineDisabled&&(""===a||"\n"===a)){var c=new hB;return c.newline=!0,void s.add(c)}var p=n.getSeriesByName(a)[0];if(!l.get(a)){if(p){var d=p.getData(),f=d.getVisual("legendLineStyle")||{},g=d.getVisual("legendSymbol"),y=d.getVisual("style");d.getVisual("symbolSize"),this._createItem(p,a,o,r,e,t,f,y,g,u).on("click",lB(pB,a,null,i,h)).on("mouseover",lB(fB,p.name,null,i,h)).on("mouseout",lB(gB,p.name,null,i,h)),l.set(a,!0)}else n.eachRawSeries((function(n){if(!l.get(a)&&n.legendVisualProvider){var s=n.legendVisualProvider;if(!s.containName(a))return;var c=s.indexOfName(a),p=s.getItemVisual(c,"style"),d=s.getItemVisual(c,"legendSymbol"),f=qe(p.fill);f&&0===f[3]&&(f[3]=.2,p.fill=an(f,"rgba")),this._createItem(n,a,o,r,e,t,{},p,d,u).on("click",lB(pB,null,a,i,h)).on("mouseover",lB(fB,null,a,i,h)).on("mouseout",lB(gB,null,a,i,h)),l.set(a,!0)}}),this);0}}),this),r&&this._createSelector(r,e,i,o,a)},e.prototype._createSelector=function(t,e,n,i,r){var o=this.getSelectorGroup();uB(t,(function(t){var i=t.type,r=new us({style:{x:0,y:0,align:"center",verticalAlign:"middle"},onclick:function(){n.dispatchAction({type:"all"===i?"legendAllSelect":"legendInverseSelect"})}});o.add(r),lh(r,{normal:e.getModel("selectorLabel"),emphasis:e.getModel(["emphasis","selectorLabel"])},{defaultText:t.title}),ol(r)}))},e.prototype._createItem=function(t,e,n,i,r,o,a,s,l,u){var h=t.visualDrawType,c=r.get("itemWidth"),p=r.get("itemHeight"),d=r.isSelected(e),f=i.get("symbolKeepAspect"),g=i.get("icon"),y=function(t,e,n,i,r,o,a){for(var s=e.getModel("itemStyle"),l=Ah.concat([["decal"]]),u={},h=0;h<l.length;++h){var c=l[h][l[h].length-1],p=l[h][0];if("inherit"===(y=s.getShallow(c)))switch(p){case"fill":u.fill=r[o];break;case"stroke":u.stroke=r[t.startsWith("empty")?"fill":"stroke"];break;case"opacity":u.opacity=("fill"===o?r:i).opacity;break;default:u[p]=r[p]}else"auto"===y&&"lineWidth"===p?u.lineWidth=r.lineWidth>0?2:0:u[p]=y}var d=e.getModel("lineStyle"),f=Ih.concat([["inactiveColor"],["inactiveWidth"]]),g={};for(h=0;h<f.length;++h){var y;c=f[h][1],p=f[h][0];"inherit"===(y=d.getShallow(c))?g[p]=i[p]:"auto"===y&&"lineWidth"===p?g.lineWidth=i.lineWidth>0?2:0:g[p]=y}if("auto"===u.fill&&(u.fill=r.fill),"auto"===u.stroke&&(u.stroke=r.fill),"auto"===g.stroke&&(g.stroke=r.fill),!a){var v=e.get("inactiveBorderWidth"),m=u[t.indexOf("empty")>-1?"fill":"stroke"];u.lineWidth="auto"===v?r.lineWidth>0&&m?2:0:u.lineWidth,u.fill=e.get("inactiveColor"),u.stroke=e.get("inactiveBorderColor"),g.stroke=n.get("inactiveColor"),g.lineWidth=n.get("inactiveWidth")}return{itemStyle:u,lineStyle:g}}(l=g||l||"roundRect",i,r.getModel("lineStyle"),a,s,h,d),v=new hB,m=i.getModel("textStyle");"function"!=typeof t.getLegendIcon||g?v.add(function(t){var e=t.symbolType||"roundRect",n=py(e,0,0,t.itemWidth,t.itemHeight,t.itemStyle.fill,t.symbolKeepAspect);n.setStyle(t.itemStyle),e.indexOf("empty")>-1&&(n.style.stroke=n.style.fill,n.style.fill="#ffffff",n.style.lineWidth=2);return n}({itemWidth:c,itemHeight:p,symbolType:l,symbolKeepAspect:f,itemStyle:y.itemStyle,lineStyle:y.lineStyle})):v.add(t.getLegendIcon({itemWidth:c,itemHeight:p,symbolType:l,symbolKeepAspect:f,itemStyle:y.itemStyle,lineStyle:y.lineStyle}));var _="left"===o?c+5:-5,x=o,b=r.get("formatter"),w=e;"string"==typeof b&&b?w=b.replace("{name}",null!=e?e:""):"function"==typeof b&&(w=b(e));var S=i.get("inactiveColor");v.add(new us({style:hh(m,{text:w,x:_,y:p/2,fill:d?m.getTextColor():S,align:x,verticalAlign:"middle"})}));var M=new as({shape:v.getBoundingRect(),invisible:!0}),I=i.getModel("tooltip");return I.get("show")&&ih({el:M,componentModel:r,itemName:e,itemTooltipOption:I.option}),v.add(M),v.eachChild((function(t){t.silent=!0})),M.silent=!u,this.getContentGroup().add(v),ol(v),v.__legendDataIndex=n,v},e.prototype.layoutInner=function(t,e,n,i,r,o){var a=this.getContentGroup(),s=this.getSelectorGroup();Nc(t.get("orient"),a,t.get("itemGap"),n.width,n.height);var l=a.getBoundingRect(),u=[-l.x,-l.y];if(s.markRedraw(),a.markRedraw(),r){Nc("horizontal",s,t.get("selectorItemGap",!0));var h=s.getBoundingRect(),c=[-h.x,-h.y],p=t.get("selectorButtonGap",!0),d=t.getOrient().index,f=0===d?"width":"height",g=0===d?"height":"width",y=0===d?"y":"x";"end"===o?c[d]+=l[f]+p:u[d]+=h[f]+p,c[1-d]+=l[g]/2-h[g]/2,s.x=c[0],s.y=c[1],a.x=u[0],a.y=u[1];var v={x:0,y:0};return v[f]=l[f]+p+h[f],v[g]=Math.max(l[g],h[g]),v[y]=Math.min(0,h[y]+c[1-d]),v}return a.x=u[0],a.y=u[1],this.group.getBoundingRect()},e.prototype.remove=function(){this.getContentGroup().removeAll(),this._isFirstRender=!0},e.type="legend.plain",e}(xf);function pB(t,e,n,i){gB(t,e,n,i),n.dispatchAction({type:"legendToggleSelect",name:null!=t?t:e}),fB(t,e,n,i)}function dB(t){for(var e,n=t.getZr().storage.getDisplayList(),i=0,r=n.length;i<r&&!(e=n[i].states.emphasis);)i++;return e&&e.hoverLayer}function fB(t,e,n,i){dB(n)||n.dispatchAction({type:"highlight",seriesName:t,name:e,excludeSeriesId:i})}function gB(t,e,n,i){dB(n)||n.dispatchAction({type:"downplay",seriesName:t,name:e,excludeSeriesId:i})}function yB(t){var e=t.findComponents({mainType:"legend"});e&&e.length&&t.filterSeries((function(t){for(var n=0;n<e.length;n++)if(!e[n].isSelected(t.name))return!1;return!0}))}function vB(t,e,n){var i,r={},o="toggleSelected"===t;return n.eachComponent("legend",(function(n){o&&null!=i?n[i?"select":"unSelect"](e.name):"allSelect"===t||"inverseSelect"===t?n[t]():(n[t](e.name),i=n.isSelected(e.name)),P(n.getData(),(function(t){var e=t.get("name");if("\n"!==e&&""!==e){var i=n.isSelected(e);r.hasOwnProperty(e)?r[e]=r[e]&&i:r[e]=i}}))})),"allSelect"===t||"inverseSelect"===t?{selected:r}:{name:e.name,selected:r}}function mB(t){t.registerComponentModel(sB),t.registerComponentView(cB),t.registerProcessor(t.PRIORITY.PROCESSOR.SERIES_FILTER,yB),t.registerSubTypeDefaulter("legend",(function(){return"plain"})),function(t){t.registerAction("legendToggleSelect","legendselectchanged",V(vB,"toggleSelected")),t.registerAction("legendAllSelect","legendselectall",V(vB,"allSelect")),t.registerAction("legendInverseSelect","legendinverseselect",V(vB,"inverseSelect")),t.registerAction("legendSelect","legendselected",V(vB,"select")),t.registerAction("legendUnSelect","legendunselected",V(vB,"unSelect"))}(t)}var _B=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.setScrollDataIndex=function(t){this.option.scrollDataIndex=t},e.prototype.init=function(e,n,i){var r=Fc(e);t.prototype.init.call(this,e,n,i),xB(this,e,r)},e.prototype.mergeOption=function(e,n){t.prototype.mergeOption.call(this,e,n),xB(this,this.option,e)},e.type="legend.scroll",e.defaultOption=Rh(sB.defaultOption,{scrollDataIndex:0,pageButtonItemGap:5,pageButtonGap:null,pageButtonPosition:"end",pageFormatter:"{current}/{total}",pageIcons:{horizontal:["M0,0L12,-10L12,10z","M0,0L-12,-10L-12,10z"],vertical:["M0,0L20,0L10,-20z","M0,0L20,0L10,20z"]},pageIconColor:"#2f4554",pageIconInactiveColor:"#aaaaaa",pageIconSize:15,pageTextStyle:{color:"#333333"},animationDurationUpdate:800}),e}(sB);function xB(t,e,n){var i=[1,1];i[t.getOrient().index]=0,Vc(e,n,{type:"box",ignoreSize:!!i})}var bB=zi,wB=["width","height"],SB=["x","y"],MB=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.newlineDisabled=!0,n._currentIndex=0,n}return n(e,t),e.prototype.init=function(){t.prototype.init.call(this),this.group.add(this._containerGroup=new bB),this._containerGroup.add(this.getContentGroup()),this.group.add(this._controllerGroup=new bB)},e.prototype.resetInner=function(){t.prototype.resetInner.call(this),this._controllerGroup.removeAll(),this._containerGroup.removeClipPath(),this._containerGroup.__rectSize=null},e.prototype.renderInner=function(e,n,i,r,o,a,s){var l=this;t.prototype.renderInner.call(this,e,n,i,r,o,a,s);var u=this._controllerGroup,h=n.get("pageIconSize",!0),c=F(h)?h:[h,h];d("pagePrev",0);var p=n.getModel("pageTextStyle");function d(t,e){var i=t+"DataIndex",o=Qu(n.get("pageIcons",!0)[n.getOrient().name][e],{onclick:B(l._pageGo,l,i,n,r)},{x:-c[0]/2,y:-c[1]/2,width:c[0],height:c[1]});o.name=t,u.add(o)}u.add(new us({name:"pageText",style:{text:"xx/xx",fill:p.getTextColor(),font:p.getFont(),verticalAlign:"middle",align:"center"},silent:!0})),d("pageNext",1)},e.prototype.layoutInner=function(t,e,n,i,r,o){var a=this.getSelectorGroup(),s=t.getOrient().index,l=wB[s],u=SB[s],h=wB[1-s],c=SB[1-s];r&&Nc("horizontal",a,t.get("selectorItemGap",!0));var p=t.get("selectorButtonGap",!0),d=a.getBoundingRect(),f=[-d.x,-d.y],g=w(n);r&&(g[l]=n[l]-d[l]-p);var y=this._layoutContentAndController(t,i,g,s,l,h,c,u);if(r){if("end"===o)f[s]+=y[l]+p;else{var v=d[l]+p;f[s]-=v,y[u]-=v}y[l]+=d[l]+p,f[1-s]+=y[c]+y[h]/2-d[h]/2,y[h]=Math.max(y[h],d[h]),y[c]=Math.min(y[c],d[c]+f[1-s]),a.x=f[0],a.y=f[1],a.markRedraw()}return y},e.prototype._layoutContentAndController=function(t,e,n,i,r,o,a,s){var l=this.getContentGroup(),u=this._containerGroup,h=this._controllerGroup;Nc(t.get("orient"),l,t.get("itemGap"),i?n.width:null,i?null:n.height),Nc("horizontal",h,t.get("pageButtonItemGap",!0));var c=l.getBoundingRect(),p=h.getBoundingRect(),d=this._showController=c[r]>n[r],f=[-c.x,-c.y];e||(f[i]=l[s]);var g=[0,0],y=[-p.x,-p.y],v=tt(t.get("pageButtonGap",!0),t.get("itemGap",!0));d&&("end"===t.get("pageButtonPosition",!0)?y[i]+=n[r]-p[r]:g[i]+=p[r]+v);y[1-i]+=c[o]/2-p[o]/2,l.setPosition(f),u.setPosition(g),h.setPosition(y);var m={x:0,y:0};if(m[r]=d?n[r]:c[r],m[o]=Math.max(c[o],p[o]),m[a]=Math.min(0,p[a]+y[1-i]),u.__rectSize=n[r],d){var _={x:0,y:0};_[r]=Math.max(n[r]-p[r]-v,0),_[o]=m[o],u.setClipPath(new as({shape:_})),u.__rectSize=_[r]}else h.eachChild((function(t){t.attr({invisible:!0,silent:!0})}));var x=this._getPageInfo(t);return null!=x.pageIndex&&Fu(l,{x:x.contentPosition[0],y:x.contentPosition[1]},d?t:null),this._updatePageInfoView(t,x),m},e.prototype._pageGo=function(t,e,n){var i=this._getPageInfo(e)[t];null!=i&&n.dispatchAction({type:"legendScroll",scrollDataIndex:i,legendId:e.id})},e.prototype._updatePageInfoView=function(t,e){var n=this._controllerGroup;P(["pagePrev","pageNext"],(function(i){var r=null!=e[i+"DataIndex"],o=n.childOfName(i);o&&(o.setStyle("fill",r?t.get("pageIconColor",!0):t.get("pageIconInactiveColor",!0)),o.cursor=r?"pointer":"default")}));var i=n.childOfName("pageText"),r=t.get("pageFormatter"),o=e.pageIndex,a=null!=o?o+1:0,s=e.pageCount;i&&r&&i.setStyle("text",H(r)?r.replace("{current}",null==a?"":a+"").replace("{total}",null==s?"":s+""):r({current:a,total:s}))},e.prototype._getPageInfo=function(t){var e=t.get("scrollDataIndex",!0),n=this.getContentGroup(),i=this._containerGroup.__rectSize,r=t.getOrient().index,o=wB[r],a=SB[r],s=this._findTargetItemIndex(e),l=n.children(),u=l[s],h=l.length,c=h?1:0,p={contentPosition:[n.x,n.y],pageCount:c,pageIndex:c-1,pagePrevDataIndex:null,pageNextDataIndex:null};if(!u)return p;var d=m(u);p.contentPosition[r]=-d.s;for(var f=s+1,g=d,y=d,v=null;f<=h;++f)(!(v=m(l[f]))&&y.e>g.s+i||v&&!_(v,g.s))&&(g=y.i>g.i?y:v)&&(null==p.pageNextDataIndex&&(p.pageNextDataIndex=g.i),++p.pageCount),y=v;for(f=s-1,g=d,y=d,v=null;f>=-1;--f)(v=m(l[f]))&&_(y,v.s)||!(g.i<y.i)||(y=g,null==p.pagePrevDataIndex&&(p.pagePrevDataIndex=g.i),++p.pageCount,++p.pageIndex),g=v;return p;function m(t){if(t){var e=t.getBoundingRect(),n=e[a]+t[a];return{s:n,e:n+e[o],i:t.__legendDataIndex}}}function _(t,e){return t.e>=e&&t.s<=e+i}},e.prototype._findTargetItemIndex=function(t){return this._showController?(this.getContentGroup().eachChild((function(i,r){var o=i.__legendDataIndex;null==n&&null!=o&&(n=r),o===t&&(e=r)})),null!=e?e:n):0;var e,n},e.type="legend.scroll",e}(cB);function IB(t){qm(mB),t.registerComponentModel(_B),t.registerComponentView(MB),function(t){t.registerAction("legendScroll","legendscroll",(function(t,e){var n=t.scrollDataIndex;null!=n&&e.eachComponent({mainType:"legend",subType:"scroll",query:t},(function(t){t.setScrollDataIndex(n)}))}))}(t)}var TB=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="dataZoom.inside",e.defaultOption=Rh(_N.defaultOption,{disabled:!1,zoomLock:!1,zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!1,preventDefaultMouseMove:!0}),e}(_N),CB=Lr();function AB(t,e,n){CB(t).coordSysRecordMap.each((function(t){var i=t.dataZoomInfoMap.get(e.uid);i&&(i.getRange=n)}))}function DB(t,e){if(e){t.removeKey(e.model.uid);var n=e.controller;n&&n.dispose()}}function LB(t,e){t.dispatchAction({type:"dataZoom",animation:{easing:"cubicOut",duration:100},batch:e})}function kB(t,e,n,i){return t.coordinateSystem.containPoint([n,i])}function PB(t){t.registerProcessor(t.PRIORITY.PROCESSOR.FILTER,(function(t,e){var n=CB(e),i=n.coordSysRecordMap||(n.coordSysRecordMap=ht());i.each((function(t){t.dataZoomInfoMap=null})),t.eachComponent({mainType:"dataZoom",subType:"inside"},(function(t){P(vN(t).infoList,(function(n){var r=n.model.uid,o=i.get(r)||i.set(r,function(t,e){var n={model:e,containsPoint:V(kB,e),dispatchAction:V(LB,t),dataZoomInfoMap:null,controller:null},i=n.controller=new FM(t.getZr());return P(["pan","zoom","scrollMove"],(function(t){i.on(t,(function(e){var i=[];n.dataZoomInfoMap.each((function(r){if(e.isAvailableBehavior(r.model.option)){var o=(r.getRange||{})[t],a=o&&o(r.dzReferCoordSysInfo,n.model.mainType,n.controller,e);!r.model.get("disabled",!0)&&a&&i.push({dataZoomId:r.model.id,start:a[0],end:a[1]})}})),i.length&&n.dispatchAction(i)}))})),n}(e,n.model));(o.dataZoomInfoMap||(o.dataZoomInfoMap=ht())).set(t.uid,{dzReferCoordSysInfo:n,model:t,getRange:null})}))})),i.each((function(t){var e,n=t.controller,r=t.dataZoomInfoMap;if(r){var o=r.keys()[0];null!=o&&(e=r.get(o))}if(e){var a=function(t){var e,n="type_",i={type_true:2,type_move:1,type_false:0,type_undefined:-1},r=!0;return t.each((function(t){var o=t.model,a=!o.get("disabled",!0)&&(!o.get("zoomLock",!0)||"move");i[n+a]>i[n+e]&&(e=a),r=r&&o.get("preventDefaultMouseMove",!0)})),{controlType:e,opt:{zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!0,preventDefaultMouseMove:!!r}}}(r);n.enable(a.controlType,a.opt),n.setPointerChecker(t.containsPoint),Rf(t,"dispatchAction",e.model.get("throttle",!0),"fixRate")}else DB(i,t)}))}))}var OB=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="dataZoom.inside",e}return n(e,t),e.prototype.render=function(e,n,i){t.prototype.render.apply(this,arguments),e.noTarget()?this._clear():(this.range=e.getPercentRange(),AB(i,e,{pan:B(RB.pan,this),zoom:B(RB.zoom,this),scrollMove:B(RB.scrollMove,this)}))},e.prototype.dispose=function(){this._clear(),t.prototype.dispose.apply(this,arguments)},e.prototype._clear=function(){!function(t,e){for(var n=CB(t).coordSysRecordMap,i=n.keys(),r=0;r<i.length;r++){var o=i[r],a=n.get(o),s=a.dataZoomInfoMap;if(s){var l=e.uid;s.get(l)&&(s.removeKey(l),s.keys().length||DB(n,a))}}}(this.api,this.dataZoomModel),this.range=null},e.type="dataZoom.inside",e}(wN),RB={zoom:function(t,e,n,i){var r=this.range,o=r.slice(),a=t.axisModels[0];if(a){var s=EB[e](null,[i.originX,i.originY],a,n,t),l=(s.signal>0?s.pixelStart+s.pixelLength-s.pixel:s.pixel-s.pixelStart)/s.pixelLength*(o[1]-o[0])+o[0],u=Math.max(1/i.scale,0);o[0]=(o[0]-l)*u+l,o[1]=(o[1]-l)*u+l;var h=this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();return DA(0,o,[0,100],0,h.minSpan,h.maxSpan),this.range=o,r[0]!==o[0]||r[1]!==o[1]?o:void 0}},pan:NB((function(t,e,n,i,r,o){var a=EB[i]([o.oldX,o.oldY],[o.newX,o.newY],e,r,n);return a.signal*(t[1]-t[0])*a.pixel/a.pixelLength})),scrollMove:NB((function(t,e,n,i,r,o){return EB[i]([0,0],[o.scrollDelta,o.scrollDelta],e,r,n).signal*(t[1]-t[0])*o.scrollDelta}))};function NB(t){return function(e,n,i,r){var o=this.range,a=o.slice(),s=e.axisModels[0];if(s)return DA(t(a,s,e,n,i,r),a,[0,100],"all"),this.range=a,o[0]!==a[0]||o[1]!==a[1]?a:void 0}}var EB={grid:function(t,e,n,i,r){var o=n.axis,a={},s=r.model.coordinateSystem.getRect();return t=t||[0,0],"x"===o.dim?(a.pixel=e[0]-t[0],a.pixelLength=s.width,a.pixelStart=s.x,a.signal=o.inverse?1:-1):(a.pixel=e[1]-t[1],a.pixelLength=s.height,a.pixelStart=s.y,a.signal=o.inverse?-1:1),a},polar:function(t,e,n,i,r){var o=n.axis,a={},s=r.model.coordinateSystem,l=s.getRadiusAxis().getExtent(),u=s.getAngleAxis().getExtent();return t=t?s.pointToCoord(t):[0,0],e=s.pointToCoord(e),"radiusAxis"===n.mainType?(a.pixel=e[0]-t[0],a.pixelLength=l[1]-l[0],a.pixelStart=l[0],a.signal=o.inverse?1:-1):(a.pixel=e[1]-t[1],a.pixelLength=u[1]-u[0],a.pixelStart=u[0],a.signal=o.inverse?-1:1),a},singleAxis:function(t,e,n,i,r){var o=n.axis,a=r.model.coordinateSystem.getRect(),s={};return t=t||[0,0],"horizontal"===o.orient?(s.pixel=e[0]-t[0],s.pixelLength=a.width,s.pixelStart=a.x,s.signal=o.inverse?1:-1):(s.pixel=e[1]-t[1],s.pixelLength=a.height,s.pixelStart=a.y,s.signal=o.inverse?-1:1),s}};function zB(t){DN(t),t.registerComponentModel(TB),t.registerComponentView(OB),PB(t)}var BB=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="dataZoom.slider",e.layoutMode="box",e.defaultOption=Rh(_N.defaultOption,{show:!0,right:"ph",top:"ph",width:"ph",height:"ph",left:null,bottom:null,borderColor:"#d2dbee",borderRadius:3,backgroundColor:"rgba(47,69,84,0)",dataBackground:{lineStyle:{color:"#d2dbee",width:.5},areaStyle:{color:"#d2dbee",opacity:.2}},selectedDataBackground:{lineStyle:{color:"#8fb0f7",width:.5},areaStyle:{color:"#8fb0f7",opacity:.2}},fillerColor:"rgba(135,175,274,0.2)",handleIcon:"path://M-9.35,34.56V42m0-40V9.5m-2,0h4a2,2,0,0,1,2,2v21a2,2,0,0,1-2,2h-4a2,2,0,0,1-2-2v-21A2,2,0,0,1-11.35,9.5Z",handleSize:"100%",handleStyle:{color:"#ffffff",borderColor:"#ACB8D1"},moveHandleSize:7,moveHandleIcon:"path://M-320.9-50L-320.9-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-348-41-339-50-320.9-50z M-212.3-50L-212.3-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-239.4-41-230.4-50-212.3-50z M-103.7-50L-103.7-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-130.9-41-121.8-50-103.7-50z",moveHandleStyle:{color:"#D2DBEE",opacity:.7},showDetail:!0,showDataShadow:"auto",realtime:!0,zoomLock:!1,textStyle:{color:"#6E7079"},brushSelect:!0,brushStyle:{color:"rgba(135,175,274,0.15)"},emphasis:{handleStyle:{borderColor:"#8FB0F7"},moveHandleStyle:{color:"#8FB0F7"}}}),e}(_N),VB=as,FB="horizontal",GB="vertical",HB=["line","bar","candlestick","scatter"],WB={easing:"cubicOut",duration:100},UB=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n._displayables={},n}return n(e,t),e.prototype.init=function(t,e){this.api=e,this._onBrush=B(this._onBrush,this),this._onBrushEnd=B(this._onBrushEnd,this)},e.prototype.render=function(e,n,i,r){if(t.prototype.render.apply(this,arguments),Rf(this,"_dispatchZoomAction",e.get("throttle"),"fixRate"),this._orient=e.getOrient(),!1!==e.get("show")){if(e.noTarget())return this._clear(),void this.group.removeAll();r&&"dataZoom"===r.type&&r.from===this.uid||this._buildView(),this._updateView()}else this.group.removeAll()},e.prototype.dispose=function(){this._clear(),t.prototype.dispose.apply(this,arguments)},e.prototype._clear=function(){var t,e,n;(n=(t=this)[e="_dispatchZoomAction"])&&n[Lf]&&(t[e]=n[Lf]);var i=this.api.getZr();i.off("mousemove",this._onBrush),i.off("mouseup",this._onBrushEnd)},e.prototype._buildView=function(){var t=this.group;t.removeAll(),this._brushing=!1,this._displayables.brushRect=null,this._resetLocation(),this._resetInterval();var e=this._displayables.sliderGroup=new zi;this._renderBackground(),this._renderHandle(),this._renderDataShadow(),t.add(e),this._positionGroup()},e.prototype._resetLocation=function(){var t=this.dataZoomModel,e=this.api,n=t.get("brushSelect")?7:0,i=this._findCoordRect(),r={width:e.getWidth(),height:e.getHeight()},o=this._orient===FB?{right:r.width-i.x-i.width,top:r.height-30-7-n,width:i.width,height:30}:{right:7,top:i.y,width:30,height:i.height},a=Fc(t.option);P(["right","top","width","height"],(function(t){"ph"===a[t]&&(a[t]=o[t])}));var s=Ec(a,r);this._location={x:s.x,y:s.y},this._size=[s.width,s.height],this._orient===GB&&this._size.reverse()},e.prototype._positionGroup=function(){var t=this.group,e=this._location,n=this._orient,i=this.dataZoomModel.getFirstTargetAxisModel(),r=i&&i.get("inverse"),o=this._displayables.sliderGroup,a=(this._dataShadowInfo||{}).otherAxisInverse;o.attr(n!==FB||r?n===FB&&r?{scaleY:a?1:-1,scaleX:-1}:n!==GB||r?{scaleY:a?-1:1,scaleX:-1,rotation:Math.PI/2}:{scaleY:a?-1:1,scaleX:1,rotation:Math.PI/2}:{scaleY:a?1:-1,scaleX:1});var s=t.getBoundingRect([o]);t.x=e.x-s.x,t.y=e.y-s.y,t.markRedraw()},e.prototype._getViewExtent=function(){return[0,this._size[0]]},e.prototype._renderBackground=function(){var t=this.dataZoomModel,e=this._size,n=this._displayables.sliderGroup,i=t.get("brushSelect");n.add(new VB({silent:!0,shape:{x:0,y:0,width:e[0],height:e[1]},style:{fill:t.get("backgroundColor")},z2:-40}));var r=new VB({shape:{x:0,y:0,width:e[0],height:e[1]},style:{fill:"transparent"},z2:0,onclick:B(this._onClickPanel,this)}),o=this.api.getZr();i?(r.on("mousedown",this._onBrushStart,this),r.cursor="crosshair",o.on("mousemove",this._onBrush),o.on("mouseup",this._onBrushEnd)):(o.off("mousemove",this._onBrush),o.off("mouseup",this._onBrushEnd)),n.add(r)},e.prototype._renderDataShadow=function(){var t=this._dataShadowInfo=this._prepareDataShadowInfo();if(this._displayables.dataShadowSegs=[],t){var e=this._size,n=t.series,i=n.getRawData(),r=n.getShadowDim?n.getShadowDim():t.otherDim;if(null!=r){var o=i.getDataExtent(r),a=.3*(o[1]-o[0]);o=[o[0]-a,o[1]+a];var s,l=[0,e[1]],u=[0,e[0]],h=[[e[0],0],[0,0]],c=[],p=u[1]/(i.count()-1),d=0,f=Math.round(i.count()/e[0]);i.each([r],(function(t,e){if(f>0&&e%f)d+=p;else{var n=null==t||isNaN(t)||""===t,i=n?0:Xi(t,o,l,!0);n&&!s&&e?(h.push([h[h.length-1][0],0]),c.push([c[c.length-1][0],0])):!n&&s&&(h.push([d,0]),c.push([d,0])),h.push([d,i]),c.push([d,i]),d+=p,s=n}}));for(var g=this.dataZoomModel,y=0;y<3;y++){var v=m(1===y);this._displayables.sliderGroup.add(v),this._displayables.dataShadowSegs.push(v)}}}function m(t){var e=g.getModel(t?"selectedDataBackground":"dataBackground"),n=new zi,i=new nu({shape:{points:h},segmentIgnoreThreshold:1,style:e.getModel("areaStyle").getAreaStyle(),silent:!0,z2:-20}),r=new ru({shape:{points:c},segmentIgnoreThreshold:1,style:e.getModel("lineStyle").getLineStyle(),silent:!0,z2:-19});return n.add(i),n.add(r),n}},e.prototype._prepareDataShadowInfo=function(){var t=this.dataZoomModel,e=t.get("showDataShadow");if(!1!==e){var n,i=this.ecModel;return t.eachTargetAxis((function(r,o){P(t.getAxisProxy(r,o).getTargetSeriesModels(),(function(t){if(!(n||!0!==e&&A(HB,t.get("type"))<0)){var a,s=i.getComponent(gN(r),o).axis,l={x:"y",y:"x",radius:"angle",angle:"radius"}[r],u=t.coordinateSystem;null!=l&&u.getOtherAxis&&(a=u.getOtherAxis(s).inverse),l=t.getData().mapDimension(l),n={thisAxis:s,series:t,thisDim:r,otherDim:l,otherAxisInverse:a}}}),this)}),this),n}},e.prototype._renderHandle=function(){var t=this.group,e=this._displayables,n=e.handles=[null,null],i=e.handleLabels=[null,null],r=this._displayables.sliderGroup,o=this._size,a=this.dataZoomModel,s=this.api,l=a.get("borderRadius")||0,u=a.get("brushSelect"),h=e.filler=new VB({silent:u,style:{fill:a.get("fillerColor")},textConfig:{position:"inside"}});r.add(h),r.add(new VB({silent:!0,subPixelOptimize:!0,shape:{x:0,y:0,width:o[0],height:o[1],r:l},style:{stroke:a.get("dataBackgroundColor")||a.get("borderColor"),lineWidth:1,fill:"rgba(0,0,0,0)"}})),P([0,1],(function(e){var o=a.get("handleIcon");!uy[o]&&o.indexOf("path://")<0&&o.indexOf("image://")<0&&(o="path://"+o);var s=py(o,-1,0,2,2,null,!0);s.attr({cursor:YB(this._orient),draggable:!0,drift:B(this._onDragMove,this,e),ondragend:B(this._onDragEnd,this),onmouseover:B(this._showDataInfo,this,!0),onmouseout:B(this._showDataInfo,this,!1),z2:5});var l=s.getBoundingRect(),u=a.get("handleSize");this._handleHeight=Zi(u,this._size[1]),this._handleWidth=l.width/l.height*this._handleHeight,s.setStyle(a.getModel("handleStyle").getItemStyle()),s.style.strokeNoScale=!0,s.rectHover=!0,s.ensureState("emphasis").style=a.getModel(["emphasis","handleStyle"]).getItemStyle(),ol(s);var h=a.get("handleColor");null!=h&&(s.style.fill=h),r.add(n[e]=s);var c=a.getModel("textStyle");t.add(i[e]=new us({silent:!0,invisible:!0,style:hh(c,{x:0,y:0,text:"",verticalAlign:"middle",align:"center",fill:c.getTextColor(),font:c.getFont()}),z2:10}))}),this);var c=h;if(u){var p=Zi(a.get("moveHandleSize"),o[1]),d=e.moveHandle=new as({style:a.getModel("moveHandleStyle").getItemStyle(),silent:!0,shape:{r:[0,0,2,2],y:o[1]-.5,height:p}}),f=.8*p,g=e.moveHandleIcon=py(a.get("moveHandleIcon"),-f/2,-f/2,f,f,"#ffffff",!0);g.silent=!0,g.y=o[1]+p/2-.5,d.ensureState("emphasis").style=a.getModel(["emphasis","moveHandleStyle"]).getItemStyle();var y=Math.min(o[1]/2,Math.max(p,10));(c=e.moveZone=new as({invisible:!0,shape:{y:o[1]-y,height:p+y}})).on("mouseover",(function(){s.enterEmphasis(d)})).on("mouseout",(function(){s.leaveEmphasis(d)})),r.add(d),r.add(g),r.add(c)}c.attr({draggable:!0,cursor:YB(this._orient),drift:B(this._onDragMove,this,"all"),ondragstart:B(this._showDataInfo,this,!0),ondragend:B(this._onDragEnd,this),onmouseover:B(this._showDataInfo,this,!0),onmouseout:B(this._showDataInfo,this,!1)})},e.prototype._resetInterval=function(){var t=this._range=this.dataZoomModel.getPercentRange(),e=this._getViewExtent();this._handleEnds=[Xi(t[0],[0,100],e,!0),Xi(t[1],[0,100],e,!0)]},e.prototype._updateInterval=function(t,e){var n=this.dataZoomModel,i=this._handleEnds,r=this._getViewExtent(),o=n.findRepresentativeAxisProxy().getMinMaxSpan(),a=[0,100];DA(e,i,r,n.get("zoomLock")?"all":t,null!=o.minSpan?Xi(o.minSpan,a,r,!0):null,null!=o.maxSpan?Xi(o.maxSpan,a,r,!0):null);var s=this._range,l=this._range=qi([Xi(i[0],r,a,!0),Xi(i[1],r,a,!0)]);return!s||s[0]!==l[0]||s[1]!==l[1]},e.prototype._updateView=function(t){var e=this._displayables,n=this._handleEnds,i=qi(n.slice()),r=this._size;P([0,1],(function(t){var i=e.handles[t],o=this._handleHeight;i.attr({scaleX:o/2,scaleY:o/2,x:n[t]+(t?-1:1),y:r[1]/2-o/2})}),this),e.filler.setShape({x:i[0],y:0,width:i[1]-i[0],height:r[1]});var o={x:i[0],width:i[1]-i[0]};e.moveHandle&&(e.moveHandle.setShape(o),e.moveZone.setShape(o),e.moveZone.getBoundingRect(),e.moveHandleIcon&&e.moveHandleIcon.attr("x",o.x+o.width/2));for(var a=e.dataShadowSegs,s=[0,i[0],i[1],r[0]],l=0;l<a.length;l++){var u=a[l],h=u.getClipPath();h||(h=new as,u.setClipPath(h)),h.setShape({x:s[l],y:0,width:s[l+1]-s[l],height:r[1]})}this._updateDataInfo(t)},e.prototype._updateDataInfo=function(t){var e=this.dataZoomModel,n=this._displayables,i=n.handleLabels,r=this._orient,o=["",""];if(e.get("showDetail")){var a=e.findRepresentativeAxisProxy();if(a){var s=a.getAxisModel().axis,l=this._range,u=t?a.calculateDataWindow({start:l[0],end:l[1]}).valueWindow:a.getDataValueWindow();o=[this._formatLabel(u[0],s),this._formatLabel(u[1],s)]}}var h=qi(this._handleEnds.slice());function c(t){var e=Xu(n.handles[t].parent,this.group),a=ju(0===t?"right":"left",e),s=this._handleWidth/2+5,l=Zu([h[t]+(0===t?-s:s),this._size[1]/2],e);i[t].setStyle({x:l[0],y:l[1],verticalAlign:r===FB?"middle":a,align:r===FB?a:"center",text:o[t]})}c.call(this,0),c.call(this,1)},e.prototype._formatLabel=function(t,e){var n=this.dataZoomModel,i=n.get("labelFormatter"),r=n.get("labelPrecision");null!=r&&"auto"!==r||(r=e.getPixelPrecision());var o=null==t||isNaN(t)?"":"category"===e.type||"time"===e.type?e.scale.getLabel({value:Math.round(t)}):t.toFixed(Math.min(r,20));return G(i)?i(t,o):H(i)?i.replace("{value}",o):o},e.prototype._showDataInfo=function(t){t=this._dragging||t;var e=this._displayables,n=e.handleLabels;n[0].attr("invisible",!t),n[1].attr("invisible",!t),e.moveHandle&&this.api[t?"enterEmphasis":"leaveEmphasis"](e.moveHandle,1)},e.prototype._onDragMove=function(t,e,n,i){this._dragging=!0,ee(i.event);var r=Zu([e,n],this._displayables.sliderGroup.getLocalTransform(),!0),o=this._updateInterval(t,r[0]),a=this.dataZoomModel.get("realtime");this._updateView(!a),o&&a&&this._dispatchZoomAction(!0)},e.prototype._onDragEnd=function(){this._dragging=!1,this._showDataInfo(!1),!this.dataZoomModel.get("realtime")&&this._dispatchZoomAction(!1)},e.prototype._onClickPanel=function(t){var e=this._size,n=this._displayables.sliderGroup.transformCoordToLocal(t.offsetX,t.offsetY);if(!(n[0]<0||n[0]>e[0]||n[1]<0||n[1]>e[1])){var i=this._handleEnds,r=(i[0]+i[1])/2,o=this._updateInterval("all",n[0]-r);this._updateView(),o&&this._dispatchZoomAction(!1)}},e.prototype._onBrushStart=function(t){var e=t.offsetX,n=t.offsetY;this._brushStart=new In(e,n),this._brushing=!0,this._brushStartTime=+new Date},e.prototype._onBrushEnd=function(t){if(this._brushing){var e=this._displayables.brushRect;if(this._brushing=!1,e){e.attr("ignore",!0);var n=e.shape;if(!(+new Date-this._brushStartTime<200&&Math.abs(n.width)<5)){var i=this._getViewExtent(),r=[0,100];this._range=qi([Xi(n.x,i,r,!0),Xi(n.x+n.width,i,r,!0)]),this._handleEnds=[n.x,n.x+n.width],this._updateView(),this._dispatchZoomAction(!1)}}}},e.prototype._onBrush=function(t){this._brushing&&(ee(t.event),this._updateBrushRect(t.offsetX,t.offsetY))},e.prototype._updateBrushRect=function(t,e){var n=this._displayables,i=this.dataZoomModel,r=n.brushRect;r||(r=n.brushRect=new VB({silent:!0,style:i.getModel("brushStyle").getItemStyle()}),n.sliderGroup.add(r)),r.attr("ignore",!1);var o=this._brushStart,a=this._displayables.sliderGroup,s=a.transformCoordToLocal(t,e),l=a.transformCoordToLocal(o.x,o.y),u=this._size;s[0]=Math.max(Math.min(u[0],s[0]),0),r.setShape({x:l[0],y:0,width:s[0]-l[0],height:u[1]})},e.prototype._dispatchZoomAction=function(t){var e=this._range;this.api.dispatchAction({type:"dataZoom",from:this.uid,dataZoomId:this.dataZoomModel.id,animation:t?WB:null,start:e[0],end:e[1]})},e.prototype._findCoordRect=function(){var t,e=vN(this.dataZoomModel).infoList;if(!t&&e.length){var n=e[0].model.coordinateSystem;t=n.getRect&&n.getRect()}if(!t){var i=this.api.getWidth(),r=this.api.getHeight();t={x:.2*i,y:.2*r,width:.6*i,height:.6*r}}return t},e.type="dataZoom.slider",e}(wN);function YB(t){return"vertical"===t?"ns-resize":"ew-resize"}function XB(t){t.registerComponentModel(BB),t.registerComponentView(UB),DN(t)}var ZB=function(t,e,n){var i=w((jB[t]||{})[e]);return n&&F(i)?i[i.length-1]:i},jB={color:{active:["#006edd","#e0ffff"],inactive:["rgba(0,0,0,0)"]},colorHue:{active:[0,360],inactive:[0,0]},colorSaturation:{active:[.3,1],inactive:[0,0]},colorLightness:{active:[.9,.5],inactive:[0,0]},colorAlpha:{active:[.3,1],inactive:[0,0]},opacity:{active:[.3,1],inactive:[0,0]},symbol:{active:["circle","roundRect","diamond"],inactive:["none"]},symbolSize:{active:[10,50],inactive:[0,0]}},qB=ST.mapVisual,KB=ST.eachVisual,$B=F,JB=P,QB=qi,tV=Xi,eV=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.stateList=["inRange","outOfRange"],n.replacableOptionKeys=["inRange","outOfRange","target","controller","color"],n.layoutMode={type:"box",ignoreSize:!0},n.dataBound=[-1/0,1/0],n.targetVisuals={},n.controllerVisuals={},n}return n(e,t),e.prototype.init=function(t,e,n){this.mergeDefaultAndTheme(t,n)},e.prototype.optionUpdated=function(t,e){var n=this.option;a.canvasSupported||(n.realtime=!1),!e&&KE(n,t,this.replacableOptionKeys),this.textStyleModel=this.getModel("textStyle"),this.resetItemSize(),this.completeVisualOption()},e.prototype.resetVisual=function(t){var e=this.stateList;t=B(t,this),this.controllerVisuals=qE(this.option.controller,e,t),this.targetVisuals=qE(this.option.target,e,t)},e.prototype.getItemSymbol=function(){return null},e.prototype.getTargetSeriesIndices=function(){var t=this.option.seriesIndex,e=[];return null==t||"all"===t?this.ecModel.eachSeries((function(t,n){e.push(n)})):e=_r(t),e},e.prototype.eachTargetSeries=function(t,e){P(this.getTargetSeriesIndices(),(function(n){var i=this.ecModel.getSeriesByIndex(n);i&&t.call(e,i)}),this)},e.prototype.isTargetSeries=function(t){var e=!1;return this.eachTargetSeries((function(n){n===t&&(e=!0)})),e},e.prototype.formatValueText=function(t,e,n){var i,r=this.option,o=r.precision,a=this.dataBound,s=r.formatter;n=n||["<",">"],F(t)&&(t=t.slice(),i=!0);var l=e?t:i?[u(t[0]),u(t[1])]:u(t);return H(s)?s.replace("{value}",i?l[0]:l).replace("{value2}",i?l[1]:l):G(s)?i?s(t[0],t[1]):s(t):i?t[0]===a[0]?n[0]+" "+l[1]:t[1]===a[1]?n[1]+" "+l[0]:l[0]+" - "+l[1]:l;function u(t){return t===a[0]?"min":t===a[1]?"max":(+t).toFixed(Math.min(o,20))}},e.prototype.resetExtent=function(){var t=this.option,e=QB([t.min,t.max]);this._dataExtent=e},e.prototype.getDataDimension=function(t){var e=this.option.dimension,n=t.dimensions;if(null!=e||n.length){if(null!=e)return t.getDimension(e);for(var i=t.dimensions,r=i.length-1;r>=0;r--){var o=i[r];if(!t.getDimensionInfo(o).isCalculationCoord)return o}}},e.prototype.getExtent=function(){return this._dataExtent.slice()},e.prototype.completeVisualOption=function(){var t=this.ecModel,e=this.option,n={inRange:e.inRange,outOfRange:e.outOfRange},i=e.target||(e.target={}),r=e.controller||(e.controller={});S(i,n),S(r,n);var o=this.isCategory();function a(n){$B(e.color)&&!n.inRange&&(n.inRange={color:e.color.slice().reverse()}),n.inRange=n.inRange||{color:t.get("gradientColor")}}a.call(this,i),a.call(this,r),function(t,e,n){var i=t[e],r=t[n];i&&!r&&(r=t[n]={},JB(i,(function(t,e){if(ST.isValidType(e)){var n=ZB(e,"inactive",o);null!=n&&(r[e]=n,"color"!==e||r.hasOwnProperty("opacity")||r.hasOwnProperty("colorAlpha")||(r.opacity=[0,0]))}})))}.call(this,i,"inRange","outOfRange"),function(t){var e=(t.inRange||{}).symbol||(t.outOfRange||{}).symbol,n=(t.inRange||{}).symbolSize||(t.outOfRange||{}).symbolSize,i=this.get("inactiveColor"),r=this.getItemSymbol()||"roundRect";JB(this.stateList,(function(a){var s=this.itemSize,l=t[a];l||(l=t[a]={color:o?i:[i]}),null==l.symbol&&(l.symbol=e&&w(e)||(o?r:[r])),null==l.symbolSize&&(l.symbolSize=n&&w(n)||(o?s[0]:[s[0],s[0]])),l.symbol=qB(l.symbol,(function(t){return"none"===t?r:t}));var u=l.symbolSize;if(null!=u){var h=-1/0;KB(u,(function(t){t>h&&(h=t)})),l.symbolSize=qB(u,(function(t){return tV(t,[0,h],[0,s[0]],!0)}))}}),this)}.call(this,r)},e.prototype.resetItemSize=function(){this.itemSize=[parseFloat(this.get("itemWidth")),parseFloat(this.get("itemHeight"))]},e.prototype.isCategory=function(){return!!this.option.categories},e.prototype.setSelected=function(t){},e.prototype.getSelected=function(){return null},e.prototype.getValueState=function(t){return null},e.prototype.getVisualMeta=function(t){return null},e.type="visualMap",e.dependencies=["series"],e.defaultOption={show:!0,zlevel:0,z:4,seriesIndex:"all",min:0,max:200,left:0,right:null,top:null,bottom:0,itemWidth:null,itemHeight:null,inverse:!1,orient:"vertical",backgroundColor:"rgba(0,0,0,0)",borderColor:"#cccccc",contentColor:"#5793f3",inactiveColor:"#aaaaaa",borderWidth:0,padding:5,textGap:10,precision:0,textStyle:{color:"#333333"}},e}(Wc),nV=[20,140],iV=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.optionUpdated=function(e,n){t.prototype.optionUpdated.apply(this,arguments),this.resetExtent(),this.resetVisual((function(t){t.mappingMethod="linear",t.dataExtent=this.getExtent()})),this._resetRange()},e.prototype.resetItemSize=function(){t.prototype.resetItemSize.apply(this,arguments);var e=this.itemSize;(null==e[0]||isNaN(e[0]))&&(e[0]=nV[0]),(null==e[1]||isNaN(e[1]))&&(e[1]=nV[1])},e.prototype._resetRange=function(){var t=this.getExtent(),e=this.option.range;!e||e.auto?(t.auto=1,this.option.range=t):F(e)&&(e[0]>e[1]&&e.reverse(),e[0]=Math.max(e[0],t[0]),e[1]=Math.min(e[1],t[1]))},e.prototype.completeVisualOption=function(){t.prototype.completeVisualOption.apply(this,arguments),P(this.stateList,(function(t){var e=this.option.controller[t].symbolSize;e&&e[0]!==e[1]&&(e[0]=e[1]/3)}),this)},e.prototype.setSelected=function(t){this.option.range=t.slice(),this._resetRange()},e.prototype.getSelected=function(){var t=this.getExtent(),e=qi((this.get("range")||[]).slice());return e[0]>t[1]&&(e[0]=t[1]),e[1]>t[1]&&(e[1]=t[1]),e[0]<t[0]&&(e[0]=t[0]),e[1]<t[0]&&(e[1]=t[0]),e},e.prototype.getValueState=function(t){var e=this.option.range,n=this.getExtent();return(e[0]<=n[0]||e[0]<=t)&&(e[1]>=n[1]||t<=e[1])?"inRange":"outOfRange"},e.prototype.findTargetDataIndices=function(t){var e=[];return this.eachTargetSeries((function(n){var i=[],r=n.getData();r.each(this.getDataDimension(r),(function(e,n){t[0]<=e&&e<=t[1]&&i.push(n)}),this),e.push({seriesId:n.id,dataIndex:i})}),this),e},e.prototype.getVisualMeta=function(t){var e=rV(this,"outOfRange",this.getExtent()),n=rV(this,"inRange",this.option.range.slice()),i=[];function r(e,n){i.push({value:e,color:t(e,n)})}for(var o=0,a=0,s=n.length,l=e.length;a<l&&(!n.length||e[a]<=n[0]);a++)e[a]<n[o]&&r(e[a],"outOfRange");for(var u=1;o<s;o++,u=0)u&&i.length&&r(n[o],"outOfRange"),r(n[o],"inRange");for(u=1;a<l;a++)(!n.length||n[n.length-1]<e[a])&&(u&&(i.length&&r(i[i.length-1].value,"outOfRange"),u=0),r(e[a],"outOfRange"));var h=i.length;return{stops:i,outerColors:[h?i[0].color:"transparent",h?i[h-1].color:"transparent"]}},e.type="visualMap.continuous",e.defaultOption=Rh(eV.defaultOption,{align:"auto",calculable:!1,hoverLink:!0,realtime:!0,handleIcon:"path://M-11.39,9.77h0a3.5,3.5,0,0,1-3.5,3.5h-22a3.5,3.5,0,0,1-3.5-3.5h0a3.5,3.5,0,0,1,3.5-3.5h22A3.5,3.5,0,0,1-11.39,9.77Z",handleSize:"120%",handleStyle:{borderColor:"#ffffff",borderWidth:1},indicatorIcon:"circle",indicatorSize:"50%",indicatorStyle:{borderColor:"#ffffff",borderWidth:2,shadowBlur:2,shadowOffsetX:1,shadowOffsetY:1,shadowColor:"rgba(0,0,0,0.2)"}}),e}(eV);function rV(t,e,n){if(n[0]===n[1])return n.slice();for(var i=(n[1]-n[0])/200,r=n[0],o=[],a=0;a<=200&&r<n[1];a++)o.push(r),r+=i;return o.push(n[1]),o}var oV=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.autoPositionValues={left:1,right:1,top:1,bottom:1},n}return n(e,t),e.prototype.init=function(t,e){this.ecModel=t,this.api=e},e.prototype.render=function(t,e,n,i){this.visualMapModel=t,!1!==t.get("show")?this.doRender(t,e,n,i):this.group.removeAll()},e.prototype.renderBackground=function(t){var e=this.visualMapModel,n=xc(e.get("padding")||0),i=t.getBoundingRect();t.add(new as({z:-1,silent:!0,shape:{x:i.x-n[3],y:i.y-n[0],width:i.width+n[3]+n[1],height:i.height+n[0]+n[2]},style:{fill:e.get("backgroundColor"),stroke:e.get("borderColor"),lineWidth:e.get("borderWidth")}}))},e.prototype.getControllerVisual=function(t,e,n){var i=(n=n||{}).forceState,r=this.visualMapModel,o={};if("color"===e){var a=r.get("contentColor");o.color=a}function s(t){return o[t]}function l(t,e){o[t]=e}var u=r.controllerVisuals[i||r.getValueState(t)];return P(ST.prepareVisualTypes(u),(function(i){var r=u[i];n.convertOpacityToAlpha&&"opacity"===i&&(i="colorAlpha",r=u.__alphaForOpacity),ST.dependsOn(i,e)&&r&&r.applyVisual(t,s,l)})),o[e]},e.prototype.positionGroup=function(t){var e=this.visualMapModel,n=this.api;zc(t,e.getBoxLayoutParams(),{width:n.getWidth(),height:n.getHeight()})},e.prototype.doRender=function(t,e,n,i){},e.type="visualMap",e}(xf),aV=[["left","right","width"],["top","bottom","height"]];function sV(t,e,n){var i=t.option,r=i.align;if(null!=r&&"auto"!==r)return r;for(var o={width:e.getWidth(),height:e.getHeight()},a="horizontal"===i.orient?1:0,s=aV[a],l=[0,null,10],u={},h=0;h<3;h++)u[aV[1-a][h]]=l[h],u[s[h]]=2===h?n[0]:i[s[h]];var c=[["x","width",3],["y","height",0]][a],p=Ec(u,o,i.padding);return s[(p.margin[c[2]]||0)+p[c[0]]+.5*p[c[1]]<.5*o[c[1]]?0:1]}function lV(t,e){return P(t||[],(function(t){null!=t.dataIndex&&(t.dataIndexInside=t.dataIndex,t.dataIndex=null),t.highlightKey="visualMap"+(e?e.componentIndex:"")})),t}var uV=Xi,hV=P,cV=Math.min,pV=Math.max,dV=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n._shapes={},n._dataInterval=[],n._handleEnds=[],n._hoverLinkDataIndices=[],n}return n(e,t),e.prototype.doRender=function(t,e,n,i){this._api=n,i&&"selectDataRange"===i.type&&i.from===this.uid||this._buildView()},e.prototype._buildView=function(){this.group.removeAll();var t=this.visualMapModel,e=this.group;this._orient=t.get("orient"),this._useHandle=t.get("calculable"),this._resetInterval(),this._renderBar(e);var n=t.get("text");this._renderEndsText(e,n,0),this._renderEndsText(e,n,1),this._updateView(!0),this.renderBackground(e),this._updateView(),this._enableHoverLinkToSeries(),this._enableHoverLinkFromSeries(),this.positionGroup(e)},e.prototype._renderEndsText=function(t,e,n){if(e){var i=e[1-n];i=null!=i?i+"":"";var r=this.visualMapModel,o=r.get("textGap"),a=r.itemSize,s=this._shapes.mainGroup,l=this._applyTransform([a[0]/2,0===n?-o:a[1]+o],s),u=this._applyTransform(0===n?"bottom":"top",s),h=this._orient,c=this.visualMapModel.textStyleModel;this.group.add(new us({style:{x:l[0],y:l[1],verticalAlign:"horizontal"===h?"middle":u,align:"horizontal"===h?u:"center",text:i,font:c.getFont(),fill:c.getTextColor()}}))}},e.prototype._renderBar=function(t){var e=this.visualMapModel,n=this._shapes,i=e.itemSize,r=this._orient,o=this._useHandle,a=sV(e,this.api,i),s=n.mainGroup=this._createBarGroup(a),l=new zi;s.add(l),l.add(n.outOfRange=fV()),l.add(n.inRange=fV(null,o?yV(this._orient):null,B(this._dragHandle,this,"all",!1),B(this._dragHandle,this,"all",!0))),l.setClipPath(new as({shape:{x:0,y:0,width:i[0],height:i[1],r:3}}));var u=e.textStyleModel.getTextRect("国"),h=pV(u.width,u.height);o&&(n.handleThumbs=[],n.handleLabels=[],n.handleLabelPoints=[],this._createHandle(e,s,0,i,h,r),this._createHandle(e,s,1,i,h,r)),this._createIndicator(e,s,i,h,r),t.add(s)},e.prototype._createHandle=function(t,e,n,i,r,o){var a=B(this._dragHandle,this,n,!1),s=B(this._dragHandle,this,n,!0),l=Un(t.get("handleSize"),i[0]),u=py(t.get("handleIcon"),-l/2,-l/2,l,l,null,!0),h=yV(this._orient);u.attr({cursor:h,draggable:!0,drift:a,ondragend:s,onmousemove:function(t){ee(t.event)}}),u.x=i[0]/2,u.useStyle(t.getModel("handleStyle").getItemStyle()),u.setStyle({strokeNoScale:!0,strokeFirst:!0}),u.style.lineWidth*=2,u.ensureState("emphasis").style=t.getModel(["emphasis","handleStyle"]).getItemStyle(),hl(u,!0),e.add(u);var c=this.visualMapModel.textStyleModel,p=new us({cursor:h,draggable:!0,drift:a,onmousemove:function(t){ee(t.event)},ondragend:s,style:{x:0,y:0,text:"",font:c.getFont(),fill:c.getTextColor()}});p.ensureState("blur").style={opacity:.1},p.stateTransition={duration:200},this.group.add(p);var d=[l,0],f=this._shapes;f.handleThumbs[n]=u,f.handleLabelPoints[n]=d,f.handleLabels[n]=p},e.prototype._createIndicator=function(t,e,n,i,r){var o=Un(t.get("indicatorSize"),n[0]),a=py(t.get("indicatorIcon"),-o/2,-o/2,o,o,null,!0);a.attr({cursor:"move",invisible:!0,silent:!0,x:n[0]/2});var s=t.getModel("indicatorStyle").getItemStyle();if(a instanceof Qa){var l=a.style;a.useStyle(I({image:l.image,x:l.x,y:l.y,width:l.width,height:l.height},s))}else a.useStyle(s);e.add(a);var u=this.visualMapModel.textStyleModel,h=new us({silent:!0,invisible:!0,style:{x:0,y:0,text:"",font:u.getFont(),fill:u.getTextColor()}});this.group.add(h);var c=[("horizontal"===r?i/2:6)+n[0]/2,0],p=this._shapes;p.indicator=a,p.indicatorLabel=h,p.indicatorLabelPoint=c,this._firstShowIndicator=!0},e.prototype._dragHandle=function(t,e,n,i){if(this._useHandle){if(this._dragging=!e,!e){var r=this._applyTransform([n,i],this._shapes.mainGroup,!0);this._updateInterval(t,r[1]),this._hideIndicator(),this._updateView()}e===!this.visualMapModel.get("realtime")&&this.api.dispatchAction({type:"selectDataRange",from:this.uid,visualMapId:this.visualMapModel.id,selected:this._dataInterval.slice()}),e?!this._hovering&&this._clearHoverLinkToSeries():gV(this.visualMapModel)&&this._doHoverLinkToSeries(this._handleEnds[t],!1)}},e.prototype._resetInterval=function(){var t=this.visualMapModel,e=this._dataInterval=t.getSelected(),n=t.getExtent(),i=[0,t.itemSize[1]];this._handleEnds=[uV(e[0],n,i,!0),uV(e[1],n,i,!0)]},e.prototype._updateInterval=function(t,e){e=e||0;var n=this.visualMapModel,i=this._handleEnds,r=[0,n.itemSize[1]];DA(e,i,r,t,0);var o=n.getExtent();this._dataInterval=[uV(i[0],r,o,!0),uV(i[1],r,o,!0)]},e.prototype._updateView=function(t){var e=this.visualMapModel,n=e.getExtent(),i=this._shapes,r=[0,e.itemSize[1]],o=t?r:this._handleEnds,a=this._createBarVisual(this._dataInterval,n,o,"inRange"),s=this._createBarVisual(n,n,r,"outOfRange");i.inRange.setStyle({fill:a.barColor}).setShape("points",a.barPoints),i.outOfRange.setStyle({fill:s.barColor}).setShape("points",s.barPoints),this._updateHandle(o,a)},e.prototype._createBarVisual=function(t,e,n,i){var r={forceState:i,convertOpacityToAlpha:!0},o=this._makeColorGradient(t,r),a=[this.getControllerVisual(t[0],"symbolSize",r),this.getControllerVisual(t[1],"symbolSize",r)],s=this._createBarPoints(n,a);return{barColor:new yu(0,0,0,1,o),barPoints:s,handlesColor:[o[0].color,o[o.length-1].color]}},e.prototype._makeColorGradient=function(t,e){var n=[],i=(t[1]-t[0])/100;n.push({color:this.getControllerVisual(t[0],"color",e),offset:0});for(var r=1;r<100;r++){var o=t[0]+i*r;if(o>t[1])break;n.push({color:this.getControllerVisual(o,"color",e),offset:r/100})}return n.push({color:this.getControllerVisual(t[1],"color",e),offset:1}),n},e.prototype._createBarPoints=function(t,e){var n=this.visualMapModel.itemSize;return[[n[0]-e[0],t[0]],[n[0],t[0]],[n[0],t[1]],[n[0]-e[1],t[1]]]},e.prototype._createBarGroup=function(t){var e=this._orient,n=this.visualMapModel.get("inverse");return new zi("horizontal"!==e||n?"horizontal"===e&&n?{scaleX:"bottom"===t?-1:1,rotation:-Math.PI/2}:"vertical"!==e||n?{scaleX:"left"===t?1:-1}:{scaleX:"left"===t?1:-1,scaleY:-1}:{scaleX:"bottom"===t?1:-1,rotation:Math.PI/2})},e.prototype._updateHandle=function(t,e){if(this._useHandle){var n=this._shapes,i=this.visualMapModel,r=n.handleThumbs,o=n.handleLabels,a=i.itemSize,s=i.getExtent();hV([0,1],(function(l){var u=r[l];u.setStyle("fill",e.handlesColor[l]),u.y=t[l];var h=uV(t[l],[0,a[1]],s,!0),c=this.getControllerVisual(h,"symbolSize");u.scaleX=u.scaleY=c/a[0],u.x=a[0]-c/2;var p=Zu(n.handleLabelPoints[l],Xu(u,this.group));o[l].setStyle({x:p[0],y:p[1],text:i.formatValueText(this._dataInterval[l]),verticalAlign:"middle",align:"vertical"===this._orient?this._applyTransform("left",n.mainGroup):"center"})}),this)}},e.prototype._showIndicator=function(t,e,n,i){var r=this.visualMapModel,o=r.getExtent(),a=r.itemSize,s=[0,a[1]],l=this._shapes,u=l.indicator;if(u){u.attr("invisible",!1);var h=this.getControllerVisual(t,"color",{convertOpacityToAlpha:!0}),c=this.getControllerVisual(t,"symbolSize"),p=uV(t,o,s,!0),d=a[0]-c/2,f={x:u.x,y:u.y};u.y=p,u.x=d;var g=Zu(l.indicatorLabelPoint,Xu(u,this.group)),y=l.indicatorLabel;y.attr("invisible",!1);var v=this._applyTransform("left",l.mainGroup),m="horizontal"===this._orient;y.setStyle({text:(n||"")+r.formatValueText(e),verticalAlign:m?v:"middle",align:m?"center":v});var _={x:d,y:p,style:{fill:h}},x={style:{x:g[0],y:g[1]}};if(r.ecModel.isAnimationEnabled()&&!this._firstShowIndicator){var b={duration:100,easing:"cubicInOut",additive:!0};u.x=f.x,u.y=f.y,u.animateTo(_,b),y.animateTo(x,b)}else u.attr(_),y.attr(x);this._firstShowIndicator=!1;var w=this._shapes.handleLabels;if(w)for(var S=0;S<w.length;S++)this._api.enterBlur(w[S])}},e.prototype._enableHoverLinkToSeries=function(){var t=this;this._shapes.mainGroup.on("mousemove",(function(e){if(t._hovering=!0,!t._dragging){var n=t.visualMapModel.itemSize,i=t._applyTransform([e.offsetX,e.offsetY],t._shapes.mainGroup,!0,!0);i[1]=cV(pV(0,i[1]),n[1]),t._doHoverLinkToSeries(i[1],0<=i[0]&&i[0]<=n[0])}})).on("mouseout",(function(){t._hovering=!1,!t._dragging&&t._clearHoverLinkToSeries()}))},e.prototype._enableHoverLinkFromSeries=function(){var t=this.api.getZr();this.visualMapModel.option.hoverLink?(t.on("mouseover",this._hoverLinkFromSeriesMouseOver,this),t.on("mouseout",this._hideIndicator,this)):this._clearHoverLinkFromSeries()},e.prototype._doHoverLinkToSeries=function(t,e){var n=this.visualMapModel,i=n.itemSize;if(n.option.hoverLink){var r=[0,i[1]],o=n.getExtent();t=cV(pV(r[0],t),r[1]);var a=function(t,e,n){var i=6,r=t.get("hoverLinkDataSize");r&&(i=uV(r,e,n,!0)/2);return i}(n,o,r),s=[t-a,t+a],l=uV(t,r,o,!0),u=[uV(s[0],r,o,!0),uV(s[1],r,o,!0)];s[0]<r[0]&&(u[0]=-1/0),s[1]>r[1]&&(u[1]=1/0),e&&(u[0]===-1/0?this._showIndicator(l,u[1],"< ",a):u[1]===1/0?this._showIndicator(l,u[0],"> ",a):this._showIndicator(l,l,"≈ ",a));var h=this._hoverLinkDataIndices,c=[];(e||gV(n))&&(c=this._hoverLinkDataIndices=n.findTargetDataIndices(u));var p=function(t,e){var n={},i={};return r(t||[],n),r(e||[],i,n),[o(n),o(i)];function r(t,e,n){for(var i=0,r=t.length;i<r;i++){var o=Tr(t[i].seriesId,null);if(null==o)return;for(var a=_r(t[i].dataIndex),s=n&&n[o],l=0,u=a.length;l<u;l++){var h=a[l];s&&s[h]?s[h]=null:(e[o]||(e[o]={}))[h]=1}}}function o(t,e){var n=[];for(var i in t)if(t.hasOwnProperty(i)&&null!=t[i])if(e)n.push(+i);else{var r=o(t[i],!0);r.length&&n.push({seriesId:i,dataIndex:r})}return n}}(h,c);this._dispatchHighDown("downplay",lV(p[0],n)),this._dispatchHighDown("highlight",lV(p[1],n))}},e.prototype._hoverLinkFromSeriesMouseOver=function(t){var e=t.target,n=this.visualMapModel;if(e&&null!=vs(e).dataIndex){var i=vs(e),r=this.ecModel.getSeriesByIndex(i.seriesIndex);if(n.isTargetSeries(r)){var o=r.getData(i.dataType),a=o.get(n.getDataDimension(o),i.dataIndex);isNaN(a)||this._showIndicator(a,a)}}},e.prototype._hideIndicator=function(){var t=this._shapes;t.indicator&&t.indicator.attr("invisible",!0),t.indicatorLabel&&t.indicatorLabel.attr("invisible",!0);var e=this._shapes.handleLabels;if(e)for(var n=0;n<e.length;n++)this._api.leaveBlur(e[n])},e.prototype._clearHoverLinkToSeries=function(){this._hideIndicator();var t=this._hoverLinkDataIndices;this._dispatchHighDown("downplay",lV(t,this.visualMapModel)),t.length=0},e.prototype._clearHoverLinkFromSeries=function(){this._hideIndicator();var t=this.api.getZr();t.off("mouseover",this._hoverLinkFromSeriesMouseOver),t.off("mouseout",this._hideIndicator)},e.prototype._applyTransform=function(t,e,n,i){var r=Xu(e,i?null:this.group);return F(t)?Zu(t,r,n):ju(t,r,n)},e.prototype._dispatchHighDown=function(t,e){e&&e.length&&this.api.dispatchAction({type:t,batch:e})},e.prototype.dispose=function(){this._clearHoverLinkFromSeries(),this._clearHoverLinkToSeries()},e.prototype.remove=function(){this._clearHoverLinkFromSeries(),this._clearHoverLinkToSeries()},e.type="visualMap.continuous",e}(oV);function fV(t,e,n,i){return new nu({shape:{points:t},draggable:!!n,cursor:e,drift:n,onmousemove:function(t){ee(t.event)},ondragend:i})}function gV(t){var e=t.get("hoverLinkOnHandle");return!!(null==e?t.get("realtime"):e)}function yV(t){return"vertical"===t?"ns-resize":"ew-resize"}var vV={type:"selectDataRange",event:"dataRangeSelected",update:"update"},mV=function(t,e){e.eachComponent({mainType:"visualMap",query:t},(function(e){e.setSelected(t.selected)}))},_V=[{createOnAllSeries:!0,reset:function(t,e){var n=[];return e.eachComponent("visualMap",(function(e){var i,r,o,a,s,l=t.pipelineContext;!e.isTargetSeries(t)||l&&l.large||n.push((i=e.stateList,r=e.targetVisuals,o=B(e.getValueState,e),a=e.getDataDimension(t.getData()),s={},P(i,(function(t){var e=ST.prepareVisualTypes(r[t]);s[t]=e})),{progress:function(t,e){var n,i;function l(t){return gg(e,i,t)}function u(t,n){vg(e,i,t,n)}for(null!=a&&(n=e.getDimension(a));null!=(i=t.next());){var h=e.getRawDataItem(i);if(!h||!1!==h.visualMap)for(var c=null!=a?e.get(n,i):i,p=o(c),d=r[p],f=s[p],g=0,y=f.length;g<y;g++){var v=f[g];d[v]&&d[v].applyVisual(c,l,u)}}}}))})),n}},{createOnAllSeries:!0,reset:function(t,e){var n=t.getData(),i=[];e.eachComponent("visualMap",(function(e){if(e.isTargetSeries(t)){var r=e.getVisualMeta(B(xV,null,t,e))||{stops:[],outerColors:[]},o=e.getDataDimension(n),a=n.getDimensionInfo(o);null!=a&&(r.dimension=a.index,i.push(r))}})),t.getData().setVisual("visualMeta",i)}}];function xV(t,e,n,i){for(var r=e.targetVisuals[i],o=ST.prepareVisualTypes(r),a={color:yg(t.getData(),"color")},s=0,l=o.length;s<l;s++){var u=o[s],h=r["opacity"===u?"__alphaForOpacity":u];h&&h.applyVisual(n,c,p)}return a.color;function c(t){return a[t]}function p(t,e){a[t]=e}}var bV=P;function wV(t){var e=t&&t.visualMap;F(e)||(e=e?[e]:[]),bV(e,(function(t){if(t){SV(t,"splitList")&&!SV(t,"pieces")&&(t.pieces=t.splitList,delete t.splitList);var e=t.pieces;e&&F(e)&&bV(e,(function(t){Y(t)&&(SV(t,"start")&&!SV(t,"min")&&(t.min=t.start),SV(t,"end")&&!SV(t,"max")&&(t.max=t.end))}))}}))}function SV(t,e){return t&&t.hasOwnProperty&&t.hasOwnProperty(e)}var MV=!1;function IV(t){MV||(MV=!0,t.registerSubTypeDefaulter("visualMap",(function(t){return t.categories||(t.pieces?t.pieces.length>0:t.splitNumber>0)&&!t.calculable?"piecewise":"continuous"})),t.registerAction(vV,mV),P(_V,(function(e){t.registerVisual(t.PRIORITY.VISUAL.COMPONENT,e)})),t.registerPreprocessor(wV))}function TV(t){t.registerComponentModel(iV),t.registerComponentView(dV),IV(t)}var CV=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n._pieceList=[],n}return n(e,t),e.prototype.optionUpdated=function(e,n){t.prototype.optionUpdated.apply(this,arguments),this.resetExtent();var i=this._mode=this._determineMode();this._pieceList=[],AV[this._mode].call(this,this._pieceList),this._resetSelected(e,n);var r=this.option.categories;this.resetVisual((function(t,e){"categories"===i?(t.mappingMethod="category",t.categories=w(r)):(t.dataExtent=this.getExtent(),t.mappingMethod="piecewise",t.pieceList=O(this._pieceList,(function(t){return t=w(t),"inRange"!==e&&(t.visual=null),t})))}))},e.prototype.completeVisualOption=function(){var e=this.option,n={},i=ST.listVisualTypes(),r=this.isCategory();function o(t,e,n){return t&&t[e]&&t[e].hasOwnProperty(n)}P(e.pieces,(function(t){P(i,(function(e){t.hasOwnProperty(e)&&(n[e]=1)}))})),P(n,(function(t,n){var i=!1;P(this.stateList,(function(t){i=i||o(e,t,n)||o(e.target,t,n)}),this),!i&&P(this.stateList,(function(t){(e[t]||(e[t]={}))[n]=ZB(n,"inRange"===t?"active":"inactive",r)}))}),this),t.prototype.completeVisualOption.apply(this,arguments)},e.prototype._resetSelected=function(t,e){var n=this.option,i=this._pieceList,r=(e?n:t).selected||{};if(n.selected=r,P(i,(function(t,e){var n=this.getSelectedMapKey(t);r.hasOwnProperty(n)||(r[n]=!0)}),this),"single"===n.selectedMode){var o=!1;P(i,(function(t,e){var n=this.getSelectedMapKey(t);r[n]&&(o?r[n]=!1:o=!0)}),this)}},e.prototype.getItemSymbol=function(){return this.get("itemSymbol")},e.prototype.getSelectedMapKey=function(t){return"categories"===this._mode?t.value+"":t.index+""},e.prototype.getPieceList=function(){return this._pieceList},e.prototype._determineMode=function(){var t=this.option;return t.pieces&&t.pieces.length>0?"pieces":this.option.categories?"categories":"splitNumber"},e.prototype.setSelected=function(t){this.option.selected=w(t)},e.prototype.getValueState=function(t){var e=ST.findPieceIndex(t,this._pieceList);return null!=e&&this.option.selected[this.getSelectedMapKey(this._pieceList[e])]?"inRange":"outOfRange"},e.prototype.findTargetDataIndices=function(t){var e=[],n=this._pieceList;return this.eachTargetSeries((function(i){var r=[],o=i.getData();o.each(this.getDataDimension(o),(function(e,i){ST.findPieceIndex(e,n)===t&&r.push(i)}),this),e.push({seriesId:i.id,dataIndex:r})}),this),e},e.prototype.getRepresentValue=function(t){var e;if(this.isCategory())e=t.value;else if(null!=t.value)e=t.value;else{var n=t.interval||[];e=n[0]===-1/0&&n[1]===1/0?0:(n[0]+n[1])/2}return e},e.prototype.getVisualMeta=function(t){if(!this.isCategory()){var e=[],n=["",""],i=this,r=this._pieceList.slice();if(r.length){var o=r[0].interval[0];o!==-1/0&&r.unshift({interval:[-1/0,o]}),(o=r[r.length-1].interval[1])!==1/0&&r.push({interval:[o,1/0]})}else r.push({interval:[-1/0,1/0]});var a=-1/0;return P(r,(function(t){var e=t.interval;e&&(e[0]>a&&s([a,e[0]],"outOfRange"),s(e.slice()),a=e[1])}),this),{stops:e,outerColors:n}}function s(r,o){var a=i.getRepresentValue({interval:r});o||(o=i.getValueState(a));var s=t(a,o);r[0]===-1/0?n[0]=s:r[1]===1/0?n[1]=s:e.push({value:r[0],color:s},{value:r[1],color:s})}},e.type="visualMap.piecewise",e.defaultOption=Rh(eV.defaultOption,{selected:null,minOpen:!1,maxOpen:!1,align:"auto",itemWidth:20,itemHeight:14,itemSymbol:"roundRect",pieces:null,categories:null,splitNumber:5,selectedMode:"multiple",itemGap:10,hoverLink:!0}),e}(eV),AV={splitNumber:function(t){var e=this.option,n=Math.min(e.precision,20),i=this.getExtent(),r=e.splitNumber;r=Math.max(parseInt(r,10),1),e.splitNumber=r;for(var o=(i[1]-i[0])/r;+o.toFixed(n)!==o&&n<5;)n++;e.precision=n,o=+o.toFixed(n),e.minOpen&&t.push({interval:[-1/0,i[0]],close:[0,0]});for(var a=0,s=i[0];a<r;s+=o,a++){var l=a===r-1?i[1]:s+o;t.push({interval:[s,l],close:[1,1]})}e.maxOpen&&t.push({interval:[i[1],1/0],close:[0,0]}),ur(t),P(t,(function(t,e){t.index=e,t.text=this.formatValueText(t.interval)}),this)},categories:function(t){var e=this.option;P(e.categories,(function(e){t.push({text:this.formatValueText(e,!0),value:e})}),this),DV(e,t)},pieces:function(t){var e=this.option;P(e.pieces,(function(e,n){Y(e)||(e={value:e});var i={text:"",index:n};if(null!=e.label&&(i.text=e.label),e.hasOwnProperty("value")){var r=i.value=e.value;i.interval=[r,r],i.close=[1,1]}else{for(var o=i.interval=[],a=i.close=[0,0],s=[1,0,1],l=[-1/0,1/0],u=[],h=0;h<2;h++){for(var c=[["gte","gt","min"],["lte","lt","max"]][h],p=0;p<3&&null==o[h];p++)o[h]=e[c[p]],a[h]=s[p],u[h]=2===p;null==o[h]&&(o[h]=l[h])}u[0]&&o[1]===1/0&&(a[0]=0),u[1]&&o[0]===-1/0&&(a[1]=0),o[0]===o[1]&&a[0]&&a[1]&&(i.value=o[0])}i.visual=ST.retrieveVisuals(e),t.push(i)}),this),DV(e,t),ur(t),P(t,(function(t){var e=t.close,n=[["<","≤"][e[1]],[">","≥"][e[0]]];t.text=t.text||this.formatValueText(null!=t.value?t.value:t.interval,!1,n)}),this)}};function DV(t,e){var n=t.inverse;("vertical"===t.orient?!n:n)&&e.reverse()}var LV=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.doRender=function(){var t=this.group;t.removeAll();var e=this.visualMapModel,n=e.get("textGap"),i=e.textStyleModel,r=i.getFont(),o=i.getTextColor(),a=this._getItemAlign(),s=e.itemSize,l=this._getViewData(),u=l.endsText,h=Q(e.get("showLabel",!0),!u);u&&this._renderEndsText(t,u[0],s,h,a),P(l.viewPieceList,(function(i){var l=i.piece,u=new zi;u.onclick=B(this._onItemClick,this,l),this._enableHoverLink(u,i.indexInModelPieceList);var c=e.getRepresentValue(l);if(this._createItemSymbol(u,c,[0,0,s[0],s[1]]),h){var p=this.visualMapModel.getValueState(c);u.add(new us({style:{x:"right"===a?-n:s[0]+n,y:s[1]/2,text:l.text,verticalAlign:"middle",align:a,font:r,fill:o,opacity:"outOfRange"===p?.5:1}}))}t.add(u)}),this),u&&this._renderEndsText(t,u[1],s,h,a),Nc(e.get("orient"),t,e.get("itemGap")),this.renderBackground(t),this.positionGroup(t)},e.prototype._enableHoverLink=function(t,e){var n=this;t.on("mouseover",(function(){return i("highlight")})).on("mouseout",(function(){return i("downplay")}));var i=function(t){var i=n.visualMapModel;i.option.hoverLink&&n.api.dispatchAction({type:t,batch:lV(i.findTargetDataIndices(e),i)})}},e.prototype._getItemAlign=function(){var t=this.visualMapModel,e=t.option;if("vertical"===e.orient)return sV(t,this.api,t.itemSize);var n=e.align;return n&&"auto"!==n||(n="left"),n},e.prototype._renderEndsText=function(t,e,n,i,r){if(e){var o=new zi,a=this.visualMapModel.textStyleModel;o.add(new us({style:{x:i?"right"===r?n[0]:0:n[0]/2,y:n[1]/2,verticalAlign:"middle",align:i?r:"center",text:e,font:a.getFont(),fill:a.getTextColor()}})),t.add(o)}},e.prototype._getViewData=function(){var t=this.visualMapModel,e=O(t.getPieceList(),(function(t,e){return{piece:t,indexInModelPieceList:e}})),n=t.get("text"),i=t.get("orient"),r=t.get("inverse");return("horizontal"===i?r:!r)?e.reverse():n&&(n=n.slice().reverse()),{viewPieceList:e,endsText:n}},e.prototype._createItemSymbol=function(t,e,n){t.add(py(this.getControllerVisual(e,"symbol"),n[0],n[1],n[2],n[3],this.getControllerVisual(e,"color")))},e.prototype._onItemClick=function(t){var e=this.visualMapModel,n=e.option,i=w(n.selected),r=e.getSelectedMapKey(t);"single"===n.selectedMode?(i[r]=!0,P(i,(function(t,e){i[e]=e===r}))):i[r]=!i[r],this.api.dispatchAction({type:"selectDataRange",from:this.uid,visualMapId:this.visualMapModel.id,selected:i})},e.type="visualMap.piecewise",e}(oV);function kV(t){t.registerComponentModel(CV),t.registerComponentView(LV),IV(t)}var PV={label:{enabled:!0},decal:{show:!1}},OV=Lr(),RV={};function NV(t,e){var n=t.getModel("aria");if(n.get("enabled")){var i=w(PV);S(i.label,t.getLocaleModel().get("aria"),!1),S(n.option,i,!1),function(){if(n.getModel("decal").get("show")){var e=ht();t.eachSeries((function(t){if(t.useColorPaletteOnData){var n=e.get(t.type);n||(n={},e.set(t.type,n)),OV(t).scope=n}})),t.eachRawSeries((function(e){if(!t.isSeriesFiltered(e))if("function"!=typeof e.enableAriaDecal){var n=e.getData();if(e.useColorPaletteOnData){var i=e.getRawData(),r={},o=OV(e).scope;n.each((function(t){var e=n.getRawIndex(t);r[e]=t}));var a=i.count();i.each((function(t){var s=r[t],l=i.getName(t)||t+"",h=mp(e.ecModel,l,o,a),c=n.getItemVisual(s,"decal");n.setItemVisual(s,"decal",u(c,h))}))}else{var s=mp(e.ecModel,e.name,RV,t.getSeriesCount()),l=n.getVisual("decal");n.setVisual("decal",u(l,s))}}else e.enableAriaDecal();function u(t,e){var n=t?I(I({},e),t):e;return n.dirty=!0,n}}))}}(),function(){var i=t.getLocaleModel().get("aria"),o=n.getModel("label");if(o.option=T(o.option,i),!o.get("enabled"))return;var a=e.getZr().dom;if(o.get("description"))return void a.setAttribute("aria-label",o.get("description"));var s,l=t.getSeriesCount(),u=o.get(["data","maxCount"])||10,h=o.get(["series","maxCount"])||10,c=Math.min(l,h);if(l<1)return;var p=function(){var e=t.get("title");e&&e.length&&(e=e[0]);return e&&e.text}();if(p){var d=o.get(["general","withTitle"]);s=r(d,{title:p})}else s=o.get(["general","withoutTitle"]);var f=[],g=l>1?o.get(["series","multiple","prefix"]):o.get(["series","single","prefix"]);s+=r(g,{seriesCount:l}),t.eachSeries((function(e,n){if(n<c){var i=void 0,a=e.get("name")?"withName":"withoutName";i=r(i=l>1?o.get(["series","multiple",a]):o.get(["series","single",a]),{seriesId:e.seriesIndex,seriesName:e.get("name"),seriesType:(_=e.subType,t.getLocaleModel().get(["series","typeNames"])[_]||"自定义图")});var s=e.getData();if(s.count()>u)i+=r(o.get(["data","partialData"]),{displayCnt:u});else i+=o.get(["data","allData"]);for(var h=[],p=0;p<s.count();p++)if(p<u){var d=s.getName(p),g=wd(s,p),y=o.get(["data",d?"withName":"withoutName"]);h.push(r(y,{name:d,value:g}))}var v=o.get(["data","separator","middle"]),m=o.get(["data","separator","end"]);i+=h.join(v)+m,f.push(i)}var _}));var y=o.getModel(["series","multiple","separator"]),v=y.get("middle"),m=y.get("end");s+=f.join(v)+m,a.setAttribute("aria-label",s)}()}function r(t,e){if("string"!=typeof t)return t;var n=t;return P(e,(function(t,e){n=n.replace(new RegExp("\\{\\s*"+e+"\\s*\\}","g"),t)})),n}}function EV(t){if(t&&t.aria){var e=t.aria;null!=e.show&&(e.enabled=e.show),e.label=e.label||{},P(["description","general","series","data"],(function(t){null!=e[t]&&(e.label[t]=e[t])}))}}var zV={value:"eq","<":"lt","<=":"lte",">":"gt",">=":"gte","=":"eq","!=":"ne","<>":"ne"},BV=function(){function t(t){if(null==(this._condVal=H(t)?new RegExp(t):$(t)?t:null)){var e="";0,yr(e)}}return t.prototype.evaluate=function(t){var e=typeof t;return"string"===e?this._condVal.test(t):"number"===e&&this._condVal.test(t+"")},t}(),VV=function(){function t(){}return t.prototype.evaluate=function(){return this.value},t}(),FV=function(){function t(){}return t.prototype.evaluate=function(){for(var t=this.children,e=0;e<t.length;e++)if(!t[e].evaluate())return!1;return!0},t}(),GV=function(){function t(){}return t.prototype.evaluate=function(){for(var t=this.children,e=0;e<t.length;e++)if(t[e].evaluate())return!0;return!1},t}(),HV=function(){function t(){}return t.prototype.evaluate=function(){return!this.child.evaluate()},t}(),WV=function(){function t(){}return t.prototype.evaluate=function(){for(var t=!!this.valueParser,e=(0,this.getValue)(this.valueGetterParam),n=t?this.valueParser(e):null,i=0;i<this.subCondList.length;i++)if(!this.subCondList[i].evaluate(t?n:e))return!1;return!0},t}();function UV(t,e){if(!0===t||!1===t){var n=new VV;return n.value=t,n}var i="";return XV(t)||yr(i),t.and?YV("and",t,e):t.or?YV("or",t,e):t.not?function(t,e){var n=t.not,i="";0;XV(n)||yr(i);var r=new HV;r.child=UV(n,e),r.child||yr(i);return r}(t,e):function(t,e){for(var n="",i=e.prepareGetValue(t),r=[],o=z(t),a=t.parser,s=a?kd(a):null,l=0;l<o.length;l++){var u=o[l];if("parser"!==u&&!e.valueGetterAttrMap.get(u)){var h=dt(zV,u)?zV[u]:u,c=t[u],p=s?s(c):c,d=Ed(h,p)||"reg"===h&&new BV(p);d||yr(n),r.push(d)}}r.length||yr(n);var f=new WV;return f.valueGetterParam=i,f.valueParser=s,f.getValue=e.getValue,f.subCondList=r,f}(t,e)}function YV(t,e,n){var i=e[t],r="";F(i)||yr(r),i.length||yr(r);var o="and"===t?new FV:new GV;return o.children=O(i,(function(t){return UV(t,n)})),o.children.length||yr(r),o}function XV(t){return Y(t)&&!k(t)}var ZV=function(){function t(t,e){this._cond=UV(t,e)}return t.prototype.evaluate=function(){return this._cond.evaluate()},t}();var jV={type:"echarts:filter",transform:function(t){for(var e,n,i,r=t.upstream,o=(n=t.config,i={valueGetterAttrMap:ht({dimension:!0}),prepareGetValue:function(t){var e="",n=t.dimension;dt(t,"dimension")||yr(e);var i=r.getDimensionInfo(n);return i||yr(e),{dimIdx:i.index}},getValue:function(t){return r.retrieveValueFromItem(e,t.dimIdx)}},new ZV(n,i)),a=[],s=0,l=r.count();s<l;s++)e=r.getRawDataItem(s),o.evaluate()&&a.push(e);return{data:a}}};var qV={type:"echarts:sort",transform:function(t){var e=t.upstream,n=t.config,i="",r=_r(n);r.length||yr(i);var o=[];P(r,(function(t){var n=t.dimension,r=t.order,a=t.parser,s=t.incomparable;if(null==n&&yr(i),"asc"!==r&&"desc"!==r&&yr(i),s&&"min"!==s&&"max"!==s){var l="";0,yr(l)}if("asc"!==r&&"desc"!==r){var u="";0,yr(u)}var h=e.getDimensionInfo(n);h||yr(i);var c=a?kd(a):null;a&&!c&&yr(i),o.push({dimIdx:h.index,parser:c,comparator:new Rd(r,s)})}));var a=e.sourceFormat;a!==qc&&a!==Kc&&yr(i);for(var s=[],l=0,u=e.count();l<u;l++)s.push(e.getRawDataItem(l));return s.sort((function(t,n){for(var i=0;i<o.length;i++){var r=o[i],a=e.retrieveValueFromItem(t,r.dimIdx),s=e.retrieveValueFromItem(n,r.dimIdx);r.parser&&(a=r.parser(a),s=r.parser(s));var l=r.comparator.evaluate(a,s);if(0!==l)return l}return 0})),{data:s}}};var KV=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="dataset",e}return n(e,t),e.prototype.init=function(e,n,i){t.prototype.init.call(this,e,n,i),this._sourceManager=new Yd(this),Xd(this)},e.prototype.mergeOption=function(e,n){t.prototype.mergeOption.call(this,e,n),Xd(this)},e.prototype.optionUpdated=function(){this._sourceManager.dirty()},e.prototype.getSourceManager=function(){return this._sourceManager},e.type="dataset",e.defaultOption={seriesLayoutBy:tp},e}(Wc),$V=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="dataset",e}return n(e,t),e.type="dataset",e}(xf);qm([function(t){t.registerPainter("canvas",aw)}]),qm([function(t){t.registerPainter("svg",$b)}]),qm([function(t){t.registerChartView(Gw),t.registerSeriesModel(sw),t.registerLayout(Hw("line",!0)),t.registerVisual({seriesType:"line",reset:function(t){var e=t.getData(),n=t.getModel("lineStyle").getLineStyle();n&&!n.stroke&&(n.stroke=e.getVisual("style").fill),e.setVisual("legendLineStyle",n)}}),t.registerProcessor(t.PRIORITY.PROCESSOR.STATISTIC,Yw("line"))},function(t){t.registerChartView(Qw),t.registerSeriesModel(Zw),t.registerLayout(t.PRIORITY.VISUAL.LAYOUT,V(rx,"bar")),t.registerLayout(t.PRIORITY.VISUAL.PROGRESSIVE_LAYOUT,ox),t.registerProcessor(t.PRIORITY.PROCESSOR.STATISTIC,Yw("bar")),t.registerAction({type:"changeAxisOrder",event:"changeAxisOrder",update:"update"},(function(t,e){var n=t.componentType||"series";e.eachComponent({mainType:n,query:t},(function(e){t.sortInfo&&e.axis.setCategorySortInfo(t.sortInfo)}))}))},function(t){t.registerChartView(xS),t.registerSeriesModel(SS),Qg("pie",t.registerAction),t.registerLayout(V(pS,"pie")),t.registerProcessor(dS("pie"))},function(t){qm(wM),t.registerSeriesModel(MS),t.registerChartView(AS),t.registerLayout(Hw("scatter"))},function(t){qm(EM),t.registerChartView(CM),t.registerSeriesModel(AM),t.registerLayout(SM),t.registerProcessor(dS("radar")),t.registerPreprocessor(TM)},function(t){qm(bI),t.registerChartView(aI),t.registerSeriesModel(sI),t.registerLayout(uI),t.registerProcessor(t.PRIORITY.PROCESSOR.STATISTIC,lI),Qg("map",t.registerAction)},function(t){t.registerChartView(OI),t.registerSeriesModel(qI),t.registerLayout($I),t.registerVisual(JI),function(t){t.registerAction({type:"treeExpandAndCollapse",event:"treeExpandAndCollapse",update:"update"},(function(t,e){e.eachComponent({mainType:"series",subType:"tree",query:t},(function(e){var n=t.dataIndex,i=e.getData().tree.getNodeByDataIndex(n);i.isExpand=!i.isExpand}))})),t.registerAction({type:"treeRoam",event:"treeRoam",update:"none"},(function(t,e){e.eachComponent({mainType:"series",subType:"tree",query:t},(function(e){var n=_I(e.coordinateSystem,t);e.setCenter&&e.setCenter(n.center),e.setZoom&&e.setZoom(n.zoom)}))}))}(t)},function(t){t.registerSeriesModel(aT),t.registerChartView(_T),t.registerVisual(ET),t.registerLayout(qT),function(t){for(var e=0;e<rT.length;e++)t.registerAction({type:rT[e],update:"updateView"},iT);t.registerAction({type:"treemapRootToNode",update:"updateView"},(function(t,e){e.eachComponent({mainType:"series",subType:"treemap",query:t},(function(e,n){var i=QI(t,["treemapZoomToNode","treemapRootToNode"],e);if(i){var r=e.getViewRoot();r&&(t.direction=eT(r,i.node)?"rollUp":"drillDown"),e.resetViewRoot(i.node)}}))}))}(t)},function(t){t.registerChartView(jC),t.registerSeriesModel(eA),t.registerProcessor(eC),t.registerVisual(nC),t.registerVisual(rC),t.registerLayout(fC),t.registerLayout(t.PRIORITY.VISUAL.POST_CHART_LAYOUT,bC),t.registerLayout(SC),t.registerCoordinateSystem("graphView",{dimensions:cI.dimensions,create:MC}),t.registerAction({type:"focusNodeAdjacency",event:"focusNodeAdjacency",update:"series:focusNodeAdjacency"},(function(){})),t.registerAction({type:"unfocusNodeAdjacency",event:"unfocusNodeAdjacency",update:"series:unfocusNodeAdjacency"},(function(){})),t.registerAction(nA,(function(t,e){e.eachComponent({mainType:"series",query:t},(function(e){var n=_I(e.coordinateSystem,t);e.setCenter&&e.setCenter(n.center),e.setZoom&&e.setZoom(n.zoom)}))}))},function(t){t.registerChartView(sA),t.registerSeriesModel(lA)},function(t){t.registerChartView(cA),t.registerSeriesModel(pA),t.registerLayout(dA),t.registerProcessor(dS("funnel"))},function(t){qm(VD),t.registerChartView(fA),t.registerSeriesModel(_A),t.registerVisual(t.PRIORITY.VISUAL.BRUSH,wA)},function(t){t.registerChartView(HD),t.registerSeriesModel(WD),t.registerLayout(UD),t.registerVisual(nL),t.registerAction({type:"dragNode",event:"dragnode",update:"update"},(function(t,e){e.eachComponent({mainType:"series",subType:"sankey",query:t},(function(e){e.setNodePosition(t.dataIndex,[t.localX,t.localY])}))}))},function(t){t.registerSeriesModel(rL),t.registerChartView(oL),t.registerVisual(cL),t.registerLayout(dL),t.registerTransform(fL)},function(t){t.registerChartView(yL),t.registerSeriesModel(CL),t.registerPreprocessor(AL),t.registerVisual(OL),t.registerLayout(NL)},function(t){t.registerChartView(VL),t.registerSeriesModel(FL),t.registerLayout(Hw("effectScatter"))},function(t){t.registerChartView(jL),t.registerSeriesModel(JL),t.registerLayout(ZL),t.registerVisual(tk)},function(t){t.registerChartView(ik),t.registerSeriesModel(rk)},function(t){t.registerChartView(lk),t.registerSeriesModel(Tk),t.registerLayout(V(rx,"pictorialBar"))},function(t){t.registerChartView(Ck),t.registerSeriesModel(Ak),t.registerLayout(Dk),t.registerProcessor(dS("themeRiver"))},function(t){t.registerChartView(Rk),t.registerSeriesModel(Nk),t.registerLayout(V(Bk,"sunburst")),t.registerProcessor(V(dS,"sunburst")),t.registerVisual(Fk),function(t){t.registerAction({type:Pk,update:"updateView"},(function(t,e){e.eachComponent({mainType:"series",subType:"sunburst",query:t},(function(e,n){var i=QI(t,[Pk],e);if(i){var r=e.getViewRoot();r&&(t.direction=eT(r,i.node)?"rollUp":"drillDown"),e.resetViewRoot(i.node)}}))})),t.registerAction({type:Ok,update:"none"},(function(t,e,n){t=I({},t),e.eachComponent({mainType:"series",subType:"sunburst",query:t},(function(e){var n=QI(t,[Ok],e);n&&(t.dataIndex=n.node.dataIndex)})),n.dispatchAction(I(t,{type:"highlight"}))})),t.registerAction({type:"sunburstUnhighlight",update:"updateView"},(function(t,e,n){t=I({},t),n.dispatchAction(I(t,{type:"downplay"}))}))}(t)},function(t){t.registerChartView(zP),t.registerSeriesModel(EP)}]),qm((function(t){qm(wM),qm(iR)})),qm((function(t){qm(iR),hM.registerAxisPointerClass("PolarAxisPointer",rR),t.registerCoordinateSystem("polar",vR),t.registerComponentModel(aR),t.registerComponentView(OR),ES(t,"angle",lR,kR),ES(t,"radius",uR,PR),t.registerComponentView(wR),t.registerComponentView(TR),t.registerLayout(V(LR,"bar"))})),qm(bI),qm((function(t){qm(iR),hM.registerAxisPointerClass("SingleAxisPointer",XR),t.registerComponentView(KR),t.registerComponentView(zR),t.registerComponentModel(VR),ES(t,"single",VR,VR.defaultOption),t.registerCoordinateSystem("single",WR)})),qm(VD),qm((function(t){t.registerComponentModel($R),t.registerComponentView(eN),t.registerCoordinateSystem("calendar",iN)})),qm((function(t){t.registerComponentModel(lN),t.registerComponentView(uN),t.registerPreprocessor(sN)})),qm((function(t){t.registerComponentModel(NN),t.registerComponentView(zN),ON("saveAsImage",BN),ON("magicType",GN),ON("dataView",jN),ON("dataZoom",vE),ON("restore",QN),qm(LN)})),qm((function(t){qm(iR),t.registerComponentModel(xE),t.registerComponentView(GE),t.registerAction({type:"showTip",event:"showTip",update:"tooltip:manuallyShowTip"},(function(){})),t.registerAction({type:"hideTip",event:"hideTip",update:"tooltip:manuallyHideTip"},(function(){}))})),qm(iR),qm((function(t){t.registerComponentView(uz),t.registerComponentModel(hz),t.registerPreprocessor(XE),t.registerVisual(t.PRIORITY.VISUAL.BRUSH,rz),t.registerAction({type:"brush",event:"brush",update:"updateVisual"},(function(t,e){e.eachComponent({mainType:"brush",query:t},(function(e){e.setAreas(t.areas)}))})),t.registerAction({type:"brushSelect",event:"brushSelected",update:"none"},(function(){})),t.registerAction({type:"brushEnd",event:"brushEnd",update:"none"},(function(){})),ON("brush",dz)})),qm((function(t){t.registerComponentModel(fz),t.registerComponentView(gz)})),qm((function(t){t.registerComponentModel(vz),t.registerComponentView(wz),t.registerSubTypeDefaulter("timeline",(function(){return"slider"})),function(t){t.registerAction({type:"timelineChange",event:"timelineChanged",update:"prepareAndUpdate"},(function(t,e){var n=e.getComponent("timeline");return n&&null!=t.currentIndex&&(n.setCurrentIndex(t.currentIndex),!n.get("loop",!0)&&n.isIndexMax()&&n.setPlayState(!1)),e.resetOption("timeline",{replaceMerge:n.get("replaceMerge",!0)}),T({currentIndex:n.option.currentIndex},t)})),t.registerAction({type:"timelinePlayChange",event:"timelinePlayChanged",update:"update"},(function(t,e){var n=e.getComponent("timeline");n&&null!=t.playState&&n.setPlayState(t.playState)}))}(t),t.registerPreprocessor(Iz)})),qm((function(t){t.registerComponentModel(Pz),t.registerComponentView(Wz),t.registerPreprocessor((function(t){Az(t.series,"markPoint")&&(t.markPoint=t.markPoint||{})}))})),qm((function(t){t.registerComponentModel(Uz),t.registerComponentView($z),t.registerPreprocessor((function(t){Az(t.series,"markLine")&&(t.markLine=t.markLine||{})}))})),qm((function(t){t.registerComponentModel(Jz),t.registerComponentView(aB),t.registerPreprocessor((function(t){Az(t.series,"markArea")&&(t.markArea=t.markArea||{})}))})),qm((function(t){qm(mB),qm(IB)})),qm((function(t){qm(zB),qm(XB)})),qm(zB),qm(XB),qm((function(t){qm(TV),qm(kV)})),qm(TV),qm(kV),qm((function(t){t.registerPreprocessor(EV),t.registerVisual(t.PRIORITY.VISUAL.ARIA,NV)})),qm((function(t){t.registerTransform(jV),t.registerTransform(qV)})),qm((function(t){t.registerComponentModel(KV),t.registerComponentView($V)})),t.Axis=sb,t.ChartView=Mf,t.ComponentModel=Wc,t.ComponentView=xf,t.List=T_,t.Model=kh,t.PRIORITY=zv,t.SeriesModel=pf,t.color=ln,t.connect=function(t){if(F(t)){var e=t;t=null,Lv(e,(function(e){null!=e.group&&(t=e.group)})),t=t||"g_"+Am++,Lv(e,(function(e){e.group=t}))}return Tm[t]=!0,t},t.dataTool={},t.dependencies={zrender:"5.1.0"},t.disConnect=Lm,t.disconnect=km,t.dispose=function(t){"string"==typeof t?t=Im[t]:t instanceof pm||(t=Pm(t)),t instanceof pm&&!t.isDisposed()&&t.dispose()},t.env=a,t.extendChartView=function(t){var e=Mf.extend(t);return Mf.registerClass(e),e},t.extendComponentModel=function(t){var e=Wc.extend(t);return Wc.registerClass(e),e},t.extendComponentView=function(t){var e=xf.extend(t);return xf.registerClass(e),e},t.extendSeriesModel=function(t){var e=pf.extend(t);return pf.registerClass(e),e},t.format=qx,t.getCoordinateSystemDimensions=function(t){var e=Cp.get(t);if(e)return e.getDimensionsInfo?e.getDimensionsInfo():e.dimensions.slice()},t.getInstanceByDom=Pm,t.getInstanceById=function(t){return Im[t]},t.getMap=function(t){return Cv(t)},t.graphic=jx,t.helper=Yx,t.init=function(t,e,n){var i=Pm(t);if(i)return i;var r=new pm(t,e,n);return r.id="ec_"+Cm++,Im[r.id]=r,zr(t,Dm,r.id),am(r),Lv(xm,(function(t){t(r)})),r},t.innerDrawElementOnCanvas=Dy,t.matrix=Se,t.number=Xx,t.parseGeoJSON=fv,t.parseGeoJson=fv,t.registerAction=Bm,t.registerCoordinateSystem=Vm,t.registerLayout=Fm,t.registerLoading=Um,t.registerLocale=Gh,t.registerMap=Ym,t.registerPostInit=Em,t.registerPostUpdate=zm,t.registerPreprocessor=Rm,t.registerProcessor=Nm,t.registerTheme=Om,t.registerTransform=Xm,t.registerVisual=Gm,t.setCanvasCreator=function(t){m("createCanvas",t)},t.throttle=Of,t.time=Zx,t.use=qm,t.util=Kx,t.vector=zt,t.version="5.1.1",t.zrUtil=gt,t.zrender=Ui,Object.defineProperty(t,"__esModule",{value:!0})}));
diff --git a/uni_modules/lime-echart/components/l-echart/l-echart.vue b/uni_modules/lime-echart/components/l-echart/l-echart.vue
deleted file mode 100644
index 19daeb7..0000000
--- a/uni_modules/lime-echart/components/l-echart/l-echart.vue
+++ /dev/null
@@ -1,478 +0,0 @@
-<template>
-	<view class="lime-echart" :style="customStyle" v-if="canvasId">
-		<!-- #ifndef APP-NVUE -->
-		<canvas
-			class="lime-echart__canvas"
-			v-if="use2dCanvas"
-			type="2d"
-			:id="canvasId"
-			:style="'width:' + width + 'px;height:' + height + 'px'"
-			:disable-scroll="isDisableScroll"
-			@touchstart="touchStart"
-			@touchmove="touchMove"
-			@touchend="touchEnd"
-		/>
-		<canvas
-			class="lime-echart__canvas"
-			v-else
-			:width="nodeWidth"
-			:height="nodeHeight"
-			:style="'width:' + width + 'px;height:' + height + 'px'"
-			:canvas-id="canvasId"
-			:id="canvasId"
-			:disable-scroll="isDisableScroll"
-			@touchstart="touchStart"
-			@touchmove="touchMove"
-			@touchend="touchEnd"
-		/>
-		<!-- #endif -->
-		<!-- #ifdef APP-NVUE -->
-		<web-view
-			class="lime-echart__canvas"
-			:id="canvasId"
-			:webview-styles="webviewStyles"
-			ref="webview"
-			src="http://liangei.gitee.io/limeui/hybrid/html/lime-ui/lime-echart/index.html?v=0.2.3"
-			@pagefinish="finished = true"
-			@onPostMessage="onMessage"
-		></web-view>
-		<!-- #endif -->
-	</view>
-</template>
-<script>
-// #ifndef APP-NVUE
-import Canvas from './canvas';
-import * as echarts from './echarts';
-import { compareVersion, wrapTouch, devicePixelRatio } from './utils';
-// #endif
-// #ifdef APP-NVUE
-import { base64ToPath } from './utils';
-// #endif
-export default {
-	// version: '0.2.9' 
-	name: 'lime-echart',
-	props: {
-		// #ifdef MP-WEIXIN || MP-TOUTIAO
-		type: {
-			type: String,
-			default: '2d'
-		},
-		// #endif
-		ec: {
-			type: Object,
-			default: () => {}
-		},
-		onInit: Function,
-		// #ifdef APP-NVUE
-		webviewStyles: Object,
-		params: {
-			type: Object,
-			default: () => {}
-		},
-		// #endif
-		customStyle: String,
-		isAutoPlay: Boolean,
-		isDisableScroll: Boolean,
-		isEnable: Boolean,
-		isClickable: {
-			type: Boolean,
-			default: true
-		}
-	},
-	data() {
-		return {
-			// #ifdef MP-WEIXIN || MP-TOUTIAO
-			use2dCanvas: true,
-			// #endif
-			// #ifndef MP-WEIXIN || MP-TOUTIAO
-			use2dCanvas: false,
-			// #endif
-			width: null,
-			height: null,
-			nodeWidth: null,
-			nodeHeight: null,
-			canvasNode: null,
-			config: {},
-			inited: false,
-			finished: false,
-			file: '',
-			platform: ''
-		};
-	},
-	computed: {
-		canvasId() {
-			return `lime-echart${this._uid}`
-		}
-	},
-	watch: {
-		'ec.option': {
-			deep: true,
-			handler(val, oldVal) {
-				if(this.isAutoPlay) {
-					if(this.ec.clear){this.clear()}
-					this.setOption(val);
-				}
-			}
-		}
-	},
-	beforeDestroy() {
-		this.clear()
-		this.dispose()
-	},
-	created() {
-		// #ifdef APP-NVUE
-		// this.parent = this.getParent()
-		// #endif
-		// #ifndef APP-NVUE
-		echarts.registerPreprocessor(option => {
-			if (option && option.series) {
-				if (option.series.length > 0) {
-					option.series.forEach(series => {
-						series.progressive = 0;
-					});
-				} else if (typeof option.series === 'object') {
-					option.series.progressive = 0;
-				}
-			}
-		});
-		// #ifdef MP-WEIXIN || MP-TOUTIAO
-		const { SDKVersion, version, platform, environment } = uni.getSystemInfoSync();
-		// #endif
-		// #ifdef MP-WEIXIN
-		this.isPC = /windows/i.test(platform)
-		this.use2dCanvas = this.type === '2d' && compareVersion(SDKVersion, '2.9.2') >= 0 && !((/ios/i.test(platform) && /7.0.20/.test(version)) || /wxwork/i.test(environment)) && !this.isPC;
-		// #endif
-		// #ifdef MP-TOUTIAO
-		this.isPC = /devtools/i.test(platform)
-		this.use2dCanvas = this.type === '2d' && compareVersion(SDKVersion, '1.78.0') >= 0;
-		// #endif
-		// #endif
-	},
-	
-	mounted() {
-		if(this.ec && !this.ec?.lazyLoad || this.isEnable) {
-			if(!this.onInit) {
-				this.init();
-				return
-			}
-		}
-		if(this.onInit) {
-			this.init(this.onInit)
-		}
-	},
-	methods: {
-		// #ifdef APP-NVUE
-		getParent() {
-			let parent = this.$parent;
-			let parentRefs = Object.values(parent.$refs)
-			while(!parentRefs.length || parentRefs.find((v) => v._uid && v.uid == this._uid)) {
-				parent = parent.$parent
-				parentRefs = Object.values(parent.$refs)
-				if (!parent) return false
-			}
-			return parent;
-		},
-		getWebview() {
-			if(this.finished) {
-				return Promise.resolve(this.finished)
-			}
-			return new Promise(resolve => {
-				this.$watch('finished', (val) => {
-					if(val) {
-						resolve(this.finished)
-					}
-				})
-			})
-		},
-		onMessage(e) {
-			const res = e?.detail?.data[0] || null;
-			if (res?.event) {
-				if(res.event === 'inited') {
-					this.inited = true
-				}
-				this.$emit(res.event, JSON.parse(res.data));
-			} else if(res?.file){
-				this.file = res.data
-			} else if(!res[0] && JSON.stringify(res[0]) != '{}'){
-				console.error(res);
-			}
-		},
-		// #endif
-		async setChart(callback, params) {
-			await this.enabled()
-			// #ifndef APP-NVUE
-			if(typeof callback === 'function' && this.chart) {
-				await callback(this.chart);
-			}
-			// #endif
-			// #ifdef APP-NVUE
-			if(typeof callback === 'function') {
-				this.$refs.webview.evalJs(`setChart(${JSON.stringify(callback.toString())}, ${JSON.stringify(params || this.params)})`);
-			}
-			// #endif
-		},
-		async setOption() {
-			await this.enabled()
-			// #ifndef APP-NVUE
-			if (!this.chart || !this.chart.setOption) {
-				console.warn(`组件还未初始化`)
-			} else {
-				this.chart.setOption(...arguments);
-			}
-			// #endif
-			// #ifdef APP-NVUE
-			if(arguments) {
-				this.$refs.webview.evalJs(`setOption(${JSON.stringify(arguments)})`);
-			}
-			// #endif
-		},
-		async showLoading() {
-			// #ifndef APP-NVUE
-			await this.enabled()
-			if(this.chart) {
-				this.chart.showLoading()
-			}
-			// #endif
-			// #ifdef APP-NVUE
-			this.$refs.webview.evalJs(`showLoading()`);
-			// #endif
-		},
-		hideLoading() {
-			// #ifndef APP-NVUE
-			if(this.chart) {
-				this.chart.hideLoading()
-			}
-			// #endif
-			// #ifdef APP-NVUE
-			this.$refs.webview.evalJs(`hideLoading()`);
-			// #endif
-		},
-		clear() {
-			// #ifndef APP-NVUE
-			if(this.chart) {
-				this.chart.clear()
-			}
-			// #endif
-			// #ifdef APP-NVUE
-			this.$refs.webview.evalJs(`clear()`);
-			// #endif
-		},
-		dispose() {
-			// #ifndef APP-NVUE
-			if(this.chart) {
-				this.chart.dispose()
-			}
-			// #endif
-			// #ifdef APP-NVUE
-			this.$refs.webview.evalJs(`dispose()`);
-			// #endif
-		},
-		canvasToTempFilePath(args = {}) {
-			// #ifndef APP-NVUE
-			const { use2dCanvas, canvasId, canvasNode } = this;
-			return new Promise((resolve, reject) => {
-				const copyArgs = Object.assign({
-					canvasId,
-					success: resolve,
-					fail: reject
-				}, args);
-				if (use2dCanvas) {
-					delete copyArgs.canvasId;
-					copyArgs.canvas = canvasNode;
-				}
-				uni.canvasToTempFilePath(copyArgs, this);
-			});
-			// #endif
-			// #ifdef APP-NVUE
-			this.file = ''
-			this.$refs.webview.evalJs(`canvasToTempFilePath()`);
-			return new Promise((resolve, reject) => {
-				this.$watch('file', async (file) => {
-					if(file) {
-						const tempFilePath = await base64ToPath(file)
-						resolve(args.success({tempFilePath}))
-					} else {
-						reject(args.fail({error: ``}))
-					}
-				})
-			})
-			// #endif
-		},
-		async init(callback, params) {
-			
-			
-			
-			// #ifndef APP-NVUE
-			let config = await this.getContext();
-			if(typeof callback === 'function') {
-				this.chart = await callback(config);
-			} else {
-				const {canvas} = config
-				this.chart = echarts.init(canvas, null, config);
-				canvas.setChart(this.chart);
-				if(this.ec && this.ec.option) {
-					this.setOption(this.ec.option)
-				}
-				this.inited = true
-				this.$emit('inited', true)
-			}
-			// #endif
-			// #ifdef APP-NVUE
-			await this.getWebview()
-			if(typeof callback === 'function') {
-				this.$refs.webview.evalJs(`init(${JSON.stringify(callback.toString())}, ${JSON.stringify(params || this.params)})`);
-			} else {
-				this.$refs.webview.evalJs(`init()`);
-				if(this.ec && this.ec.option) {
-					this.setOption(this.ec.option)
-				}
-			}
-			// #endif
-		},
-		async enabled() {
-			if(this.isEnable) {
-				// #ifndef APP-NVUE
-				await this.getContext();
-				// #endif
-				// #ifdef APP-NVUE
-				if(this.inited) {
-					return Promise.resolve(this.inited)
-				}
-				return new Promise(resolve => {
-					this.$watch('inited', (val) => {
-						if(val) {
-							resolve(this.inited)
-						}
-					})
-				})
-				// #endif
-			}
-		},
-		// #ifndef APP-NVUE
-		getContext() {
-			const { use2dCanvas, type = '2d', config } = this;
-			let dpr = devicePixelRatio
-			if (config.canvas) {
-				return Promise.resolve(config);
-			}
-			if (use2dCanvas) {
-				return new Promise(resolve => {
-					uni.createSelectorQuery()
-						.in(this)
-						.select(`#${this.canvasId}`)
-						.fields({
-							node: true,
-							size: true
-						})
-						.exec(res => {
-							let { node, width, height } = res[0];
-							width = width || 300;
-							height = height || 300;
-							const ctx = node.getContext(type);
-							// #ifdef MP-WEIXIN
-							node.width = width * dpr;
-							node.height = height * dpr;
-							// #endif
-							// #ifdef MP-TOUTIAO
-							// dpr = 1
-							// #endif
-							const canvas = new Canvas(ctx, this.canvasId, true, node);
-							echarts.setCanvasCreator(() => canvas);
-							this.canvasNode = node
-							this.config = { canvas, width, height, devicePixelRatio: dpr };
-							resolve(this.config);
-						});
-				});
-			}
-			return new Promise(resolve => {
-				uni.createSelectorQuery()
-					.in(this)
-					.select(`#${this.canvasId}`)
-					.boundingClientRect()
-					.exec(res => {
-						if (res) {
-							let { width, height } = res[0];
-							width = width || 300;
-							height = height || 300;
-							// #ifdef MP-TOUTIAO
-							dpr = !this.isPC ? devicePixelRatio : 1// 1.25
-							// #endif
-							// #ifdef MP-ALIPAY
-							dpr = devicePixelRatio
-							// #endif
-							// #ifndef MP-ALIPAY || MP-TOUTIAO
-							dpr = this.isPC ? devicePixelRatio : 1
-							// #endif
-							this.nodeWidth = width * dpr ;
-							this.nodeHeight = height * dpr ;
-							const ctx = uni.createCanvasContext(this.canvasId, this);
-							const canvas = new Canvas(ctx, this.canvasId, false);
-							echarts.setCanvasCreator(() => canvas);
-							this.config = { canvas, width, height, devicePixelRatio: dpr };
-							resolve(this.config);
-						}
-					});
-			});
-		},
-		touchStart(e) {
-			if (this.chart && e.touches.length > 0) {
-				var touch = e.touches[0];
-				var handler = this.chart.getZr().handler;
-				handler.dispatch('mousedown', {
-					zrX: touch.x,
-					zrY: touch.y
-				});
-				handler.dispatch('mousemove', {
-					zrX: touch.x,
-					zrY: touch.y
-				});
-				handler.processGesture(wrapTouch(e), 'start');
-			}
-		},
-		touchMove(e) {
-			if (this.chart && e.touches.length > 0) {
-				var touch = e.touches[0];
-				var handler = this.chart.getZr().handler;
-				handler.dispatch('mousemove', {
-					zrX: touch.x,
-					zrY: touch.y
-				});
-				handler.processGesture(wrapTouch(e), 'change');
-			}
-		},
-		touchEnd(e) {
-			if (this.chart) {
-				const touch = e.changedTouches ? e.changedTouches[0] : {};
-				var handler = this.chart.getZr().handler;
-				handler.dispatch('mouseup', {
-					zrX: touch.x,
-					zrY: touch.y
-				});
-				if(this.isClickable) {
-					handler.dispatch('click', {
-						zrX: touch.x,
-						zrY: touch.y
-					});
-				}
-				handler.processGesture(wrapTouch(e), 'end');
-			}
-		}
-		// #endif
-	}
-};
-</script>
-<style scoped lang="stylus">
-full()
-	// #ifndef APP-NVUE
-	width 100%
-	height 100%
-	// #endif
-	// #ifdef APP-NVUE
-	flex 1
-	// #endif
-.lime-echart
-	full()
-	position relative
-	&__canvas
-		full()
-</style>
diff --git a/uni_modules/lime-echart/components/l-echart/utils.js b/uni_modules/lime-echart/components/l-echart/utils.js
deleted file mode 100644
index 9d10100..0000000
--- a/uni_modules/lime-echart/components/l-echart/utils.js
+++ /dev/null
@@ -1,65 +0,0 @@
-// #ifndef APP-NVUE
-// 计算版本
-export function compareVersion(v1, v2) {
-	v1 = v1.split('.')
-	v2 = v2.split('.')
-	const len = Math.max(v1.length, v2.length)
-	while (v1.length < len) {
-		v1.push('0')
-	}
-	while (v2.length < len) {
-		v2.push('0')
-	}
-	for (let i = 0; i < len; i++) {
-		const num1 = parseInt(v1[i], 10)
-		const num2 = parseInt(v2[i], 10)
-
-		if (num1 > num2) {
-			return 1
-		} else if (num1 < num2) {
-			return -1
-		}
-	}
-	return 0
-}
-
-export function wrapTouch(event) {
-  for (let i = 0; i < event.touches.length; ++i) {
-    const touch = event.touches[i];
-    touch.offsetX = touch.x;
-    touch.offsetY = touch.y;
-  }
-  return event;
-}
-export const devicePixelRatio = uni.getSystemInfoSync().pixelRatio
-// #endif
-// #ifdef APP-NVUE
-export function base64ToPath(base64) {
-	return new Promise((resolve, reject) => {
-		const [, format, bodyData] = /data:image\/(\w+);base64,(.*)/.exec(base64) || [];
-		const bitmap = new plus.nativeObj.Bitmap('bitmap' + Date.now())
-		bitmap.loadBase64Data(base64, () => {
-			if (!format) {
-				reject(new Error('ERROR_BASE64SRC_PARSE'))
-			}
-			const time = new Date().getTime();
-			const filePath = `_doc/uniapp_temp/${time}.${format}`
-			
-			bitmap.save(filePath, {}, 
-				() => {
-					bitmap.clear()
-					resolve(filePath)
-				}, 
-				(error) => {
-					bitmap.clear()
-					console.error(`${JSON.stringify(error)}`)
-					reject(error)
-				})
-		}, (error) => {
-			bitmap.clear()
-			console.error(`${JSON.stringify(error)}`)
-			reject(error)
-		})
-	})
-}
-// #endif
\ No newline at end of file
diff --git a/uni_modules/lime-echart/components/lime-echart/index.vue b/uni_modules/lime-echart/components/lime-echart/index.vue
deleted file mode 100644
index e69de29..0000000
--- a/uni_modules/lime-echart/components/lime-echart/index.vue
+++ /dev/null
diff --git a/uni_modules/lime-echart/package.json b/uni_modules/lime-echart/package.json
deleted file mode 100644
index 120d25f..0000000
--- a/uni_modules/lime-echart/package.json
+++ /dev/null
@@ -1,84 +0,0 @@
-{
-  "id": "lime-echart",
-  "displayName": "百度图表 echarts",
-  "version": "0.3.4",
-  "description": "全端兼容,一个基于 JavaScript 的开源可视化图表库",
-  "keywords": [
-    "echarts",
-    "canvas",
-    "图表",
-    "百度图表",
-    "全端"
-],
-  "repository": "https://gitee.com/liangei/lime-echart",
-  "engines": {
-    "HBuilderX": "^3.1.0"
-  },
-  "dcloudext": {
-    "category": [
-        "前端组件",
-        "通用组件"
-    ],
-    "sale": {
-      "regular": {
-        "price": "0.00"
-      },
-      "sourcecode": {
-        "price": "0.00"
-      }
-    },
-    "contact": {
-      "qq": ""
-    },
-    "declaration": {
-      "ads": "无",
-      "data": "无",
-      "permissions": "无"
-    },
-    "npmurl": ""
-  },
-  "uni_modules": {
-    "dependencies": [],
-    "encrypt": [],
-    "platforms": {
-      "cloud": {
-        "tcb": "y",
-        "aliyun": "y"
-      },
-      "client": {
-        "App": {
-          "app-vue": "y",
-          "app-nvue": "y"
-        },
-        "H5-mobile": {
-          "Safari": "y",
-          "Android Browser": "y",
-          "微信浏览器(Android)": "y",
-          "QQ浏览器(Android)": "y"
-        },
-        "H5-pc": {
-          "Chrome": "y",
-          "IE": "u",
-          "Edge": "u",
-          "Firefox": "u",
-          "Safari": "y"
-        },
-        "小程序": {
-          "微信": "y",
-          "阿里": "y",
-          "百度": "y",
-          "字节跳动": "y",
-          "QQ": "y"
-        },
-        "快应用": {
-          "华为": "u",
-          "联盟": "u"
-        },
-        "Vue": {
-            "vue2": "y",
-            "vue3": "u"
-        }
-      }
-    }
-  }
-}
\ No newline at end of file
diff --git a/uni_modules/lime-echart/readme.md b/uni_modules/lime-echart/readme.md
deleted file mode 100644
index dae15c9..0000000
--- a/uni_modules/lime-echart/readme.md
+++ /dev/null
@@ -1,454 +0,0 @@
-# echarts 图表 <span style="font-size:16px;">👑👑👑👑👑 <span style="background:#ff9d00;padding:2px 4px;color:#fff;font-size:10px;border-radius: 3px;">全端</span></span>
-> 一个基于 JavaScript 的开源可视化图表库   [查看更多 站点1](https://limeui.qcoon.cn/#/echart) |  [查看更多 站点2](http://liangei.gitee.io/limeui/#/echart)  <br>
-> 基于 echarts 做了兼容处理,更多示例请访问  [uni示例 站点1](https://limeui.qcoon.cn/#/echart-example) | [uni示例 站点2](http://liangei.gitee.io/limeui/#/echart-example) | [官方示例](https://echarts.apache.org/examples/zh/index.html)     <br>
-> Q群:1046793420 <br>
-> echarts v5.1.1
-
-## 平台兼容
-
-| H5  | 微信小程序 | 支付宝小程序 | 百度小程序 | 头条小程序 | QQ 小程序 | App  |
-| --- | ---------- | ------------ | ---------- | ---------- | --------- | ---- |
-| √   | √          | √         | √      | √       | √      | √ |
-
-
-* ✨ **注意**
-* 🔔 插件用到了 css 预编译器 [stylus](https://ext.dcloud.net.cn/plugin?name=compile-stylus) 请安装
-* 📦 本插件没有对 echarts 内部的方法和样式做过改动,只是使其兼容uniapp。
-* 🔔 若 echarts 无法满足于你或有需要特殊能力的请直接去 echarts 提建议
-* 👉 若 echarts 有兼容问题可向我反馈。
-* 🌈 本插件使用了 `webview` 支持 `nvue`。
-
-## 安装
-在uniapp 插件市场 找到 [百度图表](https://ext.dcloud.net.cn/plugin?id=4899) 导入即可
-
-## 使用方式
-1、通过`ref`获取节点组件内部 **init** 方法生成图表
-```html
-<l-echart ref="chart"></l-echart>
-```
-```js
-this.$refs.chart.init(config => {...code})
-```
-
-2、通过`ref`获取节点组件内部 **setChart** 方法并 设置 `is-enable`(启用初始化) 生成图表
-```html
-<l-echart ref="chart" is-enable></l-echart>
-```
-```js
-this.$refs.chart.setChart(chart => {...code})
-```
-
-3、通过props 的 **onInit**
-```html
-<l-echart :onInit="onInit"></l-echart>
-```
-```js
-data() {
-	return {
-		onInit: config => {
-			...code
-		}
-	}
-}
-```
-4、通过 props 的 **ec**
-```html
-<l-echart :ec="ec"></l-echart>
-```
-```js
-data() {
-	return {
-		ec: {
-			option: {
-				...code
-			}
-		}
-	}
-}
-```
-
-
-## 代码演示
-### 基础用法
-```html
-<view style="width: 100%; height:500rpx"><l-echart ref="chart"></l-echart></view>
-```
-
-```js
-import * as echarts from '@/uni_modules/lime-echart/components/l-echart/echarts';
-export default {
-	data() {
-		return {
-			option: {
-					tooltip: {
-						trigger: 'axis',
-						axisPointer: {
-							// 坐标轴指示器,坐标轴触发有效
-							type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
-						},
-						confine: true
-					},
-					legend: {
-						data: ['热度', '正面', '负面']
-					},
-					grid: {
-						left: 20,
-						right: 20,
-						bottom: 15,
-						top: 40,
-						containLabel: true
-					},
-					xAxis: [
-						{
-							type: 'value',
-							axisLine: {
-								lineStyle: {
-									color: '#999999'
-								}
-							},
-							axisLabel: {
-								color: '#666666'
-							}
-						}
-					],
-					yAxis: [
-						{
-							type: 'category',
-							axisTick: { show: false },
-							data: ['汽车之家', '今日头条', '百度贴吧', '一点资讯', '微信', '微博', '知乎'],
-							axisLine: {
-								lineStyle: {
-									color: '#999999'
-								}
-							},
-							axisLabel: {
-								color: '#666666'
-							}
-						}
-					],
-					series: [
-						{
-							name: '热度',
-							type: 'bar',
-							label: {
-								normal: {
-									show: true,
-									position: 'inside'
-								}
-							},
-							data: [300, 270, 340, 344, 300, 320, 310],
-							itemStyle: {
-								// emphasis: {
-								//   color: '#37a2da'
-								// }
-							}
-						},
-						{
-							name: '正面',
-							type: 'bar',
-							stack: '总量',
-							label: {
-								normal: {
-									show: true
-								}
-							},
-							data: [120, 102, 141, 174, 190, 250, 220],
-							itemStyle: {
-								// emphasis: {
-								//   color: '#32c5e9'
-								// }
-							}
-						},
-						{
-							name: '负面',
-							type: 'bar',
-							stack: '总量',
-							label: {
-								normal: {
-									show: true,
-									position: 'left'
-								}
-							},
-							data: [-20, -32, -21, -34, -90, -130, -110],
-							itemStyle: {
-								// emphasis: {
-								//   color: '#67e0e3'
-								// }
-							}
-						}
-					]
-				},
-		};
-	},
-	mounted() {
-		this.$refs.chart.init(config => {
-			const { canvas } = config;
-			const chart = echarts.init(canvas, null, config);
-			canvas.setChart(chart);
-			chart.setOption(this.option);
-			// 需要把 chart 返回
-			return chart;
-		});
-	}
-}
-```
-
-### Nvue
-本插件通过 `webview` 组件使得 `echarts` 能在 `nvue` 里使用。
-
-* ✨ **温馨提示**
-* 🔔 Nvue 是指 app nvue,非使用nvue打包到小程序 h5等平台。
-* 👉 webview使用了网络路径,可自行下载放置根目录下的`hybrid`文件夹里再修改路径即可。
-* 🛡  **不需要引用echarts JS文件**,但还需求引入插件。
-* ⚙️ 在函数外面的数据需要通过 props `params` 或 ref `init` | `setChart` 方法的第二个参数传递数据
-
-```html
-<view style="height: 750rpx">
-	<l-echart ref="chart" isEnable></l-echart>
-</view>
-```
-```js
-export default {
-	data() {
-		return {
-			option: {
-				// backgroundColor: '#000000',
-				tooltip: {
-					trigger: 'axis',
-					axisPointer: {
-						// 坐标轴指示器,坐标轴触发有效
-						type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
-					},
-					confine: true
-				},
-				legend: {
-					data: ['热度', '正面', '负面']
-				},
-				grid: {
-					left: 20,
-					right: 20,
-					bottom: 15,
-					top: 40,
-					containLabel: true
-				},
-				xAxis: [
-					{
-						type: 'value',
-						axisLine: {
-							lineStyle: {
-								color: '#999'
-							}
-						},
-						axisLabel: {
-							color: '#666'
-						}
-					}
-				],
-				yAxis: [
-					{
-						type: 'category',
-						axisTick: { show: false },
-						data: ['汽车之家', '今日头条', '百度贴吧', '一点资讯', '微信', '微博', '知乎'],
-						axisLine: {
-							lineStyle: {
-								color: '#999'
-							}
-						},
-						axisLabel: {
-							color: '#666'
-						}
-					}
-				],
-				series: [
-					{
-						name: '热度',
-						type: 'bar',
-						label: {
-							normal: {
-								show: true,
-								position: 'inside'
-							}
-						},
-						data: [300, 270, 340, 344, 300, 320, 310],
-						itemStyle: {
-							// emphasis: {
-							//   color: '#37a2da'
-							// }
-						}
-					},
-					{
-						name: '正面',
-						type: 'bar',
-						stack: '总量',
-						label: {
-							normal: {
-								show: true
-							}
-						},
-						data: [120, 102, 141, 174, 190, 250, 220],
-						itemStyle: {
-							// emphasis: {
-							//   color: '#32c5e9'
-							// }
-						}
-					},
-					{
-						name: '负面',
-						type: 'bar',
-						stack: '总量',
-						label: {
-							normal: {
-								show: true,
-								position: 'left'
-							}
-						},
-						data: [-20, -32, -21, -34, -90, -130, -110],
-						itemStyle: {
-							// emphasis: {
-							//   color: '#67e0e3'
-							// }
-						}
-					}
-				]
-			}
-		};
-	},
-	methods: {
-		init() {
-			this.$refs.chart.setChart(chart => {
-				chart.setOption(option)
-			}, {option: this.option});
-		}
-	},
-	onReady() {
-		this.init();
-	}
-};
-```
-## Nvue 使用注意事项
-- 由于 nvue 使用的是字符串模板传输,打包的时候会被混淆压缩
-- 所在要保持 **关键词** 不被 **混淆压缩**
-
-#### 1、echarts、ecStat 不需要被引入
-
-👎 错误,只会无效的增加打包体积
-
-```js
-import * as echarts from '@/uni_modules/lime-echart/components/l-echart/echarts';
-import ecStat from 'echarts-stat';
-export default {
-	...code
-}
-```
-
-👍 正确
-
-```js
-export default {
-	...code
-}
-```
-
-#### 2、引用函数外面数据的**关键词**不需要声明
-
-👎 错误
-
-```js
-const {option} = this
-this.$refs.chart.init(config => {
-	chart.setOption(option);
-})
-
-```
-
-👍 正确
-
-```js
-// 所有用函数外里的数据,只要保持跟 this 里的一致
-this.$refs.chart.init(config => {
-	chart.setOption(option);
-})
-
-- or -
-
-this.$refs.chart.init(config => {
-	chart.setOption(this.option);
-})
-```
-
-#### 3、引用函数外面的数据需要通过**params**或函数的第二个参数传递 
-
-👎 错误
-
-```html
-<l-echart />
-
-- or -
-
-this.$refs.chart.init(config => {...code})
-```
-
-👍 正确
-
-```html
-<l-echart :params="{option}"/>
-
-- or -
-
-this.$refs.chart.init(config => {...code}, {option: this.option})
-```
-
-
-
-## 数据更新
-- 1、如果是使用ec.option的方式,并设置`is-auto-play`会自动更新图表
-- 2、如果是使用 `ref` 的 `init` 创建方式,可获取`setOption`设置更新
-
-```js
-this.$refs.chart.setOption(data)
-```
-
-
-## 常见问题
-- 微信小程序 `2d` 不支持 真机调试
-- 头条系小程序 `2d` 不支持 开发工具预览,也存在划动图表页面无法滚动的问题。
-- 通过ec的方式是不支持传递函数
-- `toolbox` 不支持
-- `echarts-gl` 不支持
-
-## Props
-
-| 参数             | 说明                                                            | 类型             | 默认值        | 版本 	|
-| ---------------  | --------                                                        | -------         | ------------ | ----- 	|
-| custom-style     | 自定义样式                                                      |   `string`       | -            | -     	|
-| type             | 指定 canvas 类, 仅支持微信和头条                                 |    `string`      | `2d`         |   	    |
-| ec.option        | [图表配置项](https://echarts.apache.org/zh/option.html#title)   |    `object`      | -            |   	    |
-| ec.clear         | 是否开启更新时先删除图表样式                                      |    `boolean`      | `false`            |   	    |
-| ec.lazyLoad      | 是否开启延时加载                                                 |    `boolean`      | `false`            |   	    |
-| params           | 仅针对nvue的数据传递,同init函数的第二个参数,两选一               |    `object`    | -            | -     	|
-| webviewStyles    | 仅针对nvue的webview设置样式                                      |    `object`    | -            | -     	|
-| onInit           | 初始化函数                                                      |    `function`    | -            |   	    |
-| is-auto-play     | 是否自动更新,`ec.option` 数据 发生改动就更新图表                 |    `boolean`     | `false`     |   	    |
-| is-enable        | 是否启用初始化,启用后无须使用`init`                              |    `boolean`     | `false`     |   	    |
-| is-clickable     | 是否派发点击事件                                                 |    `boolean`     | `true`     |   	    |
-| is-disable-scroll | 触摸图表时是否禁止页面滚动                                       |    `boolean`     | `false`     |   	    |
-| is-clickable     | 是否派发点击事件                                                 |    `boolean`     | `true`     |   	    |
-
-## 事件
-
-| 参数                    | 说明                                                                                                             |
-| ---------------        | ---------------                                                                                                  |
-| init(callback)         | 初始化调用函数,**callback**: 回调函数                                           |  
-| setChart(chart)        | 已经初始化后,请使用这个函数,**chart**:回调函数参数是图表实例                    |  
-| setOption(data)        | [图表配置项](https://echarts.apache.org/zh/option.html#title),用于更新 ,传递是数据 `option`  |  
-| clear()                | 清空当前实例,会移除实例中所有的组件和图表。  |  
-| dispose()              | 销毁实例  |  
-| showLoading()          | 显示加载  |  
-| hideLoading()          | 隐藏加载  |  
-| canvasToTempFilePath(opt)  | 用于生成图片  |  
-
-
-## 打赏
-如果你觉得本插件,解决了你的问题,赠人玫瑰,手留余香。  
-
-![输入图片说明](https://cdn.jsdelivr.net/gh/liangei/image@latest/222521_bb543f96_518581.jpeg "微信图片编辑_20201122220352.jpg")
\ No newline at end of file
diff --git a/utils/base64.js b/utils/base64.js
deleted file mode 100644
index f8200ec..0000000
--- a/utils/base64.js
+++ /dev/null
@@ -1,235 +0,0 @@
-/*
- *  base64.js
- *
- *  Licensed under the BSD 3-Clause License.
- *    http://opensource.org/licenses/BSD-3-Clause
- *
- *  References:
- *    http://en.wikipedia.org/wiki/Base64
- */
-;(function (global, factory) {
-    typeof exports === 'object' && typeof module !== 'undefined'
-        ? module.exports = factory(global)
-        : typeof define === 'function' && define.amd
-        ? define(factory) : factory(global)
-}((
-    typeof self !== 'undefined' ? self
-        : typeof window !== 'undefined' ? window
-        : typeof global !== 'undefined' ? global
-: this
-), function(global) {
-    'use strict';
-    // existing version for noConflict()
-    global = global || {};
-    var _Base64 = global.Base64;
-    var version = "2.5.1";
-    // if node.js and NOT React Native, we use Buffer
-    var buffer;
-    if (typeof module !== 'undefined' && module.exports) {
-        try {
-            buffer = eval("require('buffer').Buffer");
-        } catch (err) {
-            buffer = undefined;
-        }
-    }
-    // constants
-    var b64chars
-        = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
-    var b64tab = function(bin) {
-        var t = {};
-        for (var i = 0, l = bin.length; i < l; i++) t[bin.charAt(i)] = i;
-        return t;
-    }(b64chars);
-    var fromCharCode = String.fromCharCode;
-    // encoder stuff
-    var cb_utob = function(c) {
-        if (c.length < 2) {
-            var cc = c.charCodeAt(0);
-            return cc < 0x80 ? c
-                : cc < 0x800 ? (fromCharCode(0xc0 | (cc >>> 6))
-                                + fromCharCode(0x80 | (cc & 0x3f)))
-                : (fromCharCode(0xe0 | ((cc >>> 12) & 0x0f))
-                   + fromCharCode(0x80 | ((cc >>>  6) & 0x3f))
-                   + fromCharCode(0x80 | ( cc         & 0x3f)));
-        } else {
-            var cc = 0x10000
-                + (c.charCodeAt(0) - 0xD800) * 0x400
-                + (c.charCodeAt(1) - 0xDC00);
-            return (fromCharCode(0xf0 | ((cc >>> 18) & 0x07))
-                    + fromCharCode(0x80 | ((cc >>> 12) & 0x3f))
-                    + fromCharCode(0x80 | ((cc >>>  6) & 0x3f))
-                    + fromCharCode(0x80 | ( cc         & 0x3f)));
-        }
-    };
-    var re_utob = /[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g;
-    var utob = function(u) {
-        return u.replace(re_utob, cb_utob);
-    };
-    var cb_encode = function(ccc) {
-        var padlen = [0, 2, 1][ccc.length % 3],
-        ord = ccc.charCodeAt(0) << 16
-            | ((ccc.length > 1 ? ccc.charCodeAt(1) : 0) << 8)
-            | ((ccc.length > 2 ? ccc.charCodeAt(2) : 0)),
-        chars = [
-            b64chars.charAt( ord >>> 18),
-            b64chars.charAt((ord >>> 12) & 63),
-            padlen >= 2 ? '=' : b64chars.charAt((ord >>> 6) & 63),
-            padlen >= 1 ? '=' : b64chars.charAt(ord & 63)
-        ];
-        return chars.join('');
-    };
-    var btoa = global.btoa ? function(b) {
-        return global.btoa(b);
-    } : function(b) {
-        return b.replace(/[\s\S]{1,3}/g, cb_encode);
-    };
-    var _encode = buffer ?
-        buffer.from && Uint8Array && buffer.from !== Uint8Array.from
-        ? function (u) {
-            return (u.constructor === buffer.constructor ? u : buffer.from(u))
-                .toString('base64')
-        }
-        :  function (u) {
-            return (u.constructor === buffer.constructor ? u : new  buffer(u))
-                .toString('base64')
-        }
-        : function (u) { return btoa(utob(u)) }
-    ;
-    var encode = function(u, urisafe) {
-        return !urisafe
-            ? _encode(String(u))
-            : _encode(String(u)).replace(/[+\/]/g, function(m0) {
-                return m0 == '+' ? '-' : '_';
-            }).replace(/=/g, '');
-    };
-    var encodeURI = function(u) { return encode(u, true) };
-    // decoder stuff
-    var re_btou = new RegExp([
-        '[\xC0-\xDF][\x80-\xBF]',
-        '[\xE0-\xEF][\x80-\xBF]{2}',
-        '[\xF0-\xF7][\x80-\xBF]{3}'
-    ].join('|'), 'g');
-    var cb_btou = function(cccc) {
-        switch(cccc.length) {
-        case 4:
-            var cp = ((0x07 & cccc.charCodeAt(0)) << 18)
-                |    ((0x3f & cccc.charCodeAt(1)) << 12)
-                |    ((0x3f & cccc.charCodeAt(2)) <<  6)
-                |     (0x3f & cccc.charCodeAt(3)),
-            offset = cp - 0x10000;
-            return (fromCharCode((offset  >>> 10) + 0xD800)
-                    + fromCharCode((offset & 0x3FF) + 0xDC00));
-        case 3:
-            return fromCharCode(
-                ((0x0f & cccc.charCodeAt(0)) << 12)
-                    | ((0x3f & cccc.charCodeAt(1)) << 6)
-                    |  (0x3f & cccc.charCodeAt(2))
-            );
-        default:
-            return  fromCharCode(
-                ((0x1f & cccc.charCodeAt(0)) << 6)
-                    |  (0x3f & cccc.charCodeAt(1))
-            );
-        }
-    };
-    var btou = function(b) {
-        return b.replace(re_btou, cb_btou);
-    };
-    var cb_decode = function(cccc) {
-        var len = cccc.length,
-        padlen = len % 4,
-        n = (len > 0 ? b64tab[cccc.charAt(0)] << 18 : 0)
-            | (len > 1 ? b64tab[cccc.charAt(1)] << 12 : 0)
-            | (len > 2 ? b64tab[cccc.charAt(2)] <<  6 : 0)
-            | (len > 3 ? b64tab[cccc.charAt(3)]       : 0),
-        chars = [
-            fromCharCode( n >>> 16),
-            fromCharCode((n >>>  8) & 0xff),
-            fromCharCode( n         & 0xff)
-        ];
-        chars.length -= [0, 0, 2, 1][padlen];
-        return chars.join('');
-    };
-    var _atob = global.atob ? function(a) {
-        return global.atob(a);
-    } : function(a){
-        return a.replace(/\S{1,4}/g, cb_decode);
-    };
-    var atob = function(a) {
-        return _atob(String(a).replace(/[^A-Za-z0-9\+\/]/g, ''));
-    };
-    var _decode = buffer ?
-        buffer.from && Uint8Array && buffer.from !== Uint8Array.from
-        ? function(a) {
-            return (a.constructor === buffer.constructor
-                    ? a : buffer.from(a, 'base64')).toString();
-        }
-        : function(a) {
-            return (a.constructor === buffer.constructor
-                    ? a : new buffer(a, 'base64')).toString();
-        }
-        : function(a) { return btou(_atob(a)) };
-    var decode = function(a){
-        return _decode(
-            String(a).replace(/[-_]/g, function(m0) { return m0 == '-' ? '+' : '/' })
-                .replace(/[^A-Za-z0-9\+\/]/g, '')
-        );
-    };
-    var noConflict = function() {
-        var Base64 = global.Base64;
-        global.Base64 = _Base64;
-        return Base64;
-    };
-    // export Base64
-    global.Base64 = {
-        VERSION: version,
-        atob: atob,
-        btoa: btoa,
-        fromBase64: decode,
-        toBase64: encode,
-        utob: utob,
-        encode: encode,
-        encodeURI: encodeURI,
-        btou: btou,
-        decode: decode,
-        noConflict: noConflict,
-        __buffer__: buffer
-    };
-    // if ES5 is available, make Base64.extendString() available
-    if (typeof Object.defineProperty === 'function') {
-        var noEnum = function(v){
-            return {value:v,enumerable:false,writable:true,configurable:true};
-        };
-        global.Base64.extendString = function () {
-            Object.defineProperty(
-                String.prototype, 'fromBase64', noEnum(function () {
-                    return decode(this)
-                }));
-            Object.defineProperty(
-                String.prototype, 'toBase64', noEnum(function (urisafe) {
-                    return encode(this, urisafe)
-                }));
-            Object.defineProperty(
-                String.prototype, 'toBase64URI', noEnum(function () {
-                    return encode(this, true)
-                }));
-        };
-    }
-    //
-    // export Base64 to the namespace
-    //
-    if (global['Meteor']) { // Meteor.js
-        Base64 = global.Base64;
-    }
-    // module.exports and AMD are mutually exclusive.
-    // module.exports has precedence.
-    if (typeof module !== 'undefined' && module.exports) {
-        module.exports.Base64 = global.Base64;
-    }
-    else if (typeof define === 'function' && define.amd) {
-        // AMD. Register as an anonymous module.
-        define([], function(){ return global.Base64 });
-    }
-    // that's it!
-    return {Base64: global.Base64}
-}));
diff --git a/utils/func.js b/utils/func.js
deleted file mode 100644
index 4d00924..0000000
--- a/utils/func.js
+++ /dev/null
@@ -1,135 +0,0 @@
-// 全局公共方法
-const install = (Vue, vm) => {
-
-	// 登录操作
-	const login = (userInfo) => {
-		vm.$u.vuex('userInfo', userInfo)
-		vm.$u.vuex('accessToken', userInfo.access_token)
-		vm.$u.vuex('isLogin', true)
-		uni.switchTab({
-			url: '/pages/home/home'
-		})
-		uni.hideNavigationBarLoading();
-	}
-
-	// 退出登录
-	const logout = () => {
-		vm.$u.vuex('userInfo', {
-			avatar: '',
-			nick_name: '游客',
-			tenant_id: '暂无'
-		})
-		vm.$u.vuex('accessToken', '')
-		vm.$u.vuex('isLogin', false)
-		vm.$u.vuex('UserData', {})
-		uni.redirectTo({
-			url: '/pages/login/login-account'
-		})
-	}
-
-	// 检查登录状态
-	const checkLogin = (e = {}) => {
-
-		if (!vm.isLogin) {
-			uni.navigateTo({
-				url: '/pages/login/login-account'
-			})
-			return false
-		}
-		return true
-	}
-
-	// 跳转路由前检查登录状态
-	const route = (url) => {
-		console.log(vm)
-		if (!vm.isLogin) {
-			uni.showToast({
-				title: '请先登录',
-				icon: 'none'
-			})
-			setTimeout(() => {
-				uni.navigateTo({
-					url: '/pages/login/login-account'
-				})
-			}, 500)
-			return false
-		}
-		uni.navigateTo({
-			url: url
-		})
-	}
-
-	// URL参数转对象
-	const paramsToObj = (url) => {
-		if (url.indexOf('?') != -1) {
-			let arr = url.split('?')[1]
-		}
-		let arr = url.split('&')
-		let obj = {}
-		for (let i of arr) {
-			obj[i.split('=')[0]] = i.split('=')[1]
-		}
-		return obj
-	}
-
-	// 刷新当前页面
-	const refreshPage = () => {
-		const pages = getCurrentPages()
-		const currentPage = pages[pages.length - 1]
-		const path = '/' + currentPage.route + vm.$u.queryParams(currentPage.options)
-		if (vm.$u.test.contains(currentPage.route, 'tabbar')) {
-			uni.reLaunch({
-				url: path,
-				fail: (err) => {
-					console.log(err)
-				}
-			})
-		} else {
-			uni.redirectTo({
-				url: path,
-				fail: (err) => {
-					console.log(err)
-				}
-			})
-		}
-	}
-
-	// 提示
-	const showToast = (data = {}) => {
-		if (typeof data == 'string') {
-			uni.showToast({
-				title: data,
-				icon: 'none'
-			})
-		} else {
-			uni.showToast({
-				title: data.title,
-				icon: data.icon || 'none',
-				image: data.image || '',
-				mask: data.mask || false,
-				position: data.position || 'center',
-				duration: data.duration || 1500,
-				success: () => {
-					setTimeout(() => {
-						if (data.back) return uni.navigateBack()
-						data.success && data.success()
-					}, data.duration || 1500)
-				}
-			})
-		}
-	}
-
-	// 将定义的方法挂载,使用this.$u.func.xx调用
-	Vue.prototype.$u.func = {
-		login,
-		logout,
-		route,
-		checkLogin,
-		paramsToObj,
-		refreshPage,
-		showToast
-	}
-}
-export default {
-	install
-}
diff --git a/utils/luch-request/adapters/index.js b/utils/luch-request/adapters/index.js
deleted file mode 100644
index 5a478b5..0000000
--- a/utils/luch-request/adapters/index.js
+++ /dev/null
@@ -1,99 +0,0 @@
-import buildURL from '../helpers/buildURL'
-import buildFullPath from '../core/buildFullPath'
-import settle from '../core/settle'
-import { isUndefined } from "../utils"
-
-/**
- * 返回可选值存在的配置
- * @param {Array} keys - 可选值数组
- * @param {Object} config2 - 配置
- * @return {{}} - 存在的配置项
- */
-const mergeKeys = (keys, config2) => {
-  let config = {}
-  keys.forEach(prop => {
-    if (!isUndefined(config2[prop])) {
-      config[prop] = config2[prop]
-    }
-  })
-  return config
-}
-export default (config) => {
-  return new Promise((resolve, reject) => {
-    let fullPath = buildURL(buildFullPath(config.baseURL, config.url), config.params)
-    const _config = {
-      url: fullPath,
-      header: config.header,
-      complete: (response) => {
-        config.fullPath = fullPath
-        response.config = config
-        try {
-          // 对可能字符串不是json 的情况容错
-          if (typeof response.data === 'string') {
-            response.data = JSON.parse(response.data)
-          }
-          // eslint-disable-next-line no-empty
-        } catch (e) {
-        }
-        settle(resolve, reject, response)
-      }
-    }
-    let requestTask
-    if (config.method === 'UPLOAD') {
-      delete _config.header['content-type']
-      delete _config.header['Content-Type']
-      let otherConfig = {
-        // #ifdef MP-ALIPAY
-        fileType: config.fileType,
-        // #endif
-        filePath: config.filePath,
-        name: config.name
-      }
-      const optionalKeys = [
-        // #ifdef APP-PLUS || H5
-        'files',
-        // #endif
-        // #ifdef H5
-        'file',
-        // #endif
-        // #ifdef H5 || APP-PLUS
-        'timeout',
-        // #endif
-        'formData'
-      ]
-      requestTask = uni.uploadFile({..._config, ...otherConfig, ...mergeKeys(optionalKeys, config)})
-    } else if (config.method === 'DOWNLOAD') {
-      // #ifdef H5 || APP-PLUS
-      if (!isUndefined(config['timeout'])) {
-        _config['timeout'] = config['timeout']
-      }
-      // #endif
-      requestTask = uni.downloadFile(_config)
-    } else {
-      const optionalKeys = [
-        'data',
-        'method',
-        // #ifdef H5 || APP-PLUS || MP-ALIPAY || MP-WEIXIN
-        'timeout',
-        // #endif
-        'dataType',
-        // #ifndef MP-ALIPAY
-        'responseType',
-        // #endif
-        // #ifdef APP-PLUS
-        'sslVerify',
-        // #endif
-        // #ifdef H5
-        'withCredentials',
-        // #endif
-        // #ifdef APP-PLUS
-        'firstIpv4',
-        // #endif
-      ]
-      requestTask = uni.request({..._config,...mergeKeys(optionalKeys, config)})
-    }
-    if (config.getTask) {
-      config.getTask(requestTask, config)
-    }
-  })
-}
diff --git a/utils/luch-request/core/InterceptorManager.js b/utils/luch-request/core/InterceptorManager.js
deleted file mode 100644
index 3ea0d5e..0000000
--- a/utils/luch-request/core/InterceptorManager.js
+++ /dev/null
@@ -1,51 +0,0 @@
-'use strict'
-
-
-function InterceptorManager() {
-  this.handlers = []
-}
-
-/**
- * Add a new interceptor to the stack
- *
- * @param {Function} fulfilled The function to handle `then` for a `Promise`
- * @param {Function} rejected The function to handle `reject` for a `Promise`
- *
- * @return {Number} An ID used to remove interceptor later
- */
-InterceptorManager.prototype.use = function use(fulfilled, rejected) {
-  this.handlers.push({
-    fulfilled: fulfilled,
-    rejected: rejected
-  })
-  return this.handlers.length - 1
-}
-
-/**
- * Remove an interceptor from the stack
- *
- * @param {Number} id The ID that was returned by `use`
- */
-InterceptorManager.prototype.eject = function eject(id) {
-  if (this.handlers[id]) {
-    this.handlers[id] = null
-  }
-}
-
-/**
- * Iterate over all the registered interceptors
- *
- * This method is particularly useful for skipping over any
- * interceptors that may have become `null` calling `eject`.
- *
- * @param {Function} fn The function to call for each interceptor
- */
-InterceptorManager.prototype.forEach = function forEach(fn) {
-  this.handlers.forEach(h => {
-    if (h !== null) {
-      fn(h)
-    }
-  })
-}
-
-export default InterceptorManager
diff --git a/utils/luch-request/core/Request.js b/utils/luch-request/core/Request.js
deleted file mode 100644
index c292de9..0000000
--- a/utils/luch-request/core/Request.js
+++ /dev/null
@@ -1,199 +0,0 @@
-/**
- * @Class Request
- * @description luch-request http请求插件
- * @version 3.0.6
- * @Author lu-ch
- * @Date 2021-05-10
- * @Email webwork.s@qq.com
- * 文档: https://www.quanzhan.co/luch-request/
- * github: https://github.com/lei-mu/luch-request
- * DCloud: http://ext.dcloud.net.cn/plugin?id=392
- * HBuilderX: beat-3.0.4 alpha-3.0.4
- */
-
-
-import dispatchRequest from './dispatchRequest'
-import InterceptorManager from './InterceptorManager'
-import mergeConfig from './mergeConfig'
-import defaults from './defaults'
-import { isPlainObject } from '../utils'
-
-export default class Request {
-  /**
-   * @param {Object} arg - 全局配置
-   * @param {String} arg.baseURL - 全局根路径
-   * @param {Object} arg.header - 全局header
-   * @param {String} arg.method = [GET|POST|PUT|DELETE|CONNECT|HEAD|OPTIONS|TRACE] - 全局默认请求方式
-   * @param {String} arg.dataType = [json] - 全局默认的dataType
-   * @param {String} arg.responseType = [text|arraybuffer] - 全局默认的responseType。支付宝小程序不支持
-   * @param {Object} arg.custom - 全局默认的自定义参数
-   * @param {Number} arg.timeout - 全局默认的超时时间,单位 ms。默认60000。H5(HBuilderX 2.9.9+)、APP(HBuilderX 2.9.9+)、微信小程序(2.10.0)、支付宝小程序
-   * @param {Boolean} arg.sslVerify - 全局默认的是否验证 ssl 证书。默认true.仅App安卓端支持(HBuilderX 2.3.3+)
-   * @param {Boolean} arg.withCredentials - 全局默认的跨域请求时是否携带凭证(cookies)。默认false。仅H5支持(HBuilderX 2.6.15+)
-   * @param {Boolean} arg.firstIpv4 - 全DNS解析时优先使用ipv4。默认false。仅 App-Android 支持 (HBuilderX 2.8.0+)
-   * @param {Function(statusCode):Boolean} arg.validateStatus - 全局默认的自定义验证器。默认statusCode >= 200 && statusCode < 300
-   */
-  constructor(arg = {}) {
-    if (!isPlainObject(arg)) {
-      arg = {}
-      console.warn('设置全局参数必须接收一个Object')
-    }
-    this.config = {...defaults, ...arg}
-    this.interceptors = {
-      request: new InterceptorManager(),
-      response: new InterceptorManager()
-    }
-  }
-
-  /**
-   * @Function
-   * @param {Request~setConfigCallback} f - 设置全局默认配置
-   */
-  setConfig(f) {
-    this.config = f(this.config)
-  }
-
-  middleware(config) {
-    config = mergeConfig(this.config, config)
-    let chain = [dispatchRequest, undefined]
-    let promise = Promise.resolve(config)
-
-    this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {
-      chain.unshift(interceptor.fulfilled, interceptor.rejected)
-    })
-
-    this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {
-      chain.push(interceptor.fulfilled, interceptor.rejected)
-    })
-
-    while (chain.length) {
-      promise = promise.then(chain.shift(), chain.shift())
-    }
-
-    return promise
-  }
-
-  /**
-   * @Function
-   * @param {Object} config - 请求配置项
-   * @prop {String} options.url - 请求路径
-   * @prop {Object} options.data - 请求参数
-   * @prop {Object} [options.responseType = config.responseType] [text|arraybuffer] - 响应的数据类型
-   * @prop {Object} [options.dataType = config.dataType] - 如果设为 json,会尝试对返回的数据做一次 JSON.parse
-   * @prop {Object} [options.header = config.header] - 请求header
-   * @prop {Object} [options.method = config.method] - 请求方法
-   * @returns {Promise<unknown>}
-   */
-  request(config = {}) {
-    return this.middleware(config)
-  }
-
-  get(url, options = {}) {
-    return this.middleware({
-      url,
-      method: 'GET',
-      ...options
-    })
-  }
-
-  post(url, data, options = {}) {
-    return this.middleware({
-      url,
-      data,
-      method: 'POST',
-      ...options
-    })
-  }
-
-  // #ifndef MP-ALIPAY
-  put(url, data, options = {}) {
-    return this.middleware({
-      url,
-      data,
-      method: 'PUT',
-      ...options
-    })
-  }
-
-  // #endif
-
-  // #ifdef APP-PLUS || H5 || MP-WEIXIN || MP-BAIDU
-  delete(url, data, options = {}) {
-    return this.middleware({
-      url,
-      data,
-      method: 'DELETE',
-      ...options
-    })
-  }
-
-  // #endif
-
-  // #ifdef H5 || MP-WEIXIN
-  connect(url, data, options = {}) {
-    return this.middleware({
-      url,
-      data,
-      method: 'CONNECT',
-      ...options
-    })
-  }
-
-  // #endif
-
-  // #ifdef  H5 || MP-WEIXIN || MP-BAIDU
-  head(url, data, options = {}) {
-    return this.middleware({
-      url,
-      data,
-      method: 'HEAD',
-      ...options
-    })
-  }
-
-  // #endif
-
-  // #ifdef APP-PLUS || H5 || MP-WEIXIN || MP-BAIDU
-  options(url, data, options = {}) {
-    return this.middleware({
-      url,
-      data,
-      method: 'OPTIONS',
-      ...options
-    })
-  }
-
-  // #endif
-
-  // #ifdef H5 || MP-WEIXIN
-  trace(url, data, options = {}) {
-    return this.middleware({
-      url,
-      data,
-      method: 'TRACE',
-      ...options
-    })
-  }
-
-  // #endif
-
-  upload(url, config = {}) {
-    config.url = url
-    config.method = 'UPLOAD'
-    return this.middleware(config)
-  }
-
-  download(url, config = {}) {
-    config.url = url
-    config.method = 'DOWNLOAD'
-    return this.middleware(config)
-  }
-}
-
-
-/**
- * setConfig回调
- * @return {Object} - 返回操作后的config
- * @callback Request~setConfigCallback
- * @param {Object} config - 全局默认config
- */
diff --git a/utils/luch-request/core/buildFullPath.js b/utils/luch-request/core/buildFullPath.js
deleted file mode 100644
index f2852f4..0000000
--- a/utils/luch-request/core/buildFullPath.js
+++ /dev/null
@@ -1,20 +0,0 @@
-'use strict'
-
-import isAbsoluteURL from '../helpers/isAbsoluteURL'
-import combineURLs from '../helpers/combineURLs'
-
-/**
- * Creates a new URL by combining the baseURL with the requestedURL,
- * only when the requestedURL is not already an absolute URL.
- * If the requestURL is absolute, this function returns the requestedURL untouched.
- *
- * @param {string} baseURL The base URL
- * @param {string} requestedURL Absolute or relative URL to combine
- * @returns {string} The combined full path
- */
-export default function buildFullPath(baseURL, requestedURL) {
-  if (baseURL && !isAbsoluteURL(requestedURL)) {
-    return combineURLs(baseURL, requestedURL)
-  }
-  return requestedURL
-}
diff --git a/utils/luch-request/core/defaults.js b/utils/luch-request/core/defaults.js
deleted file mode 100644
index 38afc3a..0000000
--- a/utils/luch-request/core/defaults.js
+++ /dev/null
@@ -1,30 +0,0 @@
-/**
- * 默认的全局配置
- */
-
-
-export default {
-  baseURL: '',
-  header: {},
-  method: 'GET',
-  dataType: 'json',
-  // #ifndef MP-ALIPAY
-  responseType: 'text',
-  // #endif
-  custom: {},
-  // #ifdef H5 || APP-PLUS || MP-ALIPAY || MP-WEIXIN
-  timeout: 60000,
-  // #endif
-  // #ifdef APP-PLUS
-  sslVerify: true,
-  // #endif
-  // #ifdef H5
-  withCredentials: false,
-  // #endif
-  // #ifdef APP-PLUS
-  firstIpv4: false,
-  // #endif
-  validateStatus: function validateStatus(status) {
-    return status >= 200 && status < 300
-  }
-}
diff --git a/utils/luch-request/core/dispatchRequest.js b/utils/luch-request/core/dispatchRequest.js
deleted file mode 100644
index c5f2c85..0000000
--- a/utils/luch-request/core/dispatchRequest.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import adapter from '../adapters/index'
-
-
-export default (config) => {
-  return adapter(config)
-}
diff --git a/utils/luch-request/core/mergeConfig.js b/utils/luch-request/core/mergeConfig.js
deleted file mode 100644
index a3ccbf7..0000000
--- a/utils/luch-request/core/mergeConfig.js
+++ /dev/null
@@ -1,103 +0,0 @@
-import {deepMerge, isUndefined} from '../utils'
-
-/**
- * 合并局部配置优先的配置,如果局部有该配置项则用局部,如果全局有该配置项则用全局
- * @param {Array} keys - 配置项
- * @param {Object} globalsConfig - 当前的全局配置
- * @param {Object} config2 - 局部配置
- * @return {{}}
- */
-const mergeKeys = (keys, globalsConfig, config2) => {
-  let config = {}
-  keys.forEach(prop => {
-    if (!isUndefined(config2[prop])) {
-      config[prop] = config2[prop]
-    } else if (!isUndefined(globalsConfig[prop])) {
-      config[prop] = globalsConfig[prop]
-    }
-  })
-  return config
-}
-/**
- *
- * @param globalsConfig - 当前实例的全局配置
- * @param config2 - 当前的局部配置
- * @return - 合并后的配置
- */
-export default (globalsConfig, config2 = {}) => {
-  const method = config2.method || globalsConfig.method || 'GET'
-  let config = {
-    baseURL: globalsConfig.baseURL || '',
-    method: method,
-    url: config2.url || '',
-    params: config2.params || {},
-    custom: {...(globalsConfig.custom || {}), ...(config2.custom || {})},
-    header: deepMerge(globalsConfig.header || {}, config2.header || {})
-  }
-  const defaultToConfig2Keys = ['getTask', 'validateStatus']
-  config = {...config, ...mergeKeys(defaultToConfig2Keys, globalsConfig, config2)}
-
-  // eslint-disable-next-line no-empty
-  if (method === 'DOWNLOAD') {
-    // #ifdef H5 || APP-PLUS
-    if (!isUndefined(config2.timeout)) {
-      config['timeout'] = config2['timeout']
-    } else if (!isUndefined(globalsConfig.timeout)) {
-      config['timeout'] = globalsConfig['timeout']
-    }
-    // #endif
-  } else if (method === 'UPLOAD') {
-    delete config.header['content-type']
-    delete config.header['Content-Type']
-    const uploadKeys = [
-      // #ifdef APP-PLUS || H5
-      'files',
-      // #endif
-      // #ifdef MP-ALIPAY
-      'fileType',
-      // #endif
-      // #ifdef H5
-      'file',
-      // #endif
-      'filePath',
-      'name',
-      // #ifdef H5 || APP-PLUS
-      'timeout',
-      // #endif
-      'formData',
-    ]
-    uploadKeys.forEach(prop => {
-      if (!isUndefined(config2[prop])) {
-        config[prop] = config2[prop]
-      }
-    })
-    // #ifdef H5 || APP-PLUS
-    if (isUndefined(config.timeout) && !isUndefined(globalsConfig.timeout)) {
-      config['timeout'] = globalsConfig['timeout']
-    }
-    // #endif
-  } else {
-    const defaultsKeys = [
-      'data',
-      // #ifdef H5 || APP-PLUS || MP-ALIPAY || MP-WEIXIN
-      'timeout',
-      // #endif
-      'dataType',
-      // #ifndef MP-ALIPAY
-      'responseType',
-      // #endif
-      // #ifdef APP-PLUS
-      'sslVerify',
-      // #endif
-      // #ifdef H5
-      'withCredentials',
-      // #endif
-      // #ifdef APP-PLUS
-      'firstIpv4',
-      // #endif
-    ]
-    config = {...config, ...mergeKeys(defaultsKeys, globalsConfig, config2)}
-  }
-
-  return config
-}
diff --git a/utils/luch-request/core/settle.js b/utils/luch-request/core/settle.js
deleted file mode 100644
index b2f1659..0000000
--- a/utils/luch-request/core/settle.js
+++ /dev/null
@@ -1,16 +0,0 @@
-/**
- * Resolve or reject a Promise based on response status.
- *
- * @param {Function} resolve A function that resolves the promise.
- * @param {Function} reject A function that rejects the promise.
- * @param {object} response The response.
- */
-export default function settle(resolve, reject, response) {
-  const validateStatus = response.config.validateStatus
-  const status = response.statusCode
-  if (status && (!validateStatus || validateStatus(status))) {
-    resolve(response)
-  } else {
-    reject(response)
-  }
-}
diff --git a/utils/luch-request/helpers/buildURL.js b/utils/luch-request/helpers/buildURL.js
deleted file mode 100644
index d26dc30..0000000
--- a/utils/luch-request/helpers/buildURL.js
+++ /dev/null
@@ -1,69 +0,0 @@
-'use strict'
-
-import * as utils from './../utils'
-
-function encode(val) {
-  return encodeURIComponent(val).
-    replace(/%40/gi, '@').
-    replace(/%3A/gi, ':').
-    replace(/%24/g, '$').
-    replace(/%2C/gi, ',').
-    replace(/%20/g, '+').
-    replace(/%5B/gi, '[').
-    replace(/%5D/gi, ']')
-}
-
-/**
- * Build a URL by appending params to the end
- *
- * @param {string} url The base of the url (e.g., http://www.google.com)
- * @param {object} [params] The params to be appended
- * @returns {string} The formatted url
- */
-export default function buildURL(url, params) {
-  /*eslint no-param-reassign:0*/
-  if (!params) {
-    return url
-  }
-
-  var serializedParams
-  if (utils.isURLSearchParams(params)) {
-    serializedParams = params.toString()
-  } else {
-    var parts = []
-
-    utils.forEach(params, function serialize(val, key) {
-      if (val === null || typeof val === 'undefined') {
-        return
-      }
-
-      if (utils.isArray(val)) {
-        key = key + '[]'
-      } else {
-        val = [val]
-      }
-
-      utils.forEach(val, function parseValue(v) {
-        if (utils.isDate(v)) {
-          v = v.toISOString()
-        } else if (utils.isObject(v)) {
-          v = JSON.stringify(v)
-        }
-        parts.push(encode(key) + '=' + encode(v))
-      })
-    })
-
-    serializedParams = parts.join('&')
-  }
-
-  if (serializedParams) {
-    var hashmarkIndex = url.indexOf('#')
-    if (hashmarkIndex !== -1) {
-      url = url.slice(0, hashmarkIndex)
-    }
-
-    url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams
-  }
-
-  return url
-}
diff --git a/utils/luch-request/helpers/combineURLs.js b/utils/luch-request/helpers/combineURLs.js
deleted file mode 100644
index 7b9d1ef..0000000
--- a/utils/luch-request/helpers/combineURLs.js
+++ /dev/null
@@ -1,14 +0,0 @@
-'use strict'
-
-/**
- * Creates a new URL by combining the specified URLs
- *
- * @param {string} baseURL The base URL
- * @param {string} relativeURL The relative URL
- * @returns {string} The combined URL
- */
-export default function combineURLs(baseURL, relativeURL) {
-  return relativeURL
-    ? baseURL.replace(/\/+$/, '') + '/' + relativeURL.replace(/^\/+/, '')
-    : baseURL
-}
diff --git a/utils/luch-request/helpers/isAbsoluteURL.js b/utils/luch-request/helpers/isAbsoluteURL.js
deleted file mode 100644
index 2a82517..0000000
--- a/utils/luch-request/helpers/isAbsoluteURL.js
+++ /dev/null
@@ -1,14 +0,0 @@
-'use strict'
-
-/**
- * Determines whether the specified URL is absolute
- *
- * @param {string} url The URL to test
- * @returns {boolean} True if the specified URL is absolute, otherwise false
- */
-export default function isAbsoluteURL(url) {
-  // A URL is considered absolute if it begins with "<scheme>://" or "//" (protocol-relative URL).
-  // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed
-  // by any combination of letters, digits, plus, period, or hyphen.
-  return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url)
-}
diff --git a/utils/luch-request/index.d.ts b/utils/luch-request/index.d.ts
deleted file mode 100644
index e939ce1..0000000
--- a/utils/luch-request/index.d.ts
+++ /dev/null
@@ -1,116 +0,0 @@
-type AnyObject = Record<string | number | symbol, any>
-type HttpPromise<T> = Promise<HttpResponse<T>>;
-type Tasks = UniApp.RequestTask | UniApp.UploadTask | UniApp.DownloadTask
-export interface RequestTask {
-  abort: () => void;
-  offHeadersReceived: () => void;
-  onHeadersReceived: () => void;
-}
-export interface HttpRequestConfig<T = Tasks> {
-  /** 请求基地址 */
-  baseURL?: string;
-  /** 请求服务器接口地址 */
-  url?: string;
-
-  /** 请求查询参数,自动拼接为查询字符串 */
-  params?: AnyObject;
-  /** 请求体参数 */
-  data?: AnyObject;
-
-  /** 文件对应的 key */
-  name?: string;
-  /** HTTP 请求中其他额外的 form data */
-  formData?: AnyObject;
-  /** 要上传文件资源的路径。 */
-  filePath?: string;
-  /** 需要上传的文件列表。使用 files 时,filePath 和 name 不生效,App、H5( 2.6.15+) */
-  files?: Array<{
-    name?: string;
-    file?: File;
-    uri: string;
-  }>;
-  /** 要上传的文件对象,仅H5(2.6.15+)支持 */
-  file?: File;
-
-  /** 请求头信息 */
-  header?: AnyObject;
-  /** 请求方式 */
-  method?: "GET" | "POST" | "PUT" | "DELETE" | "CONNECT" | "HEAD" | "OPTIONS" | "TRACE" | "UPLOAD" | "DOWNLOAD";
-  /** 如果设为 json,会尝试对返回的数据做一次 JSON.parse */
-  dataType?: string;
-  /** 设置响应的数据类型,支付宝小程序不支持 */
-  responseType?: "text" | "arraybuffer";
-  /** 自定义参数 */
-  custom?: AnyObject;
-  /** 超时时间,仅微信小程序(2.10.0)、支付宝小程序支持 */
-  timeout?: number;
-  /** DNS解析时优先使用ipv4,仅 App-Android 支持 (HBuilderX 2.8.0+) */
-  firstIpv4?: boolean;
-  /** 验证 ssl 证书 仅5+App安卓端支持(HBuilderX 2.3.3+) */
-  sslVerify?: boolean;
-  /** 跨域请求时是否携带凭证(cookies)仅H5支持(HBuilderX 2.6.15+) */
-  withCredentials?: boolean;
-
-  /** 返回当前请求的task, options。请勿在此处修改options。 */
-  getTask?: (task: T, options: HttpRequestConfig<T>) => void;
-  /**  全局自定义验证器 */
-  validateStatus?: (statusCode: number) => boolean | void;
-}
-export interface HttpResponse<T = any> {
-  config: HttpRequestConfig;
-  statusCode: number;
-  cookies: Array<string>;
-  data: T;
-  errMsg: string;
-  header: AnyObject;
-}
-export interface HttpUploadResponse<T = any> {
-  config: HttpRequestConfig;
-  statusCode: number;
-  data: T;
-  errMsg: string;
-}
-export interface HttpDownloadResponse extends HttpResponse {
-  tempFilePath: string;
-}
-export interface HttpError {
-  config: HttpRequestConfig;
-  statusCode?: number;
-  cookies?: Array<string>;
-  data?: any;
-  errMsg: string;
-  header?: AnyObject;
-}
-export interface HttpInterceptorManager<V, E = V> {
-  use(
-    onFulfilled?: (config: V) => Promise<V> | V,
-    onRejected?: (config: E) => Promise<E> | E
-  ): void;
-  eject(id: number): void;
-}
-export abstract class HttpRequestAbstract {
-  constructor(config?: HttpRequestConfig);
-  config: HttpRequestConfig;
-  interceptors: {
-    request: HttpInterceptorManager<HttpRequestConfig, HttpRequestConfig>;
-    response: HttpInterceptorManager<HttpResponse, HttpError>;
-  }
-  middleware<T = any>(config: HttpRequestConfig): HttpPromise<T>;
-  request<T = any>(config: HttpRequestConfig<UniApp.RequestTask>): HttpPromise<T>;
-  get<T = any>(url: string, config?: HttpRequestConfig<UniApp.RequestTask>): HttpPromise<T>;
-  upload<T = any>(url: string, config?: HttpRequestConfig<UniApp.UploadTask>): HttpPromise<T>;
-  delete<T = any>(url: string, data?: AnyObject, config?: HttpRequestConfig<UniApp.RequestTask>): HttpPromise<T>;
-  head<T = any>(url: string, data?: AnyObject, config?: HttpRequestConfig<UniApp.RequestTask>): HttpPromise<T>;
-  post<T = any>(url: string, data?: AnyObject, config?: HttpRequestConfig<UniApp.RequestTask>): HttpPromise<T>;
-  put<T = any>(url: string, data?: AnyObject, config?: HttpRequestConfig<UniApp.RequestTask>): HttpPromise<T>;
-  connect<T = any>(url: string, data?: AnyObject, config?: HttpRequestConfig<UniApp.RequestTask>): HttpPromise<T>;
-  options<T = any>(url: string, data?: AnyObject, config?: HttpRequestConfig<UniApp.RequestTask>): HttpPromise<T>;
-  trace<T = any>(url: string, data?: AnyObject, config?: HttpRequestConfig<UniApp.RequestTask>): HttpPromise<T>;
-
-  download(url: string, config?: HttpRequestConfig<UniApp.DownloadTask>): Promise<HttpDownloadResponse>;
-
-  setConfig(onSend: (config: HttpRequestConfig) => HttpRequestConfig): void;
-}
-
-declare class HttpRequest extends HttpRequestAbstract { }
-export default HttpRequest;
diff --git a/utils/luch-request/index.js b/utils/luch-request/index.js
deleted file mode 100644
index d8fe348..0000000
--- a/utils/luch-request/index.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import Request from './core/Request'
-export default Request
diff --git a/utils/luch-request/utils.js b/utils/luch-request/utils.js
deleted file mode 100644
index 0b5bf21..0000000
--- a/utils/luch-request/utils.js
+++ /dev/null
@@ -1,135 +0,0 @@
-'use strict'
-
-// utils is a library of generic helper functions non-specific to axios
-
-var toString = Object.prototype.toString
-
-/**
- * Determine if a value is an Array
- *
- * @param {Object} val The value to test
- * @returns {boolean} True if value is an Array, otherwise false
- */
-export function isArray (val) {
-  return toString.call(val) === '[object Array]'
-}
-
-
-/**
- * Determine if a value is an Object
- *
- * @param {Object} val The value to test
- * @returns {boolean} True if value is an Object, otherwise false
- */
-export function isObject (val) {
-  return val !== null && typeof val === 'object'
-}
-
-/**
- * Determine if a value is a Date
- *
- * @param {Object} val The value to test
- * @returns {boolean} True if value is a Date, otherwise false
- */
-export function isDate (val) {
-  return toString.call(val) === '[object Date]'
-}
-
-/**
- * Determine if a value is a URLSearchParams object
- *
- * @param {Object} val The value to test
- * @returns {boolean} True if value is a URLSearchParams object, otherwise false
- */
-export function isURLSearchParams (val) {
-  return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams
-}
-
-
-/**
- * Iterate over an Array or an Object invoking a function for each item.
- *
- * If `obj` is an Array callback will be called passing
- * the value, index, and complete array for each item.
- *
- * If 'obj' is an Object callback will be called passing
- * the value, key, and complete object for each property.
- *
- * @param {Object|Array} obj The object to iterate
- * @param {Function} fn The callback to invoke for each item
- */
-export function forEach (obj, fn) {
-  // Don't bother if no value provided
-  if (obj === null || typeof obj === 'undefined') {
-    return
-  }
-
-  // Force an array if not already something iterable
-  if (typeof obj !== 'object') {
-    /*eslint no-param-reassign:0*/
-    obj = [obj]
-  }
-
-  if (isArray(obj)) {
-    // Iterate over array values
-    for (var i = 0, l = obj.length; i < l; i++) {
-      fn.call(null, obj[i], i, obj)
-    }
-  } else {
-    // Iterate over object keys
-    for (var key in obj) {
-      if (Object.prototype.hasOwnProperty.call(obj, key)) {
-        fn.call(null, obj[key], key, obj)
-      }
-    }
-  }
-}
-
-/**
- * 是否为boolean 值
- * @param val
- * @returns {boolean}
- */
-export function isBoolean(val) {
-  return typeof val === 'boolean'
-}
-
-/**
- * 是否为真正的对象{} new Object
- * @param {any} obj - 检测的对象
- * @returns {boolean}
- */
-export function isPlainObject(obj) {
-  return Object.prototype.toString.call(obj) === '[object Object]'
-}
-
-
-
-/**
- * Function equal to merge with the difference being that no reference
- * to original objects is kept.
- *
- * @see merge
- * @param {Object} obj1 Object to merge
- * @returns {Object} Result of all merge properties
- */
-export function deepMerge(/* obj1, obj2, obj3, ... */) {
-  let result = {}
-  function assignValue(val, key) {
-    if (typeof result[key] === 'object' && typeof val === 'object') {
-      result[key] = deepMerge(result[key], val)
-    } else if (typeof val === 'object') {
-      result[key] = deepMerge({}, val)
-    } else {
-      result[key] = val
-    }
-  }
-  for (let i = 0, l = arguments.length; i < l; i++) {
-    forEach(arguments[i], assignValue)
-  }
-  return result
-}
-
-export function isUndefined (val) {
-  return typeof val === 'undefined'
-}
diff --git a/utils/md5.js b/utils/md5.js
deleted file mode 100644
index d08cf62..0000000
--- a/utils/md5.js
+++ /dev/null
@@ -1,685 +0,0 @@
-/**
- * [js-md5]{@link https://github.com/emn178/js-md5}
- *
- * @namespace md5
- * @version 0.7.3
- * @author Chen, Yi-Cyuan [emn178@gmail.com]
- * @copyright Chen, Yi-Cyuan 2014-2017
- * @license MIT
- */
-(function () {
-  'use strict';
-
-  var ERROR = 'input is invalid type';
-  var WINDOW = typeof window === 'object';
-  var root = WINDOW ? window : {};
-  if (root.JS_MD5_NO_WINDOW) {
-    WINDOW = false;
-  }
-  var WEB_WORKER = !WINDOW && typeof self === 'object';
-  var NODE_JS = !root.JS_MD5_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;
-  if (NODE_JS) {
-    root = global;
-  } else if (WEB_WORKER) {
-    root = self;
-  }
-  var COMMON_JS = !root.JS_MD5_NO_COMMON_JS && typeof module === 'object' && module.exports;
-  var AMD = typeof define === 'function' && define.amd;
-  var ARRAY_BUFFER = !root.JS_MD5_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';
-  var HEX_CHARS = '0123456789abcdef'.split('');
-  var EXTRA = [128, 32768, 8388608, -2147483648];
-  var SHIFT = [0, 8, 16, 24];
-  var OUTPUT_TYPES = ['hex', 'array', 'digest', 'buffer', 'arrayBuffer', 'base64'];
-  var BASE64_ENCODE_CHAR = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');
-
-  var blocks = [], buffer8;
-  if (ARRAY_BUFFER) {
-    var buffer = new ArrayBuffer(68);
-    buffer8 = new Uint8Array(buffer);
-    blocks = new Uint32Array(buffer);
-  }
-
-  if (root.JS_MD5_NO_NODE_JS || !Array.isArray) {
-    Array.isArray = function (obj) {
-      return Object.prototype.toString.call(obj) === '[object Array]';
-    };
-  }
-
-  if (ARRAY_BUFFER && (root.JS_MD5_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {
-    ArrayBuffer.isView = function (obj) {
-      return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;
-    };
-  }
-
-  /**
-   * @method hex
-   * @memberof md5
-   * @description Output hash as hex string
-   * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash
-   * @returns {String} Hex string
-   * @example
-   * md5.hex('The quick brown fox jumps over the lazy dog');
-   * // equal to
-   * md5('The quick brown fox jumps over the lazy dog');
-   */
-  /**
-   * @method digest
-   * @memberof md5
-   * @description Output hash as bytes array
-   * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash
-   * @returns {Array} Bytes array
-   * @example
-   * md5.digest('The quick brown fox jumps over the lazy dog');
-   */
-  /**
-   * @method array
-   * @memberof md5
-   * @description Output hash as bytes array
-   * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash
-   * @returns {Array} Bytes array
-   * @example
-   * md5.array('The quick brown fox jumps over the lazy dog');
-   */
-  /**
-   * @method arrayBuffer
-   * @memberof md5
-   * @description Output hash as ArrayBuffer
-   * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash
-   * @returns {ArrayBuffer} ArrayBuffer
-   * @example
-   * md5.arrayBuffer('The quick brown fox jumps over the lazy dog');
-   */
-  /**
-   * @method buffer
-   * @deprecated This maybe confuse with Buffer in node.js. Please use arrayBuffer instead.
-   * @memberof md5
-   * @description Output hash as ArrayBuffer
-   * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash
-   * @returns {ArrayBuffer} ArrayBuffer
-   * @example
-   * md5.buffer('The quick brown fox jumps over the lazy dog');
-   */
-  /**
-   * @method base64
-   * @memberof md5
-   * @description Output hash as base64 string
-   * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash
-   * @returns {String} base64 string
-   * @example
-   * md5.base64('The quick brown fox jumps over the lazy dog');
-   */
-  var createOutputMethod = function (outputType) {
-    return function (message) {
-      return new Md5(true).update(message)[outputType]();
-    };
-  };
-
-  /**
-   * @method create
-   * @memberof md5
-   * @description Create Md5 object
-   * @returns {Md5} Md5 object.
-   * @example
-   * var hash = md5.create();
-   */
-  /**
-   * @method update
-   * @memberof md5
-   * @description Create and update Md5 object
-   * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash
-   * @returns {Md5} Md5 object.
-   * @example
-   * var hash = md5.update('The quick brown fox jumps over the lazy dog');
-   * // equal to
-   * var hash = md5.create();
-   * hash.update('The quick brown fox jumps over the lazy dog');
-   */
-  var createMethod = function () {
-    var method = createOutputMethod('hex');
-    if (NODE_JS) {
-      method = nodeWrap(method);
-    }
-    method.create = function () {
-      return new Md5();
-    };
-    method.update = function (message) {
-      return method.create().update(message);
-    };
-    for (var i = 0; i < OUTPUT_TYPES.length; ++i) {
-      var type = OUTPUT_TYPES[i];
-      method[type] = createOutputMethod(type);
-    }
-    return method;
-  };
-
-  var nodeWrap = function (method) {
-    var crypto = eval("require('crypto')");
-    var Buffer = eval("require('buffer').Buffer");
-    var nodeMethod = function (message) {
-      if (typeof message === 'string') {
-        return crypto.createHash('md5').update(message, 'utf8').digest('hex');
-      } else {
-        if (message === null || message === undefined) {
-          throw ERROR;
-        } else if (message.constructor === ArrayBuffer) {
-          message = new Uint8Array(message);
-        }
-      }
-      if (Array.isArray(message) || ArrayBuffer.isView(message) ||
-        message.constructor === Buffer) {
-        return crypto.createHash('md5').update(new Buffer(message)).digest('hex');
-      } else {
-        return method(message);
-      }
-    };
-    return nodeMethod;
-  };
-
-
-
-  /**
-   * Md5 class
-   * @class Md5
-   * @description This is internal class.
-   * @see {@link md5.create}
-   */
-  function Md5(sharedMemory) {
-    if (sharedMemory) {
-      blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] =
-      blocks[4] = blocks[5] = blocks[6] = blocks[7] =
-      blocks[8] = blocks[9] = blocks[10] = blocks[11] =
-      blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;
-      this.blocks = blocks;
-      this.buffer8 = buffer8;
-    } else {
-      if (ARRAY_BUFFER) {
-        var buffer = new ArrayBuffer(68);
-        this.buffer8 = new Uint8Array(buffer);
-        this.blocks = new Uint32Array(buffer);
-      } else {
-        this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
-      }
-    }
-    this.h0 = this.h1 = this.h2 = this.h3 = this.start = this.bytes = this.hBytes = 0;
-    this.finalized = this.hashed = false;
-    this.first = true;
-  }
-
-  /**
-   * @method update
-   * @memberof Md5
-   * @instance
-   * @description Update hash
-   * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash
-   * @returns {Md5} Md5 object.
-   * @see {@link md5.update}
-   */
-  Md5.prototype.update = function (message) {
-    if (this.finalized) {
-      return;
-    }
-
-    var notString, type = typeof message;
-    if (type !== 'string') {
-      if (type === 'object') {
-        if (message === null) {
-          throw ERROR;
-        } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {
-          message = new Uint8Array(message);
-        } else if (!Array.isArray(message)) {
-          if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {
-            throw ERROR;
-          }
-        }
-      } else {
-        throw ERROR;
-      }
-      notString = true;
-    }
-    var code, index = 0, i, length = message.length, blocks = this.blocks;
-    var buffer8 = this.buffer8;
-
-    while (index < length) {
-      if (this.hashed) {
-        this.hashed = false;
-        blocks[0] = blocks[16];
-        blocks[16] = blocks[1] = blocks[2] = blocks[3] =
-        blocks[4] = blocks[5] = blocks[6] = blocks[7] =
-        blocks[8] = blocks[9] = blocks[10] = blocks[11] =
-        blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;
-      }
-
-      if (notString) {
-        if (ARRAY_BUFFER) {
-          for (i = this.start; index < length && i < 64; ++index) {
-            buffer8[i++] = message[index];
-          }
-        } else {
-          for (i = this.start; index < length && i < 64; ++index) {
-            blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];
-          }
-        }
-      } else {
-        if (ARRAY_BUFFER) {
-          for (i = this.start; index < length && i < 64; ++index) {
-            code = message.charCodeAt(index);
-            if (code < 0x80) {
-              buffer8[i++] = code;
-            } else if (code < 0x800) {
-              buffer8[i++] = 0xc0 | (code >> 6);
-              buffer8[i++] = 0x80 | (code & 0x3f);
-            } else if (code < 0xd800 || code >= 0xe000) {
-              buffer8[i++] = 0xe0 | (code >> 12);
-              buffer8[i++] = 0x80 | ((code >> 6) & 0x3f);
-              buffer8[i++] = 0x80 | (code & 0x3f);
-            } else {
-              code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));
-              buffer8[i++] = 0xf0 | (code >> 18);
-              buffer8[i++] = 0x80 | ((code >> 12) & 0x3f);
-              buffer8[i++] = 0x80 | ((code >> 6) & 0x3f);
-              buffer8[i++] = 0x80 | (code & 0x3f);
-            }
-          }
-        } else {
-          for (i = this.start; index < length && i < 64; ++index) {
-            code = message.charCodeAt(index);
-            if (code < 0x80) {
-              blocks[i >> 2] |= code << SHIFT[i++ & 3];
-            } else if (code < 0x800) {
-              blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];
-              blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];
-            } else if (code < 0xd800 || code >= 0xe000) {
-              blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];
-              blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];
-              blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];
-            } else {
-              code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));
-              blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];
-              blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];
-              blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];
-              blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];
-            }
-          }
-        }
-      }
-      this.lastByteIndex = i;
-      this.bytes += i - this.start;
-      if (i >= 64) {
-        this.start = i - 64;
-        this.hash();
-        this.hashed = true;
-      } else {
-        this.start = i;
-      }
-    }
-    if (this.bytes > 4294967295) {
-      this.hBytes += this.bytes / 4294967296 << 0;
-      this.bytes = this.bytes % 4294967296;
-    }
-    return this;
-  };
-
-  Md5.prototype.finalize = function () {
-    if (this.finalized) {
-      return;
-    }
-    this.finalized = true;
-    var blocks = this.blocks, i = this.lastByteIndex;
-    blocks[i >> 2] |= EXTRA[i & 3];
-    if (i >= 56) {
-      if (!this.hashed) {
-        this.hash();
-      }
-      blocks[0] = blocks[16];
-      blocks[16] = blocks[1] = blocks[2] = blocks[3] =
-      blocks[4] = blocks[5] = blocks[6] = blocks[7] =
-      blocks[8] = blocks[9] = blocks[10] = blocks[11] =
-      blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;
-    }
-    blocks[14] = this.bytes << 3;
-    blocks[15] = this.hBytes << 3 | this.bytes >>> 29;
-    this.hash();
-  };
-
-  Md5.prototype.hash = function () {
-    var a, b, c, d, bc, da, blocks = this.blocks;
-
-    if (this.first) {
-      a = blocks[0] - 680876937;
-      a = (a << 7 | a >>> 25) - 271733879 << 0;
-      d = (-1732584194 ^ a & 2004318071) + blocks[1] - 117830708;
-      d = (d << 12 | d >>> 20) + a << 0;
-      c = (-271733879 ^ (d & (a ^ -271733879))) + blocks[2] - 1126478375;
-      c = (c << 17 | c >>> 15) + d << 0;
-      b = (a ^ (c & (d ^ a))) + blocks[3] - 1316259209;
-      b = (b << 22 | b >>> 10) + c << 0;
-    } else {
-      a = this.h0;
-      b = this.h1;
-      c = this.h2;
-      d = this.h3;
-      a += (d ^ (b & (c ^ d))) + blocks[0] - 680876936;
-      a = (a << 7 | a >>> 25) + b << 0;
-      d += (c ^ (a & (b ^ c))) + blocks[1] - 389564586;
-      d = (d << 12 | d >>> 20) + a << 0;
-      c += (b ^ (d & (a ^ b))) + blocks[2] + 606105819;
-      c = (c << 17 | c >>> 15) + d << 0;
-      b += (a ^ (c & (d ^ a))) + blocks[3] - 1044525330;
-      b = (b << 22 | b >>> 10) + c << 0;
-    }
-
-    a += (d ^ (b & (c ^ d))) + blocks[4] - 176418897;
-    a = (a << 7 | a >>> 25) + b << 0;
-    d += (c ^ (a & (b ^ c))) + blocks[5] + 1200080426;
-    d = (d << 12 | d >>> 20) + a << 0;
-    c += (b ^ (d & (a ^ b))) + blocks[6] - 1473231341;
-    c = (c << 17 | c >>> 15) + d << 0;
-    b += (a ^ (c & (d ^ a))) + blocks[7] - 45705983;
-    b = (b << 22 | b >>> 10) + c << 0;
-    a += (d ^ (b & (c ^ d))) + blocks[8] + 1770035416;
-    a = (a << 7 | a >>> 25) + b << 0;
-    d += (c ^ (a & (b ^ c))) + blocks[9] - 1958414417;
-    d = (d << 12 | d >>> 20) + a << 0;
-    c += (b ^ (d & (a ^ b))) + blocks[10] - 42063;
-    c = (c << 17 | c >>> 15) + d << 0;
-    b += (a ^ (c & (d ^ a))) + blocks[11] - 1990404162;
-    b = (b << 22 | b >>> 10) + c << 0;
-    a += (d ^ (b & (c ^ d))) + blocks[12] + 1804603682;
-    a = (a << 7 | a >>> 25) + b << 0;
-    d += (c ^ (a & (b ^ c))) + blocks[13] - 40341101;
-    d = (d << 12 | d >>> 20) + a << 0;
-    c += (b ^ (d & (a ^ b))) + blocks[14] - 1502002290;
-    c = (c << 17 | c >>> 15) + d << 0;
-    b += (a ^ (c & (d ^ a))) + blocks[15] + 1236535329;
-    b = (b << 22 | b >>> 10) + c << 0;
-    a += (c ^ (d & (b ^ c))) + blocks[1] - 165796510;
-    a = (a << 5 | a >>> 27) + b << 0;
-    d += (b ^ (c & (a ^ b))) + blocks[6] - 1069501632;
-    d = (d << 9 | d >>> 23) + a << 0;
-    c += (a ^ (b & (d ^ a))) + blocks[11] + 643717713;
-    c = (c << 14 | c >>> 18) + d << 0;
-    b += (d ^ (a & (c ^ d))) + blocks[0] - 373897302;
-    b = (b << 20 | b >>> 12) + c << 0;
-    a += (c ^ (d & (b ^ c))) + blocks[5] - 701558691;
-    a = (a << 5 | a >>> 27) + b << 0;
-    d += (b ^ (c & (a ^ b))) + blocks[10] + 38016083;
-    d = (d << 9 | d >>> 23) + a << 0;
-    c += (a ^ (b & (d ^ a))) + blocks[15] - 660478335;
-    c = (c << 14 | c >>> 18) + d << 0;
-    b += (d ^ (a & (c ^ d))) + blocks[4] - 405537848;
-    b = (b << 20 | b >>> 12) + c << 0;
-    a += (c ^ (d & (b ^ c))) + blocks[9] + 568446438;
-    a = (a << 5 | a >>> 27) + b << 0;
-    d += (b ^ (c & (a ^ b))) + blocks[14] - 1019803690;
-    d = (d << 9 | d >>> 23) + a << 0;
-    c += (a ^ (b & (d ^ a))) + blocks[3] - 187363961;
-    c = (c << 14 | c >>> 18) + d << 0;
-    b += (d ^ (a & (c ^ d))) + blocks[8] + 1163531501;
-    b = (b << 20 | b >>> 12) + c << 0;
-    a += (c ^ (d & (b ^ c))) + blocks[13] - 1444681467;
-    a = (a << 5 | a >>> 27) + b << 0;
-    d += (b ^ (c & (a ^ b))) + blocks[2] - 51403784;
-    d = (d << 9 | d >>> 23) + a << 0;
-    c += (a ^ (b & (d ^ a))) + blocks[7] + 1735328473;
-    c = (c << 14 | c >>> 18) + d << 0;
-    b += (d ^ (a & (c ^ d))) + blocks[12] - 1926607734;
-    b = (b << 20 | b >>> 12) + c << 0;
-    bc = b ^ c;
-    a += (bc ^ d) + blocks[5] - 378558;
-    a = (a << 4 | a >>> 28) + b << 0;
-    d += (bc ^ a) + blocks[8] - 2022574463;
-    d = (d << 11 | d >>> 21) + a << 0;
-    da = d ^ a;
-    c += (da ^ b) + blocks[11] + 1839030562;
-    c = (c << 16 | c >>> 16) + d << 0;
-    b += (da ^ c) + blocks[14] - 35309556;
-    b = (b << 23 | b >>> 9) + c << 0;
-    bc = b ^ c;
-    a += (bc ^ d) + blocks[1] - 1530992060;
-    a = (a << 4 | a >>> 28) + b << 0;
-    d += (bc ^ a) + blocks[4] + 1272893353;
-    d = (d << 11 | d >>> 21) + a << 0;
-    da = d ^ a;
-    c += (da ^ b) + blocks[7] - 155497632;
-    c = (c << 16 | c >>> 16) + d << 0;
-    b += (da ^ c) + blocks[10] - 1094730640;
-    b = (b << 23 | b >>> 9) + c << 0;
-    bc = b ^ c;
-    a += (bc ^ d) + blocks[13] + 681279174;
-    a = (a << 4 | a >>> 28) + b << 0;
-    d += (bc ^ a) + blocks[0] - 358537222;
-    d = (d << 11 | d >>> 21) + a << 0;
-    da = d ^ a;
-    c += (da ^ b) + blocks[3] - 722521979;
-    c = (c << 16 | c >>> 16) + d << 0;
-    b += (da ^ c) + blocks[6] + 76029189;
-    b = (b << 23 | b >>> 9) + c << 0;
-    bc = b ^ c;
-    a += (bc ^ d) + blocks[9] - 640364487;
-    a = (a << 4 | a >>> 28) + b << 0;
-    d += (bc ^ a) + blocks[12] - 421815835;
-    d = (d << 11 | d >>> 21) + a << 0;
-    da = d ^ a;
-    c += (da ^ b) + blocks[15] + 530742520;
-    c = (c << 16 | c >>> 16) + d << 0;
-    b += (da ^ c) + blocks[2] - 995338651;
-    b = (b << 23 | b >>> 9) + c << 0;
-    a += (c ^ (b | ~d)) + blocks[0] - 198630844;
-    a = (a << 6 | a >>> 26) + b << 0;
-    d += (b ^ (a | ~c)) + blocks[7] + 1126891415;
-    d = (d << 10 | d >>> 22) + a << 0;
-    c += (a ^ (d | ~b)) + blocks[14] - 1416354905;
-    c = (c << 15 | c >>> 17) + d << 0;
-    b += (d ^ (c | ~a)) + blocks[5] - 57434055;
-    b = (b << 21 | b >>> 11) + c << 0;
-    a += (c ^ (b | ~d)) + blocks[12] + 1700485571;
-    a = (a << 6 | a >>> 26) + b << 0;
-    d += (b ^ (a | ~c)) + blocks[3] - 1894986606;
-    d = (d << 10 | d >>> 22) + a << 0;
-    c += (a ^ (d | ~b)) + blocks[10] - 1051523;
-    c = (c << 15 | c >>> 17) + d << 0;
-    b += (d ^ (c | ~a)) + blocks[1] - 2054922799;
-    b = (b << 21 | b >>> 11) + c << 0;
-    a += (c ^ (b | ~d)) + blocks[8] + 1873313359;
-    a = (a << 6 | a >>> 26) + b << 0;
-    d += (b ^ (a | ~c)) + blocks[15] - 30611744;
-    d = (d << 10 | d >>> 22) + a << 0;
-    c += (a ^ (d | ~b)) + blocks[6] - 1560198380;
-    c = (c << 15 | c >>> 17) + d << 0;
-    b += (d ^ (c | ~a)) + blocks[13] + 1309151649;
-    b = (b << 21 | b >>> 11) + c << 0;
-    a += (c ^ (b | ~d)) + blocks[4] - 145523070;
-    a = (a << 6 | a >>> 26) + b << 0;
-    d += (b ^ (a | ~c)) + blocks[11] - 1120210379;
-    d = (d << 10 | d >>> 22) + a << 0;
-    c += (a ^ (d | ~b)) + blocks[2] + 718787259;
-    c = (c << 15 | c >>> 17) + d << 0;
-    b += (d ^ (c | ~a)) + blocks[9] - 343485551;
-    b = (b << 21 | b >>> 11) + c << 0;
-
-    if (this.first) {
-      this.h0 = a + 1732584193 << 0;
-      this.h1 = b - 271733879 << 0;
-      this.h2 = c - 1732584194 << 0;
-      this.h3 = d + 271733878 << 0;
-      this.first = false;
-    } else {
-      this.h0 = this.h0 + a << 0;
-      this.h1 = this.h1 + b << 0;
-      this.h2 = this.h2 + c << 0;
-      this.h3 = this.h3 + d << 0;
-    }
-  };
-
-  /**
-   * @method hex
-   * @memberof Md5
-   * @instance
-   * @description Output hash as hex string
-   * @returns {String} Hex string
-   * @see {@link md5.hex}
-   * @example
-   * hash.hex();
-   */
-  Md5.prototype.hex = function () {
-    this.finalize();
-
-    var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3;
-
-    return HEX_CHARS[(h0 >> 4) & 0x0F] + HEX_CHARS[h0 & 0x0F] +
-      HEX_CHARS[(h0 >> 12) & 0x0F] + HEX_CHARS[(h0 >> 8) & 0x0F] +
-      HEX_CHARS[(h0 >> 20) & 0x0F] + HEX_CHARS[(h0 >> 16) & 0x0F] +
-      HEX_CHARS[(h0 >> 28) & 0x0F] + HEX_CHARS[(h0 >> 24) & 0x0F] +
-      HEX_CHARS[(h1 >> 4) & 0x0F] + HEX_CHARS[h1 & 0x0F] +
-      HEX_CHARS[(h1 >> 12) & 0x0F] + HEX_CHARS[(h1 >> 8) & 0x0F] +
-      HEX_CHARS[(h1 >> 20) & 0x0F] + HEX_CHARS[(h1 >> 16) & 0x0F] +
-      HEX_CHARS[(h1 >> 28) & 0x0F] + HEX_CHARS[(h1 >> 24) & 0x0F] +
-      HEX_CHARS[(h2 >> 4) & 0x0F] + HEX_CHARS[h2 & 0x0F] +
-      HEX_CHARS[(h2 >> 12) & 0x0F] + HEX_CHARS[(h2 >> 8) & 0x0F] +
-      HEX_CHARS[(h2 >> 20) & 0x0F] + HEX_CHARS[(h2 >> 16) & 0x0F] +
-      HEX_CHARS[(h2 >> 28) & 0x0F] + HEX_CHARS[(h2 >> 24) & 0x0F] +
-      HEX_CHARS[(h3 >> 4) & 0x0F] + HEX_CHARS[h3 & 0x0F] +
-      HEX_CHARS[(h3 >> 12) & 0x0F] + HEX_CHARS[(h3 >> 8) & 0x0F] +
-      HEX_CHARS[(h3 >> 20) & 0x0F] + HEX_CHARS[(h3 >> 16) & 0x0F] +
-      HEX_CHARS[(h3 >> 28) & 0x0F] + HEX_CHARS[(h3 >> 24) & 0x0F];
-  };
-
-  /**
-   * @method toString
-   * @memberof Md5
-   * @instance
-   * @description Output hash as hex string
-   * @returns {String} Hex string
-   * @see {@link md5.hex}
-   * @example
-   * hash.toString();
-   */
-  Md5.prototype.toString = Md5.prototype.hex;
-
-  /**
-   * @method digest
-   * @memberof Md5
-   * @instance
-   * @description Output hash as bytes array
-   * @returns {Array} Bytes array
-   * @see {@link md5.digest}
-   * @example
-   * hash.digest();
-   */
-  Md5.prototype.digest = function () {
-    this.finalize();
-
-    var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3;
-    return [
-      h0 & 0xFF, (h0 >> 8) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 24) & 0xFF,
-      h1 & 0xFF, (h1 >> 8) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 24) & 0xFF,
-      h2 & 0xFF, (h2 >> 8) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 24) & 0xFF,
-      h3 & 0xFF, (h3 >> 8) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 24) & 0xFF
-    ];
-  };
-
-  /**
-   * @method array
-   * @memberof Md5
-   * @instance
-   * @description Output hash as bytes array
-   * @returns {Array} Bytes array
-   * @see {@link md5.array}
-   * @example
-   * hash.array();
-   */
-  Md5.prototype.array = Md5.prototype.digest;
-
-  /**
-   * @method arrayBuffer
-   * @memberof Md5
-   * @instance
-   * @description Output hash as ArrayBuffer
-   * @returns {ArrayBuffer} ArrayBuffer
-   * @see {@link md5.arrayBuffer}
-   * @example
-   * hash.arrayBuffer();
-   */
-  Md5.prototype.arrayBuffer = function () {
-    this.finalize();
-
-    var buffer = new ArrayBuffer(16);
-    var blocks = new Uint32Array(buffer);
-    blocks[0] = this.h0;
-    blocks[1] = this.h1;
-    blocks[2] = this.h2;
-    blocks[3] = this.h3;
-    return buffer;
-  };
-
-  /**
-   * @method buffer
-   * @deprecated This maybe confuse with Buffer in node.js. Please use arrayBuffer instead.
-   * @memberof Md5
-   * @instance
-   * @description Output hash as ArrayBuffer
-   * @returns {ArrayBuffer} ArrayBuffer
-   * @see {@link md5.buffer}
-   * @example
-   * hash.buffer();
-   */
-  Md5.prototype.buffer = Md5.prototype.arrayBuffer;
-
-  /**
-   * @method base64
-   * @memberof Md5
-   * @instance
-   * @description Output hash as base64 string
-   * @returns {String} base64 string
-   * @see {@link md5.base64}
-   * @example
-   * hash.base64();
-   */
-  Md5.prototype.base64 = function () {
-    var v1, v2, v3, base64Str = '', bytes = this.array();
-    for (var i = 0; i < 15;) {
-      v1 = bytes[i++];
-      v2 = bytes[i++];
-      v3 = bytes[i++];
-      base64Str += BASE64_ENCODE_CHAR[v1 >>> 2] +
-        BASE64_ENCODE_CHAR[(v1 << 4 | v2 >>> 4) & 63] +
-        BASE64_ENCODE_CHAR[(v2 << 2 | v3 >>> 6) & 63] +
-        BASE64_ENCODE_CHAR[v3 & 63];
-    }
-    v1 = bytes[i];
-    base64Str += BASE64_ENCODE_CHAR[v1 >>> 2] +
-      BASE64_ENCODE_CHAR[(v1 << 4) & 63] +
-      '==';
-    return base64Str;
-  };
-
-  var exports = createMethod();
-
-  if (COMMON_JS) {
-    module.exports = exports;
-  } else {
-    /**
-     * @method md5
-     * @description Md5 hash function, export to global in browsers.
-     * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash
-     * @returns {String} md5 hashes
-     * @example
-     * md5(''); // d41d8cd98f00b204e9800998ecf8427e
-     * md5('The quick brown fox jumps over the lazy dog'); // 9e107d9d372bb6826bd81d3542a419d6
-     * md5('The quick brown fox jumps over the lazy dog.'); // e4d909c290d0fb1ca068ffaddf22cbd0
-     *
-     * // It also supports UTF-8 encoding
-     * md5('中文'); // a7bac2239fcdcb3a067903d8077c4a07
-     *
-     * // It also supports byte `Array`, `Uint8Array`, `ArrayBuffer`
-     * md5([]); // d41d8cd98f00b204e9800998ecf8427e
-     * md5(new Uint8Array([])); // d41d8cd98f00b204e9800998ecf8427e
-     */
-    root.md5 = exports;
-    if (AMD) {
-      define(function () {
-        return exports;
-      });
-    }
-  }
-})();
diff --git a/uview-ui/LICENSE b/uview-ui/LICENSE
deleted file mode 100644
index 8e39ead..0000000
--- a/uview-ui/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2020 www.uviewui.com
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
\ No newline at end of file
diff --git a/uview-ui/README.md b/uview-ui/README.md
deleted file mode 100644
index 06d5676..0000000
--- a/uview-ui/README.md
+++ /dev/null
@@ -1,106 +0,0 @@
-<p align="center">
-    <img alt="logo" src="https://uviewui.com/common/logo.png" width="120" height="120" style="margin-bottom: 10px;">
-</p>
-<h3 align="center" style="margin: 30px 0 30px;font-weight: bold;font-size:40px;">uView</h3>
-<h3 align="center">多平台快速开发的UI框架</h3>
-
-
-## 说明
-
-uView UI,是[uni-app](https://uniapp.dcloud.io/)生态优秀的UI框架,全面的组件和便捷的工具会让您信手拈来,如鱼得水
-
-## 特性
-
-- 兼容安卓,iOS,微信小程序,H5,QQ小程序,百度小程序,支付宝小程序,头条小程序
-- 60+精选组件,功能丰富,多端兼容,让您快速集成,开箱即用
-- 众多贴心的JS利器,让您飞镖在手,召之即来,百步穿杨
-- 众多的常用页面和布局,让您专注逻辑,事半功倍
-- 详尽的文档支持,现代化的演示效果
-- 按需引入,精简打包体积
-
-
-## 安装
-
-```bash
-# npm方式安装
-npm i uview-ui
-```
-
-## 快速上手
-
-1. `main.js`引入uView库
-```js
-// main.js
-import uView from 'uview-ui';
-Vue.use(uView);
-```
-
-2. `App.vue`引入基础样式(注意style标签需声明scss属性支持)
-```css
-/* App.vue */
-<style lang="scss">
-@import "uview-ui/index.scss";
-</style>
-```
-
-3. `uni.scss`引入全局scss变量文件
-```css
-/* uni.scss */
-@import "uview-ui/theme.scss";
-```
-
-4. `pages.json`配置easycom规则(按需引入)
-
-```js
-// pages.json
-{
-	"easycom": {
-		// npm安装的方式不需要前面的"@/",下载安装的方式需要"@/"
-		// npm安装方式
-		"^u-(.*)": "uview-ui/components/u-$1/u-$1.vue"
-		// 下载安装方式
-		// "^u-(.*)": "@/uview-ui/components/u-$1/u-$1.vue"
-	},
-	// 此为本身已有的内容
-	"pages": [
-		// ......
-	]
-}
-```
-
-请通过[快速上手](https://uviewui.com/components/quickstart.html)了解更详细的内容 
-
-## 使用方法
-配置easycom规则后,自动按需引入,无需`import`组件,直接引用即可。
-
-```html
-<template>
-	<u-button>按钮</u-button>
-</template>
-```
-
-请通过[快速上手](https://uviewui.com/components/quickstart.html)了解更详细的内容 
-
-## 链接
-
-- [官方文档](https://uviewui.com/)
-- [更新日志](https://uviewui.com/components/changelog.html)
-- [升级指南](https://uviewui.com/components/changelog.html)
-- [关于我们](https://uviewui.com/cooperation/about.html)
-
-## 预览
-
-您可以通过**微信**扫码,查看最佳的演示效果。
-<br>
-<br>
-<img src="https://uviewui.com/common/weixin_mini_qrcode.png" width="220" height="220" >
-
-<!-- ## 捐赠uView的研发
-
-uView文档和源码全部开源免费,如果您认为uView帮到了您的开发工作,您可以捐赠uView的研发工作,捐赠无门槛,哪怕是一杯可乐也好(相信这比打赏主播更有意义)。
-
-<img src="https://uviewui.com/common/wechat.png" width="220" >
-<img style="margin-left: 100px;" src="https://uviewui.com/common/alipay.png" width="220" >
- -->
-## 版权信息
-uView遵循[MIT](https://en.wikipedia.org/wiki/MIT_License)开源协议,意味着您无需支付任何费用,也无需授权,即可将uView应用到您的产品中。
diff --git a/uview-ui/components/u-action-sheet/u-action-sheet.vue b/uview-ui/components/u-action-sheet/u-action-sheet.vue
deleted file mode 100644
index 722b668..0000000
--- a/uview-ui/components/u-action-sheet/u-action-sheet.vue
+++ /dev/null
@@ -1,190 +0,0 @@
-<template>
-	<u-popup mode="bottom" :border-radius="borderRadius" :popup="false" v-model="value" :maskCloseAble="maskCloseAble"
-	    length="auto" :safeAreaInsetBottom="safeAreaInsetBottom" @close="popupClose" :z-index="uZIndex">
-		<view class="u-tips u-border-bottom" v-if="tips.text" :style="[tipsStyle]">
-			{{tips.text}}
-		</view>
-		<block v-for="(item, index) in list" :key="index">
-			<view 
-				@touchmove.stop.prevent 
-				@tap="itemClick(index)" 
-				:style="[itemStyle(index)]" 
-				class="u-action-sheet-item u-line-1" 
-				:class="[index < list.length - 1 ? 'u-border-bottom' : '']"
-				:hover-stay-time="150"
-			>
-				<text>{{item.text}}</text>
-				<text class="u-action-sheet-item__subtext u-line-1" v-if="item.subText">{{item.subText}}</text>
-			</view>
-		</block>
-		<view class="u-gab" v-if="cancelBtn">
-		</view>
-		<view @touchmove.stop.prevent class="u-actionsheet-cancel u-action-sheet-item" hover-class="u-hover-class"
-		    :hover-stay-time="150" v-if="cancelBtn" @tap="close">{{cancelText}}</view>
-	</u-popup>
-</template>
-
-<script>
-	/**
-	 * actionSheet 操作菜单
-	 * @description 本组件用于从底部弹出一个操作菜单,供用户选择并返回结果。本组件功能类似于uni的uni.showActionSheetAPI,配置更加灵活,所有平台都表现一致。
-	 * @tutorial https://www.uviewui.com/components/actionSheet.html
-	 * @property {Array<Object>} list 按钮的文字数组,见官方文档示例
-	 * @property {Object} tips 顶部的提示文字,见官方文档示例
-	 * @property {String} cancel-text 取消按钮的提示文字
-	 * @property {Boolean} cancel-btn 是否显示底部的取消按钮(默认true)
-	 * @property {Number String} border-radius 弹出部分顶部左右的圆角值,单位rpx(默认0)
-	 * @property {Boolean} mask-close-able 点击遮罩是否可以关闭(默认true)
-	 * @property {Boolean} safe-area-inset-bottom 是否开启底部安全区适配(默认false)
-	 * @property {Number String} z-index z-index值(默认1075)
-	 * @property {String} cancel-text 取消按钮的提示文字
-	 * @event {Function} click 点击ActionSheet列表项时触发
-	 * @event {Function} close 点击取消按钮时触发
-	 * @example <u-action-sheet :list="list" @click="click" v-model="show"></u-action-sheet>
-	 */
-	export default {
-		name: "u-action-sheet",
-		props: {
-			// 点击遮罩是否可以关闭actionsheet
-			maskCloseAble: {
-				type: Boolean,
-				default: true
-			},
-			// 按钮的文字数组,可以自定义颜色和字体大小,字体单位为rpx
-			list: {
-				type: Array,
-				default () {
-					// 如下
-					// return [{
-					// 	text: '确定',
-					// 	color: '',
-					// 	fontSize: ''
-					// }]
-					return [];
-				}
-			},
-			// 顶部的提示文字
-			tips: {
-				type: Object,
-				default () {
-					return {
-						text: '',
-						color: '',
-						fontSize: '26'
-					}
-				}
-			},
-			// 底部的取消按钮
-			cancelBtn: {
-				type: Boolean,
-				default: true
-			},
-			// 是否开启底部安全区适配,开启的话,会在iPhoneX机型底部添加一定的内边距
-			safeAreaInsetBottom: {
-				type: Boolean,
-				default: false
-			},
-			// 通过双向绑定控制组件的弹出与收起
-			value: {
-				type: Boolean,
-				default: false
-			},
-			// 弹出的顶部圆角值
-			borderRadius: {
-				type: [String, Number],
-				default: 0
-			},
-			// 弹出的z-index值
-			zIndex: {
-				type: [String, Number],
-				default: 0
-			},
-			// 取消按钮的文字提示
-			cancelText: {
-				type: String,
-				default: '取消'
-			}
-		},
-		computed: {
-			// 顶部提示的样式
-			tipsStyle() {
-				let style = {};
-				if (this.tips.color) style.color = this.tips.color;
-				if (this.tips.fontSize) style.fontSize = this.tips.fontSize + 'rpx';
-				return style;
-			},
-			// 操作项目的样式
-			itemStyle() {
-				return (index) => {
-					let style = {};
-					if (this.list[index].color) style.color = this.list[index].color;
-					if (this.list[index].fontSize) style.fontSize = this.list[index].fontSize + 'rpx';
-					// 选项被禁用的样式
-					if (this.list[index].disabled) style.color = '#c0c4cc';
-					return style;
-				}
-			},
-			uZIndex() {
-				// 如果用户有传递z-index值,优先使用
-				return this.zIndex ? this.zIndex : this.$u.zIndex.popup;
-			}
-		},
-		methods: {
-			// 点击取消按钮
-			close() {
-				// 发送input事件,并不会作用于父组件,而是要设置组件内部通过props传递的value参数
-				// 这是一个vue发送事件的特殊用法
-				this.popupClose();
-				this.$emit('close');
-			},
-			// 弹窗关闭
-			popupClose() {
-				this.$emit('input', false);
-			},
-			// 点击某一个item
-			itemClick(index) {
-				// disabled的项禁止点击
-				if(this.list[index].disabled) return;
-				this.$emit('click', index);
-				this.$emit('input', false);
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	@import "../../libs/css/style.components.scss";
-
-	.u-tips {
-		font-size: 26rpx;
-		text-align: center;
-		padding: 34rpx 0;
-		line-height: 1;
-		color: $u-tips-color;
-	}
-
-	.u-action-sheet-item {
-		@include vue-flex;;
-		line-height: 1;
-		justify-content: center;
-		align-items: center;
-		font-size: 32rpx;
-		padding: 34rpx 0;
-		flex-direction: column;
-	}
-	
-	.u-action-sheet-item__subtext {
-		font-size: 24rpx;
-		color: $u-tips-color;
-		margin-top: 20rpx;
-	}
-
-	.u-gab {
-		height: 12rpx;
-		background-color: rgb(234, 234, 236);
-	}
-
-	.u-actionsheet-cancel {
-		color: $u-main-color;
-	}
-</style>
diff --git a/uview-ui/components/u-alert-tips/u-alert-tips.vue b/uview-ui/components/u-alert-tips/u-alert-tips.vue
deleted file mode 100644
index e81fc37..0000000
--- a/uview-ui/components/u-alert-tips/u-alert-tips.vue
+++ /dev/null
@@ -1,256 +0,0 @@
-<template>
-	<view class="u-alert-tips" v-if="show" :class="[
-		!show ? 'u-close-alert-tips': '',
-		type ? 'u-alert-tips--bg--' + type + '-light' : '',
-		type ? 'u-alert-tips--border--' + type + '-disabled' : '',
-	]" :style="{
-		backgroundColor: bgColor,
-		borderColor: borderColor
-	}">
-		<view class="u-icon-wrap">
-			<u-icon v-if="showIcon" :name="uIcon" :size="description ? 40 : 32" class="u-icon" :color="uIconType" :custom-style="iconStyle"></u-icon>
-		</view>
-		<view class="u-alert-content" @tap.stop="click">
-			<view class="u-alert-title" :style="[uTitleStyle]">
-				{{title}}
-			</view>
-			<view v-if="description" class="u-alert-desc" :style="[descStyle]">
-				{{description}}
-			</view>
-		</view>
-		<view class="u-icon-wrap">
-			<u-icon @click="close" v-if="closeAble && !closeText" hoverClass="u-type-error-hover-color" name="close" color="#c0c4cc"
-			 :size="22" class="u-close-icon" :style="{
-				top: description ? '18rpx' : '24rpx'
-			}"></u-icon>
-		</view>
-		<text v-if="closeAble && closeText" class="u-close-text" :style="{
-			top: description ? '18rpx' : '24rpx'
-		}">{{closeText}}</text>
-	</view>
-</template>
-
-<script>
-	/**
-	 * alertTips 警告提示
-	 * @description 警告提示,展现需要关注的信息
-	 * @tutorial https://uviewui.com/components/alertTips.html
-	 * @property {String} title 显示的标题文字
-	 * @property {String} description 辅助性文字,颜色比title浅一点,字号也小一点,可选
-	 * @property {String} type 关闭按钮(默认为叉号icon图标)
-	 * @property {String} icon 图标名称
-	 * @property {Object} icon-style 图标的样式,对象形式
-	 * @property {Object} title-style 标题的样式,对象形式
-	 * @property {Object} desc-style 描述的样式,对象形式
-	 * @property {String} close-able 用文字替代关闭图标,close-able为true时有效
-	 * @property {Boolean} show-icon 是否显示左边的辅助图标
-	 * @property {Boolean} show 显示或隐藏组件
-	 * @event {Function} click 点击组件时触发
-	 * @event {Function} close 点击关闭按钮时触发
-	 */
-	export default {
-		name: 'u-alert-tips',
-		props: {
-			// 显示文字
-			title: {
-				type: String,
-				default: ''
-			},
-			// 主题,success/warning/info/error
-			type: {
-				type: String,
-				default: 'warning'
-			},
-			// 辅助性文字
-			description: {
-				type: String,
-				default: ''
-			},
-			// 是否可关闭
-			closeAble: {
-				type: Boolean,
-				default: false
-			},
-			// 关闭按钮自定义文本
-			closeText: {
-				type: String,
-				default: ''
-			},
-			// 是否显示图标
-			showIcon: {
-				type: Boolean,
-				default: false
-			},
-			// 文字颜色,如果定义了color值,icon会失效
-			color: {
-				type: String,
-				default: ''
-			},
-			// 背景颜色
-			bgColor: {
-				type: String,
-				default: ''
-			},
-			// 边框颜色
-			borderColor: {
-				type: String,
-				default: ''
-			},
-			// 是否显示
-			show: {
-				type: Boolean,
-				default: true
-			},
-			// 左边显示的icon
-			icon: {
-				type: String,
-				default: ''
-			},
-			// icon的样式
-			iconStyle: {
-				type: Object,
-				default() {
-					return {}
-				}
-			},
-			// 标题的样式
-			titleStyle: {
-				type: Object,
-				default() {
-					return {}
-				}
-			},
-			// 描述文字的样式
-			descStyle: {
-				type: Object,
-				default() {
-					return {}
-				}
-			},
-		},
-		data() {
-			return {
-			}
-		},
-		computed: {
-			uTitleStyle() {
-				let style = {};
-				// 如果有描述文字的话,标题进行加粗
-				style.fontWeight = this.description ? 500 : 'normal';
-				// 将用户传入样式对象和style合并,传入的优先级比style高,同属性会被覆盖
-				return this.$u.deepMerge(style, this.titleStyle);
-			},
-			uIcon() {
-				// 如果有设置icon名称就使用,否则根据type主题,推定一个默认的图标
-				return this.icon ? this.icon : this.$u.type2icon(this.type);
-			},
-			uIconType() {
-				// 如果有设置图标的样式,优先使用,没有的话,则用type的样式
-				return Object.keys(this.iconStyle).length ? '' : this.type;
-			}
-		},
-		methods: {
-			// 点击内容
-			click() {
-				this.$emit('click');
-			},
-			// 点击关闭按钮
-			close() {
-				this.$emit('close');
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	@import "../../libs/css/style.components.scss";
-	
-	.u-alert-tips {
-		@include vue-flex;
-		align-items: center;
-		padding: 16rpx 30rpx;
-		border-radius: 8rpx;
-		position: relative;
-		transition: all 0.3s linear;
-		border: 1px solid #fff;
-		
-		&--bg--primary-light {
-			background-color: $u-type-primary-light;
-		}
-		
-		&--bg--info-light {
-			background-color: $u-type-info-light;
-		}
-		
-		&--bg--success-light {
-			background-color: $u-type-success-light;
-		}
-		
-		&--bg--warning-light {
-			background-color: $u-type-warning-light;
-		}
-		
-		&--bg--error-light {
-			background-color: $u-type-error-light;
-		}
-		
-		&--border--primary-disabled {
-			border-color: $u-type-primary-disabled;
-		}
-		
-		&--border--success-disabled {
-			border-color: $u-type-success-disabled;
-		}
-		
-		&--border--error-disabled {
-			border-color: $u-type-error-disabled;
-		}
-		
-		&--border--warning-disabled {
-			border-color: $u-type-warning-disabled;
-		}
-		
-		&--border--info-disabled {
-			border-color: $u-type-info-disabled;
-		}
-	}
-
-	.u-close-alert-tips {
-		opacity: 0;
-		visibility: hidden;
-	}
-
-	.u-icon {
-		margin-right: 16rpx;
-	}
-
-	.u-alert-title {
-		font-size: 28rpx;
-		color: $u-main-color;
-	}
-
-	.u-alert-desc {
-		font-size: 26rpx;
-		text-align: left;
-		color: $u-content-color;
-	}
-
-	.u-close-icon {
-		position: absolute;
-		top: 20rpx;
-		right: 20rpx;
-	}
-
-	.u-close-hover {
-		color: red;
-	}
-	
-	.u-close-text {
-		font-size: 24rpx;
-		color: $u-tips-color;
-		position: absolute;
-		top: 20rpx;
-		right: 20rpx;
-		line-height: 1;
-	}
-</style>
diff --git a/uview-ui/components/u-avatar-cropper/u-avatar-cropper.vue b/uview-ui/components/u-avatar-cropper/u-avatar-cropper.vue
deleted file mode 100644
index a48dd54..0000000
--- a/uview-ui/components/u-avatar-cropper/u-avatar-cropper.vue
+++ /dev/null
@@ -1,290 +0,0 @@
-<template>
-	<view class="content">
-		<view class="cropper-wrapper" :style="{ height: cropperOpt.height + 'px' }">
-			<canvas
-				class="cropper"
-				:disable-scroll="true"
-				@touchstart="touchStart"
-				@touchmove="touchMove"
-				@touchend="touchEnd"
-				:style="{ width: cropperOpt.width, height: cropperOpt.height, backgroundColor: 'rgba(0, 0, 0, 0.8)' }"
-				canvas-id="cropper"
-				id="cropper"
-			></canvas>
-			<canvas
-				class="cropper"
-				:disable-scroll="true"
-				:style="{
-					position: 'fixed',
-					top: `-${cropperOpt.width * cropperOpt.pixelRatio}px`,
-					left: `-${cropperOpt.height * cropperOpt.pixelRatio}px`,
-					width: `${cropperOpt.width * cropperOpt.pixelRatio}px`,
-					height: `${cropperOpt.height * cropperOpt.pixelRatio}`
-				}"
-				canvas-id="targetId"
-				id="targetId"
-			></canvas>
-		</view>
-		<view class="cropper-buttons safe-area-padding" :style="{ height: bottomNavHeight + 'px' }">
-			<!-- #ifdef H5 -->
-			<view class="upload" @tap="uploadTap">选择图片</view>
-			<!-- #endif -->
-			<!-- #ifndef H5 -->
-			<view class="upload" @tap="uploadTap">重新选择</view>
-			<!-- #endif -->
-			<view class="getCropperImage" @tap="getCropperImage(false)">确定</view>
-		</view>
-	</view>
-</template>
-
-<script>
-import WeCropper from './weCropper.js';
-export default {
-	props: {
-		// 裁剪矩形框的样式,其中可包含的属性为lineWidth-边框宽度(单位rpx),color: 边框颜色,
-		// mask-遮罩颜色,一般设置为一个rgba的透明度,如"rgba(0, 0, 0, 0.35)"
-		boundStyle: {
-			type: Object,
-			default() {
-				return {
-					lineWidth: 4,
-					borderColor: 'rgb(245, 245, 245)',
-					mask: 'rgba(0, 0, 0, 0.35)'
-				};
-			}
-		}
-		// // 裁剪框宽度,单位rpx
-		// rectWidth: {
-		// 	type: [String, Number],
-		// 	default: 400
-		// },
-		// // 裁剪框高度,单位rpx
-		// rectHeight: {
-		// 	type: [String, Number],
-		// 	default: 400
-		// },
-		// // 输出图片宽度,单位rpx
-		// destWidth: {
-		// 	type: [String, Number],
-		// 	default: 400
-		// },
-		// // 输出图片高度,单位rpx
-		// destHeight: {
-		// 	type: [String, Number],
-		// 	default: 400
-		// },
-		// // 输出的图片类型,如果发现裁剪的图片很大,可能是因为设置为了"png",改成"jpg"即可
-		// fileType: {
-		// 	type: String,
-		// 	default: 'jpg',
-		// },
-		// // 生成的图片质量
-		// // H5上无效,目前不考虑使用此参数
-		// quality: {
-		// 	type: [Number, String],
-		// 	default: 1
-		// }
-	},
-	data() {
-		return {
-			// 底部导航的高度
-			bottomNavHeight: 50,
-			originWidth: 200,
-			width: 0,
-			height: 0,
-			cropperOpt: {
-				id: 'cropper',
-				targetId: 'targetCropper',
-				pixelRatio: 1,
-				width: 0,
-				height: 0,
-				scale: 2.5,
-				zoom: 8,
-				cut: {
-					x: (this.width - this.originWidth) / 2,
-					y: (this.height - this.originWidth) / 2,
-					width: this.originWidth,
-					height: this.originWidth
-				},
-				boundStyle: {
-					lineWidth: uni.upx2px(this.boundStyle.lineWidth),
-					mask: this.boundStyle.mask,
-					color: this.boundStyle.borderColor
-				}
-			},
-			// 裁剪框和输出图片的尺寸,高度默认等于宽度
-			// 输出图片宽度,单位px
-			destWidth: 200,
-			// 裁剪框宽度,单位px
-			rectWidth: 200,
-			// 输出的图片类型,如果'png'类型发现裁剪的图片太大,改成"jpg"即可
-			fileType: 'jpg',
-			src: '', // 选择的图片路径,用于在点击确定时,判断是否选择了图片
-		};
-	},
-	onLoad(option) {
-		let rectInfo = uni.getSystemInfoSync();
-		this.width = rectInfo.windowWidth;
-		this.height = rectInfo.windowHeight - this.bottomNavHeight;
-		this.cropperOpt.width = this.width;
-		this.cropperOpt.height = this.height;
-		this.cropperOpt.pixelRatio = rectInfo.pixelRatio;
-
-		if (option.destWidth) this.destWidth = option.destWidth;
-		if (option.rectWidth) {
-			let rectWidth = Number(option.rectWidth);
-			this.cropperOpt.cut = {
-				x: (this.width - rectWidth) / 2,
-				y: (this.height - rectWidth) / 2,
-				width: rectWidth,
-				height: rectWidth
-			};
-		}
-		this.rectWidth = option.rectWidth;
-		if (option.fileType) this.fileType = option.fileType;
-		// 初始化
-		this.cropper = new WeCropper(this.cropperOpt)
-			.on('ready', ctx => {
-				// wecropper is ready for work!
-			})
-			.on('beforeImageLoad', ctx => {
-				// before picture loaded, i can do something
-			})
-			.on('imageLoad', ctx => {
-				// picture loaded
-			})
-			.on('beforeDraw', (ctx, instance) => {
-				// before canvas draw,i can do something
-			});
-		// 设置导航栏样式,以免用户在page.json中没有设置为黑色背景
-		uni.setNavigationBarColor({
-			frontColor: '#ffffff',
-			backgroundColor: '#000000'
-		});
-		uni.chooseImage({
-			count: 1, // 默认9
-			sizeType: ['compressed'], // 可以指定是原图还是压缩图,默认二者都有
-			sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
-			success: res => {
-				this.src = res.tempFilePaths[0];
-				//  获取裁剪图片资源后,给data添加src属性及其值
-				this.cropper.pushOrign(this.src);
-			}
-		});
-	},
-	methods: {
-		touchStart(e) {
-			this.cropper.touchStart(e);
-		},
-		touchMove(e) {
-			this.cropper.touchMove(e);
-		},
-		touchEnd(e) {
-			this.cropper.touchEnd(e);
-		},
-		getCropperImage(isPre = false) {
-			if(!this.src) return this.$u.toast('请先选择图片再裁剪');
-
-			let cropper_opt = {
-				destHeight: Number(this.destWidth), // uni.canvasToTempFilePath要求这些参数为数值
-				destWidth: Number(this.destWidth),
-				fileType: this.fileType
-			};
-			this.cropper.getCropperImage(cropper_opt, (path, err) => {
-				if (err) {
-					uni.showModal({
-						title: '温馨提示',
-						content: err.message
-					});
-				} else {
-					if (isPre) {
-						uni.previewImage({
-							current: '', // 当前显示图片的 http 链接
-							urls: [path] // 需要预览的图片 http 链接列表
-						});
-					} else {
-						uni.$emit('uAvatarCropper', path);
-						this.$u.route({
-							type: 'back'
-						});
-					}
-				}
-			});
-		},
-		uploadTap() {
-			const self = this;
-			uni.chooseImage({
-				count: 1, // 默认9
-				sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
-				sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
-				success: (res) => {
-					self.src = res.tempFilePaths[0];
-					//  获取裁剪图片资源后,给data添加src属性及其值
-
-					self.cropper.pushOrign(this.src);
-				}
-			});
-		}
-	}
-};
-</script>
-
-<style scoped lang="scss">
-@import '../../libs/css/style.components.scss';
-
-.content {
-	background: rgba(255, 255, 255, 1);
-}
-
-.cropper {
-	position: absolute;
-	top: 0;
-	left: 0;
-	width: 100%;
-	height: 100%;
-	z-index: 11;
-}
-
-.cropper-buttons {
-	background-color: #000000;
-	color: #eee;
-}
-
-.cropper-wrapper {
-	position: relative;
-	@include vue-flex;
-	flex-direction: row;
-	justify-content: space-between;
-	align-items: center;
-	width: 100%;
-	background-color: #000;
-}
-
-.cropper-buttons {
-	width: 100vw;
-	@include vue-flex;
-	flex-direction: row;
-	justify-content: space-between;
-	align-items: center;
-	position: fixed;
-	bottom: 0;
-	left: 0;
-	font-size: 28rpx;
-}
-
-.cropper-buttons .upload,
-.cropper-buttons .getCropperImage {
-	width: 50%;
-	text-align: center;
-}
-
-.cropper-buttons .upload {
-	text-align: left;
-	padding-left: 50rpx;
-}
-
-.cropper-buttons .getCropperImage {
-	text-align: right;
-	padding-right: 50rpx;
-}
-</style>
diff --git a/uview-ui/components/u-avatar-cropper/weCropper.js b/uview-ui/components/u-avatar-cropper/weCropper.js
deleted file mode 100644
index df02483..0000000
--- a/uview-ui/components/u-avatar-cropper/weCropper.js
+++ /dev/null
@@ -1,1265 +0,0 @@
-/**
- * we-cropper v1.3.9
- * (c) 2020 dlhandsome
- * @license MIT
- */
-(function(global, factory) {
-	typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
-		typeof define === 'function' && define.amd ? define(factory) :
-		(global.WeCropper = factory());
-}(this, (function() {
-	'use strict';
-
-	var device = void 0;
-	var TOUCH_STATE = ['touchstarted', 'touchmoved', 'touchended'];
-
-	function firstLetterUpper(str) {
-		return str.charAt(0).toUpperCase() + str.slice(1)
-	}
-
-	function setTouchState(instance) {
-		var arg = [],
-			len = arguments.length - 1;
-		while (len-- > 0) arg[len] = arguments[len + 1];
-
-		TOUCH_STATE.forEach(function(key, i) {
-			if (arg[i] !== undefined) {
-				instance[key] = arg[i];
-			}
-		});
-	}
-
-	function validator(instance, o) {
-		Object.defineProperties(instance, o);
-	}
-
-	function getDevice() {
-		if (!device) {
-			device = uni.getSystemInfoSync();
-		}
-		return device
-	}
-
-	var tmp = {};
-
-	var ref = getDevice();
-	var pixelRatio = ref.pixelRatio;
-
-	var DEFAULT = {
-		id: {
-			default: 'cropper',
-			get: function get() {
-				return tmp.id
-			},
-			set: function set(value) {
-				if (typeof(value) !== 'string') {
-					console.error(("id:" + value + " is invalid"));
-				}
-				tmp.id = value;
-			}
-		},
-		width: {
-			default: 750,
-			get: function get() {
-				return tmp.width
-			},
-			set: function set(value) {
-				if (typeof(value) !== 'number') {
-					console.error(("width:" + value + " is invalid"));
-				}
-				tmp.width = value;
-			}
-		},
-		height: {
-			default: 750,
-			get: function get() {
-				return tmp.height
-			},
-			set: function set(value) {
-				if (typeof(value) !== 'number') {
-					console.error(("height:" + value + " is invalid"));
-				}
-				tmp.height = value;
-			}
-		},
-		pixelRatio: {
-			default: pixelRatio,
-			get: function get() {
-				return tmp.pixelRatio
-			},
-			set: function set(value) {
-				if (typeof(value) !== 'number') {
-					console.error(("pixelRatio:" + value + " is invalid"));
-				}
-				tmp.pixelRatio = value;
-			}
-		},
-		scale: {
-			default: 2.5,
-			get: function get() {
-				return tmp.scale
-			},
-			set: function set(value) {
-				if (typeof(value) !== 'number') {
-					console.error(("scale:" + value + " is invalid"));
-				}
-				tmp.scale = value;
-			}
-		},
-		zoom: {
-			default: 5,
-			get: function get() {
-				return tmp.zoom
-			},
-			set: function set(value) {
-				if (typeof(value) !== 'number') {
-					console.error(("zoom:" + value + " is invalid"));
-				} else if (value < 0 || value > 10) {
-					console.error("zoom should be ranged in 0 ~ 10");
-				}
-				tmp.zoom = value;
-			}
-		},
-		src: {
-			default: '',
-			get: function get() {
-				return tmp.src
-			},
-			set: function set(value) {
-				if (typeof(value) !== 'string') {
-					console.error(("src:" + value + " is invalid"));
-				}
-				tmp.src = value;
-			}
-		},
-		cut: {
-			default: {},
-			get: function get() {
-				return tmp.cut
-			},
-			set: function set(value) {
-				if (typeof(value) !== 'object') {
-					console.error(("cut:" + value + " is invalid"));
-				}
-				tmp.cut = value;
-			}
-		},
-		boundStyle: {
-			default: {},
-			get: function get() {
-				return tmp.boundStyle
-			},
-			set: function set(value) {
-				if (typeof(value) !== 'object') {
-					console.error(("boundStyle:" + value + " is invalid"));
-				}
-				tmp.boundStyle = value;
-			}
-		},
-		onReady: {
-			default: null,
-			get: function get() {
-				return tmp.ready
-			},
-			set: function set(value) {
-				tmp.ready = value;
-			}
-		},
-		onBeforeImageLoad: {
-			default: null,
-			get: function get() {
-				return tmp.beforeImageLoad
-			},
-			set: function set(value) {
-				tmp.beforeImageLoad = value;
-			}
-		},
-		onImageLoad: {
-			default: null,
-			get: function get() {
-				return tmp.imageLoad
-			},
-			set: function set(value) {
-				tmp.imageLoad = value;
-			}
-		},
-		onBeforeDraw: {
-			default: null,
-			get: function get() {
-				return tmp.beforeDraw
-			},
-			set: function set(value) {
-				tmp.beforeDraw = value;
-			}
-		}
-	};
-
-	var ref$1 = getDevice();
-	var windowWidth = ref$1.windowWidth;
-
-	function prepare() {
-		var self = this;
-
-		// v1.4.0 版本中将不再自动绑定we-cropper实例
-		self.attachPage = function() {
-			var pages = getCurrentPages();
-			// 获取到当前page上下文
-			var pageContext = pages[pages.length - 1];
-			// 把this依附在Page上下文的wecropper属性上,便于在page钩子函数中访问
-			Object.defineProperty(pageContext, 'wecropper', {
-				get: function get() {
-					console.warn(
-						'Instance will not be automatically bound to the page after v1.4.0\n\n' +
-						'Please use a custom instance name instead\n\n' +
-						'Example: \n' +
-						'this.mycropper = new WeCropper(options)\n\n' +
-						'// ...\n' +
-						'this.mycropper.getCropperImage()'
-					);
-					return self
-				},
-				configurable: true
-			});
-		};
-
-		self.createCtx = function() {
-			var id = self.id;
-			var targetId = self.targetId;
-
-			if (id) {
-				self.ctx = self.ctx || uni.createCanvasContext(id);
-				self.targetCtx = self.targetCtx || uni.createCanvasContext(targetId);
-			} else {
-				console.error("constructor: create canvas context failed, 'id' must be valuable");
-			}
-		};
-
-		self.deviceRadio = windowWidth / 750;
-	}
-
-	var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !==
-		'undefined' ? self : {};
-
-
-
-
-
-	function createCommonjsModule(fn, module) {
-		return module = {
-			exports: {}
-		}, fn(module, module.exports), module.exports;
-	}
-
-	var tools = createCommonjsModule(function(module, exports) {
-		/**
-		 * String type check
-		 */
-		exports.isStr = function(v) {
-			return typeof v === 'string';
-		};
-		/**
-		 * Number type check
-		 */
-		exports.isNum = function(v) {
-			return typeof v === 'number';
-		};
-		/**
-		 * Array type check
-		 */
-		exports.isArr = Array.isArray;
-		/**
-		 * undefined type check
-		 */
-		exports.isUndef = function(v) {
-			return v === undefined;
-		};
-
-		exports.isTrue = function(v) {
-			return v === true;
-		};
-
-		exports.isFalse = function(v) {
-			return v === false;
-		};
-		/**
-		 * Function type check
-		 */
-		exports.isFunc = function(v) {
-			return typeof v === 'function';
-		};
-		/**
-		 * Quick object check - this is primarily used to tell
-		 * Objects from primitive values when we know the value
-		 * is a JSON-compliant type.
-		 */
-		exports.isObj = exports.isObject = function(obj) {
-			return obj !== null && typeof obj === 'object'
-		};
-
-		/**
-		 * Strict object type check. Only returns true
-		 * for plain JavaScript objects.
-		 */
-		var _toString = Object.prototype.toString;
-		exports.isPlainObject = function(obj) {
-			return _toString.call(obj) === '[object Object]'
-		};
-
-		/**
-		 * Check whether the object has the property.
-		 */
-		var hasOwnProperty = Object.prototype.hasOwnProperty;
-		exports.hasOwn = function(obj, key) {
-			return hasOwnProperty.call(obj, key)
-		};
-
-		/**
-		 * Perform no operation.
-		 * Stubbing args to make Flow happy without leaving useless transpiled code
-		 * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/)
-		 */
-		exports.noop = function(a, b, c) {};
-
-		/**
-		 * Check if val is a valid array index.
-		 */
-		exports.isValidArrayIndex = function(val) {
-			var n = parseFloat(String(val));
-			return n >= 0 && Math.floor(n) === n && isFinite(val)
-		};
-	});
-
-	var tools_7 = tools.isFunc;
-	var tools_10 = tools.isPlainObject;
-
-	var EVENT_TYPE = ['ready', 'beforeImageLoad', 'beforeDraw', 'imageLoad'];
-
-	function observer() {
-		var self = this;
-
-		self.on = function(event, fn) {
-			if (EVENT_TYPE.indexOf(event) > -1) {
-				if (tools_7(fn)) {
-					event === 'ready' ?
-						fn(self) :
-						self[("on" + (firstLetterUpper(event)))] = fn;
-				}
-			} else {
-				console.error(("event: " + event + " is invalid"));
-			}
-			return self
-		};
-	}
-
-	function wxPromise(fn) {
-		return function(obj) {
-			var args = [],
-				len = arguments.length - 1;
-			while (len-- > 0) args[len] = arguments[len + 1];
-
-			if (obj === void 0) obj = {};
-			return new Promise(function(resolve, reject) {
-				obj.success = function(res) {
-					resolve(res);
-				};
-				obj.fail = function(err) {
-					reject(err);
-				};
-				fn.apply(void 0, [obj].concat(args));
-			})
-		}
-	}
-
-	function draw(ctx, reserve) {
-		if (reserve === void 0) reserve = false;
-
-		return new Promise(function(resolve) {
-			ctx.draw(reserve, resolve);
-		})
-	}
-
-	var getImageInfo = wxPromise(uni.getImageInfo);
-
-	var canvasToTempFilePath = wxPromise(uni.canvasToTempFilePath);
-
-	var base64 = createCommonjsModule(function(module, exports) {
-		/*! http://mths.be/base64 v0.1.0 by @mathias | MIT license */
-		(function(root) {
-
-			// Detect free variables `exports`.
-			var freeExports = 'object' == 'object' && exports;
-
-			// Detect free variable `module`.
-			var freeModule = 'object' == 'object' && module &&
-				module.exports == freeExports && module;
-
-			// Detect free variable `global`, from Node.js or Browserified code, and use
-			// it as `root`.
-			var freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal;
-			if (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {
-				root = freeGlobal;
-			}
-
-			/*--------------------------------------------------------------------------*/
-
-			var InvalidCharacterError = function(message) {
-				this.message = message;
-			};
-			InvalidCharacterError.prototype = new Error;
-			InvalidCharacterError.prototype.name = 'InvalidCharacterError';
-
-			var error = function(message) {
-				// Note: the error messages used throughout this file match those used by
-				// the native `atob`/`btoa` implementation in Chromium.
-				throw new InvalidCharacterError(message);
-			};
-
-			var TABLE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
-			// http://whatwg.org/html/common-microsyntaxes.html#space-character
-			var REGEX_SPACE_CHARACTERS = /[\t\n\f\r ]/g;
-
-			// `decode` is designed to be fully compatible with `atob` as described in the
-			// HTML Standard. http://whatwg.org/html/webappapis.html#dom-windowbase64-atob
-			// The optimized base64-decoding algorithm used is based on @atk’s excellent
-			// implementation. https://gist.github.com/atk/1020396
-			var decode = function(input) {
-				input = String(input)
-					.replace(REGEX_SPACE_CHARACTERS, '');
-				var length = input.length;
-				if (length % 4 == 0) {
-					input = input.replace(/==?$/, '');
-					length = input.length;
-				}
-				if (
-					length % 4 == 1 ||
-					// http://whatwg.org/C#alphanumeric-ascii-characters
-					/[^+a-zA-Z0-9/]/.test(input)
-				) {
-					error(
-						'Invalid character: the string to be decoded is not correctly encoded.'
-					);
-				}
-				var bitCounter = 0;
-				var bitStorage;
-				var buffer;
-				var output = '';
-				var position = -1;
-				while (++position < length) {
-					buffer = TABLE.indexOf(input.charAt(position));
-					bitStorage = bitCounter % 4 ? bitStorage * 64 + buffer : buffer;
-					// Unless this is the first of a group of 4 characters…
-					if (bitCounter++ % 4) {
-						// …convert the first 8 bits to a single ASCII character.
-						output += String.fromCharCode(
-							0xFF & bitStorage >> (-2 * bitCounter & 6)
-						);
-					}
-				}
-				return output;
-			};
-
-			// `encode` is designed to be fully compatible with `btoa` as described in the
-			// HTML Standard: http://whatwg.org/html/webappapis.html#dom-windowbase64-btoa
-			var encode = function(input) {
-				input = String(input);
-				if (/[^\0-\xFF]/.test(input)) {
-					// Note: no need to special-case astral symbols here, as surrogates are
-					// matched, and the input is supposed to only contain ASCII anyway.
-					error(
-						'The string to be encoded contains characters outside of the ' +
-						'Latin1 range.'
-					);
-				}
-				var padding = input.length % 3;
-				var output = '';
-				var position = -1;
-				var a;
-				var b;
-				var c;
-				var buffer;
-				// Make sure any padding is handled outside of the loop.
-				var length = input.length - padding;
-
-				while (++position < length) {
-					// Read three bytes, i.e. 24 bits.
-					a = input.charCodeAt(position) << 16;
-					b = input.charCodeAt(++position) << 8;
-					c = input.charCodeAt(++position);
-					buffer = a + b + c;
-					// Turn the 24 bits into four chunks of 6 bits each, and append the
-					// matching character for each of them to the output.
-					output += (
-						TABLE.charAt(buffer >> 18 & 0x3F) +
-						TABLE.charAt(buffer >> 12 & 0x3F) +
-						TABLE.charAt(buffer >> 6 & 0x3F) +
-						TABLE.charAt(buffer & 0x3F)
-					);
-				}
-
-				if (padding == 2) {
-					a = input.charCodeAt(position) << 8;
-					b = input.charCodeAt(++position);
-					buffer = a + b;
-					output += (
-						TABLE.charAt(buffer >> 10) +
-						TABLE.charAt((buffer >> 4) & 0x3F) +
-						TABLE.charAt((buffer << 2) & 0x3F) +
-						'='
-					);
-				} else if (padding == 1) {
-					buffer = input.charCodeAt(position);
-					output += (
-						TABLE.charAt(buffer >> 2) +
-						TABLE.charAt((buffer << 4) & 0x3F) +
-						'=='
-					);
-				}
-
-				return output;
-			};
-
-			var base64 = {
-				'encode': encode,
-				'decode': decode,
-				'version': '0.1.0'
-			};
-
-			// Some AMD build optimizers, like r.js, check for specific condition patterns
-			// like the following:
-			if (
-				typeof undefined == 'function' &&
-				typeof undefined.amd == 'object' &&
-				undefined.amd
-			) {
-				undefined(function() {
-					return base64;
-				});
-			} else if (freeExports && !freeExports.nodeType) {
-				if (freeModule) { // in Node.js or RingoJS v0.8.0+
-					freeModule.exports = base64;
-				} else { // in Narwhal or RingoJS v0.7.0-
-					for (var key in base64) {
-						base64.hasOwnProperty(key) && (freeExports[key] = base64[key]);
-					}
-				}
-			} else { // in Rhino or a web browser
-				root.base64 = base64;
-			}
-
-		}(commonjsGlobal));
-	});
-
-	function makeURI(strData, type) {
-		return 'data:' + type + ';base64,' + strData
-	}
-
-	function fixType(type) {
-		type = type.toLowerCase().replace(/jpg/i, 'jpeg');
-		var r = type.match(/png|jpeg|bmp|gif/)[0];
-		return 'image/' + r
-	}
-
-	function encodeData(data) {
-		var str = '';
-		if (typeof data === 'string') {
-			str = data;
-		} else {
-			for (var i = 0; i < data.length; i++) {
-				str += String.fromCharCode(data[i]);
-			}
-		}
-		return base64.encode(str)
-	}
-
-	/**
-	 * 获取图像区域隐含的像素数据
-	 * @param canvasId canvas标识
-	 * @param x 将要被提取的图像数据矩形区域的左上角 x 坐标
-	 * @param y 将要被提取的图像数据矩形区域的左上角 y 坐标
-	 * @param width 将要被提取的图像数据矩形区域的宽度
-	 * @param height 将要被提取的图像数据矩形区域的高度
-	 * @param done 完成回调
-	 */
-	function getImageData(canvasId, x, y, width, height, done) {
-		uni.canvasGetImageData({
-			canvasId: canvasId,
-			x: x,
-			y: y,
-			width: width,
-			height: height,
-			success: function success(res) {
-				done(res, null);
-			},
-			fail: function fail(res) {
-				done(null, res);
-			}
-		});
-	}
-
-	/**
-	 * 生成bmp格式图片
-	 * 按照规则生成图片响应头和响应体
-	 * @param oData 用来描述 canvas 区域隐含的像素数据 { data, width, height } = oData
-	 * @returns {*} base64字符串
-	 */
-	function genBitmapImage(oData) {
-		//
-		// BITMAPFILEHEADER: http://msdn.microsoft.com/en-us/library/windows/desktop/dd183374(v=vs.85).aspx
-		// BITMAPINFOHEADER: http://msdn.microsoft.com/en-us/library/dd183376.aspx
-		//
-		var biWidth = oData.width;
-		var biHeight = oData.height;
-		var biSizeImage = biWidth * biHeight * 3;
-		var bfSize = biSizeImage + 54; // total header size = 54 bytes
-
-		//
-		//  typedef struct tagBITMAPFILEHEADER {
-		//  	WORD bfType;
-		//  	DWORD bfSize;
-		//  	WORD bfReserved1;
-		//  	WORD bfReserved2;
-		//  	DWORD bfOffBits;
-		//  } BITMAPFILEHEADER;
-		//
-		var BITMAPFILEHEADER = [
-			// WORD bfType -- The file type signature; must be "BM"
-			0x42, 0x4D,
-			// DWORD bfSize -- The size, in bytes, of the bitmap file
-			bfSize & 0xff, bfSize >> 8 & 0xff, bfSize >> 16 & 0xff, bfSize >> 24 & 0xff,
-			// WORD bfReserved1 -- Reserved; must be zero
-			0, 0,
-			// WORD bfReserved2 -- Reserved; must be zero
-			0, 0,
-			// DWORD bfOffBits -- The offset, in bytes, from the beginning of the BITMAPFILEHEADER structure to the bitmap bits.
-			54, 0, 0, 0
-		];
-
-		//
-		//  typedef struct tagBITMAPINFOHEADER {
-		//  	DWORD biSize;
-		//  	LONG  biWidth;
-		//  	LONG  biHeight;
-		//  	WORD  biPlanes;
-		//  	WORD  biBitCount;
-		//  	DWORD biCompression;
-		//  	DWORD biSizeImage;
-		//  	LONG  biXPelsPerMeter;
-		//  	LONG  biYPelsPerMeter;
-		//  	DWORD biClrUsed;
-		//  	DWORD biClrImportant;
-		//  } BITMAPINFOHEADER, *PBITMAPINFOHEADER;
-		//
-		var BITMAPINFOHEADER = [
-			// DWORD biSize -- The number of bytes required by the structure
-			40, 0, 0, 0,
-			// LONG biWidth -- The width of the bitmap, in pixels
-			biWidth & 0xff, biWidth >> 8 & 0xff, biWidth >> 16 & 0xff, biWidth >> 24 & 0xff,
-			// LONG biHeight -- The height of the bitmap, in pixels
-			biHeight & 0xff, biHeight >> 8 & 0xff, biHeight >> 16 & 0xff, biHeight >> 24 & 0xff,
-			// WORD biPlanes -- The number of planes for the target device. This value must be set to 1
-			1, 0,
-			// WORD biBitCount -- The number of bits-per-pixel, 24 bits-per-pixel -- the bitmap
-			// has a maximum of 2^24 colors (16777216, Truecolor)
-			24, 0,
-			// DWORD biCompression -- The type of compression, BI_RGB (code 0) -- uncompressed
-			0, 0, 0, 0,
-			// DWORD biSizeImage -- The size, in bytes, of the image. This may be set to zero for BI_RGB bitmaps
-			biSizeImage & 0xff, biSizeImage >> 8 & 0xff, biSizeImage >> 16 & 0xff, biSizeImage >> 24 & 0xff,
-			// LONG biXPelsPerMeter, unused
-			0, 0, 0, 0,
-			// LONG biYPelsPerMeter, unused
-			0, 0, 0, 0,
-			// DWORD biClrUsed, the number of color indexes of palette, unused
-			0, 0, 0, 0,
-			// DWORD biClrImportant, unused
-			0, 0, 0, 0
-		];
-
-		var iPadding = (4 - ((biWidth * 3) % 4)) % 4;
-
-		var aImgData = oData.data;
-
-		var strPixelData = '';
-		var biWidth4 = biWidth << 2;
-		var y = biHeight;
-		var fromCharCode = String.fromCharCode;
-
-		do {
-			var iOffsetY = biWidth4 * (y - 1);
-			var strPixelRow = '';
-			for (var x = 0; x < biWidth; x++) {
-				var iOffsetX = x << 2;
-				strPixelRow += fromCharCode(aImgData[iOffsetY + iOffsetX + 2]) +
-					fromCharCode(aImgData[iOffsetY + iOffsetX + 1]) +
-					fromCharCode(aImgData[iOffsetY + iOffsetX]);
-			}
-
-			for (var c = 0; c < iPadding; c++) {
-				strPixelRow += String.fromCharCode(0);
-			}
-
-			strPixelData += strPixelRow;
-		} while (--y)
-
-		var strEncoded = encodeData(BITMAPFILEHEADER.concat(BITMAPINFOHEADER)) + encodeData(strPixelData);
-
-		return strEncoded
-	}
-
-	/**
-	 * 转换为图片base64
-	 * @param canvasId canvas标识
-	 * @param x 将要被提取的图像数据矩形区域的左上角 x 坐标
-	 * @param y 将要被提取的图像数据矩形区域的左上角 y 坐标
-	 * @param width 将要被提取的图像数据矩形区域的宽度
-	 * @param height 将要被提取的图像数据矩形区域的高度
-	 * @param type 转换图片类型
-	 * @param done 完成回调
-	 */
-	function convertToImage(canvasId, x, y, width, height, type, done) {
-		if (done === void 0) done = function() {};
-
-		if (type === undefined) {
-			type = 'png';
-		}
-		type = fixType(type);
-		if (/bmp/.test(type)) {
-			getImageData(canvasId, x, y, width, height, function(data, err) {
-				var strData = genBitmapImage(data);
-				tools_7(done) && done(makeURI(strData, 'image/' + type), err);
-			});
-		} else {
-			console.error('暂不支持生成\'' + type + '\'类型的base64图片');
-		}
-	}
-
-	var CanvasToBase64 = {
-		convertToImage: convertToImage,
-		// convertToPNG: function (width, height, done) {
-		//   return convertToImage(width, height, 'png', done)
-		// },
-		// convertToJPEG: function (width, height, done) {
-		//   return convertToImage(width, height, 'jpeg', done)
-		// },
-		// convertToGIF: function (width, height, done) {
-		//   return convertToImage(width, height, 'gif', done)
-		// },
-		convertToBMP: function(ref, done) {
-			if (ref === void 0) ref = {};
-			var canvasId = ref.canvasId;
-			var x = ref.x;
-			var y = ref.y;
-			var width = ref.width;
-			var height = ref.height;
-			if (done === void 0) done = function() {};
-
-			return convertToImage(canvasId, x, y, width, height, 'bmp', done)
-		}
-	};
-
-	function methods() {
-		var self = this;
-
-		var boundWidth = self.width; // 裁剪框默认宽度,即整个画布宽度
-		var boundHeight = self.height; // 裁剪框默认高度,即整个画布高度
-
-		var id = self.id;
-		var targetId = self.targetId;
-		var pixelRatio = self.pixelRatio;
-
-		var ref = self.cut;
-		var x = ref.x;
-		if (x === void 0) x = 0;
-		var y = ref.y;
-		if (y === void 0) y = 0;
-		var width = ref.width;
-		if (width === void 0) width = boundWidth;
-		var height = ref.height;
-		if (height === void 0) height = boundHeight;
-
-		self.updateCanvas = function(done) {
-			if (self.croperTarget) {
-				//  画布绘制图片
-				self.ctx.drawImage(
-					self.croperTarget,
-					self.imgLeft,
-					self.imgTop,
-					self.scaleWidth,
-					self.scaleHeight
-				);
-			}
-			tools_7(self.onBeforeDraw) && self.onBeforeDraw(self.ctx, self);
-
-			self.setBoundStyle(self.boundStyle); //	设置边界样式
-
-			self.ctx.draw(false, done);
-			return self
-		};
-
-		self.pushOrigin = self.pushOrign = function(src) {
-			self.src = src;
-
-			tools_7(self.onBeforeImageLoad) && self.onBeforeImageLoad(self.ctx, self);
-
-			return getImageInfo({
-					src: src
-				})
-				.then(function(res) {
-					var innerAspectRadio = res.width / res.height;
-					var customAspectRadio = width / height;
-
-					self.croperTarget = res.path;
-
-					if (innerAspectRadio < customAspectRadio) {
-						self.rectX = x;
-						self.baseWidth = width;
-						self.baseHeight = width / innerAspectRadio;
-						self.rectY = y - Math.abs((height - self.baseHeight) / 2);
-					} else {
-						self.rectY = y;
-						self.baseWidth = height * innerAspectRadio;
-						self.baseHeight = height;
-						self.rectX = x - Math.abs((width - self.baseWidth) / 2);
-					}
-
-					self.imgLeft = self.rectX;
-					self.imgTop = self.rectY;
-					self.scaleWidth = self.baseWidth;
-					self.scaleHeight = self.baseHeight;
-
-					self.update();
-
-					return new Promise(function(resolve) {
-						self.updateCanvas(resolve);
-					})
-				})
-				.then(function() {
-					tools_7(self.onImageLoad) && self.onImageLoad(self.ctx, self);
-				})
-		};
-
-		self.removeImage = function() {
-			self.src = '';
-			self.croperTarget = '';
-			return draw(self.ctx)
-		};
-
-		self.getCropperBase64 = function(done) {
-			if (done === void 0) done = function() {};
-
-			CanvasToBase64.convertToBMP({
-				canvasId: id,
-				x: x,
-				y: y,
-				width: width,
-				height: height
-			}, done);
-		};
-
-		self.getCropperImage = function(opt, fn) {
-			var customOptions = opt;
-
-			var canvasOptions = {
-				canvasId: id,
-				x: x,
-				y: y,
-				width: width,
-				height: height
-			};
-
-			var task = function() {
-				return Promise.resolve();
-			};
-
-			if (
-				tools_10(customOptions) &&
-				customOptions.original
-			) {
-				// original mode
-				task = function() {
-					self.targetCtx.drawImage(
-						self.croperTarget,
-						self.imgLeft * pixelRatio,
-						self.imgTop * pixelRatio,
-						self.scaleWidth * pixelRatio,
-						self.scaleHeight * pixelRatio
-					);
-
-					canvasOptions = {
-						canvasId: targetId,
-						x: x * pixelRatio,
-						y: y * pixelRatio,
-						width: width * pixelRatio,
-						height: height * pixelRatio
-					};
-
-					return draw(self.targetCtx)
-				};
-			}
-
-			return task()
-				.then(function() {
-					if (tools_10(customOptions)) {
-						canvasOptions = Object.assign({}, canvasOptions, customOptions);
-					}
-
-					if (tools_7(customOptions)) {
-						fn = customOptions;
-					}
-
-					var arg = canvasOptions.componentContext ?
-						[canvasOptions, canvasOptions.componentContext] :
-						[canvasOptions];
-
-					return canvasToTempFilePath.apply(null, arg)
-				})
-				.then(function(res) {
-					var tempFilePath = res.tempFilePath;
-
-					return tools_7(fn) ?
-						fn.call(self, tempFilePath, null) :
-						tempFilePath
-				})
-				.catch(function(err) {
-					if (tools_7(fn)) {
-						fn.call(self, null, err);
-					} else {
-						throw err
-					}
-				})
-		};
-	}
-
-	/**
-	 * 获取最新缩放值
-	 * @param oldScale 上一次触摸结束后的缩放值
-	 * @param oldDistance 上一次触摸结束后的双指距离
-	 * @param zoom 缩放系数
-	 * @param touch0 第一指touch对象
-	 * @param touch1 第二指touch对象
-	 * @returns {*}
-	 */
-	var getNewScale = function(oldScale, oldDistance, zoom, touch0, touch1) {
-		var xMove, yMove, newDistance;
-		// 计算二指最新距离
-		xMove = Math.round(touch1.x - touch0.x);
-		yMove = Math.round(touch1.y - touch0.y);
-		newDistance = Math.round(Math.sqrt(xMove * xMove + yMove * yMove));
-
-		return oldScale + 0.001 * zoom * (newDistance - oldDistance)
-	};
-
-	function update() {
-		var self = this;
-
-		if (!self.src) {
-			return
-		}
-
-		self.__oneTouchStart = function(touch) {
-			self.touchX0 = Math.round(touch.x);
-			self.touchY0 = Math.round(touch.y);
-		};
-
-		self.__oneTouchMove = function(touch) {
-			var xMove, yMove;
-			// 计算单指移动的距离
-			if (self.touchended) {
-				return self.updateCanvas()
-			}
-			xMove = Math.round(touch.x - self.touchX0);
-			yMove = Math.round(touch.y - self.touchY0);
-
-			var imgLeft = Math.round(self.rectX + xMove);
-			var imgTop = Math.round(self.rectY + yMove);
-
-			self.outsideBound(imgLeft, imgTop);
-
-			self.updateCanvas();
-		};
-
-		self.__twoTouchStart = function(touch0, touch1) {
-			var xMove, yMove, oldDistance;
-
-			self.touchX1 = Math.round(self.rectX + self.scaleWidth / 2);
-			self.touchY1 = Math.round(self.rectY + self.scaleHeight / 2);
-
-			// 计算两指距离
-			xMove = Math.round(touch1.x - touch0.x);
-			yMove = Math.round(touch1.y - touch0.y);
-			oldDistance = Math.round(Math.sqrt(xMove * xMove + yMove * yMove));
-
-			self.oldDistance = oldDistance;
-		};
-
-		self.__twoTouchMove = function(touch0, touch1) {
-			var oldScale = self.oldScale;
-			var oldDistance = self.oldDistance;
-			var scale = self.scale;
-			var zoom = self.zoom;
-
-			self.newScale = getNewScale(oldScale, oldDistance, zoom, touch0, touch1);
-
-			//  设定缩放范围
-			self.newScale <= 1 && (self.newScale = 1);
-			self.newScale >= scale && (self.newScale = scale);
-
-			self.scaleWidth = Math.round(self.newScale * self.baseWidth);
-			self.scaleHeight = Math.round(self.newScale * self.baseHeight);
-			var imgLeft = Math.round(self.touchX1 - self.scaleWidth / 2);
-			var imgTop = Math.round(self.touchY1 - self.scaleHeight / 2);
-
-			self.outsideBound(imgLeft, imgTop);
-
-			self.updateCanvas();
-		};
-
-		self.__xtouchEnd = function() {
-			self.oldScale = self.newScale;
-			self.rectX = self.imgLeft;
-			self.rectY = self.imgTop;
-		};
-	}
-
-	var handle = {
-		//  图片手势初始监测
-		touchStart: function touchStart(e) {
-			var self = this;
-			var ref = e.touches;
-			var touch0 = ref[0];
-			var touch1 = ref[1];
-
-			if (!self.src) {
-				return
-			}
-
-			setTouchState(self, true, null, null);
-
-			// 计算第一个触摸点的位置,并参照改点进行缩放
-			self.__oneTouchStart(touch0);
-
-			// 两指手势触发
-			if (e.touches.length >= 2) {
-				self.__twoTouchStart(touch0, touch1);
-			}
-		},
-
-		//  图片手势动态缩放
-		touchMove: function touchMove(e) {
-			var self = this;
-			var ref = e.touches;
-			var touch0 = ref[0];
-			var touch1 = ref[1];
-
-			if (!self.src) {
-				return
-			}
-
-			setTouchState(self, null, true);
-
-			// 单指手势时触发
-			if (e.touches.length === 1) {
-				self.__oneTouchMove(touch0);
-			}
-			// 两指手势触发
-			if (e.touches.length >= 2) {
-				self.__twoTouchMove(touch0, touch1);
-			}
-		},
-
-		touchEnd: function touchEnd(e) {
-			var self = this;
-
-			if (!self.src) {
-				return
-			}
-
-			setTouchState(self, false, false, true);
-			self.__xtouchEnd();
-		}
-	};
-
-	function cut() {
-		var self = this;
-		var boundWidth = self.width; // 裁剪框默认宽度,即整个画布宽度
-		var boundHeight = self.height;
-		// 裁剪框默认高度,即整个画布高度
-		var ref = self.cut;
-		var x = ref.x;
-		if (x === void 0) x = 0;
-		var y = ref.y;
-		if (y === void 0) y = 0;
-		var width = ref.width;
-		if (width === void 0) width = boundWidth;
-		var height = ref.height;
-		if (height === void 0) height = boundHeight;
-
-		/**
-		 * 设置边界
-		 * @param imgLeft 图片左上角横坐标值
-		 * @param imgTop 图片左上角纵坐标值
-		 */
-		self.outsideBound = function(imgLeft, imgTop) {
-			self.imgLeft = imgLeft >= x ?
-				x :
-				self.scaleWidth + imgLeft - x <= width ?
-				x + width - self.scaleWidth :
-				imgLeft;
-
-			self.imgTop = imgTop >= y ?
-				y :
-				self.scaleHeight + imgTop - y <= height ?
-				y + height - self.scaleHeight :
-				imgTop;
-		};
-
-		/**
-		 * 设置边界样式
-		 * @param color	边界颜色
-		 */
-		self.setBoundStyle = function(ref) {
-			if (ref === void 0) ref = {};
-			var color = ref.color;
-			if (color === void 0) color = '#04b00f';
-			var mask = ref.mask;
-			if (mask === void 0) mask = 'rgba(0, 0, 0, 0.3)';
-			var lineWidth = ref.lineWidth;
-			if (lineWidth === void 0) lineWidth = 1;
-
-			var half = lineWidth / 2;
-			var boundOption = [{
-					start: {
-						x: x - half,
-						y: y + 10 - half
-					},
-					step1: {
-						x: x - half,
-						y: y - half
-					},
-					step2: {
-						x: x + 10 - half,
-						y: y - half
-					}
-				},
-				{
-					start: {
-						x: x - half,
-						y: y + height - 10 + half
-					},
-					step1: {
-						x: x - half,
-						y: y + height + half
-					},
-					step2: {
-						x: x + 10 - half,
-						y: y + height + half
-					}
-				},
-				{
-					start: {
-						x: x + width - 10 + half,
-						y: y - half
-					},
-					step1: {
-						x: x + width + half,
-						y: y - half
-					},
-					step2: {
-						x: x + width + half,
-						y: y + 10 - half
-					}
-				},
-				{
-					start: {
-						x: x + width + half,
-						y: y + height - 10 + half
-					},
-					step1: {
-						x: x + width + half,
-						y: y + height + half
-					},
-					step2: {
-						x: x + width - 10 + half,
-						y: y + height + half
-					}
-				}
-			];
-
-			// 绘制半透明层
-			self.ctx.beginPath();
-			self.ctx.setFillStyle(mask);
-			self.ctx.fillRect(0, 0, x, boundHeight);
-			self.ctx.fillRect(x, 0, width, y);
-			self.ctx.fillRect(x, y + height, width, boundHeight - y - height);
-			self.ctx.fillRect(x + width, 0, boundWidth - x - width, boundHeight);
-			self.ctx.fill();
-
-			boundOption.forEach(function(op) {
-				self.ctx.beginPath();
-				self.ctx.setStrokeStyle(color);
-				self.ctx.setLineWidth(lineWidth);
-				self.ctx.moveTo(op.start.x, op.start.y);
-				self.ctx.lineTo(op.step1.x, op.step1.y);
-				self.ctx.lineTo(op.step2.x, op.step2.y);
-				self.ctx.stroke();
-			});
-		};
-	}
-
-	var version = "1.3.9";
-
-	var WeCropper = function WeCropper(params) {
-		var self = this;
-		var _default = {};
-
-		validator(self, DEFAULT);
-
-		Object.keys(DEFAULT).forEach(function(key) {
-			_default[key] = DEFAULT[key].default;
-		});
-		Object.assign(self, _default, params);
-
-		self.prepare();
-		self.attachPage();
-		self.createCtx();
-		self.observer();
-		self.cutt();
-		self.methods();
-		self.init();
-		self.update();
-
-		return self
-	};
-
-	WeCropper.prototype.init = function init() {
-		var self = this;
-		var src = self.src;
-
-		self.version = version;
-
-		typeof self.onReady === 'function' && self.onReady(self.ctx, self);
-
-		if (src) {
-			self.pushOrign(src);
-		} else {
-			self.updateCanvas();
-		}
-		setTouchState(self, false, false, false);
-
-		self.oldScale = 1;
-		self.newScale = 1;
-
-		return self
-	};
-
-	Object.assign(WeCropper.prototype, handle);
-
-	WeCropper.prototype.prepare = prepare;
-	WeCropper.prototype.observer = observer;
-	WeCropper.prototype.methods = methods;
-	WeCropper.prototype.cutt = cut;
-	WeCropper.prototype.update = update;
-
-	return WeCropper;
-
-})));
diff --git a/uview-ui/components/u-avatar/u-avatar.vue b/uview-ui/components/u-avatar/u-avatar.vue
deleted file mode 100644
index 289b9b0..0000000
--- a/uview-ui/components/u-avatar/u-avatar.vue
+++ /dev/null
@@ -1,244 +0,0 @@
-<template>
-	<view class="u-avatar" :style="[wrapStyle]" @tap="click">
-		<image
-			@error="loadError"
-			:style="[imgStyle]"
-			class="u-avatar__img"
-			v-if="!uText && avatar"
-			:src="avatar" 
-			:mode="imgMode"
-		></image>
-		<text class="u-line-1" v-else-if="uText" :style="{
-			fontSize: '38rpx'
-		}">{{uText}}</text>
-		<slot v-else></slot>
-		<view class="u-avatar__sex" v-if="showSex" :class="['u-avatar__sex--' + sexIcon]" :style="[uSexStyle]">
-			<u-icon :name="sexIcon" size="20"></u-icon>
-		</view>
-		<view class="u-avatar__level" v-if="showLevel" :style="[uLevelStyle]">
-			<u-icon :name="levelIcon" size="20"></u-icon>
-		</view>
-	</view>
-</template>
-
-<script>
-	let base64Avatar = "data:image/jpg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAAA8AAD/4QMraHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjMtYzAxMSA2Ni4xNDU2NjEsIDIwMTIvMDIvMDYtMTQ6NTY6MjcgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjREMEQwRkY0RjgwNDExRUE5OTY2RDgxODY3NkJFODMxIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjREMEQwRkY1RjgwNDExRUE5OTY2RDgxODY3NkJFODMxIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NEQwRDBGRjJGODA0MTFFQTk5NjZEODE4Njc2QkU4MzEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NEQwRDBGRjNGODA0MTFFQTk5NjZEODE4Njc2QkU4MzEiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7/7gAOQWRvYmUAZMAAAAAB/9sAhAAGBAQEBQQGBQUGCQYFBgkLCAYGCAsMCgoLCgoMEAwMDAwMDBAMDg8QDw4MExMUFBMTHBsbGxwfHx8fHx8fHx8fAQcHBw0MDRgQEBgaFREVGh8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx//wAARCADIAMgDAREAAhEBAxEB/8QAcQABAQEAAwEBAAAAAAAAAAAAAAUEAQMGAgcBAQAAAAAAAAAAAAAAAAAAAAAQAAIBAwICBgkDBQAAAAAAAAABAhEDBCEFMVFBYXGREiKBscHRMkJSEyOh4XLxYjNDFBEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEQMRAD8A/fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHbHFyZ/Dam+yLA+Z2L0Pjtyj2poD4AAAAAAAAAAAAAAAAAAAAAAAAKWFs9y6lcvvwQeqj8z9wFaziY1n/HbUX9XF97A7QAGXI23EvJ1goyfzR0YEfN269jeZ+a03pNe0DIAAAAAAAAAAAAAAAAAAAACvtO3RcVkXlWutuL9YFYAAAAAOJRjKLjJVi9GmB5/csH/mu1h/in8PU+QGMAAAAAAAAAAAAAAAAAAaMDG/6MmMH8C80+xAelSSVFolwQAAAAAAAHVlWI37ErUulaPk+hgeYnCUJuElSUXRrrQHAAAAAAAAAAAAAAAAABa2Oz4bM7r4zdF2ICmAAAAAAAAAg7zZ8GX41wuJP0rRgYAAAAAAAAAAAAAAAAAD0m2R8ODaXU33tsDSAAAAAAAAAlb9HyWZcnJd9PcBHAAAAAAAAAAAAAAAAAPS7e64Vn+KA0AAAAAAAAAJm+v8Ftf3ewCKAAAAAAAAAAAAAAAAAX9muqeGo9NttP06+0DcAAAAAAAAAjb7dTu2ra+VOT9P8AQCWAAAAAAAAAAAAAAAAAUNmyPt5Ltv4bui/kuAF0AAAAAAADiUlGLlJ0SVW+oDzOXfd/Ind6JPRdS0QHSAAAAAAAAAAAAAAAAAE2nVaNcGB6Lbs6OTao9LsF51z60BrAAAAAABJ3jOVHjW3r/sa9QEgAAAAAAAAAAAAAAAAAAAPu1duWriuW34ZR4MC9hbnZyEoy8l36XwfYBsAAADaSq9EuLAlZ+7xSdrGdW9Hc5dgEdtt1erfFgAAAAAAAAAAAAAAAAADVjbblX6NR8MH80tEBRs7HYivyzlN8lovaBPzduvY0m6eK10TXtAyAarO55lpJK54orolr+4GqO/Xaea1FvqbXvA+Z77kNeW3GPbV+4DJfzcm/pcm3H6Vou5AdAFLC2ed2Pjv1txa8sV8T6wOL+yZEKu1JXFy4MDBOE4ScZxcZLinoB8gAAAAAAAAAAAB242LeyJ+C3GvN9C7QLmJtePYpKS+5c+p8F2IDYAANJqj1T4oCfk7Nj3G5Wn9qXJax7gJ93Z82D8sVNc4v30A6Xg5i42Z+iLfqARwcyT0sz9MWvWBps7LlTf5Grce9/oBTxdtxseklHxT+uWr9AGoAB138ezfj4bsFJdD6V2MCPm7RdtJzs1uW1xXzL3gTgAAAAAAAAADRhYc8q74I6RWs5ckB6GxYtWLat21SK731sDsAAAAAAAAAAAAAAAASt021NO/YjrxuQXT1oCOAAAAAAABzGLlJRSq26JAelwsWONYjbXxcZvmwO8AAAAAAAAAAAAAAAAAAef3TEWPkVivx3NY9T6UBiAAAAAABo2+VmGXblddIJ8eivRUD0oAAAAAAAAAAAAAAAAAAAYt4tKeFKVNYNSXfRgefAAAAAAAAr7VuSSWPedKaW5v1MCsAAAAAAAAAAAAAAAAAAIe6bj96Ts2n+JPzSXzP3ATgAAAAAAAAFbbt1UUrOQ9FpC4/UwK6aaqtU+DAAAAAAAAAAAAAAA4lKMIuUmoxWrb4ARNx3R3q2rLpa4Sl0y/YCcAAAAAAAAAAANmFud7G8r89r6X0dgFvGzLGRGtuWvTF6NAdwAAAAAAAAAAAy5W442PVN+K59EePp5ARMvOv5MvO6QXCC4AZwAAAAAAAAAAAAAcxlKLUotprg1owN+PvORborq+7Hnwl3gUbO74VzRydt8pKn68ANcJwmqwkpLmnUDkAAAAfNy9atqtyagut0AxXt5xIV8Fbj6lRd7Am5G65V6qUvtwfyx94GMAAAAAAAAAAAAAAAAAAAOU2nVOj5gdsc3LiqRvTpyqwOxbnnrhdfpSfrQB7pnv/AGvuS9gHXPMy5/Fem1yq0v0A6W29XqwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf//Z";
-	/**
-	 * avatar 头像
-	 * @description 本组件一般用于展示头像的地方,如个人中心,或者评论列表页的用户头像展示等场所。
-	 * @tutorial https://www.uviewui.com/components/avatar.html
-	 * @property {String} bg-color 背景颜色,一般显示文字时用(默认#ffffff)
-	 * @property {String} src 头像路径,如加载失败,将会显示默认头像
-	 * @property {String Number} size 头像尺寸,可以为指定字符串(large, default, mini),或者数值,单位rpx(默认default)
-	 * @property {String} mode 显示类型,见上方说明(默认circle)
-	 * @property {String} sex-icon 性别图标,man-男,woman-女(默认man)
-	 * @property {String} level-icon 等级图标(默认level)
-	 * @property {String} sex-bg-color 性别图标背景颜色
-	 * @property {String} level-bg-color 等级图标背景颜色
-	 * @property {String} show-sex 是否显示性别图标(默认false)
-	 * @property {String} show-level 是否显示等级图标(默认false)
-	 * @property {String} img-mode 头像图片的裁剪类型,与uni的image组件的mode参数一致,如效果达不到需求,可尝试传widthFix值(默认aspectFill)
-	 * @property {String} index 用户传递的标识符值,如果是列表循环,可穿v-for的index值
-	 * @event {Function} click 头像被点击
-	 * @example <u-avatar :src="src"></u-avatar>
-	 */
-	export default {
-		name: 'u-avatar',
-		props: {
-			// 背景颜色
-			bgColor: {
-				type: String,
-				default: 'transparent'
-			},
-			// 头像路径
-			src: {
-				type: String,
-				default: ''
-			},
-			// 尺寸,large-大,default-中等,mini-小,如果为数值,则单位为rpx
-			// 宽度等于高度
-			size: {
-				type: [String, Number],
-				default: 'default'
-			},
-			// 头像模型,square-带圆角方形,circle-圆形
-			mode: {
-				type: String,
-				default: 'circle'
-			},
-			// 文字内容
-			text: {
-				type: String,
-				default: ''
-			},
-			// 图片的裁剪模型
-			imgMode: {
-				type: String,
-				default: 'aspectFill'
-			},
-			// 标识符
-			index: {
-				type: [String, Number],
-				default: ''
-			},
-			// 右上角性别角标,man-男,woman-女
-			sexIcon: {
-				type: String,
-				default: 'man'
-			},
-			// 右下角的等级图标
-			levelIcon: {
-				type: String,
-				default: 'level'
-			},
-			// 右下角等级图标背景颜色
-			levelBgColor: {
-				type: String,
-				default: ''
-			},
-			// 右上角性别图标的背景颜色
-			sexBgColor: {
-				type: String,
-				default: ''
-			},
-			// 是否显示性别图标
-			showSex: {
-				type: Boolean,
-				default: false
-			},
-			// 是否显示等级图标
-			showLevel: {
-				type: Boolean,
-				default: false
-			}
-		},
-		data() {
-			return {
-				error: false,
-				// 头像的地址,因为如果加载错误,需要赋值为默认图片,props值无法修改,所以需要一个中间值
-                avatar: this.src ? this.src : base64Avatar, 
-			}
-		},
-        watch: {
-            src(n) {
-                // 用户可能会在头像加载失败时,再次修改头像值,所以需要重新赋值
-                if(!n) {
-					// 如果传入null或者'',或者undefined,显示默认头像
-					this.avatar = base64Avatar;
-					this.error = true;
-				} else {
-					this.avatar = n;
-					this.error = false;
-				}
-            }
-        },
-		computed: {
-			wrapStyle() {
-				let style = {};  
-				style.height = this.size == 'large' ? '120rpx' : this.size == 'default' ?
-				'90rpx' : this.size == 'mini' ? '70rpx' : this.size + 'rpx';
-				style.width = style.height;
-				style.flex = `0 0 ${style.height}`;
-				style.backgroundColor = this.bgColor;
-				style.borderRadius = this.mode == 'circle' ? '500px' : '5px';
-				if(this.text) style.padding = `0 6rpx`;
-				return style;
-			},
-			imgStyle() {
-				let style = {};
-				style.borderRadius = this.mode == 'circle' ? '500px' : '5px';
-				return style;
-			},
-			// 取字符串的第一个字符
-			uText() {
-				return String(this.text)[0];
-			},
-			// 性别图标的自定义样式
-			uSexStyle() {
-				let style = {};
-				if(this.sexBgColor) style.backgroundColor = this.sexBgColor;
-				return style;
-			},
-			// 等级图标的自定义样式
-			uLevelStyle() {
-				let style = {};
-				if(this.levelBgColor) style.backgroundColor = this.levelBgColor;
-				return style;
-			}
-		},
-		methods: {
-			// 图片加载错误时,显示默认头像
-			loadError() {
-				this.error = true;
-                this.avatar = base64Avatar;
-			},
-			click() {
-				this.$emit('click', this.index);
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	@import "../../libs/css/style.components.scss";
-
-	.u-avatar {
-		/* #ifndef APP-NVUE */
-		display: inline-flex;		
-		/* #endif */
-		align-items: center;
-		justify-content: center;
-		font-size: 28rpx;
-		color: $u-content-color;
-		border-radius: 10px;
-		position: relative;
-		
-		&__img {
-			width: 100%;
-			height: 100%;
-		}
-		
-		&__sex {
-			position: absolute;
-			width: 32rpx;
-			color: #ffffff;
-			height: 32rpx;
-			@include vue-flex;
-			justify-content: center;
-			align-items: center;
-			border-radius: 100rpx;
-			top: 5%;
-			z-index: 1;
-			right: -7%;
-			border: 1px #ffffff solid;
-			
-			&--man {
-				background-color: $u-type-primary;
-			}
-			
-			&--woman {
-				background-color: $u-type-error;
-			}
-			
-			&--none {
-				background-color: $u-type-warning;
-			}
-		}
-		
-		&__level {
-			position: absolute;
-			width: 32rpx;
-			color: #ffffff;
-			height: 32rpx;
-			@include vue-flex;
-			justify-content: center;
-			align-items: center;
-			border-radius: 100rpx;
-			bottom: 5%; 
-			z-index: 1;
-			right: -7%;
-			border: 1px #ffffff solid;
-			background-color: $u-type-warning;
-		}
-	}
-</style>
diff --git a/uview-ui/components/u-back-top/u-back-top.vue b/uview-ui/components/u-back-top/u-back-top.vue
deleted file mode 100644
index 7970fc7..0000000
--- a/uview-ui/components/u-back-top/u-back-top.vue
+++ /dev/null
@@ -1,153 +0,0 @@
-<template>
-	<view @tap="backToTop" class="u-back-top" :class="['u-back-top--mode--' + mode]" :style="[{
-		bottom: bottom + 'rpx',
-		right: right + 'rpx',
-		borderRadius: mode == 'circle' ? '10000rpx' : '8rpx',
-		zIndex: uZIndex,
-		opacity: opacity
-	}, customStyle]">
-		<view class="u-back-top__content" v-if="!$slots.default && !$slots.$default">
-			<u-icon @click="backToTop" :name="icon" :custom-style="iconStyle"></u-icon>
-			<view class="u-back-top__content__tips">
-				{{tips}}
-			</view>
-		</view>
-		<slot v-else />
-	</view>
-</template>
-
-<script>
-	export default {
-		name: 'u-back-top',
-		props: {
-			// 返回顶部的形状,circle-圆形,square-方形
-			mode: {
-				type: String,
-				default: 'circle'
-			},
-			// 自定义图标
-			icon: {
-				type: String,
-				default: 'arrow-upward'
-			},
-			// 提示文字
-			tips: {
-				type: String,
-				default: ''
-			},
-			// 返回顶部滚动时间
-			duration: {
-				type: [Number, String],
-				default: 100
-			},
-			// 滚动距离
-			scrollTop: {
-				type: [Number, String],
-				default: 0
-			},
-			// 距离顶部多少距离显示,单位rpx
-			top: {
-				type: [Number, String],
-				default: 400
-			},
-			// 返回顶部按钮到底部的距离,单位rpx
-			bottom: {
-				type: [Number, String],
-				default: 200
-			},
-			// 返回顶部按钮到右边的距离,单位rpx
-			right: {
-				type: [Number, String],
-				default: 40
-			},
-			// 层级
-			zIndex: {
-				type: [Number, String],
-				default: '9'
-			},
-			// 图标的样式,对象形式
-			iconStyle: {
-				type: Object,
-				default() {
-					return {
-						color: '#909399',
-						fontSize: '38rpx'
-					}
-				}
-			},
-			// 整个组件的样式
-			customStyle: {
-				type: Object,
-				default() {
-					return {}
-				}
-			}
-		},
-		watch: {
-			showBackTop(nVal, oVal) {
-				// 当组件的显示与隐藏状态发生跳变时,修改组件的层级和不透明度
-				// 让组件有显示和消失的动画效果,如果用v-if控制组件状态,将无设置动画效果
-				if(nVal) {
-					this.uZIndex = this.zIndex;
-					this.opacity = 1;
-				} else {
-					this.uZIndex = -1;
-					this.opacity = 0;
-				}
-			}
-		},
-		computed: {
-			showBackTop() {
-				// 由于scrollTop为页面的滚动距离,默认为px单位,这里将用于传入的top(rpx)值
-				// 转为px用于比较,如果滚动条到顶的距离大于设定的距离,就显示返回顶部的按钮
-				return this.scrollTop > uni.upx2px(this.top);
-			},
-		},
-		data() {
-			return {
-				// 不透明度,为了让组件有一个显示和隐藏的过渡动画
-				opacity: 0,
-				// 组件的z-index值,隐藏时设置为-1,就会看不到
-				uZIndex: -1
-			}
-		},
-		methods: {
-			backToTop() {
-				uni.pageScrollTo({
-					scrollTop: 0,
-					duration: this.duration
-				});
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	@import "../../libs/css/style.components.scss";
-	
-	.u-back-top {
-		width: 80rpx;
-		height: 80rpx;
-		position: fixed;
-		z-index: 9;
-		@include vue-flex;
-		flex-direction: column;
-		justify-content: center;
-		background-color: #E1E1E1;
-		color: $u-content-color;
-		align-items: center;
-		transition: opacity 0.4s;
-		
-		&__content {
-			@include vue-flex;
-			flex-direction: column;
-			align-items: center;
-			
-			&__tips {
-				font-size: 24rpx;
-				transform: scale(0.8);
-				line-height: 1;
-			}
-		}
-	}
-</style>
diff --git a/uview-ui/components/u-badge/u-badge.vue b/uview-ui/components/u-badge/u-badge.vue
deleted file mode 100644
index e85b133..0000000
--- a/uview-ui/components/u-badge/u-badge.vue
+++ /dev/null
@@ -1,216 +0,0 @@
-<template>
-	<view v-if="show" class="u-badge" :class="[
-			isDot ? 'u-badge-dot' : '', 
-			size == 'mini' ? 'u-badge-mini' : '',
-			type ? 'u-badge--bg--' + type : ''
-		]" :style="[{
-			top: offset[0] + 'rpx',
-			right: offset[1] + 'rpx',
-			fontSize: fontSize + 'rpx',
-			position: absolute ? 'absolute' : 'static',
-			color: color,
-			backgroundColor: bgColor
-		}, boxStyle]"
-	>
-		{{showText}}
-	</view>
-</template>
-
-<script>
-	/**
-	 * badge 角标
-	 * @description 本组件一般用于展示头像的地方,如个人中心,或者评论列表页的用户头像展示等场所。
-	 * @tutorial https://www.uviewui.com/components/badge.html
-	 * @property {String Number} count 展示的数字,大于 overflowCount 时显示为 ${overflowCount}+,为0且show-zero为false时隐藏
-	 * @property {Boolean} is-dot 不展示数字,只有一个小点(默认false)
-	 * @property {Boolean} absolute 组件是否绝对定位,为true时,offset参数才有效(默认true)
-	 * @property {String Number} overflow-count 展示封顶的数字值(默认99)
-	 * @property {String} type 使用预设的背景颜色(默认error)
-	 * @property {Boolean} show-zero 当数值为 0 时,是否展示 Badge(默认false)
-	 * @property {String} size Badge的尺寸,设为mini会得到小一号的Badge(默认default)
-	 * @property {Array} offset 设置badge的位置偏移,格式为 [x, y],也即设置的为top和right的值,单位rpx。absolute为true时有效(默认[20, 20])
-	 * @property {String} color 字体颜色(默认#ffffff)
-	 * @property {String} bgColor 背景颜色,优先级比type高,如设置,type参数会失效
-	 * @property {Boolean} is-center 组件中心点是否和父组件右上角重合,优先级比offset高,如设置,offset参数会失效(默认false)
-	 * @example <u-badge type="error" count="7"></u-badge>
-	 */
-	export default {
-		name: 'u-badge',
-		props: {
-			// primary,warning,success,error,info
-			type: {
-				type: String,
-				default: 'error'
-			},
-			// default, mini
-			size: {
-				type: String,
-				default: 'default'
-			},
-			//是否是圆点
-			isDot: {
-				type: Boolean,
-				default: false
-			},
-			// 显示的数值内容
-			count: {
-				type: [Number, String],
-			},
-			// 展示封顶的数字值
-			overflowCount: {
-				type: Number,
-				default: 99
-			},
-			// 当数值为 0 时,是否展示 Badge
-			showZero: {
-				type: Boolean,
-				default: false
-			},
-			// 位置偏移
-			offset: {
-				type: Array,
-				default: () => {
-					return [20, 20]
-				}
-			},
-			// 是否开启绝对定位,开启了offset才会起作用
-			absolute: {
-				type: Boolean,
-				default: true
-			},
-			// 字体大小
-			fontSize: {
-				type: [String, Number],
-				default: '24'
-			},
-			// 字体演示
-			color: {
-				type: String,
-				default: '#ffffff'
-			},
-			// badge的背景颜色
-			bgColor: {
-				type: String,
-				default: ''
-			},
-			// 是否让badge组件的中心点和父组件右上角重合,配置的话,offset将会失效
-			isCenter: {
-				type: Boolean,
-				default: false
-			}
-		},
-		computed: {
-			// 是否将badge中心与父组件右上角重合
-			boxStyle() {
-				let style = {};
-				if(this.isCenter) {
-					style.top = 0;
-					style.right = 0;
-					// Y轴-50%,意味着badge向上移动了badge自身高度一半,X轴50%,意味着向右移动了自身宽度一半
-					style.transform = "translateY(-50%) translateX(50%)";
-				} else {
-					style.top = this.offset[0] + 'rpx';
-					style.right = this.offset[1] + 'rpx';
-					style.transform = "translateY(0) translateX(0)";
-				}
-				// 如果尺寸为mini,后接上scal()
-				if(this.size == 'mini') {
-					style.transform = style.transform + " scale(0.8)";
-				}
-				return style;
-			},
-			// isDot类型时,不显示文字
-			showText() {
-				if(this.isDot) return '';
-				else {
-					if(this.count > this.overflowCount) return `${this.overflowCount}+`;
-					else return this.count;
-				}
-			},
-			// 是否显示组件
-			show() {
-				// 如果count的值为0,并且showZero设置为false,不显示组件
-				if(this.count == 0 && this.showZero == false) return false;
-				else return true;
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	@import "../../libs/css/style.components.scss";
-	
-	.u-badge {
-		/* #ifndef APP-NVUE */
-		display: inline-flex;
-		/* #endif */
-		justify-content: center;
-		align-items: center;
-		line-height: 24rpx;
-		padding: 4rpx 8rpx;
-		border-radius: 100rpx;
-		z-index: 9;
-		
-		&--bg--primary {
-			background-color: $u-type-primary;
-		}
-		
-		&--bg--error {
-			background-color: $u-type-error;
-		}
-		
-		&--bg--success {
-			background-color: $u-type-success;
-		}
-		
-		&--bg--info {
-			background-color: $u-type-info;
-		}
-		
-		&--bg--warning {
-			background-color: $u-type-warning;
-		}
-	}
-	
-	.u-badge-dot {
-		height: 16rpx;
-		width: 16rpx;
-		border-radius: 100rpx;
-		line-height: 1;
-	}
-	
-	.u-badge-mini {
-		transform: scale(0.8);
-		transform-origin: center center;
-	}
-	
-	// .u-primary {
-	// 	background: $u-type-primary;
-	// 	color: #fff;
-	// }
-	
-	// .u-error {
-	// 	background: $u-type-error;
-	// 	color: #fff;
-	// }
-	
-	// .u-warning {
-	// 	background: $u-type-warning;
-	// 	color: #fff;
-	// }
-	
-	// .u-success {
-	// 	background: $u-type-success;
-	// 	color: #fff;
-	// }
-	
-	// .u-black {
-	// 	background: #585858;
-	// 	color: #fff;
-	// }
-	
-	.u-info {
-		background-color: $u-type-info;
-		color: #fff;
-	}
-</style>
\ No newline at end of file
diff --git a/uview-ui/components/u-button/u-button.vue b/uview-ui/components/u-button/u-button.vue
deleted file mode 100644
index 82c3a6f..0000000
--- a/uview-ui/components/u-button/u-button.vue
+++ /dev/null
@@ -1,596 +0,0 @@
-<template>
-	<button
-		id="u-wave-btn"
-		class="u-btn u-line-1 u-fix-ios-appearance"
-		:class="[
-			'u-size-' + size,
-			plain ? 'u-btn--' + type + '--plain' : '',
-			loading ? 'u-loading' : '',
-			shape == 'circle' ? 'u-round-circle' : '',
-			hairLine ? showHairLineBorder : 'u-btn--bold-border',
-			'u-btn--' + type,
-			disabled ? `u-btn--${type}--disabled` : '',
-		]"
-		:hover-start-time="Number(hoverStartTime)"
-		:hover-stay-time="Number(hoverStayTime)"
-		:disabled="disabled"
-		:form-type="formType"
-		:open-type="openType"
-		:app-parameter="appParameter"
-		:hover-stop-propagation="hoverStopPropagation"
-		:send-message-title="sendMessageTitle"
-		send-message-path="sendMessagePath"
-		:lang="lang"
-		:data-name="dataName"
-		:session-from="sessionFrom"
-		:send-message-img="sendMessageImg"
-		:show-message-card="showMessageCard"
-		@getphonenumber="getphonenumber"
-		@getuserinfo="getuserinfo"
-		@error="error"
-		@opensetting="opensetting"
-		@launchapp="launchapp"
-		:style="[customStyle, {
-			overflow: ripple ? 'hidden' : 'visible'
-		}]"
-		@tap.stop="click($event)"
-		:hover-class="getHoverClass"
-		:loading="loading"
-	>
-		<slot></slot>
-		<view
-			v-if="ripple"
-			class="u-wave-ripple"
-			:class="[waveActive ? 'u-wave-active' : '']"
-			:style="{
-				top: rippleTop + 'px',
-				left: rippleLeft + 'px',
-				width: fields.targetWidth + 'px',
-				height: fields.targetWidth + 'px',
-				'background-color': rippleBgColor || 'rgba(0, 0, 0, 0.15)'
-			}"
-		></view>
-	</button>
-</template>
-
-<script>
-/**
- * button 按钮
- * @description Button 按钮
- * @tutorial https://www.uviewui.com/components/button.html
- * @property {String} size 按钮的大小
- * @property {Boolean} ripple 是否开启点击水波纹效果
- * @property {String} ripple-bg-color 水波纹的背景色,ripple为true时有效
- * @property {String} type 按钮的样式类型
- * @property {Boolean} plain 按钮是否镂空,背景色透明
- * @property {Boolean} disabled 是否禁用
- * @property {Boolean} hair-line 是否显示按钮的细边框(默认true)
- * @property {Boolean} shape 按钮外观形状,见文档说明
- * @property {Boolean} loading 按钮名称前是否带 loading 图标(App-nvue 平台,在 ios 上为雪花,Android上为圆圈)
- * @property {String} form-type 用于 <form> 组件,点击分别会触发 <form> 组件的 submit/reset 事件
- * @property {String} open-type 开放能力
- * @property {String} data-name 额外传参参数,用于小程序的data-xxx属性,通过target.dataset.name获取
- * @property {String} hover-class 指定按钮按下去的样式类。当 hover-class="none" 时,没有点击态效果(App-nvue 平台暂不支持)
- * @property {Number} hover-start-time 按住后多久出现点击态,单位毫秒
- * @property {Number} hover-stay-time 手指松开后点击态保留时间,单位毫秒
- * @property {Object} custom-style 对按钮的自定义样式,对象形式,见文档说明
- * @event {Function} click 按钮点击
- * @event {Function} getphonenumber open-type="getPhoneNumber"时有效
- * @event {Function} getuserinfo 用户点击该按钮时,会返回获取到的用户信息,从返回参数的detail中获取到的值同uni.getUserInfo
- * @event {Function} error 当使用开放能力时,发生错误的回调
- * @event {Function} opensetting 在打开授权设置页并关闭后回调
- * @event {Function} launchapp 打开 APP 成功的回调
- * @example <u-button>月落</u-button>
- */
-export default {
-	name: 'u-button',
-	props: {
-		// 是否细边框
-		hairLine: {
-			type: Boolean,
-			default: true
-		},
-		// 按钮的预置样式,default,primary,error,warning,success
-		type: {
-			type: String,
-			default: 'default'
-		},
-		// 按钮尺寸,default,medium,mini
-		size: {
-			type: String,
-			default: 'default'
-		},
-		// 按钮形状,circle(两边为半圆),square(带圆角)
-		shape: {
-			type: String,
-			default: 'square'
-		},
-		// 按钮是否镂空
-		plain: {
-			type: Boolean,
-			default: false
-		},
-		// 是否禁止状态
-		disabled: {
-			type: Boolean,
-			default: false
-		},
-		// 是否加载中
-		loading: {
-			type: Boolean,
-			default: false
-		},
-		// 开放能力,具体请看uniapp稳定关于button组件部分说明
-		// https://uniapp.dcloud.io/component/button
-		openType: {
-			type: String,
-			default: ''
-		},
-		// 用于 <form> 组件,点击分别会触发 <form> 组件的 submit/reset 事件
-		// 取值为submit(提交表单),reset(重置表单)
-		formType: {
-			type: String,
-			default: ''
-		},
-		// 打开 APP 时,向 APP 传递的参数,open-type=launchApp时有效
-		// 只微信小程序、QQ小程序有效
-		appParameter: {
-			type: String,
-			default: ''
-		},
-		// 指定是否阻止本节点的祖先节点出现点击态,微信小程序有效
-		hoverStopPropagation: {
-			type: Boolean,
-			default: false
-		},
-		// 指定返回用户信息的语言,zh_CN 简体中文,zh_TW 繁体中文,en 英文。只微信小程序有效
-		lang: {
-			type: String,
-			default: 'en'
-		},
-		// 会话来源,open-type="contact"时有效。只微信小程序有效
-		sessionFrom: {
-			type: String,
-			default: ''
-		},
-		// 会话内消息卡片标题,open-type="contact"时有效
-		// 默认当前标题,只微信小程序有效
-		sendMessageTitle: {
-			type: String,
-			default: ''
-		},
-		// 会话内消息卡片点击跳转小程序路径,open-type="contact"时有效
-		// 默认当前分享路径,只微信小程序有效
-		sendMessagePath: {
-			type: String,
-			default: ''
-		},
-		// 会话内消息卡片图片,open-type="contact"时有效
-		// 默认当前页面截图,只微信小程序有效
-		sendMessageImg: {
-			type: String,
-			default: ''
-		},
-		// 是否显示会话内消息卡片,设置此参数为 true,用户进入客服会话会在右下角显示"可能要发送的小程序"提示,
-		// 用户点击后可以快速发送小程序消息,open-type="contact"时有效
-		showMessageCard: {
-			type: Boolean,
-			default: false
-		},
-		// 手指按(触摸)按钮时按钮时的背景颜色
-		hoverBgColor: {
-			type: String,
-			default: ''
-		},
-		// 水波纹的背景颜色
-		rippleBgColor: {
-			type: String,
-			default: ''
-		},
-		// 是否开启水波纹效果
-		ripple: {
-			type: Boolean,
-			default: false
-		},
-		// 按下的类名
-		hoverClass: {
-			type: String,
-			default: ''
-		},
-		// 自定义样式,对象形式
-		customStyle: {
-			type: Object,
-			default() {
-				return {};
-			}
-		},
-		// 额外传参参数,用于小程序的data-xxx属性,通过target.dataset.name获取
-		dataName: {
-			type: String,
-			default: ''
-		},
-		// 节流,一定时间内只能触发一次
-		throttleTime: {
-			type: [String, Number],
-			default: 1000
-		},
-		// 按住后多久出现点击态,单位毫秒
-		hoverStartTime: {
-			type: [String, Number],
-			default: 20
-		},
-		// 手指松开后点击态保留时间,单位毫秒
-		hoverStayTime: {
-			type: [String, Number],
-			default: 150
-		},
-	},
-	computed: {
-		// 当没有传bgColor变量时,按钮按下去的颜色类名
-		getHoverClass() {
-			// 如果开启水波纹效果,则不启用hover-class效果
-			if (this.loading || this.disabled || this.ripple || this.hoverClass) return '';
-			let hoverClass = '';
-			hoverClass = this.plain ? 'u-' + this.type + '-plain-hover' : 'u-' + this.type + '-hover';
-			return hoverClass;
-		},
-		// 在'primary', 'success', 'error', 'warning'类型下,不显示边框,否则会造成四角有毛刺现象
-		showHairLineBorder() {
-			if (['primary', 'success', 'error', 'warning'].indexOf(this.type) >= 0 && !this.plain) {
-				return '';
-			} else {
-				return 'u-hairline-border';
-			}
-		}
-	},
-	data() {
-		return {
-			rippleTop: 0, // 水波纹的起点Y坐标到按钮上边界的距离
-			rippleLeft: 0, // 水波纹起点X坐标到按钮左边界的距离
-			fields: {}, // 波纹按钮节点信息
-			waveActive: false // 激活水波纹
-		};
-	},
-	methods: {
-		// 按钮点击
-		click(e) {
-			// 进行节流控制,每this.throttle毫秒内,只在开始处执行
-			this.$u.throttle(() => {
-				// 如果按钮时disabled和loading状态,不触发水波纹效果
-				if (this.loading === true || this.disabled === true) return;
-				// 是否开启水波纹效果
-				if (this.ripple) {
-					// 每次点击时,移除上一次的类,再次添加,才能触发动画效果
-					this.waveActive = false;
-					this.$nextTick(function() {
-						this.getWaveQuery(e);
-					});
-				}
-				this.$emit('click', e);
-			}, this.throttleTime);
-		},
-		// 查询按钮的节点信息
-		getWaveQuery(e) {
-			this.getElQuery().then(res => {
-				// 查询返回的是一个数组节点
-				let data = res[0];
-				// 查询不到节点信息,不操作
-				if (!data.width || !data.width) return;
-				// 水波纹的最终形态是一个正方形(通过border-radius让其变为一个圆形),这里要保证正方形的边长等于按钮的最长边
-				// 最终的方形(变换后的圆形)才能覆盖整个按钮
-				data.targetWidth = data.height > data.width ? data.height : data.width;
-				if (!data.targetWidth) return;
-				this.fields = data;
-				let touchesX = '',
-					touchesY = '';
-				// #ifdef MP-BAIDU
-				touchesX = e.changedTouches[0].clientX;
-				touchesY = e.changedTouches[0].clientY;
-				// #endif
-				// #ifdef MP-ALIPAY
-				touchesX = e.detail.clientX;
-				touchesY = e.detail.clientY;
-				// #endif
-				// #ifndef MP-BAIDU || MP-ALIPAY
-				touchesX = e.touches[0].clientX;
-				touchesY = e.touches[0].clientY;
-				// #endif
-				// 获取触摸点相对于按钮上边和左边的x和y坐标,原理是通过屏幕的触摸点(touchesY),减去按钮的上边界data.top
-				// 但是由于`transform-origin`默认是center,所以这里再减去半径才是水波纹view应该的位置
-				// 总的来说,就是把水波纹的矩形(变换后的圆形)的中心点,移动到我们的触摸点位置
-				this.rippleTop = touchesY - data.top - data.targetWidth / 2;
-				this.rippleLeft = touchesX - data.left - data.targetWidth / 2;
-				this.$nextTick(() => {
-					this.waveActive = true;
-				});
-			});
-		},
-		// 获取节点信息
-		getElQuery() {
-			return new Promise(resolve => {
-				let queryInfo = '';
-				// 获取元素节点信息,请查看uniapp相关文档
-				// https://uniapp.dcloud.io/api/ui/nodes-info?id=nodesrefboundingclientrect
-				queryInfo = uni.createSelectorQuery().in(this);
-				//#ifdef MP-ALIPAY
-				queryInfo = uni.createSelectorQuery();
-				//#endif
-				queryInfo.select('.u-btn').boundingClientRect();
-				queryInfo.exec(data => {
-					resolve(data);
-				});
-			});
-		},
-		// 下面为对接uniapp官方按钮开放能力事件回调的对接
-		getphonenumber(res) {
-			this.$emit('getphonenumber', res);
-		},
-		getuserinfo(res) {
-			this.$emit('getuserinfo', res);
-		},
-		error(res) {
-			this.$emit('error', res);
-		},
-		opensetting(res) {
-			this.$emit('opensetting', res);
-		},
-		launchapp(res) {
-			this.$emit('launchapp', res);
-		}
-	}
-};
-</script>
-
-<style scoped lang="scss">
-@import '../../libs/css/style.components.scss';
-.u-btn::after {
-	border: none;
-}
-
-.u-btn {
-	position: relative;
-	border: 0;
-	//border-radius: 10rpx;
-	/* #ifndef APP-NVUE */
-	display: inline-flex;		
-	/* #endif */
-	// 避免边框某些场景可能被“裁剪”,不能设置为hidden
-	overflow: visible;
-	line-height: 1;
-	@include vue-flex;
-	align-items: center;
-	justify-content: center;
-	cursor: pointer;
-	padding: 0 40rpx;
-	z-index: 1;
-	box-sizing: border-box;
-	transition: all 0.15s;
-	
-	&--bold-border {
-		border: 1px solid #ffffff;
-	}
-	
-	&--default {
-		color: $u-content-color;
-		border-color: #c0c4cc;
-		background-color: #ffffff;
-	}
-	
-	&--primary {
-		color: #ffffff;
-		border-color: $u-type-primary;
-		background-color: $u-type-primary;
-	}
-	
-	&--success {
-		color: #ffffff;
-		border-color: $u-type-success;
-		background-color: $u-type-success;
-	}
-	
-	&--error {
-		color: #ffffff;
-		border-color: $u-type-error;
-		background-color: $u-type-error;
-	}
-	
-	&--warning {
-		color: #ffffff;
-		border-color: $u-type-warning;
-		background-color: $u-type-warning;
-	}
-	
-	&--default--disabled {
-		color: #ffffff;
-		border-color: #e4e7ed;
-		background-color: #ffffff;
-	}
-	
-	&--primary--disabled {
-		color: #ffffff!important;
-		border-color: $u-type-primary-disabled!important;
-		background-color: $u-type-primary-disabled!important;
-	}
-	
-	&--success--disabled {
-		color: #ffffff!important;
-		border-color: $u-type-success-disabled!important;
-		background-color: $u-type-success-disabled!important;
-	}
-	
-	&--error--disabled {
-		color: #ffffff!important;
-		border-color: $u-type-error-disabled!important;
-		background-color: $u-type-error-disabled!important;
-	}
-	
-	&--warning--disabled {
-		color: #ffffff!important;
-		border-color: $u-type-warning-disabled!important;
-		background-color: $u-type-warning-disabled!important;
-	}
-	
-	&--primary--plain {
-		color: $u-type-primary!important;
-		border-color: $u-type-primary-disabled!important;
-		background-color: $u-type-primary-light!important;
-	}
-	
-	&--success--plain {
-		color: $u-type-success!important;
-		border-color: $u-type-success-disabled!important;
-		background-color: $u-type-success-light!important;
-	}
-	
-	&--error--plain {
-		color: $u-type-error!important;
-		border-color: $u-type-error-disabled!important;
-		background-color: $u-type-error-light!important;
-	}
-	
-	&--warning--plain {
-		color: $u-type-warning!important;
-		border-color: $u-type-warning-disabled!important;
-		background-color: $u-type-warning-light!important;
-	}
-}
-
-.u-hairline-border:after {
-	content: ' ';
-	position: absolute;
-	pointer-events: none;
-	// 设置为border-box,意味着下面的scale缩小为0.5,实际上缩小的是伪元素的内容(border-box意味着内容不含border)
-	box-sizing: border-box;
-	// 中心点作为变形(scale())的原点
-	-webkit-transform-origin: 0 0;
-	transform-origin: 0 0;
-	left: 0;
-	top: 0;
-	width: 199.8%;
-	height: 199.7%;
-	-webkit-transform: scale(0.5, 0.5);
-	transform: scale(0.5, 0.5);
-	border: 1px solid currentColor;
-	z-index: 1;
-}
-
-.u-wave-ripple {
-	z-index: 0;
-	position: absolute;
-	border-radius: 100%;
-	background-clip: padding-box;
-	pointer-events: none;
-	user-select: none;
-	transform: scale(0);
-	opacity: 1;
-	transform-origin: center;
-}
-
-.u-wave-ripple.u-wave-active {
-	opacity: 0;
-	transform: scale(2);
-	transition: opacity 1s linear, transform 0.4s linear;
-}
-
-.u-round-circle {
-	border-radius: 100rpx;
-}
-
-.u-round-circle::after {
-	border-radius: 100rpx;
-}
-
-.u-loading::after {
-	background-color: hsla(0, 0%, 100%, 0.35);
-}
-
-.u-size-default {
-	font-size: 30rpx;
-	height: 80rpx;
-	line-height: 80rpx;
-}
-
-.u-size-medium {
-	/* #ifndef APP-NVUE */
-	display: inline-flex;		
-	/* #endif */
-	width: auto;
-	font-size: 26rpx;
-	height: 70rpx;
-	line-height: 70rpx;
-	padding: 0 80rpx;
-}
-
-.u-size-mini {
-	/* #ifndef APP-NVUE */
-	display: inline-flex;		
-	/* #endif */
-	width: auto;
-	font-size: 22rpx;
-	padding-top: 1px;
-	height: 50rpx;
-	line-height: 50rpx;
-	padding: 0 20rpx;
-}
-
-.u-primary-plain-hover {
-	color: #ffffff !important;
-	background: $u-type-primary-dark !important;
-}
-
-.u-default-plain-hover {
-	color: $u-type-primary-dark !important;
-	background: $u-type-primary-light !important;
-}
-
-.u-success-plain-hover {
-	color: #ffffff !important;
-	background: $u-type-success-dark !important;
-}
-
-.u-warning-plain-hover {
-	color: #ffffff !important;
-	background: $u-type-warning-dark !important;
-}
-
-.u-error-plain-hover {
-	color: #ffffff !important;
-	background: $u-type-error-dark !important;
-}
-
-.u-info-plain-hover {
-	color: #ffffff !important;
-	background: $u-type-info-dark !important;
-}
-
-.u-default-hover {
-	color: $u-type-primary-dark !important;
-	border-color: $u-type-primary-dark !important;
-	background-color: $u-type-primary-light !important;
-}
-
-.u-primary-hover {
-	background: $u-type-primary-dark !important;
-	color: #fff;
-}
-
-.u-success-hover {
-	background: $u-type-success-dark !important;
-	color: #fff;
-}
-
-.u-info-hover {
-	background: $u-type-info-dark !important;
-	color: #fff;
-}
-
-.u-warning-hover {
-	background: $u-type-warning-dark !important;
-	color: #fff;
-}
-
-.u-error-hover {
-	background: $u-type-error-dark !important;
-	color: #fff;
-}
-</style>
diff --git a/uview-ui/components/u-calendar/u-calendar.vue b/uview-ui/components/u-calendar/u-calendar.vue
deleted file mode 100644
index 2b30184..0000000
--- a/uview-ui/components/u-calendar/u-calendar.vue
+++ /dev/null
@@ -1,639 +0,0 @@
-<template>
-	<u-popup closeable :maskCloseAble="maskCloseAble" mode="bottom" :popup="false" v-model="value" length="auto"
-	 :safeAreaInsetBottom="safeAreaInsetBottom" @close="close" :z-index="uZIndex" :border-radius="borderRadius" :closeable="closeable">
-		<view class="u-calendar">
-			<view class="u-calendar__header">
-				<view class="u-calendar__header__text" v-if="!$slots['tooltip']">
-					{{toolTip}}
-				</view>
-				<slot v-else name="tooltip" />
-			</view>
-			<view class="u-calendar__action u-flex u-row-center">
-				<view class="u-calendar__action__icon">
-					<u-icon v-if="changeYear" name="arrow-left-double" :color="yearArrowColor" @click="changeYearHandler(0)"></u-icon>
-				</view>
-				<view class="u-calendar__action__icon">
-					<u-icon v-if="changeMonth" name="arrow-left" :color="monthArrowColor" @click="changeMonthHandler(0)"></u-icon>
-				</view>
-				<view class="u-calendar__action__text">{{ showTitle }}</view>
-				<view class="u-calendar__action__icon">
-					<u-icon v-if="changeMonth" name="arrow-right" :color="monthArrowColor" @click="changeMonthHandler(1)"></u-icon>
-				</view>
-				<view class="u-calendar__action__icon">
-					<u-icon v-if="changeYear" name="arrow-right-double" :color="yearArrowColor" @click="changeYearHandler(1)"></u-icon>
-				</view>
-			</view>
-			<view class="u-calendar__week-day">
-				<view class="u-calendar__week-day__text" v-for="(item, index) in weekDayZh" :key="index">{{item}}</view>
-			</view>
-			<view class="u-calendar__content">
-				<!-- 前置空白部分 -->
-				<block v-for="(item, index) in weekdayArr" :key="index">
-					<view class="u-calendar__content__item"></view>
-				</block>
-				<view class="u-calendar__content__item" :class="{
-					'u-hover-class':openDisAbled(year,month,index+1),
-					'u-calendar__content--start-date': (mode == 'range' && startDate==`${year}-${month}-${index+1}`) || mode== 'date',
-					'u-calendar__content--end-date':(mode== 'range' && endDate==`${year}-${month}-${index+1}`) || mode == 'date'
-				}" :style="{backgroundColor: getColor(index,1)}" v-for="(item, index) in daysArr" :key="index"
-				 @tap="dateClick(index)">
-					<view class="u-calendar__content__item__inner" :style="{color: getColor(index,2)}">
-						<view>{{ index + 1 }}</view>
-					</view>
-					<view class="u-calendar__content__item__tips" :style="{color:activeColor}" v-if="mode== 'range' && startDate==`${year}-${month}-${index+1}` && startDate!=endDate">{{startText}}</view>
-					<view class="u-calendar__content__item__tips" :style="{color:activeColor}" v-if="mode== 'range' && endDate==`${year}-${month}-${index+1}`">{{endText}}</view>
-				</view>
-				<view class="u-calendar__content__bg-month">{{month}}</view>
-			</view>
-			<view class="u-calendar__bottom">
-				<view class="u-calendar__bottom__choose">
-					<text>{{mode == 'date' ? activeDate : startDate}}</text>
-					<text v-if="endDate">至{{endDate}}</text>
-				</view>
-				<view class="u-calendar__bottom__btn">
-					<u-button :type="btnType" shape="circle" size="default" @click="btnFix(false)">确定</u-button>
-				</view>
-			</view>
-		</view>
-	</u-popup>
-</template>
-<script>
-	/**
-	 * calendar 日历
-	 * @description 此组件用于单个选择日期,范围选择日期等,日历被包裹在底部弹起的容器中。
-	 * @tutorial http://uviewui.com/components/calendar.html
-	 * @property {String} mode 选择日期的模式,date-为单个日期,range-为选择日期范围
-	 * @property {Boolean} v-model 布尔值变量,用于控制日历的弹出与收起
-	 * @property {Boolean} safe-area-inset-bottom 是否开启底部安全区适配(默认false)
-	 * @property {Boolean} change-year 是否显示顶部的切换年份方向的按钮(默认true)
-	 * @property {Boolean} change-month 是否显示顶部的切换月份方向的按钮(默认true)
-	 * @property {String Number} max-year 可切换的最大年份(默认2050)
-	 * @property {String Number} min-year 可切换的最小年份(默认1950)
-	 * @property {String Number} min-date 最小可选日期(默认1950-01-01)
-	 * @property {String Number} max-date 最大可选日期(默认当前日期)
-	 * @property {String Number} 弹窗顶部左右两边的圆角值,单位rpx(默认20)
-	 * @property {Boolean} mask-close-able 是否允许通过点击遮罩关闭日历(默认true)
-	 * @property {String} month-arrow-color 月份切换按钮箭头颜色(默认#606266)
-	 * @property {String} year-arrow-color 年份切换按钮箭头颜色(默认#909399)
-	 * @property {String} color 日期字体的默认颜色(默认#303133)
-	 * @property {String} active-bg-color 起始/结束日期按钮的背景色(默认#2979ff)
-	 * @property {String Number} z-index 弹出时的z-index值(默认10075)
-	 * @property {String} active-color 起始/结束日期按钮的字体颜色(默认#ffffff)
-	 * @property {String} range-bg-color 起始/结束日期之间的区域的背景颜色(默认rgba(41,121,255,0.13))
-	 * @property {String} range-color 选择范围内字体颜色(默认#2979ff)
-	 * @property {String} start-text 起始日期底部的提示文字(默认 '开始')
-	 * @property {String} end-text 结束日期底部的提示文字(默认 '结束')
-	 * @property {String} btn-type 底部确定按钮的主题(默认 'primary')
-	 * @property {String} toolTip 顶部提示文字,如设置名为tooltip的slot,此参数将失效(默认 '选择日期')
-	 * @property {Boolean} closeable 是否显示右上角的关闭图标(默认true)
-	 * @example <u-calendar v-model="show" :mode="mode"></u-calendar>
-	 */
-	
-	export default {
-		name: 'u-calendar',
-		props: {
-			safeAreaInsetBottom: {
-				type: Boolean,
-				default: false
-			},
-			// 是否允许通过点击遮罩关闭Picker
-			maskCloseAble: {
-				type: Boolean,
-				default: true
-			},
-			// 通过双向绑定控制组件的弹出与收起
-			value: {
-				type: Boolean,
-				default: false
-			},
-			// 弹出的z-index值
-			zIndex: {
-				type: [String, Number],
-				default: 0
-			},
-			// 是否允许切换年份
-			changeYear: {
-				type: Boolean,
-				default: true
-			},
-			// 是否允许切换月份
-			changeMonth: {
-				type: Boolean,
-				default: true
-			},
-			// date-单个日期选择,range-开始日期+结束日期选择
-			mode: {
-				type: String,
-				default: 'date'
-			},
-			// 可切换的最大年份
-			maxYear: {
-				type: [Number, String],
-				default: 2050
-			},
-			// 可切换的最小年份
-			minYear: {
-				type: [Number, String],
-				default: 1950
-			},
-			// 最小可选日期(不在范围内日期禁用不可选)
-			minDate: {
-				type: [Number, String],
-				default: '1950-01-01'
-			},
-			/**
-			 * 最大可选日期
-			 * 默认最大值为今天,之后的日期不可选
-			 * 2030-12-31
-			 * */
-			maxDate: {
-				type: [Number, String],
-				default: ''
-			},
-			// 弹窗顶部左右两边的圆角值
-			borderRadius: {
-				type: [String, Number],
-				default: 20
-			},
-			// 月份切换按钮箭头颜色
-			monthArrowColor: {
-				type: String,
-				default: '#606266'
-			},
-			// 年份切换按钮箭头颜色
-			yearArrowColor: {
-				type: String,
-				default: '#909399'
-			},
-			// 默认日期字体颜色
-			color: {
-				type: String,
-				default: '#303133'
-			},
-			// 选中|起始结束日期背景色
-			activeBgColor: {
-				type: String,
-				default: '#2979ff'
-			},
-			// 选中|起始结束日期字体颜色
-			activeColor: {
-				type: String,
-				default: '#ffffff'
-			},
-			// 范围内日期背景色
-			rangeBgColor: {
-				type: String,
-				default: 'rgba(41,121,255,0.13)'
-			}, 
-			// 范围内日期字体颜色
-			rangeColor: {
-				type: String,
-				default: '#2979ff'
-			},
-			// mode=range时生效,起始日期自定义文案
-			startText: {
-				type: String,
-				default: '开始'
-			},
-			// mode=range时生效,结束日期自定义文案
-			endText: {
-				type: String,
-				default: '结束'
-			},
-			//按钮样式类型
-			btnType: {
-				type: String,
-				default: 'primary'
-			},
-			// 当前选中日期带选中效果
-			isActiveCurrent: {
-				type: Boolean,
-				default: true
-			},
-			// 切换年月是否触发事件 mode=date时生效
-			isChange: {
-				type: Boolean,
-				default: false
-			},
-			// 是否显示右上角的关闭图标
-			closeable: {
-				type: Boolean,
-				default: true
-			},
-			// 顶部的提示文字
-			toolTip: {
-				type: String,
-				default: '选择日期'
-			}
-		},
-		data() {
-			return {
-				// 星期几,值为1-7
-				weekday: 1, 
-				weekdayArr:[],
-				// 当前月有多少天
-				days: 0, 
-				daysArr:[],
-				showTitle: '',
-				year: 2020,
-				month: 0,
-				day: 0,
-				startYear: 0,
-				startMonth: 0,
-				startDay: 0,
-				endYear: 0,
-				endMonth: 0,
-				endDay: 0,
-				today: '',
-				activeDate: '',
-				startDate: '',
-				endDate: '',
-				isStart: true,
-				min: null,
-				max: null,
-				weekDayZh: ['日', '一', '二', '三', '四', '五', '六']
-			};
-		},
-		computed: {
-			dataChange() {
-				return `${this.mode}-${this.minDate}-${this.maxDate}`;
-			},
-			uZIndex() {
-				// 如果用户有传递z-index值,优先使用
-				return this.zIndex ? this.zIndex : this.$u.zIndex.popup;
-			}
-		},
-		watch: {
-			dataChange(val) {
-				this.init()
-			}
-		},
-		created() {
-			this.init()
-		},
-		methods: {
-			getColor(index, type) {
-				let color = type == 1 ? '' : this.color;
-				let day = index + 1
-				let date = `${this.year}-${this.month}-${day}`
-				let timestamp = new Date(date.replace(/\-/g, '/')).getTime();
-				let start = this.startDate.replace(/\-/g, '/')
-				let end = this.endDate.replace(/\-/g, '/')
-				if ((this.isActiveCurrent && this.activeDate == date) || this.startDate == date || this.endDate == date) {
-					color = type == 1 ? this.activeBgColor : this.activeColor;
-				} else if (this.endDate && timestamp > new Date(start).getTime() && timestamp < new Date(end).getTime()) {
-					color = type == 1 ? this.rangeBgColor : this.rangeColor;
-				}
-				return color;
-			},
-			init() {
-				let now = new Date();
-				this.year = now.getFullYear();
-				this.month = now.getMonth() + 1;
-				this.day = now.getDate();
-				this.today = `${now.getFullYear()}-${now.getMonth() + 1}-${now.getDate()}`;
-				this.activeDate = this.today;
-				this.min = this.initDate(this.minDate);
-				this.max = this.initDate(this.maxDate || this.today);
-				this.startDate = "";
-				this.startYear = 0;
-				this.startMonth = 0;
-				this.startDay = 0;
-				this.endYear = 0;
-				this.endMonth = 0;
-				this.endDay = 0;
-				this.endDate = "";
-				this.isStart = true;
-				this.changeData();
-			},
-			//日期处理
-			initDate(date) {
-				let fdate = date.split('-');
-				return {
-					year: Number(fdate[0] || 1920),
-					month: Number(fdate[1] || 1),
-					day: Number(fdate[2] || 1)
-				}
-			},
-			openDisAbled: function(year, month, day) {
-				let bool = true;
-				let date = `${year}/${month}/${day}`;
-				// let today = this.today.replace(/\-/g, '/');
-				let min = `${this.min.year}/${this.min.month}/${this.min.day}`;
-				let max = `${this.max.year}/${this.max.month}/${this.max.day}`;
-				let timestamp = new Date(date).getTime();
-				if (timestamp >= new Date(min).getTime() && timestamp <= new Date(max).getTime()) {
-					bool = false;
-				}
-				return bool;
-			},
-			generateArray: function(start, end) {
-				return Array.from(new Array(end + 1).keys()).slice(start);
-			},
-			formatNum: function(num) {
-				return num < 10 ? '0' + num : num + '';
-			},
-			//一个月有多少天
-			getMonthDay(year, month) {
-				let days = new Date(year, month, 0).getDate();
-				return days;
-			},
-			getWeekday(year, month) {
-				let date = new Date(`${year}/${month}/01 00:00:00`);
-				return date.getDay();
-			},
-			checkRange(year) {
-				let overstep = false;
-				if (year < this.minYear || year > this.maxYear) {
-					uni.showToast({
-						title: "日期超出范围啦~",
-						icon: 'none'
-					})
-					overstep = true;
-				}
-				return overstep;
-			},
-			changeMonthHandler(isAdd) {
-				if (isAdd) {
-					let month = this.month + 1;
-					let year = month > 12 ? this.year + 1 : this.year;
-					if (!this.checkRange(year)) {
-						this.month = month > 12 ? 1 : month;
-						this.year = year;
-						this.changeData();
-					}
-
-				} else {
-					let month = this.month - 1;
-					let year = month < 1 ? this.year - 1 : this.year;
-					if (!this.checkRange(year)) {
-						this.month = month < 1 ? 12 : month;
-						this.year = year;
-						this.changeData();
-					}
-				}
-			},
-			changeYearHandler(isAdd) {
-				let year = isAdd ? this.year + 1 : this.year - 1;
-				if (!this.checkRange(year)) {
-					this.year = year;
-					this.changeData();
-				}
-			},
-			changeData() {
-				this.days = this.getMonthDay(this.year, this.month);
-				this.daysArr=this.generateArray(1,this.days)
-				this.weekday = this.getWeekday(this.year, this.month);
-				this.weekdayArr=this.generateArray(1,this.weekday)
-				this.showTitle = `${this.year}年${this.month}月`;
-				if (this.isChange && this.mode == 'date') {
-					this.btnFix(true);
-				}
-			},
-			dateClick: function(day) {
-				day += 1;
-				if (!this.openDisAbled(this.year, this.month, day)) {
-					this.day = day;
-					let date = `${this.year}-${this.month}-${day}`;
-					if (this.mode == 'date') {
-						this.activeDate = date;
-					} else {
-						let compare = new Date(date.replace(/\-/g, '/')).getTime() < new Date(this.startDate.replace(/\-/g, '/')).getTime()
-						if (this.isStart || compare) {
-							this.startDate = date;
-							this.startYear = this.year;
-							this.startMonth = this.month;
-							this.startDay = this.day;
-							this.endYear = 0;
-							this.endMonth = 0;
-							this.endDay = 0;
-							this.endDate = "";
-							this.activeDate = "";
-							this.isStart = false;
-						} else {
-							this.endDate = date;
-							this.endYear = this.year;
-							this.endMonth = this.month;
-							this.endDay = this.day;
-							this.isStart = true;
-						}
-					}
-				}
-			},
-			close() {
-				// 修改通过v-model绑定的父组件变量的值为false,从而隐藏日历弹窗
-				this.$emit('input', false);
-			},
-			getWeekText(date) {
-				date = new Date(`${date.replace(/\-/g, '/')} 00:00:00`);
-				let week = date.getDay();
-				return '星期' + ['日', '一', '二', '三', '四', '五', '六'][week];
-			},
-			btnFix(show) {
-				if (!show) {
-					this.close();
-				}
-				if (this.mode == 'date') {
-					let arr = this.activeDate.split('-')
-					let year = this.isChange ? this.year : Number(arr[0]);
-					let month = this.isChange ? this.month : Number(arr[1]);
-					let day = this.isChange ? this.day : Number(arr[2]);
-					//当前月有多少天
-					let days = this.getMonthDay(year, month);
-					let result = `${year}-${this.formatNum(month)}-${this.formatNum(day)}`;
-					let weekText = this.getWeekText(result);
-					let isToday = false;
-					if (`${year}-${month}-${day}` == this.today) {
-						//今天
-						isToday = true;
-					}
-					this.$emit('change', {
-						year: year,
-						month: month,
-						day: day,
-						days: days,
-						result: result,
-						week: weekText,
-						isToday: isToday,
-						// switch: show //是否是切换年月操作
-					});
-				} else {
-					if (!this.startDate || !this.endDate) return;
-					let startMonth = this.formatNum(this.startMonth);
-					let startDay = this.formatNum(this.startDay);
-					let startDate = `${this.startYear}-${startMonth}-${startDay}`;
-					let startWeek = this.getWeekText(startDate)
-
-					let endMonth = this.formatNum(this.endMonth);
-					let endDay = this.formatNum(this.endDay);
-					let endDate = `${this.endYear}-${endMonth}-${endDay}`;
-					let endWeek = this.getWeekText(endDate);
-					this.$emit('change', {
-						startYear: this.startYear,
-						startMonth: this.startMonth,
-						startDay: this.startDay,
-						startDate: startDate,
-						startWeek: startWeek,
-						endYear: this.endYear,
-						endMonth: this.endMonth,
-						endDay: this.endDay,
-						endDate: endDate,
-						endWeek: endWeek
-					});
-				}
-			}
-		}
-	};
-</script>
-
-<style scoped lang="scss">
-	@import "../../libs/css/style.components.scss";
-	
-	.u-calendar {
-		color: $u-content-color;
-		
-		&__header {
-			width: 100%;
-			box-sizing: border-box;
-			font-size: 30rpx;
-			background-color: #fff;
-			color: $u-main-color;
-			
-			&__text {
-				margin-top: 30rpx;
-				padding: 0 60rpx;
-				@include vue-flex;
-				justify-content: center;
-				align-items: center;
-			}
-		}
-		
-		&__action {
-			padding: 40rpx 0 40rpx 0;
-			
-			&__icon {
-				margin: 0 16rpx;
-			}
-			
-			&__text {
-				padding: 0 16rpx;
-				color: $u-main-color;
-				font-size: 32rpx;
-				line-height: 32rpx;
-				font-weight: bold;
-			}
-		}
-	
-		&__week-day {
-			@include vue-flex;
-			align-items: center;
-			justify-content: center;
-			padding: 6px 0;
-			overflow: hidden;
-			
-			&__text {
-				flex: 1;
-				text-align: center;
-			}
-		}
-	
-		&__content {
-			width: 100%;
-			@include vue-flex;
-			flex-wrap: wrap;
-			padding: 6px 0;
-			box-sizing: border-box;
-			background-color: #fff;
-			position: relative;
-			
-			&--end-date {
-				border-top-right-radius: 8rpx;
-				border-bottom-right-radius: 8rpx;
-			}
-			
-			&--start-date {
-				border-top-left-radius: 8rpx;
-				border-bottom-left-radius: 8rpx;
-			}
-			
-			&__item {
-				width: 14.2857%;
-				@include vue-flex;
-				align-items: center;
-				justify-content: center;
-				padding: 6px 0;
-				overflow: hidden;
-				position: relative;
-				z-index: 2;
-				
-				&__inner {
-					height: 84rpx;
-					@include vue-flex;
-					align-items: center;
-					justify-content: center;
-					flex-direction: column;
-					font-size: 32rpx;
-					position: relative;
-					border-radius: 50%;
-					
-					&__desc {
-						width: 100%;
-						font-size: 24rpx;
-						line-height: 24rpx;
-						transform: scale(0.75);
-						transform-origin: center center;
-						position: absolute;
-						left: 0;
-						text-align: center;
-						bottom: 2rpx;
-					}
-				}
-				
-				&__tips {
-					width: 100%;
-					font-size: 24rpx;
-					line-height: 24rpx;
-					position: absolute;
-					left: 0;
-					transform: scale(0.8);
-					transform-origin: center center;
-					text-align: center;
-					bottom: 8rpx;
-					z-index: 2;
-				}
-			}
-			
-			&__bg-month {
-				position: absolute;
-				font-size: 130px;
-				line-height: 130px;
-				left: 50%;
-				top: 50%;
-				transform: translate(-50%, -50%);
-				color: #e4e7ed;
-				z-index: 1;
-			}
-		}
-	
-		&__bottom {
-			width: 100%;
-			@include vue-flex;
-			align-items: center;
-			justify-content: center;
-			flex-direction: column;
-			background-color: #fff;
-			padding: 0 40rpx 30rpx;
-			box-sizing: border-box;
-			font-size: 24rpx;
-			color: $u-tips-color;
-			
-			&__choose {
-				height: 50rpx;
-			}
-			
-			&__btn {
-				width: 100%;
-			}
-		}
-	}
-</style>
\ No newline at end of file
diff --git a/uview-ui/components/u-car-keyboard/u-car-keyboard.vue b/uview-ui/components/u-car-keyboard/u-car-keyboard.vue
deleted file mode 100644
index 84b1467..0000000
--- a/uview-ui/components/u-car-keyboard/u-car-keyboard.vue
+++ /dev/null
@@ -1,257 +0,0 @@
-<template>
-	<view class="u-keyboard" @touchmove.stop.prevent="() => {}">
-		<view class="u-keyboard-grids">
-			<block>
-				<view class="u-keyboard-grids-item" v-for="(group, i) in abc ? EngKeyBoardList : areaList" :key="i">
-					<view :hover-stay-time="100" @tap="carInputClick(i, j)" hover-class="u-carinput-hover" class="u-keyboard-grids-btn"
-					 v-for="(item, j) in group" :key="j">
-						{{ item }}
-					</view>
-				</view>
-				<view @touchstart="backspaceClick" @touchend="clearTimer" :hover-stay-time="100" class="u-keyboard-back"
-				 hover-class="u-hover-class">
-					<u-icon :size="38" name="backspace" :bold="true"></u-icon>
-				</view>
-				<view :hover-stay-time="100" class="u-keyboard-change" hover-class="u-carinput-hover" @tap="changeCarInputMode">
-					<text class="zh" :class="[!abc ? 'active' : 'inactive']">中</text>
-					/
-					<text class="en" :class="[abc ? 'active' : 'inactive']">英</text>
-				</view>
-			</block>
-		</view>
-	</view>
-</template>
-
-<script>
-	export default {
-		name: "u-keyboard",
-		props: {
-			// 是否打乱键盘按键的顺序
-			random: {
-				type: Boolean,
-				default: false
-			}
-		},
-		data() {
-			return {
-				// 车牌输入时,abc=true为输入车牌号码,bac=false为输入省份中文简称
-				abc: false
-			};
-		},
-		computed: {
-			areaList() {
-				let data = [
-					'京',
-					'沪',
-					'粤',
-					'津',
-					'冀',
-					'豫',
-					'云',
-					'辽',
-					'黑',
-					'湘',
-					'皖',
-					'鲁',
-					'苏',
-					'浙',
-					'赣',
-					'鄂',
-					'桂',
-					'甘',
-					'晋',
-					'陕',
-					'蒙',
-					'吉',
-					'闽',
-					'贵',
-					'渝',
-					'川',
-					'青',
-					'琼',
-					'宁',
-					'挂',
-					'藏',
-					'港',
-					'澳',
-					'新',
-					'使',
-					'学'
-				];
-				let tmp = [];
-				// 打乱顺序
-				if (this.random) data = this.$u.randomArray(data);
-				// 切割成二维数组
-				tmp[0] = data.slice(0, 10);
-				tmp[1] = data.slice(10, 20);
-				tmp[2] = data.slice(20, 30);
-				tmp[3] = data.slice(30, 36);
-				return tmp;
-			},
-			EngKeyBoardList() {
-				let data = [
-					1,
-					2,
-					3,
-					4,
-					5,
-					6,
-					7,
-					8,
-					9,
-					0,
-					'Q',
-					'W',
-					'E',
-					'R',
-					'T',
-					'Y',
-					'U',
-					'I',
-					'O',
-					'P',
-					'A',
-					'S',
-					'D',
-					'F',
-					'G',
-					'H',
-					'J',
-					'K',
-					'L',
-					'Z',
-					'X',
-					'C',
-					'V',
-					'B',
-					'N',
-					'M'
-				];
-				let tmp = [];
-				if (this.random) data = this.$u.randomArray(data);
-				tmp[0] = data.slice(0, 10);
-				tmp[1] = data.slice(10, 20);
-				tmp[2] = data.slice(20, 30);
-				tmp[3] = data.slice(30, 36);
-				return tmp;
-			}
-		},
-		methods: {
-			// 点击键盘按钮
-			carInputClick(i, j) {
-				let value = '';
-				// 不同模式,获取不同数组的值
-				if (this.abc) value = this.EngKeyBoardList[i][j];
-				else value = this.areaList[i][j];
-				this.$emit('change', value);
-			},
-			// 修改汽车牌键盘的输入模式,中文|英文
-			changeCarInputMode() {
-				this.abc = !this.abc;
-			},
-			// 点击退格键
-			backspaceClick() {
-				this.$emit('backspace');
-				clearInterval(this.timer); //再次清空定时器,防止重复注册定时器
-				this.timer = null;
-				this.timer = setInterval(() => {
-					this.$emit('backspace');
-				}, 250);
-			},
-			clearTimer() {
-				clearInterval(this.timer);
-				this.timer = null;
-			},
-		}
-	};
-</script>
-
-<style lang="scss" scoped>
-	@import "../../libs/css/style.components.scss";
-
-	.u-keyboard-grids {
-		background: rgb(215, 215, 217);
-		padding: 24rpx 0;
-		position: relative;
-	}
-
-	.u-keyboard-grids-item {
-		@include vue-flex;
-		align-items: center;
-		justify-content: center;
-	}
-
-	.u-keyboard-grids-btn {
-		text-decoration: none;
-		width: 62rpx;
-		flex: 0 0 64rpx;
-		height: 80rpx;
-		/* #ifndef APP-NVUE */
-		display: inline-flex;		
-		/* #endif */
-		font-size: 36rpx;
-		text-align: center;
-		line-height: 80rpx;
-		background-color: #fff;
-		margin: 8rpx 5rpx;
-		border-radius: 8rpx;
-		box-shadow: 0 2rpx 0rpx #888992;
-		font-weight: 500;
-		justify-content: center;
-	}
-
-	.u-carinput-hover {
-		background-color: rgb(185, 188, 195) !important;
-	}
-
-	.u-keyboard-back {
-		position: absolute;
-		width: 96rpx;
-		right: 22rpx;
-		bottom: 32rpx;
-		height: 80rpx;
-		background-color: rgb(185, 188, 195);
-		@include vue-flex;
-		align-items: center;
-		border-radius: 8rpx;
-		justify-content: center;
-		box-shadow: 0 2rpx 0rpx #888992;
-	}
-
-	.u-keyboard-change {
-		font-size: 24rpx;
-		box-shadow: 0 2rpx 0rpx #888992;
-		position: absolute;
-		width: 96rpx;
-		left: 22rpx;
-		line-height: 1;
-		bottom: 32rpx;
-		height: 80rpx;
-		background-color: #ffffff;
-		@include vue-flex;
-		align-items: center;
-		border-radius: 8rpx;
-		justify-content: center;
-	}
-
-	.u-keyboard-change .inactive.zh {
-		transform: scale(0.85) translateY(-10rpx);
-	}
-
-	.u-keyboard-change .inactive.en {
-		transform: scale(0.85) translateY(10rpx);
-	}
-
-	.u-keyboard-change .active {
-		color: rgb(237, 112, 64);
-		font-size: 30rpx;
-	}
-
-	.u-keyboard-change .zh {
-		transform: translateY(-10rpx);
-	}
-
-	.u-keyboard-change .en {
-		transform: translateY(10rpx);
-	}
-</style>
diff --git a/uview-ui/components/u-card/u-card.vue b/uview-ui/components/u-card/u-card.vue
deleted file mode 100644
index 3d5d03d..0000000
--- a/uview-ui/components/u-card/u-card.vue
+++ /dev/null
@@ -1,298 +0,0 @@
-<template>
-	<view
-		class="u-card"
-		@tap.stop="click"
-		:class="{ 'u-border': border, 'u-card-full': full, 'u-card--border': borderRadius > 0 }"
-		:style="{
-			borderRadius: borderRadius + 'rpx',
-			margin: margin,
-			boxShadow: boxShadow
-		}"
-	>
-		<view
-			v-if="showHead"
-			class="u-card__head"
-			:style="[{padding: padding + 'rpx'}, headStyle]"
-			:class="{
-				'u-border-bottom': headBorderBottom
-			}"
-			@tap="headClick"
-		>
-			<view v-if="!$slots.head" class="u-flex u-row-between">
-				<view class="u-card__head--left u-flex u-line-1" v-if="title">
-					<image
-						:src="thumb"
-						class="u-card__head--left__thumb"
-						mode="aspectfull"
-						v-if="thumb"
-						:style="{ 
-							height: thumbWidth + 'rpx', 
-							width: thumbWidth + 'rpx', 
-							borderRadius: thumbCircle ? '100rpx' : '6rpx' 
-						}"
-					></image>
-					<text
-						class="u-card__head--left__title u-line-1"
-						:style="{
-							fontSize: titleSize + 'rpx',
-							color: titleColor
-						}"
-					>
-						{{ title }}
-					</text>
-				</view>
-				<view class="u-card__head--right u-line-1" v-if="subTitle">
-					<text
-						class="u-card__head__title__text"
-						:style="{
-							fontSize: subTitleSize + 'rpx',
-							color: subTitleColor
-						}"
-					>
-						{{ subTitle }}
-					</text>
-				</view>
-			</view>
-			<slot name="head" v-else />
-		</view>
-		<view @tap="bodyClick" class="u-card__body" :style="[{padding: padding + 'rpx'}, bodyStyle]"><slot name="body" /></view>
-		<view
-			v-if="showFoot"
-			class="u-card__foot"
-			 @tap="footClick"
-			:style="[{padding: $slots.foot ? padding + 'rpx' : 0}, footStyle]"
-			:class="{
-				'u-border-top': footBorderTop
-			}"
-		>
-			<slot name="foot" />
-		</view>
-	</view>
-</template>
-
-<script>
-/**
- * card 卡片
- * @description 卡片组件一般用于多个列表条目,且风格统一的场景
- * @tutorial https://www.uviewui.com/components/card.html
- * @property {Boolean} full 卡片与屏幕两侧是否留空隙(默认false)
- * @property {String} title 头部左边的标题
- * @property {String} title-color 标题颜色(默认#303133)
- * @property {String | Number} title-size 标题字体大小,单位rpx(默认30)
- * @property {String} sub-title 头部右边的副标题
- * @property {String} sub-title-color 副标题颜色(默认#909399)
- * @property {String | Number} sub-title-size 副标题字体大小(默认26)
- * @property {Boolean} border 是否显示边框(默认true)
- * @property {String | Number} index 用于标识点击了第几个卡片
- * @property {String} box-shadow 卡片外围阴影,字符串形式(默认none)
- * @property {String} margin 卡片与屏幕两边和上下元素的间距,需带单位,如"30rpx 20rpx"(默认30rpx)
- * @property {String | Number} border-radius 卡片整体的圆角值,单位rpx(默认16)
- * @property {Object} head-style 头部自定义样式,对象形式
- * @property {Object} body-style 中部自定义样式,对象形式
- * @property {Object} foot-style 底部自定义样式,对象形式
- * @property {Boolean} head-border-bottom 是否显示头部的下边框(默认true)
- * @property {Boolean} foot-border-top 是否显示底部的上边框(默认true)
- * @property {Boolean} show-head 是否显示头部(默认true)
- * @property {Boolean} show-head 是否显示尾部(默认true)
- * @property {String} thumb 缩略图路径,如设置将显示在标题的左边,不建议使用相对路径
- * @property {String | Number} thumb-width 缩略图的宽度,高等于宽,单位rpx(默认60)
- * @property {Boolean} thumb-circle 缩略图是否为圆形(默认false)
- * @event {Function} click 整个卡片任意位置被点击时触发
- * @event {Function} head-click 卡片头部被点击时触发
- * @event {Function} body-click 卡片主体部分被点击时触发
- * @event {Function} foot-click 卡片底部部分被点击时触发
- * @example <u-card padding="30" title="card"></u-card>
- */
-export default {
-	name: 'u-card',
-	props: {
-		// 与屏幕两侧是否留空隙
-		full: {
-			type: Boolean,
-			default: false
-		},
-		// 标题
-		title: {
-			type: String,
-			default: ''
-		},
-		// 标题颜色
-		titleColor: {
-			type: String,
-			default: '#303133'
-		},
-		// 标题字体大小,单位rpx
-		titleSize: {
-			type: [Number, String],
-			default: '30'
-		},
-		// 副标题
-		subTitle: {
-			type: String,
-			default: ''
-		},
-		// 副标题颜色
-		subTitleColor: {
-			type: String,
-			default: '#909399'
-		},
-		// 副标题字体大小,单位rpx
-		subTitleSize: {
-			type: [Number, String],
-			default: '26'
-		},
-		// 是否显示外部边框,只对full=false时有效(卡片与边框有空隙时)
-		border: {
-			type: Boolean,
-			default: true
-		},
-		// 用于标识点击了第几个
-		index: {
-			type: [Number, String, Object],
-			default: ''
-		},
-		// 用于隔开上下左右的边距,带单位的写法,如:"30rpx 30rpx","20rpx 20rpx 30rpx 30rpx"
-		margin: {
-			type: String,
-			default: '30rpx'
-		},
-		// card卡片的圆角
-		borderRadius: {
-			type: [Number, String],
-			default: '16'
-		},
-		// 头部自定义样式,对象形式
-		headStyle: {
-			type: Object,
-			default() {
-				return {};
-			}
-		},
-		// 主体自定义样式,对象形式
-		bodyStyle: {
-			type: Object,
-			default() {
-				return {};
-			}
-		},
-		// 底部自定义样式,对象形式
-		footStyle: {
-			type: Object,
-			default() {
-				return {};
-			}
-		},
-		// 头部是否下边框
-		headBorderBottom: {
-			type: Boolean,
-			default: true
-		},
-		// 底部是否有上边框
-		footBorderTop: {
-			type: Boolean,
-			default: true
-		},
-		// 标题左边的缩略图
-		thumb: {
-			type: String,
-			default: ''
-		},
-		// 缩略图宽高,单位rpx
-		thumbWidth: {
-			type: [String, Number],
-			default: '60'
-		},
-		// 缩略图是否为圆形
-		thumbCircle: {
-			type: Boolean,
-			default: false
-		},
-		// 给head,body,foot的内边距
-		padding: {
-			type: [String, Number],
-			default: '30'
-		},
-		// 是否显示头部
-		showHead: {
-			type: Boolean,
-			default: true
-		},
-		// 是否显示尾部
-		showFoot: {
-			type: Boolean,
-			default: true
-		},
-		// 卡片外围阴影,字符串形式
-		boxShadow: {
-			type: String,
-			default: 'none'
-		}
-	},
-	data() {
-		return {};
-	},
-	methods: {
-		click() {
-			this.$emit('click', this.index);
-		},
-		headClick() {
-			this.$emit('head-click', this.index);
-		},
-		bodyClick() {
-			this.$emit('body-click', this.index);
-		},
-		footClick() {
-			this.$emit('foot-click', this.index);
-		}
-	}
-};
-</script>
-
-<style lang="scss" scoped>
-@import "../../libs/css/style.components.scss";
-	
-.u-card {
-	position: relative;
-	font-size: 28rpx;
-	background-color: #ffffff;
-	box-sizing: border-box;
-	
-	&-full {
-		// 如果是与屏幕之间不留空隙,应该设置左右边距为0
-		margin-left: 0 !important;
-		margin-right: 0 !important;
-		width: 100%;
-	}
-	
-	&--border:after {
-		border-radius: 16rpx;
-	}
-
-	&__head {
-		&--left {
-			color: $u-main-color;
-			
-			&__thumb {
-				margin-right: 16rpx;
-			}
-			
-			&__title {
-				max-width: 400rpx;
-			}
-		}
-
-		&--right {
-			color: $u-tips-color;
-			margin-left: 6rpx;
-		}
-	}
-
-	&__body {
-		color: $u-content-color;
-	}
-
-	&__foot {
-		color: $u-tips-color;
-	}
-}
-</style>
diff --git a/uview-ui/components/u-cell-group/u-cell-group.vue b/uview-ui/components/u-cell-group/u-cell-group.vue
deleted file mode 100644
index 3fbca72..0000000
--- a/uview-ui/components/u-cell-group/u-cell-group.vue
+++ /dev/null
@@ -1,70 +0,0 @@
-<template>
-	<view class="u-cell-box">
-		<view class="u-cell-title" v-if="title" :style="[titleStyle]">
-			{{title}}
-		</view>
-		<view class="u-cell-item-box" :class="{'u-border-bottom u-border-top': border}">
-			<slot />
-		</view>
-	</view>
-</template>
-
-<script>
-	/**
-	 * cellGroup 单元格父组件Group
-	 * @description cell单元格一般用于一组列表的情况,比如个人中心页,设置页等。搭配u-cell-item
-	 * @tutorial https://www.uviewui.com/components/cell.html
-	 * @property {String} title 分组标题
-	 * @property {Boolean} border 是否显示外边框(默认true)
-	 * @property {Object} title-style 分组标题的的样式,对象形式,如{'font-size': '24rpx'} 或 {'fontSize': '24rpx'}
-	 * @example <u-cell-group title="设置喜好">
-	 */
-	export default {
-		name: "u-cell-group",
-		props: {
-			// 分组标题
-			title: {
-				type: String,
-				default: ''
-			},
-			// 是否显示分组list上下边框
-			border: {
-				type: Boolean,
-				default: true
-			},
-			// 分组标题的样式,对象形式,注意驼峰属性写法
-			// 类似 {'font-size': '24rpx'} 和 {'fontSize': '24rpx'}
-			titleStyle: {
-				type: Object,
-				default () {
-					return {};
-				}
-			}
-		},
-		data() {
-			return {
-				index: 0,
-			}
-		},
-	}
-</script>
-
-<style lang="scss" scoped>
-	@import "../../libs/css/style.components.scss";
-	
-	.u-cell-box {
-		width: 100%;
-	}
-
-	.u-cell-title {
-		padding: 30rpx 32rpx 10rpx 32rpx;
-		font-size: 30rpx;
-		text-align: left;
-		color: $u-tips-color;
-	}
-
-	.u-cell-item-box {
-		background-color: #FFFFFF;
-		flex-direction: row;
-	}
-</style>
diff --git a/uview-ui/components/u-cell-item/u-cell-item.vue b/uview-ui/components/u-cell-item/u-cell-item.vue
deleted file mode 100644
index 055af3a..0000000
--- a/uview-ui/components/u-cell-item/u-cell-item.vue
+++ /dev/null
@@ -1,316 +0,0 @@
-<template>
-	<view
-		@tap="click"
-		class="u-cell"
-		:class="{ 'u-border-bottom': borderBottom, 'u-border-top': borderTop, 'u-col-center': center, 'u-cell--required': required }"
-		hover-stay-time="150"
-		:hover-class="hoverClass"
-		:style="{
-			backgroundColor: bgColor
-		}"
-	>
-		<u-icon :size="iconSize" :name="icon" v-if="icon" :custom-style="iconStyle" class="u-cell__left-icon-wrap"></u-icon>
-		<view class="u-flex" v-else>
-			<slot name="icon"></slot>
-		</view>
-		<view
-			class="u-cell_title"
-			:style="[
-				{
-					width: titleWidth ? titleWidth + 'rpx' : 'auto'
-				},
-				titleStyle
-			]"
-		>
-			<block v-if="title !== ''">{{ title }}</block>
-			<slot name="title" v-else></slot>
-
-			<view class="u-cell__label" v-if="label || $slots.label" :style="[labelStyle]">
-				<block v-if="label !== ''">{{ label }}</block>
-				<slot name="label" v-else></slot>
-			</view>
-		</view>
-
-		<view class="u-cell__value" :style="[valueStyle]">
-			<block class="u-cell__value" v-if="value !== ''">{{ value }}</block>
-			<slot v-else></slot>
-		</view>
-		<view class="u-flex u-cell_right" v-if="$slots['right-icon']">
-			<slot name="right-icon"></slot>
-		</view>
-		<u-icon v-if="arrow" name="arrow-right" :style="[arrowStyle]" class="u-icon-wrap u-cell__right-icon-wrap"></u-icon>
-	</view>
-</template>
-
-<script>
-/**
- * cellItem 单元格Item
- * @description cell单元格一般用于一组列表的情况,比如个人中心页,设置页等。搭配u-cell-group使用
- * @tutorial https://www.uviewui.com/components/cell.html
- * @property {String} title 左侧标题
- * @property {String} icon 左侧图标名,只支持uView内置图标,见Icon 图标
- * @property {Object} icon-style 左边图标的样式,对象形式
- * @property {String} value 右侧内容
- * @property {String} label 标题下方的描述信息
- * @property {Boolean} border-bottom 是否显示cell的下边框(默认true)
- * @property {Boolean} border-top 是否显示cell的上边框(默认false)
- * @property {Boolean} center 是否使内容垂直居中(默认false)
- * @property {String} hover-class 是否开启点击反馈,none为无效果(默认true)
- * // @property {Boolean} border-gap border-bottom为true时,Cell列表中间的条目的下边框是否与左边有一个间隔(默认true)
- * @property {Boolean} arrow 是否显示右侧箭头(默认true)
- * @property {Boolean} required 箭头方向,可选值(默认right)
- * @property {Boolean} arrow-direction 是否显示左边表示必填的星号(默认false)
- * @property {Object} title-style 标题样式,对象形式
- * @property {Object} value-style 右侧内容样式,对象形式
- * @property {Object} label-style 标题下方描述信息的样式,对象形式
- * @property {String} bg-color 背景颜色(默认transparent)
- * @property {String Number} index 用于在click事件回调中返回,标识当前是第几个Item
- * @property {String Number} title-width 标题的宽度,单位rpx
- * @example <u-cell-item icon="integral-fill" title="会员等级" value="新版本"></u-cell-item>
- */
-export default {
-	name: 'u-cell-item',
-	props: {
-		// 左侧图标名称(只能uView内置图标),或者图标src
-		icon: {
-			type: String,
-			default: ''
-		},
-		// 左侧标题
-		title: {
-			type: [String, Number],
-			default: ''
-		},
-		// 右侧内容
-		value: {
-			type: [String, Number],
-			default: ''
-		},
-		// 标题下方的描述信息
-		label: {
-			type: [String, Number],
-			default: ''
-		},
-		// 是否显示下边框
-		borderBottom: {
-			type: Boolean,
-			default: true
-		},
-		// 是否显示上边框
-		borderTop: {
-			type: Boolean,
-			default: false
-		},
-		// 多个cell中,中间的cell显示下划线时,下划线是否给一个到左边的距离
-		// 1.4.0版本废除此参数,默认边框由border-top和border-bottom提供,此参数会造成干扰
-		// borderGap: {
-		// 	type: Boolean,
-		// 	default: true
-		// },
-		// 是否开启点击反馈,即点击时cell背景为灰色,none为无效果
-		hoverClass: {
-			type: String,
-			default: 'u-cell-hover'
-		},
-		// 是否显示右侧箭头
-		arrow: {
-			type: Boolean,
-			default: true
-		},
-		// 内容是否垂直居中
-		center: {
-			type: Boolean,
-			default: false
-		},
-		// 是否显示左边表示必填的星号
-		required: {
-			type: Boolean,
-			default: false
-		},
-		// 标题的宽度,单位rpx
-		titleWidth: {
-			type: [Number, String],
-			default: ''
-		},
-		// 右侧箭头方向,可选值:right|up|down,默认为right
-		arrowDirection: {
-			type: String,
-			default: 'right'
-		},
-		// 控制标题的样式
-		titleStyle: {
-			type: Object,
-			default() {
-				return {};
-			}
-		},
-		// 右侧显示内容的样式
-		valueStyle: {
-			type: Object,
-			default() {
-				return {};
-			}
-		},
-		// 描述信息的样式
-		labelStyle: {
-			type: Object,
-			default() {
-				return {};
-			}
-		},
-		// 背景颜色
-		bgColor: {
-			type: String,
-			default: 'transparent'
-		},
-		// 用于识别被点击的是第几个cell
-		index: {
-			type: [String, Number],
-			default: ''
-		},
-		// 是否使用lable插槽
-		useLabelSlot: {
-			type: Boolean,
-			default: false
-		},
-		// 左边图标的大小,单位rpx,只对传入icon字段时有效
-		iconSize: {
-			type: [Number, String],
-			default: 34
-		},
-		// 左边图标的样式,对象形式
-		iconStyle: {
-			type: Object,
-			default() {
-				return {}
-			}
-		},
-	},
-	data() {
-		return {
-
-		};
-	},
-	computed: {
-		arrowStyle() {
-			let style = {};
-			if (this.arrowDirection == 'up') style.transform = 'rotate(-90deg)';
-			else if (this.arrowDirection == 'down') style.transform = 'rotate(90deg)';
-			else style.transform = 'rotate(0deg)';
-			return style;
-		}
-	},
-	methods: {
-		click() {
-			this.$emit('click', this.index);
-		}
-	}
-};
-</script>
-
-<style lang="scss" scoped>
-@import "../../libs/css/style.components.scss";
-.u-cell {
-	@include vue-flex;
-	align-items: center;
-	position: relative;
-	/* #ifndef APP-NVUE */
-	box-sizing: border-box;
-	/* #endif */
-	width: 100%;
-	padding: 26rpx 32rpx;
-	font-size: 28rpx;
-	line-height: 54rpx;
-	color: $u-content-color;
-	background-color: #fff;
-	text-align: left;
-}
-
-.u-cell_title {
-	font-size: 28rpx;
-}
-
-.u-cell__left-icon-wrap {
-	margin-right: 10rpx;
-	font-size: 32rpx;
-}
-
-.u-cell__right-icon-wrap {
-	margin-left: 10rpx;
-	color: #969799;
-	font-size: 28rpx;
-}
-
-.u-cell__left-icon-wrap,
-.u-cell__right-icon-wrap {
-	@include vue-flex;
-	align-items: center;
-	height: 48rpx;
-}
-
-.u-cell-border:after {
-	position: absolute; 
-	/* #ifndef APP-NVUE */
-	box-sizing: border-box;
-	content: ' ';
-	pointer-events: none;
-	border-bottom: 1px solid $u-border-color;
-	/* #endif */
-	right: 0;
-	left: 0;
-	top: 0;
-	transform: scaleY(0.5);
-}
-
-.u-cell-border {
-	position: relative;
-}
-
-.u-cell__label {
-	margin-top: 6rpx;
-	font-size: 26rpx;
-	line-height: 36rpx;
-	color: $u-tips-color;
-	/* #ifndef APP-NVUE */
-	word-wrap: break-word;
-	/* #endif */
-}
-
-.u-cell__value {
-	overflow: hidden;
-	text-align: right;
-	/* #ifndef APP-NVUE */
-	vertical-align: middle;
-	/* #endif */
-	color: $u-tips-color;
-	font-size: 26rpx;
-}
-
-.u-cell__title,
-.u-cell__value {
-	flex: 1;
-}
-
-.u-cell--required {
-	/* #ifndef APP-NVUE */
-	overflow: visible;
-	/* #endif */
-	@include vue-flex;
-	align-items: center;
-}
-
-.u-cell--required:before {
-	position: absolute;
-	/* #ifndef APP-NVUE */
-	content: '*';
-	/* #endif */
-	left: 8px;
-	margin-top: 4rpx;
-	font-size: 14px;
-	color: $u-type-error;
-}
-
-.u-cell_right {
-	line-height: 1;
-}
-</style>
diff --git a/uview-ui/components/u-checkbox-group/u-checkbox-group.vue b/uview-ui/components/u-checkbox-group/u-checkbox-group.vue
deleted file mode 100644
index 6a149b3..0000000
--- a/uview-ui/components/u-checkbox-group/u-checkbox-group.vue
+++ /dev/null
@@ -1,123 +0,0 @@
-<template>
-	<view class="u-checkbox-group u-clearfix">
-		<slot></slot>
-	</view>
-</template>
-
-<script>
-	import Emitter from '../../libs/util/emitter.js';
-	/**
-	 * checkboxGroup 开关选择器父组件Group
-	 * @description 复选框组件一般用于需要多个选择的场景,该组件功能完整,使用方便
-	 * @tutorial https://www.uviewui.com/components/checkbox.html
-	 * @property {String Number} max 最多能选中多少个checkbox(默认999)
-	 * @property {String Number} size 组件整体的大小,单位rpx(默认40)
-	 * @property {Boolean} disabled 是否禁用所有checkbox(默认false)
-	 * @property {String Number} icon-size 图标大小,单位rpx(默认20)
-	 * @property {Boolean} label-disabled 是否禁止点击文本操作checkbox(默认false)
-	 * @property {String} width 宽度,需带单位
-	 * @property {String} width 宽度,需带单位
-	 * @property {String} shape 外观形状,shape-方形,circle-圆形(默认circle)
-	 * @property {Boolean} wrap 是否每个checkbox都换行(默认false)
-	 * @property {String} active-color 选中时的颜色,应用到所有子Checkbox组件(默认#2979ff)
-	 * @event {Function} change 任一个checkbox状态发生变化时触发,回调为一个对象
-	 * @example <u-checkbox-group></u-checkbox-group>
-	 */
-	export default {
-		name: 'u-checkbox-group',
-		mixins: [Emitter],
-		props: {
-			// 最多能选中多少个checkbox
-			max: {
-				type: [Number, String],
-				default: 999
-			},
-			// 所有选中项的 name
-			// value: {
-			// 	default: Array,
-			// 	default() {
-			// 		return []
-			// 	}
-			// },
-			// 是否禁用所有复选框
-			disabled: {
-				type: Boolean,
-				default: false
-			},
-			// 在表单内提交时的标识符
-			name: {
-				type: [Boolean, String],
-				default: ''
-			},
-			// 是否禁止点击提示语选中复选框
-			labelDisabled: {
-				type: Boolean,
-				default: false
-			},
-			// 形状,square为方形,circle为原型
-			shape: {
-				type: String,
-				default: 'square'
-			},
-			// 选中状态下的颜色
-			activeColor: {
-				type: String,
-				default: '#2979ff'
-			},
-			// 组件的整体大小
-			size: {
-				type: [String, Number],
-				default: 34
-			},
-			// 每个checkbox占u-checkbox-group的宽度
-			width: {
-				type: String,
-				default: 'auto'
-			},
-			// 是否每个checkbox都换行
-			wrap: { 
-				type: Boolean,
-				default: false
-			},
-			// 图标的大小,单位rpx
-			iconSize: {
-				type: [String, Number],
-				default: 20
-			},
-		},
-		data() {
-			return {
-			}
-		},
-		created() {
-			// 如果将children定义在data中,在微信小程序会造成循环引用而报错
-			this.children = [];
-		},
-		methods: {
-			emitEvent() {
-				let values = [];
-				this.children.map(val => {
-					if(val.value) values.push(val.name);
-				})
-				this.$emit('change', values);
-				// 发出事件,用于在表单组件中嵌入checkbox的情况,进行验证
-				// 由于头条小程序执行迟钝,故需要用几十毫秒的延时
-				setTimeout(() => {
-					// 将当前的值发送到 u-form-item 进行校验
-					this.dispatch('u-form-item', 'on-form-change', values);
-				}, 60)
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	@import "../../libs/css/style.components.scss";
-
-	.u-checkbox-group {
-		/* #ifndef MP || APP-NVUE */
-		display: inline-flex;
-		flex-wrap: wrap;
-		/* #endif */
-	}
-</style>
diff --git a/uview-ui/components/u-checkbox/u-checkbox.vue b/uview-ui/components/u-checkbox/u-checkbox.vue
deleted file mode 100644
index 9414461..0000000
--- a/uview-ui/components/u-checkbox/u-checkbox.vue
+++ /dev/null
@@ -1,284 +0,0 @@
-<template>
-	<view class="u-checkbox" :style="[checkboxStyle]">
-		<view class="u-checkbox__icon-wrap" @tap="toggle" :class="[iconClass]" :style="[iconStyle]">
-			<u-icon class="u-checkbox__icon-wrap__icon" name="checkbox-mark" :size="checkboxIconSize" :color="iconColor"/>
-		</view>
-		<view class="u-checkbox__label" @tap="onClickLabel" :style="{
-			fontSize: $u.addUnit(labelSize)
-		}">
-			<slot />
-		</view>
-	</view>
-</template>
-
-<script>
-	/**
-	 * checkbox 复选框
-	 * @description 该组件需要搭配checkboxGroup组件使用,以便用户进行操作时,获得当前复选框组的选中情况。
-	 * @tutorial https://www.uviewui.com/components/checkbox.html
-	 * @property {String Number} icon-size 图标大小,单位rpx(默认20)
-	 * @property {String Number} label-size label字体大小,单位rpx(默认28)
-	 * @property {String Number} name checkbox组件的标示符
-	 * @property {String} shape 形状,见官网说明(默认circle)
-	 * @property {Boolean} disabled 是否禁用
-	 * @property {Boolean} label-disabled 是否禁止点击文本操作checkbox
-	 * @property {String} active-color 选中时的颜色,如设置CheckboxGroup的active-color将失效
-	 * @event {Function} change 某个checkbox状态发生变化时触发,回调为一个对象
-	 * @example <u-checkbox v-model="checked" :disabled="false">天涯</u-checkbox>
-	 */
-	export default {
-		name: "u-checkbox",
-		props: {
-			// checkbox的名称
-			name: {
-				type: [String, Number],
-				default: ''
-			},
-			// 形状,square为方形,circle为原型
-			shape: {
-				type: String,
-				default: ''
-			},
-			// 是否为选中状态
-			value: {
-				type: Boolean,
-				default: false
-			},
-			// 是否禁用
-			disabled: {
-				type: [String, Boolean],
-				default: ''
-			},
-			// 是否禁止点击提示语选中复选框
-			labelDisabled: {
-				type: [String, Boolean],
-				default: ''
-			},
-			// 选中状态下的颜色,如设置此值,将会覆盖checkboxGroup的activeColor值
-			activeColor: {
-				type: String,
-				default: ''
-			},
-			// 图标的大小,单位rpx
-			iconSize: {
-				type: [String, Number],
-				default: ''
-			},
-			// label的字体大小,rpx单位
-			labelSize: {
-				type: [String, Number],
-				default: ''
-			},
-			// 组件的整体大小
-			size: {
-				type: [String, Number],
-				default: ''
-			},
-		},
-		data() {
-			return {
-				parentDisabled: false,
-				newParams: {},
-			};
-		},
-		created() {
-			// 支付宝小程序不支持provide/inject,所以使用这个方法获取整个父组件,在created定义,避免循环应用
-			this.parent = this.$u.$parent.call(this, 'u-checkbox-group');
-			// 如果存在u-checkbox-group,将本组件的this塞进父组件的children中
-			this.parent && this.parent.children.push(this);
-		},
-		computed: {
-			// 是否禁用,如果父组件u-checkbox-group禁用的话,将会忽略子组件的配置
-			isDisabled() {
-				return this.disabled !== '' ? this.disabled : this.parent ? this.parent.disabled : false;
-			},
-			// 是否禁用label点击
-			isLabelDisabled() {
-				return this.labelDisabled !== '' ? this.labelDisabled : this.parent ? this.parent.labelDisabled : false;
-			},
-			// 组件尺寸,对应size的值,默认值为34rpx
-			checkboxSize() {
-				return this.size ? this.size : (this.parent ? this.parent.size : 34);
-			},
-			// 组件的勾选图标的尺寸,默认20
-			checkboxIconSize() {
-				return this.iconSize ? this.iconSize : (this.parent ? this.parent.iconSize : 20);
-			},
-			// 组件选中激活时的颜色
-			elActiveColor() {
-				return this.activeColor ? this.activeColor : (this.parent ? this.parent.activeColor : 'primary');
-			},
-			// 组件的形状
-			elShape() {
-				return this.shape ? this.shape : (this.parent ? this.parent.shape : 'square');
-			},
-			iconStyle() {
-				let style = {};
-				// 既要判断是否手动禁用,还要判断用户v-model绑定的值,如果绑定为false,那么也无法选中
-				if (this.elActiveColor && this.value && !this.isDisabled) {
-					style.borderColor = this.elActiveColor; 
-					style.backgroundColor = this.elActiveColor;
-				}
-				style.width = this.$u.addUnit(this.checkboxSize);
-				style.height = this.$u.addUnit(this.checkboxSize);
-				return style;
-			},
-			// checkbox内部的勾选图标,如果选中状态,为白色,否则为透明色即可
-			iconColor() {
-				return this.value ? '#ffffff' : 'transparent';
-			},
-			iconClass() {
-				let classes = [];
-				classes.push('u-checkbox__icon-wrap--' + this.elShape);
-				if (this.value == true) classes.push('u-checkbox__icon-wrap--checked');
-				if (this.isDisabled) classes.push('u-checkbox__icon-wrap--disabled');
-				if (this.value && this.isDisabled) classes.push('u-checkbox__icon-wrap--disabled--checked');
-				// 支付宝小程序无法动态绑定一个数组类名,否则解析出来的结果会带有",",而导致失效
-				return classes.join(' ');
-			},
-			checkboxStyle() {
-				let style = {};
-				if(this.parent && this.parent.width) {
-					style.width = this.parent.width;
-					// #ifdef MP
-					// 各家小程序因为它们特殊的编译结构,使用float布局
-					style.float = 'left';
-					// #endif
-					// #ifndef MP
-					// H5和APP使用flex布局
-					style.flex = `0 0 ${this.parent.width}`;
-					// #endif
-				}
-				if(this.parent && this.parent.wrap) {
-					style.width = '100%';
-					// #ifndef MP
-					// H5和APP使用flex布局,将宽度设置100%,即可自动换行
-					style.flex = '0 0 100%';
-					// #endif
-				}
-				return style;
-			}
-		},
-		methods: {
-			onClickLabel() {
-				if (!this.isLabelDisabled && !this.isDisabled) {
-					this.setValue();
-				}
-			},
-			toggle() {
-				if (!this.isDisabled) {
-					this.setValue();
-				}
-			},
-			emitEvent() {
-				this.$emit('change', {
-					value: !this.value,
-					name: this.name
-				})
-				// 执行父组件u-checkbox-group的事件方法
-				// 等待下一个周期再执行,因为this.$emit('input')作用于父组件,再反馈到子组件内部,需要时间
-				setTimeout(() => {
-					if(this.parent && this.parent.emitEvent) this.parent.emitEvent();
-				}, 80);
-			},
-			// 设置input的值,这里通过input事件,设置通过v-model绑定的组件的值
-			setValue() {
-				// 判断是否超过了可选的最大数量
-				let checkedNum = 0;
-				if(this.parent && this.parent.children) {
-					// 只要父组件的某一个子元素的value为true,就加1(已有的选中数量)
-					this.parent.children.map(val => {
-						if (val.value) checkedNum++;
-					})
-				}
-				// 如果原来为选中状态,那么可以取消
-				if (this.value == true) {
-					this.emitEvent();
-					this.$emit('input', !this.value);
-				} else {
-					// 如果超出最多可选项,提示
-					if(this.parent && checkedNum >= this.parent.max) {
-						return this.$u.toast(`最多可选${this.parent.max}项`);
-					}
-					// 如果原来为未选中状态,需要选中的数量少于父组件中设置的max值,才可以选中
-					this.emitEvent();
-					this.$emit('input', !this.value);
-				}
-			}
-		}
-	};
-</script>
-
-<style lang="scss" scoped>
-	@import "../../libs/css/style.components.scss";
-
-	.u-checkbox {
-		/* #ifndef APP-NVUE */
-		display: inline-flex;
-		/* #endif */
-		align-items: center;
-		overflow: hidden;
-		user-select: none;
-		line-height: 1.8;
-		
-		&__icon-wrap {
-			color: $u-content-color;
-			flex: none;
-			display: -webkit-flex;
-			@include vue-flex;
-			align-items: center;
-			justify-content: center;
-			box-sizing: border-box;
-			width: 42rpx;
-			height: 42rpx;
-			color: transparent;
-			text-align: center;
-			transition-property: color, border-color, background-color;
-			font-size: 20px;
-			border: 1px solid #c8c9cc;
-			transition-duration: 0.2s;
-			
-			/* #ifdef MP-TOUTIAO */
-			// 头条小程序兼容性问题,需要设置行高为0,否则图标偏下
-			&__icon {
-				line-height: 0;
-			}
-			/* #endif */
-			
-			&--circle {
-				border-radius: 100%;
-			}
-			
-			&--square {
-				border-radius: 6rpx;
-			}
-			
-			&--checked {
-				color: #fff;
-				background-color: $u-type-primary;
-				border-color: $u-type-primary;
-			}
-			
-			&--disabled {
-				background-color: #ebedf0;
-				border-color: #c8c9cc;
-			}
-			
-			&--disabled--checked {
-				color: #c8c9cc !important;
-			}
-		}
-	
-		&__label {
-			word-wrap: break-word;
-			margin-left: 10rpx;
-			margin-right: 24rpx;
-			color: $u-content-color;
-			font-size: 30rpx;
-			
-			&--disabled {
-				color: #c8c9cc;
-			}
-		}
-	}
-</style>
diff --git a/uview-ui/components/u-circle-progress/u-circle-progress.vue b/uview-ui/components/u-circle-progress/u-circle-progress.vue
deleted file mode 100644
index 46e7c18..0000000
--- a/uview-ui/components/u-circle-progress/u-circle-progress.vue
+++ /dev/null
@@ -1,220 +0,0 @@
-<template>
-	<view
-		class="u-circle-progress"
-		:style="{
-			width: widthPx + 'px',
-			height: widthPx + 'px',
-			backgroundColor: bgColor
-		}"
-	>
-		<!-- 支付宝小程序不支持canvas-id属性,必须用id属性 -->
-		<canvas
-			class="u-canvas-bg"
-			:canvas-id="elBgId"
-			:id="elBgId"
-			:style="{
-				width: widthPx + 'px',
-				height: widthPx + 'px'
-			}"
-		></canvas>
-		<canvas
-			class="u-canvas"
-			:canvas-id="elId"
-			:id="elId"
-			:style="{
-				width: widthPx + 'px',
-				height: widthPx + 'px'
-			}"
-		></canvas>
-		<slot></slot>
-	</view>
-</template>
-
-<script>
-/**
- * circleProgress 环形进度条
- * @description 展示操作或任务的当前进度,比如上传文件,是一个圆形的进度条。注意:此组件的percent值只能动态增加,不能动态减少。
- * @tutorial https://www.uviewui.com/components/circleProgress.html
- * @property {String Number} percent 圆环进度百分比值,为数值类型,0-100
- * @property {String} inactive-color 圆环的底色,默认为灰色(该值无法动态变更)(默认#ececec)
- * @property {String} active-color 圆环激活部分的颜色(该值无法动态变更)(默认#19be6b)
- * @property {String Number} width 整个圆环组件的宽度,高度默认等于宽度值,单位rpx(默认200)
- * @property {String Number} border-width 圆环的边框宽度,单位rpx(默认14)
- * @property {String Number} duration 整个圆环执行一圈的时间,单位ms(默认呢1500)
- * @property {String} type 如设置,active-color值将会失效
- * @property {String} bg-color 整个组件背景颜色,默认为白色
- * @example <u-circle-progress active-color="#2979ff" :percent="80"></u-circle-progress>
- */
-export default {
-	name: 'u-circle-progress',
-	props: {
-		// 圆环进度百分比值
-		percent: {
-			type: Number,
-			default: 0,
-			// 限制值在0到100之间
-			validator: val => {
-				return val >= 0 && val <= 100;
-			}
-		},
-		// 底部圆环的颜色(灰色的圆环)
-		inactiveColor: {
-			type: String,
-			default: '#ececec'
-		},
-		// 圆环激活部分的颜色
-		activeColor: {
-			type: String,
-			default: '#19be6b'
-		},
-		// 圆环线条的宽度,单位rpx
-		borderWidth: {
-			type: [Number, String],
-			default: 14
-		},
-		// 整个圆形的宽度,单位rpx
-		width: {
-			type: [Number, String],
-			default: 200
-		},
-		// 整个圆环执行一圈的时间,单位ms
-		duration: {
-			type: [Number, String],
-			default: 1500
-		},
-		// 主题类型
-		type: {
-			type: String,
-			default: ''
-		},
-		// 整个圆环进度区域的背景色
-		bgColor: {
-			type: String,
-			default: '#ffffff'
-		}
-	},
-	data() {
-		return {
-			// #ifdef MP-WEIXIN
-			elBgId: 'uCircleProgressBgId', // 微信小程序中不能使用this.$u.guid()形式动态生成id值,否则会报错
-			elId: 'uCircleProgressElId',
-			// #endif
-			// #ifndef MP-WEIXIN
-			elBgId: this.$u.guid(), // 非微信端的时候,需用动态的id,否则一个页面多个圆形进度条组件数据会混乱
-			elId: this.$u.guid(),
-			// #endif
-			widthPx: uni.upx2px(this.width), // 转成px后的整个组件的背景宽度
-			borderWidthPx: uni.upx2px(this.borderWidth), // 转成px后的圆环的宽度
-			startAngle: -Math.PI / 2, // canvas画圆的起始角度,默认为3点钟方向,定位到12点钟方向
-			progressContext: null, // 活动圆的canvas上下文
-			newPercent: 0, // 当动态修改进度值的时候,保存进度值的变化前后值,用于比较用
-			oldPercent: 0 // 当动态修改进度值的时候,保存进度值的变化前后值,用于比较用
-		};
-	},
-	watch: {
-		percent(nVal, oVal = 0) {
-			if (nVal > 100) nVal = 100;
-			if (nVal < 0) oVal = 0;
-			// 此值其实等于this.percent,命名一个新
-			this.newPercent = nVal;
-			this.oldPercent = oVal;
-			setTimeout(() => {
-				// 无论是百分比值增加还是减少,需要操作还是原来的旧的百分比值
-				// 将此值减少或者新增到新的百分比值
-				this.drawCircleByProgress(oVal);
-			}, 50);
-		}
-	},
-	created() {
-		// 赋值,用于加载后第一个画圆使用
-		this.newPercent = this.percent;
-		this.oldPercent = 0;
-	},
-	computed: {
-		// 有type主题时,优先起作用
-		circleColor() {
-			if (['success', 'error', 'info', 'primary', 'warning'].indexOf(this.type) >= 0) return this.$u.color[this.type];
-			else return this.activeColor;
-		}
-	},
-	mounted() {
-		// 在h5端,必须要做一点延时才起作用,this.$nextTick()无效(HX2.4.7)
-		setTimeout(() => {
-			this.drawProgressBg();
-			this.drawCircleByProgress(this.oldPercent);
-		}, 50);
-	},
-	methods: {
-		drawProgressBg() {
-			let ctx = uni.createCanvasContext(this.elBgId, this);
-			ctx.setLineWidth(this.borderWidthPx); // 设置圆环宽度
-			ctx.setStrokeStyle(this.inactiveColor); // 线条颜色
-			ctx.beginPath(); // 开始描绘路径
-			// 设置一个原点(110,110),半径为100的圆的路径到当前路径
-			let radius = this.widthPx / 2;
-			ctx.arc(radius, radius, radius - this.borderWidthPx, 0, 2 * Math.PI, false);
-			ctx.stroke(); // 对路径进行描绘
-			ctx.draw();
-		},
-		drawCircleByProgress(progress) {
-			// 第一次操作进度环时将上下文保存到了this.data中,直接使用即可
-			let ctx = this.progressContext;
-			if (!ctx) {
-				ctx = uni.createCanvasContext(this.elId, this);
-				this.progressContext = ctx;
-			}
-			// 表示进度的两端为圆形
-			ctx.setLineCap('round');
-			// 设置线条的宽度和颜色
-			ctx.setLineWidth(this.borderWidthPx);
-			ctx.setStrokeStyle(this.circleColor);
-			// 将总过渡时间除以100,得出每修改百分之一进度所需的时间
-			let time = Math.floor(this.duration / 100);
-			// 结束角的计算依据为:将2π分为100份,乘以当前的进度值,得出终止点的弧度值,加起始角,为整个圆从默认的
-			// 3点钟方向开始画图,转为更好理解的12点钟方向开始作图,这需要起始角和终止角同时加上this.startAngle值
-			let endAngle = ((2 * Math.PI) / 100) * progress + this.startAngle;
-			ctx.beginPath();
-			// 半径为整个canvas宽度的一半
-			let radius = this.widthPx / 2;
-			ctx.arc(radius, radius, radius - this.borderWidthPx, this.startAngle, endAngle, false);
-			ctx.stroke();
-			ctx.draw();
-			// 如果变更后新值大于旧值,意味着增大了百分比
-			if (this.newPercent > this.oldPercent) {
-				// 每次递增百分之一
-				progress++;
-				// 如果新增后的值,大于需要设置的值百分比值,停止继续增加
-				if (progress > this.newPercent) return;
-			} else {
-				// 同理于上面
-				progress--;
-				if (progress < this.newPercent) return;
-			}
-			setTimeout(() => {
-				// 定时器,每次操作间隔为time值,为了让进度条有动画效果
-				this.drawCircleByProgress(progress);
-			}, time);
-		}
-	}
-};
-</script>
-
-<style lang="scss" scoped>
-@import "../../libs/css/style.components.scss";
-.u-circle-progress {
-	position: relative;
-	/* #ifndef APP-NVUE */
-	display: inline-flex;		
-	/* #endif */
-	align-items: center;
-	justify-content: center;
-}
-
-.u-canvas-bg {
-	position: absolute;
-}
-
-.u-canvas {
-	position: absolute;
-}
-</style>
diff --git a/uview-ui/components/u-circle-progress/u-line-progress/u-line-progress.vue b/uview-ui/components/u-circle-progress/u-line-progress/u-line-progress.vue
deleted file mode 100644
index 77e2da2..0000000
--- a/uview-ui/components/u-circle-progress/u-line-progress/u-line-progress.vue
+++ /dev/null
@@ -1,147 +0,0 @@
-<template>
-	<view class="u-progress" :style="{
-		borderRadius: round ? '100rpx' : 0,
-		height: height + 'rpx',
-		backgroundColor: inactiveColor
-	}">
-		<view :class="[
-			type ? `u-type-${type}-bg` : '',
-			striped ? 'u-striped' : '',
-			striped && stripedActive ? 'u-striped-active' : ''
-		]" class="u-active" :style="[progressStyle]">
-			<slot v-if="$slots.default || $slots.$default" />
-			<block v-else-if="showPercent">
-				{{percent + '%'}}
-			</block>
-		</view>
-	</view>
-</template>
-
-<script>
-	/**
-	 * lineProgress 线型进度条
-	 * @description 展示操作或任务的当前进度,比如上传文件,是一个线形的进度条。
-	 * @tutorial https://www.uviewui.com/components/lineProgress.html
-	 * @property {String Number} percent 进度条百分比值,为数值类型,0-100
-	 * @property {Boolean} round 进度条两端是否为半圆(默认true)
-	 * @property {String} type 如设置,active-color值将会失效
-	 * @property {String} active-color 进度条激活部分的颜色(默认#19be6b)
-	 * @property {String} inactive-color 进度条的底色(默认#ececec)
-	 * @property {Boolean} show-percent 是否在进度条内部显示当前的百分比值数值(默认true)
-	 * @property {String Number} height 进度条的高度,单位rpx(默认28)
-	 * @property {Boolean} striped 是否显示进度条激活部分的条纹(默认false)
-	 * @property {Boolean} striped-active 条纹是否具有动态效果(默认false)
-	 * @example <u-line-progress :percent="70" :show-percent="true"></u-line-progress>
-	 */
-	export default {
-		name: "u-line-progress",
-		props: {
-			// 两端是否显示半圆形
-			round: {
-				type: Boolean,
-				default: true
-			},
-			// 主题颜色
-			type: {
-				type: String,
-				default: ''
-			},
-			// 激活部分的颜色
-			activeColor: {
-				type: String,
-				default: '#19be6b'
-			},
-			inactiveColor: {
-				type: String,
-				default: '#ececec'
-			},
-			// 进度百分比,数值
-			percent: {
-				type: Number,
-				default: 0
-			},
-			// 是否在进度条内部显示百分比的值
-			showPercent: {
-				type: Boolean,
-				default: true
-			},
-			// 进度条的高度,单位rpx
-			height: {
-				type: [Number, String],
-				default: 28
-			},
-			// 是否显示条纹
-			striped: {
-				type: Boolean,
-				default: false
-			},
-			// 条纹是否显示活动状态
-			stripedActive: {
-				type: Boolean,
-				default: false
-			}
-		},
-		data() {
-			return {
-
-			}
-		},
-		computed: {
-			progressStyle() {
-				let style = {};
-				style.width = this.percent + '%';
-				if(this.activeColor) style.backgroundColor = this.activeColor;
-				return style;
-			}
-		},
-		methods: {
-
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	@import "../../libs/css/style.components.scss";
-	
-	.u-progress {
-		overflow: hidden;
-		height: 15px;
-		/* #ifndef APP-NVUE */
-		display: inline-flex;
-		/* #endif */
-		align-items: center;
-		width: 100%;
-		border-radius: 100rpx;
-	}
-
-	.u-active {
-		width: 0;
-		height: 100%;
-		align-items: center;
-		@include vue-flex;
-		justify-items: flex-end;
-		justify-content: space-around;
-		font-size: 20rpx;
-		color: #ffffff;
-		transition: all 0.4s ease;
-	}
-
-	.u-striped {
-		background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-		background-size: 39px 39px;
-	}
-
-	.u-striped-active {
-		animation: progress-stripes 2s linear infinite;
-	}
-
-	@keyframes progress-stripes {
-		0% {
-			background-position: 0 0;
-		}
-
-		100% {
-			background-position: 39px 0;
-		}
-	}
-</style>
diff --git a/uview-ui/components/u-col/u-col.vue b/uview-ui/components/u-col/u-col.vue
deleted file mode 100644
index 3b6cc64..0000000
--- a/uview-ui/components/u-col/u-col.vue
+++ /dev/null
@@ -1,156 +0,0 @@
-<template>
-	<view class="u-col" :class="[
-		'u-col-' + span
-	]" :style="{
-		padding: `0 ${Number(gutter)/2 + 'rpx'}`,
-		marginLeft: 100 / 12 * offset + '%',
-		flex: `0 0 ${100 / 12 * span}%`,
-		alignItems: uAlignItem,
-		justifyContent: uJustify,
-		textAlign: textAlign
-	}"
-	 @tap="click">
-		<slot></slot>
-	</view>
-</template>
-
-<script>
-	/**
-	 * col 布局单元格
-	 * @description 通过基础的 12 分栏,迅速简便地创建布局(搭配<u-row>使用)
-	 * @tutorial https://www.uviewui.com/components/layout.html
-	 * @property {String Number} span 栅格占据的列数,总12等分(默认0)
-	 * @property {String} text-align 文字水平对齐方式(默认left)
-	 * @property {String Number} offset 分栏左边偏移,计算方式与span相同(默认0)
-	 * @example <u-col span="3"><view class="demo-layout bg-purple"></view></u-col>
-	 */
-	export default {
-		name: "u-col",
-		props: {
-			// 占父容器宽度的多少等分,总分为12份
-			span: {
-				type: [Number, String],
-				default: 12
-			},
-			// 指定栅格左侧的间隔数(总12栏)
-			offset: {
-				type: [Number, String],
-				default: 0
-			},
-			// 水平排列方式,可选值为`start`(或`flex-start`)、`end`(或`flex-end`)、`center`、`around`(或`space-around`)、`between`(或`space-between`)
-			justify: {
-				type: String,
-				default: 'start'
-			},
-			// 垂直对齐方式,可选值为top、center、bottom
-			align: {
-				type: String,
-				default: 'center'
-			},
-			// 文字对齐方式
-			textAlign: {
-				type: String,
-				default: 'left'
-			},
-			// 是否阻止事件传播
-			stop: {
-				type: Boolean,
-				default: true
-			}
-		},
-		data() {
-			return {
-				gutter: 20, // 给col添加间距,左右边距各占一半,从父组件u-row获取
-			}
-		},
-		created() {
-			this.parent = false;
-		},
-		mounted() {
-			// 获取父组件实例,并赋值给对应的参数
-			this.parent = this.$u.$parent.call(this, 'u-row');
-			if (this.parent) {
-				this.gutter = this.parent.gutter;
-			}
-		},
-		computed: {
-			uJustify() {
-				if (this.justify == 'end' || this.justify == 'start') return 'flex-' + this.justify;
-				else if (this.justify == 'around' || this.justify == 'between') return 'space-' + this.justify;
-				else return this.justify;
-			},
-			uAlignItem() {
-				if (this.align == 'top') return 'flex-start';
-				if (this.align == 'bottom') return 'flex-end';
-				else return this.align;
-			}
-		},
-		methods: {
-			click(e) {
-				this.$emit('click');
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	@import "../../libs/css/style.components.scss";
-
-	.u-col {
-		/* #ifdef MP-WEIXIN || MP-QQ || MP-TOUTIAO */
-		float: left;
-		/* #endif */
-	}
-
-	.u-col-0 {
-		width: 0;
-	}
-
-	.u-col-1 {
-		width: calc(100%/12);
-	}
-
-	.u-col-2 {
-		width: calc(100%/12 * 2);
-	}
-
-	.u-col-3 {
-		width: calc(100%/12 * 3);
-	}
-
-	.u-col-4 {
-		width: calc(100%/12 * 4);
-	}
-
-	.u-col-5 {
-		width: calc(100%/12 * 5);
-	}
-
-	.u-col-6 {
-		width: calc(100%/12 * 6);
-	}
-
-	.u-col-7 {
-		width: calc(100%/12 * 7);
-	}
-
-	.u-col-8 {
-		width: calc(100%/12 * 8);
-	}
-
-	.u-col-9 {
-		width: calc(100%/12 * 9);
-	}
-
-	.u-col-10 {
-		width: calc(100%/12 * 10);
-	}
-
-	.u-col-11 {
-		width: calc(100%/12 * 11);
-	}
-
-	.u-col-12 {
-		width: calc(100%/12 * 12);
-	}
-</style>
diff --git a/uview-ui/components/u-collapse-item/u-collapse-item.vue b/uview-ui/components/u-collapse-item/u-collapse-item.vue
deleted file mode 100644
index 3b66bfa..0000000
--- a/uview-ui/components/u-collapse-item/u-collapse-item.vue
+++ /dev/null
@@ -1,204 +0,0 @@
-<template>
-	<view class="u-collapse-item" :style="[itemStyle]">
-		<view :hover-stay-time="200" class="u-collapse-head" @tap.stop="headClick" :hover-class="hoverClass" :style="[headStyle]">
-			<block v-if="!$slots['title-all']">
-				<view v-if="!$slots['title']" class="u-collapse-title u-line-1" :style="[{ textAlign: align ? align : 'left' },
-					isShow && activeStyle && !arrow ? activeStyle : '']">
-					{{ title }}
-				</view>
-				<slot v-else name="title" />
-				<view class="u-icon-wrap">
-					<u-icon v-if="arrow" :color="arrowColor" :class="{ 'u-arrow-down-icon-active': isShow }"
-					 class="u-arrow-down-icon" name="arrow-down"></u-icon>
-				</view>
-			</block>
-			<slot v-else name="title-all" />
-		</view>
-		<view class="u-collapse-body" :style="[{
-				height: isShow ? height + 'px' : '0'
-			}]">
-			<view class="u-collapse-content" :id="elId" :style="[bodyStyle]">
-				<slot></slot>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	/**
-	 * collapseItem 手风琴Item
-	 * @description 通过折叠面板收纳内容区域(搭配u-collapse使用)
-	 * @tutorial https://www.uviewui.com/components/collapse.html
-	 * @property {String} title 面板标题
-	 * @property {String Number} index 主要用于事件的回调,标识那个Item被点击
-	 * @property {Boolean} disabled 面板是否可以打开或收起(默认false)
-	 * @property {Boolean} open 设置某个面板的初始状态是否打开(默认false)
-	 * @property {String Number} name 唯一标识符,如不设置,默认用当前collapse-item的索引值
-	 * @property {String} align 标题的对齐方式(默认left)
-	 * @property {Object} active-style 不显示箭头时,可以添加当前选择的collapse-item活动样式,对象形式
-	 * @event {Function} change 某个item被打开或者收起时触发
-	 * @example <u-collapse-item :title="item.head" v-for="(item, index) in itemList" :key="index">{{item.body}}</u-collapse-item>
-	 */
-	export default {
-		name: "u-collapse-item",
-		props: {
-			// 标题
-			title: {
-				type: String,
-				default: ''
-			},
-			// 标题的对齐方式
-			align: {
-				type: String,
-				default: 'left'
-			},
-			// 是否可以点击收起
-			disabled: {
-				type: Boolean,
-				default: false
-			},
-			// collapse显示与否
-			open: {
-				type: Boolean,
-				default: false
-			},
-			// 唯一标识符
-			name: {
-				type: [Number, String],
-				default: ''
-			},
-			//活动样式
-			activeStyle: {
-				type: Object,
-				default () {
-					return {}
-				}
-			},
-			// 标识当前为第几个
-			index: {
-				type: [String, Number],
-				default: ''
-			}
-		},
-		data() {
-			return {
-				isShow: false,
-				elId: this.$u.guid(),
-				height: 0, // body内容的高度
-				headStyle: {}, // 头部样式,对象形式
-				bodyStyle: {}, // 主体部分样式
-				itemStyle: {}, // 每个item的整体样式
-				arrowColor: '', // 箭头的颜色
-				hoverClass: '', // 头部按下时的效果样式类
-				arrow: true, // 是否显示右侧箭头
-				
-			};
-		},
-		watch: {
-			open(val) {
-				this.isShow = val;
-			}
-		},
-		created() {
-			this.parent = false;
-			// 获取u-collapse的信息,放在u-collapse是为了方便,不用每个u-collapse-item写一遍
-			this.isShow = this.open;
-		},
-		methods: {
-			// 异步获取内容,或者动态修改了内容时,需要重新初始化
-			init() {
-				this.parent = this.$u.$parent.call(this, 'u-collapse');
-				if(this.parent) {
-					this.nameSync = this.name ? this.name : this.parent.childrens.length;
-					this.parent.childrens.push(this);
-					this.headStyle = this.parent.headStyle;
-					this.bodyStyle = this.parent.bodyStyle;
-					this.arrowColor = this.parent.arrowColor;
-					this.hoverClass = this.parent.hoverClass;
-					this.arrow = this.parent.arrow;
-					this.itemStyle = this.parent.itemStyle;
-				}
-				this.$nextTick(() => {
-					this.queryRect();
-				});
-			},
-			// 点击collapsehead头部
-			headClick() {
-				if (this.disabled) return;
-				if (this.parent && this.parent.accordion == true) {
-					this.parent.childrens.map(val => {
-						// 自身不设置为false,因为后面有this.isShow = !this.isShow;处理了
-						if (this != val) {
-							val.isShow = false;
-						}
-					});
-				}
-
-				this.isShow = !this.isShow;
-				// 触发本组件的事件
-				this.$emit('change', {
-					index: this.index,
-					show: this.isShow
-				})
-				// 只有在打开时才发出事件
-				if (this.isShow) this.parent && this.parent.onChange();
-				this.$forceUpdate();
-			},
-			// 查询内容高度
-			queryRect() {
-				// $uGetRect为uView自带的节点查询简化方法,详见文档介绍:https://www.uviewui.com/js/getRect.html
-				// 组件内部一般用this.$uGetRect,对外的为this.$u.getRect,二者功能一致,名称不同
-				this.$uGetRect('#' + this.elId).then(res => {
-					this.height = res.height;
-				})
-			}
-		},
-		mounted() {
-			this.init();
-		}
-	};
-</script>
-
-<style lang="scss" scoped>
-	@import "../../libs/css/style.components.scss";
-	
-	.u-collapse-head {
-		position: relative;
-		@include vue-flex;
-		justify-content: space-between;
-		align-items: center;
-		color: $u-main-color;
-		font-size: 30rpx;
-		line-height: 1;
-		padding: 24rpx 0;
-		text-align: left;
-	}
-
-	.u-collapse-title {
-		flex: 1;
-		overflow: hidden;
-	}
-
-	.u-arrow-down-icon {
-		transition: all 0.3s;
-		margin-right: 20rpx;
-		margin-left: 14rpx;
-	}
-
-	.u-arrow-down-icon-active {
-		transform: rotate(180deg);
-		transform-origin: center center;
-	}
-
-	.u-collapse-body {
-		overflow: hidden;
-		transition: all 0.3s;
-	}
-
-	.u-collapse-content {
-		overflow: hidden;
-		font-size: 28rpx;
-		color: $u-tips-color;
-		text-align: left;
-	}
-</style>
diff --git a/uview-ui/components/u-collapse/u-collapse.vue b/uview-ui/components/u-collapse/u-collapse.vue
deleted file mode 100644
index 8572957..0000000
--- a/uview-ui/components/u-collapse/u-collapse.vue
+++ /dev/null
@@ -1,99 +0,0 @@
-<template>
-	<view class="u-collapse">
-		<slot />
-	</view>
-</template>
-
-<script>
-	/**
-	 * collapse 手风琴
-	 * @description 通过折叠面板收纳内容区域
-	 * @tutorial https://www.uviewui.com/components/collapse.html
-	 * @property {Boolean} accordion 是否手风琴模式(默认true)
-	 * @property {Boolean} arrow 是否显示标题右侧的箭头(默认true)
-	 * @property {String} arrow-color 标题右侧箭头的颜色(默认#909399)
-	 * @property {Object} head-style 标题自定义样式,对象形式
-	 * @property {Object} body-style 主体自定义样式,对象形式
-	 * @property {String} hover-class 样式类名,按下时有效(默认u-hover-class)
-	 * @event {Function} change 当前激活面板展开时触发(如果是手风琴模式,参数activeNames类型为String,否则为Array)
-	 * @example <u-collapse></u-collapse>
-	 */
-	export default {
-		name:"u-collapse",
-		props: {
-			// 是否手风琴模式
-			accordion: {
-				type: Boolean,
-				default: true
-			},
-			// 头部的样式
-			headStyle: {
-				type: Object,
-				default () {
-					return {}
-				}
-			},
-			// 主体的样式
-			bodyStyle: {
-				type: Object,
-				default () {
-					return {}
-				}
-			},
-			// 每一个item的样式
-			itemStyle: {
-				type: Object,
-				default () {
-					return {}
-				}
-			},
-			// 是否显示右侧的箭头
-			arrow: {
-				type: Boolean,
-				default: true
-			},
-			// 箭头的颜色
-			arrowColor: {
-				type: String,
-				default: '#909399'
-			},
-			// 标题部分按压时的样式类,"none"为无效果
-			hoverClass: {
-				type: String,
-				default: 'u-hover-class'
-			}
-		},
-		created() {
-			this.childrens = []
-		},
-		data() {
-			return {
-
-			}
-		},
-		methods: {
-			// 重新初始化一次内部的所有子元素的高度计算,用于异步获取数据渲染的情况
-			init() {
-				this.childrens.forEach((vm, index) => {
-					vm.init();
-				})
-			},
-			// collapse item被点击,由collapse item调用父组件方法
-			onChange() {
-				let activeItem = [];
-				this.childrens.forEach((vm, index) => {
-					if (vm.isShow) {
-						activeItem.push(vm.nameSync);
-					}
-				})
-				// 如果是手风琴模式,只有一个匹配结果,也即activeItem长度为1,将其转为字符串
-				if (this.accordion) activeItem = activeItem.join('');
-				this.$emit('change', activeItem);
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	@import "../../libs/css/style.components.scss";
-</style>
diff --git a/uview-ui/components/u-column-notice/u-column-notice.vue b/uview-ui/components/u-column-notice/u-column-notice.vue
deleted file mode 100644
index dd8bd31..0000000
--- a/uview-ui/components/u-column-notice/u-column-notice.vue
+++ /dev/null
@@ -1,237 +0,0 @@
-<template>
-	<view
-		class="u-notice-bar"
-		:style="{
-			background: computeBgColor,
-			padding: padding
-		}"
-		:class="[
-			type ? `u-type-${type}-light-bg` : ''
-		]"
-	>
-		<view class="u-icon-wrap">
-			<u-icon class="u-left-icon" v-if="volumeIcon" name="volume-fill" :size="volumeSize" :color="computeColor"></u-icon>
-		</view>
-		<swiper :disable-touch="disableTouch" @change="change" :autoplay="autoplay && playState == 'play'" :vertical="vertical" circular :interval="duration" class="u-swiper">
-			<swiper-item v-for="(item, index) in list" :key="index" class="u-swiper-item">
-				<view
-					class="u-news-item u-line-1"
-					:style="[textStyle]"
-					@tap="click(index)"
-					:class="['u-type-' + type]"
-				>
-					{{ item }}
-				</view>
-			</swiper-item>
-		</swiper>
-		<view class="u-icon-wrap">
-			<u-icon @click="getMore" class="u-right-icon" v-if="moreIcon" name="arrow-right" :size="26" :color="computeColor"></u-icon>
-			<u-icon @click="close" class="u-right-icon" v-if="closeIcon" name="close" :size="24" :color="computeColor"></u-icon>
-		</view>
-	</view>
-</template>
-
-<script>
-export default {
-	props: {
-		// 显示的内容,数组
-		list: {
-			type: Array,
-			default() {
-				return [];
-			}
-		},
-		// 显示的主题,success|error|primary|info|warning
-		type: {
-			type: String,
-			default: 'warning'
-		},
-		// 是否显示左侧的音量图标
-		volumeIcon: {
-			type: Boolean,
-			default: true
-		},
-		// 是否显示右侧的右箭头图标
-		moreIcon: {
-			type: Boolean,
-			default: false
-		},
-		// 是否显示右侧的关闭图标
-		closeIcon: {
-			type: Boolean,
-			default: false
-		},
-		// 是否自动播放
-		autoplay: {
-			type: Boolean,
-			default: true
-		},
-		// 文字颜色,各图标也会使用文字颜色
-		color: {
-			type: String,
-			default: ''
-		},
-		// 背景颜色
-		bgColor: {
-			type: String,
-			default: ''
-		},
-		// 滚动方向,row-水平滚动,column-垂直滚动
-		direction: {
-			type: String,
-			default: 'row'
-		},
-		// 是否显示
-		show: {
-			type: Boolean,
-			default: true
-		},
-		// 字体大小,单位rpx
-		fontSize: {
-			type: [Number, String],
-			default: 26
-		},
-		// 滚动一个周期的时间长,单位ms
-		duration: {
-			type: [Number, String],
-			default: 2000
-		},
-		// 音量喇叭的大小
-		volumeSize: {
-			type: [Number, String],
-			default: 34
-		},
-		// 水平滚动时的滚动速度,即每秒滚动多少rpx,这有利于控制文字无论多少时,都能有一个恒定的速度
-		speed: {
-			type: Number,
-			default: 160
-		},
-		// 水平滚动时,是否采用衔接形式滚动
-		isCircular: {
-			type: Boolean,
-			default: true
-		},
-		// 滚动方向,horizontal-水平滚动,vertical-垂直滚动
-		mode: {
-			type: String,
-			default: 'horizontal'
-		},
-		// 播放状态,play-播放,paused-暂停
-		playState: {
-			type: String,
-			default: 'play'
-		},
-		// 是否禁止用手滑动切换
-		// 目前HX2.6.11,只支持App 2.5.5+、H5 2.5.5+、支付宝小程序、字节跳动小程序
-		disableTouch: {
-			type: Boolean,
-			default: true
-		},
-		// 通知的边距
-		padding: {
-			type: [Number, String],
-			default: '18rpx 24rpx'
-		}
-	},
-	computed: {
-		// 计算字体颜色,如果没有自定义的,就用uview主题颜色
-		computeColor() {
-			if (this.color) return this.color;
-			// 如果是无主题,就默认使用content-color
-			else if(this.type == 'none') return '#606266';
-			else return this.type;
-		},
-		// 文字内容的样式
-		textStyle() {
-			let style = {};
-			if (this.color) style.color = this.color;
-			else if(this.type == 'none') style.color = '#606266';
-			style.fontSize = this.fontSize + 'rpx';
-			return style;
-		},
-		// 垂直或者水平滚动
-		vertical() {
-			if(this.mode == 'horizontal') return false;
-			else return true;
-		},
-		// 计算背景颜色
-		computeBgColor() {
-			if (this.bgColor) return this.bgColor;
-			else if(this.type == 'none') return 'transparent';
-		}
-	},
-	data() {
-		return {
-			// animation: false
-		};
-	},
-	methods: {
-		// 点击通告栏
-		click(index) {
-			this.$emit('click', index);
-		},
-		// 点击关闭按钮
-		close() {
-			this.$emit('close');
-		},
-		// 点击更多箭头按钮
-		getMore() {
-			this.$emit('getMore');
-		},
-		change(e) {
-			let index = e.detail.current;
-			if(index == this.list.length - 1) {
-				this.$emit('end');
-			}
-		}
-	}
-};
-</script>
-
-<style lang="scss" scoped>
-@import "../../libs/css/style.components.scss";
-
-.u-notice-bar {
-	width: 100%;
-	@include vue-flex;
-	align-items: center;
-	justify-content: center;
-	flex-wrap: nowrap;
-	padding: 18rpx 24rpx;
-	overflow: hidden;
-}
-
-.u-swiper {
-	font-size: 26rpx;
-	height: 32rpx;
-	@include vue-flex;
-	align-items: center;
-	flex: 1;
-	margin-left: 12rpx;
-}
-
-.u-swiper-item {
-	@include vue-flex;
-	align-items: center;
-	overflow: hidden;
-}
-
-.u-news-item {
-	overflow: hidden;
-}
-
-.u-right-icon {
-	margin-left: 12rpx;
-	/* #ifndef APP-NVUE */
-	display: inline-flex;		
-	/* #endif */
-	align-items: center;
-}
-
-.u-left-icon {
-	/* #ifndef APP-NVUE */
-	display: inline-flex;		
-	/* #endif */
-	align-items: center;
-}
-</style>
diff --git a/uview-ui/components/u-count-down/u-count-down.vue b/uview-ui/components/u-count-down/u-count-down.vue
deleted file mode 100644
index 7285d67..0000000
--- a/uview-ui/components/u-count-down/u-count-down.vue
+++ /dev/null
@@ -1,318 +0,0 @@
-<template>
-	<view class="u-countdown">
-		<view class="u-countdown-item" :style="[itemStyle]" v-if="showDays && (hideZeroDay || (!hideZeroDay && d != '00'))">
-			<view class="u-countdown-time" :style="[letterStyle]">
-				{{ d }}
-			</view>
-		</view>
-		<view
-			class="u-countdown-colon"
-			:style="{fontSize: separatorSize + 'rpx', color: separatorColor, paddingBottom: separator == 'colon' ? '4rpx' : 0}"
-			v-if="showDays && (hideZeroDay || (!hideZeroDay && d != '00'))"
-		>
-			{{ separator == 'colon' ? ':' : '天' }}
-		</view>
-		<view class="u-countdown-item" :style="[itemStyle]" v-if="showHours">
-			<view class="u-countdown-time" :style="{ fontSize: fontSize + 'rpx', color: color}">
-				{{ h }}
-			</view>
-		</view>
-		<view
-			class="u-countdown-colon"
-			:style="{fontSize: separatorSize + 'rpx', color: separatorColor, paddingBottom: separator == 'colon' ? '4rpx' : 0}"
-			v-if="showHours"
-		>
-			{{ separator == 'colon' ? ':' : '时' }}
-		</view>
-		<view class="u-countdown-item" :style="[itemStyle]" v-if="showMinutes">
-			<view class="u-countdown-time" :style="{ fontSize: fontSize + 'rpx', color: color}">
-				{{ i }}
-			</view>
-		</view>
-		<view
-			class="u-countdown-colon"
-			:style="{fontSize: separatorSize + 'rpx', color: separatorColor, paddingBottom: separator == 'colon' ? '4rpx' : 0}"
-			v-if="showMinutes"
-		>
-			{{ separator == 'colon' ? ':' : '分' }}
-		</view>
-		<view class="u-countdown-item" :style="[itemStyle]" v-if="showSeconds">
-			<view class="u-countdown-time" :style="{ fontSize: fontSize + 'rpx', color: color}">
-				{{ s }}
-			</view>
-		</view>
-		<view
-			class="u-countdown-colon"
-			:style="{fontSize: separatorSize + 'rpx', color: separatorColor, paddingBottom: separator == 'colon' ? '4rpx' : 0}"
-			v-if="showSeconds && separator == 'zh'"
-		>
-			秒
-		</view>
-	</view>
-</template>
-
-<script>
-/**
- * countDown 倒计时
- * @description 该组件一般使用于某个活动的截止时间上,通过数字的变化,给用户明确的时间感受,提示用户进行某一个行为操作。
- * @tutorial https://www.uviewui.com/components/countDown.html
- * @property {String Number} timestamp 倒计时,单位为秒
- * @property {Boolean} autoplay 是否自动开始倒计时,如果为false,需手动调用开始方法。见官网说明(默认true)
- * @property {String} separator 分隔符,colon为英文冒号,zh为中文(默认colon)
- * @property {String Number} separator-size 分隔符的字体大小,单位rpx(默认30)
- * @property {String} separator-color 分隔符的颜色(默认#303133)
- * @property {String Number} font-size 倒计时字体大小,单位rpx(默认30)
- * @property {Boolean} show-border 是否显示倒计时数字的边框(默认false)
- * @property {Boolean} hide-zero-day 当"天"的部分为0时,隐藏该字段 (默认true)
- * @property {String} border-color 数字边框的颜色(默认#303133)
- * @property {String} bg-color 倒计时数字的背景颜色(默认#ffffff)
- * @property {String} color 倒计时数字的颜色(默认#303133)
- * @property {String} height 数字高度值(宽度等同此值),设置边框时看情况是否需要设置此值,单位rpx(默认auto)
- * @property {Boolean} show-days 是否显示倒计时的"天"部分(默认true)
- * @property {Boolean} show-hours 是否显示倒计时的"时"部分(默认true)
- * @property {Boolean} show-minutes 是否显示倒计时的"分"部分(默认true)
- * @property {Boolean} show-seconds 是否显示倒计时的"秒"部分(默认true)
- * @event {Function} end 倒计时结束
- * @event {Function} change 每秒触发一次,回调为当前剩余的倒计秒数
- * @example <u-count-down ref="uCountDown" :timestamp="86400" :autoplay="false"></u-count-down>
- */
-export default {
-	name: 'u-count-down',
-	props: {
-		// 倒计时的时间,秒为单位
-		timestamp: {
-			type: [Number, String],
-			default: 0
-		},
-		// 是否自动开始倒计时
-		autoplay: {
-			type: Boolean,
-			default: true
-		},
-		// 用英文冒号(colon)或者中文(zh)当做分隔符,false的时候为中文,如:"11:22"或"11时22秒"
-		separator: {
-			type: String,
-			default: 'colon'
-		},
-		// 分隔符的大小,单位rpx
-		separatorSize: {
-			type: [Number, String],
-			default: 30
-		},
-		// 分隔符颜色
-		separatorColor: {
-			type: String,
-			default: "#303133"
-		},
-		// 字体颜色
-		color: {
-			type: String,
-			default: '#303133'
-		},
-		// 字体大小,单位rpx
-		fontSize: {
-			type: [Number, String],
-			default: 30
-		},
-		// 背景颜色
-		bgColor: {
-			type: String,
-			default: '#fff'
-		},
-		// 数字框高度,单位rpx
-		height: {
-			type: [Number, String],
-			default: 'auto'
-		},
-		// 是否显示数字框
-		showBorder: {
-			type: Boolean,
-			default: false
-		},
-		// 边框颜色
-		borderColor: {
-			type: String,
-			default: '#303133'
-		},
-		// 是否显示秒
-		showSeconds: {
-			type: Boolean,
-			default: true
-		},
-		// 是否显示分钟
-		showMinutes: {
-			type: Boolean,
-			default: true
-		},
-		// 是否显示小时
-		showHours: {
-			type: Boolean,
-			default: true
-		},
-		// 是否显示“天”
-		showDays: {
-			type: Boolean,
-			default: true
-		},
-		// 当"天"的部分为0时,不显示
-		hideZeroDay: {
-			type: Boolean,
-			default: false
-		}
-	},
-	watch: {
-		// 监听时间戳的变化
-		timestamp(newVal, oldVal) {
-			// 如果倒计时间发生变化,清除定时器,重新开始倒计时
-			this.clearTimer();
-			this.start();
-		}
-	},
-	data() {
-		return {
-			d: '00', // 天的默认值
-			h: '00', // 小时的默认值
-			i: '00', // 分钟的默认值
-			s: '00', // 秒的默认值
-			timer: null ,// 定时器
-			seconds: 0, // 记录不停倒计过程中变化的秒数
-		};
-	},
-	computed: {
-		// 倒计时item的样式,item为分别的时分秒部分的数字
-		itemStyle() {
-			let style = {};
-			if(this.height) {
-				style.height = this.height + 'rpx';
-				style.width = this.height + 'rpx';
-			}
-			if(this.showBorder) {
-				style.borderStyle = 'solid';
-				style.borderColor = this.borderColor;
-				style.borderWidth = '1px';
-			}
-			if(this.bgColor) {
-				style.backgroundColor = this.bgColor;
-			}
-			return style;
-		},
-		// 倒计时数字的样式
-		letterStyle() {
-			let style = {};
-			if(this.fontSize) style.fontSize = this.fontSize +  'rpx';
-			if(this.color) style.color = this.color;
-			return style;
-		}
-	},
-	mounted() {
-		// 如果自动倒计时
-		this.autoplay && this.timestamp && this.start();
-	},
-	methods: {
-		// 倒计时
-		start() {
-			// 避免可能出现的倒计时重叠情况
-			this.clearTimer();
-			if (this.timestamp <= 0) return;
-			this.seconds = Number(this.timestamp);
-			this.formatTime(this.seconds);
-			this.timer = setInterval(() => {
-				this.seconds--;
-				// 发出change事件
-				this.$emit('change', this.seconds);
-				if (this.seconds < 0) {
-					return this.end();
-				}
-				this.formatTime(this.seconds);
-			}, 1000);
-		},
-		// 格式化时间
-		formatTime(seconds) {
-			// 小于等于0的话,结束倒计时
-			seconds <= 0 && this.end();
-			let [day, hour, minute, second] = [0, 0, 0, 0];
-			day = Math.floor(seconds / (60 * 60 * 24));
-			// 判断是否显示“天”参数,如果不显示,将天部分的值,加入到小时中
-			// hour为给后面计算秒和分等用的(基于显示天的前提下计算)
-			hour = Math.floor(seconds / (60 * 60)) - day * 24;
-			// showHour为需要显示的小时
-			let showHour = null;
-			if(this.showDays) {
-				showHour = hour;
-			} else {
-				// 如果不显示天数,将“天”部分的时间折算到小时中去
-				showHour = Math.floor(seconds / (60 * 60));
-			}
-			minute = Math.floor(seconds / 60) - hour * 60 - day * 24 * 60;
-			second = Math.floor(seconds) - day * 24 * 60 * 60 - hour * 60 * 60 - minute * 60;
-			// 如果小于10,在前面补上一个"0"
-			showHour = showHour < 10 ? '0' + showHour : showHour;
-			minute = minute < 10 ? '0' + minute : minute;
-			second = second < 10 ? '0' + second : second;
-			day = day < 10 ? '0' + day : day;
-			this.d = day;
-			this.h = showHour;
-			this.i = minute;
-			this.s = second;
-		},
-		// 停止倒计时
-		end() {
-			this.clearTimer();
-			this.$emit('end', {});
-		},
-		// 清除定时器
-		clearTimer() {
-			if(this.timer) {
-				// 清除定时器
-				clearInterval(this.timer);
-				this.timer = null;
-			}
-		}
-	},
-	beforeDestroy() {
-		clearInterval(this.timer);
-		this.timer = null;
-	}
-};
-</script>
-
-<style scoped lang="scss">
-	@import "../../libs/css/style.components.scss";
-
-	.u-countdown {
-		/* #ifndef APP-NVUE */
-		display: inline-flex;		
-		/* #endif */
-		align-items: center;
-	}
-
-	.u-countdown-item {
-		@include vue-flex;
-		align-items: center;
-		justify-content: center;
-		padding: 2rpx;
-		border-radius: 6rpx;
-		white-space: nowrap;
-		transform: translateZ(0);
-	}
-
-	.u-countdown-time {
-		margin: 0;
-		padding: 0;
-		line-height: 1;
-	}
-
-	.u-countdown-colon {
-		@include vue-flex;
-		justify-content: center;
-		padding: 0 5rpx;
-		line-height: 1;
-		align-items: center;
-		padding-bottom: 4rpx;
-	}
-
-	.u-countdown-scale {
-		transform: scale(0.9);
-		transform-origin: center center;
-	}
-</style>
diff --git a/uview-ui/components/u-count-to/u-count-to.vue b/uview-ui/components/u-count-to/u-count-to.vue
deleted file mode 100644
index 053dc5f..0000000
--- a/uview-ui/components/u-count-to/u-count-to.vue
+++ /dev/null
@@ -1,241 +0,0 @@
-<template>
-	<view
-		class="u-count-num"
-		:style="{
-			fontSize: fontSize + 'rpx',
-			fontWeight: bold ? 'bold' : 'normal',
-			color: color
-		}"
-	>
-		{{ displayValue }}
-	</view>
-</template>
-
-<script>
-/**
- * countTo 数字滚动
- * @description 该组件一般用于需要滚动数字到某一个值的场景,目标要求是一个递增的值。
- * @tutorial https://www.uviewui.com/components/countTo.html
- * @property {String Number} start-val 开始值
- * @property {String Number} end-val 结束值
- * @property {String Number} duration 滚动过程所需的时间,单位ms(默认2000)
- * @property {Boolean} autoplay 是否自动开始滚动(默认true)
- * @property {String Number} decimals 要显示的小数位数,见官网说明(默认0)
- * @property {Boolean} use-easing 滚动结束时,是否缓动结尾,见官网说明(默认true)
- * @property {String} separator 千位分隔符,见官网说明
- * @property {String} color 字体颜色(默认#303133)
- * @property {String Number} font-size 字体大小,单位rpx(默认50)
- * @property {Boolean} bold 字体是否加粗(默认false)
- * @event {Function} end 数值滚动到目标值时触发
- * @example <u-count-to ref="uCountTo" :end-val="endVal" :autoplay="autoplay"></u-count-to>
- */
-export default {
-	name: 'u-count-to',
-	props: {
-		// 开始的数值,默认从0增长到某一个数
-		startVal: {
-			type: [Number, String],
-			default: 0
-		},
-		// 要滚动的目标数值,必须
-		endVal: {
-			type: [Number, String],
-			default: 0,
-			required: true
-		},
-		// 滚动到目标数值的动画持续时间,单位为毫秒(ms)
-		duration: {
-			type: [Number, String],
-			default: 2000
-		},
-		// 设置数值后是否自动开始滚动
-		autoplay: {
-			type: Boolean,
-			default: true
-		},
-		// 要显示的小数位数
-		decimals: {
-			type: [Number, String],
-			default: 0
-		},
-		// 是否在即将到达目标数值的时候,使用缓慢滚动的效果
-		useEasing: {
-			type: Boolean,
-			default: true
-		},
-		// 十进制分割
-		decimal: {
-			type: [Number, String],
-			default: '.'
-		},
-		// 字体颜色
-		color: {
-			type: String,
-			default: '#303133'
-		},
-		// 字体大小
-		fontSize: {
-			type: [Number, String],
-			default: 50
-		},
-		// 是否加粗字体
-		bold: {
-			type: Boolean,
-			default: false
-		},
-		// 千位分隔符,类似金额的分割(¥23,321.05中的",")
-		separator: {
-			type: String,
-			default: ''
-		}
-	},
-	data() {
-		return {
-			localStartVal: this.startVal,
-			displayValue: this.formatNumber(this.startVal),
-			printVal: null,
-			paused: false, // 是否暂停
-			localDuration: Number(this.duration),
-			startTime: null, // 开始的时间
-			timestamp: null, // 时间戳
-			remaining: null, // 停留的时间
-			rAF: null,
-			lastTime: 0 // 上一次的时间
-		};
-	},
-	computed: {
-		countDown() {
-			return this.startVal > this.endVal;
-		}
-	},
-	watch: {
-		startVal() {
-			this.autoplay && this.start();
-		},
-		endVal() {
-			this.autoplay && this.start();
-		}
-	},
-	mounted() {
-		this.autoplay && this.start();
-	},
-	methods: {
-		easingFn(t, b, c, d) {
-			return (c * (-Math.pow(2, (-10 * t) / d) + 1) * 1024) / 1023 + b;
-		},
-		requestAnimationFrame(callback) {
-			const currTime = new Date().getTime();
-			// 为了使setTimteout的尽可能的接近每秒60帧的效果
-			const timeToCall = Math.max(0, 16 - (currTime - this.lastTime));
-			const id = setTimeout(() => {
-				callback(currTime + timeToCall);
-			}, timeToCall);
-			this.lastTime = currTime + timeToCall;
-			return id;
-		},
-
-		cancelAnimationFrame(id) {
-			clearTimeout(id);
-		},
-		// 开始滚动数字
-		start() {
-			this.localStartVal = this.startVal;
-			this.startTime = null;
-			this.localDuration = this.duration;
-			this.paused = false;
-			this.rAF = this.requestAnimationFrame(this.count);
-		},
-		// 暂定状态,重新再开始滚动;或者滚动状态下,暂停
-		reStart() {
-			if (this.paused) {
-				this.resume();
-				this.paused = false;
-			} else {
-				this.stop();
-				this.paused = true;
-			}
-		},
-		// 暂停
-		stop() {
-			this.cancelAnimationFrame(this.rAF);
-		},
-		// 重新开始(暂停的情况下)
-		resume() {
-			this.startTime = null;
-			this.localDuration = this.remaining;
-			this.localStartVal = this.printVal;
-			this.requestAnimationFrame(this.count);
-		},
-		// 重置
-		reset() {
-			this.startTime = null;
-			this.cancelAnimationFrame(this.rAF);
-			this.displayValue = this.formatNumber(this.startVal);
-		},
-		count(timestamp) {
-			if (!this.startTime) this.startTime = timestamp;
-			this.timestamp = timestamp;
-			const progress = timestamp - this.startTime;
-			this.remaining = this.localDuration - progress;
-			if (this.useEasing) {
-				if (this.countDown) {
-					this.printVal = this.localStartVal - this.easingFn(progress, 0, this.localStartVal - this.endVal, this.localDuration);
-				} else {
-					this.printVal = this.easingFn(progress, this.localStartVal, this.endVal - this.localStartVal, this.localDuration);
-				}
-			} else {
-				if (this.countDown) {
-					this.printVal = this.localStartVal - (this.localStartVal - this.endVal) * (progress / this.localDuration);
-				} else {
-					this.printVal = this.localStartVal + (this.endVal - this.localStartVal) * (progress / this.localDuration);
-				}
-			}
-			if (this.countDown) {
-				this.printVal = this.printVal < this.endVal ? this.endVal : this.printVal;
-			} else {
-				this.printVal = this.printVal > this.endVal ? this.endVal : this.printVal;
-			}
-			this.displayValue = this.formatNumber(this.printVal);
-			if (progress < this.localDuration) {
-				this.rAF = this.requestAnimationFrame(this.count);
-			} else {
-				this.$emit('end');
-			}
-		},
-		// 判断是否数字
-		isNumber(val) {
-			return !isNaN(parseFloat(val));
-		},
-		formatNumber(num) {
-			// 将num转为Number类型,因为其值可能为字符串数值,调用toFixed会报错
-			num = Number(num);
-			num = num.toFixed(Number(this.decimals));
-			num += '';
-			const x = num.split('.');
-			let x1 = x[0];
-			const x2 = x.length > 1 ? this.decimal + x[1] : '';
-			const rgx = /(\d+)(\d{3})/;
-			if (this.separator && !this.isNumber(this.separator)) {
-				while (rgx.test(x1)) {
-					x1 = x1.replace(rgx, '$1' + this.separator + '$2');
-				}
-			}
-			return x1 + x2;
-		},
-		destroyed() {
-			this.cancelAnimationFrame(this.rAF);
-		}
-	}
-};
-</script>
-
-<style lang="scss" scoped>
-@import "../../libs/css/style.components.scss";
-
-.u-count-num {
-	/* #ifndef APP-NVUE */
-	display: inline-flex;		
-	/* #endif */
-	text-align: center;
-}
-</style>
diff --git a/uview-ui/components/u-divider/u-divider.vue b/uview-ui/components/u-divider/u-divider.vue
deleted file mode 100644
index 6f8d7e6..0000000
--- a/uview-ui/components/u-divider/u-divider.vue
+++ /dev/null
@@ -1,153 +0,0 @@
-<template>
-	<view class="u-divider" :style="{
-		height: height == 'auto' ? 'auto' : height + 'rpx',
-		backgroundColor: bgColor,
-		marginBottom: marginBottom + 'rpx',
-		marginTop: marginTop + 'rpx'
-	}" @tap="click">
-		<view class="u-divider-line" :class="[type ? 'u-divider-line--bordercolor--' + type : '']" :style="[lineStyle]"></view>
-		<view v-if="useSlot" class="u-divider-text" :style="{
-			color: color,
-			fontSize: fontSize + 'rpx'
-		}"><slot /></view>
-		<view class="u-divider-line" :class="[type ? 'u-divider-line--bordercolor--' + type : '']" :style="[lineStyle]"></view>
-	</view>
-</template>
-
-<script>
-/**
- * divider 分割线
- * @description 区隔内容的分割线,一般用于页面底部"没有更多"的提示。
- * @tutorial https://www.uviewui.com/components/divider.html
- * @property {String Number} half-width 文字左或右边线条宽度,数值或百分比,数值时单位为rpx
- * @property {String} border-color 线条颜色,优先级高于type(默认#dcdfe6)
- * @property {String} color 文字颜色(默认#909399)
- * @property {String Number} fontSize 字体大小,单位rpx(默认26)
- * @property {String} bg-color 整个divider的背景颜色(默认呢#ffffff)
- * @property {String Number} height 整个divider的高度,单位rpx(默认40)
- * @property {String} type 将线条设置主题色(默认primary)
- * @property {Boolean} useSlot 是否使用slot传入内容,如果不传入,中间不会有空隙(默认true)
- * @property {String Number} margin-top 与前一个组件的距离,单位rpx(默认0)
- * @property {String Number} margin-bottom 与后一个组件的距离,单位rpx(0)
- * @event {Function} click divider组件被点击时触发
- * @example <u-divider color="#fa3534">长河落日圆</u-divider>
- */
-export default {
-	name: 'u-divider',
-	props: {
-		// 单一边divider横线的宽度(数值),单位rpx。或者百分比
-		halfWidth: {
-			type: [Number, String],
-			default: 150
-		},
-		// divider横线的颜色,如设置,
-		borderColor: {
-			type: String,
-			default: '#dcdfe6'
-		},
-		// 主题色,可以是primary|info|success|warning|error之一值
-		type: {
-			type: String,
-			default: 'primary'
-		},
-		// 文字颜色
-		color: {
-			type: String,
-			default: '#909399'
-		},
-		// 文字大小,单位rpx
-		fontSize: {
-			type: [Number, String],
-			default: 26
-		},
-		// 整个divider的背景颜色
-		bgColor: {
-			type: String,
-			default: '#ffffff'
-		},
-		// 整个divider的高度单位rpx
-		height: {
-			type: [Number, String],
-			default: 'auto'
-		},
-		// 上边距
-		marginTop: {
-			type: [String, Number],
-			default: 0
-		},
-		// 下边距
-		marginBottom: {
-			type: [String, Number],
-			default: 0
-		},
-		// 是否使用slot传入内容,如果不用slot传入内容,先的中间就不会有空隙
-		useSlot: {
-			type: Boolean,
-			default: true
-		}
-	},
-	computed: {
-		lineStyle() {
-			let style = {};
-			if(String(this.halfWidth).indexOf('%') != -1) style.width = this.halfWidth;
-			else style.width = this.halfWidth + 'rpx';
-			// borderColor优先级高于type值
-			if(this.borderColor) style.borderColor = this.borderColor;
-			return style;
-		}
-	},
-	methods: {
-		click() {
-			this.$emit('click');
-		}
-	}
-};
-</script>
-
-<style lang="scss" scoped>
-@import "../../libs/css/style.components.scss";
-.u-divider {
-	width: 100%;
-	position: relative;
-	text-align: center;
-	@include vue-flex;
-	justify-content: center;
-	align-items: center;
-	overflow: hidden;
-	flex-direction: row;
-}
-
-.u-divider-line {
-	border-bottom: 1px solid $u-border-color;
-	transform: scale(1, 0.5);
-	transform-origin: center;
-	
-	&--bordercolor--primary {
-		border-color: $u-type-primary;
-	}
-	
-	&--bordercolor--success {
-		border-color: $u-type-success;
-	}
-	
-	&--bordercolor--error {
-		border-color: $u-type-primary;
-	}
-	
-	&--bordercolor--info {
-		border-color: $u-type-info;
-	}
-	
-	&--bordercolor--warning {
-		border-color: $u-type-warning;
-	}
-}
-
-.u-divider-text {
-	white-space: nowrap;
-	padding: 0 16rpx;
-	/* #ifndef APP-NVUE */
-	display: inline-flex;		
-	/* #endif */
-}
-</style>
diff --git a/uview-ui/components/u-dropdown-item/u-dropdown-item.vue b/uview-ui/components/u-dropdown-item/u-dropdown-item.vue
deleted file mode 100644
index ba60d8f..0000000
--- a/uview-ui/components/u-dropdown-item/u-dropdown-item.vue
+++ /dev/null
@@ -1,132 +0,0 @@
-<template>
-	<view class="u-dropdown-item" v-if="active" @touchmove.stop.prevent="() => {}" @tap.stop.prevent="() => {}">
-		<block v-if="!$slots.default && !$slots.$default">
-			<scroll-view scroll-y="true" :style="{
-				height: $u.addUnit(height)
-			}">
-				<view class="u-dropdown-item__options">
-					<u-cell-group>
-						<u-cell-item @click="cellClick(item.value)" :arrow="false" :title="item.label" v-for="(item, index) in options"
-						 :key="index" :title-style="{
-							color: value == item.value ? activeColor : inactiveColor
-						}">
-							<u-icon v-if="value == item.value" name="checkbox-mark" :color="activeColor" size="32"></u-icon>
-						</u-cell-item>
-					</u-cell-group>
-				</view>
-			</scroll-view>
-		</block>
-		<slot v-else />
-	</view>
-</template>
-
-<script>
-	/**
-	 * dropdown-item 下拉菜单
-	 * @description 该组件一般用于向下展开菜单,同时可切换多个选项卡的场景
-	 * @tutorial http://uviewui.com/components/dropdown.html
-	 * @property {String | Number} v-model 双向绑定选项卡选择值
-	 * @property {String} title 菜单项标题
-	 * @property {Array[Object]} options 选项数据,如果传入了默认slot,此参数无效
-	 * @property {Boolean} disabled 是否禁用此选项卡(默认false)
-	 * @property {String | Number} duration 选项卡展开和收起的过渡时间,单位ms(默认300)
-	 * @property {String | Number} height 弹窗下拉内容的高度(内容超出将会滚动)(默认auto)
-	 * @example <u-dropdown-item title="标题"></u-dropdown-item>
-	 */
-	export default {
-		name: 'u-dropdown-item',
-		props: {
-			// 当前选中项的value值
-			value: {
-				type: [Number, String, Array],
-				default: ''
-			},
-			// 菜单项标题
-			title: {
-				type: [String, Number],
-				default: ''
-			},
-			// 选项数据,如果传入了默认slot,此参数无效
-			options: {
-				type: Array,
-				default () {
-					return []
-				}
-			},
-			// 是否禁用此菜单项
-			disabled: {
-				type: Boolean,
-				default: false
-			},
-			// 下拉弹窗的高度
-			height: {
-				type: [Number, String],
-				default: 'auto'
-			},
-		},
-		data() {
-			return {
-				active: false, // 当前项是否处于展开状态
-				activeColor: '#2979ff', // 激活时左边文字和右边对勾图标的颜色
-				inactiveColor: '#606266', // 未激活时左边文字和右边对勾图标的颜色
-			}
-		},
-		computed: {
-			// 监听props是否发生了变化,有些值需要传递给父组件u-dropdown,无法双向绑定
-			propsChange() {
-				return `${this.title}-${this.disabled}`;
-			}
-		},
-		watch: {
-			propsChange(n) {
-				// 当值变化时,通知父组件重新初始化,让父组件执行每个子组件的init()方法
-				// 将所有子组件数据重新整理一遍
-				if (this.parent) this.parent.init();
-			}
-		},
-		created() {
-			// 父组件的实例
-			this.parent = false;
-		},
-		methods: {
-			init() {
-				// 获取父组件u-dropdown
-				let parent = this.$u.$parent.call(this, 'u-dropdown');
-				if (parent) {
-					this.parent = parent;
-					// 将子组件的激活颜色配置为父组件设置的激活和未激活时的颜色
-					this.activeColor = parent.activeColor;
-					this.inactiveColor = parent.inactiveColor;
-					// 将本组件的this,放入到父组件的children数组中,让父组件可以操作本(子)组件的方法和属性
-					// push进去前,显判断是否已经存在了本实例,因为在子组件内部数据变化时,会通过父组件重新初始化子组件
-					let exist = parent.children.find(val => {
-						return this === val;
-					})
-					if (!exist) parent.children.push(this);
-					if (parent.children.length == 1) this.active = true;
-					// 父组件无法监听children的变化,故将子组件的title,传入父组件的menuList数组中
-					parent.menuList.push({
-						title: this.title,
-						disabled: this.disabled
-					});
-				}
-			},
-			// cell被点击
-			cellClick(value) {
-				// 修改通过v-model绑定的值
-				this.$emit('input', value);
-				// 通知父组件(u-dropdown)收起菜单
-				this.parent.close();
-				// 发出事件,抛出当前勾选项的value
-				this.$emit('change', value);
-			}
-		},
-		mounted() {
-			this.init();
-		}
-	}
-</script>
-
-<style scoped lang="scss">
-	@import "../../libs/css/style.components.scss";
-</style>
diff --git a/uview-ui/components/u-dropdown/u-dropdown.vue b/uview-ui/components/u-dropdown/u-dropdown.vue
deleted file mode 100644
index a62e469..0000000
--- a/uview-ui/components/u-dropdown/u-dropdown.vue
+++ /dev/null
@@ -1,298 +0,0 @@
-<template>
-	<view class="u-dropdown">
-		<view class="u-dropdown__menu" :style="{
-			height: $u.addUnit(height)
-		}" :class="{
-			'u-border-bottom': borderBottom
-		}">
-			<view class="u-dropdown__menu__item" v-for="(item, index) in menuList" :key="index" @tap.stop="menuClick(index)">
-				<view class="u-flex">
-					<text class="u-dropdown__menu__item__text" :style="{
-						color: item.disabled ? '#c0c4cc' : (index === current || highlightIndex == index) ? activeColor : inactiveColor,
-						fontSize: $u.addUnit(titleSize)
-					}">{{item.title}}</text>
-					<view class="u-dropdown__menu__item__arrow" :class="{
-						'u-dropdown__menu__item__arrow--rotate': index === current
-					}">
-						<u-icon :custom-style="{display: 'flex'}" :name="menuIcon" :size="$u.addUnit(menuIconSize)" :color="index === current || highlightIndex == index ? activeColor : '#c0c4cc'"></u-icon>
-					</view>
-				</view>
-			</view>
-		</view>
-		<view class="u-dropdown__content" :style="[contentStyle, {
-			transition: `opacity ${duration / 1000}s linear`,
-			top: $u.addUnit(height),
-			height: contentHeight + 'px'
-		}]"
-		 @tap="maskClick" @touchmove.stop.prevent>
-			<view @tap.stop.prevent class="u-dropdown__content__popup" :style="[popupStyle]">
-				<slot></slot>
-			</view>
-			<view class="u-dropdown__content__mask"></view>
-		</view>
-	</view>
-</template>
-
-<script>
-	/**
-	 * dropdown 下拉菜单
-	 * @description 该组件一般用于向下展开菜单,同时可切换多个选项卡的场景
-	 * @tutorial http://uviewui.com/components/dropdown.html
-	 * @property {String} active-color 标题和选项卡选中的颜色(默认#2979ff)
-	 * @property {String} inactive-color 标题和选项卡未选中的颜色(默认#606266)
-	 * @property {Boolean} close-on-click-mask 点击遮罩是否关闭菜单(默认true)
-	 * @property {Boolean} close-on-click-self 点击当前激活项标题是否关闭菜单(默认true)
-	 * @property {String | Number} duration 选项卡展开和收起的过渡时间,单位ms(默认300)
-	 * @property {String | Number} height 标题菜单的高度,单位任意(默认80)
-	 * @property {String | Number} border-radius 菜单展开内容下方的圆角值,单位任意(默认0)
-	 * @property {Boolean} border-bottom 标题菜单是否显示下边框(默认false)
-	 * @property {String | Number} title-size 标题的字体大小,单位任意,数值默认为rpx单位(默认28)
-	 * @event {Function} open 下拉菜单被打开时触发
-	 * @event {Function} close 下拉菜单被关闭时触发
-	 * @example <u-dropdown></u-dropdown>
-	 */
-	export default {
-		name: 'u-dropdown',
-		props: {
-			// 菜单标题和选项的激活态颜色
-			activeColor: {
-				type: String,
-				default: '#2979ff'
-			},
-			// 菜单标题和选项的未激活态颜色
-			inactiveColor: {
-				type: String,
-				default: '#606266'
-			},
-			// 点击遮罩是否关闭菜单
-			closeOnClickMask: {
-				type: Boolean,
-				default: true
-			},
-			// 点击当前激活项标题是否关闭菜单
-			closeOnClickSelf: {
-				type: Boolean,
-				default: true
-			},
-			// 过渡时间
-			duration: {
-				type: [Number, String],
-				default: 300
-			},
-			// 标题菜单的高度,单位任意,数值默认为rpx单位
-			height: {
-				type: [Number, String],
-				default: 80
-			},
-			// 是否显示下边框
-			borderBottom: {
-				type: Boolean,
-				default: false
-			},
-			// 标题的字体大小
-			titleSize: {
-				type: [Number, String],
-				default: 28
-			},
-			// 下拉出来的内容部分的圆角值
-			borderRadius: {
-				type: [Number, String],
-				default: 0
-			},
-			// 菜单右侧的icon图标
-			menuIcon: {
-				type: String,
-				default: 'arrow-down'
-			},
-			// 菜单右侧图标的大小
-			menuIconSize: {
-				type: [Number, String],
-				default: 26
-			}
-		},
-		data() {
-			return {
-				showDropdown: true, // 是否打开下来菜单,
-				menuList: [], // 显示的菜单
-				active: false, // 下拉菜单的状态
-				// 当前是第几个菜单处于激活状态,小程序中此处不能写成false或者"",否则后续将current赋值为0,
-				// 无能的TX没有使用===而是使用==判断,导致程序认为前后二者没有变化,从而不会触发视图更新
-				current: 99999,
-				// 外层内容的样式,初始时处于底层,且透明
-				contentStyle: {
-					zIndex: -1,
-					opacity: 0
-				},
-				// 让某个菜单保持高亮的状态
-				highlightIndex: 99999,
-				contentHeight: 0
-			}
-		},
-		computed: {
-			// 下拉出来部分的样式
-			popupStyle() {
-				let style = {};
-				// 进行Y轴位移,展开状态时,恢复原位。收齐状态时,往上位移100%,进行隐藏
-				style.transform = `translateY(${this.active ? 0 : '-100%'})`
-				style['transition-duration'] = this.duration / 1000 + 's';
-				style.borderRadius = `0 0 ${this.$u.addUnit(this.borderRadius)} ${this.$u.addUnit(this.borderRadius)}`;
-				return style;
-			}
-		},
-		created() {
-			// 引用所有子组件(u-dropdown-item)的this,不能在data中声明变量,否则在微信小程序会造成循环引用而报错
-			this.children = [];
-		},
-		mounted() {
-			this.getContentHeight();
-		},
-		methods: {
-			init() {
-				// 当某个子组件内容变化时,触发父组件的init,父组件再让每一个子组件重新初始化一遍
-				// 以保证数据的正确性
-				this.menuList = [];
-				this.children.map(child => {
-					child.init();
-				})
-			},
-			// 点击菜单
-			menuClick(index) {
-				// 判断是否被禁用
-				if (this.menuList[index].disabled) return;
-				// 如果点击时的索引和当前激活项索引相同,意味着点击了激活项,需要收起下拉菜单
-				if (index === this.current && this.closeOnClickSelf) {
-					this.close();
-					// 等动画结束后,再移除下拉菜单中的内容,否则直接移除,也就没有下拉菜单收起的效果了
-					setTimeout(() => {
-						this.children[index].active = false;
-					}, this.duration)
-					return;
-				}
-				this.open(index);
-			},
-			// 打开下拉菜单
-			open(index) {
-				// 重置高亮索引,否则会造成多个菜单同时高亮
-				// this.highlightIndex = 9999;
-				// 展开时,设置下拉内容的样式
-				this.contentStyle = {
-					zIndex: 11,
-				}
-				// 标记展开状态以及当前展开项的索引
-				this.active = true;
-				this.current = index;
-				// 历遍所有的子元素,将索引匹配的项标记为激活状态,因为子元素是通过v-if控制切换的
-				// 之所以不是因display: none,是因为nvue没有display这个属性
-				this.children.map((val, idx) => {
-					val.active = index == idx ? true : false;
-				})
-				this.$emit('open', this.current);
-			},
-			// 设置下拉菜单处于收起状态
-			close() {
-				this.$emit('close', this.current);
-				// 设置为收起状态,同时current归位,设置为空字符串
-				this.active = false;
-				this.current = 99999;
-				// 下拉内容的样式进行调整,不透明度设置为0
-				this.contentStyle = {
-					zIndex: -1,
-					opacity: 0
-				}
-			},
-			// 点击遮罩
-			maskClick() {
-				// 如果不允许点击遮罩,直接返回
-				if (!this.closeOnClickMask) return;
-				this.close();
-			},
-			// 外部手动设置某个菜单高亮
-			highlight(index = undefined) {
-				this.highlightIndex = index !== undefined ? index : 99999;
-			},
-			// 获取下拉菜单内容的高度
-			getContentHeight() {
-				// 这里的原理为,因为dropdown组件是相对定位的,它的下拉出来的内容,必须给定一个高度
-				// 才能让遮罩占满菜单一下,直到屏幕底部的高度
-				// this.$u.sys()为uView封装的获取设备信息的方法
-				let windowHeight = this.$u.sys().windowHeight;
-				this.$uGetRect('.u-dropdown__menu').then(res => {
-					// 这里获取的是dropdown的尺寸,在H5上,uniapp获取尺寸是有bug的(以前提出修复过,后来又出现了此bug,目前hx2.8.11版本)
-					// H5端bug表现为元素尺寸的top值为导航栏底部到到元素的上边沿的距离,但是元素的bottom值确是导航栏顶部到元素底部的距离
-					// 二者是互相矛盾的,本质原因是H5端导航栏非原生,uni的开发者大意造成
-					// 这里取菜单栏的botton值合理的,不能用res.top,否则页面会造成滚动
-					this.contentHeight = windowHeight - res.bottom;
-				})
-			}
-		}
-	}
-</script>
-
-<style scoped lang="scss">
-	@import "../../libs/css/style.components.scss";
-
-	.u-dropdown {
-		flex: 1;
-		width: 100%;
-		position: relative;
-
-		&__menu {
-			@include vue-flex;
-			position: relative;
-			z-index: 11;
-			height: 80rpx;
-
-			&__item {
-				flex: 1;
-				@include vue-flex;
-				justify-content: center;
-				align-items: center;
-
-				&__text {
-					font-size: 28rpx;
-					color: $u-content-color;
-				}
-
-				&__arrow {
-					margin-left: 6rpx;
-					transition: transform .3s;
-					align-items: center;
-					@include vue-flex;
-
-					&--rotate {
-						transform: rotate(180deg);
-					}
-				}
-			}
-		}
-
-		&__content {
-			position: absolute;
-			z-index: 8;
-			width: 100%;
-			left: 0px;
-			bottom: 0;
-			overflow: hidden;
-			
-
-			&__mask {
-				position: absolute;
-				z-index: 9;
-				background: rgba(0, 0, 0, .3);
-				width: 100%;
-				left: 0;
-				top: 0;
-				bottom: 0;
-			}
-
-			&__popup {
-				position: relative;
-				z-index: 10;
-				transition: all 0.3s;
-				transform: translate3D(0, -100%, 0);
-				overflow: hidden;
-			}
-		}
-
-	}
-</style>
diff --git a/uview-ui/components/u-empty/u-empty.vue b/uview-ui/components/u-empty/u-empty.vue
deleted file mode 100644
index 2c77b24..0000000
--- a/uview-ui/components/u-empty/u-empty.vue
+++ /dev/null
@@ -1,193 +0,0 @@
-<template>
-	<view class="u-empty" v-if="show" :style="{
-		marginTop: marginTop + 'rpx'
-	}">
-		<u-icon
-			:name="src ? src : 'empty-' + mode"
-			:custom-style="iconStyle"
-			:label="text ? text : icons[mode]"
-			label-pos="bottom"
-			:label-color="color"
-			:label-size="fontSize"
-			:size="iconSize"
-			:color="iconColor"
-			margin-top="14"
-		></u-icon>
-		<view class="u-slot-wrap">
-			<slot name="bottom"></slot>
-		</view>
-	</view>
-</template>
-
-<script>
-	/**
-	 * empty 内容为空
-	 * @description 该组件用于需要加载内容,但是加载的第一页数据就为空,提示一个"没有内容"的场景, 我们精心挑选了十几个场景的图标,方便您使用。
-	 * @tutorial https://www.uviewui.com/components/empty.html
-	 * @property {String} color 文字颜色(默认#c0c4cc)
-	 * @property {String} text 文字提示(默认“无内容”)
-	 * @property {String} src 自定义图标路径,如定义,mode参数会失效
-	 * @property {String Number} font-size 提示文字的大小,单位rpx(默认28)
-	 * @property {String} mode 内置的图标,见官网说明(默认data)
-	 * @property {String Number} img-width 图标的宽度,单位rpx(默认240)
-	 * @property {String} img-height 图标的高度,单位rpx(默认auto)
-	 * @property {String Number} margin-top 组件距离上一个元素之间的距离(默认0)
-	 * @property {Boolean} show 是否显示组件(默认true)
-	 * @event {Function} click 点击组件时触发
-	 * @event {Function} close 点击关闭按钮时触发
-	 * @example <u-empty text="所谓伊人,在水一方" mode="list"></u-empty>
-	 */
-	export default {
-		name: "u-empty",
-		props: {
-			// 图标路径
-			src: {
-				type: String,
-				default: ''
-			},
-			// 提示文字
-			text: {
-				type: String,
-				default: ''
-			},
-			// 文字颜色
-			color: {
-				type: String,
-				default: '#c0c4cc'
-			},
-			// 图标的颜色
-			iconColor: {
-				type: String,
-				default: '#c0c4cc'
-			},
-			// 图标的大小
-			iconSize: {
-				type: [String, Number],
-				default: 120
-			},
-			// 文字大小,单位rpx
-			fontSize: {
-				type: [String, Number],
-				default: 26
-			},
-			// 选择预置的图标类型
-			mode: {
-				type: String,
-				default: 'data'
-			},
-			//  图标宽度,单位rpx
-			imgWidth: {
-				type: [String, Number],
-				default: 120
-			},
-			// 图标高度,单位rpx
-			imgHeight: {
-				type: [String, Number],
-				default: 'auto'
-			},
-			// 是否显示组件
-			show: {
-				type: Boolean,
-				default: true
-			},
-			// 组件距离上一个元素之间的距离
-			marginTop: {
-				type: [String, Number],
-				default: 0
-			},
-			iconStyle: {
-				type: Object,
-				default() {
-					return {}
-				}
-			}
-		},
-		data() {
-			return {
-				icons: {
-					car: '购物车为空',
-					page: '页面不存在',
-					search: '没有搜索结果',
-					address: '没有收货地址',
-					wifi: '没有WiFi',
-					order: '订单为空',
-					coupon: '没有优惠券',
-					favor: '暂无收藏',
-					permission: '无权限',
-					history: '无历史记录',
-					news: '无新闻列表',
-					message: '消息列表为空',
-					list: '列表为空',
-					data: '数据为空'
-				},
-				// icons: [{
-				// 	icon: 'car',
-				// 	text: '购物车为空'
-				// },{
-				// 	icon: 'page',
-				// 	text: '页面不存在'
-				// },{
-				// 	icon: 'search',
-				// 	text: '没有搜索结果'
-				// },{
-				// 	icon: 'address',
-				// 	text: '没有收货地址'
-				// },{
-				// 	icon: 'wifi',
-				// 	text: '没有WiFi'
-				// },{
-				// 	icon: 'order',
-				// 	text: '订单为空'
-				// },{
-				// 	icon: 'coupon',
-				// 	text: '没有优惠券'
-				// },{
-				// 	icon: 'favor',
-				// 	text: '暂无收藏'
-				// },{
-				// 	icon: 'permission',
-				// 	text: '无权限'
-				// },{
-				// 	icon: 'history',
-				// 	text: '无历史记录'
-				// },{
-				// 	icon: 'news',
-				// 	text: '无新闻列表'
-				// },{
-				// 	icon: 'message',
-				// 	text: '消息列表为空'
-				// },{
-				// 	icon: 'list',
-				// 	text: '列表为空'
-				// },{
-				// 	icon: 'data',
-				// 	text: '数据为空'
-				// }],
-
-			}
-		}
-	}
-</script>
-
-<style scoped lang="scss">
-	@import "../../libs/css/style.components.scss";
-
-	.u-empty {
-		@include vue-flex;
-		flex-direction: column;
-		justify-content: center;
-		align-items: center;
-		height: 100%;
-	}
-
-	.u-image {
-		margin-bottom: 20rpx;
-	}
-
-	.u-slot-wrap {
-		@include vue-flex;
-		justify-content: center;
-		align-items: center;
-		margin-top: 20rpx;
-	}
-</style>
diff --git a/uview-ui/components/u-field/u-field.vue b/uview-ui/components/u-field/u-field.vue
deleted file mode 100644
index b562798..0000000
--- a/uview-ui/components/u-field/u-field.vue
+++ /dev/null
@@ -1,384 +0,0 @@
-<template>
-	<view class="u-field" :class="{'u-border-top': borderTop, 'u-border-bottom': borderBottom }">
-		<view class="u-field-inner" :class="[type == 'textarea' ? 'u-textarea-inner' : '', 'u-label-postion-' + labelPosition]">
-			<view class="u-label" :class="[required ? 'u-required' : '']" :style="{
-				justifyContent: justifyContent, 
-				flex: labelPosition == 'left' ? `0 0 ${labelWidth}rpx` : '1'
-			}">
-				<view class="u-icon-wrap" v-if="icon">
-					<u-icon size="32" :custom-style="iconStyle" :name="icon" :color="iconColor" class="u-icon"></u-icon>
-				</view>
-				<slot name="icon"></slot>
-				<text class="u-label-text" :class="[this.$slots.icon || icon ? 'u-label-left-gap' : '']">{{ label }}</text>
-			</view>
-			<view class="fild-body">
-				<view class="u-flex-1 u-flex" :style="[inputWrapStyle]">
-					<textarea v-if="type == 'textarea'" class="u-flex-1 u-textarea-class" :style="[fieldStyle]" :value="value"
-					 :placeholder="placeholder" :placeholderStyle="placeholderStyle" :disabled="disabled" :maxlength="inputMaxlength"
-					 :focus="focus" :autoHeight="autoHeight" :fixed="fixed" @input="onInput" @blur="onBlur" @focus="onFocus" @confirm="onConfirm"
-					 @tap="fieldClick" />
-					<input
-						v-else
-						:style="[fieldStyle]"
-						:type="type"
-						class="u-flex-1 u-field__input-wrap"
-						:value="value"
-						:password="password || this.type === 'password'"
-						:placeholder="placeholder"
-						:placeholderStyle="placeholderStyle"
-						:disabled="disabled"
-						:maxlength="inputMaxlength"
-						:focus="focus"
-						:confirmType="confirmType"
-						@focus="onFocus"
-						@blur="onBlur"
-						@input="onInput"
-						@confirm="onConfirm"
-						@tap="fieldClick"
-					/>
-				</view>
-				<u-icon :size="clearSize" v-if="clearable && value != '' && focused" name="close-circle-fill" color="#c0c4cc" class="u-clear-icon" @click="onClear"/>
-				<view class="u-button-wrap"><slot name="right" /></view>
-				<u-icon v-if="rightIcon" @click="rightIconClick" :name="rightIcon" color="#c0c4cc" :style="[rightIconStyle]" size="26" class="u-arror-right" />
-			</view>
-		</view>
-		<view v-if="errorMessage !== false && errorMessage != ''" class="u-error-message" :style="{
-			paddingLeft: labelWidth + 'rpx'
-		}">{{ errorMessage }}</view>
-	</view>
-</template>
-
-<script>
-/**
- * field 输入框
- * @description 借助此组件,可以实现表单的输入, 有"text"和"textarea"类型的,此外,借助uView的picker和actionSheet组件可以快速实现上拉菜单,时间,地区选择等, 为表单解决方案的利器。
- * @tutorial https://www.uviewui.com/components/field.html
- * @property {String} type 输入框的类型(默认text)
- * @property {String} icon label左边的图标,限uView的图标名称
- * @property {Object} icon-style 左边图标的样式,对象形式
- * @property {Boolean} right-icon 输入框右边的图标名称,限uView的图标名称(默认false)
- * @property {Boolean} required 是否必填,左边您显示红色"*"号(默认false)
- * @property {String} label 输入框左边的文字提示
- * @property {Boolean} password 是否密码输入方式(用点替换文字),type为text时有效(默认false)
- * @property {Boolean} clearable 是否显示右侧清空内容的图标控件(输入框有内容,且获得焦点时才显示),点击可清空输入框内容(默认true)
- * @property {Number String} label-width label的宽度,单位rpx(默认130)
- * @property {String} label-align label的文字对齐方式(默认left)
- * @property {Object} field-style 自定义输入框的样式,对象形式
- * @property {Number | String} clear-size 清除图标的大小,单位rpx(默认30)
- * @property {String} input-align 输入框内容对齐方式(默认left)
- * @property {Boolean} border-bottom 是否显示field的下边框(默认true)
- * @property {Boolean} border-top 是否显示field的上边框(默认false)
- * @property {String} icon-color 左边通过icon配置的图标的颜色(默认#606266)
- * @property {Boolean} auto-height 是否自动增高输入区域,type为textarea时有效(默认true)
- * @property {String Boolean} error-message 显示的错误提示内容,如果为空字符串或者false,则不显示错误信息
- * @property {String} placeholder 输入框的提示文字
- * @property {String} placeholder-style placeholder的样式(内联样式,字符串),如"color: #ddd"
- * @property {Boolean} focus 是否自动获得焦点(默认false)
- * @property {Boolean} fixed 如果type为textarea,且在一个"position:fixed"的区域,需要指明为true(默认false)
- * @property {Boolean} disabled 是否不可输入(默认false)
- * @property {Number String} maxlength 最大输入长度,设置为 -1 的时候不限制最大长度(默认140)
- * @property {String} confirm-type 设置键盘右下角按钮的文字,仅在type="text"时生效(默认done)
- * @event {Function} input 输入框内容发生变化时触发
- * @event {Function} focus 输入框获得焦点时触发
- * @event {Function} blur 输入框失去焦点时触发
- * @event {Function} confirm 点击完成按钮时触发
- * @event {Function} right-icon-click 通过right-icon生成的图标被点击时触发
- * @event {Function} click 输入框被点击或者通过right-icon生成的图标被点击时触发,这样设计是考虑到传递右边的图标,一般都为需要弹出"picker"等操作时的场景,点击倒三角图标,理应发出此事件,见上方说明
- * @example <u-field v-model="mobile" label="手机号" required :error-message="errorMessage"></u-field>
- */
-export default {
-	name:"u-field",
-	props: {
-		icon: String,
-		rightIcon: String,
-		// arrowDirection: {
-		// 	type: String,
-		// 	default: 'right'
-		// },
-		required: Boolean,
-		label: String,
-		password: Boolean,
-		clearable: {
-			type: Boolean,
-			default: true
-		},
-		// 左边标题的宽度单位rpx
-		labelWidth: {
-			type: [Number, String],
-			default: 130
-		},
-		// 对齐方式,left|center|right
-		labelAlign: {
-			type: String,
-			default: 'left'
-		},
-		inputAlign: {
-			type: String,
-			default: 'left'
-		},
-		iconColor: {
-			type: String,
-			default: '#606266'
-		},
-		autoHeight: {
-			type: Boolean,
-			default: true
-		},
-		errorMessage: {
-			type: [String, Boolean],
-			default: ''
-		},
-		placeholder: String,
-		placeholderStyle: String,
-		focus: Boolean,
-		fixed: Boolean,
-		value: [Number, String],
-		type: {
-			type: String,
-			default: 'text'
-		},
-		disabled: {
-			type: Boolean,
-			default: false
-		},
-		maxlength: {
-			type: [Number, String],
-			default: 140
-		},
-		confirmType: {
-			type: String,
-			default: 'done'
-		},
-		// lable的位置,可选为 left-左边,top-上边
-		labelPosition: {
-			type: String,
-			default: 'left'
-		},
-		// 输入框的自定义样式
-		fieldStyle: {
-			type: Object,
-			default() {
-				return {}
-			}
-		},
-		// 清除按钮的大小
-		clearSize: {
-			type: [Number, String],
-			default: 30
-		},
-		// lable左边的图标样式,对象形式
-		iconStyle: {
-			type: Object,
-			default() {
-				return {}
-			}
-		},
-		// 是否显示上边框
-		borderTop: {
-			type: Boolean,
-			default: false
-		},
-		// 是否显示下边框
-		borderBottom: {
-			type: Boolean,
-			default: true
-		},
-		// 是否自动去除两端的空格
-		trim: {
-			type: Boolean,
-			default: true
-		}
-	},
-	data() {
-		return {
-			focused: false,
-			itemIndex: 0,
-		};
-	},
-	computed: {
-		inputWrapStyle() {
-			let style = {};
-			style.textAlign = this.inputAlign;
-			// 判断lable的位置,如果是left的话,让input左边两边有间隙
-			if(this.labelPosition == 'left') {
-				style.margin = `0 8rpx`;
-			} else {
-				// 如果lable是top的,input的左边就没必要有间隙了
-				style.marginRight = `8rpx`;
-			}
-			return style;
-		},
-		rightIconStyle() {
-			let style = {};
-			if (this.arrowDirection == 'top') style.transform = 'roate(-90deg)';
-			if (this.arrowDirection == 'bottom') style.transform = 'roate(90deg)';
-			else style.transform = 'roate(0deg)';
-			return style;
-		},
-		labelStyle() {
-			let style = {};
-			if(this.labelAlign == 'left') style.justifyContent = 'flext-start';
-			if(this.labelAlign == 'center') style.justifyContent = 'center';
-			if(this.labelAlign == 'right') style.justifyContent = 'flext-end';
-			return style;
-		},
-		// uni不支持在computed中写style.justifyContent = 'center'的形式,故用此方法
-		justifyContent() {
-			if(this.labelAlign == 'left') return 'flex-start';
-			if(this.labelAlign == 'center') return 'center';
-			if(this.labelAlign == 'right') return 'flex-end';
-		},
-		// 因为uniapp的input组件的maxlength组件必须要数值,这里转为数值,给用户可以传入字符串数值
-		inputMaxlength() {
-			return Number(this.maxlength)
-		},
-		// label的位置
-		fieldInnerStyle() {
-			let style = {};
-			if(this.labelPosition == 'left') {
-				style.flexDirection = 'row';
-			} else {
-				style.flexDirection = 'column';
-			}
-			
-			return style;
-		}
-	},
-	methods: {
-		onInput(event) {
-			let value = event.detail.value;
-			// 判断是否去除空格
-			if(this.trim) value = this.$u.trim(value);
-			this.$emit('input', value);
-		},
-		onFocus(event) {
-			this.focused = true;
-			this.$emit('focus', event);
-		},
-		onBlur(event) {
-			// 最开始使用的是监听图标@touchstart事件,自从hx2.8.4后,此方法在微信小程序出错
-			// 这里改为监听点击事件,手点击清除图标时,同时也发生了@blur事件,导致图标消失而无法点击,这里做一个延时
-			setTimeout(() => {
-				this.focused = false;
-			}, 100)
-			this.$emit('blur', event);
-		},
-		onConfirm(e) {
-			this.$emit('confirm', e.detail.value);
-		},
-		onClear(event) {
-			this.$emit('input', '');
-		},
-		rightIconClick() {
-			this.$emit('right-icon-click');
-			this.$emit('click');
-		},
-		fieldClick() {
-			this.$emit('click');
-		}
-	}
-};
-</script>
-
-<style lang="scss" scoped>
-@import "../../libs/css/style.components.scss";
-	
-.u-field {
-	font-size: 28rpx;
-	padding: 20rpx 28rpx;
-	text-align: left;
-	position: relative;
-	color: $u-main-color;
-}
-
-.u-field-inner {
-	@include vue-flex;
-	align-items: center;
-}
-
-.u-textarea-inner {
-	align-items: flex-start;
-}
-
-.u-textarea-class {
-	min-height: 96rpx;
-	width: auto;
-	font-size: 28rpx;
-}
-
-.fild-body {
-	@include vue-flex;
-	flex: 1;
-	align-items: center;
-}
-
-.u-arror-right {
-	margin-left: 8rpx;
-}
-
-.u-label-text {
-	/* #ifndef APP-NVUE */
-	display: inline-flex;		
-	/* #endif */
-}
-
-.u-label-left-gap {
-	margin-left: 6rpx;
-}
-
-.u-label-postion-top {
-	flex-direction: column;
-	align-items: flex-start;
-}
-
-.u-label {
-	width: 130rpx;
-	flex: 1 1 130rpx;
-	text-align: left;
-	position: relative;
-	@include vue-flex;
-	align-items: center;
-}
-
-.u-required::before {
-	content: '*';
-	position: absolute;
-	left: -16rpx;
-	font-size: 14px;
-	color: $u-type-error;
-	height: 9px;
-	line-height: 1;
-}
-
-.u-field__input-wrap {
-	position: relative;
-	overflow: hidden;
-	font-size: 28rpx;
-	height: 48rpx;
-	flex: 1;
-	width: auto;
-}
-
-.u-clear-icon {
-	@include vue-flex;
-	align-items: center;
-}
-
-.u-error-message {
-	color: $u-type-error;
-	font-size: 26rpx;
-	text-align: left;
-}
-
-.placeholder-style {
-	color: rgb(150, 151, 153);
-}
-
-.u-input-class {
-	font-size: 28rpx;
-}
-
-.u-button-wrap {
-	margin-left: 8rpx;
-}
-</style>
diff --git a/uview-ui/components/u-form-item/u-form-item.vue b/uview-ui/components/u-form-item/u-form-item.vue
deleted file mode 100644
index d6b8c8b..0000000
--- a/uview-ui/components/u-form-item/u-form-item.vue
+++ /dev/null
@@ -1,431 +0,0 @@
-<template>
-	<view class="u-form-item" :class="{'u-border-bottom': elBorderBottom, 'u-form-item__border-bottom--error': validateState === 'error' && showError('border-bottom')}">
-		<view class="u-form-item__body" :style="{
-			flexDirection: elLabelPosition == 'left' ? 'row' : 'column'
-		}">
-			<!-- 微信小程序中,将一个参数设置空字符串,结果会变成字符串"true" -->
-			<view class="u-form-item--left" :style="{
-				width: uLabelWidth,
-				flex: `0 0 ${uLabelWidth}`,
-				marginBottom: elLabelPosition == 'left' ? 0 : '10rpx',
-			}">
-				<!-- 为了块对齐 -->
-				<view class="u-form-item--left__content" v-if="required || leftIcon || label">
-					<!-- nvue不支持伪元素before -->
-					<text v-if="required" class="u-form-item--left__content--required">*</text>
-					<view class="u-form-item--left__content__icon" v-if="leftIcon">
-						<u-icon :name="leftIcon" :custom-style="leftIconStyle"></u-icon>
-					</view>
-					<view class="u-form-item--left__content__label" :style="[elLabelStyle, {
-						'justify-content': elLabelAlign == 'left' ? 'flex-start' : elLabelAlign == 'center' ? 'center' : 'flex-end'
-					}]">
-						{{label}}
-					</view>
-				</view>
-			</view>
-			<view class="u-form-item--right u-flex">
-				<view class="u-form-item--right__content">
-					<view class="u-form-item--right__content__slot ">
-						<slot />
-					</view>
-					<view class="u-form-item--right__content__icon u-flex" v-if="$slots.right || rightIcon">
-						<u-icon :custom-style="rightIconStyle" v-if="rightIcon" :name="rightIcon"></u-icon>
-						<slot name="right" />
-					</view>
-				</view>
-			</view>
-		</view>
-		<view class="u-form-item__message" v-if="validateState === 'error' && showError('message')" :style="{
-			paddingLeft: elLabelPosition == 'left' ? $u.addUnit(elLabelWidth) : '0',
-		}">{{validateMessage}}</view>
-	</view>
-</template>
-
-<script>
-	import Emitter from '../../libs/util/emitter.js';
-	import schema from '../../libs/util/async-validator';
-	// 去除警告信息
-	schema.warning = function() {};
-
-	/**
-	 * form-item 表单item
-	 * @description 此组件一般用于表单场景,可以配置Input输入框,Select弹出框,进行表单验证等。
-	 * @tutorial http://uviewui.com/components/form.html
-	 * @property {String} label 左侧提示文字
-	 * @property {Object} prop 表单域model对象的属性名,在使用 validate、resetFields 方法的情况下,该属性是必填的
-	 * @property {Boolean} border-bottom 是否显示表单域的下划线边框
-	 * @property {String} label-position 表单域提示文字的位置,left-左侧,top-上方
-	 * @property {String Number} label-width 提示文字的宽度,单位rpx(默认90)
-	 * @property {Object} label-style lable的样式,对象形式
-	 * @property {String} label-align lable的对齐方式
-	 * @property {String} right-icon 右侧自定义字体图标(限uView内置图标)或图片地址
-	 * @property {String} left-icon 左侧自定义字体图标(限uView内置图标)或图片地址
-	 * @property {Object} left-icon-style 左侧图标的样式,对象形式
-	 * @property {Object} right-icon-style 右侧图标的样式,对象形式
-	 * @property {Boolean} required 是否显示左边的"*"号,这里仅起展示作用,如需校验必填,请通过rules配置必填规则(默认false)
-	 * @example <u-form-item label="姓名"><u-input v-model="form.name" /></u-form-item>
-	 */
-
-	export default {
-		name: 'u-form-item',
-		mixins: [Emitter],
-		inject: {
-			uForm: {
-				default () {
-					return null
-				}
-			}
-		},
-		props: {
-			// input的label提示语
-			label: {
-				type: String,
-				default: ''
-			},
-			// 绑定的值
-			prop: {
-				type: String,
-				default: ''
-			},
-			// 是否显示表单域的下划线边框
-			borderBottom: {
-				type: [String, Boolean],
-				default: ''
-			},
-			// label的位置,left-左边,top-上边
-			labelPosition: {
-				type: String,
-				default: ''
-			},
-			// label的宽度,单位rpx
-			labelWidth: {
-				type: [String, Number],
-				default: ''
-			},
-			// lable的样式,对象形式
-			labelStyle: {
-				type: Object,
-				default () {
-					return {}
-				}
-			},
-			// lable字体的对齐方式
-			labelAlign: {
-				type: String,
-				default: ''
-			},
-			// 右侧图标
-			rightIcon: {
-				type: String,
-				default: ''
-			},
-			// 左侧图标
-			leftIcon: {
-				type: String,
-				default: ''
-			},
-			// 左侧图标的样式
-			leftIconStyle: {
-				type: Object,
-				default () {
-					return {}
-				}
-			},
-			// 左侧图标的样式
-			rightIconStyle: {
-				type: Object,
-				default () {
-					return {}
-				}
-			},
-			// 是否显示左边的必填星号,只作显示用,具体校验必填的逻辑,请在rules中配置
-			required: {
-				type: Boolean,
-				default: false
-			}
-		},
-		data() {
-			return {
-				initialValue: '', // 存储的默认值
-				// isRequired: false, // 是否必填,由于人性化考虑,必填"*"号通过props的required配置,不再通过rules的规则自动生成
-				validateState: '', // 是否校验成功
-				validateMessage: '', // 校验失败的提示语
-				// 有错误时的提示方式,message-提示信息,border-如果input设置了边框,变成呈红色,
-				errorType: ['message'],
-				fieldValue: '', // 获取当前子组件input的输入的值
-				// 父组件的参数,在computed计算中,无法得知this.parent发生变化,故将父组件的参数值,放到data中
-				parentData: {
-					borderBottom: true,
-					labelWidth: 90,
-					labelPosition: 'left',
-					labelStyle: {},
-					labelAlign: 'left',
-				}
-			};
-		},
-		watch: {
-			validateState(val) {
-				this.broadcastInputError();
-			},
-			// 监听u-form组件的errorType的变化
-			"uForm.errorType"(val) {
-				this.errorType = val;
-				this.broadcastInputError();
-			},
-		},
-		computed: {
-			// 计算后的label宽度,由于需要多个判断,故放到computed中
-			uLabelWidth() {
-				// 如果用户设置label为空字符串(微信小程序空字符串最终会变成字符串的'true'),意味着要将label的位置宽度设置为auto
-				return this.elLabelPosition == 'left' ? (this.label === 'true' || this.label === '' ? 'auto' : this.$u.addUnit(this
-					.elLabelWidth)) : '100%';
-			},
-			showError() {
-				return type => {
-					// 如果errorType数组中含有none,或者toast提示类型
-					if (this.errorType.indexOf('none') >= 0) return false;
-					else if (this.errorType.indexOf(type) >= 0) return true;
-					else return false;
-				}
-			},
-			// label的宽度
-			elLabelWidth() {
-				// label默认宽度为90,优先使用本组件的值,如果没有(如果设置为0,也算是配置了值,依然起效),则用u-form的值
-				return (this.labelWidth != 0 || this.labelWidth != '') ? this.labelWidth : (this.parentData.labelWidth ? this.parentData
-					.labelWidth :
-					90);
-			},
-			// label的样式
-			elLabelStyle() {
-				return Object.keys(this.labelStyle).length ? this.labelStyle : (this.parentData.labelStyle ? this.parentData.labelStyle :
-					{});
-			},
-			// label的位置,左侧或者上方
-			elLabelPosition() {
-				return this.labelPosition ? this.labelPosition : (this.parentData.labelPosition ? this.parentData.labelPosition :
-					'left');
-			},
-			// label的对齐方式
-			elLabelAlign() {
-				return this.labelAlign ? this.labelAlign : (this.parentData.labelAlign ? this.parentData.labelAlign : 'left');
-			},
-			// label的下划线
-			elBorderBottom() {
-				// 子组件的borderBottom默认为空字符串,如果不等于空字符串,意味着子组件设置了值,优先使用子组件的值
-				return this.borderBottom !== '' ? this.borderBottom : this.parentData.borderBottom ? this.parentData.borderBottom :
-					true;
-			}
-		},
-		methods: {
-			broadcastInputError() {
-				// 子组件发出事件,第三个参数为true或者false,true代表有错误
-				this.broadcast('u-input', 'on-form-item-error', this.validateState === 'error' && this.showError('border'));
-			},
-			// 判断是否需要required校验
-			setRules() {
-				let that = this;
-				// 由于人性化考虑,必填"*"号通过props的required配置,不再通过rules的规则自动生成
-				// 从父组件u-form拿到当前u-form-item需要验证 的规则
-				// let rules = this.getRules();
-				// if (rules.length) {
-				// 	this.isRequired = rules.some(rule => {
-				// 		// 如果有必填项,就返回,没有的话,就是undefined
-				// 		return rule.required;
-				// 	});
-				// }
-
-				// blur事件
-				this.$on('on-form-blur', that.onFieldBlur);
-				// change事件
-				this.$on('on-form-change', that.onFieldChange);
-			},
-
-			// 从u-form的rules属性中,取出当前u-form-item的校验规则
-			getRules() {
-				// 父组件的所有规则
-				let rules = this.parent.rules;
-				rules = rules ? rules[this.prop] : [];
-				// 保证返回的是一个数组形式
-				return [].concat(rules || []);
-			},
-
-			// blur事件时进行表单校验
-			onFieldBlur() {
-				this.validation('blur');
-			},
-
-			// change事件进行表单校验
-			onFieldChange() {
-				this.validation('change');
-			},
-
-			// 过滤出符合要求的rule规则
-			getFilteredRule(triggerType = '') {
-				let rules = this.getRules();
-				// 整体验证表单时,triggerType为空字符串,此时返回所有规则进行验证
-				if (!triggerType) return rules;
-				// 历遍判断规则是否有对应的事件,比如blur,change触发等的事件
-				// 使用indexOf判断,是因为某些时候设置的验证规则的trigger属性可能为多个,比如['blur','change']
-				// 某些场景可能的判断规则,可能不存在trigger属性,故先判断是否存在此属性
-				return rules.filter(res => res.trigger && res.trigger.indexOf(triggerType) !== -1);
-			},
-
-			// 校验数据
-			validation(trigger, callback = () => {}) {
-				// 检验之间,先获取需要校验的值
-				this.fieldValue = this.parent.model[this.prop];
-				// blur和change是否有当前方式的校验规则
-				let rules = this.getFilteredRule(trigger);
-				// 判断是否有验证规则,如果没有规则,也调用回调方法,否则父组件u-form会因为
-				// 对count变量的统计错误而无法进入上一层的回调
-				if (!rules || rules.length === 0) {
-					return callback('');
-				}
-				// 设置当前的装填,标识为校验中
-				this.validateState = 'validating';
-				// 调用async-validator的方法
-				let validator = new schema({
-					[this.prop]: rules
-				});
-				validator.validate({
-					[this.prop]: this.fieldValue
-				}, {
-					firstFields: true
-				}, (errors, fields) => {
-					// 记录状态和报错信息
-					this.validateState = !errors ? 'success' : 'error';
-					this.validateMessage = errors ? errors[0].message : '';
-					// 调用回调方法
-					callback(this.validateMessage);
-				});
-			},
-
-			// 清空当前的u-form-item
-			resetField() {
-				this.parent.model[this.prop] = this.initialValue;
-				// 设置为`success`状态,只是为了清空错误标记
-				this.validateState = 'success';
-			}
-		},
-
-		// 组件创建完成时,将当前实例保存到u-form中
-		mounted() {
-			// 支付宝、头条小程序不支持provide/inject,所以使用这个方法获取整个父组件,在created定义,避免循环应用
-			this.parent = this.$u.$parent.call(this, 'u-form');
-			if (this.parent) {
-				// 历遍parentData中的属性,将parent中的同名属性赋值给parentData
-				Object.keys(this.parentData).map(key => {
-					this.parentData[key] = this.parent[key];
-				});
-				// 如果没有传入prop,或者uForm为空(如果u-form-input单独使用,就不会有uForm注入),就不进行校验
-				if (this.prop) {
-					// 将本实例添加到父组件中
-					this.parent.fields.push(this);
-					this.errorType = this.parent.errorType;
-					// 设置初始值
-					this.initialValue = this.fieldValue;
-					// 添加表单校验,这里必须要写在$nextTick中,因为u-form的rules是通过ref手动传入的
-					// 不在$nextTick中的话,可能会造成执行此处代码时,父组件还没通过ref把规则给u-form,导致规则为空
-					this.$nextTick(() => {
-						this.setRules();
-					})
-				}
-			}
-		},
-
-		// 组件销毁前,将实例从u-form的缓存中移除
-		beforeDestroy() {
-			// 如果当前没有prop的话表示当前不要进行删除(因为没有注入)
-			if (this.parent && this.prop) {
-				this.parent.fields.map((item, index) => {
-					if (item === this) this.parent.fields.splice(index, 1);
-				})
-			}
-		},
-	};
-</script>
-
-<style lang="scss" scoped>
-	@import "../../libs/css/style.components.scss";
-
-	.u-form-item {
-		@include vue-flex;
-		// align-items: flex-start;
-		padding: 20rpx 0;
-		font-size: 28rpx;
-		color: $u-main-color;
-		box-sizing: border-box;
-		line-height: $u-form-item-height;
-		flex-direction: column;
-
-		&__border-bottom--error:after {
-			border-color: $u-type-error;
-		}
-
-		&__body {
-			@include vue-flex;
-		}
-
-		&--left {
-			@include vue-flex;
-			align-items: center;
-
-			&__content {
-				position: relative;
-				@include vue-flex;
-				align-items: center;
-				padding-right: 10rpx;
-				flex: 1;
-
-				&__icon {
-					margin-right: 8rpx;
-				}
-
-				&--required {
-					position: absolute;
-					left: -16rpx;
-					vertical-align: middle;
-					color: $u-type-error;
-					padding-top: 6rpx;
-				}
-
-				&__label {
-					@include vue-flex;
-					align-items: center;
-					flex: 1;
-				}
-			}
-		}
-
-		&--right {
-			flex: 1;
-
-			&__content {
-				@include vue-flex;
-				align-items: center;
-				flex: 1;
-
-				&__slot {
-					flex: 1;
-					/* #ifndef MP */
-					@include vue-flex;
-					align-items: center;
-					/* #endif */
-				}
-
-				&__icon {
-					margin-left: 10rpx;
-					color: $u-light-color;
-					font-size: 30rpx;
-				}
-			}
-		}
-
-		&__message {
-			font-size: 24rpx;
-			line-height: 24rpx;
-			color: $u-type-error;
-			margin-top: 12rpx;
-		}
-	}
-</style>
diff --git a/uview-ui/components/u-form/u-form.vue b/uview-ui/components/u-form/u-form.vue
deleted file mode 100644
index bdbafaf..0000000
--- a/uview-ui/components/u-form/u-form.vue
+++ /dev/null
@@ -1,134 +0,0 @@
-<template>
-	<view class="u-form"><slot /></view>
-</template>
-
-<script>
-	/**
-	 * form 表单
-	 * @description 此组件一般用于表单场景,可以配置Input输入框,Select弹出框,进行表单验证等。
-	 * @tutorial http://uviewui.com/components/form.html
-	 * @property {Object} model 表单数据对象
-	 * @property {Boolean} border-bottom 是否显示表单域的下划线边框
-	 * @property {String} label-position 表单域提示文字的位置,left-左侧,top-上方
-	 * @property {String Number} label-width 提示文字的宽度,单位rpx(默认90)
-	 * @property {Object} label-style lable的样式,对象形式
-	 * @property {String} label-align lable的对齐方式
-	 * @property {Object} rules 通过ref设置,见官网说明
-	 * @property {Array} error-type 错误的提示方式,数组形式,见上方说明(默认['message'])
-	 * @example <u-form :model="form" ref="uForm"></u-form>
-	 */
-
-export default {
-	name: 'u-form',
-	props: {
-		// 当前form的需要验证字段的集合
-		model: {
-			type: Object,
-			default() {
-				return {};
-			}
-		},
-		// 验证规则
-		// rules: {
-		// 	type: [Object, Function, Array],
-		// 	default() {
-		// 		return {};
-		// 	}
-		// },
-		// 有错误时的提示方式,message-提示信息,border-如果input设置了边框,变成呈红色,
-		// border-bottom-下边框呈现红色,none-无提示
-		errorType: {
-			type: Array,
-			default() {
-				return ['message', 'toast']
-			}
-		},
-		// 是否显示表单域的下划线边框
-		borderBottom: {
-			type: Boolean,
-			default: true
-		},
-		// label的位置,left-左边,top-上边
-		labelPosition: {
-			type: String,
-			default: 'left'
-		},
-		// label的宽度,单位rpx
-		labelWidth: {
-			type: [String, Number],
-			default: 90
-		},
-		// lable字体的对齐方式
-		labelAlign: {
-			type: String,
-			default: 'left'
-		},
-		// lable的样式,对象形式
-		labelStyle: {
-			type: Object,
-			default() {
-				return {}
-			}
-		},
-	},
-	provide() {
-		return {
-			uForm: this
-		};
-	},
-	data() {
-		return {
-			rules: {}
-		};
-	},
-	created() {
-		// 存储当前form下的所有u-form-item的实例
-		// 不能定义在data中,否则微信小程序会造成循环引用而报错
-		this.fields = [];
-	},
-	methods: {
-		setRules(rules) {
-			this.rules = rules;
-		},
-		// 清空所有u-form-item组件的内容,本质上是调用了u-form-item组件中的resetField()方法
-		resetFields() {
-			this.fields.map(field => {
-				field.resetField();
-			});
-		},
-		// 校验全部数据
-		validate(callback) {
-			return new Promise(resolve => {
-				// 对所有的u-form-item进行校验
-				let valid = true; // 默认通过
-				let count = 0; // 用于标记是否检查完毕
-				let errorArr = []; // 存放错误信息
-				this.fields.map(field => {
-					// 调用每一个u-form-item实例的validation的校验方法
-					field.validation('', error => {
-						// 如果任意一个u-form-item校验不通过,就意味着整个表单不通过
-						if (error) {
-							valid = false;
-							errorArr.push(error);
-						}
-						// 当历遍了所有的u-form-item时,调用promise的then方法
-						if (++count === this.fields.length) {
-							resolve(valid); // 进入promise的then方法
-							// 判断是否设置了toast的提示方式,只提示最前面的表单域的第一个错误信息
-							if(this.errorType.indexOf('none') === -1 && this.errorType.indexOf('toast') >= 0 && errorArr.length) {
-								this.$u.toast(errorArr[0]);
-							}
-							// 调用回调方法
-							if (typeof callback == 'function') callback(valid);
-						}
-					});
-				});
-			});
-		}
-	}
-};
-</script>
-
-<style scoped lang="scss">
-@import "../../libs/css/style.components.scss";
-</style>
diff --git a/uview-ui/components/u-full-screen/u-full-screen.vue b/uview-ui/components/u-full-screen/u-full-screen.vue
deleted file mode 100644
index 4f7e7d9..0000000
--- a/uview-ui/components/u-full-screen/u-full-screen.vue
+++ /dev/null
@@ -1,52 +0,0 @@
-<template>
-	<u-modal v-model="show" :show-cancel-button="true" confirm-text="升级" title="发现新版本" @cancel="cancel" @confirm="confirm">
-		<view class="u-update-content">
-			<rich-text :nodes="content"></rich-text>
-		</view>
-	</u-modal>
-</template>
-
-<script>
-	export default {
-		data() {
-			return {
-				show: false,
-				content: `
-					1. 修复badge组件的size参数无效问题<br>
-					2. 新增Modal模态框组件<br>
-					3. 新增压窗屏组件,可以在APP上以弹窗的形式遮盖导航栏和底部tabbar<br>
-					4. 修复键盘组件在微信小程序上遮罩无效的问题
-				`,
-			}
-		},
-		onReady() {
-			this.show = true;
-		},
-		methods: {
-			cancel() {
-				this.closeModal();
-			},
-			confirm() {
-				this.closeModal();
-			},
-			closeModal() {
-				uni.navigateBack();
-			}
-		}
-	}
-</script>
-
-<style scoped lang="scss">
-	@import "../../libs/css/style.components.scss";
-	
-	.u-full-content {
-		background-color: #00C777;
-	}
-	
-	.u-update-content {
-		font-size: 26rpx;
-		color: $u-content-color;
-		line-height: 1.7;
-		padding: 30rpx;
-	}
-</style>
diff --git a/uview-ui/components/u-gap/u-gap.vue b/uview-ui/components/u-gap/u-gap.vue
deleted file mode 100644
index 6c01f94..0000000
--- a/uview-ui/components/u-gap/u-gap.vue
+++ /dev/null
@@ -1,54 +0,0 @@
-<template>
-	<view class="u-gap" :style="[gapStyle]"></view>
-</template>
-
-<script>
-/**
- * gap 间隔槽
- * @description 该组件一般用于内容块之间的用一个灰色块隔开的场景,方便用户风格统一,减少工作量
- * @tutorial https://www.uviewui.com/components/gap.html
- * @property {String} bg-color 背景颜色(默认#f3f4f6)
- * @property {String Number} height 分割槽高度,单位rpx(默认30)
- * @property {String Number} margin-top 与前一个组件的距离,单位rpx(默认0)
- * @property {String Number} margin-bottom 与后一个组件的距离,单位rpx(0)
- * @example <u-gap height="80" bg-color="#bbb"></u-gap>
- */
-export default {
-	name: "u-gap",
-	props: {
-		bgColor: {
-			type: String,
-			default: 'transparent ' // 背景透明
-		},
-		// 高度
-		height: {
-			type: [String, Number],
-			default: 30
-		},
-		// 与上一个组件的距离
-		marginTop: {
-			type: [String, Number],
-			default: 0
-		},
-		// 与下一个组件的距离
-		marginBottom: {
-			type: [String, Number],
-			default: 0
-		},
-	},
-	computed: {
-		gapStyle() {
-			return {
-				backgroundColor: this.bgColor,
-				height: this.height + 'rpx',
-				marginTop: this.marginTop + 'rpx',
-				marginBottom: this.marginBottom + 'rpx'
-			};
-		}
-	}
-};
-</script>
-
-<style lang="scss" scoped>
-	@import "../../libs/css/style.components.scss";
-</style>
diff --git a/uview-ui/components/u-grid-item/u-grid-item.vue b/uview-ui/components/u-grid-item/u-grid-item.vue
deleted file mode 100644
index 0773307..0000000
--- a/uview-ui/components/u-grid-item/u-grid-item.vue
+++ /dev/null
@@ -1,126 +0,0 @@
-<template>
-	<view class="u-grid-item" :hover-class="parentData.hoverClass"
-	 :hover-stay-time="200" @tap="click" :style="{
-			background: bgColor,
-			width: width,
-		}">
-		<view class="u-grid-item-box" :style="[customStyle]" :class="[parentData.border ? 'u-border-right u-border-bottom' : '']">
-			<slot />
-		</view>
-	</view>
-</template>
-
-<script>
-	/**
-	 * gridItem 提示
-	 * @description 宫格组件一般用于同时展示多个同类项目的场景,可以给宫格的项目设置徽标组件(badge),或者图标等,也可以扩展为左右滑动的轮播形式。搭配u-grid使用
-	 * @tutorial https://www.uviewui.com/components/grid.html
-	 * @property {String} bg-color 宫格的背景颜色(默认#ffffff)
-	 * @property {String Number} index 点击宫格时,返回的值
-	 * @property {Object} custom-style 自定义样式,对象形式
-	 * @event {Function} click 点击宫格触发
-	 * @example <u-grid-item></u-grid-item>
-	 */
-	export default {
-		name: "u-grid-item",
-		props: {
-			// 背景颜色
-			bgColor: {
-				type: String,
-				default: '#ffffff'
-			},
-			// 点击时返回的index
-			index: {
-				type: [Number, String],
-				default: ''
-			},
-			// 自定义样式,对象形式
-			customStyle: {
-				type: Object,
-				default() {
-					return {
-						padding: '30rpx 0'
-					}
-				}
-			}
-		},
-		data() {
-			return {
-				parentData: {
-					hoverClass: '', // 按下去的时候,是否显示背景灰色
-					col: 3, // 父组件划分的宫格数
-					border: true, // 是否显示边框,根据父组件决定
-				}
-			};
-		},
-		created() {
-			// 父组件的实例
-			this.updateParentData();
-			// this.parent在updateParentData()中定义
-			this.parent.children.push(this);
-		},
-		computed: {
-			// 每个grid-item的宽度
-			width() {
-				return 100 / Number(this.parentData.col) + '%';
-			},
-		},
-		methods: {
-			// 获取父组件的参数
-			updateParentData() {
-				// 此方法写在mixin中
-				this.getParentData('u-grid');
-			},
-			click() {
-				this.$emit('click', this.index);
-				this.parent && this.parent.click(this.index);
-			}
-		}
-	};
-</script>
-
-<style scoped lang="scss">
-	@import "../../libs/css/style.components.scss";
-	
-	.u-grid-item {
-		box-sizing: border-box;
-		background: #fff;
-		@include vue-flex;
-		align-items: center;
-		justify-content: center;
-		position: relative;
-		flex-direction: column;
-		
-		/* #ifdef MP */
-		position: relative;
-		float: left;
-		/* #endif */
-	}
-
-	.u-grid-item-hover {
-		background: #f7f7f7 !important;
-	}
-
-	.u-grid-marker-box {
-		position: absolute;
-		/* #ifndef APP-NVUE */
-		display: inline-flex;		
-		/* #endif */
-		line-height: 0;
-	}
-
-	.u-grid-marker-wrap {
-		position: absolute;
-	}
-
-	.u-grid-item-box {
-		padding: 30rpx 0;
-		@include vue-flex;
-		align-items: center;
-		justify-content: center;
-		flex-direction: column;
-		flex: 1;
-		width: 100%;
-		height: 100%;
-	}
-</style>
diff --git a/uview-ui/components/u-grid/u-grid.vue b/uview-ui/components/u-grid/u-grid.vue
deleted file mode 100644
index 6cb557c..0000000
--- a/uview-ui/components/u-grid/u-grid.vue
+++ /dev/null
@@ -1,108 +0,0 @@
-<template>
-	<view class="u-grid" :class="{'u-border-top u-border-left': border}" :style="[gridStyle]"><slot /></view>
-</template>
-
-<script>
-/**
- * grid 宫格布局
- * @description 宫格组件一般用于同时展示多个同类项目的场景,可以给宫格的项目设置徽标组件(badge),或者图标等,也可以扩展为左右滑动的轮播形式。
- * @tutorial https://www.uviewui.com/components/grid.html
- * @property {String Number} col 宫格的列数(默认3)
- * @property {Boolean} border 是否显示宫格的边框(默认true)
- * @property {Boolean} hover-class 点击宫格的时候,是否显示按下的灰色背景(默认false)
- * @event {Function} click 点击宫格触发
- * @example <u-grid :col="3" @click="click"></u-grid>
- */
-export default {
-	name: 'u-grid',
-	props: {
-		// 分成几列
-		col: {
-			type: [Number, String],
-			default: 3
-		},
-		// 是否显示边框
-		border: {
-			type: Boolean,
-			default: true
-		},
-		// 宫格对齐方式,表现为数量少的时候,靠左,居中,还是靠右
-		align: {
-			type: String,
-			default: 'left'
-		},
-		// 宫格按压时的样式类,"none"为无效果
-		hoverClass: {
-			type: String,
-			default: 'u-hover-class'
-		}
-	},
-	data() {
-		return {
-			index: 0,
-		}
-	},
-	watch: {
-		// 当父组件需要子组件需要共享的参数发生了变化,手动通知子组件
-		parentData() {
-			if(this.children.length) {
-				this.children.map(child => {
-					// 判断子组件(u-radio)如果有updateParentData方法的话,就就执行(执行的结果是子组件重新从父组件拉取了最新的值)
-					typeof(child.updateParentData) == 'function' && child.updateParentData();
-				})
-			}
-		},
-	},
-	created() {
-		// 如果将children定义在data中,在微信小程序会造成循环引用而报错
-		this.children = [];
-	},
-	computed: {
-		// 计算父组件的值是否发生变化
-		parentData() {
-			return [this.hoverClass, this.col, this.size, this.border];
-		},
-		// 宫格对齐方式
-		gridStyle() {
-			let style = {};
-			switch(this.align) {
-				case 'left':
-					style.justifyContent = 'flex-start';
-					break;
-				case 'center':
-					style.justifyContent = 'center';
-					break;
-				case 'right':
-					style.justifyContent = 'flex-end';
-					break;
-				default: style.justifyContent = 'flex-start';
-			};
-			return style;
-		}
-	},
-	methods: {
-		click(index) {
-			this.$emit('click', index);
-		}
-	}
-};
-</script>
-
-<style scoped lang="scss">
-@import "../../libs/css/style.components.scss";
-
-.u-grid {
-	width: 100%;
-	/* #ifdef MP */
-	position: relative;
-	box-sizing: border-box;
-	/*overflow: hidden;*/
-	/* #endif */
-	
-	/* #ifndef MP */
-	@include vue-flex;
-	flex-wrap: wrap;
-	align-items: center;
-	/* #endif */
-}
-</style>
diff --git a/uview-ui/components/u-icon/u-icon.vue b/uview-ui/components/u-icon/u-icon.vue
deleted file mode 100644
index db1b019..0000000
--- a/uview-ui/components/u-icon/u-icon.vue
+++ /dev/null
@@ -1,336 +0,0 @@
-<template>
-	<view :style="[customStyle]" class="u-icon" @tap="click" :class="['u-icon--' + labelPos]">
-		<image class="u-icon__img" v-if="isImg" :src="name" :mode="imgMode" :style="[imgStyle]"></image>
-		<text v-else class="u-icon__icon" :class="customClass" :style="[iconStyle]" :hover-class="hoverClass"
-			  @touchstart="touchstart">
-			<text v-if="showDecimalIcon" :style="[decimalIconStyle]" :class="decimalIconClass" :hover-class="hoverClass"
-				  class="u-icon__decimal">
-			</text>
-		</text>
-		<!-- 这里进行空字符串判断,如果仅仅是v-if="label",可能会出现传递0的时候,结果也无法显示 -->
-		<text v-if="label !== ''" class="u-icon__label" :style="{
-			color: labelColor,
-			fontSize: $u.addUnit(labelSize),
-			marginLeft: labelPos == 'right' ? $u.addUnit(marginLeft) : 0,
-			marginTop: labelPos == 'bottom' ? $u.addUnit(marginTop) : 0,
-			marginRight: labelPos == 'left' ? $u.addUnit(marginRight) : 0,
-			marginBottom: labelPos == 'top' ? $u.addUnit(marginBottom) : 0,
-		}">{{ label }}
-		</text>
-	</view>
-</template>
-
-<script>
-/**
- * icon 图标
- * @description 基于字体的图标集,包含了大多数常见场景的图标。
- * @tutorial https://www.uviewui.com/components/icon.html
- * @property {String} name 图标名称,见示例图标集
- * @property {String} color 图标颜色(默认inherit)
- * @property {String | Number} size 图标字体大小,单位rpx(默认32)
- * @property {String | Number} label-size label字体大小,单位rpx(默认28)
- * @property {String} label 图标右侧的label文字(默认28)
- * @property {String} label-pos label文字相对于图标的位置,只能right或bottom(默认right)
- * @property {String} label-color label字体颜色(默认#606266)
- * @property {Object} custom-style icon的样式,对象形式
- * @property {String} custom-prefix 自定义字体图标库时,需要写上此值
- * @property {String | Number} margin-left label在右侧时与图标的距离,单位rpx(默认6)
- * @property {String | Number} margin-top label在下方时与图标的距离,单位rpx(默认6)
- * @property {String | Number} margin-bottom label在上方时与图标的距离,单位rpx(默认6)
- * @property {String | Number} margin-right label在左侧时与图标的距离,单位rpx(默认6)
- * @property {String} label-pos label相对于图标的位置,只能right或bottom(默认right)
- * @property {String} index 一个用于区分多个图标的值,点击图标时通过click事件传出
- * @property {String} hover-class 图标按下去的样式类,用法同uni的view组件的hover-class参数,详情见官网
- * @property {String} width 显示图片小图标时的宽度
- * @property {String} height 显示图片小图标时的高度
- * @property {String} top 图标在垂直方向上的定位
- * @property {String} top 图标在垂直方向上的定位
- * @property {String} top 图标在垂直方向上的定位
- * @property {Boolean} show-decimal-icon 是否为DecimalIcon
- * @property {String} inactive-color 背景颜色,可接受主题色,仅Decimal时有效
- * @property {String | Number} percent 显示的百分比,仅Decimal时有效
- * @event {Function} click 点击图标时触发
- * @example <u-icon name="photo" color="#2979ff" size="28"></u-icon>
- */
-export default {
-	name: 'u-icon',
-	props: {
-		// 图标类名
-		name: {
-			type: String,
-			default: ''
-		},
-		// 图标颜色,可接受主题色
-		color: {
-			type: String,
-			default: ''
-		},
-		// 字体大小,单位rpx
-		size: {
-			type: [Number, String],
-			default: 'inherit'
-		},
-		// 是否显示粗体
-		bold: {
-			type: Boolean,
-			default: false
-		},
-		// 点击图标的时候传递事件出去的index(用于区分点击了哪一个)
-		index: {
-			type: [Number, String],
-			default: ''
-		},
-		// 触摸图标时的类名
-		hoverClass: {
-			type: String,
-			default: ''
-		},
-		// 自定义扩展前缀,方便用户扩展自己的图标库
-		customPrefix: {
-			type: String,
-			default: 'uicon'
-		},
-		// 图标右边或者下面的文字
-		label: {
-			type: [String, Number],
-			default: ''
-		},
-		// label的位置,只能右边或者下边
-		labelPos: {
-			type: String,
-			default: 'right'
-		},
-		// label的大小
-		labelSize: {
-			type: [String, Number],
-			default: '28'
-		},
-		// label的颜色
-		labelColor: {
-			type: String,
-			default: '#606266'
-		},
-		// label与图标的距离(横向排列)
-		marginLeft: {
-			type: [String, Number],
-			default: '6'
-		},
-		// label与图标的距离(竖向排列)
-		marginTop: {
-			type: [String, Number],
-			default: '6'
-		},
-		// label与图标的距离(竖向排列)
-		marginRight: {
-			type: [String, Number],
-			default: '6'
-		},
-		// label与图标的距离(竖向排列)
-		marginBottom: {
-			type: [String, Number],
-			default: '6'
-		},
-		// 图片的mode
-		imgMode: {
-			type: String,
-			default: 'widthFix'
-		},
-		// 自定义样式
-		customStyle: {
-			type: Object,
-			default() {
-				return {}
-			}
-		},
-		// 用于显示图片小图标时,图片的宽度
-		width: {
-			type: [String, Number],
-			default: ''
-		},
-		// 用于显示图片小图标时,图片的高度
-		height: {
-			type: [String, Number],
-			default: ''
-		},
-		// 用于解决某些情况下,让图标垂直居中的用途
-		top: {
-			type: [String, Number],
-			default: 0
-		},
-		// 是否为DecimalIcon
-		showDecimalIcon: {
-			type: Boolean,
-			default: false
-		},
-		// 背景颜色,可接受主题色,仅Decimal时有效
-		inactiveColor: {
-			type: String,
-			default: '#ececec'
-		},
-		// 显示的百分比,仅Decimal时有效
-		percent: {
-			type: [Number, String],
-			default: '50'
-		}
-	},
-	computed: {
-		customClass() {
-			let classes = []
-			classes.push(this.customPrefix + '-' + this.name)
-			// uView的自定义图标类名为u-iconfont
-			if (this.customPrefix == 'uicon') {
-				classes.push('u-iconfont')
-			} else {
-				classes.push(this.customPrefix)
-			}
-			// 主题色,通过类配置
-			if (this.showDecimalIcon && this.inactiveColor && this.$u.config.type.includes(this.inactiveColor)) {
-				classes.push('u-icon__icon--' + this.inactiveColor)
-			} else if (this.color && this.$u.config.type.includes(this.color)) classes.push('u-icon__icon--' + this.color)
-			// 阿里,头条,百度小程序通过数组绑定类名时,无法直接使用[a, b, c]的形式,否则无法识别
-			// 故需将其拆成一个字符串的形式,通过空格隔开各个类名
-			//#ifdef MP-ALIPAY || MP-TOUTIAO || MP-BAIDU
-			classes = classes.join(' ')
-			//#endif
-			return classes
-		},
-		iconStyle() {
-			let style = {}
-			style = {
-				fontSize: this.size == 'inherit' ? 'inherit' : this.$u.addUnit(this.size),
-				fontWeight: this.bold ? 'bold' : 'normal',
-				// 某些特殊情况需要设置一个到顶部的距离,才能更好的垂直居中
-				top: this.$u.addUnit(this.top)
-			}
-			// 非主题色值时,才当作颜色值
-			if (this.showDecimalIcon && this.inactiveColor && !this.$u.config.type.includes(this.inactiveColor)) {
-				style.color = this.inactiveColor
-			} else if (this.color && !this.$u.config.type.includes(this.color)) style.color = this.color
-
-			return style
-		},
-		// 判断传入的name属性,是否图片路径,只要带有"/"均认为是图片形式
-		isImg() {
-			return this.name.indexOf('/') !== -1
-		},
-		imgStyle() {
-			let style = {}
-			// 如果设置width和height属性,则优先使用,否则使用size属性
-			style.width = this.width ? this.$u.addUnit(this.width) : this.$u.addUnit(this.size)
-			style.height = this.height ? this.$u.addUnit(this.height) : this.$u.addUnit(this.size)
-			return style
-		},
-		decimalIconStyle() {
-			let style = {}
-			style = {
-				fontSize: this.size == 'inherit' ? 'inherit' : this.$u.addUnit(this.size),
-				fontWeight: this.bold ? 'bold' : 'normal',
-				// 某些特殊情况需要设置一个到顶部的距离,才能更好的垂直居中
-				top: this.$u.addUnit(this.top),
-				width: this.percent + '%'
-			}
-			// 非主题色值时,才当作颜色值
-			if (this.color && !this.$u.config.type.includes(this.color)) style.color = this.color
-			return style
-		},
-		decimalIconClass() {
-			let classes = []
-			classes.push(this.customPrefix + '-' + this.name)
-			// uView的自定义图标类名为u-iconfont
-			if (this.customPrefix == 'uicon') {
-				classes.push('u-iconfont')
-			} else {
-				classes.push(this.customPrefix)
-			}
-			// 主题色,通过类配置
-			if (this.color && this.$u.config.type.includes(this.color)) classes.push('u-icon__icon--' + this.color)
-			else classes.push('u-icon__icon--primary')
-			// 阿里,头条,百度小程序通过数组绑定类名时,无法直接使用[a, b, c]的形式,否则无法识别
-			// 故需将其拆成一个字符串的形式,通过空格隔开各个类名
-			//#ifdef MP-ALIPAY || MP-TOUTIAO || MP-BAIDU
-			classes = classes.join(' ')
-			//#endif
-			return classes
-		}
-	},
-	methods: {
-		click() {
-			this.$emit('click', this.index)
-		},
-		touchstart() {
-			this.$emit('touchstart', this.index)
-		}
-	}
-}
-</script>
-
-<style scoped lang="scss">
-@import "../../libs/css/style.components.scss";
-@import '../../iconfont.css';
-
-.u-icon {
-	display: inline-flex;
-	align-items: center;
-
-	&--left {
-		flex-direction: row-reverse;
-		align-items: center;
-	}
-
-	&--right {
-		flex-direction: row;
-		align-items: center;
-	}
-
-	&--top {
-		flex-direction: column-reverse;
-		justify-content: center;
-	}
-
-	&--bottom {
-		flex-direction: column;
-		justify-content: center;
-	}
-
-	&__icon {
-		position: relative;
-
-		&--primary {
-			color: $u-type-primary;
-		}
-
-		&--success {
-			color: $u-type-success;
-		}
-
-		&--error {
-			color: $u-type-error;
-		}
-
-		&--warning {
-			color: $u-type-warning;
-		}
-
-		&--info {
-			color: $u-type-info;
-		}
-	}
-
-	&__decimal {
-		position: absolute;
-		top: 0;
-		left: 0;
-		display: inline-block;
-		overflow: hidden;
-	}
-
-	&__img {
-		height: auto;
-		will-change: transform;
-	}
-
-	&__label {
-		line-height: 1;
-	}
-}
-</style>
diff --git a/uview-ui/components/u-image/u-image.vue b/uview-ui/components/u-image/u-image.vue
deleted file mode 100644
index c729c3c..0000000
--- a/uview-ui/components/u-image/u-image.vue
+++ /dev/null
@@ -1,267 +0,0 @@
-<template>
-	<view class="u-image" @tap="onClick" :style="[wrapStyle, backgroundStyle]">
-		<image
-			v-if="!isError"
-			:src="src"
-			:mode="mode"
-			@error="onErrorHandler"
-			@load="onLoadHandler"
-			:lazy-load="lazyLoad"
-			class="u-image__image"
-			:show-menu-by-longpress="showMenuByLongpress"
-			:style="{
-				borderRadius: shape == 'circle' ? '50%' : $u.addUnit(borderRadius)
-			}"
-		></image>
-		<view
-			v-if="showLoading && loading"
-			class="u-image__loading"
-			:style="{
-				borderRadius: shape == 'circle' ? '50%' : $u.addUnit(borderRadius),
-				backgroundColor: this.bgColor
-			}"
-		>
-			<slot v-if="$slots.loading" name="loading" />
-			<u-icon v-else :name="loadingIcon" :width="width" :height="height"></u-icon>
-		</view>
-		<view
-			v-if="showError && isError && !loading"
-			class="u-image__error"
-			:style="{
-				borderRadius: shape == 'circle' ? '50%' : $u.addUnit(borderRadius)
-			}"
-		>
-			<slot v-if="$slots.error" name="error" />
-			<u-icon v-else :name="errorIcon" :width="width" :height="height"></u-icon>
-		</view>
-	</view>
-</template>
-
-<script>
-/**
- * Image 图片
- * @description 此组件为uni-app的image组件的加强版,在继承了原有功能外,还支持淡入动画、加载中、加载失败提示、圆角值和形状等。
- * @tutorial https://uviewui.com/components/image.html
- * @property {String} src 图片地址
- * @property {String} mode 裁剪模式,见官网说明
- * @property {String | Number} width 宽度,单位任意,如果为数值,则为rpx单位(默认100%)
- * @property {String | Number} height 高度,单位任意,如果为数值,则为rpx单位(默认 auto)
- * @property {String} shape 图片形状,circle-圆形,square-方形(默认square)
- * @property {String | Number} border-radius 圆角值,单位任意,如果为数值,则为rpx单位(默认 0)
- * @property {Boolean} lazy-load 是否懒加载,仅微信小程序、App、百度小程序、字节跳动小程序有效(默认 true)
- * @property {Boolean} show-menu-by-longpress 是否开启长按图片显示识别小程序码菜单,仅微信小程序有效(默认 false)
- * @property {String} loading-icon 加载中的图标,或者小图片(默认 photo)
- * @property {String} error-icon 加载失败的图标,或者小图片(默认 error-circle)
- * @property {Boolean} show-loading 是否显示加载中的图标或者自定义的slot(默认 true)
- * @property {Boolean} show-error 是否显示加载错误的图标或者自定义的slot(默认 true)
- * @property {Boolean} fade 是否需要淡入效果(默认 true)
- * @property {String Number} width 传入图片路径时图片的宽度
- * @property {String Number} height 传入图片路径时图片的高度
- * @property {Boolean} webp 只支持网络资源,只对微信小程序有效(默认 false)
- * @property {String | Number} duration 搭配fade参数的过渡时间,单位ms(默认 500)
- * @event {Function} click 点击图片时触发
- * @event {Function} error 图片加载失败时触发
- * @event {Function} load 图片加载成功时触发
- * @example <u-image width="100%" height="300rpx" :src="src"></u-image>
- */
-export default {
-	name: 'u-image',
-	props: {
-		// 图片地址
-		src: {
-			type: String,
-			default: ''
-		},
-		// 裁剪模式
-		mode: {
-			type: String,
-			default: 'aspectFill'
-		},
-		// 宽度,单位任意
-		width: {
-			type: [String, Number],
-			default: '100%'
-		},
-		// 高度,单位任意
-		height: {
-			type: [String, Number],
-			default: 'auto'
-		},
-		// 图片形状,circle-圆形,square-方形
-		shape: {
-			type: String,
-			default: 'square'
-		},
-		// 圆角,单位任意
-		borderRadius: {
-			type: [String, Number],
-			default: 0
-		},
-		// 是否懒加载,微信小程序、App、百度小程序、字节跳动小程序
-		lazyLoad: {
-			type: Boolean,
-			default: true
-		},
-		// 开启长按图片显示识别微信小程序码菜单
-		showMenuByLongpress: {
-			type: Boolean,
-			default: true
-		},
-		// 加载中的图标,或者小图片
-		loadingIcon: {
-			type: String,
-			default: 'photo'
-		},
-		// 加载失败的图标,或者小图片
-		errorIcon: {
-			type: String,
-			default: 'error-circle'
-		},
-		// 是否显示加载中的图标或者自定义的slot
-		showLoading: {
-			type: Boolean,
-			default: true
-		},
-		// 是否显示加载错误的图标或者自定义的slot
-		showError: {
-			type: Boolean,
-			default: true
-		},
-		// 是否需要淡入效果
-		fade: {
-			type: Boolean,
-			default: true
-		},
-		// 只支持网络资源,只对微信小程序有效
-		webp: {
-			type: Boolean,
-			default: false
-		},
-		// 过渡时间,单位ms
-		duration: {
-			type: [String, Number],
-			default: 500
-		},
-		// 背景颜色,用于深色页面加载图片时,为了和背景色融合
-		bgColor: {
-			type: String,
-			default: '#f3f4f6'
-		}
-	},
-	data() {
-		return {
-			// 图片是否加载错误,如果是,则显示错误占位图
-			isError: false,
-			// 初始化组件时,默认为加载中状态
-			loading: true,
-			// 不透明度,为了实现淡入淡出的效果
-			opacity: 1,
-			// 过渡时间,因为props的值无法修改,故需要一个中间值
-			durationTime: this.duration,
-			// 图片加载完成时,去掉背景颜色,因为如果是png图片,就会显示灰色的背景
-			backgroundStyle: {}
-		};
-	},
-	watch: {
-		src: {
-			immediate: true,
-			handler (n) {
-				if(!n) {
-					// 如果传入null或者'',或者false,或者undefined,标记为错误状态
-					this.isError = true;
-					this.loading = false;
-				} else {
-					this.isError = false;
-				}
-			}
-		}
-	},
-	computed: {
-		wrapStyle() {
-			let style = {};
-			// 通过调用addUnit()方法,如果有单位,如百分比,px单位等,直接返回,如果是纯粹的数值,则加上rpx单位
-			style.width = this.$u.addUnit(this.width);
-			style.height = this.$u.addUnit(this.height);
-			// 如果是配置了圆形,设置50%的圆角,否则按照默认的配置值
-			style.borderRadius = this.shape == 'circle' ? '50%' : this.$u.addUnit(this.borderRadius);
-			// 如果设置圆角,必须要有hidden,否则可能圆角无效
-			style.overflow = this.borderRadius > 0 ? 'hidden' : 'visible';
-			if (this.fade) {
-				style.opacity = this.opacity;
-				style.transition = `opacity ${Number(this.durationTime) / 1000}s ease-in-out`;
-			}
-			return style;
-		}
-	},
-	methods: {
-		// 点击图片
-		onClick() {
-			this.$emit('click');
-		},
-		// 图片加载失败
-		onErrorHandler(err) {
-			this.loading = false;
-			this.isError = true;
-			this.$emit('error', err);
-		},
-		// 图片加载完成,标记loading结束
-		onLoadHandler() {
-			this.loading = false;
-			this.isError = false;
-			this.$emit('load');
-			// 如果不需要动画效果,就不执行下方代码,同时移除加载时的背景颜色
-			// 否则无需fade效果时,png图片依然能看到下方的背景色
-			if (!this.fade) return this.removeBgColor();
-			// 原来opacity为1(不透明,是为了显示占位图),改成0(透明,意味着该元素显示的是背景颜色,默认的灰色),再改成1,是为了获得过渡效果
-			this.opacity = 0;
-			// 这里设置为0,是为了图片展示到背景全透明这个过程时间为0,延时之后延时之后重新设置为duration,是为了获得背景透明(灰色)
-			// 到图片展示的过程中的淡入效果
-			this.durationTime = 0;
-			// 延时50ms,否则在浏览器H5,过渡效果无效
-			setTimeout(() => {
-				this.durationTime = this.duration;
-				this.opacity = 1;
-				setTimeout(() => {
-					this.removeBgColor();
-				}, this.durationTime);
-			}, 50);
-		},
-		// 移除图片的背景色
-		removeBgColor() {
-			// 淡入动画过渡完成后,将背景设置为透明色,否则png图片会看到灰色的背景
-			this.backgroundStyle = {
-				backgroundColor: 'transparent'
-			};
-		}
-	}
-};
-</script>
-
-<style scoped lang="scss">
-@import '../../libs/css/style.components.scss';
-
-.u-image {
-	position: relative;
-	transition: opacity 0.5s ease-in-out;
-
-	&__image {
-		width: 100%;
-		height: 100%;
-	}
-
-	&__loading,
-	&__error {
-		position: absolute;
-		top: 0;
-		left: 0;
-		width: 100%;
-		height: 100%;
-		@include vue-flex;
-		align-items: center;
-		justify-content: center;
-		background-color: $u-bg-color;
-		color: $u-tips-color;
-		font-size: 46rpx;
-	}
-}
-</style>
diff --git a/uview-ui/components/u-index-anchor/u-index-anchor.vue b/uview-ui/components/u-index-anchor/u-index-anchor.vue
deleted file mode 100644
index 5038827..0000000
--- a/uview-ui/components/u-index-anchor/u-index-anchor.vue
+++ /dev/null
@@ -1,89 +0,0 @@
-<template>
-	<!-- 支付宝小程序使用$u.getRect()获取组件的根元素尺寸,所以在外面套一个"壳" -->
-	<view>
-		<view class="u-index-anchor-wrapper" :id="$u.guid()" :style="[wrapperStyle]">
-			<view class="u-index-anchor " :class="[active ? 'u-index-anchor--active' : '']" :style="[customAnchorStyle]">
-				<slot v-if="useSlot" />
-				<block v-else>
-					<text>{{ index }}</text>
-				</block>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	/**
-	 * indexAnchor 索引列表锚点
-	 * @description 通过折叠面板收纳内容区域,搭配<u-index-anchor>使用
-	 * @tutorial https://www.uviewui.com/components/indexList.html#indexanchor-props
-	 * @property {Boolean} use-slot 是否使用自定义内容的插槽(默认false)
-	 * @property {String Number} index 索引字符,如果定义了use-slot,此参数自动失效
-	 * @property {Object} custStyle 自定义样式,对象形式,如"{color: 'red'}"
-	 * @event {Function} default 锚点位置显示内容,默认为索引字符
-	 * @example <u-index-anchor :index="item" />
-	 */
-	export default {
-		name: "u-index-anchor",
-		props: {
-			useSlot: {
-				type: Boolean,
-				default: false
-			},
-			index: {
-				type: String,
-				default: ''
-			},
-			customStyle: {
-				type: Object,
-				default () {
-					return {}
-				}
-			}
-		},
-		data() {
-			return {
-				active: false,
-				wrapperStyle: {},
-				anchorStyle: {}
-			}
-		},
-		created() {
-			this.parent = false;
-		},
-		mounted() {
-			this.parent = this.$u.$parent.call(this, 'u-index-list');
-			if(this.parent) {
-				this.parent.children.push(this);
-				this.parent.updateData();
-			}
-		},
-		computed: {
-			customAnchorStyle() {
-				return Object.assign(this.anchorStyle, this.customStyle);
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	@import "../../libs/css/style.components.scss";
-	
-	.u-index-anchor {
-		box-sizing: border-box;
-		padding: 14rpx 24rpx;
-		color: #606266;
-		width: 100%;
-		font-weight: 500;
-		font-size: 28rpx;
-		line-height: 1.2;
-		background-color: rgb(245, 245, 245);
-	}
-
-	.u-index-anchor--active {
-		right: 0;
-		left: 0;
-		color: #2979ff;
-		background-color: #fff;
-	}
-</style>
diff --git a/uview-ui/components/u-index-list/u-index-list.vue b/uview-ui/components/u-index-list/u-index-list.vue
deleted file mode 100644
index 30fcda0..0000000
--- a/uview-ui/components/u-index-list/u-index-list.vue
+++ /dev/null
@@ -1,315 +0,0 @@
-<template>
-	<!-- 支付宝小程序使用$u.getRect()获取组件的根元素尺寸,所以在外面套一个"壳" -->
-	<view>
-		<view class="u-index-bar">
-			<slot />
-			<view v-if="showSidebar" class="u-index-bar__sidebar" @touchstart.stop.prevent="onTouchMove" @touchmove.stop.prevent="onTouchMove"
-			 @touchend.stop.prevent="onTouchStop" @touchcancel.stop.prevent="onTouchStop">
-				<view v-for="(item, index) in indexList" :key="index" class="u-index-bar__index" :style="{zIndex: zIndex + 1, color: activeAnchorIndex === index ? activeColor : ''}"
-				 :data-index="index">
-					{{ item }}
-				</view>
-			</view>
-			<view class="u-indexed-list-alert" v-if="touchmove && indexList[touchmoveIndex]" :style="{
-				zIndex: alertZIndex
-			}">
-				<text>{{indexList[touchmoveIndex]}}</text>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	var indexList = function() {
-		var indexList = [];
-		var charCodeOfA = 'A'.charCodeAt(0);
-		for (var i = 0; i < 26; i++) {
-			indexList.push(String.fromCharCode(charCodeOfA + i));
-		}
-		return indexList;
-	};
-
-	/**
-	 * indexList 索引列表
-	 * @description 通过折叠面板收纳内容区域,搭配<u-index-anchor>使用
-	 * @tutorial https://www.uviewui.com/components/indexList.html#indexanchor-props
-	 * @property {Number String} scroll-top 当前滚动高度,自定义组件无法获得滚动条事件,所以依赖接入方传入
-	 * @property {Array} index-list 索引字符列表,数组(默认A-Z)
-	 * @property {Number String} z-index 锚点吸顶时的层级(默认965)
-	 * @property {Boolean} sticky 是否开启锚点自动吸顶(默认true)
-	 * @property {Number String} offset-top 锚点自动吸顶时与顶部的距离(默认0)
-	 * @property {String} highlight-color 锚点和右边索引字符高亮颜色(默认#2979ff)
-	 * @event {Function} select 选中右边索引字符时触发
-	 * @example <u-index-list :scrollTop="scrollTop"></u-index-list>
-	 */
-	export default {
-		name: "u-index-list",
-		props: {
-			sticky: {
-				type: Boolean,
-				default: true
-			},
-			zIndex: {
-				type: [Number, String],
-				default: ''
-			},
-			scrollTop: {
-				type: [Number, String],
-				default: 0,
-			},
-			offsetTop: {
-				type: [Number, String],
-				default: 0
-			},
-			indexList: {
-				type: Array,
-				default () {
-					return indexList()
-				}
-			},
-			activeColor: {
-				type: String,
-				default: '#2979ff'
-			}
-		},
-		created() {
-			// #ifdef H5
-			this.stickyOffsetTop = this.offsetTop ? uni.upx2px(this.offsetTop) : 44;
-			// #endif
-			// #ifndef H5
-			this.stickyOffsetTop = this.offsetTop ? uni.upx2px(this.offsetTop) : 0;
-			// #endif
-			// 只能在created生命周期定义children,如果在data定义,会因为循环引用而报错
-			this.children = [];
-		},
-		data() {
-			return {
-				activeAnchorIndex: 0,
-				showSidebar: true,
-				// children: [],
-				touchmove: false,
-				touchmoveIndex: 0,
-			}
-		},
-		watch: {
-			scrollTop() {
-				this.updateData()
-			}
-		},
-		computed: {
-			// 弹出toast的z-index值
-			alertZIndex() {
-				return this.$u.zIndex.toast;
-			}
-		},
-		methods: {
-			updateData() {
-				this.timer && clearTimeout(this.timer);
-				this.timer = setTimeout(() => {
-					this.showSidebar = !!this.children.length;
-					this.setRect().then(() => {
-						this.onScroll();
-					});
-				}, 0);
-			},
-			setRect() {
-				return Promise.all([
-					this.setAnchorsRect(),
-					this.setListRect(),
-					this.setSiderbarRect()
-				]);
-			},
-			setAnchorsRect() {
-				return Promise.all(this.children.map((anchor, index) => anchor
-					.$uGetRect('.u-index-anchor-wrapper')
-					.then((rect) => {
-						Object.assign(anchor, {
-							height: rect.height,
-							top: rect.top
-						});
-					})));
-			},
-			setListRect() {
-				return this.$uGetRect('.u-index-bar').then((rect) => {
-					Object.assign(this, {
-						height: rect.height,
-						top: rect.top + this.scrollTop
-					});
-				});
-			},
-			setSiderbarRect() {
-				return this.$uGetRect('.u-index-bar__sidebar').then(rect => {
-					this.sidebar = {
-						height: rect.height,
-						top: rect.top
-					};
-				});
-			},
-			getActiveAnchorIndex() {
-				const {
-					children
-				} = this;
-				const {
-					sticky
-				} = this;
-				for (let i = this.children.length - 1; i >= 0; i--) {
-					const preAnchorHeight = i > 0 ? children[i - 1].height : 0;
-					const reachTop = sticky ? preAnchorHeight : 0;
-					if (reachTop >= children[i].top) {
-						return i;
-					}
-				}
-				return -1;
-			},
-			onScroll() {
-				const {
-					children = []
-				} = this;
-				if (!children.length) {
-					return;
-				}
-				const {
-					sticky,
-					stickyOffsetTop,
-					zIndex,
-					scrollTop,
-					activeColor
-				} = this;
-				const active = this.getActiveAnchorIndex();
-				this.activeAnchorIndex = active;
-				if (sticky) {
-					let isActiveAnchorSticky = false;
-					if (active !== -1) {
-						isActiveAnchorSticky =
-							children[active].top <= 0;
-					}
-					children.forEach((item, index) => {
-						if (index === active) {
-							let wrapperStyle = '';
-							let anchorStyle = {
-								color: `${activeColor}`
-							};
-							if (isActiveAnchorSticky) {
-								wrapperStyle = {
-									height: `${children[index].height}px`
-								};
-								anchorStyle = {
-									position: 'fixed',
-									top: `${stickyOffsetTop}px`,
-									zIndex: `${zIndex ? zIndex : this.$u.zIndex.indexListSticky}`,
-									color: `${activeColor}`
-								};
-							}
-							item.active = active;
-							item.wrapperStyle = wrapperStyle;
-							item.anchorStyle = anchorStyle;
-						} else if (index === active - 1) {
-							const currentAnchor = children[index];
-							const currentOffsetTop = currentAnchor.top;
-							const targetOffsetTop = index === children.length - 1 ?
-								this.top :
-								children[index + 1].top;
-							const parentOffsetHeight = targetOffsetTop - currentOffsetTop;
-							const translateY = parentOffsetHeight - currentAnchor.height;
-							const anchorStyle = {
-								position: 'relative',
-								transform: `translate3d(0, ${translateY}px, 0)`,
-								zIndex: `${zIndex ? zIndex : this.$u.zIndex.indexListSticky}`,
-								color: `${activeColor}`
-							};
-							item.active = active;
-							item.anchorStyle = anchorStyle;
-						} else {
-							item.active = false;
-							item.anchorStyle = '';
-							item.wrapperStyle = '';
-						}
-					});
-				}
-			},
-			onTouchMove(event) {
-				this.touchmove = true;
-				const sidebarLength = this.children.length;
-				const touch = event.touches[0];
-				const itemHeight = this.sidebar.height / sidebarLength;
-				let clientY = 0;
-				clientY = touch.clientY;
-				let index = Math.floor((clientY - this.sidebar.top) / itemHeight);
-				if (index < 0) {
-					index = 0;
-				} else if (index > sidebarLength - 1) {
-					index = sidebarLength - 1;
-				}
-				this.touchmoveIndex = index;
-				this.scrollToAnchor(index);
-			},
-			onTouchStop() {
-				this.touchmove = false;
-				this.scrollToAnchorIndex = null;
-			},
-			scrollToAnchor(index) {
-				if (this.scrollToAnchorIndex === index) {
-					return;
-				}
-				this.scrollToAnchorIndex = index;
-				const anchor = this.children.find((item) => item.index === this.indexList[index]);
-				if (anchor) {
-					this.$emit('select', anchor.index);
-					uni.pageScrollTo({
-						duration: 0,
-						scrollTop: anchor.top + this.scrollTop
-					});
-				}
-			}
-		}
-	};
-</script>
-
-<style lang="scss" scoped>
-	@import "../../libs/css/style.components.scss";
-	
-	.u-index-bar {
-		position: relative
-	}
-
-	.u-index-bar__sidebar {
-		position: fixed;
-		top: 50%;
-		right: 0;
-		@include vue-flex;
-		flex-direction: column;
-		text-align: center;
-		transform: translateY(-50%);
-		user-select: none;
-		z-index: 99;
-	}
-
-	.u-index-bar__index {
-		font-weight: 500;
-		padding: 8rpx 18rpx;
-		font-size: 22rpx;
-		line-height: 1
-	}
-
-	.u-indexed-list-alert {
-		position: fixed;
-		width: 120rpx;
-		height: 120rpx;
-		right: 90rpx;
-		top: 50%;
-		margin-top: -60rpx;
-		border-radius: 24rpx;
-		font-size: 50rpx;
-		color: #fff;
-		background-color: rgba(0, 0, 0, 0.65);
-		@include vue-flex;
-		justify-content: center;
-		align-items: center;
-		padding: 0;
-		z-index: 9999999;
-	}
-
-	.u-indexed-list-alert text {
-		line-height: 50rpx;
-	}
-</style>
diff --git a/uview-ui/components/u-input/u-input.vue b/uview-ui/components/u-input/u-input.vue
deleted file mode 100644
index f2aea72..0000000
--- a/uview-ui/components/u-input/u-input.vue
+++ /dev/null
@@ -1,387 +0,0 @@
-<template>
-	<view
-		class="u-input"
-		:class="{
-			'u-input--border': border,
-			'u-input--error': validateState
-		}"
-		:style="{
-			padding: `0 ${border ? 20 : 0}rpx`,
-			borderColor: borderColor,
-			textAlign: inputAlign
-		}"
-		@tap.stop="inputClick"
-	>
-		<textarea
-			v-if="type == 'textarea'"
-			class="u-input__input u-input__textarea"
-			:style="[getStyle]"
-			:value="defaultValue"
-			:placeholder="placeholder"
-			:placeholderStyle="placeholderStyle"
-			:disabled="disabled"
-			:maxlength="inputMaxlength"
-			:fixed="fixed"
-			:focus="focus"
-			:autoHeight="autoHeight"
-			:selection-end="uSelectionEnd"
-			:selection-start="uSelectionStart"
-			:cursor-spacing="getCursorSpacing"
-			:show-confirm-bar="showConfirmbar"
-			@input="handleInput"
-			@blur="handleBlur"
-			@focus="onFocus"
-			@confirm="onConfirm"
-		/>
-		<input
-			v-else
-			class="u-input__input"
-			:type="type == 'password' ? 'text' : type"
-			:style="[getStyle]"
-			:value="defaultValue"
-			:password="type == 'password' && !showPassword"
-			:placeholder="placeholder"
-			:placeholderStyle="placeholderStyle"
-			:disabled="disabled || type === 'select'"
-			:maxlength="inputMaxlength"
-			:focus="focus"
-			:confirmType="confirmType"
-			:cursor-spacing="getCursorSpacing"
-			:selection-end="uSelectionEnd"
-			:selection-start="uSelectionStart"
-			:show-confirm-bar="showConfirmbar"
-			@focus="onFocus"
-			@blur="handleBlur"
-			@input="handleInput"
-			@confirm="onConfirm"
-		/>
-		<view class="u-input__right-icon u-flex">
-			<view class="u-input__right-icon__clear u-input__right-icon__item" @tap="onClear" v-if="clearable && value != '' && focused">
-				<u-icon size="32" name="close-circle-fill" color="#c0c4cc"/>
-			</view>
-			<view class="u-input__right-icon__clear u-input__right-icon__item" v-if="passwordIcon && type == 'password'">
-				<u-icon size="32" :name="!showPassword ? 'eye' : 'eye-fill'" color="#c0c4cc" @click="showPassword = !showPassword"/>
-			</view>
-			<view class="u-input__right-icon--select u-input__right-icon__item" v-if="type == 'select'" :class="{
-				'u-input__right-icon--select--reverse': selectOpen
-			}">
-				<u-icon name="arrow-down-fill" size="26" color="#c0c4cc"></u-icon>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-import Emitter from '../../libs/util/emitter.js';
-
-/**
- * input 输入框
- * @description 此组件为一个输入框,默认没有边框和样式,是专门为配合表单组件u-form而设计的,利用它可以快速实现表单验证,输入内容,下拉选择等功能。
- * @tutorial http://uviewui.com/components/input.html
- * @property {String} type 模式选择,见官网说明
- * @property {Boolean} clearable 是否显示右侧的清除图标(默认true)
- * @property {} v-model 用于双向绑定输入框的值
- * @property {String} input-align 输入框文字的对齐方式(默认left)
- * @property {String} placeholder placeholder显示值(默认 '请输入内容')
- * @property {Boolean} disabled 是否禁用输入框(默认false)
- * @property {String Number} maxlength 输入框的最大可输入长度(默认140)
- * @property {String Number} selection-start 光标起始位置,自动聚焦时有效,需与selection-end搭配使用(默认-1)
- * @property {String Number} maxlength 光标结束位置,自动聚焦时有效,需与selection-start搭配使用(默认-1)
- * @property {String Number} cursor-spacing 指定光标与键盘的距离,单位px(默认0)
- * @property {String} placeholderStyle placeholder的样式,字符串形式,如"color: red;"(默认 "color: #c0c4cc;")
- * @property {String} confirm-type 设置键盘右下角按钮的文字,仅在type为text时生效(默认done)
- * @property {Object} custom-style 自定义输入框的样式,对象形式
- * @property {Boolean} focus 是否自动获得焦点(默认false)
- * @property {Boolean} fixed 如果type为textarea,且在一个"position:fixed"的区域,需要指明为true(默认false)
- * @property {Boolean} password-icon type为password时,是否显示右侧的密码查看图标(默认true)
- * @property {Boolean} border 是否显示边框(默认false)
- * @property {String} border-color 输入框的边框颜色(默认#dcdfe6)
- * @property {Boolean} auto-height 是否自动增高输入区域,type为textarea时有效(默认true)
- * @property {String Number} height 高度,单位rpx(text类型时为70,textarea时为100)
- * @example <u-input v-model="value" :type="type" :border="border" />
- */
-export default {
-	name: 'u-input',
-	mixins: [Emitter],
-	props: {
-		value: {
-			type: [String, Number],
-			default: ''
-		},
-		// 输入框的类型,textarea,text,number
-		type: {
-			type: String,
-			default: 'text'
-		},
-		inputAlign: {
-			type: String,
-			default: 'left'
-		},
-		placeholder: {
-			type: String,
-			default: '请输入内容'
-		},
-		disabled: {
-			type: Boolean,
-			default: false
-		},
-		maxlength: {
-			type: [Number, String],
-			default: 140
-		},
-		placeholderStyle: {
-			type: String,
-			default: 'color: #c0c4cc;'
-		},
-		confirmType: {
-			type: String,
-			default: 'done'
-		},
-		// 输入框的自定义样式
-		customStyle: {
-			type: Object,
-			default() {
-				return {};
-			}
-		},
-		// 如果 textarea 是在一个 position:fixed 的区域,需要显示指定属性 fixed 为 true
-		fixed: {
-			type: Boolean,
-			default: false
-		},
-		// 是否自动获得焦点
-		focus: {
-			type: Boolean,
-			default: false
-		},
-		// 密码类型时,是否显示右侧的密码图标
-		passwordIcon: {
-			type: Boolean,
-			default: true
-		},
-		// input|textarea是否显示边框
-		border: {
-			type: Boolean,
-			default: false
-		},
-		// 输入框的边框颜色
-		borderColor: {
-			type: String,
-			default: '#dcdfe6'
-		},
-		autoHeight: {
-			type: Boolean,
-			default: true
-		},
-		// type=select时,旋转右侧的图标,标识当前处于打开还是关闭select的状态
-		// open-打开,close-关闭
-		selectOpen: {
-			type: Boolean,
-			default: false
-		},
-		// 高度,单位rpx
-		height: {
-			type: [Number, String],
-			default: ''
-		},
-		// 是否可清空
-		clearable: {
-			type: Boolean,
-			default: true
-		},
-		// 指定光标与键盘的距离,单位 px
-		cursorSpacing: {
-			type: [Number, String],
-			default: 0
-		},
-		// 光标起始位置,自动聚焦时有效,需与selection-end搭配使用
-		selectionStart: {
-			type: [Number, String],
-			default: -1
-		},
-		// 光标结束位置,自动聚焦时有效,需与selection-start搭配使用
-		selectionEnd: {
-			type: [Number, String],
-			default: -1
-		},
-		// 是否自动去除两端的空格
-		trim: {
-			type: Boolean,
-			default: true
-		},
-		// 是否显示键盘上方带有”完成“按钮那一栏
-		showConfirmbar:{
-			type:Boolean,
-			default:true
-		}
-	},
-	data() {
-		return {
-			defaultValue: this.value,
-			inputHeight: 70, // input的高度
-			textareaHeight: 100, // textarea的高度
-			validateState: false, // 当前input的验证状态,用于错误时,边框是否改为红色
-			focused: false, // 当前是否处于获得焦点的状态
-			showPassword: false, // 是否预览密码
-			lastValue: '', // 用于头条小程序,判断@input中,前后的值是否发生了变化,因为头条中文下,按下键没有输入内容,也会触发@input时间
-		};
-	},
-	watch: {
-		value(nVal, oVal) {
-			this.defaultValue = nVal;
-			// 当值发生变化,且为select类型时(此时input被设置为disabled,不会触发@input事件),模拟触发@input事件
-			if(nVal != oVal && this.type == 'select') this.handleInput({
-				detail: {
-					value: nVal
-				}
-			})
-		},
-	},
-	computed: {
-		// 因为uniapp的input组件的maxlength组件必须要数值,这里转为数值,给用户可以传入字符串数值
-		inputMaxlength() {
-			return Number(this.maxlength);
-		},
-		getStyle() {
-			let style = {};
-			// 如果没有自定义高度,就根据type为input还是textare来分配一个默认的高度
-			style.minHeight = this.height ? this.height + 'rpx' : this.type == 'textarea' ?
-				this.textareaHeight + 'rpx' : this.inputHeight + 'rpx';
-			style = Object.assign(style, this.customStyle);
-			return style;
-		},
-		//
-		getCursorSpacing() {
-			return Number(this.cursorSpacing);
-		},
-		// 光标起始位置
-		uSelectionStart() {
-			return String(this.selectionStart);
-		},
-		// 光标结束位置
-		uSelectionEnd() {
-			return String(this.selectionEnd);
-		}
-	},
-	created() {
-		// 监听u-form-item发出的错误事件,将输入框边框变红色
-		this.$on('on-form-item-error', this.onFormItemError);
-	},
-	methods: {
-		/**
-		 * change 事件
-		 * @param event
-		 */
-		handleInput(event) {
-			let value = event.detail.value;
-			// 判断是否去除空格
-			if(this.trim) value = this.$u.trim(value);
-			// vue 原生的方法 return 出去
-			this.$emit('input', value);
-			// 当前model 赋值
-			this.defaultValue = value;
-			// 过一个生命周期再发送事件给u-form-item,否则this.$emit('input')更新了父组件的值,但是微信小程序上
-			// 尚未更新到u-form-item,导致获取的值为空,从而校验混论
-			// 这里不能延时时间太短,或者使用this.$nextTick,否则在头条上,会造成混乱
-			setTimeout(() => {
-				// 头条小程序由于自身bug,导致中文下,每按下一个键(尚未完成输入),都会触发一次@input,导致错误,这里进行判断处理
-				// #ifdef MP-TOUTIAO
-				if(this.$u.trim(value) == this.lastValue) return ;
-				this.lastValue = value;
-				// #endif
-				// 将当前的值发送到 u-form-item 进行校验
-				this.dispatch('u-form-item', 'on-form-change', value);
-			}, 40)
-		},
-		/**
-		 * blur 事件
-		 * @param event
-		 */
-		handleBlur(event) {
-			// 最开始使用的是监听图标@touchstart事件,自从hx2.8.4后,此方法在微信小程序出错
-			// 这里改为监听点击事件,手点击清除图标时,同时也发生了@blur事件,导致图标消失而无法点击,这里做一个延时
-			setTimeout(() => {
-				this.focused = false;
-			}, 100)
-			// vue 原生的方法 return 出去
-			this.$emit('blur', event.detail.value);
-			setTimeout(() => {
-				// 头条小程序由于自身bug,导致中文下,每按下一个键(尚未完成输入),都会触发一次@input,导致错误,这里进行判断处理
-				// #ifdef MP-TOUTIAO
-				if(this.$u.trim(value) == this.lastValue) return ;
-				this.lastValue = value;
-				// #endif
-				// 将当前的值发送到 u-form-item 进行校验
-				this.dispatch('u-form-item', 'on-form-blur', event.detail.value);
-			}, 40)
-		},
-		onFormItemError(status) {
-			this.validateState = status;
-		},
-		onFocus(event) {
-			this.focused = true;
-			this.$emit('focus');
-		},
-		onConfirm(e) {
-			this.$emit('confirm', e.detail.value);
-		},
-		onClear(event) {
-			this.$emit('input', '');
-		},
-		inputClick() {
-			this.$emit('click');
-		}
-	}
-};
-</script>
-
-<style lang="scss" scoped>
-@import "../../libs/css/style.components.scss";
-
-.u-input {
-	position: relative;
-	flex: 1;
-	@include vue-flex;
-
-	&__input {
-		//height: $u-form-item-height;
-		font-size: 28rpx;
-		color: $u-main-color;
-		flex: 1;
-	}
-
-	&__textarea {
-		width: auto;
-		font-size: 28rpx;
-		color: $u-main-color;
-		padding: 10rpx 0;
-		line-height: normal;
-		flex: 1;
-	}
-
-	&--border {
-		border-radius: 6rpx;
-		border-radius: 4px;
-		border: 1px solid $u-form-item-border-color;
-	}
-
-	&--error {
-		border-color: $u-type-error!important;
-	}
-
-	&__right-icon {
-
-		&__item {
-			margin-left: 10rpx;
-		}
-
-		&--select {
-			transition: transform .4s;
-
-			&--reverse {
-				transform: rotate(-180deg);
-			}
-		}
-	}
-}
-</style>
diff --git a/uview-ui/components/u-keyboard/u-keyboard.vue b/uview-ui/components/u-keyboard/u-keyboard.vue
deleted file mode 100644
index 1904a2b..0000000
--- a/uview-ui/components/u-keyboard/u-keyboard.vue
+++ /dev/null
@@ -1,217 +0,0 @@
-<template>
-	<u-popup class="" :mask="mask" :maskCloseAble="maskCloseAble" mode="bottom" :popup="false" v-model="value" length="auto"
-	 :safeAreaInsetBottom="safeAreaInsetBottom" @close="popupClose" :zIndex="uZIndex">
-		<slot />
-		<view class="u-tooltip" v-if="tooltip">
-			<view class="u-tooltip-item u-tooltip-cancel" hover-class="u-tooltip-cancel-hover" @tap="onCancel">
-				{{cancelBtn ? cancelText : ''}}
-			</view>
-			<view v-if="showTips" class="u-tooltip-item u-tooltip-tips">
-				{{tips ? tips : mode == 'number' ? '数字键盘' : mode == 'card' ? '身份证键盘' : '车牌号键盘'}}
-			</view>
-			<view v-if="confirmBtn" @tap="onConfirm" class="u-tooltip-item u-tooltips-submit" hover-class="u-tooltips-submit-hover">
-				{{confirmBtn ? confirmText : ''}}
-			</view>
-		</view>
-		<block v-if="mode == 'number' || mode == 'card'">
-			<u-number-keyboard :random="random" @backspace="backspace" @change="change" :mode="mode" :dotEnabled="dotEnabled"></u-number-keyboard>
-		</block>
-		<block v-else>
-			<u-car-keyboard :random="random" @backspace="backspace" @change="change"></u-car-keyboard>
-		</block>
-	</u-popup>
-</template>
-
-<script>
-	/**
-	 * keyboard 键盘
-	 * @description 此为uViw自定义的键盘面板,内含了数字键盘,车牌号键,身份证号键盘3中模式,都有可以打乱按键顺序的选项。
-	 * @tutorial https://www.uviewui.com/components/keyboard.html
-	 * @property {String} mode 键盘类型,见官网基本使用的说明(默认number)
-	 * @property {Boolean} dot-enabled 是否显示"."按键,只在mode=number时有效(默认true)
-	 * @property {Boolean} tooltip 是否显示键盘顶部工具条(默认true)
-	 * @property {String} tips 工具条中间的提示文字,见上方基本使用的说明,如不需要,请传""空字符
-	 * @property {Boolean} cancel-btn 是否显示工具条左边的"取消"按钮(默认true)
-	 * @property {Boolean} confirm-btn 是否显示工具条右边的"完成"按钮(默认true)
-	 * @property {Boolean} mask 是否显示遮罩(默认true)
-	 * @property {String} confirm-text 确认按钮的文字
-	 * @property {String} cancel-text 取消按钮的文字
-	 * @property {Number String} z-index 弹出键盘的z-index值(默认1075)
-	 * @property {Boolean} random 是否打乱键盘按键的顺序(默认false)
-	 * @property {Boolean} safe-area-inset-bottom 是否开启底部安全区适配(默认false)
-	 * @property {Boolean} mask-close-able 是否允许点击遮罩收起键盘(默认true)
-	 * @event {Function} change 按键被点击(不包含退格键被点击)
-	 * @event {Function} cancel 键盘顶部工具条左边的"取消"按钮被点击
-	 * @event {Function} confirm 键盘顶部工具条右边的"完成"按钮被点击
-	 * @event {Function} backspace 键盘退格键被点击
-	 * @example <u-keyboard mode="number" v-model="show"></u-keyboard> 
-	 */
-	export default {
-		name: "u-keyboard",
-		props: {
-			// 键盘的类型,number-数字键盘,card-身份证键盘,car-车牌号键盘
-			mode: {
-				type: String,
-				default: 'number'
-			},
-			// 是否显示键盘的"."符号
-			dotEnabled: {
-				type: Boolean,
-				default: true
-			},
-			// 是否显示顶部工具条
-			tooltip: {
-				type: Boolean,
-				default: true
-			},
-			// 是否显示工具条中间的提示
-			showTips: {
-				type: Boolean,
-				default: true
-			},
-			// 工具条中间的提示文字
-			tips: {
-				type: String,
-				default: ''
-			},
-			// 是否显示工具条左边的"取消"按钮
-			cancelBtn: {
-				type: Boolean,
-				default: true
-			},
-			// 是否显示工具条右边的"完成"按钮
-			confirmBtn: {
-				type: Boolean,
-				default: true
-			},
-			// 是否打乱键盘按键的顺序
-			random: {
-				type: Boolean,
-				default: false
-			},
-			// 是否开启底部安全区适配,开启的话,会在iPhoneX机型底部添加一定的内边距
-			safeAreaInsetBottom: {
-				type: Boolean,
-				default: false
-			},
-			// 是否允许通过点击遮罩关闭键盘
-			maskCloseAble: {
-				type: Boolean,
-				default: true
-			},
-			// 通过双向绑定控制键盘的弹出与收起
-			value: {
-				type: Boolean,
-				default: false
-			},
-			// 是否显示遮罩,某些时候数字键盘时,用户希望看到自己的数值,所以可能不想要遮罩
-			mask: {
-				type: Boolean,
-				default: true
-			},
-			// z-index值
-			zIndex: {
-				type: [Number, String],
-				default: ''
-			},
-			// 取消按钮的文字
-			cancelText: {
-				type: String,
-				default: '取消'
-			},
-			// 确认按钮的文字
-			confirmText: {
-				type: String,
-				default: '确认'
-			}
-		},
-		data() {
-			return {
-				//show: false
-			}
-		},
-		computed: {
-			uZIndex() {
-				return this.zIndex ? this.zIndex : this.$u.zIndex.popup;
-			}
-		},
-		methods: {
-			change(e) {
-				this.$emit('change', e);
-			},
-			// 键盘关闭
-			popupClose() {
-				// 通过发送input这个特殊的事件名,可以修改父组件传给props的value的变量,也即双向绑定
-				this.$emit('input', false);
-			},
-			// 输入完成
-			onConfirm() {
-				this.popupClose();
-				this.$emit('confirm');
-			},
-			// 取消输入
-			onCancel() {
-				this.popupClose();
-				this.$emit('cancel');
-			},
-			// 退格键
-			backspace() {
-				this.$emit('backspace');
-			},
-			// 关闭键盘
-			// close() {
-			// 	this.show = false;
-			// },
-			// // 打开键盘
-			// open() {
-			// 	this.show = true;
-			// }
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	@import "../../libs/css/style.components.scss";
-	
-	.u-keyboard {
-		position: relative;
-		z-index: 1003;
-	}
-
-	.u-tooltip {
-		@include vue-flex;
-		justify-content: space-between;
-	}
-
-	.u-tooltip-item {
-		color: #333333;
-		flex: 0 0 33.333333%;
-		text-align: center;
-		padding: 20rpx 10rpx;
-		font-size: 28rpx;
-	}
-
-	.u-tooltips-submit {
-		text-align: right;
-		flex-grow: 1;
-		flex-wrap: 0;
-		padding-right: 40rpx;
-		color: $u-type-primary;
-	}
-
-	.u-tooltip-cancel {
-		text-align: left;
-		flex-grow: 1;
-		flex-wrap: 0;
-		padding-left: 40rpx;
-		color: #888888;
-	}
-
-	.u-tooltips-submit-hover {
-		color: $u-type-success;
-	}
-
-	.u-tooltip-cancel-hover {
-		color: #333333;
-	}
-</style>
diff --git a/uview-ui/components/u-lazy-load/u-lazy-load.vue b/uview-ui/components/u-lazy-load/u-lazy-load.vue
deleted file mode 100644
index 429a680..0000000
--- a/uview-ui/components/u-lazy-load/u-lazy-load.vue
+++ /dev/null
@@ -1,244 +0,0 @@
-<template>
-	<view class="u-wrap" :style="{
-			  opacity: Number(opacity),
-			  borderRadius: borderRadius + 'rpx',
-			  // 因为time值需要改变,所以不直接用duration值(不能改变父组件prop传过来的值)
-			  transition: `opacity ${time / 1000}s ease-in-out`
-		   }"
-	 :class="'u-lazy-item-' + elIndex">
-		<view :class="'u-lazy-item-' + elIndex">
-			<image :style="{borderRadius: borderRadius + 'rpx', height: imgHeight}" v-if="!isError" class="u-lazy-item"
-			 :src="isShow ? image : loadingImg" :mode="imgMode" @load="imgLoaded" @error="loadError" @tap="clickImg"></image>
-			<image :style="{borderRadius: borderRadius + 'rpx', height: imgHeight}" class="u-lazy-item error" v-else :src="errorImg"
-			 :mode="imgMode" @load="errorImgLoaded" @tap="clickImg"></image>
-		</view>
-	</view>
-</template>
-
-<script>
-	/**
-	 * lazyLoad 懒加载
-	 * @description 懒加载使用的场景为:页面有很多图片时,APP会同时加载所有的图片,导致页面卡顿,各个位置的图片出现前后不一致等.
-	 * @tutorial https://www.uviewui.com/components/lazyLoad.html
-	 * @property {String Number} index 用户自定义值,在事件触发时回调,用以区分是哪个图片
-	 * @property {String} image 图片路径
-	 * @property {String} loading-img 预加载时的占位图
-	 * @property {String} error-img 图片加载出错时的占位图
-	 * @property {String} threshold 触发加载时的位置,见上方说明,单位 rpx(默认300)
-	 * @property {String Number} duration 图片加载成功时,淡入淡出时间,单位ms(默认)
-	 * @property {String} effect 图片加载成功时,淡入淡出的css动画效果(默认ease-in-out)
-	 * @property {Boolean} is-effect 图片加载成功时,是否启用淡入淡出效果(默认true)
-	 * @property {String Number} border-radius 图片圆角值,单位rpx(默认0)
-	 * @property {String Number} height 图片高度,注意:实际高度可能受img-mode参数影响(默认450)
-	 * @property {String Number} mg-mode 图片的裁剪模式,详见image组件裁剪模式(默认widthFix)
-	 * @event {Function} click 点击图片时触发
-	 * @event {Function} load 图片加载成功时触发
-	 * @event {Function} error 图片加载失败时触发
-	 * @example <u-lazy-load :image="image" :loading-img="loadingImg" :error-img="errorImg"></u-lazy-load>
-	 */
-	export default {
-		name: 'u-lazy-load',
-		props: {
-			index: {
-				type: [Number, String]
-			},
-			// 要显示的图片
-			image: {
-				type: String,
-				default: ''
-			},
-			// 图片裁剪模式
-			imgMode: {
-				type: String,
-				default: 'widthFix'
-			},
-			// 占位图片路径
-			loadingImg: {
-				type: String,
-				default: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZAAAAGQCAMAAAC3Ycb+AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OUM0QjNBQjkyQUQ2MTFFQTlCNUQ4RTIzNDE5RUIxNjciIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OUM0QjNBQkEyQUQ2MTFFQTlCNUQ4RTIzNDE5RUIxNjciPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo5QzRCM0FCNzJBRDYxMUVBOUI1RDhFMjM0MTlFQjE2NyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo5QzRCM0FCODJBRDYxMUVBOUI1RDhFMjM0MTlFQjE2NyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PtRHfPcAAAAzUExURZWVldfX18PDw62trZubm9zc3Li4uKGhoebm5tLS0uHh4c3Nzaenp729vcjIyLKysuvr6141L40AAAcXSURBVHja7NzZlqpGAEBR5lG0//9rIw7IJKJi4or7PGTdtN10wr5SVAEGf/qqArsAiIAAERAgAgJEQIAIiIAAERAgAgJEQIAIiIAAERAgAgJEQIAIiIAAERAgAgJEQIAIiIAAERAgAgJEQIAIiIAAERAgAgJEQIAIiIAAERAgAgJEQIAIiIAAERAgAgJEQIAIiIAAERAgAgJEQIAIiIAAERAgAgJEQIAICBABERAgAgJEQIAICBABERAgAgJEQIAICBABERAgAgJEQIAICBABERAgAgJEQIAICBABERAgAgJEQIAICBABERAgAgJEQIAICBABERAgAgJEQIAICBABERAgAgJEQIAICBABERAg+nmQFMi5Jis+sIniED23jSzIgLTtg2D//iYme/8QBM/9lQ+CAEhbNLM3N9hEHAThX7GPCiBfAxK1b51kD+R7QMLjXg7iCsgWIPUh7pfVozG791oeBPngm48G583uW5GkBvI+SBaM2xXDn1oqum423bX/mgF5FySc2cv93Voug9TdZotsggnkBZB2NzbhrSY5HnoG07jei8dvzsJB/c3W60SALILE46+WCztsbhPR7R2VJq0ukEcT49nyy8QhaKcRa3fYHZD4+ufqOJAcgDz8/59vtw1I3QP5K6JsOG0vm3hce4I8LQp/BaRZGJC3AAn7IKOKXbC+7EdA5vdmmVwOLksgRThqOqiH4XEGsht+peoPUE8U/jJIO5OLH4GEwUslV5G0PTBG5Uiw/Y2jyigO3l9HAHKv9PYb82LloH74dZBoBUgar+l48NsNvtD0fkez9iwrAvIYZDRCl+Xs149Hm/KZmQ+QjUCiO1ei4ru7EsgnQYrkznlQb7thCuRfAzlOAPN72427P4VA/i2Q/DKT/Ls/VR8fvIBsDZIuz7TPF6TCbnk4GJkB2RokejTjuE7/unlgCuSTIO0Cy+Plp6vDfnQlBchy8QtjSHVd3EgmK1bHLm+H6+nXYbz2DuQRSPnqoL7vvq0u70on4zvxgCyWD3b9UyDVdW24PaWaiGTnFZJwPIQAebDpIKheBIm7n124ZthMJipAlkqHO+IZkP1tbfzOJark/A7MgKyvvl60fRqkvXfhuow+t9+q00+0/yyBrK8ZngOtBzldhw2X9tvpNGty0gvkmbPeJ0Cy/r09s/stbmfo0yMWkEdjevgKyOn2t2pxv7UXoibTdCDLje9/Ww1ymqzn87dbp92242ZmMRjI8hASvwKSLq4udqN6ksw8nxXN3tszD9L8Gkg+2mFrQYql5az4tvFj5xOx4VwnSdeBtGdyPwUytxK77pBVlNHdO7OK3rh/eTPUvdutT3fO52tuHMqD4N7llv8pyOQQ//w19YVDfX27+Sfuby9/6nau4pdA8vEdOZuChEH/quHt0Jg+IRJ/5+PrHwKZXfjbDiS73Zo7mu5UkzX7uTsXe0e/7nC3ePf1O69+BUg2XDfZCqSqOu7rGVf8cHBe8zhC2b61dtUHXv0OkGo6ZL4JkpbRYXdUaFevivx2M/1GIOctNh949TtAoumQ+TpIHMX54CJu+8BDd8FkE5BqcZh/59XvAClmTvKfB0nDqIlHo3T70SftyW1eX9dXtgQJqs1f/Q6QaOa/7wmQKtxH8eiGoCRuovODIO3VxOMmruZbHrLyD7z6DSDtGyT7ew1kf9hNn07c986JTovzzem0Id9wUG+Vk/IDr34DSNR7huZJkMFT6vEhqrPx/j5cnlZML8N6/PAzh9Y99Flm5Yde/c9BquDOkvkKkMP58dA4qi9vivE8JOvGz/j8FokfPpr288+pH2ZPOZrLmeGD+7KOh6dqYWJ48ki7yUg0tz0go/fv/LLddfV3sgOLJyaGPY/zrSlh1a36Arkzoue9CyG35ze6E6/dzO2Ga0EGHqdRJIkfn9/8OEjTW8Vq91ZWh39FeehWA7Nu9ft8CpUEk1WWOyDF0OPyEU2Pnzf/bZC0P6IPzmAvu7KauQBVrgKpJ0tG2arHzX8e5Pb3PezNs/PrX+3JMyCLn9XXf37tPFHvt09WfCDDjx+yyn1/p1V11j7GnB/q3leLuVva79S/tzed+db08YpF4uOZtmz/9oXWMq6BCAgQAQEiIEAERECACAgQAQEiIEAERECACAgQAQEiIEAERECACAgQAQEiIEAERECACAgQAQEiIEAERECACAgQAQEiIEAERECACAgQAQEiIEAERECACAgQAQEiIEAERECACAgQAQEiIEAERECACAgQAQEiIEAEBIiACAgQAQEiIEAEBIiACAgQAQEiIEAEBIiACAgQAQEiIEAEBIiACAgQAQEiIEAEBIiACAgQAQEiIEAEBIiACAgQAQEiIEAEBIiACAgQAQEiIEAEBIiACAgQAQEiIEAEBIiACAgQAQEiIEAEBIiAALELvqt/BBgACqVeUBXxcCkAAAAASUVORK5CYII='
-			},
-			// 加载失败的错误占位图
-			errorImg: {
-				type: String,
-				default: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZAAAAGQCAMAAAC3Ycb+AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6ODdDMjhENDYyQUQ2MTFFQTlDQ0VBODgxQjFFOEEyMEMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6ODdDMjhENDcyQUQ2MTFFQTlDQ0VBODgxQjFFOEEyMEMiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo4N0MyOEQ0NDJBRDYxMUVBOUNDRUE4ODFCMUU4QTIwQyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4N0MyOEQ0NTJBRDYxMUVBOUNDRUE4ODFCMUU4QTIwQyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PhLwhikAAAAzUExURZWVldfX162trcPDw5ubm7i4uNzc3Obm5s3NzaGhoeHh4cjIyKenp9LS0r29vbKysuvr67sDMEkAAAlpSURBVHja7NzpYqMgAIVRUVHc8/5PO66R1WAbOzX97q+ZtDEpR0AWTR7kVyWhCAAhgABCAAGEAAIIAQQQAggBBBACCCAEEEAIIIAQQAgggBBAACGAAEIAAYQAQgABhAACCAEEEAIIIAQQAgggBBBACCCAEEAAIYAQQAAhgABCAAGEAAIIAYQAAggBBBACCCAEEEAIIAQQQAgggBBAACGAAEIAIYAAQgABhAACCAEEEAIIAQQQAgggBBBACCCAEEAAIYAQQAAhgABCAAGEAAIIAYQAAggBBBACCCAEEEAIIAQQQAgggBBAACGAAEIAIYAAQgABhAACCAEEEAIIAQQQAgggBBBACCCAEEAIIIAQQAAhgABCAAGEAEIAAYQAAggBBBACCCAEEAIIIAQQQAgggBBAACGAEEAAIYAAsqeX5QWHKIcs/Ptl03lfL4zDFPWfBGmSpPn+IZzSH5KkCL5B+n+oklwz6Iz//R2QzFOabzhEmiRirAmZt/bl0w/dpMbLqeeo4wEdpC7zR5WAPKziHKtO7ql+ReKvIa9BxgNaL5ZtEkpeAGIVp5jKJa09xVo9vgSSzQcszdYvmOqjQNSQ6pHK6rO1n1Xj32788miwHLaZz1Tl9i/yayDlYJ/60/+lp8GSY7OY1B8E4p55bWmfquFk22GLuUUxi78cX+m+BjL2GLkhMrV+/muS6Sfic0CEp5T1Yu2OQdTzsKV0MJV73KVjroyTffxfuv5Tf3fd6iLT9wz8YdVHgUzF2Is9/Xhi5sYJqP1w/GUpjOiHVbaI0w2L+pg3GZzvtokcgHxWDXHaiy78l3sPke01qphamT5c+dqyeAGSumdL/mkggauTam0e3L/mPEiqtzKDbl0Z1Wn8xOa4ySo8X/7TQIJnY/seEKWf12UmC72CKP9xYjr19RPT7NNA+oMO+R0gwmlotAry+C6I0f59ch8yXVQOr0BKYcXt1IUYRyCt+Ur9HGsrQKI79WY9sY9ARPKlzFOFdb41ioD8b5Bp+mqeeRKAxINkESBFGpOpKhgv9OuYpH8A8l4Qa3qp60Kl2/k+rG2sWafuuyCBafb2j4JkgZUob3nWcmicpkxEgmTLLGejTxnWSWCi8lPmsk6DlIHFJv24ojiYyYoGacwL8zXTLEAVaDI/Ybb3NIgKDSv2oXpmHkvNs+PTpMASEdlk7fOZeRk37fwJ6yGnQarQsGIfqqcvx43rTOXY6jf7uKXdRzdLDRPbjIrx1cIj3Kr4KyBFezzgUGuR5893qkOQ19fR2uVBaU+r16LphJNOiatK7PeBZK/Kb+tUn71rcQjSvARpghfH/yG/D2RetTuI3N5QrMWdP46brP7FmKZ//CGQ9At9SL01DLkzY/Vs8Z97fQZ7gelw7jHqCz+/Wile5J4g3Vc79eb5a6oLSue+Ve83gaSv2jp5PxCzjzwFUm9zw9MllSMil1kS4d2E9SaQ1xNo9wMxx0+nQNLnew/WDHvveMAHYm08mofl3TFI/8pD3Q6kMAv6DIi2jTCwRJUvNdDYrrJum9oHhusCbWALonwxBRk1vXMnEGWuT5wAmfYuVGUYpJ7fUZujCN92hvzwWlrFgxSfANKb10DxIMbShnfrynyZZV30imA7P43ArXXHbvBVkTCIuGy25AdBrHmNeBCpL214QdLp9LZarG3IMWrmW0ehtuO7F2PS09UcgqS3B7FKPhpknrStD0HGF/vQRne37LwLG8EbHT4WxN7/Fg0yD9Yr/3br4nnstA+0Il6QxzdBmg8A6a2/IRbkcK9h/uzV8zywF/oSkOyageCPglRWgcWClHnEzs9q/t/SENVXgFijlsq3VtXdCsRp4qObrLLLgjuzSq3fX89ZZW6AfxNIzF6X9FYgThN/fk093KkvHX/hbWd+DqS/FUhlf+G3gohEXzVs3g9iDluWoaW8fL73QhB34u+tIHIf19nLuF4Q98a09Eynnl56q+ePgEhnX+dbQOp6H5XnJ0ACd8dFgkwf12nTOTcEqd2pom+CFF02TIPw6dKmrLS5qOtBpo8b5quUtrwrSGbuqPkeSJqllTFHO02NPxdMrm+y5LKdWyWXjw4vA5nGEtnjuyCFyHqNYvEolzmASm3zK1Eg5zr13lhqV1tlksnVw8Pkwgri7O07AVKLJkutRYw87bPlRpBpNXE8xGb+fhBlvEGrGPLqViu5sILIx9dAmqF1705sxF4M8+R8P5dOdQwi12fMnATpjJ2JSt/POIvU9wPJEs/jduJAjLvU0yFT0i64Yb1bsVi79dA4pEy3TzoHMq2O7Re4vXm5O9+l290NpE4CU+YRIMNye2iaqbVS2AUnn2fsekthYKReVNutVedA5juttyIXrT38mOds+ps9DWhwL7GWc61/DVKPzVN9UHDarf1icU98IOU8tm6L031Iq63t1tKzj3fe/FCpO4F0/i0Z2+yvA1KeGBjqj1qYx8/zoxpKZ1Yl367I1k+sfcft/QPy9csXy/32qX1qLZsrryG5BGQaRj0vc/b7N54XXq293TCLB5HO42Fy517obW19b+qjl3CHp0fdLJcWvmdy1etESi/uAdJrs1hTaUklHuW8qSDdC3UfXVR5cnD3rAFSSqtFb7z7eapErx7rC739jCXfbK3aWiipjXo8UbmxXPa7QQq9R289j2Gr88N7Ag5AlHPRKc37pNZv0CZtX1tVMG6rm8qW1/KlCgQvcMss933ybwXZz3dReW5yce4ByZtHFIhwT9kmjxg8BzbKDUe1PB9edBJqSN7/KM1LmqyuMZ5BpeTUw1aD/uDI0relPfSHa/Wn8Pxq1BNfxy/h3IdwOJqIKumb9CHvTqMefyY82RoQAgggBBBACCCAEEAAIYAQQAAhgABCAAGEAAIIAYQAAggBBBACCCAEEEAIIAQQQAgggBBAACGAAEIAIYAAQgABhAACCAEEEAIIAQQQAgggBBBACCCAEEAIIIAQQAAhgABCAAGEAEIAAYQAAggBBBACCCAEEAIIIAQQQAgggBBAACGAEEAAIYAAQgABhAACCAEEEAIIAQQQAgggBBBACCCAEEAIIIAQQAAhgABCAAGEAEIAAYQAAggBBBACCCAEEAIIIAQQQAgggBBAACGAEEAAIYAAQgABhAACCAGEAAIIAQQQAgggBBBACCAEEEAIIIAQQAAhgABCACGAAEIAAYQAAggBBBACCAEEEAIIIAQQQAggfyL/BBgA8PgLdH0TBtkAAAAASUVORK5CYII='
-			},
-			// 图片进入可见区域前多少像素时,单位rpx,开始加载图片
-			// 负数为图片超出屏幕底部多少距离后触发懒加载,正数为图片顶部距离屏幕底部多少距离时触发(图片还没出现在屏幕上)
-			threshold: {
-				type: [Number, String],
-				default: 100
-			},
-			// 淡入淡出动画的过渡时间
-			duration: {
-				type: [Number, String],
-				default: 500
-			},
-			// 渡效果的速度曲线,各个之间差别不大,因为这是淡入淡出,且时间很短,不是那些变形或者移动的情况,会明显
-			// linear|ease|ease-in|ease-out|ease-in-out|cubic-bezier(n,n,n,n);
-			effect: {
-				type: String,
-				default: 'ease-in-out'
-			},
-			// 是否使用过渡效果
-			isEffect: {
-				type: Boolean,
-				default: true
-			},
-			// 圆角值
-			borderRadius: {
-				type: [Number, String],
-				default: 0
-			},
-			// 图片高度,单位rpx
-			height: {
-				type: [Number, String],
-				default: '450'
-			}
-		},
-		data() {
-			return {
-				isShow: false,
-				opacity: 1,
-				time: this.duration,
-				loadStatus: '', // 默认是懒加载中的状态
-				isError: false, // 图片加载失败
-				elIndex: this.$u.guid()
-			}
-		},
-		computed: {
-			// 将threshold从rpx转为px
-			getThreshold() {
-				// 先取绝对值,因为threshold可能是负数,最后根据this.threshold是正数或者负数,重新还原
-				let thresholdPx = uni.upx2px(Math.abs(this.threshold));
-				return this.threshold < 0 ? -thresholdPx : thresholdPx;
-			},
-			// 计算图片的高度,可能为auto,带%,或者直接数值
-			imgHeight() {
-				return this.$u.addUnit(this.height);
-			}
-		},
-		created() {
-			// 由于一些特殊原因,不能将此变量放到data中定义
-			this.observer = {};
-		},
-		watch: {
-			isShow(nVal) {
-				// 如果是不开启过渡效果,直接返回
-				if (!this.isEffect) return;
-				this.time = 0;
-				// 原来opacity为1(不透明,是为了显示占位图),改成0(透明,意味着该元素显示的是背景颜色,默认的白色),再改成1,是为了获得过渡效果
-				this.opacity = 0;
-				// 延时30ms,否则在浏览器H5,过渡效果无效
-				setTimeout(() => {
-					this.time = this.duration;
-					this.opacity = 1;
-				}, 30)
-			},
-			// 图片路径发生变化时,需要重新标记一些变量,否则会一直卡在某一个状态,比如isError
-			image(n) {
-				if(!n) {
-					// 如果传入null或者'',或者undefined,标记为错误状态
-					this.isError = true;
-				} else {
-					this.init();
-					this.isError = false;
-				}
-			}
-		},
-		methods: {
-			// 用于重新初始化
-			init() {
-				this.isError = false;
-				this.loadStatus = '';
-			},
-			// 点击图片触发的事件,loadlazy-还是懒加载中状态,loading-图片正在加载,loaded-图片加加载完成
-			clickImg() {
-				let whichImg = '';
-				// 如果isShow为false,意味着图片还没开始加载,点击的只能是最开始的占位图
-				if (this.isShow == false) whichImg = 'lazyImg';
-				// 如果isError为true,意味着图片加载失败,这是只剩下错误的占位图,所以点击的只能是错误占位图
-				// 当然,也可以给错误的占位图元素绑定点击事件,看你喜欢~
-				else if (this.isError == true) whichImg = 'errorImg';
-				// 总共三张图片,除了两个占位图,剩下的只能是正常的那张图片了
-				else whichImg = 'realImg';
-				// 只通知当前图片的index
-				this.$emit('click', this.index);
-			},
-			// 图片加载完成事件,可能是加载占位图时触发,也可能是加载真正的图片完成时触发,通过isShow区分
-			imgLoaded() {
-				// 占位图加载完成
-				if (this.loadStatus == '') {
-					this.loadStatus = 'lazyed';
-				}
-				// 真正的图片加载完成 
-				else if (this.loadStatus == 'lazyed') {
-					this.loadStatus = 'loaded';
-					this.$emit('load', this.index);
-				}
-			},
-			// 错误的图片加载完成
-			errorImgLoaded() {
-				this.$emit('error', this.index);
-			},
-			// 图片加载失败
-			loadError() {
-				this.isError = true;
-			},
-			disconnectObserver(observerName) {
-				const observer = this[observerName];
-				observer && observer.disconnect();
-			},
-		},
-		beforeDestroy() {
-			// 销毁页面时,可能还没触发某张很底部的懒加载图片,所以把这个事件给去掉
-			//observer.disconnect();
-		},
-		mounted() {
-			// 此uOnReachBottom事件由mixin.js发出,目的是让页面到底时,保证所有图片都进行加载,做到绝对稳定且可靠
-			this.$nextTick(() => {
-				uni.$once('uOnReachBottom', () => {
-					if (!this.isShow) this.isShow = true;
-				});
-			})
-			// mounted的时候,不一定挂载了这个元素,延时30ms,否则会报错或者不报错,但是也没有效果
-			setTimeout(() => {
-				// 这里是组件内获取布局状态,不能用uni.createIntersectionObserver,而必须用this.createIntersectionObserver
-				this.disconnectObserver('contentObserver');
-				const contentObserver = uni.createIntersectionObserver(this);
-				// 要理解这里怎么计算的,请看这个:
-				// https://blog.csdn.net/qq_25324335/article/details/83687695
-				contentObserver.relativeToViewport({
-					bottom: this.getThreshold,
-				}).observe('.u-lazy-item-' + this.elIndex, (res) => {
-					if (res.intersectionRatio > 0) {
-						// 懒加载状态改变
-						this.isShow = true;
-						// 如果图片已经加载,去掉监听,减少性能的消耗
-						this.disconnectObserver('contentObserver');
-					}
-				})
-				this.contentObserver = contentObserver;
-			}, 30)
-		}
-	}
-</script>
-
-<style scoped lang="scss">
-	@import "../../libs/css/style.components.scss";
-	
-	.u-wrap {
-		background-color: #eee;
-		overflow: hidden;
-	}
-
-	.u-lazy-item {
-		width: 100%;
-		// 骗系统开启硬件加速
-		transform: transition3d(0, 0, 0);
-		// 防止图片加载“闪一下”
-		will-change: transform;
-		/* #ifndef APP-NVUE */
-		display: block;
-		/* #endif */
-	}
-</style>
diff --git a/uview-ui/components/u-line-progress/u-line-progress.vue b/uview-ui/components/u-line-progress/u-line-progress.vue
deleted file mode 100644
index 77e2da2..0000000
--- a/uview-ui/components/u-line-progress/u-line-progress.vue
+++ /dev/null
@@ -1,147 +0,0 @@
-<template>
-	<view class="u-progress" :style="{
-		borderRadius: round ? '100rpx' : 0,
-		height: height + 'rpx',
-		backgroundColor: inactiveColor
-	}">
-		<view :class="[
-			type ? `u-type-${type}-bg` : '',
-			striped ? 'u-striped' : '',
-			striped && stripedActive ? 'u-striped-active' : ''
-		]" class="u-active" :style="[progressStyle]">
-			<slot v-if="$slots.default || $slots.$default" />
-			<block v-else-if="showPercent">
-				{{percent + '%'}}
-			</block>
-		</view>
-	</view>
-</template>
-
-<script>
-	/**
-	 * lineProgress 线型进度条
-	 * @description 展示操作或任务的当前进度,比如上传文件,是一个线形的进度条。
-	 * @tutorial https://www.uviewui.com/components/lineProgress.html
-	 * @property {String Number} percent 进度条百分比值,为数值类型,0-100
-	 * @property {Boolean} round 进度条两端是否为半圆(默认true)
-	 * @property {String} type 如设置,active-color值将会失效
-	 * @property {String} active-color 进度条激活部分的颜色(默认#19be6b)
-	 * @property {String} inactive-color 进度条的底色(默认#ececec)
-	 * @property {Boolean} show-percent 是否在进度条内部显示当前的百分比值数值(默认true)
-	 * @property {String Number} height 进度条的高度,单位rpx(默认28)
-	 * @property {Boolean} striped 是否显示进度条激活部分的条纹(默认false)
-	 * @property {Boolean} striped-active 条纹是否具有动态效果(默认false)
-	 * @example <u-line-progress :percent="70" :show-percent="true"></u-line-progress>
-	 */
-	export default {
-		name: "u-line-progress",
-		props: {
-			// 两端是否显示半圆形
-			round: {
-				type: Boolean,
-				default: true
-			},
-			// 主题颜色
-			type: {
-				type: String,
-				default: ''
-			},
-			// 激活部分的颜色
-			activeColor: {
-				type: String,
-				default: '#19be6b'
-			},
-			inactiveColor: {
-				type: String,
-				default: '#ececec'
-			},
-			// 进度百分比,数值
-			percent: {
-				type: Number,
-				default: 0
-			},
-			// 是否在进度条内部显示百分比的值
-			showPercent: {
-				type: Boolean,
-				default: true
-			},
-			// 进度条的高度,单位rpx
-			height: {
-				type: [Number, String],
-				default: 28
-			},
-			// 是否显示条纹
-			striped: {
-				type: Boolean,
-				default: false
-			},
-			// 条纹是否显示活动状态
-			stripedActive: {
-				type: Boolean,
-				default: false
-			}
-		},
-		data() {
-			return {
-
-			}
-		},
-		computed: {
-			progressStyle() {
-				let style = {};
-				style.width = this.percent + '%';
-				if(this.activeColor) style.backgroundColor = this.activeColor;
-				return style;
-			}
-		},
-		methods: {
-
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	@import "../../libs/css/style.components.scss";
-	
-	.u-progress {
-		overflow: hidden;
-		height: 15px;
-		/* #ifndef APP-NVUE */
-		display: inline-flex;
-		/* #endif */
-		align-items: center;
-		width: 100%;
-		border-radius: 100rpx;
-	}
-
-	.u-active {
-		width: 0;
-		height: 100%;
-		align-items: center;
-		@include vue-flex;
-		justify-items: flex-end;
-		justify-content: space-around;
-		font-size: 20rpx;
-		color: #ffffff;
-		transition: all 0.4s ease;
-	}
-
-	.u-striped {
-		background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-		background-size: 39px 39px;
-	}
-
-	.u-striped-active {
-		animation: progress-stripes 2s linear infinite;
-	}
-
-	@keyframes progress-stripes {
-		0% {
-			background-position: 0 0;
-		}
-
-		100% {
-			background-position: 39px 0;
-		}
-	}
-</style>
diff --git a/uview-ui/components/u-line/u-line.vue b/uview-ui/components/u-line/u-line.vue
deleted file mode 100644
index c56fbc3..0000000
--- a/uview-ui/components/u-line/u-line.vue
+++ /dev/null
@@ -1,84 +0,0 @@
-<template>
-	<view class="u-line" :style="[lineStyle]">
-		
-	</view>
-</template>
-
-<script>
-	/**
-	 * line 线条
-	 * @description 此组件一般用于显示一根线条,用于分隔内容块,有横向和竖向两种模式,且能设置0.5px线条,使用也很简单
-	 * @tutorial https://www.uviewui.com/components/line.html
-	 * @property {String} color 线条的颜色(默认#e4e7ed)
-	 * @property {String} length 长度,竖向时表现为高度,横向时表现为长度,可以为百分比,带rpx单位的值等
-	 * @property {String} direction 线条的方向,row-横向,col-竖向(默认row)
-	 * @property {String} border-style 线条的类型,solid-实线,dashed-方形虚线,dotted-圆点虚线(默认solid)
-	 * @property {Boolean} hair-line 是否显示细线条(默认true)
-	 * @property {String} margin 线条与上下左右元素的间距,字符串形式,如"30rpx"
-	 * @example <u-line color="red"></u-line>
-	 */
-	export default {
-		name: 'u-line',
-		props: {
-			color: {
-				type: String,
-				default: '#e4e7ed'
-			},
-			// 长度,竖向时表现为高度,横向时表现为长度,可以为百分比,带rpx单位的值等
-			length: {
-				type: String,
-				default: '100%'
-			},
-			// 线条方向,col-竖向,row-横向
-			direction: {
-				type: String,
-				default: 'row'
-			},
-			// 是否显示细边框
-			hairLine: {
-				type: Boolean,
-				default: true
-			},
-			// 线条与上下左右元素的间距,字符串形式,如"30rpx"、"20rpx 30rpx"
-			margin: {
-				type: String,
-				default: '0'
-			},
-			// 线条的类型,solid-实线,dashed-方形虚线,dotted-圆点虚线
-			borderStyle: {
-				type: String,
-				default: 'solid'
-			}
-		},
-		computed: {
-			lineStyle() {
-				let style = {};
-				style.margin = this.margin;
-				// 如果是水平线条,边框高度为1px,再通过transform缩小一半,就是0.5px了
-				if(this.direction == 'row') {
-					// 此处采用兼容分开写,兼容nvue的写法
-					style.borderBottomWidth = '1px';
-					style.borderBottomStyle = this.borderStyle;
-					style.width = this.$u.addUnit(this.length);
-					if(this.hairLine) style.transform = 'scaleY(0.5)';
-				} else {
-					// 如果是竖向线条,边框宽度为1px,再通过transform缩小一半,就是0.5px了
-					style.borderLeftWidth = '1px';
-					style.borderLeftStyle = this.borderStyle;
-					style.height = this.$u.addUnit(this.length);
-					if(this.hairLine) style.transform = 'scaleX(0.5)';
-				}
-				style.borderColor = this.color;
-				return style;
-			}
-		}
-	}
-</script>
-
-<style scoped lang="scss">
-	@import "../../libs/css/style.components.scss";
-	
-	.u-line {
-		vertical-align: middle;
-	}
-</style>
diff --git a/uview-ui/components/u-link/u-link.vue b/uview-ui/components/u-link/u-link.vue
deleted file mode 100644
index 2dd2a73..0000000
--- a/uview-ui/components/u-link/u-link.vue
+++ /dev/null
@@ -1,89 +0,0 @@
-<template>
-	<text class="u-link" @tap.stop="openLink" :style="{
-		color: color,
-		fontSize: fontSize + 'rpx',
-		borderBottom: underLine ? `1px solid ${lineColor ? lineColor : color}` : 'none',
-		paddingBottom: underLine ? '0rpx' : '0'
-	}">
-		<slot></slot>
-	</text>
-</template>
-
-<script>
-	/**
-	 * link 超链接
-	 * @description 该组件为超链接组件,在不同平台有不同表现形式:在APP平台会通过plus环境打开内置浏览器,在小程序中把链接复制到粘贴板,同时提示信息,在H5中通过window.open打开链接。
-	 * @tutorial https://www.uviewui.com/components/link.html
-	 * @property {String} color 文字颜色(默认#606266)
-	 * @property {String Number} font-size 字体大小,单位rpx(默认28)
-	 * @property {Boolean} under-line 是否显示下划线(默认false)
-	 * @property {String} href 跳转的链接,要带上http(s)
-	 * @property {String} line-color 下划线颜色,默认同color参数颜色 
-	 * @property {String} mp-tips 各个小程序平台把链接复制到粘贴板后的提示语(默认“链接已复制,请在浏览器打开”)
-	 * @example <u-link href="http://www.uviewui.com">蜀道难,难于上青天</u-link>
-	 */
-	export default {
-		name: "u-link",
-		props: {
-			// 文字颜色
-			color: {
-				type: String,
-				default: '#2979ff'
-			},
-			// 字体大小,单位rpx
-			fontSize: {
-				type: [String, Number],
-				default: 28
-			},
-			// 是否显示下划线
-			underLine: {
-				type: Boolean,
-				default: false
-			},
-			// 要跳转的链接
-			href: {
-				type: String,
-				default: ''
-			},
-			// 小程序中复制到粘贴板的提示语
-			mpTips: {
-				type: String,
-				default: '链接已复制,请在浏览器打开'
-			},
-			// 下划线颜色
-			lineColor: {
-				type: String,
-				default: ''
-			}
-		},
-		methods: {
-			openLink() {
-				// #ifdef APP-PLUS
-				plus.runtime.openURL(this.href)
-				// #endif
-				// #ifdef H5
-				window.open(this.href)
-				// #endif
-				// #ifdef MP
-				uni.setClipboardData({
-					data: this.href,
-					success: () => {
-						uni.hideToast();
-						this.$nextTick(() => {
-							this.$u.toast(this.mpTips);
-						})
-					}
-				});
-				// #endif
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	@import "../../libs/css/style.components.scss";
-	
-	.u-link {
-		line-height: 1;
-	}
-</style>
diff --git a/uview-ui/components/u-loading-page/u-loading-page.vue b/uview-ui/components/u-loading-page/u-loading-page.vue
deleted file mode 100644
index 7e04401..0000000
--- a/uview-ui/components/u-loading-page/u-loading-page.vue
+++ /dev/null
@@ -1,25 +0,0 @@
-<template>
-	<view class="u-loading-page">
-		
-	</view>
-</template>
-
-<script>
-	export default {
-		props: {
-			
-		},
-		data() {
-			return {
-				
-			}
-		},
-		methods: {
-			
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	
-</style>
diff --git a/uview-ui/components/u-loading/u-loading.vue b/uview-ui/components/u-loading/u-loading.vue
deleted file mode 100644
index c747f64..0000000
--- a/uview-ui/components/u-loading/u-loading.vue
+++ /dev/null
@@ -1,103 +0,0 @@
-<template>
-	<view v-if="show" class="u-loading" :class="mode == 'circle' ? 'u-loading-circle' : 'u-loading-flower'" :style="[cricleStyle]">
-	</view>
-</template>
-
-<script>
-	/**
-	 * loading 加载动画
-	 * @description 警此组件为一个小动画,目前用在uView的loadmore加载更多和switch开关等组件的正在加载状态场景。
-	 * @tutorial https://www.uviewui.com/components/loading.html
-	 * @property {String} mode 模式选择,见官网说明(默认circle)
-	 * @property {String} color 动画活动区域的颜色,只对 mode = flower 模式有效(默认#c7c7c7)
-	 * @property {String Number} size 加载图标的大小,单位rpx(默认34)
-	 * @property {Boolean} show 是否显示动画(默认true)
-	 * @example <u-loading mode="circle"></u-loading>
-	 */
-	export default {
-		name: "u-loading",
-		props: {
-			// 动画的类型
-			mode: {
-				type: String,
-				default: 'circle'
-			},
-			// 动画的颜色
-			color: {
-				type: String,
-				default: '#c7c7c7'
-			},
-			// 加载图标的大小,单位rpx
-			size: {
-				type: [String, Number],
-				default: '34'
-			},
-			// 是否显示动画
-			show: {
-				type: Boolean,
-				default: true
-			}
-		},
-		computed: {
-			// 加载中圆圈动画的样式
-			cricleStyle() {
-				let style = {};
-				style.width = this.size + 'rpx';
-				style.height = this.size + 'rpx';
-				if (this.mode == 'circle') style.borderColor = `#e4e4e4 #e4e4e4 #e4e4e4 ${this.color ? this.color : '#c7c7c7'}`;
-				return style;
-			},
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	@import "../../libs/css/style.components.scss";
-	
-	.u-loading-circle {
-		/* #ifndef APP-NVUE */
-		display: inline-flex;
-		/* #endif */
-		vertical-align: middle;
-		width: 28rpx;
-		height: 28rpx;
-		background: 0 0;
-		border-radius: 50%;
-		border: 2px solid;
-		border-color: #e5e5e5 #e5e5e5 #e5e5e5 #8f8d8e;
-		animation: u-circle 1s linear infinite;
-	}
-
-	.u-loading-flower {
-		width: 20px;
-		height: 20px;
-		display: inline-block;
-		vertical-align: middle;
-		-webkit-animation: a 1s steps(12) infinite;
-		animation: u-flower 1s steps(12) infinite;
-		background: transparent url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMjAiIGhlaWdodD0iMTIwIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+PHBhdGggZmlsbD0ibm9uZSIgZD0iTTAgMGgxMDB2MTAwSDB6Ii8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjRTlFOUU5IiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTMwKSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iIzk4OTY5NyIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgzMCAxMDUuOTggNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjOUI5OTlBIiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKDYwIDc1Ljk4IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0EzQTFBMiIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSg5MCA2NSA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNBQkE5QUEiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoMTIwIDU4LjY2IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0IyQjJCMiIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgxNTAgNTQuMDIgNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjQkFCOEI5IiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKDE4MCA1MCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNDMkMwQzEiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTE1MCA0NS45OCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNDQkNCQ0IiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTEyMCA0MS4zNCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNEMkQyRDIiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTkwIDM1IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0RBREFEQSIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgtNjAgMjQuMDIgNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjRTJFMkUyIiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKC0zMCAtNS45OCA2NSkiLz48L3N2Zz4=) no-repeat;
-		background-size: 100%;
-	}
-
-	@keyframes u-flower {
-		0% {
-			-webkit-transform: rotate(0deg);
-			transform: rotate(0deg);
-		}
-
-		to {
-			-webkit-transform: rotate(1turn);
-			transform: rotate(1turn);
-		}
-	}
-
-	@-webkit-keyframes u-circle {
-		0% {
-			transform: rotate(0);
-		}
-
-		100% {
-			transform: rotate(360deg);
-		}
-	}
-</style>
diff --git a/uview-ui/components/u-loadmore/u-loadmore.vue b/uview-ui/components/u-loadmore/u-loadmore.vue
deleted file mode 100644
index 6b852a8..0000000
--- a/uview-ui/components/u-loadmore/u-loadmore.vue
+++ /dev/null
@@ -1,203 +0,0 @@
-<template>
-	<view class="u-load-more-wrap" :style="{
-		backgroundColor: bgColor,
-		marginBottom: marginBottom + 'rpx',
-		marginTop: marginTop + 'rpx',
-		height: $u.addUnit(height)
-	}">
-		<u-line color="#d4d4d4" length="50"></u-line>
-		<!-- 加载中和没有更多的状态才显示两边的横线 -->
-		<view :class="status == 'loadmore' || status == 'nomore' ? 'u-more' : ''" class="u-load-more-inner">
-			<view class="u-loadmore-icon-wrap">
-				<u-loading class="u-loadmore-icon" :color="iconColor" :mode="iconType == 'circle' ? 'circle' : 'flower'" :show="status == 'loading' && icon"></u-loading>
-			</view>
-			<!-- 如果没有更多的状态下,显示内容为dot(粗点),加载特定样式 -->
-			<view class="u-line-1" :style="[loadTextStyle]" :class="[(status == 'nomore' && isDot == true) ? 'u-dot-text' : 'u-more-text']" @tap="loadMore">
-				{{ showText }}
-			</view>
-		</view>
-		<u-line color="#d4d4d4" length="50"></u-line>
-	</view>
-</template>
-
-<script>
-	/**
-	 * loadmore 加载更多
-	 * @description 此组件一般用于标识页面底部加载数据时的状态。
-	 * @tutorial https://www.uviewui.com/components/loadMore.html
-	 * @property {String} status 组件状态(默认loadmore)
-	 * @property {String} bg-color 组件背景颜色,在页面是非白色时会用到(默认#ffffff)
-	 * @property {Boolean} icon 加载中时是否显示图标(默认true)
-	 * @property {String} icon-type 加载中时的图标类型(默认circle)
-	 * @property {String} icon-color icon-type为circle时有效,加载中的动画图标的颜色(默认#b7b7b7)
-	 * @property {Boolean} is-dot status为nomore时,内容显示为一个"●"(默认false)
-	 * @property {String} color 字体颜色(默认#606266)
-	 * @property {String Number} margin-top 到上一个相邻元素的距离
-	 * @property {String Number} margin-bottom 到下一个相邻元素的距离
-	 * @property {Object} load-text 自定义显示的文字,见上方说明示例
-	 * @event {Function} loadmore status为loadmore时,点击组件会发出此事件
-	 * @example <u-loadmore :status="status" icon-type="iconType" load-text="loadText" />
-	 */
-	export default {
-		name: "u-loadmore",
-		props: {
-			// 组件背景色
-			bgColor: {
-				type: String,
-				default: 'transparent'
-			},
-			// 是否显示加载中的图标
-			icon: {
-				type: Boolean,
-				default: true
-			},
-			// 字体大小
-			fontSize: {
-				type: String,
-				default: '28'
-			},
-			// 字体颜色
-			color: {
-				type: String, 
-				default: '#606266'
-			},
-			// 组件状态,loadmore-加载前的状态,loading-加载中的状态,nomore-没有更多的状态
-			status: {
-				type: String,
-				default: 'loadmore'
-			},
-			// 加载中状态的图标,flower-花朵状图标,circle-圆圈状图标
-			iconType: {
-				type: String,
-				default: 'circle'
-			},
-			// 显示的文字
-			loadText: {
-				type: Object,
-				default () {
-					return {
-						loadmore: '加载更多',
-						loading: '正在加载...',
-						nomore: '没有更多了'
-					}
-				}
-			},
-			// 在“没有更多”状态下,是否显示粗点
-			isDot: {
-				type: Boolean,
-				default: false
-			},
-			// 加载中显示圆圈动画时,动画的颜色
-			iconColor: {
-				type: String,
-				default: '#b7b7b7'
-			},
-			// 上边距
-			marginTop: {
-				type: [String, Number],
-				default: 0
-			},
-			// 下边距
-			marginBottom: {
-				type: [String, Number],
-				default: 0
-			},
-			// 高度,单位rpx
-			height: {
-				type: [String, Number],
-				default: 'auto'
-			}
-		},
-		data() {
-			return {
-				// 粗点
-				dotText: "●"
-			}
-		},
-		computed: {
-			// 加载的文字显示的样式
-			loadTextStyle() {
-				return {
-					color: this.color,
-					fontSize: this.fontSize + 'rpx',
-					position: 'relative',
-					zIndex: 1,
-					backgroundColor: this.bgColor,
-					// 如果是加载中状态,动画和文字需要距离近一点
-				}
-			},
-			// 加载中圆圈动画的样式
-			cricleStyle() {
-				return {
-					borderColor: `#e5e5e5 #e5e5e5 #e5e5e5 ${this.circleColor}`
-				}
-			},
-			// 加载中花朵动画形式
-			// 动画由base64图片生成,暂不支持修改
-			flowerStyle() {
-				return {
-				}
-			},
-			// 显示的提示文字
-			showText() {
-				let text = '';
-				if(this.status == 'loadmore') text = this.loadText.loadmore;
-				else if(this.status == 'loading') text = this.loadText.loading;
-				else if(this.status == 'nomore' && this.isDot) text = this.dotText;
-				else text = this.loadText.nomore;
-				return text;
-			}
-		},
-		methods: {
-			loadMore() {
-				// 只有在“加载更多”的状态下才发送点击事件,内容不满一屏时无法触发底部上拉事件,所以需要点击来触发
-				if(this.status == 'loadmore') this.$emit('loadmore');
-			}
-		}
-	}
-</script>
-
-<style scoped lang="scss">
-	@import "../../libs/css/style.components.scss";
-	
-	/* #ifdef MP */
-	// 在mp.scss中,赋予了u-line为flex: 1,这里需要一个明确的长度,所以重置掉它
-	// 在组件内部,把组件名(u-line)当做选择器,在微信开发工具会提示不合法,但不影响使用
-	u-line {
-		flex: none;
-	}
-	/* #endif */
-	
-	.u-load-more-wrap {
-		@include vue-flex;
-		justify-content: center;
-		align-items: center;
-	}
-	
-	.u-load-more-inner {
-		@include vue-flex;
-		justify-content: center;
-		align-items: center;
-		padding: 0 12rpx;
-	}
-	
-	.u-more {
-		position: relative;
-		@include vue-flex;
-		justify-content: center;
-	}
-	
-	.u-dot-text {
-		font-size: 28rpx;
-	}
-	
-	.u-loadmore-icon-wrap {
-		margin-right: 8rpx;
-	}
-	
-	.u-loadmore-icon {
-		@include vue-flex;
-		align-items: center;
-		justify-content: center;
-	}
-</style>
diff --git a/uview-ui/components/u-mask/u-mask.vue b/uview-ui/components/u-mask/u-mask.vue
deleted file mode 100644
index 0b55d9d..0000000
--- a/uview-ui/components/u-mask/u-mask.vue
+++ /dev/null
@@ -1,123 +0,0 @@
-<template>
-	<view class="u-mask" hover-stop-propagation :style="[maskStyle, zoomStyle]" @tap="click" @touchmove.stop.prevent="() => {}" :class="{
-		'u-mask-zoom': zoom,
-		'u-mask-show': show
-	}">
-		<slot />
-	</view>
-</template>
-
-<script>
-	/**
-	 * mask 遮罩
-	 * @description 创建一个遮罩层,用于强调特定的页面元素,并阻止用户对遮罩下层的内容进行操作,一般用于弹窗场景
-	 * @tutorial https://www.uviewui.com/components/mask.html
-	 * @property {Boolean} show 是否显示遮罩(默认false)
-	 * @property {String Number} z-index z-index 层级(默认1070)
-	 * @property {Object} custom-style 自定义样式对象,见上方说明
-	 * @property {String Number} duration 动画时长,单位毫秒(默认300)
-	 * @property {Boolean} zoom 是否使用scale对遮罩进行缩放(默认true)
-	 * @property {Boolean} mask-click-able 遮罩是否可点击,为false时点击不会发送click事件(默认true)
-	 * @event {Function} click mask-click-able为true时,点击遮罩发送此事件
-	 * @example <u-mask :show="show" @click="show = false"></u-mask>
-	 */
-	export default {
-		name: "u-mask",
-		props: {
-			// 是否显示遮罩
-			show: {
-				type: Boolean,
-				default: false
-			},
-			// 层级z-index
-			zIndex: {
-				type: [Number, String],
-				default: ''
-			},
-			// 用户自定义样式
-			customStyle: {
-				type: Object,
-				default () {
-					return {}
-				}
-			},
-			// 遮罩的动画样式, 是否使用使用zoom进行scale进行缩放
-			zoom: {
-				type: Boolean,
-				default: true
-			},
-			// 遮罩的过渡时间,单位为ms
-			duration: {
-				type: [Number, String],
-				default: 300
-			},
-			// 是否可以通过点击遮罩进行关闭
-			maskClickAble: {
-				type: Boolean,
-				default: true
-			}
-		},
-		data() {
-			return {
-				zoomStyle: {
-					transform: ''
-				},
-				scale: 'scale(1.2, 1.2)'
-			}
-		},
-		watch: {
-			show(n) {
-				if(n && this.zoom) {
-					// 当展示遮罩的时候,设置scale为1,达到缩小(原来为1.2)的效果
-					this.zoomStyle.transform = 'scale(1, 1)';
-				} else if(!n && this.zoom) {
-					// 当隐藏遮罩的时候,设置scale为1.2,达到放大(因为显示遮罩时已重置为1)的效果
-					this.zoomStyle.transform = this.scale;
-				}
-			}
-		},
-		computed: {
-			maskStyle() {
-				let style = {};
-				style.backgroundColor = "rgba(0, 0, 0, 0.6)";
-				if(this.show) style.zIndex = this.zIndex ? this.zIndex : this.$u.zIndex.mask;
-				else style.zIndex = -1;
-				style.transition = `all ${this.duration / 1000}s ease-in-out`;
-				// 判断用户传递的对象是否为空,不为空就进行合并
-				if (Object.keys(this.customStyle).length) style = { 
-					...style,
-					...this.customStyle
-				};
-				return style;
-			}
-		},
-		methods: {
-			click() {
-				if (!this.maskClickAble) return;
-				this.$emit('click');
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	@import "../../libs/css/style.components.scss";
-	
-	.u-mask {
-		position: fixed;
-		top: 0;
-		left: 0;
-		right: 0;
-		bottom: 0;
-		opacity: 0;
-		transition: transform 0.3s;
-	}
-
-	.u-mask-show {
-		opacity: 1;
-	}
-	
-	.u-mask-zoom {
-		transform: scale(1.2, 1.2);
-	}
-</style>
diff --git a/uview-ui/components/u-message-input/u-message-input.vue b/uview-ui/components/u-message-input/u-message-input.vue
deleted file mode 100644
index 41e0719..0000000
--- a/uview-ui/components/u-message-input/u-message-input.vue
+++ /dev/null
@@ -1,311 +0,0 @@
-<template>
-	<view class="u-char-box">
-		<view class="u-char-flex">
-			<input :disabled="disabledKeyboard" :value="valueModel" type="number" :focus="focus" :maxlength="maxlength" class="u-input" @input="getVal"/>
-			<view v-for="(item, index) in loopCharArr" :key="index">
-				<view :class="[breathe && charArrLength == index ? 'u-breathe' : '', 'u-char-item',
-				charArrLength === index && mode == 'box' ? 'u-box-active' : '',
-				mode === 'box' ? 'u-box' : '']" :style="{
-					fontWeight: bold ? 'bold' : 'normal',
-					fontSize: fontSize + 'rpx',
-					width: width + 'rpx',
-					height: width + 'rpx',
-					color: inactiveColor,
-					borderColor: charArrLength === index && mode == 'box' ? activeColor : inactiveColor
-				}">
-					<view class="u-placeholder-line" :style="{
-							display: charArrLength === index ? 'block' : 'none',
-							height: width * 0.5 +'rpx'
-						}"
-						v-if="mode !== 'middleLine'"
-					></view>
-					<view v-if="mode === 'middleLine' && charArrLength <= index" :class="[breathe && charArrLength == index ? 'u-breathe' : '', charArrLength === index ? 'u-middle-line-active' : '']"
-					 class="u-middle-line" :style="{height: bold ? '4px' : '2px', background: charArrLength === index ? activeColor : inactiveColor}"></view>
-					<view v-if="mode === 'bottomLine'" :class="[breathe && charArrLength == index ? 'u-breathe' : '', charArrLength === index ? 'u-buttom-line-active' : '']"
-					 class="u-bottom-line" :style="{height: bold ? '4px' : '2px', background: charArrLength === index ? activeColor : inactiveColor}"></view>
-					<block v-if="!dotFill"> {{ charArr[index] ? charArr[index] : ''}}</block>
-					<block v-else>
-						<text class="u-dot">{{ charArr[index] ? '●' : ''}}</text>
-					</block>
-				</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	/**
-	 * messageInput 验证码输入框
-	 * @description 该组件一般用于验证用户短信验证码的场景,也可以结合uView的键盘组件使用
-	 * @tutorial https://www.uviewui.com/components/messageInput.html
-	 * @property {String Number} maxlength 输入字符个数(默认4)
-	 * @property {Boolean} dot-fill 是否用圆点填充(默认false)
-	 * @property {String} mode 模式选择,见上方"基本使用"说明(默认box)
-	 * @property {String Number} value 预置值
-	 * @property {Boolean} breathe 是否开启呼吸效果,见上方说明(默认true)
-	 * @property {Boolean} focus 是否自动获取焦点(默认false)
-	 * @property {Boolean} bold 字体和输入横线是否加粗(默认true)
-	 * @property {String Number} font-size 字体大小,单位rpx(默认60)
-	 * @property {String} active-color 当前激活输入框的样式(默认#2979ff)
-	 * @property {String} inactive-color 非激活输入框的样式,文字颜色同此值(默认#606266)
-	 * @property {String | Number} width 输入框宽度,单位rpx,高等于宽(默认80)
-	 * @property {Boolean} disabled-keyboard 禁止点击输入框唤起系统键盘(默认false)
-	 * @event {Function} change 输入内容发生改变时触发,具体见官网说明
-	 * @event {Function} finish 输入字符个数达maxlength值时触发,见官网说明
-	 * @example <u-message-input mode="bottomLine"></u-message-input>
-	 */
-	export default {
-		name: "u-message-input",
-		props: {
-			// 最大输入长度
-			maxlength: {
-				type: [Number, String],
-				default: 4
-			},
-			// 是否用圆点填充
-			dotFill: {
-				type: Boolean,
-				default: false
-			},
-			// 显示模式,box-盒子模式,bottomLine-横线在底部模式,middleLine-横线在中部模式
-			mode: {
-				type: String,
-				default: "box"
-			},
-			// 预置值
-			value: {
-				type: [String, Number],
-				default: ''
-			},
-			// 当前激活输入item,是否带有呼吸效果
-			breathe: {
-				type: Boolean,
-				default: true
-			},
-			// 是否自动获取焦点
-			focus: {
-				type: Boolean,
-				default: false
-			},
-			// 字体是否加粗
-			bold: {
-				type: Boolean,
-				default: false
-			},
-			// 字体大小
-			fontSize: {
-				type: [String, Number],
-				default: 60
-			},
-			// 激活样式
-			activeColor: {
-				type: String,
-				default: '#2979ff'
-			},
-			// 未激活的样式
-			inactiveColor: {
-				type: String,
-				default: '#606266'
-			},
-			// 输入框的大小,单位rpx,宽等于高
-			width: {
-				type: [Number, String],
-				default: '80'
-			},
-			// 是否隐藏原生键盘,如果想用自定义键盘的话,需设置此参数为true
-			disabledKeyboard: {
-				type: Boolean,
-				default: false
-			}
-		},
-		watch: {
-			// maxlength: {
-			// 	// 此值设置为true,会在组件加载后无需maxlength变化就会执行一次本监听函数,无需再created生命周期中处理
-			// 	immediate: true,
-			// 	handler(val) {
-			// 		this.maxlength = Number(val);
-			// 	}
-			// }, 
-			value: {
-				immediate: true,
-				handler(val) {
-					// 转为字符串
-					val = String(val);
-					// 超出部分截掉
-					this.valueModel = val.substring(0, this.maxlength);
-				}
-			},
-		},
-		data() {
-			return {
-				valueModel: ""
-			}
-		},
-		computed: {
-			// 是否显示呼吸灯效果
-			animationClass() {
-				return (index) => {
-					if (this.breathe && this.charArr.length == index) return 'u-breathe';
-					else return '';
-				}
-			},
-			// 用于显示字符
-			charArr() {
-				return this.valueModel.split('');
-			},
-			charArrLength() {
-				return this.charArr.length;
-			},
-			// 根据长度,循环输入框的个数,因为头条小程序数值不能用于v-for
-			loopCharArr() {
-				return new Array(this.maxlength);
-			}
-		},
-		methods: {
-			getVal(e) {
-				let {
-					value
-				} = e.detail
-				this.valueModel = value;
-				// 判断长度是否超出了maxlength值,理论上不会发生,因为input组件设置了maxlength属性值
-				if (String(value).length > this.maxlength) return;
-				// 未达到maxlength之前,发送change事件,达到后发送finish事件
-				this.$emit('change', value);
-				if (String(value).length == this.maxlength) {
-					this.$emit('finish', value);
-				}
-			}
-		}
-	}
-</script>
-
-<style scoped lang="scss">
-	@import "../../libs/css/style.components.scss";
-
-	@keyframes breathe {
-		0% {
-			opacity: 0.3;
-		}
-
-		50% {
-			opacity: 1;
-		}
-
-		100% {
-			opacity: 0.3;
-		}
-	}
-
-	.u-char-box {
-		text-align: center;
-	}
-
-	.u-char-flex {
-		@include vue-flex;
-		justify-content: center;
-		flex-wrap: wrap;
-		position: relative;
-	}
-
-	.u-input {
-		position: absolute;
-		top: 0;
-		left: -100%;
-		width: 200%;
-		height: 100%;
-		text-align: left;
-		z-index: 9;
-		opacity: 0;
-		background: none;
-	}
-
-	.u-char-item {
-		position: relative;
-		width: 90rpx;
-		height: 90rpx;
-		margin: 10rpx 10rpx;
-		font-size: 60rpx;
-		font-weight: bold;
-		color: $u-main-color;
-		line-height: 90rpx;
-		@include vue-flex;
-		justify-content: center;
-		align-items: center;
-	}
-
-	.u-middle-line {
-		border: none;
-	}
-
-	.u-box {
-		box-sizing: border-box;
-		border: 2rpx solid #cccccc;
-		border-radius: 6rpx;
-	}
-
-	.u-box-active {
-		overflow: hidden;
-		animation-timing-function: ease-in-out;
-		animation-duration: 1500ms;
-		animation-iteration-count: infinite;
-		animation-direction: alternate;
-		border: 2rpx solid $u-type-primary;
-	}
-
-	.u-middle-line-active {
-		background: $u-type-primary;
-	}
-
-	.u-breathe {
-		animation: breathe 2s infinite ease;
-	}
-
-	.u-placeholder-line {
-		/* #ifndef APP-NVUE */
-		display: none;
-		/* #endif */
-		position: absolute;
-		left: 50%;
-		top: 50%;
-		transform: translate(-50%, -50%);
-		width: 2rpx;
-		height: 40rpx;
-		background: #333333;
-		animation: twinkling 1.5s infinite ease;
-	}
-
-	.u-animation-breathe {
-		animation-name: breathe;
-	}
-
-	.u-dot {
-		font-size: 34rpx;
-		line-height: 34rpx;
-	}
-
-	.u-middle-line {
-		height: 4px;
-		background: #000000;
-		width: 80%;
-		position: absolute;
-		border-radius: 2px;
-		top: 50%;
-		left: 50%;
-		transform: translate(-50%, -50%);
-	}
-
-	.u-buttom-line-active {
-		background: $u-type-primary;
-	}
-
-	.u-bottom-line {
-		height: 4px;
-		background: #000000;
-		width: 80%;
-		position: absolute;
-		border-radius: 2px;
-		bottom: 0;
-		left: 50%;
-		transform: translate(-50%);
-	}
-</style>
diff --git a/uview-ui/components/u-modal/u-modal.vue b/uview-ui/components/u-modal/u-modal.vue
deleted file mode 100644
index ce58113..0000000
--- a/uview-ui/components/u-modal/u-modal.vue
+++ /dev/null
@@ -1,283 +0,0 @@
-<template>
-	<view>
-		<u-popup :zoom="zoom" mode="center" :popup="false" :z-index="uZIndex" v-model="value" :length="width"
-		 :mask-close-able="maskCloseAble" :border-radius="borderRadius" @close="popupClose" :negative-top="negativeTop">
-			<view class="u-model">
-				<view v-if="showTitle" class="u-model__title u-line-1" :style="[titleStyle]">{{ title }}</view>
-				<view class="u-model__content">
-					<view :style="[contentStyle]" v-if="$slots.default  || $slots.$default">
-						<slot />
-					</view>
-					<view v-else class="u-model__content__message" :style="[contentStyle]">{{ content }}</view>
-				</view>
-				<view class="u-model__footer u-border-top" v-if="showCancelButton || showConfirmButton">
-					<view v-if="showCancelButton" :hover-stay-time="100" hover-class="u-model__btn--hover" class="u-model__footer__button"
-					 :style="[cancelBtnStyle]" @tap="cancel">
-						{{cancelText}}
-					</view>
-					<view v-if="showConfirmButton || $slots['confirm-button']" :hover-stay-time="100" :hover-class="asyncClose ? 'none' : 'u-model__btn--hover'"
-					 class="u-model__footer__button hairline-left" :style="[confirmBtnStyle]" @tap="confirm">
-						<slot v-if="$slots['confirm-button']" name="confirm-button"></slot>
-						<block v-else>
-							<u-loading mode="circle" :color="confirmColor" v-if="loading"></u-loading>
-							<block v-else>
-								{{confirmText}}
-							</block>
-						</block>
-					</view>
-				</view>
-			</view>
-		</u-popup>
-	</view>
-</template>
-
-<script>
-	/**
-	 * modal 模态框
-	 * @description 弹出模态框,常用于消息提示、消息确认、在当前页面内完成特定的交互操作
-	 * @tutorial https://www.uviewui.com/components/modal.html
-	 * @property {Boolean} value 是否显示模态框
-	 * @property {String | Number} z-index 层级
-	 * @property {String} title 模态框标题(默认"提示")
-	 * @property {String | Number} width 模态框宽度(默认600)
-	 * @property {String} content 模态框内容(默认"内容")
-	 * @property {Boolean} show-title 是否显示标题(默认true)
-	 * @property {Boolean} async-close 是否异步关闭,只对确定按钮有效(默认false)
-	 * @property {Boolean} show-confirm-button 是否显示确认按钮(默认true)
-	 * @property {Stringr | Number} negative-top modal往上偏移的值
-	 * @property {Boolean} show-cancel-button 是否显示取消按钮(默认false)
-	 * @property {Boolean} mask-close-able 是否允许点击遮罩关闭modal(默认false)
-	 * @property {String} confirm-text 确认按钮的文字内容(默认"确认")
-	 * @property {String} cancel-text 取消按钮的文字内容(默认"取消")
-	 * @property {String} cancel-color 取消按钮的颜色(默认"#606266")
-	 * @property {String} confirm-color 确认按钮的文字内容(默认"#2979ff")
-	 * @property {String | Number} border-radius 模态框圆角值,单位rpx(默认16)
-	 * @property {Object} title-style 自定义标题样式,对象形式
-	 * @property {Object} content-style 自定义内容样式,对象形式
-	 * @property {Object} cancel-style 自定义取消按钮样式,对象形式
-	 * @property {Object} confirm-style 自定义确认按钮样式,对象形式
-	 * @property {Boolean} zoom 是否开启缩放模式(默认true)
-	 * @event {Function} confirm 确认按钮被点击
-	 * @event {Function} cancel 取消按钮被点击
-	 * @example <u-modal :src="title" :content="content"></u-modal>
-	 */
-	export default {
-		name: 'u-modal',
-		props: {
-			// 是否显示Modal
-			value: {
-				type: Boolean,
-				default: false
-			},
-			// 层级z-index
-			zIndex: {
-				type: [Number, String],
-				default: ''
-			},
-			// 标题
-			title: {
-				type: [String],
-				default: '提示'
-			},
-			// 弹窗宽度,可以是数值(rpx),百分比,auto等
-			width: {
-				type: [Number, String],
-				default: 600
-			},
-			// 弹窗内容
-			content: {
-				type: String,
-				default: '内容'
-			},
-			// 是否显示标题
-			showTitle: {
-				type: Boolean,
-				default: true
-			},
-			// 是否显示确认按钮
-			showConfirmButton: {
-				type: Boolean,
-				default: true
-			},
-			// 是否显示取消按钮
-			showCancelButton: {
-				type: Boolean,
-				default: false
-			},
-			// 确认文案
-			confirmText: {
-				type: String,
-				default: '确认'
-			},
-			// 取消文案
-			cancelText: {
-				type: String,
-				default: '取消'
-			},
-			// 确认按钮颜色
-			confirmColor: {
-				type: String,
-				default: '#2979ff'
-			},
-			// 取消文字颜色
-			cancelColor: {
-				type: String,
-				default: '#606266'
-			},
-			// 圆角值
-			borderRadius: {
-				type: [Number, String],
-				default: 16
-			},
-			// 标题的样式
-			titleStyle: {
-				type: Object,
-				default () {
-					return {}
-				}
-			},
-			// 内容的样式
-			contentStyle: {
-				type: Object,
-				default () {
-					return {}
-				}
-			},
-			// 取消按钮的样式
-			cancelStyle: {
-				type: Object,
-				default () {
-					return {}
-				}
-			},
-			// 确定按钮的样式
-			confirmStyle: {
-				type: Object,
-				default () {
-					return {}
-				}
-			},
-			// 是否开启缩放效果
-			zoom: {
-				type: Boolean,
-				default: true
-			},
-			// 是否异步关闭,只对确定按钮有效
-			asyncClose: {
-				type: Boolean,
-				default: false
-			},
-			// 是否允许点击遮罩关闭modal
-			maskCloseAble: {
-				type: Boolean,
-				default: false
-			},
-			// 给一个负的margin-top,往上偏移,避免和键盘重合的情况
-			negativeTop: {
-				type: [String, Number],
-				default: 0
-			}
-		},
-		data() {
-			return {
-				loading: false, // 确认按钮是否正在加载中
-			}
-		},
-		computed: {
-			cancelBtnStyle() {
-				return Object.assign({
-					color: this.cancelColor
-				}, this.cancelStyle);
-			},
-			confirmBtnStyle() {
-				return Object.assign({
-					color: this.confirmColor
-				}, this.confirmStyle);
-			},
-			uZIndex() {
-				return this.zIndex ? this.zIndex : this.$u.zIndex.popup;
-			}
-		},
-		watch: {
-			// 如果是异步关闭时,外部修改v-model的值为false时,重置内部的loading状态
-			// 避免下次打开的时候,状态混乱
-			value(n) {
-				if (n === true) this.loading = false;
-			}
-		},
-		methods: {
-			confirm() {
-				// 异步关闭
-				if (this.asyncClose) {
-					this.loading = true;
-				} else {
-					this.$emit('input', false);
-				}
-				this.$emit('confirm');
-			},
-			cancel() {
-				this.$emit('cancel');
-				this.$emit('input', false);
-				// 目前popup弹窗关闭有一个延时操作,此处做一个延时
-				// 避免确认按钮文字变成了"确定"字样,modal还没消失,造成视觉不好的效果
-				setTimeout(() => {
-					this.loading = false;
-				}, 300);
-			},
-			// 点击遮罩关闭modal,设置v-model的值为false,否则无法第二次弹起modal
-			popupClose() {
-				this.$emit('input', false);
-			},
-			// 清除加载中的状态
-			clearLoading() {
-				this.loading = false;
-			}
-		}
-	};
-</script>
-
-<style lang="scss" scoped>
-	@import "../../libs/css/style.components.scss";
-
-	.u-model {
-		height: auto;
-		overflow: hidden;
-		font-size: 32rpx;
-		background-color: #fff;
-
-		&__btn--hover {
-			background-color: rgb(230, 230, 230);
-		}
-
-		&__title {
-			padding-top: 48rpx;
-			font-weight: 500;
-			text-align: center;
-			color: $u-main-color;
-		}
-
-		&__content {
-			&__message {
-				padding: 48rpx;
-				font-size: 30rpx;
-				text-align: center;
-				color: $u-content-color;
-			}
-		}
-
-		&__footer {
-			@include vue-flex;
-
-			&__button {
-				flex: 1;
-				height: 100rpx;
-				line-height: 100rpx;
-				font-size: 32rpx;
-				box-sizing: border-box;
-				cursor: pointer;
-				text-align: center;
-				border-radius: 4rpx;
-			}
-		}
-	}
-</style>
diff --git a/uview-ui/components/u-navbar/u-navbar.vue b/uview-ui/components/u-navbar/u-navbar.vue
deleted file mode 100644
index 450242e..0000000
--- a/uview-ui/components/u-navbar/u-navbar.vue
+++ /dev/null
@@ -1,315 +0,0 @@
-<template>
-	<view class="">
-		<view class="u-navbar" :style="[navbarStyle]" :class="{ 'u-navbar-fixed': isFixed, 'u-border-bottom': borderBottom }">
-			<view class="u-status-bar" :style="{ height: statusBarHeight + 'px' }"></view>
-			<view class="u-navbar-inner" :style="[navbarInnerStyle]">
-				<view class="u-back-wrap" v-if="isBack" @tap="goBack">
-					<view class="u-icon-wrap">
-						<u-icon :name="backIconName" :color="backIconColor" :size="backIconSize"></u-icon>
-					</view>
-					<view class="u-icon-wrap u-back-text u-line-1" v-if="backText" :style="[backTextStyle]">{{ backText }}</view>
-				</view>
-				<view class="u-navbar-content-title" v-if="title" :style="[titleStyle]">
-					<view
-					    class="u-title u-line-1"
-					    :style="{
-							color: titleColor,
-							fontSize: titleSize + 'rpx',
-							fontWeight: titleBold ? 'bold' : 'normal'
-						}">
-						{{ title }}
-					</view>
-				</view>
-				<view class="u-slot-content">
-					<slot></slot>
-				</view>
-				<view class="u-slot-right">
-					<slot name="right"></slot>
-				</view>
-			</view>
-		</view>
-		<!-- 解决fixed定位后导航栏塌陷的问题 -->
-		<view class="u-navbar-placeholder" v-if="isFixed && !immersive" :style="{ width: '100%', height: Number(navbarHeight) + statusBarHeight + 'px' }"></view>
-	</view>
-</template>
-
-<script>
-	// 获取系统状态栏的高度
-	let systemInfo = uni.getSystemInfoSync();
-	let menuButtonInfo = {};
-	// 如果是小程序,获取右上角胶囊的尺寸信息,避免导航栏右侧内容与胶囊重叠(支付宝小程序非本API,尚未兼容)
-	// #ifdef MP-WEIXIN || MP-BAIDU || MP-TOUTIAO || MP-QQ
-	menuButtonInfo = uni.getMenuButtonBoundingClientRect();
-	// #endif
-	/**
-	 * navbar 自定义导航栏
-	 * @description 此组件一般用于在特殊情况下,需要自定义导航栏的时候用到,一般建议使用uniapp自带的导航栏。
-	 * @tutorial https://www.uviewui.com/components/navbar.html
-	 * @property {String Number} height 导航栏高度(不包括状态栏高度在内,内部自动加上),注意这里的单位是px(默认44)
-	 * @property {String} back-icon-color 左边返回图标的颜色(默认#606266)
-	 * @property {String} back-icon-name 左边返回图标的名称,只能为uView自带的图标(默认arrow-left)
-	 * @property {String Number} back-icon-size 左边返回图标的大小,单位rpx(默认30)
-	 * @property {String} back-text 返回图标右边的辅助提示文字
-	 * @property {Object} back-text-style 返回图标右边的辅助提示文字的样式,对象形式(默认{ color: '#606266' })
-	 * @property {String} title 导航栏标题,如设置为空字符,将会隐藏标题占位区域
-	 * @property {String Number} title-width 导航栏标题的最大宽度,内容超出会以省略号隐藏,单位rpx(默认250)
-	 * @property {String} title-color 标题的颜色(默认#606266)
-	 * @property {String Number} title-size 导航栏标题字体大小,单位rpx(默认32)
-	 * @property {Function} custom-back 自定义返回逻辑方法
-	 * @property {String Number} z-index 固定在顶部时的z-index值(默认980)
-	 * @property {Boolean} is-back 是否显示导航栏左边返回图标和辅助文字(默认true)
-	 * @property {Object} background 导航栏背景设置,见官网说明(默认{ background: '#ffffff' })
-	 * @property {Boolean} is-fixed 导航栏是否固定在顶部(默认true)
-	 * @property {Boolean} immersive 沉浸式,允许fixed定位后导航栏塌陷,仅fixed定位下生效(默认false)
-	 * @property {Boolean} border-bottom 导航栏底部是否显示下边框,如定义了较深的背景颜色,可取消此值(默认true)
-	 * @example <u-navbar back-text="返回" title="剑未配妥,出门已是江湖"></u-navbar>
-	 */
-	export default {
-		name: "u-navbar",
-		props: {
-			// 导航栏高度,单位px,非rpx
-			height: {
-				type: [String, Number],
-				default: ''
-			},
-			// 返回箭头的颜色
-			backIconColor: {
-				type: String,
-				default: '#606266'
-			},
-			// 左边返回的图标
-			backIconName: {
-				type: String,
-				default: 'nav-back'
-			},
-			// 左边返回图标的大小,rpx
-			backIconSize: {
-				type: [String, Number],
-				default: '44'
-			},
-			// 返回的文字提示
-			backText: {
-				type: String,
-				default: ''
-			},
-			// 返回的文字的 样式
-			backTextStyle: {
-				type: Object,
-				default () {
-					return {
-						color: '#606266'
-					}
-				}
-			},
-			// 导航栏标题
-			title: {
-				type: String,
-				default: ''
-			},
-			// 标题的宽度,如果需要自定义右侧内容,且右侧内容很多时,可能需要减少这个宽度,单位rpx
-			titleWidth: {
-				type: [String, Number],
-				default: '250'
-			},
-			// 标题的颜色
-			titleColor: {
-				type: String,
-				default: '#606266'
-			},
-			// 标题字体是否加粗
-			titleBold: {
-				type: Boolean,
-				default: false
-			},
-			// 标题的字体大小
-			titleSize: {
-				type: [String, Number],
-				default: 32
-			},
-			isBack: {
-				type: [Boolean, String],
-				default: true
-			},
-			// 对象形式,因为用户可能定义一个纯色,或者线性渐变的颜色
-			background: {
-				type: Object,
-				default () {
-					return {
-						background: '#ffffff'
-					}
-				}
-			},
-			// 导航栏是否固定在顶部
-			isFixed: {
-				type: Boolean,
-				default: true
-			},
-			// 是否沉浸式,允许fixed定位后导航栏塌陷,仅fixed定位下生效
-			immersive: {
-				type: Boolean,
-				default: false
-			},
-			// 是否显示导航栏的下边框
-			borderBottom: {
-				type: Boolean,
-				default: true
-			},
-			zIndex: {
-				type: [String, Number],
-				default: ''
-			},
-			// 自定义返回逻辑
-			customBack: {
-				type: Function,
-				default: null
-			}
-		},
-		data() {
-			return {
-				menuButtonInfo: menuButtonInfo,
-				statusBarHeight: systemInfo.statusBarHeight
-			};
-		},
-		computed: {
-			// 导航栏内部盒子的样式
-			navbarInnerStyle() {
-				let style = {};
-				// 导航栏宽度,如果在小程序下,导航栏宽度为胶囊的左边到屏幕左边的距离
-				style.height = this.navbarHeight + 'px';
-				// // 如果是各家小程序,导航栏内部的宽度需要减少右边胶囊的宽度
-				// #ifdef MP
-				let rightButtonWidth = systemInfo.windowWidth - menuButtonInfo.left;
-				style.marginRight = rightButtonWidth + 'px';
-				// #endif
-				return style;
-			},
-			// 整个导航栏的样式
-			navbarStyle() {
-				let style = {};
-				style.zIndex = this.zIndex ? this.zIndex : this.$u.zIndex.navbar;
-				// 合并用户传递的背景色对象
-				Object.assign(style, this.background);
-				return style;
-			},
-			// 导航中间的标题的样式
-			titleStyle() {
-				let style = {};
-				// #ifndef MP
-				style.left = (systemInfo.windowWidth - uni.upx2px(this.titleWidth)) / 2 + 'px';
-				style.right = (systemInfo.windowWidth - uni.upx2px(this.titleWidth)) / 2 + 'px';
-				// #endif
-				// #ifdef MP
-				// 此处是为了让标题显示区域即使在小程序有右侧胶囊的情况下也能处于屏幕的中间,是通过绝对定位实现的
-				let rightButtonWidth = systemInfo.windowWidth - menuButtonInfo.left;
-				style.left = (systemInfo.windowWidth - uni.upx2px(this.titleWidth)) / 2 + 'px';
-				style.right = rightButtonWidth - (systemInfo.windowWidth - uni.upx2px(this.titleWidth)) / 2 + rightButtonWidth +
-					'px';
-				// #endif
-				style.width = uni.upx2px(this.titleWidth) + 'px';
-				return style;
-			},
-			// 转换字符数值为真正的数值
-			navbarHeight() {
-				// #ifdef APP-PLUS || H5
-				return this.height ? this.height : 44;
-				// #endif
-				// #ifdef MP
-				// 小程序特别处理,让导航栏高度 = 胶囊高度 + 两倍胶囊顶部与状态栏底部的距离之差(相当于同时获得了导航栏底部与胶囊底部的距离)
-				// 此方法有缺陷,暂不用(会导致少了几个px),采用直接固定值的方式
-				// return menuButtonInfo.height + (menuButtonInfo.top - this.statusBarHeight) * 2;//导航高度
-				let height = systemInfo.platform == 'ios' ? 44 : 48;
-				return this.height ? this.height : height;
-				// #endif
-			}
-		},
-		created() {},
-		methods: {
-			goBack() {
-				// 如果自定义了点击返回按钮的函数,则执行,否则执行返回逻辑
-				if (typeof this.customBack === 'function') {
-					// 在微信,支付宝等环境(H5正常),会导致父组件定义的customBack()函数体中的this变成子组件的this
-					// 通过bind()方法,绑定父组件的this,让this.customBack()的this为父组件的上下文
-					this.customBack.bind(this.$u.$parent.call(this))();
-				} else {
-					uni.navigateBack();
-				}
-			}
-		}
-	};
-</script>
-
-<style scoped lang="scss">
-	@import "../../libs/css/style.components.scss";
-
-	.u-navbar {
-		width: 100%;
-	}
-
-	.u-navbar-fixed {
-		position: fixed;
-		left: 0;
-		right: 0;
-		top: 0;
-		z-index: 991;
-	}
-
-	.u-status-bar {
-		width: 100%;
-	}
-
-	.u-navbar-inner {
-		@include vue-flex;
-		justify-content: space-between;
-		position: relative;
-		align-items: center;
-	}
-
-	.u-back-wrap {
-		@include vue-flex;
-		align-items: center;
-		flex: 1;
-		flex-grow: 0;
-		padding: 14rpx 14rpx 14rpx 24rpx;
-	}
-
-	.u-back-text {
-		padding-left: 4rpx;
-		font-size: 30rpx;
-	}
-
-	.u-navbar-content-title {
-		@include vue-flex;
-		align-items: center;
-		justify-content: center;
-		flex: 1;
-		position: absolute;
-		left: 0;
-		right: 0;
-		height: 60rpx;
-		text-align: center;
-		flex-shrink: 0;
-	}
-
-	.u-navbar-centent-slot {
-		flex: 1;
-	}
-
-	.u-title {
-		line-height: 60rpx;
-		font-size: 32rpx;
-		flex: 1;
-	}
-
-	.u-navbar-right {
-		flex: 1;
-		@include vue-flex;
-		align-items: center;
-		justify-content: flex-end;
-	}
-
-	.u-slot-content {
-		flex: 1;
-		@include vue-flex;
-		align-items: center;
-	}
-</style>
diff --git a/uview-ui/components/u-no-network/u-no-network.vue b/uview-ui/components/u-no-network/u-no-network.vue
deleted file mode 100644
index 51d9f4f..0000000
--- a/uview-ui/components/u-no-network/u-no-network.vue
+++ /dev/null
@@ -1,233 +0,0 @@
-<template>
-	<view class="u-no-network" v-if="!isConnected" :style="{'z-index': uZIndex}" @touchmove.stop.prevent="() => {}">
-		<view class="u-inner">
-			<image class="u-error-icon" :src="image" mode="widthFix"></image>
-			<view class="u-tips">
-				{{tips}}
-			</view>
-			<!-- 只有APP平台,才能跳转设置页,因为需要调用plus环境 -->
-			<!-- #ifdef APP-PLUS -->
-			<view class="u-to-setting">
-				请检查网络,或前往<text class="u-setting-btn" @tap="openSettings">设置</text>
-			</view>
-			<!-- #endif -->
-			<view class="u-retry" :hover-stay-time="150" @tap="retry" hover-class="u-retry-hover">
-				重试
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	/**
-	 * noNetwork 无网络提示
-	 * @description 该组件无需任何配置,引入即可,内部自动处理所有功能和事件。
-	 * @tutorial https://www.uviewui.com/components/noNetwork.html
-	 * @property {String} tips 没有网络时的提示语(默认哎呀,网络信号丢失)
-	 * @property {String Number} zIndex 组件的z-index值(默认1080)
-	 * @property {String} image 无网络的图片提示,可用的src地址或base64图片
-	 * @event {Function} retry 用户点击页面的"重试"按钮时触发
-	 * @example <u-no-network></u-no-network>
-	 */
-	export default {
-		name: "u-no-network",
-		props: {
-			// 页面文字提示
-			tips: {
-				type: String,
-				default: '哎呀,网络信号丢失'
-			},
-			// 一个z-index值,用于设置没有网络这个组件的层次,因为页面可能会有其他定位的元素层级过高,导致此组件被覆盖
-			zIndex: {
-				type: [Number, String],
-				default: ''
-			},
-			// image 没有网络的图片提示
-			image: {
-				type: String,
-				default: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZAAAAEYCAMAAABFglBLAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6M0U3MjVFMzQwNEY1MTFFQUE4MTNDOUEzMTVBREMxQjIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6M0U3MjVFMzUwNEY1MTFFQUE4MTNDOUEzMTVBREMxQjIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDozRTcyNUUzMjA0RjUxMUVBQTgxM0M5QTMxNUFEQzFCMiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDozRTcyNUUzMzA0RjUxMUVBQTgxM0M5QTMxNUFEQzFCMiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PkHIU9QAAAMAUExURdHW2OWiou7u7tve4dnc3/vw8N3g4sPCwvjn5+jo6M7Q0u6+vtyEhPXY2Li+wuikpPXW1uXo6dba3Pbg4Na5u+qurqqyt/HJydjb3fjo6LrAxO7Bwey1td6MjOrs7fbc3OTn6Maytf7+/vz19eqqqrzCxvzz87a8wLO6vuqxsf78/PDFxenr7L/FyNTY26+2u/z09MjMzqy0udnZ2dvb27G4vMjN0O7v8P339+Ll5u3v8NDS1ODj5frt7bC3vP76+u24uOKamtTW2MTIy9zc3N7e3vPQ0OCTk8DGyfDDw9LR0c7S1LussNbY2fPOztLU1cLHyrK6vvji4vrv78bKzPX29/np6crP0vjk5Ozu78bLzuepqczR1MHFyMDEyOq1tfTS0vP09cLIy9DU173Ex8bGxvHy88/U18vO0LK4vM7OzsTKzcPJzPLMzM/T1sbMz8HJy+7FxbW8wNTW18XKzvb3+MjLzczP0d3e3+Dh4r3Dxtna29zd3rK5vdPU1cfM0Prq6uOenuPm58HGyfHz8/ro6Lq/w8nO0bzCxcrKytjZ2uXm5vTU1LvBxbW7v+rp6eefn/39/eLi4u3t7Ozs7Pj4+Pr6+vX19fHx8erq6vPz8+Xl5ff39+fn5/v7+/z8/PLx8fX09Pb29ri4uOTk5PHw8OPj4/Py8ubm5vn5+e3s7Pb19fTz8/f29tfX1+7t7cvQ0+zr6/Ly8u3t7fr5+efm5quzuOvq6vT19uvr6/j5+a61uuy6uvb39/T09Ojn5+jq6621uvn6+t/i5KyzuPn4+Le+wvv6+s3S1fj4+fDw8OHk5vv7/Pr7++Xk5LS7v7y8vObl5fz9/ff4+OTj48DEx8XJy+Hk5euysu/x8re9wfn5+v38/Pv8/Pr6++vt7uLi4+Pi4ubl5uXk5dPV1tbV1fHMzNPX2e7u7ejn6PT19fX19PDw7/b29f39/vnr6+Hh4a+3u+7t7q61uePi48PHyf35+enp6fLz9PPz8qmxtuDg4N/f3/Dv7////////1cfN/UAAAEAdFJOU////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wBT9wclAAAlqElEQVR42uydCXwUVZrAk5CEJBAQshACCGyjIRwBJR0It6JBGZZBkRtm5PBgFXAXHBghqAMz6LjGTrd9n7lvwn0JQhARxYNxVJTMwcwOM+7uzK6Z3VXcrnTXVr2q6q7urrvfq26c+n4egXTSVfXv993veym4JkklKdoj0IBoogHRgGiiAdGAaKIB0YBoogHRgGiiAdFEA6IBUVuwx+vqet/v1YAkhxwmcNT9gvjnsAYkGcT7eN1TtThe+1TdL2o1IEkg+rrvUV90MF9oQBIqv6ijF4a3d51XA5J4jVVXx3z587ojGpDEm/QwkO9pQJJB2CvksAYk8fJUXT31xZG63ppRTwI5QgcgR35Rd1MDkgxSX1f31P33P1V3i3u936HUyc3edWSsjuEakKRRW3r9kVv+JrRsrwbklpKTnXs+z0wfONOtAUm8rJu55oqfkZ0TOzUgCZS3Zh7s54+S5RqQhNGYMsnPISkakCSiQcjkNzUgasvUDaVsBF1fb9GXd//B0ziliPzjEA2IujLqGRaMST+cawgLNpn4q30aEDV1Va+dYRqzNy00RMoYUmdpQNTzcb8sCtuKH8w9Z4iWLuIbVzQgapmOBedDOO6c0WjgENK2vKwBUUUmvBSiUbrqxwZuOU18d5MGhEe/dI6a2WvIxA0HX1hfvH7V8gUpA9Mz3x/VuVTRLxvwdAhH5aJjBj4hv39QAxIl743ITHm6azBPnOCfVLwlc6pR3upYFbLjvIuDlEUqRYZo38JYS4gVt5rNZhMQO46byksoMeG4w8QIjtvMpJA/wP1EdZ0bKvkitkh555mBA3zSLnBlSFnNnlJvEJJ95ItW3pJAamvtZhy3m/T0g7fhthJGiG+EviYgmEJ/wHFP6GsbnlZSoicoucxmGwHVguPTBz543C9LHky/Jnql1w5KxWGo8KsThsAFYneYMOb5mlnP11ZCrwOPjfgGI8RqsZuZtUOsFmbllFhZP+zEbc8vGcqzMibv7qos3rd7Mg+TrQv2vCVkiLYcl4rDYLhKvi79FgFirDU7TPpyHHexINg9ZnOazWazyPxlVhsBzcKAKrl84cHo5zx758H0ASufWGrVBWkxup8YMepCespDV6Jfe3z9kOnc7/OjLydJx2FoJF983norAEkLqSbiw4+ZHGY7+UQhyYCDEZml8+ufzLz+RlBAPpieGYPloczYdaIb8rAMHAbD1yr5WHEBqTW7XIwZwEykBoIcrH3JrkgcL554PShRPpie/hDbE9v97oTIXz2zUhYOw0Lw4glJDMRiNtGrIo1AYUFwYZlsVbVzwyhfUJ4YO1MqWb/hsfRw6rzzPnk4DNlk2sQ/BU9aIGZaS2EOI6LLunBn+Fk+fWFpUJmcvPBSWH2dXz4A/OqTB2XiMBimgJf/NCmBGO0OykM1mW3ILur9cNq1cuATwbjk801htC8QcUQmk0NcIhWHoWKwPBdr9KwVuWvz//nVxYXIgTg9wCu1OZxGdJ+RacWhxNKazmD8snJL2DN44Z/oL/btMkgWsFr3Sr+BvmF5oP+fMpABMaaBSKHcgnTJ7tnLPLz1mW8E4ch76S9Hec47pOOgPCz/COm38EDfCEkdn4UCiNVDGg69Ay2OqSEFU7wnCFNGvcB2hHtk8Lhbdn/D6r7RMigLARDSbjgRW7QhTNBdeSEIW6ZPYXgUzZXBg3IB9n0o4y6+iAHS9/Zhc2ACMToIS27yoA5URzCe7ju9gigk5O767/sXqTz04PUPT5VzH31uv3f1o30eTb2djeQnr8IDkqYnLTlqMX7JfIAHeoOI5P3HmDSXRJv+8WC5BoQtZSv++SdhJMMgAbGSISDy1YEPYFzdJ91BhJL5Dv020sw6VdgdEMd9zfrTallERIE4ieWB2VDj+GALE1F3BtHKB0N209E/Js6Dyt28H+fNzbtXBhExIGaqiIHaetDLY/LAIHo5STtcs2+I8ZgNXtdLtqYadiY1NfXMsGEFob+QTkQEiIPwdJEvD7zX29Qj2jQ9qIqk087c1X8XzGBRL3pX9u3khZ2rsfOovyqgF8m8eIFYSjAjahxvLKdzsr2CaslK2p/rJ1BFP0ZXHvE4gJCxOsXgK4rIA7PiAkJYcidyHp1DqTufsi6ooqTQXREL+Xj8gY5PFdxRQWQM8kABi8igeIDYS+zItRX+Pm3NBwbVlVF0sSWHm8f/Ut8d40pTkJqIDgvzWUT+pByIhXCvkPPIpG78yij2w7K6/7PFiJrIe3QafjsXj266+Z1M3uld1jiB9B1L/m0uZVaWKQaClegtyM05nUf8ll1asr9Oihv5IhlCvfneWB4Y7WQ4HRhVhrN77DJ0dx75n4y8M/dGEukDvjyjFEhaSUka8moMdeMb2I9J92+vU/Jn5EToj8NQzp4fv/8FkEBwknkjFyjHyU7l5aWyg8Jx4E+3FyoEokevsOgezkjvyv46I1bkRKZR/m9RJI/7qct6ie3+0z1KLrmf0TwmF58bcr/GKwNiJ3t50ApdiBoVWQsP8Xjdjt60X6PC9vNsHrQmWxPlcaa5yPpDOeF4ii6Ugrxh8/LoqLCMzpw8UMYk5u9VBgQj3xup0LHAyshH1BIGElDB2dL1iybyCnVZWziu2GbGPDheTi4UQTt/hkJwhioWjg0rrXngq1eVADEityB0AuPNqCdkCQN5XRX/l0oAb43s+BEoSBmpDg/MzO/xMJkSyoCX0badwFMGMvKrlQCxlSPOuL9L3XjM87GqqrJIWUPlGikec6nLmiiYvqB8rxKXKJC+95KLhMIA6DwKlo4yo46WB138+DD2+QRCQP5TpRhxA9WFEtp0QESpojUJuwuokHIPl0GZF45A7iVNR35fhsNI8NVoGCVcJPEHV8NVaIn8RbWonSrubjQY6CKApI4fo9OKO8m4MZYJO5kFTDjlahHhyV3MF7KBODwofaxOqhD3U87HY6ECkb8YVQMSpPy9nDV+mfl2C+j8iGFSlpeXN+wBVt4kP6Sz7hVLn/ABQVoFWbeVy78Ke75/tgf+zx1UU7pYPSmZsu7FSTHhyPrl0yl4QmllUP1AjMv1qAIgGEIgur0c8UdiZWl4B8pM2fdDMNEbcTuWFs6ugCgkL1wDoWJ04ov55P9TFQAx8fsQccuahKR3RSokDI9pim7JQn6ECb+LUl15hFuVWsB4W6tDkQmxVnIfzV02DlcExISKBxUJrwkml9BVmT2Kb8sOfGG9w4pnADf39gzGmFPq6/bUM1K6SlN4a+moMlkDqERRkvHo56f8jAVx3JnVDDJerjOhDO8ZJiLMyJXa4pvCn+tFUys8CeznC8mF463TCk16jDkhwhMHneJdTZZAHlg9LLdMVgKcvzqFpm8UNO8O/W1S8fiW5WOVXo7v/qxp1tUhY15WJvvnU/iz7w50FZBRScVjBIXi9ELgaj0d9z0W3B6K0XF4QFxIgMykMndqPm4sm+5Mbf8om/MFM+kOFAzL8cPZ/FxAKK0HMnC4QKwoTMhvgQG587/UBPK93r3/mO1tr/h5794Y1/cH0lXkYCOGgW7sSZfjv9GMAsUqRChbg0hhdQZVBsIIFxC61YHwwrMxrGcMHKUVzyPij3VMethELoMOxYnBJALyULgJyYxh2CK/WhMbFKTfOdJZRmNcywdkVe/UJQ+QT+he+JmgmE8AwfbCUloIVJapJGaJuDFqu6fX6VAQN+6hevuDSQPkGtXjMJiaSGAjgVQUJVhpCQCxxS4RN3nNjsvN5P/kvxdocd+iMo/2x8NA/hi1o4reIERXZVrIu4LmaaEw6rFLBAChRVlRqus9lYE81ZslH7G/c4Hezhjqd6Du6zPQ+P1eMgKxxJSN4wHyVldIW6soFWwevR9vj+lbXB/+GxO4r12zJRVxEwGE3B1igwZkInmfz6rMw9w7Up7yRhbS/ctZL66nbmwjaDb+VTICMeqjmrPYQGS6WSfBB++6ujy8j0cB6V1BfcNH75GOyBlk03d2RaWp4vKB4M4SV8Rzb2YBkZlZeRIkt9VOU3mz/8jWWCVm6q9P0k166REvdtB3tgMYO28yAsEjNVYAY4usbPBUstxQejIBqUNvNm3XK8yh8iBVQj8/LfKVR5g7G5NAR0u0DcgaXiPuCB6YSc5naE0Cq7ZuoLhKwnt1qPCjK1p/hj5vwPXtZ0xKIFZ9yNMymiKBYM3S3+YJct7k0P9KDBBg2sPmnN4j9FhMU5gzdGf9FO2+VWeFOELhodsRBSS7RfLbbInV2GpKSe/eIYd3IsWDw9+zYRFLZGhyAiG7KRhLYnSGmcgambWOnIjw1x8lDIj35x9FdvJyuhcslbwPxsAAREAI35e1tc1IOVoyZ/uBtPu7CSwKMm13S5+lm6mDwkDAEtmUnEDInFZ5+Pl7SUtSL4/Hm2Ck24jEF2sn0NndzKAIEOw18mXTkxMIuZmKFQaSpq9F3pukgx34iefRixpl3cVTIWMDAWPLnkxSICzDDv6EBWS+yYP8n0o1ZQE9LOs/guJA9GRj0O5fJSkQ3ONhGxW5Xb/XQHLog0T3+tDFwSf5DQ3bhSxOkOcreX+IUXnz9RDVO004ZBQ1wfe4wEKNAHIDxCrJC8SIKZ+zAXbxTU8sj3S612dCUCIQDKRXOpMZiFIiU8Eg0ITi8NEDh559MygZyEbVjr9VqLIUE5mYcJM+9TG/lAa9SCA/JvsYd+uSFohyIo8l2qS/T022nvRcUA4QqpbbmbxAABEFe9fXJXo3CJ28qhQtjp3FYnXWl0kMBBDxyH4H0NvwfsJwvEcPKHhBfG754Ugg+oT4WbK2RRNE5E/8W8U1r0E1uV4pkLziq4ew61RvJTMQ3GiSzeM3pALfmSgemdTg3dLPpbw4LQrI18r3HKoFBETt8qCMApo4QTzoeVyPTZVWx4oCsohjKFDyAYnMNIoLaLeZkBAcJ+mjFpZ/KO31N6OAgCPUt6J9/uMgrBCCiIzRf8WcI2bUkE461z5E6g9kRwMBO3OXIgWiix8IOexa+jDGX05md2uqmmunttUWST+HpDkayEbkRkQHwYYArSU5RLwODgBUH4eOniPzoIwjrBqjgSxEfiDxXVCAgAH9EkPEXonJmzxBH5y0Rs5mlO5oIGA46XqUQArhAMEt+hK9tHlaz5D3NFVtHnSuXV6fizGGB0ZOZNwNmcE3rK9HwwJChIgSpzc9nAibTje2b5W3N6glFgiIKt9A51e9WAYLCDAlke6v2+l0x7zmLb/6Nv0kfWT9s/8h7+dssUDug3/iKpvH6Kw5EIFYIt3fNHJCXkP0i8CQnSmq8pi2VeEweXsskBz4Tb6PsL7+KksHc4VEuL9HqRmS0e2+M9XedvvLJ+nSoPytjGmxQBZGD1SO389lASnLehGHCYR0f/WM++umgBzlKk5NUzGXSB/V85KCLklHLBDgZu2D6laxBjzMyvoKLhDg/tojVkg0kCnqOlnp1FE9gxV1ETdj3G6WHyaQrHDkMScr6xHIQEj3lx6JojtB8jgRrRPBMbJela15pbIeSRMHkH2Q3azRWWG/6pGsrELYQHBLqBXb0mowtMbsGAF1aZWt+cG3FP04RxiCYeAM3W/hAXkx7FeNy8qCbUOogEQoZPeBU4NUteanlZ5k1cIFBAT816HxKMti+VWzCCKjoQMhR2xYeCskb6q285ax5sUrlf4GGxeQq2C6FzQgs7JY5+voCCDL4AMBm6wwnjzKNbVSi7Q19z+pfPqynQvIxvin/rGEMONsv+ougshdCICAww658/ET1CkXMta8NJ4zps1cQHKgDhEgzHjWuIgFk1WgQwAEBCScRPaospONseYPXYvnt7i4gNyAuiuBMCFZ7IMMSbteiAIIb4UkU4VpGow1j7Od28fFA3sFbqieQRD4JkppjUMBBAQkHESGoJ/HxFjzojjzAZw2HauAXBFZFmlF8K+ysjKQAAFEYjPyE5F3ODDWfFO854SmcQLBlJ72KaC0yqKU1hwkQHBLOUdTI2ogjDWHkL/08AOBWTPMiIoGC6OXCLyKsdEYu6kHMRDGmr8Tv1bkNiEUEKi7caOiwWVRVgXqCTtGLLr1FymQkDWfAqFRtVYAyAswgRBKq8AYocIilwhUIK7oJjqUQEbQ1vw8FLc6IABkCtwKFZsAGYkU4qiAUE10RnWA0JsM/A+thPLrsgWAHIRbVGfZ8W+yspaNxhECiSaCDAhzQj2saqSxWwAI3PZeMvZ4JGTiZ83BkQIBRKyRcQiCyfsDqQkA/p2wYPOZEAz+/ADSjH9Fub6/zspAkVyMlDR2GiUTSZvc1PVMbP5LWL/yshCQFMhGPWsW7VcVjsbRA8HtLKW1R1azs9RY8DzdxwBx6TULAZkI8/G8SNh0OqGo4zqMCkHnqt0aOiZ0AvyRAdfoM7/9774B75da+Hjsgj3PoSzGiqMHQloSWmtdg77hs9dfKRxXPof5W/mcXirbuwfik5n11RxcfSA2xo6AiuEqeA/u22eYWHAp1GXHq7HAgNKVEBeI6DEvaFaITV+it8GvqWeW0oUoyH6Cm48Htc0Q4pad0XhigITS8WTXyRVYmcSX6OXx9BOQ3YQ0XiCg2xreNIdxeKKAMETIvqzjcJ7ahSIKx2T4FUgXLxDyPUtxNQXZ/iCKCOhchOEOvUmPj/E/uBI6D36NBbZ9xjuddHOf/NvyZpUlGgjY1GOcCKmV9POtcFMlEjUWlIJhnyogdwxPMBCCiJPqfo87gHuDnu3q34nkPDF+jbVNaW7xxe/nz+9zT5/NuSsK8UEUkKrViQZC9tDNhBGqT6P3N/s3+FDwqOXXWBsVBeovzmMY0NJncd7aqqqErxAyaAfDPTfF9bys9H5afyWi80GP8ANRNKFpflW05BMBCIElCYBQg/Vmx7U8+jGZRB8aHsw5LlwCLNeH8pK5d8TwqFpLROgAS6KBEDwGx+dmrWOcq2JklXknPw/sbdlO1m1VHDISx/Oqql5NOBCmqKd8Wlavh+nYA+FBFzf5eSyUbdOXcfGoysLxV6uqFsMAUhgHD6D7qWMBFdY96EHt/k0IR5oKmHT5rdZzOHlUZeD4eMKGjP9+bt5XZfEBmaecB1A2Y7D/IWNdZWVBuu5R2iuIUMwCQEAma538kCNK+o/D8TPhPw26Z9jm3MVlioBk9f9GKQ/w6X6t2wB6QxS0FU4oZhK736LkYRXgATa0SRrPNKdwVsHikbfN414gY4lXEI5wlC88TwGQWf0l+mqxAh5n0e8MBqC4ZG8T+JAePebvQtyqnSYEZLbEpqzRVYJCPsPUqjuIwCxj8W35Zxgwt8kFMgs41HfcVqh0fexuNBgMPUoikWlDmbLgJ2h5+BoFeGwTGRsw7pGfzXqksOybccuEgYwnXkrEhbmLmVp62bKR8+4gCclcIYWkSpyvhAc4pLy0HuyUniQ7Ell6EHEoKKG5ITRYg7s6tTi/zxf9IxTQq7l5+TxACOWUQX2VOmj4/M0jV5CP9J6qKgU2pA/pQitIIYNw8A/U1vWdcvOLmVdQh4Lhdqx6ISCkh1jJSaN/zEMn9+GM5QFCPMOsyL9JHTSIL3IXBvLNWMXx+WkXxcOQI28X1ROrkIeCYbEL8bjBPUh57SCuhz6aUCh8KmsFjo8kgpGR88afGcRC+aIStzdLAQ+QUDzfTPMwgBT2UMk9PpPQh4Ih0bkwMad3RPTqGA4e5j3z543MKsTLCr9akZe7lvg7XcwqiAhDCP+LVv3Gwp+NXDu+zz19limKQxR4veCU8sHnDCEplX4I7oi9KoSCYTmMiWmsqDknZePJBzxoc5RdvYPwffILeIGMIxOOqRILwdBTJ0ujeRhWST2i7Q36BGf/FZVmAjYL8QBTezdE3NsK0krMXxFzz6nguX/Bw4P0poZXDUpQxfA34Ika2AIc39m/EU9cMVXBd1UaTC68QH4Qk3pfS64OLi/nrs2DBLze4WAN3ZMgICBZ3h0BxCDpZPsJDzHGvFMdHEGfoIuFkZq2KyKNRFY2+DIeGd8fzgdkGI7rQDCiHEhq3zyFPECnzsJIHoZF4t1ZS5ki7Wz1zmc9IsgDtMhtieKRK3TvGf25gXwfOGDzEgLkS5B8iuJh+HdwOrPQrv703TSP5T9VjYdbkAd1PvGASB4iPudm3jCkQIQlKiAgAFliiJEfCPeLDHiMicxVnD0nVAchZAZ5PXdG8hB7KDwprSwQhqxIAJALYItZLA8qFCni69dlioLHv/SpyMMpvEBeZuexRhf0qZKidIbxhSGEO7D6izP580b+7C4VgVwnNdNOA5dc4e0G0g2k29n9z65UEYdI0gRbSJaeS98bnZW7edjw1ULp8oiokS8MYWW5+o89k782L0MFIB+SbaNdn3ICyeGbmzXtThrHVpXHkacJLxAQpf8920rPl/IMcrmAgJxg6qD+MSl5xEBIzXO6gpOH4V/e5jwueuoUpuq+5RN1ediEeVSQlRB/6k8ifFdJbaOxPMiI8AsQHZbNyruNWHBUW8pmSUCG9Y0UuQZ9roFHXuY4XPKTlLeZft1OdXEEjc3CQLaTV/UPgMegM+PX5r0otTMXj40QiYgw2L9q+G15BYVGJp21bBBP8l0ciKkEc5md4oP3J5D7Ynfw8TD0DI6xIr2YLHtRr6DaIqKwekBrxt/l5y5+ZJxcRXEHR3mqMFROH94n/9W8grtI869QZZlKgOC4RfAMl/fIEt99Bn75LGoI/LTHQtpK/RPcRBQWtgQUjxVuC5kf2yXHVVEcpBCI0+whmJhIMnqX2SIUoe8T4GFofJu9Q3olU/Twr5da9bCeaq4/ZVVFYeknxbX3dmTkIskDXXLLRv9s5GZ2lTEvHqNuIVQWtVL0rjQu9UUe2zK5QgiIAXzqroAZlUuZqTH+rZK11ZGSDlJOqaCwqLRivw8U5/PmrJg3PKKW+GqoGoIbM1bk5vNXQ2R4WUanmVJf5QSgqLGwb5DmYIYgD8O5SXQjvG7IwwyPJ92SeXSUHLG5D3d3ZMfP46wID9Db4L8QX5J1DvHcCYcqtaqqjAxD+ku2RfLcXqcDI0eLl5eYIrQXWUPfaxARkK3764/er2RwbLou+RlaS0qoKL67wxZ3J1ajCJBKiEPLxlZV5S6b00dyNURBHGK04lZKe3ns9EKZSnhYRY1iQAwggcjUPPxdciLBU8zKsMW/RG6K8ABBLKxTXFaHfV+UuSxLGu18UYP4p3Ck3Dnkhj8sk76U1RHf2HGY/qqjG7EBoU7AhTUASFacH1eByuj0lIOj2vSeCt4UVpSMYXAc3yKztzSsqTrK0Xq8GNhiNHsdJCB3FYxcm39mbP985ECohWLFnSUlr5HGWgKPuUwacbnsXaCnGPfK3dEcFw9vvZhFf5t/lrWvZX9bTXtN2/4WI45M4i3hWhxkz36xOI5tTGB+XsHESlvH/ZRRbw7pLmXiEFsg4MCQSo4H7mtrCISlyf3rJAVCtY1WiOFY1BW2H0qG0WR39DiJ9dHc0YjWgIBoieM4BF9bIFpsviQFUuT3fyZM419n0NZjE7V/c4/8J+nLBnFhR2NcNazDYjxuHOceWHaxIRArDZakBDJCLCbsuXs2jWMAvYunn5JRPrbm8vLm+PRVbbcYEFBI3xmjsNoC3FKTfECMblJjYfw4Fv7QH8aB4yeBJbkvmAixihl06viW2BCkJhBQj0hcQIy1DQHiQ1XKr6v6ReDA6SmMkvoYoTfy3hRVWIM5k4r8PFAQiQdISzVxSZOIKJ0bh/4qrav8q1hWcoEfxRxGCWIW41HxGqiiRd+lOyAkliQCYgNXtIm4iX/lshyv0TRKNzxHxPSYyWQ2m624zUQtmglq87gsxoNqNDk/PeouvYI8Ag2+pAFCr+QhHJXbj3P6hVJWMz7BXSWM2PC0kudB2vevKvOwi/L42s+5g61GGEjAnSxAqukL+u/TZLOiJwTjd6/k3BkKOR6kktg2p9lsMplIIBaTB0z6lL5jRCUeVL/Flujb1DWIADmcJEDCVwQ+WVt/uGrGK4vu/uzK8XAA2O/gcwHOYvxAv1qHt0ktgdCdiv5VsZmIgJhcSgog1eELat7n55DXCBqEVHNmfabEN3ADdhsvc9aUv99vcakhCDKzrgxIxGW2boqmMXvKc8J+IVWkUqv5xyvKo4e6bo4zVp2iQNqSAEhL1DXt6sdoquNjijfO7WF/7yLnb6B2Eg5QB4gojwrq4kdwXGiDKJD22qPGRANpirmqtN/p5y6Y23Mz9nqrObtpPvErzWrJ7zER5UF5GdxTZsSBgOTvfl8igbQE5IibNwWG4uQEBfpqG12l4bzOdqm32WTRJQxIkywg3EsEX+lXJWRvkehf8Z2NVyvjRlsSBMQbCEBYIgwRtCfl1oryyBHkIZI4iTYn1oQAccsEwpeAu049igUJjT9oHg/x3ayuGsaHDy2QdplAmiJ/PGj0tlzcX1vjbHqOHojlS1x8vsPPExDKiAzhpn9TkC+QQMBIczhqqa1pYrstP6bVxTU0PMTziVQBRPD04aA8ixk4qzIQd4NsHoH9be127u/QAcBuJO7vETEc99NNlNsD1U02t+WSl9P9sMq824tqArFWB+BKuh+ZsyVaj3qePm5hIyuZXt3edtEbFeftl3lPLeoBsQagyy66iLUcsiER23KAYRup/VvHb3AUOZra3Faj5Ax8tPjUAoKARyDg2onCkLSYpJU//F2ZAt5IzX4qKyIvEo4vu5WSYB6E7IBvSEQbRrfRKeq9N8Xjvfb9Vp88z9KqChBjNSIggSG7IRsS0f6rq3Qy9CCaGzqrChB3AJl4imHuxtWJuVeL6L690iGobsioAhBvAKGkMXNID8Y/NdniEXF2mal1O/cgux+3CkBqYDNoPXTCcO5Ys6vR1N3T05Pzj3RtK1695RRpT8yh9ePg7R97bjpOHTqQhgBIkwpAYFiQtLTWU4bsY/UAQZTod4Y+uAjbqRcy77Lv+fBbY6ZPXceyDYda4bHRIQeii+PqDhxyZHtc9SasR1BymA09Uy4r9nazhSvnewfTM0+381xDN4HGk+2IG40POZBLirTSiXMff2rqkSxLJtPPa+I6ZepKcD+n/ip93IJ/aIfopXSbXMcMJw4oBWJFDkSej3Uo+9hHjViPbAlplMkHR8gPzgXVVcVVeiKw//RGGVfU3ejKdhySDcSCHIjkYLU122XqUS4hveXfJLNNyCY4FfluZoigf+cr8q8Kazwmb7W0IAcixes9YDhWj/XEK4ze8vsr038lvXQu1Et9Y28p8ztfvqH4wro/zj4k1bZ4UQMRT/Meajb1wJGFn4XaH3dvkJjhcvLv/dh2X5EfAg56qXya3Yo2MpQE5NJZkfc/kv37HojySmgjg99fPFF84IP1FK+bu2RMuH9v6AwoV1cvnv8KII1DdCLtlAeyG3tgS8VG1oPsWiPcUXeYx7natqSfHzoOsE6aDyEr5IoD0YnE6AdMPUgkZyjraZ5+9sKHfKkSzq3O5TP27mb//M4cuFeXjapGJQrEKFKzTUPEg5Btn01mdwwXb8mcaozJJHL5uq/cvW8w+yf3bbwf+sUZhHbx6NAB8Ylpy/oehLLr7n3HI/u433lm4ADWJt6zUb7urhnbPxtzOuInti5ZiOTaHGgqVGJARHsabvagFf3GyvPR3fWTitevWr4gZeCQRTk5i2bMyMnZsfHu7UvuG7p7cPQr//EHixBdVz2/B9xgRAdEQo63uQe55Oyc5Jcvx4du34bskrAjiLrlUuJTWKAq3qOC3Pi66G05NIq+noHycrpPCGxyM6IDclRatsRjUoNJzyszrr5cJM5idtdnO/QorwNzOQQidrsXRwdEcu/3oWPdPSrJwh1Xh75WenpwLInzr+28mtNRjvj9G88JxuqX42y4hgSEEEezqUdN+fGujudzNm6/umT7jpxFNzp26cvRvyfWKBYSBuLdkwBDZYVjRIenvrvnOyom102zeG4RcbO1LyBfWh3HTN8xFli9R2r23YcWiIRdwTxr5US2x2XCbnkSja7sm6dk1HPR7w+Jr7chrdVwrrnx1tNimMnluXmiVf4No99BZYTU83PK4DnmakzuNUN1n5xoVVxJDxxVYUubDnIH6QGyEaj5o0ZTd7JQaPyo+ZzhBIweoP3qbPrcH0AkaQdaTzhuZje7Pvp9dzemJoJ6V3O24QTMRiyyKxvKXnUpFcOWhoAKQuA5dOqEw3DznOeY51jzx/WfNv7eZDJhCklh3SZTIyHEsz/mOZd97qbBceIUZATQl4fUEq6xLZBgSUsj/jlwgPz3QOuR1gOtrYcOmQ8R/xL/aW09YCb+Jb+bRvwLXqy6tMMaryGxycFbE9BEQFu14Li6QIigvUl77rzaKoirDwTHL9VWa8+eQ1lZoE6Cl7Xp03ixXQMQue8A+gx4ufvUfW5NdYVo7Pfi0EXBaA2f+6wGI1CNggaudMSfz1LT8LdMo8F2VIfjSQSETKlY3c6/TRg1Fm8QRyZxzX7XWff/bVkUe02LD0crcR9XQayUs5f/JoxG21Ejjl5SoPwWn8V2+LsM43AbMpuBBggIUryWtvbvnqmvrnFb1YIBFwitwbwXbd8Nu1Ld3ub2GnG1JQXJbzVesrQ1NdzCi6IlAShQArlFlViCFoVqQCgBwxb31ziTNzNZ3VTT5j7q9enwJJAUFd/L6LNe3G9rr06SRWNvt+23WL3GpOCQECBhy++71OJuO9vU1KA2m4aGJnI5XEyS5ZAsQNgKTWf0ei+1XHTXtp1tPwx98Vyurm5vt7W53S0tl7y/1iUrhSQCErt6dD6f9WiLez8ptbU2Ww0p7U5nEyHVhNiZZdVgJ/9YTfy10+lsBy+z2WpryZ9zW45avT6jLojfcpKCa6IB0UQDogHRRAOiAdFEA6IB0UQDogHRRAOiiQZEA6KJBuTWl/8XYADnNmjWHFGctAAAAABJRU5ErkJggg=="
-			}
-		},
-		data() {
-			return {
-				isConnected: true, // 是否有网络连接
-				networkType: "none", // 网络类型
-			}
-		},
-		computed: {
-			uZIndex() {
-				return this.zIndex ? this.zIndex : this.$u.zIndex.noNetwork;
-			}
-		},
-		mounted() {
-			this.isIOS = (uni.getSystemInfoSync().platform === 'ios');
-			uni.onNetworkStatusChange((res) => {
-				this.isConnected = res.isConnected;
-				this.networkType = res.networkType;
-			});
-			uni.getNetworkType({
-				success: (res) => {
-					this.networkType = res.networkType;
-					if (res.networkType == 'none') {
-						this.isConnected = false;
-					} else {
-						this.isConnected = true;
-					}
-				}
-			});
-		},
-		methods: {
-			retry() {
-				// 重新检查网络
-				uni.getNetworkType({
-					success: (res) => {
-						this.networkType = res.networkType;
-						if (res.networkType == 'none') {
-							uni.showToast({
-								title: '无网络连接',
-								icon: 'none',
-								position: 'top'
-							})
-							this.isConnected = false;
-						} else {
-							uni.showToast({
-								title: '网络已连接',
-								icon: 'none',
-								position: 'top'
-							})
-							this.isConnected = true;
-						}
-					}
-				});
-				this.$emit('retry');
-			},
-			async openSettings() {
-				if (this.networkType == "none") {
-					this.openSystemSettings();
-					return;
-				}
-			},
-			openAppSettings() {
-				this.gotoAppSetting();
-			},
-			openSystemSettings() {
-				// 以下方法来自5+范畴,如需深究,请自行查阅相关文档
-				// https://ask.dcloud.net.cn/docs/
-				if (this.isIOS) {
-					this.gotoiOSSetting();
-				} else {
-					this.gotoAndroidSetting();
-				}
-			},
-			network() {
-				var result = null;
-				var cellularData = plus.ios.newObject("CTCellularData");
-				var state = cellularData.plusGetAttribute("restrictedState");
-				if (state == 0) {
-					result = null;
-				} else if (state == 2) {
-					result = 1;
-				} else if (state == 1) {
-					result = 2;
-				}
-				plus.ios.deleteObject(cellularData);
-				return result;
-			},
-			gotoAppSetting() {
-				if (this.isIOS) {
-					var UIApplication = plus.ios.import("UIApplication");
-					var application2 = UIApplication.sharedApplication();
-					var NSURL2 = plus.ios.import("NSURL");
-					var setting2 = NSURL2.URLWithString("app-settings:");
-					application2.openURL(setting2);
-					plus.ios.deleteObject(setting2);
-					plus.ios.deleteObject(NSURL2);
-					plus.ios.deleteObject(application2);
-				} else {
-					var Intent = plus.android.importClass("android.content.Intent");
-					var Settings = plus.android.importClass("android.provider.Settings");
-					var Uri = plus.android.importClass("android.net.Uri");
-					var mainActivity = plus.android.runtimeMainActivity();
-					var intent = new Intent();
-					intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
-					var uri = Uri.fromParts("package", mainActivity.getPackageName(), null);
-					intent.setData(uri);
-					mainActivity.startActivity(intent);
-				}
-			},
-			gotoiOSSetting() {
-				var UIApplication = plus.ios.import("UIApplication");
-				var application2 = UIApplication.sharedApplication();
-				var NSURL2 = plus.ios.import("NSURL");
-				var setting2 = NSURL2.URLWithString("App-prefs:root=General");
-				application2.openURL(setting2);
-				plus.ios.deleteObject(setting2);
-				plus.ios.deleteObject(NSURL2);
-				plus.ios.deleteObject(application2);
-			},
-			gotoAndroidSetting() {
-				var Intent = plus.android.importClass("android.content.Intent");
-				var Settings = plus.android.importClass("android.provider.Settings");
-				var mainActivity = plus.android.runtimeMainActivity();
-				var intent = new Intent(Settings.ACTION_SETTINGS);
-				mainActivity.startActivity(intent);
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	@import "../../libs/css/style.components.scss";
-	
-	.u-no-network {
-		background-color: #fff;
-		position: fixed;
-		top: 0;
-		left: 0;
-		right: 0;
-		bottom: 0;
-	}
-
-	.u-inner {
-		height: 100vh;
-		@include vue-flex;
-		flex-direction: column;
-		align-items: center;
-		justify-content: center;
-		margin-top: -15%;
-	}
-
-	.u-tips {
-		color: $u-tips-color;
-		font-size: 28rpx;
-		padding: 30rpx 0;
-	}
-
-	.u-error-icon {
-		width: 300rpx;
-	}
-
-	.u-to-setting {
-		color: $u-light-color;
-		font-size: 26rpx;
-	}
-
-	.u-setting-btn {
-		font-size: 26rpx;
-		color: $u-type-primary;
-	}
-
-	.u-retry {
-		margin-top: 30rpx;
-		border: 1px solid $u-tips-color;
-		color: $u-tips-color;
-		font-size: 28rpx;
-		padding: 6rpx 30rpx;
-		border-radius: 3px;
-	}
-
-	.u-retry-hover {
-		color: #fff;
-		background-color: $u-tips-color;
-	}
-</style>
diff --git a/uview-ui/components/u-notice-bar/u-notice-bar.vue b/uview-ui/components/u-notice-bar/u-notice-bar.vue
deleted file mode 100644
index 41a6cc4..0000000
--- a/uview-ui/components/u-notice-bar/u-notice-bar.vue
+++ /dev/null
@@ -1,272 +0,0 @@
-<template>
-	<view class="u-notice-bar-wrap" v-if="isShow" :style="{
-		borderRadius: borderRadius + 'rpx',
-	}">
-		<block v-if="mode == 'horizontal' && isCircular">
-			<u-row-notice
-				:type="type"
-				:color="color"
-				:bgColor="bgColor"
-				:list="list"
-				:volumeIcon="volumeIcon"
-				:moreIcon="moreIcon"
-				:volumeSize="volumeSize"
-				:closeIcon="closeIcon"
-				:mode="mode"
-				:fontSize="fontSize"
-				:speed="speed"
-				:playState="playState"
-				:padding="padding"
-				@getMore="getMore"
-				@close="close"
-				@click="click"
-			></u-row-notice>
-		</block>
-		<block v-if="mode == 'vertical' || (mode == 'horizontal' && !isCircular)">
-			<u-column-notice
-				:type="type"
-				:color="color"
-				:bgColor="bgColor"
-				:list="list"
-				:volumeIcon="volumeIcon"
-				:moreIcon="moreIcon"
-				:closeIcon="closeIcon"
-				:mode="mode"
-				:volumeSize="volumeSize"
-				:disable-touch="disableTouch"
-				:fontSize="fontSize"
-				:duration="duration"
-				:playState="playState"
-				:padding="padding"
-				@getMore="getMore"
-				@close="close"
-				@click="click"
-				@end="end"
-			></u-column-notice>
-		</block>
-	</view>
-</template>
-<script>
-/**
- * noticeBar 滚动通知
- * @description 该组件用于滚动通告场景,有多种模式可供选择
- * @tutorial https://www.uviewui.com/components/noticeBar.html
- * @property {Array} list 滚动内容,数组形式,见上方说明
- * @property {String} type 显示的主题(默认warning)
- * @property {Boolean} volume-icon 是否显示小喇叭图标(默认true)
- * @property {Boolean} more-icon 是否显示右边的向右箭头(默认false)
- * @property {Boolean} close-icon 是否显示关闭图标(默认false)
- * @property {Boolean} autoplay 是否自动播放(默认true)
- * @property {String} color 文字颜色
- * @property {String Number} bg-color 背景颜色
- * @property {String} mode 滚动模式(默认horizontal)
- * @property {Boolean} show 是否显示(默认true)
- * @property {String Number} font-size 字体大小,单位rpx(默认28)
- * @property {String Number} volume-size 左边喇叭的大小(默认34)
- * @property {String Number} duration 滚动周期时长,只对步进模式有效,横向衔接模式无效,单位ms(默认2000)
- * @property {String Number} speed 水平滚动时的滚动速度,即每秒移动多少距离,只对水平衔接方式有效,单位rpx(默认160)
- * @property {String Number} font-size 字体大小,单位rpx(默认28)
- * @property {Boolean} is-circular mode为horizontal时,指明是否水平衔接滚动(默认true)
- * @property {String} play-state 播放状态,play - 播放,paused - 暂停(默认play)
- * @property {String Nubmer} border-radius 通知栏圆角(默认为0)
- * @property {String Nubmer} padding 内边距,字符串,与普通的内边距css写法一直(默认"18rpx 24rpx")
- * @property {Boolean} no-list-hidden 列表为空时,是否显示组件(默认false)
- * @property {Boolean} disable-touch 是否禁止通过手动滑动切换通知,只有mode = vertical,或者mode = horizontal且is-circular = false时有效(默认true)
- * @event {Function} click 点击通告文字触发,只有mode = vertical,或者mode = horizontal且is-circular = false时有效
- * @event {Function} close 点击右侧关闭图标触发
- * @event {Function} getMore 点击右侧向右图标触发
- * @event {Function} end 列表的消息每次被播放一个周期时触发,只有mode = vertical,或者mode = horizontal且is-circular = false时有效
- * @example <u-notice-bar :more-icon="true" :list="list"></u-notice-bar>
- */
-export default {
-	name: "u-notice-bar",
-	props: {
-		// 显示的内容,数组
-		list: {
-			type: Array,
-			default() {
-				return [];
-			}
-		},
-		// 显示的主题,success|error|primary|info|warning
-		type: {
-			type: String,
-			default: 'warning'
-		},
-		// 是否显示左侧的音量图标
-		volumeIcon: {
-			type: Boolean,
-			default: true
-		},
-		// 音量喇叭的大小
-		volumeSize: {
-			type: [Number, String],
-			default: 34
-		},
-		// 是否显示右侧的右箭头图标
-		moreIcon: {
-			type: Boolean,
-			default: false
-		},
-		// 是否显示右侧的关闭图标
-		closeIcon: {
-			type: Boolean,
-			default: false
-		},
-		// 是否自动播放
-		autoplay: {
-			type: Boolean,
-			default: true
-		},
-		// 文字颜色,各图标也会使用文字颜色
-		color: {
-			type: String,
-			default: ''
-		},
-		// 背景颜色
-		bgColor: {
-			type: String,
-			default: ''
-		},
-		// 滚动方向,horizontal-水平滚动,vertical-垂直滚动
-		mode: {
-			type: String,
-			default: 'horizontal'
-		},
-		// 是否显示
-		show: {
-			type: Boolean,
-			default: true
-		},
-		// 字体大小,单位rpx
-		fontSize: {
-			type: [Number, String],
-			default: 28
-		},
-		// 滚动一个周期的时间长,单位ms
-		duration: {
-			type: [Number, String],
-			default: 2000
-		},
-		// 水平滚动时的滚动速度,即每秒滚动多少rpx,这有利于控制文字无论多少时,都能有一个恒定的速度
-		speed: {
-			type: [Number, String],
-			default: 160
-		},
-		// 水平滚动时,是否采用衔接形式滚动
-		// 水平衔接模式,采用的是swiper组件,水平滚动
-		isCircular: {
-			type: Boolean,
-			default: true
-		},
-		// 播放状态,play-播放,paused-暂停
-		playState: {
-			type: String,
-			default: 'play'
-		},
-		// 是否禁止用手滑动切换
-		// 目前HX2.6.11,只支持App 2.5.5+、H5 2.5.5+、支付宝小程序、字节跳动小程序
-		disableTouch: {
-			type: Boolean,
-			default: true
-		},
-		// 滚动通知设置圆角
-		borderRadius: {
-			type: [Number, String],
-			default: 0
-		},
-		// 通知的边距
-		padding: {
-			type: [Number, String],
-			default: '18rpx 24rpx'
-		},
-		// list列表为空时,是否显示组件
-		noListHidden: {
-			type: Boolean,
-			default: true
-		}
-	},
-	computed: {
-		// 如果设置show为false,或者设置了noListHidden为true,且list长度又为零的话,隐藏组件
-		isShow() {
-			if(this.show == false || (this.noListHidden == true && this.list.length == 0)) return false;
-			else return true;
-		}
-	},
-	methods: {
-		// 点击通告栏
-		click(index) {
-			this.$emit('click', index);
-		},
-		// 点击关闭按钮
-		close() {
-			this.$emit('close');
-		},
-		// 点击更多箭头按钮
-		getMore() {
-			this.$emit('getMore');
-		},
-		// 滚动一个周期结束,只对垂直,或者水平步进形式有效
-		end() {
-			this.$emit('end');
-		}
-	}
-};
-</script>
-
-<style lang="scss" scoped>
-@import "../../libs/css/style.components.scss";
-
-.u-notice-bar-wrap {
-	overflow: hidden;
-}
-
-.u-notice-bar {
-	padding: 18rpx 24rpx;
-	overflow: hidden;
-}
-
-.u-direction-row {
-	@include vue-flex;
-	align-items: center;
-	justify-content: space-between;
-}
-
-.u-left-icon {
-	@include vue-flex;
-	align-items: center;
-}
-
-.u-notice-box {
-	flex: 1;
-	@include vue-flex;
-	overflow: hidden;
-	margin-left: 12rpx;
-}
-
-.u-right-icon {
-	margin-left: 12rpx;
-	@include vue-flex;
-	align-items: center;
-}
-
-.u-notice-content {
-	line-height: 1;
-	white-space: nowrap;
-	font-size: 26rpx;
-	animation: u-loop-animation 10s linear infinite both;
-	text-align: right;
-	// 这一句很重要,为了能让滚动左右连接起来
-	padding-left: 100%;
-}
-
-@keyframes u-loop-animation {
-	0% {
-		transform: translate3d(0, 0, 0);
-	}
-
-	100% {
-		transform: translate3d(-100%, 0, 0);
-	}
-}
-</style>
diff --git a/uview-ui/components/u-number-box/u-number-box.vue b/uview-ui/components/u-number-box/u-number-box.vue
deleted file mode 100644
index 54a679e..0000000
--- a/uview-ui/components/u-number-box/u-number-box.vue
+++ /dev/null
@@ -1,363 +0,0 @@
-<template>
-	<view class="u-numberbox">
-		<view class="u-icon-minus" @touchstart.stop.prevent="btnTouchStart('minus')" @touchend.stop.prevent="clearTimer" :class="{ 'u-icon-disabled': disabled || inputVal <= min }"
-		    :style="{
-				background: bgColor,
-				height: inputHeight + 'rpx',
-				color: color
-			}">
-			<u-icon name="minus" :size="size"></u-icon>
-		</view>
-		<input :disabled="disabledInput || disabled" :cursor-spacing="getCursorSpacing" :class="{ 'u-input-disabled': disabled }"
-		    v-model="inputVal" class="u-number-input" @blur="onBlur" @focus="onFocus"
-		    type="number" :style="{
-				color: color,
-				fontSize: size + 'rpx',
-				background: bgColor,
-				height: inputHeight + 'rpx',
-				width: inputWidth + 'rpx'
-			}" />
-		<view class="u-icon-plus" @touchstart.stop.prevent="btnTouchStart('plus')" @touchend.stop.prevent="clearTimer" :class="{ 'u-icon-disabled': disabled || inputVal >= max }"
-		    :style="{
-				background: bgColor,
-				height: inputHeight + 'rpx',
-				color: color
-			}">
-			<u-icon name="plus" :size="size"></u-icon>
-		</view>
-	</view>
-</template>
-
-<script>
-	/**
-	 * numberBox 步进器
-	 * @description 该组件一般用于商城购物选择物品数量的场景。注意:该输入框只能输入大于或等于0的整数,不支持小数输入
-	 * @tutorial https://www.uviewui.com/components/numberBox.html
-	 * @property {Number} value 输入框初始值(默认1)
-	 * @property {String} bg-color 输入框和按钮的背景颜色(默认#F2F3F5)
-	 * @property {Number} min 用户可输入的最小值(默认0)
-	 * @property {Number} max 用户可输入的最大值(默认99999)
-	 * @property {Number} step 步长,每次加或减的值(默认1)
-	 * @property {Boolean} disabled 是否禁用操作,禁用后无法加减或手动修改输入框的值(默认false)
-	 * @property {Boolean} disabled-input 是否禁止输入框手动输入值(默认false)
-	 * @property {Boolean} positive-integer 是否只能输入正整数(默认true)
-	 * @property {String | Number} size 输入框文字和按钮字体大小,单位rpx(默认26)
-	 * @property {String} color 输入框文字和加减按钮图标的颜色(默认#323233)
-	 * @property {String | Number} input-width 输入框宽度,单位rpx(默认80)
-	 * @property {String | Number} input-height 输入框和按钮的高度,单位rpx(默认50)
-	 * @property {String | Number} index 事件回调时用以区分当前发生变化的是哪个输入框
-	 * @property {Boolean} long-press 是否开启长按连续递增或递减(默认true)
-	 * @property {String | Number} press-time 开启长按触发后,每触发一次需要多久,单位ms(默认250)
-	 * @property {String | Number} cursor-spacing 指定光标于键盘的距离,避免键盘遮挡输入框,单位rpx(默认200)
-	 * @event {Function} change 输入框内容发生变化时触发,对象形式
-	 * @event {Function} blur 输入框失去焦点时触发,对象形式
-	 * @event {Function} minus 点击减少按钮时触发(按钮可点击情况下),对象形式
-	 * @event {Function} plus 点击增加按钮时触发(按钮可点击情况下),对象形式
-	 * @example <u-number-box :min="1" :max="100"></u-number-box>
-	 */
-	export default {
-		name: "u-number-box",
-		props: {
-			// 预显示的数字
-			value: {
-				type: Number,
-				default: 1
-			},
-			// 背景颜色
-			bgColor: {
-				type: String,
-				default: '#F2F3F5'
-			},
-			// 最小值
-			min: {
-				type: Number,
-				default: 0
-			},
-			// 最大值
-			max: {
-				type: Number,
-				default: 99999
-			},
-			// 步进值,每次加或减的值
-			step: {
-				type: Number,
-				default: 1
-			},
-			// 是否禁用加减操作
-			disabled: {
-				type: Boolean,
-				default: false
-			},
-			// input的字体大小,单位rpx
-			size: {
-				type: [Number, String],
-				default: 26
-			},
-			// 加减图标的颜色
-			color: {
-				type: String,
-				default: '#323233'
-			},
-			// input宽度,单位rpx
-			inputWidth: {
-				type: [Number, String],
-				default: 80
-			},
-			// input高度,单位rpx
-			inputHeight: {
-				type: [Number, String],
-				default: 50
-			},
-			// index索引,用于列表中使用,让用户知道是哪个numberbox发生了变化,一般使用for循环出来的index值即可
-			index: {
-				type: [Number, String],
-				default: ''
-			},
-			// 是否禁用输入框,与disabled作用于输入框时,为OR的关系,即想要禁用输入框,又可以加减的话
-			// 设置disabled为false,disabledInput为true即可
-			disabledInput: {
-				type: Boolean,
-				default: false
-			},
-			// 输入框于键盘之间的距离
-			cursorSpacing: {
-				type: [Number, String],
-				default: 100
-			},
-			// 是否开启长按连续递增或递减
-			longPress: {
-				type: Boolean,
-				default: true
-			},
-			// 开启长按触发后,每触发一次需要多久
-			pressTime: {
-				type: [Number, String],
-				default: 250
-			},
-			// 是否只能输入大于或等于0的整数(正整数)
-			positiveInteger: {
-				type: Boolean,
-				default: true
-			}
-		},
-		watch: {
-			value(v1, v2) {
-				// 只有value的改变是来自外部的时候,才去同步inputVal的值,否则会造成循环错误
-				if(!this.changeFromInner) {
-					this.inputVal = v1;
-					// 因为inputVal变化后,会触发this.handleChange(),在其中changeFromInner会再次被设置为true,
-					// 造成外面修改值,也导致被认为是内部修改的混乱,这里进行this.$nextTick延时,保证在运行周期的最后处
-					// 将changeFromInner设置为false
-					this.$nextTick(function(){
-						this.changeFromInner = false;
-					})
-				}
-			},
-			inputVal(v1, v2) {
-				// 为了让用户能够删除所有输入值,重新输入内容,删除所有值后,内容为空字符串
-				if (v1 == '') return;
-				let value = 0;
-				// 首先判断是否数值,并且在min和max之间,如果不是,使用原来值
-				let tmp = this.$u.test.number(v1);
-				if (tmp && v1 >= this.min && v1 <= this.max) value = v1;
-				else value = v2;
-				// 判断是否只能输入大于等于0的整数
-				if(this.positiveInteger) {
-					// 小于0,或者带有小数点,
-					if(v1 < 0 || String(v1).indexOf('.') !== -1) {
-						value = v2;
-						// 双向绑定input的值,必须要使用$nextTick修改显示的值
-						this.$nextTick(() => {
-							this.inputVal = v2;
-						})
-					}
-				}
-				// 发出change事件
-				this.handleChange(value, 'change');
-			}
-		},
-		data() {
-			return {
-				inputVal: 1, // 输入框中的值,不能直接使用props中的value,因为应该改变props的状态
-				timer: null, // 用作长按的定时器
-				changeFromInner: false, // 值发生变化,是来自内部还是外部
-				innerChangeTimer: null, // 内部定时器
-			};
-		},
-		created() {
-			this.inputVal = Number(this.value);
-		},
-		computed: {
-			getCursorSpacing() {
-				// 先将值转为px单位,再转为数值
-				return Number(uni.upx2px(this.cursorSpacing));
-			}
-		},
-		methods: {
-			// 点击退格键
-			btnTouchStart(callback) {
-				// 先执行一遍方法,否则会造成松开手时,就执行了clearTimer,导致无法实现功能
-				this[callback]();
-				// 如果没开启长按功能,直接返回
-				if (!this.longPress) return;
-				clearInterval(this.timer); //再次清空定时器,防止重复注册定时器
-				this.timer = null;
-				this.timer = setInterval(() => {
-					// 执行加或减函数
-					this[callback]();
-				}, this.pressTime);
-			},
-			clearTimer() {
-				this.$nextTick(() => {
-					clearInterval(this.timer);
-					this.timer = null;
-				})
-			},
-			minus() {
-				this.computeVal('minus');
-			},
-			plus() {
-				this.computeVal('plus');
-			},
-			// 为了保证小数相加减出现精度溢出的问题
-			calcPlus(num1, num2) {
-				let baseNum, baseNum1, baseNum2;
-				try {
-					baseNum1 = num1.toString().split('.')[1].length;
-				} catch (e) {
-					baseNum1 = 0;
-				}
-				try {
-					baseNum2 = num2.toString().split('.')[1].length;
-				} catch (e) {
-					baseNum2 = 0;
-				}
-				baseNum = Math.pow(10, Math.max(baseNum1, baseNum2));
-				let precision = baseNum1 >= baseNum2 ? baseNum1 : baseNum2; //精度
-				return ((num1 * baseNum + num2 * baseNum) / baseNum).toFixed(precision);
-			},
-			// 为了保证小数相加减出现精度溢出的问题
-			calcMinus(num1, num2) {
-				let baseNum, baseNum1, baseNum2;
-				try {
-					baseNum1 = num1.toString().split('.')[1].length;
-				} catch (e) {
-					baseNum1 = 0;
-				}
-				try {
-					baseNum2 = num2.toString().split('.')[1].length;
-				} catch (e) {
-					baseNum2 = 0;
-				}
-				baseNum = Math.pow(10, Math.max(baseNum1, baseNum2));
-				let precision = baseNum1 >= baseNum2 ? baseNum1 : baseNum2;
-				return ((num1 * baseNum - num2 * baseNum) / baseNum).toFixed(precision);
-			},
-			computeVal(type) {
-				uni.hideKeyboard();
-				if (this.disabled) return;
-				let value = 0;
-				// 减
-				if (type === 'minus') {
-					value = this.calcMinus(this.inputVal, this.step);
-				} else if (type === 'plus') {
-					value = this.calcPlus(this.inputVal, this.step);
-				}
-				// 判断是否小于最小值和大于最大值
-				if (value < this.min || value > this.max) {
-					return;
-				}
-				this.inputVal = value;
-				this.handleChange(value, type);
-			},
-			// 处理用户手动输入的情况
-			onBlur(event) {
-				let val = 0;
-				let value = event.detail.value;
-				// 如果为非0-9数字组成,或者其第一位数值为0,直接让其等于min值
-				// 这里不直接判断是否正整数,是因为用户传递的props min值可能为0
-				if (!/(^\d+$)/.test(value) || value[0] == 0) val = this.min;
-				val = +value;
-				if (val > this.max) {
-					val = this.max;
-				} else if (val < this.min) {
-					val = this.min;
-				}
-				this.$nextTick(() => {
-					this.inputVal = val;
-				})
-				this.handleChange(val, 'blur');
-			},
-			// 输入框获得焦点事件
-			onFocus() {
-				this.$emit('focus');
-			},
-			handleChange(value, type) {
-				if (this.disabled) return;
-				// 清除定时器,避免造成混乱
-				if(this.innerChangeTimer) {
-					clearTimeout(this.innerChangeTimer);
-					this.innerChangeTimer = null;
-				}
-				// 发出input事件,修改通过v-model绑定的值,达到双向绑定的效果
-				this.changeFromInner = true;
-				// 一定时间内,清除changeFromInner标记,否则内部值改变后
-				// 外部通过程序修改value值,将会无效
-				this.innerChangeTimer = setTimeout(() => {
-					this.changeFromInner = false;
-				}, 150);
-				this.$emit('input', Number(value));
-				this.$emit(type, {
-					// 转为Number类型
-					value: Number(value),
-					index: this.index
-				})
-			}
-		}
-	};
-</script>
-
-<style lang="scss" scoped>
-	@import "../../libs/css/style.components.scss";
-
-	.u-numberbox {
-		display: inline-flex;
-		align-items: center;
-	}
-
-	.u-number-input {
-		position: relative;
-		text-align: center;
-		padding: 0;
-		margin: 0 6rpx;
-		@include vue-flex;
-		align-items: center;
-		justify-content: center;
-	}
-
-	.u-icon-plus,
-	.u-icon-minus {
-		width: 60rpx;
-		@include vue-flex;
-		justify-content: center;
-		align-items: center;
-	}
-
-	.u-icon-plus {
-		border-radius: 0 8rpx 8rpx 0;
-	}
-
-	.u-icon-minus {
-		border-radius: 8rpx 0 0 8rpx;
-	}
-
-	.u-icon-disabled {
-		color: #c8c9cc !important;
-		background: #f7f8fa !important;
-	}
-
-	.u-input-disabled {
-		color: #c8c9cc !important;
-		background-color: #f2f3f5 !important;
-	}
-</style>
diff --git a/uview-ui/components/u-number-keyboard/u-number-keyboard.vue b/uview-ui/components/u-number-keyboard/u-number-keyboard.vue
deleted file mode 100644
index 6425a1f..0000000
--- a/uview-ui/components/u-number-keyboard/u-number-keyboard.vue
+++ /dev/null
@@ -1,158 +0,0 @@
-<template>
-	<view class="u-keyboard" @touchmove.stop.prevent="() => {}">
-		<view class="u-keyboard-grids">
-			<view
-			    class="u-keyboard-grids-item"
-			    :class="[btnBgGray(index) ? 'u-bg-gray' : '', index <= 2 ? 'u-border-top' : '', index < 9 ? 'u-border-bottom' : '', (index + 1) % 3 != 0 ? 'u-border-right' : '']"
-			    :style="[itemStyle(index)]"
-			    v-for="(item, index) in numList"
-			    :key="index"
-			    :hover-class="hoverClass(index)"
-			    :hover-stay-time="100"
-			    @tap="keyboardClick(item)">
-				<view class="u-keyboard-grids-btn">{{ item }}</view>
-			</view>
-			<view class="u-keyboard-grids-item u-bg-gray" hover-class="u-hover-class" :hover-stay-time="100" @touchstart.stop="backspaceClick"
-			    @touchend="clearTimer">
-				<view class="u-keyboard-back u-keyboard-grids-btn">
-					<u-icon name="backspace" :size="38" :bold="true"></u-icon>
-				</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	export default {
-		props: {
-			// 键盘的类型,number-数字键盘,card-身份证键盘
-			mode: {
-				type: String,
-				default: 'number'
-			},
-			// 是否显示键盘的"."符号
-			dotEnabled: {
-				type: Boolean,
-				default: true
-			},
-			// 是否打乱键盘按键的顺序
-			random: {
-				type: Boolean,
-				default: false
-			}
-		},
-		data() {
-			return {
-				backspace: 'backspace', // 退格键内容
-				dot: '.', // 点
-				timer: null, // 长按多次删除的事件监听
-				cardX: 'X' // 身份证的X符号
-			};
-		},
-		computed: {
-			// 键盘需要显示的内容
-			numList() {
-				let tmp = [];
-				if (!this.dotEnabled && this.mode == 'number') {
-					if (!this.random) {
-						return [1, 2, 3, 4, 5, 6, 7, 8, 9, 0];
-					} else {
-						return this.$u.randomArray([1, 2, 3, 4, 5, 6, 7, 8, 9, 0]);
-					}
-				} else if (this.dotEnabled && this.mode == 'number') {
-					if (!this.random) {
-						return [1, 2, 3, 4, 5, 6, 7, 8, 9, this.dot, 0];
-					} else {
-						return this.$u.randomArray([1, 2, 3, 4, 5, 6, 7, 8, 9, this.dot, 0]);
-					}
-				} else if (this.mode == 'card') {
-					if (!this.random) {
-						return [1, 2, 3, 4, 5, 6, 7, 8, 9, this.cardX, 0];
-					} else {
-						return this.$u.randomArray([1, 2, 3, 4, 5, 6, 7, 8, 9, this.cardX, 0]);
-					}
-				}
-			},
-			// 按键的样式,在非乱序&&数字键盘&&不显示点按钮时,index为9时,按键占位两个空间
-			itemStyle() {
-				return index => {
-					let style = {};
-					if (this.mode == 'number' && !this.dotEnabled && index == 9) style.flex = '0 0 66.6666666666%';
-					return style;
-				};
-			},
-			// 是否让按键显示灰色,只在非乱序&&数字键盘&&且允许点按键的时候
-			btnBgGray() {
-				return index => {
-					if (!this.random && index == 9 && (this.mode != 'number' || (this.mode == 'number' && this.dotEnabled))) return true;
-					else return false;
-				};
-			},
-			hoverClass() {
-				return index => {
-					if (!this.random && index == 9 && (this.mode == 'number' && this.dotEnabled || this.mode == 'card')) return 'u-hover-class';
-					else return 'u-keyboard-hover';
-				}
-			}
-		},
-		methods: {
-			// 点击退格键
-			backspaceClick() {
-				this.$emit('backspace');
-				clearInterval(this.timer); //再次清空定时器,防止重复注册定时器
-				this.timer = null;
-				this.timer = setInterval(() => {
-					this.$emit('backspace');
-				}, 250);
-			},
-			clearTimer() {
-				clearInterval(this.timer);
-				this.timer = null;
-			},
-			// 获取键盘显示的内容
-			keyboardClick(val) {
-				// 允许键盘显示点模式和触发非点按键时,将内容转为数字类型
-				if (this.dotEnabled && val != this.dot && val != this.cardX) val = Number(val);
-				this.$emit('change', val);
-			}
-		}
-	};
-</script>
-
-<style lang="scss" scoped>
-	@import "../../libs/css/style.components.scss";
-
-	.u-keyboard {
-		position: relative;
-		z-index: 1003;
-	}
-
-	.u-keyboard-grids {
-		@include vue-flex;
-		flex-wrap: wrap;
-	}
-
-	.u-keyboard-grids-item {
-		flex: 0 0 33.3333333333%;
-		text-align: center;
-		font-size: 50rpx;
-		color: #333;
-		@include vue-flex;
-		align-items: center;
-		justify-content: center;
-		height: 110rpx;
-		font-weight: 500;
-	}
-
-	.u-bg-gray {
-		background-color: $u-border-color;
-	}
-
-	.u-keyboard-back {
-		font-size: 36rpx;
-	}
-
-	.u-keyboard-hover {
-		background-color: #e7e6eb;
-	}
-</style>
diff --git a/uview-ui/components/u-parse/libs/CssHandler.js b/uview-ui/components/u-parse/libs/CssHandler.js
deleted file mode 100644
index 75c6015..0000000
--- a/uview-ui/components/u-parse/libs/CssHandler.js
+++ /dev/null
@@ -1,100 +0,0 @@
-const cfg = require('./config.js'),
-	isLetter = c => (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z');
-
-function CssHandler(tagStyle) {
-	var styles = Object.assign(Object.create(null), cfg.userAgentStyles);
-	for (var item in tagStyle)
-		styles[item] = (styles[item] ? styles[item] + ';' : '') + tagStyle[item];
-	this.styles = styles;
-}
-CssHandler.prototype.getStyle = function(data) {
-	this.styles = new parser(data, this.styles).parse();
-}
-CssHandler.prototype.match = function(name, attrs) {
-	var tmp, matched = (tmp = this.styles[name]) ? tmp + ';' : '';
-	if (attrs.class) {
-		var items = attrs.class.split(' ');
-		for (var i = 0, item; item = items[i]; i++)
-			if (tmp = this.styles['.' + item])
-				matched += tmp + ';';
-	}
-	if (tmp = this.styles['#' + attrs.id])
-		matched += tmp + ';';
-	return matched;
-}
-module.exports = CssHandler;
-
-function parser(data, init) {
-	this.data = data;
-	this.floor = 0;
-	this.i = 0;
-	this.list = [];
-	this.res = init;
-	this.state = this.Space;
-}
-parser.prototype.parse = function() {
-	for (var c; c = this.data[this.i]; this.i++)
-		this.state(c);
-	return this.res;
-}
-parser.prototype.section = function() {
-	return this.data.substring(this.start, this.i);
-}
-// 状态机
-parser.prototype.Space = function(c) {
-	if (c == '.' || c == '#' || isLetter(c)) {
-		this.start = this.i;
-		this.state = this.Name;
-	} else if (c == '/' && this.data[this.i + 1] == '*')
-		this.Comment();
-	else if (!cfg.blankChar[c] && c != ';')
-		this.state = this.Ignore;
-}
-parser.prototype.Comment = function() {
-	this.i = this.data.indexOf('*/', this.i) + 1;
-	if (!this.i) this.i = this.data.length;
-	this.state = this.Space;
-}
-parser.prototype.Ignore = function(c) {
-	if (c == '{') this.floor++;
-	else if (c == '}' && !--this.floor) {
-		this.list = [];
-		this.state = this.Space;
-	}
-}
-parser.prototype.Name = function(c) {
-	if (cfg.blankChar[c]) {
-		this.list.push(this.section());
-		this.state = this.NameSpace;
-	} else if (c == '{') {
-		this.list.push(this.section());
-		this.Content();
-	} else if (c == ',') {
-		this.list.push(this.section());
-		this.Comma();
-	} else if (!isLetter(c) && (c < '0' || c > '9') && c != '-' && c != '_')
-		this.state = this.Ignore;
-}
-parser.prototype.NameSpace = function(c) {
-	if (c == '{') this.Content();
-	else if (c == ',') this.Comma();
-	else if (!cfg.blankChar[c]) this.state = this.Ignore;
-}
-parser.prototype.Comma = function() {
-	while (cfg.blankChar[this.data[++this.i]]);
-	if (this.data[this.i] == '{') this.Content();
-	else {
-		this.start = this.i--;
-		this.state = this.Name;
-	}
-}
-parser.prototype.Content = function() {
-	this.start = ++this.i;
-	if ((this.i = this.data.indexOf('}', this.i)) == -1) this.i = this.data.length;
-	var content = this.section();
-	for (var i = 0, item; item = this.list[i++];)
-		if (this.res[item]) this.res[item] += ';' + content;
-		else this.res[item] = content;
-	this.list = [];
-	this.state = this.Space;
-}
diff --git a/uview-ui/components/u-parse/libs/MpHtmlParser.js b/uview-ui/components/u-parse/libs/MpHtmlParser.js
deleted file mode 100644
index aeb0fc3..0000000
--- a/uview-ui/components/u-parse/libs/MpHtmlParser.js
+++ /dev/null
@@ -1,580 +0,0 @@
-/**
- * html 解析器
- * @tutorial https://github.com/jin-yufeng/Parser
- * @version 20201029
- * @author JinYufeng
- * @listens MIT
- */
-const cfg = require('./config.js'),
-	blankChar = cfg.blankChar,
-	CssHandler = require('./CssHandler.js'),
-	windowWidth = uni.getSystemInfoSync().windowWidth;
-var emoji;
-
-function MpHtmlParser(data, options = {}) {
-	this.attrs = {};
-	this.CssHandler = new CssHandler(options.tagStyle, windowWidth);
-	this.data = data;
-	this.domain = options.domain;
-	this.DOM = [];
-	this.i = this.start = this.audioNum = this.imgNum = this.videoNum = 0;
-	options.prot = (this.domain || '').includes('://') ? this.domain.split('://')[0] : 'http';
-	this.options = options;
-	this.state = this.Text;
-	this.STACK = [];
-	// 工具函数
-	this.bubble = () => {
-		for (var i = this.STACK.length, item; item = this.STACK[--i];) {
-			if (cfg.richOnlyTags[item.name]) return false;
-			item.c = 1;
-		}
-		return true;
-	}
-	this.decode = (val, amp) => {
-		var i = -1,
-			j, en;
-		while (1) {
-			if ((i = val.indexOf('&', i + 1)) == -1) break;
-			if ((j = val.indexOf(';', i + 2)) == -1) break;
-			if (val[i + 1] == '#') {
-				en = parseInt((val[i + 2] == 'x' ? '0' : '') + val.substring(i + 2, j));
-				if (!isNaN(en)) val = val.substr(0, i) + String.fromCharCode(en) + val.substr(j + 1);
-			} else {
-				en = val.substring(i + 1, j);
-				if (cfg.entities[en] || en == amp)
-					val = val.substr(0, i) + (cfg.entities[en] || '&') + val.substr(j + 1);
-			}
-		}
-		return val;
-	}
-	this.getUrl = url => {
-		if (url[0] == '/') {
-			if (url[1] == '/') url = this.options.prot + ':' + url;
-			else if (this.domain) url = this.domain + url;
-		} else if (this.domain && url.indexOf('data:') != 0 && !url.includes('://'))
-			url = this.domain + '/' + url;
-		return url;
-	}
-	this.isClose = () => this.data[this.i] == '>' || (this.data[this.i] == '/' && this.data[this.i + 1] == '>');
-	this.section = () => this.data.substring(this.start, this.i);
-	this.parent = () => this.STACK[this.STACK.length - 1];
-	this.siblings = () => this.STACK.length ? this.parent().children : this.DOM;
-}
-MpHtmlParser.prototype.parse = function() {
-	if (emoji) this.data = emoji.parseEmoji(this.data);
-	for (var c; c = this.data[this.i]; this.i++)
-		this.state(c);
-	if (this.state == this.Text) this.setText();
-	while (this.STACK.length) this.popNode(this.STACK.pop());
-	return this.DOM;
-}
-// 设置属性
-MpHtmlParser.prototype.setAttr = function() {
-	var name = this.attrName.toLowerCase(),
-		val = this.attrVal;
-	if (cfg.boolAttrs[name]) this.attrs[name] = 'T';
-	else if (val) {
-		if (name == 'src' || (name == 'data-src' && !this.attrs.src)) this.attrs.src = this.getUrl(this.decode(val, 'amp'));
-		else if (name == 'href' || name == 'style') this.attrs[name] = this.decode(val, 'amp');
-		else if (name.substr(0, 5) != 'data-') this.attrs[name] = val;
-	}
-	this.attrVal = '';
-	while (blankChar[this.data[this.i]]) this.i++;
-	if (this.isClose()) this.setNode();
-	else {
-		this.start = this.i;
-		this.state = this.AttrName;
-	}
-}
-// 设置文本节点
-MpHtmlParser.prototype.setText = function() {
-	var back, text = this.section();
-	if (!text) return;
-	text = (cfg.onText && cfg.onText(text, () => back = true)) || text;
-	if (back) {
-		this.data = this.data.substr(0, this.start) + text + this.data.substr(this.i);
-		let j = this.start + text.length;
-		for (this.i = this.start; this.i < j; this.i++) this.state(this.data[this.i]);
-		return;
-	}
-	if (!this.pre) {
-		// 合并空白符
-		var flag, tmp = [];
-		for (let i = text.length, c; c = text[--i];)
-			if (!blankChar[c]) {
-				tmp.unshift(c);
-				if (!flag) flag = 1;
-			} else {
-				if (tmp[0] != ' ') tmp.unshift(' ');
-				if (c == '\n' && flag == void 0) flag = 0;
-			}
-		if (flag == 0) return;
-		text = tmp.join('');
-	}
-	this.siblings().push({
-		type: 'text',
-		text: this.decode(text)
-	});
-}
-// 设置元素节点
-MpHtmlParser.prototype.setNode = function() {
-	var node = {
-			name: this.tagName.toLowerCase(),
-			attrs: this.attrs
-		},
-		close = cfg.selfClosingTags[node.name];
-	if (this.options.nodes.length) node.type = 'node';
-	this.attrs = {};
-	if (!cfg.ignoreTags[node.name]) {
-		// 处理属性
-		var attrs = node.attrs,
-			style = this.CssHandler.match(node.name, attrs, node) + (attrs.style || ''),
-			styleObj = {};
-		if (attrs.id) {
-			if (this.options.compress & 1) attrs.id = void 0;
-			else if (this.options.useAnchor) this.bubble();
-		}
-		if ((this.options.compress & 2) && attrs.class) attrs.class = void 0;
-		switch (node.name) {
-			case 'a':
-			case 'ad': // #ifdef APP-PLUS
-			case 'iframe':
-				// #endif
-				this.bubble();
-				break;
-			case 'font':
-				if (attrs.color) {
-					styleObj['color'] = attrs.color;
-					attrs.color = void 0;
-				}
-				if (attrs.face) {
-					styleObj['font-family'] = attrs.face;
-					attrs.face = void 0;
-				}
-				if (attrs.size) {
-					var size = parseInt(attrs.size);
-					if (size < 1) size = 1;
-					else if (size > 7) size = 7;
-					var map = ['xx-small', 'x-small', 'small', 'medium', 'large', 'x-large', 'xx-large'];
-					styleObj['font-size'] = map[size - 1];
-					attrs.size = void 0;
-				}
-				break;
-			case 'embed':
-				// #ifndef APP-PLUS
-				var src = node.attrs.src || '',
-					type = node.attrs.type || '';
-				if (type.includes('video') || src.includes('.mp4') || src.includes('.3gp') || src.includes('.m3u8'))
-					node.name = 'video';
-				else if (type.includes('audio') || src.includes('.m4a') || src.includes('.wav') || src.includes('.mp3') || src.includes(
-						'.aac'))
-					node.name = 'audio';
-				else break;
-				if (node.attrs.autostart)
-					node.attrs.autoplay = 'T';
-				node.attrs.controls = 'T';
-				// #endif
-				// #ifdef APP-PLUS
-				this.bubble();
-				break;
-				// #endif
-			case 'video':
-			case 'audio':
-				if (!attrs.id) attrs.id = node.name + (++this[`${node.name}Num`]);
-				else this[`${node.name}Num`]++;
-				if (node.name == 'video') {
-					if (this.videoNum > 3)
-						node.lazyLoad = 1;
-					if (attrs.width) {
-						styleObj.width = parseFloat(attrs.width) + (attrs.width.includes('%') ? '%' : 'px');
-						attrs.width = void 0;
-					}
-					if (attrs.height) {
-						styleObj.height = parseFloat(attrs.height) + (attrs.height.includes('%') ? '%' : 'px');
-						attrs.height = void 0;
-					}
-				}
-				if (!attrs.controls && !attrs.autoplay) attrs.controls = 'T';
-				attrs.source = [];
-				if (attrs.src) {
-					attrs.source.push(attrs.src);
-					attrs.src = void 0;
-				}
-				this.bubble();
-				break;
-			case 'td':
-			case 'th':
-				if (attrs.colspan || attrs.rowspan)
-					for (var k = this.STACK.length, item; item = this.STACK[--k];)
-						if (item.name == 'table') {
-							item.flag = 1;
-							break;
-						}
-		}
-		if (attrs.align) {
-			if (node.name == 'table') {
-				if (attrs.align == 'center') styleObj['margin-inline-start'] = styleObj['margin-inline-end'] = 'auto';
-				else styleObj['float'] = attrs.align;
-			} else styleObj['text-align'] = attrs.align;
-			attrs.align = void 0;
-		}
-		// 压缩 style
-		var styles = style.split(';');
-		style = '';
-		for (var i = 0, len = styles.length; i < len; i++) {
-			var info = styles[i].split(':');
-			if (info.length < 2) continue;
-			let key = info[0].trim().toLowerCase(),
-				value = info.slice(1).join(':').trim();
-			if (value[0] == '-' || value.includes('safe'))
-				style += `;${key}:${value}`;
-			else if (!styleObj[key] || value.includes('import') || !styleObj[key].includes('import'))
-				styleObj[key] = value;
-		}
-		if (node.name == 'img') {
-			if (attrs.src && !attrs.ignore) {
-				if (this.bubble())
-					attrs.i = (this.imgNum++).toString();
-				else attrs.ignore = 'T';
-			}
-			if (attrs.ignore) {
-				style += ';-webkit-touch-callout:none';
-				styleObj['max-width'] = '100%';
-			}
-			var width;
-			if (styleObj.width) width = styleObj.width;
-			else if (attrs.width) width = attrs.width.includes('%') ? attrs.width : parseFloat(attrs.width) + 'px';
-			if (width) {
-				styleObj.width = width;
-				attrs.width = '100%';
-				if (parseInt(width) > windowWidth) {
-					styleObj.height = '';
-					if (attrs.height) attrs.height = void 0;
-				}
-			}
-			if (styleObj.height) {
-				attrs.height = styleObj.height;
-				styleObj.height = '';
-			} else if (attrs.height && !attrs.height.includes('%'))
-				attrs.height = parseFloat(attrs.height) + 'px';
-		}
-		for (var key in styleObj) {
-			var value = styleObj[key];
-			if (!value) continue;
-			if (key.includes('flex') || key == 'order' || key == 'self-align') node.c = 1;
-			// 填充链接
-			if (value.includes('url')) {
-				var j = value.indexOf('(');
-				if (j++ != -1) {
-					while (value[j] == '"' || value[j] == "'" || blankChar[value[j]]) j++;
-					value = value.substr(0, j) + this.getUrl(value.substr(j));
-				}
-			}
-			// 转换 rpx
-			else if (value.includes('rpx'))
-				value = value.replace(/[0-9.]+\s*rpx/g, $ => parseFloat($) * windowWidth / 750 + 'px');
-			else if (key == 'white-space' && value.includes('pre') && !close)
-				this.pre = node.pre = true;
-			style += `;${key}:${value}`;
-		}
-		style = style.substr(1);
-		if (style) attrs.style = style;
-		if (!close) {
-			node.children = [];
-			if (node.name == 'pre' && cfg.highlight) {
-				this.remove(node);
-				this.pre = node.pre = true;
-			}
-			this.siblings().push(node);
-			this.STACK.push(node);
-		} else if (!cfg.filter || cfg.filter(node, this) != false)
-			this.siblings().push(node);
-	} else {
-		if (!close) this.remove(node);
-		else if (node.name == 'source') {
-			var parent = this.parent();
-			if (parent && (parent.name == 'video' || parent.name == 'audio') && node.attrs.src)
-				parent.attrs.source.push(node.attrs.src);
-		} else if (node.name == 'base' && !this.domain) this.domain = node.attrs.href;
-	}
-	if (this.data[this.i] == '/') this.i++;
-	this.start = this.i + 1;
-	this.state = this.Text;
-}
-// 移除标签
-MpHtmlParser.prototype.remove = function(node) {
-	var name = node.name,
-		j = this.i;
-	// 处理 svg
-	var handleSvg = () => {
-		var src = this.data.substring(j, this.i + 1);
-		node.attrs.xmlns = 'http://www.w3.org/2000/svg';
-		for (var key in node.attrs) {
-			if (key == 'viewbox') src = ` viewBox="${node.attrs.viewbox}"` + src;
-			else if (key != 'style') src = ` ${key}="${node.attrs[key]}"` + src;
-		}
-		src = '<svg' + src;
-		var parent = this.parent();
-		if (node.attrs.width == '100%' && parent && (parent.attrs.style || '').includes('inline'))
-			parent.attrs.style = 'width:300px;max-width:100%;' + parent.attrs.style;
-		this.siblings().push({
-			name: 'img',
-			attrs: {
-				src: 'data:image/svg+xml;utf8,' + src.replace(/#/g, '%23'),
-				style: node.attrs.style,
-				ignore: 'T'
-			}
-		})
-	}
-	if (node.name == 'svg' && this.data[j] == '/') return handleSvg(this.i++);
-	while (1) {
-		if ((this.i = this.data.indexOf('</', this.i + 1)) == -1) {
-			if (name == 'pre' || name == 'svg') this.i = j;
-			else this.i = this.data.length;
-			return;
-		}
-		this.start = (this.i += 2);
-		while (!blankChar[this.data[this.i]] && !this.isClose()) this.i++;
-		if (this.section().toLowerCase() == name) {
-			// 代码块高亮
-			if (name == 'pre') {
-				this.data = this.data.substr(0, j + 1) + cfg.highlight(this.data.substring(j + 1, this.i - 5), node.attrs) + this.data
-					.substr(this.i - 5);
-				return this.i = j;
-			} else if (name == 'style')
-				this.CssHandler.getStyle(this.data.substring(j + 1, this.i - 7));
-			else if (name == 'title')
-				this.DOM.title = this.data.substring(j + 1, this.i - 7);
-			if ((this.i = this.data.indexOf('>', this.i)) == -1) this.i = this.data.length;
-			if (name == 'svg') handleSvg();
-			return;
-		}
-	}
-}
-// 节点出栈处理
-MpHtmlParser.prototype.popNode = function(node) {
-	// 空白符处理
-	if (node.pre) {
-		node.pre = this.pre = void 0;
-		for (let i = this.STACK.length; i--;)
-			if (this.STACK[i].pre)
-				this.pre = true;
-	}
-	var siblings = this.siblings(),
-		len = siblings.length,
-		childs = node.children;
-	if (node.name == 'head' || (cfg.filter && cfg.filter(node, this) == false))
-		return siblings.pop();
-	var attrs = node.attrs;
-	// 替换一些标签名
-	if (cfg.blockTags[node.name]) node.name = 'div';
-	else if (!cfg.trustTags[node.name]) node.name = 'span';
-	// 处理列表
-	if (node.c && (node.name == 'ul' || node.name == 'ol')) {
-		if ((node.attrs.style || '').includes('list-style:none')) {
-			for (let i = 0, child; child = childs[i++];)
-				if (child.name == 'li')
-					child.name = 'div';
-		} else if (node.name == 'ul') {
-			var floor = 1;
-			for (let i = this.STACK.length; i--;)
-				if (this.STACK[i].name == 'ul') floor++;
-			if (floor != 1)
-				for (let i = childs.length; i--;)
-					childs[i].floor = floor;
-		} else {
-			for (let i = 0, num = 1, child; child = childs[i++];)
-				if (child.name == 'li') {
-					child.type = 'ol';
-					child.num = ((num, type) => {
-						if (type == 'a') return String.fromCharCode(97 + (num - 1) % 26);
-						if (type == 'A') return String.fromCharCode(65 + (num - 1) % 26);
-						if (type == 'i' || type == 'I') {
-							num = (num - 1) % 99 + 1;
-							var one = ['I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX'],
-								ten = ['X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC'],
-								res = (ten[Math.floor(num / 10) - 1] || '') + (one[num % 10 - 1] || '');
-							if (type == 'i') return res.toLowerCase();
-							return res;
-						}
-						return num;
-					})(num++, attrs.type) + '.';
-				}
-		}
-	}
-	// 处理表格
-	if (node.name == 'table') {
-		var padding = parseFloat(attrs.cellpadding),
-			spacing = parseFloat(attrs.cellspacing),
-			border = parseFloat(attrs.border);
-		if (node.c) {
-			if (isNaN(padding)) padding = 2;
-			if (isNaN(spacing)) spacing = 2;
-		}
-		if (border) attrs.style = `border:${border}px solid gray;${attrs.style || ''}`;
-		if (node.flag && node.c) {
-			// 有 colspan 或 rowspan 且含有链接的表格转为 grid 布局实现
-			attrs.style = `${attrs.style || ''};${spacing ? `;grid-gap:${spacing}px` : ';border-left:0;border-top:0'}`;
-			var row = 1,
-				col = 1,
-				colNum,
-				trs = [],
-				children = [],
-				map = {};
-			(function f(ns) {
-				for (var i = 0; i < ns.length; i++) {
-					if (ns[i].name == 'tr') trs.push(ns[i]);
-					else f(ns[i].children || []);
-				}
-			})(node.children)
-			for (let i = 0; i < trs.length; i++) {
-				for (let j = 0, td; td = trs[i].children[j]; j++) {
-					if (td.name == 'td' || td.name == 'th') {
-						while (map[row + '.' + col]) col++;
-						var cell = {
-							name: 'div',
-							c: 1,
-							attrs: {
-								style: (td.attrs.style || '') + (border ? `;border:${border}px solid gray` + (spacing ? '' :
-									';border-right:0;border-bottom:0') : '') + (padding ? `;padding:${padding}px` : '')
-							},
-							children: td.children
-						}
-						if (td.attrs.colspan) {
-							cell.attrs.style += ';grid-column-start:' + col + ';grid-column-end:' + (col + parseInt(td.attrs.colspan));
-							if (!td.attrs.rowspan) cell.attrs.style += ';grid-row-start:' + row + ';grid-row-end:' + (row + 1);
-							col += parseInt(td.attrs.colspan) - 1;
-						}
-						if (td.attrs.rowspan) {
-							cell.attrs.style += ';grid-row-start:' + row + ';grid-row-end:' + (row + parseInt(td.attrs.rowspan));
-							if (!td.attrs.colspan) cell.attrs.style += ';grid-column-start:' + col + ';grid-column-end:' + (col + 1);
-							for (var k = 1; k < td.attrs.rowspan; k++) map[(row + k) + '.' + col] = 1;
-						}
-						children.push(cell);
-						col++;
-					}
-				}
-				if (!colNum) {
-					colNum = col - 1;
-					attrs.style += `;grid-template-columns:repeat(${colNum},auto)`
-				}
-				col = 1;
-				row++;
-			}
-			node.children = children;
-		} else {
-			attrs.style = `border-spacing:${spacing}px;${attrs.style || ''}`;
-			if (border || padding)
-				(function f(ns) {
-					for (var i = 0, n; n = ns[i]; i++) {
-						if (n.name == 'th' || n.name == 'td') {
-							if (border) n.attrs.style = `border:${border}px solid gray;${n.attrs.style || ''}`;
-							if (padding) n.attrs.style = `padding:${padding}px;${n.attrs.style || ''}`;
-						} else f(n.children || []);
-					}
-				})(childs)
-		}
-		if (this.options.autoscroll) {
-			var table = Object.assign({}, node);
-			node.name = 'div';
-			node.attrs = {
-				style: 'overflow:scroll'
-			}
-			node.children = [table];
-		}
-	}
-	this.CssHandler.pop && this.CssHandler.pop(node);
-	// 自动压缩
-	if (node.name == 'div' && !Object.keys(attrs).length && childs.length == 1 && childs[0].name == 'div')
-		siblings[len - 1] = childs[0];
-}
-// 状态机
-MpHtmlParser.prototype.Text = function(c) {
-	if (c == '<') {
-		var next = this.data[this.i + 1],
-			isLetter = c => (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z');
-		if (isLetter(next)) {
-			this.setText();
-			this.start = this.i + 1;
-			this.state = this.TagName;
-		} else if (next == '/') {
-			this.setText();
-			if (isLetter(this.data[++this.i + 1])) {
-				this.start = this.i + 1;
-				this.state = this.EndTag;
-			} else this.Comment();
-		} else if (next == '!' || next == '?') {
-			this.setText();
-			this.Comment();
-		}
-	}
-}
-MpHtmlParser.prototype.Comment = function() {
-	var key;
-	if (this.data.substring(this.i + 2, this.i + 4) == '--') key = '-->';
-	else if (this.data.substring(this.i + 2, this.i + 9) == '[CDATA[') key = ']]>';
-	else key = '>';
-	if ((this.i = this.data.indexOf(key, this.i + 2)) == -1) this.i = this.data.length;
-	else this.i += key.length - 1;
-	this.start = this.i + 1;
-	this.state = this.Text;
-}
-MpHtmlParser.prototype.TagName = function(c) {
-	if (blankChar[c]) {
-		this.tagName = this.section();
-		while (blankChar[this.data[this.i]]) this.i++;
-		if (this.isClose()) this.setNode();
-		else {
-			this.start = this.i;
-			this.state = this.AttrName;
-		}
-	} else if (this.isClose()) {
-		this.tagName = this.section();
-		this.setNode();
-	}
-}
-MpHtmlParser.prototype.AttrName = function(c) {
-	if (c == '=' || blankChar[c] || this.isClose()) {
-		this.attrName = this.section();
-		if (blankChar[c])
-			while (blankChar[this.data[++this.i]]);
-		if (this.data[this.i] == '=') {
-			while (blankChar[this.data[++this.i]]);
-			this.start = this.i--;
-			this.state = this.AttrValue;
-		} else this.setAttr();
-	}
-}
-MpHtmlParser.prototype.AttrValue = function(c) {
-	if (c == '"' || c == "'") {
-		this.start++;
-		if ((this.i = this.data.indexOf(c, this.i + 1)) == -1) return this.i = this.data.length;
-		this.attrVal = this.section();
-		this.i++;
-	} else {
-		for (; !blankChar[this.data[this.i]] && !this.isClose(); this.i++);
-		this.attrVal = this.section();
-	}
-	this.setAttr();
-}
-MpHtmlParser.prototype.EndTag = function(c) {
-	if (blankChar[c] || c == '>' || c == '/') {
-		var name = this.section().toLowerCase();
-		for (var i = this.STACK.length; i--;)
-			if (this.STACK[i].name == name) break;
-		if (i != -1) {
-			var node;
-			while ((node = this.STACK.pop()).name != name) this.popNode(node);
-			this.popNode(node);
-		} else if (name == 'p' || name == 'br')
-			this.siblings().push({
-				name,
-				attrs: {}
-			});
-		this.i = this.data.indexOf('>', this.i);
-		this.start = this.i + 1;
-		if (this.i == -1) this.i = this.data.length;
-		else this.state = this.Text;
-	}
-}
-module.exports = MpHtmlParser;
diff --git a/uview-ui/components/u-parse/libs/config.js b/uview-ui/components/u-parse/libs/config.js
deleted file mode 100644
index 1f772e9..0000000
--- a/uview-ui/components/u-parse/libs/config.js
+++ /dev/null
@@ -1,80 +0,0 @@
-/* 配置文件 */
-var cfg = {
-	// 出错占位图
-	errorImg: null,
-	// 过滤器函数
-	filter: null,
-	// 代码高亮函数
-	highlight: null,
-	// 文本处理函数
-	onText: null,
-	// 实体编码列表
-	entities: {
-		quot: '"',
-		apos: "'",
-		semi: ';',
-		nbsp: '\xA0',
-		ensp: '\u2002',
-		emsp: '\u2003',
-		ndash: '–',
-		mdash: '—',
-		middot: '·',
-		lsquo: '‘',
-		rsquo: '’',
-		ldquo: '“',
-		rdquo: '”',
-		bull: '•',
-		hellip: '…'
-	},
-	blankChar: makeMap(' ,\xA0,\t,\r,\n,\f'),
-	boolAttrs: makeMap('allowfullscreen,autoplay,autostart,controls,ignore,loop,muted'),
-	// 块级标签,将被转为 div
-	blockTags: makeMap('address,article,aside,body,caption,center,cite,footer,header,html,nav,pre,section'),
-	// 将被移除的标签
-	ignoreTags: makeMap('area,base,canvas,frame,iframe,input,link,map,meta,param,script,source,style,svg,textarea,title,track,wbr'),
-	// 只能被 rich-text 显示的标签
-	richOnlyTags: makeMap('a,colgroup,fieldset,legend'),
-	// 自闭合的标签
-	selfClosingTags: makeMap('area,base,br,col,circle,ellipse,embed,frame,hr,img,input,line,link,meta,param,path,polygon,rect,source,track,use,wbr'),
-	// 信任的标签
-	trustTags: makeMap('a,abbr,ad,audio,b,blockquote,br,code,col,colgroup,dd,del,dl,dt,div,em,fieldset,h1,h2,h3,h4,h5,h6,hr,i,img,ins,label,legend,li,ol,p,q,source,span,strong,sub,sup,table,tbody,td,tfoot,th,thead,tr,title,ul,video'),
-	// 默认的标签样式
-	userAgentStyles: {
-		address: 'font-style:italic',
-		big: 'display:inline;font-size:1.2em',
-		blockquote: 'background-color:#f6f6f6;border-left:3px solid #dbdbdb;color:#6c6c6c;padding:5px 0 5px 10px',
-		caption: 'display:table-caption;text-align:center',
-		center: 'text-align:center',
-		cite: 'font-style:italic',
-		dd: 'margin-left:40px',
-		mark: 'background-color:yellow',
-		pre: 'font-family:monospace;white-space:pre;overflow:scroll',
-		s: 'text-decoration:line-through',
-		small: 'display:inline;font-size:0.8em',
-		u: 'text-decoration:underline'
-	}
-}
-
-function makeMap(str) {
-	var map = Object.create(null),
-		list = str.split(',');
-	for (var i = list.length; i--;)
-		map[list[i]] = true;
-	return map;
-}
-
-// #ifdef MP-WEIXIN
-if (wx.canIUse('editor')) {
-	cfg.blockTags.pre = void 0;
-	cfg.ignoreTags.rp = true;
-	Object.assign(cfg.richOnlyTags, makeMap('bdi,bdo,caption,rt,ruby'));
-	Object.assign(cfg.trustTags, makeMap('bdi,bdo,caption,pre,rt,ruby'));
-}
-// #endif
-
-// #ifdef APP-PLUS
-cfg.ignoreTags.iframe = void 0;
-Object.assign(cfg.trustTags, makeMap('embed,iframe'));
-// #endif
-
-module.exports = cfg;
diff --git a/uview-ui/components/u-parse/libs/handler.wxs b/uview-ui/components/u-parse/libs/handler.wxs
deleted file mode 100644
index d3b1aaa..0000000
--- a/uview-ui/components/u-parse/libs/handler.wxs
+++ /dev/null
@@ -1,22 +0,0 @@
-var inline = {
-	abbr: 1,
-	b: 1,
-	big: 1,
-	code: 1,
-	del: 1,
-	em: 1,
-	i: 1,
-	ins: 1,
-	label: 1,
-	q: 1,
-	small: 1,
-	span: 1,
-	strong: 1,
-	sub: 1,
-	sup: 1
-}
-module.exports = {
-	use: function(item) {
-		return !item.c && !inline[item.name] && (item.attrs.style || '').indexOf('display:inline') == -1
-	}
-}
diff --git a/uview-ui/components/u-parse/libs/trees.vue b/uview-ui/components/u-parse/libs/trees.vue
deleted file mode 100644
index 2b24820..0000000
--- a/uview-ui/components/u-parse/libs/trees.vue
+++ /dev/null
@@ -1,505 +0,0 @@
-<template>
-	<view :class="'interlayer '+(c||'')" :style="s">
-		<block v-for="(n, i) in nodes" v-bind:key="i">
-			<!--图片-->
-			<view v-if="n.name=='img'" :class="'_img '+n.attrs.class" :style="n.attrs.style" :data-attrs="n.attrs" @tap.stop="imgtap">
-				<rich-text v-if="ctrl[i]!=0" :nodes="[{attrs:{src:loading&&(ctrl[i]||0)<2?loading:(lazyLoad&&!ctrl[i]?placeholder:(ctrl[i]==3?errorImg:n.attrs.src||'')),alt:n.attrs.alt||'',width:n.attrs.width||'',style:'-webkit-touch-callout:none;max-width:100%;display:block'+(n.attrs.height?';height:'+n.attrs.height:'')},name:'img'}]" />
-				<image class="_image" :src="lazyLoad&&!ctrl[i]?placeholder:n.attrs.src" :lazy-load="lazyLoad"
-				 :show-menu-by-longpress="!n.attrs.ignore" :data-i="i" :data-index="n.attrs.i" data-source="img" @load="loadImg"
-				 @error="error" />
-			</view>
-			<!--文本-->
-			<text v-else-if="n.type=='text'" decode>{{n.text}}</text>
-			<!--#ifndef MP-BAIDU-->
-			<text v-else-if="n.name=='br'">\n</text>
-			<!--#endif-->
-			<!--视频-->
-			<view v-else-if="((n.lazyLoad&&!n.attrs.autoplay)||(n.name=='video'&&!loadVideo))&&ctrl[i]==undefined" :id="n.attrs.id"
-			 :class="'_video '+(n.attrs.class||'')" :style="n.attrs.style" :data-i="i" @tap.stop="_loadVideo" />
-			<video v-else-if="n.name=='video'" :id="n.attrs.id" :class="n.attrs.class" :style="n.attrs.style" :autoplay="n.attrs.autoplay||ctrl[i]==0"
-			 :controls="n.attrs.controls" :loop="n.attrs.loop" :muted="n.attrs.muted" :poster="n.attrs.poster" :src="n.attrs.source[ctrl[i]||0]"
-			 :unit-id="n.attrs['unit-id']" :data-id="n.attrs.id" :data-i="i" data-source="video" @error="error" @play="play" />
-			<!--音频-->
-			<audio v-else-if="n.name=='audio'" :ref="n.attrs.id" :class="n.attrs.class" :style="n.attrs.style" :author="n.attrs.author"
-			 :autoplay="n.attrs.autoplay" :controls="n.attrs.controls" :loop="n.attrs.loop" :name="n.attrs.name" :poster="n.attrs.poster"
-			 :src="n.attrs.source[ctrl[i]||0]" :data-i="i" :data-id="n.attrs.id" data-source="audio" @error.native="error"
-			 @play.native="play" />
-			<!--链接-->
-			<view v-else-if="n.name=='a'" :id="n.attrs.id" :class="'_a '+(n.attrs.class||'')" hover-class="_hover" :style="n.attrs.style"
-			 :data-attrs="n.attrs" @tap.stop="linkpress">
-				<trees class="_span" c="_span" :nodes="n.children" />
-			</view>
-			<!--广告-->
-			<!--<ad v-else-if="n.name=='ad'" :class="n.attrs.class" :style="n.attrs.style" :unit-id="n.attrs['unit-id']" :appid="n.attrs.appid" :apid="n.attrs.apid" :type="n.attrs.type" :adpid="n.attrs.adpid" data-source="ad" @error="error" />-->
-			<!--列表-->
-			<view v-else-if="n.name=='li'" :id="n.attrs.id" :class="n.attrs.class" :style="(n.attrs.style||'')+';display:flex;flex-direction:row'">
-				<view v-if="n.type=='ol'" class="_ol-bef">{{n.num}}</view>
-				<view v-else class="_ul-bef">
-					<view v-if="n.floor%3==0" class="_ul-p1">█</view>
-					<view v-else-if="n.floor%3==2" class="_ul-p2" />
-					<view v-else class="_ul-p1" style="border-radius:50%">█</view>
-				</view>
-				<trees class="_li" c="_li" :nodes="n.children" :lazyLoad="lazyLoad" :loading="loading" />
-			</view>
-			<!--表格-->
-			<view v-else-if="n.name=='table'&&n.c&&n.flag" :id="n.attrs.id" :class="n.attrs.class" :style="(n.attrs.style||'')+';display:grid'">
-				<trees v-for="(cell,n) in n.children" v-bind:key="n" :class="cell.attrs.class" :c="cell.attrs.class" :style="cell.attrs.style"
-				 :s="cell.attrs.style" :nodes="cell.children" />
-			</view>
-			<view v-else-if="n.name=='table'&&n.c" :id="n.attrs.id" :class="n.attrs.class" :style="(n.attrs.style||'')+';display:table'">
-				<view v-for="(tbody, o) in n.children" v-bind:key="o" :class="tbody.attrs.class" :style="(tbody.attrs.style||'')+(tbody.name[0]=='t'?';display:table-'+(tbody.name=='tr'?'row':'row-group'):'')">
-					<view v-for="(tr, p) in tbody.children" v-bind:key="p" :class="tr.attrs.class" :style="(tr.attrs.style||'')+(tr.name[0]=='t'?';display:table-'+(tr.name=='tr'?'row':'cell'):'')">
-						<trees v-if="tr.name=='td'" :nodes="tr.children" />
-						<trees v-else v-for="(td, q) in tr.children" v-bind:key="q" :class="td.attrs.class" :c="td.attrs.class" :style="(td.attrs.style||'')+(td.name[0]=='t'?';display:table-'+(td.name=='tr'?'row':'cell'):'')"
-						 :s="(td.attrs.style||'')+(td.name[0]=='t'?';display:table-'+(td.name=='tr'?'row':'cell'):'')" :nodes="td.children" />
-					</view>
-				</view>
-			</view>
-			<!--#ifdef APP-PLUS-->
-			<iframe v-else-if="n.name=='iframe'" :style="n.attrs.style" :allowfullscreen="n.attrs.allowfullscreen" :frameborder="n.attrs.frameborder"
-			 :width="n.attrs.width" :height="n.attrs.height" :src="n.attrs.src" />
-			<embed v-else-if="n.name=='embed'" :style="n.attrs.style" :width="n.attrs.width" :height="n.attrs.height" :src="n.attrs.src" />
-			<!--#endif-->
-			<!--富文本-->
-			<!--#ifdef MP-WEIXIN || MP-QQ || APP-PLUS-->
-			<rich-text v-else-if="handler.use(n)" :id="n.attrs.id" :class="'_p __'+n.name" :nodes="[n]" />
-			<!--#endif-->
-			<!--#ifndef MP-WEIXIN || MP-QQ || APP-PLUS-->
-			<rich-text v-else-if="!n.c" :id="n.attrs.id" :nodes="[n]" style="display:inline" />
-			<!--#endif-->
-			<trees v-else :class="(n.attrs.id||'')+' _'+n.name+' '+(n.attrs.class||'')" :c="(n.attrs.id||'')+' _'+n.name+' '+(n.attrs.class||'')"
-			 :style="n.attrs.style" :s="n.attrs.style" :nodes="n.children" :lazyLoad="lazyLoad" :loading="loading" />
-		</block>
-	</view>
-</template>
-<script module="handler" lang="wxs" src="./handler.wxs"></script>
-<script>
-	global.Parser = {};
-	import trees from './trees'
-	const errorImg = require('../libs/config.js').errorImg;
-	export default {
-		components: {
-			trees
-		},
-		name: 'trees',
-		data() {
-			return {
-				ctrl: [],
-				placeholder: 'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="300" height="225"/>',
-				errorImg,
-				loadVideo: typeof plus == 'undefined',
-				// #ifndef MP-ALIPAY
-				c: '',
-				s: ''
-				// #endif
-			}
-		},
-		props: {
-			nodes: Array,
-			lazyLoad: Boolean,
-			loading: String,
-			// #ifdef MP-ALIPAY
-			c: String,
-			s: String
-			// #endif
-		},
-		mounted() {
-			for (this.top = this.$parent; this.top.$options.name != 'parser'; this.top = this.top.$parent);
-			this.init();
-		},
-		// #ifdef APP-PLUS
-		beforeDestroy() {
-			this.observer && this.observer.disconnect();
-		},
-		// #endif
-		methods: {
-			init() {
-				for (var i = this.nodes.length, n; n = this.nodes[--i];) {
-					if (n.name == 'img') {
-						this.top.imgList.setItem(n.attrs.i, n.attrs['original-src'] || n.attrs.src);
-						// #ifdef APP-PLUS
-						if (this.lazyLoad && !this.observer) {
-							this.observer = uni.createIntersectionObserver(this).relativeToViewport({
-								top: 500,
-								bottom: 500
-							});
-							setTimeout(() => {
-								this.observer.observe('._img', res => {
-									if (res.intersectionRatio) {
-										for (var j = this.nodes.length; j--;)
-											if (this.nodes[j].name == 'img')
-												this.$set(this.ctrl, j, 1);
-										this.observer.disconnect();
-									}
-								})
-							}, 0)
-						}
-						// #endif
-					} else if (n.name == 'video' || n.name == 'audio') {
-						var ctx;
-						if (n.name == 'video') {
-							ctx = uni.createVideoContext(n.attrs.id
-								// #ifndef MP-BAIDU
-								, this
-								// #endif
-							);
-						} else if (this.$refs[n.attrs.id])
-							ctx = this.$refs[n.attrs.id][0];
-						if (ctx) {
-							ctx.id = n.attrs.id;
-							this.top.videoContexts.push(ctx);
-						}
-					}
-				}
-				// #ifdef APP-PLUS
-				// APP 上避免 video 错位需要延时渲染
-				setTimeout(() => {
-					this.loadVideo = true;
-				}, 1000)
-				// #endif
-			},
-			play(e) {
-				var contexts = this.top.videoContexts;
-				if (contexts.length > 1 && this.top.autopause)
-					for (var i = contexts.length; i--;)
-						if (contexts[i].id != e.currentTarget.dataset.id)
-							contexts[i].pause();
-			},
-			imgtap(e) {
-				var attrs = e.currentTarget.dataset.attrs;
-				if (!attrs.ignore) {
-					var preview = true,
-						data = {
-							id: e.target.id,
-							src: attrs.src,
-							ignore: () => preview = false
-						};
-					global.Parser.onImgtap && global.Parser.onImgtap(data);
-					this.top.$emit('imgtap', data);
-					if (preview) {
-						var urls = this.top.imgList,
-							current = urls[attrs.i] ? parseInt(attrs.i) : (urls = [attrs.src], 0);
-						uni.previewImage({
-							current,
-							urls
-						})
-					}
-				}
-			},
-			loadImg(e) {
-				var i = e.currentTarget.dataset.i;
-				if (this.lazyLoad && !this.ctrl[i]) {
-					// #ifdef QUICKAPP-WEBVIEW
-					this.$set(this.ctrl, i, 0);
-					this.$nextTick(function() {
-						// #endif
-						// #ifndef APP-PLUS
-						this.$set(this.ctrl, i, 1);
-						// #endif
-						// #ifdef QUICKAPP-WEBVIEW
-					})
-					// #endif
-				} else if (this.loading && this.ctrl[i] != 2) {
-					// #ifdef QUICKAPP-WEBVIEW
-					this.$set(this.ctrl, i, 0);
-					this.$nextTick(function() {
-						// #endif
-						this.$set(this.ctrl, i, 2);
-						// #ifdef QUICKAPP-WEBVIEW
-					})
-					// #endif
-				}
-			},
-			linkpress(e) {
-				var jump = true,
-					attrs = e.currentTarget.dataset.attrs;
-				attrs.ignore = () => jump = false;
-				global.Parser.onLinkpress && global.Parser.onLinkpress(attrs);
-				this.top.$emit('linkpress', attrs);
-				if (jump) {
-					// #ifdef MP
-					if (attrs['app-id']) {
-						return uni.navigateToMiniProgram({
-							appId: attrs['app-id'],
-							path: attrs.path
-						})
-					}
-					// #endif
-					if (attrs.href) {
-						if (attrs.href[0] == '#') {
-							if (this.top.useAnchor)
-								this.top.navigateTo({
-									id: attrs.href.substring(1)
-								})
-						} else if (attrs.href.indexOf('http') == 0 || attrs.href.indexOf('//') == 0) {
-							// #ifdef APP-PLUS
-							plus.runtime.openWeb(attrs.href);
-							// #endif
-							// #ifndef APP-PLUS
-							uni.setClipboardData({
-								data: attrs.href,
-								success: () =>
-									uni.showToast({
-										title: '链接已复制'
-									})
-							})
-							// #endif
-						} else
-							uni.navigateTo({
-								url: attrs.href,
-								fail() {
-									uni.switchTab({
-										url: attrs.href,
-									})
-								}
-							})
-					}
-				}
-			},
-			error(e) {
-				var target = e.currentTarget,
-					source = target.dataset.source,
-					i = target.dataset.i;
-				if (source == 'video' || source == 'audio') {
-					// 加载其他 source
-					var index = this.ctrl[i] ? this.ctrl[i].i + 1 : 1;
-					if (index < this.nodes[i].attrs.source.length)
-						this.$set(this.ctrl, i, index);
-					if (e.detail.__args__)
-						e.detail = e.detail.__args__[0];
-				} else if (errorImg && source == 'img') {
-					this.top.imgList.setItem(target.dataset.index, errorImg);
-					this.$set(this.ctrl, i, 3);
-				}
-				this.top && this.top.$emit('error', {
-					source,
-					target,
-					errMsg: e.detail.errMsg
-				});
-			},
-			_loadVideo(e) {
-				this.$set(this.ctrl, e.target.dataset.i, 0);
-			}
-		}
-	}
-</script>
-
-<style>
-	/* 在这里引入自定义样式 */
-
-	/* 链接和图片效果 */
-	._a {
-		display: inline;
-		padding: 1.5px 0 1.5px 0;
-		color: #366092;
-		word-break: break-all;
-	}
-
-	._hover {
-		text-decoration: underline;
-		opacity: 0.7;
-	}
-
-	._img {
-		display: inline-block;
-		max-width: 100%;
-		overflow: hidden;
-	}
-
-	/* #ifdef MP-WEIXIN */
-	:host {
-		display: inline;
-	}
-
-	/* #endif */
-
-	/* #ifndef MP-ALIPAY || APP-PLUS */
-	.interlayer {
-		display: inherit;
-		flex-direction: inherit;
-		flex-wrap: inherit;
-		align-content: inherit;
-		align-items: inherit;
-		justify-content: inherit;
-		width: 100%;
-		white-space: inherit;
-	}
-
-	/* #endif */
-
-	._b,
-	._strong {
-		font-weight: bold;
-	}
-
-	/* #ifndef MP-ALIPAY */
-	._blockquote,
-	._div,
-	._p,
-	._ol,
-	._ul,
-	._li {
-		display: block;
-	}
-
-	/* #endif */
-
-	._code {
-		font-family: monospace;
-	}
-
-	._del {
-		text-decoration: line-through;
-	}
-
-	._em,
-	._i {
-		font-style: italic;
-	}
-
-	._h1 {
-		font-size: 2em;
-	}
-
-	._h2 {
-		font-size: 1.5em;
-	}
-
-	._h3 {
-		font-size: 1.17em;
-	}
-
-	._h5 {
-		font-size: 0.83em;
-	}
-
-	._h6 {
-		font-size: 0.67em;
-	}
-
-	._h1,
-	._h2,
-	._h3,
-	._h4,
-	._h5,
-	._h6 {
-		display: block;
-		font-weight: bold;
-	}
-
-	._image {
-		display: block;
-		width: 100%;
-		height: 360px;
-		margin-top: -360px;
-		opacity: 0;
-	}
-
-	._ins {
-		text-decoration: underline;
-	}
-
-	._li {
-		flex: 1;
-		width: 0;
-	}
-
-	._ol-bef {
-		width: 36px;
-		margin-right: 5px;
-		text-align: right;
-	}
-
-	._ul-bef {
-		display: block;
-		margin: 0 12px 0 23px;
-		line-height: normal;
-	}
-
-	._ol-bef,
-	._ul-bef {
-		flex: none;
-		user-select: none;
-	}
-
-	._ul-p1 {
-		display: inline-block;
-		width: 0.3em;
-		height: 0.3em;
-		overflow: hidden;
-		line-height: 0.3em;
-	}
-
-	._ul-p2 {
-		display: inline-block;
-		width: 0.23em;
-		height: 0.23em;
-		border: 0.05em solid black;
-		border-radius: 50%;
-	}
-
-	._q::before {
-		content: '"';
-	}
-
-	._q::after {
-		content: '"';
-	}
-
-	._sub {
-		font-size: smaller;
-		vertical-align: sub;
-	}
-
-	._sup {
-		font-size: smaller;
-		vertical-align: super;
-	}
-
-	/* #ifdef MP-ALIPAY || APP-PLUS || QUICKAPP-WEBVIEW */
-	._abbr,
-	._b,
-	._code,
-	._del,
-	._em,
-	._i,
-	._ins,
-	._label,
-	._q,
-	._span,
-	._strong,
-	._sub,
-	._sup {
-		display: inline;
-	}
-
-	/* #endif */
-
-	/* #ifdef MP-WEIXIN || MP-QQ */
-	.__bdo,
-	.__bdi,
-	.__ruby,
-	.__rt {
-		display: inline-block;
-	}
-
-	/* #endif */
-	._video {
-		position: relative;
-		display: inline-block;
-		width: 300px;
-		height: 225px;
-		background-color: black;
-	}
-
-	._video::after {
-		position: absolute;
-		top: 50%;
-		left: 50%;
-		margin: -15px 0 0 -15px;
-		content: '';
-		border-color: transparent transparent transparent white;
-		border-style: solid;
-		border-width: 15px 0 15px 30px;
-	}
-</style>
diff --git a/uview-ui/components/u-parse/u-parse.vue b/uview-ui/components/u-parse/u-parse.vue
deleted file mode 100644
index 57a105e..0000000
--- a/uview-ui/components/u-parse/u-parse.vue
+++ /dev/null
@@ -1,645 +0,0 @@
-<template>
-	<view>
-		<slot v-if="!nodes.length" />
-		<!--#ifdef APP-PLUS-NVUE-->
-		<web-view id="_top" ref="web" :style="'margin-top:-2px;height:'+height+'px'" @onPostMessage="_message" />
-		<!--#endif-->
-		<!--#ifndef APP-PLUS-NVUE-->
-		<view id="_top" :style="showAm+(selectable?';user-select:text;-webkit-user-select:text':'')">
-			<!--#ifdef H5 || MP-360-->
-			<div :id="'rtf'+uid"></div>
-			<!--#endif-->
-			<!--#ifndef H5 || MP-360-->
-			<trees :nodes="nodes" :lazyLoad="lazyLoad" :loading="loadingImg" />
-			<!--#endif-->
-		</view>
-		<!--#endif-->
-	</view>
-</template>
-
-<script>
-	var search;
-	// #ifndef H5 || APP-PLUS-NVUE || MP-360
-	import trees from './libs/trees';
-	var cache = {},
-		// #ifdef MP-WEIXIN || MP-TOUTIAO
-		fs = uni.getFileSystemManager ? uni.getFileSystemManager() : null,
-		// #endif
-		Parser = require('./libs/MpHtmlParser.js');
-	var dom;
-	// 计算 cache 的 key
-	function hash(str) {
-		for (var i = str.length, val = 5381; i--;)
-			val += (val << 5) + str.charCodeAt(i);
-		return val;
-	}
-	// #endif
-	// #ifdef H5 || APP-PLUS-NVUE || MP-360
-	var {
-		windowWidth,
-		platform
-	} = uni.getSystemInfoSync(),
-		cfg = require('./libs/config.js');
-	// #endif
-	// #ifdef APP-PLUS-NVUE
-	var weexDom = weex.requireModule('dom');
-	// #endif
-	/**
-	 * Parser 富文本组件
-	 * @tutorial https://github.com/jin-yufeng/Parser
-	 * @property {String} html 富文本数据
-	 * @property {Boolean} autopause 是否在播放一个视频时自动暂停其他视频
-	 * @property {Boolean} autoscroll 是否自动给所有表格添加一个滚动层
-	 * @property {Boolean} autosetTitle 是否自动将 title 标签中的内容设置到页面标题
-	 * @property {Number} compress 压缩等级
-	 * @property {String} domain 图片、视频等链接的主域名
-	 * @property {Boolean} lazyLoad 是否开启图片懒加载
-	 * @property {String} loadingImg 图片加载完成前的占位图
-	 * @property {Boolean} selectable 是否开启长按复制
-	 * @property {Object} tagStyle 标签的默认样式
-	 * @property {Boolean} showWithAnimation 是否使用渐显动画
-	 * @property {Boolean} useAnchor 是否使用锚点
-	 * @property {Boolean} useCache 是否缓存解析结果
-	 * @event {Function} parse 解析完成事件
-	 * @event {Function} load dom 加载完成事件
-	 * @event {Function} ready 所有图片加载完毕事件
-	 * @event {Function} error 错误事件
-	 * @event {Function} imgtap 图片点击事件
-	 * @event {Function} linkpress 链接点击事件
-	 * @author JinYufeng
-	 * @version 20201029
-	 * @listens MIT
-	 */
-	export default {
-		name: 'parser',
-		data() {
-			return {
-				// #ifdef H5 || MP-360
-				uid: this._uid,
-				// #endif
-				// #ifdef APP-PLUS-NVUE
-				height: 1,
-				// #endif
-				// #ifndef APP-PLUS-NVUE
-				showAm: '',
-				// #endif
-				nodes: []
-			}
-		},
-		// #ifndef H5 || APP-PLUS-NVUE || MP-360
-		components: {
-			trees
-		},
-		// #endif
-		props: {
-			html: String,
-			autopause: {
-				type: Boolean,
-				default: true
-			},
-			autoscroll: Boolean,
-			autosetTitle: {
-				type: Boolean,
-				default: true
-			},
-			// #ifndef H5 || APP-PLUS-NVUE || MP-360
-			compress: Number,
-			loadingImg: String,
-			useCache: Boolean,
-			// #endif
-			domain: String,
-			lazyLoad: Boolean,
-			selectable: Boolean,
-			tagStyle: Object,
-			showWithAnimation: Boolean,
-			useAnchor: Boolean
-		},
-		watch: {
-			html(html) {
-				this.setContent(html);
-			}
-		},
-		created() {
-			// 图片数组
-			this.imgList = [];
-			this.imgList.each = function(f) {
-				for (var i = 0, len = this.length; i < len; i++)
-					this.setItem(i, f(this[i], i, this));
-			}
-			this.imgList.setItem = function(i, src) {
-				if (i == void 0 || !src) return;
-				// #ifndef MP-ALIPAY || APP-PLUS
-				// 去重
-				if (src.indexOf('http') == 0 && this.includes(src)) {
-					var newSrc = src.split('://')[0];
-					for (var j = newSrc.length, c; c = src[j]; j++) {
-						if (c == '/' && src[j - 1] != '/' && src[j + 1] != '/') break;
-						newSrc += Math.random() > 0.5 ? c.toUpperCase() : c;
-					}
-					newSrc += src.substr(j);
-					return this[i] = newSrc;
-				}
-				// #endif
-				this[i] = src;
-				// 暂存 data src
-				if (src.includes('data:image')) {
-					var filePath, info = src.match(/data:image\/(\S+?);(\S+?),(.+)/);
-					if (!info) return;
-					// #ifdef MP-WEIXIN || MP-TOUTIAO
-					filePath = `${wx.env.USER_DATA_PATH}/${Date.now()}.${info[1]}`;
-					fs && fs.writeFile({
-						filePath,
-						data: info[3],
-						encoding: info[2],
-						success: () => this[i] = filePath
-					})
-					// #endif
-					// #ifdef APP-PLUS
-					filePath = `_doc/parser_tmp/${Date.now()}.${info[1]}`;
-					var bitmap = new plus.nativeObj.Bitmap();
-					bitmap.loadBase64Data(src, () => {
-						bitmap.save(filePath, {}, () => {
-							bitmap.clear()
-							this[i] = filePath;
-						})
-					})
-					// #endif
-				}
-			}
-		},
-		mounted() {
-			// #ifdef H5 || MP-360
-			this.document = document.getElementById('rtf' + this._uid);
-			// #endif
-			// #ifndef H5 || APP-PLUS-NVUE || MP-360
-			if (dom) this.document = new dom(this);
-			// #endif
-			if (search) this.search = args => search(this, args);
-			// #ifdef APP-PLUS-NVUE
-			this.document = this.$refs.web;
-			setTimeout(() => {
-				// #endif
-				if (this.html) this.setContent(this.html);
-				// #ifdef APP-PLUS-NVUE
-			}, 30)
-			// #endif
-		},
-		beforeDestroy() {
-			// #ifdef H5 || MP-360
-			if (this._observer) this._observer.disconnect();
-			// #endif
-			this.imgList.each(src => {
-				// #ifdef APP-PLUS
-				if (src && src.includes('_doc')) {
-					plus.io.resolveLocalFileSystemURL(src, entry => {
-						entry.remove();
-					});
-				}
-				// #endif
-				// #ifdef MP-WEIXIN || MP-TOUTIAO
-				if (src && src.includes(uni.env.USER_DATA_PATH))
-					fs && fs.unlink({
-						filePath: src
-					})
-				// #endif
-			})
-			clearInterval(this._timer);
-		},
-		methods: {
-			// 设置富文本内容
-			setContent(html, append) {
-				// #ifdef APP-PLUS-NVUE
-				if (!html)
-					return this.height = 1;
-				if (append)
-					this.$refs.web.evalJs("var b=document.createElement('div');b.innerHTML='" + html.replace(/'/g, "\\'") +
-						"';document.getElementById('parser').appendChild(b)");
-				else {
-					html =
-						'<meta charset="utf-8" /><meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"><style>html,body{width:100%;height:100%;overflow:hidden}body{margin:0}</style><base href="' +
-						this.domain + '"><div id="parser"' + (this.selectable ? '>' : ' style="user-select:none">') + this._handleHtml(html).replace(/\n/g, '\\n') +
-						'</div><script>"use strict";function e(e){if(window.__dcloud_weex_postMessage||window.__dcloud_weex_){var t={data:[e]};window.__dcloud_weex_postMessage?window.__dcloud_weex_postMessage(t):window.__dcloud_weex_.postMessage(JSON.stringify(t))}}document.body.onclick=function(){e({action:"click"})},' +
-						(this.showWithAnimation ? 'document.body.style.animation="_show .5s",' : '') +
-						'setTimeout(function(){e({action:"load",text:document.body.innerText,height:document.getElementById("parser").scrollHeight})},50);\x3c/script>';
-					if (platform == 'android') html = html.replace(/%/g, '%25');
-					this.$refs.web.evalJs("document.write('" + html.replace(/'/g, "\\'") + "');document.close()");
-				}
-				this.$refs.web.evalJs(
-					'var t=document.getElementsByTagName("title");t.length&&e({action:"getTitle",title:t[0].innerText});for(var o,n=document.getElementsByTagName("style"),r=1;o=n[r++];)o.innerHTML=o.innerHTML.replace(/body/g,"#parser");for(var a,c=document.getElementsByTagName("img"),s=[],i=0==c.length,d=0,l=0,g=0;a=c[l];l++)parseInt(a.style.width||a.getAttribute("width"))>' +
-					windowWidth + '&&(a.style.height="auto"),a.onload=function(){++d==c.length&&(i=!0)},a.onerror=function(){++d==c.length&&(i=!0),' + (cfg.errorImg ? 'this.src="' + cfg.errorImg + '",' : '') +
-					'e({action:"error",source:"img",target:this})},a.hasAttribute("ignore")||"A"==a.parentElement.nodeName||(a.i=g++,s.push(a.getAttribute("original-src")||a.src||a.getAttribute("data-src")),a.onclick=function(t){t.stopPropagation(),e({action:"preview",img:{i:this.i,src:this.src}})});e({action:"getImgList",imgList:s});for(var u,m=document.getElementsByTagName("a"),f=0;u=m[f];f++)u.onclick=function(m){m.stopPropagation();var t,o=this.getAttribute("href");if("#"==o[0]){var n=document.getElementById(o.substr(1));n&&(t=n.offsetTop)}return e({action:"linkpress",href:o,offset:t}),!1};for(var h,y=document.getElementsByTagName("video"),v=0;h=y[v];v++)h.style.maxWidth="100%",h.onerror=function(){e({action:"error",source:"video",target:this})}' +
-					(this.autopause ? ',h.onplay=function(){for(var e,t=0;e=y[t];t++)e!=this&&e.pause()}' : '') +
-					';for(var _,p=document.getElementsByTagName("audio"),w=0;_=p[w];w++)_.onerror=function(){e({action:"error",source:"audio",target:this})};' +
-					(this.autoscroll ? 'for(var T,E=document.getElementsByTagName("table"),B=0;T=E[B];B++){var N=document.createElement("div");N.style.overflow="scroll",T.parentNode.replaceChild(N,T),N.appendChild(T)}' : '') +
-					'var x=document.getElementById("parser");clearInterval(window.timer),window.timer=setInterval(function(){i&&clearInterval(window.timer),e({action:"ready",ready:i,height:x.scrollHeight})},350)'
-				)
-				this.nodes = [1];
-				// #endif
-				// #ifdef H5 || MP-360
-				if (!html) {
-					if (this.rtf && !append) this.rtf.parentNode.removeChild(this.rtf);
-					return;
-				}
-				var div = document.createElement('div');
-				if (!append) {
-					if (this.rtf) this.rtf.parentNode.removeChild(this.rtf);
-					this.rtf = div;
-				} else {
-					if (!this.rtf) this.rtf = div;
-					else this.rtf.appendChild(div);
-				}
-				div.innerHTML = this._handleHtml(html, append);
-				for (var styles = this.rtf.getElementsByTagName('style'), i = 0, style; style = styles[i++];) {
-					style.innerHTML = style.innerHTML.replace(/body/g, '#rtf' + this._uid);
-					style.setAttribute('scoped', 'true');
-				}
-				// 懒加载
-				if (!this._observer && this.lazyLoad && IntersectionObserver) {
-					this._observer = new IntersectionObserver(changes => {
-						for (let item, i = 0; item = changes[i++];) {
-							if (item.isIntersecting) {
-								item.target.src = item.target.getAttribute('data-src');
-								item.target.removeAttribute('data-src');
-								this._observer.unobserve(item.target);
-							}
-						}
-					}, {
-						rootMargin: '500px 0px 500px 0px'
-					})
-				}
-				var _ts = this;
-				// 获取标题
-				var title = this.rtf.getElementsByTagName('title');
-				if (title.length && this.autosetTitle)
-					uni.setNavigationBarTitle({
-						title: title[0].innerText
-					})
-				// 填充 domain
-				var fill = target => {
-					var src = target.getAttribute('src');
-					if (this.domain && src) {
-						if (src[0] == '/') {
-							if (src[1] == '/')
-								target.src = (this.domain.includes('://') ? this.domain.split('://')[0] : '') + ':' + src;
-							else target.src = this.domain + src;
-						} else if (!src.includes('://') && src.indexOf('data:') != 0) target.src = this.domain + '/' + src;
-					}
-				}
-				// 图片处理
-				this.imgList.length = 0;
-				var imgs = this.rtf.getElementsByTagName('img');
-				for (let i = 0, j = 0, img; img = imgs[i]; i++) {
-					if (parseInt(img.style.width || img.getAttribute('width')) > windowWidth)
-						img.style.height = 'auto';
-					fill(img);
-					if (!img.hasAttribute('ignore') && img.parentElement.nodeName != 'A') {
-						img.i = j++;
-						_ts.imgList.push(img.getAttribute('original-src') || img.src || img.getAttribute('data-src'));
-						img.onclick = function(e) {
-							e.stopPropagation();
-							var preview = true;
-							this.ignore = () => preview = false;
-							_ts.$emit('imgtap', this);
-							if (preview) {
-								uni.previewImage({
-									current: this.i,
-									urls: _ts.imgList
-								});
-							}
-						}
-					}
-					img.onerror = function() {
-						if (cfg.errorImg)
-							_ts.imgList[this.i] = this.src = cfg.errorImg;
-						_ts.$emit('error', {
-							source: 'img',
-							target: this
-						});
-					}
-					if (_ts.lazyLoad && this._observer && img.src && img.i != 0) {
-						img.setAttribute('data-src', img.src);
-						img.removeAttribute('src');
-						this._observer.observe(img);
-					}
-				}
-				// 链接处理
-				var links = this.rtf.getElementsByTagName('a');
-				for (var link of links) {
-					link.onclick = function(e) {
-						e.stopPropagation();
-						var jump = true,
-							href = this.getAttribute('href');
-						_ts.$emit('linkpress', {
-							href,
-							ignore: () => jump = false
-						});
-						if (jump && href) {
-							if (href[0] == '#') {
-								if (_ts.useAnchor) {
-									_ts.navigateTo({
-										id: href.substr(1)
-									})
-								}
-							} else if (href.indexOf('http') == 0 || href.indexOf('//') == 0)
-								return true;
-							else
-								uni.navigateTo({
-									url: href
-								})
-						}
-						return false;
-					}
-				}
-				// 视频处理
-				var videos = this.rtf.getElementsByTagName('video');
-				_ts.videoContexts = videos;
-				for (let video, i = 0; video = videos[i++];) {
-					fill(video);
-					video.style.maxWidth = '100%';
-					video.onerror = function() {
-						_ts.$emit('error', {
-							source: 'video',
-							target: this
-						});
-					}
-					video.onplay = function() {
-						if (_ts.autopause)
-							for (let item, i = 0; item = _ts.videoContexts[i++];)
-								if (item != this) item.pause();
-					}
-				}
-				// 音频处理
-				var audios = this.rtf.getElementsByTagName('audio');
-				for (var audio of audios) {
-					fill(audio);
-					audio.onerror = function() {
-						_ts.$emit('error', {
-							source: 'audio',
-							target: this
-						});
-					}
-				}
-				// 表格处理
-				if (this.autoscroll) {
-					var tables = this.rtf.getElementsByTagName('table');
-					for (var table of tables) {
-						let div = document.createElement('div');
-						div.style.overflow = 'scroll';
-						table.parentNode.replaceChild(div, table);
-						div.appendChild(table);
-					}
-				}
-				if (!append) this.document.appendChild(this.rtf);
-				this.$nextTick(() => {
-					this.nodes = [1];
-					this.$emit('load');
-				});
-				setTimeout(() => this.showAm = '', 500);
-				// #endif
-				// #ifndef APP-PLUS-NVUE
-				// #ifndef H5 || MP-360
-				var nodes;
-				if (!html) return this.nodes = [];
-				var parser = new Parser(html, this);
-				// 缓存读取
-				if (this.useCache) {
-					var hashVal = hash(html);
-					if (cache[hashVal])
-						nodes = cache[hashVal];
-					else {
-						nodes = parser.parse();
-						cache[hashVal] = nodes;
-					}
-				} else nodes = parser.parse();
-				this.$emit('parse', nodes);
-				if (append) this.nodes = this.nodes.concat(nodes);
-				else this.nodes = nodes;
-				if (nodes.length && nodes.title && this.autosetTitle)
-					uni.setNavigationBarTitle({
-						title: nodes.title
-					})
-				if (this.imgList) this.imgList.length = 0;
-				this.videoContexts = [];
-				this.$nextTick(() => {
-					(function f(cs) {
-						for (var i = cs.length; i--;) {
-							if (cs[i].top) {
-								cs[i].controls = [];
-								cs[i].init();
-								f(cs[i].$children);
-							}
-						}
-					})(this.$children)
-					this.$emit('load');
-				})
-				// #endif
-				var height;
-				clearInterval(this._timer);
-				this._timer = setInterval(() => {
-					// #ifdef H5 || MP-360
-					this.rect = this.rtf.getBoundingClientRect();
-					// #endif
-					// #ifndef H5 || MP-360
-					uni.createSelectorQuery().in(this)
-						.select('#_top').boundingClientRect().exec(res => {
-							if (!res) return;
-							this.rect = res[0];
-							// #endif
-							if (this.rect.height == height) {
-								this.$emit('ready', this.rect)
-								clearInterval(this._timer);
-							}
-							height = this.rect.height;
-							// #ifndef H5 || MP-360
-						});
-					// #endif
-				}, 350);
-				if (this.showWithAnimation && !append) this.showAm = 'animation:_show .5s';
-				// #endif
-			},
-			// 获取文本内容
-			getText(ns = this.nodes) {
-				var txt = '';
-				// #ifdef APP-PLUS-NVUE
-				txt = this._text;
-				// #endif
-				// #ifdef H5 || MP-360
-				txt = this.rtf.innerText;
-				// #endif
-				// #ifndef H5 || APP-PLUS-NVUE || MP-360
-				for (var i = 0, n; n = ns[i++];) {
-					if (n.type == 'text') txt += n.text.replace(/&nbsp;/g, '\u00A0').replace(/&lt;/g, '<').replace(/&gt;/g, '>')
-						.replace(/&amp;/g, '&');
-					else if (n.type == 'br') txt += '\n';
-					else {
-						// 块级标签前后加换行
-						var block = n.name == 'p' || n.name == 'div' || n.name == 'tr' || n.name == 'li' || (n.name[0] == 'h' && n.name[1] >
-							'0' && n.name[1] < '7');
-						if (block && txt && txt[txt.length - 1] != '\n') txt += '\n';
-						if (n.children) txt += this.getText(n.children);
-						if (block && txt[txt.length - 1] != '\n') txt += '\n';
-						else if (n.name == 'td' || n.name == 'th') txt += '\t';
-					}
-				}
-				// #endif
-				return txt;
-			},
-			// 锚点跳转
-			in (obj) {
-				if (obj.page && obj.selector && obj.scrollTop) this._in = obj;
-			},
-			navigateTo(obj) {
-				if (!this.useAnchor) return obj.fail && obj.fail('Anchor is disabled');
-				// #ifdef APP-PLUS-NVUE
-				if (!obj.id)
-					weexDom.scrollToElement(this.$refs.web);
-				else
-					this.$refs.web.evalJs('var pos=document.getElementById("' + obj.id +
-						'");if(pos)post({action:"linkpress",href:"#",offset:pos.offsetTop+' + (obj.offset || 0) + '})');
-				obj.success && obj.success();
-				// #endif
-				// #ifndef APP-PLUS-NVUE
-				var d = ' ';
-				// #ifdef MP-WEIXIN || MP-QQ || MP-TOUTIAO
-				d = '>>>';
-				// #endif
-				var selector = uni.createSelectorQuery().in(this._in ? this._in.page : this).select((this._in ? this._in.selector :
-					'#_top') + (obj.id ? `${d}#${obj.id},${this._in?this._in.selector:'#_top'}${d}.${obj.id}` : '')).boundingClientRect();
-				if (this._in) selector.select(this._in.selector).scrollOffset().select(this._in.selector).boundingClientRect();
-				else selector.selectViewport().scrollOffset();
-				selector.exec(res => {
-					if (!res[0]) return obj.fail && obj.fail('Label not found')
-					var scrollTop = res[1].scrollTop + res[0].top - (res[2] ? res[2].top : 0) + (obj.offset || 0);
-					if (this._in) this._in.page[this._in.scrollTop] = scrollTop;
-					else uni.pageScrollTo({
-						scrollTop,
-						duration: 300
-					})
-					obj.success && obj.success();
-				})
-				// #endif
-			},
-			// 获取视频对象
-			getVideoContext(id) {
-				// #ifndef APP-PLUS-NVUE
-				if (!id) return this.videoContexts;
-				else
-					for (var i = this.videoContexts.length; i--;)
-						if (this.videoContexts[i].id == id) return this.videoContexts[i];
-				// #endif
-			},
-			// #ifdef H5 || APP-PLUS-NVUE || MP-360
-			_handleHtml(html, append) {
-				if (!append) {
-					// 处理 tag-style 和 userAgentStyles
-					var style = '<style>@keyframes _show{0%{opacity:0}100%{opacity:1}}img{max-width:100%}';
-					for (var item in cfg.userAgentStyles)
-						style += `${item}{${cfg.userAgentStyles[item]}}`;
-					for (item in this.tagStyle)
-						style += `${item}{${this.tagStyle[item]}}`;
-					style += '</style>';
-					html = style + html;
-				}
-				// 处理 rpx
-				if (html.includes('rpx'))
-					html = html.replace(/[0-9.]+\s*rpx/g, $ => (parseFloat($) * windowWidth / 750) + 'px');
-				return html;
-			},
-			// #endif
-			// #ifdef APP-PLUS-NVUE
-			_message(e) {
-				// 接收 web-view 消息
-				var d = e.detail.data[0];
-				switch (d.action) {
-					case 'load':
-						this.$emit('load');
-						this.height = d.height;
-						this._text = d.text;
-						break;
-					case 'getTitle':
-						if (this.autosetTitle)
-							uni.setNavigationBarTitle({
-								title: d.title
-							})
-						break;
-					case 'getImgList':
-						this.imgList.length = 0;
-						for (var i = d.imgList.length; i--;)
-							this.imgList.setItem(i, d.imgList[i]);
-						break;
-					case 'preview':
-						var preview = true;
-						d.img.ignore = () => preview = false;
-						this.$emit('imgtap', d.img);
-						if (preview)
-							uni.previewImage({
-								current: d.img.i,
-								urls: this.imgList
-							})
-						break;
-					case 'linkpress':
-						var jump = true,
-							href = d.href;
-						this.$emit('linkpress', {
-							href,
-							ignore: () => jump = false
-						})
-						if (jump && href) {
-							if (href[0] == '#') {
-								if (this.useAnchor)
-									weexDom.scrollToElement(this.$refs.web, {
-										offset: d.offset
-									})
-							} else if (href.includes('://'))
-								plus.runtime.openWeb(href);
-							else
-								uni.navigateTo({
-									url: href
-								})
-						}
-						break;
-					case 'error':
-						if (d.source == 'img' && cfg.errorImg)
-							this.imgList.setItem(d.target.i, cfg.errorImg);
-						this.$emit('error', {
-							source: d.source,
-							target: d.target
-						})
-						break;
-					case 'ready':
-						this.height = d.height;
-						if (d.ready) uni.createSelectorQuery().in(this).select('#_top').boundingClientRect().exec(res => {
-							this.rect = res[0];
-							this.$emit('ready', res[0]);
-						})
-						break;
-					case 'click':
-						this.$emit('click');
-						this.$emit('tap');
-				}
-			},
-			// #endif
-		}
-	}
-</script>
-
-<style>
-	@keyframes _show {
-		0% {
-			opacity: 0;
-		}
-
-		100% {
-			opacity: 1;
-		}
-	}
-
-	/* #ifdef MP-WEIXIN */
-	:host {
-		display: block;
-		overflow: auto;
-		-webkit-overflow-scrolling: touch;
-	}
-
-	/* #endif */
-</style>
diff --git a/uview-ui/components/u-picker/u-picker.vue b/uview-ui/components/u-picker/u-picker.vue
deleted file mode 100644
index 68212a4..0000000
--- a/uview-ui/components/u-picker/u-picker.vue
+++ /dev/null
@@ -1,676 +0,0 @@
-<template>
-	<u-popup :maskCloseAble="maskCloseAble" mode="bottom" :popup="false" v-model="value" length="auto" :safeAreaInsetBottom="safeAreaInsetBottom" @close="close" :z-index="uZIndex">
-		<view class="u-datetime-picker">
-			<view class="u-picker-header" @touchmove.stop.prevent="">
-				<view class="u-btn-picker u-btn-picker--tips" 
-					:style="{ color: cancelColor }" 
-					hover-class="u-opacity" 
-					:hover-stay-time="150" 
-					@tap="getResult('cancel')"
-				>{{cancelText}}</view>
-				<view class="u-picker__title">{{ title }}</view>
-				<view
-					class="u-btn-picker u-btn-picker--primary"
-					:style="{ color: moving ? cancelColor : confirmColor }"
-					hover-class="u-opacity"
-					:hover-stay-time="150"
-					@touchmove.stop=""
-					@tap.stop="getResult('confirm')"
-				>
-					{{confirmText}}
-				</view>
-			</view>
-			<view class="u-picker-body">
-				<picker-view v-if="mode == 'region'" :value="valueArr" @change="change" class="u-picker-view" @pickstart="pickstart" @pickend="pickend">
-					<picker-view-column v-if="!reset && params.province">
-						<view class="u-column-item" v-for="(item, index) in provinces" :key="index">
-							<view class="u-line-1">{{ item.label }}</view>
-						</view>
-					</picker-view-column>
-					<picker-view-column v-if="!reset && params.city">
-						<view class="u-column-item" v-for="(item, index) in citys" :key="index">
-							<view class="u-line-1">{{ item.label }}</view>
-						</view>
-					</picker-view-column>
-					<picker-view-column v-if="!reset && params.area">
-						<view class="u-column-item" v-for="(item, index) in areas" :key="index">
-							<view class="u-line-1">{{ item.label }}</view>
-						</view>
-					</picker-view-column>
-				</picker-view>
-				<picker-view v-else-if="mode == 'time'" :value="valueArr" @change="change" class="u-picker-view" @pickstart="pickstart" @pickend="pickend">
-					<picker-view-column v-if="!reset && params.year">
-						<view class="u-column-item" v-for="(item, index) in years" :key="index">
-							{{ item }}
-							<text class="u-text" v-if="showTimeTag">年</text>
-						</view>
-					</picker-view-column>
-					<picker-view-column v-if="!reset && params.month">
-						<view class="u-column-item" v-for="(item, index) in months" :key="index">
-							{{ formatNumber(item) }}
-							<text class="u-text" v-if="showTimeTag">月</text>
-						</view>
-					</picker-view-column>
-					<picker-view-column v-if="!reset && params.day">
-						<view class="u-column-item" v-for="(item, index) in days" :key="index">
-							{{ formatNumber(item) }}
-							<text class="u-text" v-if="showTimeTag">日</text>
-						</view>
-					</picker-view-column>
-					<picker-view-column v-if="!reset && params.hour">
-						<view class="u-column-item" v-for="(item, index) in hours" :key="index">
-							{{ formatNumber(item) }}
-							<text class="u-text" v-if="showTimeTag">时</text>
-						</view>
-					</picker-view-column>
-					<picker-view-column v-if="!reset && params.minute">
-						<view class="u-column-item" v-for="(item, index) in minutes" :key="index">
-							{{ formatNumber(item) }}
-							<text class="u-text" v-if="showTimeTag">分</text>
-						</view>
-					</picker-view-column>
-					<picker-view-column v-if="!reset && params.second">
-						<view class="u-column-item" v-for="(item, index) in seconds" :key="index">
-							{{ formatNumber(item) }}
-							<text class="u-text" v-if="showTimeTag">秒</text>
-						</view>
-					</picker-view-column>
-				</picker-view>
-				<picker-view v-else-if="mode == 'selector'" :value="valueArr" @change="change" class="u-picker-view" @pickstart="pickstart" @pickend="pickend">
-					<picker-view-column v-if="!reset">
-						<view class="u-column-item" v-for="(item, index) in range" :key="index">
-							<view class="u-line-1">{{ getItemValue(item, 'selector') }}</view>
-						</view>
-					</picker-view-column>
-				</picker-view>
-				<picker-view v-else-if="mode == 'multiSelector'" :value="valueArr" @change="change" class="u-picker-view" @pickstart="pickstart" @pickend="pickend">
-					<picker-view-column v-if="!reset" v-for="(item, index) in range" :key="index">
-						<view class="u-column-item" v-for="(item1, index1) in item" :key="index1">
-							<view class="u-line-1">{{ getItemValue(item1, 'multiSelector') }}</view>
-						</view>
-					</picker-view-column>
-				</picker-view>
-			</view>
-		</view>
-	</u-popup>
-</template>
-
-<script>
-import provinces from '../../libs/util/province.js';
-import citys from '../../libs/util/city.js';
-import areas from '../../libs/util/area.js';
-
-/**
- * picker picker弹出选择器
- * @description 此选择器有两种弹出模式:一是时间模式,可以配置年,日,月,时,分,秒参数 二是地区模式,可以配置省,市,区参数
- * @tutorial https://www.uviewui.com/components/picker.html
- * @property {Object} params 需要显示的参数,见官网说明
- * @property {String} mode 模式选择,region-地区类型,time-时间类型(默认time)
- * @property {String Number} start-year 可选的开始年份,mode=time时有效(默认1950)
- * @property {String Number} end-year 可选的结束年份,mode=time时有效(默认2050)
- * @property {Boolean} safe-area-inset-bottom 是否开启底部安全区适配(默认false)
- * @property {Boolean} show-time-tag 时间模式时,是否显示后面的年月日中文提示
- * @property {String} cancel-color 取消按钮的颜色(默认#606266)
- * @property {String} confirm-color 确认按钮的颜色(默认#2979ff)
- * @property {String} default-time 默认选中的时间,mode=time时有效
- * @property {String} confirm-text 确认按钮的文字
- * @property {String} cancel-text 取消按钮的文字
- * @property {String} default-region 默认选中的地区,中文形式,mode=region时有效
- * @property {String} default-code 默认选中的地区,编号形式,mode=region时有效
- * @property {Boolean} mask-close-able 是否允许通过点击遮罩关闭Picker(默认true)
- * @property {String Number} z-index 弹出时的z-index值(默认1075)
- * @property {Array} default-selector 数组形式,其中每一项表示选择了range对应项中的第几个
- * @property {Array} range 自定义选择的数据,mode=selector或mode=multiSelector时有效
- * @property {String} range-key 当range参数的元素为对象时,指定Object中的哪个key的值作为选择器显示内容
- * @event {Function} confirm 点击确定按钮,返回当前选择的值
- * @event {Function} cancel 点击取消按钮,返回当前选择的值
- * @example <u-picker v-model="show" mode="time"></u-picker>
- */
-export default {
-	name: 'u-picker',
-	props: {
-		// picker中需要显示的参数
-		params: {
-			type: Object,
-			default() {
-				return {
-					year: true,
-					month: true,
-					day: true,
-					hour: false,
-					minute: false,
-					second: false,
-					province: true,
-					city: true,
-					area: true,
-					timestamp: true,
-				};
-			}
-		},
-		// 当mode=selector或者mode=multiSelector时,提供的数组
-		range: {
-			type: Array,
-			default() {
-				return [];
-			}
-		},
-		// 当mode=selector或者mode=multiSelector时,提供的默认选中的下标
-		defaultSelector: {
-			type: Array,
-			default() {
-				return [0];
-			}
-		},
-		// 当 range 是一个 Array<Object> 时,通过 range-key 来指定 Object 中 key 的值作为选择器显示内容
-		rangeKey: {
-			type: String,
-			default: ''
-		},
-		// 模式选择,region-地区类型,time-时间类型,selector-单列模式,multiSelector-多列模式
-		mode: {
-			type: String,
-			default: 'time'
-		},
-		// 年份开始时间
-		startYear: {
-			type: [String, Number],
-			default: 1950
-		},
-		// 年份结束时间
-		endYear: {
-			type: [String, Number],
-			default: 2050
-		},
-		// "取消"按钮的颜色
-		cancelColor: {
-			type: String,
-			default: '#606266'
-		},
-		// "确定"按钮的颜色
-		confirmColor: {
-			type: String,
-			default: '#2979ff'
-		},
-		// 默认显示的时间,2025-07-02 || 2025-07-02 13:01:00 || 2025/07/02
-		defaultTime: {
-			type: String,
-			default: ''
-		},
-		// 默认显示的地区,可传类似["河北省", "秦皇岛市", "北戴河区"]
-		defaultRegion: {
-			type: Array,
-			default() {
-				return [];
-			}
-		},
-		// 时间模式时,是否显示后面的年月日中文提示
-		showTimeTag: {
-			type: Boolean,
-			default: true
-		},
-		// 默认显示地区的编码,defaultRegion和areaCode同时存在,areaCode优先,可传类似["13", "1303", "130304"]
-		areaCode: {
-			type: Array,
-			default() {
-				return [];
-			}
-		},
-		safeAreaInsetBottom: {
-			type: Boolean,
-			default: false
-		},
-		// 是否允许通过点击遮罩关闭Picker
-		maskCloseAble: {
-			type: Boolean,
-			default: true
-		},
-		// 通过双向绑定控制组件的弹出与收起
-		value: {
-			type: Boolean,
-			default: false
-		},
-		// 弹出的z-index值
-		zIndex: {
-			type: [String, Number],
-			default: 0
-		},
-		// 顶部标题
-		title: {
-			type: String,
-			default: ''
-		},
-		// 取消按钮的文字
-		cancelText: {
-			type: String,
-			default: '取消'
-		},
-		// 确认按钮的文字
-		confirmText: {
-			type: String,
-			default: '确认'
-		}
-	},
-	data() {
-		return {
-			years: [],
-			months: [],
-			days: [],
-			hours: [],
-			minutes: [],
-			seconds: [],
-			year: 0,
-			month: 0,
-			day: 0,
-			hour: 0,
-			minute: 0,
-			second: 0,
-			reset: false,
-			startDate: '',
-			endDate: '',
-			valueArr: [],
-			provinces: provinces,
-			citys: citys[0],
-			areas: areas[0][0],
-			province: 0,
-			city: 0,
-			area: 0,
-			moving: false // 列是否还在滑动中,微信小程序如果在滑动中就点确定,结果可能不准确
-		};
-	},
-	mounted() {
-		this.init();
-	},
-	computed: {
-		propsChange() {
-			// 引用这几个变量,是为了监听其变化
-			return `${this.mode}-${this.defaultTime}-${this.startYear}-${this.endYear}-${this.defaultRegion}-${this.areaCode}`;
-		},
-		regionChange() {
-			// 引用这几个变量,是为了监听其变化
-			return `${this.province}-${this.city}`;
-		},
-		yearAndMonth() {
-			return `${this.year}-${this.month}`;
-		},
-		uZIndex() {
-			// 如果用户有传递z-index值,优先使用
-			return this.zIndex ? this.zIndex : this.$u.zIndex.popup;
-		}
-	},
-	watch: {
-		propsChange() {
-			this.reset = true;
-			setTimeout(() => this.init(), 10);
-		},
-		// 如果地区发生变化,为了让picker联动起来,必须重置this.citys和this.areas
-		regionChange(val) {
-			this.citys = citys[this.province];
-			this.areas = areas[this.province][this.city];
-		},
-		// watch监听月份的变化,实时变更日的天数,因为不同月份,天数不一样
-		// 一个月可能有30,31天,甚至闰年2月的29天,平年2月28天
-		yearAndMonth(val) {
-			if (this.params.year) this.setDays();
-		},
-		// 微信和QQ小程序由于一些奇怪的原因(故同时对所有平台均初始化一遍),需要重新初始化才能显示正确的值
-		value(n) {
-			if (n) {
-				this.reset = true;
-				setTimeout(() => this.init(), 10);
-			}
-		}
-	},
-	methods: {
-		// 标识滑动开始,只有微信小程序才有这样的事件
-		pickstart() {
-			// #ifdef MP-WEIXIN
-			this.moving = true;
-			// #endif
-		},
-		// 标识滑动结束
-		pickend() {
-			// #ifdef MP-WEIXIN
-			this.moving = false;
-			// #endif
-		},
-		// 对单列和多列形式的判断是否有传入变量的情况
-		getItemValue(item, mode) {
-			// 目前(2020-05-25)uni-app对微信小程序编译有错误,导致v-if为false中的内容也执行,错误导致
-			// 单列模式或者多列模式中的getItemValue同时被执行,故在这里再加一层判断
-			if (this.mode == mode) {
-				return typeof item == 'object' ? item[this.rangeKey] : item;
-			}
-		},
-		// 小于10前面补0,用于月份,日期,时分秒等
-		formatNumber(num) {
-			return +num < 10 ? '0' + num : String(num);
-		},
-		// 生成递进的数组
-		generateArray: function(start, end) {
-			// 转为数值格式,否则用户给end-year等传递字符串值时,下面的end+1会导致字符串拼接,而不是相加
-			start = Number(start);
-			end = Number(end);
-			end = end > start ? end : start;
-			// 生成数组,获取其中的索引,并剪出来
-			return [...Array(end + 1).keys()].slice(start);
-		},
-		getIndex: function(arr, val) {
-			let index = arr.indexOf(val);
-			// 如果index为-1(即找不到index值),~(-1)=-(-1)-1=0,导致条件不成立
-			return ~index ? index : 0;
-		},
-		//日期时间处理
-		initTimeValue() {
-			// 格式化时间,在IE浏览器(uni不存在此情况),无法识别日期间的"-"间隔符号
-			let fdate = this.defaultTime.replace(/\-/g, '/');
-			fdate = fdate && fdate.indexOf('/') == -1 ? `2020/01/01 ${fdate}` : fdate;
-			let time = null;
-			if (fdate) time = new Date(fdate);
-			else time = new Date();
-			// 获取年日月时分秒
-			this.year = time.getFullYear();
-			this.month = Number(time.getMonth()) + 1;
-			this.day = time.getDate();
-			this.hour = time.getHours();
-			this.minute = time.getMinutes();
-			this.second = time.getSeconds();
-		},
-		init() {
-			this.valueArr = [];
-			this.reset = false;
-			if (this.mode == 'time') {
-				this.initTimeValue();
-				if (this.params.year) {
-					this.valueArr.push(0);
-					this.setYears();
-				}
-				if (this.params.month) {
-					this.valueArr.push(0);
-					this.setMonths();
-				}
-				if (this.params.day) {
-					this.valueArr.push(0);
-					this.setDays();
-				}
-				if (this.params.hour) {
-					this.valueArr.push(0);
-					this.setHours();
-				}
-				if (this.params.minute) {
-					this.valueArr.push(0);
-					this.setMinutes();
-				}
-				if (this.params.second) {
-					this.valueArr.push(0);
-					this.setSeconds();
-				}
-			} else if (this.mode == 'region') {
-				if (this.params.province) {
-					this.valueArr.push(0);
-					this.setProvinces();
-				}
-				if (this.params.city) {
-					this.valueArr.push(0);
-					this.setCitys();
-				}
-				if (this.params.area) {
-					this.valueArr.push(0);
-					this.setAreas();
-				}
-			} else if (this.mode == 'selector') {
-				this.valueArr = this.defaultSelector;
-			} else if (this.mode == 'multiSelector') {
-				this.valueArr = this.defaultSelector;
-				this.multiSelectorValue = this.defaultSelector;
-			}
-			this.$forceUpdate();
-		},
-		// 设置picker的某一列值
-		setYears() {
-			// 获取年份集合
-			this.years = this.generateArray(this.startYear, this.endYear);
-			// 设置this.valueArr某一项的值,是为了让picker预选中某一个值
-			this.valueArr.splice(this.valueArr.length - 1, 1, this.getIndex(this.years, this.year));
-		},
-		setMonths() {
-			this.months = this.generateArray(1, 12);
-			this.valueArr.splice(this.valueArr.length - 1, 1, this.getIndex(this.months, this.month));
-		},
-		setDays() {
-			let totalDays = new Date(this.year, this.month, 0).getDate();
-			this.days = this.generateArray(1, totalDays);
-			let index = 0;
-			// 这里不能使用类似setMonths()中的this.valueArr.splice(this.valueArr.length - 1, xxx)做法
-			// 因为this.month和this.year变化时,会触发watch中的this.setDays(),导致this.valueArr.length计算有误
-			if (this.params.year && this.params.month) index = 2;
-			else if (this.params.month) index = 1;
-			else if (this.params.year) index = 1;
-			else index = 0;
-			// 当月份变化时,会导致日期的天数也会变化,如果原来选的天数大于变化后的天数,则重置为变化后的最大值
-			// 比如原来选中3月31日,调整为2月后,日期变为最大29,这时如果day值继续为31显然不合理,于是将其置为29(picker-column从1开始)
-			if(this.day > this.days.length) this.day = this.days.length;
-			this.valueArr.splice(index, 1, this.getIndex(this.days, this.day));
-		},
-		setHours() {
-			this.hours = this.generateArray(0, 23);
-			this.valueArr.splice(this.valueArr.length - 1, 1, this.getIndex(this.hours, this.hour));
-		},
-		setMinutes() {
-			this.minutes = this.generateArray(0, 59);
-			this.valueArr.splice(this.valueArr.length - 1, 1, this.getIndex(this.minutes, this.minute));
-		},
-		setSeconds() {
-			this.seconds = this.generateArray(0, 59);
-			this.valueArr.splice(this.valueArr.length - 1, 1, this.getIndex(this.seconds, this.second));
-		},
-		setProvinces() {
-			// 判断是否需要province参数
-			if (!this.params.province) return;
-			let tmp = '';
-			let useCode = false;
-			// 如果同时配置了defaultRegion和areaCode,优先使用areaCode参数
-			if (this.areaCode.length) {
-				tmp = this.areaCode[0];
-				useCode = true;
-			} else if (this.defaultRegion.length) tmp = this.defaultRegion[0];
-			else tmp = 0;
-			// 历遍省份数组匹配
-			provinces.map((v, k) => {
-				if (useCode ? v.value == tmp : v.label == tmp) {
-					tmp = k;
-				}
-			});
-			this.province = tmp;
-			this.provinces = provinces;
-			// 设置默认省份的值
-			this.valueArr.splice(0, 1, this.province);
-		},
-		setCitys() {
-			if (!this.params.city) return;
-			let tmp = '';
-			let useCode = false;
-			if (this.areaCode.length) {
-				tmp = this.areaCode[1];
-				useCode = true;
-			} else if (this.defaultRegion.length) tmp = this.defaultRegion[1];
-			else tmp = 0;
-			citys[this.province].map((v, k) => {
-				if (useCode ? v.value == tmp : v.label == tmp) {
-					tmp = k;
-				}
-			});
-			this.city = tmp;
-			this.citys = citys[this.province];
-			this.valueArr.splice(1, 1, this.city);
-		},
-		setAreas() {
-			if (!this.params.area) return;
-			let tmp = '';
-			let useCode = false;
-			if (this.areaCode.length) {
-				tmp = this.areaCode[2];
-				useCode = true;
-			} else if (this.defaultRegion.length) tmp = this.defaultRegion[2];
-			else tmp = 0;
-			areas[this.province][this.city].map((v, k) => {
-				if (useCode ? v.value == tmp : v.label == tmp) {
-					tmp = k;
-				}
-			});
-			this.area = tmp;
-			this.areas = areas[this.province][this.city];
-			this.valueArr.splice(2, 1, this.area);
-		},
-		close() {
-			this.$emit('input', false);
-		},
-		// 用户更改picker的列选项
-		change(e) {
-			this.valueArr = e.detail.value;
-			let i = 0;
-			if (this.mode == 'time') {
-				// 这里使用i++,是因为this.valueArr数组的长度是不确定长度的,它根据this.params的值来配置长度
-				// 进入if规则,i会加1,保证了能获取准确的值
-				if (this.params.year) this.year = this.years[this.valueArr[i++]];
-				if (this.params.month) this.month = this.months[this.valueArr[i++]];
-				if (this.params.day) this.day = this.days[this.valueArr[i++]];
-				if (this.params.hour) this.hour = this.hours[this.valueArr[i++]];
-				if (this.params.minute) this.minute = this.minutes[this.valueArr[i++]];
-				if (this.params.second) this.second = this.seconds[this.valueArr[i++]];
-			} else if (this.mode == 'region') {
-				if (this.params.province) this.province = this.valueArr[i++];
-				if (this.params.city) this.city = this.valueArr[i++];
-				if (this.params.area) this.area = this.valueArr[i++];
-			} else if (this.mode == 'multiSelector') {
-				let index = null;
-				// 对比前后两个数组,寻找变更的是哪一列,如果某一个元素不同,即可判定该列发生了变化
-				this.defaultSelector.map((val, idx) => {
-					if (val != e.detail.value[idx]) index = idx;
-				});
-				// 为了让用户对多列变化时,对动态设置其他列的变更
-				if (index != null) {
-					this.$emit('columnchange', {
-						column: index,
-						index: e.detail.value[index]
-					});
-				}
-			}
-		},
-		// 用户点击确定按钮
-		getResult(event = null) {
-			// #ifdef MP-WEIXIN
-			if (this.moving) return;
-			// #endif
-			let result = {};
-			// 只返回用户在this.params中配置了为true的字段
-			if (this.mode == 'time') {
-				if (this.params.year) result.year = this.formatNumber(this.year || 0);
-				if (this.params.month) result.month = this.formatNumber(this.month || 0);
-				if (this.params.day) result.day = this.formatNumber(this.day || 0);
-				if (this.params.hour) result.hour = this.formatNumber(this.hour || 0);
-				if (this.params.minute) result.minute = this.formatNumber(this.minute || 0);
-				if (this.params.second) result.second = this.formatNumber(this.second || 0);
-				if (this.params.timestamp) result.timestamp = this.getTimestamp();
-			} else if (this.mode == 'region') {
-				if (this.params.province) result.province = provinces[this.province];
-				if (this.params.city) result.city = citys[this.province][this.city];
-				if (this.params.area) result.area = areas[this.province][this.city][this.area];
-			} else if (this.mode == 'selector') {
-				result = this.valueArr;
-			} else if (this.mode == 'multiSelector') {
-				result = this.valueArr;
-			}
-			if (event) this.$emit(event, result);
-			this.close();
-		},
-		// 获取时间戳
-		getTimestamp() {
-			// yyyy-mm-dd为安卓写法,不支持iOS,需要使用"/"分隔,才能二者兼容
-			let time = this.year + '/' + this.month + '/' + this.day + ' ' + this.hour + ':' + this.minute + ':' + this.second;
-			return new Date(time).getTime() / 1000;
-		}
-	}
-};
-</script>
-
-<style lang="scss" scoped>
-@import '../../libs/css/style.components.scss';
-
-.u-datetime-picker {
-	position: relative;
-	z-index: 999;
-}
-
-.u-picker-view {
-	height: 100%;
-	box-sizing: border-box;
-}
-
-.u-picker-header {
-	width: 100%;
-	height: 90rpx;
-	padding: 0 40rpx;
-	@include vue-flex;
-	justify-content: space-between;
-	align-items: center;
-	box-sizing: border-box;
-	font-size: 30rpx;
-	background: #fff;
-	position: relative;
-}
-
-.u-picker-header::after {
-	content: '';
-	position: absolute;
-	border-bottom: 1rpx solid #eaeef1;
-	-webkit-transform: scaleY(0.5);
-	transform: scaleY(0.5);
-	bottom: 0;
-	right: 0;
-	left: 0;
-}
-
-.u-picker__title {
-	color: $u-content-color;
-}
-
-.u-picker-body {
-	width: 100%;
-	height: 500rpx;
-	overflow: hidden;
-	background-color: #fff;
-}
-
-.u-column-item {
-	@include vue-flex;
-	align-items: center;
-	justify-content: center;
-	font-size: 32rpx;
-	color: $u-main-color;
-	padding: 0 8rpx;
-}
-
-.u-text {
-	font-size: 24rpx;
-	padding-left: 8rpx;
-}
-
-.u-btn-picker {
-	padding: 16rpx;
-	box-sizing: border-box;
-	text-align: center;
-	text-decoration: none;
-}
-
-.u-opacity {
-	opacity: 0.5;
-}
-
-.u-btn-picker--primary {
-	color: $u-type-primary;
-}
-
-.u-btn-picker--tips {
-	color: $u-tips-color;
-}
-</style>
diff --git a/uview-ui/components/u-popup/u-popup.vue b/uview-ui/components/u-popup/u-popup.vue
deleted file mode 100644
index 69c0ec8..0000000
--- a/uview-ui/components/u-popup/u-popup.vue
+++ /dev/null
@@ -1,456 +0,0 @@
-<template>
-	<view v-if="visibleSync" :style="[customStyle, {
-		zIndex: uZindex - 1
-	}]" class="u-drawer" hover-stop-propagation>
-		<u-mask :duration="duration" :custom-style="maskCustomStyle" :maskClickAble="maskCloseAble" :z-index="uZindex - 2" :show="showDrawer && mask" @click="maskClick"></u-mask>
-		<view
-			class="u-drawer-content"
-			@tap="modeCenterClose(mode)"
-			:class="[
-				safeAreaInsetBottom ? 'safe-area-inset-bottom' : '',
-				'u-drawer-' + mode,
-				showDrawer ? 'u-drawer-content-visible' : '',
-				zoom && mode == 'center' ? 'u-animation-zoom' : ''
-			]"
-			@touchmove.stop.prevent
-			@tap.stop.prevent
-			:style="[style]"
-		>
-			<view class="u-mode-center-box" @tap.stop.prevent @touchmove.stop.prevent v-if="mode == 'center'" :style="[centerStyle]">
-				<u-icon
-					@click="close"
-					v-if="closeable"
-					class="u-close"
-					:class="['u-close--' + closeIconPos]"
-					:name="closeIcon"
-					:color="closeIconColor"
-					:size="closeIconSize"
-				></u-icon>
-				<scroll-view class="u-drawer__scroll-view" scroll-y="true">
-					<slot />
-				</scroll-view>
-			</view>
-			<scroll-view class="u-drawer__scroll-view" scroll-y="true" v-else>
-				<slot />
-			</scroll-view>
-			<view @tap="close" class="u-close" :class="['u-close--' + closeIconPos]">
-				<u-icon
-					v-if="mode != 'center' && closeable"
-					:name="closeIcon"
-					:color="closeIconColor"
-					:size="closeIconSize"
-				></u-icon>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-/**
- * popup 弹窗
- * @description 弹出层容器,用于展示弹窗、信息提示等内容,支持上、下、左、右和中部弹出。组件只提供容器,内部内容由用户自定义
- * @tutorial https://www.uviewui.com/components/popup.html
- * @property {String} mode 弹出方向(默认left)
- * @property {Boolean} mask 是否显示遮罩(默认true)
- * @property {Stringr | Number} length mode=left | 见官网说明(默认auto)
- * @property {Boolean} zoom 是否开启缩放动画,只在mode为center时有效(默认true)
- * @property {Boolean} safe-area-inset-bottom 是否开启底部安全区适配(默认false)
- * @property {Boolean} mask-close-able 点击遮罩是否可以关闭弹出层(默认true)
- * @property {Object} custom-style 用户自定义样式
- * @property {Stringr | Number} negative-top 中部弹出时,往上偏移的值
- * @property {Numberr | String} border-radius 弹窗圆角值(默认0)
- * @property {Numberr | String} z-index 弹出内容的z-index值(默认1075)
- * @property {Boolean} closeable 是否显示关闭图标(默认false)
- * @property {String} close-icon 关闭图标的名称,只能uView的内置图标
- * @property {String} close-icon-pos 自定义关闭图标位置(默认top-right)
- * @property {String} close-icon-color 关闭图标的颜色(默认#909399)
- * @property {Number | String} close-icon-size 关闭图标的大小,单位rpx(默认30)
- * @event {Function} open 弹出层打开
- * @event {Function} close 弹出层收起
- * @example <u-popup v-model="show"><view>出淤泥而不染,濯清涟而不妖</view></u-popup>
- */
-export default {
-	name: 'u-popup',
-	props: {
-		/**
-		 * 显示状态
-		 */
-		show: {
-			type: Boolean,
-			default: false
-		},
-		/**
-		 * 弹出方向,left|right|top|bottom|center
-		 */
-		mode: {
-			type: String,
-			default: 'left'
-		},
-		/**
-		 * 是否显示遮罩
-		 */
-		mask: {
-			type: Boolean,
-			default: true
-		},
-		// 抽屉的宽度(mode=left|right),或者高度(mode=top|bottom),单位rpx,或者"auto"
-		// 或者百分比"50%",表示由内容撑开高度或者宽度
-		length: {
-			type: [Number, String],
-			default: 'auto'
-		},
-		// 是否开启缩放动画,只在mode=center时有效
-		zoom: {
-			type: Boolean,
-			default: true
-		},
-		// 是否开启底部安全区适配,开启的话,会在iPhoneX机型底部添加一定的内边距
-		safeAreaInsetBottom: {
-			type: Boolean,
-			default: false
-		},
-		// 是否可以通过点击遮罩进行关闭
-		maskCloseAble: {
-			type: Boolean,
-			default: true
-		},
-		// 用户自定义样式
-		customStyle: {
-			type: Object,
-			default() {
-				return {};
-			}
-		},
-		value: {
-			type: Boolean,
-			default: false
-		},
-		// 此为内部参数,不在文档对外使用,为了解决Picker和keyboard等融合了弹窗的组件
-		// 对v-model双向绑定多层调用造成报错不能修改props值的问题
-		popup: {
-			type: Boolean,
-			default: true
-		},
-		// 显示显示弹窗的圆角,单位rpx
-		borderRadius: {
-			type: [Number, String],
-			default: 0
-		},
-		zIndex: {
-			type: [Number, String],
-			default: ''
-		},
-		// 是否显示关闭图标
-		closeable: {
-			type: Boolean,
-			default: false
-		},
-		// 关闭图标的名称,只能uView的内置图标
-		closeIcon: {
-			type: String,
-			default: 'close'
-		},
-		// 自定义关闭图标位置,top-left为左上角,top-right为右上角,bottom-left为左下角,bottom-right为右下角
-		closeIconPos: {
-			type: String,
-			default: 'top-right'
-		},
-		// 关闭图标的颜色
-		closeIconColor: {
-			type: String,
-			default: '#909399'
-		},
-		// 关闭图标的大小,单位rpx
-		closeIconSize: {
-			type: [String, Number],
-			default: '30'
-		},
-		// 宽度,只对左,右,中部弹出时起作用,单位rpx,或者"auto"
-		// 或者百分比"50%",表示由内容撑开高度或者宽度,优先级高于length参数
-		width: {
-			type: String,
-			default: ''
-		},
-		// 高度,只对上,下,中部弹出时起作用,单位rpx,或者"auto"
-		// 或者百分比"50%",表示由内容撑开高度或者宽度,优先级高于length参数
-		height: {
-			type: String,
-			default: ''
-		},
-		// 给一个负的margin-top,往上偏移,避免和键盘重合的情况,仅在mode=center时有效
-		negativeTop: {
-			type: [String, Number],
-			default: 0
-		},
-		// 遮罩的样式,一般用于修改遮罩的透明度
-		maskCustomStyle: {
-			type: Object,
-			default() {
-				return {}
-			}
-		},
-		// 遮罩打开或收起的动画过渡时间,单位ms
-		duration: {
-			type: [String, Number],
-			default: 250
-		}
-	},
-	data() {
-		return {
-			visibleSync: false,
-			showDrawer: false,
-			timer: null,
-			closeFromInner: false, // value的值改变,是发生在内部还是外部
-		};
-	},
-	computed: {
-		// 根据mode的位置,设定其弹窗的宽度(mode = left|right),或者高度(mode = top|bottom)
-		style() {
-			let style = {};
-			// 如果是左边或者上边弹出时,需要给translate设置为负值,用于隐藏
-			if (this.mode == 'left' || this.mode == 'right') {
-				style = {
-					width: this.width ? this.getUnitValue(this.width) : this.getUnitValue(this.length),
-					height: '100%',
-					transform: `translate3D(${this.mode == 'left' ? '-100%' : '100%'},0px,0px)`
-				};
-			} else if (this.mode == 'top' || this.mode == 'bottom') {
-				style = {
-					width: '100%',
-					height: this.height ? this.getUnitValue(this.height) : this.getUnitValue(this.length),
-					transform: `translate3D(0px,${this.mode == 'top' ? '-100%' : '100%'},0px)`
-				};
-			}
-			style.zIndex = this.uZindex;
-			// 如果用户设置了borderRadius值,添加弹窗的圆角
-			if (this.borderRadius) {
-				switch (this.mode) {
-					case 'left':
-						style.borderRadius = `0 ${this.borderRadius}rpx ${this.borderRadius}rpx 0`;
-						break;
-					case 'top':
-						style.borderRadius = `0 0 ${this.borderRadius}rpx ${this.borderRadius}rpx`;
-						break;
-					case 'right':
-						style.borderRadius = `${this.borderRadius}rpx 0 0 ${this.borderRadius}rpx`;
-						break;
-					case 'bottom':
-						style.borderRadius = `${this.borderRadius}rpx ${this.borderRadius}rpx 0 0`;
-						break;
-					default:
-				}
-				// 不加可能圆角无效
-				style.overflow = 'hidden';
-			}
-			if(this.duration) style.transition = `all ${this.duration / 1000}s linear`;
-			return style;
-		},
-		// 中部弹窗的特有样式
-		centerStyle() {
-			let style = {};
-			style.width = this.width ? this.getUnitValue(this.width) : this.getUnitValue(this.length);
-			// 中部弹出的模式,如果没有设置高度,就用auto值,由内容撑开高度
-			style.height = this.height ? this.getUnitValue(this.height) : 'auto';
-			style.zIndex = this.uZindex;
-			style.marginTop = `-${this.$u.addUnit(this.negativeTop)}`;
-			if (this.borderRadius) {
-				style.borderRadius = `${this.borderRadius}rpx`;
-				// 不加可能圆角无效
-				style.overflow = 'hidden';
-			}
-			return style;
-		},
-		// 计算整理后的z-index值
-		uZindex() {
-			return this.zIndex ? this.zIndex : this.$u.zIndex.popup;
-		}
-	},
-	watch: {
-		value(val) {
-			if (val) {
-				this.open();
-			} else if(!this.closeFromInner) {
-				this.close();
-			}
-			this.closeFromInner = false;
-		}
-	},
-	mounted() {
-		// 组件渲染完成时,检查value是否为true,如果是,弹出popup
-		this.value && this.open();
-	},
-    methods: {
-		// 判断传入的值,是否带有单位,如果没有,就默认用rpx单位
-		getUnitValue(val) {
-			if(/(%|px|rpx|auto)$/.test(val)) return val;
-			else return val + 'rpx'
-		},
-		// 遮罩被点击
-		maskClick() {
-			this.close();
-		},
-		close() {
-			// 标记关闭是内部发生的,否则修改了value值,导致watch中对value检测,导致再执行一遍close
-			// 造成@close事件触发两次
-			this.closeFromInner = true;
-			this.change('showDrawer', 'visibleSync', false);
-		},
-		// 中部弹出时,需要.u-drawer-content将居中内容,此元素会铺满屏幕,点击需要关闭弹窗
-		// 让其只在mode=center时起作用
-		modeCenterClose(mode) {
-			if (mode != 'center' || !this.maskCloseAble) return;
-			this.close();
-		},
-		open() {
-			this.change('visibleSync', 'showDrawer', true);
-		},
-		// 此处的原理是,关闭时先通过动画隐藏弹窗和遮罩,再移除整个组件
-		// 打开时,先渲染组件,延时一定时间再让遮罩和弹窗的动画起作用
-		change(param1, param2, status) {
-			// 如果this.popup为false,意味着为picker,actionsheet等组件调用了popup组件
-			if (this.popup == true) {
-				this.$emit('input', status);
-			}
-			this[param1] = status;
-			if(status) {
-				// #ifdef H5 || MP
-				this.timer = setTimeout(() => {
-					this[param2] = status;
-					this.$emit(status ? 'open' : 'close');
-				}, 50);
-				// #endif
-				// #ifndef H5 || MP
-				this.$nextTick(() => {
-					this[param2] = status;
-					this.$emit(status ? 'open' : 'close');
-				})
-				// #endif
-			} else {
-				this.timer = setTimeout(() => {
-					this[param2] = status;
-					this.$emit(status ? 'open' : 'close');
-				}, this.duration);
-			}
-		}
-	}
-};
-</script>
-
-<style scoped lang="scss">
-@import "../../libs/css/style.components.scss";
-
-.u-drawer {
-	/* #ifndef APP-NVUE */
-	display: block;
-	/* #endif */
-	position: fixed;
-	top: 0;
-	left: 0;
-	right: 0;
-	bottom: 0;
-	overflow: hidden;
-}
-
-.u-drawer-content {
-	/* #ifndef APP-NVUE */
-	display: block;
-	/* #endif */
-	position: absolute;
-	z-index: 1003;
-	transition: all 0.25s linear;
-}
-
-.u-drawer__scroll-view {
-	width: 100%;
-	height: 100%;
-}
-
-.u-drawer-left {
-	top: 0;
-	bottom: 0;
-	left: 0;
-	background-color: #ffffff;
-}
-
-.u-drawer-right {
-	right: 0;
-	top: 0;
-	bottom: 0;
-	background-color: #ffffff;
-}
-
-.u-drawer-top {
-	top: 0;
-	left: 0;
-	right: 0;
-	background-color: #ffffff;
-}
-
-.u-drawer-bottom {
-	bottom: 0;
-	left: 0;
-	right: 0;
-	background-color: #ffffff;
-}
-
-.u-drawer-center {
-	@include vue-flex;
-	flex-direction: column;
-	bottom: 0;
-	left: 0;
-	right: 0;
-	top: 0;
-	justify-content: center;
-	align-items: center;
-	opacity: 0;
-	z-index: 99999;
-}
-
-.u-mode-center-box {
-	min-width: 100rpx;
-	min-height: 100rpx;
-	/* #ifndef APP-NVUE */
-	display: block;
-	/* #endif */
-	position: relative;
-	background-color: #ffffff;
-}
-
-.u-drawer-content-visible.u-drawer-center {
-	transform: scale(1);
-	opacity: 1;
-}
-
-.u-animation-zoom {
-	transform: scale(1.15);
-}
-
-.u-drawer-content-visible {
-	transform: translate3D(0px, 0px, 0px) !important;
-}
-
-.u-close {
-	position: absolute;
-	z-index: 3;
-}
-
-.u-close--top-left {
-	top: 30rpx;
-	left: 30rpx;
-}
-
-.u-close--top-right {
-	top: 30rpx;
-	right: 30rpx;
-}
-
-.u-close--bottom-left {
-	bottom: 30rpx;
-	left: 30rpx;
-}
-
-.u-close--bottom-right {
-	right: 30rpx;
-	bottom: 30rpx;
-}
-</style>
diff --git a/uview-ui/components/u-radio-group/u-radio-group.vue b/uview-ui/components/u-radio-group/u-radio-group.vue
deleted file mode 100644
index 2172eb2..0000000
--- a/uview-ui/components/u-radio-group/u-radio-group.vue
+++ /dev/null
@@ -1,128 +0,0 @@
-<template>
-	<view class="u-radio-group u-clearfix">
-		<slot></slot>
-	</view>
-</template>
-
-<script>
-	import Emitter from '../../libs/util/emitter.js';
-	/**
-	 * radioRroup 单选框父组件
-	 * @description 单选框用于有一个选择,用户只能选择其中一个的场景。搭配u-radio使用
-	 * @tutorial https://www.uviewui.com/components/radio.html
-	 * @property {Boolean} disabled 是否禁用所有radio(默认false)
-	 * @property {String Number} size 组件整体的大小,单位rpx(默认40)
-	 * @property {String} active-color 选中时的颜色,应用到所有子Radio组件(默认#2979ff)
-	 * @property {String Number} icon-size 图标大小,单位rpx(默认20)
-	 * @property {String} shape 外观形状,shape-方形,circle-圆形(默认circle)
-	 * @property {Boolean} label-disabled 是否禁止点击文本操作checkbox(默认false)
-	 * @property {String} width 宽度,需带单位
-	 * @property {Boolean} wrap 是否每个radio都换行(默认false)
-	 * @event {Function} change 任一个radio状态发生变化时触发
-	 * @example <u-radio-group v-model="value"></u-radio-group>
-	 */
-	export default {
-		name: "u-radio-group",
-		mixins: [Emitter],
-		props: {
-			// 是否禁用所有单选框
-			disabled: {
-				type: Boolean,
-				default: false
-			},
-			// 匹配某一个radio组件,如果某个radio的name值等于此值,那么这个radio就被会选中
-			value: {
-				type: [String, Number],
-				default: ''
-			},
-			// 选中状态下的颜色
-			activeColor: {
-				type: String,
-				default: '#2979ff'
-			},
-			// 组件的整体大小
-			size: {
-				type: [String, Number],
-				default: 34
-			},
-			// 是否禁止点击提示语选中复选框
-			labelDisabled: {
-				type: Boolean,
-				default: false
-			},
-			// 形状,square为方形,circle为原型
-			shape: {
-				type: String,
-				default: 'circle'
-			},
-			// 图标的大小,单位rpx
-			iconSize: {
-				type: [String, Number],
-				default: 20
-			},
-			// 每个checkbox占u-checkbox-group的宽度
-			width: {
-				type: [String, Number],
-				default: 'auto'
-			},
-			// 是否每个checkbox都换行
-			wrap: {
-				type: Boolean,
-				default: false
-			}
-		},
-		created() {
-			// 如果将children定义在data中,在微信小程序会造成循环引用而报错
-			this.children = [];
-		},
-		watch: {
-			// 当父组件需要子组件需要共享的参数发生了变化,手动通知子组件
-			parentData() {
-				if(this.children.length) {
-					this.children.map(child => {
-						// 判断子组件(u-radio)如果有updateParentData方法的话,就就执行(执行的结果是子组件重新从父组件拉取了最新的值)
-						typeof(child.updateParentData) == 'function' && child.updateParentData();
-					})
-				}
-			},
-		},
-		computed: {
-			// 这里computed的变量,都是子组件u-radio需要用到的,由于头条小程序的兼容性差异,子组件无法实时监听父组件参数的变化
-			// 所以需要手动通知子组件,这里返回一个parentData变量,供watch监听,在其中去通知每一个子组件重新从父组件(u-radio-group)
-			// 拉取父组件新的变化后的参数
-			parentData() {
-				return [this.value, this.disabled, this.activeColor, this.size, this.labelDisabled, this.shape, this.iconSize, this.width, this.wrap];
-			}
-		},
-		methods: {
-			// 该方法有子组件radio调用,当一个radio被选中的时候,给父组件设置value值(props传递的value)
-			setValue(val) {
-				// 通过子组件传递过来的val值(此被选中的子组件内部已将parentValue设置等于val的值),将其他
-				// u-radio设置未选中的状态
-				this.children.map(child => {
-					if(child.parentData.value != val) child.parentData.value = '';
-				})
-				// 通过emit事件,设置父组件通过v-model双向绑定的值
-				this.$emit('input', val);
-				this.$emit('change', val);
-				// 等待下一个周期再执行,因为this.$emit('input')作用于父组件,再反馈到子组件内部,需要时间
-				// 由于头条小程序执行迟钝,故需要用几十毫秒的延时
-				setTimeout(() => {
-					// 将当前的值发送到 u-form-item 进行校验
-					this.dispatch('u-form-item', 'on-form-change', val);
-				}, 60)
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	@import "../../libs/css/style.components.scss";
-	
-	.u-radio-group {
-		/* #ifndef MP || APP-NVUE */
-		display: inline-flex;
-		flex-wrap: wrap;
-		/* #endif */
-	}
-</style>
diff --git a/uview-ui/components/u-radio/u-radio.vue b/uview-ui/components/u-radio/u-radio.vue
deleted file mode 100644
index 1d9a439..0000000
--- a/uview-ui/components/u-radio/u-radio.vue
+++ /dev/null
@@ -1,271 +0,0 @@
-<template>
-	<view class="u-radio" :style="[radioStyle]">
-		<view class="u-radio__icon-wrap" @tap="toggle" :class="[iconClass]" :style="[iconStyle]">
-			<u-icon
-				class="u-radio__icon-wrap__icon"
-			    name="checkbox-mark"
-			    :size="elIconSize" 
-				:color="iconColor"/>
-		</view>
-		<view class="u-radio__label" @tap="onClickLabel" :style="{
-			fontSize: $u.addUnit(labelSize)
-		}">
-			<slot />
-		</view>
-	</view>
-</template>
-
-<script>
-	/**
-	 * radio 单选框
-	 * @description 单选框用于有一个选择,用户只能选择其中一个的场景。搭配u-radio-group使用
-	 * @tutorial https://www.uviewui.com/components/radio.html
-	 * @property {String Number} icon-size 图标大小,单位rpx(默认24)
-	 * @property {String Number} label-size label字体大小,单位rpx(默认28)
-	 * @property {String Number} name radio组件的标示符
-	 * @property {String} shape 形状,见上方说明(默认circle)
-	 * @property {Boolean} disabled 是否禁用(默认false)
-	 * @property {Boolean} label-disabled 点击文本是否可以操作radio(默认true)
-	 * @property {String} active-color 选中时的颜色,如设置parent的active-color将失效
-	 * @event {Function} change 某个radio状态发生变化时触发(选中状态)
-	 * @example <u-radio :label-disabled="false">门掩黄昏,无计留春住</u-radio>
-	 */
-	export default {
-		name: "u-radio",
-		props: {
-			// radio的名称
-			name: {
-				type: [String, Number],
-				default: ''
-			},
-			// 形状,square为方形,circle为原型
-			shape: {
-				type: String,
-				default: ''
-			},
-			// 是否禁用
-			disabled: {
-				type: [String, Boolean],
-				default: ''
-			},
-			// 是否禁止点击提示语选中复选框
-			labelDisabled: {
-				type: [String, Boolean],
-				default: ''
-			},
-			// 选中状态下的颜色,如设置此值,将会覆盖parent的activeColor值
-			activeColor: {
-				type: String,
-				default: ''
-			},
-			// 图标的大小,单位rpx
-			iconSize: {
-				type: [String, Number],
-				default: ''
-			},
-			// label的字体大小,rpx单位
-			labelSize: {
-				type: [String, Number],
-				default: ''
-			},
-		},
-		data() {
-			return {
-				// 父组件的默认值,因为头条小程序不支持在computed中使用this.parent.shape的形式
-				// 故只能使用如此方法
-				parentData: {
-					iconSize: null,
-					labelDisabled: null,
-					disabled: null,
-					shape: null,
-					activeColor: null,
-					size: null,
-					width: null,
-					height: null,
-					value: null,
-					wrap: null
-				}
-			};
-		},
-		created() {
-			this.parent = false;
-			// 支付宝小程序不支持provide/inject,所以使用这个方法获取整个父组件,在created定义,避免循环引用
-			this.updateParentData();
-			this.parent.children.push(this);
-		},
-		computed: {
-			// 是否禁用,如果父组件u-raios-group禁用的话,将会忽略子组件的配置
-			elDisabled() {
-				return this.disabled !== '' ? this.disabled : this.parentData.disabled !== null ? this.parentData.disabled : false;
-			},
-			// 是否禁用label点击
-			elLabelDisabled() {
-				return this.labelDisabled !== '' ? this.labelDisabled : this.parentData.labelDisabled !== null ? this.parentData.labelDisabled : false;
-			},
-			// 组件尺寸,对应size的值,默认值为34rpx
-			elSize() {
-				return this.size ? this.size : (this.parentData.size ? this.parentData.size : 34);
-			},
-			// 组件的勾选图标的尺寸,默认20
-			elIconSize() {
-				return this.iconSize ? this.iconSize : (this.parentData.iconSize ? this.parentData.iconSize : 20);
-			},
-			// 组件选中激活时的颜色
-			elActiveColor() {
-				return this.activeColor ? this.activeColor : (this.parentData.activeColor ? this.parentData.activeColor : 'primary');
-			},
-			// 组件的形状
-			elShape() {
-				return this.shape ? this.shape : (this.parentData.shape ? this.parentData.shape : 'circle');
-			},
-			// 设置radio的状态,要求radio的name等于parent的value时才为选中状态
-			iconStyle() {
-				let style = {};
-				if (this.elActiveColor && this.parentData.value == this.name && !this.elDisabled) {
-					style.borderColor = this.elActiveColor;
-					style.backgroundColor = this.elActiveColor;
-				}
-				style.width = this.$u.addUnit(this.elSize);
-				style.height = this.$u.addUnit(this.elSize);
-				return style;
-			},
-			iconColor() {
-				return this.name ==  this.parentData.value ? '#ffffff' : 'transparent';
-			},
-			iconClass() {
-				let classes = [];
-				classes.push('u-radio__icon-wrap--' + this.elShape);
-				if (this.name == this.parentData.value) classes.push('u-radio__icon-wrap--checked');
-				if (this.elDisabled) classes.push('u-radio__icon-wrap--disabled');
-				if (this.name == this.parentData.value && this.elDisabled) classes.push(
-					'u-radio__icon-wrap--disabled--checked');
-				// 支付宝小程序无法动态绑定一个数组类名,否则解析出来的结果会带有",",而导致失效
-				return classes.join(' ');
-			},
-			radioStyle() {
-				let style = {};
-				if (this.parentData.width) {
-					style.width = this.$u.addUnit(this.parentData.width);
-					// #ifdef MP
-					// 各家小程序因为它们特殊的编译结构,使用float布局
-					style.float = 'left';
-					// #endif
-					// #ifndef MP
-					// H5和APP使用flex布局
-					style.flex = `0 0 ${this.$u.addUnit(this.parentData.width)}`;
-					// #endif
-				}
-				if (this.parentData.wrap) {
-					style.width = '100%';
-					// #ifndef MP
-					// H5和APP使用flex布局,将宽度设置100%,即可自动换行
-					style.flex = '0 0 100%';
-					// #endif
-				}
-				return style;
-			}
-		},
-		methods: {
-			updateParentData() {
-				this.getParentData('u-radio-group');
-			},
-			onClickLabel() {
-				if (!this.elLabelDisabled && !this.elDisabled) {
-					this.setRadioCheckedStatus();
-				}
-			},
-			toggle() {
-				if (!this.elDisabled) {
-					this.setRadioCheckedStatus();
-				}
-			},
-			emitEvent() {
-				// u-radio的name不等于父组件的v-model的值时(意味着未选中),才发出事件,避免多次点击触发事件
-				if(this.parentData.value != this.name) this.$emit('change', this.name);
-			},
-			// 改变组件选中状态
-			// 这里的改变的依据是,更改本组件的parentData.value值为本组件的name值,同时通过父组件遍历所有u-radio实例
-			// 将本组件外的其他u-radio的parentData.value都设置为空(由computed计算后,都被取消选中状态),因而只剩下一个为选中状态
-			setRadioCheckedStatus() {
-				this.emitEvent();
-				if(this.parent) {
-					this.parent.setValue(this.name);
-					this.parentData.value = this.name;
-				}
-			}
-		}
-	};
-</script>
-
-<style lang="scss" scoped>
-	@import "../../libs/css/style.components.scss";
-
-	.u-radio {
-		/* #ifndef APP-NVUE */
-		display: inline-flex;
-		/* #endif */
-		align-items: center;
-		overflow: hidden;
-		user-select: none;
-		line-height: 1.8;
-		
-		&__icon-wrap {
-			color: $u-content-color;
-			@include vue-flex;
-			flex: none;
-			align-items: center;
-			justify-content: center;
-			box-sizing: border-box;
-			width: 42rpx;
-			height: 42rpx;
-			color: transparent;
-			text-align: center;
-			transition-property: color, border-color, background-color;
-			font-size: 20px;
-			border: 1px solid #c8c9cc;
-			transition-duration: 0.2s;
-			
-			/* #ifdef MP-TOUTIAO */
-			// 头条小程序兼容性问题,需要设置行高为0,否则图标偏下
-			&__icon {
-				line-height: 0;
-			}
-			/* #endif */
-			
-			&--circle {
-				border-radius: 100%;
-			}
-			
-			&--square {
-				border-radius: 3px;
-			}
-			
-			&--checked {
-				color: #fff;
-				background-color: #2979ff;
-				border-color: #2979ff;
-			}
-			
-			&--disabled {
-				background-color: #ebedf0;
-				border-color: #c8c9cc;
-			}
-			
-			&--disabled--checked {
-				color: #c8c9cc !important;
-			}
-		}
-		
-		&__label {
-			word-wrap: break-word;
-			margin-left: 10rpx;
-			margin-right: 24rpx;
-			color: $u-content-color;
-			font-size: 30rpx;
-			
-			&--disabled {
-				color: #c8c9cc;
-			}
-		}
-	}
-</style>
diff --git a/uview-ui/components/u-rate/u-rate.vue b/uview-ui/components/u-rate/u-rate.vue
deleted file mode 100644
index 17eb3a8..0000000
--- a/uview-ui/components/u-rate/u-rate.vue
+++ /dev/null
@@ -1,275 +0,0 @@
-<template>
-	<view class="u-rate" :id="elId" @touchmove.stop.prevent="touchMove">
-		<view class="u-star-wrap" v-for="(item, index) in count" :key="index" :class="[elClass]">
-			<u-icon
-				:name="activeIndex > index ? elActiveIcon : inactiveIcon"
-				@click="click(index + 1, $event)"
-				:color="activeIndex > index ? elActiveColor : inactiveColor"
-				:custom-style="{
-					fontSize: size + 'rpx',
-					padding: `0 ${gutter / 2 + 'rpx'}`
-				}"
-				:custom-prefix="customPrefix"
-				:show-decimal-icon="showDecimalIcon(index)"
-				:percent="decimal"
-				:inactive-color="inactiveColor"
-			></u-icon>
-		</view>
-	</view>
-</template>
-
-<script>/**
- * rate 评分
- * @description 该组件一般用于满意度调查,星型评分的场景
- * @tutorial https://www.uviewui.com/components/rate.html
- * @property {String Number} count 最多可选的星星数量(默认5)
- * @property {String Number} current 默认选中的星星数量(默认0)
- * @property {Boolean} disabled 是否禁止用户操作(默认false)
- * @property {String Number} size 星星的大小,单位rpx(默认32)
- * @property {String} inactive-color 未选中星星的颜色(默认#b2b2b2)
- * @property {String} active-color 选中的星星颜色(默认#FA3534)
- * @property {String} active-icon 选中时的图标名,只能为uView的内置图标(默认star-fill)
- * @property {String} inactive-icon 未选中时的图标名,只能为uView的内置图标(默认star)
- * @property {String} gutter 星星之间的距离(默认10)
- * @property {String Number} min-count 最少选中星星的个数(默认0)
- * @property {Boolean} allow-half 是否允许半星选择(默认false)
- * @event {Function} change 选中的星星发生变化时触发
- * @example <u-rate :count="count" :current="2"></u-rate>
- */
-
-export default {
-	name: 'u-rate',
-	props: {
-		// 用于v-model双向绑定选中的星星数量
-		// 1.4.5版新增
-		value: {
-			type: [Number, String],
-			default: -1
-		},
-		// 要显示的星星数量
-		count: {
-			type: [Number, String],
-			default: 5
-		},
-		// 当前需要默认选中的星星(选中的个数)
-		// 1.4.5后通过value双向绑定,不再建议使用此参数
-		current: {
-			type: [Number, String],
-			default: 0
-		},
-		// 是否不可选中
-		disabled: {
-			type: Boolean,
-			default: false
-		},
-		// 星星的大小,单位rpx
-		size: {
-			type: [Number, String],
-			default: 32
-		},
-		// 未选中时的颜色
-		inactiveColor: {
-			type: String,
-			default: '#b2b2b2'
-		},
-		// 选中的颜色
-		activeColor: {
-			type: String,
-			default: '#FA3534'
-		},
-		// 星星之间的间距,单位rpx
-		gutter: {
-			type: [Number, String],
-			default: 10
-		},
-		// 最少能选择的星星个数
-		minCount: {
-			type: [Number, String],
-			default: 0
-		},
-		// 是否允许半星(功能尚未实现)
-		allowHalf: {
-			type: Boolean,
-			default: false
-		},
-		// 选中时的图标(星星)
-		activeIcon: {
-			type: String,
-			default: 'star-fill'
-		},
-		// 未选中时的图标(星星)
-		inactiveIcon: {
-			type: String,
-			default: 'star'
-		},
-		// 自定义扩展前缀,方便用户扩展自己的图标库
-		customPrefix: {
-			type: String,
-			default: 'uicon'
-		},
-		colors: {
-			type: Array,
-			default() {
-				return []
-			}
-		},
-		icons: {
-			type: Array,
-			default() {
-				return []
-			}
-		}
-	},
-	data() {
-		return {
-			// 生成一个唯一id,否则一个页面多个评分组件,会造成冲突
-			elId: this.$u.guid(),
-			elClass: this.$u.guid(),
-			starBoxLeft: 0, // 评分盒子左边到屏幕左边的距离,用于滑动选择时计算距离
-			// 当前激活的星星的index,如果存在value,优先使用value,因为它可以双向绑定(1.4.5新增)
-			activeIndex: this.value != -1 ? this.value : this.current,
-			starWidth: 0, // 每个星星的宽度
-			starWidthArr: [] //每个星星最右边到组件盒子最左边的距离
-		}
-	},
-	watch: {
-		current(val) {
-			this.activeIndex = val
-		},
-		value(val) {
-			this.activeIndex = val
-		}
-	},
-	computed: {
-		decimal() {
-			if (this.disabled) {
-				return this.activeIndex * 100 % 100
-			} else if (this.allowHalf) {
-				return 50
-			}
-		},
-		elActiveIcon() {
-			const len = this.icons.length
-			// 此处规则类似于下方的elActiveColor参数,都是根据一定的规则,显示不同的图标
-			// 结果可能如此:icons参数传递了3个图标,当选中两个时,用第一个图标,4个时,用第二个图标
-			// 第三个时,用第三个图标作为激活的图标
-			if (len && len <= this.count) {
-				const step = Math.round(this.activeIndex / Math.round(this.count / len))
-				if (step < 1) return this.icons[0]
-				if (step > len) return this.icons[len - 1]
-				return this.icons[step - 1]
-			}
-			return this.activeIcon
-		},
-		elActiveColor() {
-			const len = this.colors.length
-			// 如果有设置colors参数(此参数用于将图标分段,比如一共5颗星,colors传3个颜色值,那么根据一定的规则,2颗星可能为第一个颜色
-			// 4颗星为第二个颜色值,5颗星为第三个颜色值)
-			if (len && len <= this.count) {
-				const step = Math.round(this.activeIndex / Math.round(this.count / len))
-				if (step < 1) return this.colors[0]
-				if (step > len) return this.colors[len - 1]
-				return this.colors[step - 1]
-			}
-			return this.activeColor
-		}
-	},
-	methods: {
-		// 获取评分组件盒子的布局信息
-		getElRectById() {
-			// uView封装的获取节点的方法,详见文档
-			this.$uGetRect('#' + this.elId).then(res => {
-				this.starBoxLeft = res.left
-			})
-		},
-		// 获取单个星星的尺寸
-		getElRectByClass() {
-			// uView封装的获取节点的方法,详见文档
-			this.$uGetRect('.' + this.elClass).then(res => {
-				this.starWidth = res.width
-				// 把每个星星右边到组件盒子左边的距离放入数组中
-				for (let i = 0; i < this.count; i++) {
-					this.starWidthArr[i] = (i + 1) * this.starWidth
-				}
-			})
-		},
-		// 手指滑动
-		touchMove(e) {
-			if (this.disabled) {
-				return
-			}
-			if (!e.changedTouches[0]) {
-				return
-			}
-			const movePageX = e.changedTouches[0].pageX
-			// 滑动点相对于评分盒子左边的距离
-			const distance = movePageX - this.starBoxLeft
-
-			// 如果滑动到了评分盒子的左边界,就设置为0星
-			if (distance <= 0) {
-				this.activeIndex = 0
-			}
-			// 滑动的距离,相当于多少颗星星
-			let index = Math.ceil(distance / this.starWidth)
-			this.activeIndex = index > this.count ? this.count : index
-			// 对最少颗星星的限制
-			if (this.activeIndex < this.minCount) this.activeIndex = this.minCount
-			this.emitEvent()
-		},
-		// 通过点击,直接选中
-		click(index, e) {
-			if (this.disabled) {
-				return
-			}
-			// 半星选择,尚未实现
-			if (this.allowHalf) {
-			}
-			// 对第一个星星特殊处理,只有一个的时候,点击可以取消,否则无法作0星评价
-			if (index == 1) {
-				if (this.activeIndex == 1) {
-					this.activeIndex = 0
-				} else {
-					this.activeIndex = 1
-				}
-			} else {
-				this.activeIndex = index
-			}
-			// 对最少颗星星的限制
-			if (this.activeIndex < this.minCount) this.activeIndex = this.minCount
-			this.emitEvent()
-		},
-		// 发出事件
-		emitEvent() {
-			// 发出change事件
-			this.$emit('change', this.activeIndex)
-			// 同时修改双向绑定的value的值
-			if (this.value != -1) {
-				this.$emit('input', this.activeIndex)
-			}
-		},
-		showDecimalIcon(index) {
-			return this.disabled && parseInt(this.activeIndex) === index
-		}
-	},
-	mounted() {
-		this.getElRectById()
-		this.getElRectByClass()
-	}
-}
-</script>
-
-<style scoped lang="scss">
-@import "../../libs/css/style.components.scss";
-
-.u-rate {
-	display: -webkit-inline-flex;
-	display: inline-flex;
-	align-items: center;
-	margin: 0;
-	padding: 0;
-}
-
-.u-icon {
-	box-sizing: border-box;
-}
-</style>
diff --git a/uview-ui/components/u-read-more/u-read-more.vue b/uview-ui/components/u-read-more/u-read-more.vue
deleted file mode 100644
index a77a44f..0000000
--- a/uview-ui/components/u-read-more/u-read-more.vue
+++ /dev/null
@@ -1,179 +0,0 @@
-<template>
-	<view class="">
-		<view class="u-content" :class="[elId]" :style="{ 
-			height: isLongContent && !showMore ? showHeight + 'rpx' : 'auto',
-			textIndent: textIndent
-		}">
-			<slot></slot>
-		</view>
-		<view @tap="toggleReadMore" v-if="isLongContent" class="u-content__showmore-wrap"
-		    :class="{ 'u-content__show-more': showMore }"
-		    :style="[innerShadowStyle]">
-			<text class="u-content__showmore-wrap__readmore-btn" :style="{
-				fontSize: fontSize + 'rpx',
-				color: color
-			}">
-				{{ showMore ? openText : closeText }}
-			</text>
-			<view class="u-content__showmore-wrap__readmore-btn__icon u-flex">
-				<u-icon :color="color" :size="fontSize" :name="showMore ? 'arrow-up' : 'arrow-down'"></u-icon>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	/**
-	 * readMore 阅读更多
-	 * @description 该组件一般用于内容较长,预先收起一部分,点击展开全部内容的场景。
-	 * @tutorial https://www.uviewui.com/components/readMore.html
-	 * @property {String Number} show-height 内容超出此高度才会显示展开全文按钮,单位rpx(默认400)
-	 * @property {Boolean} toggle 展开后是否显示收起按钮(默认false)
-	 * @property {String} close-text 关闭时的提示文字(默认“展开阅读全文”)
-	 * @property {String Number} font-size 提示文字的大小,单位rpx(默认28)
-	 * @property {String} text-indent 段落首行缩进的字符个数(默认2em)
-	 * @property {String} open-text 展开时的提示文字(默认“收起”)
-	 * @property {String} color 提示文字的颜色(默认#2979ff)
-	 * @example <u-read-more><rich-text :nodes="content"></rich-text></u-read-more>
-	 */
-	export default {
-		name: "u-read-more",
-		props: {
-			// 默认的显示占位高度,单位为rpx
-			showHeight: {
-				type: [Number, String],
-				default: 400
-			},
-			// 展开后是否显示"收起"按钮
-			toggle: {
-				type: Boolean,
-				default: false
-			},
-			// 关闭时的提示文字
-			closeText: {
-				type: String,
-				default: '展开阅读全文'
-			},
-			// 展开时的提示文字
-			openText: {
-				type: String,
-				default: '收起'
-			},
-			// 提示的文字颜色
-			color: {
-				type: String,
-				default: '#2979ff'
-			},
-			// 提示文字的大小
-			fontSize: {
-				type: [String, Number],
-				default: 28
-			},
-			// 是否显示阴影
-			shadowStyle: {
-				type: Object,
-				default () {
-					return {
-						backgroundImage: "linear-gradient(-180deg, rgba(255, 255, 255, 0) 0%, #fff 80%)",
-						paddingTop: "300rpx",
-						marginTop: "-300rpx"
-					}
-				}
-			},
-			// 段落首行缩进的字符个数
-			textIndent: {
-				type: String,
-				default: '2em'
-			},
-			// open和close事件时,将此参数返回在回调参数中
-			index: {
-				type: [Number, String],
-				default: ''
-			}
-		},
-		watch: {
-			paramsChange(val) {
-				this.init();
-			}
-		},
-		computed: {
-			paramsChange() {
-				return `${this.toggle}-${this.showHeight}`;
-			},
-			// 展开后无需阴影,收起时才需要阴影样式
-			innerShadowStyle() {
-				if (this.showMore) return {};
-				else return this.shadowStyle
-			}
-		},
-		data() {
-			return {
-				isLongContent: false, // 是否需要隐藏一部分内容
-				showMore: false, // 当前隐藏与显示的状态,true-显示,false-收起
-				elId: this.$u.guid(), // 生成唯一class
-			};
-		},
-		mounted() {
-			this.$nextTick(() => {
-				this.init();
-			})
-		},
-		methods: {
-			init() {
-				this.$uGetRect('.' + this.elId).then(res => {
-					// 判断高度,如果真实内容高度大于占位高度,则显示收起与展开的控制按钮
-					if (res.height > uni.upx2px(this.showHeight)) {
-						this.isLongContent = true;
-						this.showMore = false;
-					}
-				})
-			},
-			// 展开或者收起
-			toggleReadMore() {
-				this.showMore = !this.showMore;
-				// 如果toggle为false,隐藏"收起"部分的内容
-				if (this.toggle == false) this.isLongContent = false;
-				// 发出打开或者收齐的事件
-				this.$emit(this.showMore ? 'open' : 'close', this.index);
-			}
-		}
-	};
-</script>
-
-<style lang="scss" scoped>
-	@import "../../libs/css/style.components.scss";
-
-	.u-content {
-		font-size: 30rpx;
-		color: $u-content-color;
-		line-height: 1.8;
-		text-align: left;
-		overflow: hidden;
-
-		&__show-more {
-			padding-top: 0;
-			background: none;
-			margin-top: 20rpx;
-		}
-
-		&__showmore-wrap {
-			position: relative;
-			width: 100%;
-			padding-bottom: 26rpx;
-			@include vue-flex;
-			align-items: center;
-			justify-content: center;
-
-			&__readmore-btn {
-				@include vue-flex;
-				align-items: center;
-				justify-content: center;
-				line-height: 1;
-
-				&__icon {
-					margin-left: 14rpx;
-				}
-			}
-		}
-	}
-</style>
diff --git a/uview-ui/components/u-row-notice/u-row-notice.vue b/uview-ui/components/u-row-notice/u-row-notice.vue
deleted file mode 100644
index f4683f1..0000000
--- a/uview-ui/components/u-row-notice/u-row-notice.vue
+++ /dev/null
@@ -1,269 +0,0 @@
-<template>
-	<view
-		v-if="show"
-		class="u-notice-bar"
-		:style="{
-			background: computeBgColor,
-			padding: padding
-		}"
-		:class="[
-			type ? `u-type-${type}-light-bg` : ''
-		]"
-	>
-		<view class="u-direction-row">
-			<view class="u-icon-wrap">
-				<u-icon class="u-left-icon" v-if="volumeIcon" name="volume-fill" :size="volumeSize" :color="computeColor"></u-icon>
-			</view>
-			<view class="u-notice-box" id="u-notice-box">
-				<view
-					class="u-notice-content"
-					id="u-notice-content"
-					:style="{
-						animationDuration: animationDuration,
-						animationPlayState: animationPlayState,
-					}"
-				>
-					<text class="u-notice-text" @tap="click" :style="[textStyle]"
-					:class="['u-type-' + type]">{{showText}}</text>
-				</view>
-			</view>
-			<view class="u-icon-wrap">
-				<u-icon @click="getMore" class="u-right-icon" v-if="moreIcon" name="arrow-right" :size="26" :color="computeColor"></u-icon>
-				<u-icon @click="close" class="u-right-icon" v-if="closeIcon" name="close" :size="24" :color="computeColor"></u-icon>
-			</view>
-		</view>
-	</view>
-</template>
-<script>
-export default {
-	props: {
-		// 显示的内容,数组
-		list: {
-			type: Array,
-			default() {
-				return [];
-			}
-		},
-		// 显示的主题,success|error|primary|info|warning|none
-		// none主题默认为透明背景,黑色(contentColor)字体
-		type: {
-			type: String,
-			default: 'warning'
-		},
-		// 是否显示左侧的音量图标
-		volumeIcon: {
-			type: Boolean,
-			default: true
-		},
-		// 是否显示右侧的右箭头图标
-		moreIcon: {
-			type: Boolean,
-			default: false
-		},
-		// 是否显示右侧的关闭图标
-		closeIcon: {
-			type: Boolean,
-			default: false
-		},
-		// 是否自动播放
-		autoplay: {
-			type: Boolean,
-			default: true
-		},
-		// 文字颜色,各图标也会使用文字颜色
-		color: {
-			type: String,
-			default: ''
-		},
-		// 背景颜色
-		bgColor: {
-			type: String,
-			default: ''
-		},
-		// 是否显示
-		show: {
-			type: Boolean,
-			default: true
-		},
-		// 字体大小,单位rpx
-		fontSize: {
-			type: [Number, String],
-			default: 26
-		},
-		// 音量喇叭的大小
-		volumeSize: {
-			type: [Number, String],
-			default: 34
-		},
-		// 水平滚动时的滚动速度,即每秒滚动多少rpx,这有利于控制文字无论多少时,都能有一个恒定的速度
-		speed: {
-			type: [Number, String],
-			default: 160
-		},
-		// 播放状态,play-播放,paused-暂停
-		playState: {
-			type: String,
-			default: 'play'
-		},
-		// 通知的边距
-		padding: {
-			type: [Number, String],
-			default: '18rpx 24rpx'
-		}
-	},
-	data() {
-		return {
-			textWidth: 0, // 滚动的文字宽度
-			boxWidth: 0, // 供文字滚动的父盒子的宽度,和前者一起为了计算滚动速度
-			animationDuration: '10s', // 动画执行时间
-			animationPlayState: 'paused', // 动画的开始和结束执行
-			showText: '' // 显示的文本
-		};
-	},
-	watch: {
-		list: {
-			immediate: true,
-			handler(val) {
-				this.showText = val.join(',');
-				this.$nextTick(() => {
-					this.initSize();
-				});
-			}
-		},
-		playState(val) {
-			if(val == 'play') this.animationPlayState = 'running';
-			else this.animationPlayState = 'paused';
-		},
-		speed(val) {
-			this.initSize();
-		}
-	},
-	computed: {
-		// 计算字体颜色,如果没有自定义的,就用uview主题颜色
-		computeColor() {
-			if (this.color) return this.color;
-			// 如果是无主题,就默认使用content-color
-			else if(this.type == 'none') return '#606266';
-			else return this.type;
-		},
-		// 文字内容的样式
-		textStyle() {
-			let style = {};
-			if (this.color) style.color = this.color;
-			else if(this.type == 'none') style.color = '#606266';
-			style.fontSize = this.fontSize + 'rpx';
-			return style;
-		},
-		// 计算背景颜色
-		computeBgColor() {
-			if (this.bgColor) return this.bgColor;
-			else if(this.type == 'none') return 'transparent';
-		}
-	},
-	mounted() {
-		this.$nextTick(() => {
-			this.initSize();
-		});
-	},
-	methods: {
-		initSize() {
-			let query = [],
-				boxWidth = 0,
-				textWidth = 0;
-			let textQuery = new Promise((resolve, reject) => {
-				uni.createSelectorQuery()
-					.in(this)
-					.select(`#u-notice-content`)
-					.boundingClientRect()
-					.exec(ret => {
-						this.textWidth = ret[0].width;
-						resolve();
-					});
-			});
-			query.push(textQuery);
-			Promise.all(query).then(() => {
-				// 根据t=s/v(时间=路程/速度),这里为何不需要加上#u-notice-box的宽度,因为中设置了.u-notice-content样式中设置了padding-left: 100%
-				// 恰巧计算出来的结果中已经包含了#u-notice-box的宽度
-				this.animationDuration = `${this.textWidth / uni.upx2px(this.speed)}s`;
-				// 这里必须这样开始动画,否则在APP上动画速度不会改变(HX版本2.4.6,IOS13)
-				this.animationPlayState = 'paused';
-				setTimeout(() => {
-					if(this.playState == 'play' && this.autoplay) this.animationPlayState = 'running';
-				}, 10);
-			});
-		},
-		// 点击通告栏
-		click(index) {
-			this.$emit('click');
-		},
-		// 点击关闭按钮
-		close() {
-			this.$emit('close');
-		},
-		// 点击更多箭头按钮
-		getMore() {
-			this.$emit('getMore');
-		}
-	}
-};
-</script>
-
-<style lang="scss" scoped>
-@import "../../libs/css/style.components.scss";
-	
-.u-notice-bar {
-	padding: 18rpx 24rpx;
-	overflow: hidden;
-}
-
-.u-direction-row {
-	@include vue-flex;
-	align-items: center;
-	justify-content: space-between;
-}
-
-.u-left-icon {
-	/* #ifndef APP-NVUE */
-	display: inline-flex;
-	/* #endif */
-	align-items: center;
-}
-
-.u-notice-box {
-	flex: 1;
-	@include vue-flex;
-	overflow: hidden;
-	margin-left: 12rpx;
-}
-
-.u-right-icon {
-	margin-left: 12rpx;
-	display: inline-flex;
-	align-items: center;
-}
-
-.u-notice-content {
-	animation: u-loop-animation 10s linear infinite both;
-	text-align: right;
-	// 这一句很重要,为了能让滚动左右连接起来
-	padding-left: 100%;
-	@include vue-flex;
-	flex-wrap: nowrap;
-}
-
-.u-notice-text {
-	font-size: 26rpx;
-	word-break: keep-all;
-	white-space: nowrap
-}
-
-@keyframes u-loop-animation {
-	0% {
-		transform: translate3d(0, 0, 0);
-	}
-
-	100% {
-		transform: translate3d(-100%, 0, 0);
-	}
-}
-</style>
diff --git a/uview-ui/components/u-row/u-row.vue b/uview-ui/components/u-row/u-row.vue
deleted file mode 100644
index 915dfa6..0000000
--- a/uview-ui/components/u-row/u-row.vue
+++ /dev/null
@@ -1,84 +0,0 @@
-<template>
-	<view class="u-row" :style="{
-			alignItems: uAlignItem,
-			justifyContent: uJustify
-		}"
-		@tap="click"
-	>
-		<slot />
-	</view>
-</template>
-
-<script>
-	/**
-	 * row 行布局
-	 * @description 通过基础的 12 分栏,迅速简便地创建布局。
-	 * @tutorial https://www.uviewui.com/components/layout.html#row-props
-	 * @property {String Number} gutter 栅格间隔,左右各为此值的一半,单位rpx(默认0)
-	 * @property {String} justify 水平排列方式(微信小程序暂不支持)默认(start(或flex-start))
-	 * @property {String} align 垂直排列方式(默认center)
-	 * @example <u-row gutter="16"></u-row>
-	 */
-	export default {
-		name: "u-row",
-		props: {
-			// 给col添加间距,左右边距各占一半
-			gutter: {
-				type: [String, Number],
-				default: 20
-			},
-			// 水平排列方式,可选值为`start`(或`flex-start`)、`end`(或`flex-end`)、`center`、`around`(或`space-around`)、`between`(或`space-between`)
-			justify: {
-				type: String,
-				default: 'start'
-			},
-			// 垂直对齐方式,可选值为top、center、bottom
-			align: {
-				type: String,
-				default: 'center'
-			},
-			// 是否阻止事件传播
-			stop: {
-				type: Boolean,
-				default: true
-			}
-		},
-		computed: {
-			uJustify() {
-				if (this.justify == 'end' || this.justify == 'start') return 'flex-' + this.justify;
-				else if (this.justify == 'around' || this.justify == 'between') return 'space-' + this.justify;
-				else return this.justify;
-			},
-			uAlignItem() {
-				if (this.align == 'top') return 'flex-start';
-				if (this.align == 'bottom') return 'flex-end';
-				else return this.align;
-			}
-		},
-		methods: {
-			click(e) {
-				this.$emit('click');
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	@import "../../libs/css/style.components.scss";
-
-	.u-row {
-		// 由于微信小程序编译后奇怪的页面结构,只能使用float布局实现,flex无法实现
-		/* #ifndef MP-WEIXIN || MP-QQ || MP-TOUTIAO */
-		@include vue-flex;
-		/* #endif */
-		flex-wrap: wrap;
-	}
-
-	.u-row:after {
-		/* #ifdef MP-WEIXIN || MP-QQ || MP-TOUTIAO */
-		display: table;
-		clear: both;
-		content: "";
-		/* #endif */
-	}
-</style>
diff --git a/uview-ui/components/u-search/u-search.vue b/uview-ui/components/u-search/u-search.vue
deleted file mode 100644
index 206f661..0000000
--- a/uview-ui/components/u-search/u-search.vue
+++ /dev/null
@@ -1,342 +0,0 @@
-<template>
-	<view class="u-search" @tap="clickHandler" :style="{
-		margin: margin,
-	}">
-		<view
-			class="u-content"
-			:style="{
-				backgroundColor: bgColor,
-				borderRadius: shape == 'round' ? '100rpx' : '10rpx',
-				border: borderStyle,
-				height: height + 'rpx'
-			}"
-		>
-			<view class="u-icon-wrap">
-				<u-icon class="u-clear-icon" :size="30" :name="searchIcon" :color="searchIconColor ? searchIconColor : color"></u-icon>
-			</view>
-			<input
-				confirm-type="search"
-				@blur="blur"
-				:value="value"
-				@confirm="search"
-				@input="inputChange"
-				:disabled="disabled"
-				@focus="getFocus"
-				:focus="focus"
-				:maxlength="maxlength"
-				placeholder-class="u-placeholder-class"
-				:placeholder="placeholder"
-				:placeholder-style="`color: ${placeholderColor}`"
-				class="u-input"
-				type="text"
-				:style="[{
-					textAlign: inputAlign,
-					color: color,
-					backgroundColor: bgColor,
-				}, inputStyle]"
-			/>
-			<view class="u-close-wrap" v-if="keyword && clearabled && focused" @tap="clear">
-				<u-icon class="u-clear-icon" name="close-circle-fill" size="34" color="#c0c4cc"></u-icon>
-			</view>
-		</view>
-		<view :style="[actionStyle]" class="u-action" 
-			:class="[showActionBtn || show ? 'u-action-active' : '']" 
-			@tap.stop.prevent="custom"
-		>{{ actionText }}</view>
-	</view>
-</template>
-
-<script>
-/**
- * search 搜索框
- * @description 搜索组件,集成了常见搜索框所需功能,用户可以一键引入,开箱即用。
- * @tutorial https://www.uviewui.com/components/search.html
- * @property {String} shape 搜索框形状,round-圆形,square-方形(默认round)
- * @property {String} bg-color 搜索框背景颜色(默认#f2f2f2)
- * @property {String} border-color 边框颜色,配置了颜色,才会有边框
- * @property {String} placeholder 占位文字内容(默认“请输入关键字”)
- * @property {Boolean} clearabled 是否启用清除控件(默认true)
- * @property {Boolean} focus 是否自动获得焦点(默认false)
- * @property {Boolean} show-action 是否显示右侧控件(默认true)
- * @property {String} action-text 右侧控件文字(默认“搜索”)
- * @property {Object} action-style 右侧控件的样式,对象形式
- * @property {String} input-align 输入框内容水平对齐方式(默认left)
- * @property {Object} input-style 自定义输入框样式,对象形式
- * @property {Boolean} disabled 是否启用输入框(默认false)
- * @property {String} search-icon-color 搜索图标的颜色,默认同输入框字体颜色
- * @property {String} color 输入框字体颜色(默认#606266)
- * @property {String} placeholder-color placeholder的颜色(默认#909399)
- * @property {String} search-icon 输入框左边的图标,可以为uView图标名称或图片路径
- * @property {String} margin 组件与其他上下左右元素之间的距离,带单位的字符串形式,如"30rpx"
- * @property {Boolean} animation 是否开启动画,见上方说明(默认false)
- * @property {String} value 输入框初始值
- * @property {String | Number} maxlength 输入框最大能输入的长度,-1为不限制长度
- * @property {Boolean} input-style input输入框的样式,可以定义文字颜色,大小等,对象形式
- * @property {String | Number} height 输入框高度,单位rpx(默认64)
- * @event {Function} change 输入框内容发生变化时触发
- * @event {Function} search 用户确定搜索时触发,用户按回车键,或者手机键盘右下角的"搜索"键时触发
- * @event {Function} custom 用户点击右侧控件时触发
- * @event {Function} clear 用户点击清除按钮时触发
- * @example <u-search placeholder="日照香炉生紫烟" v-model="keyword"></u-search>
- */
-export default {
-	name: "u-search",
-	props: {
-		// 搜索框形状,round-圆形,square-方形
-		shape: {
-			type: String,
-			default: 'round'
-		},
-		// 搜索框背景色,默认值#f2f2f2
-		bgColor: {
-			type: String,
-			default: '#f2f2f2'
-		},
-		// 占位提示文字
-		placeholder: {
-			type: String,
-			default: '请输入关键字'
-		},
-		// 是否启用清除控件
-		clearabled: {
-			type: Boolean,
-			default: true
-		},
-		// 是否自动聚焦
-		focus: {
-			type: Boolean,
-			default: false
-		},
-		// 是否在搜索框右侧显示取消按钮
-		showAction: {
-			type: Boolean,
-			default: true
-		},
-		// 右边控件的样式
-		actionStyle: {
-			type: Object,
-			default() {
-				return {};
-			}
-		},
-		// 取消按钮文字
-		actionText: {
-			type: String,
-			default: '搜索'
-		},
-		// 输入框内容对齐方式,可选值为 left|center|right
-		inputAlign: {
-			type: String,
-			default: 'left'
-		},
-		// 是否启用输入框
-		disabled: {
-			type: Boolean,
-			default: false
-		},
-		// 开启showAction时,是否在input获取焦点时才显示
-		animation: {
-			type: Boolean,
-			default: false
-		},
-		// 边框颜色,只要配置了颜色,才会有边框
-		borderColor: {
-			type: String,
-			default: 'none'
-		},
-		// 输入框的初始化内容
-		value: {
-			type: String,
-			default: ''
-		},
-		// 搜索框高度,单位rpx
-		height: {
-			type: [Number, String],
-			default: 64
-		},
-		// input输入框的样式,可以定义文字颜色,大小等,对象形式
-		inputStyle: {
-			type: Object,
-			default() {
-				return {}
-			}
-		},
-		// 输入框最大能输入的长度,-1为不限制长度(来自uniapp文档)
-		maxlength: {
-			type: [Number, String],
-			default: '-1'
-		},
-		// 搜索图标的颜色,默认同输入框字体颜色
-		searchIconColor: {
-			type: String,
-			default: ''
-		},
-		// 输入框字体颜色
-		color: {
-			type: String,
-			default: '#606266'
-		},
-		// placeholder的颜色
-		placeholderColor: {
-			type: String,
-			default: '#909399'
-		},
-		// 组件与其他上下左右元素之间的距离,带单位的字符串形式,如"30rpx"、"30rpx 20rpx"等写法
-		margin: {
-			type: String,
-			default: '0'
-		},
-		// 左边输入框的图标,可以为uView图标名称或图片路径
-		searchIcon: {
-			type: String,
-			default: 'search'
-		}
-	},
-	data() {
-		return {
-			keyword: '',
-			showClear: false, // 是否显示右边的清除图标
-			show: false,
-			// 标记input当前状态是否处于聚焦中,如果是,才会显示右侧的清除控件
-			focused: this.focus
-			// 绑定输入框的值
-			// inputValue: this.value
-		};
-	},
-	watch: {
-		keyword(nVal) {
-			// 双向绑定值,让v-model绑定的值双向变化
-			this.$emit('input', nVal);
-			// 触发change事件,事件效果和v-model双向绑定的效果一样,让用户多一个选择
-			this.$emit('change', nVal);
-		},
-		value: {
-			immediate: true,
-			handler(nVal) {
-				this.keyword = nVal;
-			}
-		}
-	},
-	computed: {
-		showActionBtn() {
-			if (!this.animation && this.showAction) return true;
-			else return false;
-		},
-		// 样式,根据用户传入的颜色值生成,如果不传入,默认为none
-		borderStyle() {
-			if (this.borderColor) return `1px solid ${this.borderColor}`;
-			else return 'none';
-		},
-	},
-	methods: {
-		// 目前HX2.6.9 v-model双向绑定无效,故监听input事件获取输入框内容的变化
-		inputChange(e) {
-			this.keyword = e.detail.value;
-		},
-		// 清空输入
-		// 也可以作为用户通过this.$refs形式调用清空输入框内容
-		clear() {
-			this.keyword = '';
-			// 延后发出事件,避免在父组件监听clear事件时,value为更新前的值(不为空)
-			this.$nextTick(() => {
-				this.$emit('clear');
-			})
-		},
-		// 确定搜索
-		search(e) {
-			this.$emit('search', e.detail.value);
-			try{
-				// 收起键盘
-				uni.hideKeyboard();
-			}catch(e){}
-		},
-		// 点击右边自定义按钮的事件
-		custom() {
-			this.$emit('custom', this.keyword);
-			try{
-				// 收起键盘
-				uni.hideKeyboard();
-			}catch(e){}
-		},
-		// 获取焦点
-		getFocus() {
-			this.focused = true;
-			// 开启右侧搜索按钮展开的动画效果
-			if (this.animation && this.showAction) this.show = true;
-			this.$emit('focus', this.keyword);
-		},
-		// 失去焦点
-		blur() {
-			// 最开始使用的是监听图标@touchstart事件,自从hx2.8.4后,此方法在微信小程序出错
-			// 这里改为监听点击事件,手点击清除图标时,同时也发生了@blur事件,导致图标消失而无法点击,这里做一个延时
-			setTimeout(() => {
-				this.focused = false;
-			}, 100)
-			this.show = false;
-			this.$emit('blur', this.keyword);
-		},
-		// 点击搜索框,只有disabled=true时才发出事件,因为禁止了输入,意味着是想跳转真正的搜索页
-		clickHandler() {
-			if(this.disabled) this.$emit('click');
-		}
-	}
-};
-</script>
-
-<style lang="scss" scoped>
-@import "../../libs/css/style.components.scss";
-
-.u-search {
-	@include vue-flex;
-	align-items: center;
-	flex: 1;
-}
-
-.u-content {
-	@include vue-flex;
-	align-items: center;
-	padding: 0 18rpx;
-	flex: 1;
-}
-
-.u-clear-icon {
-	@include vue-flex;
-	align-items: center;
-}
-
-.u-input {
-	flex: 1;
-	font-size: 28rpx;
-	line-height: 1;
-	margin: 0 10rpx;
-	color: $u-tips-color;
-}
-
-.u-close-wrap {
-	width: 40rpx;
-	height: 100%;
-	@include vue-flex;
-	align-items: center;
-	justify-content: center;
-	border-radius: 50%;
-}
-
-.u-placeholder-class {
-	color: $u-tips-color;
-}
-
-.u-action {
-	font-size: 28rpx;
-	color: $u-main-color;
-	width: 0;
-	overflow: hidden;
-	transition: all 0.3s;
-	white-space: nowrap;
-	text-align: center;
-}
-
-.u-action-active {
-	width: 80rpx;
-	margin-left: 10rpx;
-}
-</style>
diff --git a/uview-ui/components/u-section/u-section.vue b/uview-ui/components/u-section/u-section.vue
deleted file mode 100644
index 02293ce..0000000
--- a/uview-ui/components/u-section/u-section.vue
+++ /dev/null
@@ -1,154 +0,0 @@
-<template>
-	<view class="u-section">
-		<view class="u-section__title" :style="{
-			fontWeight: bold ? 'bold' : 'normal',
-			color: color,
-			fontSize: fontSize + 'rpx',
-			paddingLeft: showLine ? (fontSize * 0.7) + 'rpx' : 0
-		}" :class="{
-			'u-section--line': showLine
-		}">
-			<view class="u-section__title__icon-wrap u-flex" :style="[lineStyle]" v-if="showLine">
-				<u-icon top="0" name="column-line" :size="fontSize * 1.25" bold :color="lineColor ? lineColor : color"></u-icon>
-			</view>
-			<text class="u-flex u-section__title__text">{{title}}</text>
-		</view>
-		<view class="u-section__right-info" v-if="right || $slots.right" :style="{
-			color: subColor
-		}" @tap="rightClick"> 
-			<slot name="right" v-if="$slots.right" />
-			<block v-else>
-				{{subTitle}}
-				<view class="u-section__right-info__icon-arrow u-flex" v-if="arrow">
-					<u-icon name="arrow-right" size="24" :color="subColor"></u-icon>
-				</view>
-			</block>
-		</view>
-	</view>
-</template>
-
-<script>
-	/**
-	 * section 查看更多
-	 * @description 该组件一般用于分类信息有很多,但是限于篇幅只能列出一部分,让用户通过"查看更多"获得更多信息的场景,实际效果见演示。
-	 * @tutorial https://www.uviewui.com/components/section.html
-	 * @property {String} title 左边主标题
-	 * @property {String} sub-title 右边副标题(默认更多)
-	 * @property {Boolean} right 是否显示右边的内容(默认true)
-	 * @property {Boolean} showLine 是否显示左边的竖条(默认true)
-	 * @property {Boolean} arrow 是否显示右边箭头(默认true)
-	 * @property {String Number} font-size 主标题的字体大小(默认28)
-	 * @property {Boolean} bold 主标题是否加粗(默认true)
-	 * @property {String} color 主标题颜色(默认#303133)
-	 * @event {Function} click 组件右侧的内容被点击时触发,用于跳转"更多"
-	 * @example <u-section title="今日热门" :right="false"></u-section>
-	 */
-	export default {
-		name: "u-section",
-		props: {
-			// 标题信息
-			title: {
-				type: String,
-				default: ''
-			},
-			// 右边副标题内容
-			subTitle: {
-				type: String,
-				default: '更多'
-			},
-			// 是否显示右边的内容
-			right: {
-				type: Boolean,
-				default: true
-			},
-			fontSize: {
-				type: [Number, String],
-				default: 28
-			},
-			// 主标题是否加粗
-			bold: {
-				type: Boolean,
-				default: true
-			},
-			// 主标题的颜色
-			color: {
-				type: String,
-				default: '#303133'
-			},
-			// 右边副标题的颜色
-			subColor: {
-				type: String,
-				default: '#909399'
-			},
-			// 是否显示左边的竖条
-			showLine: {
-				type: Boolean,
-				default: true
-			},
-			// 左边竖线的颜色
-			lineColor: {
-				type: String,
-				default: ''
-			},
-			// 是否显示右边箭头
-			arrow: {
-				type: Boolean,
-				default: true
-			},
-		},
-		computed: {
-			// 左边竖条的样式
-			lineStyle() {
-				// 由于安卓和iOS的,需要稍微调整绝对定位的top值,才能让左边的竖线和右边的文字垂直居中
-				return {
-					// 由于竖线为字体图标,具有比实际线宽更宽的宽度,所以也需要根据字体打下动态调整
-					left: -(Number(this.fontSize) * 0.9) + 'rpx',
-					top: -(Number(this.fontSize) * (this.$u.os() == 'ios' ? 0.14 : 0.15)) + 'rpx',
-				}
-			}
-		},
-		methods: {
-			rightClick() {
-				this.$emit('click');
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	@import "../../libs/css/style.components.scss";
-	
-	.u-section {
-		@include vue-flex;
-		justify-content: space-between;
-		align-items: center;
-		width: 100%;
-		
-		&__title {
-			position: relative;
-			font-size: 28rpx;
-			padding-left: 20rpx;
-			@include vue-flex;
-			align-items: center;
-			
-			&__icon-wrap {
-				position: absolute;
-			}
-			
-			&__text {
-				line-height: 1;
-			}
-		}
-		
-		&__right-info {
-			color: $u-tips-color;
-			font-size: 26rpx;
-			@include vue-flex;
-			align-items: center;
-			
-			&__icon-arrow {
-				margin-left: 6rpx;
-			}
-		}
-	}
-</style>
diff --git a/uview-ui/components/u-select/u-select.vue b/uview-ui/components/u-select/u-select.vue
deleted file mode 100644
index 1285845..0000000
--- a/uview-ui/components/u-select/u-select.vue
+++ /dev/null
@@ -1,417 +0,0 @@
-<template>
-	<view class="u-select">
-		<!-- <view class="u-select__action" :class="{
-			'u-select--border': border
-		}" @tap.stop="selectHandler">
-			<view class="u-select__action__icon" :class="{
-				'u-select__action__icon--reverse': value == true
-			}">
-				<u-icon name="arrow-down-fill" size="26" color="#c0c4cc"></u-icon>
-			</view>
-		</view> -->
-		<u-popup :maskCloseAble="maskCloseAble" mode="bottom" :popup="false" v-model="value" length="auto" :safeAreaInsetBottom="safeAreaInsetBottom" @close="close" :z-index="uZIndex">
-			<view class="u-select">
-				<view class="u-select__header" @touchmove.stop.prevent="">
-					<view
-						class="u-select__header__cancel u-select__header__btn"
-						:style="{ color: cancelColor }"
-						hover-class="u-hover-class"
-						:hover-stay-time="150"
-						@tap="getResult('cancel')"
-					>
-						{{cancelText}}
-					</view>
-					<view class="u-select__header__title">
-						{{title}}
-					</view>
-					<view
-						class="u-select__header__confirm u-select__header__btn"
-						:style="{ color: moving ? cancelColor : confirmColor }"
-						hover-class="u-hover-class"
-						:hover-stay-time="150"
-						@touchmove.stop=""
-						@tap.stop="getResult('confirm')"
-					>
-						{{confirmText}}
-					</view>
-				</view>
-				<view class="u-select__body">
-					<picker-view @change="columnChange" class="u-select__body__picker-view" :value="defaultSelector" @pickstart="pickstart" @pickend="pickend">
-						<picker-view-column v-for="(item, index) in columnData" :key="index">
-							<view class="u-select__body__picker-view__item" v-for="(item1, index1) in item" :key="index1">
-								<view class="u-line-1">{{ item1[labelName] }}</view>
-							</view>
-						</picker-view-column>
-					</picker-view>
-				</view>
-			</view>
-		</u-popup>
-	</view>
-</template>
-
-<script>
-	/**
-	 * select 列选择器
-	 * @description 此选择器用于单列,多列,多列联动的选择场景。(从1.3.0版本起,不建议使用Picker组件的单列和多列模式,Select组件是专门为列选择而构造的组件,更简单易用。)
-	 * @tutorial http://uviewui.com/components/select.html
-	 * @property {String} mode 模式选择,"single-column"-单列模式,"mutil-column"-多列模式,"mutil-column-auto"-多列联动模式
-	 * @property {Array} list 列数据,数组形式,见官网说明
-	 * @property {Boolean} v-model 布尔值变量,用于控制选择器的弹出与收起
-	 * @property {Boolean} safe-area-inset-bottom 是否开启底部安全区适配(默认false)
-	 * @property {String} cancel-color 取消按钮的颜色(默认#606266)
-	 * @property {String} confirm-color 确认按钮的颜色(默认#2979ff)
-	 * @property {String} confirm-text 确认按钮的文字
-	 * @property {String} cancel-text 取消按钮的文字
-	 * @property {String} default-value 提供的默认选中的下标,见官网说明
-	 * @property {Boolean} mask-close-able 是否允许通过点击遮罩关闭Picker(默认true)
-	 * @property {String Number} z-index 弹出时的z-index值(默认10075)
-	 * @property {String} value-name 自定义list数据的value属性名 1.3.6
-	 * @property {String} label-name 自定义list数据的label属性名 1.3.6
-	 * @property {String} child-name 自定义list数据的children属性名,只对多列联动模式有效 1.3.7
-	 * @event {Function} confirm 点击确定按钮,返回当前选择的值
-	 * @example <u-select v-model="show" :list="list"></u-select>
-	 */
-
-export default {
-	props: {
-		// 列数据
-		list: {
-			type: Array,
-			default() {
-				return [];
-			}
-		},
-		// 是否显示边框
-		border: {
-			type: Boolean,
-			default: true
-		},
-		// 通过双向绑定控制组件的弹出与收起
-		value: {
-			type: Boolean,
-			default: false
-		},
-		// "取消"按钮的颜色
-		cancelColor: {
-			type: String,
-			default: '#606266'
-		},
-		// "确定"按钮的颜色
-		confirmColor: {
-			type: String,
-			default: '#2979ff'
-		},
-		// 弹出的z-index值
-		zIndex: {
-			type: [String, Number],
-			default: 0
-		},
-		safeAreaInsetBottom: {
-			type: Boolean,
-			default: false
-		},
-		// 是否允许通过点击遮罩关闭Picker
-		maskCloseAble: {
-			type: Boolean,
-			default: true
-		},
-		// 提供的默认选中的下标
-		defaultValue: {
-			type: Array,
-			default() {
-				return [0];
-			}
-		},
-		// 模式选择,single-column-单列,mutil-column-多列,mutil-column-auto-多列联动
-		mode: {
-			type: String,
-			default: 'single-column'
-		},
-		// 自定义value属性名
-		valueName: {
-			type: String,
-			default: 'value'
-		},
-		// 自定义label属性名
-		labelName: {
-			type: String,
-			default: 'label'
-		},
-		// 自定义多列联动模式的children属性名
-		childName: {
-			type: String,
-			default: 'children'
-		},
-		// 顶部标题
-		title: {
-			type: String,
-			default: ''
-		},
-		// 取消按钮的文字
-		cancelText: {
-			type: String,
-			default: '取消'
-		},
-		// 确认按钮的文字
-		confirmText: {
-			type: String,
-			default: '确认'
-		}
-	},
-	data() {
-		return {
-			// 用于列改变时,保存当前的索引,下一次变化时比较得出是哪一列发生了变化
-			defaultSelector: [0],
-			// picker-view的数据
-			columnData: [],
-			// 每次队列发生变化时,保存选择的结果
-			selectValue: [],
-			// 上一次列变化时的index
-			lastSelectIndex: [],
-			// 列数
-			columnNum: 0,
-			// 列是否还在滑动中,微信小程序如果在滑动中就点确定,结果可能不准确
-			moving: false
-		};
-	},
-	watch: {
-		// 在select弹起的时候,重新初始化所有数据
-		value: {
-			immediate: true,
-			handler(val) {
-				if(val) setTimeout(() => this.init(), 10);
-			}
-		},
-	},
-	computed: {
-		uZIndex() {
-			// 如果用户有传递z-index值,优先使用
-			return this.zIndex ? this.zIndex : this.$u.zIndex.popup;
-		},
-	},
-	methods: {
-		// 标识滑动开始,只有微信小程序才有这样的事件
-		pickstart() {
-			// #ifdef MP-WEIXIN
-			this.moving = true;
-			// #endif
-		},
-		// 标识滑动结束
-		pickend() {
-			// #ifdef MP-WEIXIN
-			this.moving = false;
-			// #endif
-		},
-		init() {
-			this.setColumnNum();
-			this.setDefaultSelector();
-			this.setColumnData();
-			this.setSelectValue();
-		},
-		// 获取默认选中列下标
-		setDefaultSelector() {
-			// 如果没有传入默认选中的值,生成长度为columnNum,用0填充的数组
-			this.defaultSelector = this.defaultValue.length == this.columnNum ? this.defaultValue : Array(this.columnNum).fill(0);
-			this.lastSelectIndex = this.$u.deepClone(this.defaultSelector);
-		},
-		// 计算列数
-		setColumnNum() {
-			// 单列的列数为1
-			if(this.mode == 'single-column') this.columnNum = 1;
-			// 多列时,this.list数组长度就是列数
-			else if(this.mode == 'mutil-column') this.columnNum = this.list.length;
-			// 多列联动时,通过历遍this.list的第一个元素,得出有多少列
-			else if(this.mode == 'mutil-column-auto') {
-				let num = 1;
-				let column = this.list;
-				// 只要有元素并且第一个元素有children属性,继续历遍
-				while(column[0][this.childName]) {
-					column = column[0] ? column[0][this.childName] : {};
-					num ++;
-				}
-				this.columnNum = num;
-			}
-		},
-		// 获取需要展示在picker中的列数据
-		setColumnData() {
-			let data = [];
-			this.selectValue = [];
-			if(this.mode == 'mutil-column-auto') {
-				// 获得所有数据中的第一个元素
-				let column = this.list[this.defaultSelector.length ? this.defaultSelector[0] : 0];
-				// 通过循环所有的列数,再根据设定列的数组,得出当前需要渲染的整个列数组
-				for (let i = 0; i < this.columnNum; i++) {
-					// 第一列默认为整个list数组
-					if (i == 0) {
-						data[i] = this.list;
-						column = column[this.childName];
-					} else {
-						// 大于第一列时,判断是否有默认选中的,如果没有就用该列的第一项
-						data[i] = column;
-						column = column[this.defaultSelector[i]][this.childName];
-					}
-				}
-			} else if(this.mode == 'single-column') {
-				data[0] = this.list;
-			} else {
-				data = this.list;
-			}
-			this.columnData = data;
-		},
-		// 获取默认选中的值,如果没有设置defaultValue,就默认选中每列的第一个
-		setSelectValue() {
-			let tmp = null;
-			for(let i = 0; i < this.columnNum; i++) {
-				tmp = this.columnData[i][this.defaultSelector[i]];
-				let data = {
-					value: tmp ? tmp[this.valueName] : null,
-					label: tmp ? tmp[this.labelName] : null
-				};
-				// 判断是否存在额外的参数,如果存在,就返回
-				if(tmp && tmp.extra) data.extra = tmp.extra;
-				this.selectValue.push(data)
-			}
-		},
-		// 列选项
-		columnChange(e) {
-			let index = null;
-			let columnIndex = e.detail.value;
-			// 由于后面是需要push进数组的,所以需要先清空数组
-			this.selectValue = [];
-			if(this.mode == 'mutil-column-auto') {
-				// 对比前后两个数组,寻找变更的是哪一列,如果某一个元素不同,即可判定该列发生了变化
-				this.lastSelectIndex.map((val, idx) => {
-					if (val != columnIndex[idx]) index = idx;
-				});
-				this.defaultSelector = columnIndex;
-				for (let i = index + 1; i < this.columnNum; i++) {
-					// 当前变化列的下一列的数据,需要获取上一列的数据,同时需要指定是上一列的第几个的children,再往后的
-					// 默认是队列的第一个为默认选项
-					this.columnData[i] = this.columnData[i - 1][i - 1 == index ? columnIndex[index] : 0][this.childName];
-					// 改变的列之后的所有列,默认选中第一个
-					this.defaultSelector[i] = 0;
-				}
-				// 在历遍的过程中,可能由于上一步修改this.columnData,导致产生连锁反应,程序触发columnChange,会有多次调用
-				// 只有在最后一次数据稳定后的结果是正确的,此前的历遍中,可能会产生undefined,故需要判断
-				columnIndex.map((item, index) => {
-					let data = this.columnData[index][columnIndex[index]];
-					let tmp = {
-						value: data ? data[this.valueName] : null,
-						label: data ? data[this.labelName] : null,
-					};
-					// 判断是否有需要额外携带的参数
-					if(data && data.extra !== undefined) tmp.extra = data.extra;
-					this.selectValue.push(tmp);
-
-				})
-				// 保存这一次的结果,用于下次列发生变化时作比较
-				this.lastSelectIndex = columnIndex;
-			} else if(this.mode == 'single-column') {
-				let data = this.columnData[0][columnIndex[0]];
-				// 初始默认选中值
-				let tmp = {
-					value: data ? data[this.valueName] : null,
-					label: data ? data[this.labelName] : null,
-				};
-				// 判断是否有需要额外携带的参数
-				if(data && data.extra !== undefined) tmp.extra = data.extra;
-				this.selectValue.push(tmp);
-			} else if(this.mode == 'mutil-column') {
-				// 初始默认选中值
-				columnIndex.map((item, index) => {
-					let data = this.columnData[index][columnIndex[index]];
-					// 初始默认选中值
-					let tmp = {
-						value: data ? data[this.valueName] : null,
-						label: data ? data[this.labelName] : null,
-					};
-					// 判断是否有需要额外携带的参数
-					if(data && data.extra !== undefined) tmp.extra = data.extra;
-					this.selectValue.push(tmp);
-				})
-			}
-		},
-		close() {
-			this.$emit('input', false);
-		},
-		// 点击确定或者取消
-		getResult(event = null) {
-			// #ifdef MP-WEIXIN
-			if (this.moving) return;
-			// #endif
-			if (event) this.$emit(event, this.selectValue);
-			this.close();
-		},
-		selectHandler() {
-			this.$emit('click');
-		}
-	}
-};
-</script>
-
-<style scoped lang="scss">
-@import "../../libs/css/style.components.scss";
-
-.u-select {
-
-	&__action {
-		position: relative;
-		line-height: $u-form-item-height;
-		height: $u-form-item-height;
-
-		&__icon {
-			position: absolute;
-			right: 20rpx;
-			top: 50%;
-			transition: transform .4s;
-			transform: translateY(-50%);
-			z-index: 1;
-
-			&--reverse {
-				transform: rotate(-180deg) translateY(50%);
-			}
-		}
-	}
-
-	&__hader {
-		&__title {
-			color: $u-content-color;
-		}
-	}
-
-	&--border {
-		border-radius: 6rpx;
-		border-radius: 4px;
-		border: 1px solid $u-form-item-border-color;
-	}
-
-	&__header {
-		@include vue-flex;
-		align-items: center;
-		justify-content: space-between;
-		height: 80rpx;
-		padding: 0 40rpx;
-	}
-
-	&__body {
-		width: 100%;
-		height: 500rpx;
-		overflow: hidden;
-		background-color: #fff;
-
-		&__picker-view {
-			height: 100%;
-			box-sizing: border-box;
-
-			&__item {
-				@include vue-flex;
-				align-items: center;
-				justify-content: center;
-				font-size: 32rpx;
-				color: $u-main-color;
-				padding: 0 8rpx;
-			}
-		}
-	}
-}
-</style>
diff --git a/uview-ui/components/u-skeleton/u-skeleton.vue b/uview-ui/components/u-skeleton/u-skeleton.vue
deleted file mode 100644
index c8cb19e..0000000
--- a/uview-ui/components/u-skeleton/u-skeleton.vue
+++ /dev/null
@@ -1,199 +0,0 @@
-<template>
-	<view v-if="loading" :style="{
-		width: windowWinth + 'px', 
-		height: windowHeight + 'px', 
-		backgroundColor: bgColor, 
-		position: 'absolute', 
-		left: left + 'px', 
-		top: top + 'px', 
-		zIndex: 9998, 
-		overflow: 'hidden'
-	}"
-	 @touchmove.stop.prevent>
-		<view v-for="(item, index) in RectNodes" :key="$u.guid()" :class="[animation ? 'skeleton-fade' : '']" :style="{
-			width: item.width + 'px', 
-			height: item.height + 'px', 
-			backgroundColor: elColor, 
-			position: 'absolute', 
-			left: (item.left - left) + 'px', 
-			top: (item.top - top) + 'px'
-		}"></view>
-		<view v-for="(item, index) in circleNodes" :key="$u.guid()" :class="animation ? 'skeleton-fade' : ''" :style="{
-			width: item.width + 'px', 
-			height: item.height + 'px', 
-			backgroundColor: elColor, 
-			borderRadius: item.width/2 + 'px', 
-			position: 'absolute', 
-			left: (item.left - left) + 'px',
-			top: (item.top - top) + 'px'
-		}"></view>
-		<view v-for="(item, index) in filletNodes" :key="$u.guid()" :class="animation ? 'skeleton-fade' : ''" :style="{
-			width: item.width + 'px', 
-			height: item.height + 'px', 
-			backgroundColor: elColor, 
-			borderRadius: borderRadius + 'rpx', 
-			position: 'absolute', 
-			left: (item.left - left) + 'px',
-			top: (item.top - top) + 'px'
-		}"></view>
-	</view>
-</template>
-
-<script>
-	/**
-	 * skeleton 骨架屏
-	 * @description 骨架屏一般用于页面在请求远程数据尚未完成时,页面用灰色块预显示本来的页面结构,给用户更好的体验。
-	 * @tutorial https://www.uviewui.com/components/skeleton.html
-	 * @property {String} el-color 骨架块状元素的背景颜色(默认#e5e5e5)
-	 * @property {String} bg-color 骨架组件背景颜色(默认#ffffff)
-	 * @property {Boolean} animation 骨架块是否显示动画效果(默认false)
-	 * @property {String Number} border-radius u-skeleton-fillet类名元素,对应的骨架块的圆角大小,单位rpx(默认10)
-	 * @property {Boolean} loading 是否显示骨架组件,请求完成后,将此值设置为false(默认true)
-	 * @example <u-skeleton :loading="true" :animation="true"></u-skeleton>
-	 */
-	export default {
-		name: "u-skeleton",
-		props: {
-			// 需要渲染的元素背景颜色,十六进制或者rgb等都可以
-			elColor: {
-				type: String,
-				default: '#e5e5e5'
-			},
-			// 整个骨架屏页面的背景颜色
-			bgColor: {
-				type: String,
-				default: '#ffffff'
-			},
-			// 是否显示加载动画
-			animation: {
-				type: Boolean,
-				default: false
-			},
-			// 圆角值,只对类名为u-skeleton-fillet的元素生效,为数值,不带单位
-			borderRadius: {
-				type: [String, Number],
-				default: "10"
-			},
-			// 是否显示骨架,true-显示,false-隐藏
-			loading: {
-				type: Boolean,
-				default: true
-			}
-		},
-		data() {
-			return {
-				windowWinth: 750, // 骨架屏宽度
-				windowHeight: 1500, // 骨架屏高度
-				filletNodes: [], // 圆角元素
-				circleNodes: [], // 圆形元素
-				RectNodes: [], // 矩形元素
-				top: 0,
-				left: 0,
-			}
-		},
-		methods: {
-			// 查询各节点的信息
-			selecterQueryInfo() {
-				// 获取整个父组件容器的高度,当做骨架屏的高度 
-				// 在微信小程序中,如果把骨架屏放入组件中使用的话,需要调in(this)上下文为父组件才有效
-				let query = '';
-				// #ifdef MP-WEIXIN
-				query = uni.createSelectorQuery().in(this.$parent);
-				// #endif
-				// #ifndef MP-WEIXIN
-				query = uni.createSelectorQuery()
-				// #endif
-				query.selectAll('.u-skeleton').boundingClientRect().exec((res) => {
-					this.windowHeight = res[0][0].height;
-					this.windowWinth = res[0][0].width;
-					this.top = res[0][0].bottom - res[0][0].height;
-					this.left = res[0][0].left;
-				});
-				// 矩形骨架元素
-				this.getRectEls();
-				// 圆形骨架元素
-				this.getCircleEls();
-				// 圆角骨架元素
-				this.getFilletEls();
-			},
-			// 矩形元素列表
-			getRectEls() {
-				let query = '';
-				// 在微信小程序中,如果把骨架屏放入组件中使用的话,需要调in(this)上下文为父组件才有效
-				// #ifdef MP-WEIXIN
-				query = uni.createSelectorQuery().in(this.$parent);
-				// #endif
-				// #ifndef MP-WEIXIN
-				query = uni.createSelectorQuery()
-				// #endif
-				query.selectAll('.u-skeleton-rect').boundingClientRect().exec((res) => {
-					this.RectNodes = res[0];
-				});
-			},
-			// 圆角元素列表
-			getFilletEls() {
-				let query = '';
-				// 在微信小程序中,如果把骨架屏放入组件中使用的话,需要调in(this)上下文为父组件才有效
-				// #ifdef MP-WEIXIN
-				query = uni.createSelectorQuery().in(this.$parent);
-				// #endif
-				// #ifndef MP-WEIXIN
-				query = uni.createSelectorQuery()
-				// #endif
-				query.selectAll('.u-skeleton-fillet').boundingClientRect().exec((res) => {
-					this.filletNodes = res[0];
-				});
-			},
-			// 圆形元素列表
-			getCircleEls() {
-				let query = '';
-				// 在微信小程序中,如果把骨架屏放入组件中使用的话,需要调in(this)上下文为父组件才有效
-				// #ifdef MP-WEIXIN
-				query = uni.createSelectorQuery().in(this.$parent);
-				// #endif
-				// #ifndef MP-WEIXIN
-				query = uni.createSelectorQuery()
-				// #endif
-				query.selectAll('.u-skeleton-circle').boundingClientRect().exec((res) => {
-					this.circleNodes = res[0];
-				});
-			}
-		},
-		// 组件被挂载
-		mounted() {
-			// 获取系统信息
-			let systemInfo = uni.getSystemInfoSync();
-			this.windowHeight = systemInfo.windowHeight;
-			this.windowWinth = systemInfo.windowWidth;
-			this.selecterQueryInfo();
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	@import "../../libs/css/style.components.scss";
-	
-	.skeleton-fade {
-		width: 100%;
-		height: 100%;
-		background: rgb(194, 207, 214);
-		animation-duration: 1.5s;
-		animation-name: blink;
-		animation-timing-function: ease-in-out;
-		animation-iteration-count: infinite;
-	}
-
-	@keyframes blink {
-		0% {
-			opacity: 1;
-		}
-
-		50% {
-			opacity: 0.4;
-		}
-
-		100% {
-			opacity: 1;
-		}
-	}
-</style>
diff --git a/uview-ui/components/u-slider/u-slider.vue b/uview-ui/components/u-slider/u-slider.vue
deleted file mode 100644
index 6d21b92..0000000
--- a/uview-ui/components/u-slider/u-slider.vue
+++ /dev/null
@@ -1,257 +0,0 @@
-<template>
-	<view class="u-slider" @tap="onClick" :class="[disabled ? 'u-slider--disabled' : '']" :style="{
-		backgroundColor: inactiveColor
-	}">
-		<view
-			class="u-slider__gap"
-			:style="[
-				barStyle,
-				{
-					height: height + 'rpx',
-					backgroundColor: activeColor
-				}
-			]"
-		>
-			<view class="u-slider__button-wrap" @touchstart="onTouchStart" 
-				@touchmove="onTouchMove" @touchend="onTouchEnd" 
-				@touchcancel="onTouchEnd">
-				<slot v-if="$slots.default  || $slots.$default"/>
-				<view v-else class="u-slider__button" :style="[blockStyle, {
-					height: blockWidth + 'rpx',
-					width: blockWidth + 'rpx',
-					backgroundColor: blockColor
-				}]"></view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-/**
- * slider 滑块选择器
- * @tutorial https://uviewui.com/components/slider.html
- * @property {Number | String} value 滑块默认值(默认0)
- * @property {Number | String} min 最小值(默认0)
- * @property {Number | String} max 最大值(默认100)
- * @property {Number | String} step 步长(默认1)
- * @property {Number | String} blockWidth 滑块宽度,高等于宽(30)
- * @property {Number | String} height 滑块条高度,单位rpx(默认6)
- * @property {String} inactiveColor 底部条背景颜色(默认#c0c4cc)
- * @property {String} activeColor 底部选择部分的背景颜色(默认#2979ff)
- * @property {String} blockColor 滑块颜色(默认#ffffff)
- * @property {Object} blockStyle 给滑块自定义样式,对象形式
- * @property {Boolean} disabled 是否禁用滑块(默认为false)
- * @event {Function} start 滑动触发
- * @event {Function} moving 正在滑动中
- * @event {Function} end 滑动结束
- * @example <u-slider v-model="value" />
- */
-export default {
-	name: 'u-slider',
-	props: {
-		// 当前进度百分比值,范围0-100
-		value: {
-			type: [Number, String],
-			default: 0
-		},
-		// 是否禁用滑块
-		disabled: {
-			type: Boolean,
-			default: false
-		},
-		// 滑块宽度,高等于宽,单位rpx
-		blockWidth: {
-			type: [Number, String],
-			default: 30
-		},
-		// 最小值
-		min: {
-			type: [Number, String],
-			default: 0
-		},
-		// 最大值
-		max: {
-			type: [Number, String],
-			default: 100
-		},
-		// 步进值
-		step: {
-			type: [Number, String],
-			default: 1
-		},
-		// 滑块条高度,单位rpx
-		height: {
-			type: [Number, String],
-			default: 6
-		},
-		// 进度条的激活部分颜色
-		activeColor: {
-			type: String,
-			default: '#2979ff'
-		},
-		// 进度条的背景颜色
-		inactiveColor: {
-			type: String,
-			default: '#c0c4cc'
-		},
-		// 滑块的背景颜色
-		blockColor: {
-			type: String,
-			default: '#ffffff'
-		},
-		// 用户对滑块的自定义颜色
-		blockStyle: {
-			type: Object,
-			default() {
-				return {};
-			}
-		},
-	},
-	data() {
-		return {
-			startX: 0,
-			status: 'end',
-			newValue: 0,
-			distanceX: 0,
-			startValue: 0,
-			barStyle: {},
-			sliderRect: {
-				left: 0,
-				width: 0
-			}
-		};
-	},
-	watch: {
-		value(n) {
-			// 只有在非滑动状态时,才可以通过value更新滑块值,这里监听,是为了让用户触发
-			if(this.status == 'end') this.updateValue(this.value, false);
-		}
-	},
-	created() {
-		this.updateValue(this.value, false);
-	},
-	mounted() {
-		// 获取滑块条的尺寸信息
-		this.$uGetRect('.u-slider').then(rect => {
-			this.sliderRect = rect;
-		});
-	},
-	methods: {
-		onTouchStart(event) {
-			if (this.disabled) return;
-			this.startX = 0;
-			// 触摸点集
-			let touches = event.touches[0];
-			// 触摸点到屏幕左边的距离
-			this.startX = touches.clientX;
-			// 此处的this.value虽为props值,但是通过$emit('input')进行了修改
-			this.startValue = this.format(this.value);
-			// 标示当前的状态为开始触摸滑动
-			this.status = 'start';
-		},
-		onTouchMove(event) {
-			if (this.disabled) return;
-			// 连续触摸的过程会一直触发本方法,但只有手指触发且移动了才被认为是拖动了,才发出事件
-			// 触摸后第一次移动已经将status设置为moving状态,故触摸第二次移动不会触发本事件
-			if (this.status == 'start') this.$emit('start');
-			let touches = event.touches[0];
-			// 滑块的左边不一定跟屏幕左边接壤,所以需要减去最外层父元素的左边值
-			this.distanceX = touches.clientX - this.sliderRect.left;
-			// 获得移动距离对整个滑块的百分比值,此为带有多位小数的值,不能用此更新视图
-			// 否则造成通信阻塞,需要每改变一个step值时修改一次视图
-			this.newValue = (this.distanceX / this.sliderRect.width) * 100;
-			this.status = 'moving';
-			// 发出moving事件
-			this.$emit('moving');
-			this.updateValue(this.newValue, true);
-		},
-		onTouchEnd() {
-			if (this.disabled) return;
-			if (this.status === 'moving') {
-				this.updateValue(this.newValue, false);
-				this.$emit('end');
-			}
-			this.status = 'end';
-		},
-		updateValue(value, drag) {
-			// 去掉小数部分,同时也是对step步进的处理
-			const width = this.format(value);
-			// 不允许滑动的值超过max最大值,百分比也不能超过100
-			if(width > this.max || width > 100) return;
-			// 设置移动的百分比值
-			let barStyle = {
-				width: width + '%'
-			};
-			// 移动期间无需过渡动画
-			if (drag == true) {
-				barStyle.transition = 'none';
-			} else {
-				// 非移动期间,删掉对过渡为空的声明,让css中的声明起效
-				delete barStyle.transition;
-			}
-			// 修改value值
-			this.$emit('input', width);
-			this.barStyle = barStyle;
-		},
-		format(value) {
-			// 将小数变成整数,为了减少对视图的更新,造成视图层与逻辑层的阻塞
-			return Math.round(Math.max(this.min, Math.min(value, this.max)) / this.step) * this.step;
-		},
-		onClick(event) {
-			if (this.disabled) return;
-			// 直接点击滑块的情况,计算方式与onTouchMove方法相同
-			const value = ((event.detail.x - this.sliderRect.left) / this.sliderRect.width) * 100;
-			this.updateValue(value, false);
-		}
-	}
-};
-</script>
-
-<style lang="scss" scoped>
-@import "../../libs/css/style.components.scss";
-
-.u-slider {
-	position: relative;
-	border-radius: 999px;
-	border-radius: 999px;
-	background-color: #ebedf0;
-}
-
-.u-slider:before {
-	position: absolute;
-	right: 0;
-	left: 0;
-	content: '';
-	top: -8px;
-	bottom: -8px;
-	z-index: -1;
-}
-
-.u-slider__gap {
-	position: relative;
-	border-radius: inherit;
-	transition: width 0.2s;
-	transition: width 0.2s;
-	background-color: #1989fa;
-}
-
-.u-slider__button {
-	width: 24px;
-	height: 24px;
-	border-radius: 50%;
-	box-shadow: 0 1px 2px rgba(0, 0, 0, 0.5);
-	background-color: #fff;
-	cursor: pointer;
-}
-
-.u-slider__button-wrap {
-	position: absolute;
-	top: 50%;
-	right: 0;
-	transform: translate3d(50%, -50%, 0);
-}
-
-.u-slider--disabled {
-	opacity: 0.5;
-}
-</style>
diff --git a/uview-ui/components/u-steps/u-steps.vue b/uview-ui/components/u-steps/u-steps.vue
deleted file mode 100644
index a72cfcf..0000000
--- a/uview-ui/components/u-steps/u-steps.vue
+++ /dev/null
@@ -1,200 +0,0 @@
-<template>
-	<view class="">
-		<view
-			class="u-steps"
-			:style="{
-				flexDirection: direction
-			}"
-		>
-			<view class="u-steps__item" 
-				:class="['u-steps__item--' + direction]" 
-				v-for="(item, index) in list" :key="index"
-			>
-				<view
-					class="u-steps__item__num"
-					v-if="mode == 'number'"
-					:style="{
-						backgroundColor: current < index ? 'transparent' : activeColor,
-						borderColor: current < index ? unActiveColor : activeColor
-					}"
-				>
-					<text v-if="current < index" :style="{
-						color: current < index ? unActiveColor : activeColor,
-					}">
-						{{ index + 1 }}
-					</text>
-					<u-icon v-else size="22" color="#ffffff" :name="icon"></u-icon>
-				</view>
-				<view class="u-steps__item__dot" v-if="mode == 'dot'" :style="{ 
-					backgroundColor: index <= current ? activeColor : unActiveColor 
-				}"></view>
-				<text class="u-line-1" :style="{ 
-					color: index <= current ? activeColor : unActiveColor,
-				}" :class="['u-steps__item__text--' + direction]">
-					{{ item.name }}
-				</text>
-				<view class="u-steps__item__line" :class="['u-steps__item__line--' + mode]" v-if="index < list.length - 1">
-					<u-line :direction="direction" length="100%" :hair-line="false" :color="unActiveColor"></u-line>
-				</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-/**
- * steps 步骤条
- * @description 该组件一般用于完成一个任务要分几个步骤,标识目前处于第几步的场景。
- * @tutorial https://www.uviewui.com/components/steps.html
- * @property {String} mode 设置模式(默认dot)
- * @property {Array} list 数轴条数据,数组。具体见上方示例
- * @property {String} type type主题(默认primary)
- * @property {String} direction row-横向,column-竖向(默认row)
- * @property {Number String} current 设置当前处于第几步
- * @property {String} active-color 已完成步骤的激活颜色,如设置,type值会失效
- * @property {String} un-active-color 未激活的颜色,用于表示未完成步骤的颜色(默认#606266)
- * @example <u-steps :list="numList" active-color="#fa3534"></u-steps>
- */
-export default {
-	name: 'u-steps',
-	props: {
-		// 步骤条的类型,dot|number
-		mode: {
-			type: String,
-			default: 'dot'
-		},
-		// 步骤条的数据
-		list: {
-			type: Array,
-			default() {
-				return [];
-			}
-		},
-		// 主题类型, primary|success|info|warning|error
-		type: {
-			type: String,
-			default: 'primary'
-		},
-		// 当前哪一步是激活的
-		current: {
-			type: [Number, String],
-			default: 0
-		},
-		// 激活步骤的颜色
-		activeColor: {
-			type: String,
-			default: '#2979ff'
-		},
-		// 未激活的颜色
-		unActiveColor: {
-			type: String,
-			default: '#909399'
-		},
-		// 自定义图标
-		icon: {
-			type: String,
-			default: 'checkmark'
-		},
-		// step的排列方向,row-横向,column-竖向
-		direction: {
-			type: String,
-			default: 'row'
-		}
-	},
-	data() {
-		return {};
-	},
-};
-</script>
-
-<style lang="scss" scoped>
-@import '../../libs/css/style.components.scss';
-
-$u-steps-item-number-width: 44rpx;
-$u-steps-item-dot-width: 20rpx;
-
-.u-steps {
-	@include vue-flex;
-	
-	.u-steps__item {
-		flex: 1;
-		text-align: center;
-		position: relative;
-		min-width: 100rpx;
-		font-size: 26rpx;
-		color: #8799a3;
-		@include vue-flex;
-		justify-content: center;
-		flex-direction: column;
-		align-items: center;
-		
-		&--row {
-			@include vue-flex;
-			flex-direction: column;
-			
-			.u-steps__item__line {
-				position: absolute;
-				z-index: 0;
-				left: 75%;
-				width: 50%;
-				
-				&--dot {
-					top: calc(#{$u-steps-item-dot-width} / 2);
-				}
-				
-				&--number {
-					top: calc(#{$u-steps-item-number-width} / 2);
-				}
-			}
-		}
-		
-		&--column {
-			@include vue-flex;
-			flex-direction: row;
-			justify-content: flex-start;
-			min-height: 120rpx;
-			
-			.u-steps__item__line {
-				position: absolute;
-				z-index: 0;
-				height: 50%;
-				top: 75%;
-				
-				&--dot {
-					left: calc(#{$u-steps-item-dot-width} / 2);
-				}
-				
-				&--number {
-					left: calc(#{$u-steps-item-number-width} / 2);
-				}
-			}
-		}
-		
-		&__num {
-			@include vue-flex;
-			align-items: center;
-			justify-content: center;
-			width: $u-steps-item-number-width;
-			height: $u-steps-item-number-width;
-			border: 1px solid #8799a3;
-			border-radius: 50%;
-			overflow: hidden;
-		}
-		
-		&__dot {
-			width: $u-steps-item-dot-width;
-			height: $u-steps-item-dot-width;
-			@include vue-flex;
-			border-radius: 50%;
-		}
-		
-		&__text--row {
-			margin-top: 14rpx;
-		}
-		
-		&__text--column {
-			margin-left: 14rpx;
-		}
-	}
-}
-</style>
diff --git a/uview-ui/components/u-sticky/u-sticky.vue b/uview-ui/components/u-sticky/u-sticky.vue
deleted file mode 100644
index d9bc34c..0000000
--- a/uview-ui/components/u-sticky/u-sticky.vue
+++ /dev/null
@@ -1,157 +0,0 @@
-<template>
-	<view class="">
-		<view class="u-sticky-wrap" :class="[elClass]" :style="{
-			height: fixed ? height + 'px' : 'auto',
-			backgroundColor: bgColor
-		}">
-			<view class="u-sticky" :style="{
-				position: fixed ? 'fixed' : 'static',
-				top: stickyTop + 'px',
-				left: left + 'px',
-				width: width == 'auto' ? 'auto' : width + 'px',
-				zIndex: uZIndex
-			}">
-				<slot></slot>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	/**
-	 * sticky 吸顶
-	 * @description 该组件与CSS中position: sticky属性实现的效果一致,当组件达到预设的到顶部距离时, 就会固定在指定位置,组件位置大于预设的顶部距离时,会重新按照正常的布局排列。
-	 * @tutorial https://www.uviewui.com/components/sticky.html
-	 * @property {String Number} offset-top 吸顶时与顶部的距离,单位rpx(默认0)
-	 * @property {String Number} index 自定义标识,用于区分是哪一个组件
-	 * @property {Boolean} enable 是否开启吸顶功能(默认true)
-	 * @property {String} bg-color 组件背景颜色(默认#ffffff)
-	 * @property {String Number} z-index 吸顶时的z-index值(默认970)
-	 * @property {String Number} h5-nav-height 导航栏高度,自定义导航栏时(无导航栏时需设置为0),需要传入此值,单位px(默认44)
-	 * @event {Function} fixed 组件吸顶时触发
-	 * @event {Function} unfixed 组件取消吸顶时触发
-	 * @example <u-sticky offset-top="200"><view>塞下秋来风景异,衡阳雁去无留意</view></u-sticky>
-	 */
-	export default {
-		name: "u-sticky",
-		props: {
-			// 吸顶容器到顶部某个距离的时候,进行吸顶,在H5平台,NavigationBar为44px
-			offsetTop: {
-				type: [Number, String],
-				default: 0
-			},
-			//列表中的索引值
-			index: {
-				type: [Number, String],
-				default: ''
-			},
-			// 是否开启吸顶功能
-			enable: {
-				type: Boolean,
-				default: true
-			},
-			// h5顶部导航栏的高度
-			h5NavHeight: {
-				type: [Number, String],
-				default: 44
-			},
-			// 吸顶区域的背景颜色
-			bgColor: {
-				type: String,
-				default: '#ffffff'
-			},
-			// z-index值
-			zIndex: {
-				type: [Number, String],
-				default: ''
-			}
-		},
-		data() {
-			return {
-				fixed: false,
-				height: 'auto',
-				stickyTop: 0,
-				elClass: this.$u.guid(),
-				left: 0,
-				width: 'auto',
-			};
-		},
-		watch: {
-			offsetTop(val) {
-				this.initObserver();
-			},
-			enable(val) {
-				if (val == false) {
-					this.fixed = false;
-					this.disconnectObserver('contentObserver');
-				} else {
-					this.initObserver();
-				}
-			}
-		},
-		computed: {
-			uZIndex() {
-				return this.zIndex ? this.zIndex : this.$u.zIndex.sticky;
-			}
-		},
-		mounted() {
-			this.initObserver();
-		},
-		methods: {
-			initObserver() {
-				if (!this.enable) return;
-				// #ifdef H5
-				this.stickyTop = this.offsetTop != 0 ? uni.upx2px(this.offsetTop) + this.h5NavHeight : this.h5NavHeight;
-				// #endif
-				// #ifndef H5
-				this.stickyTop = this.offsetTop != 0 ? uni.upx2px(this.offsetTop) : 0;
-				// #endif
-
-				this.disconnectObserver('contentObserver');
-				this.$uGetRect('.' + this.elClass).then((res) => {
-					this.height = res.height;
-					this.left = res.left;
-					this.width = res.width;
-					this.$nextTick(() => {
-						this.observeContent();
-					});
-				});
-			},
-			observeContent() {
-				this.disconnectObserver('contentObserver');
-				const contentObserver = this.createIntersectionObserver({
-					thresholds: [0.95, 0.98, 1]
-				});
-				contentObserver.relativeToViewport({
-					top: -this.stickyTop
-				});
-				contentObserver.observe('.' + this.elClass, res => {
-					if (!this.enable) return;
-					this.setFixed(res.boundingClientRect.top);
-				});
-				this.contentObserver = contentObserver;
-			},
-			setFixed(top) {
-				const fixed = top < this.stickyTop;
-				if (fixed) this.$emit('fixed', this.index);
-				else if(this.fixed) this.$emit('unfixed', this.index);
-				this.fixed = fixed;
-			},
-			disconnectObserver(observerName) {
-				const observer = this[observerName];
-				observer && observer.disconnect();
-			},
-		},
-		beforeDestroy() {
-			this.disconnectObserver('contentObserver');
-		}
-	};
-</script>
-
-<style scoped lang="scss">
-	@import "../../libs/css/style.components.scss";
-	
-	.u-sticky {
-		z-index: 9999999999;
-	}
-</style>
diff --git a/uview-ui/components/u-subsection/u-subsection.vue b/uview-ui/components/u-subsection/u-subsection.vue
deleted file mode 100644
index b8fbd79..0000000
--- a/uview-ui/components/u-subsection/u-subsection.vue
+++ /dev/null
@@ -1,355 +0,0 @@
-<template>
-	<view class="u-subsection" :style="[subsectionStyle]">
-		<view class="u-item u-line-1" :style="[itemStyle(index)]" @tap="click(index)" :class="[noBorderRight(index), 'u-item-' + index]"
-		 v-for="(item, index) in listInfo" :key="index">
-			<view :style="[textStyle(index)]" class="u-item-text u-line-1">{{ item.name }}</view>
-		</view>
-		<view class="u-item-bg" :style="[itemBarStyle]"></view>
-	</view>
-</template>
-
-<script>
-	/**
-	 * subsection 分段器
-	 * @description 该分段器一般用于用户从几个选项中选择某一个的场景
-	 * @tutorial https://www.uviewui.com/components/subsection.html
-	 * @property {Array} list 选项的数组,形式见上方"基本使用"
-	 * @property {String Number} current 初始化时默认选中的选项索引值(默认0)
-	 * @property {String} active-color 激活时的颜色,mode为subsection时固定为白色(默认#303133)
-	 * @property {String} inactive-color 未激活时字体的颜色,mode为subsection时无效(默认#606266)
-	 * @property {String} mode 模式选择,见官网"模式选择"说明(默认button)
-	 * @property {String Number} font-size 字体大小,单位rpx(默认28)
-	 * @property {String Number} height 组件高度,单位rpx(默认70)
-	 * @property {Boolean} animation 是否开启动画效果,见上方说明(默认true)
-	 * @property {Boolean} bold 激活选项的字体是否加粗(默认true)
-	 * @property {String} bg-color 组件背景颜色,mode为button时有效(默认#eeeeef)
-	 * @property {String} button-color 按钮背景颜色,mode为button时有效(默认#ffffff)
-	 * @event {Function} change 分段器选项发生改变时触发
-	 * @example <u-subsection active-color="#ff9900"></u-subsection>
-	 */
-	export default {
-		name: "u-subsection",
-		props: {
-			// tab的数据
-			list: {
-				type: Array,
-				default () {
-					return [];
-				}
-			},
-			// 当前活动的tab的index
-			current: {
-				type: [Number, String],
-				default: 0
-			},
-			// 激活的颜色
-			activeColor: {
-				type: String,
-				default: '#303133'
-			},
-			// 未激活的颜色
-			inactiveColor: {
-				type: String,
-				default: '#606266'
-			},
-			// 模式选择,mode=button为按钮形式,mode=subsection时为分段模式
-			mode: {
-				type: String,
-				default: 'button'
-			},
-			// 字体大小,单位rpx
-			fontSize: {
-				type: [Number, String],
-				default: 28
-			},
-			// 是否开启动画效果
-			animation: {
-				type: Boolean,
-				default: true
-			},
-			// 组件的高度,单位rpx
-			height: {
-				type: [Number, String],
-				default: 70
-			},
-			// 激活tab的字体是否加粗
-			bold: {
-				type: Boolean,
-				default: true
-			},
-			// mode=button时,组件背景颜色
-			bgColor: {
-				type: String,
-				default: '#eeeeef'
-			},
-			// mode = button时,滑块背景颜色
-			buttonColor: {
-				type: String,
-				default: '#ffffff'
-			},
-			// 在切换分段器的时候,是否让设备震一下
-			vibrateShort: {
-				type: Boolean,
-				default: false
-			}
-		},
-		data() {
-			return {
-				listInfo: [],
-				itemBgStyle: {
-					width: 0,
-					left: 0,
-					backgroundColor: '#ffffff',
-					height: '100%',
-					transition: ''
-				},
-				currentIndex: this.current,
-				buttonPadding: 3, // mode = button 时,组件的内边距
-				borderRadius: 5, // 圆角值
-				firstTimeVibrateShort: true // 组件初始化时,会触发current变化,此时不应震动
-			};
-		},
-		watch: {
-			current: {
-				immediate: true,
-				handler(nVal) {
-					this.currentIndex = nVal;
-					this.changeSectionStatus(nVal);
-				}
-			}
-		},
-		created() {
-			// 将list的数据,传入listInfo数组,因为不能修改props传递的list值
-			// 可以接受直接数组形式,或者数组元素为对象的形式,如:['简介', '评论'],或者[{name: '简介'}, {name: '评论'}]
-			this.listInfo = this.list.map((val, index) => {
-				if (typeof val != 'object') {
-					let obj = {
-						width: 0,
-						name: val
-					};
-					return obj;
-				} else {
-					val.width = 0;
-					return val;
-				}
-			});
-		},
-		computed: {
-			// 设置mode=subsection时,滑块特有的样式
-			noBorderRight() {
-				return index => {
-					if (this.mode != 'subsection') return;
-					let classs = '';
-					// 不显示右边的边框
-					if (index < this.list.length - 1) classs += ' u-none-border-right';
-					// 显示整个组件的左右边圆角
-					if (index == 0) classs += ' u-item-first';
-					if (index == this.list.length - 1) classs += ' u-item-last';
-					return classs;
-				};
-			},
-			// 文字的样式
-			textStyle() {
-				return index => {
-					let style = {};
-					// 设置字体颜色
-					if (this.mode == 'subsection') {
-						if (index == this.currentIndex) {
-							style.color = '#ffffff';
-						} else {
-							style.color = this.activeColor;
-						}
-					} else {
-						if (index == this.currentIndex) {
-							style.color = this.activeColor;
-						} else {
-							style.color = this.inactiveColor;
-						}
-					}
-					// 字体加粗
-					if (index == this.currentIndex && this.bold) style.fontWeight = 'bold';
-					// 文字大小
-					style.fontSize = this.fontSize + 'rpx';
-					return style;
-				};
-			},
-			// 每个分段器item的样式
-			itemStyle() {
-				return index => {
-					let style = {};
-					if (this.mode == 'subsection') {
-						// 设置border的样式
-						style.borderColor = this.activeColor;
-						style.borderWidth = '1px';
-						style.borderStyle = 'solid';
-					}
-					return style;
-				};
-			},
-			// mode=button时,外层view的样式
-			subsectionStyle() {
-				let style = {};
-				style.height = uni.upx2px(this.height) + 'px';
-				if (this.mode == 'button') {
-					style.backgroundColor = this.bgColor;
-					style.padding = `${this.buttonPadding}px`;
-					style.borderRadius = `${this.borderRadius}px`;
-				}
-				return style;
-			},
-			// 滑块的样式
-			itemBarStyle() {
-				let style = {};
-				style.backgroundColor = this.activeColor;
-				style.zIndex = 1;
-				if (this.mode == 'button') {
-					style.backgroundColor = this.buttonColor;
-					style.borderRadius = `${this.borderRadius}px`;
-					style.bottom = `${this.buttonPadding}px`;
-					style.height = uni.upx2px(this.height) - this.buttonPadding * 2 + 'px';
-					style.zIndex = 0;
-				}
-				return Object.assign(this.itemBgStyle, style);
-			}
-		},
-		mounted() {
-			setTimeout(() => {
-				this.getTabsInfo();
-			}, 10);
-		},
-		methods: {
-			// 改变滑块的样式
-			changeSectionStatus(nVal) {
-				if (this.mode == 'subsection') {
-					// 根据滑块在最左边和最右边时,显示左边和右边的圆角
-					if (nVal == this.list.length - 1) {
-						this.itemBgStyle.borderRadius = `0 ${this.buttonPadding}px ${this.buttonPadding}px 0`;
-					}
-					if (nVal == 0) {
-						this.itemBgStyle.borderRadius = `${this.buttonPadding}px 0 0 ${this.buttonPadding}px`;
-					}
-					if (nVal > 0 && nVal < this.list.length - 1) {
-						this.itemBgStyle.borderRadius = '0';
-					}
-				}
-				// 更新滑块的位置
-				setTimeout(() => {
-					this.itemBgLeft();
-				}, 10);
-				if (this.vibrateShort && !this.firstTimeVibrateShort) {
-					// 使手机产生短促震动,微信小程序有效,APP(HX 2.6.8)和H5无效
-					// #ifndef H5
-					uni.vibrateShort();
-					// #endif
-				}
-				// 第一次过后,设置firstTimeVibrateShort为false,让其下一次可以震动(如果允许震动的话)
-				this.firstTimeVibrateShort = false;
-			},
-			click(index) {
-				// 不允许点击当前激活选项
-				if (index == this.currentIndex) return;
-				this.currentIndex = index;
-				this.changeSectionStatus(index);
-				this.$emit('change', Number(index));
-			},
-			// 获取各个tab的节点信息
-			getTabsInfo() {
-				let view = uni.createSelectorQuery().in(this);
-				for (let i = 0; i < this.list.length; i++) {
-					view.select('.u-item-' + i).boundingClientRect();
-				}
-				view.exec(res => {
-					if (!res.length) {
-						setTimeout(() => {
-							this.getTabsInfo();
-							return;
-						}, 10);
-					}
-					// 将分段器每个item的宽度,放入listInfo数组
-					res.map((val, index) => {
-						this.listInfo[index].width = val.width;
-					});
-					// 初始化滑块的宽度
-					if (this.mode == 'subsection') {
-						this.itemBgStyle.width = this.listInfo[0].width + 'px';
-					} else if (this.mode == 'button') {
-						this.itemBgStyle.width = this.listInfo[0].width + 'px';
-					}
-					// 初始化滑块的位置
-					this.itemBgLeft();
-				});
-			},
-			itemBgLeft() {
-				// 根据是否开启动画效果,
-				if (this.animation) {
-					this.itemBgStyle.transition = 'all 0.35s';
-				} else {
-					this.itemBgStyle.transition = 'all 0s';
-				}
-				let left = 0;
-				// 计算当前活跃item到组件左边的距离
-				this.listInfo.map((val, index) => {
-					if (index < this.currentIndex) left += val.width;
-				});
-				// 根据mode不同模式,计算滑块需要移动的距离
-				if (this.mode == 'subsection') {
-					this.itemBgStyle.left = left + 'px';
-				} else if (this.mode == 'button') {
-					this.itemBgStyle.left = left + this.buttonPadding + 'px';
-				}
-			}
-		}
-	};
-</script>
-
-<style lang="scss" scoped>
-	@import "../../libs/css/style.components.scss";
-	
-	.u-subsection {
-		@include vue-flex;
-		align-items: center;
-		overflow: hidden;
-		position: relative;
-	}
-
-	.u-item {
-		flex: 1;
-		text-align: center;
-		font-size: 26rpx;
-		height: 100%;
-		@include vue-flex;
-		align-items: center;
-		justify-content: center;
-		color: $u-main-color;
-		padding: 0 6rpx;
-	}
-
-	.u-item-bg {
-		background-color: $u-type-primary;
-		position: absolute;
-		z-index: -1;
-	}
-
-	.u-none-border-right {
-		border-right: none !important;
-	}
-
-	.u-item-first {
-		border-top-left-radius: 8rpx;
-		border-bottom-left-radius: 8rpx;
-	}
-
-	.u-item-last {
-		border-top-right-radius: 8rpx;
-		border-bottom-right-radius: 8rpx;
-	}
-
-	.u-item-text {
-		transition: all 0.35s;
-		color: $u-main-color;
-		@include vue-flex;
-		align-items: center;
-		position: relative;
-		z-index: 3;
-	}
-</style>
diff --git a/uview-ui/components/u-swipe-action/u-swipe-action.vue b/uview-ui/components/u-swipe-action/u-swipe-action.vue
deleted file mode 100644
index 13fb33c..0000000
--- a/uview-ui/components/u-swipe-action/u-swipe-action.vue
+++ /dev/null
@@ -1,255 +0,0 @@
-<template>
-	<view class="">
-		<movable-area class="u-swipe-action" :style="{ backgroundColor: bgColor }">
-			<movable-view
-				class="u-swipe-view"
-				@change="change"
-				@touchend="touchend"
-				@touchstart="touchstart"
-				direction="horizontal"
-				:disabled="disabled"
-				:x="moveX"
-				:style="{
-					width: movableViewWidth ? movableViewWidth : '100%'
-				}"
-			>
-				<view
-					class="u-swipe-content"
-					@tap.stop="contentClick"
-				>
-					<slot></slot>
-				</view>
-				<view class="u-swipe-del" v-if="showBtn" @tap.stop="btnClick(index)" :style="[btnStyle(item.style)]" v-for="(item, index) in options" :key="index">
-					<view class="u-btn-text">{{ item.text }}</view>
-				</view>
-			</movable-view>
-		</movable-area>
-	</view>
-</template>
-
-<script>
-/**
- * swipeAction 左滑单元格
- * @description 该组件一般用于左滑唤出操作菜单的场景,用的最多的是左滑删除操作。
- * @tutorial https://www.uviewui.com/components/swipeAction.html
- * @property {String} bg-color 整个组件背景颜色(默认#ffffff)
- * @property {Array} options 数组形式,可以配置背景颜色和文字
- * @property {String Number} index 标识符,点击时候用于区分点击了哪一个,用v-for循环时的index即可
- * @property {String Number} btn-width 按钮宽度,单位rpx(默认180)
- * @property {Boolean} disabled 是否禁止某个swipeAction滑动(默认false)
- * @property {Boolean} show 打开或者关闭某个组件(默认false)
- * @event {Function} click 点击组件时触发
- * @event {Function} close 组件触发关闭状态时
- * @event {Function} content-click 点击内容时触发
- * @event {Function} open 组件触发打开状态时
- * @example <u-swipe-action btn-text="收藏">...</u-swipe-action>
- */
-export default {
-	name: 'u-swipe-action',
-	props: {
-		// index值,用于得知点击删除的是哪个按钮
-		index: {
-			type: [Number, String],
-			default: ''
-		},
-		// 滑动按钮的宽度,单位为rpx
-		btnWidth: {
-			type: [String, Number],
-			default: 180
-		},
-		// 是否禁止某个action滑动
-		disabled: {
-			type: Boolean,
-			default: false
-		},
-		// 打开或者关闭组件
-		show: {
-			type: Boolean,
-			default: false
-		},
-		// 组件背景颜色
-		bgColor: {
-			type: String,
-			default: '#ffffff'
-		},
-		// 是否使手机发生短促震动,目前只在iOS的微信小程序有效(2020-05-06)
-		vibrateShort: {
-			type: Boolean,
-			default: false
-		},
-		// 按钮操作参数
-		options: {
-			type: Array,
-			default() {
-				return [];
-			}
-		}
-	},
-	watch: {
-		show: {
-			immediate: true,
-			handler(nVal, oVal) {
-				if (nVal) {
-					this.open();
-				} else {
-					this.close();
-				}
-			}
-		}
-	},
-	data() {
-		return {
-			moveX: 0, // movable-view元素在x轴上需要移动的目标移动距离,用于展开或收起滑动的按钮
-			scrollX: 0, // movable-view移动过程中产生的change事件中的x轴移动值
-			status: false, // 滑动的状态,表示当前是展开还是关闭按钮的状态
-			movableAreaWidth: 0, // 滑动区域
-			elId: this.$u.guid(), // id,用于通知另外组件关闭时的识别
-			showBtn: false, // 刚开始渲染视图时不显示右边的按钮,避免视图闪动
-		};
-	},
-	computed: {
-		movableViewWidth() {
-			return this.movableAreaWidth + this.allBtnWidth + 'px';
-		},
-		innerBtnWidth() {
-			return uni.upx2px(this.btnWidth);
-		},
-		allBtnWidth() {
-			return uni.upx2px(this.btnWidth) * this.options.length;
-		},
-		btnStyle() {
-			return style => {
-				let css = {};
-				style.width = this.btnWidth + 'rpx';
-				return style;
-			};
-		}
-	},
-	mounted() {
-		this.getActionRect();
-	},
-	methods: {
-		// 点击按钮
-		btnClick(index) {
-			this.status = false;
-			// this.index为点击的几个组件,index为点击某个组件的第几个按钮(options数组的索引)
-			this.$emit('click', this.index, index);
-		},
-		// movable-view元素移动事件
-		change(e) {
-			this.scrollX = e.detail.x;
-		},
-		// 关闭按钮状态
-		close() {
-			this.moveX = 0;
-			this.status = false;
-		},
-		// 打开按钮的状态
-		open() {
-			if (this.disabled) return;
-			this.moveX = -this.allBtnWidth;
-			this.status = true;
-		},
-		// 用户手指离开movable-view元素,停止触摸
-		touchend() {
-			this.moveX = this.scrollX;
-			// 停止触摸时候,判断当前是展开还是关闭状态
-			// 关闭状态
-			// 这一步很重要,需要先给this.moveX一个变化的随机值,否则因为前后设置的为同一个值
-			// props单向数据流的原因,导致movable-view元素不会发生变化,切记,详见文档:
-			// https://uniapp.dcloud.io/use?id=%e5%b8%b8%e8%a7%81%e9%97%ae%e9%a2%98
-			this.$nextTick(function() {
-				if (this.status == false) {
-					// 关闭状态左滑,产生的x轴位移为负值,也就是说滑动的距离大于按钮的四分之一宽度,自动展开按钮
-					if (this.scrollX <= -this.allBtnWidth / 4) {
-						this.moveX = -this.allBtnWidth; // 按钮宽度的负值,即为展开状态movable-view元素左滑的距离
-						this.status = true; // 标志当前为展开状态
-						this.emitOpenEvent();
-						// 产生震动效果
-						if (this.vibrateShort) uni.vibrateShort();
-					} else {
-						this.moveX = 0; // 如果距离没有按钮宽度的四分之一,自动收起
-						this.status = false;
-						this.emitCloseEvent();
-					}
-				} else {
-					// 如果在打开的状态下,右滑动的距离X轴偏移超过按钮的四分之一(负值反过来的四分之三),自动收起按钮
-					if (this.scrollX > (-this.allBtnWidth * 3) / 4) {
-						this.moveX = 0;
-						this.$nextTick(() => {
-							this.moveX = 101;
-						});
-						this.status = false;
-						this.emitCloseEvent();
-					} else {
-						this.moveX = -this.allBtnWidth;
-						this.status = true;
-						this.emitOpenEvent();
-					}
-				}
-			});
-		},
-		emitOpenEvent() {
-			this.$emit('open', this.index);
-		},
-		emitCloseEvent() {
-			this.$emit('close', this.index);
-		},
-		// 开始触摸
-		touchstart() {},
-		getActionRect() {
-			this.$uGetRect('.u-swipe-action').then(res => {
-				this.movableAreaWidth = res.width;
-				// 等视图更新完后,再显示右边的可滑动按钮,防止这些按钮会"闪一下"
-				this.$nextTick(() => {
-					this.showBtn = true;
-				})
-			});
-		},
-		// 点击内容触发事件
-		contentClick() {
-			// 点击内容时,如果当前为打开状态,收起组件
-			if (this.status == true) {
-				this.status = 'close';
-				this.moveX = 0;
-			}
-			this.$emit('content-click', this.index);
-		}
-	}
-};
-</script>
-
-<style scoped lang="scss">
-@import "../../libs/css/style.components.scss";
-	
-.u-swipe-action {
-	width: auto;
-	height: initial;
-	position: relative;
-	overflow: hidden;
-}
-
-.u-swipe-view {
-	@include vue-flex;
-	height: initial;
-	position: relative;
-	/* 这一句很关键,覆盖默认的绝对定位 */
-}
-
-.u-swipe-content {
-	flex: 1;
-}
-
-.u-swipe-del {
-	position: relative;
-	font-size: 30rpx;
-	color: #ffffff;
-}
-
-.u-btn-text {
-	position: absolute;
-	top: 50%;
-	left: 50%;
-	transform: translate(-50%, -50%);
-}
-</style>
diff --git a/uview-ui/components/u-swiper/u-swiper.vue b/uview-ui/components/u-swiper/u-swiper.vue
deleted file mode 100644
index b6e7e81..0000000
--- a/uview-ui/components/u-swiper/u-swiper.vue
+++ /dev/null
@@ -1,340 +0,0 @@
-<template>
-	<view class="u-swiper-wrap" :style="{
-		borderRadius: `${borderRadius}rpx`
-	}">
-		<swiper :current="elCurrent" @change="change" @animationfinish="animationfinish" :interval="interval" :circular="circular" :duration="duration" :autoplay="autoplay"
-		 :previous-margin="effect3d ? effect3dPreviousMargin + 'rpx' : '0'" :next-margin="effect3d ? effect3dPreviousMargin + 'rpx' : '0'"
-		 :style="{
-				height: height + 'rpx',
-				backgroundColor: bgColor
-			}">
-			<swiper-item class="u-swiper-item" v-for="(item, index) in list" :key="index">
-				<view class="u-list-image-wrap" @tap.stop.prevent="listClick(index)" :class="[uCurrent != index ? 'u-list-scale' : '']" :style="{
-						borderRadius: `${borderRadius}rpx`,
-						transform: effect3d && uCurrent != index ? 'scaleY(0.9)' : 'scaleY(1)',
-						margin: effect3d && uCurrent != index ? '0 20rpx' : 0,
-					}">
-					<image class="u-swiper-image" :src="item[name] || item" :mode="imgMode"></image>
-					<view v-if="title && item.title" class="u-swiper-title u-line-1" :style="[{
-							'padding-bottom': titlePaddingBottom
-						}, titleStyle]">
-						{{ item.title }}
-					</view>
-				</view>
-			</swiper-item>
-		</swiper>
-		<view class="u-swiper-indicator" :style="{
-				top: indicatorPos == 'topLeft' || indicatorPos == 'topCenter' || indicatorPos == 'topRight' ? '12rpx' : 'auto',
-				bottom: indicatorPos == 'bottomLeft' || indicatorPos == 'bottomCenter' || indicatorPos == 'bottomRight' ? '12rpx' : 'auto',
-				justifyContent: justifyContent,
-				padding: `0 ${effect3d ? '74rpx' : '24rpx'}`
-			}">
-			<block v-if="mode == 'rect'">
-				<view class="u-indicator-item-rect" :class="{ 'u-indicator-item-rect-active': index == uCurrent }" v-for="(item, index) in list"
-				 :key="index"></view>
-			</block>
-			<block v-if="mode == 'dot'">
-				<view class="u-indicator-item-dot" :class="{ 'u-indicator-item-dot-active': index == uCurrent }" v-for="(item, index) in list"
-				 :key="index"></view>
-			</block>
-			<block v-if="mode == 'round'">
-				<view class="u-indicator-item-round" :class="{ 'u-indicator-item-round-active': index == uCurrent }" v-for="(item, index) in list"
-				 :key="index"></view>
-			</block>
-			<block v-if="mode == 'number'">
-				<view class="u-indicator-item-number">{{ uCurrent + 1 }}/{{ list.length }}</view>
-			</block>
-		</view>
-	</view>
-</template>
-
-<script>
-	/**
-	 * swiper 轮播图
-	 * @description 该组件一般用于导航轮播,广告展示等场景,可开箱即用
-	 * @tutorial https://www.uviewui.com/components/swiper.html
-	 * @property {Array} list 轮播图数据,见官网"基本使用"说明
-	 * @property {Boolean} title 是否显示标题文字,需要配合list参数,见官网说明(默认false)
-	 * @property {String} mode 指示器模式,见官网说明(默认round)
-	 * @property {String Number} height 轮播图组件高度,单位rpx(默认250)
-	 * @property {String} indicator-pos 指示器的位置(默认bottomCenter)
-	 * @property {Boolean} effect3d 是否开启3D效果(默认false)
-	 * @property {Boolean} autoplay 是否自动播放(默认true)
-	 * @property {String Number} interval 自动轮播时间间隔,单位ms(默认2500)
-	 * @property {Boolean} circular 是否衔接播放,见官网说明(默认true)
-	 * @property {String} bg-color 背景颜色(默认#f3f4f6)
-	 * @property {String Number} border-radius 轮播图圆角值,单位rpx(默认8)
-	 * @property {Object} title-style 自定义标题样式
-	 * @property {String Number} effect3d-previous-margin mode = true模式的情况下,激活项与前后项之间的距离,单位rpx(默认50)
-	 * @property {String} img-mode 图片的裁剪模式,详见image组件裁剪模式(默认aspectFill)
-	 * @event {Function} click 点击轮播图时触发
-	 * @example <u-swiper :list="list" mode="dot" indicator-pos="bottomRight"></u-swiper>
-	 */
-	export default {
-		name: "u-swiper",
-		props: {
-			// 轮播图的数据,格式如:[{image: 'xxxx', title: 'xxxx'},{image: 'yyyy', title: 'yyyy'}],其中title字段可选
-			list: {
-				type: Array,
-				default () {
-					return [];
-				}
-			},
-			// 是否显示title标题
-			title: {
-				type: Boolean,
-				default: false
-			},
-			// 用户自定义的指示器的样式
-			indicator: {
-				type: Object,
-				default () {
-					return {};
-				}
-			},
-			// 圆角值
-			borderRadius: {
-				type: [Number, String],
-				default: 8
-			},
-			// 隔多久自动切换
-			interval: {
-				type: [String, Number],
-				default: 3000
-			},
-			// 指示器的模式,rect|dot|number|round
-			mode: {
-				type: String,
-				default: 'round'
-			},
-			// list的高度,单位rpx
-			height: {
-				type: [Number, String],
-				default: 250
-			},
-			// 指示器的位置,topLeft|topCenter|topRight|bottomLeft|bottomCenter|bottomRight
-			indicatorPos: {
-				type: String,
-				default: 'bottomCenter'
-			},
-			// 是否开启缩放效果
-			effect3d: {
-				type: Boolean,
-				default: false
-			},
-			// 3D模式的情况下,激活item与前后item之间的距离,单位rpx
-			effect3dPreviousMargin: {
-				type: [Number, String],
-				default: 50
-			},
-			// 是否自动播放
-			autoplay: {
-				type: Boolean,
-				default: true
-			},
-			// 自动轮播时间间隔,单位ms
-			duration: {
-				type: [Number, String],
-				default: 500
-			},
-			// 是否衔接滑动,即到最后一张时接着滑动,是否自动切换到第一张
-			circular: {
-				type: Boolean,
-				default: true
-			},
-			// 图片的裁剪模式 
-			imgMode: {
-				type: String,
-				default: 'aspectFill'
-			},
-			// 从list数组中读取的图片的属性名
-			name: {
-				type: String,
-				default: 'image'
-			},
-			// 背景颜色
-			bgColor: {
-				type: String,
-				default: '#f3f4f6'
-			},
-			// 初始化时,默认显示第几项
-			current: {
-				type: [Number, String],
-				default: 0
-			},
-			// 标题的样式,对象形式
-			titleStyle: {
-				type: Object,
-				default() {
-					return {}
-				}
-			}
-		},
-		watch: {
-			// 如果外部的list发生变化,判断长度是否被修改,如果前后长度不一致,重置uCurrent值,避免溢出
-			list(nVal, oVal) {
-				if(nVal.length !== oVal.length) this.uCurrent = 0;
-			},
-			// 监听外部current的变化,实时修改内部依赖于此测uCurrent值,如果更新了current,而不是更新uCurrent,
-			// 就会错乱,因为指示器是依赖于uCurrent的
-			current(n) {
-				this.uCurrent = n;
-			}
-		},
-		data() {
-			return {
-				uCurrent: this.current // 当前活跃的swiper-item的index
-			};
-		},
-		computed: {
-			justifyContent() {
-				if (this.indicatorPos == 'topLeft' || this.indicatorPos == 'bottomLeft') return 'flex-start';
-				if (this.indicatorPos == 'topCenter' || this.indicatorPos == 'bottomCenter') return 'center';
-				if (this.indicatorPos == 'topRight' || this.indicatorPos == 'bottomRight') return 'flex-end';
-			},
-			titlePaddingBottom() {
-				let tmp = 0;
-				if (this.mode == 'none') return '12rpx';
-				if (['bottomLeft', 'bottomCenter', 'bottomRight'].indexOf(this.indicatorPos) >= 0 && this.mode == 'number') {
-					tmp = '60rpx';
-				} else if (['bottomLeft', 'bottomCenter', 'bottomRight'].indexOf(this.indicatorPos) >= 0 && this.mode != 'number') {
-					tmp = '40rpx';
-				} else {
-					tmp = '12rpx';
-				}
-				return tmp;
-			},
-			// 因为uni的swiper组件的current参数只接受Number类型,这里做一个转换
-			elCurrent() {
-				return Number(this.current);
-			}
-		},
-		methods: {
-			listClick(index) {
-				this.$emit('click', index);
-			},
-			change(e) {
-				let current = e.detail.current;
-				this.uCurrent = current;
-				// 发出change事件,表示当前自动切换的index,从0开始
-				this.$emit('change', current);
-			},
-			// 头条小程序不支持animationfinish事件,改由change事件
-			// 暂不监听此事件,因为不再给swiper绑定uCurrent属性
-			animationfinish(e) {
-				// #ifndef MP-TOUTIAO
-				// this.uCurrent = e.detail.current;
-				// #endif
-			}
-		}
-	};
-</script>
-
-<style lang="scss" scoped>
-	@import "../../libs/css/style.components.scss";
-	
-	.u-swiper-wrap {
-		position: relative;
-		overflow: hidden;
-		transform: translateY(0);
-	}
-
-	.u-swiper-image {
-		width: 100%;
-		will-change: transform;
-		height: 100%;
-		/* #ifndef APP-NVUE */
-		display: block;
-		/* #endif */
-		/* #ifdef H5 */
-		pointer-events: none;
-		/* #endif */
-	}
-
-	.u-swiper-indicator {
-		padding: 0 24rpx;
-		position: absolute;
-		@include vue-flex;
-		width: 100%;
-		z-index: 1;
-	}
-
-	.u-indicator-item-rect {
-		width: 26rpx;
-		height: 8rpx;
-		margin: 0 6rpx;
-		transition: all 0.5s;
-		background-color: rgba(0, 0, 0, 0.3);
-	}
-
-	.u-indicator-item-rect-active {
-		background-color: rgba(255, 255, 255, 0.8);
-	}
-
-	.u-indicator-item-dot {
-		width: 14rpx;
-		height: 14rpx;
-		margin: 0 6rpx;
-		border-radius: 20rpx;
-		transition: all 0.5s;
-		background-color: rgba(0, 0, 0, 0.3);
-	}
-
-	.u-indicator-item-dot-active {
-		background-color: rgba(255, 255, 255, 0.8);
-	}
-
-	.u-indicator-item-round {
-		width: 14rpx;
-		height: 14rpx;
-		margin: 0 6rpx;
-		border-radius: 20rpx;
-		transition: all 0.5s;
-		background-color: rgba(0, 0, 0, 0.3);
-	}
-
-	.u-indicator-item-round-active {
-		width: 34rpx;
-		background-color: rgba(255, 255, 255, 0.8);
-	}
-
-	.u-indicator-item-number {
-		padding: 6rpx 16rpx;
-		line-height: 1;
-		background-color: rgba(0, 0, 0, 0.3);
-		border-radius: 100rpx;
-		font-size: 26rpx;
-		color: rgba(255, 255, 255, 0.8);
-	}
-
-	.u-list-scale {
-		transform-origin: center center;
-	}
-
-	.u-list-image-wrap {
-		width: 100%;
-		height: 100%;
-		flex: 1;
-		transition: all 0.5s;
-		overflow: hidden;
-		box-sizing: content-box;
-		position: relative;
-	}
-
-	.u-swiper-title {
-		position: absolute;
-		background-color: rgba(0, 0, 0, 0.3);
-		bottom: 0;
-		left: 0;
-		width: 100%;
-		font-size: 28rpx;
-		padding: 12rpx 24rpx;
-		color: rgba(255, 255, 255, 0.9);
-	}
-
-	.u-swiper-item {
-		@include vue-flex;
-		overflow: hidden;
-		align-items: center;
-	}
-</style>
diff --git a/uview-ui/components/u-switch/u-switch.vue b/uview-ui/components/u-switch/u-switch.vue
deleted file mode 100644
index dd8e4bb..0000000
--- a/uview-ui/components/u-switch/u-switch.vue
+++ /dev/null
@@ -1,163 +0,0 @@
-<template>
-	<view class="u-switch" :class="[value == true ? 'u-switch--on' : '', disabled ? 'u-switch--disabled' : '']" @tap="onClick"
-	 :style="[switchStyle]">
-		<view class="u-switch__node node-class" :style="{
-			width: $u.addUnit(this.size),
-			height: $u.addUnit(this.size)
-		}">
-			<u-loading :show="loading" class="u-switch__loading" :size="size * 0.6" :color="loadingColor" />
-		</view>
-	</view>
-</template>
-
-<script>
-	/**
-	 * switch 开关选择器
-	 * @description 选择开关一般用于只有两个选择,且只能选其一的场景。
-	 * @tutorial https://www.uviewui.com/components/switch.html
-	 * @property {Boolean} loading 是否处于加载中(默认false)
-	 * @property {Boolean} disabled 是否禁用(默认false)
-	 * @property {String Number} size 开关尺寸,单位rpx(默认50)
-	 * @property {String} active-color 打开时的背景色(默认#2979ff)
-	 * @property {Boolean} inactive-color 关闭时的背景色(默认#ffffff)
-	 * @property {Boolean | Number | String} active-value 打开选择器时通过change事件发出的值(默认true)
-	 * @property {Boolean | Number | String} inactive-value 关闭选择器时通过change事件发出的值(默认false)
-	 * @event {Function} change 在switch打开或关闭时触发
-	 * @example <u-switch v-model="checked" active-color="red" inactive-color="#eee"></u-switch>
-	 */
-	export default {
-		name: "u-switch",
-		props: {
-			// 是否为加载中状态
-			loading: {
-				type: Boolean,
-				default: false
-			},
-			// 是否为禁用装填
-			disabled: {
-				type: Boolean,
-				default: false
-			},
-			// 开关尺寸,单位rpx
-			size: {
-				type: [Number, String],
-				default: 50
-			},
-			// 打开时的背景颜色
-			activeColor: {
-				type: String,
-				default: '#2979ff'
-			},
-			// 关闭时的背景颜色
-			inactiveColor: {
-				type: String,
-				default: '#ffffff'
-			},
-			// 通过v-model双向绑定的值
-			value: {
-				type: Boolean,
-				default: false
-			},
-			// 是否使手机发生短促震动,目前只在iOS的微信小程序有效(2020-05-06)
-			vibrateShort: {
-				type: Boolean,
-				default: false
-			},
-			// 打开选择器时的值
-			activeValue: {
-				type: [Number, String, Boolean],
-				default: true
-			},
-			// 关闭选择器时的值
-			inactiveValue: {
-				type: [Number, String, Boolean],
-				default: false
-			},
-		},
-		data() {
-			return {
-
-			}
-		},
-		computed: {
-			switchStyle() {
-				let style = {};
-				style.fontSize = this.size + 'rpx';
-				style.backgroundColor = this.value ? this.activeColor : this.inactiveColor;
-				return style;
-			},
-			loadingColor() {
-				return this.value ? this.activeColor : null;
-			}
-		},
-		methods: {
-			onClick() {
-				if (!this.disabled && !this.loading) {
-					// 使手机产生短促震动,微信小程序有效,APP(HX 2.6.8)和H5无效
-					if(this.vibrateShort) uni.vibrateShort();
-					this.$emit('input', !this.value);
-					// 放到下一个生命周期,因为双向绑定的value修改父组件状态需要时间,且是异步的
-					this.$nextTick(() => {
-						this.$emit('change', this.value ? this.activeValue : this.inactiveValue);
-					})
-				}
-			}
-		}
-	};
-</script>
-
-<style lang="scss" scoped>
-	@import "../../libs/css/style.components.scss";
-	
-	.u-switch {
-		position: relative;
-		/* #ifndef APP-NVUE */
-		display: inline-block;
-		/* #endif */
-		box-sizing: initial;
-		width: 2em;
-		height: 1em;
-		background-color: #fff;
-		border: 1px solid rgba(0, 0, 0, 0.1);
-		border-radius: 1em;
-		transition: background-color 0.3s;
-		font-size: 50rpx;
-	}
-
-	.u-switch__node {
-		@include vue-flex;
-		align-items: center;
-		justify-content: center;
-		position: absolute;
-		top: 0;
-		left: 0;
-		border-radius: 100%;
-		z-index: 1;
-		background-color: #fff;
-		background-color: #fff;
-		box-shadow: 0 3px 1px 0 rgba(0, 0, 0, 0.05), 0 2px 2px 0 rgba(0, 0, 0, 0.1), 0 3px 3px 0 rgba(0, 0, 0, 0.05);
-		box-shadow: 0 3px 1px 0 rgba(0, 0, 0, 0.05), 0 2px 2px 0 rgba(0, 0, 0, 0.1), 0 3px 3px 0 rgba(0, 0, 0, 0.05);
-		transition: transform 0.3s cubic-bezier(0.3, 1.05, 0.4, 1.05);
-		transition: transform 0.3s cubic-bezier(0.3, 1.05, 0.4, 1.05), -webkit-transform 0.3s cubic-bezier(0.3, 1.05, 0.4, 1.05);
-		transition: transform cubic-bezier(0.3, 1.05, 0.4, 1.05);
-		transition: transform 0.3s cubic-bezier(0.3, 1.05, 0.4, 1.05)
-	}
-
-	.u-switch__loading {
-		@include vue-flex;
-		align-items: center;
-		justify-content: center;
-	}
-
-	.u-switch--on {
-		background-color: #1989fa;
-	}
-
-	.u-switch--on .u-switch__node {
-		transform: translateX(100%);
-	}
-
-	.u-switch--disabled {
-		opacity: 0.4;
-	}
-</style>
diff --git a/uview-ui/components/u-tabbar/u-tabbar.vue b/uview-ui/components/u-tabbar/u-tabbar.vue
deleted file mode 100644
index 2e1b6a2..0000000
--- a/uview-ui/components/u-tabbar/u-tabbar.vue
+++ /dev/null
@@ -1,330 +0,0 @@
-<template>
-	<view v-if="show" class="u-tabbar" @touchmove.stop.prevent="() => {}">
-		<view class="u-tabbar__content safe-area-inset-bottom" :style="{
-			height: $u.addUnit(height),
-			backgroundColor: bgColor,
-		}" :class="{
-			'u-border-top': borderTop
-		}">
-			<view class="u-tabbar__content__item" v-for="(item, index) in list" :key="index" :class="{
-				'u-tabbar__content__circle': midButton &&item.midButton
-			}" @tap.stop="clickHandler(index)" :style="{
-				backgroundColor: bgColor
-			}">
-				<view :class="[
-					midButton && item.midButton ? 'u-tabbar__content__circle__button' : 'u-tabbar__content__item__button'
-				]">
-					<u-icon
-						:size="midButton && item.midButton ? midButtonSize : iconSize"
-						:name="elIconPath(index)"
-						img-mode="scaleToFill"
-						:color="elColor(index)"
-						:custom-prefix="item.customIcon ? 'custom-icon' : 'uicon'"
-					></u-icon>
-					<u-badge :count="item.count" :is-dot="item.isDot"
-						v-if="item.count || item.isDot"
-						:offset="[-2, getOffsetRight(item.count, item.isDot)]"
-					></u-badge>
-				</view>
-				<view class="u-tabbar__content__item__text" :style="{
-					color: elColor(index)
-				}">
-					<text class="u-line-1">{{item.text}}</text>
-				</view>
-			</view>
-			<view v-if="midButton" class="u-tabbar__content__circle__border" :class="{
-				'u-border': borderTop,
-			}" :style="{
-				backgroundColor: bgColor,
-				left: midButtonLeft
-			}">
-			</view>
-		</view>
-		<!-- 这里加上一个48rpx的高度,是为了增高有凸起按钮时的防塌陷高度(也即按钮凸出来部分的高度) -->
-		<view class="u-fixed-placeholder safe-area-inset-bottom" :style="{
-				height: `calc(${$u.addUnit(height)} + ${midButton ? 48 : 0}rpx)`,
-			}"></view>
-	</view>
-</template>
-
-<script>
-	export default {
-		props: {
-			// 显示与否
-			show: {
-				type: Boolean,
-				default: true
-			},
-			// 通过v-model绑定current值
-			value: {
-				type: [String, Number],
-				default: 0
-			},
-			// 整个tabbar的背景颜色
-			bgColor: {
-				type: String,
-				default: '#ffffff'
-			},
-			// tabbar的高度,默认50px,单位任意,如果为数值,则为rpx单位
-			height: {
-				type: [String, Number],
-				default: '50px'
-			},
-			// 非凸起图标的大小,单位任意,数值默认rpx
-			iconSize: {
-				type: [String, Number],
-				default: 40
-			},
-			// 凸起的图标的大小,单位任意,数值默认rpx
-			midButtonSize: {
-				type: [String, Number],
-				default: 90
-			},
-			// 激活时的演示,包括字体图标,提示文字等的演示
-			activeColor: {
-				type: String,
-				default: '#303133'
-			},
-			// 未激活时的颜色
-			inactiveColor: {
-				type: String,
-				default: '#606266'
-			},
-			// 是否显示中部的凸起按钮
-			midButton: {
-				type: Boolean,
-				default: false
-			},
-			// 配置参数
-			list: {
-				type: Array,
-				default () {
-					return []
-				}
-			},
-			// 切换前的回调
-			beforeSwitch: {
-				type: Function,
-				default: null
-			},
-			// 是否显示顶部的横线
-			borderTop: {
-				type: Boolean,
-				default: true
-			},
-			// 是否隐藏原生tabbar
-			hideTabBar: {
-				type: Boolean,
-				default: true
-			},
-		},
-		data() {
-			return {
-				// 由于安卓太菜了,通过css居中凸起按钮的外层元素有误差,故通过js计算将其居中
-				midButtonLeft: '50%',
-				pageUrl: '', // 当前页面URL
-			}
-		},
-		created() {
-			// 是否隐藏原生tabbar
-			if(this.hideTabBar) uni.hideTabBar();
-			// 获取引入了u-tabbar页面的路由地址,该地址没有路径前面的"/"
-			let pages = getCurrentPages();
-			// 页面栈中的最后一个即为项为当前页面,route属性为页面路径
-			this.pageUrl = pages[pages.length - 1].route;
-		},
-		computed: {
-			elIconPath() {
-				return (index) => {
-					// 历遍u-tabbar的每一项item时,判断是否传入了pagePath参数,如果传入了
-					// 和data中的pageUrl参数对比,如果相等,即可判断当前的item对应当前的tabbar页面,设置高亮图标
-					// 采用这个方法,可以无需使用v-model绑定的value值
-					let pagePath = this.list[index].pagePath;
-					// 如果定义了pagePath属性,意味着使用系统自带tabbar方案,否则使用一个页面用几个组件模拟tabbar页面的方案
-					// 这两个方案对处理tabbar item的激活与否方式不一样
-					if(pagePath) {
-						if(pagePath == this.pageUrl || pagePath == '/' + this.pageUrl) {
-							return this.list[index].selectedIconPath;
-						} else {
-							return this.list[index].iconPath;
-						}
-					} else {
-						// 普通方案中,索引等于v-model值时,即为激活项
-						return index == this.value ? this.list[index].selectedIconPath : this.list[index].iconPath
-					}
-				}
-			},
-			elColor() {
-				return (index) => {
-					// 判断方法同理于elIconPath
-					let pagePath = this.list[index].pagePath;
-					if(pagePath) {
-						if(pagePath == this.pageUrl || pagePath == '/' + this.pageUrl) return this.activeColor;
-						else return this.inactiveColor;
-					} else {
-						return index == this.value ? this.activeColor : this.inactiveColor;
-					}
-				}
-			}
-		},
-		mounted() {
-			this.midButton && this.getMidButtonLeft();
-		},
-		methods: {
-			async clickHandler(index) {
-				if(this.beforeSwitch && typeof(this.beforeSwitch) === 'function') {
-					// 执行回调,同时传入索引当作参数
-					// 在微信,支付宝等环境(H5正常),会导致父组件定义的customBack()函数体中的this变成子组件的this
-					// 通过bind()方法,绑定父组件的this,让this.customBack()的this为父组件的上下文
-					let beforeSwitch = this.beforeSwitch.bind(this.$u.$parent.call(this))(index);
-					// 判断是否返回了promise
-					if (!!beforeSwitch && typeof beforeSwitch.then === 'function') {
-						await beforeSwitch.then(res => {
-							// promise返回成功,
-							this.switchTab(index);
-						}).catch(err => {
-
-						})
-					} else if(beforeSwitch === true) {
-						// 如果返回true
-						this.switchTab(index);
-					}
-				} else {
-					this.switchTab(index);
-				}
-			},
-			// 切换tab
-			switchTab(index) {
-				// 发出事件和修改v-model绑定的值
-				this.$emit('change', index);
-				// 如果有配置pagePath属性,使用uni.switchTab进行跳转
-				if(this.list[index].pagePath) {
-					uni.switchTab({
-						url: this.list[index].pagePath
-					})
-				} else {
-					// 如果配置了papgePath属性,将不会双向绑定v-model传入的value值
-					// 因为这个模式下,不再需要v-model绑定的value值了,而是通过getCurrentPages()适配
-					this.$emit('input', index);
-				}
-			},
-			// 计算角标的right值
-			getOffsetRight(count, isDot) {
-				// 点类型,count大于9(两位数),分别设置不同的right值,避免位置太挤
-				if(isDot) {
-					return -20;
-				} else if(count > 9) {
-					return -40;
-				} else {
-					return -30;
-				}
-			},
-			// 获取凸起按钮外层元素的left值,让其水平居中
-			getMidButtonLeft() {
-				let windowWidth = this.$u.sys().windowWidth;
-				// 由于安卓中css计算left: 50%的结果不准确,故用js计算
-				this.midButtonLeft = (windowWidth / 2) + 'px';
-			}
-		}
-	}
-</script>
-
-<style scoped lang="scss">
-	@import "../../libs/css/style.components.scss";
-	.u-fixed-placeholder {
-		/* #ifndef APP-NVUE */
-		box-sizing: content-box;
-		/* #endif */
-	}
-
-	.u-tabbar {
-
-		&__content {
-			@include vue-flex;
-			align-items: center;
-			position: relative;
-			position: fixed;
-			bottom: 0;
-			left: 0;
-			width: 100%;
-			z-index: 998;
-			/* #ifndef APP-NVUE */
-			box-sizing: content-box;
-			/* #endif */
-
-			&__circle__border {
-				border-radius: 100%;
-				width: 110rpx;
-				height: 110rpx;
-				top: -48rpx;
-				position: absolute;
-				z-index: 4;
-				background-color: #ffffff;
-				// 由于安卓的无能,导致只有3个tabbar item时,此css计算方式有误差
-				// 故使用js计算的形式来定位,此处不注释,是因为js计算有延后,避免出现位置闪动
-				left: 50%;
-				transform: translateX(-50%);
-
-				&:after {
-					border-radius: 100px;
-				}
-			}
-
-			&__item {
-				flex: 1;
-				justify-content: center;
-				height: 100%;
-				padding: 12rpx 0;
-				@include vue-flex;
-				flex-direction: column;
-				align-items: center;
-				position: relative;
-
-				&__button {
-					position: absolute;
-					top: 14rpx;
-					left: 50%;
-					transform: translateX(-50%);
-				}
-
-				&__text {
-					color: $u-content-color;
-					font-size: 26rpx;
-					line-height: 28rpx;
-					position: absolute;
-					bottom: 14rpx;
-					left: 50%;
-					transform: translateX(-50%);
-					width: 100%;
-					text-align: center;
-				}
-			}
-
-			&__circle {
-				position: relative;
-				@include vue-flex;
-				flex-direction: column;
-				justify-content: space-between;
-				z-index: 10;
-				/* #ifndef APP-NVUE */
-				height: calc(100% - 1px);
-				/* #endif */
-
-				&__button {
-					width: 90rpx;
-					height: 90rpx;
-					border-radius: 100%;
-					@include vue-flex;
-					justify-content: center;
-					align-items: center;
-					position: absolute;
-					background-color: #ffffff;
-					top: -40rpx;
-					left: 50%;
-					z-index: 6;
-					transform: translateX(-50%);
-				}
-			}
-		}
-	}
-</style>
diff --git a/uview-ui/components/u-table/u-table.vue b/uview-ui/components/u-table/u-table.vue
deleted file mode 100644
index 79df16f..0000000
--- a/uview-ui/components/u-table/u-table.vue
+++ /dev/null
@@ -1,84 +0,0 @@
-<template>
-	<view class="u-table" :style="[tableStyle]">
-		<slot />
-	</view>
-</template>
-
-<script>
-	/**
-	 * table 表格
-	 * @description 表格组件一般用于展示大量结构化数据的场景
-	 * @tutorial https://www.uviewui.com/components/table.html
-	 * @property {String} border-color 表格边框的颜色(默认#e4e7ed)
-	 * @property {String} bg-color 表格的背景颜色(默认#ffffff)
-	 * @property {String} align 单元格的内容对齐方式,作用类似css的text-align(默认center)
-	 * @property {String} padding 单元格的内边距,同css的padding写法(默认10rpx 0)
-	 * @property {String Number} font-size 单元格字体大小,单位rpx(默认28)
-	 * @property {String} color 单元格字体颜色(默认#606266)
-	 * @property {Object} th-style th单元格的样式,对象形式(将th所需参数放在table组件,是为了避免每一个th组件要写一遍)
-	 * @event {Function} click 点击组件时触发
-	 * @event {Function} close 点击关闭按钮时触发
-	 * @example <u-table></u-table>
-	 */
-	export default {
-		name: "u-table",
-		props: {
-			borderColor: {
-				type: String,
-				default: '#e4e7ed'
-			},
-			align: {
-				type: String,
-				default: 'center'
-			},
-			// td的内边距
-			padding: {
-				type: String,
-				default: '10rpx 6rpx'
-			},
-			// 字体大小
-			fontSize: {
-				type: [String, Number],
-				default: 28
-			},
-			// 字体颜色
-			color: {
-				type: String,
-				default: '#606266'
-			},
-			// th的自定义样式
-			thStyle: {
-				type: Object,
-				default () {
-					return {}
-				}
-			},
-			// table的背景颜色
-			bgColor: {
-				type: String,
-				default: '#ffffff'
-			}
-		},
-		data() {
-			return {}
-		},
-		computed: {
-			tableStyle() {
-				let style = {};
-				style.borderLeft = `solid 1px ${this.borderColor}`;
-				style.borderTop = `solid 1px ${this.borderColor}`;
-				style.backgroundColor = this.bgColor;;
-				return style;
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	@import "../../libs/css/style.components.scss";
-	
-	.u-table {
-		width: 100%;
-		box-sizing: border-box;
-	}
-</style>
diff --git a/uview-ui/components/u-tabs-swiper/u-tabs-swiper.vue b/uview-ui/components/u-tabs-swiper/u-tabs-swiper.vue
deleted file mode 100644
index a53e261..0000000
--- a/uview-ui/components/u-tabs-swiper/u-tabs-swiper.vue
+++ /dev/null
@@ -1,488 +0,0 @@
-<template>
-	<view class="u-tabs" :style="{
-			zIndex: zIndex,
-			background: bgColor
-		}">
-		<scroll-view scroll-x class="u-scroll-view" :scroll-left="scrollLeft" scroll-with-animation :style="{ zIndex: zIndex + 1 }">
-			<view class="u-tabs-scroll-box" :class="{'u-tabs-scorll-flex': !isScroll}">
-				<view class="u-tabs-item" :style="[tabItemStyle(index)]"
-				 v-for="(item, index) in getTabs" :key="index" :class="[preId + index]" @tap="emit(index)">
-					<u-badge :count="item[count] || item['count'] || 0" :offset="offset" size="mini"></u-badge>
-					{{ item[name] || item['name']}}
-				</view>
-				<view v-if="showBar" class="u-scroll-bar" :style="[tabBarStyle]"></view>
-			</view>
-		</scroll-view>
-	</view>
-</template>
-
-<script>
-	import colorGradient from '../../libs/function/colorGradient';
-	let color = colorGradient;
-	const { windowWidth } = uni.getSystemInfoSync();
-	const preId = 'UEl_';
-
-	/**
-	 * tabsSwiper 全屏选项卡
-	 * @description 该组件内部实现主要依托于uniapp的scroll-view和swiper组件,主要特色是切换过程中,tabsSwiper文字的颜色可以渐变,底部滑块可以 跟随式滑动,活动tab滚动居中等。应用场景可以用于需要左右切换页面,比如商城的订单中心(待收货-待付款-待评价-已退货)等应用场景。
-	 * @tutorial https://www.uviewui.com/components/tabsSwiper.html
-	 * @property {Boolean} is-scroll tabs是否可以左右拖动(默认true)
-	 * @property {Array} list 标签数组,元素为对象,如[{name: '推荐'}]
-	 * @property {String Number} current 指定哪个tab为激活状态(默认0)
-	 * @property {String Number} height 导航栏的高度,单位rpx(默认80)
-	 * @property {String Number} font-size tab文字大小,单位rpx(默认30)
-	 * @property {String Number} swiper-width tabs组件外部swiper的宽度,默认为屏幕宽度,单位rpx(默认750)
-	 * @property {String} active-color 滑块和激活tab文字的颜色(默认#2979ff)
-	 * @property {String} inactive-color tabs文字颜色(默认#303133)
-	 * @property {String Number} bar-width 滑块宽度,单位rpx(默认40)
-	 * @property {String Number} bar-height 滑块高度,单位rpx(默认6)
-	 * @property {Object} bar-style 底部滑块的样式,对象形式
-	 * @property {Object} active-item-style 活动tabs item的样式,对象形式
-	 * @property {Boolean} show-bar 是否显示底部的滑块(默认true)
-	 * @property {String Number} gutter 单个tab标签的左右内边距之和,单位rpx(默认40)
-	 * @property {String} bg-color tabs导航栏的背景颜色(默认#ffffff)
-	 * @property {String} name 组件内部读取的list参数中的属性名,见官网说明(默认name)
-	 * @property {String} count 组件内部读取的list参数中的属性名(badge徽标数),同name属性的使用,见官网说明(默认count)
-	 * @property {Array} offset 设置badge徽标数的位置偏移,格式为 [x, y],也即设置的为top和right的值,单位rpx(默认[5, 20])
-	 * @property {Boolean} bold 激活选项的字体是否加粗(默认true)
-	 * @event {Function} change 点击标签时触发
-	 * @example <u-tabs-swiper ref="tabs" :list="list" :is-scroll="false"></u-tabs-swiper>
-	 */
-	export default {
-		name: "u-tabs-swiper",
-		props: {
-			// 导航菜单是否需要滚动,如只有2或者3个的时候,就不需要滚动了,此时使用flex平分tab的宽度
-			isScroll: {
-				type: Boolean,
-				default: true
-			},
-			//需循环的标签列表
-			list: {
-				type: Array,
-				default () {
-					return [];
-				}
-			},
-			// 当前活动tab的索引
-			current: {
-				type: [Number, String],
-				default: 0
-			},
-			// 导航栏的高度和行高,单位rpx
-			height: {
-				type: [Number, String],
-				default: 80
-			},
-			// 字体大小,单位rpx
-			fontSize: {
-				type: [Number, String],
-				default: 30
-			},
-			// 过渡动画时长, 单位s
-			// duration: {
-			// 	type: [Number, String],
-			// 	default: 0.5
-			// },
-			swiperWidth: {
-				//line3生效, 外部swiper的宽度, 单位rpx
-				type: [String, Number],
-				default: 750
-			},
-			// 选中项的主题颜色
-			activeColor: {
-				type: String,
-				default: '#2979ff'
-			},
-			// 未选中项的颜色
-			inactiveColor: {
-				type: String,
-				default: '#303133'
-			},
-			// 菜单底部移动的bar的宽度,单位rpx
-			barWidth: {
-				type: [Number, String],
-				default: 40
-			},
-			// 移动bar的高度
-			barHeight: {
-				type: [Number, String],
-				default: 6
-			},
-			// 单个tab的左或右内边距(各占一半),单位rpx
-			gutter: {
-				type: [Number, String],
-				default: 40
-			},
-			// 如果是绝对定位,添加z-index值
-			zIndex: {
-				type: [Number, String],
-				default: 1
-			},
-			// 导航栏的背景颜色
-			bgColor: {
-				type: String,
-				default: '#ffffff'
-			},
-			//滚动至中心目标类型
-			autoCenterMode: {
-				type: String,
-				default: 'window'
-			},
-			// 读取传入的数组对象的属性(tab名称)
-			name: {
-				type: String,
-				default: 'name'
-			},
-			// 读取传入的数组对象的属性(徽标数)
-			count: {
-				type: String,
-				default: 'count'
-			},
-			// 徽标数位置偏移
-			offset: {
-				type: Array,
-				default: () => {
-					return [5, 20]
-				}
-			},
-			// 活动tab字体是否加粗
-			bold: {
-				type: Boolean,
-				default: true
-			},
-			// 当前活动tab item的样式
-			activeItemStyle: {
-				type: Object,
-				default() {
-					return {}
-				}
-			},
-			// 是否显示底部的滑块
-			showBar: {
-				type: Boolean,
-				default: true
-			},
-			// 底部滑块的自定义样式
-			barStyle: {
-				type: Object,
-				default() {
-					return {}
-				}
-			}
-		},
-		data() {
-			return {
-				scrollLeft: 0, // 滚动scroll-view的左边滚动距离
-				tabQueryInfo: [], // 存放对tab菜单查询后的节点信息
-				windowWidth: 0, // 屏幕宽度,单位为px
-				//scrollBarLeft: 0, // 移动bar需要通过translateX()移动的距离
-				animationFinishCurrent: this.current,
-				componentsWidth: 0,
-				line3AddDx: 0,
-				line3Dx: 0,
-				preId,
-				sW: 0,
-				tabsInfo: [],
-				colorGradientArr: [],
-				colorStep: 100 // 两个颜色之间的渐变等分
-			};
-		},
-		computed: {
-			// 获取当前活跃的current值
-			getCurrent() {
-				const current = Number(this.current);
-				// 判断是否超出边界
-				if (current > this.getTabs.length - 1) {
-					return this.getTabs.length - 1;
-				}
-				if (current < 0) return 0;
-				return current;
-			},
-			getTabs() {
-				return this.list;
-			},
-			// 滑块需要移动的距离
-			scrollBarLeft() {
-				return Number(this.line3Dx) + Number(this.line3AddDx);
-			},
-			// 滑块的宽度转为px单位
-			barWidthPx() {
-				return uni.upx2px(this.barWidth);
-			},
-			// tab的样式
-			tabItemStyle() {
-				return (index) => {
-					let style = {
-						height: this.height + 'rpx',
-						lineHeight: this.height + 'rpx',
-						padding: `0 ${this.gutter / 2}rpx`,
-						color: this.tabsInfo.length > 0 ? (this.tabsInfo[index] ? this.tabsInfo[index].color : this.activeColor) : this.inactiveColor,
-						fontSize: this.fontSize + 'rpx',
-						zIndex: this.zIndex + 2,
-						fontWeight: (index == this.getCurrent && this.bold) ? 'bold' : 'normal'
-					};
-					if(index == this.getCurrent) {
-						// 给选中的tab item添加外部自定义的样式
-						style = Object.assign(style, this.activeItemStyle);
-					}
-					return style;
-				}
-			},
-			// 底部滑块的样式
-			tabBarStyle() {
-				let style = {
-					width: this.barWidthPx + 'px',
-					height: this.barHeight + 'rpx',
-					borderRadius: '100px',
-					backgroundColor: this.activeColor,
-					left: this.scrollBarLeft + 'px'
-				};
-				return Object.assign(style, this.barStyle);
-			}
-		},
-		watch: {
-			current(n, o) {
-				this.change(n);
-				this.setFinishCurrent(n);
-			},
-			list() {
-				this.$nextTick(() => {
-					this.init();
-				})
-			}
-		},
-		mounted() {
-			this.init();
-		},
-		methods: {
-			async init() {
-				this.countPx();
-				await this.getTabsInfo();
-				this.countLine3Dx();
-				this.getQuery(() => {
-					this.setScrollViewToCenter();
-				});
-				// 颜色渐变过程数组
-				this.colorGradientArr = color.colorGradient(this.inactiveColor, this.activeColor, this.colorStep);
-			},
-			// 获取各个tab的节点信息
-			getTabsInfo() {
-				return new Promise((resolve, reject) => {
-					let view = uni.createSelectorQuery().in(this);
-					for (let i = 0; i < this.list.length; i++) {
-						view.select('.' + preId + i).boundingClientRect();
-					}
-					view.exec(res => {
-						const arr = [];
-						for (let i = 0; i < res.length; i++) {
-							// 给每个tab添加其文字颜色属性
-							res[i].color = this.inactiveColor;
-							// 当前tab直接赋予activeColor
-							if (i == this.getCurrent) res[i].color = this.activeColor;
-							arr.push(res[i]);
-						}
-						this.tabsInfo = arr;
-						resolve();
-					});
-				})
-			},
-			// 当swiper滑动结束,计算滑块最终要停留的位置
-			countLine3Dx() {
-				const tab = this.tabsInfo[this.animationFinishCurrent];
-				// 让滑块中心点和当前tab中心重合
-				if (tab) this.line3Dx = tab.left + tab.width / 2 - this.barWidthPx / 2 - this.tabsInfo[0].left;
-			},
-			countPx() {
-				// swiper宽度由rpx转为px单位,因为dx等,都是px单位
-				this.sW = uni.upx2px(Number(this.swiperWidth));
-			},
-			emit(index) {
-				this.$emit('change', index);
-			},
-			change() {
-				this.setScrollViewToCenter();
-			},
-			getQuery(cb) {
-				try {
-					let view = uni.createSelectorQuery().in(this).select('.u-tabs');
-					view.fields({
-							size: true
-						},
-						data => {
-							if (data) {
-								this.componentsWidth = data.width;
-								if (cb && typeof cb === 'function') cb(data);
-							} else {
-								this.getQuery(cb);
-							}
-						}
-					).exec();
-				} catch (e) {
-					this.componentsWidth = windowWidth;
-				}
-			},
-			// 把活动tab移动到屏幕中心点
-			setScrollViewToCenter() {
-				let tab;
-				tab = this.tabsInfo[this.animationFinishCurrent];
-				if (tab) {
-					let tabCenter = tab.left + tab.width / 2;
-					let fatherWidth;
-					// 活动tab移动到中心时,以屏幕还是tab组件为宽度为基准
-					if (this.autoCenterMode === 'window') {
-						fatherWidth = windowWidth;
-					} else {
-						fatherWidth = this.componentsWidth;
-					}
-					this.scrollLeft = tabCenter - fatherWidth / 2;
-				}
-			},
-			setDx(dx) {
-				let nextTabIndex = dx > 0 ? this.animationFinishCurrent + 1 : this.animationFinishCurrent - 1;
-				// 判断索引是否超出边界
-				nextTabIndex = nextTabIndex <= 0 ? 0 : nextTabIndex;
-				nextTabIndex = nextTabIndex >= this.list.length ? this.list.length - 1 : nextTabIndex;
-				const tab = this.tabsInfo[nextTabIndex];
-				// 当前tab中心点x轴坐标
-				let nowTab = this.tabsInfo[this.animationFinishCurrent];
-				let nowTabX = nowTab.left + nowTab.width / 2;
-				// 下一个tab
-				let nextTab = this.tabsInfo[nextTabIndex];
-				let nextTabX = nextTab.left + nextTab.width / 2;
-				// 两个tab之间的距离,因为下一个tab可能在当前tab的左边或者右边,取绝对值即可
-				let distanceX = Math.abs(nextTabX - nowTabX);
-				this.line3AddDx = (dx / this.sW) * distanceX;
-				this.setTabColor(this.animationFinishCurrent, nextTabIndex, dx);
-			},
-			// 设置tab的颜色
-			setTabColor(nowTabIndex, nextTabIndex, dx) {
-				let colorIndex = Math.abs(Math.ceil((dx / this.sW) * 100));
-				let colorLength = this.colorGradientArr.length;
-				// 处理超出索引边界的情况
-				colorIndex = colorIndex >= colorLength ? colorLength - 1 : colorIndex <= 0 ? 0 : colorIndex;
-				// 设置下一个tab的颜色
-				this.tabsInfo[nextTabIndex].color = this.colorGradientArr[colorIndex];
-				// 设置当前tab的颜色
-				this.tabsInfo[nowTabIndex].color = this.colorGradientArr[colorLength - 1 - colorIndex];
-			},
-			// swiper结束滑动
-			setFinishCurrent(current) {
-				// 如果滑动的索引不一致,修改tab颜色变化,因为可能会有直接点击tab的情况
-				this.tabsInfo.map((val, index) => {
-					if (current == index) val.color = this.activeColor;
-					else val.color = this.inactiveColor;
-					return val;
-				});
-				this.line3AddDx = 0;
-				this.animationFinishCurrent = current;
-				this.countLine3Dx();
-			}
-		}
-	};
-</script>
-
-<style scoped lang="scss">
-	@import "../../libs/css/style.components.scss";
-
-	view,
-	scroll-view {
-		box-sizing: border-box;
-	}
-
-	.u-tabs {
-		width: 100%;
-		transition-property: background-color, color;
-	}
-
-	/* #ifndef APP-NVUE */
-	::-webkit-scrollbar,
-	::-webkit-scrollbar,
-	::-webkit-scrollbar {
-		display: none;
-		width: 0 !important;
-		height: 0 !important;
-		-webkit-appearance: none;
-		background: transparent;
-	}
-	/* #endif */
-
-	/* #ifdef H5 */
-	// 通过样式穿透,隐藏H5下,scroll-view下的滚动条
-	scroll-view ::v-deep ::-webkit-scrollbar {
-		display: none;
-		width: 0 !important;
-		height: 0 !important;
-		-webkit-appearance: none;
-		background: transparent;
-	}
-
-	/* #endif */
-
-	.u-scroll-view {
-		width: 100%;
-		white-space: nowrap;
-		position: relative;
-	}
-
-	.u-tabs-scroll-box {
-		position: relative;
-	}
-
-	.u-tabs-scorll-flex {
-		@include vue-flex;
-		justify-content: space-between;
-	}
-
-	.u-tabs-scorll-flex .u-tabs-item {
-		flex: 1;
-	}
-
-	.u-tabs-item {
-		position: relative;
-		display: inline-block;
-		text-align: center;
-		transition-property: background-color, color, font-weight;
-	}
-
-	.content {
-		overflow: hidden;
-		white-space: nowrap;
-		text-overflow: ellipsis;
-	}
-
-	.boxStyle {
-		pointer-events: none;
-		position: absolute;
-		transition-property: all;
-	}
-
-	.boxStyle2 {
-		pointer-events: none;
-		position: absolute;
-		bottom: 0;
-		transition-property: all;
-		transform: translateY(-100%);
-	}
-
-	.itemBackgroundBox {
-		pointer-events: none;
-		position: absolute;
-		top: 0;
-		transition-property: left, background-color;
-		@include vue-flex;
-		flex-direction: row;
-		justify-content: center;
-		align-items: center;
-	}
-
-	.itemBackground {
-		height: 100%;
-		width: 100%;
-		transition-property: all;
-	}
-
-	.u-scroll-bar {
-		position: absolute;
-		bottom: 4rpx;
-	}
-</style>
diff --git a/uview-ui/components/u-tabs/u-tabs.vue b/uview-ui/components/u-tabs/u-tabs.vue
deleted file mode 100644
index 0c59658..0000000
--- a/uview-ui/components/u-tabs/u-tabs.vue
+++ /dev/null
@@ -1,369 +0,0 @@
-<template>
-	<view class="u-tabs" :style="{
-		background: bgColor
-	}">
-		<!-- $u.getRect()对组件根节点无效,因为写了.in(this),故这里获取内层接点尺寸 -->
-		<view :id="id">
-			<scroll-view scroll-x class="u-scroll-view" :scroll-left="scrollLeft" scroll-with-animation>
-				<view class="u-scroll-box" :class="{'u-tabs-scorll-flex': !isScroll}">
-					<view class="u-tab-item u-line-1" :id="'u-tab-item-' + index" v-for="(item, index) in list" :key="index" @tap="clickTab(index)"
-					 :style="[tabItemStyle(index)]">
-						<u-badge :count="item[count] || item['count'] || 0" :offset="offset" size="mini"></u-badge>
-						{{ item[name] || item['name']}}
-					</view>
-					<view v-if="showBar" class="u-tab-bar" :style="[tabBarStyle]"></view>
-				</view>
-			</scroll-view>
-		</view>
-	</view>
-</template>
-
-<script>
-	/**
-	 * tabs 标签
-	 * @description 该组件,是一个tabs标签组件,在标签多的时候,可以配置为左右滑动,标签少的时候,可以禁止滑动。 该组件的一个特点是配置为滚动模式时,激活的tab会自动移动到组件的中间位置。
-	 * @tutorial https://www.uviewui.com/components/tabs.html
-	 * @property {Boolean} is-scroll tabs是否可以左右拖动(默认true)
-	 * @property {Array} list 标签数组,元素为对象,如[{name: '推荐'}]
-	 * @property {String Number} current 指定哪个tab为激活状态(默认0)
-	 * @property {String Number} height 导航栏的高度,单位rpx(默认80)
-	 * @property {String Number} font-size tab文字大小,单位rpx(默认30)
-	 * @property {String Number} duration 滑块移动一次所需的时间,单位秒(默认0.5)
-	 * @property {String} active-color 滑块和激活tab文字的颜色(默认#2979ff)
-	 * @property {String} inactive-color tabs文字颜色(默认#303133)
-	 * @property {String Number} bar-width 滑块宽度,单位rpx(默认40)
-	 * @property {Object} active-item-style 活动tabs item的样式,对象形式
-	 * @property {Object} bar-style 底部滑块的样式,对象形式
-	 * @property {Boolean} show-bar 是否显示底部的滑块(默认true)
-	 * @property {String Number} bar-height 滑块高度,单位rpx(默认6)
-	 * @property {String Number} item-width 标签的宽度(默认auto)
-	 * @property {String Number} gutter 单个tab标签的左右内边距之和,单位rpx(默认40)
-	 * @property {String} bg-color tabs导航栏的背景颜色(默认#ffffff)
-	 * @property {String} name 组件内部读取的list参数中的属性名(tab名称),见官网说明(默认name)
-	 * @property {String} count 组件内部读取的list参数中的属性名(badge徽标数),同name属性的使用,见官网说明(默认count)
-	 * @property {Array} offset 设置badge徽标数的位置偏移,格式为 [x, y],也即设置的为top和right的值,单位rpx(默认[5, 20])
-	 * @property {Boolean} bold 激活选项的字体是否加粗(默认true)
-	 * @event {Function} change 点击标签时触发
-	 * @example <u-tabs ref="tabs" :list="list" :is-scroll="false"></u-tabs>
-	 */
-	export default {
-		name: "u-tabs",
-		props: {
-			// 导航菜单是否需要滚动,如只有2或者3个的时候,就不需要滚动了,此时使用flex平分tab的宽度
-			isScroll: {
-				type: Boolean,
-				default: true
-			},
-			//需循环的标签列表
-			list: {
-				type: Array,
-				default () {
-					return [];
-				}
-			},
-			// 当前活动tab的索引
-			current: {
-				type: [Number, String],
-				default: 0
-			},
-			// 导航栏的高度和行高
-			height: {
-				type: [String, Number],
-				default: 80
-			},
-			// 字体大小
-			fontSize: {
-				type: [String, Number],
-				default: 30
-			},
-			// 过渡动画时长, 单位ms
-			duration: {
-				type: [String, Number],
-				default: 0.5
-			},
-			// 选中项的主题颜色
-			activeColor: {
-				type: String,
-				default: '#2979ff'
-			},
-			// 未选中项的颜色
-			inactiveColor: {
-				type: String,
-				default: '#303133'
-			},
-			// 菜单底部移动的bar的宽度,单位rpx
-			barWidth: {
-				type: [String, Number],
-				default: 40
-			},
-			// 移动bar的高度
-			barHeight: {
-				type: [String, Number],
-				default: 6
-			},
-			// 单个tab的左或有内边距(左右相同)
-			gutter: {
-				type: [String, Number],
-				default: 30
-			},
-			// 导航栏的背景颜色
-			bgColor: {
-				type: String,
-				default: '#ffffff'
-			},
-			// 读取传入的数组对象的属性(tab名称)
-			name: {
-				type: String,
-				default: 'name'
-			},
-			// 读取传入的数组对象的属性(徽标数)
-			count: {
-				type: String,
-				default: 'count'
-			},
-			// 徽标数位置偏移
-			offset: {
-				type: Array,
-				default: () => {
-					return [5, 20]
-				}
-			},
-			// 活动tab字体是否加粗
-			bold: {
-				type: Boolean,
-				default: true
-			},
-			// 当前活动tab item的样式
-			activeItemStyle: {
-				type: Object,
-				default() {
-					return {}
-				}
-			},
-			// 是否显示底部的滑块
-			showBar: {
-				type: Boolean,
-				default: true
-			},
-			// 底部滑块的自定义样式
-			barStyle: {
-				type: Object,
-				default() {
-					return {}
-				}
-			},
-			// 标签的宽度
-			itemWidth: {
-				type: [Number, String],
-				default: 'auto'
-			}
-		},
-		data() {
-			return {
-				scrollLeft: 0, // 滚动scroll-view的左边滚动距离
-				tabQueryInfo: [], // 存放对tab菜单查询后的节点信息
-				componentWidth: 0, // 屏幕宽度,单位为px
-				scrollBarLeft: 0, // 移动bar需要通过translateX()移动的距离
-				parentLeft: 0, // 父元素(tabs组件)到屏幕左边的距离
-				id: this.$u.guid(), // id值
-				currentIndex: this.current,
-				barFirstTimeMove: true, // 滑块第一次移动时(页面刚生成时),无需动画,否则给人怪异的感觉
-			};
-		},
-		watch: {
-			// 监听tab的变化,重新计算tab菜单的布局信息,因为实际使用中菜单可能是通过
-			// 后台获取的(如新闻app顶部的菜单),获取返回需要一定时间,所以list变化时,重新获取布局信息
-			list(n, o) {
-				// list变动时,重制内部索引,否则可能导致超出数组边界的情况
-				if(n.length !== o.length) this.currentIndex = 0;
-				// 用$nextTick等待视图更新完毕后再计算tab的局部信息,否则可能因为tab还没生成就获取,就会有问题
-				this.$nextTick(() => {
-					this.init();
-				});
-			},
-			current: {
-				immediate: true,
-				handler(nVal, oVal) {
-					// 视图更新后再执行移动操作
-					this.$nextTick(() => {
-						this.currentIndex = nVal;
-						this.scrollByIndex();
-					});
-				}
-			},
-		},
-		computed: {
-			// 移动bar的样式
-			tabBarStyle() {
-				let style = {
-					width: this.barWidth + 'rpx',
-					transform: `translate(${this.scrollBarLeft}px, -100%)`,
-					// 滑块在页面渲染后第一次滑动时,无需动画效果
-					'transition-duration': `${this.barFirstTimeMove ? 0 : this.duration }s`,
-					'background-color': this.activeColor,
-					height: this.barHeight + 'rpx',
-					opacity: this.barFirstTimeMove ? 0 : 1,
-					// 设置一个很大的值,它会自动取能用的最大值,不用高度的一半,是因为高度可能是单数,会有小数出现
-					'border-radius': `${this.barHeight / 2}px`
-				};
-				Object.assign(style, this.barStyle);
-				return style;
-			},
-			// tab的样式
-			tabItemStyle() {
-				return (index) => {
-					let style = {
-						height: this.height + 'rpx',
-						'line-height': this.height + 'rpx',
-						'font-size': this.fontSize + 'rpx',
-						'transition-duration': `${this.duration}s`,
-						padding: this.isScroll ? `0 ${this.gutter}rpx` : '',
-						flex: this.isScroll ? 'auto' : '1',
-						width: this.$u.addUnit(this.itemWidth)
-					};
-					// 字体加粗
-					if (index == this.currentIndex && this.bold) style.fontWeight = 'bold';
-					if (index == this.currentIndex) {
-						style.color = this.activeColor;
-						// 给选中的tab item添加外部自定义的样式
-						style = Object.assign(style, this.activeItemStyle);
-					} else {
-						style.color = this.inactiveColor;
-					}
-					return style;
-				}
-			}
-		},
-		methods: {
-			// 设置一个init方法,方便多处调用
-			async init() {
-				// 获取tabs组件的尺寸信息
-				let tabRect = await this.$uGetRect('#' + this.id);
-				// tabs组件距离屏幕左边的宽度
-				this.parentLeft = tabRect.left;
-				// tabs组件的宽度
-				this.componentWidth = tabRect.width;
-				this.getTabRect();
-			},
-			// 点击某一个tab菜单
-			clickTab(index) {
-				// 点击当前活动tab,不触发事件
-				if(index == this.currentIndex) return ;
-				// 发送事件给父组件
-				this.$emit('change', index);
-			},
-			// 查询tab的布局信息
-			getTabRect() {
-				// 创建节点查询
-				let query = uni.createSelectorQuery().in(this);
-				// 历遍所有tab,这里是执行了查询,最终使用exec()会一次性返回查询的数组结果
-				for (let i = 0; i < this.list.length; i++) {
-					// 只要size和rect两个参数
-					query.select(`#u-tab-item-${i}`).fields({
-						size: true,
-						rect: true
-					});
-				}
-				// 执行查询,一次性获取多个结果
-				query.exec(
-					function(res) {
-						this.tabQueryInfo = res;
-						// 初始化滚动条和移动bar的位置
-						this.scrollByIndex();
-					}.bind(this)
-				);
-			},
-			// 滚动scroll-view,让活动的tab处于屏幕的中间位置
-			scrollByIndex() {
-				// 当前活动tab的布局信息,有tab菜单的width和left(为元素左边界到父元素左边界的距离)等信息
-				let tabInfo = this.tabQueryInfo[this.currentIndex];
-				if (!tabInfo) return;
-				// 活动tab的宽度
-				let tabWidth = tabInfo.width;
-				// 活动item的左边到tabs组件左边的距离,用item的left减去tabs的left
-				let offsetLeft = tabInfo.left - this.parentLeft;
-				// 将活动的tabs-item移动到屏幕正中间,实际上是对scroll-view的移动
-				let scrollLeft = offsetLeft - (this.componentWidth - tabWidth) / 2;
-				this.scrollLeft = scrollLeft < 0 ? 0 : scrollLeft;
-				// 当前活动item的中点点到左边的距离减去滑块宽度的一半,即可得到滑块所需的移动距离
-				let left = tabInfo.left + tabInfo.width / 2 - this.parentLeft;
-				// 计算当前活跃item到组件左边的距离
-				this.scrollBarLeft = left - uni.upx2px(this.barWidth) / 2;
-				// 第一次移动滑块的时候,barFirstTimeMove为true,放到延时中将其设置false
-				// 延时是因为scrollBarLeft作用于computed计算时,需要一个过程需,否则导致出错
-				if(this.barFirstTimeMove == true) {
-					setTimeout(() => {
-						this.barFirstTimeMove = false;
-					}, 100)
-				}
-			}
-		},
-		mounted() {
-			this.init();
-		}
-	};
-</script>
-
-<style lang="scss" scoped>
-	@import "../../libs/css/style.components.scss";
-
-	view,
-	scroll-view {
-		box-sizing: border-box;
-	}
-
-	/* #ifndef APP-NVUE */
-	::-webkit-scrollbar,
-	::-webkit-scrollbar,
-	::-webkit-scrollbar {
-		display: none;
-		width: 0 !important;
-		height: 0 !important;
-		-webkit-appearance: none;
-		background: transparent;
-	}
-	/* #endif */
-
-	.u-scroll-box {
-		position: relative;
-		/* #ifdef MP-TOUTIAO */
-		white-space: nowrap;
-		/* #endif */
-	}
-
-	/* #ifdef H5 */
-	// 通过样式穿透,隐藏H5下,scroll-view下的滚动条
-	scroll-view ::v-deep ::-webkit-scrollbar {
-		display: none;
-		width: 0 !important;
-		height: 0 !important;
-		-webkit-appearance: none;
-		background: transparent;
-	}
-	/* #endif */
-
-	.u-scroll-view {
-		width: 100%;
-		white-space: nowrap;
-		position: relative;
-	}
-
-	.u-tab-item {
-		position: relative;
-		/* #ifndef APP-NVUE */
-		display: inline-block;
-		/* #endif */
-		text-align: center;
-		transition-property: background-color, color;
-	}
-
-	.u-tab-bar {
-		position: absolute;
-		bottom: 0;
-	}
-
-	.u-tabs-scorll-flex {
-		@include vue-flex;
-		justify-content: space-between;
-	}
-</style>
diff --git a/uview-ui/components/u-tag/u-tag.vue b/uview-ui/components/u-tag/u-tag.vue
deleted file mode 100644
index 90ec3f4..0000000
--- a/uview-ui/components/u-tag/u-tag.vue
+++ /dev/null
@@ -1,294 +0,0 @@
-<template>
-	<view v-if="show" :class="[
-		disabled ? 'u-disabled' : '',
-		'u-size-' + size,
-		'u-shape-' + shape,
-		'u-mode-' + mode + '-' + type
-	]"
-	 class="u-tag" :style="[customStyle]" @tap="clickTag">
-		{{text}}
-		<view class="u-icon-wrap" @tap.stop>
-			<u-icon @click="close" size="22" v-if="closeable" :color="closeIconColor" 
-			name="close" class="u-close-icon" :style="[iconStyle]"></u-icon>
-		</view>
-	</view>
-</template>
-
-<script>
-	/**
-	 * tag 提示
-	 * @description 该组件一般用于标记和选择
-	 * @tutorial https://www.uviewui.com/components/tag.html
-	 * @property {String} type 主题类型(默认primary)
-	 * @property {String} size 标签大小(默认default)
-	 * @property {String} shape 标签形状(默认square)
-	 * @property {String} text 标签的文字内容
-	 * @property {String} bg-color 自定义标签的背景颜色
-	 * @property {String} border-color 标签的边框颜色
-	 * @property {String} close-color 关闭按钮的颜色
-	 * @property {String Number} index 点击标签时,会通过click事件返回该值
-	 * @property {String} mode 模式选择,见官网说明(默认light)
-	 * @property {Boolean} closeable 是否可关闭,设置为true,文字右边会出现一个关闭图标(默认false)
-	 * @property {Boolean} show 标签显示与否(默认true)
-	 * @event {Function} click 点击标签触发
-	 * @event {Function} close closeable为true时,点击标签关闭按钮触发
-	 * @example <u-tag text="雪月夜" type="success" />
-	 */
-	export default {
-		name: 'u-tag',
-		// 是否禁用这个标签,禁用的话,会屏蔽点击事件
-		props: {
-			// 标签类型info、primary、success、warning、error
-			type: {
-				type: String,
-				default: 'primary'
-			},
-			disabled: {
-				type: [Boolean, String],
-				default: false
-			},
-			// 标签的大小,分为default(默认),mini(较小)
-			size: {
-				type: String,
-				default: 'default'
-			},
-			// tag的形状,circle(两边半圆形), square(方形,带圆角),circleLeft(左边是半圆),circleRight(右边是半圆)
-			shape: {
-				type: String,
-				default: 'square'
-			},
-			// 标签文字
-			text: {
-				type: [String, Number],
-				default: ''
-			},
-			// 背景颜色,默认为空字符串,即不处理
-			bgColor: {
-				type: String,
-				default: ''
-			},
-			// 标签字体颜色,默认为空字符串,即不处理
-			color: {
-				type: String,
-				default: ''
-			},
-			// 镂空形式标签的边框颜色
-			borderColor: {
-				type: String,
-				default: ''
-			},
-			// 关闭按钮图标的颜色
-			closeColor: {
-				type: String,
-				default: ''
-			},
-			// 点击时返回的索引值,用于区分例遍的数组哪个元素被点击了
-			index: {
-				type: [Number, String],
-				default: ''
-			},
-			// 模式选择,dark|light|plain
-			mode: {
-				type: String,
-				default: 'light'
-			},
-			// 是否可关闭
-			closeable: {
-				type: Boolean,
-				default: false
-			},
-			// 是否显示
-			show: {
-				type: Boolean,
-				default: true
-			}
-		},
-		data() {
-			return {
-				
-			}
-		},
-		computed: {
-			customStyle() {
-				let style = {};
-				// 文字颜色(如果有此值,会覆盖type值的颜色)
-				if(this.color) style.color = this.color;
-				// tag的背景颜色(如果有此值,会覆盖type值的颜色)
-				if(this.bgColor) style.backgroundColor = this.bgColor;
-				// 如果是镂空型tag,没有传递边框颜色(borderColor)的话,使用文字的颜色(color属性)
-				if(this.mode == 'plain' && this.color && !this.borderColor) style.borderColor = this.color;
-				else style.borderColor = this.borderColor;
-				return style;
-			},
-			iconStyle() {
-				if(!this.closeable) return ;
-				let style = {};
-				if(this.size == 'mini') style.fontSize = '20rpx';
-				else style.fontSize = '22rpx';
-				if(this.mode == 'plain' || this.mode == 'light') style.color = this.type;
-				else if(this.mode == 'dark')  style.color = "#ffffff";
-				if(this.closeColor) style.color = this.closeColor;
-				return style;
-			},
-			// 关闭图标的颜色
-			closeIconColor() {
-				// 如果定义了关闭图标的颜色,就用此值,否则用字体颜色的值
-				// 如果上面的二者都没有,如果是dark深色模式,图标就为白色
-				// 最后如果上面的三者都不合适,就返回type值给图标获取颜色
-				let color = '';
-				if(this.closeColor) return this.closeColor;
-				else if(this.color) return this.color;
-				else if(this.mode == 'dark') return '#ffffff';
-				else return this.type;
-			}
-		},
-		methods: {
-			// 标签被点击
-			clickTag() {
-				// 如果是disabled状态,不发送点击事件
-				if(this.disabled) return ;
-				this.$emit('click', this.index);
-			},
-			// 点击标签关闭按钮
-			close() {
-				this.$emit('close', this.index);
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	@import "../../libs/css/style.components.scss";
-	
-	.u-tag {
-		box-sizing: border-box;
-		align-items: center;
-		border-radius: 6rpx;
-		/* #ifndef APP-NVUE */
-		display: inline-block;
-		/* #endif */
-		line-height: 1;
-	}
-	
-	.u-size-default {
-		font-size: 22rpx;
-		padding: 12rpx 22rpx;
-	}
-	
-	.u-size-mini {
-		font-size: 20rpx;
-		padding: 6rpx 12rpx;
-	}
-
-	.u-mode-light-primary {
-		background-color: $u-type-primary-light;
-		color: $u-type-primary;
-		border: 1px solid $u-type-primary-disabled;
-	}
-	
-	.u-mode-light-success {
-		background-color: $u-type-success-light;
-		color: $u-type-success;
-		border: 1px solid $u-type-success-disabled;
-	}
-	
-	.u-mode-light-error {
-		background-color: $u-type-error-light;
-		color: $u-type-error;
-		border: 1px solid $u-type-error-disabled;
-	}
-	
-	.u-mode-light-warning {
-		background-color: $u-type-warning-light;
-		color: $u-type-warning;
-		border: 1px solid $u-type-warning-disabled;
-	}
-	
-	.u-mode-light-info {
-		background-color: $u-type-info-light;
-		color: $u-type-info;
-		border: 1px solid $u-type-info-disabled;
-	}
-	
-	.u-mode-dark-primary {
-		background-color: $u-type-primary;
-		color: #FFFFFF;
-	}
-	
-	.u-mode-dark-success {
-		background-color: $u-type-success;
-		color: #FFFFFF;
-	}
-	
-	.u-mode-dark-error {
-		background-color: $u-type-error;
-		color: #FFFFFF;
-	}
-	
-	.u-mode-dark-warning {
-		background-color: $u-type-warning;
-		color: #FFFFFF;
-	}
-	
-	.u-mode-dark-info {
-		background-color: $u-type-info;
-		color: #FFFFFF;
-	}
-	
-	.u-mode-plain-primary {
-		background-color: #FFFFFF;
-		color: $u-type-primary;
-		border: 1px solid $u-type-primary;
-	}
-	
-	.u-mode-plain-success {
-		background-color: #FFFFFF;
-		color: $u-type-success;
-		border: 1px solid $u-type-success;
-	}
-	
-	.u-mode-plain-error {
-		background-color: #FFFFFF;
-		color: $u-type-error;
-		border: 1px solid $u-type-error;
-	}
-	
-	.u-mode-plain-warning {
-		background-color: #FFFFFF;
-		color: $u-type-warning;
-		border: 1px solid $u-type-warning;
-	}
-	
-	.u-mode-plain-info {
-		background-color: #FFFFFF;
-		color: $u-type-info;
-		border: 1px solid $u-type-info;
-	}
-	
-	.u-disabled {
-		opacity: 0.55;
-	}
-
-	.u-shape-circle {
-		border-radius: 100rpx;
-	}
-	
-	.u-shape-circleRight {
-		border-radius:  0 100rpx 100rpx 0;
-	}
-
-	.u-shape-circleLeft {
-		border-radius: 100rpx 0 0 100rpx;
-	}
-	
-	.u-close-icon {
-		margin-left: 14rpx;
-		font-size: 22rpx;
-		color: $u-type-success;
-	}
-	
-	.u-icon-wrap {
-		display: inline-flex;
-		transform: scale(0.86);
-	}
-</style>
diff --git a/uview-ui/components/u-td/u-td.vue b/uview-ui/components/u-td/u-td.vue
deleted file mode 100644
index b00ad8b..0000000
--- a/uview-ui/components/u-td/u-td.vue
+++ /dev/null
@@ -1,66 +0,0 @@
-<template>
-	<view class="u-td" :style="[tdStyle]">
-		<slot></slot>
-	</view>
-</template>
-
-<script>
-	/**
-	 * td td单元格
-	 * @description 表格组件一般用于展示大量结构化数据的场景(搭配u-table使用)
-	 * @tutorial https://www.uviewui.com/components/table.html#td-props
-	 * @property {String Number} width 单元格宽度百分比或者具体带单位的值,如30%, 200rpx等,一般使用百分比,单元格宽度默认为均分tr的长度(默认auto)
-	 * @example <u-td>二年级</u-td>
-	 */
-	export default {
-		name: "u-td",
-		props: {
-			// 宽度,百分比或者具体带单位的值,如30%, 200rpx等,一般使用百分比
-			width: {
-				type: [Number, String],
-				default: 'auto'
-			}
-		},
-		data() {
-			return {
-				tdStyle: {
-					
-				}
-			}
-		},
-		created() {
-			this.parent = false;
-		},
-		mounted() {
-			this.parent = this.$u.$parent.call(this, 'u-table');
-			if (this.parent) {
-				// 将父组件的相关参数,合并到本组件
-				let style = {};
-				if (this.width != "auto") style.flex = `0 0 ${this.width}`;
-				style.textAlign = this.parent.align;
-				style.fontSize = this.parent.fontSize + 'rpx';
-				style.padding = this.parent.padding;
-				style.borderBottom = `solid 1px ${this.parent.borderColor}`;
-				style.borderRight = `solid 1px ${this.parent.borderColor}`;
-				style.color = this.parent.color;
-				this.tdStyle = style;
-			}
-		}
-	};
-</script>
-
-<style lang="scss" scoped>
-	@import "../../libs/css/style.components.scss";
-
-	.u-td {
-		@include vue-flex;
-		flex-direction: column;
-		flex: 1;
-		justify-content: center;
-		font-size: 28rpx;
-		color: $u-content-color;
-		align-self: stretch;
-		box-sizing: border-box;
-		height: 100%;
-	}
-</style>
diff --git a/uview-ui/components/u-th/u-th.vue b/uview-ui/components/u-th/u-th.vue
deleted file mode 100644
index 9fe5a16..0000000
--- a/uview-ui/components/u-th/u-th.vue
+++ /dev/null
@@ -1,62 +0,0 @@
-<template>
-	<view class="u-th" :style="[thStyle]">
-		<slot></slot>
-	</view>
-</template>
-
-<script>
-	/**
-	 * th th单元格
-	 * @description 表格组件一般用于展示大量结构化数据的场景(搭配u-table使用)
-	 * @tutorial https://www.uviewui.com/components/table.html#td-props
-	 * @property {String Number} width 标题单元格宽度百分比或者具体带单位的值,如30%,200rpx等,一般使用百分比,单元格宽度默认为均分tr的长度
-	 * @example 暂无示例
-	 */
-	export default {
-		name: "u-th",
-		props: {
-			// 宽度,百分比或者具体带单位的值,如30%, 200rpx等,一般使用百分比
-			width: {
-				type: [Number, String],
-				default: ''
-			}
-		},
-		data() {
-			return {
-				thStyle: {}
-			}
-		},
-		created() {
-			this.parent = false;
-		},
-		mounted() {
-			this.parent = this.$u.$parent.call(this, 'u-table');
-			if (this.parent) {
-				// 将父组件的相关参数,合并到本组件
-				let style = {};
-				if (this.width) style.flex = `0 0 ${this.width}`;
-				style.textAlign = this.parent.align;
-				style.padding = this.parent.padding;
-				style.borderBottom = `solid 1px ${this.parent.borderColor}`;
-				style.borderRight = `solid 1px ${this.parent.borderColor}`;
-				Object.assign(style, this.parent.style);
-				this.thStyle = style;
-			}
-		}
-	};
-</script>
-
-<style lang="scss" scoped>
-	@import "../../libs/css/style.components.scss";
-
-	.u-th {
-		@include vue-flex;
-		flex-direction: column;
-		flex: 1;
-		justify-content: center;
-		font-size: 28rpx;
-		color: $u-main-color;
-		font-weight: bold;
-		background-color: rgb(245, 246, 248);
-	}
-</style>
diff --git a/uview-ui/components/u-time-line-item/u-time-line-item.vue b/uview-ui/components/u-time-line-item/u-time-line-item.vue
deleted file mode 100644
index be86fdc..0000000
--- a/uview-ui/components/u-time-line-item/u-time-line-item.vue
+++ /dev/null
@@ -1,83 +0,0 @@
-<template>
-	<view class="u-time-axis-item">
-		<slot name="content" />
-		<view class="u-time-axis-node" :style="[nodeStyle]">
-			<slot name="node">
-				<view class="u-dot">
-				</view>
-			</slot>
-		</view>
-	</view>
-</template>
-
-<script>
-	/**
-	 * timeLineItem 时间轴Item
-	 * @description 时间轴组件一般用于物流信息展示,各种跟时间相关的记录等场景。(搭配u-time-line使用)
-	 * @tutorial https://www.uviewui.com/components/timeLine.html
-	 * @property {String} bg-color 左边节点的背景颜色,一般通过slot内容自定义背景颜色即可(默认#ffffff)
-	 * @property {String Number} node-top 节点左边图标绝对定位的top值,单位rpx
-	 * @example <u-time-line-item node-top="2">...</u-time-line-item>
-	 */
-	export default {
-		name: "u-time-line-item",
-		props: {
-			// 节点的背景颜色
-			bgColor: {
-				type: String,
-				default: "#ffffff"
-			},
-			// 节点左边图标绝对定位的top值
-			nodeTop: {
-				type: [String, Number],
-				default: ""
-			}
-		},
-		data() {
-			return {
-
-			}
-		},
-		computed: {
-			nodeStyle() {
-				let style = {
-					backgroundColor: this.bgColor,
-				};
-				if (this.nodeTop != "") style.top = this.nodeTop + 'rpx';
-				return style;
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	@import "../../libs/css/style.components.scss";
-	
-	.u-time-axis-item {
-		@include vue-flex;
-		flex-direction: column;
-		width: 100%;
-		position: relative;
-		margin-bottom: 32rpx;
-	}
-
-	.u-time-axis-node {
-		position: absolute;
-		top: 12rpx;
-		left: -40rpx;
-		transform-origin: 0;
-		transform: translateX(-50%);
-		@include vue-flex;
-		align-items: center;
-		justify-content: center;
-		z-index: 1;
-		font-size: 24rpx;
-	}
-
-	.u-dot {
-		height: 16rpx;
-		width: 16rpx;
-		border-radius: 100rpx;
-		background: #ddd;
-	}
-</style>
diff --git a/uview-ui/components/u-time-line/u-time-line.vue b/uview-ui/components/u-time-line/u-time-line.vue
deleted file mode 100644
index f3c7587..0000000
--- a/uview-ui/components/u-time-line/u-time-line.vue
+++ /dev/null
@@ -1,43 +0,0 @@
-<template>
-	<view class="u-time-axis">
-		<slot />
-	</view>
-</template>
-
-<script>
-	/**
-	 * timeLine 时间轴
-	 * @description 时间轴组件一般用于物流信息展示,各种跟时间相关的记录等场景。
-	 * @tutorial https://www.uviewui.com/components/timeLine.html
-	 * @example <u-time-line></u-time-line>
-	 */
-	export default {
-		name: "u-time-line",
-		data() {
-			return {
-
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	@import "../../libs/css/style.components.scss";
-	
-	.u-time-axis {
-		padding-left: 40rpx;
-		position: relative;
-	}
-
-	.u-time-axis::before {
-		content: " ";
-		position: absolute;
-		left: 0;
-		top: 12rpx;
-		width: 1px;
-		bottom: 0;
-		border-left: 1px solid #ddd;
-		transform-origin: 0 0;
-		transform: scaleX(0.5);
-	}
-</style>
diff --git a/uview-ui/components/u-toast/u-toast.vue b/uview-ui/components/u-toast/u-toast.vue
deleted file mode 100644
index a2209a5..0000000
--- a/uview-ui/components/u-toast/u-toast.vue
+++ /dev/null
@@ -1,220 +0,0 @@
-<template>
-	<view class="u-toast" :class="[isShow ? 'u-show' : '', 'u-type-' + tmpConfig.type, 'u-position-' + tmpConfig.position]" :style="{
-		zIndex: uZIndex
-	}">
-		<view class="u-icon-wrap">
-			<u-icon v-if="tmpConfig.icon" class="u-icon" :name="iconName" :size="30" :color="tmpConfig.type"></u-icon>
-		</view>
-		<text class="u-text">{{tmpConfig.title}}</text>
-	</view>
-</template>
-
-<script>
-	/**
-	 * toast 消息提示
-	 * @description 此组件表现形式类似uni的uni.showToastAPI,但也有不同的地方。
-	 * @tutorial https://www.uviewui.com/components/toast.html
-	 * @property {String} z-index toast展示时的z-index值
-	 * @event {Function} show 显示toast,如需一进入页面就显示toast,请在onReady生命周期调用
-	 * @example <u-toast ref="uToast" />
-	 */
-	export default {
-		name: "u-toast",
-		props: {
-			// z-index值
-			zIndex: {
-				type: [Number, String],
-				default: ''
-			},
-		},
-		data() {
-			return {
-				isShow: false,
-				timer: null, // 定时器
-				config: {
-					params: {}, // URL跳转的参数,对象
-					title: '', // 显示文本
-					type: '', // 主题类型,primary,success,error,warning,black
-					duration: 2000, // 显示的时间,毫秒
-					isTab: false, // 是否跳转tab页面
-					url: '', // toast消失后是否跳转页面,有则跳转,优先级高于back参数
-					icon: true, // 显示的图标
-					position: 'center', // toast出现的位置
-					callback: null, // 执行完后的回调函数
-					back: false, // 结束toast是否自动返回上一页
-				},
-				tmpConfig: {}, // 将用户配置和内置配置合并后的临时配置变量
-			};
-		},
-		computed: {
-			iconName() {
-				// 只有不为none,并且type为error|warning|succes|info时候,才显示图标
-				if (['error', 'warning', 'success', 'info'].indexOf(this.tmpConfig.type) >= 0 && this.tmpConfig.icon) {
-					let icon = this.$u.type2icon(this.tmpConfig.type);
-					return icon;
-				}
-			},
-			uZIndex() {
-				// 显示toast时候,如果用户有传递z-index值,有限使用
-				return this.isShow ? (this.zIndex ? this.zIndex : this.$u.zIndex.toast) : '999999';
-			}
-		},
-		methods: {
-			// 显示toast组件,由父组件通过this.$refs.xxx.show(options)形式调用
-			show(options) {
-				// 不降结果合并到this.config变量,避免多次条用u-toast,前后的配置造成混论
-				this.tmpConfig = this.$u.deepMerge(this.config, options);
-				if (this.timer) {
-					// 清除定时器
-					clearTimeout(this.timer);
-					this.timer = null;
-				}
-				this.isShow = true;
-				this.timer = setTimeout(() => {
-					// 倒计时结束,清除定时器,隐藏toast组件
-					this.isShow = false;
-					clearTimeout(this.timer);
-					this.timer = null;
-					// 判断是否存在callback方法,如果存在就执行
-					typeof(this.tmpConfig.callback) === 'function' && this.tmpConfig.callback();
-					this.timeEnd();
-				}, this.tmpConfig.duration);
-			},
-			// 隐藏toast组件,由父组件通过this.$refs.xxx.hide()形式调用
-			hide() {
-				this.isShow = false;
-				if (this.timer) {
-					// 清除定时器
-					clearTimeout(this.timer);
-					this.timer = null;
-				}
-			},
-			// 倒计时结束之后,进行的一些操作
-			timeEnd() {
-				// 如果带有url值,根据isTab为true或者false进行跳转
-				if (this.tmpConfig.url) {
-					// 如果url没有"/"开头,添加上,因为uni的路由跳转需要"/"开头
-					if (this.tmpConfig.url[0] != '/') this.tmpConfig.url = '/' + this.tmpConfig.url;
-					// 判断是否有传递显式的参数
-					if (Object.keys(this.tmpConfig.params).length) {
-						// 判断用户传递的url中,是否带有参数
-						// 使用正则匹配,主要依据是判断是否有"/","?","="等,如“/page/index/index?name=mary"
-						// 如果有params参数,转换后无需带上"?"
-						let query = '';
-						if (/.*\/.*\?.*=.*/.test(this.tmpConfig.url)) {
-							// object对象转为get类型的参数
-							query = this.$u.queryParams(this.tmpConfig.params, false);
-							this.tmpConfig.url = this.tmpConfig.url + "&" + query;
-						} else {
-							query = this.$u.queryParams(this.tmpConfig.params);
-							this.tmpConfig.url += query;
-						}
-					}
-					// 如果是跳转tab页面,就使用uni.switchTab
-					if (this.tmpConfig.isTab) {
-						uni.switchTab({
-							url: this.tmpConfig.url
-						});
-					} else {
-						uni.navigateTo({
-							url: this.tmpConfig.url
-						});
-					}
-				} else if(this.tmpConfig.back) {
-					// 回退到上一页
-					this.$u.route({
-						type: 'back'
-					})
-				}
-			}
-		}
-	};
-</script>
-
-<style lang="scss" scoped>
-	@import "../../libs/css/style.components.scss";
-	
-	.u-toast {
-		position: fixed;
-		z-index: -1;
-		transition: opacity 0.3s;
-		text-align: center;
-		color: #fff;
-		border-radius: 8rpx;
-		background: #585858;
-		@include vue-flex;
-		align-items: center;
-		justify-content: center;
-		font-size: 28rpx;
-		opacity: 0;
-		pointer-events: none;
-		padding: 18rpx 40rpx;
-	}
-
-	.u-toast.u-show {
-		opacity: 1;
-	}
-
-	.u-icon {
-		margin-right: 10rpx;
-		@include vue-flex;
-		align-items: center;
-		line-height: normal;
-	}
-
-	.u-position-center {
-		left: 50%;
-		top: 50%;
-		transform: translate(-50%,-50%);
-		/* #ifndef APP-NVUE */
-		max-width: 70%;
-		/* #endif */
-	}
-
-	.u-position-top {
-		left: 50%;
-		top: 20%;
-		transform: translate(-50%,-50%);
-	}
-
-	.u-position-bottom {
-		left: 50%;
-		bottom: 20%;
-		transform: translate(-50%,-50%);
-	}
-
-	.u-type-primary {
-		color: $u-type-primary;
-		background-color: $u-type-primary-light;
-		border: 1px solid rgb(215, 234, 254);
-	}
-
-	.u-type-success {
-		color: $u-type-success;
-		background-color: $u-type-success-light;
-		border: 1px solid #BEF5C8;
-	}
-
-	.u-type-error {
-		color: $u-type-error;
-		background-color: $u-type-error-light;
-		border: 1px solid #fde2e2;
-	}
-
-	.u-type-warning {
-		color: $u-type-warning;
-		background-color: $u-type-warning-light;
-		border: 1px solid #faecd8;
-	}
-
-	.u-type-info {
-		color: $u-type-info;
-		background-color: $u-type-info-light;
-		border: 1px solid #ebeef5;
-	}
-
-	.u-type-default {
-		color: #fff;
-		background-color: #585858;
-	}
-</style>
diff --git a/uview-ui/components/u-top-tips/u-top-tips.vue b/uview-ui/components/u-top-tips/u-top-tips.vue
deleted file mode 100644
index 98d58df..0000000
--- a/uview-ui/components/u-top-tips/u-top-tips.vue
+++ /dev/null
@@ -1,121 +0,0 @@
-<template>
-	<view class="u-tips" :class="['u-' + type, isShow ? 'u-tip-show' : '']" :style="{
-		top: navbarHeight + 'px',
-		zIndex: uZIndex
-	}">{{ title }}</view>
-</template>
-
-<script>
-	/**
-	 * topTips 顶部提示
-	 * @description 该组件一般用于页面顶部向下滑出一个提示,尔后自动收起的场景。
-	 * @tutorial https://www.uviewui.com/components/topTips.html
-	 * @property {String Number} navbar-height 导航栏高度(包含状态栏高度在内),单位PX
-	 * @property {String Number} z-index z-index值(默认975)
-	 * @example <u-top-tips ref="uTips"></u-top-tips>
-	 */
-	export default {
-		name: "u-top-tips",
-		props: {
-			// 导航栏高度,用于提示的初始化
-			navbarHeight: {
-				type: [Number, String],
-				// #ifndef H5
-				default: 0,
-				// #endif
-				// #ifdef H5
-				default: 44,
-				// #endif
-			},
-			// z-index值
-			zIndex: {
-				type: [Number, String],
-				default: ''
-			}
-		},
-		data() {
-			return {
-				timer: null, // 定时器
-				isShow: false, // 是否显示消息组件
-				title: '', // 组件中显示的消息内容
-				type: 'primary', // 消息的类型(颜色不同),primary,success,error,warning,info
-				duration: 2000, // 组件显示的时间,单位为毫秒
-			};
-		},
-		computed: {
-			uZIndex() {
-				return this.zIndex ? this.zIndex : this.$u.zIndex.topTips;
-			}
-		},
-		methods: {
-			show(config = {}) {
-				// 先清除定时器(可能是上一次定义的,需要清除了再开始新的)
-				clearTimeout(this.timer);
-				// 时间,内容,类型主题(type)等参数
-				if (config.duration) this.duration = config.duration;
-				if (config.type) this.type = config.type;
-				this.title = config.title;
-				this.isShow = true;
-				// 倒计时
-				this.timer = setTimeout(() => {
-					this.isShow = false;
-					clearTimeout(this.timer);
-					this.timer = null;
-				}, this.duration);
-			}
-		}
-	};
-</script>
-
-<style lang="scss" scoped>
-	@import "../../libs/css/style.components.scss";
-	
-	view {
-		box-sizing: border-box;
-	}
-
-	// 顶部弹出类型样式
-	.u-tips {
-		width: 100%;
-		position: fixed;
-		z-index: 1;
-		padding: 20rpx 30rpx;
-		color: #FFFFFF;
-		font-size: 28rpx;
-		left: 0;
-		right: 0;
-		@include vue-flex;
-		align-items: center;
-		justify-content: center;
-		opacity: 0;
-		// 此处为最核心点,translateY(-100%)意味着将其从Y轴隐藏(隐藏到顶部(h5)或者说导航栏(app)下面)
-		transform: translateY(-100%);
-		transition: all 0.35s linear;
-	}
-
-	.u-tip-show {
-		transform: translateY(0);
-		opacity: 1;
-		z-index: 99;
-	}
-
-	.u-primary {
-		background: $u-type-primary;
-	}
-
-	.u-success {
-		background: $u-type-success;
-	}
-
-	.u-warning {
-		background: $u-type-warning;
-	}
-
-	.u-error {
-		background: $u-type-error;
-	}
-
-	.u-info {
-		background: $u-type-info;
-	}
-</style>
diff --git a/uview-ui/components/u-tr/u-tr.vue b/uview-ui/components/u-tr/u-tr.vue
deleted file mode 100644
index 06aed4a..0000000
--- a/uview-ui/components/u-tr/u-tr.vue
+++ /dev/null
@@ -1,25 +0,0 @@
-<template>
-	<view class="u-tr">
-		<slot></slot>
-	</view>
-</template>
-
-<script>
-	/**
-	 * tr 表格行标签
-	 * @description 表格组件一般用于展示大量结构化数据的场景(搭配<u-table>使用)
-	 * @tutorial https://www.uviewui.com/components/table.html
-	 * @example <u-tr></u-tr>
-	 */
-	export default {
-		name: "u-tr",
-	}
-</script>
-
-<style lang="scss" scoped>
-	@import "../../libs/css/style.components.scss";
-	
-	.u-tr {
-		@include vue-flex;
-	}
-</style>
diff --git a/uview-ui/components/u-upload/u-upload.vue b/uview-ui/components/u-upload/u-upload.vue
deleted file mode 100644
index f4d4b76..0000000
--- a/uview-ui/components/u-upload/u-upload.vue
+++ /dev/null
@@ -1,654 +0,0 @@
-<template>
-	<view class="u-upload" v-if="!disabled">
-		<view
-			v-if="showUploadList"
-			class="u-list-item u-preview-wrap"
-			v-for="(item, index) in lists"
-			:key="index"
-			:style="{
-				width: $u.addUnit(width),
-				height: $u.addUnit(height)
-			}"
-		>
-			<view
-				v-if="deletable"
-				class="u-delete-icon"
-				@tap.stop="deleteItem(index)"
-				:style="{
-					background: delBgColor
-				}"
-			>
-				<u-icon class="u-icon" :name="delIcon" size="20" :color="delColor"></u-icon>
-			</view>
-			<u-line-progress
-				v-if="showProgress && item.progress > 0 && !item.error"
-				:show-percent="false"
-				height="16"
-				class="u-progress"
-				:percent="item.progress"
-			></u-line-progress>
-			<view @tap.stop="retry(index)" v-if="item.error" class="u-error-btn">点击重试</view>
-			<image @tap.stop="doPreviewImage(item.url || item.path, index)" class="u-preview-image" v-if="!item.isImage" :src="item.url || item.path" :mode="imageMode"></image>
-		</view>
-		<slot name="file" :file="lists"></slot>
-		<view style="display: inline-block;" @tap="selectFile" v-if="maxCount > lists.length">
-			<slot name="addBtn"></slot>
-			<view
-				v-if="!customBtn"
-				class="u-list-item u-add-wrap"
-				hover-class="u-add-wrap__hover"
-				hover-stay-time="150"
-				:style="{
-					width: $u.addUnit(width),
-					height: $u.addUnit(height)
-				}"
-			>
-				<u-icon name="plus" class="u-add-btn" size="40"></u-icon>
-				<view class="u-add-tips">{{ uploadText }}</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-/**
- * upload 图片上传
- * @description 该组件用于上传图片场景
- * @tutorial https://www.uviewui.com/components/upload.html
- * @property {String} action 服务器上传地址
- * @property {String Number} max-count 最大选择图片的数量(默认99)
- * @property {Boolean} custom-btn 如果需要自定义选择图片的按钮,设置为true(默认false)
- * @property {Boolean} show-progress 是否显示进度条(默认true)
- * @property {Boolean} disabled 是否启用(显示/移仓)组件(默认false)
- * @property {String} image-mode 预览图片等显示模式,可选值为uni的image的mode属性值(默认aspectFill)
- * @property {String} del-icon 右上角删除图标名称,只能为uView内置图标
- * @property {String} del-bg-color 右上角关闭按钮的背景颜色
- * @property {String | Number} index 在各个回调事件中的最后一个参数返回,用于区别是哪一个组件的事件
- * @property {String} del-color 右上角关闭按钮图标的颜色
- * @property {Object} header 上传携带的头信息,对象形式
- * @property {Object} form-data 上传额外携带的参数
- * @property {String} name 上传文件的字段名,供后端获取使用(默认file)
- * @property {Array<String>} size-type original 原图,compressed 压缩图,默认二者都有(默认['original', 'compressed'])
- * @property {Array<String>} source-type 选择图片的来源,album-从相册选图,camera-使用相机,默认二者都有(默认['album', 'camera'])
- * @property {Boolean} preview-full-image	是否可以通过uni.previewImage预览已选择的图片(默认true)
- * @property {Boolean} multiple	是否开启图片多选,部分安卓机型不支持(默认true)
- * @property {Boolean} deletable 是否显示删除图片的按钮(默认true)
- * @property {String Number} max-size 选择单个文件的最大大小,单位B(byte),默认不限制(默认Number.MAX_VALUE)
- * @property {Array<Object>} file-list 默认显示的图片列表,数组元素为对象,必须提供url属性
- * @property {Boolean} upload-text 选择图片按钮的提示文字(默认“选择图片”)
- * @property {Boolean} auto-upload 选择完图片是否自动上传,见上方说明(默认true)
- * @property {Boolean} show-tips 特殊情况下是否自动提示toast,见上方说明(默认true)
- * @property {Boolean} show-upload-list 是否显示组件内部的图片预览(默认true)
- * @event {Function} on-oversize 图片大小超出最大允许大小
- * @event {Function} on-preview 全屏预览图片时触发
- * @event {Function} on-remove 移除图片时触发
- * @event {Function} on-success 图片上传成功时触发
- * @event {Function} on-change 图片上传后,无论成功或者失败都会触发
- * @event {Function} on-error 图片上传失败时触发
- * @event {Function} on-progress 图片上传过程中的进度变化过程触发
- * @event {Function} on-uploaded 所有图片上传完毕触发
- * @event {Function} on-choose-complete 每次选择图片后触发,只是让外部可以得知每次选择后,内部的文件列表
- * @example <u-upload :action="action" :file-list="fileList" ></u-upload>
- */
-export default {
-	name: 'u-upload',
-	props: {
-		//是否显示组件自带的图片预览功能
-		showUploadList: {
-			type: Boolean,
-			default: true
-		},
-		// 后端地址
-		action: {
-			type: String,
-			default: ''
-		},
-		// 最大上传数量
-		maxCount: {
-			type: [String, Number],
-			default: 52
-		},
-		//  是否显示进度条
-		showProgress: {
-			type: Boolean,
-			default: true
-		},
-		// 是否启用
-		disabled: {
-			type: Boolean,
-			default: false
-		},
-		// 预览上传的图片时的裁剪模式,和image组件mode属性一致
-		imageMode: {
-			type: String,
-			default: 'aspectFill'
-		},
-		// 头部信息
-		header: {
-			type: Object,
-			default() {
-				return {};
-			}
-		},
-		// 额外携带的参数
-		formData: {
-			type: Object,
-			default() {
-				return {};
-			}
-		},
-		// 上传的文件字段名
-		name: {
-			type: String,
-			default: 'file'
-		},
-		// 所选的图片的尺寸, 可选值为original compressed
-		sizeType: {
-			type: Array,
-			default() {
-				return ['original', 'compressed'];
-			}
-		},
-		sourceType: {
-			type: Array,
-			default() {
-				return ['album', 'camera'];
-			}
-		},
-		// 是否在点击预览图后展示全屏图片预览
-		previewFullImage: {
-			type: Boolean,
-			default: true
-		},
-		// 是否开启图片多选,部分安卓机型不支持
-		multiple: {
-			type: Boolean,
-			default: true
-		},
-		// 是否展示删除按钮
-		deletable: {
-			type: Boolean,
-			default: true
-		},
-		// 文件大小限制,单位为byte
-		maxSize: {
-			type: [String, Number],
-			default: Number.MAX_VALUE
-		},
-		// 显示已上传的文件列表
-		fileList: {
-			type: Array,
-			default() {
-				return [];
-			}
-		},
-		// 上传区域的提示文字
-		uploadText: {
-			type: String,
-			default: '选择图片'
-		},
-		// 是否自动上传
-		autoUpload: {
-			type: Boolean,
-			default: true
-		},
-		// 是否显示toast消息提示
-		showTips: {
-			type: Boolean,
-			default: true
-		},
-		// 是否通过slot自定义传入选择图标的按钮
-		customBtn: {
-			type: Boolean,
-			default: false
-		},
-		// 内部预览图片区域和选择图片按钮的区域宽度
-		width: {
-			type: [String, Number],
-			default: 200
-		},
-		// 内部预览图片区域和选择图片按钮的区域高度
-		height: {
-			type: [String, Number],
-			default: 200
-		},
-		// 右上角关闭按钮的背景颜色
-		delBgColor: {
-			type: String,
-			default: '#fa3534'
-		},
-		// 右上角关闭按钮的叉号图标的颜色
-		delColor: {
-			type: String,
-			default: '#ffffff'
-		},
-		// 右上角删除图标名称,只能为uView内置图标
-		delIcon: {
-			type: String,
-			default: 'close'
-		},
-		// 如果上传后的返回值为json字符串,是否自动转json
-		toJson: {
-			type: Boolean,
-			default: true
-		},
-		// 上传前的钩子,每个文件上传前都会执行
-		beforeUpload: {
-			type: Function,
-			default: null
-		},
-		// 移除文件前的钩子
-		beforeRemove: {
-			type: Function,
-			default: null
-		},
-		// 允许上传的图片后缀
-		limitType:{
-			type: Array,
-			default() {
-				// 支付宝小程序真机选择图片的后缀为"image"
-				// https://opendocs.alipay.com/mini/api/media-image
-				return ['png', 'jpg', 'jpeg', 'webp', 'gif', 'image'];
-			}
-		},
-		// 在各个回调事件中的最后一个参数返回,用于区别是哪一个组件的事件
-		index: {
-			type: [Number, String],
-			default: ''
-		}
-	},
-	mounted() {},
-	data() {
-		return {
-			lists: [],
-			isInCount: true,
-			uploading: false
-		};
-	},
-	watch: {
-		fileList: {
-			immediate: true,
-			handler(val) {
-				val.map(value => {
-					// 首先检查内部是否已经添加过这张图片,因为外部绑定了一个对象给fileList的话(对象引用),进行修改外部fileList
-					// 时,会触发watch,导致重新把原来的图片再次添加到this.lists
-					// 数组的some方法意思是,只要数组元素有任意一个元素条件符合,就返回true,而另一个数组的every方法的意思是数组所有元素都符合条件才返回true
-					let tmp = this.lists.some(val => {
-						return val.url == value.url;
-					})
-					// 如果内部没有这个图片(tmp为false),则添加到内部
-					!tmp && this.lists.push({ url: value.url, error: false, progress: 100 });
-				});
-			}
-		},
-		// 监听lists的变化,发出事件
-		lists(n) {
-			this.$emit('on-list-change', n, this.index);
-		}
-	},
-	methods: {
-		// 清除列表
-		clear() {
-			this.lists = [];
-		},
-		// 重新上传队列中上传失败的所有文件
-		reUpload() {
-			this.uploadFile();
-		},
-		// 选择图片
-		selectFile() {
-			if (this.disabled) return;
-			const { name = '', maxCount, multiple, maxSize, sizeType, lists, camera, compressed, maxDuration, sourceType } = this;
-			let chooseFile = null;
-			const newMaxCount = maxCount - lists.length;
-			// 设置为只选择图片的时候使用 chooseImage 来实现
-			chooseFile = new Promise((resolve, reject) => {
-				uni.chooseImage({
-					count: multiple ? (newMaxCount > 9 ? 9 : newMaxCount) : 1,
-					sourceType: sourceType,
-					sizeType,
-					success: resolve,
-					fail: reject
-				});
-			});
-			chooseFile
-				.then(res => {
-					let file = null;
-					let listOldLength = this.lists.length;
-					res.tempFiles.map((val, index) => {
-						// 检查文件后缀是否允许,如果不在this.limitType内,就会返回false
-						if(!this.checkFileExt(val)) return ;
-						
-						// 如果是非多选,index大于等于1或者超出最大限制数量时,不处理
-						if (!multiple && index >= 1) return;
-						if (val.size > maxSize) {
-							this.$emit('on-oversize', val, this.lists, this.index);
-							this.showToast('超出允许的文件大小');
-						} else {
-							if (maxCount <= lists.length) {
-								this.$emit('on-exceed', val, this.lists, this.index);
-								this.showToast('超出最大允许的文件个数');
-								return;
-							}
-							lists.push({
-								url: val.path,
-								progress: 0,
-								error: false,
-								file: val
-							});
-						}
-					});
-					// 每次图片选择完,抛出一个事件,并将当前内部选择的图片数组抛出去
-					this.$emit('on-choose-complete', this.lists, this.index);
-					if (this.autoUpload) this.uploadFile(listOldLength);
-				})
-				.catch(error => {
-					this.$emit('on-choose-fail', error);
-				});
-		},
-		// 提示用户消息
-		showToast(message, force = false) {
-			if (this.showTips || force) {
-				uni.showToast({
-					title: message,
-					icon: 'none'
-				});
-			}
-		},
-		// 该方法供用户通过ref调用,手动上传
-		upload() {
-			this.uploadFile();
-		},
-		// 对失败的图片重新上传
-		retry(index) {
-			this.lists[index].progress = 0;
-			this.lists[index].error = false;
-			this.lists[index].response = null;
-			uni.showLoading({
-				title: '重新上传'
-			});
-			this.uploadFile(index);
-		},
-		// 上传图片
-		async uploadFile(index = 0) {
-			if (this.disabled) return;
-			if (this.uploading) return;
-			// 全部上传完成
-			if (index >= this.lists.length) {
-				this.$emit('on-uploaded', this.lists, this.index);
-				return;
-			}
-			// 检查是否是已上传或者正在上传中
-			if (this.lists[index].progress == 100) {
-				if (this.autoUpload == false) this.uploadFile(index + 1);
-				return;
-			}
-			// 执行before-upload钩子
-			if(this.beforeUpload && typeof(this.beforeUpload) === 'function') {
-				// 执行回调,同时传入索引和文件列表当作参数
-				// 在微信,支付宝等环境(H5正常),会导致父组件定义的customBack()函数体中的this变成子组件的this
-				// 通过bind()方法,绑定父组件的this,让this.customBack()的this为父组件的上下文
-				// 因为upload组件可能会被嵌套在其他组件内,比如u-form,这时this.$parent其实为u-form的this,
-				// 非页面的this,所以这里需要往上历遍,一直寻找到最顶端的$parent,这里用了this.$u.$parent.call(this)
-				// 明白意思即可,无需纠结this.$u.$parent.call(this)的细节
-				let beforeResponse = this.beforeUpload.bind(this.$u.$parent.call(this))(index, this.lists);
-				// 判断是否返回了promise
-				if (!!beforeResponse && typeof beforeResponse.then === 'function') {
-					await beforeResponse.then(res => {
-						// promise返回成功,不进行动作,继续上传
-					}).catch(err => {
-						// 进入catch回调的话,继续下一张
-						return this.uploadFile(index + 1);
-					})
-				} else if(beforeResponse === false) {
-					// 如果返回false,继续下一张图片的上传
-					return this.uploadFile(index + 1);
-				} else {
-					// 此处为返回"true"的情形,这里不写代码,就跳过此处,继续执行当前的上传逻辑
-				}
-			}
-			// 检查上传地址
-			if (!this.action) {
-				this.showToast('请配置上传地址', true);
-				return;
-			}
-			this.lists[index].error = false;
-			this.uploading = true;
-			// 创建上传对象
-			const task = uni.uploadFile({
-				url: this.action,
-				filePath: this.lists[index].url,
-				name: this.name,
-				formData: this.formData,
-				header: this.header,
-				success: res => {
-					// 判断是否json字符串,将其转为json格式
-					let data = this.toJson && this.$u.test.jsonString(res.data) ? JSON.parse(res.data) : res.data;
-					if (![200, 201, 204].includes(res.statusCode)) {
-						this.uploadError(index, data);
-					} else {
-						// 上传成功
-						this.lists[index].response = data;
-						this.lists[index].progress = 100;
-						this.lists[index].error = false;
-						this.$emit('on-success', data, index, this.lists, this.index);
-					}
-				},
-				fail: e => {
-					this.uploadError(index, e);
-				},
-				complete: res => {
-					uni.hideLoading();
-					this.uploading = false;
-					this.uploadFile(index + 1);
-					this.$emit('on-change', res, index, this.lists, this.index);
-				}
-			});
-			task.onProgressUpdate(res => {
-				if (res.progress > 0) {
-					this.lists[index].progress = res.progress;
-					this.$emit('on-progress', res, index, this.lists, this.index);
-				}
-			});
-		},
-		// 上传失败
-		uploadError(index, err) {
-			this.lists[index].progress = 0;
-			this.lists[index].error = true;
-			this.lists[index].response = null;
-			this.$emit('on-error', err, index, this.lists, this.index);
-			this.showToast('上传失败,请重试');
-		},
-		// 删除一个图片
-		deleteItem(index) {
-			uni.showModal({
-				title: '提示',
-				content: '您确定要删除此项吗?',
-				success: async (res) => {
-					if (res.confirm) {
-						// 先检查是否有定义before-remove移除前钩子
-						// 执行before-remove钩子
-						if(this.beforeRemove && typeof(this.beforeRemove) === 'function') {
-							// 此处钩子执行 原理同before-remove参数,见上方注释
-							let beforeResponse = this.beforeRemove.bind(this.$u.$parent.call(this))(index, this.lists);
-							// 判断是否返回了promise
-							if (!!beforeResponse && typeof beforeResponse.then === 'function') {
-								await beforeResponse.then(res => {
-									// promise返回成功,不进行动作,继续上传
-									this.handlerDeleteItem(index);
-								}).catch(err => {
-									// 如果进入promise的reject,终止删除操作
-									this.showToast('已终止移除');
-								})
-							} else if(beforeResponse === false) {
-								// 返回false,终止删除
-								this.showToast('已终止移除');
-							} else {
-								// 如果返回true,执行删除操作
-								this.handlerDeleteItem(index);
-							}
-						} else {
-							// 如果不存在before-remove钩子,
-							this.handlerDeleteItem(index);
-						}
-					}
-				}
-			});
-		},
-		// 执行移除图片的动作,上方代码只是判断是否可以移除
-		handlerDeleteItem(index) {
-			// 如果文件正在上传中,终止上传任务,进度在0 < progress < 100则意味着正在上传
-			if (this.lists[index].process < 100 && this.lists[index].process > 0) {
-				typeof this.lists[index].uploadTask != 'undefined' && this.lists[index].uploadTask.abort();
-			}
-			this.lists.splice(index, 1);
-			this.$forceUpdate();
-			this.$emit('on-remove', index, this.lists, this.index);
-			this.showToast('移除成功');
-		},
-		// 用户通过ref手动的形式,移除一张图片
-		remove(index) {
-			// 判断索引的合法范围
-			if (index >= 0 && index < this.lists.length) {
-				this.lists.splice(index, 1);
-				this.$emit('on-list-change', this.lists, this.index);
-			}
-		},
-		// 预览图片
-		doPreviewImage(url, index) {
-			if (!this.previewFullImage) return;
-			const images = this.lists.map(item => item.url || item.path);
-			uni.previewImage({
-				urls: images,
-				current: url,
-				success: () => {
-					this.$emit('on-preview', url, this.lists, this.index);
-				},
-				fail: () => {
-					uni.showToast({
-						title: '预览图片失败',
-						icon: 'none'
-					});
-				}
-			});
-		},
-		// 判断文件后缀是否允许
-		checkFileExt(file) {
-			// 检查是否在允许的后缀中
-			let noArrowExt = false;
-			// 获取后缀名
-			let fileExt = '';
-			const reg = /.+\./;
-			// 如果是H5,需要从name中判断
-			// #ifdef H5
-			fileExt = file.name.replace(reg, "").toLowerCase();
-			// #endif
-			// 非H5,需要从path中读取后缀
-			// #ifndef H5
-			fileExt = file.path.replace(reg, "").toLowerCase();
-			// #endif
-			// 使用数组的some方法,只要符合limitType中的一个,就返回true
-			noArrowExt = this.limitType.some(ext => {
-				// 转为小写
-				return ext.toLowerCase() === fileExt;
-			})
-			if(!noArrowExt) this.showToast(`不允许选择${fileExt}格式的文件`);
-			return noArrowExt;
-		}
-	}
-};
-</script>
-
-<style lang="scss" scoped>
-@import '../../libs/css/style.components.scss';
-
-.u-upload {
-	@include vue-flex;
-	flex-wrap: wrap;
-	align-items: center;
-}
-
-.u-list-item {
-	width: 200rpx;
-	height: 200rpx;
-	overflow: hidden;
-	margin: 10rpx;
-	background: rgb(244, 245, 246);
-	position: relative;
-	border-radius: 10rpx;
-	/* #ifndef APP-NVUE */
-	display: flex;
-	/* #endif */
-	align-items: center;
-	justify-content: center;
-}
-
-.u-preview-wrap {
-	border: 1px solid rgb(235, 236, 238);
-}
-
-.u-add-wrap {
-	flex-direction: column;
-	color: $u-content-color;
-	font-size: 26rpx;
-}
-
-.u-add-tips {
-	margin-top: 20rpx;
-	line-height: 40rpx;
-}
-
-.u-add-wrap__hover {
-	background-color: rgb(235, 236, 238);
-}
-
-.u-preview-image {
-	display: block;
-	width: 100%;
-	height: 100%;
-	border-radius: 10rpx;
-}
-
-.u-delete-icon {
-	position: absolute;
-	top: 10rpx;
-	right: 10rpx;
-	z-index: 10;
-	background-color: $u-type-error;
-	border-radius: 100rpx;
-	width: 44rpx;
-	height: 44rpx;
-	@include vue-flex;
-	align-items: center;
-	justify-content: center;
-}
-
-.u-icon {
-	@include vue-flex;
-	align-items: center;
-	justify-content: center;
-}
-
-.u-progress {
-	position: absolute;
-	bottom: 10rpx;
-	left: 8rpx;
-	right: 8rpx;
-	z-index: 9;
-	width: auto;
-}
-
-.u-error-btn {
-	color: #ffffff;
-	background-color: $u-type-error;
-	font-size: 20rpx;
-	padding: 4px 0;
-	text-align: center;
-	position: absolute;
-	bottom: 0;
-	left: 0;
-	right: 0;
-	z-index: 9;
-	line-height: 1;
-}
-</style>
diff --git a/uview-ui/components/u-verification-code/u-verification-code.vue b/uview-ui/components/u-verification-code/u-verification-code.vue
deleted file mode 100644
index b3079f4..0000000
--- a/uview-ui/components/u-verification-code/u-verification-code.vue
+++ /dev/null
@@ -1,164 +0,0 @@
-<template>
-	<view class="u-code-wrap">
-		<!-- 此组件功能由js完成,无需写html逻辑 -->
-	</view>
-</template>
-
-<script>
-	/**
-	 * verificationCode 验证码输入框
-	 * @description 考虑到用户实际发送验证码的场景,可能是一个按钮,也可能是一段文字,提示语各有不同,所以本组件 不提供界面显示,只提供提示语,由用户将提示语嵌入到具体的场景
-	 * @tutorial https://www.uviewui.com/components/verificationCode.html
-	 * @property {Number String} seconds 倒计时所需的秒数(默认60)
-	 * @property {String} start-text 开始前的提示语,见官网说明(默认获取验证码)
-	 * @property {String} change-text 倒计时期间的提示语,必须带有字母"x",见官网说明(默认X秒重新获取)
-	 * @property {String} end-text 倒计结束的提示语,见官网说明(默认重新获取)
-	 * @property {Boolean} keep-running 是否在H5刷新或各端返回再进入时继续倒计时(默认false)
-	 * @event {Function} change 倒计时期间,每秒触发一次
-	 * @event {Function} start 开始倒计时触发
-	 * @event {Function} end 结束倒计时触发
-	 * @example <u-verification-code :seconds="seconds" @end="end" @start="start" ref="uCode" 
-	 */
-	export default {
-		name: "u-verification-code",
-		props: {
-			// 倒计时总秒数
-			seconds: {
-				type: [String, Number],
-				default: 60
-			},
-			// 尚未开始时提示
-			startText: {
-				type: String,
-				default: '获取验证码'
-			},
-			// 正在倒计时中的提示
-			changeText: {
-				type: String,
-				default: 'X秒重新获取'
-			},
-			// 倒计时结束时的提示
-			endText: {
-				type: String,
-				default: '重新获取'
-			},
-			// 是否在H5刷新或各端返回再进入时继续倒计时
-			keepRunning: {
-				type: Boolean,
-				default: false
-			},
-			// 为了区分多个页面,或者一个页面多个倒计时组件本地存储的继续倒计时变了
-			uniqueKey: {
-				type: String,
-				default: ''
-			}
-		},
-		data() {
-			return {
-				secNum: this.seconds,
-				timer: null,
-				canGetCode: true, // 是否可以执行验证码操作
-			}
-		},
-		mounted() {
-			this.checkKeepRunning();
-		},
-		watch: {
-			seconds: {
-				immediate: true,
-				handler(n) {
-					this.secNum = n;
-				}
-			}
-		},
-		methods: {
-			checkKeepRunning() {
-				// 获取上一次退出页面(H5还包括刷新)时的时间戳,如果没有上次的保存,此值可能为空
-				let lastTimestamp = Number(uni.getStorageSync(this.uniqueKey + '_$uCountDownTimestamp'));
-				if(!lastTimestamp) return this.changeEvent(this.startText);
-				// 当前秒的时间戳
-				let nowTimestamp = Math.floor((+ new Date()) / 1000);
-				// 判断当前的时间戳,是否小于上一次的本该按设定结束,却提前结束的时间戳
-				if(this.keepRunning && lastTimestamp && lastTimestamp > nowTimestamp) {
-					// 剩余尚未执行完的倒计秒数
-					this.secNum = lastTimestamp - nowTimestamp;
-					// 清除本地保存的变量
-					uni.removeStorageSync(this.uniqueKey + '_$uCountDownTimestamp');
-					// 开始倒计时
-					this.start();
-				} else {
-					// 如果不存在需要继续上一次的倒计时,执行正常的逻辑
-					this.changeEvent(this.startText);
-				}
-			},
-			// 开始倒计时
-			start() {
-				// 防止快速点击获取验证码的按钮而导致内部产生多个定时器导致混乱
-				if(this.timer) {
-					clearInterval(this.timer);
-					this.timer = null;
-				}
-				this.$emit('start');
-				this.canGetCode = false;
-				// 这里放这句,是为了一开始时就提示,否则要等setInterval的1秒后才会有提示
-				this.changeEvent(this.changeText.replace(/x|X/, this.secNum));
-				this.setTimeToStorage();
-				this.timer = setInterval(() => {
-					if (--this.secNum) {
-						// 用当前倒计时的秒数替换提示字符串中的"x"字母
-						this.changeEvent(this.changeText.replace(/x|X/, this.secNum));
-					} else {
-						clearInterval(this.timer);
-						this.timer = null;
-						this.changeEvent(this.endText);
-						this.secNum = this.seconds;
-						this.$emit('end');
-						this.canGetCode = true;
-					}
-				}, 1000);
-			},
-			// 重置,可以让用户再次获取验证码
-			reset() {
-				this.canGetCode = true;
-				clearInterval(this.timer);
-				this.secNum = this.seconds;
-				this.changeEvent(this.endText);
-			},
-			changeEvent(text) {
-				this.$emit('change', text);
-			},
-			// 保存时间戳,为了防止倒计时尚未结束,H5刷新或者各端的右上角返回上一页再进来
-			setTimeToStorage() {
-				if(!this.keepRunning || !this.timer) return;
-				// 记录当前的时间戳,为了下次进入页面,如果还在倒计时内的话,继续倒计时
-				// 倒计时尚未结束,结果大于0;倒计时已经开始,就会小于初始值,如果等于初始值,说明没有开始倒计时,无需处理
-				if(this.secNum > 0 && this.secNum <= this.seconds) {
-					// 获取当前时间戳(+ new Date()为特殊写法),除以1000变成秒,再去除小数部分
-					let nowTimestamp = Math.floor((+ new Date()) / 1000);
-					// 将本该结束时候的时间戳保存起来 => 当前时间戳 + 剩余的秒数
-					uni.setStorage({
-						key: this.uniqueKey + '_$uCountDownTimestamp',
-						data: nowTimestamp + Number(this.secNum)
-					})
-				}
-			}
-		},
-		// 组件销毁的时候,清除定时器,否则定时器会继续存在,系统不会自动清除
-		beforeDestroy() {
-			this.setTimeToStorage();
-			clearTimeout(this.timer);
-			this.timer = null;
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	@import "../../libs/css/style.components.scss";
-	
-	.u-code-wrap {
-		width: 0;
-		height: 0;
-		position: fixed;
-		z-index: -1;
-	}
-</style>
diff --git a/uview-ui/components/u-waterfall/u-waterfall.vue b/uview-ui/components/u-waterfall/u-waterfall.vue
deleted file mode 100644
index 31964b7..0000000
--- a/uview-ui/components/u-waterfall/u-waterfall.vue
+++ /dev/null
@@ -1,176 +0,0 @@
-<template>
-	<view class="u-waterfall">
-		<view id="u-left-column" class="u-column"><slot name="left" :leftList="leftList"></slot></view>
-		<view id="u-right-column" class="u-column"><slot name="right" :rightList="rightList"></slot></view>
-	</view>
-</template>
-
-<script>
-/**
- * waterfall 瀑布流
- * @description 这是一个瀑布流形式的组件,内容分为左右两列,结合uView的懒加载组件效果更佳。相较于某些只是奇偶数左右分别,或者没有利用vue作用域插槽的做法,uView的瀑布流实现了真正的 组件化,搭配LazyLoad 懒加载和loadMore 加载更多组件,让您开箱即用,眼前一亮。
- * @tutorial https://www.uviewui.com/components/waterfall.html
- * @property {Array} flow-list 用于渲染的数据
- * @property {String Number} add-time 单条数据添加到队列的时间间隔,单位ms,见上方注意事项说明(默认200)
- * @example <u-waterfall :flowList="flowList"></u-waterfall>
- */
-export default {
-	name: "u-waterfall",
-	props: {
-		value: {
-			// 瀑布流数据
-			type: Array,
-			required: true,
-			default: function() {
-				return [];
-			}
-		},
-		// 每次向结构插入数据的时间间隔,间隔越长,越能保证两列高度相近,但是对用户体验越不好
-		// 单位ms
-		addTime: {
-			type: [Number, String],
-			default: 200
-		},
-		// id值,用于清除某一条数据时,根据此idKey名称找到并移除,如数据为{idx: 22, name: 'lisa'}
-		// 那么该把idKey设置为idx
-		idKey: {
-			type: String,
-			default: 'id'
-		}
-	},
-	data() {
-		return {
-			leftList: [],
-			rightList: [],
-			tempList: [],
-			children: []
-		}
-	},
-	watch: {
-		copyFlowList(nVal, oVal) {
-			// 取差值,即这一次数组变化新增的部分
-			let startIndex = Array.isArray(oVal) && oVal.length > 0 ? oVal.length : 0;
-			// 拼接上原有数据
-			this.tempList = this.tempList.concat(this.cloneData(nVal.slice(startIndex)));
-			this.splitData();
-		}
-	},
-	mounted() {
-		this.tempList = this.cloneData(this.copyFlowList);
-		this.splitData();
-	},
-	computed: {
-		// 破坏flowList变量的引用,否则watch的结果新旧值是一样的
-		copyFlowList() {
-			return this.cloneData(this.value);
-		}
-	},
-	methods: {
-		async splitData() {
-			if (!this.tempList.length) return;
-			let leftRect = await this.$uGetRect('#u-left-column');
-			let rightRect = await this.$uGetRect('#u-right-column');
-			// 如果左边小于或等于右边,就添加到左边,否则添加到右边
-			let item = this.tempList[0];
-			// 解决多次快速上拉后,可能数据会乱的问题,因为经过上面的两个await节点查询阻塞一定时间,加上后面的定时器干扰
-			// 数组可能变成[],导致此item值可能为undefined
-			if(!item) return ;
-			if (leftRect.height < rightRect.height) {
-				this.leftList.push(item);
-			} else if (leftRect.height > rightRect.height) {
-				this.rightList.push(item);
-			} else {
-				// 这里是为了保证第一和第二张添加时,左右都能有内容
-				// 因为添加第一张,实际队列的高度可能还是0,这时需要根据队列元素长度判断下一个该放哪边
-				if (this.leftList.length <= this.rightList.length) {
-					this.leftList.push(item);
-				} else {
-					this.rightList.push(item);
-				}
-			}
-			// 移除临时列表的第一项
-			this.tempList.splice(0, 1);
-			// 如果临时数组还有数据,继续循环
-			if (this.tempList.length) {
-				setTimeout(() => {
-					this.splitData();
-				}, this.addTime)
-			}
-		},
-		// 复制而不是引用对象和数组
-		cloneData(data) {
-			return JSON.parse(JSON.stringify(data));
-		},
-		// 清空数据列表
-		clear() {
-			this.leftList = [];
-			this.rightList = [];
-			// 同时清除父组件列表中的数据
-			this.$emit('input', []);
-			this.tempList = [];
-		},
-		// 清除某一条指定的数据,根据id实现
-		remove(id) {
-			// 如果findIndex找不到合适的条件,就会返回-1
-			let index = -1;
-			index = this.leftList.findIndex(val => val[this.idKey] == id);
-			if(index != -1) {
-				// 如果index不等于-1,说明已经找到了要找的id,根据index索引删除这一条数据
-				this.leftList.splice(index, 1);
-			} else {
-				// 同理于上方面的方法
-				index = this.rightList.findIndex(val => val[this.idKey] == id);
-				if(index != -1) this.rightList.splice(index, 1);
-			}
-			// 同时清除父组件的数据中的对应id的条目
-			index = this.value.findIndex(val => val[this.idKey] == id);
-			if(index != -1) this.$emit('input', this.value.splice(index, 1));
-		},
-		// 修改某条数据的某个属性
-		modify(id, key, value) {
-			// 如果findIndex找不到合适的条件,就会返回-1
-			let index = -1;
-			index = this.leftList.findIndex(val => val[this.idKey] == id);
-			if(index != -1) {
-				// 如果index不等于-1,说明已经找到了要找的id,修改对应key的值
-				this.leftList[index][key] = value;
-			} else {
-				// 同理于上方面的方法
-				index = this.rightList.findIndex(val => val[this.idKey] == id);
-				if(index != -1) this.rightList[index][key] = value;
-			}
-			// 修改父组件的数据中的对应id的条目
-			index = this.value.findIndex(val => val[this.idKey] == id);
-			if(index != -1) {
-				// 首先复制一份value的数据
-				let data = this.cloneData(this.value);
-				// 修改对应索引的key属性的值为value
-				data[index][key] = value;
-				// 修改父组件通过v-model绑定的变量的值
-				this.$emit('input', data);
-			}
-		}
-	}
-}
-</script>
-
-<style lang="scss" scoped>
-@import "../../libs/css/style.components.scss";
-
-.u-waterfall {
-	@include vue-flex;
-	flex-direction: row;
-	align-items: flex-start;
-}
-
-.u-column {
-	@include vue-flex;
-	flex: 1;
-	flex-direction: column;
-	height: auto;
-}
-
-.u-image {
-	width: 100%;
-}
-</style>
diff --git a/uview-ui/iconfont.css b/uview-ui/iconfont.css
deleted file mode 100644
index 836c718..0000000
--- a/uview-ui/iconfont.css
+++ /dev/null
@@ -1,910 +0,0 @@
-/* #ifdef APP-PLUS */
-@font-face {
-	font-family: "uicon-iconfont";
-	font-weight: normal;
-	font-style: normal;
-	font-display: auto;
-	src: url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAGQYAAsAAAAAw2gAAGPEAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHEIGVgCdAAqCv3SB/XABNgIkA4ZoC4M2AAQgBYRtB5cNG+OfdYacxwEA9eYzEqHbAaXC+ZFZWS8oKTr7/09LKmNsu7DdEEVL04JkStgZyOKZ/ILQ2JzQooY+O2mlDm88cwprtIUJRYoVp8q1MEe1Ow/WIUjUNfnNH9HJV5m92kW8dnj/3pEhB8aSgR+4kj24yOevPzf/ix2t5Ij79FHJAsd5EFJ2EoByUZPNHtWZ1VUw8TCKNsPzc+v9/WVQI8dGjhpsRMkSRg/YRimMGiDhCBkIyggFLMAzAAsVA/BOjAJUrBMVFTk9PQUPK0D0ro1REM/4bck0GjGLMBKwOzEqMDrm/+DNvwEAhTsoAAkoYGpB7e4LMInq4Z7d2/lSHmrkiVCowgFOGC/4BjLdjqZBMK9fkWmEJpgKgx8EK9nAPEPOk30pNCLq0BlSKNLexDrvFnL/EBcKlB/2YPqlzm92rMBKbxWxIXacD0TdMTTllTdfbtWnkEtVgBUaVkW6e6oqLSvgq84luVauJUGaMQg240CPmETe+8e/tZabTzHZvWtZycoqHH//BQBFFJvYg6cSCAPK0P/lViVvbmTWIzDi0N0rLjdoVkyOXJIrXJMg1hJIpYJpuwL9q2rensSOdFq7rfav29kR3LEgWD1R08h27tjxMauRWqk1yAqQxIEnxwk/k9Xvp4mNJ5uJLShAeP9ebatUY0naCgW0UITh59azOqqoboMT35k+wU5MV6BC/qWqJ5UnA9vtHQlfnOYXH0EGqAuWT9o/uCI/R6qH5JFb21r+/3mKC2j3fzlyPaQSlCkmTghdBueFPOIgIuD/pjV7uSVUtRJH3r1Qi793yiERbvfPn1kmfye50j+ht+xRakKdXWpRyFaEW2p3vgqDx5kmUV5C/ceN8zDBBaE/Jw+cu0rV+oKmNmRq88X0i/W3q7b+l373+kzPkBYGICUCkGiCVIIo+wTKgQBlF0E6BXIjpfPl9IoRIB0I0nsFUA6kfAHcKG6W9/JrN1/Mz5Ce9/jc+327ryVoKss14vz/aVtEFGJxKA6zw9isAcvQsULlmCICMkSMr7y8H5v/3H7HKsRIsIE7JNR0v68Ola+NidPXgYK7d4y5/kTrx1YiH3ACHY721PpPEwB52aopNP+2724kpHhSAITxv1FDjHzpgDzZMsCCoCevzA4ZdNuGwWaub2JsOr5/+GfTAhbIQEXxzM4jWww363cwcBfD37CDtobhdX241wMioCayVW4+bY0NiYeueRB+9rkNjZPR3SzDmPy+DZuAipEDJ95srvX1+/VHZ73km/Ct/p2utNSVpqu82hqCBAuZNq+8ATmVfJVWWHeYbwS/04tPTM/uwnx5/WrZyVW5K5oTo3NVqPm14m2BMjTemmu9rddzuzLfe3tb7nMPuIeaD4waumN34v8dT1ljigt5jIEn4Cl4Bp6D5ra9AG3NcPfedF1NNsxLUJuXzqNjHXsFxnkN7h/femLnVG/A/n11YXjrmqOdt2C8CXIrtGdHJTfBu2Cm98D7IK87oI0PwYGTB7d/BKbooLKD+cRp72PwCfgUPJjtMzDN5ocTVRGvs6Za+Bx8Ab4ErbS26yswyKFJmhmlgAJ7RxhpsHpyne6mux7O9NRLF7310VdL/fQ3QBlk9lgsrTBPIVaoHNDQMdRZoDhTZtCYLJhDgOkttEgOhiVZjcuWr1i5qiSi1jWlrF23fsPGoarqPdJQmPaAzQefgK8sZ8+dH+jCxUuXr1y9dv3GzVu37zTWRAX+AgQKEixEKFdcbtx5AINyGjgWYHT9vvZfIDCqgylAED4WAqOAYHwChMSnQCh8BoTG50AYfAGExVaEw53C40sgAnYgIs4mEt4TGe+LgrOIij2IhtOIjiOJga+ATLA2kCnWATLD7TLH47LACcTEE7LE10BWOJGs8Q2QDT6QLZ6UHe4QC0/JHveIjTOIg2+BHPCgHPGAnLAukDNGALlgPSBX3Ccuzic37Eju+A7IAyeRJ04mL4wE4uF48sZc+eBu8bESkADfA/niByA/nEP++BEoAD8BBWI0UBB+BgrG9hSCX4BC8ZAW4WmF4WEJcZdE+BVIjNNJgp1JipWBZHhG4RgDFIFdSI6dKBK/AUXhd6Bo/AEUgw8Vi/MoDn8CxeNMUuA2JeAjJeIUSsIqQErsSirsRmrMoWRsTSn4CygVfwOl4R+gdGxLi7EdLcG9ysC/QJmPNw0eURZOpWxsSTk4lnIxDigPx5EW9yv/nFXgqND5XUthfaAiHEXFeFYl2JNKsRctw96kw3Mqwz5Ujn2pArtTJfaj5difqnAA6bENVeNAqsFBtAIHUy2WBarDeKCVWA5oFaYC1WNJIAMuoAZcSI2YANSEpYCaMRFoNVYEWoNJQC2YDNSKhYDacBGtxcW0DgsDrcciQBuwKNBGDAdqxxJAHVgcqBOLAW3CYKAfMARoM86lLbiEtuJS2oZhQD24TNtxuXZgKFAvrtAeXKk+XKX9uFoHcI0O4lodwtJA/RgLNIDrNIjrNYRlgI7iBh3DjTqDm3QWN2sYt2gUR9AvWBXoBR7VOzxmPozNgflIbAHMx82tPbwZJFOzvJzMNDmb6fIyM8Q3M5VgDlereV4PzAv63byo53AICxLwkgUqvGyBel5RqXlVOvOays3rWmHeUK15Uw3mLa0289Ri3labeUdrzbv6yczSFTNb/8MKwIAcGwADKmwIDOTORsozG0trNlG+2VQVZjNVmtVUY1bXCrOG1pk1tcEfawH4D2DQdYP/N20SmD0zvuG/kuhhSdB/fz0IEhYaHmrTyNGHgpHDaUQyEvylEiPhpvAsgAdcUqDhBAzjoxDBamWWHEXLRUk3zQIxJnRqcWaNC1AmhIpAAVyaA7hpHlAPTAEsEAikPkuF4ArAbE4NKENRV7oFAztaGpkyLioJfbF3cbQNo6FblBgH+xgUe1gRDVZjE0h+jmFKOA1ZH2aGqUo1CNuTLdrewl6g5gToj+dRS0ckZ5JyNwz5Vguh2Wa0tKjj/kJ0Pi8Q8yPlTocrnq4hEa3FCDocKYsubQ9jkix6OMlKQVSKzZhMfyUP+hh8LpsQPaxNgRhujI5YpMtinZ4414eSNeBbw1Ls6Gp2amgIjjunapxZgSPKLKeXY1BBiz3kxFjZLCmGrd20fav4lvWoCFiF0i7H/rBPPxcbTXmpffcEi0en9a4TrZ3b29250myHaYrEbXJ2IQIbKp61FYJT8MxSGdedJsFuVe2162qscnZbu93dHb9dtt/tHxOSmhwU4liXKB6sThZdbqZB68SUGFIUHO9hC4V931S2mW42m7B+S/EEgYKUJasluMCKgWG0syNq01mLLImeKX+CQedh0gE8PQ1oajBrg1UqguHfLBI4fLvEHTNqQ01rZq/1J39onmem5XFG2PmFXDN/f7C8Zl/Cq6X+CZJlshonJDsrE/AIu0EMC9sGlTQsLrgq4vVMLdh5NKgO4rC/QGaKWGIacOw8l5RuOgcchkMH1+90IOa/2N+azrACjLEvwNZsit0UF7BcoRWCbK67FLt24V0TPbgcxG39QNk1uUNKGPRZcS7Y7J5ktZljwx4ATLywmxph7hHqvPNfk+GdpPwQNMgQwXQYO54MZiiwuRQE2xAwOQgOAqGgE/RQl5+FfF7eDYfm2jFIhuuoz9XThdADbICBfGs1rTkfbCtCEhxC5FEhFdA8I68xxB3fDFU9JZjRqUMNKcPlXD7pCm4sIH8q20pngJRErVfT2Iahf+8X8Lvg3AOBsOtwuevJxeXm2SYvAbmlbDkExXPQNDIWTadUAEa98rqioP2RNAsLylBYAMEHqJgBVgaLpgzMHbjbBA2L39wEpEXjzCY7s00W1LgT1EwRxSjjxoJ/oFoKjHPON5aDfedhXl8dmckO1uIN10j1HFmyxd2SFOnC0Vh9kVKwrAGJr0OuGlYpYquJrxYtQ2mlzzGVcVCL8swKGkTQ64kagF8j100W718Q8VopCopjK6C4i689URK20A+IJnQuzXMmR52pWYXM9Hpi04bbbujXXkyI4rNVaAWkKSDXORDJu/7z0pirFs1kEmQzXpT6cfjEUGba5thBeu5/cVtb3kINXO93sNeGlXdWDqW8Hfe6osCwCoqrx2W+Y7uOkVA5lLKlGFBqiITEw/FVPIzO4oLVG5FIN0RNBuV1nGh7JMPZTXV5Ho4HjtjKUErsFtxU6QAwTFvFtdCrDy/vjtdR1yFyq7L59XcVnfG+Rx8fNugzG5n4hSR8dfVxQtOPLXnV3U7typyHRy8KvUrEizAGooABJbOhIKbfJpjGMVh3UtTP7zGK1rIRZfTb3Lsw1r2mC4I6QtKc6cFxOj0gJi8doJz3ht3QfkJJ1wL/kAGhczPEyF41Y2VGn1I5pc51d/6ovdWl/R++PzjbHq1PH8agTYWXvDKFjYlQtx/giou9Kijc3D51Ry9CZgqZoq2SRhVnwZlZRRRgBmkvlgBUl9aIk4EYz0Ld31USbuBrAuX2cHRLqLkvaB/EQt/dhAhuSvI+lWsRSEvUWC1eFNI9VBWo8ByVBbcPhCMpx9csfloGoIYWdabz1qC15pKm5GcSYKDyBZPDbdrU6okbWL/G04cmkqLK7na4JW3mTtSQ1lp4KzldOg7Q+7J3YEJwv/wuuru5bNkSevbx0X4pjyaLxzTIFpb2bTClTaYAK5VDU4gwIQ0oaMJgscXpMtSQPWSJnFlqSYHUQjHGOGRKUH8O36cNr9+SoNKjs5XxSJ5Ky+n2FS3j8cepyIBkSzCnH/K07s6pmXizamV/7UUOgEJDBqRBqHOygXBIIVHwVooRWC7qBIzPMuxeDuU5bMWvt3V8Ap51RNVMI+ghOGnGhok7t75QDbfX+hlVr7KXA93sSUUvdVq8g4hMktX8uiXrkdWyjmawkwnROjZ/yWSORHT1kZOeOU918lDEm08fmk5fQovOZw48n6lB0JwiejPCVQHNy+Yi3nStRNdRYsk3/KCdyzDOBPdT3RcSEWTnMhc1KtuAJeNCExCwxbvSEd+EWSLpqAokpBRDybILw0GWJ5WICLUxnrU3v70ZJFQ6snWeJKejBykXDXRK7poBRMxK96reuvm9SPI/uFVG+LeyL1wIiFdJFAobVU4sITsEjSkVvZSt9hFPFAmCMGfPWo+WrkRm1j/ICLuKrhjPMQCAxQTKRWMjcRloQoArUYtA9LrztibHkNO7kgft3xgnNF1DGixWcOCk/e6DuVeL37stucRVKA/8tjsTiaXlZu7soX8nyS/8SmuVRmdrVllccLKGEN7vqCrtcczv14jfmVyQykAf3ig1GTo1M8FzhXwRSOzZwpns4LloG9+SyHQgpVxK5LcGVeV6pUQuJDV6UqZP5MkoIO0/JAKD/mzgNHlCvngeFWPrYIiGTcW9SEAwPFJGZ6TF+fgrVBZjsLkB8oTbAUODXA/7t+eKQiDtdeVpWOCq06nj9NZEmQio7UC7ockeAm2JYyQQaaNj8MbMoZqyT4S40BUhJ5uwQyw3OepOW1Q2rITt1Hg3eCuYEDuDTlIiEoYSMSjSVHju3rK8Uj2/kPfI72reEEn5D77TsyRz46rb4Fwc49qev2NsROWSHfmmHx37briuXDtZPWbFaIaLrcdcUJnH1U2G8dkk24tVhjReHe3rCwhsStxxo6p1qZ5LW+u1kvD+DTsrFg4DdfyQCrTDuzdHOz6DNoWyqXOoncD8KLT+C8pNiqE0DdeyTpqd6z2CJn5jBu8mzsXQA4U0spwOkrV6VaYE3+8guIKg0kAD1yJoh6/vRtCpKHpfFxKlhjI5PlM5Nk6lDuQUPIkNdEWaXk/i9tdWDppsyTsM9t29y+sA7BtYHER5q2gbOYvRtmZjbLgnghKmHeSXKhrKGznO7v1Eg7jmvq4svo1Wl0/E20tH9qGyx5eeVJtr275eqrjRPVcplxx1P7Cq5W7s0FP/lsU8hM3qRNNylTBTwnbYbc0a5+ldB5M8UxzyV0VQ2r2Wg4zfxR3GBMGon5T36dCTMsX4GiqF/2wXk3OhUJR6gtdB19zBwOF5L7zh/8rK8dSB8rJGolYqjTme+17uQDY7tl/rLMiR+mJwqEUbS09a55yo2r4QRFC27tgamxxwCXrHW2OjKwwyZhwJVkQHojOMhCbV+OtExBzqWz144bIAwPXJWSDl9V/AT3gt/FvV9DLpa4kkcYPK75GNRA1aDiHjMMPATTRifViXHA909in81q1XvX+wfHiN61JXFECEqzYQEfv/HDFYFFItyUjz4zKqm7ovloZwWPTQH71LMd61qsNBMTe7JemSwyHp4larXRNCn7NMfu4U+NORlgAJjug7eX/XAHRQQxoCfDGwzf5gri3/qvYmu7pPq5YEDVaz+2trZMgC7pVtVTd2HRgFfPM2kY25Ll6SOc3Q2RIFUZaVzcL54q+Ozo4NM1XwLvi2osPGiWJUn9QSdlnqyZgbcO9yM4yiNIMijGdQ2zBUHF4UV6om7EWCKS5wS/J3xb8d+SONy9jOLvu2JoP60VwkMQN07ZQ5qqpMcd+CE4QRPn+dX0mvvNZkpVdfQfhPev1V0Z36wWachYYQ3eRmvw0y5MasO0b1iibPof8wcWiEbOXhB4XAP4S+B49q+gJmXzNGTQqCDxbw5WD66y/fHrPfyuT7YW7l8KdnE4Ps4t73zz+61KxOMOujxFj2aTTFe7gnp7kgABgVsD10CvwGqmAErcCqtHZWG+BT5s+IIwhUDu4iJAp4v4qLHTwU5tngUJrx4C5XWBI23qzM6zIhlfuU7P1CPqfrZ+QDVmmC4NoKNzL1OD2aSWC06s0Wn0fqZSMduphiyNC+okatppSEAPWk8qD+oix8EYiCJd+LNRAbStUos1rq14goRTgeVh4i0l4+RWmMVWQEJEhBtL4II0We6UBxmCHgYSS+LBCQU8pQbV3TwVaX+wVBsQ+CD091vUEfaANTl4fgzGu/c4rlFhh5y2Q07snSbzpu5QJgNLSolAGsz6U/0ZOhppppp0fLAwFMVBlmnVJFptBgpmVKGECEzg3aOPJmH1hIpGl91Lks8E+gcjD64gSTrluWWAARj6UXHhQnDNuB7keTt0mgXKCeVVsHBa0uFyMaKifSUUCyd020gBEpAb6cmV5IqOJ6xtw4G2jPFbVgdh94xis61hMVglUA7TV5Les9yNoiyN47XnFo5mqwv2Lglp5uzMELnNQ8kG3j/b3t+IjFV9cFIGsHsutjg6YbFMqPW13VdIxED5cwOv8Em0DAIUcRoon26OQP923iA49DobDctXYKxcR3AKUJsEnfYIiAn4NKPVZ25AZ2olE50nWtLWP/kn+rSQF84pbKtRCV+d0BLBrgJWuQ4Rh168LgfjctiRyqQ1nj+noGt/yUwhg5HkeEy4dwIc7Cvlm6ytQZ8L0D7/xRjz0whoJnHH5CH3tndWVoqNwmaLzQysMQvA+24yGzYD4ZwCbfT+thJ8klKI0fJlDw1RwxKDKWLUZCNoPssMf0o2Ws2PfiDG3cvgcILQ38kCGuiVAMWNZtfhAopddem+UJQj4OntsYGkIChGZlSC/o/UnkTV3yEDKDJBvAqAyZDcg7JPlmB3z/NuQx0bF3Ifcg98jZltCjGDAGpPw4QEwRwfgSJYvjatCyzG8y1NlMxL4o5HikxKOlh1VYlTzj9mnkl9RBc4ahQtI0wyMFXYJMc0Pge/jcwBPdRCLc+aJU3CWaqstAufCIeomrsJ1AFGY6/mwHPahHVh/xmfX2SZhV6gYEJhinHPjs/DwX2d77BhWFhvFvVr4jSuh3oin6ljQRfvjP+b/SlEj5odhpCCi4ehNhzBhLdLnKEP7BjR+Zhd/Y2SFIcV1rgKJwye1srRKZ5bHOxzNG2hgGxC+/0+P80WKyfY+qQZdbpRXue1R2KxSl2i00ZKA6kHU43MWiqyeAPwoAVbMwHnjk+CI3aPO5jrmHJGp++vAeWjEqU/aSkkip4n42UurvLMWqP+J+riFu6uxlpQlxxlpQGH9ZjptOKfaG0P9VeAyeGC+iqds18Q30QM2KhCXhHrokaLjPkmX8OKlSFU1D81hxS/d3AKcw3Ap0SgT6j9kX6AoW0VZCUSnE4w+jhJSm5m5EMFCP4V/I8RHzC0F+INjYCIVklYlSuUqNclnUOgtEmcoeWhwgldjKqhRP+plqNmICWyZufBov1/ZAsZQGuZP+nhwDvPJMeX8cwuo6oJfX6hV2FD9941s1rBQ6n7DAdI15y6+X74vQHtP5ytb3r8nJtZmaC5EcaBSLaANCXkwDKznaqFDKRwdl7b/Pu6So1X090akA1oTr0bEENqZmibeYBhvSUtw2gilHjQyl2Q/cuv6S4630xlYF8z9rkB+ZTDEvphEaVKZmMiwayg4SIHlhApIxEVX4q1ESoY0xg7pnKHauYTLwYkOFumLLuB/Iu8D5SIa+wZToNxJPGONdZEoLIv1xLjIJNo4K0wOHhjVjcmxHSsnOjO44yPwj5lpLOwJpINT8kWjT4WNwePOXADWeUepOyYP9ByhwoN7FZsU2vYcAGo3sJjEbT06dnVOKBwADocztZ50ekLFu25iQ5Ey6luygQRVUSxkZPZCg0hgd0l7xc+zFjiS+I5iWDIKxL7EIhwrcS5BLGgwiGJcPxj4e5h42pMjDLM8WQ5Te9YVf2TORuKL1oBck8gYY9kPWfPh55ynVii+ZI6T8vOnXgUQWJAINiPj1rkcDLdj7xI8xVSJI/NNdT6bR+QZO/q6sRMc7x+CifRr9ksSc57WoDOisla8Sm+VicLG9W/Wjn2SSQInxS52bIq7igDSTqCiS6g6VHv9GSh+Lb9KFgt3EbcE5lf6pSRWuDNsnzVFrsLoectCnXeOq4X3Wtd37AxxkO2o6QBGAhR09CkBMpESSRyN0OsDQBsIWCXWU5qDWewgqIxXQDp7q5uc6oYaeCF6zpjBCUZKGSLikTk1DZNb3f2khif0PTQCePvgV5Ap88EtMcUnEsBjxRbl4VX78/181nbbsAnR9pO7l1ns+4dY09vyk6xNJ8uOKcyT8X3j38KQ3OMgMhBqudT8NtadUCaoOwAiFAmttJC2uOHkMFtcGzl2JFqHtf7iaR6Ee1CBYFfz4TmjoWh1NwhNxWnKAdyozJ3DJvXD0O5jvA/UbJ7O2zR7j/Ma8zXWelB8Hxu9VnIEZ8K3Qp7FU0K03UoNmpzm2V9ewkctSvh8tvztZHP1WcN9gTxJMBBXiiieN5HX0qAX3WdJmM+Cg+LXLLHUMM9J4NZU0EKDQ5y3ZSXaKnUwHeVGVcW+O6GuWtgWa68FueXHPdCv1btld9de9DVs237UXFSFPu7C2uY2a5BZpyXzPt+HE/PDojq2sfzO5V6+zitZovjspcwG10LYGLRyDsUXeFKi3MbWuv1jnV1mTymNokNXj5kyegqNFKpKiAH2bwMAB+jQLxqlREBxqBU4rQuZO7Nw3IsBTeyICjSb2xEpzCKXOuH9doTUNshIBYRghJGAQprcbSgwtnlWe1jEiDCSUW7pbG/4lNn6P9a9b2B+ROjE61602C3dJuEmRBMAmafG96cuBzIpBn8bcs5OHfJulnFHMDqImCr8FPE019EJolMQNWebj+MZgdaooJdzqmaYUAxj8EVvi4gte1c/Pv0BmhKSZeipETqYs0wgMutcyaWGzQcNoCoU0I4zxFoTcm/dmQXdCSIOJGWzxZSV8PjSjyUnaC8qWLmSJG4Rrg5K/v3gz4kHcDkl5eHvGMDncEPfowxkgQqQT5mJ/PE27QqW1cQlV2Fg5L7h8VwqMyUIgZJS9nxfNewC06r/osk+IKyHWbu2QEc0ix2rrUW/m2ClM92zwr67lWnsuOEjI2RPNKgLrK9gIobDYqVy/rKxMn98GQTE/vv6tTo88CuGgHf0dlTVnXmwN+tijuS1roWz7DLDkRm3HOZxzM52Vc2nizruHB4UWrp0ZOwDgEu0h/skNdMNDwAx12D+iIWCajOMqiQYOwJNJhmAnBcO9wKkZQBWKPr+1bM5cOYHENjJ22vnLstPaVCU0g7lPud7tFppO5waQFjnIpfszDqTOuSTivW5XkerIsnjSvaGjIitzG892JwZ3cgO6i8c81IBKRWncjRQluGbU024NcCuNUqXf5gWbskkW28kBD971BIf2baAQbAJ5SjmXJqvLg48Ojg4gw8UbbsDOnfTgMw8rt8JmrjRpbeXyCoBWbe/7gBdPk243O1n1bNRaYwQ8y5GcMNYtBBL8FO/9T4Y7nXJebV/NIp4I+52EjYDu0B6l4gMPvKaq+LhSuMUdxE35PjcwYumtF0mKqNyHpjR4uglKPRtvex4WWLGMvJkqC6j48dwwjyWAxsGtiBLMEW3OOiWbKpZuVqTy27tLYK02PZluf9ZmJmDR3F2c4EjQVKwm75MPbusDCmQm3+JIN8OZqN238yGmXxqt2zvX+uMfHWQCSXNvSIMg2qnlU2htZUhlD6DuC4Q2cSGl6eOaT7Xj0cD2XdgHt5/7PGH4j8HFE73l/JZ9miWbCWm8//5Hnrd03uczmEBhI5O9/f27WdLYMMXGlvUbOToh11ztPEsX7zDLTQz7XO0H7+ygAm2xwzomNvZQQ5EgPXfbmD7+yZOfjR+UV8kWINsavhmQ1qMvbClbh57CRndTbytt/t+IlUM2cxsPPBrw83rbYUIveu0shyQDbG37gEOgv/NUZB7SrdcNOiIz/vTx4zP/i8+OqiKV01kK39MSzxiz/74i4ByvAwlB4LQM96HxCa2tJ2Z7P9y742U3IKkc3JyHDolnzESo9pSEqfOAbgMYPEq+sVD8goApBR5iZ0Th/0rQ+Qo1KhI9XzWQmhG6YnYJwBt4gtvZX35E/AbsTJHWAssmANx4d5Xlm8xN1Oxx+sLOq8sxlBgoPgvxUzDKB5+jKJV4nr8LCxaX6N7DpJ7h1MnITu+rLh5sas1ZDVppROoChQ5qt/Hm5sW1XXAypIkk2TCykwqBn9wWYXIGXau7W9ZVwu2scKr0o7Hg1a09J8+jVJBwFNn2OyucEj9xMXjT6WZezTSwCafUbTTd3eFgiFmVp+5FAU04C5BqkjAj2hYfuSG2C4WsQCHdQbNzcONmiGDe2twRmcbcVzlPOz2dvavXsFmBBFeBiDhmt7K2qiAKw8RoEJkh5f+V7NpApcnTYxo7Crs00VRPIx8i6V0gS52b1mne6MdttBzpvGZt72dkoMM6jByHgkDoBMIjj4Z5Zm6bsfOJfWOAbH5h/oqz8M54SQVoec3oIrBY+4qRfAJtZWIuFKTquOcAZby3OmKSTaKXOVvq9/ydsQP0nXBwpuSuAFupbqX/WLHUB0qjAyLZ+3pnbFJTSvtAMypOJ6nEElyeYDwlxg+CjU7fDVP6UuoPjczP6D1oOkVQVV5Z+nkepPSpr6Dn2/XtCE1msNbJSw3XyNsdqapYfZ4vy9VKgcB6xBXZTqQAivsJ54wxQJM7AF37VIPoUG9eU2rYQKui0A9zMaHShvtQ3m1TZUmfDPRoi3E988P9DmqjwV99YIg1NAMpHVJSLTe/Wp3dx6bajzhJ73ogv5IbLRDB9BhWRhYcRZGv3JYJDZyVSQNltW43IxhA11edZyGx7mm3fFdYxlR28lkgdRfM+5krv+JkWTUZ5bPzT+fMzUpr5pTK5PwapRXTeY/Q/8SPV/ZVrr4srVAreTIBbZdOrtKNiyEvvB+nDtkOfGm6zp+Exdfqoc5PI3k82P8i9VXhqm6V0XHMDRXVD1Ah/Mb+J/Q+qr2sjbqFvTq9ubph3Lt7qgpxw8wKPRi634f1obUcLKtmojKN87Bf50JkTFTaHJJ2EH8KDP4QlYHWc3o/YUPU2tlbLPjynfqo2tXMxdak1elHslskjmEkcQpRKbRlpdsnq9nTv7/MhttLe9VNOo/3b3u7XhvFYosW7f5zq/POMv8lTeLGL1RhroJoCYuw8DYXZ9a8hWwlH4OGW6WHB1+0PVKrgoZ/zAMjL0kFL2Y5n4izhSr5Iymmt8Hoqc7rZ5Tbob25k02c7b52ekb4PuEGv6xLK5bpQCqLkleLY+jqARs5k4LZN+LSBXssJ1usPp6RIEhIORUb9MdwA9xX2xpoOygT85EpSjkIBlFTl/s2P+cXPo33ihjerxjDfHR4Jy9fu9WQZ3ycya1spDKvpZ9wRLveYw1tFTzFMyzKYOogdg/v7Dwn2p84aI+Cb8g99hCqeTvo3k5PvDI8r3aTIiVXp5f2GUZS2+NBY9PU6nxTU9eotMgEhxlZ5PjA63QmoxikRzf41DSVFk9fSmmehDlHVWbTb2LGP5gRBTT2v0aEAWgSe9eh+SMaZ+eIsDF7NWdV6kqKoqajB7l4Lh0n2tqJx2RhXJktGpwVe7nNFq7aWJG1TAgEAoCjnrjAbas5Be8myuMRoPeFUhvpjc8pT9ux1lvqMb091AUsR3QeZNElBVzA+c2Zoe0ErjJlQqTQ+UDVo7aNIdIH54RtD+SgpjY4xpcJFo57Jnw+WDrUUAoNT7X8Djp9Jm+wCCHoDou0AJ5sjTncGxpshtfeEQhbL7SZeZUYT3ZfUkwSxHG5NAEGZQJNSIu7X9edFp8MoypP63hmS+WK7hMjD2JnK+QpKop9K+vNnWVoGNJrZuTNBOljPj9qj1Y84j0jAwuZYRjsGlpskyg+4DFbQrV0YIW0n9h7EQKucYF1FqjI1EKVDaBc7W2+mxopdX6QggduaFp11N2ek0uLImtCzfN/oyKGo//jLb4yZ3L4GDxsIkaklZNawo7uPizPiQqZunpon9N9BQ8QQPvVyQUXKYvSF1tNddo0b+2sz36gII1HakljwleeKESuApdIZvh7Si+vTlIynk9hJ7s91KqNTFaaaJ0VKsNAR+xkFJLMQ5bT6Og4rrNp19Rtrc4Z5ZnuWLbayzdZwJ3RqpXG7OEP0XJdTUCwHMrMr9TZuj87Xu3FjPJgeqT/nmijEZM/VnHS7W7Mi0rGvQZkNJmai+k8ExO7VnFuwyDpLqtamIdtiXxlmdIi00knRnaUtD9jbVKdV9qVOuKO0vItsodgR5wE7tz8lERgZXAWw4ov9LwsYee8h9Qmw8agNWL/K+9dQaXICLvqeQlUJTKKXFOE26e35d2oAKcDhynz4ZGb8v42CzZ/uEExKjPtyOsDfitDG/RLKcaN02KoyG44hg/K6hPthImDmpZAAZzA7XNE5hDKpFiuTK3pz1cD522bnaC0Kn6NytNzO+ZnpQ+teWCYWwNHq2dJiqlWqRrYJS1XXrIqt5FqlE6x+Bt+zVAU3EVz3x0CKA6XgN60oz/NTuA6QguEU3Y55pOune6iiINsj1Gz4QzZnMX3i8638sCvlpyAJ0+5HXPn3Fa2gqim7z1p9a+ZW4+0Ifgem+94lP5jLC7N40cdLHBONWWKfa6bZ3HekdhIQuHeHRT6JQIemMa06RoNKb5NFaTG+QGlulwI0bpIdEBKm51cFBvApVFkL+t/nzuqgUlo+RYkGoSHTUsr78N+AqJyqpmNXxsVe3se2z6nxjUclUGLz7N08URhKOXiPiNZvdCIsN6IwN3t6HJRJ+ZddcZcpfw/Z7+e39h4Hrk8m2TP4sU/mFaadJpUmf6wCjfLnsSv2m5a5Says0rHQ2uXrR1f1rhMkMiK1etjWQr7IUOFbi0rlq04yo5PWa6aqTazjz8akgzvmpraCRNlFN7VV/IcYHQ8hpybQwZ7TAG2Ixl+3fDNmzDYbgXoIz8g/7djLuZwfRqiLO0oBeS11RatK0gZqOYj3pSGODUmgrSi1aJ6LWkfcYWegD1dUihYG1U/9M1Eu2aoXt0+RDYlDx1cOLuD8pxQbt67d2ir1kS7bQgEl78wMcEeoq18l7AVIbWVnnVca3vErGhEMylma3fn9DTk5GmxtvIrL0xNwPGbLRlZtLpOKA9Rvm1beWMRHSEK5X3djyxaRguj26mb0dLLXJEPReflRTcW6mVQNG8JBH5+SvZ9+huFmm3nt7AG19t7utRN2IY4fRpeS9TQ5NeSVgS2Sw5u24qtofgtwBQxhfI7AGSGu0ya5pRvqOJO6Vr0SYyjA08AQnweopDQTgiFIreGtZIbvPciUZTrBT6Tg1QVlU+SzprOSknZzDMDVclSUo+BAVYtawBcowws1C4MULQUWar65YKUJaO+pKpYSspQi8gEK1WZeWzcgJ3KbiDum/RjsXExCAnc/oB3Vz2+dGyQSLTmhSimzavNZ8w+U/NpJvnUz0MjxGriyFCoJXESmpr6Bn6cXTi3czvP2gY9Y7aU7HSMMG82T6CJ+p2hntwb2gu6O6FQVE7uxEOIQlG6krcdJiMax/rGjPkBYYHUR1ogWI0ELQfeRMrbI7ZH3tq9cdp7I+NxXzF38d8yua+lHxImOFyKSdXGHDduBuJKZ9I33JkzFTUS+zrRkvUI4CcYEx2PINpqHmbcITGzy5LydrcNh7vf0A6Fqnw7TDriOnAwI0zl08HoiLo1iIPrQtW+3ubxHXgAMxapvNNMkVcaU1fGYlpJrZjyzMRAKE56nXz8UJFbNEWaVjzwb0A3ogW6zFf9lDFK/6tMnQAdj+HrRrp9Y4A2H4px48gHHwGalhZPywPR/23ljHG2/hcN8mi5N+xjIa0WisV9wLl92/uniwcz6wQLHSnPop5/PfL9h0dCl3o/4hOzJ0S/cSfgOwW/eRPm87yDgEy3ok2CSZoVvQbeFOcJ9Ez8BokYI3sUQ5wftgOTY+yLdwEQrbkXghK6Z/v0NLxz2N0oJTdgET2+2xBd8ERggt0bTmk4InjUOaz18UAKfwlZE0ted4017LEMrPAsHdak/Gvs8IiCFa/aI9fsVpC/xq9KDGm32aTlHzUyulU10Ya+FiluOS/W3SGWHi8JTqOksPhinGVyjPix7ZfMPZurc/7FQw3AqFb4Hi4cknrFrQUJyE1PLh+EFSWa0J26dHDVJkTYwCtBdFyd2AWUV8iq3WPMAUT0n8ZHLRzmjsDbGH4EwiUgBMOur7HP1RwWbissVHdfhbQalHLsyROWd335Ku3tieMbeP9JPjXBXSjpkWfLGYbg8Z863zQvz0t42OaF5h8fsJ3Xa5eX/x1p4VyAaFuL0CLy167NjwCirc2tq0VkyWXnWKggH8SB2IKCWCgOyi+Aeq7z80F6U23VGibHqqu2vM2q7UBnN7Zrz1aCVq+7rDjMNSVLEIN4mjWNhDpEopOPCt8OIBCDsnpWY2DxZgKV+A0Pg8gF2PIbgSaelQc2deICBqUw/B5BY73jAfgVfNahIrC5I5wACO+IRuJ17IdI30y793zAgcDJWdwx+DurjzcPH8Mt9Iv6F3C74Xme08Xao5PYBuT0EespGu+ILes7vBvHGqH0k481ZXiIktxFpTriArGPCIi6Uve33iaCEbkj1EuljZIELAFJ6UoCTEByVRFLgYgqG8/cEhD5EfJqC4ipX5xBQ4sFzaI1Qs7PXBqfMmqawFQAC4V/79qf4ANJfy7vUwEfiZNhUQD2MglqWGSFutx2g0Oiujy/qOAYFrlgbmCfN+oipCXQpk2IEkTpps4Sgg7HUClUsmlTySLfFB9Ber4gLYXvmwiVlEDBJuDFKkLH7EkgK9va2p7USHXxrCXRxqSTk1UmN5LiyliDgSxIk42ZkrQB/LLaALWUFxmWLQmKc91K+G7+nZAe+MXgc8MXscC4wg9X872rodycVD2bzmWlrGIWRh6kYMmnu+OVzH2XZ6nVdH+2rWoSCspWRf27hMuF3IL9924hMBuatFXb+0MF1IpPDE4ERuxbnn+w1aOkxDt2UF/mixVHFJnuAksLwhLzF6WwN8B+gE8P8VqPkeru6wSYDoxAl81qHcDwz0AdcDfvPq8bvoBU4TxDkL2QXl02supoUTG+CeF/YivwHb346D83uAqUtjO616w3jB2GKSrChNmHkalolBpV4c434vytEq0TnXRQgwWlHLe3g4sTm0udKH5RGyt2JWzCUcotCtv0+BmTGXxnbkWx+l552nS6Qz/28zVilb5jOtEb0rWfgZvuP+5/wJLtyrYE/3PxwMqey8bzu4ZtdyQOjDxb7XUY/2cGP/1IrpFiEeJ4fQztH+j00f5R9qNd+xAKOR0pED7Jp/pvBLW+3pU+agU0TFFPDoPYiGxXb9/lFkLo7tLVEidvt3CH/WB4Uk3+u0AUbUjpDRUGggFKOKsLWFX7iJAPHKPDLcug4bvJNgNAI7YBPn84pYmY222rBtQkm3kRzKim86G0mhXpEPcBDpyW/KPox2bTdERNDZTeQUBZA0qD0mtq0kNdpc4uEfGGKtP1k0ppBwlj/DbyY0rrLnj/l83lWUb0eecL+Ci4g9o7HbZ93uVvl6fB9dp/XO4Ghx5/yoi643QHFw1bUTumPXcA/6x9mKi7V0Ji7r7XOanZWNIHkw4EI/q289a0Z1cWx0zNu/zjfDeE/IVnSLkB7wD4T5iVHXZ0kqDB5umEBhVWQ5zdkx4WWSMJDA6UkWgkIcme7ATbJVv9Tra3opFnSfZjwrl9fJZMs4KjWYzqTegYzYpGEkRHdlmyDd0x8svYxfTBtkVG8snvk5NClpCBC8sDAlGtJWQBb6qYzZJI6ClF+hCLptDvrrMWPFKoM6Z/z6aY8o3G/Z9qDAenv/LCI1qv+eq1CUmY9N4Hpo9704Aws+MjPDWUaUe2sYbwrIzeu+bfqclgPwZ2icXmAN/nU8CQPzNkyM4wg03HzhgcO35kHWB67NnB3NYb3ukrh2oEFwypgcNBNT4B8mvxl2i1LrXUiyxqq7lMkS78IJRKhD9QpWCALCQXpHYwG5x+M/fPqtj14GGPlcCqn0YrpYdG639ne95011bQSAenMEQfy27Ft0m3pQ+zKz+/zbItFq0LbO2cOkB4iqhorwz7l2NAhqneL7KfXt4iBR77DjNMb/KShSPciUN/TPnc7f8bAiGfK3+wqA2vFWdWPIOLgQdanhHdt4ZXL3wcYeXbHa7xwVna4DF12E5vN4KWqsPXhLzE9dv6+2FCooAkCLfISW7bXyaXoxMw2mGR93EHvC86GNL1K26aJSBHzfqZn4GwmI7tpvRT+ynd3BujyP+/IM8hR798GQX2vwcA4Zh3kohgzGSISrpJog6ZjAFinxvmkCa8LMVQFlNGoo4xxsK/Qj6GVkx0a/Rozq0Rf0k5VywN+yomsx/7iqXu0qZAyUQJwsqq8sqS5wN82e66j5jfMR95RovfLYwjQMd4XryhCGxltNJ96jBGLyOmLrkuzUmdD7UFsbV5ykPsd1rmJYP9dM/STHbaz0NcI0uL/BwZU2bxQ98tyMyL10FIzf0s8JfQWhrgLKFvqxC++bFxLRSu6SMzVPZRs3xZ5pwsnCUxJfrKqv/nAClIT4ekmBmvGYyfS3ZMTJaLpqPArUbGzgRmjCAU5wniDuIJC8WaZ+XzdrIbzh3OPFhUr1B8cgfulIQEociuLyyIvtkFvKgHRShKSKC0vgD+px7+Y0vY4ffa99Vmm92IjPM80S7UBZsjdWSUX7GNjZuihllpDPKZp9L1UDxRWv27OigIcXScpqXRHXXceOkAkd1YBvO46In1W0k/XvqRtPXmOvD49xGWnjVSXz/I1rKHt012e4qgHi9hOfWuwZltLoCTxmi57VUFRIiRp4VNuHrfXIfwno3x8WnWc/Kpkvh40HshGqUT9gYpto4YuoFx74Je+KO1y1rQU15SQkwXC7gHpqnSfYryoqhd2DTCSnt/LkvN4/qziKtQysa2LepgZ0dut96aHevKAd60x9fSoRitNkbxgWdmTDqioru7AixCEYzpGja62EnqxPZfshjNng5ldDMW56WbdLEWs7pMTHdb+UrmcN9GMXWR8SdtKGYXU38mvMbuHK4FFgzUkx6LPTzTPWgdj3RPEFK+2VGqeKiQOg5AH/q2AX+M5QVpg9RY/cQR3ARO8fSNULCypgPJwgJRXLJZQeOhAvOCMcgXA/wuLTwsKsQMjhG4W6aF14m5njUcLDDNF8flm+WvO5ZiOoH/8NB+l2nWsvwZ/d+mpjZqwIJtk6HKSijY5A6wHTeBj0BvK+Hk/JB8oGEG6t0175Q4pXpADYT4iQHVVcOolINMDRQByTMz5RBRQvDWIjI1eut/HzCoDL+7p29ilNd5lZJKDlQeUDRyaheWIOpqoSUU6uocFuqEN1+7RG2ArycsCd0bumQ8oeFP8z0LTHMgEgHfhTlzYQ8IhOyqZ6tBHq2Dpn2xFXApnU1ivuv19jgJ7OftldQlte5RHqSjeWsnqWAbISE/o9Yt2p20h6Y16ChtnenQbwLZL0lyzsK58qS/FOfLGErAoJTkeDtsQEdn7xzFv8yzVggVYNmdUoLQB8yekhOIvqMfvTs0kP8FzAOPpfGfuM64fLfnz7kOz+c57I8ucy7z3pzvhicuH+1Wh2SGeZSa6ZRKnWmpe1hmCJRYXLz8tXAACbdfuNCOIEo0W0cOCMGyAFoTobXGuoFkXecuMhcyQ5aTJZ70aZlsmu4paHu8EjJF5nXu1iTrhprWJgLN+Pw5W2Qlw03gSTitBSY/I/zS9QckIQYI1/R4zx/juBkRvI/H+FZGzHYtjoSfwMmsROyBQY0GPF+L2pd6NIOwxj0JM+kqCveuR7QpQQS/MSe/wT8CWO/b0xiw3Pmagc3Yh6/5BSG7FNzkHLjcOSNX7BjdEBuNm8GZG27i4iBNZu8CbGZ1qcmZ4gDnpqCcDBffIClu5m5rJMsr/HNOVLMg+XVcyC9NmIDlLvVFLtgbOHPcCJZy5/LHLNLSYw6YO6NntgUh/ZPgJGWxLgkZBy3NQ8fipjU6fhPnECkWisWRyPRYdbWcqTtjpoJhEghOqKoxucm7xBsxIeBm8J/xMziC6TDv0tg0q7FRSqOi5hhBjLmylSoB5l5oyG2EfBPHZMTEwZ/ibJIjbr+HHDSZgk3NOKefjfTm+N6BXry5NMK7aYKhAd703FbzlTrisXJjlmneyupq2lzFt9nUxcp48oGKzdW/9NIOtha3prmSzT2KPVDf+lYjKUX1dpgutiH0/efLTWRz8eOZk4HxwaBqNc1UIYrbO4ohorRCFKt4RljNoXGAD+ww7AGgBkoVV839zQEdL6lUlb0qvKXJ7GVOSZL9kclIxGylmcSseRJGJgdK93e3oaqvF7KAfWr1DZMa4D+FqLhMMz7VRLLf5JRQwjs1fpJ9jl4OUf6S/Wdp1hIbWr9+uYhuPwnq/z1M5AGVjAOHjvh8Qg0aGV8/RiNupYlE1KXUsKFtJdLGWD1h3QskGmlLikhbCnSLdLQL3WE9SyOhIPn7GtS8YqliHlXzPkie273YbKnZBwj4id9s9LPKe7MTA6Aeb0YaADU0BX57HsbxK43KZsF6iyqNt/M4twFnOSQSU6liMSTHPk6Pd02Rtha6VaFbrXxuijD9MVbuWDAX1vK4q9LQ0eSsWDTZGtI6uYh6a4dhCF9xJmyJbfR7V7nzQG8/3O3cDcsR9M0RzRGCFUA00vXUA1S9QxWkqrx/uPJ3cx6yMGL66XqHfOgq5fvsEroe6rcwWvSDKgc9uPrpO+UqlG+zrV9nNO+HFOwXrtL0DvpHeLqe3o826g7Rv5L0KwtqmUAA+ZhehbQLQuYrao9O8Yj6iiQ8wO4zJVeTTfdDlD7hm+Evy37gWe64hLr6eVfu+qwa+0tzL4VXOFey2wBndhIoxFW+uUNGAxO+E3NriRQmhVSbS5SR64Zy+fVD8+GfndiWnVuNBpqWmJjomBYLqkWrRtM2ZMRw8zF4bg55/AIuc9wWGBuEYQP8Y5y1yzhJ/huLHzC5T+3+hOJF67n5rr/EqZTKjsHG7szkbRrNiAEzHBkdE9OiAejqrKzWcnHZ9et984gfCUgChZBXSwRMQKifAY8kGIm5glUhQAPg86lSM8smJ5LZFA2ZaTOz5jBtGLKvzAlt0bRDvDlMN8bb6+Dx8i9ohZ9IgcZX1AY3gCDDuhzLeLS/CK0gZB8/aBhtITVhH4UhtPixHoIQICKPWD7k/12ZAC3nfvX57j9UTlzuDwTlmwqytv1KxtRKMV0acpayIDuKlqJpxQCfzmLlpD05GsteSaaTokk0szRMF8Ye04rhalB7faeuzBerPm3+go7zFcah8TlrA1cFrVqRg3+s/YTouC99n0qfT7JJzfWgW43TzST6uw3Qnv/yr+W9ft+k2aCc+54LEpXf/IayiXn+gK9bcqJD7S3TnBKofUkLBtP8saKfSeNe559NPTvvNU66Wmy5n74d0XMACBAtRYV7ny5Hi5duA3lsLe2nhXnKT7Q8dh5tjKaVf1CmyPOfhJ/myULK/MIUTc1WgSkyjSwk0SaFkzQSIEgo0w7DDk+MqZ2cGx2dR/7HmCacBhxn1qHHtDZweDh69ybk2f1vuJIDYmGMXLA41SIt8dmrcRIhGgq3jghPbf9X+e7dTUwnbRURkapRdPfaTXpKGhYr901PwwBjo5DA9+P7+7fFDbuC1otjtnkDeXYka6VSLIyQeqtSzVPD7j0YJRLCIZGlo3mV/hLpqTKJTLLeslUu9clShY8fX8C4XjGx0qry8gl2N3s0MytK7u93bfwmp5UDWLD7CeTCR+RJ5ImFhRMwu7KwgDwBVGE91dU9QpWxABzSuWics5yvRkZHyX92znLKdNUdBIWIjrEL1C/0aghAegc9nVVNFwAz7IHzMZEnFz6eQOLrv3TAY2OIDmOhA+bMhbZlPrUaTZ2PwIy8RacxszPN8v+VMpS4faM0RHKh94m+1BL1HBgDhiIkH8I5loZpudEoTIF3VH0p98ck2Kjmg+3tYmvqfecsU5Zplm7r99WxJASYV1ifcpSiTqH4ilMavtMpZ59pyqnL+hr1lMbH+ZQTX3NKwc9JSB9RU1785CmFD/oUUiqcS+qod6azj14oRZ5C+zwGMxAULiTxuEJMIyZMw/al4GOahVnNIc3ZVU9Bs/w/vcwVDEVa0RTNIofNwvroFPy+MF3H5K3jpbx0YLzn5kbXO7TQ3YAbvcVBT18zFPIINEBFIAEkBFAAPbdvkgJMFQ8G1ANQNU0J6HoIqAGkH+3nEvYFmQftM98bbB68t952EKBHBweqXQ0CPx3D/Nb088S6G9Zr/rpRMcxqR6xOWI7UpjKdft7drbG6ubbQwulXzG9fYVfEP1D3f7f3XQ9mgoC9RyZ+Ls9EGm58Zb/W5AMni0Ic5ZoTMzWsdMLq5uuP/93+7/rOLtou4HN4Y122tIEid24irpySjkxDLqbMsQWGIvd+mu0O52RIN8ktvpf9km2Az3G7rCQct8i9h07Sh+pJE9AsvafI3SBgz3nVotJQtXmHU2xSzMEZd+PpBF2ALgFVKrPLybWbA+Gu7DnbuiWNrLMtT0QChTPLFDeXAZg9972k02Mu4fIMlzpUuEtY9Qi41KHGXsKpOi4Z8nCXMHrSi35El4hziVqkw8wxCPg8NidEb0Y97CDODM793cd8QzR1NyWW6b8ulisGZ4gdqIdvXKft9jniFHEOBF9sY77ZLETPyZCKnUrrnlhPWT9Zt8LS9Q2COLcdgm+tgyA63sJ8wHb41CmRaZjeJeAGdfTWrT//FKCCsD3Y4xjpx8tbt4cp9HNfnTdi5adPD9h+PTDol/p699eOzvT8jz5UKOf48d9+A189CJtf13DxTjZktli7G4dPtiZXe12EHcvepi+2XJxe8QbheJGXn9w2fNLd6L5NQ3zSu2UwjXXBn9Ky+ryVcrOqX6J9OYq2wwA/u9GBtH3gqycas2Y58Ow36UsslzAOFxYktzIerQMWLG6Fb/U6NppxwrFALE8RAjKf/Jk0dcxpyZ7SPISi/H5xXnJpivSZzKf07ktmR+0KutikRsHC24lQ2ZEI1K4xKHFGNnTgRPff61yds33/tpeaYznhZpzm23uB/544JpTs0875JGYuUy+anU1elClhfuJ4twM1a+JNkXLUz92CWbSrvhxUAPlfb4si2C7x9x9KLAsW2QRGV0XGYMesGZ2WnQz6qiDU0Tcf9clWqrZsDYBWIrbtgBoo1rLEQj42NmK84EbutXjbXwAE+Asmq1hdzt2MVYxu566OdNQo9Y+87u61kKy7rm6bGJzs7laH0UdN56df1tXWpqXU1AQHGr+drfj+vZVgqAVGoSei20nT3qnL/Y6HgvV9xmHQYXrz0s3TzKOZ7wqW+/MksC1sxwzyhvDWk+XeTVXet6dZYyXdgd2HtwlzvS4eW7AXO8fuoT0+0DXwHhOOg0h7t4swRaVaVtrdNeMw4jDz5ODBcNnAwC2nAadpD2Sq+ln6yoIsVmRkmz0+Qps14bgd5g9FRFIszd8r1ezlBGtySX9k2+AWYRLALF0qZ9ZFfUmuRKrF3ORAJSsqMlDby8sdZ0D9PbDGEelg7ZOkqQzCMsN8Hn96bXyX6ma2bA5tZjBDzy0zm3RbGqMaeyrrVZMOpE2cScM01oCdNrxZ4yOUstdvOX4MINgbNXrvFkOlWDaPNh2kyjvavWEDVe+gp9Jy2vdCT9Cm/y5MWbN7ABiLs7DaRG1SXmLecVeyXEQVEHhRFmCg+lANzvsBWLDbzmX1if87EFs5OhYQnpD61DnJ4HpQB0Jhv/xHOeXnj5pwn0D5+5lNu8+YSe+KGfdpdEml2gGiIoXsKO2mtVmCyTrtrspuW/5R+Z8/rLIyUYmsxq1EKhMrPh6YZveAQob9HJ7JGFV8OWN7JuRRRre2783laqH1tbPUjDMZatNr1kK1iWWa8839FvvRVfCSa4YpK8OYQUmlpUkQ9a8XBeGBRtkCw1ViJysslLEc93pTlMbAvOVx8VRE4rJi22+z82TUJ7H4E6r/hyz5qvup6dvdRc67dzkWH/x2a6n7VWt7fyo8RVtvMKQHIT118MUbEJywb/JQhcMvYgx/Ch63vtWDN1XLA1KgaF+m8j37nYUy0i/F0FPnfzyrm3EKlepW0Tp7Lb81Bf6xf15ZPP7X+MkW0qvuzfzI/gzypNuH1maz6XbMhJ3a0CvLLYDF8iujxat267qYt5ld6+wiOIg1utu6NQ4EP22o7w8wgH/wlRw/woqbFD5lt/O2NItc6G06zL2t3D4Q9opLnHPRaMFPt2xvs1i3rY/cFmDQlcPJJLY1m/yWDBqSfY5wxO3HAXcCBOls+/rKXavFcN/jR32wCI8eBYG+R4+diatdnfv6ZlwmXHidexAr+vpWIGoRjSI8BFoLCIsA1NMubBpG6ZkB3c+KKTNr5dKKzzvmOkrKxIPmm+2Bv8LcxvlwL8cLcRz++BF5Anlc6HFAuBw+Dp9w0zMd0JudN5+b+eleaFK57qvsK8+/x28bhYPQ1i5sD5ykdovtMehiMU4J/CNJAsDOfZ473HxQ7CFSU6rfSoOz/rFa5pFpgROJfM6T7YhCsFAoZFCXhocGicbSWEvMavxyDhx1DHDvcaQKCgSo+vCCLH5EiUkaDXmcgXCcRTEEpU9UapIsNjmDFflQIirV+IhEqRssUEZpcMuDrMV4FTNhiWsiiMXUmCcRoW1DFK94W7UgJbS/MfEqmnPIh1/Lio0V3LZqkOBouwWN3Fgg2CG4M4p2j963lx3PdGZHyUEExiQfeCZ5tCrcXzhmbWVsa1y9c3VTV5NOs7QgJQaw4EXn4C9XVphzEAwguUdwxblIYh5Rsljib/FECKKWeDKPQSQlLh2EHn33g5WVSaIOefSon0KJJpZW+1b9OvpeHGRWZ/tPOw7/d+ezMvYwLYrVSEiHkiSICATtpstrQQRKgxD+0YpVQbGIKiqLfklgUhYFNQKeG97qw/2RjaAijwVpYK+0ulq2Lw3UVV3LCSGW244tAbuk0wlJYc9tq107Xx3bgWDUMHkVhYJkACBX5IEIX6sjK3giqgq9m9i0Ad3EQIL/ikqiMdX0NtMtOYxlKBQGi+SbVVY0xm1JPimkmZjBVjvK8+39vmIQEkLvJlqY4Q7G3tfXwZUORE17Gc1VUCXnkF+/TgLp/NfJwXxlzt+RX78qLn07daanjbSqabVpWfOmpxQW9s/zv8fFpaR+W5+5dqBt7HXzGmEpWDXJOmhLgXXC0e+x8clpk0s2GtRbY1Zm+NZn/5TCwf554WNs90XXZawbaJ18cAcvWwkmLaXmzqPfYuNT0sb4tlQHsNl9kSs9A1XPippcSTkeL1Bn2ER/CHRdlEGvR0XZrbx7nCKIz1BH2wR+0Hk1dlF3L2WtnMT7X8p55LdvI8KeTwj6+A3tEZGrOboFj+ITYFcFFakgKJBUhStM4KPwW4Y0OSd97w7vPY4x3YUgyOBwZfpZO8+S0mGZExbeZYo+sXf4ki9Yv6gGlcL9Od3te8lZOxO7RO6sIZ69jr69eaCbTeJSTCjXS74HR//MRaXUuF33xyP+RVKLkRVt26oRekQ/VVAVxVTkvwi8/3XwdENna7A2YdVSILOm5njt8QUVB4TJaqPMEIzSza7cBM6iHu2GUumi4MSActweJS4KGb2xvIxYjt2TRJbkhvLUiEm9wwSYerW4dOqMkhkWTlXfAKFnzqwPBW7mK9bYJe+5f+xyivslMDUesTgUBPfpo4I2jOh/Kc5zb9c4pWR3FHs0STySSzYNFXs1JCxe1BDVLl0Iqfsf21ZBrym4evbflJ7x//KvAeFeh6gton2prl60Ufj//5GjRAlBP5L/oPxxBSrqS0cm4n0ynggX1XheH/Gv5kKQIA6FxbrkZT34YgqJdleWqoGr70I45433roakHZ/X5bq8Nl1lsAOuFrIG7q4Lz56/2oMX9HZeT7YUymmpjzeiQSKuIMlPWxWahE7C5if5h08gCEeAabz9YIm1kB0RZVe9zg50mWz6uzGP3g8iofjA7M2OsdPBK+QJYHR+XWBUn8aFudhf0JtZ4+sJDNiEgL+n6i+JkIl0koiUFf4jL/WvGL77Qgqh1iSaOWOR+NSUvzNvpy/Lb42ag31rbGalZogm6/ufelcvP7YY4+uEWLmfaig44Xsib9HcucigNxO6IwlHSq6sfTn2uzHz848W6W89IxHO75bZuARsikpPMmugZUEyWt3Kv4BXIvrbjTs/Lt73nfZb4hmbs4m/2fuX8LrNeOJZKgDz6uPOhinde7f3vC9uX8Ld1/m7pKgESSnJ3udnkUIXR9drarbfpQzzolPQ6cOFi4hCwXTYUupSR4nFQOeQl4ansdBoGP+favRy1f52iJfGigLRKKxO7hxNp6alOOMAQBRXW1TzGD635ol0qM/c2Uyfcci9ABVnGhnV8cyvPGsdldgCQtjbTKvGNu/O/LBdaqNr7dQxKA7Fr0BfypUq2/g8t/jUu0oEJEnI/pbHpCOc02UXX1a6iMwSft24gX4oGHEEMRizUAOjbNTuoUFeIts0Ak0AaU6ILGO9UdsGdzeDnpE84EAyuEV4iGvjVFg1MtcBRqj4dlSW0EIILkEL9iJns/s6iGGfkcjrhMAdkOxJDrMMs/po+bEzkGS0JEj7YSov7p5mzTNVS+KdzaQ/ecV6QUpDiQZSgVWp1PBeQiJUrIVimdoOmQL3lElNgoqXQBFQeHFGEhQHLctAhKPdJOqTuFv0WzjSN/q3tbgZ+sxcnDn6HBh0oX4yzz25shZqhc5sh6uAWFLyiJVdFni/0IY628FBlPR0+KdTlU4qp6tO9+4qGClccSLaASScs3u1bqPQoZ7ViBxEbk+zHqHDrknhmStMFmWWZJI4TPYYNZGZtIfIZ/oMscgpAsR/+Yh8Yj4pKiYhBJ595/cOltWtJ/VlQfNyHcFsPbLahGbbEH7C9kQg+iSDyIs8a3s2/AcIit61li094fOjpMrUUQmyN/BkY9+34X8CUwEu5Iemjrb7Xw7zi7eetU+MKa0kMc23yO1WR8LpYL2nV7rzavi3JAQHUVtV+47zLukaZwuSwSez4jiP449a32nSlV7O2mF3XyNVr2kQsTtle2OGyq6H/U8vb5qEj+aQG/8stRvxCHfqAIWKk3YIaKe7NSJtC6w+joEZSd/5MdbmUSZxJfst9oWn3E+AyiE59qDtXcSFFEby+8CgtHgRC1++J9rx5Acr2ckdJ2k3Wisb6/Ci37QVYsuo8qiOColn9OLQEvO3v4KccbYrs5JJTJYeQb79Cz5LlLOOIPm3nWISQO4NikVREVlAmZ/7Wvd99UUk9eSfB3R7nAoQtV1pJBwQeZT+fOIu8uPZw4/a7RuOIDZmeSES4RoV1ISY6ol79I5TcB5EDXmSPb2QXkD/8IY9UZ5Q8lKwBLXl3qSfi5nFP1tehfhVnvHMulrCLLlqCQRwGm+Zv9lFM88YT0+0J+H/8KgHCB5oi8QJRr9PQSl3oTFF9B8+JmtPSoWZaJ0pppQjO8MuFW+0F8dUfVG+X2DgcfmdJZqbMy9MifT5x+J3jqb3HLPZG8T2Sw/ay0obnUa2SHf1ZhFi/lOJvqbkoY6E91IVsz/t7EXysSPDMRF96F9x8dlSojRN6tPJ2KmRchR2D9FFcBrYyWKJpe+RTEK0WUxNSXlClCOr0PQH7xfp0cR/GL+yRGgSWo8qRuej8S72kgdKCwWxjpXIYJeaRSZGH5hVKslk52ZZoa1qQGVzr5fv9+MN8Bv7JybmAljWuqeU/qCSk5HgvYw0HhPzpPofJ9N2ClKqSZYCQfkvLKSU0m7q9E+1Q1XYPxD0TxhloFBJb0WMu3NiRUEJzJOxJE05iB9DVLPxfqhAs0dHvlv1cm4WosQxJzkuYTDcSuMaZTcxiNhRokgAnd6/QHxIY+oX8PCPfK+dfv415j6ThHxFwkVY+T0RYRUfv9ZCjIi0ER4alNlo2ONV8YnTjgMOt+MTpEucQDA998QaXQRTG19GS2e1LL/xAuum4huoPaSY9M3czdZPuWlRVE9rvJSoDtIG5QWpcNZShu1nh8+2js52xk8Na6AufoWVU2GzlzvoSnjauw+xDFHbaMvRcziDds6HTGcSDjl/Gl7kanHNjZkMbx2VGib0j5PNunZNBpWW6yP8xwr20fba2gJ8MjAJ/pZpjulJblmMYDlE0fZuKwbbCosLeznaXgozJqazU8/E4Y4UOD6Z0R/J7+t5SUa0BRcJZ3e/upw2WdpNN6eaMroBC44YQwKAHKMAQLAdl6YY523STj2W73wv4UQR6fk7U2f6t35Gn5mFbXXuMiHHJz94kRl+68eQPIxcIsOzB56YgHuIGgSENxnp16zVNvvJ61jbJmpYJl3OrdisTH3rDl5XBBR0GN/OUE3tdnVUyB9nkKCA0yJ9F1mYAKdf7EVM3GK7k8Clt+Bu+aQnbEidEbLcVzO6ES+wge6D+v6x4U0ZfBaZeZv/QHK+ZMOk+9071AuSV4LbSFmvbjndGhi4IIYqMe00IJFLYhjAnq10HZjd6mcQNAiwWbm5Wdi+xuC3ZRZaN/JXx2g10KTNL5PbX8orLR3hOVPr758I8dz0vH9S8alpk2mBxvqJLdUh1b85wFivhioqoDalrihXI4iScLMKdX4FU0vMyxfkqxlTC5T1UESGJhxSLzIyIXkWVUl2XEL1g9KAjOKYSVZSNz8BH2dnPwJ8OCfAx1btDlB9DTVQxDyNpPBV9pmdnpv8m4N8aj2dSkOQh8DsrE/OIg/xlEJn5P3IN4Eh9Hlf8jvQ1QRHNQX2we8KrAJ3w5Mn4DVAObgb5ieRERhr7jIkqrJzb3VrDCgP8qogcLRY5K6Fu1euEneRu6DwUVT/gVP8oqVSUrvP0o/yYKf1hgcU9IzHzBMz33N6g/XOB7bxXGBE74enp+H9RArBdvxqSBaNwjfdA9ceSFfWqUhqyDrAosLIE0bzwHsukrvf2t4xIQNjlEHYOLf3GcM8kBprtVgY8tTCBHPBHVmYtehnAO7J33feME/ObjwTcI1VSTtOXc649mxAh6KhaSgd/8NMeN/58H1PqlWh7QfkhdUKhdZNW9VAq59nJ2ayE+YZ5UPG5ieGLwgvWfqMeA4hnaXAS0D64/VP4Az46fXzlgeU7TqKhdqCottOebCVPOqpW+VZNtKiAeatAsf0AjUVtJpB5g3LJFL5T1cEVW6LOTDXT4T1HIYwoeeegoCpI7VBkf2qPHAMfv8BeRQ+9uHDMWQbdHer5wp0YlOWU8bOjIzf/l////XMOX5k/ZGdSq9LLf32cW7svA9T+BOXp0SCE6gm4F/e2WmvCSQQ5NZyoL2mU2hEvoKNwnmhEX6FNFoFYbDzWMwrjO6aaxVRPuyaDlMf1LiLNB5Z2eirRXJvN57Q1dvbRcB3g+DsSlFstJYbGA+kLv89evRfthYPArXc2Gi3vEC/ZDsgiEtNjJEtT0rcvdxk+e7E0VqMLDVREAfskv0CJxDV0Wbm/VBSWakS6l0SuHu3x3uV0PZZCCWZ90ebIavAH2bMXkdOzZJpZJJJop07gMHoTMNDa3QadN4ANT1IXujcQbSmqyvO06ALoZQn6UAQHWthcWvo7NPiQOANuxe6/ecfAnTgq9Id18inBm0n9xXdUL795Rgthsa0i0NafFtKW3JrSiswfnqYUE8k+7eh+vHlIP+gy3kiF4gZgYO0cGO05V42OR470YmIIkWS4IYJC3I8fVOMZSNDTcNbhEMu3svvRflF3lO3sQhnQmqTxhjLTWxSvMVTZnh0OKJzwmKxYO+Ntmw0UUM45muuqI0rgxYvBjKiHJNB4dwpCBLd2d7/vtpd7HwwGahBQ45V3M/J1+IxtSFbDWmATFi3snlTcEoDmGj0K/JIve+R4lc80dAApXT6Zz0U7wM5niBwyuuzmdoJ5I17HYvfil4Ydd6xZ3nhzUhRXa9X8n1eBxCiGq4Q6kR9S7ALa8C9tZ4rp5XL4TDiOvV6s2bvu6YW4Usq/mqQtad6bkJGF2VEgyhQnIGMdlXellqw3XLdbSiSnqACDfhfC4pygv3jl2EUWU7Z5Sr7BjVobYSb4qweBco5Gon2Edl+uuRelEViS/o8033sVxTFaAixLLHccd1OqwiXLBkHFNbbJSV9+iQRO3bv8M78j+gBb+NKxvnP66z3dCTnu+9NPRDBcagFYrj/zse9VmVP4oirI65UldJPJy/pjCuzDswGx5KE8a13LSMb4gELFpw/3/cdDm3ue9rs9YcQG5eF9o5j/bW85meBIv2yrKmrgJFRDmKj/71FEvuNyV1kNvU2XVJOhx9JeAsbDWIzywsYtFCrMnRgR4vXgafQFuT5L1/AyRzW4n88VodlNFMxE7emj6Z2OLICvlTCXkeiYzayPYU1TFlldFSvwwoJpxiNCIct47/ulqY02wkDi0zUzdpERBa3hIkxvVNuT4x8WddxnDnpehx5w3tZnHe4k8OiIbgaQvRaZpXvFbY+clAu/9BQ3fChHMiBd6L9N5ks1x/I/d9X8arei10Oeumu5szXAZYBjmnA2Ppgyw0beON8QuQX1A2FhYIcJrCQCau9rECHlbWJVdak66SjBvE8M+4zOvhb8GHRx7ErBLXb4QvnkO2003ivoRu2N8ZwXndNZPuFc+0fXp1+j61FFLe3FweL6Ag67IrTHxaRG2uwFKdPWQHFVtWvtrln1dgDNQ0IKO/09Dygq9iG8PQwaXNu5Xl4wHtxoofnjUJvMM8CUoO5+SaFcfGFJvnc4FQMFKvVLhnntSHgNceOtyDWII4fD0eMbhYIKBvhcIY/HXJOmDF1PmQ3uAh6aTMm72rEjyzm9RoFN2GZfk7gJwAB3qfbry08C4o9PsuI5jBgcaBJIELC4OBHR3SwvpBD7l5baDf/6PkR1Ml1RGe2exURbo5/lu/sZZuFa5uD757fzdsXrnnuuxdMjma88fN7kxbkEJDqb2Ybxv9jvDan+FPSoEJ6Vd91vxtUvW4E+HfsNidP7lbjBf+KedWetu621YE8MewEeq/+vu/b0xEt6pb7LZR2mJGajgZ880M8dHJ6qLfn1yDwmcnqZqB7kPfPCYXHIdP4Wy9NUT3EEzEW+xHtC5v2//eFuP/+cmQMJh8+AcMRGGTUJf1+EEJraIWzYZTy28MnLXTmM0p59PB2msXoxx+QZ/a/sfmppxX3bO7x4/ZN1RIoNRWIgUQlCcR7JUAsPRXub7ei0JjaaEEAPZb6xHHCaYZCnXMadXpCpd52GjmfZAfNKVZ9Wzn1Ll1qoq0cQ9FwYtlxbBAtdSzqivCaw8BMBkJTX6+BiFJGaBgRmMJv/OPH54+g9U1ifWKkDkVvYGsDpDHUZ6KHnRcghOqIpvsRbqeHDEOn3SLuX+2r53bf0kPwzHLA8pnAw/K+W/x37KsI1BmcAXcGFTGg5NJbqAPUFvp9cLuswQpS7DY5vbnmBRnSW/TfHuN/pccFjFNuXIbeoYXBBVxGi4OewXVr2BJTgMYujWZdSLFdcvvKtnskeosEXFcjTVeq6Eu+qwchPd2N2wIGBieAQOm4u1eV351Q2CXjB6538pt+8r7K+FGW0nuvMCLberVjobosnB5tO6XczM+/2dOPVlWNsrvZEgDCbpoIuMl64muBMJySwfDlpkOuMP7PH7Hkhvn7z49Nr+2/Kv6PU+uHKKMC1IbzDvF4wJtmeQNelneWgP4AfAehBwDRttmfKeMXWwkqjRa/v6KvlqA0qL9e7LhO0QgHkM3IAS7dGB4Fxnoh/vKBzXOU8PH0BcwRysSN4VSzBmS+h3RIYgbmHNh92aEh2FgFHMdt45NfPc+QzZx42S7u+HzPHa6wUJhXovcfwLBqprtqB+rrhx/kmEe+/UeqQsn4amxu6iK3bbGRu+gboMLmrgKqUiEk8sBCc7thYDTZoyi5f3BBiFRxaAJNQWl6fVqwUMcAEUtE2fq9y2ipaRQVBedH8CyalvoD/dzNU7rYJv3xFNCYR9qtzzFgfNe+br8WOazfcXN3e+YwuYcOkG3VjYBfo25c4lLhWu1a4SIZN6y6yxkLK9pRiw6WRII4U9olMS5GHcRV4w6iJL3gtLfqHNQxOjjV5L5jP5zS4EhiK59Kd3gsCwVRwqbzZ6cCrG/84pP3JMwH3+EqXL5ft5ufT5VSEQd19GPf1iGsTTDYD9tqbV+DpaCfJWX1gPcYQV9jXDNeYNJkSaCfu7UZeTyXKJM5Kj7v95RTx7adFzaBKAmf2NeVrq6fDozm2TJIRgFve6TlFE2xxUax1S4ZE8u3UHJUca5ptACpF2WSW6nNC9eG52krT37myC675DZRZD050lb+DtSXBmnb/tgkywk+pJYDnCDe7sUkBnnInJUO3sJuFvU7LmOTQhfwB14sj7MX2Y/h8UZ5ebQskjUX6xFFUD+5ruQ/+TLIHQevZRVhbh23tJNNQ6+Y5tas+VoNjfJNMGuKDMx4cmtXA/YB24+Ku2qZdO8BHJD2rvaSxt/1E6r3c5cnZc88z0GrIFcJJ4GyKV5UnjEk7vFKfwsmufbwtoWZx9POTTKL5MtcSt4bYErIwSTE132kTybxbnbkRZ/3EI6TFMOC9ER02QiGMXEORLBhQeAgc6Q7QvnpnmnMygBXW07yRzEmTAcEnFKbqtc8lg2chHiu/5Pfl/rOutLrOMCVPRU66TZpu9CcHnngXBFblDLXHHWg+0p4XfQmYCAlCNLoFDiebubEjhsv9ej0MJxSwiREhAseHjNwg/i4gwN+0jnazisISAG9z3IgHHMsDD7cdJIvxDfdsR3P1s6iwzLZdz2N9jDwMO2KDy0Q7HSlFY6ECOfD3JkOloDUOkubJog37g66+MsbMenqid3syX1B4RNmDtAbmvmRVf1j2rkTQqbEDyU+68sS/RTqzIZTvugF+jl6uTZ23OlVG23l5M5hJNQ0mYl82yJMY6iAzpPMuCSqv22TiATxbX/R4nMCbW9NphE60LzL6BJvP+4yThA/R+oLCrmzZIg/Q/n+7n04JNXuNnXRjfrwkhQ5ZmpB0MQqAQ70uIpnxmygIA/09gE8c9LGMWbc5xE5xJEiaU6FZJCe2lzPRKNLjRIi1kdgKG3D/pvXgUiiUzzOxXX0DdH2Nsp/+Me2qce4uY0+IWK0ae5ANY0O94H6zSIUL7fj+m7j4ZekpofyJkmqhNiSHrR9NoxBcKklxJsR7yeR1dFD1ysfVbZRtuKvYVn6jQl2Pa1u4/1qD2QkiHdLcRWV9PXxjKQt8+sGSDomSomslSIOGPqIA/R5PtYImrcaC3Y0iGlMH3P1itsQka2VCWv2OtBAfKBfMD0E8VyEj3bzY8Dob+6OvpD/mzAUwDd1HPiKBDzz8kduCCA1fmybvXKohuz/E7Xt/NqLQ3wwQ/GJ6MjbD9Do8Mj+K0bH8wE4mkBmaP/YBVywiwD4mnkfeGYTGUDe3UnARwxaUNT3bdOUSL2KAEvg2M/AsPEjLAcn67r7ORAI/Jywwvy83LR6fT4MUw0BZUcBqlsx8CFUl3wEsgs+jOo9B+l+56OY+c9HowbYx1MHBpNDAqcwolpIQAsxbL+gi7VUsXU6bfqD/Sg0blfiZ/7HmLomvKQy0fWfaBgibOZ7f12aQhKr4WNwbCjFgov9gtej6PK3p/QWrY1H5vpwggZoIYbtFr6ssrX01tcp9sD/YD8KDcZOly/7H2PqJx5eHp9T+D75lmqnuhjneX9dUE0hjWWr58gHqoZSLDi92i94PQqH6m9PuytLaflH+ZH6qYGvfbvcNibL/0LBFGXZ2nkmeVe3x+vzA4gw+ZUMfVGhU1UqbazzQRjFSZrlRVnVTdv1wzjNy7rtx3ndz/v9AAjBP1aHn/mLxLONifSzNllxvCBKb2KWp2q68Twxettxf3b0AxSEUZykWV6UVd20XT+M07ys236c1/283w+AEIygGE6QFM2wHC+Ikqy8soeqG8/i3R3bcT0/CKM4SbO8KKu6abt+GKd5+YOw7u72h+PpfLne8AQiiUyh0ugMJovN4fL4AqFI7Pml25LJtbSv7tJB/tBMwRuzudgO1ByO07HlupMvSmhRD/15p/Xy3EgK4ySTuOEMGwFlnmxMMQiWMqEVQcaeaaMJkGXLsC7RmyVxI7Z6MM1fTrQoy++ic8ieSqsOSV/d8CmXp100JloyZFxpCH8cCFF9tPrMeIutGbpuo/tkB4J3Wl6oZ5jlk+ZsTNCcGr39RuF9xv7h1nxmweX15K+vJLegUOlwrvAZpqJ9aMKNd9OSb0O8UwvCKXhWWTKu+6c4Xjc79AOLJibjVAsaLlxwPNufYt4Re7a3FFttkQ2GsFyK6WbGWnMkFEBjBFBjm7AurDwns6iciBeuZOLjrlWpFu/gQ5vLXLxETJ/2LucldX+WyrJkeb5I48Nh8+ibQwqTj8ioOX1Sw4e6pLSiHJJIR7GdGrTnl93FqqwZSvFCOc6jMR6N5dRztiZcBXI4EOWu5pTdETV8r4xYPcYOqZ0M1Iz6PB8yFWBZcrN216hjIKir58345V60wkPuUoEinHFzwO7eDs2JsCdpqjIpZJ3zAr9r1TVRWbjEECDR7iMFSxH1k8bLJxVEHZgyUgCZBj6JAsu4Fawee5s5HT6ZfECmdIqKegsoOglC/0zJQAAFo07pPAWouhaIFniwH2U7ErVzgYyBSKpwE/LGq2t3rEQDYlJfXeokwGbtRWMagrd5S3FMmtEvfPV0RttXVhP00QgyNZWmULkKPDVwgXrMGUa6Nqdh0qBCyjYstQkmtAAjAXvZgIZJBi7b7v2FhBKtExYJ5a4Hu+d1oxRq/iK2eki0oPeEj1OWneh3JryGGVrlvdqOpOqOwGz6+CWn3u/T/a3IJ3FBevI1zIBdukX8BL4ds1y7rUtSRbnjDP1etwvSN1HUdbC5r8ddUqyiwiFBmxNv9RpmfXt10aJDAFX5oH5CNdHabugdixB1rUtLYdnmKXwcTy3yTOLZGQJzetKitZgpIPjoLzMF1Ton0NRLyhu6dNyiQUuG6GMlWO60RaOWzTX67usKiuFECGN5oxXp5rRsZAG14Eyuzsqi0lcsIXbhZXfE6EcNZIbQMe0oYAQgasNMBz3b7BUkHTFTg0RHoQhMlFZGGU/ejdeMfwpLflT1HFiEd7znbVfdav94mdP3O1MIyQDLftKTl4cVRG0qHVMl62E/A27D/FIprv6AhPMnZyCtkyiY2+6pcPhsG04nYIZDR726wQ2tPPykY/qi72XWgLJd/QA7GNW5ClDzf93Ax5/xDwF6LH+Ojcb7g0HTgZkhDLg1su2qLt5SbLB98Sv0n7jS8XkU1BIX6/wZHi1U+twvu9VQ3N3+DwAAAA==') format('woff2');
-}
-
-/* #endif */
-
-/* 支付宝,百度,头条小程序目前读取大的本地字体文件,导致无法显示图标,故用在线加载的方式-2020-05-12 */
-/* #ifndef APP-PLUS */
-@font-face {
-	font-family: "uicon-iconfont";
-	src: url('//at.alicdn.com/t/font_1529455_k4s6di1d1.eot?t=1596960292384');
-	/* IE9 */
-	src: url('//at.alicdn.com/t/font_1529455_k4s6di1d1.eot?t=1596960292384#iefix') format('embedded-opentype'),
-		/* IE6-IE8 */
-		url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAGQYAAsAAAAAw2gAAGPEAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHEIGVgCdAAqCv3SB/XABNgIkA4ZoC4M2AAQgBYRtB5cNG+OfdYacxwEA9eYzEqHbAaXC+ZFZWS8oKTr7/09LKmNsu7DdEEVL04JkStgZyOKZ/ILQ2JzQooY+O2mlDm88cwprtIUJRYoVp8q1MEe1Ow/WIUjUNfnNH9HJV5m92kW8dnj/3pEhB8aSgR+4kj24yOevPzf/ix2t5Ij79FHJAsd5EFJ2EoByUZPNHtWZ1VUw8TCKNsPzc+v9/WVQI8dGjhpsRMkSRg/YRimMGiDhCBkIyggFLMAzAAsVA/BOjAJUrBMVFTk9PQUPK0D0ro1REM/4bck0GjGLMBKwOzEqMDrm/+DNvwEAhTsoAAkoYGpB7e4LMInq4Z7d2/lSHmrkiVCowgFOGC/4BjLdjqZBMK9fkWmEJpgKgx8EK9nAPEPOk30pNCLq0BlSKNLexDrvFnL/EBcKlB/2YPqlzm92rMBKbxWxIXacD0TdMTTllTdfbtWnkEtVgBUaVkW6e6oqLSvgq84luVauJUGaMQg240CPmETe+8e/tZabTzHZvWtZycoqHH//BQBFFJvYg6cSCAPK0P/lViVvbmTWIzDi0N0rLjdoVkyOXJIrXJMg1hJIpYJpuwL9q2rensSOdFq7rfav29kR3LEgWD1R08h27tjxMauRWqk1yAqQxIEnxwk/k9Xvp4mNJ5uJLShAeP9ebatUY0naCgW0UITh59azOqqoboMT35k+wU5MV6BC/qWqJ5UnA9vtHQlfnOYXH0EGqAuWT9o/uCI/R6qH5JFb21r+/3mKC2j3fzlyPaQSlCkmTghdBueFPOIgIuD/pjV7uSVUtRJH3r1Qi793yiERbvfPn1kmfye50j+ht+xRakKdXWpRyFaEW2p3vgqDx5kmUV5C/ceN8zDBBaE/Jw+cu0rV+oKmNmRq88X0i/W3q7b+l373+kzPkBYGICUCkGiCVIIo+wTKgQBlF0E6BXIjpfPl9IoRIB0I0nsFUA6kfAHcKG6W9/JrN1/Mz5Ce9/jc+327ryVoKss14vz/aVtEFGJxKA6zw9isAcvQsULlmCICMkSMr7y8H5v/3H7HKsRIsIE7JNR0v68Ola+NidPXgYK7d4y5/kTrx1YiH3ACHY721PpPEwB52aopNP+2724kpHhSAITxv1FDjHzpgDzZMsCCoCevzA4ZdNuGwWaub2JsOr5/+GfTAhbIQEXxzM4jWww363cwcBfD37CDtobhdX241wMioCayVW4+bY0NiYeueRB+9rkNjZPR3SzDmPy+DZuAipEDJ95srvX1+/VHZ73km/Ct/p2utNSVpqu82hqCBAuZNq+8ATmVfJVWWHeYbwS/04tPTM/uwnx5/WrZyVW5K5oTo3NVqPm14m2BMjTemmu9rddzuzLfe3tb7nMPuIeaD4waumN34v8dT1ljigt5jIEn4Cl4Bp6D5ra9AG3NcPfedF1NNsxLUJuXzqNjHXsFxnkN7h/femLnVG/A/n11YXjrmqOdt2C8CXIrtGdHJTfBu2Cm98D7IK87oI0PwYGTB7d/BKbooLKD+cRp72PwCfgUPJjtMzDN5ocTVRGvs6Za+Bx8Ab4ErbS26yswyKFJmhmlgAJ7RxhpsHpyne6mux7O9NRLF7310VdL/fQ3QBlk9lgsrTBPIVaoHNDQMdRZoDhTZtCYLJhDgOkttEgOhiVZjcuWr1i5qiSi1jWlrF23fsPGoarqPdJQmPaAzQefgK8sZ8+dH+jCxUuXr1y9dv3GzVu37zTWRAX+AgQKEixEKFdcbtx5AINyGjgWYHT9vvZfIDCqgylAED4WAqOAYHwChMSnQCh8BoTG50AYfAGExVaEw53C40sgAnYgIs4mEt4TGe+LgrOIij2IhtOIjiOJga+ATLA2kCnWATLD7TLH47LACcTEE7LE10BWOJGs8Q2QDT6QLZ6UHe4QC0/JHveIjTOIg2+BHPCgHPGAnLAukDNGALlgPSBX3Ccuzic37Eju+A7IAyeRJ04mL4wE4uF48sZc+eBu8bESkADfA/niByA/nEP++BEoAD8BBWI0UBB+BgrG9hSCX4BC8ZAW4WmF4WEJcZdE+BVIjNNJgp1JipWBZHhG4RgDFIFdSI6dKBK/AUXhd6Bo/AEUgw8Vi/MoDn8CxeNMUuA2JeAjJeIUSsIqQErsSirsRmrMoWRsTSn4CygVfwOl4R+gdGxLi7EdLcG9ysC/QJmPNw0eURZOpWxsSTk4lnIxDigPx5EW9yv/nFXgqND5XUthfaAiHEXFeFYl2JNKsRctw96kw3Mqwz5Ujn2pArtTJfaj5difqnAA6bENVeNAqsFBtAIHUy2WBarDeKCVWA5oFaYC1WNJIAMuoAZcSI2YANSEpYCaMRFoNVYEWoNJQC2YDNSKhYDacBGtxcW0DgsDrcciQBuwKNBGDAdqxxJAHVgcqBOLAW3CYKAfMARoM86lLbiEtuJS2oZhQD24TNtxuXZgKFAvrtAeXKk+XKX9uFoHcI0O4lodwtJA/RgLNIDrNIjrNYRlgI7iBh3DjTqDm3QWN2sYt2gUR9AvWBXoBR7VOzxmPozNgflIbAHMx82tPbwZJFOzvJzMNDmb6fIyM8Q3M5VgDlereV4PzAv63byo53AICxLwkgUqvGyBel5RqXlVOvOays3rWmHeUK15Uw3mLa0289Ri3labeUdrzbv6yczSFTNb/8MKwIAcGwADKmwIDOTORsozG0trNlG+2VQVZjNVmtVUY1bXCrOG1pk1tcEfawH4D2DQdYP/N20SmD0zvuG/kuhhSdB/fz0IEhYaHmrTyNGHgpHDaUQyEvylEiPhpvAsgAdcUqDhBAzjoxDBamWWHEXLRUk3zQIxJnRqcWaNC1AmhIpAAVyaA7hpHlAPTAEsEAikPkuF4ArAbE4NKENRV7oFAztaGpkyLioJfbF3cbQNo6FblBgH+xgUe1gRDVZjE0h+jmFKOA1ZH2aGqUo1CNuTLdrewl6g5gToj+dRS0ckZ5JyNwz5Vguh2Wa0tKjj/kJ0Pi8Q8yPlTocrnq4hEa3FCDocKYsubQ9jkix6OMlKQVSKzZhMfyUP+hh8LpsQPaxNgRhujI5YpMtinZ4414eSNeBbw1Ls6Gp2amgIjjunapxZgSPKLKeXY1BBiz3kxFjZLCmGrd20fav4lvWoCFiF0i7H/rBPPxcbTXmpffcEi0en9a4TrZ3b29250myHaYrEbXJ2IQIbKp61FYJT8MxSGdedJsFuVe2162qscnZbu93dHb9dtt/tHxOSmhwU4liXKB6sThZdbqZB68SUGFIUHO9hC4V931S2mW42m7B+S/EEgYKUJasluMCKgWG0syNq01mLLImeKX+CQedh0gE8PQ1oajBrg1UqguHfLBI4fLvEHTNqQ01rZq/1J39onmem5XFG2PmFXDN/f7C8Zl/Cq6X+CZJlshonJDsrE/AIu0EMC9sGlTQsLrgq4vVMLdh5NKgO4rC/QGaKWGIacOw8l5RuOgcchkMH1+90IOa/2N+azrACjLEvwNZsit0UF7BcoRWCbK67FLt24V0TPbgcxG39QNk1uUNKGPRZcS7Y7J5ktZljwx4ATLywmxph7hHqvPNfk+GdpPwQNMgQwXQYO54MZiiwuRQE2xAwOQgOAqGgE/RQl5+FfF7eDYfm2jFIhuuoz9XThdADbICBfGs1rTkfbCtCEhxC5FEhFdA8I68xxB3fDFU9JZjRqUMNKcPlXD7pCm4sIH8q20pngJRErVfT2Iahf+8X8Lvg3AOBsOtwuevJxeXm2SYvAbmlbDkExXPQNDIWTadUAEa98rqioP2RNAsLylBYAMEHqJgBVgaLpgzMHbjbBA2L39wEpEXjzCY7s00W1LgT1EwRxSjjxoJ/oFoKjHPON5aDfedhXl8dmckO1uIN10j1HFmyxd2SFOnC0Vh9kVKwrAGJr0OuGlYpYquJrxYtQ2mlzzGVcVCL8swKGkTQ64kagF8j100W718Q8VopCopjK6C4i689URK20A+IJnQuzXMmR52pWYXM9Hpi04bbbujXXkyI4rNVaAWkKSDXORDJu/7z0pirFs1kEmQzXpT6cfjEUGba5thBeu5/cVtb3kINXO93sNeGlXdWDqW8Hfe6osCwCoqrx2W+Y7uOkVA5lLKlGFBqiITEw/FVPIzO4oLVG5FIN0RNBuV1nGh7JMPZTXV5Ho4HjtjKUErsFtxU6QAwTFvFtdCrDy/vjtdR1yFyq7L59XcVnfG+Rx8fNugzG5n4hSR8dfVxQtOPLXnV3U7typyHRy8KvUrEizAGooABJbOhIKbfJpjGMVh3UtTP7zGK1rIRZfTb3Lsw1r2mC4I6QtKc6cFxOj0gJi8doJz3ht3QfkJJ1wL/kAGhczPEyF41Y2VGn1I5pc51d/6ovdWl/R++PzjbHq1PH8agTYWXvDKFjYlQtx/giou9Kijc3D51Ry9CZgqZoq2SRhVnwZlZRRRgBmkvlgBUl9aIk4EYz0Ld31USbuBrAuX2cHRLqLkvaB/EQt/dhAhuSvI+lWsRSEvUWC1eFNI9VBWo8ByVBbcPhCMpx9csfloGoIYWdabz1qC15pKm5GcSYKDyBZPDbdrU6okbWL/G04cmkqLK7na4JW3mTtSQ1lp4KzldOg7Q+7J3YEJwv/wuuru5bNkSevbx0X4pjyaLxzTIFpb2bTClTaYAK5VDU4gwIQ0oaMJgscXpMtSQPWSJnFlqSYHUQjHGOGRKUH8O36cNr9+SoNKjs5XxSJ5Ky+n2FS3j8cepyIBkSzCnH/K07s6pmXizamV/7UUOgEJDBqRBqHOygXBIIVHwVooRWC7qBIzPMuxeDuU5bMWvt3V8Ap51RNVMI+ghOGnGhok7t75QDbfX+hlVr7KXA93sSUUvdVq8g4hMktX8uiXrkdWyjmawkwnROjZ/yWSORHT1kZOeOU918lDEm08fmk5fQovOZw48n6lB0JwiejPCVQHNy+Yi3nStRNdRYsk3/KCdyzDOBPdT3RcSEWTnMhc1KtuAJeNCExCwxbvSEd+EWSLpqAokpBRDybILw0GWJ5WICLUxnrU3v70ZJFQ6snWeJKejBykXDXRK7poBRMxK96reuvm9SPI/uFVG+LeyL1wIiFdJFAobVU4sITsEjSkVvZSt9hFPFAmCMGfPWo+WrkRm1j/ICLuKrhjPMQCAxQTKRWMjcRloQoArUYtA9LrztibHkNO7kgft3xgnNF1DGixWcOCk/e6DuVeL37stucRVKA/8tjsTiaXlZu7soX8nyS/8SmuVRmdrVllccLKGEN7vqCrtcczv14jfmVyQykAf3ig1GTo1M8FzhXwRSOzZwpns4LloG9+SyHQgpVxK5LcGVeV6pUQuJDV6UqZP5MkoIO0/JAKD/mzgNHlCvngeFWPrYIiGTcW9SEAwPFJGZ6TF+fgrVBZjsLkB8oTbAUODXA/7t+eKQiDtdeVpWOCq06nj9NZEmQio7UC7ockeAm2JYyQQaaNj8MbMoZqyT4S40BUhJ5uwQyw3OepOW1Q2rITt1Hg3eCuYEDuDTlIiEoYSMSjSVHju3rK8Uj2/kPfI72reEEn5D77TsyRz46rb4Fwc49qev2NsROWSHfmmHx37briuXDtZPWbFaIaLrcdcUJnH1U2G8dkk24tVhjReHe3rCwhsStxxo6p1qZ5LW+u1kvD+DTsrFg4DdfyQCrTDuzdHOz6DNoWyqXOoncD8KLT+C8pNiqE0DdeyTpqd6z2CJn5jBu8mzsXQA4U0spwOkrV6VaYE3+8guIKg0kAD1yJoh6/vRtCpKHpfFxKlhjI5PlM5Nk6lDuQUPIkNdEWaXk/i9tdWDppsyTsM9t29y+sA7BtYHER5q2gbOYvRtmZjbLgnghKmHeSXKhrKGznO7v1Eg7jmvq4svo1Wl0/E20tH9qGyx5eeVJtr275eqrjRPVcplxx1P7Cq5W7s0FP/lsU8hM3qRNNylTBTwnbYbc0a5+ldB5M8UxzyV0VQ2r2Wg4zfxR3GBMGon5T36dCTMsX4GiqF/2wXk3OhUJR6gtdB19zBwOF5L7zh/8rK8dSB8rJGolYqjTme+17uQDY7tl/rLMiR+mJwqEUbS09a55yo2r4QRFC27tgamxxwCXrHW2OjKwwyZhwJVkQHojOMhCbV+OtExBzqWz144bIAwPXJWSDl9V/AT3gt/FvV9DLpa4kkcYPK75GNRA1aDiHjMMPATTRifViXHA909in81q1XvX+wfHiN61JXFECEqzYQEfv/HDFYFFItyUjz4zKqm7ovloZwWPTQH71LMd61qsNBMTe7JemSwyHp4larXRNCn7NMfu4U+NORlgAJjug7eX/XAHRQQxoCfDGwzf5gri3/qvYmu7pPq5YEDVaz+2trZMgC7pVtVTd2HRgFfPM2kY25Ll6SOc3Q2RIFUZaVzcL54q+Ozo4NM1XwLvi2osPGiWJUn9QSdlnqyZgbcO9yM4yiNIMijGdQ2zBUHF4UV6om7EWCKS5wS/J3xb8d+SONy9jOLvu2JoP60VwkMQN07ZQ5qqpMcd+CE4QRPn+dX0mvvNZkpVdfQfhPev1V0Z36wWachYYQ3eRmvw0y5MasO0b1iibPof8wcWiEbOXhB4XAP4S+B49q+gJmXzNGTQqCDxbw5WD66y/fHrPfyuT7YW7l8KdnE4Ps4t73zz+61KxOMOujxFj2aTTFe7gnp7kgABgVsD10CvwGqmAErcCqtHZWG+BT5s+IIwhUDu4iJAp4v4qLHTwU5tngUJrx4C5XWBI23qzM6zIhlfuU7P1CPqfrZ+QDVmmC4NoKNzL1OD2aSWC06s0Wn0fqZSMduphiyNC+okatppSEAPWk8qD+oix8EYiCJd+LNRAbStUos1rq14goRTgeVh4i0l4+RWmMVWQEJEhBtL4II0We6UBxmCHgYSS+LBCQU8pQbV3TwVaX+wVBsQ+CD091vUEfaANTl4fgzGu/c4rlFhh5y2Q07snSbzpu5QJgNLSolAGsz6U/0ZOhppppp0fLAwFMVBlmnVJFptBgpmVKGECEzg3aOPJmH1hIpGl91Lks8E+gcjD64gSTrluWWAARj6UXHhQnDNuB7keTt0mgXKCeVVsHBa0uFyMaKifSUUCyd020gBEpAb6cmV5IqOJ6xtw4G2jPFbVgdh94xis61hMVglUA7TV5Les9yNoiyN47XnFo5mqwv2Lglp5uzMELnNQ8kG3j/b3t+IjFV9cFIGsHsutjg6YbFMqPW13VdIxED5cwOv8Em0DAIUcRoon26OQP923iA49DobDctXYKxcR3AKUJsEnfYIiAn4NKPVZ25AZ2olE50nWtLWP/kn+rSQF84pbKtRCV+d0BLBrgJWuQ4Rh168LgfjctiRyqQ1nj+noGt/yUwhg5HkeEy4dwIc7Cvlm6ytQZ8L0D7/xRjz0whoJnHH5CH3tndWVoqNwmaLzQysMQvA+24yGzYD4ZwCbfT+thJ8klKI0fJlDw1RwxKDKWLUZCNoPssMf0o2Ws2PfiDG3cvgcILQ38kCGuiVAMWNZtfhAopddem+UJQj4OntsYGkIChGZlSC/o/UnkTV3yEDKDJBvAqAyZDcg7JPlmB3z/NuQx0bF3Ifcg98jZltCjGDAGpPw4QEwRwfgSJYvjatCyzG8y1NlMxL4o5HikxKOlh1VYlTzj9mnkl9RBc4ahQtI0wyMFXYJMc0Pge/jcwBPdRCLc+aJU3CWaqstAufCIeomrsJ1AFGY6/mwHPahHVh/xmfX2SZhV6gYEJhinHPjs/DwX2d77BhWFhvFvVr4jSuh3oin6ljQRfvjP+b/SlEj5odhpCCi4ehNhzBhLdLnKEP7BjR+Zhd/Y2SFIcV1rgKJwye1srRKZ5bHOxzNG2hgGxC+/0+P80WKyfY+qQZdbpRXue1R2KxSl2i00ZKA6kHU43MWiqyeAPwoAVbMwHnjk+CI3aPO5jrmHJGp++vAeWjEqU/aSkkip4n42UurvLMWqP+J+riFu6uxlpQlxxlpQGH9ZjptOKfaG0P9VeAyeGC+iqds18Q30QM2KhCXhHrokaLjPkmX8OKlSFU1D81hxS/d3AKcw3Ap0SgT6j9kX6AoW0VZCUSnE4w+jhJSm5m5EMFCP4V/I8RHzC0F+INjYCIVklYlSuUqNclnUOgtEmcoeWhwgldjKqhRP+plqNmICWyZufBov1/ZAsZQGuZP+nhwDvPJMeX8cwuo6oJfX6hV2FD9941s1rBQ6n7DAdI15y6+X74vQHtP5ytb3r8nJtZmaC5EcaBSLaANCXkwDKznaqFDKRwdl7b/Pu6So1X090akA1oTr0bEENqZmibeYBhvSUtw2gilHjQyl2Q/cuv6S4630xlYF8z9rkB+ZTDEvphEaVKZmMiwayg4SIHlhApIxEVX4q1ESoY0xg7pnKHauYTLwYkOFumLLuB/Iu8D5SIa+wZToNxJPGONdZEoLIv1xLjIJNo4K0wOHhjVjcmxHSsnOjO44yPwj5lpLOwJpINT8kWjT4WNwePOXADWeUepOyYP9ByhwoN7FZsU2vYcAGo3sJjEbT06dnVOKBwADocztZ50ekLFu25iQ5Ey6luygQRVUSxkZPZCg0hgd0l7xc+zFjiS+I5iWDIKxL7EIhwrcS5BLGgwiGJcPxj4e5h42pMjDLM8WQ5Te9YVf2TORuKL1oBck8gYY9kPWfPh55ynVii+ZI6T8vOnXgUQWJAINiPj1rkcDLdj7xI8xVSJI/NNdT6bR+QZO/q6sRMc7x+CifRr9ksSc57WoDOisla8Sm+VicLG9W/Wjn2SSQInxS52bIq7igDSTqCiS6g6VHv9GSh+Lb9KFgt3EbcE5lf6pSRWuDNsnzVFrsLoectCnXeOq4X3Wtd37AxxkO2o6QBGAhR09CkBMpESSRyN0OsDQBsIWCXWU5qDWewgqIxXQDp7q5uc6oYaeCF6zpjBCUZKGSLikTk1DZNb3f2khif0PTQCePvgV5Ap88EtMcUnEsBjxRbl4VX78/181nbbsAnR9pO7l1ns+4dY09vyk6xNJ8uOKcyT8X3j38KQ3OMgMhBqudT8NtadUCaoOwAiFAmttJC2uOHkMFtcGzl2JFqHtf7iaR6Ee1CBYFfz4TmjoWh1NwhNxWnKAdyozJ3DJvXD0O5jvA/UbJ7O2zR7j/Ma8zXWelB8Hxu9VnIEZ8K3Qp7FU0K03UoNmpzm2V9ewkctSvh8tvztZHP1WcN9gTxJMBBXiiieN5HX0qAX3WdJmM+Cg+LXLLHUMM9J4NZU0EKDQ5y3ZSXaKnUwHeVGVcW+O6GuWtgWa68FueXHPdCv1btld9de9DVs237UXFSFPu7C2uY2a5BZpyXzPt+HE/PDojq2sfzO5V6+zitZovjspcwG10LYGLRyDsUXeFKi3MbWuv1jnV1mTymNokNXj5kyegqNFKpKiAH2bwMAB+jQLxqlREBxqBU4rQuZO7Nw3IsBTeyICjSb2xEpzCKXOuH9doTUNshIBYRghJGAQprcbSgwtnlWe1jEiDCSUW7pbG/4lNn6P9a9b2B+ROjE61602C3dJuEmRBMAmafG96cuBzIpBn8bcs5OHfJulnFHMDqImCr8FPE019EJolMQNWebj+MZgdaooJdzqmaYUAxj8EVvi4gte1c/Pv0BmhKSZeipETqYs0wgMutcyaWGzQcNoCoU0I4zxFoTcm/dmQXdCSIOJGWzxZSV8PjSjyUnaC8qWLmSJG4Rrg5K/v3gz4kHcDkl5eHvGMDncEPfowxkgQqQT5mJ/PE27QqW1cQlV2Fg5L7h8VwqMyUIgZJS9nxfNewC06r/osk+IKyHWbu2QEc0ix2rrUW/m2ClM92zwr67lWnsuOEjI2RPNKgLrK9gIobDYqVy/rKxMn98GQTE/vv6tTo88CuGgHf0dlTVnXmwN+tijuS1roWz7DLDkRm3HOZxzM52Vc2nizruHB4UWrp0ZOwDgEu0h/skNdMNDwAx12D+iIWCajOMqiQYOwJNJhmAnBcO9wKkZQBWKPr+1bM5cOYHENjJ22vnLstPaVCU0g7lPud7tFppO5waQFjnIpfszDqTOuSTivW5XkerIsnjSvaGjIitzG892JwZ3cgO6i8c81IBKRWncjRQluGbU024NcCuNUqXf5gWbskkW28kBD971BIf2baAQbAJ5SjmXJqvLg48Ojg4gw8UbbsDOnfTgMw8rt8JmrjRpbeXyCoBWbe/7gBdPk243O1n1bNRaYwQ8y5GcMNYtBBL8FO/9T4Y7nXJebV/NIp4I+52EjYDu0B6l4gMPvKaq+LhSuMUdxE35PjcwYumtF0mKqNyHpjR4uglKPRtvex4WWLGMvJkqC6j48dwwjyWAxsGtiBLMEW3OOiWbKpZuVqTy27tLYK02PZluf9ZmJmDR3F2c4EjQVKwm75MPbusDCmQm3+JIN8OZqN238yGmXxqt2zvX+uMfHWQCSXNvSIMg2qnlU2htZUhlD6DuC4Q2cSGl6eOaT7Xj0cD2XdgHt5/7PGH4j8HFE73l/JZ9miWbCWm8//5Hnrd03uczmEBhI5O9/f27WdLYMMXGlvUbOToh11ztPEsX7zDLTQz7XO0H7+ygAm2xwzomNvZQQ5EgPXfbmD7+yZOfjR+UV8kWINsavhmQ1qMvbClbh57CRndTbytt/t+IlUM2cxsPPBrw83rbYUIveu0shyQDbG37gEOgv/NUZB7SrdcNOiIz/vTx4zP/i8+OqiKV01kK39MSzxiz/74i4ByvAwlB4LQM96HxCa2tJ2Z7P9y742U3IKkc3JyHDolnzESo9pSEqfOAbgMYPEq+sVD8goApBR5iZ0Th/0rQ+Qo1KhI9XzWQmhG6YnYJwBt4gtvZX35E/AbsTJHWAssmANx4d5Xlm8xN1Oxx+sLOq8sxlBgoPgvxUzDKB5+jKJV4nr8LCxaX6N7DpJ7h1MnITu+rLh5sas1ZDVppROoChQ5qt/Hm5sW1XXAypIkk2TCykwqBn9wWYXIGXau7W9ZVwu2scKr0o7Hg1a09J8+jVJBwFNn2OyucEj9xMXjT6WZezTSwCafUbTTd3eFgiFmVp+5FAU04C5BqkjAj2hYfuSG2C4WsQCHdQbNzcONmiGDe2twRmcbcVzlPOz2dvavXsFmBBFeBiDhmt7K2qiAKw8RoEJkh5f+V7NpApcnTYxo7Crs00VRPIx8i6V0gS52b1mne6MdttBzpvGZt72dkoMM6jByHgkDoBMIjj4Z5Zm6bsfOJfWOAbH5h/oqz8M54SQVoec3oIrBY+4qRfAJtZWIuFKTquOcAZby3OmKSTaKXOVvq9/ydsQP0nXBwpuSuAFupbqX/WLHUB0qjAyLZ+3pnbFJTSvtAMypOJ6nEElyeYDwlxg+CjU7fDVP6UuoPjczP6D1oOkVQVV5Z+nkepPSpr6Dn2/XtCE1msNbJSw3XyNsdqapYfZ4vy9VKgcB6xBXZTqQAivsJ54wxQJM7AF37VIPoUG9eU2rYQKui0A9zMaHShvtQ3m1TZUmfDPRoi3E988P9DmqjwV99YIg1NAMpHVJSLTe/Wp3dx6bajzhJ73ogv5IbLRDB9BhWRhYcRZGv3JYJDZyVSQNltW43IxhA11edZyGx7mm3fFdYxlR28lkgdRfM+5krv+JkWTUZ5bPzT+fMzUpr5pTK5PwapRXTeY/Q/8SPV/ZVrr4srVAreTIBbZdOrtKNiyEvvB+nDtkOfGm6zp+Exdfqoc5PI3k82P8i9VXhqm6V0XHMDRXVD1Ah/Mb+J/Q+qr2sjbqFvTq9ubph3Lt7qgpxw8wKPRi634f1obUcLKtmojKN87Bf50JkTFTaHJJ2EH8KDP4QlYHWc3o/YUPU2tlbLPjynfqo2tXMxdak1elHslskjmEkcQpRKbRlpdsnq9nTv7/MhttLe9VNOo/3b3u7XhvFYosW7f5zq/POMv8lTeLGL1RhroJoCYuw8DYXZ9a8hWwlH4OGW6WHB1+0PVKrgoZ/zAMjL0kFL2Y5n4izhSr5Iymmt8Hoqc7rZ5Tbob25k02c7b52ekb4PuEGv6xLK5bpQCqLkleLY+jqARs5k4LZN+LSBXssJ1usPp6RIEhIORUb9MdwA9xX2xpoOygT85EpSjkIBlFTl/s2P+cXPo33ihjerxjDfHR4Jy9fu9WQZ3ycya1spDKvpZ9wRLveYw1tFTzFMyzKYOogdg/v7Dwn2p84aI+Cb8g99hCqeTvo3k5PvDI8r3aTIiVXp5f2GUZS2+NBY9PU6nxTU9eotMgEhxlZ5PjA63QmoxikRzf41DSVFk9fSmmehDlHVWbTb2LGP5gRBTT2v0aEAWgSe9eh+SMaZ+eIsDF7NWdV6kqKoqajB7l4Lh0n2tqJx2RhXJktGpwVe7nNFq7aWJG1TAgEAoCjnrjAbas5Be8myuMRoPeFUhvpjc8pT9ux1lvqMb091AUsR3QeZNElBVzA+c2Zoe0ErjJlQqTQ+UDVo7aNIdIH54RtD+SgpjY4xpcJFo57Jnw+WDrUUAoNT7X8Djp9Jm+wCCHoDou0AJ5sjTncGxpshtfeEQhbL7SZeZUYT3ZfUkwSxHG5NAEGZQJNSIu7X9edFp8MoypP63hmS+WK7hMjD2JnK+QpKop9K+vNnWVoGNJrZuTNBOljPj9qj1Y84j0jAwuZYRjsGlpskyg+4DFbQrV0YIW0n9h7EQKucYF1FqjI1EKVDaBc7W2+mxopdX6QggduaFp11N2ek0uLImtCzfN/oyKGo//jLb4yZ3L4GDxsIkaklZNawo7uPizPiQqZunpon9N9BQ8QQPvVyQUXKYvSF1tNddo0b+2sz36gII1HakljwleeKESuApdIZvh7Si+vTlIynk9hJ7s91KqNTFaaaJ0VKsNAR+xkFJLMQ5bT6Og4rrNp19Rtrc4Z5ZnuWLbayzdZwJ3RqpXG7OEP0XJdTUCwHMrMr9TZuj87Xu3FjPJgeqT/nmijEZM/VnHS7W7Mi0rGvQZkNJmai+k8ExO7VnFuwyDpLqtamIdtiXxlmdIi00knRnaUtD9jbVKdV9qVOuKO0vItsodgR5wE7tz8lERgZXAWw4ov9LwsYee8h9Qmw8agNWL/K+9dQaXICLvqeQlUJTKKXFOE26e35d2oAKcDhynz4ZGb8v42CzZ/uEExKjPtyOsDfitDG/RLKcaN02KoyG44hg/K6hPthImDmpZAAZzA7XNE5hDKpFiuTK3pz1cD522bnaC0Kn6NytNzO+ZnpQ+teWCYWwNHq2dJiqlWqRrYJS1XXrIqt5FqlE6x+Bt+zVAU3EVz3x0CKA6XgN60oz/NTuA6QguEU3Y55pOune6iiINsj1Gz4QzZnMX3i8638sCvlpyAJ0+5HXPn3Fa2gqim7z1p9a+ZW4+0Ifgem+94lP5jLC7N40cdLHBONWWKfa6bZ3HekdhIQuHeHRT6JQIemMa06RoNKb5NFaTG+QGlulwI0bpIdEBKm51cFBvApVFkL+t/nzuqgUlo+RYkGoSHTUsr78N+AqJyqpmNXxsVe3se2z6nxjUclUGLz7N08URhKOXiPiNZvdCIsN6IwN3t6HJRJ+ZddcZcpfw/Z7+e39h4Hrk8m2TP4sU/mFaadJpUmf6wCjfLnsSv2m5a5Says0rHQ2uXrR1f1rhMkMiK1etjWQr7IUOFbi0rlq04yo5PWa6aqTazjz8akgzvmpraCRNlFN7VV/IcYHQ8hpybQwZ7TAG2Ixl+3fDNmzDYbgXoIz8g/7djLuZwfRqiLO0oBeS11RatK0gZqOYj3pSGODUmgrSi1aJ6LWkfcYWegD1dUihYG1U/9M1Eu2aoXt0+RDYlDx1cOLuD8pxQbt67d2ir1kS7bQgEl78wMcEeoq18l7AVIbWVnnVca3vErGhEMylma3fn9DTk5GmxtvIrL0xNwPGbLRlZtLpOKA9Rvm1beWMRHSEK5X3djyxaRguj26mb0dLLXJEPReflRTcW6mVQNG8JBH5+SvZ9+huFmm3nt7AG19t7utRN2IY4fRpeS9TQ5NeSVgS2Sw5u24qtofgtwBQxhfI7AGSGu0ya5pRvqOJO6Vr0SYyjA08AQnweopDQTgiFIreGtZIbvPciUZTrBT6Tg1QVlU+SzprOSknZzDMDVclSUo+BAVYtawBcowws1C4MULQUWar65YKUJaO+pKpYSspQi8gEK1WZeWzcgJ3KbiDum/RjsXExCAnc/oB3Vz2+dGyQSLTmhSimzavNZ8w+U/NpJvnUz0MjxGriyFCoJXESmpr6Bn6cXTi3czvP2gY9Y7aU7HSMMG82T6CJ+p2hntwb2gu6O6FQVE7uxEOIQlG6krcdJiMax/rGjPkBYYHUR1ogWI0ELQfeRMrbI7ZH3tq9cdp7I+NxXzF38d8yua+lHxImOFyKSdXGHDduBuJKZ9I33JkzFTUS+zrRkvUI4CcYEx2PINpqHmbcITGzy5LydrcNh7vf0A6Fqnw7TDriOnAwI0zl08HoiLo1iIPrQtW+3ubxHXgAMxapvNNMkVcaU1fGYlpJrZjyzMRAKE56nXz8UJFbNEWaVjzwb0A3ogW6zFf9lDFK/6tMnQAdj+HrRrp9Y4A2H4px48gHHwGalhZPywPR/23ljHG2/hcN8mi5N+xjIa0WisV9wLl92/uniwcz6wQLHSnPop5/PfL9h0dCl3o/4hOzJ0S/cSfgOwW/eRPm87yDgEy3ok2CSZoVvQbeFOcJ9Ez8BokYI3sUQ5wftgOTY+yLdwEQrbkXghK6Z/v0NLxz2N0oJTdgET2+2xBd8ERggt0bTmk4InjUOaz18UAKfwlZE0ted4017LEMrPAsHdak/Gvs8IiCFa/aI9fsVpC/xq9KDGm32aTlHzUyulU10Ya+FiluOS/W3SGWHi8JTqOksPhinGVyjPix7ZfMPZurc/7FQw3AqFb4Hi4cknrFrQUJyE1PLh+EFSWa0J26dHDVJkTYwCtBdFyd2AWUV8iq3WPMAUT0n8ZHLRzmjsDbGH4EwiUgBMOur7HP1RwWbissVHdfhbQalHLsyROWd335Ku3tieMbeP9JPjXBXSjpkWfLGYbg8Z863zQvz0t42OaF5h8fsJ3Xa5eX/x1p4VyAaFuL0CLy167NjwCirc2tq0VkyWXnWKggH8SB2IKCWCgOyi+Aeq7z80F6U23VGibHqqu2vM2q7UBnN7Zrz1aCVq+7rDjMNSVLEIN4mjWNhDpEopOPCt8OIBCDsnpWY2DxZgKV+A0Pg8gF2PIbgSaelQc2deICBqUw/B5BY73jAfgVfNahIrC5I5wACO+IRuJ17IdI30y793zAgcDJWdwx+DurjzcPH8Mt9Iv6F3C74Xme08Xao5PYBuT0EespGu+ILes7vBvHGqH0k481ZXiIktxFpTriArGPCIi6Uve33iaCEbkj1EuljZIELAFJ6UoCTEByVRFLgYgqG8/cEhD5EfJqC4ipX5xBQ4sFzaI1Qs7PXBqfMmqawFQAC4V/79qf4ANJfy7vUwEfiZNhUQD2MglqWGSFutx2g0Oiujy/qOAYFrlgbmCfN+oipCXQpk2IEkTpps4Sgg7HUClUsmlTySLfFB9Ber4gLYXvmwiVlEDBJuDFKkLH7EkgK9va2p7USHXxrCXRxqSTk1UmN5LiyliDgSxIk42ZkrQB/LLaALWUFxmWLQmKc91K+G7+nZAe+MXgc8MXscC4wg9X872rodycVD2bzmWlrGIWRh6kYMmnu+OVzH2XZ6nVdH+2rWoSCspWRf27hMuF3IL9924hMBuatFXb+0MF1IpPDE4ERuxbnn+w1aOkxDt2UF/mixVHFJnuAksLwhLzF6WwN8B+gE8P8VqPkeru6wSYDoxAl81qHcDwz0AdcDfvPq8bvoBU4TxDkL2QXl02supoUTG+CeF/YivwHb346D83uAqUtjO616w3jB2GKSrChNmHkalolBpV4c434vytEq0TnXRQgwWlHLe3g4sTm0udKH5RGyt2JWzCUcotCtv0+BmTGXxnbkWx+l552nS6Qz/28zVilb5jOtEb0rWfgZvuP+5/wJLtyrYE/3PxwMqey8bzu4ZtdyQOjDxb7XUY/2cGP/1IrpFiEeJ4fQztH+j00f5R9qNd+xAKOR0pED7Jp/pvBLW+3pU+agU0TFFPDoPYiGxXb9/lFkLo7tLVEidvt3CH/WB4Uk3+u0AUbUjpDRUGggFKOKsLWFX7iJAPHKPDLcug4bvJNgNAI7YBPn84pYmY222rBtQkm3kRzKim86G0mhXpEPcBDpyW/KPox2bTdERNDZTeQUBZA0qD0mtq0kNdpc4uEfGGKtP1k0ppBwlj/DbyY0rrLnj/l83lWUb0eecL+Ci4g9o7HbZ93uVvl6fB9dp/XO4Ghx5/yoi643QHFw1bUTumPXcA/6x9mKi7V0Ji7r7XOanZWNIHkw4EI/q289a0Z1cWx0zNu/zjfDeE/IVnSLkB7wD4T5iVHXZ0kqDB5umEBhVWQ5zdkx4WWSMJDA6UkWgkIcme7ATbJVv9Tra3opFnSfZjwrl9fJZMs4KjWYzqTegYzYpGEkRHdlmyDd0x8svYxfTBtkVG8snvk5NClpCBC8sDAlGtJWQBb6qYzZJI6ClF+hCLptDvrrMWPFKoM6Z/z6aY8o3G/Z9qDAenv/LCI1qv+eq1CUmY9N4Hpo9704Aws+MjPDWUaUe2sYbwrIzeu+bfqclgPwZ2icXmAN/nU8CQPzNkyM4wg03HzhgcO35kHWB67NnB3NYb3ukrh2oEFwypgcNBNT4B8mvxl2i1LrXUiyxqq7lMkS78IJRKhD9QpWCALCQXpHYwG5x+M/fPqtj14GGPlcCqn0YrpYdG639ne95011bQSAenMEQfy27Ft0m3pQ+zKz+/zbItFq0LbO2cOkB4iqhorwz7l2NAhqneL7KfXt4iBR77DjNMb/KShSPciUN/TPnc7f8bAiGfK3+wqA2vFWdWPIOLgQdanhHdt4ZXL3wcYeXbHa7xwVna4DF12E5vN4KWqsPXhLzE9dv6+2FCooAkCLfISW7bXyaXoxMw2mGR93EHvC86GNL1K26aJSBHzfqZn4GwmI7tpvRT+ynd3BujyP+/IM8hR798GQX2vwcA4Zh3kohgzGSISrpJog6ZjAFinxvmkCa8LMVQFlNGoo4xxsK/Qj6GVkx0a/Rozq0Rf0k5VywN+yomsx/7iqXu0qZAyUQJwsqq8sqS5wN82e66j5jfMR95RovfLYwjQMd4XryhCGxltNJ96jBGLyOmLrkuzUmdD7UFsbV5ykPsd1rmJYP9dM/STHbaz0NcI0uL/BwZU2bxQ98tyMyL10FIzf0s8JfQWhrgLKFvqxC++bFxLRSu6SMzVPZRs3xZ5pwsnCUxJfrKqv/nAClIT4ekmBmvGYyfS3ZMTJaLpqPArUbGzgRmjCAU5wniDuIJC8WaZ+XzdrIbzh3OPFhUr1B8cgfulIQEociuLyyIvtkFvKgHRShKSKC0vgD+px7+Y0vY4ffa99Vmm92IjPM80S7UBZsjdWSUX7GNjZuihllpDPKZp9L1UDxRWv27OigIcXScpqXRHXXceOkAkd1YBvO46In1W0k/XvqRtPXmOvD49xGWnjVSXz/I1rKHt012e4qgHi9hOfWuwZltLoCTxmi57VUFRIiRp4VNuHrfXIfwno3x8WnWc/Kpkvh40HshGqUT9gYpto4YuoFx74Je+KO1y1rQU15SQkwXC7gHpqnSfYryoqhd2DTCSnt/LkvN4/qziKtQysa2LepgZ0dut96aHevKAd60x9fSoRitNkbxgWdmTDqioru7AixCEYzpGja62EnqxPZfshjNng5ldDMW56WbdLEWs7pMTHdb+UrmcN9GMXWR8SdtKGYXU38mvMbuHK4FFgzUkx6LPTzTPWgdj3RPEFK+2VGqeKiQOg5AH/q2AX+M5QVpg9RY/cQR3ARO8fSNULCypgPJwgJRXLJZQeOhAvOCMcgXA/wuLTwsKsQMjhG4W6aF14m5njUcLDDNF8flm+WvO5ZiOoH/8NB+l2nWsvwZ/d+mpjZqwIJtk6HKSijY5A6wHTeBj0BvK+Hk/JB8oGEG6t0175Q4pXpADYT4iQHVVcOolINMDRQByTMz5RBRQvDWIjI1eut/HzCoDL+7p29ilNd5lZJKDlQeUDRyaheWIOpqoSUU6uocFuqEN1+7RG2ArycsCd0bumQ8oeFP8z0LTHMgEgHfhTlzYQ8IhOyqZ6tBHq2Dpn2xFXApnU1ivuv19jgJ7OftldQlte5RHqSjeWsnqWAbISE/o9Yt2p20h6Y16ChtnenQbwLZL0lyzsK58qS/FOfLGErAoJTkeDtsQEdn7xzFv8yzVggVYNmdUoLQB8yekhOIvqMfvTs0kP8FzAOPpfGfuM64fLfnz7kOz+c57I8ucy7z3pzvhicuH+1Wh2SGeZSa6ZRKnWmpe1hmCJRYXLz8tXAACbdfuNCOIEo0W0cOCMGyAFoTobXGuoFkXecuMhcyQ5aTJZ70aZlsmu4paHu8EjJF5nXu1iTrhprWJgLN+Pw5W2Qlw03gSTitBSY/I/zS9QckIQYI1/R4zx/juBkRvI/H+FZGzHYtjoSfwMmsROyBQY0GPF+L2pd6NIOwxj0JM+kqCveuR7QpQQS/MSe/wT8CWO/b0xiw3Pmagc3Yh6/5BSG7FNzkHLjcOSNX7BjdEBuNm8GZG27i4iBNZu8CbGZ1qcmZ4gDnpqCcDBffIClu5m5rJMsr/HNOVLMg+XVcyC9NmIDlLvVFLtgbOHPcCJZy5/LHLNLSYw6YO6NntgUh/ZPgJGWxLgkZBy3NQ8fipjU6fhPnECkWisWRyPRYdbWcqTtjpoJhEghOqKoxucm7xBsxIeBm8J/xMziC6TDv0tg0q7FRSqOi5hhBjLmylSoB5l5oyG2EfBPHZMTEwZ/ibJIjbr+HHDSZgk3NOKefjfTm+N6BXry5NMK7aYKhAd703FbzlTrisXJjlmneyupq2lzFt9nUxcp48oGKzdW/9NIOtha3prmSzT2KPVDf+lYjKUX1dpgutiH0/efLTWRz8eOZk4HxwaBqNc1UIYrbO4ohorRCFKt4RljNoXGAD+ww7AGgBkoVV839zQEdL6lUlb0qvKXJ7GVOSZL9kclIxGylmcSseRJGJgdK93e3oaqvF7KAfWr1DZMa4D+FqLhMMz7VRLLf5JRQwjs1fpJ9jl4OUf6S/Wdp1hIbWr9+uYhuPwnq/z1M5AGVjAOHjvh8Qg0aGV8/RiNupYlE1KXUsKFtJdLGWD1h3QskGmlLikhbCnSLdLQL3WE9SyOhIPn7GtS8YqliHlXzPkie273YbKnZBwj4id9s9LPKe7MTA6Aeb0YaADU0BX57HsbxK43KZsF6iyqNt/M4twFnOSQSU6liMSTHPk6Pd02Rtha6VaFbrXxuijD9MVbuWDAX1vK4q9LQ0eSsWDTZGtI6uYh6a4dhCF9xJmyJbfR7V7nzQG8/3O3cDcsR9M0RzRGCFUA00vXUA1S9QxWkqrx/uPJ3cx6yMGL66XqHfOgq5fvsEroe6rcwWvSDKgc9uPrpO+UqlG+zrV9nNO+HFOwXrtL0DvpHeLqe3o826g7Rv5L0KwtqmUAA+ZhehbQLQuYrao9O8Yj6iiQ8wO4zJVeTTfdDlD7hm+Evy37gWe64hLr6eVfu+qwa+0tzL4VXOFey2wBndhIoxFW+uUNGAxO+E3NriRQmhVSbS5SR64Zy+fVD8+GfndiWnVuNBpqWmJjomBYLqkWrRtM2ZMRw8zF4bg55/AIuc9wWGBuEYQP8Y5y1yzhJ/huLHzC5T+3+hOJF67n5rr/EqZTKjsHG7szkbRrNiAEzHBkdE9OiAejqrKzWcnHZ9et984gfCUgChZBXSwRMQKifAY8kGIm5glUhQAPg86lSM8smJ5LZFA2ZaTOz5jBtGLKvzAlt0bRDvDlMN8bb6+Dx8i9ohZ9IgcZX1AY3gCDDuhzLeLS/CK0gZB8/aBhtITVhH4UhtPixHoIQICKPWD7k/12ZAC3nfvX57j9UTlzuDwTlmwqytv1KxtRKMV0acpayIDuKlqJpxQCfzmLlpD05GsteSaaTokk0szRMF8Ye04rhalB7faeuzBerPm3+go7zFcah8TlrA1cFrVqRg3+s/YTouC99n0qfT7JJzfWgW43TzST6uw3Qnv/yr+W9ft+k2aCc+54LEpXf/IayiXn+gK9bcqJD7S3TnBKofUkLBtP8saKfSeNe559NPTvvNU66Wmy5n74d0XMACBAtRYV7ny5Hi5duA3lsLe2nhXnKT7Q8dh5tjKaVf1CmyPOfhJ/myULK/MIUTc1WgSkyjSwk0SaFkzQSIEgo0w7DDk+MqZ2cGx2dR/7HmCacBhxn1qHHtDZweDh69ybk2f1vuJIDYmGMXLA41SIt8dmrcRIhGgq3jghPbf9X+e7dTUwnbRURkapRdPfaTXpKGhYr901PwwBjo5DA9+P7+7fFDbuC1otjtnkDeXYka6VSLIyQeqtSzVPD7j0YJRLCIZGlo3mV/hLpqTKJTLLeslUu9clShY8fX8C4XjGx0qry8gl2N3s0MytK7u93bfwmp5UDWLD7CeTCR+RJ5ImFhRMwu7KwgDwBVGE91dU9QpWxABzSuWics5yvRkZHyX92znLKdNUdBIWIjrEL1C/0aghAegc9nVVNFwAz7IHzMZEnFz6eQOLrv3TAY2OIDmOhA+bMhbZlPrUaTZ2PwIy8RacxszPN8v+VMpS4faM0RHKh94m+1BL1HBgDhiIkH8I5loZpudEoTIF3VH0p98ck2Kjmg+3tYmvqfecsU5Zplm7r99WxJASYV1ifcpSiTqH4ilMavtMpZ59pyqnL+hr1lMbH+ZQTX3NKwc9JSB9RU1785CmFD/oUUiqcS+qod6azj14oRZ5C+zwGMxAULiTxuEJMIyZMw/al4GOahVnNIc3ZVU9Bs/w/vcwVDEVa0RTNIofNwvroFPy+MF3H5K3jpbx0YLzn5kbXO7TQ3YAbvcVBT18zFPIINEBFIAEkBFAAPbdvkgJMFQ8G1ANQNU0J6HoIqAGkH+3nEvYFmQftM98bbB68t952EKBHBweqXQ0CPx3D/Nb088S6G9Zr/rpRMcxqR6xOWI7UpjKdft7drbG6ubbQwulXzG9fYVfEP1D3f7f3XQ9mgoC9RyZ+Ls9EGm58Zb/W5AMni0Ic5ZoTMzWsdMLq5uuP/93+7/rOLtou4HN4Y122tIEid24irpySjkxDLqbMsQWGIvd+mu0O52RIN8ktvpf9km2Az3G7rCQct8i9h07Sh+pJE9AsvafI3SBgz3nVotJQtXmHU2xSzMEZd+PpBF2ALgFVKrPLybWbA+Gu7DnbuiWNrLMtT0QChTPLFDeXAZg9972k02Mu4fIMlzpUuEtY9Qi41KHGXsKpOi4Z8nCXMHrSi35El4hziVqkw8wxCPg8NidEb0Y97CDODM793cd8QzR1NyWW6b8ulisGZ4gdqIdvXKft9jniFHEOBF9sY77ZLETPyZCKnUrrnlhPWT9Zt8LS9Q2COLcdgm+tgyA63sJ8wHb41CmRaZjeJeAGdfTWrT//FKCCsD3Y4xjpx8tbt4cp9HNfnTdi5adPD9h+PTDol/p699eOzvT8jz5UKOf48d9+A189CJtf13DxTjZktli7G4dPtiZXe12EHcvepi+2XJxe8QbheJGXn9w2fNLd6L5NQ3zSu2UwjXXBn9Ky+ryVcrOqX6J9OYq2wwA/u9GBtH3gqycas2Y58Ow36UsslzAOFxYktzIerQMWLG6Fb/U6NppxwrFALE8RAjKf/Jk0dcxpyZ7SPISi/H5xXnJpivSZzKf07ktmR+0KutikRsHC24lQ2ZEI1K4xKHFGNnTgRPff61yds33/tpeaYznhZpzm23uB/544JpTs0875JGYuUy+anU1elClhfuJ4twM1a+JNkXLUz92CWbSrvhxUAPlfb4si2C7x9x9KLAsW2QRGV0XGYMesGZ2WnQz6qiDU0Tcf9clWqrZsDYBWIrbtgBoo1rLEQj42NmK84EbutXjbXwAE+Asmq1hdzt2MVYxu566OdNQo9Y+87u61kKy7rm6bGJzs7laH0UdN56df1tXWpqXU1AQHGr+drfj+vZVgqAVGoSei20nT3qnL/Y6HgvV9xmHQYXrz0s3TzKOZ7wqW+/MksC1sxwzyhvDWk+XeTVXet6dZYyXdgd2HtwlzvS4eW7AXO8fuoT0+0DXwHhOOg0h7t4swRaVaVtrdNeMw4jDz5ODBcNnAwC2nAadpD2Sq+ln6yoIsVmRkmz0+Qps14bgd5g9FRFIszd8r1ezlBGtySX9k2+AWYRLALF0qZ9ZFfUmuRKrF3ORAJSsqMlDby8sdZ0D9PbDGEelg7ZOkqQzCMsN8Hn96bXyX6ma2bA5tZjBDzy0zm3RbGqMaeyrrVZMOpE2cScM01oCdNrxZ4yOUstdvOX4MINgbNXrvFkOlWDaPNh2kyjvavWEDVe+gp9Jy2vdCT9Cm/y5MWbN7ABiLs7DaRG1SXmLecVeyXEQVEHhRFmCg+lANzvsBWLDbzmX1if87EFs5OhYQnpD61DnJ4HpQB0Jhv/xHOeXnj5pwn0D5+5lNu8+YSe+KGfdpdEml2gGiIoXsKO2mtVmCyTrtrspuW/5R+Z8/rLIyUYmsxq1EKhMrPh6YZveAQob9HJ7JGFV8OWN7JuRRRre2783laqH1tbPUjDMZatNr1kK1iWWa8839FvvRVfCSa4YpK8OYQUmlpUkQ9a8XBeGBRtkCw1ViJysslLEc93pTlMbAvOVx8VRE4rJi22+z82TUJ7H4E6r/hyz5qvup6dvdRc67dzkWH/x2a6n7VWt7fyo8RVtvMKQHIT118MUbEJywb/JQhcMvYgx/Ch63vtWDN1XLA1KgaF+m8j37nYUy0i/F0FPnfzyrm3EKlepW0Tp7Lb81Bf6xf15ZPP7X+MkW0qvuzfzI/gzypNuH1maz6XbMhJ3a0CvLLYDF8iujxat267qYt5ld6+wiOIg1utu6NQ4EP22o7w8wgH/wlRw/woqbFD5lt/O2NItc6G06zL2t3D4Q9opLnHPRaMFPt2xvs1i3rY/cFmDQlcPJJLY1m/yWDBqSfY5wxO3HAXcCBOls+/rKXavFcN/jR32wCI8eBYG+R4+diatdnfv6ZlwmXHidexAr+vpWIGoRjSI8BFoLCIsA1NMubBpG6ZkB3c+KKTNr5dKKzzvmOkrKxIPmm+2Bv8LcxvlwL8cLcRz++BF5Anlc6HFAuBw+Dp9w0zMd0JudN5+b+eleaFK57qvsK8+/x28bhYPQ1i5sD5ykdovtMehiMU4J/CNJAsDOfZ473HxQ7CFSU6rfSoOz/rFa5pFpgROJfM6T7YhCsFAoZFCXhocGicbSWEvMavxyDhx1DHDvcaQKCgSo+vCCLH5EiUkaDXmcgXCcRTEEpU9UapIsNjmDFflQIirV+IhEqRssUEZpcMuDrMV4FTNhiWsiiMXUmCcRoW1DFK94W7UgJbS/MfEqmnPIh1/Lio0V3LZqkOBouwWN3Fgg2CG4M4p2j963lx3PdGZHyUEExiQfeCZ5tCrcXzhmbWVsa1y9c3VTV5NOs7QgJQaw4EXn4C9XVphzEAwguUdwxblIYh5Rsljib/FECKKWeDKPQSQlLh2EHn33g5WVSaIOefSon0KJJpZW+1b9OvpeHGRWZ/tPOw7/d+ezMvYwLYrVSEiHkiSICATtpstrQQRKgxD+0YpVQbGIKiqLfklgUhYFNQKeG97qw/2RjaAijwVpYK+0ulq2Lw3UVV3LCSGW244tAbuk0wlJYc9tq107Xx3bgWDUMHkVhYJkACBX5IEIX6sjK3giqgq9m9i0Ad3EQIL/ikqiMdX0NtMtOYxlKBQGi+SbVVY0xm1JPimkmZjBVjvK8+39vmIQEkLvJlqY4Q7G3tfXwZUORE17Gc1VUCXnkF+/TgLp/NfJwXxlzt+RX78qLn07daanjbSqabVpWfOmpxQW9s/zv8fFpaR+W5+5dqBt7HXzGmEpWDXJOmhLgXXC0e+x8clpk0s2GtRbY1Zm+NZn/5TCwf554WNs90XXZawbaJ18cAcvWwkmLaXmzqPfYuNT0sb4tlQHsNl9kSs9A1XPippcSTkeL1Bn2ER/CHRdlEGvR0XZrbx7nCKIz1BH2wR+0Hk1dlF3L2WtnMT7X8p55LdvI8KeTwj6+A3tEZGrOboFj+ITYFcFFakgKJBUhStM4KPwW4Y0OSd97w7vPY4x3YUgyOBwZfpZO8+S0mGZExbeZYo+sXf4ki9Yv6gGlcL9Od3te8lZOxO7RO6sIZ69jr69eaCbTeJSTCjXS74HR//MRaXUuF33xyP+RVKLkRVt26oRekQ/VVAVxVTkvwi8/3XwdENna7A2YdVSILOm5njt8QUVB4TJaqPMEIzSza7cBM6iHu2GUumi4MSActweJS4KGb2xvIxYjt2TRJbkhvLUiEm9wwSYerW4dOqMkhkWTlXfAKFnzqwPBW7mK9bYJe+5f+xyivslMDUesTgUBPfpo4I2jOh/Kc5zb9c4pWR3FHs0STySSzYNFXs1JCxe1BDVLl0Iqfsf21ZBrym4evbflJ7x//KvAeFeh6gton2prl60Ufj//5GjRAlBP5L/oPxxBSrqS0cm4n0ynggX1XheH/Gv5kKQIA6FxbrkZT34YgqJdleWqoGr70I45433roakHZ/X5bq8Nl1lsAOuFrIG7q4Lz56/2oMX9HZeT7YUymmpjzeiQSKuIMlPWxWahE7C5if5h08gCEeAabz9YIm1kB0RZVe9zg50mWz6uzGP3g8iofjA7M2OsdPBK+QJYHR+XWBUn8aFudhf0JtZ4+sJDNiEgL+n6i+JkIl0koiUFf4jL/WvGL77Qgqh1iSaOWOR+NSUvzNvpy/Lb42ag31rbGalZogm6/ufelcvP7YY4+uEWLmfaig44Xsib9HcucigNxO6IwlHSq6sfTn2uzHz848W6W89IxHO75bZuARsikpPMmugZUEyWt3Kv4BXIvrbjTs/Lt73nfZb4hmbs4m/2fuX8LrNeOJZKgDz6uPOhinde7f3vC9uX8Ld1/m7pKgESSnJ3udnkUIXR9drarbfpQzzolPQ6cOFi4hCwXTYUupSR4nFQOeQl4ansdBoGP+favRy1f52iJfGigLRKKxO7hxNp6alOOMAQBRXW1TzGD635ol0qM/c2Uyfcci9ABVnGhnV8cyvPGsdldgCQtjbTKvGNu/O/LBdaqNr7dQxKA7Fr0BfypUq2/g8t/jUu0oEJEnI/pbHpCOc02UXX1a6iMwSft24gX4oGHEEMRizUAOjbNTuoUFeIts0Ak0AaU6ILGO9UdsGdzeDnpE84EAyuEV4iGvjVFg1MtcBRqj4dlSW0EIILkEL9iJns/s6iGGfkcjrhMAdkOxJDrMMs/po+bEzkGS0JEj7YSov7p5mzTNVS+KdzaQ/ecV6QUpDiQZSgVWp1PBeQiJUrIVimdoOmQL3lElNgoqXQBFQeHFGEhQHLctAhKPdJOqTuFv0WzjSN/q3tbgZ+sxcnDn6HBh0oX4yzz25shZqhc5sh6uAWFLyiJVdFni/0IY628FBlPR0+KdTlU4qp6tO9+4qGClccSLaASScs3u1bqPQoZ7ViBxEbk+zHqHDrknhmStMFmWWZJI4TPYYNZGZtIfIZ/oMscgpAsR/+Yh8Yj4pKiYhBJ595/cOltWtJ/VlQfNyHcFsPbLahGbbEH7C9kQg+iSDyIs8a3s2/AcIit61li094fOjpMrUUQmyN/BkY9+34X8CUwEu5Iemjrb7Xw7zi7eetU+MKa0kMc23yO1WR8LpYL2nV7rzavi3JAQHUVtV+47zLukaZwuSwSez4jiP449a32nSlV7O2mF3XyNVr2kQsTtle2OGyq6H/U8vb5qEj+aQG/8stRvxCHfqAIWKk3YIaKe7NSJtC6w+joEZSd/5MdbmUSZxJfst9oWn3E+AyiE59qDtXcSFFEby+8CgtHgRC1++J9rx5Acr2ckdJ2k3Wisb6/Ci37QVYsuo8qiOColn9OLQEvO3v4KccbYrs5JJTJYeQb79Cz5LlLOOIPm3nWISQO4NikVREVlAmZ/7Wvd99UUk9eSfB3R7nAoQtV1pJBwQeZT+fOIu8uPZw4/a7RuOIDZmeSES4RoV1ISY6ol79I5TcB5EDXmSPb2QXkD/8IY9UZ5Q8lKwBLXl3qSfi5nFP1tehfhVnvHMulrCLLlqCQRwGm+Zv9lFM88YT0+0J+H/8KgHCB5oi8QJRr9PQSl3oTFF9B8+JmtPSoWZaJ0pppQjO8MuFW+0F8dUfVG+X2DgcfmdJZqbMy9MifT5x+J3jqb3HLPZG8T2Sw/ay0obnUa2SHf1ZhFi/lOJvqbkoY6E91IVsz/t7EXysSPDMRF96F9x8dlSojRN6tPJ2KmRchR2D9FFcBrYyWKJpe+RTEK0WUxNSXlClCOr0PQH7xfp0cR/GL+yRGgSWo8qRuej8S72kgdKCwWxjpXIYJeaRSZGH5hVKslk52ZZoa1qQGVzr5fv9+MN8Bv7JybmAljWuqeU/qCSk5HgvYw0HhPzpPofJ9N2ClKqSZYCQfkvLKSU0m7q9E+1Q1XYPxD0TxhloFBJb0WMu3NiRUEJzJOxJE05iB9DVLPxfqhAs0dHvlv1cm4WosQxJzkuYTDcSuMaZTcxiNhRokgAnd6/QHxIY+oX8PCPfK+dfv415j6ThHxFwkVY+T0RYRUfv9ZCjIi0ER4alNlo2ONV8YnTjgMOt+MTpEucQDA998QaXQRTG19GS2e1LL/xAuum4huoPaSY9M3czdZPuWlRVE9rvJSoDtIG5QWpcNZShu1nh8+2js52xk8Na6AufoWVU2GzlzvoSnjauw+xDFHbaMvRcziDds6HTGcSDjl/Gl7kanHNjZkMbx2VGib0j5PNunZNBpWW6yP8xwr20fba2gJ8MjAJ/pZpjulJblmMYDlE0fZuKwbbCosLeznaXgozJqazU8/E4Y4UOD6Z0R/J7+t5SUa0BRcJZ3e/upw2WdpNN6eaMroBC44YQwKAHKMAQLAdl6YY523STj2W73wv4UQR6fk7U2f6t35Gn5mFbXXuMiHHJz94kRl+68eQPIxcIsOzB56YgHuIGgSENxnp16zVNvvJ61jbJmpYJl3OrdisTH3rDl5XBBR0GN/OUE3tdnVUyB9nkKCA0yJ9F1mYAKdf7EVM3GK7k8Clt+Bu+aQnbEidEbLcVzO6ES+wge6D+v6x4U0ZfBaZeZv/QHK+ZMOk+9071AuSV4LbSFmvbjndGhi4IIYqMe00IJFLYhjAnq10HZjd6mcQNAiwWbm5Wdi+xuC3ZRZaN/JXx2g10KTNL5PbX8orLR3hOVPr758I8dz0vH9S8alpk2mBxvqJLdUh1b85wFivhioqoDalrihXI4iScLMKdX4FU0vMyxfkqxlTC5T1UESGJhxSLzIyIXkWVUl2XEL1g9KAjOKYSVZSNz8BH2dnPwJ8OCfAx1btDlB9DTVQxDyNpPBV9pmdnpv8m4N8aj2dSkOQh8DsrE/OIg/xlEJn5P3IN4Eh9Hlf8jvQ1QRHNQX2we8KrAJ3w5Mn4DVAObgb5ieRERhr7jIkqrJzb3VrDCgP8qogcLRY5K6Fu1euEneRu6DwUVT/gVP8oqVSUrvP0o/yYKf1hgcU9IzHzBMz33N6g/XOB7bxXGBE74enp+H9RArBdvxqSBaNwjfdA9ceSFfWqUhqyDrAosLIE0bzwHsukrvf2t4xIQNjlEHYOLf3GcM8kBprtVgY8tTCBHPBHVmYtehnAO7J33feME/ObjwTcI1VSTtOXc649mxAh6KhaSgd/8NMeN/58H1PqlWh7QfkhdUKhdZNW9VAq59nJ2ayE+YZ5UPG5ieGLwgvWfqMeA4hnaXAS0D64/VP4Az46fXzlgeU7TqKhdqCottOebCVPOqpW+VZNtKiAeatAsf0AjUVtJpB5g3LJFL5T1cEVW6LOTDXT4T1HIYwoeeegoCpI7VBkf2qPHAMfv8BeRQ+9uHDMWQbdHer5wp0YlOWU8bOjIzf/l////XMOX5k/ZGdSq9LLf32cW7svA9T+BOXp0SCE6gm4F/e2WmvCSQQ5NZyoL2mU2hEvoKNwnmhEX6FNFoFYbDzWMwrjO6aaxVRPuyaDlMf1LiLNB5Z2eirRXJvN57Q1dvbRcB3g+DsSlFstJYbGA+kLv89evRfthYPArXc2Gi3vEC/ZDsgiEtNjJEtT0rcvdxk+e7E0VqMLDVREAfskv0CJxDV0Wbm/VBSWakS6l0SuHu3x3uV0PZZCCWZ90ebIavAH2bMXkdOzZJpZJJJop07gMHoTMNDa3QadN4ANT1IXujcQbSmqyvO06ALoZQn6UAQHWthcWvo7NPiQOANuxe6/ecfAnTgq9Id18inBm0n9xXdUL795Rgthsa0i0NafFtKW3JrSiswfnqYUE8k+7eh+vHlIP+gy3kiF4gZgYO0cGO05V42OR470YmIIkWS4IYJC3I8fVOMZSNDTcNbhEMu3svvRflF3lO3sQhnQmqTxhjLTWxSvMVTZnh0OKJzwmKxYO+Ntmw0UUM45muuqI0rgxYvBjKiHJNB4dwpCBLd2d7/vtpd7HwwGahBQ45V3M/J1+IxtSFbDWmATFi3snlTcEoDmGj0K/JIve+R4lc80dAApXT6Zz0U7wM5niBwyuuzmdoJ5I17HYvfil4Ydd6xZ3nhzUhRXa9X8n1eBxCiGq4Q6kR9S7ALa8C9tZ4rp5XL4TDiOvV6s2bvu6YW4Usq/mqQtad6bkJGF2VEgyhQnIGMdlXellqw3XLdbSiSnqACDfhfC4pygv3jl2EUWU7Z5Sr7BjVobYSb4qweBco5Gon2Edl+uuRelEViS/o8033sVxTFaAixLLHccd1OqwiXLBkHFNbbJSV9+iQRO3bv8M78j+gBb+NKxvnP66z3dCTnu+9NPRDBcagFYrj/zse9VmVP4oirI65UldJPJy/pjCuzDswGx5KE8a13LSMb4gELFpw/3/cdDm3ue9rs9YcQG5eF9o5j/bW85meBIv2yrKmrgJFRDmKj/71FEvuNyV1kNvU2XVJOhx9JeAsbDWIzywsYtFCrMnRgR4vXgafQFuT5L1/AyRzW4n88VodlNFMxE7emj6Z2OLICvlTCXkeiYzayPYU1TFlldFSvwwoJpxiNCIct47/ulqY02wkDi0zUzdpERBa3hIkxvVNuT4x8WddxnDnpehx5w3tZnHe4k8OiIbgaQvRaZpXvFbY+clAu/9BQ3fChHMiBd6L9N5ks1x/I/d9X8arei10Oeumu5szXAZYBjmnA2Ppgyw0beON8QuQX1A2FhYIcJrCQCau9rECHlbWJVdak66SjBvE8M+4zOvhb8GHRx7ErBLXb4QvnkO2003ivoRu2N8ZwXndNZPuFc+0fXp1+j61FFLe3FweL6Ag67IrTHxaRG2uwFKdPWQHFVtWvtrln1dgDNQ0IKO/09Dygq9iG8PQwaXNu5Xl4wHtxoofnjUJvMM8CUoO5+SaFcfGFJvnc4FQMFKvVLhnntSHgNceOtyDWII4fD0eMbhYIKBvhcIY/HXJOmDF1PmQ3uAh6aTMm72rEjyzm9RoFN2GZfk7gJwAB3qfbry08C4o9PsuI5jBgcaBJIELC4OBHR3SwvpBD7l5baDf/6PkR1Ml1RGe2exURbo5/lu/sZZuFa5uD757fzdsXrnnuuxdMjma88fN7kxbkEJDqb2Ybxv9jvDan+FPSoEJ6Vd91vxtUvW4E+HfsNidP7lbjBf+KedWetu621YE8MewEeq/+vu/b0xEt6pb7LZR2mJGajgZ880M8dHJ6qLfn1yDwmcnqZqB7kPfPCYXHIdP4Wy9NUT3EEzEW+xHtC5v2//eFuP/+cmQMJh8+AcMRGGTUJf1+EEJraIWzYZTy28MnLXTmM0p59PB2msXoxx+QZ/a/sfmppxX3bO7x4/ZN1RIoNRWIgUQlCcR7JUAsPRXub7ei0JjaaEEAPZb6xHHCaYZCnXMadXpCpd52GjmfZAfNKVZ9Wzn1Ll1qoq0cQ9FwYtlxbBAtdSzqivCaw8BMBkJTX6+BiFJGaBgRmMJv/OPH54+g9U1ifWKkDkVvYGsDpDHUZ6KHnRcghOqIpvsRbqeHDEOn3SLuX+2r53bf0kPwzHLA8pnAw/K+W/x37KsI1BmcAXcGFTGg5NJbqAPUFvp9cLuswQpS7DY5vbnmBRnSW/TfHuN/pccFjFNuXIbeoYXBBVxGi4OewXVr2BJTgMYujWZdSLFdcvvKtnskeosEXFcjTVeq6Eu+qwchPd2N2wIGBieAQOm4u1eV351Q2CXjB6538pt+8r7K+FGW0nuvMCLberVjobosnB5tO6XczM+/2dOPVlWNsrvZEgDCbpoIuMl64muBMJySwfDlpkOuMP7PH7Hkhvn7z49Nr+2/Kv6PU+uHKKMC1IbzDvF4wJtmeQNelneWgP4AfAehBwDRttmfKeMXWwkqjRa/v6KvlqA0qL9e7LhO0QgHkM3IAS7dGB4Fxnoh/vKBzXOU8PH0BcwRysSN4VSzBmS+h3RIYgbmHNh92aEh2FgFHMdt45NfPc+QzZx42S7u+HzPHa6wUJhXovcfwLBqprtqB+rrhx/kmEe+/UeqQsn4amxu6iK3bbGRu+gboMLmrgKqUiEk8sBCc7thYDTZoyi5f3BBiFRxaAJNQWl6fVqwUMcAEUtE2fq9y2ipaRQVBedH8CyalvoD/dzNU7rYJv3xFNCYR9qtzzFgfNe+br8WOazfcXN3e+YwuYcOkG3VjYBfo25c4lLhWu1a4SIZN6y6yxkLK9pRiw6WRII4U9olMS5GHcRV4w6iJL3gtLfqHNQxOjjV5L5jP5zS4EhiK59Kd3gsCwVRwqbzZ6cCrG/84pP3JMwH3+EqXL5ft5ufT5VSEQd19GPf1iGsTTDYD9tqbV+DpaCfJWX1gPcYQV9jXDNeYNJkSaCfu7UZeTyXKJM5Kj7v95RTx7adFzaBKAmf2NeVrq6fDozm2TJIRgFve6TlFE2xxUax1S4ZE8u3UHJUca5ptACpF2WSW6nNC9eG52krT37myC675DZRZD050lb+DtSXBmnb/tgkywk+pJYDnCDe7sUkBnnInJUO3sJuFvU7LmOTQhfwB14sj7MX2Y/h8UZ5ebQskjUX6xFFUD+5ruQ/+TLIHQevZRVhbh23tJNNQ6+Y5tas+VoNjfJNMGuKDMx4cmtXA/YB24+Ku2qZdO8BHJD2rvaSxt/1E6r3c5cnZc88z0GrIFcJJ4GyKV5UnjEk7vFKfwsmufbwtoWZx9POTTKL5MtcSt4bYErIwSTE132kTybxbnbkRZ/3EI6TFMOC9ER02QiGMXEORLBhQeAgc6Q7QvnpnmnMygBXW07yRzEmTAcEnFKbqtc8lg2chHiu/5Pfl/rOutLrOMCVPRU66TZpu9CcHnngXBFblDLXHHWg+0p4XfQmYCAlCNLoFDiebubEjhsv9ej0MJxSwiREhAseHjNwg/i4gwN+0jnazisISAG9z3IgHHMsDD7cdJIvxDfdsR3P1s6iwzLZdz2N9jDwMO2KDy0Q7HSlFY6ECOfD3JkOloDUOkubJog37g66+MsbMenqid3syX1B4RNmDtAbmvmRVf1j2rkTQqbEDyU+68sS/RTqzIZTvugF+jl6uTZ23OlVG23l5M5hJNQ0mYl82yJMY6iAzpPMuCSqv22TiATxbX/R4nMCbW9NphE60LzL6BJvP+4yThA/R+oLCrmzZIg/Q/n+7n04JNXuNnXRjfrwkhQ5ZmpB0MQqAQ70uIpnxmygIA/09gE8c9LGMWbc5xE5xJEiaU6FZJCe2lzPRKNLjRIi1kdgKG3D/pvXgUiiUzzOxXX0DdH2Nsp/+Me2qce4uY0+IWK0ae5ANY0O94H6zSIUL7fj+m7j4ZekpofyJkmqhNiSHrR9NoxBcKklxJsR7yeR1dFD1ysfVbZRtuKvYVn6jQl2Pa1u4/1qD2QkiHdLcRWV9PXxjKQt8+sGSDomSomslSIOGPqIA/R5PtYImrcaC3Y0iGlMH3P1itsQka2VCWv2OtBAfKBfMD0E8VyEj3bzY8Dob+6OvpD/mzAUwDd1HPiKBDzz8kduCCA1fmybvXKohuz/E7Xt/NqLQ3wwQ/GJ6MjbD9Do8Mj+K0bH8wE4mkBmaP/YBVywiwD4mnkfeGYTGUDe3UnARwxaUNT3bdOUSL2KAEvg2M/AsPEjLAcn67r7ORAI/Jywwvy83LR6fT4MUw0BZUcBqlsx8CFUl3wEsgs+jOo9B+l+56OY+c9HowbYx1MHBpNDAqcwolpIQAsxbL+gi7VUsXU6bfqD/Sg0blfiZ/7HmLomvKQy0fWfaBgibOZ7f12aQhKr4WNwbCjFgov9gtej6PK3p/QWrY1H5vpwggZoIYbtFr6ssrX01tcp9sD/YD8KDcZOly/7H2PqJx5eHp9T+D75lmqnuhjneX9dUE0hjWWr58gHqoZSLDi92i94PQqH6m9PuytLaflH+ZH6qYGvfbvcNibL/0LBFGXZ2nkmeVe3x+vzA4gw+ZUMfVGhU1UqbazzQRjFSZrlRVnVTdv1wzjNy7rtx3ndz/v9AAjBP1aHn/mLxLONifSzNllxvCBKb2KWp2q68Twxettxf3b0AxSEUZykWV6UVd20XT+M07ys236c1/283w+AEIygGE6QFM2wHC+Ikqy8soeqG8/i3R3bcT0/CKM4SbO8KKu6abt+GKd5+YOw7u72h+PpfLne8AQiiUyh0ugMJovN4fL4AqFI7Pml25LJtbSv7tJB/tBMwRuzudgO1ByO07HlupMvSmhRD/15p/Xy3EgK4ySTuOEMGwFlnmxMMQiWMqEVQcaeaaMJkGXLsC7RmyVxI7Z6MM1fTrQoy++ic8ieSqsOSV/d8CmXp100JloyZFxpCH8cCFF9tPrMeIutGbpuo/tkB4J3Wl6oZ5jlk+ZsTNCcGr39RuF9xv7h1nxmweX15K+vJLegUOlwrvAZpqJ9aMKNd9OSb0O8UwvCKXhWWTKu+6c4Xjc79AOLJibjVAsaLlxwPNufYt4Re7a3FFttkQ2GsFyK6WbGWnMkFEBjBFBjm7AurDwns6iciBeuZOLjrlWpFu/gQ5vLXLxETJ/2LucldX+WyrJkeb5I48Nh8+ibQwqTj8ioOX1Sw4e6pLSiHJJIR7GdGrTnl93FqqwZSvFCOc6jMR6N5dRztiZcBXI4EOWu5pTdETV8r4xYPcYOqZ0M1Iz6PB8yFWBZcrN216hjIKir58345V60wkPuUoEinHFzwO7eDs2JsCdpqjIpZJ3zAr9r1TVRWbjEECDR7iMFSxH1k8bLJxVEHZgyUgCZBj6JAsu4Fawee5s5HT6ZfECmdIqKegsoOglC/0zJQAAFo07pPAWouhaIFniwH2U7ErVzgYyBSKpwE/LGq2t3rEQDYlJfXeokwGbtRWMagrd5S3FMmtEvfPV0RttXVhP00QgyNZWmULkKPDVwgXrMGUa6Nqdh0qBCyjYstQkmtAAjAXvZgIZJBi7b7v2FhBKtExYJ5a4Hu+d1oxRq/iK2eki0oPeEj1OWneh3JryGGVrlvdqOpOqOwGz6+CWn3u/T/a3IJ3FBevI1zIBdukX8BL4ds1y7rUtSRbnjDP1etwvSN1HUdbC5r8ddUqyiwiFBmxNv9RpmfXt10aJDAFX5oH5CNdHabugdixB1rUtLYdnmKXwcTy3yTOLZGQJzetKitZgpIPjoLzMF1Ton0NRLyhu6dNyiQUuG6GMlWO60RaOWzTX67usKiuFECGN5oxXp5rRsZAG14Eyuzsqi0lcsIXbhZXfE6EcNZIbQMe0oYAQgasNMBz3b7BUkHTFTg0RHoQhMlFZGGU/ejdeMfwpLflT1HFiEd7znbVfdav94mdP3O1MIyQDLftKTl4cVRG0qHVMl62E/A27D/FIprv6AhPMnZyCtkyiY2+6pcPhsG04nYIZDR726wQ2tPPykY/qi72XWgLJd/QA7GNW5ClDzf93Ax5/xDwF6LH+Ojcb7g0HTgZkhDLg1su2qLt5SbLB98Sv0n7jS8XkU1BIX6/wZHi1U+twvu9VQ3N3+DwAAAA==') format('woff2'),
-		url('//at.alicdn.com/t/font_1529455_k4s6di1d1.woff?t=1596960292384') format('woff'),
-		url('//at.alicdn.com/t/font_1529455_k4s6di1d1.ttf?t=1596960292384') format('truetype'),
-		/* chrome, firefox, opera, Safari, Android, iOS 4.2+ */
-		url('//at.alicdn.com/t/font_1529455_k4s6di1d1.svg?t=1596960292384#iconfont') format('svg');
-}
-
-/* #endif */
-
-.u-iconfont {
-	position: relative;
-	display: flex;
-	font: normal normal normal 14px/1 "uicon-iconfont";
-	font-size: inherit;
-	text-rendering: auto;
-	-webkit-font-smoothing: antialiased;
-	-moz-osx-font-smoothing: grayscale;
-}
-
-.u-iconfont::before {
-	display: flex;
-	align-items: center;
-}
-
-.uicon-en:before {
-	content: "\e70a";
-}
-
-.uicon-zh:before {
-	content: "\e692";
-}
-
-.uicon-level:before {
-	content: "\e693";
-}
-
-.uicon-woman:before {
-	content: "\e69c";
-}
-
-.uicon-man:before {
-	content: "\e697";
-}
-
-.uicon-column-line:before {
-	content: "\e68e";
-}
-
-.uicon-empty-page:before {
-	content: "\e627";
-}
-
-.uicon-empty-data:before {
-	content: "\e62f";
-}
-
-.uicon-empty-car:before {
-	content: "\e602";
-}
-
-.uicon-empty-order:before {
-	content: "\e639";
-}
-
-.uicon-empty-address:before {
-	content: "\e646";
-}
-
-.uicon-empty-message:before {
-	content: "\e6a9";
-}
-
-.uicon-empty-search:before {
-	content: "\e664";
-}
-
-.uicon-empty-favor:before {
-	content: "\e67c";
-}
-
-.uicon-empty-coupon:before {
-	content: "\e682";
-}
-
-.uicon-empty-history:before {
-	content: "\e684";
-}
-
-.uicon-empty-permission:before {
-	content: "\e686";
-}
-
-.uicon-empty-news:before {
-	content: "\e687";
-}
-
-.uicon-empty-wifi:before {
-	content: "\e688";
-}
-
-.uicon-empty-list:before {
-	content: "\e68b";
-}
-
-.uicon-arrow-left-double:before {
-	content: "\e68c";
-}
-
-.uicon-arrow-right-double:before {
-	content: "\e68d";
-}
-
-.uicon-red-packet:before {
-	content: "\e691";
-}
-
-.uicon-red-packet-fill:before {
-	content: "\e690";
-}
-
-.uicon-order:before {
-	content: "\e68f";
-}
-
-.uicon-nav-back-arrow:before {
-	content: "\e67f";
-}
-
-.uicon-nav-back:before {
-	content: "\e683";
-}
-
-.uicon-checkbox-mark:before {
-	content: "\e6a8";
-}
-
-.uicon-arrow-up-fill:before {
-	content: "\e6b0";
-}
-
-.uicon-arrow-down-fill:before {
-	content: "\e600";
-}
-
-.uicon-backspace:before {
-	content: "\e67b";
-}
-
-.uicon-android-circle-fill:before {
-	content: "\e67e";
-}
-
-.uicon-android-fill:before {
-	content: "\e67d";
-}
-
-.uicon-question:before {
-	content: "\e715";
-}
-
-.uicon-pause:before {
-	content: "\e8fa";
-}
-
-.uicon-close:before {
-	content: "\e685";
-}
-
-.uicon-volume-up:before {
-	content: "\e633";
-}
-
-.uicon-volume-off:before {
-	content: "\e644";
-}
-
-.uicon-info:before {
-	content: "\e653";
-}
-
-.uicon-error:before {
-	content: "\e6d3";
-}
-
-.uicon-lock-opened-fill:before {
-	content: "\e974";
-}
-
-.uicon-lock-fill:before {
-	content: "\e979";
-}
-
-.uicon-lock:before {
-	content: "\e97a";
-}
-
-.uicon-photo-fill:before {
-	content: "\e98b";
-}
-
-.uicon-photo:before {
-	content: "\e98d";
-}
-
-.uicon-account-fill:before {
-	content: "\e614";
-}
-
-.uicon-minus-people-fill:before {
-	content: "\e615";
-}
-
-.uicon-plus-people-fill:before {
-	content: "\e626";
-}
-
-.uicon-account:before {
-	content: "\e628";
-}
-
-.uicon-thumb-down-fill:before {
-	content: "\e726";
-}
-
-.uicon-thumb-down:before {
-	content: "\e727";
-}
-
-.uicon-thumb-up-fill:before {
-	content: "\e72f";
-}
-
-.uicon-thumb-up:before {
-	content: "\e733";
-}
-
-.uicon-person-delete-fill:before {
-	content: "\e66a";
-}
-
-.uicon-cut:before {
-	content: "\e948";
-}
-
-.uicon-fingerprint:before {
-	content: "\e955";
-}
-
-.uicon-home-fill:before {
-	content: "\e964";
-}
-
-.uicon-home:before {
-	content: "\e965";
-}
-
-.uicon-hourglass-half-fill:before {
-	content: "\e966";
-}
-
-.uicon-hourglass:before {
-	content: "\e967";
-}
-
-.uicon-lock-open:before {
-	content: "\e973";
-}
-
-.uicon-integral-fill:before {
-	content: "\e703";
-}
-
-.uicon-integral:before {
-	content: "\e704";
-}
-
-.uicon-coupon:before {
-	content: "\e8ae";
-}
-
-.uicon-coupon-fill:before {
-	content: "\e8c4";
-}
-
-.uicon-kefu-ermai:before {
-	content: "\e656";
-}
-
-.uicon-scan:before {
-	content: "\e662";
-}
-
-.uicon-rmb:before {
-	content: "\e608";
-}
-
-.uicon-rmb-circle-fill:before {
-	content: "\e657";
-}
-
-.uicon-rmb-circle:before {
-	content: "\e677";
-}
-
-.uicon-gift:before {
-	content: "\e65b";
-}
-
-.uicon-gift-fill:before {
-	content: "\e65c";
-}
-
-.uicon-bookmark-fill:before {
-	content: "\e63b";
-}
-
-.uicon-zhuanfa:before {
-	content: "\e60b";
-}
-
-.uicon-eye-off-outline:before {
-	content: "\e62b";
-}
-
-.uicon-eye-off:before {
-	content: "\e648";
-}
-
-.uicon-pause-circle:before {
-	content: "\e643";
-}
-
-.uicon-play-circle:before {
-	content: "\e647";
-}
-
-.uicon-pause-circle-fill:before {
-	content: "\e654";
-}
-
-.uicon-play-circle-fill:before {
-	content: "\e655";
-}
-
-.uicon-grid:before {
-	content: "\e673";
-}
-
-.uicon-play-right:before {
-	content: "\e610";
-}
-
-.uicon-play-left:before {
-	content: "\e66d";
-}
-
-.uicon-calendar:before {
-	content: "\e66e";
-}
-
-.uicon-rewind-right:before {
-	content: "\e66f";
-}
-
-.uicon-rewind-left:before {
-	content: "\e671";
-}
-
-.uicon-skip-forward-right:before {
-	content: "\e672";
-}
-
-.uicon-skip-back-left:before {
-	content: "\e674";
-}
-
-.uicon-play-left-fill:before {
-	content: "\e675";
-}
-
-.uicon-play-right-fill:before {
-	content: "\e676";
-}
-
-.uicon-grid-fill:before {
-	content: "\e678";
-}
-
-.uicon-rewind-left-fill:before {
-	content: "\e679";
-}
-
-.uicon-rewind-right-fill:before {
-	content: "\e67a";
-}
-
-.uicon-pushpin:before {
-	content: "\e7e3";
-}
-
-.uicon-star:before {
-	content: "\e65f";
-}
-
-.uicon-star-fill:before {
-	content: "\e669";
-}
-
-.uicon-server-fill:before {
-	content: "\e751";
-}
-
-.uicon-server-man:before {
-	content: "\e6bc";
-}
-
-.uicon-edit-pen:before {
-	content: "\e612";
-}
-
-.uicon-edit-pen-fill:before {
-	content: "\e66b";
-}
-
-.uicon-wifi:before {
-	content: "\e667";
-}
-
-.uicon-wifi-off:before {
-	content: "\e668";
-}
-
-.uicon-file-text:before {
-	content: "\e663";
-}
-
-.uicon-file-text-fill:before {
-	content: "\e665";
-}
-
-.uicon-more-dot-fill:before {
-	content: "\e630";
-}
-
-.uicon-minus:before {
-	content: "\e618";
-}
-
-.uicon-minus-circle:before {
-	content: "\e61b";
-}
-
-.uicon-plus:before {
-	content: "\e62d";
-}
-
-.uicon-plus-circle:before {
-	content: "\e62e";
-}
-
-.uicon-minus-circle-fill:before {
-	content: "\e652";
-}
-
-.uicon-plus-circle-fill:before {
-	content: "\e661";
-}
-
-.uicon-email:before {
-	content: "\e611";
-}
-
-.uicon-email-fill:before {
-	content: "\e642";
-}
-
-.uicon-phone:before {
-	content: "\e622";
-}
-
-.uicon-phone-fill:before {
-	content: "\e64f";
-}
-
-.uicon-clock:before {
-	content: "\e60f";
-}
-
-.uicon-car:before {
-	content: "\e60c";
-}
-
-.uicon-car-fill:before {
-	content: "\e636";
-}
-
-.uicon-warning:before {
-	content: "\e694";
-}
-
-.uicon-warning-fill:before {
-	content: "\e64d";
-}
-
-.uicon-search:before {
-	content: "\e62a";
-}
-
-.uicon-baidu-circle-fill:before {
-	content: "\e680";
-}
-
-.uicon-baidu:before {
-	content: "\e681";
-}
-
-.uicon-facebook:before {
-	content: "\e689";
-}
-
-.uicon-facebook-circle-fill:before {
-	content: "\e68a";
-}
-
-.uicon-qzone:before {
-	content: "\e695";
-}
-
-.uicon-qzone-circle-fill:before {
-	content: "\e696";
-}
-
-.uicon-moments-circel-fill:before {
-	content: "\e69a";
-}
-
-.uicon-moments:before {
-	content: "\e69b";
-}
-
-.uicon-qq-circle-fill:before {
-	content: "\e6a0";
-}
-
-.uicon-qq-fill:before {
-	content: "\e6a1";
-}
-
-.uicon-weibo:before {
-	content: "\e6a4";
-}
-
-.uicon-weibo-circle-fill:before {
-	content: "\e6a5";
-}
-
-.uicon-taobao:before {
-	content: "\e6a6";
-}
-
-.uicon-taobao-circle-fill:before {
-	content: "\e6a7";
-}
-
-.uicon-twitter:before {
-	content: "\e6aa";
-}
-
-.uicon-twitter-circle-fill:before {
-	content: "\e6ab";
-}
-
-.uicon-weixin-circle-fill:before {
-	content: "\e6b1";
-}
-
-.uicon-weixin-fill:before {
-	content: "\e6b2";
-}
-
-.uicon-zhifubao-circle-fill:before {
-	content: "\e6b8";
-}
-
-.uicon-zhifubao:before {
-	content: "\e6b9";
-}
-
-.uicon-zhihu:before {
-	content: "\e6ba";
-}
-
-.uicon-zhihu-circle-fill:before {
-	content: "\e709";
-}
-
-.uicon-list:before {
-	content: "\e650";
-}
-
-.uicon-list-dot:before {
-	content: "\e616";
-}
-
-.uicon-setting:before {
-	content: "\e61f";
-}
-
-.uicon-bell:before {
-	content: "\e609";
-}
-
-.uicon-bell-fill:before {
-	content: "\e640";
-}
-
-.uicon-attach:before {
-	content: "\e632";
-}
-
-.uicon-shopping-cart:before {
-	content: "\e621";
-}
-
-.uicon-shopping-cart-fill:before {
-	content: "\e65d";
-}
-
-.uicon-tags:before {
-	content: "\e629";
-}
-
-.uicon-share:before {
-	content: "\e631";
-}
-
-.uicon-question-circle-fill:before {
-	content: "\e666";
-}
-
-.uicon-question-circle:before {
-	content: "\e625";
-}
-
-.uicon-error-circle:before {
-	content: "\e624";
-}
-
-.uicon-checkmark-circle:before {
-	content: "\e63d";
-}
-
-.uicon-close-circle:before {
-	content: "\e63f";
-}
-
-.uicon-info-circle:before {
-	content: "\e660";
-}
-
-.uicon-md-person-add:before {
-	content: "\e6e4";
-}
-
-.uicon-md-person-fill:before {
-	content: "\e6ea";
-}
-
-.uicon-bag-fill:before {
-	content: "\e617";
-}
-
-.uicon-bag:before {
-	content: "\e619";
-}
-
-.uicon-chat-fill:before {
-	content: "\e61e";
-}
-
-.uicon-chat:before {
-	content: "\e620";
-}
-
-.uicon-more-circle:before {
-	content: "\e63e";
-}
-
-.uicon-more-circle-fill:before {
-	content: "\e645";
-}
-
-.uicon-volume:before {
-	content: "\e66c";
-}
-
-.uicon-volume-fill:before {
-	content: "\e670";
-}
-
-.uicon-reload:before {
-	content: "\e788";
-}
-
-.uicon-camera:before {
-	content: "\e7d7";
-}
-
-.uicon-heart:before {
-	content: "\e7df";
-}
-
-.uicon-heart-fill:before {
-	content: "\e851";
-}
-
-.uicon-minus-square-fill:before {
-	content: "\e855";
-}
-
-.uicon-plus-square-fill:before {
-	content: "\e856";
-}
-
-.uicon-pushpin-fill:before {
-	content: "\e86e";
-}
-
-.uicon-camera-fill:before {
-	content: "\e870";
-}
-
-.uicon-setting-fill:before {
-	content: "\e872";
-}
-
-.uicon-google:before {
-	content: "\e87a";
-}
-
-.uicon-ie:before {
-	content: "\e87b";
-}
-
-.uicon-apple-fill:before {
-	content: "\e881";
-}
-
-.uicon-chrome-circle-fill:before {
-	content: "\e885";
-}
-
-.uicon-github-circle-fill:before {
-	content: "\e887";
-}
-
-.uicon-IE-circle-fill:before {
-	content: "\e889";
-}
-
-.uicon-google-circle-fill:before {
-	content: "\e88a";
-}
-
-.uicon-arrow-down:before {
-	content: "\e60d";
-}
-
-.uicon-arrow-left:before {
-	content: "\e60e";
-}
-
-.uicon-map:before {
-	content: "\e61d";
-}
-
-.uicon-man-add-fill:before {
-	content: "\e64c";
-}
-
-.uicon-tags-fill:before {
-	content: "\e651";
-}
-
-.uicon-arrow-leftward:before {
-	content: "\e601";
-}
-
-.uicon-arrow-rightward:before {
-	content: "\e603";
-}
-
-.uicon-arrow-downward:before {
-	content: "\e604";
-}
-
-.uicon-arrow-right:before {
-	content: "\e605";
-}
-
-.uicon-arrow-up:before {
-	content: "\e606";
-}
-
-.uicon-arrow-upward:before {
-	content: "\e607";
-}
-
-.uicon-bookmark:before {
-	content: "\e60a";
-}
-
-.uicon-eye:before {
-	content: "\e613";
-}
-
-.uicon-man-delete:before {
-	content: "\e61a";
-}
-
-.uicon-man-add:before {
-	content: "\e61c";
-}
-
-.uicon-trash:before {
-	content: "\e623";
-}
-
-.uicon-error-circle-fill:before {
-	content: "\e62c";
-}
-
-.uicon-calendar-fill:before {
-	content: "\e634";
-}
-
-.uicon-checkmark-circle-fill:before {
-	content: "\e635";
-}
-
-.uicon-close-circle-fill:before {
-	content: "\e637";
-}
-
-.uicon-clock-fill:before {
-	content: "\e638";
-}
-
-.uicon-checkmark:before {
-	content: "\e63a";
-}
-
-.uicon-download:before {
-	content: "\e63c";
-}
-
-.uicon-eye-fill:before {
-	content: "\e641";
-}
-
-.uicon-mic-off:before {
-	content: "\e649";
-}
-
-.uicon-mic:before {
-	content: "\e64a";
-}
-
-.uicon-info-circle-fill:before {
-	content: "\e64b";
-}
-
-.uicon-map-fill:before {
-	content: "\e64e";
-}
-
-.uicon-trash-fill:before {
-	content: "\e658";
-}
-
-.uicon-volume-off-fill:before {
-	content: "\e659";
-}
-
-.uicon-volume-up-fill:before {
-	content: "\e65a";
-}
-
-.uicon-share-fill:before {
-	content: "\e65e";
-}
diff --git a/uview-ui/index.js b/uview-ui/index.js
deleted file mode 100644
index d38a3bf..0000000
--- a/uview-ui/index.js
+++ /dev/null
@@ -1,141 +0,0 @@
-// 引入全局mixin
-import mixin from './libs/mixin/mixin.js'
-// 引入关于是否mixin集成小程序分享的配置
-// import wxshare from './libs/mixin/mpShare.js'
-// 全局挂载引入http相关请求拦截插件
-import http from './libs/request'
-
-function wranning(str) {
-	// 开发环境进行信息输出,主要是一些报错信息
-	// 这个环境的来由是在程序编写时候,点击hx编辑器运行调试代码的时候,详见:
-	// 	https://uniapp.dcloud.io/frame?id=%e5%bc%80%e5%8f%91%e7%8e%af%e5%a2%83%e5%92%8c%e7%94%9f%e4%ba%a7%e7%8e%af%e5%a2%83
-	if (process.env.NODE_ENV === 'development') {
-		console.warn(str)
-	}
-}
-
-// 尝试判断在根目录的/store中是否有$u.mixin.js,此文件uView默认为需要挂在到全局的vuex的state变量
-// HX2.6.11版本,放到try中,控制台依然会警告,暂时不用此方式,
-// let vuexStore = {};
-// try {
-// 	vuexStore = require("@/store/$u.mixin.js");
-// } catch (e) {
-// 	//TODO handle the exception
-// }
-
-// post类型对象参数转为get类型url参数
-import queryParams from './libs/function/queryParams.js'
-// 路由封装
-import route from './libs/function/route.js'
-// 时间格式化
-import timeFormat from './libs/function/timeFormat.js'
-// 时间戳格式化,返回多久之前
-import timeFrom from './libs/function/timeFrom.js'
-// 颜色渐变相关,colorGradient-颜色渐变,hexToRgb-十六进制颜色转rgb颜色,rgbToHex-rgb转十六进制
-import colorGradient from './libs/function/colorGradient.js'
-// 生成全局唯一guid字符串
-import guid from './libs/function/guid.js'
-// 主题相关颜色,info|success|warning|primary|default|error,此颜色已在uview.scss中定义,但是为js中也能使用,故也定义一份
-import color from './libs/function/color.js'
-// 根据type获取图标名称
-import type2icon from './libs/function/type2icon.js'
-// 打乱数组的顺序
-import randomArray from './libs/function/randomArray.js'
-// 对象和数组的深度克隆
-import deepClone from './libs/function/deepClone.js'
-// 对象深度拷贝
-import deepMerge from './libs/function/deepMerge.js'
-// 添加单位
-import addUnit from './libs/function/addUnit.js'
-
-// 规则检验
-import test from './libs/function/test.js'
-// 随机数
-import random from './libs/function/random.js'
-// 去除空格
-import trim from './libs/function/trim.js'
-// toast提示,对uni.showToast的封装
-import toast from './libs/function/toast.js'
-// 获取父组件参数
-import getParent from './libs/function/getParent.js'
-// 获取整个父组件
-import $parent from './libs/function/$parent.js'
-// 获取sys()和os()工具方法
-// 获取设备信息,挂载到$u的sys()(system的缩写)属性中,
-// 同时把安卓和ios平台的名称"ios"和"android"挂到$u.os()中,方便取用
-import {sys, os} from './libs/function/sys.js'
-// 防抖方法
-import debounce from './libs/function/debounce.js'
-// 节流方法
-import throttle from './libs/function/throttle.js'
-
-
-// 配置信息
-import config from './libs/config/config.js'
-// 各个需要fixed的地方的z-index配置文件
-import zIndex from './libs/config/zIndex.js'
-
-const $u = {
-	queryParams: queryParams,
-	route: route,
-	timeFormat: timeFormat,
-	date: timeFormat, // 另名date
-	timeFrom,
-	colorGradient: colorGradient.colorGradient,
-	colorToRgba: colorGradient.colorToRgba,
-	guid,
-	color,
-	sys,
-	os,
-	type2icon,
-	randomArray,
-	wranning,
-	get: http.get,
-	post: http.post,
-	put: http.put,
-	'delete': http.delete,
-	hexToRgb: colorGradient.hexToRgb,
-	rgbToHex: colorGradient.rgbToHex,
-	test,
-	random,
-	deepClone,
-	deepMerge,
-	getParent,
-	$parent,
-	addUnit,
-	trim,
-	type: ['primary', 'success', 'error', 'warning', 'info'],
-	http,
-	toast,
-	config, // uView配置信息相关,比如版本号
-	zIndex,
-	debounce,
-	throttle,
-}
-
-// $u挂载到uni对象上
-uni.$u = $u
-
-const install = Vue => {
-	Vue.mixin(mixin) 
-	if (Vue.prototype.openShare) {
-		Vue.mixin(mpShare);
-	}
-	// Vue.mixin(vuexStore);
-	// 时间格式化,同时两个名称,date和timeFormat
-	Vue.filter('timeFormat', (timestamp, format) => {
-		return timeFormat(timestamp, format)
-	})
-	Vue.filter('date', (timestamp, format) => {
-		return timeFormat(timestamp, format)
-	})
-	// 将多久以前的方法,注入到全局过滤器
-	Vue.filter('timeFrom', (timestamp, format) => {
-		return timeFrom(timestamp, format)
-	})
-	Vue.prototype.$u = $u
-}
-
-export default {
-	install
-}
\ No newline at end of file
diff --git a/uview-ui/index.scss b/uview-ui/index.scss
deleted file mode 100644
index 84daa72..0000000
--- a/uview-ui/index.scss
+++ /dev/null
@@ -1,23 +0,0 @@
-// 引入公共基础类
-@import "./libs/css/common.scss";
-@import "./libs/css/color.scss";
-
-// 非nvue的样式
-/* #ifndef APP-NVUE */
-@import "./libs/css/style.vue.scss";
-/* #endif */
-
-// nvue的特有样式
-/* #ifdef APP-NVUE */
-@import "./libs/css/style.nvue.scss";
-/* #endif */
-
-// 小程序特有的样式
-/* #ifdef MP */
-@import "./libs/css/style.mp.scss";
-/* #endif */
-
-// H5特有的样式
-/* #ifdef H5 */
-@import "./libs/css/style.h5.scss";
-/* #endif */
\ No newline at end of file
diff --git a/uview-ui/libs/config/config.js b/uview-ui/libs/config/config.js
deleted file mode 100644
index 44925a1..0000000
--- a/uview-ui/libs/config/config.js
+++ /dev/null
@@ -1,15 +0,0 @@
-// 此版本发布于2020-03-17
-let version = '1.8.4';
-
-export default {
-	v: version,
-	version: version,
-	// 主题名称
-	type: [
-		'primary',
-		'success',
-		'info',
-		'error',
-		'warning'
-	]
-}
\ No newline at end of file
diff --git a/uview-ui/libs/config/zIndex.js b/uview-ui/libs/config/zIndex.js
deleted file mode 100644
index d60e5bd..0000000
--- a/uview-ui/libs/config/zIndex.js
+++ /dev/null
@@ -1,20 +0,0 @@
-// uniapp在H5中各API的z-index值如下:
-/**
- * actionsheet: 999
- * modal: 999
- * navigate: 998
- * tabbar: 998
- * toast: 999
- */
-
-export default {
-	toast: 10090,
-	noNetwork: 10080,
-	// popup包含popup,actionsheet,keyboard,picker的值
-	popup: 10075,
-	mask: 10070,
-	navbar: 980,
-	topTips: 975,
-	sticky: 970,
-	indexListSticky: 965,
-}
\ No newline at end of file
diff --git a/uview-ui/libs/css/color.scss b/uview-ui/libs/css/color.scss
deleted file mode 100644
index 279bc40..0000000
--- a/uview-ui/libs/css/color.scss
+++ /dev/null
@@ -1,155 +0,0 @@
-.u-type-primary-light {
-	color: $u-type-primary-light;
-}
-
-.u-type-warning-light {
-	color: $u-type-warning-light;
-}
-
-.u-type-success-light {
-	color: $u-type-success-light;
-}
-
-.u-type-error-light {
-	color: $u-type-error-light;
-}
-
-.u-type-info-light {
-	color: $u-type-info-light;
-}
-
-.u-type-primary-light-bg {
-	background-color: $u-type-primary-light;
-}
-
-.u-type-warning-light-bg {
-	background-color: $u-type-warning-light;
-}
-
-.u-type-success-light-bg {
-	background-color: $u-type-success-light;
-}
-
-.u-type-error-light-bg {
-	background-color: $u-type-error-light;
-}
-
-.u-type-info-light-bg {
-	background-color: $u-type-info-light;
-}
-
-.u-type-primary-dark {
-	color: $u-type-primary-dark;
-}
-
-.u-type-warning-dark {
-	color: $u-type-warning-dark;
-}
-
-.u-type-success-dark {
-	color: $u-type-success-dark;
-}
-
-.u-type-error-dark {
-	color: $u-type-error-dark;
-}
-
-.u-type-info-dark {
-	color: $u-type-info-dark;
-}
-
-.u-type-primary-dark-bg {
-	background-color: $u-type-primary-dark;
-}
-
-.u-type-warning-dark-bg {
-	background-color: $u-type-warning-dark;
-}
-
-.u-type-success-dark-bg {
-	background-color: $u-type-success-dark;
-}
-
-.u-type-error-dark-bg {
-	background-color: $u-type-error-dark;
-}
-
-.u-type-info-dark-bg {
-	background-color: $u-type-info-dark;
-}
-
-.u-type-primary-disabled {
-	color: $u-type-primary-disabled;
-}
-
-.u-type-warning-disabled {
-	color: $u-type-warning-disabled;
-}
-
-.u-type-success-disabled {
-	color: $u-type-success-disabled;
-}
-
-.u-type-error-disabled {
-	color: $u-type-error-disabled;
-}
-
-.u-type-info-disabled {
-	color: $u-type-info-disabled;
-}
-
-.u-type-primary {
-	color: $u-type-primary;
-}
-
-.u-type-warning {
-	color: $u-type-warning;
-}
-
-.u-type-success {
-	color: $u-type-success;
-}
-
-.u-type-error {
-	color: $u-type-error;
-}
-
-.u-type-info {
-	color: $u-type-info;
-}
-
-.u-type-primary-bg {
-	background-color: $u-type-primary;
-}
-
-.u-type-warning-bg {
-	background-color: $u-type-warning;
-}
-
-.u-type-success-bg {
-	background-color: $u-type-success;
-}
-
-.u-type-error-bg {
-	background-color: $u-type-error;
-}
-
-.u-type-info-bg {
-	background-color: $u-type-info;
-}
-
-.u-main-color {
-	color: $u-main-color;
-}
-
-.u-content-color {
-	color: $u-content-color;
-}
-
-.u-tips-color {
-	color: $u-tips-color;
-}
-
-.u-light-color {
-	color: $u-light-color;
-}
diff --git a/uview-ui/libs/css/common.scss b/uview-ui/libs/css/common.scss
deleted file mode 100644
index 29eb7f4..0000000
--- a/uview-ui/libs/css/common.scss
+++ /dev/null
@@ -1,176 +0,0 @@
-.u-relative,
-.u-rela {
-	position: relative;
-}
-
-.u-absolute,
-.u-abso {
-	position: absolute;
-}
-
-// nvue不能用标签命名样式,不能放在微信组件中,否则微信开发工具会报警告,无法使用标签名当做选择器
-/* #ifndef APP-NVUE */
-image {
-	display: inline-block;
-}
-
-// 在weex,也即nvue中,所有元素默认为border-box
-view,
-text {
-	box-sizing: border-box;
-}
-/* #endif */
-
-.u-font-xs {
-	font-size: 22rpx;
-}
-
-.u-font-sm {
-	font-size: 26rpx;
-}
-
-.u-font-md {
-	font-size: 28rpx;
-}
-
-.u-font-lg {
-	font-size: 30rpx;
-}
-
-.u-font-xl {
-	font-size: 34rpx;
-}
-
-.u-flex {
-	/* #ifndef APP-NVUE */
-	display: flex;
-	/* #endif */
-	flex-direction: row;
-	align-items: center;
-}
-
-.u-flex-wrap {
-	flex-wrap: wrap;
-}
-
-.u-flex-nowrap {
-	flex-wrap: nowrap;
-}
-
-.u-col-center {
-	align-items: center;
-}
-
-.u-col-top {
-	align-items: flex-start;
-}
-
-.u-col-bottom {
-	align-items: flex-end;
-}
-
-.u-row-center {
-	justify-content: center;
-}
-
-.u-row-left {
-	justify-content: flex-start;
-}
-
-.u-row-right {
-	justify-content: flex-end;
-}
-
-.u-row-between {
-	justify-content: space-between;
-}
-
-.u-row-around {
-	justify-content: space-around;
-}
-
-.u-text-left {
-	text-align: left;
-}
-
-.u-text-center {
-	text-align: center;
-}
-
-.u-text-right {
-	text-align: right;
-}
-
-.u-flex-col {
-	/* #ifndef APP-NVUE */
-	display: flex;
-	/* #endif */
-	flex-direction: column;
-}
-
-// 定义flex等分
-@for $i from 0 through 12 {
-	.u-flex-#{$i} {
-		flex: $i;
-	}
-}
-
-// 定义字体(px)单位,小于20都为px单位字体
-@for $i from 9 to 20 {
-	.u-font-#{$i} {
-		font-size: $i + px;
-	}
-}
-
-// 定义字体(rpx)单位,大于或等于20的都为rpx单位字体
-@for $i from 20 through 40 {
-	.u-font-#{$i} {
-		font-size: $i + rpx;
-	}
-}
-
-// 定义内外边距,历遍1-80
-@for $i from 0 through 80 {
-	// 只要双数和能被5除尽的数
-	@if $i % 2 == 0 or $i % 5 == 0 {
-		// 得出:u-margin-30或者u-m-30
-		.u-margin-#{$i}, .u-m-#{$i} {
-			margin: $i + rpx!important;
-		}
-		
-		// 得出:u-padding-30或者u-p-30
-		.u-padding-#{$i}, .u-p-#{$i} {
-			padding: $i + rpx!important;
-		}
-		
-		@each $short, $long in l left, t top, r right, b bottom {
-			// 缩写版,结果如: u-m-l-30
-			// 定义外边距
-			.u-m-#{$short}-#{$i} {
-				margin-#{$long}: $i + rpx!important;
-			}
-			
-			// 定义内边距
-			.u-p-#{$short}-#{$i} {
-				padding-#{$long}: $i + rpx!important;
-			}
-			
-			// 完整版,结果如:u-margin-left-30
-			// 定义外边距
-			.u-margin-#{$long}-#{$i} {
-				margin-#{$long}: $i + rpx!important;
-			}
-			
-			// 定义内边距
-			.u-padding-#{$long}-#{$i} {
-				padding-#{$long}: $i + rpx!important;
-			}
-		}
-	}
-}
-
-// 重置nvue的默认关于flex的样式
-.u-reset-nvue {
-	flex-direction: row;
-	align-items: center;
-}
\ No newline at end of file
diff --git a/uview-ui/libs/css/style.components.scss b/uview-ui/libs/css/style.components.scss
deleted file mode 100644
index 6835876..0000000
--- a/uview-ui/libs/css/style.components.scss
+++ /dev/null
@@ -1,7 +0,0 @@
-// 定义混入指令,用于在非nvue环境下的flex定义,因为nvue没有display属性,会报错
-@mixin vue-flex($direction: row) {
-	/* #ifndef APP-NVUE */
-	display: flex;
-	flex-direction: $direction;
-	/* #endif */
-}
\ No newline at end of file
diff --git a/uview-ui/libs/css/style.h5.scss b/uview-ui/libs/css/style.h5.scss
deleted file mode 100644
index 62839eb..0000000
--- a/uview-ui/libs/css/style.h5.scss
+++ /dev/null
@@ -1,8 +0,0 @@
-/* H5的时候,隐藏滚动条 */
-::-webkit-scrollbar {
-	display: none;  
-	width: 0 !important;  
-	height: 0 !important;  
-	-webkit-appearance: none;  
-	background: transparent;  
-}
diff --git a/uview-ui/libs/css/style.mp.scss b/uview-ui/libs/css/style.mp.scss
deleted file mode 100644
index ca1d3e0..0000000
--- a/uview-ui/libs/css/style.mp.scss
+++ /dev/null
@@ -1,72 +0,0 @@
-/* start--微信小程序编译后页面有组件名的元素,特别处理--start */
-/* #ifdef MP-WEIXIN || MP-QQ */
-u-td, u-th {
-	flex: 1;
-	align-self: stretch;
-}
-
-.u-td {
-	height: 100%;
-}
-
-u-icon {
-	display: inline-flex;
-	align-items: center;
-}
-
-// 各家小程序宫格组件外层设置为100%,避免受到父元素display: flex;的影响
-u-grid {
-	width: 100%;
-	flex: 0 0 100%;
-}
-
-// 避免小程序线条组件因为父组件display: flex;而失效
-u-line {
-	flex: 1;
-}
-
-u-switch {
-	display: inline-flex;
-	align-items: center;
-}
-
-u-dropdown {
-	flex: 1;
-}
-/* #endif */
-/* end-微信小程序编译后页面有组件名的元素,特别处理--end */
-
-
-/* #ifdef MP-QQ || MP-TOUTIAO */
-// 需要做这一切额外的兼容,都是因为TX的无能
-u-icon {
-	line-height: 0;
-}
-/* #endif */
-
-/* start--头条小程序编译后页面有组件名的元素,特别处理--start */
-// 由于头条小程序不支持直接组件名形式写样式,目前只能在写组件的时候给组件加上对应的类名
-/* #ifdef MP-TOUTIAO */
-.u-td, .u-th, .u-tr {
-	flex: 1;
-	align-self: stretch;
-}
-
-.u-row, .u-col {
-	flex: 1;
-	align-self: stretch;
-}
-
-// 避免小程序线条组件因为父组件display: flex;而失效
-.u-line {
-	flex: 1;
-}
-
-.u-dropdown {
-	flex: 1;
-}
-/* #endif */
-/* end-头条小程序编译后页面有组件名的元素,特别处理--end */
-
-
-
diff --git a/uview-ui/libs/css/style.nvue.scss b/uview-ui/libs/css/style.nvue.scss
deleted file mode 100644
index 4a6192a..0000000
--- a/uview-ui/libs/css/style.nvue.scss
+++ /dev/null
@@ -1,3 +0,0 @@
-.nvue {
-	font-size: 24rpx;
-}
\ No newline at end of file
diff --git a/uview-ui/libs/css/style.vue.scss b/uview-ui/libs/css/style.vue.scss
deleted file mode 100644
index 1ab3707..0000000
--- a/uview-ui/libs/css/style.vue.scss
+++ /dev/null
@@ -1,175 +0,0 @@
-page {
-	color: $u-main-color;
-	font-size: 28rpx;
-}
-
-/* start--去除webkit的默认样式--start */
-.u-fix-ios-appearance {
-	-webkit-appearance:none;
-}
-/* end--去除webkit的默认样式--end */
-
-/* start--icon图标外层套一个view,让其达到更好的垂直居中的效果--start */
-.u-icon-wrap {
-	display: flex;
-	align-items: center;
-}
-/* end-icon图标外层套一个view,让其达到更好的垂直居中的效果--end */
-
-/* start--iPhoneX底部安全区定义--start */
-.safe-area-inset-bottom {
-  padding-bottom: 0;  
-  padding-bottom: constant(safe-area-inset-bottom);  
-  padding-bottom: env(safe-area-inset-bottom);  
-} 
-/* end-iPhoneX底部安全区定义--end */
-
-/* start--各种hover点击反馈相关的类名-start */
-.u-hover-class {
-	// background-color: #f7f8f9!important;
-	opacity: 0.6;
-}
-
-.u-cell-hover {
-	background-color: #f7f8f9!important;
-}
-/* end--各种hover点击反馈相关的类名--end */
-
-/* start--文本行数限制--start */
-.u-line-1 {
-    overflow: hidden;
-    white-space: nowrap;
-    text-overflow: ellipsis;
-}
-
-.u-line-2 {
-    -webkit-line-clamp: 2;
-}
-
-.u-line-3 {
-    -webkit-line-clamp: 3;
-}
-
-.u-line-4 {
-    -webkit-line-clamp: 4;
-}
-
-.u-line-5 {
-    -webkit-line-clamp: 5;
-}
-
-.u-line-2, .u-line-3, .u-line-4, .u-line-5 {
-    overflow: hidden;
-	word-break: break-all;
-    text-overflow: ellipsis; 
-    display: -webkit-box; // 弹性伸缩盒
-    -webkit-box-orient: vertical; // 设置伸缩盒子元素排列方式
-}
-
-/* end--文本行数限制--end */
-
-
-/* start--Retina 屏幕下的 1px 边框--start */
-.u-border,
-.u-border-bottom,
-.u-border-left,
-.u-border-right,
-.u-border-top,
-.u-border-top-bottom {
-	position: relative
-}
-
-.u-border-bottom:after,
-.u-border-left:after,
-.u-border-right:after,
-.u-border-top-bottom:after,
-.u-border-top:after,
-.u-border:after {
-	/* #ifndef APP-NVUE */
-	content: ' ';
-	/* #endif */
-	position: absolute;
-	left: 0;
-	top: 0;
-	pointer-events: none;
-	box-sizing: border-box;
-	-webkit-transform-origin: 0 0;
-	transform-origin: 0 0;
-	// 多加0.1%,能解决有时候边框缺失的问题
-	width: 199.8%;
-	height: 199.7%;
-	transform: scale(0.5, 0.5);
-	border: 0 solid $u-border-color;
-	z-index: 2;
-}
-
-.u-border-top:after {
-	border-top-width: 1px
-}
-
-.u-border-left:after {
-	border-left-width: 1px
-}
-
-.u-border-right:after {
-	border-right-width: 1px
-}
-
-.u-border-bottom:after {
-	border-bottom-width: 1px
-}
-
-.u-border-top-bottom:after {
-	border-width: 1px 0
-}
-
-.u-border:after {
-	border-width: 1px
-}
-/* end--Retina 屏幕下的 1px 边框--end */
-
-
-/* start--clearfix--start */
-.u-clearfix:after,
-.clearfix:after {
-	/* #ifndef APP-NVUE */
-	content: '';
-	/* #endif */
-	display: table;
-	clear: both
-}
-/* end--clearfix--end */
-
-/* start--高斯模糊tabbar底部处理--start */
-.u-blur-effect-inset {
-	width: 750rpx;  
-	height: var(--window-bottom);   
-	background-color: #FFFFFF;  
-}
-/* end--高斯模糊tabbar底部处理--end */
-
-/* start--提升H5端uni.toast()的层级,避免被uView的modal等遮盖--start */
-/* #ifdef H5 */
-uni-toast {
-    z-index: 10090;
-}
-uni-toast .uni-toast {
-   z-index: 10090;
-}
-/* #endif */
-/* end--提升H5端uni.toast()的层级,避免被uView的modal等遮盖--end */
-
-/* start--去除button的所有默认样式--start */
-.u-reset-button {
-	padding: 0;
-	font-size: inherit;
-	line-height: inherit;
-	background-color: transparent;
-	color: inherit;
-}
-
-.u-reset-button::after {
-   border: none;
-}
-/* end--去除button的所有默认样式--end */
-
diff --git a/uview-ui/libs/function/$parent.js b/uview-ui/libs/function/$parent.js
deleted file mode 100644
index 80515c4..0000000
--- a/uview-ui/libs/function/$parent.js
+++ /dev/null
@@ -1,18 +0,0 @@
-// 获取父组件的参数,因为支付宝小程序不支持provide/inject的写法
-// this.$parent在非H5中,可以准确获取到父组件,但是在H5中,需要多次this.$parent.$parent.xxx
-// 这里默认值等于undefined有它的含义,因为最顶层元素(组件)的$parent就是undefined,意味着不传name
-// 值(默认为undefined),就是查找最顶层的$parent
-export default function $parent(name = undefined) {
-	let parent = this.$parent;
-	// 通过while历遍,这里主要是为了H5需要多层解析的问题
-	while (parent) {
-		// 父组件
-		if (parent.$options && parent.$options.name !== name) {
-			// 如果组件的name不相等,继续上一级寻找
-			parent = parent.$parent;
-		} else {
-			return parent;
-		}
-	}
-	return false;
-}
\ No newline at end of file
diff --git a/uview-ui/libs/function/addUnit.js b/uview-ui/libs/function/addUnit.js
deleted file mode 100644
index 247fae2..0000000
--- a/uview-ui/libs/function/addUnit.js
+++ /dev/null
@@ -1,8 +0,0 @@
-import validation from './test.js';
-
-// 添加单位,如果有rpx,%,px等单位结尾或者值为auto,直接返回,否则加上rpx单位结尾
-export default function addUnit(value = 'auto', unit = 'rpx') {
-    value = String(value);
-	// 用uView内置验证规则中的number判断是否为数值
-    return validation.number(value) ? `${value}${unit}` : value;
-}
\ No newline at end of file
diff --git a/uview-ui/libs/function/bem.js b/uview-ui/libs/function/bem.js
deleted file mode 100644
index 05d1a36..0000000
--- a/uview-ui/libs/function/bem.js
+++ /dev/null
@@ -1,5 +0,0 @@
-function bem(name, conf) {
-  
-}
-
-module.exports.bem = bem;
diff --git a/uview-ui/libs/function/color.js b/uview-ui/libs/function/color.js
deleted file mode 100644
index dafb8c1..0000000
--- a/uview-ui/libs/function/color.js
+++ /dev/null
@@ -1,37 +0,0 @@
-// 为了让用户能够自定义主题,会逐步弃用此文件,各颜色通过css提供
-// 为了给某些特殊场景使用和向后兼容,无需删除此文件(2020-06-20)
-let color = {
-	primary: "#2979ff",
-	primaryDark: "#2b85e4",
-	primaryDisabled: "#a0cfff",
-	primaryLight: "#ecf5ff",
-	bgColor: "#f3f4f6",
-	
-	info: "#909399",
-	infoDark: "#82848a",
-	infoDisabled: "#c8c9cc",
-	infoLight: "#f4f4f5",
-	
-	warning: "#ff9900",
-	warningDark: "#f29100",
-	warningDisabled: "#fcbd71",
-	warningLight: "#fdf6ec",
-	
-	error: "#fa3534",
-	errorDark: "#dd6161",
-	errorDisabled: "#fab6b6",
-	errorLight: "#fef0f0",
-	
-	success: "#19be6b",
-	successDark: "#18b566",
-	successDisabled: "#71d5a1",
-	successLight: "#dbf1e1",
-	
-	mainColor: "#303133",
-	contentColor: "#606266",
-	tipsColor: "#909399",
-	lightColor: "#c0c4cc",
-	borderColor: "#e4e7ed"
-}
-
-export default color;
\ No newline at end of file
diff --git a/uview-ui/libs/function/colorGradient.js b/uview-ui/libs/function/colorGradient.js
deleted file mode 100644
index eca30a2..0000000
--- a/uview-ui/libs/function/colorGradient.js
+++ /dev/null
@@ -1,134 +0,0 @@
-/**
- * 求两个颜色之间的渐变值
- * @param {string} startColor 开始的颜色
- * @param {string} endColor 结束的颜色
- * @param {number} step 颜色等分的份额
- * */
-function colorGradient(startColor = 'rgb(0, 0, 0)', endColor = 'rgb(255, 255, 255)', step = 10) {
-	let startRGB = hexToRgb(startColor, false); //转换为rgb数组模式
-	let startR = startRGB[0];
-	let startG = startRGB[1];
-	let startB = startRGB[2];
-
-	let endRGB = hexToRgb(endColor, false);
-	let endR = endRGB[0];
-	let endG = endRGB[1];
-	let endB = endRGB[2];
-
-	let sR = (endR - startR) / step; //总差值
-	let sG = (endG - startG) / step;
-	let sB = (endB - startB) / step;
-	let colorArr = [];
-	for (let i = 0; i < step; i++) {
-		//计算每一步的hex值 
-		let hex = rgbToHex('rgb(' + Math.round((sR * i + startR)) + ',' + Math.round((sG * i + startG)) + ',' + Math.round((sB *
-			i + startB)) + ')');
-		colorArr.push(hex);
-	}
-	return colorArr;
-}
-
-// 将hex表示方式转换为rgb表示方式(这里返回rgb数组模式)
-function hexToRgb(sColor, str = true) {
-	let reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/;
-	sColor = sColor.toLowerCase();
-	if (sColor && reg.test(sColor)) {
-		if (sColor.length === 4) {
-			let sColorNew = "#";
-			for (let i = 1; i < 4; i += 1) {
-				sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1));
-			}
-			sColor = sColorNew;
-		}
-		//处理六位的颜色值
-		let sColorChange = [];
-		for (let i = 1; i < 7; i += 2) {
-			sColorChange.push(parseInt("0x" + sColor.slice(i, i + 2)));
-		}
-		if(!str) {
-			return sColorChange;
-		} else {
-			return `rgb(${sColorChange[0]},${sColorChange[1]},${sColorChange[2]})`;
-		}
-	} else if (/^(rgb|RGB)/.test(sColor)) {
-		let arr = sColor.replace(/(?:\(|\)|rgb|RGB)*/g, "").split(",")
-		return arr.map(val => Number(val));
-	} else {
-		return sColor;
-	}
-};
-
-// 将rgb表示方式转换为hex表示方式
-function rgbToHex(rgb) {
-	let _this = rgb;
-	let reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/;
-	if (/^(rgb|RGB)/.test(_this)) {
-		let aColor = _this.replace(/(?:\(|\)|rgb|RGB)*/g, "").split(",");
-		let strHex = "#";
-		for (let i = 0; i < aColor.length; i++) {
-			let hex = Number(aColor[i]).toString(16);
-			hex = String(hex).length == 1 ? 0 + '' + hex : hex; // 保证每个rgb的值为2位
-			if (hex === "0") {
-				hex += hex;
-			}
-			strHex += hex;
-		}
-		if (strHex.length !== 7) {
-			strHex = _this;
-		}
-		return strHex;
-	} else if (reg.test(_this)) {
-		let aNum = _this.replace(/#/, "").split("");
-		if (aNum.length === 6) {
-			return _this;
-		} else if (aNum.length === 3) {
-			let numHex = "#";
-			for (let i = 0; i < aNum.length; i += 1) {
-				numHex += (aNum[i] + aNum[i]);
-			}
-			return numHex;
-		}
-	} else {
-		return _this;
-	}
-}
-
-
-/**
-* JS颜色十六进制转换为rgb或rgba,返回的格式为 rgba(255,255,255,0.5)字符串
-* sHex为传入的十六进制的色值
-* alpha为rgba的透明度
-*/
-function colorToRgba(color, alpha = 0.3) {
-	color = rgbToHex(color)
-	// 十六进制颜色值的正则表达式
-	var reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/
-	/* 16进制颜色转为RGB格式 */
-	let sColor = color.toLowerCase()
-	if (sColor && reg.test(sColor)) {
-		if (sColor.length === 4) {
-			var sColorNew = '#'
-			for (let i = 1; i < 4; i += 1) {
-				sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1))
-			}
-			sColor = sColorNew
-		}
-		// 处理六位的颜色值
-		var sColorChange = []
-		for (let i = 1; i < 7; i += 2) {
-			sColorChange.push(parseInt('0x' + sColor.slice(i, i + 2)))
-		}
-		// return sColorChange.join(',')
-		return 'rgba(' + sColorChange.join(',') + ',' + alpha + ')'
-	} 
-	else {
-		return sColor
-	}
-}
-
-export default {
-	colorGradient,
-	hexToRgb,
-	rgbToHex,
-	colorToRgba
-}
\ No newline at end of file
diff --git a/uview-ui/libs/function/debounce.js b/uview-ui/libs/function/debounce.js
deleted file mode 100644
index 4f1027b..0000000
--- a/uview-ui/libs/function/debounce.js
+++ /dev/null
@@ -1,29 +0,0 @@
-let timeout = null;
-
-/**
- * 防抖原理:一定时间内,只有最后一次操作,再过wait毫秒后才执行函数
- * 
- * @param {Function} func 要执行的回调函数 
- * @param {Number} wait 延时的时间
- * @param {Boolean} immediate 是否立即执行 
- * @return null
- */
-function debounce(func, wait = 500, immediate = false) {
-	// 清除定时器
-	if (timeout !== null) clearTimeout(timeout);
-	// 立即执行,此类情况一般用不到
-	if (immediate) {
-		var callNow = !timeout;
-		timeout = setTimeout(function() {
-			timeout = null;
-		}, wait);
-		if (callNow) typeof func === 'function' && func();
-	} else {
-		// 设置定时器,当最后一次操作后,timeout不会再被清除,所以在延时wait毫秒后执行func回调方法
-		timeout = setTimeout(function() {
-			typeof func === 'function' && func();
-		}, wait);
-	}
-}
-
-export default debounce
diff --git a/uview-ui/libs/function/deepClone.js b/uview-ui/libs/function/deepClone.js
deleted file mode 100644
index 3db999a..0000000
--- a/uview-ui/libs/function/deepClone.js
+++ /dev/null
@@ -1,23 +0,0 @@
-// 判断arr是否为一个数组,返回一个bool值
-function isArray (arr) {
-    return Object.prototype.toString.call(arr) === '[object Array]';
-}
-
-// 深度克隆
-function deepClone (obj) {
-	// 对常见的“非”值,直接返回原来值
-	if([null, undefined, NaN, false].includes(obj)) return obj;
-    if(typeof obj !== "object" && typeof obj !== 'function') {
-		//原始类型直接返回
-        return obj;
-    }
-    var o = isArray(obj) ? [] : {};
-    for(let i in obj) {
-        if(obj.hasOwnProperty(i)){
-            o[i] = typeof obj[i] === "object" ? deepClone(obj[i]) : obj[i];
-        }
-    }
-    return o;
-}
-
-export default deepClone;
diff --git a/uview-ui/libs/function/deepMerge.js b/uview-ui/libs/function/deepMerge.js
deleted file mode 100644
index 81d2d18..0000000
--- a/uview-ui/libs/function/deepMerge.js
+++ /dev/null
@@ -1,30 +0,0 @@
-import deepClone from "./deepClone";
-
-// JS对象深度合并
-function deepMerge(target = {}, source = {}) {
-	target = deepClone(target);
-	if (typeof target !== 'object' || typeof source !== 'object') return false;
-	for (var prop in source) {
-		if (!source.hasOwnProperty(prop)) continue;
-		if (prop in target) {
-			if (typeof target[prop] !== 'object') {
-				target[prop] = source[prop];
-			} else {
-				if (typeof source[prop] !== 'object') {
-					target[prop] = source[prop];
-				} else {
-					if (target[prop].concat && source[prop].concat) {
-						target[prop] = target[prop].concat(source[prop]);
-					} else {
-						target[prop] = deepMerge(target[prop], source[prop]);
-					}
-				}
-			}
-		} else {
-			target[prop] = source[prop];
-		}
-	}
-	return target;
-}
-
-export default deepMerge;
\ No newline at end of file
diff --git a/uview-ui/libs/function/getParent.js b/uview-ui/libs/function/getParent.js
deleted file mode 100644
index 9cb45c4..0000000
--- a/uview-ui/libs/function/getParent.js
+++ /dev/null
@@ -1,47 +0,0 @@
-// 获取父组件的参数,因为支付宝小程序不支持provide/inject的写法
-// this.$parent在非H5中,可以准确获取到父组件,但是在H5中,需要多次this.$parent.$parent.xxx
-export default function getParent(name, keys) {
-	let parent = this.$parent;
-	// 通过while历遍,这里主要是为了H5需要多层解析的问题
-	while (parent) {
-		// 父组件
-		if (parent.$options.name !== name) {
-			// 如果组件的name不相等,继续上一级寻找
-			parent = parent.$parent;
-		} else {
-			let data = {};
-			// 判断keys是否数组,如果传过来的是一个数组,那么直接使用数组元素值当做键值去父组件寻找
-			if(Array.isArray(keys)) {
-				keys.map(val => {
-					data[val] = parent[val] ? parent[val] : '';
-				})
-			} else {
-				// 历遍传过来的对象参数
-				for(let i in keys) {
-					// 如果子组件有此值则用,无此值则用父组件的值
-					// 判断是否空数组,如果是,则用父组件的值,否则用子组件的值
-					if(Array.isArray(keys[i])) {
-						if(keys[i].length) {
-							data[i] = keys[i];
-						} else {
-							data[i] = parent[i];
-						}
-					} else if(keys[i].constructor === Object) {
-						// 判断是否对象,如果是对象,且有属性,那么使用子组件的值,否则使用父组件的值
-						if(Object.keys(keys[i]).length) {
-							data[i] = keys[i];
-						} else {
-							data[i] = parent[i];
-						}
-					} else {
-						// 只要子组件有传值,即使是false值,也是“传值”了,也需要覆盖父组件的同名参数
-						data[i] = (keys[i] || keys[i] === false) ? keys[i] : parent[i];
-					}
-				}
-			}
-			return data;
-		}
-	}
-
-	return {};
-}
\ No newline at end of file
diff --git a/uview-ui/libs/function/guid.js b/uview-ui/libs/function/guid.js
deleted file mode 100644
index 8497664..0000000
--- a/uview-ui/libs/function/guid.js
+++ /dev/null
@@ -1,41 +0,0 @@
-/**
- * 本算法来源于简书开源代码,详见:https://www.jianshu.com/p/fdbf293d0a85
- * 全局唯一标识符(uuid,Globally Unique Identifier),也称作 uuid(Universally Unique IDentifier) 
- * 一般用于多个组件之间,给它一个唯一的标识符,或者v-for循环的时候,如果使用数组的index可能会导致更新列表出现问题
- * 最可能的情况是左滑删除item或者对某条信息流"不喜欢"并去掉它的时候,会导致组件内的数据可能出现错乱
- * v-for的时候,推荐使用后端返回的id而不是循环的index
- * @param {Number} len uuid的长度
- * @param {Boolean} firstU 将返回的首字母置为"u"
- * @param {Nubmer} radix 生成uuid的基数(意味着返回的字符串都是这个基数),2-二进制,8-八进制,10-十进制,16-十六进制
- */
-function guid(len = 32, firstU = true, radix = null) {
-	let chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');
-	let uuid = [];
-	radix = radix || chars.length;
-
-	if (len) {
-		// 如果指定uuid长度,只是取随机的字符,0|x为位运算,能去掉x的小数位,返回整数位
-		for (let i = 0; i < len; i++) uuid[i] = chars[0 | Math.random() * radix];
-	} else {
-		let r;
-		// rfc4122标准要求返回的uuid中,某些位为固定的字符
-		uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-';
-		uuid[14] = '4';
-
-		for (let i = 0; i < 36; i++) {
-			if (!uuid[i]) {
-				r = 0 | Math.random() * 16;
-				uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r];
-			}
-		}
-	}
-	// 移除第一个字符,并用u替代,因为第一个字符为数值时,该guuid不能用作id或者class
-	if (firstU) {
-		uuid.shift();
-		return 'u' + uuid.join('');
-	} else {
-		return uuid.join('');
-	}
-}
-
-export default guid;
diff --git a/uview-ui/libs/function/md5.js b/uview-ui/libs/function/md5.js
deleted file mode 100644
index 8d541a1..0000000
--- a/uview-ui/libs/function/md5.js
+++ /dev/null
@@ -1,385 +0,0 @@
-/*
- * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
- * Digest Algorithm, as defined in RFC 1321.
- * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009
- * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
- * Distributed under the BSD License
- * See http://pajhome.org.uk/crypt/md5 for more info.
- */
-
-/*
- * Configurable variables. You may need to tweak these to be compatible with
- * the server-side, but the defaults work in most cases.
- */
-var hexcase = 0;   /* hex output format. 0 - lowercase; 1 - uppercase        */
-var b64pad  = "";  /* base-64 pad character. "=" for strict RFC compliance   */
-
-/*
- * These are the functions you'll usually want to call
- * They take string arguments and return either hex or base-64 encoded strings
- */
-function hex_md5(s)    { return rstr2hex(rstr_md5(str2rstr_utf8(s))); }
-function b64_md5(s)    { return rstr2b64(rstr_md5(str2rstr_utf8(s))); }
-function any_md5(s, e) { return rstr2any(rstr_md5(str2rstr_utf8(s)), e); }
-function hex_hmac_md5(k, d)
-  { return rstr2hex(rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d))); }
-function b64_hmac_md5(k, d)
-  { return rstr2b64(rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d))); }
-function any_hmac_md5(k, d, e)
-  { return rstr2any(rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d)), e); }
-
-/*
- * Perform a simple self-test to see if the VM is working
- */
-function md5_vm_test()
-{
-  return hex_md5("abc").toLowerCase() == "900150983cd24fb0d6963f7d28e17f72";
-}
-
-/*
- * Calculate the MD5 of a raw string
- */
-function rstr_md5(s)
-{
-  return binl2rstr(binl_md5(rstr2binl(s), s.length * 8));
-}
-
-/*
- * Calculate the HMAC-MD5, of a key and some data (raw strings)
- */
-function rstr_hmac_md5(key, data)
-{
-  var bkey = rstr2binl(key);
-  if(bkey.length > 16) bkey = binl_md5(bkey, key.length * 8);
-
-  var ipad = Array(16), opad = Array(16);
-  for(var i = 0; i < 16; i++)
-  {
-    ipad[i] = bkey[i] ^ 0x36363636;
-    opad[i] = bkey[i] ^ 0x5C5C5C5C;
-  }
-
-  var hash = binl_md5(ipad.concat(rstr2binl(data)), 512 + data.length * 8);
-  return binl2rstr(binl_md5(opad.concat(hash), 512 + 128));
-}
-
-/*
- * Convert a raw string to a hex string
- */
-function rstr2hex(input)
-{
-  try { hexcase } catch(e) { hexcase=0; }
-  var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
-  var output = "";
-  var x;
-  for(var i = 0; i < input.length; i++)
-  {
-    x = input.charCodeAt(i);
-    output += hex_tab.charAt((x >>> 4) & 0x0F)
-           +  hex_tab.charAt( x        & 0x0F);
-  }
-  return output;
-}
-
-/*
- * Convert a raw string to a base-64 string
- */
-function rstr2b64(input)
-{
-  try { b64pad } catch(e) { b64pad=''; }
-  var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
-  var output = "";
-  var len = input.length;
-  for(var i = 0; i < len; i += 3)
-  {
-    var triplet = (input.charCodeAt(i) << 16)
-                | (i + 1 < len ? input.charCodeAt(i+1) << 8 : 0)
-                | (i + 2 < len ? input.charCodeAt(i+2)      : 0);
-    for(var j = 0; j < 4; j++)
-    {
-      if(i * 8 + j * 6 > input.length * 8) output += b64pad;
-      else output += tab.charAt((triplet >>> 6*(3-j)) & 0x3F);
-    }
-  }
-  return output;
-}
-
-/*
- * Convert a raw string to an arbitrary string encoding
- */
-function rstr2any(input, encoding)
-{
-  var divisor = encoding.length;
-  var i, j, q, x, quotient;
-
-  /* Convert to an array of 16-bit big-endian values, forming the dividend */
-  var dividend = Array(Math.ceil(input.length / 2));
-  for(i = 0; i < dividend.length; i++)
-  {
-    dividend[i] = (input.charCodeAt(i * 2) << 8) | input.charCodeAt(i * 2 + 1);
-  }
-
-  /*
-   * Repeatedly perform a long division. The binary array forms the dividend,
-   * the length of the encoding is the divisor. Once computed, the quotient
-   * forms the dividend for the next step. All remainders are stored for later
-   * use.
-   */
-  var full_length = Math.ceil(input.length * 8 /
-                                    (Math.log(encoding.length) / Math.log(2)));
-  var remainders = Array(full_length);
-  for(j = 0; j < full_length; j++)
-  {
-    quotient = Array();
-    x = 0;
-    for(i = 0; i < dividend.length; i++)
-    {
-      x = (x << 16) + dividend[i];
-      q = Math.floor(x / divisor);
-      x -= q * divisor;
-      if(quotient.length > 0 || q > 0)
-        quotient[quotient.length] = q;
-    }
-    remainders[j] = x;
-    dividend = quotient;
-  }
-
-  /* Convert the remainders to the output string */
-  var output = "";
-  for(i = remainders.length - 1; i >= 0; i--)
-    output += encoding.charAt(remainders[i]);
-
-  return output;
-}
-
-/*
- * Encode a string as utf-8.
- * For efficiency, this assumes the input is valid utf-16.
- */
-function str2rstr_utf8(input)
-{
-  var output = "";
-  var i = -1;
-  var x, y;
-
-  while(++i < input.length)
-  {
-    /* Decode utf-16 surrogate pairs */
-    x = input.charCodeAt(i);
-    y = i + 1 < input.length ? input.charCodeAt(i + 1) : 0;
-    if(0xD800 <= x && x <= 0xDBFF && 0xDC00 <= y && y <= 0xDFFF)
-    {
-      x = 0x10000 + ((x & 0x03FF) << 10) + (y & 0x03FF);
-      i++;
-    }
-
-    /* Encode output as utf-8 */
-    if(x <= 0x7F)
-      output += String.fromCharCode(x);
-    else if(x <= 0x7FF)
-      output += String.fromCharCode(0xC0 | ((x >>> 6 ) & 0x1F),
-                                    0x80 | ( x         & 0x3F));
-    else if(x <= 0xFFFF)
-      output += String.fromCharCode(0xE0 | ((x >>> 12) & 0x0F),
-                                    0x80 | ((x >>> 6 ) & 0x3F),
-                                    0x80 | ( x         & 0x3F));
-    else if(x <= 0x1FFFFF)
-      output += String.fromCharCode(0xF0 | ((x >>> 18) & 0x07),
-                                    0x80 | ((x >>> 12) & 0x3F),
-                                    0x80 | ((x >>> 6 ) & 0x3F),
-                                    0x80 | ( x         & 0x3F));
-  }
-  return output;
-}
-
-/*
- * Encode a string as utf-16
- */
-function str2rstr_utf16le(input)
-{
-  var output = "";
-  for(var i = 0; i < input.length; i++)
-    output += String.fromCharCode( input.charCodeAt(i)        & 0xFF,
-                                  (input.charCodeAt(i) >>> 8) & 0xFF);
-  return output;
-}
-
-function str2rstr_utf16be(input)
-{
-  var output = "";
-  for(var i = 0; i < input.length; i++)
-    output += String.fromCharCode((input.charCodeAt(i) >>> 8) & 0xFF,
-                                   input.charCodeAt(i)        & 0xFF);
-  return output;
-}
-
-/*
- * Convert a raw string to an array of little-endian words
- * Characters >255 have their high-byte silently ignored.
- */
-function rstr2binl(input)
-{
-  var output = Array(input.length >> 2);
-  for(var i = 0; i < output.length; i++)
-    output[i] = 0;
-  for(var i = 0; i < input.length * 8; i += 8)
-    output[i>>5] |= (input.charCodeAt(i / 8) & 0xFF) << (i%32);
-  return output;
-}
-
-/*
- * Convert an array of little-endian words to a string
- */
-function binl2rstr(input)
-{
-  var output = "";
-  for(var i = 0; i < input.length * 32; i += 8)
-    output += String.fromCharCode((input[i>>5] >>> (i % 32)) & 0xFF);
-  return output;
-}
-
-/*
- * Calculate the MD5 of an array of little-endian words, and a bit length.
- */
-function binl_md5(x, len)
-{
-  /* append padding */
-  x[len >> 5] |= 0x80 << ((len) % 32);
-  x[(((len + 64) >>> 9) << 4) + 14] = len;
-
-  var a =  1732584193;
-  var b = -271733879;
-  var c = -1732584194;
-  var d =  271733878;
-
-  for(var i = 0; i < x.length; i += 16)
-  {
-    var olda = a;
-    var oldb = b;
-    var oldc = c;
-    var oldd = d;
-
-    a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
-    d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
-    c = md5_ff(c, d, a, b, x[i+ 2], 17,  606105819);
-    b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
-    a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
-    d = md5_ff(d, a, b, c, x[i+ 5], 12,  1200080426);
-    c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
-    b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
-    a = md5_ff(a, b, c, d, x[i+ 8], 7 ,  1770035416);
-    d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
-    c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
-    b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
-    a = md5_ff(a, b, c, d, x[i+12], 7 ,  1804603682);
-    d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
-    c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
-    b = md5_ff(b, c, d, a, x[i+15], 22,  1236535329);
-
-    a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
-    d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
-    c = md5_gg(c, d, a, b, x[i+11], 14,  643717713);
-    b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
-    a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
-    d = md5_gg(d, a, b, c, x[i+10], 9 ,  38016083);
-    c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
-    b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
-    a = md5_gg(a, b, c, d, x[i+ 9], 5 ,  568446438);
-    d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
-    c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
-    b = md5_gg(b, c, d, a, x[i+ 8], 20,  1163531501);
-    a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
-    d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
-    c = md5_gg(c, d, a, b, x[i+ 7], 14,  1735328473);
-    b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
-
-    a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
-    d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
-    c = md5_hh(c, d, a, b, x[i+11], 16,  1839030562);
-    b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
-    a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
-    d = md5_hh(d, a, b, c, x[i+ 4], 11,  1272893353);
-    c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
-    b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
-    a = md5_hh(a, b, c, d, x[i+13], 4 ,  681279174);
-    d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
-    c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
-    b = md5_hh(b, c, d, a, x[i+ 6], 23,  76029189);
-    a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
-    d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
-    c = md5_hh(c, d, a, b, x[i+15], 16,  530742520);
-    b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
-
-    a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
-    d = md5_ii(d, a, b, c, x[i+ 7], 10,  1126891415);
-    c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
-    b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
-    a = md5_ii(a, b, c, d, x[i+12], 6 ,  1700485571);
-    d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
-    c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
-    b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
-    a = md5_ii(a, b, c, d, x[i+ 8], 6 ,  1873313359);
-    d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
-    c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
-    b = md5_ii(b, c, d, a, x[i+13], 21,  1309151649);
-    a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
-    d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
-    c = md5_ii(c, d, a, b, x[i+ 2], 15,  718787259);
-    b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
-
-    a = safe_add(a, olda);
-    b = safe_add(b, oldb);
-    c = safe_add(c, oldc);
-    d = safe_add(d, oldd);
-  }
-  return Array(a, b, c, d);
-}
-
-/*
- * These functions implement the four basic operations the algorithm uses.
- */
-function md5_cmn(q, a, b, x, s, t)
-{
-  return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
-}
-function md5_ff(a, b, c, d, x, s, t)
-{
-  return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
-}
-function md5_gg(a, b, c, d, x, s, t)
-{
-  return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
-}
-function md5_hh(a, b, c, d, x, s, t)
-{
-  return md5_cmn(b ^ c ^ d, a, b, x, s, t);
-}
-function md5_ii(a, b, c, d, x, s, t)
-{
-  return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
-}
-
-/*
- * Add integers, wrapping at 2^32. This uses 16-bit operations internally
- * to work around bugs in some JS interpreters.
- */
-function safe_add(x, y)
-{
-  var lsw = (x & 0xFFFF) + (y & 0xFFFF);
-  var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
-  return (msw << 16) | (lsw & 0xFFFF);
-}
-
-/*
- * Bitwise rotate a 32-bit number to the left.
- */
-function bit_rol(num, cnt)
-{
-  return (num << cnt) | (num >>> (32 - cnt));
-}
-
-module.exports = {
-	md5 : function(str){
-		return hex_md5(str);
-	}
-}
\ No newline at end of file
diff --git a/uview-ui/libs/function/queryParams.js b/uview-ui/libs/function/queryParams.js
deleted file mode 100644
index 81c7e5e..0000000
--- a/uview-ui/libs/function/queryParams.js
+++ /dev/null
@@ -1,58 +0,0 @@
-/**
- * 对象转url参数
- * @param {*} data,对象
- * @param {*} isPrefix,是否自动加上"?"
- */
-function queryParams(data = {}, isPrefix = true, arrayFormat = 'brackets') {
-	let prefix = isPrefix ? '?' : ''
-	let _result = []
-	if (['indices', 'brackets', 'repeat', 'comma'].indexOf(arrayFormat) == -1) arrayFormat = 'brackets';
-	for (let key in data) {
-		let value = data[key]
-		// 去掉为空的参数
-		if (['', undefined, null].indexOf(value) >= 0) {
-			continue;
-		}
-		// 如果值为数组,另行处理
-		if (value.constructor === Array) {
-			// e.g. {ids: [1, 2, 3]}
-			switch (arrayFormat) {
-				case 'indices':
-					// 结果: ids[0]=1&ids[1]=2&ids[2]=3
-					for (let i = 0; i < value.length; i++) {
-						_result.push(key + '[' + i + ']=' + value[i])
-					}
-					break;
-				case 'brackets':
-					// 结果: ids[]=1&ids[]=2&ids[]=3
-					value.forEach(_value => {
-						_result.push(key + '[]=' + _value)
-					})
-					break;
-				case 'repeat':
-					// 结果: ids=1&ids=2&ids=3
-					value.forEach(_value => {
-						_result.push(key + '=' + _value)
-					})
-					break;
-				case 'comma':
-					// 结果: ids=1,2,3
-					let commaStr = "";
-					value.forEach(_value => {
-						commaStr += (commaStr ? "," : "") + _value;
-					})
-					_result.push(key + '=' + commaStr)
-					break;
-				default:
-					value.forEach(_value => {
-						_result.push(key + '[]=' + _value)
-					})
-			}
-		} else {
-			_result.push(key + '=' + value)
-		}
-	}
-	return _result.length ? prefix + _result.join('&') : ''
-}
-
-export default queryParams;
diff --git a/uview-ui/libs/function/random.js b/uview-ui/libs/function/random.js
deleted file mode 100644
index e155279..0000000
--- a/uview-ui/libs/function/random.js
+++ /dev/null
@@ -1,10 +0,0 @@
-function random(min, max) {
-	if (min >= 0 && max > 0 && max >= min) {
-		let gab = max - min + 1;
-		return Math.floor(Math.random() * gab + min);
-	} else {
-		return 0;
-	}
-}
-
-export default random;
diff --git a/uview-ui/libs/function/randomArray.js b/uview-ui/libs/function/randomArray.js
deleted file mode 100644
index 590a048..0000000
--- a/uview-ui/libs/function/randomArray.js
+++ /dev/null
@@ -1,7 +0,0 @@
-// 打乱数组
-function randomArray(array = []) {
-	// 原理是sort排序,Math.random()产生0<= x < 1之间的数,会导致x-0.05大于或者小于0
-	return array.sort(() => Math.random() - 0.5);
-}
-
-export default randomArray
diff --git a/uview-ui/libs/function/route.js b/uview-ui/libs/function/route.js
deleted file mode 100644
index 28a81b7..0000000
--- a/uview-ui/libs/function/route.js
+++ /dev/null
@@ -1,122 +0,0 @@
-/**
- * 路由跳转方法,该方法相对于直接使用uni.xxx的好处是使用更加简单快捷
- * 并且带有路由拦截功能
- */
-
-class Router {
-	constructor() {
-		// 原始属性定义
-		this.config = {
-			type: 'navigateTo',
-			url: '',
-			delta: 1, // navigateBack页面后退时,回退的层数
-			params: {}, // 传递的参数
-			animationType: 'pop-in', // 窗口动画,只在APP有效
-			animationDuration: 300, // 窗口动画持续时间,单位毫秒,只在APP有效
-			intercept: false, // 是否需要拦截
-		}
-		// 因为route方法是需要对外赋值给另外的对象使用,同时route内部有使用this,会导致route失去上下文
-		// 这里在构造函数中进行this绑定
-		this.route = this.route.bind(this)
-	}
-
-	// 判断url前面是否有"/",如果没有则加上,否则无法跳转
-	addRootPath(url) {
-		return url[0] === '/' ? url : `/${url}`
-	}
-
-	// 整合路由参数
-	mixinParam(url, params) {
-		url = url && this.addRootPath(url)
-		
-		// 使用正则匹配,主要依据是判断是否有"/","?","="等,如“/page/index/index?name=mary"
-		// 如果有url中有get参数,转换后无需带上"?"
-		let query = ''
-		if (/.*\/.*\?.*=.*/.test(url)) {
-			// object对象转为get类型的参数
-			query = uni.$u.queryParams(params, false);
-			// 因为已有get参数,所以后面拼接的参数需要带上"&"隔开
-			return url += "&" + query
-		} else {
-			// 直接拼接参数,因为此处url中没有后面的query参数,也就没有"?/&"之类的符号
-			query = uni.$u.queryParams(params);
-			return url += query
-		}
-	}
-
-	// 对外的方法名称
-	async route(options = {}, params = {}) {
-		// 合并用户的配置和内部的默认配置
-		let mergeConfig = {}
-
-		if (typeof options === 'string') {
-			// 如果options为字符串,则为route(url, params)的形式
-			mergeConfig.url = this.mixinParam(options, params)
-			mergeConfig.type = 'navigateTo'
-		} else {
-			mergeConfig = uni.$u.deepClone(options, this.config)
-			// 否则正常使用mergeConfig中的url和params进行拼接
-			mergeConfig.url = this.mixinParam(options.url, options.params)
-		}
-		
-		if(params.intercept) {
-			this.config.intercept = params.intercept
-		}
-		// params参数也带给拦截器
-		mergeConfig.params = params
-		// 合并内外部参数
-		mergeConfig = uni.$u.deepMerge(this.config, mergeConfig)
-		// 判断用户是否定义了拦截器
-		if (typeof uni.$u.routeIntercept === 'function') {
-			// 定一个promise,根据用户执行resolve(true)或者resolve(false)来决定是否进行路由跳转
-			const isNext = await new Promise((resolve, reject) => {
-				uni.$u.routeIntercept(mergeConfig, resolve)
-			})
-			// 如果isNext为true,则执行路由跳转
-			isNext && this.openPage(mergeConfig)
-		} else {
-			this.openPage(mergeConfig)
-		}
-	}
-
-	// 执行路由跳转
-	openPage(config) {
-		// 解构参数
-		const {
-			url,
-			type,
-			delta,
-			animationType,
-			animationDuration
-		} = config
-		if (config.type == 'navigateTo' || config.type == 'to') {
-			uni.navigateTo({
-				url,
-				animationType,
-				animationDuration
-			});
-		}
-		if (config.type == 'redirectTo' || config.type == 'redirect') {
-			uni.redirectTo({
-				url
-			});
-		}
-		if (config.type == 'switchTab' || config.type == 'tab') {
-			uni.switchTab({
-				url
-			});
-		}
-		if (config.type == 'reLaunch' || config.type == 'launch') {
-			uni.reLaunch({
-				url
-			});
-		}
-		if (config.type == 'navigateBack' || config.type == 'back') {
-			uni.navigateBack({
-				delta
-			});
-		}
-	}
-}
-
-export default (new Router()).route
\ No newline at end of file
diff --git a/uview-ui/libs/function/sys.js b/uview-ui/libs/function/sys.js
deleted file mode 100644
index 00f6a28..0000000
--- a/uview-ui/libs/function/sys.js
+++ /dev/null
@@ -1,9 +0,0 @@
-export function os() {
-	return uni.getSystemInfoSync().platform;
-};
-
-export function sys() {
-	return uni.getSystemInfoSync();
-}
-
-
diff --git a/uview-ui/libs/function/test.js b/uview-ui/libs/function/test.js
deleted file mode 100644
index fd25e18..0000000
--- a/uview-ui/libs/function/test.js
+++ /dev/null
@@ -1,232 +0,0 @@
-/**
- * 验证电子邮箱格式
- */
-function email(value) {
-	return /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/.test(value);
-}
-
-/**
- * 验证手机格式
- */
-function mobile(value) {
-	return /^1[3-9]\d{9}$/.test(value)
-}
-
-/**
- * 验证URL格式
- */
-function url(value) {
-	return /http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w-.\/?%&=]*)?/.test(value)
-}
-
-/**
- * 验证日期格式
- */
-function date(value) {
-	return !/Invalid|NaN/.test(new Date(value).toString())
-}
-
-/**
- * 验证ISO类型的日期格式
- */
-function dateISO(value) {
-	return /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(value)
-}
-
-/**
- * 验证十进制数字
- */
-function number(value) {
-	return /^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(value)
-}
-
-/**
- * 验证整数
- */
-function digits(value) {
-	return /^\d+$/.test(value)
-}
-
-/**
- * 验证身份证号码
- */
-function idCard(value) {
-	return /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/.test(
-		value)
-}
-
-/**
- * 是否车牌号
- */
-function carNo(value) {
-	// 新能源车牌
-	const xreg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5}[DF]$)|([DF][A-HJ-NP-Z0-9][0-9]{4}$))/;
-	// 旧车牌
-	const creg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1}$/;
-	if (value.length === 7) {
-		return creg.test(value);
-	} else if (value.length === 8) {
-		return xreg.test(value);
-	} else {
-		return false;
-	}
-}
-
-/**
- * 金额,只允许2位小数
- */
-function amount(value) {
-	//金额,只允许保留两位小数
-	return /^[1-9]\d*(,\d{3})*(\.\d{1,2})?$|^0\.\d{1,2}$/.test(value);
-}
-
-/**
- * 中文
- */
-function chinese(value) {
-	let reg = /^[\u4e00-\u9fa5]+$/gi;
-	return reg.test(value);
-}
-
-/**
- * 只能输入字母
- */
-function letter(value) {
-	return /^[a-zA-Z]*$/.test(value);
-}
-
-/**
- * 只能是字母或者数字
- */
-function enOrNum(value) {
-	//英文或者数字
-	let reg = /^[0-9a-zA-Z]*$/g;
-	return reg.test(value);
-}
-
-/**
- * 验证是否包含某个值
- */
-function contains(value, param) {
-	return value.indexOf(param) >= 0
-}
-
-/**
- * 验证一个值范围[min, max]
- */
-function range(value, param) {
-	return value >= param[0] && value <= param[1]
-}
-
-/**
- * 验证一个长度范围[min, max]
- */
-function rangeLength(value, param) {
-	return value.length >= param[0] && value.length <= param[1]
-}
-
-/**
- * 是否固定电话
- */
-function landline(value) {
-	let reg = /^\d{3,4}-\d{7,8}(-\d{3,4})?$/;
-	return reg.test(value);
-}
-
-/**
- * 判断是否为空
- */
-function empty(value) {
-	switch (typeof value) {
-		case 'undefined':
-			return true;
-		case 'string':
-			if (value.replace(/(^[ \t\n\r]*)|([ \t\n\r]*$)/g, '').length == 0) return true;
-			break;
-		case 'boolean':
-			if (!value) return true;
-			break;
-		case 'number':
-			if (0 === value || isNaN(value)) return true;
-			break;
-		case 'object':
-			if (null === value || value.length === 0) return true;
-			for (var i in value) {
-				return false;
-			}
-			return true;
-	}
-	return false;
-}
-
-/**
- * 是否json字符串
- */
-function jsonString(value) {
-	if (typeof value == 'string') {
-		try {
-			var obj = JSON.parse(value);
-			if (typeof obj == 'object' && obj) {
-				return true;
-			} else {
-				return false;
-			}
-		} catch (e) {
-			return false;
-		}
-	}
-	return false;
-}
-
-
-/**
- * 是否数组
- */
-function array(value) {
-	if (typeof Array.isArray === "function") {
-		return Array.isArray(value);
-	} else {
-		return Object.prototype.toString.call(value) === "[object Array]";
-	}
-}
-
-/**
- * 是否对象
- */
-function object(value) {
-	return Object.prototype.toString.call(value) === '[object Object]';
-}
-
-/**
- * 是否短信验证码
- */
-function code(value, len = 6) {
-	return new RegExp(`^\\d{${len}}$`).test(value);
-}
-
-
-export default {
-	email,
-	mobile,
-	url,
-	date,
-	dateISO,
-	number,
-	digits,
-	idCard,
-	carNo,
-	amount,
-	chinese,
-	letter,
-	enOrNum,
-	contains,
-	range,
-	rangeLength,
-	empty,
-	isEmpty: empty,
-	jsonString,
-	landline,
-	object,
-	array,
-	code
-}
diff --git a/uview-ui/libs/function/throttle.js b/uview-ui/libs/function/throttle.js
deleted file mode 100644
index ad830b2..0000000
--- a/uview-ui/libs/function/throttle.js
+++ /dev/null
@@ -1,32 +0,0 @@
-let timer, flag;
-/**
- * 节流原理:在一定时间内,只能触发一次
- * 
- * @param {Function} func 要执行的回调函数 
- * @param {Number} wait 延时的时间
- * @param {Boolean} immediate 是否立即执行
- * @return null
- */
-function throttle(func, wait = 500, immediate = true) {
-	if (immediate) {
-		if (!flag) {
-			flag = true;
-			// 如果是立即执行,则在wait毫秒内开始时执行
-			typeof func === 'function' && func();
-			timer = setTimeout(() => {
-				flag = false;
-			}, wait);
-		}
-	} else {
-		if (!flag) {
-			flag = true
-			// 如果是非立即执行,则在wait毫秒内的结束处执行
-			timer = setTimeout(() => {
-				flag = false
-				typeof func === 'function' && func();
-			}, wait);
-		}
-		
-	}
-};
-export default throttle
diff --git a/uview-ui/libs/function/timeFormat.js b/uview-ui/libs/function/timeFormat.js
deleted file mode 100644
index 0372f2f..0000000
--- a/uview-ui/libs/function/timeFormat.js
+++ /dev/null
@@ -1,51 +0,0 @@
-// padStart 的 polyfill,因为某些机型或情况,还无法支持es7的padStart,比如电脑版的微信小程序
-// 所以这里做一个兼容polyfill的兼容处理
-if (!String.prototype.padStart) {
-	// 为了方便表示这里 fillString 用了ES6 的默认参数,不影响理解
-	String.prototype.padStart = function(maxLength, fillString = ' ') {
-		if (Object.prototype.toString.call(fillString) !== "[object String]") throw new TypeError(
-			'fillString must be String')
-		let str = this
-		// 返回 String(str) 这里是为了使返回的值是字符串字面量,在控制台中更符合直觉
-		if (str.length >= maxLength) return String(str)
-
-		let fillLength = maxLength - str.length,
-			times = Math.ceil(fillLength / fillString.length)
-		while (times >>= 1) {
-			fillString += fillString
-			if (times === 1) {
-				fillString += fillString
-			}
-		}
-		return fillString.slice(0, fillLength) + str;
-	}
-}
-
-// 其他更多是格式化有如下:
-// yyyy:mm:dd|yyyy:mm|yyyy年mm月dd日|yyyy年mm月dd日 hh时MM分等,可自定义组合
-function timeFormat(dateTime = null, fmt = 'yyyy-mm-dd') {
-	// 如果为null,则格式化当前时间
-	if (!dateTime) dateTime = Number(new Date());
-	// 如果dateTime长度为10或者13,则为秒和毫秒的时间戳,如果超过13位,则为其他的时间格式
-	if (dateTime.toString().length == 10) dateTime *= 1000;
-	let date = new Date(dateTime);
-	let ret;
-	let opt = {
-		"y+": date.getFullYear().toString(), // 年
-		"m+": (date.getMonth() + 1).toString(), // 月
-		"d+": date.getDate().toString(), // 日
-		"h+": date.getHours().toString(), // 时
-		"M+": date.getMinutes().toString(), // 分
-		"s+": date.getSeconds().toString() // 秒
-		// 有其他格式化字符需求可以继续添加,必须转化成字符串
-	};
-	for (let k in opt) {
-		ret = new RegExp("(" + k + ")").exec(fmt);
-		if (ret) {
-			fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
-		};
-	};
-	return fmt;
-}
-
-export default timeFormat
diff --git a/uview-ui/libs/function/timeFrom.js b/uview-ui/libs/function/timeFrom.js
deleted file mode 100644
index 68cd990..0000000
--- a/uview-ui/libs/function/timeFrom.js
+++ /dev/null
@@ -1,47 +0,0 @@
-import timeFormat from '../../libs/function/timeFormat.js';
-
-/**
- * 时间戳转为多久之前
- * @param String timestamp 时间戳
- * @param String | Boolean format 如果为时间格式字符串,超出一定时间范围,返回固定的时间格式;
- * 如果为布尔值false,无论什么时间,都返回多久以前的格式
- */
-function timeFrom(dateTime = null, format = 'yyyy-mm-dd') {
-	// 如果为null,则格式化当前时间
-	if (!dateTime) dateTime = Number(new Date());
-	// 如果dateTime长度为10或者13,则为秒和毫秒的时间戳,如果超过13位,则为其他的时间格式
-	if (dateTime.toString().length == 10) dateTime *= 1000;
-	let timestamp = + new Date(Number(dateTime));
-
-	let timer = (Number(new Date()) - timestamp) / 1000;
-	// 如果小于5分钟,则返回"刚刚",其他以此类推
-	let tips = '';
-	switch (true) {
-		case timer < 300:
-			tips = '刚刚';
-			break;
-		case timer >= 300 && timer < 3600:
-			tips = parseInt(timer / 60) + '分钟前';
-			break;
-		case timer >= 3600 && timer < 86400:
-			tips = parseInt(timer / 3600) + '小时前';
-			break;
-		case timer >= 86400 && timer < 2592000:
-			tips = parseInt(timer / 86400) + '天前';
-			break;
-		default:
-			// 如果format为false,则无论什么时间戳,都显示xx之前
-			if(format === false) {
-				if(timer >= 2592000 && timer < 365 * 86400) {
-					tips = parseInt(timer / (86400 * 30)) + '个月前';
-				} else {
-					tips = parseInt(timer / (86400 * 365)) + '年前';
-				}
-			} else {
-				tips = timeFormat(timestamp, format);
-			}
-	}
-	return tips;
-}
-
-export default timeFrom;
diff --git a/uview-ui/libs/function/toast.js b/uview-ui/libs/function/toast.js
deleted file mode 100644
index 91afa73..0000000
--- a/uview-ui/libs/function/toast.js
+++ /dev/null
@@ -1,9 +0,0 @@
-function toast(title, duration = 1500) {
-	uni.showToast({
-		title: title,
-		icon: 'none',
-		duration: duration
-	})
-}
-
-export default toast
diff --git a/uview-ui/libs/function/trim.js b/uview-ui/libs/function/trim.js
deleted file mode 100644
index 72adc37..0000000
--- a/uview-ui/libs/function/trim.js
+++ /dev/null
@@ -1,15 +0,0 @@
-function trim(str, pos = 'both') {
-	if (pos == 'both') {
-		return str.replace(/^\s+|\s+$/g, "");
-	} else if (pos == "left") {
-		return str.replace(/^\s*/, '');
-	} else if (pos == 'right') {
-		return str.replace(/(\s*$)/g, "");
-	} else if (pos == 'all') {
-		return str.replace(/\s+/g, "");
-	} else {
-		return str;
-	}
-}
-
-export default trim
diff --git a/uview-ui/libs/function/type2icon.js b/uview-ui/libs/function/type2icon.js
deleted file mode 100644
index 23cb40e..0000000
--- a/uview-ui/libs/function/type2icon.js
+++ /dev/null
@@ -1,35 +0,0 @@
-/**
- * 根据主题type值,获取对应的图标
- * @param String type 主题名称,primary|info|error|warning|success
- * @param String fill 是否使用fill填充实体的图标  
- */
-function type2icon(type = 'success', fill = false) {
-	// 如果非预置值,默认为success
-	if (['primary', 'info', 'error', 'warning', 'success'].indexOf(type) == -1) type = 'success';
-	let iconName = '';
-	// 目前(2019-12-12),info和primary使用同一个图标
-	switch (type) {
-		case 'primary':
-			iconName = 'info-circle';
-			break;
-		case 'info':
-			iconName = 'info-circle';
-			break;
-		case 'error':
-			iconName = 'close-circle';
-			break;
-		case 'warning':
-			iconName = 'error-circle';
-			break;
-		case 'success':
-			iconName = 'checkmark-circle';
-			break;
-		default:
-			iconName = 'checkmark-circle';
-	}
-	// 是否是实体类型,加上-fill,在icon组件库中,实体的类名是后面加-fill的
-	if (fill) iconName += '-fill';
-	return iconName;
-}
-
-export default type2icon
diff --git a/uview-ui/libs/mixin/mixin.js b/uview-ui/libs/mixin/mixin.js
deleted file mode 100644
index e388986..0000000
--- a/uview-ui/libs/mixin/mixin.js
+++ /dev/null
@@ -1,64 +0,0 @@
-module.exports = {
-	data() {
-		return {}
-	},
-	onLoad() {
-		// getRect挂载到$u上,因为这方法需要使用in(this),所以无法把它独立成一个单独的文件导出
-		this.$u.getRect = this.$uGetRect
-	},
-	methods: {
-		// 查询节点信息
-		// 目前此方法在支付宝小程序中无法获取组件跟接点的尺寸,为支付宝的bug(2020-07-21)
-		// 解决办法为在组件根部再套一个没有任何作用的view元素
-		$uGetRect(selector, all) {
-			return new Promise(resolve => {
-				uni.createSelectorQuery().
-				in(this)[all ? 'selectAll' : 'select'](selector)
-					.boundingClientRect(rect => {
-						if (all && Array.isArray(rect) && rect.length) {
-							resolve(rect)
-						}
-						if (!all && rect) {
-							resolve(rect)
-						}
-					})
-					.exec()
-			})
-		},
-		getParentData(parentName = '') {
-			// 避免在created中去定义parent变量
-			if(!this.parent) this.parent = false;
-			// 这里的本质原理是,通过获取父组件实例(也即u-radio-group的this)
-			// 将父组件this中对应的参数,赋值给本组件(u-radio的this)的parentData对象中对应的属性
-			// 之所以需要这么做,是因为所有端中,头条小程序不支持通过this.parent.xxx去监听父组件参数的变化
-			this.parent = this.$u.$parent.call(this, parentName);
-			if(this.parent) {
-				// 历遍parentData中的属性,将parent中的同名属性赋值给parentData
-				Object.keys(this.parentData).map(key => {
-					this.parentData[key] = this.parent[key];
-				});
-			}
-		},
-		// 阻止事件冒泡
-		preventEvent(e) {
-			e && e.stopPropagation && e.stopPropagation()
-		}
-	},
-	onReachBottom() {
-		uni.$emit('uOnReachBottom')
-	},
-	beforeDestroy() {
-		// 判断当前页面是否存在parent和chldren,一般在checkbox和checkbox-group父子联动的场景会有此情况
-		// 组件销毁时,移除子组件在父组件children数组中的实例,释放资源,避免数据混乱
-		if(this.parent && uni.$u.test.array(this.parent.children)) {
-			// 组件销毁时,移除父组件中的children数组中对应的实例
-			const childrenList = this.parent.children
-			childrenList.map((child, index) => {
-				// 如果相等,则移除
-				if(child === this) {
-					childrenList.splice(index, 1)
-				}
-			})
-		}
-	}
-}
diff --git a/uview-ui/libs/mixin/mpShare.js b/uview-ui/libs/mixin/mpShare.js
deleted file mode 100644
index 057d369..0000000
--- a/uview-ui/libs/mixin/mpShare.js
+++ /dev/null
@@ -1,18 +0,0 @@
-module.exports = {
-	onLoad() {
-		// 设置默认的转发参数
-		this.$u.mpShare = {
-			title: '', // 默认为小程序名称
-			path: '', // 默认为当前页面路径
-			imageUrl: '' // 默认为当前页面的截图
-		}
-	},
-	onShareAppMessage() {
-		return this.$u.mpShare
-	},
-	// #ifdef MP-WEIXIN
-	onShareTimeline() {
-		return this.$u.mpShare
-	}
-	// #endif
-}
diff --git a/uview-ui/libs/request/index.js b/uview-ui/libs/request/index.js
deleted file mode 100644
index 1f5f471..0000000
--- a/uview-ui/libs/request/index.js
+++ /dev/null
@@ -1,169 +0,0 @@
-import deepMerge from "../function/deepMerge";
-import validate from "../function/test";
-class Request {
-	// 设置全局默认配置
-	setConfig(customConfig) {
-		// 深度合并对象,否则会造成对象深层属性丢失
-		this.config = deepMerge(this.config, customConfig);
-	}
-
-	// 主要请求部分
-	request(options = {}) {
-		// 检查请求拦截
-		if (this.interceptor.request && typeof this.interceptor.request === 'function') {
-			let tmpConfig = {};
-			let interceptorRequest = this.interceptor.request(options);
-			if (interceptorRequest === false) {
-				// 返回一个处于pending状态中的Promise,来取消原promise,避免进入then()回调
-				return new Promise(()=>{});
-			}
-			this.options = interceptorRequest;
-		}
-		options.dataType = options.dataType || this.config.dataType;
-		options.responseType = options.responseType || this.config.responseType;
-		options.url = options.url || '';
-		options.params = options.params || {};
-		options.header = Object.assign({}, this.config.header, options.header);
-		options.method = options.method || this.config.method;
-
-		return new Promise((resolve, reject) => {
-			options.complete = (response) => {
-				// 请求返回后,隐藏loading(如果请求返回快的话,可能会没有loading)
-				uni.hideLoading();
-				// 清除定时器,如果请求回来了,就无需loading
-				clearTimeout(this.config.timer);
-				this.config.timer = null;
-				// 判断用户对拦截返回数据的要求,如果originalData为true,返回所有的数据(response)到拦截器,否则只返回response.data
-				if(this.config.originalData) {
-					// 判断是否存在拦截器
-					if (this.interceptor.response && typeof this.interceptor.response === 'function') {
-						let resInterceptors = this.interceptor.response(response);
-						// 如果拦截器不返回false,就将拦截器返回的内容给this.$u.post的then回调
-						if (resInterceptors !== false) {
-							resolve(resInterceptors);
-						} else {
-							// 如果拦截器返回false,意味着拦截器定义者认为返回有问题,直接接入catch回调
-							reject(response);
-						}
-					} else {
-						// 如果要求返回原始数据,就算没有拦截器,也返回最原始的数据
-						resolve(response);
-					}
-				} else {
-					if (response.statusCode == 200) {
-						if (this.interceptor.response && typeof this.interceptor.response === 'function') {
-							let resInterceptors = this.interceptor.response(response.data);
-							if (resInterceptors !== false) {
-								resolve(resInterceptors);
-							} else {
-								reject(response.data);
-							}
-						} else {
-							// 如果不是返回原始数据(originalData=false),且没有拦截器的情况下,返回纯数据给then回调
-							resolve(response.data);
-						}
-					} else {
-						// 不返回原始数据的情况下,服务器状态码不为200,modal弹框提示
-						// if(response.errMsg) {
-						// 	uni.showModal({
-						// 		title: response.errMsg
-						// 	});
-						// }
-						reject(response)
-					}
-				}
-			}
-
-			// 判断用户传递的URL是否/开头,如果不是,加上/,这里使用了uView的test.js验证库的url()方法
-			options.url = validate.url(options.url) ? options.url : (this.config.baseUrl + (options.url.indexOf('/') == 0 ?
-				options.url : '/' + options.url));
-			
-			// 是否显示loading
-			// 加一个是否已有timer定时器的判断,否则有两个同时请求的时候,后者会清除前者的定时器id
-			// 而没有清除前者的定时器,导致前者超时,一直显示loading
-			if(this.config.showLoading && !this.config.timer) {
-				this.config.timer = setTimeout(() => {
-					uni.showLoading({
-						title: this.config.loadingText,
-						mask: this.config.loadingMask
-					})
-					this.config.timer = null;
-				}, this.config.loadingTime);
-			}
-			uni.request(options);
-		})
-		// .catch(res => {
-		// 	// 如果返回reject(),不让其进入this.$u.post().then().catch()后面的catct()
-		// 	// 因为很多人都会忘了写后面的catch(),导致报错捕获不到catch
-		// 	return new Promise(()=>{});
-		// })
-	}
-
-	constructor() {
-		this.config = {
-			baseUrl: '', // 请求的根域名
-			// 默认的请求头
-			header: {},
-			method: 'POST',
-			// 设置为json,返回后uni.request会对数据进行一次JSON.parse
-			dataType: 'json',
-			// 此参数无需处理,因为5+和支付宝小程序不支持,默认为text即可
-			responseType: 'text',
-			showLoading: true, // 是否显示请求中的loading
-			loadingText: '请求中...',
-			loadingTime: 800, // 在此时间内,请求还没回来的话,就显示加载中动画,单位ms
-			timer: null, // 定时器
-			originalData: false, // 是否在拦截器中返回服务端的原始数据,见文档说明
-			loadingMask: true, // 展示loading的时候,是否给一个透明的蒙层,防止触摸穿透
-		}
-	
-		// 拦截器
-		this.interceptor = {
-			// 请求前的拦截
-			request: null,
-			// 请求后的拦截
-			response: null
-		}
-
-		// get请求
-		this.get = (url, data = {}, header = {}) => {
-			return this.request({
-				method: 'GET',
-				url,
-				header,
-				data
-			})
-		}
-
-		// post请求
-		this.post = (url, data = {}, header = {}) => {
-			return this.request({
-				url,
-				method: 'POST',
-				header,
-				data
-			})
-		}
-		
-		// put请求,不支持支付宝小程序(HX2.6.15)
-		this.put = (url, data = {}, header = {}) => {
-			return this.request({
-				url,
-				method: 'PUT',
-				header,
-				data
-			})
-		}
-		
-		// delete请求,不支持支付宝和头条小程序(HX2.6.15)
-		this.delete = (url, data = {}, header = {}) => {
-			return this.request({
-				url,
-				method: 'DELETE',
-				header,
-				data
-			})
-		}
-	}
-}
-export default new Request
diff --git a/uview-ui/libs/store/index.js b/uview-ui/libs/store/index.js
deleted file mode 100644
index a5927b3..0000000
--- a/uview-ui/libs/store/index.js
+++ /dev/null
@@ -1,19 +0,0 @@
-// 暂时不用vuex模块方式实现,将该方法直接放入到/store/index.js中
-const module = {
-	actions: {
-		$uStore({rootState}, params) {
-			let nameArr = params.name.split('.');
-			if(nameArr.length >= 2) {
-				let obj = rootState[nameArr[0]];
-				for(let i = 1; i < nameArr.length - 1; i ++) {
-					obj = obj[nameArr[i]];
-				}
-				obj[nameArr[nameArr.length - 1]] = params.value;
-			} else {
-				rootState[params.name] = params.value;
-			}
-		}
-	}
-}
-
-export default module
\ No newline at end of file
diff --git a/uview-ui/libs/util/area.js b/uview-ui/libs/util/area.js
deleted file mode 100644
index 0d602e9..0000000
--- a/uview-ui/libs/util/area.js
+++ /dev/null
@@ -1 +0,0 @@
-var areaData=[[[{"label":"东城区","value":"110101"},{"label":"西城区","value":"110102"},{"label":"朝阳区","value":"110105"},{"label":"丰台区","value":"110106"},{"label":"石景山区","value":"110107"},{"label":"海淀区","value":"110108"},{"label":"门头沟区","value":"110109"},{"label":"房山区","value":"110111"},{"label":"通州区","value":"110112"},{"label":"顺义区","value":"110113"},{"label":"昌平区","value":"110114"},{"label":"大兴区","value":"110115"},{"label":"怀柔区","value":"110116"},{"label":"平谷区","value":"110117"},{"label":"密云区","value":"110118"},{"label":"延庆区","value":"110119"}]],[[{"label":"和平区","value":"120101"},{"label":"河东区","value":"120102"},{"label":"河西区","value":"120103"},{"label":"南开区","value":"120104"},{"label":"河北区","value":"120105"},{"label":"红桥区","value":"120106"},{"label":"东丽区","value":"120110"},{"label":"西青区","value":"120111"},{"label":"津南区","value":"120112"},{"label":"北辰区","value":"120113"},{"label":"武清区","value":"120114"},{"label":"宝坻区","value":"120115"},{"label":"滨海新区","value":"120116"},{"label":"宁河区","value":"120117"},{"label":"静海区","value":"120118"},{"label":"蓟州区","value":"120119"}]],[[{"label":"长安区","value":"130102"},{"label":"桥西区","value":"130104"},{"label":"新华区","value":"130105"},{"label":"井陉矿区","value":"130107"},{"label":"裕华区","value":"130108"},{"label":"藁城区","value":"130109"},{"label":"鹿泉区","value":"130110"},{"label":"栾城区","value":"130111"},{"label":"井陉县","value":"130121"},{"label":"正定县","value":"130123"},{"label":"行唐县","value":"130125"},{"label":"灵寿县","value":"130126"},{"label":"高邑县","value":"130127"},{"label":"深泽县","value":"130128"},{"label":"赞皇县","value":"130129"},{"label":"无极县","value":"130130"},{"label":"平山县","value":"130131"},{"label":"元氏县","value":"130132"},{"label":"赵县","value":"130133"},{"label":"石家庄高新技术产业开发区","value":"130171"},{"label":"石家庄循环化工园区","value":"130172"},{"label":"辛集市","value":"130181"},{"label":"晋州市","value":"130183"},{"label":"新乐市","value":"130184"}],[{"label":"路南区","value":"130202"},{"label":"路北区","value":"130203"},{"label":"古冶区","value":"130204"},{"label":"开平区","value":"130205"},{"label":"丰南区","value":"130207"},{"label":"丰润区","value":"130208"},{"label":"曹妃甸区","value":"130209"},{"label":"滦县","value":"130223"},{"label":"滦南县","value":"130224"},{"label":"乐亭县","value":"130225"},{"label":"迁西县","value":"130227"},{"label":"玉田县","value":"130229"},{"label":"唐山市芦台经济技术开发区","value":"130271"},{"label":"唐山市汉沽管理区","value":"130272"},{"label":"唐山高新技术产业开发区","value":"130273"},{"label":"河北唐山海港经济开发区","value":"130274"},{"label":"遵化市","value":"130281"},{"label":"迁安市","value":"130283"}],[{"label":"海港区","value":"130302"},{"label":"山海关区","value":"130303"},{"label":"北戴河区","value":"130304"},{"label":"抚宁区","value":"130306"},{"label":"青龙满族自治县","value":"130321"},{"label":"昌黎县","value":"130322"},{"label":"卢龙县","value":"130324"},{"label":"秦皇岛市经济技术开发区","value":"130371"},{"label":"北戴河新区","value":"130372"}],[{"label":"邯山区","value":"130402"},{"label":"丛台区","value":"130403"},{"label":"复兴区","value":"130404"},{"label":"峰峰矿区","value":"130406"},{"label":"肥乡区","value":"130407"},{"label":"永年区","value":"130408"},{"label":"临漳县","value":"130423"},{"label":"成安县","value":"130424"},{"label":"大名县","value":"130425"},{"label":"涉县","value":"130426"},{"label":"磁县","value":"130427"},{"label":"邱县","value":"130430"},{"label":"鸡泽县","value":"130431"},{"label":"广平县","value":"130432"},{"label":"馆陶县","value":"130433"},{"label":"魏县","value":"130434"},{"label":"曲周县","value":"130435"},{"label":"邯郸经济技术开发区","value":"130471"},{"label":"邯郸冀南新区","value":"130473"},{"label":"武安市","value":"130481"}],[{"label":"桥东区","value":"130502"},{"label":"桥西区","value":"130503"},{"label":"邢台县","value":"130521"},{"label":"临城县","value":"130522"},{"label":"内丘县","value":"130523"},{"label":"柏乡县","value":"130524"},{"label":"隆尧县","value":"130525"},{"label":"任县","value":"130526"},{"label":"南和县","value":"130527"},{"label":"宁晋县","value":"130528"},{"label":"巨鹿县","value":"130529"},{"label":"新河县","value":"130530"},{"label":"广宗县","value":"130531"},{"label":"平乡县","value":"130532"},{"label":"威县","value":"130533"},{"label":"清河县","value":"130534"},{"label":"临西县","value":"130535"},{"label":"河北邢台经济开发区","value":"130571"},{"label":"南宫市","value":"130581"},{"label":"沙河市","value":"130582"}],[{"label":"竞秀区","value":"130602"},{"label":"莲池区","value":"130606"},{"label":"满城区","value":"130607"},{"label":"清苑区","value":"130608"},{"label":"徐水区","value":"130609"},{"label":"涞水县","value":"130623"},{"label":"阜平县","value":"130624"},{"label":"定兴县","value":"130626"},{"label":"唐县","value":"130627"},{"label":"高阳县","value":"130628"},{"label":"容城县","value":"130629"},{"label":"涞源县","value":"130630"},{"label":"望都县","value":"130631"},{"label":"安新县","value":"130632"},{"label":"易县","value":"130633"},{"label":"曲阳县","value":"130634"},{"label":"蠡县","value":"130635"},{"label":"顺平县","value":"130636"},{"label":"博野县","value":"130637"},{"label":"雄县","value":"130638"},{"label":"保定高新技术产业开发区","value":"130671"},{"label":"保定白沟新城","value":"130672"},{"label":"涿州市","value":"130681"},{"label":"定州市","value":"130682"},{"label":"安国市","value":"130683"},{"label":"高碑店市","value":"130684"}],[{"label":"桥东区","value":"130702"},{"label":"桥西区","value":"130703"},{"label":"宣化区","value":"130705"},{"label":"下花园区","value":"130706"},{"label":"万全区","value":"130708"},{"label":"崇礼区","value":"130709"},{"label":"张北县","value":"130722"},{"label":"康保县","value":"130723"},{"label":"沽源县","value":"130724"},{"label":"尚义县","value":"130725"},{"label":"蔚县","value":"130726"},{"label":"阳原县","value":"130727"},{"label":"怀安县","value":"130728"},{"label":"怀来县","value":"130730"},{"label":"涿鹿县","value":"130731"},{"label":"赤城县","value":"130732"},{"label":"张家口市高新技术产业开发区","value":"130771"},{"label":"张家口市察北管理区","value":"130772"},{"label":"张家口市塞北管理区","value":"130773"}],[{"label":"双桥区","value":"130802"},{"label":"双滦区","value":"130803"},{"label":"鹰手营子矿区","value":"130804"},{"label":"承德县","value":"130821"},{"label":"兴隆县","value":"130822"},{"label":"滦平县","value":"130824"},{"label":"隆化县","value":"130825"},{"label":"丰宁满族自治县","value":"130826"},{"label":"宽城满族自治县","value":"130827"},{"label":"围场满族蒙古族自治县","value":"130828"},{"label":"承德高新技术产业开发区","value":"130871"},{"label":"平泉市","value":"130881"}],[{"label":"新华区","value":"130902"},{"label":"运河区","value":"130903"},{"label":"沧县","value":"130921"},{"label":"青县","value":"130922"},{"label":"东光县","value":"130923"},{"label":"海兴县","value":"130924"},{"label":"盐山县","value":"130925"},{"label":"肃宁县","value":"130926"},{"label":"南皮县","value":"130927"},{"label":"吴桥县","value":"130928"},{"label":"献县","value":"130929"},{"label":"孟村回族自治县","value":"130930"},{"label":"河北沧州经济开发区","value":"130971"},{"label":"沧州高新技术产业开发区","value":"130972"},{"label":"沧州渤海新区","value":"130973"},{"label":"泊头市","value":"130981"},{"label":"任丘市","value":"130982"},{"label":"黄骅市","value":"130983"},{"label":"河间市","value":"130984"}],[{"label":"安次区","value":"131002"},{"label":"广阳区","value":"131003"},{"label":"固安县","value":"131022"},{"label":"永清县","value":"131023"},{"label":"香河县","value":"131024"},{"label":"大城县","value":"131025"},{"label":"文安县","value":"131026"},{"label":"大厂回族自治县","value":"131028"},{"label":"廊坊经济技术开发区","value":"131071"},{"label":"霸州市","value":"131081"},{"label":"三河市","value":"131082"}],[{"label":"桃城区","value":"131102"},{"label":"冀州区","value":"131103"},{"label":"枣强县","value":"131121"},{"label":"武邑县","value":"131122"},{"label":"武强县","value":"131123"},{"label":"饶阳县","value":"131124"},{"label":"安平县","value":"131125"},{"label":"故城县","value":"131126"},{"label":"景县","value":"131127"},{"label":"阜城县","value":"131128"},{"label":"河北衡水经济开发区","value":"131171"},{"label":"衡水滨湖新区","value":"131172"},{"label":"深州市","value":"131182"}]],[[{"label":"小店区","value":"140105"},{"label":"迎泽区","value":"140106"},{"label":"杏花岭区","value":"140107"},{"label":"尖草坪区","value":"140108"},{"label":"万柏林区","value":"140109"},{"label":"晋源区","value":"140110"},{"label":"清徐县","value":"140121"},{"label":"阳曲县","value":"140122"},{"label":"娄烦县","value":"140123"},{"label":"山西转型综合改革示范区","value":"140171"},{"label":"古交市","value":"140181"}],[{"label":"城区","value":"140202"},{"label":"矿区","value":"140203"},{"label":"南郊区","value":"140211"},{"label":"新荣区","value":"140212"},{"label":"阳高县","value":"140221"},{"label":"天镇县","value":"140222"},{"label":"广灵县","value":"140223"},{"label":"灵丘县","value":"140224"},{"label":"浑源县","value":"140225"},{"label":"左云县","value":"140226"},{"label":"大同县","value":"140227"},{"label":"山西大同经济开发区","value":"140271"}],[{"label":"城区","value":"140302"},{"label":"矿区","value":"140303"},{"label":"郊区","value":"140311"},{"label":"平定县","value":"140321"},{"label":"盂县","value":"140322"},{"label":"山西阳泉经济开发区","value":"140371"}],[{"label":"城区","value":"140402"},{"label":"郊区","value":"140411"},{"label":"长治县","value":"140421"},{"label":"襄垣县","value":"140423"},{"label":"屯留县","value":"140424"},{"label":"平顺县","value":"140425"},{"label":"黎城县","value":"140426"},{"label":"壶关县","value":"140427"},{"label":"长子县","value":"140428"},{"label":"武乡县","value":"140429"},{"label":"沁县","value":"140430"},{"label":"沁源县","value":"140431"},{"label":"山西长治高新技术产业园区","value":"140471"},{"label":"潞城市","value":"140481"}],[{"label":"城区","value":"140502"},{"label":"沁水县","value":"140521"},{"label":"阳城县","value":"140522"},{"label":"陵川县","value":"140524"},{"label":"泽州县","value":"140525"},{"label":"高平市","value":"140581"}],[{"label":"朔城区","value":"140602"},{"label":"平鲁区","value":"140603"},{"label":"山阴县","value":"140621"},{"label":"应县","value":"140622"},{"label":"右玉县","value":"140623"},{"label":"怀仁县","value":"140624"},{"label":"山西朔州经济开发区","value":"140671"}],[{"label":"榆次区","value":"140702"},{"label":"榆社县","value":"140721"},{"label":"左权县","value":"140722"},{"label":"和顺县","value":"140723"},{"label":"昔阳县","value":"140724"},{"label":"寿阳县","value":"140725"},{"label":"太谷县","value":"140726"},{"label":"祁县","value":"140727"},{"label":"平遥县","value":"140728"},{"label":"灵石县","value":"140729"},{"label":"介休市","value":"140781"}],[{"label":"盐湖区","value":"140802"},{"label":"临猗县","value":"140821"},{"label":"万荣县","value":"140822"},{"label":"闻喜县","value":"140823"},{"label":"稷山县","value":"140824"},{"label":"新绛县","value":"140825"},{"label":"绛县","value":"140826"},{"label":"垣曲县","value":"140827"},{"label":"夏县","value":"140828"},{"label":"平陆县","value":"140829"},{"label":"芮城县","value":"140830"},{"label":"永济市","value":"140881"},{"label":"河津市","value":"140882"}],[{"label":"忻府区","value":"140902"},{"label":"定襄县","value":"140921"},{"label":"五台县","value":"140922"},{"label":"代县","value":"140923"},{"label":"繁峙县","value":"140924"},{"label":"宁武县","value":"140925"},{"label":"静乐县","value":"140926"},{"label":"神池县","value":"140927"},{"label":"五寨县","value":"140928"},{"label":"岢岚县","value":"140929"},{"label":"河曲县","value":"140930"},{"label":"保德县","value":"140931"},{"label":"偏关县","value":"140932"},{"label":"五台山风景名胜区","value":"140971"},{"label":"原平市","value":"140981"}],[{"label":"尧都区","value":"141002"},{"label":"曲沃县","value":"141021"},{"label":"翼城县","value":"141022"},{"label":"襄汾县","value":"141023"},{"label":"洪洞县","value":"141024"},{"label":"古县","value":"141025"},{"label":"安泽县","value":"141026"},{"label":"浮山县","value":"141027"},{"label":"吉县","value":"141028"},{"label":"乡宁县","value":"141029"},{"label":"大宁县","value":"141030"},{"label":"隰县","value":"141031"},{"label":"永和县","value":"141032"},{"label":"蒲县","value":"141033"},{"label":"汾西县","value":"141034"},{"label":"侯马市","value":"141081"},{"label":"霍州市","value":"141082"}],[{"label":"离石区","value":"141102"},{"label":"文水县","value":"141121"},{"label":"交城县","value":"141122"},{"label":"兴县","value":"141123"},{"label":"临县","value":"141124"},{"label":"柳林县","value":"141125"},{"label":"石楼县","value":"141126"},{"label":"岚县","value":"141127"},{"label":"方山县","value":"141128"},{"label":"中阳县","value":"141129"},{"label":"交口县","value":"141130"},{"label":"孝义市","value":"141181"},{"label":"汾阳市","value":"141182"}]],[[{"label":"新城区","value":"150102"},{"label":"回民区","value":"150103"},{"label":"玉泉区","value":"150104"},{"label":"赛罕区","value":"150105"},{"label":"土默特左旗","value":"150121"},{"label":"托克托县","value":"150122"},{"label":"和林格尔县","value":"150123"},{"label":"清水河县","value":"150124"},{"label":"武川县","value":"150125"},{"label":"呼和浩特金海工业园区","value":"150171"},{"label":"呼和浩特经济技术开发区","value":"150172"}],[{"label":"东河区","value":"150202"},{"label":"昆都仑区","value":"150203"},{"label":"青山区","value":"150204"},{"label":"石拐区","value":"150205"},{"label":"白云鄂博矿区","value":"150206"},{"label":"九原区","value":"150207"},{"label":"土默特右旗","value":"150221"},{"label":"固阳县","value":"150222"},{"label":"达尔罕茂明安联合旗","value":"150223"},{"label":"包头稀土高新技术产业开发区","value":"150271"}],[{"label":"海勃湾区","value":"150302"},{"label":"海南区","value":"150303"},{"label":"乌达区","value":"150304"}],[{"label":"红山区","value":"150402"},{"label":"元宝山区","value":"150403"},{"label":"松山区","value":"150404"},{"label":"阿鲁科尔沁旗","value":"150421"},{"label":"巴林左旗","value":"150422"},{"label":"巴林右旗","value":"150423"},{"label":"林西县","value":"150424"},{"label":"克什克腾旗","value":"150425"},{"label":"翁牛特旗","value":"150426"},{"label":"喀喇沁旗","value":"150428"},{"label":"宁城县","value":"150429"},{"label":"敖汉旗","value":"150430"}],[{"label":"科尔沁区","value":"150502"},{"label":"科尔沁左翼中旗","value":"150521"},{"label":"科尔沁左翼后旗","value":"150522"},{"label":"开鲁县","value":"150523"},{"label":"库伦旗","value":"150524"},{"label":"奈曼旗","value":"150525"},{"label":"扎鲁特旗","value":"150526"},{"label":"通辽经济技术开发区","value":"150571"},{"label":"霍林郭勒市","value":"150581"}],[{"label":"东胜区","value":"150602"},{"label":"康巴什区","value":"150603"},{"label":"达拉特旗","value":"150621"},{"label":"准格尔旗","value":"150622"},{"label":"鄂托克前旗","value":"150623"},{"label":"鄂托克旗","value":"150624"},{"label":"杭锦旗","value":"150625"},{"label":"乌审旗","value":"150626"},{"label":"伊金霍洛旗","value":"150627"}],[{"label":"海拉尔区","value":"150702"},{"label":"扎赉诺尔区","value":"150703"},{"label":"阿荣旗","value":"150721"},{"label":"莫力达瓦达斡尔族自治旗","value":"150722"},{"label":"鄂伦春自治旗","value":"150723"},{"label":"鄂温克族自治旗","value":"150724"},{"label":"陈巴尔虎旗","value":"150725"},{"label":"新巴尔虎左旗","value":"150726"},{"label":"新巴尔虎右旗","value":"150727"},{"label":"满洲里市","value":"150781"},{"label":"牙克石市","value":"150782"},{"label":"扎兰屯市","value":"150783"},{"label":"额尔古纳市","value":"150784"},{"label":"根河市","value":"150785"}],[{"label":"临河区","value":"150802"},{"label":"五原县","value":"150821"},{"label":"磴口县","value":"150822"},{"label":"乌拉特前旗","value":"150823"},{"label":"乌拉特中旗","value":"150824"},{"label":"乌拉特后旗","value":"150825"},{"label":"杭锦后旗","value":"150826"}],[{"label":"集宁区","value":"150902"},{"label":"卓资县","value":"150921"},{"label":"化德县","value":"150922"},{"label":"商都县","value":"150923"},{"label":"兴和县","value":"150924"},{"label":"凉城县","value":"150925"},{"label":"察哈尔右翼前旗","value":"150926"},{"label":"察哈尔右翼中旗","value":"150927"},{"label":"察哈尔右翼后旗","value":"150928"},{"label":"四子王旗","value":"150929"},{"label":"丰镇市","value":"150981"}],[{"label":"乌兰浩特市","value":"152201"},{"label":"阿尔山市","value":"152202"},{"label":"科尔沁右翼前旗","value":"152221"},{"label":"科尔沁右翼中旗","value":"152222"},{"label":"扎赉特旗","value":"152223"},{"label":"突泉县","value":"152224"}],[{"label":"二连浩特市","value":"152501"},{"label":"锡林浩特市","value":"152502"},{"label":"阿巴嘎旗","value":"152522"},{"label":"苏尼特左旗","value":"152523"},{"label":"苏尼特右旗","value":"152524"},{"label":"东乌珠穆沁旗","value":"152525"},{"label":"西乌珠穆沁旗","value":"152526"},{"label":"太仆寺旗","value":"152527"},{"label":"镶黄旗","value":"152528"},{"label":"正镶白旗","value":"152529"},{"label":"正蓝旗","value":"152530"},{"label":"多伦县","value":"152531"},{"label":"乌拉盖管委会","value":"152571"}],[{"label":"阿拉善左旗","value":"152921"},{"label":"阿拉善右旗","value":"152922"},{"label":"额济纳旗","value":"152923"},{"label":"内蒙古阿拉善经济开发区","value":"152971"}]],[[{"label":"和平区","value":"210102"},{"label":"沈河区","value":"210103"},{"label":"大东区","value":"210104"},{"label":"皇姑区","value":"210105"},{"label":"铁西区","value":"210106"},{"label":"苏家屯区","value":"210111"},{"label":"浑南区","value":"210112"},{"label":"沈北新区","value":"210113"},{"label":"于洪区","value":"210114"},{"label":"辽中区","value":"210115"},{"label":"康平县","value":"210123"},{"label":"法库县","value":"210124"},{"label":"新民市","value":"210181"}],[{"label":"中山区","value":"210202"},{"label":"西岗区","value":"210203"},{"label":"沙河口区","value":"210204"},{"label":"甘井子区","value":"210211"},{"label":"旅顺口区","value":"210212"},{"label":"金州区","value":"210213"},{"label":"普兰店区","value":"210214"},{"label":"长海县","value":"210224"},{"label":"瓦房店市","value":"210281"},{"label":"庄河市","value":"210283"}],[{"label":"铁东区","value":"210302"},{"label":"铁西区","value":"210303"},{"label":"立山区","value":"210304"},{"label":"千山区","value":"210311"},{"label":"台安县","value":"210321"},{"label":"岫岩满族自治县","value":"210323"},{"label":"海城市","value":"210381"}],[{"label":"新抚区","value":"210402"},{"label":"东洲区","value":"210403"},{"label":"望花区","value":"210404"},{"label":"顺城区","value":"210411"},{"label":"抚顺县","value":"210421"},{"label":"新宾满族自治县","value":"210422"},{"label":"清原满族自治县","value":"210423"}],[{"label":"平山区","value":"210502"},{"label":"溪湖区","value":"210503"},{"label":"明山区","value":"210504"},{"label":"南芬区","value":"210505"},{"label":"本溪满族自治县","value":"210521"},{"label":"桓仁满族自治县","value":"210522"}],[{"label":"元宝区","value":"210602"},{"label":"振兴区","value":"210603"},{"label":"振安区","value":"210604"},{"label":"宽甸满族自治县","value":"210624"},{"label":"东港市","value":"210681"},{"label":"凤城市","value":"210682"}],[{"label":"古塔区","value":"210702"},{"label":"凌河区","value":"210703"},{"label":"太和区","value":"210711"},{"label":"黑山县","value":"210726"},{"label":"义县","value":"210727"},{"label":"凌海市","value":"210781"},{"label":"北镇市","value":"210782"}],[{"label":"站前区","value":"210802"},{"label":"西市区","value":"210803"},{"label":"鲅鱼圈区","value":"210804"},{"label":"老边区","value":"210811"},{"label":"盖州市","value":"210881"},{"label":"大石桥市","value":"210882"}],[{"label":"海州区","value":"210902"},{"label":"新邱区","value":"210903"},{"label":"太平区","value":"210904"},{"label":"清河门区","value":"210905"},{"label":"细河区","value":"210911"},{"label":"阜新蒙古族自治县","value":"210921"},{"label":"彰武县","value":"210922"}],[{"label":"白塔区","value":"211002"},{"label":"文圣区","value":"211003"},{"label":"宏伟区","value":"211004"},{"label":"弓长岭区","value":"211005"},{"label":"太子河区","value":"211011"},{"label":"辽阳县","value":"211021"},{"label":"灯塔市","value":"211081"}],[{"label":"双台子区","value":"211102"},{"label":"兴隆台区","value":"211103"},{"label":"大洼区","value":"211104"},{"label":"盘山县","value":"211122"}],[{"label":"银州区","value":"211202"},{"label":"清河区","value":"211204"},{"label":"铁岭县","value":"211221"},{"label":"西丰县","value":"211223"},{"label":"昌图县","value":"211224"},{"label":"调兵山市","value":"211281"},{"label":"开原市","value":"211282"}],[{"label":"双塔区","value":"211302"},{"label":"龙城区","value":"211303"},{"label":"朝阳县","value":"211321"},{"label":"建平县","value":"211322"},{"label":"喀喇沁左翼蒙古族自治县","value":"211324"},{"label":"北票市","value":"211381"},{"label":"凌源市","value":"211382"}],[{"label":"连山区","value":"211402"},{"label":"龙港区","value":"211403"},{"label":"南票区","value":"211404"},{"label":"绥中县","value":"211421"},{"label":"建昌县","value":"211422"},{"label":"兴城市","value":"211481"}]],[[{"label":"南关区","value":"220102"},{"label":"宽城区","value":"220103"},{"label":"朝阳区","value":"220104"},{"label":"二道区","value":"220105"},{"label":"绿园区","value":"220106"},{"label":"双阳区","value":"220112"},{"label":"九台区","value":"220113"},{"label":"农安县","value":"220122"},{"label":"长春经济技术开发区","value":"220171"},{"label":"长春净月高新技术产业开发区","value":"220172"},{"label":"长春高新技术产业开发区","value":"220173"},{"label":"长春汽车经济技术开发区","value":"220174"},{"label":"榆树市","value":"220182"},{"label":"德惠市","value":"220183"}],[{"label":"昌邑区","value":"220202"},{"label":"龙潭区","value":"220203"},{"label":"船营区","value":"220204"},{"label":"丰满区","value":"220211"},{"label":"永吉县","value":"220221"},{"label":"吉林经济开发区","value":"220271"},{"label":"吉林高新技术产业开发区","value":"220272"},{"label":"吉林中国新加坡食品区","value":"220273"},{"label":"蛟河市","value":"220281"},{"label":"桦甸市","value":"220282"},{"label":"舒兰市","value":"220283"},{"label":"磐石市","value":"220284"}],[{"label":"铁西区","value":"220302"},{"label":"铁东区","value":"220303"},{"label":"梨树县","value":"220322"},{"label":"伊通满族自治县","value":"220323"},{"label":"公主岭市","value":"220381"},{"label":"双辽市","value":"220382"}],[{"label":"龙山区","value":"220402"},{"label":"西安区","value":"220403"},{"label":"东丰县","value":"220421"},{"label":"东辽县","value":"220422"}],[{"label":"东昌区","value":"220502"},{"label":"二道江区","value":"220503"},{"label":"通化县","value":"220521"},{"label":"辉南县","value":"220523"},{"label":"柳河县","value":"220524"},{"label":"梅河口市","value":"220581"},{"label":"集安市","value":"220582"}],[{"label":"浑江区","value":"220602"},{"label":"江源区","value":"220605"},{"label":"抚松县","value":"220621"},{"label":"靖宇县","value":"220622"},{"label":"长白朝鲜族自治县","value":"220623"},{"label":"临江市","value":"220681"}],[{"label":"宁江区","value":"220702"},{"label":"前郭尔罗斯蒙古族自治县","value":"220721"},{"label":"长岭县","value":"220722"},{"label":"乾安县","value":"220723"},{"label":"吉林松原经济开发区","value":"220771"},{"label":"扶余市","value":"220781"}],[{"label":"洮北区","value":"220802"},{"label":"镇赉县","value":"220821"},{"label":"通榆县","value":"220822"},{"label":"吉林白城经济开发区","value":"220871"},{"label":"洮南市","value":"220881"},{"label":"大安市","value":"220882"}],[{"label":"延吉市","value":"222401"},{"label":"图们市","value":"222402"},{"label":"敦化市","value":"222403"},{"label":"珲春市","value":"222404"},{"label":"龙井市","value":"222405"},{"label":"和龙市","value":"222406"},{"label":"汪清县","value":"222424"},{"label":"安图县","value":"222426"}]],[[{"label":"道里区","value":"230102"},{"label":"南岗区","value":"230103"},{"label":"道外区","value":"230104"},{"label":"平房区","value":"230108"},{"label":"松北区","value":"230109"},{"label":"香坊区","value":"230110"},{"label":"呼兰区","value":"230111"},{"label":"阿城区","value":"230112"},{"label":"双城区","value":"230113"},{"label":"依兰县","value":"230123"},{"label":"方正县","value":"230124"},{"label":"宾县","value":"230125"},{"label":"巴彦县","value":"230126"},{"label":"木兰县","value":"230127"},{"label":"通河县","value":"230128"},{"label":"延寿县","value":"230129"},{"label":"尚志市","value":"230183"},{"label":"五常市","value":"230184"}],[{"label":"龙沙区","value":"230202"},{"label":"建华区","value":"230203"},{"label":"铁锋区","value":"230204"},{"label":"昂昂溪区","value":"230205"},{"label":"富拉尔基区","value":"230206"},{"label":"碾子山区","value":"230207"},{"label":"梅里斯达斡尔族区","value":"230208"},{"label":"龙江县","value":"230221"},{"label":"依安县","value":"230223"},{"label":"泰来县","value":"230224"},{"label":"甘南县","value":"230225"},{"label":"富裕县","value":"230227"},{"label":"克山县","value":"230229"},{"label":"克东县","value":"230230"},{"label":"拜泉县","value":"230231"},{"label":"讷河市","value":"230281"}],[{"label":"鸡冠区","value":"230302"},{"label":"恒山区","value":"230303"},{"label":"滴道区","value":"230304"},{"label":"梨树区","value":"230305"},{"label":"城子河区","value":"230306"},{"label":"麻山区","value":"230307"},{"label":"鸡东县","value":"230321"},{"label":"虎林市","value":"230381"},{"label":"密山市","value":"230382"}],[{"label":"向阳区","value":"230402"},{"label":"工农区","value":"230403"},{"label":"南山区","value":"230404"},{"label":"兴安区","value":"230405"},{"label":"东山区","value":"230406"},{"label":"兴山区","value":"230407"},{"label":"萝北县","value":"230421"},{"label":"绥滨县","value":"230422"}],[{"label":"尖山区","value":"230502"},{"label":"岭东区","value":"230503"},{"label":"四方台区","value":"230505"},{"label":"宝山区","value":"230506"},{"label":"集贤县","value":"230521"},{"label":"友谊县","value":"230522"},{"label":"宝清县","value":"230523"},{"label":"饶河县","value":"230524"}],[{"label":"萨尔图区","value":"230602"},{"label":"龙凤区","value":"230603"},{"label":"让胡路区","value":"230604"},{"label":"红岗区","value":"230605"},{"label":"大同区","value":"230606"},{"label":"肇州县","value":"230621"},{"label":"肇源县","value":"230622"},{"label":"林甸县","value":"230623"},{"label":"杜尔伯特蒙古族自治县","value":"230624"},{"label":"大庆高新技术产业开发区","value":"230671"}],[{"label":"伊春区","value":"230702"},{"label":"南岔区","value":"230703"},{"label":"友好区","value":"230704"},{"label":"西林区","value":"230705"},{"label":"翠峦区","value":"230706"},{"label":"新青区","value":"230707"},{"label":"美溪区","value":"230708"},{"label":"金山屯区","value":"230709"},{"label":"五营区","value":"230710"},{"label":"乌马河区","value":"230711"},{"label":"汤旺河区","value":"230712"},{"label":"带岭区","value":"230713"},{"label":"乌伊岭区","value":"230714"},{"label":"红星区","value":"230715"},{"label":"上甘岭区","value":"230716"},{"label":"嘉荫县","value":"230722"},{"label":"铁力市","value":"230781"}],[{"label":"向阳区","value":"230803"},{"label":"前进区","value":"230804"},{"label":"东风区","value":"230805"},{"label":"郊区","value":"230811"},{"label":"桦南县","value":"230822"},{"label":"桦川县","value":"230826"},{"label":"汤原县","value":"230828"},{"label":"同江市","value":"230881"},{"label":"富锦市","value":"230882"},{"label":"抚远市","value":"230883"}],[{"label":"新兴区","value":"230902"},{"label":"桃山区","value":"230903"},{"label":"茄子河区","value":"230904"},{"label":"勃利县","value":"230921"}],[{"label":"东安区","value":"231002"},{"label":"阳明区","value":"231003"},{"label":"爱民区","value":"231004"},{"label":"西安区","value":"231005"},{"label":"林口县","value":"231025"},{"label":"牡丹江经济技术开发区","value":"231071"},{"label":"绥芬河市","value":"231081"},{"label":"海林市","value":"231083"},{"label":"宁安市","value":"231084"},{"label":"穆棱市","value":"231085"},{"label":"东宁市","value":"231086"}],[{"label":"爱辉区","value":"231102"},{"label":"嫩江县","value":"231121"},{"label":"逊克县","value":"231123"},{"label":"孙吴县","value":"231124"},{"label":"北安市","value":"231181"},{"label":"五大连池市","value":"231182"}],[{"label":"北林区","value":"231202"},{"label":"望奎县","value":"231221"},{"label":"兰西县","value":"231222"},{"label":"青冈县","value":"231223"},{"label":"庆安县","value":"231224"},{"label":"明水县","value":"231225"},{"label":"绥棱县","value":"231226"},{"label":"安达市","value":"231281"},{"label":"肇东市","value":"231282"},{"label":"海伦市","value":"231283"}],[{"label":"加格达奇区","value":"232701"},{"label":"松岭区","value":"232702"},{"label":"新林区","value":"232703"},{"label":"呼中区","value":"232704"},{"label":"呼玛县","value":"232721"},{"label":"塔河县","value":"232722"},{"label":"漠河县","value":"232723"}]],[[{"label":"黄浦区","value":"310101"},{"label":"徐汇区","value":"310104"},{"label":"长宁区","value":"310105"},{"label":"静安区","value":"310106"},{"label":"普陀区","value":"310107"},{"label":"虹口区","value":"310109"},{"label":"杨浦区","value":"310110"},{"label":"闵行区","value":"310112"},{"label":"宝山区","value":"310113"},{"label":"嘉定区","value":"310114"},{"label":"浦东新区","value":"310115"},{"label":"金山区","value":"310116"},{"label":"松江区","value":"310117"},{"label":"青浦区","value":"310118"},{"label":"奉贤区","value":"310120"},{"label":"崇明区","value":"310151"}]],[[{"label":"玄武区","value":"320102"},{"label":"秦淮区","value":"320104"},{"label":"建邺区","value":"320105"},{"label":"鼓楼区","value":"320106"},{"label":"浦口区","value":"320111"},{"label":"栖霞区","value":"320113"},{"label":"雨花台区","value":"320114"},{"label":"江宁区","value":"320115"},{"label":"六合区","value":"320116"},{"label":"溧水区","value":"320117"},{"label":"高淳区","value":"320118"}],[{"label":"锡山区","value":"320205"},{"label":"惠山区","value":"320206"},{"label":"滨湖区","value":"320211"},{"label":"梁溪区","value":"320213"},{"label":"新吴区","value":"320214"},{"label":"江阴市","value":"320281"},{"label":"宜兴市","value":"320282"}],[{"label":"鼓楼区","value":"320302"},{"label":"云龙区","value":"320303"},{"label":"贾汪区","value":"320305"},{"label":"泉山区","value":"320311"},{"label":"铜山区","value":"320312"},{"label":"丰县","value":"320321"},{"label":"沛县","value":"320322"},{"label":"睢宁县","value":"320324"},{"label":"徐州经济技术开发区","value":"320371"},{"label":"新沂市","value":"320381"},{"label":"邳州市","value":"320382"}],[{"label":"天宁区","value":"320402"},{"label":"钟楼区","value":"320404"},{"label":"新北区","value":"320411"},{"label":"武进区","value":"320412"},{"label":"金坛区","value":"320413"},{"label":"溧阳市","value":"320481"}],[{"label":"虎丘区","value":"320505"},{"label":"吴中区","value":"320506"},{"label":"相城区","value":"320507"},{"label":"姑苏区","value":"320508"},{"label":"吴江区","value":"320509"},{"label":"苏州工业园区","value":"320571"},{"label":"常熟市","value":"320581"},{"label":"张家港市","value":"320582"},{"label":"昆山市","value":"320583"},{"label":"太仓市","value":"320585"}],[{"label":"崇川区","value":"320602"},{"label":"港闸区","value":"320611"},{"label":"通州区","value":"320612"},{"label":"海安县","value":"320621"},{"label":"如东县","value":"320623"},{"label":"南通经济技术开发区","value":"320671"},{"label":"启东市","value":"320681"},{"label":"如皋市","value":"320682"},{"label":"海门市","value":"320684"}],[{"label":"连云区","value":"320703"},{"label":"海州区","value":"320706"},{"label":"赣榆区","value":"320707"},{"label":"东海县","value":"320722"},{"label":"灌云县","value":"320723"},{"label":"灌南县","value":"320724"},{"label":"连云港经济技术开发区","value":"320771"},{"label":"连云港高新技术产业开发区","value":"320772"}],[{"label":"淮安区","value":"320803"},{"label":"淮阴区","value":"320804"},{"label":"清江浦区","value":"320812"},{"label":"洪泽区","value":"320813"},{"label":"涟水县","value":"320826"},{"label":"盱眙县","value":"320830"},{"label":"金湖县","value":"320831"},{"label":"淮安经济技术开发区","value":"320871"}],[{"label":"亭湖区","value":"320902"},{"label":"盐都区","value":"320903"},{"label":"大丰区","value":"320904"},{"label":"响水县","value":"320921"},{"label":"滨海县","value":"320922"},{"label":"阜宁县","value":"320923"},{"label":"射阳县","value":"320924"},{"label":"建湖县","value":"320925"},{"label":"盐城经济技术开发区","value":"320971"},{"label":"东台市","value":"320981"}],[{"label":"广陵区","value":"321002"},{"label":"邗江区","value":"321003"},{"label":"江都区","value":"321012"},{"label":"宝应县","value":"321023"},{"label":"扬州经济技术开发区","value":"321071"},{"label":"仪征市","value":"321081"},{"label":"高邮市","value":"321084"}],[{"label":"京口区","value":"321102"},{"label":"润州区","value":"321111"},{"label":"丹徒区","value":"321112"},{"label":"镇江新区","value":"321171"},{"label":"丹阳市","value":"321181"},{"label":"扬中市","value":"321182"},{"label":"句容市","value":"321183"}],[{"label":"海陵区","value":"321202"},{"label":"高港区","value":"321203"},{"label":"姜堰区","value":"321204"},{"label":"泰州医药高新技术产业开发区","value":"321271"},{"label":"兴化市","value":"321281"},{"label":"靖江市","value":"321282"},{"label":"泰兴市","value":"321283"}],[{"label":"宿城区","value":"321302"},{"label":"宿豫区","value":"321311"},{"label":"沭阳县","value":"321322"},{"label":"泗阳县","value":"321323"},{"label":"泗洪县","value":"321324"},{"label":"宿迁经济技术开发区","value":"321371"}]],[[{"label":"上城区","value":"330102"},{"label":"下城区","value":"330103"},{"label":"江干区","value":"330104"},{"label":"拱墅区","value":"330105"},{"label":"西湖区","value":"330106"},{"label":"滨江区","value":"330108"},{"label":"萧山区","value":"330109"},{"label":"余杭区","value":"330110"},{"label":"富阳区","value":"330111"},{"label":"临安区","value":"330112"},{"label":"桐庐县","value":"330122"},{"label":"淳安县","value":"330127"},{"label":"建德市","value":"330182"}],[{"label":"海曙区","value":"330203"},{"label":"江北区","value":"330205"},{"label":"北仑区","value":"330206"},{"label":"镇海区","value":"330211"},{"label":"鄞州区","value":"330212"},{"label":"奉化区","value":"330213"},{"label":"象山县","value":"330225"},{"label":"宁海县","value":"330226"},{"label":"余姚市","value":"330281"},{"label":"慈溪市","value":"330282"}],[{"label":"鹿城区","value":"330302"},{"label":"龙湾区","value":"330303"},{"label":"瓯海区","value":"330304"},{"label":"洞头区","value":"330305"},{"label":"永嘉县","value":"330324"},{"label":"平阳县","value":"330326"},{"label":"苍南县","value":"330327"},{"label":"文成县","value":"330328"},{"label":"泰顺县","value":"330329"},{"label":"温州经济技术开发区","value":"330371"},{"label":"瑞安市","value":"330381"},{"label":"乐清市","value":"330382"}],[{"label":"南湖区","value":"330402"},{"label":"秀洲区","value":"330411"},{"label":"嘉善县","value":"330421"},{"label":"海盐县","value":"330424"},{"label":"海宁市","value":"330481"},{"label":"平湖市","value":"330482"},{"label":"桐乡市","value":"330483"}],[{"label":"吴兴区","value":"330502"},{"label":"南浔区","value":"330503"},{"label":"德清县","value":"330521"},{"label":"长兴县","value":"330522"},{"label":"安吉县","value":"330523"}],[{"label":"越城区","value":"330602"},{"label":"柯桥区","value":"330603"},{"label":"上虞区","value":"330604"},{"label":"新昌县","value":"330624"},{"label":"诸暨市","value":"330681"},{"label":"嵊州市","value":"330683"}],[{"label":"婺城区","value":"330702"},{"label":"金东区","value":"330703"},{"label":"武义县","value":"330723"},{"label":"浦江县","value":"330726"},{"label":"磐安县","value":"330727"},{"label":"兰溪市","value":"330781"},{"label":"义乌市","value":"330782"},{"label":"东阳市","value":"330783"},{"label":"永康市","value":"330784"}],[{"label":"柯城区","value":"330802"},{"label":"衢江区","value":"330803"},{"label":"常山县","value":"330822"},{"label":"开化县","value":"330824"},{"label":"龙游县","value":"330825"},{"label":"江山市","value":"330881"}],[{"label":"定海区","value":"330902"},{"label":"普陀区","value":"330903"},{"label":"岱山县","value":"330921"},{"label":"嵊泗县","value":"330922"}],[{"label":"椒江区","value":"331002"},{"label":"黄岩区","value":"331003"},{"label":"路桥区","value":"331004"},{"label":"三门县","value":"331022"},{"label":"天台县","value":"331023"},{"label":"仙居县","value":"331024"},{"label":"温岭市","value":"331081"},{"label":"临海市","value":"331082"},{"label":"玉环市","value":"331083"}],[{"label":"莲都区","value":"331102"},{"label":"青田县","value":"331121"},{"label":"缙云县","value":"331122"},{"label":"遂昌县","value":"331123"},{"label":"松阳县","value":"331124"},{"label":"云和县","value":"331125"},{"label":"庆元县","value":"331126"},{"label":"景宁畲族自治县","value":"331127"},{"label":"龙泉市","value":"331181"}]],[[{"label":"瑶海区","value":"340102"},{"label":"庐阳区","value":"340103"},{"label":"蜀山区","value":"340104"},{"label":"包河区","value":"340111"},{"label":"长丰县","value":"340121"},{"label":"肥东县","value":"340122"},{"label":"肥西县","value":"340123"},{"label":"庐江县","value":"340124"},{"label":"合肥高新技术产业开发区","value":"340171"},{"label":"合肥经济技术开发区","value":"340172"},{"label":"合肥新站高新技术产业开发区","value":"340173"},{"label":"巢湖市","value":"340181"}],[{"label":"镜湖区","value":"340202"},{"label":"弋江区","value":"340203"},{"label":"鸠江区","value":"340207"},{"label":"三山区","value":"340208"},{"label":"芜湖县","value":"340221"},{"label":"繁昌县","value":"340222"},{"label":"南陵县","value":"340223"},{"label":"无为县","value":"340225"},{"label":"芜湖经济技术开发区","value":"340271"},{"label":"安徽芜湖长江大桥经济开发区","value":"340272"}],[{"label":"龙子湖区","value":"340302"},{"label":"蚌山区","value":"340303"},{"label":"禹会区","value":"340304"},{"label":"淮上区","value":"340311"},{"label":"怀远县","value":"340321"},{"label":"五河县","value":"340322"},{"label":"固镇县","value":"340323"},{"label":"蚌埠市高新技术开发区","value":"340371"},{"label":"蚌埠市经济开发区","value":"340372"}],[{"label":"大通区","value":"340402"},{"label":"田家庵区","value":"340403"},{"label":"谢家集区","value":"340404"},{"label":"八公山区","value":"340405"},{"label":"潘集区","value":"340406"},{"label":"凤台县","value":"340421"},{"label":"寿县","value":"340422"}],[{"label":"花山区","value":"340503"},{"label":"雨山区","value":"340504"},{"label":"博望区","value":"340506"},{"label":"当涂县","value":"340521"},{"label":"含山县","value":"340522"},{"label":"和县","value":"340523"}],[{"label":"杜集区","value":"340602"},{"label":"相山区","value":"340603"},{"label":"烈山区","value":"340604"},{"label":"濉溪县","value":"340621"}],[{"label":"铜官区","value":"340705"},{"label":"义安区","value":"340706"},{"label":"郊区","value":"340711"},{"label":"枞阳县","value":"340722"}],[{"label":"迎江区","value":"340802"},{"label":"大观区","value":"340803"},{"label":"宜秀区","value":"340811"},{"label":"怀宁县","value":"340822"},{"label":"潜山县","value":"340824"},{"label":"太湖县","value":"340825"},{"label":"宿松县","value":"340826"},{"label":"望江县","value":"340827"},{"label":"岳西县","value":"340828"},{"label":"安徽安庆经济开发区","value":"340871"},{"label":"桐城市","value":"340881"}],[{"label":"屯溪区","value":"341002"},{"label":"黄山区","value":"341003"},{"label":"徽州区","value":"341004"},{"label":"歙县","value":"341021"},{"label":"休宁县","value":"341022"},{"label":"黟县","value":"341023"},{"label":"祁门县","value":"341024"}],[{"label":"琅琊区","value":"341102"},{"label":"南谯区","value":"341103"},{"label":"来安县","value":"341122"},{"label":"全椒县","value":"341124"},{"label":"定远县","value":"341125"},{"label":"凤阳县","value":"341126"},{"label":"苏滁现代产业园","value":"341171"},{"label":"滁州经济技术开发区","value":"341172"},{"label":"天长市","value":"341181"},{"label":"明光市","value":"341182"}],[{"label":"颍州区","value":"341202"},{"label":"颍东区","value":"341203"},{"label":"颍泉区","value":"341204"},{"label":"临泉县","value":"341221"},{"label":"太和县","value":"341222"},{"label":"阜南县","value":"341225"},{"label":"颍上县","value":"341226"},{"label":"阜阳合肥现代产业园区","value":"341271"},{"label":"阜阳经济技术开发区","value":"341272"},{"label":"界首市","value":"341282"}],[{"label":"埇桥区","value":"341302"},{"label":"砀山县","value":"341321"},{"label":"萧县","value":"341322"},{"label":"灵璧县","value":"341323"},{"label":"泗县","value":"341324"},{"label":"宿州马鞍山现代产业园区","value":"341371"},{"label":"宿州经济技术开发区","value":"341372"}],[{"label":"金安区","value":"341502"},{"label":"裕安区","value":"341503"},{"label":"叶集区","value":"341504"},{"label":"霍邱县","value":"341522"},{"label":"舒城县","value":"341523"},{"label":"金寨县","value":"341524"},{"label":"霍山县","value":"341525"}],[{"label":"谯城区","value":"341602"},{"label":"涡阳县","value":"341621"},{"label":"蒙城县","value":"341622"},{"label":"利辛县","value":"341623"}],[{"label":"贵池区","value":"341702"},{"label":"东至县","value":"341721"},{"label":"石台县","value":"341722"},{"label":"青阳县","value":"341723"}],[{"label":"宣州区","value":"341802"},{"label":"郎溪县","value":"341821"},{"label":"广德县","value":"341822"},{"label":"泾县","value":"341823"},{"label":"绩溪县","value":"341824"},{"label":"旌德县","value":"341825"},{"label":"宣城市经济开发区","value":"341871"},{"label":"宁国市","value":"341881"}]],[[{"label":"鼓楼区","value":"350102"},{"label":"台江区","value":"350103"},{"label":"仓山区","value":"350104"},{"label":"马尾区","value":"350105"},{"label":"晋安区","value":"350111"},{"label":"闽侯县","value":"350121"},{"label":"连江县","value":"350122"},{"label":"罗源县","value":"350123"},{"label":"闽清县","value":"350124"},{"label":"永泰县","value":"350125"},{"label":"平潭县","value":"350128"},{"label":"福清市","value":"350181"},{"label":"长乐市","value":"350182"}],[{"label":"思明区","value":"350203"},{"label":"海沧区","value":"350205"},{"label":"湖里区","value":"350206"},{"label":"集美区","value":"350211"},{"label":"同安区","value":"350212"},{"label":"翔安区","value":"350213"}],[{"label":"城厢区","value":"350302"},{"label":"涵江区","value":"350303"},{"label":"荔城区","value":"350304"},{"label":"秀屿区","value":"350305"},{"label":"仙游县","value":"350322"}],[{"label":"梅列区","value":"350402"},{"label":"三元区","value":"350403"},{"label":"明溪县","value":"350421"},{"label":"清流县","value":"350423"},{"label":"宁化县","value":"350424"},{"label":"大田县","value":"350425"},{"label":"尤溪县","value":"350426"},{"label":"沙县","value":"350427"},{"label":"将乐县","value":"350428"},{"label":"泰宁县","value":"350429"},{"label":"建宁县","value":"350430"},{"label":"永安市","value":"350481"}],[{"label":"鲤城区","value":"350502"},{"label":"丰泽区","value":"350503"},{"label":"洛江区","value":"350504"},{"label":"泉港区","value":"350505"},{"label":"惠安县","value":"350521"},{"label":"安溪县","value":"350524"},{"label":"永春县","value":"350525"},{"label":"德化县","value":"350526"},{"label":"金门县","value":"350527"},{"label":"石狮市","value":"350581"},{"label":"晋江市","value":"350582"},{"label":"南安市","value":"350583"}],[{"label":"芗城区","value":"350602"},{"label":"龙文区","value":"350603"},{"label":"云霄县","value":"350622"},{"label":"漳浦县","value":"350623"},{"label":"诏安县","value":"350624"},{"label":"长泰县","value":"350625"},{"label":"东山县","value":"350626"},{"label":"南靖县","value":"350627"},{"label":"平和县","value":"350628"},{"label":"华安县","value":"350629"},{"label":"龙海市","value":"350681"}],[{"label":"延平区","value":"350702"},{"label":"建阳区","value":"350703"},{"label":"顺昌县","value":"350721"},{"label":"浦城县","value":"350722"},{"label":"光泽县","value":"350723"},{"label":"松溪县","value":"350724"},{"label":"政和县","value":"350725"},{"label":"邵武市","value":"350781"},{"label":"武夷山市","value":"350782"},{"label":"建瓯市","value":"350783"}],[{"label":"新罗区","value":"350802"},{"label":"永定区","value":"350803"},{"label":"长汀县","value":"350821"},{"label":"上杭县","value":"350823"},{"label":"武平县","value":"350824"},{"label":"连城县","value":"350825"},{"label":"漳平市","value":"350881"}],[{"label":"蕉城区","value":"350902"},{"label":"霞浦县","value":"350921"},{"label":"古田县","value":"350922"},{"label":"屏南县","value":"350923"},{"label":"寿宁县","value":"350924"},{"label":"周宁县","value":"350925"},{"label":"柘荣县","value":"350926"},{"label":"福安市","value":"350981"},{"label":"福鼎市","value":"350982"}]],[[{"label":"东湖区","value":"360102"},{"label":"西湖区","value":"360103"},{"label":"青云谱区","value":"360104"},{"label":"湾里区","value":"360105"},{"label":"青山湖区","value":"360111"},{"label":"新建区","value":"360112"},{"label":"南昌县","value":"360121"},{"label":"安义县","value":"360123"},{"label":"进贤县","value":"360124"}],[{"label":"昌江区","value":"360202"},{"label":"珠山区","value":"360203"},{"label":"浮梁县","value":"360222"},{"label":"乐平市","value":"360281"}],[{"label":"安源区","value":"360302"},{"label":"湘东区","value":"360313"},{"label":"莲花县","value":"360321"},{"label":"上栗县","value":"360322"},{"label":"芦溪县","value":"360323"}],[{"label":"濂溪区","value":"360402"},{"label":"浔阳区","value":"360403"},{"label":"柴桑区","value":"360404"},{"label":"武宁县","value":"360423"},{"label":"修水县","value":"360424"},{"label":"永修县","value":"360425"},{"label":"德安县","value":"360426"},{"label":"都昌县","value":"360428"},{"label":"湖口县","value":"360429"},{"label":"彭泽县","value":"360430"},{"label":"瑞昌市","value":"360481"},{"label":"共青城市","value":"360482"},{"label":"庐山市","value":"360483"}],[{"label":"渝水区","value":"360502"},{"label":"分宜县","value":"360521"}],[{"label":"月湖区","value":"360602"},{"label":"余江县","value":"360622"},{"label":"贵溪市","value":"360681"}],[{"label":"章贡区","value":"360702"},{"label":"南康区","value":"360703"},{"label":"赣县区","value":"360704"},{"label":"信丰县","value":"360722"},{"label":"大余县","value":"360723"},{"label":"上犹县","value":"360724"},{"label":"崇义县","value":"360725"},{"label":"安远县","value":"360726"},{"label":"龙南县","value":"360727"},{"label":"定南县","value":"360728"},{"label":"全南县","value":"360729"},{"label":"宁都县","value":"360730"},{"label":"于都县","value":"360731"},{"label":"兴国县","value":"360732"},{"label":"会昌县","value":"360733"},{"label":"寻乌县","value":"360734"},{"label":"石城县","value":"360735"},{"label":"瑞金市","value":"360781"}],[{"label":"吉州区","value":"360802"},{"label":"青原区","value":"360803"},{"label":"吉安县","value":"360821"},{"label":"吉水县","value":"360822"},{"label":"峡江县","value":"360823"},{"label":"新干县","value":"360824"},{"label":"永丰县","value":"360825"},{"label":"泰和县","value":"360826"},{"label":"遂川县","value":"360827"},{"label":"万安县","value":"360828"},{"label":"安福县","value":"360829"},{"label":"永新县","value":"360830"},{"label":"井冈山市","value":"360881"}],[{"label":"袁州区","value":"360902"},{"label":"奉新县","value":"360921"},{"label":"万载县","value":"360922"},{"label":"上高县","value":"360923"},{"label":"宜丰县","value":"360924"},{"label":"靖安县","value":"360925"},{"label":"铜鼓县","value":"360926"},{"label":"丰城市","value":"360981"},{"label":"樟树市","value":"360982"},{"label":"高安市","value":"360983"}],[{"label":"临川区","value":"361002"},{"label":"东乡区","value":"361003"},{"label":"南城县","value":"361021"},{"label":"黎川县","value":"361022"},{"label":"南丰县","value":"361023"},{"label":"崇仁县","value":"361024"},{"label":"乐安县","value":"361025"},{"label":"宜黄县","value":"361026"},{"label":"金溪县","value":"361027"},{"label":"资溪县","value":"361028"},{"label":"广昌县","value":"361030"}],[{"label":"信州区","value":"361102"},{"label":"广丰区","value":"361103"},{"label":"上饶县","value":"361121"},{"label":"玉山县","value":"361123"},{"label":"铅山县","value":"361124"},{"label":"横峰县","value":"361125"},{"label":"弋阳县","value":"361126"},{"label":"余干县","value":"361127"},{"label":"鄱阳县","value":"361128"},{"label":"万年县","value":"361129"},{"label":"婺源县","value":"361130"},{"label":"德兴市","value":"361181"}]],[[{"label":"历下区","value":"370102"},{"label":"市中区","value":"370103"},{"label":"槐荫区","value":"370104"},{"label":"天桥区","value":"370105"},{"label":"历城区","value":"370112"},{"label":"长清区","value":"370113"},{"label":"章丘区","value":"370114"},{"label":"平阴县","value":"370124"},{"label":"济阳县","value":"370125"},{"label":"商河县","value":"370126"},{"label":"济南高新技术产业开发区","value":"370171"}],[{"label":"市南区","value":"370202"},{"label":"市北区","value":"370203"},{"label":"黄岛区","value":"370211"},{"label":"崂山区","value":"370212"},{"label":"李沧区","value":"370213"},{"label":"城阳区","value":"370214"},{"label":"即墨区","value":"370215"},{"label":"青岛高新技术产业开发区","value":"370271"},{"label":"胶州市","value":"370281"},{"label":"平度市","value":"370283"},{"label":"莱西市","value":"370285"}],[{"label":"淄川区","value":"370302"},{"label":"张店区","value":"370303"},{"label":"博山区","value":"370304"},{"label":"临淄区","value":"370305"},{"label":"周村区","value":"370306"},{"label":"桓台县","value":"370321"},{"label":"高青县","value":"370322"},{"label":"沂源县","value":"370323"}],[{"label":"市中区","value":"370402"},{"label":"薛城区","value":"370403"},{"label":"峄城区","value":"370404"},{"label":"台儿庄区","value":"370405"},{"label":"山亭区","value":"370406"},{"label":"滕州市","value":"370481"}],[{"label":"东营区","value":"370502"},{"label":"河口区","value":"370503"},{"label":"垦利区","value":"370505"},{"label":"利津县","value":"370522"},{"label":"广饶县","value":"370523"},{"label":"东营经济技术开发区","value":"370571"},{"label":"东营港经济开发区","value":"370572"}],[{"label":"芝罘区","value":"370602"},{"label":"福山区","value":"370611"},{"label":"牟平区","value":"370612"},{"label":"莱山区","value":"370613"},{"label":"长岛县","value":"370634"},{"label":"烟台高新技术产业开发区","value":"370671"},{"label":"烟台经济技术开发区","value":"370672"},{"label":"龙口市","value":"370681"},{"label":"莱阳市","value":"370682"},{"label":"莱州市","value":"370683"},{"label":"蓬莱市","value":"370684"},{"label":"招远市","value":"370685"},{"label":"栖霞市","value":"370686"},{"label":"海阳市","value":"370687"}],[{"label":"潍城区","value":"370702"},{"label":"寒亭区","value":"370703"},{"label":"坊子区","value":"370704"},{"label":"奎文区","value":"370705"},{"label":"临朐县","value":"370724"},{"label":"昌乐县","value":"370725"},{"label":"潍坊滨海经济技术开发区","value":"370772"},{"label":"青州市","value":"370781"},{"label":"诸城市","value":"370782"},{"label":"寿光市","value":"370783"},{"label":"安丘市","value":"370784"},{"label":"高密市","value":"370785"},{"label":"昌邑市","value":"370786"}],[{"label":"任城区","value":"370811"},{"label":"兖州区","value":"370812"},{"label":"微山县","value":"370826"},{"label":"鱼台县","value":"370827"},{"label":"金乡县","value":"370828"},{"label":"嘉祥县","value":"370829"},{"label":"汶上县","value":"370830"},{"label":"泗水县","value":"370831"},{"label":"梁山县","value":"370832"},{"label":"济宁高新技术产业开发区","value":"370871"},{"label":"曲阜市","value":"370881"},{"label":"邹城市","value":"370883"}],[{"label":"泰山区","value":"370902"},{"label":"岱岳区","value":"370911"},{"label":"宁阳县","value":"370921"},{"label":"东平县","value":"370923"},{"label":"新泰市","value":"370982"},{"label":"肥城市","value":"370983"}],[{"label":"环翠区","value":"371002"},{"label":"文登区","value":"371003"},{"label":"威海火炬高技术产业开发区","value":"371071"},{"label":"威海经济技术开发区","value":"371072"},{"label":"威海临港经济技术开发区","value":"371073"},{"label":"荣成市","value":"371082"},{"label":"乳山市","value":"371083"}],[{"label":"东港区","value":"371102"},{"label":"岚山区","value":"371103"},{"label":"五莲县","value":"371121"},{"label":"莒县","value":"371122"},{"label":"日照经济技术开发区","value":"371171"},{"label":"日照国际海洋城","value":"371172"}],[{"label":"莱城区","value":"371202"},{"label":"钢城区","value":"371203"}],[{"label":"兰山区","value":"371302"},{"label":"罗庄区","value":"371311"},{"label":"河东区","value":"371312"},{"label":"沂南县","value":"371321"},{"label":"郯城县","value":"371322"},{"label":"沂水县","value":"371323"},{"label":"兰陵县","value":"371324"},{"label":"费县","value":"371325"},{"label":"平邑县","value":"371326"},{"label":"莒南县","value":"371327"},{"label":"蒙阴县","value":"371328"},{"label":"临沭县","value":"371329"},{"label":"临沂高新技术产业开发区","value":"371371"},{"label":"临沂经济技术开发区","value":"371372"},{"label":"临沂临港经济开发区","value":"371373"}],[{"label":"德城区","value":"371402"},{"label":"陵城区","value":"371403"},{"label":"宁津县","value":"371422"},{"label":"庆云县","value":"371423"},{"label":"临邑县","value":"371424"},{"label":"齐河县","value":"371425"},{"label":"平原县","value":"371426"},{"label":"夏津县","value":"371427"},{"label":"武城县","value":"371428"},{"label":"德州经济技术开发区","value":"371471"},{"label":"德州运河经济开发区","value":"371472"},{"label":"乐陵市","value":"371481"},{"label":"禹城市","value":"371482"}],[{"label":"东昌府区","value":"371502"},{"label":"阳谷县","value":"371521"},{"label":"莘县","value":"371522"},{"label":"茌平县","value":"371523"},{"label":"东阿县","value":"371524"},{"label":"冠县","value":"371525"},{"label":"高唐县","value":"371526"},{"label":"临清市","value":"371581"}],[{"label":"滨城区","value":"371602"},{"label":"沾化区","value":"371603"},{"label":"惠民县","value":"371621"},{"label":"阳信县","value":"371622"},{"label":"无棣县","value":"371623"},{"label":"博兴县","value":"371625"},{"label":"邹平县","value":"371626"}],[{"label":"牡丹区","value":"371702"},{"label":"定陶区","value":"371703"},{"label":"曹县","value":"371721"},{"label":"单县","value":"371722"},{"label":"成武县","value":"371723"},{"label":"巨野县","value":"371724"},{"label":"郓城县","value":"371725"},{"label":"鄄城县","value":"371726"},{"label":"东明县","value":"371728"},{"label":"菏泽经济技术开发区","value":"371771"},{"label":"菏泽高新技术开发区","value":"371772"}]],[[{"label":"中原区","value":"410102"},{"label":"二七区","value":"410103"},{"label":"管城回族区","value":"410104"},{"label":"金水区","value":"410105"},{"label":"上街区","value":"410106"},{"label":"惠济区","value":"410108"},{"label":"中牟县","value":"410122"},{"label":"郑州经济技术开发区","value":"410171"},{"label":"郑州高新技术产业开发区","value":"410172"},{"label":"郑州航空港经济综合实验区","value":"410173"},{"label":"巩义市","value":"410181"},{"label":"荥阳市","value":"410182"},{"label":"新密市","value":"410183"},{"label":"新郑市","value":"410184"},{"label":"登封市","value":"410185"}],[{"label":"龙亭区","value":"410202"},{"label":"顺河回族区","value":"410203"},{"label":"鼓楼区","value":"410204"},{"label":"禹王台区","value":"410205"},{"label":"祥符区","value":"410212"},{"label":"杞县","value":"410221"},{"label":"通许县","value":"410222"},{"label":"尉氏县","value":"410223"},{"label":"兰考县","value":"410225"}],[{"label":"老城区","value":"410302"},{"label":"西工区","value":"410303"},{"label":"瀍河回族区","value":"410304"},{"label":"涧西区","value":"410305"},{"label":"吉利区","value":"410306"},{"label":"洛龙区","value":"410311"},{"label":"孟津县","value":"410322"},{"label":"新安县","value":"410323"},{"label":"栾川县","value":"410324"},{"label":"嵩县","value":"410325"},{"label":"汝阳县","value":"410326"},{"label":"宜阳县","value":"410327"},{"label":"洛宁县","value":"410328"},{"label":"伊川县","value":"410329"},{"label":"洛阳高新技术产业开发区","value":"410371"},{"label":"偃师市","value":"410381"}],[{"label":"新华区","value":"410402"},{"label":"卫东区","value":"410403"},{"label":"石龙区","value":"410404"},{"label":"湛河区","value":"410411"},{"label":"宝丰县","value":"410421"},{"label":"叶县","value":"410422"},{"label":"鲁山县","value":"410423"},{"label":"郏县","value":"410425"},{"label":"平顶山高新技术产业开发区","value":"410471"},{"label":"平顶山市新城区","value":"410472"},{"label":"舞钢市","value":"410481"},{"label":"汝州市","value":"410482"}],[{"label":"文峰区","value":"410502"},{"label":"北关区","value":"410503"},{"label":"殷都区","value":"410505"},{"label":"龙安区","value":"410506"},{"label":"安阳县","value":"410522"},{"label":"汤阴县","value":"410523"},{"label":"滑县","value":"410526"},{"label":"内黄县","value":"410527"},{"label":"安阳高新技术产业开发区","value":"410571"},{"label":"林州市","value":"410581"}],[{"label":"鹤山区","value":"410602"},{"label":"山城区","value":"410603"},{"label":"淇滨区","value":"410611"},{"label":"浚县","value":"410621"},{"label":"淇县","value":"410622"},{"label":"鹤壁经济技术开发区","value":"410671"}],[{"label":"红旗区","value":"410702"},{"label":"卫滨区","value":"410703"},{"label":"凤泉区","value":"410704"},{"label":"牧野区","value":"410711"},{"label":"新乡县","value":"410721"},{"label":"获嘉县","value":"410724"},{"label":"原阳县","value":"410725"},{"label":"延津县","value":"410726"},{"label":"封丘县","value":"410727"},{"label":"长垣县","value":"410728"},{"label":"新乡高新技术产业开发区","value":"410771"},{"label":"新乡经济技术开发区","value":"410772"},{"label":"新乡市平原城乡一体化示范区","value":"410773"},{"label":"卫辉市","value":"410781"},{"label":"辉县市","value":"410782"}],[{"label":"解放区","value":"410802"},{"label":"中站区","value":"410803"},{"label":"马村区","value":"410804"},{"label":"山阳区","value":"410811"},{"label":"修武县","value":"410821"},{"label":"博爱县","value":"410822"},{"label":"武陟县","value":"410823"},{"label":"温县","value":"410825"},{"label":"焦作城乡一体化示范区","value":"410871"},{"label":"沁阳市","value":"410882"},{"label":"孟州市","value":"410883"}],[{"label":"华龙区","value":"410902"},{"label":"清丰县","value":"410922"},{"label":"南乐县","value":"410923"},{"label":"范县","value":"410926"},{"label":"台前县","value":"410927"},{"label":"濮阳县","value":"410928"},{"label":"河南濮阳工业园区","value":"410971"},{"label":"濮阳经济技术开发区","value":"410972"}],[{"label":"魏都区","value":"411002"},{"label":"建安区","value":"411003"},{"label":"鄢陵县","value":"411024"},{"label":"襄城县","value":"411025"},{"label":"许昌经济技术开发区","value":"411071"},{"label":"禹州市","value":"411081"},{"label":"长葛市","value":"411082"}],[{"label":"源汇区","value":"411102"},{"label":"郾城区","value":"411103"},{"label":"召陵区","value":"411104"},{"label":"舞阳县","value":"411121"},{"label":"临颍县","value":"411122"},{"label":"漯河经济技术开发区","value":"411171"}],[{"label":"湖滨区","value":"411202"},{"label":"陕州区","value":"411203"},{"label":"渑池县","value":"411221"},{"label":"卢氏县","value":"411224"},{"label":"河南三门峡经济开发区","value":"411271"},{"label":"义马市","value":"411281"},{"label":"灵宝市","value":"411282"}],[{"label":"宛城区","value":"411302"},{"label":"卧龙区","value":"411303"},{"label":"南召县","value":"411321"},{"label":"方城县","value":"411322"},{"label":"西峡县","value":"411323"},{"label":"镇平县","value":"411324"},{"label":"内乡县","value":"411325"},{"label":"淅川县","value":"411326"},{"label":"社旗县","value":"411327"},{"label":"唐河县","value":"411328"},{"label":"新野县","value":"411329"},{"label":"桐柏县","value":"411330"},{"label":"南阳高新技术产业开发区","value":"411371"},{"label":"南阳市城乡一体化示范区","value":"411372"},{"label":"邓州市","value":"411381"}],[{"label":"梁园区","value":"411402"},{"label":"睢阳区","value":"411403"},{"label":"民权县","value":"411421"},{"label":"睢县","value":"411422"},{"label":"宁陵县","value":"411423"},{"label":"柘城县","value":"411424"},{"label":"虞城县","value":"411425"},{"label":"夏邑县","value":"411426"},{"label":"豫东综合物流产业聚集区","value":"411471"},{"label":"河南商丘经济开发区","value":"411472"},{"label":"永城市","value":"411481"}],[{"label":"浉河区","value":"411502"},{"label":"平桥区","value":"411503"},{"label":"罗山县","value":"411521"},{"label":"光山县","value":"411522"},{"label":"新县","value":"411523"},{"label":"商城县","value":"411524"},{"label":"固始县","value":"411525"},{"label":"潢川县","value":"411526"},{"label":"淮滨县","value":"411527"},{"label":"息县","value":"411528"},{"label":"信阳高新技术产业开发区","value":"411571"}],[{"label":"川汇区","value":"411602"},{"label":"扶沟县","value":"411621"},{"label":"西华县","value":"411622"},{"label":"商水县","value":"411623"},{"label":"沈丘县","value":"411624"},{"label":"郸城县","value":"411625"},{"label":"淮阳县","value":"411626"},{"label":"太康县","value":"411627"},{"label":"鹿邑县","value":"411628"},{"label":"河南周口经济开发区","value":"411671"},{"label":"项城市","value":"411681"}],[{"label":"驿城区","value":"411702"},{"label":"西平县","value":"411721"},{"label":"上蔡县","value":"411722"},{"label":"平舆县","value":"411723"},{"label":"正阳县","value":"411724"},{"label":"确山县","value":"411725"},{"label":"泌阳县","value":"411726"},{"label":"汝南县","value":"411727"},{"label":"遂平县","value":"411728"},{"label":"新蔡县","value":"411729"},{"label":"河南驻马店经济开发区","value":"411771"}],[{"label":"济源市","value":"419001"}]],[[{"label":"江岸区","value":"420102"},{"label":"江汉区","value":"420103"},{"label":"硚口区","value":"420104"},{"label":"汉阳区","value":"420105"},{"label":"武昌区","value":"420106"},{"label":"青山区","value":"420107"},{"label":"洪山区","value":"420111"},{"label":"东西湖区","value":"420112"},{"label":"汉南区","value":"420113"},{"label":"蔡甸区","value":"420114"},{"label":"江夏区","value":"420115"},{"label":"黄陂区","value":"420116"},{"label":"新洲区","value":"420117"}],[{"label":"黄石港区","value":"420202"},{"label":"西塞山区","value":"420203"},{"label":"下陆区","value":"420204"},{"label":"铁山区","value":"420205"},{"label":"阳新县","value":"420222"},{"label":"大冶市","value":"420281"}],[{"label":"茅箭区","value":"420302"},{"label":"张湾区","value":"420303"},{"label":"郧阳区","value":"420304"},{"label":"郧西县","value":"420322"},{"label":"竹山县","value":"420323"},{"label":"竹溪县","value":"420324"},{"label":"房县","value":"420325"},{"label":"丹江口市","value":"420381"}],[{"label":"西陵区","value":"420502"},{"label":"伍家岗区","value":"420503"},{"label":"点军区","value":"420504"},{"label":"猇亭区","value":"420505"},{"label":"夷陵区","value":"420506"},{"label":"远安县","value":"420525"},{"label":"兴山县","value":"420526"},{"label":"秭归县","value":"420527"},{"label":"长阳土家族自治县","value":"420528"},{"label":"五峰土家族自治县","value":"420529"},{"label":"宜都市","value":"420581"},{"label":"当阳市","value":"420582"},{"label":"枝江市","value":"420583"}],[{"label":"襄城区","value":"420602"},{"label":"樊城区","value":"420606"},{"label":"襄州区","value":"420607"},{"label":"南漳县","value":"420624"},{"label":"谷城县","value":"420625"},{"label":"保康县","value":"420626"},{"label":"老河口市","value":"420682"},{"label":"枣阳市","value":"420683"},{"label":"宜城市","value":"420684"}],[{"label":"梁子湖区","value":"420702"},{"label":"华容区","value":"420703"},{"label":"鄂城区","value":"420704"}],[{"label":"东宝区","value":"420802"},{"label":"掇刀区","value":"420804"},{"label":"京山县","value":"420821"},{"label":"沙洋县","value":"420822"},{"label":"钟祥市","value":"420881"}],[{"label":"孝南区","value":"420902"},{"label":"孝昌县","value":"420921"},{"label":"大悟县","value":"420922"},{"label":"云梦县","value":"420923"},{"label":"应城市","value":"420981"},{"label":"安陆市","value":"420982"},{"label":"汉川市","value":"420984"}],[{"label":"沙市区","value":"421002"},{"label":"荆州区","value":"421003"},{"label":"公安县","value":"421022"},{"label":"监利县","value":"421023"},{"label":"江陵县","value":"421024"},{"label":"荆州经济技术开发区","value":"421071"},{"label":"石首市","value":"421081"},{"label":"洪湖市","value":"421083"},{"label":"松滋市","value":"421087"}],[{"label":"黄州区","value":"421102"},{"label":"团风县","value":"421121"},{"label":"红安县","value":"421122"},{"label":"罗田县","value":"421123"},{"label":"英山县","value":"421124"},{"label":"浠水县","value":"421125"},{"label":"蕲春县","value":"421126"},{"label":"黄梅县","value":"421127"},{"label":"龙感湖管理区","value":"421171"},{"label":"麻城市","value":"421181"},{"label":"武穴市","value":"421182"}],[{"label":"咸安区","value":"421202"},{"label":"嘉鱼县","value":"421221"},{"label":"通城县","value":"421222"},{"label":"崇阳县","value":"421223"},{"label":"通山县","value":"421224"},{"label":"赤壁市","value":"421281"}],[{"label":"曾都区","value":"421303"},{"label":"随县","value":"421321"},{"label":"广水市","value":"421381"}],[{"label":"恩施市","value":"422801"},{"label":"利川市","value":"422802"},{"label":"建始县","value":"422822"},{"label":"巴东县","value":"422823"},{"label":"宣恩县","value":"422825"},{"label":"咸丰县","value":"422826"},{"label":"来凤县","value":"422827"},{"label":"鹤峰县","value":"422828"}],[{"label":"仙桃市","value":"429004"},{"label":"潜江市","value":"429005"},{"label":"天门市","value":"429006"},{"label":"神农架林区","value":"429021"}]],[[{"label":"芙蓉区","value":"430102"},{"label":"天心区","value":"430103"},{"label":"岳麓区","value":"430104"},{"label":"开福区","value":"430105"},{"label":"雨花区","value":"430111"},{"label":"望城区","value":"430112"},{"label":"长沙县","value":"430121"},{"label":"浏阳市","value":"430181"},{"label":"宁乡市","value":"430182"}],[{"label":"荷塘区","value":"430202"},{"label":"芦淞区","value":"430203"},{"label":"石峰区","value":"430204"},{"label":"天元区","value":"430211"},{"label":"株洲县","value":"430221"},{"label":"攸县","value":"430223"},{"label":"茶陵县","value":"430224"},{"label":"炎陵县","value":"430225"},{"label":"云龙示范区","value":"430271"},{"label":"醴陵市","value":"430281"}],[{"label":"雨湖区","value":"430302"},{"label":"岳塘区","value":"430304"},{"label":"湘潭县","value":"430321"},{"label":"湖南湘潭高新技术产业园区","value":"430371"},{"label":"湘潭昭山示范区","value":"430372"},{"label":"湘潭九华示范区","value":"430373"},{"label":"湘乡市","value":"430381"},{"label":"韶山市","value":"430382"}],[{"label":"珠晖区","value":"430405"},{"label":"雁峰区","value":"430406"},{"label":"石鼓区","value":"430407"},{"label":"蒸湘区","value":"430408"},{"label":"南岳区","value":"430412"},{"label":"衡阳县","value":"430421"},{"label":"衡南县","value":"430422"},{"label":"衡山县","value":"430423"},{"label":"衡东县","value":"430424"},{"label":"祁东县","value":"430426"},{"label":"衡阳综合保税区","value":"430471"},{"label":"湖南衡阳高新技术产业园区","value":"430472"},{"label":"湖南衡阳松木经济开发区","value":"430473"},{"label":"耒阳市","value":"430481"},{"label":"常宁市","value":"430482"}],[{"label":"双清区","value":"430502"},{"label":"大祥区","value":"430503"},{"label":"北塔区","value":"430511"},{"label":"邵东县","value":"430521"},{"label":"新邵县","value":"430522"},{"label":"邵阳县","value":"430523"},{"label":"隆回县","value":"430524"},{"label":"洞口县","value":"430525"},{"label":"绥宁县","value":"430527"},{"label":"新宁县","value":"430528"},{"label":"城步苗族自治县","value":"430529"},{"label":"武冈市","value":"430581"}],[{"label":"岳阳楼区","value":"430602"},{"label":"云溪区","value":"430603"},{"label":"君山区","value":"430611"},{"label":"岳阳县","value":"430621"},{"label":"华容县","value":"430623"},{"label":"湘阴县","value":"430624"},{"label":"平江县","value":"430626"},{"label":"岳阳市屈原管理区","value":"430671"},{"label":"汨罗市","value":"430681"},{"label":"临湘市","value":"430682"}],[{"label":"武陵区","value":"430702"},{"label":"鼎城区","value":"430703"},{"label":"安乡县","value":"430721"},{"label":"汉寿县","value":"430722"},{"label":"澧县","value":"430723"},{"label":"临澧县","value":"430724"},{"label":"桃源县","value":"430725"},{"label":"石门县","value":"430726"},{"label":"常德市西洞庭管理区","value":"430771"},{"label":"津市市","value":"430781"}],[{"label":"永定区","value":"430802"},{"label":"武陵源区","value":"430811"},{"label":"慈利县","value":"430821"},{"label":"桑植县","value":"430822"}],[{"label":"资阳区","value":"430902"},{"label":"赫山区","value":"430903"},{"label":"南县","value":"430921"},{"label":"桃江县","value":"430922"},{"label":"安化县","value":"430923"},{"label":"益阳市大通湖管理区","value":"430971"},{"label":"湖南益阳高新技术产业园区","value":"430972"},{"label":"沅江市","value":"430981"}],[{"label":"北湖区","value":"431002"},{"label":"苏仙区","value":"431003"},{"label":"桂阳县","value":"431021"},{"label":"宜章县","value":"431022"},{"label":"永兴县","value":"431023"},{"label":"嘉禾县","value":"431024"},{"label":"临武县","value":"431025"},{"label":"汝城县","value":"431026"},{"label":"桂东县","value":"431027"},{"label":"安仁县","value":"431028"},{"label":"资兴市","value":"431081"}],[{"label":"零陵区","value":"431102"},{"label":"冷水滩区","value":"431103"},{"label":"祁阳县","value":"431121"},{"label":"东安县","value":"431122"},{"label":"双牌县","value":"431123"},{"label":"道县","value":"431124"},{"label":"江永县","value":"431125"},{"label":"宁远县","value":"431126"},{"label":"蓝山县","value":"431127"},{"label":"新田县","value":"431128"},{"label":"江华瑶族自治县","value":"431129"},{"label":"永州经济技术开发区","value":"431171"},{"label":"永州市金洞管理区","value":"431172"},{"label":"永州市回龙圩管理区","value":"431173"}],[{"label":"鹤城区","value":"431202"},{"label":"中方县","value":"431221"},{"label":"沅陵县","value":"431222"},{"label":"辰溪县","value":"431223"},{"label":"溆浦县","value":"431224"},{"label":"会同县","value":"431225"},{"label":"麻阳苗族自治县","value":"431226"},{"label":"新晃侗族自治县","value":"431227"},{"label":"芷江侗族自治县","value":"431228"},{"label":"靖州苗族侗族自治县","value":"431229"},{"label":"通道侗族自治县","value":"431230"},{"label":"怀化市洪江管理区","value":"431271"},{"label":"洪江市","value":"431281"}],[{"label":"娄星区","value":"431302"},{"label":"双峰县","value":"431321"},{"label":"新化县","value":"431322"},{"label":"冷水江市","value":"431381"},{"label":"涟源市","value":"431382"}],[{"label":"吉首市","value":"433101"},{"label":"泸溪县","value":"433122"},{"label":"凤凰县","value":"433123"},{"label":"花垣县","value":"433124"},{"label":"保靖县","value":"433125"},{"label":"古丈县","value":"433126"},{"label":"永顺县","value":"433127"},{"label":"龙山县","value":"433130"},{"label":"湖南吉首经济开发区","value":"433172"},{"label":"湖南永顺经济开发区","value":"433173"}]],[[{"label":"荔湾区","value":"440103"},{"label":"越秀区","value":"440104"},{"label":"海珠区","value":"440105"},{"label":"天河区","value":"440106"},{"label":"白云区","value":"440111"},{"label":"黄埔区","value":"440112"},{"label":"番禺区","value":"440113"},{"label":"花都区","value":"440114"},{"label":"南沙区","value":"440115"},{"label":"从化区","value":"440117"},{"label":"增城区","value":"440118"}],[{"label":"武江区","value":"440203"},{"label":"浈江区","value":"440204"},{"label":"曲江区","value":"440205"},{"label":"始兴县","value":"440222"},{"label":"仁化县","value":"440224"},{"label":"翁源县","value":"440229"},{"label":"乳源瑶族自治县","value":"440232"},{"label":"新丰县","value":"440233"},{"label":"乐昌市","value":"440281"},{"label":"南雄市","value":"440282"}],[{"label":"罗湖区","value":"440303"},{"label":"福田区","value":"440304"},{"label":"南山区","value":"440305"},{"label":"宝安区","value":"440306"},{"label":"龙岗区","value":"440307"},{"label":"盐田区","value":"440308"},{"label":"龙华区","value":"440309"},{"label":"坪山区","value":"440310"}],[{"label":"香洲区","value":"440402"},{"label":"斗门区","value":"440403"},{"label":"金湾区","value":"440404"}],[{"label":"龙湖区","value":"440507"},{"label":"金平区","value":"440511"},{"label":"濠江区","value":"440512"},{"label":"潮阳区","value":"440513"},{"label":"潮南区","value":"440514"},{"label":"澄海区","value":"440515"},{"label":"南澳县","value":"440523"}],[{"label":"禅城区","value":"440604"},{"label":"南海区","value":"440605"},{"label":"顺德区","value":"440606"},{"label":"三水区","value":"440607"},{"label":"高明区","value":"440608"}],[{"label":"蓬江区","value":"440703"},{"label":"江海区","value":"440704"},{"label":"新会区","value":"440705"},{"label":"台山市","value":"440781"},{"label":"开平市","value":"440783"},{"label":"鹤山市","value":"440784"},{"label":"恩平市","value":"440785"}],[{"label":"赤坎区","value":"440802"},{"label":"霞山区","value":"440803"},{"label":"坡头区","value":"440804"},{"label":"麻章区","value":"440811"},{"label":"遂溪县","value":"440823"},{"label":"徐闻县","value":"440825"},{"label":"廉江市","value":"440881"},{"label":"雷州市","value":"440882"},{"label":"吴川市","value":"440883"}],[{"label":"茂南区","value":"440902"},{"label":"电白区","value":"440904"},{"label":"高州市","value":"440981"},{"label":"化州市","value":"440982"},{"label":"信宜市","value":"440983"}],[{"label":"端州区","value":"441202"},{"label":"鼎湖区","value":"441203"},{"label":"高要区","value":"441204"},{"label":"广宁县","value":"441223"},{"label":"怀集县","value":"441224"},{"label":"封开县","value":"441225"},{"label":"德庆县","value":"441226"},{"label":"四会市","value":"441284"}],[{"label":"惠城区","value":"441302"},{"label":"惠阳区","value":"441303"},{"label":"博罗县","value":"441322"},{"label":"惠东县","value":"441323"},{"label":"龙门县","value":"441324"}],[{"label":"梅江区","value":"441402"},{"label":"梅县区","value":"441403"},{"label":"大埔县","value":"441422"},{"label":"丰顺县","value":"441423"},{"label":"五华县","value":"441424"},{"label":"平远县","value":"441426"},{"label":"蕉岭县","value":"441427"},{"label":"兴宁市","value":"441481"}],[{"label":"城区","value":"441502"},{"label":"海丰县","value":"441521"},{"label":"陆河县","value":"441523"},{"label":"陆丰市","value":"441581"}],[{"label":"源城区","value":"441602"},{"label":"紫金县","value":"441621"},{"label":"龙川县","value":"441622"},{"label":"连平县","value":"441623"},{"label":"和平县","value":"441624"},{"label":"东源县","value":"441625"}],[{"label":"江城区","value":"441702"},{"label":"阳东区","value":"441704"},{"label":"阳西县","value":"441721"},{"label":"阳春市","value":"441781"}],[{"label":"清城区","value":"441802"},{"label":"清新区","value":"441803"},{"label":"佛冈县","value":"441821"},{"label":"阳山县","value":"441823"},{"label":"连山壮族瑶族自治县","value":"441825"},{"label":"连南瑶族自治县","value":"441826"},{"label":"英德市","value":"441881"},{"label":"连州市","value":"441882"}],[{"label":"东莞市","value":"441900"}],[{"label":"中山市","value":"442000"}],[{"label":"湘桥区","value":"445102"},{"label":"潮安区","value":"445103"},{"label":"饶平县","value":"445122"}],[{"label":"榕城区","value":"445202"},{"label":"揭东区","value":"445203"},{"label":"揭西县","value":"445222"},{"label":"惠来县","value":"445224"},{"label":"普宁市","value":"445281"}],[{"label":"云城区","value":"445302"},{"label":"云安区","value":"445303"},{"label":"新兴县","value":"445321"},{"label":"郁南县","value":"445322"},{"label":"罗定市","value":"445381"}]],[[{"label":"兴宁区","value":"450102"},{"label":"青秀区","value":"450103"},{"label":"江南区","value":"450105"},{"label":"西乡塘区","value":"450107"},{"label":"良庆区","value":"450108"},{"label":"邕宁区","value":"450109"},{"label":"武鸣区","value":"450110"},{"label":"隆安县","value":"450123"},{"label":"马山县","value":"450124"},{"label":"上林县","value":"450125"},{"label":"宾阳县","value":"450126"},{"label":"横县","value":"450127"}],[{"label":"城中区","value":"450202"},{"label":"鱼峰区","value":"450203"},{"label":"柳南区","value":"450204"},{"label":"柳北区","value":"450205"},{"label":"柳江区","value":"450206"},{"label":"柳城县","value":"450222"},{"label":"鹿寨县","value":"450223"},{"label":"融安县","value":"450224"},{"label":"融水苗族自治县","value":"450225"},{"label":"三江侗族自治县","value":"450226"}],[{"label":"秀峰区","value":"450302"},{"label":"叠彩区","value":"450303"},{"label":"象山区","value":"450304"},{"label":"七星区","value":"450305"},{"label":"雁山区","value":"450311"},{"label":"临桂区","value":"450312"},{"label":"阳朔县","value":"450321"},{"label":"灵川县","value":"450323"},{"label":"全州县","value":"450324"},{"label":"兴安县","value":"450325"},{"label":"永福县","value":"450326"},{"label":"灌阳县","value":"450327"},{"label":"龙胜各族自治县","value":"450328"},{"label":"资源县","value":"450329"},{"label":"平乐县","value":"450330"},{"label":"荔浦县","value":"450331"},{"label":"恭城瑶族自治县","value":"450332"}],[{"label":"万秀区","value":"450403"},{"label":"长洲区","value":"450405"},{"label":"龙圩区","value":"450406"},{"label":"苍梧县","value":"450421"},{"label":"藤县","value":"450422"},{"label":"蒙山县","value":"450423"},{"label":"岑溪市","value":"450481"}],[{"label":"海城区","value":"450502"},{"label":"银海区","value":"450503"},{"label":"铁山港区","value":"450512"},{"label":"合浦县","value":"450521"}],[{"label":"港口区","value":"450602"},{"label":"防城区","value":"450603"},{"label":"上思县","value":"450621"},{"label":"东兴市","value":"450681"}],[{"label":"钦南区","value":"450702"},{"label":"钦北区","value":"450703"},{"label":"灵山县","value":"450721"},{"label":"浦北县","value":"450722"}],[{"label":"港北区","value":"450802"},{"label":"港南区","value":"450803"},{"label":"覃塘区","value":"450804"},{"label":"平南县","value":"450821"},{"label":"桂平市","value":"450881"}],[{"label":"玉州区","value":"450902"},{"label":"福绵区","value":"450903"},{"label":"容县","value":"450921"},{"label":"陆川县","value":"450922"},{"label":"博白县","value":"450923"},{"label":"兴业县","value":"450924"},{"label":"北流市","value":"450981"}],[{"label":"右江区","value":"451002"},{"label":"田阳县","value":"451021"},{"label":"田东县","value":"451022"},{"label":"平果县","value":"451023"},{"label":"德保县","value":"451024"},{"label":"那坡县","value":"451026"},{"label":"凌云县","value":"451027"},{"label":"乐业县","value":"451028"},{"label":"田林县","value":"451029"},{"label":"西林县","value":"451030"},{"label":"隆林各族自治县","value":"451031"},{"label":"靖西市","value":"451081"}],[{"label":"八步区","value":"451102"},{"label":"平桂区","value":"451103"},{"label":"昭平县","value":"451121"},{"label":"钟山县","value":"451122"},{"label":"富川瑶族自治县","value":"451123"}],[{"label":"金城江区","value":"451202"},{"label":"宜州区","value":"451203"},{"label":"南丹县","value":"451221"},{"label":"天峨县","value":"451222"},{"label":"凤山县","value":"451223"},{"label":"东兰县","value":"451224"},{"label":"罗城仫佬族自治县","value":"451225"},{"label":"环江毛南族自治县","value":"451226"},{"label":"巴马瑶族自治县","value":"451227"},{"label":"都安瑶族自治县","value":"451228"},{"label":"大化瑶族自治县","value":"451229"}],[{"label":"兴宾区","value":"451302"},{"label":"忻城县","value":"451321"},{"label":"象州县","value":"451322"},{"label":"武宣县","value":"451323"},{"label":"金秀瑶族自治县","value":"451324"},{"label":"合山市","value":"451381"}],[{"label":"江州区","value":"451402"},{"label":"扶绥县","value":"451421"},{"label":"宁明县","value":"451422"},{"label":"龙州县","value":"451423"},{"label":"大新县","value":"451424"},{"label":"天等县","value":"451425"},{"label":"凭祥市","value":"451481"}]],[[{"label":"秀英区","value":"460105"},{"label":"龙华区","value":"460106"},{"label":"琼山区","value":"460107"},{"label":"美兰区","value":"460108"}],[{"label":"海棠区","value":"460202"},{"label":"吉阳区","value":"460203"},{"label":"天涯区","value":"460204"},{"label":"崖州区","value":"460205"}],[{"label":"西沙群岛","value":"460321"},{"label":"南沙群岛","value":"460322"},{"label":"中沙群岛的岛礁及其海域","value":"460323"}],[{"label":"儋州市","value":"460400"}],[{"label":"五指山市","value":"469001"},{"label":"琼海市","value":"469002"},{"label":"文昌市","value":"469005"},{"label":"万宁市","value":"469006"},{"label":"东方市","value":"469007"},{"label":"定安县","value":"469021"},{"label":"屯昌县","value":"469022"},{"label":"澄迈县","value":"469023"},{"label":"临高县","value":"469024"},{"label":"白沙黎族自治县","value":"469025"},{"label":"昌江黎族自治县","value":"469026"},{"label":"乐东黎族自治县","value":"469027"},{"label":"陵水黎族自治县","value":"469028"},{"label":"保亭黎族苗族自治县","value":"469029"},{"label":"琼中黎族苗族自治县","value":"469030"}]],[[{"label":"万州区","value":"500101"},{"label":"涪陵区","value":"500102"},{"label":"渝中区","value":"500103"},{"label":"大渡口区","value":"500104"},{"label":"江北区","value":"500105"},{"label":"沙坪坝区","value":"500106"},{"label":"九龙坡区","value":"500107"},{"label":"南岸区","value":"500108"},{"label":"北碚区","value":"500109"},{"label":"綦江区","value":"500110"},{"label":"大足区","value":"500111"},{"label":"渝北区","value":"500112"},{"label":"巴南区","value":"500113"},{"label":"黔江区","value":"500114"},{"label":"长寿区","value":"500115"},{"label":"江津区","value":"500116"},{"label":"合川区","value":"500117"},{"label":"永川区","value":"500118"},{"label":"南川区","value":"500119"},{"label":"璧山区","value":"500120"},{"label":"铜梁区","value":"500151"},{"label":"潼南区","value":"500152"},{"label":"荣昌区","value":"500153"},{"label":"开州区","value":"500154"},{"label":"梁平区","value":"500155"},{"label":"武隆区","value":"500156"}],[{"label":"城口县","value":"500229"},{"label":"丰都县","value":"500230"},{"label":"垫江县","value":"500231"},{"label":"忠县","value":"500233"},{"label":"云阳县","value":"500235"},{"label":"奉节县","value":"500236"},{"label":"巫山县","value":"500237"},{"label":"巫溪县","value":"500238"},{"label":"石柱土家族自治县","value":"500240"},{"label":"秀山土家族苗族自治县","value":"500241"},{"label":"酉阳土家族苗族自治县","value":"500242"},{"label":"彭水苗族土家族自治县","value":"500243"}]],[[{"label":"锦江区","value":"510104"},{"label":"青羊区","value":"510105"},{"label":"金牛区","value":"510106"},{"label":"武侯区","value":"510107"},{"label":"成华区","value":"510108"},{"label":"龙泉驿区","value":"510112"},{"label":"青白江区","value":"510113"},{"label":"新都区","value":"510114"},{"label":"温江区","value":"510115"},{"label":"双流区","value":"510116"},{"label":"郫都区","value":"510117"},{"label":"金堂县","value":"510121"},{"label":"大邑县","value":"510129"},{"label":"蒲江县","value":"510131"},{"label":"新津县","value":"510132"},{"label":"都江堰市","value":"510181"},{"label":"彭州市","value":"510182"},{"label":"邛崃市","value":"510183"},{"label":"崇州市","value":"510184"},{"label":"简阳市","value":"510185"}],[{"label":"自流井区","value":"510302"},{"label":"贡井区","value":"510303"},{"label":"大安区","value":"510304"},{"label":"沿滩区","value":"510311"},{"label":"荣县","value":"510321"},{"label":"富顺县","value":"510322"}],[{"label":"东区","value":"510402"},{"label":"西区","value":"510403"},{"label":"仁和区","value":"510411"},{"label":"米易县","value":"510421"},{"label":"盐边县","value":"510422"}],[{"label":"江阳区","value":"510502"},{"label":"纳溪区","value":"510503"},{"label":"龙马潭区","value":"510504"},{"label":"泸县","value":"510521"},{"label":"合江县","value":"510522"},{"label":"叙永县","value":"510524"},{"label":"古蔺县","value":"510525"}],[{"label":"旌阳区","value":"510603"},{"label":"罗江区","value":"510604"},{"label":"中江县","value":"510623"},{"label":"广汉市","value":"510681"},{"label":"什邡市","value":"510682"},{"label":"绵竹市","value":"510683"}],[{"label":"涪城区","value":"510703"},{"label":"游仙区","value":"510704"},{"label":"安州区","value":"510705"},{"label":"三台县","value":"510722"},{"label":"盐亭县","value":"510723"},{"label":"梓潼县","value":"510725"},{"label":"北川羌族自治县","value":"510726"},{"label":"平武县","value":"510727"},{"label":"江油市","value":"510781"}],[{"label":"利州区","value":"510802"},{"label":"昭化区","value":"510811"},{"label":"朝天区","value":"510812"},{"label":"旺苍县","value":"510821"},{"label":"青川县","value":"510822"},{"label":"剑阁县","value":"510823"},{"label":"苍溪县","value":"510824"}],[{"label":"船山区","value":"510903"},{"label":"安居区","value":"510904"},{"label":"蓬溪县","value":"510921"},{"label":"射洪县","value":"510922"},{"label":"大英县","value":"510923"}],[{"label":"市中区","value":"511002"},{"label":"东兴区","value":"511011"},{"label":"威远县","value":"511024"},{"label":"资中县","value":"511025"},{"label":"内江经济开发区","value":"511071"},{"label":"隆昌市","value":"511083"}],[{"label":"市中区","value":"511102"},{"label":"沙湾区","value":"511111"},{"label":"五通桥区","value":"511112"},{"label":"金口河区","value":"511113"},{"label":"犍为县","value":"511123"},{"label":"井研县","value":"511124"},{"label":"夹江县","value":"511126"},{"label":"沐川县","value":"511129"},{"label":"峨边彝族自治县","value":"511132"},{"label":"马边彝族自治县","value":"511133"},{"label":"峨眉山市","value":"511181"}],[{"label":"顺庆区","value":"511302"},{"label":"高坪区","value":"511303"},{"label":"嘉陵区","value":"511304"},{"label":"南部县","value":"511321"},{"label":"营山县","value":"511322"},{"label":"蓬安县","value":"511323"},{"label":"仪陇县","value":"511324"},{"label":"西充县","value":"511325"},{"label":"阆中市","value":"511381"}],[{"label":"东坡区","value":"511402"},{"label":"彭山区","value":"511403"},{"label":"仁寿县","value":"511421"},{"label":"洪雅县","value":"511423"},{"label":"丹棱县","value":"511424"},{"label":"青神县","value":"511425"}],[{"label":"翠屏区","value":"511502"},{"label":"南溪区","value":"511503"},{"label":"宜宾县","value":"511521"},{"label":"江安县","value":"511523"},{"label":"长宁县","value":"511524"},{"label":"高县","value":"511525"},{"label":"珙县","value":"511526"},{"label":"筠连县","value":"511527"},{"label":"兴文县","value":"511528"},{"label":"屏山县","value":"511529"}],[{"label":"广安区","value":"511602"},{"label":"前锋区","value":"511603"},{"label":"岳池县","value":"511621"},{"label":"武胜县","value":"511622"},{"label":"邻水县","value":"511623"},{"label":"华蓥市","value":"511681"}],[{"label":"通川区","value":"511702"},{"label":"达川区","value":"511703"},{"label":"宣汉县","value":"511722"},{"label":"开江县","value":"511723"},{"label":"大竹县","value":"511724"},{"label":"渠县","value":"511725"},{"label":"达州经济开发区","value":"511771"},{"label":"万源市","value":"511781"}],[{"label":"雨城区","value":"511802"},{"label":"名山区","value":"511803"},{"label":"荥经县","value":"511822"},{"label":"汉源县","value":"511823"},{"label":"石棉县","value":"511824"},{"label":"天全县","value":"511825"},{"label":"芦山县","value":"511826"},{"label":"宝兴县","value":"511827"}],[{"label":"巴州区","value":"511902"},{"label":"恩阳区","value":"511903"},{"label":"通江县","value":"511921"},{"label":"南江县","value":"511922"},{"label":"平昌县","value":"511923"},{"label":"巴中经济开发区","value":"511971"}],[{"label":"雁江区","value":"512002"},{"label":"安岳县","value":"512021"},{"label":"乐至县","value":"512022"}],[{"label":"马尔康市","value":"513201"},{"label":"汶川县","value":"513221"},{"label":"理县","value":"513222"},{"label":"茂县","value":"513223"},{"label":"松潘县","value":"513224"},{"label":"九寨沟县","value":"513225"},{"label":"金川县","value":"513226"},{"label":"小金县","value":"513227"},{"label":"黑水县","value":"513228"},{"label":"壤塘县","value":"513230"},{"label":"阿坝县","value":"513231"},{"label":"若尔盖县","value":"513232"},{"label":"红原县","value":"513233"}],[{"label":"康定市","value":"513301"},{"label":"泸定县","value":"513322"},{"label":"丹巴县","value":"513323"},{"label":"九龙县","value":"513324"},{"label":"雅江县","value":"513325"},{"label":"道孚县","value":"513326"},{"label":"炉霍县","value":"513327"},{"label":"甘孜县","value":"513328"},{"label":"新龙县","value":"513329"},{"label":"德格县","value":"513330"},{"label":"白玉县","value":"513331"},{"label":"石渠县","value":"513332"},{"label":"色达县","value":"513333"},{"label":"理塘县","value":"513334"},{"label":"巴塘县","value":"513335"},{"label":"乡城县","value":"513336"},{"label":"稻城县","value":"513337"},{"label":"得荣县","value":"513338"}],[{"label":"西昌市","value":"513401"},{"label":"木里藏族自治县","value":"513422"},{"label":"盐源县","value":"513423"},{"label":"德昌县","value":"513424"},{"label":"会理县","value":"513425"},{"label":"会东县","value":"513426"},{"label":"宁南县","value":"513427"},{"label":"普格县","value":"513428"},{"label":"布拖县","value":"513429"},{"label":"金阳县","value":"513430"},{"label":"昭觉县","value":"513431"},{"label":"喜德县","value":"513432"},{"label":"冕宁县","value":"513433"},{"label":"越西县","value":"513434"},{"label":"甘洛县","value":"513435"},{"label":"美姑县","value":"513436"},{"label":"雷波县","value":"513437"}]],[[{"label":"南明区","value":"520102"},{"label":"云岩区","value":"520103"},{"label":"花溪区","value":"520111"},{"label":"乌当区","value":"520112"},{"label":"白云区","value":"520113"},{"label":"观山湖区","value":"520115"},{"label":"开阳县","value":"520121"},{"label":"息烽县","value":"520122"},{"label":"修文县","value":"520123"},{"label":"清镇市","value":"520181"}],[{"label":"钟山区","value":"520201"},{"label":"六枝特区","value":"520203"},{"label":"水城县","value":"520221"},{"label":"盘州市","value":"520281"}],[{"label":"红花岗区","value":"520302"},{"label":"汇川区","value":"520303"},{"label":"播州区","value":"520304"},{"label":"桐梓县","value":"520322"},{"label":"绥阳县","value":"520323"},{"label":"正安县","value":"520324"},{"label":"道真仡佬族苗族自治县","value":"520325"},{"label":"务川仡佬族苗族自治县","value":"520326"},{"label":"凤冈县","value":"520327"},{"label":"湄潭县","value":"520328"},{"label":"余庆县","value":"520329"},{"label":"习水县","value":"520330"},{"label":"赤水市","value":"520381"},{"label":"仁怀市","value":"520382"}],[{"label":"西秀区","value":"520402"},{"label":"平坝区","value":"520403"},{"label":"普定县","value":"520422"},{"label":"镇宁布依族苗族自治县","value":"520423"},{"label":"关岭布依族苗族自治县","value":"520424"},{"label":"紫云苗族布依族自治县","value":"520425"}],[{"label":"七星关区","value":"520502"},{"label":"大方县","value":"520521"},{"label":"黔西县","value":"520522"},{"label":"金沙县","value":"520523"},{"label":"织金县","value":"520524"},{"label":"纳雍县","value":"520525"},{"label":"威宁彝族回族苗族自治县","value":"520526"},{"label":"赫章县","value":"520527"}],[{"label":"碧江区","value":"520602"},{"label":"万山区","value":"520603"},{"label":"江口县","value":"520621"},{"label":"玉屏侗族自治县","value":"520622"},{"label":"石阡县","value":"520623"},{"label":"思南县","value":"520624"},{"label":"印江土家族苗族自治县","value":"520625"},{"label":"德江县","value":"520626"},{"label":"沿河土家族自治县","value":"520627"},{"label":"松桃苗族自治县","value":"520628"}],[{"label":"兴义市","value":"522301"},{"label":"兴仁县","value":"522322"},{"label":"普安县","value":"522323"},{"label":"晴隆县","value":"522324"},{"label":"贞丰县","value":"522325"},{"label":"望谟县","value":"522326"},{"label":"册亨县","value":"522327"},{"label":"安龙县","value":"522328"}],[{"label":"凯里市","value":"522601"},{"label":"黄平县","value":"522622"},{"label":"施秉县","value":"522623"},{"label":"三穗县","value":"522624"},{"label":"镇远县","value":"522625"},{"label":"岑巩县","value":"522626"},{"label":"天柱县","value":"522627"},{"label":"锦屏县","value":"522628"},{"label":"剑河县","value":"522629"},{"label":"台江县","value":"522630"},{"label":"黎平县","value":"522631"},{"label":"榕江县","value":"522632"},{"label":"从江县","value":"522633"},{"label":"雷山县","value":"522634"},{"label":"麻江县","value":"522635"},{"label":"丹寨县","value":"522636"}],[{"label":"都匀市","value":"522701"},{"label":"福泉市","value":"522702"},{"label":"荔波县","value":"522722"},{"label":"贵定县","value":"522723"},{"label":"瓮安县","value":"522725"},{"label":"独山县","value":"522726"},{"label":"平塘县","value":"522727"},{"label":"罗甸县","value":"522728"},{"label":"长顺县","value":"522729"},{"label":"龙里县","value":"522730"},{"label":"惠水县","value":"522731"},{"label":"三都水族自治县","value":"522732"}]],[[{"label":"五华区","value":"530102"},{"label":"盘龙区","value":"530103"},{"label":"官渡区","value":"530111"},{"label":"西山区","value":"530112"},{"label":"东川区","value":"530113"},{"label":"呈贡区","value":"530114"},{"label":"晋宁区","value":"530115"},{"label":"富民县","value":"530124"},{"label":"宜良县","value":"530125"},{"label":"石林彝族自治县","value":"530126"},{"label":"嵩明县","value":"530127"},{"label":"禄劝彝族苗族自治县","value":"530128"},{"label":"寻甸回族彝族自治县","value":"530129"},{"label":"安宁市","value":"530181"}],[{"label":"麒麟区","value":"530302"},{"label":"沾益区","value":"530303"},{"label":"马龙县","value":"530321"},{"label":"陆良县","value":"530322"},{"label":"师宗县","value":"530323"},{"label":"罗平县","value":"530324"},{"label":"富源县","value":"530325"},{"label":"会泽县","value":"530326"},{"label":"宣威市","value":"530381"}],[{"label":"红塔区","value":"530402"},{"label":"江川区","value":"530403"},{"label":"澄江县","value":"530422"},{"label":"通海县","value":"530423"},{"label":"华宁县","value":"530424"},{"label":"易门县","value":"530425"},{"label":"峨山彝族自治县","value":"530426"},{"label":"新平彝族傣族自治县","value":"530427"},{"label":"元江哈尼族彝族傣族自治县","value":"530428"}],[{"label":"隆阳区","value":"530502"},{"label":"施甸县","value":"530521"},{"label":"龙陵县","value":"530523"},{"label":"昌宁县","value":"530524"},{"label":"腾冲市","value":"530581"}],[{"label":"昭阳区","value":"530602"},{"label":"鲁甸县","value":"530621"},{"label":"巧家县","value":"530622"},{"label":"盐津县","value":"530623"},{"label":"大关县","value":"530624"},{"label":"永善县","value":"530625"},{"label":"绥江县","value":"530626"},{"label":"镇雄县","value":"530627"},{"label":"彝良县","value":"530628"},{"label":"威信县","value":"530629"},{"label":"水富县","value":"530630"}],[{"label":"古城区","value":"530702"},{"label":"玉龙纳西族自治县","value":"530721"},{"label":"永胜县","value":"530722"},{"label":"华坪县","value":"530723"},{"label":"宁蒗彝族自治县","value":"530724"}],[{"label":"思茅区","value":"530802"},{"label":"宁洱哈尼族彝族自治县","value":"530821"},{"label":"墨江哈尼族自治县","value":"530822"},{"label":"景东彝族自治县","value":"530823"},{"label":"景谷傣族彝族自治县","value":"530824"},{"label":"镇沅彝族哈尼族拉祜族自治县","value":"530825"},{"label":"江城哈尼族彝族自治县","value":"530826"},{"label":"孟连傣族拉祜族佤族自治县","value":"530827"},{"label":"澜沧拉祜族自治县","value":"530828"},{"label":"西盟佤族自治县","value":"530829"}],[{"label":"临翔区","value":"530902"},{"label":"凤庆县","value":"530921"},{"label":"云县","value":"530922"},{"label":"永德县","value":"530923"},{"label":"镇康县","value":"530924"},{"label":"双江拉祜族佤族布朗族傣族自治县","value":"530925"},{"label":"耿马傣族佤族自治县","value":"530926"},{"label":"沧源佤族自治县","value":"530927"}],[{"label":"楚雄市","value":"532301"},{"label":"双柏县","value":"532322"},{"label":"牟定县","value":"532323"},{"label":"南华县","value":"532324"},{"label":"姚安县","value":"532325"},{"label":"大姚县","value":"532326"},{"label":"永仁县","value":"532327"},{"label":"元谋县","value":"532328"},{"label":"武定县","value":"532329"},{"label":"禄丰县","value":"532331"}],[{"label":"个旧市","value":"532501"},{"label":"开远市","value":"532502"},{"label":"蒙自市","value":"532503"},{"label":"弥勒市","value":"532504"},{"label":"屏边苗族自治县","value":"532523"},{"label":"建水县","value":"532524"},{"label":"石屏县","value":"532525"},{"label":"泸西县","value":"532527"},{"label":"元阳县","value":"532528"},{"label":"红河县","value":"532529"},{"label":"金平苗族瑶族傣族自治县","value":"532530"},{"label":"绿春县","value":"532531"},{"label":"河口瑶族自治县","value":"532532"}],[{"label":"文山市","value":"532601"},{"label":"砚山县","value":"532622"},{"label":"西畴县","value":"532623"},{"label":"麻栗坡县","value":"532624"},{"label":"马关县","value":"532625"},{"label":"丘北县","value":"532626"},{"label":"广南县","value":"532627"},{"label":"富宁县","value":"532628"}],[{"label":"景洪市","value":"532801"},{"label":"勐海县","value":"532822"},{"label":"勐腊县","value":"532823"}],[{"label":"大理市","value":"532901"},{"label":"漾濞彝族自治县","value":"532922"},{"label":"祥云县","value":"532923"},{"label":"宾川县","value":"532924"},{"label":"弥渡县","value":"532925"},{"label":"南涧彝族自治县","value":"532926"},{"label":"巍山彝族回族自治县","value":"532927"},{"label":"永平县","value":"532928"},{"label":"云龙县","value":"532929"},{"label":"洱源县","value":"532930"},{"label":"剑川县","value":"532931"},{"label":"鹤庆县","value":"532932"}],[{"label":"瑞丽市","value":"533102"},{"label":"芒市","value":"533103"},{"label":"梁河县","value":"533122"},{"label":"盈江县","value":"533123"},{"label":"陇川县","value":"533124"}],[{"label":"泸水市","value":"533301"},{"label":"福贡县","value":"533323"},{"label":"贡山独龙族怒族自治县","value":"533324"},{"label":"兰坪白族普米族自治县","value":"533325"}],[{"label":"香格里拉市","value":"533401"},{"label":"德钦县","value":"533422"},{"label":"维西傈僳族自治县","value":"533423"}]],[[{"label":"城关区","value":"540102"},{"label":"堆龙德庆区","value":"540103"},{"label":"林周县","value":"540121"},{"label":"当雄县","value":"540122"},{"label":"尼木县","value":"540123"},{"label":"曲水县","value":"540124"},{"label":"达孜县","value":"540126"},{"label":"墨竹工卡县","value":"540127"},{"label":"格尔木藏青工业园区","value":"540171"},{"label":"拉萨经济技术开发区","value":"540172"},{"label":"西藏文化旅游创意园区","value":"540173"},{"label":"达孜工业园区","value":"540174"}],[{"label":"桑珠孜区","value":"540202"},{"label":"南木林县","value":"540221"},{"label":"江孜县","value":"540222"},{"label":"定日县","value":"540223"},{"label":"萨迦县","value":"540224"},{"label":"拉孜县","value":"540225"},{"label":"昂仁县","value":"540226"},{"label":"谢通门县","value":"540227"},{"label":"白朗县","value":"540228"},{"label":"仁布县","value":"540229"},{"label":"康马县","value":"540230"},{"label":"定结县","value":"540231"},{"label":"仲巴县","value":"540232"},{"label":"亚东县","value":"540233"},{"label":"吉隆县","value":"540234"},{"label":"聂拉木县","value":"540235"},{"label":"萨嘎县","value":"540236"},{"label":"岗巴县","value":"540237"}],[{"label":"卡若区","value":"540302"},{"label":"江达县","value":"540321"},{"label":"贡觉县","value":"540322"},{"label":"类乌齐县","value":"540323"},{"label":"丁青县","value":"540324"},{"label":"察雅县","value":"540325"},{"label":"八宿县","value":"540326"},{"label":"左贡县","value":"540327"},{"label":"芒康县","value":"540328"},{"label":"洛隆县","value":"540329"},{"label":"边坝县","value":"540330"}],[{"label":"巴宜区","value":"540402"},{"label":"工布江达县","value":"540421"},{"label":"米林县","value":"540422"},{"label":"墨脱县","value":"540423"},{"label":"波密县","value":"540424"},{"label":"察隅县","value":"540425"},{"label":"朗县","value":"540426"}],[{"label":"乃东区","value":"540502"},{"label":"扎囊县","value":"540521"},{"label":"贡嘎县","value":"540522"},{"label":"桑日县","value":"540523"},{"label":"琼结县","value":"540524"},{"label":"曲松县","value":"540525"},{"label":"措美县","value":"540526"},{"label":"洛扎县","value":"540527"},{"label":"加查县","value":"540528"},{"label":"隆子县","value":"540529"},{"label":"错那县","value":"540530"},{"label":"浪卡子县","value":"540531"}],[{"label":"那曲县","value":"542421"},{"label":"嘉黎县","value":"542422"},{"label":"比如县","value":"542423"},{"label":"聂荣县","value":"542424"},{"label":"安多县","value":"542425"},{"label":"申扎县","value":"542426"},{"label":"索县","value":"542427"},{"label":"班戈县","value":"542428"},{"label":"巴青县","value":"542429"},{"label":"尼玛县","value":"542430"},{"label":"双湖县","value":"542431"}],[{"label":"普兰县","value":"542521"},{"label":"札达县","value":"542522"},{"label":"噶尔县","value":"542523"},{"label":"日土县","value":"542524"},{"label":"革吉县","value":"542525"},{"label":"改则县","value":"542526"},{"label":"措勤县","value":"542527"}]],[[{"label":"新城区","value":"610102"},{"label":"碑林区","value":"610103"},{"label":"莲湖区","value":"610104"},{"label":"灞桥区","value":"610111"},{"label":"未央区","value":"610112"},{"label":"雁塔区","value":"610113"},{"label":"阎良区","value":"610114"},{"label":"临潼区","value":"610115"},{"label":"长安区","value":"610116"},{"label":"高陵区","value":"610117"},{"label":"鄠邑区","value":"610118"},{"label":"蓝田县","value":"610122"},{"label":"周至县","value":"610124"}],[{"label":"王益区","value":"610202"},{"label":"印台区","value":"610203"},{"label":"耀州区","value":"610204"},{"label":"宜君县","value":"610222"}],[{"label":"渭滨区","value":"610302"},{"label":"金台区","value":"610303"},{"label":"陈仓区","value":"610304"},{"label":"凤翔县","value":"610322"},{"label":"岐山县","value":"610323"},{"label":"扶风县","value":"610324"},{"label":"眉县","value":"610326"},{"label":"陇县","value":"610327"},{"label":"千阳县","value":"610328"},{"label":"麟游县","value":"610329"},{"label":"凤县","value":"610330"},{"label":"太白县","value":"610331"}],[{"label":"秦都区","value":"610402"},{"label":"杨陵区","value":"610403"},{"label":"渭城区","value":"610404"},{"label":"三原县","value":"610422"},{"label":"泾阳县","value":"610423"},{"label":"乾县","value":"610424"},{"label":"礼泉县","value":"610425"},{"label":"永寿县","value":"610426"},{"label":"彬县","value":"610427"},{"label":"长武县","value":"610428"},{"label":"旬邑县","value":"610429"},{"label":"淳化县","value":"610430"},{"label":"武功县","value":"610431"},{"label":"兴平市","value":"610481"}],[{"label":"临渭区","value":"610502"},{"label":"华州区","value":"610503"},{"label":"潼关县","value":"610522"},{"label":"大荔县","value":"610523"},{"label":"合阳县","value":"610524"},{"label":"澄城县","value":"610525"},{"label":"蒲城县","value":"610526"},{"label":"白水县","value":"610527"},{"label":"富平县","value":"610528"},{"label":"韩城市","value":"610581"},{"label":"华阴市","value":"610582"}],[{"label":"宝塔区","value":"610602"},{"label":"安塞区","value":"610603"},{"label":"延长县","value":"610621"},{"label":"延川县","value":"610622"},{"label":"子长县","value":"610623"},{"label":"志丹县","value":"610625"},{"label":"吴起县","value":"610626"},{"label":"甘泉县","value":"610627"},{"label":"富县","value":"610628"},{"label":"洛川县","value":"610629"},{"label":"宜川县","value":"610630"},{"label":"黄龙县","value":"610631"},{"label":"黄陵县","value":"610632"}],[{"label":"汉台区","value":"610702"},{"label":"南郑区","value":"610703"},{"label":"城固县","value":"610722"},{"label":"洋县","value":"610723"},{"label":"西乡县","value":"610724"},{"label":"勉县","value":"610725"},{"label":"宁强县","value":"610726"},{"label":"略阳县","value":"610727"},{"label":"镇巴县","value":"610728"},{"label":"留坝县","value":"610729"},{"label":"佛坪县","value":"610730"}],[{"label":"榆阳区","value":"610802"},{"label":"横山区","value":"610803"},{"label":"府谷县","value":"610822"},{"label":"靖边县","value":"610824"},{"label":"定边县","value":"610825"},{"label":"绥德县","value":"610826"},{"label":"米脂县","value":"610827"},{"label":"佳县","value":"610828"},{"label":"吴堡县","value":"610829"},{"label":"清涧县","value":"610830"},{"label":"子洲县","value":"610831"},{"label":"神木市","value":"610881"}],[{"label":"汉滨区","value":"610902"},{"label":"汉阴县","value":"610921"},{"label":"石泉县","value":"610922"},{"label":"宁陕县","value":"610923"},{"label":"紫阳县","value":"610924"},{"label":"岚皋县","value":"610925"},{"label":"平利县","value":"610926"},{"label":"镇坪县","value":"610927"},{"label":"旬阳县","value":"610928"},{"label":"白河县","value":"610929"}],[{"label":"商州区","value":"611002"},{"label":"洛南县","value":"611021"},{"label":"丹凤县","value":"611022"},{"label":"商南县","value":"611023"},{"label":"山阳县","value":"611024"},{"label":"镇安县","value":"611025"},{"label":"柞水县","value":"611026"}]],[[{"label":"城关区","value":"620102"},{"label":"七里河区","value":"620103"},{"label":"西固区","value":"620104"},{"label":"安宁区","value":"620105"},{"label":"红古区","value":"620111"},{"label":"永登县","value":"620121"},{"label":"皋兰县","value":"620122"},{"label":"榆中县","value":"620123"},{"label":"兰州新区","value":"620171"}],[{"label":"嘉峪关市","value":"620201"}],[{"label":"金川区","value":"620302"},{"label":"永昌县","value":"620321"}],[{"label":"白银区","value":"620402"},{"label":"平川区","value":"620403"},{"label":"靖远县","value":"620421"},{"label":"会宁县","value":"620422"},{"label":"景泰县","value":"620423"}],[{"label":"秦州区","value":"620502"},{"label":"麦积区","value":"620503"},{"label":"清水县","value":"620521"},{"label":"秦安县","value":"620522"},{"label":"甘谷县","value":"620523"},{"label":"武山县","value":"620524"},{"label":"张家川回族自治县","value":"620525"}],[{"label":"凉州区","value":"620602"},{"label":"民勤县","value":"620621"},{"label":"古浪县","value":"620622"},{"label":"天祝藏族自治县","value":"620623"}],[{"label":"甘州区","value":"620702"},{"label":"肃南裕固族自治县","value":"620721"},{"label":"民乐县","value":"620722"},{"label":"临泽县","value":"620723"},{"label":"高台县","value":"620724"},{"label":"山丹县","value":"620725"}],[{"label":"崆峒区","value":"620802"},{"label":"泾川县","value":"620821"},{"label":"灵台县","value":"620822"},{"label":"崇信县","value":"620823"},{"label":"华亭县","value":"620824"},{"label":"庄浪县","value":"620825"},{"label":"静宁县","value":"620826"},{"label":"平凉工业园区","value":"620871"}],[{"label":"肃州区","value":"620902"},{"label":"金塔县","value":"620921"},{"label":"瓜州县","value":"620922"},{"label":"肃北蒙古族自治县","value":"620923"},{"label":"阿克塞哈萨克族自治县","value":"620924"},{"label":"玉门市","value":"620981"},{"label":"敦煌市","value":"620982"}],[{"label":"西峰区","value":"621002"},{"label":"庆城县","value":"621021"},{"label":"环县","value":"621022"},{"label":"华池县","value":"621023"},{"label":"合水县","value":"621024"},{"label":"正宁县","value":"621025"},{"label":"宁县","value":"621026"},{"label":"镇原县","value":"621027"}],[{"label":"安定区","value":"621102"},{"label":"通渭县","value":"621121"},{"label":"陇西县","value":"621122"},{"label":"渭源县","value":"621123"},{"label":"临洮县","value":"621124"},{"label":"漳县","value":"621125"},{"label":"岷县","value":"621126"}],[{"label":"武都区","value":"621202"},{"label":"成县","value":"621221"},{"label":"文县","value":"621222"},{"label":"宕昌县","value":"621223"},{"label":"康县","value":"621224"},{"label":"西和县","value":"621225"},{"label":"礼县","value":"621226"},{"label":"徽县","value":"621227"},{"label":"两当县","value":"621228"}],[{"label":"临夏市","value":"622901"},{"label":"临夏县","value":"622921"},{"label":"康乐县","value":"622922"},{"label":"永靖县","value":"622923"},{"label":"广河县","value":"622924"},{"label":"和政县","value":"622925"},{"label":"东乡族自治县","value":"622926"},{"label":"积石山保安族东乡族撒拉族自治县","value":"622927"}],[{"label":"合作市","value":"623001"},{"label":"临潭县","value":"623021"},{"label":"卓尼县","value":"623022"},{"label":"舟曲县","value":"623023"},{"label":"迭部县","value":"623024"},{"label":"玛曲县","value":"623025"},{"label":"碌曲县","value":"623026"},{"label":"夏河县","value":"623027"}]],[[{"label":"城东区","value":"630102"},{"label":"城中区","value":"630103"},{"label":"城西区","value":"630104"},{"label":"城北区","value":"630105"},{"label":"大通回族土族自治县","value":"630121"},{"label":"湟中县","value":"630122"},{"label":"湟源县","value":"630123"}],[{"label":"乐都区","value":"630202"},{"label":"平安区","value":"630203"},{"label":"民和回族土族自治县","value":"630222"},{"label":"互助土族自治县","value":"630223"},{"label":"化隆回族自治县","value":"630224"},{"label":"循化撒拉族自治县","value":"630225"}],[{"label":"门源回族自治县","value":"632221"},{"label":"祁连县","value":"632222"},{"label":"海晏县","value":"632223"},{"label":"刚察县","value":"632224"}],[{"label":"同仁县","value":"632321"},{"label":"尖扎县","value":"632322"},{"label":"泽库县","value":"632323"},{"label":"河南蒙古族自治县","value":"632324"}],[{"label":"共和县","value":"632521"},{"label":"同德县","value":"632522"},{"label":"贵德县","value":"632523"},{"label":"兴海县","value":"632524"},{"label":"贵南县","value":"632525"}],[{"label":"玛沁县","value":"632621"},{"label":"班玛县","value":"632622"},{"label":"甘德县","value":"632623"},{"label":"达日县","value":"632624"},{"label":"久治县","value":"632625"},{"label":"玛多县","value":"632626"}],[{"label":"玉树市","value":"632701"},{"label":"杂多县","value":"632722"},{"label":"称多县","value":"632723"},{"label":"治多县","value":"632724"},{"label":"囊谦县","value":"632725"},{"label":"曲麻莱县","value":"632726"}],[{"label":"格尔木市","value":"632801"},{"label":"德令哈市","value":"632802"},{"label":"乌兰县","value":"632821"},{"label":"都兰县","value":"632822"},{"label":"天峻县","value":"632823"},{"label":"大柴旦行政委员会","value":"632857"},{"label":"冷湖行政委员会","value":"632858"},{"label":"茫崖行政委员会","value":"632859"}]],[[{"label":"兴庆区","value":"640104"},{"label":"西夏区","value":"640105"},{"label":"金凤区","value":"640106"},{"label":"永宁县","value":"640121"},{"label":"贺兰县","value":"640122"},{"label":"灵武市","value":"640181"}],[{"label":"大武口区","value":"640202"},{"label":"惠农区","value":"640205"},{"label":"平罗县","value":"640221"}],[{"label":"利通区","value":"640302"},{"label":"红寺堡区","value":"640303"},{"label":"盐池县","value":"640323"},{"label":"同心县","value":"640324"},{"label":"青铜峡市","value":"640381"}],[{"label":"原州区","value":"640402"},{"label":"西吉县","value":"640422"},{"label":"隆德县","value":"640423"},{"label":"泾源县","value":"640424"},{"label":"彭阳县","value":"640425"}],[{"label":"沙坡头区","value":"640502"},{"label":"中宁县","value":"640521"},{"label":"海原县","value":"640522"}]],[[{"label":"天山区","value":"650102"},{"label":"沙依巴克区","value":"650103"},{"label":"新市区","value":"650104"},{"label":"水磨沟区","value":"650105"},{"label":"头屯河区","value":"650106"},{"label":"达坂城区","value":"650107"},{"label":"米东区","value":"650109"},{"label":"乌鲁木齐县","value":"650121"},{"label":"乌鲁木齐经济技术开发区","value":"650171"},{"label":"乌鲁木齐高新技术产业开发区","value":"650172"}],[{"label":"独山子区","value":"650202"},{"label":"克拉玛依区","value":"650203"},{"label":"白碱滩区","value":"650204"},{"label":"乌尔禾区","value":"650205"}],[{"label":"高昌区","value":"650402"},{"label":"鄯善县","value":"650421"},{"label":"托克逊县","value":"650422"}],[{"label":"伊州区","value":"650502"},{"label":"巴里坤哈萨克自治县","value":"650521"},{"label":"伊吾县","value":"650522"}],[{"label":"昌吉市","value":"652301"},{"label":"阜康市","value":"652302"},{"label":"呼图壁县","value":"652323"},{"label":"玛纳斯县","value":"652324"},{"label":"奇台县","value":"652325"},{"label":"吉木萨尔县","value":"652327"},{"label":"木垒哈萨克自治县","value":"652328"}],[{"label":"博乐市","value":"652701"},{"label":"阿拉山口市","value":"652702"},{"label":"精河县","value":"652722"},{"label":"温泉县","value":"652723"}],[{"label":"库尔勒市","value":"652801"},{"label":"轮台县","value":"652822"},{"label":"尉犁县","value":"652823"},{"label":"若羌县","value":"652824"},{"label":"且末县","value":"652825"},{"label":"焉耆回族自治县","value":"652826"},{"label":"和静县","value":"652827"},{"label":"和硕县","value":"652828"},{"label":"博湖县","value":"652829"},{"label":"库尔勒经济技术开发区","value":"652871"}],[{"label":"阿克苏市","value":"652901"},{"label":"温宿县","value":"652922"},{"label":"库车县","value":"652923"},{"label":"沙雅县","value":"652924"},{"label":"新和县","value":"652925"},{"label":"拜城县","value":"652926"},{"label":"乌什县","value":"652927"},{"label":"阿瓦提县","value":"652928"},{"label":"柯坪县","value":"652929"}],[{"label":"阿图什市","value":"653001"},{"label":"阿克陶县","value":"653022"},{"label":"阿合奇县","value":"653023"},{"label":"乌恰县","value":"653024"}],[{"label":"喀什市","value":"653101"},{"label":"疏附县","value":"653121"},{"label":"疏勒县","value":"653122"},{"label":"英吉沙县","value":"653123"},{"label":"泽普县","value":"653124"},{"label":"莎车县","value":"653125"},{"label":"叶城县","value":"653126"},{"label":"麦盖提县","value":"653127"},{"label":"岳普湖县","value":"653128"},{"label":"伽师县","value":"653129"},{"label":"巴楚县","value":"653130"},{"label":"塔什库尔干塔吉克自治县","value":"653131"}],[{"label":"和田市","value":"653201"},{"label":"和田县","value":"653221"},{"label":"墨玉县","value":"653222"},{"label":"皮山县","value":"653223"},{"label":"洛浦县","value":"653224"},{"label":"策勒县","value":"653225"},{"label":"于田县","value":"653226"},{"label":"民丰县","value":"653227"}],[{"label":"伊宁市","value":"654002"},{"label":"奎屯市","value":"654003"},{"label":"霍尔果斯市","value":"654004"},{"label":"伊宁县","value":"654021"},{"label":"察布查尔锡伯自治县","value":"654022"},{"label":"霍城县","value":"654023"},{"label":"巩留县","value":"654024"},{"label":"新源县","value":"654025"},{"label":"昭苏县","value":"654026"},{"label":"特克斯县","value":"654027"},{"label":"尼勒克县","value":"654028"}],[{"label":"塔城市","value":"654201"},{"label":"乌苏市","value":"654202"},{"label":"额敏县","value":"654221"},{"label":"沙湾县","value":"654223"},{"label":"托里县","value":"654224"},{"label":"裕民县","value":"654225"},{"label":"和布克赛尔蒙古自治县","value":"654226"}],[{"label":"阿勒泰市","value":"654301"},{"label":"布尔津县","value":"654321"},{"label":"富蕴县","value":"654322"},{"label":"福海县","value":"654323"},{"label":"哈巴河县","value":"654324"},{"label":"青河县","value":"654325"},{"label":"吉木乃县","value":"654326"}],[{"label":"石河子市","value":"659001"},{"label":"阿拉尔市","value":"659002"},{"label":"图木舒克市","value":"659003"},{"label":"五家渠市","value":"659004"},{"label":"铁门关市","value":"659006"}]],[[{"label":"台北","value":"660101"}],[{"label":"高雄","value":"660201"}],[{"label":"基隆","value":"660301"}],[{"label":"台中","value":"660401"}],[{"label":"台南","value":"660501"}],[{"label":"新竹","value":"660601"}],[{"label":"嘉义","value":"660701"}],[{"label":"宜兰","value":"660801"}],[{"label":"桃园","value":"660901"}],[{"label":"苗栗","value":"661001"}],[{"label":"彰化","value":"661101"}],[{"label":"南投","value":"661201"}],[{"label":"云林","value":"661301"}],[{"label":"屏东","value":"661401"}],[{"label":"台东","value":"661501"}],[{"label":"花莲","value":"661601"}],[{"label":"澎湖","value":"661701"}]],[[{"label":"香港岛","value":"670101"}],[{"label":"九龙","value":"670201"}],[{"label":"新界","value":"670301"}]],[[{"label":"澳门半岛","value":"680101"}],[{"label":"氹仔岛","value":"680201"}],[{"label":"路环岛","value":"680301"}],[{"label":"路氹城","value":"680401"}]]];export default areaData;
\ No newline at end of file
diff --git a/uview-ui/libs/util/async-validator.js b/uview-ui/libs/util/async-validator.js
deleted file mode 100644
index d7215b9..0000000
--- a/uview-ui/libs/util/async-validator.js
+++ /dev/null
@@ -1,1356 +0,0 @@
-function _extends() {
-	_extends = Object.assign || function(target) {
-		for (var i = 1; i < arguments.length; i++) {
-			var source = arguments[i];
-
-			for (var key in source) {
-				if (Object.prototype.hasOwnProperty.call(source, key)) {
-					target[key] = source[key];
-				}
-			}
-		}
-
-		return target;
-	};
-
-	return _extends.apply(this, arguments);
-}
-
-/* eslint no-console:0 */
-var formatRegExp = /%[sdj%]/g;
-var warning = function warning() {}; // don't print warning message when in production env or node runtime
-
-if (typeof process !== 'undefined' && process.env && process.env.NODE_ENV !== 'production' && typeof window !==
-	'undefined' && typeof document !== 'undefined') {
-	warning = function warning(type, errors) {
-		if (typeof console !== 'undefined' && console.warn) {
-			if (errors.every(function(e) {
-					return typeof e === 'string';
-				})) {
-				console.warn(type, errors);
-			}
-		}
-	};
-}
-
-function convertFieldsError(errors) {
-	if (!errors || !errors.length) return null;
-	var fields = {};
-	errors.forEach(function(error) {
-		var field = error.field;
-		fields[field] = fields[field] || [];
-		fields[field].push(error);
-	});
-	return fields;
-}
-
-function format() {
-	for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
-		args[_key] = arguments[_key];
-	}
-
-	var i = 1;
-	var f = args[0];
-	var len = args.length;
-
-	if (typeof f === 'function') {
-		return f.apply(null, args.slice(1));
-	}
-
-	if (typeof f === 'string') {
-		var str = String(f).replace(formatRegExp, function(x) {
-			if (x === '%%') {
-				return '%';
-			}
-
-			if (i >= len) {
-				return x;
-			}
-
-			switch (x) {
-				case '%s':
-					return String(args[i++]);
-
-				case '%d':
-					return Number(args[i++]);
-
-				case '%j':
-					try {
-						return JSON.stringify(args[i++]);
-					} catch (_) {
-						return '[Circular]';
-					}
-
-					break;
-
-				default:
-					return x;
-			}
-		});
-
-		for (var arg = args[i]; i < len; arg = args[++i]) {
-			str += " " + arg;
-		}
-
-		return str;
-	}
-
-	return f;
-}
-
-function isNativeStringType(type) {
-	return type === 'string' || type === 'url' || type === 'hex' || type === 'email' || type === 'pattern';
-}
-
-function isEmptyValue(value, type) {
-	if (value === undefined || value === null) {
-		return true;
-	}
-
-	if (type === 'array' && Array.isArray(value) && !value.length) {
-		return true;
-	}
-
-	if (isNativeStringType(type) && typeof value === 'string' && !value) {
-		return true;
-	}
-
-	return false;
-}
-
-function asyncParallelArray(arr, func, callback) {
-	var results = [];
-	var total = 0;
-	var arrLength = arr.length;
-
-	function count(errors) {
-		results.push.apply(results, errors);
-		total++;
-
-		if (total === arrLength) {
-			callback(results);
-		}
-	}
-
-	arr.forEach(function(a) {
-		func(a, count);
-	});
-}
-
-function asyncSerialArray(arr, func, callback) {
-	var index = 0;
-	var arrLength = arr.length;
-
-	function next(errors) {
-		if (errors && errors.length) {
-			callback(errors);
-			return;
-		}
-
-		var original = index;
-		index = index + 1;
-
-		if (original < arrLength) {
-			func(arr[original], next);
-		} else {
-			callback([]);
-		}
-	}
-
-	next([]);
-}
-
-function flattenObjArr(objArr) {
-	var ret = [];
-	Object.keys(objArr).forEach(function(k) {
-		ret.push.apply(ret, objArr[k]);
-	});
-	return ret;
-}
-
-function asyncMap(objArr, option, func, callback) {
-	if (option.first) {
-		var _pending = new Promise(function(resolve, reject) {
-			var next = function next(errors) {
-				callback(errors);
-				return errors.length ? reject({
-					errors: errors,
-					fields: convertFieldsError(errors)
-				}) : resolve();
-			};
-
-			var flattenArr = flattenObjArr(objArr);
-			asyncSerialArray(flattenArr, func, next);
-		});
-
-		_pending["catch"](function(e) {
-			return e;
-		});
-
-		return _pending;
-	}
-
-	var firstFields = option.firstFields || [];
-
-	if (firstFields === true) {
-		firstFields = Object.keys(objArr);
-	}
-
-	var objArrKeys = Object.keys(objArr);
-	var objArrLength = objArrKeys.length;
-	var total = 0;
-	var results = [];
-	var pending = new Promise(function(resolve, reject) {
-		var next = function next(errors) {
-			results.push.apply(results, errors);
-			total++;
-
-			if (total === objArrLength) {
-				callback(results);
-				return results.length ? reject({
-					errors: results,
-					fields: convertFieldsError(results)
-				}) : resolve();
-			}
-		};
-
-		if (!objArrKeys.length) {
-			callback(results);
-			resolve();
-		}
-
-		objArrKeys.forEach(function(key) {
-			var arr = objArr[key];
-
-			if (firstFields.indexOf(key) !== -1) {
-				asyncSerialArray(arr, func, next);
-			} else {
-				asyncParallelArray(arr, func, next);
-			}
-		});
-	});
-	pending["catch"](function(e) {
-		return e;
-	});
-	return pending;
-}
-
-function complementError(rule) {
-	return function(oe) {
-		if (oe && oe.message) {
-			oe.field = oe.field || rule.fullField;
-			return oe;
-		}
-
-		return {
-			message: typeof oe === 'function' ? oe() : oe,
-			field: oe.field || rule.fullField
-		};
-	};
-}
-
-function deepMerge(target, source) {
-	if (source) {
-		for (var s in source) {
-			if (source.hasOwnProperty(s)) {
-				var value = source[s];
-
-				if (typeof value === 'object' && typeof target[s] === 'object') {
-					target[s] = _extends({}, target[s], {}, value);
-				} else {
-					target[s] = value;
-				}
-			}
-		}
-	}
-
-	return target;
-}
-
-/**
- *  Rule for validating required fields.
- *
- *  @param rule The validation rule.
- *  @param value The value of the field on the source object.
- *  @param source The source object being validated.
- *  @param errors An array of errors that this rule may add
- *  validation errors to.
- *  @param options The validation options.
- *  @param options.messages The validation messages.
- */
-
-function required(rule, value, source, errors, options, type) {
-	if (rule.required && (!source.hasOwnProperty(rule.field) || isEmptyValue(value, type || rule.type))) {
-		errors.push(format(options.messages.required, rule.fullField));
-	}
-}
-
-/**
- *  Rule for validating whitespace.
- *
- *  @param rule The validation rule.
- *  @param value The value of the field on the source object.
- *  @param source The source object being validated.
- *  @param errors An array of errors that this rule may add
- *  validation errors to.
- *  @param options The validation options.
- *  @param options.messages The validation messages.
- */
-
-function whitespace(rule, value, source, errors, options) {
-	if (/^\s+$/.test(value) || value === '') {
-		errors.push(format(options.messages.whitespace, rule.fullField));
-	}
-}
-
-/* eslint max-len:0 */
-
-var pattern = {
-	// http://emailregex.com/
-	email: /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,
-	url: new RegExp(
-		"^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$",
-		'i'),
-	hex: /^#?([a-f0-9]{6}|[a-f0-9]{3})$/i
-};
-var types = {
-	integer: function integer(value) {
-		return types.number(value) && parseInt(value, 10) === value;
-	},
-	"float": function float(value) {
-		return types.number(value) && !types.integer(value);
-	},
-	array: function array(value) {
-		return Array.isArray(value);
-	},
-	regexp: function regexp(value) {
-		if (value instanceof RegExp) {
-			return true;
-		}
-
-		try {
-			return !!new RegExp(value);
-		} catch (e) {
-			return false;
-		}
-	},
-	date: function date(value) {
-		return typeof value.getTime === 'function' && typeof value.getMonth === 'function' && typeof value.getYear ===
-			'function';
-	},
-	number: function number(value) {
-		if (isNaN(value)) {
-			return false;
-		}
-
-		// 修改源码,将字符串数值先转为数值
-		return typeof +value === 'number';
-	},
-	object: function object(value) {
-		return typeof value === 'object' && !types.array(value);
-	},
-	method: function method(value) {
-		return typeof value === 'function';
-	},
-	email: function email(value) {
-		return typeof value === 'string' && !!value.match(pattern.email) && value.length < 255;
-	},
-	url: function url(value) {
-		return typeof value === 'string' && !!value.match(pattern.url);
-	},
-	hex: function hex(value) {
-		return typeof value === 'string' && !!value.match(pattern.hex);
-	}
-};
-/**
- *  Rule for validating the type of a value.
- *
- *  @param rule The validation rule.
- *  @param value The value of the field on the source object.
- *  @param source The source object being validated.
- *  @param errors An array of errors that this rule may add
- *  validation errors to.
- *  @param options The validation options.
- *  @param options.messages The validation messages.
- */
-
-function type(rule, value, source, errors, options) {
-	if (rule.required && value === undefined) {
-		required(rule, value, source, errors, options);
-		return;
-	}
-
-	var custom = ['integer', 'float', 'array', 'regexp', 'object', 'method', 'email', 'number', 'date', 'url', 'hex'];
-	var ruleType = rule.type;
-
-	if (custom.indexOf(ruleType) > -1) {
-		if (!types[ruleType](value)) {
-			errors.push(format(options.messages.types[ruleType], rule.fullField, rule.type));
-		} // straight typeof check
-
-	} else if (ruleType && typeof value !== rule.type) {
-		errors.push(format(options.messages.types[ruleType], rule.fullField, rule.type));
-	}
-}
-
-/**
- *  Rule for validating minimum and maximum allowed values.
- *
- *  @param rule The validation rule.
- *  @param value The value of the field on the source object.
- *  @param source The source object being validated.
- *  @param errors An array of errors that this rule may add
- *  validation errors to.
- *  @param options The validation options.
- *  @param options.messages The validation messages.
- */
-
-function range(rule, value, source, errors, options) {
-	var len = typeof rule.len === 'number';
-	var min = typeof rule.min === 'number';
-	var max = typeof rule.max === 'number'; // 正则匹配码点范围从U+010000一直到U+10FFFF的文字(补充平面Supplementary Plane)
-
-	var spRegexp = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g;
-	var val = value;
-	var key = null;
-	var num = typeof value === 'number';
-	var str = typeof value === 'string';
-	var arr = Array.isArray(value);
-
-	if (num) {
-		key = 'number';
-	} else if (str) {
-		key = 'string';
-	} else if (arr) {
-		key = 'array';
-	} // if the value is not of a supported type for range validation
-	// the validation rule rule should use the
-	// type property to also test for a particular type
-
-
-	if (!key) {
-		return false;
-	}
-
-	if (arr) {
-		val = value.length;
-	}
-
-	if (str) {
-		// 处理码点大于U+010000的文字length属性不准确的bug,如"𠮷𠮷𠮷".lenght !== 3
-		val = value.replace(spRegexp, '_').length;
-	}
-
-	if (len) {
-		if (val !== rule.len) {
-			errors.push(format(options.messages[key].len, rule.fullField, rule.len));
-		}
-	} else if (min && !max && val < rule.min) {
-		errors.push(format(options.messages[key].min, rule.fullField, rule.min));
-	} else if (max && !min && val > rule.max) {
-		errors.push(format(options.messages[key].max, rule.fullField, rule.max));
-	} else if (min && max && (val < rule.min || val > rule.max)) {
-		errors.push(format(options.messages[key].range, rule.fullField, rule.min, rule.max));
-	}
-}
-
-var ENUM = 'enum';
-/**
- *  Rule for validating a value exists in an enumerable list.
- *
- *  @param rule The validation rule.
- *  @param value The value of the field on the source object.
- *  @param source The source object being validated.
- *  @param errors An array of errors that this rule may add
- *  validation errors to.
- *  @param options The validation options.
- *  @param options.messages The validation messages.
- */
-
-function enumerable(rule, value, source, errors, options) {
-	rule[ENUM] = Array.isArray(rule[ENUM]) ? rule[ENUM] : [];
-
-	if (rule[ENUM].indexOf(value) === -1) {
-		errors.push(format(options.messages[ENUM], rule.fullField, rule[ENUM].join(', ')));
-	}
-}
-
-/**
- *  Rule for validating a regular expression pattern.
- *
- *  @param rule The validation rule.
- *  @param value The value of the field on the source object.
- *  @param source The source object being validated.
- *  @param errors An array of errors that this rule may add
- *  validation errors to.
- *  @param options The validation options.
- *  @param options.messages The validation messages.
- */
-
-function pattern$1(rule, value, source, errors, options) {
-	if (rule.pattern) {
-		if (rule.pattern instanceof RegExp) {
-			// if a RegExp instance is passed, reset `lastIndex` in case its `global`
-			// flag is accidentally set to `true`, which in a validation scenario
-			// is not necessary and the result might be misleading
-			rule.pattern.lastIndex = 0;
-
-			if (!rule.pattern.test(value)) {
-				errors.push(format(options.messages.pattern.mismatch, rule.fullField, value, rule.pattern));
-			}
-		} else if (typeof rule.pattern === 'string') {
-			var _pattern = new RegExp(rule.pattern);
-
-			if (!_pattern.test(value)) {
-				errors.push(format(options.messages.pattern.mismatch, rule.fullField, value, rule.pattern));
-			}
-		}
-	}
-}
-
-var rules = {
-	required: required,
-	whitespace: whitespace,
-	type: type,
-	range: range,
-	"enum": enumerable,
-	pattern: pattern$1
-};
-
-/**
- *  Performs validation for string types.
- *
- *  @param rule The validation rule.
- *  @param value The value of the field on the source object.
- *  @param callback The callback function.
- *  @param source The source object being validated.
- *  @param options The validation options.
- *  @param options.messages The validation messages.
- */
-
-function string(rule, value, callback, source, options) {
-	var errors = [];
-	var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
-
-	if (validate) {
-		if (isEmptyValue(value, 'string') && !rule.required) {
-			return callback();
-		}
-
-		rules.required(rule, value, source, errors, options, 'string');
-
-		if (!isEmptyValue(value, 'string')) {
-			rules.type(rule, value, source, errors, options);
-			rules.range(rule, value, source, errors, options);
-			rules.pattern(rule, value, source, errors, options);
-
-			if (rule.whitespace === true) {
-				rules.whitespace(rule, value, source, errors, options);
-			}
-		}
-	}
-
-	callback(errors);
-}
-
-/**
- *  Validates a function.
- *
- *  @param rule The validation rule.
- *  @param value The value of the field on the source object.
- *  @param callback The callback function.
- *  @param source The source object being validated.
- *  @param options The validation options.
- *  @param options.messages The validation messages.
- */
-
-function method(rule, value, callback, source, options) {
-	var errors = [];
-	var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
-
-	if (validate) {
-		if (isEmptyValue(value) && !rule.required) {
-			return callback();
-		}
-
-		rules.required(rule, value, source, errors, options);
-
-		if (value !== undefined) {
-			rules.type(rule, value, source, errors, options);
-		}
-	}
-
-	callback(errors);
-}
-
-/**
- *  Validates a number.
- *
- *  @param rule The validation rule.
- *  @param value The value of the field on the source object.
- *  @param callback The callback function.
- *  @param source The source object being validated.
- *  @param options The validation options.
- *  @param options.messages The validation messages.
- */
-
-function number(rule, value, callback, source, options) {
-	var errors = [];
-	var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
-
-	if (validate) {
-		if (value === '') {
-			value = undefined;
-		}
-
-		if (isEmptyValue(value) && !rule.required) {
-			return callback();
-		}
-
-		rules.required(rule, value, source, errors, options);
-
-		if (value !== undefined) {
-			rules.type(rule, value, source, errors, options);
-			rules.range(rule, value, source, errors, options);
-		}
-	}
-
-	callback(errors);
-}
-
-/**
- *  Validates a boolean.
- *
- *  @param rule The validation rule.
- *  @param value The value of the field on the source object.
- *  @param callback The callback function.
- *  @param source The source object being validated.
- *  @param options The validation options.
- *  @param options.messages The validation messages.
- */
-
-function _boolean(rule, value, callback, source, options) {
-	var errors = [];
-	var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
-
-	if (validate) {
-		if (isEmptyValue(value) && !rule.required) {
-			return callback();
-		}
-
-		rules.required(rule, value, source, errors, options);
-
-		if (value !== undefined) {
-			rules.type(rule, value, source, errors, options);
-		}
-	}
-
-	callback(errors);
-}
-
-/**
- *  Validates the regular expression type.
- *
- *  @param rule The validation rule.
- *  @param value The value of the field on the source object.
- *  @param callback The callback function.
- *  @param source The source object being validated.
- *  @param options The validation options.
- *  @param options.messages The validation messages.
- */
-
-function regexp(rule, value, callback, source, options) {
-	var errors = [];
-	var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
-
-	if (validate) {
-		if (isEmptyValue(value) && !rule.required) {
-			return callback();
-		}
-
-		rules.required(rule, value, source, errors, options);
-
-		if (!isEmptyValue(value)) {
-			rules.type(rule, value, source, errors, options);
-		}
-	}
-
-	callback(errors);
-}
-
-/**
- *  Validates a number is an integer.
- *
- *  @param rule The validation rule.
- *  @param value The value of the field on the source object.
- *  @param callback The callback function.
- *  @param source The source object being validated.
- *  @param options The validation options.
- *  @param options.messages The validation messages.
- */
-
-function integer(rule, value, callback, source, options) {
-	var errors = [];
-	var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
-
-	if (validate) {
-		if (isEmptyValue(value) && !rule.required) {
-			return callback();
-		}
-
-		rules.required(rule, value, source, errors, options);
-
-		if (value !== undefined) {
-			rules.type(rule, value, source, errors, options);
-			rules.range(rule, value, source, errors, options);
-		}
-	}
-
-	callback(errors);
-}
-
-/**
- *  Validates a number is a floating point number.
- *
- *  @param rule The validation rule.
- *  @param value The value of the field on the source object.
- *  @param callback The callback function.
- *  @param source The source object being validated.
- *  @param options The validation options.
- *  @param options.messages The validation messages.
- */
-
-function floatFn(rule, value, callback, source, options) {
-	var errors = [];
-	var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
-
-	if (validate) {
-		if (isEmptyValue(value) && !rule.required) {
-			return callback();
-		}
-
-		rules.required(rule, value, source, errors, options);
-
-		if (value !== undefined) {
-			rules.type(rule, value, source, errors, options);
-			rules.range(rule, value, source, errors, options);
-		}
-	}
-
-	callback(errors);
-}
-
-/**
- *  Validates an array.
- *
- *  @param rule The validation rule.
- *  @param value The value of the field on the source object.
- *  @param callback The callback function.
- *  @param source The source object being validated.
- *  @param options The validation options.
- *  @param options.messages The validation messages.
- */
-
-function array(rule, value, callback, source, options) {
-	var errors = [];
-	var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
-
-	if (validate) {
-		if (isEmptyValue(value, 'array') && !rule.required) {
-			return callback();
-		}
-
-		rules.required(rule, value, source, errors, options, 'array');
-
-		if (!isEmptyValue(value, 'array')) {
-			rules.type(rule, value, source, errors, options);
-			rules.range(rule, value, source, errors, options);
-		}
-	}
-
-	callback(errors);
-}
-
-/**
- *  Validates an object.
- *
- *  @param rule The validation rule.
- *  @param value The value of the field on the source object.
- *  @param callback The callback function.
- *  @param source The source object being validated.
- *  @param options The validation options.
- *  @param options.messages The validation messages.
- */
-
-function object(rule, value, callback, source, options) {
-	var errors = [];
-	var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
-
-	if (validate) {
-		if (isEmptyValue(value) && !rule.required) {
-			return callback();
-		}
-
-		rules.required(rule, value, source, errors, options);
-
-		if (value !== undefined) {
-			rules.type(rule, value, source, errors, options);
-		}
-	}
-
-	callback(errors);
-}
-
-var ENUM$1 = 'enum';
-/**
- *  Validates an enumerable list.
- *
- *  @param rule The validation rule.
- *  @param value The value of the field on the source object.
- *  @param callback The callback function.
- *  @param source The source object being validated.
- *  @param options The validation options.
- *  @param options.messages The validation messages.
- */
-
-function enumerable$1(rule, value, callback, source, options) {
-	var errors = [];
-	var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
-
-	if (validate) {
-		if (isEmptyValue(value) && !rule.required) {
-			return callback();
-		}
-
-		rules.required(rule, value, source, errors, options);
-
-		if (value !== undefined) {
-			rules[ENUM$1](rule, value, source, errors, options);
-		}
-	}
-
-	callback(errors);
-}
-
-/**
- *  Validates a regular expression pattern.
- *
- *  Performs validation when a rule only contains
- *  a pattern property but is not declared as a string type.
- *
- *  @param rule The validation rule.
- *  @param value The value of the field on the source object.
- *  @param callback The callback function.
- *  @param source The source object being validated.
- *  @param options The validation options.
- *  @param options.messages The validation messages.
- */
-
-function pattern$2(rule, value, callback, source, options) {
-	var errors = [];
-	var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
-
-	if (validate) {
-		if (isEmptyValue(value, 'string') && !rule.required) {
-			return callback();
-		}
-
-		rules.required(rule, value, source, errors, options);
-
-		if (!isEmptyValue(value, 'string')) {
-			rules.pattern(rule, value, source, errors, options);
-		}
-	}
-
-	callback(errors);
-}
-
-function date(rule, value, callback, source, options) {
-	var errors = [];
-	var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field); 
-
-	if (validate) {
-		if (isEmptyValue(value) && !rule.required) {
-			return callback();
-		}
-
-		rules.required(rule, value, source, errors, options);
-
-		if (!isEmptyValue(value)) {
-			var dateObject;
-
-			if (typeof value === 'number') {
-				dateObject = new Date(value);
-			} else {
-				dateObject = value;
-			}
-
-			rules.type(rule, dateObject, source, errors, options);
-
-			if (dateObject) {
-				rules.range(rule, dateObject.getTime(), source, errors, options);
-			}
-		}
-	}
-
-	callback(errors);
-}
-
-function required$1(rule, value, callback, source, options) {
-	var errors = [];
-	var type = Array.isArray(value) ? 'array' : typeof value;
-	rules.required(rule, value, source, errors, options, type);
-	callback(errors);
-}
-
-function type$1(rule, value, callback, source, options) {
-	var ruleType = rule.type;
-	var errors = [];
-	var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
-
-	if (validate) {
-		if (isEmptyValue(value, ruleType) && !rule.required) {
-			return callback();
-		}
-
-		rules.required(rule, value, source, errors, options, ruleType);
-
-		if (!isEmptyValue(value, ruleType)) {
-			rules.type(rule, value, source, errors, options);
-		}
-	}
-
-	callback(errors);
-}
-
-/**
- *  Performs validation for any type.
- *
- *  @param rule The validation rule.
- *  @param value The value of the field on the source object.
- *  @param callback The callback function.
- *  @param source The source object being validated.
- *  @param options The validation options.
- *  @param options.messages The validation messages.
- */
-
-function any(rule, value, callback, source, options) {
-	var errors = [];
-	var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
-
-	if (validate) {
-		if (isEmptyValue(value) && !rule.required) {
-			return callback();
-		}
-
-		rules.required(rule, value, source, errors, options);
-	}
-
-	callback(errors);
-}
-
-var validators = {
-	string: string,
-	method: method,
-	number: number,
-	"boolean": _boolean,
-	regexp: regexp,
-	integer: integer,
-	"float": floatFn,
-	array: array,
-	object: object,
-	"enum": enumerable$1,
-	pattern: pattern$2,
-	date: date,
-	url: type$1,
-	hex: type$1,
-	email: type$1,
-	required: required$1,
-	any: any
-};
-
-function newMessages() {
-	return {
-		"default": 'Validation error on field %s',
-		required: '%s is required',
-		"enum": '%s must be one of %s',
-		whitespace: '%s cannot be empty',
-		date: {
-			format: '%s date %s is invalid for format %s',
-			parse: '%s date could not be parsed, %s is invalid ',
-			invalid: '%s date %s is invalid'
-		},
-		types: {
-			string: '%s is not a %s',
-			method: '%s is not a %s (function)',
-			array: '%s is not an %s',
-			object: '%s is not an %s',
-			number: '%s is not a %s',
-			date: '%s is not a %s',
-			"boolean": '%s is not a %s',
-			integer: '%s is not an %s',
-			"float": '%s is not a %s',
-			regexp: '%s is not a valid %s',
-			email: '%s is not a valid %s',
-			url: '%s is not a valid %s',
-			hex: '%s is not a valid %s'
-		},
-		string: {
-			len: '%s must be exactly %s characters',
-			min: '%s must be at least %s characters',
-			max: '%s cannot be longer than %s characters',
-			range: '%s must be between %s and %s characters'
-		},
-		number: {
-			len: '%s must equal %s',
-			min: '%s cannot be less than %s',
-			max: '%s cannot be greater than %s',
-			range: '%s must be between %s and %s'
-		},
-		array: {
-			len: '%s must be exactly %s in length',
-			min: '%s cannot be less than %s in length',
-			max: '%s cannot be greater than %s in length',
-			range: '%s must be between %s and %s in length'
-		},
-		pattern: {
-			mismatch: '%s value %s does not match pattern %s'
-		},
-		clone: function clone() {
-			var cloned = JSON.parse(JSON.stringify(this));
-			cloned.clone = this.clone;
-			return cloned;
-		}
-	};
-}
-var messages = newMessages();
-
-/**
- *  Encapsulates a validation schema.
- *
- *  @param descriptor An object declaring validation rules
- *  for this schema.
- */
-
-function Schema(descriptor) {
-	this.rules = null;
-	this._messages = messages;
-	this.define(descriptor);
-}
-
-Schema.prototype = {
-	messages: function messages(_messages) {
-		if (_messages) {
-			this._messages = deepMerge(newMessages(), _messages);
-		}
-
-		return this._messages;
-	},
-	define: function define(rules) {
-		if (!rules) {
-			throw new Error('Cannot configure a schema with no rules');
-		}
-
-		if (typeof rules !== 'object' || Array.isArray(rules)) {
-			throw new Error('Rules must be an object');
-		}
-
-		this.rules = {};
-		var z;
-		var item;
-
-		for (z in rules) {
-			if (rules.hasOwnProperty(z)) {
-				item = rules[z];
-				this.rules[z] = Array.isArray(item) ? item : [item];
-			}
-		}
-	},
-	validate: function validate(source_, o, oc) {
-		var _this = this;
-
-		if (o === void 0) {
-			o = {};
-		}
-
-		if (oc === void 0) {
-			oc = function oc() {};
-		}
-
-		var source = source_;
-		var options = o;
-		var callback = oc;
-
-		if (typeof options === 'function') {
-			callback = options;
-			options = {};
-		}
-
-		if (!this.rules || Object.keys(this.rules).length === 0) {
-			if (callback) {
-				callback();
-			}
-
-			return Promise.resolve();
-		}
-
-		function complete(results) {
-			var i;
-			var errors = [];
-			var fields = {};
-
-			function add(e) {
-				if (Array.isArray(e)) {
-					var _errors;
-
-					errors = (_errors = errors).concat.apply(_errors, e);
-				} else {
-					errors.push(e);
-				}
-			}
-
-			for (i = 0; i < results.length; i++) {
-				add(results[i]);
-			}
-
-			if (!errors.length) {
-				errors = null;
-				fields = null;
-			} else {
-				fields = convertFieldsError(errors);
-			}
-
-			callback(errors, fields);
-		}
-
-		if (options.messages) {
-			var messages$1 = this.messages();
-
-			if (messages$1 === messages) {
-				messages$1 = newMessages();
-			}
-
-			deepMerge(messages$1, options.messages);
-			options.messages = messages$1;
-		} else {
-			options.messages = this.messages();
-		}
-
-		var arr;
-		var value;
-		var series = {};
-		var keys = options.keys || Object.keys(this.rules);
-		keys.forEach(function(z) {
-			arr = _this.rules[z];
-			value = source[z];
-			arr.forEach(function(r) {
-				var rule = r;
-
-				if (typeof rule.transform === 'function') {
-					if (source === source_) {
-						source = _extends({}, source);
-					}
-
-					value = source[z] = rule.transform(value);
-				}
-
-				if (typeof rule === 'function') {
-					rule = {
-						validator: rule
-					};
-				} else {
-					rule = _extends({}, rule);
-				}
-
-				rule.validator = _this.getValidationMethod(rule);
-				rule.field = z;
-				rule.fullField = rule.fullField || z;
-				rule.type = _this.getType(rule);
-
-				if (!rule.validator) {
-					return;
-				}
-
-				series[z] = series[z] || [];
-				series[z].push({
-					rule: rule,
-					value: value,
-					source: source,
-					field: z
-				});
-			});
-		});
-		var errorFields = {};
-		return asyncMap(series, options, function(data, doIt) {
-			var rule = data.rule;
-			var deep = (rule.type === 'object' || rule.type === 'array') && (typeof rule.fields === 'object' || typeof rule.defaultField ===
-				'object');
-			deep = deep && (rule.required || !rule.required && data.value);
-			rule.field = data.field;
-
-			function addFullfield(key, schema) {
-				return _extends({}, schema, {
-					fullField: rule.fullField + "." + key
-				});
-			}
-
-			function cb(e) {
-				if (e === void 0) {
-					e = [];
-				}
-
-				var errors = e;
-
-				if (!Array.isArray(errors)) {
-					errors = [errors];
-				}
-
-				if (!options.suppressWarning && errors.length) {
-					Schema.warning('async-validator:', errors);
-				}
-
-				if (errors.length && rule.message) {
-					errors = [].concat(rule.message);
-				}
-
-				errors = errors.map(complementError(rule));
-
-				if (options.first && errors.length) {
-					errorFields[rule.field] = 1;
-					return doIt(errors);
-				}
-
-				if (!deep) {
-					doIt(errors);
-				} else {
-					// if rule is required but the target object
-					// does not exist fail at the rule level and don't
-					// go deeper
-					if (rule.required && !data.value) {
-						if (rule.message) {
-							errors = [].concat(rule.message).map(complementError(rule));
-						} else if (options.error) {
-							errors = [options.error(rule, format(options.messages.required, rule.field))];
-						} else {
-							errors = [];
-						}
-
-						return doIt(errors);
-					}
-
-					var fieldsSchema = {};
-
-					if (rule.defaultField) {
-						for (var k in data.value) {
-							if (data.value.hasOwnProperty(k)) {
-								fieldsSchema[k] = rule.defaultField;
-							}
-						}
-					}
-
-					fieldsSchema = _extends({}, fieldsSchema, {}, data.rule.fields);
-
-					for (var f in fieldsSchema) {
-						if (fieldsSchema.hasOwnProperty(f)) {
-							var fieldSchema = Array.isArray(fieldsSchema[f]) ? fieldsSchema[f] : [fieldsSchema[f]];
-							fieldsSchema[f] = fieldSchema.map(addFullfield.bind(null, f));
-						}
-					}
-
-					var schema = new Schema(fieldsSchema);
-					schema.messages(options.messages);
-
-					if (data.rule.options) {
-						data.rule.options.messages = options.messages;
-						data.rule.options.error = options.error;
-					}
-
-					schema.validate(data.value, data.rule.options || options, function(errs) {
-						var finalErrors = [];
-
-						if (errors && errors.length) {
-							finalErrors.push.apply(finalErrors, errors);
-						}
-
-						if (errs && errs.length) {
-							finalErrors.push.apply(finalErrors, errs);
-						}
-
-						doIt(finalErrors.length ? finalErrors : null);
-					});
-				}
-			}
-
-			var res;
-
-			if (rule.asyncValidator) {
-				res = rule.asyncValidator(rule, data.value, cb, data.source, options);
-			} else if (rule.validator) {
-				res = rule.validator(rule, data.value, cb, data.source, options);
-
-				if (res === true) {
-					cb();
-				} else if (res === false) {
-					cb(rule.message || rule.field + " fails");
-				} else if (res instanceof Array) {
-					cb(res);
-				} else if (res instanceof Error) {
-					cb(res.message);
-				}
-			}
-
-			if (res && res.then) {
-				res.then(function() {
-					return cb();
-				}, function(e) {
-					return cb(e);
-				});
-			}
-		}, function(results) {
-			complete(results);
-		});
-	},
-	getType: function getType(rule) {
-		if (rule.type === undefined && rule.pattern instanceof RegExp) {
-			rule.type = 'pattern';
-		}
-
-		if (typeof rule.validator !== 'function' && rule.type && !validators.hasOwnProperty(rule.type)) {
-			throw new Error(format('Unknown rule type %s', rule.type));
-		}
-
-		return rule.type || 'string';
-	},
-	getValidationMethod: function getValidationMethod(rule) {
-		if (typeof rule.validator === 'function') {
-			return rule.validator;
-		}
-
-		var keys = Object.keys(rule);
-		var messageIndex = keys.indexOf('message');
-
-		if (messageIndex !== -1) {
-			keys.splice(messageIndex, 1);
-		}
-
-		if (keys.length === 1 && keys[0] === 'required') {
-			return validators.required;
-		}
-
-		return validators[this.getType(rule)] || false;
-	}
-};
-
-Schema.register = function register(type, validator) {
-	if (typeof validator !== 'function') {
-		throw new Error('Cannot register a validator by type, validator is not a function');
-	}
-
-	validators[type] = validator;
-};
-
-Schema.warning = warning;
-Schema.messages = messages;
-
-export default Schema;
-//# sourceMappingURL=index.js.map
diff --git a/uview-ui/libs/util/city.js b/uview-ui/libs/util/city.js
deleted file mode 100644
index 94169eb..0000000
--- a/uview-ui/libs/util/city.js
+++ /dev/null
@@ -1 +0,0 @@
-var cityData=[[{"label":"市辖区","value":"1101"}],[{"label":"市辖区","value":"1201"}],[{"label":"石家庄市","value":"1301"},{"label":"唐山市","value":"1302"},{"label":"秦皇岛市","value":"1303"},{"label":"邯郸市","value":"1304"},{"label":"邢台市","value":"1305"},{"label":"保定市","value":"1306"},{"label":"张家口市","value":"1307"},{"label":"承德市","value":"1308"},{"label":"沧州市","value":"1309"},{"label":"廊坊市","value":"1310"},{"label":"衡水市","value":"1311"}],[{"label":"太原市","value":"1401"},{"label":"大同市","value":"1402"},{"label":"阳泉市","value":"1403"},{"label":"长治市","value":"1404"},{"label":"晋城市","value":"1405"},{"label":"朔州市","value":"1406"},{"label":"晋中市","value":"1407"},{"label":"运城市","value":"1408"},{"label":"忻州市","value":"1409"},{"label":"临汾市","value":"1410"},{"label":"吕梁市","value":"1411"}],[{"label":"呼和浩特市","value":"1501"},{"label":"包头市","value":"1502"},{"label":"乌海市","value":"1503"},{"label":"赤峰市","value":"1504"},{"label":"通辽市","value":"1505"},{"label":"鄂尔多斯市","value":"1506"},{"label":"呼伦贝尔市","value":"1507"},{"label":"巴彦淖尔市","value":"1508"},{"label":"乌兰察布市","value":"1509"},{"label":"兴安盟","value":"1522"},{"label":"锡林郭勒盟","value":"1525"},{"label":"阿拉善盟","value":"1529"}],[{"label":"沈阳市","value":"2101"},{"label":"大连市","value":"2102"},{"label":"鞍山市","value":"2103"},{"label":"抚顺市","value":"2104"},{"label":"本溪市","value":"2105"},{"label":"丹东市","value":"2106"},{"label":"锦州市","value":"2107"},{"label":"营口市","value":"2108"},{"label":"阜新市","value":"2109"},{"label":"辽阳市","value":"2110"},{"label":"盘锦市","value":"2111"},{"label":"铁岭市","value":"2112"},{"label":"朝阳市","value":"2113"},{"label":"葫芦岛市","value":"2114"}],[{"label":"长春市","value":"2201"},{"label":"吉林市","value":"2202"},{"label":"四平市","value":"2203"},{"label":"辽源市","value":"2204"},{"label":"通化市","value":"2205"},{"label":"白山市","value":"2206"},{"label":"松原市","value":"2207"},{"label":"白城市","value":"2208"},{"label":"延边朝鲜族自治州","value":"2224"}],[{"label":"哈尔滨市","value":"2301"},{"label":"齐齐哈尔市","value":"2302"},{"label":"鸡西市","value":"2303"},{"label":"鹤岗市","value":"2304"},{"label":"双鸭山市","value":"2305"},{"label":"大庆市","value":"2306"},{"label":"伊春市","value":"2307"},{"label":"佳木斯市","value":"2308"},{"label":"七台河市","value":"2309"},{"label":"牡丹江市","value":"2310"},{"label":"黑河市","value":"2311"},{"label":"绥化市","value":"2312"},{"label":"大兴安岭地区","value":"2327"}],[{"label":"市辖区","value":"3101"}],[{"label":"南京市","value":"3201"},{"label":"无锡市","value":"3202"},{"label":"徐州市","value":"3203"},{"label":"常州市","value":"3204"},{"label":"苏州市","value":"3205"},{"label":"南通市","value":"3206"},{"label":"连云港市","value":"3207"},{"label":"淮安市","value":"3208"},{"label":"盐城市","value":"3209"},{"label":"扬州市","value":"3210"},{"label":"镇江市","value":"3211"},{"label":"泰州市","value":"3212"},{"label":"宿迁市","value":"3213"}],[{"label":"杭州市","value":"3301"},{"label":"宁波市","value":"3302"},{"label":"温州市","value":"3303"},{"label":"嘉兴市","value":"3304"},{"label":"湖州市","value":"3305"},{"label":"绍兴市","value":"3306"},{"label":"金华市","value":"3307"},{"label":"衢州市","value":"3308"},{"label":"舟山市","value":"3309"},{"label":"台州市","value":"3310"},{"label":"丽水市","value":"3311"}],[{"label":"合肥市","value":"3401"},{"label":"芜湖市","value":"3402"},{"label":"蚌埠市","value":"3403"},{"label":"淮南市","value":"3404"},{"label":"马鞍山市","value":"3405"},{"label":"淮北市","value":"3406"},{"label":"铜陵市","value":"3407"},{"label":"安庆市","value":"3408"},{"label":"黄山市","value":"3410"},{"label":"滁州市","value":"3411"},{"label":"阜阳市","value":"3412"},{"label":"宿州市","value":"3413"},{"label":"六安市","value":"3415"},{"label":"亳州市","value":"3416"},{"label":"池州市","value":"3417"},{"label":"宣城市","value":"3418"}],[{"label":"福州市","value":"3501"},{"label":"厦门市","value":"3502"},{"label":"莆田市","value":"3503"},{"label":"三明市","value":"3504"},{"label":"泉州市","value":"3505"},{"label":"漳州市","value":"3506"},{"label":"南平市","value":"3507"},{"label":"龙岩市","value":"3508"},{"label":"宁德市","value":"3509"}],[{"label":"南昌市","value":"3601"},{"label":"景德镇市","value":"3602"},{"label":"萍乡市","value":"3603"},{"label":"九江市","value":"3604"},{"label":"新余市","value":"3605"},{"label":"鹰潭市","value":"3606"},{"label":"赣州市","value":"3607"},{"label":"吉安市","value":"3608"},{"label":"宜春市","value":"3609"},{"label":"抚州市","value":"3610"},{"label":"上饶市","value":"3611"}],[{"label":"济南市","value":"3701"},{"label":"青岛市","value":"3702"},{"label":"淄博市","value":"3703"},{"label":"枣庄市","value":"3704"},{"label":"东营市","value":"3705"},{"label":"烟台市","value":"3706"},{"label":"潍坊市","value":"3707"},{"label":"济宁市","value":"3708"},{"label":"泰安市","value":"3709"},{"label":"威海市","value":"3710"},{"label":"日照市","value":"3711"},{"label":"莱芜市","value":"3712"},{"label":"临沂市","value":"3713"},{"label":"德州市","value":"3714"},{"label":"聊城市","value":"3715"},{"label":"滨州市","value":"3716"},{"label":"菏泽市","value":"3717"}],[{"label":"郑州市","value":"4101"},{"label":"开封市","value":"4102"},{"label":"洛阳市","value":"4103"},{"label":"平顶山市","value":"4104"},{"label":"安阳市","value":"4105"},{"label":"鹤壁市","value":"4106"},{"label":"新乡市","value":"4107"},{"label":"焦作市","value":"4108"},{"label":"濮阳市","value":"4109"},{"label":"许昌市","value":"4110"},{"label":"漯河市","value":"4111"},{"label":"三门峡市","value":"4112"},{"label":"南阳市","value":"4113"},{"label":"商丘市","value":"4114"},{"label":"信阳市","value":"4115"},{"label":"周口市","value":"4116"},{"label":"驻马店市","value":"4117"},{"label":"省直辖县级行政区划","value":"4190"}],[{"label":"武汉市","value":"4201"},{"label":"黄石市","value":"4202"},{"label":"十堰市","value":"4203"},{"label":"宜昌市","value":"4205"},{"label":"襄阳市","value":"4206"},{"label":"鄂州市","value":"4207"},{"label":"荆门市","value":"4208"},{"label":"孝感市","value":"4209"},{"label":"荆州市","value":"4210"},{"label":"黄冈市","value":"4211"},{"label":"咸宁市","value":"4212"},{"label":"随州市","value":"4213"},{"label":"恩施土家族苗族自治州","value":"4228"},{"label":"省直辖县级行政区划","value":"4290"}],[{"label":"长沙市","value":"4301"},{"label":"株洲市","value":"4302"},{"label":"湘潭市","value":"4303"},{"label":"衡阳市","value":"4304"},{"label":"邵阳市","value":"4305"},{"label":"岳阳市","value":"4306"},{"label":"常德市","value":"4307"},{"label":"张家界市","value":"4308"},{"label":"益阳市","value":"4309"},{"label":"郴州市","value":"4310"},{"label":"永州市","value":"4311"},{"label":"怀化市","value":"4312"},{"label":"娄底市","value":"4313"},{"label":"湘西土家族苗族自治州","value":"4331"}],[{"label":"广州市","value":"4401"},{"label":"韶关市","value":"4402"},{"label":"深圳市","value":"4403"},{"label":"珠海市","value":"4404"},{"label":"汕头市","value":"4405"},{"label":"佛山市","value":"4406"},{"label":"江门市","value":"4407"},{"label":"湛江市","value":"4408"},{"label":"茂名市","value":"4409"},{"label":"肇庆市","value":"4412"},{"label":"惠州市","value":"4413"},{"label":"梅州市","value":"4414"},{"label":"汕尾市","value":"4415"},{"label":"河源市","value":"4416"},{"label":"阳江市","value":"4417"},{"label":"清远市","value":"4418"},{"label":"东莞市","value":"4419"},{"label":"中山市","value":"4420"},{"label":"潮州市","value":"4451"},{"label":"揭阳市","value":"4452"},{"label":"云浮市","value":"4453"}],[{"label":"南宁市","value":"4501"},{"label":"柳州市","value":"4502"},{"label":"桂林市","value":"4503"},{"label":"梧州市","value":"4504"},{"label":"北海市","value":"4505"},{"label":"防城港市","value":"4506"},{"label":"钦州市","value":"4507"},{"label":"贵港市","value":"4508"},{"label":"玉林市","value":"4509"},{"label":"百色市","value":"4510"},{"label":"贺州市","value":"4511"},{"label":"河池市","value":"4512"},{"label":"来宾市","value":"4513"},{"label":"崇左市","value":"4514"}],[{"label":"海口市","value":"4601"},{"label":"三亚市","value":"4602"},{"label":"三沙市","value":"4603"},{"label":"儋州市","value":"4604"},{"label":"省直辖县级行政区划","value":"4690"}],[{"label":"市辖区","value":"5001"},{"label":"县","value":"5002"}],[{"label":"成都市","value":"5101"},{"label":"自贡市","value":"5103"},{"label":"攀枝花市","value":"5104"},{"label":"泸州市","value":"5105"},{"label":"德阳市","value":"5106"},{"label":"绵阳市","value":"5107"},{"label":"广元市","value":"5108"},{"label":"遂宁市","value":"5109"},{"label":"内江市","value":"5110"},{"label":"乐山市","value":"5111"},{"label":"南充市","value":"5113"},{"label":"眉山市","value":"5114"},{"label":"宜宾市","value":"5115"},{"label":"广安市","value":"5116"},{"label":"达州市","value":"5117"},{"label":"雅安市","value":"5118"},{"label":"巴中市","value":"5119"},{"label":"资阳市","value":"5120"},{"label":"阿坝藏族羌族自治州","value":"5132"},{"label":"甘孜藏族自治州","value":"5133"},{"label":"凉山彝族自治州","value":"5134"}],[{"label":"贵阳市","value":"5201"},{"label":"六盘水市","value":"5202"},{"label":"遵义市","value":"5203"},{"label":"安顺市","value":"5204"},{"label":"毕节市","value":"5205"},{"label":"铜仁市","value":"5206"},{"label":"黔西南布依族苗族自治州","value":"5223"},{"label":"黔东南苗族侗族自治州","value":"5226"},{"label":"黔南布依族苗族自治州","value":"5227"}],[{"label":"昆明市","value":"5301"},{"label":"曲靖市","value":"5303"},{"label":"玉溪市","value":"5304"},{"label":"保山市","value":"5305"},{"label":"昭通市","value":"5306"},{"label":"丽江市","value":"5307"},{"label":"普洱市","value":"5308"},{"label":"临沧市","value":"5309"},{"label":"楚雄彝族自治州","value":"5323"},{"label":"红河哈尼族彝族自治州","value":"5325"},{"label":"文山壮族苗族自治州","value":"5326"},{"label":"西双版纳傣族自治州","value":"5328"},{"label":"大理白族自治州","value":"5329"},{"label":"德宏傣族景颇族自治州","value":"5331"},{"label":"怒江傈僳族自治州","value":"5333"},{"label":"迪庆藏族自治州","value":"5334"}],[{"label":"拉萨市","value":"5401"},{"label":"日喀则市","value":"5402"},{"label":"昌都市","value":"5403"},{"label":"林芝市","value":"5404"},{"label":"山南市","value":"5405"},{"label":"那曲地区","value":"5424"},{"label":"阿里地区","value":"5425"}],[{"label":"西安市","value":"6101"},{"label":"铜川市","value":"6102"},{"label":"宝鸡市","value":"6103"},{"label":"咸阳市","value":"6104"},{"label":"渭南市","value":"6105"},{"label":"延安市","value":"6106"},{"label":"汉中市","value":"6107"},{"label":"榆林市","value":"6108"},{"label":"安康市","value":"6109"},{"label":"商洛市","value":"6110"}],[{"label":"兰州市","value":"6201"},{"label":"嘉峪关市","value":"6202"},{"label":"金昌市","value":"6203"},{"label":"白银市","value":"6204"},{"label":"天水市","value":"6205"},{"label":"武威市","value":"6206"},{"label":"张掖市","value":"6207"},{"label":"平凉市","value":"6208"},{"label":"酒泉市","value":"6209"},{"label":"庆阳市","value":"6210"},{"label":"定西市","value":"6211"},{"label":"陇南市","value":"6212"},{"label":"临夏回族自治州","value":"6229"},{"label":"甘南藏族自治州","value":"6230"}],[{"label":"西宁市","value":"6301"},{"label":"海东市","value":"6302"},{"label":"海北藏族自治州","value":"6322"},{"label":"黄南藏族自治州","value":"6323"},{"label":"海南藏族自治州","value":"6325"},{"label":"果洛藏族自治州","value":"6326"},{"label":"玉树藏族自治州","value":"6327"},{"label":"海西蒙古族藏族自治州","value":"6328"}],[{"label":"银川市","value":"6401"},{"label":"石嘴山市","value":"6402"},{"label":"吴忠市","value":"6403"},{"label":"固原市","value":"6404"},{"label":"中卫市","value":"6405"}],[{"label":"乌鲁木齐市","value":"6501"},{"label":"克拉玛依市","value":"6502"},{"label":"吐鲁番市","value":"6504"},{"label":"哈密市","value":"6505"},{"label":"昌吉回族自治州","value":"6523"},{"label":"博尔塔拉蒙古自治州","value":"6527"},{"label":"巴音郭楞蒙古自治州","value":"6528"},{"label":"阿克苏地区","value":"6529"},{"label":"克孜勒苏柯尔克孜自治州","value":"6530"},{"label":"喀什地区","value":"6531"},{"label":"和田地区","value":"6532"},{"label":"伊犁哈萨克自治州","value":"6540"},{"label":"塔城地区","value":"6542"},{"label":"阿勒泰地区","value":"6543"},{"label":"自治区直辖县级行政区划","value":"6590"}],[{"label":"台北","value":"6601"},{"label":"高雄","value":"6602"},{"label":"基隆","value":"6603"},{"label":"台中","value":"6604"},{"label":"台南","value":"6605"},{"label":"新竹","value":"6606"},{"label":"嘉义","value":"6607"},{"label":"宜兰","value":"6608"},{"label":"桃园","value":"6609"},{"label":"苗栗","value":"6610"},{"label":"彰化","value":"6611"},{"label":"南投","value":"6612"},{"label":"云林","value":"6613"},{"label":"屏东","value":"6614"},{"label":"台东","value":"6615"},{"label":"花莲","value":"6616"},{"label":"澎湖","value":"6617"}],[{"label":"香港岛","value":"6701"},{"label":"九龙","value":"6702"},{"label":"新界","value":"6703"}],[{"label":"澳门半岛","value":"6801"},{"label":"氹仔岛","value":"6802"},{"label":"路环岛","value":"6803"},{"label":"路氹城","value":"6804"}]];export default cityData;
\ No newline at end of file
diff --git a/uview-ui/libs/util/emitter.js b/uview-ui/libs/util/emitter.js
deleted file mode 100644
index 228016e..0000000
--- a/uview-ui/libs/util/emitter.js
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * 递归使用 call 方式this指向
- * @param componentName // 需要找的组件的名称
- * @param eventName // 事件名称
- * @param params // 需要传递的参数
- */
-function broadcast(componentName, eventName, params) {
-    // 循环子节点找到名称一样的子节点 否则 递归 当前子节点
-    this.$children.map(child=>{
-        if (componentName===child.$options.name) {
-            child.$emit.apply(child,[eventName].concat(params))
-        }else {
-            broadcast.apply(child,[componentName,eventName].concat(params))
-        }
-    })
-}
-export default {
-    methods: {
-        /**
-         * 派发 (向上查找) (一个)
-         * @param componentName // 需要找的组件的名称
-         * @param eventName // 事件名称
-         * @param params // 需要传递的参数
-         */
-        dispatch(componentName, eventName, params) {
-            let parent = this.$parent || this.$root;//$parent 找到最近的父节点 $root 根节点
-            let name = parent.$options.name; // 获取当前组件实例的name
-            // 如果当前有节点 && 当前没名称 且 当前名称等于需要传进来的名称的时候就去查找当前的节点
-            // 循环出当前名称的一样的组件实例
-            while (parent && (!name||name!==componentName)) {
-                parent = parent.$parent;
-                if (parent) {
-                    name = parent.$options.name;
-                }
-            }
-            // 有节点表示当前找到了name一样的实例
-            if (parent) {
-                parent.$emit.apply(parent,[eventName].concat(params))
-            }
-        },
-        /**
-         * 广播 (向下查找) (广播多个)
-         * @param componentName // 需要找的组件的名称
-         * @param eventName // 事件名称
-         * @param params // 需要传递的参数
-         */
-        broadcast(componentName, eventName, params) {
-            broadcast.call(this,componentName, eventName, params)
-        }
-    }
-}
diff --git a/uview-ui/libs/util/province.js b/uview-ui/libs/util/province.js
deleted file mode 100644
index 436b190..0000000
--- a/uview-ui/libs/util/province.js
+++ /dev/null
@@ -1 +0,0 @@
-var provinceData=[{"label":"北京市","value":"11"},{"label":"天津市","value":"12"},{"label":"河北省","value":"13"},{"label":"山西省","value":"14"},{"label":"内蒙古自治区","value":"15"},{"label":"辽宁省","value":"21"},{"label":"吉林省","value":"22"},{"label":"黑龙江省","value":"23"},{"label":"上海市","value":"31"},{"label":"江苏省","value":"32"},{"label":"浙江省","value":"33"},{"label":"安徽省","value":"34"},{"label":"福建省","value":"35"},{"label":"江西省","value":"36"},{"label":"山东省","value":"37"},{"label":"河南省","value":"41"},{"label":"湖北省","value":"42"},{"label":"湖南省","value":"43"},{"label":"广东省","value":"44"},{"label":"广西壮族自治区","value":"45"},{"label":"海南省","value":"46"},{"label":"重庆市","value":"50"},{"label":"四川省","value":"51"},{"label":"贵州省","value":"52"},{"label":"云南省","value":"53"},{"label":"西藏自治区","value":"54"},{"label":"陕西省","value":"61"},{"label":"甘肃省","value":"62"},{"label":"青海省","value":"63"},{"label":"宁夏回族自治区","value":"64"},{"label":"新疆维吾尔自治区","value":"65"},{"label":"台湾","value":"66"},{"label":"香港","value":"67"},{"label":"澳门","value":"68"}];export default provinceData;
\ No newline at end of file
diff --git a/uview-ui/package.json b/uview-ui/package.json
deleted file mode 100644
index 431d585..0000000
--- a/uview-ui/package.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
-	"name": "uview-ui",
-	"version": "1.8.4",
-	"description": "uView UI,是uni-app生态优秀的UI框架,全面的组件和便捷的工具会让您信手拈来,如鱼得水",
-	"main": "index.js",
-	"keywords": [
-		"uview",
-		"uView",
-		"uni-app",
-		"uni-app ui",
-		"uniapp",
-		"uviewui",
-		"uview ui",
-		"uviewUI",
-		"uViewui",
-		"uViewUI",
-		"uView UI",
-		"uni ui",
-		"uni UI",
-		"uniapp ui",
-		"ui",
-		"UI框架",
-		"uniapp ui框架",
-		"uniapp UI"
-	],
-	"scripts": {
-		"test": "echo \"Error: no test specified\" && exit 1"
-	},
-	"repository": {
-		"type": "git",
-		"url": ""
-	},
-	"devDependencies": {
-		"node-sass": "^4.14.0",
-		"sass-loader": "^8.0.2"
-	},
-	"author": "uView",
-	"license": "MIT"
-}
diff --git a/uview-ui/theme.scss b/uview-ui/theme.scss
deleted file mode 100644
index f3bb36d..0000000
--- a/uview-ui/theme.scss
+++ /dev/null
@@ -1,38 +0,0 @@
-// 此文件为uView的主题变量,这些变量目前只能通过uni.scss引入才有效,另外由于
-// uni.scss中引入的样式会同时混入到全局样式文件和单独每一个页面的样式中,造成微信程序包太大,
-// 故uni.scss只建议放scss变量名相关样式,其他的样式可以通过main.js或者App.vue引入
-
-$u-main-color: #303133;
-$u-content-color: #606266;
-$u-tips-color: #909399;
-$u-light-color: #c0c4cc;
-$u-border-color: #e4e7ed;
-$u-bg-color: #f3f4f6;
-
-$u-type-primary: #2979ff;
-$u-type-primary-light: #ecf5ff;
-$u-type-primary-disabled: #a0cfff;
-$u-type-primary-dark: #2b85e4;
-
-$u-type-warning: #ff9900;
-$u-type-warning-disabled: #fcbd71;
-$u-type-warning-dark: #f29100;
-$u-type-warning-light: #fdf6ec;
-
-$u-type-success: #19be6b;
-$u-type-success-disabled: #71d5a1;
-$u-type-success-dark: #18b566;
-$u-type-success-light: #dbf1e1;
-
-$u-type-error: #fa3534;
-$u-type-error-disabled: #fab6b6;
-$u-type-error-dark: #dd6161;
-$u-type-error-light: #fef0f0;
-
-$u-type-info: #909399;
-$u-type-info-disabled: #c8c9cc;
-$u-type-info-dark: #82848a;
-$u-type-info-light: #f4f4f5;
-
-$u-form-item-height: 70rpx;
-$u-form-item-border-color: #dcdfe6;
diff --git a/vue.config.js b/vue.config.js
deleted file mode 100644
index 6ce6dd9..0000000
--- a/vue.config.js
+++ /dev/null
@@ -1,27 +0,0 @@
-module.exports = {
-	// 配置路径别名
-	configureWebpack: {
-		devServer: {
-			disableHostCheck: true
-		}
-	},
-	// devServer: {
-	//     port: 1888,
-	//     // disableHostCheck: true,
-	//     proxy: {
-	//       '/api': {
-	//         //本地服务接口地址
-	//         // target: 'http://localhost',
-	        // target: 'http://192.168.0.114:81',//钟W
-	//         target: 'http://192.168.0.109:81',//tangW
-	//         // target: 'http://192.168.0.104:80',//唐N
-	//         //远程演示服务地址,可用于直接启动项目
-	//         // target: 'https://saber.bladex.vip/api',
-	//         ws: true,
-	//         pathRewrite: {
-	//           '^/api': '/'
-	//         }
-	//       }
-	//     }
-	//   }
-}
diff --git a/xcxMapSecurityPosition/css/body.css b/xcxMapSecurityPosition/css/body.css
deleted file mode 100644
index 9d50b93..0000000
--- a/xcxMapSecurityPosition/css/body.css
+++ /dev/null
@@ -1,263 +0,0 @@
-page {
-	width: 100%;
-	height: 100%;
-	background-color: rgb(138, 138, 138, 0.1);
-}
-
-body {
-	padding: 0;
-	margin: 0;
-}
-
-html,
-body,
-#mapVue {
-	width: 100%;
-	height: 100%;
-}
-
-#map {
-	width: 100%;
-	height: 100%;
-	z-index: 1;
-}
-
-#mapVue {
-	overflow: hidden;
-	/* border: solid 1px springgreen; */
-}
-
-#salffPopup {
-	width: 100%;
-	height: 3rem;
-	background-color: #fff;
-	position: fixed;
-	bottom: 0;
-	left: 0;
-	z-index: 10;
-	border-radius: 1rem 1rem 0 0;
-}
-
-/* .el-drawer__open{
-	height: 5rem !important;
-} */
-
-.oncessalfe {
-	margin: 1rem;
-	font-size: 0.8rem;
-	font-weight: 500;
-}
-
-.in-oncessalfe {
-	font-size: 1rem;
-	font-weight: 500;
-	margin-top: 0.4rem;
-}
-
-.dingwei {
-	position: fixed;
-	width: 38px;
-	height: 38px;
-	bottom: 31vh;
-	right: 0;
-	z-index: 10;
-	background-color: #fff;
-	border-radius: 80%;
-	opacity: 0.8;
-	/* border: 1px solid gray; */
-	display: flex;
-	align-items: center;
-	justify-content: center;
-}
-
-.shuaxin {
-	position: fixed;
-	width: 38px;
-	height: 38px;
-	bottom: 11.5rem;
-	right: 0;
-	z-index: 10;
-	background-color: #fff;
-	border-radius: 80%;
-	opacity: 0.8;
-	/* border: 1px solid gray; */
-	display: flex;
-	align-items: center;
-	justify-content: center;
-}
-
-.baozu {
-	position: fixed;
-	width: 38px;
-	height: 100px;
-	top: 8.5rem;
-	right: 5px;
-	z-index: 10;
-	background-color: #fff;
-	border-radius: 5rem;
-	/* opacity: 0.8; */
-	/* border: 1px solid gray; */
-	display: flex;
-	align-items: center;
-	justify-content: space-evenly;
-	flex-direction: column;
-}
-
-.baozu .bz-once {
-	width: 38px;
-	height: 40px;
-	font-size: 14px;
-	display: flex;
-	align-items: center;
-	justify-content: center;
-	flex-direction: column;
-	/* border: 1px solid gray; */
-}
-
-#Umain {
-	position: fixed;
-	width: 100%;
-	/* margin-left: 2.5%; */
-	height: 7.5rem;
-	top: 0;
-	z-index: 10;
-	/* border: #0000FF 1px solid; */
-	background-color: #fff;
-	border-radius: 0 0 1rem 1rem;
-}
-
-#Umain .Um-m {
-	width: 100%;
-	height: 33%;
-	display: flex;
-	align-items: center;
-	padding-left: 2rem;
-}
-
-#Umain .Um-m:last-child .um-m-t {
-	/* border: 1px solid #169BD5; */
-	padding: 0 0.5rem 0 0.5rem;
-	border-radius: 0.5rem;
-	box-shadow: 1px 1px 1px 0px #169BD5;
-}
-
-#Umain .Um-m img {
-	margin-right: 0.5rem;
-}
-
-#heads {
-	position: absolute;
-	top: 76%;
-	left: 1rem;
-}
-
-#Umain .Um-m .um-m-t {
-	font-size: 14px;
-	font-weight: 300;
-}
-
-#Dmain {
-	position: fixed;
-	width: 95%;
-	margin-left: 2.5%;
-	height: 7.5rem;
-	bottom: 0;
-	z-index: 10;
-	/* border: #0000FF 1px solid; */
-	background-color: #fff;
-	border-radius: 1rem;
-}
-
-#title {
-	/* border: #0000FF 1px solid; */
-	display: flex;
-	align-items: center;
-	height: 3.5rem;
-}
-
-.t-fz,
-.t-mi {
-	margin-left: 1rem;
-}
-
-#bot {
-	/* border: #0000FF 1px solid; */
-	height: 4rem;
-	display: flex;
-	align-items: center;
-	justify-content: center;
-	width: 100%;
-}
-
-#bot button {
-	width: 80%;
-	height: 2.8rem;
-	border: none;
-	border-radius: 1rem;
-	background-color: #169BD5;
-	color: #fff;
-}
-
-#bot button:hover {
-	background-color: #1abbff;
-}
-
-#loding {
-	width: 100%;
-	height: 100%;
-	position: fixed;
-	top: 0;
-	left: 0;
-	background-color: rgba(125, 125, 125, 0.5);
-	z-index: 11;
-}
-
-#loding .titles {
-	width: 10rem;
-	height: 4rem;
-	background-color: rgba(0, 0, 0, 0.5);
-	border-radius: 1rem;
-	position: absolute;
-	left: calc(50% - 5rem);
-	top: calc(50% - 2.5rem);
-	/* line-height: 1.5rem; */
-	/* padding: 0 0 0 1rem; */
-	color: #fff;
-	display: flex;
-	align-items: center;
-	justify-content: space-around;
-	flex-direction: column;
-}
-
-#SubmitDown {
-	width: 100%;
-	height: 100%;
-	position: fixed;
-	top: 0;
-	left: 0;
-	background-color: #fff;
-	z-index: 12;
-}
-
-#SubmitDown .S-use {
-	width: 100%;
-	height: auto;
-	/* border: 1px solid #0000FF; */
-	box-sizing: border-box;
-	padding: 2rem 0.5rem 0 0.5rem;
-}
-
-#SubmitDown textarea {
-	width: 100%;
-}
-
-.ups {
-	padding-top: 0.5rem !important;
-}
-
-#S-tijiao {
-	width: 50%;
-	position: relative;
-	top: 2rem;
-	left: 25%;
-}
diff --git a/xcxMapSecurityPosition/css/elementUI.css b/xcxMapSecurityPosition/css/elementUI.css
deleted file mode 100644
index f3a3ab7..0000000
--- a/xcxMapSecurityPosition/css/elementUI.css
+++ /dev/null
@@ -1 +0,0 @@
-@charset "UTF-8";.el-pagination--small .arrow.disabled,.el-table .hidden-columns,.el-table td.is-hidden>*,.el-table th.is-hidden>*,.el-table--hidden{visibility:hidden}.el-input__suffix,.el-tree.is-dragging .el-tree-node__content *{pointer-events:none}.el-dropdown .el-dropdown-selfdefine:focus:active,.el-dropdown .el-dropdown-selfdefine:focus:not(.focusing),.el-message__closeBtn:focus,.el-message__content:focus,.el-popover:focus,.el-popover:focus:active,.el-popover__reference:focus:hover,.el-popover__reference:focus:not(.focusing),.el-rate:active,.el-rate:focus,.el-tooltip:focus:hover,.el-tooltip:focus:not(.focusing),.el-upload-list__item.is-success:active,.el-upload-list__item.is-success:not(.focusing):focus{outline-width:0}@font-face{font-family:element-icons;src:url(fonts/element-icons.woff) format("woff"),url(fonts/element-icons.ttf) format("truetype");font-weight:400;font-display:"auto";font-style:normal}[class*=" el-icon-"],[class^=el-icon-]{font-family:element-icons!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;vertical-align:baseline;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-icon-ice-cream-round:before{content:"\e6a0"}.el-icon-ice-cream-square:before{content:"\e6a3"}.el-icon-lollipop:before{content:"\e6a4"}.el-icon-potato-strips:before{content:"\e6a5"}.el-icon-milk-tea:before{content:"\e6a6"}.el-icon-ice-drink:before{content:"\e6a7"}.el-icon-ice-tea:before{content:"\e6a9"}.el-icon-coffee:before{content:"\e6aa"}.el-icon-orange:before{content:"\e6ab"}.el-icon-pear:before{content:"\e6ac"}.el-icon-apple:before{content:"\e6ad"}.el-icon-cherry:before{content:"\e6ae"}.el-icon-watermelon:before{content:"\e6af"}.el-icon-grape:before{content:"\e6b0"}.el-icon-refrigerator:before{content:"\e6b1"}.el-icon-goblet-square-full:before{content:"\e6b2"}.el-icon-goblet-square:before{content:"\e6b3"}.el-icon-goblet-full:before{content:"\e6b4"}.el-icon-goblet:before{content:"\e6b5"}.el-icon-cold-drink:before{content:"\e6b6"}.el-icon-coffee-cup:before{content:"\e6b8"}.el-icon-water-cup:before{content:"\e6b9"}.el-icon-hot-water:before{content:"\e6ba"}.el-icon-ice-cream:before{content:"\e6bb"}.el-icon-dessert:before{content:"\e6bc"}.el-icon-sugar:before{content:"\e6bd"}.el-icon-tableware:before{content:"\e6be"}.el-icon-burger:before{content:"\e6bf"}.el-icon-knife-fork:before{content:"\e6c1"}.el-icon-fork-spoon:before{content:"\e6c2"}.el-icon-chicken:before{content:"\e6c3"}.el-icon-food:before{content:"\e6c4"}.el-icon-dish-1:before{content:"\e6c5"}.el-icon-dish:before{content:"\e6c6"}.el-icon-moon-night:before{content:"\e6ee"}.el-icon-moon:before{content:"\e6f0"}.el-icon-cloudy-and-sunny:before{content:"\e6f1"}.el-icon-partly-cloudy:before{content:"\e6f2"}.el-icon-cloudy:before{content:"\e6f3"}.el-icon-sunny:before{content:"\e6f6"}.el-icon-sunset:before{content:"\e6f7"}.el-icon-sunrise-1:before{content:"\e6f8"}.el-icon-sunrise:before{content:"\e6f9"}.el-icon-heavy-rain:before{content:"\e6fa"}.el-icon-lightning:before{content:"\e6fb"}.el-icon-light-rain:before{content:"\e6fc"}.el-icon-wind-power:before{content:"\e6fd"}.el-icon-baseball:before{content:"\e712"}.el-icon-soccer:before{content:"\e713"}.el-icon-football:before{content:"\e715"}.el-icon-basketball:before{content:"\e716"}.el-icon-ship:before{content:"\e73f"}.el-icon-truck:before{content:"\e740"}.el-icon-bicycle:before{content:"\e741"}.el-icon-mobile-phone:before{content:"\e6d3"}.el-icon-service:before{content:"\e6d4"}.el-icon-key:before{content:"\e6e2"}.el-icon-unlock:before{content:"\e6e4"}.el-icon-lock:before{content:"\e6e5"}.el-icon-watch:before{content:"\e6fe"}.el-icon-watch-1:before{content:"\e6ff"}.el-icon-timer:before{content:"\e702"}.el-icon-alarm-clock:before{content:"\e703"}.el-icon-map-location:before{content:"\e704"}.el-icon-delete-location:before{content:"\e705"}.el-icon-add-location:before{content:"\e706"}.el-icon-location-information:before{content:"\e707"}.el-icon-location-outline:before{content:"\e708"}.el-icon-location:before{content:"\e79e"}.el-icon-place:before{content:"\e709"}.el-icon-discover:before{content:"\e70a"}.el-icon-first-aid-kit:before{content:"\e70b"}.el-icon-trophy-1:before{content:"\e70c"}.el-icon-trophy:before{content:"\e70d"}.el-icon-medal:before{content:"\e70e"}.el-icon-medal-1:before{content:"\e70f"}.el-icon-stopwatch:before{content:"\e710"}.el-icon-mic:before{content:"\e711"}.el-icon-copy-document:before{content:"\e718"}.el-icon-full-screen:before{content:"\e719"}.el-icon-switch-button:before{content:"\e71b"}.el-icon-aim:before{content:"\e71c"}.el-icon-crop:before{content:"\e71d"}.el-icon-odometer:before{content:"\e71e"}.el-icon-time:before{content:"\e71f"}.el-icon-bangzhu:before{content:"\e724"}.el-icon-close-notification:before{content:"\e726"}.el-icon-microphone:before{content:"\e727"}.el-icon-turn-off-microphone:before{content:"\e728"}.el-icon-position:before{content:"\e729"}.el-icon-postcard:before{content:"\e72a"}.el-icon-message:before{content:"\e72b"}.el-icon-chat-line-square:before{content:"\e72d"}.el-icon-chat-dot-square:before{content:"\e72e"}.el-icon-chat-dot-round:before{content:"\e72f"}.el-icon-chat-square:before{content:"\e730"}.el-icon-chat-line-round:before{content:"\e731"}.el-icon-chat-round:before{content:"\e732"}.el-icon-set-up:before{content:"\e733"}.el-icon-turn-off:before{content:"\e734"}.el-icon-open:before{content:"\e735"}.el-icon-connection:before{content:"\e736"}.el-icon-link:before{content:"\e737"}.el-icon-cpu:before{content:"\e738"}.el-icon-thumb:before{content:"\e739"}.el-icon-female:before{content:"\e73a"}.el-icon-male:before{content:"\e73b"}.el-icon-guide:before{content:"\e73c"}.el-icon-news:before{content:"\e73e"}.el-icon-price-tag:before{content:"\e744"}.el-icon-discount:before{content:"\e745"}.el-icon-wallet:before{content:"\e747"}.el-icon-coin:before{content:"\e748"}.el-icon-money:before{content:"\e749"}.el-icon-bank-card:before{content:"\e74a"}.el-icon-box:before{content:"\e74b"}.el-icon-present:before{content:"\e74c"}.el-icon-sell:before{content:"\e6d5"}.el-icon-sold-out:before{content:"\e6d6"}.el-icon-shopping-bag-2:before{content:"\e74d"}.el-icon-shopping-bag-1:before{content:"\e74e"}.el-icon-shopping-cart-2:before{content:"\e74f"}.el-icon-shopping-cart-1:before{content:"\e750"}.el-icon-shopping-cart-full:before{content:"\e751"}.el-icon-smoking:before{content:"\e752"}.el-icon-no-smoking:before{content:"\e753"}.el-icon-house:before{content:"\e754"}.el-icon-table-lamp:before{content:"\e755"}.el-icon-school:before{content:"\e756"}.el-icon-office-building:before{content:"\e757"}.el-icon-toilet-paper:before{content:"\e758"}.el-icon-notebook-2:before{content:"\e759"}.el-icon-notebook-1:before{content:"\e75a"}.el-icon-files:before{content:"\e75b"}.el-icon-collection:before{content:"\e75c"}.el-icon-receiving:before{content:"\e75d"}.el-icon-suitcase-1:before{content:"\e760"}.el-icon-suitcase:before{content:"\e761"}.el-icon-film:before{content:"\e763"}.el-icon-collection-tag:before{content:"\e765"}.el-icon-data-analysis:before{content:"\e766"}.el-icon-pie-chart:before{content:"\e767"}.el-icon-data-board:before{content:"\e768"}.el-icon-data-line:before{content:"\e76d"}.el-icon-reading:before{content:"\e769"}.el-icon-magic-stick:before{content:"\e76a"}.el-icon-coordinate:before{content:"\e76b"}.el-icon-mouse:before{content:"\e76c"}.el-icon-brush:before{content:"\e76e"}.el-icon-headset:before{content:"\e76f"}.el-icon-umbrella:before{content:"\e770"}.el-icon-scissors:before{content:"\e771"}.el-icon-mobile:before{content:"\e773"}.el-icon-attract:before{content:"\e774"}.el-icon-monitor:before{content:"\e775"}.el-icon-search:before{content:"\e778"}.el-icon-takeaway-box:before{content:"\e77a"}.el-icon-paperclip:before{content:"\e77d"}.el-icon-printer:before{content:"\e77e"}.el-icon-document-add:before{content:"\e782"}.el-icon-document:before{content:"\e785"}.el-icon-document-checked:before{content:"\e786"}.el-icon-document-copy:before{content:"\e787"}.el-icon-document-delete:before{content:"\e788"}.el-icon-document-remove:before{content:"\e789"}.el-icon-tickets:before{content:"\e78b"}.el-icon-folder-checked:before{content:"\e77f"}.el-icon-folder-delete:before{content:"\e780"}.el-icon-folder-remove:before{content:"\e781"}.el-icon-folder-add:before{content:"\e783"}.el-icon-folder-opened:before{content:"\e784"}.el-icon-folder:before{content:"\e78a"}.el-icon-edit-outline:before{content:"\e764"}.el-icon-edit:before{content:"\e78c"}.el-icon-date:before{content:"\e78e"}.el-icon-c-scale-to-original:before{content:"\e7c6"}.el-icon-view:before{content:"\e6ce"}.el-icon-loading:before{content:"\e6cf"}.el-icon-rank:before{content:"\e6d1"}.el-icon-sort-down:before{content:"\e7c4"}.el-icon-sort-up:before{content:"\e7c5"}.el-icon-sort:before{content:"\e6d2"}.el-icon-finished:before{content:"\e6cd"}.el-icon-refresh-left:before{content:"\e6c7"}.el-icon-refresh-right:before{content:"\e6c8"}.el-icon-refresh:before{content:"\e6d0"}.el-icon-video-play:before{content:"\e7c0"}.el-icon-video-pause:before{content:"\e7c1"}.el-icon-d-arrow-right:before{content:"\e6dc"}.el-icon-d-arrow-left:before{content:"\e6dd"}.el-icon-arrow-up:before{content:"\e6e1"}.el-icon-arrow-down:before{content:"\e6df"}.el-icon-arrow-right:before{content:"\e6e0"}.el-icon-arrow-left:before{content:"\e6de"}.el-icon-top-right:before{content:"\e6e7"}.el-icon-top-left:before{content:"\e6e8"}.el-icon-top:before{content:"\e6e6"}.el-icon-bottom:before{content:"\e6eb"}.el-icon-right:before{content:"\e6e9"}.el-icon-back:before{content:"\e6ea"}.el-icon-bottom-right:before{content:"\e6ec"}.el-icon-bottom-left:before{content:"\e6ed"}.el-icon-caret-top:before{content:"\e78f"}.el-icon-caret-bottom:before{content:"\e790"}.el-icon-caret-right:before{content:"\e791"}.el-icon-caret-left:before{content:"\e792"}.el-icon-d-caret:before{content:"\e79a"}.el-icon-share:before{content:"\e793"}.el-icon-menu:before{content:"\e798"}.el-icon-s-grid:before{content:"\e7a6"}.el-icon-s-check:before{content:"\e7a7"}.el-icon-s-data:before{content:"\e7a8"}.el-icon-s-opportunity:before{content:"\e7aa"}.el-icon-s-custom:before{content:"\e7ab"}.el-icon-s-claim:before{content:"\e7ad"}.el-icon-s-finance:before{content:"\e7ae"}.el-icon-s-comment:before{content:"\e7af"}.el-icon-s-flag:before{content:"\e7b0"}.el-icon-s-marketing:before{content:"\e7b1"}.el-icon-s-shop:before{content:"\e7b4"}.el-icon-s-open:before{content:"\e7b5"}.el-icon-s-management:before{content:"\e7b6"}.el-icon-s-ticket:before{content:"\e7b7"}.el-icon-s-release:before{content:"\e7b8"}.el-icon-s-home:before{content:"\e7b9"}.el-icon-s-promotion:before{content:"\e7ba"}.el-icon-s-operation:before{content:"\e7bb"}.el-icon-s-unfold:before{content:"\e7bc"}.el-icon-s-fold:before{content:"\e7a9"}.el-icon-s-platform:before{content:"\e7bd"}.el-icon-s-order:before{content:"\e7be"}.el-icon-s-cooperation:before{content:"\e7bf"}.el-icon-bell:before{content:"\e725"}.el-icon-message-solid:before{content:"\e799"}.el-icon-video-camera:before{content:"\e772"}.el-icon-video-camera-solid:before{content:"\e796"}.el-icon-camera:before{content:"\e779"}.el-icon-camera-solid:before{content:"\e79b"}.el-icon-download:before{content:"\e77c"}.el-icon-upload2:before{content:"\e77b"}.el-icon-upload:before{content:"\e7c3"}.el-icon-picture-outline-round:before{content:"\e75f"}.el-icon-picture-outline:before{content:"\e75e"}.el-icon-picture:before{content:"\e79f"}.el-icon-close:before{content:"\e6db"}.el-icon-check:before{content:"\e6da"}.el-icon-plus:before{content:"\e6d9"}.el-icon-minus:before{content:"\e6d8"}.el-icon-help:before{content:"\e73d"}.el-icon-s-help:before{content:"\e7b3"}.el-icon-circle-close:before{content:"\e78d"}.el-icon-circle-check:before{content:"\e720"}.el-icon-circle-plus-outline:before{content:"\e723"}.el-icon-remove-outline:before{content:"\e722"}.el-icon-zoom-out:before{content:"\e776"}.el-icon-zoom-in:before{content:"\e777"}.el-icon-error:before{content:"\e79d"}.el-icon-success:before{content:"\e79c"}.el-icon-circle-plus:before{content:"\e7a0"}.el-icon-remove:before{content:"\e7a2"}.el-icon-info:before{content:"\e7a1"}.el-icon-question:before{content:"\e7a4"}.el-icon-warning-outline:before{content:"\e6c9"}.el-icon-warning:before{content:"\e7a3"}.el-icon-goods:before{content:"\e7c2"}.el-icon-s-goods:before{content:"\e7b2"}.el-icon-star-off:before{content:"\e717"}.el-icon-star-on:before{content:"\e797"}.el-icon-more-outline:before{content:"\e6cc"}.el-icon-more:before{content:"\e794"}.el-icon-phone-outline:before{content:"\e6cb"}.el-icon-phone:before{content:"\e795"}.el-icon-user:before{content:"\e6e3"}.el-icon-user-solid:before{content:"\e7a5"}.el-icon-setting:before{content:"\e6ca"}.el-icon-s-tools:before{content:"\e7ac"}.el-icon-delete:before{content:"\e6d7"}.el-icon-delete-solid:before{content:"\e7c9"}.el-icon-eleme:before{content:"\e7c7"}.el-icon-platform-eleme:before{content:"\e7ca"}.el-icon-loading{-webkit-animation:rotating 2s linear infinite;animation:rotating 2s linear infinite}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@-webkit-keyframes rotating{0%{-webkit-transform:rotateZ(0);transform:rotateZ(0)}100%{-webkit-transform:rotateZ(360deg);transform:rotateZ(360deg)}}@keyframes rotating{0%{-webkit-transform:rotateZ(0);transform:rotateZ(0)}100%{-webkit-transform:rotateZ(360deg);transform:rotateZ(360deg)}}.el-pagination{white-space:nowrap;padding:2px 5px;color:#303133;font-weight:700}.el-pagination::after,.el-pagination::before{display:table;content:""}.el-pagination::after{clear:both}.el-pagination button,.el-pagination span:not([class*=suffix]){display:inline-block;font-size:13px;min-width:35.5px;height:28px;line-height:28px;vertical-align:top;-webkit-box-sizing:border-box;box-sizing:border-box}.el-pagination .el-input__inner{text-align:center;-moz-appearance:textfield;line-height:normal}.el-pagination .el-input__suffix{right:0;-webkit-transform:scale(.8);transform:scale(.8)}.el-pagination .el-select .el-input{width:100px;margin:0 5px}.el-pagination .el-select .el-input .el-input__inner{padding-right:25px;border-radius:3px}.el-pagination button{border:none;padding:0 6px;background:0 0}.el-pagination button:focus{outline:0}.el-pagination button:hover{color:#409EFF}.el-pagination button:disabled{color:#C0C4CC;background-color:#FFF;cursor:not-allowed}.el-pagination .btn-next,.el-pagination .btn-prev{background:center center no-repeat #FFF;background-size:16px;cursor:pointer;margin:0;color:#303133}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{display:block;font-size:12px;font-weight:700}.el-pagination .btn-prev{padding-right:12px}.el-pagination .btn-next{padding-left:12px}.el-pagination .el-pager li.disabled{color:#C0C4CC;cursor:not-allowed}.el-pager li,.el-pager li.btn-quicknext:hover,.el-pager li.btn-quickprev:hover{cursor:pointer}.el-pagination--small .btn-next,.el-pagination--small .btn-prev,.el-pagination--small .el-pager li,.el-pagination--small .el-pager li.btn-quicknext,.el-pagination--small .el-pager li.btn-quickprev,.el-pagination--small .el-pager li:last-child{border-color:transparent;font-size:12px;line-height:22px;height:22px;min-width:22px}.el-pagination--small .more::before,.el-pagination--small li.more::before{line-height:24px}.el-pagination--small button,.el-pagination--small span:not([class*=suffix]){height:22px;line-height:22px}.el-pagination--small .el-pagination__editor,.el-pagination--small .el-pagination__editor.el-input .el-input__inner{height:22px}.el-pagination__sizes{margin:0 10px 0 0;font-weight:400;color:#606266}.el-pagination__sizes .el-input .el-input__inner{font-size:13px;padding-left:8px}.el-pagination__sizes .el-input .el-input__inner:hover{border-color:#409EFF}.el-pagination__total{margin-right:10px;font-weight:400;color:#606266}.el-pagination__jump{margin-left:24px;font-weight:400;color:#606266}.el-pagination__jump .el-input__inner{padding:0 3px}.el-pagination__rightwrapper{float:right}.el-pagination__editor{line-height:18px;padding:0 2px;height:28px;text-align:center;margin:0 2px;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:3px}.el-pager,.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev{padding:0}.el-pagination__editor.el-input{width:50px}.el-pagination__editor.el-input .el-input__inner{height:28px}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button,.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev,.el-pagination.is-background .el-pager li{margin:0 5px;background-color:#f4f4f5;color:#606266;min-width:30px;border-radius:2px}.el-pagination.is-background .btn-next.disabled,.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-prev.disabled,.el-pagination.is-background .btn-prev:disabled,.el-pagination.is-background .el-pager li.disabled{color:#C0C4CC}.el-pagination.is-background .el-pager li:not(.disabled):hover{color:#409EFF}.el-pagination.is-background .el-pager li:not(.disabled).active{background-color:#409EFF;color:#FFF}.el-dialog,.el-pager li{background:#FFF;-webkit-box-sizing:border-box}.el-pagination.is-background.el-pagination--small .btn-next,.el-pagination.is-background.el-pagination--small .btn-prev,.el-pagination.is-background.el-pagination--small .el-pager li{margin:0 3px;min-width:22px}.el-pager,.el-pager li{vertical-align:top;margin:0;display:inline-block}.el-pager{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;list-style:none;font-size:0}.el-date-table,.el-table th{-webkit-user-select:none;-moz-user-select:none}.el-pager .more::before{line-height:30px}.el-pager li{padding:0 4px;font-size:13px;min-width:35.5px;height:28px;line-height:28px;box-sizing:border-box;text-align:center}.el-menu--collapse .el-menu .el-submenu,.el-menu--popup{min-width:200px}.el-pager li.btn-quicknext,.el-pager li.btn-quickprev{line-height:28px;color:#303133}.el-pager li.btn-quicknext.disabled,.el-pager li.btn-quickprev.disabled{color:#C0C4CC}.el-pager li.active+li{border-left:0}.el-pager li:hover{color:#409EFF}.el-pager li.active{color:#409EFF;cursor:default}@-webkit-keyframes v-modal-in{0%{opacity:0}}@-webkit-keyframes v-modal-out{100%{opacity:0}}.el-dialog{position:relative;margin:0 auto 50px;border-radius:2px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3);box-sizing:border-box;width:50%}.el-dialog.is-fullscreen{width:100%;margin-top:0;margin-bottom:0;height:100%;overflow:auto}.el-dialog__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto;margin:0}.el-dialog__header{padding:20px 20px 10px}.el-dialog__headerbtn{position:absolute;top:20px;right:20px;padding:0;background:0 0;border:none;outline:0;cursor:pointer;font-size:16px}.el-dialog__headerbtn .el-dialog__close{color:#909399}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:#409EFF}.el-dialog__title{line-height:24px;font-size:18px;color:#303133}.el-dialog__body{padding:30px 20px;color:#606266;font-size:14px;word-break:break-all}.el-dialog__footer{padding:10px 20px 20px;text-align:right;-webkit-box-sizing:border-box;box-sizing:border-box}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial;padding:25px 25px 30px}.el-dialog--center .el-dialog__footer{text-align:inherit}.dialog-fade-enter-active{-webkit-animation:dialog-fade-in .3s;animation:dialog-fade-in .3s}.dialog-fade-leave-active{-webkit-animation:dialog-fade-out .3s;animation:dialog-fade-out .3s}@-webkit-keyframes dialog-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes dialog-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes dialog-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes dialog-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}.el-autocomplete{position:relative;display:inline-block}.el-autocomplete-suggestion{margin:5px 0;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:4px;border:1px solid #E4E7ED;-webkit-box-sizing:border-box;box-sizing:border-box;background-color:#FFF}.el-dropdown-menu,.el-menu--collapse .el-submenu .el-menu{z-index:10;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-autocomplete-suggestion__wrap{max-height:280px;padding:10px 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-autocomplete-suggestion__list{margin:0;padding:0}.el-autocomplete-suggestion li{padding:0 20px;margin:0;line-height:34px;cursor:pointer;color:#606266;font-size:14px;list-style:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-autocomplete-suggestion li.highlighted,.el-autocomplete-suggestion li:hover{background-color:#F5F7FA}.el-autocomplete-suggestion li.divider{margin-top:6px;border-top:1px solid #000}.el-autocomplete-suggestion li.divider:last-child{margin-bottom:-6px}.el-autocomplete-suggestion.is-loading li{text-align:center;height:100px;line-height:100px;font-size:20px;color:#999}.el-autocomplete-suggestion.is-loading li::after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-autocomplete-suggestion.is-loading li:hover{background-color:#FFF}.el-autocomplete-suggestion.is-loading .el-icon-loading{vertical-align:middle}.el-dropdown{display:inline-block;position:relative;color:#606266;font-size:14px}.el-dropdown .el-button-group{display:block}.el-dropdown .el-button-group .el-button{float:none}.el-dropdown .el-dropdown__caret-button{padding-left:5px;padding-right:5px;position:relative;border-left:none}.el-dropdown .el-dropdown__caret-button::before{content:'';position:absolute;display:block;width:1px;top:5px;bottom:5px;left:0;background:rgba(255,255,255,.5)}.el-dropdown .el-dropdown__caret-button.el-button--default::before{background:rgba(220,223,230,.5)}.el-dropdown .el-dropdown__caret-button:hover::before{top:0;bottom:0}.el-dropdown .el-dropdown__caret-button .el-dropdown__icon{padding-left:0}.el-dropdown__icon{font-size:12px;margin:0 3px}.el-dropdown-menu{position:absolute;top:0;left:0;padding:10px 0;margin:5px 0;background-color:#FFF;border:1px solid #EBEEF5;border-radius:4px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-dropdown-menu__item{list-style:none;line-height:36px;padding:0 20px;margin:0;font-size:14px;color:#606266;cursor:pointer;outline:0}.el-dropdown-menu__item:focus,.el-dropdown-menu__item:not(.is-disabled):hover{background-color:#ecf5ff;color:#66b1ff}.el-dropdown-menu__item i{margin-right:5px}.el-dropdown-menu__item--divided{position:relative;margin-top:6px;border-top:1px solid #EBEEF5}.el-dropdown-menu__item--divided:before{content:'';height:6px;display:block;margin:0 -20px;background-color:#FFF}.el-dropdown-menu__item.is-disabled{cursor:default;color:#bbb;pointer-events:none}.el-dropdown-menu--medium{padding:6px 0}.el-dropdown-menu--medium .el-dropdown-menu__item{line-height:30px;padding:0 17px;font-size:14px}.el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:6px}.el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:6px;margin:0 -17px}.el-dropdown-menu--small{padding:6px 0}.el-dropdown-menu--small .el-dropdown-menu__item{line-height:27px;padding:0 15px;font-size:13px}.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:4px}.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:4px;margin:0 -15px}.el-dropdown-menu--mini{padding:3px 0}.el-dropdown-menu--mini .el-dropdown-menu__item{line-height:24px;padding:0 10px;font-size:12px}.el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:3px}.el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:3px;margin:0 -10px}.el-menu{border-right:solid 1px #e6e6e6;list-style:none;position:relative;margin:0;padding-left:0;background-color:#FFF}.el-menu--horizontal>.el-menu-item:not(.is-disabled):focus,.el-menu--horizontal>.el-menu-item:not(.is-disabled):hover,.el-menu--horizontal>.el-submenu .el-submenu__title:hover{background-color:#fff}.el-menu::after,.el-menu::before{display:table;content:""}.el-menu::after{clear:both}.el-menu.el-menu--horizontal{border-bottom:solid 1px #e6e6e6}.el-menu--horizontal{border-right:none}.el-menu--horizontal>.el-menu-item{float:left;height:60px;line-height:60px;margin:0;border-bottom:2px solid transparent;color:#909399}.el-menu--horizontal>.el-menu-item a,.el-menu--horizontal>.el-menu-item a:hover{color:inherit}.el-menu--horizontal>.el-submenu{float:left}.el-menu--horizontal>.el-submenu:focus,.el-menu--horizontal>.el-submenu:hover{outline:0}.el-menu--horizontal>.el-submenu:focus .el-submenu__title,.el-menu--horizontal>.el-submenu:hover .el-submenu__title{color:#303133}.el-menu--horizontal>.el-submenu.is-active .el-submenu__title{border-bottom:2px solid #409EFF;color:#303133}.el-menu--horizontal>.el-submenu .el-submenu__title{height:60px;line-height:60px;border-bottom:2px solid transparent;color:#909399}.el-menu--horizontal>.el-submenu .el-submenu__icon-arrow{position:static;vertical-align:middle;margin-left:8px;margin-top:-3px}.el-menu--horizontal .el-menu .el-menu-item,.el-menu--horizontal .el-menu .el-submenu__title{background-color:#FFF;float:none;height:36px;line-height:36px;padding:0 10px;color:#909399}.el-menu--horizontal .el-menu .el-menu-item.is-active,.el-menu--horizontal .el-menu .el-submenu.is-active>.el-submenu__title{color:#303133}.el-menu--horizontal .el-menu-item:not(.is-disabled):focus,.el-menu--horizontal .el-menu-item:not(.is-disabled):hover{outline:0;color:#303133}.el-menu--horizontal>.el-menu-item.is-active{border-bottom:2px solid #409EFF;color:#303133}.el-menu--collapse{width:64px}.el-menu--collapse>.el-menu-item [class^=el-icon-],.el-menu--collapse>.el-submenu>.el-submenu__title [class^=el-icon-]{margin:0;vertical-align:middle;width:24px;text-align:center}.el-menu--collapse>.el-menu-item .el-submenu__icon-arrow,.el-menu--collapse>.el-submenu>.el-submenu__title .el-submenu__icon-arrow{display:none}.el-menu--collapse>.el-menu-item span,.el-menu--collapse>.el-submenu>.el-submenu__title span{height:0;width:0;overflow:hidden;visibility:hidden;display:inline-block}.el-menu--collapse>.el-menu-item.is-active i{color:inherit}.el-menu--collapse .el-submenu{position:relative}.el-menu--collapse .el-submenu .el-menu{position:absolute;margin-left:5px;top:0;left:100%;border:1px solid #E4E7ED;border-radius:2px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-menu-item,.el-submenu__title{height:56px;line-height:56px;position:relative;-webkit-box-sizing:border-box;white-space:nowrap;list-style:none}.el-menu--collapse .el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{-webkit-transform:none;transform:none}.el-menu--popup{z-index:100;border:none;padding:5px 0;border-radius:2px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-menu--popup-bottom-start{margin-top:5px}.el-menu--popup-right-start{margin-left:5px;margin-right:5px}.el-menu-item{font-size:14px;color:#303133;padding:0 20px;cursor:pointer;-webkit-transition:border-color .3s,background-color .3s,color .3s;transition:border-color .3s,background-color .3s,color .3s;box-sizing:border-box}.el-menu-item *{vertical-align:middle}.el-menu-item i{color:#909399}.el-menu-item:focus,.el-menu-item:hover{outline:0;background-color:#ecf5ff}.el-menu-item.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-menu-item [class^=el-icon-]{margin-right:5px;width:24px;text-align:center;font-size:18px;vertical-align:middle}.el-menu-item.is-active{color:#409EFF}.el-menu-item.is-active i{color:inherit}.el-submenu{list-style:none;margin:0;padding-left:0}.el-submenu__title{font-size:14px;color:#303133;padding:0 20px;cursor:pointer;-webkit-transition:border-color .3s,background-color .3s,color .3s;transition:border-color .3s,background-color .3s,color .3s;box-sizing:border-box}.el-submenu__title *{vertical-align:middle}.el-submenu__title i{color:#909399}.el-submenu__title:focus,.el-submenu__title:hover{outline:0;background-color:#ecf5ff}.el-submenu__title.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-submenu__title:hover{background-color:#ecf5ff}.el-submenu .el-menu{border:none}.el-submenu .el-menu-item{height:50px;line-height:50px;padding:0 45px;min-width:200px}.el-submenu__icon-arrow{position:absolute;top:50%;right:20px;margin-top:-7px;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;font-size:12px}.el-submenu.is-active .el-submenu__title{border-bottom-color:#409EFF}.el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg)}.el-submenu.is-disabled .el-menu-item,.el-submenu.is-disabled .el-submenu__title{opacity:.25;cursor:not-allowed;background:0 0!important}.el-submenu [class^=el-icon-]{vertical-align:middle;margin-right:5px;width:24px;text-align:center;font-size:18px}.el-menu-item-group>ul{padding:0}.el-menu-item-group__title{padding:7px 0 7px 20px;line-height:normal;font-size:12px;color:#909399}.el-radio-button__inner,.el-radio-group{display:inline-block;line-height:1;vertical-align:middle}.horizontal-collapse-transition .el-submenu__title .el-submenu__icon-arrow{-webkit-transition:.2s;transition:.2s;opacity:0}.el-radio-group{font-size:0}.el-radio-button{position:relative;display:inline-block;outline:0}.el-radio-button__inner{white-space:nowrap;background:#FFF;border:1px solid #DCDFE6;font-weight:500;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;position:relative;cursor:pointer;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);padding:12px 20px;font-size:14px;border-radius:0}.el-radio-button__inner.is-round{padding:12px 20px}.el-radio-button__inner:hover{color:#409EFF}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-left:1px solid #DCDFE6;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.el-radio-button__orig-radio{opacity:0;outline:0;position:absolute;z-index:-1}.el-radio-button__orig-radio:checked+.el-radio-button__inner{color:#FFF;background-color:#409EFF;border-color:#409EFF;-webkit-box-shadow:-1px 0 0 0 #409EFF;box-shadow:-1px 0 0 0 #409EFF}.el-radio-button__orig-radio:disabled+.el-radio-button__inner{color:#C0C4CC;cursor:not-allowed;background-image:none;background-color:#FFF;border-color:#EBEEF5;-webkit-box-shadow:none;box-shadow:none}.el-radio-button__orig-radio:disabled:checked+.el-radio-button__inner{background-color:#F2F6FC}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 4px 4px 0}.el-popover,.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:4px}.el-radio-button--medium .el-radio-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-radio-button--medium .el-radio-button__inner.is-round{padding:10px 20px}.el-radio-button--small .el-radio-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-radio-button--small .el-radio-button__inner.is-round{padding:9px 15px}.el-radio-button--mini .el-radio-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-radio-button--mini .el-radio-button__inner.is-round{padding:7px 15px}.el-radio-button:focus:not(.is-focus):not(:active):not(.is-disabled){-webkit-box-shadow:0 0 2px 2px #409EFF;box-shadow:0 0 2px 2px #409EFF}.el-switch{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;font-size:14px;line-height:20px;height:20px;vertical-align:middle}.el-switch__core,.el-switch__label{display:inline-block;cursor:pointer}.el-switch.is-disabled .el-switch__core,.el-switch.is-disabled .el-switch__label{cursor:not-allowed}.el-switch__label{-webkit-transition:.2s;transition:.2s;height:20px;font-size:14px;font-weight:500;vertical-align:middle;color:#303133}.el-switch__label.is-active{color:#409EFF}.el-switch__label--left{margin-right:10px}.el-switch__label--right{margin-left:10px}.el-switch__label *{line-height:1;font-size:14px;display:inline-block}.el-switch__input{position:absolute;width:0;height:0;opacity:0;margin:0}.el-switch__core{margin:0;position:relative;width:40px;height:20px;border:1px solid #DCDFE6;outline:0;border-radius:10px;-webkit-box-sizing:border-box;box-sizing:border-box;background:#DCDFE6;-webkit-transition:border-color .3s,background-color .3s;transition:border-color .3s,background-color .3s;vertical-align:middle}.el-switch__core:after{content:"";position:absolute;top:1px;left:1px;border-radius:100%;-webkit-transition:all .3s;transition:all .3s;width:16px;height:16px;background-color:#FFF}.el-switch.is-checked .el-switch__core{border-color:#409EFF;background-color:#409EFF}.el-switch.is-checked .el-switch__core::after{left:100%;margin-left:-17px}.el-switch.is-disabled{opacity:.6}.el-switch--wide .el-switch__label.el-switch__label--left span{left:10px}.el-switch--wide .el-switch__label.el-switch__label--right span{right:10px}.el-switch .label-fade-enter,.el-switch .label-fade-leave-active{opacity:0}.el-select-dropdown{position:absolute;z-index:1001;border:1px solid #E4E7ED;border-radius:4px;background-color:#FFF;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-box-sizing:border-box;box-sizing:border-box;margin:5px 0}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected{color:#409EFF;background-color:#FFF}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected.hover{background-color:#F5F7FA}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected::after{position:absolute;right:20px;font-family:element-icons;content:"\e6da";font-size:12px;font-weight:700;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.el-select-dropdown__empty{padding:10px 0;margin:0;text-align:center;color:#999;font-size:14px}.el-select-dropdown__wrap{max-height:274px}.el-select-dropdown__list{list-style:none;padding:6px 0;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-select-dropdown__item{font-size:14px;padding:0 20px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#606266;height:34px;line-height:34px;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer}.el-select-dropdown__item.is-disabled{color:#C0C4CC;cursor:not-allowed}.el-select-dropdown__item.is-disabled:hover{background-color:#FFF}.el-select-dropdown__item.hover,.el-select-dropdown__item:hover{background-color:#F5F7FA}.el-select-dropdown__item.selected{color:#409EFF;font-weight:700}.el-select-group{margin:0;padding:0}.el-select-group__wrap{position:relative;list-style:none;margin:0;padding:0}.el-select-group__wrap:not(:last-of-type){padding-bottom:24px}.el-select-group__wrap:not(:last-of-type)::after{content:'';position:absolute;display:block;left:20px;right:20px;bottom:12px;height:1px;background:#E4E7ED}.el-select-group__title{padding-left:20px;font-size:12px;color:#909399;line-height:30px}.el-select-group .el-select-dropdown__item{padding-left:20px}.el-select{display:inline-block;position:relative}.el-select .el-select__tags>span{display:contents}.el-select:hover .el-input__inner{border-color:#C0C4CC}.el-select .el-input__inner{cursor:pointer;padding-right:35px}.el-select .el-input__inner:focus{border-color:#409EFF}.el-select .el-input .el-select__caret{color:#C0C4CC;font-size:14px;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg);cursor:pointer}.el-select .el-input .el-select__caret.is-reverse{-webkit-transform:rotateZ(0);transform:rotateZ(0)}.el-select .el-input .el-select__caret.is-show-close{font-size:14px;text-align:center;-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg);border-radius:100%;color:#C0C4CC;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1)}.el-select .el-input .el-select__caret.is-show-close:hover{color:#909399}.el-select .el-input.is-disabled .el-input__inner{cursor:not-allowed}.el-select .el-input.is-disabled .el-input__inner:hover{border-color:#E4E7ED}.el-select .el-input.is-focus .el-input__inner{border-color:#409EFF}.el-select>.el-input{display:block}.el-select__input{border:none;outline:0;padding:0;margin-left:15px;color:#666;font-size:14px;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:28px;background-color:transparent}.el-select__input.is-mini{height:14px}.el-select__close{cursor:pointer;position:absolute;top:8px;z-index:1000;right:25px;color:#C0C4CC;line-height:18px;font-size:14px}.el-select__close:hover{color:#909399}.el-select__tags{position:absolute;line-height:normal;white-space:normal;z-index:1;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap}.el-select .el-tag__close{margin-top:-2px}.el-select .el-tag{-webkit-box-sizing:border-box;box-sizing:border-box;border-color:transparent;margin:2px 0 2px 6px;background-color:#f0f2f5}.el-select .el-tag__close.el-icon-close{background-color:#C0C4CC;right:-7px;top:0;color:#FFF}.el-select .el-tag__close.el-icon-close:hover{background-color:#909399}.el-table,.el-table__expanded-cell{background-color:#FFF}.el-select .el-tag__close.el-icon-close::before{display:block;-webkit-transform:translate(0,.5px);transform:translate(0,.5px)}.el-table{position:relative;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-box-flex:1;-ms-flex:1;flex:1;width:100%;max-width:100%;font-size:14px;color:#606266}.el-table--mini,.el-table--small,.el-table__expand-icon{font-size:12px}.el-table__empty-block{min-height:60px;text-align:center;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-table__empty-text{line-height:60px;width:50%;color:#909399}.el-table__expand-column .cell{padding:0;text-align:center}.el-table__expand-icon{position:relative;cursor:pointer;color:#666;-webkit-transition:-webkit-transform .2s ease-in-out;transition:-webkit-transform .2s ease-in-out;transition:transform .2s ease-in-out;transition:transform .2s ease-in-out,-webkit-transform .2s ease-in-out;height:20px}.el-table__expand-icon--expanded{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-table__expand-icon>.el-icon{position:absolute;left:50%;top:50%;margin-left:-5px;margin-top:-5px}.el-table__expanded-cell[class*=cell]{padding:20px 50px}.el-table__expanded-cell:hover{background-color:transparent!important}.el-table__placeholder{display:inline-block;width:20px}.el-table__append-wrapper{overflow:hidden}.el-table--fit{border-right:0;border-bottom:0}.el-table--fit td.gutter,.el-table--fit th.gutter{border-right-width:1px}.el-table--scrollable-x .el-table__body-wrapper{overflow-x:auto}.el-table--scrollable-y .el-table__body-wrapper{overflow-y:auto}.el-table thead{color:#909399;font-weight:500}.el-table thead.is-group th{background:#F5F7FA}.el-table th,.el-table tr{background-color:#FFF}.el-table td,.el-table th{padding:12px 0;min-width:0;-webkit-box-sizing:border-box;box-sizing:border-box;text-overflow:ellipsis;vertical-align:middle;position:relative;text-align:left}.el-table td.is-center,.el-table th.is-center{text-align:center}.el-table td.is-right,.el-table th.is-right{text-align:right}.el-table td.gutter,.el-table th.gutter{width:15px;border-right-width:0;border-bottom-width:0;padding:0}.el-table--medium td,.el-table--medium th{padding:10px 0}.el-table--small td,.el-table--small th{padding:8px 0}.el-table--mini td,.el-table--mini th{padding:6px 0}.el-table .cell,.el-table--border td:first-child .cell,.el-table--border th:first-child .cell{padding-left:10px}.el-table tr input[type=checkbox]{margin:0}.el-table td,.el-table th.is-leaf{border-bottom:1px solid #EBEEF5}.el-table th.is-sortable{cursor:pointer}.el-table th{overflow:hidden;-ms-user-select:none;user-select:none}.el-table th>.cell{display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;vertical-align:middle;padding-left:10px;padding-right:10px;width:100%}.el-table th>.cell.highlight{color:#409EFF}.el-table th.required>div::before{display:inline-block;content:"";width:8px;height:8px;border-radius:50%;background:#ff4d51;margin-right:5px;vertical-align:middle}.el-table td div{-webkit-box-sizing:border-box;box-sizing:border-box}.el-table td.gutter{width:0}.el-table .cell{-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;text-overflow:ellipsis;white-space:normal;word-break:break-all;line-height:23px;padding-right:10px}.el-table .cell.el-tooltip{white-space:nowrap;min-width:50px}.el-table--border,.el-table--group{border:1px solid #EBEEF5}.el-table--border::after,.el-table--group::after,.el-table::before{content:'';position:absolute;background-color:#EBEEF5;z-index:1}.el-table--border::after,.el-table--group::after{top:0;right:0;width:1px;height:100%}.el-table::before{left:0;bottom:0;width:100%;height:1px}.el-table--border{border-right:none;border-bottom:none}.el-table--border.el-loading-parent--relative{border-color:transparent}.el-table--border td,.el-table--border th,.el-table__body-wrapper .el-table--border.is-scrolling-left~.el-table__fixed{border-right:1px solid #EBEEF5}.el-table--border th.gutter:last-of-type{border-bottom:1px solid #EBEEF5;border-bottom-width:1px}.el-table--border th,.el-table__fixed-right-patch{border-bottom:1px solid #EBEEF5}.el-table__fixed,.el-table__fixed-right{position:absolute;top:0;left:0;overflow-x:hidden;overflow-y:hidden;-webkit-box-shadow:0 0 10px rgba(0,0,0,.12);box-shadow:0 0 10px rgba(0,0,0,.12)}.el-table__fixed-right::before,.el-table__fixed::before{content:'';position:absolute;left:0;bottom:0;width:100%;height:1px;background-color:#EBEEF5;z-index:4}.el-table__fixed-right-patch{position:absolute;top:-1px;right:0;background-color:#FFF}.el-table__fixed-right{top:0;left:auto;right:0}.el-table__fixed-right .el-table__fixed-body-wrapper,.el-table__fixed-right .el-table__fixed-footer-wrapper,.el-table__fixed-right .el-table__fixed-header-wrapper{left:auto;right:0}.el-table__fixed-header-wrapper{position:absolute;left:0;top:0;z-index:3}.el-table__fixed-footer-wrapper{position:absolute;left:0;bottom:0;z-index:3}.el-table__fixed-footer-wrapper tbody td{border-top:1px solid #EBEEF5;background-color:#F5F7FA;color:#606266}.el-table__fixed-body-wrapper{position:absolute;left:0;top:37px;overflow:hidden;z-index:3}.el-table__body-wrapper,.el-table__footer-wrapper,.el-table__header-wrapper{width:100%}.el-table__footer-wrapper{margin-top:-1px}.el-table__footer-wrapper td{border-top:1px solid #EBEEF5}.el-table__body,.el-table__footer,.el-table__header{table-layout:fixed;border-collapse:separate}.el-table__footer-wrapper,.el-table__header-wrapper{overflow:hidden}.el-table__footer-wrapper tbody td,.el-table__header-wrapper tbody td{background-color:#F5F7FA;color:#606266}.el-table__body-wrapper{overflow:hidden;position:relative}.el-table__body-wrapper.is-scrolling-left~.el-table__fixed,.el-table__body-wrapper.is-scrolling-none~.el-table__fixed,.el-table__body-wrapper.is-scrolling-none~.el-table__fixed-right,.el-table__body-wrapper.is-scrolling-right~.el-table__fixed-right{-webkit-box-shadow:none;box-shadow:none}.el-picker-panel,.el-table-filter{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-table__body-wrapper .el-table--border.is-scrolling-right~.el-table__fixed-right{border-left:1px solid #EBEEF5}.el-table .caret-wrapper{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:34px;width:24px;vertical-align:middle;cursor:pointer;overflow:initial;position:relative}.el-table .sort-caret{width:0;height:0;border:5px solid transparent;position:absolute;left:7px}.el-table .sort-caret.ascending{border-bottom-color:#C0C4CC;top:5px}.el-table .sort-caret.descending{border-top-color:#C0C4CC;bottom:7px}.el-table .ascending .sort-caret.ascending{border-bottom-color:#409EFF}.el-table .descending .sort-caret.descending{border-top-color:#409EFF}.el-table .hidden-columns{position:absolute;z-index:-1}.el-table--striped .el-table__body tr.el-table__row--striped td{background:#FAFAFA}.el-table--striped .el-table__body tr.el-table__row--striped.current-row td{background-color:#ecf5ff}.el-table__body tr.hover-row.current-row>td,.el-table__body tr.hover-row.el-table__row--striped.current-row>td,.el-table__body tr.hover-row.el-table__row--striped>td,.el-table__body tr.hover-row>td{background-color:#F5F7FA}.el-table__body tr.current-row>td{background-color:#ecf5ff}.el-table__column-resize-proxy{position:absolute;left:200px;top:0;bottom:0;width:0;border-left:1px solid #EBEEF5;z-index:10}.el-table__column-filter-trigger{display:inline-block;line-height:34px;cursor:pointer}.el-table__column-filter-trigger i{color:#909399;font-size:12px;-webkit-transform:scale(.75);transform:scale(.75)}.el-table--enable-row-transition .el-table__body td{-webkit-transition:background-color .25s ease;transition:background-color .25s ease}.el-table--enable-row-hover .el-table__body tr:hover>td{background-color:#F5F7FA}.el-table--fluid-height .el-table__fixed,.el-table--fluid-height .el-table__fixed-right{bottom:0;overflow:hidden}.el-table [class*=el-table__row--level] .el-table__expand-icon{display:inline-block;width:20px;line-height:20px;height:20px;text-align:center;margin-right:3px}.el-table-column--selection .cell{padding-left:14px;padding-right:14px}.el-table-filter{border:1px solid #EBEEF5;border-radius:2px;background-color:#FFF;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-box-sizing:border-box;box-sizing:border-box;margin:2px 0}.el-date-table td,.el-date-table td div{height:30px;-webkit-box-sizing:border-box}.el-table-filter__list{padding:5px 0;margin:0;list-style:none;min-width:100px}.el-table-filter__list-item{line-height:36px;padding:0 10px;cursor:pointer;font-size:14px}.el-table-filter__list-item:hover{background-color:#ecf5ff;color:#66b1ff}.el-table-filter__list-item.is-active{background-color:#409EFF;color:#FFF}.el-table-filter__content{min-width:100px}.el-table-filter__bottom{border-top:1px solid #EBEEF5;padding:8px}.el-table-filter__bottom button{background:0 0;border:none;color:#606266;cursor:pointer;font-size:13px;padding:0 3px}.el-date-table td.in-range div,.el-date-table td.in-range div:hover,.el-date-table.is-week-mode .el-date-table__row.current div,.el-date-table.is-week-mode .el-date-table__row:hover div{background-color:#F2F6FC}.el-table-filter__bottom button:hover{color:#409EFF}.el-table-filter__bottom button:focus{outline:0}.el-table-filter__bottom button.is-disabled{color:#C0C4CC;cursor:not-allowed}.el-table-filter__wrap{max-height:280px}.el-table-filter__checkbox-group{padding:10px}.el-table-filter__checkbox-group label.el-checkbox{display:block;margin-right:5px;margin-bottom:8px;margin-left:5px}.el-table-filter__checkbox-group .el-checkbox:last-child{margin-bottom:0}.el-date-table{font-size:12px;-ms-user-select:none;user-select:none}.el-date-table.is-week-mode .el-date-table__row:hover td.available:hover{color:#606266}.el-date-table.is-week-mode .el-date-table__row:hover td:first-child div{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table.is-week-mode .el-date-table__row:hover td:last-child div{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table td{width:32px;padding:4px 0;box-sizing:border-box;text-align:center;cursor:pointer;position:relative}.el-date-table td div{padding:3px 0;box-sizing:border-box}.el-date-table td span{width:24px;height:24px;display:block;margin:0 auto;line-height:24px;position:absolute;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);border-radius:50%}.el-date-table td.next-month,.el-date-table td.prev-month{color:#C0C4CC}.el-date-table td.today{position:relative}.el-date-table td.today span{color:#409EFF;font-weight:700}.el-date-table td.today.end-date span,.el-date-table td.today.start-date span{color:#FFF}.el-date-table td.available:hover{color:#409EFF}.el-date-table td.current:not(.disabled) span{color:#FFF;background-color:#409EFF}.el-date-table td.end-date div,.el-date-table td.start-date div{color:#FFF}.el-date-table td.end-date span,.el-date-table td.start-date span{background-color:#409EFF}.el-date-table td.start-date div{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table td.end-date div{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table td.disabled div{background-color:#F5F7FA;opacity:1;cursor:not-allowed;color:#C0C4CC}.el-date-table td.selected div{margin-left:5px;margin-right:5px;background-color:#F2F6FC;border-radius:15px}.el-date-table td.selected div:hover{background-color:#F2F6FC}.el-date-table td.selected span{background-color:#409EFF;color:#FFF;border-radius:15px}.el-date-table td.week{font-size:80%;color:#606266}.el-month-table,.el-year-table{font-size:12px;border-collapse:collapse}.el-date-table th{padding:5px;color:#606266;font-weight:400;border-bottom:solid 1px #EBEEF5}.el-month-table{margin:-1px}.el-month-table td{text-align:center;padding:8px 0;cursor:pointer}.el-month-table td div{height:48px;padding:6px 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-month-table td.today .cell{color:#409EFF;font-weight:700}.el-month-table td.today.end-date .cell,.el-month-table td.today.start-date .cell{color:#FFF}.el-month-table td.disabled .cell{background-color:#F5F7FA;cursor:not-allowed;color:#C0C4CC}.el-month-table td.disabled .cell:hover{color:#C0C4CC}.el-month-table td .cell{width:60px;height:36px;display:block;line-height:36px;color:#606266;margin:0 auto;border-radius:18px}.el-month-table td .cell:hover{color:#409EFF}.el-month-table td.in-range div,.el-month-table td.in-range div:hover{background-color:#F2F6FC}.el-month-table td.end-date div,.el-month-table td.start-date div{color:#FFF}.el-month-table td.end-date .cell,.el-month-table td.start-date .cell{color:#FFF;background-color:#409EFF}.el-month-table td.start-date div{border-top-left-radius:24px;border-bottom-left-radius:24px}.el-month-table td.end-date div{border-top-right-radius:24px;border-bottom-right-radius:24px}.el-month-table td.current:not(.disabled) .cell{color:#409EFF}.el-year-table{margin:-1px}.el-year-table .el-icon{color:#303133}.el-year-table td{text-align:center;padding:20px 3px;cursor:pointer}.el-year-table td.today .cell{color:#409EFF;font-weight:700}.el-year-table td.disabled .cell{background-color:#F5F7FA;cursor:not-allowed;color:#C0C4CC}.el-year-table td.disabled .cell:hover{color:#C0C4CC}.el-year-table td .cell{width:48px;height:32px;display:block;line-height:32px;color:#606266;margin:0 auto}.el-year-table td .cell:hover,.el-year-table td.current:not(.disabled) .cell{color:#409EFF}.el-date-range-picker{width:646px}.el-date-range-picker.has-sidebar{width:756px}.el-date-range-picker table{table-layout:fixed;width:100%}.el-date-range-picker .el-picker-panel__body{min-width:513px}.el-date-range-picker .el-picker-panel__content{margin:0}.el-date-range-picker__header{position:relative;text-align:center;height:28px}.el-date-range-picker__header [class*=arrow-left]{float:left}.el-date-range-picker__header [class*=arrow-right]{float:right}.el-date-range-picker__header div{font-size:16px;font-weight:500;margin-right:50px}.el-date-range-picker__content{float:left;width:50%;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:16px}.el-date-range-picker__content.is-left{border-right:1px solid #e4e4e4}.el-date-range-picker__content .el-date-range-picker__header div{margin-left:50px;margin-right:50px}.el-date-range-picker__editors-wrap{-webkit-box-sizing:border-box;box-sizing:border-box;display:table-cell}.el-date-range-picker__editors-wrap.is-right{text-align:right}.el-date-range-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px;display:table;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.el-date-range-picker__time-header>.el-icon-arrow-right{font-size:20px;vertical-align:middle;display:table-cell;color:#303133}.el-date-range-picker__time-picker-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-range-picker__time-picker-wrap .el-picker-panel{position:absolute;top:13px;right:0;z-index:1;background:#FFF}.el-date-picker{width:322px}.el-date-picker.has-sidebar.has-time{width:434px}.el-date-picker.has-sidebar{width:438px}.el-date-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-picker .el-picker-panel__content{width:292px}.el-date-picker table{table-layout:fixed;width:100%}.el-date-picker__editor-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px;display:table;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.el-date-picker__header{margin:12px;text-align:center}.el-date-picker__header--bordered{margin-bottom:0;padding-bottom:12px;border-bottom:solid 1px #EBEEF5}.el-date-picker__header--bordered+.el-picker-panel__content{margin-top:0}.el-date-picker__header-label{font-size:16px;font-weight:500;padding:0 5px;line-height:22px;text-align:center;cursor:pointer;color:#606266}.el-date-picker__header-label.active,.el-date-picker__header-label:hover{color:#409EFF}.el-date-picker__prev-btn{float:left}.el-date-picker__next-btn{float:right}.el-date-picker__time-wrap{padding:10px;text-align:center}.el-date-picker__time-label{float:left;cursor:pointer;line-height:30px;margin-left:10px}.time-select{margin:5px 0;min-width:0}.time-select .el-picker-panel__content{max-height:200px;margin:0}.time-select-item{padding:8px 10px;font-size:14px;line-height:20px}.time-select-item.selected:not(.disabled){color:#409EFF;font-weight:700}.time-select-item.disabled{color:#E4E7ED;cursor:not-allowed}.time-select-item:hover{background-color:#F5F7FA;font-weight:700;cursor:pointer}.el-date-editor{position:relative;display:inline-block;text-align:left}.el-date-editor.el-input,.el-date-editor.el-input__inner{width:220px}.el-date-editor--monthrange.el-input,.el-date-editor--monthrange.el-input__inner{width:300px}.el-date-editor--daterange.el-input,.el-date-editor--daterange.el-input__inner,.el-date-editor--timerange.el-input,.el-date-editor--timerange.el-input__inner{width:350px}.el-date-editor--datetimerange.el-input,.el-date-editor--datetimerange.el-input__inner{width:400px}.el-date-editor--dates .el-input__inner{text-overflow:ellipsis;white-space:nowrap}.el-date-editor .el-icon-circle-close{cursor:pointer}.el-date-editor .el-range__icon{font-size:14px;margin-left:-5px;color:#C0C4CC;float:left;line-height:32px}.el-date-editor .el-range-input,.el-date-editor .el-range-separator{height:100%;margin:0;text-align:center;display:inline-block;font-size:14px}.el-date-editor .el-range-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;outline:0;padding:0;width:39%;color:#606266}.el-date-editor .el-range-input::-webkit-input-placeholder{color:#C0C4CC}.el-date-editor .el-range-input:-ms-input-placeholder{color:#C0C4CC}.el-date-editor .el-range-input::-ms-input-placeholder{color:#C0C4CC}.el-date-editor .el-range-input::placeholder{color:#C0C4CC}.el-date-editor .el-range-separator{padding:0 5px;line-height:32px;width:5%;color:#303133}.el-date-editor .el-range__close-icon{font-size:14px;color:#C0C4CC;width:25px;display:inline-block;float:right;line-height:32px}.el-range-editor.el-input__inner{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:3px 10px}.el-range-editor .el-range-input{line-height:1}.el-range-editor.is-active,.el-range-editor.is-active:hover{border-color:#409EFF}.el-range-editor--medium.el-input__inner{height:36px}.el-range-editor--medium .el-range-separator{line-height:28px;font-size:14px}.el-range-editor--medium .el-range-input{font-size:14px}.el-range-editor--medium .el-range__close-icon,.el-range-editor--medium .el-range__icon{line-height:28px}.el-range-editor--small.el-input__inner{height:32px}.el-range-editor--small .el-range-separator{line-height:24px;font-size:13px}.el-range-editor--small .el-range-input{font-size:13px}.el-range-editor--small .el-range__close-icon,.el-range-editor--small .el-range__icon{line-height:24px}.el-range-editor--mini.el-input__inner{height:28px}.el-range-editor--mini .el-range-separator{line-height:20px;font-size:12px}.el-range-editor--mini .el-range-input{font-size:12px}.el-range-editor--mini .el-range__close-icon,.el-range-editor--mini .el-range__icon{line-height:20px}.el-range-editor.is-disabled{background-color:#F5F7FA;border-color:#E4E7ED;color:#C0C4CC;cursor:not-allowed}.el-range-editor.is-disabled:focus,.el-range-editor.is-disabled:hover{border-color:#E4E7ED}.el-range-editor.is-disabled input{background-color:#F5F7FA;color:#C0C4CC;cursor:not-allowed}.el-range-editor.is-disabled input::-webkit-input-placeholder{color:#C0C4CC}.el-range-editor.is-disabled input:-ms-input-placeholder{color:#C0C4CC}.el-range-editor.is-disabled input::-ms-input-placeholder{color:#C0C4CC}.el-range-editor.is-disabled input::placeholder{color:#C0C4CC}.el-range-editor.is-disabled .el-range-separator{color:#C0C4CC}.el-picker-panel{color:#606266;border:1px solid #E4E7ED;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);background:#FFF;border-radius:4px;line-height:30px;margin:5px 0}.el-popover,.el-time-panel{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-picker-panel__body-wrapper::after,.el-picker-panel__body::after{content:"";display:table;clear:both}.el-picker-panel__content{position:relative;margin:15px}.el-picker-panel__footer{border-top:1px solid #e4e4e4;padding:4px;text-align:right;background-color:#FFF;position:relative;font-size:0}.el-picker-panel__shortcut{display:block;width:100%;border:0;background-color:transparent;line-height:28px;font-size:14px;color:#606266;padding-left:12px;text-align:left;outline:0;cursor:pointer}.el-picker-panel__shortcut:hover{color:#409EFF}.el-picker-panel__shortcut.active{background-color:#e6f1fe;color:#409EFF}.el-picker-panel__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-picker-panel__btn[disabled]{color:#ccc;cursor:not-allowed}.el-picker-panel__icon-btn{font-size:12px;color:#303133;border:0;background:0 0;cursor:pointer;outline:0;margin-top:8px}.el-picker-panel__icon-btn:hover{color:#409EFF}.el-picker-panel__icon-btn.is-disabled{color:#bbb}.el-picker-panel__icon-btn.is-disabled:hover{cursor:not-allowed}.el-picker-panel__link-btn{vertical-align:middle}.el-picker-panel [slot=sidebar],.el-picker-panel__sidebar{position:absolute;top:0;bottom:0;width:110px;border-right:1px solid #e4e4e4;-webkit-box-sizing:border-box;box-sizing:border-box;padding-top:6px;background-color:#FFF;overflow:auto}.el-picker-panel [slot=sidebar]+.el-picker-panel__body,.el-picker-panel__sidebar+.el-picker-panel__body{margin-left:110px}.el-time-spinner.has-seconds .el-time-spinner__wrapper{width:33.3%}.el-time-spinner__wrapper{max-height:190px;overflow:auto;display:inline-block;width:50%;vertical-align:top;position:relative}.el-time-spinner__wrapper .el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default){padding-bottom:15px}.el-time-spinner__input.el-input .el-input__inner,.el-time-spinner__list{padding:0;text-align:center}.el-time-spinner__wrapper.is-arrow{-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;overflow:hidden}.el-time-spinner__wrapper.is-arrow .el-time-spinner__list{-webkit-transform:translateY(-32px);transform:translateY(-32px)}.el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.disabled):not(.active){background:#FFF;cursor:default}.el-time-spinner__arrow{font-size:12px;color:#909399;position:absolute;left:0;width:100%;z-index:1;text-align:center;height:30px;line-height:30px;cursor:pointer}.el-time-spinner__arrow:hover{color:#409EFF}.el-time-spinner__arrow.el-icon-arrow-up{top:10px}.el-time-spinner__arrow.el-icon-arrow-down{bottom:10px}.el-time-spinner__input.el-input{width:70%}.el-time-spinner__list{margin:0;list-style:none}.el-time-spinner__list::after,.el-time-spinner__list::before{content:'';display:block;width:100%;height:80px}.el-time-spinner__item{height:32px;line-height:32px;font-size:12px;color:#606266}.el-time-spinner__item:hover:not(.disabled):not(.active){background:#F5F7FA;cursor:pointer}.el-time-spinner__item.active:not(.disabled){color:#303133;font-weight:700}.el-time-spinner__item.disabled{color:#C0C4CC;cursor:not-allowed}.el-time-panel{margin:5px 0;border:1px solid #E4E7ED;background-color:#FFF;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:2px;position:absolute;width:180px;left:0;z-index:1000;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-box-sizing:content-box;box-sizing:content-box}.el-slider__button,.el-slider__button-wrapper{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.el-time-panel__content{font-size:0;position:relative;overflow:hidden}.el-time-panel__content::after,.el-time-panel__content::before{content:"";top:50%;position:absolute;margin-top:-15px;height:32px;z-index:-1;left:0;right:0;-webkit-box-sizing:border-box;box-sizing:border-box;padding-top:6px;text-align:left;border-top:1px solid #E4E7ED;border-bottom:1px solid #E4E7ED}.el-time-panel__content::after{left:50%;margin-left:12%;margin-right:12%}.el-time-panel__content::before{padding-left:50%;margin-right:12%;margin-left:12%}.el-time-panel__content.has-seconds::after{left:calc(100% / 3 * 2)}.el-time-panel__content.has-seconds::before{padding-left:calc(100% / 3)}.el-time-panel__footer{border-top:1px solid #e4e4e4;padding:4px;height:36px;line-height:25px;text-align:right;-webkit-box-sizing:border-box;box-sizing:border-box}.el-time-panel__btn{border:none;line-height:28px;padding:0 5px;margin:0 5px;cursor:pointer;background-color:transparent;outline:0;font-size:12px;color:#303133}.el-time-panel__btn.confirm{font-weight:800;color:#409EFF}.el-time-range-picker{width:354px;overflow:visible}.el-time-range-picker__content{position:relative;text-align:center;padding:10px}.el-time-range-picker__cell{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:4px 7px 7px;width:50%;display:inline-block}.el-time-range-picker__header{margin-bottom:5px;text-align:center;font-size:14px}.el-time-range-picker__body{border-radius:2px;border:1px solid #E4E7ED}.el-popover{position:absolute;background:#FFF;min-width:150px;border:1px solid #EBEEF5;padding:12px;z-index:2000;color:#606266;line-height:1.4;text-align:justify;font-size:14px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);word-break:break-all}.el-popover--plain{padding:18px 20px}.el-popover__title{color:#303133;font-size:16px;line-height:1;margin-bottom:12px}.v-modal-enter{-webkit-animation:v-modal-in .2s ease;animation:v-modal-in .2s ease}.v-modal-leave{-webkit-animation:v-modal-out .2s ease forwards;animation:v-modal-out .2s ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{100%{opacity:0}}.v-modal{position:fixed;left:0;top:0;width:100%;height:100%;opacity:.5;background:#000}.el-popup-parent--hidden{overflow:hidden}.el-message-box{display:inline-block;width:420px;padding-bottom:10px;vertical-align:middle;background-color:#FFF;border-radius:4px;border:1px solid #EBEEF5;font-size:18px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);text-align:left;overflow:hidden;-webkit-backface-visibility:hidden;backface-visibility:hidden}.el-message-box__wrapper{position:fixed;top:0;bottom:0;left:0;right:0;text-align:center}.el-message-box__wrapper::after{content:"";display:inline-block;height:100%;width:0;vertical-align:middle}.el-message-box__header{position:relative;padding:15px 15px 10px}.el-message-box__title{padding-left:0;margin-bottom:0;font-size:18px;line-height:1;color:#303133}.el-message-box__headerbtn{position:absolute;top:15px;right:15px;padding:0;border:none;outline:0;background:0 0;font-size:16px;cursor:pointer}.el-form-item.is-error .el-input__inner,.el-form-item.is-error .el-input__inner:focus,.el-form-item.is-error .el-textarea__inner,.el-form-item.is-error .el-textarea__inner:focus,.el-message-box__input input.invalid,.el-message-box__input input.invalid:focus{border-color:#F56C6C}.el-message-box__headerbtn .el-message-box__close{color:#909399}.el-message-box__headerbtn:focus .el-message-box__close,.el-message-box__headerbtn:hover .el-message-box__close{color:#409EFF}.el-message-box__content{padding:10px 15px;color:#606266;font-size:14px}.el-message-box__container{position:relative}.el-message-box__input{padding-top:15px}.el-message-box__status{position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);font-size:24px!important}.el-message-box__status::before{padding-left:1px}.el-message-box__status+.el-message-box__message{padding-left:36px;padding-right:12px}.el-message-box__status.el-icon-success{color:#67C23A}.el-message-box__status.el-icon-info{color:#909399}.el-message-box__status.el-icon-warning{color:#E6A23C}.el-message-box__status.el-icon-error{color:#F56C6C}.el-message-box__message{margin:0}.el-message-box__message p{margin:0;line-height:24px}.el-message-box__errormsg{color:#F56C6C;font-size:12px;min-height:18px;margin-top:2px}.el-message-box__btns{padding:5px 15px 0;text-align:right}.el-message-box__btns button:nth-child(2){margin-left:10px}.el-message-box__btns-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.el-message-box--center{padding-bottom:30px}.el-message-box--center .el-message-box__header{padding-top:30px}.el-message-box--center .el-message-box__title{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-message-box--center .el-message-box__status{position:relative;top:auto;padding-right:5px;text-align:center;-webkit-transform:translateY(-1px);transform:translateY(-1px)}.el-message-box--center .el-message-box__message{margin-left:0}.el-message-box--center .el-message-box__btns,.el-message-box--center .el-message-box__content{text-align:center}.el-message-box--center .el-message-box__content{padding-left:27px;padding-right:27px}.msgbox-fade-enter-active{-webkit-animation:msgbox-fade-in .3s;animation:msgbox-fade-in .3s}.msgbox-fade-leave-active{-webkit-animation:msgbox-fade-out .3s;animation:msgbox-fade-out .3s}@-webkit-keyframes msgbox-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes msgbox-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes msgbox-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes msgbox-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}.el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb::after,.el-breadcrumb::before{display:table;content:""}.el-breadcrumb::after{clear:both}.el-breadcrumb__separator{margin:0 9px;font-weight:700;color:#C0C4CC}.el-breadcrumb__separator[class*=icon]{margin:0 6px;font-weight:400}.el-breadcrumb__item{float:left}.el-breadcrumb__inner{color:#606266}.el-breadcrumb__inner a,.el-breadcrumb__inner.is-link{font-weight:700;text-decoration:none;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1);color:#303133}.el-breadcrumb__inner a:hover,.el-breadcrumb__inner.is-link:hover{color:#409EFF;cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover{font-weight:400;color:#606266;cursor:text}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}.el-form--label-left .el-form-item__label{text-align:left}.el-form--label-top .el-form-item__label{float:none;display:inline-block;text-align:left;padding:0 0 10px}.el-form--inline .el-form-item{display:inline-block;margin-right:10px;vertical-align:top}.el-form--inline .el-form-item__label{float:none;display:inline-block}.el-form--inline .el-form-item__content{display:inline-block;vertical-align:top}.el-form--inline.el-form--label-top .el-form-item__content{display:block}.el-form-item{margin-bottom:22px}.el-form-item::after,.el-form-item::before{display:table;content:""}.el-form-item::after{clear:both}.el-form-item .el-form-item{margin-bottom:0}.el-form-item--mini.el-form-item,.el-form-item--small.el-form-item{margin-bottom:18px}.el-form-item .el-input__validateIcon{display:none}.el-form-item--medium .el-form-item__content,.el-form-item--medium .el-form-item__label{line-height:36px}.el-form-item--small .el-form-item__content,.el-form-item--small .el-form-item__label{line-height:32px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--mini .el-form-item__content,.el-form-item--mini .el-form-item__label{line-height:28px}.el-form-item--mini .el-form-item__error{padding-top:1px}.el-form-item__label-wrap{float:left}.el-form-item__label-wrap .el-form-item__label{display:inline-block;float:none}.el-form-item__label{text-align:right;vertical-align:middle;float:left;font-size:14px;color:#606266;line-height:40px;padding:0 12px 0 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-form-item__content{line-height:40px;position:relative;font-size:14px}.el-form-item__content::after,.el-form-item__content::before{display:table;content:""}.el-form-item__content::after{clear:both}.el-form-item__content .el-input-group{vertical-align:top}.el-form-item__error{color:#F56C6C;font-size:12px;line-height:1;padding-top:4px;position:absolute;top:100%;left:0}.el-form-item__error--inline{position:relative;top:auto;left:auto;display:inline-block;margin-left:10px}.el-form-item.is-required:not(.is-no-asterisk) .el-form-item__label-wrap>.el-form-item__label:before,.el-form-item.is-required:not(.is-no-asterisk)>.el-form-item__label:before{content:'*';color:#F56C6C;margin-right:4px}.el-form-item.is-error .el-input-group__append .el-input__inner,.el-form-item.is-error .el-input-group__prepend .el-input__inner{border-color:transparent}.el-form-item.is-error .el-input__validateIcon{color:#F56C6C}.el-form-item--feedback .el-input__validateIcon{display:inline-block}.el-tabs__header{padding:0;position:relative;margin:0 0 15px}.el-tabs__active-bar{position:absolute;bottom:0;left:0;height:2px;background-color:#409EFF;z-index:1;-webkit-transition:-webkit-transform .3s cubic-bezier(.645,.045,.355,1);transition:-webkit-transform .3s cubic-bezier(.645,.045,.355,1);transition:transform .3s cubic-bezier(.645,.045,.355,1);transition:transform .3s cubic-bezier(.645,.045,.355,1),-webkit-transform .3s cubic-bezier(.645,.045,.355,1);list-style:none}.el-tabs__new-tab{float:right;border:1px solid #d3dce6;height:18px;width:18px;line-height:18px;margin:12px 0 9px 10px;border-radius:3px;text-align:center;font-size:12px;color:#d3dce6;cursor:pointer;-webkit-transition:all .15s;transition:all .15s}.el-collapse-item__arrow,.el-tabs__nav{-webkit-transition:-webkit-transform .3s}.el-tabs__new-tab .el-icon-plus{-webkit-transform:scale(.8,.8);transform:scale(.8,.8)}.el-tabs__new-tab:hover{color:#409EFF}.el-tabs__nav-wrap{overflow:hidden;margin-bottom:-1px;position:relative}.el-tabs__nav-wrap::after{content:"";position:absolute;left:0;bottom:0;width:100%;height:2px;background-color:#E4E7ED;z-index:1}.el-tabs--border-card>.el-tabs__header .el-tabs__nav-wrap::after,.el-tabs--card>.el-tabs__header .el-tabs__nav-wrap::after{content:none}.el-tabs__nav-wrap.is-scrollable{padding:0 20px;-webkit-box-sizing:border-box;box-sizing:border-box}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{position:absolute;cursor:pointer;line-height:44px;font-size:12px;color:#909399}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{white-space:nowrap;position:relative;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;float:left;z-index:2}.el-tabs__nav.is-stretch{min-width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.el-tabs__nav.is-stretch>*{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center}.el-tabs__item{padding:0 20px;height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;line-height:40px;display:inline-block;list-style:none;font-size:14px;font-weight:500;color:#303133;position:relative}.el-tabs__item:focus,.el-tabs__item:focus:active{outline:0}.el-tabs__item:focus.is-active.is-focus:not(:active){-webkit-box-shadow:0 0 2px 2px #409EFF inset;box-shadow:0 0 2px 2px #409EFF inset;border-radius:3px}.el-tabs__item .el-icon-close{border-radius:50%;text-align:center;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);margin-left:5px}.el-tabs__item .el-icon-close:before{-webkit-transform:scale(.9);transform:scale(.9);display:inline-block}.el-tabs__item .el-icon-close:hover{background-color:#C0C4CC;color:#FFF}.el-tabs__item.is-active{color:#409EFF}.el-tabs__item:hover{color:#409EFF;cursor:pointer}.el-tabs__item.is-disabled{color:#C0C4CC;cursor:default}.el-tabs__content{overflow:hidden;position:relative}.el-tabs--card>.el-tabs__header{border-bottom:1px solid #E4E7ED}.el-tabs--card>.el-tabs__header .el-tabs__nav{border:1px solid #E4E7ED;border-bottom:none;border-radius:4px 4px 0 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-tabs--card>.el-tabs__header .el-tabs__active-bar{display:none}.el-tabs--card>.el-tabs__header .el-tabs__item .el-icon-close{position:relative;font-size:12px;width:0;height:14px;vertical-align:middle;line-height:15px;overflow:hidden;top:-1px;right:-2px;-webkit-transform-origin:100% 50%;transform-origin:100% 50%}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .el-icon-close,.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .el-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid transparent;border-left:1px solid #E4E7ED;-webkit-transition:color .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1);transition:color .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1)}.el-tabs--card>.el-tabs__header .el-tabs__item:first-child{border-left:none}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border-bottom-color:#FFF}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.el-tabs--border-card{background:#FFF;border:1px solid #DCDFE6;-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04);box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04)}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:#F5F7FA;border-bottom:1px solid #E4E7ED;margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__item{-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);border:1px solid transparent;margin-top:-1px;color:#909399}.el-tabs--border-card>.el-tabs__header .el-tabs__item+.el-tabs__item,.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child{margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{color:#409EFF;background-color:#FFF;border-right-color:#DCDFE6;border-left-color:#DCDFE6}.el-tabs--border-card>.el-tabs__header .el-tabs__item:not(.is-disabled):hover{color:#409EFF}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-disabled{color:#C0C4CC}.el-tabs--border-card>.el-tabs__header .is-scrollable .el-tabs__item:first-child{margin-left:0}.el-tabs--bottom .el-tabs__item.is-bottom:nth-child(2),.el-tabs--bottom .el-tabs__item.is-top:nth-child(2),.el-tabs--top .el-tabs__item.is-bottom:nth-child(2),.el-tabs--top .el-tabs__item.is-top:nth-child(2){padding-left:0}.el-tabs--bottom .el-tabs__item.is-bottom:last-child,.el-tabs--bottom .el-tabs__item.is-top:last-child,.el-tabs--top .el-tabs__item.is-bottom:last-child,.el-tabs--top .el-tabs__item.is-top:last-child{padding-right:0}.el-tabs--bottom .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:20px}.el-tabs--bottom .el-tabs--left>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:last-child{padding-right:20px}.el-tabs--bottom .el-tabs__header.is-bottom{margin-bottom:0;margin-top:10px}.el-tabs--bottom.el-tabs--border-card .el-tabs__header.is-bottom{border-bottom:0;border-top:1px solid #DCDFE6}.el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap.is-bottom{margin-top:-1px;margin-bottom:0}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active){border:1px solid transparent}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom{margin:0 -1px -1px}.el-tabs--left,.el-tabs--right{overflow:hidden}.el-tabs--left .el-tabs__header.is-left,.el-tabs--left .el-tabs__header.is-right,.el-tabs--left .el-tabs__nav-scroll,.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__header.is-left,.el-tabs--right .el-tabs__header.is-right,.el-tabs--right .el-tabs__nav-scroll,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{height:100%}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__active-bar.is-right,.el-tabs--right .el-tabs__active-bar.is-left,.el-tabs--right .el-tabs__active-bar.is-right{top:0;bottom:auto;width:2px;height:auto}.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{margin-bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{height:30px;line-height:30px;width:100%;text-align:center;cursor:pointer}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i{-webkit-transform:rotateZ(90deg);transform:rotateZ(90deg)}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{left:auto;top:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next{right:auto;bottom:0}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__nav-wrap.is-left::after{right:0;left:auto}.el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--left .el-tabs__nav-wrap.is-right.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.el-tabs--left .el-tabs__nav-wrap.is-left::after,.el-tabs--left .el-tabs__nav-wrap.is-right::after,.el-tabs--right .el-tabs__nav-wrap.is-left::after,.el-tabs--right .el-tabs__nav-wrap.is-right::after{height:100%;width:2px;bottom:auto;top:0}.el-tabs--left .el-tabs__nav.is-left,.el-tabs--left .el-tabs__nav.is-right,.el-tabs--right .el-tabs__nav.is-left,.el-tabs--right .el-tabs__nav.is-right{float:none}.el-tabs--left .el-tabs__item.is-left,.el-tabs--left .el-tabs__item.is-right,.el-tabs--right .el-tabs__item.is-left,.el-tabs--right .el-tabs__item.is-right{display:block}.el-tabs--left.el-tabs--card .el-tabs__active-bar.is-left,.el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right{display:none}.el-tabs--left .el-tabs__header.is-left{float:left;margin-bottom:0;margin-right:10px}.el-tabs--left .el-tabs__nav-wrap.is-left{margin-right:-1px}.el-tabs--left .el-tabs__item.is-left{text-align:right}.el-tabs--left.el-tabs--card .el-tabs__item.is-left{border-left:none;border-right:1px solid #E4E7ED;border-bottom:none;border-top:1px solid #E4E7ED;text-align:left}.el-tabs--left.el-tabs--card .el-tabs__item.is-left:first-child{border-right:1px solid #E4E7ED;border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active{border:1px solid #E4E7ED;border-right-color:#fff;border-left:none;border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:first-child{border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:last-child{border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__nav{border-radius:4px 0 0 4px;border-bottom:1px solid #E4E7ED;border-right:none}.el-tabs--left.el-tabs--card .el-tabs__new-tab{float:none}.el-tabs--left.el-tabs--border-card .el-tabs__header.is-left{border-right:1px solid #dfe4ed}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left{border:1px solid transparent;margin:-1px 0 -1px -1px}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active{border-color:#d1dbe5 transparent}.el-tabs--right .el-tabs__header.is-right{float:right;margin-bottom:0;margin-left:10px}.el-tabs--right .el-tabs__nav-wrap.is-right{margin-left:-1px}.el-tabs--right .el-tabs__nav-wrap.is-right::after{left:0;right:auto}.el-tabs--right .el-tabs__active-bar.is-right{left:0}.el-tabs--right.el-tabs--card .el-tabs__item.is-right{border-bottom:none;border-top:1px solid #E4E7ED}.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child{border-left:1px solid #E4E7ED;border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active{border:1px solid #E4E7ED;border-left-color:#fff;border-right:none;border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:first-child{border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:last-child{border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__nav{border-radius:0 4px 4px 0;border-bottom:1px solid #E4E7ED;border-left:none}.el-tabs--right.el-tabs--border-card .el-tabs__header.is-right{border-left:1px solid #dfe4ed}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right{border:1px solid transparent;margin:-1px -1px -1px 0}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active{border-color:#d1dbe5 transparent}.slideInLeft-transition,.slideInRight-transition{display:inline-block}.slideInRight-enter{-webkit-animation:slideInRight-enter .3s;animation:slideInRight-enter .3s}.slideInRight-leave{position:absolute;left:0;right:0;-webkit-animation:slideInRight-leave .3s;animation:slideInRight-leave .3s}.slideInLeft-enter{-webkit-animation:slideInLeft-enter .3s;animation:slideInLeft-enter .3s}.slideInLeft-leave{position:absolute;left:0;right:0;-webkit-animation:slideInLeft-leave .3s;animation:slideInLeft-leave .3s}@-webkit-keyframes slideInRight-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInRight-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes slideInRight-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%);opacity:0}}@keyframes slideInRight-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%);opacity:0}}@-webkit-keyframes slideInLeft-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInLeft-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes slideInLeft-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}}@keyframes slideInLeft-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}}.el-tree{position:relative;cursor:default;background:#FFF;color:#606266}.el-tree__empty-block{position:relative;min-height:60px;text-align:center;width:100%;height:100%}.el-tree__empty-text{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);color:#909399;font-size:14px}.el-tree__drop-indicator{position:absolute;left:0;right:0;height:1px;background-color:#409EFF}.el-tree-node{white-space:nowrap;outline:0}.el-tree-node:focus>.el-tree-node__content{background-color:#F5F7FA}.el-tree-node.is-drop-inner>.el-tree-node__content .el-tree-node__label{background-color:#409EFF;color:#fff}.el-tree-node__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:26px;cursor:pointer}.el-tree-node__content>.el-tree-node__expand-icon{padding:6px}.el-tree-node__content>label.el-checkbox{margin-right:8px}.el-tree-node__content:hover{background-color:#F5F7FA}.el-tree.is-dragging .el-tree-node__content{cursor:move}.el-tree.is-dragging.is-drop-not-allow .el-tree-node__content{cursor:not-allowed}.el-tree-node__expand-icon{cursor:pointer;color:#C0C4CC;font-size:12px;-webkit-transform:rotate(0);transform:rotate(0);-webkit-transition:-webkit-transform .3s ease-in-out;transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-transform .3s ease-in-out}.el-tree-node__expand-icon.expanded{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-tree-node__expand-icon.is-leaf{color:transparent;cursor:default}.el-tree-node__label{font-size:14px}.el-tree-node__loading-icon{margin-right:8px;font-size:14px;color:#C0C4CC}.el-tree-node>.el-tree-node__children{overflow:hidden;background-color:transparent}.el-tree-node.is-expanded>.el-tree-node__children{display:block}.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{background-color:#f0f7ff}.el-alert{width:100%;padding:8px 16px;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;position:relative;background-color:#FFF;overflow:hidden;opacity:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-transition:opacity .2s;transition:opacity .2s}.el-alert.is-light .el-alert__closebtn{color:#C0C4CC}.el-alert.is-dark .el-alert__closebtn,.el-alert.is-dark .el-alert__description{color:#FFF}.el-alert.is-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-alert--success.is-light{background-color:#f0f9eb;color:#67C23A}.el-alert--success.is-light .el-alert__description{color:#67C23A}.el-alert--success.is-dark{background-color:#67C23A;color:#FFF}.el-alert--info.is-light{background-color:#f4f4f5;color:#909399}.el-alert--info.is-dark{background-color:#909399;color:#FFF}.el-alert--info .el-alert__description{color:#909399}.el-alert--warning.is-light{background-color:#fdf6ec;color:#E6A23C}.el-alert--warning.is-light .el-alert__description{color:#E6A23C}.el-alert--warning.is-dark{background-color:#E6A23C;color:#FFF}.el-alert--error.is-light{background-color:#fef0f0;color:#F56C6C}.el-alert--error.is-light .el-alert__description{color:#F56C6C}.el-alert--error.is-dark{background-color:#F56C6C;color:#FFF}.el-alert__content{display:table-cell;padding:0 8px}.el-alert__icon{font-size:16px;width:16px}.el-alert__icon.is-big{font-size:28px;width:28px}.el-alert__title{font-size:13px;line-height:18px}.el-alert__title.is-bold{font-weight:700}.el-alert .el-alert__description{font-size:12px;margin:5px 0 0}.el-alert__closebtn{font-size:12px;opacity:1;position:absolute;top:12px;right:15px;cursor:pointer}.el-alert-fade-enter,.el-alert-fade-leave-active,.el-loading-fade-enter,.el-loading-fade-leave-active,.el-notification-fade-leave-active{opacity:0}.el-alert__closebtn.is-customed{font-style:normal;font-size:13px;top:9px}.el-notification{display:-webkit-box;display:-ms-flexbox;display:flex;width:330px;padding:14px 26px 14px 13px;border-radius:8px;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid #EBEEF5;position:fixed;background-color:#FFF;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-transition:opacity .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;transition:opacity .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;transition:opacity .3s,transform .3s,left .3s,right .3s,top .4s,bottom .3s;transition:opacity .3s,transform .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;overflow:hidden}.el-notification.right{right:16px}.el-notification.left{left:16px}.el-notification__group{margin-left:13px;margin-right:8px}.el-notification__title{font-weight:700;font-size:16px;color:#303133;margin:0}.el-notification__content{font-size:14px;line-height:21px;margin:6px 0 0;color:#606266;text-align:justify}.el-notification__content p{margin:0}.el-notification__icon{height:24px;width:24px;font-size:24px}.el-notification__closeBtn{position:absolute;top:18px;right:15px;cursor:pointer;color:#909399;font-size:16px}.el-notification__closeBtn:hover{color:#606266}.el-notification .el-icon-success{color:#67C23A}.el-notification .el-icon-error{color:#F56C6C}.el-notification .el-icon-info{color:#909399}.el-notification .el-icon-warning{color:#E6A23C}.el-notification-fade-enter.right{right:0;-webkit-transform:translateX(100%);transform:translateX(100%)}.el-notification-fade-enter.left{left:0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}.el-input-number{position:relative;display:inline-block;width:180px;line-height:38px}.el-input-number .el-input{display:block}.el-input-number .el-input__inner{-webkit-appearance:none;padding-left:50px;padding-right:50px;text-align:center}.el-input-number__decrease,.el-input-number__increase{position:absolute;z-index:1;top:1px;width:40px;height:auto;text-align:center;background:#F5F7FA;color:#606266;cursor:pointer;font-size:13px}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:#409EFF}.el-input-number__decrease:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled),.el-input-number__increase:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled){border-color:#409EFF}.el-input-number__decrease.is-disabled,.el-input-number__increase.is-disabled{color:#C0C4CC;cursor:not-allowed}.el-input-number__increase{right:1px;border-radius:0 4px 4px 0;border-left:1px solid #DCDFE6}.el-input-number__decrease{left:1px;border-radius:4px 0 0 4px;border-right:1px solid #DCDFE6}.el-input-number.is-disabled .el-input-number__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:#E4E7ED;color:#E4E7ED}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:#E4E7ED;cursor:not-allowed}.el-input-number--medium{width:200px;line-height:34px}.el-input-number--medium .el-input-number__decrease,.el-input-number--medium .el-input-number__increase{width:36px;font-size:14px}.el-input-number--medium .el-input__inner{padding-left:43px;padding-right:43px}.el-input-number--small{width:130px;line-height:30px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{width:32px;font-size:13px}.el-input-number--small .el-input-number__decrease [class*=el-icon],.el-input-number--small .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.9);transform:scale(.9)}.el-input-number--small .el-input__inner{padding-left:39px;padding-right:39px}.el-input-number--mini{width:130px;line-height:26px}.el-input-number--mini .el-input-number__decrease,.el-input-number--mini .el-input-number__increase{width:28px;font-size:12px}.el-input-number--mini .el-input-number__decrease [class*=el-icon],.el-input-number--mini .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.8);transform:scale(.8)}.el-input-number--mini .el-input__inner{padding-left:35px;padding-right:35px}.el-input-number.is-without-controls .el-input__inner{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__inner{padding-left:15px;padding-right:50px}.el-input-number.is-controls-right .el-input-number__decrease,.el-input-number.is-controls-right .el-input-number__increase{height:auto;line-height:19px}.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.8);transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-radius:0 4px 0 0;border-bottom:1px solid #DCDFE6}.el-input-number.is-controls-right .el-input-number__decrease{right:1px;bottom:1px;top:auto;left:auto;border-right:none;border-left:1px solid #DCDFE6;border-radius:0 0 4px}.el-input-number.is-controls-right[class*=medium] [class*=decrease],.el-input-number.is-controls-right[class*=medium] [class*=increase]{line-height:17px}.el-input-number.is-controls-right[class*=small] [class*=decrease],.el-input-number.is-controls-right[class*=small] [class*=increase]{line-height:15px}.el-input-number.is-controls-right[class*=mini] [class*=decrease],.el-input-number.is-controls-right[class*=mini] [class*=increase]{line-height:13px}.el-tooltip__popper{position:absolute;border-radius:4px;padding:10px;z-index:2000;font-size:12px;line-height:1.2;min-width:10px;word-wrap:break-word}.el-tooltip__popper .popper__arrow,.el-tooltip__popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-tooltip__popper .popper__arrow{border-width:6px}.el-tooltip__popper .popper__arrow::after{content:" ";border-width:5px}.el-progress-bar__inner::after,.el-row::after,.el-row::before,.el-slider::after,.el-slider::before,.el-slider__button-wrapper::after,.el-upload-cover::after{content:""}.el-tooltip__popper[x-placement^=top]{margin-bottom:12px}.el-tooltip__popper[x-placement^=top] .popper__arrow{bottom:-6px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-5px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=bottom]{margin-top:12px}.el-tooltip__popper[x-placement^=bottom] .popper__arrow{top:-6px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-5px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=right]{margin-left:12px}.el-tooltip__popper[x-placement^=right] .popper__arrow{left:-6px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=right] .popper__arrow::after{bottom:-5px;left:1px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=left]{margin-right:12px}.el-tooltip__popper[x-placement^=left] .popper__arrow{right:-6px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-5px;margin-left:-5px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper.is-dark{background:#303133;color:#FFF}.el-tooltip__popper.is-light{background:#FFF;border:1px solid #303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow{border-top-color:#303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow::after{border-top-color:#FFF}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow{border-bottom-color:#303133}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow::after{border-bottom-color:#FFF}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow{border-left-color:#303133}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow::after{border-left-color:#FFF}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow{border-right-color:#303133}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow::after{border-right-color:#FFF}.el-slider::after,.el-slider::before{display:table}.el-slider__button-wrapper .el-tooltip,.el-slider__button-wrapper::after{vertical-align:middle;display:inline-block}.el-slider::after{clear:both}.el-slider__runway{width:100%;height:6px;margin:16px 0;background-color:#E4E7ED;border-radius:3px;position:relative;cursor:pointer;vertical-align:middle}.el-slider__runway.show-input{margin-right:160px;width:auto}.el-slider__runway.disabled{cursor:default}.el-slider__runway.disabled .el-slider__bar{background-color:#C0C4CC}.el-slider__runway.disabled .el-slider__button{border-color:#C0C4CC}.el-slider__runway.disabled .el-slider__button-wrapper.dragging,.el-slider__runway.disabled .el-slider__button-wrapper.hover,.el-slider__runway.disabled .el-slider__button-wrapper:hover{cursor:not-allowed}.el-slider__runway.disabled .el-slider__button.dragging,.el-slider__runway.disabled .el-slider__button.hover,.el-slider__runway.disabled .el-slider__button:hover{-webkit-transform:scale(1);transform:scale(1);cursor:not-allowed}.el-slider__button-wrapper,.el-slider__stop{-webkit-transform:translateX(-50%);position:absolute}.el-slider__input{float:right;margin-top:3px;width:130px}.el-slider__input.el-input-number--mini{margin-top:5px}.el-slider__input.el-input-number--medium{margin-top:0}.el-slider__input.el-input-number--large{margin-top:-2px}.el-slider__bar{height:6px;background-color:#409EFF;border-top-left-radius:3px;border-bottom-left-radius:3px;position:absolute}.el-slider__button-wrapper{height:36px;width:36px;z-index:1001;top:-15px;transform:translateX(-50%);background-color:transparent;text-align:center;user-select:none;line-height:normal}.el-slider__button-wrapper::after{height:100%}.el-slider__button-wrapper.hover,.el-slider__button-wrapper:hover{cursor:-webkit-grab;cursor:grab}.el-slider__button-wrapper.dragging{cursor:-webkit-grabbing;cursor:grabbing}.el-slider__button{width:16px;height:16px;border:2px solid #409EFF;background-color:#FFF;border-radius:50%;-webkit-transition:.2s;transition:.2s;user-select:none}.el-image-viewer__btn,.el-step__icon-inner{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.el-slider__button.dragging,.el-slider__button.hover,.el-slider__button:hover{-webkit-transform:scale(1.2);transform:scale(1.2)}.el-slider__button.hover,.el-slider__button:hover{cursor:-webkit-grab;cursor:grab}.el-slider__button.dragging{cursor:-webkit-grabbing;cursor:grabbing}.el-slider__stop{height:6px;width:6px;border-radius:100%;background-color:#FFF;transform:translateX(-50%)}.el-slider__marks{top:0;left:12px;width:18px;height:100%}.el-slider__marks-text{position:absolute;-webkit-transform:translateX(-50%);transform:translateX(-50%);font-size:14px;color:#909399;margin-top:15px}.el-slider.is-vertical{position:relative}.el-slider.is-vertical .el-slider__runway{width:6px;height:100%;margin:0 16px}.el-slider.is-vertical .el-slider__bar{width:6px;height:auto;border-radius:0 0 3px 3px}.el-slider.is-vertical .el-slider__button-wrapper{top:auto;left:-15px;-webkit-transform:translateY(50%);transform:translateY(50%)}.el-slider.is-vertical .el-slider__stop{-webkit-transform:translateY(50%);transform:translateY(50%)}.el-slider.is-vertical.el-slider--with-input{padding-bottom:58px}.el-slider.is-vertical.el-slider--with-input .el-slider__input{overflow:visible;float:none;position:absolute;bottom:22px;width:36px;margin-top:15px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input__inner{text-align:center;padding-left:5px;padding-right:5px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{top:32px;margin-top:-1px;border:1px solid #DCDFE6;line-height:20px;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease{width:18px;right:18px;border-bottom-left-radius:4px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{width:19px;border-bottom-right-radius:4px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase~.el-input .el-input__inner{border-bottom-left-radius:0;border-bottom-right-radius:0}.el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__increase{border-color:#C0C4CC}.el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__increase{border-color:#409EFF}.el-slider.is-vertical .el-slider__marks-text{margin-top:0;left:15px;-webkit-transform:translateY(50%);transform:translateY(50%)}.el-loading-parent--relative{position:relative!important}.el-loading-parent--hidden{overflow:hidden!important}.el-loading-mask{position:absolute;z-index:2000;background-color:rgba(255,255,255,.9);margin:0;top:0;right:0;bottom:0;left:0;-webkit-transition:opacity .3s;transition:opacity .3s}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:-25px}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{height:50px;width:50px}.el-loading-spinner{top:50%;margin-top:-21px;width:100%;text-align:center;position:absolute}.el-col-pull-0,.el-col-pull-1,.el-col-pull-10,.el-col-pull-11,.el-col-pull-13,.el-col-pull-14,.el-col-pull-15,.el-col-pull-16,.el-col-pull-17,.el-col-pull-18,.el-col-pull-19,.el-col-pull-2,.el-col-pull-20,.el-col-pull-21,.el-col-pull-22,.el-col-pull-23,.el-col-pull-24,.el-col-pull-3,.el-col-pull-4,.el-col-pull-5,.el-col-pull-6,.el-col-pull-7,.el-col-pull-8,.el-col-pull-9,.el-col-push-0,.el-col-push-1,.el-col-push-10,.el-col-push-11,.el-col-push-12,.el-col-push-13,.el-col-push-14,.el-col-push-15,.el-col-push-16,.el-col-push-17,.el-col-push-18,.el-col-push-19,.el-col-push-2,.el-col-push-20,.el-col-push-21,.el-col-push-22,.el-col-push-23,.el-col-push-24,.el-col-push-3,.el-col-push-4,.el-col-push-5,.el-col-push-6,.el-col-push-7,.el-col-push-8,.el-col-push-9,.el-row{position:relative}.el-loading-spinner .el-loading-text{color:#409EFF;margin:3px 0;font-size:14px}.el-loading-spinner .circular{height:42px;width:42px;-webkit-animation:loading-rotate 2s linear infinite;animation:loading-rotate 2s linear infinite}.el-loading-spinner .path{-webkit-animation:loading-dash 1.5s ease-in-out infinite;animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:#409EFF;stroke-linecap:round}.el-loading-spinner i{color:#409EFF}@-webkit-keyframes loading-rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes loading-rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}100%{stroke-dasharray:90,150;stroke-dashoffset:-120px}}@keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}100%{stroke-dasharray:90,150;stroke-dashoffset:-120px}}.el-row{-webkit-box-sizing:border-box;box-sizing:border-box}.el-row::after,.el-row::before{display:table}.el-row::after{clear:both}.el-row--flex{display:-webkit-box;display:-ms-flexbox;display:flex}.el-col-0,.el-row--flex:after,.el-row--flex:before{display:none}.el-row--flex.is-justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-row--flex.is-justify-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.el-row--flex.is-justify-space-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.el-row--flex.is-justify-space-around{-ms-flex-pack:distribute;justify-content:space-around}.el-row--flex.is-align-middle{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-row--flex.is-align-bottom{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}[class*=el-col-]{float:left;-webkit-box-sizing:border-box;box-sizing:border-box}.el-upload--picture-card,.el-upload-dragger{-webkit-box-sizing:border-box;cursor:pointer}.el-col-0{width:0%}.el-col-offset-0{margin-left:0}.el-col-pull-0{right:0}.el-col-push-0{left:0}.el-col-1{width:4.16667%}.el-col-offset-1{margin-left:4.16667%}.el-col-pull-1{right:4.16667%}.el-col-push-1{left:4.16667%}.el-col-2{width:8.33333%}.el-col-offset-2{margin-left:8.33333%}.el-col-pull-2{right:8.33333%}.el-col-push-2{left:8.33333%}.el-col-3{width:12.5%}.el-col-offset-3{margin-left:12.5%}.el-col-pull-3{right:12.5%}.el-col-push-3{left:12.5%}.el-col-4{width:16.66667%}.el-col-offset-4{margin-left:16.66667%}.el-col-pull-4{right:16.66667%}.el-col-push-4{left:16.66667%}.el-col-5{width:20.83333%}.el-col-offset-5{margin-left:20.83333%}.el-col-pull-5{right:20.83333%}.el-col-push-5{left:20.83333%}.el-col-6{width:25%}.el-col-offset-6{margin-left:25%}.el-col-pull-6{right:25%}.el-col-push-6{left:25%}.el-col-7{width:29.16667%}.el-col-offset-7{margin-left:29.16667%}.el-col-pull-7{right:29.16667%}.el-col-push-7{left:29.16667%}.el-col-8{width:33.33333%}.el-col-offset-8{margin-left:33.33333%}.el-col-pull-8{right:33.33333%}.el-col-push-8{left:33.33333%}.el-col-9{width:37.5%}.el-col-offset-9{margin-left:37.5%}.el-col-pull-9{right:37.5%}.el-col-push-9{left:37.5%}.el-col-10{width:41.66667%}.el-col-offset-10{margin-left:41.66667%}.el-col-pull-10{right:41.66667%}.el-col-push-10{left:41.66667%}.el-col-11{width:45.83333%}.el-col-offset-11{margin-left:45.83333%}.el-col-pull-11{right:45.83333%}.el-col-push-11{left:45.83333%}.el-col-12{width:50%}.el-col-offset-12{margin-left:50%}.el-col-pull-12{position:relative;right:50%}.el-col-push-12{left:50%}.el-col-13{width:54.16667%}.el-col-offset-13{margin-left:54.16667%}.el-col-pull-13{right:54.16667%}.el-col-push-13{left:54.16667%}.el-col-14{width:58.33333%}.el-col-offset-14{margin-left:58.33333%}.el-col-pull-14{right:58.33333%}.el-col-push-14{left:58.33333%}.el-col-15{width:62.5%}.el-col-offset-15{margin-left:62.5%}.el-col-pull-15{right:62.5%}.el-col-push-15{left:62.5%}.el-col-16{width:66.66667%}.el-col-offset-16{margin-left:66.66667%}.el-col-pull-16{right:66.66667%}.el-col-push-16{left:66.66667%}.el-col-17{width:70.83333%}.el-col-offset-17{margin-left:70.83333%}.el-col-pull-17{right:70.83333%}.el-col-push-17{left:70.83333%}.el-col-18{width:75%}.el-col-offset-18{margin-left:75%}.el-col-pull-18{right:75%}.el-col-push-18{left:75%}.el-col-19{width:79.16667%}.el-col-offset-19{margin-left:79.16667%}.el-col-pull-19{right:79.16667%}.el-col-push-19{left:79.16667%}.el-col-20{width:83.33333%}.el-col-offset-20{margin-left:83.33333%}.el-col-pull-20{right:83.33333%}.el-col-push-20{left:83.33333%}.el-col-21{width:87.5%}.el-col-offset-21{margin-left:87.5%}.el-col-pull-21{right:87.5%}.el-col-push-21{left:87.5%}.el-col-22{width:91.66667%}.el-col-offset-22{margin-left:91.66667%}.el-col-pull-22{right:91.66667%}.el-col-push-22{left:91.66667%}.el-col-23{width:95.83333%}.el-col-offset-23{margin-left:95.83333%}.el-col-pull-23{right:95.83333%}.el-col-push-23{left:95.83333%}.el-col-24{width:100%}.el-col-offset-24{margin-left:100%}.el-col-pull-24{right:100%}.el-col-push-24{left:100%}@media only screen and (max-width:767px){.el-col-xs-0{display:none;width:0%}.el-col-xs-offset-0{margin-left:0}.el-col-xs-pull-0{position:relative;right:0}.el-col-xs-push-0{position:relative;left:0}.el-col-xs-1{width:4.16667%}.el-col-xs-offset-1{margin-left:4.16667%}.el-col-xs-pull-1{position:relative;right:4.16667%}.el-col-xs-push-1{position:relative;left:4.16667%}.el-col-xs-2{width:8.33333%}.el-col-xs-offset-2{margin-left:8.33333%}.el-col-xs-pull-2{position:relative;right:8.33333%}.el-col-xs-push-2{position:relative;left:8.33333%}.el-col-xs-3{width:12.5%}.el-col-xs-offset-3{margin-left:12.5%}.el-col-xs-pull-3{position:relative;right:12.5%}.el-col-xs-push-3{position:relative;left:12.5%}.el-col-xs-4{width:16.66667%}.el-col-xs-offset-4{margin-left:16.66667%}.el-col-xs-pull-4{position:relative;right:16.66667%}.el-col-xs-push-4{position:relative;left:16.66667%}.el-col-xs-5{width:20.83333%}.el-col-xs-offset-5{margin-left:20.83333%}.el-col-xs-pull-5{position:relative;right:20.83333%}.el-col-xs-push-5{position:relative;left:20.83333%}.el-col-xs-6{width:25%}.el-col-xs-offset-6{margin-left:25%}.el-col-xs-pull-6{position:relative;right:25%}.el-col-xs-push-6{position:relative;left:25%}.el-col-xs-7{width:29.16667%}.el-col-xs-offset-7{margin-left:29.16667%}.el-col-xs-pull-7{position:relative;right:29.16667%}.el-col-xs-push-7{position:relative;left:29.16667%}.el-col-xs-8{width:33.33333%}.el-col-xs-offset-8{margin-left:33.33333%}.el-col-xs-pull-8{position:relative;right:33.33333%}.el-col-xs-push-8{position:relative;left:33.33333%}.el-col-xs-9{width:37.5%}.el-col-xs-offset-9{margin-left:37.5%}.el-col-xs-pull-9{position:relative;right:37.5%}.el-col-xs-push-9{position:relative;left:37.5%}.el-col-xs-10{width:41.66667%}.el-col-xs-offset-10{margin-left:41.66667%}.el-col-xs-pull-10{position:relative;right:41.66667%}.el-col-xs-push-10{position:relative;left:41.66667%}.el-col-xs-11{width:45.83333%}.el-col-xs-offset-11{margin-left:45.83333%}.el-col-xs-pull-11{position:relative;right:45.83333%}.el-col-xs-push-11{position:relative;left:45.83333%}.el-col-xs-12{width:50%}.el-col-xs-offset-12{margin-left:50%}.el-col-xs-pull-12{position:relative;right:50%}.el-col-xs-push-12{position:relative;left:50%}.el-col-xs-13{width:54.16667%}.el-col-xs-offset-13{margin-left:54.16667%}.el-col-xs-pull-13{position:relative;right:54.16667%}.el-col-xs-push-13{position:relative;left:54.16667%}.el-col-xs-14{width:58.33333%}.el-col-xs-offset-14{margin-left:58.33333%}.el-col-xs-pull-14{position:relative;right:58.33333%}.el-col-xs-push-14{position:relative;left:58.33333%}.el-col-xs-15{width:62.5%}.el-col-xs-offset-15{margin-left:62.5%}.el-col-xs-pull-15{position:relative;right:62.5%}.el-col-xs-push-15{position:relative;left:62.5%}.el-col-xs-16{width:66.66667%}.el-col-xs-offset-16{margin-left:66.66667%}.el-col-xs-pull-16{position:relative;right:66.66667%}.el-col-xs-push-16{position:relative;left:66.66667%}.el-col-xs-17{width:70.83333%}.el-col-xs-offset-17{margin-left:70.83333%}.el-col-xs-pull-17{position:relative;right:70.83333%}.el-col-xs-push-17{position:relative;left:70.83333%}.el-col-xs-18{width:75%}.el-col-xs-offset-18{margin-left:75%}.el-col-xs-pull-18{position:relative;right:75%}.el-col-xs-push-18{position:relative;left:75%}.el-col-xs-19{width:79.16667%}.el-col-xs-offset-19{margin-left:79.16667%}.el-col-xs-pull-19{position:relative;right:79.16667%}.el-col-xs-push-19{position:relative;left:79.16667%}.el-col-xs-20{width:83.33333%}.el-col-xs-offset-20{margin-left:83.33333%}.el-col-xs-pull-20{position:relative;right:83.33333%}.el-col-xs-push-20{position:relative;left:83.33333%}.el-col-xs-21{width:87.5%}.el-col-xs-offset-21{margin-left:87.5%}.el-col-xs-pull-21{position:relative;right:87.5%}.el-col-xs-push-21{position:relative;left:87.5%}.el-col-xs-22{width:91.66667%}.el-col-xs-offset-22{margin-left:91.66667%}.el-col-xs-pull-22{position:relative;right:91.66667%}.el-col-xs-push-22{position:relative;left:91.66667%}.el-col-xs-23{width:95.83333%}.el-col-xs-offset-23{margin-left:95.83333%}.el-col-xs-pull-23{position:relative;right:95.83333%}.el-col-xs-push-23{position:relative;left:95.83333%}.el-col-xs-24{width:100%}.el-col-xs-offset-24{margin-left:100%}.el-col-xs-pull-24{position:relative;right:100%}.el-col-xs-push-24{position:relative;left:100%}}@media only screen and (min-width:768px){.el-col-sm-0{display:none;width:0%}.el-col-sm-offset-0{margin-left:0}.el-col-sm-pull-0{position:relative;right:0}.el-col-sm-push-0{position:relative;left:0}.el-col-sm-1{width:4.16667%}.el-col-sm-offset-1{margin-left:4.16667%}.el-col-sm-pull-1{position:relative;right:4.16667%}.el-col-sm-push-1{position:relative;left:4.16667%}.el-col-sm-2{width:8.33333%}.el-col-sm-offset-2{margin-left:8.33333%}.el-col-sm-pull-2{position:relative;right:8.33333%}.el-col-sm-push-2{position:relative;left:8.33333%}.el-col-sm-3{width:12.5%}.el-col-sm-offset-3{margin-left:12.5%}.el-col-sm-pull-3{position:relative;right:12.5%}.el-col-sm-push-3{position:relative;left:12.5%}.el-col-sm-4{width:16.66667%}.el-col-sm-offset-4{margin-left:16.66667%}.el-col-sm-pull-4{position:relative;right:16.66667%}.el-col-sm-push-4{position:relative;left:16.66667%}.el-col-sm-5{width:20.83333%}.el-col-sm-offset-5{margin-left:20.83333%}.el-col-sm-pull-5{position:relative;right:20.83333%}.el-col-sm-push-5{position:relative;left:20.83333%}.el-col-sm-6{width:25%}.el-col-sm-offset-6{margin-left:25%}.el-col-sm-pull-6{position:relative;right:25%}.el-col-sm-push-6{position:relative;left:25%}.el-col-sm-7{width:29.16667%}.el-col-sm-offset-7{margin-left:29.16667%}.el-col-sm-pull-7{position:relative;right:29.16667%}.el-col-sm-push-7{position:relative;left:29.16667%}.el-col-sm-8{width:33.33333%}.el-col-sm-offset-8{margin-left:33.33333%}.el-col-sm-pull-8{position:relative;right:33.33333%}.el-col-sm-push-8{position:relative;left:33.33333%}.el-col-sm-9{width:37.5%}.el-col-sm-offset-9{margin-left:37.5%}.el-col-sm-pull-9{position:relative;right:37.5%}.el-col-sm-push-9{position:relative;left:37.5%}.el-col-sm-10{width:41.66667%}.el-col-sm-offset-10{margin-left:41.66667%}.el-col-sm-pull-10{position:relative;right:41.66667%}.el-col-sm-push-10{position:relative;left:41.66667%}.el-col-sm-11{width:45.83333%}.el-col-sm-offset-11{margin-left:45.83333%}.el-col-sm-pull-11{position:relative;right:45.83333%}.el-col-sm-push-11{position:relative;left:45.83333%}.el-col-sm-12{width:50%}.el-col-sm-offset-12{margin-left:50%}.el-col-sm-pull-12{position:relative;right:50%}.el-col-sm-push-12{position:relative;left:50%}.el-col-sm-13{width:54.16667%}.el-col-sm-offset-13{margin-left:54.16667%}.el-col-sm-pull-13{position:relative;right:54.16667%}.el-col-sm-push-13{position:relative;left:54.16667%}.el-col-sm-14{width:58.33333%}.el-col-sm-offset-14{margin-left:58.33333%}.el-col-sm-pull-14{position:relative;right:58.33333%}.el-col-sm-push-14{position:relative;left:58.33333%}.el-col-sm-15{width:62.5%}.el-col-sm-offset-15{margin-left:62.5%}.el-col-sm-pull-15{position:relative;right:62.5%}.el-col-sm-push-15{position:relative;left:62.5%}.el-col-sm-16{width:66.66667%}.el-col-sm-offset-16{margin-left:66.66667%}.el-col-sm-pull-16{position:relative;right:66.66667%}.el-col-sm-push-16{position:relative;left:66.66667%}.el-col-sm-17{width:70.83333%}.el-col-sm-offset-17{margin-left:70.83333%}.el-col-sm-pull-17{position:relative;right:70.83333%}.el-col-sm-push-17{position:relative;left:70.83333%}.el-col-sm-18{width:75%}.el-col-sm-offset-18{margin-left:75%}.el-col-sm-pull-18{position:relative;right:75%}.el-col-sm-push-18{position:relative;left:75%}.el-col-sm-19{width:79.16667%}.el-col-sm-offset-19{margin-left:79.16667%}.el-col-sm-pull-19{position:relative;right:79.16667%}.el-col-sm-push-19{position:relative;left:79.16667%}.el-col-sm-20{width:83.33333%}.el-col-sm-offset-20{margin-left:83.33333%}.el-col-sm-pull-20{position:relative;right:83.33333%}.el-col-sm-push-20{position:relative;left:83.33333%}.el-col-sm-21{width:87.5%}.el-col-sm-offset-21{margin-left:87.5%}.el-col-sm-pull-21{position:relative;right:87.5%}.el-col-sm-push-21{position:relative;left:87.5%}.el-col-sm-22{width:91.66667%}.el-col-sm-offset-22{margin-left:91.66667%}.el-col-sm-pull-22{position:relative;right:91.66667%}.el-col-sm-push-22{position:relative;left:91.66667%}.el-col-sm-23{width:95.83333%}.el-col-sm-offset-23{margin-left:95.83333%}.el-col-sm-pull-23{position:relative;right:95.83333%}.el-col-sm-push-23{position:relative;left:95.83333%}.el-col-sm-24{width:100%}.el-col-sm-offset-24{margin-left:100%}.el-col-sm-pull-24{position:relative;right:100%}.el-col-sm-push-24{position:relative;left:100%}}@media only screen and (min-width:992px){.el-col-md-0{display:none;width:0%}.el-col-md-offset-0{margin-left:0}.el-col-md-pull-0{position:relative;right:0}.el-col-md-push-0{position:relative;left:0}.el-col-md-1{width:4.16667%}.el-col-md-offset-1{margin-left:4.16667%}.el-col-md-pull-1{position:relative;right:4.16667%}.el-col-md-push-1{position:relative;left:4.16667%}.el-col-md-2{width:8.33333%}.el-col-md-offset-2{margin-left:8.33333%}.el-col-md-pull-2{position:relative;right:8.33333%}.el-col-md-push-2{position:relative;left:8.33333%}.el-col-md-3{width:12.5%}.el-col-md-offset-3{margin-left:12.5%}.el-col-md-pull-3{position:relative;right:12.5%}.el-col-md-push-3{position:relative;left:12.5%}.el-col-md-4{width:16.66667%}.el-col-md-offset-4{margin-left:16.66667%}.el-col-md-pull-4{position:relative;right:16.66667%}.el-col-md-push-4{position:relative;left:16.66667%}.el-col-md-5{width:20.83333%}.el-col-md-offset-5{margin-left:20.83333%}.el-col-md-pull-5{position:relative;right:20.83333%}.el-col-md-push-5{position:relative;left:20.83333%}.el-col-md-6{width:25%}.el-col-md-offset-6{margin-left:25%}.el-col-md-pull-6{position:relative;right:25%}.el-col-md-push-6{position:relative;left:25%}.el-col-md-7{width:29.16667%}.el-col-md-offset-7{margin-left:29.16667%}.el-col-md-pull-7{position:relative;right:29.16667%}.el-col-md-push-7{position:relative;left:29.16667%}.el-col-md-8{width:33.33333%}.el-col-md-offset-8{margin-left:33.33333%}.el-col-md-pull-8{position:relative;right:33.33333%}.el-col-md-push-8{position:relative;left:33.33333%}.el-col-md-9{width:37.5%}.el-col-md-offset-9{margin-left:37.5%}.el-col-md-pull-9{position:relative;right:37.5%}.el-col-md-push-9{position:relative;left:37.5%}.el-col-md-10{width:41.66667%}.el-col-md-offset-10{margin-left:41.66667%}.el-col-md-pull-10{position:relative;right:41.66667%}.el-col-md-push-10{position:relative;left:41.66667%}.el-col-md-11{width:45.83333%}.el-col-md-offset-11{margin-left:45.83333%}.el-col-md-pull-11{position:relative;right:45.83333%}.el-col-md-push-11{position:relative;left:45.83333%}.el-col-md-12{width:50%}.el-col-md-offset-12{margin-left:50%}.el-col-md-pull-12{position:relative;right:50%}.el-col-md-push-12{position:relative;left:50%}.el-col-md-13{width:54.16667%}.el-col-md-offset-13{margin-left:54.16667%}.el-col-md-pull-13{position:relative;right:54.16667%}.el-col-md-push-13{position:relative;left:54.16667%}.el-col-md-14{width:58.33333%}.el-col-md-offset-14{margin-left:58.33333%}.el-col-md-pull-14{position:relative;right:58.33333%}.el-col-md-push-14{position:relative;left:58.33333%}.el-col-md-15{width:62.5%}.el-col-md-offset-15{margin-left:62.5%}.el-col-md-pull-15{position:relative;right:62.5%}.el-col-md-push-15{position:relative;left:62.5%}.el-col-md-16{width:66.66667%}.el-col-md-offset-16{margin-left:66.66667%}.el-col-md-pull-16{position:relative;right:66.66667%}.el-col-md-push-16{position:relative;left:66.66667%}.el-col-md-17{width:70.83333%}.el-col-md-offset-17{margin-left:70.83333%}.el-col-md-pull-17{position:relative;right:70.83333%}.el-col-md-push-17{position:relative;left:70.83333%}.el-col-md-18{width:75%}.el-col-md-offset-18{margin-left:75%}.el-col-md-pull-18{position:relative;right:75%}.el-col-md-push-18{position:relative;left:75%}.el-col-md-19{width:79.16667%}.el-col-md-offset-19{margin-left:79.16667%}.el-col-md-pull-19{position:relative;right:79.16667%}.el-col-md-push-19{position:relative;left:79.16667%}.el-col-md-20{width:83.33333%}.el-col-md-offset-20{margin-left:83.33333%}.el-col-md-pull-20{position:relative;right:83.33333%}.el-col-md-push-20{position:relative;left:83.33333%}.el-col-md-21{width:87.5%}.el-col-md-offset-21{margin-left:87.5%}.el-col-md-pull-21{position:relative;right:87.5%}.el-col-md-push-21{position:relative;left:87.5%}.el-col-md-22{width:91.66667%}.el-col-md-offset-22{margin-left:91.66667%}.el-col-md-pull-22{position:relative;right:91.66667%}.el-col-md-push-22{position:relative;left:91.66667%}.el-col-md-23{width:95.83333%}.el-col-md-offset-23{margin-left:95.83333%}.el-col-md-pull-23{position:relative;right:95.83333%}.el-col-md-push-23{position:relative;left:95.83333%}.el-col-md-24{width:100%}.el-col-md-offset-24{margin-left:100%}.el-col-md-pull-24{position:relative;right:100%}.el-col-md-push-24{position:relative;left:100%}}@media only screen and (min-width:1200px){.el-col-lg-0{display:none;width:0%}.el-col-lg-offset-0{margin-left:0}.el-col-lg-pull-0{position:relative;right:0}.el-col-lg-push-0{position:relative;left:0}.el-col-lg-1{width:4.16667%}.el-col-lg-offset-1{margin-left:4.16667%}.el-col-lg-pull-1{position:relative;right:4.16667%}.el-col-lg-push-1{position:relative;left:4.16667%}.el-col-lg-2{width:8.33333%}.el-col-lg-offset-2{margin-left:8.33333%}.el-col-lg-pull-2{position:relative;right:8.33333%}.el-col-lg-push-2{position:relative;left:8.33333%}.el-col-lg-3{width:12.5%}.el-col-lg-offset-3{margin-left:12.5%}.el-col-lg-pull-3{position:relative;right:12.5%}.el-col-lg-push-3{position:relative;left:12.5%}.el-col-lg-4{width:16.66667%}.el-col-lg-offset-4{margin-left:16.66667%}.el-col-lg-pull-4{position:relative;right:16.66667%}.el-col-lg-push-4{position:relative;left:16.66667%}.el-col-lg-5{width:20.83333%}.el-col-lg-offset-5{margin-left:20.83333%}.el-col-lg-pull-5{position:relative;right:20.83333%}.el-col-lg-push-5{position:relative;left:20.83333%}.el-col-lg-6{width:25%}.el-col-lg-offset-6{margin-left:25%}.el-col-lg-pull-6{position:relative;right:25%}.el-col-lg-push-6{position:relative;left:25%}.el-col-lg-7{width:29.16667%}.el-col-lg-offset-7{margin-left:29.16667%}.el-col-lg-pull-7{position:relative;right:29.16667%}.el-col-lg-push-7{position:relative;left:29.16667%}.el-col-lg-8{width:33.33333%}.el-col-lg-offset-8{margin-left:33.33333%}.el-col-lg-pull-8{position:relative;right:33.33333%}.el-col-lg-push-8{position:relative;left:33.33333%}.el-col-lg-9{width:37.5%}.el-col-lg-offset-9{margin-left:37.5%}.el-col-lg-pull-9{position:relative;right:37.5%}.el-col-lg-push-9{position:relative;left:37.5%}.el-col-lg-10{width:41.66667%}.el-col-lg-offset-10{margin-left:41.66667%}.el-col-lg-pull-10{position:relative;right:41.66667%}.el-col-lg-push-10{position:relative;left:41.66667%}.el-col-lg-11{width:45.83333%}.el-col-lg-offset-11{margin-left:45.83333%}.el-col-lg-pull-11{position:relative;right:45.83333%}.el-col-lg-push-11{position:relative;left:45.83333%}.el-col-lg-12{width:50%}.el-col-lg-offset-12{margin-left:50%}.el-col-lg-pull-12{position:relative;right:50%}.el-col-lg-push-12{position:relative;left:50%}.el-col-lg-13{width:54.16667%}.el-col-lg-offset-13{margin-left:54.16667%}.el-col-lg-pull-13{position:relative;right:54.16667%}.el-col-lg-push-13{position:relative;left:54.16667%}.el-col-lg-14{width:58.33333%}.el-col-lg-offset-14{margin-left:58.33333%}.el-col-lg-pull-14{position:relative;right:58.33333%}.el-col-lg-push-14{position:relative;left:58.33333%}.el-col-lg-15{width:62.5%}.el-col-lg-offset-15{margin-left:62.5%}.el-col-lg-pull-15{position:relative;right:62.5%}.el-col-lg-push-15{position:relative;left:62.5%}.el-col-lg-16{width:66.66667%}.el-col-lg-offset-16{margin-left:66.66667%}.el-col-lg-pull-16{position:relative;right:66.66667%}.el-col-lg-push-16{position:relative;left:66.66667%}.el-col-lg-17{width:70.83333%}.el-col-lg-offset-17{margin-left:70.83333%}.el-col-lg-pull-17{position:relative;right:70.83333%}.el-col-lg-push-17{position:relative;left:70.83333%}.el-col-lg-18{width:75%}.el-col-lg-offset-18{margin-left:75%}.el-col-lg-pull-18{position:relative;right:75%}.el-col-lg-push-18{position:relative;left:75%}.el-col-lg-19{width:79.16667%}.el-col-lg-offset-19{margin-left:79.16667%}.el-col-lg-pull-19{position:relative;right:79.16667%}.el-col-lg-push-19{position:relative;left:79.16667%}.el-col-lg-20{width:83.33333%}.el-col-lg-offset-20{margin-left:83.33333%}.el-col-lg-pull-20{position:relative;right:83.33333%}.el-col-lg-push-20{position:relative;left:83.33333%}.el-col-lg-21{width:87.5%}.el-col-lg-offset-21{margin-left:87.5%}.el-col-lg-pull-21{position:relative;right:87.5%}.el-col-lg-push-21{position:relative;left:87.5%}.el-col-lg-22{width:91.66667%}.el-col-lg-offset-22{margin-left:91.66667%}.el-col-lg-pull-22{position:relative;right:91.66667%}.el-col-lg-push-22{position:relative;left:91.66667%}.el-col-lg-23{width:95.83333%}.el-col-lg-offset-23{margin-left:95.83333%}.el-col-lg-pull-23{position:relative;right:95.83333%}.el-col-lg-push-23{position:relative;left:95.83333%}.el-col-lg-24{width:100%}.el-col-lg-offset-24{margin-left:100%}.el-col-lg-pull-24{position:relative;right:100%}.el-col-lg-push-24{position:relative;left:100%}}@media only screen and (min-width:1920px){.el-col-xl-0{display:none;width:0%}.el-col-xl-offset-0{margin-left:0}.el-col-xl-pull-0{position:relative;right:0}.el-col-xl-push-0{position:relative;left:0}.el-col-xl-1{width:4.16667%}.el-col-xl-offset-1{margin-left:4.16667%}.el-col-xl-pull-1{position:relative;right:4.16667%}.el-col-xl-push-1{position:relative;left:4.16667%}.el-col-xl-2{width:8.33333%}.el-col-xl-offset-2{margin-left:8.33333%}.el-col-xl-pull-2{position:relative;right:8.33333%}.el-col-xl-push-2{position:relative;left:8.33333%}.el-col-xl-3{width:12.5%}.el-col-xl-offset-3{margin-left:12.5%}.el-col-xl-pull-3{position:relative;right:12.5%}.el-col-xl-push-3{position:relative;left:12.5%}.el-col-xl-4{width:16.66667%}.el-col-xl-offset-4{margin-left:16.66667%}.el-col-xl-pull-4{position:relative;right:16.66667%}.el-col-xl-push-4{position:relative;left:16.66667%}.el-col-xl-5{width:20.83333%}.el-col-xl-offset-5{margin-left:20.83333%}.el-col-xl-pull-5{position:relative;right:20.83333%}.el-col-xl-push-5{position:relative;left:20.83333%}.el-col-xl-6{width:25%}.el-col-xl-offset-6{margin-left:25%}.el-col-xl-pull-6{position:relative;right:25%}.el-col-xl-push-6{position:relative;left:25%}.el-col-xl-7{width:29.16667%}.el-col-xl-offset-7{margin-left:29.16667%}.el-col-xl-pull-7{position:relative;right:29.16667%}.el-col-xl-push-7{position:relative;left:29.16667%}.el-col-xl-8{width:33.33333%}.el-col-xl-offset-8{margin-left:33.33333%}.el-col-xl-pull-8{position:relative;right:33.33333%}.el-col-xl-push-8{position:relative;left:33.33333%}.el-col-xl-9{width:37.5%}.el-col-xl-offset-9{margin-left:37.5%}.el-col-xl-pull-9{position:relative;right:37.5%}.el-col-xl-push-9{position:relative;left:37.5%}.el-col-xl-10{width:41.66667%}.el-col-xl-offset-10{margin-left:41.66667%}.el-col-xl-pull-10{position:relative;right:41.66667%}.el-col-xl-push-10{position:relative;left:41.66667%}.el-col-xl-11{width:45.83333%}.el-col-xl-offset-11{margin-left:45.83333%}.el-col-xl-pull-11{position:relative;right:45.83333%}.el-col-xl-push-11{position:relative;left:45.83333%}.el-col-xl-12{width:50%}.el-col-xl-offset-12{margin-left:50%}.el-col-xl-pull-12{position:relative;right:50%}.el-col-xl-push-12{position:relative;left:50%}.el-col-xl-13{width:54.16667%}.el-col-xl-offset-13{margin-left:54.16667%}.el-col-xl-pull-13{position:relative;right:54.16667%}.el-col-xl-push-13{position:relative;left:54.16667%}.el-col-xl-14{width:58.33333%}.el-col-xl-offset-14{margin-left:58.33333%}.el-col-xl-pull-14{position:relative;right:58.33333%}.el-col-xl-push-14{position:relative;left:58.33333%}.el-col-xl-15{width:62.5%}.el-col-xl-offset-15{margin-left:62.5%}.el-col-xl-pull-15{position:relative;right:62.5%}.el-col-xl-push-15{position:relative;left:62.5%}.el-col-xl-16{width:66.66667%}.el-col-xl-offset-16{margin-left:66.66667%}.el-col-xl-pull-16{position:relative;right:66.66667%}.el-col-xl-push-16{position:relative;left:66.66667%}.el-col-xl-17{width:70.83333%}.el-col-xl-offset-17{margin-left:70.83333%}.el-col-xl-pull-17{position:relative;right:70.83333%}.el-col-xl-push-17{position:relative;left:70.83333%}.el-col-xl-18{width:75%}.el-col-xl-offset-18{margin-left:75%}.el-col-xl-pull-18{position:relative;right:75%}.el-col-xl-push-18{position:relative;left:75%}.el-col-xl-19{width:79.16667%}.el-col-xl-offset-19{margin-left:79.16667%}.el-col-xl-pull-19{position:relative;right:79.16667%}.el-col-xl-push-19{position:relative;left:79.16667%}.el-col-xl-20{width:83.33333%}.el-col-xl-offset-20{margin-left:83.33333%}.el-col-xl-pull-20{position:relative;right:83.33333%}.el-col-xl-push-20{position:relative;left:83.33333%}.el-col-xl-21{width:87.5%}.el-col-xl-offset-21{margin-left:87.5%}.el-col-xl-pull-21{position:relative;right:87.5%}.el-col-xl-push-21{position:relative;left:87.5%}.el-col-xl-22{width:91.66667%}.el-col-xl-offset-22{margin-left:91.66667%}.el-col-xl-pull-22{position:relative;right:91.66667%}.el-col-xl-push-22{position:relative;left:91.66667%}.el-col-xl-23{width:95.83333%}.el-col-xl-offset-23{margin-left:95.83333%}.el-col-xl-pull-23{position:relative;right:95.83333%}.el-col-xl-push-23{position:relative;left:95.83333%}.el-col-xl-24{width:100%}.el-col-xl-offset-24{margin-left:100%}.el-col-xl-pull-24{position:relative;right:100%}.el-col-xl-push-24{position:relative;left:100%}}@-webkit-keyframes progress{0%{background-position:0 0}100%{background-position:32px 0}}.el-upload{display:inline-block;text-align:center;cursor:pointer;outline:0}.el-upload__input{display:none}.el-upload__tip{font-size:12px;color:#606266;margin-top:7px}.el-upload iframe{position:absolute;z-index:-1;top:0;left:0;opacity:0;filter:alpha(opacity=0)}.el-upload--picture-card{background-color:#fbfdff;border:1px dashed #c0ccda;border-radius:6px;box-sizing:border-box;width:148px;height:148px;line-height:146px;vertical-align:top}.el-upload--picture-card i{font-size:28px;color:#8c939d}.el-upload--picture-card:hover,.el-upload:focus{border-color:#409EFF;color:#409EFF}.el-upload:focus .el-upload-dragger{border-color:#409EFF}.el-upload-dragger{background-color:#fff;border:1px dashed #d9d9d9;border-radius:6px;box-sizing:border-box;width:360px;height:180px;text-align:center;position:relative;overflow:hidden}.el-upload-dragger .el-icon-upload{font-size:67px;color:#C0C4CC;margin:40px 0 16px;line-height:50px}.el-upload-dragger+.el-upload__tip{text-align:center}.el-upload-dragger~.el-upload__files{border-top:1px solid #DCDFE6;margin-top:7px;padding-top:5px}.el-upload-dragger .el-upload__text{color:#606266;font-size:14px;text-align:center}.el-upload-dragger .el-upload__text em{color:#409EFF;font-style:normal}.el-upload-dragger:hover{border-color:#409EFF}.el-upload-dragger.is-dragover{background-color:rgba(32,159,255,.06);border:2px dashed #409EFF}.el-upload-list{margin:0;padding:0;list-style:none}.el-upload-list__item{-webkit-transition:all .5s cubic-bezier(.55,0,.1,1);transition:all .5s cubic-bezier(.55,0,.1,1);font-size:14px;color:#606266;line-height:1.8;margin-top:5px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;width:100%}.el-upload-list__item .el-progress{position:absolute;top:20px;width:100%}.el-upload-list__item .el-progress__text{position:absolute;right:0;top:-13px}.el-upload-list__item .el-progress-bar{margin-right:0;padding-right:0}.el-upload-list__item:first-child{margin-top:10px}.el-upload-list__item .el-icon-upload-success{color:#67C23A}.el-upload-list__item .el-icon-close{display:none;position:absolute;top:5px;right:5px;cursor:pointer;opacity:.75;color:#606266}.el-upload-list__item .el-icon-close:hover{opacity:1}.el-upload-list__item .el-icon-close-tip{display:none;position:absolute;top:5px;right:5px;font-size:12px;cursor:pointer;opacity:1;color:#409EFF}.el-upload-list__item:hover{background-color:#F5F7FA}.el-upload-list__item:hover .el-icon-close{display:inline-block}.el-upload-list__item:hover .el-progress__text{display:none}.el-upload-list__item.is-success .el-upload-list__item-status-label{display:block}.el-upload-list__item.is-success .el-upload-list__item-name:focus,.el-upload-list__item.is-success .el-upload-list__item-name:hover{color:#409EFF;cursor:pointer}.el-upload-list__item.is-success:focus:not(:hover) .el-icon-close-tip{display:inline-block}.el-upload-list__item.is-success:active .el-icon-close-tip,.el-upload-list__item.is-success:focus .el-upload-list__item-status-label,.el-upload-list__item.is-success:hover .el-upload-list__item-status-label,.el-upload-list__item.is-success:not(.focusing):focus .el-icon-close-tip{display:none}.el-upload-list.is-disabled .el-upload-list__item:hover .el-upload-list__item-status-label{display:block}.el-upload-list__item-name{color:#606266;display:block;margin-right:40px;overflow:hidden;padding-left:4px;text-overflow:ellipsis;-webkit-transition:color .3s;transition:color .3s;white-space:nowrap}.el-upload-list__item-name [class^=el-icon]{height:100%;margin-right:7px;color:#909399;line-height:inherit}.el-upload-list__item-status-label{position:absolute;right:5px;top:0;line-height:inherit;display:none}.el-upload-list__item-delete{position:absolute;right:10px;top:0;font-size:12px;color:#606266;display:none}.el-upload-list__item-delete:hover{color:#409EFF}.el-upload-list--picture-card{margin:0;display:inline;vertical-align:top}.el-upload-list--picture-card .el-upload-list__item{overflow:hidden;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;width:148px;height:148px;margin:0 8px 8px 0;display:inline-block}.el-upload-list--picture-card .el-upload-list__item .el-icon-check,.el-upload-list--picture-card .el-upload-list__item .el-icon-circle-check{color:#FFF}.el-upload-list--picture-card .el-upload-list__item .el-icon-close,.el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label{display:none}.el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture-card .el-upload-list__item-name{display:none}.el-upload-list--picture-card .el-upload-list__item-thumbnail{width:100%;height:100%}.el-upload-list--picture-card .el-upload-list__item-status-label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 0 1pc 1px rgba(0,0,0,.2);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.el-upload-list--picture-card .el-upload-list__item-status-label i{font-size:12px;margin-top:11px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.el-upload-list--picture-card .el-upload-list__item-actions{position:absolute;width:100%;height:100%;left:0;top:0;cursor:default;text-align:center;color:#fff;opacity:0;font-size:20px;background-color:rgba(0,0,0,.5);-webkit-transition:opacity .3s;transition:opacity .3s}.el-upload-list--picture-card .el-upload-list__item-actions::after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-upload-list--picture-card .el-upload-list__item-actions span{display:none;cursor:pointer}.el-upload-list--picture-card .el-upload-list__item-actions span+span{margin-left:15px}.el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete{position:static;font-size:inherit;color:inherit}.el-upload-list--picture-card .el-upload-list__item-actions:hover{opacity:1}.el-upload-list--picture-card .el-upload-list__item-actions:hover span{display:inline-block}.el-upload-list--picture-card .el-progress{top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);bottom:auto;width:126px}.el-upload-list--picture-card .el-progress .el-progress__text{top:50%}.el-upload-list--picture .el-upload-list__item{overflow:hidden;z-index:0;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;margin-top:10px;padding:10px 10px 10px 90px;height:92px}.el-upload-list--picture .el-upload-list__item .el-icon-check,.el-upload-list--picture .el-upload-list__item .el-icon-circle-check{color:#FFF}.el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label{background:0 0;-webkit-box-shadow:none;box-shadow:none;top:-2px;right:-12px}.el-upload-list--picture .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name{line-height:70px;margin-top:0}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i{display:none}.el-upload-list--picture .el-upload-list__item-thumbnail{vertical-align:middle;display:inline-block;width:70px;height:70px;float:left;position:relative;z-index:1;margin-left:-80px;background-color:#FFF}.el-upload-list--picture .el-upload-list__item-name{display:block;margin-top:20px}.el-upload-list--picture .el-upload-list__item-name i{font-size:70px;line-height:1;position:absolute;left:9px;top:10px}.el-upload-list--picture .el-upload-list__item-status-label{position:absolute;right:-17px;top:-7px;width:46px;height:26px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 1px 1px #ccc;box-shadow:0 1px 1px #ccc}.el-upload-list--picture .el-upload-list__item-status-label i{font-size:12px;margin-top:12px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.el-upload-list--picture .el-progress{position:relative;top:-7px}.el-upload-cover{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;z-index:10;cursor:default}.el-upload-cover::after{display:inline-block;height:100%;vertical-align:middle}.el-upload-cover img{display:block;width:100%;height:100%}.el-upload-cover__label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 0 1pc 1px rgba(0,0,0,.2);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.el-upload-cover__label i{font-size:12px;margin-top:11px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);color:#fff}.el-upload-cover__progress{display:inline-block;vertical-align:middle;position:static;width:243px}.el-upload-cover__progress+.el-upload__inner{opacity:0}.el-upload-cover__content{position:absolute;top:0;left:0;width:100%;height:100%}.el-upload-cover__interact{position:absolute;bottom:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.72);text-align:center}.el-upload-cover__interact .btn{display:inline-block;color:#FFF;font-size:14px;cursor:pointer;vertical-align:middle;-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);margin-top:60px}.el-upload-cover__interact .btn span{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.el-upload-cover__interact .btn:not(:first-child){margin-left:35px}.el-upload-cover__interact .btn:hover{-webkit-transform:translateY(-13px);transform:translateY(-13px)}.el-upload-cover__interact .btn:hover span{opacity:1}.el-upload-cover__interact .btn i{color:#FFF;display:block;font-size:24px;line-height:inherit;margin:0 auto 5px}.el-upload-cover__title{position:absolute;bottom:0;left:0;background-color:#FFF;height:36px;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:400;text-align:left;padding:0 10px;margin:0;line-height:36px;font-size:14px;color:#303133}.el-upload-cover+.el-upload__inner{opacity:0;position:relative;z-index:1}.el-progress{position:relative;line-height:1}.el-progress__text{font-size:14px;color:#606266;display:inline-block;vertical-align:middle;margin-left:10px;line-height:1}.el-progress__text i{vertical-align:middle;display:block}.el-progress--circle,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{position:absolute;top:50%;left:0;width:100%;text-align:center;margin:0;-webkit-transform:translate(0,-50%);transform:translate(0,-50%)}.el-progress--circle .el-progress__text i,.el-progress--dashboard .el-progress__text i{vertical-align:middle;display:inline-block}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{padding-right:0;margin-right:0;display:block}.el-progress-bar,.el-progress-bar__inner::after,.el-progress-bar__innerText,.el-spinner{display:inline-block;vertical-align:middle}.el-progress--text-inside .el-progress-bar{padding-right:0;margin-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:#67C23A}.el-progress.is-success .el-progress__text{color:#67C23A}.el-progress.is-warning .el-progress-bar__inner{background-color:#E6A23C}.el-progress.is-warning .el-progress__text{color:#E6A23C}.el-progress.is-exception .el-progress-bar__inner{background-color:#F56C6C}.el-progress.is-exception .el-progress__text{color:#F56C6C}.el-progress-bar{padding-right:50px;width:100%;margin-right:-55px;-webkit-box-sizing:border-box;box-sizing:border-box}.el-progress-bar__outer{height:6px;border-radius:100px;background-color:#EBEEF5;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{position:absolute;left:0;top:0;height:100%;background-color:#409EFF;text-align:right;border-radius:100px;line-height:1;white-space:nowrap;-webkit-transition:width .6s ease;transition:width .6s ease}.el-card,.el-message{border-radius:4px;overflow:hidden}.el-progress-bar__inner::after{height:100%}.el-progress-bar__innerText{color:#FFF;font-size:12px;margin:0 5px}@keyframes progress{0%{background-position:0 0}100%{background-position:32px 0}}.el-time-spinner{width:100%;white-space:nowrap}.el-spinner-inner{-webkit-animation:rotate 2s linear infinite;animation:rotate 2s linear infinite;width:50px;height:50px}.el-spinner-inner .path{stroke:#ececec;stroke-linecap:round;-webkit-animation:dash 1.5s ease-in-out infinite;animation:dash 1.5s ease-in-out infinite}@-webkit-keyframes rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}100%{stroke-dasharray:90,150;stroke-dashoffset:-124}}@keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}100%{stroke-dasharray:90,150;stroke-dashoffset:-124}}.el-message{min-width:380px;-webkit-box-sizing:border-box;box-sizing:border-box;border-width:1px;border-style:solid;border-color:#EBEEF5;position:fixed;left:50%;top:20px;-webkit-transform:translateX(-50%);transform:translateX(-50%);background-color:#edf2fc;-webkit-transition:opacity .3s,top .4s,-webkit-transform .4s;transition:opacity .3s,top .4s,-webkit-transform .4s;transition:opacity .3s,transform .4s,top .4s;transition:opacity .3s,transform .4s,top .4s,-webkit-transform .4s;padding:15px 15px 15px 20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-message.is-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-message.is-closable .el-message__content{padding-right:16px}.el-message p{margin:0}.el-message--info .el-message__content{color:#909399}.el-message--success{background-color:#f0f9eb;border-color:#e1f3d8}.el-message--success .el-message__content{color:#67C23A}.el-message--warning{background-color:#fdf6ec;border-color:#faecd8}.el-message--warning .el-message__content{color:#E6A23C}.el-message--error{background-color:#fef0f0;border-color:#fde2e2}.el-message--error .el-message__content{color:#F56C6C}.el-message__icon{margin-right:10px}.el-message__content{padding:0;font-size:14px;line-height:1}.el-message__closeBtn{position:absolute;top:50%;right:15px;-webkit-transform:translateY(-50%);transform:translateY(-50%);cursor:pointer;color:#C0C4CC;font-size:16px}.el-message__closeBtn:hover{color:#909399}.el-message .el-icon-success{color:#67C23A}.el-message .el-icon-error{color:#F56C6C}.el-message .el-icon-info{color:#909399}.el-message .el-icon-warning{color:#E6A23C}.el-message-fade-enter,.el-message-fade-leave-active{opacity:0;-webkit-transform:translate(-50%,-100%);transform:translate(-50%,-100%)}.el-badge{position:relative;vertical-align:middle;display:inline-block}.el-badge__content{background-color:#F56C6C;border-radius:10px;color:#FFF;display:inline-block;font-size:12px;height:18px;line-height:18px;padding:0 6px;text-align:center;white-space:nowrap;border:1px solid #FFF}.el-badge__content.is-fixed{position:absolute;top:0;right:10px;-webkit-transform:translateY(-50%) translateX(100%);transform:translateY(-50%) translateX(100%)}.el-rate__icon,.el-rate__item{position:relative;display:inline-block}.el-badge__content.is-fixed.is-dot{right:5px}.el-badge__content.is-dot{height:8px;width:8px;padding:0;right:0;border-radius:50%}.el-badge__content--primary{background-color:#409EFF}.el-badge__content--success{background-color:#67C23A}.el-badge__content--warning{background-color:#E6A23C}.el-badge__content--info{background-color:#909399}.el-badge__content--danger{background-color:#F56C6C}.el-card{border:1px solid #EBEEF5;background-color:#FFF;color:#303133;-webkit-transition:.3s;transition:.3s}.el-card.is-always-shadow,.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-card__header{padding:18px 20px;border-bottom:1px solid #EBEEF5;-webkit-box-sizing:border-box;box-sizing:border-box}.el-card__body{padding:20px}.el-rate{height:20px;line-height:1}.el-rate__item{font-size:0;vertical-align:middle}.el-rate__icon{font-size:18px;margin-right:6px;color:#C0C4CC;-webkit-transition:.3s;transition:.3s}.el-rate__decimal,.el-rate__icon .path2{position:absolute;top:0;left:0}.el-rate__icon.hover{-webkit-transform:scale(1.15);transform:scale(1.15)}.el-rate__decimal{display:inline-block;overflow:hidden}.el-step.is-vertical,.el-steps{display:-webkit-box;display:-ms-flexbox}.el-rate__text{font-size:14px;vertical-align:middle}.el-steps{display:flex}.el-steps--simple{padding:13px 8%;border-radius:4px;background:#F5F7FA}.el-steps--horizontal{white-space:nowrap}.el-steps--vertical{height:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column;flex-flow:column}.el-step{position:relative;-ms-flex-negative:1;flex-shrink:1}.el-step:last-of-type .el-step__line{display:none}.el-step:last-of-type.is-flex{-ms-flex-preferred-size:auto!important;flex-basis:auto!important;-ms-flex-negative:0;flex-shrink:0;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.el-step:last-of-type .el-step__description,.el-step:last-of-type .el-step__main{padding-right:0}.el-step__head{position:relative;width:100%}.el-step__head.is-process{color:#303133;border-color:#303133}.el-step__head.is-wait{color:#C0C4CC;border-color:#C0C4CC}.el-step__head.is-success{color:#67C23A;border-color:#67C23A}.el-step__head.is-error{color:#F56C6C;border-color:#F56C6C}.el-step__head.is-finish{color:#409EFF;border-color:#409EFF}.el-step__icon{position:relative;z-index:1;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:24px;height:24px;font-size:14px;-webkit-box-sizing:border-box;box-sizing:border-box;background:#FFF;-webkit-transition:.15s ease-out;transition:.15s ease-out}.el-step__icon.is-text{border-radius:50%;border:2px solid;border-color:inherit}.el-step__icon.is-icon{width:40px}.el-step__icon-inner{display:inline-block;user-select:none;text-align:center;font-weight:700;line-height:1;color:inherit}.el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:25px;font-weight:400}.el-step__icon-inner.is-status{-webkit-transform:translateY(1px);transform:translateY(1px)}.el-step__line{position:absolute;border-color:inherit;background-color:#C0C4CC}.el-step__line-inner{display:block;border-width:1px;border-style:solid;border-color:inherit;-webkit-transition:.15s ease-out;transition:.15s ease-out;-webkit-box-sizing:border-box;box-sizing:border-box;width:0;height:0}.el-step__main{white-space:normal;text-align:left}.el-step__title{font-size:16px;line-height:38px}.el-step__title.is-process{font-weight:700;color:#303133}.el-step__title.is-wait{color:#C0C4CC}.el-step__title.is-success{color:#67C23A}.el-step__title.is-error{color:#F56C6C}.el-step__title.is-finish{color:#409EFF}.el-step__description{padding-right:10%;margin-top:-5px;font-size:12px;line-height:20px;font-weight:400}.el-step__description.is-process{color:#303133}.el-step__description.is-wait{color:#C0C4CC}.el-step__description.is-success{color:#67C23A}.el-step__description.is-error{color:#F56C6C}.el-step__description.is-finish{color:#409EFF}.el-step.is-horizontal{display:inline-block}.el-step.is-horizontal .el-step__line{height:2px;top:11px;left:0;right:0}.el-step.is-vertical{display:flex}.el-step.is-vertical .el-step__head{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;width:24px}.el-step.is-vertical .el-step__main{padding-left:10px;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.el-step.is-vertical .el-step__title{line-height:24px;padding-bottom:8px}.el-step.is-vertical .el-step__line{width:2px;top:0;bottom:0;left:11px}.el-step.is-vertical .el-step__icon.is-icon{width:24px}.el-step.is-center .el-step__head,.el-step.is-center .el-step__main{text-align:center}.el-step.is-center .el-step__description{padding-left:20%;padding-right:20%}.el-step.is-center .el-step__line{left:50%;right:-50%}.el-step.is-simple{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-step.is-simple .el-step__head{width:auto;font-size:0;padding-right:10px}.el-step.is-simple .el-step__icon{background:0 0;width:16px;height:16px;font-size:12px}.el-step.is-simple .el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:18px}.el-step.is-simple .el-step__icon-inner.is-status{-webkit-transform:scale(.8) translateY(1px);transform:scale(.8) translateY(1px)}.el-step.is-simple .el-step__main{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.el-step.is-simple .el-step__title{font-size:16px;line-height:20px}.el-step.is-simple:not(:last-of-type) .el-step__title{max-width:50%;word-break:break-all}.el-step.is-simple .el-step__arrow{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-step.is-simple .el-step__arrow::after,.el-step.is-simple .el-step__arrow::before{content:'';display:inline-block;position:absolute;height:15px;width:1px;background:#C0C4CC}.el-step.is-simple .el-step__arrow::before{-webkit-transform:rotate(-45deg) translateY(-4px);transform:rotate(-45deg) translateY(-4px);-webkit-transform-origin:0 0;transform-origin:0 0}.el-step.is-simple .el-step__arrow::after{-webkit-transform:rotate(45deg) translateY(4px);transform:rotate(45deg) translateY(4px);-webkit-transform-origin:100% 100%;transform-origin:100% 100%}.el-step.is-simple:last-of-type .el-step__arrow{display:none}.el-carousel{position:relative}.el-carousel--horizontal{overflow-x:hidden}.el-carousel--vertical{overflow-y:hidden}.el-carousel__container{position:relative;height:300px}.el-carousel__arrow{border:none;outline:0;padding:0;margin:0;height:36px;width:36px;cursor:pointer;-webkit-transition:.3s;transition:.3s;border-radius:50%;background-color:rgba(31,45,61,.11);color:#FFF;position:absolute;top:50%;z-index:10;-webkit-transform:translateY(-50%);transform:translateY(-50%);text-align:center;font-size:12px}.el-carousel__arrow--left{left:16px}.el-carousel__arrow--right{right:16px}.el-carousel__arrow:hover{background-color:rgba(31,45,61,.23)}.el-carousel__arrow i{cursor:pointer}.el-carousel__indicators{position:absolute;list-style:none;margin:0;padding:0;z-index:2}.el-carousel__indicators--horizontal{bottom:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.el-carousel__indicators--vertical{right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-carousel__indicators--outside{bottom:26px;text-align:center;position:static;-webkit-transform:none;transform:none}.el-carousel__indicators--outside .el-carousel__indicator:hover button{opacity:.64}.el-carousel__indicators--outside button{background-color:#C0C4CC;opacity:.24}.el-carousel__indicators--labels{left:0;right:0;-webkit-transform:none;transform:none;text-align:center}.el-carousel__indicators--labels .el-carousel__button{height:auto;width:auto;padding:2px 18px;font-size:12px}.el-carousel__indicators--labels .el-carousel__indicator{padding:6px 4px}.el-carousel__indicator{background-color:transparent;cursor:pointer}.el-carousel__indicator:hover button{opacity:.72}.el-carousel__indicator--horizontal{display:inline-block;padding:12px 4px}.el-carousel__indicator--vertical{padding:4px 12px}.el-carousel__indicator--vertical .el-carousel__button{width:2px;height:15px}.el-carousel__indicator.is-active button{opacity:1}.el-carousel__button{display:block;opacity:.48;width:30px;height:2px;background-color:#FFF;border:none;outline:0;padding:0;margin:0;cursor:pointer;-webkit-transition:.3s;transition:.3s}.el-carousel__item,.el-carousel__mask{height:100%;top:0;left:0;position:absolute}.carousel-arrow-left-enter,.carousel-arrow-left-leave-active{-webkit-transform:translateY(-50%) translateX(-10px);transform:translateY(-50%) translateX(-10px);opacity:0}.carousel-arrow-right-enter,.carousel-arrow-right-leave-active{-webkit-transform:translateY(-50%) translateX(10px);transform:translateY(-50%) translateX(10px);opacity:0}.el-carousel__item{width:100%;display:inline-block;overflow:hidden;z-index:0}.el-carousel__item.is-active{z-index:2}.el-carousel__item.is-animating{-webkit-transition:-webkit-transform .4s ease-in-out;transition:-webkit-transform .4s ease-in-out;transition:transform .4s ease-in-out;transition:transform .4s ease-in-out,-webkit-transform .4s ease-in-out}.el-carousel__item--card{width:50%;-webkit-transition:-webkit-transform .4s ease-in-out;transition:-webkit-transform .4s ease-in-out;transition:transform .4s ease-in-out;transition:transform .4s ease-in-out,-webkit-transform .4s ease-in-out}.el-carousel__item--card.is-in-stage{cursor:pointer;z-index:1}.el-carousel__item--card.is-in-stage.is-hover .el-carousel__mask,.el-carousel__item--card.is-in-stage:hover .el-carousel__mask{opacity:.12}.el-carousel__item--card.is-active{z-index:2}.el-carousel__mask{width:100%;background-color:#FFF;opacity:.24;-webkit-transition:.2s;transition:.2s}.el-fade-in-enter,.el-fade-in-leave-active,.el-fade-in-linear-enter,.el-fade-in-linear-leave,.el-fade-in-linear-leave-active,.fade-in-linear-enter,.fade-in-linear-leave,.fade-in-linear-leave-active{opacity:0}.fade-in-linear-enter-active,.fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.el-fade-in-enter-active,.el-fade-in-leave-active{-webkit-transition:all .3s cubic-bezier(.55,0,.1,1);transition:all .3s cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{-webkit-transition:all .3s cubic-bezier(.55,0,.1,1);transition:all .3s cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter,.el-zoom-in-center-leave-active{opacity:0;-webkit-transform:scaleX(0);transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-webkit-transform-origin:center top;transform-origin:center top}.el-zoom-in-top-enter,.el-zoom-in-top-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-webkit-transform-origin:center bottom;transform-origin:center bottom}.el-zoom-in-bottom-enter,.el-zoom-in-bottom-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;-webkit-transform:scale(1,1);transform:scale(1,1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-webkit-transform-origin:top left;transform-origin:top left}.el-zoom-in-left-enter,.el-zoom-in-left-leave-active{opacity:0;-webkit-transform:scale(.45,.45);transform:scale(.45,.45)}.collapse-transition{-webkit-transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out;transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out}.horizontal-collapse-transition{-webkit-transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out;transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{-webkit-transition:all 1s;transition:all 1s}.el-list-enter,.el-list-leave-active{opacity:0;-webkit-transform:translateY(-30px);transform:translateY(-30px)}.el-opacity-transition{-webkit-transition:opacity .3s cubic-bezier(.55,0,.1,1);transition:opacity .3s cubic-bezier(.55,0,.1,1)}.el-collapse{border-top:1px solid #EBEEF5;border-bottom:1px solid #EBEEF5}.el-collapse-item.is-disabled .el-collapse-item__header{color:#bbb;cursor:not-allowed}.el-collapse-item__header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:48px;line-height:48px;background-color:#FFF;color:#303133;cursor:pointer;border-bottom:1px solid #EBEEF5;font-size:13px;font-weight:500;-webkit-transition:border-bottom-color .3s;transition:border-bottom-color .3s;outline:0}.el-collapse-item__arrow{margin:0 8px 0 auto;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;font-weight:300}.el-collapse-item__arrow.is-active{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-collapse-item__header.focusing:focus:not(:hover){color:#409EFF}.el-collapse-item__header.is-active{border-bottom-color:transparent}.el-collapse-item__wrap{will-change:height;background-color:#FFF;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;border-bottom:1px solid #EBEEF5}.el-cascader__tags,.el-tag{-webkit-box-sizing:border-box}.el-collapse-item__content{padding-bottom:25px;font-size:13px;color:#303133;line-height:1.769230769230769}.el-collapse-item:last-child{margin-bottom:-1px}.el-popper .popper__arrow,.el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03));filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.el-popper .popper__arrow::after{content:" ";border-width:6px}.el-popper[x-placement^=top]{margin-bottom:12px}.el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#EBEEF5;border-bottom-width:0}.el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#FFF;border-bottom-width:0}.el-popper[x-placement^=bottom]{margin-top:12px}.el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#EBEEF5}.el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#FFF}.el-popper[x-placement^=right]{margin-left:12px}.el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#EBEEF5;border-left-width:0}.el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#FFF;border-left-width:0}.el-popper[x-placement^=left]{margin-right:12px}.el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#EBEEF5}.el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#FFF}.el-tag{background-color:#ecf5ff;border-color:#d9ecff;display:inline-block;height:32px;padding:0 10px;line-height:30px;font-size:12px;color:#409EFF;border-width:1px;border-style:solid;border-radius:4px;box-sizing:border-box;white-space:nowrap}.el-tag.is-hit{border-color:#409EFF}.el-tag .el-tag__close{color:#409eff}.el-tag .el-tag__close:hover{color:#FFF;background-color:#409eff}.el-tag.el-tag--info{background-color:#f4f4f5;border-color:#e9e9eb;color:#909399}.el-tag.el-tag--info.is-hit{border-color:#909399}.el-tag.el-tag--info .el-tag__close{color:#909399}.el-tag.el-tag--info .el-tag__close:hover{color:#FFF;background-color:#909399}.el-tag.el-tag--success{background-color:#f0f9eb;border-color:#e1f3d8;color:#67c23a}.el-tag.el-tag--success.is-hit{border-color:#67C23A}.el-tag.el-tag--success .el-tag__close{color:#67c23a}.el-tag.el-tag--success .el-tag__close:hover{color:#FFF;background-color:#67c23a}.el-tag.el-tag--warning{background-color:#fdf6ec;border-color:#faecd8;color:#e6a23c}.el-tag.el-tag--warning.is-hit{border-color:#E6A23C}.el-tag.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag.el-tag--warning .el-tag__close:hover{color:#FFF;background-color:#e6a23c}.el-tag.el-tag--danger{background-color:#fef0f0;border-color:#fde2e2;color:#f56c6c}.el-tag.el-tag--danger.is-hit{border-color:#F56C6C}.el-tag.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag.el-tag--danger .el-tag__close:hover{color:#FFF;background-color:#f56c6c}.el-tag .el-icon-close{border-radius:50%;text-align:center;position:relative;cursor:pointer;font-size:12px;height:16px;width:16px;line-height:16px;vertical-align:middle;top:-1px;right:-5px}.el-tag .el-icon-close::before{display:block}.el-tag--dark{background-color:#409eff;border-color:#409eff;color:#fff}.el-tag--dark.is-hit{border-color:#409EFF}.el-tag--dark .el-tag__close{color:#fff}.el-tag--dark .el-tag__close:hover{color:#FFF;background-color:#66b1ff}.el-tag--dark.el-tag--info{background-color:#909399;border-color:#909399;color:#fff}.el-tag--dark.el-tag--info.is-hit{border-color:#909399}.el-tag--dark.el-tag--info .el-tag__close{color:#fff}.el-tag--dark.el-tag--info .el-tag__close:hover{color:#FFF;background-color:#a6a9ad}.el-tag--dark.el-tag--success{background-color:#67c23a;border-color:#67c23a;color:#fff}.el-tag--dark.el-tag--success.is-hit{border-color:#67C23A}.el-tag--dark.el-tag--success .el-tag__close{color:#fff}.el-tag--dark.el-tag--success .el-tag__close:hover{color:#FFF;background-color:#85ce61}.el-tag--dark.el-tag--warning{background-color:#e6a23c;border-color:#e6a23c;color:#fff}.el-tag--dark.el-tag--warning.is-hit{border-color:#E6A23C}.el-tag--dark.el-tag--warning .el-tag__close{color:#fff}.el-tag--dark.el-tag--warning .el-tag__close:hover{color:#FFF;background-color:#ebb563}.el-tag--dark.el-tag--danger{background-color:#f56c6c;border-color:#f56c6c;color:#fff}.el-tag--dark.el-tag--danger.is-hit{border-color:#F56C6C}.el-tag--dark.el-tag--danger .el-tag__close{color:#fff}.el-tag--dark.el-tag--danger .el-tag__close:hover{color:#FFF;background-color:#f78989}.el-tag--plain{background-color:#fff;border-color:#b3d8ff;color:#409eff}.el-tag--plain.is-hit{border-color:#409EFF}.el-tag--plain .el-tag__close{color:#409eff}.el-tag--plain .el-tag__close:hover{color:#FFF;background-color:#409eff}.el-tag--plain.el-tag--info{background-color:#fff;border-color:#d3d4d6;color:#909399}.el-tag--plain.el-tag--info.is-hit{border-color:#909399}.el-tag--plain.el-tag--info .el-tag__close{color:#909399}.el-tag--plain.el-tag--info .el-tag__close:hover{color:#FFF;background-color:#909399}.el-tag--plain.el-tag--success{background-color:#fff;border-color:#c2e7b0;color:#67c23a}.el-tag--plain.el-tag--success.is-hit{border-color:#67C23A}.el-tag--plain.el-tag--success .el-tag__close{color:#67c23a}.el-tag--plain.el-tag--success .el-tag__close:hover{color:#FFF;background-color:#67c23a}.el-tag--plain.el-tag--warning{background-color:#fff;border-color:#f5dab1;color:#e6a23c}.el-tag--plain.el-tag--warning.is-hit{border-color:#E6A23C}.el-tag--plain.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag--plain.el-tag--warning .el-tag__close:hover{color:#FFF;background-color:#e6a23c}.el-tag--plain.el-tag--danger{background-color:#fff;border-color:#fbc4c4;color:#f56c6c}.el-tag--plain.el-tag--danger.is-hit{border-color:#F56C6C}.el-tag--plain.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag--plain.el-tag--danger .el-tag__close:hover{color:#FFF;background-color:#f56c6c}.el-tag--medium{height:28px;line-height:26px}.el-tag--medium .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--small{height:24px;padding:0 8px;line-height:22px}.el-tag--small .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--mini{height:20px;padding:0 5px;line-height:19px}.el-tag--mini .el-icon-close{margin-left:-3px;-webkit-transform:scale(.7);transform:scale(.7)}.el-cascader{display:inline-block;position:relative;font-size:14px;line-height:40px}.el-cascader:not(.is-disabled):hover .el-input__inner{cursor:pointer;border-color:#C0C4CC}.el-cascader .el-input .el-input__inner:focus,.el-cascader .el-input.is-focus .el-input__inner{border-color:#409EFF}.el-cascader .el-input{cursor:pointer}.el-cascader .el-input .el-input__inner{text-overflow:ellipsis}.el-cascader .el-input .el-icon-arrow-down{-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;font-size:14px}.el-cascader .el-input .el-icon-arrow-down.is-reverse{-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg)}.el-cascader .el-input .el-icon-circle-close:hover{color:#909399}.el-cascader--medium{font-size:14px;line-height:36px}.el-cascader--small{font-size:13px;line-height:32px}.el-cascader--mini{font-size:12px;line-height:28px}.el-cascader.is-disabled .el-cascader__label{z-index:2;color:#C0C4CC}.el-cascader__dropdown{margin:5px 0;font-size:14px;background:#FFF;border:1px solid #E4E7ED;border-radius:4px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-cascader__tags{position:absolute;left:0;right:30px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;line-height:normal;text-align:left;box-sizing:border-box}.el-cascader__tags .el-tag{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:100%;margin:2px 0 2px 6px;text-overflow:ellipsis;background:#f0f2f5}.el-cascader__tags .el-tag:not(.is-hit){border-color:transparent}.el-cascader__tags .el-tag>span{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;text-overflow:ellipsis}.el-cascader__tags .el-tag .el-icon-close{-webkit-box-flex:0;-ms-flex:none;flex:none;background-color:#C0C4CC;color:#FFF}.el-cascader__tags .el-tag .el-icon-close:hover{background-color:#909399}.el-cascader__suggestion-panel{border-radius:4px}.el-cascader__suggestion-list{max-height:204px;margin:0;padding:6px 0;font-size:14px;color:#606266;text-align:center}.el-cascader__suggestion-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:34px;padding:0 15px;text-align:left;outline:0;cursor:pointer}.el-cascader__suggestion-item:focus,.el-cascader__suggestion-item:hover{background:#F5F7FA}.el-cascader__suggestion-item.is-checked{color:#409EFF;font-weight:700}.el-cascader__suggestion-item>span{margin-right:10px}.el-cascader__empty-text{margin:10px 0;color:#C0C4CC}.el-cascader__search-input{-webkit-box-flex:1;-ms-flex:1;flex:1;height:24px;min-width:60px;margin:2px 0 2px 15px;padding:0;color:#606266;border:none;outline:0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-cascader__search-input::-webkit-input-placeholder{color:#C0C4CC}.el-cascader__search-input:-ms-input-placeholder{color:#C0C4CC}.el-cascader__search-input::-ms-input-placeholder{color:#C0C4CC}.el-cascader__search-input::placeholder{color:#C0C4CC}.el-color-predefine{display:-webkit-box;display:-ms-flexbox;display:flex;font-size:12px;margin-top:8px;width:280px}.el-color-predefine__colors{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-wrap:wrap;flex-wrap:wrap}.el-color-predefine__color-selector{margin:0 0 8px 8px;width:20px;height:20px;border-radius:4px;cursor:pointer}.el-color-predefine__color-selector:nth-child(10n+1){margin-left:0}.el-color-predefine__color-selector.selected{-webkit-box-shadow:0 0 3px 2px #409EFF;box-shadow:0 0 3px 2px #409EFF}.el-color-predefine__color-selector>div{display:-webkit-box;display:-ms-flexbox;display:flex;height:100%;border-radius:3px}.el-color-predefine__color-selector.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-hue-slider{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;width:280px;height:12px;background-color:red;padding:0 2px}.el-color-hue-slider__bar{position:relative;background:-webkit-gradient(linear,left top,right top,from(red),color-stop(17%,#ff0),color-stop(33%,#0f0),color-stop(50%,#0ff),color-stop(67%,#00f),color-stop(83%,#f0f),to(red));background:linear-gradient(to right,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%);height:100%}.el-color-hue-slider__thumb{position:absolute;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;-webkit-box-shadow:0 0 2px rgba(0,0,0,.6);box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-hue-slider.is-vertical{width:12px;height:180px;padding:2px 0}.el-color-hue-slider.is-vertical .el-color-hue-slider__bar{background:-webkit-gradient(linear,left top,left bottom,from(red),color-stop(17%,#ff0),color-stop(33%,#0f0),color-stop(50%,#0ff),color-stop(67%,#00f),color-stop(83%,#f0f),to(red));background:linear-gradient(to bottom,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%)}.el-color-hue-slider.is-vertical .el-color-hue-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-svpanel{position:relative;width:280px;height:180px}.el-color-svpanel__black,.el-color-svpanel__white{position:absolute;top:0;left:0;right:0;bottom:0}.el-color-svpanel__white{background:-webkit-gradient(linear,left top,right top,from(#fff),to(rgba(255,255,255,0)));background:linear-gradient(to right,#fff,rgba(255,255,255,0))}.el-color-svpanel__black{background:-webkit-gradient(linear,left bottom,left top,from(#000),to(rgba(0,0,0,0)));background:linear-gradient(to top,#000,rgba(0,0,0,0))}.el-color-svpanel__cursor{position:absolute}.el-color-svpanel__cursor>div{cursor:head;width:4px;height:4px;-webkit-box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);border-radius:50%;-webkit-transform:translate(-2px,-2px);transform:translate(-2px,-2px)}.el-color-alpha-slider{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;width:280px;height:12px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-alpha-slider__bar{position:relative;background:-webkit-gradient(linear,left top,right top,from(rgba(255,255,255,0)),to(white));background:linear-gradient(to right,rgba(255,255,255,0) 0,#fff 100%);height:100%}.el-color-alpha-slider__thumb{position:absolute;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;-webkit-box-shadow:0 0 2px rgba(0,0,0,.6);box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-alpha-slider.is-vertical{width:20px;height:180px}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__bar{background:-webkit-gradient(linear,left top,left bottom,from(rgba(255,255,255,0)),to(white));background:linear-gradient(to bottom,rgba(255,255,255,0) 0,#fff 100%)}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-dropdown{width:300px}.el-color-dropdown__main-wrapper{margin-bottom:6px}.el-color-dropdown__main-wrapper::after{content:"";display:table;clear:both}.el-color-dropdown__btns{margin-top:6px;text-align:right}.el-color-dropdown__value{float:left;line-height:26px;font-size:12px;color:#000;width:160px}.el-color-dropdown__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-color-dropdown__btn[disabled]{color:#ccc;cursor:not-allowed}.el-color-dropdown__btn:hover{color:#409EFF;border-color:#409EFF}.el-color-dropdown__link-btn{cursor:pointer;color:#409EFF;text-decoration:none;padding:15px;font-size:12px}.el-color-dropdown__link-btn:hover{color:tint(#409EFF,20%)}.el-color-picker{display:inline-block;position:relative;line-height:normal;height:40px}.el-color-picker.is-disabled .el-color-picker__trigger{cursor:not-allowed}.el-color-picker--medium{height:36px}.el-color-picker--medium .el-color-picker__trigger{height:36px;width:36px}.el-color-picker--medium .el-color-picker__mask{height:34px;width:34px}.el-color-picker--small{height:32px}.el-color-picker--small .el-color-picker__trigger{height:32px;width:32px}.el-color-picker--small .el-color-picker__mask{height:30px;width:30px}.el-color-picker--small .el-color-picker__empty,.el-color-picker--small .el-color-picker__icon{-webkit-transform:translate3d(-50%,-50%,0) scale(.8);transform:translate3d(-50%,-50%,0) scale(.8)}.el-color-picker--mini{height:28px}.el-color-picker--mini .el-color-picker__trigger{height:28px;width:28px}.el-color-picker--mini .el-color-picker__mask{height:26px;width:26px}.el-color-picker--mini .el-color-picker__empty,.el-color-picker--mini .el-color-picker__icon{-webkit-transform:translate3d(-50%,-50%,0) scale(.8);transform:translate3d(-50%,-50%,0) scale(.8)}.el-color-picker__mask{height:38px;width:38px;border-radius:4px;position:absolute;top:1px;left:1px;z-index:1;cursor:not-allowed;background-color:rgba(255,255,255,.7)}.el-color-picker__trigger{display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;height:40px;width:40px;padding:4px;border:1px solid #e6e6e6;border-radius:4px;font-size:0;position:relative;cursor:pointer}.el-color-picker__color{position:relative;display:block;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid #999;border-radius:2px;width:100%;height:100%;text-align:center}.el-color-picker__color.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-picker__color-inner{position:absolute;left:0;top:0;right:0;bottom:0}.el-color-picker__empty,.el-color-picker__icon{top:50%;left:50%;font-size:12px;position:absolute}.el-color-picker__empty{color:#999;-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0)}.el-color-picker__icon{display:inline-block;width:100%;-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0);color:#FFF;text-align:center}.el-color-picker__panel{position:absolute;z-index:10;padding:6px;-webkit-box-sizing:content-box;box-sizing:content-box;background-color:#FFF;border:1px solid #EBEEF5;border-radius:4px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-textarea{position:relative;display:inline-block;width:100%;vertical-align:bottom;font-size:14px}.el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:inherit;color:#606266;background-color:#FFF;background-image:none;border:1px solid #DCDFE6;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.el-textarea__inner::-webkit-input-placeholder{color:#C0C4CC}.el-textarea__inner:-ms-input-placeholder{color:#C0C4CC}.el-textarea__inner::-ms-input-placeholder{color:#C0C4CC}.el-textarea__inner::placeholder{color:#C0C4CC}.el-textarea__inner:hover{border-color:#C0C4CC}.el-textarea__inner:focus{outline:0;border-color:#409EFF}.el-textarea .el-input__count{color:#909399;background:#FFF;position:absolute;font-size:12px;bottom:5px;right:10px}.el-textarea.is-disabled .el-textarea__inner{background-color:#F5F7FA;border-color:#E4E7ED;color:#C0C4CC;cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#C0C4CC}.el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder{color:#C0C4CC}.el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#C0C4CC}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:#C0C4CC}.el-textarea.is-exceed .el-textarea__inner{border-color:#F56C6C}.el-textarea.is-exceed .el-input__count{color:#F56C6C}.el-input{position:relative;font-size:14px;display:inline-block;width:100%}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.el-input::-webkit-scrollbar-corner{background:#fff}.el-input::-webkit-scrollbar-track{background:#fff}.el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.el-input .el-input__clear{color:#C0C4CC;font-size:14px;cursor:pointer;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1)}.el-input .el-input__clear:hover{color:#909399}.el-input .el-input__count{height:100%;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#909399;font-size:12px}.el-input .el-input__count .el-input__count-inner{background:#FFF;line-height:initial;display:inline-block;padding:0 5px}.el-input__inner{-webkit-appearance:none;background-color:#FFF;background-image:none;border-radius:4px;border:1px solid #DCDFE6;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;display:inline-block;font-size:inherit;height:40px;line-height:40px;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%}.el-input__prefix,.el-input__suffix{position:absolute;top:0;-webkit-transition:all .3s;height:100%;color:#C0C4CC;text-align:center}.el-input__inner::-webkit-input-placeholder{color:#C0C4CC}.el-input__inner:-ms-input-placeholder{color:#C0C4CC}.el-input__inner::-ms-input-placeholder{color:#C0C4CC}.el-input__inner::placeholder{color:#C0C4CC}.el-input__inner:hover{border-color:#C0C4CC}.el-input.is-active .el-input__inner,.el-input__inner:focus{border-color:#409EFF;outline:0}.el-input__suffix{right:5px;transition:all .3s}.el-input__suffix-inner{pointer-events:all}.el-input__prefix{left:5px;transition:all .3s}.el-input__icon{height:100%;width:25px;text-align:center;-webkit-transition:all .3s;transition:all .3s;line-height:40px}.el-input__icon:after{content:'';height:100%;width:0;display:inline-block;vertical-align:middle}.el-input__validateIcon{pointer-events:none}.el-input.is-disabled .el-input__inner{background-color:#F5F7FA;border-color:#E4E7ED;color:#C0C4CC;cursor:not-allowed}.el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#C0C4CC}.el-input.is-disabled .el-input__inner:-ms-input-placeholder{color:#C0C4CC}.el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#C0C4CC}.el-input.is-disabled .el-input__inner::placeholder{color:#C0C4CC}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-link,.el-transfer-panel__filter .el-icon-circle-close{cursor:pointer}.el-input.is-exceed .el-input__inner{border-color:#F56C6C}.el-input.is-exceed .el-input__suffix .el-input__count{color:#F56C6C}.el-input--suffix .el-input__inner{padding-right:30px}.el-input--prefix .el-input__inner{padding-left:30px}.el-input--medium{font-size:14px}.el-input--medium .el-input__inner{height:36px;line-height:36px}.el-input--medium .el-input__icon{line-height:36px}.el-input--small{font-size:13px}.el-input--small .el-input__inner{height:32px;line-height:32px}.el-input--small .el-input__icon{line-height:32px}.el-input--mini{font-size:12px}.el-input--mini .el-input__inner{height:28px;line-height:28px}.el-input--mini .el-input__icon{line-height:28px}.el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate;border-spacing:0}.el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.el-input-group__append,.el-input-group__prepend{background-color:#F5F7FA;color:#909399;vertical-align:middle;display:table-cell;position:relative;border:1px solid #DCDFE6;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.el-input-group--prepend .el-input__inner,.el-input-group__append{border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--append .el-input__inner,.el-input-group__prepend{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:0}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:-10px -20px}.el-input-group__append button.el-button,.el-input-group__append div.el-select .el-input__inner,.el-input-group__append div.el-select:hover .el-input__inner,.el-input-group__prepend button.el-button,.el-input-group__prepend div.el-select .el-input__inner,.el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{border-right:0}.el-input-group__append{border-left:0}.el-input-group--append .el-select .el-input.is-focus .el-input__inner,.el-input-group--prepend .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input__inner::-ms-clear{display:none;width:0;height:0}.el-transfer{font-size:14px}.el-transfer__buttons{display:inline-block;vertical-align:middle;padding:0 30px}.el-transfer__button{display:block;margin:0 auto;padding:10px;border-radius:50%;color:#FFF;background-color:#409EFF;font-size:0}.el-transfer-panel__item+.el-transfer-panel__item,.el-transfer__button [class*=el-icon-]+span{margin-left:0}.el-transfer__button.is-with-texts{border-radius:4px}.el-transfer__button.is-disabled,.el-transfer__button.is-disabled:hover{border:1px solid #DCDFE6;background-color:#F5F7FA;color:#C0C4CC}.el-transfer__button:first-child{margin-bottom:10px}.el-transfer__button:nth-child(2){margin:0}.el-transfer__button i,.el-transfer__button span{font-size:14px}.el-transfer-panel{border:1px solid #EBEEF5;border-radius:4px;overflow:hidden;background:#FFF;display:inline-block;vertical-align:middle;width:200px;max-height:100%;-webkit-box-sizing:border-box;box-sizing:border-box;position:relative}.el-transfer-panel__body{height:246px}.el-transfer-panel__body.is-with-footer{padding-bottom:40px}.el-transfer-panel__list{margin:0;padding:6px 0;list-style:none;height:246px;overflow:auto;-webkit-box-sizing:border-box;box-sizing:border-box}.el-transfer-panel__list.is-filterable{height:194px;padding-top:0}.el-transfer-panel__item{height:30px;line-height:30px;padding-left:15px;display:block!important}.el-transfer-panel__item.el-checkbox{color:#606266}.el-transfer-panel__item:hover{color:#409EFF}.el-transfer-panel__item.el-checkbox .el-checkbox__label{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;-webkit-box-sizing:border-box;box-sizing:border-box;padding-left:24px;line-height:30px}.el-transfer-panel__item .el-checkbox__input{position:absolute;top:8px}.el-transfer-panel__filter{text-align:center;margin:15px;-webkit-box-sizing:border-box;box-sizing:border-box;display:block;width:auto}.el-transfer-panel__filter .el-input__inner{height:32px;width:100%;font-size:12px;display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:16px;padding-right:10px;padding-left:30px}.el-transfer-panel__filter .el-input__icon{margin-left:5px}.el-transfer-panel .el-transfer-panel__header{height:40px;line-height:40px;background:#F5F7FA;margin:0;padding-left:15px;border-bottom:1px solid #EBEEF5;-webkit-box-sizing:border-box;box-sizing:border-box;color:#000}.el-transfer-panel .el-transfer-panel__header .el-checkbox{display:block;line-height:40px}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label{font-size:16px;color:#303133;font-weight:400}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label span{position:absolute;right:15px;color:#909399;font-size:12px;font-weight:400}.el-divider__text,.el-link{font-weight:500;font-size:14px}.el-transfer-panel .el-transfer-panel__footer{height:40px;background:#FFF;margin:0;padding:0;border-top:1px solid #EBEEF5;position:absolute;bottom:0;left:0;width:100%;z-index:1}.el-transfer-panel .el-transfer-panel__footer::after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-container,.el-timeline-item__node{display:-webkit-box;display:-ms-flexbox}.el-transfer-panel .el-transfer-panel__footer .el-checkbox{padding-left:20px;color:#606266}.el-transfer-panel .el-transfer-panel__empty{margin:0;height:30px;line-height:30px;padding:6px 15px 0;color:#909399;text-align:center}.el-transfer-panel .el-checkbox__label{padding-left:8px}.el-transfer-panel .el-checkbox__inner{height:14px;width:14px;border-radius:3px}.el-transfer-panel .el-checkbox__inner::after{height:6px;width:3px;left:4px}.el-container{display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-preferred-size:auto;flex-basis:auto;-webkit-box-sizing:border-box;box-sizing:border-box;min-width:0}.el-container.is-vertical,.el-drawer{-webkit-box-orient:vertical;-webkit-box-direction:normal}.el-aside,.el-header{-webkit-box-sizing:border-box}.el-container.is-vertical{-ms-flex-direction:column;flex-direction:column}.el-header{padding:0 20px;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}.el-aside{overflow:auto;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}.el-footer,.el-main{-webkit-box-sizing:border-box}.el-main{display:block;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-preferred-size:auto;flex-basis:auto;overflow:auto;box-sizing:border-box;padding:20px}.el-footer{padding:0 20px;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}.el-timeline{margin:0;font-size:14px;list-style:none}.el-timeline .el-timeline-item:last-child .el-timeline-item__tail{display:none}.el-timeline-item{position:relative;padding-bottom:20px}.el-timeline-item__wrapper{position:relative;padding-left:28px;top:-3px}.el-timeline-item__tail{position:absolute;left:4px;height:100%;border-left:2px solid #E4E7ED}.el-timeline-item__icon{color:#FFF;font-size:13px}.el-timeline-item__node{position:absolute;background-color:#E4E7ED;border-radius:50%;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-image__error,.el-timeline-item__dot{display:-webkit-box;display:-ms-flexbox}.el-timeline-item__node--normal{left:-1px;width:12px;height:12px}.el-timeline-item__node--large{left:-2px;width:14px;height:14px}.el-timeline-item__node--primary{background-color:#409EFF}.el-timeline-item__node--success{background-color:#67C23A}.el-timeline-item__node--warning{background-color:#E6A23C}.el-timeline-item__node--danger{background-color:#F56C6C}.el-timeline-item__node--info{background-color:#909399}.el-timeline-item__dot{position:absolute;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-timeline-item__content{color:#303133}.el-timeline-item__timestamp{color:#909399;line-height:1;font-size:13px}.el-timeline-item__timestamp.is-top{margin-bottom:8px;padding-top:4px}.el-timeline-item__timestamp.is-bottom{margin-top:8px}.el-link{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;vertical-align:middle;position:relative;text-decoration:none;outline:0;padding:0}.el-link.is-underline:hover:after{content:"";position:absolute;left:0;right:0;height:0;bottom:0;border-bottom:1px solid #409EFF}.el-link.el-link--default:after,.el-link.el-link--primary.is-underline:hover:after,.el-link.el-link--primary:after{border-color:#409EFF}.el-link.is-disabled{cursor:not-allowed}.el-link [class*=el-icon-]+span{margin-left:5px}.el-link.el-link--default{color:#606266}.el-link.el-link--default:hover{color:#409EFF}.el-link.el-link--default.is-disabled{color:#C0C4CC}.el-link.el-link--primary{color:#409EFF}.el-link.el-link--primary:hover{color:#66b1ff}.el-link.el-link--primary.is-disabled{color:#a0cfff}.el-link.el-link--danger.is-underline:hover:after,.el-link.el-link--danger:after{border-color:#F56C6C}.el-link.el-link--danger{color:#F56C6C}.el-link.el-link--danger:hover{color:#f78989}.el-link.el-link--danger.is-disabled{color:#fab6b6}.el-link.el-link--success.is-underline:hover:after,.el-link.el-link--success:after{border-color:#67C23A}.el-link.el-link--success{color:#67C23A}.el-link.el-link--success:hover{color:#85ce61}.el-link.el-link--success.is-disabled{color:#b3e19d}.el-link.el-link--warning.is-underline:hover:after,.el-link.el-link--warning:after{border-color:#E6A23C}.el-link.el-link--warning{color:#E6A23C}.el-link.el-link--warning:hover{color:#ebb563}.el-link.el-link--warning.is-disabled{color:#f3d19e}.el-link.el-link--info.is-underline:hover:after,.el-link.el-link--info:after{border-color:#909399}.el-link.el-link--info{color:#909399}.el-link.el-link--info:hover{color:#a6a9ad}.el-link.el-link--info.is-disabled{color:#c8c9cc}.el-divider{background-color:#DCDFE6;position:relative}.el-divider--horizontal{display:block;height:1px;width:100%;margin:24px 0}.el-divider--vertical{display:inline-block;width:1px;height:1em;margin:0 8px;vertical-align:middle;position:relative}.el-divider__text{position:absolute;background-color:#FFF;padding:0 20px;color:#303133}.el-image__error,.el-image__placeholder{background:#F5F7FA}.el-divider__text.is-left{left:20px;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-divider__text.is-center{left:50%;-webkit-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.el-divider__text.is-right{right:20px;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-image__error,.el-image__inner,.el-image__placeholder{width:100%;height:100%}.el-image{position:relative;display:inline-block;overflow:hidden}.el-image__inner{vertical-align:top}.el-image__inner--center{position:relative;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);display:block}.el-image__error{display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:14px;color:#C0C4CC;vertical-align:middle}.el-image__preview{cursor:pointer}.el-image-viewer__wrapper{position:fixed;top:0;right:0;bottom:0;left:0}.el-image-viewer__btn{position:absolute;z-index:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:50%;opacity:.8;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;user-select:none}.el-button,.el-checkbox{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.el-image-viewer__close{top:40px;right:40px;width:40px;height:40px;font-size:24px;color:#fff;background-color:#606266}.el-image-viewer__canvas{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-image-viewer__actions{left:50%;bottom:30px;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:282px;height:44px;padding:0 23px;background-color:#606266;border-color:#fff;border-radius:22px}.el-image-viewer__actions__inner{width:100%;height:100%;text-align:justify;cursor:default;font-size:23px;color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-pack:distribute;justify-content:space-around}.el-image-viewer__next,.el-image-viewer__prev{top:50%;width:44px;height:44px;font-size:24px;color:#fff;background-color:#606266;border-color:#fff}.el-image-viewer__prev{-webkit-transform:translateY(-50%);transform:translateY(-50%);left:40px}.el-image-viewer__next{-webkit-transform:translateY(-50%);transform:translateY(-50%);right:40px;text-indent:2px}.el-image-viewer__mask{position:absolute;width:100%;height:100%;top:0;left:0;opacity:.5;background:#000}.viewer-fade-enter-active{-webkit-animation:viewer-fade-in .3s;animation:viewer-fade-in .3s}.viewer-fade-leave-active{-webkit-animation:viewer-fade-out .3s;animation:viewer-fade-out .3s}@-webkit-keyframes viewer-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes viewer-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes viewer-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes viewer-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}.el-button{display:inline-block;line-height:1;white-space:nowrap;cursor:pointer;background:#FFF;border:1px solid #DCDFE6;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;-webkit-transition:.1s;transition:.1s;font-weight:500;padding:12px 20px;font-size:14px;border-radius:4px}.el-button+.el-button{margin-left:10px}.el-button:focus,.el-button:hover{color:#409EFF;border-color:#c6e2ff;background-color:#ecf5ff}.el-button:active{color:#3a8ee6;border-color:#3a8ee6;outline:0}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon-]+span{margin-left:5px}.el-button.is-plain:focus,.el-button.is-plain:hover{background:#FFF;border-color:#409EFF;color:#409EFF}.el-button.is-active,.el-button.is-plain:active{color:#3a8ee6;border-color:#3a8ee6}.el-button.is-plain:active{background:#FFF;outline:0}.el-button.is-disabled,.el-button.is-disabled:focus,.el-button.is-disabled:hover{color:#C0C4CC;cursor:not-allowed;background-image:none;background-color:#FFF;border-color:#EBEEF5}.el-button.is-disabled.el-button--text{background-color:transparent}.el-button.is-disabled.is-plain,.el-button.is-disabled.is-plain:focus,.el-button.is-disabled.is-plain:hover{background-color:#FFF;border-color:#EBEEF5;color:#C0C4CC}.el-button.is-loading{position:relative;pointer-events:none}.el-button.is-loading:before{pointer-events:none;content:'';position:absolute;left:-1px;top:-1px;right:-1px;bottom:-1px;border-radius:inherit;background-color:rgba(255,255,255,.35)}.el-button.is-round{border-radius:20px;padding:12px 23px}.el-button.is-circle{border-radius:50%;padding:12px}.el-button--primary{color:#FFF;background-color:#409EFF;border-color:#409EFF}.el-button--primary:focus,.el-button--primary:hover{background:#66b1ff;border-color:#66b1ff;color:#FFF}.el-button--primary.is-active,.el-button--primary:active{background:#3a8ee6;border-color:#3a8ee6;color:#FFF}.el-button--primary:active{outline:0}.el-button--primary.is-disabled,.el-button--primary.is-disabled:active,.el-button--primary.is-disabled:focus,.el-button--primary.is-disabled:hover{color:#FFF;background-color:#a0cfff;border-color:#a0cfff}.el-button--primary.is-plain{color:#409EFF;background:#ecf5ff;border-color:#b3d8ff}.el-button--primary.is-plain:focus,.el-button--primary.is-plain:hover{background:#409EFF;border-color:#409EFF;color:#FFF}.el-button--primary.is-plain:active{background:#3a8ee6;border-color:#3a8ee6;color:#FFF;outline:0}.el-button--primary.is-plain.is-disabled,.el-button--primary.is-plain.is-disabled:active,.el-button--primary.is-plain.is-disabled:focus,.el-button--primary.is-plain.is-disabled:hover{color:#8cc5ff;background-color:#ecf5ff;border-color:#d9ecff}.el-button--success{color:#FFF;background-color:#67C23A;border-color:#67C23A}.el-button--success:focus,.el-button--success:hover{background:#85ce61;border-color:#85ce61;color:#FFF}.el-button--success.is-active,.el-button--success:active{background:#5daf34;border-color:#5daf34;color:#FFF}.el-button--success:active{outline:0}.el-button--success.is-disabled,.el-button--success.is-disabled:active,.el-button--success.is-disabled:focus,.el-button--success.is-disabled:hover{color:#FFF;background-color:#b3e19d;border-color:#b3e19d}.el-button--success.is-plain{color:#67C23A;background:#f0f9eb;border-color:#c2e7b0}.el-button--success.is-plain:focus,.el-button--success.is-plain:hover{background:#67C23A;border-color:#67C23A;color:#FFF}.el-button--success.is-plain:active{background:#5daf34;border-color:#5daf34;color:#FFF;outline:0}.el-button--success.is-plain.is-disabled,.el-button--success.is-plain.is-disabled:active,.el-button--success.is-plain.is-disabled:focus,.el-button--success.is-plain.is-disabled:hover{color:#a4da89;background-color:#f0f9eb;border-color:#e1f3d8}.el-button--warning{color:#FFF;background-color:#E6A23C;border-color:#E6A23C}.el-button--warning:focus,.el-button--warning:hover{background:#ebb563;border-color:#ebb563;color:#FFF}.el-button--warning.is-active,.el-button--warning:active{background:#cf9236;border-color:#cf9236;color:#FFF}.el-button--warning:active{outline:0}.el-button--warning.is-disabled,.el-button--warning.is-disabled:active,.el-button--warning.is-disabled:focus,.el-button--warning.is-disabled:hover{color:#FFF;background-color:#f3d19e;border-color:#f3d19e}.el-button--warning.is-plain{color:#E6A23C;background:#fdf6ec;border-color:#f5dab1}.el-button--warning.is-plain:focus,.el-button--warning.is-plain:hover{background:#E6A23C;border-color:#E6A23C;color:#FFF}.el-button--warning.is-plain:active{background:#cf9236;border-color:#cf9236;color:#FFF;outline:0}.el-button--warning.is-plain.is-disabled,.el-button--warning.is-plain.is-disabled:active,.el-button--warning.is-plain.is-disabled:focus,.el-button--warning.is-plain.is-disabled:hover{color:#f0c78a;background-color:#fdf6ec;border-color:#faecd8}.el-button--danger{color:#FFF;background-color:#F56C6C;border-color:#F56C6C}.el-button--danger:focus,.el-button--danger:hover{background:#f78989;border-color:#f78989;color:#FFF}.el-button--danger.is-active,.el-button--danger:active{background:#dd6161;border-color:#dd6161;color:#FFF}.el-button--danger:active{outline:0}.el-button--danger.is-disabled,.el-button--danger.is-disabled:active,.el-button--danger.is-disabled:focus,.el-button--danger.is-disabled:hover{color:#FFF;background-color:#fab6b6;border-color:#fab6b6}.el-button--danger.is-plain{color:#F56C6C;background:#fef0f0;border-color:#fbc4c4}.el-button--danger.is-plain:focus,.el-button--danger.is-plain:hover{background:#F56C6C;border-color:#F56C6C;color:#FFF}.el-button--danger.is-plain:active{background:#dd6161;border-color:#dd6161;color:#FFF;outline:0}.el-button--danger.is-plain.is-disabled,.el-button--danger.is-plain.is-disabled:active,.el-button--danger.is-plain.is-disabled:focus,.el-button--danger.is-plain.is-disabled:hover{color:#f9a7a7;background-color:#fef0f0;border-color:#fde2e2}.el-button--info{color:#FFF;background-color:#909399;border-color:#909399}.el-button--info:focus,.el-button--info:hover{background:#a6a9ad;border-color:#a6a9ad;color:#FFF}.el-button--info.is-active,.el-button--info:active{background:#82848a;border-color:#82848a;color:#FFF}.el-button--info:active{outline:0}.el-button--info.is-disabled,.el-button--info.is-disabled:active,.el-button--info.is-disabled:focus,.el-button--info.is-disabled:hover{color:#FFF;background-color:#c8c9cc;border-color:#c8c9cc}.el-button--info.is-plain{color:#909399;background:#f4f4f5;border-color:#d3d4d6}.el-button--info.is-plain:focus,.el-button--info.is-plain:hover{background:#909399;border-color:#909399;color:#FFF}.el-button--info.is-plain:active{background:#82848a;border-color:#82848a;color:#FFF;outline:0}.el-button--info.is-plain.is-disabled,.el-button--info.is-plain.is-disabled:active,.el-button--info.is-plain.is-disabled:focus,.el-button--info.is-plain.is-disabled:hover{color:#bcbec2;background-color:#f4f4f5;border-color:#e9e9eb}.el-button--text,.el-button--text.is-disabled,.el-button--text.is-disabled:focus,.el-button--text.is-disabled:hover,.el-button--text:active{border-color:transparent}.el-button--medium{padding:10px 20px;font-size:14px;border-radius:4px}.el-button--mini,.el-button--small{font-size:12px;border-radius:3px}.el-button--medium.is-round{padding:10px 20px}.el-button--medium.is-circle{padding:10px}.el-button--small,.el-button--small.is-round{padding:9px 15px}.el-button--small.is-circle{padding:9px}.el-button--mini,.el-button--mini.is-round{padding:7px 15px}.el-button--mini.is-circle{padding:7px}.el-button--text{color:#409EFF;background:0 0;padding-left:0;padding-right:0}.el-button--text:focus,.el-button--text:hover{color:#66b1ff;border-color:transparent;background-color:transparent}.el-button--text:active{color:#3a8ee6;background-color:transparent}.el-button-group{display:inline-block;vertical-align:middle}.el-button-group::after,.el-button-group::before{display:table;content:""}.el-button-group::after{clear:both}.el-button-group>.el-button{float:left;position:relative}.el-button-group>.el-button+.el-button{margin-left:0}.el-button-group>.el-button.is-disabled{z-index:1}.el-button-group>.el-button:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.el-button-group>.el-button:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.el-button-group>.el-button:first-child:last-child{border-radius:4px}.el-button-group>.el-button:first-child:last-child.is-round{border-radius:20px}.el-button-group>.el-button:first-child:last-child.is-circle{border-radius:50%}.el-button-group>.el-button:not(:first-child):not(:last-child){border-radius:0}.el-button-group>.el-button:not(:last-child){margin-right:-1px}.el-button-group>.el-button.is-active,.el-button-group>.el-button:active,.el-button-group>.el-button:focus,.el-button-group>.el-button:hover{z-index:1}.el-button-group>.el-dropdown>.el-button{border-top-left-radius:0;border-bottom-left-radius:0;border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-calendar{background-color:#fff}.el-calendar__header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:12px 20px;border-bottom:1px solid #EBEEF5}.el-backtop,.el-page-header{display:-webkit-box;display:-ms-flexbox}.el-calendar__title{color:#000;-ms-flex-item-align:center;align-self:center}.el-calendar__body{padding:12px 20px 35px}.el-calendar-table{table-layout:fixed;width:100%}.el-calendar-table thead th{padding:12px 0;color:#606266;font-weight:400}.el-calendar-table:not(.is-range) td.next,.el-calendar-table:not(.is-range) td.prev{color:#C0C4CC}.el-backtop,.el-calendar-table td.is-today{color:#409EFF}.el-calendar-table td{border-bottom:1px solid #EBEEF5;border-right:1px solid #EBEEF5;vertical-align:top;-webkit-transition:background-color .2s ease;transition:background-color .2s ease}.el-calendar-table td.is-selected{background-color:#F2F8FE}.el-calendar-table tr:first-child td{border-top:1px solid #EBEEF5}.el-calendar-table tr td:first-child{border-left:1px solid #EBEEF5}.el-calendar-table tr.el-calendar-table__row--hide-border td{border-top:none}.el-calendar-table .el-calendar-day{-webkit-box-sizing:border-box;box-sizing:border-box;padding:8px;height:85px}.el-calendar-table .el-calendar-day:hover{cursor:pointer;background-color:#F2F8FE}.el-backtop{position:fixed;background-color:#FFF;width:40px;height:40px;border-radius:50%;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:20px;-webkit-box-shadow:0 0 6px rgba(0,0,0,.12);box-shadow:0 0 6px rgba(0,0,0,.12);cursor:pointer;z-index:5}.el-backtop:hover{background-color:#F2F6FC}.el-page-header{display:flex;line-height:24px}.el-page-header__left{display:-webkit-box;display:-ms-flexbox;display:flex;cursor:pointer;margin-right:40px;position:relative}.el-page-header__left::after{content:"";position:absolute;width:1px;height:16px;right:-20px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);background-color:#DCDFE6}.el-checkbox,.el-checkbox__input{display:inline-block;position:relative;white-space:nowrap}.el-page-header__left .el-icon-back{font-size:18px;margin-right:6px;-ms-flex-item-align:center;align-self:center}.el-page-header__title{font-size:14px;font-weight:500}.el-page-header__content{font-size:18px;color:#303133}.el-checkbox{color:#606266;font-weight:500;font-size:14px;cursor:pointer;user-select:none;margin-right:30px}.el-checkbox-button__inner,.el-radio{font-weight:500;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.el-checkbox.is-bordered{padding:9px 20px 9px 10px;border-radius:4px;border:1px solid #DCDFE6;-webkit-box-sizing:border-box;box-sizing:border-box;line-height:normal;height:40px}.el-checkbox.is-bordered.is-checked{border-color:#409EFF}.el-checkbox.is-bordered.is-disabled{border-color:#EBEEF5;cursor:not-allowed}.el-checkbox.is-bordered+.el-checkbox.is-bordered{margin-left:10px}.el-checkbox.is-bordered.el-checkbox--medium{padding:7px 20px 7px 10px;border-radius:4px;height:36px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__label{line-height:17px;font-size:14px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__inner{height:14px;width:14px}.el-checkbox.is-bordered.el-checkbox--small{padding:5px 15px 5px 10px;border-radius:3px;height:32px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{line-height:15px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner::after{height:6px;width:2px}.el-checkbox.is-bordered.el-checkbox--mini{padding:3px 15px 3px 10px;border-radius:3px;height:28px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__label{line-height:12px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner::after{height:6px;width:2px}.el-checkbox__input{cursor:pointer;outline:0;line-height:1;vertical-align:middle}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:#edf2fc;border-color:#DCDFE6;cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner::after{cursor:not-allowed;border-color:#C0C4CC}.el-checkbox__input.is-disabled .el-checkbox__inner+.el-checkbox__label{cursor:not-allowed}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:#F2F6FC;border-color:#DCDFE6}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after{border-color:#C0C4CC}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:#F2F6FC;border-color:#DCDFE6}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner::before{background-color:#C0C4CC;border-color:#C0C4CC}.el-checkbox__input.is-checked .el-checkbox__inner,.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:#409EFF;border-color:#409EFF}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:#C0C4CC;cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner::after{-webkit-transform:rotate(45deg) scaleY(1);transform:rotate(45deg) scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:#409EFF}.el-checkbox__input.is-focus .el-checkbox__inner{border-color:#409EFF}.el-checkbox__input.is-indeterminate .el-checkbox__inner::before{content:'';position:absolute;display:block;background-color:#FFF;height:2px;-webkit-transform:scale(.5);transform:scale(.5);left:0;right:0;top:5px}.el-checkbox__input.is-indeterminate .el-checkbox__inner::after{display:none}.el-checkbox__inner{display:inline-block;position:relative;border:1px solid #DCDFE6;border-radius:2px;-webkit-box-sizing:border-box;box-sizing:border-box;width:14px;height:14px;background-color:#FFF;z-index:1;-webkit-transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46);transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46)}.el-checkbox__inner:hover{border-color:#409EFF}.el-checkbox__inner::after{-webkit-box-sizing:content-box;box-sizing:content-box;content:"";border:1px solid #FFF;border-left:0;border-top:0;height:7px;left:4px;position:absolute;top:1px;-webkit-transform:rotate(45deg) scaleY(0);transform:rotate(45deg) scaleY(0);width:3px;-webkit-transition:-webkit-transform .15s ease-in .05s;transition:-webkit-transform .15s ease-in .05s;transition:transform .15s ease-in .05s;transition:transform .15s ease-in .05s,-webkit-transform .15s ease-in .05s;-webkit-transform-origin:center;transform-origin:center}.el-checkbox__original{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;z-index:-1}.el-checkbox-button,.el-checkbox-button__inner{display:inline-block;position:relative}.el-checkbox__label{display:inline-block;padding-left:10px;line-height:19px;font-size:14px}.el-checkbox:last-of-type{margin-right:0}.el-checkbox-button__inner{line-height:1;white-space:nowrap;vertical-align:middle;cursor:pointer;background:#FFF;border:1px solid #DCDFE6;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);padding:12px 20px;font-size:14px;border-radius:0}.el-checkbox-button__inner.is-round{padding:12px 20px}.el-checkbox-button__inner:hover{color:#409EFF}.el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.el-radio,.el-radio__input{line-height:1;white-space:nowrap;outline:0}.el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.el-checkbox-button__original{opacity:0;outline:0;position:absolute;margin:0;z-index:-1}.el-radio,.el-radio__inner,.el-radio__input{position:relative;display:inline-block}.el-checkbox-button.is-checked .el-checkbox-button__inner{color:#FFF;background-color:#409EFF;border-color:#409EFF;-webkit-box-shadow:-1px 0 0 0 #8cc5ff;box-shadow:-1px 0 0 0 #8cc5ff}.el-checkbox-button.is-checked:first-child .el-checkbox-button__inner{border-left-color:#409EFF}.el-checkbox-button.is-disabled .el-checkbox-button__inner{color:#C0C4CC;cursor:not-allowed;background-image:none;background-color:#FFF;border-color:#EBEEF5;-webkit-box-shadow:none;box-shadow:none}.el-checkbox-button.is-disabled:first-child .el-checkbox-button__inner{border-left-color:#EBEEF5}.el-checkbox-button:first-child .el-checkbox-button__inner{border-left:1px solid #DCDFE6;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:#409EFF}.el-checkbox-button:last-child .el-checkbox-button__inner{border-radius:0 4px 4px 0}.el-checkbox-button--medium .el-checkbox-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-checkbox-button--medium .el-checkbox-button__inner.is-round{padding:10px 20px}.el-checkbox-button--small .el-checkbox-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:9px 15px}.el-checkbox-button--mini .el-checkbox-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-checkbox-button--mini .el-checkbox-button__inner.is-round{padding:7px 15px}.el-checkbox-group{font-size:0}.el-radio,.el-radio--medium.is-bordered .el-radio__label{font-size:14px}.el-radio{color:#606266;cursor:pointer;margin-right:30px}.el-cascader-node>.el-radio,.el-radio:last-child{margin-right:0}.el-radio.is-bordered{padding:12px 20px 0 10px;border-radius:4px;border:1px solid #DCDFE6;-webkit-box-sizing:border-box;box-sizing:border-box;height:40px}.el-radio.is-bordered.is-checked{border-color:#409EFF}.el-radio.is-bordered.is-disabled{cursor:not-allowed;border-color:#EBEEF5}.el-radio__input.is-disabled .el-radio__inner,.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:#F5F7FA;border-color:#E4E7ED}.el-radio.is-bordered+.el-radio.is-bordered{margin-left:10px}.el-radio--medium.is-bordered{padding:10px 20px 0 10px;border-radius:4px;height:36px}.el-radio--mini.is-bordered .el-radio__label,.el-radio--small.is-bordered .el-radio__label{font-size:12px}.el-radio--medium.is-bordered .el-radio__inner{height:14px;width:14px}.el-radio--small.is-bordered{padding:8px 15px 0 10px;border-radius:3px;height:32px}.el-radio--small.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio--mini.is-bordered{padding:6px 15px 0 10px;border-radius:3px;height:28px}.el-radio--mini.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio__input{cursor:pointer;vertical-align:middle}.el-radio__input.is-disabled .el-radio__inner{cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner::after{cursor:not-allowed;background-color:#F5F7FA}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner::after{background-color:#C0C4CC}.el-radio__input.is-disabled+span.el-radio__label{color:#C0C4CC;cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{border-color:#409EFF;background:#409EFF}.el-radio__input.is-checked .el-radio__inner::after{-webkit-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:#409EFF}.el-radio__input.is-focus .el-radio__inner{border-color:#409EFF}.el-radio__inner{border:1px solid #DCDFE6;border-radius:100%;width:14px;height:14px;background-color:#FFF;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box}.el-radio__inner:hover{border-color:#409EFF}.el-radio__inner::after{width:4px;height:4px;border-radius:100%;background-color:#FFF;content:"";position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%) scale(0);transform:translate(-50%,-50%) scale(0);-webkit-transition:-webkit-transform .15s ease-in;transition:-webkit-transform .15s ease-in;transition:transform .15s ease-in;transition:transform .15s ease-in,-webkit-transform .15s ease-in}.el-radio__original{opacity:0;outline:0;position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;margin:0}.el-radio:focus:not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{-webkit-box-shadow:0 0 2px 2px #409EFF;box-shadow:0 0 2px 2px #409EFF}.el-radio__label{font-size:14px;padding-left:10px}.el-scrollbar{overflow:hidden;position:relative}.el-scrollbar:active>.el-scrollbar__bar,.el-scrollbar:focus>.el-scrollbar__bar,.el-scrollbar:hover>.el-scrollbar__bar{opacity:1;-webkit-transition:opacity 340ms ease-out;transition:opacity 340ms ease-out}.el-scrollbar__wrap{overflow:scroll;height:100%}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(144,147,153,.3);-webkit-transition:.3s background-color;transition:.3s background-color}.el-scrollbar__thumb:hover{background-color:rgba(144,147,153,.5)}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;-webkit-transition:opacity 120ms ease-out;transition:opacity 120ms ease-out}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-cascader-panel{display:-webkit-box;display:-ms-flexbox;display:flex;border-radius:4px;font-size:14px}.el-cascader-panel.is-bordered{border:1px solid #E4E7ED;border-radius:4px}.el-cascader-menu{min-width:180px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;border-right:solid 1px #E4E7ED}.el-cascader-menu:last-child{border-right:none}.el-cascader-menu:last-child .el-cascader-node{padding-right:20px}.el-cascader-menu__wrap{height:204px}.el-cascader-menu__list{position:relative;min-height:100%;margin:0;padding:6px 0;list-style:none;-webkit-box-sizing:border-box;box-sizing:border-box}.el-avatar,.el-drawer{-webkit-box-sizing:border-box;overflow:hidden}.el-cascader-menu__hover-zone{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.el-cascader-menu__empty-text{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);text-align:center;color:#C0C4CC}.el-cascader-node{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 30px 0 20px;height:34px;line-height:34px;outline:0}.el-cascader-node.is-selectable.in-active-path{color:#606266}.el-cascader-node.in-active-path,.el-cascader-node.is-active,.el-cascader-node.is-selectable.in-checked-path{color:#409EFF;font-weight:700}.el-cascader-node:not(.is-disabled){cursor:pointer}.el-cascader-node:not(.is-disabled):focus,.el-cascader-node:not(.is-disabled):hover{background:#F5F7FA}.el-cascader-node.is-disabled{color:#C0C4CC;cursor:not-allowed}.el-cascader-node__prefix{position:absolute;left:10px}.el-cascader-node__postfix{position:absolute;right:10px}.el-cascader-node__label{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:0 10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-cascader-node>.el-radio .el-radio__label{padding-left:0}.el-avatar{display:inline-block;box-sizing:border-box;text-align:center;color:#fff;background:#C0C4CC;width:40px;height:40px;line-height:40px;font-size:14px}.el-avatar>img{display:block;height:100%;vertical-align:middle}.el-drawer,.el-drawer__header{display:-webkit-box;display:-ms-flexbox}.el-avatar--circle{border-radius:50%}.el-avatar--square{border-radius:4px}.el-avatar--icon{font-size:18px}.el-avatar--large{width:40px;height:40px;line-height:40px}.el-avatar--medium{width:36px;height:36px;line-height:36px}.el-avatar--small{width:28px;height:28px;line-height:28px}.el-drawer.btt,.el-drawer.ttb,.el-drawer__container{left:0;right:0;width:100%}.el-drawer.ltr,.el-drawer.rtl,.el-drawer__container{top:0;bottom:0;height:100%}@-webkit-keyframes el-drawer-fade-in{0%{opacity:0}100%{opacity:1}}@keyframes el-drawer-fade-in{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes rtl-drawer-in{0%{-webkit-transform:translate(100%,0);transform:translate(100%,0)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@keyframes rtl-drawer-in{0%{-webkit-transform:translate(100%,0);transform:translate(100%,0)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@-webkit-keyframes rtl-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(100%,0);transform:translate(100%,0)}}@keyframes rtl-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(100%,0);transform:translate(100%,0)}}@-webkit-keyframes ltr-drawer-in{0%{-webkit-transform:translate(-100%,0);transform:translate(-100%,0)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@keyframes ltr-drawer-in{0%{-webkit-transform:translate(-100%,0);transform:translate(-100%,0)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@-webkit-keyframes ltr-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(-100%,0);transform:translate(-100%,0)}}@keyframes ltr-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(-100%,0);transform:translate(-100%,0)}}@-webkit-keyframes ttb-drawer-in{0%{-webkit-transform:translate(0,-100%);transform:translate(0,-100%)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@keyframes ttb-drawer-in{0%{-webkit-transform:translate(0,-100%);transform:translate(0,-100%)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@-webkit-keyframes ttb-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(0,-100%);transform:translate(0,-100%)}}@keyframes ttb-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(0,-100%);transform:translate(0,-100%)}}@-webkit-keyframes btt-drawer-in{0%{-webkit-transform:translate(0,100%);transform:translate(0,100%)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@keyframes btt-drawer-in{0%{-webkit-transform:translate(0,100%);transform:translate(0,100%)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@-webkit-keyframes btt-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(0,100%);transform:translate(0,100%)}}@keyframes btt-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(0,100%);transform:translate(0,100%)}}.el-drawer{position:absolute;box-sizing:border-box;background-color:#FFF;display:flex;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12);box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12);outline:0}.el-drawer.rtl{-webkit-animation:rtl-drawer-out .3s;animation:rtl-drawer-out .3s;right:0}.el-drawer__open .el-drawer.rtl{-webkit-animation:rtl-drawer-in .3s 1ms;animation:rtl-drawer-in .3s 1ms}.el-drawer.ltr{-webkit-animation:ltr-drawer-out .3s;animation:ltr-drawer-out .3s;left:0}.el-drawer__open .el-drawer.ltr{-webkit-animation:ltr-drawer-in .3s 1ms;animation:ltr-drawer-in .3s 1ms}.el-drawer.ttb{-webkit-animation:ttb-drawer-out .3s;animation:ttb-drawer-out .3s;top:0}.el-drawer__open .el-drawer.ttb{-webkit-animation:ttb-drawer-in .3s 1ms;animation:ttb-drawer-in .3s 1ms}.el-drawer.btt{-webkit-animation:btt-drawer-out .3s;animation:btt-drawer-out .3s;bottom:0}.el-drawer__open .el-drawer.btt{-webkit-animation:btt-drawer-in .3s 1ms;animation:btt-drawer-in .3s 1ms}.el-drawer__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:hidden;margin:0}.el-drawer__header{-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#72767b;display:flex;margin-bottom:32px;padding:20px 20px 0}.el-drawer__header>:first-child{-webkit-box-flex:1;-ms-flex:1;flex:1}.el-drawer__title{margin:0;-webkit-box-flex:1;-ms-flex:1;flex:1;line-height:inherit;font-size:1rem}.el-drawer__close-btn{border:none;cursor:pointer;font-size:20px;color:inherit;background-color:transparent}.el-drawer__body{-webkit-box-flex:1;-ms-flex:1;flex:1}.el-drawer__body>*{-webkit-box-sizing:border-box;box-sizing:border-box}.el-drawer__container{position:relative}.el-drawer-fade-enter-active{-webkit-animation:el-drawer-fade-in .3s;animation:el-drawer-fade-in .3s}.el-drawer-fade-leave-active{animation:el-drawer-fade-in .3s reverse}.el-popconfirm__main{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-popconfirm__icon{margin-right:5px}.el-popconfirm__action{text-align:right;margin:0}
\ No newline at end of file
diff --git a/xcxMapSecurityPosition/css/fonts/element-icons.ttf b/xcxMapSecurityPosition/css/fonts/element-icons.ttf
deleted file mode 100644
index 91b74de..0000000
--- a/xcxMapSecurityPosition/css/fonts/element-icons.ttf
+++ /dev/null
Binary files differ
diff --git a/xcxMapSecurityPosition/css/fonts/element-icons.woff b/xcxMapSecurityPosition/css/fonts/element-icons.woff
deleted file mode 100644
index 02b9a25..0000000
--- a/xcxMapSecurityPosition/css/fonts/element-icons.woff
+++ /dev/null
Binary files differ
diff --git a/xcxMapSecurityPosition/img/alarm.png b/xcxMapSecurityPosition/img/alarm.png
deleted file mode 100644
index 3757de9..0000000
--- a/xcxMapSecurityPosition/img/alarm.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapSecurityPosition/img/alarm_time.png b/xcxMapSecurityPosition/img/alarm_time.png
deleted file mode 100644
index b7a3bf5..0000000
--- a/xcxMapSecurityPosition/img/alarm_time.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapSecurityPosition/img/alarm_type.png b/xcxMapSecurityPosition/img/alarm_type.png
deleted file mode 100644
index 5acd59b..0000000
--- a/xcxMapSecurityPosition/img/alarm_type.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapSecurityPosition/img/beizhu.png b/xcxMapSecurityPosition/img/beizhu.png
deleted file mode 100644
index 323a213..0000000
--- a/xcxMapSecurityPosition/img/beizhu.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapSecurityPosition/img/desc.png b/xcxMapSecurityPosition/img/desc.png
deleted file mode 100644
index 5f4d801..0000000
--- a/xcxMapSecurityPosition/img/desc.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapSecurityPosition/img/desc2.png b/xcxMapSecurityPosition/img/desc2.png
deleted file mode 100644
index c02da9d..0000000
--- a/xcxMapSecurityPosition/img/desc2.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapSecurityPosition/img/dianhua.png b/xcxMapSecurityPosition/img/dianhua.png
deleted file mode 100644
index f5941a6..0000000
--- a/xcxMapSecurityPosition/img/dianhua.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapSecurityPosition/img/dingw.gif b/xcxMapSecurityPosition/img/dingw.gif
deleted file mode 100644
index f50ef1f..0000000
--- a/xcxMapSecurityPosition/img/dingw.gif
+++ /dev/null
Binary files differ
diff --git a/xcxMapSecurityPosition/img/dingwei.png b/xcxMapSecurityPosition/img/dingwei.png
deleted file mode 100644
index 58a917e..0000000
--- a/xcxMapSecurityPosition/img/dingwei.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapSecurityPosition/img/gaunbi.png b/xcxMapSecurityPosition/img/gaunbi.png
deleted file mode 100644
index f3dfa18..0000000
--- a/xcxMapSecurityPosition/img/gaunbi.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapSecurityPosition/img/gray.png b/xcxMapSecurityPosition/img/gray.png
deleted file mode 100644
index 3d2024d..0000000
--- a/xcxMapSecurityPosition/img/gray.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapSecurityPosition/img/green.png b/xcxMapSecurityPosition/img/green.png
deleted file mode 100644
index f6db902..0000000
--- a/xcxMapSecurityPosition/img/green.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapSecurityPosition/img/huifang.png b/xcxMapSecurityPosition/img/huifang.png
deleted file mode 100644
index 0b8d52f..0000000
--- a/xcxMapSecurityPosition/img/huifang.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapSecurityPosition/img/leixing.png b/xcxMapSecurityPosition/img/leixing.png
deleted file mode 100644
index ba2bb3c..0000000
--- a/xcxMapSecurityPosition/img/leixing.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapSecurityPosition/img/people.png b/xcxMapSecurityPosition/img/people.png
deleted file mode 100644
index 5b94a7d..0000000
--- a/xcxMapSecurityPosition/img/people.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapSecurityPosition/img/people1.png b/xcxMapSecurityPosition/img/people1.png
deleted file mode 100644
index c9f756c..0000000
--- a/xcxMapSecurityPosition/img/people1.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapSecurityPosition/img/phone call.png b/xcxMapSecurityPosition/img/phone call.png
deleted file mode 100644
index d8061f8..0000000
--- a/xcxMapSecurityPosition/img/phone call.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapSecurityPosition/img/phone.png b/xcxMapSecurityPosition/img/phone.png
deleted file mode 100644
index 8c0d3cb..0000000
--- a/xcxMapSecurityPosition/img/phone.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapSecurityPosition/img/phone1.png b/xcxMapSecurityPosition/img/phone1.png
deleted file mode 100644
index 7fa6028..0000000
--- a/xcxMapSecurityPosition/img/phone1.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapSecurityPosition/img/red.png b/xcxMapSecurityPosition/img/red.png
deleted file mode 100644
index a4f0271..0000000
--- a/xcxMapSecurityPosition/img/red.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapSecurityPosition/img/ren.png b/xcxMapSecurityPosition/img/ren.png
deleted file mode 100644
index f6200a0..0000000
--- a/xcxMapSecurityPosition/img/ren.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapSecurityPosition/img/shijian.png b/xcxMapSecurityPosition/img/shijian.png
deleted file mode 100644
index da0a0ff..0000000
--- a/xcxMapSecurityPosition/img/shijian.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapSecurityPosition/img/shiping.png b/xcxMapSecurityPosition/img/shiping.png
deleted file mode 100644
index 3e32230..0000000
--- a/xcxMapSecurityPosition/img/shiping.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapSecurityPosition/img/shiping11.png b/xcxMapSecurityPosition/img/shiping11.png
deleted file mode 100644
index c94662f..0000000
--- a/xcxMapSecurityPosition/img/shiping11.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapSecurityPosition/img/shiyongren.png b/xcxMapSecurityPosition/img/shiyongren.png
deleted file mode 100644
index 424c1f4..0000000
--- a/xcxMapSecurityPosition/img/shiyongren.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapSecurityPosition/img/type.png b/xcxMapSecurityPosition/img/type.png
deleted file mode 100644
index 08cc039..0000000
--- a/xcxMapSecurityPosition/img/type.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapSecurityPosition/img/type1.png b/xcxMapSecurityPosition/img/type1.png
deleted file mode 100644
index d569695..0000000
--- a/xcxMapSecurityPosition/img/type1.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapSecurityPosition/img/wz.png b/xcxMapSecurityPosition/img/wz.png
deleted file mode 100644
index 440bf5e..0000000
--- a/xcxMapSecurityPosition/img/wz.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapSecurityPosition/img/xiangji.png b/xcxMapSecurityPosition/img/xiangji.png
deleted file mode 100644
index 6aa4b02..0000000
--- a/xcxMapSecurityPosition/img/xiangji.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapSecurityPosition/img/yellow.png b/xcxMapSecurityPosition/img/yellow.png
deleted file mode 100644
index bdedf67..0000000
--- a/xcxMapSecurityPosition/img/yellow.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapSecurityPosition/img/zd.png b/xcxMapSecurityPosition/img/zd.png
deleted file mode 100644
index 8ae2af3..0000000
--- a/xcxMapSecurityPosition/img/zd.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapSecurityPosition/img/zd2.png b/xcxMapSecurityPosition/img/zd2.png
deleted file mode 100644
index 0ed8f2a..0000000
--- a/xcxMapSecurityPosition/img/zd2.png
+++ /dev/null
Binary files differ
diff --git "a/xcxMapSecurityPosition/img/\345\210\267\346\226\260.png" "b/xcxMapSecurityPosition/img/\345\210\267\346\226\260.png"
deleted file mode 100644
index a62db24..0000000
--- "a/xcxMapSecurityPosition/img/\345\210\267\346\226\260.png"
+++ /dev/null
Binary files differ
diff --git "a/xcxMapSecurityPosition/img/\345\256\232\344\275\215.png" "b/xcxMapSecurityPosition/img/\345\256\232\344\275\215.png"
deleted file mode 100644
index 6840b00..0000000
--- "a/xcxMapSecurityPosition/img/\345\256\232\344\275\215.png"
+++ /dev/null
Binary files differ
diff --git "a/xcxMapSecurityPosition/img/\346\211\213.png" "b/xcxMapSecurityPosition/img/\346\211\213.png"
deleted file mode 100644
index d690869..0000000
--- "a/xcxMapSecurityPosition/img/\346\211\213.png"
+++ /dev/null
Binary files differ
diff --git "a/xcxMapSecurityPosition/img/\346\211\223\345\274\200.png" "b/xcxMapSecurityPosition/img/\346\211\223\345\274\200.png"
deleted file mode 100644
index 24585ca..0000000
--- "a/xcxMapSecurityPosition/img/\346\211\223\345\274\200.png"
+++ /dev/null
Binary files differ
diff --git "a/xcxMapSecurityPosition/img/\346\216\222\351\230\237\346\225\260.png" "b/xcxMapSecurityPosition/img/\346\216\222\351\230\237\346\225\260.png"
deleted file mode 100644
index 32e5448..0000000
--- "a/xcxMapSecurityPosition/img/\346\216\222\351\230\237\346\225\260.png"
+++ /dev/null
Binary files differ
diff --git "a/xcxMapSecurityPosition/img/\346\217\220\347\244\272.png" "b/xcxMapSecurityPosition/img/\346\217\220\347\244\272.png"
deleted file mode 100644
index 292ddbd..0000000
--- "a/xcxMapSecurityPosition/img/\346\217\220\347\244\272.png"
+++ /dev/null
Binary files differ
diff --git "a/xcxMapSecurityPosition/img/\346\226\207\344\273\266.png" "b/xcxMapSecurityPosition/img/\346\226\207\344\273\266.png"
deleted file mode 100644
index b40eeb8..0000000
--- "a/xcxMapSecurityPosition/img/\346\226\207\344\273\266.png"
+++ /dev/null
Binary files differ
diff --git a/xcxMapSecurityPosition/js/geolocation.min.js b/xcxMapSecurityPosition/js/geolocation.min.js
deleted file mode 100644
index ea0811c..0000000
--- a/xcxMapSecurityPosition/js/geolocation.min.js
+++ /dev/null
@@ -1,94 +0,0 @@
-window.qq = window.qq || {}, qq.maps = qq.maps || {}, window.soso || (window.soso = qq), soso.maps || (soso.maps = qq
-	.maps), qq.maps.Geolocation = function() {
-	"use strict";
-	var e = [],
-		t = null,
-		o = 0,
-		n = "_geoIframe_" + Math.ceil(1e7 * Math.random()),
-		i = document.createElement("iframe"),
-		r = null,
-		s = null,
-		a = null,
-		c = null,
-		u = function(u, l) {
-			if (!u) return void alert("请输入key!");
-			if (!l) return void alert("请输入referer!");
-			var p = document.getElementById(n);
-			if (!p) {
-				i.setAttribute("id", n), i.setAttribute("allow", "geolocation");
-				var g = "https:";
-				i.setAttribute("src", g + "//web.byisf.com/txdw/tools/geolocation?key=" + u + "&referer=" + l), i
-					.setAttribute("style", "display: none; width: 100%; height: 30%"), document.body ? document.body
-					.appendChild(i) : document.write(i.outerHTML);
-				var m = this;
-				window.addEventListener("message", function(n) {
-					var i = n.data;
-					if (i && "geolocation" == i.module) {
-						if (clearTimeout(c), e.length > 0) {
-							var u = e.shift();
-							u.sucCb && u.sucCb(i)
-						}
-						o = 2, m.executeNextGeo(), t && t(i)
-					} else {
-						s = (new Date).getTime();
-						var l = s - r;
-						if (l >= a) {
-							if (e.length > 0 && "geo" === e[0].type) {
-								var u = e.shift(),
-									p = {
-										type: "fail",
-										code: 5,
-										message: "The request"
-									};
-								u.errCb && u.errCb(p)
-							}
-							clearTimeout(c), o = -1, m.executeNextGeo()
-						}
-						if (e.length > 0 && "ip" === e[0].type) {
-							var u = e.shift();
-							u.errCb && u.errCb(p)
-						}
-					}
-				}, !1)
-			}
-		};
-	return u.prototype.executeNextGeo = function() {
-		1 !== o && e.length > 0 && (o = 1, e[0].geoprocess())
-	}, u.prototype.getLocation = function(t, n, i) {
-		if (i && i.timeout) {
-			var r = new RegExp("^[0-9]*$");
-			if (!r.test(i.timeout)) return void alert("timeout 请输入数字")
-		}
-		if (e.length > 10) throw new Error("geolocation queue must be lass than 10");
-		e.push({
-			sucCb: t,
-			errCb: n,
-			option: i,
-			geoprocess: this.getOnceLocation,
-			type: "geo"
-		}), 1 !== o && (o = 1, this.getOnceLocation())
-	}, u.prototype.getOnceLocation = function() {
-		var t = e[0] && e[0].option;
-		r = (new Date).getTime(), a = t && t.timeout ? +t.timeout : 1e4, clearTimeout(c), c = setTimeout(
-			function() {
-				if (e.length > 0) {
-					var t = e.shift();
-					t.errCb && t.errCb()
-				}
-			}, a), document.getElementById(n).contentWindow.postMessage("getLocation", "*")
-	}, u.prototype.getIpLocation = function(t, n) {
-		if (e.length > 10) throw new Error("geolocation queue mast be lass than 10");
-		e.push({
-			sucCb: t,
-			errCb: n,
-			geoprocess: this.getOnceIpLocation,
-			type: "ip"
-		}), 1 !== o && (o = 1, this.getOnceIpLocation())
-	}, u.prototype.getOnceIpLocation = function() {
-		document.getElementById(n).contentWindow.postMessage("getLocation.robust", "*")
-	}, u.prototype.watchPosition = function(e) {
-		t = e, document.getElementById(n).contentWindow.postMessage("watchPosition", "*")
-	}, u.prototype.clearWatch = function() {
-		t = null, document.getElementById(n).contentWindow.postMessage("clearWatch", "*")
-	}, u
-}();
diff --git a/xcxMapSecurityPosition/js/move.js b/xcxMapSecurityPosition/js/move.js
deleted file mode 100644
index b2ac24c..0000000
--- a/xcxMapSecurityPosition/js/move.js
+++ /dev/null
@@ -1,132 +0,0 @@
-// 使用说明:(需要移动的dom,触摸块dom,跟随改变map dom)
-function myDomMove(dom, div, map) {
-    this.m = $(dom);
-    this.div = $(div);
-    this.mapId = $(map);
-    this.__xx = null; //鼠标实时位置
-    this.__yy = null;
-    this.__sx = null; //鼠标开始位置
-    this.__sy = null;
-    this.__dx = null; //dom位置
-    this.__dy = null;
-    this.mapH = null; //地图高度
-    this.__wy = null; //屏幕高度
-    this.state = "up"; //dom状态默认up
-
-    this.getMosePosition = (x, y) => { //获取鼠标位置
-        this.__sx = x;
-        this.__sy = y;
-        // console.log(this.__sy, '鼠标开始');
-
-    }
-    this.getDomPosition = () => { //获取dom位置
-        this.__dx = this.m.offset().left;
-        this.__dy = this.m.offset().top;
-        this.__wy = document.documentElement.clientHeight;
-        // console.log(this.__dy, 'dom');
-    }
-    this.getMapHeight = () => { //获取地图高度
-        var that = this;
-        this.mapId.css("height", (index, value) => {
-                that.mapH = parseFloat(value);
-            })
-            // console.log(that.mapH, 'map位置');
-    }
-    this.changeDomPosition = (x, y, dy) => { //改变dom位置
-        var that = this;
-        // this.mapId.css("height", (index, value) => {//改变地图高度
-        //     var h = this.mapH + y;
-        //     console.log(h);
-        //     return h ;
-        // })
-        this.m.animate({ top: dy + "px" }, 10);
-
-    }
-
-
-    //begin
-    this.followFinger = (map, state = 14) => { //(地图实例,dom状态判断是向上还是向下)
-        // console.log('开始跟随手指');
-        var that = this;
-        if (state != 14) {
-            that.state = state;
-            // console.log(that.state);
-        }
-        that.getDomPosition(); //获取dom位置
-        that.getMapHeight(); //获取地图高度
-        var once = true;
-        that.div.on('touchmove', function(e) { //获取鼠标位置
-            e = e || window.event;
-            that.__xx = e.touches[0].clientX;
-            that.__yy = e.touches[0].clientY;
-            if (once) { //获取第一次点击的位置
-                once = false;
-                that.getMosePosition(that.__xx, that.__yy);
-            }
-            // console.log(that.__yy, '鼠标');
-            var h = that.__yy - that.__sy //鼠标移动距离y
-
-            if (that.state == 'down') { //两种模式
-                // console.log(that.state);
-                if (h >= 0 && h + that.__dy <= that.__wy - 20) {
-                    that.changeDomPosition(0, h, h + that.__dy); //改变位置
-                    // console.log(that.state,h + that.__dy,112);
-                }
-            } else if (that.state == 'up') {
-                if (h >= -that.__dy && h <= that.__wy - 20) {
-                    that.changeDomPosition(0, h, h + that.__wy - 20); //改变位置
-                    // console.log(that.state,h + that.__wy - 20,112);
-                }
-            }
-
-        });
-        that.div.on('touchend', function() { //抬起重置
-            once = true; //抬起重置鼠标点击位置
-            var chous = null;
-            if (that.state == 'down') { //两种模式
-                // var chous = Math.abs(that.__yy - that.__sy) < that.__wy / 4;
-                chous = (that.__sy - that.__yy) < 0;
-            } else if (that.state == 'up') {
-                // var chous = Math.abs(that.__yy - that.__sy) > that.__wy / 4;
-                chous = (that.__sy - that.__yy) < 0;
-            }
-            if (!chous) {
-                //改变dom位置
-                that.changeDomPosition(0, 0, (parseFloat(that.__wy / 10) * 3.999));
-                // that.getDomPosition();//抬起获取dom位置/持续停留使用
-                that.state = 'down';
-                $('#map').css("height", (index, value) => { //改变地图高度
-                    return '50%';
-                })
-                map.invalidateSize(true); //应用地图高度
-            } else {
-                // that.changeDomPosition(0, 0, that.__wy - 50); //改变位置
-                that.changeDomPosition(0, 0, that.__wy); //改变位置
-                // that.getDomPosition();//抬起获取dom位置/持续停留使用
-                that.state = 'up';
-                $('#map').css("height", (index, value) => { //改变地图高度
-                    return '100%';
-                })
-                map.invalidateSize(true); //应用地图高度
-            }
-            that.getMapHeight(); //抬起获取map高度
-        });
-    }
-    this.destruction = () => { //初始化销毁
-        this.m = $(dom);
-        this.div = $(div);
-        this.mapId = $(map);
-        this.__xx = null; //鼠标实时位置
-        this.__yy = null;
-        this.__sx = null; //鼠标开始位置
-        this.__sy = null;
-        this.__dx = null; //dom位置
-        this.__dy = null;
-        this.mapH = null; //地图高度
-        this.__wy = null; //屏幕高度
-        this.state = "up"; //dom状态默认up
-        this.div.off();
-    }
-}
-
-// export default myDomMove;
\ No newline at end of file
diff --git a/xcxMapSecurityPosition/js/vueMain.js b/xcxMapSecurityPosition/js/vueMain.js
deleted file mode 100644
index 9450c7b..0000000
--- a/xcxMapSecurityPosition/js/vueMain.js
+++ /dev/null
@@ -1,461 +0,0 @@
-var me = new Vue({
-	el: '#mapVue',
-	data: {
-		map: null, //map
-		getdata: null,
-		marker: null,
-		layuiLayer: null,
-		nowIndex: null,
-
-		LXdhStart: null,
-		LXdhEnd: null,
-		LxdhLine: null,
-
-		activeName: 'first',
-
-		// move: null, //存放移动实例
-
-		//存放实时坐标
-		lat: "",
-		lng: "",
-		seedata: '',
-		nowPosition: '',
-		shipingPopupShow: false,
-		shipingM3u8Url: '',
-		resultFeedbackPopupShow: false,
-		popupDisplay: "none",
-
-		haveShishiweizhi: 1,
-		isFromJQ: false,
-		chulijieguo: '',
-		wentifankui: '',
-		oldlat: '',
-		oldlng: '',
-		haveJDWD: true,
-
-		// showsalffPopup: true,
-		drawer: false,
-		oncesSalfeData: {},
-
-	},
-	methods: {
-		getDataList() {
-			var that = this;
-			that.beginCome();
-		},
-		beginCome() {
-			var data = [{
-				"id": '100000',
-				"place": '无数据',
-				"state": '0',
-				"dtype": '0',
-				"size": '300',
-				"jd": "114.91385",
-				"wd": "25.81051"
-			}]
-			//url解码
-			this.getdata = this.getQueryVariable('data') || data;
-			// console.log(this.getdata);
-			// this.getdata = data;
-			// this.changeDom(this.getdata[0]);
-			// console.log(this.getdata[0]);
-			this.map = this.beginMap(this.map, this.getdata); //创建并接受map
-			// this.move = new myDomMove('#seedata', '.title', '#map');
-			this.map.invalidateSize(true); //应用地图高度
-			// this.move.followFinger(this.map, 'down');
-			// this.lat = data[0].wd;
-			// this.lng = data[0].jd;
-			// this.oldlat = data[0].wd;
-			// this.oldlng = data[0].jd;
-			// this.oldlat = this.getdata[0].wd;
-			// this.oldlng = this.getdata[0].jd;
-		},
-		// changeDom(data) {
-		// 	// console.log(data, 'changeDom');
-
-		// 	function changeDoms(dom, item) {
-		// 		$(dom).empty();
-		// 		$(dom).append(item);
-		// 	}
-		// 	changeDoms('#um-m-t-bz', data.bz);
-		// 	changeDoms('#um-m-t-dz', data.place);
-		// 	$("#um-m-t-rw").find('span:eq(0)').text(data.alarmType+"-");
-		// 	// console.log(data.jtype, data.securityId, '11111111111')
-		// 	if (data.jtype == 1 && data.securityId != '') {
-		// 		changeDoms('#um-m-t-states', '处理中');
-		// 		$('#jieshou').hide();
-		// 		$('#wanchen').show();
-		// 	} else if (data.jtype == 2) {
-		// 		changeDoms('#um-m-t-states', '已处理');
-		// 	} else if (data.securityId == null || data.securityId == '') {
-		// 		changeDoms('#um-m-t-states', '未处理');
-		// 		$('#jieshou').show();
-		// 		$('#wanchen').hide();
-		// 	}
-
-		// },
-		//url解码
-		getQueryVariable(variable) {
-			var that = this;
-			var query = window.location.search.substring(1);
-			var vars = query.split("&");
-			for (var i = 0; i < vars.length; i++) {
-				var pair = vars[i].split("=");
-				if (pair[0] == variable) {
-					that.isFromJQ = true; //确认是警情进来
-					return JSON.parse(decodeURI(pair[1]));
-				} //解码url 和 JSON
-			}
-			return (false);
-		},
-		beginMap(map, data) {
-			// console.log(data[0].latitude, data[0].longitude);
-			// return
-			var that = this,
-				// center = [data[0].wd, data[0].jd],
-				center = [data[0].latitude, data[0].longitude],
-				url = `http://s16s652780.51mypc.cn/api/alarm/alarm/APP-getAlarm?id=${data[0].id}`;
-			// url = `http://localhost:89/alarm/alarm/APP-getAlarm?id=${data[0].id}`;
-			this.nowPosition = center;
-			// axios.post(url).then((res) => {
-			// 	if (res.data.data.length != 0) {
-			// 		var dat = res.data.data[0];
-			// 		for (var key in dat) {
-			// 			if (dat[key] == null || dat[key] == '') {
-			// 				dat[key] = '暂无'
-			// 			}
-			// 		}
-			// 		this.seedata = dat;
-
-			// 	} else {
-			// 		this.seedata = data[0];
-			// 	}
-			// })
-			// console.log(L);
-			// console.log(center);
-			// return
-
-			var createMap = () => {
-				map = L.map('map', { //初始化地图
-					center: center,
-					zoom: 20,
-					minZoom: 2,
-					maxZoom: 17,
-					attributionControl: false, //去掉右下角
-					zoomControl: false, //去掉缩放
-				});
-				L.tileLayer( //添加切片图层
-					// "https://webmap-tile.sf-express.com/MapTileService/rt?x={x}&y={y}&z={z}", {//顺丰地图
-					"https://webmap-tile.sf-express.com/MapTileService/rt?fetchtype=static&x={x}&y={y}&z={z}&project=sfmap&pic_size=256&pic_type=png8&data_name=361100&data_format=merged-dat&data_type=normal", { //顺丰地图
-					}
-				).addTo(map);
-
-			}
-			// console.log(map)
-			createMap();
-			var markers = L.markerClusterGroup();
-
-			var transportIcon = L.Icon.extend({ //图标初始化
-				options: {
-					iconSize: [30, 30], // 图标尺寸
-				}
-			});
-			var carIcon = new transportIcon({ //引入图标
-					iconUrl: './img/gray.png'
-				}),
-				planeIcon = new transportIcon({
-					iconUrl: './img/zd.png'
-				}),
-				grIcon = new transportIcon({
-					iconUrl: './img/green.png'
-				}),
-				homeIcon = new transportIcon({
-					iconUrl: './img/wz.png'
-				}),
-				busIcon = new transportIcon({
-					iconUrl: './img/red.png'
-				});
-			var setData = (a) => { //定义图标
-				marker = L.marker([a.latitude, a.longitude], {
-					icon: homeIcon,
-					// icon: a.dtype == 0 ? carIcon : a.dtype == 1 ? planeIcon : a.dtype == 2 ? busIcon : '',
-					// title: title,
-					myData: { //自定义数据
-						...a
-					}
-				});
-			}
-			for (var i = 0; i < data.length; i++) {
-				var a = data[i];
-				setData(a);
-				markers.addLayer(marker);
-			}
-			map.addLayer(markers);
-			var i = 0;
-			markers.on('click', function(a) {
-				if (i == 0) {
-					// console.log(a.layer.options.myData);
-					var d = a.layer.options.myData;
-					that.oncesSalfeData = d;
-					that.drawer = true;
-
-				} else if (i == 1) {
-					i = -1
-				}
-				i++
-			});
-			// console.log(markers)
-			this.nowPosition = center;
-			return map; //抛出map
-		},
-		Submit() {
-			var data = this.getdata[0];
-			// console.log(data)
-			// receives() {// 接受任务
-			var url = data.url,
-				Pid = data.id,
-				id = data.userid, //警察id
-				name = data.username, //警察id
-				datas = {
-					id: Pid,
-					securityId: id,
-					alarmPeople: name
-				};
-			// console.log(datas);
-			axios({
-				url: url +
-					`?securityId=${datas.securityId}&id=${datas.id}&alarmPeople=datas.alarmPeople`,
-				// data: datas,
-				header: {
-					"content-type": "application/x-www-form-urlencoded"
-				},
-				method: 'POST',
-
-			}).then(res => {
-				// console.log(res, 123);
-
-				$('#loding').show();
-				var time = setTimeout(() => {
-					$('#loding').hide();
-				}, 1000)
-				$('#jieshou').hide();
-				$('#wanchen').show();
-				$('#um-m-t-states').empty();
-				$('#um-m-t-states').append('处理中');
-			})
-			// console.log( 123);
-
-		},
-		// SubmitDown() {
-		// 	// $('#SubmitDown').show();
-		// 	// console.log(uni.navigateTo)
-		// 	uni.navigateTo({
-		// 		url: '/pages/poput/mapJQtijiao/mapJQtijiao/mapJQtijiao?id=' + this.getdata[0].id
-		// 	});
-		// },
-		// SubmitSD() {
-		// 	console.log(this.chulijieguo, 'chulijieguo')
-		// 	console.log(this.wentifankui, 'wentifankui')
-		// },
-
-		// showPolyLine(xy) {
-		// 	var that = this;
-		// 	that.LxdhLine = L.polyline(xy, {
-		// 		color: 'red'
-		// 	}).addTo(that.map);
-
-		// 	// zoom the map to the polyline
-		// 	that.map.fitBounds(that.LxdhLine.getBounds())
-		// },
-		//定位警情位置
-		// titleClick() {
-		// 	this.map.setView(this.nowPosition, 20);
-		// },
-		//定位当前位置
-		// locationMap() {
-		// 	console.log([this.lat, this.lng])
-		// 	// this.map.setView([this.lat, this.lng], 20);
-		// },
-		// toJQposition() {
-		// 	this.map.setView([this.oldlat, this.oldlng], 20);
-		// },
-		// 获取实时位置
-		getLocationData() {
-
-			var that = this;
-			var geolocation = new qq.maps.Geolocation("T7RBZ-62U3X-RSQ4P-ZZVCB-WE7JT-HRBOG", "mapqq");
-			var positionNum = 0;
-			var options = {
-				timeout: 1000
-			};
-
-			function showPosition(position) {
-				var adCode = position.adCode; //邮政编码
-				var nation = position.nation; //中国
-				var city = position.city; //城市
-				var addr = position.addr; //详细地址
-				that.lat = position.lat; //
-				that.lng = position.lng; //火星坐标 //TODO 实现业务代码逻辑 
-				that.haveShishiweizhi++; //控制只执行一次
-				// console.log(that.haveShishiweizhi)
-				if (that.haveShishiweizhi == 2) {
-					// console.log(position)
-					if (that.LXdhStart == null) {
-						//点位
-						var position = [that.lat, that.lng];
-
-						//把map定位到点位上,13为地图的级别,也可以直接marker.getLatLng()
-						that.map.setView(position, 15);
-
-					} else {
-						that.map.removeLayer(that.LXdhStart);
-					}
-
-
-					//绘制起点和终点
-					that.LXdhStart = L.markerClusterGroup();
-
-					var transportIcon = L.Icon.extend({ //图标初始化
-						options: {
-							iconSize: [50, 50], // 图标尺寸
-						}
-					});
-
-					var qd = new transportIcon({
-						iconUrl: './img/dingw.gif'
-					});
-
-					that.LXdhStart.addLayer(L.marker([that.lat, that.lng], {
-						icon: qd,
-					}));
-					if (that.haveJDWD == false) {
-						that.map.setView([that.lat, that.lng], 20);
-					}
-
-					that.map.addLayer(that.LXdhStart);
-					that.getDHLine(+that.oldlng, +that.oldlat)
-					// console.log(that.lat, that.lng);
-					// console.log(+that.oldlat, +that.oldlng);
-
-				};
-			};
-
-			function showErr() {
-				//TODO 如果出错了调用此方法 
-				// console.log(15)
-			};
-
-			geolocation.getLocation(showPosition, showErr, options);
-			// console.log(geolocation);
-		},
-		// getDHLine(x, y) {
-
-		// 	var that = this;
-
-		// 	//获取导航信息
-		// 	axios({
-		// 		method: "get",
-		// 		url: `https://web.byisf.com/sf/rp/v2/api`,
-		// 		params: {
-		// 			ak: "1986afc8a5744263971b7f2482253dfc",
-		// 			x1: that.lng,
-		// 			y1: that.lat,
-		// 			x2: x,
-		// 			y2: y,
-		// 			type: "1",
-		// 			strategy: "0",
-		// 			opt: "sf2"
-		// 		},
-		// 	}).then((res) => {
-		// 		if (res.data.result.coords == undefined) {
-		// 			// console.log('目标太远 或不存在路径')
-		// 		} else {
-
-		// 			var resdata = res.data.result.coords;
-		// 			// console.log(res)
-		// 			var data = [];
-		// 			for (var i = 0; i < resdata.length; i++) {
-		// 				var xy = [];
-		// 				xy.push(resdata[i][1]);
-		// 				xy.push(resdata[i][0]);
-		// 				data.push(xy);
-		// 			}
-		// 			// var w = resdata[0][0] - resdata[resdata.length - 1][0];
-		// 			// w = Math.abs(w);
-		// 			// w = w / 0.00000899;
-		// 			// w = w.toFixed(2);
-		// 			// console.log(w);
-		// 			$('#t-mi').empty();
-		// 			$('#t-mi').append(res.data.result.dist + '米');
-		// 			$('#t-fz').empty();
-		// 			$('#t-fz').append(res.data.result.flen + '分钟');
-
-		// 			if (that.LXdhEnd != null) {
-		// 				that.map.removeLayer(that.LXdhEnd);
-		// 			}
-		// 			if (that.LxdhLine != null) {
-		// 				that.map.removeLayer(that.LxdhLine);
-		// 			}
-
-		// 			//绘制起点和终点
-		// 			that.LXdhEnd = L.markerClusterGroup();
-
-		// 			var transportIcon = L.Icon.extend({ //图标初始化
-		// 				options: {
-		// 					iconSize: [56, 32], // 图标尺寸
-		// 				}
-		// 			});
-
-		// 			var zd = new transportIcon({
-		// 				iconUrl: './img/zd2.png'
-		// 			});
-		// 			// var qd = new transportIcon({
-		// 			// 	iconUrl: './img/qd.png'
-		// 			// });
-
-		// 			var qdzb = res.data.result.query;
-
-		// 			var x = resdata[resdata.length - 1][0];
-		// 			var y = resdata[resdata.length - 1][1];
-
-		// 			// that.LXdhEnd.addLayer(L.marker([y, x], {//不要图标
-		// 			// 	icon: zd,
-		// 			// }));
-		// 			// markers.addLayer(L.marker([qdzb.start.y, qdzb.start.x], {
-		// 			// 	icon: qd,
-		// 			// }));
-
-		// 			that.map.addLayer(that.LXdhEnd);
-
-		// 			that.showPolyLine(data);
-		// 		}
-		// 	});
-		// },
-		// showPolyLine(xy) {
-		// 	var that = this;
-		// 	that.LxdhLine = L.polyline(xy, {
-		// 		color: '#169BD5'
-		// 	}).addTo(that.map);
-		// 	that.map.fitBounds(that.LxdhLine.getBounds())
-		// },
-		refreshMap() {
-			console.log('shuaxin')
-
-		},
-	},
-	// created() {},
-	mounted() {
-		this.getDataList();
-		// var time = setInterval(() => {
-		// 	if (this.haveShishiweizhi == 1) {
-		// 		this.getLocationData();
-		// 		// console.log(this.haveShishiweizhi)
-
-		// 	} else if (this.haveShishiweizhi == 2) {
-		// 		clearInterval(time);
-		// 		time = null;
-		// 	}
-		// }, 3000)
-	},
-	wacth: {}
-})
diff --git a/xcxMapSecurityPosition/lid/MarkerCluster.Default.css b/xcxMapSecurityPosition/lid/MarkerCluster.Default.css
deleted file mode 100644
index bbc8c9f..0000000
--- a/xcxMapSecurityPosition/lid/MarkerCluster.Default.css
+++ /dev/null
@@ -1,60 +0,0 @@
-.marker-cluster-small {
-	background-color: rgba(181, 226, 140, 0.6);
-	}
-.marker-cluster-small div {
-	background-color: rgba(110, 204, 57, 0.6);
-	}
-
-.marker-cluster-medium {
-	background-color: rgba(241, 211, 87, 0.6);
-	}
-.marker-cluster-medium div {
-	background-color: rgba(240, 194, 12, 0.6);
-	}
-
-.marker-cluster-large {
-	background-color: rgba(253, 156, 115, 0.6);
-	}
-.marker-cluster-large div {
-	background-color: rgba(241, 128, 23, 0.6);
-	}
-
-	/* IE 6-8 fallback colors */
-.leaflet-oldie .marker-cluster-small {
-	background-color: rgb(181, 226, 140);
-	}
-.leaflet-oldie .marker-cluster-small div {
-	background-color: rgb(110, 204, 57);
-	}
-
-.leaflet-oldie .marker-cluster-medium {
-	background-color: rgb(241, 211, 87);
-	}
-.leaflet-oldie .marker-cluster-medium div {
-	background-color: rgb(240, 194, 12);
-	}
-
-.leaflet-oldie .marker-cluster-large {
-	background-color: rgb(253, 156, 115);
-	}
-.leaflet-oldie .marker-cluster-large div {
-	background-color: rgb(241, 128, 23);
-}
-
-.marker-cluster {
-	background-clip: padding-box;
-	border-radius: 20px;
-	}
-.marker-cluster div {
-	width: 30px;
-	height: 30px;
-	margin-left: 5px;
-	margin-top: 5px;
-
-	text-align: center;
-	border-radius: 15px;
-	font: 12px "Helvetica Neue", Arial, Helvetica, sans-serif;
-	}
-.marker-cluster span {
-	line-height: 30px;
-	}
\ No newline at end of file
diff --git a/xcxMapSecurityPosition/lid/MarkerCluster.css b/xcxMapSecurityPosition/lid/MarkerCluster.css
deleted file mode 100644
index c60d71b..0000000
--- a/xcxMapSecurityPosition/lid/MarkerCluster.css
+++ /dev/null
@@ -1,14 +0,0 @@
-.leaflet-cluster-anim .leaflet-marker-icon, .leaflet-cluster-anim .leaflet-marker-shadow {
-	-webkit-transition: -webkit-transform 0.3s ease-out, opacity 0.3s ease-in;
-	-moz-transition: -moz-transform 0.3s ease-out, opacity 0.3s ease-in;
-	-o-transition: -o-transform 0.3s ease-out, opacity 0.3s ease-in;
-	transition: transform 0.3s ease-out, opacity 0.3s ease-in;
-}
-
-.leaflet-cluster-spider-leg {
-	/* stroke-dashoffset (duration and function) should match with leaflet-marker-icon transform in order to track it exactly */
-	-webkit-transition: -webkit-stroke-dashoffset 0.3s ease-out, -webkit-stroke-opacity 0.3s ease-in;
-	-moz-transition: -moz-stroke-dashoffset 0.3s ease-out, -moz-stroke-opacity 0.3s ease-in;
-	-o-transition: -o-stroke-dashoffset 0.3s ease-out, -o-stroke-opacity 0.3s ease-in;
-	transition: stroke-dashoffset 0.3s ease-out, stroke-opacity 0.3s ease-in;
-}
diff --git a/xcxMapSecurityPosition/lid/axios.js b/xcxMapSecurityPosition/lid/axios.js
deleted file mode 100644
index b3adf30..0000000
--- a/xcxMapSecurityPosition/lid/axios.js
+++ /dev/null
@@ -1,659 +0,0 @@
-/* axios v0.21.1 | (c) 2020 by Matt Zabriskie */ ! function(e, t) {
-	"object" == typeof exports && "object" == typeof module ? module.exports = t() : "function" == typeof define &&
-		define.amd ? define([], t) : "object" == typeof exports ? exports.axios = t() : e.axios = t()
-}(this, function() {
-	return function(e) {
-		function t(r) {
-			if (n[r]) return n[r].exports;
-			var o = n[r] = {
-				exports: {},
-				id: r,
-				loaded: !1
-			};
-			return e[r].call(o.exports, o, o.exports, t), o.loaded = !0, o.exports
-		}
-		var n = {};
-		return t.m = e, t.c = n, t.p = "", t(0)
-	}([function(e, t, n) {
-		e.exports = n(1)
-	}, function(e, t, n) {
-		"use strict";
-
-		function r(e) {
-			var t = new i(e),
-				n = s(i.prototype.request, t);
-			return o.extend(n, i.prototype, t), o.extend(n, t), n
-		}
-		var o = n(2),
-			s = n(3),
-			i = n(4),
-			a = n(22),
-			u = n(10),
-			c = r(u);
-		c.Axios = i, c.create = function(e) {
-			return r(a(c.defaults, e))
-		}, c.Cancel = n(23), c.CancelToken = n(24), c.isCancel = n(9), c.all = function(e) {
-			return Promise.all(e)
-		}, c.spread = n(25), c.isAxiosError = n(26), e.exports = c, e.exports.default = c
-	}, function(e, t, n) {
-		"use strict";
-
-		function r(e) {
-			return "[object Array]" === R.call(e)
-		}
-
-		function o(e) {
-			return "undefined" == typeof e
-		}
-
-		function s(e) {
-			return null !== e && !o(e) && null !== e.constructor && !o(e.constructor) && "function" ==
-				typeof e.constructor.isBuffer && e.constructor.isBuffer(e)
-		}
-
-		function i(e) {
-			return "[object ArrayBuffer]" === R.call(e)
-		}
-
-		function a(e) {
-			return "undefined" != typeof FormData && e instanceof FormData
-		}
-
-		function u(e) {
-			var t;
-			return t = "undefined" != typeof ArrayBuffer && ArrayBuffer.isView ? ArrayBuffer.isView(e) :
-				e && e.buffer && e.buffer instanceof ArrayBuffer
-		}
-
-		function c(e) {
-			return "string" == typeof e
-		}
-
-		function f(e) {
-			return "number" == typeof e
-		}
-
-		function p(e) {
-			return null !== e && "object" == typeof e
-		}
-
-		function d(e) {
-			if ("[object Object]" !== R.call(e)) return !1;
-			var t = Object.getPrototypeOf(e);
-			return null === t || t === Object.prototype
-		}
-
-		function l(e) {
-			return "[object Date]" === R.call(e)
-		}
-
-		function h(e) {
-			return "[object File]" === R.call(e)
-		}
-
-		function m(e) {
-			return "[object Blob]" === R.call(e)
-		}
-
-		function y(e) {
-			return "[object Function]" === R.call(e)
-		}
-
-		function g(e) {
-			return p(e) && y(e.pipe)
-		}
-
-		function v(e) {
-			return "undefined" != typeof URLSearchParams && e instanceof URLSearchParams
-		}
-
-		function x(e) {
-			return e.replace(/^\s*/, "").replace(/\s*$/, "")
-		}
-
-		function w() {
-			return ("undefined" == typeof navigator || "ReactNative" !== navigator.product &&
-				"NativeScript" !== navigator.product && "NS" !== navigator.product) && (
-				"undefined" != typeof window && "undefined" != typeof document)
-		}
-
-		function b(e, t) {
-			if (null !== e && "undefined" != typeof e)
-				if ("object" != typeof e && (e = [e]), r(e))
-					for (var n = 0, o = e.length; n < o; n++) t.call(null, e[n], n, e);
-				else
-					for (var s in e) Object.prototype.hasOwnProperty.call(e, s) && t.call(null, e[s], s,
-						e)
-		}
-
-		function E() {
-			function e(e, n) {
-				d(t[n]) && d(e) ? t[n] = E(t[n], e) : d(e) ? t[n] = E({}, e) : r(e) ? t[n] = e.slice() :
-					t[n] = e
-			}
-			for (var t = {}, n = 0, o = arguments.length; n < o; n++) b(arguments[n], e);
-			return t
-		}
-
-		function j(e, t, n) {
-			return b(t, function(t, r) {
-				n && "function" == typeof t ? e[r] = S(t, n) : e[r] = t
-			}), e
-		}
-
-		function C(e) {
-			return 65279 === e.charCodeAt(0) && (e = e.slice(1)), e
-		}
-		var S = n(3),
-			R = Object.prototype.toString;
-		e.exports = {
-			isArray: r,
-			isArrayBuffer: i,
-			isBuffer: s,
-			isFormData: a,
-			isArrayBufferView: u,
-			isString: c,
-			isNumber: f,
-			isObject: p,
-			isPlainObject: d,
-			isUndefined: o,
-			isDate: l,
-			isFile: h,
-			isBlob: m,
-			isFunction: y,
-			isStream: g,
-			isURLSearchParams: v,
-			isStandardBrowserEnv: w,
-			forEach: b,
-			merge: E,
-			extend: j,
-			trim: x,
-			stripBOM: C
-		}
-	}, function(e, t) {
-		"use strict";
-		e.exports = function(e, t) {
-			return function() {
-				for (var n = new Array(arguments.length), r = 0; r < n.length; r++) n[r] =
-					arguments[r];
-				return e.apply(t, n)
-			}
-		}
-	}, function(e, t, n) {
-		"use strict";
-
-		function r(e) {
-			this.defaults = e, this.interceptors = {
-				request: new i,
-				response: new i
-			}
-		}
-		var o = n(2),
-			s = n(5),
-			i = n(6),
-			a = n(7),
-			u = n(22);
-		r.prototype.request = function(e) {
-			"string" == typeof e ? (e = arguments[1] || {}, e.url = arguments[0]) : e = e || {}, e =
-				u(this.defaults, e), e.method ? e.method = e.method.toLowerCase() : this.defaults
-				.method ? e.method = this.defaults.method.toLowerCase() : e.method = "get";
-			var t = [a, void 0],
-				n = Promise.resolve(e);
-			for (this.interceptors.request.forEach(function(e) {
-					t.unshift(e.fulfilled, e.rejected)
-				}), this.interceptors.response.forEach(function(e) {
-					t.push(e.fulfilled, e.rejected)
-				}); t.length;) n = n.then(t.shift(), t.shift());
-			return n
-		}, r.prototype.getUri = function(e) {
-			return e = u(this.defaults, e), s(e.url, e.params, e.paramsSerializer).replace(/^\?/,
-				"")
-		}, o.forEach(["delete", "get", "head", "options"], function(e) {
-			r.prototype[e] = function(t, n) {
-				return this.request(u(n || {}, {
-					method: e,
-					url: t,
-					data: (n || {}).data
-				}))
-			}
-		}), o.forEach(["post", "put", "patch"], function(e) {
-			r.prototype[e] = function(t, n, r) {
-				return this.request(u(r || {}, {
-					method: e,
-					url: t,
-					data: n
-				}))
-			}
-		}), e.exports = r
-	}, function(e, t, n) {
-		"use strict";
-
-		function r(e) {
-			return encodeURIComponent(e).replace(/%3A/gi, ":").replace(/%24/g, "$").replace(/%2C/gi,
-				",").replace(/%20/g, "+").replace(/%5B/gi, "[").replace(/%5D/gi, "]")
-		}
-		var o = n(2);
-		e.exports = function(e, t, n) {
-			if (!t) return e;
-			var s;
-			if (n) s = n(t);
-			else if (o.isURLSearchParams(t)) s = t.toString();
-			else {
-				var i = [];
-				o.forEach(t, function(e, t) {
-					null !== e && "undefined" != typeof e && (o.isArray(e) ? t += "[]" :
-						e = [e], o.forEach(e, function(e) {
-							o.isDate(e) ? e = e.toISOString() : o.isObject(e) && (
-								e = JSON.stringify(e)), i.push(r(t) + "=" + r(
-								e))
-						}))
-				}), s = i.join("&")
-			}
-			if (s) {
-				var a = e.indexOf("#");
-				a !== -1 && (e = e.slice(0, a)), e += (e.indexOf("?") === -1 ? "?" : "&") + s
-			}
-			return e
-		}
-	}, function(e, t, n) {
-		"use strict";
-
-		function r() {
-			this.handlers = []
-		}
-		var o = n(2);
-		r.prototype.use = function(e, t) {
-			return this.handlers.push({
-				fulfilled: e,
-				rejected: t
-			}), this.handlers.length - 1
-		}, r.prototype.eject = function(e) {
-			this.handlers[e] && (this.handlers[e] = null)
-		}, r.prototype.forEach = function(e) {
-			o.forEach(this.handlers, function(t) {
-				null !== t && e(t)
-			})
-		}, e.exports = r
-	}, function(e, t, n) {
-		"use strict";
-
-		function r(e) {
-			e.cancelToken && e.cancelToken.throwIfRequested()
-		}
-		var o = n(2),
-			s = n(8),
-			i = n(9),
-			a = n(10);
-		e.exports = function(e) {
-			r(e), e.headers = e.headers || {}, e.data = s(e.data, e.headers, e.transformRequest), e
-				.headers = o.merge(e.headers.common || {}, e.headers[e.method] || {}, e.headers), o
-				.forEach(["delete", "get", "head", "post", "put", "patch", "common"], function(t) {
-					delete e.headers[t]
-				});
-			var t = e.adapter || a.adapter;
-			return t(e).then(function(t) {
-				return r(e), t.data = s(t.data, t.headers, e.transformResponse), t
-			}, function(t) {
-				return i(t) || (r(e), t && t.response && (t.response.data = s(t.response
-					.data, t.response.headers, e.transformResponse))), Promise.reject(t)
-			})
-		}
-	}, function(e, t, n) {
-		"use strict";
-		var r = n(2);
-		e.exports = function(e, t, n) {
-			return r.forEach(n, function(n) {
-				e = n(e, t)
-			}), e
-		}
-	}, function(e, t) {
-		"use strict";
-		e.exports = function(e) {
-			return !(!e || !e.__CANCEL__)
-		}
-	}, function(e, t, n) {
-		"use strict";
-
-		function r(e, t) {
-			!s.isUndefined(e) && s.isUndefined(e["Content-Type"]) && (e["Content-Type"] = t)
-		}
-
-		function o() {
-			var e;
-			return "undefined" != typeof XMLHttpRequest ? e = n(12) : "undefined" != typeof process &&
-				"[object process]" === Object.prototype.toString.call(process) && (e = n(12)), e
-		}
-		var s = n(2),
-			i = n(11),
-			a = {
-				"Content-Type": "application/x-www-form-urlencoded"
-			},
-			u = {
-				adapter: o(),
-				transformRequest: [function(e, t) {
-					return i(t, "Accept"), i(t, "Content-Type"), s.isFormData(e) || s
-						.isArrayBuffer(e) || s.isBuffer(e) || s.isStream(e) || s.isFile(e) || s
-						.isBlob(e) ? e : s.isArrayBufferView(e) ? e.buffer : s
-						.isURLSearchParams(e) ? (r(t,
-								"application/x-www-form-urlencoded;charset=utf-8"), e
-						.toString()) : s.isObject(e) ? (r(t, "application/json;charset=utf-8"),
-							JSON.stringify(e)) : e
-				}],
-				transformResponse: [function(e) {
-					if ("string" == typeof e) try {
-						e = JSON.parse(e)
-					} catch (e) {}
-					return e
-				}],
-				timeout: 0,
-				xsrfCookieName: "XSRF-TOKEN",
-				xsrfHeaderName: "X-XSRF-TOKEN",
-				maxContentLength: -1,
-				maxBodyLength: -1,
-				validateStatus: function(e) {
-					return e >= 200 && e < 300
-				}
-			};
-		u.headers = {
-			common: {
-				Accept: "application/json, text/plain, */*"
-			}
-		}, s.forEach(["delete", "get", "head"], function(e) {
-			u.headers[e] = {}
-		}), s.forEach(["post", "put", "patch"], function(e) {
-			u.headers[e] = s.merge(a)
-		}), e.exports = u
-	}, function(e, t, n) {
-		"use strict";
-		var r = n(2);
-		e.exports = function(e, t) {
-			r.forEach(e, function(n, r) {
-				r !== t && r.toUpperCase() === t.toUpperCase() && (e[t] = n, delete e[r])
-			})
-		}
-	}, function(e, t, n) {
-		"use strict";
-		var r = n(2),
-			o = n(13),
-			s = n(16),
-			i = n(5),
-			a = n(17),
-			u = n(20),
-			c = n(21),
-			f = n(14);
-		e.exports = function(e) {
-			return new Promise(function(t, n) {
-				var p = e.data,
-					d = e.headers;
-				r.isFormData(p) && delete d["Content-Type"];
-				var l = new XMLHttpRequest;
-				if (e.auth) {
-					var h = e.auth.username || "",
-						m = e.auth.password ? unescape(encodeURIComponent(e.auth
-						.password)) : "";
-					d.Authorization = "Basic " + btoa(h + ":" + m)
-				}
-				var y = a(e.baseURL, e.url);
-				if (l.open(e.method.toUpperCase(), i(y, e.params, e.paramsSerializer), !0),
-					l.timeout = e.timeout, l.onreadystatechange = function() {
-						if (l && 4 === l.readyState && (0 !== l.status || l.responseURL &&
-								0 === l.responseURL.indexOf("file:"))) {
-							var r = "getAllResponseHeaders" in l ? u(l
-									.getAllResponseHeaders()) : null,
-								s = e.responseType && "text" !== e.responseType ? l
-								.response : l.responseText,
-								i = {
-									data: s,
-									status: l.status,
-									statusText: l.statusText,
-									headers: r,
-									config: e,
-									request: l
-								};
-							o(t, n, i), l = null
-						}
-					}, l.onabort = function() {
-						l && (n(f("Request aborted", e, "ECONNABORTED", l)), l = null)
-					}, l.onerror = function() {
-						n(f("Network Error", e, null, l)), l = null
-					}, l.ontimeout = function() {
-						var t = "timeout of " + e.timeout + "ms exceeded";
-						e.timeoutErrorMessage && (t = e.timeoutErrorMessage), n(f(t, e,
-							"ECONNABORTED", l)), l = null
-					}, r.isStandardBrowserEnv()) {
-					var g = (e.withCredentials || c(y)) && e.xsrfCookieName ? s.read(e
-						.xsrfCookieName) : void 0;
-					g && (d[e.xsrfHeaderName] = g)
-				}
-				if ("setRequestHeader" in l && r.forEach(d, function(e, t) {
-						"undefined" == typeof p && "content-type" === t.toLowerCase() ?
-							delete d[t] : l.setRequestHeader(t, e)
-					}), r.isUndefined(e.withCredentials) || (l.withCredentials = !!e
-						.withCredentials), e.responseType) try {
-					l.responseType = e.responseType
-				} catch (t) {
-					if ("json" !== e.responseType) throw t
-				}
-				"function" == typeof e.onDownloadProgress && l.addEventListener("progress",
-						e.onDownloadProgress), "function" == typeof e.onUploadProgress && l
-					.upload && l.upload.addEventListener("progress", e.onUploadProgress), e
-					.cancelToken && e.cancelToken.promise.then(function(e) {
-						l && (l.abort(), n(e), l = null)
-					}), p || (p = null), l.send(p)
-			})
-		}
-	}, function(e, t, n) {
-		"use strict";
-		var r = n(14);
-		e.exports = function(e, t, n) {
-			var o = n.config.validateStatus;
-			n.status && o && !o(n.status) ? t(r("Request failed with status code " + n.status, n
-				.config, null, n.request, n)) : e(n)
-		}
-	}, function(e, t, n) {
-		"use strict";
-		var r = n(15);
-		e.exports = function(e, t, n, o, s) {
-			var i = new Error(e);
-			return r(i, t, n, o, s)
-		}
-	}, function(e, t) {
-		"use strict";
-		e.exports = function(e, t, n, r, o) {
-			return e.config = t, n && (e.code = n), e.request = r, e.response = o, e
-				.isAxiosError = !0, e.toJSON = function() {
-					return {
-						message: this.message,
-						name: this.name,
-						description: this.description,
-						number: this.number,
-						fileName: this.fileName,
-						lineNumber: this.lineNumber,
-						columnNumber: this.columnNumber,
-						stack: this.stack,
-						config: this.config,
-						code: this.code
-					}
-				}, e
-		}
-	}, function(e, t, n) {
-		"use strict";
-		var r = n(2);
-		e.exports = r.isStandardBrowserEnv() ? function() {
-			return {
-				write: function(e, t, n, o, s, i) {
-					var a = [];
-					a.push(e + "=" + encodeURIComponent(t)), r.isNumber(n) && a.push(
-							"expires=" + new Date(n).toGMTString()), r.isString(o) && a.push(
-							"path=" + o), r.isString(s) && a.push("domain=" + s), i === !0 && a
-						.push("secure"), document.cookie = a.join("; ")
-				},
-				read: function(e) {
-					var t = document.cookie.match(new RegExp("(^|;\\s*)(" + e + ")=([^;]*)"));
-					return t ? decodeURIComponent(t[3]) : null
-				},
-				remove: function(e) {
-					this.write(e, "", Date.now() - 864e5)
-				}
-			}
-		}() : function() {
-			return {
-				write: function() {},
-				read: function() {
-					return null
-				},
-				remove: function() {}
-			}
-		}()
-	}, function(e, t, n) {
-		"use strict";
-		var r = n(18),
-			o = n(19);
-		e.exports = function(e, t) {
-			return e && !r(t) ? o(e, t) : t
-		}
-	}, function(e, t) {
-		"use strict";
-		e.exports = function(e) {
-			return /^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)
-		}
-	}, function(e, t) {
-		"use strict";
-		e.exports = function(e, t) {
-			return t ? e.replace(/\/+$/, "") + "/" + t.replace(/^\/+/, "") : e
-		}
-	}, function(e, t, n) {
-		"use strict";
-		var r = n(2),
-			o = ["age", "authorization", "content-length", "content-type", "etag", "expires", "from",
-				"host", "if-modified-since", "if-unmodified-since", "last-modified", "location",
-				"max-forwards", "proxy-authorization", "referer", "retry-after", "user-agent"
-			];
-		e.exports = function(e) {
-			var t, n, s, i = {};
-			return e ? (r.forEach(e.split("\n"), function(e) {
-				if (s = e.indexOf(":"), t = r.trim(e.substr(0, s)).toLowerCase(), n = r
-					.trim(e.substr(s + 1)), t) {
-					if (i[t] && o.indexOf(t) >= 0) return;
-					"set-cookie" === t ? i[t] = (i[t] ? i[t] : []).concat([n]) : i[t] =
-						i[t] ? i[t] + ", " + n : n
-				}
-			}), i) : i
-		}
-	}, function(e, t, n) {
-		"use strict";
-		var r = n(2);
-		e.exports = r.isStandardBrowserEnv() ? function() {
-			function e(e) {
-				var t = e;
-				return n && (o.setAttribute("href", t), t = o.href), o.setAttribute("href", t), {
-					href: o.href,
-					protocol: o.protocol ? o.protocol.replace(/:$/, "") : "",
-					host: o.host,
-					search: o.search ? o.search.replace(/^\?/, "") : "",
-					hash: o.hash ? o.hash.replace(/^#/, "") : "",
-					hostname: o.hostname,
-					port: o.port,
-					pathname: "/" === o.pathname.charAt(0) ? o.pathname : "/" + o.pathname
-				}
-			}
-			var t, n = /(msie|trident)/i.test(navigator.userAgent),
-				o = document.createElement("a");
-			return t = e(window.location.href),
-				function(n) {
-					var o = r.isString(n) ? e(n) : n;
-					return o.protocol === t.protocol && o.host === t.host
-				}
-		}() : function() {
-			return function() {
-				return !0
-			}
-		}()
-	}, function(e, t, n) {
-		"use strict";
-		var r = n(2);
-		e.exports = function(e, t) {
-			function n(e, t) {
-				return r.isPlainObject(e) && r.isPlainObject(t) ? r.merge(e, t) : r.isPlainObject(
-					t) ? r.merge({}, t) : r.isArray(t) ? t.slice() : t
-			}
-
-			function o(o) {
-				r.isUndefined(t[o]) ? r.isUndefined(e[o]) || (s[o] = n(void 0, e[o])) : s[o] = n(e[
-					o], t[o])
-			}
-			t = t || {};
-			var s = {},
-				i = ["url", "method", "data"],
-				a = ["headers", "auth", "proxy", "params"],
-				u = ["baseURL", "transformRequest", "transformResponse", "paramsSerializer",
-					"timeout", "timeoutMessage", "withCredentials", "adapter", "responseType",
-					"xsrfCookieName", "xsrfHeaderName", "onUploadProgress", "onDownloadProgress",
-					"decompress", "maxContentLength", "maxBodyLength", "maxRedirects", "transport",
-					"httpAgent", "httpsAgent", "cancelToken", "socketPath", "responseEncoding"
-				],
-				c = ["validateStatus"];
-			r.forEach(i, function(e) {
-				r.isUndefined(t[e]) || (s[e] = n(void 0, t[e]))
-			}), r.forEach(a, o), r.forEach(u, function(o) {
-				r.isUndefined(t[o]) ? r.isUndefined(e[o]) || (s[o] = n(void 0, e[o])) : s[
-					o] = n(void 0, t[o])
-			}), r.forEach(c, function(r) {
-				r in t ? s[r] = n(e[r], t[r]) : r in e && (s[r] = n(void 0, e[r]))
-			});
-			var f = i.concat(a).concat(u).concat(c),
-				p = Object.keys(e).concat(Object.keys(t)).filter(function(e) {
-					return f.indexOf(e) === -1
-				});
-			return r.forEach(p, o), s
-		}
-	}, function(e, t) {
-		"use strict";
-
-		function n(e) {
-			this.message = e
-		}
-		n.prototype.toString = function() {
-			return "Cancel" + (this.message ? ": " + this.message : "")
-		}, n.prototype.__CANCEL__ = !0, e.exports = n
-	}, function(e, t, n) {
-		"use strict";
-
-		function r(e) {
-			if ("function" != typeof e) throw new TypeError("executor must be a function.");
-			var t;
-			this.promise = new Promise(function(e) {
-				t = e
-			});
-			var n = this;
-			e(function(e) {
-				n.reason || (n.reason = new o(e), t(n.reason))
-			})
-		}
-		var o = n(23);
-		r.prototype.throwIfRequested = function() {
-			if (this.reason) throw this.reason
-		}, r.source = function() {
-			var e, t = new r(function(t) {
-				e = t
-			});
-			return {
-				token: t,
-				cancel: e
-			}
-		}, e.exports = r
-	}, function(e, t) {
-		"use strict";
-		e.exports = function(e) {
-			return function(t) {
-				return e.apply(null, t)
-			}
-		}
-	}, function(e, t) {
-		"use strict";
-		e.exports = function(e) {
-			return "object" == typeof e && e.isAxiosError === !0
-		}
-	}])
-});
-//# sourceMappingURL=axios.min.map
diff --git a/xcxMapSecurityPosition/lid/elementUi.css b/xcxMapSecurityPosition/lid/elementUi.css
deleted file mode 100644
index f3a3ab7..0000000
--- a/xcxMapSecurityPosition/lid/elementUi.css
+++ /dev/null
@@ -1 +0,0 @@
-@charset "UTF-8";.el-pagination--small .arrow.disabled,.el-table .hidden-columns,.el-table td.is-hidden>*,.el-table th.is-hidden>*,.el-table--hidden{visibility:hidden}.el-input__suffix,.el-tree.is-dragging .el-tree-node__content *{pointer-events:none}.el-dropdown .el-dropdown-selfdefine:focus:active,.el-dropdown .el-dropdown-selfdefine:focus:not(.focusing),.el-message__closeBtn:focus,.el-message__content:focus,.el-popover:focus,.el-popover:focus:active,.el-popover__reference:focus:hover,.el-popover__reference:focus:not(.focusing),.el-rate:active,.el-rate:focus,.el-tooltip:focus:hover,.el-tooltip:focus:not(.focusing),.el-upload-list__item.is-success:active,.el-upload-list__item.is-success:not(.focusing):focus{outline-width:0}@font-face{font-family:element-icons;src:url(fonts/element-icons.woff) format("woff"),url(fonts/element-icons.ttf) format("truetype");font-weight:400;font-display:"auto";font-style:normal}[class*=" el-icon-"],[class^=el-icon-]{font-family:element-icons!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;vertical-align:baseline;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-icon-ice-cream-round:before{content:"\e6a0"}.el-icon-ice-cream-square:before{content:"\e6a3"}.el-icon-lollipop:before{content:"\e6a4"}.el-icon-potato-strips:before{content:"\e6a5"}.el-icon-milk-tea:before{content:"\e6a6"}.el-icon-ice-drink:before{content:"\e6a7"}.el-icon-ice-tea:before{content:"\e6a9"}.el-icon-coffee:before{content:"\e6aa"}.el-icon-orange:before{content:"\e6ab"}.el-icon-pear:before{content:"\e6ac"}.el-icon-apple:before{content:"\e6ad"}.el-icon-cherry:before{content:"\e6ae"}.el-icon-watermelon:before{content:"\e6af"}.el-icon-grape:before{content:"\e6b0"}.el-icon-refrigerator:before{content:"\e6b1"}.el-icon-goblet-square-full:before{content:"\e6b2"}.el-icon-goblet-square:before{content:"\e6b3"}.el-icon-goblet-full:before{content:"\e6b4"}.el-icon-goblet:before{content:"\e6b5"}.el-icon-cold-drink:before{content:"\e6b6"}.el-icon-coffee-cup:before{content:"\e6b8"}.el-icon-water-cup:before{content:"\e6b9"}.el-icon-hot-water:before{content:"\e6ba"}.el-icon-ice-cream:before{content:"\e6bb"}.el-icon-dessert:before{content:"\e6bc"}.el-icon-sugar:before{content:"\e6bd"}.el-icon-tableware:before{content:"\e6be"}.el-icon-burger:before{content:"\e6bf"}.el-icon-knife-fork:before{content:"\e6c1"}.el-icon-fork-spoon:before{content:"\e6c2"}.el-icon-chicken:before{content:"\e6c3"}.el-icon-food:before{content:"\e6c4"}.el-icon-dish-1:before{content:"\e6c5"}.el-icon-dish:before{content:"\e6c6"}.el-icon-moon-night:before{content:"\e6ee"}.el-icon-moon:before{content:"\e6f0"}.el-icon-cloudy-and-sunny:before{content:"\e6f1"}.el-icon-partly-cloudy:before{content:"\e6f2"}.el-icon-cloudy:before{content:"\e6f3"}.el-icon-sunny:before{content:"\e6f6"}.el-icon-sunset:before{content:"\e6f7"}.el-icon-sunrise-1:before{content:"\e6f8"}.el-icon-sunrise:before{content:"\e6f9"}.el-icon-heavy-rain:before{content:"\e6fa"}.el-icon-lightning:before{content:"\e6fb"}.el-icon-light-rain:before{content:"\e6fc"}.el-icon-wind-power:before{content:"\e6fd"}.el-icon-baseball:before{content:"\e712"}.el-icon-soccer:before{content:"\e713"}.el-icon-football:before{content:"\e715"}.el-icon-basketball:before{content:"\e716"}.el-icon-ship:before{content:"\e73f"}.el-icon-truck:before{content:"\e740"}.el-icon-bicycle:before{content:"\e741"}.el-icon-mobile-phone:before{content:"\e6d3"}.el-icon-service:before{content:"\e6d4"}.el-icon-key:before{content:"\e6e2"}.el-icon-unlock:before{content:"\e6e4"}.el-icon-lock:before{content:"\e6e5"}.el-icon-watch:before{content:"\e6fe"}.el-icon-watch-1:before{content:"\e6ff"}.el-icon-timer:before{content:"\e702"}.el-icon-alarm-clock:before{content:"\e703"}.el-icon-map-location:before{content:"\e704"}.el-icon-delete-location:before{content:"\e705"}.el-icon-add-location:before{content:"\e706"}.el-icon-location-information:before{content:"\e707"}.el-icon-location-outline:before{content:"\e708"}.el-icon-location:before{content:"\e79e"}.el-icon-place:before{content:"\e709"}.el-icon-discover:before{content:"\e70a"}.el-icon-first-aid-kit:before{content:"\e70b"}.el-icon-trophy-1:before{content:"\e70c"}.el-icon-trophy:before{content:"\e70d"}.el-icon-medal:before{content:"\e70e"}.el-icon-medal-1:before{content:"\e70f"}.el-icon-stopwatch:before{content:"\e710"}.el-icon-mic:before{content:"\e711"}.el-icon-copy-document:before{content:"\e718"}.el-icon-full-screen:before{content:"\e719"}.el-icon-switch-button:before{content:"\e71b"}.el-icon-aim:before{content:"\e71c"}.el-icon-crop:before{content:"\e71d"}.el-icon-odometer:before{content:"\e71e"}.el-icon-time:before{content:"\e71f"}.el-icon-bangzhu:before{content:"\e724"}.el-icon-close-notification:before{content:"\e726"}.el-icon-microphone:before{content:"\e727"}.el-icon-turn-off-microphone:before{content:"\e728"}.el-icon-position:before{content:"\e729"}.el-icon-postcard:before{content:"\e72a"}.el-icon-message:before{content:"\e72b"}.el-icon-chat-line-square:before{content:"\e72d"}.el-icon-chat-dot-square:before{content:"\e72e"}.el-icon-chat-dot-round:before{content:"\e72f"}.el-icon-chat-square:before{content:"\e730"}.el-icon-chat-line-round:before{content:"\e731"}.el-icon-chat-round:before{content:"\e732"}.el-icon-set-up:before{content:"\e733"}.el-icon-turn-off:before{content:"\e734"}.el-icon-open:before{content:"\e735"}.el-icon-connection:before{content:"\e736"}.el-icon-link:before{content:"\e737"}.el-icon-cpu:before{content:"\e738"}.el-icon-thumb:before{content:"\e739"}.el-icon-female:before{content:"\e73a"}.el-icon-male:before{content:"\e73b"}.el-icon-guide:before{content:"\e73c"}.el-icon-news:before{content:"\e73e"}.el-icon-price-tag:before{content:"\e744"}.el-icon-discount:before{content:"\e745"}.el-icon-wallet:before{content:"\e747"}.el-icon-coin:before{content:"\e748"}.el-icon-money:before{content:"\e749"}.el-icon-bank-card:before{content:"\e74a"}.el-icon-box:before{content:"\e74b"}.el-icon-present:before{content:"\e74c"}.el-icon-sell:before{content:"\e6d5"}.el-icon-sold-out:before{content:"\e6d6"}.el-icon-shopping-bag-2:before{content:"\e74d"}.el-icon-shopping-bag-1:before{content:"\e74e"}.el-icon-shopping-cart-2:before{content:"\e74f"}.el-icon-shopping-cart-1:before{content:"\e750"}.el-icon-shopping-cart-full:before{content:"\e751"}.el-icon-smoking:before{content:"\e752"}.el-icon-no-smoking:before{content:"\e753"}.el-icon-house:before{content:"\e754"}.el-icon-table-lamp:before{content:"\e755"}.el-icon-school:before{content:"\e756"}.el-icon-office-building:before{content:"\e757"}.el-icon-toilet-paper:before{content:"\e758"}.el-icon-notebook-2:before{content:"\e759"}.el-icon-notebook-1:before{content:"\e75a"}.el-icon-files:before{content:"\e75b"}.el-icon-collection:before{content:"\e75c"}.el-icon-receiving:before{content:"\e75d"}.el-icon-suitcase-1:before{content:"\e760"}.el-icon-suitcase:before{content:"\e761"}.el-icon-film:before{content:"\e763"}.el-icon-collection-tag:before{content:"\e765"}.el-icon-data-analysis:before{content:"\e766"}.el-icon-pie-chart:before{content:"\e767"}.el-icon-data-board:before{content:"\e768"}.el-icon-data-line:before{content:"\e76d"}.el-icon-reading:before{content:"\e769"}.el-icon-magic-stick:before{content:"\e76a"}.el-icon-coordinate:before{content:"\e76b"}.el-icon-mouse:before{content:"\e76c"}.el-icon-brush:before{content:"\e76e"}.el-icon-headset:before{content:"\e76f"}.el-icon-umbrella:before{content:"\e770"}.el-icon-scissors:before{content:"\e771"}.el-icon-mobile:before{content:"\e773"}.el-icon-attract:before{content:"\e774"}.el-icon-monitor:before{content:"\e775"}.el-icon-search:before{content:"\e778"}.el-icon-takeaway-box:before{content:"\e77a"}.el-icon-paperclip:before{content:"\e77d"}.el-icon-printer:before{content:"\e77e"}.el-icon-document-add:before{content:"\e782"}.el-icon-document:before{content:"\e785"}.el-icon-document-checked:before{content:"\e786"}.el-icon-document-copy:before{content:"\e787"}.el-icon-document-delete:before{content:"\e788"}.el-icon-document-remove:before{content:"\e789"}.el-icon-tickets:before{content:"\e78b"}.el-icon-folder-checked:before{content:"\e77f"}.el-icon-folder-delete:before{content:"\e780"}.el-icon-folder-remove:before{content:"\e781"}.el-icon-folder-add:before{content:"\e783"}.el-icon-folder-opened:before{content:"\e784"}.el-icon-folder:before{content:"\e78a"}.el-icon-edit-outline:before{content:"\e764"}.el-icon-edit:before{content:"\e78c"}.el-icon-date:before{content:"\e78e"}.el-icon-c-scale-to-original:before{content:"\e7c6"}.el-icon-view:before{content:"\e6ce"}.el-icon-loading:before{content:"\e6cf"}.el-icon-rank:before{content:"\e6d1"}.el-icon-sort-down:before{content:"\e7c4"}.el-icon-sort-up:before{content:"\e7c5"}.el-icon-sort:before{content:"\e6d2"}.el-icon-finished:before{content:"\e6cd"}.el-icon-refresh-left:before{content:"\e6c7"}.el-icon-refresh-right:before{content:"\e6c8"}.el-icon-refresh:before{content:"\e6d0"}.el-icon-video-play:before{content:"\e7c0"}.el-icon-video-pause:before{content:"\e7c1"}.el-icon-d-arrow-right:before{content:"\e6dc"}.el-icon-d-arrow-left:before{content:"\e6dd"}.el-icon-arrow-up:before{content:"\e6e1"}.el-icon-arrow-down:before{content:"\e6df"}.el-icon-arrow-right:before{content:"\e6e0"}.el-icon-arrow-left:before{content:"\e6de"}.el-icon-top-right:before{content:"\e6e7"}.el-icon-top-left:before{content:"\e6e8"}.el-icon-top:before{content:"\e6e6"}.el-icon-bottom:before{content:"\e6eb"}.el-icon-right:before{content:"\e6e9"}.el-icon-back:before{content:"\e6ea"}.el-icon-bottom-right:before{content:"\e6ec"}.el-icon-bottom-left:before{content:"\e6ed"}.el-icon-caret-top:before{content:"\e78f"}.el-icon-caret-bottom:before{content:"\e790"}.el-icon-caret-right:before{content:"\e791"}.el-icon-caret-left:before{content:"\e792"}.el-icon-d-caret:before{content:"\e79a"}.el-icon-share:before{content:"\e793"}.el-icon-menu:before{content:"\e798"}.el-icon-s-grid:before{content:"\e7a6"}.el-icon-s-check:before{content:"\e7a7"}.el-icon-s-data:before{content:"\e7a8"}.el-icon-s-opportunity:before{content:"\e7aa"}.el-icon-s-custom:before{content:"\e7ab"}.el-icon-s-claim:before{content:"\e7ad"}.el-icon-s-finance:before{content:"\e7ae"}.el-icon-s-comment:before{content:"\e7af"}.el-icon-s-flag:before{content:"\e7b0"}.el-icon-s-marketing:before{content:"\e7b1"}.el-icon-s-shop:before{content:"\e7b4"}.el-icon-s-open:before{content:"\e7b5"}.el-icon-s-management:before{content:"\e7b6"}.el-icon-s-ticket:before{content:"\e7b7"}.el-icon-s-release:before{content:"\e7b8"}.el-icon-s-home:before{content:"\e7b9"}.el-icon-s-promotion:before{content:"\e7ba"}.el-icon-s-operation:before{content:"\e7bb"}.el-icon-s-unfold:before{content:"\e7bc"}.el-icon-s-fold:before{content:"\e7a9"}.el-icon-s-platform:before{content:"\e7bd"}.el-icon-s-order:before{content:"\e7be"}.el-icon-s-cooperation:before{content:"\e7bf"}.el-icon-bell:before{content:"\e725"}.el-icon-message-solid:before{content:"\e799"}.el-icon-video-camera:before{content:"\e772"}.el-icon-video-camera-solid:before{content:"\e796"}.el-icon-camera:before{content:"\e779"}.el-icon-camera-solid:before{content:"\e79b"}.el-icon-download:before{content:"\e77c"}.el-icon-upload2:before{content:"\e77b"}.el-icon-upload:before{content:"\e7c3"}.el-icon-picture-outline-round:before{content:"\e75f"}.el-icon-picture-outline:before{content:"\e75e"}.el-icon-picture:before{content:"\e79f"}.el-icon-close:before{content:"\e6db"}.el-icon-check:before{content:"\e6da"}.el-icon-plus:before{content:"\e6d9"}.el-icon-minus:before{content:"\e6d8"}.el-icon-help:before{content:"\e73d"}.el-icon-s-help:before{content:"\e7b3"}.el-icon-circle-close:before{content:"\e78d"}.el-icon-circle-check:before{content:"\e720"}.el-icon-circle-plus-outline:before{content:"\e723"}.el-icon-remove-outline:before{content:"\e722"}.el-icon-zoom-out:before{content:"\e776"}.el-icon-zoom-in:before{content:"\e777"}.el-icon-error:before{content:"\e79d"}.el-icon-success:before{content:"\e79c"}.el-icon-circle-plus:before{content:"\e7a0"}.el-icon-remove:before{content:"\e7a2"}.el-icon-info:before{content:"\e7a1"}.el-icon-question:before{content:"\e7a4"}.el-icon-warning-outline:before{content:"\e6c9"}.el-icon-warning:before{content:"\e7a3"}.el-icon-goods:before{content:"\e7c2"}.el-icon-s-goods:before{content:"\e7b2"}.el-icon-star-off:before{content:"\e717"}.el-icon-star-on:before{content:"\e797"}.el-icon-more-outline:before{content:"\e6cc"}.el-icon-more:before{content:"\e794"}.el-icon-phone-outline:before{content:"\e6cb"}.el-icon-phone:before{content:"\e795"}.el-icon-user:before{content:"\e6e3"}.el-icon-user-solid:before{content:"\e7a5"}.el-icon-setting:before{content:"\e6ca"}.el-icon-s-tools:before{content:"\e7ac"}.el-icon-delete:before{content:"\e6d7"}.el-icon-delete-solid:before{content:"\e7c9"}.el-icon-eleme:before{content:"\e7c7"}.el-icon-platform-eleme:before{content:"\e7ca"}.el-icon-loading{-webkit-animation:rotating 2s linear infinite;animation:rotating 2s linear infinite}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@-webkit-keyframes rotating{0%{-webkit-transform:rotateZ(0);transform:rotateZ(0)}100%{-webkit-transform:rotateZ(360deg);transform:rotateZ(360deg)}}@keyframes rotating{0%{-webkit-transform:rotateZ(0);transform:rotateZ(0)}100%{-webkit-transform:rotateZ(360deg);transform:rotateZ(360deg)}}.el-pagination{white-space:nowrap;padding:2px 5px;color:#303133;font-weight:700}.el-pagination::after,.el-pagination::before{display:table;content:""}.el-pagination::after{clear:both}.el-pagination button,.el-pagination span:not([class*=suffix]){display:inline-block;font-size:13px;min-width:35.5px;height:28px;line-height:28px;vertical-align:top;-webkit-box-sizing:border-box;box-sizing:border-box}.el-pagination .el-input__inner{text-align:center;-moz-appearance:textfield;line-height:normal}.el-pagination .el-input__suffix{right:0;-webkit-transform:scale(.8);transform:scale(.8)}.el-pagination .el-select .el-input{width:100px;margin:0 5px}.el-pagination .el-select .el-input .el-input__inner{padding-right:25px;border-radius:3px}.el-pagination button{border:none;padding:0 6px;background:0 0}.el-pagination button:focus{outline:0}.el-pagination button:hover{color:#409EFF}.el-pagination button:disabled{color:#C0C4CC;background-color:#FFF;cursor:not-allowed}.el-pagination .btn-next,.el-pagination .btn-prev{background:center center no-repeat #FFF;background-size:16px;cursor:pointer;margin:0;color:#303133}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{display:block;font-size:12px;font-weight:700}.el-pagination .btn-prev{padding-right:12px}.el-pagination .btn-next{padding-left:12px}.el-pagination .el-pager li.disabled{color:#C0C4CC;cursor:not-allowed}.el-pager li,.el-pager li.btn-quicknext:hover,.el-pager li.btn-quickprev:hover{cursor:pointer}.el-pagination--small .btn-next,.el-pagination--small .btn-prev,.el-pagination--small .el-pager li,.el-pagination--small .el-pager li.btn-quicknext,.el-pagination--small .el-pager li.btn-quickprev,.el-pagination--small .el-pager li:last-child{border-color:transparent;font-size:12px;line-height:22px;height:22px;min-width:22px}.el-pagination--small .more::before,.el-pagination--small li.more::before{line-height:24px}.el-pagination--small button,.el-pagination--small span:not([class*=suffix]){height:22px;line-height:22px}.el-pagination--small .el-pagination__editor,.el-pagination--small .el-pagination__editor.el-input .el-input__inner{height:22px}.el-pagination__sizes{margin:0 10px 0 0;font-weight:400;color:#606266}.el-pagination__sizes .el-input .el-input__inner{font-size:13px;padding-left:8px}.el-pagination__sizes .el-input .el-input__inner:hover{border-color:#409EFF}.el-pagination__total{margin-right:10px;font-weight:400;color:#606266}.el-pagination__jump{margin-left:24px;font-weight:400;color:#606266}.el-pagination__jump .el-input__inner{padding:0 3px}.el-pagination__rightwrapper{float:right}.el-pagination__editor{line-height:18px;padding:0 2px;height:28px;text-align:center;margin:0 2px;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:3px}.el-pager,.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev{padding:0}.el-pagination__editor.el-input{width:50px}.el-pagination__editor.el-input .el-input__inner{height:28px}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button,.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev,.el-pagination.is-background .el-pager li{margin:0 5px;background-color:#f4f4f5;color:#606266;min-width:30px;border-radius:2px}.el-pagination.is-background .btn-next.disabled,.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-prev.disabled,.el-pagination.is-background .btn-prev:disabled,.el-pagination.is-background .el-pager li.disabled{color:#C0C4CC}.el-pagination.is-background .el-pager li:not(.disabled):hover{color:#409EFF}.el-pagination.is-background .el-pager li:not(.disabled).active{background-color:#409EFF;color:#FFF}.el-dialog,.el-pager li{background:#FFF;-webkit-box-sizing:border-box}.el-pagination.is-background.el-pagination--small .btn-next,.el-pagination.is-background.el-pagination--small .btn-prev,.el-pagination.is-background.el-pagination--small .el-pager li{margin:0 3px;min-width:22px}.el-pager,.el-pager li{vertical-align:top;margin:0;display:inline-block}.el-pager{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;list-style:none;font-size:0}.el-date-table,.el-table th{-webkit-user-select:none;-moz-user-select:none}.el-pager .more::before{line-height:30px}.el-pager li{padding:0 4px;font-size:13px;min-width:35.5px;height:28px;line-height:28px;box-sizing:border-box;text-align:center}.el-menu--collapse .el-menu .el-submenu,.el-menu--popup{min-width:200px}.el-pager li.btn-quicknext,.el-pager li.btn-quickprev{line-height:28px;color:#303133}.el-pager li.btn-quicknext.disabled,.el-pager li.btn-quickprev.disabled{color:#C0C4CC}.el-pager li.active+li{border-left:0}.el-pager li:hover{color:#409EFF}.el-pager li.active{color:#409EFF;cursor:default}@-webkit-keyframes v-modal-in{0%{opacity:0}}@-webkit-keyframes v-modal-out{100%{opacity:0}}.el-dialog{position:relative;margin:0 auto 50px;border-radius:2px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3);box-sizing:border-box;width:50%}.el-dialog.is-fullscreen{width:100%;margin-top:0;margin-bottom:0;height:100%;overflow:auto}.el-dialog__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto;margin:0}.el-dialog__header{padding:20px 20px 10px}.el-dialog__headerbtn{position:absolute;top:20px;right:20px;padding:0;background:0 0;border:none;outline:0;cursor:pointer;font-size:16px}.el-dialog__headerbtn .el-dialog__close{color:#909399}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:#409EFF}.el-dialog__title{line-height:24px;font-size:18px;color:#303133}.el-dialog__body{padding:30px 20px;color:#606266;font-size:14px;word-break:break-all}.el-dialog__footer{padding:10px 20px 20px;text-align:right;-webkit-box-sizing:border-box;box-sizing:border-box}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial;padding:25px 25px 30px}.el-dialog--center .el-dialog__footer{text-align:inherit}.dialog-fade-enter-active{-webkit-animation:dialog-fade-in .3s;animation:dialog-fade-in .3s}.dialog-fade-leave-active{-webkit-animation:dialog-fade-out .3s;animation:dialog-fade-out .3s}@-webkit-keyframes dialog-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes dialog-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes dialog-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes dialog-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}.el-autocomplete{position:relative;display:inline-block}.el-autocomplete-suggestion{margin:5px 0;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:4px;border:1px solid #E4E7ED;-webkit-box-sizing:border-box;box-sizing:border-box;background-color:#FFF}.el-dropdown-menu,.el-menu--collapse .el-submenu .el-menu{z-index:10;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-autocomplete-suggestion__wrap{max-height:280px;padding:10px 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-autocomplete-suggestion__list{margin:0;padding:0}.el-autocomplete-suggestion li{padding:0 20px;margin:0;line-height:34px;cursor:pointer;color:#606266;font-size:14px;list-style:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-autocomplete-suggestion li.highlighted,.el-autocomplete-suggestion li:hover{background-color:#F5F7FA}.el-autocomplete-suggestion li.divider{margin-top:6px;border-top:1px solid #000}.el-autocomplete-suggestion li.divider:last-child{margin-bottom:-6px}.el-autocomplete-suggestion.is-loading li{text-align:center;height:100px;line-height:100px;font-size:20px;color:#999}.el-autocomplete-suggestion.is-loading li::after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-autocomplete-suggestion.is-loading li:hover{background-color:#FFF}.el-autocomplete-suggestion.is-loading .el-icon-loading{vertical-align:middle}.el-dropdown{display:inline-block;position:relative;color:#606266;font-size:14px}.el-dropdown .el-button-group{display:block}.el-dropdown .el-button-group .el-button{float:none}.el-dropdown .el-dropdown__caret-button{padding-left:5px;padding-right:5px;position:relative;border-left:none}.el-dropdown .el-dropdown__caret-button::before{content:'';position:absolute;display:block;width:1px;top:5px;bottom:5px;left:0;background:rgba(255,255,255,.5)}.el-dropdown .el-dropdown__caret-button.el-button--default::before{background:rgba(220,223,230,.5)}.el-dropdown .el-dropdown__caret-button:hover::before{top:0;bottom:0}.el-dropdown .el-dropdown__caret-button .el-dropdown__icon{padding-left:0}.el-dropdown__icon{font-size:12px;margin:0 3px}.el-dropdown-menu{position:absolute;top:0;left:0;padding:10px 0;margin:5px 0;background-color:#FFF;border:1px solid #EBEEF5;border-radius:4px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-dropdown-menu__item{list-style:none;line-height:36px;padding:0 20px;margin:0;font-size:14px;color:#606266;cursor:pointer;outline:0}.el-dropdown-menu__item:focus,.el-dropdown-menu__item:not(.is-disabled):hover{background-color:#ecf5ff;color:#66b1ff}.el-dropdown-menu__item i{margin-right:5px}.el-dropdown-menu__item--divided{position:relative;margin-top:6px;border-top:1px solid #EBEEF5}.el-dropdown-menu__item--divided:before{content:'';height:6px;display:block;margin:0 -20px;background-color:#FFF}.el-dropdown-menu__item.is-disabled{cursor:default;color:#bbb;pointer-events:none}.el-dropdown-menu--medium{padding:6px 0}.el-dropdown-menu--medium .el-dropdown-menu__item{line-height:30px;padding:0 17px;font-size:14px}.el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:6px}.el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:6px;margin:0 -17px}.el-dropdown-menu--small{padding:6px 0}.el-dropdown-menu--small .el-dropdown-menu__item{line-height:27px;padding:0 15px;font-size:13px}.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:4px}.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:4px;margin:0 -15px}.el-dropdown-menu--mini{padding:3px 0}.el-dropdown-menu--mini .el-dropdown-menu__item{line-height:24px;padding:0 10px;font-size:12px}.el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:3px}.el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:3px;margin:0 -10px}.el-menu{border-right:solid 1px #e6e6e6;list-style:none;position:relative;margin:0;padding-left:0;background-color:#FFF}.el-menu--horizontal>.el-menu-item:not(.is-disabled):focus,.el-menu--horizontal>.el-menu-item:not(.is-disabled):hover,.el-menu--horizontal>.el-submenu .el-submenu__title:hover{background-color:#fff}.el-menu::after,.el-menu::before{display:table;content:""}.el-menu::after{clear:both}.el-menu.el-menu--horizontal{border-bottom:solid 1px #e6e6e6}.el-menu--horizontal{border-right:none}.el-menu--horizontal>.el-menu-item{float:left;height:60px;line-height:60px;margin:0;border-bottom:2px solid transparent;color:#909399}.el-menu--horizontal>.el-menu-item a,.el-menu--horizontal>.el-menu-item a:hover{color:inherit}.el-menu--horizontal>.el-submenu{float:left}.el-menu--horizontal>.el-submenu:focus,.el-menu--horizontal>.el-submenu:hover{outline:0}.el-menu--horizontal>.el-submenu:focus .el-submenu__title,.el-menu--horizontal>.el-submenu:hover .el-submenu__title{color:#303133}.el-menu--horizontal>.el-submenu.is-active .el-submenu__title{border-bottom:2px solid #409EFF;color:#303133}.el-menu--horizontal>.el-submenu .el-submenu__title{height:60px;line-height:60px;border-bottom:2px solid transparent;color:#909399}.el-menu--horizontal>.el-submenu .el-submenu__icon-arrow{position:static;vertical-align:middle;margin-left:8px;margin-top:-3px}.el-menu--horizontal .el-menu .el-menu-item,.el-menu--horizontal .el-menu .el-submenu__title{background-color:#FFF;float:none;height:36px;line-height:36px;padding:0 10px;color:#909399}.el-menu--horizontal .el-menu .el-menu-item.is-active,.el-menu--horizontal .el-menu .el-submenu.is-active>.el-submenu__title{color:#303133}.el-menu--horizontal .el-menu-item:not(.is-disabled):focus,.el-menu--horizontal .el-menu-item:not(.is-disabled):hover{outline:0;color:#303133}.el-menu--horizontal>.el-menu-item.is-active{border-bottom:2px solid #409EFF;color:#303133}.el-menu--collapse{width:64px}.el-menu--collapse>.el-menu-item [class^=el-icon-],.el-menu--collapse>.el-submenu>.el-submenu__title [class^=el-icon-]{margin:0;vertical-align:middle;width:24px;text-align:center}.el-menu--collapse>.el-menu-item .el-submenu__icon-arrow,.el-menu--collapse>.el-submenu>.el-submenu__title .el-submenu__icon-arrow{display:none}.el-menu--collapse>.el-menu-item span,.el-menu--collapse>.el-submenu>.el-submenu__title span{height:0;width:0;overflow:hidden;visibility:hidden;display:inline-block}.el-menu--collapse>.el-menu-item.is-active i{color:inherit}.el-menu--collapse .el-submenu{position:relative}.el-menu--collapse .el-submenu .el-menu{position:absolute;margin-left:5px;top:0;left:100%;border:1px solid #E4E7ED;border-radius:2px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-menu-item,.el-submenu__title{height:56px;line-height:56px;position:relative;-webkit-box-sizing:border-box;white-space:nowrap;list-style:none}.el-menu--collapse .el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{-webkit-transform:none;transform:none}.el-menu--popup{z-index:100;border:none;padding:5px 0;border-radius:2px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-menu--popup-bottom-start{margin-top:5px}.el-menu--popup-right-start{margin-left:5px;margin-right:5px}.el-menu-item{font-size:14px;color:#303133;padding:0 20px;cursor:pointer;-webkit-transition:border-color .3s,background-color .3s,color .3s;transition:border-color .3s,background-color .3s,color .3s;box-sizing:border-box}.el-menu-item *{vertical-align:middle}.el-menu-item i{color:#909399}.el-menu-item:focus,.el-menu-item:hover{outline:0;background-color:#ecf5ff}.el-menu-item.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-menu-item [class^=el-icon-]{margin-right:5px;width:24px;text-align:center;font-size:18px;vertical-align:middle}.el-menu-item.is-active{color:#409EFF}.el-menu-item.is-active i{color:inherit}.el-submenu{list-style:none;margin:0;padding-left:0}.el-submenu__title{font-size:14px;color:#303133;padding:0 20px;cursor:pointer;-webkit-transition:border-color .3s,background-color .3s,color .3s;transition:border-color .3s,background-color .3s,color .3s;box-sizing:border-box}.el-submenu__title *{vertical-align:middle}.el-submenu__title i{color:#909399}.el-submenu__title:focus,.el-submenu__title:hover{outline:0;background-color:#ecf5ff}.el-submenu__title.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-submenu__title:hover{background-color:#ecf5ff}.el-submenu .el-menu{border:none}.el-submenu .el-menu-item{height:50px;line-height:50px;padding:0 45px;min-width:200px}.el-submenu__icon-arrow{position:absolute;top:50%;right:20px;margin-top:-7px;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;font-size:12px}.el-submenu.is-active .el-submenu__title{border-bottom-color:#409EFF}.el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg)}.el-submenu.is-disabled .el-menu-item,.el-submenu.is-disabled .el-submenu__title{opacity:.25;cursor:not-allowed;background:0 0!important}.el-submenu [class^=el-icon-]{vertical-align:middle;margin-right:5px;width:24px;text-align:center;font-size:18px}.el-menu-item-group>ul{padding:0}.el-menu-item-group__title{padding:7px 0 7px 20px;line-height:normal;font-size:12px;color:#909399}.el-radio-button__inner,.el-radio-group{display:inline-block;line-height:1;vertical-align:middle}.horizontal-collapse-transition .el-submenu__title .el-submenu__icon-arrow{-webkit-transition:.2s;transition:.2s;opacity:0}.el-radio-group{font-size:0}.el-radio-button{position:relative;display:inline-block;outline:0}.el-radio-button__inner{white-space:nowrap;background:#FFF;border:1px solid #DCDFE6;font-weight:500;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;position:relative;cursor:pointer;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);padding:12px 20px;font-size:14px;border-radius:0}.el-radio-button__inner.is-round{padding:12px 20px}.el-radio-button__inner:hover{color:#409EFF}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-left:1px solid #DCDFE6;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.el-radio-button__orig-radio{opacity:0;outline:0;position:absolute;z-index:-1}.el-radio-button__orig-radio:checked+.el-radio-button__inner{color:#FFF;background-color:#409EFF;border-color:#409EFF;-webkit-box-shadow:-1px 0 0 0 #409EFF;box-shadow:-1px 0 0 0 #409EFF}.el-radio-button__orig-radio:disabled+.el-radio-button__inner{color:#C0C4CC;cursor:not-allowed;background-image:none;background-color:#FFF;border-color:#EBEEF5;-webkit-box-shadow:none;box-shadow:none}.el-radio-button__orig-radio:disabled:checked+.el-radio-button__inner{background-color:#F2F6FC}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 4px 4px 0}.el-popover,.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:4px}.el-radio-button--medium .el-radio-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-radio-button--medium .el-radio-button__inner.is-round{padding:10px 20px}.el-radio-button--small .el-radio-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-radio-button--small .el-radio-button__inner.is-round{padding:9px 15px}.el-radio-button--mini .el-radio-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-radio-button--mini .el-radio-button__inner.is-round{padding:7px 15px}.el-radio-button:focus:not(.is-focus):not(:active):not(.is-disabled){-webkit-box-shadow:0 0 2px 2px #409EFF;box-shadow:0 0 2px 2px #409EFF}.el-switch{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;font-size:14px;line-height:20px;height:20px;vertical-align:middle}.el-switch__core,.el-switch__label{display:inline-block;cursor:pointer}.el-switch.is-disabled .el-switch__core,.el-switch.is-disabled .el-switch__label{cursor:not-allowed}.el-switch__label{-webkit-transition:.2s;transition:.2s;height:20px;font-size:14px;font-weight:500;vertical-align:middle;color:#303133}.el-switch__label.is-active{color:#409EFF}.el-switch__label--left{margin-right:10px}.el-switch__label--right{margin-left:10px}.el-switch__label *{line-height:1;font-size:14px;display:inline-block}.el-switch__input{position:absolute;width:0;height:0;opacity:0;margin:0}.el-switch__core{margin:0;position:relative;width:40px;height:20px;border:1px solid #DCDFE6;outline:0;border-radius:10px;-webkit-box-sizing:border-box;box-sizing:border-box;background:#DCDFE6;-webkit-transition:border-color .3s,background-color .3s;transition:border-color .3s,background-color .3s;vertical-align:middle}.el-switch__core:after{content:"";position:absolute;top:1px;left:1px;border-radius:100%;-webkit-transition:all .3s;transition:all .3s;width:16px;height:16px;background-color:#FFF}.el-switch.is-checked .el-switch__core{border-color:#409EFF;background-color:#409EFF}.el-switch.is-checked .el-switch__core::after{left:100%;margin-left:-17px}.el-switch.is-disabled{opacity:.6}.el-switch--wide .el-switch__label.el-switch__label--left span{left:10px}.el-switch--wide .el-switch__label.el-switch__label--right span{right:10px}.el-switch .label-fade-enter,.el-switch .label-fade-leave-active{opacity:0}.el-select-dropdown{position:absolute;z-index:1001;border:1px solid #E4E7ED;border-radius:4px;background-color:#FFF;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-box-sizing:border-box;box-sizing:border-box;margin:5px 0}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected{color:#409EFF;background-color:#FFF}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected.hover{background-color:#F5F7FA}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected::after{position:absolute;right:20px;font-family:element-icons;content:"\e6da";font-size:12px;font-weight:700;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.el-select-dropdown__empty{padding:10px 0;margin:0;text-align:center;color:#999;font-size:14px}.el-select-dropdown__wrap{max-height:274px}.el-select-dropdown__list{list-style:none;padding:6px 0;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-select-dropdown__item{font-size:14px;padding:0 20px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#606266;height:34px;line-height:34px;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer}.el-select-dropdown__item.is-disabled{color:#C0C4CC;cursor:not-allowed}.el-select-dropdown__item.is-disabled:hover{background-color:#FFF}.el-select-dropdown__item.hover,.el-select-dropdown__item:hover{background-color:#F5F7FA}.el-select-dropdown__item.selected{color:#409EFF;font-weight:700}.el-select-group{margin:0;padding:0}.el-select-group__wrap{position:relative;list-style:none;margin:0;padding:0}.el-select-group__wrap:not(:last-of-type){padding-bottom:24px}.el-select-group__wrap:not(:last-of-type)::after{content:'';position:absolute;display:block;left:20px;right:20px;bottom:12px;height:1px;background:#E4E7ED}.el-select-group__title{padding-left:20px;font-size:12px;color:#909399;line-height:30px}.el-select-group .el-select-dropdown__item{padding-left:20px}.el-select{display:inline-block;position:relative}.el-select .el-select__tags>span{display:contents}.el-select:hover .el-input__inner{border-color:#C0C4CC}.el-select .el-input__inner{cursor:pointer;padding-right:35px}.el-select .el-input__inner:focus{border-color:#409EFF}.el-select .el-input .el-select__caret{color:#C0C4CC;font-size:14px;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg);cursor:pointer}.el-select .el-input .el-select__caret.is-reverse{-webkit-transform:rotateZ(0);transform:rotateZ(0)}.el-select .el-input .el-select__caret.is-show-close{font-size:14px;text-align:center;-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg);border-radius:100%;color:#C0C4CC;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1)}.el-select .el-input .el-select__caret.is-show-close:hover{color:#909399}.el-select .el-input.is-disabled .el-input__inner{cursor:not-allowed}.el-select .el-input.is-disabled .el-input__inner:hover{border-color:#E4E7ED}.el-select .el-input.is-focus .el-input__inner{border-color:#409EFF}.el-select>.el-input{display:block}.el-select__input{border:none;outline:0;padding:0;margin-left:15px;color:#666;font-size:14px;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:28px;background-color:transparent}.el-select__input.is-mini{height:14px}.el-select__close{cursor:pointer;position:absolute;top:8px;z-index:1000;right:25px;color:#C0C4CC;line-height:18px;font-size:14px}.el-select__close:hover{color:#909399}.el-select__tags{position:absolute;line-height:normal;white-space:normal;z-index:1;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap}.el-select .el-tag__close{margin-top:-2px}.el-select .el-tag{-webkit-box-sizing:border-box;box-sizing:border-box;border-color:transparent;margin:2px 0 2px 6px;background-color:#f0f2f5}.el-select .el-tag__close.el-icon-close{background-color:#C0C4CC;right:-7px;top:0;color:#FFF}.el-select .el-tag__close.el-icon-close:hover{background-color:#909399}.el-table,.el-table__expanded-cell{background-color:#FFF}.el-select .el-tag__close.el-icon-close::before{display:block;-webkit-transform:translate(0,.5px);transform:translate(0,.5px)}.el-table{position:relative;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-box-flex:1;-ms-flex:1;flex:1;width:100%;max-width:100%;font-size:14px;color:#606266}.el-table--mini,.el-table--small,.el-table__expand-icon{font-size:12px}.el-table__empty-block{min-height:60px;text-align:center;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-table__empty-text{line-height:60px;width:50%;color:#909399}.el-table__expand-column .cell{padding:0;text-align:center}.el-table__expand-icon{position:relative;cursor:pointer;color:#666;-webkit-transition:-webkit-transform .2s ease-in-out;transition:-webkit-transform .2s ease-in-out;transition:transform .2s ease-in-out;transition:transform .2s ease-in-out,-webkit-transform .2s ease-in-out;height:20px}.el-table__expand-icon--expanded{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-table__expand-icon>.el-icon{position:absolute;left:50%;top:50%;margin-left:-5px;margin-top:-5px}.el-table__expanded-cell[class*=cell]{padding:20px 50px}.el-table__expanded-cell:hover{background-color:transparent!important}.el-table__placeholder{display:inline-block;width:20px}.el-table__append-wrapper{overflow:hidden}.el-table--fit{border-right:0;border-bottom:0}.el-table--fit td.gutter,.el-table--fit th.gutter{border-right-width:1px}.el-table--scrollable-x .el-table__body-wrapper{overflow-x:auto}.el-table--scrollable-y .el-table__body-wrapper{overflow-y:auto}.el-table thead{color:#909399;font-weight:500}.el-table thead.is-group th{background:#F5F7FA}.el-table th,.el-table tr{background-color:#FFF}.el-table td,.el-table th{padding:12px 0;min-width:0;-webkit-box-sizing:border-box;box-sizing:border-box;text-overflow:ellipsis;vertical-align:middle;position:relative;text-align:left}.el-table td.is-center,.el-table th.is-center{text-align:center}.el-table td.is-right,.el-table th.is-right{text-align:right}.el-table td.gutter,.el-table th.gutter{width:15px;border-right-width:0;border-bottom-width:0;padding:0}.el-table--medium td,.el-table--medium th{padding:10px 0}.el-table--small td,.el-table--small th{padding:8px 0}.el-table--mini td,.el-table--mini th{padding:6px 0}.el-table .cell,.el-table--border td:first-child .cell,.el-table--border th:first-child .cell{padding-left:10px}.el-table tr input[type=checkbox]{margin:0}.el-table td,.el-table th.is-leaf{border-bottom:1px solid #EBEEF5}.el-table th.is-sortable{cursor:pointer}.el-table th{overflow:hidden;-ms-user-select:none;user-select:none}.el-table th>.cell{display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;vertical-align:middle;padding-left:10px;padding-right:10px;width:100%}.el-table th>.cell.highlight{color:#409EFF}.el-table th.required>div::before{display:inline-block;content:"";width:8px;height:8px;border-radius:50%;background:#ff4d51;margin-right:5px;vertical-align:middle}.el-table td div{-webkit-box-sizing:border-box;box-sizing:border-box}.el-table td.gutter{width:0}.el-table .cell{-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;text-overflow:ellipsis;white-space:normal;word-break:break-all;line-height:23px;padding-right:10px}.el-table .cell.el-tooltip{white-space:nowrap;min-width:50px}.el-table--border,.el-table--group{border:1px solid #EBEEF5}.el-table--border::after,.el-table--group::after,.el-table::before{content:'';position:absolute;background-color:#EBEEF5;z-index:1}.el-table--border::after,.el-table--group::after{top:0;right:0;width:1px;height:100%}.el-table::before{left:0;bottom:0;width:100%;height:1px}.el-table--border{border-right:none;border-bottom:none}.el-table--border.el-loading-parent--relative{border-color:transparent}.el-table--border td,.el-table--border th,.el-table__body-wrapper .el-table--border.is-scrolling-left~.el-table__fixed{border-right:1px solid #EBEEF5}.el-table--border th.gutter:last-of-type{border-bottom:1px solid #EBEEF5;border-bottom-width:1px}.el-table--border th,.el-table__fixed-right-patch{border-bottom:1px solid #EBEEF5}.el-table__fixed,.el-table__fixed-right{position:absolute;top:0;left:0;overflow-x:hidden;overflow-y:hidden;-webkit-box-shadow:0 0 10px rgba(0,0,0,.12);box-shadow:0 0 10px rgba(0,0,0,.12)}.el-table__fixed-right::before,.el-table__fixed::before{content:'';position:absolute;left:0;bottom:0;width:100%;height:1px;background-color:#EBEEF5;z-index:4}.el-table__fixed-right-patch{position:absolute;top:-1px;right:0;background-color:#FFF}.el-table__fixed-right{top:0;left:auto;right:0}.el-table__fixed-right .el-table__fixed-body-wrapper,.el-table__fixed-right .el-table__fixed-footer-wrapper,.el-table__fixed-right .el-table__fixed-header-wrapper{left:auto;right:0}.el-table__fixed-header-wrapper{position:absolute;left:0;top:0;z-index:3}.el-table__fixed-footer-wrapper{position:absolute;left:0;bottom:0;z-index:3}.el-table__fixed-footer-wrapper tbody td{border-top:1px solid #EBEEF5;background-color:#F5F7FA;color:#606266}.el-table__fixed-body-wrapper{position:absolute;left:0;top:37px;overflow:hidden;z-index:3}.el-table__body-wrapper,.el-table__footer-wrapper,.el-table__header-wrapper{width:100%}.el-table__footer-wrapper{margin-top:-1px}.el-table__footer-wrapper td{border-top:1px solid #EBEEF5}.el-table__body,.el-table__footer,.el-table__header{table-layout:fixed;border-collapse:separate}.el-table__footer-wrapper,.el-table__header-wrapper{overflow:hidden}.el-table__footer-wrapper tbody td,.el-table__header-wrapper tbody td{background-color:#F5F7FA;color:#606266}.el-table__body-wrapper{overflow:hidden;position:relative}.el-table__body-wrapper.is-scrolling-left~.el-table__fixed,.el-table__body-wrapper.is-scrolling-none~.el-table__fixed,.el-table__body-wrapper.is-scrolling-none~.el-table__fixed-right,.el-table__body-wrapper.is-scrolling-right~.el-table__fixed-right{-webkit-box-shadow:none;box-shadow:none}.el-picker-panel,.el-table-filter{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-table__body-wrapper .el-table--border.is-scrolling-right~.el-table__fixed-right{border-left:1px solid #EBEEF5}.el-table .caret-wrapper{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:34px;width:24px;vertical-align:middle;cursor:pointer;overflow:initial;position:relative}.el-table .sort-caret{width:0;height:0;border:5px solid transparent;position:absolute;left:7px}.el-table .sort-caret.ascending{border-bottom-color:#C0C4CC;top:5px}.el-table .sort-caret.descending{border-top-color:#C0C4CC;bottom:7px}.el-table .ascending .sort-caret.ascending{border-bottom-color:#409EFF}.el-table .descending .sort-caret.descending{border-top-color:#409EFF}.el-table .hidden-columns{position:absolute;z-index:-1}.el-table--striped .el-table__body tr.el-table__row--striped td{background:#FAFAFA}.el-table--striped .el-table__body tr.el-table__row--striped.current-row td{background-color:#ecf5ff}.el-table__body tr.hover-row.current-row>td,.el-table__body tr.hover-row.el-table__row--striped.current-row>td,.el-table__body tr.hover-row.el-table__row--striped>td,.el-table__body tr.hover-row>td{background-color:#F5F7FA}.el-table__body tr.current-row>td{background-color:#ecf5ff}.el-table__column-resize-proxy{position:absolute;left:200px;top:0;bottom:0;width:0;border-left:1px solid #EBEEF5;z-index:10}.el-table__column-filter-trigger{display:inline-block;line-height:34px;cursor:pointer}.el-table__column-filter-trigger i{color:#909399;font-size:12px;-webkit-transform:scale(.75);transform:scale(.75)}.el-table--enable-row-transition .el-table__body td{-webkit-transition:background-color .25s ease;transition:background-color .25s ease}.el-table--enable-row-hover .el-table__body tr:hover>td{background-color:#F5F7FA}.el-table--fluid-height .el-table__fixed,.el-table--fluid-height .el-table__fixed-right{bottom:0;overflow:hidden}.el-table [class*=el-table__row--level] .el-table__expand-icon{display:inline-block;width:20px;line-height:20px;height:20px;text-align:center;margin-right:3px}.el-table-column--selection .cell{padding-left:14px;padding-right:14px}.el-table-filter{border:1px solid #EBEEF5;border-radius:2px;background-color:#FFF;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-box-sizing:border-box;box-sizing:border-box;margin:2px 0}.el-date-table td,.el-date-table td div{height:30px;-webkit-box-sizing:border-box}.el-table-filter__list{padding:5px 0;margin:0;list-style:none;min-width:100px}.el-table-filter__list-item{line-height:36px;padding:0 10px;cursor:pointer;font-size:14px}.el-table-filter__list-item:hover{background-color:#ecf5ff;color:#66b1ff}.el-table-filter__list-item.is-active{background-color:#409EFF;color:#FFF}.el-table-filter__content{min-width:100px}.el-table-filter__bottom{border-top:1px solid #EBEEF5;padding:8px}.el-table-filter__bottom button{background:0 0;border:none;color:#606266;cursor:pointer;font-size:13px;padding:0 3px}.el-date-table td.in-range div,.el-date-table td.in-range div:hover,.el-date-table.is-week-mode .el-date-table__row.current div,.el-date-table.is-week-mode .el-date-table__row:hover div{background-color:#F2F6FC}.el-table-filter__bottom button:hover{color:#409EFF}.el-table-filter__bottom button:focus{outline:0}.el-table-filter__bottom button.is-disabled{color:#C0C4CC;cursor:not-allowed}.el-table-filter__wrap{max-height:280px}.el-table-filter__checkbox-group{padding:10px}.el-table-filter__checkbox-group label.el-checkbox{display:block;margin-right:5px;margin-bottom:8px;margin-left:5px}.el-table-filter__checkbox-group .el-checkbox:last-child{margin-bottom:0}.el-date-table{font-size:12px;-ms-user-select:none;user-select:none}.el-date-table.is-week-mode .el-date-table__row:hover td.available:hover{color:#606266}.el-date-table.is-week-mode .el-date-table__row:hover td:first-child div{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table.is-week-mode .el-date-table__row:hover td:last-child div{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table td{width:32px;padding:4px 0;box-sizing:border-box;text-align:center;cursor:pointer;position:relative}.el-date-table td div{padding:3px 0;box-sizing:border-box}.el-date-table td span{width:24px;height:24px;display:block;margin:0 auto;line-height:24px;position:absolute;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);border-radius:50%}.el-date-table td.next-month,.el-date-table td.prev-month{color:#C0C4CC}.el-date-table td.today{position:relative}.el-date-table td.today span{color:#409EFF;font-weight:700}.el-date-table td.today.end-date span,.el-date-table td.today.start-date span{color:#FFF}.el-date-table td.available:hover{color:#409EFF}.el-date-table td.current:not(.disabled) span{color:#FFF;background-color:#409EFF}.el-date-table td.end-date div,.el-date-table td.start-date div{color:#FFF}.el-date-table td.end-date span,.el-date-table td.start-date span{background-color:#409EFF}.el-date-table td.start-date div{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table td.end-date div{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table td.disabled div{background-color:#F5F7FA;opacity:1;cursor:not-allowed;color:#C0C4CC}.el-date-table td.selected div{margin-left:5px;margin-right:5px;background-color:#F2F6FC;border-radius:15px}.el-date-table td.selected div:hover{background-color:#F2F6FC}.el-date-table td.selected span{background-color:#409EFF;color:#FFF;border-radius:15px}.el-date-table td.week{font-size:80%;color:#606266}.el-month-table,.el-year-table{font-size:12px;border-collapse:collapse}.el-date-table th{padding:5px;color:#606266;font-weight:400;border-bottom:solid 1px #EBEEF5}.el-month-table{margin:-1px}.el-month-table td{text-align:center;padding:8px 0;cursor:pointer}.el-month-table td div{height:48px;padding:6px 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-month-table td.today .cell{color:#409EFF;font-weight:700}.el-month-table td.today.end-date .cell,.el-month-table td.today.start-date .cell{color:#FFF}.el-month-table td.disabled .cell{background-color:#F5F7FA;cursor:not-allowed;color:#C0C4CC}.el-month-table td.disabled .cell:hover{color:#C0C4CC}.el-month-table td .cell{width:60px;height:36px;display:block;line-height:36px;color:#606266;margin:0 auto;border-radius:18px}.el-month-table td .cell:hover{color:#409EFF}.el-month-table td.in-range div,.el-month-table td.in-range div:hover{background-color:#F2F6FC}.el-month-table td.end-date div,.el-month-table td.start-date div{color:#FFF}.el-month-table td.end-date .cell,.el-month-table td.start-date .cell{color:#FFF;background-color:#409EFF}.el-month-table td.start-date div{border-top-left-radius:24px;border-bottom-left-radius:24px}.el-month-table td.end-date div{border-top-right-radius:24px;border-bottom-right-radius:24px}.el-month-table td.current:not(.disabled) .cell{color:#409EFF}.el-year-table{margin:-1px}.el-year-table .el-icon{color:#303133}.el-year-table td{text-align:center;padding:20px 3px;cursor:pointer}.el-year-table td.today .cell{color:#409EFF;font-weight:700}.el-year-table td.disabled .cell{background-color:#F5F7FA;cursor:not-allowed;color:#C0C4CC}.el-year-table td.disabled .cell:hover{color:#C0C4CC}.el-year-table td .cell{width:48px;height:32px;display:block;line-height:32px;color:#606266;margin:0 auto}.el-year-table td .cell:hover,.el-year-table td.current:not(.disabled) .cell{color:#409EFF}.el-date-range-picker{width:646px}.el-date-range-picker.has-sidebar{width:756px}.el-date-range-picker table{table-layout:fixed;width:100%}.el-date-range-picker .el-picker-panel__body{min-width:513px}.el-date-range-picker .el-picker-panel__content{margin:0}.el-date-range-picker__header{position:relative;text-align:center;height:28px}.el-date-range-picker__header [class*=arrow-left]{float:left}.el-date-range-picker__header [class*=arrow-right]{float:right}.el-date-range-picker__header div{font-size:16px;font-weight:500;margin-right:50px}.el-date-range-picker__content{float:left;width:50%;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:16px}.el-date-range-picker__content.is-left{border-right:1px solid #e4e4e4}.el-date-range-picker__content .el-date-range-picker__header div{margin-left:50px;margin-right:50px}.el-date-range-picker__editors-wrap{-webkit-box-sizing:border-box;box-sizing:border-box;display:table-cell}.el-date-range-picker__editors-wrap.is-right{text-align:right}.el-date-range-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px;display:table;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.el-date-range-picker__time-header>.el-icon-arrow-right{font-size:20px;vertical-align:middle;display:table-cell;color:#303133}.el-date-range-picker__time-picker-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-range-picker__time-picker-wrap .el-picker-panel{position:absolute;top:13px;right:0;z-index:1;background:#FFF}.el-date-picker{width:322px}.el-date-picker.has-sidebar.has-time{width:434px}.el-date-picker.has-sidebar{width:438px}.el-date-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-picker .el-picker-panel__content{width:292px}.el-date-picker table{table-layout:fixed;width:100%}.el-date-picker__editor-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px;display:table;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.el-date-picker__header{margin:12px;text-align:center}.el-date-picker__header--bordered{margin-bottom:0;padding-bottom:12px;border-bottom:solid 1px #EBEEF5}.el-date-picker__header--bordered+.el-picker-panel__content{margin-top:0}.el-date-picker__header-label{font-size:16px;font-weight:500;padding:0 5px;line-height:22px;text-align:center;cursor:pointer;color:#606266}.el-date-picker__header-label.active,.el-date-picker__header-label:hover{color:#409EFF}.el-date-picker__prev-btn{float:left}.el-date-picker__next-btn{float:right}.el-date-picker__time-wrap{padding:10px;text-align:center}.el-date-picker__time-label{float:left;cursor:pointer;line-height:30px;margin-left:10px}.time-select{margin:5px 0;min-width:0}.time-select .el-picker-panel__content{max-height:200px;margin:0}.time-select-item{padding:8px 10px;font-size:14px;line-height:20px}.time-select-item.selected:not(.disabled){color:#409EFF;font-weight:700}.time-select-item.disabled{color:#E4E7ED;cursor:not-allowed}.time-select-item:hover{background-color:#F5F7FA;font-weight:700;cursor:pointer}.el-date-editor{position:relative;display:inline-block;text-align:left}.el-date-editor.el-input,.el-date-editor.el-input__inner{width:220px}.el-date-editor--monthrange.el-input,.el-date-editor--monthrange.el-input__inner{width:300px}.el-date-editor--daterange.el-input,.el-date-editor--daterange.el-input__inner,.el-date-editor--timerange.el-input,.el-date-editor--timerange.el-input__inner{width:350px}.el-date-editor--datetimerange.el-input,.el-date-editor--datetimerange.el-input__inner{width:400px}.el-date-editor--dates .el-input__inner{text-overflow:ellipsis;white-space:nowrap}.el-date-editor .el-icon-circle-close{cursor:pointer}.el-date-editor .el-range__icon{font-size:14px;margin-left:-5px;color:#C0C4CC;float:left;line-height:32px}.el-date-editor .el-range-input,.el-date-editor .el-range-separator{height:100%;margin:0;text-align:center;display:inline-block;font-size:14px}.el-date-editor .el-range-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;outline:0;padding:0;width:39%;color:#606266}.el-date-editor .el-range-input::-webkit-input-placeholder{color:#C0C4CC}.el-date-editor .el-range-input:-ms-input-placeholder{color:#C0C4CC}.el-date-editor .el-range-input::-ms-input-placeholder{color:#C0C4CC}.el-date-editor .el-range-input::placeholder{color:#C0C4CC}.el-date-editor .el-range-separator{padding:0 5px;line-height:32px;width:5%;color:#303133}.el-date-editor .el-range__close-icon{font-size:14px;color:#C0C4CC;width:25px;display:inline-block;float:right;line-height:32px}.el-range-editor.el-input__inner{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:3px 10px}.el-range-editor .el-range-input{line-height:1}.el-range-editor.is-active,.el-range-editor.is-active:hover{border-color:#409EFF}.el-range-editor--medium.el-input__inner{height:36px}.el-range-editor--medium .el-range-separator{line-height:28px;font-size:14px}.el-range-editor--medium .el-range-input{font-size:14px}.el-range-editor--medium .el-range__close-icon,.el-range-editor--medium .el-range__icon{line-height:28px}.el-range-editor--small.el-input__inner{height:32px}.el-range-editor--small .el-range-separator{line-height:24px;font-size:13px}.el-range-editor--small .el-range-input{font-size:13px}.el-range-editor--small .el-range__close-icon,.el-range-editor--small .el-range__icon{line-height:24px}.el-range-editor--mini.el-input__inner{height:28px}.el-range-editor--mini .el-range-separator{line-height:20px;font-size:12px}.el-range-editor--mini .el-range-input{font-size:12px}.el-range-editor--mini .el-range__close-icon,.el-range-editor--mini .el-range__icon{line-height:20px}.el-range-editor.is-disabled{background-color:#F5F7FA;border-color:#E4E7ED;color:#C0C4CC;cursor:not-allowed}.el-range-editor.is-disabled:focus,.el-range-editor.is-disabled:hover{border-color:#E4E7ED}.el-range-editor.is-disabled input{background-color:#F5F7FA;color:#C0C4CC;cursor:not-allowed}.el-range-editor.is-disabled input::-webkit-input-placeholder{color:#C0C4CC}.el-range-editor.is-disabled input:-ms-input-placeholder{color:#C0C4CC}.el-range-editor.is-disabled input::-ms-input-placeholder{color:#C0C4CC}.el-range-editor.is-disabled input::placeholder{color:#C0C4CC}.el-range-editor.is-disabled .el-range-separator{color:#C0C4CC}.el-picker-panel{color:#606266;border:1px solid #E4E7ED;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);background:#FFF;border-radius:4px;line-height:30px;margin:5px 0}.el-popover,.el-time-panel{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-picker-panel__body-wrapper::after,.el-picker-panel__body::after{content:"";display:table;clear:both}.el-picker-panel__content{position:relative;margin:15px}.el-picker-panel__footer{border-top:1px solid #e4e4e4;padding:4px;text-align:right;background-color:#FFF;position:relative;font-size:0}.el-picker-panel__shortcut{display:block;width:100%;border:0;background-color:transparent;line-height:28px;font-size:14px;color:#606266;padding-left:12px;text-align:left;outline:0;cursor:pointer}.el-picker-panel__shortcut:hover{color:#409EFF}.el-picker-panel__shortcut.active{background-color:#e6f1fe;color:#409EFF}.el-picker-panel__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-picker-panel__btn[disabled]{color:#ccc;cursor:not-allowed}.el-picker-panel__icon-btn{font-size:12px;color:#303133;border:0;background:0 0;cursor:pointer;outline:0;margin-top:8px}.el-picker-panel__icon-btn:hover{color:#409EFF}.el-picker-panel__icon-btn.is-disabled{color:#bbb}.el-picker-panel__icon-btn.is-disabled:hover{cursor:not-allowed}.el-picker-panel__link-btn{vertical-align:middle}.el-picker-panel [slot=sidebar],.el-picker-panel__sidebar{position:absolute;top:0;bottom:0;width:110px;border-right:1px solid #e4e4e4;-webkit-box-sizing:border-box;box-sizing:border-box;padding-top:6px;background-color:#FFF;overflow:auto}.el-picker-panel [slot=sidebar]+.el-picker-panel__body,.el-picker-panel__sidebar+.el-picker-panel__body{margin-left:110px}.el-time-spinner.has-seconds .el-time-spinner__wrapper{width:33.3%}.el-time-spinner__wrapper{max-height:190px;overflow:auto;display:inline-block;width:50%;vertical-align:top;position:relative}.el-time-spinner__wrapper .el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default){padding-bottom:15px}.el-time-spinner__input.el-input .el-input__inner,.el-time-spinner__list{padding:0;text-align:center}.el-time-spinner__wrapper.is-arrow{-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;overflow:hidden}.el-time-spinner__wrapper.is-arrow .el-time-spinner__list{-webkit-transform:translateY(-32px);transform:translateY(-32px)}.el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.disabled):not(.active){background:#FFF;cursor:default}.el-time-spinner__arrow{font-size:12px;color:#909399;position:absolute;left:0;width:100%;z-index:1;text-align:center;height:30px;line-height:30px;cursor:pointer}.el-time-spinner__arrow:hover{color:#409EFF}.el-time-spinner__arrow.el-icon-arrow-up{top:10px}.el-time-spinner__arrow.el-icon-arrow-down{bottom:10px}.el-time-spinner__input.el-input{width:70%}.el-time-spinner__list{margin:0;list-style:none}.el-time-spinner__list::after,.el-time-spinner__list::before{content:'';display:block;width:100%;height:80px}.el-time-spinner__item{height:32px;line-height:32px;font-size:12px;color:#606266}.el-time-spinner__item:hover:not(.disabled):not(.active){background:#F5F7FA;cursor:pointer}.el-time-spinner__item.active:not(.disabled){color:#303133;font-weight:700}.el-time-spinner__item.disabled{color:#C0C4CC;cursor:not-allowed}.el-time-panel{margin:5px 0;border:1px solid #E4E7ED;background-color:#FFF;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:2px;position:absolute;width:180px;left:0;z-index:1000;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-box-sizing:content-box;box-sizing:content-box}.el-slider__button,.el-slider__button-wrapper{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.el-time-panel__content{font-size:0;position:relative;overflow:hidden}.el-time-panel__content::after,.el-time-panel__content::before{content:"";top:50%;position:absolute;margin-top:-15px;height:32px;z-index:-1;left:0;right:0;-webkit-box-sizing:border-box;box-sizing:border-box;padding-top:6px;text-align:left;border-top:1px solid #E4E7ED;border-bottom:1px solid #E4E7ED}.el-time-panel__content::after{left:50%;margin-left:12%;margin-right:12%}.el-time-panel__content::before{padding-left:50%;margin-right:12%;margin-left:12%}.el-time-panel__content.has-seconds::after{left:calc(100% / 3 * 2)}.el-time-panel__content.has-seconds::before{padding-left:calc(100% / 3)}.el-time-panel__footer{border-top:1px solid #e4e4e4;padding:4px;height:36px;line-height:25px;text-align:right;-webkit-box-sizing:border-box;box-sizing:border-box}.el-time-panel__btn{border:none;line-height:28px;padding:0 5px;margin:0 5px;cursor:pointer;background-color:transparent;outline:0;font-size:12px;color:#303133}.el-time-panel__btn.confirm{font-weight:800;color:#409EFF}.el-time-range-picker{width:354px;overflow:visible}.el-time-range-picker__content{position:relative;text-align:center;padding:10px}.el-time-range-picker__cell{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:4px 7px 7px;width:50%;display:inline-block}.el-time-range-picker__header{margin-bottom:5px;text-align:center;font-size:14px}.el-time-range-picker__body{border-radius:2px;border:1px solid #E4E7ED}.el-popover{position:absolute;background:#FFF;min-width:150px;border:1px solid #EBEEF5;padding:12px;z-index:2000;color:#606266;line-height:1.4;text-align:justify;font-size:14px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);word-break:break-all}.el-popover--plain{padding:18px 20px}.el-popover__title{color:#303133;font-size:16px;line-height:1;margin-bottom:12px}.v-modal-enter{-webkit-animation:v-modal-in .2s ease;animation:v-modal-in .2s ease}.v-modal-leave{-webkit-animation:v-modal-out .2s ease forwards;animation:v-modal-out .2s ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{100%{opacity:0}}.v-modal{position:fixed;left:0;top:0;width:100%;height:100%;opacity:.5;background:#000}.el-popup-parent--hidden{overflow:hidden}.el-message-box{display:inline-block;width:420px;padding-bottom:10px;vertical-align:middle;background-color:#FFF;border-radius:4px;border:1px solid #EBEEF5;font-size:18px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);text-align:left;overflow:hidden;-webkit-backface-visibility:hidden;backface-visibility:hidden}.el-message-box__wrapper{position:fixed;top:0;bottom:0;left:0;right:0;text-align:center}.el-message-box__wrapper::after{content:"";display:inline-block;height:100%;width:0;vertical-align:middle}.el-message-box__header{position:relative;padding:15px 15px 10px}.el-message-box__title{padding-left:0;margin-bottom:0;font-size:18px;line-height:1;color:#303133}.el-message-box__headerbtn{position:absolute;top:15px;right:15px;padding:0;border:none;outline:0;background:0 0;font-size:16px;cursor:pointer}.el-form-item.is-error .el-input__inner,.el-form-item.is-error .el-input__inner:focus,.el-form-item.is-error .el-textarea__inner,.el-form-item.is-error .el-textarea__inner:focus,.el-message-box__input input.invalid,.el-message-box__input input.invalid:focus{border-color:#F56C6C}.el-message-box__headerbtn .el-message-box__close{color:#909399}.el-message-box__headerbtn:focus .el-message-box__close,.el-message-box__headerbtn:hover .el-message-box__close{color:#409EFF}.el-message-box__content{padding:10px 15px;color:#606266;font-size:14px}.el-message-box__container{position:relative}.el-message-box__input{padding-top:15px}.el-message-box__status{position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);font-size:24px!important}.el-message-box__status::before{padding-left:1px}.el-message-box__status+.el-message-box__message{padding-left:36px;padding-right:12px}.el-message-box__status.el-icon-success{color:#67C23A}.el-message-box__status.el-icon-info{color:#909399}.el-message-box__status.el-icon-warning{color:#E6A23C}.el-message-box__status.el-icon-error{color:#F56C6C}.el-message-box__message{margin:0}.el-message-box__message p{margin:0;line-height:24px}.el-message-box__errormsg{color:#F56C6C;font-size:12px;min-height:18px;margin-top:2px}.el-message-box__btns{padding:5px 15px 0;text-align:right}.el-message-box__btns button:nth-child(2){margin-left:10px}.el-message-box__btns-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.el-message-box--center{padding-bottom:30px}.el-message-box--center .el-message-box__header{padding-top:30px}.el-message-box--center .el-message-box__title{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-message-box--center .el-message-box__status{position:relative;top:auto;padding-right:5px;text-align:center;-webkit-transform:translateY(-1px);transform:translateY(-1px)}.el-message-box--center .el-message-box__message{margin-left:0}.el-message-box--center .el-message-box__btns,.el-message-box--center .el-message-box__content{text-align:center}.el-message-box--center .el-message-box__content{padding-left:27px;padding-right:27px}.msgbox-fade-enter-active{-webkit-animation:msgbox-fade-in .3s;animation:msgbox-fade-in .3s}.msgbox-fade-leave-active{-webkit-animation:msgbox-fade-out .3s;animation:msgbox-fade-out .3s}@-webkit-keyframes msgbox-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes msgbox-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes msgbox-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes msgbox-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}.el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb::after,.el-breadcrumb::before{display:table;content:""}.el-breadcrumb::after{clear:both}.el-breadcrumb__separator{margin:0 9px;font-weight:700;color:#C0C4CC}.el-breadcrumb__separator[class*=icon]{margin:0 6px;font-weight:400}.el-breadcrumb__item{float:left}.el-breadcrumb__inner{color:#606266}.el-breadcrumb__inner a,.el-breadcrumb__inner.is-link{font-weight:700;text-decoration:none;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1);color:#303133}.el-breadcrumb__inner a:hover,.el-breadcrumb__inner.is-link:hover{color:#409EFF;cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover{font-weight:400;color:#606266;cursor:text}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}.el-form--label-left .el-form-item__label{text-align:left}.el-form--label-top .el-form-item__label{float:none;display:inline-block;text-align:left;padding:0 0 10px}.el-form--inline .el-form-item{display:inline-block;margin-right:10px;vertical-align:top}.el-form--inline .el-form-item__label{float:none;display:inline-block}.el-form--inline .el-form-item__content{display:inline-block;vertical-align:top}.el-form--inline.el-form--label-top .el-form-item__content{display:block}.el-form-item{margin-bottom:22px}.el-form-item::after,.el-form-item::before{display:table;content:""}.el-form-item::after{clear:both}.el-form-item .el-form-item{margin-bottom:0}.el-form-item--mini.el-form-item,.el-form-item--small.el-form-item{margin-bottom:18px}.el-form-item .el-input__validateIcon{display:none}.el-form-item--medium .el-form-item__content,.el-form-item--medium .el-form-item__label{line-height:36px}.el-form-item--small .el-form-item__content,.el-form-item--small .el-form-item__label{line-height:32px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--mini .el-form-item__content,.el-form-item--mini .el-form-item__label{line-height:28px}.el-form-item--mini .el-form-item__error{padding-top:1px}.el-form-item__label-wrap{float:left}.el-form-item__label-wrap .el-form-item__label{display:inline-block;float:none}.el-form-item__label{text-align:right;vertical-align:middle;float:left;font-size:14px;color:#606266;line-height:40px;padding:0 12px 0 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-form-item__content{line-height:40px;position:relative;font-size:14px}.el-form-item__content::after,.el-form-item__content::before{display:table;content:""}.el-form-item__content::after{clear:both}.el-form-item__content .el-input-group{vertical-align:top}.el-form-item__error{color:#F56C6C;font-size:12px;line-height:1;padding-top:4px;position:absolute;top:100%;left:0}.el-form-item__error--inline{position:relative;top:auto;left:auto;display:inline-block;margin-left:10px}.el-form-item.is-required:not(.is-no-asterisk) .el-form-item__label-wrap>.el-form-item__label:before,.el-form-item.is-required:not(.is-no-asterisk)>.el-form-item__label:before{content:'*';color:#F56C6C;margin-right:4px}.el-form-item.is-error .el-input-group__append .el-input__inner,.el-form-item.is-error .el-input-group__prepend .el-input__inner{border-color:transparent}.el-form-item.is-error .el-input__validateIcon{color:#F56C6C}.el-form-item--feedback .el-input__validateIcon{display:inline-block}.el-tabs__header{padding:0;position:relative;margin:0 0 15px}.el-tabs__active-bar{position:absolute;bottom:0;left:0;height:2px;background-color:#409EFF;z-index:1;-webkit-transition:-webkit-transform .3s cubic-bezier(.645,.045,.355,1);transition:-webkit-transform .3s cubic-bezier(.645,.045,.355,1);transition:transform .3s cubic-bezier(.645,.045,.355,1);transition:transform .3s cubic-bezier(.645,.045,.355,1),-webkit-transform .3s cubic-bezier(.645,.045,.355,1);list-style:none}.el-tabs__new-tab{float:right;border:1px solid #d3dce6;height:18px;width:18px;line-height:18px;margin:12px 0 9px 10px;border-radius:3px;text-align:center;font-size:12px;color:#d3dce6;cursor:pointer;-webkit-transition:all .15s;transition:all .15s}.el-collapse-item__arrow,.el-tabs__nav{-webkit-transition:-webkit-transform .3s}.el-tabs__new-tab .el-icon-plus{-webkit-transform:scale(.8,.8);transform:scale(.8,.8)}.el-tabs__new-tab:hover{color:#409EFF}.el-tabs__nav-wrap{overflow:hidden;margin-bottom:-1px;position:relative}.el-tabs__nav-wrap::after{content:"";position:absolute;left:0;bottom:0;width:100%;height:2px;background-color:#E4E7ED;z-index:1}.el-tabs--border-card>.el-tabs__header .el-tabs__nav-wrap::after,.el-tabs--card>.el-tabs__header .el-tabs__nav-wrap::after{content:none}.el-tabs__nav-wrap.is-scrollable{padding:0 20px;-webkit-box-sizing:border-box;box-sizing:border-box}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{position:absolute;cursor:pointer;line-height:44px;font-size:12px;color:#909399}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{white-space:nowrap;position:relative;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;float:left;z-index:2}.el-tabs__nav.is-stretch{min-width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.el-tabs__nav.is-stretch>*{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center}.el-tabs__item{padding:0 20px;height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;line-height:40px;display:inline-block;list-style:none;font-size:14px;font-weight:500;color:#303133;position:relative}.el-tabs__item:focus,.el-tabs__item:focus:active{outline:0}.el-tabs__item:focus.is-active.is-focus:not(:active){-webkit-box-shadow:0 0 2px 2px #409EFF inset;box-shadow:0 0 2px 2px #409EFF inset;border-radius:3px}.el-tabs__item .el-icon-close{border-radius:50%;text-align:center;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);margin-left:5px}.el-tabs__item .el-icon-close:before{-webkit-transform:scale(.9);transform:scale(.9);display:inline-block}.el-tabs__item .el-icon-close:hover{background-color:#C0C4CC;color:#FFF}.el-tabs__item.is-active{color:#409EFF}.el-tabs__item:hover{color:#409EFF;cursor:pointer}.el-tabs__item.is-disabled{color:#C0C4CC;cursor:default}.el-tabs__content{overflow:hidden;position:relative}.el-tabs--card>.el-tabs__header{border-bottom:1px solid #E4E7ED}.el-tabs--card>.el-tabs__header .el-tabs__nav{border:1px solid #E4E7ED;border-bottom:none;border-radius:4px 4px 0 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-tabs--card>.el-tabs__header .el-tabs__active-bar{display:none}.el-tabs--card>.el-tabs__header .el-tabs__item .el-icon-close{position:relative;font-size:12px;width:0;height:14px;vertical-align:middle;line-height:15px;overflow:hidden;top:-1px;right:-2px;-webkit-transform-origin:100% 50%;transform-origin:100% 50%}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .el-icon-close,.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .el-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid transparent;border-left:1px solid #E4E7ED;-webkit-transition:color .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1);transition:color .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1)}.el-tabs--card>.el-tabs__header .el-tabs__item:first-child{border-left:none}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border-bottom-color:#FFF}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.el-tabs--border-card{background:#FFF;border:1px solid #DCDFE6;-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04);box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04)}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:#F5F7FA;border-bottom:1px solid #E4E7ED;margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__item{-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);border:1px solid transparent;margin-top:-1px;color:#909399}.el-tabs--border-card>.el-tabs__header .el-tabs__item+.el-tabs__item,.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child{margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{color:#409EFF;background-color:#FFF;border-right-color:#DCDFE6;border-left-color:#DCDFE6}.el-tabs--border-card>.el-tabs__header .el-tabs__item:not(.is-disabled):hover{color:#409EFF}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-disabled{color:#C0C4CC}.el-tabs--border-card>.el-tabs__header .is-scrollable .el-tabs__item:first-child{margin-left:0}.el-tabs--bottom .el-tabs__item.is-bottom:nth-child(2),.el-tabs--bottom .el-tabs__item.is-top:nth-child(2),.el-tabs--top .el-tabs__item.is-bottom:nth-child(2),.el-tabs--top .el-tabs__item.is-top:nth-child(2){padding-left:0}.el-tabs--bottom .el-tabs__item.is-bottom:last-child,.el-tabs--bottom .el-tabs__item.is-top:last-child,.el-tabs--top .el-tabs__item.is-bottom:last-child,.el-tabs--top .el-tabs__item.is-top:last-child{padding-right:0}.el-tabs--bottom .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:20px}.el-tabs--bottom .el-tabs--left>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:last-child{padding-right:20px}.el-tabs--bottom .el-tabs__header.is-bottom{margin-bottom:0;margin-top:10px}.el-tabs--bottom.el-tabs--border-card .el-tabs__header.is-bottom{border-bottom:0;border-top:1px solid #DCDFE6}.el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap.is-bottom{margin-top:-1px;margin-bottom:0}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active){border:1px solid transparent}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom{margin:0 -1px -1px}.el-tabs--left,.el-tabs--right{overflow:hidden}.el-tabs--left .el-tabs__header.is-left,.el-tabs--left .el-tabs__header.is-right,.el-tabs--left .el-tabs__nav-scroll,.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__header.is-left,.el-tabs--right .el-tabs__header.is-right,.el-tabs--right .el-tabs__nav-scroll,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{height:100%}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__active-bar.is-right,.el-tabs--right .el-tabs__active-bar.is-left,.el-tabs--right .el-tabs__active-bar.is-right{top:0;bottom:auto;width:2px;height:auto}.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{margin-bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{height:30px;line-height:30px;width:100%;text-align:center;cursor:pointer}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i{-webkit-transform:rotateZ(90deg);transform:rotateZ(90deg)}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{left:auto;top:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next{right:auto;bottom:0}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__nav-wrap.is-left::after{right:0;left:auto}.el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--left .el-tabs__nav-wrap.is-right.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.el-tabs--left .el-tabs__nav-wrap.is-left::after,.el-tabs--left .el-tabs__nav-wrap.is-right::after,.el-tabs--right .el-tabs__nav-wrap.is-left::after,.el-tabs--right .el-tabs__nav-wrap.is-right::after{height:100%;width:2px;bottom:auto;top:0}.el-tabs--left .el-tabs__nav.is-left,.el-tabs--left .el-tabs__nav.is-right,.el-tabs--right .el-tabs__nav.is-left,.el-tabs--right .el-tabs__nav.is-right{float:none}.el-tabs--left .el-tabs__item.is-left,.el-tabs--left .el-tabs__item.is-right,.el-tabs--right .el-tabs__item.is-left,.el-tabs--right .el-tabs__item.is-right{display:block}.el-tabs--left.el-tabs--card .el-tabs__active-bar.is-left,.el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right{display:none}.el-tabs--left .el-tabs__header.is-left{float:left;margin-bottom:0;margin-right:10px}.el-tabs--left .el-tabs__nav-wrap.is-left{margin-right:-1px}.el-tabs--left .el-tabs__item.is-left{text-align:right}.el-tabs--left.el-tabs--card .el-tabs__item.is-left{border-left:none;border-right:1px solid #E4E7ED;border-bottom:none;border-top:1px solid #E4E7ED;text-align:left}.el-tabs--left.el-tabs--card .el-tabs__item.is-left:first-child{border-right:1px solid #E4E7ED;border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active{border:1px solid #E4E7ED;border-right-color:#fff;border-left:none;border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:first-child{border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:last-child{border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__nav{border-radius:4px 0 0 4px;border-bottom:1px solid #E4E7ED;border-right:none}.el-tabs--left.el-tabs--card .el-tabs__new-tab{float:none}.el-tabs--left.el-tabs--border-card .el-tabs__header.is-left{border-right:1px solid #dfe4ed}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left{border:1px solid transparent;margin:-1px 0 -1px -1px}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active{border-color:#d1dbe5 transparent}.el-tabs--right .el-tabs__header.is-right{float:right;margin-bottom:0;margin-left:10px}.el-tabs--right .el-tabs__nav-wrap.is-right{margin-left:-1px}.el-tabs--right .el-tabs__nav-wrap.is-right::after{left:0;right:auto}.el-tabs--right .el-tabs__active-bar.is-right{left:0}.el-tabs--right.el-tabs--card .el-tabs__item.is-right{border-bottom:none;border-top:1px solid #E4E7ED}.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child{border-left:1px solid #E4E7ED;border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active{border:1px solid #E4E7ED;border-left-color:#fff;border-right:none;border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:first-child{border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:last-child{border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__nav{border-radius:0 4px 4px 0;border-bottom:1px solid #E4E7ED;border-left:none}.el-tabs--right.el-tabs--border-card .el-tabs__header.is-right{border-left:1px solid #dfe4ed}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right{border:1px solid transparent;margin:-1px -1px -1px 0}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active{border-color:#d1dbe5 transparent}.slideInLeft-transition,.slideInRight-transition{display:inline-block}.slideInRight-enter{-webkit-animation:slideInRight-enter .3s;animation:slideInRight-enter .3s}.slideInRight-leave{position:absolute;left:0;right:0;-webkit-animation:slideInRight-leave .3s;animation:slideInRight-leave .3s}.slideInLeft-enter{-webkit-animation:slideInLeft-enter .3s;animation:slideInLeft-enter .3s}.slideInLeft-leave{position:absolute;left:0;right:0;-webkit-animation:slideInLeft-leave .3s;animation:slideInLeft-leave .3s}@-webkit-keyframes slideInRight-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInRight-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes slideInRight-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%);opacity:0}}@keyframes slideInRight-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%);opacity:0}}@-webkit-keyframes slideInLeft-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInLeft-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes slideInLeft-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}}@keyframes slideInLeft-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}}.el-tree{position:relative;cursor:default;background:#FFF;color:#606266}.el-tree__empty-block{position:relative;min-height:60px;text-align:center;width:100%;height:100%}.el-tree__empty-text{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);color:#909399;font-size:14px}.el-tree__drop-indicator{position:absolute;left:0;right:0;height:1px;background-color:#409EFF}.el-tree-node{white-space:nowrap;outline:0}.el-tree-node:focus>.el-tree-node__content{background-color:#F5F7FA}.el-tree-node.is-drop-inner>.el-tree-node__content .el-tree-node__label{background-color:#409EFF;color:#fff}.el-tree-node__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:26px;cursor:pointer}.el-tree-node__content>.el-tree-node__expand-icon{padding:6px}.el-tree-node__content>label.el-checkbox{margin-right:8px}.el-tree-node__content:hover{background-color:#F5F7FA}.el-tree.is-dragging .el-tree-node__content{cursor:move}.el-tree.is-dragging.is-drop-not-allow .el-tree-node__content{cursor:not-allowed}.el-tree-node__expand-icon{cursor:pointer;color:#C0C4CC;font-size:12px;-webkit-transform:rotate(0);transform:rotate(0);-webkit-transition:-webkit-transform .3s ease-in-out;transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-transform .3s ease-in-out}.el-tree-node__expand-icon.expanded{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-tree-node__expand-icon.is-leaf{color:transparent;cursor:default}.el-tree-node__label{font-size:14px}.el-tree-node__loading-icon{margin-right:8px;font-size:14px;color:#C0C4CC}.el-tree-node>.el-tree-node__children{overflow:hidden;background-color:transparent}.el-tree-node.is-expanded>.el-tree-node__children{display:block}.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{background-color:#f0f7ff}.el-alert{width:100%;padding:8px 16px;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;position:relative;background-color:#FFF;overflow:hidden;opacity:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-transition:opacity .2s;transition:opacity .2s}.el-alert.is-light .el-alert__closebtn{color:#C0C4CC}.el-alert.is-dark .el-alert__closebtn,.el-alert.is-dark .el-alert__description{color:#FFF}.el-alert.is-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-alert--success.is-light{background-color:#f0f9eb;color:#67C23A}.el-alert--success.is-light .el-alert__description{color:#67C23A}.el-alert--success.is-dark{background-color:#67C23A;color:#FFF}.el-alert--info.is-light{background-color:#f4f4f5;color:#909399}.el-alert--info.is-dark{background-color:#909399;color:#FFF}.el-alert--info .el-alert__description{color:#909399}.el-alert--warning.is-light{background-color:#fdf6ec;color:#E6A23C}.el-alert--warning.is-light .el-alert__description{color:#E6A23C}.el-alert--warning.is-dark{background-color:#E6A23C;color:#FFF}.el-alert--error.is-light{background-color:#fef0f0;color:#F56C6C}.el-alert--error.is-light .el-alert__description{color:#F56C6C}.el-alert--error.is-dark{background-color:#F56C6C;color:#FFF}.el-alert__content{display:table-cell;padding:0 8px}.el-alert__icon{font-size:16px;width:16px}.el-alert__icon.is-big{font-size:28px;width:28px}.el-alert__title{font-size:13px;line-height:18px}.el-alert__title.is-bold{font-weight:700}.el-alert .el-alert__description{font-size:12px;margin:5px 0 0}.el-alert__closebtn{font-size:12px;opacity:1;position:absolute;top:12px;right:15px;cursor:pointer}.el-alert-fade-enter,.el-alert-fade-leave-active,.el-loading-fade-enter,.el-loading-fade-leave-active,.el-notification-fade-leave-active{opacity:0}.el-alert__closebtn.is-customed{font-style:normal;font-size:13px;top:9px}.el-notification{display:-webkit-box;display:-ms-flexbox;display:flex;width:330px;padding:14px 26px 14px 13px;border-radius:8px;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid #EBEEF5;position:fixed;background-color:#FFF;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-transition:opacity .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;transition:opacity .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;transition:opacity .3s,transform .3s,left .3s,right .3s,top .4s,bottom .3s;transition:opacity .3s,transform .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;overflow:hidden}.el-notification.right{right:16px}.el-notification.left{left:16px}.el-notification__group{margin-left:13px;margin-right:8px}.el-notification__title{font-weight:700;font-size:16px;color:#303133;margin:0}.el-notification__content{font-size:14px;line-height:21px;margin:6px 0 0;color:#606266;text-align:justify}.el-notification__content p{margin:0}.el-notification__icon{height:24px;width:24px;font-size:24px}.el-notification__closeBtn{position:absolute;top:18px;right:15px;cursor:pointer;color:#909399;font-size:16px}.el-notification__closeBtn:hover{color:#606266}.el-notification .el-icon-success{color:#67C23A}.el-notification .el-icon-error{color:#F56C6C}.el-notification .el-icon-info{color:#909399}.el-notification .el-icon-warning{color:#E6A23C}.el-notification-fade-enter.right{right:0;-webkit-transform:translateX(100%);transform:translateX(100%)}.el-notification-fade-enter.left{left:0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}.el-input-number{position:relative;display:inline-block;width:180px;line-height:38px}.el-input-number .el-input{display:block}.el-input-number .el-input__inner{-webkit-appearance:none;padding-left:50px;padding-right:50px;text-align:center}.el-input-number__decrease,.el-input-number__increase{position:absolute;z-index:1;top:1px;width:40px;height:auto;text-align:center;background:#F5F7FA;color:#606266;cursor:pointer;font-size:13px}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:#409EFF}.el-input-number__decrease:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled),.el-input-number__increase:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled){border-color:#409EFF}.el-input-number__decrease.is-disabled,.el-input-number__increase.is-disabled{color:#C0C4CC;cursor:not-allowed}.el-input-number__increase{right:1px;border-radius:0 4px 4px 0;border-left:1px solid #DCDFE6}.el-input-number__decrease{left:1px;border-radius:4px 0 0 4px;border-right:1px solid #DCDFE6}.el-input-number.is-disabled .el-input-number__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:#E4E7ED;color:#E4E7ED}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:#E4E7ED;cursor:not-allowed}.el-input-number--medium{width:200px;line-height:34px}.el-input-number--medium .el-input-number__decrease,.el-input-number--medium .el-input-number__increase{width:36px;font-size:14px}.el-input-number--medium .el-input__inner{padding-left:43px;padding-right:43px}.el-input-number--small{width:130px;line-height:30px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{width:32px;font-size:13px}.el-input-number--small .el-input-number__decrease [class*=el-icon],.el-input-number--small .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.9);transform:scale(.9)}.el-input-number--small .el-input__inner{padding-left:39px;padding-right:39px}.el-input-number--mini{width:130px;line-height:26px}.el-input-number--mini .el-input-number__decrease,.el-input-number--mini .el-input-number__increase{width:28px;font-size:12px}.el-input-number--mini .el-input-number__decrease [class*=el-icon],.el-input-number--mini .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.8);transform:scale(.8)}.el-input-number--mini .el-input__inner{padding-left:35px;padding-right:35px}.el-input-number.is-without-controls .el-input__inner{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__inner{padding-left:15px;padding-right:50px}.el-input-number.is-controls-right .el-input-number__decrease,.el-input-number.is-controls-right .el-input-number__increase{height:auto;line-height:19px}.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.8);transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-radius:0 4px 0 0;border-bottom:1px solid #DCDFE6}.el-input-number.is-controls-right .el-input-number__decrease{right:1px;bottom:1px;top:auto;left:auto;border-right:none;border-left:1px solid #DCDFE6;border-radius:0 0 4px}.el-input-number.is-controls-right[class*=medium] [class*=decrease],.el-input-number.is-controls-right[class*=medium] [class*=increase]{line-height:17px}.el-input-number.is-controls-right[class*=small] [class*=decrease],.el-input-number.is-controls-right[class*=small] [class*=increase]{line-height:15px}.el-input-number.is-controls-right[class*=mini] [class*=decrease],.el-input-number.is-controls-right[class*=mini] [class*=increase]{line-height:13px}.el-tooltip__popper{position:absolute;border-radius:4px;padding:10px;z-index:2000;font-size:12px;line-height:1.2;min-width:10px;word-wrap:break-word}.el-tooltip__popper .popper__arrow,.el-tooltip__popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-tooltip__popper .popper__arrow{border-width:6px}.el-tooltip__popper .popper__arrow::after{content:" ";border-width:5px}.el-progress-bar__inner::after,.el-row::after,.el-row::before,.el-slider::after,.el-slider::before,.el-slider__button-wrapper::after,.el-upload-cover::after{content:""}.el-tooltip__popper[x-placement^=top]{margin-bottom:12px}.el-tooltip__popper[x-placement^=top] .popper__arrow{bottom:-6px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-5px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=bottom]{margin-top:12px}.el-tooltip__popper[x-placement^=bottom] .popper__arrow{top:-6px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-5px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=right]{margin-left:12px}.el-tooltip__popper[x-placement^=right] .popper__arrow{left:-6px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=right] .popper__arrow::after{bottom:-5px;left:1px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=left]{margin-right:12px}.el-tooltip__popper[x-placement^=left] .popper__arrow{right:-6px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-5px;margin-left:-5px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper.is-dark{background:#303133;color:#FFF}.el-tooltip__popper.is-light{background:#FFF;border:1px solid #303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow{border-top-color:#303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow::after{border-top-color:#FFF}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow{border-bottom-color:#303133}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow::after{border-bottom-color:#FFF}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow{border-left-color:#303133}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow::after{border-left-color:#FFF}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow{border-right-color:#303133}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow::after{border-right-color:#FFF}.el-slider::after,.el-slider::before{display:table}.el-slider__button-wrapper .el-tooltip,.el-slider__button-wrapper::after{vertical-align:middle;display:inline-block}.el-slider::after{clear:both}.el-slider__runway{width:100%;height:6px;margin:16px 0;background-color:#E4E7ED;border-radius:3px;position:relative;cursor:pointer;vertical-align:middle}.el-slider__runway.show-input{margin-right:160px;width:auto}.el-slider__runway.disabled{cursor:default}.el-slider__runway.disabled .el-slider__bar{background-color:#C0C4CC}.el-slider__runway.disabled .el-slider__button{border-color:#C0C4CC}.el-slider__runway.disabled .el-slider__button-wrapper.dragging,.el-slider__runway.disabled .el-slider__button-wrapper.hover,.el-slider__runway.disabled .el-slider__button-wrapper:hover{cursor:not-allowed}.el-slider__runway.disabled .el-slider__button.dragging,.el-slider__runway.disabled .el-slider__button.hover,.el-slider__runway.disabled .el-slider__button:hover{-webkit-transform:scale(1);transform:scale(1);cursor:not-allowed}.el-slider__button-wrapper,.el-slider__stop{-webkit-transform:translateX(-50%);position:absolute}.el-slider__input{float:right;margin-top:3px;width:130px}.el-slider__input.el-input-number--mini{margin-top:5px}.el-slider__input.el-input-number--medium{margin-top:0}.el-slider__input.el-input-number--large{margin-top:-2px}.el-slider__bar{height:6px;background-color:#409EFF;border-top-left-radius:3px;border-bottom-left-radius:3px;position:absolute}.el-slider__button-wrapper{height:36px;width:36px;z-index:1001;top:-15px;transform:translateX(-50%);background-color:transparent;text-align:center;user-select:none;line-height:normal}.el-slider__button-wrapper::after{height:100%}.el-slider__button-wrapper.hover,.el-slider__button-wrapper:hover{cursor:-webkit-grab;cursor:grab}.el-slider__button-wrapper.dragging{cursor:-webkit-grabbing;cursor:grabbing}.el-slider__button{width:16px;height:16px;border:2px solid #409EFF;background-color:#FFF;border-radius:50%;-webkit-transition:.2s;transition:.2s;user-select:none}.el-image-viewer__btn,.el-step__icon-inner{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.el-slider__button.dragging,.el-slider__button.hover,.el-slider__button:hover{-webkit-transform:scale(1.2);transform:scale(1.2)}.el-slider__button.hover,.el-slider__button:hover{cursor:-webkit-grab;cursor:grab}.el-slider__button.dragging{cursor:-webkit-grabbing;cursor:grabbing}.el-slider__stop{height:6px;width:6px;border-radius:100%;background-color:#FFF;transform:translateX(-50%)}.el-slider__marks{top:0;left:12px;width:18px;height:100%}.el-slider__marks-text{position:absolute;-webkit-transform:translateX(-50%);transform:translateX(-50%);font-size:14px;color:#909399;margin-top:15px}.el-slider.is-vertical{position:relative}.el-slider.is-vertical .el-slider__runway{width:6px;height:100%;margin:0 16px}.el-slider.is-vertical .el-slider__bar{width:6px;height:auto;border-radius:0 0 3px 3px}.el-slider.is-vertical .el-slider__button-wrapper{top:auto;left:-15px;-webkit-transform:translateY(50%);transform:translateY(50%)}.el-slider.is-vertical .el-slider__stop{-webkit-transform:translateY(50%);transform:translateY(50%)}.el-slider.is-vertical.el-slider--with-input{padding-bottom:58px}.el-slider.is-vertical.el-slider--with-input .el-slider__input{overflow:visible;float:none;position:absolute;bottom:22px;width:36px;margin-top:15px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input__inner{text-align:center;padding-left:5px;padding-right:5px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{top:32px;margin-top:-1px;border:1px solid #DCDFE6;line-height:20px;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease{width:18px;right:18px;border-bottom-left-radius:4px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{width:19px;border-bottom-right-radius:4px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase~.el-input .el-input__inner{border-bottom-left-radius:0;border-bottom-right-radius:0}.el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__increase{border-color:#C0C4CC}.el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__increase{border-color:#409EFF}.el-slider.is-vertical .el-slider__marks-text{margin-top:0;left:15px;-webkit-transform:translateY(50%);transform:translateY(50%)}.el-loading-parent--relative{position:relative!important}.el-loading-parent--hidden{overflow:hidden!important}.el-loading-mask{position:absolute;z-index:2000;background-color:rgba(255,255,255,.9);margin:0;top:0;right:0;bottom:0;left:0;-webkit-transition:opacity .3s;transition:opacity .3s}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:-25px}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{height:50px;width:50px}.el-loading-spinner{top:50%;margin-top:-21px;width:100%;text-align:center;position:absolute}.el-col-pull-0,.el-col-pull-1,.el-col-pull-10,.el-col-pull-11,.el-col-pull-13,.el-col-pull-14,.el-col-pull-15,.el-col-pull-16,.el-col-pull-17,.el-col-pull-18,.el-col-pull-19,.el-col-pull-2,.el-col-pull-20,.el-col-pull-21,.el-col-pull-22,.el-col-pull-23,.el-col-pull-24,.el-col-pull-3,.el-col-pull-4,.el-col-pull-5,.el-col-pull-6,.el-col-pull-7,.el-col-pull-8,.el-col-pull-9,.el-col-push-0,.el-col-push-1,.el-col-push-10,.el-col-push-11,.el-col-push-12,.el-col-push-13,.el-col-push-14,.el-col-push-15,.el-col-push-16,.el-col-push-17,.el-col-push-18,.el-col-push-19,.el-col-push-2,.el-col-push-20,.el-col-push-21,.el-col-push-22,.el-col-push-23,.el-col-push-24,.el-col-push-3,.el-col-push-4,.el-col-push-5,.el-col-push-6,.el-col-push-7,.el-col-push-8,.el-col-push-9,.el-row{position:relative}.el-loading-spinner .el-loading-text{color:#409EFF;margin:3px 0;font-size:14px}.el-loading-spinner .circular{height:42px;width:42px;-webkit-animation:loading-rotate 2s linear infinite;animation:loading-rotate 2s linear infinite}.el-loading-spinner .path{-webkit-animation:loading-dash 1.5s ease-in-out infinite;animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:#409EFF;stroke-linecap:round}.el-loading-spinner i{color:#409EFF}@-webkit-keyframes loading-rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes loading-rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}100%{stroke-dasharray:90,150;stroke-dashoffset:-120px}}@keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}100%{stroke-dasharray:90,150;stroke-dashoffset:-120px}}.el-row{-webkit-box-sizing:border-box;box-sizing:border-box}.el-row::after,.el-row::before{display:table}.el-row::after{clear:both}.el-row--flex{display:-webkit-box;display:-ms-flexbox;display:flex}.el-col-0,.el-row--flex:after,.el-row--flex:before{display:none}.el-row--flex.is-justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-row--flex.is-justify-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.el-row--flex.is-justify-space-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.el-row--flex.is-justify-space-around{-ms-flex-pack:distribute;justify-content:space-around}.el-row--flex.is-align-middle{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-row--flex.is-align-bottom{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}[class*=el-col-]{float:left;-webkit-box-sizing:border-box;box-sizing:border-box}.el-upload--picture-card,.el-upload-dragger{-webkit-box-sizing:border-box;cursor:pointer}.el-col-0{width:0%}.el-col-offset-0{margin-left:0}.el-col-pull-0{right:0}.el-col-push-0{left:0}.el-col-1{width:4.16667%}.el-col-offset-1{margin-left:4.16667%}.el-col-pull-1{right:4.16667%}.el-col-push-1{left:4.16667%}.el-col-2{width:8.33333%}.el-col-offset-2{margin-left:8.33333%}.el-col-pull-2{right:8.33333%}.el-col-push-2{left:8.33333%}.el-col-3{width:12.5%}.el-col-offset-3{margin-left:12.5%}.el-col-pull-3{right:12.5%}.el-col-push-3{left:12.5%}.el-col-4{width:16.66667%}.el-col-offset-4{margin-left:16.66667%}.el-col-pull-4{right:16.66667%}.el-col-push-4{left:16.66667%}.el-col-5{width:20.83333%}.el-col-offset-5{margin-left:20.83333%}.el-col-pull-5{right:20.83333%}.el-col-push-5{left:20.83333%}.el-col-6{width:25%}.el-col-offset-6{margin-left:25%}.el-col-pull-6{right:25%}.el-col-push-6{left:25%}.el-col-7{width:29.16667%}.el-col-offset-7{margin-left:29.16667%}.el-col-pull-7{right:29.16667%}.el-col-push-7{left:29.16667%}.el-col-8{width:33.33333%}.el-col-offset-8{margin-left:33.33333%}.el-col-pull-8{right:33.33333%}.el-col-push-8{left:33.33333%}.el-col-9{width:37.5%}.el-col-offset-9{margin-left:37.5%}.el-col-pull-9{right:37.5%}.el-col-push-9{left:37.5%}.el-col-10{width:41.66667%}.el-col-offset-10{margin-left:41.66667%}.el-col-pull-10{right:41.66667%}.el-col-push-10{left:41.66667%}.el-col-11{width:45.83333%}.el-col-offset-11{margin-left:45.83333%}.el-col-pull-11{right:45.83333%}.el-col-push-11{left:45.83333%}.el-col-12{width:50%}.el-col-offset-12{margin-left:50%}.el-col-pull-12{position:relative;right:50%}.el-col-push-12{left:50%}.el-col-13{width:54.16667%}.el-col-offset-13{margin-left:54.16667%}.el-col-pull-13{right:54.16667%}.el-col-push-13{left:54.16667%}.el-col-14{width:58.33333%}.el-col-offset-14{margin-left:58.33333%}.el-col-pull-14{right:58.33333%}.el-col-push-14{left:58.33333%}.el-col-15{width:62.5%}.el-col-offset-15{margin-left:62.5%}.el-col-pull-15{right:62.5%}.el-col-push-15{left:62.5%}.el-col-16{width:66.66667%}.el-col-offset-16{margin-left:66.66667%}.el-col-pull-16{right:66.66667%}.el-col-push-16{left:66.66667%}.el-col-17{width:70.83333%}.el-col-offset-17{margin-left:70.83333%}.el-col-pull-17{right:70.83333%}.el-col-push-17{left:70.83333%}.el-col-18{width:75%}.el-col-offset-18{margin-left:75%}.el-col-pull-18{right:75%}.el-col-push-18{left:75%}.el-col-19{width:79.16667%}.el-col-offset-19{margin-left:79.16667%}.el-col-pull-19{right:79.16667%}.el-col-push-19{left:79.16667%}.el-col-20{width:83.33333%}.el-col-offset-20{margin-left:83.33333%}.el-col-pull-20{right:83.33333%}.el-col-push-20{left:83.33333%}.el-col-21{width:87.5%}.el-col-offset-21{margin-left:87.5%}.el-col-pull-21{right:87.5%}.el-col-push-21{left:87.5%}.el-col-22{width:91.66667%}.el-col-offset-22{margin-left:91.66667%}.el-col-pull-22{right:91.66667%}.el-col-push-22{left:91.66667%}.el-col-23{width:95.83333%}.el-col-offset-23{margin-left:95.83333%}.el-col-pull-23{right:95.83333%}.el-col-push-23{left:95.83333%}.el-col-24{width:100%}.el-col-offset-24{margin-left:100%}.el-col-pull-24{right:100%}.el-col-push-24{left:100%}@media only screen and (max-width:767px){.el-col-xs-0{display:none;width:0%}.el-col-xs-offset-0{margin-left:0}.el-col-xs-pull-0{position:relative;right:0}.el-col-xs-push-0{position:relative;left:0}.el-col-xs-1{width:4.16667%}.el-col-xs-offset-1{margin-left:4.16667%}.el-col-xs-pull-1{position:relative;right:4.16667%}.el-col-xs-push-1{position:relative;left:4.16667%}.el-col-xs-2{width:8.33333%}.el-col-xs-offset-2{margin-left:8.33333%}.el-col-xs-pull-2{position:relative;right:8.33333%}.el-col-xs-push-2{position:relative;left:8.33333%}.el-col-xs-3{width:12.5%}.el-col-xs-offset-3{margin-left:12.5%}.el-col-xs-pull-3{position:relative;right:12.5%}.el-col-xs-push-3{position:relative;left:12.5%}.el-col-xs-4{width:16.66667%}.el-col-xs-offset-4{margin-left:16.66667%}.el-col-xs-pull-4{position:relative;right:16.66667%}.el-col-xs-push-4{position:relative;left:16.66667%}.el-col-xs-5{width:20.83333%}.el-col-xs-offset-5{margin-left:20.83333%}.el-col-xs-pull-5{position:relative;right:20.83333%}.el-col-xs-push-5{position:relative;left:20.83333%}.el-col-xs-6{width:25%}.el-col-xs-offset-6{margin-left:25%}.el-col-xs-pull-6{position:relative;right:25%}.el-col-xs-push-6{position:relative;left:25%}.el-col-xs-7{width:29.16667%}.el-col-xs-offset-7{margin-left:29.16667%}.el-col-xs-pull-7{position:relative;right:29.16667%}.el-col-xs-push-7{position:relative;left:29.16667%}.el-col-xs-8{width:33.33333%}.el-col-xs-offset-8{margin-left:33.33333%}.el-col-xs-pull-8{position:relative;right:33.33333%}.el-col-xs-push-8{position:relative;left:33.33333%}.el-col-xs-9{width:37.5%}.el-col-xs-offset-9{margin-left:37.5%}.el-col-xs-pull-9{position:relative;right:37.5%}.el-col-xs-push-9{position:relative;left:37.5%}.el-col-xs-10{width:41.66667%}.el-col-xs-offset-10{margin-left:41.66667%}.el-col-xs-pull-10{position:relative;right:41.66667%}.el-col-xs-push-10{position:relative;left:41.66667%}.el-col-xs-11{width:45.83333%}.el-col-xs-offset-11{margin-left:45.83333%}.el-col-xs-pull-11{position:relative;right:45.83333%}.el-col-xs-push-11{position:relative;left:45.83333%}.el-col-xs-12{width:50%}.el-col-xs-offset-12{margin-left:50%}.el-col-xs-pull-12{position:relative;right:50%}.el-col-xs-push-12{position:relative;left:50%}.el-col-xs-13{width:54.16667%}.el-col-xs-offset-13{margin-left:54.16667%}.el-col-xs-pull-13{position:relative;right:54.16667%}.el-col-xs-push-13{position:relative;left:54.16667%}.el-col-xs-14{width:58.33333%}.el-col-xs-offset-14{margin-left:58.33333%}.el-col-xs-pull-14{position:relative;right:58.33333%}.el-col-xs-push-14{position:relative;left:58.33333%}.el-col-xs-15{width:62.5%}.el-col-xs-offset-15{margin-left:62.5%}.el-col-xs-pull-15{position:relative;right:62.5%}.el-col-xs-push-15{position:relative;left:62.5%}.el-col-xs-16{width:66.66667%}.el-col-xs-offset-16{margin-left:66.66667%}.el-col-xs-pull-16{position:relative;right:66.66667%}.el-col-xs-push-16{position:relative;left:66.66667%}.el-col-xs-17{width:70.83333%}.el-col-xs-offset-17{margin-left:70.83333%}.el-col-xs-pull-17{position:relative;right:70.83333%}.el-col-xs-push-17{position:relative;left:70.83333%}.el-col-xs-18{width:75%}.el-col-xs-offset-18{margin-left:75%}.el-col-xs-pull-18{position:relative;right:75%}.el-col-xs-push-18{position:relative;left:75%}.el-col-xs-19{width:79.16667%}.el-col-xs-offset-19{margin-left:79.16667%}.el-col-xs-pull-19{position:relative;right:79.16667%}.el-col-xs-push-19{position:relative;left:79.16667%}.el-col-xs-20{width:83.33333%}.el-col-xs-offset-20{margin-left:83.33333%}.el-col-xs-pull-20{position:relative;right:83.33333%}.el-col-xs-push-20{position:relative;left:83.33333%}.el-col-xs-21{width:87.5%}.el-col-xs-offset-21{margin-left:87.5%}.el-col-xs-pull-21{position:relative;right:87.5%}.el-col-xs-push-21{position:relative;left:87.5%}.el-col-xs-22{width:91.66667%}.el-col-xs-offset-22{margin-left:91.66667%}.el-col-xs-pull-22{position:relative;right:91.66667%}.el-col-xs-push-22{position:relative;left:91.66667%}.el-col-xs-23{width:95.83333%}.el-col-xs-offset-23{margin-left:95.83333%}.el-col-xs-pull-23{position:relative;right:95.83333%}.el-col-xs-push-23{position:relative;left:95.83333%}.el-col-xs-24{width:100%}.el-col-xs-offset-24{margin-left:100%}.el-col-xs-pull-24{position:relative;right:100%}.el-col-xs-push-24{position:relative;left:100%}}@media only screen and (min-width:768px){.el-col-sm-0{display:none;width:0%}.el-col-sm-offset-0{margin-left:0}.el-col-sm-pull-0{position:relative;right:0}.el-col-sm-push-0{position:relative;left:0}.el-col-sm-1{width:4.16667%}.el-col-sm-offset-1{margin-left:4.16667%}.el-col-sm-pull-1{position:relative;right:4.16667%}.el-col-sm-push-1{position:relative;left:4.16667%}.el-col-sm-2{width:8.33333%}.el-col-sm-offset-2{margin-left:8.33333%}.el-col-sm-pull-2{position:relative;right:8.33333%}.el-col-sm-push-2{position:relative;left:8.33333%}.el-col-sm-3{width:12.5%}.el-col-sm-offset-3{margin-left:12.5%}.el-col-sm-pull-3{position:relative;right:12.5%}.el-col-sm-push-3{position:relative;left:12.5%}.el-col-sm-4{width:16.66667%}.el-col-sm-offset-4{margin-left:16.66667%}.el-col-sm-pull-4{position:relative;right:16.66667%}.el-col-sm-push-4{position:relative;left:16.66667%}.el-col-sm-5{width:20.83333%}.el-col-sm-offset-5{margin-left:20.83333%}.el-col-sm-pull-5{position:relative;right:20.83333%}.el-col-sm-push-5{position:relative;left:20.83333%}.el-col-sm-6{width:25%}.el-col-sm-offset-6{margin-left:25%}.el-col-sm-pull-6{position:relative;right:25%}.el-col-sm-push-6{position:relative;left:25%}.el-col-sm-7{width:29.16667%}.el-col-sm-offset-7{margin-left:29.16667%}.el-col-sm-pull-7{position:relative;right:29.16667%}.el-col-sm-push-7{position:relative;left:29.16667%}.el-col-sm-8{width:33.33333%}.el-col-sm-offset-8{margin-left:33.33333%}.el-col-sm-pull-8{position:relative;right:33.33333%}.el-col-sm-push-8{position:relative;left:33.33333%}.el-col-sm-9{width:37.5%}.el-col-sm-offset-9{margin-left:37.5%}.el-col-sm-pull-9{position:relative;right:37.5%}.el-col-sm-push-9{position:relative;left:37.5%}.el-col-sm-10{width:41.66667%}.el-col-sm-offset-10{margin-left:41.66667%}.el-col-sm-pull-10{position:relative;right:41.66667%}.el-col-sm-push-10{position:relative;left:41.66667%}.el-col-sm-11{width:45.83333%}.el-col-sm-offset-11{margin-left:45.83333%}.el-col-sm-pull-11{position:relative;right:45.83333%}.el-col-sm-push-11{position:relative;left:45.83333%}.el-col-sm-12{width:50%}.el-col-sm-offset-12{margin-left:50%}.el-col-sm-pull-12{position:relative;right:50%}.el-col-sm-push-12{position:relative;left:50%}.el-col-sm-13{width:54.16667%}.el-col-sm-offset-13{margin-left:54.16667%}.el-col-sm-pull-13{position:relative;right:54.16667%}.el-col-sm-push-13{position:relative;left:54.16667%}.el-col-sm-14{width:58.33333%}.el-col-sm-offset-14{margin-left:58.33333%}.el-col-sm-pull-14{position:relative;right:58.33333%}.el-col-sm-push-14{position:relative;left:58.33333%}.el-col-sm-15{width:62.5%}.el-col-sm-offset-15{margin-left:62.5%}.el-col-sm-pull-15{position:relative;right:62.5%}.el-col-sm-push-15{position:relative;left:62.5%}.el-col-sm-16{width:66.66667%}.el-col-sm-offset-16{margin-left:66.66667%}.el-col-sm-pull-16{position:relative;right:66.66667%}.el-col-sm-push-16{position:relative;left:66.66667%}.el-col-sm-17{width:70.83333%}.el-col-sm-offset-17{margin-left:70.83333%}.el-col-sm-pull-17{position:relative;right:70.83333%}.el-col-sm-push-17{position:relative;left:70.83333%}.el-col-sm-18{width:75%}.el-col-sm-offset-18{margin-left:75%}.el-col-sm-pull-18{position:relative;right:75%}.el-col-sm-push-18{position:relative;left:75%}.el-col-sm-19{width:79.16667%}.el-col-sm-offset-19{margin-left:79.16667%}.el-col-sm-pull-19{position:relative;right:79.16667%}.el-col-sm-push-19{position:relative;left:79.16667%}.el-col-sm-20{width:83.33333%}.el-col-sm-offset-20{margin-left:83.33333%}.el-col-sm-pull-20{position:relative;right:83.33333%}.el-col-sm-push-20{position:relative;left:83.33333%}.el-col-sm-21{width:87.5%}.el-col-sm-offset-21{margin-left:87.5%}.el-col-sm-pull-21{position:relative;right:87.5%}.el-col-sm-push-21{position:relative;left:87.5%}.el-col-sm-22{width:91.66667%}.el-col-sm-offset-22{margin-left:91.66667%}.el-col-sm-pull-22{position:relative;right:91.66667%}.el-col-sm-push-22{position:relative;left:91.66667%}.el-col-sm-23{width:95.83333%}.el-col-sm-offset-23{margin-left:95.83333%}.el-col-sm-pull-23{position:relative;right:95.83333%}.el-col-sm-push-23{position:relative;left:95.83333%}.el-col-sm-24{width:100%}.el-col-sm-offset-24{margin-left:100%}.el-col-sm-pull-24{position:relative;right:100%}.el-col-sm-push-24{position:relative;left:100%}}@media only screen and (min-width:992px){.el-col-md-0{display:none;width:0%}.el-col-md-offset-0{margin-left:0}.el-col-md-pull-0{position:relative;right:0}.el-col-md-push-0{position:relative;left:0}.el-col-md-1{width:4.16667%}.el-col-md-offset-1{margin-left:4.16667%}.el-col-md-pull-1{position:relative;right:4.16667%}.el-col-md-push-1{position:relative;left:4.16667%}.el-col-md-2{width:8.33333%}.el-col-md-offset-2{margin-left:8.33333%}.el-col-md-pull-2{position:relative;right:8.33333%}.el-col-md-push-2{position:relative;left:8.33333%}.el-col-md-3{width:12.5%}.el-col-md-offset-3{margin-left:12.5%}.el-col-md-pull-3{position:relative;right:12.5%}.el-col-md-push-3{position:relative;left:12.5%}.el-col-md-4{width:16.66667%}.el-col-md-offset-4{margin-left:16.66667%}.el-col-md-pull-4{position:relative;right:16.66667%}.el-col-md-push-4{position:relative;left:16.66667%}.el-col-md-5{width:20.83333%}.el-col-md-offset-5{margin-left:20.83333%}.el-col-md-pull-5{position:relative;right:20.83333%}.el-col-md-push-5{position:relative;left:20.83333%}.el-col-md-6{width:25%}.el-col-md-offset-6{margin-left:25%}.el-col-md-pull-6{position:relative;right:25%}.el-col-md-push-6{position:relative;left:25%}.el-col-md-7{width:29.16667%}.el-col-md-offset-7{margin-left:29.16667%}.el-col-md-pull-7{position:relative;right:29.16667%}.el-col-md-push-7{position:relative;left:29.16667%}.el-col-md-8{width:33.33333%}.el-col-md-offset-8{margin-left:33.33333%}.el-col-md-pull-8{position:relative;right:33.33333%}.el-col-md-push-8{position:relative;left:33.33333%}.el-col-md-9{width:37.5%}.el-col-md-offset-9{margin-left:37.5%}.el-col-md-pull-9{position:relative;right:37.5%}.el-col-md-push-9{position:relative;left:37.5%}.el-col-md-10{width:41.66667%}.el-col-md-offset-10{margin-left:41.66667%}.el-col-md-pull-10{position:relative;right:41.66667%}.el-col-md-push-10{position:relative;left:41.66667%}.el-col-md-11{width:45.83333%}.el-col-md-offset-11{margin-left:45.83333%}.el-col-md-pull-11{position:relative;right:45.83333%}.el-col-md-push-11{position:relative;left:45.83333%}.el-col-md-12{width:50%}.el-col-md-offset-12{margin-left:50%}.el-col-md-pull-12{position:relative;right:50%}.el-col-md-push-12{position:relative;left:50%}.el-col-md-13{width:54.16667%}.el-col-md-offset-13{margin-left:54.16667%}.el-col-md-pull-13{position:relative;right:54.16667%}.el-col-md-push-13{position:relative;left:54.16667%}.el-col-md-14{width:58.33333%}.el-col-md-offset-14{margin-left:58.33333%}.el-col-md-pull-14{position:relative;right:58.33333%}.el-col-md-push-14{position:relative;left:58.33333%}.el-col-md-15{width:62.5%}.el-col-md-offset-15{margin-left:62.5%}.el-col-md-pull-15{position:relative;right:62.5%}.el-col-md-push-15{position:relative;left:62.5%}.el-col-md-16{width:66.66667%}.el-col-md-offset-16{margin-left:66.66667%}.el-col-md-pull-16{position:relative;right:66.66667%}.el-col-md-push-16{position:relative;left:66.66667%}.el-col-md-17{width:70.83333%}.el-col-md-offset-17{margin-left:70.83333%}.el-col-md-pull-17{position:relative;right:70.83333%}.el-col-md-push-17{position:relative;left:70.83333%}.el-col-md-18{width:75%}.el-col-md-offset-18{margin-left:75%}.el-col-md-pull-18{position:relative;right:75%}.el-col-md-push-18{position:relative;left:75%}.el-col-md-19{width:79.16667%}.el-col-md-offset-19{margin-left:79.16667%}.el-col-md-pull-19{position:relative;right:79.16667%}.el-col-md-push-19{position:relative;left:79.16667%}.el-col-md-20{width:83.33333%}.el-col-md-offset-20{margin-left:83.33333%}.el-col-md-pull-20{position:relative;right:83.33333%}.el-col-md-push-20{position:relative;left:83.33333%}.el-col-md-21{width:87.5%}.el-col-md-offset-21{margin-left:87.5%}.el-col-md-pull-21{position:relative;right:87.5%}.el-col-md-push-21{position:relative;left:87.5%}.el-col-md-22{width:91.66667%}.el-col-md-offset-22{margin-left:91.66667%}.el-col-md-pull-22{position:relative;right:91.66667%}.el-col-md-push-22{position:relative;left:91.66667%}.el-col-md-23{width:95.83333%}.el-col-md-offset-23{margin-left:95.83333%}.el-col-md-pull-23{position:relative;right:95.83333%}.el-col-md-push-23{position:relative;left:95.83333%}.el-col-md-24{width:100%}.el-col-md-offset-24{margin-left:100%}.el-col-md-pull-24{position:relative;right:100%}.el-col-md-push-24{position:relative;left:100%}}@media only screen and (min-width:1200px){.el-col-lg-0{display:none;width:0%}.el-col-lg-offset-0{margin-left:0}.el-col-lg-pull-0{position:relative;right:0}.el-col-lg-push-0{position:relative;left:0}.el-col-lg-1{width:4.16667%}.el-col-lg-offset-1{margin-left:4.16667%}.el-col-lg-pull-1{position:relative;right:4.16667%}.el-col-lg-push-1{position:relative;left:4.16667%}.el-col-lg-2{width:8.33333%}.el-col-lg-offset-2{margin-left:8.33333%}.el-col-lg-pull-2{position:relative;right:8.33333%}.el-col-lg-push-2{position:relative;left:8.33333%}.el-col-lg-3{width:12.5%}.el-col-lg-offset-3{margin-left:12.5%}.el-col-lg-pull-3{position:relative;right:12.5%}.el-col-lg-push-3{position:relative;left:12.5%}.el-col-lg-4{width:16.66667%}.el-col-lg-offset-4{margin-left:16.66667%}.el-col-lg-pull-4{position:relative;right:16.66667%}.el-col-lg-push-4{position:relative;left:16.66667%}.el-col-lg-5{width:20.83333%}.el-col-lg-offset-5{margin-left:20.83333%}.el-col-lg-pull-5{position:relative;right:20.83333%}.el-col-lg-push-5{position:relative;left:20.83333%}.el-col-lg-6{width:25%}.el-col-lg-offset-6{margin-left:25%}.el-col-lg-pull-6{position:relative;right:25%}.el-col-lg-push-6{position:relative;left:25%}.el-col-lg-7{width:29.16667%}.el-col-lg-offset-7{margin-left:29.16667%}.el-col-lg-pull-7{position:relative;right:29.16667%}.el-col-lg-push-7{position:relative;left:29.16667%}.el-col-lg-8{width:33.33333%}.el-col-lg-offset-8{margin-left:33.33333%}.el-col-lg-pull-8{position:relative;right:33.33333%}.el-col-lg-push-8{position:relative;left:33.33333%}.el-col-lg-9{width:37.5%}.el-col-lg-offset-9{margin-left:37.5%}.el-col-lg-pull-9{position:relative;right:37.5%}.el-col-lg-push-9{position:relative;left:37.5%}.el-col-lg-10{width:41.66667%}.el-col-lg-offset-10{margin-left:41.66667%}.el-col-lg-pull-10{position:relative;right:41.66667%}.el-col-lg-push-10{position:relative;left:41.66667%}.el-col-lg-11{width:45.83333%}.el-col-lg-offset-11{margin-left:45.83333%}.el-col-lg-pull-11{position:relative;right:45.83333%}.el-col-lg-push-11{position:relative;left:45.83333%}.el-col-lg-12{width:50%}.el-col-lg-offset-12{margin-left:50%}.el-col-lg-pull-12{position:relative;right:50%}.el-col-lg-push-12{position:relative;left:50%}.el-col-lg-13{width:54.16667%}.el-col-lg-offset-13{margin-left:54.16667%}.el-col-lg-pull-13{position:relative;right:54.16667%}.el-col-lg-push-13{position:relative;left:54.16667%}.el-col-lg-14{width:58.33333%}.el-col-lg-offset-14{margin-left:58.33333%}.el-col-lg-pull-14{position:relative;right:58.33333%}.el-col-lg-push-14{position:relative;left:58.33333%}.el-col-lg-15{width:62.5%}.el-col-lg-offset-15{margin-left:62.5%}.el-col-lg-pull-15{position:relative;right:62.5%}.el-col-lg-push-15{position:relative;left:62.5%}.el-col-lg-16{width:66.66667%}.el-col-lg-offset-16{margin-left:66.66667%}.el-col-lg-pull-16{position:relative;right:66.66667%}.el-col-lg-push-16{position:relative;left:66.66667%}.el-col-lg-17{width:70.83333%}.el-col-lg-offset-17{margin-left:70.83333%}.el-col-lg-pull-17{position:relative;right:70.83333%}.el-col-lg-push-17{position:relative;left:70.83333%}.el-col-lg-18{width:75%}.el-col-lg-offset-18{margin-left:75%}.el-col-lg-pull-18{position:relative;right:75%}.el-col-lg-push-18{position:relative;left:75%}.el-col-lg-19{width:79.16667%}.el-col-lg-offset-19{margin-left:79.16667%}.el-col-lg-pull-19{position:relative;right:79.16667%}.el-col-lg-push-19{position:relative;left:79.16667%}.el-col-lg-20{width:83.33333%}.el-col-lg-offset-20{margin-left:83.33333%}.el-col-lg-pull-20{position:relative;right:83.33333%}.el-col-lg-push-20{position:relative;left:83.33333%}.el-col-lg-21{width:87.5%}.el-col-lg-offset-21{margin-left:87.5%}.el-col-lg-pull-21{position:relative;right:87.5%}.el-col-lg-push-21{position:relative;left:87.5%}.el-col-lg-22{width:91.66667%}.el-col-lg-offset-22{margin-left:91.66667%}.el-col-lg-pull-22{position:relative;right:91.66667%}.el-col-lg-push-22{position:relative;left:91.66667%}.el-col-lg-23{width:95.83333%}.el-col-lg-offset-23{margin-left:95.83333%}.el-col-lg-pull-23{position:relative;right:95.83333%}.el-col-lg-push-23{position:relative;left:95.83333%}.el-col-lg-24{width:100%}.el-col-lg-offset-24{margin-left:100%}.el-col-lg-pull-24{position:relative;right:100%}.el-col-lg-push-24{position:relative;left:100%}}@media only screen and (min-width:1920px){.el-col-xl-0{display:none;width:0%}.el-col-xl-offset-0{margin-left:0}.el-col-xl-pull-0{position:relative;right:0}.el-col-xl-push-0{position:relative;left:0}.el-col-xl-1{width:4.16667%}.el-col-xl-offset-1{margin-left:4.16667%}.el-col-xl-pull-1{position:relative;right:4.16667%}.el-col-xl-push-1{position:relative;left:4.16667%}.el-col-xl-2{width:8.33333%}.el-col-xl-offset-2{margin-left:8.33333%}.el-col-xl-pull-2{position:relative;right:8.33333%}.el-col-xl-push-2{position:relative;left:8.33333%}.el-col-xl-3{width:12.5%}.el-col-xl-offset-3{margin-left:12.5%}.el-col-xl-pull-3{position:relative;right:12.5%}.el-col-xl-push-3{position:relative;left:12.5%}.el-col-xl-4{width:16.66667%}.el-col-xl-offset-4{margin-left:16.66667%}.el-col-xl-pull-4{position:relative;right:16.66667%}.el-col-xl-push-4{position:relative;left:16.66667%}.el-col-xl-5{width:20.83333%}.el-col-xl-offset-5{margin-left:20.83333%}.el-col-xl-pull-5{position:relative;right:20.83333%}.el-col-xl-push-5{position:relative;left:20.83333%}.el-col-xl-6{width:25%}.el-col-xl-offset-6{margin-left:25%}.el-col-xl-pull-6{position:relative;right:25%}.el-col-xl-push-6{position:relative;left:25%}.el-col-xl-7{width:29.16667%}.el-col-xl-offset-7{margin-left:29.16667%}.el-col-xl-pull-7{position:relative;right:29.16667%}.el-col-xl-push-7{position:relative;left:29.16667%}.el-col-xl-8{width:33.33333%}.el-col-xl-offset-8{margin-left:33.33333%}.el-col-xl-pull-8{position:relative;right:33.33333%}.el-col-xl-push-8{position:relative;left:33.33333%}.el-col-xl-9{width:37.5%}.el-col-xl-offset-9{margin-left:37.5%}.el-col-xl-pull-9{position:relative;right:37.5%}.el-col-xl-push-9{position:relative;left:37.5%}.el-col-xl-10{width:41.66667%}.el-col-xl-offset-10{margin-left:41.66667%}.el-col-xl-pull-10{position:relative;right:41.66667%}.el-col-xl-push-10{position:relative;left:41.66667%}.el-col-xl-11{width:45.83333%}.el-col-xl-offset-11{margin-left:45.83333%}.el-col-xl-pull-11{position:relative;right:45.83333%}.el-col-xl-push-11{position:relative;left:45.83333%}.el-col-xl-12{width:50%}.el-col-xl-offset-12{margin-left:50%}.el-col-xl-pull-12{position:relative;right:50%}.el-col-xl-push-12{position:relative;left:50%}.el-col-xl-13{width:54.16667%}.el-col-xl-offset-13{margin-left:54.16667%}.el-col-xl-pull-13{position:relative;right:54.16667%}.el-col-xl-push-13{position:relative;left:54.16667%}.el-col-xl-14{width:58.33333%}.el-col-xl-offset-14{margin-left:58.33333%}.el-col-xl-pull-14{position:relative;right:58.33333%}.el-col-xl-push-14{position:relative;left:58.33333%}.el-col-xl-15{width:62.5%}.el-col-xl-offset-15{margin-left:62.5%}.el-col-xl-pull-15{position:relative;right:62.5%}.el-col-xl-push-15{position:relative;left:62.5%}.el-col-xl-16{width:66.66667%}.el-col-xl-offset-16{margin-left:66.66667%}.el-col-xl-pull-16{position:relative;right:66.66667%}.el-col-xl-push-16{position:relative;left:66.66667%}.el-col-xl-17{width:70.83333%}.el-col-xl-offset-17{margin-left:70.83333%}.el-col-xl-pull-17{position:relative;right:70.83333%}.el-col-xl-push-17{position:relative;left:70.83333%}.el-col-xl-18{width:75%}.el-col-xl-offset-18{margin-left:75%}.el-col-xl-pull-18{position:relative;right:75%}.el-col-xl-push-18{position:relative;left:75%}.el-col-xl-19{width:79.16667%}.el-col-xl-offset-19{margin-left:79.16667%}.el-col-xl-pull-19{position:relative;right:79.16667%}.el-col-xl-push-19{position:relative;left:79.16667%}.el-col-xl-20{width:83.33333%}.el-col-xl-offset-20{margin-left:83.33333%}.el-col-xl-pull-20{position:relative;right:83.33333%}.el-col-xl-push-20{position:relative;left:83.33333%}.el-col-xl-21{width:87.5%}.el-col-xl-offset-21{margin-left:87.5%}.el-col-xl-pull-21{position:relative;right:87.5%}.el-col-xl-push-21{position:relative;left:87.5%}.el-col-xl-22{width:91.66667%}.el-col-xl-offset-22{margin-left:91.66667%}.el-col-xl-pull-22{position:relative;right:91.66667%}.el-col-xl-push-22{position:relative;left:91.66667%}.el-col-xl-23{width:95.83333%}.el-col-xl-offset-23{margin-left:95.83333%}.el-col-xl-pull-23{position:relative;right:95.83333%}.el-col-xl-push-23{position:relative;left:95.83333%}.el-col-xl-24{width:100%}.el-col-xl-offset-24{margin-left:100%}.el-col-xl-pull-24{position:relative;right:100%}.el-col-xl-push-24{position:relative;left:100%}}@-webkit-keyframes progress{0%{background-position:0 0}100%{background-position:32px 0}}.el-upload{display:inline-block;text-align:center;cursor:pointer;outline:0}.el-upload__input{display:none}.el-upload__tip{font-size:12px;color:#606266;margin-top:7px}.el-upload iframe{position:absolute;z-index:-1;top:0;left:0;opacity:0;filter:alpha(opacity=0)}.el-upload--picture-card{background-color:#fbfdff;border:1px dashed #c0ccda;border-radius:6px;box-sizing:border-box;width:148px;height:148px;line-height:146px;vertical-align:top}.el-upload--picture-card i{font-size:28px;color:#8c939d}.el-upload--picture-card:hover,.el-upload:focus{border-color:#409EFF;color:#409EFF}.el-upload:focus .el-upload-dragger{border-color:#409EFF}.el-upload-dragger{background-color:#fff;border:1px dashed #d9d9d9;border-radius:6px;box-sizing:border-box;width:360px;height:180px;text-align:center;position:relative;overflow:hidden}.el-upload-dragger .el-icon-upload{font-size:67px;color:#C0C4CC;margin:40px 0 16px;line-height:50px}.el-upload-dragger+.el-upload__tip{text-align:center}.el-upload-dragger~.el-upload__files{border-top:1px solid #DCDFE6;margin-top:7px;padding-top:5px}.el-upload-dragger .el-upload__text{color:#606266;font-size:14px;text-align:center}.el-upload-dragger .el-upload__text em{color:#409EFF;font-style:normal}.el-upload-dragger:hover{border-color:#409EFF}.el-upload-dragger.is-dragover{background-color:rgba(32,159,255,.06);border:2px dashed #409EFF}.el-upload-list{margin:0;padding:0;list-style:none}.el-upload-list__item{-webkit-transition:all .5s cubic-bezier(.55,0,.1,1);transition:all .5s cubic-bezier(.55,0,.1,1);font-size:14px;color:#606266;line-height:1.8;margin-top:5px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;width:100%}.el-upload-list__item .el-progress{position:absolute;top:20px;width:100%}.el-upload-list__item .el-progress__text{position:absolute;right:0;top:-13px}.el-upload-list__item .el-progress-bar{margin-right:0;padding-right:0}.el-upload-list__item:first-child{margin-top:10px}.el-upload-list__item .el-icon-upload-success{color:#67C23A}.el-upload-list__item .el-icon-close{display:none;position:absolute;top:5px;right:5px;cursor:pointer;opacity:.75;color:#606266}.el-upload-list__item .el-icon-close:hover{opacity:1}.el-upload-list__item .el-icon-close-tip{display:none;position:absolute;top:5px;right:5px;font-size:12px;cursor:pointer;opacity:1;color:#409EFF}.el-upload-list__item:hover{background-color:#F5F7FA}.el-upload-list__item:hover .el-icon-close{display:inline-block}.el-upload-list__item:hover .el-progress__text{display:none}.el-upload-list__item.is-success .el-upload-list__item-status-label{display:block}.el-upload-list__item.is-success .el-upload-list__item-name:focus,.el-upload-list__item.is-success .el-upload-list__item-name:hover{color:#409EFF;cursor:pointer}.el-upload-list__item.is-success:focus:not(:hover) .el-icon-close-tip{display:inline-block}.el-upload-list__item.is-success:active .el-icon-close-tip,.el-upload-list__item.is-success:focus .el-upload-list__item-status-label,.el-upload-list__item.is-success:hover .el-upload-list__item-status-label,.el-upload-list__item.is-success:not(.focusing):focus .el-icon-close-tip{display:none}.el-upload-list.is-disabled .el-upload-list__item:hover .el-upload-list__item-status-label{display:block}.el-upload-list__item-name{color:#606266;display:block;margin-right:40px;overflow:hidden;padding-left:4px;text-overflow:ellipsis;-webkit-transition:color .3s;transition:color .3s;white-space:nowrap}.el-upload-list__item-name [class^=el-icon]{height:100%;margin-right:7px;color:#909399;line-height:inherit}.el-upload-list__item-status-label{position:absolute;right:5px;top:0;line-height:inherit;display:none}.el-upload-list__item-delete{position:absolute;right:10px;top:0;font-size:12px;color:#606266;display:none}.el-upload-list__item-delete:hover{color:#409EFF}.el-upload-list--picture-card{margin:0;display:inline;vertical-align:top}.el-upload-list--picture-card .el-upload-list__item{overflow:hidden;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;width:148px;height:148px;margin:0 8px 8px 0;display:inline-block}.el-upload-list--picture-card .el-upload-list__item .el-icon-check,.el-upload-list--picture-card .el-upload-list__item .el-icon-circle-check{color:#FFF}.el-upload-list--picture-card .el-upload-list__item .el-icon-close,.el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label{display:none}.el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture-card .el-upload-list__item-name{display:none}.el-upload-list--picture-card .el-upload-list__item-thumbnail{width:100%;height:100%}.el-upload-list--picture-card .el-upload-list__item-status-label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 0 1pc 1px rgba(0,0,0,.2);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.el-upload-list--picture-card .el-upload-list__item-status-label i{font-size:12px;margin-top:11px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.el-upload-list--picture-card .el-upload-list__item-actions{position:absolute;width:100%;height:100%;left:0;top:0;cursor:default;text-align:center;color:#fff;opacity:0;font-size:20px;background-color:rgba(0,0,0,.5);-webkit-transition:opacity .3s;transition:opacity .3s}.el-upload-list--picture-card .el-upload-list__item-actions::after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-upload-list--picture-card .el-upload-list__item-actions span{display:none;cursor:pointer}.el-upload-list--picture-card .el-upload-list__item-actions span+span{margin-left:15px}.el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete{position:static;font-size:inherit;color:inherit}.el-upload-list--picture-card .el-upload-list__item-actions:hover{opacity:1}.el-upload-list--picture-card .el-upload-list__item-actions:hover span{display:inline-block}.el-upload-list--picture-card .el-progress{top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);bottom:auto;width:126px}.el-upload-list--picture-card .el-progress .el-progress__text{top:50%}.el-upload-list--picture .el-upload-list__item{overflow:hidden;z-index:0;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;margin-top:10px;padding:10px 10px 10px 90px;height:92px}.el-upload-list--picture .el-upload-list__item .el-icon-check,.el-upload-list--picture .el-upload-list__item .el-icon-circle-check{color:#FFF}.el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label{background:0 0;-webkit-box-shadow:none;box-shadow:none;top:-2px;right:-12px}.el-upload-list--picture .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name{line-height:70px;margin-top:0}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i{display:none}.el-upload-list--picture .el-upload-list__item-thumbnail{vertical-align:middle;display:inline-block;width:70px;height:70px;float:left;position:relative;z-index:1;margin-left:-80px;background-color:#FFF}.el-upload-list--picture .el-upload-list__item-name{display:block;margin-top:20px}.el-upload-list--picture .el-upload-list__item-name i{font-size:70px;line-height:1;position:absolute;left:9px;top:10px}.el-upload-list--picture .el-upload-list__item-status-label{position:absolute;right:-17px;top:-7px;width:46px;height:26px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 1px 1px #ccc;box-shadow:0 1px 1px #ccc}.el-upload-list--picture .el-upload-list__item-status-label i{font-size:12px;margin-top:12px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.el-upload-list--picture .el-progress{position:relative;top:-7px}.el-upload-cover{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;z-index:10;cursor:default}.el-upload-cover::after{display:inline-block;height:100%;vertical-align:middle}.el-upload-cover img{display:block;width:100%;height:100%}.el-upload-cover__label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 0 1pc 1px rgba(0,0,0,.2);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.el-upload-cover__label i{font-size:12px;margin-top:11px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);color:#fff}.el-upload-cover__progress{display:inline-block;vertical-align:middle;position:static;width:243px}.el-upload-cover__progress+.el-upload__inner{opacity:0}.el-upload-cover__content{position:absolute;top:0;left:0;width:100%;height:100%}.el-upload-cover__interact{position:absolute;bottom:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.72);text-align:center}.el-upload-cover__interact .btn{display:inline-block;color:#FFF;font-size:14px;cursor:pointer;vertical-align:middle;-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);margin-top:60px}.el-upload-cover__interact .btn span{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.el-upload-cover__interact .btn:not(:first-child){margin-left:35px}.el-upload-cover__interact .btn:hover{-webkit-transform:translateY(-13px);transform:translateY(-13px)}.el-upload-cover__interact .btn:hover span{opacity:1}.el-upload-cover__interact .btn i{color:#FFF;display:block;font-size:24px;line-height:inherit;margin:0 auto 5px}.el-upload-cover__title{position:absolute;bottom:0;left:0;background-color:#FFF;height:36px;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:400;text-align:left;padding:0 10px;margin:0;line-height:36px;font-size:14px;color:#303133}.el-upload-cover+.el-upload__inner{opacity:0;position:relative;z-index:1}.el-progress{position:relative;line-height:1}.el-progress__text{font-size:14px;color:#606266;display:inline-block;vertical-align:middle;margin-left:10px;line-height:1}.el-progress__text i{vertical-align:middle;display:block}.el-progress--circle,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{position:absolute;top:50%;left:0;width:100%;text-align:center;margin:0;-webkit-transform:translate(0,-50%);transform:translate(0,-50%)}.el-progress--circle .el-progress__text i,.el-progress--dashboard .el-progress__text i{vertical-align:middle;display:inline-block}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{padding-right:0;margin-right:0;display:block}.el-progress-bar,.el-progress-bar__inner::after,.el-progress-bar__innerText,.el-spinner{display:inline-block;vertical-align:middle}.el-progress--text-inside .el-progress-bar{padding-right:0;margin-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:#67C23A}.el-progress.is-success .el-progress__text{color:#67C23A}.el-progress.is-warning .el-progress-bar__inner{background-color:#E6A23C}.el-progress.is-warning .el-progress__text{color:#E6A23C}.el-progress.is-exception .el-progress-bar__inner{background-color:#F56C6C}.el-progress.is-exception .el-progress__text{color:#F56C6C}.el-progress-bar{padding-right:50px;width:100%;margin-right:-55px;-webkit-box-sizing:border-box;box-sizing:border-box}.el-progress-bar__outer{height:6px;border-radius:100px;background-color:#EBEEF5;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{position:absolute;left:0;top:0;height:100%;background-color:#409EFF;text-align:right;border-radius:100px;line-height:1;white-space:nowrap;-webkit-transition:width .6s ease;transition:width .6s ease}.el-card,.el-message{border-radius:4px;overflow:hidden}.el-progress-bar__inner::after{height:100%}.el-progress-bar__innerText{color:#FFF;font-size:12px;margin:0 5px}@keyframes progress{0%{background-position:0 0}100%{background-position:32px 0}}.el-time-spinner{width:100%;white-space:nowrap}.el-spinner-inner{-webkit-animation:rotate 2s linear infinite;animation:rotate 2s linear infinite;width:50px;height:50px}.el-spinner-inner .path{stroke:#ececec;stroke-linecap:round;-webkit-animation:dash 1.5s ease-in-out infinite;animation:dash 1.5s ease-in-out infinite}@-webkit-keyframes rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}100%{stroke-dasharray:90,150;stroke-dashoffset:-124}}@keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}100%{stroke-dasharray:90,150;stroke-dashoffset:-124}}.el-message{min-width:380px;-webkit-box-sizing:border-box;box-sizing:border-box;border-width:1px;border-style:solid;border-color:#EBEEF5;position:fixed;left:50%;top:20px;-webkit-transform:translateX(-50%);transform:translateX(-50%);background-color:#edf2fc;-webkit-transition:opacity .3s,top .4s,-webkit-transform .4s;transition:opacity .3s,top .4s,-webkit-transform .4s;transition:opacity .3s,transform .4s,top .4s;transition:opacity .3s,transform .4s,top .4s,-webkit-transform .4s;padding:15px 15px 15px 20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-message.is-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-message.is-closable .el-message__content{padding-right:16px}.el-message p{margin:0}.el-message--info .el-message__content{color:#909399}.el-message--success{background-color:#f0f9eb;border-color:#e1f3d8}.el-message--success .el-message__content{color:#67C23A}.el-message--warning{background-color:#fdf6ec;border-color:#faecd8}.el-message--warning .el-message__content{color:#E6A23C}.el-message--error{background-color:#fef0f0;border-color:#fde2e2}.el-message--error .el-message__content{color:#F56C6C}.el-message__icon{margin-right:10px}.el-message__content{padding:0;font-size:14px;line-height:1}.el-message__closeBtn{position:absolute;top:50%;right:15px;-webkit-transform:translateY(-50%);transform:translateY(-50%);cursor:pointer;color:#C0C4CC;font-size:16px}.el-message__closeBtn:hover{color:#909399}.el-message .el-icon-success{color:#67C23A}.el-message .el-icon-error{color:#F56C6C}.el-message .el-icon-info{color:#909399}.el-message .el-icon-warning{color:#E6A23C}.el-message-fade-enter,.el-message-fade-leave-active{opacity:0;-webkit-transform:translate(-50%,-100%);transform:translate(-50%,-100%)}.el-badge{position:relative;vertical-align:middle;display:inline-block}.el-badge__content{background-color:#F56C6C;border-radius:10px;color:#FFF;display:inline-block;font-size:12px;height:18px;line-height:18px;padding:0 6px;text-align:center;white-space:nowrap;border:1px solid #FFF}.el-badge__content.is-fixed{position:absolute;top:0;right:10px;-webkit-transform:translateY(-50%) translateX(100%);transform:translateY(-50%) translateX(100%)}.el-rate__icon,.el-rate__item{position:relative;display:inline-block}.el-badge__content.is-fixed.is-dot{right:5px}.el-badge__content.is-dot{height:8px;width:8px;padding:0;right:0;border-radius:50%}.el-badge__content--primary{background-color:#409EFF}.el-badge__content--success{background-color:#67C23A}.el-badge__content--warning{background-color:#E6A23C}.el-badge__content--info{background-color:#909399}.el-badge__content--danger{background-color:#F56C6C}.el-card{border:1px solid #EBEEF5;background-color:#FFF;color:#303133;-webkit-transition:.3s;transition:.3s}.el-card.is-always-shadow,.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-card__header{padding:18px 20px;border-bottom:1px solid #EBEEF5;-webkit-box-sizing:border-box;box-sizing:border-box}.el-card__body{padding:20px}.el-rate{height:20px;line-height:1}.el-rate__item{font-size:0;vertical-align:middle}.el-rate__icon{font-size:18px;margin-right:6px;color:#C0C4CC;-webkit-transition:.3s;transition:.3s}.el-rate__decimal,.el-rate__icon .path2{position:absolute;top:0;left:0}.el-rate__icon.hover{-webkit-transform:scale(1.15);transform:scale(1.15)}.el-rate__decimal{display:inline-block;overflow:hidden}.el-step.is-vertical,.el-steps{display:-webkit-box;display:-ms-flexbox}.el-rate__text{font-size:14px;vertical-align:middle}.el-steps{display:flex}.el-steps--simple{padding:13px 8%;border-radius:4px;background:#F5F7FA}.el-steps--horizontal{white-space:nowrap}.el-steps--vertical{height:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column;flex-flow:column}.el-step{position:relative;-ms-flex-negative:1;flex-shrink:1}.el-step:last-of-type .el-step__line{display:none}.el-step:last-of-type.is-flex{-ms-flex-preferred-size:auto!important;flex-basis:auto!important;-ms-flex-negative:0;flex-shrink:0;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.el-step:last-of-type .el-step__description,.el-step:last-of-type .el-step__main{padding-right:0}.el-step__head{position:relative;width:100%}.el-step__head.is-process{color:#303133;border-color:#303133}.el-step__head.is-wait{color:#C0C4CC;border-color:#C0C4CC}.el-step__head.is-success{color:#67C23A;border-color:#67C23A}.el-step__head.is-error{color:#F56C6C;border-color:#F56C6C}.el-step__head.is-finish{color:#409EFF;border-color:#409EFF}.el-step__icon{position:relative;z-index:1;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:24px;height:24px;font-size:14px;-webkit-box-sizing:border-box;box-sizing:border-box;background:#FFF;-webkit-transition:.15s ease-out;transition:.15s ease-out}.el-step__icon.is-text{border-radius:50%;border:2px solid;border-color:inherit}.el-step__icon.is-icon{width:40px}.el-step__icon-inner{display:inline-block;user-select:none;text-align:center;font-weight:700;line-height:1;color:inherit}.el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:25px;font-weight:400}.el-step__icon-inner.is-status{-webkit-transform:translateY(1px);transform:translateY(1px)}.el-step__line{position:absolute;border-color:inherit;background-color:#C0C4CC}.el-step__line-inner{display:block;border-width:1px;border-style:solid;border-color:inherit;-webkit-transition:.15s ease-out;transition:.15s ease-out;-webkit-box-sizing:border-box;box-sizing:border-box;width:0;height:0}.el-step__main{white-space:normal;text-align:left}.el-step__title{font-size:16px;line-height:38px}.el-step__title.is-process{font-weight:700;color:#303133}.el-step__title.is-wait{color:#C0C4CC}.el-step__title.is-success{color:#67C23A}.el-step__title.is-error{color:#F56C6C}.el-step__title.is-finish{color:#409EFF}.el-step__description{padding-right:10%;margin-top:-5px;font-size:12px;line-height:20px;font-weight:400}.el-step__description.is-process{color:#303133}.el-step__description.is-wait{color:#C0C4CC}.el-step__description.is-success{color:#67C23A}.el-step__description.is-error{color:#F56C6C}.el-step__description.is-finish{color:#409EFF}.el-step.is-horizontal{display:inline-block}.el-step.is-horizontal .el-step__line{height:2px;top:11px;left:0;right:0}.el-step.is-vertical{display:flex}.el-step.is-vertical .el-step__head{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;width:24px}.el-step.is-vertical .el-step__main{padding-left:10px;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.el-step.is-vertical .el-step__title{line-height:24px;padding-bottom:8px}.el-step.is-vertical .el-step__line{width:2px;top:0;bottom:0;left:11px}.el-step.is-vertical .el-step__icon.is-icon{width:24px}.el-step.is-center .el-step__head,.el-step.is-center .el-step__main{text-align:center}.el-step.is-center .el-step__description{padding-left:20%;padding-right:20%}.el-step.is-center .el-step__line{left:50%;right:-50%}.el-step.is-simple{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-step.is-simple .el-step__head{width:auto;font-size:0;padding-right:10px}.el-step.is-simple .el-step__icon{background:0 0;width:16px;height:16px;font-size:12px}.el-step.is-simple .el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:18px}.el-step.is-simple .el-step__icon-inner.is-status{-webkit-transform:scale(.8) translateY(1px);transform:scale(.8) translateY(1px)}.el-step.is-simple .el-step__main{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.el-step.is-simple .el-step__title{font-size:16px;line-height:20px}.el-step.is-simple:not(:last-of-type) .el-step__title{max-width:50%;word-break:break-all}.el-step.is-simple .el-step__arrow{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-step.is-simple .el-step__arrow::after,.el-step.is-simple .el-step__arrow::before{content:'';display:inline-block;position:absolute;height:15px;width:1px;background:#C0C4CC}.el-step.is-simple .el-step__arrow::before{-webkit-transform:rotate(-45deg) translateY(-4px);transform:rotate(-45deg) translateY(-4px);-webkit-transform-origin:0 0;transform-origin:0 0}.el-step.is-simple .el-step__arrow::after{-webkit-transform:rotate(45deg) translateY(4px);transform:rotate(45deg) translateY(4px);-webkit-transform-origin:100% 100%;transform-origin:100% 100%}.el-step.is-simple:last-of-type .el-step__arrow{display:none}.el-carousel{position:relative}.el-carousel--horizontal{overflow-x:hidden}.el-carousel--vertical{overflow-y:hidden}.el-carousel__container{position:relative;height:300px}.el-carousel__arrow{border:none;outline:0;padding:0;margin:0;height:36px;width:36px;cursor:pointer;-webkit-transition:.3s;transition:.3s;border-radius:50%;background-color:rgba(31,45,61,.11);color:#FFF;position:absolute;top:50%;z-index:10;-webkit-transform:translateY(-50%);transform:translateY(-50%);text-align:center;font-size:12px}.el-carousel__arrow--left{left:16px}.el-carousel__arrow--right{right:16px}.el-carousel__arrow:hover{background-color:rgba(31,45,61,.23)}.el-carousel__arrow i{cursor:pointer}.el-carousel__indicators{position:absolute;list-style:none;margin:0;padding:0;z-index:2}.el-carousel__indicators--horizontal{bottom:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.el-carousel__indicators--vertical{right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-carousel__indicators--outside{bottom:26px;text-align:center;position:static;-webkit-transform:none;transform:none}.el-carousel__indicators--outside .el-carousel__indicator:hover button{opacity:.64}.el-carousel__indicators--outside button{background-color:#C0C4CC;opacity:.24}.el-carousel__indicators--labels{left:0;right:0;-webkit-transform:none;transform:none;text-align:center}.el-carousel__indicators--labels .el-carousel__button{height:auto;width:auto;padding:2px 18px;font-size:12px}.el-carousel__indicators--labels .el-carousel__indicator{padding:6px 4px}.el-carousel__indicator{background-color:transparent;cursor:pointer}.el-carousel__indicator:hover button{opacity:.72}.el-carousel__indicator--horizontal{display:inline-block;padding:12px 4px}.el-carousel__indicator--vertical{padding:4px 12px}.el-carousel__indicator--vertical .el-carousel__button{width:2px;height:15px}.el-carousel__indicator.is-active button{opacity:1}.el-carousel__button{display:block;opacity:.48;width:30px;height:2px;background-color:#FFF;border:none;outline:0;padding:0;margin:0;cursor:pointer;-webkit-transition:.3s;transition:.3s}.el-carousel__item,.el-carousel__mask{height:100%;top:0;left:0;position:absolute}.carousel-arrow-left-enter,.carousel-arrow-left-leave-active{-webkit-transform:translateY(-50%) translateX(-10px);transform:translateY(-50%) translateX(-10px);opacity:0}.carousel-arrow-right-enter,.carousel-arrow-right-leave-active{-webkit-transform:translateY(-50%) translateX(10px);transform:translateY(-50%) translateX(10px);opacity:0}.el-carousel__item{width:100%;display:inline-block;overflow:hidden;z-index:0}.el-carousel__item.is-active{z-index:2}.el-carousel__item.is-animating{-webkit-transition:-webkit-transform .4s ease-in-out;transition:-webkit-transform .4s ease-in-out;transition:transform .4s ease-in-out;transition:transform .4s ease-in-out,-webkit-transform .4s ease-in-out}.el-carousel__item--card{width:50%;-webkit-transition:-webkit-transform .4s ease-in-out;transition:-webkit-transform .4s ease-in-out;transition:transform .4s ease-in-out;transition:transform .4s ease-in-out,-webkit-transform .4s ease-in-out}.el-carousel__item--card.is-in-stage{cursor:pointer;z-index:1}.el-carousel__item--card.is-in-stage.is-hover .el-carousel__mask,.el-carousel__item--card.is-in-stage:hover .el-carousel__mask{opacity:.12}.el-carousel__item--card.is-active{z-index:2}.el-carousel__mask{width:100%;background-color:#FFF;opacity:.24;-webkit-transition:.2s;transition:.2s}.el-fade-in-enter,.el-fade-in-leave-active,.el-fade-in-linear-enter,.el-fade-in-linear-leave,.el-fade-in-linear-leave-active,.fade-in-linear-enter,.fade-in-linear-leave,.fade-in-linear-leave-active{opacity:0}.fade-in-linear-enter-active,.fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.el-fade-in-enter-active,.el-fade-in-leave-active{-webkit-transition:all .3s cubic-bezier(.55,0,.1,1);transition:all .3s cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{-webkit-transition:all .3s cubic-bezier(.55,0,.1,1);transition:all .3s cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter,.el-zoom-in-center-leave-active{opacity:0;-webkit-transform:scaleX(0);transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-webkit-transform-origin:center top;transform-origin:center top}.el-zoom-in-top-enter,.el-zoom-in-top-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-webkit-transform-origin:center bottom;transform-origin:center bottom}.el-zoom-in-bottom-enter,.el-zoom-in-bottom-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;-webkit-transform:scale(1,1);transform:scale(1,1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-webkit-transform-origin:top left;transform-origin:top left}.el-zoom-in-left-enter,.el-zoom-in-left-leave-active{opacity:0;-webkit-transform:scale(.45,.45);transform:scale(.45,.45)}.collapse-transition{-webkit-transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out;transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out}.horizontal-collapse-transition{-webkit-transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out;transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{-webkit-transition:all 1s;transition:all 1s}.el-list-enter,.el-list-leave-active{opacity:0;-webkit-transform:translateY(-30px);transform:translateY(-30px)}.el-opacity-transition{-webkit-transition:opacity .3s cubic-bezier(.55,0,.1,1);transition:opacity .3s cubic-bezier(.55,0,.1,1)}.el-collapse{border-top:1px solid #EBEEF5;border-bottom:1px solid #EBEEF5}.el-collapse-item.is-disabled .el-collapse-item__header{color:#bbb;cursor:not-allowed}.el-collapse-item__header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:48px;line-height:48px;background-color:#FFF;color:#303133;cursor:pointer;border-bottom:1px solid #EBEEF5;font-size:13px;font-weight:500;-webkit-transition:border-bottom-color .3s;transition:border-bottom-color .3s;outline:0}.el-collapse-item__arrow{margin:0 8px 0 auto;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;font-weight:300}.el-collapse-item__arrow.is-active{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-collapse-item__header.focusing:focus:not(:hover){color:#409EFF}.el-collapse-item__header.is-active{border-bottom-color:transparent}.el-collapse-item__wrap{will-change:height;background-color:#FFF;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;border-bottom:1px solid #EBEEF5}.el-cascader__tags,.el-tag{-webkit-box-sizing:border-box}.el-collapse-item__content{padding-bottom:25px;font-size:13px;color:#303133;line-height:1.769230769230769}.el-collapse-item:last-child{margin-bottom:-1px}.el-popper .popper__arrow,.el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03));filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.el-popper .popper__arrow::after{content:" ";border-width:6px}.el-popper[x-placement^=top]{margin-bottom:12px}.el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#EBEEF5;border-bottom-width:0}.el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#FFF;border-bottom-width:0}.el-popper[x-placement^=bottom]{margin-top:12px}.el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#EBEEF5}.el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#FFF}.el-popper[x-placement^=right]{margin-left:12px}.el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#EBEEF5;border-left-width:0}.el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#FFF;border-left-width:0}.el-popper[x-placement^=left]{margin-right:12px}.el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#EBEEF5}.el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#FFF}.el-tag{background-color:#ecf5ff;border-color:#d9ecff;display:inline-block;height:32px;padding:0 10px;line-height:30px;font-size:12px;color:#409EFF;border-width:1px;border-style:solid;border-radius:4px;box-sizing:border-box;white-space:nowrap}.el-tag.is-hit{border-color:#409EFF}.el-tag .el-tag__close{color:#409eff}.el-tag .el-tag__close:hover{color:#FFF;background-color:#409eff}.el-tag.el-tag--info{background-color:#f4f4f5;border-color:#e9e9eb;color:#909399}.el-tag.el-tag--info.is-hit{border-color:#909399}.el-tag.el-tag--info .el-tag__close{color:#909399}.el-tag.el-tag--info .el-tag__close:hover{color:#FFF;background-color:#909399}.el-tag.el-tag--success{background-color:#f0f9eb;border-color:#e1f3d8;color:#67c23a}.el-tag.el-tag--success.is-hit{border-color:#67C23A}.el-tag.el-tag--success .el-tag__close{color:#67c23a}.el-tag.el-tag--success .el-tag__close:hover{color:#FFF;background-color:#67c23a}.el-tag.el-tag--warning{background-color:#fdf6ec;border-color:#faecd8;color:#e6a23c}.el-tag.el-tag--warning.is-hit{border-color:#E6A23C}.el-tag.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag.el-tag--warning .el-tag__close:hover{color:#FFF;background-color:#e6a23c}.el-tag.el-tag--danger{background-color:#fef0f0;border-color:#fde2e2;color:#f56c6c}.el-tag.el-tag--danger.is-hit{border-color:#F56C6C}.el-tag.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag.el-tag--danger .el-tag__close:hover{color:#FFF;background-color:#f56c6c}.el-tag .el-icon-close{border-radius:50%;text-align:center;position:relative;cursor:pointer;font-size:12px;height:16px;width:16px;line-height:16px;vertical-align:middle;top:-1px;right:-5px}.el-tag .el-icon-close::before{display:block}.el-tag--dark{background-color:#409eff;border-color:#409eff;color:#fff}.el-tag--dark.is-hit{border-color:#409EFF}.el-tag--dark .el-tag__close{color:#fff}.el-tag--dark .el-tag__close:hover{color:#FFF;background-color:#66b1ff}.el-tag--dark.el-tag--info{background-color:#909399;border-color:#909399;color:#fff}.el-tag--dark.el-tag--info.is-hit{border-color:#909399}.el-tag--dark.el-tag--info .el-tag__close{color:#fff}.el-tag--dark.el-tag--info .el-tag__close:hover{color:#FFF;background-color:#a6a9ad}.el-tag--dark.el-tag--success{background-color:#67c23a;border-color:#67c23a;color:#fff}.el-tag--dark.el-tag--success.is-hit{border-color:#67C23A}.el-tag--dark.el-tag--success .el-tag__close{color:#fff}.el-tag--dark.el-tag--success .el-tag__close:hover{color:#FFF;background-color:#85ce61}.el-tag--dark.el-tag--warning{background-color:#e6a23c;border-color:#e6a23c;color:#fff}.el-tag--dark.el-tag--warning.is-hit{border-color:#E6A23C}.el-tag--dark.el-tag--warning .el-tag__close{color:#fff}.el-tag--dark.el-tag--warning .el-tag__close:hover{color:#FFF;background-color:#ebb563}.el-tag--dark.el-tag--danger{background-color:#f56c6c;border-color:#f56c6c;color:#fff}.el-tag--dark.el-tag--danger.is-hit{border-color:#F56C6C}.el-tag--dark.el-tag--danger .el-tag__close{color:#fff}.el-tag--dark.el-tag--danger .el-tag__close:hover{color:#FFF;background-color:#f78989}.el-tag--plain{background-color:#fff;border-color:#b3d8ff;color:#409eff}.el-tag--plain.is-hit{border-color:#409EFF}.el-tag--plain .el-tag__close{color:#409eff}.el-tag--plain .el-tag__close:hover{color:#FFF;background-color:#409eff}.el-tag--plain.el-tag--info{background-color:#fff;border-color:#d3d4d6;color:#909399}.el-tag--plain.el-tag--info.is-hit{border-color:#909399}.el-tag--plain.el-tag--info .el-tag__close{color:#909399}.el-tag--plain.el-tag--info .el-tag__close:hover{color:#FFF;background-color:#909399}.el-tag--plain.el-tag--success{background-color:#fff;border-color:#c2e7b0;color:#67c23a}.el-tag--plain.el-tag--success.is-hit{border-color:#67C23A}.el-tag--plain.el-tag--success .el-tag__close{color:#67c23a}.el-tag--plain.el-tag--success .el-tag__close:hover{color:#FFF;background-color:#67c23a}.el-tag--plain.el-tag--warning{background-color:#fff;border-color:#f5dab1;color:#e6a23c}.el-tag--plain.el-tag--warning.is-hit{border-color:#E6A23C}.el-tag--plain.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag--plain.el-tag--warning .el-tag__close:hover{color:#FFF;background-color:#e6a23c}.el-tag--plain.el-tag--danger{background-color:#fff;border-color:#fbc4c4;color:#f56c6c}.el-tag--plain.el-tag--danger.is-hit{border-color:#F56C6C}.el-tag--plain.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag--plain.el-tag--danger .el-tag__close:hover{color:#FFF;background-color:#f56c6c}.el-tag--medium{height:28px;line-height:26px}.el-tag--medium .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--small{height:24px;padding:0 8px;line-height:22px}.el-tag--small .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--mini{height:20px;padding:0 5px;line-height:19px}.el-tag--mini .el-icon-close{margin-left:-3px;-webkit-transform:scale(.7);transform:scale(.7)}.el-cascader{display:inline-block;position:relative;font-size:14px;line-height:40px}.el-cascader:not(.is-disabled):hover .el-input__inner{cursor:pointer;border-color:#C0C4CC}.el-cascader .el-input .el-input__inner:focus,.el-cascader .el-input.is-focus .el-input__inner{border-color:#409EFF}.el-cascader .el-input{cursor:pointer}.el-cascader .el-input .el-input__inner{text-overflow:ellipsis}.el-cascader .el-input .el-icon-arrow-down{-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;font-size:14px}.el-cascader .el-input .el-icon-arrow-down.is-reverse{-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg)}.el-cascader .el-input .el-icon-circle-close:hover{color:#909399}.el-cascader--medium{font-size:14px;line-height:36px}.el-cascader--small{font-size:13px;line-height:32px}.el-cascader--mini{font-size:12px;line-height:28px}.el-cascader.is-disabled .el-cascader__label{z-index:2;color:#C0C4CC}.el-cascader__dropdown{margin:5px 0;font-size:14px;background:#FFF;border:1px solid #E4E7ED;border-radius:4px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-cascader__tags{position:absolute;left:0;right:30px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;line-height:normal;text-align:left;box-sizing:border-box}.el-cascader__tags .el-tag{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:100%;margin:2px 0 2px 6px;text-overflow:ellipsis;background:#f0f2f5}.el-cascader__tags .el-tag:not(.is-hit){border-color:transparent}.el-cascader__tags .el-tag>span{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;text-overflow:ellipsis}.el-cascader__tags .el-tag .el-icon-close{-webkit-box-flex:0;-ms-flex:none;flex:none;background-color:#C0C4CC;color:#FFF}.el-cascader__tags .el-tag .el-icon-close:hover{background-color:#909399}.el-cascader__suggestion-panel{border-radius:4px}.el-cascader__suggestion-list{max-height:204px;margin:0;padding:6px 0;font-size:14px;color:#606266;text-align:center}.el-cascader__suggestion-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:34px;padding:0 15px;text-align:left;outline:0;cursor:pointer}.el-cascader__suggestion-item:focus,.el-cascader__suggestion-item:hover{background:#F5F7FA}.el-cascader__suggestion-item.is-checked{color:#409EFF;font-weight:700}.el-cascader__suggestion-item>span{margin-right:10px}.el-cascader__empty-text{margin:10px 0;color:#C0C4CC}.el-cascader__search-input{-webkit-box-flex:1;-ms-flex:1;flex:1;height:24px;min-width:60px;margin:2px 0 2px 15px;padding:0;color:#606266;border:none;outline:0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-cascader__search-input::-webkit-input-placeholder{color:#C0C4CC}.el-cascader__search-input:-ms-input-placeholder{color:#C0C4CC}.el-cascader__search-input::-ms-input-placeholder{color:#C0C4CC}.el-cascader__search-input::placeholder{color:#C0C4CC}.el-color-predefine{display:-webkit-box;display:-ms-flexbox;display:flex;font-size:12px;margin-top:8px;width:280px}.el-color-predefine__colors{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-wrap:wrap;flex-wrap:wrap}.el-color-predefine__color-selector{margin:0 0 8px 8px;width:20px;height:20px;border-radius:4px;cursor:pointer}.el-color-predefine__color-selector:nth-child(10n+1){margin-left:0}.el-color-predefine__color-selector.selected{-webkit-box-shadow:0 0 3px 2px #409EFF;box-shadow:0 0 3px 2px #409EFF}.el-color-predefine__color-selector>div{display:-webkit-box;display:-ms-flexbox;display:flex;height:100%;border-radius:3px}.el-color-predefine__color-selector.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-hue-slider{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;width:280px;height:12px;background-color:red;padding:0 2px}.el-color-hue-slider__bar{position:relative;background:-webkit-gradient(linear,left top,right top,from(red),color-stop(17%,#ff0),color-stop(33%,#0f0),color-stop(50%,#0ff),color-stop(67%,#00f),color-stop(83%,#f0f),to(red));background:linear-gradient(to right,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%);height:100%}.el-color-hue-slider__thumb{position:absolute;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;-webkit-box-shadow:0 0 2px rgba(0,0,0,.6);box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-hue-slider.is-vertical{width:12px;height:180px;padding:2px 0}.el-color-hue-slider.is-vertical .el-color-hue-slider__bar{background:-webkit-gradient(linear,left top,left bottom,from(red),color-stop(17%,#ff0),color-stop(33%,#0f0),color-stop(50%,#0ff),color-stop(67%,#00f),color-stop(83%,#f0f),to(red));background:linear-gradient(to bottom,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%)}.el-color-hue-slider.is-vertical .el-color-hue-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-svpanel{position:relative;width:280px;height:180px}.el-color-svpanel__black,.el-color-svpanel__white{position:absolute;top:0;left:0;right:0;bottom:0}.el-color-svpanel__white{background:-webkit-gradient(linear,left top,right top,from(#fff),to(rgba(255,255,255,0)));background:linear-gradient(to right,#fff,rgba(255,255,255,0))}.el-color-svpanel__black{background:-webkit-gradient(linear,left bottom,left top,from(#000),to(rgba(0,0,0,0)));background:linear-gradient(to top,#000,rgba(0,0,0,0))}.el-color-svpanel__cursor{position:absolute}.el-color-svpanel__cursor>div{cursor:head;width:4px;height:4px;-webkit-box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);border-radius:50%;-webkit-transform:translate(-2px,-2px);transform:translate(-2px,-2px)}.el-color-alpha-slider{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;width:280px;height:12px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-alpha-slider__bar{position:relative;background:-webkit-gradient(linear,left top,right top,from(rgba(255,255,255,0)),to(white));background:linear-gradient(to right,rgba(255,255,255,0) 0,#fff 100%);height:100%}.el-color-alpha-slider__thumb{position:absolute;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;-webkit-box-shadow:0 0 2px rgba(0,0,0,.6);box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-alpha-slider.is-vertical{width:20px;height:180px}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__bar{background:-webkit-gradient(linear,left top,left bottom,from(rgba(255,255,255,0)),to(white));background:linear-gradient(to bottom,rgba(255,255,255,0) 0,#fff 100%)}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-dropdown{width:300px}.el-color-dropdown__main-wrapper{margin-bottom:6px}.el-color-dropdown__main-wrapper::after{content:"";display:table;clear:both}.el-color-dropdown__btns{margin-top:6px;text-align:right}.el-color-dropdown__value{float:left;line-height:26px;font-size:12px;color:#000;width:160px}.el-color-dropdown__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-color-dropdown__btn[disabled]{color:#ccc;cursor:not-allowed}.el-color-dropdown__btn:hover{color:#409EFF;border-color:#409EFF}.el-color-dropdown__link-btn{cursor:pointer;color:#409EFF;text-decoration:none;padding:15px;font-size:12px}.el-color-dropdown__link-btn:hover{color:tint(#409EFF,20%)}.el-color-picker{display:inline-block;position:relative;line-height:normal;height:40px}.el-color-picker.is-disabled .el-color-picker__trigger{cursor:not-allowed}.el-color-picker--medium{height:36px}.el-color-picker--medium .el-color-picker__trigger{height:36px;width:36px}.el-color-picker--medium .el-color-picker__mask{height:34px;width:34px}.el-color-picker--small{height:32px}.el-color-picker--small .el-color-picker__trigger{height:32px;width:32px}.el-color-picker--small .el-color-picker__mask{height:30px;width:30px}.el-color-picker--small .el-color-picker__empty,.el-color-picker--small .el-color-picker__icon{-webkit-transform:translate3d(-50%,-50%,0) scale(.8);transform:translate3d(-50%,-50%,0) scale(.8)}.el-color-picker--mini{height:28px}.el-color-picker--mini .el-color-picker__trigger{height:28px;width:28px}.el-color-picker--mini .el-color-picker__mask{height:26px;width:26px}.el-color-picker--mini .el-color-picker__empty,.el-color-picker--mini .el-color-picker__icon{-webkit-transform:translate3d(-50%,-50%,0) scale(.8);transform:translate3d(-50%,-50%,0) scale(.8)}.el-color-picker__mask{height:38px;width:38px;border-radius:4px;position:absolute;top:1px;left:1px;z-index:1;cursor:not-allowed;background-color:rgba(255,255,255,.7)}.el-color-picker__trigger{display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;height:40px;width:40px;padding:4px;border:1px solid #e6e6e6;border-radius:4px;font-size:0;position:relative;cursor:pointer}.el-color-picker__color{position:relative;display:block;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid #999;border-radius:2px;width:100%;height:100%;text-align:center}.el-color-picker__color.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-picker__color-inner{position:absolute;left:0;top:0;right:0;bottom:0}.el-color-picker__empty,.el-color-picker__icon{top:50%;left:50%;font-size:12px;position:absolute}.el-color-picker__empty{color:#999;-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0)}.el-color-picker__icon{display:inline-block;width:100%;-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0);color:#FFF;text-align:center}.el-color-picker__panel{position:absolute;z-index:10;padding:6px;-webkit-box-sizing:content-box;box-sizing:content-box;background-color:#FFF;border:1px solid #EBEEF5;border-radius:4px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-textarea{position:relative;display:inline-block;width:100%;vertical-align:bottom;font-size:14px}.el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:inherit;color:#606266;background-color:#FFF;background-image:none;border:1px solid #DCDFE6;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.el-textarea__inner::-webkit-input-placeholder{color:#C0C4CC}.el-textarea__inner:-ms-input-placeholder{color:#C0C4CC}.el-textarea__inner::-ms-input-placeholder{color:#C0C4CC}.el-textarea__inner::placeholder{color:#C0C4CC}.el-textarea__inner:hover{border-color:#C0C4CC}.el-textarea__inner:focus{outline:0;border-color:#409EFF}.el-textarea .el-input__count{color:#909399;background:#FFF;position:absolute;font-size:12px;bottom:5px;right:10px}.el-textarea.is-disabled .el-textarea__inner{background-color:#F5F7FA;border-color:#E4E7ED;color:#C0C4CC;cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#C0C4CC}.el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder{color:#C0C4CC}.el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#C0C4CC}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:#C0C4CC}.el-textarea.is-exceed .el-textarea__inner{border-color:#F56C6C}.el-textarea.is-exceed .el-input__count{color:#F56C6C}.el-input{position:relative;font-size:14px;display:inline-block;width:100%}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.el-input::-webkit-scrollbar-corner{background:#fff}.el-input::-webkit-scrollbar-track{background:#fff}.el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.el-input .el-input__clear{color:#C0C4CC;font-size:14px;cursor:pointer;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1)}.el-input .el-input__clear:hover{color:#909399}.el-input .el-input__count{height:100%;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#909399;font-size:12px}.el-input .el-input__count .el-input__count-inner{background:#FFF;line-height:initial;display:inline-block;padding:0 5px}.el-input__inner{-webkit-appearance:none;background-color:#FFF;background-image:none;border-radius:4px;border:1px solid #DCDFE6;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;display:inline-block;font-size:inherit;height:40px;line-height:40px;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%}.el-input__prefix,.el-input__suffix{position:absolute;top:0;-webkit-transition:all .3s;height:100%;color:#C0C4CC;text-align:center}.el-input__inner::-webkit-input-placeholder{color:#C0C4CC}.el-input__inner:-ms-input-placeholder{color:#C0C4CC}.el-input__inner::-ms-input-placeholder{color:#C0C4CC}.el-input__inner::placeholder{color:#C0C4CC}.el-input__inner:hover{border-color:#C0C4CC}.el-input.is-active .el-input__inner,.el-input__inner:focus{border-color:#409EFF;outline:0}.el-input__suffix{right:5px;transition:all .3s}.el-input__suffix-inner{pointer-events:all}.el-input__prefix{left:5px;transition:all .3s}.el-input__icon{height:100%;width:25px;text-align:center;-webkit-transition:all .3s;transition:all .3s;line-height:40px}.el-input__icon:after{content:'';height:100%;width:0;display:inline-block;vertical-align:middle}.el-input__validateIcon{pointer-events:none}.el-input.is-disabled .el-input__inner{background-color:#F5F7FA;border-color:#E4E7ED;color:#C0C4CC;cursor:not-allowed}.el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#C0C4CC}.el-input.is-disabled .el-input__inner:-ms-input-placeholder{color:#C0C4CC}.el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#C0C4CC}.el-input.is-disabled .el-input__inner::placeholder{color:#C0C4CC}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-link,.el-transfer-panel__filter .el-icon-circle-close{cursor:pointer}.el-input.is-exceed .el-input__inner{border-color:#F56C6C}.el-input.is-exceed .el-input__suffix .el-input__count{color:#F56C6C}.el-input--suffix .el-input__inner{padding-right:30px}.el-input--prefix .el-input__inner{padding-left:30px}.el-input--medium{font-size:14px}.el-input--medium .el-input__inner{height:36px;line-height:36px}.el-input--medium .el-input__icon{line-height:36px}.el-input--small{font-size:13px}.el-input--small .el-input__inner{height:32px;line-height:32px}.el-input--small .el-input__icon{line-height:32px}.el-input--mini{font-size:12px}.el-input--mini .el-input__inner{height:28px;line-height:28px}.el-input--mini .el-input__icon{line-height:28px}.el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate;border-spacing:0}.el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.el-input-group__append,.el-input-group__prepend{background-color:#F5F7FA;color:#909399;vertical-align:middle;display:table-cell;position:relative;border:1px solid #DCDFE6;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.el-input-group--prepend .el-input__inner,.el-input-group__append{border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--append .el-input__inner,.el-input-group__prepend{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:0}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:-10px -20px}.el-input-group__append button.el-button,.el-input-group__append div.el-select .el-input__inner,.el-input-group__append div.el-select:hover .el-input__inner,.el-input-group__prepend button.el-button,.el-input-group__prepend div.el-select .el-input__inner,.el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{border-right:0}.el-input-group__append{border-left:0}.el-input-group--append .el-select .el-input.is-focus .el-input__inner,.el-input-group--prepend .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input__inner::-ms-clear{display:none;width:0;height:0}.el-transfer{font-size:14px}.el-transfer__buttons{display:inline-block;vertical-align:middle;padding:0 30px}.el-transfer__button{display:block;margin:0 auto;padding:10px;border-radius:50%;color:#FFF;background-color:#409EFF;font-size:0}.el-transfer-panel__item+.el-transfer-panel__item,.el-transfer__button [class*=el-icon-]+span{margin-left:0}.el-transfer__button.is-with-texts{border-radius:4px}.el-transfer__button.is-disabled,.el-transfer__button.is-disabled:hover{border:1px solid #DCDFE6;background-color:#F5F7FA;color:#C0C4CC}.el-transfer__button:first-child{margin-bottom:10px}.el-transfer__button:nth-child(2){margin:0}.el-transfer__button i,.el-transfer__button span{font-size:14px}.el-transfer-panel{border:1px solid #EBEEF5;border-radius:4px;overflow:hidden;background:#FFF;display:inline-block;vertical-align:middle;width:200px;max-height:100%;-webkit-box-sizing:border-box;box-sizing:border-box;position:relative}.el-transfer-panel__body{height:246px}.el-transfer-panel__body.is-with-footer{padding-bottom:40px}.el-transfer-panel__list{margin:0;padding:6px 0;list-style:none;height:246px;overflow:auto;-webkit-box-sizing:border-box;box-sizing:border-box}.el-transfer-panel__list.is-filterable{height:194px;padding-top:0}.el-transfer-panel__item{height:30px;line-height:30px;padding-left:15px;display:block!important}.el-transfer-panel__item.el-checkbox{color:#606266}.el-transfer-panel__item:hover{color:#409EFF}.el-transfer-panel__item.el-checkbox .el-checkbox__label{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;-webkit-box-sizing:border-box;box-sizing:border-box;padding-left:24px;line-height:30px}.el-transfer-panel__item .el-checkbox__input{position:absolute;top:8px}.el-transfer-panel__filter{text-align:center;margin:15px;-webkit-box-sizing:border-box;box-sizing:border-box;display:block;width:auto}.el-transfer-panel__filter .el-input__inner{height:32px;width:100%;font-size:12px;display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:16px;padding-right:10px;padding-left:30px}.el-transfer-panel__filter .el-input__icon{margin-left:5px}.el-transfer-panel .el-transfer-panel__header{height:40px;line-height:40px;background:#F5F7FA;margin:0;padding-left:15px;border-bottom:1px solid #EBEEF5;-webkit-box-sizing:border-box;box-sizing:border-box;color:#000}.el-transfer-panel .el-transfer-panel__header .el-checkbox{display:block;line-height:40px}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label{font-size:16px;color:#303133;font-weight:400}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label span{position:absolute;right:15px;color:#909399;font-size:12px;font-weight:400}.el-divider__text,.el-link{font-weight:500;font-size:14px}.el-transfer-panel .el-transfer-panel__footer{height:40px;background:#FFF;margin:0;padding:0;border-top:1px solid #EBEEF5;position:absolute;bottom:0;left:0;width:100%;z-index:1}.el-transfer-panel .el-transfer-panel__footer::after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-container,.el-timeline-item__node{display:-webkit-box;display:-ms-flexbox}.el-transfer-panel .el-transfer-panel__footer .el-checkbox{padding-left:20px;color:#606266}.el-transfer-panel .el-transfer-panel__empty{margin:0;height:30px;line-height:30px;padding:6px 15px 0;color:#909399;text-align:center}.el-transfer-panel .el-checkbox__label{padding-left:8px}.el-transfer-panel .el-checkbox__inner{height:14px;width:14px;border-radius:3px}.el-transfer-panel .el-checkbox__inner::after{height:6px;width:3px;left:4px}.el-container{display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-preferred-size:auto;flex-basis:auto;-webkit-box-sizing:border-box;box-sizing:border-box;min-width:0}.el-container.is-vertical,.el-drawer{-webkit-box-orient:vertical;-webkit-box-direction:normal}.el-aside,.el-header{-webkit-box-sizing:border-box}.el-container.is-vertical{-ms-flex-direction:column;flex-direction:column}.el-header{padding:0 20px;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}.el-aside{overflow:auto;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}.el-footer,.el-main{-webkit-box-sizing:border-box}.el-main{display:block;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-preferred-size:auto;flex-basis:auto;overflow:auto;box-sizing:border-box;padding:20px}.el-footer{padding:0 20px;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}.el-timeline{margin:0;font-size:14px;list-style:none}.el-timeline .el-timeline-item:last-child .el-timeline-item__tail{display:none}.el-timeline-item{position:relative;padding-bottom:20px}.el-timeline-item__wrapper{position:relative;padding-left:28px;top:-3px}.el-timeline-item__tail{position:absolute;left:4px;height:100%;border-left:2px solid #E4E7ED}.el-timeline-item__icon{color:#FFF;font-size:13px}.el-timeline-item__node{position:absolute;background-color:#E4E7ED;border-radius:50%;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-image__error,.el-timeline-item__dot{display:-webkit-box;display:-ms-flexbox}.el-timeline-item__node--normal{left:-1px;width:12px;height:12px}.el-timeline-item__node--large{left:-2px;width:14px;height:14px}.el-timeline-item__node--primary{background-color:#409EFF}.el-timeline-item__node--success{background-color:#67C23A}.el-timeline-item__node--warning{background-color:#E6A23C}.el-timeline-item__node--danger{background-color:#F56C6C}.el-timeline-item__node--info{background-color:#909399}.el-timeline-item__dot{position:absolute;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-timeline-item__content{color:#303133}.el-timeline-item__timestamp{color:#909399;line-height:1;font-size:13px}.el-timeline-item__timestamp.is-top{margin-bottom:8px;padding-top:4px}.el-timeline-item__timestamp.is-bottom{margin-top:8px}.el-link{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;vertical-align:middle;position:relative;text-decoration:none;outline:0;padding:0}.el-link.is-underline:hover:after{content:"";position:absolute;left:0;right:0;height:0;bottom:0;border-bottom:1px solid #409EFF}.el-link.el-link--default:after,.el-link.el-link--primary.is-underline:hover:after,.el-link.el-link--primary:after{border-color:#409EFF}.el-link.is-disabled{cursor:not-allowed}.el-link [class*=el-icon-]+span{margin-left:5px}.el-link.el-link--default{color:#606266}.el-link.el-link--default:hover{color:#409EFF}.el-link.el-link--default.is-disabled{color:#C0C4CC}.el-link.el-link--primary{color:#409EFF}.el-link.el-link--primary:hover{color:#66b1ff}.el-link.el-link--primary.is-disabled{color:#a0cfff}.el-link.el-link--danger.is-underline:hover:after,.el-link.el-link--danger:after{border-color:#F56C6C}.el-link.el-link--danger{color:#F56C6C}.el-link.el-link--danger:hover{color:#f78989}.el-link.el-link--danger.is-disabled{color:#fab6b6}.el-link.el-link--success.is-underline:hover:after,.el-link.el-link--success:after{border-color:#67C23A}.el-link.el-link--success{color:#67C23A}.el-link.el-link--success:hover{color:#85ce61}.el-link.el-link--success.is-disabled{color:#b3e19d}.el-link.el-link--warning.is-underline:hover:after,.el-link.el-link--warning:after{border-color:#E6A23C}.el-link.el-link--warning{color:#E6A23C}.el-link.el-link--warning:hover{color:#ebb563}.el-link.el-link--warning.is-disabled{color:#f3d19e}.el-link.el-link--info.is-underline:hover:after,.el-link.el-link--info:after{border-color:#909399}.el-link.el-link--info{color:#909399}.el-link.el-link--info:hover{color:#a6a9ad}.el-link.el-link--info.is-disabled{color:#c8c9cc}.el-divider{background-color:#DCDFE6;position:relative}.el-divider--horizontal{display:block;height:1px;width:100%;margin:24px 0}.el-divider--vertical{display:inline-block;width:1px;height:1em;margin:0 8px;vertical-align:middle;position:relative}.el-divider__text{position:absolute;background-color:#FFF;padding:0 20px;color:#303133}.el-image__error,.el-image__placeholder{background:#F5F7FA}.el-divider__text.is-left{left:20px;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-divider__text.is-center{left:50%;-webkit-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.el-divider__text.is-right{right:20px;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-image__error,.el-image__inner,.el-image__placeholder{width:100%;height:100%}.el-image{position:relative;display:inline-block;overflow:hidden}.el-image__inner{vertical-align:top}.el-image__inner--center{position:relative;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);display:block}.el-image__error{display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:14px;color:#C0C4CC;vertical-align:middle}.el-image__preview{cursor:pointer}.el-image-viewer__wrapper{position:fixed;top:0;right:0;bottom:0;left:0}.el-image-viewer__btn{position:absolute;z-index:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:50%;opacity:.8;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;user-select:none}.el-button,.el-checkbox{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.el-image-viewer__close{top:40px;right:40px;width:40px;height:40px;font-size:24px;color:#fff;background-color:#606266}.el-image-viewer__canvas{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-image-viewer__actions{left:50%;bottom:30px;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:282px;height:44px;padding:0 23px;background-color:#606266;border-color:#fff;border-radius:22px}.el-image-viewer__actions__inner{width:100%;height:100%;text-align:justify;cursor:default;font-size:23px;color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-pack:distribute;justify-content:space-around}.el-image-viewer__next,.el-image-viewer__prev{top:50%;width:44px;height:44px;font-size:24px;color:#fff;background-color:#606266;border-color:#fff}.el-image-viewer__prev{-webkit-transform:translateY(-50%);transform:translateY(-50%);left:40px}.el-image-viewer__next{-webkit-transform:translateY(-50%);transform:translateY(-50%);right:40px;text-indent:2px}.el-image-viewer__mask{position:absolute;width:100%;height:100%;top:0;left:0;opacity:.5;background:#000}.viewer-fade-enter-active{-webkit-animation:viewer-fade-in .3s;animation:viewer-fade-in .3s}.viewer-fade-leave-active{-webkit-animation:viewer-fade-out .3s;animation:viewer-fade-out .3s}@-webkit-keyframes viewer-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes viewer-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes viewer-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes viewer-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}.el-button{display:inline-block;line-height:1;white-space:nowrap;cursor:pointer;background:#FFF;border:1px solid #DCDFE6;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;-webkit-transition:.1s;transition:.1s;font-weight:500;padding:12px 20px;font-size:14px;border-radius:4px}.el-button+.el-button{margin-left:10px}.el-button:focus,.el-button:hover{color:#409EFF;border-color:#c6e2ff;background-color:#ecf5ff}.el-button:active{color:#3a8ee6;border-color:#3a8ee6;outline:0}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon-]+span{margin-left:5px}.el-button.is-plain:focus,.el-button.is-plain:hover{background:#FFF;border-color:#409EFF;color:#409EFF}.el-button.is-active,.el-button.is-plain:active{color:#3a8ee6;border-color:#3a8ee6}.el-button.is-plain:active{background:#FFF;outline:0}.el-button.is-disabled,.el-button.is-disabled:focus,.el-button.is-disabled:hover{color:#C0C4CC;cursor:not-allowed;background-image:none;background-color:#FFF;border-color:#EBEEF5}.el-button.is-disabled.el-button--text{background-color:transparent}.el-button.is-disabled.is-plain,.el-button.is-disabled.is-plain:focus,.el-button.is-disabled.is-plain:hover{background-color:#FFF;border-color:#EBEEF5;color:#C0C4CC}.el-button.is-loading{position:relative;pointer-events:none}.el-button.is-loading:before{pointer-events:none;content:'';position:absolute;left:-1px;top:-1px;right:-1px;bottom:-1px;border-radius:inherit;background-color:rgba(255,255,255,.35)}.el-button.is-round{border-radius:20px;padding:12px 23px}.el-button.is-circle{border-radius:50%;padding:12px}.el-button--primary{color:#FFF;background-color:#409EFF;border-color:#409EFF}.el-button--primary:focus,.el-button--primary:hover{background:#66b1ff;border-color:#66b1ff;color:#FFF}.el-button--primary.is-active,.el-button--primary:active{background:#3a8ee6;border-color:#3a8ee6;color:#FFF}.el-button--primary:active{outline:0}.el-button--primary.is-disabled,.el-button--primary.is-disabled:active,.el-button--primary.is-disabled:focus,.el-button--primary.is-disabled:hover{color:#FFF;background-color:#a0cfff;border-color:#a0cfff}.el-button--primary.is-plain{color:#409EFF;background:#ecf5ff;border-color:#b3d8ff}.el-button--primary.is-plain:focus,.el-button--primary.is-plain:hover{background:#409EFF;border-color:#409EFF;color:#FFF}.el-button--primary.is-plain:active{background:#3a8ee6;border-color:#3a8ee6;color:#FFF;outline:0}.el-button--primary.is-plain.is-disabled,.el-button--primary.is-plain.is-disabled:active,.el-button--primary.is-plain.is-disabled:focus,.el-button--primary.is-plain.is-disabled:hover{color:#8cc5ff;background-color:#ecf5ff;border-color:#d9ecff}.el-button--success{color:#FFF;background-color:#67C23A;border-color:#67C23A}.el-button--success:focus,.el-button--success:hover{background:#85ce61;border-color:#85ce61;color:#FFF}.el-button--success.is-active,.el-button--success:active{background:#5daf34;border-color:#5daf34;color:#FFF}.el-button--success:active{outline:0}.el-button--success.is-disabled,.el-button--success.is-disabled:active,.el-button--success.is-disabled:focus,.el-button--success.is-disabled:hover{color:#FFF;background-color:#b3e19d;border-color:#b3e19d}.el-button--success.is-plain{color:#67C23A;background:#f0f9eb;border-color:#c2e7b0}.el-button--success.is-plain:focus,.el-button--success.is-plain:hover{background:#67C23A;border-color:#67C23A;color:#FFF}.el-button--success.is-plain:active{background:#5daf34;border-color:#5daf34;color:#FFF;outline:0}.el-button--success.is-plain.is-disabled,.el-button--success.is-plain.is-disabled:active,.el-button--success.is-plain.is-disabled:focus,.el-button--success.is-plain.is-disabled:hover{color:#a4da89;background-color:#f0f9eb;border-color:#e1f3d8}.el-button--warning{color:#FFF;background-color:#E6A23C;border-color:#E6A23C}.el-button--warning:focus,.el-button--warning:hover{background:#ebb563;border-color:#ebb563;color:#FFF}.el-button--warning.is-active,.el-button--warning:active{background:#cf9236;border-color:#cf9236;color:#FFF}.el-button--warning:active{outline:0}.el-button--warning.is-disabled,.el-button--warning.is-disabled:active,.el-button--warning.is-disabled:focus,.el-button--warning.is-disabled:hover{color:#FFF;background-color:#f3d19e;border-color:#f3d19e}.el-button--warning.is-plain{color:#E6A23C;background:#fdf6ec;border-color:#f5dab1}.el-button--warning.is-plain:focus,.el-button--warning.is-plain:hover{background:#E6A23C;border-color:#E6A23C;color:#FFF}.el-button--warning.is-plain:active{background:#cf9236;border-color:#cf9236;color:#FFF;outline:0}.el-button--warning.is-plain.is-disabled,.el-button--warning.is-plain.is-disabled:active,.el-button--warning.is-plain.is-disabled:focus,.el-button--warning.is-plain.is-disabled:hover{color:#f0c78a;background-color:#fdf6ec;border-color:#faecd8}.el-button--danger{color:#FFF;background-color:#F56C6C;border-color:#F56C6C}.el-button--danger:focus,.el-button--danger:hover{background:#f78989;border-color:#f78989;color:#FFF}.el-button--danger.is-active,.el-button--danger:active{background:#dd6161;border-color:#dd6161;color:#FFF}.el-button--danger:active{outline:0}.el-button--danger.is-disabled,.el-button--danger.is-disabled:active,.el-button--danger.is-disabled:focus,.el-button--danger.is-disabled:hover{color:#FFF;background-color:#fab6b6;border-color:#fab6b6}.el-button--danger.is-plain{color:#F56C6C;background:#fef0f0;border-color:#fbc4c4}.el-button--danger.is-plain:focus,.el-button--danger.is-plain:hover{background:#F56C6C;border-color:#F56C6C;color:#FFF}.el-button--danger.is-plain:active{background:#dd6161;border-color:#dd6161;color:#FFF;outline:0}.el-button--danger.is-plain.is-disabled,.el-button--danger.is-plain.is-disabled:active,.el-button--danger.is-plain.is-disabled:focus,.el-button--danger.is-plain.is-disabled:hover{color:#f9a7a7;background-color:#fef0f0;border-color:#fde2e2}.el-button--info{color:#FFF;background-color:#909399;border-color:#909399}.el-button--info:focus,.el-button--info:hover{background:#a6a9ad;border-color:#a6a9ad;color:#FFF}.el-button--info.is-active,.el-button--info:active{background:#82848a;border-color:#82848a;color:#FFF}.el-button--info:active{outline:0}.el-button--info.is-disabled,.el-button--info.is-disabled:active,.el-button--info.is-disabled:focus,.el-button--info.is-disabled:hover{color:#FFF;background-color:#c8c9cc;border-color:#c8c9cc}.el-button--info.is-plain{color:#909399;background:#f4f4f5;border-color:#d3d4d6}.el-button--info.is-plain:focus,.el-button--info.is-plain:hover{background:#909399;border-color:#909399;color:#FFF}.el-button--info.is-plain:active{background:#82848a;border-color:#82848a;color:#FFF;outline:0}.el-button--info.is-plain.is-disabled,.el-button--info.is-plain.is-disabled:active,.el-button--info.is-plain.is-disabled:focus,.el-button--info.is-plain.is-disabled:hover{color:#bcbec2;background-color:#f4f4f5;border-color:#e9e9eb}.el-button--text,.el-button--text.is-disabled,.el-button--text.is-disabled:focus,.el-button--text.is-disabled:hover,.el-button--text:active{border-color:transparent}.el-button--medium{padding:10px 20px;font-size:14px;border-radius:4px}.el-button--mini,.el-button--small{font-size:12px;border-radius:3px}.el-button--medium.is-round{padding:10px 20px}.el-button--medium.is-circle{padding:10px}.el-button--small,.el-button--small.is-round{padding:9px 15px}.el-button--small.is-circle{padding:9px}.el-button--mini,.el-button--mini.is-round{padding:7px 15px}.el-button--mini.is-circle{padding:7px}.el-button--text{color:#409EFF;background:0 0;padding-left:0;padding-right:0}.el-button--text:focus,.el-button--text:hover{color:#66b1ff;border-color:transparent;background-color:transparent}.el-button--text:active{color:#3a8ee6;background-color:transparent}.el-button-group{display:inline-block;vertical-align:middle}.el-button-group::after,.el-button-group::before{display:table;content:""}.el-button-group::after{clear:both}.el-button-group>.el-button{float:left;position:relative}.el-button-group>.el-button+.el-button{margin-left:0}.el-button-group>.el-button.is-disabled{z-index:1}.el-button-group>.el-button:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.el-button-group>.el-button:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.el-button-group>.el-button:first-child:last-child{border-radius:4px}.el-button-group>.el-button:first-child:last-child.is-round{border-radius:20px}.el-button-group>.el-button:first-child:last-child.is-circle{border-radius:50%}.el-button-group>.el-button:not(:first-child):not(:last-child){border-radius:0}.el-button-group>.el-button:not(:last-child){margin-right:-1px}.el-button-group>.el-button.is-active,.el-button-group>.el-button:active,.el-button-group>.el-button:focus,.el-button-group>.el-button:hover{z-index:1}.el-button-group>.el-dropdown>.el-button{border-top-left-radius:0;border-bottom-left-radius:0;border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-calendar{background-color:#fff}.el-calendar__header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:12px 20px;border-bottom:1px solid #EBEEF5}.el-backtop,.el-page-header{display:-webkit-box;display:-ms-flexbox}.el-calendar__title{color:#000;-ms-flex-item-align:center;align-self:center}.el-calendar__body{padding:12px 20px 35px}.el-calendar-table{table-layout:fixed;width:100%}.el-calendar-table thead th{padding:12px 0;color:#606266;font-weight:400}.el-calendar-table:not(.is-range) td.next,.el-calendar-table:not(.is-range) td.prev{color:#C0C4CC}.el-backtop,.el-calendar-table td.is-today{color:#409EFF}.el-calendar-table td{border-bottom:1px solid #EBEEF5;border-right:1px solid #EBEEF5;vertical-align:top;-webkit-transition:background-color .2s ease;transition:background-color .2s ease}.el-calendar-table td.is-selected{background-color:#F2F8FE}.el-calendar-table tr:first-child td{border-top:1px solid #EBEEF5}.el-calendar-table tr td:first-child{border-left:1px solid #EBEEF5}.el-calendar-table tr.el-calendar-table__row--hide-border td{border-top:none}.el-calendar-table .el-calendar-day{-webkit-box-sizing:border-box;box-sizing:border-box;padding:8px;height:85px}.el-calendar-table .el-calendar-day:hover{cursor:pointer;background-color:#F2F8FE}.el-backtop{position:fixed;background-color:#FFF;width:40px;height:40px;border-radius:50%;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:20px;-webkit-box-shadow:0 0 6px rgba(0,0,0,.12);box-shadow:0 0 6px rgba(0,0,0,.12);cursor:pointer;z-index:5}.el-backtop:hover{background-color:#F2F6FC}.el-page-header{display:flex;line-height:24px}.el-page-header__left{display:-webkit-box;display:-ms-flexbox;display:flex;cursor:pointer;margin-right:40px;position:relative}.el-page-header__left::after{content:"";position:absolute;width:1px;height:16px;right:-20px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);background-color:#DCDFE6}.el-checkbox,.el-checkbox__input{display:inline-block;position:relative;white-space:nowrap}.el-page-header__left .el-icon-back{font-size:18px;margin-right:6px;-ms-flex-item-align:center;align-self:center}.el-page-header__title{font-size:14px;font-weight:500}.el-page-header__content{font-size:18px;color:#303133}.el-checkbox{color:#606266;font-weight:500;font-size:14px;cursor:pointer;user-select:none;margin-right:30px}.el-checkbox-button__inner,.el-radio{font-weight:500;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.el-checkbox.is-bordered{padding:9px 20px 9px 10px;border-radius:4px;border:1px solid #DCDFE6;-webkit-box-sizing:border-box;box-sizing:border-box;line-height:normal;height:40px}.el-checkbox.is-bordered.is-checked{border-color:#409EFF}.el-checkbox.is-bordered.is-disabled{border-color:#EBEEF5;cursor:not-allowed}.el-checkbox.is-bordered+.el-checkbox.is-bordered{margin-left:10px}.el-checkbox.is-bordered.el-checkbox--medium{padding:7px 20px 7px 10px;border-radius:4px;height:36px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__label{line-height:17px;font-size:14px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__inner{height:14px;width:14px}.el-checkbox.is-bordered.el-checkbox--small{padding:5px 15px 5px 10px;border-radius:3px;height:32px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{line-height:15px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner::after{height:6px;width:2px}.el-checkbox.is-bordered.el-checkbox--mini{padding:3px 15px 3px 10px;border-radius:3px;height:28px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__label{line-height:12px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner::after{height:6px;width:2px}.el-checkbox__input{cursor:pointer;outline:0;line-height:1;vertical-align:middle}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:#edf2fc;border-color:#DCDFE6;cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner::after{cursor:not-allowed;border-color:#C0C4CC}.el-checkbox__input.is-disabled .el-checkbox__inner+.el-checkbox__label{cursor:not-allowed}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:#F2F6FC;border-color:#DCDFE6}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after{border-color:#C0C4CC}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:#F2F6FC;border-color:#DCDFE6}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner::before{background-color:#C0C4CC;border-color:#C0C4CC}.el-checkbox__input.is-checked .el-checkbox__inner,.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:#409EFF;border-color:#409EFF}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:#C0C4CC;cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner::after{-webkit-transform:rotate(45deg) scaleY(1);transform:rotate(45deg) scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:#409EFF}.el-checkbox__input.is-focus .el-checkbox__inner{border-color:#409EFF}.el-checkbox__input.is-indeterminate .el-checkbox__inner::before{content:'';position:absolute;display:block;background-color:#FFF;height:2px;-webkit-transform:scale(.5);transform:scale(.5);left:0;right:0;top:5px}.el-checkbox__input.is-indeterminate .el-checkbox__inner::after{display:none}.el-checkbox__inner{display:inline-block;position:relative;border:1px solid #DCDFE6;border-radius:2px;-webkit-box-sizing:border-box;box-sizing:border-box;width:14px;height:14px;background-color:#FFF;z-index:1;-webkit-transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46);transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46)}.el-checkbox__inner:hover{border-color:#409EFF}.el-checkbox__inner::after{-webkit-box-sizing:content-box;box-sizing:content-box;content:"";border:1px solid #FFF;border-left:0;border-top:0;height:7px;left:4px;position:absolute;top:1px;-webkit-transform:rotate(45deg) scaleY(0);transform:rotate(45deg) scaleY(0);width:3px;-webkit-transition:-webkit-transform .15s ease-in .05s;transition:-webkit-transform .15s ease-in .05s;transition:transform .15s ease-in .05s;transition:transform .15s ease-in .05s,-webkit-transform .15s ease-in .05s;-webkit-transform-origin:center;transform-origin:center}.el-checkbox__original{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;z-index:-1}.el-checkbox-button,.el-checkbox-button__inner{display:inline-block;position:relative}.el-checkbox__label{display:inline-block;padding-left:10px;line-height:19px;font-size:14px}.el-checkbox:last-of-type{margin-right:0}.el-checkbox-button__inner{line-height:1;white-space:nowrap;vertical-align:middle;cursor:pointer;background:#FFF;border:1px solid #DCDFE6;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);padding:12px 20px;font-size:14px;border-radius:0}.el-checkbox-button__inner.is-round{padding:12px 20px}.el-checkbox-button__inner:hover{color:#409EFF}.el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.el-radio,.el-radio__input{line-height:1;white-space:nowrap;outline:0}.el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.el-checkbox-button__original{opacity:0;outline:0;position:absolute;margin:0;z-index:-1}.el-radio,.el-radio__inner,.el-radio__input{position:relative;display:inline-block}.el-checkbox-button.is-checked .el-checkbox-button__inner{color:#FFF;background-color:#409EFF;border-color:#409EFF;-webkit-box-shadow:-1px 0 0 0 #8cc5ff;box-shadow:-1px 0 0 0 #8cc5ff}.el-checkbox-button.is-checked:first-child .el-checkbox-button__inner{border-left-color:#409EFF}.el-checkbox-button.is-disabled .el-checkbox-button__inner{color:#C0C4CC;cursor:not-allowed;background-image:none;background-color:#FFF;border-color:#EBEEF5;-webkit-box-shadow:none;box-shadow:none}.el-checkbox-button.is-disabled:first-child .el-checkbox-button__inner{border-left-color:#EBEEF5}.el-checkbox-button:first-child .el-checkbox-button__inner{border-left:1px solid #DCDFE6;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:#409EFF}.el-checkbox-button:last-child .el-checkbox-button__inner{border-radius:0 4px 4px 0}.el-checkbox-button--medium .el-checkbox-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-checkbox-button--medium .el-checkbox-button__inner.is-round{padding:10px 20px}.el-checkbox-button--small .el-checkbox-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:9px 15px}.el-checkbox-button--mini .el-checkbox-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-checkbox-button--mini .el-checkbox-button__inner.is-round{padding:7px 15px}.el-checkbox-group{font-size:0}.el-radio,.el-radio--medium.is-bordered .el-radio__label{font-size:14px}.el-radio{color:#606266;cursor:pointer;margin-right:30px}.el-cascader-node>.el-radio,.el-radio:last-child{margin-right:0}.el-radio.is-bordered{padding:12px 20px 0 10px;border-radius:4px;border:1px solid #DCDFE6;-webkit-box-sizing:border-box;box-sizing:border-box;height:40px}.el-radio.is-bordered.is-checked{border-color:#409EFF}.el-radio.is-bordered.is-disabled{cursor:not-allowed;border-color:#EBEEF5}.el-radio__input.is-disabled .el-radio__inner,.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:#F5F7FA;border-color:#E4E7ED}.el-radio.is-bordered+.el-radio.is-bordered{margin-left:10px}.el-radio--medium.is-bordered{padding:10px 20px 0 10px;border-radius:4px;height:36px}.el-radio--mini.is-bordered .el-radio__label,.el-radio--small.is-bordered .el-radio__label{font-size:12px}.el-radio--medium.is-bordered .el-radio__inner{height:14px;width:14px}.el-radio--small.is-bordered{padding:8px 15px 0 10px;border-radius:3px;height:32px}.el-radio--small.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio--mini.is-bordered{padding:6px 15px 0 10px;border-radius:3px;height:28px}.el-radio--mini.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio__input{cursor:pointer;vertical-align:middle}.el-radio__input.is-disabled .el-radio__inner{cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner::after{cursor:not-allowed;background-color:#F5F7FA}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner::after{background-color:#C0C4CC}.el-radio__input.is-disabled+span.el-radio__label{color:#C0C4CC;cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{border-color:#409EFF;background:#409EFF}.el-radio__input.is-checked .el-radio__inner::after{-webkit-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:#409EFF}.el-radio__input.is-focus .el-radio__inner{border-color:#409EFF}.el-radio__inner{border:1px solid #DCDFE6;border-radius:100%;width:14px;height:14px;background-color:#FFF;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box}.el-radio__inner:hover{border-color:#409EFF}.el-radio__inner::after{width:4px;height:4px;border-radius:100%;background-color:#FFF;content:"";position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%) scale(0);transform:translate(-50%,-50%) scale(0);-webkit-transition:-webkit-transform .15s ease-in;transition:-webkit-transform .15s ease-in;transition:transform .15s ease-in;transition:transform .15s ease-in,-webkit-transform .15s ease-in}.el-radio__original{opacity:0;outline:0;position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;margin:0}.el-radio:focus:not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{-webkit-box-shadow:0 0 2px 2px #409EFF;box-shadow:0 0 2px 2px #409EFF}.el-radio__label{font-size:14px;padding-left:10px}.el-scrollbar{overflow:hidden;position:relative}.el-scrollbar:active>.el-scrollbar__bar,.el-scrollbar:focus>.el-scrollbar__bar,.el-scrollbar:hover>.el-scrollbar__bar{opacity:1;-webkit-transition:opacity 340ms ease-out;transition:opacity 340ms ease-out}.el-scrollbar__wrap{overflow:scroll;height:100%}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(144,147,153,.3);-webkit-transition:.3s background-color;transition:.3s background-color}.el-scrollbar__thumb:hover{background-color:rgba(144,147,153,.5)}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;-webkit-transition:opacity 120ms ease-out;transition:opacity 120ms ease-out}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-cascader-panel{display:-webkit-box;display:-ms-flexbox;display:flex;border-radius:4px;font-size:14px}.el-cascader-panel.is-bordered{border:1px solid #E4E7ED;border-radius:4px}.el-cascader-menu{min-width:180px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;border-right:solid 1px #E4E7ED}.el-cascader-menu:last-child{border-right:none}.el-cascader-menu:last-child .el-cascader-node{padding-right:20px}.el-cascader-menu__wrap{height:204px}.el-cascader-menu__list{position:relative;min-height:100%;margin:0;padding:6px 0;list-style:none;-webkit-box-sizing:border-box;box-sizing:border-box}.el-avatar,.el-drawer{-webkit-box-sizing:border-box;overflow:hidden}.el-cascader-menu__hover-zone{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.el-cascader-menu__empty-text{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);text-align:center;color:#C0C4CC}.el-cascader-node{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 30px 0 20px;height:34px;line-height:34px;outline:0}.el-cascader-node.is-selectable.in-active-path{color:#606266}.el-cascader-node.in-active-path,.el-cascader-node.is-active,.el-cascader-node.is-selectable.in-checked-path{color:#409EFF;font-weight:700}.el-cascader-node:not(.is-disabled){cursor:pointer}.el-cascader-node:not(.is-disabled):focus,.el-cascader-node:not(.is-disabled):hover{background:#F5F7FA}.el-cascader-node.is-disabled{color:#C0C4CC;cursor:not-allowed}.el-cascader-node__prefix{position:absolute;left:10px}.el-cascader-node__postfix{position:absolute;right:10px}.el-cascader-node__label{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:0 10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-cascader-node>.el-radio .el-radio__label{padding-left:0}.el-avatar{display:inline-block;box-sizing:border-box;text-align:center;color:#fff;background:#C0C4CC;width:40px;height:40px;line-height:40px;font-size:14px}.el-avatar>img{display:block;height:100%;vertical-align:middle}.el-drawer,.el-drawer__header{display:-webkit-box;display:-ms-flexbox}.el-avatar--circle{border-radius:50%}.el-avatar--square{border-radius:4px}.el-avatar--icon{font-size:18px}.el-avatar--large{width:40px;height:40px;line-height:40px}.el-avatar--medium{width:36px;height:36px;line-height:36px}.el-avatar--small{width:28px;height:28px;line-height:28px}.el-drawer.btt,.el-drawer.ttb,.el-drawer__container{left:0;right:0;width:100%}.el-drawer.ltr,.el-drawer.rtl,.el-drawer__container{top:0;bottom:0;height:100%}@-webkit-keyframes el-drawer-fade-in{0%{opacity:0}100%{opacity:1}}@keyframes el-drawer-fade-in{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes rtl-drawer-in{0%{-webkit-transform:translate(100%,0);transform:translate(100%,0)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@keyframes rtl-drawer-in{0%{-webkit-transform:translate(100%,0);transform:translate(100%,0)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@-webkit-keyframes rtl-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(100%,0);transform:translate(100%,0)}}@keyframes rtl-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(100%,0);transform:translate(100%,0)}}@-webkit-keyframes ltr-drawer-in{0%{-webkit-transform:translate(-100%,0);transform:translate(-100%,0)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@keyframes ltr-drawer-in{0%{-webkit-transform:translate(-100%,0);transform:translate(-100%,0)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@-webkit-keyframes ltr-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(-100%,0);transform:translate(-100%,0)}}@keyframes ltr-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(-100%,0);transform:translate(-100%,0)}}@-webkit-keyframes ttb-drawer-in{0%{-webkit-transform:translate(0,-100%);transform:translate(0,-100%)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@keyframes ttb-drawer-in{0%{-webkit-transform:translate(0,-100%);transform:translate(0,-100%)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@-webkit-keyframes ttb-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(0,-100%);transform:translate(0,-100%)}}@keyframes ttb-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(0,-100%);transform:translate(0,-100%)}}@-webkit-keyframes btt-drawer-in{0%{-webkit-transform:translate(0,100%);transform:translate(0,100%)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@keyframes btt-drawer-in{0%{-webkit-transform:translate(0,100%);transform:translate(0,100%)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@-webkit-keyframes btt-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(0,100%);transform:translate(0,100%)}}@keyframes btt-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(0,100%);transform:translate(0,100%)}}.el-drawer{position:absolute;box-sizing:border-box;background-color:#FFF;display:flex;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12);box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12);outline:0}.el-drawer.rtl{-webkit-animation:rtl-drawer-out .3s;animation:rtl-drawer-out .3s;right:0}.el-drawer__open .el-drawer.rtl{-webkit-animation:rtl-drawer-in .3s 1ms;animation:rtl-drawer-in .3s 1ms}.el-drawer.ltr{-webkit-animation:ltr-drawer-out .3s;animation:ltr-drawer-out .3s;left:0}.el-drawer__open .el-drawer.ltr{-webkit-animation:ltr-drawer-in .3s 1ms;animation:ltr-drawer-in .3s 1ms}.el-drawer.ttb{-webkit-animation:ttb-drawer-out .3s;animation:ttb-drawer-out .3s;top:0}.el-drawer__open .el-drawer.ttb{-webkit-animation:ttb-drawer-in .3s 1ms;animation:ttb-drawer-in .3s 1ms}.el-drawer.btt{-webkit-animation:btt-drawer-out .3s;animation:btt-drawer-out .3s;bottom:0}.el-drawer__open .el-drawer.btt{-webkit-animation:btt-drawer-in .3s 1ms;animation:btt-drawer-in .3s 1ms}.el-drawer__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:hidden;margin:0}.el-drawer__header{-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#72767b;display:flex;margin-bottom:32px;padding:20px 20px 0}.el-drawer__header>:first-child{-webkit-box-flex:1;-ms-flex:1;flex:1}.el-drawer__title{margin:0;-webkit-box-flex:1;-ms-flex:1;flex:1;line-height:inherit;font-size:1rem}.el-drawer__close-btn{border:none;cursor:pointer;font-size:20px;color:inherit;background-color:transparent}.el-drawer__body{-webkit-box-flex:1;-ms-flex:1;flex:1}.el-drawer__body>*{-webkit-box-sizing:border-box;box-sizing:border-box}.el-drawer__container{position:relative}.el-drawer-fade-enter-active{-webkit-animation:el-drawer-fade-in .3s;animation:el-drawer-fade-in .3s}.el-drawer-fade-leave-active{animation:el-drawer-fade-in .3s reverse}.el-popconfirm__main{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-popconfirm__icon{margin-right:5px}.el-popconfirm__action{text-align:right;margin:0}
\ No newline at end of file
diff --git a/xcxMapSecurityPosition/lid/elementUi.js b/xcxMapSecurityPosition/lid/elementUi.js
deleted file mode 100644
index 12f66a1..0000000
--- a/xcxMapSecurityPosition/lid/elementUi.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("vue")):"function"==typeof define&&define.amd?define("ELEMENT",["vue"],t):"object"==typeof exports?exports.ELEMENT=t(require("vue")):e.ELEMENT=t(e.Vue)}("undefined"!=typeof self?self:this,function(e){return function(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/dist/",i(i.s=49)}([function(t,i){t.exports=e},function(e,t,i){var n=i(4);e.exports=function(e,t,i){return void 0===i?n(e,t,!1):n(e,i,!1!==t)}},function(e,t,i){var n;!function(r){"use strict";var s={},a=/d{1,4}|M{1,4}|yy(?:yy)?|S{1,3}|Do|ZZ|([HhMsDm])\1?|[aA]|"[^"]*"|'[^']*'/g,o="[^\\s]+",l=/\[([^]*?)\]/gm,u=function(){};function c(e,t){for(var i=[],n=0,r=e.length;n<r;n++)i.push(e[n].substr(0,t));return i}function h(e){return function(t,i,n){var r=n[e].indexOf(i.charAt(0).toUpperCase()+i.substr(1).toLowerCase());~r&&(t.month=r)}}function d(e,t){for(e=String(e),t=t||2;e.length<t;)e="0"+e;return e}var p=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],f=["January","February","March","April","May","June","July","August","September","October","November","December"],m=c(f,3),v=c(p,3);s.i18n={dayNamesShort:v,dayNames:p,monthNamesShort:m,monthNames:f,amPm:["am","pm"],DoFn:function(e){return e+["th","st","nd","rd"][e%10>3?0:(e-e%10!=10)*e%10]}};var g={D:function(e){return e.getDay()},DD:function(e){return d(e.getDay())},Do:function(e,t){return t.DoFn(e.getDate())},d:function(e){return e.getDate()},dd:function(e){return d(e.getDate())},ddd:function(e,t){return t.dayNamesShort[e.getDay()]},dddd:function(e,t){return t.dayNames[e.getDay()]},M:function(e){return e.getMonth()+1},MM:function(e){return d(e.getMonth()+1)},MMM:function(e,t){return t.monthNamesShort[e.getMonth()]},MMMM:function(e,t){return t.monthNames[e.getMonth()]},yy:function(e){return d(String(e.getFullYear()),4).substr(2)},yyyy:function(e){return d(e.getFullYear(),4)},h:function(e){return e.getHours()%12||12},hh:function(e){return d(e.getHours()%12||12)},H:function(e){return e.getHours()},HH:function(e){return d(e.getHours())},m:function(e){return e.getMinutes()},mm:function(e){return d(e.getMinutes())},s:function(e){return e.getSeconds()},ss:function(e){return d(e.getSeconds())},S:function(e){return Math.round(e.getMilliseconds()/100)},SS:function(e){return d(Math.round(e.getMilliseconds()/10),2)},SSS:function(e){return d(e.getMilliseconds(),3)},a:function(e,t){return e.getHours()<12?t.amPm[0]:t.amPm[1]},A:function(e,t){return e.getHours()<12?t.amPm[0].toUpperCase():t.amPm[1].toUpperCase()},ZZ:function(e){var t=e.getTimezoneOffset();return(t>0?"-":"+")+d(100*Math.floor(Math.abs(t)/60)+Math.abs(t)%60,4)}},b={d:["\\d\\d?",function(e,t){e.day=t}],Do:["\\d\\d?"+o,function(e,t){e.day=parseInt(t,10)}],M:["\\d\\d?",function(e,t){e.month=t-1}],yy:["\\d\\d?",function(e,t){var i=+(""+(new Date).getFullYear()).substr(0,2);e.year=""+(t>68?i-1:i)+t}],h:["\\d\\d?",function(e,t){e.hour=t}],m:["\\d\\d?",function(e,t){e.minute=t}],s:["\\d\\d?",function(e,t){e.second=t}],yyyy:["\\d{4}",function(e,t){e.year=t}],S:["\\d",function(e,t){e.millisecond=100*t}],SS:["\\d{2}",function(e,t){e.millisecond=10*t}],SSS:["\\d{3}",function(e,t){e.millisecond=t}],D:["\\d\\d?",u],ddd:[o,u],MMM:[o,h("monthNamesShort")],MMMM:[o,h("monthNames")],a:[o,function(e,t,i){var n=t.toLowerCase();n===i.amPm[0]?e.isPm=!1:n===i.amPm[1]&&(e.isPm=!0)}],ZZ:["[^\\s]*?[\\+\\-]\\d\\d:?\\d\\d|[^\\s]*?Z",function(e,t){var i,n=(t+"").match(/([+-]|\d\d)/gi);n&&(i=60*n[1]+parseInt(n[2],10),e.timezoneOffset="+"===n[0]?i:-i)}]};b.dd=b.d,b.dddd=b.ddd,b.DD=b.D,b.mm=b.m,b.hh=b.H=b.HH=b.h,b.MM=b.M,b.ss=b.s,b.A=b.a,s.masks={default:"ddd MMM dd yyyy HH:mm:ss",shortDate:"M/D/yy",mediumDate:"MMM d, yyyy",longDate:"MMMM d, yyyy",fullDate:"dddd, MMMM d, yyyy",shortTime:"HH:mm",mediumTime:"HH:mm:ss",longTime:"HH:mm:ss.SSS"},s.format=function(e,t,i){var n=i||s.i18n;if("number"==typeof e&&(e=new Date(e)),"[object Date]"!==Object.prototype.toString.call(e)||isNaN(e.getTime()))throw new Error("Invalid Date in fecha.format");t=s.masks[t]||t||s.masks.default;var r=[];return(t=(t=t.replace(l,function(e,t){return r.push(t),"@@@"})).replace(a,function(t){return t in g?g[t](e,n):t.slice(1,t.length-1)})).replace(/@@@/g,function(){return r.shift()})},s.parse=function(e,t,i){var n=i||s.i18n;if("string"!=typeof t)throw new Error("Invalid format in fecha.parse");if(t=s.masks[t]||t,e.length>1e3)return null;var r={},o=[],u=[];t=t.replace(l,function(e,t){return u.push(t),"@@@"});var c,h=(c=t,c.replace(/[|\\{()[^$+*?.-]/g,"\\$&")).replace(a,function(e){if(b[e]){var t=b[e];return o.push(t[1]),"("+t[0]+")"}return e});h=h.replace(/@@@/g,function(){return u.shift()});var d=e.match(new RegExp(h,"i"));if(!d)return null;for(var p=1;p<d.length;p++)o[p-1](r,d[p],n);var f,m=new Date;return!0===r.isPm&&null!=r.hour&&12!=+r.hour?r.hour=+r.hour+12:!1===r.isPm&&12==+r.hour&&(r.hour=0),null!=r.timezoneOffset?(r.minute=+(r.minute||0)-+r.timezoneOffset,f=new Date(Date.UTC(r.year||m.getFullYear(),r.month||0,r.day||1,r.hour||0,r.minute||0,r.second||0,r.millisecond||0))):f=new Date(r.year||m.getFullYear(),r.month||0,r.day||1,r.hour||0,r.minute||0,r.second||0,r.millisecond||0),f},e.exports?e.exports=s:void 0===(n=function(){return s}.call(t,i,t,e))||(e.exports=n)}()},function(e,t,i){"use strict";t.__esModule=!0;var n=a(i(65)),r=a(i(77)),s="function"==typeof r.default&&"symbol"==typeof n.default?function(e){return typeof e}:function(e){return e&&"function"==typeof r.default&&e.constructor===r.default&&e!==r.default.prototype?"symbol":typeof e};function a(e){return e&&e.__esModule?e:{default:e}}t.default="function"==typeof r.default&&"symbol"===s(n.default)?function(e){return void 0===e?"undefined":s(e)}:function(e){return e&&"function"==typeof r.default&&e.constructor===r.default&&e!==r.default.prototype?"symbol":void 0===e?"undefined":s(e)}},function(e,t){e.exports=function(e,t,i,n){var r,s=0;return"boolean"!=typeof t&&(n=i,i=t,t=void 0),function(){var a=this,o=Number(new Date)-s,l=arguments;function u(){s=Number(new Date),i.apply(a,l)}n&&!r&&u(),r&&clearTimeout(r),void 0===n&&o>e?u():!0!==t&&(r=setTimeout(n?function(){r=void 0}:u,void 0===n?e-o:e))}}},function(e,t){var i=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=i)},function(e,t){var i=/^(attrs|props|on|nativeOn|class|style|hook)$/;function n(e,t){return function(){e&&e.apply(this,arguments),t&&t.apply(this,arguments)}}e.exports=function(e){return e.reduce(function(e,t){var r,s,a,o,l;for(a in t)if(r=e[a],s=t[a],r&&i.test(a))if("class"===a&&("string"==typeof r&&(l=r,e[a]=r={},r[l]=!0),"string"==typeof s&&(l=s,t[a]=s={},s[l]=!0)),"on"===a||"nativeOn"===a||"hook"===a)for(o in s)r[o]=n(r[o],s[o]);else if(Array.isArray(r))e[a]=r.concat(s);else if(Array.isArray(s))e[a]=[r].concat(s);else for(o in s)r[o]=s[o];else e[a]=t[a];return e},{})}},function(e,t){var i={}.hasOwnProperty;e.exports=function(e,t){return i.call(e,t)}},function(e,t,i){"use strict";t.__esModule=!0;var n,r=i(56),s=(n=r)&&n.__esModule?n:{default:n};t.default=s.default||function(e){for(var t=1;t<arguments.length;t++){var i=arguments[t];for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n])}return e}},function(e,t,i){var n=i(10),r=i(18);e.exports=i(11)?function(e,t,i){return n.f(e,t,r(1,i))}:function(e,t,i){return e[t]=i,e}},function(e,t,i){var n=i(17),r=i(36),s=i(24),a=Object.defineProperty;t.f=i(11)?Object.defineProperty:function(e,t,i){if(n(e),t=s(t,!0),n(i),r)try{return a(e,t,i)}catch(e){}if("get"in i||"set"in i)throw TypeError("Accessors not supported!");return"value"in i&&(e[t]=i.value),e}},function(e,t,i){e.exports=!i(16)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,t,i){var n=i(39),r=i(25);e.exports=function(e){return n(r(e))}},function(e,t,i){var n=i(28)("wks"),r=i(21),s=i(5).Symbol,a="function"==typeof s;(e.exports=function(e){return n[e]||(n[e]=a&&s[e]||(a?s:r)("Symbol."+e))}).store=n},function(e,t){var i=e.exports={version:"2.6.2"};"number"==typeof __e&&(__e=i)},function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t,i){var n=i(15);e.exports=function(e){if(!n(e))throw TypeError(e+" is not an object!");return e}},function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t,i){var n=i(38),r=i(29);e.exports=Object.keys||function(e){return n(e,r)}},function(e,t){e.exports=!0},function(e,t){var i=0,n=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++i+n).toString(36))}},function(e,t){t.f={}.propertyIsEnumerable},function(e,t,i){var n=i(5),r=i(14),s=i(59),a=i(9),o=i(7),l=function(e,t,i){var u,c,h,d=e&l.F,p=e&l.G,f=e&l.S,m=e&l.P,v=e&l.B,g=e&l.W,b=p?r:r[t]||(r[t]={}),y=b.prototype,w=p?n:f?n[t]:(n[t]||{}).prototype;for(u in p&&(i=t),i)(c=!d&&w&&void 0!==w[u])&&o(b,u)||(h=c?w[u]:i[u],b[u]=p&&"function"!=typeof w[u]?i[u]:v&&c?s(h,n):g&&w[u]==h?function(e){var t=function(t,i,n){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,i)}return new e(t,i,n)}return e.apply(this,arguments)};return t.prototype=e.prototype,t}(h):m&&"function"==typeof h?s(Function.call,h):h,m&&((b.virtual||(b.virtual={}))[u]=h,e&l.R&&y&&!y[u]&&a(y,u,h)))};l.F=1,l.G=2,l.S=4,l.P=8,l.B=16,l.W=32,l.U=64,l.R=128,e.exports=l},function(e,t,i){var n=i(15);e.exports=function(e,t){if(!n(e))return e;var i,r;if(t&&"function"==typeof(i=e.toString)&&!n(r=i.call(e)))return r;if("function"==typeof(i=e.valueOf)&&!n(r=i.call(e)))return r;if(!t&&"function"==typeof(i=e.toString)&&!n(r=i.call(e)))return r;throw TypeError("Can't convert object to primitive value")}},function(e,t){e.exports=function(e){if(null==e)throw TypeError("Can't call method on  "+e);return e}},function(e,t){var i=Math.ceil,n=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?n:i)(e)}},function(e,t,i){var n=i(28)("keys"),r=i(21);e.exports=function(e){return n[e]||(n[e]=r(e))}},function(e,t,i){var n=i(14),r=i(5),s=r["__core-js_shared__"]||(r["__core-js_shared__"]={});(e.exports=function(e,t){return s[e]||(s[e]=void 0!==t?t:{})})("versions",[]).push({version:n.version,mode:i(20)?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},function(e,t){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(e,t){t.f=Object.getOwnPropertySymbols},function(e,t){e.exports={}},function(e,t,i){var n=i(10).f,r=i(7),s=i(13)("toStringTag");e.exports=function(e,t,i){e&&!r(e=i?e:e.prototype,s)&&n(e,s,{configurable:!0,value:t})}},function(e,t,i){t.f=i(13)},function(e,t,i){var n=i(5),r=i(14),s=i(20),a=i(33),o=i(10).f;e.exports=function(e){var t=r.Symbol||(r.Symbol=s?{}:n.Symbol||{});"_"==e.charAt(0)||e in t||o(t,e,{value:a.f(e)})}},function(e,t,i){var n=i(4),r=i(1);e.exports={throttle:n,debounce:r}},function(e,t,i){e.exports=!i(11)&&!i(16)(function(){return 7!=Object.defineProperty(i(37)("div"),"a",{get:function(){return 7}}).a})},function(e,t,i){var n=i(15),r=i(5).document,s=n(r)&&n(r.createElement);e.exports=function(e){return s?r.createElement(e):{}}},function(e,t,i){var n=i(7),r=i(12),s=i(62)(!1),a=i(27)("IE_PROTO");e.exports=function(e,t){var i,o=r(e),l=0,u=[];for(i in o)i!=a&&n(o,i)&&u.push(i);for(;t.length>l;)n(o,i=t[l++])&&(~s(u,i)||u.push(i));return u}},function(e,t,i){var n=i(40);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==n(e)?e.split(""):Object(e)}},function(e,t){var i={}.toString;e.exports=function(e){return i.call(e).slice(8,-1)}},function(e,t,i){var n=i(25);e.exports=function(e){return Object(n(e))}},function(e,t,i){"use strict";var n=i(20),r=i(23),s=i(43),a=i(9),o=i(31),l=i(69),u=i(32),c=i(72),h=i(13)("iterator"),d=!([].keys&&"next"in[].keys()),p=function(){return this};e.exports=function(e,t,i,f,m,v,g){l(i,t,f);var b,y,w,_=function(e){if(!d&&e in S)return S[e];switch(e){case"keys":case"values":return function(){return new i(this,e)}}return function(){return new i(this,e)}},x=t+" Iterator",C="values"==m,k=!1,S=e.prototype,D=S[h]||S["@@iterator"]||m&&S[m],$=D||_(m),E=m?C?_("entries"):$:void 0,T="Array"==t&&S.entries||D;if(T&&(w=c(T.call(new e)))!==Object.prototype&&w.next&&(u(w,x,!0),n||"function"==typeof w[h]||a(w,h,p)),C&&D&&"values"!==D.name&&(k=!0,$=function(){return D.call(this)}),n&&!g||!d&&!k&&S[h]||a(S,h,$),o[t]=$,o[x]=p,m)if(b={values:C?$:_("values"),keys:v?$:_("keys"),entries:E},g)for(y in b)y in S||s(S,y,b[y]);else r(r.P+r.F*(d||k),t,b);return b}},function(e,t,i){e.exports=i(9)},function(e,t,i){var n=i(17),r=i(70),s=i(29),a=i(27)("IE_PROTO"),o=function(){},l=function(){var e,t=i(37)("iframe"),n=s.length;for(t.style.display="none",i(71).appendChild(t),t.src="javascript:",(e=t.contentWindow.document).open(),e.write("<script>document.F=Object<\/script>"),e.close(),l=e.F;n--;)delete l.prototype[s[n]];return l()};e.exports=Object.create||function(e,t){var i;return null!==e?(o.prototype=n(e),i=new o,o.prototype=null,i[a]=e):i=l(),void 0===t?i:r(i,t)}},function(e,t,i){var n=i(38),r=i(29).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return n(e,r)}},function(e,t,i){"use strict";var n=function(e){return function(e){return!!e&&"object"==typeof e}(e)&&!function(e){var t=Object.prototype.toString.call(e);return"[object RegExp]"===t||"[object Date]"===t||function(e){return e.$$typeof===r}(e)}(e)};var r="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function s(e,t){var i;return t&&!0===t.clone&&n(e)?o((i=e,Array.isArray(i)?[]:{}),e,t):e}function a(e,t,i){var r=e.slice();return t.forEach(function(t,a){void 0===r[a]?r[a]=s(t,i):n(t)?r[a]=o(e[a],t,i):-1===e.indexOf(t)&&r.push(s(t,i))}),r}function o(e,t,i){var r=Array.isArray(t);return r===Array.isArray(e)?r?((i||{arrayMerge:a}).arrayMerge||a)(e,t,i):function(e,t,i){var r={};return n(e)&&Object.keys(e).forEach(function(t){r[t]=s(e[t],i)}),Object.keys(t).forEach(function(a){n(t[a])&&e[a]?r[a]=o(e[a],t[a],i):r[a]=s(t[a],i)}),r}(e,t,i):s(t,i)}o.all=function(e,t){if(!Array.isArray(e)||e.length<2)throw new Error("first argument should be an array with at least two elements");return e.reduce(function(e,i){return o(e,i,t)})};var l=o;e.exports=l},function(e,t,i){"use strict";(function(e){var i=function(){if("undefined"!=typeof Map)return Map;function e(e,t){var i=-1;return e.some(function(e,n){return e[0]===t&&(i=n,!0)}),i}return function(){function t(){this.__entries__=[]}return Object.defineProperty(t.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),t.prototype.get=function(t){var i=e(this.__entries__,t),n=this.__entries__[i];return n&&n[1]},t.prototype.set=function(t,i){var n=e(this.__entries__,t);~n?this.__entries__[n][1]=i:this.__entries__.push([t,i])},t.prototype.delete=function(t){var i=this.__entries__,n=e(i,t);~n&&i.splice(n,1)},t.prototype.has=function(t){return!!~e(this.__entries__,t)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(e,t){void 0===t&&(t=null);for(var i=0,n=this.__entries__;i<n.length;i++){var r=n[i];e.call(t,r[1],r[0])}},t}()}(),n="undefined"!=typeof window&&"undefined"!=typeof document&&window.document===document,r=void 0!==e&&e.Math===Math?e:"undefined"!=typeof self&&self.Math===Math?self:"undefined"!=typeof window&&window.Math===Math?window:Function("return this")(),s="function"==typeof requestAnimationFrame?requestAnimationFrame.bind(r):function(e){return setTimeout(function(){return e(Date.now())},1e3/60)},a=2;var o=20,l=["top","right","bottom","left","width","height","size","weight"],u="undefined"!=typeof MutationObserver,c=function(){function e(){this.connected_=!1,this.mutationEventsAdded_=!1,this.mutationsObserver_=null,this.observers_=[],this.onTransitionEnd_=this.onTransitionEnd_.bind(this),this.refresh=function(e,t){var i=!1,n=!1,r=0;function o(){i&&(i=!1,e()),n&&u()}function l(){s(o)}function u(){var e=Date.now();if(i){if(e-r<a)return;n=!0}else i=!0,n=!1,setTimeout(l,t);r=e}return u}(this.refresh.bind(this),o)}return e.prototype.addObserver=function(e){~this.observers_.indexOf(e)||this.observers_.push(e),this.connected_||this.connect_()},e.prototype.removeObserver=function(e){var t=this.observers_,i=t.indexOf(e);~i&&t.splice(i,1),!t.length&&this.connected_&&this.disconnect_()},e.prototype.refresh=function(){this.updateObservers_()&&this.refresh()},e.prototype.updateObservers_=function(){var e=this.observers_.filter(function(e){return e.gatherActive(),e.hasActive()});return e.forEach(function(e){return e.broadcastActive()}),e.length>0},e.prototype.connect_=function(){n&&!this.connected_&&(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),u?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){n&&this.connected_&&(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(e){var t=e.propertyName,i=void 0===t?"":t;l.some(function(e){return!!~i.indexOf(e)})&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),h=function(e,t){for(var i=0,n=Object.keys(t);i<n.length;i++){var r=n[i];Object.defineProperty(e,r,{value:t[r],enumerable:!1,writable:!1,configurable:!0})}return e},d=function(e){return e&&e.ownerDocument&&e.ownerDocument.defaultView||r},p=y(0,0,0,0);function f(e){return parseFloat(e)||0}function m(e){for(var t=[],i=1;i<arguments.length;i++)t[i-1]=arguments[i];return t.reduce(function(t,i){return t+f(e["border-"+i+"-width"])},0)}function v(e){var t=e.clientWidth,i=e.clientHeight;if(!t&&!i)return p;var n=d(e).getComputedStyle(e),r=function(e){for(var t={},i=0,n=["top","right","bottom","left"];i<n.length;i++){var r=n[i],s=e["padding-"+r];t[r]=f(s)}return t}(n),s=r.left+r.right,a=r.top+r.bottom,o=f(n.width),l=f(n.height);if("border-box"===n.boxSizing&&(Math.round(o+s)!==t&&(o-=m(n,"left","right")+s),Math.round(l+a)!==i&&(l-=m(n,"top","bottom")+a)),!function(e){return e===d(e).document.documentElement}(e)){var u=Math.round(o+s)-t,c=Math.round(l+a)-i;1!==Math.abs(u)&&(o-=u),1!==Math.abs(c)&&(l-=c)}return y(r.left,r.top,o,l)}var g="undefined"!=typeof SVGGraphicsElement?function(e){return e instanceof d(e).SVGGraphicsElement}:function(e){return e instanceof d(e).SVGElement&&"function"==typeof e.getBBox};function b(e){return n?g(e)?function(e){var t=e.getBBox();return y(0,0,t.width,t.height)}(e):v(e):p}function y(e,t,i,n){return{x:e,y:t,width:i,height:n}}var w=function(){function e(e){this.broadcastWidth=0,this.broadcastHeight=0,this.contentRect_=y(0,0,0,0),this.target=e}return e.prototype.isActive=function(){var e=b(this.target);return this.contentRect_=e,e.width!==this.broadcastWidth||e.height!==this.broadcastHeight},e.prototype.broadcastRect=function(){var e=this.contentRect_;return this.broadcastWidth=e.width,this.broadcastHeight=e.height,e},e}(),_=function(){return function(e,t){var i,n,r,s,a,o,l,u=(n=(i=t).x,r=i.y,s=i.width,a=i.height,o="undefined"!=typeof DOMRectReadOnly?DOMRectReadOnly:Object,l=Object.create(o.prototype),h(l,{x:n,y:r,width:s,height:a,top:r,right:n+s,bottom:a+r,left:n}),l);h(this,{target:e,contentRect:u})}}(),x=function(){function e(e,t,n){if(this.activeObservations_=[],this.observations_=new i,"function"!=typeof e)throw new TypeError("The callback provided as parameter 1 is not a function.");this.callback_=e,this.controller_=t,this.callbackCtx_=n}return e.prototype.observe=function(e){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if("undefined"!=typeof Element&&Element instanceof Object){if(!(e instanceof d(e).Element))throw new TypeError('parameter 1 is not of type "Element".');var t=this.observations_;t.has(e)||(t.set(e,new w(e)),this.controller_.addObserver(this),this.controller_.refresh())}},e.prototype.unobserve=function(e){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if("undefined"!=typeof Element&&Element instanceof Object){if(!(e instanceof d(e).Element))throw new TypeError('parameter 1 is not of type "Element".');var t=this.observations_;t.has(e)&&(t.delete(e),t.size||this.controller_.removeObserver(this))}},e.prototype.disconnect=function(){this.clearActive(),this.observations_.clear(),this.controller_.removeObserver(this)},e.prototype.gatherActive=function(){var e=this;this.clearActive(),this.observations_.forEach(function(t){t.isActive()&&e.activeObservations_.push(t)})},e.prototype.broadcastActive=function(){if(this.hasActive()){var e=this.callbackCtx_,t=this.activeObservations_.map(function(e){return new _(e.target,e.broadcastRect())});this.callback_.call(e,t,e),this.clearActive()}},e.prototype.clearActive=function(){this.activeObservations_.splice(0)},e.prototype.hasActive=function(){return this.activeObservations_.length>0},e}(),C="undefined"!=typeof WeakMap?new WeakMap:new i,k=function(){return function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var i=c.getInstance(),n=new x(t,i,this);C.set(this,n)}}();["observe","unobserve","disconnect"].forEach(function(e){k.prototype[e]=function(){var t;return(t=C.get(this))[e].apply(t,arguments)}});var S=void 0!==r.ResizeObserver?r.ResizeObserver:k;t.a=S}).call(this,i(51))},function(e,t,i){e.exports=i(52)},function(e,t,i){e.exports=i(88)},function(e,t,i){var n,r;void 0===(r="function"==typeof(n=function(){"use strict";var e=window,t={placement:"bottom",gpuAcceleration:!0,offset:0,boundariesElement:"viewport",boundariesPadding:5,preventOverflowOrder:["left","right","top","bottom"],flipBehavior:"flip",arrowElement:"[x-arrow]",arrowOffset:0,modifiers:["shift","offset","preventOverflow","keepTogether","arrow","flip","applyStyle"],modifiersIgnored:[],forceAbsolute:!1};function i(e,i,n){this._reference=e.jquery?e[0]:e,this.state={};var r=null==i,s=i&&"[object Object]"===Object.prototype.toString.call(i);return this._popper=r||s?this.parse(s?i:{}):i.jquery?i[0]:i,this._options=Object.assign({},t,n),this._options.modifiers=this._options.modifiers.map(function(e){if(-1===this._options.modifiersIgnored.indexOf(e))return"applyStyle"===e&&this._popper.setAttribute("x-placement",this._options.placement),this.modifiers[e]||e}.bind(this)),this.state.position=this._getPosition(this._popper,this._reference),c(this._popper,{position:this.state.position,top:0}),this.update(),this._setupEventListeners(),this}function n(t){var i=t.style.display,n=t.style.visibility;t.style.display="block",t.style.visibility="hidden",t.offsetWidth;var r=e.getComputedStyle(t),s=parseFloat(r.marginTop)+parseFloat(r.marginBottom),a=parseFloat(r.marginLeft)+parseFloat(r.marginRight),o={width:t.offsetWidth+a,height:t.offsetHeight+s};return t.style.display=i,t.style.visibility=n,o}function r(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 s(e){var t=Object.assign({},e);return t.right=t.left+t.width,t.bottom=t.top+t.height,t}function a(e,t){var i,n=0;for(i in e){if(e[i]===t)return n;n++}return null}function o(t,i){var n=e.getComputedStyle(t,null);return n[i]}function l(t){var i=t.offsetParent;return i!==e.document.body&&i?i:e.document.documentElement}function u(t){var i=t.parentNode;return i?i===e.document?e.document.body.scrollTop||e.document.body.scrollLeft?e.document.body:e.document.documentElement:-1!==["scroll","auto"].indexOf(o(i,"overflow"))||-1!==["scroll","auto"].indexOf(o(i,"overflow-x"))||-1!==["scroll","auto"].indexOf(o(i,"overflow-y"))?i:u(t.parentNode):t}function c(e,t){Object.keys(t).forEach(function(i){var n,r="";-1!==["width","height","top","right","bottom","left"].indexOf(i)&&""!==(n=t[i])&&!isNaN(parseFloat(n))&&isFinite(n)&&(r="px"),e.style[i]=t[i]+r})}function h(e){var t={width:e.offsetWidth,height:e.offsetHeight,left:e.offsetLeft,top:e.offsetTop};return t.right=t.left+t.width,t.bottom=t.top+t.height,t}function d(e){var t=e.getBoundingClientRect(),i=-1!=navigator.userAgent.indexOf("MSIE"),n=i&&"HTML"===e.tagName?-e.scrollTop:t.top;return{left:t.left,top:n,right:t.right,bottom:t.bottom,width:t.right-t.left,height:t.bottom-n}}function p(t){for(var i=["","ms","webkit","moz","o"],n=0;n<i.length;n++){var r=i[n]?i[n]+t.charAt(0).toUpperCase()+t.slice(1):t;if(void 0!==e.document.body.style[r])return r}return null}return i.prototype.destroy=function(){return this._popper.removeAttribute("x-placement"),this._popper.style.left="",this._popper.style.position="",this._popper.style.top="",this._popper.style[p("transform")]="",this._removeEventListeners(),this._options.removeOnDestroy&&this._popper.remove(),this},i.prototype.update=function(){var e={instance:this,styles:{}};e.placement=this._options.placement,e._originalPlacement=this._options.placement,e.offsets=this._getOffsets(this._popper,this._reference,e.placement),e.boundaries=this._getBoundaries(e,this._options.boundariesPadding,this._options.boundariesElement),e=this.runModifiers(e,this._options.modifiers),"function"==typeof this.state.updateCallback&&this.state.updateCallback(e)},i.prototype.onCreate=function(e){return e(this),this},i.prototype.onUpdate=function(e){return this.state.updateCallback=e,this},i.prototype.parse=function(t){var i={tagName:"div",classNames:["popper"],attributes:[],parent:e.document.body,content:"",contentType:"text",arrowTagName:"div",arrowClassNames:["popper__arrow"],arrowAttributes:["x-arrow"]};t=Object.assign({},i,t);var n=e.document,r=n.createElement(t.tagName);if(o(r,t.classNames),l(r,t.attributes),"node"===t.contentType?r.appendChild(t.content.jquery?t.content[0]:t.content):"html"===t.contentType?r.innerHTML=t.content:r.textContent=t.content,t.arrowTagName){var s=n.createElement(t.arrowTagName);o(s,t.arrowClassNames),l(s,t.arrowAttributes),r.appendChild(s)}var a=t.parent.jquery?t.parent[0]:t.parent;if("string"==typeof a){if((a=n.querySelectorAll(t.parent)).length>1&&console.warn("WARNING: the given `parent` query("+t.parent+") matched more than one element, the first one will be used"),0===a.length)throw"ERROR: the given `parent` doesn't exists!";a=a[0]}return a.length>1&&a instanceof Element==0&&(console.warn("WARNING: you have passed as parent a list of elements, the first one will be used"),a=a[0]),a.appendChild(r),r;function o(e,t){t.forEach(function(t){e.classList.add(t)})}function l(e,t){t.forEach(function(t){e.setAttribute(t.split(":")[0],t.split(":")[1]||"")})}},i.prototype._getPosition=function(t,i){return l(i),this._options.forceAbsolute?"absolute":function t(i){return i!==e.document.body&&("fixed"===o(i,"position")||(i.parentNode?t(i.parentNode):i))}(i)?"fixed":"absolute"},i.prototype._getOffsets=function(e,t,i){i=i.split("-")[0];var r={};r.position=this.state.position;var s="fixed"===r.position,a=function(e,t,i){var n=d(e),r=d(t);if(i){var s=u(t);r.top+=s.scrollTop,r.bottom+=s.scrollTop,r.left+=s.scrollLeft,r.right+=s.scrollLeft}return{top:n.top-r.top,left:n.left-r.left,bottom:n.top-r.top+n.height,right:n.left-r.left+n.width,width:n.width,height:n.height}}(t,l(e),s),o=n(e);return-1!==["right","left"].indexOf(i)?(r.top=a.top+a.height/2-o.height/2,r.left="left"===i?a.left-o.width:a.right):(r.left=a.left+a.width/2-o.width/2,r.top="top"===i?a.top-o.height:a.bottom),r.width=o.width,r.height=o.height,{popper:r,reference:a}},i.prototype._setupEventListeners=function(){if(this.state.updateBound=this.update.bind(this),e.addEventListener("resize",this.state.updateBound),"window"!==this._options.boundariesElement){var t=u(this._reference);t!==e.document.body&&t!==e.document.documentElement||(t=e),t.addEventListener("scroll",this.state.updateBound),this.state.scrollTarget=t}},i.prototype._removeEventListeners=function(){e.removeEventListener("resize",this.state.updateBound),"window"!==this._options.boundariesElement&&this.state.scrollTarget&&(this.state.scrollTarget.removeEventListener("scroll",this.state.updateBound),this.state.scrollTarget=null),this.state.updateBound=null},i.prototype._getBoundaries=function(t,i,n){var r,s,a={};if("window"===n){var o=e.document.body,c=e.document.documentElement;r=Math.max(o.scrollHeight,o.offsetHeight,c.clientHeight,c.scrollHeight,c.offsetHeight),a={top:0,right:Math.max(o.scrollWidth,o.offsetWidth,c.clientWidth,c.scrollWidth,c.offsetWidth),bottom:r,left:0}}else if("viewport"===n){var d=l(this._popper),p=u(this._popper),f=h(d),m="fixed"===t.offsets.popper.position?0:(s=p)==document.body?Math.max(document.documentElement.scrollTop,document.body.scrollTop):s.scrollTop,v="fixed"===t.offsets.popper.position?0:function(e){return e==document.body?Math.max(document.documentElement.scrollLeft,document.body.scrollLeft):e.scrollLeft}(p);a={top:0-(f.top-m),right:e.document.documentElement.clientWidth-(f.left-v),bottom:e.document.documentElement.clientHeight-(f.top-m),left:0-(f.left-v)}}else a=l(this._popper)===n?{top:0,left:0,right:n.clientWidth,bottom:n.clientHeight}:h(n);return a.left+=i,a.right-=i,a.top=a.top+i,a.bottom=a.bottom-i,a},i.prototype.runModifiers=function(e,t,i){var n=t.slice();return void 0!==i&&(n=this._options.modifiers.slice(0,a(this._options.modifiers,i))),n.forEach(function(t){var i;(i=t)&&"[object Function]"==={}.toString.call(i)&&(e=t.call(this,e))}.bind(this)),e},i.prototype.isModifierRequired=function(e,t){var i=a(this._options.modifiers,e);return!!this._options.modifiers.slice(0,i).filter(function(e){return e===t}).length},i.prototype.modifiers={},i.prototype.modifiers.applyStyle=function(e){var t,i={position:e.offsets.popper.position},n=Math.round(e.offsets.popper.left),r=Math.round(e.offsets.popper.top);return this._options.gpuAcceleration&&(t=p("transform"))?(i[t]="translate3d("+n+"px, "+r+"px, 0)",i.top=0,i.left=0):(i.left=n,i.top=r),Object.assign(i,e.styles),c(this._popper,i),this._popper.setAttribute("x-placement",e.placement),this.isModifierRequired(this.modifiers.applyStyle,this.modifiers.arrow)&&e.offsets.arrow&&c(e.arrowElement,e.offsets.arrow),e},i.prototype.modifiers.shift=function(e){var t=e.placement,i=t.split("-")[0],n=t.split("-")[1];if(n){var r=e.offsets.reference,a=s(e.offsets.popper),o={y:{start:{top:r.top},end:{top:r.top+r.height-a.height}},x:{start:{left:r.left},end:{left:r.left+r.width-a.width}}},l=-1!==["bottom","top"].indexOf(i)?"x":"y";e.offsets.popper=Object.assign(a,o[l][n])}return e},i.prototype.modifiers.preventOverflow=function(e){var t=this._options.preventOverflowOrder,i=s(e.offsets.popper),n={left:function(){var t=i.left;return i.left<e.boundaries.left&&(t=Math.max(i.left,e.boundaries.left)),{left:t}},right:function(){var t=i.left;return i.right>e.boundaries.right&&(t=Math.min(i.left,e.boundaries.right-i.width)),{left:t}},top:function(){var t=i.top;return i.top<e.boundaries.top&&(t=Math.max(i.top,e.boundaries.top)),{top:t}},bottom:function(){var t=i.top;return i.bottom>e.boundaries.bottom&&(t=Math.min(i.top,e.boundaries.bottom-i.height)),{top:t}}};return t.forEach(function(t){e.offsets.popper=Object.assign(i,n[t]())}),e},i.prototype.modifiers.keepTogether=function(e){var t=s(e.offsets.popper),i=e.offsets.reference,n=Math.floor;return t.right<n(i.left)&&(e.offsets.popper.left=n(i.left)-t.width),t.left>n(i.right)&&(e.offsets.popper.left=n(i.right)),t.bottom<n(i.top)&&(e.offsets.popper.top=n(i.top)-t.height),t.top>n(i.bottom)&&(e.offsets.popper.top=n(i.bottom)),e},i.prototype.modifiers.flip=function(e){if(!this.isModifierRequired(this.modifiers.flip,this.modifiers.preventOverflow))return console.warn("WARNING: preventOverflow modifier is required by flip modifier in order to work, be sure to include it before flip!"),e;if(e.flipped&&e.placement===e._originalPlacement)return e;var t=e.placement.split("-")[0],i=r(t),n=e.placement.split("-")[1]||"",a=[];return(a="flip"===this._options.flipBehavior?[t,i]:this._options.flipBehavior).forEach(function(o,l){if(t===o&&a.length!==l+1){t=e.placement.split("-")[0],i=r(t);var u=s(e.offsets.popper),c=-1!==["right","bottom"].indexOf(t);(c&&Math.floor(e.offsets.reference[t])>Math.floor(u[i])||!c&&Math.floor(e.offsets.reference[t])<Math.floor(u[i]))&&(e.flipped=!0,e.placement=a[l+1],n&&(e.placement+="-"+n),e.offsets.popper=this._getOffsets(this._popper,this._reference,e.placement).popper,e=this.runModifiers(e,this._options.modifiers,this._flip))}}.bind(this)),e},i.prototype.modifiers.offset=function(e){var t=this._options.offset,i=e.offsets.popper;return-1!==e.placement.indexOf("left")?i.top-=t:-1!==e.placement.indexOf("right")?i.top+=t:-1!==e.placement.indexOf("top")?i.left-=t:-1!==e.placement.indexOf("bottom")&&(i.left+=t),e},i.prototype.modifiers.arrow=function(e){var t=this._options.arrowElement,i=this._options.arrowOffset;if("string"==typeof t&&(t=this._popper.querySelector(t)),!t)return e;if(!this._popper.contains(t))return console.warn("WARNING: `arrowElement` must be child of its popper element!"),e;if(!this.isModifierRequired(this.modifiers.arrow,this.modifiers.keepTogether))return console.warn("WARNING: keepTogether modifier is required by arrow modifier in order to work, be sure to include it before arrow!"),e;var r={},a=e.placement.split("-")[0],o=s(e.offsets.popper),l=e.offsets.reference,u=-1!==["left","right"].indexOf(a),c=u?"height":"width",h=u?"top":"left",d=u?"left":"top",p=u?"bottom":"right",f=n(t)[c];l[p]-f<o[h]&&(e.offsets.popper[h]-=o[h]-(l[p]-f)),l[h]+f>o[p]&&(e.offsets.popper[h]+=l[h]+f-o[p]);var m=l[h]+(i||l[c]/2-f/2)-o[h];return m=Math.max(Math.min(o[c]-f-8,m),8),r[h]=m,r[d]="",e.offsets.arrow=r,e.arrowElement=t,e},Object.assign||Object.defineProperty(Object,"assign",{enumerable:!1,configurable:!0,writable:!0,value:function(e){if(null==e)throw new TypeError("Cannot convert first argument to object");for(var t=Object(e),i=1;i<arguments.length;i++){var n=arguments[i];if(null!=n){n=Object(n);for(var r=Object.keys(n),s=0,a=r.length;s<a;s++){var o=r[s],l=Object.getOwnPropertyDescriptor(n,o);void 0!==l&&l.enumerable&&(t[o]=n[o])}}}return t}}),i})?n.call(t,i,t,e):n)||(e.exports=r)},function(e,t){var i;i=function(){return this}();try{i=i||new Function("return this")()}catch(e){"object"==typeof window&&(i=window)}e.exports=i},function(e,t,i){"use strict";var n=i(53),r=i(54),s=10,a=40,o=800;function l(e){var t=0,i=0,n=0,r=0;return"detail"in e&&(i=e.detail),"wheelDelta"in e&&(i=-e.wheelDelta/120),"wheelDeltaY"in e&&(i=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=i,i=0),n=t*s,r=i*s,"deltaY"in e&&(r=e.deltaY),"deltaX"in e&&(n=e.deltaX),(n||r)&&e.deltaMode&&(1==e.deltaMode?(n*=a,r*=a):(n*=o,r*=o)),n&&!t&&(t=n<1?-1:1),r&&!i&&(i=r<1?-1:1),{spinX:t,spinY:i,pixelX:n,pixelY:r}}l.getEventType=function(){return n.firefox()?"DOMMouseScroll":r("wheel")?"wheel":"mousewheel"},e.exports=l},function(e,t){var i,n,r,s,a,o,l,u,c,h,d,p,f,m,v,g=!1;function b(){if(!g){g=!0;var e=navigator.userAgent,t=/(?:MSIE.(\d+\.\d+))|(?:(?:Firefox|GranParadiso|Iceweasel).(\d+\.\d+))|(?:Opera(?:.+Version.|.)(\d+\.\d+))|(?:AppleWebKit.(\d+(?:\.\d+)?))|(?:Trident\/\d+\.\d+.*rv:(\d+\.\d+))/.exec(e),b=/(Mac OS X)|(Windows)|(Linux)/.exec(e);if(p=/\b(iPhone|iP[ao]d)/.exec(e),f=/\b(iP[ao]d)/.exec(e),h=/Android/i.exec(e),m=/FBAN\/\w+;/i.exec(e),v=/Mobile/i.exec(e),d=!!/Win64/.exec(e),t){(i=t[1]?parseFloat(t[1]):t[5]?parseFloat(t[5]):NaN)&&document&&document.documentMode&&(i=document.documentMode);var y=/(?:Trident\/(\d+.\d+))/.exec(e);o=y?parseFloat(y[1])+4:i,n=t[2]?parseFloat(t[2]):NaN,r=t[3]?parseFloat(t[3]):NaN,(s=t[4]?parseFloat(t[4]):NaN)?(t=/(?:Chrome\/(\d+\.\d+))/.exec(e),a=t&&t[1]?parseFloat(t[1]):NaN):a=NaN}else i=n=r=a=s=NaN;if(b){if(b[1]){var w=/(?:Mac OS X (\d+(?:[._]\d+)?))/.exec(e);l=!w||parseFloat(w[1].replace("_","."))}else l=!1;u=!!b[2],c=!!b[3]}else l=u=c=!1}}var y={ie:function(){return b()||i},ieCompatibilityMode:function(){return b()||o>i},ie64:function(){return y.ie()&&d},firefox:function(){return b()||n},opera:function(){return b()||r},webkit:function(){return b()||s},safari:function(){return y.webkit()},chrome:function(){return b()||a},windows:function(){return b()||u},osx:function(){return b()||l},linux:function(){return b()||c},iphone:function(){return b()||p},mobile:function(){return b()||p||f||h||v},nativeApp:function(){return b()||m},android:function(){return b()||h},ipad:function(){return b()||f}};e.exports=y},function(e,t,i){"use strict";var n,r=i(55);r.canUseDOM&&(n=document.implementation&&document.implementation.hasFeature&&!0!==document.implementation.hasFeature("","")),e.exports=function(e,t){if(!r.canUseDOM||t&&!("addEventListener"in document))return!1;var i="on"+e,s=i in document;if(!s){var a=document.createElement("div");a.setAttribute(i,"return;"),s="function"==typeof a[i]}return!s&&n&&"wheel"===e&&(s=document.implementation.hasFeature("Events.wheel","3.0")),s}},function(e,t,i){"use strict";var n=!("undefined"==typeof window||!window.document||!window.document.createElement),r={canUseDOM:n,canUseWorkers:"undefined"!=typeof Worker,canUseEventListeners:n&&!(!window.addEventListener&&!window.attachEvent),canUseViewport:n&&!!window.screen,isInWorker:!n};e.exports=r},function(e,t,i){e.exports={default:i(57),__esModule:!0}},function(e,t,i){i(58),e.exports=i(14).Object.assign},function(e,t,i){var n=i(23);n(n.S+n.F,"Object",{assign:i(61)})},function(e,t,i){var n=i(60);e.exports=function(e,t,i){if(n(e),void 0===t)return e;switch(i){case 1:return function(i){return e.call(t,i)};case 2:return function(i,n){return e.call(t,i,n)};case 3:return function(i,n,r){return e.call(t,i,n,r)}}return function(){return e.apply(t,arguments)}}},function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,t,i){"use strict";var n=i(19),r=i(30),s=i(22),a=i(41),o=i(39),l=Object.assign;e.exports=!l||i(16)(function(){var e={},t={},i=Symbol(),n="abcdefghijklmnopqrst";return e[i]=7,n.split("").forEach(function(e){t[e]=e}),7!=l({},e)[i]||Object.keys(l({},t)).join("")!=n})?function(e,t){for(var i=a(e),l=arguments.length,u=1,c=r.f,h=s.f;l>u;)for(var d,p=o(arguments[u++]),f=c?n(p).concat(c(p)):n(p),m=f.length,v=0;m>v;)h.call(p,d=f[v++])&&(i[d]=p[d]);return i}:l},function(e,t,i){var n=i(12),r=i(63),s=i(64);e.exports=function(e){return function(t,i,a){var o,l=n(t),u=r(l.length),c=s(a,u);if(e&&i!=i){for(;u>c;)if((o=l[c++])!=o)return!0}else for(;u>c;c++)if((e||c in l)&&l[c]===i)return e||c||0;return!e&&-1}}},function(e,t,i){var n=i(26),r=Math.min;e.exports=function(e){return e>0?r(n(e),9007199254740991):0}},function(e,t,i){var n=i(26),r=Math.max,s=Math.min;e.exports=function(e,t){return(e=n(e))<0?r(e+t,0):s(e,t)}},function(e,t,i){e.exports={default:i(66),__esModule:!0}},function(e,t,i){i(67),i(73),e.exports=i(33).f("iterator")},function(e,t,i){"use strict";var n=i(68)(!0);i(42)(String,"String",function(e){this._t=String(e),this._i=0},function(){var e,t=this._t,i=this._i;return i>=t.length?{value:void 0,done:!0}:(e=n(t,i),this._i+=e.length,{value:e,done:!1})})},function(e,t,i){var n=i(26),r=i(25);e.exports=function(e){return function(t,i){var s,a,o=String(r(t)),l=n(i),u=o.length;return l<0||l>=u?e?"":void 0:(s=o.charCodeAt(l))<55296||s>56319||l+1===u||(a=o.charCodeAt(l+1))<56320||a>57343?e?o.charAt(l):s:e?o.slice(l,l+2):a-56320+(s-55296<<10)+65536}}},function(e,t,i){"use strict";var n=i(44),r=i(18),s=i(32),a={};i(9)(a,i(13)("iterator"),function(){return this}),e.exports=function(e,t,i){e.prototype=n(a,{next:r(1,i)}),s(e,t+" Iterator")}},function(e,t,i){var n=i(10),r=i(17),s=i(19);e.exports=i(11)?Object.defineProperties:function(e,t){r(e);for(var i,a=s(t),o=a.length,l=0;o>l;)n.f(e,i=a[l++],t[i]);return e}},function(e,t,i){var n=i(5).document;e.exports=n&&n.documentElement},function(e,t,i){var n=i(7),r=i(41),s=i(27)("IE_PROTO"),a=Object.prototype;e.exports=Object.getPrototypeOf||function(e){return e=r(e),n(e,s)?e[s]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?a:null}},function(e,t,i){i(74);for(var n=i(5),r=i(9),s=i(31),a=i(13)("toStringTag"),o="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),l=0;l<o.length;l++){var u=o[l],c=n[u],h=c&&c.prototype;h&&!h[a]&&r(h,a,u),s[u]=s.Array}},function(e,t,i){"use strict";var n=i(75),r=i(76),s=i(31),a=i(12);e.exports=i(42)(Array,"Array",function(e,t){this._t=a(e),this._i=0,this._k=t},function(){var e=this._t,t=this._k,i=this._i++;return!e||i>=e.length?(this._t=void 0,r(1)):r(0,"keys"==t?i:"values"==t?e[i]:[i,e[i]])},"values"),s.Arguments=s.Array,n("keys"),n("values"),n("entries")},function(e,t){e.exports=function(){}},function(e,t){e.exports=function(e,t){return{value:t,done:!!e}}},function(e,t,i){e.exports={default:i(78),__esModule:!0}},function(e,t,i){i(79),i(85),i(86),i(87),e.exports=i(14).Symbol},function(e,t,i){"use strict";var n=i(5),r=i(7),s=i(11),a=i(23),o=i(43),l=i(80).KEY,u=i(16),c=i(28),h=i(32),d=i(21),p=i(13),f=i(33),m=i(34),v=i(81),g=i(82),b=i(17),y=i(15),w=i(12),_=i(24),x=i(18),C=i(44),k=i(83),S=i(84),D=i(10),$=i(19),E=S.f,T=D.f,M=k.f,N=n.Symbol,P=n.JSON,O=P&&P.stringify,I=p("_hidden"),A=p("toPrimitive"),F={}.propertyIsEnumerable,L=c("symbol-registry"),V=c("symbols"),B=c("op-symbols"),z=Object.prototype,H="function"==typeof N,R=n.QObject,W=!R||!R.prototype||!R.prototype.findChild,j=s&&u(function(){return 7!=C(T({},"a",{get:function(){return T(this,"a",{value:7}).a}})).a})?function(e,t,i){var n=E(z,t);n&&delete z[t],T(e,t,i),n&&e!==z&&T(z,t,n)}:T,q=function(e){var t=V[e]=C(N.prototype);return t._k=e,t},Y=H&&"symbol"==typeof N.iterator?function(e){return"symbol"==typeof e}:function(e){return e instanceof N},K=function(e,t,i){return e===z&&K(B,t,i),b(e),t=_(t,!0),b(i),r(V,t)?(i.enumerable?(r(e,I)&&e[I][t]&&(e[I][t]=!1),i=C(i,{enumerable:x(0,!1)})):(r(e,I)||T(e,I,x(1,{})),e[I][t]=!0),j(e,t,i)):T(e,t,i)},G=function(e,t){b(e);for(var i,n=v(t=w(t)),r=0,s=n.length;s>r;)K(e,i=n[r++],t[i]);return e},U=function(e){var t=F.call(this,e=_(e,!0));return!(this===z&&r(V,e)&&!r(B,e))&&(!(t||!r(this,e)||!r(V,e)||r(this,I)&&this[I][e])||t)},X=function(e,t){if(e=w(e),t=_(t,!0),e!==z||!r(V,t)||r(B,t)){var i=E(e,t);return!i||!r(V,t)||r(e,I)&&e[I][t]||(i.enumerable=!0),i}},J=function(e){for(var t,i=M(w(e)),n=[],s=0;i.length>s;)r(V,t=i[s++])||t==I||t==l||n.push(t);return n},Z=function(e){for(var t,i=e===z,n=M(i?B:w(e)),s=[],a=0;n.length>a;)!r(V,t=n[a++])||i&&!r(z,t)||s.push(V[t]);return s};H||(o((N=function(){if(this instanceof N)throw TypeError("Symbol is not a constructor!");var e=d(arguments.length>0?arguments[0]:void 0),t=function(i){this===z&&t.call(B,i),r(this,I)&&r(this[I],e)&&(this[I][e]=!1),j(this,e,x(1,i))};return s&&W&&j(z,e,{configurable:!0,set:t}),q(e)}).prototype,"toString",function(){return this._k}),S.f=X,D.f=K,i(45).f=k.f=J,i(22).f=U,i(30).f=Z,s&&!i(20)&&o(z,"propertyIsEnumerable",U,!0),f.f=function(e){return q(p(e))}),a(a.G+a.W+a.F*!H,{Symbol:N});for(var Q="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),ee=0;Q.length>ee;)p(Q[ee++]);for(var te=$(p.store),ie=0;te.length>ie;)m(te[ie++]);a(a.S+a.F*!H,"Symbol",{for:function(e){return r(L,e+="")?L[e]:L[e]=N(e)},keyFor:function(e){if(!Y(e))throw TypeError(e+" is not a symbol!");for(var t in L)if(L[t]===e)return t},useSetter:function(){W=!0},useSimple:function(){W=!1}}),a(a.S+a.F*!H,"Object",{create:function(e,t){return void 0===t?C(e):G(C(e),t)},defineProperty:K,defineProperties:G,getOwnPropertyDescriptor:X,getOwnPropertyNames:J,getOwnPropertySymbols:Z}),P&&a(a.S+a.F*(!H||u(function(){var e=N();return"[null]"!=O([e])||"{}"!=O({a:e})||"{}"!=O(Object(e))})),"JSON",{stringify:function(e){for(var t,i,n=[e],r=1;arguments.length>r;)n.push(arguments[r++]);if(i=t=n[1],(y(t)||void 0!==e)&&!Y(e))return g(t)||(t=function(e,t){if("function"==typeof i&&(t=i.call(this,e,t)),!Y(t))return t}),n[1]=t,O.apply(P,n)}}),N.prototype[A]||i(9)(N.prototype,A,N.prototype.valueOf),h(N,"Symbol"),h(Math,"Math",!0),h(n.JSON,"JSON",!0)},function(e,t,i){var n=i(21)("meta"),r=i(15),s=i(7),a=i(10).f,o=0,l=Object.isExtensible||function(){return!0},u=!i(16)(function(){return l(Object.preventExtensions({}))}),c=function(e){a(e,n,{value:{i:"O"+ ++o,w:{}}})},h=e.exports={KEY:n,NEED:!1,fastKey:function(e,t){if(!r(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!s(e,n)){if(!l(e))return"F";if(!t)return"E";c(e)}return e[n].i},getWeak:function(e,t){if(!s(e,n)){if(!l(e))return!0;if(!t)return!1;c(e)}return e[n].w},onFreeze:function(e){return u&&h.NEED&&l(e)&&!s(e,n)&&c(e),e}}},function(e,t,i){var n=i(19),r=i(30),s=i(22);e.exports=function(e){var t=n(e),i=r.f;if(i)for(var a,o=i(e),l=s.f,u=0;o.length>u;)l.call(e,a=o[u++])&&t.push(a);return t}},function(e,t,i){var n=i(40);e.exports=Array.isArray||function(e){return"Array"==n(e)}},function(e,t,i){var n=i(12),r=i(45).f,s={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];e.exports.f=function(e){return a&&"[object Window]"==s.call(e)?function(e){try{return r(e)}catch(e){return a.slice()}}(e):r(n(e))}},function(e,t,i){var n=i(22),r=i(18),s=i(12),a=i(24),o=i(7),l=i(36),u=Object.getOwnPropertyDescriptor;t.f=i(11)?u:function(e,t){if(e=s(e),t=a(t,!0),l)try{return u(e,t)}catch(e){}if(o(e,t))return r(!n.f.call(e,t),e[t])}},function(e,t){},function(e,t,i){i(34)("asyncIterator")},function(e,t,i){i(34)("observable")},function(e,t,i){"use strict";i.r(t);var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("ul",{staticClass:"el-pager",on:{click:e.onPagerClick}},[e.pageCount>0?i("li",{staticClass:"number",class:{active:1===e.currentPage,disabled:e.disabled}},[e._v("1")]):e._e(),e.showPrevMore?i("li",{staticClass:"el-icon more btn-quickprev",class:[e.quickprevIconClass,{disabled:e.disabled}],on:{mouseenter:function(t){e.onMouseenter("left")},mouseleave:function(t){e.quickprevIconClass="el-icon-more"}}}):e._e(),e._l(e.pagers,function(t){return i("li",{key:t,staticClass:"number",class:{active:e.currentPage===t,disabled:e.disabled}},[e._v(e._s(t))])}),e.showNextMore?i("li",{staticClass:"el-icon more btn-quicknext",class:[e.quicknextIconClass,{disabled:e.disabled}],on:{mouseenter:function(t){e.onMouseenter("right")},mouseleave:function(t){e.quicknextIconClass="el-icon-more"}}}):e._e(),e.pageCount>1?i("li",{staticClass:"number",class:{active:e.currentPage===e.pageCount,disabled:e.disabled}},[e._v(e._s(e.pageCount))]):e._e()],2)};function r(e,t,i,n,r,s,a,o){var l,u="function"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=i,u._compiled=!0),n&&(u.functional=!0),s&&(u._scopeId="data-v-"+s),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},u._ssrRegister=l):r&&(l=o?function(){r.call(this,this.$root.$options.shadowRoot)}:r),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var h=u.beforeCreate;u.beforeCreate=h?[].concat(h,l):[l]}return{exports:e,options:u}}n._withStripped=!0;var s=r({name:"ElPager",props:{currentPage:Number,pageCount:Number,pagerCount:Number,disabled:Boolean},watch:{showPrevMore:function(e){e||(this.quickprevIconClass="el-icon-more")},showNextMore:function(e){e||(this.quicknextIconClass="el-icon-more")}},methods:{onPagerClick:function(e){var t=e.target;if("UL"!==t.tagName&&!this.disabled){var i=Number(e.target.textContent),n=this.pageCount,r=this.currentPage,s=this.pagerCount-2;-1!==t.className.indexOf("more")&&(-1!==t.className.indexOf("quickprev")?i=r-s:-1!==t.className.indexOf("quicknext")&&(i=r+s)),isNaN(i)||(i<1&&(i=1),i>n&&(i=n)),i!==r&&this.$emit("change",i)}},onMouseenter:function(e){this.disabled||("left"===e?this.quickprevIconClass="el-icon-d-arrow-left":this.quicknextIconClass="el-icon-d-arrow-right")}},computed:{pagers:function(){var e=this.pagerCount,t=(e-1)/2,i=Number(this.currentPage),n=Number(this.pageCount),r=!1,s=!1;n>e&&(i>e-t&&(r=!0),i<n-t&&(s=!0));var a=[];if(r&&!s)for(var o=n-(e-2);o<n;o++)a.push(o);else if(!r&&s)for(var l=2;l<e;l++)a.push(l);else if(r&&s)for(var u=Math.floor(e/2)-1,c=i-u;c<=i+u;c++)a.push(c);else for(var h=2;h<n;h++)a.push(h);return this.showPrevMore=r,this.showNextMore=s,a}},data:function(){return{current:null,showPrevMore:!1,showNextMore:!1,quicknextIconClass:"el-icon-more",quickprevIconClass:"el-icon-more"}}},n,[],!1,null,null,null);s.options.__file="packages/pagination/src/pager.vue";var a=s.exports,o=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleClose,expression:"handleClose"}],staticClass:"el-select",class:[e.selectSize?"el-select--"+e.selectSize:""],on:{click:function(t){return t.stopPropagation(),e.toggleMenu(t)}}},[e.multiple?i("div",{ref:"tags",staticClass:"el-select__tags",style:{"max-width":e.inputWidth-32+"px",width:"100%"}},[e.collapseTags&&e.selected.length?i("span",[i("el-tag",{attrs:{closable:!e.selectDisabled,size:e.collapseTagSize,hit:e.selected[0].hitState,type:"info","disable-transitions":""},on:{close:function(t){e.deleteTag(t,e.selected[0])}}},[i("span",{staticClass:"el-select__tags-text"},[e._v(e._s(e.selected[0].currentLabel))])]),e.selected.length>1?i("el-tag",{attrs:{closable:!1,size:e.collapseTagSize,type:"info","disable-transitions":""}},[i("span",{staticClass:"el-select__tags-text"},[e._v("+ "+e._s(e.selected.length-1))])]):e._e()],1):e._e(),e.collapseTags?e._e():i("transition-group",{on:{"after-leave":e.resetInputHeight}},e._l(e.selected,function(t){return i("el-tag",{key:e.getValueKey(t),attrs:{closable:!e.selectDisabled,size:e.collapseTagSize,hit:t.hitState,type:"info","disable-transitions":""},on:{close:function(i){e.deleteTag(i,t)}}},[i("span",{staticClass:"el-select__tags-text"},[e._v(e._s(t.currentLabel))])])}),1),e.filterable?i("input",{directives:[{name:"model",rawName:"v-model",value:e.query,expression:"query"}],ref:"input",staticClass:"el-select__input",class:[e.selectSize?"is-"+e.selectSize:""],style:{"flex-grow":"1",width:e.inputLength/(e.inputWidth-32)+"%","max-width":e.inputWidth-42+"px"},attrs:{type:"text",disabled:e.selectDisabled,autocomplete:e.autoComplete||e.autocomplete},domProps:{value:e.query},on:{focus:e.handleFocus,blur:function(t){e.softFocus=!1},keyup:e.managePlaceholder,keydown:[e.resetInputState,function(t){if(!("button"in t)&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"]))return null;t.preventDefault(),e.navigateOptions("next")},function(t){if(!("button"in t)&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"]))return null;t.preventDefault(),e.navigateOptions("prev")},function(t){return"button"in t||!e._k(t.keyCode,"enter",13,t.key,"Enter")?(t.preventDefault(),e.selectOption(t)):null},function(t){if(!("button"in t)&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"]))return null;t.stopPropagation(),t.preventDefault(),e.visible=!1},function(t){return"button"in t||!e._k(t.keyCode,"delete",[8,46],t.key,["Backspace","Delete","Del"])?e.deletePrevTag(t):null},function(t){if(!("button"in t)&&e._k(t.keyCode,"tab",9,t.key,"Tab"))return null;e.visible=!1}],compositionstart:e.handleComposition,compositionupdate:e.handleComposition,compositionend:e.handleComposition,input:[function(t){t.target.composing||(e.query=t.target.value)},e.debouncedQueryChange]}}):e._e()],1):e._e(),i("el-input",{ref:"reference",class:{"is-focus":e.visible},attrs:{type:"text",placeholder:e.currentPlaceholder,name:e.name,id:e.id,autocomplete:e.autoComplete||e.autocomplete,size:e.selectSize,disabled:e.selectDisabled,readonly:e.readonly,"validate-event":!1,tabindex:e.multiple&&e.filterable?"-1":null},on:{focus:e.handleFocus,blur:e.handleBlur},nativeOn:{keyup:function(t){return e.debouncedOnInputChange(t)},keydown:[function(t){if(!("button"in t)&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"]))return null;t.stopPropagation(),t.preventDefault(),e.navigateOptions("next")},function(t){if(!("button"in t)&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"]))return null;t.stopPropagation(),t.preventDefault(),e.navigateOptions("prev")},function(t){return"button"in t||!e._k(t.keyCode,"enter",13,t.key,"Enter")?(t.preventDefault(),e.selectOption(t)):null},function(t){if(!("button"in t)&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"]))return null;t.stopPropagation(),t.preventDefault(),e.visible=!1},function(t){if(!("button"in t)&&e._k(t.keyCode,"tab",9,t.key,"Tab"))return null;e.visible=!1}],paste:function(t){return e.debouncedOnInputChange(t)},mouseenter:function(t){e.inputHovering=!0},mouseleave:function(t){e.inputHovering=!1}},model:{value:e.selectedLabel,callback:function(t){e.selectedLabel=t},expression:"selectedLabel"}},[e.$slots.prefix?i("template",{slot:"prefix"},[e._t("prefix")],2):e._e(),i("template",{slot:"suffix"},[i("i",{directives:[{name:"show",rawName:"v-show",value:!e.showClose,expression:"!showClose"}],class:["el-select__caret","el-input__icon","el-icon-"+e.iconClass]}),e.showClose?i("i",{staticClass:"el-select__caret el-input__icon el-icon-circle-close",on:{click:e.handleClearClick}}):e._e()])],2),i("transition",{attrs:{name:"el-zoom-in-top"},on:{"before-enter":e.handleMenuEnter,"after-leave":e.doDestroy}},[i("el-select-menu",{directives:[{name:"show",rawName:"v-show",value:e.visible&&!1!==e.emptyText,expression:"visible && emptyText !== false"}],ref:"popper",attrs:{"append-to-body":e.popperAppendToBody}},[i("el-scrollbar",{directives:[{name:"show",rawName:"v-show",value:e.options.length>0&&!e.loading,expression:"options.length > 0 && !loading"}],ref:"scrollbar",class:{"is-empty":!e.allowCreate&&e.query&&0===e.filteredOptionsCount},attrs:{tag:"ul","wrap-class":"el-select-dropdown__wrap","view-class":"el-select-dropdown__list"}},[e.showNewOption?i("el-option",{attrs:{value:e.query,created:""}}):e._e(),e._t("default")],2),e.emptyText&&(!e.allowCreate||e.loading||e.allowCreate&&0===e.options.length)?[e.$slots.empty?e._t("empty"):i("p",{staticClass:"el-select-dropdown__empty"},[e._v("\n          "+e._s(e.emptyText)+"\n        ")])]:e._e()],2)],1)],1)};o._withStripped=!0;var l={methods:{dispatch:function(e,t,i){for(var n=this.$parent||this.$root,r=n.$options.componentName;n&&(!r||r!==e);)(n=n.$parent)&&(r=n.$options.componentName);n&&n.$emit.apply(n,[t].concat(i))},broadcast:function(e,t,i){(function e(t,i,n){this.$children.forEach(function(r){r.$options.componentName===t?r.$emit.apply(r,[i].concat(n)):e.apply(r,[t,i].concat([n]))})}).call(this,e,t,i)}}},u=function(e){return{methods:{focus:function(){this.$refs[e].focus()}}}},c=i(0),h=i.n(c),d=i(46),p=i.n(d);function f(e){return"[object String]"===Object.prototype.toString.call(e)}function m(e){return"[object Object]"===Object.prototype.toString.call(e)}function v(e){return e&&e.nodeType===Node.ELEMENT_NODE}var g=function(e){return e&&"[object Function]"==={}.toString.call(e)},b=function(e){return void 0===e},y="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},w=Object.prototype.hasOwnProperty;function _(){}function x(e,t){return w.call(e,t)}function C(e,t){for(var i in t)e[i]=t[i];return e}var k=function(e,t){for(var i=(t=t||"").split("."),n=e,r=null,s=0,a=i.length;s<a;s++){var o=i[s];if(!n)break;if(s===a-1){r=n[o];break}n=n[o]}return r};function S(e,t,i){for(var n=e,r=(t=(t=t.replace(/\[(\w+)\]/g,".$1")).replace(/^\./,"")).split("."),s=0,a=r.length;s<a-1&&(n||i);++s){var o=r[s];if(!(o in n)){if(i)throw new Error("please transfer a valid prop path to form item!");break}n=n[o]}return{o:n,k:r[s],v:n?n[r[s]]:null}}var D=function(){return Math.floor(1e4*Math.random())},$=function(e,t){if(e===t)return!0;if(!(e instanceof Array))return!1;if(!(t instanceof Array))return!1;if(e.length!==t.length)return!1;for(var i=0;i!==e.length;++i)if(e[i]!==t[i])return!1;return!0},E=function(e,t){for(var i=0;i!==e.length;++i)if(t(e[i]))return i;return-1},T=function(e,t){var i=E(e,t);return-1!==i?e[i]:void 0},M=function(e){return Array.isArray(e)?e:e?[e]:[]},N=function(e){var t=/([^-])([A-Z])/g;return e.replace(t,"$1-$2").replace(t,"$1-$2").toLowerCase()},P=function(e){return f(e)?e.charAt(0).toUpperCase()+e.slice(1):e},O=function(e,t){var i=m(e),n=m(t);return i&&n?JSON.stringify(e)===JSON.stringify(t):!i&&!n&&String(e)===String(t)},I=function(e,t){return Array.isArray(e)&&Array.isArray(t)?function(e,t){if(t=t||[],(e=e||[]).length!==t.length)return!1;for(var i=0;i<e.length;i++)if(!O(e[i],t[i]))return!1;return!0}(e,t):O(e,t)},A=function(e){if(null==e)return!0;if("boolean"==typeof e)return!1;if("number"==typeof e)return!e;if(e instanceof Error)return""===e.message;switch(Object.prototype.toString.call(e)){case"[object String]":case"[object Array]":return!e.length;case"[object File]":case"[object Map]":case"[object Set]":return!e.size;case"[object Object]":return!Object.keys(e).length}return!1};function F(e){var t=!1;return function(){for(var i=this,n=arguments.length,r=Array(n),s=0;s<n;s++)r[s]=arguments[s];t||(t=!0,window.requestAnimationFrame(function(n){e.apply(i,r),t=!1}))}}var 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},V=/(%|)\{([0-9a-zA-Z_]+)\}/g,B=function(e){return function(e){for(var t=arguments.length,i=Array(t>1?t-1:0),n=1;n<t;n++)i[n-1]=arguments[n];return 1===i.length&&"object"===L(i[0])&&(i=i[0]),i&&i.hasOwnProperty||(i={}),e.replace(V,function(t,n,r,s){var a=void 0;return"{"===e[s-1]&&"}"===e[s+t.length]?r:null==(a=x(i,r)?i[r]:null)?"":a})}}(h.a),z={el:{colorpicker:{confirm:"确定",clear:"清空"},datepicker:{now:"此刻",today:"今天",cancel:"取消",clear:"清空",confirm:"确定",selectDate:"选择日期",selectTime:"选择时间",startDate:"开始日期",startTime:"开始时间",endDate:"结束日期",endTime:"结束时间",prevYear:"前一年",nextYear:"后一年",prevMonth:"上个月",nextMonth:"下个月",year:"年",month1:"1 月",month2:"2 月",month3:"3 月",month4:"4 月",month5:"5 月",month6:"6 月",month7:"7 月",month8:"8 月",month9:"9 月",month10:"10 月",month11:"11 月",month12:"12 月",weeks:{sun:"日",mon:"一",tue:"二",wed:"三",thu:"四",fri:"五",sat:"六"},months:{jan:"一月",feb:"二月",mar:"三月",apr:"四月",may:"五月",jun:"六月",jul:"七月",aug:"八月",sep:"九月",oct:"十月",nov:"十一月",dec:"十二月"}},select:{loading:"加载中",noMatch:"无匹配数据",noData:"无数据",placeholder:"请选择"},cascader:{noMatch:"无匹配数据",loading:"加载中",placeholder:"请选择",noData:"暂无数据"},pagination:{goto:"前往",pagesize:"条/页",total:"共 {total} 条",pageClassifier:"页"},messagebox:{title:"提示",confirm:"确定",cancel:"取消",error:"输入的数据不合法!"},upload:{deleteTip:"按 delete 键可删除",delete:"删除",preview:"查看图片",continue:"继续上传"},table:{emptyText:"暂无数据",confirmFilter:"筛选",resetFilter:"重置",clearFilter:"全部",sumText:"合计"},tree:{emptyText:"暂无数据"},transfer:{noMatch:"无匹配数据",noData:"无数据",titles:["列表 1","列表 2"],filterPlaceholder:"请输入搜索内容",noCheckedFormat:"共 {total} 项",hasCheckedFormat:"已选 {checked}/{total} 项"},image:{error:"加载失败"},pageHeader:{title:"返回"},popconfirm:{confirmButtonText:"确定",cancelButtonText:"取消"}}},H=!1,R=function(){var e=Object.getPrototypeOf(this||h.a).$t;if("function"==typeof e&&h.a.locale)return H||(H=!0,h.a.locale(h.a.config.lang,p()(z,h.a.locale(h.a.config.lang)||{},{clone:!0}))),e.apply(this,arguments)},W=function(e,t){var i=R.apply(this,arguments);if(null!=i)return i;for(var n=e.split("."),r=z,s=0,a=n.length;s<a;s++){if(i=r[n[s]],s===a-1)return B(i,t);if(!i)return"";r=i}return""},j={use:function(e){z=e||z},t:W,i18n:function(e){R=e||R}},q={methods:{t:function(){for(var e=arguments.length,t=Array(e),i=0;i<e;i++)t[i]=arguments[i];return W.apply(this,t)}}},Y=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{class:["textarea"===e.type?"el-textarea":"el-input",e.inputSize?"el-input--"+e.inputSize:"",{"is-disabled":e.inputDisabled,"is-exceed":e.inputExceed,"el-input-group":e.$slots.prepend||e.$slots.append,"el-input-group--append":e.$slots.append,"el-input-group--prepend":e.$slots.prepend,"el-input--prefix":e.$slots.prefix||e.prefixIcon,"el-input--suffix":e.$slots.suffix||e.suffixIcon||e.clearable||e.showPassword}],on:{mouseenter:function(t){e.hovering=!0},mouseleave:function(t){e.hovering=!1}}},["textarea"!==e.type?[e.$slots.prepend?i("div",{staticClass:"el-input-group__prepend"},[e._t("prepend")],2):e._e(),"textarea"!==e.type?i("input",e._b({ref:"input",staticClass:"el-input__inner",attrs:{tabindex:e.tabindex,type:e.showPassword?e.passwordVisible?"text":"password":e.type,disabled:e.inputDisabled,readonly:e.readonly,autocomplete:e.autoComplete||e.autocomplete,"aria-label":e.label},on:{compositionstart:e.handleCompositionStart,compositionupdate:e.handleCompositionUpdate,compositionend:e.handleCompositionEnd,input:e.handleInput,focus:e.handleFocus,blur:e.handleBlur,change:e.handleChange}},"input",e.$attrs,!1)):e._e(),e.$slots.prefix||e.prefixIcon?i("span",{staticClass:"el-input__prefix"},[e._t("prefix"),e.prefixIcon?i("i",{staticClass:"el-input__icon",class:e.prefixIcon}):e._e()],2):e._e(),e.getSuffixVisible()?i("span",{staticClass:"el-input__suffix"},[i("span",{staticClass:"el-input__suffix-inner"},[e.showClear&&e.showPwdVisible&&e.isWordLimitVisible?e._e():[e._t("suffix"),e.suffixIcon?i("i",{staticClass:"el-input__icon",class:e.suffixIcon}):e._e()],e.showClear?i("i",{staticClass:"el-input__icon el-icon-circle-close el-input__clear",on:{mousedown:function(e){e.preventDefault()},click:e.clear}}):e._e(),e.showPwdVisible?i("i",{staticClass:"el-input__icon el-icon-view el-input__clear",on:{click:e.handlePasswordVisible}}):e._e(),e.isWordLimitVisible?i("span",{staticClass:"el-input__count"},[i("span",{staticClass:"el-input__count-inner"},[e._v("\n            "+e._s(e.textLength)+"/"+e._s(e.upperLimit)+"\n          ")])]):e._e()],2),e.validateState?i("i",{staticClass:"el-input__icon",class:["el-input__validateIcon",e.validateIcon]}):e._e()]):e._e(),e.$slots.append?i("div",{staticClass:"el-input-group__append"},[e._t("append")],2):e._e()]:i("textarea",e._b({ref:"textarea",staticClass:"el-textarea__inner",style:e.textareaStyle,attrs:{tabindex:e.tabindex,disabled:e.inputDisabled,readonly:e.readonly,autocomplete:e.autoComplete||e.autocomplete,"aria-label":e.label},on:{compositionstart:e.handleCompositionStart,compositionupdate:e.handleCompositionUpdate,compositionend:e.handleCompositionEnd,input:e.handleInput,focus:e.handleFocus,blur:e.handleBlur,change:e.handleChange}},"textarea",e.$attrs,!1)),e.isWordLimitVisible&&"textarea"===e.type?i("span",{staticClass:"el-input__count"},[e._v(e._s(e.textLength)+"/"+e._s(e.upperLimit))]):e._e()],2)};Y._withStripped=!0;var K={mounted:function(){},methods:{getMigratingConfig:function(){return{props:{},events:{}}}}},G=void 0,U="\n  height:0 !important;\n  visibility:hidden !important;\n  overflow:hidden !important;\n  position:absolute !important;\n  z-index:-1000 !important;\n  top:0 !important;\n  right:0 !important\n",X=["letter-spacing","line-height","padding-top","padding-bottom","font-family","font-weight","font-size","text-rendering","text-transform","width","text-indent","padding-left","padding-right","border-width","box-sizing"];function J(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;G||(G=document.createElement("textarea"),document.body.appendChild(G));var n=function(e){var t=window.getComputedStyle(e),i=t.getPropertyValue("box-sizing"),n=parseFloat(t.getPropertyValue("padding-bottom"))+parseFloat(t.getPropertyValue("padding-top")),r=parseFloat(t.getPropertyValue("border-bottom-width"))+parseFloat(t.getPropertyValue("border-top-width"));return{contextStyle:X.map(function(e){return e+":"+t.getPropertyValue(e)}).join(";"),paddingSize:n,borderSize:r,boxSizing:i}}(e),r=n.paddingSize,s=n.borderSize,a=n.boxSizing,o=n.contextStyle;G.setAttribute("style",o+";"+U),G.value=e.value||e.placeholder||"";var l=G.scrollHeight,u={};"border-box"===a?l+=s:"content-box"===a&&(l-=r),G.value="";var c=G.scrollHeight-r;if(null!==t){var h=c*t;"border-box"===a&&(h=h+r+s),l=Math.max(h,l),u.minHeight=h+"px"}if(null!==i){var d=c*i;"border-box"===a&&(d=d+r+s),l=Math.min(d,l)}return u.height=l+"px",G.parentNode&&G.parentNode.removeChild(G),G=null,u}var Z=function(e){for(var t=1,i=arguments.length;t<i;t++){var n=arguments[t]||{};for(var r in n)if(n.hasOwnProperty(r)){var s=n[r];void 0!==s&&(e[r]=s)}}return e};function Q(e){return null!=e}function ee(e){return/([(\uAC00-\uD7AF)|(\u3130-\u318F)])+/gi.test(e)}var te=r({name:"ElInput",componentName:"ElInput",mixins:[l,K],inheritAttrs:!1,inject:{elForm:{default:""},elFormItem:{default:""}},data:function(){return{textareaCalcStyle:{},hovering:!1,focused:!1,isComposing:!1,passwordVisible:!1}},props:{value:[String,Number],size:String,resize:String,form:String,disabled:Boolean,readonly:Boolean,type:{type:String,default:"text"},autosize:{type:[Boolean,Object],default:!1},autocomplete:{type:String,default:"off"},autoComplete:{type:String,validator:function(e){return!0}},validateEvent:{type:Boolean,default:!0},suffixIcon:String,prefixIcon:String,label:String,clearable:{type:Boolean,default:!1},showPassword:{type:Boolean,default:!1},showWordLimit:{type:Boolean,default:!1},tabindex:String},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},validateState:function(){return this.elFormItem?this.elFormItem.validateState:""},needStatusIcon:function(){return!!this.elForm&&this.elForm.statusIcon},validateIcon:function(){return{validating:"el-icon-loading",success:"el-icon-circle-check",error:"el-icon-circle-close"}[this.validateState]},textareaStyle:function(){return Z({},this.textareaCalcStyle,{resize:this.resize})},inputSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},inputDisabled:function(){return this.disabled||(this.elForm||{}).disabled},nativeInputValue:function(){return null===this.value||void 0===this.value?"":String(this.value)},showClear:function(){return this.clearable&&!this.inputDisabled&&!this.readonly&&this.nativeInputValue&&(this.focused||this.hovering)},showPwdVisible:function(){return this.showPassword&&!this.inputDisabled&&!this.readonly&&(!!this.nativeInputValue||this.focused)},isWordLimitVisible:function(){return this.showWordLimit&&this.$attrs.maxlength&&("text"===this.type||"textarea"===this.type)&&!this.inputDisabled&&!this.readonly&&!this.showPassword},upperLimit:function(){return this.$attrs.maxlength},textLength:function(){return"number"==typeof this.value?String(this.value).length:(this.value||"").length},inputExceed:function(){return this.isWordLimitVisible&&this.textLength>this.upperLimit}},watch:{value:function(e){this.$nextTick(this.resizeTextarea),this.validateEvent&&this.dispatch("ElFormItem","el.form.change",[e])},nativeInputValue:function(){this.setNativeInputValue()},type:function(){var e=this;this.$nextTick(function(){e.setNativeInputValue(),e.resizeTextarea(),e.updateIconOffset()})}},methods:{focus:function(){this.getInput().focus()},blur:function(){this.getInput().blur()},getMigratingConfig:function(){return{props:{icon:"icon is removed, use suffix-icon / prefix-icon instead.","on-icon-click":"on-icon-click is removed."},events:{click:"click is removed."}}},handleBlur:function(e){this.focused=!1,this.$emit("blur",e),this.validateEvent&&this.dispatch("ElFormItem","el.form.blur",[this.value])},select:function(){this.getInput().select()},resizeTextarea:function(){if(!this.$isServer){var e=this.autosize;if("textarea"===this.type)if(e){var t=e.minRows,i=e.maxRows;this.textareaCalcStyle=J(this.$refs.textarea,t,i)}else this.textareaCalcStyle={minHeight:J(this.$refs.textarea).minHeight}}},setNativeInputValue:function(){var e=this.getInput();e&&e.value!==this.nativeInputValue&&(e.value=this.nativeInputValue)},handleFocus:function(e){this.focused=!0,this.$emit("focus",e)},handleCompositionStart:function(){this.isComposing=!0},handleCompositionUpdate:function(e){var t=e.target.value,i=t[t.length-1]||"";this.isComposing=!ee(i)},handleCompositionEnd:function(e){this.isComposing&&(this.isComposing=!1,this.handleInput(e))},handleInput:function(e){this.isComposing||e.target.value!==this.nativeInputValue&&(this.$emit("input",e.target.value),this.$nextTick(this.setNativeInputValue))},handleChange:function(e){this.$emit("change",e.target.value)},calcIconOffset:function(e){var t=[].slice.call(this.$el.querySelectorAll(".el-input__"+e)||[]);if(t.length){for(var i=null,n=0;n<t.length;n++)if(t[n].parentNode===this.$el){i=t[n];break}if(i){var r={suffix:"append",prefix:"prepend"}[e];this.$slots[r]?i.style.transform="translateX("+("suffix"===e?"-":"")+this.$el.querySelector(".el-input-group__"+r).offsetWidth+"px)":i.removeAttribute("style")}}},updateIconOffset:function(){this.calcIconOffset("prefix"),this.calcIconOffset("suffix")},clear:function(){this.$emit("input",""),this.$emit("change",""),this.$emit("clear")},handlePasswordVisible:function(){this.passwordVisible=!this.passwordVisible,this.focus()},getInput:function(){return this.$refs.input||this.$refs.textarea},getSuffixVisible:function(){return this.$slots.suffix||this.suffixIcon||this.showClear||this.showPassword||this.isWordLimitVisible||this.validateState&&this.needStatusIcon}},created:function(){this.$on("inputSelect",this.select)},mounted:function(){this.setNativeInputValue(),this.resizeTextarea(),this.updateIconOffset()},updated:function(){this.$nextTick(this.updateIconOffset)}},Y,[],!1,null,null,null);te.options.__file="packages/input/src/input.vue";var ie=te.exports;ie.install=function(e){e.component(ie.name,ie)};var ne=ie,re=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-select-dropdown el-popper",class:[{"is-multiple":this.$parent.multiple},this.popperClass],style:{minWidth:this.minWidth}},[this._t("default")],2)};re._withStripped=!0;"function"==typeof Symbol&&Symbol.iterator;var se=h.a.prototype.$isServer,ae=/([\:\-\_]+(.))/g,oe=/^moz([A-Z])/,le=se?0:Number(document.documentMode),ue=function(e){return(e||"").replace(/^[\s\uFEFF]+|[\s\uFEFF]+$/g,"")},ce=function(e){return e.replace(ae,function(e,t,i,n){return n?i.toUpperCase():i}).replace(oe,"Moz$1")},he=!se&&document.addEventListener?function(e,t,i){e&&t&&i&&e.addEventListener(t,i,!1)}:function(e,t,i){e&&t&&i&&e.attachEvent("on"+t,i)},de=!se&&document.removeEventListener?function(e,t,i){e&&t&&e.removeEventListener(t,i,!1)}:function(e,t,i){e&&t&&e.detachEvent("on"+t,i)};function pe(e,t){if(!e||!t)return!1;if(-1!==t.indexOf(" "))throw new Error("className should not contain space.");return e.classList?e.classList.contains(t):(" "+e.className+" ").indexOf(" "+t+" ")>-1}function fe(e,t){if(e){for(var i=e.className,n=(t||"").split(" "),r=0,s=n.length;r<s;r++){var a=n[r];a&&(e.classList?e.classList.add(a):pe(e,a)||(i+=" "+a))}e.classList||(e.className=i)}}function me(e,t){if(e&&t){for(var i=t.split(" "),n=" "+e.className+" ",r=0,s=i.length;r<s;r++){var a=i[r];a&&(e.classList?e.classList.remove(a):pe(e,a)&&(n=n.replace(" "+a+" "," ")))}e.classList||(e.className=ue(n))}}var ve=le<9?function(e,t){if(!se){if(!e||!t)return null;"float"===(t=ce(t))&&(t="styleFloat");try{switch(t){case"opacity":try{return e.filters.item("alpha").opacity/100}catch(e){return 1}default:return e.style[t]||e.currentStyle?e.currentStyle[t]:null}}catch(i){return e.style[t]}}}:function(e,t){if(!se){if(!e||!t)return null;"float"===(t=ce(t))&&(t="cssFloat");try{var i=document.defaultView.getComputedStyle(e,"");return e.style[t]||i?i[t]:null}catch(i){return e.style[t]}}};var ge=function(e,t){if(!se)return ve(e,null!==t||void 0!==t?t?"overflow-y":"overflow-x":"overflow").match(/(scroll|auto)/)},be=function(e,t){if(!se){for(var i=e;i;){if([window,document,document.documentElement].includes(i))return window;if(ge(i,t))return i;i=i.parentNode}return i}},ye=!1,we=!1,_e=void 0,xe=function(){if(!h.a.prototype.$isServer){var e=ke.modalDom;return e?ye=!0:(ye=!1,e=document.createElement("div"),ke.modalDom=e,e.addEventListener("touchmove",function(e){e.preventDefault(),e.stopPropagation()}),e.addEventListener("click",function(){ke.doOnModalClick&&ke.doOnModalClick()})),e}},Ce={},ke={modalFade:!0,getInstance:function(e){return Ce[e]},register:function(e,t){e&&t&&(Ce[e]=t)},deregister:function(e){e&&(Ce[e]=null,delete Ce[e])},nextZIndex:function(){return ke.zIndex++},modalStack:[],doOnModalClick:function(){var e=ke.modalStack[ke.modalStack.length-1];if(e){var t=ke.getInstance(e.id);t&&t.closeOnClickModal&&t.close()}},openModal:function(e,t,i,n,r){if(!h.a.prototype.$isServer&&e&&void 0!==t){this.modalFade=r;for(var s=this.modalStack,a=0,o=s.length;a<o;a++){if(s[a].id===e)return}var l=xe();if(fe(l,"v-modal"),this.modalFade&&!ye&&fe(l,"v-modal-enter"),n)n.trim().split(/\s+/).forEach(function(e){return fe(l,e)});setTimeout(function(){me(l,"v-modal-enter")},200),i&&i.parentNode&&11!==i.parentNode.nodeType?i.parentNode.appendChild(l):document.body.appendChild(l),t&&(l.style.zIndex=t),l.tabIndex=0,l.style.display="",this.modalStack.push({id:e,zIndex:t,modalClass:n})}},closeModal:function(e){var t=this.modalStack,i=xe();if(t.length>0){var n=t[t.length-1];if(n.id===e){if(n.modalClass)n.modalClass.trim().split(/\s+/).forEach(function(e){return me(i,e)});t.pop(),t.length>0&&(i.style.zIndex=t[t.length-1].zIndex)}else for(var r=t.length-1;r>=0;r--)if(t[r].id===e){t.splice(r,1);break}}0===t.length&&(this.modalFade&&fe(i,"v-modal-leave"),setTimeout(function(){0===t.length&&(i.parentNode&&i.parentNode.removeChild(i),i.style.display="none",ke.modalDom=void 0),me(i,"v-modal-leave")},200))}};Object.defineProperty(ke,"zIndex",{configurable:!0,get:function(){return we||(_e=_e||(h.a.prototype.$ELEMENT||{}).zIndex||2e3,we=!0),_e},set:function(e){_e=e}});h.a.prototype.$isServer||window.addEventListener("keydown",function(e){if(27===e.keyCode){var t=function(){if(!h.a.prototype.$isServer&&ke.modalStack.length>0){var e=ke.modalStack[ke.modalStack.length-1];if(!e)return;return ke.getInstance(e.id)}}();t&&t.closeOnPressEscape&&(t.handleClose?t.handleClose():t.handleAction?t.handleAction("cancel"):t.close())}});var Se=ke,De=void 0,$e=function(){if(h.a.prototype.$isServer)return 0;if(void 0!==De)return De;var e=document.createElement("div");e.className="el-scrollbar__wrap",e.style.visibility="hidden",e.style.width="100px",e.style.position="absolute",e.style.top="-9999px",document.body.appendChild(e);var t=e.offsetWidth;e.style.overflow="scroll";var i=document.createElement("div");i.style.width="100%",e.appendChild(i);var n=i.offsetWidth;return e.parentNode.removeChild(e),De=t-n},Ee=1,Te=void 0,Me={props:{visible:{type:Boolean,default:!1},openDelay:{},closeDelay:{},zIndex:{},modal:{type:Boolean,default:!1},modalFade:{type:Boolean,default:!0},modalClass:{},modalAppendToBody:{type:Boolean,default:!1},lockScroll:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!1},closeOnClickModal:{type:Boolean,default:!1}},beforeMount:function(){this._popupId="popup-"+Ee++,Se.register(this._popupId,this)},beforeDestroy:function(){Se.deregister(this._popupId),Se.closeModal(this._popupId),this.restoreBodyStyle()},data:function(){return{opened:!1,bodyPaddingRight:null,computedBodyPaddingRight:0,withoutHiddenClass:!0,rendered:!1}},watch:{visible:function(e){var t=this;if(e){if(this._opening)return;this.rendered?this.open():(this.rendered=!0,h.a.nextTick(function(){t.open()}))}else this.close()}},methods:{open:function(e){var t=this;this.rendered||(this.rendered=!0);var i=Z({},this.$props||this,e);this._closeTimer&&(clearTimeout(this._closeTimer),this._closeTimer=null),clearTimeout(this._openTimer);var n=Number(i.openDelay);n>0?this._openTimer=setTimeout(function(){t._openTimer=null,t.doOpen(i)},n):this.doOpen(i)},doOpen:function(e){if(!this.$isServer&&(!this.willOpen||this.willOpen())&&!this.opened){this._opening=!0;var t=this.$el,i=e.modal,n=e.zIndex;if(n&&(Se.zIndex=n),i&&(this._closing&&(Se.closeModal(this._popupId),this._closing=!1),Se.openModal(this._popupId,Se.nextZIndex(),this.modalAppendToBody?void 0:t,e.modalClass,e.modalFade),e.lockScroll)){this.withoutHiddenClass=!pe(document.body,"el-popup-parent--hidden"),this.withoutHiddenClass&&(this.bodyPaddingRight=document.body.style.paddingRight,this.computedBodyPaddingRight=parseInt(ve(document.body,"paddingRight"),10)),Te=$e();var r=document.documentElement.clientHeight<document.body.scrollHeight,s=ve(document.body,"overflowY");Te>0&&(r||"scroll"===s)&&this.withoutHiddenClass&&(document.body.style.paddingRight=this.computedBodyPaddingRight+Te+"px"),fe(document.body,"el-popup-parent--hidden")}"static"===getComputedStyle(t).position&&(t.style.position="absolute"),t.style.zIndex=Se.nextZIndex(),this.opened=!0,this.onOpen&&this.onOpen(),this.doAfterOpen()}},doAfterOpen:function(){this._opening=!1},close:function(){var e=this;if(!this.willClose||this.willClose()){null!==this._openTimer&&(clearTimeout(this._openTimer),this._openTimer=null),clearTimeout(this._closeTimer);var t=Number(this.closeDelay);t>0?this._closeTimer=setTimeout(function(){e._closeTimer=null,e.doClose()},t):this.doClose()}},doClose:function(){this._closing=!0,this.onClose&&this.onClose(),this.lockScroll&&setTimeout(this.restoreBodyStyle,200),this.opened=!1,this.doAfterClose()},doAfterClose:function(){Se.closeModal(this._popupId),this._closing=!1},restoreBodyStyle:function(){this.modal&&this.withoutHiddenClass&&(document.body.style.paddingRight=this.bodyPaddingRight,me(document.body,"el-popup-parent--hidden")),this.withoutHiddenClass=!0}}},Ne=h.a.prototype.$isServer?function(){}:i(50),Pe=function(e){return e.stopPropagation()},Oe={props:{transformOrigin:{type:[Boolean,String],default:!0},placement:{type:String,default:"bottom"},boundariesPadding:{type:Number,default:5},reference:{},popper:{},offset:{default:0},value:Boolean,visibleArrow:Boolean,arrowOffset:{type:Number,default:35},appendToBody:{type:Boolean,default:!0},popperOptions:{type:Object,default:function(){return{gpuAcceleration:!1}}}},data:function(){return{showPopper:!1,currentPlacement:""}},watch:{value:{immediate:!0,handler:function(e){this.showPopper=e,this.$emit("input",e)}},showPopper:function(e){this.disabled||(e?this.updatePopper():this.destroyPopper(),this.$emit("input",e))}},methods:{createPopper:function(){var e=this;if(!this.$isServer&&(this.currentPlacement=this.currentPlacement||this.placement,/^(top|bottom|left|right)(-start|-end)?$/g.test(this.currentPlacement))){var t=this.popperOptions,i=this.popperElm=this.popperElm||this.popper||this.$refs.popper,n=this.referenceElm=this.referenceElm||this.reference||this.$refs.reference;!n&&this.$slots.reference&&this.$slots.reference[0]&&(n=this.referenceElm=this.$slots.reference[0].elm),i&&n&&(this.visibleArrow&&this.appendArrow(i),this.appendToBody&&document.body.appendChild(this.popperElm),this.popperJS&&this.popperJS.destroy&&this.popperJS.destroy(),t.placement=this.currentPlacement,t.offset=this.offset,t.arrowOffset=this.arrowOffset,this.popperJS=new Ne(n,i,t),this.popperJS.onCreate(function(t){e.$emit("created",e),e.resetTransformOrigin(),e.$nextTick(e.updatePopper)}),"function"==typeof t.onUpdate&&this.popperJS.onUpdate(t.onUpdate),this.popperJS._popper.style.zIndex=Se.nextZIndex(),this.popperElm.addEventListener("click",Pe))}},updatePopper:function(){var e=this.popperJS;e?(e.update(),e._popper&&(e._popper.style.zIndex=Se.nextZIndex())):this.createPopper()},doDestroy:function(e){!this.popperJS||this.showPopper&&!e||(this.popperJS.destroy(),this.popperJS=null)},destroyPopper:function(){this.popperJS&&this.resetTransformOrigin()},resetTransformOrigin:function(){if(this.transformOrigin){var e=this.popperJS._popper.getAttribute("x-placement").split("-")[0],t={top:"bottom",bottom:"top",left:"right",right:"left"}[e];this.popperJS._popper.style.transformOrigin="string"==typeof this.transformOrigin?this.transformOrigin:["top","bottom"].indexOf(e)>-1?"center "+t:t+" center"}},appendArrow:function(e){var t=void 0;if(!this.appended){for(var i in this.appended=!0,e.attributes)if(/^_v-/.test(e.attributes[i].name)){t=e.attributes[i].name;break}var n=document.createElement("div");t&&n.setAttribute(t,""),n.setAttribute("x-arrow",""),n.className="popper__arrow",e.appendChild(n)}}},beforeDestroy:function(){this.doDestroy(!0),this.popperElm&&this.popperElm.parentNode===document.body&&(this.popperElm.removeEventListener("click",Pe),document.body.removeChild(this.popperElm))},deactivated:function(){this.$options.beforeDestroy[0].call(this)}},Ie=r({name:"ElSelectDropdown",componentName:"ElSelectDropdown",mixins:[Oe],props:{placement:{default:"bottom-start"},boundariesPadding:{default:0},popperOptions:{default:function(){return{gpuAcceleration:!1}}},visibleArrow:{default:!0},appendToBody:{type:Boolean,default:!0}},data:function(){return{minWidth:""}},computed:{popperClass:function(){return this.$parent.popperClass}},watch:{"$parent.inputWidth":function(){this.minWidth=this.$parent.$el.getBoundingClientRect().width+"px"}},mounted:function(){var e=this;this.referenceElm=this.$parent.$refs.reference.$el,this.$parent.popperElm=this.popperElm=this.$el,this.$on("updatePopper",function(){e.$parent.visible&&e.updatePopper()}),this.$on("destroyPopper",this.destroyPopper)}},re,[],!1,null,null,null);Ie.options.__file="packages/select/src/select-dropdown.vue";var Ae=Ie.exports,Fe=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("li",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-select-dropdown__item",class:{selected:e.itemSelected,"is-disabled":e.disabled||e.groupDisabled||e.limitReached,hover:e.hover},on:{mouseenter:e.hoverItem,click:function(t){return t.stopPropagation(),e.selectOptionClick(t)}}},[e._t("default",[i("span",[e._v(e._s(e.currentLabel))])])],2)};Fe._withStripped=!0;var Le="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},Ve=r({mixins:[l],name:"ElOption",componentName:"ElOption",inject:["select"],props:{value:{required:!0},label:[String,Number],created:Boolean,disabled:{type:Boolean,default:!1}},data:function(){return{index:-1,groupDisabled:!1,visible:!0,hitState:!1,hover:!1}},computed:{isObject:function(){return"[object object]"===Object.prototype.toString.call(this.value).toLowerCase()},currentLabel:function(){return this.label||(this.isObject?"":this.value)},currentValue:function(){return this.value||this.label||""},itemSelected:function(){return this.select.multiple?this.contains(this.select.value,this.value):this.isEqual(this.value,this.select.value)},limitReached:function(){return!!this.select.multiple&&(!this.itemSelected&&(this.select.value||[]).length>=this.select.multipleLimit&&this.select.multipleLimit>0)}},watch:{currentLabel:function(){this.created||this.select.remote||this.dispatch("ElSelect","setSelected")},value:function(e,t){var i=this.select,n=i.remote,r=i.valueKey;if(!this.created&&!n){if(r&&"object"===(void 0===e?"undefined":Le(e))&&"object"===(void 0===t?"undefined":Le(t))&&e[r]===t[r])return;this.dispatch("ElSelect","setSelected")}}},methods:{isEqual:function(e,t){if(this.isObject){var i=this.select.valueKey;return k(e,i)===k(t,i)}return e===t},contains:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1];if(this.isObject){var i=this.select.valueKey;return e&&e.some(function(e){return k(e,i)===k(t,i)})}return e&&e.indexOf(t)>-1},handleGroupDisabled:function(e){this.groupDisabled=e},hoverItem:function(){this.disabled||this.groupDisabled||(this.select.hoverIndex=this.select.options.indexOf(this))},selectOptionClick:function(){!0!==this.disabled&&!0!==this.groupDisabled&&this.dispatch("ElSelect","handleOptionClick",[this,!0])},queryChange:function(e){this.visible=new RegExp(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return String(e).replace(/[|\\{}()[\]^$+*?.]/g,"\\$&")}(e),"i").test(this.currentLabel)||this.created,this.visible||this.select.filteredOptionsCount--}},created:function(){this.select.options.push(this),this.select.cachedOptions.push(this),this.select.optionsCount++,this.select.filteredOptionsCount++,this.$on("queryChange",this.queryChange),this.$on("handleGroupDisabled",this.handleGroupDisabled)},beforeDestroy:function(){var e=this.select,t=e.selected,i=e.multiple?t:[t],n=this.select.cachedOptions.indexOf(this),r=i.indexOf(this);n>-1&&r<0&&this.select.cachedOptions.splice(n,1),this.select.onOptionDestroy(this.select.options.indexOf(this))}},Fe,[],!1,null,null,null);Ve.options.__file="packages/select/src/option.vue";var Be=Ve.exports,ze=r({name:"ElTag",props:{text:String,closable:Boolean,type:String,hit:Boolean,disableTransitions:Boolean,color:String,size:String,effect:{type:String,default:"light",validator:function(e){return-1!==["dark","light","plain"].indexOf(e)}}},methods:{handleClose:function(e){e.stopPropagation(),this.$emit("close",e)},handleClick:function(e){this.$emit("click",e)}},computed:{tagSize:function(){return this.size||(this.$ELEMENT||{}).size}},render:function(e){var t=this.type,i=this.tagSize,n=this.hit,r=this.effect,s=e("span",{class:["el-tag",t?"el-tag--"+t:"",i?"el-tag--"+i:"",r?"el-tag--"+r:"",n&&"is-hit"],style:{backgroundColor:this.color},on:{click:this.handleClick}},[this.$slots.default,this.closable&&e("i",{class:"el-tag__close el-icon-close",on:{click:this.handleClose}})]);return this.disableTransitions?s:e("transition",{attrs:{name:"el-zoom-in-center"}},[s])}},void 0,void 0,!1,null,null,null);ze.options.__file="packages/tag/src/tag.vue";var He=ze.exports;He.install=function(e){e.component(He.name,He)};var Re=He,We=i(47),je="undefined"==typeof window,qe=function(e){var t=e,i=Array.isArray(t),n=0;for(t=i?t:t[Symbol.iterator]();;){var r;if(i){if(n>=t.length)break;r=t[n++]}else{if((n=t.next()).done)break;r=n.value}var s=r.target.__resizeListeners__||[];s.length&&s.forEach(function(e){e()})}},Ye=function(e,t){je||(e.__resizeListeners__||(e.__resizeListeners__=[],e.__ro__=new We.a(qe),e.__ro__.observe(e)),e.__resizeListeners__.push(t))},Ke=function(e,t){e&&e.__resizeListeners__&&(e.__resizeListeners__.splice(e.__resizeListeners__.indexOf(t),1),e.__resizeListeners__.length||e.__ro__.disconnect())},Ge={vertical:{offset:"offsetHeight",scroll:"scrollTop",scrollSize:"scrollHeight",size:"height",key:"vertical",axis:"Y",client:"clientY",direction:"top"},horizontal:{offset:"offsetWidth",scroll:"scrollLeft",scrollSize:"scrollWidth",size:"width",key:"horizontal",axis:"X",client:"clientX",direction:"left"}};function Ue(e){var t=e.move,i=e.size,n=e.bar,r={},s="translate"+n.axis+"("+t+"%)";return r[n.size]=i,r.transform=s,r.msTransform=s,r.webkitTransform=s,r}var Xe={name:"Bar",props:{vertical:Boolean,size:String,move:Number},computed:{bar:function(){return Ge[this.vertical?"vertical":"horizontal"]},wrap:function(){return this.$parent.wrap}},render:function(e){var t=this.size,i=this.move,n=this.bar;return e("div",{class:["el-scrollbar__bar","is-"+n.key],on:{mousedown:this.clickTrackHandler}},[e("div",{ref:"thumb",class:"el-scrollbar__thumb",on:{mousedown:this.clickThumbHandler},style:Ue({size:t,move:i,bar:n})})])},methods:{clickThumbHandler:function(e){e.ctrlKey||2===e.button||(this.startDrag(e),this[this.bar.axis]=e.currentTarget[this.bar.offset]-(e[this.bar.client]-e.currentTarget.getBoundingClientRect()[this.bar.direction]))},clickTrackHandler:function(e){var t=100*(Math.abs(e.target.getBoundingClientRect()[this.bar.direction]-e[this.bar.client])-this.$refs.thumb[this.bar.offset]/2)/this.$el[this.bar.offset];this.wrap[this.bar.scroll]=t*this.wrap[this.bar.scrollSize]/100},startDrag:function(e){e.stopImmediatePropagation(),this.cursorDown=!0,he(document,"mousemove",this.mouseMoveDocumentHandler),he(document,"mouseup",this.mouseUpDocumentHandler),document.onselectstart=function(){return!1}},mouseMoveDocumentHandler:function(e){if(!1!==this.cursorDown){var t=this[this.bar.axis];if(t){var i=100*(-1*(this.$el.getBoundingClientRect()[this.bar.direction]-e[this.bar.client])-(this.$refs.thumb[this.bar.offset]-t))/this.$el[this.bar.offset];this.wrap[this.bar.scroll]=i*this.wrap[this.bar.scrollSize]/100}}},mouseUpDocumentHandler:function(e){this.cursorDown=!1,this[this.bar.axis]=0,de(document,"mousemove",this.mouseMoveDocumentHandler),document.onselectstart=null}},destroyed:function(){de(document,"mouseup",this.mouseUpDocumentHandler)}},Je={name:"ElScrollbar",components:{Bar:Xe},props:{native:Boolean,wrapStyle:{},wrapClass:{},viewClass:{},viewStyle:{},noresize:Boolean,tag:{type:String,default:"div"}},data:function(){return{sizeWidth:"0",sizeHeight:"0",moveX:0,moveY:0}},computed:{wrap:function(){return this.$refs.wrap}},render:function(e){var t=$e(),i=this.wrapStyle;if(t){var n="-"+t+"px",r="margin-bottom: "+n+"; margin-right: "+n+";";Array.isArray(this.wrapStyle)?(i=function(e){for(var t={},i=0;i<e.length;i++)e[i]&&C(t,e[i]);return t}(this.wrapStyle)).marginRight=i.marginBottom=n:"string"==typeof this.wrapStyle?i+=r:i=r}var s=e(this.tag,{class:["el-scrollbar__view",this.viewClass],style:this.viewStyle,ref:"resize"},this.$slots.default),a=e("div",{ref:"wrap",style:i,on:{scroll:this.handleScroll},class:[this.wrapClass,"el-scrollbar__wrap",t?"":"el-scrollbar__wrap--hidden-default"]},[[s]]),o=void 0;return o=this.native?[e("div",{ref:"wrap",class:[this.wrapClass,"el-scrollbar__wrap"],style:i},[[s]])]:[a,e(Xe,{attrs:{move:this.moveX,size:this.sizeWidth}}),e(Xe,{attrs:{vertical:!0,move:this.moveY,size:this.sizeHeight}})],e("div",{class:"el-scrollbar"},o)},methods:{handleScroll:function(){var e=this.wrap;this.moveY=100*e.scrollTop/e.clientHeight,this.moveX=100*e.scrollLeft/e.clientWidth},update:function(){var e,t,i=this.wrap;i&&(e=100*i.clientHeight/i.scrollHeight,t=100*i.clientWidth/i.scrollWidth,this.sizeHeight=e<100?e+"%":"",this.sizeWidth=t<100?t+"%":"")}},mounted:function(){this.native||(this.$nextTick(this.update),!this.noresize&&Ye(this.$refs.resize,this.update))},beforeDestroy:function(){this.native||!this.noresize&&Ke(this.$refs.resize,this.update)},install:function(e){e.component(Je.name,Je)}},Ze=Je,Qe=i(1),et=i.n(Qe),tt=[],it="@@clickoutsideContext",nt=void 0,rt=0;function st(e,t,i){return function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};!(i&&i.context&&n.target&&r.target)||e.contains(n.target)||e.contains(r.target)||e===n.target||i.context.popperElm&&(i.context.popperElm.contains(n.target)||i.context.popperElm.contains(r.target))||(t.expression&&e[it].methodName&&i.context[e[it].methodName]?i.context[e[it].methodName]():e[it].bindingFn&&e[it].bindingFn())}}!h.a.prototype.$isServer&&he(document,"mousedown",function(e){return nt=e}),!h.a.prototype.$isServer&&he(document,"mouseup",function(e){tt.forEach(function(t){return t[it].documentHandler(e,nt)})});var at={bind:function(e,t,i){tt.push(e);var n=rt++;e[it]={id:n,documentHandler:st(e,t,i),methodName:t.expression,bindingFn:t.value}},update:function(e,t,i){e[it].documentHandler=st(e,t,i),e[it].methodName=t.expression,e[it].bindingFn=t.value},unbind:function(e){for(var t=tt.length,i=0;i<t;i++)if(tt[i][it].id===e[it].id){tt.splice(i,1);break}delete e[it]}};function ot(e,t){if(!h.a.prototype.$isServer)if(t){for(var i=[],n=t.offsetParent;n&&e!==n&&e.contains(n);)i.push(n),n=n.offsetParent;var r=t.offsetTop+i.reduce(function(e,t){return e+t.offsetTop},0),s=r+t.offsetHeight,a=e.scrollTop,o=a+e.clientHeight;r<a?e.scrollTop=r:s>o&&(e.scrollTop=s-e.clientHeight)}else e.scrollTop=0}var lt=r({mixins:[l,q,u("reference"),{data:function(){return{hoverOption:-1}},computed:{optionsAllDisabled:function(){return this.options.filter(function(e){return e.visible}).every(function(e){return e.disabled})}},watch:{hoverIndex:function(e){var t=this;"number"==typeof e&&e>-1&&(this.hoverOption=this.options[e]||{}),this.options.forEach(function(e){e.hover=t.hoverOption===e})}},methods:{navigateOptions:function(e){var t=this;if(this.visible){if(0!==this.options.length&&0!==this.filteredOptionsCount&&!this.optionsAllDisabled){"next"===e?(this.hoverIndex++,this.hoverIndex===this.options.length&&(this.hoverIndex=0)):"prev"===e&&(this.hoverIndex--,this.hoverIndex<0&&(this.hoverIndex=this.options.length-1));var i=this.options[this.hoverIndex];!0!==i.disabled&&!0!==i.groupDisabled&&i.visible||this.navigateOptions(e),this.$nextTick(function(){return t.scrollToOption(t.hoverOption)})}}else this.visible=!0}}}],name:"ElSelect",componentName:"ElSelect",inject:{elForm:{default:""},elFormItem:{default:""}},provide:function(){return{select:this}},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},readonly:function(){return!this.filterable||this.multiple||!(!h.a.prototype.$isServer&&!isNaN(Number(document.documentMode)))&&!(!h.a.prototype.$isServer&&navigator.userAgent.indexOf("Edge")>-1)&&!this.visible},showClose:function(){var e=this.multiple?Array.isArray(this.value)&&this.value.length>0:void 0!==this.value&&null!==this.value&&""!==this.value;return this.clearable&&!this.selectDisabled&&this.inputHovering&&e},iconClass:function(){return this.remote&&this.filterable?"":this.visible?"arrow-up is-reverse":"arrow-up"},debounce:function(){return this.remote?300:0},emptyText:function(){return this.loading?this.loadingText||this.t("el.select.loading"):(!this.remote||""!==this.query||0!==this.options.length)&&(this.filterable&&this.query&&this.options.length>0&&0===this.filteredOptionsCount?this.noMatchText||this.t("el.select.noMatch"):0===this.options.length?this.noDataText||this.t("el.select.noData"):null)},showNewOption:function(){var e=this,t=this.options.filter(function(e){return!e.created}).some(function(t){return t.currentLabel===e.query});return this.filterable&&this.allowCreate&&""!==this.query&&!t},selectSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},selectDisabled:function(){return this.disabled||(this.elForm||{}).disabled},collapseTagSize:function(){return["small","mini"].indexOf(this.selectSize)>-1?"mini":"small"},propPlaceholder:function(){return void 0!==this.placeholder?this.placeholder:this.t("el.select.placeholder")}},components:{ElInput:ne,ElSelectMenu:Ae,ElOption:Be,ElTag:Re,ElScrollbar:Ze},directives:{Clickoutside:at},props:{name:String,id:String,value:{required:!0},autocomplete:{type:String,default:"off"},autoComplete:{type:String,validator:function(e){return!0}},automaticDropdown:Boolean,size:String,disabled:Boolean,clearable:Boolean,filterable:Boolean,allowCreate:Boolean,loading:Boolean,popperClass:String,remote:Boolean,loadingText:String,noMatchText:String,noDataText:String,remoteMethod:Function,filterMethod:Function,multiple:Boolean,multipleLimit:{type:Number,default:0},placeholder:{type:String,required:!1},defaultFirstOption:Boolean,reserveKeyword:Boolean,valueKey:{type:String,default:"value"},collapseTags:Boolean,popperAppendToBody:{type:Boolean,default:!0}},data:function(){return{options:[],cachedOptions:[],createdLabel:null,createdSelected:!1,selected:this.multiple?[]:{},inputLength:20,inputWidth:0,initialInputHeight:0,cachedPlaceHolder:"",optionsCount:0,filteredOptionsCount:0,visible:!1,softFocus:!1,selectedLabel:"",hoverIndex:-1,query:"",previousQuery:null,inputHovering:!1,currentPlaceholder:"",menuVisibleOnFocus:!1,isOnComposition:!1,isSilentBlur:!1}},watch:{selectDisabled:function(){var e=this;this.$nextTick(function(){e.resetInputHeight()})},propPlaceholder:function(e){this.cachedPlaceHolder=this.currentPlaceholder=e},value:function(e,t){this.multiple&&(this.resetInputHeight(),e&&e.length>0||this.$refs.input&&""!==this.query?this.currentPlaceholder="":this.currentPlaceholder=this.cachedPlaceHolder,this.filterable&&!this.reserveKeyword&&(this.query="",this.handleQueryChange(this.query))),this.setSelected(),this.filterable&&!this.multiple&&(this.inputLength=20),$(e,t)||this.dispatch("ElFormItem","el.form.change",e)},visible:function(e){var t=this;e?(this.broadcast("ElSelectDropdown","updatePopper"),this.filterable&&(this.query=this.remote?"":this.selectedLabel,this.handleQueryChange(this.query),this.multiple?this.$refs.input.focus():(this.remote||(this.broadcast("ElOption","queryChange",""),this.broadcast("ElOptionGroup","queryChange")),this.selectedLabel&&(this.currentPlaceholder=this.selectedLabel,this.selectedLabel="")))):(this.broadcast("ElSelectDropdown","destroyPopper"),this.$refs.input&&this.$refs.input.blur(),this.query="",this.previousQuery=null,this.selectedLabel="",this.inputLength=20,this.menuVisibleOnFocus=!1,this.resetHoverIndex(),this.$nextTick(function(){t.$refs.input&&""===t.$refs.input.value&&0===t.selected.length&&(t.currentPlaceholder=t.cachedPlaceHolder)}),this.multiple||(this.selected&&(this.filterable&&this.allowCreate&&this.createdSelected&&this.createdLabel?this.selectedLabel=this.createdLabel:this.selectedLabel=this.selected.currentLabel,this.filterable&&(this.query=this.selectedLabel)),this.filterable&&(this.currentPlaceholder=this.cachedPlaceHolder))),this.$emit("visible-change",e)},options:function(){var e=this;if(!this.$isServer){this.$nextTick(function(){e.broadcast("ElSelectDropdown","updatePopper")}),this.multiple&&this.resetInputHeight();var t=this.$el.querySelectorAll("input");-1===[].indexOf.call(t,document.activeElement)&&this.setSelected(),this.defaultFirstOption&&(this.filterable||this.remote)&&this.filteredOptionsCount&&this.checkDefaultFirstOption()}}},methods:{handleComposition:function(e){var t=this,i=e.target.value;if("compositionend"===e.type)this.isOnComposition=!1,this.$nextTick(function(e){return t.handleQueryChange(i)});else{var n=i[i.length-1]||"";this.isOnComposition=!ee(n)}},handleQueryChange:function(e){var t=this;this.previousQuery===e||this.isOnComposition||(null!==this.previousQuery||"function"!=typeof this.filterMethod&&"function"!=typeof this.remoteMethod?(this.previousQuery=e,this.$nextTick(function(){t.visible&&t.broadcast("ElSelectDropdown","updatePopper")}),this.hoverIndex=-1,this.multiple&&this.filterable&&this.$nextTick(function(){var e=15*t.$refs.input.value.length+20;t.inputLength=t.collapseTags?Math.min(50,e):e,t.managePlaceholder(),t.resetInputHeight()}),this.remote&&"function"==typeof this.remoteMethod?(this.hoverIndex=-1,this.remoteMethod(e)):"function"==typeof this.filterMethod?(this.filterMethod(e),this.broadcast("ElOptionGroup","queryChange")):(this.filteredOptionsCount=this.optionsCount,this.broadcast("ElOption","queryChange",e),this.broadcast("ElOptionGroup","queryChange")),this.defaultFirstOption&&(this.filterable||this.remote)&&this.filteredOptionsCount&&this.checkDefaultFirstOption()):this.previousQuery=e)},scrollToOption:function(e){var t=Array.isArray(e)&&e[0]?e[0].$el:e.$el;this.$refs.popper&&t&&ot(this.$refs.popper.$el.querySelector(".el-select-dropdown__wrap"),t);this.$refs.scrollbar&&this.$refs.scrollbar.handleScroll()},handleMenuEnter:function(){var e=this;this.$nextTick(function(){return e.scrollToOption(e.selected)})},emitChange:function(e){$(this.value,e)||this.$emit("change",e)},getOption:function(e){for(var t=void 0,i="[object object]"===Object.prototype.toString.call(e).toLowerCase(),n="[object null]"===Object.prototype.toString.call(e).toLowerCase(),r="[object undefined]"===Object.prototype.toString.call(e).toLowerCase(),s=this.cachedOptions.length-1;s>=0;s--){var a=this.cachedOptions[s];if(i?k(a.value,this.valueKey)===k(e,this.valueKey):a.value===e){t=a;break}}if(t)return t;var o={value:e,currentLabel:i||n||r?"":e};return this.multiple&&(o.hitState=!1),o},setSelected:function(){var e=this;if(!this.multiple){var t=this.getOption(this.value);return t.created?(this.createdLabel=t.currentLabel,this.createdSelected=!0):this.createdSelected=!1,this.selectedLabel=t.currentLabel,this.selected=t,void(this.filterable&&(this.query=this.selectedLabel))}var i=[];Array.isArray(this.value)&&this.value.forEach(function(t){i.push(e.getOption(t))}),this.selected=i,this.$nextTick(function(){e.resetInputHeight()})},handleFocus:function(e){this.softFocus?this.softFocus=!1:((this.automaticDropdown||this.filterable)&&(this.visible=!0,this.filterable&&(this.menuVisibleOnFocus=!0)),this.$emit("focus",e))},blur:function(){this.visible=!1,this.$refs.reference.blur()},handleBlur:function(e){var t=this;setTimeout(function(){t.isSilentBlur?t.isSilentBlur=!1:t.$emit("blur",e)},50),this.softFocus=!1},handleClearClick:function(e){this.deleteSelected(e)},doDestroy:function(){this.$refs.popper&&this.$refs.popper.doDestroy()},handleClose:function(){this.visible=!1},toggleLastOptionHitState:function(e){if(Array.isArray(this.selected)){var t=this.selected[this.selected.length-1];if(t)return!0===e||!1===e?(t.hitState=e,e):(t.hitState=!t.hitState,t.hitState)}},deletePrevTag:function(e){if(e.target.value.length<=0&&!this.toggleLastOptionHitState()){var t=this.value.slice();t.pop(),this.$emit("input",t),this.emitChange(t)}},managePlaceholder:function(){""!==this.currentPlaceholder&&(this.currentPlaceholder=this.$refs.input.value?"":this.cachedPlaceHolder)},resetInputState:function(e){8!==e.keyCode&&this.toggleLastOptionHitState(!1),this.inputLength=15*this.$refs.input.value.length+20,this.resetInputHeight()},resetInputHeight:function(){var e=this;this.collapseTags&&!this.filterable||this.$nextTick(function(){if(e.$refs.reference){var t=e.$refs.reference.$el.childNodes,i=[].filter.call(t,function(e){return"INPUT"===e.tagName})[0],n=e.$refs.tags,r=e.initialInputHeight||40;i.style.height=0===e.selected.length?r+"px":Math.max(n?n.clientHeight+(n.clientHeight>r?6:0):0,r)+"px",e.visible&&!1!==e.emptyText&&e.broadcast("ElSelectDropdown","updatePopper")}})},resetHoverIndex:function(){var e=this;setTimeout(function(){e.multiple?e.selected.length>0?e.hoverIndex=Math.min.apply(null,e.selected.map(function(t){return e.options.indexOf(t)})):e.hoverIndex=-1:e.hoverIndex=e.options.indexOf(e.selected)},300)},handleOptionSelect:function(e,t){var i=this;if(this.multiple){var n=(this.value||[]).slice(),r=this.getValueIndex(n,e.value);r>-1?n.splice(r,1):(this.multipleLimit<=0||n.length<this.multipleLimit)&&n.push(e.value),this.$emit("input",n),this.emitChange(n),e.created&&(this.query="",this.handleQueryChange(""),this.inputLength=20),this.filterable&&this.$refs.input.focus()}else this.$emit("input",e.value),this.emitChange(e.value),this.visible=!1;this.isSilentBlur=t,this.setSoftFocus(),this.visible||this.$nextTick(function(){i.scrollToOption(e)})},setSoftFocus:function(){this.softFocus=!0;var e=this.$refs.input||this.$refs.reference;e&&e.focus()},getValueIndex:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1];if("[object object]"===Object.prototype.toString.call(t).toLowerCase()){var i=this.valueKey,n=-1;return e.some(function(e,r){return k(e,i)===k(t,i)&&(n=r,!0)}),n}return e.indexOf(t)},toggleMenu:function(){this.selectDisabled||(this.menuVisibleOnFocus?this.menuVisibleOnFocus=!1:this.visible=!this.visible,this.visible&&(this.$refs.input||this.$refs.reference).focus())},selectOption:function(){this.visible?this.options[this.hoverIndex]&&this.handleOptionSelect(this.options[this.hoverIndex]):this.toggleMenu()},deleteSelected:function(e){e.stopPropagation();var t=this.multiple?[]:"";this.$emit("input",t),this.emitChange(t),this.visible=!1,this.$emit("clear")},deleteTag:function(e,t){var i=this.selected.indexOf(t);if(i>-1&&!this.selectDisabled){var n=this.value.slice();n.splice(i,1),this.$emit("input",n),this.emitChange(n),this.$emit("remove-tag",t.value)}e.stopPropagation()},onInputChange:function(){this.filterable&&this.query!==this.selectedLabel&&(this.query=this.selectedLabel,this.handleQueryChange(this.query))},onOptionDestroy:function(e){e>-1&&(this.optionsCount--,this.filteredOptionsCount--,this.options.splice(e,1))},resetInputWidth:function(){this.inputWidth=this.$refs.reference.$el.getBoundingClientRect().width},handleResize:function(){this.resetInputWidth(),this.multiple&&this.resetInputHeight()},checkDefaultFirstOption:function(){this.hoverIndex=-1;for(var e=!1,t=this.options.length-1;t>=0;t--)if(this.options[t].created){e=!0,this.hoverIndex=t;break}if(!e)for(var i=0;i!==this.options.length;++i){var n=this.options[i];if(this.query){if(!n.disabled&&!n.groupDisabled&&n.visible){this.hoverIndex=i;break}}else if(n.itemSelected){this.hoverIndex=i;break}}},getValueKey:function(e){return"[object object]"!==Object.prototype.toString.call(e.value).toLowerCase()?e.value:k(e.value,this.valueKey)}},created:function(){var e=this;this.cachedPlaceHolder=this.currentPlaceholder=this.propPlaceholder,this.multiple&&!Array.isArray(this.value)&&this.$emit("input",[]),!this.multiple&&Array.isArray(this.value)&&this.$emit("input",""),this.debouncedOnInputChange=et()(this.debounce,function(){e.onInputChange()}),this.debouncedQueryChange=et()(this.debounce,function(t){e.handleQueryChange(t.target.value)}),this.$on("handleOptionClick",this.handleOptionSelect),this.$on("setSelected",this.setSelected)},mounted:function(){var e=this;this.multiple&&Array.isArray(this.value)&&this.value.length>0&&(this.currentPlaceholder=""),Ye(this.$el,this.handleResize);var t=this.$refs.reference;if(t&&t.$el){var i=t.$el.querySelector("input");this.initialInputHeight=i.getBoundingClientRect().height||{medium:36,small:32,mini:28}[this.selectSize]}this.remote&&this.multiple&&this.resetInputHeight(),this.$nextTick(function(){t&&t.$el&&(e.inputWidth=t.$el.getBoundingClientRect().width)}),this.setSelected()},beforeDestroy:function(){this.$el&&this.handleResize&&Ke(this.$el,this.handleResize)}},o,[],!1,null,null,null);lt.options.__file="packages/select/src/select.vue";var ut=lt.exports;ut.install=function(e){e.component(ut.name,ut)};var ct=ut;Be.install=function(e){e.component(Be.name,Be)};var ht=Be,dt={name:"ElPagination",props:{pageSize:{type:Number,default:10},small:Boolean,total:Number,pageCount:Number,pagerCount:{type:Number,validator:function(e){return(0|e)===e&&e>4&&e<22&&e%2==1},default:7},currentPage:{type:Number,default:1},layout:{default:"prev, pager, next, jumper, ->, total"},pageSizes:{type:Array,default:function(){return[10,20,30,40,50,100]}},popperClass:String,prevText:String,nextText:String,background:Boolean,disabled:Boolean,hideOnSinglePage:Boolean},data:function(){return{internalCurrentPage:1,internalPageSize:0,lastEmittedPage:-1,userChangePageSize:!1}},render:function(e){var t=this.layout;if(!t)return null;if(this.hideOnSinglePage&&(!this.internalPageCount||1===this.internalPageCount))return null;var i=e("div",{class:["el-pagination",{"is-background":this.background,"el-pagination--small":this.small}]}),n={prev:e("prev"),jumper:e("jumper"),pager:e("pager",{attrs:{currentPage:this.internalCurrentPage,pageCount:this.internalPageCount,pagerCount:this.pagerCount,disabled:this.disabled},on:{change:this.handleCurrentChange}}),next:e("next"),sizes:e("sizes",{attrs:{pageSizes:this.pageSizes}}),slot:e("slot",[this.$slots.default?this.$slots.default:""]),total:e("total")},r=t.split(",").map(function(e){return e.trim()}),s=e("div",{class:"el-pagination__rightwrapper"}),a=!1;return i.children=i.children||[],s.children=s.children||[],r.forEach(function(e){"->"!==e?a?s.children.push(n[e]):i.children.push(n[e]):a=!0}),a&&i.children.unshift(s),i},components:{Prev:{render:function(e){return e("button",{attrs:{type:"button",disabled:this.$parent.disabled||this.$parent.internalCurrentPage<=1},class:"btn-prev",on:{click:this.$parent.prev}},[this.$parent.prevText?e("span",[this.$parent.prevText]):e("i",{class:"el-icon el-icon-arrow-left"})])}},Next:{render:function(e){return e("button",{attrs:{type:"button",disabled:this.$parent.disabled||this.$parent.internalCurrentPage===this.$parent.internalPageCount||0===this.$parent.internalPageCount},class:"btn-next",on:{click:this.$parent.next}},[this.$parent.nextText?e("span",[this.$parent.nextText]):e("i",{class:"el-icon el-icon-arrow-right"})])}},Sizes:{mixins:[q],props:{pageSizes:Array},watch:{pageSizes:{immediate:!0,handler:function(e,t){$(e,t)||Array.isArray(e)&&(this.$parent.internalPageSize=e.indexOf(this.$parent.pageSize)>-1?this.$parent.pageSize:this.pageSizes[0])}}},render:function(e){var t=this;return e("span",{class:"el-pagination__sizes"},[e("el-select",{attrs:{value:this.$parent.internalPageSize,popperClass:this.$parent.popperClass||"",size:"mini",disabled:this.$parent.disabled},on:{input:this.handleChange}},[this.pageSizes.map(function(i){return e("el-option",{attrs:{value:i,label:i+t.t("el.pagination.pagesize")}})})])])},components:{ElSelect:ct,ElOption:ht},methods:{handleChange:function(e){e!==this.$parent.internalPageSize&&(this.$parent.internalPageSize=e=parseInt(e,10),this.$parent.userChangePageSize=!0,this.$parent.$emit("update:pageSize",e),this.$parent.$emit("size-change",e))}}},Jumper:{mixins:[q],components:{ElInput:ne},data:function(){return{userInput:null}},watch:{"$parent.internalCurrentPage":function(){this.userInput=null}},methods:{handleKeyup:function(e){var t=e.keyCode,i=e.target;13===t&&this.handleChange(i.value)},handleInput:function(e){this.userInput=e},handleChange:function(e){this.$parent.internalCurrentPage=this.$parent.getValidCurrentPage(e),this.$parent.emitChange(),this.userInput=null}},render:function(e){return e("span",{class:"el-pagination__jump"},[this.t("el.pagination.goto"),e("el-input",{class:"el-pagination__editor is-in-pagination",attrs:{min:1,max:this.$parent.internalPageCount,value:null!==this.userInput?this.userInput:this.$parent.internalCurrentPage,type:"number",disabled:this.$parent.disabled},nativeOn:{keyup:this.handleKeyup},on:{input:this.handleInput,change:this.handleChange}}),this.t("el.pagination.pageClassifier")])}},Total:{mixins:[q],render:function(e){return"number"==typeof this.$parent.total?e("span",{class:"el-pagination__total"},[this.t("el.pagination.total",{total:this.$parent.total})]):""}},Pager:a},methods:{handleCurrentChange:function(e){this.internalCurrentPage=this.getValidCurrentPage(e),this.userChangePageSize=!0,this.emitChange()},prev:function(){if(!this.disabled){var e=this.internalCurrentPage-1;this.internalCurrentPage=this.getValidCurrentPage(e),this.$emit("prev-click",this.internalCurrentPage),this.emitChange()}},next:function(){if(!this.disabled){var e=this.internalCurrentPage+1;this.internalCurrentPage=this.getValidCurrentPage(e),this.$emit("next-click",this.internalCurrentPage),this.emitChange()}},getValidCurrentPage:function(e){e=parseInt(e,10);var t=void 0;return"number"==typeof this.internalPageCount?e<1?t=1:e>this.internalPageCount&&(t=this.internalPageCount):(isNaN(e)||e<1)&&(t=1),void 0===t&&isNaN(e)?t=1:0===t&&(t=1),void 0===t?e:t},emitChange:function(){var e=this;this.$nextTick(function(){(e.internalCurrentPage!==e.lastEmittedPage||e.userChangePageSize)&&(e.$emit("current-change",e.internalCurrentPage),e.lastEmittedPage=e.internalCurrentPage,e.userChangePageSize=!1)})}},computed:{internalPageCount:function(){return"number"==typeof this.total?Math.max(1,Math.ceil(this.total/this.internalPageSize)):"number"==typeof this.pageCount?Math.max(1,this.pageCount):null}},watch:{currentPage:{immediate:!0,handler:function(e){this.internalCurrentPage=this.getValidCurrentPage(e)}},pageSize:{immediate:!0,handler:function(e){this.internalPageSize=isNaN(e)?10:e}},internalCurrentPage:{immediate:!0,handler:function(e){this.$emit("update:currentPage",e),this.lastEmittedPage=-1}},internalPageCount:function(e){var t=this.internalCurrentPage;e>0&&0===t?this.internalCurrentPage=1:t>e&&(this.internalCurrentPage=0===e?1:e,this.userChangePageSize&&this.emitChange()),this.userChangePageSize=!1}},install:function(e){e.component(dt.name,dt)}},pt=dt,ft=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"dialog-fade"},on:{"after-enter":e.afterEnter,"after-leave":e.afterLeave}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-dialog__wrapper",on:{click:function(t){return t.target!==t.currentTarget?null:e.handleWrapperClick(t)}}},[i("div",{key:e.key,ref:"dialog",class:["el-dialog",{"is-fullscreen":e.fullscreen,"el-dialog--center":e.center},e.customClass],style:e.style,attrs:{role:"dialog","aria-modal":"true","aria-label":e.title||"dialog"}},[i("div",{staticClass:"el-dialog__header"},[e._t("title",[i("span",{staticClass:"el-dialog__title"},[e._v(e._s(e.title))])]),e.showClose?i("button",{staticClass:"el-dialog__headerbtn",attrs:{type:"button","aria-label":"Close"},on:{click:e.handleClose}},[i("i",{staticClass:"el-dialog__close el-icon el-icon-close"})]):e._e()],2),e.rendered?i("div",{staticClass:"el-dialog__body"},[e._t("default")],2):e._e(),e.$slots.footer?i("div",{staticClass:"el-dialog__footer"},[e._t("footer")],2):e._e()])])])};ft._withStripped=!0;var mt=r({name:"ElDialog",mixins:[Me,l,K],props:{title:{type:String,default:""},modal:{type:Boolean,default:!0},modalAppendToBody:{type:Boolean,default:!0},appendToBody:{type:Boolean,default:!1},lockScroll:{type:Boolean,default:!0},closeOnClickModal:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!0},showClose:{type:Boolean,default:!0},width:String,fullscreen:Boolean,customClass:{type:String,default:""},top:{type:String,default:"15vh"},beforeClose:Function,center:{type:Boolean,default:!1},destroyOnClose:Boolean},data:function(){return{closed:!1,key:0}},watch:{visible:function(e){var t=this;e?(this.closed=!1,this.$emit("open"),this.$el.addEventListener("scroll",this.updatePopper),this.$nextTick(function(){t.$refs.dialog.scrollTop=0}),this.appendToBody&&document.body.appendChild(this.$el)):(this.$el.removeEventListener("scroll",this.updatePopper),this.closed||this.$emit("close"),this.destroyOnClose&&this.$nextTick(function(){t.key++}))}},computed:{style:function(){var e={};return this.fullscreen||(e.marginTop=this.top,this.width&&(e.width=this.width)),e}},methods:{getMigratingConfig:function(){return{props:{size:"size is removed."}}},handleWrapperClick:function(){this.closeOnClickModal&&this.handleClose()},handleClose:function(){"function"==typeof this.beforeClose?this.beforeClose(this.hide):this.hide()},hide:function(e){!1!==e&&(this.$emit("update:visible",!1),this.$emit("close"),this.closed=!0)},updatePopper:function(){this.broadcast("ElSelectDropdown","updatePopper"),this.broadcast("ElDropdownMenu","updatePopper")},afterEnter:function(){this.$emit("opened")},afterLeave:function(){this.$emit("closed")}},mounted:function(){this.visible&&(this.rendered=!0,this.open(),this.appendToBody&&document.body.appendChild(this.$el))},destroyed:function(){this.appendToBody&&this.$el&&this.$el.parentNode&&this.$el.parentNode.removeChild(this.$el)}},ft,[],!1,null,null,null);mt.options.__file="packages/dialog/src/component.vue";var vt=mt.exports;vt.install=function(e){e.component(vt.name,vt)};var gt=vt,bt=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.close,expression:"close"}],staticClass:"el-autocomplete",attrs:{"aria-haspopup":"listbox",role:"combobox","aria-expanded":e.suggestionVisible,"aria-owns":e.id}},[i("el-input",e._b({ref:"input",on:{input:e.handleInput,change:e.handleChange,focus:e.handleFocus,blur:e.handleBlur,clear:e.handleClear},nativeOn:{keydown:[function(t){if(!("button"in t)&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"]))return null;t.preventDefault(),e.highlight(e.highlightedIndex-1)},function(t){if(!("button"in t)&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"]))return null;t.preventDefault(),e.highlight(e.highlightedIndex+1)},function(t){return"button"in t||!e._k(t.keyCode,"enter",13,t.key,"Enter")?e.handleKeyEnter(t):null},function(t){return"button"in t||!e._k(t.keyCode,"tab",9,t.key,"Tab")?e.close(t):null}]}},"el-input",[e.$props,e.$attrs],!1),[e.$slots.prepend?i("template",{slot:"prepend"},[e._t("prepend")],2):e._e(),e.$slots.append?i("template",{slot:"append"},[e._t("append")],2):e._e(),e.$slots.prefix?i("template",{slot:"prefix"},[e._t("prefix")],2):e._e(),e.$slots.suffix?i("template",{slot:"suffix"},[e._t("suffix")],2):e._e()],2),i("el-autocomplete-suggestions",{ref:"suggestions",class:[e.popperClass?e.popperClass:""],attrs:{"visible-arrow":"","popper-options":e.popperOptions,"append-to-body":e.popperAppendToBody,placement:e.placement,id:e.id}},e._l(e.suggestions,function(t,n){return i("li",{key:n,class:{highlighted:e.highlightedIndex===n},attrs:{id:e.id+"-item-"+n,role:"option","aria-selected":e.highlightedIndex===n},on:{click:function(i){e.select(t)}}},[e._t("default",[e._v("\n        "+e._s(t[e.valueKey])+"\n      ")],{item:t})],2)}),0)],1)};bt._withStripped=!0;var yt=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":e.doDestroy}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.showPopper,expression:"showPopper"}],staticClass:"el-autocomplete-suggestion el-popper",class:{"is-loading":!e.parent.hideLoading&&e.parent.loading},style:{width:e.dropdownWidth},attrs:{role:"region"}},[i("el-scrollbar",{attrs:{tag:"ul","wrap-class":"el-autocomplete-suggestion__wrap","view-class":"el-autocomplete-suggestion__list"}},[!e.parent.hideLoading&&e.parent.loading?i("li",[i("i",{staticClass:"el-icon-loading"})]):e._t("default")],2)],1)])};yt._withStripped=!0;var wt=r({components:{ElScrollbar:Ze},mixins:[Oe,l],componentName:"ElAutocompleteSuggestions",data:function(){return{parent:this.$parent,dropdownWidth:""}},props:{options:{default:function(){return{gpuAcceleration:!1}}},id:String},methods:{select:function(e){this.dispatch("ElAutocomplete","item-click",e)}},updated:function(){var e=this;this.$nextTick(function(t){e.popperJS&&e.updatePopper()})},mounted:function(){this.$parent.popperElm=this.popperElm=this.$el,this.referenceElm=this.$parent.$refs.input.$refs.input||this.$parent.$refs.input.$refs.textarea,this.referenceList=this.$el.querySelector(".el-autocomplete-suggestion__list"),this.referenceList.setAttribute("role","listbox"),this.referenceList.setAttribute("id",this.id)},created:function(){var e=this;this.$on("visible",function(t,i){e.dropdownWidth=i+"px",e.showPopper=t})}},yt,[],!1,null,null,null);wt.options.__file="packages/autocomplete/src/autocomplete-suggestions.vue";var _t=wt.exports,xt=r({name:"ElAutocomplete",mixins:[l,u("input"),K],inheritAttrs:!1,componentName:"ElAutocomplete",components:{ElInput:ne,ElAutocompleteSuggestions:_t},directives:{Clickoutside:at},props:{valueKey:{type:String,default:"value"},popperClass:String,popperOptions:Object,placeholder:String,clearable:{type:Boolean,default:!1},disabled:Boolean,name:String,size:String,value:String,maxlength:Number,minlength:Number,autofocus:Boolean,fetchSuggestions:Function,triggerOnFocus:{type:Boolean,default:!0},customItem:String,selectWhenUnmatched:{type:Boolean,default:!1},prefixIcon:String,suffixIcon:String,label:String,debounce:{type:Number,default:300},placement:{type:String,default:"bottom-start"},hideLoading:Boolean,popperAppendToBody:{type:Boolean,default:!0},highlightFirstItem:{type:Boolean,default:!1}},data:function(){return{activated:!1,suggestions:[],loading:!1,highlightedIndex:-1,suggestionDisabled:!1}},computed:{suggestionVisible:function(){var e=this.suggestions;return(Array.isArray(e)&&e.length>0||this.loading)&&this.activated},id:function(){return"el-autocomplete-"+D()}},watch:{suggestionVisible:function(e){var t=this.getInput();t&&this.broadcast("ElAutocompleteSuggestions","visible",[e,t.offsetWidth])}},methods:{getMigratingConfig:function(){return{props:{"custom-item":"custom-item is removed, use scoped slot instead.",props:"props is removed, use value-key instead."}}},getData:function(e){var t=this;this.suggestionDisabled||(this.loading=!0,this.fetchSuggestions(e,function(e){t.loading=!1,t.suggestionDisabled||(Array.isArray(e)?(t.suggestions=e,t.highlightedIndex=t.highlightFirstItem?0:-1):console.error("[Element Error][Autocomplete]autocomplete suggestions must be an array"))}))},handleInput:function(e){if(this.$emit("input",e),this.suggestionDisabled=!1,!this.triggerOnFocus&&!e)return this.suggestionDisabled=!0,void(this.suggestions=[]);this.debouncedGetData(e)},handleChange:function(e){this.$emit("change",e)},handleFocus:function(e){this.activated=!0,this.$emit("focus",e),this.triggerOnFocus&&this.debouncedGetData(this.value)},handleBlur:function(e){this.$emit("blur",e)},handleClear:function(){this.activated=!1,this.$emit("clear")},close:function(e){this.activated=!1},handleKeyEnter:function(e){var t=this;this.suggestionVisible&&this.highlightedIndex>=0&&this.highlightedIndex<this.suggestions.length?(e.preventDefault(),this.select(this.suggestions[this.highlightedIndex])):this.selectWhenUnmatched&&(this.$emit("select",{value:this.value}),this.$nextTick(function(e){t.suggestions=[],t.highlightedIndex=-1}))},select:function(e){var t=this;this.$emit("input",e[this.valueKey]),this.$emit("select",e),this.$nextTick(function(e){t.suggestions=[],t.highlightedIndex=-1})},highlight:function(e){if(this.suggestionVisible&&!this.loading)if(e<0)this.highlightedIndex=-1;else{e>=this.suggestions.length&&(e=this.suggestions.length-1);var t=this.$refs.suggestions.$el.querySelector(".el-autocomplete-suggestion__wrap"),i=t.querySelectorAll(".el-autocomplete-suggestion__list li")[e],n=t.scrollTop,r=i.offsetTop;r+i.scrollHeight>n+t.clientHeight&&(t.scrollTop+=i.scrollHeight),r<n&&(t.scrollTop-=i.scrollHeight),this.highlightedIndex=e,this.getInput().setAttribute("aria-activedescendant",this.id+"-item-"+this.highlightedIndex)}},getInput:function(){return this.$refs.input.getInput()}},mounted:function(){var e=this;this.debouncedGetData=et()(this.debounce,this.getData),this.$on("item-click",function(t){e.select(t)});var t=this.getInput();t.setAttribute("role","textbox"),t.setAttribute("aria-autocomplete","list"),t.setAttribute("aria-controls","id"),t.setAttribute("aria-activedescendant",this.id+"-item-"+this.highlightedIndex)},beforeDestroy:function(){this.$refs.suggestions.$destroy()}},bt,[],!1,null,null,null);xt.options.__file="packages/autocomplete/src/autocomplete.vue";var Ct=xt.exports;Ct.install=function(e){e.component(Ct.name,Ct)};var kt=Ct,St=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("button",{staticClass:"el-button",class:[e.type?"el-button--"+e.type:"",e.buttonSize?"el-button--"+e.buttonSize:"",{"is-disabled":e.buttonDisabled,"is-loading":e.loading,"is-plain":e.plain,"is-round":e.round,"is-circle":e.circle}],attrs:{disabled:e.buttonDisabled||e.loading,autofocus:e.autofocus,type:e.nativeType},on:{click:e.handleClick}},[e.loading?i("i",{staticClass:"el-icon-loading"}):e._e(),e.icon&&!e.loading?i("i",{class:e.icon}):e._e(),e.$slots.default?i("span",[e._t("default")],2):e._e()])};St._withStripped=!0;var Dt=r({name:"ElButton",inject:{elForm:{default:""},elFormItem:{default:""}},props:{type:{type:String,default:"default"},size:String,icon:{type:String,default:""},nativeType:{type:String,default:"button"},loading:Boolean,disabled:Boolean,plain:Boolean,autofocus:Boolean,round:Boolean,circle:Boolean},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},buttonSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},buttonDisabled:function(){return this.disabled||(this.elForm||{}).disabled}},methods:{handleClick:function(e){this.$emit("click",e)}}},St,[],!1,null,null,null);Dt.options.__file="packages/button/src/button.vue";var $t=Dt.exports;$t.install=function(e){e.component($t.name,$t)};var Et=$t,Tt=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-button-group"},[this._t("default")],2)};Tt._withStripped=!0;var Mt=r({name:"ElButtonGroup"},Tt,[],!1,null,null,null);Mt.options.__file="packages/button/src/button-group.vue";var Nt=Mt.exports;Nt.install=function(e){e.component(Nt.name,Nt)};var Pt=Nt,Ot=r({name:"ElDropdown",componentName:"ElDropdown",mixins:[l,K],directives:{Clickoutside:at},components:{ElButton:Et,ElButtonGroup:Pt},provide:function(){return{dropdown:this}},props:{trigger:{type:String,default:"hover"},type:String,size:{type:String,default:""},splitButton:Boolean,hideOnClick:{type:Boolean,default:!0},placement:{type:String,default:"bottom-end"},visibleArrow:{default:!0},showTimeout:{type:Number,default:250},hideTimeout:{type:Number,default:150},tabindex:{type:Number,default:0}},data:function(){return{timeout:null,visible:!1,triggerElm:null,menuItems:null,menuItemsArray:null,dropdownElm:null,focusing:!1,listId:"dropdown-menu-"+D()}},computed:{dropdownSize:function(){return this.size||(this.$ELEMENT||{}).size}},mounted:function(){this.$on("menu-item-click",this.handleMenuItemClick)},watch:{visible:function(e){this.broadcast("ElDropdownMenu","visible",e),this.$emit("visible-change",e)},focusing:function(e){var t=this.$el.querySelector(".el-dropdown-selfdefine");t&&(e?t.className+=" focusing":t.className=t.className.replace("focusing",""))}},methods:{getMigratingConfig:function(){return{props:{"menu-align":"menu-align is renamed to placement."}}},show:function(){var e=this;this.triggerElm.disabled||(clearTimeout(this.timeout),this.timeout=setTimeout(function(){e.visible=!0},"click"===this.trigger?0:this.showTimeout))},hide:function(){var e=this;this.triggerElm.disabled||(this.removeTabindex(),this.tabindex>=0&&this.resetTabindex(this.triggerElm),clearTimeout(this.timeout),this.timeout=setTimeout(function(){e.visible=!1},"click"===this.trigger?0:this.hideTimeout))},handleClick:function(){this.triggerElm.disabled||(this.visible?this.hide():this.show())},handleTriggerKeyDown:function(e){var t=e.keyCode;[38,40].indexOf(t)>-1?(this.removeTabindex(),this.resetTabindex(this.menuItems[0]),this.menuItems[0].focus(),e.preventDefault(),e.stopPropagation()):13===t?this.handleClick():[9,27].indexOf(t)>-1&&this.hide()},handleItemKeyDown:function(e){var t=e.keyCode,i=e.target,n=this.menuItemsArray.indexOf(i),r=this.menuItemsArray.length-1,s=void 0;[38,40].indexOf(t)>-1?(s=38===t?0!==n?n-1:0:n<r?n+1:r,this.removeTabindex(),this.resetTabindex(this.menuItems[s]),this.menuItems[s].focus(),e.preventDefault(),e.stopPropagation()):13===t?(this.triggerElmFocus(),i.click(),this.hideOnClick&&(this.visible=!1)):[9,27].indexOf(t)>-1&&(this.hide(),this.triggerElmFocus())},resetTabindex:function(e){this.removeTabindex(),e.setAttribute("tabindex","0")},removeTabindex:function(){this.triggerElm.setAttribute("tabindex","-1"),this.menuItemsArray.forEach(function(e){e.setAttribute("tabindex","-1")})},initAria:function(){this.dropdownElm.setAttribute("id",this.listId),this.triggerElm.setAttribute("aria-haspopup","list"),this.triggerElm.setAttribute("aria-controls",this.listId),this.splitButton||(this.triggerElm.setAttribute("role","button"),this.triggerElm.setAttribute("tabindex",this.tabindex),this.triggerElm.setAttribute("class",(this.triggerElm.getAttribute("class")||"")+" el-dropdown-selfdefine"))},initEvent:function(){var e=this,t=this.trigger,i=this.show,n=this.hide,r=this.handleClick,s=this.splitButton,a=this.handleTriggerKeyDown,o=this.handleItemKeyDown;this.triggerElm=s?this.$refs.trigger.$el:this.$slots.default[0].elm;var l=this.dropdownElm;this.triggerElm.addEventListener("keydown",a),l.addEventListener("keydown",o,!0),s||(this.triggerElm.addEventListener("focus",function(){e.focusing=!0}),this.triggerElm.addEventListener("blur",function(){e.focusing=!1}),this.triggerElm.addEventListener("click",function(){e.focusing=!1})),"hover"===t?(this.triggerElm.addEventListener("mouseenter",i),this.triggerElm.addEventListener("mouseleave",n),l.addEventListener("mouseenter",i),l.addEventListener("mouseleave",n)):"click"===t&&this.triggerElm.addEventListener("click",r)},handleMenuItemClick:function(e,t){this.hideOnClick&&(this.visible=!1),this.$emit("command",e,t)},triggerElmFocus:function(){this.triggerElm.focus&&this.triggerElm.focus()},initDomOperation:function(){this.dropdownElm=this.popperElm,this.menuItems=this.dropdownElm.querySelectorAll("[tabindex='-1']"),this.menuItemsArray=[].slice.call(this.menuItems),this.initEvent(),this.initAria()}},render:function(e){var t=this,i=this.hide,n=this.splitButton,r=this.type,s=this.dropdownSize,a=n?e("el-button-group",[e("el-button",{attrs:{type:r,size:s},nativeOn:{click:function(e){t.$emit("click",e),i()}}},[this.$slots.default]),e("el-button",{ref:"trigger",attrs:{type:r,size:s},class:"el-dropdown__caret-button"},[e("i",{class:"el-dropdown__icon el-icon-arrow-down"})])]):this.$slots.default;return e("div",{class:"el-dropdown",directives:[{name:"clickoutside",value:i}]},[a,this.$slots.dropdown])}},void 0,void 0,!1,null,null,null);Ot.options.__file="packages/dropdown/src/dropdown.vue";var It=Ot.exports;It.install=function(e){e.component(It.name,It)};var At=It,Ft=function(){var e=this.$createElement,t=this._self._c||e;return t("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":this.doDestroy}},[t("ul",{directives:[{name:"show",rawName:"v-show",value:this.showPopper,expression:"showPopper"}],staticClass:"el-dropdown-menu el-popper",class:[this.size&&"el-dropdown-menu--"+this.size]},[this._t("default")],2)])};Ft._withStripped=!0;var Lt=r({name:"ElDropdownMenu",componentName:"ElDropdownMenu",mixins:[Oe],props:{visibleArrow:{type:Boolean,default:!0},arrowOffset:{type:Number,default:0}},data:function(){return{size:this.dropdown.dropdownSize}},inject:["dropdown"],created:function(){var e=this;this.$on("updatePopper",function(){e.showPopper&&e.updatePopper()}),this.$on("visible",function(t){e.showPopper=t})},mounted:function(){this.dropdown.popperElm=this.popperElm=this.$el,this.referenceElm=this.dropdown.$el,this.dropdown.initDomOperation()},watch:{"dropdown.placement":{immediate:!0,handler:function(e){this.currentPlacement=e}}}},Ft,[],!1,null,null,null);Lt.options.__file="packages/dropdown/src/dropdown-menu.vue";var Vt=Lt.exports;Vt.install=function(e){e.component(Vt.name,Vt)};var Bt=Vt,zt=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("li",{staticClass:"el-dropdown-menu__item",class:{"is-disabled":e.disabled,"el-dropdown-menu__item--divided":e.divided},attrs:{"aria-disabled":e.disabled,tabindex:e.disabled?null:-1},on:{click:e.handleClick}},[e.icon?i("i",{class:e.icon}):e._e(),e._t("default")],2)};zt._withStripped=!0;var Ht=r({name:"ElDropdownItem",mixins:[l],props:{command:{},disabled:Boolean,divided:Boolean,icon:String},methods:{handleClick:function(e){this.dispatch("ElDropdown","menu-item-click",[this.command,this])}}},zt,[],!1,null,null,null);Ht.options.__file="packages/dropdown/src/dropdown-item.vue";var Rt=Ht.exports;Rt.install=function(e){e.component(Rt.name,Rt)};var Wt=Rt,jt=jt||{};jt.Utils=jt.Utils||{},jt.Utils.focusFirstDescendant=function(e){for(var t=0;t<e.childNodes.length;t++){var i=e.childNodes[t];if(jt.Utils.attemptFocus(i)||jt.Utils.focusFirstDescendant(i))return!0}return!1},jt.Utils.focusLastDescendant=function(e){for(var t=e.childNodes.length-1;t>=0;t--){var i=e.childNodes[t];if(jt.Utils.attemptFocus(i)||jt.Utils.focusLastDescendant(i))return!0}return!1},jt.Utils.attemptFocus=function(e){if(!jt.Utils.isFocusable(e))return!1;jt.Utils.IgnoreUtilFocusChanges=!0;try{e.focus()}catch(e){}return jt.Utils.IgnoreUtilFocusChanges=!1,document.activeElement===e},jt.Utils.isFocusable=function(e){if(e.tabIndex>0||0===e.tabIndex&&null!==e.getAttribute("tabIndex"))return!0;if(e.disabled)return!1;switch(e.nodeName){case"A":return!!e.href&&"ignore"!==e.rel;case"INPUT":return"hidden"!==e.type&&"file"!==e.type;case"BUTTON":case"SELECT":case"TEXTAREA":return!0;default:return!1}},jt.Utils.triggerEvent=function(e,t){var i=void 0;i=/^mouse|click/.test(t)?"MouseEvents":/^key/.test(t)?"KeyboardEvent":"HTMLEvents";for(var n=document.createEvent(i),r=arguments.length,s=Array(r>2?r-2:0),a=2;a<r;a++)s[a-2]=arguments[a];return n.initEvent.apply(n,[t].concat(s)),e.dispatchEvent?e.dispatchEvent(n):e.fireEvent("on"+t,n),e},jt.Utils.keys={tab:9,enter:13,space:32,left:37,up:38,right:39,down:40,esc:27};var qt=jt.Utils,Yt=function(e,t){this.domNode=t,this.parent=e,this.subMenuItems=[],this.subIndex=0,this.init()};Yt.prototype.init=function(){this.subMenuItems=this.domNode.querySelectorAll("li"),this.addListeners()},Yt.prototype.gotoSubIndex=function(e){e===this.subMenuItems.length?e=0:e<0&&(e=this.subMenuItems.length-1),this.subMenuItems[e].focus(),this.subIndex=e},Yt.prototype.addListeners=function(){var e=this,t=qt.keys,i=this.parent.domNode;Array.prototype.forEach.call(this.subMenuItems,function(n){n.addEventListener("keydown",function(n){var r=!1;switch(n.keyCode){case t.down:e.gotoSubIndex(e.subIndex+1),r=!0;break;case t.up:e.gotoSubIndex(e.subIndex-1),r=!0;break;case t.tab:qt.triggerEvent(i,"mouseleave");break;case t.enter:case t.space:r=!0,n.currentTarget.click()}return r&&(n.preventDefault(),n.stopPropagation()),!1})})};var Kt=Yt,Gt=function(e){this.domNode=e,this.submenu=null,this.init()};Gt.prototype.init=function(){this.domNode.setAttribute("tabindex","0");var e=this.domNode.querySelector(".el-menu");e&&(this.submenu=new Kt(this,e)),this.addListeners()},Gt.prototype.addListeners=function(){var e=this,t=qt.keys;this.domNode.addEventListener("keydown",function(i){var n=!1;switch(i.keyCode){case t.down:qt.triggerEvent(i.currentTarget,"mouseenter"),e.submenu&&e.submenu.gotoSubIndex(0),n=!0;break;case t.up:qt.triggerEvent(i.currentTarget,"mouseenter"),e.submenu&&e.submenu.gotoSubIndex(e.submenu.subMenuItems.length-1),n=!0;break;case t.tab:qt.triggerEvent(i.currentTarget,"mouseleave");break;case t.enter:case t.space:n=!0,i.currentTarget.click()}n&&i.preventDefault()})};var Ut=Gt,Xt=function(e){this.domNode=e,this.init()};Xt.prototype.init=function(){var e=this.domNode.childNodes;[].filter.call(e,function(e){return 1===e.nodeType}).forEach(function(e){new Ut(e)})};var Jt=Xt,Zt=r({name:"ElMenu",render:function(e){var t=e("ul",{attrs:{role:"menubar"},key:+this.collapse,style:{backgroundColor:this.backgroundColor||""},class:{"el-menu--horizontal":"horizontal"===this.mode,"el-menu--collapse":this.collapse,"el-menu":!0}},[this.$slots.default]);return this.collapseTransition?e("el-menu-collapse-transition",[t]):t},componentName:"ElMenu",mixins:[l,K],provide:function(){return{rootMenu:this}},components:{"el-menu-collapse-transition":{functional:!0,render:function(e,t){return e("transition",{props:{mode:"out-in"},on:{beforeEnter:function(e){e.style.opacity=.2},enter:function(e){fe(e,"el-opacity-transition"),e.style.opacity=1},afterEnter:function(e){me(e,"el-opacity-transition"),e.style.opacity=""},beforeLeave:function(e){e.dataset||(e.dataset={}),pe(e,"el-menu--collapse")?(me(e,"el-menu--collapse"),e.dataset.oldOverflow=e.style.overflow,e.dataset.scrollWidth=e.clientWidth,fe(e,"el-menu--collapse")):(fe(e,"el-menu--collapse"),e.dataset.oldOverflow=e.style.overflow,e.dataset.scrollWidth=e.clientWidth,me(e,"el-menu--collapse")),e.style.width=e.scrollWidth+"px",e.style.overflow="hidden"},leave:function(e){fe(e,"horizontal-collapse-transition"),e.style.width=e.dataset.scrollWidth+"px"}}},t.children)}}},props:{mode:{type:String,default:"vertical"},defaultActive:{type:String,default:""},defaultOpeneds:Array,uniqueOpened:Boolean,router:Boolean,menuTrigger:{type:String,default:"hover"},collapse:Boolean,backgroundColor:String,textColor:String,activeTextColor:String,collapseTransition:{type:Boolean,default:!0}},data:function(){return{activeIndex:this.defaultActive,openedMenus:this.defaultOpeneds&&!this.collapse?this.defaultOpeneds.slice(0):[],items:{},submenus:{}}},computed:{hoverBackground:function(){return this.backgroundColor?this.mixColor(this.backgroundColor,.2):""},isMenuPopup:function(){return"horizontal"===this.mode||"vertical"===this.mode&&this.collapse}},watch:{defaultActive:function(e){this.items[e]||(this.activeIndex=null),this.updateActiveIndex(e)},defaultOpeneds:function(e){this.collapse||(this.openedMenus=e)},collapse:function(e){e&&(this.openedMenus=[]),this.broadcast("ElSubmenu","toggle-collapse",e)}},methods:{updateActiveIndex:function(e){var t=this.items[e]||this.items[this.activeIndex]||this.items[this.defaultActive];t?(this.activeIndex=t.index,this.initOpenedMenu()):this.activeIndex=null},getMigratingConfig:function(){return{props:{theme:"theme is removed."}}},getColorChannels:function(e){if(e=e.replace("#",""),/^[0-9a-fA-F]{3}$/.test(e)){e=e.split("");for(var t=2;t>=0;t--)e.splice(t,0,e[t]);e=e.join("")}return/^[0-9a-fA-F]{6}$/.test(e)?{red:parseInt(e.slice(0,2),16),green:parseInt(e.slice(2,4),16),blue:parseInt(e.slice(4,6),16)}:{red:255,green:255,blue:255}},mixColor:function(e,t){var i=this.getColorChannels(e),n=i.red,r=i.green,s=i.blue;return t>0?(n*=1-t,r*=1-t,s*=1-t):(n+=(255-n)*t,r+=(255-r)*t,s+=(255-s)*t),"rgb("+Math.round(n)+", "+Math.round(r)+", "+Math.round(s)+")"},addItem:function(e){this.$set(this.items,e.index,e)},removeItem:function(e){delete this.items[e.index]},addSubmenu:function(e){this.$set(this.submenus,e.index,e)},removeSubmenu:function(e){delete this.submenus[e.index]},openMenu:function(e,t){var i=this.openedMenus;-1===i.indexOf(e)&&(this.uniqueOpened&&(this.openedMenus=i.filter(function(e){return-1!==t.indexOf(e)})),this.openedMenus.push(e))},closeMenu:function(e){var t=this.openedMenus.indexOf(e);-1!==t&&this.openedMenus.splice(t,1)},handleSubmenuClick:function(e){var t=e.index,i=e.indexPath;-1!==this.openedMenus.indexOf(t)?(this.closeMenu(t),this.$emit("close",t,i)):(this.openMenu(t,i),this.$emit("open",t,i))},handleItemClick:function(e){var t=this,i=e.index,n=e.indexPath,r=this.activeIndex,s=null!==e.index;s&&(this.activeIndex=e.index),this.$emit("select",i,n,e),("horizontal"===this.mode||this.collapse)&&(this.openedMenus=[]),this.router&&s&&this.routeToItem(e,function(e){if(t.activeIndex=r,e){if("NavigationDuplicated"===e.name)return;console.error(e)}})},initOpenedMenu:function(){var e=this,t=this.activeIndex,i=this.items[t];i&&"horizontal"!==this.mode&&!this.collapse&&i.indexPath.forEach(function(t){var i=e.submenus[t];i&&e.openMenu(t,i.indexPath)})},routeToItem:function(e,t){var i=e.route||e.index;try{this.$router.push(i,function(){},t)}catch(e){console.error(e)}},open:function(e){var t=this,i=this.submenus[e.toString()].indexPath;i.forEach(function(e){return t.openMenu(e,i)})},close:function(e){this.closeMenu(e)}},mounted:function(){this.initOpenedMenu(),this.$on("item-click",this.handleItemClick),this.$on("submenu-click",this.handleSubmenuClick),"horizontal"===this.mode&&new Jt(this.$el),this.$watch("items",this.updateActiveIndex)}},void 0,void 0,!1,null,null,null);Zt.options.__file="packages/menu/src/menu.vue";var Qt=Zt.exports;Qt.install=function(e){e.component(Qt.name,Qt)};var ei=Qt;var ti=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return e.prototype.beforeEnter=function(e){fe(e,"collapse-transition"),e.dataset||(e.dataset={}),e.dataset.oldPaddingTop=e.style.paddingTop,e.dataset.oldPaddingBottom=e.style.paddingBottom,e.style.height="0",e.style.paddingTop=0,e.style.paddingBottom=0},e.prototype.enter=function(e){e.dataset.oldOverflow=e.style.overflow,0!==e.scrollHeight?(e.style.height=e.scrollHeight+"px",e.style.paddingTop=e.dataset.oldPaddingTop,e.style.paddingBottom=e.dataset.oldPaddingBottom):(e.style.height="",e.style.paddingTop=e.dataset.oldPaddingTop,e.style.paddingBottom=e.dataset.oldPaddingBottom),e.style.overflow="hidden"},e.prototype.afterEnter=function(e){me(e,"collapse-transition"),e.style.height="",e.style.overflow=e.dataset.oldOverflow},e.prototype.beforeLeave=function(e){e.dataset||(e.dataset={}),e.dataset.oldPaddingTop=e.style.paddingTop,e.dataset.oldPaddingBottom=e.style.paddingBottom,e.dataset.oldOverflow=e.style.overflow,e.style.height=e.scrollHeight+"px",e.style.overflow="hidden"},e.prototype.leave=function(e){0!==e.scrollHeight&&(fe(e,"collapse-transition"),e.style.height=0,e.style.paddingTop=0,e.style.paddingBottom=0)},e.prototype.afterLeave=function(e){me(e,"collapse-transition"),e.style.height="",e.style.overflow=e.dataset.oldOverflow,e.style.paddingTop=e.dataset.oldPaddingTop,e.style.paddingBottom=e.dataset.oldPaddingBottom},e}(),ii={name:"ElCollapseTransition",functional:!0,render:function(e,t){var i=t.children;return e("transition",{on:new ti},i)}},ni={inject:["rootMenu"],computed:{indexPath:function(){for(var e=[this.index],t=this.$parent;"ElMenu"!==t.$options.componentName;)t.index&&e.unshift(t.index),t=t.$parent;return e},parentMenu:function(){for(var e=this.$parent;e&&-1===["ElMenu","ElSubmenu"].indexOf(e.$options.componentName);)e=e.$parent;return e},paddingStyle:function(){if("vertical"!==this.rootMenu.mode)return{};var e=20,t=this.$parent;if(this.rootMenu.collapse)e=20;else for(;t&&"ElMenu"!==t.$options.componentName;)"ElSubmenu"===t.$options.componentName&&(e+=20),t=t.$parent;return{paddingLeft:e+"px"}}}},ri=r({name:"ElSubmenu",componentName:"ElSubmenu",mixins:[ni,l,{props:{transformOrigin:{type:[Boolean,String],default:!1},offset:Oe.props.offset,boundariesPadding:Oe.props.boundariesPadding,popperOptions:Oe.props.popperOptions},data:Oe.data,methods:Oe.methods,beforeDestroy:Oe.beforeDestroy,deactivated:Oe.deactivated}],components:{ElCollapseTransition:ii},props:{index:{type:String,required:!0},showTimeout:{type:Number,default:300},hideTimeout:{type:Number,default:300},popperClass:String,disabled:Boolean,popperAppendToBody:{type:Boolean,default:void 0}},data:function(){return{popperJS:null,timeout:null,items:{},submenus:{},mouseInChild:!1}},watch:{opened:function(e){var t=this;this.isMenuPopup&&this.$nextTick(function(e){t.updatePopper()})}},computed:{appendToBody:function(){return void 0===this.popperAppendToBody?this.isFirstLevel:this.popperAppendToBody},menuTransitionName:function(){return this.rootMenu.collapse?"el-zoom-in-left":"el-zoom-in-top"},opened:function(){return this.rootMenu.openedMenus.indexOf(this.index)>-1},active:function(){var e=!1,t=this.submenus,i=this.items;return Object.keys(i).forEach(function(t){i[t].active&&(e=!0)}),Object.keys(t).forEach(function(i){t[i].active&&(e=!0)}),e},hoverBackground:function(){return this.rootMenu.hoverBackground},backgroundColor:function(){return this.rootMenu.backgroundColor||""},activeTextColor:function(){return this.rootMenu.activeTextColor||""},textColor:function(){return this.rootMenu.textColor||""},mode:function(){return this.rootMenu.mode},isMenuPopup:function(){return this.rootMenu.isMenuPopup},titleStyle:function(){return"horizontal"!==this.mode?{color:this.textColor}:{borderBottomColor:this.active?this.rootMenu.activeTextColor?this.activeTextColor:"":"transparent",color:this.active?this.activeTextColor:this.textColor}},isFirstLevel:function(){for(var e=!0,t=this.$parent;t&&t!==this.rootMenu;){if(["ElSubmenu","ElMenuItemGroup"].indexOf(t.$options.componentName)>-1){e=!1;break}t=t.$parent}return e}},methods:{handleCollapseToggle:function(e){e?this.initPopper():this.doDestroy()},addItem:function(e){this.$set(this.items,e.index,e)},removeItem:function(e){delete this.items[e.index]},addSubmenu:function(e){this.$set(this.submenus,e.index,e)},removeSubmenu:function(e){delete this.submenus[e.index]},handleClick:function(){var e=this.rootMenu,t=this.disabled;"hover"===e.menuTrigger&&"horizontal"===e.mode||e.collapse&&"vertical"===e.mode||t||this.dispatch("ElMenu","submenu-click",this)},handleMouseenter:function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.showTimeout;if("ActiveXObject"in window||"focus"!==e.type||e.relatedTarget){var n=this.rootMenu,r=this.disabled;"click"===n.menuTrigger&&"horizontal"===n.mode||!n.collapse&&"vertical"===n.mode||r||(this.dispatch("ElSubmenu","mouse-enter-child"),clearTimeout(this.timeout),this.timeout=setTimeout(function(){t.rootMenu.openMenu(t.index,t.indexPath)},i),this.appendToBody&&this.$parent.$el.dispatchEvent(new MouseEvent("mouseenter")))}},handleMouseleave:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],i=this.rootMenu;"click"===i.menuTrigger&&"horizontal"===i.mode||!i.collapse&&"vertical"===i.mode||(this.dispatch("ElSubmenu","mouse-leave-child"),clearTimeout(this.timeout),this.timeout=setTimeout(function(){!e.mouseInChild&&e.rootMenu.closeMenu(e.index)},this.hideTimeout),this.appendToBody&&t&&"ElSubmenu"===this.$parent.$options.name&&this.$parent.handleMouseleave(!0))},handleTitleMouseenter:function(){if("horizontal"!==this.mode||this.rootMenu.backgroundColor){var e=this.$refs["submenu-title"];e&&(e.style.backgroundColor=this.rootMenu.hoverBackground)}},handleTitleMouseleave:function(){if("horizontal"!==this.mode||this.rootMenu.backgroundColor){var e=this.$refs["submenu-title"];e&&(e.style.backgroundColor=this.rootMenu.backgroundColor||"")}},updatePlacement:function(){this.currentPlacement="horizontal"===this.mode&&this.isFirstLevel?"bottom-start":"right-start"},initPopper:function(){this.referenceElm=this.$el,this.popperElm=this.$refs.menu,this.updatePlacement()}},created:function(){var e=this;this.$on("toggle-collapse",this.handleCollapseToggle),this.$on("mouse-enter-child",function(){e.mouseInChild=!0,clearTimeout(e.timeout)}),this.$on("mouse-leave-child",function(){e.mouseInChild=!1,clearTimeout(e.timeout)})},mounted:function(){this.parentMenu.addSubmenu(this),this.rootMenu.addSubmenu(this),this.initPopper()},beforeDestroy:function(){this.parentMenu.removeSubmenu(this),this.rootMenu.removeSubmenu(this)},render:function(e){var t=this,i=this.active,n=this.opened,r=this.paddingStyle,s=this.titleStyle,a=this.backgroundColor,o=this.rootMenu,l=this.currentPlacement,u=this.menuTransitionName,c=this.mode,h=this.disabled,d=this.popperClass,p=this.$slots,f=this.isFirstLevel,m=e("transition",{attrs:{name:u}},[e("div",{ref:"menu",directives:[{name:"show",value:n}],class:["el-menu--"+c,d],on:{mouseenter:function(e){return t.handleMouseenter(e,100)},mouseleave:function(){return t.handleMouseleave(!0)},focus:function(e){return t.handleMouseenter(e,100)}}},[e("ul",{attrs:{role:"menu"},class:["el-menu el-menu--popup","el-menu--popup-"+l],style:{backgroundColor:o.backgroundColor||""}},[p.default])])]),v=e("el-collapse-transition",[e("ul",{attrs:{role:"menu"},class:"el-menu el-menu--inline",directives:[{name:"show",value:n}],style:{backgroundColor:o.backgroundColor||""}},[p.default])]),g="horizontal"===o.mode&&f||"vertical"===o.mode&&!o.collapse?"el-icon-arrow-down":"el-icon-arrow-right";return e("li",{class:{"el-submenu":!0,"is-active":i,"is-opened":n,"is-disabled":h},attrs:{role:"menuitem","aria-haspopup":"true","aria-expanded":n},on:{mouseenter:this.handleMouseenter,mouseleave:function(){return t.handleMouseleave(!1)},focus:this.handleMouseenter}},[e("div",{class:"el-submenu__title",ref:"submenu-title",on:{click:this.handleClick,mouseenter:this.handleTitleMouseenter,mouseleave:this.handleTitleMouseleave},style:[r,s,{backgroundColor:a}]},[p.title,e("i",{class:["el-submenu__icon-arrow",g]})]),this.isMenuPopup?m:v])}},void 0,void 0,!1,null,null,null);ri.options.__file="packages/menu/src/submenu.vue";var si=ri.exports;si.install=function(e){e.component(si.name,si)};var ai=si,oi=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("li",{staticClass:"el-menu-item",class:{"is-active":e.active,"is-disabled":e.disabled},style:[e.paddingStyle,e.itemStyle,{backgroundColor:e.backgroundColor}],attrs:{role:"menuitem",tabindex:"-1"},on:{click:e.handleClick,mouseenter:e.onMouseEnter,focus:e.onMouseEnter,blur:e.onMouseLeave,mouseleave:e.onMouseLeave}},["ElMenu"===e.parentMenu.$options.componentName&&e.rootMenu.collapse&&e.$slots.title?i("el-tooltip",{attrs:{effect:"dark",placement:"right"}},[i("div",{attrs:{slot:"content"},slot:"content"},[e._t("title")],2),i("div",{staticStyle:{position:"absolute",left:"0",top:"0",height:"100%",width:"100%",display:"inline-block","box-sizing":"border-box",padding:"0 20px"}},[e._t("default")],2)]):[e._t("default"),e._t("title")]],2)};oi._withStripped=!0;var li={name:"ElTooltip",mixins:[Oe],props:{openDelay:{type:Number,default:0},disabled:Boolean,manual:Boolean,effect:{type:String,default:"dark"},arrowOffset:{type:Number,default:0},popperClass:String,content:String,visibleArrow:{default:!0},transition:{type:String,default:"el-fade-in-linear"},popperOptions:{default:function(){return{boundariesPadding:10,gpuAcceleration:!1}}},enterable:{type:Boolean,default:!0},hideAfter:{type:Number,default:0},tabindex:{type:Number,default:0}},data:function(){return{tooltipId:"el-tooltip-"+D(),timeoutPending:null,focusing:!1}},beforeCreate:function(){var e=this;this.$isServer||(this.popperVM=new h.a({data:{node:""},render:function(e){return this.node}}).$mount(),this.debounceClose=et()(200,function(){return e.handleClosePopper()}))},render:function(e){var t=this;this.popperVM&&(this.popperVM.node=e("transition",{attrs:{name:this.transition},on:{afterLeave:this.doDestroy}},[e("div",{on:{mouseleave:function(){t.setExpectedState(!1),t.debounceClose()},mouseenter:function(){t.setExpectedState(!0)}},ref:"popper",attrs:{role:"tooltip",id:this.tooltipId,"aria-hidden":this.disabled||!this.showPopper?"true":"false"},directives:[{name:"show",value:!this.disabled&&this.showPopper}],class:["el-tooltip__popper","is-"+this.effect,this.popperClass]},[this.$slots.content||this.content])]));var i=this.getFirstElement();if(!i)return null;var n=i.data=i.data||{};return n.staticClass=this.addTooltipClass(n.staticClass),i},mounted:function(){var e=this;this.referenceElm=this.$el,1===this.$el.nodeType&&(this.$el.setAttribute("aria-describedby",this.tooltipId),this.$el.setAttribute("tabindex",this.tabindex),he(this.referenceElm,"mouseenter",this.show),he(this.referenceElm,"mouseleave",this.hide),he(this.referenceElm,"focus",function(){if(e.$slots.default&&e.$slots.default.length){var t=e.$slots.default[0].componentInstance;t&&t.focus?t.focus():e.handleFocus()}else e.handleFocus()}),he(this.referenceElm,"blur",this.handleBlur),he(this.referenceElm,"click",this.removeFocusing)),this.value&&this.popperVM&&this.popperVM.$nextTick(function(){e.value&&e.updatePopper()})},watch:{focusing:function(e){e?fe(this.referenceElm,"focusing"):me(this.referenceElm,"focusing")}},methods:{show:function(){this.setExpectedState(!0),this.handleShowPopper()},hide:function(){this.setExpectedState(!1),this.debounceClose()},handleFocus:function(){this.focusing=!0,this.show()},handleBlur:function(){this.focusing=!1,this.hide()},removeFocusing:function(){this.focusing=!1},addTooltipClass:function(e){return e?"el-tooltip "+e.replace("el-tooltip",""):"el-tooltip"},handleShowPopper:function(){var e=this;this.expectedState&&!this.manual&&(clearTimeout(this.timeout),this.timeout=setTimeout(function(){e.showPopper=!0},this.openDelay),this.hideAfter>0&&(this.timeoutPending=setTimeout(function(){e.showPopper=!1},this.hideAfter)))},handleClosePopper:function(){this.enterable&&this.expectedState||this.manual||(clearTimeout(this.timeout),this.timeoutPending&&clearTimeout(this.timeoutPending),this.showPopper=!1,this.disabled&&this.doDestroy())},setExpectedState:function(e){!1===e&&clearTimeout(this.timeoutPending),this.expectedState=e},getFirstElement:function(){var e=this.$slots.default;if(!Array.isArray(e))return null;for(var t=null,i=0;i<e.length;i++)e[i]&&e[i].tag&&(t=e[i]);return t}},beforeDestroy:function(){this.popperVM&&this.popperVM.$destroy()},destroyed:function(){var e=this.referenceElm;1===e.nodeType&&(de(e,"mouseenter",this.show),de(e,"mouseleave",this.hide),de(e,"focus",this.handleFocus),de(e,"blur",this.handleBlur),de(e,"click",this.removeFocusing))},install:function(e){e.component(li.name,li)}},ui=li,ci=r({name:"ElMenuItem",componentName:"ElMenuItem",mixins:[ni,l],components:{ElTooltip:ui},props:{index:{default:null,validator:function(e){return"string"==typeof e||null===e}},route:[String,Object],disabled:Boolean},computed:{active:function(){return this.index===this.rootMenu.activeIndex},hoverBackground:function(){return this.rootMenu.hoverBackground},backgroundColor:function(){return this.rootMenu.backgroundColor||""},activeTextColor:function(){return this.rootMenu.activeTextColor||""},textColor:function(){return this.rootMenu.textColor||""},mode:function(){return this.rootMenu.mode},itemStyle:function(){var e={color:this.active?this.activeTextColor:this.textColor};return"horizontal"!==this.mode||this.isNested||(e.borderBottomColor=this.active?this.rootMenu.activeTextColor?this.activeTextColor:"":"transparent"),e},isNested:function(){return this.parentMenu!==this.rootMenu}},methods:{onMouseEnter:function(){("horizontal"!==this.mode||this.rootMenu.backgroundColor)&&(this.$el.style.backgroundColor=this.hoverBackground)},onMouseLeave:function(){("horizontal"!==this.mode||this.rootMenu.backgroundColor)&&(this.$el.style.backgroundColor=this.backgroundColor)},handleClick:function(){this.disabled||(this.dispatch("ElMenu","item-click",this),this.$emit("click",this))}},mounted:function(){this.parentMenu.addItem(this),this.rootMenu.addItem(this)},beforeDestroy:function(){this.parentMenu.removeItem(this),this.rootMenu.removeItem(this)}},oi,[],!1,null,null,null);ci.options.__file="packages/menu/src/menu-item.vue";var hi=ci.exports;hi.install=function(e){e.component(hi.name,hi)};var di=hi,pi=function(){var e=this.$createElement,t=this._self._c||e;return t("li",{staticClass:"el-menu-item-group"},[t("div",{staticClass:"el-menu-item-group__title",style:{paddingLeft:this.levelPadding+"px"}},[this.$slots.title?this._t("title"):[this._v(this._s(this.title))]],2),t("ul",[this._t("default")],2)])};pi._withStripped=!0;var fi=r({name:"ElMenuItemGroup",componentName:"ElMenuItemGroup",inject:["rootMenu"],props:{title:{type:String}},data:function(){return{paddingLeft:20}},computed:{levelPadding:function(){var e=20,t=this.$parent;if(this.rootMenu.collapse)return 20;for(;t&&"ElMenu"!==t.$options.componentName;)"ElSubmenu"===t.$options.componentName&&(e+=20),t=t.$parent;return e}}},pi,[],!1,null,null,null);fi.options.__file="packages/menu/src/menu-item-group.vue";var mi=fi.exports;mi.install=function(e){e.component(mi.name,mi)};var vi=mi,gi=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{class:["el-input-number",e.inputNumberSize?"el-input-number--"+e.inputNumberSize:"",{"is-disabled":e.inputNumberDisabled},{"is-without-controls":!e.controls},{"is-controls-right":e.controlsAtRight}],on:{dragstart:function(e){e.preventDefault()}}},[e.controls?i("span",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.decrease,expression:"decrease"}],staticClass:"el-input-number__decrease",class:{"is-disabled":e.minDisabled},attrs:{role:"button"},on:{keydown:function(t){return"button"in t||!e._k(t.keyCode,"enter",13,t.key,"Enter")?e.decrease(t):null}}},[i("i",{class:"el-icon-"+(e.controlsAtRight?"arrow-down":"minus")})]):e._e(),e.controls?i("span",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.increase,expression:"increase"}],staticClass:"el-input-number__increase",class:{"is-disabled":e.maxDisabled},attrs:{role:"button"},on:{keydown:function(t){return"button"in t||!e._k(t.keyCode,"enter",13,t.key,"Enter")?e.increase(t):null}}},[i("i",{class:"el-icon-"+(e.controlsAtRight?"arrow-up":"plus")})]):e._e(),i("el-input",{ref:"input",attrs:{value:e.displayValue,placeholder:e.placeholder,disabled:e.inputNumberDisabled,size:e.inputNumberSize,max:e.max,min:e.min,name:e.name,label:e.label},on:{blur:e.handleBlur,focus:e.handleFocus,input:e.handleInput,change:e.handleInputChange},nativeOn:{keydown:[function(t){return"button"in t||!e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"])?(t.preventDefault(),e.increase(t)):null},function(t){return"button"in t||!e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])?(t.preventDefault(),e.decrease(t)):null}]}})],1)};gi._withStripped=!0;var bi={bind:function(e,t,i){var n=null,r=void 0,s=function(){return i.context[t.expression].apply()},a=function(){Date.now()-r<100&&s(),clearInterval(n),n=null};he(e,"mousedown",function(e){var t,i,o;0===e.button&&(r=Date.now(),t=document,o=a,he(t,i="mouseup",function e(){o&&o.apply(this,arguments),de(t,i,e)}),clearInterval(n),n=setInterval(s,100))})}},yi=r({name:"ElInputNumber",mixins:[u("input")],inject:{elForm:{default:""},elFormItem:{default:""}},directives:{repeatClick:bi},components:{ElInput:ne},props:{step:{type:Number,default:1},stepStrictly:{type:Boolean,default:!1},max:{type:Number,default:1/0},min:{type:Number,default:-1/0},value:{},disabled:Boolean,size:String,controls:{type:Boolean,default:!0},controlsPosition:{type:String,default:""},name:String,label:String,placeholder:String,precision:{type:Number,validator:function(e){return e>=0&&e===parseInt(e,10)}}},data:function(){return{currentValue:0,userInput:null}},watch:{value:{immediate:!0,handler:function(e){var t=void 0===e?e:Number(e);if(void 0!==t){if(isNaN(t))return;if(this.stepStrictly){var i=this.getPrecision(this.step),n=Math.pow(10,i);t=Math.round(t/this.step)*n*this.step/n}void 0!==this.precision&&(t=this.toPrecision(t,this.precision))}t>=this.max&&(t=this.max),t<=this.min&&(t=this.min),this.currentValue=t,this.userInput=null,this.$emit("input",t)}}},computed:{minDisabled:function(){return this._decrease(this.value,this.step)<this.min},maxDisabled:function(){return this._increase(this.value,this.step)>this.max},numPrecision:function(){var e=this.value,t=this.step,i=this.getPrecision,n=this.precision,r=i(t);return void 0!==n?(r>n&&console.warn("[Element Warn][InputNumber]precision should not be less than the decimal places of step"),n):Math.max(i(e),r)},controlsAtRight:function(){return this.controls&&"right"===this.controlsPosition},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},inputNumberSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},inputNumberDisabled:function(){return this.disabled||!!(this.elForm||{}).disabled},displayValue:function(){if(null!==this.userInput)return this.userInput;var e=this.currentValue;if("number"==typeof e){if(this.stepStrictly){var t=this.getPrecision(this.step),i=Math.pow(10,t);e=Math.round(e/this.step)*i*this.step/i}void 0!==this.precision&&(e=e.toFixed(this.precision))}return e}},methods:{toPrecision:function(e,t){return void 0===t&&(t=this.numPrecision),parseFloat(Math.round(e*Math.pow(10,t))/Math.pow(10,t))},getPrecision:function(e){if(void 0===e)return 0;var t=e.toString(),i=t.indexOf("."),n=0;return-1!==i&&(n=t.length-i-1),n},_increase:function(e,t){if("number"!=typeof e&&void 0!==e)return this.currentValue;var i=Math.pow(10,this.numPrecision);return this.toPrecision((i*e+i*t)/i)},_decrease:function(e,t){if("number"!=typeof e&&void 0!==e)return this.currentValue;var i=Math.pow(10,this.numPrecision);return this.toPrecision((i*e-i*t)/i)},increase:function(){if(!this.inputNumberDisabled&&!this.maxDisabled){var e=this.value||0,t=this._increase(e,this.step);this.setCurrentValue(t)}},decrease:function(){if(!this.inputNumberDisabled&&!this.minDisabled){var e=this.value||0,t=this._decrease(e,this.step);this.setCurrentValue(t)}},handleBlur:function(e){this.$emit("blur",e)},handleFocus:function(e){this.$emit("focus",e)},setCurrentValue:function(e){var t=this.currentValue;"number"==typeof e&&void 0!==this.precision&&(e=this.toPrecision(e,this.precision)),e>=this.max&&(e=this.max),e<=this.min&&(e=this.min),t!==e&&(this.userInput=null,this.$emit("input",e),this.$emit("change",e,t),this.currentValue=e)},handleInput:function(e){this.userInput=e},handleInputChange:function(e){var t=""===e?void 0:Number(e);isNaN(t)&&""!==e||this.setCurrentValue(t),this.userInput=null},select:function(){this.$refs.input.select()}},mounted:function(){var e=this.$refs.input.$refs.input;e.setAttribute("role","spinbutton"),e.setAttribute("aria-valuemax",this.max),e.setAttribute("aria-valuemin",this.min),e.setAttribute("aria-valuenow",this.currentValue),e.setAttribute("aria-disabled",this.inputNumberDisabled)},updated:function(){this.$refs&&this.$refs.input&&this.$refs.input.$refs.input.setAttribute("aria-valuenow",this.currentValue)}},gi,[],!1,null,null,null);yi.options.__file="packages/input-number/src/input-number.vue";var wi=yi.exports;wi.install=function(e){e.component(wi.name,wi)};var _i=wi,xi=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("label",{staticClass:"el-radio",class:[e.border&&e.radioSize?"el-radio--"+e.radioSize:"",{"is-disabled":e.isDisabled},{"is-focus":e.focus},{"is-bordered":e.border},{"is-checked":e.model===e.label}],attrs:{role:"radio","aria-checked":e.model===e.label,"aria-disabled":e.isDisabled,tabindex:e.tabIndex},on:{keydown:function(t){if(!("button"in t)&&e._k(t.keyCode,"space",32,t.key,[" ","Spacebar"]))return null;t.stopPropagation(),t.preventDefault(),e.model=e.isDisabled?e.model:e.label}}},[i("span",{staticClass:"el-radio__input",class:{"is-disabled":e.isDisabled,"is-checked":e.model===e.label}},[i("span",{staticClass:"el-radio__inner"}),i("input",{directives:[{name:"model",rawName:"v-model",value:e.model,expression:"model"}],ref:"radio",staticClass:"el-radio__original",attrs:{type:"radio","aria-hidden":"true",name:e.name,disabled:e.isDisabled,tabindex:"-1"},domProps:{value:e.label,checked:e._q(e.model,e.label)},on:{focus:function(t){e.focus=!0},blur:function(t){e.focus=!1},change:[function(t){e.model=e.label},e.handleChange]}})]),i("span",{staticClass:"el-radio__label",on:{keydown:function(e){e.stopPropagation()}}},[e._t("default"),e.$slots.default?e._e():[e._v(e._s(e.label))]],2)])};xi._withStripped=!0;var Ci=r({name:"ElRadio",mixins:[l],inject:{elForm:{default:""},elFormItem:{default:""}},componentName:"ElRadio",props:{value:{},label:{},disabled:Boolean,name:String,border:Boolean,size:String},data:function(){return{focus:!1}},computed:{isGroup:function(){for(var e=this.$parent;e;){if("ElRadioGroup"===e.$options.componentName)return this._radioGroup=e,!0;e=e.$parent}return!1},model:{get:function(){return this.isGroup?this._radioGroup.value:this.value},set:function(e){this.isGroup?this.dispatch("ElRadioGroup","input",[e]):this.$emit("input",e),this.$refs.radio&&(this.$refs.radio.checked=this.model===this.label)}},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},radioSize:function(){var e=this.size||this._elFormItemSize||(this.$ELEMENT||{}).size;return this.isGroup&&this._radioGroup.radioGroupSize||e},isDisabled:function(){return this.isGroup?this._radioGroup.disabled||this.disabled||(this.elForm||{}).disabled:this.disabled||(this.elForm||{}).disabled},tabIndex:function(){return this.isDisabled||this.isGroup&&this.model!==this.label?-1:0}},methods:{handleChange:function(){var e=this;this.$nextTick(function(){e.$emit("change",e.model),e.isGroup&&e.dispatch("ElRadioGroup","handleChange",e.model)})}}},xi,[],!1,null,null,null);Ci.options.__file="packages/radio/src/radio.vue";var ki=Ci.exports;ki.install=function(e){e.component(ki.name,ki)};var Si=ki,Di=function(){var e=this.$createElement;return(this._self._c||e)(this._elTag,{tag:"component",staticClass:"el-radio-group",attrs:{role:"radiogroup"},on:{keydown:this.handleKeydown}},[this._t("default")],2)};Di._withStripped=!0;var $i=Object.freeze({LEFT:37,UP:38,RIGHT:39,DOWN:40}),Ei=r({name:"ElRadioGroup",componentName:"ElRadioGroup",inject:{elFormItem:{default:""}},mixins:[l],props:{value:{},size:String,fill:String,textColor:String,disabled:Boolean},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},_elTag:function(){return(this.$vnode.data||{}).tag||"div"},radioGroupSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size}},created:function(){var e=this;this.$on("handleChange",function(t){e.$emit("change",t)})},mounted:function(){var e=this.$el.querySelectorAll("[type=radio]"),t=this.$el.querySelectorAll("[role=radio]")[0];![].some.call(e,function(e){return e.checked})&&t&&(t.tabIndex=0)},methods:{handleKeydown:function(e){var t=e.target,i="INPUT"===t.nodeName?"[type=radio]":"[role=radio]",n=this.$el.querySelectorAll(i),r=n.length,s=[].indexOf.call(n,t),a=this.$el.querySelectorAll("[role=radio]");switch(e.keyCode){case $i.LEFT:case $i.UP:e.stopPropagation(),e.preventDefault(),0===s?(a[r-1].click(),a[r-1].focus()):(a[s-1].click(),a[s-1].focus());break;case $i.RIGHT:case $i.DOWN:s===r-1?(e.stopPropagation(),e.preventDefault(),a[0].click(),a[0].focus()):(a[s+1].click(),a[s+1].focus())}}},watch:{value:function(e){this.dispatch("ElFormItem","el.form.change",[this.value])}}},Di,[],!1,null,null,null);Ei.options.__file="packages/radio/src/radio-group.vue";var Ti=Ei.exports;Ti.install=function(e){e.component(Ti.name,Ti)};var Mi=Ti,Ni=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("label",{staticClass:"el-radio-button",class:[e.size?"el-radio-button--"+e.size:"",{"is-active":e.value===e.label},{"is-disabled":e.isDisabled},{"is-focus":e.focus}],attrs:{role:"radio","aria-checked":e.value===e.label,"aria-disabled":e.isDisabled,tabindex:e.tabIndex},on:{keydown:function(t){if(!("button"in t)&&e._k(t.keyCode,"space",32,t.key,[" ","Spacebar"]))return null;t.stopPropagation(),t.preventDefault(),e.value=e.isDisabled?e.value:e.label}}},[i("input",{directives:[{name:"model",rawName:"v-model",value:e.value,expression:"value"}],staticClass:"el-radio-button__orig-radio",attrs:{type:"radio",name:e.name,disabled:e.isDisabled,tabindex:"-1"},domProps:{value:e.label,checked:e._q(e.value,e.label)},on:{change:[function(t){e.value=e.label},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}}),i("span",{staticClass:"el-radio-button__inner",style:e.value===e.label?e.activeStyle:null,on:{keydown:function(e){e.stopPropagation()}}},[e._t("default"),e.$slots.default?e._e():[e._v(e._s(e.label))]],2)])};Ni._withStripped=!0;var Pi=r({name:"ElRadioButton",mixins:[l],inject:{elForm:{default:""},elFormItem:{default:""}},props:{label:{},disabled:Boolean,name:String},data:function(){return{focus:!1}},computed:{value:{get:function(){return this._radioGroup.value},set:function(e){this._radioGroup.$emit("input",e)}},_radioGroup:function(){for(var e=this.$parent;e;){if("ElRadioGroup"===e.$options.componentName)return e;e=e.$parent}return!1},activeStyle:function(){return{backgroundColor:this._radioGroup.fill||"",borderColor:this._radioGroup.fill||"",boxShadow:this._radioGroup.fill?"-1px 0 0 0 "+this._radioGroup.fill:"",color:this._radioGroup.textColor||""}},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},size:function(){return this._radioGroup.radioGroupSize||this._elFormItemSize||(this.$ELEMENT||{}).size},isDisabled:function(){return this.disabled||this._radioGroup.disabled||(this.elForm||{}).disabled},tabIndex:function(){return this.isDisabled||this._radioGroup&&this.value!==this.label?-1:0}},methods:{handleChange:function(){var e=this;this.$nextTick(function(){e.dispatch("ElRadioGroup","handleChange",e.value)})}}},Ni,[],!1,null,null,null);Pi.options.__file="packages/radio/src/radio-button.vue";var Oi=Pi.exports;Oi.install=function(e){e.component(Oi.name,Oi)};var Ii=Oi,Ai=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("label",{staticClass:"el-checkbox",class:[e.border&&e.checkboxSize?"el-checkbox--"+e.checkboxSize:"",{"is-disabled":e.isDisabled},{"is-bordered":e.border},{"is-checked":e.isChecked}],attrs:{id:e.id}},[i("span",{staticClass:"el-checkbox__input",class:{"is-disabled":e.isDisabled,"is-checked":e.isChecked,"is-indeterminate":e.indeterminate,"is-focus":e.focus},attrs:{tabindex:!!e.indeterminate&&0,role:!!e.indeterminate&&"checkbox","aria-checked":!!e.indeterminate&&"mixed"}},[i("span",{staticClass:"el-checkbox__inner"}),e.trueLabel||e.falseLabel?i("input",{directives:[{name:"model",rawName:"v-model",value:e.model,expression:"model"}],staticClass:"el-checkbox__original",attrs:{type:"checkbox","aria-hidden":e.indeterminate?"true":"false",name:e.name,disabled:e.isDisabled,"true-value":e.trueLabel,"false-value":e.falseLabel},domProps:{checked:Array.isArray(e.model)?e._i(e.model,null)>-1:e._q(e.model,e.trueLabel)},on:{change:[function(t){var i=e.model,n=t.target,r=n.checked?e.trueLabel:e.falseLabel;if(Array.isArray(i)){var s=e._i(i,null);n.checked?s<0&&(e.model=i.concat([null])):s>-1&&(e.model=i.slice(0,s).concat(i.slice(s+1)))}else e.model=r},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}}):i("input",{directives:[{name:"model",rawName:"v-model",value:e.model,expression:"model"}],staticClass:"el-checkbox__original",attrs:{type:"checkbox","aria-hidden":e.indeterminate?"true":"false",disabled:e.isDisabled,name:e.name},domProps:{value:e.label,checked:Array.isArray(e.model)?e._i(e.model,e.label)>-1:e.model},on:{change:[function(t){var i=e.model,n=t.target,r=!!n.checked;if(Array.isArray(i)){var s=e.label,a=e._i(i,s);n.checked?a<0&&(e.model=i.concat([s])):a>-1&&(e.model=i.slice(0,a).concat(i.slice(a+1)))}else e.model=r},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}})]),e.$slots.default||e.label?i("span",{staticClass:"el-checkbox__label"},[e._t("default"),e.$slots.default?e._e():[e._v(e._s(e.label))]],2):e._e()])};Ai._withStripped=!0;var Fi=r({name:"ElCheckbox",mixins:[l],inject:{elForm:{default:""},elFormItem:{default:""}},componentName:"ElCheckbox",data:function(){return{selfModel:!1,focus:!1,isLimitExceeded:!1}},computed:{model:{get:function(){return this.isGroup?this.store:void 0!==this.value?this.value:this.selfModel},set:function(e){this.isGroup?(this.isLimitExceeded=!1,void 0!==this._checkboxGroup.min&&e.length<this._checkboxGroup.min&&(this.isLimitExceeded=!0),void 0!==this._checkboxGroup.max&&e.length>this._checkboxGroup.max&&(this.isLimitExceeded=!0),!1===this.isLimitExceeded&&this.dispatch("ElCheckboxGroup","input",[e])):(this.$emit("input",e),this.selfModel=e)}},isChecked:function(){return"[object Boolean]"==={}.toString.call(this.model)?this.model:Array.isArray(this.model)?this.model.indexOf(this.label)>-1:null!==this.model&&void 0!==this.model?this.model===this.trueLabel:void 0},isGroup:function(){for(var e=this.$parent;e;){if("ElCheckboxGroup"===e.$options.componentName)return this._checkboxGroup=e,!0;e=e.$parent}return!1},store:function(){return this._checkboxGroup?this._checkboxGroup.value:this.value},isLimitDisabled:function(){var e=this._checkboxGroup,t=e.max,i=e.min;return!(!t&&!i)&&this.model.length>=t&&!this.isChecked||this.model.length<=i&&this.isChecked},isDisabled:function(){return this.isGroup?this._checkboxGroup.disabled||this.disabled||(this.elForm||{}).disabled||this.isLimitDisabled:this.disabled||(this.elForm||{}).disabled},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},checkboxSize:function(){var e=this.size||this._elFormItemSize||(this.$ELEMENT||{}).size;return this.isGroup&&this._checkboxGroup.checkboxGroupSize||e}},props:{value:{},label:{},indeterminate:Boolean,disabled:Boolean,checked:Boolean,name:String,trueLabel:[String,Number],falseLabel:[String,Number],id:String,controls:String,border:Boolean,size:String},methods:{addToStore:function(){Array.isArray(this.model)&&-1===this.model.indexOf(this.label)?this.model.push(this.label):this.model=this.trueLabel||!0},handleChange:function(e){var t=this;if(!this.isLimitExceeded){var i=void 0;i=e.target.checked?void 0===this.trueLabel||this.trueLabel:void 0!==this.falseLabel&&this.falseLabel,this.$emit("change",i,e),this.$nextTick(function(){t.isGroup&&t.dispatch("ElCheckboxGroup","change",[t._checkboxGroup.value])})}}},created:function(){this.checked&&this.addToStore()},mounted:function(){this.indeterminate&&this.$el.setAttribute("aria-controls",this.controls)},watch:{value:function(e){this.dispatch("ElFormItem","el.form.change",e)}}},Ai,[],!1,null,null,null);Fi.options.__file="packages/checkbox/src/checkbox.vue";var Li=Fi.exports;Li.install=function(e){e.component(Li.name,Li)};var Vi=Li,Bi=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("label",{staticClass:"el-checkbox-button",class:[e.size?"el-checkbox-button--"+e.size:"",{"is-disabled":e.isDisabled},{"is-checked":e.isChecked},{"is-focus":e.focus}],attrs:{role:"checkbox","aria-checked":e.isChecked,"aria-disabled":e.isDisabled}},[e.trueLabel||e.falseLabel?i("input",{directives:[{name:"model",rawName:"v-model",value:e.model,expression:"model"}],staticClass:"el-checkbox-button__original",attrs:{type:"checkbox",name:e.name,disabled:e.isDisabled,"true-value":e.trueLabel,"false-value":e.falseLabel},domProps:{checked:Array.isArray(e.model)?e._i(e.model,null)>-1:e._q(e.model,e.trueLabel)},on:{change:[function(t){var i=e.model,n=t.target,r=n.checked?e.trueLabel:e.falseLabel;if(Array.isArray(i)){var s=e._i(i,null);n.checked?s<0&&(e.model=i.concat([null])):s>-1&&(e.model=i.slice(0,s).concat(i.slice(s+1)))}else e.model=r},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}}):i("input",{directives:[{name:"model",rawName:"v-model",value:e.model,expression:"model"}],staticClass:"el-checkbox-button__original",attrs:{type:"checkbox",name:e.name,disabled:e.isDisabled},domProps:{value:e.label,checked:Array.isArray(e.model)?e._i(e.model,e.label)>-1:e.model},on:{change:[function(t){var i=e.model,n=t.target,r=!!n.checked;if(Array.isArray(i)){var s=e.label,a=e._i(i,s);n.checked?a<0&&(e.model=i.concat([s])):a>-1&&(e.model=i.slice(0,a).concat(i.slice(a+1)))}else e.model=r},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}}),e.$slots.default||e.label?i("span",{staticClass:"el-checkbox-button__inner",style:e.isChecked?e.activeStyle:null},[e._t("default",[e._v(e._s(e.label))])],2):e._e()])};Bi._withStripped=!0;var zi=r({name:"ElCheckboxButton",mixins:[l],inject:{elForm:{default:""},elFormItem:{default:""}},data:function(){return{selfModel:!1,focus:!1,isLimitExceeded:!1}},props:{value:{},label:{},disabled:Boolean,checked:Boolean,name:String,trueLabel:[String,Number],falseLabel:[String,Number]},computed:{model:{get:function(){return this._checkboxGroup?this.store:void 0!==this.value?this.value:this.selfModel},set:function(e){this._checkboxGroup?(this.isLimitExceeded=!1,void 0!==this._checkboxGroup.min&&e.length<this._checkboxGroup.min&&(this.isLimitExceeded=!0),void 0!==this._checkboxGroup.max&&e.length>this._checkboxGroup.max&&(this.isLimitExceeded=!0),!1===this.isLimitExceeded&&this.dispatch("ElCheckboxGroup","input",[e])):void 0!==this.value?this.$emit("input",e):this.selfModel=e}},isChecked:function(){return"[object Boolean]"==={}.toString.call(this.model)?this.model:Array.isArray(this.model)?this.model.indexOf(this.label)>-1:null!==this.model&&void 0!==this.model?this.model===this.trueLabel:void 0},_checkboxGroup:function(){for(var e=this.$parent;e;){if("ElCheckboxGroup"===e.$options.componentName)return e;e=e.$parent}return!1},store:function(){return this._checkboxGroup?this._checkboxGroup.value:this.value},activeStyle:function(){return{backgroundColor:this._checkboxGroup.fill||"",borderColor:this._checkboxGroup.fill||"",color:this._checkboxGroup.textColor||"","box-shadow":"-1px 0 0 0 "+this._checkboxGroup.fill}},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},size:function(){return this._checkboxGroup.checkboxGroupSize||this._elFormItemSize||(this.$ELEMENT||{}).size},isLimitDisabled:function(){var e=this._checkboxGroup,t=e.max,i=e.min;return!(!t&&!i)&&this.model.length>=t&&!this.isChecked||this.model.length<=i&&this.isChecked},isDisabled:function(){return this._checkboxGroup?this._checkboxGroup.disabled||this.disabled||(this.elForm||{}).disabled||this.isLimitDisabled:this.disabled||(this.elForm||{}).disabled}},methods:{addToStore:function(){Array.isArray(this.model)&&-1===this.model.indexOf(this.label)?this.model.push(this.label):this.model=this.trueLabel||!0},handleChange:function(e){var t=this;if(!this.isLimitExceeded){var i=void 0;i=e.target.checked?void 0===this.trueLabel||this.trueLabel:void 0!==this.falseLabel&&this.falseLabel,this.$emit("change",i,e),this.$nextTick(function(){t._checkboxGroup&&t.dispatch("ElCheckboxGroup","change",[t._checkboxGroup.value])})}}},created:function(){this.checked&&this.addToStore()}},Bi,[],!1,null,null,null);zi.options.__file="packages/checkbox/src/checkbox-button.vue";var Hi=zi.exports;Hi.install=function(e){e.component(Hi.name,Hi)};var Ri=Hi,Wi=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-checkbox-group",attrs:{role:"group","aria-label":"checkbox-group"}},[this._t("default")],2)};Wi._withStripped=!0;var ji=r({name:"ElCheckboxGroup",componentName:"ElCheckboxGroup",mixins:[l],inject:{elFormItem:{default:""}},props:{value:{},disabled:Boolean,min:Number,max:Number,size:String,fill:String,textColor:String},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},checkboxGroupSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size}},watch:{value:function(e){this.dispatch("ElFormItem","el.form.change",[e])}}},Wi,[],!1,null,null,null);ji.options.__file="packages/checkbox/src/checkbox-group.vue";var qi=ji.exports;qi.install=function(e){e.component(qi.name,qi)};var Yi=qi,Ki=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-switch",class:{"is-disabled":e.switchDisabled,"is-checked":e.checked},attrs:{role:"switch","aria-checked":e.checked,"aria-disabled":e.switchDisabled},on:{click:function(t){return t.preventDefault(),e.switchValue(t)}}},[i("input",{ref:"input",staticClass:"el-switch__input",attrs:{type:"checkbox",id:e.id,name:e.name,"true-value":e.activeValue,"false-value":e.inactiveValue,disabled:e.switchDisabled},on:{change:e.handleChange,keydown:function(t){return"button"in t||!e._k(t.keyCode,"enter",13,t.key,"Enter")?e.switchValue(t):null}}}),e.inactiveIconClass||e.inactiveText?i("span",{class:["el-switch__label","el-switch__label--left",e.checked?"":"is-active"]},[e.inactiveIconClass?i("i",{class:[e.inactiveIconClass]}):e._e(),!e.inactiveIconClass&&e.inactiveText?i("span",{attrs:{"aria-hidden":e.checked}},[e._v(e._s(e.inactiveText))]):e._e()]):e._e(),i("span",{ref:"core",staticClass:"el-switch__core",style:{width:e.coreWidth+"px"}}),e.activeIconClass||e.activeText?i("span",{class:["el-switch__label","el-switch__label--right",e.checked?"is-active":""]},[e.activeIconClass?i("i",{class:[e.activeIconClass]}):e._e(),!e.activeIconClass&&e.activeText?i("span",{attrs:{"aria-hidden":!e.checked}},[e._v(e._s(e.activeText))]):e._e()]):e._e()])};Ki._withStripped=!0;var Gi=r({name:"ElSwitch",mixins:[u("input"),K,l],inject:{elForm:{default:""}},props:{value:{type:[Boolean,String,Number],default:!1},disabled:{type:Boolean,default:!1},width:{type:Number,default:40},activeIconClass:{type:String,default:""},inactiveIconClass:{type:String,default:""},activeText:String,inactiveText:String,activeColor:{type:String,default:""},inactiveColor:{type:String,default:""},activeValue:{type:[Boolean,String,Number],default:!0},inactiveValue:{type:[Boolean,String,Number],default:!1},name:{type:String,default:""},validateEvent:{type:Boolean,default:!0},id:String},data:function(){return{coreWidth:this.width}},created:function(){~[this.activeValue,this.inactiveValue].indexOf(this.value)||this.$emit("input",this.inactiveValue)},computed:{checked:function(){return this.value===this.activeValue},switchDisabled:function(){return this.disabled||(this.elForm||{}).disabled}},watch:{checked:function(){this.$refs.input.checked=this.checked,(this.activeColor||this.inactiveColor)&&this.setBackgroundColor(),this.validateEvent&&this.dispatch("ElFormItem","el.form.change",[this.value])}},methods:{handleChange:function(e){var t=this,i=this.checked?this.inactiveValue:this.activeValue;this.$emit("input",i),this.$emit("change",i),this.$nextTick(function(){t.$refs.input.checked=t.checked})},setBackgroundColor:function(){var e=this.checked?this.activeColor:this.inactiveColor;this.$refs.core.style.borderColor=e,this.$refs.core.style.backgroundColor=e},switchValue:function(){!this.switchDisabled&&this.handleChange()},getMigratingConfig:function(){return{props:{"on-color":"on-color is renamed to active-color.","off-color":"off-color is renamed to inactive-color.","on-text":"on-text is renamed to active-text.","off-text":"off-text is renamed to inactive-text.","on-value":"on-value is renamed to active-value.","off-value":"off-value is renamed to inactive-value.","on-icon-class":"on-icon-class is renamed to active-icon-class.","off-icon-class":"off-icon-class is renamed to inactive-icon-class."}}}},mounted:function(){this.coreWidth=this.width||40,(this.activeColor||this.inactiveColor)&&this.setBackgroundColor(),this.$refs.input.checked=this.checked}},Ki,[],!1,null,null,null);Gi.options.__file="packages/switch/src/component.vue";var Ui=Gi.exports;Ui.install=function(e){e.component(Ui.name,Ui)};var Xi=Ui,Ji=function(){var e=this.$createElement,t=this._self._c||e;return t("ul",{directives:[{name:"show",rawName:"v-show",value:this.visible,expression:"visible"}],staticClass:"el-select-group__wrap"},[t("li",{staticClass:"el-select-group__title"},[this._v(this._s(this.label))]),t("li",[t("ul",{staticClass:"el-select-group"},[this._t("default")],2)])])};Ji._withStripped=!0;var Zi=r({mixins:[l],name:"ElOptionGroup",componentName:"ElOptionGroup",props:{label:String,disabled:{type:Boolean,default:!1}},data:function(){return{visible:!0}},watch:{disabled:function(e){this.broadcast("ElOption","handleGroupDisabled",e)}},methods:{queryChange:function(){this.visible=this.$children&&Array.isArray(this.$children)&&this.$children.some(function(e){return!0===e.visible})}},created:function(){this.$on("queryChange",this.queryChange)},mounted:function(){this.disabled&&this.broadcast("ElOption","handleGroupDisabled",this.disabled)}},Ji,[],!1,null,null,null);Zi.options.__file="packages/select/src/option-group.vue";var Qi=Zi.exports;Qi.install=function(e){e.component(Qi.name,Qi)};var en=Qi,tn=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-table",class:[{"el-table--fit":e.fit,"el-table--striped":e.stripe,"el-table--border":e.border||e.isGroup,"el-table--hidden":e.isHidden,"el-table--group":e.isGroup,"el-table--fluid-height":e.maxHeight,"el-table--scrollable-x":e.layout.scrollX,"el-table--scrollable-y":e.layout.scrollY,"el-table--enable-row-hover":!e.store.states.isComplex,"el-table--enable-row-transition":0!==(e.store.states.data||[]).length&&(e.store.states.data||[]).length<100},e.tableSize?"el-table--"+e.tableSize:""],on:{mouseleave:function(t){e.handleMouseLeave(t)}}},[i("div",{ref:"hiddenColumns",staticClass:"hidden-columns"},[e._t("default")],2),e.showHeader?i("div",{directives:[{name:"mousewheel",rawName:"v-mousewheel",value:e.handleHeaderFooterMousewheel,expression:"handleHeaderFooterMousewheel"}],ref:"headerWrapper",staticClass:"el-table__header-wrapper"},[i("table-header",{ref:"tableHeader",style:{width:e.layout.bodyWidth?e.layout.bodyWidth+"px":""},attrs:{store:e.store,border:e.border,"default-sort":e.defaultSort}})],1):e._e(),i("div",{ref:"bodyWrapper",staticClass:"el-table__body-wrapper",class:[e.layout.scrollX?"is-scrolling-"+e.scrollPosition:"is-scrolling-none"],style:[e.bodyHeight]},[i("table-body",{style:{width:e.bodyWidth},attrs:{context:e.context,store:e.store,stripe:e.stripe,"row-class-name":e.rowClassName,"row-style":e.rowStyle,highlight:e.highlightCurrentRow}}),e.data&&0!==e.data.length?e._e():i("div",{ref:"emptyBlock",staticClass:"el-table__empty-block",style:e.emptyBlockStyle},[i("span",{staticClass:"el-table__empty-text"},[e._t("empty",[e._v(e._s(e.emptyText||e.t("el.table.emptyText")))])],2)]),e.$slots.append?i("div",{ref:"appendWrapper",staticClass:"el-table__append-wrapper"},[e._t("append")],2):e._e()],1),e.showSummary?i("div",{directives:[{name:"show",rawName:"v-show",value:e.data&&e.data.length>0,expression:"data && data.length > 0"},{name:"mousewheel",rawName:"v-mousewheel",value:e.handleHeaderFooterMousewheel,expression:"handleHeaderFooterMousewheel"}],ref:"footerWrapper",staticClass:"el-table__footer-wrapper"},[i("table-footer",{style:{width:e.layout.bodyWidth?e.layout.bodyWidth+"px":""},attrs:{store:e.store,border:e.border,"sum-text":e.sumText||e.t("el.table.sumText"),"summary-method":e.summaryMethod,"default-sort":e.defaultSort}})],1):e._e(),e.fixedColumns.length>0?i("div",{directives:[{name:"mousewheel",rawName:"v-mousewheel",value:e.handleFixedMousewheel,expression:"handleFixedMousewheel"}],ref:"fixedWrapper",staticClass:"el-table__fixed",style:[{width:e.layout.fixedWidth?e.layout.fixedWidth+"px":""},e.fixedHeight]},[e.showHeader?i("div",{ref:"fixedHeaderWrapper",staticClass:"el-table__fixed-header-wrapper"},[i("table-header",{ref:"fixedTableHeader",style:{width:e.bodyWidth},attrs:{fixed:"left",border:e.border,store:e.store}})],1):e._e(),i("div",{ref:"fixedBodyWrapper",staticClass:"el-table__fixed-body-wrapper",style:[{top:e.layout.headerHeight+"px"},e.fixedBodyHeight]},[i("table-body",{style:{width:e.bodyWidth},attrs:{fixed:"left",store:e.store,stripe:e.stripe,highlight:e.highlightCurrentRow,"row-class-name":e.rowClassName,"row-style":e.rowStyle}}),e.$slots.append?i("div",{staticClass:"el-table__append-gutter",style:{height:e.layout.appendHeight+"px"}}):e._e()],1),e.showSummary?i("div",{directives:[{name:"show",rawName:"v-show",value:e.data&&e.data.length>0,expression:"data && data.length > 0"}],ref:"fixedFooterWrapper",staticClass:"el-table__fixed-footer-wrapper"},[i("table-footer",{style:{width:e.bodyWidth},attrs:{fixed:"left",border:e.border,"sum-text":e.sumText||e.t("el.table.sumText"),"summary-method":e.summaryMethod,store:e.store}})],1):e._e()]):e._e(),e.rightFixedColumns.length>0?i("div",{directives:[{name:"mousewheel",rawName:"v-mousewheel",value:e.handleFixedMousewheel,expression:"handleFixedMousewheel"}],ref:"rightFixedWrapper",staticClass:"el-table__fixed-right",style:[{width:e.layout.rightFixedWidth?e.layout.rightFixedWidth+"px":"",right:e.layout.scrollY?(e.border?e.layout.gutterWidth:e.layout.gutterWidth||0)+"px":""},e.fixedHeight]},[e.showHeader?i("div",{ref:"rightFixedHeaderWrapper",staticClass:"el-table__fixed-header-wrapper"},[i("table-header",{ref:"rightFixedTableHeader",style:{width:e.bodyWidth},attrs:{fixed:"right",border:e.border,store:e.store}})],1):e._e(),i("div",{ref:"rightFixedBodyWrapper",staticClass:"el-table__fixed-body-wrapper",style:[{top:e.layout.headerHeight+"px"},e.fixedBodyHeight]},[i("table-body",{style:{width:e.bodyWidth},attrs:{fixed:"right",store:e.store,stripe:e.stripe,"row-class-name":e.rowClassName,"row-style":e.rowStyle,highlight:e.highlightCurrentRow}}),e.$slots.append?i("div",{staticClass:"el-table__append-gutter",style:{height:e.layout.appendHeight+"px"}}):e._e()],1),e.showSummary?i("div",{directives:[{name:"show",rawName:"v-show",value:e.data&&e.data.length>0,expression:"data && data.length > 0"}],ref:"rightFixedFooterWrapper",staticClass:"el-table__fixed-footer-wrapper"},[i("table-footer",{style:{width:e.bodyWidth},attrs:{fixed:"right",border:e.border,"sum-text":e.sumText||e.t("el.table.sumText"),"summary-method":e.summaryMethod,store:e.store}})],1):e._e()]):e._e(),e.rightFixedColumns.length>0?i("div",{ref:"rightFixedPatch",staticClass:"el-table__fixed-right-patch",style:{width:e.layout.scrollY?e.layout.gutterWidth+"px":"0",height:e.layout.headerHeight+"px"}}):e._e(),i("div",{directives:[{name:"show",rawName:"v-show",value:e.resizeProxyVisible,expression:"resizeProxyVisible"}],ref:"resizeProxy",staticClass:"el-table__column-resize-proxy"})])};tn._withStripped=!0;var nn=i(35),rn=i(48),sn=i.n(rn),an="undefined"!=typeof navigator&&navigator.userAgent.toLowerCase().indexOf("firefox")>-1,on={bind:function(e,t){var i,n;i=e,n=t.value,i&&i.addEventListener&&i.addEventListener(an?"DOMMouseScroll":"mousewheel",function(e){var t=sn()(e);n&&n.apply(this,[e,t])})}},ln="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},un=function(e){for(var t=e.target;t&&"HTML"!==t.tagName.toUpperCase();){if("TD"===t.tagName.toUpperCase())return t;t=t.parentNode}return null},cn=function(e){return null!==e&&"object"===(void 0===e?"undefined":ln(e))},hn=function(e,t,i,n,r){if(!t&&!n&&(!r||Array.isArray(r)&&!r.length))return e;i="string"==typeof i?"descending"===i?-1:1:i&&i<0?-1:1;var s=n?null:function(i,n){return r?(Array.isArray(r)||(r=[r]),r.map(function(t){return"string"==typeof t?k(i,t):t(i,n,e)})):("$key"!==t&&cn(i)&&"$value"in i&&(i=i.$value),[cn(i)?k(i,t):i])};return e.map(function(e,t){return{value:e,index:t,key:s?s(e,t):null}}).sort(function(e,t){var r=function(e,t){if(n)return n(e.value,t.value);for(var i=0,r=e.key.length;i<r;i++){if(e.key[i]<t.key[i])return-1;if(e.key[i]>t.key[i])return 1}return 0}(e,t);return r||(r=e.index-t.index),r*i}).map(function(e){return e.value})},dn=function(e,t){var i=null;return e.columns.forEach(function(e){e.id===t&&(i=e)}),i},pn=function(e,t){var i=(t.className||"").match(/el-table_[^\s]+/gm);return i?dn(e,i[0]):null},fn=function(e,t){if(!e)throw new Error("row is required when get row identity");if("string"==typeof t){if(t.indexOf(".")<0)return e[t];for(var i=t.split("."),n=e,r=0;r<i.length;r++)n=n[i[r]];return n}if("function"==typeof t)return t.call(null,e)},mn=function(e,t){var i={};return(e||[]).forEach(function(e,n){i[fn(e,t)]={row:e,index:n}}),i};function vn(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function gn(e){return void 0!==e&&(e=parseInt(e,10),isNaN(e)&&(e=null)),e}function bn(e){return"number"==typeof e?e:"string"==typeof e?/^\d+(?:px)?$/.test(e)?parseInt(e,10):e:null}function yn(e,t,i){var n=!1,r=e.indexOf(t),s=-1!==r,a=function(){e.push(t),n=!0},o=function(){e.splice(r,1),n=!0};return"boolean"==typeof i?i&&!s?a():!i&&s&&o():s?o():a(),n}function wn(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"children",n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"hasChildren",r=function(e){return!(Array.isArray(e)&&e.length)};e.forEach(function(e){if(e[n])t(e,null,0);else{var s=e[i];r(s)||function e(s,a,o){t(s,a,o),a.forEach(function(s){if(s[n])t(s,null,o+1);else{var a=s[i];r(a)||e(s,a,o+1)}})}(e,s,0)}})}var _n={data:function(){return{states:{defaultExpandAll:!1,expandRows:[]}}},methods:{updateExpandRows:function(){var e=this.states,t=e.data,i=void 0===t?[]:t,n=e.rowKey,r=e.defaultExpandAll,s=e.expandRows;if(r)this.states.expandRows=i.slice();else if(n){var a=mn(s,n);this.states.expandRows=i.reduce(function(e,t){var i=fn(t,n);return a[i]&&e.push(t),e},[])}else this.states.expandRows=[]},toggleRowExpansion:function(e,t){yn(this.states.expandRows,e,t)&&(this.table.$emit("expand-change",e,this.states.expandRows.slice()),this.scheduleLayout())},setExpandRowKeys:function(e){this.assertRowKey();var t=this.states,i=t.data,n=t.rowKey,r=mn(i,n);this.states.expandRows=e.reduce(function(e,t){var i=r[t];return i&&e.push(i.row),e},[])},isRowExpanded:function(e){var t=this.states,i=t.expandRows,n=void 0===i?[]:i,r=t.rowKey;return r?!!mn(n,r)[fn(e,r)]:-1!==n.indexOf(e)}}},xn={data:function(){return{states:{_currentRowKey:null,currentRow:null}}},methods:{setCurrentRowKey:function(e){this.assertRowKey(),this.states._currentRowKey=e,this.setCurrentRowByKey(e)},restoreCurrentRowKey:function(){this.states._currentRowKey=null},setCurrentRowByKey:function(e){var t=this.states,i=t.data,n=void 0===i?[]:i,r=t.rowKey,s=null;r&&(s=T(n,function(t){return fn(t,r)===e})),t.currentRow=s},updateCurrentRow:function(e){var t=this.states,i=this.table,n=t.currentRow;if(e&&e!==n)return t.currentRow=e,void i.$emit("current-change",e,n);!e&&n&&(t.currentRow=null,i.$emit("current-change",null,n))},updateCurrentRowData:function(){var e=this.states,t=this.table,i=e.rowKey,n=e._currentRowKey,r=e.data||[],s=e.currentRow;if(-1===r.indexOf(s)&&s){if(i){var a=fn(s,i);this.setCurrentRowByKey(a)}else e.currentRow=null;null===e.currentRow&&t.$emit("current-change",null,s)}else n&&(this.setCurrentRowByKey(n),this.restoreCurrentRowKey())}}},Cn=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var i=arguments[t];for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n])}return e},kn={data:function(){return{states:{expandRowKeys:[],treeData:{},indent:16,lazy:!1,lazyTreeNodeMap:{},lazyColumnIdentifier:"hasChildren",childrenColumnName:"children"}}},computed:{normalizedData:function(){if(!this.states.rowKey)return{};var e=this.states.data||[];return this.normalize(e)},normalizedLazyNode:function(){var e=this.states,t=e.rowKey,i=e.lazyTreeNodeMap,n=e.lazyColumnIdentifier,r=Object.keys(i),s={};return r.length?(r.forEach(function(e){if(i[e].length){var r={children:[]};i[e].forEach(function(e){var i=fn(e,t);r.children.push(i),e[n]&&!s[i]&&(s[i]={children:[]})}),s[e]=r}}),s):s}},watch:{normalizedData:"updateTreeData",normalizedLazyNode:"updateTreeData"},methods:{normalize:function(e){var t=this.states,i=t.childrenColumnName,n=t.lazyColumnIdentifier,r=t.rowKey,s=t.lazy,a={};return wn(e,function(e,t,i){var n=fn(e,r);Array.isArray(t)?a[n]={children:t.map(function(e){return fn(e,r)}),level:i}:s&&(a[n]={children:[],lazy:!0,level:i})},i,n),a},updateTreeData:function(){var e=this.normalizedData,t=this.normalizedLazyNode,i=Object.keys(e),n={};if(i.length){var r=this.states,s=r.treeData,a=r.defaultExpandAll,o=r.expandRowKeys,l=r.lazy,u=[],c=function(e,t){var i=a||o&&-1!==o.indexOf(t);return!!(e&&e.expanded||i)};i.forEach(function(t){var i=s[t],r=Cn({},e[t]);if(r.expanded=c(i,t),r.lazy){var a=i||{},o=a.loaded,l=void 0!==o&&o,h=a.loading,d=void 0!==h&&h;r.loaded=!!l,r.loading=!!d,u.push(t)}n[t]=r});var h=Object.keys(t);l&&h.length&&u.length&&h.forEach(function(e){var i=s[e],r=t[e].children;if(-1!==u.indexOf(e)){if(0!==n[e].children.length)throw new Error("[ElTable]children must be an empty array.");n[e].children=r}else{var a=i||{},o=a.loaded,l=void 0!==o&&o,h=a.loading,d=void 0!==h&&h;n[e]={lazy:!0,loaded:!!l,loading:!!d,expanded:c(i,e),children:r,level:""}}})}this.states.treeData=n,this.updateTableScrollY()},updateTreeExpandKeys:function(e){this.states.expandRowKeys=e,this.updateTreeData()},toggleTreeExpansion:function(e,t){this.assertRowKey();var i=this.states,n=i.rowKey,r=i.treeData,s=fn(e,n),a=s&&r[s];if(s&&a&&"expanded"in a){var o=a.expanded;t=void 0===t?!a.expanded:t,r[s].expanded=t,o!==t&&this.table.$emit("expand-change",e,t),this.updateTableScrollY()}},loadOrToggle:function(e){this.assertRowKey();var t=this.states,i=t.lazy,n=t.treeData,r=t.rowKey,s=fn(e,r),a=n[s];i&&a&&"loaded"in a&&!a.loaded?this.loadData(e,s,a):this.toggleTreeExpansion(e)},loadData:function(e,t,i){var n=this,r=this.table.load,s=this.states,a=s.lazyTreeNodeMap,o=s.treeData;r&&!o[t].loaded&&(o[t].loading=!0,r(e,i,function(i){if(!Array.isArray(i))throw new Error("[ElTable] data must be an array");o[t].loading=!1,o[t].loaded=!0,o[t].expanded=!0,i.length&&n.$set(a,t,i),n.table.$emit("expand-change",e,!0)}))}}},Sn=function e(t){var i=[];return t.forEach(function(t){t.children?i.push.apply(i,e(t.children)):i.push(t)}),i},Dn=h.a.extend({data:function(){return{states:{rowKey:null,data:[],isComplex:!1,_columns:[],originColumns:[],columns:[],fixedColumns:[],rightFixedColumns:[],leafColumns:[],fixedLeafColumns:[],rightFixedLeafColumns:[],leafColumnsLength:0,fixedLeafColumnsLength:0,rightFixedLeafColumnsLength:0,isAllSelected:!1,selection:[],reserveSelection:!1,selectOnIndeterminate:!1,selectable:null,filters:{},filteredData:null,sortingColumn:null,sortProp:null,sortOrder:null,hoverRow:null}}},mixins:[_n,xn,kn],methods:{assertRowKey:function(){if(!this.states.rowKey)throw new Error("[ElTable] prop row-key is required")},updateColumns:function(){var e=this.states,t=e._columns||[];e.fixedColumns=t.filter(function(e){return!0===e.fixed||"left"===e.fixed}),e.rightFixedColumns=t.filter(function(e){return"right"===e.fixed}),e.fixedColumns.length>0&&t[0]&&"selection"===t[0].type&&!t[0].fixed&&(t[0].fixed=!0,e.fixedColumns.unshift(t[0]));var i=t.filter(function(e){return!e.fixed});e.originColumns=[].concat(e.fixedColumns).concat(i).concat(e.rightFixedColumns);var n=Sn(i),r=Sn(e.fixedColumns),s=Sn(e.rightFixedColumns);e.leafColumnsLength=n.length,e.fixedLeafColumnsLength=r.length,e.rightFixedLeafColumnsLength=s.length,e.columns=[].concat(r).concat(n).concat(s),e.isComplex=e.fixedColumns.length>0||e.rightFixedColumns.length>0},scheduleLayout:function(e){e&&this.updateColumns(),this.table.debouncedUpdateLayout()},isSelected:function(e){var t=this.states.selection;return(void 0===t?[]:t).indexOf(e)>-1},clearSelection:function(){var e=this.states;e.isAllSelected=!1,e.selection.length&&(e.selection=[],this.table.$emit("selection-change",[]))},cleanSelection:function(){var e=this.states,t=e.data,i=e.rowKey,n=e.selection,r=void 0;if(i){r=[];var s=mn(n,i),a=mn(t,i);for(var o in s)s.hasOwnProperty(o)&&!a[o]&&r.push(s[o].row)}else r=n.filter(function(e){return-1===t.indexOf(e)});if(r.length){var l=n.filter(function(e){return-1===r.indexOf(e)});e.selection=l,this.table.$emit("selection-change",l.slice())}},toggleRowSelection:function(e,t){var i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(yn(this.states.selection,e,t)){var n=(this.states.selection||[]).slice();i&&this.table.$emit("select",n,e),this.table.$emit("selection-change",n)}},_toggleAllSelection:function(){var e=this.states,t=e.data,i=void 0===t?[]:t,n=e.selection,r=e.selectOnIndeterminate?!e.isAllSelected:!(e.isAllSelected||n.length);e.isAllSelected=r;var s=!1;i.forEach(function(t,i){e.selectable?e.selectable.call(null,t,i)&&yn(n,t,r)&&(s=!0):yn(n,t,r)&&(s=!0)}),s&&this.table.$emit("selection-change",n?n.slice():[]),this.table.$emit("select-all",n)},updateSelectionByRowKey:function(){var e=this.states,t=e.selection,i=e.rowKey,n=e.data,r=mn(t,i);n.forEach(function(e){var n=fn(e,i),s=r[n];s&&(t[s.index]=e)})},updateAllSelected:function(){var e=this.states,t=e.selection,i=e.rowKey,n=e.selectable,r=e.data||[];if(0!==r.length){var s=void 0;i&&(s=mn(t,i));for(var a,o=!0,l=0,u=0,c=r.length;u<c;u++){var h=r[u],d=n&&n.call(null,h,u);if(a=h,s?s[fn(a,i)]:-1!==t.indexOf(a))l++;else if(!n||d){o=!1;break}}0===l&&(o=!1),e.isAllSelected=o}else e.isAllSelected=!1},updateFilters:function(e,t){Array.isArray(e)||(e=[e]);var i=this.states,n={};return e.forEach(function(e){i.filters[e.id]=t,n[e.columnKey||e.id]=t}),n},updateSort:function(e,t,i){this.states.sortingColumn&&this.states.sortingColumn!==e&&(this.states.sortingColumn.order=null),this.states.sortingColumn=e,this.states.sortProp=t,this.states.sortOrder=i},execFilter:function(){var e=this,t=this.states,i=t._data,n=t.filters,r=i;Object.keys(n).forEach(function(i){var n=t.filters[i];if(n&&0!==n.length){var s=dn(e.states,i);s&&s.filterMethod&&(r=r.filter(function(e){return n.some(function(t){return s.filterMethod.call(null,t,e,s)})}))}}),t.filteredData=r},execSort:function(){var e=this.states;e.data=function(e,t){var i=t.sortingColumn;return i&&"string"!=typeof i.sortable?hn(e,t.sortProp,t.sortOrder,i.sortMethod,i.sortBy):e}(e.filteredData,e)},execQuery:function(e){e&&e.filter||this.execFilter(),this.execSort()},clearFilter:function(e){var t=this.states,i=this.table.$refs,n=i.tableHeader,r=i.fixedTableHeader,s=i.rightFixedTableHeader,a={};n&&(a=Z(a,n.filterPanels)),r&&(a=Z(a,r.filterPanels)),s&&(a=Z(a,s.filterPanels));var o=Object.keys(a);if(o.length)if("string"==typeof e&&(e=[e]),Array.isArray(e)){var l=e.map(function(e){return function(e,t){for(var i=null,n=0;n<e.columns.length;n++){var r=e.columns[n];if(r.columnKey===t){i=r;break}}return i}(t,e)});o.forEach(function(e){l.find(function(t){return t.id===e})&&(a[e].filteredValue=[])}),this.commit("filterChange",{column:l,values:[],silent:!0,multi:!0})}else o.forEach(function(e){a[e].filteredValue=[]}),t.filters={},this.commit("filterChange",{column:{},values:[],silent:!0})},clearSort:function(){this.states.sortingColumn&&(this.updateSort(null,null,null),this.commit("changeSortCondition",{silent:!0}))},setExpandRowKeysAdapter:function(e){this.setExpandRowKeys(e),this.updateTreeExpandKeys(e)},toggleRowExpansionAdapter:function(e,t){this.states.columns.some(function(e){return"expand"===e.type})?this.toggleRowExpansion(e,t):this.toggleTreeExpansion(e,t)}}});Dn.prototype.mutations={setData:function(e,t){var i=e._data!==t;e._data=t,this.execQuery(),this.updateCurrentRowData(),this.updateExpandRows(),e.reserveSelection?(this.assertRowKey(),this.updateSelectionByRowKey()):i?this.clearSelection():this.cleanSelection(),this.updateAllSelected(),this.updateTableScrollY()},insertColumn:function(e,t,i,n){var r=e._columns;n&&((r=n.children)||(r=n.children=[])),void 0!==i?r.splice(i,0,t):r.push(t),"selection"===t.type&&(e.selectable=t.selectable,e.reserveSelection=t.reserveSelection),this.table.$ready&&(this.updateColumns(),this.scheduleLayout())},removeColumn:function(e,t,i){var n=e._columns;i&&((n=i.children)||(n=i.children=[])),n&&n.splice(n.indexOf(t),1),this.table.$ready&&(this.updateColumns(),this.scheduleLayout())},sort:function(e,t){var i=t.prop,n=t.order,r=t.init;if(i){var s=T(e.columns,function(e){return e.property===i});s&&(s.order=n,this.updateSort(s,i,n),this.commit("changeSortCondition",{init:r}))}},changeSortCondition:function(e,t){var i=e.sortingColumn,n=e.sortProp,r=e.sortOrder;null===r&&(e.sortingColumn=null,e.sortProp=null);this.execQuery({filter:!0}),t&&(t.silent||t.init)||this.table.$emit("sort-change",{column:i,prop:n,order:r}),this.updateTableScrollY()},filterChange:function(e,t){var i=t.column,n=t.values,r=t.silent,s=this.updateFilters(i,n);this.execQuery(),r||this.table.$emit("filter-change",s),this.updateTableScrollY()},toggleAllSelection:function(){this.toggleAllSelection()},rowSelectedChanged:function(e,t){this.toggleRowSelection(t),this.updateAllSelected()},setHoverRow:function(e,t){e.hoverRow=t},setCurrentRow:function(e,t){this.updateCurrentRow(t)}},Dn.prototype.commit=function(e){var t=this.mutations;if(!t[e])throw new Error("Action not found: "+e);for(var i=arguments.length,n=Array(i>1?i-1:0),r=1;r<i;r++)n[r-1]=arguments[r];t[e].apply(this,[this.states].concat(n))},Dn.prototype.updateTableScrollY=function(){h.a.nextTick(this.table.updateScrollY)};var $n=Dn;function En(e){var t={};return Object.keys(e).forEach(function(i){var n=e[i],r=void 0;"string"==typeof n?r=function(){return this.store.states[n]}:"function"==typeof n?r=function(){return n.call(this,this.store.states)}:console.error("invalid value type"),r&&(t[i]=r)}),t}var Tn=function(){function e(t){for(var i in function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.observers=[],this.table=null,this.store=null,this.columns=null,this.fit=!0,this.showHeader=!0,this.height=null,this.scrollX=!1,this.scrollY=!1,this.bodyWidth=null,this.fixedWidth=null,this.rightFixedWidth=null,this.tableHeight=null,this.headerHeight=44,this.appendHeight=0,this.footerHeight=44,this.viewportHeight=null,this.bodyHeight=null,this.fixedBodyHeight=null,this.gutterWidth=$e(),t)t.hasOwnProperty(i)&&(this[i]=t[i]);if(!this.table)throw new Error("table is required for Table Layout");if(!this.store)throw new Error("store is required for Table Layout")}return e.prototype.updateScrollY=function(){if(null===this.height)return!1;var e=this.table.bodyWrapper;if(this.table.$el&&e){var t=e.querySelector(".el-table__body"),i=this.scrollY,n=t.offsetHeight>this.bodyHeight;return this.scrollY=n,i!==n}return!1},e.prototype.setHeight=function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"height";if(!h.a.prototype.$isServer){var n=this.table.$el;if(e=bn(e),this.height=e,!n&&(e||0===e))return h.a.nextTick(function(){return t.setHeight(e,i)});"number"==typeof e?(n.style[i]=e+"px",this.updateElsHeight()):"string"==typeof e&&(n.style[i]=e,this.updateElsHeight())}},e.prototype.setMaxHeight=function(e){this.setHeight(e,"max-height")},e.prototype.getFlattenColumns=function(){var e=[];return this.table.columns.forEach(function(t){t.isColumnGroup?e.push.apply(e,t.columns):e.push(t)}),e},e.prototype.updateElsHeight=function(){var e=this;if(!this.table.$ready)return h.a.nextTick(function(){return e.updateElsHeight()});var t=this.table.$refs,i=t.headerWrapper,n=t.appendWrapper,r=t.footerWrapper;if(this.appendHeight=n?n.offsetHeight:0,!this.showHeader||i){var s=i?i.querySelector(".el-table__header tr"):null,a=this.headerDisplayNone(s),o=this.headerHeight=this.showHeader?i.offsetHeight:0;if(this.showHeader&&!a&&i.offsetWidth>0&&(this.table.columns||[]).length>0&&o<2)return h.a.nextTick(function(){return e.updateElsHeight()});var l=this.tableHeight=this.table.$el.clientHeight,u=this.footerHeight=r?r.offsetHeight:0;null!==this.height&&(this.bodyHeight=l-o-u+(r?1:0)),this.fixedBodyHeight=this.scrollX?this.bodyHeight-this.gutterWidth:this.bodyHeight;var c=!(this.store.states.data&&this.store.states.data.length);this.viewportHeight=this.scrollX?l-(c?0:this.gutterWidth):l,this.updateScrollY(),this.notifyObservers("scrollable")}},e.prototype.headerDisplayNone=function(e){if(!e)return!0;for(var t=e;"DIV"!==t.tagName;){if("none"===getComputedStyle(t).display)return!0;t=t.parentElement}return!1},e.prototype.updateColumnsWidth=function(){if(!h.a.prototype.$isServer){var e=this.fit,t=this.table.$el.clientWidth,i=0,n=this.getFlattenColumns(),r=n.filter(function(e){return"number"!=typeof e.width});if(n.forEach(function(e){"number"==typeof e.width&&e.realWidth&&(e.realWidth=null)}),r.length>0&&e){n.forEach(function(e){i+=e.width||e.minWidth||80});var s=this.scrollY?this.gutterWidth:0;if(i<=t-s){this.scrollX=!1;var a=t-s-i;if(1===r.length)r[0].realWidth=(r[0].minWidth||80)+a;else{var o=a/r.reduce(function(e,t){return e+(t.minWidth||80)},0),l=0;r.forEach(function(e,t){if(0!==t){var i=Math.floor((e.minWidth||80)*o);l+=i,e.realWidth=(e.minWidth||80)+i}}),r[0].realWidth=(r[0].minWidth||80)+a-l}}else this.scrollX=!0,r.forEach(function(e){e.realWidth=e.minWidth});this.bodyWidth=Math.max(i,t),this.table.resizeState.width=this.bodyWidth}else n.forEach(function(e){e.width||e.minWidth?e.realWidth=e.width||e.minWidth:e.realWidth=80,i+=e.realWidth}),this.scrollX=i>t,this.bodyWidth=i;var u=this.store.states.fixedColumns;if(u.length>0){var c=0;u.forEach(function(e){c+=e.realWidth||e.width}),this.fixedWidth=c}var d=this.store.states.rightFixedColumns;if(d.length>0){var p=0;d.forEach(function(e){p+=e.realWidth||e.width}),this.rightFixedWidth=p}this.notifyObservers("columns")}},e.prototype.addObserver=function(e){this.observers.push(e)},e.prototype.removeObserver=function(e){var t=this.observers.indexOf(e);-1!==t&&this.observers.splice(t,1)},e.prototype.notifyObservers=function(e){var t=this;this.observers.forEach(function(i){switch(e){case"columns":i.onColumnsChange(t);break;case"scrollable":i.onScrollableChange(t);break;default:throw new Error("Table Layout don't have event "+e+".")}})},e}(),Mn={created:function(){this.tableLayout.addObserver(this)},destroyed:function(){this.tableLayout.removeObserver(this)},computed:{tableLayout:function(){var e=this.layout;if(!e&&this.table&&(e=this.table.layout),!e)throw new Error("Can not find table layout.");return e}},mounted:function(){this.onColumnsChange(this.tableLayout),this.onScrollableChange(this.tableLayout)},updated:function(){this.__updated__||(this.onColumnsChange(this.tableLayout),this.onScrollableChange(this.tableLayout),this.__updated__=!0)},methods:{onColumnsChange:function(e){var t=this.$el.querySelectorAll("colgroup > col");if(t.length){var i=e.getFlattenColumns(),n={};i.forEach(function(e){n[e.id]=e});for(var r=0,s=t.length;r<s;r++){var a=t[r],o=a.getAttribute("name"),l=n[o];l&&a.setAttribute("width",l.realWidth||l.width)}}},onScrollableChange:function(e){for(var t=this.$el.querySelectorAll("colgroup > col[name=gutter]"),i=0,n=t.length;i<n;i++){t[i].setAttribute("width",e.scrollY?e.gutterWidth:"0")}for(var r=this.$el.querySelectorAll("th.gutter"),s=0,a=r.length;s<a;s++){var o=r[s];o.style.width=e.scrollY?e.gutterWidth+"px":"0",o.style.display=e.scrollY?"":"none"}}}},Nn="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},Pn=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var i=arguments[t];for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n])}return e},On={name:"ElTableBody",mixins:[Mn],components:{ElCheckbox:Vi,ElTooltip:ui},props:{store:{required:!0},stripe:Boolean,context:{},rowClassName:[String,Function],rowStyle:[Object,Function],fixed:String,highlight:Boolean},render:function(e){var t=this,i=this.data||[];return e("table",{class:"el-table__body",attrs:{cellspacing:"0",cellpadding:"0",border:"0"}},[e("colgroup",[this.columns.map(function(t){return e("col",{attrs:{name:t.id},key:t.id})})]),e("tbody",[i.reduce(function(e,i){return e.concat(t.wrappedRowRender(i,e.length))},[]),e("el-tooltip",{attrs:{effect:this.table.tooltipEffect,placement:"top",content:this.tooltipContent},ref:"tooltip"})])])},computed:Pn({table:function(){return this.$parent}},En({data:"data",columns:"columns",treeIndent:"indent",leftFixedLeafCount:"fixedLeafColumnsLength",rightFixedLeafCount:"rightFixedLeafColumnsLength",columnsCount:function(e){return e.columns.length},leftFixedCount:function(e){return e.fixedColumns.length},rightFixedCount:function(e){return e.rightFixedColumns.length},hasExpandColumn:function(e){return e.columns.some(function(e){return"expand"===e.type})}}),{firstDefaultColumnIndex:function(){return E(this.columns,function(e){return"default"===e.type})}}),watch:{"store.states.hoverRow":function(e,t){var i=this;if(this.store.states.isComplex&&!this.$isServer){var n=window.requestAnimationFrame;n||(n=function(e){return setTimeout(e,16)}),n(function(){var n=i.$el.querySelectorAll(".el-table__row"),r=n[t],s=n[e];r&&me(r,"hover-row"),s&&fe(s,"hover-row")})}}},data:function(){return{tooltipContent:""}},created:function(){this.activateTooltip=et()(50,function(e){return e.handleShowPopper()})},methods:{getKeyOfRow:function(e,t){var i=this.table.rowKey;return i?fn(e,i):t},isColumnHidden:function(e){return!0===this.fixed||"left"===this.fixed?e>=this.leftFixedLeafCount:"right"===this.fixed?e<this.columnsCount-this.rightFixedLeafCount:e<this.leftFixedLeafCount||e>=this.columnsCount-this.rightFixedLeafCount},getSpan:function(e,t,i,n){var r=1,s=1,a=this.table.spanMethod;if("function"==typeof a){var o=a({row:e,column:t,rowIndex:i,columnIndex:n});Array.isArray(o)?(r=o[0],s=o[1]):"object"===(void 0===o?"undefined":Nn(o))&&(r=o.rowspan,s=o.colspan)}return{rowspan:r,colspan:s}},getRowStyle:function(e,t){var i=this.table.rowStyle;return"function"==typeof i?i.call(null,{row:e,rowIndex:t}):i||null},getRowClass:function(e,t){var i=["el-table__row"];this.table.highlightCurrentRow&&e===this.store.states.currentRow&&i.push("current-row"),this.stripe&&t%2==1&&i.push("el-table__row--striped");var n=this.table.rowClassName;return"string"==typeof n?i.push(n):"function"==typeof n&&i.push(n.call(null,{row:e,rowIndex:t})),this.store.states.expandRows.indexOf(e)>-1&&i.push("expanded"),i},getCellStyle:function(e,t,i,n){var r=this.table.cellStyle;return"function"==typeof r?r.call(null,{rowIndex:e,columnIndex:t,row:i,column:n}):r},getCellClass:function(e,t,i,n){var r=[n.id,n.align,n.className];this.isColumnHidden(t)&&r.push("is-hidden");var s=this.table.cellClassName;return"string"==typeof s?r.push(s):"function"==typeof s&&r.push(s.call(null,{rowIndex:e,columnIndex:t,row:i,column:n})),r.join(" ")},getColspanRealWidth:function(e,t,i){return t<1?e[i].realWidth:e.map(function(e){return e.realWidth}).slice(i,i+t).reduce(function(e,t){return e+t},-1)},handleCellMouseEnter:function(e,t){var i=this.table,n=un(e);if(n){var r=pn(i,n),s=i.hoverState={cell:n,column:r,row:t};i.$emit("cell-mouse-enter",s.row,s.column,s.cell,e)}var a=e.target.querySelector(".cell");if(pe(a,"el-tooltip")&&a.childNodes.length){var o=document.createRange();if(o.setStart(a,0),o.setEnd(a,a.childNodes.length),(o.getBoundingClientRect().width+((parseInt(ve(a,"paddingLeft"),10)||0)+(parseInt(ve(a,"paddingRight"),10)||0))>a.offsetWidth||a.scrollWidth>a.offsetWidth)&&this.$refs.tooltip){var l=this.$refs.tooltip;this.tooltipContent=n.innerText||n.textContent,l.referenceElm=n,l.$refs.popper&&(l.$refs.popper.style.display="none"),l.doDestroy(),l.setExpectedState(!0),this.activateTooltip(l)}}},handleCellMouseLeave:function(e){var t=this.$refs.tooltip;if(t&&(t.setExpectedState(!1),t.handleClosePopper()),un(e)){var i=this.table.hoverState||{};this.table.$emit("cell-mouse-leave",i.row,i.column,i.cell,e)}},handleMouseEnter:et()(30,function(e){this.store.commit("setHoverRow",e)}),handleMouseLeave:et()(30,function(){this.store.commit("setHoverRow",null)}),handleContextMenu:function(e,t){this.handleEvent(e,t,"contextmenu")},handleDoubleClick:function(e,t){this.handleEvent(e,t,"dblclick")},handleClick:function(e,t){this.store.commit("setCurrentRow",t),this.handleEvent(e,t,"click")},handleEvent:function(e,t,i){var n=this.table,r=un(e),s=void 0;r&&(s=pn(n,r))&&n.$emit("cell-"+i,t,s,r,e),n.$emit("row-"+i,t,s,e)},rowRender:function(e,t,i){var n=this,r=this.$createElement,s=this.treeIndent,a=this.columns,o=this.firstDefaultColumnIndex,l=a.map(function(e,t){return n.isColumnHidden(t)}),u=this.getRowClass(e,t),c=!0;return i&&(u.push("el-table__row--level-"+i.level),c=i.display),r("tr",{style:[c?null:{display:"none"},this.getRowStyle(e,t)],class:u,key:this.getKeyOfRow(e,t),on:{dblclick:function(t){return n.handleDoubleClick(t,e)},click:function(t){return n.handleClick(t,e)},contextmenu:function(t){return n.handleContextMenu(t,e)},mouseenter:function(e){return n.handleMouseEnter(t)},mouseleave:this.handleMouseLeave}},[a.map(function(u,c){var h=n.getSpan(e,u,t,c),d=h.rowspan,p=h.colspan;if(!d||!p)return null;var f=Pn({},u);f.realWidth=n.getColspanRealWidth(a,p,c);var m={store:n.store,_self:n.context||n.table.$vnode.context,column:f,row:e,$index:t};return c===o&&i&&(m.treeNode={indent:i.level*s,level:i.level},"boolean"==typeof i.expanded&&(m.treeNode.expanded=i.expanded,"loading"in i&&(m.treeNode.loading=i.loading),"noLazyChildren"in i&&(m.treeNode.noLazyChildren=i.noLazyChildren))),r("td",{style:n.getCellStyle(t,c,e,u),class:n.getCellClass(t,c,e,u),attrs:{rowspan:d,colspan:p},on:{mouseenter:function(t){return n.handleCellMouseEnter(t,e)},mouseleave:n.handleCellMouseLeave}},[u.renderCell.call(n._renderProxy,n.$createElement,m,l[c])])})])},wrappedRowRender:function(e,t){var i=this,n=this.$createElement,r=this.store,s=r.isRowExpanded,a=r.assertRowKey,o=r.states,l=o.treeData,u=o.lazyTreeNodeMap,c=o.childrenColumnName,h=o.rowKey;if(this.hasExpandColumn&&s(e)){var d=this.table.renderExpanded,p=this.rowRender(e,t);return d?[[p,n("tr",{key:"expanded-row__"+p.key},[n("td",{attrs:{colspan:this.columnsCount},class:"el-table__expanded-cell"},[d(this.$createElement,{row:e,$index:t,store:this.store})])])]]:(console.error("[Element Error]renderExpanded is required."),p)}if(Object.keys(l).length){a();var f=fn(e,h),m=l[f],v=null;m&&(v={expanded:m.expanded,level:m.level,display:!0},"boolean"==typeof m.lazy&&("boolean"==typeof m.loaded&&m.loaded&&(v.noLazyChildren=!(m.children&&m.children.length)),v.loading=m.loading));var g=[this.rowRender(e,t,v)];if(m){var b=0;m.display=!0,function e(n,r){n&&n.length&&r&&n.forEach(function(n){var s={display:r.display&&r.expanded,level:r.level+1},a=fn(n,h);if(null==a)throw new Error("for nested data item, row-key is required.");if((m=Pn({},l[a]))&&(s.expanded=m.expanded,m.level=m.level||s.level,m.display=!(!m.expanded||!s.display),"boolean"==typeof m.lazy&&("boolean"==typeof m.loaded&&m.loaded&&(s.noLazyChildren=!(m.children&&m.children.length)),s.loading=m.loading)),b++,g.push(i.rowRender(n,t+b,s)),m){var o=u[a]||n[c];e(o,m)}})}(u[f]||e[c],m)}return g}return this.rowRender(e,t)}}},In=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"}},[e.multiple?i("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleOutsideClick,expression:"handleOutsideClick"},{name:"show",rawName:"v-show",value:e.showPopper,expression:"showPopper"}],staticClass:"el-table-filter"},[i("div",{staticClass:"el-table-filter__content"},[i("el-scrollbar",{attrs:{"wrap-class":"el-table-filter__wrap"}},[i("el-checkbox-group",{staticClass:"el-table-filter__checkbox-group",model:{value:e.filteredValue,callback:function(t){e.filteredValue=t},expression:"filteredValue"}},e._l(e.filters,function(t){return i("el-checkbox",{key:t.value,attrs:{label:t.value}},[e._v(e._s(t.text))])}),1)],1)],1),i("div",{staticClass:"el-table-filter__bottom"},[i("button",{class:{"is-disabled":0===e.filteredValue.length},attrs:{disabled:0===e.filteredValue.length},on:{click:e.handleConfirm}},[e._v(e._s(e.t("el.table.confirmFilter")))]),i("button",{on:{click:e.handleReset}},[e._v(e._s(e.t("el.table.resetFilter")))])])]):i("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleOutsideClick,expression:"handleOutsideClick"},{name:"show",rawName:"v-show",value:e.showPopper,expression:"showPopper"}],staticClass:"el-table-filter"},[i("ul",{staticClass:"el-table-filter__list"},[i("li",{staticClass:"el-table-filter__list-item",class:{"is-active":void 0===e.filterValue||null===e.filterValue},on:{click:function(t){e.handleSelect(null)}}},[e._v(e._s(e.t("el.table.clearFilter")))]),e._l(e.filters,function(t){return i("li",{key:t.value,staticClass:"el-table-filter__list-item",class:{"is-active":e.isActive(t)},attrs:{label:t.value},on:{click:function(i){e.handleSelect(t.value)}}},[e._v(e._s(t.text))])})],2)])])};In._withStripped=!0;var An=[];!h.a.prototype.$isServer&&document.addEventListener("click",function(e){An.forEach(function(t){var i=e.target;t&&t.$el&&(i===t.$el||t.$el.contains(i)||t.handleOutsideClick&&t.handleOutsideClick(e))})});var Fn=function(e){e&&An.push(e)},Ln=function(e){-1!==An.indexOf(e)&&An.splice(e,1)},Vn=r({name:"ElTableFilterPanel",mixins:[Oe,q],directives:{Clickoutside:at},components:{ElCheckbox:Vi,ElCheckboxGroup:Yi,ElScrollbar:Ze},props:{placement:{type:String,default:"bottom-end"}},methods:{isActive:function(e){return e.value===this.filterValue},handleOutsideClick:function(){var e=this;setTimeout(function(){e.showPopper=!1},16)},handleConfirm:function(){this.confirmFilter(this.filteredValue),this.handleOutsideClick()},handleReset:function(){this.filteredValue=[],this.confirmFilter(this.filteredValue),this.handleOutsideClick()},handleSelect:function(e){this.filterValue=e,null!=e?this.confirmFilter(this.filteredValue):this.confirmFilter([]),this.handleOutsideClick()},confirmFilter:function(e){this.table.store.commit("filterChange",{column:this.column,values:e}),this.table.store.updateAllSelected()}},data:function(){return{table:null,cell:null,column:null}},computed:{filters:function(){return this.column&&this.column.filters},filterValue:{get:function(){return(this.column.filteredValue||[])[0]},set:function(e){this.filteredValue&&(null!=e?this.filteredValue.splice(0,1,e):this.filteredValue.splice(0,1))}},filteredValue:{get:function(){return this.column&&this.column.filteredValue||[]},set:function(e){this.column&&(this.column.filteredValue=e)}},multiple:function(){return!this.column||this.column.filterMultiple}},mounted:function(){var e=this;this.popperElm=this.$el,this.referenceElm=this.cell,this.table.bodyWrapper.addEventListener("scroll",function(){e.updatePopper()}),this.$watch("showPopper",function(t){e.column&&(e.column.filterOpened=t),t?Fn(e):Ln(e)})},watch:{showPopper:function(e){!0===e&&parseInt(this.popperJS._popper.style.zIndex,10)<Se.zIndex&&(this.popperJS._popper.style.zIndex=Se.nextZIndex())}}},In,[],!1,null,null,null);Vn.options.__file="packages/table/src/filter-panel.vue";var Bn=Vn.exports,zn=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var i=arguments[t];for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n])}return e},Hn=function(e){var t=1;e.forEach(function(e){e.level=1,function e(i,n){if(n&&(i.level=n.level+1,t<i.level&&(t=i.level)),i.children){var r=0;i.children.forEach(function(t){e(t,i),r+=t.colSpan}),i.colSpan=r}else i.colSpan=1}(e)});for(var i=[],n=0;n<t;n++)i.push([]);return function e(t){var i=[];return t.forEach(function(t){t.children?(i.push(t),i.push.apply(i,e(t.children))):i.push(t)}),i}(e).forEach(function(e){e.children?e.rowSpan=1:e.rowSpan=t-e.level+1,i[e.level-1].push(e)}),i},Rn={name:"ElTableHeader",mixins:[Mn],render:function(e){var t=this,i=this.store.states.originColumns,n=Hn(i,this.columns),r=n.length>1;return r&&(this.$parent.isGroup=!0),e("table",{class:"el-table__header",attrs:{cellspacing:"0",cellpadding:"0",border:"0"}},[e("colgroup",[this.columns.map(function(t){return e("col",{attrs:{name:t.id},key:t.id})}),this.hasGutter?e("col",{attrs:{name:"gutter"}}):""]),e("thead",{class:[{"is-group":r,"has-gutter":this.hasGutter}]},[this._l(n,function(i,n){return e("tr",{style:t.getHeaderRowStyle(n),class:t.getHeaderRowClass(n)},[i.map(function(r,s){return e("th",{attrs:{colspan:r.colSpan,rowspan:r.rowSpan},on:{mousemove:function(e){return t.handleMouseMove(e,r)},mouseout:t.handleMouseOut,mousedown:function(e){return t.handleMouseDown(e,r)},click:function(e){return t.handleHeaderClick(e,r)},contextmenu:function(e){return t.handleHeaderContextMenu(e,r)}},style:t.getHeaderCellStyle(n,s,i,r),class:t.getHeaderCellClass(n,s,i,r),key:r.id},[e("div",{class:["cell",r.filteredValue&&r.filteredValue.length>0?"highlight":"",r.labelClassName]},[r.renderHeader?r.renderHeader.call(t._renderProxy,e,{column:r,$index:s,store:t.store,_self:t.$parent.$vnode.context}):r.label,r.sortable?e("span",{class:"caret-wrapper",on:{click:function(e){return t.handleSortClick(e,r)}}},[e("i",{class:"sort-caret ascending",on:{click:function(e){return t.handleSortClick(e,r,"ascending")}}}),e("i",{class:"sort-caret descending",on:{click:function(e){return t.handleSortClick(e,r,"descending")}}})]):"",r.filterable?e("span",{class:"el-table__column-filter-trigger",on:{click:function(e){return t.handleFilterClick(e,r)}}},[e("i",{class:["el-icon-arrow-down",r.filterOpened?"el-icon-arrow-up":""]})]):""])])}),t.hasGutter?e("th",{class:"gutter"}):""])})])])},props:{fixed:String,store:{required:!0},border:Boolean,defaultSort:{type:Object,default:function(){return{prop:"",order:""}}}},components:{ElCheckbox:Vi},computed:zn({table:function(){return this.$parent},hasGutter:function(){return!this.fixed&&this.tableLayout.gutterWidth}},En({columns:"columns",isAllSelected:"isAllSelected",leftFixedLeafCount:"fixedLeafColumnsLength",rightFixedLeafCount:"rightFixedLeafColumnsLength",columnsCount:function(e){return e.columns.length},leftFixedCount:function(e){return e.fixedColumns.length},rightFixedCount:function(e){return e.rightFixedColumns.length}})),created:function(){this.filterPanels={}},mounted:function(){var e=this;this.$nextTick(function(){var t=e.defaultSort,i=t.prop,n=t.order;e.store.commit("sort",{prop:i,order:n,init:!0})})},beforeDestroy:function(){var e=this.filterPanels;for(var t in e)e.hasOwnProperty(t)&&e[t]&&e[t].$destroy(!0)},methods:{isCellHidden:function(e,t){for(var i=0,n=0;n<e;n++)i+=t[n].colSpan;var r=i+t[e].colSpan-1;return!0===this.fixed||"left"===this.fixed?r>=this.leftFixedLeafCount:"right"===this.fixed?i<this.columnsCount-this.rightFixedLeafCount:r<this.leftFixedLeafCount||i>=this.columnsCount-this.rightFixedLeafCount},getHeaderRowStyle:function(e){var t=this.table.headerRowStyle;return"function"==typeof t?t.call(null,{rowIndex:e}):t},getHeaderRowClass:function(e){var t=[],i=this.table.headerRowClassName;return"string"==typeof i?t.push(i):"function"==typeof i&&t.push(i.call(null,{rowIndex:e})),t.join(" ")},getHeaderCellStyle:function(e,t,i,n){var r=this.table.headerCellStyle;return"function"==typeof r?r.call(null,{rowIndex:e,columnIndex:t,row:i,column:n}):r},getHeaderCellClass:function(e,t,i,n){var r=[n.id,n.order,n.headerAlign,n.className,n.labelClassName];0===e&&this.isCellHidden(t,i)&&r.push("is-hidden"),n.children||r.push("is-leaf"),n.sortable&&r.push("is-sortable");var s=this.table.headerCellClassName;return"string"==typeof s?r.push(s):"function"==typeof s&&r.push(s.call(null,{rowIndex:e,columnIndex:t,row:i,column:n})),r.join(" ")},toggleAllSelection:function(e){e.stopPropagation(),this.store.commit("toggleAllSelection")},handleFilterClick:function(e,t){e.stopPropagation();var i=e.target,n="TH"===i.tagName?i:i.parentNode;if(!pe(n,"noclick")){n=n.querySelector(".el-table__column-filter-trigger")||n;var r=this.$parent,s=this.filterPanels[t.id];s&&t.filterOpened?s.showPopper=!1:(s||(s=new h.a(Bn),this.filterPanels[t.id]=s,t.filterPlacement&&(s.placement=t.filterPlacement),s.table=r,s.cell=n,s.column=t,!this.$isServer&&s.$mount(document.createElement("div"))),setTimeout(function(){s.showPopper=!0},16))}},handleHeaderClick:function(e,t){!t.filters&&t.sortable?this.handleSortClick(e,t):t.filterable&&!t.sortable&&this.handleFilterClick(e,t),this.$parent.$emit("header-click",t,e)},handleHeaderContextMenu:function(e,t){this.$parent.$emit("header-contextmenu",t,e)},handleMouseDown:function(e,t){var i=this;if(!this.$isServer&&!(t.children&&t.children.length>0)&&this.draggingColumn&&this.border){this.dragging=!0,this.$parent.resizeProxyVisible=!0;var n=this.$parent,r=n.$el.getBoundingClientRect().left,s=this.$el.querySelector("th."+t.id),a=s.getBoundingClientRect(),o=a.left-r+30;fe(s,"noclick"),this.dragState={startMouseLeft:e.clientX,startLeft:a.right-r,startColumnLeft:a.left-r,tableLeft:r};var l=n.$refs.resizeProxy;l.style.left=this.dragState.startLeft+"px",document.onselectstart=function(){return!1},document.ondragstart=function(){return!1};var u=function(e){var t=e.clientX-i.dragState.startMouseLeft,n=i.dragState.startLeft+t;l.style.left=Math.max(o,n)+"px"};document.addEventListener("mousemove",u),document.addEventListener("mouseup",function r(){if(i.dragging){var a=i.dragState,o=a.startColumnLeft,c=a.startLeft,h=parseInt(l.style.left,10)-o;t.width=t.realWidth=h,n.$emit("header-dragend",t.width,c-o,t,e),i.store.scheduleLayout(),document.body.style.cursor="",i.dragging=!1,i.draggingColumn=null,i.dragState={},n.resizeProxyVisible=!1}document.removeEventListener("mousemove",u),document.removeEventListener("mouseup",r),document.onselectstart=null,document.ondragstart=null,setTimeout(function(){me(s,"noclick")},0)})}},handleMouseMove:function(e,t){if(!(t.children&&t.children.length>0)){for(var i=e.target;i&&"TH"!==i.tagName;)i=i.parentNode;if(t&&t.resizable&&!this.dragging&&this.border){var n=i.getBoundingClientRect(),r=document.body.style;n.width>12&&n.right-e.pageX<8?(r.cursor="col-resize",pe(i,"is-sortable")&&(i.style.cursor="col-resize"),this.draggingColumn=t):this.dragging||(r.cursor="",pe(i,"is-sortable")&&(i.style.cursor="pointer"),this.draggingColumn=null)}}},handleMouseOut:function(){this.$isServer||(document.body.style.cursor="")},toggleOrder:function(e){var t=e.order,i=e.sortOrders;if(""===t)return i[0];var n=i.indexOf(t||null);return i[n>i.length-2?0:n+1]},handleSortClick:function(e,t,i){e.stopPropagation();for(var n=t.order===i?null:i||this.toggleOrder(t),r=e.target;r&&"TH"!==r.tagName;)r=r.parentNode;if(r&&"TH"===r.tagName&&pe(r,"noclick"))me(r,"noclick");else if(t.sortable){var s=this.store.states,a=s.sortProp,o=void 0,l=s.sortingColumn;(l!==t||l===t&&null===l.order)&&(l&&(l.order=null),s.sortingColumn=t,a=t.property),o=t.order=n||null,s.sortProp=a,s.sortOrder=o,this.store.commit("changeSortCondition")}}},data:function(){return{draggingColumn:null,dragging:!1,dragState:{}}}},Wn=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var i=arguments[t];for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n])}return e},jn={name:"ElTableFooter",mixins:[Mn],render:function(e){var t=this,i=[];return this.summaryMethod?i=this.summaryMethod({columns:this.columns,data:this.store.states.data}):this.columns.forEach(function(e,n){if(0!==n){var r=t.store.states.data.map(function(t){return Number(t[e.property])}),s=[],a=!0;r.forEach(function(e){if(!isNaN(e)){a=!1;var t=(""+e).split(".")[1];s.push(t?t.length:0)}});var o=Math.max.apply(null,s);i[n]=a?"":r.reduce(function(e,t){var i=Number(t);return isNaN(i)?e:parseFloat((e+t).toFixed(Math.min(o,20)))},0)}else i[n]=t.sumText}),e("table",{class:"el-table__footer",attrs:{cellspacing:"0",cellpadding:"0",border:"0"}},[e("colgroup",[this.columns.map(function(t){return e("col",{attrs:{name:t.id},key:t.id})}),this.hasGutter?e("col",{attrs:{name:"gutter"}}):""]),e("tbody",{class:[{"has-gutter":this.hasGutter}]},[e("tr",[this.columns.map(function(n,r){return e("td",{key:r,attrs:{colspan:n.colSpan,rowspan:n.rowSpan},class:t.getRowClasses(n,r)},[e("div",{class:["cell",n.labelClassName]},[i[r]])])}),this.hasGutter?e("th",{class:"gutter"}):""])])])},props:{fixed:String,store:{required:!0},summaryMethod:Function,sumText:String,border:Boolean,defaultSort:{type:Object,default:function(){return{prop:"",order:""}}}},computed:Wn({table:function(){return this.$parent},hasGutter:function(){return!this.fixed&&this.tableLayout.gutterWidth}},En({columns:"columns",isAllSelected:"isAllSelected",leftFixedLeafCount:"fixedLeafColumnsLength",rightFixedLeafCount:"rightFixedLeafColumnsLength",columnsCount:function(e){return e.columns.length},leftFixedCount:function(e){return e.fixedColumns.length},rightFixedCount:function(e){return e.rightFixedColumns.length}})),methods:{isCellHidden:function(e,t,i){if(!0===this.fixed||"left"===this.fixed)return e>=this.leftFixedLeafCount;if("right"===this.fixed){for(var n=0,r=0;r<e;r++)n+=t[r].colSpan;return n<this.columnsCount-this.rightFixedLeafCount}return!(this.fixed||!i.fixed)||(e<this.leftFixedCount||e>=this.columnsCount-this.rightFixedCount)},getRowClasses:function(e,t){var i=[e.id,e.align,e.labelClassName];return e.className&&i.push(e.className),this.isCellHidden(t,this.columns,e)&&i.push("is-hidden"),e.children||i.push("is-leaf"),i}}},qn=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var i=arguments[t];for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n])}return e},Yn=1,Kn=r({name:"ElTable",mixins:[q,K],directives:{Mousewheel:on},props:{data:{type:Array,default:function(){return[]}},size:String,width:[String,Number],height:[String,Number],maxHeight:[String,Number],fit:{type:Boolean,default:!0},stripe:Boolean,border:Boolean,rowKey:[String,Function],context:{},showHeader:{type:Boolean,default:!0},showSummary:Boolean,sumText:String,summaryMethod:Function,rowClassName:[String,Function],rowStyle:[Object,Function],cellClassName:[String,Function],cellStyle:[Object,Function],headerRowClassName:[String,Function],headerRowStyle:[Object,Function],headerCellClassName:[String,Function],headerCellStyle:[Object,Function],highlightCurrentRow:Boolean,currentRowKey:[String,Number],emptyText:String,expandRowKeys:Array,defaultExpandAll:Boolean,defaultSort:Object,tooltipEffect:String,spanMethod:Function,selectOnIndeterminate:{type:Boolean,default:!0},indent:{type:Number,default:16},treeProps:{type:Object,default:function(){return{hasChildren:"hasChildren",children:"children"}}},lazy:Boolean,load:Function},components:{TableHeader:Rn,TableFooter:jn,TableBody:On,ElCheckbox:Vi},methods:{getMigratingConfig:function(){return{events:{expand:"expand is renamed to expand-change"}}},setCurrentRow:function(e){this.store.commit("setCurrentRow",e)},toggleRowSelection:function(e,t){this.store.toggleRowSelection(e,t,!1),this.store.updateAllSelected()},toggleRowExpansion:function(e,t){this.store.toggleRowExpansionAdapter(e,t)},clearSelection:function(){this.store.clearSelection()},clearFilter:function(e){this.store.clearFilter(e)},clearSort:function(){this.store.clearSort()},handleMouseLeave:function(){this.store.commit("setHoverRow",null),this.hoverState&&(this.hoverState=null)},updateScrollY:function(){this.layout.updateScrollY()&&(this.layout.notifyObservers("scrollable"),this.layout.updateColumnsWidth())},handleFixedMousewheel:function(e,t){var i=this.bodyWrapper;if(Math.abs(t.spinY)>0){var n=i.scrollTop;t.pixelY<0&&0!==n&&e.preventDefault(),t.pixelY>0&&i.scrollHeight-i.clientHeight>n&&e.preventDefault(),i.scrollTop+=Math.ceil(t.pixelY/5)}else i.scrollLeft+=Math.ceil(t.pixelX/5)},handleHeaderFooterMousewheel:function(e,t){var i=t.pixelX,n=t.pixelY;Math.abs(i)>=Math.abs(n)&&(this.bodyWrapper.scrollLeft+=t.pixelX/5)},syncPostion:Object(nn.throttle)(20,function(){var e=this.bodyWrapper,t=e.scrollLeft,i=e.scrollTop,n=e.offsetWidth,r=e.scrollWidth,s=this.$refs,a=s.headerWrapper,o=s.footerWrapper,l=s.fixedBodyWrapper,u=s.rightFixedBodyWrapper;a&&(a.scrollLeft=t),o&&(o.scrollLeft=t),l&&(l.scrollTop=i),u&&(u.scrollTop=i);var c=r-n-1;this.scrollPosition=t>=c?"right":0===t?"left":"middle"}),bindEvents:function(){this.bodyWrapper.addEventListener("scroll",this.syncPostion,{passive:!0}),this.fit&&Ye(this.$el,this.resizeListener)},unbindEvents:function(){this.bodyWrapper.removeEventListener("scroll",this.syncPostion,{passive:!0}),this.fit&&Ke(this.$el,this.resizeListener)},resizeListener:function(){if(this.$ready){var e=!1,t=this.$el,i=this.resizeState,n=i.width,r=i.height,s=t.offsetWidth;n!==s&&(e=!0);var a=t.offsetHeight;(this.height||this.shouldUpdateHeight)&&r!==a&&(e=!0),e&&(this.resizeState.width=s,this.resizeState.height=a,this.doLayout())}},doLayout:function(){this.shouldUpdateHeight&&this.layout.updateElsHeight(),this.layout.updateColumnsWidth()},sort:function(e,t){this.store.commit("sort",{prop:e,order:t})},toggleAllSelection:function(){this.store.commit("toggleAllSelection")}},computed:qn({tableSize:function(){return this.size||(this.$ELEMENT||{}).size},bodyWrapper:function(){return this.$refs.bodyWrapper},shouldUpdateHeight:function(){return this.height||this.maxHeight||this.fixedColumns.length>0||this.rightFixedColumns.length>0},bodyWidth:function(){var e=this.layout,t=e.bodyWidth,i=e.scrollY,n=e.gutterWidth;return t?t-(i?n:0)+"px":""},bodyHeight:function(){var e=this.layout,t=e.headerHeight,i=void 0===t?0:t,n=e.bodyHeight,r=e.footerHeight,s=void 0===r?0:r;if(this.height)return{height:n?n+"px":""};if(this.maxHeight){var a=bn(this.maxHeight);if("number"==typeof a)return{"max-height":a-s-(this.showHeader?i:0)+"px"}}return{}},fixedBodyHeight:function(){if(this.height)return{height:this.layout.fixedBodyHeight?this.layout.fixedBodyHeight+"px":""};if(this.maxHeight){var e=bn(this.maxHeight);if("number"==typeof e)return e=this.layout.scrollX?e-this.layout.gutterWidth:e,this.showHeader&&(e-=this.layout.headerHeight),{"max-height":(e-=this.layout.footerHeight)+"px"}}return{}},fixedHeight:function(){return this.maxHeight?this.showSummary?{bottom:0}:{bottom:this.layout.scrollX&&this.data.length?this.layout.gutterWidth+"px":""}:this.showSummary?{height:this.layout.tableHeight?this.layout.tableHeight+"px":""}:{height:this.layout.viewportHeight?this.layout.viewportHeight+"px":""}},emptyBlockStyle:function(){if(this.data&&this.data.length)return null;var e="100%";return this.layout.appendHeight&&(e="calc(100% - "+this.layout.appendHeight+"px)"),{width:this.bodyWidth,height:e}}},En({selection:"selection",columns:"columns",tableData:"data",fixedColumns:"fixedColumns",rightFixedColumns:"rightFixedColumns"})),watch:{height:{immediate:!0,handler:function(e){this.layout.setHeight(e)}},maxHeight:{immediate:!0,handler:function(e){this.layout.setMaxHeight(e)}},currentRowKey:{immediate:!0,handler:function(e){this.rowKey&&this.store.setCurrentRowKey(e)}},data:{immediate:!0,handler:function(e){this.store.commit("setData",e)}},expandRowKeys:{immediate:!0,handler:function(e){e&&this.store.setExpandRowKeysAdapter(e)}}},created:function(){var e=this;this.tableId="el-table_"+Yn++,this.debouncedUpdateLayout=Object(nn.debounce)(50,function(){return e.doLayout()})},mounted:function(){var e=this;this.bindEvents(),this.store.updateColumns(),this.doLayout(),this.resizeState={width:this.$el.offsetWidth,height:this.$el.offsetHeight},this.store.states.columns.forEach(function(t){t.filteredValue&&t.filteredValue.length&&e.store.commit("filterChange",{column:t,values:t.filteredValue,silent:!0})}),this.$ready=!0},destroyed:function(){this.unbindEvents()},data:function(){var e=this.treeProps,t=e.hasChildren,i=void 0===t?"hasChildren":t,n=e.children,r=void 0===n?"children":n;return this.store=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!e)throw new Error("Table is required.");var i=new $n;return i.table=e,i.toggleAllSelection=et()(10,i._toggleAllSelection),Object.keys(t).forEach(function(e){i.states[e]=t[e]}),i}(this,{rowKey:this.rowKey,defaultExpandAll:this.defaultExpandAll,selectOnIndeterminate:this.selectOnIndeterminate,indent:this.indent,lazy:this.lazy,lazyColumnIdentifier:i,childrenColumnName:r}),{layout:new Tn({store:this.store,table:this,fit:this.fit,showHeader:this.showHeader}),isHidden:!1,renderExpanded:null,resizeProxyVisible:!1,resizeState:{width:null,height:null},isGroup:!1,scrollPosition:"left"}}},tn,[],!1,null,null,null);Kn.options.__file="packages/table/src/table.vue";var Gn=Kn.exports;Gn.install=function(e){e.component(Gn.name,Gn)};var Un=Gn,Xn={default:{order:""},selection:{width:48,minWidth:48,realWidth:48,order:"",className:"el-table-column--selection"},expand:{width:48,minWidth:48,realWidth:48,order:""},index:{width:48,minWidth:48,realWidth:48,order:""}},Jn={selection:{renderHeader:function(e,t){var i=t.store;return e("el-checkbox",{attrs:{disabled:i.states.data&&0===i.states.data.length,indeterminate:i.states.selection.length>0&&!this.isAllSelected,value:this.isAllSelected},nativeOn:{click:this.toggleAllSelection}})},renderCell:function(e,t){var i=t.row,n=t.column,r=t.store,s=t.$index;return e("el-checkbox",{nativeOn:{click:function(e){return e.stopPropagation()}},attrs:{value:r.isSelected(i),disabled:!!n.selectable&&!n.selectable.call(null,i,s)},on:{input:function(){r.commit("rowSelectedChanged",i)}}})},sortable:!1,resizable:!1},index:{renderHeader:function(e,t){return t.column.label||"#"},renderCell:function(e,t){var i=t.$index,n=i+1,r=t.column.index;return"number"==typeof r?n=i+r:"function"==typeof r&&(n=r(i)),e("div",[n])},sortable:!1},expand:{renderHeader:function(e,t){return t.column.label||""},renderCell:function(e,t){var i=t.row,n=t.store,r=["el-table__expand-icon"];n.states.expandRows.indexOf(i)>-1&&r.push("el-table__expand-icon--expanded");return e("div",{class:r,on:{click:function(e){e.stopPropagation(),n.toggleRowExpansion(i)}}},[e("i",{class:"el-icon el-icon-arrow-right"})])},sortable:!1,resizable:!1,className:"el-table__expand-column"}};function Zn(e,t){var i=t.row,n=t.column,r=t.$index,s=n.property,a=s&&S(i,s).v;return n&&n.formatter?n.formatter(i,n,a,r):a}var Qn=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var i=arguments[t];for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n])}return e},er=1,tr={name:"ElTableColumn",props:{type:{type:String,default:"default"},label:String,className:String,labelClassName:String,property:String,prop:String,width:{},minWidth:{},renderHeader:Function,sortable:{type:[Boolean,String],default:!1},sortMethod:Function,sortBy:[String,Function,Array],resizable:{type:Boolean,default:!0},columnKey:String,align:String,headerAlign:String,showTooltipWhenOverflow:Boolean,showOverflowTooltip:Boolean,fixed:[Boolean,String],formatter:Function,selectable:Function,reserveSelection:Boolean,filterMethod:Function,filteredValue:Array,filters:Array,filterPlacement:String,filterMultiple:{type:Boolean,default:!0},index:[Number,Function],sortOrders:{type:Array,default:function(){return["ascending","descending",null]},validator:function(e){return e.every(function(e){return["ascending","descending",null].indexOf(e)>-1})}}},data:function(){return{isSubColumn:!1,columns:[]}},computed:{owner:function(){for(var e=this.$parent;e&&!e.tableId;)e=e.$parent;return e},columnOrTableParent:function(){for(var e=this.$parent;e&&!e.tableId&&!e.columnId;)e=e.$parent;return e},realWidth:function(){return gn(this.width)},realMinWidth:function(){return void 0!==(e=this.minWidth)&&(e=gn(e),isNaN(e)&&(e=80)),e;var e},realAlign:function(){return this.align?"is-"+this.align:null},realHeaderAlign:function(){return this.headerAlign?"is-"+this.headerAlign:this.realAlign}},methods:{getPropsData:function(){for(var e=this,t=arguments.length,i=Array(t),n=0;n<t;n++)i[n]=arguments[n];return i.reduce(function(t,i){return Array.isArray(i)&&i.forEach(function(i){t[i]=e[i]}),t},{})},getColumnElIndex:function(e,t){return[].indexOf.call(e,t)},setColumnWidth:function(e){return this.realWidth&&(e.width=this.realWidth),this.realMinWidth&&(e.minWidth=this.realMinWidth),e.minWidth||(e.minWidth=80),e.realWidth=void 0===e.width?e.minWidth:e.width,e},setColumnForcedProps:function(e){var t=e.type,i=Jn[t]||{};return Object.keys(i).forEach(function(t){var n=i[t];void 0!==n&&(e[t]="className"===t?e[t]+" "+n:n)}),e},setColumnRenders:function(e){var t=this;this.$createElement;this.renderHeader?console.warn("[Element Warn][TableColumn]Comparing to render-header, scoped-slot header is easier to use. We recommend users to use scoped-slot header."):"selection"!==e.type&&(e.renderHeader=function(i,n){var r=t.$scopedSlots.header;return r?r(n):e.label});var i=e.renderCell;return"expand"===e.type?(e.renderCell=function(e,t){return e("div",{class:"cell"},[i(e,t)])},this.owner.renderExpanded=function(e,i){return t.$scopedSlots.default?t.$scopedSlots.default(i):t.$slots.default}):(i=i||Zn,e.renderCell=function(n,r){var s=null;s=t.$scopedSlots.default?t.$scopedSlots.default(r):i(n,r);var a=function(e,t){var i=t.row,n=t.treeNode,r=t.store;if(!n)return null;var s=[];if(n.indent&&s.push(e("span",{class:"el-table__indent",style:{"padding-left":n.indent+"px"}})),"boolean"!=typeof n.expanded||n.noLazyChildren)s.push(e("span",{class:"el-table__placeholder"}));else{var a=["el-table__expand-icon",n.expanded?"el-table__expand-icon--expanded":""],o=["el-icon-arrow-right"];n.loading&&(o=["el-icon-loading"]),s.push(e("div",{class:a,on:{click:function(e){e.stopPropagation(),r.loadOrToggle(i)}}},[e("i",{class:o})]))}return s}(n,r),o={class:"cell",style:{}};return e.showOverflowTooltip&&(o.class+=" el-tooltip",o.style={width:(r.column.realWidth||r.column.width)-1+"px"}),n("div",o,[a,s])}),e},registerNormalWatchers:function(){var e=this,t={prop:"property",realAlign:"align",realHeaderAlign:"headerAlign",realWidth:"width"},i=["label","property","filters","filterMultiple","sortable","index","formatter","className","labelClassName","showOverflowTooltip"].reduce(function(e,t){return e[t]=t,e},t);Object.keys(i).forEach(function(i){var n=t[i];e.$watch(i,function(t){e.columnConfig[n]=t})})},registerComplexWatchers:function(){var e=this,t={realWidth:"width",realMinWidth:"minWidth"},i=["fixed"].reduce(function(e,t){return e[t]=t,e},t);Object.keys(i).forEach(function(i){var n=t[i];e.$watch(i,function(t){e.columnConfig[n]=t;var i="fixed"===n;e.owner.store.scheduleLayout(i)})})}},components:{ElCheckbox:Vi},beforeCreate:function(){this.row={},this.column={},this.$index=0,this.columnId=""},created:function(){var e=this.columnOrTableParent;this.isSubColumn=this.owner!==e,this.columnId=(e.tableId||e.columnId)+"_column_"+er++;var t=this.type||"default",i=""===this.sortable||this.sortable,n=Qn({},Xn[t],{id:this.columnId,type:t,property:this.prop||this.property,align:this.realAlign,headerAlign:this.realHeaderAlign,showOverflowTooltip:this.showOverflowTooltip||this.showTooltipWhenOverflow,filterable:this.filters||this.filterMethod,filteredValue:[],filterPlacement:"",isColumnGroup:!1,filterOpened:!1,sortable:i,index:this.index}),r=this.getPropsData(["columnKey","label","className","labelClassName","type","renderHeader","formatter","fixed","resizable"],["sortMethod","sortBy","sortOrders"],["selectable","reserveSelection"],["filterMethod","filters","filterMultiple","filterOpened","filteredValue","filterPlacement"]);r=function(e,t){var i={},n=void 0;for(n in e)i[n]=e[n];for(n in t)if(vn(t,n)){var r=t[n];void 0!==r&&(i[n]=r)}return i}(n,r),r=function(){for(var e=arguments.length,t=Array(e),i=0;i<e;i++)t[i]=arguments[i];return 0===t.length?function(e){return e}:1===t.length?t[0]:t.reduce(function(e,t){return function(){return e(t.apply(void 0,arguments))}})}(this.setColumnRenders,this.setColumnWidth,this.setColumnForcedProps)(r),this.columnConfig=r,this.registerNormalWatchers(),this.registerComplexWatchers()},mounted:function(){var e=this.owner,t=this.columnOrTableParent,i=this.isSubColumn?t.$el.children:t.$refs.hiddenColumns.children,n=this.getColumnElIndex(i,this.$el);e.store.commit("insertColumn",this.columnConfig,n,this.isSubColumn?t.columnConfig:null)},destroyed:function(){if(this.$parent){var e=this.$parent;this.owner.store.commit("removeColumn",this.columnConfig,this.isSubColumn?e.columnConfig:null)}},render:function(e){return e("div",this.$slots.default)},install:function(e){e.component(tr.name,tr)}},ir=tr,nr=function(){var e=this,t=e.$createElement,i=e._self._c||t;return e.ranged?i("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleClose,expression:"handleClose"}],ref:"reference",staticClass:"el-date-editor el-range-editor el-input__inner",class:["el-date-editor--"+e.type,e.pickerSize?"el-range-editor--"+e.pickerSize:"",e.pickerDisabled?"is-disabled":"",e.pickerVisible?"is-active":""],on:{click:e.handleRangeClick,mouseenter:e.handleMouseEnter,mouseleave:function(t){e.showClose=!1},keydown:e.handleKeydown}},[i("i",{class:["el-input__icon","el-range__icon",e.triggerClass]}),i("input",e._b({staticClass:"el-range-input",attrs:{autocomplete:"off",placeholder:e.startPlaceholder,disabled:e.pickerDisabled,readonly:!e.editable||e.readonly,name:e.name&&e.name[0]},domProps:{value:e.displayValue&&e.displayValue[0]},on:{input:e.handleStartInput,change:e.handleStartChange,focus:e.handleFocus}},"input",e.firstInputId,!1)),e._t("range-separator",[i("span",{staticClass:"el-range-separator"},[e._v(e._s(e.rangeSeparator))])]),i("input",e._b({staticClass:"el-range-input",attrs:{autocomplete:"off",placeholder:e.endPlaceholder,disabled:e.pickerDisabled,readonly:!e.editable||e.readonly,name:e.name&&e.name[1]},domProps:{value:e.displayValue&&e.displayValue[1]},on:{input:e.handleEndInput,change:e.handleEndChange,focus:e.handleFocus}},"input",e.secondInputId,!1)),e.haveTrigger?i("i",{staticClass:"el-input__icon el-range__close-icon",class:[e.showClose?""+e.clearIcon:""],on:{click:e.handleClickIcon}}):e._e()],2):i("el-input",e._b({directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleClose,expression:"handleClose"}],ref:"reference",staticClass:"el-date-editor",class:"el-date-editor--"+e.type,attrs:{readonly:!e.editable||e.readonly||"dates"===e.type||"week"===e.type,disabled:e.pickerDisabled,size:e.pickerSize,name:e.name,placeholder:e.placeholder,value:e.displayValue,validateEvent:!1},on:{focus:e.handleFocus,input:function(t){return e.userInput=t},change:e.handleChange},nativeOn:{keydown:function(t){return e.handleKeydown(t)},mouseenter:function(t){return e.handleMouseEnter(t)},mouseleave:function(t){e.showClose=!1}}},"el-input",e.firstInputId,!1),[i("i",{staticClass:"el-input__icon",class:e.triggerClass,attrs:{slot:"prefix"},on:{click:e.handleFocus},slot:"prefix"}),e.haveTrigger?i("i",{staticClass:"el-input__icon",class:[e.showClose?""+e.clearIcon:""],attrs:{slot:"suffix"},on:{click:e.handleClickIcon},slot:"suffix"}):e._e()])};nr._withStripped=!0;var rr=i(2),sr=i.n(rr),ar=["sun","mon","tue","wed","thu","fri","sat"],or=["jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec"],lr=function(){return{dayNamesShort:ar.map(function(e){return W("el.datepicker.weeks."+e)}),dayNames:ar.map(function(e){return W("el.datepicker.weeks."+e)}),monthNamesShort:or.map(function(e){return W("el.datepicker.months."+e)}),monthNames:or.map(function(e,t){return W("el.datepicker.month"+(t+1))}),amPm:["am","pm"]}},ur=function(e){return null!=e&&(!isNaN(new Date(e).getTime())&&!Array.isArray(e))},cr=function(e){return e instanceof Date},hr=function(e,t){return(e=function(e){return ur(e)?new Date(e):null}(e))?sr.a.format(e,t||"yyyy-MM-dd",lr()):""},dr=function(e,t){return sr.a.parse(e,t||"yyyy-MM-dd",lr())},pr=function(e,t){return 3===t||5===t||8===t||10===t?30:1===t?e%4==0&&e%100!=0||e%400==0?29:28:31},fr=function(e){var t=new Date(e.getTime());return t.setDate(1),t.getDay()},mr=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return new Date(e.getFullYear(),e.getMonth(),e.getDate()-t)},vr=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return new Date(e.getFullYear(),e.getMonth(),e.getDate()+t)},gr=function(e){if(!ur(e))return null;var t=new Date(e.getTime());t.setHours(0,0,0,0),t.setDate(t.getDate()+3-(t.getDay()+6)%7);var i=new Date(t.getFullYear(),0,4);return 1+Math.round(((t.getTime()-i.getTime())/864e5-3+(i.getDay()+6)%7)/7)};function br(e,t,i,n){for(var r=t;r<i;r++)e[r]=n}var yr=function(e){return Array.apply(null,{length:e}).map(function(e,t){return t})},wr=function(e,t,i,n){return new Date(t,i,n,e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds())},_r=function(e,t,i,n){return new Date(e.getFullYear(),e.getMonth(),e.getDate(),t,i,n,e.getMilliseconds())},xr=function(e,t){return null!=e&&t?(t=dr(t,"HH:mm:ss"),_r(e,t.getHours(),t.getMinutes(),t.getSeconds())):e},Cr=function(e){return new Date(e.getFullYear(),e.getMonth(),e.getDate())},kr=function(e){return new Date(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),0)},Sr=function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"HH:mm:ss";if(0===t.length)return e;var n=function(e){return sr.a.parse(sr.a.format(e,i),i)},r=n(e),s=t.map(function(e){return e.map(n)});if(s.some(function(e){return r>=e[0]&&r<=e[1]}))return e;var a=s[0][0],o=s[0][0];return s.forEach(function(e){a=new Date(Math.min(e[0],a)),o=new Date(Math.max(e[1],a))}),wr(r<a?a:o,e.getFullYear(),e.getMonth(),e.getDate())},Dr=function(e,t,i){return Sr(e,t,i).getTime()===e.getTime()},$r=function(e,t,i){var n=Math.min(e.getDate(),pr(t,i));return wr(e,t,i,n)},Er=function(e){var t=e.getFullYear(),i=e.getMonth();return 0===i?$r(e,t-1,11):$r(e,t,i-1)},Tr=function(e){var t=e.getFullYear(),i=e.getMonth();return 11===i?$r(e,t+1,0):$r(e,t,i+1)},Mr=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,i=e.getFullYear(),n=e.getMonth();return $r(e,i-t,n)},Nr=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,i=e.getFullYear(),n=e.getMonth();return $r(e,i+t,n)},Pr=function(e){return e.replace(/\W?m{1,2}|\W?ZZ/g,"").replace(/\W?h{1,2}|\W?s{1,3}|\W?a/gi,"").trim()},Or=function(e){return e.replace(/\W?D{1,2}|\W?Do|\W?d{1,4}|\W?M{1,4}|\W?y{2,4}/g,"").trim()},Ir=function(e,t){return e.getMonth()===t.getMonth()&&e.getFullYear()===t.getFullYear()},Ar={props:{appendToBody:Oe.props.appendToBody,offset:Oe.props.offset,boundariesPadding:Oe.props.boundariesPadding,arrowOffset:Oe.props.arrowOffset},methods:Oe.methods,data:function(){return Z({visibleArrow:!0},Oe.data)},beforeDestroy:Oe.beforeDestroy},Fr={date:"yyyy-MM-dd",month:"yyyy-MM",datetime:"yyyy-MM-dd HH:mm:ss",time:"HH:mm:ss",week:"yyyywWW",timerange:"HH:mm:ss",daterange:"yyyy-MM-dd",monthrange:"yyyy-MM",datetimerange:"yyyy-MM-dd HH:mm:ss",year:"yyyy"},Lr=["date","datetime","time","time-select","week","month","year","daterange","monthrange","timerange","datetimerange","dates"],Vr=function(e,t){return"timestamp"===t?e.getTime():hr(e,t)},Br=function(e,t){return"timestamp"===t?new Date(Number(e)):dr(e,t)},zr=function(e,t){if(Array.isArray(e)&&2===e.length){var i=e[0],n=e[1];if(i&&n)return[Vr(i,t),Vr(n,t)]}return""},Hr=function(e,t,i){if(Array.isArray(e)||(e=e.split(i)),2===e.length){var n=e[0],r=e[1];return[Br(n,t),Br(r,t)]}return[]},Rr={default:{formatter:function(e){return e?""+e:""},parser:function(e){return void 0===e||""===e?null:e}},week:{formatter:function(e,t){var i=gr(e),n=e.getMonth(),r=new Date(e);1===i&&11===n&&(r.setHours(0,0,0,0),r.setDate(r.getDate()+3-(r.getDay()+6)%7));var s=hr(r,t);return s=/WW/.test(s)?s.replace(/WW/,i<10?"0"+i:i):s.replace(/W/,i)},parser:function(e,t){return Rr.date.parser(e,t)}},date:{formatter:Vr,parser:Br},datetime:{formatter:Vr,parser:Br},daterange:{formatter:zr,parser:Hr},monthrange:{formatter:zr,parser:Hr},datetimerange:{formatter:zr,parser:Hr},timerange:{formatter:zr,parser:Hr},time:{formatter:Vr,parser:Br},month:{formatter:Vr,parser:Br},year:{formatter:Vr,parser:Br},number:{formatter:function(e){return e?""+e:""},parser:function(e){var t=Number(e);return isNaN(e)?null:t}},dates:{formatter:function(e,t){return e.map(function(e){return Vr(e,t)})},parser:function(e,t){return("string"==typeof e?e.split(", "):e).map(function(e){return e instanceof Date?e:Br(e,t)})}}},Wr={left:"bottom-start",center:"bottom",right:"bottom-end"},jr=function(e,t,i){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"-";return e?(0,(Rr[i]||Rr.default).parser)(e,t||Fr[i],n):null},qr=function(e,t,i){return e?(0,(Rr[i]||Rr.default).formatter)(e,t||Fr[i]):null},Yr=function(e,t){var i=function(e,t){var i=e instanceof Date,n=t instanceof Date;return i&&n?e.getTime()===t.getTime():!i&&!n&&e===t},n=e instanceof Array,r=t instanceof Array;return n&&r?e.length===t.length&&e.every(function(e,n){return i(e,t[n])}):!n&&!r&&i(e,t)},Kr=function(e){return"string"==typeof e||e instanceof String},Gr=function(e){return null==e||Kr(e)||Array.isArray(e)&&2===e.length&&e.every(Kr)},Ur=r({mixins:[l,Ar],inject:{elForm:{default:""},elFormItem:{default:""}},props:{size:String,format:String,valueFormat:String,readonly:Boolean,placeholder:String,startPlaceholder:String,endPlaceholder:String,prefixIcon:String,clearIcon:{type:String,default:"el-icon-circle-close"},name:{default:"",validator:Gr},disabled:Boolean,clearable:{type:Boolean,default:!0},id:{default:"",validator:Gr},popperClass:String,editable:{type:Boolean,default:!0},align:{type:String,default:"left"},value:{},defaultValue:{},defaultTime:{},rangeSeparator:{default:"-"},pickerOptions:{},unlinkPanels:Boolean,validateEvent:{type:Boolean,default:!0}},components:{ElInput:ne},directives:{Clickoutside:at},data:function(){return{pickerVisible:!1,showClose:!1,userInput:null,valueOnOpen:null,unwatchPickerOptions:null}},watch:{pickerVisible:function(e){this.readonly||this.pickerDisabled||(e?(this.showPicker(),this.valueOnOpen=Array.isArray(this.value)?[].concat(this.value):this.value):(this.hidePicker(),this.emitChange(this.value),this.userInput=null,this.validateEvent&&this.dispatch("ElFormItem","el.form.blur"),this.$emit("blur",this),this.blur()))},parsedValue:{immediate:!0,handler:function(e){this.picker&&(this.picker.value=e)}},defaultValue:function(e){this.picker&&(this.picker.defaultValue=e)},value:function(e,t){Yr(e,t)||this.pickerVisible||!this.validateEvent||this.dispatch("ElFormItem","el.form.change",e)}},computed:{ranged:function(){return this.type.indexOf("range")>-1},reference:function(){var e=this.$refs.reference;return e.$el||e},refInput:function(){return this.reference?[].slice.call(this.reference.querySelectorAll("input")):[]},valueIsEmpty:function(){var e=this.value;if(Array.isArray(e)){for(var t=0,i=e.length;t<i;t++)if(e[t])return!1}else if(e)return!1;return!0},triggerClass:function(){return this.prefixIcon||(-1!==this.type.indexOf("time")?"el-icon-time":"el-icon-date")},selectionMode:function(){return"week"===this.type?"week":"month"===this.type?"month":"year"===this.type?"year":"dates"===this.type?"dates":"day"},haveTrigger:function(){return void 0!==this.showTrigger?this.showTrigger:-1!==Lr.indexOf(this.type)},displayValue:function(){var e=qr(this.parsedValue,this.format,this.type,this.rangeSeparator);return Array.isArray(this.userInput)?[this.userInput[0]||e&&e[0]||"",this.userInput[1]||e&&e[1]||""]:null!==this.userInput?this.userInput:e?"dates"===this.type?e.join(", "):e:""},parsedValue:function(){return this.value?"time-select"===this.type?this.value:cr(this.value)||Array.isArray(this.value)&&this.value.every(cr)?this.value:this.valueFormat?jr(this.value,this.valueFormat,this.type,this.rangeSeparator)||this.value:Array.isArray(this.value)?this.value.map(function(e){return new Date(e)}):new Date(this.value):this.value},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},pickerSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},pickerDisabled:function(){return this.disabled||(this.elForm||{}).disabled},firstInputId:function(){var e={},t=void 0;return(t=this.ranged?this.id&&this.id[0]:this.id)&&(e.id=t),e},secondInputId:function(){var e={},t=void 0;return this.ranged&&(t=this.id&&this.id[1]),t&&(e.id=t),e}},created:function(){this.popperOptions={boundariesPadding:0,gpuAcceleration:!1},this.placement=Wr[this.align]||Wr.left,this.$on("fieldReset",this.handleFieldReset)},methods:{focus:function(){this.ranged?this.handleFocus():this.$refs.reference.focus()},blur:function(){this.refInput.forEach(function(e){return e.blur()})},parseValue:function(e){var t=cr(e)||Array.isArray(e)&&e.every(cr);return this.valueFormat&&!t&&jr(e,this.valueFormat,this.type,this.rangeSeparator)||e},formatToValue:function(e){var t=cr(e)||Array.isArray(e)&&e.every(cr);return this.valueFormat&&t?qr(e,this.valueFormat,this.type,this.rangeSeparator):e},parseString:function(e){var t=Array.isArray(e)?this.type:this.type.replace("range","");return jr(e,this.format,t)},formatToString:function(e){var t=Array.isArray(e)?this.type:this.type.replace("range","");return qr(e,this.format,t)},handleMouseEnter:function(){this.readonly||this.pickerDisabled||!this.valueIsEmpty&&this.clearable&&(this.showClose=!0)},handleChange:function(){if(this.userInput){var e=this.parseString(this.displayValue);e&&(this.picker.value=e,this.isValidValue(e)&&(this.emitInput(e),this.userInput=null))}""===this.userInput&&(this.emitInput(null),this.emitChange(null),this.userInput=null)},handleStartInput:function(e){this.userInput?this.userInput=[e.target.value,this.userInput[1]]:this.userInput=[e.target.value,null]},handleEndInput:function(e){this.userInput?this.userInput=[this.userInput[0],e.target.value]:this.userInput=[null,e.target.value]},handleStartChange:function(e){var t=this.parseString(this.userInput&&this.userInput[0]);if(t){this.userInput=[this.formatToString(t),this.displayValue[1]];var i=[t,this.picker.value&&this.picker.value[1]];this.picker.value=i,this.isValidValue(i)&&(this.emitInput(i),this.userInput=null)}},handleEndChange:function(e){var t=this.parseString(this.userInput&&this.userInput[1]);if(t){this.userInput=[this.displayValue[0],this.formatToString(t)];var i=[this.picker.value&&this.picker.value[0],t];this.picker.value=i,this.isValidValue(i)&&(this.emitInput(i),this.userInput=null)}},handleClickIcon:function(e){this.readonly||this.pickerDisabled||(this.showClose?(this.valueOnOpen=this.value,e.stopPropagation(),this.emitInput(null),this.emitChange(null),this.showClose=!1,this.picker&&"function"==typeof this.picker.handleClear&&this.picker.handleClear()):this.pickerVisible=!this.pickerVisible)},handleClose:function(){if(this.pickerVisible&&(this.pickerVisible=!1,"dates"===this.type)){var e=jr(this.valueOnOpen,this.valueFormat,this.type,this.rangeSeparator)||this.valueOnOpen;this.emitInput(e)}},handleFieldReset:function(e){this.userInput=""===e?null:e},handleFocus:function(){var e=this.type;-1===Lr.indexOf(e)||this.pickerVisible||(this.pickerVisible=!0),this.$emit("focus",this)},handleKeydown:function(e){var t=this,i=e.keyCode;return 27===i?(this.pickerVisible=!1,void e.stopPropagation()):9!==i?13===i?((""===this.userInput||this.isValidValue(this.parseString(this.displayValue)))&&(this.handleChange(),this.pickerVisible=this.picker.visible=!1,this.blur()),void e.stopPropagation()):void(this.userInput?e.stopPropagation():this.picker&&this.picker.handleKeydown&&this.picker.handleKeydown(e)):void(this.ranged?setTimeout(function(){-1===t.refInput.indexOf(document.activeElement)&&(t.pickerVisible=!1,t.blur(),e.stopPropagation())},0):(this.handleChange(),this.pickerVisible=this.picker.visible=!1,this.blur(),e.stopPropagation()))},handleRangeClick:function(){var e=this.type;-1===Lr.indexOf(e)||this.pickerVisible||(this.pickerVisible=!0),this.$emit("focus",this)},hidePicker:function(){this.picker&&(this.picker.resetView&&this.picker.resetView(),this.pickerVisible=this.picker.visible=!1,this.destroyPopper())},showPicker:function(){var e=this;this.$isServer||(this.picker||this.mountPicker(),this.pickerVisible=this.picker.visible=!0,this.updatePopper(),this.picker.value=this.parsedValue,this.picker.resetView&&this.picker.resetView(),this.$nextTick(function(){e.picker.adjustSpinners&&e.picker.adjustSpinners()}))},mountPicker:function(){var e=this;this.picker=new h.a(this.panel).$mount(),this.picker.defaultValue=this.defaultValue,this.picker.defaultTime=this.defaultTime,this.picker.popperClass=this.popperClass,this.popperElm=this.picker.$el,this.picker.width=this.reference.getBoundingClientRect().width,this.picker.showTime="datetime"===this.type||"datetimerange"===this.type,this.picker.selectionMode=this.selectionMode,this.picker.unlinkPanels=this.unlinkPanels,this.picker.arrowControl=this.arrowControl||this.timeArrowControl||!1,this.$watch("format",function(t){e.picker.format=t});var t=function(){var t=e.pickerOptions;if(t&&t.selectableRange){var i=t.selectableRange,n=Rr.datetimerange.parser,r=Fr.timerange;i=Array.isArray(i)?i:[i],e.picker.selectableRange=i.map(function(t){return n(t,r,e.rangeSeparator)})}for(var s in t)t.hasOwnProperty(s)&&"selectableRange"!==s&&(e.picker[s]=t[s]);e.format&&(e.picker.format=e.format)};t(),this.unwatchPickerOptions=this.$watch("pickerOptions",function(){return t()},{deep:!0}),this.$el.appendChild(this.picker.$el),this.picker.resetView&&this.picker.resetView(),this.picker.$on("dodestroy",this.doDestroy),this.picker.$on("pick",function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];e.userInput=null,e.pickerVisible=e.picker.visible=i,e.emitInput(t),e.picker.resetView&&e.picker.resetView()}),this.picker.$on("select-range",function(t,i,n){0!==e.refInput.length&&(n&&"min"!==n?"max"===n&&(e.refInput[1].setSelectionRange(t,i),e.refInput[1].focus()):(e.refInput[0].setSelectionRange(t,i),e.refInput[0].focus()))})},unmountPicker:function(){this.picker&&(this.picker.$destroy(),this.picker.$off(),"function"==typeof this.unwatchPickerOptions&&this.unwatchPickerOptions(),this.picker.$el.parentNode.removeChild(this.picker.$el))},emitChange:function(e){Yr(e,this.valueOnOpen)||(this.$emit("change",e),this.valueOnOpen=e,this.validateEvent&&this.dispatch("ElFormItem","el.form.change",e))},emitInput:function(e){var t=this.formatToValue(e);Yr(this.value,t)||this.$emit("input",t)},isValidValue:function(e){return this.picker||this.mountPicker(),!this.picker.isValidValue||e&&this.picker.isValidValue(e)}}},nr,[],!1,null,null,null);Ur.options.__file="packages/date-picker/src/picker.vue";var Xr=Ur.exports,Jr=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-enter":e.handleEnter,"after-leave":e.handleLeave}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-picker-panel el-date-picker el-popper",class:[{"has-sidebar":e.$slots.sidebar||e.shortcuts,"has-time":e.showTime},e.popperClass]},[i("div",{staticClass:"el-picker-panel__body-wrapper"},[e._t("sidebar"),e.shortcuts?i("div",{staticClass:"el-picker-panel__sidebar"},e._l(e.shortcuts,function(t,n){return i("button",{key:n,staticClass:"el-picker-panel__shortcut",attrs:{type:"button"},on:{click:function(i){e.handleShortcutClick(t)}}},[e._v(e._s(t.text))])}),0):e._e(),i("div",{staticClass:"el-picker-panel__body"},[e.showTime?i("div",{staticClass:"el-date-picker__time-header"},[i("span",{staticClass:"el-date-picker__editor-wrap"},[i("el-input",{attrs:{placeholder:e.t("el.datepicker.selectDate"),value:e.visibleDate,size:"small"},on:{input:function(t){return e.userInputDate=t},change:e.handleVisibleDateChange}})],1),i("span",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleTimePickClose,expression:"handleTimePickClose"}],staticClass:"el-date-picker__editor-wrap"},[i("el-input",{ref:"input",attrs:{placeholder:e.t("el.datepicker.selectTime"),value:e.visibleTime,size:"small"},on:{focus:function(t){e.timePickerVisible=!0},input:function(t){return e.userInputTime=t},change:e.handleVisibleTimeChange}}),i("time-picker",{ref:"timepicker",attrs:{"time-arrow-control":e.arrowControl,visible:e.timePickerVisible},on:{pick:e.handleTimePick,mounted:e.proxyTimePickerDataProperties}})],1)]):e._e(),i("div",{directives:[{name:"show",rawName:"v-show",value:"time"!==e.currentView,expression:"currentView !== 'time'"}],staticClass:"el-date-picker__header",class:{"el-date-picker__header--bordered":"year"===e.currentView||"month"===e.currentView}},[i("button",{staticClass:"el-picker-panel__icon-btn el-date-picker__prev-btn el-icon-d-arrow-left",attrs:{type:"button","aria-label":e.t("el.datepicker.prevYear")},on:{click:e.prevYear}}),i("button",{directives:[{name:"show",rawName:"v-show",value:"date"===e.currentView,expression:"currentView === 'date'"}],staticClass:"el-picker-panel__icon-btn el-date-picker__prev-btn el-icon-arrow-left",attrs:{type:"button","aria-label":e.t("el.datepicker.prevMonth")},on:{click:e.prevMonth}}),i("span",{staticClass:"el-date-picker__header-label",attrs:{role:"button"},on:{click:e.showYearPicker}},[e._v(e._s(e.yearLabel))]),i("span",{directives:[{name:"show",rawName:"v-show",value:"date"===e.currentView,expression:"currentView === 'date'"}],staticClass:"el-date-picker__header-label",class:{active:"month"===e.currentView},attrs:{role:"button"},on:{click:e.showMonthPicker}},[e._v(e._s(e.t("el.datepicker.month"+(e.month+1))))]),i("button",{staticClass:"el-picker-panel__icon-btn el-date-picker__next-btn el-icon-d-arrow-right",attrs:{type:"button","aria-label":e.t("el.datepicker.nextYear")},on:{click:e.nextYear}}),i("button",{directives:[{name:"show",rawName:"v-show",value:"date"===e.currentView,expression:"currentView === 'date'"}],staticClass:"el-picker-panel__icon-btn el-date-picker__next-btn el-icon-arrow-right",attrs:{type:"button","aria-label":e.t("el.datepicker.nextMonth")},on:{click:e.nextMonth}})]),i("div",{staticClass:"el-picker-panel__content"},[i("date-table",{directives:[{name:"show",rawName:"v-show",value:"date"===e.currentView,expression:"currentView === 'date'"}],attrs:{"selection-mode":e.selectionMode,"first-day-of-week":e.firstDayOfWeek,value:e.value,"default-value":e.defaultValue?new Date(e.defaultValue):null,date:e.date,"cell-class-name":e.cellClassName,"disabled-date":e.disabledDate},on:{pick:e.handleDatePick}}),i("year-table",{directives:[{name:"show",rawName:"v-show",value:"year"===e.currentView,expression:"currentView === 'year'"}],attrs:{value:e.value,"default-value":e.defaultValue?new Date(e.defaultValue):null,date:e.date,"disabled-date":e.disabledDate},on:{pick:e.handleYearPick}}),i("month-table",{directives:[{name:"show",rawName:"v-show",value:"month"===e.currentView,expression:"currentView === 'month'"}],attrs:{value:e.value,"default-value":e.defaultValue?new Date(e.defaultValue):null,date:e.date,"disabled-date":e.disabledDate},on:{pick:e.handleMonthPick}})],1)])],2),i("div",{directives:[{name:"show",rawName:"v-show",value:e.footerVisible&&"date"===e.currentView,expression:"footerVisible && currentView === 'date'"}],staticClass:"el-picker-panel__footer"},[i("el-button",{directives:[{name:"show",rawName:"v-show",value:"dates"!==e.selectionMode,expression:"selectionMode !== 'dates'"}],staticClass:"el-picker-panel__link-btn",attrs:{size:"mini",type:"text"},on:{click:e.changeToNow}},[e._v("\n        "+e._s(e.t("el.datepicker.now"))+"\n      ")]),i("el-button",{staticClass:"el-picker-panel__link-btn",attrs:{plain:"",size:"mini"},on:{click:e.confirm}},[e._v("\n        "+e._s(e.t("el.datepicker.confirm"))+"\n      ")])],1)])])};Jr._withStripped=!0;var Zr=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":function(t){e.$emit("dodestroy")}}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-time-panel el-popper",class:e.popperClass},[i("div",{staticClass:"el-time-panel__content",class:{"has-seconds":e.showSeconds}},[i("time-spinner",{ref:"spinner",attrs:{"arrow-control":e.useArrow,"show-seconds":e.showSeconds,"am-pm-mode":e.amPmMode,date:e.date},on:{change:e.handleChange,"select-range":e.setSelectionRange}})],1),i("div",{staticClass:"el-time-panel__footer"},[i("button",{staticClass:"el-time-panel__btn cancel",attrs:{type:"button"},on:{click:e.handleCancel}},[e._v(e._s(e.t("el.datepicker.cancel")))]),i("button",{staticClass:"el-time-panel__btn",class:{confirm:!e.disabled},attrs:{type:"button"},on:{click:function(t){e.handleConfirm()}}},[e._v(e._s(e.t("el.datepicker.confirm")))])])])])};Zr._withStripped=!0;var Qr=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-time-spinner",class:{"has-seconds":e.showSeconds}},[e.arrowControl?e._e():[i("el-scrollbar",{ref:"hours",staticClass:"el-time-spinner__wrapper",attrs:{"wrap-style":"max-height: inherit;","view-class":"el-time-spinner__list",noresize:"",tag:"ul"},nativeOn:{mouseenter:function(t){e.emitSelectRange("hours")},mousemove:function(t){e.adjustCurrentSpinner("hours")}}},e._l(e.hoursList,function(t,n){return i("li",{key:n,staticClass:"el-time-spinner__item",class:{active:n===e.hours,disabled:t},on:{click:function(i){e.handleClick("hours",{value:n,disabled:t})}}},[e._v(e._s(("0"+(e.amPmMode?n%12||12:n)).slice(-2))+e._s(e.amPm(n)))])}),0),i("el-scrollbar",{ref:"minutes",staticClass:"el-time-spinner__wrapper",attrs:{"wrap-style":"max-height: inherit;","view-class":"el-time-spinner__list",noresize:"",tag:"ul"},nativeOn:{mouseenter:function(t){e.emitSelectRange("minutes")},mousemove:function(t){e.adjustCurrentSpinner("minutes")}}},e._l(e.minutesList,function(t,n){return i("li",{key:n,staticClass:"el-time-spinner__item",class:{active:n===e.minutes,disabled:!t},on:{click:function(t){e.handleClick("minutes",{value:n,disabled:!1})}}},[e._v(e._s(("0"+n).slice(-2)))])}),0),i("el-scrollbar",{directives:[{name:"show",rawName:"v-show",value:e.showSeconds,expression:"showSeconds"}],ref:"seconds",staticClass:"el-time-spinner__wrapper",attrs:{"wrap-style":"max-height: inherit;","view-class":"el-time-spinner__list",noresize:"",tag:"ul"},nativeOn:{mouseenter:function(t){e.emitSelectRange("seconds")},mousemove:function(t){e.adjustCurrentSpinner("seconds")}}},e._l(60,function(t,n){return i("li",{key:n,staticClass:"el-time-spinner__item",class:{active:n===e.seconds},on:{click:function(t){e.handleClick("seconds",{value:n,disabled:!1})}}},[e._v(e._s(("0"+n).slice(-2)))])}),0)],e.arrowControl?[i("div",{staticClass:"el-time-spinner__wrapper is-arrow",on:{mouseenter:function(t){e.emitSelectRange("hours")}}},[i("i",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.decrease,expression:"decrease"}],staticClass:"el-time-spinner__arrow el-icon-arrow-up"}),i("i",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.increase,expression:"increase"}],staticClass:"el-time-spinner__arrow el-icon-arrow-down"}),i("ul",{ref:"hours",staticClass:"el-time-spinner__list"},e._l(e.arrowHourList,function(t,n){return i("li",{key:n,staticClass:"el-time-spinner__item",class:{active:t===e.hours,disabled:e.hoursList[t]}},[e._v(e._s(void 0===t?"":("0"+(e.amPmMode?t%12||12:t)).slice(-2)+e.amPm(t)))])}),0)]),i("div",{staticClass:"el-time-spinner__wrapper is-arrow",on:{mouseenter:function(t){e.emitSelectRange("minutes")}}},[i("i",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.decrease,expression:"decrease"}],staticClass:"el-time-spinner__arrow el-icon-arrow-up"}),i("i",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.increase,expression:"increase"}],staticClass:"el-time-spinner__arrow el-icon-arrow-down"}),i("ul",{ref:"minutes",staticClass:"el-time-spinner__list"},e._l(e.arrowMinuteList,function(t,n){return i("li",{key:n,staticClass:"el-time-spinner__item",class:{active:t===e.minutes}},[e._v("\n          "+e._s(void 0===t?"":("0"+t).slice(-2))+"\n        ")])}),0)]),e.showSeconds?i("div",{staticClass:"el-time-spinner__wrapper is-arrow",on:{mouseenter:function(t){e.emitSelectRange("seconds")}}},[i("i",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.decrease,expression:"decrease"}],staticClass:"el-time-spinner__arrow el-icon-arrow-up"}),i("i",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.increase,expression:"increase"}],staticClass:"el-time-spinner__arrow el-icon-arrow-down"}),i("ul",{ref:"seconds",staticClass:"el-time-spinner__list"},e._l(e.arrowSecondList,function(t,n){return i("li",{key:n,staticClass:"el-time-spinner__item",class:{active:t===e.seconds}},[e._v("\n          "+e._s(void 0===t?"":("0"+t).slice(-2))+"\n        ")])}),0)]):e._e()]:e._e()],2)};Qr._withStripped=!0;var es=r({components:{ElScrollbar:Ze},directives:{repeatClick:bi},props:{date:{},defaultValue:{},showSeconds:{type:Boolean,default:!0},arrowControl:Boolean,amPmMode:{type:String,default:""}},computed:{hours:function(){return this.date.getHours()},minutes:function(){return this.date.getMinutes()},seconds:function(){return this.date.getSeconds()},hoursList:function(){return function(e){var t=[],i=[];if((e||[]).forEach(function(e){var t=e.map(function(e){return e.getHours()});i=i.concat(function(e,t){for(var i=[],n=e;n<=t;n++)i.push(n);return i}(t[0],t[1]))}),i.length)for(var n=0;n<24;n++)t[n]=-1===i.indexOf(n);else for(var r=0;r<24;r++)t[r]=!1;return t}(this.selectableRange)},minutesList:function(){return e=this.selectableRange,t=this.hours,i=new Array(60),e.length>0?e.forEach(function(e){var n=e[0],r=e[1],s=n.getHours(),a=n.getMinutes(),o=r.getHours(),l=r.getMinutes();s===t&&o!==t?br(i,a,60,!0):s===t&&o===t?br(i,a,l+1,!0):s!==t&&o===t?br(i,0,l+1,!0):s<t&&o>t&&br(i,0,60,!0)}):br(i,0,60,!0),i;var e,t,i},arrowHourList:function(){var e=this.hours;return[e>0?e-1:void 0,e,e<23?e+1:void 0]},arrowMinuteList:function(){var e=this.minutes;return[e>0?e-1:void 0,e,e<59?e+1:void 0]},arrowSecondList:function(){var e=this.seconds;return[e>0?e-1:void 0,e,e<59?e+1:void 0]}},data:function(){return{selectableRange:[],currentScrollbar:null}},mounted:function(){var e=this;this.$nextTick(function(){!e.arrowControl&&e.bindScrollEvent()})},methods:{increase:function(){this.scrollDown(1)},decrease:function(){this.scrollDown(-1)},modifyDateField:function(e,t){switch(e){case"hours":this.$emit("change",_r(this.date,t,this.minutes,this.seconds));break;case"minutes":this.$emit("change",_r(this.date,this.hours,t,this.seconds));break;case"seconds":this.$emit("change",_r(this.date,this.hours,this.minutes,t))}},handleClick:function(e,t){var i=t.value;t.disabled||(this.modifyDateField(e,i),this.emitSelectRange(e),this.adjustSpinner(e,i))},emitSelectRange:function(e){"hours"===e?this.$emit("select-range",0,2):"minutes"===e?this.$emit("select-range",3,5):"seconds"===e&&this.$emit("select-range",6,8),this.currentScrollbar=e},bindScrollEvent:function(){var e=this,t=function(t){e.$refs[t].wrap.onscroll=function(i){e.handleScroll(t,i)}};t("hours"),t("minutes"),t("seconds")},handleScroll:function(e){var t=Math.min(Math.round((this.$refs[e].wrap.scrollTop-(.5*this.scrollBarHeight(e)-10)/this.typeItemHeight(e)+3)/this.typeItemHeight(e)),"hours"===e?23:59);this.modifyDateField(e,t)},adjustSpinners:function(){this.adjustSpinner("hours",this.hours),this.adjustSpinner("minutes",this.minutes),this.adjustSpinner("seconds",this.seconds)},adjustCurrentSpinner:function(e){this.adjustSpinner(e,this[e])},adjustSpinner:function(e,t){if(!this.arrowControl){var i=this.$refs[e].wrap;i&&(i.scrollTop=Math.max(0,t*this.typeItemHeight(e)))}},scrollDown:function(e){var t=this;this.currentScrollbar||this.emitSelectRange("hours");var i=this.currentScrollbar,n=this.hoursList,r=this[i];if("hours"===this.currentScrollbar){var s=Math.abs(e);e=e>0?1:-1;for(var a=n.length;a--&&s;)n[r=(r+e+n.length)%n.length]||s--;if(n[r])return}else r=(r+e+60)%60;this.modifyDateField(i,r),this.adjustSpinner(i,r),this.$nextTick(function(){return t.emitSelectRange(t.currentScrollbar)})},amPm:function(e){if(!("a"===this.amPmMode.toLowerCase()))return"";var t=e<12?" am":" pm";return"A"===this.amPmMode&&(t=t.toUpperCase()),t},typeItemHeight:function(e){return this.$refs[e].$el.querySelector("li").offsetHeight},scrollBarHeight:function(e){return this.$refs[e].$el.offsetHeight}}},Qr,[],!1,null,null,null);es.options.__file="packages/date-picker/src/basic/time-spinner.vue";var ts=es.exports,is=r({mixins:[q],components:{TimeSpinner:ts},props:{visible:Boolean,timeArrowControl:Boolean},watch:{visible:function(e){var t=this;e?(this.oldValue=this.value,this.$nextTick(function(){return t.$refs.spinner.emitSelectRange("hours")})):this.needInitAdjust=!0},value:function(e){var t=this,i=void 0;e instanceof Date?i=Sr(e,this.selectableRange,this.format):e||(i=this.defaultValue?new Date(this.defaultValue):new Date),this.date=i,this.visible&&this.needInitAdjust&&(this.$nextTick(function(e){return t.adjustSpinners()}),this.needInitAdjust=!1)},selectableRange:function(e){this.$refs.spinner.selectableRange=e},defaultValue:function(e){ur(this.value)||(this.date=e?new Date(e):new Date)}},data:function(){return{popperClass:"",format:"HH:mm:ss",value:"",defaultValue:null,date:new Date,oldValue:new Date,selectableRange:[],selectionRange:[0,2],disabled:!1,arrowControl:!1,needInitAdjust:!0}},computed:{showSeconds:function(){return-1!==(this.format||"").indexOf("ss")},useArrow:function(){return this.arrowControl||this.timeArrowControl||!1},amPmMode:function(){return-1!==(this.format||"").indexOf("A")?"A":-1!==(this.format||"").indexOf("a")?"a":""}},methods:{handleCancel:function(){this.$emit("pick",this.oldValue,!1)},handleChange:function(e){this.visible&&(this.date=kr(e),this.isValidValue(this.date)&&this.$emit("pick",this.date,!0))},setSelectionRange:function(e,t){this.$emit("select-range",e,t),this.selectionRange=[e,t]},handleConfirm:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments[1];if(!t){var i=kr(Sr(this.date,this.selectableRange,this.format));this.$emit("pick",i,e,t)}},handleKeydown:function(e){var t=e.keyCode,i={38:-1,40:1,37:-1,39:1};if(37===t||39===t){var n=i[t];return this.changeSelectionRange(n),void e.preventDefault()}if(38===t||40===t){var r=i[t];return this.$refs.spinner.scrollDown(r),void e.preventDefault()}},isValidValue:function(e){return Dr(e,this.selectableRange,this.format)},adjustSpinners:function(){return this.$refs.spinner.adjustSpinners()},changeSelectionRange:function(e){var t=[0,3].concat(this.showSeconds?[6]:[]),i=["hours","minutes"].concat(this.showSeconds?["seconds"]:[]),n=(t.indexOf(this.selectionRange[0])+e+t.length)%t.length;this.$refs.spinner.emitSelectRange(i[n])}},mounted:function(){var e=this;this.$nextTick(function(){return e.handleConfirm(!0,!0)}),this.$emit("mounted")}},Zr,[],!1,null,null,null);is.options.__file="packages/date-picker/src/panel/time.vue";var ns=is.exports,rs=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("table",{staticClass:"el-year-table",on:{click:e.handleYearTableClick}},[i("tbody",[i("tr",[i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+0)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear))])]),i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+1)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+1))])]),i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+2)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+2))])]),i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+3)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+3))])])]),i("tr",[i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+4)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+4))])]),i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+5)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+5))])]),i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+6)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+6))])]),i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+7)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+7))])])]),i("tr",[i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+8)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+8))])]),i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+9)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+9))])]),i("td"),i("td")])])])};rs._withStripped=!0;var ss=r({props:{disabledDate:{},value:{},defaultValue:{validator:function(e){return null===e||e instanceof Date&&ur(e)}},date:{}},computed:{startYear:function(){return 10*Math.floor(this.date.getFullYear()/10)}},methods:{getCellStyle:function(e){var t={},i=new Date;return t.disabled="function"==typeof this.disabledDate&&function(e){var t=function(e){return e%400==0||e%100!=0&&e%4==0?366:365}(e),i=new Date(e,0,1);return yr(t).map(function(e){return vr(i,e)})}(e).every(this.disabledDate),t.current=E(M(this.value),function(t){return t.getFullYear()===e})>=0,t.today=i.getFullYear()===e,t.default=this.defaultValue&&this.defaultValue.getFullYear()===e,t},handleYearTableClick:function(e){var t=e.target;if("A"===t.tagName){if(pe(t.parentNode,"disabled"))return;var i=t.textContent||t.innerText;this.$emit("pick",Number(i))}}}},rs,[],!1,null,null,null);ss.options.__file="packages/date-picker/src/basic/year-table.vue";var as=ss.exports,os=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("table",{staticClass:"el-month-table",on:{click:e.handleMonthTableClick,mousemove:e.handleMouseMove}},[i("tbody",e._l(e.rows,function(t,n){return i("tr",{key:n},e._l(t,function(t,n){return i("td",{key:n,class:e.getCellStyle(t)},[i("div",[i("a",{staticClass:"cell"},[e._v(e._s(e.t("el.datepicker.months."+e.months[t.text])))])])])}),0)}),0)])};os._withStripped=!0;var ls=function(e){return new Date(e.getFullYear(),e.getMonth())},us=function(e){return"number"==typeof e||"string"==typeof e?ls(new Date(e)).getTime():e instanceof Date?ls(e).getTime():NaN},cs=r({props:{disabledDate:{},value:{},selectionMode:{default:"month"},minDate:{},maxDate:{},defaultValue:{validator:function(e){return null===e||ur(e)||Array.isArray(e)&&e.every(ur)}},date:{},rangeState:{default:function(){return{endDate:null,selecting:!1}}}},mixins:[q],watch:{"rangeState.endDate":function(e){this.markRange(this.minDate,e)},minDate:function(e,t){us(e)!==us(t)&&this.markRange(this.minDate,this.maxDate)},maxDate:function(e,t){us(e)!==us(t)&&this.markRange(this.minDate,this.maxDate)}},data:function(){return{months:["jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec"],tableRows:[[],[],[]],lastRow:null,lastColumn:null}},methods:{cellMatchesDate:function(e,t){var i=new Date(t);return this.date.getFullYear()===i.getFullYear()&&Number(e.text)===i.getMonth()},getCellStyle:function(e){var t=this,i={},n=this.date.getFullYear(),r=new Date,s=e.text,a=this.defaultValue?Array.isArray(this.defaultValue)?this.defaultValue:[this.defaultValue]:[];return i.disabled="function"==typeof this.disabledDate&&function(e,t){var i=pr(e,t),n=new Date(e,t,1);return yr(i).map(function(e){return vr(n,e)})}(n,s).every(this.disabledDate),i.current=E(M(this.value),function(e){return e.getFullYear()===n&&e.getMonth()===s})>=0,i.today=r.getFullYear()===n&&r.getMonth()===s,i.default=a.some(function(i){return t.cellMatchesDate(e,i)}),e.inRange&&(i["in-range"]=!0,e.start&&(i["start-date"]=!0),e.end&&(i["end-date"]=!0)),i},getMonthOfCell:function(e){var t=this.date.getFullYear();return new Date(t,e,1)},markRange:function(e,t){e=us(e),t=us(t)||e;var i=[Math.min(e,t),Math.max(e,t)];e=i[0],t=i[1];for(var n=this.rows,r=0,s=n.length;r<s;r++)for(var a=n[r],o=0,l=a.length;o<l;o++){var u=a[o],c=4*r+o,h=new Date(this.date.getFullYear(),c).getTime();u.inRange=e&&h>=e&&h<=t,u.start=e&&h===e,u.end=t&&h===t}},handleMouseMove:function(e){if(this.rangeState.selecting){var t=e.target;if("A"===t.tagName&&(t=t.parentNode.parentNode),"DIV"===t.tagName&&(t=t.parentNode),"TD"===t.tagName){var i=t.parentNode.rowIndex,n=t.cellIndex;this.rows[i][n].disabled||i===this.lastRow&&n===this.lastColumn||(this.lastRow=i,this.lastColumn=n,this.$emit("changerange",{minDate:this.minDate,maxDate:this.maxDate,rangeState:{selecting:!0,endDate:this.getMonthOfCell(4*i+n)}}))}}},handleMonthTableClick:function(e){var t=e.target;if("A"===t.tagName&&(t=t.parentNode.parentNode),"DIV"===t.tagName&&(t=t.parentNode),"TD"===t.tagName&&!pe(t,"disabled")){var i=t.cellIndex,n=4*t.parentNode.rowIndex+i,r=this.getMonthOfCell(n);"range"===this.selectionMode?this.rangeState.selecting?(r>=this.minDate?this.$emit("pick",{minDate:this.minDate,maxDate:r}):this.$emit("pick",{minDate:r,maxDate:this.minDate}),this.rangeState.selecting=!1):(this.$emit("pick",{minDate:r,maxDate:null}),this.rangeState.selecting=!0):this.$emit("pick",n)}}},computed:{rows:function(){for(var e=this,t=this.tableRows,i=this.disabledDate,n=[],r=us(new Date),s=0;s<3;s++)for(var a=t[s],o=function(t){var o=a[t];o||(o={row:s,column:t,type:"normal",inRange:!1,start:!1,end:!1}),o.type="normal";var l=4*s+t,u=new Date(e.date.getFullYear(),l).getTime();o.inRange=u>=us(e.minDate)&&u<=us(e.maxDate),o.start=e.minDate&&u===us(e.minDate),o.end=e.maxDate&&u===us(e.maxDate),u===r&&(o.type="today"),o.text=l;var c=new Date(u);o.disabled="function"==typeof i&&i(c),o.selected=T(n,function(e){return e.getTime()===c.getTime()}),e.$set(a,t,o)},l=0;l<4;l++)o(l);return t}}},os,[],!1,null,null,null);cs.options.__file="packages/date-picker/src/basic/month-table.vue";var hs=cs.exports,ds=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("table",{staticClass:"el-date-table",class:{"is-week-mode":"week"===e.selectionMode},attrs:{cellspacing:"0",cellpadding:"0"},on:{click:e.handleClick,mousemove:e.handleMouseMove}},[i("tbody",[i("tr",[e.showWeekNumber?i("th",[e._v(e._s(e.t("el.datepicker.week")))]):e._e(),e._l(e.WEEKS,function(t,n){return i("th",{key:n},[e._v(e._s(e.t("el.datepicker.weeks."+t)))])})],2),e._l(e.rows,function(t,n){return i("tr",{key:n,staticClass:"el-date-table__row",class:{current:e.isWeekActive(t[1])}},e._l(t,function(t,n){return i("td",{key:n,class:e.getCellClasses(t)},[i("div",[i("span",[e._v("\n          "+e._s(t.text)+"\n        ")])])])}),0)})],2)])};ds._withStripped=!0;var ps=["sun","mon","tue","wed","thu","fri","sat"],fs=function(e){return"number"==typeof e||"string"==typeof e?Cr(new Date(e)).getTime():e instanceof Date?Cr(e).getTime():NaN},ms=r({mixins:[q],props:{firstDayOfWeek:{default:7,type:Number,validator:function(e){return e>=1&&e<=7}},value:{},defaultValue:{validator:function(e){return null===e||ur(e)||Array.isArray(e)&&e.every(ur)}},date:{},selectionMode:{default:"day"},showWeekNumber:{type:Boolean,default:!1},disabledDate:{},cellClassName:{},minDate:{},maxDate:{},rangeState:{default:function(){return{endDate:null,selecting:!1}}}},computed:{offsetDay:function(){var e=this.firstDayOfWeek;return e>3?7-e:-e},WEEKS:function(){var e=this.firstDayOfWeek;return ps.concat(ps).slice(e,e+7)},year:function(){return this.date.getFullYear()},month:function(){return this.date.getMonth()},startDate:function(){return e=this.year,t=this.month,i=new Date(e,t,1),n=i.getDay(),mr(i,0===n?7:n);var e,t,i,n},rows:function(){var e=this,t=new Date(this.year,this.month,1),i=fr(t),n=pr(t.getFullYear(),t.getMonth()),r=pr(t.getFullYear(),0===t.getMonth()?11:t.getMonth()-1);i=0===i?7:i;for(var s=this.offsetDay,a=this.tableRows,o=1,l=this.startDate,u=this.disabledDate,c=this.cellClassName,h="dates"===this.selectionMode?M(this.value):[],d=fs(new Date),p=0;p<6;p++){var f=a[p];this.showWeekNumber&&(f[0]||(f[0]={type:"week",text:gr(vr(l,7*p+1))}));for(var m=function(t){var a=f[e.showWeekNumber?t+1:t];a||(a={row:p,column:t,type:"normal",inRange:!1,start:!1,end:!1}),a.type="normal";var m=vr(l,7*p+t-s).getTime();if(a.inRange=m>=fs(e.minDate)&&m<=fs(e.maxDate),a.start=e.minDate&&m===fs(e.minDate),a.end=e.maxDate&&m===fs(e.maxDate),m===d&&(a.type="today"),p>=0&&p<=1){var v=i+s<0?7+i+s:i+s;t+7*p>=v?a.text=o++:(a.text=r-(v-t%7)+1+7*p,a.type="prev-month")}else o<=n?a.text=o++:(a.text=o++-n,a.type="next-month");var g=new Date(m);a.disabled="function"==typeof u&&u(g),a.selected=T(h,function(e){return e.getTime()===g.getTime()}),a.customClass="function"==typeof c&&c(g),e.$set(f,e.showWeekNumber?t+1:t,a)},v=0;v<7;v++)m(v);if("week"===this.selectionMode){var g=this.showWeekNumber?1:0,b=this.showWeekNumber?7:6,y=this.isWeekActive(f[g+1]);f[g].inRange=y,f[g].start=y,f[b].inRange=y,f[b].end=y}}return a}},watch:{"rangeState.endDate":function(e){this.markRange(this.minDate,e)},minDate:function(e,t){fs(e)!==fs(t)&&this.markRange(this.minDate,this.maxDate)},maxDate:function(e,t){fs(e)!==fs(t)&&this.markRange(this.minDate,this.maxDate)}},data:function(){return{tableRows:[[],[],[],[],[],[]],lastRow:null,lastColumn:null}},methods:{cellMatchesDate:function(e,t){var i=new Date(t);return this.year===i.getFullYear()&&this.month===i.getMonth()&&Number(e.text)===i.getDate()},getCellClasses:function(e){var t=this,i=this.selectionMode,n=this.defaultValue?Array.isArray(this.defaultValue)?this.defaultValue:[this.defaultValue]:[],r=[];return"normal"!==e.type&&"today"!==e.type||e.disabled?r.push(e.type):(r.push("available"),"today"===e.type&&r.push("today")),"normal"===e.type&&n.some(function(i){return t.cellMatchesDate(e,i)})&&r.push("default"),"day"!==i||"normal"!==e.type&&"today"!==e.type||!this.cellMatchesDate(e,this.value)||r.push("current"),!e.inRange||"normal"!==e.type&&"today"!==e.type&&"week"!==this.selectionMode||(r.push("in-range"),e.start&&r.push("start-date"),e.end&&r.push("end-date")),e.disabled&&r.push("disabled"),e.selected&&r.push("selected"),e.customClass&&r.push(e.customClass),r.join(" ")},getDateOfCell:function(e,t){var i=7*e+(t-(this.showWeekNumber?1:0))-this.offsetDay;return vr(this.startDate,i)},isWeekActive:function(e){if("week"!==this.selectionMode)return!1;var t=new Date(this.year,this.month,1),i=t.getFullYear(),n=t.getMonth();if("prev-month"===e.type&&(t.setMonth(0===n?11:n-1),t.setFullYear(0===n?i-1:i)),"next-month"===e.type&&(t.setMonth(11===n?0:n+1),t.setFullYear(11===n?i+1:i)),t.setDate(parseInt(e.text,10)),ur(this.value)){var r=(this.value.getDay()-this.firstDayOfWeek+7)%7-1;return mr(this.value,r).getTime()===t.getTime()}return!1},markRange:function(e,t){e=fs(e),t=fs(t)||e;var i=[Math.min(e,t),Math.max(e,t)];e=i[0],t=i[1];for(var n=this.startDate,r=this.rows,s=0,a=r.length;s<a;s++)for(var o=r[s],l=0,u=o.length;l<u;l++)if(!this.showWeekNumber||0!==l){var c=o[l],h=7*s+l+(this.showWeekNumber?-1:0),d=vr(n,h-this.offsetDay).getTime();c.inRange=e&&d>=e&&d<=t,c.start=e&&d===e,c.end=t&&d===t}},handleMouseMove:function(e){if(this.rangeState.selecting){var t=e.target;if("SPAN"===t.tagName&&(t=t.parentNode.parentNode),"DIV"===t.tagName&&(t=t.parentNode),"TD"===t.tagName){var i=t.parentNode.rowIndex-1,n=t.cellIndex;this.rows[i][n].disabled||i===this.lastRow&&n===this.lastColumn||(this.lastRow=i,this.lastColumn=n,this.$emit("changerange",{minDate:this.minDate,maxDate:this.maxDate,rangeState:{selecting:!0,endDate:this.getDateOfCell(i,n)}}))}}},handleClick:function(e){var t=e.target;if("SPAN"===t.tagName&&(t=t.parentNode.parentNode),"DIV"===t.tagName&&(t=t.parentNode),"TD"===t.tagName){var i=t.parentNode.rowIndex-1,n="week"===this.selectionMode?1:t.cellIndex,r=this.rows[i][n];if(!r.disabled&&"week"!==r.type){var s,a,o,l=this.getDateOfCell(i,n);if("range"===this.selectionMode)this.rangeState.selecting?(l>=this.minDate?this.$emit("pick",{minDate:this.minDate,maxDate:l}):this.$emit("pick",{minDate:l,maxDate:this.minDate}),this.rangeState.selecting=!1):(this.$emit("pick",{minDate:l,maxDate:null}),this.rangeState.selecting=!0);else if("day"===this.selectionMode)this.$emit("pick",l);else if("week"===this.selectionMode){var u=gr(l),c=l.getFullYear()+"w"+u;this.$emit("pick",{year:l.getFullYear(),week:u,value:c,date:l})}else if("dates"===this.selectionMode){var h=this.value||[],d=r.selected?(s=h,(o="function"==typeof(a=function(e){return e.getTime()===l.getTime()})?E(s,a):s.indexOf(a))>=0?[].concat(s.slice(0,o),s.slice(o+1)):s):[].concat(h,[l]);this.$emit("pick",d)}}}}}},ds,[],!1,null,null,null);ms.options.__file="packages/date-picker/src/basic/date-table.vue";var vs=ms.exports,gs=r({mixins:[q],directives:{Clickoutside:at},watch:{showTime:function(e){var t=this;e&&this.$nextTick(function(e){var i=t.$refs.input.$el;i&&(t.pickerWidth=i.getBoundingClientRect().width+10)})},value:function(e){"dates"===this.selectionMode&&this.value||(ur(e)?this.date=new Date(e):this.date=this.getDefaultValue())},defaultValue:function(e){ur(this.value)||(this.date=e?new Date(e):new Date)},timePickerVisible:function(e){var t=this;e&&this.$nextTick(function(){return t.$refs.timepicker.adjustSpinners()})},selectionMode:function(e){"month"===e?"year"===this.currentView&&"month"===this.currentView||(this.currentView="month"):"dates"===e&&(this.currentView="date")}},methods:{proxyTimePickerDataProperties:function(){var e,t=this,i=function(e){t.$refs.timepicker.value=e},n=function(e){t.$refs.timepicker.date=e},r=function(e){t.$refs.timepicker.selectableRange=e};this.$watch("value",i),this.$watch("date",n),this.$watch("selectableRange",r),e=this.timeFormat,t.$refs.timepicker.format=e,i(this.value),n(this.date),r(this.selectableRange)},handleClear:function(){this.date=this.getDefaultValue(),this.$emit("pick",null)},emit:function(e){for(var t=this,i=arguments.length,n=Array(i>1?i-1:0),r=1;r<i;r++)n[r-1]=arguments[r];if(e)if(Array.isArray(e)){var s=e.map(function(e){return t.showTime?kr(e):Cr(e)});this.$emit.apply(this,["pick",s].concat(n))}else this.$emit.apply(this,["pick",this.showTime?kr(e):Cr(e)].concat(n));else this.$emit.apply(this,["pick",e].concat(n));this.userInputDate=null,this.userInputTime=null},showMonthPicker:function(){this.currentView="month"},showYearPicker:function(){this.currentView="year"},prevMonth:function(){this.date=Er(this.date)},nextMonth:function(){this.date=Tr(this.date)},prevYear:function(){"year"===this.currentView?this.date=Mr(this.date,10):this.date=Mr(this.date)},nextYear:function(){"year"===this.currentView?this.date=Nr(this.date,10):this.date=Nr(this.date)},handleShortcutClick:function(e){e.onClick&&e.onClick(this)},handleTimePick:function(e,t,i){if(ur(e)){var n=this.value?_r(this.value,e.getHours(),e.getMinutes(),e.getSeconds()):xr(this.getDefaultValue(),this.defaultTime);this.date=n,this.emit(this.date,!0)}else this.emit(e,!0);i||(this.timePickerVisible=t)},handleTimePickClose:function(){this.timePickerVisible=!1},handleMonthPick:function(e){"month"===this.selectionMode?(this.date=wr(this.date,this.year,e,1),this.emit(this.date)):(this.date=$r(this.date,this.year,e),this.currentView="date")},handleDatePick:function(e){if("day"===this.selectionMode){var t=this.value?wr(this.value,e.getFullYear(),e.getMonth(),e.getDate()):xr(e,this.defaultTime);this.checkDateWithinRange(t)||(t=wr(this.selectableRange[0][0],e.getFullYear(),e.getMonth(),e.getDate())),this.date=t,this.emit(this.date,this.showTime)}else"week"===this.selectionMode?this.emit(e.date):"dates"===this.selectionMode&&this.emit(e,!0)},handleYearPick:function(e){"year"===this.selectionMode?(this.date=wr(this.date,e,0,1),this.emit(this.date)):(this.date=$r(this.date,e,this.month),this.currentView="month")},changeToNow:function(){this.disabledDate&&this.disabledDate(new Date)||!this.checkDateWithinRange(new Date)||(this.date=new Date,this.emit(this.date))},confirm:function(){if("dates"===this.selectionMode)this.emit(this.value);else{var e=this.value?this.value:xr(this.getDefaultValue(),this.defaultTime);this.date=new Date(e),this.emit(e)}},resetView:function(){"month"===this.selectionMode?this.currentView="month":"year"===this.selectionMode?this.currentView="year":this.currentView="date"},handleEnter:function(){document.body.addEventListener("keydown",this.handleKeydown)},handleLeave:function(){this.$emit("dodestroy"),document.body.removeEventListener("keydown",this.handleKeydown)},handleKeydown:function(e){var t=e.keyCode;this.visible&&!this.timePickerVisible&&(-1!==[38,40,37,39].indexOf(t)&&(this.handleKeyControl(t),e.stopPropagation(),e.preventDefault()),13===t&&null===this.userInputDate&&null===this.userInputTime&&this.emit(this.date,!1))},handleKeyControl:function(e){for(var t={year:{38:-4,40:4,37:-1,39:1,offset:function(e,t){return e.setFullYear(e.getFullYear()+t)}},month:{38:-4,40:4,37:-1,39:1,offset:function(e,t){return e.setMonth(e.getMonth()+t)}},week:{38:-1,40:1,37:-1,39:1,offset:function(e,t){return e.setDate(e.getDate()+7*t)}},day:{38:-7,40:7,37:-1,39:1,offset:function(e,t){return e.setDate(e.getDate()+t)}}},i=this.selectionMode,n=this.date.getTime(),r=new Date(this.date.getTime());Math.abs(n-r.getTime())<=31536e6;){var s=t[i];if(s.offset(r,s[e]),"function"!=typeof this.disabledDate||!this.disabledDate(r)){this.date=r,this.$emit("pick",r,!0);break}}},handleVisibleTimeChange:function(e){var t=dr(e,this.timeFormat);t&&this.checkDateWithinRange(t)&&(this.date=wr(t,this.year,this.month,this.monthDate),this.userInputTime=null,this.$refs.timepicker.value=this.date,this.timePickerVisible=!1,this.emit(this.date,!0))},handleVisibleDateChange:function(e){var t=dr(e,this.dateFormat);if(t){if("function"==typeof this.disabledDate&&this.disabledDate(t))return;this.date=_r(t,this.date.getHours(),this.date.getMinutes(),this.date.getSeconds()),this.userInputDate=null,this.resetView(),this.emit(this.date,!0)}},isValidValue:function(e){return e&&!isNaN(e)&&("function"!=typeof this.disabledDate||!this.disabledDate(e))&&this.checkDateWithinRange(e)},getDefaultValue:function(){return this.defaultValue?new Date(this.defaultValue):new Date},checkDateWithinRange:function(e){return!(this.selectableRange.length>0)||Dr(e,this.selectableRange,this.format||"HH:mm:ss")}},components:{TimePicker:ns,YearTable:as,MonthTable:hs,DateTable:vs,ElInput:ne,ElButton:Et},data:function(){return{popperClass:"",date:new Date,value:"",defaultValue:null,defaultTime:null,showTime:!1,selectionMode:"day",shortcuts:"",visible:!1,currentView:"date",disabledDate:"",cellClassName:"",selectableRange:[],firstDayOfWeek:7,showWeekNumber:!1,timePickerVisible:!1,format:"",arrowControl:!1,userInputDate:null,userInputTime:null}},computed:{year:function(){return this.date.getFullYear()},month:function(){return this.date.getMonth()},week:function(){return gr(this.date)},monthDate:function(){return this.date.getDate()},footerVisible:function(){return this.showTime||"dates"===this.selectionMode},visibleTime:function(){return null!==this.userInputTime?this.userInputTime:hr(this.value||this.defaultValue,this.timeFormat)},visibleDate:function(){return null!==this.userInputDate?this.userInputDate:hr(this.value||this.defaultValue,this.dateFormat)},yearLabel:function(){var e=this.t("el.datepicker.year");if("year"===this.currentView){var t=10*Math.floor(this.year/10);return e?t+" "+e+" - "+(t+9)+" "+e:t+" - "+(t+9)}return this.year+" "+e},timeFormat:function(){return this.format?Or(this.format):"HH:mm:ss"},dateFormat:function(){return this.format?Pr(this.format):"yyyy-MM-dd"}}},Jr,[],!1,null,null,null);gs.options.__file="packages/date-picker/src/panel/date.vue";var bs=gs.exports,ys=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":function(t){e.$emit("dodestroy")}}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-picker-panel el-date-range-picker el-popper",class:[{"has-sidebar":e.$slots.sidebar||e.shortcuts,"has-time":e.showTime},e.popperClass]},[i("div",{staticClass:"el-picker-panel__body-wrapper"},[e._t("sidebar"),e.shortcuts?i("div",{staticClass:"el-picker-panel__sidebar"},e._l(e.shortcuts,function(t,n){return i("button",{key:n,staticClass:"el-picker-panel__shortcut",attrs:{type:"button"},on:{click:function(i){e.handleShortcutClick(t)}}},[e._v(e._s(t.text))])}),0):e._e(),i("div",{staticClass:"el-picker-panel__body"},[e.showTime?i("div",{staticClass:"el-date-range-picker__time-header"},[i("span",{staticClass:"el-date-range-picker__editors-wrap"},[i("span",{staticClass:"el-date-range-picker__time-picker-wrap"},[i("el-input",{ref:"minInput",staticClass:"el-date-range-picker__editor",attrs:{size:"small",disabled:e.rangeState.selecting,placeholder:e.t("el.datepicker.startDate"),value:e.minVisibleDate},on:{input:function(t){return e.handleDateInput(t,"min")},change:function(t){return e.handleDateChange(t,"min")}}})],1),i("span",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleMinTimeClose,expression:"handleMinTimeClose"}],staticClass:"el-date-range-picker__time-picker-wrap"},[i("el-input",{staticClass:"el-date-range-picker__editor",attrs:{size:"small",disabled:e.rangeState.selecting,placeholder:e.t("el.datepicker.startTime"),value:e.minVisibleTime},on:{focus:function(t){e.minTimePickerVisible=!0},input:function(t){return e.handleTimeInput(t,"min")},change:function(t){return e.handleTimeChange(t,"min")}}}),i("time-picker",{ref:"minTimePicker",attrs:{"time-arrow-control":e.arrowControl,visible:e.minTimePickerVisible},on:{pick:e.handleMinTimePick,mounted:function(t){e.$refs.minTimePicker.format=e.timeFormat}}})],1)]),i("span",{staticClass:"el-icon-arrow-right"}),i("span",{staticClass:"el-date-range-picker__editors-wrap is-right"},[i("span",{staticClass:"el-date-range-picker__time-picker-wrap"},[i("el-input",{staticClass:"el-date-range-picker__editor",attrs:{size:"small",disabled:e.rangeState.selecting,placeholder:e.t("el.datepicker.endDate"),value:e.maxVisibleDate,readonly:!e.minDate},on:{input:function(t){return e.handleDateInput(t,"max")},change:function(t){return e.handleDateChange(t,"max")}}})],1),i("span",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleMaxTimeClose,expression:"handleMaxTimeClose"}],staticClass:"el-date-range-picker__time-picker-wrap"},[i("el-input",{staticClass:"el-date-range-picker__editor",attrs:{size:"small",disabled:e.rangeState.selecting,placeholder:e.t("el.datepicker.endTime"),value:e.maxVisibleTime,readonly:!e.minDate},on:{focus:function(t){e.minDate&&(e.maxTimePickerVisible=!0)},input:function(t){return e.handleTimeInput(t,"max")},change:function(t){return e.handleTimeChange(t,"max")}}}),i("time-picker",{ref:"maxTimePicker",attrs:{"time-arrow-control":e.arrowControl,visible:e.maxTimePickerVisible},on:{pick:e.handleMaxTimePick,mounted:function(t){e.$refs.maxTimePicker.format=e.timeFormat}}})],1)])]):e._e(),i("div",{staticClass:"el-picker-panel__content el-date-range-picker__content is-left"},[i("div",{staticClass:"el-date-range-picker__header"},[i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-left",attrs:{type:"button"},on:{click:e.leftPrevYear}}),i("button",{staticClass:"el-picker-panel__icon-btn el-icon-arrow-left",attrs:{type:"button"},on:{click:e.leftPrevMonth}}),e.unlinkPanels?i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-right",class:{"is-disabled":!e.enableYearArrow},attrs:{type:"button",disabled:!e.enableYearArrow},on:{click:e.leftNextYear}}):e._e(),e.unlinkPanels?i("button",{staticClass:"el-picker-panel__icon-btn el-icon-arrow-right",class:{"is-disabled":!e.enableMonthArrow},attrs:{type:"button",disabled:!e.enableMonthArrow},on:{click:e.leftNextMonth}}):e._e(),i("div",[e._v(e._s(e.leftLabel))])]),i("date-table",{attrs:{"selection-mode":"range",date:e.leftDate,"default-value":e.defaultValue,"min-date":e.minDate,"max-date":e.maxDate,"range-state":e.rangeState,"disabled-date":e.disabledDate,"cell-class-name":e.cellClassName,"first-day-of-week":e.firstDayOfWeek},on:{changerange:e.handleChangeRange,pick:e.handleRangePick}})],1),i("div",{staticClass:"el-picker-panel__content el-date-range-picker__content is-right"},[i("div",{staticClass:"el-date-range-picker__header"},[e.unlinkPanels?i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-left",class:{"is-disabled":!e.enableYearArrow},attrs:{type:"button",disabled:!e.enableYearArrow},on:{click:e.rightPrevYear}}):e._e(),e.unlinkPanels?i("button",{staticClass:"el-picker-panel__icon-btn el-icon-arrow-left",class:{"is-disabled":!e.enableMonthArrow},attrs:{type:"button",disabled:!e.enableMonthArrow},on:{click:e.rightPrevMonth}}):e._e(),i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-right",attrs:{type:"button"},on:{click:e.rightNextYear}}),i("button",{staticClass:"el-picker-panel__icon-btn el-icon-arrow-right",attrs:{type:"button"},on:{click:e.rightNextMonth}}),i("div",[e._v(e._s(e.rightLabel))])]),i("date-table",{attrs:{"selection-mode":"range",date:e.rightDate,"default-value":e.defaultValue,"min-date":e.minDate,"max-date":e.maxDate,"range-state":e.rangeState,"disabled-date":e.disabledDate,"cell-class-name":e.cellClassName,"first-day-of-week":e.firstDayOfWeek},on:{changerange:e.handleChangeRange,pick:e.handleRangePick}})],1)])],2),e.showTime?i("div",{staticClass:"el-picker-panel__footer"},[i("el-button",{staticClass:"el-picker-panel__link-btn",attrs:{size:"mini",type:"text"},on:{click:e.handleClear}},[e._v("\n        "+e._s(e.t("el.datepicker.clear"))+"\n      ")]),i("el-button",{staticClass:"el-picker-panel__link-btn",attrs:{plain:"",size:"mini",disabled:e.btnDisabled},on:{click:function(t){e.handleConfirm(!1)}}},[e._v("\n        "+e._s(e.t("el.datepicker.confirm"))+"\n      ")])],1):e._e()])])};ys._withStripped=!0;var ws=function(e){return Array.isArray(e)?[new Date(e[0]),new Date(e[1])]:e?[new Date(e),vr(new Date(e),1)]:[new Date,vr(new Date,1)]},_s=r({mixins:[q],directives:{Clickoutside:at},computed:{btnDisabled:function(){return!(this.minDate&&this.maxDate&&!this.selecting&&this.isValidValue([this.minDate,this.maxDate]))},leftLabel:function(){return this.leftDate.getFullYear()+" "+this.t("el.datepicker.year")+" "+this.t("el.datepicker.month"+(this.leftDate.getMonth()+1))},rightLabel:function(){return this.rightDate.getFullYear()+" "+this.t("el.datepicker.year")+" "+this.t("el.datepicker.month"+(this.rightDate.getMonth()+1))},leftYear:function(){return this.leftDate.getFullYear()},leftMonth:function(){return this.leftDate.getMonth()},leftMonthDate:function(){return this.leftDate.getDate()},rightYear:function(){return this.rightDate.getFullYear()},rightMonth:function(){return this.rightDate.getMonth()},rightMonthDate:function(){return this.rightDate.getDate()},minVisibleDate:function(){return null!==this.dateUserInput.min?this.dateUserInput.min:this.minDate?hr(this.minDate,this.dateFormat):""},maxVisibleDate:function(){return null!==this.dateUserInput.max?this.dateUserInput.max:this.maxDate||this.minDate?hr(this.maxDate||this.minDate,this.dateFormat):""},minVisibleTime:function(){return null!==this.timeUserInput.min?this.timeUserInput.min:this.minDate?hr(this.minDate,this.timeFormat):""},maxVisibleTime:function(){return null!==this.timeUserInput.max?this.timeUserInput.max:this.maxDate||this.minDate?hr(this.maxDate||this.minDate,this.timeFormat):""},timeFormat:function(){return this.format?Or(this.format):"HH:mm:ss"},dateFormat:function(){return this.format?Pr(this.format):"yyyy-MM-dd"},enableMonthArrow:function(){var e=(this.leftMonth+1)%12,t=this.leftMonth+1>=12?1:0;return this.unlinkPanels&&new Date(this.leftYear+t,e)<new Date(this.rightYear,this.rightMonth)},enableYearArrow:function(){return this.unlinkPanels&&12*this.rightYear+this.rightMonth-(12*this.leftYear+this.leftMonth+1)>=12}},data:function(){return{popperClass:"",value:[],defaultValue:null,defaultTime:null,minDate:"",maxDate:"",leftDate:new Date,rightDate:Tr(new Date),rangeState:{endDate:null,selecting:!1,row:null,column:null},showTime:!1,shortcuts:"",visible:"",disabledDate:"",cellClassName:"",firstDayOfWeek:7,minTimePickerVisible:!1,maxTimePickerVisible:!1,format:"",arrowControl:!1,unlinkPanels:!1,dateUserInput:{min:null,max:null},timeUserInput:{min:null,max:null}}},watch:{minDate:function(e){var t=this;this.dateUserInput.min=null,this.timeUserInput.min=null,this.$nextTick(function(){if(t.$refs.maxTimePicker&&t.maxDate&&t.maxDate<t.minDate){t.$refs.maxTimePicker.selectableRange=[[dr(hr(t.minDate,"HH:mm:ss"),"HH:mm:ss"),dr("23:59:59","HH:mm:ss")]]}}),e&&this.$refs.minTimePicker&&(this.$refs.minTimePicker.date=e,this.$refs.minTimePicker.value=e)},maxDate:function(e){this.dateUserInput.max=null,this.timeUserInput.max=null,e&&this.$refs.maxTimePicker&&(this.$refs.maxTimePicker.date=e,this.$refs.maxTimePicker.value=e)},minTimePickerVisible:function(e){var t=this;e&&this.$nextTick(function(){t.$refs.minTimePicker.date=t.minDate,t.$refs.minTimePicker.value=t.minDate,t.$refs.minTimePicker.adjustSpinners()})},maxTimePickerVisible:function(e){var t=this;e&&this.$nextTick(function(){t.$refs.maxTimePicker.date=t.maxDate,t.$refs.maxTimePicker.value=t.maxDate,t.$refs.maxTimePicker.adjustSpinners()})},value:function(e){if(e){if(Array.isArray(e))if(this.minDate=ur(e[0])?new Date(e[0]):null,this.maxDate=ur(e[1])?new Date(e[1]):null,this.minDate)if(this.leftDate=this.minDate,this.unlinkPanels&&this.maxDate){var t=this.minDate.getFullYear(),i=this.minDate.getMonth(),n=this.maxDate.getFullYear(),r=this.maxDate.getMonth();this.rightDate=t===n&&i===r?Tr(this.maxDate):this.maxDate}else this.rightDate=Tr(this.leftDate);else this.leftDate=ws(this.defaultValue)[0],this.rightDate=Tr(this.leftDate)}else this.minDate=null,this.maxDate=null},defaultValue:function(e){if(!Array.isArray(this.value)){var t=ws(e),i=t[0],n=t[1];this.leftDate=i,this.rightDate=e&&e[1]&&this.unlinkPanels?n:Tr(this.leftDate)}}},methods:{handleClear:function(){this.minDate=null,this.maxDate=null,this.leftDate=ws(this.defaultValue)[0],this.rightDate=Tr(this.leftDate),this.$emit("pick",null)},handleChangeRange:function(e){this.minDate=e.minDate,this.maxDate=e.maxDate,this.rangeState=e.rangeState},handleDateInput:function(e,t){if(this.dateUserInput[t]=e,e.length===this.dateFormat.length){var i=dr(e,this.dateFormat);if(i){if("function"==typeof this.disabledDate&&this.disabledDate(new Date(i)))return;"min"===t?(this.minDate=wr(this.minDate||new Date,i.getFullYear(),i.getMonth(),i.getDate()),this.leftDate=new Date(i),this.unlinkPanels||(this.rightDate=Tr(this.leftDate))):(this.maxDate=wr(this.maxDate||new Date,i.getFullYear(),i.getMonth(),i.getDate()),this.rightDate=new Date(i),this.unlinkPanels||(this.leftDate=Er(i)))}}},handleDateChange:function(e,t){var i=dr(e,this.dateFormat);i&&("min"===t?(this.minDate=wr(this.minDate,i.getFullYear(),i.getMonth(),i.getDate()),this.minDate>this.maxDate&&(this.maxDate=this.minDate)):(this.maxDate=wr(this.maxDate,i.getFullYear(),i.getMonth(),i.getDate()),this.maxDate<this.minDate&&(this.minDate=this.maxDate)))},handleTimeInput:function(e,t){var i=this;if(this.timeUserInput[t]=e,e.length===this.timeFormat.length){var n=dr(e,this.timeFormat);n&&("min"===t?(this.minDate=_r(this.minDate,n.getHours(),n.getMinutes(),n.getSeconds()),this.$nextTick(function(e){return i.$refs.minTimePicker.adjustSpinners()})):(this.maxDate=_r(this.maxDate,n.getHours(),n.getMinutes(),n.getSeconds()),this.$nextTick(function(e){return i.$refs.maxTimePicker.adjustSpinners()})))}},handleTimeChange:function(e,t){var i=dr(e,this.timeFormat);i&&("min"===t?(this.minDate=_r(this.minDate,i.getHours(),i.getMinutes(),i.getSeconds()),this.minDate>this.maxDate&&(this.maxDate=this.minDate),this.$refs.minTimePicker.value=this.minDate,this.minTimePickerVisible=!1):(this.maxDate=_r(this.maxDate,i.getHours(),i.getMinutes(),i.getSeconds()),this.maxDate<this.minDate&&(this.minDate=this.maxDate),this.$refs.maxTimePicker.value=this.minDate,this.maxTimePickerVisible=!1))},handleRangePick:function(e){var t=this,i=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this.defaultTime||[],r=xr(e.minDate,n[0]),s=xr(e.maxDate,n[1]);this.maxDate===s&&this.minDate===r||(this.onPick&&this.onPick(e),this.maxDate=s,this.minDate=r,setTimeout(function(){t.maxDate=s,t.minDate=r},10),i&&!this.showTime&&this.handleConfirm())},handleShortcutClick:function(e){e.onClick&&e.onClick(this)},handleMinTimePick:function(e,t,i){this.minDate=this.minDate||new Date,e&&(this.minDate=_r(this.minDate,e.getHours(),e.getMinutes(),e.getSeconds())),i||(this.minTimePickerVisible=t),(!this.maxDate||this.maxDate&&this.maxDate.getTime()<this.minDate.getTime())&&(this.maxDate=new Date(this.minDate))},handleMinTimeClose:function(){this.minTimePickerVisible=!1},handleMaxTimePick:function(e,t,i){this.maxDate&&e&&(this.maxDate=_r(this.maxDate,e.getHours(),e.getMinutes(),e.getSeconds())),i||(this.maxTimePickerVisible=t),this.maxDate&&this.minDate&&this.minDate.getTime()>this.maxDate.getTime()&&(this.minDate=new Date(this.maxDate))},handleMaxTimeClose:function(){this.maxTimePickerVisible=!1},leftPrevYear:function(){this.leftDate=Mr(this.leftDate),this.unlinkPanels||(this.rightDate=Tr(this.leftDate))},leftPrevMonth:function(){this.leftDate=Er(this.leftDate),this.unlinkPanels||(this.rightDate=Tr(this.leftDate))},rightNextYear:function(){this.unlinkPanels?this.rightDate=Nr(this.rightDate):(this.leftDate=Nr(this.leftDate),this.rightDate=Tr(this.leftDate))},rightNextMonth:function(){this.unlinkPanels?this.rightDate=Tr(this.rightDate):(this.leftDate=Tr(this.leftDate),this.rightDate=Tr(this.leftDate))},leftNextYear:function(){this.leftDate=Nr(this.leftDate)},leftNextMonth:function(){this.leftDate=Tr(this.leftDate)},rightPrevYear:function(){this.rightDate=Mr(this.rightDate)},rightPrevMonth:function(){this.rightDate=Er(this.rightDate)},handleConfirm:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.isValidValue([this.minDate,this.maxDate])&&this.$emit("pick",[this.minDate,this.maxDate],e)},isValidValue:function(e){return Array.isArray(e)&&e&&e[0]&&e[1]&&ur(e[0])&&ur(e[1])&&e[0].getTime()<=e[1].getTime()&&("function"!=typeof this.disabledDate||!this.disabledDate(e[0])&&!this.disabledDate(e[1]))},resetView:function(){this.minDate&&null==this.maxDate&&(this.rangeState.selecting=!1),this.minDate=this.value&&ur(this.value[0])?new Date(this.value[0]):null,this.maxDate=this.value&&ur(this.value[0])?new Date(this.value[1]):null}},components:{TimePicker:ns,DateTable:vs,ElInput:ne,ElButton:Et}},ys,[],!1,null,null,null);_s.options.__file="packages/date-picker/src/panel/date-range.vue";var xs=_s.exports,Cs=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":function(t){e.$emit("dodestroy")}}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-picker-panel el-date-range-picker el-popper",class:[{"has-sidebar":e.$slots.sidebar||e.shortcuts},e.popperClass]},[i("div",{staticClass:"el-picker-panel__body-wrapper"},[e._t("sidebar"),e.shortcuts?i("div",{staticClass:"el-picker-panel__sidebar"},e._l(e.shortcuts,function(t,n){return i("button",{key:n,staticClass:"el-picker-panel__shortcut",attrs:{type:"button"},on:{click:function(i){e.handleShortcutClick(t)}}},[e._v(e._s(t.text))])}),0):e._e(),i("div",{staticClass:"el-picker-panel__body"},[i("div",{staticClass:"el-picker-panel__content el-date-range-picker__content is-left"},[i("div",{staticClass:"el-date-range-picker__header"},[i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-left",attrs:{type:"button"},on:{click:e.leftPrevYear}}),e.unlinkPanels?i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-right",class:{"is-disabled":!e.enableYearArrow},attrs:{type:"button",disabled:!e.enableYearArrow},on:{click:e.leftNextYear}}):e._e(),i("div",[e._v(e._s(e.leftLabel))])]),i("month-table",{attrs:{"selection-mode":"range",date:e.leftDate,"default-value":e.defaultValue,"min-date":e.minDate,"max-date":e.maxDate,"range-state":e.rangeState,"disabled-date":e.disabledDate},on:{changerange:e.handleChangeRange,pick:e.handleRangePick}})],1),i("div",{staticClass:"el-picker-panel__content el-date-range-picker__content is-right"},[i("div",{staticClass:"el-date-range-picker__header"},[e.unlinkPanels?i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-left",class:{"is-disabled":!e.enableYearArrow},attrs:{type:"button",disabled:!e.enableYearArrow},on:{click:e.rightPrevYear}}):e._e(),i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-right",attrs:{type:"button"},on:{click:e.rightNextYear}}),i("div",[e._v(e._s(e.rightLabel))])]),i("month-table",{attrs:{"selection-mode":"range",date:e.rightDate,"default-value":e.defaultValue,"min-date":e.minDate,"max-date":e.maxDate,"range-state":e.rangeState,"disabled-date":e.disabledDate},on:{changerange:e.handleChangeRange,pick:e.handleRangePick}})],1)])],2)])])};Cs._withStripped=!0;var ks=function(e){return Array.isArray(e)?[new Date(e[0]),new Date(e[1])]:e?[new Date(e),Tr(new Date(e))]:[new Date,Tr(new Date)]},Ss=r({mixins:[q],directives:{Clickoutside:at},computed:{btnDisabled:function(){return!(this.minDate&&this.maxDate&&!this.selecting&&this.isValidValue([this.minDate,this.maxDate]))},leftLabel:function(){return this.leftDate.getFullYear()+" "+this.t("el.datepicker.year")},rightLabel:function(){return this.rightDate.getFullYear()+" "+this.t("el.datepicker.year")},leftYear:function(){return this.leftDate.getFullYear()},rightYear:function(){return this.rightDate.getFullYear()===this.leftDate.getFullYear()?this.leftDate.getFullYear()+1:this.rightDate.getFullYear()},enableYearArrow:function(){return this.unlinkPanels&&this.rightYear>this.leftYear+1}},data:function(){return{popperClass:"",value:[],defaultValue:null,defaultTime:null,minDate:"",maxDate:"",leftDate:new Date,rightDate:Nr(new Date),rangeState:{endDate:null,selecting:!1,row:null,column:null},shortcuts:"",visible:"",disabledDate:"",format:"",arrowControl:!1,unlinkPanels:!1}},watch:{value:function(e){if(e){if(Array.isArray(e))if(this.minDate=ur(e[0])?new Date(e[0]):null,this.maxDate=ur(e[1])?new Date(e[1]):null,this.minDate)if(this.leftDate=this.minDate,this.unlinkPanels&&this.maxDate){var t=this.minDate.getFullYear(),i=this.maxDate.getFullYear();this.rightDate=t===i?Nr(this.maxDate):this.maxDate}else this.rightDate=Nr(this.leftDate);else this.leftDate=ks(this.defaultValue)[0],this.rightDate=Nr(this.leftDate)}else this.minDate=null,this.maxDate=null},defaultValue:function(e){if(!Array.isArray(this.value)){var t=ks(e),i=t[0],n=t[1];this.leftDate=i,this.rightDate=e&&e[1]&&i.getFullYear()!==n.getFullYear()&&this.unlinkPanels?n:Nr(this.leftDate)}}},methods:{handleClear:function(){this.minDate=null,this.maxDate=null,this.leftDate=ks(this.defaultValue)[0],this.rightDate=Nr(this.leftDate),this.$emit("pick",null)},handleChangeRange:function(e){this.minDate=e.minDate,this.maxDate=e.maxDate,this.rangeState=e.rangeState},handleRangePick:function(e){var t=this,i=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this.defaultTime||[],r=xr(e.minDate,n[0]),s=xr(e.maxDate,n[1]);this.maxDate===s&&this.minDate===r||(this.onPick&&this.onPick(e),this.maxDate=s,this.minDate=r,setTimeout(function(){t.maxDate=s,t.minDate=r},10),i&&this.handleConfirm())},handleShortcutClick:function(e){e.onClick&&e.onClick(this)},leftPrevYear:function(){this.leftDate=Mr(this.leftDate),this.unlinkPanels||(this.rightDate=Mr(this.rightDate))},rightNextYear:function(){this.unlinkPanels||(this.leftDate=Nr(this.leftDate)),this.rightDate=Nr(this.rightDate)},leftNextYear:function(){this.leftDate=Nr(this.leftDate)},rightPrevYear:function(){this.rightDate=Mr(this.rightDate)},handleConfirm:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.isValidValue([this.minDate,this.maxDate])&&this.$emit("pick",[this.minDate,this.maxDate],e)},isValidValue:function(e){return Array.isArray(e)&&e&&e[0]&&e[1]&&ur(e[0])&&ur(e[1])&&e[0].getTime()<=e[1].getTime()&&("function"!=typeof this.disabledDate||!this.disabledDate(e[0])&&!this.disabledDate(e[1]))},resetView:function(){this.minDate=this.value&&ur(this.value[0])?new Date(this.value[0]):null,this.maxDate=this.value&&ur(this.value[0])?new Date(this.value[1]):null}},components:{MonthTable:hs,ElInput:ne,ElButton:Et}},Cs,[],!1,null,null,null);Ss.options.__file="packages/date-picker/src/panel/month-range.vue";var Ds=Ss.exports,$s=function(e){return"daterange"===e||"datetimerange"===e?xs:"monthrange"===e?Ds:bs},Es={mixins:[Xr],name:"ElDatePicker",props:{type:{type:String,default:"date"},timeArrowControl:Boolean},watch:{type:function(e){this.picker?(this.unmountPicker(),this.panel=$s(e),this.mountPicker()):this.panel=$s(e)}},created:function(){this.panel=$s(this.type)},install:function(e){e.component(Es.name,Es)}},Ts=Es,Ms=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"before-enter":e.handleMenuEnter,"after-leave":function(t){e.$emit("dodestroy")}}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],ref:"popper",staticClass:"el-picker-panel time-select el-popper",class:e.popperClass,style:{width:e.width+"px"}},[i("el-scrollbar",{attrs:{noresize:"","wrap-class":"el-picker-panel__content"}},e._l(e.items,function(t){return i("div",{key:t.value,staticClass:"time-select-item",class:{selected:e.value===t.value,disabled:t.disabled,default:t.value===e.defaultValue},attrs:{disabled:t.disabled},on:{click:function(i){e.handleClick(t)}}},[e._v(e._s(t.value))])}),0)],1)])};Ms._withStripped=!0;var Ns=function(e){var t=(e||"").split(":");return t.length>=2?{hours:parseInt(t[0],10),minutes:parseInt(t[1],10)}:null},Ps=function(e,t){var i=Ns(e),n=Ns(t),r=i.minutes+60*i.hours,s=n.minutes+60*n.hours;return r===s?0:r>s?1:-1},Os=function(e,t){var i=Ns(e),n=Ns(t),r={hours:i.hours,minutes:i.minutes};return r.minutes+=n.minutes,r.hours+=n.hours,r.hours+=Math.floor(r.minutes/60),r.minutes=r.minutes%60,function(e){return(e.hours<10?"0"+e.hours:e.hours)+":"+(e.minutes<10?"0"+e.minutes:e.minutes)}(r)},Is=r({components:{ElScrollbar:Ze},watch:{value:function(e){var t=this;e&&this.$nextTick(function(){return t.scrollToOption()})}},methods:{handleClick:function(e){e.disabled||this.$emit("pick",e.value)},handleClear:function(){this.$emit("pick",null)},scrollToOption:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:".selected",t=this.$refs.popper.querySelector(".el-picker-panel__content");ot(t,t.querySelector(e))},handleMenuEnter:function(){var e=this,t=-1!==this.items.map(function(e){return e.value}).indexOf(this.value),i=-1!==this.items.map(function(e){return e.value}).indexOf(this.defaultValue),n=(t?".selected":i&&".default")||".time-select-item:not(.disabled)";this.$nextTick(function(){return e.scrollToOption(n)})},scrollDown:function(e){for(var t=this.items,i=t.length,n=t.length,r=t.map(function(e){return e.value}).indexOf(this.value);n--;)if(!t[r=(r+e+i)%i].disabled)return void this.$emit("pick",t[r].value,!0)},isValidValue:function(e){return-1!==this.items.filter(function(e){return!e.disabled}).map(function(e){return e.value}).indexOf(e)},handleKeydown:function(e){var t=e.keyCode;if(38===t||40===t){var i={40:1,38:-1}[t.toString()];return this.scrollDown(i),void e.stopPropagation()}}},data:function(){return{popperClass:"",start:"09:00",end:"18:00",step:"00:30",value:"",defaultValue:"",visible:!1,minTime:"",maxTime:"",width:0}},computed:{items:function(){var e=this.start,t=this.end,i=this.step,n=[];if(e&&t&&i)for(var r=e;Ps(r,t)<=0;)n.push({value:r,disabled:Ps(r,this.minTime||"-1:-1")<=0||Ps(r,this.maxTime||"100:100")>=0}),r=Os(r,i);return n}}},Ms,[],!1,null,null,null);Is.options.__file="packages/date-picker/src/panel/time-select.vue";var As=Is.exports,Fs={mixins:[Xr],name:"ElTimeSelect",componentName:"ElTimeSelect",props:{type:{type:String,default:"time-select"}},beforeCreate:function(){this.panel=As},install:function(e){e.component(Fs.name,Fs)}},Ls=Fs,Vs=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":function(t){e.$emit("dodestroy")}}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-time-range-picker el-picker-panel el-popper",class:e.popperClass},[i("div",{staticClass:"el-time-range-picker__content"},[i("div",{staticClass:"el-time-range-picker__cell"},[i("div",{staticClass:"el-time-range-picker__header"},[e._v(e._s(e.t("el.datepicker.startTime")))]),i("div",{staticClass:"el-time-range-picker__body el-time-panel__content",class:{"has-seconds":e.showSeconds,"is-arrow":e.arrowControl}},[i("time-spinner",{ref:"minSpinner",attrs:{"show-seconds":e.showSeconds,"am-pm-mode":e.amPmMode,"arrow-control":e.arrowControl,date:e.minDate},on:{change:e.handleMinChange,"select-range":e.setMinSelectionRange}})],1)]),i("div",{staticClass:"el-time-range-picker__cell"},[i("div",{staticClass:"el-time-range-picker__header"},[e._v(e._s(e.t("el.datepicker.endTime")))]),i("div",{staticClass:"el-time-range-picker__body el-time-panel__content",class:{"has-seconds":e.showSeconds,"is-arrow":e.arrowControl}},[i("time-spinner",{ref:"maxSpinner",attrs:{"show-seconds":e.showSeconds,"am-pm-mode":e.amPmMode,"arrow-control":e.arrowControl,date:e.maxDate},on:{change:e.handleMaxChange,"select-range":e.setMaxSelectionRange}})],1)])]),i("div",{staticClass:"el-time-panel__footer"},[i("button",{staticClass:"el-time-panel__btn cancel",attrs:{type:"button"},on:{click:function(t){e.handleCancel()}}},[e._v(e._s(e.t("el.datepicker.cancel")))]),i("button",{staticClass:"el-time-panel__btn confirm",attrs:{type:"button",disabled:e.btnDisabled},on:{click:function(t){e.handleConfirm()}}},[e._v(e._s(e.t("el.datepicker.confirm")))])])])])};Vs._withStripped=!0;var Bs=dr("00:00:00","HH:mm:ss"),zs=dr("23:59:59","HH:mm:ss"),Hs=function(e){return wr(zs,e.getFullYear(),e.getMonth(),e.getDate())},Rs=function(e,t){return new Date(Math.min(e.getTime()+t,Hs(e).getTime()))},Ws=r({mixins:[q],components:{TimeSpinner:ts},computed:{showSeconds:function(){return-1!==(this.format||"").indexOf("ss")},offset:function(){return this.showSeconds?11:8},spinner:function(){return this.selectionRange[0]<this.offset?this.$refs.minSpinner:this.$refs.maxSpinner},btnDisabled:function(){return this.minDate.getTime()>this.maxDate.getTime()},amPmMode:function(){return-1!==(this.format||"").indexOf("A")?"A":-1!==(this.format||"").indexOf("a")?"a":""}},data:function(){return{popperClass:"",minDate:new Date,maxDate:new Date,value:[],oldValue:[new Date,new Date],defaultValue:null,format:"HH:mm:ss",visible:!1,selectionRange:[0,2],arrowControl:!1}},watch:{value:function(e){Array.isArray(e)?(this.minDate=new Date(e[0]),this.maxDate=new Date(e[1])):Array.isArray(this.defaultValue)?(this.minDate=new Date(this.defaultValue[0]),this.maxDate=new Date(this.defaultValue[1])):this.defaultValue?(this.minDate=new Date(this.defaultValue),this.maxDate=Rs(new Date(this.defaultValue),36e5)):(this.minDate=new Date,this.maxDate=Rs(new Date,36e5))},visible:function(e){var t=this;e&&(this.oldValue=this.value,this.$nextTick(function(){return t.$refs.minSpinner.emitSelectRange("hours")}))}},methods:{handleClear:function(){this.$emit("pick",null)},handleCancel:function(){this.$emit("pick",this.oldValue)},handleMinChange:function(e){this.minDate=kr(e),this.handleChange()},handleMaxChange:function(e){this.maxDate=kr(e),this.handleChange()},handleChange:function(){var e;this.isValidValue([this.minDate,this.maxDate])&&(this.$refs.minSpinner.selectableRange=[[(e=this.minDate,wr(Bs,e.getFullYear(),e.getMonth(),e.getDate())),this.maxDate]],this.$refs.maxSpinner.selectableRange=[[this.minDate,Hs(this.maxDate)]],this.$emit("pick",[this.minDate,this.maxDate],!0))},setMinSelectionRange:function(e,t){this.$emit("select-range",e,t,"min"),this.selectionRange=[e,t]},setMaxSelectionRange:function(e,t){this.$emit("select-range",e,t,"max"),this.selectionRange=[e+this.offset,t+this.offset]},handleConfirm:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.$refs.minSpinner.selectableRange,i=this.$refs.maxSpinner.selectableRange;this.minDate=Sr(this.minDate,t,this.format),this.maxDate=Sr(this.maxDate,i,this.format),this.$emit("pick",[this.minDate,this.maxDate],e)},adjustSpinners:function(){this.$refs.minSpinner.adjustSpinners(),this.$refs.maxSpinner.adjustSpinners()},changeSelectionRange:function(e){var t=this.showSeconds?[0,3,6,11,14,17]:[0,3,8,11],i=["hours","minutes"].concat(this.showSeconds?["seconds"]:[]),n=(t.indexOf(this.selectionRange[0])+e+t.length)%t.length,r=t.length/2;n<r?this.$refs.minSpinner.emitSelectRange(i[n]):this.$refs.maxSpinner.emitSelectRange(i[n-r])},isValidValue:function(e){return Array.isArray(e)&&Dr(this.minDate,this.$refs.minSpinner.selectableRange)&&Dr(this.maxDate,this.$refs.maxSpinner.selectableRange)},handleKeydown:function(e){var t=e.keyCode,i={38:-1,40:1,37:-1,39:1};if(37===t||39===t){var n=i[t];return this.changeSelectionRange(n),void e.preventDefault()}if(38===t||40===t){var r=i[t];return this.spinner.scrollDown(r),void e.preventDefault()}}}},Vs,[],!1,null,null,null);Ws.options.__file="packages/date-picker/src/panel/time-range.vue";var js=Ws.exports,qs={mixins:[Xr],name:"ElTimePicker",props:{isRange:Boolean,arrowControl:Boolean},data:function(){return{type:""}},watch:{isRange:function(e){this.picker?(this.unmountPicker(),this.type=e?"timerange":"time",this.panel=e?js:ns,this.mountPicker()):(this.type=e?"timerange":"time",this.panel=e?js:ns)}},created:function(){this.type=this.isRange?"timerange":"time",this.panel=this.isRange?js:ns},install:function(e){e.component(qs.name,qs)}},Ys=qs,Ks=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("span",[i("transition",{attrs:{name:e.transition},on:{"after-enter":e.handleAfterEnter,"after-leave":e.handleAfterLeave}},[i("div",{directives:[{name:"show",rawName:"v-show",value:!e.disabled&&e.showPopper,expression:"!disabled && showPopper"}],ref:"popper",staticClass:"el-popover el-popper",class:[e.popperClass,e.content&&"el-popover--plain"],style:{width:e.width+"px"},attrs:{role:"tooltip",id:e.tooltipId,"aria-hidden":e.disabled||!e.showPopper?"true":"false"}},[e.title?i("div",{staticClass:"el-popover__title",domProps:{textContent:e._s(e.title)}}):e._e(),e._t("default",[e._v(e._s(e.content))])],2)]),i("span",{ref:"wrapper",staticClass:"el-popover__reference-wrapper"},[e._t("reference")],2)],1)};Ks._withStripped=!0;var Gs=r({name:"ElPopover",mixins:[Oe],props:{trigger:{type:String,default:"click",validator:function(e){return["click","focus","hover","manual"].indexOf(e)>-1}},openDelay:{type:Number,default:0},closeDelay:{type:Number,default:200},title:String,disabled:Boolean,content:String,reference:{},popperClass:String,width:{},visibleArrow:{default:!0},arrowOffset:{type:Number,default:0},transition:{type:String,default:"fade-in-linear"},tabindex:{type:Number,default:0}},computed:{tooltipId:function(){return"el-popover-"+D()}},watch:{showPopper:function(e){this.disabled||(e?this.$emit("show"):this.$emit("hide"))}},mounted:function(){var e=this,t=this.referenceElm=this.reference||this.$refs.reference,i=this.popper||this.$refs.popper;!t&&this.$refs.wrapper.children&&(t=this.referenceElm=this.$refs.wrapper.children[0]),t&&(fe(t,"el-popover__reference"),t.setAttribute("aria-describedby",this.tooltipId),t.setAttribute("tabindex",this.tabindex),i.setAttribute("tabindex",0),"click"!==this.trigger&&(he(t,"focusin",function(){e.handleFocus();var i=t.__vue__;i&&"function"==typeof i.focus&&i.focus()}),he(i,"focusin",this.handleFocus),he(t,"focusout",this.handleBlur),he(i,"focusout",this.handleBlur)),he(t,"keydown",this.handleKeydown),he(t,"click",this.handleClick)),"click"===this.trigger?(he(t,"click",this.doToggle),he(document,"click",this.handleDocumentClick)):"hover"===this.trigger?(he(t,"mouseenter",this.handleMouseEnter),he(i,"mouseenter",this.handleMouseEnter),he(t,"mouseleave",this.handleMouseLeave),he(i,"mouseleave",this.handleMouseLeave)):"focus"===this.trigger&&(this.tabindex<0&&console.warn("[Element Warn][Popover]a negative taindex means that the element cannot be focused by tab key"),t.querySelector("input, textarea")?(he(t,"focusin",this.doShow),he(t,"focusout",this.doClose)):(he(t,"mousedown",this.doShow),he(t,"mouseup",this.doClose)))},beforeDestroy:function(){this.cleanup()},deactivated:function(){this.cleanup()},methods:{doToggle:function(){this.showPopper=!this.showPopper},doShow:function(){this.showPopper=!0},doClose:function(){this.showPopper=!1},handleFocus:function(){fe(this.referenceElm,"focusing"),"click"!==this.trigger&&"focus"!==this.trigger||(this.showPopper=!0)},handleClick:function(){me(this.referenceElm,"focusing")},handleBlur:function(){me(this.referenceElm,"focusing"),"click"!==this.trigger&&"focus"!==this.trigger||(this.showPopper=!1)},handleMouseEnter:function(){var e=this;clearTimeout(this._timer),this.openDelay?this._timer=setTimeout(function(){e.showPopper=!0},this.openDelay):this.showPopper=!0},handleKeydown:function(e){27===e.keyCode&&"manual"!==this.trigger&&this.doClose()},handleMouseLeave:function(){var e=this;clearTimeout(this._timer),this.closeDelay?this._timer=setTimeout(function(){e.showPopper=!1},this.closeDelay):this.showPopper=!1},handleDocumentClick:function(e){var t=this.reference||this.$refs.reference,i=this.popper||this.$refs.popper;!t&&this.$refs.wrapper.children&&(t=this.referenceElm=this.$refs.wrapper.children[0]),this.$el&&t&&!this.$el.contains(e.target)&&!t.contains(e.target)&&i&&!i.contains(e.target)&&(this.showPopper=!1)},handleAfterEnter:function(){this.$emit("after-enter")},handleAfterLeave:function(){this.$emit("after-leave"),this.doDestroy()},cleanup:function(){(this.openDelay||this.closeDelay)&&clearTimeout(this._timer)}},destroyed:function(){var e=this.reference;de(e,"click",this.doToggle),de(e,"mouseup",this.doClose),de(e,"mousedown",this.doShow),de(e,"focusin",this.doShow),de(e,"focusout",this.doClose),de(e,"mousedown",this.doShow),de(e,"mouseup",this.doClose),de(e,"mouseleave",this.handleMouseLeave),de(e,"mouseenter",this.handleMouseEnter),de(document,"click",this.handleDocumentClick)}},Ks,[],!1,null,null,null);Gs.options.__file="packages/popover/src/main.vue";var Us=Gs.exports,Xs=function(e,t,i){var n=t.expression?t.value:t.arg,r=i.context.$refs[n];r&&(Array.isArray(r)?r[0].$refs.reference=e:r.$refs.reference=e)},Js={bind:function(e,t,i){Xs(e,t,i)},inserted:function(e,t,i){Xs(e,t,i)}};h.a.directive("popover",Js),Us.install=function(e){e.directive("popover",Js),e.component(Us.name,Us)},Us.directive=Js;var Zs=Us,Qs=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"msgbox-fade"}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-message-box__wrapper",attrs:{tabindex:"-1",role:"dialog","aria-modal":"true","aria-label":e.title||"dialog"},on:{click:function(t){return t.target!==t.currentTarget?null:e.handleWrapperClick(t)}}},[i("div",{staticClass:"el-message-box",class:[e.customClass,e.center&&"el-message-box--center"]},[null!==e.title?i("div",{staticClass:"el-message-box__header"},[i("div",{staticClass:"el-message-box__title"},[e.icon&&e.center?i("div",{class:["el-message-box__status",e.icon]}):e._e(),i("span",[e._v(e._s(e.title))])]),e.showClose?i("button",{staticClass:"el-message-box__headerbtn",attrs:{type:"button","aria-label":"Close"},on:{click:function(t){e.handleAction(e.distinguishCancelAndClose?"close":"cancel")},keydown:function(t){if(!("button"in t)&&e._k(t.keyCode,"enter",13,t.key,"Enter"))return null;e.handleAction(e.distinguishCancelAndClose?"close":"cancel")}}},[i("i",{staticClass:"el-message-box__close el-icon-close"})]):e._e()]):e._e(),i("div",{staticClass:"el-message-box__content"},[i("div",{staticClass:"el-message-box__container"},[e.icon&&!e.center&&""!==e.message?i("div",{class:["el-message-box__status",e.icon]}):e._e(),""!==e.message?i("div",{staticClass:"el-message-box__message"},[e._t("default",[e.dangerouslyUseHTMLString?i("p",{domProps:{innerHTML:e._s(e.message)}}):i("p",[e._v(e._s(e.message))])])],2):e._e()]),i("div",{directives:[{name:"show",rawName:"v-show",value:e.showInput,expression:"showInput"}],staticClass:"el-message-box__input"},[i("el-input",{ref:"input",attrs:{type:e.inputType,placeholder:e.inputPlaceholder},nativeOn:{keydown:function(t){return"button"in t||!e._k(t.keyCode,"enter",13,t.key,"Enter")?e.handleInputEnter(t):null}},model:{value:e.inputValue,callback:function(t){e.inputValue=t},expression:"inputValue"}}),i("div",{staticClass:"el-message-box__errormsg",style:{visibility:e.editorErrorMessage?"visible":"hidden"}},[e._v(e._s(e.editorErrorMessage))])],1)]),i("div",{staticClass:"el-message-box__btns"},[e.showCancelButton?i("el-button",{class:[e.cancelButtonClasses],attrs:{loading:e.cancelButtonLoading,round:e.roundButton,size:"small"},on:{keydown:function(t){if(!("button"in t)&&e._k(t.keyCode,"enter",13,t.key,"Enter"))return null;e.handleAction("cancel")}},nativeOn:{click:function(t){e.handleAction("cancel")}}},[e._v("\n          "+e._s(e.cancelButtonText||e.t("el.messagebox.cancel"))+"\n        ")]):e._e(),i("el-button",{directives:[{name:"show",rawName:"v-show",value:e.showConfirmButton,expression:"showConfirmButton"}],ref:"confirm",class:[e.confirmButtonClasses],attrs:{loading:e.confirmButtonLoading,round:e.roundButton,size:"small"},on:{keydown:function(t){if(!("button"in t)&&e._k(t.keyCode,"enter",13,t.key,"Enter"))return null;e.handleAction("confirm")}},nativeOn:{click:function(t){e.handleAction("confirm")}}},[e._v("\n          "+e._s(e.confirmButtonText||e.t("el.messagebox.confirm"))+"\n        ")])],1)])])])};Qs._withStripped=!0;var ea,ta="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},ia=ia||{};ia.Dialog=function(e,t,i){var n=this;if(this.dialogNode=e,null===this.dialogNode||"dialog"!==this.dialogNode.getAttribute("role"))throw new Error("Dialog() requires a DOM element with ARIA role of dialog.");"string"==typeof t?this.focusAfterClosed=document.getElementById(t):"object"===(void 0===t?"undefined":ta(t))?this.focusAfterClosed=t:this.focusAfterClosed=null,"string"==typeof i?this.focusFirst=document.getElementById(i):"object"===(void 0===i?"undefined":ta(i))?this.focusFirst=i:this.focusFirst=null,this.focusFirst?this.focusFirst.focus():qt.focusFirstDescendant(this.dialogNode),this.lastFocus=document.activeElement,ea=function(e){n.trapFocus(e)},this.addListeners()},ia.Dialog.prototype.addListeners=function(){document.addEventListener("focus",ea,!0)},ia.Dialog.prototype.removeListeners=function(){document.removeEventListener("focus",ea,!0)},ia.Dialog.prototype.closeDialog=function(){var e=this;this.removeListeners(),this.focusAfterClosed&&setTimeout(function(){e.focusAfterClosed.focus()})},ia.Dialog.prototype.trapFocus=function(e){qt.IgnoreUtilFocusChanges||(this.dialogNode.contains(e.target)?this.lastFocus=e.target:(qt.focusFirstDescendant(this.dialogNode),this.lastFocus===document.activeElement&&qt.focusLastDescendant(this.dialogNode),this.lastFocus=document.activeElement))};var na=ia.Dialog,ra=void 0,sa={success:"success",info:"info",warning:"warning",error:"error"},aa=r({mixins:[Me,q],props:{modal:{default:!0},lockScroll:{default:!0},showClose:{type:Boolean,default:!0},closeOnClickModal:{default:!0},closeOnPressEscape:{default:!0},closeOnHashChange:{default:!0},center:{default:!1,type:Boolean},roundButton:{default:!1,type:Boolean}},components:{ElInput:ne,ElButton:Et},computed:{icon:function(){var e=this.type;return this.iconClass||(e&&sa[e]?"el-icon-"+sa[e]:"")},confirmButtonClasses:function(){return"el-button--primary "+this.confirmButtonClass},cancelButtonClasses:function(){return""+this.cancelButtonClass}},methods:{getSafeClose:function(){var e=this,t=this.uid;return function(){e.$nextTick(function(){t===e.uid&&e.doClose()})}},doClose:function(){var e=this;this.visible&&(this.visible=!1,this._closing=!0,this.onClose&&this.onClose(),ra.closeDialog(),this.lockScroll&&setTimeout(this.restoreBodyStyle,200),this.opened=!1,this.doAfterClose(),setTimeout(function(){e.action&&e.callback(e.action,e)}))},handleWrapperClick:function(){this.closeOnClickModal&&this.handleAction(this.distinguishCancelAndClose?"close":"cancel")},handleInputEnter:function(){if("textarea"!==this.inputType)return this.handleAction("confirm")},handleAction:function(e){("prompt"!==this.$type||"confirm"!==e||this.validate())&&(this.action=e,"function"==typeof this.beforeClose?(this.close=this.getSafeClose(),this.beforeClose(e,this,this.close)):this.doClose())},validate:function(){if("prompt"===this.$type){var e=this.inputPattern;if(e&&!e.test(this.inputValue||""))return this.editorErrorMessage=this.inputErrorMessage||W("el.messagebox.error"),fe(this.getInputElement(),"invalid"),!1;var t=this.inputValidator;if("function"==typeof t){var i=t(this.inputValue);if(!1===i)return this.editorErrorMessage=this.inputErrorMessage||W("el.messagebox.error"),fe(this.getInputElement(),"invalid"),!1;if("string"==typeof i)return this.editorErrorMessage=i,fe(this.getInputElement(),"invalid"),!1}}return this.editorErrorMessage="",me(this.getInputElement(),"invalid"),!0},getFirstFocus:function(){var e=this.$el.querySelector(".el-message-box__btns .el-button"),t=this.$el.querySelector(".el-message-box__btns .el-message-box__title");return e||t},getInputElement:function(){var e=this.$refs.input.$refs;return e.input||e.textarea},handleClose:function(){this.handleAction("close")}},watch:{inputValue:{immediate:!0,handler:function(e){var t=this;this.$nextTick(function(i){"prompt"===t.$type&&null!==e&&t.validate()})}},visible:function(e){var t=this;e&&(this.uid++,"alert"!==this.$type&&"confirm"!==this.$type||this.$nextTick(function(){t.$refs.confirm.$el.focus()}),this.focusAfterClosed=document.activeElement,ra=new na(this.$el,this.focusAfterClosed,this.getFirstFocus())),"prompt"===this.$type&&(e?setTimeout(function(){t.$refs.input&&t.$refs.input.$el&&t.getInputElement().focus()},500):(this.editorErrorMessage="",me(this.getInputElement(),"invalid")))}},mounted:function(){var e=this;this.$nextTick(function(){e.closeOnHashChange&&window.addEventListener("hashchange",e.close)})},beforeDestroy:function(){this.closeOnHashChange&&window.removeEventListener("hashchange",this.close),setTimeout(function(){ra.closeDialog()})},data:function(){return{uid:1,title:void 0,message:"",type:"",iconClass:"",customClass:"",showInput:!1,inputValue:null,inputPlaceholder:"",inputType:"text",inputPattern:null,inputValidator:null,inputErrorMessage:"",showConfirmButton:!0,showCancelButton:!1,action:"",confirmButtonText:"",cancelButtonText:"",confirmButtonLoading:!1,cancelButtonLoading:!1,confirmButtonClass:"",confirmButtonDisabled:!1,cancelButtonClass:"",editorErrorMessage:null,callback:null,dangerouslyUseHTMLString:!1,focusAfterClosed:null,isOnComposition:!1,distinguishCancelAndClose:!1}}},Qs,[],!1,null,null,null);aa.options.__file="packages/message-box/src/main.vue";var oa=aa.exports,la="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};function ua(e){return null!==e&&"object"===(void 0===e?"undefined":la(e))&&x(e,"componentOptions")}var ca="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},ha={title:null,message:"",type:"",iconClass:"",showInput:!1,showClose:!0,modalFade:!0,lockScroll:!0,closeOnClickModal:!0,closeOnPressEscape:!0,closeOnHashChange:!0,inputValue:null,inputPlaceholder:"",inputType:"text",inputPattern:null,inputValidator:null,inputErrorMessage:"",showConfirmButton:!0,showCancelButton:!1,confirmButtonPosition:"right",confirmButtonHighlight:!1,cancelButtonHighlight:!1,confirmButtonText:"",cancelButtonText:"",confirmButtonClass:"",cancelButtonClass:"",customClass:"",beforeClose:null,dangerouslyUseHTMLString:!1,center:!1,roundButton:!1,distinguishCancelAndClose:!1},da=h.a.extend(oa),pa=void 0,fa=void 0,ma=[],va=function(e){if(pa){var t=pa.callback;"function"==typeof t&&(fa.showInput?t(fa.inputValue,e):t(e)),pa.resolve&&("confirm"===e?fa.showInput?pa.resolve({value:fa.inputValue,action:e}):pa.resolve(e):!pa.reject||"cancel"!==e&&"close"!==e||pa.reject(e))}},ga=function e(){if(fa||((fa=new da({el:document.createElement("div")})).callback=va),fa.action="",(!fa.visible||fa.closeTimer)&&ma.length>0){var t=(pa=ma.shift()).options;for(var i in t)t.hasOwnProperty(i)&&(fa[i]=t[i]);void 0===t.callback&&(fa.callback=va);var n=fa.callback;fa.callback=function(t,i){n(t,i),e()},ua(fa.message)?(fa.$slots.default=[fa.message],fa.message=null):delete fa.$slots.default,["modal","showClose","closeOnClickModal","closeOnPressEscape","closeOnHashChange"].forEach(function(e){void 0===fa[e]&&(fa[e]=!0)}),document.body.appendChild(fa.$el),h.a.nextTick(function(){fa.visible=!0})}},ba=function e(t,i){if(!h.a.prototype.$isServer){if("string"==typeof t||ua(t)?(t={message:t},"string"==typeof arguments[1]&&(t.title=arguments[1])):t.callback&&!i&&(i=t.callback),"undefined"!=typeof Promise)return new Promise(function(n,r){ma.push({options:Z({},ha,e.defaults,t),callback:i,resolve:n,reject:r}),ga()});ma.push({options:Z({},ha,e.defaults,t),callback:i}),ga()}};ba.setDefaults=function(e){ba.defaults=e},ba.alert=function(e,t,i){return"object"===(void 0===t?"undefined":ca(t))?(i=t,t=""):void 0===t&&(t=""),ba(Z({title:t,message:e,$type:"alert",closeOnPressEscape:!1,closeOnClickModal:!1},i))},ba.confirm=function(e,t,i){return"object"===(void 0===t?"undefined":ca(t))?(i=t,t=""):void 0===t&&(t=""),ba(Z({title:t,message:e,$type:"confirm",showCancelButton:!0},i))},ba.prompt=function(e,t,i){return"object"===(void 0===t?"undefined":ca(t))?(i=t,t=""):void 0===t&&(t=""),ba(Z({title:t,message:e,showCancelButton:!0,showInput:!0,$type:"prompt"},i))},ba.close=function(){fa.doClose(),fa.visible=!1,ma=[],pa=null};var ya=ba,wa=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-breadcrumb",attrs:{"aria-label":"Breadcrumb",role:"navigation"}},[this._t("default")],2)};wa._withStripped=!0;var _a=r({name:"ElBreadcrumb",props:{separator:{type:String,default:"/"},separatorClass:{type:String,default:""}},provide:function(){return{elBreadcrumb:this}},mounted:function(){var e=this.$el.querySelectorAll(".el-breadcrumb__item");e.length&&e[e.length-1].setAttribute("aria-current","page")}},wa,[],!1,null,null,null);_a.options.__file="packages/breadcrumb/src/breadcrumb.vue";var xa=_a.exports;xa.install=function(e){e.component(xa.name,xa)};var Ca=xa,ka=function(){var e=this.$createElement,t=this._self._c||e;return t("span",{staticClass:"el-breadcrumb__item"},[t("span",{ref:"link",class:["el-breadcrumb__inner",this.to?"is-link":""],attrs:{role:"link"}},[this._t("default")],2),this.separatorClass?t("i",{staticClass:"el-breadcrumb__separator",class:this.separatorClass}):t("span",{staticClass:"el-breadcrumb__separator",attrs:{role:"presentation"}},[this._v(this._s(this.separator))])])};ka._withStripped=!0;var Sa=r({name:"ElBreadcrumbItem",props:{to:{},replace:Boolean},data:function(){return{separator:"",separatorClass:""}},inject:["elBreadcrumb"],mounted:function(){var e=this;this.separator=this.elBreadcrumb.separator,this.separatorClass=this.elBreadcrumb.separatorClass;var t=this.$refs.link;t.setAttribute("role","link"),t.addEventListener("click",function(t){var i=e.to,n=e.$router;i&&n&&(e.replace?n.replace(i):n.push(i))})}},ka,[],!1,null,null,null);Sa.options.__file="packages/breadcrumb/src/breadcrumb-item.vue";var Da=Sa.exports;Da.install=function(e){e.component(Da.name,Da)};var $a=Da,Ea=function(){var e=this.$createElement;return(this._self._c||e)("form",{staticClass:"el-form",class:[this.labelPosition?"el-form--label-"+this.labelPosition:"",{"el-form--inline":this.inline}]},[this._t("default")],2)};Ea._withStripped=!0;var Ta=r({name:"ElForm",componentName:"ElForm",provide:function(){return{elForm:this}},props:{model:Object,rules:Object,labelPosition:String,labelWidth:String,labelSuffix:{type:String,default:""},inline:Boolean,inlineMessage:Boolean,statusIcon:Boolean,showMessage:{type:Boolean,default:!0},size:String,disabled:Boolean,validateOnRuleChange:{type:Boolean,default:!0},hideRequiredAsterisk:{type:Boolean,default:!1}},watch:{rules:function(){this.fields.forEach(function(e){e.removeValidateEvents(),e.addValidateEvents()}),this.validateOnRuleChange&&this.validate(function(){})}},computed:{autoLabelWidth:function(){if(!this.potentialLabelWidthArr.length)return 0;var e=Math.max.apply(Math,this.potentialLabelWidthArr);return e?e+"px":""}},data:function(){return{fields:[],potentialLabelWidthArr:[]}},created:function(){var e=this;this.$on("el.form.addField",function(t){t&&e.fields.push(t)}),this.$on("el.form.removeField",function(t){t.prop&&e.fields.splice(e.fields.indexOf(t),1)})},methods:{resetFields:function(){this.model?this.fields.forEach(function(e){e.resetField()}):console.warn("[Element Warn][Form]model is required for resetFields to work.")},clearValidate:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];(e.length?"string"==typeof e?this.fields.filter(function(t){return e===t.prop}):this.fields.filter(function(t){return e.indexOf(t.prop)>-1}):this.fields).forEach(function(e){e.clearValidate()})},validate:function(e){var t=this;if(this.model){var i=void 0;"function"!=typeof e&&window.Promise&&(i=new window.Promise(function(t,i){e=function(e){e?t(e):i(e)}}));var n=!0,r=0;0===this.fields.length&&e&&e(!0);var s={};return this.fields.forEach(function(i){i.validate("",function(i,a){i&&(n=!1),s=Z({},s,a),"function"==typeof e&&++r===t.fields.length&&e(n,s)})}),i||void 0}console.warn("[Element Warn][Form]model is required for validate to work!")},validateField:function(e,t){e=[].concat(e);var i=this.fields.filter(function(t){return-1!==e.indexOf(t.prop)});i.length?i.forEach(function(e){e.validate("",t)}):console.warn("[Element Warn]please pass correct props!")},getLabelWidthIndex:function(e){var t=this.potentialLabelWidthArr.indexOf(e);if(-1===t)throw new Error("[ElementForm]unpected width ",e);return t},registerLabelWidth:function(e,t){if(e&&t){var i=this.getLabelWidthIndex(t);this.potentialLabelWidthArr.splice(i,1,e)}else e&&this.potentialLabelWidthArr.push(e)},deregisterLabelWidth:function(e){var t=this.getLabelWidthIndex(e);this.potentialLabelWidthArr.splice(t,1)}}},Ea,[],!1,null,null,null);Ta.options.__file="packages/form/src/form.vue";var Ma=Ta.exports;Ma.install=function(e){e.component(Ma.name,Ma)};var Na=Ma,Pa=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-form-item",class:[{"el-form-item--feedback":e.elForm&&e.elForm.statusIcon,"is-error":"error"===e.validateState,"is-validating":"validating"===e.validateState,"is-success":"success"===e.validateState,"is-required":e.isRequired||e.required,"is-no-asterisk":e.elForm&&e.elForm.hideRequiredAsterisk},e.sizeClass?"el-form-item--"+e.sizeClass:""]},[i("label-wrap",{attrs:{"is-auto-width":e.labelStyle&&"auto"===e.labelStyle.width,"update-all":"auto"===e.form.labelWidth}},[e.label||e.$slots.label?i("label",{staticClass:"el-form-item__label",style:e.labelStyle,attrs:{for:e.labelFor}},[e._t("label",[e._v(e._s(e.label+e.form.labelSuffix))])],2):e._e()]),i("div",{staticClass:"el-form-item__content",style:e.contentStyle},[e._t("default"),i("transition",{attrs:{name:"el-zoom-in-top"}},["error"===e.validateState&&e.showMessage&&e.form.showMessage?e._t("error",[i("div",{staticClass:"el-form-item__error",class:{"el-form-item__error--inline":"boolean"==typeof e.inlineMessage?e.inlineMessage:e.elForm&&e.elForm.inlineMessage||!1}},[e._v("\n          "+e._s(e.validateMessage)+"\n        ")])],{error:e.validateMessage}):e._e()],2)],2)],1)};Pa._withStripped=!0;var Oa=i(8),Ia=i.n(Oa),Aa=i(3),Fa=i.n(Aa),La=/%[sdj%]/g,Va=function(){};function Ba(){for(var e=arguments.length,t=Array(e),i=0;i<e;i++)t[i]=arguments[i];var n=1,r=t[0],s=t.length;if("function"==typeof r)return r.apply(null,t.slice(1));if("string"==typeof r){for(var a=String(r).replace(La,function(e){if("%%"===e)return"%";if(n>=s)return e;switch(e){case"%s":return String(t[n++]);case"%d":return Number(t[n++]);case"%j":try{return JSON.stringify(t[n++])}catch(e){return"[Circular]"}break;default:return e}}),o=t[n];n<s;o=t[++n])a+=" "+o;return a}return r}function za(e,t){return null==e||(!("array"!==t||!Array.isArray(e)||e.length)||!(!function(e){return"string"===e||"url"===e||"hex"===e||"email"===e||"pattern"===e}(t)||"string"!=typeof e||e))}function Ha(e,t,i){var n=0,r=e.length;!function s(a){if(a&&a.length)i(a);else{var o=n;n+=1,o<r?t(e[o],s):i([])}}([])}function Ra(e,t,i,n){if(t.first)return Ha(function(e){var t=[];return Object.keys(e).forEach(function(i){t.push.apply(t,e[i])}),t}(e),i,n);var r=t.firstFields||[];!0===r&&(r=Object.keys(e));var s=Object.keys(e),a=s.length,o=0,l=[],u=function(e){l.push.apply(l,e),++o===a&&n(l)};s.forEach(function(t){var n=e[t];-1!==r.indexOf(t)?Ha(n,i,u):function(e,t,i){var n=[],r=0,s=e.length;function a(e){n.push.apply(n,e),++r===s&&i(n)}e.forEach(function(e){t(e,a)})}(n,i,u)})}function Wa(e){return function(t){return t&&t.message?(t.field=t.field||e.fullField,t):{message:t,field:t.field||e.fullField}}}function ja(e,t){if(t)for(var i in t)if(t.hasOwnProperty(i)){var n=t[i];"object"===(void 0===n?"undefined":Fa()(n))&&"object"===Fa()(e[i])?e[i]=Ia()({},e[i],n):e[i]=n}return e}var qa=function(e,t,i,n,r,s){!e.required||i.hasOwnProperty(e.field)&&!za(t,s||e.type)||n.push(Ba(r.messages.required,e.fullField))};var Ya=function(e,t,i,n,r){(/^\s+$/.test(t)||""===t)&&n.push(Ba(r.messages.whitespace,e.fullField))},Ka={email:/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,url:new RegExp("^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$","i"),hex:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i},Ga={integer:function(e){return Ga.number(e)&&parseInt(e,10)===e},float:function(e){return Ga.number(e)&&!Ga.integer(e)},array:function(e){return Array.isArray(e)},regexp:function(e){if(e instanceof RegExp)return!0;try{return!!new RegExp(e)}catch(e){return!1}},date:function(e){return"function"==typeof e.getTime&&"function"==typeof e.getMonth&&"function"==typeof e.getYear},number:function(e){return!isNaN(e)&&"number"==typeof e},object:function(e){return"object"===(void 0===e?"undefined":Fa()(e))&&!Ga.array(e)},method:function(e){return"function"==typeof e},email:function(e){return"string"==typeof e&&!!e.match(Ka.email)&&e.length<255},url:function(e){return"string"==typeof e&&!!e.match(Ka.url)},hex:function(e){return"string"==typeof e&&!!e.match(Ka.hex)}};var Ua=function(e,t,i,n,r){if(e.required&&void 0===t)qa(e,t,i,n,r);else{var s=e.type;["integer","float","array","regexp","object","method","email","number","date","url","hex"].indexOf(s)>-1?Ga[s](t)||n.push(Ba(r.messages.types[s],e.fullField,e.type)):s&&(void 0===t?"undefined":Fa()(t))!==e.type&&n.push(Ba(r.messages.types[s],e.fullField,e.type))}};var Xa="enum";var Ja={required:qa,whitespace:Ya,type:Ua,range:function(e,t,i,n,r){var s="number"==typeof e.len,a="number"==typeof e.min,o="number"==typeof e.max,l=t,u=null,c="number"==typeof t,h="string"==typeof t,d=Array.isArray(t);if(c?u="number":h?u="string":d&&(u="array"),!u)return!1;d&&(l=t.length),h&&(l=t.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"_").length),s?l!==e.len&&n.push(Ba(r.messages[u].len,e.fullField,e.len)):a&&!o&&l<e.min?n.push(Ba(r.messages[u].min,e.fullField,e.min)):o&&!a&&l>e.max?n.push(Ba(r.messages[u].max,e.fullField,e.max)):a&&o&&(l<e.min||l>e.max)&&n.push(Ba(r.messages[u].range,e.fullField,e.min,e.max))},enum:function(e,t,i,n,r){e[Xa]=Array.isArray(e[Xa])?e[Xa]:[],-1===e[Xa].indexOf(t)&&n.push(Ba(r.messages[Xa],e.fullField,e[Xa].join(", ")))},pattern:function(e,t,i,n,r){e.pattern&&(e.pattern instanceof RegExp?(e.pattern.lastIndex=0,e.pattern.test(t)||n.push(Ba(r.messages.pattern.mismatch,e.fullField,t,e.pattern))):"string"==typeof e.pattern&&(new RegExp(e.pattern).test(t)||n.push(Ba(r.messages.pattern.mismatch,e.fullField,t,e.pattern))))}};var Za="enum";var Qa=function(e,t,i,n,r){var s=e.type,a=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(za(t,s)&&!e.required)return i();Ja.required(e,t,n,a,r,s),za(t,s)||Ja.type(e,t,n,a,r)}i(a)},eo={string:function(e,t,i,n,r){var s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(za(t,"string")&&!e.required)return i();Ja.required(e,t,n,s,r,"string"),za(t,"string")||(Ja.type(e,t,n,s,r),Ja.range(e,t,n,s,r),Ja.pattern(e,t,n,s,r),!0===e.whitespace&&Ja.whitespace(e,t,n,s,r))}i(s)},method:function(e,t,i,n,r){var s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(za(t)&&!e.required)return i();Ja.required(e,t,n,s,r),void 0!==t&&Ja.type(e,t,n,s,r)}i(s)},number:function(e,t,i,n,r){var s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(za(t)&&!e.required)return i();Ja.required(e,t,n,s,r),void 0!==t&&(Ja.type(e,t,n,s,r),Ja.range(e,t,n,s,r))}i(s)},boolean:function(e,t,i,n,r){var s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(za(t)&&!e.required)return i();Ja.required(e,t,n,s,r),void 0!==t&&Ja.type(e,t,n,s,r)}i(s)},regexp:function(e,t,i,n,r){var s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(za(t)&&!e.required)return i();Ja.required(e,t,n,s,r),za(t)||Ja.type(e,t,n,s,r)}i(s)},integer:function(e,t,i,n,r){var s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(za(t)&&!e.required)return i();Ja.required(e,t,n,s,r),void 0!==t&&(Ja.type(e,t,n,s,r),Ja.range(e,t,n,s,r))}i(s)},float:function(e,t,i,n,r){var s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(za(t)&&!e.required)return i();Ja.required(e,t,n,s,r),void 0!==t&&(Ja.type(e,t,n,s,r),Ja.range(e,t,n,s,r))}i(s)},array:function(e,t,i,n,r){var s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(za(t,"array")&&!e.required)return i();Ja.required(e,t,n,s,r,"array"),za(t,"array")||(Ja.type(e,t,n,s,r),Ja.range(e,t,n,s,r))}i(s)},object:function(e,t,i,n,r){var s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(za(t)&&!e.required)return i();Ja.required(e,t,n,s,r),void 0!==t&&Ja.type(e,t,n,s,r)}i(s)},enum:function(e,t,i,n,r){var s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(za(t)&&!e.required)return i();Ja.required(e,t,n,s,r),t&&Ja[Za](e,t,n,s,r)}i(s)},pattern:function(e,t,i,n,r){var s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(za(t,"string")&&!e.required)return i();Ja.required(e,t,n,s,r),za(t,"string")||Ja.pattern(e,t,n,s,r)}i(s)},date:function(e,t,i,n,r){var s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(za(t)&&!e.required)return i();if(Ja.required(e,t,n,s,r),!za(t)){var a=void 0;a="number"==typeof t?new Date(t):t,Ja.type(e,a,n,s,r),a&&Ja.range(e,a.getTime(),n,s,r)}}i(s)},url:Qa,hex:Qa,email:Qa,required:function(e,t,i,n,r){var s=[],a=Array.isArray(t)?"array":void 0===t?"undefined":Fa()(t);Ja.required(e,t,n,s,r,a),i(s)}};function to(){return{default:"Validation error on field %s",required:"%s is required",enum:"%s must be one of %s",whitespace:"%s cannot be empty",date:{format:"%s date %s is invalid for format %s",parse:"%s date could not be parsed, %s is invalid ",invalid:"%s date %s is invalid"},types:{string:"%s is not a %s",method:"%s is not a %s (function)",array:"%s is not an %s",object:"%s is not an %s",number:"%s is not a %s",date:"%s is not a %s",boolean:"%s is not a %s",integer:"%s is not an %s",float:"%s is not a %s",regexp:"%s is not a valid %s",email:"%s is not a valid %s",url:"%s is not a valid %s",hex:"%s is not a valid %s"},string:{len:"%s must be exactly %s characters",min:"%s must be at least %s characters",max:"%s cannot be longer than %s characters",range:"%s must be between %s and %s characters"},number:{len:"%s must equal %s",min:"%s cannot be less than %s",max:"%s cannot be greater than %s",range:"%s must be between %s and %s"},array:{len:"%s must be exactly %s in length",min:"%s cannot be less than %s in length",max:"%s cannot be greater than %s in length",range:"%s must be between %s and %s in length"},pattern:{mismatch:"%s value %s does not match pattern %s"},clone:function(){var e=JSON.parse(JSON.stringify(this));return e.clone=this.clone,e}}}var io=to();function no(e){this.rules=null,this._messages=io,this.define(e)}no.prototype={messages:function(e){return e&&(this._messages=ja(to(),e)),this._messages},define:function(e){if(!e)throw new Error("Cannot configure a schema with no rules");if("object"!==(void 0===e?"undefined":Fa()(e))||Array.isArray(e))throw new Error("Rules must be an object");this.rules={};var t=void 0,i=void 0;for(t in e)e.hasOwnProperty(t)&&(i=e[t],this.rules[t]=Array.isArray(i)?i:[i])},validate:function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments[2],r=e,s=i,a=n;if("function"==typeof s&&(a=s,s={}),this.rules&&0!==Object.keys(this.rules).length){if(s.messages){var o=this.messages();o===io&&(o=to()),ja(o,s.messages),s.messages=o}else s.messages=this.messages();var l=void 0,u=void 0,c={};(s.keys||Object.keys(this.rules)).forEach(function(i){l=t.rules[i],u=r[i],l.forEach(function(n){var s=n;"function"==typeof s.transform&&(r===e&&(r=Ia()({},r)),u=r[i]=s.transform(u)),(s="function"==typeof s?{validator:s}:Ia()({},s)).validator=t.getValidationMethod(s),s.field=i,s.fullField=s.fullField||i,s.type=t.getType(s),s.validator&&(c[i]=c[i]||[],c[i].push({rule:s,value:u,source:r,field:i}))})});var h={};Ra(c,s,function(e,t){var i=e.rule,n=!("object"!==i.type&&"array"!==i.type||"object"!==Fa()(i.fields)&&"object"!==Fa()(i.defaultField));function r(e,t){return Ia()({},t,{fullField:i.fullField+"."+e})}function a(){var a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(Array.isArray(a)||(a=[a]),a.length&&Va("async-validator:",a),a.length&&i.message&&(a=[].concat(i.message)),a=a.map(Wa(i)),s.first&&a.length)return h[i.field]=1,t(a);if(n){if(i.required&&!e.value)return a=i.message?[].concat(i.message).map(Wa(i)):s.error?[s.error(i,Ba(s.messages.required,i.field))]:[],t(a);var o={};if(i.defaultField)for(var l in e.value)e.value.hasOwnProperty(l)&&(o[l]=i.defaultField);for(var u in o=Ia()({},o,e.rule.fields))if(o.hasOwnProperty(u)){var c=Array.isArray(o[u])?o[u]:[o[u]];o[u]=c.map(r.bind(null,u))}var d=new no(o);d.messages(s.messages),e.rule.options&&(e.rule.options.messages=s.messages,e.rule.options.error=s.error),d.validate(e.value,e.rule.options||s,function(e){t(e&&e.length?a.concat(e):e)})}else t(a)}n=n&&(i.required||!i.required&&e.value),i.field=e.field;var o=i.validator(i,e.value,a,e.source,s);o&&o.then&&o.then(function(){return a()},function(e){return a(e)})},function(e){!function(e){var t,i=void 0,n=void 0,r=[],s={};for(i=0;i<e.length;i++)t=e[i],Array.isArray(t)?r=r.concat.apply(r,t):r.push(t);if(r.length)for(i=0;i<r.length;i++)s[n=r[i].field]=s[n]||[],s[n].push(r[i]);else r=null,s=null;a(r,s)}(e)})}else a&&a()},getType:function(e){if(void 0===e.type&&e.pattern instanceof RegExp&&(e.type="pattern"),"function"!=typeof e.validator&&e.type&&!eo.hasOwnProperty(e.type))throw new Error(Ba("Unknown rule type %s",e.type));return e.type||"string"},getValidationMethod:function(e){if("function"==typeof e.validator)return e.validator;var t=Object.keys(e),i=t.indexOf("message");return-1!==i&&t.splice(i,1),1===t.length&&"required"===t[0]?eo.required:eo[this.getType(e)]||!1}},no.register=function(e,t){if("function"!=typeof t)throw new Error("Cannot register a validator by type, validator is not a function");eo[e]=t},no.messages=io;var ro=no,so=r({props:{isAutoWidth:Boolean,updateAll:Boolean},inject:["elForm","elFormItem"],render:function(){var e=arguments[0],t=this.$slots.default;if(!t)return null;if(this.isAutoWidth){var i=this.elForm.autoLabelWidth,n={};if(i&&"auto"!==i){var r=parseInt(i,10)-this.computedWidth;r&&(n.marginLeft=r+"px")}return e("div",{class:"el-form-item__label-wrap",style:n},[t])}return t[0]},methods:{getLabelWidth:function(){if(this.$el&&this.$el.firstElementChild){var e=window.getComputedStyle(this.$el.firstElementChild).width;return Math.ceil(parseFloat(e))}return 0},updateLabelWidth:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"update";this.$slots.default&&this.isAutoWidth&&this.$el.firstElementChild&&("update"===e?this.computedWidth=this.getLabelWidth():"remove"===e&&this.elForm.deregisterLabelWidth(this.computedWidth))}},watch:{computedWidth:function(e,t){this.updateAll&&(this.elForm.registerLabelWidth(e,t),this.elFormItem.updateComputedLabelWidth(e))}},data:function(){return{computedWidth:0}},mounted:function(){this.updateLabelWidth("update")},updated:function(){this.updateLabelWidth("update")},beforeDestroy:function(){this.updateLabelWidth("remove")}},void 0,void 0,!1,null,null,null);so.options.__file="packages/form/src/label-wrap.vue";var ao=so.exports,oo=r({name:"ElFormItem",componentName:"ElFormItem",mixins:[l],provide:function(){return{elFormItem:this}},inject:["elForm"],props:{label:String,labelWidth:String,prop:String,required:{type:Boolean,default:void 0},rules:[Object,Array],error:String,validateStatus:String,for:String,inlineMessage:{type:[String,Boolean],default:""},showMessage:{type:Boolean,default:!0},size:String},components:{LabelWrap:ao},watch:{error:{immediate:!0,handler:function(e){this.validateMessage=e,this.validateState=e?"error":""}},validateStatus:function(e){this.validateState=e}},computed:{labelFor:function(){return this.for||this.prop},labelStyle:function(){var e={};if("top"===this.form.labelPosition)return e;var t=this.labelWidth||this.form.labelWidth;return t&&(e.width=t),e},contentStyle:function(){var e={},t=this.label;if("top"===this.form.labelPosition||this.form.inline)return e;if(!t&&!this.labelWidth&&this.isNested)return e;var i=this.labelWidth||this.form.labelWidth;return"auto"===i?"auto"===this.labelWidth?e.marginLeft=this.computedLabelWidth:"auto"===this.form.labelWidth&&(e.marginLeft=this.elForm.autoLabelWidth):e.marginLeft=i,e},form:function(){for(var e=this.$parent,t=e.$options.componentName;"ElForm"!==t;)"ElFormItem"===t&&(this.isNested=!0),t=(e=e.$parent).$options.componentName;return e},fieldValue:function(){var e=this.form.model;if(e&&this.prop){var t=this.prop;return-1!==t.indexOf(":")&&(t=t.replace(/:/,".")),S(e,t,!0).v}},isRequired:function(){var e=this.getRules(),t=!1;return e&&e.length&&e.every(function(e){return!e.required||(t=!0,!1)}),t},_formSize:function(){return this.elForm.size},elFormItemSize:function(){return this.size||this._formSize},sizeClass:function(){return this.elFormItemSize||(this.$ELEMENT||{}).size}},data:function(){return{validateState:"",validateMessage:"",validateDisabled:!1,validator:{},isNested:!1,computedLabelWidth:""}},methods:{validate:function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:_;this.validateDisabled=!1;var n=this.getFilteredRule(e);if((!n||0===n.length)&&void 0===this.required)return i(),!0;this.validateState="validating";var r={};n&&n.length>0&&n.forEach(function(e){delete e.trigger}),r[this.prop]=n;var s=new ro(r),a={};a[this.prop]=this.fieldValue,s.validate(a,{firstFields:!0},function(e,n){t.validateState=e?"error":"success",t.validateMessage=e?e[0].message:"",i(t.validateMessage,n),t.elForm&&t.elForm.$emit("validate",t.prop,!e,t.validateMessage||null)})},clearValidate:function(){this.validateState="",this.validateMessage="",this.validateDisabled=!1},resetField:function(){var e=this;this.validateState="",this.validateMessage="";var t=this.form.model,i=this.fieldValue,n=this.prop;-1!==n.indexOf(":")&&(n=n.replace(/:/,"."));var r=S(t,n,!0);this.validateDisabled=!0,Array.isArray(i)?r.o[r.k]=[].concat(this.initialValue):r.o[r.k]=this.initialValue,this.$nextTick(function(){e.validateDisabled=!1}),this.broadcast("ElTimeSelect","fieldReset",this.initialValue)},getRules:function(){var e=this.form.rules,t=this.rules,i=void 0!==this.required?{required:!!this.required}:[],n=S(e,this.prop||"");return e=e?n.o[this.prop||""]||n.v:[],[].concat(t||e||[]).concat(i)},getFilteredRule:function(e){return this.getRules().filter(function(t){return!t.trigger||""===e||(Array.isArray(t.trigger)?t.trigger.indexOf(e)>-1:t.trigger===e)}).map(function(e){return Z({},e)})},onFieldBlur:function(){this.validate("blur")},onFieldChange:function(){this.validateDisabled?this.validateDisabled=!1:this.validate("change")},updateComputedLabelWidth:function(e){this.computedLabelWidth=e?e+"px":""},addValidateEvents:function(){(this.getRules().length||void 0!==this.required)&&(this.$on("el.form.blur",this.onFieldBlur),this.$on("el.form.change",this.onFieldChange))},removeValidateEvents:function(){this.$off()}},mounted:function(){if(this.prop){this.dispatch("ElForm","el.form.addField",[this]);var e=this.fieldValue;Array.isArray(e)&&(e=[].concat(e)),Object.defineProperty(this,"initialValue",{value:e}),this.addValidateEvents()}},beforeDestroy:function(){this.dispatch("ElForm","el.form.removeField",[this])}},Pa,[],!1,null,null,null);oo.options.__file="packages/form/src/form-item.vue";var lo=oo.exports;lo.install=function(e){e.component(lo.name,lo)};var uo=lo,co=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-tabs__active-bar",class:"is-"+this.rootTabs.tabPosition,style:this.barStyle})};co._withStripped=!0;var ho=r({name:"TabBar",props:{tabs:Array},inject:["rootTabs"],computed:{barStyle:{get:function(){var e=this,t={},i=0,n=0,r=-1!==["top","bottom"].indexOf(this.rootTabs.tabPosition)?"width":"height",s="width"===r?"x":"y",a=function(e){return e.toLowerCase().replace(/( |^)[a-z]/g,function(e){return e.toUpperCase()})};this.tabs.every(function(t,s){var o=T(e.$parent.$refs.tabs||[],function(e){return e.id.replace("tab-","")===t.paneName});if(!o)return!1;if(t.active){n=o["client"+a(r)];var l=window.getComputedStyle(o);return"width"===r&&e.tabs.length>1&&(n-=parseFloat(l.paddingLeft)+parseFloat(l.paddingRight)),"width"===r&&(i+=parseFloat(l.paddingLeft)),!1}return i+=o["client"+a(r)],!0});var o="translate"+a(s)+"("+i+"px)";return t[r]=n+"px",t.transform=o,t.msTransform=o,t.webkitTransform=o,t}}}},co,[],!1,null,null,null);ho.options.__file="packages/tabs/src/tab-bar.vue";var po=ho.exports;function fo(){}var mo=function(e){return e.toLowerCase().replace(/( |^)[a-z]/g,function(e){return e.toUpperCase()})},vo=r({name:"TabNav",components:{TabBar:po},inject:["rootTabs"],props:{panes:Array,currentName:String,editable:Boolean,onTabClick:{type:Function,default:fo},onTabRemove:{type:Function,default:fo},type:String,stretch:Boolean},data:function(){return{scrollable:!1,navOffset:0,isFocus:!1,focusable:!0}},computed:{navStyle:function(){return{transform:"translate"+(-1!==["top","bottom"].indexOf(this.rootTabs.tabPosition)?"X":"Y")+"(-"+this.navOffset+"px)"}},sizeName:function(){return-1!==["top","bottom"].indexOf(this.rootTabs.tabPosition)?"width":"height"}},methods:{scrollPrev:function(){var e=this.$refs.navScroll["offset"+mo(this.sizeName)],t=this.navOffset;if(t){var i=t>e?t-e:0;this.navOffset=i}},scrollNext:function(){var e=this.$refs.nav["offset"+mo(this.sizeName)],t=this.$refs.navScroll["offset"+mo(this.sizeName)],i=this.navOffset;if(!(e-i<=t)){var n=e-i>2*t?i+t:e-t;this.navOffset=n}},scrollToActiveTab:function(){if(this.scrollable){var e=this.$refs.nav,t=this.$el.querySelector(".is-active");if(t){var i=this.$refs.navScroll,n=-1!==["top","bottom"].indexOf(this.rootTabs.tabPosition),r=t.getBoundingClientRect(),s=i.getBoundingClientRect(),a=n?e.offsetWidth-s.width:e.offsetHeight-s.height,o=this.navOffset,l=o;n?(r.left<s.left&&(l=o-(s.left-r.left)),r.right>s.right&&(l=o+r.right-s.right)):(r.top<s.top&&(l=o-(s.top-r.top)),r.bottom>s.bottom&&(l=o+(r.bottom-s.bottom))),l=Math.max(l,0),this.navOffset=Math.min(l,a)}}},update:function(){if(this.$refs.nav){var e=this.sizeName,t=this.$refs.nav["offset"+mo(e)],i=this.$refs.navScroll["offset"+mo(e)],n=this.navOffset;if(i<t){var r=this.navOffset;this.scrollable=this.scrollable||{},this.scrollable.prev=r,this.scrollable.next=r+i<t,t-r<i&&(this.navOffset=t-i)}else this.scrollable=!1,n>0&&(this.navOffset=0)}},changeTab:function(e){var t=e.keyCode,i=void 0,n=void 0,r=void 0;-1!==[37,38,39,40].indexOf(t)&&(r=e.currentTarget.querySelectorAll("[role=tab]"),n=Array.prototype.indexOf.call(r,e.target),r[i=37===t||38===t?0===n?r.length-1:n-1:n<r.length-1?n+1:0].focus(),r[i].click(),this.setFocus())},setFocus:function(){this.focusable&&(this.isFocus=!0)},removeFocus:function(){this.isFocus=!1},visibilityChangeHandler:function(){var e=this,t=document.visibilityState;"hidden"===t?this.focusable=!1:"visible"===t&&setTimeout(function(){e.focusable=!0},50)},windowBlurHandler:function(){this.focusable=!1},windowFocusHandler:function(){var e=this;setTimeout(function(){e.focusable=!0},50)}},updated:function(){this.update()},render:function(e){var t=this,i=this.type,n=this.panes,r=this.editable,s=this.stretch,a=this.onTabClick,o=this.onTabRemove,l=this.navStyle,u=this.scrollable,c=this.scrollNext,h=this.scrollPrev,d=this.changeTab,p=this.setFocus,f=this.removeFocus,m=u?[e("span",{class:["el-tabs__nav-prev",u.prev?"":"is-disabled"],on:{click:h}},[e("i",{class:"el-icon-arrow-left"})]),e("span",{class:["el-tabs__nav-next",u.next?"":"is-disabled"],on:{click:c}},[e("i",{class:"el-icon-arrow-right"})])]:null,v=this._l(n,function(i,n){var s,l=i.name||i.index||n,u=i.isClosable||r;i.index=""+n;var c=u?e("span",{class:"el-icon-close",on:{click:function(e){o(i,e)}}}):null,h=i.$slots.label||i.label,d=i.active?0:-1;return e("div",{class:(s={"el-tabs__item":!0},s["is-"+t.rootTabs.tabPosition]=!0,s["is-active"]=i.active,s["is-disabled"]=i.disabled,s["is-closable"]=u,s["is-focus"]=t.isFocus,s),attrs:{id:"tab-"+l,"aria-controls":"pane-"+l,role:"tab","aria-selected":i.active,tabindex:d},key:"tab-"+l,ref:"tabs",refInFor:!0,on:{focus:function(){p()},blur:function(){f()},click:function(e){f(),a(i,l,e)},keydown:function(e){!u||46!==e.keyCode&&8!==e.keyCode||o(i,e)}}},[h,c])});return e("div",{class:["el-tabs__nav-wrap",u?"is-scrollable":"","is-"+this.rootTabs.tabPosition]},[m,e("div",{class:["el-tabs__nav-scroll"],ref:"navScroll"},[e("div",{class:["el-tabs__nav","is-"+this.rootTabs.tabPosition,s&&-1!==["top","bottom"].indexOf(this.rootTabs.tabPosition)?"is-stretch":""],ref:"nav",style:l,attrs:{role:"tablist"},on:{keydown:d}},[i?null:e("tab-bar",{attrs:{tabs:n}}),v])])])},mounted:function(){var e=this;Ye(this.$el,this.update),document.addEventListener("visibilitychange",this.visibilityChangeHandler),window.addEventListener("blur",this.windowBlurHandler),window.addEventListener("focus",this.windowFocusHandler),setTimeout(function(){e.scrollToActiveTab()},0)},beforeDestroy:function(){this.$el&&this.update&&Ke(this.$el,this.update),document.removeEventListener("visibilitychange",this.visibilityChangeHandler),window.removeEventListener("blur",this.windowBlurHandler),window.removeEventListener("focus",this.windowFocusHandler)}},void 0,void 0,!1,null,null,null);vo.options.__file="packages/tabs/src/tab-nav.vue";var go=r({name:"ElTabs",components:{TabNav:vo.exports},props:{type:String,activeName:String,closable:Boolean,addable:Boolean,value:{},editable:Boolean,tabPosition:{type:String,default:"top"},beforeLeave:Function,stretch:Boolean},provide:function(){return{rootTabs:this}},data:function(){return{currentName:this.value||this.activeName,panes:[]}},watch:{activeName:function(e){this.setCurrentName(e)},value:function(e){this.setCurrentName(e)},currentName:function(e){var t=this;this.$refs.nav&&this.$nextTick(function(){t.$refs.nav.$nextTick(function(e){t.$refs.nav.scrollToActiveTab()})})}},methods:{calcPaneInstances:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(this.$slots.default){var i=this.$slots.default.filter(function(e){return e.tag&&e.componentOptions&&"ElTabPane"===e.componentOptions.Ctor.options.name}).map(function(e){return e.componentInstance}),n=!(i.length===this.panes.length&&i.every(function(t,i){return t===e.panes[i]}));(t||n)&&(this.panes=i)}else 0!==this.panes.length&&(this.panes=[])},handleTabClick:function(e,t,i){e.disabled||(this.setCurrentName(t),this.$emit("tab-click",e,i))},handleTabRemove:function(e,t){e.disabled||(t.stopPropagation(),this.$emit("edit",e.name,"remove"),this.$emit("tab-remove",e.name))},handleTabAdd:function(){this.$emit("edit",null,"add"),this.$emit("tab-add")},setCurrentName:function(e){var t=this,i=function(){t.currentName=e,t.$emit("input",e)};if(this.currentName!==e&&this.beforeLeave){var n=this.beforeLeave(e,this.currentName);n&&n.then?n.then(function(){i(),t.$refs.nav&&t.$refs.nav.removeFocus()},function(){}):!1!==n&&i()}else i()}},render:function(e){var t,i=this.type,n=this.handleTabClick,r=this.handleTabRemove,s=this.handleTabAdd,a=this.currentName,o=this.panes,l=this.editable,u=this.addable,c=this.tabPosition,h=this.stretch,d=l||u?e("span",{class:"el-tabs__new-tab",on:{click:s,keydown:function(e){13===e.keyCode&&s()}},attrs:{tabindex:"0"}},[e("i",{class:"el-icon-plus"})]):null,p=e("div",{class:["el-tabs__header","is-"+c]},[d,e("tab-nav",{props:{currentName:a,onTabClick:n,onTabRemove:r,editable:l,type:i,panes:o,stretch:h},ref:"nav"})]),f=e("div",{class:"el-tabs__content"},[this.$slots.default]);return e("div",{class:(t={"el-tabs":!0,"el-tabs--card":"card"===i},t["el-tabs--"+c]=!0,t["el-tabs--border-card"]="border-card"===i,t)},["bottom"!==c?[p,f]:[f,p]])},created:function(){this.currentName||this.setCurrentName("0"),this.$on("tab-nav-update",this.calcPaneInstances.bind(null,!0))},mounted:function(){this.calcPaneInstances()},updated:function(){this.calcPaneInstances()}},void 0,void 0,!1,null,null,null);go.options.__file="packages/tabs/src/tabs.vue";var bo=go.exports;bo.install=function(e){e.component(bo.name,bo)};var yo=bo,wo=function(){var e=this,t=e.$createElement,i=e._self._c||t;return!e.lazy||e.loaded||e.active?i("div",{directives:[{name:"show",rawName:"v-show",value:e.active,expression:"active"}],staticClass:"el-tab-pane",attrs:{role:"tabpanel","aria-hidden":!e.active,id:"pane-"+e.paneName,"aria-labelledby":"tab-"+e.paneName}},[e._t("default")],2):e._e()};wo._withStripped=!0;var _o=r({name:"ElTabPane",componentName:"ElTabPane",props:{label:String,labelContent:Function,name:String,closable:Boolean,disabled:Boolean,lazy:Boolean},data:function(){return{index:null,loaded:!1}},computed:{isClosable:function(){return this.closable||this.$parent.closable},active:function(){var e=this.$parent.currentName===(this.name||this.index);return e&&(this.loaded=!0),e},paneName:function(){return this.name||this.index}},updated:function(){this.$parent.$emit("tab-nav-update")}},wo,[],!1,null,null,null);_o.options.__file="packages/tabs/src/tab-pane.vue";var xo=_o.exports;xo.install=function(e){e.component(xo.name,xo)};var Co=xo,ko=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-tree",class:{"el-tree--highlight-current":e.highlightCurrent,"is-dragging":!!e.dragState.draggingNode,"is-drop-not-allow":!e.dragState.allowDrop,"is-drop-inner":"inner"===e.dragState.dropType},attrs:{role:"tree"}},[e._l(e.root.childNodes,function(t){return i("el-tree-node",{key:e.getNodeKey(t),attrs:{node:t,props:e.props,"render-after-expand":e.renderAfterExpand,"show-checkbox":e.showCheckbox,"render-content":e.renderContent},on:{"node-expand":e.handleNodeExpand}})}),e.isEmpty?i("div",{staticClass:"el-tree__empty-block"},[i("span",{staticClass:"el-tree__empty-text"},[e._v(e._s(e.emptyText))])]):e._e(),i("div",{directives:[{name:"show",rawName:"v-show",value:e.dragState.showDropIndicator,expression:"dragState.showDropIndicator"}],ref:"dropIndicator",staticClass:"el-tree__drop-indicator"})],2)};ko._withStripped=!0;var So="$treeNodeId",Do=function(e,t){t&&!t[So]&&Object.defineProperty(t,So,{value:e.id,enumerable:!1,configurable:!1,writable:!1})},$o=function(e,t){return e?t[e]:t[So]},Eo=function(){function e(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,i,n){return i&&e(t.prototype,i),n&&e(t,n),t}}();var To=function(e){for(var t=!0,i=!0,n=!0,r=0,s=e.length;r<s;r++){var a=e[r];(!0!==a.checked||a.indeterminate)&&(t=!1,a.disabled||(n=!1)),(!1!==a.checked||a.indeterminate)&&(i=!1)}return{all:t,none:i,allWithoutDisable:n,half:!t&&!i}},Mo=function e(t){if(0!==t.childNodes.length){var i=To(t.childNodes),n=i.all,r=i.none,s=i.half;n?(t.checked=!0,t.indeterminate=!1):s?(t.checked=!1,t.indeterminate=!0):r&&(t.checked=!1,t.indeterminate=!1);var a=t.parent;a&&0!==a.level&&(t.store.checkStrictly||e(a))}},No=function(e,t){var i=e.store.props,n=e.data||{},r=i[t];if("function"==typeof r)return r(n,e);if("string"==typeof r)return n[r];if(void 0===r){var s=n[t];return void 0===s?"":s}},Po=0,Oo=function(){function e(t){for(var i in function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.id=Po++,this.text=null,this.checked=!1,this.indeterminate=!1,this.data=null,this.expanded=!1,this.parent=null,this.visible=!0,this.isCurrent=!1,t)t.hasOwnProperty(i)&&(this[i]=t[i]);this.level=0,this.loaded=!1,this.childNodes=[],this.loading=!1,this.parent&&(this.level=this.parent.level+1);var n=this.store;if(!n)throw new Error("[Node]store is required!");n.registerNode(this);var r=n.props;if(r&&void 0!==r.isLeaf){var s=No(this,"isLeaf");"boolean"==typeof s&&(this.isLeafByUser=s)}if(!0!==n.lazy&&this.data?(this.setData(this.data),n.defaultExpandAll&&(this.expanded=!0)):this.level>0&&n.lazy&&n.defaultExpandAll&&this.expand(),Array.isArray(this.data)||Do(this,this.data),this.data){var a=n.defaultExpandedKeys,o=n.key;o&&a&&-1!==a.indexOf(this.key)&&this.expand(null,n.autoExpandParent),o&&void 0!==n.currentNodeKey&&this.key===n.currentNodeKey&&(n.currentNode=this,n.currentNode.isCurrent=!0),n.lazy&&n._initDefaultCheckedNode(this),this.updateLeafState()}}return e.prototype.setData=function(e){Array.isArray(e)||Do(this,e),this.data=e,this.childNodes=[];for(var t=void 0,i=0,n=(t=0===this.level&&this.data instanceof Array?this.data:No(this,"children")||[]).length;i<n;i++)this.insertChild({data:t[i]})},e.prototype.contains=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return function i(n){for(var r=n.childNodes||[],s=!1,a=0,o=r.length;a<o;a++){var l=r[a];if(l===e||t&&i(l)){s=!0;break}}return s}(this)},e.prototype.remove=function(){var e=this.parent;e&&e.removeChild(this)},e.prototype.insertChild=function(t,i,n){if(!t)throw new Error("insertChild error: child is required.");if(!(t instanceof e)){if(!n){var r=this.getChildren(!0);-1===r.indexOf(t.data)&&(void 0===i||i<0?r.push(t.data):r.splice(i,0,t.data))}Z(t,{parent:this,store:this.store}),t=new e(t)}t.level=this.level+1,void 0===i||i<0?this.childNodes.push(t):this.childNodes.splice(i,0,t),this.updateLeafState()},e.prototype.insertBefore=function(e,t){var i=void 0;t&&(i=this.childNodes.indexOf(t)),this.insertChild(e,i)},e.prototype.insertAfter=function(e,t){var i=void 0;t&&-1!==(i=this.childNodes.indexOf(t))&&(i+=1),this.insertChild(e,i)},e.prototype.removeChild=function(e){var t=this.getChildren()||[],i=t.indexOf(e.data);i>-1&&t.splice(i,1);var n=this.childNodes.indexOf(e);n>-1&&(this.store&&this.store.deregisterNode(e),e.parent=null,this.childNodes.splice(n,1)),this.updateLeafState()},e.prototype.removeChildByData=function(e){for(var t=null,i=0;i<this.childNodes.length;i++)if(this.childNodes[i].data===e){t=this.childNodes[i];break}t&&this.removeChild(t)},e.prototype.expand=function(e,t){var i=this,n=function(){if(t)for(var n=i.parent;n.level>0;)n.expanded=!0,n=n.parent;i.expanded=!0,e&&e()};this.shouldLoadData()?this.loadData(function(e){e instanceof Array&&(i.checked?i.setChecked(!0,!0):i.store.checkStrictly||Mo(i),n())}):n()},e.prototype.doCreateChildren=function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e.forEach(function(e){t.insertChild(Z({data:e},i),void 0,!0)})},e.prototype.collapse=function(){this.expanded=!1},e.prototype.shouldLoadData=function(){return!0===this.store.lazy&&this.store.load&&!this.loaded},e.prototype.updateLeafState=function(){if(!0!==this.store.lazy||!0===this.loaded||void 0===this.isLeafByUser){var e=this.childNodes;!this.store.lazy||!0===this.store.lazy&&!0===this.loaded?this.isLeaf=!e||0===e.length:this.isLeaf=!1}else this.isLeaf=this.isLeafByUser},e.prototype.setChecked=function(e,t,i,n){var r=this;if(this.indeterminate="half"===e,this.checked=!0===e,!this.store.checkStrictly){if(!this.shouldLoadData()||this.store.checkDescendants){var s=To(this.childNodes),a=s.all,o=s.allWithoutDisable;this.isLeaf||a||!o||(this.checked=!1,e=!1);var l=function(){if(t){for(var i=r.childNodes,s=0,a=i.length;s<a;s++){var o=i[s];n=n||!1!==e;var l=o.disabled?o.checked:n;o.setChecked(l,t,!0,n)}var u=To(i),c=u.half,h=u.all;h||(r.checked=h,r.indeterminate=c)}};if(this.shouldLoadData())return void this.loadData(function(){l(),Mo(r)},{checked:!1!==e});l()}var u=this.parent;u&&0!==u.level&&(i||Mo(u))}},e.prototype.getChildren=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(0===this.level)return this.data;var t=this.data;if(!t)return null;var i=this.store.props,n="children";return i&&(n=i.children||"children"),void 0===t[n]&&(t[n]=null),e&&!t[n]&&(t[n]=[]),t[n]},e.prototype.updateChildren=function(){var e=this,t=this.getChildren()||[],i=this.childNodes.map(function(e){return e.data}),n={},r=[];t.forEach(function(e,t){var s=e[So];!!s&&E(i,function(e){return e[So]===s})>=0?n[s]={index:t,data:e}:r.push({index:t,data:e})}),this.store.lazy||i.forEach(function(t){n[t[So]]||e.removeChildByData(t)}),r.forEach(function(t){var i=t.index,n=t.data;e.insertChild({data:n},i)}),this.updateLeafState()},e.prototype.loadData=function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!0!==this.store.lazy||!this.store.load||this.loaded||this.loading&&!Object.keys(i).length)e&&e.call(this);else{this.loading=!0;this.store.load(this,function(n){t.loaded=!0,t.loading=!1,t.childNodes=[],t.doCreateChildren(n,i),t.updateLeafState(),e&&e.call(t,n)})}},Eo(e,[{key:"label",get:function(){return No(this,"label")}},{key:"key",get:function(){var e=this.store.key;return this.data?this.data[e]:null}},{key:"disabled",get:function(){return No(this,"disabled")}},{key:"nextSibling",get:function(){var e=this.parent;if(e){var t=e.childNodes.indexOf(this);if(t>-1)return e.childNodes[t+1]}return null}},{key:"previousSibling",get:function(){var e=this.parent;if(e){var t=e.childNodes.indexOf(this);if(t>-1)return t>0?e.childNodes[t-1]:null}return null}}]),e}(),Io="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};var Ao=function(){function e(t){var i=this;for(var n in function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.currentNode=null,this.currentNodeKey=null,t)t.hasOwnProperty(n)&&(this[n]=t[n]);(this.nodesMap={},this.root=new Oo({data:this.data,store:this}),this.lazy&&this.load)?(0,this.load)(this.root,function(e){i.root.doCreateChildren(e),i._initDefaultCheckedNodes()}):this._initDefaultCheckedNodes()}return e.prototype.filter=function(e){var t=this.filterNodeMethod,i=this.lazy;!function n(r){var s=r.root?r.root.childNodes:r.childNodes;if(s.forEach(function(i){i.visible=t.call(i,e,i.data,i),n(i)}),!r.visible&&s.length){var a;a=!s.some(function(e){return e.visible}),r.root?r.root.visible=!1===a:r.visible=!1===a}e&&(!r.visible||r.isLeaf||i||r.expand())}(this)},e.prototype.setData=function(e){e!==this.root.data?(this.root.setData(e),this._initDefaultCheckedNodes()):this.root.updateChildren()},e.prototype.getNode=function(e){if(e instanceof Oo)return e;var t="object"!==(void 0===e?"undefined":Io(e))?e:$o(this.key,e);return this.nodesMap[t]||null},e.prototype.insertBefore=function(e,t){var i=this.getNode(t);i.parent.insertBefore({data:e},i)},e.prototype.insertAfter=function(e,t){var i=this.getNode(t);i.parent.insertAfter({data:e},i)},e.prototype.remove=function(e){var t=this.getNode(e);t&&t.parent&&(t===this.currentNode&&(this.currentNode=null),t.parent.removeChild(t))},e.prototype.append=function(e,t){var i=t?this.getNode(t):this.root;i&&i.insertChild({data:e})},e.prototype._initDefaultCheckedNodes=function(){var e=this,t=this.defaultCheckedKeys||[],i=this.nodesMap;t.forEach(function(t){var n=i[t];n&&n.setChecked(!0,!e.checkStrictly)})},e.prototype._initDefaultCheckedNode=function(e){-1!==(this.defaultCheckedKeys||[]).indexOf(e.key)&&e.setChecked(!0,!this.checkStrictly)},e.prototype.setDefaultCheckedKey=function(e){e!==this.defaultCheckedKeys&&(this.defaultCheckedKeys=e,this._initDefaultCheckedNodes())},e.prototype.registerNode=function(e){this.key&&e&&e.data&&(void 0!==e.key&&(this.nodesMap[e.key]=e))},e.prototype.deregisterNode=function(e){var t=this;this.key&&e&&e.data&&(e.childNodes.forEach(function(e){t.deregisterNode(e)}),delete this.nodesMap[e.key])},e.prototype.getCheckedNodes=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=[];return function n(r){(r.root?r.root.childNodes:r.childNodes).forEach(function(r){(r.checked||t&&r.indeterminate)&&(!e||e&&r.isLeaf)&&i.push(r.data),n(r)})}(this),i},e.prototype.getCheckedKeys=function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.getCheckedNodes(t).map(function(t){return(t||{})[e.key]})},e.prototype.getHalfCheckedNodes=function(){var e=[];return function t(i){(i.root?i.root.childNodes:i.childNodes).forEach(function(i){i.indeterminate&&e.push(i.data),t(i)})}(this),e},e.prototype.getHalfCheckedKeys=function(){var e=this;return this.getHalfCheckedNodes().map(function(t){return(t||{})[e.key]})},e.prototype._getAllNodes=function(){var e=[],t=this.nodesMap;for(var i in t)t.hasOwnProperty(i)&&e.push(t[i]);return e},e.prototype.updateChildren=function(e,t){var i=this.nodesMap[e];if(i){for(var n=i.childNodes,r=n.length-1;r>=0;r--){var s=n[r];this.remove(s.data)}for(var a=0,o=t.length;a<o;a++){var l=t[a];this.append(l,i.data)}}},e.prototype._setCheckedKeys=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments[2],n=this._getAllNodes().sort(function(e,t){return t.level-e.level}),r=Object.create(null),s=Object.keys(i);n.forEach(function(e){return e.setChecked(!1,!1)});for(var a=0,o=n.length;a<o;a++){var l=n[a],u=l.data[e].toString();if(s.indexOf(u)>-1){for(var c=l.parent;c&&c.level>0;)r[c.data[e]]=!0,c=c.parent;l.isLeaf||this.checkStrictly?l.setChecked(!0,!1):(l.setChecked(!0,!0),t&&function(){l.setChecked(!1,!1);!function e(t){t.childNodes.forEach(function(t){t.isLeaf||t.setChecked(!1,!1),e(t)})}(l)}())}else l.checked&&!r[u]&&l.setChecked(!1,!1)}},e.prototype.setCheckedNodes=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=this.key,n={};e.forEach(function(e){n[(e||{})[i]]=!0}),this._setCheckedKeys(i,t,n)},e.prototype.setCheckedKeys=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.defaultCheckedKeys=e;var i=this.key,n={};e.forEach(function(e){n[e]=!0}),this._setCheckedKeys(i,t,n)},e.prototype.setDefaultExpandedKeys=function(e){var t=this;e=e||[],this.defaultExpandedKeys=e,e.forEach(function(e){var i=t.getNode(e);i&&i.expand(null,t.autoExpandParent)})},e.prototype.setChecked=function(e,t,i){var n=this.getNode(e);n&&n.setChecked(!!t,i)},e.prototype.getCurrentNode=function(){return this.currentNode},e.prototype.setCurrentNode=function(e){var t=this.currentNode;t&&(t.isCurrent=!1),this.currentNode=e,this.currentNode.isCurrent=!0},e.prototype.setUserCurrentNode=function(e){var t=e[this.key],i=this.nodesMap[t];this.setCurrentNode(i)},e.prototype.setCurrentNodeKey=function(e){if(null==e)return this.currentNode&&(this.currentNode.isCurrent=!1),void(this.currentNode=null);var t=this.getNode(e);t&&this.setCurrentNode(t)},e}(),Fo=function(){var e=this,t=this,i=t.$createElement,n=t._self._c||i;return n("div",{directives:[{name:"show",rawName:"v-show",value:t.node.visible,expression:"node.visible"}],ref:"node",staticClass:"el-tree-node",class:{"is-expanded":t.expanded,"is-current":t.node.isCurrent,"is-hidden":!t.node.visible,"is-focusable":!t.node.disabled,"is-checked":!t.node.disabled&&t.node.checked},attrs:{role:"treeitem",tabindex:"-1","aria-expanded":t.expanded,"aria-disabled":t.node.disabled,"aria-checked":t.node.checked,draggable:t.tree.draggable},on:{click:function(e){return e.stopPropagation(),t.handleClick(e)},contextmenu:function(t){return e.handleContextMenu(t)},dragstart:function(e){return e.stopPropagation(),t.handleDragStart(e)},dragover:function(e){return e.stopPropagation(),t.handleDragOver(e)},dragend:function(e){return e.stopPropagation(),t.handleDragEnd(e)},drop:function(e){return e.stopPropagation(),t.handleDrop(e)}}},[n("div",{staticClass:"el-tree-node__content",style:{"padding-left":(t.node.level-1)*t.tree.indent+"px"}},[n("span",{class:[{"is-leaf":t.node.isLeaf,expanded:!t.node.isLeaf&&t.expanded},"el-tree-node__expand-icon",t.tree.iconClass?t.tree.iconClass:"el-icon-caret-right"],on:{click:function(e){return e.stopPropagation(),t.handleExpandIconClick(e)}}}),t.showCheckbox?n("el-checkbox",{attrs:{indeterminate:t.node.indeterminate,disabled:!!t.node.disabled},on:{change:t.handleCheckChange},nativeOn:{click:function(e){e.stopPropagation()}},model:{value:t.node.checked,callback:function(e){t.$set(t.node,"checked",e)},expression:"node.checked"}}):t._e(),t.node.loading?n("span",{staticClass:"el-tree-node__loading-icon el-icon-loading"}):t._e(),n("node-content",{attrs:{node:t.node}})],1),n("el-collapse-transition",[!t.renderAfterExpand||t.childNodeRendered?n("div",{directives:[{name:"show",rawName:"v-show",value:t.expanded,expression:"expanded"}],staticClass:"el-tree-node__children",attrs:{role:"group","aria-expanded":t.expanded}},t._l(t.node.childNodes,function(e){return n("el-tree-node",{key:t.getNodeKey(e),attrs:{"render-content":t.renderContent,"render-after-expand":t.renderAfterExpand,"show-checkbox":t.showCheckbox,node:e},on:{"node-expand":t.handleChildNodeExpand}})}),1):t._e()])],1)};Fo._withStripped=!0;var Lo=r({name:"ElTreeNode",componentName:"ElTreeNode",mixins:[l],props:{node:{default:function(){return{}}},props:{},renderContent:Function,renderAfterExpand:{type:Boolean,default:!0},showCheckbox:{type:Boolean,default:!1}},components:{ElCollapseTransition:ii,ElCheckbox:Vi,NodeContent:{props:{node:{required:!0}},render:function(e){var t=this.$parent,i=t.tree,n=this.node,r=n.data,s=n.store;return t.renderContent?t.renderContent.call(t._renderProxy,e,{_self:i.$vnode.context,node:n,data:r,store:s}):i.$scopedSlots.default?i.$scopedSlots.default({node:n,data:r}):e("span",{class:"el-tree-node__label"},[n.label])}}},data:function(){return{tree:null,expanded:!1,childNodeRendered:!1,oldChecked:null,oldIndeterminate:null}},watch:{"node.indeterminate":function(e){this.handleSelectChange(this.node.checked,e)},"node.checked":function(e){this.handleSelectChange(e,this.node.indeterminate)},"node.expanded":function(e){var t=this;this.$nextTick(function(){return t.expanded=e}),e&&(this.childNodeRendered=!0)}},methods:{getNodeKey:function(e){return $o(this.tree.nodeKey,e.data)},handleSelectChange:function(e,t){this.oldChecked!==e&&this.oldIndeterminate!==t&&this.tree.$emit("check-change",this.node.data,e,t),this.oldChecked=e,this.indeterminate=t},handleClick:function(){var e=this.tree.store;e.setCurrentNode(this.node),this.tree.$emit("current-change",e.currentNode?e.currentNode.data:null,e.currentNode),this.tree.currentNode=this,this.tree.expandOnClickNode&&this.handleExpandIconClick(),this.tree.checkOnClickNode&&!this.node.disabled&&this.handleCheckChange(null,{target:{checked:!this.node.checked}}),this.tree.$emit("node-click",this.node.data,this.node,this)},handleContextMenu:function(e){this.tree._events["node-contextmenu"]&&this.tree._events["node-contextmenu"].length>0&&(e.stopPropagation(),e.preventDefault()),this.tree.$emit("node-contextmenu",e,this.node.data,this.node,this)},handleExpandIconClick:function(){this.node.isLeaf||(this.expanded?(this.tree.$emit("node-collapse",this.node.data,this.node,this),this.node.collapse()):(this.node.expand(),this.$emit("node-expand",this.node.data,this.node,this)))},handleCheckChange:function(e,t){var i=this;this.node.setChecked(t.target.checked,!this.tree.checkStrictly),this.$nextTick(function(){var e=i.tree.store;i.tree.$emit("check",i.node.data,{checkedNodes:e.getCheckedNodes(),checkedKeys:e.getCheckedKeys(),halfCheckedNodes:e.getHalfCheckedNodes(),halfCheckedKeys:e.getHalfCheckedKeys()})})},handleChildNodeExpand:function(e,t,i){this.broadcast("ElTreeNode","tree-node-expand",t),this.tree.$emit("node-expand",e,t,i)},handleDragStart:function(e){this.tree.draggable&&this.tree.$emit("tree-node-drag-start",e,this)},handleDragOver:function(e){this.tree.draggable&&(this.tree.$emit("tree-node-drag-over",e,this),e.preventDefault())},handleDrop:function(e){e.preventDefault()},handleDragEnd:function(e){this.tree.draggable&&this.tree.$emit("tree-node-drag-end",e,this)}},created:function(){var e=this,t=this.$parent;t.isTree?this.tree=t:this.tree=t.tree;var i=this.tree;i||console.warn("Can not find node's tree.");var n=(i.props||{}).children||"children";this.$watch("node.data."+n,function(){e.node.updateChildren()}),this.node.expanded&&(this.expanded=!0,this.childNodeRendered=!0),this.tree.accordion&&this.$on("tree-node-expand",function(t){e.node!==t&&e.node.collapse()})}},Fo,[],!1,null,null,null);Lo.options.__file="packages/tree/src/tree-node.vue";var Vo=r({name:"ElTree",mixins:[l],components:{ElTreeNode:Lo.exports},data:function(){return{store:null,root:null,currentNode:null,treeItems:null,checkboxItems:[],dragState:{showDropIndicator:!1,draggingNode:null,dropNode:null,allowDrop:!0}}},props:{data:{type:Array},emptyText:{type:String,default:function(){return W("el.tree.emptyText")}},renderAfterExpand:{type:Boolean,default:!0},nodeKey:String,checkStrictly:Boolean,defaultExpandAll:Boolean,expandOnClickNode:{type:Boolean,default:!0},checkOnClickNode:Boolean,checkDescendants:{type:Boolean,default:!1},autoExpandParent:{type:Boolean,default:!0},defaultCheckedKeys:Array,defaultExpandedKeys:Array,currentNodeKey:[String,Number],renderContent:Function,showCheckbox:{type:Boolean,default:!1},draggable:{type:Boolean,default:!1},allowDrag:Function,allowDrop:Function,props:{default:function(){return{children:"children",label:"label",disabled:"disabled"}}},lazy:{type:Boolean,default:!1},highlightCurrent:Boolean,load:Function,filterNodeMethod:Function,accordion:Boolean,indent:{type:Number,default:18},iconClass:String},computed:{children:{set:function(e){this.data=e},get:function(){return this.data}},treeItemArray:function(){return Array.prototype.slice.call(this.treeItems)},isEmpty:function(){var e=this.root.childNodes;return!e||0===e.length||e.every(function(e){return!e.visible})}},watch:{defaultCheckedKeys:function(e){this.store.setDefaultCheckedKey(e)},defaultExpandedKeys:function(e){this.store.defaultExpandedKeys=e,this.store.setDefaultExpandedKeys(e)},data:function(e){this.store.setData(e)},checkboxItems:function(e){Array.prototype.forEach.call(e,function(e){e.setAttribute("tabindex",-1)})},checkStrictly:function(e){this.store.checkStrictly=e}},methods:{filter:function(e){if(!this.filterNodeMethod)throw new Error("[Tree] filterNodeMethod is required when filter");this.store.filter(e)},getNodeKey:function(e){return $o(this.nodeKey,e.data)},getNodePath:function(e){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in getNodePath");var t=this.store.getNode(e);if(!t)return[];for(var i=[t.data],n=t.parent;n&&n!==this.root;)i.push(n.data),n=n.parent;return i.reverse()},getCheckedNodes:function(e,t){return this.store.getCheckedNodes(e,t)},getCheckedKeys:function(e){return this.store.getCheckedKeys(e)},getCurrentNode:function(){var e=this.store.getCurrentNode();return e?e.data:null},getCurrentKey:function(){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in getCurrentKey");var e=this.getCurrentNode();return e?e[this.nodeKey]:null},setCheckedNodes:function(e,t){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in setCheckedNodes");this.store.setCheckedNodes(e,t)},setCheckedKeys:function(e,t){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in setCheckedKeys");this.store.setCheckedKeys(e,t)},setChecked:function(e,t,i){this.store.setChecked(e,t,i)},getHalfCheckedNodes:function(){return this.store.getHalfCheckedNodes()},getHalfCheckedKeys:function(){return this.store.getHalfCheckedKeys()},setCurrentNode:function(e){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in setCurrentNode");this.store.setUserCurrentNode(e)},setCurrentKey:function(e){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in setCurrentKey");this.store.setCurrentNodeKey(e)},getNode:function(e){return this.store.getNode(e)},remove:function(e){this.store.remove(e)},append:function(e,t){this.store.append(e,t)},insertBefore:function(e,t){this.store.insertBefore(e,t)},insertAfter:function(e,t){this.store.insertAfter(e,t)},handleNodeExpand:function(e,t,i){this.broadcast("ElTreeNode","tree-node-expand",t),this.$emit("node-expand",e,t,i)},updateKeyChildren:function(e,t){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in updateKeyChild");this.store.updateChildren(e,t)},initTabIndex:function(){this.treeItems=this.$el.querySelectorAll(".is-focusable[role=treeitem]"),this.checkboxItems=this.$el.querySelectorAll("input[type=checkbox]");var e=this.$el.querySelectorAll(".is-checked[role=treeitem]");e.length?e[0].setAttribute("tabindex",0):this.treeItems[0]&&this.treeItems[0].setAttribute("tabindex",0)},handleKeydown:function(e){var t=e.target;if(-1!==t.className.indexOf("el-tree-node")){var i=e.keyCode;this.treeItems=this.$el.querySelectorAll(".is-focusable[role=treeitem]");var n=this.treeItemArray.indexOf(t),r=void 0;[38,40].indexOf(i)>-1&&(e.preventDefault(),r=38===i?0!==n?n-1:0:n<this.treeItemArray.length-1?n+1:0,this.treeItemArray[r].focus()),[37,39].indexOf(i)>-1&&(e.preventDefault(),t.click());var s=t.querySelector('[type="checkbox"]');[13,32].indexOf(i)>-1&&s&&(e.preventDefault(),s.click())}}},created:function(){var e=this;this.isTree=!0,this.store=new Ao({key:this.nodeKey,data:this.data,lazy:this.lazy,props:this.props,load:this.load,currentNodeKey:this.currentNodeKey,checkStrictly:this.checkStrictly,checkDescendants:this.checkDescendants,defaultCheckedKeys:this.defaultCheckedKeys,defaultExpandedKeys:this.defaultExpandedKeys,autoExpandParent:this.autoExpandParent,defaultExpandAll:this.defaultExpandAll,filterNodeMethod:this.filterNodeMethod}),this.root=this.store.root;var t=this.dragState;this.$on("tree-node-drag-start",function(i,n){if("function"==typeof e.allowDrag&&!e.allowDrag(n.node))return i.preventDefault(),!1;i.dataTransfer.effectAllowed="move";try{i.dataTransfer.setData("text/plain","")}catch(e){}t.draggingNode=n,e.$emit("node-drag-start",n.node,i)}),this.$on("tree-node-drag-over",function(i,n){var r=function(e,t){for(var i=e;i&&"BODY"!==i.tagName;){if(i.__vue__&&i.__vue__.$options.name===t)return i.__vue__;i=i.parentNode}return null}(i.target,"ElTreeNode"),s=t.dropNode;s&&s!==r&&me(s.$el,"is-drop-inner");var a=t.draggingNode;if(a&&r){var o=!0,l=!0,u=!0,c=!0;"function"==typeof e.allowDrop&&(o=e.allowDrop(a.node,r.node,"prev"),c=l=e.allowDrop(a.node,r.node,"inner"),u=e.allowDrop(a.node,r.node,"next")),i.dataTransfer.dropEffect=l?"move":"none",(o||l||u)&&s!==r&&(s&&e.$emit("node-drag-leave",a.node,s.node,i),e.$emit("node-drag-enter",a.node,r.node,i)),(o||l||u)&&(t.dropNode=r),r.node.nextSibling===a.node&&(u=!1),r.node.previousSibling===a.node&&(o=!1),r.node.contains(a.node,!1)&&(l=!1),(a.node===r.node||a.node.contains(r.node))&&(o=!1,l=!1,u=!1);var h=r.$el.getBoundingClientRect(),d=e.$el.getBoundingClientRect(),p=void 0,f=o?l?.25:u?.45:1:-1,m=u?l?.75:o?.55:0:1,v=-9999,g=i.clientY-h.top;p=g<h.height*f?"before":g>h.height*m?"after":l?"inner":"none";var b=r.$el.querySelector(".el-tree-node__expand-icon").getBoundingClientRect(),y=e.$refs.dropIndicator;"before"===p?v=b.top-d.top:"after"===p&&(v=b.bottom-d.top),y.style.top=v+"px",y.style.left=b.right-d.left+"px","inner"===p?fe(r.$el,"is-drop-inner"):me(r.$el,"is-drop-inner"),t.showDropIndicator="before"===p||"after"===p,t.allowDrop=t.showDropIndicator||c,t.dropType=p,e.$emit("node-drag-over",a.node,r.node,i)}}),this.$on("tree-node-drag-end",function(i){var n=t.draggingNode,r=t.dropType,s=t.dropNode;if(i.preventDefault(),i.dataTransfer.dropEffect="move",n&&s){var a={data:n.node.data};"none"!==r&&n.node.remove(),"before"===r?s.node.parent.insertBefore(a,s.node):"after"===r?s.node.parent.insertAfter(a,s.node):"inner"===r&&s.node.insertChild(a),"none"!==r&&e.store.registerNode(a),me(s.$el,"is-drop-inner"),e.$emit("node-drag-end",n.node,s.node,r,i),"none"!==r&&e.$emit("node-drop",n.node,s.node,r,i)}n&&!s&&e.$emit("node-drag-end",n.node,null,r,i),t.showDropIndicator=!1,t.draggingNode=null,t.dropNode=null,t.allowDrop=!0})},mounted:function(){this.initTabIndex(),this.$el.addEventListener("keydown",this.handleKeydown)},updated:function(){this.treeItems=this.$el.querySelectorAll("[role=treeitem]"),this.checkboxItems=this.$el.querySelectorAll("input[type=checkbox]")}},ko,[],!1,null,null,null);Vo.options.__file="packages/tree/src/tree.vue";var Bo=Vo.exports;Bo.install=function(e){e.component(Bo.name,Bo)};var zo=Bo,Ho=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-alert-fade"}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-alert",class:[e.typeClass,e.center?"is-center":"","is-"+e.effect],attrs:{role:"alert"}},[e.showIcon?i("i",{staticClass:"el-alert__icon",class:[e.iconClass,e.isBigIcon]}):e._e(),i("div",{staticClass:"el-alert__content"},[e.title||e.$slots.title?i("span",{staticClass:"el-alert__title",class:[e.isBoldTitle]},[e._t("title",[e._v(e._s(e.title))])],2):e._e(),e.$slots.default&&!e.description?i("p",{staticClass:"el-alert__description"},[e._t("default")],2):e._e(),e.description&&!e.$slots.default?i("p",{staticClass:"el-alert__description"},[e._v(e._s(e.description))]):e._e(),i("i",{directives:[{name:"show",rawName:"v-show",value:e.closable,expression:"closable"}],staticClass:"el-alert__closebtn",class:{"is-customed":""!==e.closeText,"el-icon-close":""===e.closeText},on:{click:function(t){e.close()}}},[e._v(e._s(e.closeText))])])])])};Ho._withStripped=!0;var Ro={success:"el-icon-success",warning:"el-icon-warning",error:"el-icon-error"},Wo=r({name:"ElAlert",props:{title:{type:String,default:""},description:{type:String,default:""},type:{type:String,default:"info"},closable:{type:Boolean,default:!0},closeText:{type:String,default:""},showIcon:Boolean,center:Boolean,effect:{type:String,default:"light",validator:function(e){return-1!==["light","dark"].indexOf(e)}}},data:function(){return{visible:!0}},methods:{close:function(){this.visible=!1,this.$emit("close")}},computed:{typeClass:function(){return"el-alert--"+this.type},iconClass:function(){return Ro[this.type]||"el-icon-info"},isBigIcon:function(){return this.description||this.$slots.default?"is-big":""},isBoldTitle:function(){return this.description||this.$slots.default?"is-bold":""}}},Ho,[],!1,null,null,null);Wo.options.__file="packages/alert/src/main.vue";var jo=Wo.exports;jo.install=function(e){e.component(jo.name,jo)};var qo=jo,Yo=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-notification-fade"}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],class:["el-notification",e.customClass,e.horizontalClass],style:e.positionStyle,attrs:{role:"alert"},on:{mouseenter:function(t){e.clearTimer()},mouseleave:function(t){e.startTimer()},click:e.click}},[e.type||e.iconClass?i("i",{staticClass:"el-notification__icon",class:[e.typeClass,e.iconClass]}):e._e(),i("div",{staticClass:"el-notification__group",class:{"is-with-icon":e.typeClass||e.iconClass}},[i("h2",{staticClass:"el-notification__title",domProps:{textContent:e._s(e.title)}}),i("div",{directives:[{name:"show",rawName:"v-show",value:e.message,expression:"message"}],staticClass:"el-notification__content"},[e._t("default",[e.dangerouslyUseHTMLString?i("p",{domProps:{innerHTML:e._s(e.message)}}):i("p",[e._v(e._s(e.message))])])],2),e.showClose?i("div",{staticClass:"el-notification__closeBtn el-icon-close",on:{click:function(t){return t.stopPropagation(),e.close(t)}}}):e._e()])])])};Yo._withStripped=!0;var Ko={success:"success",info:"info",warning:"warning",error:"error"},Go=r({data:function(){return{visible:!1,title:"",message:"",duration:4500,type:"",showClose:!0,customClass:"",iconClass:"",onClose:null,onClick:null,closed:!1,verticalOffset:0,timer:null,dangerouslyUseHTMLString:!1,position:"top-right"}},computed:{typeClass:function(){return this.type&&Ko[this.type]?"el-icon-"+Ko[this.type]:""},horizontalClass:function(){return this.position.indexOf("right")>-1?"right":"left"},verticalProperty:function(){return/^top-/.test(this.position)?"top":"bottom"},positionStyle:function(){var e;return(e={})[this.verticalProperty]=this.verticalOffset+"px",e}},watch:{closed:function(e){e&&(this.visible=!1,this.$el.addEventListener("transitionend",this.destroyElement))}},methods:{destroyElement:function(){this.$el.removeEventListener("transitionend",this.destroyElement),this.$destroy(!0),this.$el.parentNode.removeChild(this.$el)},click:function(){"function"==typeof this.onClick&&this.onClick()},close:function(){this.closed=!0,"function"==typeof this.onClose&&this.onClose()},clearTimer:function(){clearTimeout(this.timer)},startTimer:function(){var e=this;this.duration>0&&(this.timer=setTimeout(function(){e.closed||e.close()},this.duration))},keydown:function(e){46===e.keyCode||8===e.keyCode?this.clearTimer():27===e.keyCode?this.closed||this.close():this.startTimer()}},mounted:function(){var e=this;this.duration>0&&(this.timer=setTimeout(function(){e.closed||e.close()},this.duration)),document.addEventListener("keydown",this.keydown)},beforeDestroy:function(){document.removeEventListener("keydown",this.keydown)}},Yo,[],!1,null,null,null);Go.options.__file="packages/notification/src/main.vue";var Uo=Go.exports,Xo=h.a.extend(Uo),Jo=void 0,Zo=[],Qo=1,el=function e(t){if(!h.a.prototype.$isServer){var i=(t=Z({},t)).onClose,n="notification_"+Qo++,r=t.position||"top-right";t.onClose=function(){e.close(n,i)},Jo=new Xo({data:t}),ua(t.message)&&(Jo.$slots.default=[t.message],t.message="REPLACED_BY_VNODE"),Jo.id=n,Jo.$mount(),document.body.appendChild(Jo.$el),Jo.visible=!0,Jo.dom=Jo.$el,Jo.dom.style.zIndex=Se.nextZIndex();var s=t.offset||0;return Zo.filter(function(e){return e.position===r}).forEach(function(e){s+=e.$el.offsetHeight+16}),s+=16,Jo.verticalOffset=s,Zo.push(Jo),Jo}};["success","warning","info","error"].forEach(function(e){el[e]=function(t){return("string"==typeof t||ua(t))&&(t={message:t}),t.type=e,el(t)}}),el.close=function(e,t){var i=-1,n=Zo.length,r=Zo.filter(function(t,n){return t.id===e&&(i=n,!0)})[0];if(r&&("function"==typeof t&&t(r),Zo.splice(i,1),!(n<=1)))for(var s=r.position,a=r.dom.offsetHeight,o=i;o<n-1;o++)Zo[o].position===s&&(Zo[o].dom.style[r.verticalProperty]=parseInt(Zo[o].dom.style[r.verticalProperty],10)-a-16+"px")},el.closeAll=function(){for(var e=Zo.length-1;e>=0;e--)Zo[e].close()};var tl=el,il=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-slider",class:{"is-vertical":e.vertical,"el-slider--with-input":e.showInput},attrs:{role:"slider","aria-valuemin":e.min,"aria-valuemax":e.max,"aria-orientation":e.vertical?"vertical":"horizontal","aria-disabled":e.sliderDisabled}},[e.showInput&&!e.range?i("el-input-number",{ref:"input",staticClass:"el-slider__input",attrs:{step:e.step,disabled:e.sliderDisabled,controls:e.showInputControls,min:e.min,max:e.max,debounce:e.debounce,size:e.inputSize},on:{change:e.emitChange},model:{value:e.firstValue,callback:function(t){e.firstValue=t},expression:"firstValue"}}):e._e(),i("div",{ref:"slider",staticClass:"el-slider__runway",class:{"show-input":e.showInput,disabled:e.sliderDisabled},style:e.runwayStyle,on:{click:e.onSliderClick}},[i("div",{staticClass:"el-slider__bar",style:e.barStyle}),i("slider-button",{ref:"button1",attrs:{vertical:e.vertical,"tooltip-class":e.tooltipClass},model:{value:e.firstValue,callback:function(t){e.firstValue=t},expression:"firstValue"}}),e.range?i("slider-button",{ref:"button2",attrs:{vertical:e.vertical,"tooltip-class":e.tooltipClass},model:{value:e.secondValue,callback:function(t){e.secondValue=t},expression:"secondValue"}}):e._e(),e._l(e.stops,function(t,n){return e.showStops?i("div",{key:n,staticClass:"el-slider__stop",style:e.getStopStyle(t)}):e._e()}),e.markList.length>0?[i("div",e._l(e.markList,function(t,n){return i("div",{key:n,staticClass:"el-slider__stop el-slider__marks-stop",style:e.getStopStyle(t.position)})}),0),i("div",{staticClass:"el-slider__marks"},e._l(e.markList,function(t,n){return i("slider-marker",{key:n,style:e.getStopStyle(t.position),attrs:{mark:t.mark}})}),1)]:e._e()],2)],1)};il._withStripped=!0;var nl=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{ref:"button",staticClass:"el-slider__button-wrapper",class:{hover:e.hovering,dragging:e.dragging},style:e.wrapperStyle,attrs:{tabindex:"0"},on:{mouseenter:e.handleMouseEnter,mouseleave:e.handleMouseLeave,mousedown:e.onButtonDown,touchstart:e.onButtonDown,focus:e.handleMouseEnter,blur:e.handleMouseLeave,keydown:[function(t){return"button"in t||!e._k(t.keyCode,"left",37,t.key,["Left","ArrowLeft"])?"button"in t&&0!==t.button?null:e.onLeftKeyDown(t):null},function(t){return"button"in t||!e._k(t.keyCode,"right",39,t.key,["Right","ArrowRight"])?"button"in t&&2!==t.button?null:e.onRightKeyDown(t):null},function(t){return"button"in t||!e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])?(t.preventDefault(),e.onLeftKeyDown(t)):null},function(t){return"button"in t||!e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"])?(t.preventDefault(),e.onRightKeyDown(t)):null}]}},[i("el-tooltip",{ref:"tooltip",attrs:{placement:"top","popper-class":e.tooltipClass,disabled:!e.showTooltip}},[i("span",{attrs:{slot:"content"},slot:"content"},[e._v(e._s(e.formatValue))]),i("div",{staticClass:"el-slider__button",class:{hover:e.hovering,dragging:e.dragging}})])],1)};nl._withStripped=!0;var rl=r({name:"ElSliderButton",components:{ElTooltip:ui},props:{value:{type:Number,default:0},vertical:{type:Boolean,default:!1},tooltipClass:String},data:function(){return{hovering:!1,dragging:!1,isClick:!1,startX:0,currentX:0,startY:0,currentY:0,startPosition:0,newPosition:null,oldValue:this.value}},computed:{disabled:function(){return this.$parent.sliderDisabled},max:function(){return this.$parent.max},min:function(){return this.$parent.min},step:function(){return this.$parent.step},showTooltip:function(){return this.$parent.showTooltip},precision:function(){return this.$parent.precision},currentPosition:function(){return(this.value-this.min)/(this.max-this.min)*100+"%"},enableFormat:function(){return this.$parent.formatTooltip instanceof Function},formatValue:function(){return this.enableFormat&&this.$parent.formatTooltip(this.value)||this.value},wrapperStyle:function(){return this.vertical?{bottom:this.currentPosition}:{left:this.currentPosition}}},watch:{dragging:function(e){this.$parent.dragging=e}},methods:{displayTooltip:function(){this.$refs.tooltip&&(this.$refs.tooltip.showPopper=!0)},hideTooltip:function(){this.$refs.tooltip&&(this.$refs.tooltip.showPopper=!1)},handleMouseEnter:function(){this.hovering=!0,this.displayTooltip()},handleMouseLeave:function(){this.hovering=!1,this.hideTooltip()},onButtonDown:function(e){this.disabled||(e.preventDefault(),this.onDragStart(e),window.addEventListener("mousemove",this.onDragging),window.addEventListener("touchmove",this.onDragging),window.addEventListener("mouseup",this.onDragEnd),window.addEventListener("touchend",this.onDragEnd),window.addEventListener("contextmenu",this.onDragEnd))},onLeftKeyDown:function(){this.disabled||(this.newPosition=parseFloat(this.currentPosition)-this.step/(this.max-this.min)*100,this.setPosition(this.newPosition),this.$parent.emitChange())},onRightKeyDown:function(){this.disabled||(this.newPosition=parseFloat(this.currentPosition)+this.step/(this.max-this.min)*100,this.setPosition(this.newPosition),this.$parent.emitChange())},onDragStart:function(e){this.dragging=!0,this.isClick=!0,"touchstart"===e.type&&(e.clientY=e.touches[0].clientY,e.clientX=e.touches[0].clientX),this.vertical?this.startY=e.clientY:this.startX=e.clientX,this.startPosition=parseFloat(this.currentPosition),this.newPosition=this.startPosition},onDragging:function(e){if(this.dragging){this.isClick=!1,this.displayTooltip(),this.$parent.resetSize();var t=0;"touchmove"===e.type&&(e.clientY=e.touches[0].clientY,e.clientX=e.touches[0].clientX),this.vertical?(this.currentY=e.clientY,t=(this.startY-this.currentY)/this.$parent.sliderSize*100):(this.currentX=e.clientX,t=(this.currentX-this.startX)/this.$parent.sliderSize*100),this.newPosition=this.startPosition+t,this.setPosition(this.newPosition)}},onDragEnd:function(){var e=this;this.dragging&&(setTimeout(function(){e.dragging=!1,e.hideTooltip(),e.isClick||(e.setPosition(e.newPosition),e.$parent.emitChange())},0),window.removeEventListener("mousemove",this.onDragging),window.removeEventListener("touchmove",this.onDragging),window.removeEventListener("mouseup",this.onDragEnd),window.removeEventListener("touchend",this.onDragEnd),window.removeEventListener("contextmenu",this.onDragEnd))},setPosition:function(e){var t=this;if(null!==e&&!isNaN(e)){e<0?e=0:e>100&&(e=100);var i=100/((this.max-this.min)/this.step),n=Math.round(e/i)*i*(this.max-this.min)*.01+this.min;n=parseFloat(n.toFixed(this.precision)),this.$emit("input",n),this.$nextTick(function(){t.displayTooltip(),t.$refs.tooltip&&t.$refs.tooltip.updatePopper()}),this.dragging||this.value===this.oldValue||(this.oldValue=this.value)}}}},nl,[],!1,null,null,null);rl.options.__file="packages/slider/src/button.vue";var sl=rl.exports,al={name:"ElMarker",props:{mark:{type:[String,Object]}},render:function(){var e=arguments[0],t="string"==typeof this.mark?this.mark:this.mark.label;return e("div",{class:"el-slider__marks-text",style:this.mark.style||{}},[t])}},ol=r({name:"ElSlider",mixins:[l],inject:{elForm:{default:""}},props:{min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},value:{type:[Number,Array],default:0},showInput:{type:Boolean,default:!1},showInputControls:{type:Boolean,default:!0},inputSize:{type:String,default:"small"},showStops:{type:Boolean,default:!1},showTooltip:{type:Boolean,default:!0},formatTooltip:Function,disabled:{type:Boolean,default:!1},range:{type:Boolean,default:!1},vertical:{type:Boolean,default:!1},height:{type:String},debounce:{type:Number,default:300},label:{type:String},tooltipClass:String,marks:Object},components:{ElInputNumber:_i,SliderButton:sl,SliderMarker:al},data:function(){return{firstValue:null,secondValue:null,oldValue:null,dragging:!1,sliderSize:1}},watch:{value:function(e,t){this.dragging||Array.isArray(e)&&Array.isArray(t)&&e.every(function(e,i){return e===t[i]})||this.setValues()},dragging:function(e){e||this.setValues()},firstValue:function(e){this.range?this.$emit("input",[this.minValue,this.maxValue]):this.$emit("input",e)},secondValue:function(){this.range&&this.$emit("input",[this.minValue,this.maxValue])},min:function(){this.setValues()},max:function(){this.setValues()}},methods:{valueChanged:function(){var e=this;return this.range?![this.minValue,this.maxValue].every(function(t,i){return t===e.oldValue[i]}):this.value!==this.oldValue},setValues:function(){if(this.min>this.max)console.error("[Element Error][Slider]min should not be greater than max.");else{var e=this.value;this.range&&Array.isArray(e)?e[1]<this.min?this.$emit("input",[this.min,this.min]):e[0]>this.max?this.$emit("input",[this.max,this.max]):e[0]<this.min?this.$emit("input",[this.min,e[1]]):e[1]>this.max?this.$emit("input",[e[0],this.max]):(this.firstValue=e[0],this.secondValue=e[1],this.valueChanged()&&(this.dispatch("ElFormItem","el.form.change",[this.minValue,this.maxValue]),this.oldValue=e.slice())):this.range||"number"!=typeof e||isNaN(e)||(e<this.min?this.$emit("input",this.min):e>this.max?this.$emit("input",this.max):(this.firstValue=e,this.valueChanged()&&(this.dispatch("ElFormItem","el.form.change",e),this.oldValue=e)))}},setPosition:function(e){var t=this.min+e*(this.max-this.min)/100;if(this.range){var i=void 0;i=Math.abs(this.minValue-t)<Math.abs(this.maxValue-t)?this.firstValue<this.secondValue?"button1":"button2":this.firstValue>this.secondValue?"button1":"button2",this.$refs[i].setPosition(e)}else this.$refs.button1.setPosition(e)},onSliderClick:function(e){if(!this.sliderDisabled&&!this.dragging){if(this.resetSize(),this.vertical){var t=this.$refs.slider.getBoundingClientRect().bottom;this.setPosition((t-e.clientY)/this.sliderSize*100)}else{var i=this.$refs.slider.getBoundingClientRect().left;this.setPosition((e.clientX-i)/this.sliderSize*100)}this.emitChange()}},resetSize:function(){this.$refs.slider&&(this.sliderSize=this.$refs.slider["client"+(this.vertical?"Height":"Width")])},emitChange:function(){var e=this;this.$nextTick(function(){e.$emit("change",e.range?[e.minValue,e.maxValue]:e.value)})},getStopStyle:function(e){return this.vertical?{bottom:e+"%"}:{left:e+"%"}}},computed:{stops:function(){var e=this;if(!this.showStops||this.min>this.max)return[];if(0===this.step)return[];for(var t=(this.max-this.min)/this.step,i=100*this.step/(this.max-this.min),n=[],r=1;r<t;r++)n.push(r*i);return this.range?n.filter(function(t){return t<100*(e.minValue-e.min)/(e.max-e.min)||t>100*(e.maxValue-e.min)/(e.max-e.min)}):n.filter(function(t){return t>100*(e.firstValue-e.min)/(e.max-e.min)})},markList:function(){var e=this;return this.marks?Object.keys(this.marks).map(parseFloat).sort(function(e,t){return e-t}).filter(function(t){return t<=e.max&&t>=e.min}).map(function(t){return{point:t,position:100*(t-e.min)/(e.max-e.min),mark:e.marks[t]}}):[]},minValue:function(){return Math.min(this.firstValue,this.secondValue)},maxValue:function(){return Math.max(this.firstValue,this.secondValue)},barSize:function(){return this.range?100*(this.maxValue-this.minValue)/(this.max-this.min)+"%":100*(this.firstValue-this.min)/(this.max-this.min)+"%"},barStart:function(){return this.range?100*(this.minValue-this.min)/(this.max-this.min)+"%":"0%"},precision:function(){var e=[this.min,this.max,this.step].map(function(e){var t=(""+e).split(".")[1];return t?t.length:0});return Math.max.apply(null,e)},runwayStyle:function(){return this.vertical?{height:this.height}:{}},barStyle:function(){return this.vertical?{height:this.barSize,bottom:this.barStart}:{width:this.barSize,left:this.barStart}},sliderDisabled:function(){return this.disabled||(this.elForm||{}).disabled}},mounted:function(){var e=void 0;this.range?(Array.isArray(this.value)?(this.firstValue=Math.max(this.min,this.value[0]),this.secondValue=Math.min(this.max,this.value[1])):(this.firstValue=this.min,this.secondValue=this.max),this.oldValue=[this.firstValue,this.secondValue],e=this.firstValue+"-"+this.secondValue):("number"!=typeof this.value||isNaN(this.value)?this.firstValue=this.min:this.firstValue=Math.min(this.max,Math.max(this.min,this.value)),this.oldValue=this.firstValue,e=this.firstValue),this.$el.setAttribute("aria-valuetext",e),this.$el.setAttribute("aria-label",this.label?this.label:"slider between "+this.min+" and "+this.max),this.resetSize(),window.addEventListener("resize",this.resetSize)},beforeDestroy:function(){window.removeEventListener("resize",this.resetSize)}},il,[],!1,null,null,null);ol.options.__file="packages/slider/src/main.vue";var ll=ol.exports;ll.install=function(e){e.component(ll.name,ll)};var ul=ll,cl=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-loading-fade"},on:{"after-leave":e.handleAfterLeave}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-loading-mask",class:[e.customClass,{"is-fullscreen":e.fullscreen}],style:{backgroundColor:e.background||""}},[i("div",{staticClass:"el-loading-spinner"},[e.spinner?i("i",{class:e.spinner}):i("svg",{staticClass:"circular",attrs:{viewBox:"25 25 50 50"}},[i("circle",{staticClass:"path",attrs:{cx:"50",cy:"50",r:"20",fill:"none"}})]),e.text?i("p",{staticClass:"el-loading-text"},[e._v(e._s(e.text))]):e._e()])])])};cl._withStripped=!0;var hl=r({data:function(){return{text:null,spinner:null,background:null,fullscreen:!0,visible:!1,customClass:""}},methods:{handleAfterLeave:function(){this.$emit("after-leave")},setText:function(e){this.text=e}}},cl,[],!1,null,null,null);hl.options.__file="packages/loading/src/loading.vue";var dl=hl.exports,pl=function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:300,n=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(!e||!t)throw new Error("instance & callback is required");var r=!1,s=function(){r||(r=!0,t&&t.apply(null,arguments))};n?e.$once("after-leave",s):e.$on("after-leave",s),setTimeout(function(){s()},i+100)},fl=h.a.extend(dl),ml={install:function(e){if(!e.prototype.$isServer){var t=function(t,n){n.value?e.nextTick(function(){n.modifiers.fullscreen?(t.originalPosition=ve(document.body,"position"),t.originalOverflow=ve(document.body,"overflow"),t.maskStyle.zIndex=Se.nextZIndex(),fe(t.mask,"is-fullscreen"),i(document.body,t,n)):(me(t.mask,"is-fullscreen"),n.modifiers.body?(t.originalPosition=ve(document.body,"position"),["top","left"].forEach(function(e){var i="top"===e?"scrollTop":"scrollLeft";t.maskStyle[e]=t.getBoundingClientRect()[e]+document.body[i]+document.documentElement[i]-parseInt(ve(document.body,"margin-"+e),10)+"px"}),["height","width"].forEach(function(e){t.maskStyle[e]=t.getBoundingClientRect()[e]+"px"}),i(document.body,t,n)):(t.originalPosition=ve(t,"position"),i(t,t,n)))}):(pl(t.instance,function(e){if(t.instance.hiding){t.domVisible=!1;var i=n.modifiers.fullscreen||n.modifiers.body?document.body:t;me(i,"el-loading-parent--relative"),me(i,"el-loading-parent--hidden"),t.instance.hiding=!1}},300,!0),t.instance.visible=!1,t.instance.hiding=!0)},i=function(t,i,n){i.domVisible||"none"===ve(i,"display")||"hidden"===ve(i,"visibility")?i.domVisible&&!0===i.instance.hiding&&(i.instance.visible=!0,i.instance.hiding=!1):(Object.keys(i.maskStyle).forEach(function(e){i.mask.style[e]=i.maskStyle[e]}),"absolute"!==i.originalPosition&&"fixed"!==i.originalPosition&&fe(t,"el-loading-parent--relative"),n.modifiers.fullscreen&&n.modifiers.lock&&fe(t,"el-loading-parent--hidden"),i.domVisible=!0,t.appendChild(i.mask),e.nextTick(function(){i.instance.hiding?i.instance.$emit("after-leave"):i.instance.visible=!0}),i.domInserted=!0)};e.directive("loading",{bind:function(e,i,n){var r=e.getAttribute("element-loading-text"),s=e.getAttribute("element-loading-spinner"),a=e.getAttribute("element-loading-background"),o=e.getAttribute("element-loading-custom-class"),l=n.context,u=new fl({el:document.createElement("div"),data:{text:l&&l[r]||r,spinner:l&&l[s]||s,background:l&&l[a]||a,customClass:l&&l[o]||o,fullscreen:!!i.modifiers.fullscreen}});e.instance=u,e.mask=u.$el,e.maskStyle={},i.value&&t(e,i)},update:function(e,i){e.instance.setText(e.getAttribute("element-loading-text")),i.oldValue!==i.value&&t(e,i)},unbind:function(e,i){e.domInserted&&(e.mask&&e.mask.parentNode&&e.mask.parentNode.removeChild(e.mask),t(e,{value:!1,modifiers:i.modifiers})),e.instance&&e.instance.$destroy()}})}}},vl=ml,gl=h.a.extend(dl),bl={text:null,fullscreen:!0,body:!1,lock:!1,customClass:""},yl=void 0;gl.prototype.originalPosition="",gl.prototype.originalOverflow="",gl.prototype.close=function(){var e=this;this.fullscreen&&(yl=void 0),pl(this,function(t){var i=e.fullscreen||e.body?document.body:e.target;me(i,"el-loading-parent--relative"),me(i,"el-loading-parent--hidden"),e.$el&&e.$el.parentNode&&e.$el.parentNode.removeChild(e.$el),e.$destroy()},300),this.visible=!1};var wl=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!h.a.prototype.$isServer){if("string"==typeof(e=Z({},bl,e)).target&&(e.target=document.querySelector(e.target)),e.target=e.target||document.body,e.target!==document.body?e.fullscreen=!1:e.body=!0,e.fullscreen&&yl)return yl;var t=e.body?document.body:e.target,i=new gl({el:document.createElement("div"),data:e});return function(e,t,i){var n={};e.fullscreen?(i.originalPosition=ve(document.body,"position"),i.originalOverflow=ve(document.body,"overflow"),n.zIndex=Se.nextZIndex()):e.body?(i.originalPosition=ve(document.body,"position"),["top","left"].forEach(function(t){var i="top"===t?"scrollTop":"scrollLeft";n[t]=e.target.getBoundingClientRect()[t]+document.body[i]+document.documentElement[i]+"px"}),["height","width"].forEach(function(t){n[t]=e.target.getBoundingClientRect()[t]+"px"})):i.originalPosition=ve(t,"position"),Object.keys(n).forEach(function(e){i.$el.style[e]=n[e]})}(e,t,i),"absolute"!==i.originalPosition&&"fixed"!==i.originalPosition&&fe(t,"el-loading-parent--relative"),e.fullscreen&&e.lock&&fe(t,"el-loading-parent--hidden"),t.appendChild(i.$el),h.a.nextTick(function(){i.visible=!0}),e.fullscreen&&(yl=i),i}},_l={install:function(e){e.use(vl),e.prototype.$loading=wl},directive:vl,service:wl},xl=function(){var e=this.$createElement;return(this._self._c||e)("i",{class:"el-icon-"+this.name})};xl._withStripped=!0;var Cl=r({name:"ElIcon",props:{name:String}},xl,[],!1,null,null,null);Cl.options.__file="packages/icon/src/icon.vue";var kl=Cl.exports;kl.install=function(e){e.component(kl.name,kl)};var Sl=kl,Dl={name:"ElRow",componentName:"ElRow",props:{tag:{type:String,default:"div"},gutter:Number,type:String,justify:{type:String,default:"start"},align:{type:String,default:"top"}},computed:{style:function(){var e={};return this.gutter&&(e.marginLeft="-"+this.gutter/2+"px",e.marginRight=e.marginLeft),e}},render:function(e){return e(this.tag,{class:["el-row","start"!==this.justify?"is-justify-"+this.justify:"","top"!==this.align?"is-align-"+this.align:"",{"el-row--flex":"flex"===this.type}],style:this.style},this.$slots.default)},install:function(e){e.component(Dl.name,Dl)}},$l=Dl,El="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},Tl={name:"ElCol",props:{span:{type:Number,default:24},tag:{type:String,default:"div"},offset:Number,pull:Number,push:Number,xs:[Number,Object],sm:[Number,Object],md:[Number,Object],lg:[Number,Object],xl:[Number,Object]},computed:{gutter:function(){for(var e=this.$parent;e&&"ElRow"!==e.$options.componentName;)e=e.$parent;return e?e.gutter:0}},render:function(e){var t=this,i=[],n={};return this.gutter&&(n.paddingLeft=this.gutter/2+"px",n.paddingRight=n.paddingLeft),["span","offset","pull","push"].forEach(function(e){(t[e]||0===t[e])&&i.push("span"!==e?"el-col-"+e+"-"+t[e]:"el-col-"+t[e])}),["xs","sm","md","lg","xl"].forEach(function(e){if("number"==typeof t[e])i.push("el-col-"+e+"-"+t[e]);else if("object"===El(t[e])){var n=t[e];Object.keys(n).forEach(function(t){i.push("span"!==t?"el-col-"+e+"-"+t+"-"+n[t]:"el-col-"+e+"-"+n[t])})}}),e(this.tag,{class:["el-col",i],style:n},this.$slots.default)},install:function(e){e.component(Tl.name,Tl)}},Ml=Tl,Nl=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition-group",{class:["el-upload-list","el-upload-list--"+e.listType,{"is-disabled":e.disabled}],attrs:{tag:"ul",name:"el-list"}},e._l(e.files,function(t){return i("li",{key:t.uid,class:["el-upload-list__item","is-"+t.status,e.focusing?"focusing":""],attrs:{tabindex:"0"},on:{keydown:function(i){if(!("button"in i)&&e._k(i.keyCode,"delete",[8,46],i.key,["Backspace","Delete","Del"]))return null;!e.disabled&&e.$emit("remove",t)},focus:function(t){e.focusing=!0},blur:function(t){e.focusing=!1},click:function(t){e.focusing=!1}}},[e._t("default",["uploading"!==t.status&&["picture-card","picture"].indexOf(e.listType)>-1?i("img",{staticClass:"el-upload-list__item-thumbnail",attrs:{src:t.url,alt:""}}):e._e(),i("a",{staticClass:"el-upload-list__item-name",on:{click:function(i){e.handleClick(t)}}},[i("i",{staticClass:"el-icon-document"}),e._v(e._s(t.name)+"\n      ")]),i("label",{staticClass:"el-upload-list__item-status-label"},[i("i",{class:{"el-icon-upload-success":!0,"el-icon-circle-check":"text"===e.listType,"el-icon-check":["picture-card","picture"].indexOf(e.listType)>-1}})]),e.disabled?e._e():i("i",{staticClass:"el-icon-close",on:{click:function(i){e.$emit("remove",t)}}}),e.disabled?e._e():i("i",{staticClass:"el-icon-close-tip"},[e._v(e._s(e.t("el.upload.deleteTip")))]),"uploading"===t.status?i("el-progress",{attrs:{type:"picture-card"===e.listType?"circle":"line","stroke-width":"picture-card"===e.listType?6:2,percentage:e.parsePercentage(t.percentage)}}):e._e(),"picture-card"===e.listType?i("span",{staticClass:"el-upload-list__item-actions"},[e.handlePreview&&"picture-card"===e.listType?i("span",{staticClass:"el-upload-list__item-preview",on:{click:function(i){e.handlePreview(t)}}},[i("i",{staticClass:"el-icon-zoom-in"})]):e._e(),e.disabled?e._e():i("span",{staticClass:"el-upload-list__item-delete",on:{click:function(i){e.$emit("remove",t)}}},[i("i",{staticClass:"el-icon-delete"})])]):e._e()],{file:t})],2)}),0)};Nl._withStripped=!0;var Pl=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-progress",class:["el-progress--"+e.type,e.status?"is-"+e.status:"",{"el-progress--without-text":!e.showText,"el-progress--text-inside":e.textInside}],attrs:{role:"progressbar","aria-valuenow":e.percentage,"aria-valuemin":"0","aria-valuemax":"100"}},["line"===e.type?i("div",{staticClass:"el-progress-bar"},[i("div",{staticClass:"el-progress-bar__outer",style:{height:e.strokeWidth+"px"}},[i("div",{staticClass:"el-progress-bar__inner",style:e.barStyle},[e.showText&&e.textInside?i("div",{staticClass:"el-progress-bar__innerText"},[e._v(e._s(e.content))]):e._e()])])]):i("div",{staticClass:"el-progress-circle",style:{height:e.width+"px",width:e.width+"px"}},[i("svg",{attrs:{viewBox:"0 0 100 100"}},[i("path",{staticClass:"el-progress-circle__track",style:e.trailPathStyle,attrs:{d:e.trackPath,stroke:"#e5e9f2","stroke-width":e.relativeStrokeWidth,fill:"none"}}),i("path",{staticClass:"el-progress-circle__path",style:e.circlePathStyle,attrs:{d:e.trackPath,stroke:e.stroke,fill:"none","stroke-linecap":e.strokeLinecap,"stroke-width":e.percentage?e.relativeStrokeWidth:0}})])]),e.showText&&!e.textInside?i("div",{staticClass:"el-progress__text",style:{fontSize:e.progressTextSize+"px"}},[e.status?i("i",{class:e.iconClass}):[e._v(e._s(e.content))]],2):e._e()])};Pl._withStripped=!0;var Ol=r({name:"ElProgress",props:{type:{type:String,default:"line",validator:function(e){return["line","circle","dashboard"].indexOf(e)>-1}},percentage:{type:Number,default:0,required:!0,validator:function(e){return e>=0&&e<=100}},status:{type:String,validator:function(e){return["success","exception","warning"].indexOf(e)>-1}},strokeWidth:{type:Number,default:6},strokeLinecap:{type:String,default:"round"},textInside:{type:Boolean,default:!1},width:{type:Number,default:126},showText:{type:Boolean,default:!0},color:{type:[String,Array,Function],default:""},format:Function},computed:{barStyle:function(){var e={};return e.width=this.percentage+"%",e.backgroundColor=this.getCurrentColor(this.percentage),e},relativeStrokeWidth:function(){return(this.strokeWidth/this.width*100).toFixed(1)},radius:function(){return"circle"===this.type||"dashboard"===this.type?parseInt(50-parseFloat(this.relativeStrokeWidth)/2,10):0},trackPath:function(){var e=this.radius,t="dashboard"===this.type;return"\n        M 50 50\n        m 0 "+(t?"":"-")+e+"\n        a "+e+" "+e+" 0 1 1 0 "+(t?"-":"")+2*e+"\n        a "+e+" "+e+" 0 1 1 0 "+(t?"":"-")+2*e+"\n        "},perimeter:function(){return 2*Math.PI*this.radius},rate:function(){return"dashboard"===this.type?.75:1},strokeDashoffset:function(){return-1*this.perimeter*(1-this.rate)/2+"px"},trailPathStyle:function(){return{strokeDasharray:this.perimeter*this.rate+"px, "+this.perimeter+"px",strokeDashoffset:this.strokeDashoffset}},circlePathStyle:function(){return{strokeDasharray:this.perimeter*this.rate*(this.percentage/100)+"px, "+this.perimeter+"px",strokeDashoffset:this.strokeDashoffset,transition:"stroke-dasharray 0.6s ease 0s, stroke 0.6s ease"}},stroke:function(){var e=void 0;if(this.color)e=this.getCurrentColor(this.percentage);else switch(this.status){case"success":e="#13ce66";break;case"exception":e="#ff4949";break;case"warning":e="#e6a23c";break;default:e="#20a0ff"}return e},iconClass:function(){return"warning"===this.status?"el-icon-warning":"line"===this.type?"success"===this.status?"el-icon-circle-check":"el-icon-circle-close":"success"===this.status?"el-icon-check":"el-icon-close"},progressTextSize:function(){return"line"===this.type?12+.4*this.strokeWidth:.111111*this.width+2},content:function(){return"function"==typeof this.format?this.format(this.percentage)||"":this.percentage+"%"}},methods:{getCurrentColor:function(e){return"function"==typeof this.color?this.color(e):"string"==typeof this.color?this.color:this.getLevelColor(e)},getLevelColor:function(e){for(var t=this.getColorArray().sort(function(e,t){return e.percentage-t.percentage}),i=0;i<t.length;i++)if(t[i].percentage>e)return t[i].color;return t[t.length-1].color},getColorArray:function(){var e=this.color,t=100/e.length;return e.map(function(e,i){return"string"==typeof e?{color:e,percentage:(i+1)*t}:e})}}},Pl,[],!1,null,null,null);Ol.options.__file="packages/progress/src/progress.vue";var Il=Ol.exports;Il.install=function(e){e.component(Il.name,Il)};var Al=Il,Fl=r({name:"ElUploadList",mixins:[q],data:function(){return{focusing:!1}},components:{ElProgress:Al},props:{files:{type:Array,default:function(){return[]}},disabled:{type:Boolean,default:!1},handlePreview:Function,listType:String},methods:{parsePercentage:function(e){return parseInt(e,10)},handleClick:function(e){this.handlePreview&&this.handlePreview(e)}}},Nl,[],!1,null,null,null);Fl.options.__file="packages/upload/src/upload-list.vue";var Ll=Fl.exports,Vl=i(6),Bl=i.n(Vl);var zl=function(){var e=this,t=e.$createElement;return(e._self._c||t)("div",{staticClass:"el-upload-dragger",class:{"is-dragover":e.dragover},on:{drop:function(t){return t.preventDefault(),e.onDrop(t)},dragover:function(t){return t.preventDefault(),e.onDragover(t)},dragleave:function(t){t.preventDefault(),e.dragover=!1}}},[e._t("default")],2)};zl._withStripped=!0;var Hl=r({name:"ElUploadDrag",props:{disabled:Boolean},inject:{uploader:{default:""}},data:function(){return{dragover:!1}},methods:{onDragover:function(){this.disabled||(this.dragover=!0)},onDrop:function(e){if(!this.disabled&&this.uploader){var t=this.uploader.accept;this.dragover=!1,t?this.$emit("file",[].slice.call(e.dataTransfer.files).filter(function(e){var i=e.type,n=e.name,r=n.indexOf(".")>-1?"."+n.split(".").pop():"",s=i.replace(/\/.*$/,"");return t.split(",").map(function(e){return e.trim()}).filter(function(e){return e}).some(function(e){return/\..+$/.test(e)?r===e:/\/\*$/.test(e)?s===e.replace(/\/\*$/,""):!!/^[^\/]+\/[^\/]+$/.test(e)&&i===e})})):this.$emit("file",e.dataTransfer.files)}}}},zl,[],!1,null,null,null);Hl.options.__file="packages/upload/src/upload-dragger.vue";var Rl=r({inject:["uploader"],components:{UploadDragger:Hl.exports},props:{type:String,action:{type:String,required:!0},name:{type:String,default:"file"},data:Object,headers:Object,withCredentials:Boolean,multiple:Boolean,accept:String,onStart:Function,onProgress:Function,onSuccess:Function,onError:Function,beforeUpload:Function,drag:Boolean,onPreview:{type:Function,default:function(){}},onRemove:{type:Function,default:function(){}},fileList:Array,autoUpload:Boolean,listType:String,httpRequest:{type:Function,default:function(e){if("undefined"!=typeof XMLHttpRequest){var t=new XMLHttpRequest,i=e.action;t.upload&&(t.upload.onprogress=function(t){t.total>0&&(t.percent=t.loaded/t.total*100),e.onProgress(t)});var n=new FormData;e.data&&Object.keys(e.data).forEach(function(t){n.append(t,e.data[t])}),n.append(e.filename,e.file,e.file.name),t.onerror=function(t){e.onError(t)},t.onload=function(){if(t.status<200||t.status>=300)return e.onError(function(e,t,i){var n=void 0;n=i.response?""+(i.response.error||i.response):i.responseText?""+i.responseText:"fail to post "+e+" "+i.status;var r=new Error(n);return r.status=i.status,r.method="post",r.url=e,r}(i,0,t));e.onSuccess(function(e){var t=e.responseText||e.response;if(!t)return t;try{return JSON.parse(t)}catch(e){return t}}(t))},t.open("post",i,!0),e.withCredentials&&"withCredentials"in t&&(t.withCredentials=!0);var r=e.headers||{};for(var s in r)r.hasOwnProperty(s)&&null!==r[s]&&t.setRequestHeader(s,r[s]);return t.send(n),t}}},disabled:Boolean,limit:Number,onExceed:Function},data:function(){return{mouseover:!1,reqs:{}}},methods:{isImage:function(e){return-1!==e.indexOf("image")},handleChange:function(e){var t=e.target.files;t&&this.uploadFiles(t)},uploadFiles:function(e){var t=this;if(this.limit&&this.fileList.length+e.length>this.limit)this.onExceed&&this.onExceed(e,this.fileList);else{var i=Array.prototype.slice.call(e);this.multiple||(i=i.slice(0,1)),0!==i.length&&i.forEach(function(e){t.onStart(e),t.autoUpload&&t.upload(e)})}},upload:function(e){var t=this;if(this.$refs.input.value=null,!this.beforeUpload)return this.post(e);var i=this.beforeUpload(e);i&&i.then?i.then(function(i){var n=Object.prototype.toString.call(i);if("[object File]"===n||"[object Blob]"===n){for(var r in"[object Blob]"===n&&(i=new File([i],e.name,{type:e.type})),e)e.hasOwnProperty(r)&&(i[r]=e[r]);t.post(i)}else t.post(e)},function(){t.onRemove(null,e)}):!1!==i?this.post(e):this.onRemove(null,e)},abort:function(e){var t=this.reqs;if(e){var i=e;e.uid&&(i=e.uid),t[i]&&t[i].abort()}else Object.keys(t).forEach(function(e){t[e]&&t[e].abort(),delete t[e]})},post:function(e){var t=this,i=e.uid,n={headers:this.headers,withCredentials:this.withCredentials,file:e,data:this.data,filename:this.name,action:this.action,onProgress:function(i){t.onProgress(i,e)},onSuccess:function(n){t.onSuccess(n,e),delete t.reqs[i]},onError:function(n){t.onError(n,e),delete t.reqs[i]}},r=this.httpRequest(n);this.reqs[i]=r,r&&r.then&&r.then(n.onSuccess,n.onError)},handleClick:function(){this.disabled||(this.$refs.input.value=null,this.$refs.input.click())},handleKeydown:function(e){e.target===e.currentTarget&&(13!==e.keyCode&&32!==e.keyCode||this.handleClick())}},render:function(e){var t=this.handleClick,i=this.drag,n=this.name,r=this.handleChange,s=this.multiple,a=this.accept,o=this.listType,l=this.uploadFiles,u=this.disabled,c={class:{"el-upload":!0},on:{click:t,keydown:this.handleKeydown}};return c.class["el-upload--"+o]=!0,e("div",Bl()([c,{attrs:{tabindex:"0"}}]),[i?e("upload-dragger",{attrs:{disabled:u},on:{file:l}},[this.$slots.default]):this.$slots.default,e("input",{class:"el-upload__input",attrs:{type:"file",name:n,multiple:s,accept:a},ref:"input",on:{change:r}})])}},void 0,void 0,!1,null,null,null);Rl.options.__file="packages/upload/src/upload.vue";var Wl=Rl.exports;function jl(){}var ql=r({name:"ElUpload",mixins:[K],components:{ElProgress:Al,UploadList:Ll,Upload:Wl},provide:function(){return{uploader:this}},inject:{elForm:{default:""}},props:{action:{type:String,required:!0},headers:{type:Object,default:function(){return{}}},data:Object,multiple:Boolean,name:{type:String,default:"file"},drag:Boolean,dragger:Boolean,withCredentials:Boolean,showFileList:{type:Boolean,default:!0},accept:String,type:{type:String,default:"select"},beforeUpload:Function,beforeRemove:Function,onRemove:{type:Function,default:jl},onChange:{type:Function,default:jl},onPreview:{type:Function},onSuccess:{type:Function,default:jl},onProgress:{type:Function,default:jl},onError:{type:Function,default:jl},fileList:{type:Array,default:function(){return[]}},autoUpload:{type:Boolean,default:!0},listType:{type:String,default:"text"},httpRequest:Function,disabled:Boolean,limit:Number,onExceed:{type:Function,default:jl}},data:function(){return{uploadFiles:[],dragOver:!1,draging:!1,tempIndex:1}},computed:{uploadDisabled:function(){return this.disabled||(this.elForm||{}).disabled}},watch:{listType:function(e){"picture-card"!==e&&"picture"!==e||(this.uploadFiles=this.uploadFiles.map(function(e){if(!e.url&&e.raw)try{e.url=URL.createObjectURL(e.raw)}catch(e){console.error("[Element Error][Upload]",e)}return e}))},fileList:{immediate:!0,handler:function(e){var t=this;this.uploadFiles=e.map(function(e){return e.uid=e.uid||Date.now()+t.tempIndex++,e.status=e.status||"success",e})}}},methods:{handleStart:function(e){e.uid=Date.now()+this.tempIndex++;var t={status:"ready",name:e.name,size:e.size,percentage:0,uid:e.uid,raw:e};if("picture-card"===this.listType||"picture"===this.listType)try{t.url=URL.createObjectURL(e)}catch(e){return void console.error("[Element Error][Upload]",e)}this.uploadFiles.push(t),this.onChange(t,this.uploadFiles)},handleProgress:function(e,t){var i=this.getFile(t);this.onProgress(e,i,this.uploadFiles),i.status="uploading",i.percentage=e.percent||0},handleSuccess:function(e,t){var i=this.getFile(t);i&&(i.status="success",i.response=e,this.onSuccess(e,i,this.uploadFiles),this.onChange(i,this.uploadFiles))},handleError:function(e,t){var i=this.getFile(t),n=this.uploadFiles;i.status="fail",n.splice(n.indexOf(i),1),this.onError(e,i,this.uploadFiles),this.onChange(i,this.uploadFiles)},handleRemove:function(e,t){var i=this;t&&(e=this.getFile(t));var n=function(){i.abort(e);var t=i.uploadFiles;t.splice(t.indexOf(e),1),i.onRemove(e,t)};if(this.beforeRemove){if("function"==typeof this.beforeRemove){var r=this.beforeRemove(e,this.uploadFiles);r&&r.then?r.then(function(){n()},jl):!1!==r&&n()}}else n()},getFile:function(e){var t=this.uploadFiles,i=void 0;return t.every(function(t){return!(i=e.uid===t.uid?t:null)}),i},abort:function(e){this.$refs["upload-inner"].abort(e)},clearFiles:function(){this.uploadFiles=[]},submit:function(){var e=this;this.uploadFiles.filter(function(e){return"ready"===e.status}).forEach(function(t){e.$refs["upload-inner"].upload(t.raw)})},getMigratingConfig:function(){return{props:{"default-file-list":"default-file-list is renamed to file-list.","show-upload-list":"show-upload-list is renamed to show-file-list.","thumbnail-mode":"thumbnail-mode has been deprecated, you can implement the same effect according to this case: http://element.eleme.io/#/zh-CN/component/upload#yong-hu-tou-xiang-shang-chuan"}}}},beforeDestroy:function(){this.uploadFiles.forEach(function(e){e.url&&0===e.url.indexOf("blob:")&&URL.revokeObjectURL(e.url)})},render:function(e){var t=this,i=void 0;this.showFileList&&(i=e(Ll,{attrs:{disabled:this.uploadDisabled,listType:this.listType,files:this.uploadFiles,handlePreview:this.onPreview},on:{remove:this.handleRemove}},[function(e){if(t.$scopedSlots.file)return t.$scopedSlots.file({file:e.file})}]));var n=e("upload",{props:{type:this.type,drag:this.drag,action:this.action,multiple:this.multiple,"before-upload":this.beforeUpload,"with-credentials":this.withCredentials,headers:this.headers,name:this.name,data:this.data,accept:this.accept,fileList:this.uploadFiles,autoUpload:this.autoUpload,listType:this.listType,disabled:this.uploadDisabled,limit:this.limit,"on-exceed":this.onExceed,"on-start":this.handleStart,"on-progress":this.handleProgress,"on-success":this.handleSuccess,"on-error":this.handleError,"on-preview":this.onPreview,"on-remove":this.handleRemove,"http-request":this.httpRequest},ref:"upload-inner"},[this.$slots.trigger||this.$slots.default]);return e("div",["picture-card"===this.listType?i:"",this.$slots.trigger?[n,this.$slots.default]:n,this.$slots.tip,"picture-card"!==this.listType?i:""])}},void 0,void 0,!1,null,null,null);ql.options.__file="packages/upload/src/index.vue";var Yl=ql.exports;Yl.install=function(e){e.component(Yl.name,Yl)};var Kl=Yl,Gl=function(){var e=this.$createElement,t=this._self._c||e;return t("span",{staticClass:"el-spinner"},[t("svg",{staticClass:"el-spinner-inner",style:{width:this.radius/2+"px",height:this.radius/2+"px"},attrs:{viewBox:"0 0 50 50"}},[t("circle",{staticClass:"path",attrs:{cx:"25",cy:"25",r:"20",fill:"none",stroke:this.strokeColor,"stroke-width":this.strokeWidth}})])])};Gl._withStripped=!0;var Ul=r({name:"ElSpinner",props:{type:String,radius:{type:Number,default:100},strokeWidth:{type:Number,default:5},strokeColor:{type:String,default:"#efefef"}}},Gl,[],!1,null,null,null);Ul.options.__file="packages/spinner/src/spinner.vue";var Xl=Ul.exports;Xl.install=function(e){e.component(Xl.name,Xl)};var Jl=Xl,Zl=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-message-fade"},on:{"after-leave":e.handleAfterLeave}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],class:["el-message",e.type&&!e.iconClass?"el-message--"+e.type:"",e.center?"is-center":"",e.showClose?"is-closable":"",e.customClass],style:e.positionStyle,attrs:{role:"alert"},on:{mouseenter:e.clearTimer,mouseleave:e.startTimer}},[e.iconClass?i("i",{class:e.iconClass}):i("i",{class:e.typeClass}),e._t("default",[e.dangerouslyUseHTMLString?i("p",{staticClass:"el-message__content",domProps:{innerHTML:e._s(e.message)}}):i("p",{staticClass:"el-message__content"},[e._v(e._s(e.message))])]),e.showClose?i("i",{staticClass:"el-message__closeBtn el-icon-close",on:{click:e.close}}):e._e()],2)])};Zl._withStripped=!0;var Ql={success:"success",info:"info",warning:"warning",error:"error"},eu=r({data:function(){return{visible:!1,message:"",duration:3e3,type:"info",iconClass:"",customClass:"",onClose:null,showClose:!1,closed:!1,verticalOffset:20,timer:null,dangerouslyUseHTMLString:!1,center:!1}},computed:{typeClass:function(){return this.type&&!this.iconClass?"el-message__icon el-icon-"+Ql[this.type]:""},positionStyle:function(){return{top:this.verticalOffset+"px"}}},watch:{closed:function(e){e&&(this.visible=!1)}},methods:{handleAfterLeave:function(){this.$destroy(!0),this.$el.parentNode.removeChild(this.$el)},close:function(){this.closed=!0,"function"==typeof this.onClose&&this.onClose(this)},clearTimer:function(){clearTimeout(this.timer)},startTimer:function(){var e=this;this.duration>0&&(this.timer=setTimeout(function(){e.closed||e.close()},this.duration))},keydown:function(e){27===e.keyCode&&(this.closed||this.close())}},mounted:function(){this.startTimer(),document.addEventListener("keydown",this.keydown)},beforeDestroy:function(){document.removeEventListener("keydown",this.keydown)}},Zl,[],!1,null,null,null);eu.options.__file="packages/message/src/main.vue";var tu=eu.exports,iu=h.a.extend(tu),nu=void 0,ru=[],su=1,au=function e(t){if(!h.a.prototype.$isServer){"string"==typeof(t=t||{})&&(t={message:t});var i=t.onClose,n="message_"+su++;t.onClose=function(){e.close(n,i)},(nu=new iu({data:t})).id=n,ua(nu.message)&&(nu.$slots.default=[nu.message],nu.message=null),nu.$mount(),document.body.appendChild(nu.$el);var r=t.offset||20;return ru.forEach(function(e){r+=e.$el.offsetHeight+16}),nu.verticalOffset=r,nu.visible=!0,nu.$el.style.zIndex=Se.nextZIndex(),ru.push(nu),nu}};["success","warning","info","error"].forEach(function(e){au[e]=function(t){return"string"==typeof t&&(t={message:t}),t.type=e,au(t)}}),au.close=function(e,t){for(var i=ru.length,n=-1,r=void 0,s=0;s<i;s++)if(e===ru[s].id){r=ru[s].$el.offsetHeight,n=s,"function"==typeof t&&t(ru[s]),ru.splice(s,1);break}if(!(i<=1||-1===n||n>ru.length-1))for(var a=n;a<i-1;a++){var o=ru[a].$el;o.style.top=parseInt(o.style.top,10)-r-16+"px"}},au.closeAll=function(){for(var e=ru.length-1;e>=0;e--)ru[e].close()};var ou=au,lu=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-badge"},[e._t("default"),i("transition",{attrs:{name:"el-zoom-in-center"}},[i("sup",{directives:[{name:"show",rawName:"v-show",value:!e.hidden&&(e.content||0===e.content||e.isDot),expression:"!hidden && (content || content === 0 || isDot)"}],staticClass:"el-badge__content",class:["el-badge__content--"+e.type,{"is-fixed":e.$slots.default,"is-dot":e.isDot}],domProps:{textContent:e._s(e.content)}})])],2)};lu._withStripped=!0;var uu=r({name:"ElBadge",props:{value:[String,Number],max:Number,isDot:Boolean,hidden:Boolean,type:{type:String,validator:function(e){return["primary","success","warning","info","danger"].indexOf(e)>-1}}},computed:{content:function(){if(!this.isDot){var e=this.value,t=this.max;return"number"==typeof e&&"number"==typeof t&&t<e?t+"+":e}}}},lu,[],!1,null,null,null);uu.options.__file="packages/badge/src/main.vue";var cu=uu.exports;cu.install=function(e){e.component(cu.name,cu)};var hu=cu,du=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-card",class:e.shadow?"is-"+e.shadow+"-shadow":"is-always-shadow"},[e.$slots.header||e.header?i("div",{staticClass:"el-card__header"},[e._t("header",[e._v(e._s(e.header))])],2):e._e(),i("div",{staticClass:"el-card__body",style:e.bodyStyle},[e._t("default")],2)])};du._withStripped=!0;var pu=r({name:"ElCard",props:{header:{},bodyStyle:{},shadow:{type:String}}},du,[],!1,null,null,null);pu.options.__file="packages/card/src/main.vue";var fu=pu.exports;fu.install=function(e){e.component(fu.name,fu)};var mu=fu,vu=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-rate",attrs:{role:"slider","aria-valuenow":e.currentValue,"aria-valuetext":e.text,"aria-valuemin":"0","aria-valuemax":e.max,tabindex:"0"},on:{keydown:e.handleKey}},[e._l(e.max,function(t,n){return i("span",{key:n,staticClass:"el-rate__item",style:{cursor:e.rateDisabled?"auto":"pointer"},on:{mousemove:function(i){e.setCurrentValue(t,i)},mouseleave:e.resetCurrentValue,click:function(i){e.selectValue(t)}}},[i("i",{staticClass:"el-rate__icon",class:[e.classes[t-1],{hover:e.hoverIndex===t}],style:e.getIconStyle(t)},[e.showDecimalIcon(t)?i("i",{staticClass:"el-rate__decimal",class:e.decimalIconClass,style:e.decimalStyle}):e._e()])])}),e.showText||e.showScore?i("span",{staticClass:"el-rate__text",style:{color:e.textColor}},[e._v(e._s(e.text))]):e._e()],2)};vu._withStripped=!0;var gu=r({name:"ElRate",mixins:[K],inject:{elForm:{default:""}},data:function(){return{pointerAtLeftHalf:!0,currentValue:this.value,hoverIndex:-1}},props:{value:{type:Number,default:0},lowThreshold:{type:Number,default:2},highThreshold:{type:Number,default:4},max:{type:Number,default:5},colors:{type:[Array,Object],default:function(){return["#F7BA2A","#F7BA2A","#F7BA2A"]}},voidColor:{type:String,default:"#C6D1DE"},disabledVoidColor:{type:String,default:"#EFF2F7"},iconClasses:{type:[Array,Object],default:function(){return["el-icon-star-on","el-icon-star-on","el-icon-star-on"]}},voidIconClass:{type:String,default:"el-icon-star-off"},disabledVoidIconClass:{type:String,default:"el-icon-star-on"},disabled:{type:Boolean,default:!1},allowHalf:{type:Boolean,default:!1},showText:{type:Boolean,default:!1},showScore:{type:Boolean,default:!1},textColor:{type:String,default:"#1f2d3d"},texts:{type:Array,default:function(){return["极差","失望","一般","满意","惊喜"]}},scoreTemplate:{type:String,default:"{value}"}},computed:{text:function(){var e="";return this.showScore?e=this.scoreTemplate.replace(/\{\s*value\s*\}/,this.rateDisabled?this.value:this.currentValue):this.showText&&(e=this.texts[Math.ceil(this.currentValue)-1]),e},decimalStyle:function(){var e="";return this.rateDisabled?e=this.valueDecimal+"%":this.allowHalf&&(e="50%"),{color:this.activeColor,width:e}},valueDecimal:function(){return 100*this.value-100*Math.floor(this.value)},classMap:function(){var e;return Array.isArray(this.iconClasses)?((e={})[this.lowThreshold]=this.iconClasses[0],e[this.highThreshold]={value:this.iconClasses[1],excluded:!0},e[this.max]=this.iconClasses[2],e):this.iconClasses},decimalIconClass:function(){return this.getValueFromMap(this.value,this.classMap)},voidClass:function(){return this.rateDisabled?this.disabledVoidIconClass:this.voidIconClass},activeClass:function(){return this.getValueFromMap(this.currentValue,this.classMap)},colorMap:function(){var e;return Array.isArray(this.colors)?((e={})[this.lowThreshold]=this.colors[0],e[this.highThreshold]={value:this.colors[1],excluded:!0},e[this.max]=this.colors[2],e):this.colors},activeColor:function(){return this.getValueFromMap(this.currentValue,this.colorMap)},classes:function(){var e=[],t=0,i=this.currentValue;for(this.allowHalf&&this.currentValue!==Math.floor(this.currentValue)&&i--;t<i;t++)e.push(this.activeClass);for(;t<this.max;t++)e.push(this.voidClass);return e},rateDisabled:function(){return this.disabled||(this.elForm||{}).disabled}},watch:{value:function(e){this.currentValue=e,this.pointerAtLeftHalf=this.value!==Math.floor(this.value)}},methods:{getMigratingConfig:function(){return{props:{"text-template":"text-template is renamed to score-template."}}},getValueFromMap:function(e,t){var i=Object.keys(t).filter(function(i){var n=t[i];return!!m(n)&&n.excluded?e<i:e<=i}).sort(function(e,t){return e-t}),n=t[i[0]];return m(n)?n.value:n||""},showDecimalIcon:function(e){var t=this.rateDisabled&&this.valueDecimal>0&&e-1<this.value&&e>this.value,i=this.allowHalf&&this.pointerAtLeftHalf&&e-.5<=this.currentValue&&e>this.currentValue;return t||i},getIconStyle:function(e){var t=this.rateDisabled?this.disabledVoidColor:this.voidColor;return{color:e<=this.currentValue?this.activeColor:t}},selectValue:function(e){this.rateDisabled||(this.allowHalf&&this.pointerAtLeftHalf?(this.$emit("input",this.currentValue),this.$emit("change",this.currentValue)):(this.$emit("input",e),this.$emit("change",e)))},handleKey:function(e){if(!this.rateDisabled){var t=this.currentValue,i=e.keyCode;38===i||39===i?(this.allowHalf?t+=.5:t+=1,e.stopPropagation(),e.preventDefault()):37!==i&&40!==i||(this.allowHalf?t-=.5:t-=1,e.stopPropagation(),e.preventDefault()),t=(t=t<0?0:t)>this.max?this.max:t,this.$emit("input",t),this.$emit("change",t)}},setCurrentValue:function(e,t){if(!this.rateDisabled){if(this.allowHalf){var i=t.target;pe(i,"el-rate__item")&&(i=i.querySelector(".el-rate__icon")),pe(i,"el-rate__decimal")&&(i=i.parentNode),this.pointerAtLeftHalf=2*t.offsetX<=i.clientWidth,this.currentValue=this.pointerAtLeftHalf?e-.5:e}else this.currentValue=e;this.hoverIndex=e}},resetCurrentValue:function(){this.rateDisabled||(this.allowHalf&&(this.pointerAtLeftHalf=this.value!==Math.floor(this.value)),this.currentValue=this.value,this.hoverIndex=-1)}},created:function(){this.value||this.$emit("input",0)}},vu,[],!1,null,null,null);gu.options.__file="packages/rate/src/main.vue";var bu=gu.exports;bu.install=function(e){e.component(bu.name,bu)};var yu=bu,wu=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-steps",class:[!this.simple&&"el-steps--"+this.direction,this.simple&&"el-steps--simple"]},[this._t("default")],2)};wu._withStripped=!0;var _u=r({name:"ElSteps",mixins:[K],props:{space:[Number,String],active:Number,direction:{type:String,default:"horizontal"},alignCenter:Boolean,simple:Boolean,finishStatus:{type:String,default:"finish"},processStatus:{type:String,default:"process"}},data:function(){return{steps:[],stepOffset:0}},methods:{getMigratingConfig:function(){return{props:{center:"center is removed."}}}},watch:{active:function(e,t){this.$emit("change",e,t)},steps:function(e){e.forEach(function(e,t){e.index=t})}}},wu,[],!1,null,null,null);_u.options.__file="packages/steps/src/steps.vue";var xu=_u.exports;xu.install=function(e){e.component(xu.name,xu)};var Cu=xu,ku=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-step",class:[!e.isSimple&&"is-"+e.$parent.direction,e.isSimple&&"is-simple",e.isLast&&!e.space&&!e.isCenter&&"is-flex",e.isCenter&&!e.isVertical&&!e.isSimple&&"is-center"],style:e.style},[i("div",{staticClass:"el-step__head",class:"is-"+e.currentStatus},[i("div",{staticClass:"el-step__line",style:e.isLast?"":{marginRight:e.$parent.stepOffset+"px"}},[i("i",{staticClass:"el-step__line-inner",style:e.lineStyle})]),i("div",{staticClass:"el-step__icon",class:"is-"+(e.icon?"icon":"text")},["success"!==e.currentStatus&&"error"!==e.currentStatus?e._t("icon",[e.icon?i("i",{staticClass:"el-step__icon-inner",class:[e.icon]}):e._e(),e.icon||e.isSimple?e._e():i("div",{staticClass:"el-step__icon-inner"},[e._v(e._s(e.index+1))])]):i("i",{staticClass:"el-step__icon-inner is-status",class:["el-icon-"+("success"===e.currentStatus?"check":"close")]})],2)]),i("div",{staticClass:"el-step__main"},[i("div",{ref:"title",staticClass:"el-step__title",class:["is-"+e.currentStatus]},[e._t("title",[e._v(e._s(e.title))])],2),e.isSimple?i("div",{staticClass:"el-step__arrow"}):i("div",{staticClass:"el-step__description",class:["is-"+e.currentStatus]},[e._t("description",[e._v(e._s(e.description))])],2)])])};ku._withStripped=!0;var Su=r({name:"ElStep",props:{title:String,icon:String,description:String,status:String},data:function(){return{index:-1,lineStyle:{},internalStatus:""}},beforeCreate:function(){this.$parent.steps.push(this)},beforeDestroy:function(){var e=this.$parent.steps,t=e.indexOf(this);t>=0&&e.splice(t,1)},computed:{currentStatus:function(){return this.status||this.internalStatus},prevStatus:function(){var e=this.$parent.steps[this.index-1];return e?e.currentStatus:"wait"},isCenter:function(){return this.$parent.alignCenter},isVertical:function(){return"vertical"===this.$parent.direction},isSimple:function(){return this.$parent.simple},isLast:function(){var e=this.$parent;return e.steps[e.steps.length-1]===this},stepsCount:function(){return this.$parent.steps.length},space:function(){var e=this.isSimple,t=this.$parent.space;return e?"":t},style:function(){var e={},t=this.$parent.steps.length,i="number"==typeof this.space?this.space+"px":this.space?this.space:100/(t-(this.isCenter?0:1))+"%";return e.flexBasis=i,this.isVertical?e:(this.isLast?e.maxWidth=100/this.stepsCount+"%":e.marginRight=-this.$parent.stepOffset+"px",e)}},methods:{updateStatus:function(e){var t=this.$parent.$children[this.index-1];e>this.index?this.internalStatus=this.$parent.finishStatus:e===this.index&&"error"!==this.prevStatus?this.internalStatus=this.$parent.processStatus:this.internalStatus="wait",t&&t.calcProgress(this.internalStatus)},calcProgress:function(e){var t=100,i={};i.transitionDelay=150*this.index+"ms",e===this.$parent.processStatus?(this.currentStatus,t=0):"wait"===e&&(t=0,i.transitionDelay=-150*this.index+"ms"),i.borderWidth=t&&!this.isSimple?"1px":0,"vertical"===this.$parent.direction?i.height=t+"%":i.width=t+"%",this.lineStyle=i}},mounted:function(){var e=this,t=this.$watch("index",function(i){e.$watch("$parent.active",e.updateStatus,{immediate:!0}),e.$watch("$parent.processStatus",function(){var t=e.$parent.active;e.updateStatus(t)},{immediate:!0}),t()})}},ku,[],!1,null,null,null);Su.options.__file="packages/steps/src/step.vue";var Du=Su.exports;Du.install=function(e){e.component(Du.name,Du)};var $u=Du,Eu=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{class:e.carouselClasses,on:{mouseenter:function(t){return t.stopPropagation(),e.handleMouseEnter(t)},mouseleave:function(t){return t.stopPropagation(),e.handleMouseLeave(t)}}},[i("div",{staticClass:"el-carousel__container",style:{height:e.height}},[e.arrowDisplay?i("transition",{attrs:{name:"carousel-arrow-left"}},[i("button",{directives:[{name:"show",rawName:"v-show",value:("always"===e.arrow||e.hover)&&(e.loop||e.activeIndex>0),expression:"(arrow === 'always' || hover) && (loop || activeIndex > 0)"}],staticClass:"el-carousel__arrow el-carousel__arrow--left",attrs:{type:"button"},on:{mouseenter:function(t){e.handleButtonEnter("left")},mouseleave:e.handleButtonLeave,click:function(t){t.stopPropagation(),e.throttledArrowClick(e.activeIndex-1)}}},[i("i",{staticClass:"el-icon-arrow-left"})])]):e._e(),e.arrowDisplay?i("transition",{attrs:{name:"carousel-arrow-right"}},[i("button",{directives:[{name:"show",rawName:"v-show",value:("always"===e.arrow||e.hover)&&(e.loop||e.activeIndex<e.items.length-1),expression:"(arrow === 'always' || hover) && (loop || activeIndex < items.length - 1)"}],staticClass:"el-carousel__arrow el-carousel__arrow--right",attrs:{type:"button"},on:{mouseenter:function(t){e.handleButtonEnter("right")},mouseleave:e.handleButtonLeave,click:function(t){t.stopPropagation(),e.throttledArrowClick(e.activeIndex+1)}}},[i("i",{staticClass:"el-icon-arrow-right"})])]):e._e(),e._t("default")],2),"none"!==e.indicatorPosition?i("ul",{class:e.indicatorsClasses},e._l(e.items,function(t,n){return i("li",{key:n,class:["el-carousel__indicator","el-carousel__indicator--"+e.direction,{"is-active":n===e.activeIndex}],on:{mouseenter:function(t){e.throttledIndicatorHover(n)},click:function(t){t.stopPropagation(),e.handleIndicatorClick(n)}}},[i("button",{staticClass:"el-carousel__button"},[e.hasLabel?i("span",[e._v(e._s(t.label))]):e._e()])])}),0):e._e()])};Eu._withStripped=!0;var Tu=i(4),Mu=i.n(Tu),Nu=r({name:"ElCarousel",props:{initialIndex:{type:Number,default:0},height:String,trigger:{type:String,default:"hover"},autoplay:{type:Boolean,default:!0},interval:{type:Number,default:3e3},indicatorPosition:String,indicator:{type:Boolean,default:!0},arrow:{type:String,default:"hover"},type:String,loop:{type:Boolean,default:!0},direction:{type:String,default:"horizontal",validator:function(e){return-1!==["horizontal","vertical"].indexOf(e)}}},data:function(){return{items:[],activeIndex:-1,containerWidth:0,timer:null,hover:!1}},computed:{arrowDisplay:function(){return"never"!==this.arrow&&"vertical"!==this.direction},hasLabel:function(){return this.items.some(function(e){return e.label.toString().length>0})},carouselClasses:function(){var e=["el-carousel","el-carousel--"+this.direction];return"card"===this.type&&e.push("el-carousel--card"),e},indicatorsClasses:function(){var e=["el-carousel__indicators","el-carousel__indicators--"+this.direction];return this.hasLabel&&e.push("el-carousel__indicators--labels"),"outside"!==this.indicatorPosition&&"card"!==this.type||e.push("el-carousel__indicators--outside"),e}},watch:{items:function(e){e.length>0&&this.setActiveItem(this.initialIndex)},activeIndex:function(e,t){this.resetItemPosition(t),t>-1&&this.$emit("change",e,t)},autoplay:function(e){e?this.startTimer():this.pauseTimer()},loop:function(){this.setActiveItem(this.activeIndex)}},methods:{handleMouseEnter:function(){this.hover=!0,this.pauseTimer()},handleMouseLeave:function(){this.hover=!1,this.startTimer()},itemInStage:function(e,t){var i=this.items.length;return t===i-1&&e.inStage&&this.items[0].active||e.inStage&&this.items[t+1]&&this.items[t+1].active?"left":!!(0===t&&e.inStage&&this.items[i-1].active||e.inStage&&this.items[t-1]&&this.items[t-1].active)&&"right"},handleButtonEnter:function(e){var t=this;"vertical"!==this.direction&&this.items.forEach(function(i,n){e===t.itemInStage(i,n)&&(i.hover=!0)})},handleButtonLeave:function(){"vertical"!==this.direction&&this.items.forEach(function(e){e.hover=!1})},updateItems:function(){this.items=this.$children.filter(function(e){return"ElCarouselItem"===e.$options.name})},resetItemPosition:function(e){var t=this;this.items.forEach(function(i,n){i.translateItem(n,t.activeIndex,e)})},playSlides:function(){this.activeIndex<this.items.length-1?this.activeIndex++:this.loop&&(this.activeIndex=0)},pauseTimer:function(){this.timer&&(clearInterval(this.timer),this.timer=null)},startTimer:function(){this.interval<=0||!this.autoplay||this.timer||(this.timer=setInterval(this.playSlides,this.interval))},setActiveItem:function(e){if("string"==typeof e){var t=this.items.filter(function(t){return t.name===e});t.length>0&&(e=this.items.indexOf(t[0]))}if(e=Number(e),isNaN(e)||e!==Math.floor(e))console.warn("[Element Warn][Carousel]index must be an integer.");else{var i=this.items.length,n=this.activeIndex;this.activeIndex=e<0?this.loop?i-1:0:e>=i?this.loop?0:i-1:e,n===this.activeIndex&&this.resetItemPosition(n)}},prev:function(){this.setActiveItem(this.activeIndex-1)},next:function(){this.setActiveItem(this.activeIndex+1)},handleIndicatorClick:function(e){this.activeIndex=e},handleIndicatorHover:function(e){"hover"===this.trigger&&e!==this.activeIndex&&(this.activeIndex=e)}},created:function(){var e=this;this.throttledArrowClick=Mu()(300,!0,function(t){e.setActiveItem(t)}),this.throttledIndicatorHover=Mu()(300,function(t){e.handleIndicatorHover(t)})},mounted:function(){var e=this;this.updateItems(),this.$nextTick(function(){Ye(e.$el,e.resetItemPosition),e.initialIndex<e.items.length&&e.initialIndex>=0&&(e.activeIndex=e.initialIndex),e.startTimer()})},beforeDestroy:function(){this.$el&&Ke(this.$el,this.resetItemPosition),this.pauseTimer()}},Eu,[],!1,null,null,null);Nu.options.__file="packages/carousel/src/main.vue";var Pu=Nu.exports;Pu.install=function(e){e.component(Pu.name,Pu)};var Ou=Pu,Iu=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{directives:[{name:"show",rawName:"v-show",value:e.ready,expression:"ready"}],staticClass:"el-carousel__item",class:{"is-active":e.active,"el-carousel__item--card":"card"===e.$parent.type,"is-in-stage":e.inStage,"is-hover":e.hover,"is-animating":e.animating},style:e.itemStyle,on:{click:e.handleItemClick}},["card"===e.$parent.type?i("div",{directives:[{name:"show",rawName:"v-show",value:!e.active,expression:"!active"}],staticClass:"el-carousel__mask"}):e._e(),e._t("default")],2)};Iu._withStripped=!0;var Au=r({name:"ElCarouselItem",props:{name:String,label:{type:[String,Number],default:""}},data:function(){return{hover:!1,translate:0,scale:1,active:!1,ready:!1,inStage:!1,animating:!1}},methods:{processIndex:function(e,t,i){return 0===t&&e===i-1?-1:t===i-1&&0===e?i:e<t-1&&t-e>=i/2?i+1:e>t+1&&e-t>=i/2?-2:e},calcCardTranslate:function(e,t){var i=this.$parent.$el.offsetWidth;return this.inStage?i*(1.17*(e-t)+1)/4:e<t?-1.83*i/4:3.83*i/4},calcTranslate:function(e,t,i){return this.$parent.$el[i?"offsetHeight":"offsetWidth"]*(e-t)},translateItem:function(e,t,i){var n=this.$parent.type,r=this.parentDirection,s=this.$parent.items.length;if("card"!==n&&void 0!==i&&(this.animating=e===t||e===i),e!==t&&s>2&&this.$parent.loop&&(e=this.processIndex(e,t,s)),"card"===n)"vertical"===r&&console.warn("[Element Warn][Carousel]vertical direction is not supported in card mode"),this.inStage=Math.round(Math.abs(e-t))<=1,this.active=e===t,this.translate=this.calcCardTranslate(e,t),this.scale=this.active?1:.83;else{this.active=e===t;var a="vertical"===r;this.translate=this.calcTranslate(e,t,a)}this.ready=!0},handleItemClick:function(){var e=this.$parent;if(e&&"card"===e.type){var t=e.items.indexOf(this);e.setActiveItem(t)}}},computed:{parentDirection:function(){return this.$parent.direction},itemStyle:function(){return function(e){if("object"!==(void 0===e?"undefined":y(e)))return e;var t=["ms-","webkit-"];return["transform","transition","animation"].forEach(function(i){var n=e[i];i&&n&&t.forEach(function(t){e[t+i]=n})}),e}({transform:("vertical"===this.parentDirection?"translateY":"translateX")+"("+this.translate+"px) scale("+this.scale+")"})}},created:function(){this.$parent&&this.$parent.updateItems()},destroyed:function(){this.$parent&&this.$parent.updateItems()}},Iu,[],!1,null,null,null);Au.options.__file="packages/carousel/src/item.vue";var Fu=Au.exports;Fu.install=function(e){e.component(Fu.name,Fu)};var Lu=Fu,Vu=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-collapse",attrs:{role:"tablist","aria-multiselectable":"true"}},[this._t("default")],2)};Vu._withStripped=!0;var Bu=r({name:"ElCollapse",componentName:"ElCollapse",props:{accordion:Boolean,value:{type:[Array,String,Number],default:function(){return[]}}},data:function(){return{activeNames:[].concat(this.value)}},provide:function(){return{collapse:this}},watch:{value:function(e){this.activeNames=[].concat(e)}},methods:{setActiveNames:function(e){e=[].concat(e);var t=this.accordion?e[0]:e;this.activeNames=e,this.$emit("input",t),this.$emit("change",t)},handleItemClick:function(e){if(this.accordion)this.setActiveNames(!this.activeNames[0]&&0!==this.activeNames[0]||this.activeNames[0]!==e.name?e.name:"");else{var t=this.activeNames.slice(0),i=t.indexOf(e.name);i>-1?t.splice(i,1):t.push(e.name),this.setActiveNames(t)}}},created:function(){this.$on("item-click",this.handleItemClick)}},Vu,[],!1,null,null,null);Bu.options.__file="packages/collapse/src/collapse.vue";var zu=Bu.exports;zu.install=function(e){e.component(zu.name,zu)};var Hu=zu,Ru=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-collapse-item",class:{"is-active":e.isActive,"is-disabled":e.disabled}},[i("div",{attrs:{role:"tab","aria-expanded":e.isActive,"aria-controls":"el-collapse-content-"+e.id,"aria-describedby":"el-collapse-content-"+e.id}},[i("div",{staticClass:"el-collapse-item__header",class:{focusing:e.focusing,"is-active":e.isActive},attrs:{role:"button",id:"el-collapse-head-"+e.id,tabindex:e.disabled?void 0:0},on:{click:e.handleHeaderClick,keyup:function(t){return"button"in t||!e._k(t.keyCode,"space",32,t.key,[" ","Spacebar"])||!e._k(t.keyCode,"enter",13,t.key,"Enter")?(t.stopPropagation(),e.handleEnterClick(t)):null},focus:e.handleFocus,blur:function(t){e.focusing=!1}}},[e._t("title",[e._v(e._s(e.title))]),i("i",{staticClass:"el-collapse-item__arrow el-icon-arrow-right",class:{"is-active":e.isActive}})],2)]),i("el-collapse-transition",[i("div",{directives:[{name:"show",rawName:"v-show",value:e.isActive,expression:"isActive"}],staticClass:"el-collapse-item__wrap",attrs:{role:"tabpanel","aria-hidden":!e.isActive,"aria-labelledby":"el-collapse-head-"+e.id,id:"el-collapse-content-"+e.id}},[i("div",{staticClass:"el-collapse-item__content"},[e._t("default")],2)])])],1)};Ru._withStripped=!0;var Wu=r({name:"ElCollapseItem",componentName:"ElCollapseItem",mixins:[l],components:{ElCollapseTransition:ii},data:function(){return{contentWrapStyle:{height:"auto",display:"block"},contentHeight:0,focusing:!1,isClick:!1,id:D()}},inject:["collapse"],props:{title:String,name:{type:[String,Number],default:function(){return this._uid}},disabled:Boolean},computed:{isActive:function(){return this.collapse.activeNames.indexOf(this.name)>-1}},methods:{handleFocus:function(){var e=this;setTimeout(function(){e.isClick?e.isClick=!1:e.focusing=!0},50)},handleHeaderClick:function(){this.disabled||(this.dispatch("ElCollapse","item-click",this),this.focusing=!1,this.isClick=!0)},handleEnterClick:function(){this.dispatch("ElCollapse","item-click",this)}}},Ru,[],!1,null,null,null);Wu.options.__file="packages/collapse/src/collapse-item.vue";var ju=Wu.exports;ju.install=function(e){e.component(ju.name,ju)};var qu=ju,Yu=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:function(){return e.toggleDropDownVisible(!1)},expression:"() => toggleDropDownVisible(false)"}],ref:"reference",class:["el-cascader",e.realSize&&"el-cascader--"+e.realSize,{"is-disabled":e.isDisabled}],on:{mouseenter:function(t){e.inputHover=!0},mouseleave:function(t){e.inputHover=!1},click:function(){return e.toggleDropDownVisible(!e.readonly||void 0)},keydown:e.handleKeyDown}},[i("el-input",{ref:"input",class:{"is-focus":e.dropDownVisible},attrs:{size:e.realSize,placeholder:e.placeholder,readonly:e.readonly,disabled:e.isDisabled,"validate-event":!1},on:{focus:e.handleFocus,blur:e.handleBlur,input:e.handleInput},model:{value:e.multiple?e.presentText:e.inputValue,callback:function(t){e.multiple?e.presentText:e.inputValue=t},expression:"multiple ? presentText : inputValue"}},[i("template",{slot:"suffix"},[e.clearBtnVisible?i("i",{key:"clear",staticClass:"el-input__icon el-icon-circle-close",on:{click:function(t){return t.stopPropagation(),e.handleClear(t)}}}):i("i",{key:"arrow-down",class:["el-input__icon","el-icon-arrow-down",e.dropDownVisible&&"is-reverse"],on:{click:function(t){t.stopPropagation(),e.toggleDropDownVisible()}}})])],2),e.multiple?i("div",{staticClass:"el-cascader__tags"},[e._l(e.presentTags,function(t,n){return i("el-tag",{key:t.key,attrs:{type:"info",size:e.tagSize,hit:t.hitState,closable:t.closable,"disable-transitions":""},on:{close:function(t){e.deleteTag(n)}}},[i("span",[e._v(e._s(t.text))])])}),e.filterable&&!e.isDisabled?i("input",{directives:[{name:"model",rawName:"v-model.trim",value:e.inputValue,expression:"inputValue",modifiers:{trim:!0}}],staticClass:"el-cascader__search-input",attrs:{type:"text",placeholder:e.presentTags.length?"":e.placeholder},domProps:{value:e.inputValue},on:{input:[function(t){t.target.composing||(e.inputValue=t.target.value.trim())},function(t){return e.handleInput(e.inputValue,t)}],click:function(t){t.stopPropagation(),e.toggleDropDownVisible(!0)},keydown:function(t){return"button"in t||!e._k(t.keyCode,"delete",[8,46],t.key,["Backspace","Delete","Del"])?e.handleDelete(t):null},blur:function(t){e.$forceUpdate()}}}):e._e()],2):e._e(),i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":e.handleDropdownLeave}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.dropDownVisible,expression:"dropDownVisible"}],ref:"popper",class:["el-popper","el-cascader__dropdown",e.popperClass]},[i("el-cascader-panel",{directives:[{name:"show",rawName:"v-show",value:!e.filtering,expression:"!filtering"}],ref:"panel",attrs:{options:e.options,props:e.config,border:!1,"render-label":e.$scopedSlots.default},on:{"expand-change":e.handleExpandChange,close:function(t){e.toggleDropDownVisible(!1)}},model:{value:e.checkedValue,callback:function(t){e.checkedValue=t},expression:"checkedValue"}}),e.filterable?i("el-scrollbar",{directives:[{name:"show",rawName:"v-show",value:e.filtering,expression:"filtering"}],ref:"suggestionPanel",staticClass:"el-cascader__suggestion-panel",attrs:{tag:"ul","view-class":"el-cascader__suggestion-list"},nativeOn:{keydown:function(t){return e.handleSuggestionKeyDown(t)}}},[e.suggestions.length?e._l(e.suggestions,function(t,n){return i("li",{key:t.uid,class:["el-cascader__suggestion-item",t.checked&&"is-checked"],attrs:{tabindex:-1},on:{click:function(t){e.handleSuggestionClick(n)}}},[i("span",[e._v(e._s(t.text))]),t.checked?i("i",{staticClass:"el-icon-check"}):e._e()])}):e._t("empty",[i("li",{staticClass:"el-cascader__empty-text"},[e._v(e._s(e.t("el.cascader.noMatch")))])])],2):e._e()],1)])],1)};Yu._withStripped=!0;var Ku=function(){var e=this.$createElement,t=this._self._c||e;return t("div",{class:["el-cascader-panel",this.border&&"is-bordered"],on:{keydown:this.handleKeyDown}},this._l(this.menus,function(e,i){return t("cascader-menu",{key:i,ref:"menu",refInFor:!0,attrs:{index:i,nodes:e}})}),1)};Ku._withStripped=!0;var Gu=function(e){return e.stopPropagation()},Uu=r({inject:["panel"],components:{ElCheckbox:Vi,ElRadio:Si},props:{node:{required:!0},nodeId:String},computed:{config:function(){return this.panel.config},isLeaf:function(){return this.node.isLeaf},isDisabled:function(){return this.node.isDisabled},checkedValue:function(){return this.panel.checkedValue},isChecked:function(){return this.node.isSameNode(this.checkedValue)},inActivePath:function(){return this.isInPath(this.panel.activePath)},inCheckedPath:function(){var e=this;return!!this.config.checkStrictly&&this.panel.checkedNodePaths.some(function(t){return e.isInPath(t)})},value:function(){return this.node.getValueByOption()}},methods:{handleExpand:function(){var e=this,t=this.panel,i=this.node,n=this.isDisabled,r=this.config,s=r.multiple;!r.checkStrictly&&n||i.loading||(r.lazy&&!i.loaded?t.lazyLoad(i,function(){var t=e.isLeaf;if(t||e.handleExpand(),s){var n=!!t&&i.checked;e.handleMultiCheckChange(n)}}):t.handleExpand(i))},handleCheckChange:function(){var e=this.panel,t=this.value,i=this.node;e.handleCheckChange(t),e.handleExpand(i)},handleMultiCheckChange:function(e){this.node.doCheck(e),this.panel.calculateMultiCheckedValue()},isInPath:function(e){var t=this.node;return(e[t.level-1]||{}).uid===t.uid},renderPrefix:function(e){var t=this.isLeaf,i=this.isChecked,n=this.config,r=n.checkStrictly;return n.multiple?this.renderCheckbox(e):r?this.renderRadio(e):t&&i?this.renderCheckIcon(e):null},renderPostfix:function(e){var t=this.node,i=this.isLeaf;return t.loading?this.renderLoadingIcon(e):i?null:this.renderExpandIcon(e)},renderCheckbox:function(e){var t=this.node,i=this.config,n=this.isDisabled,r={on:{change:this.handleMultiCheckChange},nativeOn:{}};return i.checkStrictly&&(r.nativeOn.click=Gu),e("el-checkbox",Bl()([{attrs:{value:t.checked,indeterminate:t.indeterminate,disabled:n}},r]))},renderRadio:function(e){var t=this.checkedValue,i=this.value,n=this.isDisabled;return I(i,t)&&(i=t),e("el-radio",{attrs:{value:t,label:i,disabled:n},on:{change:this.handleCheckChange},nativeOn:{click:Gu}},[e("span")])},renderCheckIcon:function(e){return e("i",{class:"el-icon-check el-cascader-node__prefix"})},renderLoadingIcon:function(e){return e("i",{class:"el-icon-loading el-cascader-node__postfix"})},renderExpandIcon:function(e){return e("i",{class:"el-icon-arrow-right el-cascader-node__postfix"})},renderContent:function(e){var t=this.panel,i=this.node,n=t.renderLabelFn;return e("span",{class:"el-cascader-node__label"},[(n?n({node:i,data:i.data}):null)||i.label])}},render:function(e){var t=this,i=this.inActivePath,n=this.inCheckedPath,r=this.isChecked,s=this.isLeaf,a=this.isDisabled,o=this.config,l=this.nodeId,u=o.expandTrigger,c=o.checkStrictly,h=o.multiple,d=!c&&a,p={on:{}};return"click"===u?p.on.click=this.handleExpand:(p.on.mouseenter=function(e){t.handleExpand(),t.$emit("expand",e)},p.on.focus=function(e){t.handleExpand(),t.$emit("expand",e)}),!s||a||c||h||(p.on.click=this.handleCheckChange),e("li",Bl()([{attrs:{role:"menuitem",id:l,"aria-expanded":i,tabindex:d?null:-1},class:{"el-cascader-node":!0,"is-selectable":c,"in-active-path":i,"in-checked-path":n,"is-active":r,"is-disabled":d}},p]),[this.renderPrefix(e),this.renderContent(e),this.renderPostfix(e)])}},void 0,void 0,!1,null,null,null);Uu.options.__file="packages/cascader-panel/src/cascader-node.vue";var Xu=r({name:"ElCascaderMenu",mixins:[q],inject:["panel"],components:{ElScrollbar:Ze,CascaderNode:Uu.exports},props:{nodes:{type:Array,required:!0},index:Number},data:function(){return{activeNode:null,hoverTimer:null,id:D()}},computed:{isEmpty:function(){return!this.nodes.length},menuId:function(){return"cascader-menu-"+this.id+"-"+this.index}},methods:{handleExpand:function(e){this.activeNode=e.target},handleMouseMove:function(e){var t=this.activeNode,i=this.hoverTimer,n=this.$refs.hoverZone;if(t&&n)if(t.contains(e.target)){clearTimeout(i);var r=this.$el.getBoundingClientRect().left,s=e.clientX-r,a=this.$el,o=a.offsetWidth,l=a.offsetHeight,u=t.offsetTop,c=u+t.offsetHeight;n.innerHTML='\n          <path style="pointer-events: auto;" fill="transparent" d="M'+s+" "+u+" L"+o+" 0 V"+u+' Z" />\n          <path style="pointer-events: auto;" fill="transparent" d="M'+s+" "+c+" L"+o+" "+l+" V"+c+' Z" />\n        '}else i||(this.hoverTimer=setTimeout(this.clearHoverZone,this.panel.config.hoverThreshold))},clearHoverZone:function(){var e=this.$refs.hoverZone;e&&(e.innerHTML="")},renderEmptyText:function(e){return e("div",{class:"el-cascader-menu__empty-text"},[this.t("el.cascader.noData")])},renderNodeList:function(e){var t=this.menuId,i=this.panel.isHoverMenu,n={on:{}};i&&(n.on.expand=this.handleExpand);var r=this.nodes.map(function(i,r){var s=i.hasChildren;return e("cascader-node",Bl()([{key:i.uid,attrs:{node:i,"node-id":t+"-"+r,"aria-haspopup":s,"aria-owns":s?t:null}},n]))});return[].concat(r,[i?e("svg",{ref:"hoverZone",class:"el-cascader-menu__hover-zone"}):null])}},render:function(e){var t=this.isEmpty,i=this.menuId,n={nativeOn:{}};return this.panel.isHoverMenu&&(n.nativeOn.mousemove=this.handleMouseMove),e("el-scrollbar",Bl()([{attrs:{tag:"ul",role:"menu",id:i,"wrap-class":"el-cascader-menu__wrap","view-class":{"el-cascader-menu__list":!0,"is-empty":t}},class:"el-cascader-menu"},n]),[t?this.renderEmptyText(e):this.renderNodeList(e)])}},void 0,void 0,!1,null,null,null);Xu.options.__file="packages/cascader-panel/src/cascader-menu.vue";var Ju=Xu.exports,Zu=function(){function e(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,i,n){return i&&e(t.prototype,i),n&&e(t,n),t}}();var Qu=0,ec=function(){function e(t,i,n){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.data=t,this.config=i,this.parent=n||null,this.level=this.parent?this.parent.level+1:1,this.uid=Qu++,this.initState(),this.initChildren()}return e.prototype.initState=function(){var e=this.config,t=e.value,i=e.label;this.value=this.data[t],this.label=this.data[i],this.pathNodes=this.calculatePathNodes(),this.path=this.pathNodes.map(function(e){return e.value}),this.pathLabels=this.pathNodes.map(function(e){return e.label}),this.loading=!1,this.loaded=!1},e.prototype.initChildren=function(){var t=this,i=this.config,n=i.children,r=this.data[n];this.hasChildren=Array.isArray(r),this.children=(r||[]).map(function(n){return new e(n,i,t)})},e.prototype.calculatePathNodes=function(){for(var e=[this],t=this.parent;t;)e.unshift(t),t=t.parent;return e},e.prototype.getPath=function(){return this.path},e.prototype.getValue=function(){return this.value},e.prototype.getValueByOption=function(){return this.config.emitPath?this.getPath():this.getValue()},e.prototype.getText=function(e,t){return e?this.pathLabels.join(t):this.label},e.prototype.isSameNode=function(e){var t=this.getValueByOption();return this.config.multiple&&Array.isArray(e)?e.some(function(e){return I(e,t)}):I(e,t)},e.prototype.broadcast=function(e){for(var t=arguments.length,i=Array(t>1?t-1:0),n=1;n<t;n++)i[n-1]=arguments[n];var r="onParent"+P(e);this.children.forEach(function(t){t&&(t.broadcast.apply(t,[e].concat(i)),t[r]&&t[r].apply(t,i))})},e.prototype.emit=function(e){var t=this.parent,i="onChild"+P(e);if(t){for(var n=arguments.length,r=Array(n>1?n-1:0),s=1;s<n;s++)r[s-1]=arguments[s];t[i]&&t[i].apply(t,r),t.emit.apply(t,[e].concat(r))}},e.prototype.onParentCheck=function(e){this.isDisabled||this.setCheckState(e)},e.prototype.onChildCheck=function(){var e=this.children.filter(function(e){return!e.isDisabled}),t=!!e.length&&e.every(function(e){return e.checked});this.setCheckState(t)},e.prototype.setCheckState=function(e){var t=this.children.length,i=this.children.reduce(function(e,t){return e+(t.checked?1:t.indeterminate?.5:0)},0);this.checked=e,this.indeterminate=i!==t&&i>0},e.prototype.syncCheckState=function(e){var t=this.getValueByOption(),i=this.isSameNode(e,t);this.doCheck(i)},e.prototype.doCheck=function(e){this.checked!==e&&(this.config.checkStrictly?this.checked=e:(this.broadcast("check",e),this.setCheckState(e),this.emit("check")))},Zu(e,[{key:"isDisabled",get:function(){var e=this.data,t=this.parent,i=this.config,n=i.disabled,r=i.checkStrictly;return e[n]||!r&&t&&t.isDisabled}},{key:"isLeaf",get:function(){var e=this.data,t=this.loaded,i=this.hasChildren,n=this.children,r=this.config,s=r.lazy,a=r.leaf;if(s){var o=Q(e[a])?e[a]:!!t&&!n.length;return this.hasChildren=!o,o}return!i}}]),e}();var tc=function(){function e(t,i){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.config=i,this.initNodes(t)}return e.prototype.initNodes=function(e){var t=this;e=M(e),this.nodes=e.map(function(e){return new ec(e,t.config)}),this.flattedNodes=this.getFlattedNodes(!1,!1),this.leafNodes=this.getFlattedNodes(!0,!1)},e.prototype.appendNode=function(e,t){var i=new ec(e,this.config,t);(t?t.children:this.nodes).push(i)},e.prototype.appendNodes=function(e,t){var i=this;(e=M(e)).forEach(function(e){return i.appendNode(e,t)})},e.prototype.getNodes=function(){return this.nodes},e.prototype.getFlattedNodes=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=e?this.leafNodes:this.flattedNodes;return t?i:function e(t,i){return t.reduce(function(t,n){return n.isLeaf?t.push(n):(!i&&t.push(n),t=t.concat(e(n.children,i))),t},[])}(this.nodes,e)},e.prototype.getNodeByValue=function(e){if(e){var t=this.getFlattedNodes(!1,!this.config.lazy).filter(function(t){return $(t.path,e)||t.value===e});return t&&t.length?t[0]:null}return null},e}(),ic=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var i=arguments[t];for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n])}return e},nc=qt.keys,rc={expandTrigger:"click",multiple:!1,checkStrictly:!1,emitPath:!0,lazy:!1,lazyLoad:_,value:"value",label:"label",children:"children",leaf:"leaf",disabled:"disabled",hoverThreshold:500},sc=function(e){return!e.getAttribute("aria-owns")},ac=function(e,t){var i=e.parentNode;if(i){var n=i.querySelectorAll('.el-cascader-node[tabindex="-1"]');return n[Array.prototype.indexOf.call(n,e)+t]||null}return null},oc=function(e,t){if(e){var i=e.id.split("-");return Number(i[i.length-2])}},lc=function(e){e&&(e.focus(),!sc(e)&&e.click())},uc=r({name:"ElCascaderPanel",components:{CascaderMenu:Ju},props:{value:{},options:Array,props:Object,border:{type:Boolean,default:!0},renderLabel:Function},provide:function(){return{panel:this}},data:function(){return{checkedValue:null,checkedNodePaths:[],store:[],menus:[],activePath:[],loadCount:0}},computed:{config:function(){return Z(ic({},rc),this.props||{})},multiple:function(){return this.config.multiple},checkStrictly:function(){return this.config.checkStrictly},leafOnly:function(){return!this.checkStrictly},isHoverMenu:function(){return"hover"===this.config.expandTrigger},renderLabelFn:function(){return this.renderLabel||this.$scopedSlots.default}},watch:{options:{handler:function(){this.initStore()},immediate:!0,deep:!0},value:function(){this.syncCheckedValue(),this.checkStrictly&&this.calculateCheckedNodePaths()},checkedValue:function(e){I(e,this.value)||(this.checkStrictly&&this.calculateCheckedNodePaths(),this.$emit("input",e),this.$emit("change",e))}},mounted:function(){A(this.value)||this.syncCheckedValue()},methods:{initStore:function(){var e=this.config,t=this.options;e.lazy&&A(t)?this.lazyLoad():(this.store=new tc(t,e),this.menus=[this.store.getNodes()],this.syncMenuState())},syncCheckedValue:function(){var e=this.value,t=this.checkedValue;I(e,t)||(this.activePath=[],this.checkedValue=e,this.syncMenuState())},syncMenuState:function(){var e=this.multiple,t=this.checkStrictly;this.syncActivePath(),e&&this.syncMultiCheckState(),t&&this.calculateCheckedNodePaths(),this.$nextTick(this.scrollIntoView)},syncMultiCheckState:function(){var e=this;this.getFlattedNodes(this.leafOnly).forEach(function(t){t.syncCheckState(e.checkedValue)})},syncActivePath:function(){var e=this,t=this.store,i=this.multiple,n=this.activePath,r=this.checkedValue;if(A(n))if(A(r))this.activePath=[],this.menus=[t.getNodes()];else{var s=i?r[0]:r,a=((this.getNodeByValue(s)||{}).pathNodes||[]).slice(0,-1);this.expandNodes(a)}else{var o=n.map(function(t){return e.getNodeByValue(t.getValue())});this.expandNodes(o)}},expandNodes:function(e){var t=this;e.forEach(function(e){return t.handleExpand(e,!0)})},calculateCheckedNodePaths:function(){var e=this,t=this.checkedValue,i=this.multiple?M(t):[t];this.checkedNodePaths=i.map(function(t){var i=e.getNodeByValue(t);return i?i.pathNodes:[]})},handleKeyDown:function(e){var t=e.target;switch(e.keyCode){case nc.up:var i=ac(t,-1);lc(i);break;case nc.down:var n=ac(t,1);lc(n);break;case nc.left:var r=this.$refs.menu[oc(t)-1];if(r){var s=r.$el.querySelector('.el-cascader-node[aria-expanded="true"]');lc(s)}break;case nc.right:var a=this.$refs.menu[oc(t)+1];if(a){var o=a.$el.querySelector('.el-cascader-node[tabindex="-1"]');lc(o)}break;case nc.enter:!function(e){if(e){var t=e.querySelector("input");t?t.click():sc(e)&&e.click()}}(t);break;case nc.esc:case nc.tab:this.$emit("close");break;default:return}},handleExpand:function(e,t){var i=this.activePath,n=e.level,r=i.slice(0,n-1),s=this.menus.slice(0,n);if(e.isLeaf||(r.push(e),s.push(e.children)),this.activePath=r,this.menus=s,!t){var a=r.map(function(e){return e.getValue()}),o=i.map(function(e){return e.getValue()});$(a,o)||(this.$emit("active-item-change",a),this.$emit("expand-change",a))}},handleCheckChange:function(e){this.checkedValue=e},lazyLoad:function(e,t){var i=this,n=this.config;e||(e=e||{root:!0,level:0},this.store=new tc([],n),this.menus=[this.store.getNodes()]),e.loading=!0;n.lazyLoad(e,function(n){var r=e.root?null:e;if(n&&n.length&&i.store.appendNodes(n,r),e.loading=!1,e.loaded=!0,Array.isArray(i.checkedValue)){var s=i.checkedValue[i.loadCount++],a=i.config.value,o=i.config.leaf;if(Array.isArray(n)&&n.filter(function(e){return e[a]===s}).length>0){var l=i.store.getNodeByValue(s);l.data[o]||i.lazyLoad(l,function(){i.handleExpand(l)}),i.loadCount===i.checkedValue.length&&i.$parent.computePresentText()}}t&&t(n)})},calculateMultiCheckedValue:function(){this.checkedValue=this.getCheckedNodes(this.leafOnly).map(function(e){return e.getValueByOption()})},scrollIntoView:function(){this.$isServer||(this.$refs.menu||[]).forEach(function(e){var t=e.$el;t&&ot(t.querySelector(".el-scrollbar__wrap"),t.querySelector(".el-cascader-node.is-active")||t.querySelector(".el-cascader-node.in-active-path"))})},getNodeByValue:function(e){return this.store.getNodeByValue(e)},getFlattedNodes:function(e){var t=!this.config.lazy;return this.store.getFlattedNodes(e,t)},getCheckedNodes:function(e){var t=this.checkedValue;return this.multiple?this.getFlattedNodes(e).filter(function(e){return e.checked}):A(t)?[]:[this.getNodeByValue(t)]},clearCheckedNodes:function(){var e=this.config,t=this.leafOnly,i=e.multiple,n=e.emitPath;i?(this.getCheckedNodes(t).filter(function(e){return!e.isDisabled}).forEach(function(e){return e.doCheck(!1)}),this.calculateMultiCheckedValue()):this.checkedValue=n?[]:null}}},Ku,[],!1,null,null,null);uc.options.__file="packages/cascader-panel/src/cascader-panel.vue";var cc=uc.exports;cc.install=function(e){e.component(cc.name,cc)};var hc=cc,dc=qt.keys,pc={expandTrigger:{newProp:"expandTrigger",type:String},changeOnSelect:{newProp:"checkStrictly",type:Boolean},hoverThreshold:{newProp:"hoverThreshold",type:Number}},fc={props:{placement:{type:String,default:"bottom-start"},appendToBody:Oe.props.appendToBody,visibleArrow:{type:Boolean,default:!0},arrowOffset:Oe.props.arrowOffset,offset:Oe.props.offset,boundariesPadding:Oe.props.boundariesPadding,popperOptions:Oe.props.popperOptions},methods:Oe.methods,data:Oe.data,beforeDestroy:Oe.beforeDestroy},mc={medium:36,small:32,mini:28},vc=r({name:"ElCascader",directives:{Clickoutside:at},mixins:[fc,l,q,K],inject:{elForm:{default:""},elFormItem:{default:""}},components:{ElInput:ne,ElTag:Re,ElScrollbar:Ze,ElCascaderPanel:hc},props:{value:{},options:Array,props:Object,size:String,placeholder:{type:String,default:function(){return W("el.cascader.placeholder")}},disabled:Boolean,clearable:Boolean,filterable:Boolean,filterMethod:Function,separator:{type:String,default:" / "},showAllLevels:{type:Boolean,default:!0},collapseTags:Boolean,debounce:{type:Number,default:300},beforeFilter:{type:Function,default:function(){return function(){}}},popperClass:String},data:function(){return{dropDownVisible:!1,checkedValue:this.value||null,inputHover:!1,inputValue:null,presentText:null,presentTags:[],checkedNodes:[],filtering:!1,suggestions:[],inputInitialHeight:0,pressDeleteCount:0}},computed:{realSize:function(){var e=(this.elFormItem||{}).elFormItemSize;return this.size||e||(this.$ELEMENT||{}).size},tagSize:function(){return["small","mini"].indexOf(this.realSize)>-1?"mini":"small"},isDisabled:function(){return this.disabled||(this.elForm||{}).disabled},config:function(){var e=this.props||{},t=this.$attrs;return Object.keys(pc).forEach(function(i){var n=pc[i],r=n.newProp,s=n.type,a=t[i]||t[N(i)];Q(i)&&!Q(e[r])&&(s===Boolean&&""===a&&(a=!0),e[r]=a)}),e},multiple:function(){return this.config.multiple},leafOnly:function(){return!this.config.checkStrictly},readonly:function(){return!this.filterable||this.multiple},clearBtnVisible:function(){return!(!this.clearable||this.isDisabled||this.filtering||!this.inputHover)&&(this.multiple?!!this.checkedNodes.filter(function(e){return!e.isDisabled}).length:!!this.presentText)},panel:function(){return this.$refs.panel}},watch:{disabled:function(){this.computePresentContent()},value:function(e){I(e,this.checkedValue)||(this.checkedValue=e,this.computePresentContent())},checkedValue:function(e){var t=this.value,i=this.dropDownVisible,n=this.config,r=n.checkStrictly,s=n.multiple;I(e,t)&&!b(t)||(this.computePresentContent(),s||r||!i||this.toggleDropDownVisible(!1),this.$emit("input",e),this.$emit("change",e),this.dispatch("ElFormItem","el.form.change",[e]))},options:{handler:function(){this.$nextTick(this.computePresentContent)},deep:!0},presentText:function(e){this.inputValue=e},presentTags:function(e,t){this.multiple&&(e.length||t.length)&&this.$nextTick(this.updateStyle)},filtering:function(e){this.$nextTick(this.updatePopper)}},mounted:function(){var e=this,t=this.$refs.input;t&&t.$el&&(this.inputInitialHeight=t.$el.offsetHeight||mc[this.realSize]||40),A(this.value)||this.computePresentContent(),this.filterHandler=et()(this.debounce,function(){var t=e.inputValue;if(t){var i=e.beforeFilter(t);i&&i.then?i.then(e.getSuggestions):!1!==i?e.getSuggestions():e.filtering=!1}else e.filtering=!1}),Ye(this.$el,this.updateStyle)},beforeDestroy:function(){Ke(this.$el,this.updateStyle)},methods:{getMigratingConfig:function(){return{props:{"expand-trigger":"expand-trigger is removed, use `props.expandTrigger` instead.","change-on-select":"change-on-select is removed, use `props.checkStrictly` instead.","hover-threshold":"hover-threshold is removed, use `props.hoverThreshold` instead"},events:{"active-item-change":"active-item-change is renamed to expand-change"}}},toggleDropDownVisible:function(e){var t=this;if(!this.isDisabled){var i=this.dropDownVisible,n=this.$refs.input;(e=Q(e)?e:!i)!==i&&(this.dropDownVisible=e,e&&this.$nextTick(function(){t.updatePopper(),t.panel.scrollIntoView()}),n.$refs.input.setAttribute("aria-expanded",e),this.$emit("visible-change",e))}},handleDropdownLeave:function(){this.filtering=!1,this.inputValue=this.presentText},handleKeyDown:function(e){switch(e.keyCode){case dc.enter:this.toggleDropDownVisible();break;case dc.down:this.toggleDropDownVisible(!0),this.focusFirstNode(),e.preventDefault();break;case dc.esc:case dc.tab:this.toggleDropDownVisible(!1)}},handleFocus:function(e){this.$emit("focus",e)},handleBlur:function(e){this.$emit("blur",e)},handleInput:function(e,t){!this.dropDownVisible&&this.toggleDropDownVisible(!0),t&&t.isComposing||(e?this.filterHandler():this.filtering=!1)},handleClear:function(){this.presentText="",this.panel.clearCheckedNodes()},handleExpandChange:function(e){this.$nextTick(this.updatePopper.bind(this)),this.$emit("expand-change",e),this.$emit("active-item-change",e)},focusFirstNode:function(){var e=this;this.$nextTick(function(){var t=e.filtering,i=e.$refs,n=i.popper,r=i.suggestionPanel,s=null;t&&r?s=r.$el.querySelector(".el-cascader__suggestion-item"):s=n.querySelector(".el-cascader-menu").querySelector('.el-cascader-node[tabindex="-1"]');s&&(s.focus(),!t&&s.click())})},computePresentContent:function(){var e=this;this.$nextTick(function(){e.config.multiple?(e.computePresentTags(),e.presentText=e.presentTags.length?" ":null):e.computePresentText()})},computePresentText:function(){var e=this.checkedValue,t=this.config;if(!A(e)){var i=this.panel.getNodeByValue(e);if(i&&(t.checkStrictly||i.isLeaf))return void(this.presentText=i.getText(this.showAllLevels,this.separator))}this.presentText=null},computePresentTags:function(){var e=this.isDisabled,t=this.leafOnly,i=this.showAllLevels,n=this.separator,r=this.collapseTags,s=this.getCheckedNodes(t),a=[],o=function(t){return{node:t,key:t.uid,text:t.getText(i,n),hitState:!1,closable:!e&&!t.isDisabled}};if(s.length){var l=s[0],u=s.slice(1),c=u.length;a.push(o(l)),c&&(r?a.push({key:-1,text:"+ "+c,closable:!1}):u.forEach(function(e){return a.push(o(e))}))}this.checkedNodes=s,this.presentTags=a},getSuggestions:function(){var e=this,t=this.filterMethod;g(t)||(t=function(e,t){return e.text.includes(t)});var i=this.panel.getFlattedNodes(this.leafOnly).filter(function(i){return!i.isDisabled&&(i.text=i.getText(e.showAllLevels,e.separator)||"",t(i,e.inputValue))});this.multiple?this.presentTags.forEach(function(e){e.hitState=!1}):i.forEach(function(t){t.checked=I(e.checkedValue,t.getValueByOption())}),this.filtering=!0,this.suggestions=i,this.$nextTick(this.updatePopper)},handleSuggestionKeyDown:function(e){var t=e.keyCode,i=e.target;switch(t){case dc.enter:i.click();break;case dc.up:var n=i.previousElementSibling;n&&n.focus();break;case dc.down:var r=i.nextElementSibling;r&&r.focus();break;case dc.esc:case dc.tab:this.toggleDropDownVisible(!1)}},handleDelete:function(){var e=this.inputValue,t=this.pressDeleteCount,i=this.presentTags,n=i.length-1,r=i[n];this.pressDeleteCount=e?0:t+1,r&&this.pressDeleteCount&&(r.hitState?this.deleteTag(n):r.hitState=!0)},handleSuggestionClick:function(e){var t=this.multiple,i=this.suggestions[e];if(t){var n=i.checked;i.doCheck(!n),this.panel.calculateMultiCheckedValue()}else this.checkedValue=i.getValueByOption(),this.toggleDropDownVisible(!1)},deleteTag:function(e){var t=this.checkedValue,i=t[e];this.checkedValue=t.filter(function(t,i){return i!==e}),this.$emit("remove-tag",i)},updateStyle:function(){var e=this.$el,t=this.inputInitialHeight;if(!this.$isServer&&e){var i=this.$refs.suggestionPanel,n=e.querySelector(".el-input__inner");if(n){var r=e.querySelector(".el-cascader__tags"),s=null;if(i&&(s=i.$el))s.querySelector(".el-cascader__suggestion-list").style.minWidth=n.offsetWidth+"px";if(r){var a=r.offsetHeight,o=Math.max(a+6,t)+"px";n.style.height=o,this.updatePopper()}}}},getCheckedNodes:function(e){return this.panel.getCheckedNodes(e)}}},Yu,[],!1,null,null,null);vc.options.__file="packages/cascader/src/cascader.vue";var gc=vc.exports;gc.install=function(e){e.component(gc.name,gc)};var bc=gc,yc=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.hide,expression:"hide"}],class:["el-color-picker",e.colorDisabled?"is-disabled":"",e.colorSize?"el-color-picker--"+e.colorSize:""]},[e.colorDisabled?i("div",{staticClass:"el-color-picker__mask"}):e._e(),i("div",{staticClass:"el-color-picker__trigger",on:{click:e.handleTrigger}},[i("span",{staticClass:"el-color-picker__color",class:{"is-alpha":e.showAlpha}},[i("span",{staticClass:"el-color-picker__color-inner",style:{backgroundColor:e.displayedColor}}),e.value||e.showPanelColor?e._e():i("span",{staticClass:"el-color-picker__empty el-icon-close"})]),i("span",{directives:[{name:"show",rawName:"v-show",value:e.value||e.showPanelColor,expression:"value || showPanelColor"}],staticClass:"el-color-picker__icon el-icon-arrow-down"})]),i("picker-dropdown",{ref:"dropdown",class:["el-color-picker__panel",e.popperClass||""],attrs:{color:e.color,"show-alpha":e.showAlpha,predefine:e.predefine},on:{pick:e.confirmValue,clear:e.clearValue},model:{value:e.showPicker,callback:function(t){e.showPicker=t},expression:"showPicker"}})],1)};yc._withStripped=!0;var wc="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};var _c=function(e,t,i){return[e,t*i/((e=(2-t)*i)<1?e:2-e)||0,e/2]},xc=function(e,t){var i;"string"==typeof(i=e)&&-1!==i.indexOf(".")&&1===parseFloat(i)&&(e="100%");var n=function(e){return"string"==typeof e&&-1!==e.indexOf("%")}(e);return e=Math.min(t,Math.max(0,parseFloat(e))),n&&(e=parseInt(e*t,10)/100),Math.abs(e-t)<1e-6?1:e%t/parseFloat(t)},Cc={10:"A",11:"B",12:"C",13:"D",14:"E",15:"F"},kc={A:10,B:11,C:12,D:13,E:14,F:15},Sc=function(e){return 2===e.length?16*(kc[e[0].toUpperCase()]||+e[0])+(kc[e[1].toUpperCase()]||+e[1]):kc[e[1].toUpperCase()]||+e[1]},Dc=function(e,t,i){e=xc(e,255),t=xc(t,255),i=xc(i,255);var n,r=Math.max(e,t,i),s=Math.min(e,t,i),a=void 0,o=r,l=r-s;if(n=0===r?0:l/r,r===s)a=0;else{switch(r){case e:a=(t-i)/l+(t<i?6:0);break;case t:a=(i-e)/l+2;break;case i:a=(e-t)/l+4}a/=6}return{h:360*a,s:100*n,v:100*o}},$c=function(e,t,i){e=6*xc(e,360),t=xc(t,100),i=xc(i,100);var n=Math.floor(e),r=e-n,s=i*(1-t),a=i*(1-r*t),o=i*(1-(1-r)*t),l=n%6,u=[i,a,s,s,o,i][l],c=[o,i,i,a,s,s][l],h=[s,s,o,i,i,a][l];return{r:Math.round(255*u),g:Math.round(255*c),b:Math.round(255*h)}},Ec=function(){function e(t){for(var i in function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this._hue=0,this._saturation=100,this._value=100,this._alpha=100,this.enableAlpha=!1,this.format="hex",this.value="",t=t||{})t.hasOwnProperty(i)&&(this[i]=t[i]);this.doOnChange()}return e.prototype.set=function(e,t){if(1!==arguments.length||"object"!==(void 0===e?"undefined":wc(e)))this["_"+e]=t,this.doOnChange();else for(var i in e)e.hasOwnProperty(i)&&this.set(i,e[i])},e.prototype.get=function(e){return this["_"+e]},e.prototype.toRgb=function(){return $c(this._hue,this._saturation,this._value)},e.prototype.fromString=function(e){var t=this;if(!e)return this._hue=0,this._saturation=100,this._value=100,void this.doOnChange();var i=function(e,i,n){t._hue=Math.max(0,Math.min(360,e)),t._saturation=Math.max(0,Math.min(100,i)),t._value=Math.max(0,Math.min(100,n)),t.doOnChange()};if(-1!==e.indexOf("hsl")){var n=e.replace(/hsla|hsl|\(|\)/gm,"").split(/\s|,/g).filter(function(e){return""!==e}).map(function(e,t){return t>2?parseFloat(e):parseInt(e,10)});if(4===n.length?this._alpha=Math.floor(100*parseFloat(n[3])):3===n.length&&(this._alpha=100),n.length>=3){var r=function(e,t,i){i/=100;var n=t/=100,r=Math.max(i,.01);return t*=(i*=2)<=1?i:2-i,n*=r<=1?r:2-r,{h:e,s:100*(0===i?2*n/(r+n):2*t/(i+t)),v:(i+t)/2*100}}(n[0],n[1],n[2]);i(r.h,r.s,r.v)}}else if(-1!==e.indexOf("hsv")){var s=e.replace(/hsva|hsv|\(|\)/gm,"").split(/\s|,/g).filter(function(e){return""!==e}).map(function(e,t){return t>2?parseFloat(e):parseInt(e,10)});4===s.length?this._alpha=Math.floor(100*parseFloat(s[3])):3===s.length&&(this._alpha=100),s.length>=3&&i(s[0],s[1],s[2])}else if(-1!==e.indexOf("rgb")){var a=e.replace(/rgba|rgb|\(|\)/gm,"").split(/\s|,/g).filter(function(e){return""!==e}).map(function(e,t){return t>2?parseFloat(e):parseInt(e,10)});if(4===a.length?this._alpha=Math.floor(100*parseFloat(a[3])):3===a.length&&(this._alpha=100),a.length>=3){var o=Dc(a[0],a[1],a[2]);i(o.h,o.s,o.v)}}else if(-1!==e.indexOf("#")){var l=e.replace("#","").trim();if(!/^(?:[0-9a-fA-F]{3}){1,2}|[0-9a-fA-F]{8}$/.test(l))return;var u=void 0,c=void 0,h=void 0;3===l.length?(u=Sc(l[0]+l[0]),c=Sc(l[1]+l[1]),h=Sc(l[2]+l[2])):6!==l.length&&8!==l.length||(u=Sc(l.substring(0,2)),c=Sc(l.substring(2,4)),h=Sc(l.substring(4,6))),8===l.length?this._alpha=Math.floor(Sc(l.substring(6))/255*100):3!==l.length&&6!==l.length||(this._alpha=100);var d=Dc(u,c,h);i(d.h,d.s,d.v)}},e.prototype.compare=function(e){return Math.abs(e._hue-this._hue)<2&&Math.abs(e._saturation-this._saturation)<1&&Math.abs(e._value-this._value)<1&&Math.abs(e._alpha-this._alpha)<1},e.prototype.doOnChange=function(){var e=this._hue,t=this._saturation,i=this._value,n=this._alpha,r=this.format;if(this.enableAlpha)switch(r){case"hsl":var s=_c(e,t/100,i/100);this.value="hsla("+e+", "+Math.round(100*s[1])+"%, "+Math.round(100*s[2])+"%, "+n/100+")";break;case"hsv":this.value="hsva("+e+", "+Math.round(t)+"%, "+Math.round(i)+"%, "+n/100+")";break;default:var a=$c(e,t,i),o=a.r,l=a.g,u=a.b;this.value="rgba("+o+", "+l+", "+u+", "+n/100+")"}else switch(r){case"hsl":var c=_c(e,t/100,i/100);this.value="hsl("+e+", "+Math.round(100*c[1])+"%, "+Math.round(100*c[2])+"%)";break;case"hsv":this.value="hsv("+e+", "+Math.round(t)+"%, "+Math.round(i)+"%)";break;case"rgb":var h=$c(e,t,i),d=h.r,p=h.g,f=h.b;this.value="rgb("+d+", "+p+", "+f+")";break;default:this.value=function(e){var t=e.r,i=e.g,n=e.b,r=function(e){e=Math.min(Math.round(e),255);var t=Math.floor(e/16),i=e%16;return""+(Cc[t]||t)+(Cc[i]||i)};return isNaN(t)||isNaN(i)||isNaN(n)?"":"#"+r(t)+r(i)+r(n)}($c(e,t,i))}},e}(),Tc=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":e.doDestroy}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.showPopper,expression:"showPopper"}],staticClass:"el-color-dropdown"},[i("div",{staticClass:"el-color-dropdown__main-wrapper"},[i("hue-slider",{ref:"hue",staticStyle:{float:"right"},attrs:{color:e.color,vertical:""}}),i("sv-panel",{ref:"sl",attrs:{color:e.color}})],1),e.showAlpha?i("alpha-slider",{ref:"alpha",attrs:{color:e.color}}):e._e(),e.predefine?i("predefine",{attrs:{color:e.color,colors:e.predefine}}):e._e(),i("div",{staticClass:"el-color-dropdown__btns"},[i("span",{staticClass:"el-color-dropdown__value"},[i("el-input",{attrs:{"validate-event":!1,size:"mini"},on:{blur:e.handleConfirm},nativeOn:{keyup:function(t){return"button"in t||!e._k(t.keyCode,"enter",13,t.key,"Enter")?e.handleConfirm(t):null}},model:{value:e.customInput,callback:function(t){e.customInput=t},expression:"customInput"}})],1),i("el-button",{staticClass:"el-color-dropdown__link-btn",attrs:{size:"mini",type:"text"},on:{click:function(t){e.$emit("clear")}}},[e._v("\n        "+e._s(e.t("el.colorpicker.clear"))+"\n      ")]),i("el-button",{staticClass:"el-color-dropdown__btn",attrs:{plain:"",size:"mini"},on:{click:e.confirmValue}},[e._v("\n        "+e._s(e.t("el.colorpicker.confirm"))+"\n      ")])],1)],1)])};Tc._withStripped=!0;var Mc=function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticClass:"el-color-svpanel",style:{backgroundColor:this.background}},[t("div",{staticClass:"el-color-svpanel__white"}),t("div",{staticClass:"el-color-svpanel__black"}),t("div",{staticClass:"el-color-svpanel__cursor",style:{top:this.cursorTop+"px",left:this.cursorLeft+"px"}},[t("div")])])};Mc._withStripped=!0;var Nc=!1,Pc=function(e,t){if(!h.a.prototype.$isServer){var i=function(e){t.drag&&t.drag(e)},n=function e(n){document.removeEventListener("mousemove",i),document.removeEventListener("mouseup",e),document.onselectstart=null,document.ondragstart=null,Nc=!1,t.end&&t.end(n)};e.addEventListener("mousedown",function(e){Nc||(document.onselectstart=function(){return!1},document.ondragstart=function(){return!1},document.addEventListener("mousemove",i),document.addEventListener("mouseup",n),Nc=!0,t.start&&t.start(e))})}},Oc=r({name:"el-sl-panel",props:{color:{required:!0}},computed:{colorValue:function(){return{hue:this.color.get("hue"),value:this.color.get("value")}}},watch:{colorValue:function(){this.update()}},methods:{update:function(){var e=this.color.get("saturation"),t=this.color.get("value"),i=this.$el,n=i.clientWidth,r=i.clientHeight;this.cursorLeft=e*n/100,this.cursorTop=(100-t)*r/100,this.background="hsl("+this.color.get("hue")+", 100%, 50%)"},handleDrag:function(e){var t=this.$el.getBoundingClientRect(),i=e.clientX-t.left,n=e.clientY-t.top;i=Math.max(0,i),i=Math.min(i,t.width),n=Math.max(0,n),n=Math.min(n,t.height),this.cursorLeft=i,this.cursorTop=n,this.color.set({saturation:i/t.width*100,value:100-n/t.height*100})}},mounted:function(){var e=this;Pc(this.$el,{drag:function(t){e.handleDrag(t)},end:function(t){e.handleDrag(t)}}),this.update()},data:function(){return{cursorTop:0,cursorLeft:0,background:"hsl(0, 100%, 50%)"}}},Mc,[],!1,null,null,null);Oc.options.__file="packages/color-picker/src/components/sv-panel.vue";var Ic=Oc.exports,Ac=function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticClass:"el-color-hue-slider",class:{"is-vertical":this.vertical}},[t("div",{ref:"bar",staticClass:"el-color-hue-slider__bar",on:{click:this.handleClick}}),t("div",{ref:"thumb",staticClass:"el-color-hue-slider__thumb",style:{left:this.thumbLeft+"px",top:this.thumbTop+"px"}})])};Ac._withStripped=!0;var Fc=r({name:"el-color-hue-slider",props:{color:{required:!0},vertical:Boolean},data:function(){return{thumbLeft:0,thumbTop:0}},computed:{hueValue:function(){return this.color.get("hue")}},watch:{hueValue:function(){this.update()}},methods:{handleClick:function(e){var t=this.$refs.thumb;e.target!==t&&this.handleDrag(e)},handleDrag:function(e){var t=this.$el.getBoundingClientRect(),i=this.$refs.thumb,n=void 0;if(this.vertical){var r=e.clientY-t.top;r=Math.min(r,t.height-i.offsetHeight/2),r=Math.max(i.offsetHeight/2,r),n=Math.round((r-i.offsetHeight/2)/(t.height-i.offsetHeight)*360)}else{var s=e.clientX-t.left;s=Math.min(s,t.width-i.offsetWidth/2),s=Math.max(i.offsetWidth/2,s),n=Math.round((s-i.offsetWidth/2)/(t.width-i.offsetWidth)*360)}this.color.set("hue",n)},getThumbLeft:function(){if(this.vertical)return 0;var e=this.$el,t=this.color.get("hue");if(!e)return 0;var i=this.$refs.thumb;return Math.round(t*(e.offsetWidth-i.offsetWidth/2)/360)},getThumbTop:function(){if(!this.vertical)return 0;var e=this.$el,t=this.color.get("hue");if(!e)return 0;var i=this.$refs.thumb;return Math.round(t*(e.offsetHeight-i.offsetHeight/2)/360)},update:function(){this.thumbLeft=this.getThumbLeft(),this.thumbTop=this.getThumbTop()}},mounted:function(){var e=this,t=this.$refs,i=t.bar,n=t.thumb,r={drag:function(t){e.handleDrag(t)},end:function(t){e.handleDrag(t)}};Pc(i,r),Pc(n,r),this.update()}},Ac,[],!1,null,null,null);Fc.options.__file="packages/color-picker/src/components/hue-slider.vue";var Lc=Fc.exports,Vc=function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticClass:"el-color-alpha-slider",class:{"is-vertical":this.vertical}},[t("div",{ref:"bar",staticClass:"el-color-alpha-slider__bar",style:{background:this.background},on:{click:this.handleClick}}),t("div",{ref:"thumb",staticClass:"el-color-alpha-slider__thumb",style:{left:this.thumbLeft+"px",top:this.thumbTop+"px"}})])};Vc._withStripped=!0;var Bc=r({name:"el-color-alpha-slider",props:{color:{required:!0},vertical:Boolean},watch:{"color._alpha":function(){this.update()},"color.value":function(){this.update()}},methods:{handleClick:function(e){var t=this.$refs.thumb;e.target!==t&&this.handleDrag(e)},handleDrag:function(e){var t=this.$el.getBoundingClientRect(),i=this.$refs.thumb;if(this.vertical){var n=e.clientY-t.top;n=Math.max(i.offsetHeight/2,n),n=Math.min(n,t.height-i.offsetHeight/2),this.color.set("alpha",Math.round((n-i.offsetHeight/2)/(t.height-i.offsetHeight)*100))}else{var r=e.clientX-t.left;r=Math.max(i.offsetWidth/2,r),r=Math.min(r,t.width-i.offsetWidth/2),this.color.set("alpha",Math.round((r-i.offsetWidth/2)/(t.width-i.offsetWidth)*100))}},getThumbLeft:function(){if(this.vertical)return 0;var e=this.$el,t=this.color._alpha;if(!e)return 0;var i=this.$refs.thumb;return Math.round(t*(e.offsetWidth-i.offsetWidth/2)/100)},getThumbTop:function(){if(!this.vertical)return 0;var e=this.$el,t=this.color._alpha;if(!e)return 0;var i=this.$refs.thumb;return Math.round(t*(e.offsetHeight-i.offsetHeight/2)/100)},getBackground:function(){if(this.color&&this.color.value){var e=this.color.toRgb(),t=e.r,i=e.g,n=e.b;return"linear-gradient(to right, rgba("+t+", "+i+", "+n+", 0) 0%, rgba("+t+", "+i+", "+n+", 1) 100%)"}return null},update:function(){this.thumbLeft=this.getThumbLeft(),this.thumbTop=this.getThumbTop(),this.background=this.getBackground()}},data:function(){return{thumbLeft:0,thumbTop:0,background:null}},mounted:function(){var e=this,t=this.$refs,i=t.bar,n=t.thumb,r={drag:function(t){e.handleDrag(t)},end:function(t){e.handleDrag(t)}};Pc(i,r),Pc(n,r),this.update()}},Vc,[],!1,null,null,null);Bc.options.__file="packages/color-picker/src/components/alpha-slider.vue";var zc=Bc.exports,Hc=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-color-predefine"},[i("div",{staticClass:"el-color-predefine__colors"},e._l(e.rgbaColors,function(t,n){return i("div",{key:e.colors[n],staticClass:"el-color-predefine__color-selector",class:{selected:t.selected,"is-alpha":t._alpha<100},on:{click:function(t){e.handleSelect(n)}}},[i("div",{style:{"background-color":t.value}})])}),0)])};Hc._withStripped=!0;var Rc=r({props:{colors:{type:Array,required:!0},color:{required:!0}},data:function(){return{rgbaColors:this.parseColors(this.colors,this.color)}},methods:{handleSelect:function(e){this.color.fromString(this.colors[e])},parseColors:function(e,t){return e.map(function(e){var i=new Ec;return i.enableAlpha=!0,i.format="rgba",i.fromString(e),i.selected=i.value===t.value,i})}},watch:{"$parent.currentColor":function(e){var t=new Ec;t.fromString(e),this.rgbaColors.forEach(function(e){e.selected=t.compare(e)})},colors:function(e){this.rgbaColors=this.parseColors(e,this.color)},color:function(e){this.rgbaColors=this.parseColors(this.colors,e)}}},Hc,[],!1,null,null,null);Rc.options.__file="packages/color-picker/src/components/predefine.vue";var Wc=Rc.exports,jc=r({name:"el-color-picker-dropdown",mixins:[Oe,q],components:{SvPanel:Ic,HueSlider:Lc,AlphaSlider:zc,ElInput:ne,ElButton:Et,Predefine:Wc},props:{color:{required:!0},showAlpha:Boolean,predefine:Array},data:function(){return{customInput:""}},computed:{currentColor:function(){var e=this.$parent;return e.value||e.showPanelColor?e.color.value:""}},methods:{confirmValue:function(){this.$emit("pick")},handleConfirm:function(){this.color.fromString(this.customInput)}},mounted:function(){this.$parent.popperElm=this.popperElm=this.$el,this.referenceElm=this.$parent.$el},watch:{showPopper:function(e){var t=this;!0===e&&this.$nextTick(function(){var e=t.$refs,i=e.sl,n=e.hue,r=e.alpha;i&&i.update(),n&&n.update(),r&&r.update()})},currentColor:{immediate:!0,handler:function(e){this.customInput=e}}}},Tc,[],!1,null,null,null);jc.options.__file="packages/color-picker/src/components/picker-dropdown.vue";var qc=jc.exports,Yc=r({name:"ElColorPicker",mixins:[l],props:{value:String,showAlpha:Boolean,colorFormat:String,disabled:Boolean,size:String,popperClass:String,predefine:Array},inject:{elForm:{default:""},elFormItem:{default:""}},directives:{Clickoutside:at},computed:{displayedColor:function(){return this.value||this.showPanelColor?this.displayedRgb(this.color,this.showAlpha):"transparent"},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},colorSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},colorDisabled:function(){return this.disabled||(this.elForm||{}).disabled}},watch:{value:function(e){e?e&&e!==this.color.value&&this.color.fromString(e):this.showPanelColor=!1},color:{deep:!0,handler:function(){this.showPanelColor=!0}},displayedColor:function(e){if(this.showPicker){var t=new Ec({enableAlpha:this.showAlpha,format:this.colorFormat});t.fromString(this.value),e!==this.displayedRgb(t,this.showAlpha)&&this.$emit("active-change",e)}}},methods:{handleTrigger:function(){this.colorDisabled||(this.showPicker=!this.showPicker)},confirmValue:function(){var e=this.color.value;this.$emit("input",e),this.$emit("change",e),this.dispatch("ElFormItem","el.form.change",e),this.showPicker=!1},clearValue:function(){this.$emit("input",null),this.$emit("change",null),null!==this.value&&this.dispatch("ElFormItem","el.form.change",null),this.showPanelColor=!1,this.showPicker=!1,this.resetColor()},hide:function(){this.showPicker=!1,this.resetColor()},resetColor:function(){var e=this;this.$nextTick(function(t){e.value?e.color.fromString(e.value):e.showPanelColor=!1})},displayedRgb:function(e,t){if(!(e instanceof Ec))throw Error("color should be instance of Color Class");var i=e.toRgb(),n=i.r,r=i.g,s=i.b;return t?"rgba("+n+", "+r+", "+s+", "+e.get("alpha")/100+")":"rgb("+n+", "+r+", "+s+")"}},mounted:function(){var e=this.value;e&&this.color.fromString(e),this.popperElm=this.$refs.dropdown.$el},data:function(){return{color:new Ec({enableAlpha:this.showAlpha,format:this.colorFormat}),showPicker:!1,showPanelColor:!1}},components:{PickerDropdown:qc}},yc,[],!1,null,null,null);Yc.options.__file="packages/color-picker/src/main.vue";var Kc=Yc.exports;Kc.install=function(e){e.component(Kc.name,Kc)};var Gc=Kc,Uc=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-transfer"},[i("transfer-panel",e._b({ref:"leftPanel",attrs:{data:e.sourceData,title:e.titles[0]||e.t("el.transfer.titles.0"),"default-checked":e.leftDefaultChecked,placeholder:e.filterPlaceholder||e.t("el.transfer.filterPlaceholder")},on:{"checked-change":e.onSourceCheckedChange}},"transfer-panel",e.$props,!1),[e._t("left-footer")],2),i("div",{staticClass:"el-transfer__buttons"},[i("el-button",{class:["el-transfer__button",e.hasButtonTexts?"is-with-texts":""],attrs:{type:"primary",disabled:0===e.rightChecked.length},nativeOn:{click:function(t){return e.addToLeft(t)}}},[i("i",{staticClass:"el-icon-arrow-left"}),void 0!==e.buttonTexts[0]?i("span",[e._v(e._s(e.buttonTexts[0]))]):e._e()]),i("el-button",{class:["el-transfer__button",e.hasButtonTexts?"is-with-texts":""],attrs:{type:"primary",disabled:0===e.leftChecked.length},nativeOn:{click:function(t){return e.addToRight(t)}}},[void 0!==e.buttonTexts[1]?i("span",[e._v(e._s(e.buttonTexts[1]))]):e._e(),i("i",{staticClass:"el-icon-arrow-right"})])],1),i("transfer-panel",e._b({ref:"rightPanel",attrs:{data:e.targetData,title:e.titles[1]||e.t("el.transfer.titles.1"),"default-checked":e.rightDefaultChecked,placeholder:e.filterPlaceholder||e.t("el.transfer.filterPlaceholder")},on:{"checked-change":e.onTargetCheckedChange}},"transfer-panel",e.$props,!1),[e._t("right-footer")],2)],1)};Uc._withStripped=!0;var Xc=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-transfer-panel"},[i("p",{staticClass:"el-transfer-panel__header"},[i("el-checkbox",{attrs:{indeterminate:e.isIndeterminate},on:{change:e.handleAllCheckedChange},model:{value:e.allChecked,callback:function(t){e.allChecked=t},expression:"allChecked"}},[e._v("\n      "+e._s(e.title)+"\n      "),i("span",[e._v(e._s(e.checkedSummary))])])],1),i("div",{class:["el-transfer-panel__body",e.hasFooter?"is-with-footer":""]},[e.filterable?i("el-input",{staticClass:"el-transfer-panel__filter",attrs:{size:"small",placeholder:e.placeholder},nativeOn:{mouseenter:function(t){e.inputHover=!0},mouseleave:function(t){e.inputHover=!1}},model:{value:e.query,callback:function(t){e.query=t},expression:"query"}},[i("i",{class:["el-input__icon","el-icon-"+e.inputIcon],attrs:{slot:"prefix"},on:{click:e.clearQuery},slot:"prefix"})]):e._e(),i("el-checkbox-group",{directives:[{name:"show",rawName:"v-show",value:!e.hasNoMatch&&e.data.length>0,expression:"!hasNoMatch && data.length > 0"}],staticClass:"el-transfer-panel__list",class:{"is-filterable":e.filterable},model:{value:e.checked,callback:function(t){e.checked=t},expression:"checked"}},e._l(e.filteredData,function(t){return i("el-checkbox",{key:t[e.keyProp],staticClass:"el-transfer-panel__item",attrs:{label:t[e.keyProp],disabled:t[e.disabledProp]}},[i("option-content",{attrs:{option:t}})],1)}),1),i("p",{directives:[{name:"show",rawName:"v-show",value:e.hasNoMatch,expression:"hasNoMatch"}],staticClass:"el-transfer-panel__empty"},[e._v(e._s(e.t("el.transfer.noMatch")))]),i("p",{directives:[{name:"show",rawName:"v-show",value:0===e.data.length&&!e.hasNoMatch,expression:"data.length === 0 && !hasNoMatch"}],staticClass:"el-transfer-panel__empty"},[e._v(e._s(e.t("el.transfer.noData")))])],1),e.hasFooter?i("p",{staticClass:"el-transfer-panel__footer"},[e._t("default")],2):e._e()])};Xc._withStripped=!0;var Jc=r({mixins:[q],name:"ElTransferPanel",componentName:"ElTransferPanel",components:{ElCheckboxGroup:Yi,ElCheckbox:Vi,ElInput:ne,OptionContent:{props:{option:Object},render:function(e){var t=function e(t){return"ElTransferPanel"===t.$options.componentName?t:t.$parent?e(t.$parent):t}(this),i=t.$parent||t;return t.renderContent?t.renderContent(e,this.option):i.$scopedSlots.default?i.$scopedSlots.default({option:this.option}):e("span",[this.option[t.labelProp]||this.option[t.keyProp]])}}},props:{data:{type:Array,default:function(){return[]}},renderContent:Function,placeholder:String,title:String,filterable:Boolean,format:Object,filterMethod:Function,defaultChecked:Array,props:Object},data:function(){return{checked:[],allChecked:!1,query:"",inputHover:!1,checkChangeByUser:!0}},watch:{checked:function(e,t){if(this.updateAllChecked(),this.checkChangeByUser){var i=e.concat(t).filter(function(i){return-1===e.indexOf(i)||-1===t.indexOf(i)});this.$emit("checked-change",e,i)}else this.$emit("checked-change",e),this.checkChangeByUser=!0},data:function(){var e=this,t=[],i=this.filteredData.map(function(t){return t[e.keyProp]});this.checked.forEach(function(e){i.indexOf(e)>-1&&t.push(e)}),this.checkChangeByUser=!1,this.checked=t},checkableData:function(){this.updateAllChecked()},defaultChecked:{immediate:!0,handler:function(e,t){var i=this;if(!t||e.length!==t.length||!e.every(function(e){return t.indexOf(e)>-1})){var n=[],r=this.checkableData.map(function(e){return e[i.keyProp]});e.forEach(function(e){r.indexOf(e)>-1&&n.push(e)}),this.checkChangeByUser=!1,this.checked=n}}}},computed:{filteredData:function(){var e=this;return this.data.filter(function(t){return"function"==typeof e.filterMethod?e.filterMethod(e.query,t):(t[e.labelProp]||t[e.keyProp].toString()).toLowerCase().indexOf(e.query.toLowerCase())>-1})},checkableData:function(){var e=this;return this.filteredData.filter(function(t){return!t[e.disabledProp]})},checkedSummary:function(){var e=this.checked.length,t=this.data.length,i=this.format,n=i.noChecked,r=i.hasChecked;return n&&r?e>0?r.replace(/\${checked}/g,e).replace(/\${total}/g,t):n.replace(/\${total}/g,t):e+"/"+t},isIndeterminate:function(){var e=this.checked.length;return e>0&&e<this.checkableData.length},hasNoMatch:function(){return this.query.length>0&&0===this.filteredData.length},inputIcon:function(){return this.query.length>0&&this.inputHover?"circle-close":"search"},labelProp:function(){return this.props.label||"label"},keyProp:function(){return this.props.key||"key"},disabledProp:function(){return this.props.disabled||"disabled"},hasFooter:function(){return!!this.$slots.default}},methods:{updateAllChecked:function(){var e=this,t=this.checkableData.map(function(t){return t[e.keyProp]});this.allChecked=t.length>0&&t.every(function(t){return e.checked.indexOf(t)>-1})},handleAllCheckedChange:function(e){var t=this;this.checked=e?this.checkableData.map(function(e){return e[t.keyProp]}):[]},clearQuery:function(){"circle-close"===this.inputIcon&&(this.query="")}}},Xc,[],!1,null,null,null);Jc.options.__file="packages/transfer/src/transfer-panel.vue";var Zc=r({name:"ElTransfer",mixins:[l,q,K],components:{TransferPanel:Jc.exports,ElButton:Et},props:{data:{type:Array,default:function(){return[]}},titles:{type:Array,default:function(){return[]}},buttonTexts:{type:Array,default:function(){return[]}},filterPlaceholder:{type:String,default:""},filterMethod:Function,leftDefaultChecked:{type:Array,default:function(){return[]}},rightDefaultChecked:{type:Array,default:function(){return[]}},renderContent:Function,value:{type:Array,default:function(){return[]}},format:{type:Object,default:function(){return{}}},filterable:Boolean,props:{type:Object,default:function(){return{label:"label",key:"key",disabled:"disabled"}}},targetOrder:{type:String,default:"original"}},data:function(){return{leftChecked:[],rightChecked:[]}},computed:{dataObj:function(){var e=this.props.key;return this.data.reduce(function(t,i){return(t[i[e]]=i)&&t},{})},sourceData:function(){var e=this;return this.data.filter(function(t){return-1===e.value.indexOf(t[e.props.key])})},targetData:function(){var e=this;return"original"===this.targetOrder?this.data.filter(function(t){return e.value.indexOf(t[e.props.key])>-1}):this.value.reduce(function(t,i){var n=e.dataObj[i];return n&&t.push(n),t},[])},hasButtonTexts:function(){return 2===this.buttonTexts.length}},watch:{value:function(e){this.dispatch("ElFormItem","el.form.change",e)}},methods:{getMigratingConfig:function(){return{props:{"footer-format":"footer-format is renamed to format."}}},onSourceCheckedChange:function(e,t){this.leftChecked=e,void 0!==t&&this.$emit("left-check-change",e,t)},onTargetCheckedChange:function(e,t){this.rightChecked=e,void 0!==t&&this.$emit("right-check-change",e,t)},addToLeft:function(){var e=this.value.slice();this.rightChecked.forEach(function(t){var i=e.indexOf(t);i>-1&&e.splice(i,1)}),this.$emit("input",e),this.$emit("change",e,"left",this.rightChecked)},addToRight:function(){var e=this,t=this.value.slice(),i=[],n=this.props.key;this.data.forEach(function(t){var r=t[n];e.leftChecked.indexOf(r)>-1&&-1===e.value.indexOf(r)&&i.push(r)}),t="unshift"===this.targetOrder?i.concat(t):t.concat(i),this.$emit("input",t),this.$emit("change",t,"right",this.leftChecked)},clearQuery:function(e){"left"===e?this.$refs.leftPanel.query="":"right"===e&&(this.$refs.rightPanel.query="")}}},Uc,[],!1,null,null,null);Zc.options.__file="packages/transfer/src/main.vue";var Qc=Zc.exports;Qc.install=function(e){e.component(Qc.name,Qc)};var eh=Qc,th=function(){var e=this.$createElement;return(this._self._c||e)("section",{staticClass:"el-container",class:{"is-vertical":this.isVertical}},[this._t("default")],2)};th._withStripped=!0;var ih=r({name:"ElContainer",componentName:"ElContainer",props:{direction:String},computed:{isVertical:function(){return"vertical"===this.direction||"horizontal"!==this.direction&&(!(!this.$slots||!this.$slots.default)&&this.$slots.default.some(function(e){var t=e.componentOptions&&e.componentOptions.tag;return"el-header"===t||"el-footer"===t}))}}},th,[],!1,null,null,null);ih.options.__file="packages/container/src/main.vue";var nh=ih.exports;nh.install=function(e){e.component(nh.name,nh)};var rh=nh,sh=function(){var e=this.$createElement;return(this._self._c||e)("header",{staticClass:"el-header",style:{height:this.height}},[this._t("default")],2)};sh._withStripped=!0;var ah=r({name:"ElHeader",componentName:"ElHeader",props:{height:{type:String,default:"60px"}}},sh,[],!1,null,null,null);ah.options.__file="packages/header/src/main.vue";var oh=ah.exports;oh.install=function(e){e.component(oh.name,oh)};var lh=oh,uh=function(){var e=this.$createElement;return(this._self._c||e)("aside",{staticClass:"el-aside",style:{width:this.width}},[this._t("default")],2)};uh._withStripped=!0;var ch=r({name:"ElAside",componentName:"ElAside",props:{width:{type:String,default:"300px"}}},uh,[],!1,null,null,null);ch.options.__file="packages/aside/src/main.vue";var hh=ch.exports;hh.install=function(e){e.component(hh.name,hh)};var dh=hh,ph=function(){var e=this.$createElement;return(this._self._c||e)("main",{staticClass:"el-main"},[this._t("default")],2)};ph._withStripped=!0;var fh=r({name:"ElMain",componentName:"ElMain"},ph,[],!1,null,null,null);fh.options.__file="packages/main/src/main.vue";var mh=fh.exports;mh.install=function(e){e.component(mh.name,mh)};var vh=mh,gh=function(){var e=this.$createElement;return(this._self._c||e)("footer",{staticClass:"el-footer",style:{height:this.height}},[this._t("default")],2)};gh._withStripped=!0;var bh=r({name:"ElFooter",componentName:"ElFooter",props:{height:{type:String,default:"60px"}}},gh,[],!1,null,null,null);bh.options.__file="packages/footer/src/main.vue";var yh=bh.exports;yh.install=function(e){e.component(yh.name,yh)};var wh=yh,_h=r({name:"ElTimeline",props:{reverse:{type:Boolean,default:!1}},provide:function(){return{timeline:this}},render:function(){var e=arguments[0],t=this.reverse,i={"el-timeline":!0,"is-reverse":t},n=this.$slots.default||[];return t&&(n=n.reverse()),e("ul",{class:i},[n])}},void 0,void 0,!1,null,null,null);_h.options.__file="packages/timeline/src/main.vue";var xh=_h.exports;xh.install=function(e){e.component(xh.name,xh)};var Ch=xh,kh=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("li",{staticClass:"el-timeline-item"},[i("div",{staticClass:"el-timeline-item__tail"}),e.$slots.dot?e._e():i("div",{staticClass:"el-timeline-item__node",class:["el-timeline-item__node--"+(e.size||""),"el-timeline-item__node--"+(e.type||"")],style:{backgroundColor:e.color}},[e.icon?i("i",{staticClass:"el-timeline-item__icon",class:e.icon}):e._e()]),e.$slots.dot?i("div",{staticClass:"el-timeline-item__dot"},[e._t("dot")],2):e._e(),i("div",{staticClass:"el-timeline-item__wrapper"},[e.hideTimestamp||"top"!==e.placement?e._e():i("div",{staticClass:"el-timeline-item__timestamp is-top"},[e._v("\n      "+e._s(e.timestamp)+"\n    ")]),i("div",{staticClass:"el-timeline-item__content"},[e._t("default")],2),e.hideTimestamp||"bottom"!==e.placement?e._e():i("div",{staticClass:"el-timeline-item__timestamp is-bottom"},[e._v("\n      "+e._s(e.timestamp)+"\n    ")])])])};kh._withStripped=!0;var Sh=r({name:"ElTimelineItem",inject:["timeline"],props:{timestamp:String,hideTimestamp:{type:Boolean,default:!1},placement:{type:String,default:"bottom"},type:String,color:String,size:{type:String,default:"normal"},icon:String}},kh,[],!1,null,null,null);Sh.options.__file="packages/timeline/src/item.vue";var Dh=Sh.exports;Dh.install=function(e){e.component(Dh.name,Dh)};var $h=Dh,Eh=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("a",e._b({class:["el-link",e.type?"el-link--"+e.type:"",e.disabled&&"is-disabled",e.underline&&!e.disabled&&"is-underline"],attrs:{href:e.disabled?null:e.href},on:{click:e.handleClick}},"a",e.$attrs,!1),[e.icon?i("i",{class:e.icon}):e._e(),e.$slots.default?i("span",{staticClass:"el-link--inner"},[e._t("default")],2):e._e(),e.$slots.icon?[e.$slots.icon?e._t("icon"):e._e()]:e._e()],2)};Eh._withStripped=!0;var Th=r({name:"ElLink",props:{type:{type:String,default:"default"},underline:{type:Boolean,default:!0},disabled:Boolean,href:String,icon:String},methods:{handleClick:function(e){this.disabled||this.href||this.$emit("click",e)}}},Eh,[],!1,null,null,null);Th.options.__file="packages/link/src/main.vue";var Mh=Th.exports;Mh.install=function(e){e.component(Mh.name,Mh)};var Nh=Mh,Ph=function(e,t){var i=t._c;return i("div",t._g(t._b({class:[t.data.staticClass,"el-divider","el-divider--"+t.props.direction]},"div",t.data.attrs,!1),t.listeners),[t.slots().default&&"vertical"!==t.props.direction?i("div",{class:["el-divider__text","is-"+t.props.contentPosition]},[t._t("default")],2):t._e()])};Ph._withStripped=!0;var Oh=r({name:"ElDivider",props:{direction:{type:String,default:"horizontal",validator:function(e){return-1!==["horizontal","vertical"].indexOf(e)}},contentPosition:{type:String,default:"center",validator:function(e){return-1!==["left","center","right"].indexOf(e)}}}},Ph,[],!0,null,null,null);Oh.options.__file="packages/divider/src/main.vue";var Ih=Oh.exports;Ih.install=function(e){e.component(Ih.name,Ih)};var Ah=Ih,Fh=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-image"},[e.loading?e._t("placeholder",[i("div",{staticClass:"el-image__placeholder"})]):e.error?e._t("error",[i("div",{staticClass:"el-image__error"},[e._v(e._s(e.t("el.image.error")))])]):i("img",e._g(e._b({staticClass:"el-image__inner",class:{"el-image__inner--center":e.alignCenter,"el-image__preview":e.preview},style:e.imageStyle,attrs:{src:e.src},on:{click:e.clickHandler}},"img",e.$attrs,!1),e.$listeners)),e.preview?[e.showViewer?i("image-viewer",{attrs:{"z-index":e.zIndex,"initial-index":e.imageIndex,"on-close":e.closeViewer,"url-list":e.previewSrcList}}):e._e()]:e._e()],2)};Fh._withStripped=!0;var Lh=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"viewer-fade"}},[i("div",{ref:"el-image-viewer__wrapper",staticClass:"el-image-viewer__wrapper",style:{"z-index":e.zIndex},attrs:{tabindex:"-1"}},[i("div",{staticClass:"el-image-viewer__mask",on:{click:function(t){return t.target!==t.currentTarget?null:e.handleMaskClick(t)}}}),i("span",{staticClass:"el-image-viewer__btn el-image-viewer__close",on:{click:e.hide}},[i("i",{staticClass:"el-icon-close"})]),e.isSingle?e._e():[i("span",{staticClass:"el-image-viewer__btn el-image-viewer__prev",class:{"is-disabled":!e.infinite&&e.isFirst},on:{click:e.prev}},[i("i",{staticClass:"el-icon-arrow-left"})]),i("span",{staticClass:"el-image-viewer__btn el-image-viewer__next",class:{"is-disabled":!e.infinite&&e.isLast},on:{click:e.next}},[i("i",{staticClass:"el-icon-arrow-right"})])],i("div",{staticClass:"el-image-viewer__btn el-image-viewer__actions"},[i("div",{staticClass:"el-image-viewer__actions__inner"},[i("i",{staticClass:"el-icon-zoom-out",on:{click:function(t){e.handleActions("zoomOut")}}}),i("i",{staticClass:"el-icon-zoom-in",on:{click:function(t){e.handleActions("zoomIn")}}}),i("i",{staticClass:"el-image-viewer__actions__divider"}),i("i",{class:e.mode.icon,on:{click:e.toggleMode}}),i("i",{staticClass:"el-image-viewer__actions__divider"}),i("i",{staticClass:"el-icon-refresh-left",on:{click:function(t){e.handleActions("anticlocelise")}}}),i("i",{staticClass:"el-icon-refresh-right",on:{click:function(t){e.handleActions("clocelise")}}})])]),i("div",{staticClass:"el-image-viewer__canvas"},e._l(e.urlList,function(t,n){return n===e.index?i("img",{key:t,ref:"img",refInFor:!0,staticClass:"el-image-viewer__img",style:e.imgStyle,attrs:{src:e.currentImg},on:{load:e.handleImgLoad,error:e.handleImgError,mousedown:e.handleMouseDown}}):e._e()}),0)],2)])};Lh._withStripped=!0;var Vh=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var i=arguments[t];for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n])}return e},Bh={CONTAIN:{name:"contain",icon:"el-icon-full-screen"},ORIGINAL:{name:"original",icon:"el-icon-c-scale-to-original"}},zh=!h.a.prototype.$isServer&&window.navigator.userAgent.match(/firefox/i)?"DOMMouseScroll":"mousewheel",Hh=r({name:"elImageViewer",props:{urlList:{type:Array,default:function(){return[]}},zIndex:{type:Number,default:2e3},onSwitch:{type:Function,default:function(){}},onClose:{type:Function,default:function(){}},initialIndex:{type:Number,default:0},appendToBody:{type:Boolean,default:!0},maskClosable:{type:Boolean,default:!0}},data:function(){return{index:this.initialIndex,isShow:!1,infinite:!0,loading:!1,mode:Bh.CONTAIN,transform:{scale:1,deg:0,offsetX:0,offsetY:0,enableTransition:!1}}},computed:{isSingle:function(){return this.urlList.length<=1},isFirst:function(){return 0===this.index},isLast:function(){return this.index===this.urlList.length-1},currentImg:function(){return this.urlList[this.index]},imgStyle:function(){var e=this.transform,t=e.scale,i=e.deg,n=e.offsetX,r=e.offsetY,s={transform:"scale("+t+") rotate("+i+"deg)",transition:e.enableTransition?"transform .3s":"","margin-left":n+"px","margin-top":r+"px"};return this.mode===Bh.CONTAIN&&(s.maxWidth=s.maxHeight="100%"),s}},watch:{index:{handler:function(e){this.reset(),this.onSwitch(e)}},currentImg:function(e){var t=this;this.$nextTick(function(e){t.$refs.img[0].complete||(t.loading=!0)})}},methods:{hide:function(){this.deviceSupportUninstall(),this.onClose()},deviceSupportInstall:function(){var e=this;this._keyDownHandler=F(function(t){switch(t.keyCode){case 27:e.hide();break;case 32:e.toggleMode();break;case 37:e.prev();break;case 38:e.handleActions("zoomIn");break;case 39:e.next();break;case 40:e.handleActions("zoomOut")}}),this._mouseWheelHandler=F(function(t){(t.wheelDelta?t.wheelDelta:-t.detail)>0?e.handleActions("zoomIn",{zoomRate:.015,enableTransition:!1}):e.handleActions("zoomOut",{zoomRate:.015,enableTransition:!1})}),he(document,"keydown",this._keyDownHandler),he(document,zh,this._mouseWheelHandler)},deviceSupportUninstall:function(){de(document,"keydown",this._keyDownHandler),de(document,zh,this._mouseWheelHandler),this._keyDownHandler=null,this._mouseWheelHandler=null},handleImgLoad:function(e){this.loading=!1},handleImgError:function(e){this.loading=!1,e.target.alt="加载失败"},handleMouseDown:function(e){var t=this;if(!this.loading&&0===e.button){var i=this.transform,n=i.offsetX,r=i.offsetY,s=e.pageX,a=e.pageY;this._dragHandler=F(function(e){t.transform.offsetX=n+e.pageX-s,t.transform.offsetY=r+e.pageY-a}),he(document,"mousemove",this._dragHandler),he(document,"mouseup",function(e){de(document,"mousemove",t._dragHandler)}),e.preventDefault()}},handleMaskClick:function(){this.maskClosable&&this.hide()},reset:function(){this.transform={scale:1,deg:0,offsetX:0,offsetY:0,enableTransition:!1}},toggleMode:function(){if(!this.loading){var e=Object.keys(Bh),t=(Object.values(Bh).indexOf(this.mode)+1)%e.length;this.mode=Bh[e[t]],this.reset()}},prev:function(){if(!this.isFirst||this.infinite){var e=this.urlList.length;this.index=(this.index-1+e)%e}},next:function(){if(!this.isLast||this.infinite){var e=this.urlList.length;this.index=(this.index+1)%e}},handleActions:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!this.loading){var i=Vh({zoomRate:.2,rotateDeg:90,enableTransition:!0},t),n=i.zoomRate,r=i.rotateDeg,s=i.enableTransition,a=this.transform;switch(e){case"zoomOut":a.scale>.2&&(a.scale=parseFloat((a.scale-n).toFixed(3)));break;case"zoomIn":a.scale=parseFloat((a.scale+n).toFixed(3));break;case"clocelise":a.deg+=r;break;case"anticlocelise":a.deg-=r}a.enableTransition=s}}},mounted:function(){this.deviceSupportInstall(),this.appendToBody&&document.body.appendChild(this.$el),this.$refs["el-image-viewer__wrapper"].focus()},destroyed:function(){this.appendToBody&&this.$el&&this.$el.parentNode&&this.$el.parentNode.removeChild(this.$el)}},Lh,[],!1,null,null,null);Hh.options.__file="packages/image/src/image-viewer.vue";var Rh=Hh.exports,Wh=function(){return void 0!==document.documentElement.style.objectFit},jh="none",qh="contain",Yh="cover",Kh="fill",Gh="scale-down",Uh="",Xh=r({name:"ElImage",mixins:[q],inheritAttrs:!1,components:{ImageViewer:Rh},props:{src:String,fit:String,lazy:Boolean,scrollContainer:{},previewSrcList:{type:Array,default:function(){return[]}},zIndex:{type:Number,default:2e3}},data:function(){return{loading:!0,error:!1,show:!this.lazy,imageWidth:0,imageHeight:0,showViewer:!1}},computed:{imageStyle:function(){var e=this.fit;return!this.$isServer&&e?Wh()?{"object-fit":e}:this.getImageStyle(e):{}},alignCenter:function(){return!this.$isServer&&!Wh()&&this.fit!==Kh},preview:function(){var e=this.previewSrcList;return Array.isArray(e)&&e.length>0},imageIndex:function(){var e=0,t=this.previewSrcList.indexOf(this.src);return t>=0&&(e=t),e}},watch:{src:function(e){this.show&&this.loadImage()},show:function(e){e&&this.loadImage()}},mounted:function(){this.lazy?this.addLazyLoadListener():this.loadImage()},beforeDestroy:function(){this.lazy&&this.removeLazyLoadListener()},methods:{loadImage:function(){var e=this;if(!this.$isServer){this.loading=!0,this.error=!1;var t=new Image;t.onload=function(i){return e.handleLoad(i,t)},t.onerror=this.handleError.bind(this),Object.keys(this.$attrs).forEach(function(i){var n=e.$attrs[i];t.setAttribute(i,n)}),t.src=this.src}},handleLoad:function(e,t){this.imageWidth=t.width,this.imageHeight=t.height,this.loading=!1,this.error=!1},handleError:function(e){this.loading=!1,this.error=!0,this.$emit("error",e)},handleLazyLoad:function(){(function(e,t){if(se||!e||!t)return!1;var i=e.getBoundingClientRect(),n=void 0;return n=[window,document,document.documentElement,null,void 0].includes(t)?{top:0,right:window.innerWidth,bottom:window.innerHeight,left:0}:t.getBoundingClientRect(),i.top<n.bottom&&i.bottom>n.top&&i.right>n.left&&i.left<n.right})(this.$el,this._scrollContainer)&&(this.show=!0,this.removeLazyLoadListener())},addLazyLoadListener:function(){if(!this.$isServer){var e=this.scrollContainer,t=null;(t=v(e)?e:f(e)?document.querySelector(e):be(this.$el))&&(this._scrollContainer=t,this._lazyLoadHandler=Mu()(200,this.handleLazyLoad),he(t,"scroll",this._lazyLoadHandler),this.handleLazyLoad())}},removeLazyLoadListener:function(){var e=this._scrollContainer,t=this._lazyLoadHandler;!this.$isServer&&e&&t&&(de(e,"scroll",t),this._scrollContainer=null,this._lazyLoadHandler=null)},getImageStyle:function(e){var t=this.imageWidth,i=this.imageHeight,n=this.$el,r=n.clientWidth,s=n.clientHeight;if(!(t&&i&&r&&s))return{};var a=t/i,o=r/s;e===Gh&&(e=t<r&&i<s?jh:qh);switch(e){case jh:return{width:"auto",height:"auto"};case qh:return a<o?{width:"auto"}:{height:"auto"};case Yh:return a<o?{height:"auto"}:{width:"auto"};default:return{}}},clickHandler:function(){this.preview&&(Uh=document.body.style.overflow,document.body.style.overflow="hidden",this.showViewer=!0)},closeViewer:function(){document.body.style.overflow=Uh,this.showViewer=!1}}},Fh,[],!1,null,null,null);Xh.options.__file="packages/image/src/main.vue";var Jh=Xh.exports;Jh.install=function(e){e.component(Jh.name,Jh)};var Zh=Jh,Qh=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-calendar"},[i("div",{staticClass:"el-calendar__header"},[i("div",{staticClass:"el-calendar__title"},[e._v("\n      "+e._s(e.i18nDate)+"\n    ")]),0===e.validatedRange.length?i("div",{staticClass:"el-calendar__button-group"},[i("el-button-group",[i("el-button",{attrs:{type:"plain",size:"mini"},on:{click:function(t){e.selectDate("prev-month")}}},[e._v("\n          "+e._s(e.t("el.datepicker.prevMonth"))+"\n        ")]),i("el-button",{attrs:{type:"plain",size:"mini"},on:{click:function(t){e.selectDate("today")}}},[e._v("\n          "+e._s(e.t("el.datepicker.today"))+"\n        ")]),i("el-button",{attrs:{type:"plain",size:"mini"},on:{click:function(t){e.selectDate("next-month")}}},[e._v("\n          "+e._s(e.t("el.datepicker.nextMonth"))+"\n        ")])],1)],1):e._e()]),0===e.validatedRange.length?i("div",{key:"no-range",staticClass:"el-calendar__body"},[i("date-table",{attrs:{date:e.date,"selected-day":e.realSelectedDay,"first-day-of-week":e.realFirstDayOfWeek},on:{pick:e.pickDay}})],1):i("div",{key:"has-range",staticClass:"el-calendar__body"},e._l(e.validatedRange,function(t,n){return i("date-table",{key:n,attrs:{date:t[0],"selected-day":e.realSelectedDay,range:t,"hide-header":0!==n,"first-day-of-week":e.realFirstDayOfWeek},on:{pick:e.pickDay}})}),1)])};Qh._withStripped=!0;var ed=r({props:{selectedDay:String,range:{type:Array,validator:function(e){if(!e||!e.length)return!0;var t=e[0],i=e[1];return Ir(t,i)}},date:Date,hideHeader:Boolean,firstDayOfWeek:Number},inject:["elCalendar"],methods:{toNestedArr:function(e){return yr(e.length/7).map(function(t,i){var n=7*i;return e.slice(n,n+7)})},getFormateDate:function(e,t){if(!e||-1===["prev","current","next"].indexOf(t))throw new Error("invalid day or type");var i=this.curMonthDatePrefix;return"prev"===t?i=this.prevMonthDatePrefix:"next"===t&&(i=this.nextMonthDatePrefix),i+"-"+(e=("00"+e).slice(-2))},getCellClass:function(e){var t=e.text,i=e.type,n=[i];if("current"===i){var r=this.getFormateDate(t,i);r===this.selectedDay&&n.push("is-selected"),r===this.formatedToday&&n.push("is-today")}return n},pickDay:function(e){var t=e.text,i=e.type,n=this.getFormateDate(t,i);this.$emit("pick",n)},cellRenderProxy:function(e){var t=e.text,i=e.type,n=this.$createElement,r=this.elCalendar.$scopedSlots.dateCell;if(!r)return n("span",[t]);var s=this.getFormateDate(t,i);return r({date:new Date(s),data:{isSelected:this.selectedDay===s,type:i+"-month",day:s}})}},computed:{WEEK_DAYS:function(){return lr().dayNames},prevMonthDatePrefix:function(){var e=new Date(this.date.getTime());return e.setDate(0),sr.a.format(e,"yyyy-MM")},curMonthDatePrefix:function(){return sr.a.format(this.date,"yyyy-MM")},nextMonthDatePrefix:function(){var e=new Date(this.date.getFullYear(),this.date.getMonth()+1,1);return sr.a.format(e,"yyyy-MM")},formatedToday:function(){return this.elCalendar.formatedToday},isInRange:function(){return this.range&&this.range.length},rows:function(){var e=[];if(this.isInRange){var t=this.range,i=t[0],n=t[1],r=yr(n.getDate()-i.getDate()+1).map(function(e,t){return{text:i.getDate()+t,type:"current"}}),s=r.length%7,a=yr(s=0===s?0:7-s).map(function(e,t){return{text:t+1,type:"next"}});e=r.concat(a)}else{var o=this.date,l=fr(o),u=function(e,t){if(t<=0)return[];var i=new Date(e.getTime());i.setDate(0);var n=i.getDate();return yr(t).map(function(e,i){return n-(t-i-1)})}(o,(l=0===l?7:l)-("number"==typeof this.firstDayOfWeek?this.firstDayOfWeek:1)).map(function(e){return{text:e,type:"prev"}}),c=function(e){var t=new Date(e.getFullYear(),e.getMonth()+1,0).getDate();return yr(t).map(function(e,t){return t+1})}(o).map(function(e){return{text:e,type:"current"}});e=[].concat(u,c);var h=yr(42-e.length).map(function(e,t){return{text:t+1,type:"next"}});e=e.concat(h)}return this.toNestedArr(e)},weekDays:function(){var e=this.firstDayOfWeek,t=this.WEEK_DAYS;return"number"!=typeof e||0===e?t.slice():t.slice(e).concat(t.slice(0,e))}},render:function(){var e=this,t=arguments[0],i=this.hideHeader?null:t("thead",[this.weekDays.map(function(e){return t("th",{key:e},[e])})]);return t("table",{class:{"el-calendar-table":!0,"is-range":this.isInRange},attrs:{cellspacing:"0",cellpadding:"0"}},[i,t("tbody",[this.rows.map(function(i,n){return t("tr",{class:{"el-calendar-table__row":!0,"el-calendar-table__row--hide-border":0===n&&e.hideHeader},key:n},[i.map(function(i,n){return t("td",{key:n,class:e.getCellClass(i),on:{click:e.pickDay.bind(e,i)}},[t("div",{class:"el-calendar-day"},[e.cellRenderProxy(i)])])})])})])])}},void 0,void 0,!1,null,null,null);ed.options.__file="packages/calendar/src/date-table.vue";var td=ed.exports,id=["prev-month","today","next-month"],nd=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],rd=r({name:"ElCalendar",mixins:[q],components:{DateTable:td,ElButton:Et,ElButtonGroup:Pt},props:{value:[Date,String,Number],range:{type:Array,validator:function(e){return!Array.isArray(e)||2===e.length&&e.every(function(e){return"string"==typeof e||"number"==typeof e||e instanceof Date})}},firstDayOfWeek:{type:Number,default:1}},provide:function(){return{elCalendar:this}},methods:{pickDay:function(e){this.realSelectedDay=e},selectDate:function(e){if(-1===id.indexOf(e))throw new Error("invalid type "+e);var t="";(t="prev-month"===e?this.prevMonthDatePrefix+"-01":"next-month"===e?this.nextMonthDatePrefix+"-01":this.formatedToday)!==this.formatedDate&&this.pickDay(t)},toDate:function(e){if(!e)throw new Error("invalid val");return e instanceof Date?e:new Date(e)},rangeValidator:function(e,t){var i=this.realFirstDayOfWeek,n=t?i:0===i?6:i-1,r=(t?"start":"end")+" of range should be "+nd[n]+".";return e.getDay()===n||(console.warn("[ElementCalendar]",r,"Invalid range will be ignored."),!1)}},computed:{prevMonthDatePrefix:function(){var e=new Date(this.date.getTime());return e.setDate(0),sr.a.format(e,"yyyy-MM")},curMonthDatePrefix:function(){return sr.a.format(this.date,"yyyy-MM")},nextMonthDatePrefix:function(){var e=new Date(this.date.getFullYear(),this.date.getMonth()+1,1);return sr.a.format(e,"yyyy-MM")},formatedDate:function(){return sr.a.format(this.date,"yyyy-MM-dd")},i18nDate:function(){var e=this.date.getFullYear(),t=this.date.getMonth()+1;return e+" "+this.t("el.datepicker.year")+" "+this.t("el.datepicker.month"+t)},formatedToday:function(){return sr.a.format(this.now,"yyyy-MM-dd")},realSelectedDay:{get:function(){return this.value?this.formatedDate:this.selectedDay},set:function(e){this.selectedDay=e;var t=new Date(e);this.$emit("input",t)}},date:function(){if(this.value)return this.toDate(this.value);if(this.realSelectedDay){var e=this.selectedDay.split("-");return new Date(e[0],e[1]-1,e[2])}return this.validatedRange.length?this.validatedRange[0][0]:this.now},validatedRange:function(){var e=this,t=this.range;if(!t)return[];if(2===(t=t.reduce(function(t,i,n){var r=e.toDate(i);return e.rangeValidator(r,0===n)&&(t=t.concat(r)),t},[])).length){var i=t,n=i[0],r=i[1];if(n>r)return console.warn("[ElementCalendar]end time should be greater than start time"),[];if(Ir(n,r))return[[n,r]];var s=[],a=new Date(n.getFullYear(),n.getMonth()+1,1),o=this.toDate(a.getTime()-864e5);if(!Ir(a,r))return console.warn("[ElementCalendar]start time and end time interval must not exceed two months"),[];s.push([n,o]);var l=this.realFirstDayOfWeek,u=a.getDay(),c=0;return u!==l&&(c=0===l?7-u:(c=l-u)>0?c:7+c),(a=this.toDate(a.getTime()+864e5*c)).getDate()<r.getDate()&&s.push([a,r]),s}return[]},realFirstDayOfWeek:function(){return this.firstDayOfWeek<1||this.firstDayOfWeek>6?0:Math.floor(this.firstDayOfWeek)}},data:function(){return{selectedDay:"",now:new Date}}},Qh,[],!1,null,null,null);rd.options.__file="packages/calendar/src/main.vue";var sd=rd.exports;sd.install=function(e){e.component(sd.name,sd)};var ad=sd,od=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-fade-in"}},[e.visible?i("div",{staticClass:"el-backtop",style:{right:e.styleRight,bottom:e.styleBottom},on:{click:function(t){return t.stopPropagation(),e.handleClick(t)}}},[e._t("default",[i("el-icon",{attrs:{name:"caret-top"}})])],2):e._e()])};od._withStripped=!0;var ld=function(e){return Math.pow(e,3)},ud=r({name:"ElBacktop",props:{visibilityHeight:{type:Number,default:200},target:[String],right:{type:Number,default:40},bottom:{type:Number,default:40}},data:function(){return{el:null,container:null,visible:!1}},computed:{styleBottom:function(){return this.bottom+"px"},styleRight:function(){return this.right+"px"}},mounted:function(){this.init(),this.throttledScrollHandler=Mu()(300,this.onScroll),this.container.addEventListener("scroll",this.throttledScrollHandler)},methods:{init:function(){if(this.container=document,this.el=document.documentElement,this.target){if(this.el=document.querySelector(this.target),!this.el)throw new Error("target is not existed: "+this.target);this.container=this.el}},onScroll:function(){var e=this.el.scrollTop;this.visible=e>=this.visibilityHeight},handleClick:function(e){this.scrollToTop(),this.$emit("click",e)},scrollToTop:function(){var e=this.el,t=Date.now(),i=e.scrollTop,n=window.requestAnimationFrame||function(e){return setTimeout(e,16)};n(function r(){var s,a=(Date.now()-t)/500;a<1?(e.scrollTop=i*(1-((s=a)<.5?ld(2*s)/2:1-ld(2*(1-s))/2)),n(r)):e.scrollTop=0})}},beforeDestroy:function(){this.container.removeEventListener("scroll",this.throttledScrollHandler)}},od,[],!1,null,null,null);ud.options.__file="packages/backtop/src/main.vue";var cd=ud.exports;cd.install=function(e){e.component(cd.name,cd)};var hd=cd,dd=function(e,t){return e===window||e===document?document.documentElement[t]:e[t]},pd=function(e){return dd(e,"offsetHeight")},fd="ElInfiniteScroll",md={delay:{type:Number,default:200},distance:{type:Number,default:0},disabled:{type:Boolean,default:!1},immediate:{type:Boolean,default:!0}},vd=function(e,t){return v(e)?(i=md,Object.keys(i||{}).map(function(e){return[e,i[e]]})).reduce(function(i,n){var r=n[0],s=n[1],a=s.type,o=s.default,l=e.getAttribute("infinite-scroll-"+r);switch(l=b(t[l])?l:t[l],a){case Number:l=Number(l),l=Number.isNaN(l)?o:l;break;case Boolean:l=null!=l?"false"!==l&&Boolean(l):o;break;default:l=a(l)}return i[r]=l,i},{}):{};var i},gd=function(e){return e.getBoundingClientRect().top},bd=function(e){var t=this[fd],i=t.el,n=t.vm,r=t.container,s=t.observer,a=vd(i,n),o=a.distance;if(!a.disabled){var l=r.getBoundingClientRect();if(l.width||l.height){var u=!1;if(r===i){var c=r.scrollTop+function(e){return dd(e,"clientHeight")}(r);u=r.scrollHeight-c<=o}else{u=pd(i)+gd(i)-gd(r)-pd(r)+Number.parseFloat(function(e,t){if(e===window&&(e=document.documentElement),1!==e.nodeType)return[];var i=window.getComputedStyle(e,null);return t?i[t]:i}(r,"borderBottomWidth"))<=o}u&&g(e)?e.call(n):s&&(s.disconnect(),this[fd].observer=null)}}},yd={name:"InfiniteScroll",inserted:function(e,t,i){var n=t.value,r=i.context,s=be(e,!0),a=vd(e,r),o=a.delay,l=a.immediate,u=et()(o,bd.bind(e,n));(e[fd]={el:e,vm:r,container:s,onScroll:u},s)&&(s.addEventListener("scroll",u),l&&((e[fd].observer=new MutationObserver(u)).observe(s,{childList:!0,subtree:!0}),u()))},unbind:function(e){var t=e[fd],i=t.container,n=t.onScroll;i&&i.removeEventListener("scroll",n)},install:function(e){e.directive(yd.name,yd)}},wd=yd,_d=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-page-header"},[i("div",{staticClass:"el-page-header__left",on:{click:function(t){e.$emit("back")}}},[i("i",{staticClass:"el-icon-back"}),i("div",{staticClass:"el-page-header__title"},[e._t("title",[e._v(e._s(e.title))])],2)]),i("div",{staticClass:"el-page-header__content"},[e._t("content",[e._v(e._s(e.content))])],2)])};_d._withStripped=!0;var xd=r({name:"ElPageHeader",props:{title:{type:String,default:function(){return W("el.pageHeader.title")}},content:String}},_d,[],!1,null,null,null);xd.options.__file="packages/page-header/src/main.vue";var Cd=xd.exports;Cd.install=function(e){e.component(Cd.name,Cd)};var kd=Cd,Sd=r({name:"ElAvatar",props:{size:{type:[Number,String],validator:function(e){return"string"==typeof e?["large","medium","small"].includes(e):"number"==typeof e}},shape:{type:String,default:"circle",validator:function(e){return["circle","square"].includes(e)}},icon:String,src:String,alt:String,srcSet:String,error:Function,fit:{type:String,default:"cover"}},data:function(){return{isImageExist:!0}},computed:{avatarClass:function(){var e=this.size,t=this.icon,i=this.shape,n=["el-avatar"];return e&&"string"==typeof e&&n.push("el-avatar--"+e),t&&n.push("el-avatar--icon"),i&&n.push("el-avatar--"+i),n.join(" ")}},methods:{handleError:function(){var e=this.error;!1!==(e?e():void 0)&&(this.isImageExist=!1)},renderAvatar:function(){var e=this.$createElement,t=this.icon,i=this.src,n=this.alt,r=this.isImageExist,s=this.srcSet,a=this.fit;return r&&i?e("img",{attrs:{src:i,alt:n,srcSet:s},on:{error:this.handleError},style:{"object-fit":a}}):t?e("i",{class:t}):this.$slots.default}},render:function(){var e=arguments[0],t=this.avatarClass,i=this.size;return e("span",{class:t,style:"number"==typeof i?{height:i+"px",width:i+"px",lineHeight:i+"px"}:{}},[this.renderAvatar()])}},void 0,void 0,!1,null,null,null);Sd.options.__file="packages/avatar/src/main.vue";var Dd=Sd.exports;Dd.install=function(e){e.component(Dd.name,Dd)};var $d=Dd,Ed=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-drawer-fade"},on:{"after-enter":e.afterEnter,"after-leave":e.afterLeave}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-drawer__wrapper",attrs:{tabindex:"-1"}},[i("div",{staticClass:"el-drawer__container",class:e.visible&&"el-drawer__open",attrs:{role:"document",tabindex:"-1"},on:{click:function(t){return t.target!==t.currentTarget?null:e.handleWrapperClick(t)}}},[i("div",{ref:"drawer",staticClass:"el-drawer",class:[e.direction,e.customClass],style:e.isHorizontal?"width: "+e.drawerSize:"height: "+e.drawerSize,attrs:{"aria-modal":"true","aria-labelledby":"el-drawer__title","aria-label":e.title,role:"dialog",tabindex:"-1"}},[e.withHeader?i("header",{staticClass:"el-drawer__header",attrs:{id:"el-drawer__title"}},[e._t("title",[i("span",{attrs:{role:"heading",title:e.title}},[e._v(e._s(e.title))])]),e.showClose?i("button",{staticClass:"el-drawer__close-btn",attrs:{"aria-label":"close "+(e.title||"drawer"),type:"button"},on:{click:e.closeDrawer}},[i("i",{staticClass:"el-dialog__close el-icon el-icon-close"})]):e._e()],2):e._e(),e.rendered?i("section",{staticClass:"el-drawer__body"},[e._t("default")],2):e._e()])])])])};Ed._withStripped=!0;var Td=r({name:"ElDrawer",mixins:[Me,l],props:{appendToBody:{type:Boolean,default:!1},beforeClose:{type:Function},customClass:{type:String,default:""},closeOnPressEscape:{type:Boolean,default:!0},destroyOnClose:{type:Boolean,default:!1},modal:{type:Boolean,default:!0},direction:{type:String,default:"rtl",validator:function(e){return-1!==["ltr","rtl","ttb","btt"].indexOf(e)}},modalAppendToBody:{type:Boolean,default:!0},showClose:{type:Boolean,default:!0},size:{type:[Number,String],default:"30%"},title:{type:String,default:""},visible:{type:Boolean},wrapperClosable:{type:Boolean,default:!0},withHeader:{type:Boolean,default:!0}},computed:{isHorizontal:function(){return"rtl"===this.direction||"ltr"===this.direction},drawerSize:function(){return"number"==typeof this.size?this.size+"px":this.size}},data:function(){return{closed:!1,prevActiveElement:null}},watch:{visible:function(e){var t=this;e?(this.closed=!1,this.$emit("open"),this.appendToBody&&document.body.appendChild(this.$el),this.prevActiveElement=document.activeElement):(this.closed||this.$emit("close"),this.$nextTick(function(){t.prevActiveElement&&t.prevActiveElement.focus()}))}},methods:{afterEnter:function(){this.$emit("opened")},afterLeave:function(){this.$emit("closed")},hide:function(e){!1!==e&&(this.$emit("update:visible",!1),this.$emit("close"),!0===this.destroyOnClose&&(this.rendered=!1),this.closed=!0)},handleWrapperClick:function(){this.wrapperClosable&&this.closeDrawer()},closeDrawer:function(){"function"==typeof this.beforeClose?this.beforeClose(this.hide):this.hide()},handleClose:function(){this.closeDrawer()}},mounted:function(){this.visible&&(this.rendered=!0,this.open())},destroyed:function(){this.appendToBody&&this.$el&&this.$el.parentNode&&this.$el.parentNode.removeChild(this.$el)}},Ed,[],!1,null,null,null);Td.options.__file="packages/drawer/src/main.vue";var Md=Td.exports;Md.install=function(e){e.component(Md.name,Md)};var Nd=Md,Pd=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("el-popover",e._b({attrs:{trigger:"click"},model:{value:e.visible,callback:function(t){e.visible=t},expression:"visible"}},"el-popover",e.$attrs,!1),[i("div",{staticClass:"el-popconfirm"},[i("p",{staticClass:"el-popconfirm__main"},[e.hideIcon?e._e():i("i",{staticClass:"el-popconfirm__icon",class:e.icon,style:{color:e.iconColor}}),e._v("\n      "+e._s(e.title)+"\n    ")]),i("div",{staticClass:"el-popconfirm__action"},[i("el-button",{attrs:{size:"mini",type:e.cancelButtonType},on:{click:e.cancel}},[e._v("\n        "+e._s(e.displayCancelButtonText)+"\n      ")]),i("el-button",{attrs:{size:"mini",type:e.confirmButtonType},on:{click:e.confirm}},[e._v("\n        "+e._s(e.displayConfirmButtonText)+"\n      ")])],1)]),e._t("reference",null,{slot:"reference"})],2)};Pd._withStripped=!0;var Od=r({name:"ElPopconfirm",props:{title:{type:String},confirmButtonText:{type:String},cancelButtonText:{type:String},confirmButtonType:{type:String,default:"primary"},cancelButtonType:{type:String,default:"text"},icon:{type:String,default:"el-icon-question"},iconColor:{type:String,default:"#f90"},hideIcon:{type:Boolean,default:!1}},components:{ElPopover:Zs,ElButton:Et},data:function(){return{visible:!1}},computed:{displayConfirmButtonText:function(){return this.confirmButtonText||W("el.popconfirm.confirmButtonText")},displayCancelButtonText:function(){return this.cancelButtonText||W("el.popconfirm.cancelButtonText")}},methods:{confirm:function(){this.visible=!1,this.$emit("confirm")},cancel:function(){this.visible=!1,this.$emit("cancel")}}},Pd,[],!1,null,null,null);Od.options.__file="packages/popconfirm/src/main.vue";var Id=Od.exports;Id.install=function(e){e.component(Id.name,Id)};var Ad=Id,Fd=[pt,gt,kt,At,Bt,Wt,ei,ai,di,vi,ne,_i,Si,Mi,Ii,Vi,Ri,Yi,Xi,ct,ht,en,Et,Pt,Un,ir,Ts,Ls,Ys,Zs,ui,Ca,$a,Na,uo,yo,Co,Re,zo,qo,ul,Sl,$l,Ml,Kl,Al,Jl,hu,mu,yu,Cu,$u,Ou,Ze,Lu,Hu,qu,bc,Gc,eh,rh,lh,dh,vh,wh,Ch,$h,Nh,Ah,Zh,ad,hd,kd,hc,$d,Nd,Ad,ii],Ld=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};j.use(t.locale),j.i18n(t.i18n),Fd.forEach(function(t){e.component(t.name,t)}),e.use(wd),e.use(_l.directive),e.prototype.$ELEMENT={size:t.size||"",zIndex:t.zIndex||2e3},e.prototype.$loading=_l.service,e.prototype.$msgbox=ya,e.prototype.$alert=ya.alert,e.prototype.$confirm=ya.confirm,e.prototype.$prompt=ya.prompt,e.prototype.$notify=tl,e.prototype.$message=ou};"undefined"!=typeof window&&window.Vue&&Ld(window.Vue);t.default={version:"2.15.1",locale:j.use,i18n:j.i18n,install:Ld,CollapseTransition:ii,Loading:_l,Pagination:pt,Dialog:gt,Autocomplete:kt,Dropdown:At,DropdownMenu:Bt,DropdownItem:Wt,Menu:ei,Submenu:ai,MenuItem:di,MenuItemGroup:vi,Input:ne,InputNumber:_i,Radio:Si,RadioGroup:Mi,RadioButton:Ii,Checkbox:Vi,CheckboxButton:Ri,CheckboxGroup:Yi,Switch:Xi,Select:ct,Option:ht,OptionGroup:en,Button:Et,ButtonGroup:Pt,Table:Un,TableColumn:ir,DatePicker:Ts,TimeSelect:Ls,TimePicker:Ys,Popover:Zs,Tooltip:ui,MessageBox:ya,Breadcrumb:Ca,BreadcrumbItem:$a,Form:Na,FormItem:uo,Tabs:yo,TabPane:Co,Tag:Re,Tree:zo,Alert:qo,Notification:tl,Slider:ul,Icon:Sl,Row:$l,Col:Ml,Upload:Kl,Progress:Al,Spinner:Jl,Message:ou,Badge:hu,Card:mu,Rate:yu,Steps:Cu,Step:$u,Carousel:Ou,Scrollbar:Ze,CarouselItem:Lu,Collapse:Hu,CollapseItem:qu,Cascader:bc,ColorPicker:Gc,Transfer:eh,Container:rh,Header:lh,Aside:dh,Main:vh,Footer:wh,Timeline:Ch,TimelineItem:$h,Link:Nh,Divider:Ah,Image:Zh,Calendar:ad,Backtop:hd,InfiniteScroll:wd,PageHeader:kd,CascaderPanel:hc,Avatar:$d,Drawer:Nd,Popconfirm:Ad}}]).default});
\ No newline at end of file
diff --git a/xcxMapSecurityPosition/lid/jquery.js b/xcxMapSecurityPosition/lid/jquery.js
deleted file mode 100644
index a1c07fd..0000000
--- a/xcxMapSecurityPosition/lid/jquery.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */
-!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}k.fn=k.prototype={jquery:f,constructor:k,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=k.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return k.each(this,e)},map:function(n){return this.pushStack(k.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},k.extend=k.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(k.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||k.isPlainObject(n)?n:{},i=!1,a[t]=k.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},k.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t){b(e,{nonce:t&&t.nonce})},each:function(e,t){var n,r=0;if(d(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(p,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(d(Object(e))?k.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(d(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g.apply([],a)},guid:1,support:y}),"function"==typeof Symbol&&(k.fn[Symbol.iterator]=t[Symbol.iterator]),k.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var h=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,k="sizzle"+1*new Date,m=n.document,S=0,r=0,p=ue(),x=ue(),N=ue(),A=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",$=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",F=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="<a id='"+k+"'></a><select id='"+k+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!==C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!==C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&j.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(D),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(F," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[S,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[S,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[k]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace(B,"$1"));return s[k]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[S,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[k]||(e[k]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===S&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[k]&&(v=Ce(v)),y&&!y[k]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[k]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(B,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(B," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=N[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[k]?i.push(a):o.push(a);(a=N(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=S+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t===C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument===C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(S=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(S=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=k.split("").sort(D).join("")===k,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);k.find=h,k.expr=h.selectors,k.expr[":"]=k.expr.pseudos,k.uniqueSort=k.unique=h.uniqueSort,k.text=h.getText,k.isXMLDoc=h.isXML,k.contains=h.contains,k.escapeSelector=h.escape;var T=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&k(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},N=k.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var D=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1<i.call(n,e)!==r}):k.filter(n,e,r)}k.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?k.find.matchesSelector(r,e)?[r]:[]:k.find.matches(e,k.grep(t,function(e){return 1===e.nodeType}))},k.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(k(e).filter(function(){for(t=0;t<r;t++)if(k.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)k.find(e,i[t],n);return 1<r?k.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&N.test(e)?k(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(k.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&k(e);if(!N.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&k.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?k.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(k(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(k.uniqueSort(k.merge(this.get(),k(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),k.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return T(e,"parentNode")},parentsUntil:function(e,t,n){return T(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return T(e,"nextSibling")},prevAll:function(e){return T(e,"previousSibling")},nextUntil:function(e,t,n){return T(e,"nextSibling",n)},prevUntil:function(e,t,n){return T(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return"undefined"!=typeof e.contentDocument?e.contentDocument:(A(e,"template")&&(e=e.content||e),k.merge([],e.childNodes))}},function(r,i){k.fn[r]=function(e,t){var n=k.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=k.filter(t,n)),1<this.length&&(O[r]||k.uniqueSort(n),H.test(r)&&n.reverse()),this.pushStack(n)}});var R=/[^\x20\t\r\n\f]+/g;function M(e){return e}function I(e){throw e}function W(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}k.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},k.each(e.match(R)||[],function(e,t){n[t]=!0}),n):k.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){k.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return k.each(arguments,function(e,t){var n;while(-1<(n=k.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<k.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},k.extend({Deferred:function(e){var o=[["notify","progress",k.Callbacks("memory"),k.Callbacks("memory"),2],["resolve","done",k.Callbacks("once memory"),k.Callbacks("once memory"),0,"resolved"],["reject","fail",k.Callbacks("once memory"),k.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return k.Deferred(function(r){k.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,M,s),l(u,o,I,s)):(u++,t.call(e,l(u,o,M,s),l(u,o,I,s),l(u,o,M,o.notifyWith))):(a!==M&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){k.Deferred.exceptionHook&&k.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==I&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(k.Deferred.getStackHook&&(t.stackTrace=k.Deferred.getStackHook()),C.setTimeout(t))}}return k.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:M,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:M)),o[2][3].add(l(0,e,m(n)?n:I))}).promise()},promise:function(e){return null!=e?k.extend(e,a):a}},s={};return k.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=k.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(W(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)W(i[t],a(t),o.reject);return o.promise()}});var $=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;k.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&$.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},k.readyException=function(e){C.setTimeout(function(){throw e})};var F=k.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),k.ready()}k.fn.ready=function(e){return F.then(e)["catch"](function(e){k.readyException(e)}),this},k.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--k.readyWait:k.isReady)||(k.isReady=!0)!==e&&0<--k.readyWait||F.resolveWith(E,[k])}}),k.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(k.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var _=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)_(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(k(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},z=/^-ms-/,U=/-([a-z])/g;function X(e,t){return t.toUpperCase()}function V(e){return e.replace(z,"ms-").replace(U,X)}var G=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Y(){this.expando=k.expando+Y.uid++}Y.uid=1,Y.prototype={cache:function(e){var t=e[this.expando];return t||(t={},G(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[V(t)]=n;else for(r in t)i[V(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][V(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(V):(t=V(t))in r?[t]:t.match(R)||[]).length;while(n--)delete r[t[n]]}(void 0===t||k.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!k.isEmptyObject(t)}};var Q=new Y,J=new Y,K=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Z=/[A-Z]/g;function ee(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Z,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:K.test(i)?JSON.parse(i):i)}catch(e){}J.set(e,t,n)}else n=void 0;return n}k.extend({hasData:function(e){return J.hasData(e)||Q.hasData(e)},data:function(e,t,n){return J.access(e,t,n)},removeData:function(e,t){J.remove(e,t)},_data:function(e,t,n){return Q.access(e,t,n)},_removeData:function(e,t){Q.remove(e,t)}}),k.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=J.get(o),1===o.nodeType&&!Q.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=V(r.slice(5)),ee(o,r,i[r]));Q.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){J.set(this,n)}):_(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=J.get(o,n))?t:void 0!==(t=ee(o,n))?t:void 0;this.each(function(){J.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){J.remove(this,e)})}}),k.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Q.get(e,t),n&&(!r||Array.isArray(n)?r=Q.access(e,t,k.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=k.queue(e,t),r=n.length,i=n.shift(),o=k._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){k.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Q.get(e,n)||Q.access(e,n,{empty:k.Callbacks("once memory").add(function(){Q.remove(e,[t+"queue",n])})})}}),k.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?k.queue(this[0],t):void 0===n?this:this.each(function(){var e=k.queue(this,t,n);k._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&k.dequeue(this,t)})},dequeue:function(e){return this.each(function(){k.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=k.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Q.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var te=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ne=new RegExp("^(?:([+-])=|)("+te+")([a-z%]*)$","i"),re=["Top","Right","Bottom","Left"],ie=E.documentElement,oe=function(e){return k.contains(e.ownerDocument,e)},ae={composed:!0};ie.getRootNode&&(oe=function(e){return k.contains(e.ownerDocument,e)||e.getRootNode(ae)===e.ownerDocument});var se=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&oe(e)&&"none"===k.css(e,"display")},ue=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];for(o in i=n.apply(e,r||[]),t)e.style[o]=a[o];return i};function le(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return k.css(e,t,"")},u=s(),l=n&&n[3]||(k.cssNumber[t]?"":"px"),c=e.nodeType&&(k.cssNumber[t]||"px"!==l&&+u)&&ne.exec(k.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)k.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,k.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ce={};function fe(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Q.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&se(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ce[s])||(o=a.body.appendChild(a.createElement(s)),u=k.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ce[s]=u)))):"none"!==n&&(l[c]="none",Q.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}k.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){se(this)?k(this).show():k(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Q.set(e[n],"globalEval",!t||Q.get(t[n],"globalEval"))}ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;var me,xe,be=/<|&#?\w+;/;function we(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))k.merge(p,o.nodeType?[o]:o);else if(be.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+k.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;k.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<k.inArray(o,r))i&&i.push(o);else if(l=oe(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}me=E.createDocumentFragment().appendChild(E.createElement("div")),(xe=E.createElement("input")).setAttribute("type","radio"),xe.setAttribute("checked","checked"),xe.setAttribute("name","t"),me.appendChild(xe),y.checkClone=me.cloneNode(!0).cloneNode(!0).lastChild.checked,me.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t<arguments.length;t++)u[t]=arguments[t];if(s.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,s)){a=k.event.handlers.call(this,s,l),t=0;while((i=a[t++])&&!s.isPropagationStopped()){s.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!s.isImmediatePropagationStopped())s.rnamespace&&!1!==o.namespace&&!s.rnamespace.test(o.namespace)||(s.handleObj=o,s.data=o.data,void 0!==(r=((k.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,u))&&!1===(s.result=r)&&(s.preventDefault(),s.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<k(i,this).index(l):k.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(k.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[k.expando]?e:new k.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click",ke),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Q.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},k.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},k.Event=function(e,t){if(!(this instanceof k.Event))return new k.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?ke:Se,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&k.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[k.expando]=!0},k.Event.prototype={constructor:k.Event,isDefaultPrevented:Se,isPropagationStopped:Se,isImmediatePropagationStopped:Se,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=ke,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=ke,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=ke,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},k.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&Te.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Ce.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},k.event.addProp),k.each({focus:"focusin",blur:"focusout"},function(e,t){k.event.special[e]={setup:function(){return De(this,e,Ne),!1},trigger:function(){return De(this,e),!0},delegateType:t}}),k.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){k.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||k.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),k.fn.extend({on:function(e,t,n,r){return Ae(this,e,t,n,r)},one:function(e,t,n,r){return Ae(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,k(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Se),this.each(function(){k.event.remove(this,e,n,t)})}});var je=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/<script|<style|<link/i,Le=/checked\s*(?:[^=]|=\s*.checked.)/i,He=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n<r;n++)k.event.add(t,i,l[i][n]);J.hasData(e)&&(s=J.access(e),u=k.extend({},s),J.set(t,u))}}function Ie(n,r,i,o){r=g.apply([],r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Le.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),Ie(t,r,i,o)});if(f&&(t=(e=we(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=k.map(ve(e,"script"),Pe)).length;c<f;c++)u=e,c!==p&&(u=k.clone(u,!0,!0),s&&k.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,k.map(a,Re),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Q.access(u,"globalEval")&&k.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?k._evalUrl&&!u.noModule&&k._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")}):b(u.textContent.replace(He,""),u,l))}return n}function We(e,t,n){for(var r,i=t?k.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||k.cleanData(ve(r)),r.parentNode&&(n&&oe(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}k.extend({htmlPrefilter:function(e){return e.replace(je,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Me(o[r],a[r]);else Me(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=k.event.special,o=0;void 0!==(n=e[o]);o++)if(G(n)){if(t=n[Q.expando]){if(t.events)for(r in t.events)i[r]?k.event.remove(n,r):k.removeEvent(n,r,t.handle);n[Q.expando]=void 0}n[J.expando]&&(n[J.expando]=void 0)}}}),k.fn.extend({detach:function(e){return We(this,e,!0)},remove:function(e){return We(this,e)},text:function(e){return _(this,function(e){return void 0===e?k.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Ie(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Oe(this,e).appendChild(e)})},prepend:function(){return Ie(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Oe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(k.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return k.clone(this,e,t)})},html:function(e){return _(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!qe.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=k.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(k.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Ie(this,arguments,function(e){var t=this.parentNode;k.inArray(this,n)<0&&(k.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),k.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){k.fn[e]=function(e){for(var t,n=[],r=k(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),k(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var $e=new RegExp("^("+te+")(?!px)[a-z%]+$","i"),Fe=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Be=new RegExp(re.join("|"),"i");function _e(e,t,n){var r,i,o,a,s=e.style;return(n=n||Fe(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||oe(e)||(a=k.style(e,t)),!y.pixelBoxStyles()&&$e.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function ze(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(u){s.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",u.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",ie.appendChild(s).appendChild(u);var e=C.getComputedStyle(u);n="1%"!==e.top,a=12===t(e.marginLeft),u.style.right="60%",o=36===t(e.right),r=36===t(e.width),u.style.position="absolute",i=12===t(u.offsetWidth/3),ie.removeChild(s),u=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s=E.createElement("div"),u=E.createElement("div");u.style&&(u.style.backgroundClip="content-box",u.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===u.style.backgroundClip,k.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),a},scrollboxSize:function(){return e(),i}}))}();var Ue=["Webkit","Moz","ms"],Xe=E.createElement("div").style,Ve={};function Ge(e){var t=k.cssProps[e]||Ve[e];return t||(e in Xe?e:Ve[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Ue.length;while(n--)if((e=Ue[n]+t)in Xe)return e}(e)||e)}var Ye=/^(none|table(?!-c[ea]).+)/,Qe=/^--/,Je={position:"absolute",visibility:"hidden",display:"block"},Ke={letterSpacing:"0",fontWeight:"400"};function Ze(e,t,n){var r=ne.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function et(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=k.css(e,n+re[a],!0,i)),r?("content"===n&&(u-=k.css(e,"padding"+re[a],!0,i)),"margin"!==n&&(u-=k.css(e,"border"+re[a]+"Width",!0,i))):(u+=k.css(e,"padding"+re[a],!0,i),"padding"!==n?u+=k.css(e,"border"+re[a]+"Width",!0,i):s+=k.css(e,"border"+re[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function tt(e,t,n){var r=Fe(e),i=(!y.boxSizingReliable()||n)&&"border-box"===k.css(e,"boxSizing",!1,r),o=i,a=_e(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if($e.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||"auto"===a||!parseFloat(a)&&"inline"===k.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===k.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+et(e,t,n||(i?"border":"content"),o,r,a)+"px"}function nt(e,t,n,r,i){return new nt.prototype.init(e,t,n,r,i)}k.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=_e(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=V(t),u=Qe.test(t),l=e.style;if(u||(t=Ge(s)),a=k.cssHooks[t]||k.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=ne.exec(n))&&i[1]&&(n=le(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(k.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=V(t);return Qe.test(t)||(t=Ge(s)),(a=k.cssHooks[t]||k.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=_e(e,t,r)),"normal"===i&&t in Ke&&(i=Ke[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),k.each(["height","width"],function(e,u){k.cssHooks[u]={get:function(e,t,n){if(t)return!Ye.test(k.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?tt(e,u,n):ue(e,Je,function(){return tt(e,u,n)})},set:function(e,t,n){var r,i=Fe(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===k.css(e,"boxSizing",!1,i),s=n?et(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-et(e,u,"border",!1,i)-.5)),s&&(r=ne.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=k.css(e,u)),Ze(0,t,s)}}}),k.cssHooks.marginLeft=ze(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(_e(e,"marginLeft"))||e.getBoundingClientRect().left-ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),k.each({margin:"",padding:"",border:"Width"},function(i,o){k.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+re[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(k.cssHooks[i+o].set=Ze)}),k.fn.extend({css:function(e,t){return _(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Fe(e),i=t.length;a<i;a++)o[t[a]]=k.css(e,t[a],!1,r);return o}return void 0!==n?k.style(e,t,n):k.css(e,t)},e,t,1<arguments.length)}}),((k.Tween=nt).prototype={constructor:nt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||k.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(k.cssNumber[n]?"":"px")},cur:function(){var e=nt.propHooks[this.prop];return e&&e.get?e.get(this):nt.propHooks._default.get(this)},run:function(e){var t,n=nt.propHooks[this.prop];return this.options.duration?this.pos=t=k.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):nt.propHooks._default.set(this),this}}).init.prototype=nt.prototype,(nt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=k.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){k.fx.step[e.prop]?k.fx.step[e.prop](e):1!==e.elem.nodeType||!k.cssHooks[e.prop]&&null==e.elem.style[Ge(e.prop)]?e.elem[e.prop]=e.now:k.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=nt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},k.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},k.fx=nt.prototype.init,k.fx.step={};var rt,it,ot,at,st=/^(?:toggle|show|hide)$/,ut=/queueHooks$/;function lt(){it&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(lt):C.setTimeout(lt,k.fx.interval),k.fx.tick())}function ct(){return C.setTimeout(function(){rt=void 0}),rt=Date.now()}function ft(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=re[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function pt(e,t,n){for(var r,i=(dt.tweeners[t]||[]).concat(dt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function dt(o,e,t){var n,a,r=0,i=dt.prefilters.length,s=k.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=rt||ct(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:k.extend({},e),opts:k.extend(!0,{specialEasing:{},easing:k.easing._default},t),originalProperties:e,originalOptions:t,startTime:rt||ct(),duration:t.duration,tweens:[],createTween:function(e,t){var n=k.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=V(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=k.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=dt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(k._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return k.map(c,pt,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),k.fx.timer(k.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}k.Animation=k.extend(dt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return le(n.elem,e,ne.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(R);for(var n,r=0,i=e.length;r<i;r++)n=e[r],dt.tweeners[n]=dt.tweeners[n]||[],dt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&se(e),v=Q.get(e,"fxshow");for(r in n.queue||(null==(a=k._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,k.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],st.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||k.style(e,r)}if((u=!k.isEmptyObject(t))||!k.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Q.get(e,"display")),"none"===(c=k.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=k.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===k.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Q.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&fe([e],!0),p.done(function(){for(r in g||fe([e]),Q.remove(e,"fxshow"),d)k.style(e,r,d[r])})),u=pt(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?dt.prefilters.unshift(e):dt.prefilters.push(e)}}),k.speed=function(e,t,n){var r=e&&"object"==typeof e?k.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return k.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in k.fx.speeds?r.duration=k.fx.speeds[r.duration]:r.duration=k.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&k.dequeue(this,r.queue)},r},k.fn.extend({fadeTo:function(e,t,n,r){return this.filter(se).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=k.isEmptyObject(t),o=k.speed(e,n,r),a=function(){var e=dt(this,k.extend({},t),o);(i||Q.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&!1!==i&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=k.timers,r=Q.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&ut.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||k.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Q.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=k.timers,o=n?n.length:0;for(t.finish=!0,k.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),k.each(["toggle","show","hide"],function(e,r){var i=k.fn[r];k.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(ft(r,!0),e,t,n)}}),k.each({slideDown:ft("show"),slideUp:ft("hide"),slideToggle:ft("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){k.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),k.timers=[],k.fx.tick=function(){var e,t=0,n=k.timers;for(rt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||k.fx.stop(),rt=void 0},k.fx.timer=function(e){k.timers.push(e),k.fx.start()},k.fx.interval=13,k.fx.start=function(){it||(it=!0,lt())},k.fx.stop=function(){it=null},k.fx.speeds={slow:600,fast:200,_default:400},k.fn.delay=function(r,e){return r=k.fx&&k.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},ot=E.createElement("input"),at=E.createElement("select").appendChild(E.createElement("option")),ot.type="checkbox",y.checkOn=""!==ot.value,y.optSelected=at.selected,(ot=E.createElement("input")).value="t",ot.type="radio",y.radioValue="t"===ot.value;var ht,gt=k.expr.attrHandle;k.fn.extend({attr:function(e,t){return _(this,k.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){k.removeAttr(this,e)})}}),k.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?k.prop(e,t,n):(1===o&&k.isXMLDoc(e)||(i=k.attrHooks[t.toLowerCase()]||(k.expr.match.bool.test(t)?ht:void 0)),void 0!==n?null===n?void k.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=k.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(R);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ht={set:function(e,t,n){return!1===t?k.removeAttr(e,n):e.setAttribute(n,n),n}},k.each(k.expr.match.bool.source.match(/\w+/g),function(e,t){var a=gt[t]||k.find.attr;gt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=gt[o],gt[o]=r,r=null!=a(e,t,n)?o:null,gt[o]=i),r}});var vt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;function mt(e){return(e.match(R)||[]).join(" ")}function xt(e){return e.getAttribute&&e.getAttribute("class")||""}function bt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(R)||[]}k.fn.extend({prop:function(e,t){return _(this,k.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[k.propFix[e]||e]})}}),k.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&k.isXMLDoc(e)||(t=k.propFix[t]||t,i=k.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=k.find.attr(e,"tabindex");return t?parseInt(t,10):vt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(k.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),k.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){k.propFix[this.toLowerCase()]=this}),k.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).addClass(t.call(this,e,xt(this)))});if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).removeClass(t.call(this,e,xt(this)))});if(!arguments.length)return this.attr("class","");if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){k(this).toggleClass(i.call(this,e,xt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=k(this),r=bt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=xt(this))&&Q.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Q.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+mt(xt(n))+" ").indexOf(t))return!0;return!1}});var wt=/\r/g;k.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,k(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=k.map(t,function(e){return null==e?"":e+""})),(r=k.valHooks[this.type]||k.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=k.valHooks[t.type]||k.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(wt,""):null==e?"":e:void 0}}),k.extend({valHooks:{option:{get:function(e){var t=k.find.attr(e,"value");return null!=t?t:mt(k.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=k(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=k.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<k.inArray(k.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),k.each(["radio","checkbox"],function(){k.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<k.inArray(k(e).val(),t)}},y.checkOn||(k.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var Tt=/^(?:focusinfocus|focusoutblur)$/,Ct=function(e){e.stopPropagation()};k.extend(k.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!Tt.test(d+k.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[k.expando]?e:new k.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:k.makeArray(t,[e]),c=k.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,Tt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Q.get(o,"events")||{})[e.type]&&Q.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&G(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!G(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),k.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,Ct),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,Ct),k.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=k.extend(new k.Event,n,{type:e,isSimulated:!0});k.event.trigger(r,null,t)}}),k.fn.extend({trigger:function(e,t){return this.each(function(){k.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return k.event.trigger(e,t,n,!0)}}),y.focusin||k.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){k.event.simulate(r,e.target,k.event.fix(e))};k.event.special[r]={setup:function(){var e=this.ownerDocument||this,t=Q.access(e,r);t||e.addEventListener(n,i,!0),Q.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this,t=Q.access(e,r)-1;t?Q.access(e,r,t):(e.removeEventListener(n,i,!0),Q.remove(e,r))}}});var Et=C.location,kt=Date.now(),St=/\?/;k.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||k.error("Invalid XML: "+e),t};var Nt=/\[\]$/,At=/\r?\n/g,Dt=/^(?:submit|button|image|reset|file)$/i,jt=/^(?:input|select|textarea|keygen)/i;function qt(n,e,r,i){var t;if(Array.isArray(e))k.each(e,function(e,t){r||Nt.test(n)?i(n,t):qt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)qt(n+"["+t+"]",e[t],r,i)}k.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!k.isPlainObject(e))k.each(e,function(){i(this.name,this.value)});else for(n in e)qt(n,e[n],t,i);return r.join("&")},k.fn.extend({serialize:function(){return k.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=k.prop(this,"elements");return e?k.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!k(this).is(":disabled")&&jt.test(this.nodeName)&&!Dt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=k(this).val();return null==n?null:Array.isArray(n)?k.map(n,function(e){return{name:t.name,value:e.replace(At,"\r\n")}}):{name:t.name,value:n.replace(At,"\r\n")}}).get()}});var Lt=/%20/g,Ht=/#.*$/,Ot=/([?&])_=[^&]*/,Pt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Rt=/^(?:GET|HEAD)$/,Mt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Ft=E.createElement("a");function Bt(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(R)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function _t(t,i,o,a){var s={},u=t===Wt;function l(e){var r;return s[e]=!0,k.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function zt(e,t){var n,r,i=k.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&k.extend(!0,e,r),e}Ft.href=Et.href,k.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Et.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":k.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,k.ajaxSettings),t):zt(k.ajaxSettings,e)},ajaxPrefilter:Bt(It),ajaxTransport:Bt(Wt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=k.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?k(y):k.event,x=k.Deferred(),b=k.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Pt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Et.href)+"").replace(Mt,Et.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(R)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Ft.protocol+"//"+Ft.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=k.param(v.data,v.traditional)),_t(It,v,t,T),h)return T;for(i in(g=k.event&&v.global)&&0==k.active++&&k.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Rt.test(v.type),f=v.url.replace(Ht,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Lt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(St.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Ot,"$1"),o=(St.test(f)?"&":"?")+"_="+kt+++o),v.url=f+o),v.ifModified&&(k.lastModified[f]&&T.setRequestHeader("If-Modified-Since",k.lastModified[f]),k.etag[f]&&T.setRequestHeader("If-None-Match",k.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+$t+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=_t(Wt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(k.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(k.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--k.active||k.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return k.get(e,t,n,"json")},getScript:function(e,t){return k.get(e,void 0,t,"script")}}),k.each(["get","post"],function(e,i){k[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),k.ajax(k.extend({url:e,type:i,dataType:r,data:t,success:n},k.isPlainObject(e)&&e))}}),k._evalUrl=function(e,t){return k.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){k.globalEval(e,t)}})},k.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=k(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){k(this).wrapInner(n.call(this,e))}):this.each(function(){var e=k(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){k(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){k(this).replaceWith(this.childNodes)}),this}}),k.expr.pseudos.hidden=function(e){return!k.expr.pseudos.visible(e)},k.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},k.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Ut={0:200,1223:204},Xt=k.ajaxSettings.xhr();y.cors=!!Xt&&"withCredentials"in Xt,y.ajax=Xt=!!Xt,k.ajaxTransport(function(i){var o,a;if(y.cors||Xt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Ut[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),k.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),k.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return k.globalEval(e),e}}}),k.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),k.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=k("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=mt(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&k.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?k("<div>").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}}),k.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),k.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),k.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||k.guid++,i},k.holdReady=function(e){e?k.readyWait++:k.ready(!0)},k.isArray=Array.isArray,k.parseJSON=JSON.parse,k.nodeName=A,k.isFunction=m,k.isWindow=x,k.camelCase=V,k.type=w,k.now=Date.now,k.isNumeric=function(e){var t=k.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return k});var Qt=C.jQuery,Jt=C.$;return k.noConflict=function(e){return C.$===k&&(C.$=Jt),e&&C.jQuery===k&&(C.jQuery=Qt),k},e||(C.jQuery=C.$=k),k});
diff --git a/xcxMapSecurityPosition/lid/leaflet.css b/xcxMapSecurityPosition/lid/leaflet.css
deleted file mode 100644
index 017fa0e..0000000
--- a/xcxMapSecurityPosition/lid/leaflet.css
+++ /dev/null
@@ -1,640 +0,0 @@
-/* required styles */
-
-.leaflet-pane,
-.leaflet-tile,
-.leaflet-marker-icon,
-.leaflet-marker-shadow,
-.leaflet-tile-container,
-.leaflet-pane > svg,
-.leaflet-pane > canvas,
-.leaflet-zoom-box,
-.leaflet-image-layer,
-.leaflet-layer {
-	position: absolute;
-	left: 0;
-	top: 0;
-	}
-.leaflet-container {
-	overflow: hidden;
-	}
-.leaflet-tile,
-.leaflet-marker-icon,
-.leaflet-marker-shadow {
-	-webkit-user-select: none;
-	   -moz-user-select: none;
-	        user-select: none;
-	  -webkit-user-drag: none;
-	}
-/* Prevents IE11 from highlighting tiles in blue */
-.leaflet-tile::selection {
-	background: transparent;
-}
-/* Safari renders non-retina tile on retina better with this, but Chrome is worse */
-.leaflet-safari .leaflet-tile {
-	image-rendering: -webkit-optimize-contrast;
-	}
-/* hack that prevents hw layers "stretching" when loading new tiles */
-.leaflet-safari .leaflet-tile-container {
-	width: 1600px;
-	height: 1600px;
-	-webkit-transform-origin: 0 0;
-	}
-.leaflet-marker-icon,
-.leaflet-marker-shadow {
-	display: block;
-	}
-/* .leaflet-container svg: reset svg max-width decleration shipped in Joomla! (joomla.org) 3.x */
-/* .leaflet-container img: map is broken in FF if you have max-width: 100% on tiles */
-.leaflet-container .leaflet-overlay-pane svg,
-.leaflet-container .leaflet-marker-pane img,
-.leaflet-container .leaflet-shadow-pane img,
-.leaflet-container .leaflet-tile-pane img,
-.leaflet-container img.leaflet-image-layer,
-.leaflet-container .leaflet-tile {
-	max-width: none !important;
-	max-height: none !important;
-	}
-
-.leaflet-container.leaflet-touch-zoom {
-	-ms-touch-action: pan-x pan-y;
-	touch-action: pan-x pan-y;
-	}
-.leaflet-container.leaflet-touch-drag {
-	-ms-touch-action: pinch-zoom;
-	/* Fallback for FF which doesn't support pinch-zoom */
-	touch-action: none;
-	touch-action: pinch-zoom;
-}
-.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom {
-	-ms-touch-action: none;
-	touch-action: none;
-}
-.leaflet-container {
-	-webkit-tap-highlight-color: transparent;
-}
-.leaflet-container a {
-	-webkit-tap-highlight-color: rgba(51, 181, 229, 0.4);
-}
-.leaflet-tile {
-	filter: inherit;
-	visibility: hidden;
-	}
-.leaflet-tile-loaded {
-	visibility: inherit;
-	}
-.leaflet-zoom-box {
-	width: 0;
-	height: 0;
-	-moz-box-sizing: border-box;
-	     box-sizing: border-box;
-	z-index: 800;
-	}
-/* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */
-.leaflet-overlay-pane svg {
-	-moz-user-select: none;
-	}
-
-.leaflet-pane         { z-index: 400; }
-
-.leaflet-tile-pane    { z-index: 200; }
-.leaflet-overlay-pane { z-index: 400; }
-.leaflet-shadow-pane  { z-index: 500; }
-.leaflet-marker-pane  { z-index: 600; }
-.leaflet-tooltip-pane   { z-index: 650; }
-.leaflet-popup-pane   { z-index: 700; }
-
-.leaflet-map-pane canvas { z-index: 100; }
-.leaflet-map-pane svg    { z-index: 200; }
-
-.leaflet-vml-shape {
-	width: 1px;
-	height: 1px;
-	}
-.lvml {
-	behavior: url(#default#VML);
-	display: inline-block;
-	position: absolute;
-	}
-
-
-/* control positioning */
-
-.leaflet-control {
-	position: relative;
-	z-index: 800;
-	pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */
-	pointer-events: auto;
-	}
-.leaflet-top,
-.leaflet-bottom {
-	position: absolute;
-	z-index: 1000;
-	pointer-events: none;
-	}
-.leaflet-top {
-	top: 0;
-	}
-.leaflet-right {
-	right: 0;
-	}
-.leaflet-bottom {
-	bottom: 0;
-	}
-.leaflet-left {
-	left: 0;
-	}
-.leaflet-control {
-	float: left;
-	clear: both;
-	}
-.leaflet-right .leaflet-control {
-	float: right;
-	}
-.leaflet-top .leaflet-control {
-	margin-top: 10px;
-	}
-.leaflet-bottom .leaflet-control {
-	margin-bottom: 10px;
-	}
-.leaflet-left .leaflet-control {
-	margin-left: 10px;
-	}
-.leaflet-right .leaflet-control {
-	margin-right: 10px;
-	}
-
-
-/* zoom and fade animations */
-
-.leaflet-fade-anim .leaflet-tile {
-	will-change: opacity;
-	}
-.leaflet-fade-anim .leaflet-popup {
-	opacity: 0;
-	-webkit-transition: opacity 0.2s linear;
-	   -moz-transition: opacity 0.2s linear;
-	        transition: opacity 0.2s linear;
-	}
-.leaflet-fade-anim .leaflet-map-pane .leaflet-popup {
-	opacity: 1;
-	}
-.leaflet-zoom-animated {
-	-webkit-transform-origin: 0 0;
-	    -ms-transform-origin: 0 0;
-	        transform-origin: 0 0;
-	}
-.leaflet-zoom-anim .leaflet-zoom-animated {
-	will-change: transform;
-	}
-.leaflet-zoom-anim .leaflet-zoom-animated {
-	-webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1);
-	   -moz-transition:    -moz-transform 0.25s cubic-bezier(0,0,0.25,1);
-	        transition:         transform 0.25s cubic-bezier(0,0,0.25,1);
-	}
-.leaflet-zoom-anim .leaflet-tile,
-.leaflet-pan-anim .leaflet-tile {
-	-webkit-transition: none;
-	   -moz-transition: none;
-	        transition: none;
-	}
-
-.leaflet-zoom-anim .leaflet-zoom-hide {
-	visibility: hidden;
-	}
-
-
-/* cursors */
-
-.leaflet-interactive {
-	cursor: pointer;
-	}
-.leaflet-grab {
-	cursor: -webkit-grab;
-	cursor:    -moz-grab;
-	cursor:         grab;
-	}
-.leaflet-crosshair,
-.leaflet-crosshair .leaflet-interactive {
-	cursor: crosshair;
-	}
-.leaflet-popup-pane,
-.leaflet-control {
-	cursor: auto;
-	}
-.leaflet-dragging .leaflet-grab,
-.leaflet-dragging .leaflet-grab .leaflet-interactive,
-.leaflet-dragging .leaflet-marker-draggable {
-	cursor: move;
-	cursor: -webkit-grabbing;
-	cursor:    -moz-grabbing;
-	cursor:         grabbing;
-	}
-
-/* marker & overlays interactivity */
-.leaflet-marker-icon,
-.leaflet-marker-shadow,
-.leaflet-image-layer,
-.leaflet-pane > svg path,
-.leaflet-tile-container {
-	pointer-events: none;
-	}
-
-.leaflet-marker-icon.leaflet-interactive,
-.leaflet-image-layer.leaflet-interactive,
-.leaflet-pane > svg path.leaflet-interactive,
-svg.leaflet-image-layer.leaflet-interactive path {
-	pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */
-	pointer-events: auto;
-	}
-
-/* visual tweaks */
-
-.leaflet-container {
-	background: #ddd;
-	outline: 0;
-	}
-.leaflet-container a {
-	color: #0078A8;
-	}
-.leaflet-container a.leaflet-active {
-	outline: 2px solid orange;
-	}
-.leaflet-zoom-box {
-	border: 2px dotted #38f;
-	background: rgba(255,255,255,0.5);
-	}
-
-
-/* general typography */
-.leaflet-container {
-	font: 12px/1.5 "Helvetica Neue", Arial, Helvetica, sans-serif;
-	}
-
-
-/* general toolbar styles */
-
-.leaflet-bar {
-	box-shadow: 0 1px 5px rgba(0,0,0,0.65);
-	border-radius: 4px;
-	}
-.leaflet-bar a,
-.leaflet-bar a:hover {
-	background-color: #fff;
-	border-bottom: 1px solid #ccc;
-	width: 26px;
-	height: 26px;
-	line-height: 26px;
-	display: block;
-	text-align: center;
-	text-decoration: none;
-	color: black;
-	}
-.leaflet-bar a,
-.leaflet-control-layers-toggle {
-	background-position: 50% 50%;
-	background-repeat: no-repeat;
-	display: block;
-	}
-.leaflet-bar a:hover {
-	background-color: #f4f4f4;
-	}
-.leaflet-bar a:first-child {
-	border-top-left-radius: 4px;
-	border-top-right-radius: 4px;
-	}
-.leaflet-bar a:last-child {
-	border-bottom-left-radius: 4px;
-	border-bottom-right-radius: 4px;
-	border-bottom: none;
-	}
-.leaflet-bar a.leaflet-disabled {
-	cursor: default;
-	background-color: #f4f4f4;
-	color: #bbb;
-	}
-
-.leaflet-touch .leaflet-bar a {
-	width: 30px;
-	height: 30px;
-	line-height: 30px;
-	}
-.leaflet-touch .leaflet-bar a:first-child {
-	border-top-left-radius: 2px;
-	border-top-right-radius: 2px;
-	}
-.leaflet-touch .leaflet-bar a:last-child {
-	border-bottom-left-radius: 2px;
-	border-bottom-right-radius: 2px;
-	}
-
-/* zoom control */
-
-.leaflet-control-zoom-in,
-.leaflet-control-zoom-out {
-	font: bold 18px 'Lucida Console', Monaco, monospace;
-	text-indent: 1px;
-	}
-
-.leaflet-touch .leaflet-control-zoom-in, .leaflet-touch .leaflet-control-zoom-out  {
-	font-size: 22px;
-	}
-
-
-/* layers control */
-
-.leaflet-control-layers {
-	box-shadow: 0 1px 5px rgba(0,0,0,0.4);
-	background: #fff;
-	border-radius: 5px;
-	}
-.leaflet-control-layers-toggle {
-	background-image: url(images/layers.png);
-	width: 36px;
-	height: 36px;
-	}
-.leaflet-retina .leaflet-control-layers-toggle {
-	background-image: url(images/layers-2x.png);
-	background-size: 26px 26px;
-	}
-.leaflet-touch .leaflet-control-layers-toggle {
-	width: 44px;
-	height: 44px;
-	}
-.leaflet-control-layers .leaflet-control-layers-list,
-.leaflet-control-layers-expanded .leaflet-control-layers-toggle {
-	display: none;
-	}
-.leaflet-control-layers-expanded .leaflet-control-layers-list {
-	display: block;
-	position: relative;
-	}
-.leaflet-control-layers-expanded {
-	padding: 6px 10px 6px 6px;
-	color: #333;
-	background: #fff;
-	}
-.leaflet-control-layers-scrollbar {
-	overflow-y: scroll;
-	overflow-x: hidden;
-	padding-right: 5px;
-	}
-.leaflet-control-layers-selector {
-	margin-top: 2px;
-	position: relative;
-	top: 1px;
-	}
-.leaflet-control-layers label {
-	display: block;
-	}
-.leaflet-control-layers-separator {
-	height: 0;
-	border-top: 1px solid #ddd;
-	margin: 5px -10px 5px -6px;
-	}
-
-/* Default icon URLs */
-.leaflet-default-icon-path {
-	background-image: url(images/marker-icon.png);
-	}
-
-
-/* attribution and scale controls */
-
-.leaflet-container .leaflet-control-attribution {
-	background: #fff;
-	background: rgba(255, 255, 255, 0.7);
-	margin: 0;
-	}
-.leaflet-control-attribution,
-.leaflet-control-scale-line {
-	padding: 0 5px;
-	color: #333;
-	}
-.leaflet-control-attribution a {
-	text-decoration: none;
-	}
-.leaflet-control-attribution a:hover {
-	text-decoration: underline;
-	}
-.leaflet-container .leaflet-control-attribution,
-.leaflet-container .leaflet-control-scale {
-	font-size: 11px;
-	}
-.leaflet-left .leaflet-control-scale {
-	margin-left: 5px;
-	}
-.leaflet-bottom .leaflet-control-scale {
-	margin-bottom: 5px;
-	}
-.leaflet-control-scale-line {
-	border: 2px solid #777;
-	border-top: none;
-	line-height: 1.1;
-	padding: 2px 5px 1px;
-	font-size: 11px;
-	white-space: nowrap;
-	overflow: hidden;
-	-moz-box-sizing: border-box;
-	     box-sizing: border-box;
-
-	background: #fff;
-	background: rgba(255, 255, 255, 0.5);
-	}
-.leaflet-control-scale-line:not(:first-child) {
-	border-top: 2px solid #777;
-	border-bottom: none;
-	margin-top: -2px;
-	}
-.leaflet-control-scale-line:not(:first-child):not(:last-child) {
-	border-bottom: 2px solid #777;
-	}
-
-.leaflet-touch .leaflet-control-attribution,
-.leaflet-touch .leaflet-control-layers,
-.leaflet-touch .leaflet-bar {
-	box-shadow: none;
-	}
-.leaflet-touch .leaflet-control-layers,
-.leaflet-touch .leaflet-bar {
-	border: 2px solid rgba(0,0,0,0.2);
-	background-clip: padding-box;
-	}
-
-
-/* popup */
-
-.leaflet-popup {
-	position: absolute;
-	text-align: center;
-	margin-bottom: 20px;
-	}
-.leaflet-popup-content-wrapper {
-	padding: 1px;
-	text-align: left;
-	border-radius: 12px;
-	}
-.leaflet-popup-content {
-	margin: 13px 19px;
-	line-height: 1.4;
-	}
-.leaflet-popup-content p {
-	margin: 18px 0;
-	}
-.leaflet-popup-tip-container {
-	width: 40px;
-	height: 20px;
-	position: absolute;
-	left: 50%;
-	margin-left: -20px;
-	overflow: hidden;
-	pointer-events: none;
-	}
-.leaflet-popup-tip {
-	width: 17px;
-	height: 17px;
-	padding: 1px;
-
-	margin: -10px auto 0;
-
-	-webkit-transform: rotate(45deg);
-	   -moz-transform: rotate(45deg);
-	    -ms-transform: rotate(45deg);
-	        transform: rotate(45deg);
-	}
-.leaflet-popup-content-wrapper,
-.leaflet-popup-tip {
-	background: white;
-	color: #333;
-	box-shadow: 0 3px 14px rgba(0,0,0,0.4);
-	}
-.leaflet-container a.leaflet-popup-close-button {
-	position: absolute;
-	top: 0;
-	right: 0;
-	padding: 4px 4px 0 0;
-	border: none;
-	text-align: center;
-	width: 18px;
-	height: 14px;
-	font: 16px/14px Tahoma, Verdana, sans-serif;
-	color: #c3c3c3;
-	text-decoration: none;
-	font-weight: bold;
-	background: transparent;
-	}
-.leaflet-container a.leaflet-popup-close-button:hover {
-	color: #999;
-	}
-.leaflet-popup-scrolled {
-	overflow: auto;
-	border-bottom: 1px solid #ddd;
-	border-top: 1px solid #ddd;
-	}
-
-.leaflet-oldie .leaflet-popup-content-wrapper {
-	-ms-zoom: 1;
-	}
-.leaflet-oldie .leaflet-popup-tip {
-	width: 24px;
-	margin: 0 auto;
-
-	-ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";
-	filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678);
-	}
-.leaflet-oldie .leaflet-popup-tip-container {
-	margin-top: -1px;
-	}
-
-.leaflet-oldie .leaflet-control-zoom,
-.leaflet-oldie .leaflet-control-layers,
-.leaflet-oldie .leaflet-popup-content-wrapper,
-.leaflet-oldie .leaflet-popup-tip {
-	border: 1px solid #999;
-	}
-
-
-/* div icon */
-
-.leaflet-div-icon {
-	background: #fff;
-	border: 1px solid #666;
-	}
-
-
-/* Tooltip */
-/* Base styles for the element that has a tooltip */
-.leaflet-tooltip {
-	position: absolute;
-	padding: 6px;
-	background-color: #fff;
-	border: 1px solid #fff;
-	border-radius: 3px;
-	color: #222;
-	white-space: nowrap;
-	-webkit-user-select: none;
-	-moz-user-select: none;
-	-ms-user-select: none;
-	user-select: none;
-	pointer-events: none;
-	box-shadow: 0 1px 3px rgba(0,0,0,0.4);
-	}
-.leaflet-tooltip.leaflet-clickable {
-	cursor: pointer;
-	pointer-events: auto;
-	}
-.leaflet-tooltip-top:before,
-.leaflet-tooltip-bottom:before,
-.leaflet-tooltip-left:before,
-.leaflet-tooltip-right:before {
-	position: absolute;
-	pointer-events: none;
-	border: 6px solid transparent;
-	background: transparent;
-	content: "";
-	}
-
-/* Directions */
-
-.leaflet-tooltip-bottom {
-	margin-top: 6px;
-}
-.leaflet-tooltip-top {
-	margin-top: -6px;
-}
-.leaflet-tooltip-bottom:before,
-.leaflet-tooltip-top:before {
-	left: 50%;
-	margin-left: -6px;
-	}
-.leaflet-tooltip-top:before {
-	bottom: 0;
-	margin-bottom: -12px;
-	border-top-color: #fff;
-	}
-.leaflet-tooltip-bottom:before {
-	top: 0;
-	margin-top: -12px;
-	margin-left: -6px;
-	border-bottom-color: #fff;
-	}
-.leaflet-tooltip-left {
-	margin-left: -6px;
-}
-.leaflet-tooltip-right {
-	margin-left: 6px;
-}
-.leaflet-tooltip-left:before,
-.leaflet-tooltip-right:before {
-	top: 50%;
-	margin-top: -6px;
-	}
-.leaflet-tooltip-left:before {
-	right: 0;
-	margin-right: -12px;
-	border-left-color: #fff;
-	}
-.leaflet-tooltip-right:before {
-	left: 0;
-	margin-left: -12px;
-	border-right-color: #fff;
-	}
diff --git a/xcxMapSecurityPosition/lid/leaflet.js b/xcxMapSecurityPosition/lid/leaflet.js
deleted file mode 100644
index 39fa241..0000000
--- a/xcxMapSecurityPosition/lid/leaflet.js
+++ /dev/null
@@ -1,5222 +0,0 @@
-/* @preserve
- * Leaflet 1.7.1, a JS library for interactive maps. http://leafletjs.com
- * (c) 2010-2019 Vladimir Agafonkin, (c) 2010-2011 CloudMade
- */
-! function(t, i) {
-	"object" == typeof exports && "undefined" != typeof module ? i(exports) : "function" == typeof define && define
-		.amd ? define(["exports"], i) : i(t.L = {})
-}(this, function(t) {
-	"use strict";
-
-	function h(t) {
-		for (var i, e, n = 1, o = arguments.length; n < o; n++)
-			for (i in e = arguments[n]) t[i] = e[i];
-		return t
-	}
-	var s = Object.create || function(t) {
-		return i.prototype = t, new i
-	};
-
-	function i() {}
-
-	function p(t, i) {
-		var e = Array.prototype.slice;
-		if (t.bind) return t.bind.apply(t, e.call(arguments, 1));
-		var n = e.call(arguments, 2);
-		return function() {
-			return t.apply(i, n.length ? n.concat(e.call(arguments)) : arguments)
-		}
-	}
-	var e = 0;
-
-	function m(t) {
-		return t._leaflet_id = t._leaflet_id || ++e, t._leaflet_id
-	}
-
-	function n(t, i, e) {
-		var n, o, s = function() {
-				n = !1, o && (r.apply(e, o), o = !1)
-			},
-			r = function() {
-				n ? o = arguments : (t.apply(e, arguments), setTimeout(s, i), n = !0)
-			};
-		return r
-	}
-
-	function o(t, i, e) {
-		var n = i[1],
-			o = i[0],
-			s = n - o;
-		return t === n && e ? t : ((t - o) % s + s) % s + o
-	}
-
-	function a() {
-		return !1
-	}
-
-	function r(t, i) {
-		var e = Math.pow(10, void 0 === i ? 6 : i);
-		return Math.round(t * e) / e
-	}
-
-	function u(t) {
-		return t.trim ? t.trim() : t.replace(/^\s+|\s+$/g, "")
-	}
-
-	function l(t) {
-		return u(t).split(/\s+/)
-	}
-
-	function c(t, i) {
-		for (var e in Object.prototype.hasOwnProperty.call(t, "options") || (t.options = t.options ? s(t.options) :
-			{}), i) t.options[e] = i[e];
-		return t.options
-	}
-
-	function _(t, i, e) {
-		var n = [];
-		for (var o in t) n.push(encodeURIComponent(e ? o.toUpperCase() : o) + "=" + encodeURIComponent(t[o]));
-		return (i && -1 !== i.indexOf("?") ? "&" : "?") + n.join("&")
-	}
-	var d = /\{ *([\w_-]+) *\}/g;
-
-	function f(t, n) {
-		return t.replace(d, function(t, i) {
-			var e = n[i];
-			if (void 0 === e) throw new Error("No value provided for variable " + t);
-			return "function" == typeof e && (e = e(n)), e
-		})
-	}
-	var g = Array.isArray || function(t) {
-		return "[object Array]" === Object.prototype.toString.call(t)
-	};
-
-	function v(t, i) {
-		for (var e = 0; e < t.length; e++)
-			if (t[e] === i) return e;
-		return -1
-	}
-	var y = "data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=";
-
-	function x(t) {
-		return window["webkit" + t] || window["moz" + t] || window["ms" + t]
-	}
-	var w = 0;
-
-	function P(t) {
-		var i = +new Date,
-			e = Math.max(0, 16 - (i - w));
-		return w = i + e, window.setTimeout(t, e)
-	}
-	var b = window.requestAnimationFrame || x("RequestAnimationFrame") || P,
-		T = window.cancelAnimationFrame || x("CancelAnimationFrame") || x("CancelRequestAnimationFrame") ||
-		function(t) {
-			window.clearTimeout(t)
-		};
-
-	function M(t, i, e) {
-		if (!e || b !== P) return b.call(window, p(t, i));
-		t.call(i)
-	}
-
-	function z(t) {
-		t && T.call(window, t)
-	}
-	var C = {
-		extend: h,
-		create: s,
-		bind: p,
-		lastId: e,
-		stamp: m,
-		throttle: n,
-		wrapNum: o,
-		falseFn: a,
-		formatNum: r,
-		trim: u,
-		splitWords: l,
-		setOptions: c,
-		getParamString: _,
-		template: f,
-		isArray: g,
-		indexOf: v,
-		emptyImageUrl: y,
-		requestFn: b,
-		cancelFn: T,
-		requestAnimFrame: M,
-		cancelAnimFrame: z
-	};
-
-	function S() {}
-	S.extend = function(t) {
-		function i() {
-			this.initialize && this.initialize.apply(this, arguments), this.callInitHooks()
-		}
-		var e = i.__super__ = this.prototype,
-			n = s(e);
-		for (var o in (n.constructor = i).prototype = n, this) Object.prototype.hasOwnProperty.call(this, o) &&
-			"prototype" !== o && "__super__" !== o && (i[o] = this[o]);
-		return t.statics && (h(i, t.statics), delete t.statics), t.includes && (function(t) {
-			if ("undefined" == typeof L || !L || !L.Mixin) return;
-			t = g(t) ? t : [t];
-			for (var i = 0; i < t.length; i++) t[i] === L.Mixin.Events && console.warn(
-				"Deprecated include of L.Mixin.Events: this property will be removed in future releases, please inherit from L.Evented instead.",
-				(new Error).stack)
-		}(t.includes), h.apply(null, [n].concat(t.includes)), delete t.includes), n.options && (t.options =
-			h(s(n.options), t.options)), h(n, t), n._initHooks = [], n.callInitHooks = function() {
-			if (!this._initHooksCalled) {
-				e.callInitHooks && e.callInitHooks.call(this), this._initHooksCalled = !0;
-				for (var t = 0, i = n._initHooks.length; t < i; t++) n._initHooks[t].call(this)
-			}
-		}, i
-	}, S.include = function(t) {
-		return h(this.prototype, t), this
-	}, S.mergeOptions = function(t) {
-		return h(this.prototype.options, t), this
-	}, S.addInitHook = function(t) {
-		var i = Array.prototype.slice.call(arguments, 1),
-			e = "function" == typeof t ? t : function() {
-				this[t].apply(this, i)
-			};
-		return this.prototype._initHooks = this.prototype._initHooks || [], this.prototype._initHooks.push(e),
-			this
-	};
-	var Z = {
-		on: function(t, i, e) {
-			if ("object" == typeof t)
-				for (var n in t) this._on(n, t[n], i);
-			else
-				for (var o = 0, s = (t = l(t)).length; o < s; o++) this._on(t[o], i, e);
-			return this
-		},
-		off: function(t, i, e) {
-			if (t)
-				if ("object" == typeof t)
-					for (var n in t) this._off(n, t[n], i);
-				else
-					for (var o = 0, s = (t = l(t)).length; o < s; o++) this._off(t[o], i, e);
-			else delete this._events;
-			return this
-		},
-		_on: function(t, i, e) {
-			this._events = this._events || {};
-			var n = this._events[t];
-			n || (n = [], this._events[t] = n), e === this && (e = void 0);
-			for (var o = {
-					fn: i,
-					ctx: e
-				}, s = n, r = 0, a = s.length; r < a; r++)
-				if (s[r].fn === i && s[r].ctx === e) return;
-			s.push(o)
-		},
-		_off: function(t, i, e) {
-			var n, o, s;
-			if (this._events && (n = this._events[t]))
-				if (i) {
-					if (e === this && (e = void 0), n)
-						for (o = 0, s = n.length; o < s; o++) {
-							var r = n[o];
-							if (r.ctx === e && r.fn === i) return r.fn = a, this._firingCount && (this
-								._events[t] = n = n.slice()), void n.splice(o, 1)
-						}
-				} else {
-					for (o = 0, s = n.length; o < s; o++) n[o].fn = a;
-					delete this._events[t]
-				}
-		},
-		fire: function(t, i, e) {
-			if (!this.listens(t, e)) return this;
-			var n = h({}, i, {
-				type: t,
-				target: this,
-				sourceTarget: i && i.sourceTarget || this
-			});
-			if (this._events) {
-				var o = this._events[t];
-				if (o) {
-					this._firingCount = this._firingCount + 1 || 1;
-					for (var s = 0, r = o.length; s < r; s++) {
-						var a = o[s];
-						a.fn.call(a.ctx || this, n)
-					}
-					this._firingCount--
-				}
-			}
-			return e && this._propagateEvent(n), this
-		},
-		listens: function(t, i) {
-			var e = this._events && this._events[t];
-			if (e && e.length) return !0;
-			if (i)
-				for (var n in this._eventParents)
-					if (this._eventParents[n].listens(t, i)) return !0;
-			return !1
-		},
-		once: function(t, i, e) {
-			if ("object" == typeof t) {
-				for (var n in t) this.once(n, t[n], i);
-				return this
-			}
-			var o = p(function() {
-				this.off(t, i, e).off(t, o, e)
-			}, this);
-			return this.on(t, i, e).on(t, o, e)
-		},
-		addEventParent: function(t) {
-			return this._eventParents = this._eventParents || {}, this._eventParents[m(t)] = t, this
-		},
-		removeEventParent: function(t) {
-			return this._eventParents && delete this._eventParents[m(t)], this
-		},
-		_propagateEvent: function(t) {
-			for (var i in this._eventParents) this._eventParents[i].fire(t.type, h({
-				layer: t.target,
-				propagatedFrom: t.target
-			}, t), !0)
-		}
-	};
-	Z.addEventListener = Z.on, Z.removeEventListener = Z.clearAllEventListeners = Z.off, Z.addOneTimeEventListener =
-		Z.once, Z.fireEvent = Z.fire, Z.hasEventListeners = Z.listens;
-	var E = S.extend(Z);
-
-	function k(t, i, e) {
-		this.x = e ? Math.round(t) : t, this.y = e ? Math.round(i) : i
-	}
-	var B = Math.trunc || function(t) {
-		return 0 < t ? Math.floor(t) : Math.ceil(t)
-	};
-
-	function A(t, i, e) {
-		return t instanceof k ? t : g(t) ? new k(t[0], t[1]) : null == t ? t : "object" == typeof t && "x" in t &&
-			"y" in t ? new k(t.x, t.y) : new k(t, i, e)
-	}
-
-	function I(t, i) {
-		if (t)
-			for (var e = i ? [t, i] : t, n = 0, o = e.length; n < o; n++) this.extend(e[n])
-	}
-
-	function O(t, i) {
-		return !t || t instanceof I ? t : new I(t, i)
-	}
-
-	function R(t, i) {
-		if (t)
-			for (var e = i ? [t, i] : t, n = 0, o = e.length; n < o; n++) this.extend(e[n])
-	}
-
-	function N(t, i) {
-		return t instanceof R ? t : new R(t, i)
-	}
-
-	function D(t, i, e) {
-		if (isNaN(t) || isNaN(i)) throw new Error("Invalid LatLng object: (" + t + ", " + i + ")");
-		this.lat = +t, this.lng = +i, void 0 !== e && (this.alt = +e)
-	}
-
-	function j(t, i, e) {
-		return t instanceof D ? t : g(t) && "object" != typeof t[0] ? 3 === t.length ? new D(t[0], t[1], t[2]) :
-			2 === t.length ? new D(t[0], t[1]) : null : null == t ? t : "object" == typeof t && "lat" in t ? new D(t
-				.lat, "lng" in t ? t.lng : t.lon, t.alt) : void 0 === i ? null : new D(t, i, e)
-	}
-	k.prototype = {
-		clone: function() {
-			return new k(this.x, this.y)
-		},
-		add: function(t) {
-			return this.clone()._add(A(t))
-		},
-		_add: function(t) {
-			return this.x += t.x, this.y += t.y, this
-		},
-		subtract: function(t) {
-			return this.clone()._subtract(A(t))
-		},
-		_subtract: function(t) {
-			return this.x -= t.x, this.y -= t.y, this
-		},
-		divideBy: function(t) {
-			return this.clone()._divideBy(t)
-		},
-		_divideBy: function(t) {
-			return this.x /= t, this.y /= t, this
-		},
-		multiplyBy: function(t) {
-			return this.clone()._multiplyBy(t)
-		},
-		_multiplyBy: function(t) {
-			return this.x *= t, this.y *= t, this
-		},
-		scaleBy: function(t) {
-			return new k(this.x * t.x, this.y * t.y)
-		},
-		unscaleBy: function(t) {
-			return new k(this.x / t.x, this.y / t.y)
-		},
-		round: function() {
-			return this.clone()._round()
-		},
-		_round: function() {
-			return this.x = Math.round(this.x), this.y = Math.round(this.y), this
-		},
-		floor: function() {
-			return this.clone()._floor()
-		},
-		_floor: function() {
-			return this.x = Math.floor(this.x), this.y = Math.floor(this.y), this
-		},
-		ceil: function() {
-			return this.clone()._ceil()
-		},
-		_ceil: function() {
-			return this.x = Math.ceil(this.x), this.y = Math.ceil(this.y), this
-		},
-		trunc: function() {
-			return this.clone()._trunc()
-		},
-		_trunc: function() {
-			return this.x = B(this.x), this.y = B(this.y), this
-		},
-		distanceTo: function(t) {
-			var i = (t = A(t)).x - this.x,
-				e = t.y - this.y;
-			return Math.sqrt(i * i + e * e)
-		},
-		equals: function(t) {
-			return (t = A(t)).x === this.x && t.y === this.y
-		},
-		contains: function(t) {
-			return t = A(t), Math.abs(t.x) <= Math.abs(this.x) && Math.abs(t.y) <= Math.abs(this.y)
-		},
-		toString: function() {
-			return "Point(" + r(this.x) + ", " + r(this.y) + ")"
-		}
-	}, I.prototype = {
-		extend: function(t) {
-			return t = A(t), this.min || this.max ? (this.min.x = Math.min(t.x, this.min.x), this.max.x =
-				Math.max(t.x, this.max.x), this.min.y = Math.min(t.y, this.min.y), this.max.y = Math
-				.max(t.y, this.max.y)) : (this.min = t.clone(), this.max = t.clone()), this
-		},
-		getCenter: function(t) {
-			return new k((this.min.x + this.max.x) / 2, (this.min.y + this.max.y) / 2, t)
-		},
-		getBottomLeft: function() {
-			return new k(this.min.x, this.max.y)
-		},
-		getTopRight: function() {
-			return new k(this.max.x, this.min.y)
-		},
-		getTopLeft: function() {
-			return this.min
-		},
-		getBottomRight: function() {
-			return this.max
-		},
-		getSize: function() {
-			return this.max.subtract(this.min)
-		},
-		contains: function(t) {
-			var i, e;
-			return (t = ("number" == typeof t[0] || t instanceof k ? A : O)(t)) instanceof I ? (i = t.min,
-					e = t.max) : i = e = t, i.x >= this.min.x && e.x <= this.max.x && i.y >= this.min.y && e
-				.y <= this.max.y
-		},
-		intersects: function(t) {
-			t = O(t);
-			var i = this.min,
-				e = this.max,
-				n = t.min,
-				o = t.max,
-				s = o.x >= i.x && n.x <= e.x,
-				r = o.y >= i.y && n.y <= e.y;
-			return s && r
-		},
-		overlaps: function(t) {
-			t = O(t);
-			var i = this.min,
-				e = this.max,
-				n = t.min,
-				o = t.max,
-				s = o.x > i.x && n.x < e.x,
-				r = o.y > i.y && n.y < e.y;
-			return s && r
-		},
-		isValid: function() {
-			return !(!this.min || !this.max)
-		}
-	}, R.prototype = {
-		extend: function(t) {
-			var i, e, n = this._southWest,
-				o = this._northEast;
-			if (t instanceof D) e = i = t;
-			else {
-				if (!(t instanceof R)) return t ? this.extend(j(t) || N(t)) : this;
-				if (i = t._southWest, e = t._northEast, !i || !e) return this
-			}
-			return n || o ? (n.lat = Math.min(i.lat, n.lat), n.lng = Math.min(i.lng, n.lng), o.lat = Math
-				.max(e.lat, o.lat), o.lng = Math.max(e.lng, o.lng)) : (this._southWest = new D(i.lat, i
-				.lng), this._northEast = new D(e.lat, e.lng)), this
-		},
-		pad: function(t) {
-			var i = this._southWest,
-				e = this._northEast,
-				n = Math.abs(i.lat - e.lat) * t,
-				o = Math.abs(i.lng - e.lng) * t;
-			return new R(new D(i.lat - n, i.lng - o), new D(e.lat + n, e.lng + o))
-		},
-		getCenter: function() {
-			return new D((this._southWest.lat + this._northEast.lat) / 2, (this._southWest.lng + this
-				._northEast.lng) / 2)
-		},
-		getSouthWest: function() {
-			return this._southWest
-		},
-		getNorthEast: function() {
-			return this._northEast
-		},
-		getNorthWest: function() {
-			return new D(this.getNorth(), this.getWest())
-		},
-		getSouthEast: function() {
-			return new D(this.getSouth(), this.getEast())
-		},
-		getWest: function() {
-			return this._southWest.lng
-		},
-		getSouth: function() {
-			return this._southWest.lat
-		},
-		getEast: function() {
-			return this._northEast.lng
-		},
-		getNorth: function() {
-			return this._northEast.lat
-		},
-		contains: function(t) {
-			t = ("number" == typeof t[0] || t instanceof D || "lat" in t ? j : N)(t);
-			var i, e, n = this._southWest,
-				o = this._northEast;
-			return t instanceof R ? (i = t.getSouthWest(), e = t.getNorthEast()) : i = e = t, i.lat >= n
-				.lat && e.lat <= o.lat && i.lng >= n.lng && e.lng <= o.lng
-		},
-		intersects: function(t) {
-			t = N(t);
-			var i = this._southWest,
-				e = this._northEast,
-				n = t.getSouthWest(),
-				o = t.getNorthEast(),
-				s = o.lat >= i.lat && n.lat <= e.lat,
-				r = o.lng >= i.lng && n.lng <= e.lng;
-			return s && r
-		},
-		overlaps: function(t) {
-			t = N(t);
-			var i = this._southWest,
-				e = this._northEast,
-				n = t.getSouthWest(),
-				o = t.getNorthEast(),
-				s = o.lat > i.lat && n.lat < e.lat,
-				r = o.lng > i.lng && n.lng < e.lng;
-			return s && r
-		},
-		toBBoxString: function() {
-			return [this.getWest(), this.getSouth(), this.getEast(), this.getNorth()].join(",")
-		},
-		equals: function(t, i) {
-			return !!t && (t = N(t), this._southWest.equals(t.getSouthWest(), i) && this._northEast.equals(t
-				.getNorthEast(), i))
-		},
-		isValid: function() {
-			return !(!this._southWest || !this._northEast)
-		}
-	};
-	var W, H = {
-			latLngToPoint: function(t, i) {
-				var e = this.projection.project(t),
-					n = this.scale(i);
-				return this.transformation._transform(e, n)
-			},
-			pointToLatLng: function(t, i) {
-				var e = this.scale(i),
-					n = this.transformation.untransform(t, e);
-				return this.projection.unproject(n)
-			},
-			project: function(t) {
-				return this.projection.project(t)
-			},
-			unproject: function(t) {
-				return this.projection.unproject(t)
-			},
-			scale: function(t) {
-				return 256 * Math.pow(2, t)
-			},
-			zoom: function(t) {
-				return Math.log(t / 256) / Math.LN2
-			},
-			getProjectedBounds: function(t) {
-				if (this.infinite) return null;
-				var i = this.projection.bounds,
-					e = this.scale(t);
-				return new I(this.transformation.transform(i.min, e), this.transformation.transform(i.max, e))
-			},
-			infinite: !(D.prototype = {
-				equals: function(t, i) {
-					return !!t && (t = j(t), Math.max(Math.abs(this.lat - t.lat), Math.abs(this.lng - t
-						.lng)) <= (void 0 === i ? 1e-9 : i))
-				},
-				toString: function(t) {
-					return "LatLng(" + r(this.lat, t) + ", " + r(this.lng, t) + ")"
-				},
-				distanceTo: function(t) {
-					return F.distance(this, j(t))
-				},
-				wrap: function() {
-					return F.wrapLatLng(this)
-				},
-				toBounds: function(t) {
-					var i = 180 * t / 40075017,
-						e = i / Math.cos(Math.PI / 180 * this.lat);
-					return N([this.lat - i, this.lng - e], [this.lat + i, this.lng + e])
-				},
-				clone: function() {
-					return new D(this.lat, this.lng, this.alt)
-				}
-			}),
-			wrapLatLng: function(t) {
-				var i = this.wrapLng ? o(t.lng, this.wrapLng, !0) : t.lng;
-				return new D(this.wrapLat ? o(t.lat, this.wrapLat, !0) : t.lat, i, t.alt)
-			},
-			wrapLatLngBounds: function(t) {
-				var i = t.getCenter(),
-					e = this.wrapLatLng(i),
-					n = i.lat - e.lat,
-					o = i.lng - e.lng;
-				if (0 == n && 0 == o) return t;
-				var s = t.getSouthWest(),
-					r = t.getNorthEast();
-				return new R(new D(s.lat - n, s.lng - o), new D(r.lat - n, r.lng - o))
-			}
-		},
-		F = h({}, H, {
-			wrapLng: [-180, 180],
-			R: 6371e3,
-			distance: function(t, i) {
-				var e = Math.PI / 180,
-					n = t.lat * e,
-					o = i.lat * e,
-					s = Math.sin((i.lat - t.lat) * e / 2),
-					r = Math.sin((i.lng - t.lng) * e / 2),
-					a = s * s + Math.cos(n) * Math.cos(o) * r * r,
-					h = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
-				return this.R * h
-			}
-		}),
-		U = 6378137,
-		V = {
-			R: U,
-			MAX_LATITUDE: 85.0511287798,
-			project: function(t) {
-				var i = Math.PI / 180,
-					e = this.MAX_LATITUDE,
-					n = Math.max(Math.min(e, t.lat), -e),
-					o = Math.sin(n * i);
-				return new k(this.R * t.lng * i, this.R * Math.log((1 + o) / (1 - o)) / 2)
-			},
-			unproject: function(t) {
-				var i = 180 / Math.PI;
-				return new D((2 * Math.atan(Math.exp(t.y / this.R)) - Math.PI / 2) * i, t.x * i / this.R)
-			},
-			bounds: new I([-(W = U * Math.PI), -W], [W, W])
-		};
-
-	function q(t, i, e, n) {
-		if (g(t)) return this._a = t[0], this._b = t[1], this._c = t[2], void(this._d = t[3]);
-		this._a = t, this._b = i, this._c = e, this._d = n
-	}
-
-	function G(t, i, e, n) {
-		return new q(t, i, e, n)
-	}
-	q.prototype = {
-		transform: function(t, i) {
-			return this._transform(t.clone(), i)
-		},
-		_transform: function(t, i) {
-			return i = i || 1, t.x = i * (this._a * t.x + this._b), t.y = i * (this._c * t.y + this._d), t
-		},
-		untransform: function(t, i) {
-			return i = i || 1, new k((t.x / i - this._b) / this._a, (t.y / i - this._d) / this._c)
-		}
-	};
-	var K, Y = h({}, F, {
-			code: "EPSG:3857",
-			projection: V,
-			transformation: G(K = .5 / (Math.PI * V.R), .5, -K, .5)
-		}),
-		X = h({}, Y, {
-			code: "EPSG:900913"
-		});
-
-	function J(t) {
-		return document.createElementNS("http://www.w3.org/2000/svg", t)
-	}
-
-	function $(t, i) {
-		for (var e, n, o, s, r = "", a = 0, h = t.length; a < h; a++) {
-			for (e = 0, n = (o = t[a]).length; e < n; e++) r += (e ? "L" : "M") + (s = o[e]).x + " " + s.y;
-			r += i ? Zt ? "z" : "x" : ""
-		}
-		return r || "M0 0"
-	}
-	var Q = document.documentElement.style,
-		tt = "ActiveXObject" in window,
-		it = tt && !document.addEventListener,
-		et = "msLaunchUri" in navigator && !("documentMode" in document),
-		nt = kt("webkit"),
-		ot = kt("android"),
-		st = kt("android 2") || kt("android 3"),
-		rt = parseInt(/WebKit\/([0-9]+)|$/.exec(navigator.userAgent)[1], 10),
-		at = ot && kt("Google") && rt < 537 && !("AudioNode" in window),
-		ht = !!window.opera,
-		ut = !et && kt("chrome"),
-		lt = kt("gecko") && !nt && !ht && !tt,
-		ct = !ut && kt("safari"),
-		_t = kt("phantom"),
-		dt = "OTransition" in Q,
-		pt = 0 === navigator.platform.indexOf("Win"),
-		mt = tt && "transition" in Q,
-		ft = "WebKitCSSMatrix" in window && "m11" in new window.WebKitCSSMatrix && !st,
-		gt = "MozPerspective" in Q,
-		vt = !window.L_DISABLE_3D && (mt || ft || gt) && !dt && !_t,
-		yt = "undefined" != typeof orientation || kt("mobile"),
-		xt = yt && nt,
-		wt = yt && ft,
-		Pt = !window.PointerEvent && window.MSPointerEvent,
-		Lt = !(!window.PointerEvent && !Pt),
-		bt = !window.L_NO_TOUCH && (Lt || "ontouchstart" in window || window.DocumentTouch &&
-			document instanceof window.DocumentTouch),
-		Tt = yt && ht,
-		Mt = yt && lt,
-		zt = 1 < (window.devicePixelRatio || window.screen.deviceXDPI / window.screen.logicalXDPI),
-		Ct = function() {
-			var t = !1;
-			try {
-				var i = Object.defineProperty({}, "passive", {
-					get: function() {
-						t = !0
-					}
-				});
-				window.addEventListener("testPassiveEventSupport", a, i), window.removeEventListener(
-					"testPassiveEventSupport", a, i)
-			} catch (t) {}
-			return t
-		}(),
-		St = !!document.createElement("canvas").getContext,
-		Zt = !(!document.createElementNS || !J("svg").createSVGRect),
-		Et = !Zt && function() {
-			try {
-				var t = document.createElement("div");
-				t.innerHTML = '<v:shape adj="1"/>';
-				var i = t.firstChild;
-				return i.style.behavior = "url(#default#VML)", i && "object" == typeof i.adj
-			} catch (t) {
-				return !1
-			}
-		}();
-
-	function kt(t) {
-		return 0 <= navigator.userAgent.toLowerCase().indexOf(t)
-	}
-	var Bt = {
-			ie: tt,
-			ielt9: it,
-			edge: et,
-			webkit: nt,
-			android: ot,
-			android23: st,
-			androidStock: at,
-			opera: ht,
-			chrome: ut,
-			gecko: lt,
-			safari: ct,
-			phantom: _t,
-			opera12: dt,
-			win: pt,
-			ie3d: mt,
-			webkit3d: ft,
-			gecko3d: gt,
-			any3d: vt,
-			mobile: yt,
-			mobileWebkit: xt,
-			mobileWebkit3d: wt,
-			msPointer: Pt,
-			pointer: Lt,
-			touch: bt,
-			mobileOpera: Tt,
-			mobileGecko: Mt,
-			retina: zt,
-			passiveEvents: Ct,
-			canvas: St,
-			svg: Zt,
-			vml: Et
-		},
-		At = Pt ? "MSPointerDown" : "pointerdown",
-		It = Pt ? "MSPointerMove" : "pointermove",
-		Ot = Pt ? "MSPointerUp" : "pointerup",
-		Rt = Pt ? "MSPointerCancel" : "pointercancel",
-		Nt = {},
-		Dt = !1;
-
-	function jt(t, i, e, n) {
-		function o(t) {
-			Ut(t, r)
-		}
-		var s, r, a, h, u, l, c, _;
-
-		function d(t) {
-			t.pointerType === (t.MSPOINTER_TYPE_MOUSE || "mouse") && 0 === t.buttons || Ut(t, h)
-		}
-		return "touchstart" === i ? (u = t, l = e, c = n, _ = p(function(t) {
-			t.MSPOINTER_TYPE_TOUCH && t.pointerType === t.MSPOINTER_TYPE_TOUCH && Ri(t), Ut(t, l)
-		}), u["_leaflet_touchstart" + c] = _, u.addEventListener(At, _, !1), Dt || (document
-			.addEventListener(At, Wt, !0), document.addEventListener(It, Ht, !0), document.addEventListener(
-				Ot, Ft, !0), document.addEventListener(Rt, Ft, !0), Dt = !0)) : "touchmove" === i ? (h = e, (a =
-			t)["_leaflet_touchmove" + n] = d, a.addEventListener(It, d, !1)) : "touchend" === i && (r = e, (s =
-			t)["_leaflet_touchend" + n] = o, s.addEventListener(Ot, o, !1), s.addEventListener(Rt, o, !1)), this
-	}
-
-	function Wt(t) {
-		Nt[t.pointerId] = t
-	}
-
-	function Ht(t) {
-		Nt[t.pointerId] && (Nt[t.pointerId] = t)
-	}
-
-	function Ft(t) {
-		delete Nt[t.pointerId]
-	}
-
-	function Ut(t, i) {
-		for (var e in t.touches = [], Nt) t.touches.push(Nt[e]);
-		t.changedTouches = [t], i(t)
-	}
-	var Vt = Pt ? "MSPointerDown" : Lt ? "pointerdown" : "touchstart",
-		qt = Pt ? "MSPointerUp" : Lt ? "pointerup" : "touchend",
-		Gt = "_leaflet_";
-	var Kt, Yt, Xt, Jt, $t, Qt, ti = fi(["transform", "webkitTransform", "OTransform", "MozTransform",
-			"msTransform"]),
-		ii = fi(["webkitTransition", "transition", "OTransition", "MozTransition", "msTransition"]),
-		ei = "webkitTransition" === ii || "OTransition" === ii ? ii + "End" : "transitionend";
-
-	function ni(t) {
-		return "string" == typeof t ? document.getElementById(t) : t
-	}
-
-	function oi(t, i) {
-		var e, n = t.style[i] || t.currentStyle && t.currentStyle[i];
-		return n && "auto" !== n || !document.defaultView || (n = (e = document.defaultView.getComputedStyle(t,
-			null)) ? e[i] : null), "auto" === n ? null : n
-	}
-
-	function si(t, i, e) {
-		var n = document.createElement(t);
-		return n.className = i || "", e && e.appendChild(n), n
-	}
-
-	function ri(t) {
-		var i = t.parentNode;
-		i && i.removeChild(t)
-	}
-
-	function ai(t) {
-		for (; t.firstChild;) t.removeChild(t.firstChild)
-	}
-
-	function hi(t) {
-		var i = t.parentNode;
-		i && i.lastChild !== t && i.appendChild(t)
-	}
-
-	function ui(t) {
-		var i = t.parentNode;
-		i && i.firstChild !== t && i.insertBefore(t, i.firstChild)
-	}
-
-	function li(t, i) {
-		if (void 0 !== t.classList) return t.classList.contains(i);
-		var e = pi(t);
-		return 0 < e.length && new RegExp("(^|\\s)" + i + "(\\s|$)").test(e)
-	}
-
-	function ci(t, i) {
-		var e;
-		if (void 0 !== t.classList)
-			for (var n = l(i), o = 0, s = n.length; o < s; o++) t.classList.add(n[o]);
-		else li(t, i) || di(t, ((e = pi(t)) ? e + " " : "") + i)
-	}
-
-	function _i(t, i) {
-		void 0 !== t.classList ? t.classList.remove(i) : di(t, u((" " + pi(t) + " ").replace(" " + i + " ", " ")))
-	}
-
-	function di(t, i) {
-		void 0 === t.className.baseVal ? t.className = i : t.className.baseVal = i
-	}
-
-	function pi(t) {
-		return t.correspondingElement && (t = t.correspondingElement), void 0 === t.className.baseVal ? t
-			.className : t.className.baseVal
-	}
-
-	function mi(t, i) {
-		"opacity" in t.style ? t.style.opacity = i : "filter" in t.style && function(t, i) {
-			var e = !1,
-				n = "DXImageTransform.Microsoft.Alpha";
-			try {
-				e = t.filters.item(n)
-			} catch (t) {
-				if (1 === i) return
-			}
-			i = Math.round(100 * i), e ? (e.Enabled = 100 !== i, e.Opacity = i) : t.style.filter += " progid:" +
-				n + "(opacity=" + i + ")"
-		}(t, i)
-	}
-
-	function fi(t) {
-		for (var i = document.documentElement.style, e = 0; e < t.length; e++)
-			if (t[e] in i) return t[e];
-		return !1
-	}
-
-	function gi(t, i, e) {
-		var n = i || new k(0, 0);
-		t.style[ti] = (mt ? "translate(" + n.x + "px," + n.y + "px)" : "translate3d(" + n.x + "px," + n.y +
-			"px,0)") + (e ? " scale(" + e + ")" : "")
-	}
-
-	function vi(t, i) {
-		t._leaflet_pos = i, vt ? gi(t, i) : (t.style.left = i.x + "px", t.style.top = i.y + "px")
-	}
-
-	function yi(t) {
-		return t._leaflet_pos || new k(0, 0)
-	}
-
-	function xi() {
-		zi(window, "dragstart", Ri)
-	}
-
-	function wi() {
-		Si(window, "dragstart", Ri)
-	}
-
-	function Pi(t) {
-		for (; - 1 === t.tabIndex;) t = t.parentNode;
-		t.style && (Li(), Qt = ($t = t).style.outline, t.style.outline = "none", zi(window, "keydown", Li))
-	}
-
-	function Li() {
-		$t && ($t.style.outline = Qt, Qt = $t = void 0, Si(window, "keydown", Li))
-	}
-
-	function bi(t) {
-		for (; !((t = t.parentNode).offsetWidth && t.offsetHeight || t === document.body););
-		return t
-	}
-
-	function Ti(t) {
-		var i = t.getBoundingClientRect();
-		return {
-			x: i.width / t.offsetWidth || 1,
-			y: i.height / t.offsetHeight || 1,
-			boundingClientRect: i
-		}
-	}
-	Jt = "onselectstart" in document ? (Xt = function() {
-		zi(window, "selectstart", Ri)
-	}, function() {
-		Si(window, "selectstart", Ri)
-	}) : (Yt = fi(["userSelect", "WebkitUserSelect", "OUserSelect", "MozUserSelect", "msUserSelect"]), Xt =
-		function() {
-			var t;
-			Yt && (t = document.documentElement.style, Kt = t[Yt], t[Yt] = "none")
-		},
-		function() {
-			Yt && (document.documentElement.style[Yt] = Kt, Kt = void 0)
-		});
-	var Mi = {
-		TRANSFORM: ti,
-		TRANSITION: ii,
-		TRANSITION_END: ei,
-		get: ni,
-		getStyle: oi,
-		create: si,
-		remove: ri,
-		empty: ai,
-		toFront: hi,
-		toBack: ui,
-		hasClass: li,
-		addClass: ci,
-		removeClass: _i,
-		setClass: di,
-		getClass: pi,
-		setOpacity: mi,
-		testProp: fi,
-		setTransform: gi,
-		setPosition: vi,
-		getPosition: yi,
-		disableTextSelection: Xt,
-		enableTextSelection: Jt,
-		disableImageDrag: xi,
-		enableImageDrag: wi,
-		preventOutline: Pi,
-		restoreOutline: Li,
-		getSizedParentNode: bi,
-		getScale: Ti
-	};
-
-	function zi(t, i, e, n) {
-		if ("object" == typeof i)
-			for (var o in i) ki(t, o, i[o], e);
-		else
-			for (var s = 0, r = (i = l(i)).length; s < r; s++) ki(t, i[s], e, n);
-		return this
-	}
-	var Ci = "_leaflet_events";
-
-	function Si(t, i, e, n) {
-		if ("object" == typeof i)
-			for (var o in i) Bi(t, o, i[o], e);
-		else if (i)
-			for (var s = 0, r = (i = l(i)).length; s < r; s++) Bi(t, i[s], e, n);
-		else {
-			for (var a in t[Ci]) Bi(t, a, t[Ci][a]);
-			delete t[Ci]
-		}
-		return this
-	}
-
-	function Zi() {
-		return Lt && (!et && !ct)
-	}
-	var Ei = {
-		mouseenter: "mouseover",
-		mouseleave: "mouseout",
-		wheel: !("onwheel" in window) && "mousewheel"
-	};
-
-	function ki(i, t, e, n) {
-		var o = t + m(e) + (n ? "_" + m(n) : "");
-		if (i[Ci] && i[Ci][o]) return this;
-		var s, r, a, h, u, l, c = function(t) {
-				return e.call(n || i, t || window.event)
-			},
-			_ = c;
-
-		function d(t) {
-			if (Lt) {
-				if (!t.isPrimary) return;
-				if ("mouse" === t.pointerType) return
-			} else if (1 < t.touches.length) return;
-			var i = Date.now(),
-				e = i - (h || i);
-			u = t.touches ? t.touches[0] : t, l = 0 < e && e <= 250, h = i
-		}
-
-		function p(t) {
-			if (l && !u.cancelBubble) {
-				if (Lt) {
-					if ("mouse" === t.pointerType) return;
-					var i, e, n = {};
-					for (e in u) i = u[e], n[e] = i && i.bind ? i.bind(u) : i;
-					u = n
-				}
-				u.type = "dblclick", u.button = 0, r(u), h = null
-			}
-		}
-		Lt && 0 === t.indexOf("touch") ? jt(i, t, c, o) : bt && "dblclick" === t && !Zi() ? (r = c, l = !1, (s = i)[
-				Gt + Vt + (a = o)] = d, s[Gt + qt + a] = p, s[Gt + "dblclick" + a] = r, s.addEventListener(Vt,
-				d, !!Ct && {
-					passive: !1
-				}), s.addEventListener(qt, p, !!Ct && {
-				passive: !1
-			}), s.addEventListener("dblclick", r, !1)) : "addEventListener" in i ? "touchstart" === t ||
-			"touchmove" === t || "wheel" === t || "mousewheel" === t ? i.addEventListener(Ei[t] || t, c, !!Ct && {
-				passive: !1
-			}) : "mouseenter" === t || "mouseleave" === t ? (c = function(t) {
-				t = t || window.event, Vi(i, t) && _(t)
-			}, i.addEventListener(Ei[t], c, !1)) : i.addEventListener(t, _, !1) : "attachEvent" in i && i
-			.attachEvent("on" + t, c), i[Ci] = i[Ci] || {}, i[Ci][o] = c
-	}
-
-	function Bi(t, i, e, n) {
-		var o, s, r, a, h, u, l, c, _ = i + m(e) + (n ? "_" + m(n) : ""),
-			d = t[Ci] && t[Ci][_];
-		if (!d) return this;
-		Lt && 0 === i.indexOf("touch") ? (c = (u = t)["_leaflet_" + (l = i) + _], "touchstart" === l ? u
-				.removeEventListener(At, c, !1) : "touchmove" === l ? u.removeEventListener(It, c, !1) :
-				"touchend" === l && (u.removeEventListener(Ot, c, !1), u.removeEventListener(Rt, c, !1))) : bt &&
-			"dblclick" === i && !Zi() ? (r = (o = t)[Gt + Vt + (s = _)], a = o[Gt + qt + s], h = o[Gt + "dblclick" +
-				s], o.removeEventListener(Vt, r, !!Ct && {
-				passive: !1
-			}), o.removeEventListener(qt, a, !!Ct && {
-				passive: !1
-			}), o.removeEventListener("dblclick", h, !1)) : "removeEventListener" in t ? t.removeEventListener(Ei[
-				i] || i, d, !1) : "detachEvent" in t && t.detachEvent("on" + i, d), t[Ci][_] = null
-	}
-
-	function Ai(t) {
-		return t.stopPropagation ? t.stopPropagation() : t.originalEvent ? t.originalEvent._stopped = !0 : t
-			.cancelBubble = !0, Ui(t), this
-	}
-
-	function Ii(t) {
-		return ki(t, "wheel", Ai), this
-	}
-
-	function Oi(t) {
-		return zi(t, "mousedown touchstart dblclick", Ai), ki(t, "click", Fi), this
-	}
-
-	function Ri(t) {
-		return t.preventDefault ? t.preventDefault() : t.returnValue = !1, this
-	}
-
-	function Ni(t) {
-		return Ri(t), Ai(t), this
-	}
-
-	function Di(t, i) {
-		if (!i) return new k(t.clientX, t.clientY);
-		var e = Ti(i),
-			n = e.boundingClientRect;
-		return new k((t.clientX - n.left) / e.x - i.clientLeft, (t.clientY - n.top) / e.y - i.clientTop)
-	}
-	var ji = pt && ut ? 2 * window.devicePixelRatio : lt ? window.devicePixelRatio : 1;
-
-	function Wi(t) {
-		return et ? t.wheelDeltaY / 2 : t.deltaY && 0 === t.deltaMode ? -t.deltaY / ji : t.deltaY && 1 === t
-			.deltaMode ? 20 * -t.deltaY : t.deltaY && 2 === t.deltaMode ? 60 * -t.deltaY : t.deltaX || t.deltaZ ?
-			0 : t.wheelDelta ? (t.wheelDeltaY || t.wheelDelta) / 2 : t.detail && Math.abs(t.detail) < 32765 ? 20 * -
-			t.detail : t.detail ? t.detail / -32765 * 60 : 0
-	}
-	var Hi = {};
-
-	function Fi(t) {
-		Hi[t.type] = !0
-	}
-
-	function Ui(t) {
-		var i = Hi[t.type];
-		return Hi[t.type] = !1, i
-	}
-
-	function Vi(t, i) {
-		var e = i.relatedTarget;
-		if (!e) return !0;
-		try {
-			for (; e && e !== t;) e = e.parentNode
-		} catch (t) {
-			return !1
-		}
-		return e !== t
-	}
-	var qi = {
-			on: zi,
-			off: Si,
-			stopPropagation: Ai,
-			disableScrollPropagation: Ii,
-			disableClickPropagation: Oi,
-			preventDefault: Ri,
-			stop: Ni,
-			getMousePosition: Di,
-			getWheelDelta: Wi,
-			fakeStop: Fi,
-			skipped: Ui,
-			isExternalTarget: Vi,
-			addListener: zi,
-			removeListener: Si
-		},
-		Gi = E.extend({
-			run: function(t, i, e, n) {
-				this.stop(), this._el = t, this._inProgress = !0, this._duration = e || .25, this
-					._easeOutPower = 1 / Math.max(n || .5, .2), this._startPos = yi(t), this._offset = i
-					.subtract(this._startPos), this._startTime = +new Date, this.fire("start"), this
-					._animate()
-			},
-			stop: function() {
-				this._inProgress && (this._step(!0), this._complete())
-			},
-			_animate: function() {
-				this._animId = M(this._animate, this), this._step()
-			},
-			_step: function(t) {
-				var i = new Date - this._startTime,
-					e = 1e3 * this._duration;
-				i < e ? this._runFrame(this._easeOut(i / e), t) : (this._runFrame(1), this._complete())
-			},
-			_runFrame: function(t, i) {
-				var e = this._startPos.add(this._offset.multiplyBy(t));
-				i && e._round(), vi(this._el, e), this.fire("step")
-			},
-			_complete: function() {
-				z(this._animId), this._inProgress = !1, this.fire("end")
-			},
-			_easeOut: function(t) {
-				return 1 - Math.pow(1 - t, this._easeOutPower)
-			}
-		}),
-		Ki = E.extend({
-			options: {
-				crs: Y,
-				center: void 0,
-				zoom: void 0,
-				minZoom: void 0,
-				maxZoom: void 0,
-				layers: [],
-				maxBounds: void 0,
-				renderer: void 0,
-				zoomAnimation: !0,
-				zoomAnimationThreshold: 4,
-				fadeAnimation: !0,
-				markerZoomAnimation: !0,
-				transform3DLimit: 8388608,
-				zoomSnap: 1,
-				zoomDelta: 1,
-				trackResize: !0
-			},
-			initialize: function(t, i) {
-				i = c(this, i), this._handlers = [], this._layers = {}, this._zoomBoundLayers = {}, this
-					._sizeChanged = !0, this._initContainer(t), this._initLayout(), this._onResize = p(this
-						._onResize, this), this._initEvents(), i.maxBounds && this.setMaxBounds(i
-					.maxBounds), void 0 !== i.zoom && (this._zoom = this._limitZoom(i.zoom)), i.center &&
-					void 0 !== i.zoom && this.setView(j(i.center), i.zoom, {
-						reset: !0
-					}), this.callInitHooks(), this._zoomAnimated = ii && vt && !Tt && this.options
-					.zoomAnimation, this._zoomAnimated && (this._createAnimProxy(), zi(this._proxy, ei, this
-						._catchTransitionEnd, this)), this._addLayers(this.options.layers)
-			},
-			setView: function(t, i, e) {
-				if ((i = void 0 === i ? this._zoom : this._limitZoom(i), t = this._limitCenter(j(t), i, this
-							.options.maxBounds), e = e || {}, this._stop(), this._loaded && !e.reset && !
-						0 !== e) && (void 0 !== e.animate && (e.zoom = h({
-						animate: e.animate
-					}, e.zoom), e.pan = h({
-						animate: e.animate,
-						duration: e.duration
-					}, e.pan)), this._zoom !== i ? this._tryAnimatedZoom && this._tryAnimatedZoom(t, i,
-						e.zoom) : this._tryAnimatedPan(t, e.pan))) return clearTimeout(this._sizeTimer),
-					this;
-				return this._resetView(t, i), this
-			},
-			setZoom: function(t, i) {
-				return this._loaded ? this.setView(this.getCenter(), t, {
-					zoom: i
-				}) : (this._zoom = t, this)
-			},
-			zoomIn: function(t, i) {
-				return t = t || (vt ? this.options.zoomDelta : 1), this.setZoom(this._zoom + t, i)
-			},
-			zoomOut: function(t, i) {
-				return t = t || (vt ? this.options.zoomDelta : 1), this.setZoom(this._zoom - t, i)
-			},
-			setZoomAround: function(t, i, e) {
-				var n = this.getZoomScale(i),
-					o = this.getSize().divideBy(2),
-					s = (t instanceof k ? t : this.latLngToContainerPoint(t)).subtract(o).multiplyBy(1 - 1 /
-						n),
-					r = this.containerPointToLatLng(o.add(s));
-				return this.setView(r, i, {
-					zoom: e
-				})
-			},
-			_getBoundsCenterZoom: function(t, i) {
-				i = i || {}, t = t.getBounds ? t.getBounds() : N(t);
-				var e = A(i.paddingTopLeft || i.padding || [0, 0]),
-					n = A(i.paddingBottomRight || i.padding || [0, 0]),
-					o = this.getBoundsZoom(t, !1, e.add(n));
-				if ((o = "number" == typeof i.maxZoom ? Math.min(i.maxZoom, o) : o) === 1 / 0) return {
-					center: t.getCenter(),
-					zoom: o
-				};
-				var s = n.subtract(e).divideBy(2),
-					r = this.project(t.getSouthWest(), o),
-					a = this.project(t.getNorthEast(), o);
-				return {
-					center: this.unproject(r.add(a).divideBy(2).add(s), o),
-					zoom: o
-				}
-			},
-			fitBounds: function(t, i) {
-				if (!(t = N(t)).isValid()) throw new Error("Bounds are not valid.");
-				var e = this._getBoundsCenterZoom(t, i);
-				return this.setView(e.center, e.zoom, i)
-			},
-			fitWorld: function(t) {
-				return this.fitBounds([
-					[-90, -180],
-					[90, 180]
-				], t)
-			},
-			panTo: function(t, i) {
-				return this.setView(t, this._zoom, {
-					pan: i
-				})
-			},
-			panBy: function(t, i) {
-				return i = i || {}, (t = A(t).round()).x || t.y ? (!0 === i.animate || this.getSize()
-					.contains(t) ? (this._panAnim || (this._panAnim = new Gi, this._panAnim.on({
-						step: this._onPanTransitionStep,
-						end: this._onPanTransitionEnd
-					}, this)), i.noMoveStart || this.fire("movestart"), !1 !== i.animate ? (ci(this
-							._mapPane, "leaflet-pan-anim"), e = this._getMapPanePos().subtract(t)
-						.round(), this._panAnim.run(this._mapPane, e, i.duration || .25, i
-							.easeLinearity)) : (this._rawPanBy(t), this.fire("move").fire(
-						"moveend"))) : this._resetView(this.unproject(this.project(this.getCenter())
-						.add(t)), this.getZoom()), this) : this.fire("moveend");
-				var e
-			},
-			flyTo: function(s, r, t) {
-				if (!1 === (t = t || {}).animate || !vt) return this.setView(s, r, t);
-				this._stop();
-				var a = this.project(this.getCenter()),
-					h = this.project(s),
-					i = this.getSize(),
-					u = this._zoom;
-				s = j(s), r = void 0 === r ? u : r;
-				var l = Math.max(i.x, i.y),
-					n = l * this.getZoomScale(u, r),
-					c = h.distanceTo(a) || 1,
-					_ = 1.42,
-					o = _ * _;
-
-				function e(t) {
-					var i = (n * n - l * l + (t ? -1 : 1) * o * o * c * c) / (2 * (t ? n : l) * o * c),
-						e = Math.sqrt(i * i + 1) - i;
-					return e < 1e-9 ? -18 : Math.log(e)
-				}
-
-				function d(t) {
-					return (Math.exp(t) - Math.exp(-t)) / 2
-				}
-
-				function p(t) {
-					return (Math.exp(t) + Math.exp(-t)) / 2
-				}
-				var m = e(0);
-
-				function f(t) {
-					return l * (p(m) * (d(i = m + _ * t) / p(i)) - d(m)) / o;
-					var i
-				}
-				var g = Date.now(),
-					v = (e(1) - m) / _,
-					y = t.duration ? 1e3 * t.duration : 1e3 * v * .8;
-				return this._moveStart(!0, t.noMoveStart),
-					function t() {
-						var i, e, n = (Date.now() - g) / y,
-							o = (i = n, (1 - Math.pow(1 - i, 1.5)) * v);
-						n <= 1 ? (this._flyToFrame = M(t, this), this._move(this.unproject(a.add(h.subtract(
-							a).multiplyBy(f(o) / c)), u), this.getScaleZoom(l / (e = o, l * (p(
-							m) / p(m + _ * e))), u), {
-							flyTo: !0
-						})) : this._move(s, r)._moveEnd(!0)
-					}.call(this), this
-			},
-			flyToBounds: function(t, i) {
-				var e = this._getBoundsCenterZoom(t, i);
-				return this.flyTo(e.center, e.zoom, i)
-			},
-			setMaxBounds: function(t) {
-				return (t = N(t)).isValid() ? (this.options.maxBounds && this.off("moveend", this
-						._panInsideMaxBounds), this.options.maxBounds = t, this._loaded && this
-					._panInsideMaxBounds(), this.on("moveend", this._panInsideMaxBounds)) : (this
-					.options.maxBounds = null, this.off("moveend", this._panInsideMaxBounds))
-			},
-			setMinZoom: function(t) {
-				var i = this.options.minZoom;
-				return this.options.minZoom = t, this._loaded && i !== t && (this.fire("zoomlevelschange"),
-					this.getZoom() < this.options.minZoom) ? this.setZoom(t) : this
-			},
-			setMaxZoom: function(t) {
-				var i = this.options.maxZoom;
-				return this.options.maxZoom = t, this._loaded && i !== t && (this.fire("zoomlevelschange"),
-					this.getZoom() > this.options.maxZoom) ? this.setZoom(t) : this
-			},
-			panInsideBounds: function(t, i) {
-				this._enforcingBounds = !0;
-				var e = this.getCenter(),
-					n = this._limitCenter(e, this._zoom, N(t));
-				return e.equals(n) || this.panTo(n, i), this._enforcingBounds = !1, this
-			},
-			panInside: function(t, i) {
-				var e, n, o = A((i = i || {}).paddingTopLeft || i.padding || [0, 0]),
-					s = A(i.paddingBottomRight || i.padding || [0, 0]),
-					r = this.getCenter(),
-					a = this.project(r),
-					h = this.project(t),
-					u = this.getPixelBounds(),
-					l = u.getSize().divideBy(2),
-					c = O([u.min.add(o), u.max.subtract(s)]);
-				return c.contains(h) || (this._enforcingBounds = !0, e = a.subtract(h), n = A(h.x + e.x, h
-					.y + e.y), (h.x < c.min.x || h.x > c.max.x) && (n.x = a.x - e.x, 0 < e.x ? n
-					.x += l.x - o.x : n.x -= l.x - s.x), (h.y < c.min.y || h.y > c.max.y) && (n.y =
-					a.y - e.y, 0 < e.y ? n.y += l.y - o.y : n.y -= l.y - s.y), this.panTo(this
-					.unproject(n), i), this._enforcingBounds = !1), this
-			},
-			invalidateSize: function(t) {
-				if (!this._loaded) return this;
-				t = h({
-					animate: !1,
-					pan: !0
-				}, !0 === t ? {
-					animate: !0
-				} : t);
-				var i = this.getSize();
-				this._sizeChanged = !0, this._lastCenter = null;
-				var e = this.getSize(),
-					n = i.divideBy(2).round(),
-					o = e.divideBy(2).round(),
-					s = n.subtract(o);
-				return s.x || s.y ? (t.animate && t.pan ? this.panBy(s) : (t.pan && this._rawPanBy(s), this
-					.fire("move"), t.debounceMoveend ? (clearTimeout(this._sizeTimer), this
-						._sizeTimer = setTimeout(p(this.fire, this, "moveend"), 200)) : this.fire(
-						"moveend")), this.fire("resize", {
-					oldSize: i,
-					newSize: e
-				})) : this
-			},
-			stop: function() {
-				return this.setZoom(this._limitZoom(this._zoom)), this.options.zoomSnap || this.fire(
-					"viewreset"), this._stop()
-			},
-			locate: function(t) {
-				if (t = this._locateOptions = h({
-						timeout: 1e4,
-						watch: !1
-					}, t), !("geolocation" in navigator)) return this._handleGeolocationError({
-					code: 0,
-					message: "Geolocation not supported."
-				}), this;
-				var i = p(this._handleGeolocationResponse, this),
-					e = p(this._handleGeolocationError, this);
-				return t.watch ? this._locationWatchId = navigator.geolocation.watchPosition(i, e, t) :
-					navigator.geolocation.getCurrentPosition(i, e, t), this
-			},
-			stopLocate: function() {
-				return navigator.geolocation && navigator.geolocation.clearWatch && navigator.geolocation
-					.clearWatch(this._locationWatchId), this._locateOptions && (this._locateOptions
-						.setView = !1), this
-			},
-			_handleGeolocationError: function(t) {
-				var i = t.code,
-					e = t.message || (1 === i ? "permission denied" : 2 === i ? "position unavailable" :
-						"timeout");
-				this._locateOptions.setView && !this._loaded && this.fitWorld(), this.fire(
-				"locationerror", {
-					code: i,
-					message: "Geolocation error: " + e + "."
-				})
-			},
-			_handleGeolocationResponse: function(t) {
-				var i, e = new D(t.coords.latitude, t.coords.longitude),
-					n = e.toBounds(2 * t.coords.accuracy),
-					o = this._locateOptions;
-				o.setView && (i = this.getBoundsZoom(n), this.setView(e, o.maxZoom ? Math.min(i, o
-					.maxZoom) : i));
-				var s = {
-					latlng: e,
-					bounds: n,
-					timestamp: t.timestamp
-				};
-				for (var r in t.coords) "number" == typeof t.coords[r] && (s[r] = t.coords[r]);
-				this.fire("locationfound", s)
-			},
-			addHandler: function(t, i) {
-				if (!i) return this;
-				var e = this[t] = new i(this);
-				return this._handlers.push(e), this.options[t] && e.enable(), this
-			},
-			remove: function() {
-				if (this._initEvents(!0), this.off("moveend", this._panInsideMaxBounds), this
-					._containerId !== this._container._leaflet_id) throw new Error(
-					"Map container is being reused by another instance");
-				try {
-					delete this._container._leaflet_id, delete this._containerId
-				} catch (t) {
-					this._container._leaflet_id = void 0, this._containerId = void 0
-				}
-				var t;
-				for (t in void 0 !== this._locationWatchId && this.stopLocate(), this._stop(), ri(this
-						._mapPane), this._clearControlPos && this._clearControlPos(), this._resizeRequest &&
-					(z(this._resizeRequest), this._resizeRequest = null), this._clearHandlers(), this
-					._loaded && this.fire("unload"), this._layers) this._layers[t].remove();
-				for (t in this._panes) ri(this._panes[t]);
-				return this._layers = [], this._panes = [], delete this._mapPane, delete this._renderer,
-					this
-			},
-			createPane: function(t, i) {
-				var e = si("div", "leaflet-pane" + (t ? " leaflet-" + t.replace("Pane", "") + "-pane" : ""),
-					i || this._mapPane);
-				return t && (this._panes[t] = e), e
-			},
-			getCenter: function() {
-				return this._checkIfLoaded(), this._lastCenter && !this._moved() ? this._lastCenter : this
-					.layerPointToLatLng(this._getCenterLayerPoint())
-			},
-			getZoom: function() {
-				return this._zoom
-			},
-			getBounds: function() {
-				var t = this.getPixelBounds();
-				return new R(this.unproject(t.getBottomLeft()), this.unproject(t.getTopRight()))
-			},
-			getMinZoom: function() {
-				return void 0 === this.options.minZoom ? this._layersMinZoom || 0 : this.options.minZoom
-			},
-			getMaxZoom: function() {
-				return void 0 === this.options.maxZoom ? void 0 === this._layersMaxZoom ? 1 / 0 : this
-					._layersMaxZoom : this.options.maxZoom
-			},
-			getBoundsZoom: function(t, i, e) {
-				t = N(t), e = A(e || [0, 0]);
-				var n = this.getZoom() || 0,
-					o = this.getMinZoom(),
-					s = this.getMaxZoom(),
-					r = t.getNorthWest(),
-					a = t.getSouthEast(),
-					h = this.getSize().subtract(e),
-					u = O(this.project(a, n), this.project(r, n)).getSize(),
-					l = vt ? this.options.zoomSnap : 1,
-					c = h.x / u.x,
-					_ = h.y / u.y,
-					d = i ? Math.max(c, _) : Math.min(c, _),
-					n = this.getScaleZoom(d, n);
-				return l && (n = Math.round(n / (l / 100)) * (l / 100), n = i ? Math.ceil(n / l) * l : Math
-					.floor(n / l) * l), Math.max(o, Math.min(s, n))
-			},
-			getSize: function() {
-				return this._size && !this._sizeChanged || (this._size = new k(this._container
-						.clientWidth || 0, this._container.clientHeight || 0), this._sizeChanged = !1), this
-					._size.clone()
-			},
-			getPixelBounds: function(t, i) {
-				var e = this._getTopLeftPoint(t, i);
-				return new I(e, e.add(this.getSize()))
-			},
-			getPixelOrigin: function() {
-				return this._checkIfLoaded(), this._pixelOrigin
-			},
-			getPixelWorldBounds: function(t) {
-				return this.options.crs.getProjectedBounds(void 0 === t ? this.getZoom() : t)
-			},
-			getPane: function(t) {
-				return "string" == typeof t ? this._panes[t] : t
-			},
-			getPanes: function() {
-				return this._panes
-			},
-			getContainer: function() {
-				return this._container
-			},
-			getZoomScale: function(t, i) {
-				var e = this.options.crs;
-				return i = void 0 === i ? this._zoom : i, e.scale(t) / e.scale(i)
-			},
-			getScaleZoom: function(t, i) {
-				var e = this.options.crs;
-				i = void 0 === i ? this._zoom : i;
-				var n = e.zoom(t * e.scale(i));
-				return isNaN(n) ? 1 / 0 : n
-			},
-			project: function(t, i) {
-				return i = void 0 === i ? this._zoom : i, this.options.crs.latLngToPoint(j(t), i)
-			},
-			unproject: function(t, i) {
-				return i = void 0 === i ? this._zoom : i, this.options.crs.pointToLatLng(A(t), i)
-			},
-			layerPointToLatLng: function(t) {
-				var i = A(t).add(this.getPixelOrigin());
-				return this.unproject(i)
-			},
-			latLngToLayerPoint: function(t) {
-				return this.project(j(t))._round()._subtract(this.getPixelOrigin())
-			},
-			wrapLatLng: function(t) {
-				return this.options.crs.wrapLatLng(j(t))
-			},
-			wrapLatLngBounds: function(t) {
-				return this.options.crs.wrapLatLngBounds(N(t))
-			},
-			distance: function(t, i) {
-				return this.options.crs.distance(j(t), j(i))
-			},
-			containerPointToLayerPoint: function(t) {
-				return A(t).subtract(this._getMapPanePos())
-			},
-			layerPointToContainerPoint: function(t) {
-				return A(t).add(this._getMapPanePos())
-			},
-			containerPointToLatLng: function(t) {
-				var i = this.containerPointToLayerPoint(A(t));
-				return this.layerPointToLatLng(i)
-			},
-			latLngToContainerPoint: function(t) {
-				return this.layerPointToContainerPoint(this.latLngToLayerPoint(j(t)))
-			},
-			mouseEventToContainerPoint: function(t) {
-				return Di(t, this._container)
-			},
-			mouseEventToLayerPoint: function(t) {
-				return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t))
-			},
-			mouseEventToLatLng: function(t) {
-				return this.layerPointToLatLng(this.mouseEventToLayerPoint(t))
-			},
-			_initContainer: function(t) {
-				var i = this._container = ni(t);
-				if (!i) throw new Error("Map container not found.");
-				if (i._leaflet_id) throw new Error("Map container is already initialized.");
-				zi(i, "scroll", this._onScroll, this), this._containerId = m(i)
-			},
-			_initLayout: function() {
-				var t = this._container;
-				this._fadeAnimated = this.options.fadeAnimation && vt, ci(t, "leaflet-container" + (bt ?
-					" leaflet-touch" : "") + (zt ? " leaflet-retina" : "") + (it ?
-					" leaflet-oldie" : "") + (ct ? " leaflet-safari" : "") + (this._fadeAnimated ?
-					" leaflet-fade-anim" : ""));
-				var i = oi(t, "position");
-				"absolute" !== i && "relative" !== i && "fixed" !== i && (t.style.position = "relative"),
-					this._initPanes(), this._initControlPos && this._initControlPos()
-			},
-			_initPanes: function() {
-				var t = this._panes = {};
-				this._paneRenderers = {}, this._mapPane = this.createPane("mapPane", this._container), vi(
-						this._mapPane, new k(0, 0)), this.createPane("tilePane"), this.createPane(
-						"shadowPane"), this.createPane("overlayPane"), this.createPane("markerPane"), this
-					.createPane("tooltipPane"), this.createPane("popupPane"), this.options
-					.markerZoomAnimation || (ci(t.markerPane, "leaflet-zoom-hide"), ci(t.shadowPane,
-						"leaflet-zoom-hide"))
-			},
-			_resetView: function(t, i) {
-				vi(this._mapPane, new k(0, 0));
-				var e = !this._loaded;
-				this._loaded = !0, i = this._limitZoom(i), this.fire("viewprereset");
-				var n = this._zoom !== i;
-				this._moveStart(n, !1)._move(t, i)._moveEnd(n), this.fire("viewreset"), e && this.fire(
-					"load")
-			},
-			_moveStart: function(t, i) {
-				return t && this.fire("zoomstart"), i || this.fire("movestart"), this
-			},
-			_move: function(t, i, e) {
-				void 0 === i && (i = this._zoom);
-				var n = this._zoom !== i;
-				return this._zoom = i, this._lastCenter = t, this._pixelOrigin = this._getNewPixelOrigin(t),
-					(n || e && e.pinch) && this.fire("zoom", e), this.fire("move", e)
-			},
-			_moveEnd: function(t) {
-				return t && this.fire("zoomend"), this.fire("moveend")
-			},
-			_stop: function() {
-				return z(this._flyToFrame), this._panAnim && this._panAnim.stop(), this
-			},
-			_rawPanBy: function(t) {
-				vi(this._mapPane, this._getMapPanePos().subtract(t))
-			},
-			_getZoomSpan: function() {
-				return this.getMaxZoom() - this.getMinZoom()
-			},
-			_panInsideMaxBounds: function() {
-				this._enforcingBounds || this.panInsideBounds(this.options.maxBounds)
-			},
-			_checkIfLoaded: function() {
-				if (!this._loaded) throw new Error("Set map center and zoom first.")
-			},
-			_initEvents: function(t) {
-				this._targets = {};
-				var i = t ? Si : zi;
-				i((this._targets[m(this._container)] = this)._container,
-						"click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress keydown keyup",
-						this._handleDOMEvent, this), this.options.trackResize && i(window, "resize", this
-						._onResize, this), vt && this.options.transform3DLimit && (t ? this.off : this.on)
-					.call(this, "moveend", this._onMoveEnd)
-			},
-			_onResize: function() {
-				z(this._resizeRequest), this._resizeRequest = M(function() {
-					this.invalidateSize({
-						debounceMoveend: !0
-					})
-				}, this)
-			},
-			_onScroll: function() {
-				this._container.scrollTop = 0, this._container.scrollLeft = 0
-			},
-			_onMoveEnd: function() {
-				var t = this._getMapPanePos();
-				Math.max(Math.abs(t.x), Math.abs(t.y)) >= this.options.transform3DLimit && this._resetView(
-					this.getCenter(), this.getZoom())
-			},
-			_findEventTargets: function(t, i) {
-				for (var e, n = [], o = "mouseout" === i || "mouseover" === i, s = t.target || t.srcElement,
-						r = !1; s;) {
-					if ((e = this._targets[m(s)]) && ("click" === i || "preclick" === i) && !t._simulated &&
-						this._draggableMoved(e)) {
-						r = !0;
-						break
-					}
-					if (e && e.listens(i, !0)) {
-						if (o && !Vi(s, t)) break;
-						if (n.push(e), o) break
-					}
-					if (s === this._container) break;
-					s = s.parentNode
-				}
-				return n.length || r || o || !Vi(s, t) || (n = [this]), n
-			},
-			_handleDOMEvent: function(t) {
-				var i;
-				this._loaded && !Ui(t) && ("mousedown" !== (i = t.type) && "keypress" !== i && "keyup" !==
-					i && "keydown" !== i || Pi(t.target || t.srcElement), this._fireDOMEvent(t, i))
-			},
-			_mouseEvents: ["click", "dblclick", "mouseover", "mouseout", "contextmenu"],
-			_fireDOMEvent: function(t, i, e) {
-				var n;
-				if ("click" === t.type && ((n = h({}, t)).type = "preclick", this._fireDOMEvent(n, n.type,
-						e)), !t._stopped && (e = (e || []).concat(this._findEventTargets(t, i))).length) {
-					var o = e[0];
-					"contextmenu" === i && o.listens(i, !0) && Ri(t);
-					var s, r = {
-						originalEvent: t
-					};
-					"keypress" !== t.type && "keydown" !== t.type && "keyup" !== t.type && (s = o
-						.getLatLng && (!o._radius || o._radius <= 10), r.containerPoint = s ? this
-						.latLngToContainerPoint(o.getLatLng()) : this.mouseEventToContainerPoint(t), r
-						.layerPoint = this.containerPointToLayerPoint(r.containerPoint), r.latlng = s ?
-						o.getLatLng() : this.layerPointToLatLng(r.layerPoint));
-					for (var a = 0; a < e.length; a++)
-						if (e[a].fire(i, r, !0), r.originalEvent._stopped || !1 === e[a].options
-							.bubblingMouseEvents && -1 !== v(this._mouseEvents, i)) return
-				}
-			},
-			_draggableMoved: function(t) {
-				return (t = t.dragging && t.dragging.enabled() ? t : this).dragging && t.dragging.moved() ||
-					this.boxZoom && this.boxZoom.moved()
-			},
-			_clearHandlers: function() {
-				for (var t = 0, i = this._handlers.length; t < i; t++) this._handlers[t].disable()
-			},
-			whenReady: function(t, i) {
-				return this._loaded ? t.call(i || this, {
-					target: this
-				}) : this.on("load", t, i), this
-			},
-			_getMapPanePos: function() {
-				return yi(this._mapPane) || new k(0, 0)
-			},
-			_moved: function() {
-				var t = this._getMapPanePos();
-				return t && !t.equals([0, 0])
-			},
-			_getTopLeftPoint: function(t, i) {
-				return (t && void 0 !== i ? this._getNewPixelOrigin(t, i) : this.getPixelOrigin()).subtract(
-					this._getMapPanePos())
-			},
-			_getNewPixelOrigin: function(t, i) {
-				var e = this.getSize()._divideBy(2);
-				return this.project(t, i)._subtract(e)._add(this._getMapPanePos())._round()
-			},
-			_latLngToNewLayerPoint: function(t, i, e) {
-				var n = this._getNewPixelOrigin(e, i);
-				return this.project(t, i)._subtract(n)
-			},
-			_latLngBoundsToNewLayerBounds: function(t, i, e) {
-				var n = this._getNewPixelOrigin(e, i);
-				return O([this.project(t.getSouthWest(), i)._subtract(n), this.project(t.getNorthWest(), i)
-					._subtract(n), this.project(t.getSouthEast(), i)._subtract(n), this.project(t
-						.getNorthEast(), i)._subtract(n)
-				])
-			},
-			_getCenterLayerPoint: function() {
-				return this.containerPointToLayerPoint(this.getSize()._divideBy(2))
-			},
-			_getCenterOffset: function(t) {
-				return this.latLngToLayerPoint(t).subtract(this._getCenterLayerPoint())
-			},
-			_limitCenter: function(t, i, e) {
-				if (!e) return t;
-				var n = this.project(t, i),
-					o = this.getSize().divideBy(2),
-					s = new I(n.subtract(o), n.add(o)),
-					r = this._getBoundsOffset(s, e, i);
-				return r.round().equals([0, 0]) ? t : this.unproject(n.add(r), i)
-			},
-			_limitOffset: function(t, i) {
-				if (!i) return t;
-				var e = this.getPixelBounds(),
-					n = new I(e.min.add(t), e.max.add(t));
-				return t.add(this._getBoundsOffset(n, i))
-			},
-			_getBoundsOffset: function(t, i, e) {
-				var n = O(this.project(i.getNorthEast(), e), this.project(i.getSouthWest(), e)),
-					o = n.min.subtract(t.min),
-					s = n.max.subtract(t.max);
-				return new k(this._rebound(o.x, -s.x), this._rebound(o.y, -s.y))
-			},
-			_rebound: function(t, i) {
-				return 0 < t + i ? Math.round(t - i) / 2 : Math.max(0, Math.ceil(t)) - Math.max(0, Math
-					.floor(i))
-			},
-			_limitZoom: function(t) {
-				var i = this.getMinZoom(),
-					e = this.getMaxZoom(),
-					n = vt ? this.options.zoomSnap : 1;
-				return n && (t = Math.round(t / n) * n), Math.max(i, Math.min(e, t))
-			},
-			_onPanTransitionStep: function() {
-				this.fire("move")
-			},
-			_onPanTransitionEnd: function() {
-				_i(this._mapPane, "leaflet-pan-anim"), this.fire("moveend")
-			},
-			_tryAnimatedPan: function(t, i) {
-				var e = this._getCenterOffset(t)._trunc();
-				return !(!0 !== (i && i.animate) && !this.getSize().contains(e)) && (this.panBy(e, i), !0)
-			},
-			_createAnimProxy: function() {
-				var t = this._proxy = si("div", "leaflet-proxy leaflet-zoom-animated");
-				this._panes.mapPane.appendChild(t), this.on("zoomanim", function(t) {
-					var i = ti,
-						e = this._proxy.style[i];
-					gi(this._proxy, this.project(t.center, t.zoom), this.getZoomScale(t.zoom, 1)),
-						e === this._proxy.style[i] && this._animatingZoom && this
-						._onZoomTransitionEnd()
-				}, this), this.on("load moveend", this._animMoveEnd, this), this._on("unload", this
-					._destroyAnimProxy, this)
-			},
-			_destroyAnimProxy: function() {
-				ri(this._proxy), this.off("load moveend", this._animMoveEnd, this), delete this._proxy
-			},
-			_animMoveEnd: function() {
-				var t = this.getCenter(),
-					i = this.getZoom();
-				gi(this._proxy, this.project(t, i), this.getZoomScale(i, 1))
-			},
-			_catchTransitionEnd: function(t) {
-				this._animatingZoom && 0 <= t.propertyName.indexOf("transform") && this
-					._onZoomTransitionEnd()
-			},
-			_nothingToAnimate: function() {
-				return !this._container.getElementsByClassName("leaflet-zoom-animated").length
-			},
-			_tryAnimatedZoom: function(t, i, e) {
-				if (this._animatingZoom) return !0;
-				if (e = e || {}, !this._zoomAnimated || !1 === e.animate || this._nothingToAnimate() || Math
-					.abs(i - this._zoom) > this.options.zoomAnimationThreshold) return !1;
-				var n = this.getZoomScale(i),
-					o = this._getCenterOffset(t)._divideBy(1 - 1 / n);
-				return !(!0 !== e.animate && !this.getSize().contains(o)) && (M(function() {
-					this._moveStart(!0, !1)._animateZoom(t, i, !0)
-				}, this), !0)
-			},
-			_animateZoom: function(t, i, e, n) {
-				this._mapPane && (e && (this._animatingZoom = !0, this._animateToCenter = t, this
-					._animateToZoom = i, ci(this._mapPane, "leaflet-zoom-anim")), this.fire(
-					"zoomanim", {
-						center: t,
-						zoom: i,
-						noUpdate: n
-					}), setTimeout(p(this._onZoomTransitionEnd, this), 250))
-			},
-			_onZoomTransitionEnd: function() {
-				this._animatingZoom && (this._mapPane && _i(this._mapPane, "leaflet-zoom-anim"), this
-					._animatingZoom = !1, this._move(this._animateToCenter, this._animateToZoom), M(
-						function() {
-							this._moveEnd(!0)
-						}, this))
-			}
-		});
-
-	function Yi(t) {
-		return new Xi(t)
-	}
-	var Xi = S.extend({
-		options: {
-			position: "topright"
-		},
-		initialize: function(t) {
-			c(this, t)
-		},
-		getPosition: function() {
-			return this.options.position
-		},
-		setPosition: function(t) {
-			var i = this._map;
-			return i && i.removeControl(this), this.options.position = t, i && i.addControl(this), this
-		},
-		getContainer: function() {
-			return this._container
-		},
-		addTo: function(t) {
-			this.remove(), this._map = t;
-			var i = this._container = this.onAdd(t),
-				e = this.getPosition(),
-				n = t._controlCorners[e];
-			return ci(i, "leaflet-control"), -1 !== e.indexOf("bottom") ? n.insertBefore(i, n
-				.firstChild) : n.appendChild(i), this._map.on("unload", this.remove, this), this
-		},
-		remove: function() {
-			return this._map && (ri(this._container), this.onRemove && this.onRemove(this._map), this
-				._map.off("unload", this.remove, this), this._map = null), this
-		},
-		_refocusOnMap: function(t) {
-			this._map && t && 0 < t.screenX && 0 < t.screenY && this._map.getContainer().focus()
-		}
-	});
-	Ki.include({
-		addControl: function(t) {
-			return t.addTo(this), this
-		},
-		removeControl: function(t) {
-			return t.remove(), this
-		},
-		_initControlPos: function() {
-			var n = this._controlCorners = {},
-				o = "leaflet-",
-				s = this._controlContainer = si("div", o + "control-container", this._container);
-
-			function t(t, i) {
-				var e = o + t + " " + o + i;
-				n[t + i] = si("div", e, s)
-			}
-			t("top", "left"), t("top", "right"), t("bottom", "left"), t("bottom", "right")
-		},
-		_clearControlPos: function() {
-			for (var t in this._controlCorners) ri(this._controlCorners[t]);
-			ri(this._controlContainer), delete this._controlCorners, delete this._controlContainer
-		}
-	});
-	var Ji = Xi.extend({
-			options: {
-				collapsed: !0,
-				position: "topright",
-				autoZIndex: !0,
-				hideSingleBase: !1,
-				sortLayers: !1,
-				sortFunction: function(t, i, e, n) {
-					return e < n ? -1 : n < e ? 1 : 0
-				}
-			},
-			initialize: function(t, i, e) {
-				for (var n in c(this, e), this._layerControlInputs = [], this._layers = [], this
-						._lastZIndex = 0, this._handlingClick = !1, t) this._addLayer(t[n], n);
-				for (n in i) this._addLayer(i[n], n, !0)
-			},
-			onAdd: function(t) {
-				this._initLayout(), this._update(), (this._map = t).on("zoomend", this._checkDisabledLayers,
-					this);
-				for (var i = 0; i < this._layers.length; i++) this._layers[i].layer.on("add remove", this
-					._onLayerChange, this);
-				return this._container
-			},
-			addTo: function(t) {
-				return Xi.prototype.addTo.call(this, t), this._expandIfNotCollapsed()
-			},
-			onRemove: function() {
-				this._map.off("zoomend", this._checkDisabledLayers, this);
-				for (var t = 0; t < this._layers.length; t++) this._layers[t].layer.off("add remove", this
-					._onLayerChange, this)
-			},
-			addBaseLayer: function(t, i) {
-				return this._addLayer(t, i), this._map ? this._update() : this
-			},
-			addOverlay: function(t, i) {
-				return this._addLayer(t, i, !0), this._map ? this._update() : this
-			},
-			removeLayer: function(t) {
-				t.off("add remove", this._onLayerChange, this);
-				var i = this._getLayer(m(t));
-				return i && this._layers.splice(this._layers.indexOf(i), 1), this._map ? this._update() :
-					this
-			},
-			expand: function() {
-				ci(this._container, "leaflet-control-layers-expanded"), this._section.style.height = null;
-				var t = this._map.getSize().y - (this._container.offsetTop + 50);
-				return t < this._section.clientHeight ? (ci(this._section,
-						"leaflet-control-layers-scrollbar"), this._section.style.height = t + "px") : _i(
-						this._section, "leaflet-control-layers-scrollbar"), this._checkDisabledLayers(),
-					this
-			},
-			collapse: function() {
-				return _i(this._container, "leaflet-control-layers-expanded"), this
-			},
-			_initLayout: function() {
-				var t = "leaflet-control-layers",
-					i = this._container = si("div", t),
-					e = this.options.collapsed;
-				i.setAttribute("aria-haspopup", !0), Oi(i), Ii(i);
-				var n = this._section = si("section", t + "-list");
-				e && (this._map.on("click", this.collapse, this), ot || zi(i, {
-					mouseenter: this.expand,
-					mouseleave: this.collapse
-				}, this));
-				var o = this._layersLink = si("a", t + "-toggle", i);
-				o.href = "#", o.title = "Layers", bt ? (zi(o, "click", Ni), zi(o, "click", this.expand,
-						this)) : zi(o, "focus", this.expand, this), e || this.expand(), this
-					._baseLayersList = si("div", t + "-base", n), this._separator = si("div", t +
-						"-separator", n), this._overlaysList = si("div", t + "-overlays", n), i.appendChild(
-						n)
-			},
-			_getLayer: function(t) {
-				for (var i = 0; i < this._layers.length; i++)
-					if (this._layers[i] && m(this._layers[i].layer) === t) return this._layers[i]
-			},
-			_addLayer: function(t, i, e) {
-				this._map && t.on("add remove", this._onLayerChange, this), this._layers.push({
-					layer: t,
-					name: i,
-					overlay: e
-				}), this.options.sortLayers && this._layers.sort(p(function(t, i) {
-					return this.options.sortFunction(t.layer, i.layer, t.name, i.name)
-				}, this)), this.options.autoZIndex && t.setZIndex && (this._lastZIndex++, t.setZIndex(
-					this._lastZIndex)), this._expandIfNotCollapsed()
-			},
-			_update: function() {
-				if (!this._container) return this;
-				ai(this._baseLayersList), ai(this._overlaysList), this._layerControlInputs = [];
-				for (var t, i, e, n = 0, o = 0; o < this._layers.length; o++) e = this._layers[o], this
-					._addItem(e), i = i || e.overlay, t = t || !e.overlay, n += e.overlay ? 0 : 1;
-				return this.options.hideSingleBase && (t = t && 1 < n, this._baseLayersList.style.display =
-					t ? "" : "none"), this._separator.style.display = i && t ? "" : "none", this
-			},
-			_onLayerChange: function(t) {
-				this._handlingClick || this._update();
-				var i = this._getLayer(m(t.target)),
-					e = i.overlay ? "add" === t.type ? "overlayadd" : "overlayremove" : "add" === t.type ?
-					"baselayerchange" : null;
-				e && this._map.fire(e, i)
-			},
-			_createRadioElement: function(t, i) {
-				var e = '<input type="radio" class="leaflet-control-layers-selector" name="' + t + '"' + (
-						i ? ' checked="checked"' : "") + "/>",
-					n = document.createElement("div");
-				return n.innerHTML = e, n.firstChild
-			},
-			_addItem: function(t) {
-				var i, e = document.createElement("label"),
-					n = this._map.hasLayer(t.layer);
-				t.overlay ? ((i = document.createElement("input")).type = "checkbox", i.className =
-						"leaflet-control-layers-selector", i.defaultChecked = n) : i = this
-					._createRadioElement("leaflet-base-layers_" + m(this), n), this._layerControlInputs
-					.push(i), i.layerId = m(t.layer), zi(i, "click", this._onInputClick, this);
-				var o = document.createElement("span");
-				o.innerHTML = " " + t.name;
-				var s = document.createElement("div");
-				return e.appendChild(s), s.appendChild(i), s.appendChild(o), (t.overlay ? this
-						._overlaysList : this._baseLayersList).appendChild(e), this._checkDisabledLayers(),
-					e
-			},
-			_onInputClick: function() {
-				var t, i, e = this._layerControlInputs,
-					n = [],
-					o = [];
-				this._handlingClick = !0;
-				for (var s = e.length - 1; 0 <= s; s--) t = e[s], i = this._getLayer(t.layerId).layer, t
-					.checked ? n.push(i) : t.checked || o.push(i);
-				for (s = 0; s < o.length; s++) this._map.hasLayer(o[s]) && this._map.removeLayer(o[s]);
-				for (s = 0; s < n.length; s++) this._map.hasLayer(n[s]) || this._map.addLayer(n[s]);
-				this._handlingClick = !1, this._refocusOnMap()
-			},
-			_checkDisabledLayers: function() {
-				for (var t, i, e = this._layerControlInputs, n = this._map.getZoom(), o = e.length - 1; 0 <=
-					o; o--) t = e[o], i = this._getLayer(t.layerId).layer, t.disabled = void 0 !== i.options
-					.minZoom && n < i.options.minZoom || void 0 !== i.options.maxZoom && n > i.options
-					.maxZoom
-			},
-			_expandIfNotCollapsed: function() {
-				return this._map && !this.options.collapsed && this.expand(), this
-			},
-			_expand: function() {
-				return this.expand()
-			},
-			_collapse: function() {
-				return this.collapse()
-			}
-		}),
-		$i = Xi.extend({
-			options: {
-				position: "topleft",
-				zoomInText: "+",
-				zoomInTitle: "Zoom in",
-				zoomOutText: "&#x2212;",
-				zoomOutTitle: "Zoom out"
-			},
-			onAdd: function(t) {
-				var i = "leaflet-control-zoom",
-					e = si("div", i + " leaflet-bar"),
-					n = this.options;
-				return this._zoomInButton = this._createButton(n.zoomInText, n.zoomInTitle, i + "-in", e,
-					this._zoomIn), this._zoomOutButton = this._createButton(n.zoomOutText, n
-					.zoomOutTitle, i + "-out", e, this._zoomOut), this._updateDisabled(), t.on(
-					"zoomend zoomlevelschange", this._updateDisabled, this), e
-			},
-			onRemove: function(t) {
-				t.off("zoomend zoomlevelschange", this._updateDisabled, this)
-			},
-			disable: function() {
-				return this._disabled = !0, this._updateDisabled(), this
-			},
-			enable: function() {
-				return this._disabled = !1, this._updateDisabled(), this
-			},
-			_zoomIn: function(t) {
-				!this._disabled && this._map._zoom < this._map.getMaxZoom() && this._map.zoomIn(this._map
-					.options.zoomDelta * (t.shiftKey ? 3 : 1))
-			},
-			_zoomOut: function(t) {
-				!this._disabled && this._map._zoom > this._map.getMinZoom() && this._map.zoomOut(this._map
-					.options.zoomDelta * (t.shiftKey ? 3 : 1))
-			},
-			_createButton: function(t, i, e, n, o) {
-				var s = si("a", e, n);
-				return s.innerHTML = t, s.href = "#", s.title = i, s.setAttribute("role", "button"), s
-					.setAttribute("aria-label", i), Oi(s), zi(s, "click", Ni), zi(s, "click", o, this), zi(
-						s, "click", this._refocusOnMap, this), s
-			},
-			_updateDisabled: function() {
-				var t = this._map,
-					i = "leaflet-disabled";
-				_i(this._zoomInButton, i), _i(this._zoomOutButton, i), !this._disabled && t._zoom !== t
-					.getMinZoom() || ci(this._zoomOutButton, i), !this._disabled && t._zoom !== t
-					.getMaxZoom() || ci(this._zoomInButton, i)
-			}
-		});
-	Ki.mergeOptions({
-		zoomControl: !0
-	}), Ki.addInitHook(function() {
-		this.options.zoomControl && (this.zoomControl = new $i, this.addControl(this.zoomControl))
-	});
-	var Qi = Xi.extend({
-			options: {
-				position: "bottomleft",
-				maxWidth: 100,
-				metric: !0,
-				imperial: !0
-			},
-			onAdd: function(t) {
-				var i = "leaflet-control-scale",
-					e = si("div", i),
-					n = this.options;
-				return this._addScales(n, i + "-line", e), t.on(n.updateWhenIdle ? "moveend" : "move", this
-					._update, this), t.whenReady(this._update, this), e
-			},
-			onRemove: function(t) {
-				t.off(this.options.updateWhenIdle ? "moveend" : "move", this._update, this)
-			},
-			_addScales: function(t, i, e) {
-				t.metric && (this._mScale = si("div", i, e)), t.imperial && (this._iScale = si("div", i, e))
-			},
-			_update: function() {
-				var t = this._map,
-					i = t.getSize().y / 2,
-					e = t.distance(t.containerPointToLatLng([0, i]), t.containerPointToLatLng([this.options
-						.maxWidth, i
-					]));
-				this._updateScales(e)
-			},
-			_updateScales: function(t) {
-				this.options.metric && t && this._updateMetric(t), this.options.imperial && t && this
-					._updateImperial(t)
-			},
-			_updateMetric: function(t) {
-				var i = this._getRoundNum(t),
-					e = i < 1e3 ? i + " m" : i / 1e3 + " km";
-				this._updateScale(this._mScale, e, i / t)
-			},
-			_updateImperial: function(t) {
-				var i, e, n, o = 3.2808399 * t;
-				5280 < o ? (i = o / 5280, e = this._getRoundNum(i), this._updateScale(this._iScale, e +
-					" mi", e / i)) : (n = this._getRoundNum(o), this._updateScale(this._iScale, n +
-					" ft", n / o))
-			},
-			_updateScale: function(t, i, e) {
-				t.style.width = Math.round(this.options.maxWidth * e) + "px", t.innerHTML = i
-			},
-			_getRoundNum: function(t) {
-				var i = Math.pow(10, (Math.floor(t) + "").length - 1),
-					e = t / i;
-				return i * (e = 10 <= e ? 10 : 5 <= e ? 5 : 3 <= e ? 3 : 2 <= e ? 2 : 1)
-			}
-		}),
-		te = Xi.extend({
-			options: {
-				position: "bottomright",
-				prefix: '<a href="https://leafletjs.com" title="A JS library for interactive maps">Leaflet</a>'
-			},
-			initialize: function(t) {
-				c(this, t), this._attributions = {}
-			},
-			onAdd: function(t) {
-				for (var i in (t.attributionControl = this)._container = si("div",
-						"leaflet-control-attribution"), Oi(this._container), t._layers) t._layers[i]
-					.getAttribution && this.addAttribution(t._layers[i].getAttribution());
-				return this._update(), this._container
-			},
-			setPrefix: function(t) {
-				return this.options.prefix = t, this._update(), this
-			},
-			addAttribution: function(t) {
-				return t && (this._attributions[t] || (this._attributions[t] = 0), this._attributions[t]++,
-					this._update()), this
-			},
-			removeAttribution: function(t) {
-				return t && this._attributions[t] && (this._attributions[t]--, this._update()), this
-			},
-			_update: function() {
-				if (this._map) {
-					var t = [];
-					for (var i in this._attributions) this._attributions[i] && t.push(i);
-					var e = [];
-					this.options.prefix && e.push(this.options.prefix), t.length && e.push(t.join(", ")),
-						this._container.innerHTML = e.join(" | ")
-				}
-			}
-		});
-	Ki.mergeOptions({
-		attributionControl: !0
-	}), Ki.addInitHook(function() {
-		this.options.attributionControl && (new te).addTo(this)
-	});
-	Xi.Layers = Ji, Xi.Zoom = $i, Xi.Scale = Qi, Xi.Attribution = te, Yi.layers = function(t, i, e) {
-		return new Ji(t, i, e)
-	}, Yi.zoom = function(t) {
-		return new $i(t)
-	}, Yi.scale = function(t) {
-		return new Qi(t)
-	}, Yi.attribution = function(t) {
-		return new te(t)
-	};
-	var ie = S.extend({
-		initialize: function(t) {
-			this._map = t
-		},
-		enable: function() {
-			return this._enabled || (this._enabled = !0, this.addHooks()), this
-		},
-		disable: function() {
-			return this._enabled && (this._enabled = !1, this.removeHooks()), this
-		},
-		enabled: function() {
-			return !!this._enabled
-		}
-	});
-	ie.addTo = function(t, i) {
-		return t.addHandler(i, this), this
-	};
-	var ee, ne = {
-			Events: Z
-		},
-		oe = bt ? "touchstart mousedown" : "mousedown",
-		se = {
-			mousedown: "mouseup",
-			touchstart: "touchend",
-			pointerdown: "touchend",
-			MSPointerDown: "touchend"
-		},
-		re = {
-			mousedown: "mousemove",
-			touchstart: "touchmove",
-			pointerdown: "touchmove",
-			MSPointerDown: "touchmove"
-		},
-		ae = E.extend({
-			options: {
-				clickTolerance: 3
-			},
-			initialize: function(t, i, e, n) {
-				c(this, n), this._element = t, this._dragStartTarget = i || t, this._preventOutline = e
-			},
-			enable: function() {
-				this._enabled || (zi(this._dragStartTarget, oe, this._onDown, this), this._enabled = !0)
-			},
-			disable: function() {
-				this._enabled && (ae._dragging === this && this.finishDrag(), Si(this._dragStartTarget, oe,
-					this._onDown, this), this._enabled = !1, this._moved = !1)
-			},
-			_onDown: function(t) {
-				var i, e;
-				!t._simulated && this._enabled && (this._moved = !1, li(this._element,
-					"leaflet-zoom-anim") || ae._dragging || t.shiftKey || 1 !== t.which && 1 !== t
-					.button && !t.touches || ((ae._dragging = this)._preventOutline && Pi(this
-						._element), xi(), Xt(), this._moving || (this.fire("down"), i = t.touches ? t
-							.touches[0] : t, e = bi(this._element), this._startPoint = new k(i.clientX,
-								i.clientY), this._parentScale = Ti(e), zi(document, re[t.type], this
-								._onMove, this), zi(document, se[t.type], this._onUp, this))))
-			},
-			_onMove: function(t) {
-				var i, e;
-				!t._simulated && this._enabled && (t.touches && 1 < t.touches.length ? this._moved = !0 : ((
-					e = new k((i = t.touches && 1 === t.touches.length ? t.touches[0] : t)
-						.clientX, i.clientY)._subtract(this._startPoint)).x || e.y) && (Math.abs(e
-					.x) + Math.abs(e.y) < this.options.clickTolerance || (e.x /= this
-					._parentScale.x, e.y /= this._parentScale.y, Ri(t), this._moved || (this
-						.fire("dragstart"), this._moved = !0, this._startPos = yi(this._element)
-						.subtract(e), ci(document.body, "leaflet-dragging"), this._lastTarget =
-						t.target || t.srcElement, window.SVGElementInstance && this
-						._lastTarget instanceof window.SVGElementInstance && (this._lastTarget =
-							this._lastTarget.correspondingUseElement), ci(this._lastTarget,
-							"leaflet-drag-target")), this._newPos = this._startPos.add(e), this
-					._moving = !0, z(this._animRequest), this._lastEvent = t, this
-					._animRequest = M(this._updatePosition, this, !0))))
-			},
-			_updatePosition: function() {
-				var t = {
-					originalEvent: this._lastEvent
-				};
-				this.fire("predrag", t), vi(this._element, this._newPos), this.fire("drag", t)
-			},
-			_onUp: function(t) {
-				!t._simulated && this._enabled && this.finishDrag()
-			},
-			finishDrag: function() {
-				for (var t in _i(document.body, "leaflet-dragging"), this._lastTarget && (_i(this
-						._lastTarget, "leaflet-drag-target"), this._lastTarget = null), re) Si(document, re[
-					t], this._onMove, this), Si(document, se[t], this._onUp, this);
-				wi(), Jt(), this._moved && this._moving && (z(this._animRequest), this.fire("dragend", {
-					distance: this._newPos.distanceTo(this._startPos)
-				})), this._moving = !1, ae._dragging = !1
-			}
-		});
-
-	function he(t, i) {
-		if (!i || !t.length) return t.slice();
-		var e = i * i;
-		return t = function(t, i) {
-			var e = t.length,
-				n = new(typeof Uint8Array != void 0 + "" ? Uint8Array : Array)(e);
-			n[0] = n[e - 1] = 1,
-				function t(i, e, n, o, s) {
-					var r, a, h, u = 0;
-					for (a = o + 1; a <= s - 1; a++) h = de(i[a], i[o], i[s], !0), u < h && (r = a, u = h);
-					n < u && (e[r] = 1, t(i, e, n, o, r), t(i, e, n, r, s))
-				}(t, n, i, 0, e - 1);
-			var o, s = [];
-			for (o = 0; o < e; o++) n[o] && s.push(t[o]);
-			return s
-		}(t = function(t, i) {
-			for (var e = [t[0]], n = 1, o = 0, s = t.length; n < s; n++)(function(t, i) {
-				var e = i.x - t.x,
-					n = i.y - t.y;
-				return e * e + n * n
-			})(t[n], t[o]) > i && (e.push(t[n]), o = n);
-			o < s - 1 && e.push(t[s - 1]);
-			return e
-		}(t, e), e)
-	}
-
-	function ue(t, i, e) {
-		return Math.sqrt(de(t, i, e, !0))
-	}
-
-	function le(t, i, e, n, o) {
-		var s, r, a, h = n ? ee : _e(t, e),
-			u = _e(i, e);
-		for (ee = u;;) {
-			if (!(h | u)) return [t, i];
-			if (h & u) return !1;
-			a = _e(r = ce(t, i, s = h || u, e, o), e), s === h ? (t = r, h = a) : (i = r, u = a)
-		}
-	}
-
-	function ce(t, i, e, n, o) {
-		var s, r, a = i.x - t.x,
-			h = i.y - t.y,
-			u = n.min,
-			l = n.max;
-		return 8 & e ? (s = t.x + a * (l.y - t.y) / h, r = l.y) : 4 & e ? (s = t.x + a * (u.y - t.y) / h, r = u.y) :
-			2 & e ? (s = l.x, r = t.y + h * (l.x - t.x) / a) : 1 & e && (s = u.x, r = t.y + h * (u.x - t.x) / a),
-			new k(s, r, o)
-	}
-
-	function _e(t, i) {
-		var e = 0;
-		return t.x < i.min.x ? e |= 1 : t.x > i.max.x && (e |= 2), t.y < i.min.y ? e |= 4 : t.y > i.max.y && (e |=
-			8), e
-	}
-
-	function de(t, i, e, n) {
-		var o, s = i.x,
-			r = i.y,
-			a = e.x - s,
-			h = e.y - r,
-			u = a * a + h * h;
-		return 0 < u && (1 < (o = ((t.x - s) * a + (t.y - r) * h) / u) ? (s = e.x, r = e.y) : 0 < o && (s += a * o,
-			r += h * o)), a = t.x - s, h = t.y - r, n ? a * a + h * h : new k(s, r)
-	}
-
-	function pe(t) {
-		return !g(t[0]) || "object" != typeof t[0][0] && void 0 !== t[0][0]
-	}
-
-	function me(t) {
-		return console.warn("Deprecated use of _flat, please use L.LineUtil.isFlat instead."), pe(t)
-	}
-	var fe = {
-		simplify: he,
-		pointToSegmentDistance: ue,
-		closestPointOnSegment: function(t, i, e) {
-			return de(t, i, e)
-		},
-		clipSegment: le,
-		_getEdgeIntersection: ce,
-		_getBitCode: _e,
-		_sqClosestPointOnSegment: de,
-		isFlat: pe,
-		_flat: me
-	};
-
-	function ge(t, i, e) {
-		for (var n, o, s, r, a, h, u, l = [1, 4, 2, 8], c = 0, _ = t.length; c < _; c++) t[c]._code = _e(t[c], i);
-		for (s = 0; s < 4; s++) {
-			for (h = l[s], n = [], c = 0, o = (_ = t.length) - 1; c < _; o = c++) r = t[c], a = t[o], r._code & h ?
-				a._code & h || ((u = ce(a, r, h, i, e))._code = _e(u, i), n.push(u)) : (a._code & h && ((u = ce(a,
-					r, h, i, e))._code = _e(u, i), n.push(u)), n.push(r));
-			t = n
-		}
-		return t
-	}
-	var ve, ye = {
-			clipPolygon: ge
-		},
-		xe = {
-			project: function(t) {
-				return new k(t.lng, t.lat)
-			},
-			unproject: function(t) {
-				return new D(t.y, t.x)
-			},
-			bounds: new I([-180, -90], [180, 90])
-		},
-		we = {
-			R: 6378137,
-			R_MINOR: 6356752.314245179,
-			bounds: new I([-20037508.34279, -15496570.73972], [20037508.34279, 18764656.23138]),
-			project: function(t) {
-				var i = Math.PI / 180,
-					e = this.R,
-					n = t.lat * i,
-					o = this.R_MINOR / e,
-					s = Math.sqrt(1 - o * o),
-					r = s * Math.sin(n),
-					a = Math.tan(Math.PI / 4 - n / 2) / Math.pow((1 - r) / (1 + r), s / 2),
-					n = -e * Math.log(Math.max(a, 1e-10));
-				return new k(t.lng * i * e, n)
-			},
-			unproject: function(t) {
-				for (var i, e = 180 / Math.PI, n = this.R, o = this.R_MINOR / n, s = Math.sqrt(1 - o * o), r =
-						Math.exp(-t.y / n), a = Math.PI / 2 - 2 * Math.atan(r), h = 0, u = .1; h < 15 && 1e-7 <
-					Math.abs(u); h++) i = s * Math.sin(a), i = Math.pow((1 - i) / (1 + i), s / 2), a += u = Math
-					.PI / 2 - 2 * Math.atan(r * i) - a;
-				return new D(a * e, t.x * e / n)
-			}
-		},
-		Pe = {
-			LonLat: xe,
-			Mercator: we,
-			SphericalMercator: V
-		},
-		Le = h({}, F, {
-			code: "EPSG:3395",
-			projection: we,
-			transformation: G(ve = .5 / (Math.PI * we.R), .5, -ve, .5)
-		}),
-		be = h({}, F, {
-			code: "EPSG:4326",
-			projection: xe,
-			transformation: G(1 / 180, 1, -1 / 180, .5)
-		}),
-		Te = h({}, H, {
-			projection: xe,
-			transformation: G(1, 0, -1, 0),
-			scale: function(t) {
-				return Math.pow(2, t)
-			},
-			zoom: function(t) {
-				return Math.log(t) / Math.LN2
-			},
-			distance: function(t, i) {
-				var e = i.lng - t.lng,
-					n = i.lat - t.lat;
-				return Math.sqrt(e * e + n * n)
-			},
-			infinite: !0
-		});
-	H.Earth = F, H.EPSG3395 = Le, H.EPSG3857 = Y, H.EPSG900913 = X, H.EPSG4326 = be, H.Simple = Te;
-	var Me = E.extend({
-		options: {
-			pane: "overlayPane",
-			attribution: null,
-			bubblingMouseEvents: !0
-		},
-		addTo: function(t) {
-			return t.addLayer(this), this
-		},
-		remove: function() {
-			return this.removeFrom(this._map || this._mapToAdd)
-		},
-		removeFrom: function(t) {
-			return t && t.removeLayer(this), this
-		},
-		getPane: function(t) {
-			return this._map.getPane(t ? this.options[t] || t : this.options.pane)
-		},
-		addInteractiveTarget: function(t) {
-			return this._map._targets[m(t)] = this
-		},
-		removeInteractiveTarget: function(t) {
-			return delete this._map._targets[m(t)], this
-		},
-		getAttribution: function() {
-			return this.options.attribution
-		},
-		_layerAdd: function(t) {
-			var i, e = t.target;
-			e.hasLayer(this) && (this._map = e, this._zoomAnimated = e._zoomAnimated, this.getEvents &&
-				(i = this.getEvents(), e.on(i, this), this.once("remove", function() {
-					e.off(i, this)
-				}, this)), this.onAdd(e), this.getAttribution && e.attributionControl && e
-				.attributionControl.addAttribution(this.getAttribution()), this.fire("add"), e.fire(
-					"layeradd", {
-						layer: this
-					}))
-		}
-	});
-	Ki.include({
-		addLayer: function(t) {
-			if (!t._layerAdd) throw new Error("The provided object is not a Layer.");
-			var i = m(t);
-			return this._layers[i] || ((this._layers[i] = t)._mapToAdd = this, t.beforeAdd && t
-				.beforeAdd(this), this.whenReady(t._layerAdd, t)), this
-		},
-		removeLayer: function(t) {
-			var i = m(t);
-			return this._layers[i] && (this._loaded && t.onRemove(this), t.getAttribution && this
-				.attributionControl && this.attributionControl.removeAttribution(t
-			.getAttribution()), delete this._layers[i], this._loaded && (this.fire("layerremove", {
-					layer: t
-				}), t.fire("remove")), t._map = t._mapToAdd = null), this
-		},
-		hasLayer: function(t) {
-			return !!t && m(t) in this._layers
-		},
-		eachLayer: function(t, i) {
-			for (var e in this._layers) t.call(i, this._layers[e]);
-			return this
-		},
-		_addLayers: function(t) {
-			for (var i = 0, e = (t = t ? g(t) ? t : [t] : []).length; i < e; i++) this.addLayer(t[i])
-		},
-		_addZoomLimit: function(t) {
-			!isNaN(t.options.maxZoom) && isNaN(t.options.minZoom) || (this._zoomBoundLayers[m(t)] = t,
-				this._updateZoomLevels())
-		},
-		_removeZoomLimit: function(t) {
-			var i = m(t);
-			this._zoomBoundLayers[i] && (delete this._zoomBoundLayers[i], this._updateZoomLevels())
-		},
-		_updateZoomLevels: function() {
-			var t = 1 / 0,
-				i = -1 / 0,
-				e = this._getZoomSpan();
-			for (var n in this._zoomBoundLayers) var o = this._zoomBoundLayers[n].options,
-				t = void 0 === o.minZoom ? t : Math.min(t, o.minZoom),
-				i = void 0 === o.maxZoom ? i : Math.max(i, o.maxZoom);
-			this._layersMaxZoom = i === -1 / 0 ? void 0 : i, this._layersMinZoom = t === 1 / 0 ?
-				void 0 : t, e !== this._getZoomSpan() && this.fire("zoomlevelschange"), void 0 === this
-				.options.maxZoom && this._layersMaxZoom && this.getZoom() > this._layersMaxZoom && this
-				.setZoom(this._layersMaxZoom), void 0 === this.options.minZoom && this._layersMinZoom &&
-				this.getZoom() < this._layersMinZoom && this.setZoom(this._layersMinZoom)
-		}
-	});
-	var ze = Me.extend({
-			initialize: function(t, i) {
-				var e, n;
-				if (c(this, i), this._layers = {}, t)
-					for (e = 0, n = t.length; e < n; e++) this.addLayer(t[e])
-			},
-			addLayer: function(t) {
-				var i = this.getLayerId(t);
-				return this._layers[i] = t, this._map && this._map.addLayer(t), this
-			},
-			removeLayer: function(t) {
-				var i = t in this._layers ? t : this.getLayerId(t);
-				return this._map && this._layers[i] && this._map.removeLayer(this._layers[i]), delete this
-					._layers[i], this
-			},
-			hasLayer: function(t) {
-				return !!t && ("number" == typeof t ? t : this.getLayerId(t)) in this._layers
-			},
-			clearLayers: function() {
-				return this.eachLayer(this.removeLayer, this)
-			},
-			invoke: function(t) {
-				var i, e, n = Array.prototype.slice.call(arguments, 1);
-				for (i in this._layers)(e = this._layers[i])[t] && e[t].apply(e, n);
-				return this
-			},
-			onAdd: function(t) {
-				this.eachLayer(t.addLayer, t)
-			},
-			onRemove: function(t) {
-				this.eachLayer(t.removeLayer, t)
-			},
-			eachLayer: function(t, i) {
-				for (var e in this._layers) t.call(i, this._layers[e]);
-				return this
-			},
-			getLayer: function(t) {
-				return this._layers[t]
-			},
-			getLayers: function() {
-				var t = [];
-				return this.eachLayer(t.push, t), t
-			},
-			setZIndex: function(t) {
-				return this.invoke("setZIndex", t)
-			},
-			getLayerId: m
-		}),
-		Ce = ze.extend({
-			addLayer: function(t) {
-				return this.hasLayer(t) ? this : (t.addEventParent(this), ze.prototype.addLayer.call(this,
-					t), this.fire("layeradd", {
-					layer: t
-				}))
-			},
-			removeLayer: function(t) {
-				return this.hasLayer(t) ? (t in this._layers && (t = this._layers[t]), t.removeEventParent(
-					this), ze.prototype.removeLayer.call(this, t), this.fire("layerremove", {
-					layer: t
-				})) : this
-			},
-			setStyle: function(t) {
-				return this.invoke("setStyle", t)
-			},
-			bringToFront: function() {
-				return this.invoke("bringToFront")
-			},
-			bringToBack: function() {
-				return this.invoke("bringToBack")
-			},
-			getBounds: function() {
-				var t = new R;
-				for (var i in this._layers) {
-					var e = this._layers[i];
-					t.extend(e.getBounds ? e.getBounds() : e.getLatLng())
-				}
-				return t
-			}
-		}),
-		Se = S.extend({
-			options: {
-				popupAnchor: [0, 0],
-				tooltipAnchor: [0, 0]
-			},
-			initialize: function(t) {
-				c(this, t)
-			},
-			createIcon: function(t) {
-				return this._createIcon("icon", t)
-			},
-			createShadow: function(t) {
-				return this._createIcon("shadow", t)
-			},
-			_createIcon: function(t, i) {
-				var e = this._getIconUrl(t);
-				if (!e) {
-					if ("icon" === t) throw new Error("iconUrl not set in Icon options (see the docs).");
-					return null
-				}
-				var n = this._createImg(e, i && "IMG" === i.tagName ? i : null);
-				return this._setIconStyles(n, t), n
-			},
-			_setIconStyles: function(t, i) {
-				var e = this.options,
-					n = e[i + "Size"];
-				"number" == typeof n && (n = [n, n]);
-				var o = A(n),
-					s = A("shadow" === i && e.shadowAnchor || e.iconAnchor || o && o.divideBy(2, !0));
-				t.className = "leaflet-marker-" + i + " " + (e.className || ""), s && (t.style
-					.marginLeft = -s.x + "px", t.style.marginTop = -s.y + "px"), o && (t.style.width = o
-					.x + "px", t.style.height = o.y + "px")
-			},
-			_createImg: function(t, i) {
-				return (i = i || document.createElement("img")).src = t, i
-			},
-			_getIconUrl: function(t) {
-				return zt && this.options[t + "RetinaUrl"] || this.options[t + "Url"]
-			}
-		});
-	var Ze = Se.extend({
-			options: {
-				iconUrl: "marker-icon.png",
-				iconRetinaUrl: "marker-icon-2x.png",
-				shadowUrl: "marker-shadow.png",
-				iconSize: [25, 41],
-				iconAnchor: [12, 41],
-				popupAnchor: [1, -34],
-				tooltipAnchor: [16, -28],
-				shadowSize: [41, 41]
-			},
-			_getIconUrl: function(t) {
-				return Ze.imagePath || (Ze.imagePath = this._detectIconPath()), (this.options.imagePath ||
-					Ze.imagePath) + Se.prototype._getIconUrl.call(this, t)
-			},
-			_detectIconPath: function() {
-				var t = si("div", "leaflet-default-icon-path", document.body),
-					i = oi(t, "background-image") || oi(t, "backgroundImage");
-				return document.body.removeChild(t), i = null === i || 0 !== i.indexOf("url") ? "" : i
-					.replace(/^url\(["']?/, "").replace(/marker-icon\.png["']?\)$/, "")
-			}
-		}),
-		Ee = ie.extend({
-			initialize: function(t) {
-				this._marker = t
-			},
-			addHooks: function() {
-				var t = this._marker._icon;
-				this._draggable || (this._draggable = new ae(t, t, !0)), this._draggable.on({
-					dragstart: this._onDragStart,
-					predrag: this._onPreDrag,
-					drag: this._onDrag,
-					dragend: this._onDragEnd
-				}, this).enable(), ci(t, "leaflet-marker-draggable")
-			},
-			removeHooks: function() {
-				this._draggable.off({
-					dragstart: this._onDragStart,
-					predrag: this._onPreDrag,
-					drag: this._onDrag,
-					dragend: this._onDragEnd
-				}, this).disable(), this._marker._icon && _i(this._marker._icon,
-					"leaflet-marker-draggable")
-			},
-			moved: function() {
-				return this._draggable && this._draggable._moved
-			},
-			_adjustPan: function(t) {
-				var i, e = this._marker,
-					n = e._map,
-					o = this._marker.options.autoPanSpeed,
-					s = this._marker.options.autoPanPadding,
-					r = yi(e._icon),
-					a = n.getPixelBounds(),
-					h = n.getPixelOrigin(),
-					u = O(a.min._subtract(h).add(s), a.max._subtract(h).subtract(s));
-				u.contains(r) || (i = A((Math.max(u.max.x, r.x) - u.max.x) / (a.max.x - u.max.x) - (Math
-						.min(u.min.x, r.x) - u.min.x) / (a.min.x - u.min.x), (Math.max(u.max.y, r
-						.y) - u.max.y) / (a.max.y - u.max.y) - (Math.min(u.min.y, r.y) - u.min.y) /
-					(a.min.y - u.min.y)).multiplyBy(o), n.panBy(i, {
-					animate: !1
-				}), this._draggable._newPos._add(i), this._draggable._startPos._add(i), vi(e._icon,
-					this._draggable._newPos), this._onDrag(t), this._panRequest = M(this._adjustPan
-					.bind(this, t)))
-			},
-			_onDragStart: function() {
-				this._oldLatLng = this._marker.getLatLng(), this._marker.closePopup && this._marker
-					.closePopup(), this._marker.fire("movestart").fire("dragstart")
-			},
-			_onPreDrag: function(t) {
-				this._marker.options.autoPan && (z(this._panRequest), this._panRequest = M(this._adjustPan
-					.bind(this, t)))
-			},
-			_onDrag: function(t) {
-				var i = this._marker,
-					e = i._shadow,
-					n = yi(i._icon),
-					o = i._map.layerPointToLatLng(n);
-				e && vi(e, n), i._latlng = o, t.latlng = o, t.oldLatLng = this._oldLatLng, i.fire("move", t)
-					.fire("drag", t)
-			},
-			_onDragEnd: function(t) {
-				z(this._panRequest), delete this._oldLatLng, this._marker.fire("moveend").fire("dragend", t)
-			}
-		}),
-		ke = Me.extend({
-			options: {
-				icon: new Ze,
-				interactive: !0,
-				keyboard: !0,
-				title: "",
-				alt: "",
-				zIndexOffset: 0,
-				opacity: 1,
-				riseOnHover: !1,
-				riseOffset: 250,
-				pane: "markerPane",
-				shadowPane: "shadowPane",
-				bubblingMouseEvents: !1,
-				draggable: !1,
-				autoPan: !1,
-				autoPanPadding: [50, 50],
-				autoPanSpeed: 10
-			},
-			initialize: function(t, i) {
-				c(this, i), this._latlng = j(t)
-			},
-			onAdd: function(t) {
-				this._zoomAnimated = this._zoomAnimated && t.options.markerZoomAnimation, this
-					._zoomAnimated && t.on("zoomanim", this._animateZoom, this), this._initIcon(), this
-					.update()
-			},
-			onRemove: function(t) {
-				this.dragging && this.dragging.enabled() && (this.options.draggable = !0, this.dragging
-					.removeHooks()), delete this.dragging, this._zoomAnimated && t.off("zoomanim", this
-					._animateZoom, this), this._removeIcon(), this._removeShadow()
-			},
-			getEvents: function() {
-				return {
-					zoom: this.update,
-					viewreset: this.update
-				}
-			},
-			getLatLng: function() {
-				return this._latlng
-			},
-			setLatLng: function(t) {
-				var i = this._latlng;
-				return this._latlng = j(t), this.update(), this.fire("move", {
-					oldLatLng: i,
-					latlng: this._latlng
-				})
-			},
-			setZIndexOffset: function(t) {
-				return this.options.zIndexOffset = t, this.update()
-			},
-			getIcon: function() {
-				return this.options.icon
-			},
-			setIcon: function(t) {
-				return this.options.icon = t, this._map && (this._initIcon(), this.update()), this._popup &&
-					this.bindPopup(this._popup, this._popup.options), this
-			},
-			getElement: function() {
-				return this._icon
-			},
-			update: function() {
-				var t;
-				return this._icon && this._map && (t = this._map.latLngToLayerPoint(this._latlng).round(),
-					this._setPos(t)), this
-			},
-			_initIcon: function() {
-				var t = this.options,
-					i = "leaflet-zoom-" + (this._zoomAnimated ? "animated" : "hide"),
-					e = t.icon.createIcon(this._icon),
-					n = !1;
-				e !== this._icon && (this._icon && this._removeIcon(), n = !0, t.title && (e.title = t
-					.title), "IMG" === e.tagName && (e.alt = t.alt || "")), ci(e, i), t.keyboard && (e
-					.tabIndex = "0"), this._icon = e, t.riseOnHover && this.on({
-					mouseover: this._bringToFront,
-					mouseout: this._resetZIndex
-				});
-				var o = t.icon.createShadow(this._shadow),
-					s = !1;
-				o !== this._shadow && (this._removeShadow(), s = !0), o && (ci(o, i), o.alt = ""), this
-					._shadow = o, t.opacity < 1 && this._updateOpacity(), n && this.getPane().appendChild(
-						this._icon), this._initInteraction(), o && s && this.getPane(t.shadowPane)
-					.appendChild(this._shadow)
-			},
-			_removeIcon: function() {
-				this.options.riseOnHover && this.off({
-					mouseover: this._bringToFront,
-					mouseout: this._resetZIndex
-				}), ri(this._icon), this.removeInteractiveTarget(this._icon), this._icon = null
-			},
-			_removeShadow: function() {
-				this._shadow && ri(this._shadow), this._shadow = null
-			},
-			_setPos: function(t) {
-				this._icon && vi(this._icon, t), this._shadow && vi(this._shadow, t), this._zIndex = t.y +
-					this.options.zIndexOffset, this._resetZIndex()
-			},
-			_updateZIndex: function(t) {
-				this._icon && (this._icon.style.zIndex = this._zIndex + t)
-			},
-			_animateZoom: function(t) {
-				var i = this._map._latLngToNewLayerPoint(this._latlng, t.zoom, t.center).round();
-				this._setPos(i)
-			},
-			_initInteraction: function() {
-				var t;
-				this.options.interactive && (ci(this._icon, "leaflet-interactive"), this
-					.addInteractiveTarget(this._icon), Ee && (t = this.options.draggable, this
-						.dragging && (t = this.dragging.enabled(), this.dragging.disable()), this
-						.dragging = new Ee(this), t && this.dragging.enable()))
-			},
-			setOpacity: function(t) {
-				return this.options.opacity = t, this._map && this._updateOpacity(), this
-			},
-			_updateOpacity: function() {
-				var t = this.options.opacity;
-				this._icon && mi(this._icon, t), this._shadow && mi(this._shadow, t)
-			},
-			_bringToFront: function() {
-				this._updateZIndex(this.options.riseOffset)
-			},
-			_resetZIndex: function() {
-				this._updateZIndex(0)
-			},
-			_getPopupAnchor: function() {
-				return this.options.icon.options.popupAnchor
-			},
-			_getTooltipAnchor: function() {
-				return this.options.icon.options.tooltipAnchor
-			}
-		});
-	var Be = Me.extend({
-			options: {
-				stroke: !0,
-				color: "#3388ff",
-				weight: 3,
-				opacity: 1,
-				lineCap: "round",
-				lineJoin: "round",
-				dashArray: null,
-				dashOffset: null,
-				fill: !1,
-				fillColor: null,
-				fillOpacity: .2,
-				fillRule: "evenodd",
-				interactive: !0,
-				bubblingMouseEvents: !0
-			},
-			beforeAdd: function(t) {
-				this._renderer = t.getRenderer(this)
-			},
-			onAdd: function() {
-				this._renderer._initPath(this), this._reset(), this._renderer._addPath(this)
-			},
-			onRemove: function() {
-				this._renderer._removePath(this)
-			},
-			redraw: function() {
-				return this._map && this._renderer._updatePath(this), this
-			},
-			setStyle: function(t) {
-				return c(this, t), this._renderer && (this._renderer._updateStyle(this), this.options
-					.stroke && t && Object.prototype.hasOwnProperty.call(t, "weight") && this
-					._updateBounds()), this
-			},
-			bringToFront: function() {
-				return this._renderer && this._renderer._bringToFront(this), this
-			},
-			bringToBack: function() {
-				return this._renderer && this._renderer._bringToBack(this), this
-			},
-			getElement: function() {
-				return this._path
-			},
-			_reset: function() {
-				this._project(), this._update()
-			},
-			_clickTolerance: function() {
-				return (this.options.stroke ? this.options.weight / 2 : 0) + this._renderer.options
-					.tolerance
-			}
-		}),
-		Ae = Be.extend({
-			options: {
-				fill: !0,
-				radius: 10
-			},
-			initialize: function(t, i) {
-				c(this, i), this._latlng = j(t), this._radius = this.options.radius
-			},
-			setLatLng: function(t) {
-				var i = this._latlng;
-				return this._latlng = j(t), this.redraw(), this.fire("move", {
-					oldLatLng: i,
-					latlng: this._latlng
-				})
-			},
-			getLatLng: function() {
-				return this._latlng
-			},
-			setRadius: function(t) {
-				return this.options.radius = this._radius = t, this.redraw()
-			},
-			getRadius: function() {
-				return this._radius
-			},
-			setStyle: function(t) {
-				var i = t && t.radius || this._radius;
-				return Be.prototype.setStyle.call(this, t), this.setRadius(i), this
-			},
-			_project: function() {
-				this._point = this._map.latLngToLayerPoint(this._latlng), this._updateBounds()
-			},
-			_updateBounds: function() {
-				var t = this._radius,
-					i = this._radiusY || t,
-					e = this._clickTolerance(),
-					n = [t + e, i + e];
-				this._pxBounds = new I(this._point.subtract(n), this._point.add(n))
-			},
-			_update: function() {
-				this._map && this._updatePath()
-			},
-			_updatePath: function() {
-				this._renderer._updateCircle(this)
-			},
-			_empty: function() {
-				return this._radius && !this._renderer._bounds.intersects(this._pxBounds)
-			},
-			_containsPoint: function(t) {
-				return t.distanceTo(this._point) <= this._radius + this._clickTolerance()
-			}
-		});
-	var Ie = Ae.extend({
-		initialize: function(t, i, e) {
-			if ("number" == typeof i && (i = h({}, e, {
-					radius: i
-				})), c(this, i), this._latlng = j(t), isNaN(this.options.radius)) throw new Error(
-				"Circle radius cannot be NaN");
-			this._mRadius = this.options.radius
-		},
-		setRadius: function(t) {
-			return this._mRadius = t, this.redraw()
-		},
-		getRadius: function() {
-			return this._mRadius
-		},
-		getBounds: function() {
-			var t = [this._radius, this._radiusY || this._radius];
-			return new R(this._map.layerPointToLatLng(this._point.subtract(t)), this._map
-				.layerPointToLatLng(this._point.add(t)))
-		},
-		setStyle: Be.prototype.setStyle,
-		_project: function() {
-			var t, i, e, n, o, s, r, a, h = this._latlng.lng,
-				u = this._latlng.lat,
-				l = this._map,
-				c = l.options.crs;
-			c.distance === F.distance ? (t = Math.PI / 180, i = this._mRadius / F.R / t, e = l.project([
-					u + i, h
-				]), n = l.project([u - i, h]), o = e.add(n).divideBy(2), s = l.unproject(o).lat, r =
-				Math.acos((Math.cos(i * t) - Math.sin(u * t) * Math.sin(s * t)) / (Math.cos(u * t) *
-					Math.cos(s * t))) / t, !isNaN(r) && 0 !== r || (r = i / Math.cos(Math.PI / 180 *
-					u)), this._point = o.subtract(l.getPixelOrigin()), this._radius = isNaN(r) ? 0 :
-				o.x - l.project([s, h - r]).x, this._radiusY = o.y - e.y) : (a = c.unproject(c
-					.project(this._latlng).subtract([this._mRadius, 0])), this._point = l
-				.latLngToLayerPoint(this._latlng), this._radius = this._point.x - l
-				.latLngToLayerPoint(a).x), this._updateBounds()
-		}
-	});
-	var Oe = Be.extend({
-		options: {
-			smoothFactor: 1,
-			noClip: !1
-		},
-		initialize: function(t, i) {
-			c(this, i), this._setLatLngs(t)
-		},
-		getLatLngs: function() {
-			return this._latlngs
-		},
-		setLatLngs: function(t) {
-			return this._setLatLngs(t), this.redraw()
-		},
-		isEmpty: function() {
-			return !this._latlngs.length
-		},
-		closestLayerPoint: function(t) {
-			for (var i, e, n = 1 / 0, o = null, s = de, r = 0, a = this._parts.length; r < a; r++)
-				for (var h = this._parts[r], u = 1, l = h.length; u < l; u++) {
-					var c = s(t, i = h[u - 1], e = h[u], !0);
-					c < n && (n = c, o = s(t, i, e))
-				}
-			return o && (o.distance = Math.sqrt(n)), o
-		},
-		getCenter: function() {
-			if (!this._map) throw new Error("Must add layer to map before using getCenter()");
-			var t, i, e, n, o, s, r, a = this._rings[0],
-				h = a.length;
-			if (!h) return null;
-			for (i = t = 0; t < h - 1; t++) i += a[t].distanceTo(a[t + 1]) / 2;
-			if (0 === i) return this._map.layerPointToLatLng(a[0]);
-			for (n = t = 0; t < h - 1; t++)
-				if (o = a[t], s = a[t + 1], i < (n += e = o.distanceTo(s))) return r = (n - i) / e, this
-					._map.layerPointToLatLng([s.x - r * (s.x - o.x), s.y - r * (s.y - o.y)])
-		},
-		getBounds: function() {
-			return this._bounds
-		},
-		addLatLng: function(t, i) {
-			return i = i || this._defaultShape(), t = j(t), i.push(t), this._bounds.extend(t), this
-				.redraw()
-		},
-		_setLatLngs: function(t) {
-			this._bounds = new R, this._latlngs = this._convertLatLngs(t)
-		},
-		_defaultShape: function() {
-			return pe(this._latlngs) ? this._latlngs : this._latlngs[0]
-		},
-		_convertLatLngs: function(t) {
-			for (var i = [], e = pe(t), n = 0, o = t.length; n < o; n++) e ? (i[n] = j(t[n]), this
-				._bounds.extend(i[n])) : i[n] = this._convertLatLngs(t[n]);
-			return i
-		},
-		_project: function() {
-			var t = new I;
-			this._rings = [], this._projectLatlngs(this._latlngs, this._rings, t), this._bounds
-			.isValid() && t.isValid() && (this._rawPxBounds = t, this._updateBounds())
-		},
-		_updateBounds: function() {
-			var t = this._clickTolerance(),
-				i = new k(t, t);
-			this._pxBounds = new I([this._rawPxBounds.min.subtract(i), this._rawPxBounds.max.add(i)])
-		},
-		_projectLatlngs: function(t, i, e) {
-			var n, o, s = t[0] instanceof D,
-				r = t.length;
-			if (s) {
-				for (o = [], n = 0; n < r; n++) o[n] = this._map.latLngToLayerPoint(t[n]), e.extend(o[
-					n]);
-				i.push(o)
-			} else
-				for (n = 0; n < r; n++) this._projectLatlngs(t[n], i, e)
-		},
-		_clipPoints: function() {
-			var t = this._renderer._bounds;
-			if (this._parts = [], this._pxBounds && this._pxBounds.intersects(t))
-				if (this.options.noClip) this._parts = this._rings;
-				else
-					for (var i, e, n, o, s = this._parts, r = 0, a = 0, h = this._rings.length; r <
-						h; r++)
-						for (i = 0, e = (o = this._rings[r]).length; i < e - 1; i++)(n = le(o[i], o[i +
-							1], t, i, !0)) && (s[a] = s[a] || [], s[a].push(n[0]), n[1] === o[i +
-							1] && i !== e - 2 || (s[a].push(n[1]), a++))
-		},
-		_simplifyPoints: function() {
-			for (var t = this._parts, i = this.options.smoothFactor, e = 0, n = t.length; e < n; e++) t[
-				e] = he(t[e], i)
-		},
-		_update: function() {
-			this._map && (this._clipPoints(), this._simplifyPoints(), this._updatePath())
-		},
-		_updatePath: function() {
-			this._renderer._updatePoly(this)
-		},
-		_containsPoint: function(t, i) {
-			var e, n, o, s, r, a, h = this._clickTolerance();
-			if (!this._pxBounds || !this._pxBounds.contains(t)) return !1;
-			for (e = 0, s = this._parts.length; e < s; e++)
-				for (n = 0, o = (r = (a = this._parts[e]).length) - 1; n < r; o = n++)
-					if ((i || 0 !== n) && ue(t, a[o], a[n]) <= h) return !0;
-			return !1
-		}
-	});
-	Oe._flat = me;
-	var Re = Oe.extend({
-		options: {
-			fill: !0
-		},
-		isEmpty: function() {
-			return !this._latlngs.length || !this._latlngs[0].length
-		},
-		getCenter: function() {
-			if (!this._map) throw new Error("Must add layer to map before using getCenter()");
-			var t, i, e, n, o, s, r, a, h, u = this._rings[0],
-				l = u.length;
-			if (!l) return null;
-			for (t = s = r = a = 0, i = l - 1; t < l; i = t++) e = u[t], n = u[i], o = e.y * n.x - n.y *
-				e.x, r += (e.x + n.x) * o, a += (e.y + n.y) * o, s += 3 * o;
-			return h = 0 === s ? u[0] : [r / s, a / s], this._map.layerPointToLatLng(h)
-		},
-		_convertLatLngs: function(t) {
-			var i = Oe.prototype._convertLatLngs.call(this, t),
-				e = i.length;
-			return 2 <= e && i[0] instanceof D && i[0].equals(i[e - 1]) && i.pop(), i
-		},
-		_setLatLngs: function(t) {
-			Oe.prototype._setLatLngs.call(this, t), pe(this._latlngs) && (this._latlngs = [this
-				._latlngs])
-		},
-		_defaultShape: function() {
-			return pe(this._latlngs[0]) ? this._latlngs[0] : this._latlngs[0][0]
-		},
-		_clipPoints: function() {
-			var t = this._renderer._bounds,
-				i = this.options.weight,
-				e = new k(i, i),
-				t = new I(t.min.subtract(e), t.max.add(e));
-			if (this._parts = [], this._pxBounds && this._pxBounds.intersects(t))
-				if (this.options.noClip) this._parts = this._rings;
-				else
-					for (var n, o = 0, s = this._rings.length; o < s; o++)(n = ge(this._rings[o], t, !
-						0)).length && this._parts.push(n)
-		},
-		_updatePath: function() {
-			this._renderer._updatePoly(this, !0)
-		},
-		_containsPoint: function(t) {
-			var i, e, n, o, s, r, a, h, u = !1;
-			if (!this._pxBounds || !this._pxBounds.contains(t)) return !1;
-			for (o = 0, a = this._parts.length; o < a; o++)
-				for (s = 0, r = (h = (i = this._parts[o]).length) - 1; s < h; r = s++) e = i[s], n = i[
-						r], e.y > t.y != n.y > t.y && t.x < (n.x - e.x) * (t.y - e.y) / (n.y - e.y) + e
-					.x && (u = !u);
-			return u || Oe.prototype._containsPoint.call(this, t, !0)
-		}
-	});
-	var Ne = Ce.extend({
-		initialize: function(t, i) {
-			c(this, i), this._layers = {}, t && this.addData(t)
-		},
-		addData: function(t) {
-			var i, e, n, o = g(t) ? t : t.features;
-			if (o) {
-				for (i = 0, e = o.length; i < e; i++)((n = o[i]).geometries || n.geometry || n
-					.features || n.coordinates) && this.addData(n);
-				return this
-			}
-			var s = this.options;
-			if (s.filter && !s.filter(t)) return this;
-			var r = De(t, s);
-			return r ? (r.feature = qe(t), r.defaultOptions = r.options, this.resetStyle(r), s
-				.onEachFeature && s.onEachFeature(t, r), this.addLayer(r)) : this
-		},
-		resetStyle: function(t) {
-			return void 0 === t ? this.eachLayer(this.resetStyle, this) : (t.options = h({}, t
-				.defaultOptions), this._setLayerStyle(t, this.options.style), this)
-		},
-		setStyle: function(i) {
-			return this.eachLayer(function(t) {
-				this._setLayerStyle(t, i)
-			}, this)
-		},
-		_setLayerStyle: function(t, i) {
-			t.setStyle && ("function" == typeof i && (i = i(t.feature)), t.setStyle(i))
-		}
-	});
-
-	function De(t, i) {
-		var e, n, o, s, r = "Feature" === t.type ? t.geometry : t,
-			a = r ? r.coordinates : null,
-			h = [],
-			u = i && i.pointToLayer,
-			l = i && i.coordsToLatLng || We;
-		if (!a && !r) return null;
-		switch (r.type) {
-			case "Point":
-				return je(u, t, e = l(a), i);
-			case "MultiPoint":
-				for (o = 0, s = a.length; o < s; o++) e = l(a[o]), h.push(je(u, t, e, i));
-				return new Ce(h);
-			case "LineString":
-			case "MultiLineString":
-				return n = He(a, "LineString" === r.type ? 0 : 1, l), new Oe(n, i);
-			case "Polygon":
-			case "MultiPolygon":
-				return n = He(a, "Polygon" === r.type ? 1 : 2, l), new Re(n, i);
-			case "GeometryCollection":
-				for (o = 0, s = r.geometries.length; o < s; o++) {
-					var c = De({
-						geometry: r.geometries[o],
-						type: "Feature",
-						properties: t.properties
-					}, i);
-					c && h.push(c)
-				}
-				return new Ce(h);
-			default:
-				throw new Error("Invalid GeoJSON object.")
-		}
-	}
-
-	function je(t, i, e, n) {
-		return t ? t(i, e) : new ke(e, n && n.markersInheritOptions && n)
-	}
-
-	function We(t) {
-		return new D(t[1], t[0], t[2])
-	}
-
-	function He(t, i, e) {
-		for (var n, o = [], s = 0, r = t.length; s < r; s++) n = i ? He(t[s], i - 1, e) : (e || We)(t[s]), o.push(
-		n);
-		return o
-	}
-
-	function Fe(t, i) {
-		return i = "number" == typeof i ? i : 6, void 0 !== t.alt ? [r(t.lng, i), r(t.lat, i), r(t.alt, i)] : [r(t
-			.lng, i), r(t.lat, i)]
-	}
-
-	function Ue(t, i, e, n) {
-		for (var o = [], s = 0, r = t.length; s < r; s++) o.push(i ? Ue(t[s], i - 1, e, n) : Fe(t[s], n));
-		return !i && e && o.push(o[0]), o
-	}
-
-	function Ve(t, i) {
-		return t.feature ? h({}, t.feature, {
-			geometry: i
-		}) : qe(i)
-	}
-
-	function qe(t) {
-		return "Feature" === t.type || "FeatureCollection" === t.type ? t : {
-			type: "Feature",
-			properties: {},
-			geometry: t
-		}
-	}
-	var Ge = {
-		toGeoJSON: function(t) {
-			return Ve(this, {
-				type: "Point",
-				coordinates: Fe(this.getLatLng(), t)
-			})
-		}
-	};
-
-	function Ke(t, i) {
-		return new Ne(t, i)
-	}
-	ke.include(Ge), Ie.include(Ge), Ae.include(Ge), Oe.include({
-		toGeoJSON: function(t) {
-			var i = !pe(this._latlngs);
-			return Ve(this, {
-				type: (i ? "Multi" : "") + "LineString",
-				coordinates: Ue(this._latlngs, i ? 1 : 0, !1, t)
-			})
-		}
-	}), Re.include({
-		toGeoJSON: function(t) {
-			var i = !pe(this._latlngs),
-				e = i && !pe(this._latlngs[0]),
-				n = Ue(this._latlngs, e ? 2 : i ? 1 : 0, !0, t);
-			return i || (n = [n]), Ve(this, {
-				type: (e ? "Multi" : "") + "Polygon",
-				coordinates: n
-			})
-		}
-	}), ze.include({
-		toMultiPoint: function(i) {
-			var e = [];
-			return this.eachLayer(function(t) {
-				e.push(t.toGeoJSON(i).geometry.coordinates)
-			}), Ve(this, {
-				type: "MultiPoint",
-				coordinates: e
-			})
-		},
-		toGeoJSON: function(n) {
-			var t = this.feature && this.feature.geometry && this.feature.geometry.type;
-			if ("MultiPoint" === t) return this.toMultiPoint(n);
-			var o = "GeometryCollection" === t,
-				s = [];
-			return this.eachLayer(function(t) {
-				var i, e;
-				t.toGeoJSON && (i = t.toGeoJSON(n), o ? s.push(i.geometry) :
-					"FeatureCollection" === (e = qe(i)).type ? s.push.apply(s, e.features) :
-					s.push(e))
-			}), o ? Ve(this, {
-				geometries: s,
-				type: "GeometryCollection"
-			}) : {
-				type: "FeatureCollection",
-				features: s
-			}
-		}
-	});
-	var Ye = Ke,
-		Xe = Me.extend({
-			options: {
-				opacity: 1,
-				alt: "",
-				interactive: !1,
-				crossOrigin: !1,
-				errorOverlayUrl: "",
-				zIndex: 1,
-				className: ""
-			},
-			initialize: function(t, i, e) {
-				this._url = t, this._bounds = N(i), c(this, e)
-			},
-			onAdd: function() {
-				this._image || (this._initImage(), this.options.opacity < 1 && this._updateOpacity()), this
-					.options.interactive && (ci(this._image, "leaflet-interactive"), this
-						.addInteractiveTarget(this._image)), this.getPane().appendChild(this._image), this
-					._reset()
-			},
-			onRemove: function() {
-				ri(this._image), this.options.interactive && this.removeInteractiveTarget(this._image)
-			},
-			setOpacity: function(t) {
-				return this.options.opacity = t, this._image && this._updateOpacity(), this
-			},
-			setStyle: function(t) {
-				return t.opacity && this.setOpacity(t.opacity), this
-			},
-			bringToFront: function() {
-				return this._map && hi(this._image), this
-			},
-			bringToBack: function() {
-				return this._map && ui(this._image), this
-			},
-			setUrl: function(t) {
-				return this._url = t, this._image && (this._image.src = t), this
-			},
-			setBounds: function(t) {
-				return this._bounds = N(t), this._map && this._reset(), this
-			},
-			getEvents: function() {
-				var t = {
-					zoom: this._reset,
-					viewreset: this._reset
-				};
-				return this._zoomAnimated && (t.zoomanim = this._animateZoom), t
-			},
-			setZIndex: function(t) {
-				return this.options.zIndex = t, this._updateZIndex(), this
-			},
-			getBounds: function() {
-				return this._bounds
-			},
-			getElement: function() {
-				return this._image
-			},
-			_initImage: function() {
-				var t = "IMG" === this._url.tagName,
-					i = this._image = t ? this._url : si("img");
-				ci(i, "leaflet-image-layer"), this._zoomAnimated && ci(i, "leaflet-zoom-animated"), this
-					.options.className && ci(i, this.options.className), i.onselectstart = a, i
-					.onmousemove = a, i.onload = p(this.fire, this, "load"), i.onerror = p(this
-						._overlayOnError, this, "error"), !this.options.crossOrigin && "" !== this.options
-					.crossOrigin || (i.crossOrigin = !0 === this.options.crossOrigin ? "" : this.options
-						.crossOrigin), this.options.zIndex && this._updateZIndex(), t ? this._url = i.src :
-					(i.src = this._url, i.alt = this.options.alt)
-			},
-			_animateZoom: function(t) {
-				var i = this._map.getZoomScale(t.zoom),
-					e = this._map._latLngBoundsToNewLayerBounds(this._bounds, t.zoom, t.center).min;
-				gi(this._image, e, i)
-			},
-			_reset: function() {
-				var t = this._image,
-					i = new I(this._map.latLngToLayerPoint(this._bounds.getNorthWest()), this._map
-						.latLngToLayerPoint(this._bounds.getSouthEast())),
-					e = i.getSize();
-				vi(t, i.min), t.style.width = e.x + "px", t.style.height = e.y + "px"
-			},
-			_updateOpacity: function() {
-				mi(this._image, this.options.opacity)
-			},
-			_updateZIndex: function() {
-				this._image && void 0 !== this.options.zIndex && null !== this.options.zIndex && (this
-					._image.style.zIndex = this.options.zIndex)
-			},
-			_overlayOnError: function() {
-				this.fire("error");
-				var t = this.options.errorOverlayUrl;
-				t && this._url !== t && (this._url = t, this._image.src = t)
-			}
-		}),
-		Je = Xe.extend({
-			options: {
-				autoplay: !0,
-				loop: !0,
-				keepAspectRatio: !0,
-				muted: !1
-			},
-			_initImage: function() {
-				var t = "VIDEO" === this._url.tagName,
-					i = this._image = t ? this._url : si("video");
-				if (ci(i, "leaflet-image-layer"), this._zoomAnimated && ci(i, "leaflet-zoom-animated"), this
-					.options.className && ci(i, this.options.className), i.onselectstart = a, i
-					.onmousemove = a, i.onloadeddata = p(this.fire, this, "load"), t) {
-					for (var e = i.getElementsByTagName("source"), n = [], o = 0; o < e.length; o++) n.push(
-						e[o].src);
-					this._url = 0 < e.length ? n : [i.src]
-				} else {
-					g(this._url) || (this._url = [this._url]), !this.options.keepAspectRatio && Object
-						.prototype.hasOwnProperty.call(i.style, "objectFit") && (i.style.objectFit =
-						"fill"), i.autoplay = !!this.options.autoplay, i.loop = !!this.options.loop, i
-						.muted = !!this.options.muted;
-					for (var s = 0; s < this._url.length; s++) {
-						var r = si("source");
-						r.src = this._url[s], i.appendChild(r)
-					}
-				}
-			}
-		});
-	var $e = Xe.extend({
-		_initImage: function() {
-			var t = this._image = this._url;
-			ci(t, "leaflet-image-layer"), this._zoomAnimated && ci(t, "leaflet-zoom-animated"), this
-				.options.className && ci(t, this.options.className), t.onselectstart = a, t
-				.onmousemove = a
-		}
-	});
-	var Qe = Me.extend({
-			options: {
-				offset: [0, 7],
-				className: "",
-				pane: "popupPane"
-			},
-			initialize: function(t, i) {
-				c(this, t), this._source = i
-			},
-			onAdd: function(t) {
-				this._zoomAnimated = t._zoomAnimated, this._container || this._initLayout(), t
-					._fadeAnimated && mi(this._container, 0), clearTimeout(this._removeTimeout), this
-					.getPane().appendChild(this._container), this.update(), t._fadeAnimated && mi(this
-						._container, 1), this.bringToFront()
-			},
-			onRemove: function(t) {
-				t._fadeAnimated ? (mi(this._container, 0), this._removeTimeout = setTimeout(p(ri, void 0,
-					this._container), 200)) : ri(this._container)
-			},
-			getLatLng: function() {
-				return this._latlng
-			},
-			setLatLng: function(t) {
-				return this._latlng = j(t), this._map && (this._updatePosition(), this._adjustPan()), this
-			},
-			getContent: function() {
-				return this._content
-			},
-			setContent: function(t) {
-				return this._content = t, this.update(), this
-			},
-			getElement: function() {
-				return this._container
-			},
-			update: function() {
-				this._map && (this._container.style.visibility = "hidden", this._updateContent(), this
-					._updateLayout(), this._updatePosition(), this._container.style.visibility = "",
-					this._adjustPan())
-			},
-			getEvents: function() {
-				var t = {
-					zoom: this._updatePosition,
-					viewreset: this._updatePosition
-				};
-				return this._zoomAnimated && (t.zoomanim = this._animateZoom), t
-			},
-			isOpen: function() {
-				return !!this._map && this._map.hasLayer(this)
-			},
-			bringToFront: function() {
-				return this._map && hi(this._container), this
-			},
-			bringToBack: function() {
-				return this._map && ui(this._container), this
-			},
-			_prepareOpen: function(t, i, e) {
-				if (i instanceof Me || (e = i, i = t), i instanceof Ce)
-					for (var n in t._layers) {
-						i = t._layers[n];
-						break
-					}
-				if (!e)
-					if (i.getCenter) e = i.getCenter();
-					else {
-						if (!i.getLatLng) throw new Error("Unable to get source layer LatLng.");
-						e = i.getLatLng()
-					} return this._source = i, this.update(), e
-			},
-			_updateContent: function() {
-				if (this._content) {
-					var t = this._contentNode,
-						i = "function" == typeof this._content ? this._content(this._source || this) : this
-						._content;
-					if ("string" == typeof i) t.innerHTML = i;
-					else {
-						for (; t.hasChildNodes();) t.removeChild(t.firstChild);
-						t.appendChild(i)
-					}
-					this.fire("contentupdate")
-				}
-			},
-			_updatePosition: function() {
-				var t, i, e, n, o;
-				this._map && (t = this._map.latLngToLayerPoint(this._latlng), i = A(this.options.offset),
-					e = this._getAnchor(), this._zoomAnimated ? vi(this._container, t.add(e)) : i = i
-					.add(t).add(e), n = this._containerBottom = -i.y, o = this._containerLeft = -Math
-					.round(this._containerWidth / 2) + i.x, this._container.style.bottom = n + "px",
-					this._container.style.left = o + "px")
-			},
-			_getAnchor: function() {
-				return [0, 0]
-			}
-		}),
-		tn = Qe.extend({
-			options: {
-				maxWidth: 300,
-				minWidth: 50,
-				maxHeight: null,
-				autoPan: !0,
-				autoPanPaddingTopLeft: null,
-				autoPanPaddingBottomRight: null,
-				autoPanPadding: [5, 5],
-				keepInView: !1,
-				closeButton: !0,
-				autoClose: !0,
-				closeOnEscapeKey: !0,
-				className: ""
-			},
-			openOn: function(t) {
-				return t.openPopup(this), this
-			},
-			onAdd: function(t) {
-				Qe.prototype.onAdd.call(this, t), t.fire("popupopen", {
-					popup: this
-				}), this._source && (this._source.fire("popupopen", {
-					popup: this
-				}, !0), this._source instanceof Be || this._source.on("preclick", Ai))
-			},
-			onRemove: function(t) {
-				Qe.prototype.onRemove.call(this, t), t.fire("popupclose", {
-					popup: this
-				}), this._source && (this._source.fire("popupclose", {
-					popup: this
-				}, !0), this._source instanceof Be || this._source.off("preclick", Ai))
-			},
-			getEvents: function() {
-				var t = Qe.prototype.getEvents.call(this);
-				return (void 0 !== this.options.closeOnClick ? this.options.closeOnClick : this._map.options
-					.closePopupOnClick) && (t.preclick = this._close), this.options.keepInView && (t
-					.moveend = this._adjustPan), t
-			},
-			_close: function() {
-				this._map && this._map.closePopup(this)
-			},
-			_initLayout: function() {
-				var t, i = "leaflet-popup",
-					e = this._container = si("div", i + " " + (this.options.className || "") +
-						" leaflet-zoom-animated"),
-					n = this._wrapper = si("div", i + "-content-wrapper", e);
-				this._contentNode = si("div", i + "-content", n), Oi(e), Ii(this._contentNode), zi(e,
-						"contextmenu", Ai), this._tipContainer = si("div", i + "-tip-container", e), this
-					._tip = si("div", i + "-tip", this._tipContainer), this.options.closeButton && ((t =
-							this._closeButton = si("a", i + "-close-button", e)).href = "#close", t
-						.innerHTML = "&#215;", zi(t, "click", this._onCloseButtonClick, this))
-			},
-			_updateLayout: function() {
-				var t = this._contentNode,
-					i = t.style;
-				i.width = "", i.whiteSpace = "nowrap";
-				var e = t.offsetWidth,
-					e = Math.min(e, this.options.maxWidth);
-				e = Math.max(e, this.options.minWidth), i.width = e + 1 + "px", i.whiteSpace = "", i
-					.height = "";
-				var n = t.offsetHeight,
-					o = this.options.maxHeight,
-					s = "leaflet-popup-scrolled";
-				o && o < n ? (i.height = o + "px", ci(t, s)) : _i(t, s), this._containerWidth = this
-					._container.offsetWidth
-			},
-			_animateZoom: function(t) {
-				var i = this._map._latLngToNewLayerPoint(this._latlng, t.zoom, t.center),
-					e = this._getAnchor();
-				vi(this._container, i.add(e))
-			},
-			_adjustPan: function() {
-				var t, i, e, n, o, s, r, a, h, u, l, c;
-				this.options.autoPan && (this._map._panAnim && this._map._panAnim.stop(), t = this._map, i =
-					parseInt(oi(this._container, "marginBottom"), 10) || 0, e = this._container
-					.offsetHeight + i, n = this._containerWidth, (o = new k(this._containerLeft, -e -
-						this._containerBottom))._add(yi(this._container)), s = t
-					.layerPointToContainerPoint(o), r = A(this.options.autoPanPadding), a = A(this
-						.options.autoPanPaddingTopLeft || r), h = A(this.options
-						.autoPanPaddingBottomRight || r), u = t.getSize(), c = l = 0, s.x + n + h.x > u
-					.x && (l = s.x + n - u.x + h.x), s.x - l - a.x < 0 && (l = s.x - a.x), s.y + e + h
-					.y > u.y && (c = s.y + e - u.y + h.y), s.y - c - a.y < 0 && (c = s.y - a.y), (l ||
-						c) && t.fire("autopanstart").panBy([l, c]))
-			},
-			_onCloseButtonClick: function(t) {
-				this._close(), Ni(t)
-			},
-			_getAnchor: function() {
-				return A(this._source && this._source._getPopupAnchor ? this._source._getPopupAnchor() : [0,
-					0
-				])
-			}
-		});
-	Ki.mergeOptions({
-		closePopupOnClick: !0
-	}), Ki.include({
-		openPopup: function(t, i, e) {
-			return t instanceof tn || (t = new tn(e).setContent(t)), i && t.setLatLng(i), this.hasLayer(
-				t) ? this : (this._popup && this._popup.options.autoClose && this.closePopup(), this
-				._popup = t, this.addLayer(t))
-		},
-		closePopup: function(t) {
-			return t && t !== this._popup || (t = this._popup, this._popup = null), t && this
-				.removeLayer(t), this
-		}
-	}), Me.include({
-		bindPopup: function(t, i) {
-			return t instanceof tn ? (c(t, i), (this._popup = t)._source = this) : (this._popup && !i ||
-					(this._popup = new tn(i, this)), this._popup.setContent(t)), this
-				._popupHandlersAdded || (this.on({
-					click: this._openPopup,
-					keypress: this._onKeyPress,
-					remove: this.closePopup,
-					move: this._movePopup
-				}), this._popupHandlersAdded = !0), this
-		},
-		unbindPopup: function() {
-			return this._popup && (this.off({
-				click: this._openPopup,
-				keypress: this._onKeyPress,
-				remove: this.closePopup,
-				move: this._movePopup
-			}), this._popupHandlersAdded = !1, this._popup = null), this
-		},
-		openPopup: function(t, i) {
-			return this._popup && this._map && (i = this._popup._prepareOpen(this, t, i), this._map
-				.openPopup(this._popup, i)), this
-		},
-		closePopup: function() {
-			return this._popup && this._popup._close(), this
-		},
-		togglePopup: function(t) {
-			return this._popup && (this._popup._map ? this.closePopup() : this.openPopup(t)), this
-		},
-		isPopupOpen: function() {
-			return !!this._popup && this._popup.isOpen()
-		},
-		setPopupContent: function(t) {
-			return this._popup && this._popup.setContent(t), this
-		},
-		getPopup: function() {
-			return this._popup
-		},
-		_openPopup: function(t) {
-			var i = t.layer || t.target;
-			this._popup && this._map && (Ni(t), i instanceof Be ? this.openPopup(t.layer || t.target, t
-					.latlng) : this._map.hasLayer(this._popup) && this._popup._source === i ? this
-				.closePopup() : this.openPopup(i, t.latlng))
-		},
-		_movePopup: function(t) {
-			this._popup.setLatLng(t.latlng)
-		},
-		_onKeyPress: function(t) {
-			13 === t.originalEvent.keyCode && this._openPopup(t)
-		}
-	});
-	var en = Qe.extend({
-		options: {
-			pane: "tooltipPane",
-			offset: [0, 0],
-			direction: "auto",
-			permanent: !1,
-			sticky: !1,
-			interactive: !1,
-			opacity: .9
-		},
-		onAdd: function(t) {
-			Qe.prototype.onAdd.call(this, t), this.setOpacity(this.options.opacity), t.fire(
-				"tooltipopen", {
-					tooltip: this
-				}), this._source && this._source.fire("tooltipopen", {
-				tooltip: this
-			}, !0)
-		},
-		onRemove: function(t) {
-			Qe.prototype.onRemove.call(this, t), t.fire("tooltipclose", {
-				tooltip: this
-			}), this._source && this._source.fire("tooltipclose", {
-				tooltip: this
-			}, !0)
-		},
-		getEvents: function() {
-			var t = Qe.prototype.getEvents.call(this);
-			return bt && !this.options.permanent && (t.preclick = this._close), t
-		},
-		_close: function() {
-			this._map && this._map.closeTooltip(this)
-		},
-		_initLayout: function() {
-			var t = "leaflet-tooltip " + (this.options.className || "") + " leaflet-zoom-" + (this
-				._zoomAnimated ? "animated" : "hide");
-			this._contentNode = this._container = si("div", t)
-		},
-		_updateLayout: function() {},
-		_adjustPan: function() {},
-		_setPosition: function(t) {
-			var i, e = this._map,
-				n = this._container,
-				o = e.latLngToContainerPoint(e.getCenter()),
-				s = e.layerPointToContainerPoint(t),
-				r = this.options.direction,
-				a = n.offsetWidth,
-				h = n.offsetHeight,
-				u = A(this.options.offset),
-				l = this._getAnchor(),
-				c = "top" === r ? (i = a / 2, h) : "bottom" === r ? (i = a / 2, 0) : (i = "center" ===
-					r ? a / 2 : "right" === r ? 0 : "left" === r ? a : s.x < o.x ? (r = "right", 0) : (
-						r = "left", a + 2 * (u.x + l.x)), h / 2);
-			t = t.subtract(A(i, c, !0)).add(u).add(l), _i(n, "leaflet-tooltip-right"), _i(n,
-				"leaflet-tooltip-left"), _i(n, "leaflet-tooltip-top"), _i(n,
-				"leaflet-tooltip-bottom"), ci(n, "leaflet-tooltip-" + r), vi(n, t)
-		},
-		_updatePosition: function() {
-			var t = this._map.latLngToLayerPoint(this._latlng);
-			this._setPosition(t)
-		},
-		setOpacity: function(t) {
-			this.options.opacity = t, this._container && mi(this._container, t)
-		},
-		_animateZoom: function(t) {
-			var i = this._map._latLngToNewLayerPoint(this._latlng, t.zoom, t.center);
-			this._setPosition(i)
-		},
-		_getAnchor: function() {
-			return A(this._source && this._source._getTooltipAnchor && !this.options.sticky ? this
-				._source._getTooltipAnchor() : [0, 0])
-		}
-	});
-	Ki.include({
-		openTooltip: function(t, i, e) {
-			return t instanceof en || (t = new en(e).setContent(t)), i && t.setLatLng(i), this.hasLayer(
-				t) ? this : this.addLayer(t)
-		},
-		closeTooltip: function(t) {
-			return t && this.removeLayer(t), this
-		}
-	}), Me.include({
-		bindTooltip: function(t, i) {
-			return t instanceof en ? (c(t, i), (this._tooltip = t)._source = this) : (this._tooltip && !
-					i || (this._tooltip = new en(i, this)), this._tooltip.setContent(t)), this
-				._initTooltipInteractions(), this._tooltip.options.permanent && this._map && this._map
-				.hasLayer(this) && this.openTooltip(), this
-		},
-		unbindTooltip: function() {
-			return this._tooltip && (this._initTooltipInteractions(!0), this.closeTooltip(), this
-				._tooltip = null), this
-		},
-		_initTooltipInteractions: function(t) {
-			var i, e;
-			!t && this._tooltipHandlersAdded || (i = t ? "off" : "on", e = {
-					remove: this.closeTooltip,
-					move: this._moveTooltip
-				}, this._tooltip.options.permanent ? e.add = this._openTooltip : (e.mouseover = this
-					._openTooltip, e.mouseout = this.closeTooltip, this._tooltip.options.sticky && (
-						e.mousemove = this._moveTooltip), bt && (e.click = this._openTooltip)),
-				this[i](e), this._tooltipHandlersAdded = !t)
-		},
-		openTooltip: function(t, i) {
-			return this._tooltip && this._map && (i = this._tooltip._prepareOpen(this, t, i), this._map
-				.openTooltip(this._tooltip, i), this._tooltip.options.interactive && this._tooltip
-				._container && (ci(this._tooltip._container, "leaflet-clickable"), this
-					.addInteractiveTarget(this._tooltip._container))), this
-		},
-		closeTooltip: function() {
-			return this._tooltip && (this._tooltip._close(), this._tooltip.options.interactive && this
-				._tooltip._container && (_i(this._tooltip._container, "leaflet-clickable"), this
-					.removeInteractiveTarget(this._tooltip._container))), this
-		},
-		toggleTooltip: function(t) {
-			return this._tooltip && (this._tooltip._map ? this.closeTooltip() : this.openTooltip(t)),
-				this
-		},
-		isTooltipOpen: function() {
-			return this._tooltip.isOpen()
-		},
-		setTooltipContent: function(t) {
-			return this._tooltip && this._tooltip.setContent(t), this
-		},
-		getTooltip: function() {
-			return this._tooltip
-		},
-		_openTooltip: function(t) {
-			var i = t.layer || t.target;
-			this._tooltip && this._map && this.openTooltip(i, this._tooltip.options.sticky ? t.latlng :
-				void 0)
-		},
-		_moveTooltip: function(t) {
-			var i, e, n = t.latlng;
-			this._tooltip.options.sticky && t.originalEvent && (i = this._map
-					.mouseEventToContainerPoint(t.originalEvent), e = this._map
-					.containerPointToLayerPoint(i), n = this._map.layerPointToLatLng(e)), this._tooltip
-				.setLatLng(n)
-		}
-	});
-	var nn = Se.extend({
-		options: {
-			iconSize: [12, 12],
-			html: !1,
-			bgPos: null,
-			className: "leaflet-div-icon"
-		},
-		createIcon: function(t) {
-			var i, e = t && "DIV" === t.tagName ? t : document.createElement("div"),
-				n = this.options;
-			return n.html instanceof Element ? (ai(e), e.appendChild(n.html)) : e.innerHTML = !1 !== n
-				.html ? n.html : "", n.bgPos && (i = A(n.bgPos), e.style.backgroundPosition = -i.x +
-					"px " + -i.y + "px"), this._setIconStyles(e, "icon"), e
-		},
-		createShadow: function() {
-			return null
-		}
-	});
-	Se.Default = Ze;
-	var on = Me.extend({
-		options: {
-			tileSize: 256,
-			opacity: 1,
-			updateWhenIdle: yt,
-			updateWhenZooming: !0,
-			updateInterval: 200,
-			zIndex: 1,
-			bounds: null,
-			minZoom: 0,
-			maxZoom: void 0,
-			maxNativeZoom: void 0,
-			minNativeZoom: void 0,
-			noWrap: !1,
-			pane: "tilePane",
-			className: "",
-			keepBuffer: 2
-		},
-		initialize: function(t) {
-			c(this, t)
-		},
-		onAdd: function() {
-			this._initContainer(), this._levels = {}, this._tiles = {}, this._resetView(), this
-			._update()
-		},
-		beforeAdd: function(t) {
-			t._addZoomLimit(this)
-		},
-		onRemove: function(t) {
-			this._removeAllTiles(), ri(this._container), t._removeZoomLimit(this), this._container =
-				null, this._tileZoom = void 0
-		},
-		bringToFront: function() {
-			return this._map && (hi(this._container), this._setAutoZIndex(Math.max)), this
-		},
-		bringToBack: function() {
-			return this._map && (ui(this._container), this._setAutoZIndex(Math.min)), this
-		},
-		getContainer: function() {
-			return this._container
-		},
-		setOpacity: function(t) {
-			return this.options.opacity = t, this._updateOpacity(), this
-		},
-		setZIndex: function(t) {
-			return this.options.zIndex = t, this._updateZIndex(), this
-		},
-		isLoading: function() {
-			return this._loading
-		},
-		redraw: function() {
-			return this._map && (this._removeAllTiles(), this._update()), this
-		},
-		getEvents: function() {
-			var t = {
-				viewprereset: this._invalidateAll,
-				viewreset: this._resetView,
-				zoom: this._resetView,
-				moveend: this._onMoveEnd
-			};
-			return this.options.updateWhenIdle || (this._onMove || (this._onMove = n(this._onMoveEnd,
-				this.options.updateInterval, this)), t.move = this._onMove), this._zoomAnimated && (
-				t.zoomanim = this._animateZoom), t
-		},
-		createTile: function() {
-			return document.createElement("div")
-		},
-		getTileSize: function() {
-			var t = this.options.tileSize;
-			return t instanceof k ? t : new k(t, t)
-		},
-		_updateZIndex: function() {
-			this._container && void 0 !== this.options.zIndex && null !== this.options.zIndex && (this
-				._container.style.zIndex = this.options.zIndex)
-		},
-		_setAutoZIndex: function(t) {
-			for (var i, e = this.getPane().children, n = -t(-1 / 0, 1 / 0), o = 0, s = e.length; o <
-				s; o++) i = e[o].style.zIndex, e[o] !== this._container && i && (n = t(n, +i));
-			isFinite(n) && (this.options.zIndex = n + t(-1, 1), this._updateZIndex())
-		},
-		_updateOpacity: function() {
-			if (this._map && !it) {
-				mi(this._container, this.options.opacity);
-				var t = +new Date,
-					i = !1,
-					e = !1;
-				for (var n in this._tiles) {
-					var o, s = this._tiles[n];
-					s.current && s.loaded && (o = Math.min(1, (t - s.loaded) / 200), mi(s.el, o), o <
-						1 ? i = !0 : (s.active ? e = !0 : this._onOpaqueTile(s), s.active = !0))
-				}
-				e && !this._noPrune && this._pruneTiles(), i && (z(this._fadeFrame), this._fadeFrame =
-					M(this._updateOpacity, this))
-			}
-		},
-		_onOpaqueTile: a,
-		_initContainer: function() {
-			this._container || (this._container = si("div", "leaflet-layer " + (this.options
-					.className || "")), this._updateZIndex(), this.options.opacity < 1 && this
-				._updateOpacity(), this.getPane().appendChild(this._container))
-		},
-		_updateLevels: function() {
-			var t = this._tileZoom,
-				i = this.options.maxZoom;
-			if (void 0 !== t) {
-				for (var e in this._levels) e = Number(e), this._levels[e].el.children.length || e ===
-					t ? (this._levels[e].el.style.zIndex = i - Math.abs(t - e), this._onUpdateLevel(
-					e)) : (ri(this._levels[e].el), this._removeTilesAtZoom(e), this._onRemoveLevel(e),
-						delete this._levels[e]);
-				var n = this._levels[t],
-					o = this._map;
-				return n || ((n = this._levels[t] = {}).el = si("div",
-						"leaflet-tile-container leaflet-zoom-animated", this._container), n.el.style
-					.zIndex = i, n.origin = o.project(o.unproject(o.getPixelOrigin()), t).round(), n
-					.zoom = t, this._setZoomTransform(n, o.getCenter(), o.getZoom()), a(n.el
-						.offsetWidth), this._onCreateLevel(n)), this._level = n
-			}
-		},
-		_onUpdateLevel: a,
-		_onRemoveLevel: a,
-		_onCreateLevel: a,
-		_pruneTiles: function() {
-			if (this._map) {
-				var t, i, e, n = this._map.getZoom();
-				if (n > this.options.maxZoom || n < this.options.minZoom) this._removeAllTiles();
-				else {
-					for (t in this._tiles)(e = this._tiles[t]).retain = e.current;
-					for (t in this._tiles) {
-						(e = this._tiles[t]).current && !e.active && (i = e.coords, this._retainParent(i
-							.x, i.y, i.z, i.z - 5) || this._retainChildren(i.x, i.y, i.z, i.z +
-							2))
-					}
-					for (t in this._tiles) this._tiles[t].retain || this._removeTile(t)
-				}
-			}
-		},
-		_removeTilesAtZoom: function(t) {
-			for (var i in this._tiles) this._tiles[i].coords.z === t && this._removeTile(i)
-		},
-		_removeAllTiles: function() {
-			for (var t in this._tiles) this._removeTile(t)
-		},
-		_invalidateAll: function() {
-			for (var t in this._levels) ri(this._levels[t].el), this._onRemoveLevel(Number(t)),
-				delete this._levels[t];
-			this._removeAllTiles(), this._tileZoom = void 0
-		},
-		_retainParent: function(t, i, e, n) {
-			var o = Math.floor(t / 2),
-				s = Math.floor(i / 2),
-				r = e - 1,
-				a = new k(+o, +s);
-			a.z = +r;
-			var h = this._tileCoordsToKey(a),
-				u = this._tiles[h];
-			return u && u.active ? u.retain = !0 : (u && u.loaded && (u.retain = !0), n < r && this
-				._retainParent(o, s, r, n))
-		},
-		_retainChildren: function(t, i, e, n) {
-			for (var o = 2 * t; o < 2 * t + 2; o++)
-				for (var s = 2 * i; s < 2 * i + 2; s++) {
-					var r = new k(o, s);
-					r.z = e + 1;
-					var a = this._tileCoordsToKey(r),
-						h = this._tiles[a];
-					h && h.active ? h.retain = !0 : (h && h.loaded && (h.retain = !0), e + 1 < n && this
-						._retainChildren(o, s, e + 1, n))
-				}
-		},
-		_resetView: function(t) {
-			var i = t && (t.pinch || t.flyTo);
-			this._setView(this._map.getCenter(), this._map.getZoom(), i, i)
-		},
-		_animateZoom: function(t) {
-			this._setView(t.center, t.zoom, !0, t.noUpdate)
-		},
-		_clampZoom: function(t) {
-			var i = this.options;
-			return void 0 !== i.minNativeZoom && t < i.minNativeZoom ? i.minNativeZoom : void 0 !== i
-				.maxNativeZoom && i.maxNativeZoom < t ? i.maxNativeZoom : t
-		},
-		_setView: function(t, i, e, n) {
-			var o = Math.round(i),
-				o = void 0 !== this.options.maxZoom && o > this.options.maxZoom || void 0 !== this
-				.options.minZoom && o < this.options.minZoom ? void 0 : this._clampZoom(o),
-				s = this.options.updateWhenZooming && o !== this._tileZoom;
-			n && !s || (this._tileZoom = o, this._abortLoading && this._abortLoading(), this
-				._updateLevels(), this._resetGrid(), void 0 !== o && this._update(t), e || this
-				._pruneTiles(), this._noPrune = !!e), this._setZoomTransforms(t, i)
-		},
-		_setZoomTransforms: function(t, i) {
-			for (var e in this._levels) this._setZoomTransform(this._levels[e], t, i)
-		},
-		_setZoomTransform: function(t, i, e) {
-			var n = this._map.getZoomScale(e, t.zoom),
-				o = t.origin.multiplyBy(n).subtract(this._map._getNewPixelOrigin(i, e)).round();
-			vt ? gi(t.el, o, n) : vi(t.el, o)
-		},
-		_resetGrid: function() {
-			var t = this._map,
-				i = t.options.crs,
-				e = this._tileSize = this.getTileSize(),
-				n = this._tileZoom,
-				o = this._map.getPixelWorldBounds(this._tileZoom);
-			o && (this._globalTileRange = this._pxBoundsToTileRange(o)), this._wrapX = i.wrapLng && !
-				this.options.noWrap && [Math.floor(t.project([0, i.wrapLng[0]], n).x / e.x), Math.ceil(t
-					.project([0, i.wrapLng[1]], n).x / e.y)], this._wrapY = i.wrapLat && !this.options
-				.noWrap && [Math.floor(t.project([i.wrapLat[0], 0], n).y / e.x), Math.ceil(t.project([i
-					.wrapLat[1], 0
-				], n).y / e.y)]
-		},
-		_onMoveEnd: function() {
-			this._map && !this._map._animatingZoom && this._update()
-		},
-		_getTiledPixelBounds: function(t) {
-			var i = this._map,
-				e = i._animatingZoom ? Math.max(i._animateToZoom, i.getZoom()) : i.getZoom(),
-				n = i.getZoomScale(e, this._tileZoom),
-				o = i.project(t, this._tileZoom).floor(),
-				s = i.getSize().divideBy(2 * n);
-			return new I(o.subtract(s), o.add(s))
-		},
-		_update: function(t) {
-			var i = this._map;
-			if (i) {
-				var e = this._clampZoom(i.getZoom());
-				if (void 0 === t && (t = i.getCenter()), void 0 !== this._tileZoom) {
-					var n = this._getTiledPixelBounds(t),
-						o = this._pxBoundsToTileRange(n),
-						s = o.getCenter(),
-						r = [],
-						a = this.options.keepBuffer,
-						h = new I(o.getBottomLeft().subtract([a, -a]), o.getTopRight().add([a, -a]));
-					if (!(isFinite(o.min.x) && isFinite(o.min.y) && isFinite(o.max.x) && isFinite(o.max
-							.y))) throw new Error("Attempted to load an infinite number of tiles");
-					for (var u in this._tiles) {
-						var l = this._tiles[u].coords;
-						l.z === this._tileZoom && h.contains(new k(l.x, l.y)) || (this._tiles[u]
-							.current = !1)
-					}
-					if (1 < Math.abs(e - this._tileZoom)) this._setView(t, e);
-					else {
-						for (var c = o.min.y; c <= o.max.y; c++)
-							for (var _ = o.min.x; _ <= o.max.x; _++) {
-								var d, p = new k(_, c);
-								p.z = this._tileZoom, this._isValidTile(p) && ((d = this._tiles[this
-									._tileCoordsToKey(p)]) ? d.current = !0 : r.push(p))
-							}
-						if (r.sort(function(t, i) {
-								return t.distanceTo(s) - i.distanceTo(s)
-							}), 0 !== r.length) {
-							this._loading || (this._loading = !0, this.fire("loading"));
-							for (var m = document.createDocumentFragment(), _ = 0; _ < r.length; _++)
-								this._addTile(r[_], m);
-							this._level.el.appendChild(m)
-						}
-					}
-				}
-			}
-		},
-		_isValidTile: function(t) {
-			var i = this._map.options.crs;
-			if (!i.infinite) {
-				var e = this._globalTileRange;
-				if (!i.wrapLng && (t.x < e.min.x || t.x > e.max.x) || !i.wrapLat && (t.y < e.min.y || t
-						.y > e.max.y)) return !1
-			}
-			if (!this.options.bounds) return !0;
-			var n = this._tileCoordsToBounds(t);
-			return N(this.options.bounds).overlaps(n)
-		},
-		_keyToBounds: function(t) {
-			return this._tileCoordsToBounds(this._keyToTileCoords(t))
-		},
-		_tileCoordsToNwSe: function(t) {
-			var i = this._map,
-				e = this.getTileSize(),
-				n = t.scaleBy(e),
-				o = n.add(e);
-			return [i.unproject(n, t.z), i.unproject(o, t.z)]
-		},
-		_tileCoordsToBounds: function(t) {
-			var i = this._tileCoordsToNwSe(t),
-				e = new R(i[0], i[1]);
-			return this.options.noWrap || (e = this._map.wrapLatLngBounds(e)), e
-		},
-		_tileCoordsToKey: function(t) {
-			return t.x + ":" + t.y + ":" + t.z
-		},
-		_keyToTileCoords: function(t) {
-			var i = t.split(":"),
-				e = new k(+i[0], +i[1]);
-			return e.z = +i[2], e
-		},
-		_removeTile: function(t) {
-			var i = this._tiles[t];
-			i && (ri(i.el), delete this._tiles[t], this.fire("tileunload", {
-				tile: i.el,
-				coords: this._keyToTileCoords(t)
-			}))
-		},
-		_initTile: function(t) {
-			ci(t, "leaflet-tile");
-			var i = this.getTileSize();
-			t.style.width = i.x + "px", t.style.height = i.y + "px", t.onselectstart = a, t
-				.onmousemove = a, it && this.options.opacity < 1 && mi(t, this.options.opacity), ot && !
-				st && (t.style.WebkitBackfaceVisibility = "hidden")
-		},
-		_addTile: function(t, i) {
-			var e = this._getTilePos(t),
-				n = this._tileCoordsToKey(t),
-				o = this.createTile(this._wrapCoords(t), p(this._tileReady, this, t));
-			this._initTile(o), this.createTile.length < 2 && M(p(this._tileReady, this, t, null, o)),
-				vi(o, e), this._tiles[n] = {
-					el: o,
-					coords: t,
-					current: !0
-				}, i.appendChild(o), this.fire("tileloadstart", {
-					tile: o,
-					coords: t
-				})
-		},
-		_tileReady: function(t, i, e) {
-			i && this.fire("tileerror", {
-				error: i,
-				tile: e,
-				coords: t
-			});
-			var n = this._tileCoordsToKey(t);
-			(e = this._tiles[n]) && (e.loaded = +new Date, this._map._fadeAnimated ? (mi(e.el, 0), z(
-				this._fadeFrame), this._fadeFrame = M(this._updateOpacity, this)) : (e.active = !0,
-				this._pruneTiles()), i || (ci(e.el, "leaflet-tile-loaded"), this.fire("tileload", {
-				tile: e.el,
-				coords: t
-			})), this._noTilesToLoad() && (this._loading = !1, this.fire("load"), it || !this._map
-				._fadeAnimated ? M(this._pruneTiles, this) : setTimeout(p(this._pruneTiles, this),
-					250)))
-		},
-		_getTilePos: function(t) {
-			return t.scaleBy(this.getTileSize()).subtract(this._level.origin)
-		},
-		_wrapCoords: function(t) {
-			var i = new k(this._wrapX ? o(t.x, this._wrapX) : t.x, this._wrapY ? o(t.y, this._wrapY) : t
-				.y);
-			return i.z = t.z, i
-		},
-		_pxBoundsToTileRange: function(t) {
-			var i = this.getTileSize();
-			return new I(t.min.unscaleBy(i).floor(), t.max.unscaleBy(i).ceil().subtract([1, 1]))
-		},
-		_noTilesToLoad: function() {
-			for (var t in this._tiles)
-				if (!this._tiles[t].loaded) return !1;
-			return !0
-		}
-	});
-	var sn = on.extend({
-		options: {
-			minZoom: 0,
-			maxZoom: 18,
-			subdomains: "abc",
-			errorTileUrl: "",
-			zoomOffset: 0,
-			tms: !1,
-			zoomReverse: !1,
-			detectRetina: !1,
-			crossOrigin: !1
-		},
-		initialize: function(t, i) {
-			this._url = t, (i = c(this, i)).detectRetina && zt && 0 < i.maxZoom && (i.tileSize = Math
-					.floor(i.tileSize / 2), i.zoomReverse ? (i.zoomOffset--, i.minZoom++) : (i
-						.zoomOffset++, i.maxZoom--), i.minZoom = Math.max(0, i.minZoom)), "string" ==
-				typeof i.subdomains && (i.subdomains = i.subdomains.split("")), ot || this.on(
-					"tileunload", this._onTileRemove)
-		},
-		setUrl: function(t, i) {
-			return this._url === t && void 0 === i && (i = !0), this._url = t, i || this.redraw(), this
-		},
-		createTile: function(t, i) {
-			var e = document.createElement("img");
-			return zi(e, "load", p(this._tileOnLoad, this, i, e)), zi(e, "error", p(this._tileOnError,
-					this, i, e)), !this.options.crossOrigin && "" !== this.options.crossOrigin || (e
-					.crossOrigin = !0 === this.options.crossOrigin ? "" : this.options.crossOrigin), e
-				.alt = "", e.setAttribute("role", "presentation"), e.src = this.getTileUrl(t), e
-		},
-		getTileUrl: function(t) {
-			var i, e = {
-				r: zt ? "@2x" : "",
-				s: this._getSubdomain(t),
-				x: t.x,
-				y: t.y,
-				z: this._getZoomForUrl()
-			};
-			return this._map && !this._map.options.crs.infinite && (i = this._globalTileRange.max.y - t
-				.y, this.options.tms && (e.y = i), e["-y"] = i), f(this._url, h(e, this.options))
-		},
-		_tileOnLoad: function(t, i) {
-			it ? setTimeout(p(t, this, null, i), 0) : t(null, i)
-		},
-		_tileOnError: function(t, i, e) {
-			var n = this.options.errorTileUrl;
-			n && i.getAttribute("src") !== n && (i.src = n), t(e, i)
-		},
-		_onTileRemove: function(t) {
-			t.tile.onload = null
-		},
-		_getZoomForUrl: function() {
-			var t = this._tileZoom,
-				i = this.options.maxZoom;
-			return this.options.zoomReverse && (t = i - t), t + this.options.zoomOffset
-		},
-		_getSubdomain: function(t) {
-			var i = Math.abs(t.x + t.y) % this.options.subdomains.length;
-			return this.options.subdomains[i]
-		},
-		_abortLoading: function() {
-			var t, i;
-			for (t in this._tiles) this._tiles[t].coords.z !== this._tileZoom && ((i = this._tiles[t]
-				.el).onload = a, i.onerror = a, i.complete || (i.src = y, ri(i), delete this
-				._tiles[t]))
-		},
-		_removeTile: function(t) {
-			var i = this._tiles[t];
-			if (i) return at || i.el.setAttribute("src", y), on.prototype._removeTile.call(this, t)
-		},
-		_tileReady: function(t, i, e) {
-			if (this._map && (!e || e.getAttribute("src") !== y)) return on.prototype._tileReady.call(
-				this, t, i, e)
-		}
-	});
-
-	function rn(t, i) {
-		return new sn(t, i)
-	}
-	var an = sn.extend({
-		defaultWmsParams: {
-			service: "WMS",
-			request: "GetMap",
-			layers: "",
-			styles: "",
-			format: "image/jpeg",
-			transparent: !1,
-			version: "1.1.1"
-		},
-		options: {
-			crs: null,
-			uppercase: !1
-		},
-		initialize: function(t, i) {
-			this._url = t;
-			var e = h({}, this.defaultWmsParams);
-			for (var n in i) n in this.options || (e[n] = i[n]);
-			var o = (i = c(this, i)).detectRetina && zt ? 2 : 1,
-				s = this.getTileSize();
-			e.width = s.x * o, e.height = s.y * o, this.wmsParams = e
-		},
-		onAdd: function(t) {
-			this._crs = this.options.crs || t.options.crs, this._wmsVersion = parseFloat(this.wmsParams
-				.version);
-			var i = 1.3 <= this._wmsVersion ? "crs" : "srs";
-			this.wmsParams[i] = this._crs.code, sn.prototype.onAdd.call(this, t)
-		},
-		getTileUrl: function(t) {
-			var i = this._tileCoordsToNwSe(t),
-				e = this._crs,
-				n = O(e.project(i[0]), e.project(i[1])),
-				o = n.min,
-				s = n.max,
-				r = (1.3 <= this._wmsVersion && this._crs === be ? [o.y, o.x, s.y, s.x] : [o.x, o.y, s
-					.x, s.y
-				]).join(","),
-				a = sn.prototype.getTileUrl.call(this, t);
-			return a + _(this.wmsParams, a, this.options.uppercase) + (this.options.uppercase ?
-				"&BBOX=" : "&bbox=") + r
-		},
-		setParams: function(t, i) {
-			return h(this.wmsParams, t), i || this.redraw(), this
-		}
-	});
-	sn.WMS = an, rn.wms = function(t, i) {
-		return new an(t, i)
-	};
-	var hn = Me.extend({
-			options: {
-				padding: .1,
-				tolerance: 0
-			},
-			initialize: function(t) {
-				c(this, t), m(this), this._layers = this._layers || {}
-			},
-			onAdd: function() {
-				this._container || (this._initContainer(), this._zoomAnimated && ci(this._container,
-						"leaflet-zoom-animated")), this.getPane().appendChild(this._container), this
-					._update(), this.on("update", this._updatePaths, this)
-			},
-			onRemove: function() {
-				this.off("update", this._updatePaths, this), this._destroyContainer()
-			},
-			getEvents: function() {
-				var t = {
-					viewreset: this._reset,
-					zoom: this._onZoom,
-					moveend: this._update,
-					zoomend: this._onZoomEnd
-				};
-				return this._zoomAnimated && (t.zoomanim = this._onAnimZoom), t
-			},
-			_onAnimZoom: function(t) {
-				this._updateTransform(t.center, t.zoom)
-			},
-			_onZoom: function() {
-				this._updateTransform(this._map.getCenter(), this._map.getZoom())
-			},
-			_updateTransform: function(t, i) {
-				var e = this._map.getZoomScale(i, this._zoom),
-					n = yi(this._container),
-					o = this._map.getSize().multiplyBy(.5 + this.options.padding),
-					s = this._map.project(this._center, i),
-					r = this._map.project(t, i).subtract(s),
-					a = o.multiplyBy(-e).add(n).add(o).subtract(r);
-				vt ? gi(this._container, a, e) : vi(this._container, a)
-			},
-			_reset: function() {
-				for (var t in this._update(), this._updateTransform(this._center, this._zoom), this._layers)
-					this._layers[t]._reset()
-			},
-			_onZoomEnd: function() {
-				for (var t in this._layers) this._layers[t]._project()
-			},
-			_updatePaths: function() {
-				for (var t in this._layers) this._layers[t]._update()
-			},
-			_update: function() {
-				var t = this.options.padding,
-					i = this._map.getSize(),
-					e = this._map.containerPointToLayerPoint(i.multiplyBy(-t)).round();
-				this._bounds = new I(e, e.add(i.multiplyBy(1 + 2 * t)).round()), this._center = this._map
-					.getCenter(), this._zoom = this._map.getZoom()
-			}
-		}),
-		un = hn.extend({
-			getEvents: function() {
-				var t = hn.prototype.getEvents.call(this);
-				return t.viewprereset = this._onViewPreReset, t
-			},
-			_onViewPreReset: function() {
-				this._postponeUpdatePaths = !0
-			},
-			onAdd: function() {
-				hn.prototype.onAdd.call(this), this._draw()
-			},
-			_initContainer: function() {
-				var t = this._container = document.createElement("canvas");
-				zi(t, "mousemove", this._onMouseMove, this), zi(t,
-					"click dblclick mousedown mouseup contextmenu", this._onClick, this), zi(t,
-					"mouseout", this._handleMouseOut, this), this._ctx = t.getContext("2d")
-			},
-			_destroyContainer: function() {
-				z(this._redrawRequest), delete this._ctx, ri(this._container), Si(this._container),
-					delete this._container
-			},
-			_updatePaths: function() {
-				if (!this._postponeUpdatePaths) {
-					for (var t in this._redrawBounds = null, this._layers) this._layers[t]._update();
-					this._redraw()
-				}
-			},
-			_update: function() {
-				var t, i, e, n;
-				this._map._animatingZoom && this._bounds || (hn.prototype._update.call(this), t = this
-					._bounds, i = this._container, e = t.getSize(), n = zt ? 2 : 1, vi(i, t.min), i
-					.width = n * e.x, i.height = n * e.y, i.style.width = e.x + "px", i.style.height = e
-					.y + "px", zt && this._ctx.scale(2, 2), this._ctx.translate(-t.min.x, -t.min.y),
-					this.fire("update"))
-			},
-			_reset: function() {
-				hn.prototype._reset.call(this), this._postponeUpdatePaths && (this._postponeUpdatePaths = !
-					1, this._updatePaths())
-			},
-			_initPath: function(t) {
-				this._updateDashArray(t);
-				var i = (this._layers[m(t)] = t)._order = {
-					layer: t,
-					prev: this._drawLast,
-					next: null
-				};
-				this._drawLast && (this._drawLast.next = i), this._drawLast = i, this._drawFirst = this
-					._drawFirst || this._drawLast
-			},
-			_addPath: function(t) {
-				this._requestRedraw(t)
-			},
-			_removePath: function(t) {
-				var i = t._order,
-					e = i.next,
-					n = i.prev;
-				e ? e.prev = n : this._drawLast = n, n ? n.next = e : this._drawFirst = e, delete t._order,
-					delete this._layers[m(t)], this._requestRedraw(t)
-			},
-			_updatePath: function(t) {
-				this._extendRedrawBounds(t), t._project(), t._update(), this._requestRedraw(t)
-			},
-			_updateStyle: function(t) {
-				this._updateDashArray(t), this._requestRedraw(t)
-			},
-			_updateDashArray: function(t) {
-				if ("string" == typeof t.options.dashArray) {
-					for (var i, e = t.options.dashArray.split(/[, ]+/), n = [], o = 0; o < e.length; o++) {
-						if (i = Number(e[o]), isNaN(i)) return;
-						n.push(i)
-					}
-					t.options._dashArray = n
-				} else t.options._dashArray = t.options.dashArray
-			},
-			_requestRedraw: function(t) {
-				this._map && (this._extendRedrawBounds(t), this._redrawRequest = this._redrawRequest || M(
-					this._redraw, this))
-			},
-			_extendRedrawBounds: function(t) {
-				var i;
-				t._pxBounds && (i = (t.options.weight || 0) + 1, this._redrawBounds = this._redrawBounds ||
-					new I, this._redrawBounds.extend(t._pxBounds.min.subtract([i, i])), this
-					._redrawBounds.extend(t._pxBounds.max.add([i, i])))
-			},
-			_redraw: function() {
-				this._redrawRequest = null, this._redrawBounds && (this._redrawBounds.min._floor(), this
-					._redrawBounds.max._ceil()), this._clear(), this._draw(), this._redrawBounds = null
-			},
-			_clear: function() {
-				var t, i = this._redrawBounds;
-				i ? (t = i.getSize(), this._ctx.clearRect(i.min.x, i.min.y, t.x, t.y)) : (this._ctx.save(),
-					this._ctx.setTransform(1, 0, 0, 1, 0, 0), this._ctx.clearRect(0, 0, this._container
-						.width, this._container.height), this._ctx.restore())
-			},
-			_draw: function() {
-				var t, i, e = this._redrawBounds;
-				this._ctx.save(), e && (i = e.getSize(), this._ctx.beginPath(), this._ctx.rect(e.min.x, e
-					.min.y, i.x, i.y), this._ctx.clip()), this._drawing = !0;
-				for (var n = this._drawFirst; n; n = n.next) t = n.layer, (!e || t._pxBounds && t._pxBounds
-					.intersects(e)) && t._updatePath();
-				this._drawing = !1, this._ctx.restore()
-			},
-			_updatePoly: function(t, i) {
-				if (this._drawing) {
-					var e, n, o, s, r = t._parts,
-						a = r.length,
-						h = this._ctx;
-					if (a) {
-						for (h.beginPath(), e = 0; e < a; e++) {
-							for (n = 0, o = r[e].length; n < o; n++) s = r[e][n], h[n ? "lineTo" : "moveTo"]
-								(s.x, s.y);
-							i && h.closePath()
-						}
-						this._fillStroke(h, t)
-					}
-				}
-			},
-			_updateCircle: function(t) {
-				var i, e, n, o;
-				this._drawing && !t._empty() && (i = t._point, e = this._ctx, n = Math.max(Math.round(t
-					._radius), 1), 1 != (o = (Math.max(Math.round(t._radiusY), 1) || n) / n) && (e
-					.save(), e.scale(1, o)), e.beginPath(), e.arc(i.x, i.y / o, n, 0, 2 * Math.PI, !
-					1), 1 != o && e.restore(), this._fillStroke(e, t))
-			},
-			_fillStroke: function(t, i) {
-				var e = i.options;
-				e.fill && (t.globalAlpha = e.fillOpacity, t.fillStyle = e.fillColor || e.color, t.fill(e
-					.fillRule || "evenodd")), e.stroke && 0 !== e.weight && (t.setLineDash && t
-					.setLineDash(i.options && i.options._dashArray || []), t.globalAlpha = e.opacity, t
-					.lineWidth = e.weight, t.strokeStyle = e.color, t.lineCap = e.lineCap, t.lineJoin =
-					e.lineJoin, t.stroke())
-			},
-			_onClick: function(t) {
-				for (var i, e, n = this._map.mouseEventToLayerPoint(t), o = this._drawFirst; o; o = o.next)(
-					i = o.layer).options.interactive && i._containsPoint(n) && (("click" === t.type ||
-					"preclick" !== t.type) && this._map._draggableMoved(i) || (e = i));
-				e && (Fi(t), this._fireEvent([e], t))
-			},
-			_onMouseMove: function(t) {
-				var i;
-				!this._map || this._map.dragging.moving() || this._map._animatingZoom || (i = this._map
-					.mouseEventToLayerPoint(t), this._handleMouseHover(t, i))
-			},
-			_handleMouseOut: function(t) {
-				var i = this._hoveredLayer;
-				i && (_i(this._container, "leaflet-interactive"), this._fireEvent([i], t, "mouseout"), this
-					._hoveredLayer = null, this._mouseHoverThrottled = !1)
-			},
-			_handleMouseHover: function(t, i) {
-				if (!this._mouseHoverThrottled) {
-					for (var e, n, o = this._drawFirst; o; o = o.next)(e = o.layer).options.interactive && e
-						._containsPoint(i) && (n = e);
-					n !== this._hoveredLayer && (this._handleMouseOut(t), n && (ci(this._container,
-							"leaflet-interactive"), this._fireEvent([n], t, "mouseover"), this
-						._hoveredLayer = n)), this._hoveredLayer && this._fireEvent([this
-						._hoveredLayer], t), this._mouseHoverThrottled = !0, setTimeout(p(function() {
-						this._mouseHoverThrottled = !1
-					}, this), 32)
-				}
-			},
-			_fireEvent: function(t, i, e) {
-				this._map._fireDOMEvent(i, e || i.type, t)
-			},
-			_bringToFront: function(t) {
-				var i, e, n = t._order;
-				n && (i = n.next, e = n.prev, i && ((i.prev = e) ? e.next = i : i && (this._drawFirst = i),
-					n.prev = this._drawLast, (this._drawLast.next = n).next = null, this._drawLast =
-					n, this._requestRedraw(t)))
-			},
-			_bringToBack: function(t) {
-				var i, e, n = t._order;
-				n && (i = n.next, (e = n.prev) && ((e.next = i) ? i.prev = e : e && (this._drawLast = e), n
-					.prev = null, n.next = this._drawFirst, this._drawFirst.prev = n, this
-					._drawFirst = n, this._requestRedraw(t)))
-			}
-		});
-
-	function ln(t) {
-		return St ? new un(t) : null
-	}
-	var cn = function() {
-			try {
-				return document.namespaces.add("lvml", "urn:schemas-microsoft-com:vml"),
-					function(t) {
-						return document.createElement("<lvml:" + t + ' class="lvml">')
-					}
-			} catch (t) {
-				return function(t) {
-					return document.createElement("<" + t +
-						' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')
-				}
-			}
-		}(),
-		_n = {
-			_initContainer: function() {
-				this._container = si("div", "leaflet-vml-container")
-			},
-			_update: function() {
-				this._map._animatingZoom || (hn.prototype._update.call(this), this.fire("update"))
-			},
-			_initPath: function(t) {
-				var i = t._container = cn("shape");
-				ci(i, "leaflet-vml-shape " + (this.options.className || "")), i.coordsize = "1 1", t._path = cn(
-					"path"), i.appendChild(t._path), this._updateStyle(t), this._layers[m(t)] = t
-			},
-			_addPath: function(t) {
-				var i = t._container;
-				this._container.appendChild(i), t.options.interactive && t.addInteractiveTarget(i)
-			},
-			_removePath: function(t) {
-				var i = t._container;
-				ri(i), t.removeInteractiveTarget(i), delete this._layers[m(t)]
-			},
-			_updateStyle: function(t) {
-				var i = t._stroke,
-					e = t._fill,
-					n = t.options,
-					o = t._container;
-				o.stroked = !!n.stroke, o.filled = !!n.fill, n.stroke ? (i = i || (t._stroke = cn("stroke")), o
-					.appendChild(i), i.weight = n.weight + "px", i.color = n.color, i.opacity = n.opacity, n
-					.dashArray ? i.dashStyle = g(n.dashArray) ? n.dashArray.join(" ") : n.dashArray.replace(
-						/( *, *)/g, " ") : i.dashStyle = "", i.endcap = n.lineCap.replace("butt", "flat"), i
-					.joinstyle = n.lineJoin) : i && (o.removeChild(i), t._stroke = null), n.fill ? (e = e ||
-					(t._fill = cn("fill")), o.appendChild(e), e.color = n.fillColor || n.color, e.opacity =
-					n.fillOpacity) : e && (o.removeChild(e), t._fill = null)
-			},
-			_updateCircle: function(t) {
-				var i = t._point.round(),
-					e = Math.round(t._radius),
-					n = Math.round(t._radiusY || e);
-				this._setPath(t, t._empty() ? "M0 0" : "AL " + i.x + "," + i.y + " " + e + "," + n +
-					" 0,23592600")
-			},
-			_setPath: function(t, i) {
-				t._path.v = i
-			},
-			_bringToFront: function(t) {
-				hi(t._container)
-			},
-			_bringToBack: function(t) {
-				ui(t._container)
-			}
-		},
-		dn = Et ? cn : J,
-		pn = hn.extend({
-			getEvents: function() {
-				var t = hn.prototype.getEvents.call(this);
-				return t.zoomstart = this._onZoomStart, t
-			},
-			_initContainer: function() {
-				this._container = dn("svg"), this._container.setAttribute("pointer-events", "none"), this
-					._rootGroup = dn("g"), this._container.appendChild(this._rootGroup)
-			},
-			_destroyContainer: function() {
-				ri(this._container), Si(this._container), delete this._container, delete this._rootGroup,
-					delete this._svgSize
-			},
-			_onZoomStart: function() {
-				this._update()
-			},
-			_update: function() {
-				var t, i, e;
-				this._map._animatingZoom && this._bounds || (hn.prototype._update.call(this), i = (t = this
-					._bounds).getSize(), e = this._container, this._svgSize && this._svgSize.equals(
-					i) || (this._svgSize = i, e.setAttribute("width", i.x), e.setAttribute("height",
-					i.y)), vi(e, t.min), e.setAttribute("viewBox", [t.min.x, t.min.y, i.x, i.y]
-					.join(" ")), this.fire("update"))
-			},
-			_initPath: function(t) {
-				var i = t._path = dn("path");
-				t.options.className && ci(i, t.options.className), t.options.interactive && ci(i,
-					"leaflet-interactive"), this._updateStyle(t), this._layers[m(t)] = t
-			},
-			_addPath: function(t) {
-				this._rootGroup || this._initContainer(), this._rootGroup.appendChild(t._path), t
-					.addInteractiveTarget(t._path)
-			},
-			_removePath: function(t) {
-				ri(t._path), t.removeInteractiveTarget(t._path), delete this._layers[m(t)]
-			},
-			_updatePath: function(t) {
-				t._project(), t._update()
-			},
-			_updateStyle: function(t) {
-				var i = t._path,
-					e = t.options;
-				i && (e.stroke ? (i.setAttribute("stroke", e.color), i.setAttribute("stroke-opacity", e
-							.opacity), i.setAttribute("stroke-width", e.weight), i.setAttribute(
-							"stroke-linecap", e.lineCap), i.setAttribute("stroke-linejoin", e.lineJoin),
-						e.dashArray ? i.setAttribute("stroke-dasharray", e.dashArray) : i
-						.removeAttribute("stroke-dasharray"), e.dashOffset ? i.setAttribute(
-							"stroke-dashoffset", e.dashOffset) : i.removeAttribute("stroke-dashoffset")
-						) : i.setAttribute("stroke", "none"), e.fill ? (i.setAttribute("fill", e
-							.fillColor || e.color), i.setAttribute("fill-opacity", e.fillOpacity), i
-						.setAttribute("fill-rule", e.fillRule || "evenodd")) : i.setAttribute("fill",
-						"none"))
-			},
-			_updatePoly: function(t, i) {
-				this._setPath(t, $(t._parts, i))
-			},
-			_updateCircle: function(t) {
-				var i = t._point,
-					e = Math.max(Math.round(t._radius), 1),
-					n = "a" + e + "," + (Math.max(Math.round(t._radiusY), 1) || e) + " 0 1,0 ",
-					o = t._empty() ? "M0 0" : "M" + (i.x - e) + "," + i.y + n + 2 * e + ",0 " + n + 2 * -e +
-					",0 ";
-				this._setPath(t, o)
-			},
-			_setPath: function(t, i) {
-				t._path.setAttribute("d", i)
-			},
-			_bringToFront: function(t) {
-				hi(t._path)
-			},
-			_bringToBack: function(t) {
-				ui(t._path)
-			}
-		});
-
-	function mn(t) {
-		return Zt || Et ? new pn(t) : null
-	}
-	Et && pn.include(_n), Ki.include({
-		getRenderer: function(t) {
-			var i = (i = t.options.renderer || this._getPaneRenderer(t.options.pane) || this.options
-				.renderer || this._renderer) || (this._renderer = this._createRenderer());
-			return this.hasLayer(i) || this.addLayer(i), i
-		},
-		_getPaneRenderer: function(t) {
-			if ("overlayPane" === t || void 0 === t) return !1;
-			var i = this._paneRenderers[t];
-			return void 0 === i && (i = this._createRenderer({
-				pane: t
-			}), this._paneRenderers[t] = i), i
-		},
-		_createRenderer: function(t) {
-			return this.options.preferCanvas && ln(t) || mn(t)
-		}
-	});
-	var fn = Re.extend({
-		initialize: function(t, i) {
-			Re.prototype.initialize.call(this, this._boundsToLatLngs(t), i)
-		},
-		setBounds: function(t) {
-			return this.setLatLngs(this._boundsToLatLngs(t))
-		},
-		_boundsToLatLngs: function(t) {
-			return [(t = N(t)).getSouthWest(), t.getNorthWest(), t.getNorthEast(), t.getSouthEast()]
-		}
-	});
-	pn.create = dn, pn.pointsToPath = $, Ne.geometryToLayer = De, Ne.coordsToLatLng = We, Ne.coordsToLatLngs = He,
-		Ne.latLngToCoords = Fe, Ne.latLngsToCoords = Ue, Ne.getFeature = Ve, Ne.asFeature = qe, Ki.mergeOptions({
-			boxZoom: !0
-		});
-	var gn = ie.extend({
-		initialize: function(t) {
-			this._map = t, this._container = t._container, this._pane = t._panes.overlayPane, this
-				._resetStateTimeout = 0, t.on("unload", this._destroy, this)
-		},
-		addHooks: function() {
-			zi(this._container, "mousedown", this._onMouseDown, this)
-		},
-		removeHooks: function() {
-			Si(this._container, "mousedown", this._onMouseDown, this)
-		},
-		moved: function() {
-			return this._moved
-		},
-		_destroy: function() {
-			ri(this._pane), delete this._pane
-		},
-		_resetState: function() {
-			this._resetStateTimeout = 0, this._moved = !1
-		},
-		_clearDeferredResetState: function() {
-			0 !== this._resetStateTimeout && (clearTimeout(this._resetStateTimeout), this
-				._resetStateTimeout = 0)
-		},
-		_onMouseDown: function(t) {
-			if (!t.shiftKey || 1 !== t.which && 1 !== t.button) return !1;
-			this._clearDeferredResetState(), this._resetState(), Xt(), xi(), this._startPoint = this
-				._map.mouseEventToContainerPoint(t), zi(document, {
-					contextmenu: Ni,
-					mousemove: this._onMouseMove,
-					mouseup: this._onMouseUp,
-					keydown: this._onKeyDown
-				}, this)
-		},
-		_onMouseMove: function(t) {
-			this._moved || (this._moved = !0, this._box = si("div", "leaflet-zoom-box", this
-				._container), ci(this._container, "leaflet-crosshair"), this._map.fire(
-					"boxzoomstart")), this._point = this._map.mouseEventToContainerPoint(t);
-			var i = new I(this._point, this._startPoint),
-				e = i.getSize();
-			vi(this._box, i.min), this._box.style.width = e.x + "px", this._box.style.height = e.y +
-				"px"
-		},
-		_finish: function() {
-			this._moved && (ri(this._box), _i(this._container, "leaflet-crosshair")), Jt(), wi(), Si(
-				document, {
-					contextmenu: Ni,
-					mousemove: this._onMouseMove,
-					mouseup: this._onMouseUp,
-					keydown: this._onKeyDown
-				}, this)
-		},
-		_onMouseUp: function(t) {
-			var i;
-			1 !== t.which && 1 !== t.button || (this._finish(), this._moved && (this
-				._clearDeferredResetState(), this._resetStateTimeout = setTimeout(p(this
-					._resetState, this), 0), i = new R(this._map.containerPointToLatLng(this
-					._startPoint), this._map.containerPointToLatLng(this._point)), this._map
-				.fitBounds(i).fire("boxzoomend", {
-					boxZoomBounds: i
-				})))
-		},
-		_onKeyDown: function(t) {
-			27 === t.keyCode && this._finish()
-		}
-	});
-	Ki.addInitHook("addHandler", "boxZoom", gn), Ki.mergeOptions({
-		doubleClickZoom: !0
-	});
-	var vn = ie.extend({
-		addHooks: function() {
-			this._map.on("dblclick", this._onDoubleClick, this)
-		},
-		removeHooks: function() {
-			this._map.off("dblclick", this._onDoubleClick, this)
-		},
-		_onDoubleClick: function(t) {
-			var i = this._map,
-				e = i.getZoom(),
-				n = i.options.zoomDelta,
-				o = t.originalEvent.shiftKey ? e - n : e + n;
-			"center" === i.options.doubleClickZoom ? i.setZoom(o) : i.setZoomAround(t.containerPoint, o)
-		}
-	});
-	Ki.addInitHook("addHandler", "doubleClickZoom", vn), Ki.mergeOptions({
-		dragging: !0,
-		inertia: !st,
-		inertiaDeceleration: 3400,
-		inertiaMaxSpeed: 1 / 0,
-		easeLinearity: .2,
-		worldCopyJump: !1,
-		maxBoundsViscosity: 0
-	});
-	var yn = ie.extend({
-		addHooks: function() {
-			var t;
-			this._draggable || (t = this._map, this._draggable = new ae(t._mapPane, t._container), this
-					._draggable.on({
-						dragstart: this._onDragStart,
-						drag: this._onDrag,
-						dragend: this._onDragEnd
-					}, this), this._draggable.on("predrag", this._onPreDragLimit, this), t.options
-					.worldCopyJump && (this._draggable.on("predrag", this._onPreDragWrap, this), t.on(
-						"zoomend", this._onZoomEnd, this), t.whenReady(this._onZoomEnd, this))), ci(this
-					._map._container, "leaflet-grab leaflet-touch-drag"), this._draggable.enable(), this
-				._positions = [], this._times = []
-		},
-		removeHooks: function() {
-			_i(this._map._container, "leaflet-grab"), _i(this._map._container, "leaflet-touch-drag"),
-				this._draggable.disable()
-		},
-		moved: function() {
-			return this._draggable && this._draggable._moved
-		},
-		moving: function() {
-			return this._draggable && this._draggable._moving
-		},
-		_onDragStart: function() {
-			var t, i = this._map;
-			i._stop(), this._map.options.maxBounds && this._map.options.maxBoundsViscosity ? (t = N(this
-				._map.options.maxBounds), this._offsetLimit = O(this._map
-				.latLngToContainerPoint(t.getNorthWest()).multiplyBy(-1), this._map
-				.latLngToContainerPoint(t.getSouthEast()).multiplyBy(-1).add(this._map
-				.getSize())), this._viscosity = Math.min(1, Math.max(0, this._map.options
-				.maxBoundsViscosity))) : this._offsetLimit = null, i.fire("movestart").fire(
-				"dragstart"), i.options.inertia && (this._positions = [], this._times = [])
-		},
-		_onDrag: function(t) {
-			var i, e;
-			this._map.options.inertia && (i = this._lastTime = +new Date, e = this._lastPos = this
-				._draggable._absPos || this._draggable._newPos, this._positions.push(e), this._times
-				.push(i), this._prunePositions(i)), this._map.fire("move", t).fire("drag", t)
-		},
-		_prunePositions: function(t) {
-			for (; 1 < this._positions.length && 50 < t - this._times[0];) this._positions.shift(), this
-				._times.shift()
-		},
-		_onZoomEnd: function() {
-			var t = this._map.getSize().divideBy(2),
-				i = this._map.latLngToLayerPoint([0, 0]);
-			this._initialWorldOffset = i.subtract(t).x, this._worldWidth = this._map
-				.getPixelWorldBounds().getSize().x
-		},
-		_viscousLimit: function(t, i) {
-			return t - (t - i) * this._viscosity
-		},
-		_onPreDragLimit: function() {
-			var t, i;
-			this._viscosity && this._offsetLimit && (t = this._draggable._newPos.subtract(this
-					._draggable._startPos), i = this._offsetLimit, t.x < i.min.x && (t.x = this
-					._viscousLimit(t.x, i.min.x)), t.y < i.min.y && (t.y = this._viscousLimit(t.y, i
-					.min.y)), t.x > i.max.x && (t.x = this._viscousLimit(t.x, i.max.x)), t.y > i.max
-				.y && (t.y = this._viscousLimit(t.y, i.max.y)), this._draggable._newPos = this
-				._draggable._startPos.add(t))
-		},
-		_onPreDragWrap: function() {
-			var t = this._worldWidth,
-				i = Math.round(t / 2),
-				e = this._initialWorldOffset,
-				n = this._draggable._newPos.x,
-				o = (n - i + e) % t + i - e,
-				s = (n + i + e) % t - i - e,
-				r = Math.abs(o + e) < Math.abs(s + e) ? o : s;
-			this._draggable._absPos = this._draggable._newPos.clone(), this._draggable._newPos.x = r
-		},
-		_onDragEnd: function(t) {
-			var i, e, n, o, s, r, a, h, u, l = this._map,
-				c = l.options,
-				_ = !c.inertia || this._times.length < 2;
-			l.fire("dragend", t), _ ? l.fire("moveend") : (this._prunePositions(+new Date), i = this
-				._lastPos.subtract(this._positions[0]), e = (this._lastTime - this._times[0]) / 1e3,
-				n = c.easeLinearity, s = (o = i.multiplyBy(n / e)).distanceTo([0, 0]), r = Math.min(
-					c.inertiaMaxSpeed, s), a = o.multiplyBy(r / s), h = r / (c.inertiaDeceleration *
-					n), (u = a.multiplyBy(-h / 2).round()).x || u.y ? (u = l._limitOffset(u, l
-					.options.maxBounds), M(function() {
-					l.panBy(u, {
-						duration: h,
-						easeLinearity: n,
-						noMoveStart: !0,
-						animate: !0
-					})
-				})) : l.fire("moveend"))
-		}
-	});
-	Ki.addInitHook("addHandler", "dragging", yn), Ki.mergeOptions({
-		keyboard: !0,
-		keyboardPanDelta: 80
-	});
-	var xn = ie.extend({
-		keyCodes: {
-			left: [37],
-			right: [39],
-			down: [40],
-			up: [38],
-			zoomIn: [187, 107, 61, 171],
-			zoomOut: [189, 109, 54, 173]
-		},
-		initialize: function(t) {
-			this._map = t, this._setPanDelta(t.options.keyboardPanDelta), this._setZoomDelta(t.options
-				.zoomDelta)
-		},
-		addHooks: function() {
-			var t = this._map._container;
-			t.tabIndex <= 0 && (t.tabIndex = "0"), zi(t, {
-				focus: this._onFocus,
-				blur: this._onBlur,
-				mousedown: this._onMouseDown
-			}, this), this._map.on({
-				focus: this._addHooks,
-				blur: this._removeHooks
-			}, this)
-		},
-		removeHooks: function() {
-			this._removeHooks(), Si(this._map._container, {
-				focus: this._onFocus,
-				blur: this._onBlur,
-				mousedown: this._onMouseDown
-			}, this), this._map.off({
-				focus: this._addHooks,
-				blur: this._removeHooks
-			}, this)
-		},
-		_onMouseDown: function() {
-			var t, i, e, n;
-			this._focused || (t = document.body, i = document.documentElement, e = t.scrollTop || i
-				.scrollTop, n = t.scrollLeft || i.scrollLeft, this._map._container.focus(), window
-				.scrollTo(n, e))
-		},
-		_onFocus: function() {
-			this._focused = !0, this._map.fire("focus")
-		},
-		_onBlur: function() {
-			this._focused = !1, this._map.fire("blur")
-		},
-		_setPanDelta: function(t) {
-			for (var i = this._panKeys = {}, e = this.keyCodes, n = 0, o = e.left.length; n < o; n++) i[
-				e.left[n]] = [-1 * t, 0];
-			for (n = 0, o = e.right.length; n < o; n++) i[e.right[n]] = [t, 0];
-			for (n = 0, o = e.down.length; n < o; n++) i[e.down[n]] = [0, t];
-			for (n = 0, o = e.up.length; n < o; n++) i[e.up[n]] = [0, -1 * t]
-		},
-		_setZoomDelta: function(t) {
-			for (var i = this._zoomKeys = {}, e = this.keyCodes, n = 0, o = e.zoomIn.length; n < o; n++)
-				i[e.zoomIn[n]] = t;
-			for (n = 0, o = e.zoomOut.length; n < o; n++) i[e.zoomOut[n]] = -t
-		},
-		_addHooks: function() {
-			zi(document, "keydown", this._onKeyDown, this)
-		},
-		_removeHooks: function() {
-			Si(document, "keydown", this._onKeyDown, this)
-		},
-		_onKeyDown: function(t) {
-			if (!(t.altKey || t.ctrlKey || t.metaKey)) {
-				var i, e = t.keyCode,
-					n = this._map;
-				if (e in this._panKeys) n._panAnim && n._panAnim._inProgress || (i = this._panKeys[e], t
-					.shiftKey && (i = A(i).multiplyBy(3)), n.panBy(i), n.options.maxBounds && n
-					.panInsideBounds(n.options.maxBounds));
-				else if (e in this._zoomKeys) n.setZoom(n.getZoom() + (t.shiftKey ? 3 : 1) * this
-					._zoomKeys[e]);
-				else {
-					if (27 !== e || !n._popup || !n._popup.options.closeOnEscapeKey) return;
-					n.closePopup()
-				}
-				Ni(t)
-			}
-		}
-	});
-	Ki.addInitHook("addHandler", "keyboard", xn), Ki.mergeOptions({
-		scrollWheelZoom: !0,
-		wheelDebounceTime: 40,
-		wheelPxPerZoomLevel: 60
-	});
-	var wn = ie.extend({
-		addHooks: function() {
-			zi(this._map._container, "wheel", this._onWheelScroll, this), this._delta = 0
-		},
-		removeHooks: function() {
-			Si(this._map._container, "wheel", this._onWheelScroll, this)
-		},
-		_onWheelScroll: function(t) {
-			var i = Wi(t),
-				e = this._map.options.wheelDebounceTime;
-			this._delta += i, this._lastMousePos = this._map.mouseEventToContainerPoint(t), this
-				._startTime || (this._startTime = +new Date);
-			var n = Math.max(e - (new Date - this._startTime), 0);
-			clearTimeout(this._timer), this._timer = setTimeout(p(this._performZoom, this), n), Ni(t)
-		},
-		_performZoom: function() {
-			var t = this._map,
-				i = t.getZoom(),
-				e = this._map.options.zoomSnap || 0;
-			t._stop();
-			var n = this._delta / (4 * this._map.options.wheelPxPerZoomLevel),
-				o = 4 * Math.log(2 / (1 + Math.exp(-Math.abs(n)))) / Math.LN2,
-				s = e ? Math.ceil(o / e) * e : o,
-				r = t._limitZoom(i + (0 < this._delta ? s : -s)) - i;
-			this._delta = 0, this._startTime = null, r && ("center" === t.options.scrollWheelZoom ? t
-				.setZoom(i + r) : t.setZoomAround(this._lastMousePos, i + r))
-		}
-	});
-	Ki.addInitHook("addHandler", "scrollWheelZoom", wn), Ki.mergeOptions({
-		tap: !0,
-		tapTolerance: 15
-	});
-	var Pn = ie.extend({
-		addHooks: function() {
-			zi(this._map._container, "touchstart", this._onDown, this)
-		},
-		removeHooks: function() {
-			Si(this._map._container, "touchstart", this._onDown, this)
-		},
-		_onDown: function(t) {
-			if (t.touches) {
-				if (Ri(t), this._fireClick = !0, 1 < t.touches.length) return this._fireClick = !1,
-					void clearTimeout(this._holdTimeout);
-				var i = t.touches[0],
-					e = i.target;
-				this._startPos = this._newPos = new k(i.clientX, i.clientY), e.tagName && "a" === e
-					.tagName.toLowerCase() && ci(e, "leaflet-active"), this._holdTimeout = setTimeout(p(
-						function() {
-							this._isTapValid() && (this._fireClick = !1, this._onUp(), this
-								._simulateEvent("contextmenu", i))
-						}, this), 1e3), this._simulateEvent("mousedown", i), zi(document, {
-						touchmove: this._onMove,
-						touchend: this._onUp
-					}, this)
-			}
-		},
-		_onUp: function(t) {
-			var i, e;
-			clearTimeout(this._holdTimeout), Si(document, {
-				touchmove: this._onMove,
-				touchend: this._onUp
-			}, this), this._fireClick && t && t.changedTouches && ((e = (i = t.changedTouches[0])
-					.target) && e.tagName && "a" === e.tagName.toLowerCase() && _i(e,
-					"leaflet-active"), this._simulateEvent("mouseup", i), this._isTapValid() && this
-				._simulateEvent("click", i))
-		},
-		_isTapValid: function() {
-			return this._newPos.distanceTo(this._startPos) <= this._map.options.tapTolerance
-		},
-		_onMove: function(t) {
-			var i = t.touches[0];
-			this._newPos = new k(i.clientX, i.clientY), this._simulateEvent("mousemove", i)
-		},
-		_simulateEvent: function(t, i) {
-			var e = document.createEvent("MouseEvents");
-			e._simulated = !0, i.target._simulatedClick = !0, e.initMouseEvent(t, !0, !0, window, 1, i
-					.screenX, i.screenY, i.clientX, i.clientY, !1, !1, !1, !1, 0, null), i.target
-				.dispatchEvent(e)
-		}
-	});
-	!bt || Lt && !ct || Ki.addInitHook("addHandler", "tap", Pn), Ki.mergeOptions({
-		touchZoom: bt && !st,
-		bounceAtZoomLimits: !0
-	});
-	var Ln = ie.extend({
-		addHooks: function() {
-			ci(this._map._container, "leaflet-touch-zoom"), zi(this._map._container, "touchstart", this
-				._onTouchStart, this)
-		},
-		removeHooks: function() {
-			_i(this._map._container, "leaflet-touch-zoom"), Si(this._map._container, "touchstart", this
-				._onTouchStart, this)
-		},
-		_onTouchStart: function(t) {
-			var i, e, n = this._map;
-			!t.touches || 2 !== t.touches.length || n._animatingZoom || this._zooming || (i = n
-				.mouseEventToContainerPoint(t.touches[0]), e = n.mouseEventToContainerPoint(t
-					.touches[1]), this._centerPoint = n.getSize()._divideBy(2), this._startLatLng =
-				n.containerPointToLatLng(this._centerPoint), "center" !== n.options.touchZoom && (
-					this._pinchStartLatLng = n.containerPointToLatLng(i.add(e)._divideBy(2))), this
-				._startDist = i.distanceTo(e), this._startZoom = n.getZoom(), this._moved = !1, this
-				._zooming = !0, n._stop(), zi(document, "touchmove", this._onTouchMove, this), zi(
-					document, "touchend", this._onTouchEnd, this), Ri(t))
-		},
-		_onTouchMove: function(t) {
-			if (t.touches && 2 === t.touches.length && this._zooming) {
-				var i = this._map,
-					e = i.mouseEventToContainerPoint(t.touches[0]),
-					n = i.mouseEventToContainerPoint(t.touches[1]),
-					o = e.distanceTo(n) / this._startDist;
-				if (this._zoom = i.getScaleZoom(o, this._startZoom), !i.options.bounceAtZoomLimits && (
-						this._zoom < i.getMinZoom() && o < 1 || this._zoom > i.getMaxZoom() && 1 < o) &&
-					(this._zoom = i._limitZoom(this._zoom)), "center" === i.options.touchZoom) {
-					if (this._center = this._startLatLng, 1 == o) return
-				} else {
-					var s = e._add(n)._divideBy(2)._subtract(this._centerPoint);
-					if (1 == o && 0 === s.x && 0 === s.y) return;
-					this._center = i.unproject(i.project(this._pinchStartLatLng, this._zoom).subtract(
-						s), this._zoom)
-				}
-				this._moved || (i._moveStart(!0, !1), this._moved = !0), z(this._animRequest);
-				var r = p(i._move, i, this._center, this._zoom, {
-					pinch: !0,
-					round: !1
-				});
-				this._animRequest = M(r, this, !0), Ri(t)
-			}
-		},
-		_onTouchEnd: function() {
-			this._moved && this._zooming ? (this._zooming = !1, z(this._animRequest), Si(document,
-						"touchmove", this._onTouchMove, this), Si(document, "touchend", this
-						._onTouchEnd, this), this._map.options.zoomAnimation ? this._map._animateZoom(
-						this._center, this._map._limitZoom(this._zoom), !0, this._map.options.zoomSnap
-						) : this._map._resetView(this._center, this._map._limitZoom(this._zoom))) : this
-				._zooming = !1
-		}
-	});
-	Ki.addInitHook("addHandler", "touchZoom", Ln), Ki.BoxZoom = gn, Ki.DoubleClickZoom = vn, Ki.Drag = yn, Ki
-		.Keyboard = xn, Ki.ScrollWheelZoom = wn, Ki.Tap = Pn, Ki.TouchZoom = Ln, t.version = "1.7.1", t.Control =
-		Xi, t.control = Yi, t.Browser = Bt, t.Evented = E, t.Mixin = ne, t.Util = C, t.Class = S, t.Handler = ie, t
-		.extend = h, t.bind = p, t.stamp = m, t.setOptions = c, t.DomEvent = qi, t.DomUtil = Mi, t.PosAnimation =
-		Gi, t.Draggable = ae, t.LineUtil = fe, t.PolyUtil = ye, t.Point = k, t.point = A, t.Bounds = I, t.bounds =
-		O, t.Transformation = q, t.transformation = G, t.Projection = Pe, t.LatLng = D, t.latLng = j, t
-		.LatLngBounds = R, t.latLngBounds = N, t.CRS = H, t.GeoJSON = Ne, t.geoJSON = Ke, t.geoJson = Ye, t.Layer =
-		Me, t.LayerGroup = ze, t.layerGroup = function(t, i) {
-			return new ze(t, i)
-		}, t.FeatureGroup = Ce, t.featureGroup = function(t, i) {
-			return new Ce(t, i)
-		}, t.ImageOverlay = Xe, t.imageOverlay = function(t, i, e) {
-			return new Xe(t, i, e)
-		}, t.VideoOverlay = Je, t.videoOverlay = function(t, i, e) {
-			return new Je(t, i, e)
-		}, t.SVGOverlay = $e, t.svgOverlay = function(t, i, e) {
-			return new $e(t, i, e)
-		}, t.DivOverlay = Qe, t.Popup = tn, t.popup = function(t, i) {
-			return new tn(t, i)
-		}, t.Tooltip = en, t.tooltip = function(t, i) {
-			return new en(t, i)
-		}, t.Icon = Se, t.icon = function(t) {
-			return new Se(t)
-		}, t.DivIcon = nn, t.divIcon = function(t) {
-			return new nn(t)
-		}, t.Marker = ke, t.marker = function(t, i) {
-			return new ke(t, i)
-		}, t.TileLayer = sn, t.tileLayer = rn, t.GridLayer = on, t.gridLayer = function(t) {
-			return new on(t)
-		}, t.SVG = pn, t.svg = mn, t.Renderer = hn, t.Canvas = un, t.canvas = ln, t.Path = Be, t.CircleMarker = Ae,
-		t.circleMarker = function(t, i) {
-			return new Ae(t, i)
-		}, t.Circle = Ie, t.circle = function(t, i, e) {
-			return new Ie(t, i, e)
-		}, t.Polyline = Oe, t.polyline = function(t, i) {
-			return new Oe(t, i)
-		}, t.Polygon = Re, t.polygon = function(t, i) {
-			return new Re(t, i)
-		}, t.Rectangle = fn, t.rectangle = function(t, i) {
-			return new fn(t, i)
-		}, t.Map = Ki, t.map = function(t, i) {
-			return new Ki(t, i)
-		};
-	var bn = window.L;
-	t.noConflict = function() {
-		return window.L = bn, this
-		
-	}, window.L = t
-});
-//# sourceMappingURL=leaflet.js.map
diff --git a/xcxMapSecurityPosition/lid/leaflet.markercluster-src.js b/xcxMapSecurityPosition/lid/leaflet.markercluster-src.js
deleted file mode 100644
index 67baa89..0000000
--- a/xcxMapSecurityPosition/lid/leaflet.markercluster-src.js
+++ /dev/null
@@ -1,2707 +0,0 @@
-/*
- * Leaflet.markercluster 1.5.0+master.499f71c,
- * Provides Beautiful Animated Marker Clustering functionality for Leaflet, a JS library for interactive maps.
- * https://github.com/Leaflet/Leaflet.markercluster
- * (c) 2012-2017, Dave Leaver, smartrak
- */
-(function (global, factory) {
-	typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
-	typeof define === 'function' && define.amd ? define(['exports'], factory) :
-	(global = global || self, factory((global.Leaflet = global.Leaflet || {}, global.Leaflet.markercluster = {})));
-}(this, function (exports) { 'use strict';
-
-	/*
-	 * L.MarkerClusterGroup extends L.FeatureGroup by clustering the markers contained within
-	 */
-
-	var MarkerClusterGroup = L.MarkerClusterGroup = L.FeatureGroup.extend({
-
-		options: {
-			maxClusterRadius: 80, //A cluster will cover at most this many pixels from its center
-			iconCreateFunction: null,
-			clusterPane: L.Marker.prototype.options.pane,
-
-			spiderfyOnMaxZoom: true,
-			showCoverageOnHover: true,
-			zoomToBoundsOnClick: true,
-			singleMarkerMode: false,
-
-			disableClusteringAtZoom: null,
-
-			// Setting this to false prevents the removal of any clusters outside of the viewpoint, which
-			// is the default behaviour for performance reasons.
-			removeOutsideVisibleBounds: true,
-
-			// Set to false to disable all animations (zoom and spiderfy).
-			// If false, option animateAddingMarkers below has no effect.
-			// If L.DomUtil.TRANSITION is falsy, this option has no effect.
-			animate: true,
-
-			//Whether to animate adding markers after adding the MarkerClusterGroup to the map
-			// If you are adding individual markers set to true, if adding bulk markers leave false for massive performance gains.
-			animateAddingMarkers: false,
-
-			// Make it possible to provide custom function to calculate spiderfy shape positions
-			spiderfyShapePositions: null,
-
-			//Increase to increase the distance away that spiderfied markers appear from the center
-			spiderfyDistanceMultiplier: 1,
-
-			// Make it possible to specify a polyline options on a spider leg
-			spiderLegPolylineOptions: { weight: 1.5, color: '#222', opacity: 0.5 },
-
-			// When bulk adding layers, adds markers in chunks. Means addLayers may not add all the layers in the call, others will be loaded during setTimeouts
-			chunkedLoading: false,
-			chunkInterval: 200, // process markers for a maximum of ~ n milliseconds (then trigger the chunkProgress callback)
-			chunkDelay: 50, // at the end of each interval, give n milliseconds back to system/browser
-			chunkProgress: null, // progress callback: function(processed, total, elapsed) (e.g. for a progress indicator)
-
-			//Options to pass to the L.Polygon constructor
-			polygonOptions: {}
-		},
-
-		initialize: function (options) {
-			L.Util.setOptions(this, options);
-			if (!this.options.iconCreateFunction) {
-				this.options.iconCreateFunction = this._defaultIconCreateFunction;
-			}
-
-			this._featureGroup = L.featureGroup();
-			this._featureGroup.addEventParent(this);
-
-			this._nonPointGroup = L.featureGroup();
-			this._nonPointGroup.addEventParent(this);
-
-			this._inZoomAnimation = 0;
-			this._needsClustering = [];
-			this._needsRemoving = []; //Markers removed while we aren't on the map need to be kept track of
-			//The bounds of the currently shown area (from _getExpandedVisibleBounds) Updated on zoom/move
-			this._currentShownBounds = null;
-
-			this._queue = [];
-
-			this._childMarkerEventHandlers = {
-				'dragstart': this._childMarkerDragStart,
-				'move': this._childMarkerMoved,
-				'dragend': this._childMarkerDragEnd,
-			};
-
-			// Hook the appropriate animation methods.
-			var animate = L.DomUtil.TRANSITION && this.options.animate;
-			L.extend(this, animate ? this._withAnimation : this._noAnimation);
-			// Remember which MarkerCluster class to instantiate (animated or not).
-			this._markerCluster = animate ? L.MarkerCluster : L.MarkerClusterNonAnimated;
-		},
-
-		addLayer: function (layer) {
-
-			if (layer instanceof L.LayerGroup) {
-				return this.addLayers([layer]);
-			}
-
-			//Don't cluster non point data
-			if (!layer.getLatLng) {
-				this._nonPointGroup.addLayer(layer);
-				this.fire('layeradd', { layer: layer });
-				return this;
-			}
-
-			if (!this._map) {
-				this._needsClustering.push(layer);
-				this.fire('layeradd', { layer: layer });
-				return this;
-			}
-
-			if (this.hasLayer(layer)) {
-				return this;
-			}
-
-
-			//If we have already clustered we'll need to add this one to a cluster
-
-			if (this._unspiderfy) {
-				this._unspiderfy();
-			}
-
-			this._addLayer(layer, this._maxZoom);
-			this.fire('layeradd', { layer: layer });
-
-			// Refresh bounds and weighted positions.
-			this._topClusterLevel._recalculateBounds();
-
-			this._refreshClustersIcons();
-
-			//Work out what is visible
-			var visibleLayer = layer,
-			    currentZoom = this._zoom;
-			if (layer.__parent) {
-				while (visibleLayer.__parent._zoom >= currentZoom) {
-					visibleLayer = visibleLayer.__parent;
-				}
-			}
-
-			if (this._currentShownBounds.contains(visibleLayer.getLatLng())) {
-				if (this.options.animateAddingMarkers) {
-					this._animationAddLayer(layer, visibleLayer);
-				} else {
-					this._animationAddLayerNonAnimated(layer, visibleLayer);
-				}
-			}
-			return this;
-		},
-
-		removeLayer: function (layer) {
-
-			if (layer instanceof L.LayerGroup) {
-				return this.removeLayers([layer]);
-			}
-
-			//Non point layers
-			if (!layer.getLatLng) {
-				this._nonPointGroup.removeLayer(layer);
-				this.fire('layerremove', { layer: layer });
-				return this;
-			}
-
-			if (!this._map) {
-				if (!this._arraySplice(this._needsClustering, layer) && this.hasLayer(layer)) {
-					this._needsRemoving.push({ layer: layer, latlng: layer._latlng });
-				}
-				this.fire('layerremove', { layer: layer });
-				return this;
-			}
-
-			if (!layer.__parent) {
-				return this;
-			}
-
-			if (this._unspiderfy) {
-				this._unspiderfy();
-				this._unspiderfyLayer(layer);
-			}
-
-			//Remove the marker from clusters
-			this._removeLayer(layer, true);
-			this.fire('layerremove', { layer: layer });
-
-			// Refresh bounds and weighted positions.
-			this._topClusterLevel._recalculateBounds();
-
-			this._refreshClustersIcons();
-
-			layer.off(this._childMarkerEventHandlers, this);
-
-			if (this._featureGroup.hasLayer(layer)) {
-				this._featureGroup.removeLayer(layer);
-				if (layer.clusterShow) {
-					layer.clusterShow();
-				}
-			}
-
-			return this;
-		},
-
-		//Takes an array of markers and adds them in bulk
-		addLayers: function (layersArray, skipLayerAddEvent) {
-			if (!L.Util.isArray(layersArray)) {
-				return this.addLayer(layersArray);
-			}
-
-			var fg = this._featureGroup,
-			    npg = this._nonPointGroup,
-			    chunked = this.options.chunkedLoading,
-			    chunkInterval = this.options.chunkInterval,
-			    chunkProgress = this.options.chunkProgress,
-			    l = layersArray.length,
-			    offset = 0,
-			    originalArray = true,
-			    m;
-
-			if (this._map) {
-				var started = (new Date()).getTime();
-				var process = L.bind(function () {
-					var start = (new Date()).getTime();
-
-					// Make sure to unspiderfy before starting to add some layers
-					if (this._map && this._unspiderfy) {
-						this._unspiderfy();
-					}
-
-					for (; offset < l; offset++) {
-						if (chunked && offset % 200 === 0) {
-							// every couple hundred markers, instrument the time elapsed since processing started:
-							var elapsed = (new Date()).getTime() - start;
-							if (elapsed > chunkInterval) {
-								break; // been working too hard, time to take a break :-)
-							}
-						}
-
-						m = layersArray[offset];
-
-						// Group of layers, append children to layersArray and skip.
-						// Side effects:
-						// - Total increases, so chunkProgress ratio jumps backward.
-						// - Groups are not included in this group, only their non-group child layers (hasLayer).
-						// Changing array length while looping does not affect performance in current browsers:
-						// http://jsperf.com/for-loop-changing-length/6
-						if (m instanceof L.LayerGroup) {
-							if (originalArray) {
-								layersArray = layersArray.slice();
-								originalArray = false;
-							}
-							this._extractNonGroupLayers(m, layersArray);
-							l = layersArray.length;
-							continue;
-						}
-
-						//Not point data, can't be clustered
-						if (!m.getLatLng) {
-							npg.addLayer(m);
-							if (!skipLayerAddEvent) {
-								this.fire('layeradd', { layer: m });
-							}
-							continue;
-						}
-
-						if (this.hasLayer(m)) {
-							continue;
-						}
-
-						this._addLayer(m, this._maxZoom);
-						if (!skipLayerAddEvent) {
-							this.fire('layeradd', { layer: m });
-						}
-
-						//If we just made a cluster of size 2 then we need to remove the other marker from the map (if it is) or we never will
-						if (m.__parent) {
-							if (m.__parent.getChildCount() === 2) {
-								var markers = m.__parent.getAllChildMarkers(),
-								    otherMarker = markers[0] === m ? markers[1] : markers[0];
-								fg.removeLayer(otherMarker);
-							}
-						}
-					}
-
-					if (chunkProgress) {
-						// report progress and time elapsed:
-						chunkProgress(offset, l, (new Date()).getTime() - started);
-					}
-
-					// Completed processing all markers.
-					if (offset === l) {
-
-						// Refresh bounds and weighted positions.
-						this._topClusterLevel._recalculateBounds();
-
-						this._refreshClustersIcons();
-
-						this._topClusterLevel._recursivelyAddChildrenToMap(null, this._zoom, this._currentShownBounds);
-					} else {
-						setTimeout(process, this.options.chunkDelay);
-					}
-				}, this);
-
-				process();
-			} else {
-				var needsClustering = this._needsClustering;
-
-				for (; offset < l; offset++) {
-					m = layersArray[offset];
-
-					// Group of layers, append children to layersArray and skip.
-					if (m instanceof L.LayerGroup) {
-						if (originalArray) {
-							layersArray = layersArray.slice();
-							originalArray = false;
-						}
-						this._extractNonGroupLayers(m, layersArray);
-						l = layersArray.length;
-						continue;
-					}
-
-					//Not point data, can't be clustered
-					if (!m.getLatLng) {
-						npg.addLayer(m);
-						continue;
-					}
-
-					if (this.hasLayer(m)) {
-						continue;
-					}
-
-					needsClustering.push(m);
-				}
-			}
-			return this;
-		},
-
-		//Takes an array of markers and removes them in bulk
-		removeLayers: function (layersArray) {
-			var i, m,
-			    l = layersArray.length,
-			    fg = this._featureGroup,
-			    npg = this._nonPointGroup,
-			    originalArray = true;
-
-			if (!this._map) {
-				for (i = 0; i < l; i++) {
-					m = layersArray[i];
-
-					// Group of layers, append children to layersArray and skip.
-					if (m instanceof L.LayerGroup) {
-						if (originalArray) {
-							layersArray = layersArray.slice();
-							originalArray = false;
-						}
-						this._extractNonGroupLayers(m, layersArray);
-						l = layersArray.length;
-						continue;
-					}
-
-					this._arraySplice(this._needsClustering, m);
-					npg.removeLayer(m);
-					if (this.hasLayer(m)) {
-						this._needsRemoving.push({ layer: m, latlng: m._latlng });
-					}
-					this.fire('layerremove', { layer: m });
-				}
-				return this;
-			}
-
-			if (this._unspiderfy) {
-				this._unspiderfy();
-
-				// Work on a copy of the array, so that next loop is not affected.
-				var layersArray2 = layersArray.slice(),
-				    l2 = l;
-				for (i = 0; i < l2; i++) {
-					m = layersArray2[i];
-
-					// Group of layers, append children to layersArray and skip.
-					if (m instanceof L.LayerGroup) {
-						this._extractNonGroupLayers(m, layersArray2);
-						l2 = layersArray2.length;
-						continue;
-					}
-
-					this._unspiderfyLayer(m);
-				}
-			}
-
-			for (i = 0; i < l; i++) {
-				m = layersArray[i];
-
-				// Group of layers, append children to layersArray and skip.
-				if (m instanceof L.LayerGroup) {
-					if (originalArray) {
-						layersArray = layersArray.slice();
-						originalArray = false;
-					}
-					this._extractNonGroupLayers(m, layersArray);
-					l = layersArray.length;
-					continue;
-				}
-
-				if (!m.__parent) {
-					npg.removeLayer(m);
-					this.fire('layerremove', { layer: m });
-					continue;
-				}
-
-				this._removeLayer(m, true, true);
-				this.fire('layerremove', { layer: m });
-
-				if (fg.hasLayer(m)) {
-					fg.removeLayer(m);
-					if (m.clusterShow) {
-						m.clusterShow();
-					}
-				}
-			}
-
-			// Refresh bounds and weighted positions.
-			this._topClusterLevel._recalculateBounds();
-
-			this._refreshClustersIcons();
-
-			//Fix up the clusters and markers on the map
-			this._topClusterLevel._recursivelyAddChildrenToMap(null, this._zoom, this._currentShownBounds);
-
-			return this;
-		},
-
-		//Removes all layers from the MarkerClusterGroup
-		clearLayers: function () {
-			//Need our own special implementation as the LayerGroup one doesn't work for us
-
-			//If we aren't on the map (yet), blow away the markers we know of
-			if (!this._map) {
-				this._needsClustering = [];
-				this._needsRemoving = [];
-				delete this._gridClusters;
-				delete this._gridUnclustered;
-			}
-
-			if (this._noanimationUnspiderfy) {
-				this._noanimationUnspiderfy();
-			}
-
-			//Remove all the visible layers
-			this._featureGroup.clearLayers();
-			this._nonPointGroup.clearLayers();
-
-			this.eachLayer(function (marker) {
-				marker.off(this._childMarkerEventHandlers, this);
-				delete marker.__parent;
-			}, this);
-
-			if (this._map) {
-				//Reset _topClusterLevel and the DistanceGrids
-				this._generateInitialClusters();
-			}
-
-			return this;
-		},
-
-		//Override FeatureGroup.getBounds as it doesn't work
-		getBounds: function () {
-			var bounds = new L.LatLngBounds();
-
-			if (this._topClusterLevel) {
-				bounds.extend(this._topClusterLevel._bounds);
-			}
-
-			for (var i = this._needsClustering.length - 1; i >= 0; i--) {
-				bounds.extend(this._needsClustering[i].getLatLng());
-			}
-
-			bounds.extend(this._nonPointGroup.getBounds());
-
-			return bounds;
-		},
-
-		//Overrides LayerGroup.eachLayer
-		eachLayer: function (method, context) {
-			var markers = this._needsClustering.slice(),
-				needsRemoving = this._needsRemoving,
-				thisNeedsRemoving, i, j;
-
-			if (this._topClusterLevel) {
-				this._topClusterLevel.getAllChildMarkers(markers);
-			}
-
-			for (i = markers.length - 1; i >= 0; i--) {
-				thisNeedsRemoving = true;
-
-				for (j = needsRemoving.length - 1; j >= 0; j--) {
-					if (needsRemoving[j].layer === markers[i]) {
-						thisNeedsRemoving = false;
-						break;
-					}
-				}
-
-				if (thisNeedsRemoving) {
-					method.call(context, markers[i]);
-				}
-			}
-
-			this._nonPointGroup.eachLayer(method, context);
-		},
-
-		//Overrides LayerGroup.getLayers
-		getLayers: function () {
-			var layers = [];
-			this.eachLayer(function (l) {
-				layers.push(l);
-			});
-			return layers;
-		},
-
-		//Overrides LayerGroup.getLayer, WARNING: Really bad performance
-		getLayer: function (id) {
-			var result = null;
-
-			id = parseInt(id, 10);
-
-			this.eachLayer(function (l) {
-				if (L.stamp(l) === id) {
-					result = l;
-				}
-			});
-
-			return result;
-		},
-
-		//Returns true if the given layer is in this MarkerClusterGroup
-		hasLayer: function (layer) {
-			if (!layer) {
-				return false;
-			}
-
-			var i, anArray = this._needsClustering;
-
-			for (i = anArray.length - 1; i >= 0; i--) {
-				if (anArray[i] === layer) {
-					return true;
-				}
-			}
-
-			anArray = this._needsRemoving;
-			for (i = anArray.length - 1; i >= 0; i--) {
-				if (anArray[i].layer === layer) {
-					return false;
-				}
-			}
-
-			return !!(layer.__parent && layer.__parent._group === this) || this._nonPointGroup.hasLayer(layer);
-		},
-
-		//Zoom down to show the given layer (spiderfying if necessary) then calls the callback
-		zoomToShowLayer: function (layer, callback) {
-
-			var map = this._map;
-
-			if (typeof callback !== 'function') {
-				callback = function () {};
-			}
-
-			var showMarker = function () {
-				// Assumes that map.hasLayer checks for direct appearance on map, not recursively calling
-				// hasLayer on Layer Groups that are on map (typically not calling this MarkerClusterGroup.hasLayer, which would always return true)
-				if ((map.hasLayer(layer) || map.hasLayer(layer.__parent)) && !this._inZoomAnimation) {
-					this._map.off('moveend', showMarker, this);
-					this.off('animationend', showMarker, this);
-
-					if (map.hasLayer(layer)) {
-						callback();
-					} else if (layer.__parent._icon) {
-						this.once('spiderfied', callback, this);
-						layer.__parent.spiderfy();
-					}
-				}
-			};
-
-			if (layer._icon && this._map.getBounds().contains(layer.getLatLng())) {
-				//Layer is visible ond on screen, immediate return
-				callback();
-			} else if (layer.__parent._zoom < Math.round(this._map._zoom)) {
-				//Layer should be visible at this zoom level. It must not be on screen so just pan over to it
-				this._map.on('moveend', showMarker, this);
-				this._map.panTo(layer.getLatLng());
-			} else {
-				this._map.on('moveend', showMarker, this);
-				this.on('animationend', showMarker, this);
-				layer.__parent.zoomToBounds();
-			}
-		},
-
-		//Overrides FeatureGroup.onAdd
-		onAdd: function (map) {
-			this._map = map;
-			var i, l, layer;
-
-			if (!isFinite(this._map.getMaxZoom())) {
-				throw "Map has no maxZoom specified";
-			}
-
-			this._featureGroup.addTo(map);
-			this._nonPointGroup.addTo(map);
-
-			if (!this._gridClusters) {
-				this._generateInitialClusters();
-			}
-
-			this._maxLat = map.options.crs.projection.MAX_LATITUDE;
-
-			//Restore all the positions as they are in the MCG before removing them
-			for (i = 0, l = this._needsRemoving.length; i < l; i++) {
-				layer = this._needsRemoving[i];
-				layer.newlatlng = layer.layer._latlng;
-				layer.layer._latlng = layer.latlng;
-			}
-			//Remove them, then restore their new positions
-			for (i = 0, l = this._needsRemoving.length; i < l; i++) {
-				layer = this._needsRemoving[i];
-				this._removeLayer(layer.layer, true);
-				layer.layer._latlng = layer.newlatlng;
-			}
-			this._needsRemoving = [];
-
-			//Remember the current zoom level and bounds
-			this._zoom = Math.round(this._map._zoom);
-			this._currentShownBounds = this._getExpandedVisibleBounds();
-
-			this._map.on('zoomend', this._zoomEnd, this);
-			this._map.on('moveend', this._moveEnd, this);
-
-			if (this._spiderfierOnAdd) { //TODO FIXME: Not sure how to have spiderfier add something on here nicely
-				this._spiderfierOnAdd();
-			}
-
-			this._bindEvents();
-
-			//Actually add our markers to the map:
-			l = this._needsClustering;
-			this._needsClustering = [];
-			this.addLayers(l, true);
-		},
-
-		//Overrides FeatureGroup.onRemove
-		onRemove: function (map) {
-			map.off('zoomend', this._zoomEnd, this);
-			map.off('moveend', this._moveEnd, this);
-
-			this._unbindEvents();
-
-			//In case we are in a cluster animation
-			this._map._mapPane.className = this._map._mapPane.className.replace(' leaflet-cluster-anim', '');
-
-			if (this._spiderfierOnRemove) { //TODO FIXME: Not sure how to have spiderfier add something on here nicely
-				this._spiderfierOnRemove();
-			}
-
-			delete this._maxLat;
-
-			//Clean up all the layers we added to the map
-			this._hideCoverage();
-			this._featureGroup.remove();
-			this._nonPointGroup.remove();
-
-			this._featureGroup.clearLayers();
-
-			this._map = null;
-		},
-
-		getVisibleParent: function (marker) {
-			var vMarker = marker;
-			while (vMarker && !vMarker._icon) {
-				vMarker = vMarker.__parent;
-			}
-			return vMarker || null;
-		},
-
-		//Remove the given object from the given array
-		_arraySplice: function (anArray, obj) {
-			for (var i = anArray.length - 1; i >= 0; i--) {
-				if (anArray[i] === obj) {
-					anArray.splice(i, 1);
-					return true;
-				}
-			}
-		},
-
-		/**
-		 * Removes a marker from all _gridUnclustered zoom levels, starting at the supplied zoom.
-		 * @param marker to be removed from _gridUnclustered.
-		 * @param z integer bottom start zoom level (included)
-		 * @private
-		 */
-		_removeFromGridUnclustered: function (marker, z) {
-			var map = this._map,
-			    gridUnclustered = this._gridUnclustered,
-				minZoom = Math.floor(this._map.getMinZoom());
-
-			for (; z >= minZoom; z--) {
-				if (!gridUnclustered[z].removeObject(marker, map.project(marker.getLatLng(), z))) {
-					break;
-				}
-			}
-		},
-
-		_childMarkerDragStart: function (e) {
-			e.target.__dragStart = e.target._latlng;
-		},
-
-		_childMarkerMoved: function (e) {
-			if (!this._ignoreMove && !e.target.__dragStart) {
-				var isPopupOpen = e.target._popup && e.target._popup.isOpen();
-
-				this._moveChild(e.target, e.oldLatLng, e.latlng);
-
-				if (isPopupOpen) {
-					e.target.openPopup();
-				}
-			}
-		},
-
-		_moveChild: function (layer, from, to) {
-			layer._latlng = from;
-			this.removeLayer(layer);
-
-			layer._latlng = to;
-			this.addLayer(layer);
-		},
-
-		_childMarkerDragEnd: function (e) {
-			var dragStart = e.target.__dragStart;
-			delete e.target.__dragStart;
-			if (dragStart) {
-				this._moveChild(e.target, dragStart, e.target._latlng);
-			}		
-		},
-
-
-		//Internal function for removing a marker from everything.
-		//dontUpdateMap: set to true if you will handle updating the map manually (for bulk functions)
-		_removeLayer: function (marker, removeFromDistanceGrid, dontUpdateMap) {
-			var gridClusters = this._gridClusters,
-				gridUnclustered = this._gridUnclustered,
-				fg = this._featureGroup,
-				map = this._map,
-				minZoom = Math.floor(this._map.getMinZoom());
-
-			//Remove the marker from distance clusters it might be in
-			if (removeFromDistanceGrid) {
-				this._removeFromGridUnclustered(marker, this._maxZoom);
-			}
-
-			//Work our way up the clusters removing them as we go if required
-			var cluster = marker.__parent,
-				markers = cluster._markers,
-				otherMarker;
-
-			//Remove the marker from the immediate parents marker list
-			this._arraySplice(markers, marker);
-
-			while (cluster) {
-				cluster._childCount--;
-				cluster._boundsNeedUpdate = true;
-
-				if (cluster._zoom < minZoom) {
-					//Top level, do nothing
-					break;
-				} else if (removeFromDistanceGrid && cluster._childCount <= 1) { //Cluster no longer required
-					//We need to push the other marker up to the parent
-					otherMarker = cluster._markers[0] === marker ? cluster._markers[1] : cluster._markers[0];
-
-					//Update distance grid
-					gridClusters[cluster._zoom].removeObject(cluster, map.project(cluster._cLatLng, cluster._zoom));
-					gridUnclustered[cluster._zoom].addObject(otherMarker, map.project(otherMarker.getLatLng(), cluster._zoom));
-
-					//Move otherMarker up to parent
-					this._arraySplice(cluster.__parent._childClusters, cluster);
-					cluster.__parent._markers.push(otherMarker);
-					otherMarker.__parent = cluster.__parent;
-
-					if (cluster._icon) {
-						//Cluster is currently on the map, need to put the marker on the map instead
-						fg.removeLayer(cluster);
-						if (!dontUpdateMap) {
-							fg.addLayer(otherMarker);
-						}
-					}
-				} else {
-					cluster._iconNeedsUpdate = true;
-				}
-
-				cluster = cluster.__parent;
-			}
-
-			delete marker.__parent;
-		},
-
-		_isOrIsParent: function (el, oel) {
-			while (oel) {
-				if (el === oel) {
-					return true;
-				}
-				oel = oel.parentNode;
-			}
-			return false;
-		},
-
-		//Override L.Evented.fire
-		fire: function (type, data, propagate) {
-			if (data && data.layer instanceof L.MarkerCluster) {
-				//Prevent multiple clustermouseover/off events if the icon is made up of stacked divs (Doesn't work in ie <= 8, no relatedTarget)
-				if (data.originalEvent && this._isOrIsParent(data.layer._icon, data.originalEvent.relatedTarget)) {
-					return;
-				}
-				type = 'cluster' + type;
-			}
-
-			L.FeatureGroup.prototype.fire.call(this, type, data, propagate);
-		},
-
-		//Override L.Evented.listens
-		listens: function (type, propagate) {
-			return L.FeatureGroup.prototype.listens.call(this, type, propagate) || L.FeatureGroup.prototype.listens.call(this, 'cluster' + type, propagate);
-		},
-
-		//Default functionality
-		_defaultIconCreateFunction: function (cluster) {
-			var childCount = cluster.getChildCount();
-
-			var c = ' marker-cluster-';
-			if (childCount < 10) {
-				c += 'small';
-			} else if (childCount < 100) {
-				c += 'medium';
-			} else {
-				c += 'large';
-			}
-
-			return new L.DivIcon({ html: '<div><span>' + childCount + '</span></div>', className: 'marker-cluster' + c, iconSize: new L.Point(40, 40) });
-		},
-
-		_bindEvents: function () {
-			var map = this._map,
-			    spiderfyOnMaxZoom = this.options.spiderfyOnMaxZoom,
-			    showCoverageOnHover = this.options.showCoverageOnHover,
-			    zoomToBoundsOnClick = this.options.zoomToBoundsOnClick;
-
-			//Zoom on cluster click or spiderfy if we are at the lowest level
-			if (spiderfyOnMaxZoom || zoomToBoundsOnClick) {
-				this.on('clusterclick', this._zoomOrSpiderfy, this);
-			}
-
-			//Show convex hull (boundary) polygon on mouse over
-			if (showCoverageOnHover) {
-				this.on('clustermouseover', this._showCoverage, this);
-				this.on('clustermouseout', this._hideCoverage, this);
-				map.on('zoomend', this._hideCoverage, this);
-			}
-		},
-
-		_zoomOrSpiderfy: function (e) {
-			var cluster = e.layer,
-			    bottomCluster = cluster;
-
-			while (bottomCluster._childClusters.length === 1) {
-				bottomCluster = bottomCluster._childClusters[0];
-			}
-
-			if (bottomCluster._zoom === this._maxZoom &&
-				bottomCluster._childCount === cluster._childCount &&
-				this.options.spiderfyOnMaxZoom) {
-
-				// All child markers are contained in a single cluster from this._maxZoom to this cluster.
-				cluster.spiderfy();
-			} else if (this.options.zoomToBoundsOnClick) {
-				cluster.zoomToBounds();
-			}
-
-			// Focus the map again for keyboard users.
-			if (e.originalEvent && e.originalEvent.keyCode === 13) {
-				this._map._container.focus();
-			}
-		},
-
-		_showCoverage: function (e) {
-			var map = this._map;
-			if (this._inZoomAnimation) {
-				return;
-			}
-			if (this._shownPolygon) {
-				map.removeLayer(this._shownPolygon);
-			}
-			if (e.layer.getChildCount() > 2 && e.layer !== this._spiderfied) {
-				this._shownPolygon = new L.Polygon(e.layer.getConvexHull(), this.options.polygonOptions);
-				map.addLayer(this._shownPolygon);
-			}
-		},
-
-		_hideCoverage: function () {
-			if (this._shownPolygon) {
-				this._map.removeLayer(this._shownPolygon);
-				this._shownPolygon = null;
-			}
-		},
-
-		_unbindEvents: function () {
-			var spiderfyOnMaxZoom = this.options.spiderfyOnMaxZoom,
-				showCoverageOnHover = this.options.showCoverageOnHover,
-				zoomToBoundsOnClick = this.options.zoomToBoundsOnClick,
-				map = this._map;
-
-			if (spiderfyOnMaxZoom || zoomToBoundsOnClick) {
-				this.off('clusterclick', this._zoomOrSpiderfy, this);
-			}
-			if (showCoverageOnHover) {
-				this.off('clustermouseover', this._showCoverage, this);
-				this.off('clustermouseout', this._hideCoverage, this);
-				map.off('zoomend', this._hideCoverage, this);
-			}
-		},
-
-		_zoomEnd: function () {
-			if (!this._map) { //May have been removed from the map by a zoomEnd handler
-				return;
-			}
-			this._mergeSplitClusters();
-
-			this._zoom = Math.round(this._map._zoom);
-			this._currentShownBounds = this._getExpandedVisibleBounds();
-		},
-
-		_moveEnd: function () {
-			if (this._inZoomAnimation) {
-				return;
-			}
-
-			var newBounds = this._getExpandedVisibleBounds();
-
-			this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), this._zoom, newBounds);
-			this._topClusterLevel._recursivelyAddChildrenToMap(null, Math.round(this._map._zoom), newBounds);
-
-			this._currentShownBounds = newBounds;
-			return;
-		},
-
-		_generateInitialClusters: function () {
-			var maxZoom = Math.ceil(this._map.getMaxZoom()),
-				minZoom = Math.floor(this._map.getMinZoom()),
-				radius = this.options.maxClusterRadius,
-				radiusFn = radius;
-
-			//If we just set maxClusterRadius to a single number, we need to create
-			//a simple function to return that number. Otherwise, we just have to
-			//use the function we've passed in.
-			if (typeof radius !== "function") {
-				radiusFn = function () { return radius; };
-			}
-
-			if (this.options.disableClusteringAtZoom !== null) {
-				maxZoom = this.options.disableClusteringAtZoom - 1;
-			}
-			this._maxZoom = maxZoom;
-			this._gridClusters = {};
-			this._gridUnclustered = {};
-
-			//Set up DistanceGrids for each zoom
-			for (var zoom = maxZoom; zoom >= minZoom; zoom--) {
-				this._gridClusters[zoom] = new L.DistanceGrid(radiusFn(zoom));
-				this._gridUnclustered[zoom] = new L.DistanceGrid(radiusFn(zoom));
-			}
-
-			// Instantiate the appropriate L.MarkerCluster class (animated or not).
-			this._topClusterLevel = new this._markerCluster(this, minZoom - 1);
-		},
-
-		//Zoom: Zoom to start adding at (Pass this._maxZoom to start at the bottom)
-		_addLayer: function (layer, zoom) {
-			var gridClusters = this._gridClusters,
-			    gridUnclustered = this._gridUnclustered,
-				minZoom = Math.floor(this._map.getMinZoom()),
-			    markerPoint, z;
-
-			if (this.options.singleMarkerMode) {
-				this._overrideMarkerIcon(layer);
-			}
-
-			layer.on(this._childMarkerEventHandlers, this);
-
-			//Find the lowest zoom level to slot this one in
-			for (; zoom >= minZoom; zoom--) {
-				markerPoint = this._map.project(layer.getLatLng(), zoom); // calculate pixel position
-
-				//Try find a cluster close by
-				var closest = gridClusters[zoom].getNearObject(markerPoint);
-				if (closest) {
-					closest._addChild(layer);
-					layer.__parent = closest;
-					return;
-				}
-
-				//Try find a marker close by to form a new cluster with
-				closest = gridUnclustered[zoom].getNearObject(markerPoint);
-				if (closest) {
-					var parent = closest.__parent;
-					if (parent) {
-						this._removeLayer(closest, false);
-					}
-
-					//Create new cluster with these 2 in it
-
-					var newCluster = new this._markerCluster(this, zoom, closest, layer);
-					gridClusters[zoom].addObject(newCluster, this._map.project(newCluster._cLatLng, zoom));
-					closest.__parent = newCluster;
-					layer.__parent = newCluster;
-
-					//First create any new intermediate parent clusters that don't exist
-					var lastParent = newCluster;
-					for (z = zoom - 1; z > parent._zoom; z--) {
-						lastParent = new this._markerCluster(this, z, lastParent);
-						gridClusters[z].addObject(lastParent, this._map.project(closest.getLatLng(), z));
-					}
-					parent._addChild(lastParent);
-
-					//Remove closest from this zoom level and any above that it is in, replace with newCluster
-					this._removeFromGridUnclustered(closest, zoom);
-
-					return;
-				}
-
-				//Didn't manage to cluster in at this zoom, record us as a marker here and continue upwards
-				gridUnclustered[zoom].addObject(layer, markerPoint);
-			}
-
-			//Didn't get in anything, add us to the top
-			this._topClusterLevel._addChild(layer);
-			layer.__parent = this._topClusterLevel;
-			return;
-		},
-
-		/**
-		 * Refreshes the icon of all "dirty" visible clusters.
-		 * Non-visible "dirty" clusters will be updated when they are added to the map.
-		 * @private
-		 */
-		_refreshClustersIcons: function () {
-			this._featureGroup.eachLayer(function (c) {
-				if (c instanceof L.MarkerCluster && c._iconNeedsUpdate) {
-					c._updateIcon();
-				}
-			});
-		},
-
-		//Enqueue code to fire after the marker expand/contract has happened
-		_enqueue: function (fn) {
-			this._queue.push(fn);
-			if (!this._queueTimeout) {
-				this._queueTimeout = setTimeout(L.bind(this._processQueue, this), 300);
-			}
-		},
-		_processQueue: function () {
-			for (var i = 0; i < this._queue.length; i++) {
-				this._queue[i].call(this);
-			}
-			this._queue.length = 0;
-			clearTimeout(this._queueTimeout);
-			this._queueTimeout = null;
-		},
-
-		//Merge and split any existing clusters that are too big or small
-		_mergeSplitClusters: function () {
-			var mapZoom = Math.round(this._map._zoom);
-
-			//In case we are starting to split before the animation finished
-			this._processQueue();
-
-			if (this._zoom < mapZoom && this._currentShownBounds.intersects(this._getExpandedVisibleBounds())) { //Zoom in, split
-				this._animationStart();
-				//Remove clusters now off screen
-				this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), this._zoom, this._getExpandedVisibleBounds());
-
-				this._animationZoomIn(this._zoom, mapZoom);
-
-			} else if (this._zoom > mapZoom) { //Zoom out, merge
-				this._animationStart();
-
-				this._animationZoomOut(this._zoom, mapZoom);
-			} else {
-				this._moveEnd();
-			}
-		},
-
-		//Gets the maps visible bounds expanded in each direction by the size of the screen (so the user cannot see an area we do not cover in one pan)
-		_getExpandedVisibleBounds: function () {
-			if (!this.options.removeOutsideVisibleBounds) {
-				return this._mapBoundsInfinite;
-			} else if (L.Browser.mobile) {
-				return this._checkBoundsMaxLat(this._map.getBounds());
-			}
-
-			return this._checkBoundsMaxLat(this._map.getBounds().pad(1)); // Padding expands the bounds by its own dimensions but scaled with the given factor.
-		},
-
-		/**
-		 * Expands the latitude to Infinity (or -Infinity) if the input bounds reach the map projection maximum defined latitude
-		 * (in the case of Web/Spherical Mercator, it is 85.0511287798 / see https://en.wikipedia.org/wiki/Web_Mercator#Formulas).
-		 * Otherwise, the removeOutsideVisibleBounds option will remove markers beyond that limit, whereas the same markers without
-		 * this option (or outside MCG) will have their position floored (ceiled) by the projection and rendered at that limit,
-		 * making the user think that MCG "eats" them and never displays them again.
-		 * @param bounds L.LatLngBounds
-		 * @returns {L.LatLngBounds}
-		 * @private
-		 */
-		_checkBoundsMaxLat: function (bounds) {
-			var maxLat = this._maxLat;
-
-			if (maxLat !== undefined) {
-				if (bounds.getNorth() >= maxLat) {
-					bounds._northEast.lat = Infinity;
-				}
-				if (bounds.getSouth() <= -maxLat) {
-					bounds._southWest.lat = -Infinity;
-				}
-			}
-
-			return bounds;
-		},
-
-		//Shared animation code
-		_animationAddLayerNonAnimated: function (layer, newCluster) {
-			if (newCluster === layer) {
-				this._featureGroup.addLayer(layer);
-			} else if (newCluster._childCount === 2) {
-				newCluster._addToMap();
-
-				var markers = newCluster.getAllChildMarkers();
-				this._featureGroup.removeLayer(markers[0]);
-				this._featureGroup.removeLayer(markers[1]);
-			} else {
-				newCluster._updateIcon();
-			}
-		},
-
-		/**
-		 * Extracts individual (i.e. non-group) layers from a Layer Group.
-		 * @param group to extract layers from.
-		 * @param output {Array} in which to store the extracted layers.
-		 * @returns {*|Array}
-		 * @private
-		 */
-		_extractNonGroupLayers: function (group, output) {
-			var layers = group.getLayers(),
-			    i = 0,
-			    layer;
-
-			output = output || [];
-
-			for (; i < layers.length; i++) {
-				layer = layers[i];
-
-				if (layer instanceof L.LayerGroup) {
-					this._extractNonGroupLayers(layer, output);
-					continue;
-				}
-
-				output.push(layer);
-			}
-
-			return output;
-		},
-
-		/**
-		 * Implements the singleMarkerMode option.
-		 * @param layer Marker to re-style using the Clusters iconCreateFunction.
-		 * @returns {L.Icon} The newly created icon.
-		 * @private
-		 */
-		_overrideMarkerIcon: function (layer) {
-			var icon = layer.options.icon = this.options.iconCreateFunction({
-				getChildCount: function () {
-					return 1;
-				},
-				getAllChildMarkers: function () {
-					return [layer];
-				}
-			});
-
-			return icon;
-		}
-	});
-
-	// Constant bounds used in case option "removeOutsideVisibleBounds" is set to false.
-	L.MarkerClusterGroup.include({
-		_mapBoundsInfinite: new L.LatLngBounds(new L.LatLng(-Infinity, -Infinity), new L.LatLng(Infinity, Infinity))
-	});
-
-	L.MarkerClusterGroup.include({
-		_noAnimation: {
-			//Non Animated versions of everything
-			_animationStart: function () {
-				//Do nothing...
-			},
-			_animationZoomIn: function (previousZoomLevel, newZoomLevel) {
-				this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), previousZoomLevel);
-				this._topClusterLevel._recursivelyAddChildrenToMap(null, newZoomLevel, this._getExpandedVisibleBounds());
-
-				//We didn't actually animate, but we use this event to mean "clustering animations have finished"
-				this.fire('animationend');
-			},
-			_animationZoomOut: function (previousZoomLevel, newZoomLevel) {
-				this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), previousZoomLevel);
-				this._topClusterLevel._recursivelyAddChildrenToMap(null, newZoomLevel, this._getExpandedVisibleBounds());
-
-				//We didn't actually animate, but we use this event to mean "clustering animations have finished"
-				this.fire('animationend');
-			},
-			_animationAddLayer: function (layer, newCluster) {
-				this._animationAddLayerNonAnimated(layer, newCluster);
-			}
-		},
-
-		_withAnimation: {
-			//Animated versions here
-			_animationStart: function () {
-				this._map._mapPane.className += ' leaflet-cluster-anim';
-				this._inZoomAnimation++;
-			},
-
-			_animationZoomIn: function (previousZoomLevel, newZoomLevel) {
-				var bounds = this._getExpandedVisibleBounds(),
-				    fg = this._featureGroup,
-					minZoom = Math.floor(this._map.getMinZoom()),
-				    i;
-
-				this._ignoreMove = true;
-
-				//Add all children of current clusters to map and remove those clusters from map
-				this._topClusterLevel._recursively(bounds, previousZoomLevel, minZoom, function (c) {
-					var startPos = c._latlng,
-					    markers  = c._markers,
-					    m;
-
-					if (!bounds.contains(startPos)) {
-						startPos = null;
-					}
-
-					if (c._isSingleParent() && previousZoomLevel + 1 === newZoomLevel) { //Immediately add the new child and remove us
-						fg.removeLayer(c);
-						c._recursivelyAddChildrenToMap(null, newZoomLevel, bounds);
-					} else {
-						//Fade out old cluster
-						c.clusterHide();
-						c._recursivelyAddChildrenToMap(startPos, newZoomLevel, bounds);
-					}
-
-					//Remove all markers that aren't visible any more
-					//TODO: Do we actually need to do this on the higher levels too?
-					for (i = markers.length - 1; i >= 0; i--) {
-						m = markers[i];
-						if (!bounds.contains(m._latlng)) {
-							fg.removeLayer(m);
-						}
-					}
-
-				});
-
-				this._forceLayout();
-
-				//Update opacities
-				this._topClusterLevel._recursivelyBecomeVisible(bounds, newZoomLevel);
-				//TODO Maybe? Update markers in _recursivelyBecomeVisible
-				fg.eachLayer(function (n) {
-					if (!(n instanceof L.MarkerCluster) && n._icon) {
-						n.clusterShow();
-					}
-				});
-
-				//update the positions of the just added clusters/markers
-				this._topClusterLevel._recursively(bounds, previousZoomLevel, newZoomLevel, function (c) {
-					c._recursivelyRestoreChildPositions(newZoomLevel);
-				});
-
-				this._ignoreMove = false;
-
-				//Remove the old clusters and close the zoom animation
-				this._enqueue(function () {
-					//update the positions of the just added clusters/markers
-					this._topClusterLevel._recursively(bounds, previousZoomLevel, minZoom, function (c) {
-						fg.removeLayer(c);
-						c.clusterShow();
-					});
-
-					this._animationEnd();
-				});
-			},
-
-			_animationZoomOut: function (previousZoomLevel, newZoomLevel) {
-				this._animationZoomOutSingle(this._topClusterLevel, previousZoomLevel - 1, newZoomLevel);
-
-				//Need to add markers for those that weren't on the map before but are now
-				this._topClusterLevel._recursivelyAddChildrenToMap(null, newZoomLevel, this._getExpandedVisibleBounds());
-				//Remove markers that were on the map before but won't be now
-				this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), previousZoomLevel, this._getExpandedVisibleBounds());
-			},
-
-			_animationAddLayer: function (layer, newCluster) {
-				var me = this,
-				    fg = this._featureGroup;
-
-				fg.addLayer(layer);
-				if (newCluster !== layer) {
-					if (newCluster._childCount > 2) { //Was already a cluster
-
-						newCluster._updateIcon();
-						this._forceLayout();
-						this._animationStart();
-
-						layer._setPos(this._map.latLngToLayerPoint(newCluster.getLatLng()));
-						layer.clusterHide();
-
-						this._enqueue(function () {
-							fg.removeLayer(layer);
-							layer.clusterShow();
-
-							me._animationEnd();
-						});
-
-					} else { //Just became a cluster
-						this._forceLayout();
-
-						me._animationStart();
-						me._animationZoomOutSingle(newCluster, this._map.getMaxZoom(), this._zoom);
-					}
-				}
-			}
-		},
-
-		// Private methods for animated versions.
-		_animationZoomOutSingle: function (cluster, previousZoomLevel, newZoomLevel) {
-			var bounds = this._getExpandedVisibleBounds(),
-				minZoom = Math.floor(this._map.getMinZoom());
-
-			//Animate all of the markers in the clusters to move to their cluster center point
-			cluster._recursivelyAnimateChildrenInAndAddSelfToMap(bounds, minZoom, previousZoomLevel + 1, newZoomLevel);
-
-			var me = this;
-
-			//Update the opacity (If we immediately set it they won't animate)
-			this._forceLayout();
-			cluster._recursivelyBecomeVisible(bounds, newZoomLevel);
-
-			//TODO: Maybe use the transition timing stuff to make this more reliable
-			//When the animations are done, tidy up
-			this._enqueue(function () {
-
-				//This cluster stopped being a cluster before the timeout fired
-				if (cluster._childCount === 1) {
-					var m = cluster._markers[0];
-					//If we were in a cluster animation at the time then the opacity and position of our child could be wrong now, so fix it
-					this._ignoreMove = true;
-					m.setLatLng(m.getLatLng());
-					this._ignoreMove = false;
-					if (m.clusterShow) {
-						m.clusterShow();
-					}
-				} else {
-					cluster._recursively(bounds, newZoomLevel, minZoom, function (c) {
-						c._recursivelyRemoveChildrenFromMap(bounds, minZoom, previousZoomLevel + 1);
-					});
-				}
-				me._animationEnd();
-			});
-		},
-
-		_animationEnd: function () {
-			if (this._map) {
-				this._map._mapPane.className = this._map._mapPane.className.replace(' leaflet-cluster-anim', '');
-			}
-			this._inZoomAnimation--;
-			this.fire('animationend');
-		},
-
-		//Force a browser layout of stuff in the map
-		// Should apply the current opacity and location to all elements so we can update them again for an animation
-		_forceLayout: function () {
-			//In my testing this works, infact offsetWidth of any element seems to work.
-			//Could loop all this._layers and do this for each _icon if it stops working
-
-			L.Util.falseFn(document.body.offsetWidth);
-		}
-	});
-
-	L.markerClusterGroup = function (options) {
-		return new L.MarkerClusterGroup(options);
-	};
-
-	var MarkerCluster = L.MarkerCluster = L.Marker.extend({
-		options: L.Icon.prototype.options,
-
-		initialize: function (group, zoom, a, b) {
-
-			L.Marker.prototype.initialize.call(this, a ? (a._cLatLng || a.getLatLng()) : new L.LatLng(0, 0),
-	            { icon: this, pane: group.options.clusterPane });
-
-			this._group = group;
-			this._zoom = zoom;
-
-			this._markers = [];
-			this._childClusters = [];
-			this._childCount = 0;
-			this._iconNeedsUpdate = true;
-			this._boundsNeedUpdate = true;
-
-			this._bounds = new L.LatLngBounds();
-
-			if (a) {
-				this._addChild(a);
-			}
-			if (b) {
-				this._addChild(b);
-			}
-		},
-
-		//Recursively retrieve all child markers of this cluster
-		getAllChildMarkers: function (storageArray, ignoreDraggedMarker) {
-			storageArray = storageArray || [];
-
-			for (var i = this._childClusters.length - 1; i >= 0; i--) {
-				this._childClusters[i].getAllChildMarkers(storageArray);
-			}
-
-			for (var j = this._markers.length - 1; j >= 0; j--) {
-				if (ignoreDraggedMarker && this._markers[j].__dragStart) {
-					continue;
-				}
-				storageArray.push(this._markers[j]);
-			}
-
-			return storageArray;
-		},
-
-		//Returns the count of how many child markers we have
-		getChildCount: function () {
-			return this._childCount;
-		},
-
-		//Zoom to the minimum of showing all of the child markers, or the extents of this cluster
-		zoomToBounds: function (fitBoundsOptions) {
-			var childClusters = this._childClusters.slice(),
-				map = this._group._map,
-				boundsZoom = map.getBoundsZoom(this._bounds),
-				zoom = this._zoom + 1,
-				mapZoom = map.getZoom(),
-				i;
-
-			//calculate how far we need to zoom down to see all of the markers
-			while (childClusters.length > 0 && boundsZoom > zoom) {
-				zoom++;
-				var newClusters = [];
-				for (i = 0; i < childClusters.length; i++) {
-					newClusters = newClusters.concat(childClusters[i]._childClusters);
-				}
-				childClusters = newClusters;
-			}
-
-			if (boundsZoom > zoom) {
-				this._group._map.setView(this._latlng, zoom);
-			} else if (boundsZoom <= mapZoom) { //If fitBounds wouldn't zoom us down, zoom us down instead
-				this._group._map.setView(this._latlng, mapZoom + 1);
-			} else {
-				this._group._map.fitBounds(this._bounds, fitBoundsOptions);
-			}
-		},
-
-		getBounds: function () {
-			var bounds = new L.LatLngBounds();
-			bounds.extend(this._bounds);
-			return bounds;
-		},
-
-		_updateIcon: function () {
-			this._iconNeedsUpdate = true;
-			if (this._icon) {
-				this.setIcon(this);
-			}
-		},
-
-		//Cludge for Icon, we pretend to be an icon for performance
-		createIcon: function () {
-			if (this._iconNeedsUpdate) {
-				this._iconObj = this._group.options.iconCreateFunction(this);
-				this._iconNeedsUpdate = false;
-			}
-			return this._iconObj.createIcon();
-		},
-		createShadow: function () {
-			return this._iconObj.createShadow();
-		},
-
-
-		_addChild: function (new1, isNotificationFromChild) {
-
-			this._iconNeedsUpdate = true;
-
-			this._boundsNeedUpdate = true;
-			this._setClusterCenter(new1);
-
-			if (new1 instanceof L.MarkerCluster) {
-				if (!isNotificationFromChild) {
-					this._childClusters.push(new1);
-					new1.__parent = this;
-				}
-				this._childCount += new1._childCount;
-			} else {
-				if (!isNotificationFromChild) {
-					this._markers.push(new1);
-				}
-				this._childCount++;
-			}
-
-			if (this.__parent) {
-				this.__parent._addChild(new1, true);
-			}
-		},
-
-		/**
-		 * Makes sure the cluster center is set. If not, uses the child center if it is a cluster, or the marker position.
-		 * @param child L.MarkerCluster|L.Marker that will be used as cluster center if not defined yet.
-		 * @private
-		 */
-		_setClusterCenter: function (child) {
-			if (!this._cLatLng) {
-				// when clustering, take position of the first point as the cluster center
-				this._cLatLng = child._cLatLng || child._latlng;
-			}
-		},
-
-		/**
-		 * Assigns impossible bounding values so that the next extend entirely determines the new bounds.
-		 * This method avoids having to trash the previous L.LatLngBounds object and to create a new one, which is much slower for this class.
-		 * As long as the bounds are not extended, most other methods would probably fail, as they would with bounds initialized but not extended.
-		 * @private
-		 */
-		_resetBounds: function () {
-			var bounds = this._bounds;
-
-			if (bounds._southWest) {
-				bounds._southWest.lat = Infinity;
-				bounds._southWest.lng = Infinity;
-			}
-			if (bounds._northEast) {
-				bounds._northEast.lat = -Infinity;
-				bounds._northEast.lng = -Infinity;
-			}
-		},
-
-		_recalculateBounds: function () {
-			var markers = this._markers,
-			    childClusters = this._childClusters,
-			    latSum = 0,
-			    lngSum = 0,
-			    totalCount = this._childCount,
-			    i, child, childLatLng, childCount;
-
-			// Case where all markers are removed from the map and we are left with just an empty _topClusterLevel.
-			if (totalCount === 0) {
-				return;
-			}
-
-			// Reset rather than creating a new object, for performance.
-			this._resetBounds();
-
-			// Child markers.
-			for (i = 0; i < markers.length; i++) {
-				childLatLng = markers[i]._latlng;
-
-				this._bounds.extend(childLatLng);
-
-				latSum += childLatLng.lat;
-				lngSum += childLatLng.lng;
-			}
-
-			// Child clusters.
-			for (i = 0; i < childClusters.length; i++) {
-				child = childClusters[i];
-
-				// Re-compute child bounds and weighted position first if necessary.
-				if (child._boundsNeedUpdate) {
-					child._recalculateBounds();
-				}
-
-				this._bounds.extend(child._bounds);
-
-				childLatLng = child._wLatLng;
-				childCount = child._childCount;
-
-				latSum += childLatLng.lat * childCount;
-				lngSum += childLatLng.lng * childCount;
-			}
-
-			this._latlng = this._wLatLng = new L.LatLng(latSum / totalCount, lngSum / totalCount);
-
-			// Reset dirty flag.
-			this._boundsNeedUpdate = false;
-		},
-
-		//Set our markers position as given and add it to the map
-		_addToMap: function (startPos) {
-			if (startPos) {
-				this._backupLatlng = this._latlng;
-				this.setLatLng(startPos);
-			}
-			this._group._featureGroup.addLayer(this);
-		},
-
-		_recursivelyAnimateChildrenIn: function (bounds, center, maxZoom) {
-			this._recursively(bounds, this._group._map.getMinZoom(), maxZoom - 1,
-				function (c) {
-					var markers = c._markers,
-						i, m;
-					for (i = markers.length - 1; i >= 0; i--) {
-						m = markers[i];
-
-						//Only do it if the icon is still on the map
-						if (m._icon) {
-							m._setPos(center);
-							m.clusterHide();
-						}
-					}
-				},
-				function (c) {
-					var childClusters = c._childClusters,
-						j, cm;
-					for (j = childClusters.length - 1; j >= 0; j--) {
-						cm = childClusters[j];
-						if (cm._icon) {
-							cm._setPos(center);
-							cm.clusterHide();
-						}
-					}
-				}
-			);
-		},
-
-		_recursivelyAnimateChildrenInAndAddSelfToMap: function (bounds, mapMinZoom, previousZoomLevel, newZoomLevel) {
-			this._recursively(bounds, newZoomLevel, mapMinZoom,
-				function (c) {
-					c._recursivelyAnimateChildrenIn(bounds, c._group._map.latLngToLayerPoint(c.getLatLng()).round(), previousZoomLevel);
-
-					//TODO: depthToAnimateIn affects _isSingleParent, if there is a multizoom we may/may not be.
-					//As a hack we only do a animation free zoom on a single level zoom, if someone does multiple levels then we always animate
-					if (c._isSingleParent() && previousZoomLevel - 1 === newZoomLevel) {
-						c.clusterShow();
-						c._recursivelyRemoveChildrenFromMap(bounds, mapMinZoom, previousZoomLevel); //Immediately remove our children as we are replacing them. TODO previousBounds not bounds
-					} else {
-						c.clusterHide();
-					}
-
-					c._addToMap();
-				}
-			);
-		},
-
-		_recursivelyBecomeVisible: function (bounds, zoomLevel) {
-			this._recursively(bounds, this._group._map.getMinZoom(), zoomLevel, null, function (c) {
-				c.clusterShow();
-			});
-		},
-
-		_recursivelyAddChildrenToMap: function (startPos, zoomLevel, bounds) {
-			this._recursively(bounds, this._group._map.getMinZoom() - 1, zoomLevel,
-				function (c) {
-					if (zoomLevel === c._zoom) {
-						return;
-					}
-
-					//Add our child markers at startPos (so they can be animated out)
-					for (var i = c._markers.length - 1; i >= 0; i--) {
-						var nm = c._markers[i];
-
-						if (!bounds.contains(nm._latlng)) {
-							continue;
-						}
-
-						if (startPos) {
-							nm._backupLatlng = nm.getLatLng();
-
-							nm.setLatLng(startPos);
-							if (nm.clusterHide) {
-								nm.clusterHide();
-							}
-						}
-
-						c._group._featureGroup.addLayer(nm);
-					}
-				},
-				function (c) {
-					c._addToMap(startPos);
-				}
-			);
-		},
-
-		_recursivelyRestoreChildPositions: function (zoomLevel) {
-			//Fix positions of child markers
-			for (var i = this._markers.length - 1; i >= 0; i--) {
-				var nm = this._markers[i];
-				if (nm._backupLatlng) {
-					nm.setLatLng(nm._backupLatlng);
-					delete nm._backupLatlng;
-				}
-			}
-
-			if (zoomLevel - 1 === this._zoom) {
-				//Reposition child clusters
-				for (var j = this._childClusters.length - 1; j >= 0; j--) {
-					this._childClusters[j]._restorePosition();
-				}
-			} else {
-				for (var k = this._childClusters.length - 1; k >= 0; k--) {
-					this._childClusters[k]._recursivelyRestoreChildPositions(zoomLevel);
-				}
-			}
-		},
-
-		_restorePosition: function () {
-			if (this._backupLatlng) {
-				this.setLatLng(this._backupLatlng);
-				delete this._backupLatlng;
-			}
-		},
-
-		//exceptBounds: If set, don't remove any markers/clusters in it
-		_recursivelyRemoveChildrenFromMap: function (previousBounds, mapMinZoom, zoomLevel, exceptBounds) {
-			var m, i;
-			this._recursively(previousBounds, mapMinZoom - 1, zoomLevel - 1,
-				function (c) {
-					//Remove markers at every level
-					for (i = c._markers.length - 1; i >= 0; i--) {
-						m = c._markers[i];
-						if (!exceptBounds || !exceptBounds.contains(m._latlng)) {
-							c._group._featureGroup.removeLayer(m);
-							if (m.clusterShow) {
-								m.clusterShow();
-							}
-						}
-					}
-				},
-				function (c) {
-					//Remove child clusters at just the bottom level
-					for (i = c._childClusters.length - 1; i >= 0; i--) {
-						m = c._childClusters[i];
-						if (!exceptBounds || !exceptBounds.contains(m._latlng)) {
-							c._group._featureGroup.removeLayer(m);
-							if (m.clusterShow) {
-								m.clusterShow();
-							}
-						}
-					}
-				}
-			);
-		},
-
-		//Run the given functions recursively to this and child clusters
-		// boundsToApplyTo: a L.LatLngBounds representing the bounds of what clusters to recurse in to
-		// zoomLevelToStart: zoom level to start running functions (inclusive)
-		// zoomLevelToStop: zoom level to stop running functions (inclusive)
-		// runAtEveryLevel: function that takes an L.MarkerCluster as an argument that should be applied on every level
-		// runAtBottomLevel: function that takes an L.MarkerCluster as an argument that should be applied at only the bottom level
-		_recursively: function (boundsToApplyTo, zoomLevelToStart, zoomLevelToStop, runAtEveryLevel, runAtBottomLevel) {
-			var childClusters = this._childClusters,
-			    zoom = this._zoom,
-			    i, c;
-
-			if (zoomLevelToStart <= zoom) {
-				if (runAtEveryLevel) {
-					runAtEveryLevel(this);
-				}
-				if (runAtBottomLevel && zoom === zoomLevelToStop) {
-					runAtBottomLevel(this);
-				}
-			}
-
-			if (zoom < zoomLevelToStart || zoom < zoomLevelToStop) {
-				for (i = childClusters.length - 1; i >= 0; i--) {
-					c = childClusters[i];
-					if (c._boundsNeedUpdate) {
-						c._recalculateBounds();
-					}
-					if (boundsToApplyTo.intersects(c._bounds)) {
-						c._recursively(boundsToApplyTo, zoomLevelToStart, zoomLevelToStop, runAtEveryLevel, runAtBottomLevel);
-					}
-				}
-			}
-		},
-
-		//Returns true if we are the parent of only one cluster and that cluster is the same as us
-		_isSingleParent: function () {
-			//Don't need to check this._markers as the rest won't work if there are any
-			return this._childClusters.length > 0 && this._childClusters[0]._childCount === this._childCount;
-		}
-	});
-
-	/*
-	* Extends L.Marker to include two extra methods: clusterHide and clusterShow.
-	* 
-	* They work as setOpacity(0) and setOpacity(1) respectively, but
-	* don't overwrite the options.opacity
-	* 
-	*/
-
-	L.Marker.include({
-		clusterHide: function () {
-			var backup = this.options.opacity;
-			this.setOpacity(0);
-			this.options.opacity = backup;
-			return this;
-		},
-		
-		clusterShow: function () {
-			return this.setOpacity(this.options.opacity);
-		}
-	});
-
-	L.DistanceGrid = function (cellSize) {
-		this._cellSize = cellSize;
-		this._sqCellSize = cellSize * cellSize;
-		this._grid = {};
-		this._objectPoint = { };
-	};
-
-	L.DistanceGrid.prototype = {
-
-		addObject: function (obj, point) {
-			var x = this._getCoord(point.x),
-			    y = this._getCoord(point.y),
-			    grid = this._grid,
-			    row = grid[y] = grid[y] || {},
-			    cell = row[x] = row[x] || [],
-			    stamp = L.Util.stamp(obj);
-
-			this._objectPoint[stamp] = point;
-
-			cell.push(obj);
-		},
-
-		updateObject: function (obj, point) {
-			this.removeObject(obj);
-			this.addObject(obj, point);
-		},
-
-		//Returns true if the object was found
-		removeObject: function (obj, point) {
-			var x = this._getCoord(point.x),
-			    y = this._getCoord(point.y),
-			    grid = this._grid,
-			    row = grid[y] = grid[y] || {},
-			    cell = row[x] = row[x] || [],
-			    i, len;
-
-			delete this._objectPoint[L.Util.stamp(obj)];
-
-			for (i = 0, len = cell.length; i < len; i++) {
-				if (cell[i] === obj) {
-
-					cell.splice(i, 1);
-
-					if (len === 1) {
-						delete row[x];
-					}
-
-					return true;
-				}
-			}
-
-		},
-
-		eachObject: function (fn, context) {
-			var i, j, k, len, row, cell, removed,
-			    grid = this._grid;
-
-			for (i in grid) {
-				row = grid[i];
-
-				for (j in row) {
-					cell = row[j];
-
-					for (k = 0, len = cell.length; k < len; k++) {
-						removed = fn.call(context, cell[k]);
-						if (removed) {
-							k--;
-							len--;
-						}
-					}
-				}
-			}
-		},
-
-		getNearObject: function (point) {
-			var x = this._getCoord(point.x),
-			    y = this._getCoord(point.y),
-			    i, j, k, row, cell, len, obj, dist,
-			    objectPoint = this._objectPoint,
-			    closestDistSq = this._sqCellSize,
-			    closest = null;
-
-			for (i = y - 1; i <= y + 1; i++) {
-				row = this._grid[i];
-				if (row) {
-
-					for (j = x - 1; j <= x + 1; j++) {
-						cell = row[j];
-						if (cell) {
-
-							for (k = 0, len = cell.length; k < len; k++) {
-								obj = cell[k];
-								dist = this._sqDist(objectPoint[L.Util.stamp(obj)], point);
-								if (dist < closestDistSq ||
-									dist <= closestDistSq && closest === null) {
-									closestDistSq = dist;
-									closest = obj;
-								}
-							}
-						}
-					}
-				}
-			}
-			return closest;
-		},
-
-		_getCoord: function (x) {
-			var coord = Math.floor(x / this._cellSize);
-			return isFinite(coord) ? coord : x;
-		},
-
-		_sqDist: function (p, p2) {
-			var dx = p2.x - p.x,
-			    dy = p2.y - p.y;
-			return dx * dx + dy * dy;
-		}
-	};
-
-	/* Copyright (c) 2012 the authors listed at the following URL, and/or
-	the authors of referenced articles or incorporated external code:
-	http://en.literateprograms.org/Quickhull_(Javascript)?action=history&offset=20120410175256
-
-	Permission is hereby granted, free of charge, to any person obtaining
-	a copy of this software and associated documentation files (the
-	"Software"), to deal in the Software without restriction, including
-	without limitation the rights to use, copy, modify, merge, publish,
-	distribute, sublicense, and/or sell copies of the Software, and to
-	permit persons to whom the Software is furnished to do so, subject to
-	the following conditions:
-
-	The above copyright notice and this permission notice shall be
-	included in all copies or substantial portions of the Software.
-
-	THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-	EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-	MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-	IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-	CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-	TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-	SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-	Retrieved from: http://en.literateprograms.org/Quickhull_(Javascript)?oldid=18434
-	*/
-
-	(function () {
-		L.QuickHull = {
-
-			/*
-			 * @param {Object} cpt a point to be measured from the baseline
-			 * @param {Array} bl the baseline, as represented by a two-element
-			 *   array of latlng objects.
-			 * @returns {Number} an approximate distance measure
-			 */
-			getDistant: function (cpt, bl) {
-				var vY = bl[1].lat - bl[0].lat,
-					vX = bl[0].lng - bl[1].lng;
-				return (vX * (cpt.lat - bl[0].lat) + vY * (cpt.lng - bl[0].lng));
-			},
-
-			/*
-			 * @param {Array} baseLine a two-element array of latlng objects
-			 *   representing the baseline to project from
-			 * @param {Array} latLngs an array of latlng objects
-			 * @returns {Object} the maximum point and all new points to stay
-			 *   in consideration for the hull.
-			 */
-			findMostDistantPointFromBaseLine: function (baseLine, latLngs) {
-				var maxD = 0,
-					maxPt = null,
-					newPoints = [],
-					i, pt, d;
-
-				for (i = latLngs.length - 1; i >= 0; i--) {
-					pt = latLngs[i];
-					d = this.getDistant(pt, baseLine);
-
-					if (d > 0) {
-						newPoints.push(pt);
-					} else {
-						continue;
-					}
-
-					if (d > maxD) {
-						maxD = d;
-						maxPt = pt;
-					}
-				}
-
-				return { maxPoint: maxPt, newPoints: newPoints };
-			},
-
-
-			/*
-			 * Given a baseline, compute the convex hull of latLngs as an array
-			 * of latLngs.
-			 *
-			 * @param {Array} latLngs
-			 * @returns {Array}
-			 */
-			buildConvexHull: function (baseLine, latLngs) {
-				var convexHullBaseLines = [],
-					t = this.findMostDistantPointFromBaseLine(baseLine, latLngs);
-
-				if (t.maxPoint) { // if there is still a point "outside" the base line
-					convexHullBaseLines =
-						convexHullBaseLines.concat(
-							this.buildConvexHull([baseLine[0], t.maxPoint], t.newPoints)
-						);
-					convexHullBaseLines =
-						convexHullBaseLines.concat(
-							this.buildConvexHull([t.maxPoint, baseLine[1]], t.newPoints)
-						);
-					return convexHullBaseLines;
-				} else {  // if there is no more point "outside" the base line, the current base line is part of the convex hull
-					return [baseLine[0]];
-				}
-			},
-
-			/*
-			 * Given an array of latlngs, compute a convex hull as an array
-			 * of latlngs
-			 *
-			 * @param {Array} latLngs
-			 * @returns {Array}
-			 */
-			getConvexHull: function (latLngs) {
-				// find first baseline
-				var maxLat = false, minLat = false,
-					maxLng = false, minLng = false,
-					maxLatPt = null, minLatPt = null,
-					maxLngPt = null, minLngPt = null,
-					maxPt = null, minPt = null,
-					i;
-
-				for (i = latLngs.length - 1; i >= 0; i--) {
-					var pt = latLngs[i];
-					if (maxLat === false || pt.lat > maxLat) {
-						maxLatPt = pt;
-						maxLat = pt.lat;
-					}
-					if (minLat === false || pt.lat < minLat) {
-						minLatPt = pt;
-						minLat = pt.lat;
-					}
-					if (maxLng === false || pt.lng > maxLng) {
-						maxLngPt = pt;
-						maxLng = pt.lng;
-					}
-					if (minLng === false || pt.lng < minLng) {
-						minLngPt = pt;
-						minLng = pt.lng;
-					}
-				}
-				
-				if (minLat !== maxLat) {
-					minPt = minLatPt;
-					maxPt = maxLatPt;
-				} else {
-					minPt = minLngPt;
-					maxPt = maxLngPt;
-				}
-
-				var ch = [].concat(this.buildConvexHull([minPt, maxPt], latLngs),
-									this.buildConvexHull([maxPt, minPt], latLngs));
-				return ch;
-			}
-		};
-	}());
-
-	L.MarkerCluster.include({
-		getConvexHull: function () {
-			var childMarkers = this.getAllChildMarkers(),
-				points = [],
-				p, i;
-
-			for (i = childMarkers.length - 1; i >= 0; i--) {
-				p = childMarkers[i].getLatLng();
-				points.push(p);
-			}
-
-			return L.QuickHull.getConvexHull(points);
-		}
-	});
-
-	//This code is 100% based on https://github.com/jawj/OverlappingMarkerSpiderfier-Leaflet
-	//Huge thanks to jawj for implementing it first to make my job easy :-)
-
-	L.MarkerCluster.include({
-
-		_2PI: Math.PI * 2,
-		_circleFootSeparation: 25, //related to circumference of circle
-		_circleStartAngle: 0,
-
-		_spiralFootSeparation:  28, //related to size of spiral (experiment!)
-		_spiralLengthStart: 11,
-		_spiralLengthFactor: 5,
-
-		_circleSpiralSwitchover: 9, //show spiral instead of circle from this marker count upwards.
-									// 0 -> always spiral; Infinity -> always circle
-
-		spiderfy: function () {
-			if (this._group._spiderfied === this || this._group._inZoomAnimation) {
-				return;
-			}
-
-			var childMarkers = this.getAllChildMarkers(null, true),
-				group = this._group,
-				map = group._map,
-				center = map.latLngToLayerPoint(this._latlng),
-				positions;
-
-			this._group._unspiderfy();
-			this._group._spiderfied = this;
-
-			//TODO Maybe: childMarkers order by distance to center
-
-			if (this._group.options.spiderfyShapePositions) {
-				positions = this._group.options.spiderfyShapePositions(childMarkers.length, center);
-			} else if (childMarkers.length >= this._circleSpiralSwitchover) {
-				positions = this._generatePointsSpiral(childMarkers.length, center);
-			} else {
-				center.y += 10; // Otherwise circles look wrong => hack for standard blue icon, renders differently for other icons.
-				positions = this._generatePointsCircle(childMarkers.length, center);
-			}
-
-			this._animationSpiderfy(childMarkers, positions);
-		},
-
-		unspiderfy: function (zoomDetails) {
-			/// <param Name="zoomDetails">Argument from zoomanim if being called in a zoom animation or null otherwise</param>
-			if (this._group._inZoomAnimation) {
-				return;
-			}
-			this._animationUnspiderfy(zoomDetails);
-
-			this._group._spiderfied = null;
-		},
-
-		_generatePointsCircle: function (count, centerPt) {
-			var circumference = this._group.options.spiderfyDistanceMultiplier * this._circleFootSeparation * (2 + count),
-				legLength = circumference / this._2PI,  //radius from circumference
-				angleStep = this._2PI / count,
-				res = [],
-				i, angle;
-
-			legLength = Math.max(legLength, 35); // Minimum distance to get outside the cluster icon.
-
-			res.length = count;
-
-			for (i = 0; i < count; i++) { // Clockwise, like spiral.
-				angle = this._circleStartAngle + i * angleStep;
-				res[i] = new L.Point(centerPt.x + legLength * Math.cos(angle), centerPt.y + legLength * Math.sin(angle))._round();
-			}
-
-			return res;
-		},
-
-		_generatePointsSpiral: function (count, centerPt) {
-			var spiderfyDistanceMultiplier = this._group.options.spiderfyDistanceMultiplier,
-				legLength = spiderfyDistanceMultiplier * this._spiralLengthStart,
-				separation = spiderfyDistanceMultiplier * this._spiralFootSeparation,
-				lengthFactor = spiderfyDistanceMultiplier * this._spiralLengthFactor * this._2PI,
-				angle = 0,
-				res = [],
-				i;
-
-			res.length = count;
-
-			// Higher index, closer position to cluster center.
-			for (i = count; i >= 0; i--) {
-				// Skip the first position, so that we are already farther from center and we avoid
-				// being under the default cluster icon (especially important for Circle Markers).
-				if (i < count) {
-					res[i] = new L.Point(centerPt.x + legLength * Math.cos(angle), centerPt.y + legLength * Math.sin(angle))._round();
-				}
-				angle += separation / legLength + i * 0.0005;
-				legLength += lengthFactor / angle;
-			}
-			return res;
-		},
-
-		_noanimationUnspiderfy: function () {
-			var group = this._group,
-				map = group._map,
-				fg = group._featureGroup,
-				childMarkers = this.getAllChildMarkers(null, true),
-				m, i;
-
-			group._ignoreMove = true;
-
-			this.setOpacity(1);
-			for (i = childMarkers.length - 1; i >= 0; i--) {
-				m = childMarkers[i];
-
-				fg.removeLayer(m);
-
-				if (m._preSpiderfyLatlng) {
-					m.setLatLng(m._preSpiderfyLatlng);
-					delete m._preSpiderfyLatlng;
-				}
-				if (m.setZIndexOffset) {
-					m.setZIndexOffset(0);
-				}
-
-				if (m._spiderLeg) {
-					map.removeLayer(m._spiderLeg);
-					delete m._spiderLeg;
-				}
-			}
-
-			group.fire('unspiderfied', {
-				cluster: this,
-				markers: childMarkers
-			});
-			group._ignoreMove = false;
-			group._spiderfied = null;
-		}
-	});
-
-	//Non Animated versions of everything
-	L.MarkerClusterNonAnimated = L.MarkerCluster.extend({
-		_animationSpiderfy: function (childMarkers, positions) {
-			var group = this._group,
-				map = group._map,
-				fg = group._featureGroup,
-				legOptions = this._group.options.spiderLegPolylineOptions,
-				i, m, leg, newPos;
-
-			group._ignoreMove = true;
-
-			// Traverse in ascending order to make sure that inner circleMarkers are on top of further legs. Normal markers are re-ordered by newPosition.
-			// The reverse order trick no longer improves performance on modern browsers.
-			for (i = 0; i < childMarkers.length; i++) {
-				newPos = map.layerPointToLatLng(positions[i]);
-				m = childMarkers[i];
-
-				// Add the leg before the marker, so that in case the latter is a circleMarker, the leg is behind it.
-				leg = new L.Polyline([this._latlng, newPos], legOptions);
-				map.addLayer(leg);
-				m._spiderLeg = leg;
-
-				// Now add the marker.
-				m._preSpiderfyLatlng = m._latlng;
-				m.setLatLng(newPos);
-				if (m.setZIndexOffset) {
-					m.setZIndexOffset(1000000); //Make these appear on top of EVERYTHING
-				}
-
-				fg.addLayer(m);
-			}
-			this.setOpacity(0.3);
-
-			group._ignoreMove = false;
-			group.fire('spiderfied', {
-				cluster: this,
-				markers: childMarkers
-			});
-		},
-
-		_animationUnspiderfy: function () {
-			this._noanimationUnspiderfy();
-		}
-	});
-
-	//Animated versions here
-	L.MarkerCluster.include({
-
-		_animationSpiderfy: function (childMarkers, positions) {
-			var me = this,
-				group = this._group,
-				map = group._map,
-				fg = group._featureGroup,
-				thisLayerLatLng = this._latlng,
-				thisLayerPos = map.latLngToLayerPoint(thisLayerLatLng),
-				svg = L.Path.SVG,
-				legOptions = L.extend({}, this._group.options.spiderLegPolylineOptions), // Copy the options so that we can modify them for animation.
-				finalLegOpacity = legOptions.opacity,
-				i, m, leg, legPath, legLength, newPos;
-
-			if (finalLegOpacity === undefined) {
-				finalLegOpacity = L.MarkerClusterGroup.prototype.options.spiderLegPolylineOptions.opacity;
-			}
-
-			if (svg) {
-				// If the initial opacity of the spider leg is not 0 then it appears before the animation starts.
-				legOptions.opacity = 0;
-
-				// Add the class for CSS transitions.
-				legOptions.className = (legOptions.className || '') + ' leaflet-cluster-spider-leg';
-			} else {
-				// Make sure we have a defined opacity.
-				legOptions.opacity = finalLegOpacity;
-			}
-
-			group._ignoreMove = true;
-
-			// Add markers and spider legs to map, hidden at our center point.
-			// Traverse in ascending order to make sure that inner circleMarkers are on top of further legs. Normal markers are re-ordered by newPosition.
-			// The reverse order trick no longer improves performance on modern browsers.
-			for (i = 0; i < childMarkers.length; i++) {
-				m = childMarkers[i];
-
-				newPos = map.layerPointToLatLng(positions[i]);
-
-				// Add the leg before the marker, so that in case the latter is a circleMarker, the leg is behind it.
-				leg = new L.Polyline([thisLayerLatLng, newPos], legOptions);
-				map.addLayer(leg);
-				m._spiderLeg = leg;
-
-				// Explanations: https://jakearchibald.com/2013/animated-line-drawing-svg/
-				// In our case the transition property is declared in the CSS file.
-				if (svg) {
-					legPath = leg._path;
-					legLength = legPath.getTotalLength() + 0.1; // Need a small extra length to avoid remaining dot in Firefox.
-					legPath.style.strokeDasharray = legLength; // Just 1 length is enough, it will be duplicated.
-					legPath.style.strokeDashoffset = legLength;
-				}
-
-				// If it is a marker, add it now and we'll animate it out
-				if (m.setZIndexOffset) {
-					m.setZIndexOffset(1000000); // Make normal markers appear on top of EVERYTHING
-				}
-				if (m.clusterHide) {
-					m.clusterHide();
-				}
-				
-				// Vectors just get immediately added
-				fg.addLayer(m);
-
-				if (m._setPos) {
-					m._setPos(thisLayerPos);
-				}
-			}
-
-			group._forceLayout();
-			group._animationStart();
-
-			// Reveal markers and spider legs.
-			for (i = childMarkers.length - 1; i >= 0; i--) {
-				newPos = map.layerPointToLatLng(positions[i]);
-				m = childMarkers[i];
-
-				//Move marker to new position
-				m._preSpiderfyLatlng = m._latlng;
-				m.setLatLng(newPos);
-				
-				if (m.clusterShow) {
-					m.clusterShow();
-				}
-
-				// Animate leg (animation is actually delegated to CSS transition).
-				if (svg) {
-					leg = m._spiderLeg;
-					legPath = leg._path;
-					legPath.style.strokeDashoffset = 0;
-					//legPath.style.strokeOpacity = finalLegOpacity;
-					leg.setStyle({opacity: finalLegOpacity});
-				}
-			}
-			this.setOpacity(0.3);
-
-			group._ignoreMove = false;
-
-			setTimeout(function () {
-				group._animationEnd();
-				group.fire('spiderfied', {
-					cluster: me,
-					markers: childMarkers
-				});
-			}, 200);
-		},
-
-		_animationUnspiderfy: function (zoomDetails) {
-			var me = this,
-				group = this._group,
-				map = group._map,
-				fg = group._featureGroup,
-				thisLayerPos = zoomDetails ? map._latLngToNewLayerPoint(this._latlng, zoomDetails.zoom, zoomDetails.center) : map.latLngToLayerPoint(this._latlng),
-				childMarkers = this.getAllChildMarkers(null, true),
-				svg = L.Path.SVG,
-				m, i, leg, legPath, legLength, nonAnimatable;
-
-			group._ignoreMove = true;
-			group._animationStart();
-
-			//Make us visible and bring the child markers back in
-			this.setOpacity(1);
-			for (i = childMarkers.length - 1; i >= 0; i--) {
-				m = childMarkers[i];
-
-				//Marker was added to us after we were spiderfied
-				if (!m._preSpiderfyLatlng) {
-					continue;
-				}
-
-				//Close any popup on the marker first, otherwise setting the location of the marker will make the map scroll
-				m.closePopup();
-
-				//Fix up the location to the real one
-				m.setLatLng(m._preSpiderfyLatlng);
-				delete m._preSpiderfyLatlng;
-
-				//Hack override the location to be our center
-				nonAnimatable = true;
-				if (m._setPos) {
-					m._setPos(thisLayerPos);
-					nonAnimatable = false;
-				}
-				if (m.clusterHide) {
-					m.clusterHide();
-					nonAnimatable = false;
-				}
-				if (nonAnimatable) {
-					fg.removeLayer(m);
-				}
-
-				// Animate the spider leg back in (animation is actually delegated to CSS transition).
-				if (svg) {
-					leg = m._spiderLeg;
-					legPath = leg._path;
-					legLength = legPath.getTotalLength() + 0.1;
-					legPath.style.strokeDashoffset = legLength;
-					leg.setStyle({opacity: 0});
-				}
-			}
-
-			group._ignoreMove = false;
-
-			setTimeout(function () {
-				//If we have only <= one child left then that marker will be shown on the map so don't remove it!
-				var stillThereChildCount = 0;
-				for (i = childMarkers.length - 1; i >= 0; i--) {
-					m = childMarkers[i];
-					if (m._spiderLeg) {
-						stillThereChildCount++;
-					}
-				}
-
-
-				for (i = childMarkers.length - 1; i >= 0; i--) {
-					m = childMarkers[i];
-
-					if (!m._spiderLeg) { //Has already been unspiderfied
-						continue;
-					}
-
-					if (m.clusterShow) {
-						m.clusterShow();
-					}
-					if (m.setZIndexOffset) {
-						m.setZIndexOffset(0);
-					}
-
-					if (stillThereChildCount > 1) {
-						fg.removeLayer(m);
-					}
-
-					map.removeLayer(m._spiderLeg);
-					delete m._spiderLeg;
-				}
-				group._animationEnd();
-				group.fire('unspiderfied', {
-					cluster: me,
-					markers: childMarkers
-				});
-			}, 200);
-		}
-	});
-
-
-	L.MarkerClusterGroup.include({
-		//The MarkerCluster currently spiderfied (if any)
-		_spiderfied: null,
-
-		unspiderfy: function () {
-			this._unspiderfy.apply(this, arguments);
-		},
-
-		_spiderfierOnAdd: function () {
-			this._map.on('click', this._unspiderfyWrapper, this);
-
-			if (this._map.options.zoomAnimation) {
-				this._map.on('zoomstart', this._unspiderfyZoomStart, this);
-			}
-			//Browsers without zoomAnimation or a big zoom don't fire zoomstart
-			this._map.on('zoomend', this._noanimationUnspiderfy, this);
-
-			if (!L.Browser.touch) {
-				this._map.getRenderer(this);
-				//Needs to happen in the pageload, not after, or animations don't work in webkit
-				//  http://stackoverflow.com/questions/8455200/svg-animate-with-dynamically-added-elements
-				//Disable on touch browsers as the animation messes up on a touch zoom and isn't very noticable
-			}
-		},
-
-		_spiderfierOnRemove: function () {
-			this._map.off('click', this._unspiderfyWrapper, this);
-			this._map.off('zoomstart', this._unspiderfyZoomStart, this);
-			this._map.off('zoomanim', this._unspiderfyZoomAnim, this);
-			this._map.off('zoomend', this._noanimationUnspiderfy, this);
-
-			//Ensure that markers are back where they should be
-			// Use no animation to avoid a sticky leaflet-cluster-anim class on mapPane
-			this._noanimationUnspiderfy();
-		},
-
-		//On zoom start we add a zoomanim handler so that we are guaranteed to be last (after markers are animated)
-		//This means we can define the animation they do rather than Markers doing an animation to their actual location
-		_unspiderfyZoomStart: function () {
-			if (!this._map) { //May have been removed from the map by a zoomEnd handler
-				return;
-			}
-
-			this._map.on('zoomanim', this._unspiderfyZoomAnim, this);
-		},
-
-		_unspiderfyZoomAnim: function (zoomDetails) {
-			//Wait until the first zoomanim after the user has finished touch-zooming before running the animation
-			if (L.DomUtil.hasClass(this._map._mapPane, 'leaflet-touching')) {
-				return;
-			}
-
-			this._map.off('zoomanim', this._unspiderfyZoomAnim, this);
-			this._unspiderfy(zoomDetails);
-		},
-
-		_unspiderfyWrapper: function () {
-			/// <summary>_unspiderfy but passes no arguments</summary>
-			this._unspiderfy();
-		},
-
-		_unspiderfy: function (zoomDetails) {
-			if (this._spiderfied) {
-				this._spiderfied.unspiderfy(zoomDetails);
-			}
-		},
-
-		_noanimationUnspiderfy: function () {
-			if (this._spiderfied) {
-				this._spiderfied._noanimationUnspiderfy();
-			}
-		},
-
-		//If the given layer is currently being spiderfied then we unspiderfy it so it isn't on the map anymore etc
-		_unspiderfyLayer: function (layer) {
-			if (layer._spiderLeg) {
-				this._featureGroup.removeLayer(layer);
-
-				if (layer.clusterShow) {
-					layer.clusterShow();
-				}
-					//Position will be fixed up immediately in _animationUnspiderfy
-				if (layer.setZIndexOffset) {
-					layer.setZIndexOffset(0);
-				}
-
-				this._map.removeLayer(layer._spiderLeg);
-				delete layer._spiderLeg;
-			}
-		}
-	});
-
-	/**
-	 * Adds 1 public method to MCG and 1 to L.Marker to facilitate changing
-	 * markers' icon options and refreshing their icon and their parent clusters
-	 * accordingly (case where their iconCreateFunction uses data of childMarkers
-	 * to make up the cluster icon).
-	 */
-
-
-	L.MarkerClusterGroup.include({
-		/**
-		 * Updates the icon of all clusters which are parents of the given marker(s).
-		 * In singleMarkerMode, also updates the given marker(s) icon.
-		 * @param layers L.MarkerClusterGroup|L.LayerGroup|Array(L.Marker)|Map(L.Marker)|
-		 * L.MarkerCluster|L.Marker (optional) list of markers (or single marker) whose parent
-		 * clusters need to be updated. If not provided, retrieves all child markers of this.
-		 * @returns {L.MarkerClusterGroup}
-		 */
-		refreshClusters: function (layers) {
-			if (!layers) {
-				layers = this._topClusterLevel.getAllChildMarkers();
-			} else if (layers instanceof L.MarkerClusterGroup) {
-				layers = layers._topClusterLevel.getAllChildMarkers();
-			} else if (layers instanceof L.LayerGroup) {
-				layers = layers._layers;
-			} else if (layers instanceof L.MarkerCluster) {
-				layers = layers.getAllChildMarkers();
-			} else if (layers instanceof L.Marker) {
-				layers = [layers];
-			} // else: must be an Array(L.Marker)|Map(L.Marker)
-			this._flagParentsIconsNeedUpdate(layers);
-			this._refreshClustersIcons();
-
-			// In case of singleMarkerMode, also re-draw the markers.
-			if (this.options.singleMarkerMode) {
-				this._refreshSingleMarkerModeMarkers(layers);
-			}
-
-			return this;
-		},
-
-		/**
-		 * Simply flags all parent clusters of the given markers as having a "dirty" icon.
-		 * @param layers Array(L.Marker)|Map(L.Marker) list of markers.
-		 * @private
-		 */
-		_flagParentsIconsNeedUpdate: function (layers) {
-			var id, parent;
-
-			// Assumes layers is an Array or an Object whose prototype is non-enumerable.
-			for (id in layers) {
-				// Flag parent clusters' icon as "dirty", all the way up.
-				// Dumb process that flags multiple times upper parents, but still
-				// much more efficient than trying to be smart and make short lists,
-				// at least in the case of a hierarchy following a power law:
-				// http://jsperf.com/flag-nodes-in-power-hierarchy/2
-				parent = layers[id].__parent;
-				while (parent) {
-					parent._iconNeedsUpdate = true;
-					parent = parent.__parent;
-				}
-			}
-		},
-
-		/**
-		 * Re-draws the icon of the supplied markers.
-		 * To be used in singleMarkerMode only.
-		 * @param layers Array(L.Marker)|Map(L.Marker) list of markers.
-		 * @private
-		 */
-		_refreshSingleMarkerModeMarkers: function (layers) {
-			var id, layer;
-
-			for (id in layers) {
-				layer = layers[id];
-
-				// Make sure we do not override markers that do not belong to THIS group.
-				if (this.hasLayer(layer)) {
-					// Need to re-create the icon first, then re-draw the marker.
-					layer.setIcon(this._overrideMarkerIcon(layer));
-				}
-			}
-		}
-	});
-
-	L.Marker.include({
-		/**
-		 * Updates the given options in the marker's icon and refreshes the marker.
-		 * @param options map object of icon options.
-		 * @param directlyRefreshClusters boolean (optional) true to trigger
-		 * MCG.refreshClustersOf() right away with this single marker.
-		 * @returns {L.Marker}
-		 */
-		refreshIconOptions: function (options, directlyRefreshClusters) {
-			var icon = this.options.icon;
-
-			L.setOptions(icon, options);
-
-			this.setIcon(icon);
-
-			// Shortcut to refresh the associated MCG clusters right away.
-			// To be used when refreshing a single marker.
-			// Otherwise, better use MCG.refreshClusters() once at the end with
-			// the list of modified markers.
-			if (directlyRefreshClusters && this.__parent) {
-				this.__parent._group.refreshClusters(this);
-			}
-
-			return this;
-		}
-	});
-
-	exports.MarkerClusterGroup = MarkerClusterGroup;
-	exports.MarkerCluster = MarkerCluster;
-
-	Object.defineProperty(exports, '__esModule', { value: true });
-
-}));
-//# sourceMappingURL=leaflet.markercluster-src.js.map
diff --git a/xcxMapSecurityPosition/lid/proj4.js b/xcxMapSecurityPosition/lid/proj4.js
deleted file mode 100644
index 0fdb880..0000000
--- a/xcxMapSecurityPosition/lid/proj4.js
+++ /dev/null
@@ -1,5485 +0,0 @@
-!function(e){if("object"==typeof exports)module.exports=e();else if("function"==typeof define&&define.amd)define(e);else{var f;"undefined"!=typeof window?f=window:"undefined"!=typeof global?f=global:"undefined"!=typeof self&&(f=self),f.proj4=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){
-var mgrs = _dereq_('mgrs');
-
-function Point(x, y, z) {
-  if (!(this instanceof Point)) {
-    return new Point(x, y, z);
-  }
-  if (Array.isArray(x)) {
-    this.x = x[0];
-    this.y = x[1];
-    this.z = x[2] || 0.0;
-  } else if(typeof x === 'object') {
-    this.x = x.x;
-    this.y = x.y;
-    this.z = x.z || 0.0;
-  } else if (typeof x === 'string' && typeof y === 'undefined') {
-    var coords = x.split(',');
-    this.x = parseFloat(coords[0], 10);
-    this.y = parseFloat(coords[1], 10);
-    this.z = parseFloat(coords[2], 10) || 0.0;
-  } else {
-    this.x = x;
-    this.y = y;
-    this.z = z || 0.0;
-  }
-  console.warn('proj4.Point will be removed in version 3, use proj4.toPoint');
-}
-
-Point.fromMGRS = function(mgrsStr) {
-  return new Point(mgrs.toPoint(mgrsStr));
-};
-Point.prototype.toMGRS = function(accuracy) {
-  return mgrs.forward([this.x, this.y], accuracy);
-};
-module.exports = Point;
-
-},{"mgrs":67}],2:[function(_dereq_,module,exports){
-var parseCode = _dereq_("./parseCode");
-var extend = _dereq_('./extend');
-var projections = _dereq_('./projections');
-var deriveConstants = _dereq_('./deriveConstants');
-
-function Projection(srsCode,callback) {
-  if (!(this instanceof Projection)) {
-    return new Projection(srsCode);
-  }
-  callback = callback || function(error){
-    if(error){
-      throw error;
-    }
-  };
-  var json = parseCode(srsCode);
-  if(typeof json !== 'object'){
-    callback(srsCode);
-    return;
-  }
-  var modifiedJSON = deriveConstants(json);
-  var ourProj = Projection.projections.get(modifiedJSON.projName);
-  if(ourProj){
-    extend(this, modifiedJSON);
-    extend(this, ourProj);
-    this.init();
-    callback(null, this);
-  }else{
-    callback(srsCode);
-  }
-}
-Projection.projections = projections;
-Projection.projections.start();
-module.exports = Projection;
-
-},{"./deriveConstants":33,"./extend":34,"./parseCode":37,"./projections":39}],3:[function(_dereq_,module,exports){
-module.exports = function(crs, denorm, point) {
-  var xin = point.x,
-    yin = point.y,
-    zin = point.z || 0.0;
-  var v, t, i;
-  for (i = 0; i < 3; i++) {
-    if (denorm && i === 2 && point.z === undefined) {
-      continue;
-    }
-    if (i === 0) {
-      v = xin;
-      t = 'x';
-    }
-    else if (i === 1) {
-      v = yin;
-      t = 'y';
-    }
-    else {
-      v = zin;
-      t = 'z';
-    }
-    switch (crs.axis[i]) {
-    case 'e':
-      point[t] = v;
-      break;
-    case 'w':
-      point[t] = -v;
-      break;
-    case 'n':
-      point[t] = v;
-      break;
-    case 's':
-      point[t] = -v;
-      break;
-    case 'u':
-      if (point[t] !== undefined) {
-        point.z = v;
-      }
-      break;
-    case 'd':
-      if (point[t] !== undefined) {
-        point.z = -v;
-      }
-      break;
-    default:
-      //console.log("ERROR: unknow axis ("+crs.axis[i]+") - check definition of "+crs.projName);
-      return null;
-    }
-  }
-  return point;
-};
-
-},{}],4:[function(_dereq_,module,exports){
-var HALF_PI = Math.PI/2;
-var sign = _dereq_('./sign');
-
-module.exports = function(x) {
-  return (Math.abs(x) < HALF_PI) ? x : (x - (sign(x) * Math.PI));
-};
-},{"./sign":21}],5:[function(_dereq_,module,exports){
-var TWO_PI = Math.PI * 2;
-// SPI is slightly greater than Math.PI, so values that exceed the -180..180
-// degree range by a tiny amount don't get wrapped. This prevents points that
-// have drifted from their original location along the 180th meridian (due to
-// floating point error) from changing their sign.
-var SPI = 3.14159265359;
-var sign = _dereq_('./sign');
-
-module.exports = function(x) {
-  return (Math.abs(x) <= SPI) ? x : (x - (sign(x) * TWO_PI));
-};
-},{"./sign":21}],6:[function(_dereq_,module,exports){
-module.exports = function(x) {
-  if (Math.abs(x) > 1) {
-    x = (x > 1) ? 1 : -1;
-  }
-  return Math.asin(x);
-};
-},{}],7:[function(_dereq_,module,exports){
-module.exports = function(x) {
-  return (1 - 0.25 * x * (1 + x / 16 * (3 + 1.25 * x)));
-};
-},{}],8:[function(_dereq_,module,exports){
-module.exports = function(x) {
-  return (0.375 * x * (1 + 0.25 * x * (1 + 0.46875 * x)));
-};
-},{}],9:[function(_dereq_,module,exports){
-module.exports = function(x) {
-  return (0.05859375 * x * x * (1 + 0.75 * x));
-};
-},{}],10:[function(_dereq_,module,exports){
-module.exports = function(x) {
-  return (x * x * x * (35 / 3072));
-};
-},{}],11:[function(_dereq_,module,exports){
-module.exports = function(a, e, sinphi) {
-  var temp = e * sinphi;
-  return a / Math.sqrt(1 - temp * temp);
-};
-},{}],12:[function(_dereq_,module,exports){
-module.exports = function(ml, e0, e1, e2, e3) {
-  var phi;
-  var dphi;
-
-  phi = ml / e0;
-  for (var i = 0; i < 15; i++) {
-    dphi = (ml - (e0 * phi - e1 * Math.sin(2 * phi) + e2 * Math.sin(4 * phi) - e3 * Math.sin(6 * phi))) / (e0 - 2 * e1 * Math.cos(2 * phi) + 4 * e2 * Math.cos(4 * phi) - 6 * e3 * Math.cos(6 * phi));
-    phi += dphi;
-    if (Math.abs(dphi) <= 0.0000000001) {
-      return phi;
-    }
-  }
-
-  //..reportError("IMLFN-CONV:Latitude failed to converge after 15 iterations");
-  return NaN;
-};
-},{}],13:[function(_dereq_,module,exports){
-var HALF_PI = Math.PI/2;
-
-module.exports = function(eccent, q) {
-  var temp = 1 - (1 - eccent * eccent) / (2 * eccent) * Math.log((1 - eccent) / (1 + eccent));
-  if (Math.abs(Math.abs(q) - temp) < 1.0E-6) {
-    if (q < 0) {
-      return (-1 * HALF_PI);
-    }
-    else {
-      return HALF_PI;
-    }
-  }
-  //var phi = 0.5* q/(1-eccent*eccent);
-  var phi = Math.asin(0.5 * q);
-  var dphi;
-  var sin_phi;
-  var cos_phi;
-  var con;
-  for (var i = 0; i < 30; i++) {
-    sin_phi = Math.sin(phi);
-    cos_phi = Math.cos(phi);
-    con = eccent * sin_phi;
-    dphi = Math.pow(1 - con * con, 2) / (2 * cos_phi) * (q / (1 - eccent * eccent) - sin_phi / (1 - con * con) + 0.5 / eccent * Math.log((1 - con) / (1 + con)));
-    phi += dphi;
-    if (Math.abs(dphi) <= 0.0000000001) {
-      return phi;
-    }
-  }
-
-  //console.log("IQSFN-CONV:Latitude failed to converge after 30 iterations");
-  return NaN;
-};
-},{}],14:[function(_dereq_,module,exports){
-module.exports = function(e0, e1, e2, e3, phi) {
-  return (e0 * phi - e1 * Math.sin(2 * phi) + e2 * Math.sin(4 * phi) - e3 * Math.sin(6 * phi));
-};
-},{}],15:[function(_dereq_,module,exports){
-module.exports = function(eccent, sinphi, cosphi) {
-  var con = eccent * sinphi;
-  return cosphi / (Math.sqrt(1 - con * con));
-};
-},{}],16:[function(_dereq_,module,exports){
-var HALF_PI = Math.PI/2;
-module.exports = function(eccent, ts) {
-  var eccnth = 0.5 * eccent;
-  var con, dphi;
-  var phi = HALF_PI - 2 * Math.atan(ts);
-  for (var i = 0; i <= 15; i++) {
-    con = eccent * Math.sin(phi);
-    dphi = HALF_PI - 2 * Math.atan(ts * (Math.pow(((1 - con) / (1 + con)), eccnth))) - phi;
-    phi += dphi;
-    if (Math.abs(dphi) <= 0.0000000001) {
-      return phi;
-    }
-  }
-  //console.log("phi2z has NoConvergence");
-  return -9999;
-};
-},{}],17:[function(_dereq_,module,exports){
-var C00 = 1;
-var C02 = 0.25;
-var C04 = 0.046875;
-var C06 = 0.01953125;
-var C08 = 0.01068115234375;
-var C22 = 0.75;
-var C44 = 0.46875;
-var C46 = 0.01302083333333333333;
-var C48 = 0.00712076822916666666;
-var C66 = 0.36458333333333333333;
-var C68 = 0.00569661458333333333;
-var C88 = 0.3076171875;
-
-module.exports = function(es) {
-  var en = [];
-  en[0] = C00 - es * (C02 + es * (C04 + es * (C06 + es * C08)));
-  en[1] = es * (C22 - es * (C04 + es * (C06 + es * C08)));
-  var t = es * es;
-  en[2] = t * (C44 - es * (C46 + es * C48));
-  t *= es;
-  en[3] = t * (C66 - es * C68);
-  en[4] = t * es * C88;
-  return en;
-};
-},{}],18:[function(_dereq_,module,exports){
-var pj_mlfn = _dereq_("./pj_mlfn");
-var EPSLN = 1.0e-10;
-var MAX_ITER = 20;
-module.exports = function(arg, es, en) {
-  var k = 1 / (1 - es);
-  var phi = arg;
-  for (var i = MAX_ITER; i; --i) { /* rarely goes over 2 iterations */
-    var s = Math.sin(phi);
-    var t = 1 - es * s * s;
-    //t = this.pj_mlfn(phi, s, Math.cos(phi), en) - arg;
-    //phi -= t * (t * Math.sqrt(t)) * k;
-    t = (pj_mlfn(phi, s, Math.cos(phi), en) - arg) * (t * Math.sqrt(t)) * k;
-    phi -= t;
-    if (Math.abs(t) < EPSLN) {
-      return phi;
-    }
-  }
-  //..reportError("cass:pj_inv_mlfn: Convergence error");
-  return phi;
-};
-},{"./pj_mlfn":19}],19:[function(_dereq_,module,exports){
-module.exports = function(phi, sphi, cphi, en) {
-  cphi *= sphi;
-  sphi *= sphi;
-  return (en[0] * phi - cphi * (en[1] + sphi * (en[2] + sphi * (en[3] + sphi * en[4]))));
-};
-},{}],20:[function(_dereq_,module,exports){
-module.exports = function(eccent, sinphi) {
-  var con;
-  if (eccent > 1.0e-7) {
-    con = eccent * sinphi;
-    return ((1 - eccent * eccent) * (sinphi / (1 - con * con) - (0.5 / eccent) * Math.log((1 - con) / (1 + con))));
-  }
-  else {
-    return (2 * sinphi);
-  }
-};
-},{}],21:[function(_dereq_,module,exports){
-module.exports = function(x) {
-  return x<0 ? -1 : 1;
-};
-},{}],22:[function(_dereq_,module,exports){
-module.exports = function(esinp, exp) {
-  return (Math.pow((1 - esinp) / (1 + esinp), exp));
-};
-},{}],23:[function(_dereq_,module,exports){
-module.exports = function (array){
-  var out = {
-    x: array[0],
-    y: array[1]
-  };
-  if (array.length>2) {
-    out.z = array[2];
-  }
-  if (array.length>3) {
-    out.m = array[3];
-  }
-  return out;
-};
-},{}],24:[function(_dereq_,module,exports){
-var HALF_PI = Math.PI/2;
-
-module.exports = function(eccent, phi, sinphi) {
-  var con = eccent * sinphi;
-  var com = 0.5 * eccent;
-  con = Math.pow(((1 - con) / (1 + con)), com);
-  return (Math.tan(0.5 * (HALF_PI - phi)) / con);
-};
-},{}],25:[function(_dereq_,module,exports){
-exports.wgs84 = {
-  towgs84: "0,0,0",
-  ellipse: "WGS84",
-  datumName: "WGS84"
-};
-exports.ch1903 = {
-  towgs84: "674.374,15.056,405.346",
-  ellipse: "bessel",
-  datumName: "swiss"
-};
-exports.ggrs87 = {
-  towgs84: "-199.87,74.79,246.62",
-  ellipse: "GRS80",
-  datumName: "Greek_Geodetic_Reference_System_1987"
-};
-exports.nad83 = {
-  towgs84: "0,0,0",
-  ellipse: "GRS80",
-  datumName: "North_American_Datum_1983"
-};
-exports.nad27 = {
-  nadgrids: "@conus,@alaska,@ntv2_0.gsb,@ntv1_can.dat",
-  ellipse: "clrk66",
-  datumName: "North_American_Datum_1927"
-};
-exports.potsdam = {
-  towgs84: "606.0,23.0,413.0",
-  ellipse: "bessel",
-  datumName: "Potsdam Rauenberg 1950 DHDN"
-};
-exports.carthage = {
-  towgs84: "-263.0,6.0,431.0",
-  ellipse: "clark80",
-  datumName: "Carthage 1934 Tunisia"
-};
-exports.hermannskogel = {
-  towgs84: "653.0,-212.0,449.0",
-  ellipse: "bessel",
-  datumName: "Hermannskogel"
-};
-exports.ire65 = {
-  towgs84: "482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15",
-  ellipse: "mod_airy",
-  datumName: "Ireland 1965"
-};
-exports.rassadiran = {
-  towgs84: "-133.63,-157.5,-158.62",
-  ellipse: "intl",
-  datumName: "Rassadiran"
-};
-exports.nzgd49 = {
-  towgs84: "59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993",
-  ellipse: "intl",
-  datumName: "New Zealand Geodetic Datum 1949"
-};
-exports.osgb36 = {
-  towgs84: "446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894",
-  ellipse: "airy",
-  datumName: "Airy 1830"
-};
-exports.s_jtsk = {
-  towgs84: "589,76,480",
-  ellipse: 'bessel',
-  datumName: 'S-JTSK (Ferro)'
-};
-exports.beduaram = {
-  towgs84: '-106,-87,188',
-  ellipse: 'clrk80',
-  datumName: 'Beduaram'
-};
-exports.gunung_segara = {
-  towgs84: '-403,684,41',
-  ellipse: 'bessel',
-  datumName: 'Gunung Segara Jakarta'
-};
-exports.rnb72 = {
-  towgs84: "106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1",
-  ellipse: "intl",
-  datumName: "Reseau National Belge 1972"
-};
-},{}],26:[function(_dereq_,module,exports){
-exports.MERIT = {
-  a: 6378137.0,
-  rf: 298.257,
-  ellipseName: "MERIT 1983"
-};
-exports.SGS85 = {
-  a: 6378136.0,
-  rf: 298.257,
-  ellipseName: "Soviet Geodetic System 85"
-};
-exports.GRS80 = {
-  a: 6378137.0,
-  rf: 298.257222101,
-  ellipseName: "GRS 1980(IUGG, 1980)"
-};
-exports.IAU76 = {
-  a: 6378140.0,
-  rf: 298.257,
-  ellipseName: "IAU 1976"
-};
-exports.airy = {
-  a: 6377563.396,
-  b: 6356256.910,
-  ellipseName: "Airy 1830"
-};
-exports.APL4 = {
-  a: 6378137,
-  rf: 298.25,
-  ellipseName: "Appl. Physics. 1965"
-};
-exports.NWL9D = {
-  a: 6378145.0,
-  rf: 298.25,
-  ellipseName: "Naval Weapons Lab., 1965"
-};
-exports.mod_airy = {
-  a: 6377340.189,
-  b: 6356034.446,
-  ellipseName: "Modified Airy"
-};
-exports.andrae = {
-  a: 6377104.43,
-  rf: 300.0,
-  ellipseName: "Andrae 1876 (Den., Iclnd.)"
-};
-exports.aust_SA = {
-  a: 6378160.0,
-  rf: 298.25,
-  ellipseName: "Australian Natl & S. Amer. 1969"
-};
-exports.GRS67 = {
-  a: 6378160.0,
-  rf: 298.2471674270,
-  ellipseName: "GRS 67(IUGG 1967)"
-};
-exports.bessel = {
-  a: 6377397.155,
-  rf: 299.1528128,
-  ellipseName: "Bessel 1841"
-};
-exports.bess_nam = {
-  a: 6377483.865,
-  rf: 299.1528128,
-  ellipseName: "Bessel 1841 (Namibia)"
-};
-exports.clrk66 = {
-  a: 6378206.4,
-  b: 6356583.8,
-  ellipseName: "Clarke 1866"
-};
-exports.clrk80 = {
-  a: 6378249.145,
-  rf: 293.4663,
-  ellipseName: "Clarke 1880 mod."
-};
-exports.clrk58 = {
-  a: 6378293.645208759,
-  rf: 294.2606763692654,
-  ellipseName: "Clarke 1858"
-};
-exports.CPM = {
-  a: 6375738.7,
-  rf: 334.29,
-  ellipseName: "Comm. des Poids et Mesures 1799"
-};
-exports.delmbr = {
-  a: 6376428.0,
-  rf: 311.5,
-  ellipseName: "Delambre 1810 (Belgium)"
-};
-exports.engelis = {
-  a: 6378136.05,
-  rf: 298.2566,
-  ellipseName: "Engelis 1985"
-};
-exports.evrst30 = {
-  a: 6377276.345,
-  rf: 300.8017,
-  ellipseName: "Everest 1830"
-};
-exports.evrst48 = {
-  a: 6377304.063,
-  rf: 300.8017,
-  ellipseName: "Everest 1948"
-};
-exports.evrst56 = {
-  a: 6377301.243,
-  rf: 300.8017,
-  ellipseName: "Everest 1956"
-};
-exports.evrst69 = {
-  a: 6377295.664,
-  rf: 300.8017,
-  ellipseName: "Everest 1969"
-};
-exports.evrstSS = {
-  a: 6377298.556,
-  rf: 300.8017,
-  ellipseName: "Everest (Sabah & Sarawak)"
-};
-exports.fschr60 = {
-  a: 6378166.0,
-  rf: 298.3,
-  ellipseName: "Fischer (Mercury Datum) 1960"
-};
-exports.fschr60m = {
-  a: 6378155.0,
-  rf: 298.3,
-  ellipseName: "Fischer 1960"
-};
-exports.fschr68 = {
-  a: 6378150.0,
-  rf: 298.3,
-  ellipseName: "Fischer 1968"
-};
-exports.helmert = {
-  a: 6378200.0,
-  rf: 298.3,
-  ellipseName: "Helmert 1906"
-};
-exports.hough = {
-  a: 6378270.0,
-  rf: 297.0,
-  ellipseName: "Hough"
-};
-exports.intl = {
-  a: 6378388.0,
-  rf: 297.0,
-  ellipseName: "International 1909 (Hayford)"
-};
-exports.kaula = {
-  a: 6378163.0,
-  rf: 298.24,
-  ellipseName: "Kaula 1961"
-};
-exports.lerch = {
-  a: 6378139.0,
-  rf: 298.257,
-  ellipseName: "Lerch 1979"
-};
-exports.mprts = {
-  a: 6397300.0,
-  rf: 191.0,
-  ellipseName: "Maupertius 1738"
-};
-exports.new_intl = {
-  a: 6378157.5,
-  b: 6356772.2,
-  ellipseName: "New International 1967"
-};
-exports.plessis = {
-  a: 6376523.0,
-  rf: 6355863.0,
-  ellipseName: "Plessis 1817 (France)"
-};
-exports.krass = {
-  a: 6378245.0,
-  rf: 298.3,
-  ellipseName: "Krassovsky, 1942"
-};
-exports.SEasia = {
-  a: 6378155.0,
-  b: 6356773.3205,
-  ellipseName: "Southeast Asia"
-};
-exports.walbeck = {
-  a: 6376896.0,
-  b: 6355834.8467,
-  ellipseName: "Walbeck"
-};
-exports.WGS60 = {
-  a: 6378165.0,
-  rf: 298.3,
-  ellipseName: "WGS 60"
-};
-exports.WGS66 = {
-  a: 6378145.0,
-  rf: 298.25,
-  ellipseName: "WGS 66"
-};
-exports.WGS7 = {
-  a: 6378135.0,
-  rf: 298.26,
-  ellipseName: "WGS 72"
-};
-exports.WGS84 = {
-  a: 6378137.0,
-  rf: 298.257223563,
-  ellipseName: "WGS 84"
-};
-exports.sphere = {
-  a: 6370997.0,
-  b: 6370997.0,
-  ellipseName: "Normal Sphere (r=6370997)"
-};
-},{}],27:[function(_dereq_,module,exports){
-exports.greenwich = 0.0; //"0dE",
-exports.lisbon = -9.131906111111; //"9d07'54.862\"W",
-exports.paris = 2.337229166667; //"2d20'14.025\"E",
-exports.bogota = -74.080916666667; //"74d04'51.3\"W",
-exports.madrid = -3.687938888889; //"3d41'16.58\"W",
-exports.rome = 12.452333333333; //"12d27'8.4\"E",
-exports.bern = 7.439583333333; //"7d26'22.5\"E",
-exports.jakarta = 106.807719444444; //"106d48'27.79\"E",
-exports.ferro = -17.666666666667; //"17d40'W",
-exports.brussels = 4.367975; //"4d22'4.71\"E",
-exports.stockholm = 18.058277777778; //"18d3'29.8\"E",
-exports.athens = 23.7163375; //"23d42'58.815\"E",
-exports.oslo = 10.722916666667; //"10d43'22.5\"E"
-},{}],28:[function(_dereq_,module,exports){
-exports.ft = {to_meter: 0.3048};
-exports['us-ft'] = {to_meter: 1200 / 3937};
-
-},{}],29:[function(_dereq_,module,exports){
-var proj = _dereq_('./Proj');
-var transform = _dereq_('./transform');
-var wgs84 = proj('WGS84');
-
-function transformer(from, to, coords) {
-  var transformedArray;
-  if (Array.isArray(coords)) {
-    transformedArray = transform(from, to, coords);
-    if (coords.length === 3) {
-      return [transformedArray.x, transformedArray.y, transformedArray.z];
-    }
-    else {
-      return [transformedArray.x, transformedArray.y];
-    }
-  }
-  else {
-    return transform(from, to, coords);
-  }
-}
-
-function checkProj(item) {
-  if (item instanceof proj) {
-    return item;
-  }
-  if (item.oProj) {
-    return item.oProj;
-  }
-  return proj(item);
-}
-function proj4(fromProj, toProj, coord) {
-  fromProj = checkProj(fromProj);
-  var single = false;
-  var obj;
-  if (typeof toProj === 'undefined') {
-    toProj = fromProj;
-    fromProj = wgs84;
-    single = true;
-  }
-  else if (typeof toProj.x !== 'undefined' || Array.isArray(toProj)) {
-    coord = toProj;
-    toProj = fromProj;
-    fromProj = wgs84;
-    single = true;
-  }
-  toProj = checkProj(toProj);
-  if (coord) {
-    return transformer(fromProj, toProj, coord);
-  }
-  else {
-    obj = {
-      forward: function(coords) {
-        return transformer(fromProj, toProj, coords);
-      },
-      inverse: function(coords) {
-        return transformer(toProj, fromProj, coords);
-      }
-    };
-    if (single) {
-      obj.oProj = toProj;
-    }
-    return obj;
-  }
-}
-module.exports = proj4;
-},{"./Proj":2,"./transform":65}],30:[function(_dereq_,module,exports){
-var HALF_PI = Math.PI/2;
-var PJD_3PARAM = 1;
-var PJD_7PARAM = 2;
-var PJD_GRIDSHIFT = 3;
-var PJD_WGS84 = 4; // WGS84 or equivalent
-var PJD_NODATUM = 5; // WGS84 or equivalent
-var SEC_TO_RAD = 4.84813681109535993589914102357e-6;
-var AD_C = 1.0026000;
-var COS_67P5 = 0.38268343236508977;
-var datum = function(proj) {
-  if (!(this instanceof datum)) {
-    return new datum(proj);
-  }
-  this.datum_type = PJD_WGS84; //default setting
-  if (!proj) {
-    return;
-  }
-  if (proj.datumCode && proj.datumCode === 'none') {
-    this.datum_type = PJD_NODATUM;
-  }
-
-  if (proj.datum_params) {
-    this.datum_params = proj.datum_params.map(parseFloat);
-    if (this.datum_params[0] !== 0 || this.datum_params[1] !== 0 || this.datum_params[2] !== 0) {
-      this.datum_type = PJD_3PARAM;
-    }
-    if (this.datum_params.length > 3) {
-      if (this.datum_params[3] !== 0 || this.datum_params[4] !== 0 || this.datum_params[5] !== 0 || this.datum_params[6] !== 0) {
-        this.datum_type = PJD_7PARAM;
-        this.datum_params[3] *= SEC_TO_RAD;
-        this.datum_params[4] *= SEC_TO_RAD;
-        this.datum_params[5] *= SEC_TO_RAD;
-        this.datum_params[6] = (this.datum_params[6] / 1000000.0) + 1.0;
-      }
-    }
-  }
-
-  // DGR 2011-03-21 : nadgrids support
-  this.datum_type = proj.grids ? PJD_GRIDSHIFT : this.datum_type;
-
-  this.a = proj.a; //datum object also uses these values
-  this.b = proj.b;
-  this.es = proj.es;
-  this.ep2 = proj.ep2;
-  if (this.datum_type === PJD_GRIDSHIFT) {
-    this.grids = proj.grids;
-  }
-};
-datum.prototype = {
-
-
-  /****************************************************************/
-  // cs_compare_datums()
-  //   Returns TRUE if the two datums match, otherwise FALSE.
-  compare_datums: function(dest) {
-    if (this.datum_type !== dest.datum_type) {
-      return false; // false, datums are not equal
-    }
-    else if (this.a !== dest.a || Math.abs(this.es - dest.es) > 0.000000000050) {
-      // the tolerence for es is to ensure that GRS80 and WGS84
-      // are considered identical
-      return false;
-    }
-    else if (this.datum_type === PJD_3PARAM) {
-      return (this.datum_params[0] === dest.datum_params[0] && this.datum_params[1] === dest.datum_params[1] && this.datum_params[2] === dest.datum_params[2]);
-    }
-    else if (this.datum_type === PJD_7PARAM) {
-      return (this.datum_params[0] === dest.datum_params[0] && this.datum_params[1] === dest.datum_params[1] && this.datum_params[2] === dest.datum_params[2] && this.datum_params[3] === dest.datum_params[3] && this.datum_params[4] === dest.datum_params[4] && this.datum_params[5] === dest.datum_params[5] && this.datum_params[6] === dest.datum_params[6]);
-    }
-    else if (this.datum_type === PJD_GRIDSHIFT || dest.datum_type === PJD_GRIDSHIFT) {
-      //alert("ERROR: Grid shift transformations are not implemented.");
-      //return false
-      //DGR 2012-07-29 lazy ...
-      return this.nadgrids === dest.nadgrids;
-    }
-    else {
-      return true; // datums are equal
-    }
-  }, // cs_compare_datums()
-
-  /*
-   * The function Convert_Geodetic_To_Geocentric converts geodetic coordinates
-   * (latitude, longitude, and height) to geocentric coordinates (X, Y, Z),
-   * according to the current ellipsoid parameters.
-   *
-   *    Latitude  : Geodetic latitude in radians                     (input)
-   *    Longitude : Geodetic longitude in radians                    (input)
-   *    Height    : Geodetic height, in meters                       (input)
-   *    X         : Calculated Geocentric X coordinate, in meters    (output)
-   *    Y         : Calculated Geocentric Y coordinate, in meters    (output)
-   *    Z         : Calculated Geocentric Z coordinate, in meters    (output)
-   *
-   */
-  geodetic_to_geocentric: function(p) {
-    var Longitude = p.x;
-    var Latitude = p.y;
-    var Height = p.z ? p.z : 0; //Z value not always supplied
-    var X; // output
-    var Y;
-    var Z;
-
-    var Error_Code = 0; //  GEOCENT_NO_ERROR;
-    var Rn; /*  Earth radius at location  */
-    var Sin_Lat; /*  Math.sin(Latitude)  */
-    var Sin2_Lat; /*  Square of Math.sin(Latitude)  */
-    var Cos_Lat; /*  Math.cos(Latitude)  */
-
-    /*
-     ** Don't blow up if Latitude is just a little out of the value
-     ** range as it may just be a rounding issue.  Also removed longitude
-     ** test, it should be wrapped by Math.cos() and Math.sin().  NFW for PROJ.4, Sep/2001.
-     */
-    if (Latitude < -HALF_PI && Latitude > -1.001 * HALF_PI) {
-      Latitude = -HALF_PI;
-    }
-    else if (Latitude > HALF_PI && Latitude < 1.001 * HALF_PI) {
-      Latitude = HALF_PI;
-    }
-    else if ((Latitude < -HALF_PI) || (Latitude > HALF_PI)) {
-      /* Latitude out of range */
-      //..reportError('geocent:lat out of range:' + Latitude);
-      return null;
-    }
-
-    if (Longitude > Math.PI) {
-      Longitude -= (2 * Math.PI);
-    }
-    Sin_Lat = Math.sin(Latitude);
-    Cos_Lat = Math.cos(Latitude);
-    Sin2_Lat = Sin_Lat * Sin_Lat;
-    Rn = this.a / (Math.sqrt(1.0e0 - this.es * Sin2_Lat));
-    X = (Rn + Height) * Cos_Lat * Math.cos(Longitude);
-    Y = (Rn + Height) * Cos_Lat * Math.sin(Longitude);
-    Z = ((Rn * (1 - this.es)) + Height) * Sin_Lat;
-
-    p.x = X;
-    p.y = Y;
-    p.z = Z;
-    return Error_Code;
-  }, // cs_geodetic_to_geocentric()
-
-
-  geocentric_to_geodetic: function(p) {
-    /* local defintions and variables */
-    /* end-criterium of loop, accuracy of sin(Latitude) */
-    var genau = 1e-12;
-    var genau2 = (genau * genau);
-    var maxiter = 30;
-
-    var P; /* distance between semi-minor axis and location */
-    var RR; /* distance between center and location */
-    var CT; /* sin of geocentric latitude */
-    var ST; /* cos of geocentric latitude */
-    var RX;
-    var RK;
-    var RN; /* Earth radius at location */
-    var CPHI0; /* cos of start or old geodetic latitude in iterations */
-    var SPHI0; /* sin of start or old geodetic latitude in iterations */
-    var CPHI; /* cos of searched geodetic latitude */
-    var SPHI; /* sin of searched geodetic latitude */
-    var SDPHI; /* end-criterium: addition-theorem of sin(Latitude(iter)-Latitude(iter-1)) */
-    var At_Pole; /* indicates location is in polar region */
-    var iter; /* # of continous iteration, max. 30 is always enough (s.a.) */
-
-    var X = p.x;
-    var Y = p.y;
-    var Z = p.z ? p.z : 0.0; //Z value not always supplied
-    var Longitude;
-    var Latitude;
-    var Height;
-
-    At_Pole = false;
-    P = Math.sqrt(X * X + Y * Y);
-    RR = Math.sqrt(X * X + Y * Y + Z * Z);
-
-    /*      special cases for latitude and longitude */
-    if (P / this.a < genau) {
-
-      /*  special case, if P=0. (X=0., Y=0.) */
-      At_Pole = true;
-      Longitude = 0.0;
-
-      /*  if (X,Y,Z)=(0.,0.,0.) then Height becomes semi-minor axis
-       *  of ellipsoid (=center of mass), Latitude becomes PI/2 */
-      if (RR / this.a < genau) {
-        Latitude = HALF_PI;
-        Height = -this.b;
-        return;
-      }
-    }
-    else {
-      /*  ellipsoidal (geodetic) longitude
-       *  interval: -PI < Longitude <= +PI */
-      Longitude = Math.atan2(Y, X);
-    }
-
-    /* --------------------------------------------------------------
-     * Following iterative algorithm was developped by
-     * "Institut for Erdmessung", University of Hannover, July 1988.
-     * Internet: www.ife.uni-hannover.de
-     * Iterative computation of CPHI,SPHI and Height.
-     * Iteration of CPHI and SPHI to 10**-12 radian resp.
-     * 2*10**-7 arcsec.
-     * --------------------------------------------------------------
-     */
-    CT = Z / RR;
-    ST = P / RR;
-    RX = 1.0 / Math.sqrt(1.0 - this.es * (2.0 - this.es) * ST * ST);
-    CPHI0 = ST * (1.0 - this.es) * RX;
-    SPHI0 = CT * RX;
-    iter = 0;
-
-    /* loop to find sin(Latitude) resp. Latitude
-     * until |sin(Latitude(iter)-Latitude(iter-1))| < genau */
-    do {
-      iter++;
-      RN = this.a / Math.sqrt(1.0 - this.es * SPHI0 * SPHI0);
-
-      /*  ellipsoidal (geodetic) height */
-      Height = P * CPHI0 + Z * SPHI0 - RN * (1.0 - this.es * SPHI0 * SPHI0);
-
-      RK = this.es * RN / (RN + Height);
-      RX = 1.0 / Math.sqrt(1.0 - RK * (2.0 - RK) * ST * ST);
-      CPHI = ST * (1.0 - RK) * RX;
-      SPHI = CT * RX;
-      SDPHI = SPHI * CPHI0 - CPHI * SPHI0;
-      CPHI0 = CPHI;
-      SPHI0 = SPHI;
-    }
-    while (SDPHI * SDPHI > genau2 && iter < maxiter);
-
-    /*      ellipsoidal (geodetic) latitude */
-    Latitude = Math.atan(SPHI / Math.abs(CPHI));
-
-    p.x = Longitude;
-    p.y = Latitude;
-    p.z = Height;
-    return p;
-  }, // cs_geocentric_to_geodetic()
-
-  /** Convert_Geocentric_To_Geodetic
-   * The method used here is derived from 'An Improved Algorithm for
-   * Geocentric to Geodetic Coordinate Conversion', by Ralph Toms, Feb 1996
-   */
-  geocentric_to_geodetic_noniter: function(p) {
-    var X = p.x;
-    var Y = p.y;
-    var Z = p.z ? p.z : 0; //Z value not always supplied
-    var Longitude;
-    var Latitude;
-    var Height;
-
-    var W; /* distance from Z axis */
-    var W2; /* square of distance from Z axis */
-    var T0; /* initial estimate of vertical component */
-    var T1; /* corrected estimate of vertical component */
-    var S0; /* initial estimate of horizontal component */
-    var S1; /* corrected estimate of horizontal component */
-    var Sin_B0; /* Math.sin(B0), B0 is estimate of Bowring aux variable */
-    var Sin3_B0; /* cube of Math.sin(B0) */
-    var Cos_B0; /* Math.cos(B0) */
-    var Sin_p1; /* Math.sin(phi1), phi1 is estimated latitude */
-    var Cos_p1; /* Math.cos(phi1) */
-    var Rn; /* Earth radius at location */
-    var Sum; /* numerator of Math.cos(phi1) */
-    var At_Pole; /* indicates location is in polar region */
-
-    X = parseFloat(X); // cast from string to float
-    Y = parseFloat(Y);
-    Z = parseFloat(Z);
-
-    At_Pole = false;
-    if (X !== 0.0) {
-      Longitude = Math.atan2(Y, X);
-    }
-    else {
-      if (Y > 0) {
-        Longitude = HALF_PI;
-      }
-      else if (Y < 0) {
-        Longitude = -HALF_PI;
-      }
-      else {
-        At_Pole = true;
-        Longitude = 0.0;
-        if (Z > 0.0) { /* north pole */
-          Latitude = HALF_PI;
-        }
-        else if (Z < 0.0) { /* south pole */
-          Latitude = -HALF_PI;
-        }
-        else { /* center of earth */
-          Latitude = HALF_PI;
-          Height = -this.b;
-          return;
-        }
-      }
-    }
-    W2 = X * X + Y * Y;
-    W = Math.sqrt(W2);
-    T0 = Z * AD_C;
-    S0 = Math.sqrt(T0 * T0 + W2);
-    Sin_B0 = T0 / S0;
-    Cos_B0 = W / S0;
-    Sin3_B0 = Sin_B0 * Sin_B0 * Sin_B0;
-    T1 = Z + this.b * this.ep2 * Sin3_B0;
-    Sum = W - this.a * this.es * Cos_B0 * Cos_B0 * Cos_B0;
-    S1 = Math.sqrt(T1 * T1 + Sum * Sum);
-    Sin_p1 = T1 / S1;
-    Cos_p1 = Sum / S1;
-    Rn = this.a / Math.sqrt(1.0 - this.es * Sin_p1 * Sin_p1);
-    if (Cos_p1 >= COS_67P5) {
-      Height = W / Cos_p1 - Rn;
-    }
-    else if (Cos_p1 <= -COS_67P5) {
-      Height = W / -Cos_p1 - Rn;
-    }
-    else {
-      Height = Z / Sin_p1 + Rn * (this.es - 1.0);
-    }
-    if (At_Pole === false) {
-      Latitude = Math.atan(Sin_p1 / Cos_p1);
-    }
-
-    p.x = Longitude;
-    p.y = Latitude;
-    p.z = Height;
-    return p;
-  }, // geocentric_to_geodetic_noniter()
-
-  /****************************************************************/
-  // pj_geocentic_to_wgs84( p )
-  //  p = point to transform in geocentric coordinates (x,y,z)
-  geocentric_to_wgs84: function(p) {
-
-    if (this.datum_type === PJD_3PARAM) {
-      // if( x[io] === HUGE_VAL )
-      //    continue;
-      p.x += this.datum_params[0];
-      p.y += this.datum_params[1];
-      p.z += this.datum_params[2];
-
-    }
-    else if (this.datum_type === PJD_7PARAM) {
-      var Dx_BF = this.datum_params[0];
-      var Dy_BF = this.datum_params[1];
-      var Dz_BF = this.datum_params[2];
-      var Rx_BF = this.datum_params[3];
-      var Ry_BF = this.datum_params[4];
-      var Rz_BF = this.datum_params[5];
-      var M_BF = this.datum_params[6];
-      // if( x[io] === HUGE_VAL )
-      //    continue;
-      var x_out = M_BF * (p.x - Rz_BF * p.y + Ry_BF * p.z) + Dx_BF;
-      var y_out = M_BF * (Rz_BF * p.x + p.y - Rx_BF * p.z) + Dy_BF;
-      var z_out = M_BF * (-Ry_BF * p.x + Rx_BF * p.y + p.z) + Dz_BF;
-      p.x = x_out;
-      p.y = y_out;
-      p.z = z_out;
-    }
-  }, // cs_geocentric_to_wgs84
-
-  /****************************************************************/
-  // pj_geocentic_from_wgs84()
-  //  coordinate system definition,
-  //  point to transform in geocentric coordinates (x,y,z)
-  geocentric_from_wgs84: function(p) {
-
-    if (this.datum_type === PJD_3PARAM) {
-      //if( x[io] === HUGE_VAL )
-      //    continue;
-      p.x -= this.datum_params[0];
-      p.y -= this.datum_params[1];
-      p.z -= this.datum_params[2];
-
-    }
-    else if (this.datum_type === PJD_7PARAM) {
-      var Dx_BF = this.datum_params[0];
-      var Dy_BF = this.datum_params[1];
-      var Dz_BF = this.datum_params[2];
-      var Rx_BF = this.datum_params[3];
-      var Ry_BF = this.datum_params[4];
-      var Rz_BF = this.datum_params[5];
-      var M_BF = this.datum_params[6];
-      var x_tmp = (p.x - Dx_BF) / M_BF;
-      var y_tmp = (p.y - Dy_BF) / M_BF;
-      var z_tmp = (p.z - Dz_BF) / M_BF;
-      //if( x[io] === HUGE_VAL )
-      //    continue;
-
-      p.x = x_tmp + Rz_BF * y_tmp - Ry_BF * z_tmp;
-      p.y = -Rz_BF * x_tmp + y_tmp + Rx_BF * z_tmp;
-      p.z = Ry_BF * x_tmp - Rx_BF * y_tmp + z_tmp;
-    } //cs_geocentric_from_wgs84()
-  }
-};
-
-/** point object, nothing fancy, just allows values to be
-    passed back and forth by reference rather than by value.
-    Other point classes may be used as long as they have
-    x and y properties, which will get modified in the transform method.
-*/
-module.exports = datum;
-
-},{}],31:[function(_dereq_,module,exports){
-var PJD_3PARAM = 1;
-var PJD_7PARAM = 2;
-var PJD_GRIDSHIFT = 3;
-var PJD_NODATUM = 5; // WGS84 or equivalent
-var SRS_WGS84_SEMIMAJOR = 6378137; // only used in grid shift transforms
-var SRS_WGS84_ESQUARED = 0.006694379990141316; //DGR: 2012-07-29
-module.exports = function(source, dest, point) {
-  var wp, i, l;
-
-  function checkParams(fallback) {
-    return (fallback === PJD_3PARAM || fallback === PJD_7PARAM);
-  }
-  // Short cut if the datums are identical.
-  if (source.compare_datums(dest)) {
-    return point; // in this case, zero is sucess,
-    // whereas cs_compare_datums returns 1 to indicate TRUE
-    // confusing, should fix this
-  }
-
-  // Explicitly skip datum transform by setting 'datum=none' as parameter for either source or dest
-  if (source.datum_type === PJD_NODATUM || dest.datum_type === PJD_NODATUM) {
-    return point;
-  }
-
-  //DGR: 2012-07-29 : add nadgrids support (begin)
-  var src_a = source.a;
-  var src_es = source.es;
-
-  var dst_a = dest.a;
-  var dst_es = dest.es;
-
-  var fallback = source.datum_type;
-  // If this datum requires grid shifts, then apply it to geodetic coordinates.
-  if (fallback === PJD_GRIDSHIFT) {
-    if (this.apply_gridshift(source, 0, point) === 0) {
-      source.a = SRS_WGS84_SEMIMAJOR;
-      source.es = SRS_WGS84_ESQUARED;
-    }
-    else {
-      // try 3 or 7 params transformation or nothing ?
-      if (!source.datum_params) {
-        source.a = src_a;
-        source.es = source.es;
-        return point;
-      }
-      wp = 1;
-      for (i = 0, l = source.datum_params.length; i < l; i++) {
-        wp *= source.datum_params[i];
-      }
-      if (wp === 0) {
-        source.a = src_a;
-        source.es = source.es;
-        return point;
-      }
-      if (source.datum_params.length > 3) {
-        fallback = PJD_7PARAM;
-      }
-      else {
-        fallback = PJD_3PARAM;
-      }
-    }
-  }
-  if (dest.datum_type === PJD_GRIDSHIFT) {
-    dest.a = SRS_WGS84_SEMIMAJOR;
-    dest.es = SRS_WGS84_ESQUARED;
-  }
-  // Do we need to go through geocentric coordinates?
-  if (source.es !== dest.es || source.a !== dest.a || checkParams(fallback) || checkParams(dest.datum_type)) {
-    //DGR: 2012-07-29 : add nadgrids support (end)
-    // Convert to geocentric coordinates.
-    source.geodetic_to_geocentric(point);
-    // CHECK_RETURN;
-    // Convert between datums
-    if (checkParams(source.datum_type)) {
-      source.geocentric_to_wgs84(point);
-      // CHECK_RETURN;
-    }
-    if (checkParams(dest.datum_type)) {
-      dest.geocentric_from_wgs84(point);
-      // CHECK_RETURN;
-    }
-    // Convert back to geodetic coordinates
-    dest.geocentric_to_geodetic(point);
-    // CHECK_RETURN;
-  }
-  // Apply grid shift to destination if required
-  if (dest.datum_type === PJD_GRIDSHIFT) {
-    this.apply_gridshift(dest, 1, point);
-    // CHECK_RETURN;
-  }
-
-  source.a = src_a;
-  source.es = src_es;
-  dest.a = dst_a;
-  dest.es = dst_es;
-
-  return point;
-};
-
-
-},{}],32:[function(_dereq_,module,exports){
-var globals = _dereq_('./global');
-var parseProj = _dereq_('./projString');
-var wkt = _dereq_('./wkt');
-
-function defs(name) {
-  /*global console*/
-  var that = this;
-  if (arguments.length === 2) {
-    var def = arguments[1];
-    if (typeof def === 'string') {
-      if (def.charAt(0) === '+') {
-        defs[name] = parseProj(arguments[1]);
-      }
-      else {
-        defs[name] = wkt(arguments[1]);
-      }
-    } else {
-      defs[name] = def;
-    }
-  }
-  else if (arguments.length === 1) {
-    if (Array.isArray(name)) {
-      return name.map(function(v) {
-        if (Array.isArray(v)) {
-          defs.apply(that, v);
-        }
-        else {
-          defs(v);
-        }
-      });
-    }
-    else if (typeof name === 'string') {
-      if (name in defs) {
-        return defs[name];
-      }
-    }
-    else if ('EPSG' in name) {
-      defs['EPSG:' + name.EPSG] = name;
-    }
-    else if ('ESRI' in name) {
-      defs['ESRI:' + name.ESRI] = name;
-    }
-    else if ('IAU2000' in name) {
-      defs['IAU2000:' + name.IAU2000] = name;
-    }
-    else {
-      console.log(name);
-    }
-    return;
-  }
-
-
-}
-globals(defs);
-module.exports = defs;
-
-},{"./global":35,"./projString":38,"./wkt":66}],33:[function(_dereq_,module,exports){
-var Datum = _dereq_('./constants/Datum');
-var Ellipsoid = _dereq_('./constants/Ellipsoid');
-var extend = _dereq_('./extend');
-var datum = _dereq_('./datum');
-var EPSLN = 1.0e-10;
-// ellipoid pj_set_ell.c
-var SIXTH = 0.1666666666666666667;
-/* 1/6 */
-var RA4 = 0.04722222222222222222;
-/* 17/360 */
-var RA6 = 0.02215608465608465608;
-module.exports = function(json) {
-  // DGR 2011-03-20 : nagrids -> nadgrids
-  if (json.datumCode && json.datumCode !== 'none') {
-    var datumDef = Datum[json.datumCode];
-    if (datumDef) {
-      json.datum_params = datumDef.towgs84 ? datumDef.towgs84.split(',') : null;
-      json.ellps = datumDef.ellipse;
-      json.datumName = datumDef.datumName ? datumDef.datumName : json.datumCode;
-    }
-  }
-  if (!json.a) { // do we have an ellipsoid?
-    var ellipse = Ellipsoid[json.ellps] ? Ellipsoid[json.ellps] : Ellipsoid.WGS84;
-    extend(json, ellipse);
-  }
-  if (json.rf && !json.b) {
-    json.b = (1.0 - 1.0 / json.rf) * json.a;
-  }
-  if (json.rf === 0 || Math.abs(json.a - json.b) < EPSLN) {
-    json.sphere = true;
-    json.b = json.a;
-  }
-  json.a2 = json.a * json.a; // used in geocentric
-  json.b2 = json.b * json.b; // used in geocentric
-  json.es = (json.a2 - json.b2) / json.a2; // e ^ 2
-  json.e = Math.sqrt(json.es); // eccentricity
-  if (json.R_A) {
-    json.a *= 1 - json.es * (SIXTH + json.es * (RA4 + json.es * RA6));
-    json.a2 = json.a * json.a;
-    json.b2 = json.b * json.b;
-    json.es = 0;
-  }
-  json.ep2 = (json.a2 - json.b2) / json.b2; // used in geocentric
-  if (!json.k0) {
-    json.k0 = 1.0; //default value
-  }
-  //DGR 2010-11-12: axis
-  if (!json.axis) {
-    json.axis = "enu";
-  }
-
-  if (!json.datum) {
-    json.datum = datum(json);
-  }
-  return json;
-};
-
-},{"./constants/Datum":25,"./constants/Ellipsoid":26,"./datum":30,"./extend":34}],34:[function(_dereq_,module,exports){
-module.exports = function(destination, source) {
-  destination = destination || {};
-  var value, property;
-  if (!source) {
-    return destination;
-  }
-  for (property in source) {
-    value = source[property];
-    if (value !== undefined) {
-      destination[property] = value;
-    }
-  }
-  return destination;
-};
-
-},{}],35:[function(_dereq_,module,exports){
-module.exports = function(defs) {
-  defs('EPSG:4326', "+title=WGS 84 (long/lat) +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees");
-  defs('EPSG:4269', "+title=NAD83 (long/lat) +proj=longlat +a=6378137.0 +b=6356752.31414036 +ellps=GRS80 +datum=NAD83 +units=degrees");
-  defs('EPSG:3857', "+title=WGS 84 / Pseudo-Mercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs");
-
-  defs.WGS84 = defs['EPSG:4326'];
-  defs['EPSG:3785'] = defs['EPSG:3857']; // maintain backward compat, official code is 3857
-  defs.GOOGLE = defs['EPSG:3857'];
-  defs['EPSG:900913'] = defs['EPSG:3857'];
-  defs['EPSG:102113'] = defs['EPSG:3857'];
-};
-
-},{}],36:[function(_dereq_,module,exports){
-var proj4 = _dereq_('./core');
-proj4.defaultDatum = 'WGS84'; //default datum
-proj4.Proj = _dereq_('./Proj');
-proj4.WGS84 = new proj4.Proj('WGS84');
-proj4.Point = _dereq_('./Point');
-proj4.toPoint = _dereq_("./common/toPoint");
-proj4.defs = _dereq_('./defs');
-proj4.transform = _dereq_('./transform');
-proj4.mgrs = _dereq_('mgrs');
-proj4.version = _dereq_('../package.json').version;
-_dereq_('./includedProjections')(proj4);
-module.exports = proj4;
-},{"../package.json":68,"./Point":1,"./Proj":2,"./common/toPoint":23,"./core":29,"./defs":32,"./includedProjections":"hTEDpn","./transform":65,"mgrs":67}],37:[function(_dereq_,module,exports){
-var defs = _dereq_('./defs');
-var wkt = _dereq_('./wkt');
-var projStr = _dereq_('./projString');
-function testObj(code){
-  return typeof code === 'string';
-}
-function testDef(code){
-  return code in defs;
-}
-function testWKT(code){
-  var codeWords = ['GEOGCS','GEOCCS','PROJCS','LOCAL_CS'];
-  return codeWords.reduce(function(a,b){
-    return a+1+code.indexOf(b);
-  },0);
-}
-function testProj(code){
-  return code[0] === '+';
-}
-function parse(code){
-  if (testObj(code)) {
-    //check to see if this is a WKT string
-    if (testDef(code)) {
-      return defs[code];
-    }
-    else if (testWKT(code)) {
-      return wkt(code);
-    }
-    else if (testProj(code)) {
-      return projStr(code);
-    }
-  }else{
-    return code;
-  }
-}
-
-module.exports = parse;
-},{"./defs":32,"./projString":38,"./wkt":66}],38:[function(_dereq_,module,exports){
-var D2R = 0.01745329251994329577;
-var PrimeMeridian = _dereq_('./constants/PrimeMeridian');
-var units = _dereq_('./constants/units');
-
-module.exports = function(defData) {
-  var self = {};
-  var paramObj = {};
-  defData.split("+").map(function(v) {
-    return v.trim();
-  }).filter(function(a) {
-    return a;
-  }).forEach(function(a) {
-    var split = a.split("=");
-    split.push(true);
-    paramObj[split[0].toLowerCase()] = split[1];
-  });
-  var paramName, paramVal, paramOutname;
-  var params = {
-    proj: 'projName',
-    datum: 'datumCode',
-    rf: function(v) {
-      self.rf = parseFloat(v);
-    },
-    lat_0: function(v) {
-      self.lat0 = v * D2R;
-    },
-    lat_1: function(v) {
-      self.lat1 = v * D2R;
-    },
-    lat_2: function(v) {
-      self.lat2 = v * D2R;
-    },
-    lat_ts: function(v) {
-      self.lat_ts = v * D2R;
-    },
-    lon_0: function(v) {
-      self.long0 = v * D2R;
-    },
-    lon_1: function(v) {
-      self.long1 = v * D2R;
-    },
-    lon_2: function(v) {
-      self.long2 = v * D2R;
-    },
-    alpha: function(v) {
-      self.alpha = parseFloat(v) * D2R;
-    },
-    lonc: function(v) {
-      self.longc = v * D2R;
-    },
-    x_0: function(v) {
-      self.x0 = parseFloat(v);
-    },
-    y_0: function(v) {
-      self.y0 = parseFloat(v);
-    },
-    k_0: function(v) {
-      self.k0 = parseFloat(v);
-    },
-    k: function(v) {
-      self.k0 = parseFloat(v);
-    },
-    a: function(v) {
-      self.a = parseFloat(v);
-    },
-    b: function(v) {
-      self.b = parseFloat(v);
-    },
-    r_a: function() {
-      self.R_A = true;
-    },
-    zone: function(v) {
-      self.zone = parseInt(v, 10);
-    },
-    south: function() {
-      self.utmSouth = true;
-    },
-    towgs84: function(v) {
-      self.datum_params = v.split(",").map(function(a) {
-        return parseFloat(a);
-      });
-    },
-    to_meter: function(v) {
-      self.to_meter = parseFloat(v);
-    },
-    units: function(v) {
-      self.units = v;
-      if (units[v]) {
-        self.to_meter = units[v].to_meter;
-      }
-    },
-    from_greenwich: function(v) {
-      self.from_greenwich = v * D2R;
-    },
-    pm: function(v) {
-      self.from_greenwich = (PrimeMeridian[v] ? PrimeMeridian[v] : parseFloat(v)) * D2R;
-    },
-    nadgrids: function(v) {
-      if (v === '@null') {
-        self.datumCode = 'none';
-      }
-      else {
-        self.nadgrids = v;
-      }
-    },
-    axis: function(v) {
-      var legalAxis = "ewnsud";
-      if (v.length === 3 && legalAxis.indexOf(v.substr(0, 1)) !== -1 && legalAxis.indexOf(v.substr(1, 1)) !== -1 && legalAxis.indexOf(v.substr(2, 1)) !== -1) {
-        self.axis = v;
-      }
-    }
-  };
-  for (paramName in paramObj) {
-    paramVal = paramObj[paramName];
-    if (paramName in params) {
-      paramOutname = params[paramName];
-      if (typeof paramOutname === 'function') {
-        paramOutname(paramVal);
-      }
-      else {
-        self[paramOutname] = paramVal;
-      }
-    }
-    else {
-      self[paramName] = paramVal;
-    }
-  }
-  if(typeof self.datumCode === 'string' && self.datumCode !== "WGS84"){
-    self.datumCode = self.datumCode.toLowerCase();
-  }
-  return self;
-};
-
-},{"./constants/PrimeMeridian":27,"./constants/units":28}],39:[function(_dereq_,module,exports){
-var projs = [
-  _dereq_('./projections/merc'),
-  _dereq_('./projections/longlat')
-];
-var names = {};
-var projStore = [];
-
-function add(proj, i) {
-  var len = projStore.length;
-  if (!proj.names) {
-    console.log(i);
-    return true;
-  }
-  projStore[len] = proj;
-  proj.names.forEach(function(n) {
-    names[n.toLowerCase()] = len;
-  });
-  return this;
-}
-
-exports.add = add;
-
-exports.get = function(name) {
-  if (!name) {
-    return false;
-  }
-  var n = name.toLowerCase();
-  if (typeof names[n] !== 'undefined' && projStore[names[n]]) {
-    return projStore[names[n]];
-  }
-};
-exports.start = function() {
-  projs.forEach(add);
-};
-
-},{"./projections/longlat":51,"./projections/merc":52}],40:[function(_dereq_,module,exports){
-var EPSLN = 1.0e-10;
-var msfnz = _dereq_('../common/msfnz');
-var qsfnz = _dereq_('../common/qsfnz');
-var adjust_lon = _dereq_('../common/adjust_lon');
-var asinz = _dereq_('../common/asinz');
-exports.init = function() {
-
-  if (Math.abs(this.lat1 + this.lat2) < EPSLN) {
-    return;
-  }
-  this.temp = this.b / this.a;
-  this.es = 1 - Math.pow(this.temp, 2);
-  this.e3 = Math.sqrt(this.es);
-
-  this.sin_po = Math.sin(this.lat1);
-  this.cos_po = Math.cos(this.lat1);
-  this.t1 = this.sin_po;
-  this.con = this.sin_po;
-  this.ms1 = msfnz(this.e3, this.sin_po, this.cos_po);
-  this.qs1 = qsfnz(this.e3, this.sin_po, this.cos_po);
-
-  this.sin_po = Math.sin(this.lat2);
-  this.cos_po = Math.cos(this.lat2);
-  this.t2 = this.sin_po;
-  this.ms2 = msfnz(this.e3, this.sin_po, this.cos_po);
-  this.qs2 = qsfnz(this.e3, this.sin_po, this.cos_po);
-
-  this.sin_po = Math.sin(this.lat0);
-  this.cos_po = Math.cos(this.lat0);
-  this.t3 = this.sin_po;
-  this.qs0 = qsfnz(this.e3, this.sin_po, this.cos_po);
-
-  if (Math.abs(this.lat1 - this.lat2) > EPSLN) {
-    this.ns0 = (this.ms1 * this.ms1 - this.ms2 * this.ms2) / (this.qs2 - this.qs1);
-  }
-  else {
-    this.ns0 = this.con;
-  }
-  this.c = this.ms1 * this.ms1 + this.ns0 * this.qs1;
-  this.rh = this.a * Math.sqrt(this.c - this.ns0 * this.qs0) / this.ns0;
-};
-
-/* Albers Conical Equal Area forward equations--mapping lat,long to x,y
-  -------------------------------------------------------------------*/
-exports.forward = function(p) {
-
-  var lon = p.x;
-  var lat = p.y;
-
-  this.sin_phi = Math.sin(lat);
-  this.cos_phi = Math.cos(lat);
-
-  var qs = qsfnz(this.e3, this.sin_phi, this.cos_phi);
-  var rh1 = this.a * Math.sqrt(this.c - this.ns0 * qs) / this.ns0;
-  var theta = this.ns0 * adjust_lon(lon - this.long0);
-  var x = rh1 * Math.sin(theta) + this.x0;
-  var y = this.rh - rh1 * Math.cos(theta) + this.y0;
-
-  p.x = x;
-  p.y = y;
-  return p;
-};
-
-
-exports.inverse = function(p) {
-  var rh1, qs, con, theta, lon, lat;
-
-  p.x -= this.x0;
-  p.y = this.rh - p.y + this.y0;
-  if (this.ns0 >= 0) {
-    rh1 = Math.sqrt(p.x * p.x + p.y * p.y);
-    con = 1;
-  }
-  else {
-    rh1 = -Math.sqrt(p.x * p.x + p.y * p.y);
-    con = -1;
-  }
-  theta = 0;
-  if (rh1 !== 0) {
-    theta = Math.atan2(con * p.x, con * p.y);
-  }
-  con = rh1 * this.ns0 / this.a;
-  if (this.sphere) {
-    lat = Math.asin((this.c - con * con) / (2 * this.ns0));
-  }
-  else {
-    qs = (this.c - con * con) / this.ns0;
-    lat = this.phi1z(this.e3, qs);
-  }
-
-  lon = adjust_lon(theta / this.ns0 + this.long0);
-  p.x = lon;
-  p.y = lat;
-  return p;
-};
-
-/* Function to compute phi1, the latitude for the inverse of the
-   Albers Conical Equal-Area projection.
--------------------------------------------*/
-exports.phi1z = function(eccent, qs) {
-  var sinphi, cosphi, con, com, dphi;
-  var phi = asinz(0.5 * qs);
-  if (eccent < EPSLN) {
-    return phi;
-  }
-
-  var eccnts = eccent * eccent;
-  for (var i = 1; i <= 25; i++) {
-    sinphi = Math.sin(phi);
-    cosphi = Math.cos(phi);
-    con = eccent * sinphi;
-    com = 1 - con * con;
-    dphi = 0.5 * com * com / cosphi * (qs / (1 - eccnts) - sinphi / com + 0.5 / eccent * Math.log((1 - con) / (1 + con)));
-    phi = phi + dphi;
-    if (Math.abs(dphi) <= 1e-7) {
-      return phi;
-    }
-  }
-  return null;
-};
-exports.names = ["Albers_Conic_Equal_Area", "Albers", "aea"];
-
-},{"../common/adjust_lon":5,"../common/asinz":6,"../common/msfnz":15,"../common/qsfnz":20}],41:[function(_dereq_,module,exports){
-var adjust_lon = _dereq_('../common/adjust_lon');
-var HALF_PI = Math.PI/2;
-var EPSLN = 1.0e-10;
-var mlfn = _dereq_('../common/mlfn');
-var e0fn = _dereq_('../common/e0fn');
-var e1fn = _dereq_('../common/e1fn');
-var e2fn = _dereq_('../common/e2fn');
-var e3fn = _dereq_('../common/e3fn');
-var gN = _dereq_('../common/gN');
-var asinz = _dereq_('../common/asinz');
-var imlfn = _dereq_('../common/imlfn');
-exports.init = function() {
-  this.sin_p12 = Math.sin(this.lat0);
-  this.cos_p12 = Math.cos(this.lat0);
-};
-
-exports.forward = function(p) {
-  var lon = p.x;
-  var lat = p.y;
-  var sinphi = Math.sin(p.y);
-  var cosphi = Math.cos(p.y);
-  var dlon = adjust_lon(lon - this.long0);
-  var e0, e1, e2, e3, Mlp, Ml, tanphi, Nl1, Nl, psi, Az, G, H, GH, Hs, c, kp, cos_c, s, s2, s3, s4, s5;
-  if (this.sphere) {
-    if (Math.abs(this.sin_p12 - 1) <= EPSLN) {
-      //North Pole case
-      p.x = this.x0 + this.a * (HALF_PI - lat) * Math.sin(dlon);
-      p.y = this.y0 - this.a * (HALF_PI - lat) * Math.cos(dlon);
-      return p;
-    }
-    else if (Math.abs(this.sin_p12 + 1) <= EPSLN) {
-      //South Pole case
-      p.x = this.x0 + this.a * (HALF_PI + lat) * Math.sin(dlon);
-      p.y = this.y0 + this.a * (HALF_PI + lat) * Math.cos(dlon);
-      return p;
-    }
-    else {
-      //default case
-      cos_c = this.sin_p12 * sinphi + this.cos_p12 * cosphi * Math.cos(dlon);
-      c = Math.acos(cos_c);
-      kp = c / Math.sin(c);
-      p.x = this.x0 + this.a * kp * cosphi * Math.sin(dlon);
-      p.y = this.y0 + this.a * kp * (this.cos_p12 * sinphi - this.sin_p12 * cosphi * Math.cos(dlon));
-      return p;
-    }
-  }
-  else {
-    e0 = e0fn(this.es);
-    e1 = e1fn(this.es);
-    e2 = e2fn(this.es);
-    e3 = e3fn(this.es);
-    if (Math.abs(this.sin_p12 - 1) <= EPSLN) {
-      //North Pole case
-      Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);
-      Ml = this.a * mlfn(e0, e1, e2, e3, lat);
-      p.x = this.x0 + (Mlp - Ml) * Math.sin(dlon);
-      p.y = this.y0 - (Mlp - Ml) * Math.cos(dlon);
-      return p;
-    }
-    else if (Math.abs(this.sin_p12 + 1) <= EPSLN) {
-      //South Pole case
-      Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);
-      Ml = this.a * mlfn(e0, e1, e2, e3, lat);
-      p.x = this.x0 + (Mlp + Ml) * Math.sin(dlon);
-      p.y = this.y0 + (Mlp + Ml) * Math.cos(dlon);
-      return p;
-    }
-    else {
-      //Default case
-      tanphi = sinphi / cosphi;
-      Nl1 = gN(this.a, this.e, this.sin_p12);
-      Nl = gN(this.a, this.e, sinphi);
-      psi = Math.atan((1 - this.es) * tanphi + this.es * Nl1 * this.sin_p12 / (Nl * cosphi));
-      Az = Math.atan2(Math.sin(dlon), this.cos_p12 * Math.tan(psi) - this.sin_p12 * Math.cos(dlon));
-      if (Az === 0) {
-        s = Math.asin(this.cos_p12 * Math.sin(psi) - this.sin_p12 * Math.cos(psi));
-      }
-      else if (Math.abs(Math.abs(Az) - Math.PI) <= EPSLN) {
-        s = -Math.asin(this.cos_p12 * Math.sin(psi) - this.sin_p12 * Math.cos(psi));
-      }
-      else {
-        s = Math.asin(Math.sin(dlon) * Math.cos(psi) / Math.sin(Az));
-      }
-      G = this.e * this.sin_p12 / Math.sqrt(1 - this.es);
-      H = this.e * this.cos_p12 * Math.cos(Az) / Math.sqrt(1 - this.es);
-      GH = G * H;
-      Hs = H * H;
-      s2 = s * s;
-      s3 = s2 * s;
-      s4 = s3 * s;
-      s5 = s4 * s;
-      c = Nl1 * s * (1 - s2 * Hs * (1 - Hs) / 6 + s3 / 8 * GH * (1 - 2 * Hs) + s4 / 120 * (Hs * (4 - 7 * Hs) - 3 * G * G * (1 - 7 * Hs)) - s5 / 48 * GH);
-      p.x = this.x0 + c * Math.sin(Az);
-      p.y = this.y0 + c * Math.cos(Az);
-      return p;
-    }
-  }
-
-
-};
-
-exports.inverse = function(p) {
-  p.x -= this.x0;
-  p.y -= this.y0;
-  var rh, z, sinz, cosz, lon, lat, con, e0, e1, e2, e3, Mlp, M, N1, psi, Az, cosAz, tmp, A, B, D, Ee, F;
-  if (this.sphere) {
-    rh = Math.sqrt(p.x * p.x + p.y * p.y);
-    if (rh > (2 * HALF_PI * this.a)) {
-      return;
-    }
-    z = rh / this.a;
-
-    sinz = Math.sin(z);
-    cosz = Math.cos(z);
-
-    lon = this.long0;
-    if (Math.abs(rh) <= EPSLN) {
-      lat = this.lat0;
-    }
-    else {
-      lat = asinz(cosz * this.sin_p12 + (p.y * sinz * this.cos_p12) / rh);
-      con = Math.abs(this.lat0) - HALF_PI;
-      if (Math.abs(con) <= EPSLN) {
-        if (this.lat0 >= 0) {
-          lon = adjust_lon(this.long0 + Math.atan2(p.x, - p.y));
-        }
-        else {
-          lon = adjust_lon(this.long0 - Math.atan2(-p.x, p.y));
-        }
-      }
-      else {
-        /*con = cosz - this.sin_p12 * Math.sin(lat);
-        if ((Math.abs(con) < EPSLN) && (Math.abs(p.x) < EPSLN)) {
-          //no-op, just keep the lon value as is
-        } else {
-          var temp = Math.atan2((p.x * sinz * this.cos_p12), (con * rh));
-          lon = adjust_lon(this.long0 + Math.atan2((p.x * sinz * this.cos_p12), (con * rh)));
-        }*/
-        lon = adjust_lon(this.long0 + Math.atan2(p.x * sinz, rh * this.cos_p12 * cosz - p.y * this.sin_p12 * sinz));
-      }
-    }
-
-    p.x = lon;
-    p.y = lat;
-    return p;
-  }
-  else {
-    e0 = e0fn(this.es);
-    e1 = e1fn(this.es);
-    e2 = e2fn(this.es);
-    e3 = e3fn(this.es);
-    if (Math.abs(this.sin_p12 - 1) <= EPSLN) {
-      //North pole case
-      Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);
-      rh = Math.sqrt(p.x * p.x + p.y * p.y);
-      M = Mlp - rh;
-      lat = imlfn(M / this.a, e0, e1, e2, e3);
-      lon = adjust_lon(this.long0 + Math.atan2(p.x, - 1 * p.y));
-      p.x = lon;
-      p.y = lat;
-      return p;
-    }
-    else if (Math.abs(this.sin_p12 + 1) <= EPSLN) {
-      //South pole case
-      Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);
-      rh = Math.sqrt(p.x * p.x + p.y * p.y);
-      M = rh - Mlp;
-
-      lat = imlfn(M / this.a, e0, e1, e2, e3);
-      lon = adjust_lon(this.long0 + Math.atan2(p.x, p.y));
-      p.x = lon;
-      p.y = lat;
-      return p;
-    }
-    else {
-      //default case
-      rh = Math.sqrt(p.x * p.x + p.y * p.y);
-      Az = Math.atan2(p.x, p.y);
-      N1 = gN(this.a, this.e, this.sin_p12);
-      cosAz = Math.cos(Az);
-      tmp = this.e * this.cos_p12 * cosAz;
-      A = -tmp * tmp / (1 - this.es);
-      B = 3 * this.es * (1 - A) * this.sin_p12 * this.cos_p12 * cosAz / (1 - this.es);
-      D = rh / N1;
-      Ee = D - A * (1 + A) * Math.pow(D, 3) / 6 - B * (1 + 3 * A) * Math.pow(D, 4) / 24;
-      F = 1 - A * Ee * Ee / 2 - D * Ee * Ee * Ee / 6;
-      psi = Math.asin(this.sin_p12 * Math.cos(Ee) + this.cos_p12 * Math.sin(Ee) * cosAz);
-      lon = adjust_lon(this.long0 + Math.asin(Math.sin(Az) * Math.sin(Ee) / Math.cos(psi)));
-      lat = Math.atan((1 - this.es * F * this.sin_p12 / Math.sin(psi)) * Math.tan(psi) / (1 - this.es));
-      p.x = lon;
-      p.y = lat;
-      return p;
-    }
-  }
-
-};
-exports.names = ["Azimuthal_Equidistant", "aeqd"];
-
-},{"../common/adjust_lon":5,"../common/asinz":6,"../common/e0fn":7,"../common/e1fn":8,"../common/e2fn":9,"../common/e3fn":10,"../common/gN":11,"../common/imlfn":12,"../common/mlfn":14}],42:[function(_dereq_,module,exports){
-var mlfn = _dereq_('../common/mlfn');
-var e0fn = _dereq_('../common/e0fn');
-var e1fn = _dereq_('../common/e1fn');
-var e2fn = _dereq_('../common/e2fn');
-var e3fn = _dereq_('../common/e3fn');
-var gN = _dereq_('../common/gN');
-var adjust_lon = _dereq_('../common/adjust_lon');
-var adjust_lat = _dereq_('../common/adjust_lat');
-var imlfn = _dereq_('../common/imlfn');
-var HALF_PI = Math.PI/2;
-var EPSLN = 1.0e-10;
-exports.init = function() {
-  if (!this.sphere) {
-    this.e0 = e0fn(this.es);
-    this.e1 = e1fn(this.es);
-    this.e2 = e2fn(this.es);
-    this.e3 = e3fn(this.es);
-    this.ml0 = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0);
-  }
-};
-
-
-
-/* Cassini forward equations--mapping lat,long to x,y
-  -----------------------------------------------------------------------*/
-exports.forward = function(p) {
-
-  /* Forward equations
-      -----------------*/
-  var x, y;
-  var lam = p.x;
-  var phi = p.y;
-  lam = adjust_lon(lam - this.long0);
-
-  if (this.sphere) {
-    x = this.a * Math.asin(Math.cos(phi) * Math.sin(lam));
-    y = this.a * (Math.atan2(Math.tan(phi), Math.cos(lam)) - this.lat0);
-  }
-  else {
-    //ellipsoid
-    var sinphi = Math.sin(phi);
-    var cosphi = Math.cos(phi);
-    var nl = gN(this.a, this.e, sinphi);
-    var tl = Math.tan(phi) * Math.tan(phi);
-    var al = lam * Math.cos(phi);
-    var asq = al * al;
-    var cl = this.es * cosphi * cosphi / (1 - this.es);
-    var ml = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, phi);
-
-    x = nl * al * (1 - asq * tl * (1 / 6 - (8 - tl + 8 * cl) * asq / 120));
-    y = ml - this.ml0 + nl * sinphi / cosphi * asq * (0.5 + (5 - tl + 6 * cl) * asq / 24);
-
-
-  }
-
-  p.x = x + this.x0;
-  p.y = y + this.y0;
-  return p;
-};
-
-/* Inverse equations
-  -----------------*/
-exports.inverse = function(p) {
-  p.x -= this.x0;
-  p.y -= this.y0;
-  var x = p.x / this.a;
-  var y = p.y / this.a;
-  var phi, lam;
-
-  if (this.sphere) {
-    var dd = y + this.lat0;
-    phi = Math.asin(Math.sin(dd) * Math.cos(x));
-    lam = Math.atan2(Math.tan(x), Math.cos(dd));
-  }
-  else {
-    /* ellipsoid */
-    var ml1 = this.ml0 / this.a + y;
-    var phi1 = imlfn(ml1, this.e0, this.e1, this.e2, this.e3);
-    if (Math.abs(Math.abs(phi1) - HALF_PI) <= EPSLN) {
-      p.x = this.long0;
-      p.y = HALF_PI;
-      if (y < 0) {
-        p.y *= -1;
-      }
-      return p;
-    }
-    var nl1 = gN(this.a, this.e, Math.sin(phi1));
-
-    var rl1 = nl1 * nl1 * nl1 / this.a / this.a * (1 - this.es);
-    var tl1 = Math.pow(Math.tan(phi1), 2);
-    var dl = x * this.a / nl1;
-    var dsq = dl * dl;
-    phi = phi1 - nl1 * Math.tan(phi1) / rl1 * dl * dl * (0.5 - (1 + 3 * tl1) * dl * dl / 24);
-    lam = dl * (1 - dsq * (tl1 / 3 + (1 + 3 * tl1) * tl1 * dsq / 15)) / Math.cos(phi1);
-
-  }
-
-  p.x = adjust_lon(lam + this.long0);
-  p.y = adjust_lat(phi);
-  return p;
-
-};
-exports.names = ["Cassini", "Cassini_Soldner", "cass"];
-},{"../common/adjust_lat":4,"../common/adjust_lon":5,"../common/e0fn":7,"../common/e1fn":8,"../common/e2fn":9,"../common/e3fn":10,"../common/gN":11,"../common/imlfn":12,"../common/mlfn":14}],43:[function(_dereq_,module,exports){
-var adjust_lon = _dereq_('../common/adjust_lon');
-var qsfnz = _dereq_('../common/qsfnz');
-var msfnz = _dereq_('../common/msfnz');
-var iqsfnz = _dereq_('../common/iqsfnz');
-/*
-  reference:  
-    "Cartographic Projection Procedures for the UNIX Environment-
-    A User's Manual" by Gerald I. Evenden,
-    USGS Open File Report 90-284and Release 4 Interim Reports (2003)
-*/
-exports.init = function() {
-  //no-op
-  if (!this.sphere) {
-    this.k0 = msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts));
-  }
-};
-
-
-/* Cylindrical Equal Area forward equations--mapping lat,long to x,y
-    ------------------------------------------------------------*/
-exports.forward = function(p) {
-  var lon = p.x;
-  var lat = p.y;
-  var x, y;
-  /* Forward equations
-      -----------------*/
-  var dlon = adjust_lon(lon - this.long0);
-  if (this.sphere) {
-    x = this.x0 + this.a * dlon * Math.cos(this.lat_ts);
-    y = this.y0 + this.a * Math.sin(lat) / Math.cos(this.lat_ts);
-  }
-  else {
-    var qs = qsfnz(this.e, Math.sin(lat));
-    x = this.x0 + this.a * this.k0 * dlon;
-    y = this.y0 + this.a * qs * 0.5 / this.k0;
-  }
-
-  p.x = x;
-  p.y = y;
-  return p;
-};
-
-/* Cylindrical Equal Area inverse equations--mapping x,y to lat/long
-    ------------------------------------------------------------*/
-exports.inverse = function(p) {
-  p.x -= this.x0;
-  p.y -= this.y0;
-  var lon, lat;
-
-  if (this.sphere) {
-    lon = adjust_lon(this.long0 + (p.x / this.a) / Math.cos(this.lat_ts));
-    lat = Math.asin((p.y / this.a) * Math.cos(this.lat_ts));
-  }
-  else {
-    lat = iqsfnz(this.e, 2 * p.y * this.k0 / this.a);
-    lon = adjust_lon(this.long0 + p.x / (this.a * this.k0));
-  }
-
-  p.x = lon;
-  p.y = lat;
-  return p;
-};
-exports.names = ["cea"];
-
-},{"../common/adjust_lon":5,"../common/iqsfnz":13,"../common/msfnz":15,"../common/qsfnz":20}],44:[function(_dereq_,module,exports){
-var adjust_lon = _dereq_('../common/adjust_lon');
-var adjust_lat = _dereq_('../common/adjust_lat');
-exports.init = function() {
-
-  this.x0 = this.x0 || 0;
-  this.y0 = this.y0 || 0;
-  this.lat0 = this.lat0 || 0;
-  this.long0 = this.long0 || 0;
-  this.lat_ts = this.lat_ts || 0;
-  this.title = this.title || "Equidistant Cylindrical (Plate Carre)";
-
-  this.rc = Math.cos(this.lat_ts);
-};
-
-
-// forward equations--mapping lat,long to x,y
-// -----------------------------------------------------------------
-exports.forward = function(p) {
-
-  var lon = p.x;
-  var lat = p.y;
-
-  var dlon = adjust_lon(lon - this.long0);
-  var dlat = adjust_lat(lat - this.lat0);
-  p.x = this.x0 + (this.a * dlon * this.rc);
-  p.y = this.y0 + (this.a * dlat);
-  return p;
-};
-
-// inverse equations--mapping x,y to lat/long
-// -----------------------------------------------------------------
-exports.inverse = function(p) {
-
-  var x = p.x;
-  var y = p.y;
-
-  p.x = adjust_lon(this.long0 + ((x - this.x0) / (this.a * this.rc)));
-  p.y = adjust_lat(this.lat0 + ((y - this.y0) / (this.a)));
-  return p;
-};
-exports.names = ["Equirectangular", "Equidistant_Cylindrical", "eqc"];
-
-},{"../common/adjust_lat":4,"../common/adjust_lon":5}],45:[function(_dereq_,module,exports){
-var e0fn = _dereq_('../common/e0fn');
-var e1fn = _dereq_('../common/e1fn');
-var e2fn = _dereq_('../common/e2fn');
-var e3fn = _dereq_('../common/e3fn');
-var msfnz = _dereq_('../common/msfnz');
-var mlfn = _dereq_('../common/mlfn');
-var adjust_lon = _dereq_('../common/adjust_lon');
-var adjust_lat = _dereq_('../common/adjust_lat');
-var imlfn = _dereq_('../common/imlfn');
-var EPSLN = 1.0e-10;
-exports.init = function() {
-
-  /* Place parameters in static storage for common use
-      -------------------------------------------------*/
-  // Standard Parallels cannot be equal and on opposite sides of the equator
-  if (Math.abs(this.lat1 + this.lat2) < EPSLN) {
-    return;
-  }
-  this.lat2 = this.lat2 || this.lat1;
-  this.temp = this.b / this.a;
-  this.es = 1 - Math.pow(this.temp, 2);
-  this.e = Math.sqrt(this.es);
-  this.e0 = e0fn(this.es);
-  this.e1 = e1fn(this.es);
-  this.e2 = e2fn(this.es);
-  this.e3 = e3fn(this.es);
-
-  this.sinphi = Math.sin(this.lat1);
-  this.cosphi = Math.cos(this.lat1);
-
-  this.ms1 = msfnz(this.e, this.sinphi, this.cosphi);
-  this.ml1 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat1);
-
-  if (Math.abs(this.lat1 - this.lat2) < EPSLN) {
-    this.ns = this.sinphi;
-  }
-  else {
-    this.sinphi = Math.sin(this.lat2);
-    this.cosphi = Math.cos(this.lat2);
-    this.ms2 = msfnz(this.e, this.sinphi, this.cosphi);
-    this.ml2 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat2);
-    this.ns = (this.ms1 - this.ms2) / (this.ml2 - this.ml1);
-  }
-  this.g = this.ml1 + this.ms1 / this.ns;
-  this.ml0 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0);
-  this.rh = this.a * (this.g - this.ml0);
-};
-
-
-/* Equidistant Conic forward equations--mapping lat,long to x,y
-  -----------------------------------------------------------*/
-exports.forward = function(p) {
-  var lon = p.x;
-  var lat = p.y;
-  var rh1;
-
-  /* Forward equations
-      -----------------*/
-  if (this.sphere) {
-    rh1 = this.a * (this.g - lat);
-  }
-  else {
-    var ml = mlfn(this.e0, this.e1, this.e2, this.e3, lat);
-    rh1 = this.a * (this.g - ml);
-  }
-  var theta = this.ns * adjust_lon(lon - this.long0);
-  var x = this.x0 + rh1 * Math.sin(theta);
-  var y = this.y0 + this.rh - rh1 * Math.cos(theta);
-  p.x = x;
-  p.y = y;
-  return p;
-};
-
-/* Inverse equations
-  -----------------*/
-exports.inverse = function(p) {
-  p.x -= this.x0;
-  p.y = this.rh - p.y + this.y0;
-  var con, rh1, lat, lon;
-  if (this.ns >= 0) {
-    rh1 = Math.sqrt(p.x * p.x + p.y * p.y);
-    con = 1;
-  }
-  else {
-    rh1 = -Math.sqrt(p.x * p.x + p.y * p.y);
-    con = -1;
-  }
-  var theta = 0;
-  if (rh1 !== 0) {
-    theta = Math.atan2(con * p.x, con * p.y);
-  }
-
-  if (this.sphere) {
-    lon = adjust_lon(this.long0 + theta / this.ns);
-    lat = adjust_lat(this.g - rh1 / this.a);
-    p.x = lon;
-    p.y = lat;
-    return p;
-  }
-  else {
-    var ml = this.g - rh1 / this.a;
-    lat = imlfn(ml, this.e0, this.e1, this.e2, this.e3);
-    lon = adjust_lon(this.long0 + theta / this.ns);
-    p.x = lon;
-    p.y = lat;
-    return p;
-  }
-
-};
-exports.names = ["Equidistant_Conic", "eqdc"];
-
-},{"../common/adjust_lat":4,"../common/adjust_lon":5,"../common/e0fn":7,"../common/e1fn":8,"../common/e2fn":9,"../common/e3fn":10,"../common/imlfn":12,"../common/mlfn":14,"../common/msfnz":15}],46:[function(_dereq_,module,exports){
-var FORTPI = Math.PI/4;
-var srat = _dereq_('../common/srat');
-var HALF_PI = Math.PI/2;
-var MAX_ITER = 20;
-exports.init = function() {
-  var sphi = Math.sin(this.lat0);
-  var cphi = Math.cos(this.lat0);
-  cphi *= cphi;
-  this.rc = Math.sqrt(1 - this.es) / (1 - this.es * sphi * sphi);
-  this.C = Math.sqrt(1 + this.es * cphi * cphi / (1 - this.es));
-  this.phic0 = Math.asin(sphi / this.C);
-  this.ratexp = 0.5 * this.C * this.e;
-  this.K = Math.tan(0.5 * this.phic0 + FORTPI) / (Math.pow(Math.tan(0.5 * this.lat0 + FORTPI), this.C) * srat(this.e * sphi, this.ratexp));
-};
-
-exports.forward = function(p) {
-  var lon = p.x;
-  var lat = p.y;
-
-  p.y = 2 * Math.atan(this.K * Math.pow(Math.tan(0.5 * lat + FORTPI), this.C) * srat(this.e * Math.sin(lat), this.ratexp)) - HALF_PI;
-  p.x = this.C * lon;
-  return p;
-};
-
-exports.inverse = function(p) {
-  var DEL_TOL = 1e-14;
-  var lon = p.x / this.C;
-  var lat = p.y;
-  var num = Math.pow(Math.tan(0.5 * lat + FORTPI) / this.K, 1 / this.C);
-  for (var i = MAX_ITER; i > 0; --i) {
-    lat = 2 * Math.atan(num * srat(this.e * Math.sin(p.y), - 0.5 * this.e)) - HALF_PI;
-    if (Math.abs(lat - p.y) < DEL_TOL) {
-      break;
-    }
-    p.y = lat;
-  }
-  /* convergence failed */
-  if (!i) {
-    return null;
-  }
-  p.x = lon;
-  p.y = lat;
-  return p;
-};
-exports.names = ["gauss"];
-
-},{"../common/srat":22}],47:[function(_dereq_,module,exports){
-var adjust_lon = _dereq_('../common/adjust_lon');
-var EPSLN = 1.0e-10;
-var asinz = _dereq_('../common/asinz');
-
-/*
-  reference:
-    Wolfram Mathworld "Gnomonic Projection"
-    http://mathworld.wolfram.com/GnomonicProjection.html
-    Accessed: 12th November 2009
-  */
-exports.init = function() {
-
-  /* Place parameters in static storage for common use
-      -------------------------------------------------*/
-  this.sin_p14 = Math.sin(this.lat0);
-  this.cos_p14 = Math.cos(this.lat0);
-  // Approximation for projecting points to the horizon (infinity)
-  this.infinity_dist = 1000 * this.a;
-  this.rc = 1;
-};
-
-
-/* Gnomonic forward equations--mapping lat,long to x,y
-    ---------------------------------------------------*/
-exports.forward = function(p) {
-  var sinphi, cosphi; /* sin and cos value        */
-  var dlon; /* delta longitude value      */
-  var coslon; /* cos of longitude        */
-  var ksp; /* scale factor          */
-  var g;
-  var x, y;
-  var lon = p.x;
-  var lat = p.y;
-  /* Forward equations
-      -----------------*/
-  dlon = adjust_lon(lon - this.long0);
-
-  sinphi = Math.sin(lat);
-  cosphi = Math.cos(lat);
-
-  coslon = Math.cos(dlon);
-  g = this.sin_p14 * sinphi + this.cos_p14 * cosphi * coslon;
-  ksp = 1;
-  if ((g > 0) || (Math.abs(g) <= EPSLN)) {
-    x = this.x0 + this.a * ksp * cosphi * Math.sin(dlon) / g;
-    y = this.y0 + this.a * ksp * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon) / g;
-  }
-  else {
-
-    // Point is in the opposing hemisphere and is unprojectable
-    // We still need to return a reasonable point, so we project 
-    // to infinity, on a bearing 
-    // equivalent to the northern hemisphere equivalent
-    // This is a reasonable approximation for short shapes and lines that 
-    // straddle the horizon.
-
-    x = this.x0 + this.infinity_dist * cosphi * Math.sin(dlon);
-    y = this.y0 + this.infinity_dist * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon);
-
-  }
-  p.x = x;
-  p.y = y;
-  return p;
-};
-
-
-exports.inverse = function(p) {
-  var rh; /* Rho */
-  var sinc, cosc;
-  var c;
-  var lon, lat;
-
-  /* Inverse equations
-      -----------------*/
-  p.x = (p.x - this.x0) / this.a;
-  p.y = (p.y - this.y0) / this.a;
-
-  p.x /= this.k0;
-  p.y /= this.k0;
-
-  if ((rh = Math.sqrt(p.x * p.x + p.y * p.y))) {
-    c = Math.atan2(rh, this.rc);
-    sinc = Math.sin(c);
-    cosc = Math.cos(c);
-
-    lat = asinz(cosc * this.sin_p14 + (p.y * sinc * this.cos_p14) / rh);
-    lon = Math.atan2(p.x * sinc, rh * this.cos_p14 * cosc - p.y * this.sin_p14 * sinc);
-    lon = adjust_lon(this.long0 + lon);
-  }
-  else {
-    lat = this.phic0;
-    lon = 0;
-  }
-
-  p.x = lon;
-  p.y = lat;
-  return p;
-};
-exports.names = ["gnom"];
-
-},{"../common/adjust_lon":5,"../common/asinz":6}],48:[function(_dereq_,module,exports){
-var adjust_lon = _dereq_('../common/adjust_lon');
-exports.init = function() {
-  this.a = 6377397.155;
-  this.es = 0.006674372230614;
-  this.e = Math.sqrt(this.es);
-  if (!this.lat0) {
-    this.lat0 = 0.863937979737193;
-  }
-  if (!this.long0) {
-    this.long0 = 0.7417649320975901 - 0.308341501185665;
-  }
-  /* if scale not set default to 0.9999 */
-  if (!this.k0) {
-    this.k0 = 0.9999;
-  }
-  this.s45 = 0.785398163397448; /* 45 */
-  this.s90 = 2 * this.s45;
-  this.fi0 = this.lat0;
-  this.e2 = this.es;
-  this.e = Math.sqrt(this.e2);
-  this.alfa = Math.sqrt(1 + (this.e2 * Math.pow(Math.cos(this.fi0), 4)) / (1 - this.e2));
-  this.uq = 1.04216856380474;
-  this.u0 = Math.asin(Math.sin(this.fi0) / this.alfa);
-  this.g = Math.pow((1 + this.e * Math.sin(this.fi0)) / (1 - this.e * Math.sin(this.fi0)), this.alfa * this.e / 2);
-  this.k = Math.tan(this.u0 / 2 + this.s45) / Math.pow(Math.tan(this.fi0 / 2 + this.s45), this.alfa) * this.g;
-  this.k1 = this.k0;
-  this.n0 = this.a * Math.sqrt(1 - this.e2) / (1 - this.e2 * Math.pow(Math.sin(this.fi0), 2));
-  this.s0 = 1.37008346281555;
-  this.n = Math.sin(this.s0);
-  this.ro0 = this.k1 * this.n0 / Math.tan(this.s0);
-  this.ad = this.s90 - this.uq;
-};
-
-/* ellipsoid */
-/* calculate xy from lat/lon */
-/* Constants, identical to inverse transform function */
-exports.forward = function(p) {
-  var gfi, u, deltav, s, d, eps, ro;
-  var lon = p.x;
-  var lat = p.y;
-  var delta_lon = adjust_lon(lon - this.long0);
-  /* Transformation */
-  gfi = Math.pow(((1 + this.e * Math.sin(lat)) / (1 - this.e * Math.sin(lat))), (this.alfa * this.e / 2));
-  u = 2 * (Math.atan(this.k * Math.pow(Math.tan(lat / 2 + this.s45), this.alfa) / gfi) - this.s45);
-  deltav = -delta_lon * this.alfa;
-  s = Math.asin(Math.cos(this.ad) * Math.sin(u) + Math.sin(this.ad) * Math.cos(u) * Math.cos(deltav));
-  d = Math.asin(Math.cos(u) * Math.sin(deltav) / Math.cos(s));
-  eps = this.n * d;
-  ro = this.ro0 * Math.pow(Math.tan(this.s0 / 2 + this.s45), this.n) / Math.pow(Math.tan(s / 2 + this.s45), this.n);
-  p.y = ro * Math.cos(eps) / 1;
-  p.x = ro * Math.sin(eps) / 1;
-
-  if (!this.czech) {
-    p.y *= -1;
-    p.x *= -1;
-  }
-  return (p);
-};
-
-/* calculate lat/lon from xy */
-exports.inverse = function(p) {
-  var u, deltav, s, d, eps, ro, fi1;
-  var ok;
-
-  /* Transformation */
-  /* revert y, x*/
-  var tmp = p.x;
-  p.x = p.y;
-  p.y = tmp;
-  if (!this.czech) {
-    p.y *= -1;
-    p.x *= -1;
-  }
-  ro = Math.sqrt(p.x * p.x + p.y * p.y);
-  eps = Math.atan2(p.y, p.x);
-  d = eps / Math.sin(this.s0);
-  s = 2 * (Math.atan(Math.pow(this.ro0 / ro, 1 / this.n) * Math.tan(this.s0 / 2 + this.s45)) - this.s45);
-  u = Math.asin(Math.cos(this.ad) * Math.sin(s) - Math.sin(this.ad) * Math.cos(s) * Math.cos(d));
-  deltav = Math.asin(Math.cos(s) * Math.sin(d) / Math.cos(u));
-  p.x = this.long0 - deltav / this.alfa;
-  fi1 = u;
-  ok = 0;
-  var iter = 0;
-  do {
-    p.y = 2 * (Math.atan(Math.pow(this.k, - 1 / this.alfa) * Math.pow(Math.tan(u / 2 + this.s45), 1 / this.alfa) * Math.pow((1 + this.e * Math.sin(fi1)) / (1 - this.e * Math.sin(fi1)), this.e / 2)) - this.s45);
-    if (Math.abs(fi1 - p.y) < 0.0000000001) {
-      ok = 1;
-    }
-    fi1 = p.y;
-    iter += 1;
-  } while (ok === 0 && iter < 15);
-  if (iter >= 15) {
-    return null;
-  }
-
-  return (p);
-};
-exports.names = ["Krovak", "krovak"];
-
-},{"../common/adjust_lon":5}],49:[function(_dereq_,module,exports){
-var HALF_PI = Math.PI/2;
-var FORTPI = Math.PI/4;
-var EPSLN = 1.0e-10;
-var qsfnz = _dereq_('../common/qsfnz');
-var adjust_lon = _dereq_('../common/adjust_lon');
-/*
-  reference
-    "New Equal-Area Map Projections for Noncircular Regions", John P. Snyder,
-    The American Cartographer, Vol 15, No. 4, October 1988, pp. 341-355.
-  */
-
-exports.S_POLE = 1;
-exports.N_POLE = 2;
-exports.EQUIT = 3;
-exports.OBLIQ = 4;
-
-
-/* Initialize the Lambert Azimuthal Equal Area projection
-  ------------------------------------------------------*/
-exports.init = function() {
-  var t = Math.abs(this.lat0);
-  if (Math.abs(t - HALF_PI) < EPSLN) {
-    this.mode = this.lat0 < 0 ? this.S_POLE : this.N_POLE;
-  }
-  else if (Math.abs(t) < EPSLN) {
-    this.mode = this.EQUIT;
-  }
-  else {
-    this.mode = this.OBLIQ;
-  }
-  if (this.es > 0) {
-    var sinphi;
-
-    this.qp = qsfnz(this.e, 1);
-    this.mmf = 0.5 / (1 - this.es);
-    this.apa = this.authset(this.es);
-    switch (this.mode) {
-    case this.N_POLE:
-      this.dd = 1;
-      break;
-    case this.S_POLE:
-      this.dd = 1;
-      break;
-    case this.EQUIT:
-      this.rq = Math.sqrt(0.5 * this.qp);
-      this.dd = 1 / this.rq;
-      this.xmf = 1;
-      this.ymf = 0.5 * this.qp;
-      break;
-    case this.OBLIQ:
-      this.rq = Math.sqrt(0.5 * this.qp);
-      sinphi = Math.sin(this.lat0);
-      this.sinb1 = qsfnz(this.e, sinphi) / this.qp;
-      this.cosb1 = Math.sqrt(1 - this.sinb1 * this.sinb1);
-      this.dd = Math.cos(this.lat0) / (Math.sqrt(1 - this.es * sinphi * sinphi) * this.rq * this.cosb1);
-      this.ymf = (this.xmf = this.rq) / this.dd;
-      this.xmf *= this.dd;
-      break;
-    }
-  }
-  else {
-    if (this.mode === this.OBLIQ) {
-      this.sinph0 = Math.sin(this.lat0);
-      this.cosph0 = Math.cos(this.lat0);
-    }
-  }
-};
-
-/* Lambert Azimuthal Equal Area forward equations--mapping lat,long to x,y
-  -----------------------------------------------------------------------*/
-exports.forward = function(p) {
-
-  /* Forward equations
-      -----------------*/
-  var x, y, coslam, sinlam, sinphi, q, sinb, cosb, b, cosphi;
-  var lam = p.x;
-  var phi = p.y;
-
-  lam = adjust_lon(lam - this.long0);
-
-  if (this.sphere) {
-    sinphi = Math.sin(phi);
-    cosphi = Math.cos(phi);
-    coslam = Math.cos(lam);
-    if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {
-      y = (this.mode === this.EQUIT) ? 1 + cosphi * coslam : 1 + this.sinph0 * sinphi + this.cosph0 * cosphi * coslam;
-      if (y <= EPSLN) {
-        return null;
-      }
-      y = Math.sqrt(2 / y);
-      x = y * cosphi * Math.sin(lam);
-      y *= (this.mode === this.EQUIT) ? sinphi : this.cosph0 * sinphi - this.sinph0 * cosphi * coslam;
-    }
-    else if (this.mode === this.N_POLE || this.mode === this.S_POLE) {
-      if (this.mode === this.N_POLE) {
-        coslam = -coslam;
-      }
-      if (Math.abs(phi + this.phi0) < EPSLN) {
-        return null;
-      }
-      y = FORTPI - phi * 0.5;
-      y = 2 * ((this.mode === this.S_POLE) ? Math.cos(y) : Math.sin(y));
-      x = y * Math.sin(lam);
-      y *= coslam;
-    }
-  }
-  else {
-    sinb = 0;
-    cosb = 0;
-    b = 0;
-    coslam = Math.cos(lam);
-    sinlam = Math.sin(lam);
-    sinphi = Math.sin(phi);
-    q = qsfnz(this.e, sinphi);
-    if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {
-      sinb = q / this.qp;
-      cosb = Math.sqrt(1 - sinb * sinb);
-    }
-    switch (this.mode) {
-    case this.OBLIQ:
-      b = 1 + this.sinb1 * sinb + this.cosb1 * cosb * coslam;
-      break;
-    case this.EQUIT:
-      b = 1 + cosb * coslam;
-      break;
-    case this.N_POLE:
-      b = HALF_PI + phi;
-      q = this.qp - q;
-      break;
-    case this.S_POLE:
-      b = phi - HALF_PI;
-      q = this.qp + q;
-      break;
-    }
-    if (Math.abs(b) < EPSLN) {
-      return null;
-    }
-    switch (this.mode) {
-    case this.OBLIQ:
-    case this.EQUIT:
-      b = Math.sqrt(2 / b);
-      if (this.mode === this.OBLIQ) {
-        y = this.ymf * b * (this.cosb1 * sinb - this.sinb1 * cosb * coslam);
-      }
-      else {
-        y = (b = Math.sqrt(2 / (1 + cosb * coslam))) * sinb * this.ymf;
-      }
-      x = this.xmf * b * cosb * sinlam;
-      break;
-    case this.N_POLE:
-    case this.S_POLE:
-      if (q >= 0) {
-        x = (b = Math.sqrt(q)) * sinlam;
-        y = coslam * ((this.mode === this.S_POLE) ? b : -b);
-      }
-      else {
-        x = y = 0;
-      }
-      break;
-    }
-  }
-
-  p.x = this.a * x + this.x0;
-  p.y = this.a * y + this.y0;
-  return p;
-};
-
-/* Inverse equations
-  -----------------*/
-exports.inverse = function(p) {
-  p.x -= this.x0;
-  p.y -= this.y0;
-  var x = p.x / this.a;
-  var y = p.y / this.a;
-  var lam, phi, cCe, sCe, q, rho, ab;
-
-  if (this.sphere) {
-    var cosz = 0,
-      rh, sinz = 0;
-
-    rh = Math.sqrt(x * x + y * y);
-    phi = rh * 0.5;
-    if (phi > 1) {
-      return null;
-    }
-    phi = 2 * Math.asin(phi);
-    if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {
-      sinz = Math.sin(phi);
-      cosz = Math.cos(phi);
-    }
-    switch (this.mode) {
-    case this.EQUIT:
-      phi = (Math.abs(rh) <= EPSLN) ? 0 : Math.asin(y * sinz / rh);
-      x *= sinz;
-      y = cosz * rh;
-      break;
-    case this.OBLIQ:
-      phi = (Math.abs(rh) <= EPSLN) ? this.phi0 : Math.asin(cosz * this.sinph0 + y * sinz * this.cosph0 / rh);
-      x *= sinz * this.cosph0;
-      y = (cosz - Math.sin(phi) * this.sinph0) * rh;
-      break;
-    case this.N_POLE:
-      y = -y;
-      phi = HALF_PI - phi;
-      break;
-    case this.S_POLE:
-      phi -= HALF_PI;
-      break;
-    }
-    lam = (y === 0 && (this.mode === this.EQUIT || this.mode === this.OBLIQ)) ? 0 : Math.atan2(x, y);
-  }
-  else {
-    ab = 0;
-    if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {
-      x /= this.dd;
-      y *= this.dd;
-      rho = Math.sqrt(x * x + y * y);
-      if (rho < EPSLN) {
-        p.x = 0;
-        p.y = this.phi0;
-        return p;
-      }
-      sCe = 2 * Math.asin(0.5 * rho / this.rq);
-      cCe = Math.cos(sCe);
-      x *= (sCe = Math.sin(sCe));
-      if (this.mode === this.OBLIQ) {
-        ab = cCe * this.sinb1 + y * sCe * this.cosb1 / rho;
-        q = this.qp * ab;
-        y = rho * this.cosb1 * cCe - y * this.sinb1 * sCe;
-      }
-      else {
-        ab = y * sCe / rho;
-        q = this.qp * ab;
-        y = rho * cCe;
-      }
-    }
-    else if (this.mode === this.N_POLE || this.mode === this.S_POLE) {
-      if (this.mode === this.N_POLE) {
-        y = -y;
-      }
-      q = (x * x + y * y);
-      if (!q) {
-        p.x = 0;
-        p.y = this.phi0;
-        return p;
-      }
-      ab = 1 - q / this.qp;
-      if (this.mode === this.S_POLE) {
-        ab = -ab;
-      }
-    }
-    lam = Math.atan2(x, y);
-    phi = this.authlat(Math.asin(ab), this.apa);
-  }
-
-
-  p.x = adjust_lon(this.long0 + lam);
-  p.y = phi;
-  return p;
-};
-
-/* determine latitude from authalic latitude */
-exports.P00 = 0.33333333333333333333;
-exports.P01 = 0.17222222222222222222;
-exports.P02 = 0.10257936507936507936;
-exports.P10 = 0.06388888888888888888;
-exports.P11 = 0.06640211640211640211;
-exports.P20 = 0.01641501294219154443;
-
-exports.authset = function(es) {
-  var t;
-  var APA = [];
-  APA[0] = es * this.P00;
-  t = es * es;
-  APA[0] += t * this.P01;
-  APA[1] = t * this.P10;
-  t *= es;
-  APA[0] += t * this.P02;
-  APA[1] += t * this.P11;
-  APA[2] = t * this.P20;
-  return APA;
-};
-
-exports.authlat = function(beta, APA) {
-  var t = beta + beta;
-  return (beta + APA[0] * Math.sin(t) + APA[1] * Math.sin(t + t) + APA[2] * Math.sin(t + t + t));
-};
-exports.names = ["Lambert Azimuthal Equal Area", "Lambert_Azimuthal_Equal_Area", "laea"];
-
-},{"../common/adjust_lon":5,"../common/qsfnz":20}],50:[function(_dereq_,module,exports){
-var EPSLN = 1.0e-10;
-var msfnz = _dereq_('../common/msfnz');
-var tsfnz = _dereq_('../common/tsfnz');
-var HALF_PI = Math.PI/2;
-var sign = _dereq_('../common/sign');
-var adjust_lon = _dereq_('../common/adjust_lon');
-var phi2z = _dereq_('../common/phi2z');
-exports.init = function() {
-
-  // array of:  r_maj,r_min,lat1,lat2,c_lon,c_lat,false_east,false_north
-  //double c_lat;                   /* center latitude                      */
-  //double c_lon;                   /* center longitude                     */
-  //double lat1;                    /* first standard parallel              */
-  //double lat2;                    /* second standard parallel             */
-  //double r_maj;                   /* major axis                           */
-  //double r_min;                   /* minor axis                           */
-  //double false_east;              /* x offset in meters                   */
-  //double false_north;             /* y offset in meters                   */
-
-  if (!this.lat2) {
-    this.lat2 = this.lat1;
-  } //if lat2 is not defined
-  if (!this.k0) {
-    this.k0 = 1;
-  }
-  this.x0 = this.x0 || 0;
-  this.y0 = this.y0 || 0;
-  // Standard Parallels cannot be equal and on opposite sides of the equator
-  if (Math.abs(this.lat1 + this.lat2) < EPSLN) {
-    return;
-  }
-
-  var temp = this.b / this.a;
-  this.e = Math.sqrt(1 - temp * temp);
-
-  var sin1 = Math.sin(this.lat1);
-  var cos1 = Math.cos(this.lat1);
-  var ms1 = msfnz(this.e, sin1, cos1);
-  var ts1 = tsfnz(this.e, this.lat1, sin1);
-
-  var sin2 = Math.sin(this.lat2);
-  var cos2 = Math.cos(this.lat2);
-  var ms2 = msfnz(this.e, sin2, cos2);
-  var ts2 = tsfnz(this.e, this.lat2, sin2);
-
-  var ts0 = tsfnz(this.e, this.lat0, Math.sin(this.lat0));
-
-  if (Math.abs(this.lat1 - this.lat2) > EPSLN) {
-    this.ns = Math.log(ms1 / ms2) / Math.log(ts1 / ts2);
-  }
-  else {
-    this.ns = sin1;
-  }
-  if (isNaN(this.ns)) {
-    this.ns = sin1;
-  }
-  this.f0 = ms1 / (this.ns * Math.pow(ts1, this.ns));
-  this.rh = this.a * this.f0 * Math.pow(ts0, this.ns);
-  if (!this.title) {
-    this.title = "Lambert Conformal Conic";
-  }
-};
-
-
-// Lambert Conformal conic forward equations--mapping lat,long to x,y
-// -----------------------------------------------------------------
-exports.forward = function(p) {
-
-  var lon = p.x;
-  var lat = p.y;
-
-  // singular cases :
-  if (Math.abs(2 * Math.abs(lat) - Math.PI) <= EPSLN) {
-    lat = sign(lat) * (HALF_PI - 2 * EPSLN);
-  }
-
-  var con = Math.abs(Math.abs(lat) - HALF_PI);
-  var ts, rh1;
-  if (con > EPSLN) {
-    ts = tsfnz(this.e, lat, Math.sin(lat));
-    rh1 = this.a * this.f0 * Math.pow(ts, this.ns);
-  }
-  else {
-    con = lat * this.ns;
-    if (con <= 0) {
-      return null;
-    }
-    rh1 = 0;
-  }
-  var theta = this.ns * adjust_lon(lon - this.long0);
-  p.x = this.k0 * (rh1 * Math.sin(theta)) + this.x0;
-  p.y = this.k0 * (this.rh - rh1 * Math.cos(theta)) + this.y0;
-
-  return p;
-};
-
-// Lambert Conformal Conic inverse equations--mapping x,y to lat/long
-// -----------------------------------------------------------------
-exports.inverse = function(p) {
-
-  var rh1, con, ts;
-  var lat, lon;
-  var x = (p.x - this.x0) / this.k0;
-  var y = (this.rh - (p.y - this.y0) / this.k0);
-  if (this.ns > 0) {
-    rh1 = Math.sqrt(x * x + y * y);
-    con = 1;
-  }
-  else {
-    rh1 = -Math.sqrt(x * x + y * y);
-    con = -1;
-  }
-  var theta = 0;
-  if (rh1 !== 0) {
-    theta = Math.atan2((con * x), (con * y));
-  }
-  if ((rh1 !== 0) || (this.ns > 0)) {
-    con = 1 / this.ns;
-    ts = Math.pow((rh1 / (this.a * this.f0)), con);
-    lat = phi2z(this.e, ts);
-    if (lat === -9999) {
-      return null;
-    }
-  }
-  else {
-    lat = -HALF_PI;
-  }
-  lon = adjust_lon(theta / this.ns + this.long0);
-
-  p.x = lon;
-  p.y = lat;
-  return p;
-};
-
-exports.names = ["Lambert Tangential Conformal Conic Projection", "Lambert_Conformal_Conic", "Lambert_Conformal_Conic_2SP", "lcc"];
-
-},{"../common/adjust_lon":5,"../common/msfnz":15,"../common/phi2z":16,"../common/sign":21,"../common/tsfnz":24}],51:[function(_dereq_,module,exports){
-exports.init = function() {
-  //no-op for longlat
-};
-
-function identity(pt) {
-  return pt;
-}
-exports.forward = identity;
-exports.inverse = identity;
-exports.names = ["longlat", "identity"];
-
-},{}],52:[function(_dereq_,module,exports){
-var msfnz = _dereq_('../common/msfnz');
-var HALF_PI = Math.PI/2;
-var EPSLN = 1.0e-10;
-var R2D = 57.29577951308232088;
-var adjust_lon = _dereq_('../common/adjust_lon');
-var FORTPI = Math.PI/4;
-var tsfnz = _dereq_('../common/tsfnz');
-var phi2z = _dereq_('../common/phi2z');
-exports.init = function() {
-  var con = this.b / this.a;
-  this.es = 1 - con * con;
-  if(!('x0' in this)){
-    this.x0 = 0;
-  }
-  if(!('y0' in this)){
-    this.y0 = 0;
-  }
-  this.e = Math.sqrt(this.es);
-  if (this.lat_ts) {
-    if (this.sphere) {
-      this.k0 = Math.cos(this.lat_ts);
-    }
-    else {
-      this.k0 = msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts));
-    }
-  }
-  else {
-    if (!this.k0) {
-      if (this.k) {
-        this.k0 = this.k;
-      }
-      else {
-        this.k0 = 1;
-      }
-    }
-  }
-};
-
-/* Mercator forward equations--mapping lat,long to x,y
-  --------------------------------------------------*/
-
-exports.forward = function(p) {
-  var lon = p.x;
-  var lat = p.y;
-  // convert to radians
-  if (lat * R2D > 90 && lat * R2D < -90 && lon * R2D > 180 && lon * R2D < -180) {
-    return null;
-  }
-
-  var x, y;
-  if (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN) {
-    return null;
-  }
-  else {
-    if (this.sphere) {
-      x = this.x0 + this.a * this.k0 * adjust_lon(lon - this.long0);
-      y = this.y0 + this.a * this.k0 * Math.log(Math.tan(FORTPI + 0.5 * lat));
-    }
-    else {
-      var sinphi = Math.sin(lat);
-      var ts = tsfnz(this.e, lat, sinphi);
-      x = this.x0 + this.a * this.k0 * adjust_lon(lon - this.long0);
-      y = this.y0 - this.a * this.k0 * Math.log(ts);
-    }
-    p.x = x;
-    p.y = y;
-    return p;
-  }
-};
-
-
-/* Mercator inverse equations--mapping x,y to lat/long
-  --------------------------------------------------*/
-exports.inverse = function(p) {
-
-  var x = p.x - this.x0;
-  var y = p.y - this.y0;
-  var lon, lat;
-
-  if (this.sphere) {
-    lat = HALF_PI - 2 * Math.atan(Math.exp(-y / (this.a * this.k0)));
-  }
-  else {
-    var ts = Math.exp(-y / (this.a * this.k0));
-    lat = phi2z(this.e, ts);
-    if (lat === -9999) {
-      return null;
-    }
-  }
-  lon = adjust_lon(this.long0 + x / (this.a * this.k0));
-
-  p.x = lon;
-  p.y = lat;
-  return p;
-};
-
-exports.names = ["Mercator", "Popular Visualisation Pseudo Mercator", "Mercator_1SP", "Mercator_Auxiliary_Sphere", "merc"];
-
-},{"../common/adjust_lon":5,"../common/msfnz":15,"../common/phi2z":16,"../common/tsfnz":24}],53:[function(_dereq_,module,exports){
-var adjust_lon = _dereq_('../common/adjust_lon');
-/*
-  reference
-    "New Equal-Area Map Projections for Noncircular Regions", John P. Snyder,
-    The American Cartographer, Vol 15, No. 4, October 1988, pp. 341-355.
-  */
-
-
-/* Initialize the Miller Cylindrical projection
-  -------------------------------------------*/
-exports.init = function() {
-  //no-op
-};
-
-
-/* Miller Cylindrical forward equations--mapping lat,long to x,y
-    ------------------------------------------------------------*/
-exports.forward = function(p) {
-  var lon = p.x;
-  var lat = p.y;
-  /* Forward equations
-      -----------------*/
-  var dlon = adjust_lon(lon - this.long0);
-  var x = this.x0 + this.a * dlon;
-  var y = this.y0 + this.a * Math.log(Math.tan((Math.PI / 4) + (lat / 2.5))) * 1.25;
-
-  p.x = x;
-  p.y = y;
-  return p;
-};
-
-/* Miller Cylindrical inverse equations--mapping x,y to lat/long
-    ------------------------------------------------------------*/
-exports.inverse = function(p) {
-  p.x -= this.x0;
-  p.y -= this.y0;
-
-  var lon = adjust_lon(this.long0 + p.x / this.a);
-  var lat = 2.5 * (Math.atan(Math.exp(0.8 * p.y / this.a)) - Math.PI / 4);
-
-  p.x = lon;
-  p.y = lat;
-  return p;
-};
-exports.names = ["Miller_Cylindrical", "mill"];
-
-},{"../common/adjust_lon":5}],54:[function(_dereq_,module,exports){
-var adjust_lon = _dereq_('../common/adjust_lon');
-var EPSLN = 1.0e-10;
-exports.init = function() {};
-
-/* Mollweide forward equations--mapping lat,long to x,y
-    ----------------------------------------------------*/
-exports.forward = function(p) {
-
-  /* Forward equations
-      -----------------*/
-  var lon = p.x;
-  var lat = p.y;
-
-  var delta_lon = adjust_lon(lon - this.long0);
-  var theta = lat;
-  var con = Math.PI * Math.sin(lat);
-
-  /* Iterate using the Newton-Raphson method to find theta
-      -----------------------------------------------------*/
-  for (var i = 0; true; i++) {
-    var delta_theta = -(theta + Math.sin(theta) - con) / (1 + Math.cos(theta));
-    theta += delta_theta;
-    if (Math.abs(delta_theta) < EPSLN) {
-      break;
-    }
-  }
-  theta /= 2;
-
-  /* If the latitude is 90 deg, force the x coordinate to be "0 + false easting"
-       this is done here because of precision problems with "cos(theta)"
-       --------------------------------------------------------------------------*/
-  if (Math.PI / 2 - Math.abs(lat) < EPSLN) {
-    delta_lon = 0;
-  }
-  var x = 0.900316316158 * this.a * delta_lon * Math.cos(theta) + this.x0;
-  var y = 1.4142135623731 * this.a * Math.sin(theta) + this.y0;
-
-  p.x = x;
-  p.y = y;
-  return p;
-};
-
-exports.inverse = function(p) {
-  var theta;
-  var arg;
-
-  /* Inverse equations
-      -----------------*/
-  p.x -= this.x0;
-  p.y -= this.y0;
-  arg = p.y / (1.4142135623731 * this.a);
-
-  /* Because of division by zero problems, 'arg' can not be 1.  Therefore
-       a number very close to one is used instead.
-       -------------------------------------------------------------------*/
-  if (Math.abs(arg) > 0.999999999999) {
-    arg = 0.999999999999;
-  }
-  theta = Math.asin(arg);
-  var lon = adjust_lon(this.long0 + (p.x / (0.900316316158 * this.a * Math.cos(theta))));
-  if (lon < (-Math.PI)) {
-    lon = -Math.PI;
-  }
-  if (lon > Math.PI) {
-    lon = Math.PI;
-  }
-  arg = (2 * theta + Math.sin(2 * theta)) / Math.PI;
-  if (Math.abs(arg) > 1) {
-    arg = 1;
-  }
-  var lat = Math.asin(arg);
-
-  p.x = lon;
-  p.y = lat;
-  return p;
-};
-exports.names = ["Mollweide", "moll"];
-
-},{"../common/adjust_lon":5}],55:[function(_dereq_,module,exports){
-var SEC_TO_RAD = 4.84813681109535993589914102357e-6;
-/*
-  reference
-    Department of Land and Survey Technical Circular 1973/32
-      http://www.linz.govt.nz/docs/miscellaneous/nz-map-definition.pdf
-    OSG Technical Report 4.1
-      http://www.linz.govt.nz/docs/miscellaneous/nzmg.pdf
-  */
-
-/**
- * iterations: Number of iterations to refine inverse transform.
- *     0 -> km accuracy
- *     1 -> m accuracy -- suitable for most mapping applications
- *     2 -> mm accuracy
- */
-exports.iterations = 1;
-
-exports.init = function() {
-  this.A = [];
-  this.A[1] = 0.6399175073;
-  this.A[2] = -0.1358797613;
-  this.A[3] = 0.063294409;
-  this.A[4] = -0.02526853;
-  this.A[5] = 0.0117879;
-  this.A[6] = -0.0055161;
-  this.A[7] = 0.0026906;
-  this.A[8] = -0.001333;
-  this.A[9] = 0.00067;
-  this.A[10] = -0.00034;
-
-  this.B_re = [];
-  this.B_im = [];
-  this.B_re[1] = 0.7557853228;
-  this.B_im[1] = 0;
-  this.B_re[2] = 0.249204646;
-  this.B_im[2] = 0.003371507;
-  this.B_re[3] = -0.001541739;
-  this.B_im[3] = 0.041058560;
-  this.B_re[4] = -0.10162907;
-  this.B_im[4] = 0.01727609;
-  this.B_re[5] = -0.26623489;
-  this.B_im[5] = -0.36249218;
-  this.B_re[6] = -0.6870983;
-  this.B_im[6] = -1.1651967;
-
-  this.C_re = [];
-  this.C_im = [];
-  this.C_re[1] = 1.3231270439;
-  this.C_im[1] = 0;
-  this.C_re[2] = -0.577245789;
-  this.C_im[2] = -0.007809598;
-  this.C_re[3] = 0.508307513;
-  this.C_im[3] = -0.112208952;
-  this.C_re[4] = -0.15094762;
-  this.C_im[4] = 0.18200602;
-  this.C_re[5] = 1.01418179;
-  this.C_im[5] = 1.64497696;
-  this.C_re[6] = 1.9660549;
-  this.C_im[6] = 2.5127645;
-
-  this.D = [];
-  this.D[1] = 1.5627014243;
-  this.D[2] = 0.5185406398;
-  this.D[3] = -0.03333098;
-  this.D[4] = -0.1052906;
-  this.D[5] = -0.0368594;
-  this.D[6] = 0.007317;
-  this.D[7] = 0.01220;
-  this.D[8] = 0.00394;
-  this.D[9] = -0.0013;
-};
-
-/**
-    New Zealand Map Grid Forward  - long/lat to x/y
-    long/lat in radians
-  */
-exports.forward = function(p) {
-  var n;
-  var lon = p.x;
-  var lat = p.y;
-
-  var delta_lat = lat - this.lat0;
-  var delta_lon = lon - this.long0;
-
-  // 1. Calculate d_phi and d_psi    ...                          // and d_lambda
-  // For this algorithm, delta_latitude is in seconds of arc x 10-5, so we need to scale to those units. Longitude is radians.
-  var d_phi = delta_lat / SEC_TO_RAD * 1E-5;
-  var d_lambda = delta_lon;
-  var d_phi_n = 1; // d_phi^0
-
-  var d_psi = 0;
-  for (n = 1; n <= 10; n++) {
-    d_phi_n = d_phi_n * d_phi;
-    d_psi = d_psi + this.A[n] * d_phi_n;
-  }
-
-  // 2. Calculate theta
-  var th_re = d_psi;
-  var th_im = d_lambda;
-
-  // 3. Calculate z
-  var th_n_re = 1;
-  var th_n_im = 0; // theta^0
-  var th_n_re1;
-  var th_n_im1;
-
-  var z_re = 0;
-  var z_im = 0;
-  for (n = 1; n <= 6; n++) {
-    th_n_re1 = th_n_re * th_re - th_n_im * th_im;
-    th_n_im1 = th_n_im * th_re + th_n_re * th_im;
-    th_n_re = th_n_re1;
-    th_n_im = th_n_im1;
-    z_re = z_re + this.B_re[n] * th_n_re - this.B_im[n] * th_n_im;
-    z_im = z_im + this.B_im[n] * th_n_re + this.B_re[n] * th_n_im;
-  }
-
-  // 4. Calculate easting and northing
-  p.x = (z_im * this.a) + this.x0;
-  p.y = (z_re * this.a) + this.y0;
-
-  return p;
-};
-
-
-/**
-    New Zealand Map Grid Inverse  -  x/y to long/lat
-  */
-exports.inverse = function(p) {
-  var n;
-  var x = p.x;
-  var y = p.y;
-
-  var delta_x = x - this.x0;
-  var delta_y = y - this.y0;
-
-  // 1. Calculate z
-  var z_re = delta_y / this.a;
-  var z_im = delta_x / this.a;
-
-  // 2a. Calculate theta - first approximation gives km accuracy
-  var z_n_re = 1;
-  var z_n_im = 0; // z^0
-  var z_n_re1;
-  var z_n_im1;
-
-  var th_re = 0;
-  var th_im = 0;
-  for (n = 1; n <= 6; n++) {
-    z_n_re1 = z_n_re * z_re - z_n_im * z_im;
-    z_n_im1 = z_n_im * z_re + z_n_re * z_im;
-    z_n_re = z_n_re1;
-    z_n_im = z_n_im1;
-    th_re = th_re + this.C_re[n] * z_n_re - this.C_im[n] * z_n_im;
-    th_im = th_im + this.C_im[n] * z_n_re + this.C_re[n] * z_n_im;
-  }
-
-  // 2b. Iterate to refine the accuracy of the calculation
-  //        0 iterations gives km accuracy
-  //        1 iteration gives m accuracy -- good enough for most mapping applications
-  //        2 iterations bives mm accuracy
-  for (var i = 0; i < this.iterations; i++) {
-    var th_n_re = th_re;
-    var th_n_im = th_im;
-    var th_n_re1;
-    var th_n_im1;
-
-    var num_re = z_re;
-    var num_im = z_im;
-    for (n = 2; n <= 6; n++) {
-      th_n_re1 = th_n_re * th_re - th_n_im * th_im;
-      th_n_im1 = th_n_im * th_re + th_n_re * th_im;
-      th_n_re = th_n_re1;
-      th_n_im = th_n_im1;
-      num_re = num_re + (n - 1) * (this.B_re[n] * th_n_re - this.B_im[n] * th_n_im);
-      num_im = num_im + (n - 1) * (this.B_im[n] * th_n_re + this.B_re[n] * th_n_im);
-    }
-
-    th_n_re = 1;
-    th_n_im = 0;
-    var den_re = this.B_re[1];
-    var den_im = this.B_im[1];
-    for (n = 2; n <= 6; n++) {
-      th_n_re1 = th_n_re * th_re - th_n_im * th_im;
-      th_n_im1 = th_n_im * th_re + th_n_re * th_im;
-      th_n_re = th_n_re1;
-      th_n_im = th_n_im1;
-      den_re = den_re + n * (this.B_re[n] * th_n_re - this.B_im[n] * th_n_im);
-      den_im = den_im + n * (this.B_im[n] * th_n_re + this.B_re[n] * th_n_im);
-    }
-
-    // Complex division
-    var den2 = den_re * den_re + den_im * den_im;
-    th_re = (num_re * den_re + num_im * den_im) / den2;
-    th_im = (num_im * den_re - num_re * den_im) / den2;
-  }
-
-  // 3. Calculate d_phi              ...                                    // and d_lambda
-  var d_psi = th_re;
-  var d_lambda = th_im;
-  var d_psi_n = 1; // d_psi^0
-
-  var d_phi = 0;
-  for (n = 1; n <= 9; n++) {
-    d_psi_n = d_psi_n * d_psi;
-    d_phi = d_phi + this.D[n] * d_psi_n;
-  }
-
-  // 4. Calculate latitude and longitude
-  // d_phi is calcuated in second of arc * 10^-5, so we need to scale back to radians. d_lambda is in radians.
-  var lat = this.lat0 + (d_phi * SEC_TO_RAD * 1E5);
-  var lon = this.long0 + d_lambda;
-
-  p.x = lon;
-  p.y = lat;
-
-  return p;
-};
-exports.names = ["New_Zealand_Map_Grid", "nzmg"];
-},{}],56:[function(_dereq_,module,exports){
-var tsfnz = _dereq_('../common/tsfnz');
-var adjust_lon = _dereq_('../common/adjust_lon');
-var phi2z = _dereq_('../common/phi2z');
-var HALF_PI = Math.PI/2;
-var FORTPI = Math.PI/4;
-var EPSLN = 1.0e-10;
-
-/* Initialize the Oblique Mercator  projection
-    ------------------------------------------*/
-exports.init = function() {
-  this.no_off = this.no_off || false;
-  this.no_rot = this.no_rot || false;
-
-  if (isNaN(this.k0)) {
-    this.k0 = 1;
-  }
-  var sinlat = Math.sin(this.lat0);
-  var coslat = Math.cos(this.lat0);
-  var con = this.e * sinlat;
-
-  this.bl = Math.sqrt(1 + this.es / (1 - this.es) * Math.pow(coslat, 4));
-  this.al = this.a * this.bl * this.k0 * Math.sqrt(1 - this.es) / (1 - con * con);
-  var t0 = tsfnz(this.e, this.lat0, sinlat);
-  var dl = this.bl / coslat * Math.sqrt((1 - this.es) / (1 - con * con));
-  if (dl * dl < 1) {
-    dl = 1;
-  }
-  var fl;
-  var gl;
-  if (!isNaN(this.longc)) {
-    //Central point and azimuth method
-
-    if (this.lat0 >= 0) {
-      fl = dl + Math.sqrt(dl * dl - 1);
-    }
-    else {
-      fl = dl - Math.sqrt(dl * dl - 1);
-    }
-    this.el = fl * Math.pow(t0, this.bl);
-    gl = 0.5 * (fl - 1 / fl);
-    this.gamma0 = Math.asin(Math.sin(this.alpha) / dl);
-    this.long0 = this.longc - Math.asin(gl * Math.tan(this.gamma0)) / this.bl;
-
-  }
-  else {
-    //2 points method
-    var t1 = tsfnz(this.e, this.lat1, Math.sin(this.lat1));
-    var t2 = tsfnz(this.e, this.lat2, Math.sin(this.lat2));
-    if (this.lat0 >= 0) {
-      this.el = (dl + Math.sqrt(dl * dl - 1)) * Math.pow(t0, this.bl);
-    }
-    else {
-      this.el = (dl - Math.sqrt(dl * dl - 1)) * Math.pow(t0, this.bl);
-    }
-    var hl = Math.pow(t1, this.bl);
-    var ll = Math.pow(t2, this.bl);
-    fl = this.el / hl;
-    gl = 0.5 * (fl - 1 / fl);
-    var jl = (this.el * this.el - ll * hl) / (this.el * this.el + ll * hl);
-    var pl = (ll - hl) / (ll + hl);
-    var dlon12 = adjust_lon(this.long1 - this.long2);
-    this.long0 = 0.5 * (this.long1 + this.long2) - Math.atan(jl * Math.tan(0.5 * this.bl * (dlon12)) / pl) / this.bl;
-    this.long0 = adjust_lon(this.long0);
-    var dlon10 = adjust_lon(this.long1 - this.long0);
-    this.gamma0 = Math.atan(Math.sin(this.bl * (dlon10)) / gl);
-    this.alpha = Math.asin(dl * Math.sin(this.gamma0));
-  }
-
-  if (this.no_off) {
-    this.uc = 0;
-  }
-  else {
-    if (this.lat0 >= 0) {
-      this.uc = this.al / this.bl * Math.atan2(Math.sqrt(dl * dl - 1), Math.cos(this.alpha));
-    }
-    else {
-      this.uc = -1 * this.al / this.bl * Math.atan2(Math.sqrt(dl * dl - 1), Math.cos(this.alpha));
-    }
-  }
-
-};
-
-
-/* Oblique Mercator forward equations--mapping lat,long to x,y
-    ----------------------------------------------------------*/
-exports.forward = function(p) {
-  var lon = p.x;
-  var lat = p.y;
-  var dlon = adjust_lon(lon - this.long0);
-  var us, vs;
-  var con;
-  if (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN) {
-    if (lat > 0) {
-      con = -1;
-    }
-    else {
-      con = 1;
-    }
-    vs = this.al / this.bl * Math.log(Math.tan(FORTPI + con * this.gamma0 * 0.5));
-    us = -1 * con * HALF_PI * this.al / this.bl;
-  }
-  else {
-    var t = tsfnz(this.e, lat, Math.sin(lat));
-    var ql = this.el / Math.pow(t, this.bl);
-    var sl = 0.5 * (ql - 1 / ql);
-    var tl = 0.5 * (ql + 1 / ql);
-    var vl = Math.sin(this.bl * (dlon));
-    var ul = (sl * Math.sin(this.gamma0) - vl * Math.cos(this.gamma0)) / tl;
-    if (Math.abs(Math.abs(ul) - 1) <= EPSLN) {
-      vs = Number.POSITIVE_INFINITY;
-    }
-    else {
-      vs = 0.5 * this.al * Math.log((1 - ul) / (1 + ul)) / this.bl;
-    }
-    if (Math.abs(Math.cos(this.bl * (dlon))) <= EPSLN) {
-      us = this.al * this.bl * (dlon);
-    }
-    else {
-      us = this.al * Math.atan2(sl * Math.cos(this.gamma0) + vl * Math.sin(this.gamma0), Math.cos(this.bl * dlon)) / this.bl;
-    }
-  }
-
-  if (this.no_rot) {
-    p.x = this.x0 + us;
-    p.y = this.y0 + vs;
-  }
-  else {
-
-    us -= this.uc;
-    p.x = this.x0 + vs * Math.cos(this.alpha) + us * Math.sin(this.alpha);
-    p.y = this.y0 + us * Math.cos(this.alpha) - vs * Math.sin(this.alpha);
-  }
-  return p;
-};
-
-exports.inverse = function(p) {
-  var us, vs;
-  if (this.no_rot) {
-    vs = p.y - this.y0;
-    us = p.x - this.x0;
-  }
-  else {
-    vs = (p.x - this.x0) * Math.cos(this.alpha) - (p.y - this.y0) * Math.sin(this.alpha);
-    us = (p.y - this.y0) * Math.cos(this.alpha) + (p.x - this.x0) * Math.sin(this.alpha);
-    us += this.uc;
-  }
-  var qp = Math.exp(-1 * this.bl * vs / this.al);
-  var sp = 0.5 * (qp - 1 / qp);
-  var tp = 0.5 * (qp + 1 / qp);
-  var vp = Math.sin(this.bl * us / this.al);
-  var up = (vp * Math.cos(this.gamma0) + sp * Math.sin(this.gamma0)) / tp;
-  var ts = Math.pow(this.el / Math.sqrt((1 + up) / (1 - up)), 1 / this.bl);
-  if (Math.abs(up - 1) < EPSLN) {
-    p.x = this.long0;
-    p.y = HALF_PI;
-  }
-  else if (Math.abs(up + 1) < EPSLN) {
-    p.x = this.long0;
-    p.y = -1 * HALF_PI;
-  }
-  else {
-    p.y = phi2z(this.e, ts);
-    p.x = adjust_lon(this.long0 - Math.atan2(sp * Math.cos(this.gamma0) - vp * Math.sin(this.gamma0), Math.cos(this.bl * us / this.al)) / this.bl);
-  }
-  return p;
-};
-
-exports.names = ["Hotine_Oblique_Mercator", "Hotine Oblique Mercator", "Hotine_Oblique_Mercator_Azimuth_Natural_Origin", "Hotine_Oblique_Mercator_Azimuth_Center", "omerc"];
-},{"../common/adjust_lon":5,"../common/phi2z":16,"../common/tsfnz":24}],57:[function(_dereq_,module,exports){
-var e0fn = _dereq_('../common/e0fn');
-var e1fn = _dereq_('../common/e1fn');
-var e2fn = _dereq_('../common/e2fn');
-var e3fn = _dereq_('../common/e3fn');
-var adjust_lon = _dereq_('../common/adjust_lon');
-var adjust_lat = _dereq_('../common/adjust_lat');
-var mlfn = _dereq_('../common/mlfn');
-var EPSLN = 1.0e-10;
-var gN = _dereq_('../common/gN');
-var MAX_ITER = 20;
-exports.init = function() {
-  /* Place parameters in static storage for common use
-      -------------------------------------------------*/
-  this.temp = this.b / this.a;
-  this.es = 1 - Math.pow(this.temp, 2); // devait etre dans tmerc.js mais n y est pas donc je commente sinon retour de valeurs nulles
-  this.e = Math.sqrt(this.es);
-  this.e0 = e0fn(this.es);
-  this.e1 = e1fn(this.es);
-  this.e2 = e2fn(this.es);
-  this.e3 = e3fn(this.es);
-  this.ml0 = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0); //si que des zeros le calcul ne se fait pas
-};
-
-
-/* Polyconic forward equations--mapping lat,long to x,y
-    ---------------------------------------------------*/
-exports.forward = function(p) {
-  var lon = p.x;
-  var lat = p.y;
-  var x, y, el;
-  var dlon = adjust_lon(lon - this.long0);
-  el = dlon * Math.sin(lat);
-  if (this.sphere) {
-    if (Math.abs(lat) <= EPSLN) {
-      x = this.a * dlon;
-      y = -1 * this.a * this.lat0;
-    }
-    else {
-      x = this.a * Math.sin(el) / Math.tan(lat);
-      y = this.a * (adjust_lat(lat - this.lat0) + (1 - Math.cos(el)) / Math.tan(lat));
-    }
-  }
-  else {
-    if (Math.abs(lat) <= EPSLN) {
-      x = this.a * dlon;
-      y = -1 * this.ml0;
-    }
-    else {
-      var nl = gN(this.a, this.e, Math.sin(lat)) / Math.tan(lat);
-      x = nl * Math.sin(el);
-      y = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, lat) - this.ml0 + nl * (1 - Math.cos(el));
-    }
-
-  }
-  p.x = x + this.x0;
-  p.y = y + this.y0;
-  return p;
-};
-
-
-/* Inverse equations
-  -----------------*/
-exports.inverse = function(p) {
-  var lon, lat, x, y, i;
-  var al, bl;
-  var phi, dphi;
-  x = p.x - this.x0;
-  y = p.y - this.y0;
-
-  if (this.sphere) {
-    if (Math.abs(y + this.a * this.lat0) <= EPSLN) {
-      lon = adjust_lon(x / this.a + this.long0);
-      lat = 0;
-    }
-    else {
-      al = this.lat0 + y / this.a;
-      bl = x * x / this.a / this.a + al * al;
-      phi = al;
-      var tanphi;
-      for (i = MAX_ITER; i; --i) {
-        tanphi = Math.tan(phi);
-        dphi = -1 * (al * (phi * tanphi + 1) - phi - 0.5 * (phi * phi + bl) * tanphi) / ((phi - al) / tanphi - 1);
-        phi += dphi;
-        if (Math.abs(dphi) <= EPSLN) {
-          lat = phi;
-          break;
-        }
-      }
-      lon = adjust_lon(this.long0 + (Math.asin(x * Math.tan(phi) / this.a)) / Math.sin(lat));
-    }
-  }
-  else {
-    if (Math.abs(y + this.ml0) <= EPSLN) {
-      lat = 0;
-      lon = adjust_lon(this.long0 + x / this.a);
-    }
-    else {
-
-      al = (this.ml0 + y) / this.a;
-      bl = x * x / this.a / this.a + al * al;
-      phi = al;
-      var cl, mln, mlnp, ma;
-      var con;
-      for (i = MAX_ITER; i; --i) {
-        con = this.e * Math.sin(phi);
-        cl = Math.sqrt(1 - con * con) * Math.tan(phi);
-        mln = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, phi);
-        mlnp = this.e0 - 2 * this.e1 * Math.cos(2 * phi) + 4 * this.e2 * Math.cos(4 * phi) - 6 * this.e3 * Math.cos(6 * phi);
-        ma = mln / this.a;
-        dphi = (al * (cl * ma + 1) - ma - 0.5 * cl * (ma * ma + bl)) / (this.es * Math.sin(2 * phi) * (ma * ma + bl - 2 * al * ma) / (4 * cl) + (al - ma) * (cl * mlnp - 2 / Math.sin(2 * phi)) - mlnp);
-        phi -= dphi;
-        if (Math.abs(dphi) <= EPSLN) {
-          lat = phi;
-          break;
-        }
-      }
-
-      //lat=phi4z(this.e,this.e0,this.e1,this.e2,this.e3,al,bl,0,0);
-      cl = Math.sqrt(1 - this.es * Math.pow(Math.sin(lat), 2)) * Math.tan(lat);
-      lon = adjust_lon(this.long0 + Math.asin(x * cl / this.a) / Math.sin(lat));
-    }
-  }
-
-  p.x = lon;
-  p.y = lat;
-  return p;
-};
-exports.names = ["Polyconic", "poly"];
-},{"../common/adjust_lat":4,"../common/adjust_lon":5,"../common/e0fn":7,"../common/e1fn":8,"../common/e2fn":9,"../common/e3fn":10,"../common/gN":11,"../common/mlfn":14}],58:[function(_dereq_,module,exports){
-var adjust_lon = _dereq_('../common/adjust_lon');
-var adjust_lat = _dereq_('../common/adjust_lat');
-var pj_enfn = _dereq_('../common/pj_enfn');
-var MAX_ITER = 20;
-var pj_mlfn = _dereq_('../common/pj_mlfn');
-var pj_inv_mlfn = _dereq_('../common/pj_inv_mlfn');
-var HALF_PI = Math.PI/2;
-var EPSLN = 1.0e-10;
-var asinz = _dereq_('../common/asinz');
-exports.init = function() {
-  /* Place parameters in static storage for common use
-    -------------------------------------------------*/
-
-
-  if (!this.sphere) {
-    this.en = pj_enfn(this.es);
-  }
-  else {
-    this.n = 1;
-    this.m = 0;
-    this.es = 0;
-    this.C_y = Math.sqrt((this.m + 1) / this.n);
-    this.C_x = this.C_y / (this.m + 1);
-  }
-
-};
-
-/* Sinusoidal forward equations--mapping lat,long to x,y
-  -----------------------------------------------------*/
-exports.forward = function(p) {
-  var x, y;
-  var lon = p.x;
-  var lat = p.y;
-  /* Forward equations
-    -----------------*/
-  lon = adjust_lon(lon - this.long0);
-
-  if (this.sphere) {
-    if (!this.m) {
-      lat = this.n !== 1 ? Math.asin(this.n * Math.sin(lat)) : lat;
-    }
-    else {
-      var k = this.n * Math.sin(lat);
-      for (var i = MAX_ITER; i; --i) {
-        var V = (this.m * lat + Math.sin(lat) - k) / (this.m + Math.cos(lat));
-        lat -= V;
-        if (Math.abs(V) < EPSLN) {
-          break;
-        }
-      }
-    }
-    x = this.a * this.C_x * lon * (this.m + Math.cos(lat));
-    y = this.a * this.C_y * lat;
-
-  }
-  else {
-
-    var s = Math.sin(lat);
-    var c = Math.cos(lat);
-    y = this.a * pj_mlfn(lat, s, c, this.en);
-    x = this.a * lon * c / Math.sqrt(1 - this.es * s * s);
-  }
-
-  p.x = x;
-  p.y = y;
-  return p;
-};
-
-exports.inverse = function(p) {
-  var lat, temp, lon, s;
-
-  p.x -= this.x0;
-  lon = p.x / this.a;
-  p.y -= this.y0;
-  lat = p.y / this.a;
-
-  if (this.sphere) {
-    lat /= this.C_y;
-    lon = lon / (this.C_x * (this.m + Math.cos(lat)));
-    if (this.m) {
-      lat = asinz((this.m * lat + Math.sin(lat)) / this.n);
-    }
-    else if (this.n !== 1) {
-      lat = asinz(Math.sin(lat) / this.n);
-    }
-    lon = adjust_lon(lon + this.long0);
-    lat = adjust_lat(lat);
-  }
-  else {
-    lat = pj_inv_mlfn(p.y / this.a, this.es, this.en);
-    s = Math.abs(lat);
-    if (s < HALF_PI) {
-      s = Math.sin(lat);
-      temp = this.long0 + p.x * Math.sqrt(1 - this.es * s * s) / (this.a * Math.cos(lat));
-      //temp = this.long0 + p.x / (this.a * Math.cos(lat));
-      lon = adjust_lon(temp);
-    }
-    else if ((s - EPSLN) < HALF_PI) {
-      lon = this.long0;
-    }
-  }
-  p.x = lon;
-  p.y = lat;
-  return p;
-};
-exports.names = ["Sinusoidal", "sinu"];
-},{"../common/adjust_lat":4,"../common/adjust_lon":5,"../common/asinz":6,"../common/pj_enfn":17,"../common/pj_inv_mlfn":18,"../common/pj_mlfn":19}],59:[function(_dereq_,module,exports){
-/*
-  references:
-    Formules et constantes pour le Calcul pour la
-    projection cylindrique conforme à axe oblique et pour la transformation entre
-    des systèmes de référence.
-    http://www.swisstopo.admin.ch/internet/swisstopo/fr/home/topics/survey/sys/refsys/switzerland.parsysrelated1.31216.downloadList.77004.DownloadFile.tmp/swissprojectionfr.pdf
-  */
-exports.init = function() {
-  var phy0 = this.lat0;
-  this.lambda0 = this.long0;
-  var sinPhy0 = Math.sin(phy0);
-  var semiMajorAxis = this.a;
-  var invF = this.rf;
-  var flattening = 1 / invF;
-  var e2 = 2 * flattening - Math.pow(flattening, 2);
-  var e = this.e = Math.sqrt(e2);
-  this.R = this.k0 * semiMajorAxis * Math.sqrt(1 - e2) / (1 - e2 * Math.pow(sinPhy0, 2));
-  this.alpha = Math.sqrt(1 + e2 / (1 - e2) * Math.pow(Math.cos(phy0), 4));
-  this.b0 = Math.asin(sinPhy0 / this.alpha);
-  var k1 = Math.log(Math.tan(Math.PI / 4 + this.b0 / 2));
-  var k2 = Math.log(Math.tan(Math.PI / 4 + phy0 / 2));
-  var k3 = Math.log((1 + e * sinPhy0) / (1 - e * sinPhy0));
-  this.K = k1 - this.alpha * k2 + this.alpha * e / 2 * k3;
-};
-
-
-exports.forward = function(p) {
-  var Sa1 = Math.log(Math.tan(Math.PI / 4 - p.y / 2));
-  var Sa2 = this.e / 2 * Math.log((1 + this.e * Math.sin(p.y)) / (1 - this.e * Math.sin(p.y)));
-  var S = -this.alpha * (Sa1 + Sa2) + this.K;
-
-  // spheric latitude
-  var b = 2 * (Math.atan(Math.exp(S)) - Math.PI / 4);
-
-  // spheric longitude
-  var I = this.alpha * (p.x - this.lambda0);
-
-  // psoeudo equatorial rotation
-  var rotI = Math.atan(Math.sin(I) / (Math.sin(this.b0) * Math.tan(b) + Math.cos(this.b0) * Math.cos(I)));
-
-  var rotB = Math.asin(Math.cos(this.b0) * Math.sin(b) - Math.sin(this.b0) * Math.cos(b) * Math.cos(I));
-
-  p.y = this.R / 2 * Math.log((1 + Math.sin(rotB)) / (1 - Math.sin(rotB))) + this.y0;
-  p.x = this.R * rotI + this.x0;
-  return p;
-};
-
-exports.inverse = function(p) {
-  var Y = p.x - this.x0;
-  var X = p.y - this.y0;
-
-  var rotI = Y / this.R;
-  var rotB = 2 * (Math.atan(Math.exp(X / this.R)) - Math.PI / 4);
-
-  var b = Math.asin(Math.cos(this.b0) * Math.sin(rotB) + Math.sin(this.b0) * Math.cos(rotB) * Math.cos(rotI));
-  var I = Math.atan(Math.sin(rotI) / (Math.cos(this.b0) * Math.cos(rotI) - Math.sin(this.b0) * Math.tan(rotB)));
-
-  var lambda = this.lambda0 + I / this.alpha;
-
-  var S = 0;
-  var phy = b;
-  var prevPhy = -1000;
-  var iteration = 0;
-  while (Math.abs(phy - prevPhy) > 0.0000001) {
-    if (++iteration > 20) {
-      //...reportError("omercFwdInfinity");
-      return;
-    }
-    //S = Math.log(Math.tan(Math.PI / 4 + phy / 2));
-    S = 1 / this.alpha * (Math.log(Math.tan(Math.PI / 4 + b / 2)) - this.K) + this.e * Math.log(Math.tan(Math.PI / 4 + Math.asin(this.e * Math.sin(phy)) / 2));
-    prevPhy = phy;
-    phy = 2 * Math.atan(Math.exp(S)) - Math.PI / 2;
-  }
-
-  p.x = lambda;
-  p.y = phy;
-  return p;
-};
-
-exports.names = ["somerc"];
-
-},{}],60:[function(_dereq_,module,exports){
-var HALF_PI = Math.PI/2;
-var EPSLN = 1.0e-10;
-var sign = _dereq_('../common/sign');
-var msfnz = _dereq_('../common/msfnz');
-var tsfnz = _dereq_('../common/tsfnz');
-var phi2z = _dereq_('../common/phi2z');
-var adjust_lon = _dereq_('../common/adjust_lon');
-exports.ssfn_ = function(phit, sinphi, eccen) {
-  sinphi *= eccen;
-  return (Math.tan(0.5 * (HALF_PI + phit)) * Math.pow((1 - sinphi) / (1 + sinphi), 0.5 * eccen));
-};
-
-exports.init = function() {
-  this.coslat0 = Math.cos(this.lat0);
-  this.sinlat0 = Math.sin(this.lat0);
-  if (this.sphere) {
-    if (this.k0 === 1 && !isNaN(this.lat_ts) && Math.abs(this.coslat0) <= EPSLN) {
-      this.k0 = 0.5 * (1 + sign(this.lat0) * Math.sin(this.lat_ts));
-    }
-  }
-  else {
-    if (Math.abs(this.coslat0) <= EPSLN) {
-      if (this.lat0 > 0) {
-        //North pole
-        //trace('stere:north pole');
-        this.con = 1;
-      }
-      else {
-        //South pole
-        //trace('stere:south pole');
-        this.con = -1;
-      }
-    }
-    this.cons = Math.sqrt(Math.pow(1 + this.e, 1 + this.e) * Math.pow(1 - this.e, 1 - this.e));
-    if (this.k0 === 1 && !isNaN(this.lat_ts) && Math.abs(this.coslat0) <= EPSLN) {
-      this.k0 = 0.5 * this.cons * msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts)) / tsfnz(this.e, this.con * this.lat_ts, this.con * Math.sin(this.lat_ts));
-    }
-    this.ms1 = msfnz(this.e, this.sinlat0, this.coslat0);
-    this.X0 = 2 * Math.atan(this.ssfn_(this.lat0, this.sinlat0, this.e)) - HALF_PI;
-    this.cosX0 = Math.cos(this.X0);
-    this.sinX0 = Math.sin(this.X0);
-  }
-};
-
-// Stereographic forward equations--mapping lat,long to x,y
-exports.forward = function(p) {
-  var lon = p.x;
-  var lat = p.y;
-  var sinlat = Math.sin(lat);
-  var coslat = Math.cos(lat);
-  var A, X, sinX, cosX, ts, rh;
-  var dlon = adjust_lon(lon - this.long0);
-
-  if (Math.abs(Math.abs(lon - this.long0) - Math.PI) <= EPSLN && Math.abs(lat + this.lat0) <= EPSLN) {
-    //case of the origine point
-    //trace('stere:this is the origin point');
-    p.x = NaN;
-    p.y = NaN;
-    return p;
-  }
-  if (this.sphere) {
-    //trace('stere:sphere case');
-    A = 2 * this.k0 / (1 + this.sinlat0 * sinlat + this.coslat0 * coslat * Math.cos(dlon));
-    p.x = this.a * A * coslat * Math.sin(dlon) + this.x0;
-    p.y = this.a * A * (this.coslat0 * sinlat - this.sinlat0 * coslat * Math.cos(dlon)) + this.y0;
-    return p;
-  }
-  else {
-    X = 2 * Math.atan(this.ssfn_(lat, sinlat, this.e)) - HALF_PI;
-    cosX = Math.cos(X);
-    sinX = Math.sin(X);
-    if (Math.abs(this.coslat0) <= EPSLN) {
-      ts = tsfnz(this.e, lat * this.con, this.con * sinlat);
-      rh = 2 * this.a * this.k0 * ts / this.cons;
-      p.x = this.x0 + rh * Math.sin(lon - this.long0);
-      p.y = this.y0 - this.con * rh * Math.cos(lon - this.long0);
-      //trace(p.toString());
-      return p;
-    }
-    else if (Math.abs(this.sinlat0) < EPSLN) {
-      //Eq
-      //trace('stere:equateur');
-      A = 2 * this.a * this.k0 / (1 + cosX * Math.cos(dlon));
-      p.y = A * sinX;
-    }
-    else {
-      //other case
-      //trace('stere:normal case');
-      A = 2 * this.a * this.k0 * this.ms1 / (this.cosX0 * (1 + this.sinX0 * sinX + this.cosX0 * cosX * Math.cos(dlon)));
-      p.y = A * (this.cosX0 * sinX - this.sinX0 * cosX * Math.cos(dlon)) + this.y0;
-    }
-    p.x = A * cosX * Math.sin(dlon) + this.x0;
-  }
-  //trace(p.toString());
-  return p;
-};
-
-
-//* Stereographic inverse equations--mapping x,y to lat/long
-exports.inverse = function(p) {
-  p.x -= this.x0;
-  p.y -= this.y0;
-  var lon, lat, ts, ce, Chi;
-  var rh = Math.sqrt(p.x * p.x + p.y * p.y);
-  if (this.sphere) {
-    var c = 2 * Math.atan(rh / (0.5 * this.a * this.k0));
-    lon = this.long0;
-    lat = this.lat0;
-    if (rh <= EPSLN) {
-      p.x = lon;
-      p.y = lat;
-      return p;
-    }
-    lat = Math.asin(Math.cos(c) * this.sinlat0 + p.y * Math.sin(c) * this.coslat0 / rh);
-    if (Math.abs(this.coslat0) < EPSLN) {
-      if (this.lat0 > 0) {
-        lon = adjust_lon(this.long0 + Math.atan2(p.x, - 1 * p.y));
-      }
-      else {
-        lon = adjust_lon(this.long0 + Math.atan2(p.x, p.y));
-      }
-    }
-    else {
-      lon = adjust_lon(this.long0 + Math.atan2(p.x * Math.sin(c), rh * this.coslat0 * Math.cos(c) - p.y * this.sinlat0 * Math.sin(c)));
-    }
-    p.x = lon;
-    p.y = lat;
-    return p;
-  }
-  else {
-    if (Math.abs(this.coslat0) <= EPSLN) {
-      if (rh <= EPSLN) {
-        lat = this.lat0;
-        lon = this.long0;
-        p.x = lon;
-        p.y = lat;
-        //trace(p.toString());
-        return p;
-      }
-      p.x *= this.con;
-      p.y *= this.con;
-      ts = rh * this.cons / (2 * this.a * this.k0);
-      lat = this.con * phi2z(this.e, ts);
-      lon = this.con * adjust_lon(this.con * this.long0 + Math.atan2(p.x, - 1 * p.y));
-    }
-    else {
-      ce = 2 * Math.atan(rh * this.cosX0 / (2 * this.a * this.k0 * this.ms1));
-      lon = this.long0;
-      if (rh <= EPSLN) {
-        Chi = this.X0;
-      }
-      else {
-        Chi = Math.asin(Math.cos(ce) * this.sinX0 + p.y * Math.sin(ce) * this.cosX0 / rh);
-        lon = adjust_lon(this.long0 + Math.atan2(p.x * Math.sin(ce), rh * this.cosX0 * Math.cos(ce) - p.y * this.sinX0 * Math.sin(ce)));
-      }
-      lat = -1 * phi2z(this.e, Math.tan(0.5 * (HALF_PI + Chi)));
-    }
-  }
-  p.x = lon;
-  p.y = lat;
-
-  //trace(p.toString());
-  return p;
-
-};
-exports.names = ["stere", "Stereographic_South_Pole", "Polar Stereographic (variant B)"];
-
-},{"../common/adjust_lon":5,"../common/msfnz":15,"../common/phi2z":16,"../common/sign":21,"../common/tsfnz":24}],61:[function(_dereq_,module,exports){
-var gauss = _dereq_('./gauss');
-var adjust_lon = _dereq_('../common/adjust_lon');
-exports.init = function() {
-  gauss.init.apply(this);
-  if (!this.rc) {
-    return;
-  }
-  this.sinc0 = Math.sin(this.phic0);
-  this.cosc0 = Math.cos(this.phic0);
-  this.R2 = 2 * this.rc;
-  if (!this.title) {
-    this.title = "Oblique Stereographic Alternative";
-  }
-};
-
-exports.forward = function(p) {
-  var sinc, cosc, cosl, k;
-  p.x = adjust_lon(p.x - this.long0);
-  gauss.forward.apply(this, [p]);
-  sinc = Math.sin(p.y);
-  cosc = Math.cos(p.y);
-  cosl = Math.cos(p.x);
-  k = this.k0 * this.R2 / (1 + this.sinc0 * sinc + this.cosc0 * cosc * cosl);
-  p.x = k * cosc * Math.sin(p.x);
-  p.y = k * (this.cosc0 * sinc - this.sinc0 * cosc * cosl);
-  p.x = this.a * p.x + this.x0;
-  p.y = this.a * p.y + this.y0;
-  return p;
-};
-
-exports.inverse = function(p) {
-  var sinc, cosc, lon, lat, rho;
-  p.x = (p.x - this.x0) / this.a;
-  p.y = (p.y - this.y0) / this.a;
-
-  p.x /= this.k0;
-  p.y /= this.k0;
-  if ((rho = Math.sqrt(p.x * p.x + p.y * p.y))) {
-    var c = 2 * Math.atan2(rho, this.R2);
-    sinc = Math.sin(c);
-    cosc = Math.cos(c);
-    lat = Math.asin(cosc * this.sinc0 + p.y * sinc * this.cosc0 / rho);
-    lon = Math.atan2(p.x * sinc, rho * this.cosc0 * cosc - p.y * this.sinc0 * sinc);
-  }
-  else {
-    lat = this.phic0;
-    lon = 0;
-  }
-
-  p.x = lon;
-  p.y = lat;
-  gauss.inverse.apply(this, [p]);
-  p.x = adjust_lon(p.x + this.long0);
-  return p;
-};
-
-exports.names = ["Stereographic_North_Pole", "Oblique_Stereographic", "Polar_Stereographic", "sterea","Oblique Stereographic Alternative"];
-
-},{"../common/adjust_lon":5,"./gauss":46}],62:[function(_dereq_,module,exports){
-var e0fn = _dereq_('../common/e0fn');
-var e1fn = _dereq_('../common/e1fn');
-var e2fn = _dereq_('../common/e2fn');
-var e3fn = _dereq_('../common/e3fn');
-var mlfn = _dereq_('../common/mlfn');
-var adjust_lon = _dereq_('../common/adjust_lon');
-var HALF_PI = Math.PI/2;
-var EPSLN = 1.0e-10;
-var sign = _dereq_('../common/sign');
-var asinz = _dereq_('../common/asinz');
-
-exports.init = function() {
-  this.e0 = e0fn(this.es);
-  this.e1 = e1fn(this.es);
-  this.e2 = e2fn(this.es);
-  this.e3 = e3fn(this.es);
-  this.ml0 = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0);
-};
-
-/**
-    Transverse Mercator Forward  - long/lat to x/y
-    long/lat in radians
-  */
-exports.forward = function(p) {
-  var lon = p.x;
-  var lat = p.y;
-
-  var delta_lon = adjust_lon(lon - this.long0);
-  var con;
-  var x, y;
-  var sin_phi = Math.sin(lat);
-  var cos_phi = Math.cos(lat);
-
-  if (this.sphere) {
-    var b = cos_phi * Math.sin(delta_lon);
-    if ((Math.abs(Math.abs(b) - 1)) < 0.0000000001) {
-      return (93);
-    }
-    else {
-      x = 0.5 * this.a * this.k0 * Math.log((1 + b) / (1 - b));
-      con = Math.acos(cos_phi * Math.cos(delta_lon) / Math.sqrt(1 - b * b));
-      if (lat < 0) {
-        con = -con;
-      }
-      y = this.a * this.k0 * (con - this.lat0);
-    }
-  }
-  else {
-    var al = cos_phi * delta_lon;
-    var als = Math.pow(al, 2);
-    var c = this.ep2 * Math.pow(cos_phi, 2);
-    var tq = Math.tan(lat);
-    var t = Math.pow(tq, 2);
-    con = 1 - this.es * Math.pow(sin_phi, 2);
-    var n = this.a / Math.sqrt(con);
-    var ml = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, lat);
-
-    x = this.k0 * n * al * (1 + als / 6 * (1 - t + c + als / 20 * (5 - 18 * t + Math.pow(t, 2) + 72 * c - 58 * this.ep2))) + this.x0;
-    y = this.k0 * (ml - this.ml0 + n * tq * (als * (0.5 + als / 24 * (5 - t + 9 * c + 4 * Math.pow(c, 2) + als / 30 * (61 - 58 * t + Math.pow(t, 2) + 600 * c - 330 * this.ep2))))) + this.y0;
-
-  }
-  p.x = x;
-  p.y = y;
-  return p;
-};
-
-/**
-    Transverse Mercator Inverse  -  x/y to long/lat
-  */
-exports.inverse = function(p) {
-  var con, phi;
-  var delta_phi;
-  var i;
-  var max_iter = 6;
-  var lat, lon;
-
-  if (this.sphere) {
-    var f = Math.exp(p.x / (this.a * this.k0));
-    var g = 0.5 * (f - 1 / f);
-    var temp = this.lat0 + p.y / (this.a * this.k0);
-    var h = Math.cos(temp);
-    con = Math.sqrt((1 - h * h) / (1 + g * g));
-    lat = asinz(con);
-    if (temp < 0) {
-      lat = -lat;
-    }
-    if ((g === 0) && (h === 0)) {
-      lon = this.long0;
-    }
-    else {
-      lon = adjust_lon(Math.atan2(g, h) + this.long0);
-    }
-  }
-  else { // ellipsoidal form
-    var x = p.x - this.x0;
-    var y = p.y - this.y0;
-
-    con = (this.ml0 + y / this.k0) / this.a;
-    phi = con;
-    for (i = 0; true; i++) {
-      delta_phi = ((con + this.e1 * Math.sin(2 * phi) - this.e2 * Math.sin(4 * phi) + this.e3 * Math.sin(6 * phi)) / this.e0) - phi;
-      phi += delta_phi;
-      if (Math.abs(delta_phi) <= EPSLN) {
-        break;
-      }
-      if (i >= max_iter) {
-        return (95);
-      }
-    } // for()
-    if (Math.abs(phi) < HALF_PI) {
-      var sin_phi = Math.sin(phi);
-      var cos_phi = Math.cos(phi);
-      var tan_phi = Math.tan(phi);
-      var c = this.ep2 * Math.pow(cos_phi, 2);
-      var cs = Math.pow(c, 2);
-      var t = Math.pow(tan_phi, 2);
-      var ts = Math.pow(t, 2);
-      con = 1 - this.es * Math.pow(sin_phi, 2);
-      var n = this.a / Math.sqrt(con);
-      var r = n * (1 - this.es) / con;
-      var d = x / (n * this.k0);
-      var ds = Math.pow(d, 2);
-      lat = phi - (n * tan_phi * ds / r) * (0.5 - ds / 24 * (5 + 3 * t + 10 * c - 4 * cs - 9 * this.ep2 - ds / 30 * (61 + 90 * t + 298 * c + 45 * ts - 252 * this.ep2 - 3 * cs)));
-      lon = adjust_lon(this.long0 + (d * (1 - ds / 6 * (1 + 2 * t + c - ds / 20 * (5 - 2 * c + 28 * t - 3 * cs + 8 * this.ep2 + 24 * ts))) / cos_phi));
-    }
-    else {
-      lat = HALF_PI * sign(y);
-      lon = this.long0;
-    }
-  }
-  p.x = lon;
-  p.y = lat;
-  return p;
-};
-exports.names = ["Transverse_Mercator", "Transverse Mercator", "tmerc"];
-
-},{"../common/adjust_lon":5,"../common/asinz":6,"../common/e0fn":7,"../common/e1fn":8,"../common/e2fn":9,"../common/e3fn":10,"../common/mlfn":14,"../common/sign":21}],63:[function(_dereq_,module,exports){
-var D2R = 0.01745329251994329577;
-var tmerc = _dereq_('./tmerc');
-exports.dependsOn = 'tmerc';
-exports.init = function() {
-  if (!this.zone) {
-    return;
-  }
-  this.lat0 = 0;
-  this.long0 = ((6 * Math.abs(this.zone)) - 183) * D2R;
-  this.x0 = 500000;
-  this.y0 = this.utmSouth ? 10000000 : 0;
-  this.k0 = 0.9996;
-
-  tmerc.init.apply(this);
-  this.forward = tmerc.forward;
-  this.inverse = tmerc.inverse;
-};
-exports.names = ["Universal Transverse Mercator System", "utm"];
-
-},{"./tmerc":62}],64:[function(_dereq_,module,exports){
-var adjust_lon = _dereq_('../common/adjust_lon');
-var HALF_PI = Math.PI/2;
-var EPSLN = 1.0e-10;
-var asinz = _dereq_('../common/asinz');
-/* Initialize the Van Der Grinten projection
-  ----------------------------------------*/
-exports.init = function() {
-  //this.R = 6370997; //Radius of earth
-  this.R = this.a;
-};
-
-exports.forward = function(p) {
-
-  var lon = p.x;
-  var lat = p.y;
-
-  /* Forward equations
-    -----------------*/
-  var dlon = adjust_lon(lon - this.long0);
-  var x, y;
-
-  if (Math.abs(lat) <= EPSLN) {
-    x = this.x0 + this.R * dlon;
-    y = this.y0;
-  }
-  var theta = asinz(2 * Math.abs(lat / Math.PI));
-  if ((Math.abs(dlon) <= EPSLN) || (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN)) {
-    x = this.x0;
-    if (lat >= 0) {
-      y = this.y0 + Math.PI * this.R * Math.tan(0.5 * theta);
-    }
-    else {
-      y = this.y0 + Math.PI * this.R * -Math.tan(0.5 * theta);
-    }
-    //  return(OK);
-  }
-  var al = 0.5 * Math.abs((Math.PI / dlon) - (dlon / Math.PI));
-  var asq = al * al;
-  var sinth = Math.sin(theta);
-  var costh = Math.cos(theta);
-
-  var g = costh / (sinth + costh - 1);
-  var gsq = g * g;
-  var m = g * (2 / sinth - 1);
-  var msq = m * m;
-  var con = Math.PI * this.R * (al * (g - msq) + Math.sqrt(asq * (g - msq) * (g - msq) - (msq + asq) * (gsq - msq))) / (msq + asq);
-  if (dlon < 0) {
-    con = -con;
-  }
-  x = this.x0 + con;
-  //con = Math.abs(con / (Math.PI * this.R));
-  var q = asq + g;
-  con = Math.PI * this.R * (m * q - al * Math.sqrt((msq + asq) * (asq + 1) - q * q)) / (msq + asq);
-  if (lat >= 0) {
-    //y = this.y0 + Math.PI * this.R * Math.sqrt(1 - con * con - 2 * al * con);
-    y = this.y0 + con;
-  }
-  else {
-    //y = this.y0 - Math.PI * this.R * Math.sqrt(1 - con * con - 2 * al * con);
-    y = this.y0 - con;
-  }
-  p.x = x;
-  p.y = y;
-  return p;
-};
-
-/* Van Der Grinten inverse equations--mapping x,y to lat/long
-  ---------------------------------------------------------*/
-exports.inverse = function(p) {
-  var lon, lat;
-  var xx, yy, xys, c1, c2, c3;
-  var a1;
-  var m1;
-  var con;
-  var th1;
-  var d;
-
-  /* inverse equations
-    -----------------*/
-  p.x -= this.x0;
-  p.y -= this.y0;
-  con = Math.PI * this.R;
-  xx = p.x / con;
-  yy = p.y / con;
-  xys = xx * xx + yy * yy;
-  c1 = -Math.abs(yy) * (1 + xys);
-  c2 = c1 - 2 * yy * yy + xx * xx;
-  c3 = -2 * c1 + 1 + 2 * yy * yy + xys * xys;
-  d = yy * yy / c3 + (2 * c2 * c2 * c2 / c3 / c3 / c3 - 9 * c1 * c2 / c3 / c3) / 27;
-  a1 = (c1 - c2 * c2 / 3 / c3) / c3;
-  m1 = 2 * Math.sqrt(-a1 / 3);
-  con = ((3 * d) / a1) / m1;
-  if (Math.abs(con) > 1) {
-    if (con >= 0) {
-      con = 1;
-    }
-    else {
-      con = -1;
-    }
-  }
-  th1 = Math.acos(con) / 3;
-  if (p.y >= 0) {
-    lat = (-m1 * Math.cos(th1 + Math.PI / 3) - c2 / 3 / c3) * Math.PI;
-  }
-  else {
-    lat = -(-m1 * Math.cos(th1 + Math.PI / 3) - c2 / 3 / c3) * Math.PI;
-  }
-
-  if (Math.abs(xx) < EPSLN) {
-    lon = this.long0;
-  }
-  else {
-    lon = adjust_lon(this.long0 + Math.PI * (xys - 1 + Math.sqrt(1 + 2 * (xx * xx - yy * yy) + xys * xys)) / 2 / xx);
-  }
-
-  p.x = lon;
-  p.y = lat;
-  return p;
-};
-exports.names = ["Van_der_Grinten_I", "VanDerGrinten", "vandg"];
-},{"../common/adjust_lon":5,"../common/asinz":6}],65:[function(_dereq_,module,exports){
-var D2R = 0.01745329251994329577;
-var R2D = 57.29577951308232088;
-var PJD_3PARAM = 1;
-var PJD_7PARAM = 2;
-var datum_transform = _dereq_('./datum_transform');
-var adjust_axis = _dereq_('./adjust_axis');
-var proj = _dereq_('./Proj');
-var toPoint = _dereq_('./common/toPoint');
-module.exports = function transform(source, dest, point) {
-  var wgs84;
-  if (Array.isArray(point)) {
-    point = toPoint(point);
-  }
-  function checkNotWGS(source, dest) {
-    return ((source.datum.datum_type === PJD_3PARAM || source.datum.datum_type === PJD_7PARAM) && dest.datumCode !== "WGS84");
-  }
-
-  // Workaround for datum shifts towgs84, if either source or destination projection is not wgs84
-  if (source.datum && dest.datum && (checkNotWGS(source, dest) || checkNotWGS(dest, source))) {
-    wgs84 = new proj('WGS84');
-    transform(source, wgs84, point);
-    source = wgs84;
-  }
-  // DGR, 2010/11/12
-  if (source.axis !== "enu") {
-    adjust_axis(source, false, point);
-  }
-  // Transform source points to long/lat, if they aren't already.
-  if (source.projName === "longlat") {
-    point.x *= D2R; // convert degrees to radians
-    point.y *= D2R;
-  }
-  else {
-    if (source.to_meter) {
-      point.x *= source.to_meter;
-      point.y *= source.to_meter;
-    }
-    source.inverse(point); // Convert Cartesian to longlat
-  }
-  // Adjust for the prime meridian if necessary
-  if (source.from_greenwich) {
-    point.x += source.from_greenwich;
-  }
-
-  // Convert datums if needed, and if possible.
-  point = datum_transform(source.datum, dest.datum, point);
-
-  // Adjust for the prime meridian if necessary
-  if (dest.from_greenwich) {
-    point.x -= dest.from_greenwich;
-  }
-
-  if (dest.projName === "longlat") {
-    // convert radians to decimal degrees
-    point.x *= R2D;
-    point.y *= R2D;
-  }
-  else { // else project
-    dest.forward(point);
-    if (dest.to_meter) {
-      point.x /= dest.to_meter;
-      point.y /= dest.to_meter;
-    }
-  }
-
-  // DGR, 2010/11/12
-  if (dest.axis !== "enu") {
-    adjust_axis(dest, true, point);
-  }
-
-  return point;
-};
-},{"./Proj":2,"./adjust_axis":3,"./common/toPoint":23,"./datum_transform":31}],66:[function(_dereq_,module,exports){
-var D2R = 0.01745329251994329577;
-var extend = _dereq_('./extend');
-
-function mapit(obj, key, v) {
-  obj[key] = v.map(function(aa) {
-    var o = {};
-    sExpr(aa, o);
-    return o;
-  }).reduce(function(a, b) {
-    return extend(a, b);
-  }, {});
-}
-
-function sExpr(v, obj) {
-  var key;
-  if (!Array.isArray(v)) {
-    obj[v] = true;
-    return;
-  }
-  else {
-    key = v.shift();
-    if (key === 'PARAMETER') {
-      key = v.shift();
-    }
-    if (v.length === 1) {
-      if (Array.isArray(v[0])) {
-        obj[key] = {};
-        sExpr(v[0], obj[key]);
-      }
-      else {
-        obj[key] = v[0];
-      }
-    }
-    else if (!v.length) {
-      obj[key] = true;
-    }
-    else if (key === 'TOWGS84') {
-      obj[key] = v;
-    }
-    else {
-      obj[key] = {};
-      if (['UNIT', 'PRIMEM', 'VERT_DATUM'].indexOf(key) > -1) {
-        obj[key] = {
-          name: v[0].toLowerCase(),
-          convert: v[1]
-        };
-        if (v.length === 3) {
-          obj[key].auth = v[2];
-        }
-      }
-      else if (key === 'SPHEROID') {
-        obj[key] = {
-          name: v[0],
-          a: v[1],
-          rf: v[2]
-        };
-        if (v.length === 4) {
-          obj[key].auth = v[3];
-        }
-      }
-      else if (['GEOGCS', 'GEOCCS', 'DATUM', 'VERT_CS', 'COMPD_CS', 'LOCAL_CS', 'FITTED_CS', 'LOCAL_DATUM'].indexOf(key) > -1) {
-        v[0] = ['name', v[0]];
-        mapit(obj, key, v);
-      }
-      else if (v.every(function(aa) {
-        return Array.isArray(aa);
-      })) {
-        mapit(obj, key, v);
-      }
-      else {
-        sExpr(v, obj[key]);
-      }
-    }
-  }
-}
-
-function rename(obj, params) {
-  var outName = params[0];
-  var inName = params[1];
-  if (!(outName in obj) && (inName in obj)) {
-    obj[outName] = obj[inName];
-    if (params.length === 3) {
-      obj[outName] = params[2](obj[outName]);
-    }
-  }
-}
-
-function d2r(input) {
-  return input * D2R;
-}
-
-function cleanWKT(wkt) {
-  if (wkt.type === 'GEOGCS') {
-    wkt.projName = 'longlat';
-  }
-  else if (wkt.type === 'LOCAL_CS') {
-    wkt.projName = 'identity';
-    wkt.local = true;
-  }
-  else {
-    if (typeof wkt.PROJECTION === "object") {
-      wkt.projName = Object.keys(wkt.PROJECTION)[0];
-    }
-    else {
-      wkt.projName = wkt.PROJECTION;
-    }
-  }
-  if (wkt.UNIT) {
-    wkt.units = wkt.UNIT.name.toLowerCase();
-    if (wkt.units === 'metre') {
-      wkt.units = 'meter';
-    }
-    if (wkt.UNIT.convert) {
-      if (wkt.type === 'GEOGCS') {
-        if (wkt.DATUM && wkt.DATUM.SPHEROID) {
-          wkt.to_meter = parseFloat(wkt.UNIT.convert, 10)*wkt.DATUM.SPHEROID.a;
-        }
-      } else {
-        wkt.to_meter = parseFloat(wkt.UNIT.convert, 10);
-      }
-    }
-  }
-
-  if (wkt.GEOGCS) {
-    //if(wkt.GEOGCS.PRIMEM&&wkt.GEOGCS.PRIMEM.convert){
-    //  wkt.from_greenwich=wkt.GEOGCS.PRIMEM.convert*D2R;
-    //}
-    if (wkt.GEOGCS.DATUM) {
-      wkt.datumCode = wkt.GEOGCS.DATUM.name.toLowerCase();
-    }
-    else {
-      wkt.datumCode = wkt.GEOGCS.name.toLowerCase();
-    }
-    if (wkt.datumCode.slice(0, 2) === 'd_') {
-      wkt.datumCode = wkt.datumCode.slice(2);
-    }
-    if (wkt.datumCode === 'new_zealand_geodetic_datum_1949' || wkt.datumCode === 'new_zealand_1949') {
-      wkt.datumCode = 'nzgd49';
-    }
-    if (wkt.datumCode === "wgs_1984") {
-      if (wkt.PROJECTION === 'Mercator_Auxiliary_Sphere') {
-        wkt.sphere = true;
-      }
-      wkt.datumCode = 'wgs84';
-    }
-    if (wkt.datumCode.slice(-6) === '_ferro') {
-      wkt.datumCode = wkt.datumCode.slice(0, - 6);
-    }
-    if (wkt.datumCode.slice(-8) === '_jakarta') {
-      wkt.datumCode = wkt.datumCode.slice(0, - 8);
-    }
-    if (~wkt.datumCode.indexOf('belge')) {
-      wkt.datumCode = "rnb72";
-    }
-    if (wkt.GEOGCS.DATUM && wkt.GEOGCS.DATUM.SPHEROID) {
-      wkt.ellps = wkt.GEOGCS.DATUM.SPHEROID.name.replace('_19', '').replace(/[Cc]larke\_18/, 'clrk');
-      if (wkt.ellps.toLowerCase().slice(0, 13) === "international") {
-        wkt.ellps = 'intl';
-      }
-
-      wkt.a = wkt.GEOGCS.DATUM.SPHEROID.a;
-      wkt.rf = parseFloat(wkt.GEOGCS.DATUM.SPHEROID.rf, 10);
-    }
-    if (~wkt.datumCode.indexOf('osgb_1936')) {
-      wkt.datumCode = "osgb36";
-    }
-  }
-  if (wkt.b && !isFinite(wkt.b)) {
-    wkt.b = wkt.a;
-  }
-
-  function toMeter(input) {
-    var ratio = wkt.to_meter || 1;
-    return parseFloat(input, 10) * ratio;
-  }
-  var renamer = function(a) {
-    return rename(wkt, a);
-  };
-  var list = [
-    ['standard_parallel_1', 'Standard_Parallel_1'],
-    ['standard_parallel_2', 'Standard_Parallel_2'],
-    ['false_easting', 'False_Easting'],
-    ['false_northing', 'False_Northing'],
-    ['central_meridian', 'Central_Meridian'],
-    ['latitude_of_origin', 'Latitude_Of_Origin'],
-    ['latitude_of_origin', 'Central_Parallel'],
-    ['scale_factor', 'Scale_Factor'],
-    ['k0', 'scale_factor'],
-    ['latitude_of_center', 'Latitude_of_center'],
-    ['lat0', 'latitude_of_center', d2r],
-    ['longitude_of_center', 'Longitude_Of_Center'],
-    ['longc', 'longitude_of_center', d2r],
-    ['x0', 'false_easting', toMeter],
-    ['y0', 'false_northing', toMeter],
-    ['long0', 'central_meridian', d2r],
-    ['lat0', 'latitude_of_origin', d2r],
-    ['lat0', 'standard_parallel_1', d2r],
-    ['lat1', 'standard_parallel_1', d2r],
-    ['lat2', 'standard_parallel_2', d2r],
-    ['alpha', 'azimuth', d2r],
-    ['srsCode', 'name']
-  ];
-  list.forEach(renamer);
-  if (!wkt.long0 && wkt.longc && (wkt.projName === 'Albers_Conic_Equal_Area' || wkt.projName === "Lambert_Azimuthal_Equal_Area")) {
-    wkt.long0 = wkt.longc;
-  }
-  if (!wkt.lat_ts && wkt.lat1 && (wkt.projName === 'Stereographic_South_Pole' || wkt.projName === 'Polar Stereographic (variant B)')) {
-    wkt.lat0 = d2r(wkt.lat1 > 0 ? 90 : -90);
-    wkt.lat_ts = wkt.lat1;
-  }
-}
-module.exports = function(wkt, self) {
-  var lisp = JSON.parse(("," + wkt).replace(/\s*\,\s*([A-Z_0-9]+?)(\[)/g, ',["$1",').slice(1).replace(/\s*\,\s*([A-Z_0-9]+?)\]/g, ',"$1"]').replace(/,\["VERTCS".+/,''));
-  var type = lisp.shift();
-  var name = lisp.shift();
-  lisp.unshift(['name', name]);
-  lisp.unshift(['type', type]);
-  lisp.unshift('output');
-  var obj = {};
-  sExpr(lisp, obj);
-  cleanWKT(obj.output);
-  return extend(self, obj.output);
-};
-
-},{"./extend":34}],67:[function(_dereq_,module,exports){
-
-
-
-/**
- * UTM zones are grouped, and assigned to one of a group of 6
- * sets.
- *
- * {int} @private
- */
-var NUM_100K_SETS = 6;
-
-/**
- * The column letters (for easting) of the lower left value, per
- * set.
- *
- * {string} @private
- */
-var SET_ORIGIN_COLUMN_LETTERS = 'AJSAJS';
-
-/**
- * The row letters (for northing) of the lower left value, per
- * set.
- *
- * {string} @private
- */
-var SET_ORIGIN_ROW_LETTERS = 'AFAFAF';
-
-var A = 65; // A
-var I = 73; // I
-var O = 79; // O
-var V = 86; // V
-var Z = 90; // Z
-
-/**
- * Conversion of lat/lon to MGRS.
- *
- * @param {object} ll Object literal with lat and lon properties on a
- *     WGS84 ellipsoid.
- * @param {int} accuracy Accuracy in digits (5 for 1 m, 4 for 10 m, 3 for
- *      100 m, 2 for 1000 m or 1 for 10000 m). Optional, default is 5.
- * @return {string} the MGRS string for the given location and accuracy.
- */
-exports.forward = function(ll, accuracy) {
-  accuracy = accuracy || 5; // default accuracy 1m
-  return encode(LLtoUTM({
-    lat: ll[1],
-    lon: ll[0]
-  }), accuracy);
-};
-
-/**
- * Conversion of MGRS to lat/lon.
- *
- * @param {string} mgrs MGRS string.
- * @return {array} An array with left (longitude), bottom (latitude), right
- *     (longitude) and top (latitude) values in WGS84, representing the
- *     bounding box for the provided MGRS reference.
- */
-exports.inverse = function(mgrs) {
-  var bbox = UTMtoLL(decode(mgrs.toUpperCase()));
-  if (bbox.lat && bbox.lon) {
-    return [bbox.lon, bbox.lat, bbox.lon, bbox.lat];
-  }
-  return [bbox.left, bbox.bottom, bbox.right, bbox.top];
-};
-
-exports.toPoint = function(mgrs) {
-  var bbox = UTMtoLL(decode(mgrs.toUpperCase()));
-  if (bbox.lat && bbox.lon) {
-    return [bbox.lon, bbox.lat];
-  }
-  return [(bbox.left + bbox.right) / 2, (bbox.top + bbox.bottom) / 2];
-};
-/**
- * Conversion from degrees to radians.
- *
- * @private
- * @param {number} deg the angle in degrees.
- * @return {number} the angle in radians.
- */
-function degToRad(deg) {
-  return (deg * (Math.PI / 180.0));
-}
-
-/**
- * Conversion from radians to degrees.
- *
- * @private
- * @param {number} rad the angle in radians.
- * @return {number} the angle in degrees.
- */
-function radToDeg(rad) {
-  return (180.0 * (rad / Math.PI));
-}
-
-/**
- * Converts a set of Longitude and Latitude co-ordinates to UTM
- * using the WGS84 ellipsoid.
- *
- * @private
- * @param {object} ll Object literal with lat and lon properties
- *     representing the WGS84 coordinate to be converted.
- * @return {object} Object literal containing the UTM value with easting,
- *     northing, zoneNumber and zoneLetter properties, and an optional
- *     accuracy property in digits. Returns null if the conversion failed.
- */
-function LLtoUTM(ll) {
-  var Lat = ll.lat;
-  var Long = ll.lon;
-  var a = 6378137.0; //ellip.radius;
-  var eccSquared = 0.00669438; //ellip.eccsq;
-  var k0 = 0.9996;
-  var LongOrigin;
-  var eccPrimeSquared;
-  var N, T, C, A, M;
-  var LatRad = degToRad(Lat);
-  var LongRad = degToRad(Long);
-  var LongOriginRad;
-  var ZoneNumber;
-  // (int)
-  ZoneNumber = Math.floor((Long + 180) / 6) + 1;
-
-  //Make sure the longitude 180.00 is in Zone 60
-  if (Long === 180) {
-    ZoneNumber = 60;
-  }
-
-  // Special zone for Norway
-  if (Lat >= 56.0 && Lat < 64.0 && Long >= 3.0 && Long < 12.0) {
-    ZoneNumber = 32;
-  }
-
-  // Special zones for Svalbard
-  if (Lat >= 72.0 && Lat < 84.0) {
-    if (Long >= 0.0 && Long < 9.0) {
-      ZoneNumber = 31;
-    }
-    else if (Long >= 9.0 && Long < 21.0) {
-      ZoneNumber = 33;
-    }
-    else if (Long >= 21.0 && Long < 33.0) {
-      ZoneNumber = 35;
-    }
-    else if (Long >= 33.0 && Long < 42.0) {
-      ZoneNumber = 37;
-    }
-  }
-
-  LongOrigin = (ZoneNumber - 1) * 6 - 180 + 3; //+3 puts origin
-  // in middle of
-  // zone
-  LongOriginRad = degToRad(LongOrigin);
-
-  eccPrimeSquared = (eccSquared) / (1 - eccSquared);
-
-  N = a / Math.sqrt(1 - eccSquared * Math.sin(LatRad) * Math.sin(LatRad));
-  T = Math.tan(LatRad) * Math.tan(LatRad);
-  C = eccPrimeSquared * Math.cos(LatRad) * Math.cos(LatRad);
-  A = Math.cos(LatRad) * (LongRad - LongOriginRad);
-
-  M = a * ((1 - eccSquared / 4 - 3 * eccSquared * eccSquared / 64 - 5 * eccSquared * eccSquared * eccSquared / 256) * LatRad - (3 * eccSquared / 8 + 3 * eccSquared * eccSquared / 32 + 45 * eccSquared * eccSquared * eccSquared / 1024) * Math.sin(2 * LatRad) + (15 * eccSquared * eccSquared / 256 + 45 * eccSquared * eccSquared * eccSquared / 1024) * Math.sin(4 * LatRad) - (35 * eccSquared * eccSquared * eccSquared / 3072) * Math.sin(6 * LatRad));
-
-  var UTMEasting = (k0 * N * (A + (1 - T + C) * A * A * A / 6.0 + (5 - 18 * T + T * T + 72 * C - 58 * eccPrimeSquared) * A * A * A * A * A / 120.0) + 500000.0);
-
-  var UTMNorthing = (k0 * (M + N * Math.tan(LatRad) * (A * A / 2 + (5 - T + 9 * C + 4 * C * C) * A * A * A * A / 24.0 + (61 - 58 * T + T * T + 600 * C - 330 * eccPrimeSquared) * A * A * A * A * A * A / 720.0)));
-  if (Lat < 0.0) {
-    UTMNorthing += 10000000.0; //10000000 meter offset for
-    // southern hemisphere
-  }
-
-  return {
-    northing: Math.round(UTMNorthing),
-    easting: Math.round(UTMEasting),
-    zoneNumber: ZoneNumber,
-    zoneLetter: getLetterDesignator(Lat)
-  };
-}
-
-/**
- * Converts UTM coords to lat/long, using the WGS84 ellipsoid. This is a convenience
- * class where the Zone can be specified as a single string eg."60N" which
- * is then broken down into the ZoneNumber and ZoneLetter.
- *
- * @private
- * @param {object} utm An object literal with northing, easting, zoneNumber
- *     and zoneLetter properties. If an optional accuracy property is
- *     provided (in meters), a bounding box will be returned instead of
- *     latitude and longitude.
- * @return {object} An object literal containing either lat and lon values
- *     (if no accuracy was provided), or top, right, bottom and left values
- *     for the bounding box calculated according to the provided accuracy.
- *     Returns null if the conversion failed.
- */
-function UTMtoLL(utm) {
-
-  var UTMNorthing = utm.northing;
-  var UTMEasting = utm.easting;
-  var zoneLetter = utm.zoneLetter;
-  var zoneNumber = utm.zoneNumber;
-  // check the ZoneNummber is valid
-  if (zoneNumber < 0 || zoneNumber > 60) {
-    return null;
-  }
-
-  var k0 = 0.9996;
-  var a = 6378137.0; //ellip.radius;
-  var eccSquared = 0.00669438; //ellip.eccsq;
-  var eccPrimeSquared;
-  var e1 = (1 - Math.sqrt(1 - eccSquared)) / (1 + Math.sqrt(1 - eccSquared));
-  var N1, T1, C1, R1, D, M;
-  var LongOrigin;
-  var mu, phi1Rad;
-
-  // remove 500,000 meter offset for longitude
-  var x = UTMEasting - 500000.0;
-  var y = UTMNorthing;
-
-  // We must know somehow if we are in the Northern or Southern
-  // hemisphere, this is the only time we use the letter So even
-  // if the Zone letter isn't exactly correct it should indicate
-  // the hemisphere correctly
-  if (zoneLetter < 'N') {
-    y -= 10000000.0; // remove 10,000,000 meter offset used
-    // for southern hemisphere
-  }
-
-  // There are 60 zones with zone 1 being at West -180 to -174
-  LongOrigin = (zoneNumber - 1) * 6 - 180 + 3; // +3 puts origin
-  // in middle of
-  // zone
-
-  eccPrimeSquared = (eccSquared) / (1 - eccSquared);
-
-  M = y / k0;
-  mu = M / (a * (1 - eccSquared / 4 - 3 * eccSquared * eccSquared / 64 - 5 * eccSquared * eccSquared * eccSquared / 256));
-
-  phi1Rad = mu + (3 * e1 / 2 - 27 * e1 * e1 * e1 / 32) * Math.sin(2 * mu) + (21 * e1 * e1 / 16 - 55 * e1 * e1 * e1 * e1 / 32) * Math.sin(4 * mu) + (151 * e1 * e1 * e1 / 96) * Math.sin(6 * mu);
-  // double phi1 = ProjMath.radToDeg(phi1Rad);
-
-  N1 = a / Math.sqrt(1 - eccSquared * Math.sin(phi1Rad) * Math.sin(phi1Rad));
-  T1 = Math.tan(phi1Rad) * Math.tan(phi1Rad);
-  C1 = eccPrimeSquared * Math.cos(phi1Rad) * Math.cos(phi1Rad);
-  R1 = a * (1 - eccSquared) / Math.pow(1 - eccSquared * Math.sin(phi1Rad) * Math.sin(phi1Rad), 1.5);
-  D = x / (N1 * k0);
-
-  var lat = phi1Rad - (N1 * Math.tan(phi1Rad) / R1) * (D * D / 2 - (5 + 3 * T1 + 10 * C1 - 4 * C1 * C1 - 9 * eccPrimeSquared) * D * D * D * D / 24 + (61 + 90 * T1 + 298 * C1 + 45 * T1 * T1 - 252 * eccPrimeSquared - 3 * C1 * C1) * D * D * D * D * D * D / 720);
-  lat = radToDeg(lat);
-
-  var lon = (D - (1 + 2 * T1 + C1) * D * D * D / 6 + (5 - 2 * C1 + 28 * T1 - 3 * C1 * C1 + 8 * eccPrimeSquared + 24 * T1 * T1) * D * D * D * D * D / 120) / Math.cos(phi1Rad);
-  lon = LongOrigin + radToDeg(lon);
-
-  var result;
-  if (utm.accuracy) {
-    var topRight = UTMtoLL({
-      northing: utm.northing + utm.accuracy,
-      easting: utm.easting + utm.accuracy,
-      zoneLetter: utm.zoneLetter,
-      zoneNumber: utm.zoneNumber
-    });
-    result = {
-      top: topRight.lat,
-      right: topRight.lon,
-      bottom: lat,
-      left: lon
-    };
-  }
-  else {
-    result = {
-      lat: lat,
-      lon: lon
-    };
-  }
-  return result;
-}
-
-/**
- * Calculates the MGRS letter designator for the given latitude.
- *
- * @private
- * @param {number} lat The latitude in WGS84 to get the letter designator
- *     for.
- * @return {char} The letter designator.
- */
-function getLetterDesignator(lat) {
-  //This is here as an error flag to show that the Latitude is
-  //outside MGRS limits
-  var LetterDesignator = 'Z';
-
-  if ((84 >= lat) && (lat >= 72)) {
-    LetterDesignator = 'X';
-  }
-  else if ((72 > lat) && (lat >= 64)) {
-    LetterDesignator = 'W';
-  }
-  else if ((64 > lat) && (lat >= 56)) {
-    LetterDesignator = 'V';
-  }
-  else if ((56 > lat) && (lat >= 48)) {
-    LetterDesignator = 'U';
-  }
-  else if ((48 > lat) && (lat >= 40)) {
-    LetterDesignator = 'T';
-  }
-  else if ((40 > lat) && (lat >= 32)) {
-    LetterDesignator = 'S';
-  }
-  else if ((32 > lat) && (lat >= 24)) {
-    LetterDesignator = 'R';
-  }
-  else if ((24 > lat) && (lat >= 16)) {
-    LetterDesignator = 'Q';
-  }
-  else if ((16 > lat) && (lat >= 8)) {
-    LetterDesignator = 'P';
-  }
-  else if ((8 > lat) && (lat >= 0)) {
-    LetterDesignator = 'N';
-  }
-  else if ((0 > lat) && (lat >= -8)) {
-    LetterDesignator = 'M';
-  }
-  else if ((-8 > lat) && (lat >= -16)) {
-    LetterDesignator = 'L';
-  }
-  else if ((-16 > lat) && (lat >= -24)) {
-    LetterDesignator = 'K';
-  }
-  else if ((-24 > lat) && (lat >= -32)) {
-    LetterDesignator = 'J';
-  }
-  else if ((-32 > lat) && (lat >= -40)) {
-    LetterDesignator = 'H';
-  }
-  else if ((-40 > lat) && (lat >= -48)) {
-    LetterDesignator = 'G';
-  }
-  else if ((-48 > lat) && (lat >= -56)) {
-    LetterDesignator = 'F';
-  }
-  else if ((-56 > lat) && (lat >= -64)) {
-    LetterDesignator = 'E';
-  }
-  else if ((-64 > lat) && (lat >= -72)) {
-    LetterDesignator = 'D';
-  }
-  else if ((-72 > lat) && (lat >= -80)) {
-    LetterDesignator = 'C';
-  }
-  return LetterDesignator;
-}
-
-/**
- * Encodes a UTM location as MGRS string.
- *
- * @private
- * @param {object} utm An object literal with easting, northing,
- *     zoneLetter, zoneNumber
- * @param {number} accuracy Accuracy in digits (1-5).
- * @return {string} MGRS string for the given UTM location.
- */
-function encode(utm, accuracy) {
-  // prepend with leading zeroes
-  var seasting = "00000" + utm.easting,
-    snorthing = "00000" + utm.northing;
-
-  return utm.zoneNumber + utm.zoneLetter + get100kID(utm.easting, utm.northing, utm.zoneNumber) + seasting.substr(seasting.length - 5, accuracy) + snorthing.substr(snorthing.length - 5, accuracy);
-}
-
-/**
- * Get the two letter 100k designator for a given UTM easting,
- * northing and zone number value.
- *
- * @private
- * @param {number} easting
- * @param {number} northing
- * @param {number} zoneNumber
- * @return the two letter 100k designator for the given UTM location.
- */
-function get100kID(easting, northing, zoneNumber) {
-  var setParm = get100kSetForZone(zoneNumber);
-  var setColumn = Math.floor(easting / 100000);
-  var setRow = Math.floor(northing / 100000) % 20;
-  return getLetter100kID(setColumn, setRow, setParm);
-}
-
-/**
- * Given a UTM zone number, figure out the MGRS 100K set it is in.
- *
- * @private
- * @param {number} i An UTM zone number.
- * @return {number} the 100k set the UTM zone is in.
- */
-function get100kSetForZone(i) {
-  var setParm = i % NUM_100K_SETS;
-  if (setParm === 0) {
-    setParm = NUM_100K_SETS;
-  }
-
-  return setParm;
-}
-
-/**
- * Get the two-letter MGRS 100k designator given information
- * translated from the UTM northing, easting and zone number.
- *
- * @private
- * @param {number} column the column index as it relates to the MGRS
- *        100k set spreadsheet, created from the UTM easting.
- *        Values are 1-8.
- * @param {number} row the row index as it relates to the MGRS 100k set
- *        spreadsheet, created from the UTM northing value. Values
- *        are from 0-19.
- * @param {number} parm the set block, as it relates to the MGRS 100k set
- *        spreadsheet, created from the UTM zone. Values are from
- *        1-60.
- * @return two letter MGRS 100k code.
- */
-function getLetter100kID(column, row, parm) {
-  // colOrigin and rowOrigin are the letters at the origin of the set
-  var index = parm - 1;
-  var colOrigin = SET_ORIGIN_COLUMN_LETTERS.charCodeAt(index);
-  var rowOrigin = SET_ORIGIN_ROW_LETTERS.charCodeAt(index);
-
-  // colInt and rowInt are the letters to build to return
-  var colInt = colOrigin + column - 1;
-  var rowInt = rowOrigin + row;
-  var rollover = false;
-
-  if (colInt > Z) {
-    colInt = colInt - Z + A - 1;
-    rollover = true;
-  }
-
-  if (colInt === I || (colOrigin < I && colInt > I) || ((colInt > I || colOrigin < I) && rollover)) {
-    colInt++;
-  }
-
-  if (colInt === O || (colOrigin < O && colInt > O) || ((colInt > O || colOrigin < O) && rollover)) {
-    colInt++;
-
-    if (colInt === I) {
-      colInt++;
-    }
-  }
-
-  if (colInt > Z) {
-    colInt = colInt - Z + A - 1;
-  }
-
-  if (rowInt > V) {
-    rowInt = rowInt - V + A - 1;
-    rollover = true;
-  }
-  else {
-    rollover = false;
-  }
-
-  if (((rowInt === I) || ((rowOrigin < I) && (rowInt > I))) || (((rowInt > I) || (rowOrigin < I)) && rollover)) {
-    rowInt++;
-  }
-
-  if (((rowInt === O) || ((rowOrigin < O) && (rowInt > O))) || (((rowInt > O) || (rowOrigin < O)) && rollover)) {
-    rowInt++;
-
-    if (rowInt === I) {
-      rowInt++;
-    }
-  }
-
-  if (rowInt > V) {
-    rowInt = rowInt - V + A - 1;
-  }
-
-  var twoLetter = String.fromCharCode(colInt) + String.fromCharCode(rowInt);
-  return twoLetter;
-}
-
-/**
- * Decode the UTM parameters from a MGRS string.
- *
- * @private
- * @param {string} mgrsString an UPPERCASE coordinate string is expected.
- * @return {object} An object literal with easting, northing, zoneLetter,
- *     zoneNumber and accuracy (in meters) properties.
- */
-function decode(mgrsString) {
-
-  if (mgrsString && mgrsString.length === 0) {
-    throw ("MGRSPoint coverting from nothing");
-  }
-
-  var length = mgrsString.length;
-
-  var hunK = null;
-  var sb = "";
-  var testChar;
-  var i = 0;
-
-  // get Zone number
-  while (!(/[A-Z]/).test(testChar = mgrsString.charAt(i))) {
-    if (i >= 2) {
-      throw ("MGRSPoint bad conversion from: " + mgrsString);
-    }
-    sb += testChar;
-    i++;
-  }
-
-  var zoneNumber = parseInt(sb, 10);
-
-  if (i === 0 || i + 3 > length) {
-    // A good MGRS string has to be 4-5 digits long,
-    // ##AAA/#AAA at least.
-    throw ("MGRSPoint bad conversion from: " + mgrsString);
-  }
-
-  var zoneLetter = mgrsString.charAt(i++);
-
-  // Should we check the zone letter here? Why not.
-  if (zoneLetter <= 'A' || zoneLetter === 'B' || zoneLetter === 'Y' || zoneLetter >= 'Z' || zoneLetter === 'I' || zoneLetter === 'O') {
-    throw ("MGRSPoint zone letter " + zoneLetter + " not handled: " + mgrsString);
-  }
-
-  hunK = mgrsString.substring(i, i += 2);
-
-  var set = get100kSetForZone(zoneNumber);
-
-  var east100k = getEastingFromChar(hunK.charAt(0), set);
-  var north100k = getNorthingFromChar(hunK.charAt(1), set);
-
-  // We have a bug where the northing may be 2000000 too low.
-  // How
-  // do we know when to roll over?
-
-  while (north100k < getMinNorthing(zoneLetter)) {
-    north100k += 2000000;
-  }
-
-  // calculate the char index for easting/northing separator
-  var remainder = length - i;
-
-  if (remainder % 2 !== 0) {
-    throw ("MGRSPoint has to have an even number \nof digits after the zone letter and two 100km letters - front \nhalf for easting meters, second half for \nnorthing meters" + mgrsString);
-  }
-
-  var sep = remainder / 2;
-
-  var sepEasting = 0.0;
-  var sepNorthing = 0.0;
-  var accuracyBonus, sepEastingString, sepNorthingString, easting, northing;
-  if (sep > 0) {
-    accuracyBonus = 100000.0 / Math.pow(10, sep);
-    sepEastingString = mgrsString.substring(i, i + sep);
-    sepEasting = parseFloat(sepEastingString) * accuracyBonus;
-    sepNorthingString = mgrsString.substring(i + sep);
-    sepNorthing = parseFloat(sepNorthingString) * accuracyBonus;
-  }
-
-  easting = sepEasting + east100k;
-  northing = sepNorthing + north100k;
-
-  return {
-    easting: easting,
-    northing: northing,
-    zoneLetter: zoneLetter,
-    zoneNumber: zoneNumber,
-    accuracy: accuracyBonus
-  };
-}
-
-/**
- * Given the first letter from a two-letter MGRS 100k zone, and given the
- * MGRS table set for the zone number, figure out the easting value that
- * should be added to the other, secondary easting value.
- *
- * @private
- * @param {char} e The first letter from a two-letter MGRS 100´k zone.
- * @param {number} set The MGRS table set for the zone number.
- * @return {number} The easting value for the given letter and set.
- */
-function getEastingFromChar(e, set) {
-  // colOrigin is the letter at the origin of the set for the
-  // column
-  var curCol = SET_ORIGIN_COLUMN_LETTERS.charCodeAt(set - 1);
-  var eastingValue = 100000.0;
-  var rewindMarker = false;
-
-  while (curCol !== e.charCodeAt(0)) {
-    curCol++;
-    if (curCol === I) {
-      curCol++;
-    }
-    if (curCol === O) {
-      curCol++;
-    }
-    if (curCol > Z) {
-      if (rewindMarker) {
-        throw ("Bad character: " + e);
-      }
-      curCol = A;
-      rewindMarker = true;
-    }
-    eastingValue += 100000.0;
-  }
-
-  return eastingValue;
-}
-
-/**
- * Given the second letter from a two-letter MGRS 100k zone, and given the
- * MGRS table set for the zone number, figure out the northing value that
- * should be added to the other, secondary northing value. You have to
- * remember that Northings are determined from the equator, and the vertical
- * cycle of letters mean a 2000000 additional northing meters. This happens
- * approx. every 18 degrees of latitude. This method does *NOT* count any
- * additional northings. You have to figure out how many 2000000 meters need
- * to be added for the zone letter of the MGRS coordinate.
- *
- * @private
- * @param {char} n Second letter of the MGRS 100k zone
- * @param {number} set The MGRS table set number, which is dependent on the
- *     UTM zone number.
- * @return {number} The northing value for the given letter and set.
- */
-function getNorthingFromChar(n, set) {
-
-  if (n > 'V') {
-    throw ("MGRSPoint given invalid Northing " + n);
-  }
-
-  // rowOrigin is the letter at the origin of the set for the
-  // column
-  var curRow = SET_ORIGIN_ROW_LETTERS.charCodeAt(set - 1);
-  var northingValue = 0.0;
-  var rewindMarker = false;
-
-  while (curRow !== n.charCodeAt(0)) {
-    curRow++;
-    if (curRow === I) {
-      curRow++;
-    }
-    if (curRow === O) {
-      curRow++;
-    }
-    // fixing a bug making whole application hang in this loop
-    // when 'n' is a wrong character
-    if (curRow > V) {
-      if (rewindMarker) { // making sure that this loop ends
-        throw ("Bad character: " + n);
-      }
-      curRow = A;
-      rewindMarker = true;
-    }
-    northingValue += 100000.0;
-  }
-
-  return northingValue;
-}
-
-/**
- * The function getMinNorthing returns the minimum northing value of a MGRS
- * zone.
- *
- * Ported from Geotrans' c Lattitude_Band_Value structure table.
- *
- * @private
- * @param {char} zoneLetter The MGRS zone to get the min northing for.
- * @return {number}
- */
-function getMinNorthing(zoneLetter) {
-  var northing;
-  switch (zoneLetter) {
-  case 'C':
-    northing = 1100000.0;
-    break;
-  case 'D':
-    northing = 2000000.0;
-    break;
-  case 'E':
-    northing = 2800000.0;
-    break;
-  case 'F':
-    northing = 3700000.0;
-    break;
-  case 'G':
-    northing = 4600000.0;
-    break;
-  case 'H':
-    northing = 5500000.0;
-    break;
-  case 'J':
-    northing = 6400000.0;
-    break;
-  case 'K':
-    northing = 7300000.0;
-    break;
-  case 'L':
-    northing = 8200000.0;
-    break;
-  case 'M':
-    northing = 9100000.0;
-    break;
-  case 'N':
-    northing = 0.0;
-    break;
-  case 'P':
-    northing = 800000.0;
-    break;
-  case 'Q':
-    northing = 1700000.0;
-    break;
-  case 'R':
-    northing = 2600000.0;
-    break;
-  case 'S':
-    northing = 3500000.0;
-    break;
-  case 'T':
-    northing = 4400000.0;
-    break;
-  case 'U':
-    northing = 5300000.0;
-    break;
-  case 'V':
-    northing = 6200000.0;
-    break;
-  case 'W':
-    northing = 7000000.0;
-    break;
-  case 'X':
-    northing = 7900000.0;
-    break;
-  default:
-    northing = -1.0;
-  }
-  if (northing >= 0.0) {
-    return northing;
-  }
-  else {
-    throw ("Invalid zone letter: " + zoneLetter);
-  }
-
-}
-
-},{}],68:[function(_dereq_,module,exports){
-module.exports={
-  "name": "proj4",
-  "version": "2.3.14",
-  "description": "Proj4js is a JavaScript library to transform point coordinates from one coordinate system to another, including datum transformations.",
-  "main": "lib/index.js",
-  "directories": {
-    "test": "test",
-    "doc": "docs"
-  },
-  "scripts": {
-    "test": "./node_modules/istanbul/lib/cli.js test ./node_modules/mocha/bin/_mocha test/test.js"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/proj4js/proj4js.git"
-  },
-  "author": "",
-  "license": "MIT",
-  "jam": {
-    "main": "dist/proj4.js",
-    "include": [
-      "dist/proj4.js",
-      "README.md",
-      "AUTHORS",
-      "LICENSE.md"
-    ]
-  },
-  "devDependencies": {
-    "grunt-cli": "~0.1.13",
-    "grunt": "~0.4.2",
-    "grunt-contrib-connect": "~0.6.0",
-    "grunt-contrib-jshint": "~0.8.0",
-    "chai": "~1.8.1",
-    "mocha": "~1.17.1",
-    "grunt-mocha-phantomjs": "~0.4.0",
-    "browserify": "~12.0.1",
-    "grunt-browserify": "~4.0.1",
-    "grunt-contrib-uglify": "~0.11.1",
-    "curl": "git://github.com/cujojs/curl.git",
-    "istanbul": "~0.2.4",
-    "tin": "~0.4.0"
-  },
-  "dependencies": {
-    "mgrs": "~0.0.2"
-  }
-}
-},{}],"./includedProjections":[function(_dereq_,module,exports){
-module.exports=_dereq_('hTEDpn');
-},{}],"hTEDpn":[function(_dereq_,module,exports){
-var projs = [
- _dereq_('./lib/projections/tmerc'),
-	_dereq_('./lib/projections/utm'),
-	_dereq_('./lib/projections/sterea'),
-	_dereq_('./lib/projections/stere'),
-	_dereq_('./lib/projections/somerc'),
-	_dereq_('./lib/projections/omerc'),
-	_dereq_('./lib/projections/lcc'),
-	_dereq_('./lib/projections/krovak'),
-	_dereq_('./lib/projections/cass'),
-	_dereq_('./lib/projections/laea'),
-	_dereq_('./lib/projections/aea'),
-	_dereq_('./lib/projections/gnom'),
-	_dereq_('./lib/projections/cea'),
-	_dereq_('./lib/projections/eqc'),
-	_dereq_('./lib/projections/poly'),
-	_dereq_('./lib/projections/nzmg'),
-	_dereq_('./lib/projections/mill'),
-	_dereq_('./lib/projections/sinu'),
-	_dereq_('./lib/projections/moll'),
-	_dereq_('./lib/projections/eqdc'),
-	_dereq_('./lib/projections/vandg'),
-	_dereq_('./lib/projections/aeqd')
-];
-module.exports = function(proj4){
- projs.forEach(function(proj){
-   proj4.Proj.projections.add(proj);
- });
-}
-},{"./lib/projections/aea":40,"./lib/projections/aeqd":41,"./lib/projections/cass":42,"./lib/projections/cea":43,"./lib/projections/eqc":44,"./lib/projections/eqdc":45,"./lib/projections/gnom":47,"./lib/projections/krovak":48,"./lib/projections/laea":49,"./lib/projections/lcc":50,"./lib/projections/mill":53,"./lib/projections/moll":54,"./lib/projections/nzmg":55,"./lib/projections/omerc":56,"./lib/projections/poly":57,"./lib/projections/sinu":58,"./lib/projections/somerc":59,"./lib/projections/stere":60,"./lib/projections/sterea":61,"./lib/projections/tmerc":62,"./lib/projections/utm":63,"./lib/projections/vandg":64}]},{},[36])
-(36)
-});
\ No newline at end of file
diff --git a/xcxMapSecurityPosition/lid/proj4leaflet.js b/xcxMapSecurityPosition/lid/proj4leaflet.js
deleted file mode 100644
index cb42921..0000000
--- a/xcxMapSecurityPosition/lid/proj4leaflet.js
+++ /dev/null
@@ -1,263 +0,0 @@
-(function (factory) {
-	var L, proj4;
-	if (typeof define === 'function' && define.amd) {
-		// AMD
-		define(['leaflet', 'proj4'], factory);
-	} else if (typeof module === 'object' && typeof module.exports === "object") {
-		// Node/CommonJS
-		L = require('leaflet');
-		proj4 = require('proj4');
-		module.exports = factory(L, proj4);
-	} else {
-		// Browser globals
-		if (typeof window.L === 'undefined' || typeof window.proj4 === 'undefined')
-			throw 'Leaflet and proj4 must be loaded first';
-		factory(window.L, window.proj4);
-	}
-}(function (L, proj4) {
-
-	L.Proj = {};
-
-	L.Proj._isProj4Obj = function(a) {
-		return (typeof a.inverse !== 'undefined' &&
-			typeof a.forward !== 'undefined');
-	};
-
-	L.Proj.Projection = L.Class.extend({
-		initialize: function(code, def, bounds) {
-			var isP4 = L.Proj._isProj4Obj(code);
-			this._proj = isP4 ? code : this._projFromCodeDef(code, def);
-			this.bounds = isP4 ? def : bounds;
-		},
-
-		project: function (latlng) {
-			var point = this._proj.forward([latlng.lng, latlng.lat]);
-			return new L.Point(point[0], point[1]);
-		},
-
-		unproject: function (point, unbounded) {
-			var point2 = this._proj.inverse([point.x, point.y]);
-			return new L.LatLng(point2[1], point2[0], unbounded);
-		},
-
-		_projFromCodeDef: function(code, def) {
-			if (def) {
-				proj4.defs(code, def);
-			} else if (proj4.defs[code] === undefined) {
-				var urn = code.split(':');
-				if (urn.length > 3) {
-					code = urn[urn.length - 3] + ':' + urn[urn.length - 1];
-				}
-				if (proj4.defs[code] === undefined) {
-					throw 'No projection definition for code ' + code;
-				}
-			}
-
-			return proj4(code);
-		}
-	});
-
-	L.Proj.CRS = L.Class.extend({
-		includes: L.CRS,
-
-		options: {
-			transformation: new L.Transformation(1, 0, -1, 0)
-		},
-
-		initialize: function(a, b, c) {
-			var code,
-			    proj,
-			    def,
-			    options;
-
-			if (L.Proj._isProj4Obj(a)) {
-				proj = a;
-				code = proj.srsCode;
-				options = b || {};
-
-				this.projection = new L.Proj.Projection(proj, options.bounds);
-			} else {
-				code = a;
-				def = b;
-				options = c || {};
-				this.projection = new L.Proj.Projection(code, def, options.bounds);
-			}
-
-			L.Util.setOptions(this, options);
-			this.code = code;
-			this.transformation = this.options.transformation;
-
-			if (this.options.origin) {
-				this.transformation =
-					new L.Transformation(1, -this.options.origin[0],
-						-1, this.options.origin[1]);
-			}
-
-			if (this.options.scales) {
-				this._scales = this.options.scales;
-			} else if (this.options.resolutions) {
-				this._scales = [];
-				for (var i = this.options.resolutions.length - 1; i >= 0; i--) {
-					if (this.options.resolutions[i]) {
-						this._scales[i] = 1 / this.options.resolutions[i];
-					}
-				}
-			}
-
-			this.infinite = !this.options.bounds;
-
-		},
-
-		scale: function(zoom) {
-			var iZoom = Math.floor(zoom),
-				baseScale,
-				nextScale,
-				scaleDiff,
-				zDiff;
-			if (zoom === iZoom) {
-				return this._scales[zoom];
-			} else {
-				// Non-integer zoom, interpolate
-				baseScale = this._scales[iZoom];
-				nextScale = this._scales[iZoom + 1];
-				scaleDiff = nextScale - baseScale;
-				zDiff = (zoom - iZoom);
-				return baseScale + scaleDiff * zDiff;
-			}
-		},
-
-		zoom: function(scale) {
-			// Find closest number in this._scales, down
-			var downScale = this._closestElement(this._scales, scale),
-				downZoom = this._scales.indexOf(downScale),
-				nextScale,
-				nextZoom,
-				scaleDiff;
-			// Check if scale is downScale => return array index
-			if (scale === downScale) {
-				return downZoom;
-			}
-			// Interpolate
-			nextZoom = downZoom + 1;
-			nextScale = this._scales[nextZoom];
-			if (nextScale === undefined) {
-				return Infinity;
-			}
-			scaleDiff = nextScale - downScale;
-			return (scale - downScale) / scaleDiff + downZoom;
-		},
-
-		distance: L.CRS.Earth.distance,
-
-		R: L.CRS.Earth.R,
-
-		/* Get the closest lowest element in an array */
-		_closestElement: function(array, element) {
-			var low;
-			for (var i = array.length; i--;) {
-				if (array[i] <= element && (low === undefined || low < array[i])) {
-					low = array[i];
-				}
-			}
-			return low;
-		}
-	});
-
-	L.Proj.GeoJSON = L.GeoJSON.extend({
-		initialize: function(geojson, options) {
-			this._callLevel = 0;
-			L.GeoJSON.prototype.initialize.call(this, geojson, options);
-		},
-
-		addData: function(geojson) {
-			var crs;
-
-			if (geojson) {
-				if (geojson.crs && geojson.crs.type === 'name') {
-					crs = new L.Proj.CRS(geojson.crs.properties.name);
-				} else if (geojson.crs && geojson.crs.type) {
-					crs = new L.Proj.CRS(geojson.crs.type + ':' + geojson.crs.properties.code);
-				}
-
-				if (crs !== undefined) {
-					this.options.coordsToLatLng = function(coords) {
-						var point = L.point(coords[0], coords[1]);
-						return crs.projection.unproject(point);
-					};
-				}
-			}
-
-			// Base class' addData might call us recursively, but
-			// CRS shouldn't be cleared in that case, since CRS applies
-			// to the whole GeoJSON, inluding sub-features.
-			this._callLevel++;
-			try {
-				L.GeoJSON.prototype.addData.call(this, geojson);
-			} finally {
-				this._callLevel--;
-				if (this._callLevel === 0) {
-					delete this.options.coordsToLatLng;
-				}
-			}
-		}
-	});
-
-	L.Proj.geoJson = function(geojson, options) {
-		return new L.Proj.GeoJSON(geojson, options);
-	};
-
-	L.Proj.ImageOverlay = L.ImageOverlay.extend({
-		initialize: function (url, bounds, options) {
-			L.ImageOverlay.prototype.initialize.call(this, url, null, options);
-			this._projectedBounds = bounds;
-		},
-
-		// Danger ahead: Overriding internal methods in Leaflet.
-		// Decided to do this rather than making a copy of L.ImageOverlay
-		// and doing very tiny modifications to it.
-		// Future will tell if this was wise or not.
-		_animateZoom: function (event) {
-			var scale = this._map.getZoomScale(event.zoom);
-			var northWest = L.point(this._projectedBounds.min.x, this._projectedBounds.max.y);
-			var offset = this._projectedToNewLayerPoint(northWest, event.zoom, event.center);
-
-			L.DomUtil.setTransform(this._image, offset, scale);
-		},
-
-		_reset: function () {
-			var zoom = this._map.getZoom();
-			var pixelOrigin = this._map.getPixelOrigin();
-			var bounds = L.bounds(
-				this._transform(this._projectedBounds.min, zoom)._subtract(pixelOrigin),
-				this._transform(this._projectedBounds.max, zoom)._subtract(pixelOrigin)
-			);
-			var size = bounds.getSize();
-
-			L.DomUtil.setPosition(this._image, bounds.min);
-			this._image.style.width = size.x + 'px';
-			this._image.style.height = size.y + 'px';
-		},
-
-		_projectedToNewLayerPoint: function (point, zoom, center) {
-			var viewHalf = this._map.getSize()._divideBy(2);
-			var newTopLeft = this._map.project(center, zoom)._subtract(viewHalf)._round();
-			var topLeft = newTopLeft.add(this._map._getMapPanePos());
-
-			return this._transform(point, zoom)._subtract(topLeft);
-		},
-
-		_transform: function (point, zoom) {
-			var crs = this._map.options.crs;
-			var transformation = crs.transformation;
-			var scale = crs.scale(zoom);
-
-			return transformation.transform(point, scale);
-		}
-	});
-
-	L.Proj.imageOverlay = function (url, bounds, options) {
-		return new L.Proj.ImageOverlay(url, bounds, options);
-	};
-
-	return L.Proj;
-}));
diff --git a/xcxMapSecurityPosition/popup/user.html b/xcxMapSecurityPosition/popup/user.html
deleted file mode 100644
index 5e131bc..0000000
--- a/xcxMapSecurityPosition/popup/user.html
+++ /dev/null
@@ -1,37 +0,0 @@
-<!DOCTYPE html>
-<html>
-
-<head>
-    <meta charset="utf-8" />
-    <title>popup</title>
-    <!-- Vue -->
-	<script src="https://cdn.jsdelivr.net/npm/vue@2.6.12"></script>
-</head>
-
-<body>
-    <div id="popup">
-        <!-- 从layui传值给iframe 的占位input -->
-        <input type="text" id="user" ref="user" style="display:none">
-        46476978--
-        -{{ourData.title}}
-    </div>
-    <script>
-        var me = new Vue({
-            el: '#popup',
-            data: {
-                ourData: '',
-                oldtime: '',
-            },
-            mounted() {
-                this.oldtime = setTimeout(() => {//需要同步数据处理,input中value在mounted中没有直接传值
-                    clearTimeout(this.oldtime);
-                    this.ourData = JSON.parse(this.$refs.user.value);//json对象转js对象
-                    console.log(this.ourData,2)
-                }, 100);
-            }
-        })
-
-    </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/xcxMapSecurityPosition/xcxmap.html b/xcxMapSecurityPosition/xcxmap.html
deleted file mode 100644
index b128f1c..0000000
--- a/xcxMapSecurityPosition/xcxmap.html
+++ /dev/null
@@ -1,94 +0,0 @@
-<!DOCTYPE html>
-<html>
-
-	<head>
-		<meta charset="utf-8" />
-		<meta name="viewport" content="width=device-width, initial-scale=1">
-		<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
-		<title>地图</title>
-		<!-- vue -->
-		<script src="https://cdn.jsdelivr.net/npm/vue@2.6.12"></script>
-
-		<!-- leaflet支持 -->
-		<script src="./lid/leaflet.js"></script>
-		<link rel="stylesheet" href="./lid/leaflet.css" />
-
-		<!-- leaflet聚合支持 -->
-		<link rel="stylesheet" href="./lid/MarkerCluster.css" />
-		<link rel="stylesheet" href="./lid/MarkerCluster.Default.css" />
-		<script src="./lid/leaflet.markercluster-src.js"></script>
-
-		<!-- layui支持 -->
-		<!-- <link rel="stylesheet" href="../map/lib/layui/css/layui.css" media="all"> -->
-		<!-- <script src="../map/lib/layui/layui.js" charset="utf-8"></script> -->
-
-		<!-- 百度地图api -->
-		<script type="text/javascript" src="https://mapapi.qq.com/web/mapComponents/geoLocation/v/geolocation.min.js">
-		</script>
-
-		<!-- axios支持 -->
-		<script src="./lid/axios.js"></script>
-
-		<!-- elementui -->
-		<script src="./lid/elementUi.js"></script>
-		<!-- <link rel="stylesheet" href="../map/lib/elementUi.css"> -->
-		<link rel="stylesheet" href="./css/elementUi.css">
-		<!-- <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css"> -->
-
-		<!-- jqurey -->
-		<script src="./lid/jquery.js" charset="utf-8"></script>
-
-		<!-- 微信支持 -->
-		<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.4.0.js"></script>
-		<!-- <script src="./js/wx.js"></script> -->
-
-		<!-- uni 的 SDK -->
-		<script type="text/javascript" src="https://js.cdn.aliyun.dcloud.net.cn/dev/uni-app/uni.webview.1.5.2.js">
-		</script>
-		<!-- 百度地图api -->
-		<script type="text/javascript" src="./js/geolocation.min.js"></script>
-		<!-- omyself支持 -->
-		<link rel="stylesheet" href="./css/body.css" />
-
-		<!-- myDomMove -->
-		<script src="./js/move.js"></script>
-		<!-- sha1加密 -->
-		<!-- <script src="./js/sha1.js"></script> -->
-		<script src="http://pv.sohu.com/cityjson?ie=utf-8"></script>
-	</head>
-
-	<body>
-		<div id="mapVue">
-			
-			<!-- <div class="dingwei" @click="locationMap">
-				<img style="width: 60%" src="./img/dingwei.png" alt="">
-			</div> -->
-			
-			<div id="map">
-			</div>
-			<!-- <div id="salffPopup" v-show="showsalffPopup">
-				<div class="oncessalfe">
-					保安姓名:{{oncesSalfeData.realName}}
-				</div>
-			</div> -->
-			<el-drawer
-			  :title="oncesSalfeData.realName"
-			  :visible.sync="drawer"
-			  :direction="'btt'"
-			  :size="145"
-			  :with-header="false">
-			  <!-- <span>我来啦!</span> -->
-			  <div class="oncessalfe">
-			  	保安姓名:<div class="in-oncessalfe">{{oncesSalfeData.realName}}</div>
-			  </div>
-			  <div class="oncessalfe">
-			  	保安公司:<div class="in-oncessalfe">{{oncesSalfeData.deptName}}</div>
-			  </div>
-			</el-drawer>
-			
-		</div>
-		<!-- vue渲染 -->
-		<script src="./js/vueMain.js"></script>
-	</body>
-
-</html>
diff --git a/xcxMapWzzzz/css/body.css b/xcxMapWzzzz/css/body.css
deleted file mode 100644
index ccc1ccd..0000000
--- a/xcxMapWzzzz/css/body.css
+++ /dev/null
@@ -1,315 +0,0 @@
-page {
-    width: 100%;
-    height: 100%;
-    background-color: rgb(138, 138, 138, 0.1);
-}
-
-body {
-    padding: 0;
-    margin: 0;
-}
-
-html,
-body,
-#mapVue {
-    width: 100%;
-    height: 100%;
-}
-
-#map {
-    width: 100%;
-    height: 100%;
-    z-index: 1;
-}
-
-#mapVue {
-    overflow: hidden;
-    /* border: solid 1px springgreen; */
-}
-
-.dingwei {
-    position: fixed;
-    width: 38px;
-    height: 38px;
-    top: 100px;
-    right: 0;
-    z-index: 100;
-    background-color: #fff;
-    border-radius: 20px;
-    opacity: 0.8;
-    border: 1px solid gray;
-    display: flex;
-    align-items: center;
-    justify-content: center;
-}
-
-#seedata {
-    bottom: 0;
-    width: 100%;
-    height: 50%;
-    z-index: 400;
-    background-color: #fff;
-    display: flex;
-    flex-direction: column;
-    border-radius: 60px 60px 0 0;
-}
-
-.title {
-    width: 100%;
-    height: 70px;
-    border-radius: 30px 30px 0 0;
-    position: absolute;
-    bottom: 0;
-    background-color: #fff;
-    z-index: 999;
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    flex-direction: column;
-}
-
-.device-name {
-    letter-spacing: 2px;
-    font-size: 15px;
-}
-
-.device-number {
-    margin-top: 5px;
-    letter-spacing: 0.5px;
-    color: #808080;
-    font-size: 13px;
-}
-
-.main {
-    width: 100%;
-    height: 100%;
-    margin: 0 auto;
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    flex-direction: column;
-    border-top: 1px solid rgb(138, 138, 138);
-}
-
-.div-alarm-people {
-    width: 96%;
-    height: 25%;
-    margin-left: 2%;
-    /* height: 80px; */
-}
-
-.div-alarm-people .f-m-once {
-    border-bottom: 1px solid rgb(243, 243, 243);
-    align-items: center;
-    width: 100%;
-    height: 50%;
-    display: flex;
-    margin: auto;
-}
-
-.div-alarm-people .f-m-o-t-img {
-    width: 20px;
-    height: 20px;
-    float: left;
-}
-
-.div-alarm-people .f-m-o-title {
-    font-size: 14px;
-    margin-left: 10px;
-    float: left;
-}
-
-.div-alarm-people .f-m-once-phone-number {
-    /* border-bottom: 1px solid rgb(128, 128, 128, 0.1); */
-    align-items: center;
-    width: 100%;
-    height: 50%;
-    display: flex;
-    margin: auto;
-}
-
-.div-alarm-people .f-m-once-alarm-type {
-    /* border-bottom: 1px solid rgb(128, 128, 128, 0.1); */
-    align-items: center;
-    width: 100%;
-    height: 50%;
-    display: flex;
-    margin: auto;
-}
-
-.div-alarm-people .f-m-once-desc {
-    /* border-bottom: 1px solid rgb(128, 128, 128, 0.1); */
-    width: 100%;
-    height: 50% !important;
-    height: 80px;
-    display: flex;
-    align-items: center;
-}
-
-.div-alarm-people .f-m-o-t-img-desc {
-    width: 20px;
-    height: 20px;
-    float: left;
-}
-
-.div-alarm-people .f-m-o-title-desc {
-    display: flex;
-    align-items: center;
-    height: 40px;
-    line-height: 40px;
-    font-size: 14px;
-    margin-left: 10px;
-    float: left;
-}
-
-.div-alarm-people .f-m-o-center {
-    font-size: 14px;
-    position: absolute;
-    left: 135px;
-    color: #808080;
-}
-
-.div-alarm-people .f-m-o-center-desc {
-    width: 200px;
-    word-wrap: break-word;
-    line-height: 1.5;
-    /* height: 60px; */
-    /* background-color: rgb(46, 118, 228); */
-    font-size: 14px;
-    position: absolute;
-    left: 135px;
-    color: #808080;
-}
-
-.interval {
-    width: 100%;
-    height: 2%;
-    background-color: rgb(243, 243, 243);
-}
-
-.but {
-    width: 100%;
-    height: 19%;
-    flex: 1;
-    display: flex;
-    flex-direction: row;
-    align-items: center;
-    justify-content: space-around;
-}
-
-.shipingPopup {
-    position: fixed;
-    top: 0;
-    left: 0;
-    height: 100%;
-    width: 100%;
-    background-color: rgba(0, 0, 0, 0.5);
-    z-index: 200;
-    display: flex;
-    align-items: center;
-    justify-content: center;
-}
-
-.s-p-main {
-    width: 90%;
-    height: 90%;
-    /* background-color: #fff; */
-}
-
-.s-p-gaunbi {
-    position: relative;
-    left: 90%;
-    width: 50px;
-    height: 50px;
-}
-
-
-/* video::-webkit-media-controls-timeline {
-    display: none;
-} */
-
-.butb {
-    width: 200px;
-    height: 40px;
-    /* border: 1px solid rgb(46, 118, 228); */
-    border-radius: 40px;
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    color: #fff;
-    /* background-image: linear-gradient(to bottom, #3CA7F4, #4D7CEE); */
-    background-image: linear-gradient(to bottom, #00BFFF, #4D7CEE);
-}
-
-
-/* .resultFeedback {
-    position: fixed;
-    top: 0;
-    left: 0;
-    height: 100%;
-    width: 100%;
-    background-color: rgba(0, 0, 0, 0.5);
-    z-index: 201;
-    display: flex;
-    align-items: center;
-    justify-content: center;
-} */
-
-
-/* .b-r-main {
-    width: 90%;
-    height: 90%;
-}
-
-.b-r-gaunbi {
-    position: relative;
-    left: 90%;
-    width: 50px;
-    height: 50px;
-}
-
-.b-r-main-in {
-    width: 100%;
-    height: auto;
-    padding-bottom: 20px;
-    background-color: #fff;
-    border-radius: 10px;
-}
-
-.b-r-m-i-once {
-    padding: 10px 0 10px 10px;
-    display: flex;
-    justify-content: space-around;
-}
-
-.b-r-m-i-o-title {
-    width: 30%;
-    position: relative;
-    top: 10px;
-}
-
-.b-r-m-i-o-center {
-    width: 70%;
-}
-.b-r-i-o-ups{
-    /* align-items: center; */
-
-
-}
-.b-r-m-i-o-c-img {
-    width: 50px;
-    height: 50px;
-}
-.b-r-m-but {
-    position: relative;
-    left: calc(50% - 40px);
-}
-*/ .butc {
-    /* border: 1px solid #4D7CEE; */
-}
-.b-b-img {
-    width: 40px;
-    height: 40px;
-    display: block;
-    /* border: 1px solid #4D7CEE; */
-}
\ No newline at end of file
diff --git a/xcxMapWzzzz/css/elementUI.css b/xcxMapWzzzz/css/elementUI.css
deleted file mode 100644
index f3a3ab7..0000000
--- a/xcxMapWzzzz/css/elementUI.css
+++ /dev/null
@@ -1 +0,0 @@
-@charset "UTF-8";.el-pagination--small .arrow.disabled,.el-table .hidden-columns,.el-table td.is-hidden>*,.el-table th.is-hidden>*,.el-table--hidden{visibility:hidden}.el-input__suffix,.el-tree.is-dragging .el-tree-node__content *{pointer-events:none}.el-dropdown .el-dropdown-selfdefine:focus:active,.el-dropdown .el-dropdown-selfdefine:focus:not(.focusing),.el-message__closeBtn:focus,.el-message__content:focus,.el-popover:focus,.el-popover:focus:active,.el-popover__reference:focus:hover,.el-popover__reference:focus:not(.focusing),.el-rate:active,.el-rate:focus,.el-tooltip:focus:hover,.el-tooltip:focus:not(.focusing),.el-upload-list__item.is-success:active,.el-upload-list__item.is-success:not(.focusing):focus{outline-width:0}@font-face{font-family:element-icons;src:url(fonts/element-icons.woff) format("woff"),url(fonts/element-icons.ttf) format("truetype");font-weight:400;font-display:"auto";font-style:normal}[class*=" el-icon-"],[class^=el-icon-]{font-family:element-icons!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;vertical-align:baseline;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-icon-ice-cream-round:before{content:"\e6a0"}.el-icon-ice-cream-square:before{content:"\e6a3"}.el-icon-lollipop:before{content:"\e6a4"}.el-icon-potato-strips:before{content:"\e6a5"}.el-icon-milk-tea:before{content:"\e6a6"}.el-icon-ice-drink:before{content:"\e6a7"}.el-icon-ice-tea:before{content:"\e6a9"}.el-icon-coffee:before{content:"\e6aa"}.el-icon-orange:before{content:"\e6ab"}.el-icon-pear:before{content:"\e6ac"}.el-icon-apple:before{content:"\e6ad"}.el-icon-cherry:before{content:"\e6ae"}.el-icon-watermelon:before{content:"\e6af"}.el-icon-grape:before{content:"\e6b0"}.el-icon-refrigerator:before{content:"\e6b1"}.el-icon-goblet-square-full:before{content:"\e6b2"}.el-icon-goblet-square:before{content:"\e6b3"}.el-icon-goblet-full:before{content:"\e6b4"}.el-icon-goblet:before{content:"\e6b5"}.el-icon-cold-drink:before{content:"\e6b6"}.el-icon-coffee-cup:before{content:"\e6b8"}.el-icon-water-cup:before{content:"\e6b9"}.el-icon-hot-water:before{content:"\e6ba"}.el-icon-ice-cream:before{content:"\e6bb"}.el-icon-dessert:before{content:"\e6bc"}.el-icon-sugar:before{content:"\e6bd"}.el-icon-tableware:before{content:"\e6be"}.el-icon-burger:before{content:"\e6bf"}.el-icon-knife-fork:before{content:"\e6c1"}.el-icon-fork-spoon:before{content:"\e6c2"}.el-icon-chicken:before{content:"\e6c3"}.el-icon-food:before{content:"\e6c4"}.el-icon-dish-1:before{content:"\e6c5"}.el-icon-dish:before{content:"\e6c6"}.el-icon-moon-night:before{content:"\e6ee"}.el-icon-moon:before{content:"\e6f0"}.el-icon-cloudy-and-sunny:before{content:"\e6f1"}.el-icon-partly-cloudy:before{content:"\e6f2"}.el-icon-cloudy:before{content:"\e6f3"}.el-icon-sunny:before{content:"\e6f6"}.el-icon-sunset:before{content:"\e6f7"}.el-icon-sunrise-1:before{content:"\e6f8"}.el-icon-sunrise:before{content:"\e6f9"}.el-icon-heavy-rain:before{content:"\e6fa"}.el-icon-lightning:before{content:"\e6fb"}.el-icon-light-rain:before{content:"\e6fc"}.el-icon-wind-power:before{content:"\e6fd"}.el-icon-baseball:before{content:"\e712"}.el-icon-soccer:before{content:"\e713"}.el-icon-football:before{content:"\e715"}.el-icon-basketball:before{content:"\e716"}.el-icon-ship:before{content:"\e73f"}.el-icon-truck:before{content:"\e740"}.el-icon-bicycle:before{content:"\e741"}.el-icon-mobile-phone:before{content:"\e6d3"}.el-icon-service:before{content:"\e6d4"}.el-icon-key:before{content:"\e6e2"}.el-icon-unlock:before{content:"\e6e4"}.el-icon-lock:before{content:"\e6e5"}.el-icon-watch:before{content:"\e6fe"}.el-icon-watch-1:before{content:"\e6ff"}.el-icon-timer:before{content:"\e702"}.el-icon-alarm-clock:before{content:"\e703"}.el-icon-map-location:before{content:"\e704"}.el-icon-delete-location:before{content:"\e705"}.el-icon-add-location:before{content:"\e706"}.el-icon-location-information:before{content:"\e707"}.el-icon-location-outline:before{content:"\e708"}.el-icon-location:before{content:"\e79e"}.el-icon-place:before{content:"\e709"}.el-icon-discover:before{content:"\e70a"}.el-icon-first-aid-kit:before{content:"\e70b"}.el-icon-trophy-1:before{content:"\e70c"}.el-icon-trophy:before{content:"\e70d"}.el-icon-medal:before{content:"\e70e"}.el-icon-medal-1:before{content:"\e70f"}.el-icon-stopwatch:before{content:"\e710"}.el-icon-mic:before{content:"\e711"}.el-icon-copy-document:before{content:"\e718"}.el-icon-full-screen:before{content:"\e719"}.el-icon-switch-button:before{content:"\e71b"}.el-icon-aim:before{content:"\e71c"}.el-icon-crop:before{content:"\e71d"}.el-icon-odometer:before{content:"\e71e"}.el-icon-time:before{content:"\e71f"}.el-icon-bangzhu:before{content:"\e724"}.el-icon-close-notification:before{content:"\e726"}.el-icon-microphone:before{content:"\e727"}.el-icon-turn-off-microphone:before{content:"\e728"}.el-icon-position:before{content:"\e729"}.el-icon-postcard:before{content:"\e72a"}.el-icon-message:before{content:"\e72b"}.el-icon-chat-line-square:before{content:"\e72d"}.el-icon-chat-dot-square:before{content:"\e72e"}.el-icon-chat-dot-round:before{content:"\e72f"}.el-icon-chat-square:before{content:"\e730"}.el-icon-chat-line-round:before{content:"\e731"}.el-icon-chat-round:before{content:"\e732"}.el-icon-set-up:before{content:"\e733"}.el-icon-turn-off:before{content:"\e734"}.el-icon-open:before{content:"\e735"}.el-icon-connection:before{content:"\e736"}.el-icon-link:before{content:"\e737"}.el-icon-cpu:before{content:"\e738"}.el-icon-thumb:before{content:"\e739"}.el-icon-female:before{content:"\e73a"}.el-icon-male:before{content:"\e73b"}.el-icon-guide:before{content:"\e73c"}.el-icon-news:before{content:"\e73e"}.el-icon-price-tag:before{content:"\e744"}.el-icon-discount:before{content:"\e745"}.el-icon-wallet:before{content:"\e747"}.el-icon-coin:before{content:"\e748"}.el-icon-money:before{content:"\e749"}.el-icon-bank-card:before{content:"\e74a"}.el-icon-box:before{content:"\e74b"}.el-icon-present:before{content:"\e74c"}.el-icon-sell:before{content:"\e6d5"}.el-icon-sold-out:before{content:"\e6d6"}.el-icon-shopping-bag-2:before{content:"\e74d"}.el-icon-shopping-bag-1:before{content:"\e74e"}.el-icon-shopping-cart-2:before{content:"\e74f"}.el-icon-shopping-cart-1:before{content:"\e750"}.el-icon-shopping-cart-full:before{content:"\e751"}.el-icon-smoking:before{content:"\e752"}.el-icon-no-smoking:before{content:"\e753"}.el-icon-house:before{content:"\e754"}.el-icon-table-lamp:before{content:"\e755"}.el-icon-school:before{content:"\e756"}.el-icon-office-building:before{content:"\e757"}.el-icon-toilet-paper:before{content:"\e758"}.el-icon-notebook-2:before{content:"\e759"}.el-icon-notebook-1:before{content:"\e75a"}.el-icon-files:before{content:"\e75b"}.el-icon-collection:before{content:"\e75c"}.el-icon-receiving:before{content:"\e75d"}.el-icon-suitcase-1:before{content:"\e760"}.el-icon-suitcase:before{content:"\e761"}.el-icon-film:before{content:"\e763"}.el-icon-collection-tag:before{content:"\e765"}.el-icon-data-analysis:before{content:"\e766"}.el-icon-pie-chart:before{content:"\e767"}.el-icon-data-board:before{content:"\e768"}.el-icon-data-line:before{content:"\e76d"}.el-icon-reading:before{content:"\e769"}.el-icon-magic-stick:before{content:"\e76a"}.el-icon-coordinate:before{content:"\e76b"}.el-icon-mouse:before{content:"\e76c"}.el-icon-brush:before{content:"\e76e"}.el-icon-headset:before{content:"\e76f"}.el-icon-umbrella:before{content:"\e770"}.el-icon-scissors:before{content:"\e771"}.el-icon-mobile:before{content:"\e773"}.el-icon-attract:before{content:"\e774"}.el-icon-monitor:before{content:"\e775"}.el-icon-search:before{content:"\e778"}.el-icon-takeaway-box:before{content:"\e77a"}.el-icon-paperclip:before{content:"\e77d"}.el-icon-printer:before{content:"\e77e"}.el-icon-document-add:before{content:"\e782"}.el-icon-document:before{content:"\e785"}.el-icon-document-checked:before{content:"\e786"}.el-icon-document-copy:before{content:"\e787"}.el-icon-document-delete:before{content:"\e788"}.el-icon-document-remove:before{content:"\e789"}.el-icon-tickets:before{content:"\e78b"}.el-icon-folder-checked:before{content:"\e77f"}.el-icon-folder-delete:before{content:"\e780"}.el-icon-folder-remove:before{content:"\e781"}.el-icon-folder-add:before{content:"\e783"}.el-icon-folder-opened:before{content:"\e784"}.el-icon-folder:before{content:"\e78a"}.el-icon-edit-outline:before{content:"\e764"}.el-icon-edit:before{content:"\e78c"}.el-icon-date:before{content:"\e78e"}.el-icon-c-scale-to-original:before{content:"\e7c6"}.el-icon-view:before{content:"\e6ce"}.el-icon-loading:before{content:"\e6cf"}.el-icon-rank:before{content:"\e6d1"}.el-icon-sort-down:before{content:"\e7c4"}.el-icon-sort-up:before{content:"\e7c5"}.el-icon-sort:before{content:"\e6d2"}.el-icon-finished:before{content:"\e6cd"}.el-icon-refresh-left:before{content:"\e6c7"}.el-icon-refresh-right:before{content:"\e6c8"}.el-icon-refresh:before{content:"\e6d0"}.el-icon-video-play:before{content:"\e7c0"}.el-icon-video-pause:before{content:"\e7c1"}.el-icon-d-arrow-right:before{content:"\e6dc"}.el-icon-d-arrow-left:before{content:"\e6dd"}.el-icon-arrow-up:before{content:"\e6e1"}.el-icon-arrow-down:before{content:"\e6df"}.el-icon-arrow-right:before{content:"\e6e0"}.el-icon-arrow-left:before{content:"\e6de"}.el-icon-top-right:before{content:"\e6e7"}.el-icon-top-left:before{content:"\e6e8"}.el-icon-top:before{content:"\e6e6"}.el-icon-bottom:before{content:"\e6eb"}.el-icon-right:before{content:"\e6e9"}.el-icon-back:before{content:"\e6ea"}.el-icon-bottom-right:before{content:"\e6ec"}.el-icon-bottom-left:before{content:"\e6ed"}.el-icon-caret-top:before{content:"\e78f"}.el-icon-caret-bottom:before{content:"\e790"}.el-icon-caret-right:before{content:"\e791"}.el-icon-caret-left:before{content:"\e792"}.el-icon-d-caret:before{content:"\e79a"}.el-icon-share:before{content:"\e793"}.el-icon-menu:before{content:"\e798"}.el-icon-s-grid:before{content:"\e7a6"}.el-icon-s-check:before{content:"\e7a7"}.el-icon-s-data:before{content:"\e7a8"}.el-icon-s-opportunity:before{content:"\e7aa"}.el-icon-s-custom:before{content:"\e7ab"}.el-icon-s-claim:before{content:"\e7ad"}.el-icon-s-finance:before{content:"\e7ae"}.el-icon-s-comment:before{content:"\e7af"}.el-icon-s-flag:before{content:"\e7b0"}.el-icon-s-marketing:before{content:"\e7b1"}.el-icon-s-shop:before{content:"\e7b4"}.el-icon-s-open:before{content:"\e7b5"}.el-icon-s-management:before{content:"\e7b6"}.el-icon-s-ticket:before{content:"\e7b7"}.el-icon-s-release:before{content:"\e7b8"}.el-icon-s-home:before{content:"\e7b9"}.el-icon-s-promotion:before{content:"\e7ba"}.el-icon-s-operation:before{content:"\e7bb"}.el-icon-s-unfold:before{content:"\e7bc"}.el-icon-s-fold:before{content:"\e7a9"}.el-icon-s-platform:before{content:"\e7bd"}.el-icon-s-order:before{content:"\e7be"}.el-icon-s-cooperation:before{content:"\e7bf"}.el-icon-bell:before{content:"\e725"}.el-icon-message-solid:before{content:"\e799"}.el-icon-video-camera:before{content:"\e772"}.el-icon-video-camera-solid:before{content:"\e796"}.el-icon-camera:before{content:"\e779"}.el-icon-camera-solid:before{content:"\e79b"}.el-icon-download:before{content:"\e77c"}.el-icon-upload2:before{content:"\e77b"}.el-icon-upload:before{content:"\e7c3"}.el-icon-picture-outline-round:before{content:"\e75f"}.el-icon-picture-outline:before{content:"\e75e"}.el-icon-picture:before{content:"\e79f"}.el-icon-close:before{content:"\e6db"}.el-icon-check:before{content:"\e6da"}.el-icon-plus:before{content:"\e6d9"}.el-icon-minus:before{content:"\e6d8"}.el-icon-help:before{content:"\e73d"}.el-icon-s-help:before{content:"\e7b3"}.el-icon-circle-close:before{content:"\e78d"}.el-icon-circle-check:before{content:"\e720"}.el-icon-circle-plus-outline:before{content:"\e723"}.el-icon-remove-outline:before{content:"\e722"}.el-icon-zoom-out:before{content:"\e776"}.el-icon-zoom-in:before{content:"\e777"}.el-icon-error:before{content:"\e79d"}.el-icon-success:before{content:"\e79c"}.el-icon-circle-plus:before{content:"\e7a0"}.el-icon-remove:before{content:"\e7a2"}.el-icon-info:before{content:"\e7a1"}.el-icon-question:before{content:"\e7a4"}.el-icon-warning-outline:before{content:"\e6c9"}.el-icon-warning:before{content:"\e7a3"}.el-icon-goods:before{content:"\e7c2"}.el-icon-s-goods:before{content:"\e7b2"}.el-icon-star-off:before{content:"\e717"}.el-icon-star-on:before{content:"\e797"}.el-icon-more-outline:before{content:"\e6cc"}.el-icon-more:before{content:"\e794"}.el-icon-phone-outline:before{content:"\e6cb"}.el-icon-phone:before{content:"\e795"}.el-icon-user:before{content:"\e6e3"}.el-icon-user-solid:before{content:"\e7a5"}.el-icon-setting:before{content:"\e6ca"}.el-icon-s-tools:before{content:"\e7ac"}.el-icon-delete:before{content:"\e6d7"}.el-icon-delete-solid:before{content:"\e7c9"}.el-icon-eleme:before{content:"\e7c7"}.el-icon-platform-eleme:before{content:"\e7ca"}.el-icon-loading{-webkit-animation:rotating 2s linear infinite;animation:rotating 2s linear infinite}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@-webkit-keyframes rotating{0%{-webkit-transform:rotateZ(0);transform:rotateZ(0)}100%{-webkit-transform:rotateZ(360deg);transform:rotateZ(360deg)}}@keyframes rotating{0%{-webkit-transform:rotateZ(0);transform:rotateZ(0)}100%{-webkit-transform:rotateZ(360deg);transform:rotateZ(360deg)}}.el-pagination{white-space:nowrap;padding:2px 5px;color:#303133;font-weight:700}.el-pagination::after,.el-pagination::before{display:table;content:""}.el-pagination::after{clear:both}.el-pagination button,.el-pagination span:not([class*=suffix]){display:inline-block;font-size:13px;min-width:35.5px;height:28px;line-height:28px;vertical-align:top;-webkit-box-sizing:border-box;box-sizing:border-box}.el-pagination .el-input__inner{text-align:center;-moz-appearance:textfield;line-height:normal}.el-pagination .el-input__suffix{right:0;-webkit-transform:scale(.8);transform:scale(.8)}.el-pagination .el-select .el-input{width:100px;margin:0 5px}.el-pagination .el-select .el-input .el-input__inner{padding-right:25px;border-radius:3px}.el-pagination button{border:none;padding:0 6px;background:0 0}.el-pagination button:focus{outline:0}.el-pagination button:hover{color:#409EFF}.el-pagination button:disabled{color:#C0C4CC;background-color:#FFF;cursor:not-allowed}.el-pagination .btn-next,.el-pagination .btn-prev{background:center center no-repeat #FFF;background-size:16px;cursor:pointer;margin:0;color:#303133}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{display:block;font-size:12px;font-weight:700}.el-pagination .btn-prev{padding-right:12px}.el-pagination .btn-next{padding-left:12px}.el-pagination .el-pager li.disabled{color:#C0C4CC;cursor:not-allowed}.el-pager li,.el-pager li.btn-quicknext:hover,.el-pager li.btn-quickprev:hover{cursor:pointer}.el-pagination--small .btn-next,.el-pagination--small .btn-prev,.el-pagination--small .el-pager li,.el-pagination--small .el-pager li.btn-quicknext,.el-pagination--small .el-pager li.btn-quickprev,.el-pagination--small .el-pager li:last-child{border-color:transparent;font-size:12px;line-height:22px;height:22px;min-width:22px}.el-pagination--small .more::before,.el-pagination--small li.more::before{line-height:24px}.el-pagination--small button,.el-pagination--small span:not([class*=suffix]){height:22px;line-height:22px}.el-pagination--small .el-pagination__editor,.el-pagination--small .el-pagination__editor.el-input .el-input__inner{height:22px}.el-pagination__sizes{margin:0 10px 0 0;font-weight:400;color:#606266}.el-pagination__sizes .el-input .el-input__inner{font-size:13px;padding-left:8px}.el-pagination__sizes .el-input .el-input__inner:hover{border-color:#409EFF}.el-pagination__total{margin-right:10px;font-weight:400;color:#606266}.el-pagination__jump{margin-left:24px;font-weight:400;color:#606266}.el-pagination__jump .el-input__inner{padding:0 3px}.el-pagination__rightwrapper{float:right}.el-pagination__editor{line-height:18px;padding:0 2px;height:28px;text-align:center;margin:0 2px;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:3px}.el-pager,.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev{padding:0}.el-pagination__editor.el-input{width:50px}.el-pagination__editor.el-input .el-input__inner{height:28px}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button,.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev,.el-pagination.is-background .el-pager li{margin:0 5px;background-color:#f4f4f5;color:#606266;min-width:30px;border-radius:2px}.el-pagination.is-background .btn-next.disabled,.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-prev.disabled,.el-pagination.is-background .btn-prev:disabled,.el-pagination.is-background .el-pager li.disabled{color:#C0C4CC}.el-pagination.is-background .el-pager li:not(.disabled):hover{color:#409EFF}.el-pagination.is-background .el-pager li:not(.disabled).active{background-color:#409EFF;color:#FFF}.el-dialog,.el-pager li{background:#FFF;-webkit-box-sizing:border-box}.el-pagination.is-background.el-pagination--small .btn-next,.el-pagination.is-background.el-pagination--small .btn-prev,.el-pagination.is-background.el-pagination--small .el-pager li{margin:0 3px;min-width:22px}.el-pager,.el-pager li{vertical-align:top;margin:0;display:inline-block}.el-pager{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;list-style:none;font-size:0}.el-date-table,.el-table th{-webkit-user-select:none;-moz-user-select:none}.el-pager .more::before{line-height:30px}.el-pager li{padding:0 4px;font-size:13px;min-width:35.5px;height:28px;line-height:28px;box-sizing:border-box;text-align:center}.el-menu--collapse .el-menu .el-submenu,.el-menu--popup{min-width:200px}.el-pager li.btn-quicknext,.el-pager li.btn-quickprev{line-height:28px;color:#303133}.el-pager li.btn-quicknext.disabled,.el-pager li.btn-quickprev.disabled{color:#C0C4CC}.el-pager li.active+li{border-left:0}.el-pager li:hover{color:#409EFF}.el-pager li.active{color:#409EFF;cursor:default}@-webkit-keyframes v-modal-in{0%{opacity:0}}@-webkit-keyframes v-modal-out{100%{opacity:0}}.el-dialog{position:relative;margin:0 auto 50px;border-radius:2px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3);box-sizing:border-box;width:50%}.el-dialog.is-fullscreen{width:100%;margin-top:0;margin-bottom:0;height:100%;overflow:auto}.el-dialog__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto;margin:0}.el-dialog__header{padding:20px 20px 10px}.el-dialog__headerbtn{position:absolute;top:20px;right:20px;padding:0;background:0 0;border:none;outline:0;cursor:pointer;font-size:16px}.el-dialog__headerbtn .el-dialog__close{color:#909399}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:#409EFF}.el-dialog__title{line-height:24px;font-size:18px;color:#303133}.el-dialog__body{padding:30px 20px;color:#606266;font-size:14px;word-break:break-all}.el-dialog__footer{padding:10px 20px 20px;text-align:right;-webkit-box-sizing:border-box;box-sizing:border-box}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial;padding:25px 25px 30px}.el-dialog--center .el-dialog__footer{text-align:inherit}.dialog-fade-enter-active{-webkit-animation:dialog-fade-in .3s;animation:dialog-fade-in .3s}.dialog-fade-leave-active{-webkit-animation:dialog-fade-out .3s;animation:dialog-fade-out .3s}@-webkit-keyframes dialog-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes dialog-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes dialog-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes dialog-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}.el-autocomplete{position:relative;display:inline-block}.el-autocomplete-suggestion{margin:5px 0;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:4px;border:1px solid #E4E7ED;-webkit-box-sizing:border-box;box-sizing:border-box;background-color:#FFF}.el-dropdown-menu,.el-menu--collapse .el-submenu .el-menu{z-index:10;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-autocomplete-suggestion__wrap{max-height:280px;padding:10px 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-autocomplete-suggestion__list{margin:0;padding:0}.el-autocomplete-suggestion li{padding:0 20px;margin:0;line-height:34px;cursor:pointer;color:#606266;font-size:14px;list-style:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-autocomplete-suggestion li.highlighted,.el-autocomplete-suggestion li:hover{background-color:#F5F7FA}.el-autocomplete-suggestion li.divider{margin-top:6px;border-top:1px solid #000}.el-autocomplete-suggestion li.divider:last-child{margin-bottom:-6px}.el-autocomplete-suggestion.is-loading li{text-align:center;height:100px;line-height:100px;font-size:20px;color:#999}.el-autocomplete-suggestion.is-loading li::after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-autocomplete-suggestion.is-loading li:hover{background-color:#FFF}.el-autocomplete-suggestion.is-loading .el-icon-loading{vertical-align:middle}.el-dropdown{display:inline-block;position:relative;color:#606266;font-size:14px}.el-dropdown .el-button-group{display:block}.el-dropdown .el-button-group .el-button{float:none}.el-dropdown .el-dropdown__caret-button{padding-left:5px;padding-right:5px;position:relative;border-left:none}.el-dropdown .el-dropdown__caret-button::before{content:'';position:absolute;display:block;width:1px;top:5px;bottom:5px;left:0;background:rgba(255,255,255,.5)}.el-dropdown .el-dropdown__caret-button.el-button--default::before{background:rgba(220,223,230,.5)}.el-dropdown .el-dropdown__caret-button:hover::before{top:0;bottom:0}.el-dropdown .el-dropdown__caret-button .el-dropdown__icon{padding-left:0}.el-dropdown__icon{font-size:12px;margin:0 3px}.el-dropdown-menu{position:absolute;top:0;left:0;padding:10px 0;margin:5px 0;background-color:#FFF;border:1px solid #EBEEF5;border-radius:4px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-dropdown-menu__item{list-style:none;line-height:36px;padding:0 20px;margin:0;font-size:14px;color:#606266;cursor:pointer;outline:0}.el-dropdown-menu__item:focus,.el-dropdown-menu__item:not(.is-disabled):hover{background-color:#ecf5ff;color:#66b1ff}.el-dropdown-menu__item i{margin-right:5px}.el-dropdown-menu__item--divided{position:relative;margin-top:6px;border-top:1px solid #EBEEF5}.el-dropdown-menu__item--divided:before{content:'';height:6px;display:block;margin:0 -20px;background-color:#FFF}.el-dropdown-menu__item.is-disabled{cursor:default;color:#bbb;pointer-events:none}.el-dropdown-menu--medium{padding:6px 0}.el-dropdown-menu--medium .el-dropdown-menu__item{line-height:30px;padding:0 17px;font-size:14px}.el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:6px}.el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:6px;margin:0 -17px}.el-dropdown-menu--small{padding:6px 0}.el-dropdown-menu--small .el-dropdown-menu__item{line-height:27px;padding:0 15px;font-size:13px}.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:4px}.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:4px;margin:0 -15px}.el-dropdown-menu--mini{padding:3px 0}.el-dropdown-menu--mini .el-dropdown-menu__item{line-height:24px;padding:0 10px;font-size:12px}.el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:3px}.el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:3px;margin:0 -10px}.el-menu{border-right:solid 1px #e6e6e6;list-style:none;position:relative;margin:0;padding-left:0;background-color:#FFF}.el-menu--horizontal>.el-menu-item:not(.is-disabled):focus,.el-menu--horizontal>.el-menu-item:not(.is-disabled):hover,.el-menu--horizontal>.el-submenu .el-submenu__title:hover{background-color:#fff}.el-menu::after,.el-menu::before{display:table;content:""}.el-menu::after{clear:both}.el-menu.el-menu--horizontal{border-bottom:solid 1px #e6e6e6}.el-menu--horizontal{border-right:none}.el-menu--horizontal>.el-menu-item{float:left;height:60px;line-height:60px;margin:0;border-bottom:2px solid transparent;color:#909399}.el-menu--horizontal>.el-menu-item a,.el-menu--horizontal>.el-menu-item a:hover{color:inherit}.el-menu--horizontal>.el-submenu{float:left}.el-menu--horizontal>.el-submenu:focus,.el-menu--horizontal>.el-submenu:hover{outline:0}.el-menu--horizontal>.el-submenu:focus .el-submenu__title,.el-menu--horizontal>.el-submenu:hover .el-submenu__title{color:#303133}.el-menu--horizontal>.el-submenu.is-active .el-submenu__title{border-bottom:2px solid #409EFF;color:#303133}.el-menu--horizontal>.el-submenu .el-submenu__title{height:60px;line-height:60px;border-bottom:2px solid transparent;color:#909399}.el-menu--horizontal>.el-submenu .el-submenu__icon-arrow{position:static;vertical-align:middle;margin-left:8px;margin-top:-3px}.el-menu--horizontal .el-menu .el-menu-item,.el-menu--horizontal .el-menu .el-submenu__title{background-color:#FFF;float:none;height:36px;line-height:36px;padding:0 10px;color:#909399}.el-menu--horizontal .el-menu .el-menu-item.is-active,.el-menu--horizontal .el-menu .el-submenu.is-active>.el-submenu__title{color:#303133}.el-menu--horizontal .el-menu-item:not(.is-disabled):focus,.el-menu--horizontal .el-menu-item:not(.is-disabled):hover{outline:0;color:#303133}.el-menu--horizontal>.el-menu-item.is-active{border-bottom:2px solid #409EFF;color:#303133}.el-menu--collapse{width:64px}.el-menu--collapse>.el-menu-item [class^=el-icon-],.el-menu--collapse>.el-submenu>.el-submenu__title [class^=el-icon-]{margin:0;vertical-align:middle;width:24px;text-align:center}.el-menu--collapse>.el-menu-item .el-submenu__icon-arrow,.el-menu--collapse>.el-submenu>.el-submenu__title .el-submenu__icon-arrow{display:none}.el-menu--collapse>.el-menu-item span,.el-menu--collapse>.el-submenu>.el-submenu__title span{height:0;width:0;overflow:hidden;visibility:hidden;display:inline-block}.el-menu--collapse>.el-menu-item.is-active i{color:inherit}.el-menu--collapse .el-submenu{position:relative}.el-menu--collapse .el-submenu .el-menu{position:absolute;margin-left:5px;top:0;left:100%;border:1px solid #E4E7ED;border-radius:2px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-menu-item,.el-submenu__title{height:56px;line-height:56px;position:relative;-webkit-box-sizing:border-box;white-space:nowrap;list-style:none}.el-menu--collapse .el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{-webkit-transform:none;transform:none}.el-menu--popup{z-index:100;border:none;padding:5px 0;border-radius:2px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-menu--popup-bottom-start{margin-top:5px}.el-menu--popup-right-start{margin-left:5px;margin-right:5px}.el-menu-item{font-size:14px;color:#303133;padding:0 20px;cursor:pointer;-webkit-transition:border-color .3s,background-color .3s,color .3s;transition:border-color .3s,background-color .3s,color .3s;box-sizing:border-box}.el-menu-item *{vertical-align:middle}.el-menu-item i{color:#909399}.el-menu-item:focus,.el-menu-item:hover{outline:0;background-color:#ecf5ff}.el-menu-item.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-menu-item [class^=el-icon-]{margin-right:5px;width:24px;text-align:center;font-size:18px;vertical-align:middle}.el-menu-item.is-active{color:#409EFF}.el-menu-item.is-active i{color:inherit}.el-submenu{list-style:none;margin:0;padding-left:0}.el-submenu__title{font-size:14px;color:#303133;padding:0 20px;cursor:pointer;-webkit-transition:border-color .3s,background-color .3s,color .3s;transition:border-color .3s,background-color .3s,color .3s;box-sizing:border-box}.el-submenu__title *{vertical-align:middle}.el-submenu__title i{color:#909399}.el-submenu__title:focus,.el-submenu__title:hover{outline:0;background-color:#ecf5ff}.el-submenu__title.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-submenu__title:hover{background-color:#ecf5ff}.el-submenu .el-menu{border:none}.el-submenu .el-menu-item{height:50px;line-height:50px;padding:0 45px;min-width:200px}.el-submenu__icon-arrow{position:absolute;top:50%;right:20px;margin-top:-7px;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;font-size:12px}.el-submenu.is-active .el-submenu__title{border-bottom-color:#409EFF}.el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg)}.el-submenu.is-disabled .el-menu-item,.el-submenu.is-disabled .el-submenu__title{opacity:.25;cursor:not-allowed;background:0 0!important}.el-submenu [class^=el-icon-]{vertical-align:middle;margin-right:5px;width:24px;text-align:center;font-size:18px}.el-menu-item-group>ul{padding:0}.el-menu-item-group__title{padding:7px 0 7px 20px;line-height:normal;font-size:12px;color:#909399}.el-radio-button__inner,.el-radio-group{display:inline-block;line-height:1;vertical-align:middle}.horizontal-collapse-transition .el-submenu__title .el-submenu__icon-arrow{-webkit-transition:.2s;transition:.2s;opacity:0}.el-radio-group{font-size:0}.el-radio-button{position:relative;display:inline-block;outline:0}.el-radio-button__inner{white-space:nowrap;background:#FFF;border:1px solid #DCDFE6;font-weight:500;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;position:relative;cursor:pointer;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);padding:12px 20px;font-size:14px;border-radius:0}.el-radio-button__inner.is-round{padding:12px 20px}.el-radio-button__inner:hover{color:#409EFF}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-left:1px solid #DCDFE6;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.el-radio-button__orig-radio{opacity:0;outline:0;position:absolute;z-index:-1}.el-radio-button__orig-radio:checked+.el-radio-button__inner{color:#FFF;background-color:#409EFF;border-color:#409EFF;-webkit-box-shadow:-1px 0 0 0 #409EFF;box-shadow:-1px 0 0 0 #409EFF}.el-radio-button__orig-radio:disabled+.el-radio-button__inner{color:#C0C4CC;cursor:not-allowed;background-image:none;background-color:#FFF;border-color:#EBEEF5;-webkit-box-shadow:none;box-shadow:none}.el-radio-button__orig-radio:disabled:checked+.el-radio-button__inner{background-color:#F2F6FC}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 4px 4px 0}.el-popover,.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:4px}.el-radio-button--medium .el-radio-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-radio-button--medium .el-radio-button__inner.is-round{padding:10px 20px}.el-radio-button--small .el-radio-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-radio-button--small .el-radio-button__inner.is-round{padding:9px 15px}.el-radio-button--mini .el-radio-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-radio-button--mini .el-radio-button__inner.is-round{padding:7px 15px}.el-radio-button:focus:not(.is-focus):not(:active):not(.is-disabled){-webkit-box-shadow:0 0 2px 2px #409EFF;box-shadow:0 0 2px 2px #409EFF}.el-switch{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;font-size:14px;line-height:20px;height:20px;vertical-align:middle}.el-switch__core,.el-switch__label{display:inline-block;cursor:pointer}.el-switch.is-disabled .el-switch__core,.el-switch.is-disabled .el-switch__label{cursor:not-allowed}.el-switch__label{-webkit-transition:.2s;transition:.2s;height:20px;font-size:14px;font-weight:500;vertical-align:middle;color:#303133}.el-switch__label.is-active{color:#409EFF}.el-switch__label--left{margin-right:10px}.el-switch__label--right{margin-left:10px}.el-switch__label *{line-height:1;font-size:14px;display:inline-block}.el-switch__input{position:absolute;width:0;height:0;opacity:0;margin:0}.el-switch__core{margin:0;position:relative;width:40px;height:20px;border:1px solid #DCDFE6;outline:0;border-radius:10px;-webkit-box-sizing:border-box;box-sizing:border-box;background:#DCDFE6;-webkit-transition:border-color .3s,background-color .3s;transition:border-color .3s,background-color .3s;vertical-align:middle}.el-switch__core:after{content:"";position:absolute;top:1px;left:1px;border-radius:100%;-webkit-transition:all .3s;transition:all .3s;width:16px;height:16px;background-color:#FFF}.el-switch.is-checked .el-switch__core{border-color:#409EFF;background-color:#409EFF}.el-switch.is-checked .el-switch__core::after{left:100%;margin-left:-17px}.el-switch.is-disabled{opacity:.6}.el-switch--wide .el-switch__label.el-switch__label--left span{left:10px}.el-switch--wide .el-switch__label.el-switch__label--right span{right:10px}.el-switch .label-fade-enter,.el-switch .label-fade-leave-active{opacity:0}.el-select-dropdown{position:absolute;z-index:1001;border:1px solid #E4E7ED;border-radius:4px;background-color:#FFF;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-box-sizing:border-box;box-sizing:border-box;margin:5px 0}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected{color:#409EFF;background-color:#FFF}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected.hover{background-color:#F5F7FA}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected::after{position:absolute;right:20px;font-family:element-icons;content:"\e6da";font-size:12px;font-weight:700;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.el-select-dropdown__empty{padding:10px 0;margin:0;text-align:center;color:#999;font-size:14px}.el-select-dropdown__wrap{max-height:274px}.el-select-dropdown__list{list-style:none;padding:6px 0;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-select-dropdown__item{font-size:14px;padding:0 20px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#606266;height:34px;line-height:34px;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer}.el-select-dropdown__item.is-disabled{color:#C0C4CC;cursor:not-allowed}.el-select-dropdown__item.is-disabled:hover{background-color:#FFF}.el-select-dropdown__item.hover,.el-select-dropdown__item:hover{background-color:#F5F7FA}.el-select-dropdown__item.selected{color:#409EFF;font-weight:700}.el-select-group{margin:0;padding:0}.el-select-group__wrap{position:relative;list-style:none;margin:0;padding:0}.el-select-group__wrap:not(:last-of-type){padding-bottom:24px}.el-select-group__wrap:not(:last-of-type)::after{content:'';position:absolute;display:block;left:20px;right:20px;bottom:12px;height:1px;background:#E4E7ED}.el-select-group__title{padding-left:20px;font-size:12px;color:#909399;line-height:30px}.el-select-group .el-select-dropdown__item{padding-left:20px}.el-select{display:inline-block;position:relative}.el-select .el-select__tags>span{display:contents}.el-select:hover .el-input__inner{border-color:#C0C4CC}.el-select .el-input__inner{cursor:pointer;padding-right:35px}.el-select .el-input__inner:focus{border-color:#409EFF}.el-select .el-input .el-select__caret{color:#C0C4CC;font-size:14px;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg);cursor:pointer}.el-select .el-input .el-select__caret.is-reverse{-webkit-transform:rotateZ(0);transform:rotateZ(0)}.el-select .el-input .el-select__caret.is-show-close{font-size:14px;text-align:center;-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg);border-radius:100%;color:#C0C4CC;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1)}.el-select .el-input .el-select__caret.is-show-close:hover{color:#909399}.el-select .el-input.is-disabled .el-input__inner{cursor:not-allowed}.el-select .el-input.is-disabled .el-input__inner:hover{border-color:#E4E7ED}.el-select .el-input.is-focus .el-input__inner{border-color:#409EFF}.el-select>.el-input{display:block}.el-select__input{border:none;outline:0;padding:0;margin-left:15px;color:#666;font-size:14px;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:28px;background-color:transparent}.el-select__input.is-mini{height:14px}.el-select__close{cursor:pointer;position:absolute;top:8px;z-index:1000;right:25px;color:#C0C4CC;line-height:18px;font-size:14px}.el-select__close:hover{color:#909399}.el-select__tags{position:absolute;line-height:normal;white-space:normal;z-index:1;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap}.el-select .el-tag__close{margin-top:-2px}.el-select .el-tag{-webkit-box-sizing:border-box;box-sizing:border-box;border-color:transparent;margin:2px 0 2px 6px;background-color:#f0f2f5}.el-select .el-tag__close.el-icon-close{background-color:#C0C4CC;right:-7px;top:0;color:#FFF}.el-select .el-tag__close.el-icon-close:hover{background-color:#909399}.el-table,.el-table__expanded-cell{background-color:#FFF}.el-select .el-tag__close.el-icon-close::before{display:block;-webkit-transform:translate(0,.5px);transform:translate(0,.5px)}.el-table{position:relative;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-box-flex:1;-ms-flex:1;flex:1;width:100%;max-width:100%;font-size:14px;color:#606266}.el-table--mini,.el-table--small,.el-table__expand-icon{font-size:12px}.el-table__empty-block{min-height:60px;text-align:center;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-table__empty-text{line-height:60px;width:50%;color:#909399}.el-table__expand-column .cell{padding:0;text-align:center}.el-table__expand-icon{position:relative;cursor:pointer;color:#666;-webkit-transition:-webkit-transform .2s ease-in-out;transition:-webkit-transform .2s ease-in-out;transition:transform .2s ease-in-out;transition:transform .2s ease-in-out,-webkit-transform .2s ease-in-out;height:20px}.el-table__expand-icon--expanded{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-table__expand-icon>.el-icon{position:absolute;left:50%;top:50%;margin-left:-5px;margin-top:-5px}.el-table__expanded-cell[class*=cell]{padding:20px 50px}.el-table__expanded-cell:hover{background-color:transparent!important}.el-table__placeholder{display:inline-block;width:20px}.el-table__append-wrapper{overflow:hidden}.el-table--fit{border-right:0;border-bottom:0}.el-table--fit td.gutter,.el-table--fit th.gutter{border-right-width:1px}.el-table--scrollable-x .el-table__body-wrapper{overflow-x:auto}.el-table--scrollable-y .el-table__body-wrapper{overflow-y:auto}.el-table thead{color:#909399;font-weight:500}.el-table thead.is-group th{background:#F5F7FA}.el-table th,.el-table tr{background-color:#FFF}.el-table td,.el-table th{padding:12px 0;min-width:0;-webkit-box-sizing:border-box;box-sizing:border-box;text-overflow:ellipsis;vertical-align:middle;position:relative;text-align:left}.el-table td.is-center,.el-table th.is-center{text-align:center}.el-table td.is-right,.el-table th.is-right{text-align:right}.el-table td.gutter,.el-table th.gutter{width:15px;border-right-width:0;border-bottom-width:0;padding:0}.el-table--medium td,.el-table--medium th{padding:10px 0}.el-table--small td,.el-table--small th{padding:8px 0}.el-table--mini td,.el-table--mini th{padding:6px 0}.el-table .cell,.el-table--border td:first-child .cell,.el-table--border th:first-child .cell{padding-left:10px}.el-table tr input[type=checkbox]{margin:0}.el-table td,.el-table th.is-leaf{border-bottom:1px solid #EBEEF5}.el-table th.is-sortable{cursor:pointer}.el-table th{overflow:hidden;-ms-user-select:none;user-select:none}.el-table th>.cell{display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;vertical-align:middle;padding-left:10px;padding-right:10px;width:100%}.el-table th>.cell.highlight{color:#409EFF}.el-table th.required>div::before{display:inline-block;content:"";width:8px;height:8px;border-radius:50%;background:#ff4d51;margin-right:5px;vertical-align:middle}.el-table td div{-webkit-box-sizing:border-box;box-sizing:border-box}.el-table td.gutter{width:0}.el-table .cell{-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;text-overflow:ellipsis;white-space:normal;word-break:break-all;line-height:23px;padding-right:10px}.el-table .cell.el-tooltip{white-space:nowrap;min-width:50px}.el-table--border,.el-table--group{border:1px solid #EBEEF5}.el-table--border::after,.el-table--group::after,.el-table::before{content:'';position:absolute;background-color:#EBEEF5;z-index:1}.el-table--border::after,.el-table--group::after{top:0;right:0;width:1px;height:100%}.el-table::before{left:0;bottom:0;width:100%;height:1px}.el-table--border{border-right:none;border-bottom:none}.el-table--border.el-loading-parent--relative{border-color:transparent}.el-table--border td,.el-table--border th,.el-table__body-wrapper .el-table--border.is-scrolling-left~.el-table__fixed{border-right:1px solid #EBEEF5}.el-table--border th.gutter:last-of-type{border-bottom:1px solid #EBEEF5;border-bottom-width:1px}.el-table--border th,.el-table__fixed-right-patch{border-bottom:1px solid #EBEEF5}.el-table__fixed,.el-table__fixed-right{position:absolute;top:0;left:0;overflow-x:hidden;overflow-y:hidden;-webkit-box-shadow:0 0 10px rgba(0,0,0,.12);box-shadow:0 0 10px rgba(0,0,0,.12)}.el-table__fixed-right::before,.el-table__fixed::before{content:'';position:absolute;left:0;bottom:0;width:100%;height:1px;background-color:#EBEEF5;z-index:4}.el-table__fixed-right-patch{position:absolute;top:-1px;right:0;background-color:#FFF}.el-table__fixed-right{top:0;left:auto;right:0}.el-table__fixed-right .el-table__fixed-body-wrapper,.el-table__fixed-right .el-table__fixed-footer-wrapper,.el-table__fixed-right .el-table__fixed-header-wrapper{left:auto;right:0}.el-table__fixed-header-wrapper{position:absolute;left:0;top:0;z-index:3}.el-table__fixed-footer-wrapper{position:absolute;left:0;bottom:0;z-index:3}.el-table__fixed-footer-wrapper tbody td{border-top:1px solid #EBEEF5;background-color:#F5F7FA;color:#606266}.el-table__fixed-body-wrapper{position:absolute;left:0;top:37px;overflow:hidden;z-index:3}.el-table__body-wrapper,.el-table__footer-wrapper,.el-table__header-wrapper{width:100%}.el-table__footer-wrapper{margin-top:-1px}.el-table__footer-wrapper td{border-top:1px solid #EBEEF5}.el-table__body,.el-table__footer,.el-table__header{table-layout:fixed;border-collapse:separate}.el-table__footer-wrapper,.el-table__header-wrapper{overflow:hidden}.el-table__footer-wrapper tbody td,.el-table__header-wrapper tbody td{background-color:#F5F7FA;color:#606266}.el-table__body-wrapper{overflow:hidden;position:relative}.el-table__body-wrapper.is-scrolling-left~.el-table__fixed,.el-table__body-wrapper.is-scrolling-none~.el-table__fixed,.el-table__body-wrapper.is-scrolling-none~.el-table__fixed-right,.el-table__body-wrapper.is-scrolling-right~.el-table__fixed-right{-webkit-box-shadow:none;box-shadow:none}.el-picker-panel,.el-table-filter{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-table__body-wrapper .el-table--border.is-scrolling-right~.el-table__fixed-right{border-left:1px solid #EBEEF5}.el-table .caret-wrapper{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:34px;width:24px;vertical-align:middle;cursor:pointer;overflow:initial;position:relative}.el-table .sort-caret{width:0;height:0;border:5px solid transparent;position:absolute;left:7px}.el-table .sort-caret.ascending{border-bottom-color:#C0C4CC;top:5px}.el-table .sort-caret.descending{border-top-color:#C0C4CC;bottom:7px}.el-table .ascending .sort-caret.ascending{border-bottom-color:#409EFF}.el-table .descending .sort-caret.descending{border-top-color:#409EFF}.el-table .hidden-columns{position:absolute;z-index:-1}.el-table--striped .el-table__body tr.el-table__row--striped td{background:#FAFAFA}.el-table--striped .el-table__body tr.el-table__row--striped.current-row td{background-color:#ecf5ff}.el-table__body tr.hover-row.current-row>td,.el-table__body tr.hover-row.el-table__row--striped.current-row>td,.el-table__body tr.hover-row.el-table__row--striped>td,.el-table__body tr.hover-row>td{background-color:#F5F7FA}.el-table__body tr.current-row>td{background-color:#ecf5ff}.el-table__column-resize-proxy{position:absolute;left:200px;top:0;bottom:0;width:0;border-left:1px solid #EBEEF5;z-index:10}.el-table__column-filter-trigger{display:inline-block;line-height:34px;cursor:pointer}.el-table__column-filter-trigger i{color:#909399;font-size:12px;-webkit-transform:scale(.75);transform:scale(.75)}.el-table--enable-row-transition .el-table__body td{-webkit-transition:background-color .25s ease;transition:background-color .25s ease}.el-table--enable-row-hover .el-table__body tr:hover>td{background-color:#F5F7FA}.el-table--fluid-height .el-table__fixed,.el-table--fluid-height .el-table__fixed-right{bottom:0;overflow:hidden}.el-table [class*=el-table__row--level] .el-table__expand-icon{display:inline-block;width:20px;line-height:20px;height:20px;text-align:center;margin-right:3px}.el-table-column--selection .cell{padding-left:14px;padding-right:14px}.el-table-filter{border:1px solid #EBEEF5;border-radius:2px;background-color:#FFF;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-box-sizing:border-box;box-sizing:border-box;margin:2px 0}.el-date-table td,.el-date-table td div{height:30px;-webkit-box-sizing:border-box}.el-table-filter__list{padding:5px 0;margin:0;list-style:none;min-width:100px}.el-table-filter__list-item{line-height:36px;padding:0 10px;cursor:pointer;font-size:14px}.el-table-filter__list-item:hover{background-color:#ecf5ff;color:#66b1ff}.el-table-filter__list-item.is-active{background-color:#409EFF;color:#FFF}.el-table-filter__content{min-width:100px}.el-table-filter__bottom{border-top:1px solid #EBEEF5;padding:8px}.el-table-filter__bottom button{background:0 0;border:none;color:#606266;cursor:pointer;font-size:13px;padding:0 3px}.el-date-table td.in-range div,.el-date-table td.in-range div:hover,.el-date-table.is-week-mode .el-date-table__row.current div,.el-date-table.is-week-mode .el-date-table__row:hover div{background-color:#F2F6FC}.el-table-filter__bottom button:hover{color:#409EFF}.el-table-filter__bottom button:focus{outline:0}.el-table-filter__bottom button.is-disabled{color:#C0C4CC;cursor:not-allowed}.el-table-filter__wrap{max-height:280px}.el-table-filter__checkbox-group{padding:10px}.el-table-filter__checkbox-group label.el-checkbox{display:block;margin-right:5px;margin-bottom:8px;margin-left:5px}.el-table-filter__checkbox-group .el-checkbox:last-child{margin-bottom:0}.el-date-table{font-size:12px;-ms-user-select:none;user-select:none}.el-date-table.is-week-mode .el-date-table__row:hover td.available:hover{color:#606266}.el-date-table.is-week-mode .el-date-table__row:hover td:first-child div{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table.is-week-mode .el-date-table__row:hover td:last-child div{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table td{width:32px;padding:4px 0;box-sizing:border-box;text-align:center;cursor:pointer;position:relative}.el-date-table td div{padding:3px 0;box-sizing:border-box}.el-date-table td span{width:24px;height:24px;display:block;margin:0 auto;line-height:24px;position:absolute;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);border-radius:50%}.el-date-table td.next-month,.el-date-table td.prev-month{color:#C0C4CC}.el-date-table td.today{position:relative}.el-date-table td.today span{color:#409EFF;font-weight:700}.el-date-table td.today.end-date span,.el-date-table td.today.start-date span{color:#FFF}.el-date-table td.available:hover{color:#409EFF}.el-date-table td.current:not(.disabled) span{color:#FFF;background-color:#409EFF}.el-date-table td.end-date div,.el-date-table td.start-date div{color:#FFF}.el-date-table td.end-date span,.el-date-table td.start-date span{background-color:#409EFF}.el-date-table td.start-date div{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table td.end-date div{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table td.disabled div{background-color:#F5F7FA;opacity:1;cursor:not-allowed;color:#C0C4CC}.el-date-table td.selected div{margin-left:5px;margin-right:5px;background-color:#F2F6FC;border-radius:15px}.el-date-table td.selected div:hover{background-color:#F2F6FC}.el-date-table td.selected span{background-color:#409EFF;color:#FFF;border-radius:15px}.el-date-table td.week{font-size:80%;color:#606266}.el-month-table,.el-year-table{font-size:12px;border-collapse:collapse}.el-date-table th{padding:5px;color:#606266;font-weight:400;border-bottom:solid 1px #EBEEF5}.el-month-table{margin:-1px}.el-month-table td{text-align:center;padding:8px 0;cursor:pointer}.el-month-table td div{height:48px;padding:6px 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-month-table td.today .cell{color:#409EFF;font-weight:700}.el-month-table td.today.end-date .cell,.el-month-table td.today.start-date .cell{color:#FFF}.el-month-table td.disabled .cell{background-color:#F5F7FA;cursor:not-allowed;color:#C0C4CC}.el-month-table td.disabled .cell:hover{color:#C0C4CC}.el-month-table td .cell{width:60px;height:36px;display:block;line-height:36px;color:#606266;margin:0 auto;border-radius:18px}.el-month-table td .cell:hover{color:#409EFF}.el-month-table td.in-range div,.el-month-table td.in-range div:hover{background-color:#F2F6FC}.el-month-table td.end-date div,.el-month-table td.start-date div{color:#FFF}.el-month-table td.end-date .cell,.el-month-table td.start-date .cell{color:#FFF;background-color:#409EFF}.el-month-table td.start-date div{border-top-left-radius:24px;border-bottom-left-radius:24px}.el-month-table td.end-date div{border-top-right-radius:24px;border-bottom-right-radius:24px}.el-month-table td.current:not(.disabled) .cell{color:#409EFF}.el-year-table{margin:-1px}.el-year-table .el-icon{color:#303133}.el-year-table td{text-align:center;padding:20px 3px;cursor:pointer}.el-year-table td.today .cell{color:#409EFF;font-weight:700}.el-year-table td.disabled .cell{background-color:#F5F7FA;cursor:not-allowed;color:#C0C4CC}.el-year-table td.disabled .cell:hover{color:#C0C4CC}.el-year-table td .cell{width:48px;height:32px;display:block;line-height:32px;color:#606266;margin:0 auto}.el-year-table td .cell:hover,.el-year-table td.current:not(.disabled) .cell{color:#409EFF}.el-date-range-picker{width:646px}.el-date-range-picker.has-sidebar{width:756px}.el-date-range-picker table{table-layout:fixed;width:100%}.el-date-range-picker .el-picker-panel__body{min-width:513px}.el-date-range-picker .el-picker-panel__content{margin:0}.el-date-range-picker__header{position:relative;text-align:center;height:28px}.el-date-range-picker__header [class*=arrow-left]{float:left}.el-date-range-picker__header [class*=arrow-right]{float:right}.el-date-range-picker__header div{font-size:16px;font-weight:500;margin-right:50px}.el-date-range-picker__content{float:left;width:50%;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:16px}.el-date-range-picker__content.is-left{border-right:1px solid #e4e4e4}.el-date-range-picker__content .el-date-range-picker__header div{margin-left:50px;margin-right:50px}.el-date-range-picker__editors-wrap{-webkit-box-sizing:border-box;box-sizing:border-box;display:table-cell}.el-date-range-picker__editors-wrap.is-right{text-align:right}.el-date-range-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px;display:table;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.el-date-range-picker__time-header>.el-icon-arrow-right{font-size:20px;vertical-align:middle;display:table-cell;color:#303133}.el-date-range-picker__time-picker-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-range-picker__time-picker-wrap .el-picker-panel{position:absolute;top:13px;right:0;z-index:1;background:#FFF}.el-date-picker{width:322px}.el-date-picker.has-sidebar.has-time{width:434px}.el-date-picker.has-sidebar{width:438px}.el-date-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-picker .el-picker-panel__content{width:292px}.el-date-picker table{table-layout:fixed;width:100%}.el-date-picker__editor-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px;display:table;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.el-date-picker__header{margin:12px;text-align:center}.el-date-picker__header--bordered{margin-bottom:0;padding-bottom:12px;border-bottom:solid 1px #EBEEF5}.el-date-picker__header--bordered+.el-picker-panel__content{margin-top:0}.el-date-picker__header-label{font-size:16px;font-weight:500;padding:0 5px;line-height:22px;text-align:center;cursor:pointer;color:#606266}.el-date-picker__header-label.active,.el-date-picker__header-label:hover{color:#409EFF}.el-date-picker__prev-btn{float:left}.el-date-picker__next-btn{float:right}.el-date-picker__time-wrap{padding:10px;text-align:center}.el-date-picker__time-label{float:left;cursor:pointer;line-height:30px;margin-left:10px}.time-select{margin:5px 0;min-width:0}.time-select .el-picker-panel__content{max-height:200px;margin:0}.time-select-item{padding:8px 10px;font-size:14px;line-height:20px}.time-select-item.selected:not(.disabled){color:#409EFF;font-weight:700}.time-select-item.disabled{color:#E4E7ED;cursor:not-allowed}.time-select-item:hover{background-color:#F5F7FA;font-weight:700;cursor:pointer}.el-date-editor{position:relative;display:inline-block;text-align:left}.el-date-editor.el-input,.el-date-editor.el-input__inner{width:220px}.el-date-editor--monthrange.el-input,.el-date-editor--monthrange.el-input__inner{width:300px}.el-date-editor--daterange.el-input,.el-date-editor--daterange.el-input__inner,.el-date-editor--timerange.el-input,.el-date-editor--timerange.el-input__inner{width:350px}.el-date-editor--datetimerange.el-input,.el-date-editor--datetimerange.el-input__inner{width:400px}.el-date-editor--dates .el-input__inner{text-overflow:ellipsis;white-space:nowrap}.el-date-editor .el-icon-circle-close{cursor:pointer}.el-date-editor .el-range__icon{font-size:14px;margin-left:-5px;color:#C0C4CC;float:left;line-height:32px}.el-date-editor .el-range-input,.el-date-editor .el-range-separator{height:100%;margin:0;text-align:center;display:inline-block;font-size:14px}.el-date-editor .el-range-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;outline:0;padding:0;width:39%;color:#606266}.el-date-editor .el-range-input::-webkit-input-placeholder{color:#C0C4CC}.el-date-editor .el-range-input:-ms-input-placeholder{color:#C0C4CC}.el-date-editor .el-range-input::-ms-input-placeholder{color:#C0C4CC}.el-date-editor .el-range-input::placeholder{color:#C0C4CC}.el-date-editor .el-range-separator{padding:0 5px;line-height:32px;width:5%;color:#303133}.el-date-editor .el-range__close-icon{font-size:14px;color:#C0C4CC;width:25px;display:inline-block;float:right;line-height:32px}.el-range-editor.el-input__inner{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:3px 10px}.el-range-editor .el-range-input{line-height:1}.el-range-editor.is-active,.el-range-editor.is-active:hover{border-color:#409EFF}.el-range-editor--medium.el-input__inner{height:36px}.el-range-editor--medium .el-range-separator{line-height:28px;font-size:14px}.el-range-editor--medium .el-range-input{font-size:14px}.el-range-editor--medium .el-range__close-icon,.el-range-editor--medium .el-range__icon{line-height:28px}.el-range-editor--small.el-input__inner{height:32px}.el-range-editor--small .el-range-separator{line-height:24px;font-size:13px}.el-range-editor--small .el-range-input{font-size:13px}.el-range-editor--small .el-range__close-icon,.el-range-editor--small .el-range__icon{line-height:24px}.el-range-editor--mini.el-input__inner{height:28px}.el-range-editor--mini .el-range-separator{line-height:20px;font-size:12px}.el-range-editor--mini .el-range-input{font-size:12px}.el-range-editor--mini .el-range__close-icon,.el-range-editor--mini .el-range__icon{line-height:20px}.el-range-editor.is-disabled{background-color:#F5F7FA;border-color:#E4E7ED;color:#C0C4CC;cursor:not-allowed}.el-range-editor.is-disabled:focus,.el-range-editor.is-disabled:hover{border-color:#E4E7ED}.el-range-editor.is-disabled input{background-color:#F5F7FA;color:#C0C4CC;cursor:not-allowed}.el-range-editor.is-disabled input::-webkit-input-placeholder{color:#C0C4CC}.el-range-editor.is-disabled input:-ms-input-placeholder{color:#C0C4CC}.el-range-editor.is-disabled input::-ms-input-placeholder{color:#C0C4CC}.el-range-editor.is-disabled input::placeholder{color:#C0C4CC}.el-range-editor.is-disabled .el-range-separator{color:#C0C4CC}.el-picker-panel{color:#606266;border:1px solid #E4E7ED;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);background:#FFF;border-radius:4px;line-height:30px;margin:5px 0}.el-popover,.el-time-panel{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-picker-panel__body-wrapper::after,.el-picker-panel__body::after{content:"";display:table;clear:both}.el-picker-panel__content{position:relative;margin:15px}.el-picker-panel__footer{border-top:1px solid #e4e4e4;padding:4px;text-align:right;background-color:#FFF;position:relative;font-size:0}.el-picker-panel__shortcut{display:block;width:100%;border:0;background-color:transparent;line-height:28px;font-size:14px;color:#606266;padding-left:12px;text-align:left;outline:0;cursor:pointer}.el-picker-panel__shortcut:hover{color:#409EFF}.el-picker-panel__shortcut.active{background-color:#e6f1fe;color:#409EFF}.el-picker-panel__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-picker-panel__btn[disabled]{color:#ccc;cursor:not-allowed}.el-picker-panel__icon-btn{font-size:12px;color:#303133;border:0;background:0 0;cursor:pointer;outline:0;margin-top:8px}.el-picker-panel__icon-btn:hover{color:#409EFF}.el-picker-panel__icon-btn.is-disabled{color:#bbb}.el-picker-panel__icon-btn.is-disabled:hover{cursor:not-allowed}.el-picker-panel__link-btn{vertical-align:middle}.el-picker-panel [slot=sidebar],.el-picker-panel__sidebar{position:absolute;top:0;bottom:0;width:110px;border-right:1px solid #e4e4e4;-webkit-box-sizing:border-box;box-sizing:border-box;padding-top:6px;background-color:#FFF;overflow:auto}.el-picker-panel [slot=sidebar]+.el-picker-panel__body,.el-picker-panel__sidebar+.el-picker-panel__body{margin-left:110px}.el-time-spinner.has-seconds .el-time-spinner__wrapper{width:33.3%}.el-time-spinner__wrapper{max-height:190px;overflow:auto;display:inline-block;width:50%;vertical-align:top;position:relative}.el-time-spinner__wrapper .el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default){padding-bottom:15px}.el-time-spinner__input.el-input .el-input__inner,.el-time-spinner__list{padding:0;text-align:center}.el-time-spinner__wrapper.is-arrow{-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;overflow:hidden}.el-time-spinner__wrapper.is-arrow .el-time-spinner__list{-webkit-transform:translateY(-32px);transform:translateY(-32px)}.el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.disabled):not(.active){background:#FFF;cursor:default}.el-time-spinner__arrow{font-size:12px;color:#909399;position:absolute;left:0;width:100%;z-index:1;text-align:center;height:30px;line-height:30px;cursor:pointer}.el-time-spinner__arrow:hover{color:#409EFF}.el-time-spinner__arrow.el-icon-arrow-up{top:10px}.el-time-spinner__arrow.el-icon-arrow-down{bottom:10px}.el-time-spinner__input.el-input{width:70%}.el-time-spinner__list{margin:0;list-style:none}.el-time-spinner__list::after,.el-time-spinner__list::before{content:'';display:block;width:100%;height:80px}.el-time-spinner__item{height:32px;line-height:32px;font-size:12px;color:#606266}.el-time-spinner__item:hover:not(.disabled):not(.active){background:#F5F7FA;cursor:pointer}.el-time-spinner__item.active:not(.disabled){color:#303133;font-weight:700}.el-time-spinner__item.disabled{color:#C0C4CC;cursor:not-allowed}.el-time-panel{margin:5px 0;border:1px solid #E4E7ED;background-color:#FFF;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:2px;position:absolute;width:180px;left:0;z-index:1000;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-box-sizing:content-box;box-sizing:content-box}.el-slider__button,.el-slider__button-wrapper{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.el-time-panel__content{font-size:0;position:relative;overflow:hidden}.el-time-panel__content::after,.el-time-panel__content::before{content:"";top:50%;position:absolute;margin-top:-15px;height:32px;z-index:-1;left:0;right:0;-webkit-box-sizing:border-box;box-sizing:border-box;padding-top:6px;text-align:left;border-top:1px solid #E4E7ED;border-bottom:1px solid #E4E7ED}.el-time-panel__content::after{left:50%;margin-left:12%;margin-right:12%}.el-time-panel__content::before{padding-left:50%;margin-right:12%;margin-left:12%}.el-time-panel__content.has-seconds::after{left:calc(100% / 3 * 2)}.el-time-panel__content.has-seconds::before{padding-left:calc(100% / 3)}.el-time-panel__footer{border-top:1px solid #e4e4e4;padding:4px;height:36px;line-height:25px;text-align:right;-webkit-box-sizing:border-box;box-sizing:border-box}.el-time-panel__btn{border:none;line-height:28px;padding:0 5px;margin:0 5px;cursor:pointer;background-color:transparent;outline:0;font-size:12px;color:#303133}.el-time-panel__btn.confirm{font-weight:800;color:#409EFF}.el-time-range-picker{width:354px;overflow:visible}.el-time-range-picker__content{position:relative;text-align:center;padding:10px}.el-time-range-picker__cell{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:4px 7px 7px;width:50%;display:inline-block}.el-time-range-picker__header{margin-bottom:5px;text-align:center;font-size:14px}.el-time-range-picker__body{border-radius:2px;border:1px solid #E4E7ED}.el-popover{position:absolute;background:#FFF;min-width:150px;border:1px solid #EBEEF5;padding:12px;z-index:2000;color:#606266;line-height:1.4;text-align:justify;font-size:14px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);word-break:break-all}.el-popover--plain{padding:18px 20px}.el-popover__title{color:#303133;font-size:16px;line-height:1;margin-bottom:12px}.v-modal-enter{-webkit-animation:v-modal-in .2s ease;animation:v-modal-in .2s ease}.v-modal-leave{-webkit-animation:v-modal-out .2s ease forwards;animation:v-modal-out .2s ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{100%{opacity:0}}.v-modal{position:fixed;left:0;top:0;width:100%;height:100%;opacity:.5;background:#000}.el-popup-parent--hidden{overflow:hidden}.el-message-box{display:inline-block;width:420px;padding-bottom:10px;vertical-align:middle;background-color:#FFF;border-radius:4px;border:1px solid #EBEEF5;font-size:18px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);text-align:left;overflow:hidden;-webkit-backface-visibility:hidden;backface-visibility:hidden}.el-message-box__wrapper{position:fixed;top:0;bottom:0;left:0;right:0;text-align:center}.el-message-box__wrapper::after{content:"";display:inline-block;height:100%;width:0;vertical-align:middle}.el-message-box__header{position:relative;padding:15px 15px 10px}.el-message-box__title{padding-left:0;margin-bottom:0;font-size:18px;line-height:1;color:#303133}.el-message-box__headerbtn{position:absolute;top:15px;right:15px;padding:0;border:none;outline:0;background:0 0;font-size:16px;cursor:pointer}.el-form-item.is-error .el-input__inner,.el-form-item.is-error .el-input__inner:focus,.el-form-item.is-error .el-textarea__inner,.el-form-item.is-error .el-textarea__inner:focus,.el-message-box__input input.invalid,.el-message-box__input input.invalid:focus{border-color:#F56C6C}.el-message-box__headerbtn .el-message-box__close{color:#909399}.el-message-box__headerbtn:focus .el-message-box__close,.el-message-box__headerbtn:hover .el-message-box__close{color:#409EFF}.el-message-box__content{padding:10px 15px;color:#606266;font-size:14px}.el-message-box__container{position:relative}.el-message-box__input{padding-top:15px}.el-message-box__status{position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);font-size:24px!important}.el-message-box__status::before{padding-left:1px}.el-message-box__status+.el-message-box__message{padding-left:36px;padding-right:12px}.el-message-box__status.el-icon-success{color:#67C23A}.el-message-box__status.el-icon-info{color:#909399}.el-message-box__status.el-icon-warning{color:#E6A23C}.el-message-box__status.el-icon-error{color:#F56C6C}.el-message-box__message{margin:0}.el-message-box__message p{margin:0;line-height:24px}.el-message-box__errormsg{color:#F56C6C;font-size:12px;min-height:18px;margin-top:2px}.el-message-box__btns{padding:5px 15px 0;text-align:right}.el-message-box__btns button:nth-child(2){margin-left:10px}.el-message-box__btns-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.el-message-box--center{padding-bottom:30px}.el-message-box--center .el-message-box__header{padding-top:30px}.el-message-box--center .el-message-box__title{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-message-box--center .el-message-box__status{position:relative;top:auto;padding-right:5px;text-align:center;-webkit-transform:translateY(-1px);transform:translateY(-1px)}.el-message-box--center .el-message-box__message{margin-left:0}.el-message-box--center .el-message-box__btns,.el-message-box--center .el-message-box__content{text-align:center}.el-message-box--center .el-message-box__content{padding-left:27px;padding-right:27px}.msgbox-fade-enter-active{-webkit-animation:msgbox-fade-in .3s;animation:msgbox-fade-in .3s}.msgbox-fade-leave-active{-webkit-animation:msgbox-fade-out .3s;animation:msgbox-fade-out .3s}@-webkit-keyframes msgbox-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes msgbox-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes msgbox-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes msgbox-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}.el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb::after,.el-breadcrumb::before{display:table;content:""}.el-breadcrumb::after{clear:both}.el-breadcrumb__separator{margin:0 9px;font-weight:700;color:#C0C4CC}.el-breadcrumb__separator[class*=icon]{margin:0 6px;font-weight:400}.el-breadcrumb__item{float:left}.el-breadcrumb__inner{color:#606266}.el-breadcrumb__inner a,.el-breadcrumb__inner.is-link{font-weight:700;text-decoration:none;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1);color:#303133}.el-breadcrumb__inner a:hover,.el-breadcrumb__inner.is-link:hover{color:#409EFF;cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover{font-weight:400;color:#606266;cursor:text}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}.el-form--label-left .el-form-item__label{text-align:left}.el-form--label-top .el-form-item__label{float:none;display:inline-block;text-align:left;padding:0 0 10px}.el-form--inline .el-form-item{display:inline-block;margin-right:10px;vertical-align:top}.el-form--inline .el-form-item__label{float:none;display:inline-block}.el-form--inline .el-form-item__content{display:inline-block;vertical-align:top}.el-form--inline.el-form--label-top .el-form-item__content{display:block}.el-form-item{margin-bottom:22px}.el-form-item::after,.el-form-item::before{display:table;content:""}.el-form-item::after{clear:both}.el-form-item .el-form-item{margin-bottom:0}.el-form-item--mini.el-form-item,.el-form-item--small.el-form-item{margin-bottom:18px}.el-form-item .el-input__validateIcon{display:none}.el-form-item--medium .el-form-item__content,.el-form-item--medium .el-form-item__label{line-height:36px}.el-form-item--small .el-form-item__content,.el-form-item--small .el-form-item__label{line-height:32px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--mini .el-form-item__content,.el-form-item--mini .el-form-item__label{line-height:28px}.el-form-item--mini .el-form-item__error{padding-top:1px}.el-form-item__label-wrap{float:left}.el-form-item__label-wrap .el-form-item__label{display:inline-block;float:none}.el-form-item__label{text-align:right;vertical-align:middle;float:left;font-size:14px;color:#606266;line-height:40px;padding:0 12px 0 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-form-item__content{line-height:40px;position:relative;font-size:14px}.el-form-item__content::after,.el-form-item__content::before{display:table;content:""}.el-form-item__content::after{clear:both}.el-form-item__content .el-input-group{vertical-align:top}.el-form-item__error{color:#F56C6C;font-size:12px;line-height:1;padding-top:4px;position:absolute;top:100%;left:0}.el-form-item__error--inline{position:relative;top:auto;left:auto;display:inline-block;margin-left:10px}.el-form-item.is-required:not(.is-no-asterisk) .el-form-item__label-wrap>.el-form-item__label:before,.el-form-item.is-required:not(.is-no-asterisk)>.el-form-item__label:before{content:'*';color:#F56C6C;margin-right:4px}.el-form-item.is-error .el-input-group__append .el-input__inner,.el-form-item.is-error .el-input-group__prepend .el-input__inner{border-color:transparent}.el-form-item.is-error .el-input__validateIcon{color:#F56C6C}.el-form-item--feedback .el-input__validateIcon{display:inline-block}.el-tabs__header{padding:0;position:relative;margin:0 0 15px}.el-tabs__active-bar{position:absolute;bottom:0;left:0;height:2px;background-color:#409EFF;z-index:1;-webkit-transition:-webkit-transform .3s cubic-bezier(.645,.045,.355,1);transition:-webkit-transform .3s cubic-bezier(.645,.045,.355,1);transition:transform .3s cubic-bezier(.645,.045,.355,1);transition:transform .3s cubic-bezier(.645,.045,.355,1),-webkit-transform .3s cubic-bezier(.645,.045,.355,1);list-style:none}.el-tabs__new-tab{float:right;border:1px solid #d3dce6;height:18px;width:18px;line-height:18px;margin:12px 0 9px 10px;border-radius:3px;text-align:center;font-size:12px;color:#d3dce6;cursor:pointer;-webkit-transition:all .15s;transition:all .15s}.el-collapse-item__arrow,.el-tabs__nav{-webkit-transition:-webkit-transform .3s}.el-tabs__new-tab .el-icon-plus{-webkit-transform:scale(.8,.8);transform:scale(.8,.8)}.el-tabs__new-tab:hover{color:#409EFF}.el-tabs__nav-wrap{overflow:hidden;margin-bottom:-1px;position:relative}.el-tabs__nav-wrap::after{content:"";position:absolute;left:0;bottom:0;width:100%;height:2px;background-color:#E4E7ED;z-index:1}.el-tabs--border-card>.el-tabs__header .el-tabs__nav-wrap::after,.el-tabs--card>.el-tabs__header .el-tabs__nav-wrap::after{content:none}.el-tabs__nav-wrap.is-scrollable{padding:0 20px;-webkit-box-sizing:border-box;box-sizing:border-box}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{position:absolute;cursor:pointer;line-height:44px;font-size:12px;color:#909399}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{white-space:nowrap;position:relative;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;float:left;z-index:2}.el-tabs__nav.is-stretch{min-width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.el-tabs__nav.is-stretch>*{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center}.el-tabs__item{padding:0 20px;height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;line-height:40px;display:inline-block;list-style:none;font-size:14px;font-weight:500;color:#303133;position:relative}.el-tabs__item:focus,.el-tabs__item:focus:active{outline:0}.el-tabs__item:focus.is-active.is-focus:not(:active){-webkit-box-shadow:0 0 2px 2px #409EFF inset;box-shadow:0 0 2px 2px #409EFF inset;border-radius:3px}.el-tabs__item .el-icon-close{border-radius:50%;text-align:center;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);margin-left:5px}.el-tabs__item .el-icon-close:before{-webkit-transform:scale(.9);transform:scale(.9);display:inline-block}.el-tabs__item .el-icon-close:hover{background-color:#C0C4CC;color:#FFF}.el-tabs__item.is-active{color:#409EFF}.el-tabs__item:hover{color:#409EFF;cursor:pointer}.el-tabs__item.is-disabled{color:#C0C4CC;cursor:default}.el-tabs__content{overflow:hidden;position:relative}.el-tabs--card>.el-tabs__header{border-bottom:1px solid #E4E7ED}.el-tabs--card>.el-tabs__header .el-tabs__nav{border:1px solid #E4E7ED;border-bottom:none;border-radius:4px 4px 0 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-tabs--card>.el-tabs__header .el-tabs__active-bar{display:none}.el-tabs--card>.el-tabs__header .el-tabs__item .el-icon-close{position:relative;font-size:12px;width:0;height:14px;vertical-align:middle;line-height:15px;overflow:hidden;top:-1px;right:-2px;-webkit-transform-origin:100% 50%;transform-origin:100% 50%}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .el-icon-close,.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .el-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid transparent;border-left:1px solid #E4E7ED;-webkit-transition:color .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1);transition:color .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1)}.el-tabs--card>.el-tabs__header .el-tabs__item:first-child{border-left:none}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border-bottom-color:#FFF}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.el-tabs--border-card{background:#FFF;border:1px solid #DCDFE6;-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04);box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04)}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:#F5F7FA;border-bottom:1px solid #E4E7ED;margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__item{-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);border:1px solid transparent;margin-top:-1px;color:#909399}.el-tabs--border-card>.el-tabs__header .el-tabs__item+.el-tabs__item,.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child{margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{color:#409EFF;background-color:#FFF;border-right-color:#DCDFE6;border-left-color:#DCDFE6}.el-tabs--border-card>.el-tabs__header .el-tabs__item:not(.is-disabled):hover{color:#409EFF}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-disabled{color:#C0C4CC}.el-tabs--border-card>.el-tabs__header .is-scrollable .el-tabs__item:first-child{margin-left:0}.el-tabs--bottom .el-tabs__item.is-bottom:nth-child(2),.el-tabs--bottom .el-tabs__item.is-top:nth-child(2),.el-tabs--top .el-tabs__item.is-bottom:nth-child(2),.el-tabs--top .el-tabs__item.is-top:nth-child(2){padding-left:0}.el-tabs--bottom .el-tabs__item.is-bottom:last-child,.el-tabs--bottom .el-tabs__item.is-top:last-child,.el-tabs--top .el-tabs__item.is-bottom:last-child,.el-tabs--top .el-tabs__item.is-top:last-child{padding-right:0}.el-tabs--bottom .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:20px}.el-tabs--bottom .el-tabs--left>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:last-child{padding-right:20px}.el-tabs--bottom .el-tabs__header.is-bottom{margin-bottom:0;margin-top:10px}.el-tabs--bottom.el-tabs--border-card .el-tabs__header.is-bottom{border-bottom:0;border-top:1px solid #DCDFE6}.el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap.is-bottom{margin-top:-1px;margin-bottom:0}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active){border:1px solid transparent}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom{margin:0 -1px -1px}.el-tabs--left,.el-tabs--right{overflow:hidden}.el-tabs--left .el-tabs__header.is-left,.el-tabs--left .el-tabs__header.is-right,.el-tabs--left .el-tabs__nav-scroll,.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__header.is-left,.el-tabs--right .el-tabs__header.is-right,.el-tabs--right .el-tabs__nav-scroll,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{height:100%}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__active-bar.is-right,.el-tabs--right .el-tabs__active-bar.is-left,.el-tabs--right .el-tabs__active-bar.is-right{top:0;bottom:auto;width:2px;height:auto}.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{margin-bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{height:30px;line-height:30px;width:100%;text-align:center;cursor:pointer}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i{-webkit-transform:rotateZ(90deg);transform:rotateZ(90deg)}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{left:auto;top:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next{right:auto;bottom:0}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__nav-wrap.is-left::after{right:0;left:auto}.el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--left .el-tabs__nav-wrap.is-right.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.el-tabs--left .el-tabs__nav-wrap.is-left::after,.el-tabs--left .el-tabs__nav-wrap.is-right::after,.el-tabs--right .el-tabs__nav-wrap.is-left::after,.el-tabs--right .el-tabs__nav-wrap.is-right::after{height:100%;width:2px;bottom:auto;top:0}.el-tabs--left .el-tabs__nav.is-left,.el-tabs--left .el-tabs__nav.is-right,.el-tabs--right .el-tabs__nav.is-left,.el-tabs--right .el-tabs__nav.is-right{float:none}.el-tabs--left .el-tabs__item.is-left,.el-tabs--left .el-tabs__item.is-right,.el-tabs--right .el-tabs__item.is-left,.el-tabs--right .el-tabs__item.is-right{display:block}.el-tabs--left.el-tabs--card .el-tabs__active-bar.is-left,.el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right{display:none}.el-tabs--left .el-tabs__header.is-left{float:left;margin-bottom:0;margin-right:10px}.el-tabs--left .el-tabs__nav-wrap.is-left{margin-right:-1px}.el-tabs--left .el-tabs__item.is-left{text-align:right}.el-tabs--left.el-tabs--card .el-tabs__item.is-left{border-left:none;border-right:1px solid #E4E7ED;border-bottom:none;border-top:1px solid #E4E7ED;text-align:left}.el-tabs--left.el-tabs--card .el-tabs__item.is-left:first-child{border-right:1px solid #E4E7ED;border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active{border:1px solid #E4E7ED;border-right-color:#fff;border-left:none;border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:first-child{border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:last-child{border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__nav{border-radius:4px 0 0 4px;border-bottom:1px solid #E4E7ED;border-right:none}.el-tabs--left.el-tabs--card .el-tabs__new-tab{float:none}.el-tabs--left.el-tabs--border-card .el-tabs__header.is-left{border-right:1px solid #dfe4ed}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left{border:1px solid transparent;margin:-1px 0 -1px -1px}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active{border-color:#d1dbe5 transparent}.el-tabs--right .el-tabs__header.is-right{float:right;margin-bottom:0;margin-left:10px}.el-tabs--right .el-tabs__nav-wrap.is-right{margin-left:-1px}.el-tabs--right .el-tabs__nav-wrap.is-right::after{left:0;right:auto}.el-tabs--right .el-tabs__active-bar.is-right{left:0}.el-tabs--right.el-tabs--card .el-tabs__item.is-right{border-bottom:none;border-top:1px solid #E4E7ED}.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child{border-left:1px solid #E4E7ED;border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active{border:1px solid #E4E7ED;border-left-color:#fff;border-right:none;border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:first-child{border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:last-child{border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__nav{border-radius:0 4px 4px 0;border-bottom:1px solid #E4E7ED;border-left:none}.el-tabs--right.el-tabs--border-card .el-tabs__header.is-right{border-left:1px solid #dfe4ed}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right{border:1px solid transparent;margin:-1px -1px -1px 0}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active{border-color:#d1dbe5 transparent}.slideInLeft-transition,.slideInRight-transition{display:inline-block}.slideInRight-enter{-webkit-animation:slideInRight-enter .3s;animation:slideInRight-enter .3s}.slideInRight-leave{position:absolute;left:0;right:0;-webkit-animation:slideInRight-leave .3s;animation:slideInRight-leave .3s}.slideInLeft-enter{-webkit-animation:slideInLeft-enter .3s;animation:slideInLeft-enter .3s}.slideInLeft-leave{position:absolute;left:0;right:0;-webkit-animation:slideInLeft-leave .3s;animation:slideInLeft-leave .3s}@-webkit-keyframes slideInRight-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInRight-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes slideInRight-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%);opacity:0}}@keyframes slideInRight-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%);opacity:0}}@-webkit-keyframes slideInLeft-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInLeft-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes slideInLeft-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}}@keyframes slideInLeft-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}}.el-tree{position:relative;cursor:default;background:#FFF;color:#606266}.el-tree__empty-block{position:relative;min-height:60px;text-align:center;width:100%;height:100%}.el-tree__empty-text{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);color:#909399;font-size:14px}.el-tree__drop-indicator{position:absolute;left:0;right:0;height:1px;background-color:#409EFF}.el-tree-node{white-space:nowrap;outline:0}.el-tree-node:focus>.el-tree-node__content{background-color:#F5F7FA}.el-tree-node.is-drop-inner>.el-tree-node__content .el-tree-node__label{background-color:#409EFF;color:#fff}.el-tree-node__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:26px;cursor:pointer}.el-tree-node__content>.el-tree-node__expand-icon{padding:6px}.el-tree-node__content>label.el-checkbox{margin-right:8px}.el-tree-node__content:hover{background-color:#F5F7FA}.el-tree.is-dragging .el-tree-node__content{cursor:move}.el-tree.is-dragging.is-drop-not-allow .el-tree-node__content{cursor:not-allowed}.el-tree-node__expand-icon{cursor:pointer;color:#C0C4CC;font-size:12px;-webkit-transform:rotate(0);transform:rotate(0);-webkit-transition:-webkit-transform .3s ease-in-out;transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-transform .3s ease-in-out}.el-tree-node__expand-icon.expanded{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-tree-node__expand-icon.is-leaf{color:transparent;cursor:default}.el-tree-node__label{font-size:14px}.el-tree-node__loading-icon{margin-right:8px;font-size:14px;color:#C0C4CC}.el-tree-node>.el-tree-node__children{overflow:hidden;background-color:transparent}.el-tree-node.is-expanded>.el-tree-node__children{display:block}.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{background-color:#f0f7ff}.el-alert{width:100%;padding:8px 16px;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;position:relative;background-color:#FFF;overflow:hidden;opacity:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-transition:opacity .2s;transition:opacity .2s}.el-alert.is-light .el-alert__closebtn{color:#C0C4CC}.el-alert.is-dark .el-alert__closebtn,.el-alert.is-dark .el-alert__description{color:#FFF}.el-alert.is-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-alert--success.is-light{background-color:#f0f9eb;color:#67C23A}.el-alert--success.is-light .el-alert__description{color:#67C23A}.el-alert--success.is-dark{background-color:#67C23A;color:#FFF}.el-alert--info.is-light{background-color:#f4f4f5;color:#909399}.el-alert--info.is-dark{background-color:#909399;color:#FFF}.el-alert--info .el-alert__description{color:#909399}.el-alert--warning.is-light{background-color:#fdf6ec;color:#E6A23C}.el-alert--warning.is-light .el-alert__description{color:#E6A23C}.el-alert--warning.is-dark{background-color:#E6A23C;color:#FFF}.el-alert--error.is-light{background-color:#fef0f0;color:#F56C6C}.el-alert--error.is-light .el-alert__description{color:#F56C6C}.el-alert--error.is-dark{background-color:#F56C6C;color:#FFF}.el-alert__content{display:table-cell;padding:0 8px}.el-alert__icon{font-size:16px;width:16px}.el-alert__icon.is-big{font-size:28px;width:28px}.el-alert__title{font-size:13px;line-height:18px}.el-alert__title.is-bold{font-weight:700}.el-alert .el-alert__description{font-size:12px;margin:5px 0 0}.el-alert__closebtn{font-size:12px;opacity:1;position:absolute;top:12px;right:15px;cursor:pointer}.el-alert-fade-enter,.el-alert-fade-leave-active,.el-loading-fade-enter,.el-loading-fade-leave-active,.el-notification-fade-leave-active{opacity:0}.el-alert__closebtn.is-customed{font-style:normal;font-size:13px;top:9px}.el-notification{display:-webkit-box;display:-ms-flexbox;display:flex;width:330px;padding:14px 26px 14px 13px;border-radius:8px;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid #EBEEF5;position:fixed;background-color:#FFF;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-transition:opacity .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;transition:opacity .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;transition:opacity .3s,transform .3s,left .3s,right .3s,top .4s,bottom .3s;transition:opacity .3s,transform .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;overflow:hidden}.el-notification.right{right:16px}.el-notification.left{left:16px}.el-notification__group{margin-left:13px;margin-right:8px}.el-notification__title{font-weight:700;font-size:16px;color:#303133;margin:0}.el-notification__content{font-size:14px;line-height:21px;margin:6px 0 0;color:#606266;text-align:justify}.el-notification__content p{margin:0}.el-notification__icon{height:24px;width:24px;font-size:24px}.el-notification__closeBtn{position:absolute;top:18px;right:15px;cursor:pointer;color:#909399;font-size:16px}.el-notification__closeBtn:hover{color:#606266}.el-notification .el-icon-success{color:#67C23A}.el-notification .el-icon-error{color:#F56C6C}.el-notification .el-icon-info{color:#909399}.el-notification .el-icon-warning{color:#E6A23C}.el-notification-fade-enter.right{right:0;-webkit-transform:translateX(100%);transform:translateX(100%)}.el-notification-fade-enter.left{left:0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}.el-input-number{position:relative;display:inline-block;width:180px;line-height:38px}.el-input-number .el-input{display:block}.el-input-number .el-input__inner{-webkit-appearance:none;padding-left:50px;padding-right:50px;text-align:center}.el-input-number__decrease,.el-input-number__increase{position:absolute;z-index:1;top:1px;width:40px;height:auto;text-align:center;background:#F5F7FA;color:#606266;cursor:pointer;font-size:13px}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:#409EFF}.el-input-number__decrease:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled),.el-input-number__increase:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled){border-color:#409EFF}.el-input-number__decrease.is-disabled,.el-input-number__increase.is-disabled{color:#C0C4CC;cursor:not-allowed}.el-input-number__increase{right:1px;border-radius:0 4px 4px 0;border-left:1px solid #DCDFE6}.el-input-number__decrease{left:1px;border-radius:4px 0 0 4px;border-right:1px solid #DCDFE6}.el-input-number.is-disabled .el-input-number__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:#E4E7ED;color:#E4E7ED}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:#E4E7ED;cursor:not-allowed}.el-input-number--medium{width:200px;line-height:34px}.el-input-number--medium .el-input-number__decrease,.el-input-number--medium .el-input-number__increase{width:36px;font-size:14px}.el-input-number--medium .el-input__inner{padding-left:43px;padding-right:43px}.el-input-number--small{width:130px;line-height:30px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{width:32px;font-size:13px}.el-input-number--small .el-input-number__decrease [class*=el-icon],.el-input-number--small .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.9);transform:scale(.9)}.el-input-number--small .el-input__inner{padding-left:39px;padding-right:39px}.el-input-number--mini{width:130px;line-height:26px}.el-input-number--mini .el-input-number__decrease,.el-input-number--mini .el-input-number__increase{width:28px;font-size:12px}.el-input-number--mini .el-input-number__decrease [class*=el-icon],.el-input-number--mini .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.8);transform:scale(.8)}.el-input-number--mini .el-input__inner{padding-left:35px;padding-right:35px}.el-input-number.is-without-controls .el-input__inner{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__inner{padding-left:15px;padding-right:50px}.el-input-number.is-controls-right .el-input-number__decrease,.el-input-number.is-controls-right .el-input-number__increase{height:auto;line-height:19px}.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.8);transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-radius:0 4px 0 0;border-bottom:1px solid #DCDFE6}.el-input-number.is-controls-right .el-input-number__decrease{right:1px;bottom:1px;top:auto;left:auto;border-right:none;border-left:1px solid #DCDFE6;border-radius:0 0 4px}.el-input-number.is-controls-right[class*=medium] [class*=decrease],.el-input-number.is-controls-right[class*=medium] [class*=increase]{line-height:17px}.el-input-number.is-controls-right[class*=small] [class*=decrease],.el-input-number.is-controls-right[class*=small] [class*=increase]{line-height:15px}.el-input-number.is-controls-right[class*=mini] [class*=decrease],.el-input-number.is-controls-right[class*=mini] [class*=increase]{line-height:13px}.el-tooltip__popper{position:absolute;border-radius:4px;padding:10px;z-index:2000;font-size:12px;line-height:1.2;min-width:10px;word-wrap:break-word}.el-tooltip__popper .popper__arrow,.el-tooltip__popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-tooltip__popper .popper__arrow{border-width:6px}.el-tooltip__popper .popper__arrow::after{content:" ";border-width:5px}.el-progress-bar__inner::after,.el-row::after,.el-row::before,.el-slider::after,.el-slider::before,.el-slider__button-wrapper::after,.el-upload-cover::after{content:""}.el-tooltip__popper[x-placement^=top]{margin-bottom:12px}.el-tooltip__popper[x-placement^=top] .popper__arrow{bottom:-6px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-5px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=bottom]{margin-top:12px}.el-tooltip__popper[x-placement^=bottom] .popper__arrow{top:-6px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-5px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=right]{margin-left:12px}.el-tooltip__popper[x-placement^=right] .popper__arrow{left:-6px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=right] .popper__arrow::after{bottom:-5px;left:1px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=left]{margin-right:12px}.el-tooltip__popper[x-placement^=left] .popper__arrow{right:-6px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-5px;margin-left:-5px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper.is-dark{background:#303133;color:#FFF}.el-tooltip__popper.is-light{background:#FFF;border:1px solid #303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow{border-top-color:#303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow::after{border-top-color:#FFF}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow{border-bottom-color:#303133}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow::after{border-bottom-color:#FFF}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow{border-left-color:#303133}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow::after{border-left-color:#FFF}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow{border-right-color:#303133}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow::after{border-right-color:#FFF}.el-slider::after,.el-slider::before{display:table}.el-slider__button-wrapper .el-tooltip,.el-slider__button-wrapper::after{vertical-align:middle;display:inline-block}.el-slider::after{clear:both}.el-slider__runway{width:100%;height:6px;margin:16px 0;background-color:#E4E7ED;border-radius:3px;position:relative;cursor:pointer;vertical-align:middle}.el-slider__runway.show-input{margin-right:160px;width:auto}.el-slider__runway.disabled{cursor:default}.el-slider__runway.disabled .el-slider__bar{background-color:#C0C4CC}.el-slider__runway.disabled .el-slider__button{border-color:#C0C4CC}.el-slider__runway.disabled .el-slider__button-wrapper.dragging,.el-slider__runway.disabled .el-slider__button-wrapper.hover,.el-slider__runway.disabled .el-slider__button-wrapper:hover{cursor:not-allowed}.el-slider__runway.disabled .el-slider__button.dragging,.el-slider__runway.disabled .el-slider__button.hover,.el-slider__runway.disabled .el-slider__button:hover{-webkit-transform:scale(1);transform:scale(1);cursor:not-allowed}.el-slider__button-wrapper,.el-slider__stop{-webkit-transform:translateX(-50%);position:absolute}.el-slider__input{float:right;margin-top:3px;width:130px}.el-slider__input.el-input-number--mini{margin-top:5px}.el-slider__input.el-input-number--medium{margin-top:0}.el-slider__input.el-input-number--large{margin-top:-2px}.el-slider__bar{height:6px;background-color:#409EFF;border-top-left-radius:3px;border-bottom-left-radius:3px;position:absolute}.el-slider__button-wrapper{height:36px;width:36px;z-index:1001;top:-15px;transform:translateX(-50%);background-color:transparent;text-align:center;user-select:none;line-height:normal}.el-slider__button-wrapper::after{height:100%}.el-slider__button-wrapper.hover,.el-slider__button-wrapper:hover{cursor:-webkit-grab;cursor:grab}.el-slider__button-wrapper.dragging{cursor:-webkit-grabbing;cursor:grabbing}.el-slider__button{width:16px;height:16px;border:2px solid #409EFF;background-color:#FFF;border-radius:50%;-webkit-transition:.2s;transition:.2s;user-select:none}.el-image-viewer__btn,.el-step__icon-inner{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.el-slider__button.dragging,.el-slider__button.hover,.el-slider__button:hover{-webkit-transform:scale(1.2);transform:scale(1.2)}.el-slider__button.hover,.el-slider__button:hover{cursor:-webkit-grab;cursor:grab}.el-slider__button.dragging{cursor:-webkit-grabbing;cursor:grabbing}.el-slider__stop{height:6px;width:6px;border-radius:100%;background-color:#FFF;transform:translateX(-50%)}.el-slider__marks{top:0;left:12px;width:18px;height:100%}.el-slider__marks-text{position:absolute;-webkit-transform:translateX(-50%);transform:translateX(-50%);font-size:14px;color:#909399;margin-top:15px}.el-slider.is-vertical{position:relative}.el-slider.is-vertical .el-slider__runway{width:6px;height:100%;margin:0 16px}.el-slider.is-vertical .el-slider__bar{width:6px;height:auto;border-radius:0 0 3px 3px}.el-slider.is-vertical .el-slider__button-wrapper{top:auto;left:-15px;-webkit-transform:translateY(50%);transform:translateY(50%)}.el-slider.is-vertical .el-slider__stop{-webkit-transform:translateY(50%);transform:translateY(50%)}.el-slider.is-vertical.el-slider--with-input{padding-bottom:58px}.el-slider.is-vertical.el-slider--with-input .el-slider__input{overflow:visible;float:none;position:absolute;bottom:22px;width:36px;margin-top:15px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input__inner{text-align:center;padding-left:5px;padding-right:5px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{top:32px;margin-top:-1px;border:1px solid #DCDFE6;line-height:20px;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease{width:18px;right:18px;border-bottom-left-radius:4px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{width:19px;border-bottom-right-radius:4px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase~.el-input .el-input__inner{border-bottom-left-radius:0;border-bottom-right-radius:0}.el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__increase{border-color:#C0C4CC}.el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__increase{border-color:#409EFF}.el-slider.is-vertical .el-slider__marks-text{margin-top:0;left:15px;-webkit-transform:translateY(50%);transform:translateY(50%)}.el-loading-parent--relative{position:relative!important}.el-loading-parent--hidden{overflow:hidden!important}.el-loading-mask{position:absolute;z-index:2000;background-color:rgba(255,255,255,.9);margin:0;top:0;right:0;bottom:0;left:0;-webkit-transition:opacity .3s;transition:opacity .3s}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:-25px}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{height:50px;width:50px}.el-loading-spinner{top:50%;margin-top:-21px;width:100%;text-align:center;position:absolute}.el-col-pull-0,.el-col-pull-1,.el-col-pull-10,.el-col-pull-11,.el-col-pull-13,.el-col-pull-14,.el-col-pull-15,.el-col-pull-16,.el-col-pull-17,.el-col-pull-18,.el-col-pull-19,.el-col-pull-2,.el-col-pull-20,.el-col-pull-21,.el-col-pull-22,.el-col-pull-23,.el-col-pull-24,.el-col-pull-3,.el-col-pull-4,.el-col-pull-5,.el-col-pull-6,.el-col-pull-7,.el-col-pull-8,.el-col-pull-9,.el-col-push-0,.el-col-push-1,.el-col-push-10,.el-col-push-11,.el-col-push-12,.el-col-push-13,.el-col-push-14,.el-col-push-15,.el-col-push-16,.el-col-push-17,.el-col-push-18,.el-col-push-19,.el-col-push-2,.el-col-push-20,.el-col-push-21,.el-col-push-22,.el-col-push-23,.el-col-push-24,.el-col-push-3,.el-col-push-4,.el-col-push-5,.el-col-push-6,.el-col-push-7,.el-col-push-8,.el-col-push-9,.el-row{position:relative}.el-loading-spinner .el-loading-text{color:#409EFF;margin:3px 0;font-size:14px}.el-loading-spinner .circular{height:42px;width:42px;-webkit-animation:loading-rotate 2s linear infinite;animation:loading-rotate 2s linear infinite}.el-loading-spinner .path{-webkit-animation:loading-dash 1.5s ease-in-out infinite;animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:#409EFF;stroke-linecap:round}.el-loading-spinner i{color:#409EFF}@-webkit-keyframes loading-rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes loading-rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}100%{stroke-dasharray:90,150;stroke-dashoffset:-120px}}@keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}100%{stroke-dasharray:90,150;stroke-dashoffset:-120px}}.el-row{-webkit-box-sizing:border-box;box-sizing:border-box}.el-row::after,.el-row::before{display:table}.el-row::after{clear:both}.el-row--flex{display:-webkit-box;display:-ms-flexbox;display:flex}.el-col-0,.el-row--flex:after,.el-row--flex:before{display:none}.el-row--flex.is-justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-row--flex.is-justify-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.el-row--flex.is-justify-space-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.el-row--flex.is-justify-space-around{-ms-flex-pack:distribute;justify-content:space-around}.el-row--flex.is-align-middle{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-row--flex.is-align-bottom{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}[class*=el-col-]{float:left;-webkit-box-sizing:border-box;box-sizing:border-box}.el-upload--picture-card,.el-upload-dragger{-webkit-box-sizing:border-box;cursor:pointer}.el-col-0{width:0%}.el-col-offset-0{margin-left:0}.el-col-pull-0{right:0}.el-col-push-0{left:0}.el-col-1{width:4.16667%}.el-col-offset-1{margin-left:4.16667%}.el-col-pull-1{right:4.16667%}.el-col-push-1{left:4.16667%}.el-col-2{width:8.33333%}.el-col-offset-2{margin-left:8.33333%}.el-col-pull-2{right:8.33333%}.el-col-push-2{left:8.33333%}.el-col-3{width:12.5%}.el-col-offset-3{margin-left:12.5%}.el-col-pull-3{right:12.5%}.el-col-push-3{left:12.5%}.el-col-4{width:16.66667%}.el-col-offset-4{margin-left:16.66667%}.el-col-pull-4{right:16.66667%}.el-col-push-4{left:16.66667%}.el-col-5{width:20.83333%}.el-col-offset-5{margin-left:20.83333%}.el-col-pull-5{right:20.83333%}.el-col-push-5{left:20.83333%}.el-col-6{width:25%}.el-col-offset-6{margin-left:25%}.el-col-pull-6{right:25%}.el-col-push-6{left:25%}.el-col-7{width:29.16667%}.el-col-offset-7{margin-left:29.16667%}.el-col-pull-7{right:29.16667%}.el-col-push-7{left:29.16667%}.el-col-8{width:33.33333%}.el-col-offset-8{margin-left:33.33333%}.el-col-pull-8{right:33.33333%}.el-col-push-8{left:33.33333%}.el-col-9{width:37.5%}.el-col-offset-9{margin-left:37.5%}.el-col-pull-9{right:37.5%}.el-col-push-9{left:37.5%}.el-col-10{width:41.66667%}.el-col-offset-10{margin-left:41.66667%}.el-col-pull-10{right:41.66667%}.el-col-push-10{left:41.66667%}.el-col-11{width:45.83333%}.el-col-offset-11{margin-left:45.83333%}.el-col-pull-11{right:45.83333%}.el-col-push-11{left:45.83333%}.el-col-12{width:50%}.el-col-offset-12{margin-left:50%}.el-col-pull-12{position:relative;right:50%}.el-col-push-12{left:50%}.el-col-13{width:54.16667%}.el-col-offset-13{margin-left:54.16667%}.el-col-pull-13{right:54.16667%}.el-col-push-13{left:54.16667%}.el-col-14{width:58.33333%}.el-col-offset-14{margin-left:58.33333%}.el-col-pull-14{right:58.33333%}.el-col-push-14{left:58.33333%}.el-col-15{width:62.5%}.el-col-offset-15{margin-left:62.5%}.el-col-pull-15{right:62.5%}.el-col-push-15{left:62.5%}.el-col-16{width:66.66667%}.el-col-offset-16{margin-left:66.66667%}.el-col-pull-16{right:66.66667%}.el-col-push-16{left:66.66667%}.el-col-17{width:70.83333%}.el-col-offset-17{margin-left:70.83333%}.el-col-pull-17{right:70.83333%}.el-col-push-17{left:70.83333%}.el-col-18{width:75%}.el-col-offset-18{margin-left:75%}.el-col-pull-18{right:75%}.el-col-push-18{left:75%}.el-col-19{width:79.16667%}.el-col-offset-19{margin-left:79.16667%}.el-col-pull-19{right:79.16667%}.el-col-push-19{left:79.16667%}.el-col-20{width:83.33333%}.el-col-offset-20{margin-left:83.33333%}.el-col-pull-20{right:83.33333%}.el-col-push-20{left:83.33333%}.el-col-21{width:87.5%}.el-col-offset-21{margin-left:87.5%}.el-col-pull-21{right:87.5%}.el-col-push-21{left:87.5%}.el-col-22{width:91.66667%}.el-col-offset-22{margin-left:91.66667%}.el-col-pull-22{right:91.66667%}.el-col-push-22{left:91.66667%}.el-col-23{width:95.83333%}.el-col-offset-23{margin-left:95.83333%}.el-col-pull-23{right:95.83333%}.el-col-push-23{left:95.83333%}.el-col-24{width:100%}.el-col-offset-24{margin-left:100%}.el-col-pull-24{right:100%}.el-col-push-24{left:100%}@media only screen and (max-width:767px){.el-col-xs-0{display:none;width:0%}.el-col-xs-offset-0{margin-left:0}.el-col-xs-pull-0{position:relative;right:0}.el-col-xs-push-0{position:relative;left:0}.el-col-xs-1{width:4.16667%}.el-col-xs-offset-1{margin-left:4.16667%}.el-col-xs-pull-1{position:relative;right:4.16667%}.el-col-xs-push-1{position:relative;left:4.16667%}.el-col-xs-2{width:8.33333%}.el-col-xs-offset-2{margin-left:8.33333%}.el-col-xs-pull-2{position:relative;right:8.33333%}.el-col-xs-push-2{position:relative;left:8.33333%}.el-col-xs-3{width:12.5%}.el-col-xs-offset-3{margin-left:12.5%}.el-col-xs-pull-3{position:relative;right:12.5%}.el-col-xs-push-3{position:relative;left:12.5%}.el-col-xs-4{width:16.66667%}.el-col-xs-offset-4{margin-left:16.66667%}.el-col-xs-pull-4{position:relative;right:16.66667%}.el-col-xs-push-4{position:relative;left:16.66667%}.el-col-xs-5{width:20.83333%}.el-col-xs-offset-5{margin-left:20.83333%}.el-col-xs-pull-5{position:relative;right:20.83333%}.el-col-xs-push-5{position:relative;left:20.83333%}.el-col-xs-6{width:25%}.el-col-xs-offset-6{margin-left:25%}.el-col-xs-pull-6{position:relative;right:25%}.el-col-xs-push-6{position:relative;left:25%}.el-col-xs-7{width:29.16667%}.el-col-xs-offset-7{margin-left:29.16667%}.el-col-xs-pull-7{position:relative;right:29.16667%}.el-col-xs-push-7{position:relative;left:29.16667%}.el-col-xs-8{width:33.33333%}.el-col-xs-offset-8{margin-left:33.33333%}.el-col-xs-pull-8{position:relative;right:33.33333%}.el-col-xs-push-8{position:relative;left:33.33333%}.el-col-xs-9{width:37.5%}.el-col-xs-offset-9{margin-left:37.5%}.el-col-xs-pull-9{position:relative;right:37.5%}.el-col-xs-push-9{position:relative;left:37.5%}.el-col-xs-10{width:41.66667%}.el-col-xs-offset-10{margin-left:41.66667%}.el-col-xs-pull-10{position:relative;right:41.66667%}.el-col-xs-push-10{position:relative;left:41.66667%}.el-col-xs-11{width:45.83333%}.el-col-xs-offset-11{margin-left:45.83333%}.el-col-xs-pull-11{position:relative;right:45.83333%}.el-col-xs-push-11{position:relative;left:45.83333%}.el-col-xs-12{width:50%}.el-col-xs-offset-12{margin-left:50%}.el-col-xs-pull-12{position:relative;right:50%}.el-col-xs-push-12{position:relative;left:50%}.el-col-xs-13{width:54.16667%}.el-col-xs-offset-13{margin-left:54.16667%}.el-col-xs-pull-13{position:relative;right:54.16667%}.el-col-xs-push-13{position:relative;left:54.16667%}.el-col-xs-14{width:58.33333%}.el-col-xs-offset-14{margin-left:58.33333%}.el-col-xs-pull-14{position:relative;right:58.33333%}.el-col-xs-push-14{position:relative;left:58.33333%}.el-col-xs-15{width:62.5%}.el-col-xs-offset-15{margin-left:62.5%}.el-col-xs-pull-15{position:relative;right:62.5%}.el-col-xs-push-15{position:relative;left:62.5%}.el-col-xs-16{width:66.66667%}.el-col-xs-offset-16{margin-left:66.66667%}.el-col-xs-pull-16{position:relative;right:66.66667%}.el-col-xs-push-16{position:relative;left:66.66667%}.el-col-xs-17{width:70.83333%}.el-col-xs-offset-17{margin-left:70.83333%}.el-col-xs-pull-17{position:relative;right:70.83333%}.el-col-xs-push-17{position:relative;left:70.83333%}.el-col-xs-18{width:75%}.el-col-xs-offset-18{margin-left:75%}.el-col-xs-pull-18{position:relative;right:75%}.el-col-xs-push-18{position:relative;left:75%}.el-col-xs-19{width:79.16667%}.el-col-xs-offset-19{margin-left:79.16667%}.el-col-xs-pull-19{position:relative;right:79.16667%}.el-col-xs-push-19{position:relative;left:79.16667%}.el-col-xs-20{width:83.33333%}.el-col-xs-offset-20{margin-left:83.33333%}.el-col-xs-pull-20{position:relative;right:83.33333%}.el-col-xs-push-20{position:relative;left:83.33333%}.el-col-xs-21{width:87.5%}.el-col-xs-offset-21{margin-left:87.5%}.el-col-xs-pull-21{position:relative;right:87.5%}.el-col-xs-push-21{position:relative;left:87.5%}.el-col-xs-22{width:91.66667%}.el-col-xs-offset-22{margin-left:91.66667%}.el-col-xs-pull-22{position:relative;right:91.66667%}.el-col-xs-push-22{position:relative;left:91.66667%}.el-col-xs-23{width:95.83333%}.el-col-xs-offset-23{margin-left:95.83333%}.el-col-xs-pull-23{position:relative;right:95.83333%}.el-col-xs-push-23{position:relative;left:95.83333%}.el-col-xs-24{width:100%}.el-col-xs-offset-24{margin-left:100%}.el-col-xs-pull-24{position:relative;right:100%}.el-col-xs-push-24{position:relative;left:100%}}@media only screen and (min-width:768px){.el-col-sm-0{display:none;width:0%}.el-col-sm-offset-0{margin-left:0}.el-col-sm-pull-0{position:relative;right:0}.el-col-sm-push-0{position:relative;left:0}.el-col-sm-1{width:4.16667%}.el-col-sm-offset-1{margin-left:4.16667%}.el-col-sm-pull-1{position:relative;right:4.16667%}.el-col-sm-push-1{position:relative;left:4.16667%}.el-col-sm-2{width:8.33333%}.el-col-sm-offset-2{margin-left:8.33333%}.el-col-sm-pull-2{position:relative;right:8.33333%}.el-col-sm-push-2{position:relative;left:8.33333%}.el-col-sm-3{width:12.5%}.el-col-sm-offset-3{margin-left:12.5%}.el-col-sm-pull-3{position:relative;right:12.5%}.el-col-sm-push-3{position:relative;left:12.5%}.el-col-sm-4{width:16.66667%}.el-col-sm-offset-4{margin-left:16.66667%}.el-col-sm-pull-4{position:relative;right:16.66667%}.el-col-sm-push-4{position:relative;left:16.66667%}.el-col-sm-5{width:20.83333%}.el-col-sm-offset-5{margin-left:20.83333%}.el-col-sm-pull-5{position:relative;right:20.83333%}.el-col-sm-push-5{position:relative;left:20.83333%}.el-col-sm-6{width:25%}.el-col-sm-offset-6{margin-left:25%}.el-col-sm-pull-6{position:relative;right:25%}.el-col-sm-push-6{position:relative;left:25%}.el-col-sm-7{width:29.16667%}.el-col-sm-offset-7{margin-left:29.16667%}.el-col-sm-pull-7{position:relative;right:29.16667%}.el-col-sm-push-7{position:relative;left:29.16667%}.el-col-sm-8{width:33.33333%}.el-col-sm-offset-8{margin-left:33.33333%}.el-col-sm-pull-8{position:relative;right:33.33333%}.el-col-sm-push-8{position:relative;left:33.33333%}.el-col-sm-9{width:37.5%}.el-col-sm-offset-9{margin-left:37.5%}.el-col-sm-pull-9{position:relative;right:37.5%}.el-col-sm-push-9{position:relative;left:37.5%}.el-col-sm-10{width:41.66667%}.el-col-sm-offset-10{margin-left:41.66667%}.el-col-sm-pull-10{position:relative;right:41.66667%}.el-col-sm-push-10{position:relative;left:41.66667%}.el-col-sm-11{width:45.83333%}.el-col-sm-offset-11{margin-left:45.83333%}.el-col-sm-pull-11{position:relative;right:45.83333%}.el-col-sm-push-11{position:relative;left:45.83333%}.el-col-sm-12{width:50%}.el-col-sm-offset-12{margin-left:50%}.el-col-sm-pull-12{position:relative;right:50%}.el-col-sm-push-12{position:relative;left:50%}.el-col-sm-13{width:54.16667%}.el-col-sm-offset-13{margin-left:54.16667%}.el-col-sm-pull-13{position:relative;right:54.16667%}.el-col-sm-push-13{position:relative;left:54.16667%}.el-col-sm-14{width:58.33333%}.el-col-sm-offset-14{margin-left:58.33333%}.el-col-sm-pull-14{position:relative;right:58.33333%}.el-col-sm-push-14{position:relative;left:58.33333%}.el-col-sm-15{width:62.5%}.el-col-sm-offset-15{margin-left:62.5%}.el-col-sm-pull-15{position:relative;right:62.5%}.el-col-sm-push-15{position:relative;left:62.5%}.el-col-sm-16{width:66.66667%}.el-col-sm-offset-16{margin-left:66.66667%}.el-col-sm-pull-16{position:relative;right:66.66667%}.el-col-sm-push-16{position:relative;left:66.66667%}.el-col-sm-17{width:70.83333%}.el-col-sm-offset-17{margin-left:70.83333%}.el-col-sm-pull-17{position:relative;right:70.83333%}.el-col-sm-push-17{position:relative;left:70.83333%}.el-col-sm-18{width:75%}.el-col-sm-offset-18{margin-left:75%}.el-col-sm-pull-18{position:relative;right:75%}.el-col-sm-push-18{position:relative;left:75%}.el-col-sm-19{width:79.16667%}.el-col-sm-offset-19{margin-left:79.16667%}.el-col-sm-pull-19{position:relative;right:79.16667%}.el-col-sm-push-19{position:relative;left:79.16667%}.el-col-sm-20{width:83.33333%}.el-col-sm-offset-20{margin-left:83.33333%}.el-col-sm-pull-20{position:relative;right:83.33333%}.el-col-sm-push-20{position:relative;left:83.33333%}.el-col-sm-21{width:87.5%}.el-col-sm-offset-21{margin-left:87.5%}.el-col-sm-pull-21{position:relative;right:87.5%}.el-col-sm-push-21{position:relative;left:87.5%}.el-col-sm-22{width:91.66667%}.el-col-sm-offset-22{margin-left:91.66667%}.el-col-sm-pull-22{position:relative;right:91.66667%}.el-col-sm-push-22{position:relative;left:91.66667%}.el-col-sm-23{width:95.83333%}.el-col-sm-offset-23{margin-left:95.83333%}.el-col-sm-pull-23{position:relative;right:95.83333%}.el-col-sm-push-23{position:relative;left:95.83333%}.el-col-sm-24{width:100%}.el-col-sm-offset-24{margin-left:100%}.el-col-sm-pull-24{position:relative;right:100%}.el-col-sm-push-24{position:relative;left:100%}}@media only screen and (min-width:992px){.el-col-md-0{display:none;width:0%}.el-col-md-offset-0{margin-left:0}.el-col-md-pull-0{position:relative;right:0}.el-col-md-push-0{position:relative;left:0}.el-col-md-1{width:4.16667%}.el-col-md-offset-1{margin-left:4.16667%}.el-col-md-pull-1{position:relative;right:4.16667%}.el-col-md-push-1{position:relative;left:4.16667%}.el-col-md-2{width:8.33333%}.el-col-md-offset-2{margin-left:8.33333%}.el-col-md-pull-2{position:relative;right:8.33333%}.el-col-md-push-2{position:relative;left:8.33333%}.el-col-md-3{width:12.5%}.el-col-md-offset-3{margin-left:12.5%}.el-col-md-pull-3{position:relative;right:12.5%}.el-col-md-push-3{position:relative;left:12.5%}.el-col-md-4{width:16.66667%}.el-col-md-offset-4{margin-left:16.66667%}.el-col-md-pull-4{position:relative;right:16.66667%}.el-col-md-push-4{position:relative;left:16.66667%}.el-col-md-5{width:20.83333%}.el-col-md-offset-5{margin-left:20.83333%}.el-col-md-pull-5{position:relative;right:20.83333%}.el-col-md-push-5{position:relative;left:20.83333%}.el-col-md-6{width:25%}.el-col-md-offset-6{margin-left:25%}.el-col-md-pull-6{position:relative;right:25%}.el-col-md-push-6{position:relative;left:25%}.el-col-md-7{width:29.16667%}.el-col-md-offset-7{margin-left:29.16667%}.el-col-md-pull-7{position:relative;right:29.16667%}.el-col-md-push-7{position:relative;left:29.16667%}.el-col-md-8{width:33.33333%}.el-col-md-offset-8{margin-left:33.33333%}.el-col-md-pull-8{position:relative;right:33.33333%}.el-col-md-push-8{position:relative;left:33.33333%}.el-col-md-9{width:37.5%}.el-col-md-offset-9{margin-left:37.5%}.el-col-md-pull-9{position:relative;right:37.5%}.el-col-md-push-9{position:relative;left:37.5%}.el-col-md-10{width:41.66667%}.el-col-md-offset-10{margin-left:41.66667%}.el-col-md-pull-10{position:relative;right:41.66667%}.el-col-md-push-10{position:relative;left:41.66667%}.el-col-md-11{width:45.83333%}.el-col-md-offset-11{margin-left:45.83333%}.el-col-md-pull-11{position:relative;right:45.83333%}.el-col-md-push-11{position:relative;left:45.83333%}.el-col-md-12{width:50%}.el-col-md-offset-12{margin-left:50%}.el-col-md-pull-12{position:relative;right:50%}.el-col-md-push-12{position:relative;left:50%}.el-col-md-13{width:54.16667%}.el-col-md-offset-13{margin-left:54.16667%}.el-col-md-pull-13{position:relative;right:54.16667%}.el-col-md-push-13{position:relative;left:54.16667%}.el-col-md-14{width:58.33333%}.el-col-md-offset-14{margin-left:58.33333%}.el-col-md-pull-14{position:relative;right:58.33333%}.el-col-md-push-14{position:relative;left:58.33333%}.el-col-md-15{width:62.5%}.el-col-md-offset-15{margin-left:62.5%}.el-col-md-pull-15{position:relative;right:62.5%}.el-col-md-push-15{position:relative;left:62.5%}.el-col-md-16{width:66.66667%}.el-col-md-offset-16{margin-left:66.66667%}.el-col-md-pull-16{position:relative;right:66.66667%}.el-col-md-push-16{position:relative;left:66.66667%}.el-col-md-17{width:70.83333%}.el-col-md-offset-17{margin-left:70.83333%}.el-col-md-pull-17{position:relative;right:70.83333%}.el-col-md-push-17{position:relative;left:70.83333%}.el-col-md-18{width:75%}.el-col-md-offset-18{margin-left:75%}.el-col-md-pull-18{position:relative;right:75%}.el-col-md-push-18{position:relative;left:75%}.el-col-md-19{width:79.16667%}.el-col-md-offset-19{margin-left:79.16667%}.el-col-md-pull-19{position:relative;right:79.16667%}.el-col-md-push-19{position:relative;left:79.16667%}.el-col-md-20{width:83.33333%}.el-col-md-offset-20{margin-left:83.33333%}.el-col-md-pull-20{position:relative;right:83.33333%}.el-col-md-push-20{position:relative;left:83.33333%}.el-col-md-21{width:87.5%}.el-col-md-offset-21{margin-left:87.5%}.el-col-md-pull-21{position:relative;right:87.5%}.el-col-md-push-21{position:relative;left:87.5%}.el-col-md-22{width:91.66667%}.el-col-md-offset-22{margin-left:91.66667%}.el-col-md-pull-22{position:relative;right:91.66667%}.el-col-md-push-22{position:relative;left:91.66667%}.el-col-md-23{width:95.83333%}.el-col-md-offset-23{margin-left:95.83333%}.el-col-md-pull-23{position:relative;right:95.83333%}.el-col-md-push-23{position:relative;left:95.83333%}.el-col-md-24{width:100%}.el-col-md-offset-24{margin-left:100%}.el-col-md-pull-24{position:relative;right:100%}.el-col-md-push-24{position:relative;left:100%}}@media only screen and (min-width:1200px){.el-col-lg-0{display:none;width:0%}.el-col-lg-offset-0{margin-left:0}.el-col-lg-pull-0{position:relative;right:0}.el-col-lg-push-0{position:relative;left:0}.el-col-lg-1{width:4.16667%}.el-col-lg-offset-1{margin-left:4.16667%}.el-col-lg-pull-1{position:relative;right:4.16667%}.el-col-lg-push-1{position:relative;left:4.16667%}.el-col-lg-2{width:8.33333%}.el-col-lg-offset-2{margin-left:8.33333%}.el-col-lg-pull-2{position:relative;right:8.33333%}.el-col-lg-push-2{position:relative;left:8.33333%}.el-col-lg-3{width:12.5%}.el-col-lg-offset-3{margin-left:12.5%}.el-col-lg-pull-3{position:relative;right:12.5%}.el-col-lg-push-3{position:relative;left:12.5%}.el-col-lg-4{width:16.66667%}.el-col-lg-offset-4{margin-left:16.66667%}.el-col-lg-pull-4{position:relative;right:16.66667%}.el-col-lg-push-4{position:relative;left:16.66667%}.el-col-lg-5{width:20.83333%}.el-col-lg-offset-5{margin-left:20.83333%}.el-col-lg-pull-5{position:relative;right:20.83333%}.el-col-lg-push-5{position:relative;left:20.83333%}.el-col-lg-6{width:25%}.el-col-lg-offset-6{margin-left:25%}.el-col-lg-pull-6{position:relative;right:25%}.el-col-lg-push-6{position:relative;left:25%}.el-col-lg-7{width:29.16667%}.el-col-lg-offset-7{margin-left:29.16667%}.el-col-lg-pull-7{position:relative;right:29.16667%}.el-col-lg-push-7{position:relative;left:29.16667%}.el-col-lg-8{width:33.33333%}.el-col-lg-offset-8{margin-left:33.33333%}.el-col-lg-pull-8{position:relative;right:33.33333%}.el-col-lg-push-8{position:relative;left:33.33333%}.el-col-lg-9{width:37.5%}.el-col-lg-offset-9{margin-left:37.5%}.el-col-lg-pull-9{position:relative;right:37.5%}.el-col-lg-push-9{position:relative;left:37.5%}.el-col-lg-10{width:41.66667%}.el-col-lg-offset-10{margin-left:41.66667%}.el-col-lg-pull-10{position:relative;right:41.66667%}.el-col-lg-push-10{position:relative;left:41.66667%}.el-col-lg-11{width:45.83333%}.el-col-lg-offset-11{margin-left:45.83333%}.el-col-lg-pull-11{position:relative;right:45.83333%}.el-col-lg-push-11{position:relative;left:45.83333%}.el-col-lg-12{width:50%}.el-col-lg-offset-12{margin-left:50%}.el-col-lg-pull-12{position:relative;right:50%}.el-col-lg-push-12{position:relative;left:50%}.el-col-lg-13{width:54.16667%}.el-col-lg-offset-13{margin-left:54.16667%}.el-col-lg-pull-13{position:relative;right:54.16667%}.el-col-lg-push-13{position:relative;left:54.16667%}.el-col-lg-14{width:58.33333%}.el-col-lg-offset-14{margin-left:58.33333%}.el-col-lg-pull-14{position:relative;right:58.33333%}.el-col-lg-push-14{position:relative;left:58.33333%}.el-col-lg-15{width:62.5%}.el-col-lg-offset-15{margin-left:62.5%}.el-col-lg-pull-15{position:relative;right:62.5%}.el-col-lg-push-15{position:relative;left:62.5%}.el-col-lg-16{width:66.66667%}.el-col-lg-offset-16{margin-left:66.66667%}.el-col-lg-pull-16{position:relative;right:66.66667%}.el-col-lg-push-16{position:relative;left:66.66667%}.el-col-lg-17{width:70.83333%}.el-col-lg-offset-17{margin-left:70.83333%}.el-col-lg-pull-17{position:relative;right:70.83333%}.el-col-lg-push-17{position:relative;left:70.83333%}.el-col-lg-18{width:75%}.el-col-lg-offset-18{margin-left:75%}.el-col-lg-pull-18{position:relative;right:75%}.el-col-lg-push-18{position:relative;left:75%}.el-col-lg-19{width:79.16667%}.el-col-lg-offset-19{margin-left:79.16667%}.el-col-lg-pull-19{position:relative;right:79.16667%}.el-col-lg-push-19{position:relative;left:79.16667%}.el-col-lg-20{width:83.33333%}.el-col-lg-offset-20{margin-left:83.33333%}.el-col-lg-pull-20{position:relative;right:83.33333%}.el-col-lg-push-20{position:relative;left:83.33333%}.el-col-lg-21{width:87.5%}.el-col-lg-offset-21{margin-left:87.5%}.el-col-lg-pull-21{position:relative;right:87.5%}.el-col-lg-push-21{position:relative;left:87.5%}.el-col-lg-22{width:91.66667%}.el-col-lg-offset-22{margin-left:91.66667%}.el-col-lg-pull-22{position:relative;right:91.66667%}.el-col-lg-push-22{position:relative;left:91.66667%}.el-col-lg-23{width:95.83333%}.el-col-lg-offset-23{margin-left:95.83333%}.el-col-lg-pull-23{position:relative;right:95.83333%}.el-col-lg-push-23{position:relative;left:95.83333%}.el-col-lg-24{width:100%}.el-col-lg-offset-24{margin-left:100%}.el-col-lg-pull-24{position:relative;right:100%}.el-col-lg-push-24{position:relative;left:100%}}@media only screen and (min-width:1920px){.el-col-xl-0{display:none;width:0%}.el-col-xl-offset-0{margin-left:0}.el-col-xl-pull-0{position:relative;right:0}.el-col-xl-push-0{position:relative;left:0}.el-col-xl-1{width:4.16667%}.el-col-xl-offset-1{margin-left:4.16667%}.el-col-xl-pull-1{position:relative;right:4.16667%}.el-col-xl-push-1{position:relative;left:4.16667%}.el-col-xl-2{width:8.33333%}.el-col-xl-offset-2{margin-left:8.33333%}.el-col-xl-pull-2{position:relative;right:8.33333%}.el-col-xl-push-2{position:relative;left:8.33333%}.el-col-xl-3{width:12.5%}.el-col-xl-offset-3{margin-left:12.5%}.el-col-xl-pull-3{position:relative;right:12.5%}.el-col-xl-push-3{position:relative;left:12.5%}.el-col-xl-4{width:16.66667%}.el-col-xl-offset-4{margin-left:16.66667%}.el-col-xl-pull-4{position:relative;right:16.66667%}.el-col-xl-push-4{position:relative;left:16.66667%}.el-col-xl-5{width:20.83333%}.el-col-xl-offset-5{margin-left:20.83333%}.el-col-xl-pull-5{position:relative;right:20.83333%}.el-col-xl-push-5{position:relative;left:20.83333%}.el-col-xl-6{width:25%}.el-col-xl-offset-6{margin-left:25%}.el-col-xl-pull-6{position:relative;right:25%}.el-col-xl-push-6{position:relative;left:25%}.el-col-xl-7{width:29.16667%}.el-col-xl-offset-7{margin-left:29.16667%}.el-col-xl-pull-7{position:relative;right:29.16667%}.el-col-xl-push-7{position:relative;left:29.16667%}.el-col-xl-8{width:33.33333%}.el-col-xl-offset-8{margin-left:33.33333%}.el-col-xl-pull-8{position:relative;right:33.33333%}.el-col-xl-push-8{position:relative;left:33.33333%}.el-col-xl-9{width:37.5%}.el-col-xl-offset-9{margin-left:37.5%}.el-col-xl-pull-9{position:relative;right:37.5%}.el-col-xl-push-9{position:relative;left:37.5%}.el-col-xl-10{width:41.66667%}.el-col-xl-offset-10{margin-left:41.66667%}.el-col-xl-pull-10{position:relative;right:41.66667%}.el-col-xl-push-10{position:relative;left:41.66667%}.el-col-xl-11{width:45.83333%}.el-col-xl-offset-11{margin-left:45.83333%}.el-col-xl-pull-11{position:relative;right:45.83333%}.el-col-xl-push-11{position:relative;left:45.83333%}.el-col-xl-12{width:50%}.el-col-xl-offset-12{margin-left:50%}.el-col-xl-pull-12{position:relative;right:50%}.el-col-xl-push-12{position:relative;left:50%}.el-col-xl-13{width:54.16667%}.el-col-xl-offset-13{margin-left:54.16667%}.el-col-xl-pull-13{position:relative;right:54.16667%}.el-col-xl-push-13{position:relative;left:54.16667%}.el-col-xl-14{width:58.33333%}.el-col-xl-offset-14{margin-left:58.33333%}.el-col-xl-pull-14{position:relative;right:58.33333%}.el-col-xl-push-14{position:relative;left:58.33333%}.el-col-xl-15{width:62.5%}.el-col-xl-offset-15{margin-left:62.5%}.el-col-xl-pull-15{position:relative;right:62.5%}.el-col-xl-push-15{position:relative;left:62.5%}.el-col-xl-16{width:66.66667%}.el-col-xl-offset-16{margin-left:66.66667%}.el-col-xl-pull-16{position:relative;right:66.66667%}.el-col-xl-push-16{position:relative;left:66.66667%}.el-col-xl-17{width:70.83333%}.el-col-xl-offset-17{margin-left:70.83333%}.el-col-xl-pull-17{position:relative;right:70.83333%}.el-col-xl-push-17{position:relative;left:70.83333%}.el-col-xl-18{width:75%}.el-col-xl-offset-18{margin-left:75%}.el-col-xl-pull-18{position:relative;right:75%}.el-col-xl-push-18{position:relative;left:75%}.el-col-xl-19{width:79.16667%}.el-col-xl-offset-19{margin-left:79.16667%}.el-col-xl-pull-19{position:relative;right:79.16667%}.el-col-xl-push-19{position:relative;left:79.16667%}.el-col-xl-20{width:83.33333%}.el-col-xl-offset-20{margin-left:83.33333%}.el-col-xl-pull-20{position:relative;right:83.33333%}.el-col-xl-push-20{position:relative;left:83.33333%}.el-col-xl-21{width:87.5%}.el-col-xl-offset-21{margin-left:87.5%}.el-col-xl-pull-21{position:relative;right:87.5%}.el-col-xl-push-21{position:relative;left:87.5%}.el-col-xl-22{width:91.66667%}.el-col-xl-offset-22{margin-left:91.66667%}.el-col-xl-pull-22{position:relative;right:91.66667%}.el-col-xl-push-22{position:relative;left:91.66667%}.el-col-xl-23{width:95.83333%}.el-col-xl-offset-23{margin-left:95.83333%}.el-col-xl-pull-23{position:relative;right:95.83333%}.el-col-xl-push-23{position:relative;left:95.83333%}.el-col-xl-24{width:100%}.el-col-xl-offset-24{margin-left:100%}.el-col-xl-pull-24{position:relative;right:100%}.el-col-xl-push-24{position:relative;left:100%}}@-webkit-keyframes progress{0%{background-position:0 0}100%{background-position:32px 0}}.el-upload{display:inline-block;text-align:center;cursor:pointer;outline:0}.el-upload__input{display:none}.el-upload__tip{font-size:12px;color:#606266;margin-top:7px}.el-upload iframe{position:absolute;z-index:-1;top:0;left:0;opacity:0;filter:alpha(opacity=0)}.el-upload--picture-card{background-color:#fbfdff;border:1px dashed #c0ccda;border-radius:6px;box-sizing:border-box;width:148px;height:148px;line-height:146px;vertical-align:top}.el-upload--picture-card i{font-size:28px;color:#8c939d}.el-upload--picture-card:hover,.el-upload:focus{border-color:#409EFF;color:#409EFF}.el-upload:focus .el-upload-dragger{border-color:#409EFF}.el-upload-dragger{background-color:#fff;border:1px dashed #d9d9d9;border-radius:6px;box-sizing:border-box;width:360px;height:180px;text-align:center;position:relative;overflow:hidden}.el-upload-dragger .el-icon-upload{font-size:67px;color:#C0C4CC;margin:40px 0 16px;line-height:50px}.el-upload-dragger+.el-upload__tip{text-align:center}.el-upload-dragger~.el-upload__files{border-top:1px solid #DCDFE6;margin-top:7px;padding-top:5px}.el-upload-dragger .el-upload__text{color:#606266;font-size:14px;text-align:center}.el-upload-dragger .el-upload__text em{color:#409EFF;font-style:normal}.el-upload-dragger:hover{border-color:#409EFF}.el-upload-dragger.is-dragover{background-color:rgba(32,159,255,.06);border:2px dashed #409EFF}.el-upload-list{margin:0;padding:0;list-style:none}.el-upload-list__item{-webkit-transition:all .5s cubic-bezier(.55,0,.1,1);transition:all .5s cubic-bezier(.55,0,.1,1);font-size:14px;color:#606266;line-height:1.8;margin-top:5px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;width:100%}.el-upload-list__item .el-progress{position:absolute;top:20px;width:100%}.el-upload-list__item .el-progress__text{position:absolute;right:0;top:-13px}.el-upload-list__item .el-progress-bar{margin-right:0;padding-right:0}.el-upload-list__item:first-child{margin-top:10px}.el-upload-list__item .el-icon-upload-success{color:#67C23A}.el-upload-list__item .el-icon-close{display:none;position:absolute;top:5px;right:5px;cursor:pointer;opacity:.75;color:#606266}.el-upload-list__item .el-icon-close:hover{opacity:1}.el-upload-list__item .el-icon-close-tip{display:none;position:absolute;top:5px;right:5px;font-size:12px;cursor:pointer;opacity:1;color:#409EFF}.el-upload-list__item:hover{background-color:#F5F7FA}.el-upload-list__item:hover .el-icon-close{display:inline-block}.el-upload-list__item:hover .el-progress__text{display:none}.el-upload-list__item.is-success .el-upload-list__item-status-label{display:block}.el-upload-list__item.is-success .el-upload-list__item-name:focus,.el-upload-list__item.is-success .el-upload-list__item-name:hover{color:#409EFF;cursor:pointer}.el-upload-list__item.is-success:focus:not(:hover) .el-icon-close-tip{display:inline-block}.el-upload-list__item.is-success:active .el-icon-close-tip,.el-upload-list__item.is-success:focus .el-upload-list__item-status-label,.el-upload-list__item.is-success:hover .el-upload-list__item-status-label,.el-upload-list__item.is-success:not(.focusing):focus .el-icon-close-tip{display:none}.el-upload-list.is-disabled .el-upload-list__item:hover .el-upload-list__item-status-label{display:block}.el-upload-list__item-name{color:#606266;display:block;margin-right:40px;overflow:hidden;padding-left:4px;text-overflow:ellipsis;-webkit-transition:color .3s;transition:color .3s;white-space:nowrap}.el-upload-list__item-name [class^=el-icon]{height:100%;margin-right:7px;color:#909399;line-height:inherit}.el-upload-list__item-status-label{position:absolute;right:5px;top:0;line-height:inherit;display:none}.el-upload-list__item-delete{position:absolute;right:10px;top:0;font-size:12px;color:#606266;display:none}.el-upload-list__item-delete:hover{color:#409EFF}.el-upload-list--picture-card{margin:0;display:inline;vertical-align:top}.el-upload-list--picture-card .el-upload-list__item{overflow:hidden;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;width:148px;height:148px;margin:0 8px 8px 0;display:inline-block}.el-upload-list--picture-card .el-upload-list__item .el-icon-check,.el-upload-list--picture-card .el-upload-list__item .el-icon-circle-check{color:#FFF}.el-upload-list--picture-card .el-upload-list__item .el-icon-close,.el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label{display:none}.el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture-card .el-upload-list__item-name{display:none}.el-upload-list--picture-card .el-upload-list__item-thumbnail{width:100%;height:100%}.el-upload-list--picture-card .el-upload-list__item-status-label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 0 1pc 1px rgba(0,0,0,.2);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.el-upload-list--picture-card .el-upload-list__item-status-label i{font-size:12px;margin-top:11px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.el-upload-list--picture-card .el-upload-list__item-actions{position:absolute;width:100%;height:100%;left:0;top:0;cursor:default;text-align:center;color:#fff;opacity:0;font-size:20px;background-color:rgba(0,0,0,.5);-webkit-transition:opacity .3s;transition:opacity .3s}.el-upload-list--picture-card .el-upload-list__item-actions::after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-upload-list--picture-card .el-upload-list__item-actions span{display:none;cursor:pointer}.el-upload-list--picture-card .el-upload-list__item-actions span+span{margin-left:15px}.el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete{position:static;font-size:inherit;color:inherit}.el-upload-list--picture-card .el-upload-list__item-actions:hover{opacity:1}.el-upload-list--picture-card .el-upload-list__item-actions:hover span{display:inline-block}.el-upload-list--picture-card .el-progress{top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);bottom:auto;width:126px}.el-upload-list--picture-card .el-progress .el-progress__text{top:50%}.el-upload-list--picture .el-upload-list__item{overflow:hidden;z-index:0;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;margin-top:10px;padding:10px 10px 10px 90px;height:92px}.el-upload-list--picture .el-upload-list__item .el-icon-check,.el-upload-list--picture .el-upload-list__item .el-icon-circle-check{color:#FFF}.el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label{background:0 0;-webkit-box-shadow:none;box-shadow:none;top:-2px;right:-12px}.el-upload-list--picture .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name{line-height:70px;margin-top:0}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i{display:none}.el-upload-list--picture .el-upload-list__item-thumbnail{vertical-align:middle;display:inline-block;width:70px;height:70px;float:left;position:relative;z-index:1;margin-left:-80px;background-color:#FFF}.el-upload-list--picture .el-upload-list__item-name{display:block;margin-top:20px}.el-upload-list--picture .el-upload-list__item-name i{font-size:70px;line-height:1;position:absolute;left:9px;top:10px}.el-upload-list--picture .el-upload-list__item-status-label{position:absolute;right:-17px;top:-7px;width:46px;height:26px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 1px 1px #ccc;box-shadow:0 1px 1px #ccc}.el-upload-list--picture .el-upload-list__item-status-label i{font-size:12px;margin-top:12px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.el-upload-list--picture .el-progress{position:relative;top:-7px}.el-upload-cover{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;z-index:10;cursor:default}.el-upload-cover::after{display:inline-block;height:100%;vertical-align:middle}.el-upload-cover img{display:block;width:100%;height:100%}.el-upload-cover__label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 0 1pc 1px rgba(0,0,0,.2);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.el-upload-cover__label i{font-size:12px;margin-top:11px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);color:#fff}.el-upload-cover__progress{display:inline-block;vertical-align:middle;position:static;width:243px}.el-upload-cover__progress+.el-upload__inner{opacity:0}.el-upload-cover__content{position:absolute;top:0;left:0;width:100%;height:100%}.el-upload-cover__interact{position:absolute;bottom:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.72);text-align:center}.el-upload-cover__interact .btn{display:inline-block;color:#FFF;font-size:14px;cursor:pointer;vertical-align:middle;-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);margin-top:60px}.el-upload-cover__interact .btn span{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.el-upload-cover__interact .btn:not(:first-child){margin-left:35px}.el-upload-cover__interact .btn:hover{-webkit-transform:translateY(-13px);transform:translateY(-13px)}.el-upload-cover__interact .btn:hover span{opacity:1}.el-upload-cover__interact .btn i{color:#FFF;display:block;font-size:24px;line-height:inherit;margin:0 auto 5px}.el-upload-cover__title{position:absolute;bottom:0;left:0;background-color:#FFF;height:36px;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:400;text-align:left;padding:0 10px;margin:0;line-height:36px;font-size:14px;color:#303133}.el-upload-cover+.el-upload__inner{opacity:0;position:relative;z-index:1}.el-progress{position:relative;line-height:1}.el-progress__text{font-size:14px;color:#606266;display:inline-block;vertical-align:middle;margin-left:10px;line-height:1}.el-progress__text i{vertical-align:middle;display:block}.el-progress--circle,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{position:absolute;top:50%;left:0;width:100%;text-align:center;margin:0;-webkit-transform:translate(0,-50%);transform:translate(0,-50%)}.el-progress--circle .el-progress__text i,.el-progress--dashboard .el-progress__text i{vertical-align:middle;display:inline-block}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{padding-right:0;margin-right:0;display:block}.el-progress-bar,.el-progress-bar__inner::after,.el-progress-bar__innerText,.el-spinner{display:inline-block;vertical-align:middle}.el-progress--text-inside .el-progress-bar{padding-right:0;margin-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:#67C23A}.el-progress.is-success .el-progress__text{color:#67C23A}.el-progress.is-warning .el-progress-bar__inner{background-color:#E6A23C}.el-progress.is-warning .el-progress__text{color:#E6A23C}.el-progress.is-exception .el-progress-bar__inner{background-color:#F56C6C}.el-progress.is-exception .el-progress__text{color:#F56C6C}.el-progress-bar{padding-right:50px;width:100%;margin-right:-55px;-webkit-box-sizing:border-box;box-sizing:border-box}.el-progress-bar__outer{height:6px;border-radius:100px;background-color:#EBEEF5;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{position:absolute;left:0;top:0;height:100%;background-color:#409EFF;text-align:right;border-radius:100px;line-height:1;white-space:nowrap;-webkit-transition:width .6s ease;transition:width .6s ease}.el-card,.el-message{border-radius:4px;overflow:hidden}.el-progress-bar__inner::after{height:100%}.el-progress-bar__innerText{color:#FFF;font-size:12px;margin:0 5px}@keyframes progress{0%{background-position:0 0}100%{background-position:32px 0}}.el-time-spinner{width:100%;white-space:nowrap}.el-spinner-inner{-webkit-animation:rotate 2s linear infinite;animation:rotate 2s linear infinite;width:50px;height:50px}.el-spinner-inner .path{stroke:#ececec;stroke-linecap:round;-webkit-animation:dash 1.5s ease-in-out infinite;animation:dash 1.5s ease-in-out infinite}@-webkit-keyframes rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}100%{stroke-dasharray:90,150;stroke-dashoffset:-124}}@keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}100%{stroke-dasharray:90,150;stroke-dashoffset:-124}}.el-message{min-width:380px;-webkit-box-sizing:border-box;box-sizing:border-box;border-width:1px;border-style:solid;border-color:#EBEEF5;position:fixed;left:50%;top:20px;-webkit-transform:translateX(-50%);transform:translateX(-50%);background-color:#edf2fc;-webkit-transition:opacity .3s,top .4s,-webkit-transform .4s;transition:opacity .3s,top .4s,-webkit-transform .4s;transition:opacity .3s,transform .4s,top .4s;transition:opacity .3s,transform .4s,top .4s,-webkit-transform .4s;padding:15px 15px 15px 20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-message.is-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-message.is-closable .el-message__content{padding-right:16px}.el-message p{margin:0}.el-message--info .el-message__content{color:#909399}.el-message--success{background-color:#f0f9eb;border-color:#e1f3d8}.el-message--success .el-message__content{color:#67C23A}.el-message--warning{background-color:#fdf6ec;border-color:#faecd8}.el-message--warning .el-message__content{color:#E6A23C}.el-message--error{background-color:#fef0f0;border-color:#fde2e2}.el-message--error .el-message__content{color:#F56C6C}.el-message__icon{margin-right:10px}.el-message__content{padding:0;font-size:14px;line-height:1}.el-message__closeBtn{position:absolute;top:50%;right:15px;-webkit-transform:translateY(-50%);transform:translateY(-50%);cursor:pointer;color:#C0C4CC;font-size:16px}.el-message__closeBtn:hover{color:#909399}.el-message .el-icon-success{color:#67C23A}.el-message .el-icon-error{color:#F56C6C}.el-message .el-icon-info{color:#909399}.el-message .el-icon-warning{color:#E6A23C}.el-message-fade-enter,.el-message-fade-leave-active{opacity:0;-webkit-transform:translate(-50%,-100%);transform:translate(-50%,-100%)}.el-badge{position:relative;vertical-align:middle;display:inline-block}.el-badge__content{background-color:#F56C6C;border-radius:10px;color:#FFF;display:inline-block;font-size:12px;height:18px;line-height:18px;padding:0 6px;text-align:center;white-space:nowrap;border:1px solid #FFF}.el-badge__content.is-fixed{position:absolute;top:0;right:10px;-webkit-transform:translateY(-50%) translateX(100%);transform:translateY(-50%) translateX(100%)}.el-rate__icon,.el-rate__item{position:relative;display:inline-block}.el-badge__content.is-fixed.is-dot{right:5px}.el-badge__content.is-dot{height:8px;width:8px;padding:0;right:0;border-radius:50%}.el-badge__content--primary{background-color:#409EFF}.el-badge__content--success{background-color:#67C23A}.el-badge__content--warning{background-color:#E6A23C}.el-badge__content--info{background-color:#909399}.el-badge__content--danger{background-color:#F56C6C}.el-card{border:1px solid #EBEEF5;background-color:#FFF;color:#303133;-webkit-transition:.3s;transition:.3s}.el-card.is-always-shadow,.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-card__header{padding:18px 20px;border-bottom:1px solid #EBEEF5;-webkit-box-sizing:border-box;box-sizing:border-box}.el-card__body{padding:20px}.el-rate{height:20px;line-height:1}.el-rate__item{font-size:0;vertical-align:middle}.el-rate__icon{font-size:18px;margin-right:6px;color:#C0C4CC;-webkit-transition:.3s;transition:.3s}.el-rate__decimal,.el-rate__icon .path2{position:absolute;top:0;left:0}.el-rate__icon.hover{-webkit-transform:scale(1.15);transform:scale(1.15)}.el-rate__decimal{display:inline-block;overflow:hidden}.el-step.is-vertical,.el-steps{display:-webkit-box;display:-ms-flexbox}.el-rate__text{font-size:14px;vertical-align:middle}.el-steps{display:flex}.el-steps--simple{padding:13px 8%;border-radius:4px;background:#F5F7FA}.el-steps--horizontal{white-space:nowrap}.el-steps--vertical{height:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column;flex-flow:column}.el-step{position:relative;-ms-flex-negative:1;flex-shrink:1}.el-step:last-of-type .el-step__line{display:none}.el-step:last-of-type.is-flex{-ms-flex-preferred-size:auto!important;flex-basis:auto!important;-ms-flex-negative:0;flex-shrink:0;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.el-step:last-of-type .el-step__description,.el-step:last-of-type .el-step__main{padding-right:0}.el-step__head{position:relative;width:100%}.el-step__head.is-process{color:#303133;border-color:#303133}.el-step__head.is-wait{color:#C0C4CC;border-color:#C0C4CC}.el-step__head.is-success{color:#67C23A;border-color:#67C23A}.el-step__head.is-error{color:#F56C6C;border-color:#F56C6C}.el-step__head.is-finish{color:#409EFF;border-color:#409EFF}.el-step__icon{position:relative;z-index:1;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:24px;height:24px;font-size:14px;-webkit-box-sizing:border-box;box-sizing:border-box;background:#FFF;-webkit-transition:.15s ease-out;transition:.15s ease-out}.el-step__icon.is-text{border-radius:50%;border:2px solid;border-color:inherit}.el-step__icon.is-icon{width:40px}.el-step__icon-inner{display:inline-block;user-select:none;text-align:center;font-weight:700;line-height:1;color:inherit}.el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:25px;font-weight:400}.el-step__icon-inner.is-status{-webkit-transform:translateY(1px);transform:translateY(1px)}.el-step__line{position:absolute;border-color:inherit;background-color:#C0C4CC}.el-step__line-inner{display:block;border-width:1px;border-style:solid;border-color:inherit;-webkit-transition:.15s ease-out;transition:.15s ease-out;-webkit-box-sizing:border-box;box-sizing:border-box;width:0;height:0}.el-step__main{white-space:normal;text-align:left}.el-step__title{font-size:16px;line-height:38px}.el-step__title.is-process{font-weight:700;color:#303133}.el-step__title.is-wait{color:#C0C4CC}.el-step__title.is-success{color:#67C23A}.el-step__title.is-error{color:#F56C6C}.el-step__title.is-finish{color:#409EFF}.el-step__description{padding-right:10%;margin-top:-5px;font-size:12px;line-height:20px;font-weight:400}.el-step__description.is-process{color:#303133}.el-step__description.is-wait{color:#C0C4CC}.el-step__description.is-success{color:#67C23A}.el-step__description.is-error{color:#F56C6C}.el-step__description.is-finish{color:#409EFF}.el-step.is-horizontal{display:inline-block}.el-step.is-horizontal .el-step__line{height:2px;top:11px;left:0;right:0}.el-step.is-vertical{display:flex}.el-step.is-vertical .el-step__head{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;width:24px}.el-step.is-vertical .el-step__main{padding-left:10px;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.el-step.is-vertical .el-step__title{line-height:24px;padding-bottom:8px}.el-step.is-vertical .el-step__line{width:2px;top:0;bottom:0;left:11px}.el-step.is-vertical .el-step__icon.is-icon{width:24px}.el-step.is-center .el-step__head,.el-step.is-center .el-step__main{text-align:center}.el-step.is-center .el-step__description{padding-left:20%;padding-right:20%}.el-step.is-center .el-step__line{left:50%;right:-50%}.el-step.is-simple{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-step.is-simple .el-step__head{width:auto;font-size:0;padding-right:10px}.el-step.is-simple .el-step__icon{background:0 0;width:16px;height:16px;font-size:12px}.el-step.is-simple .el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:18px}.el-step.is-simple .el-step__icon-inner.is-status{-webkit-transform:scale(.8) translateY(1px);transform:scale(.8) translateY(1px)}.el-step.is-simple .el-step__main{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.el-step.is-simple .el-step__title{font-size:16px;line-height:20px}.el-step.is-simple:not(:last-of-type) .el-step__title{max-width:50%;word-break:break-all}.el-step.is-simple .el-step__arrow{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-step.is-simple .el-step__arrow::after,.el-step.is-simple .el-step__arrow::before{content:'';display:inline-block;position:absolute;height:15px;width:1px;background:#C0C4CC}.el-step.is-simple .el-step__arrow::before{-webkit-transform:rotate(-45deg) translateY(-4px);transform:rotate(-45deg) translateY(-4px);-webkit-transform-origin:0 0;transform-origin:0 0}.el-step.is-simple .el-step__arrow::after{-webkit-transform:rotate(45deg) translateY(4px);transform:rotate(45deg) translateY(4px);-webkit-transform-origin:100% 100%;transform-origin:100% 100%}.el-step.is-simple:last-of-type .el-step__arrow{display:none}.el-carousel{position:relative}.el-carousel--horizontal{overflow-x:hidden}.el-carousel--vertical{overflow-y:hidden}.el-carousel__container{position:relative;height:300px}.el-carousel__arrow{border:none;outline:0;padding:0;margin:0;height:36px;width:36px;cursor:pointer;-webkit-transition:.3s;transition:.3s;border-radius:50%;background-color:rgba(31,45,61,.11);color:#FFF;position:absolute;top:50%;z-index:10;-webkit-transform:translateY(-50%);transform:translateY(-50%);text-align:center;font-size:12px}.el-carousel__arrow--left{left:16px}.el-carousel__arrow--right{right:16px}.el-carousel__arrow:hover{background-color:rgba(31,45,61,.23)}.el-carousel__arrow i{cursor:pointer}.el-carousel__indicators{position:absolute;list-style:none;margin:0;padding:0;z-index:2}.el-carousel__indicators--horizontal{bottom:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.el-carousel__indicators--vertical{right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-carousel__indicators--outside{bottom:26px;text-align:center;position:static;-webkit-transform:none;transform:none}.el-carousel__indicators--outside .el-carousel__indicator:hover button{opacity:.64}.el-carousel__indicators--outside button{background-color:#C0C4CC;opacity:.24}.el-carousel__indicators--labels{left:0;right:0;-webkit-transform:none;transform:none;text-align:center}.el-carousel__indicators--labels .el-carousel__button{height:auto;width:auto;padding:2px 18px;font-size:12px}.el-carousel__indicators--labels .el-carousel__indicator{padding:6px 4px}.el-carousel__indicator{background-color:transparent;cursor:pointer}.el-carousel__indicator:hover button{opacity:.72}.el-carousel__indicator--horizontal{display:inline-block;padding:12px 4px}.el-carousel__indicator--vertical{padding:4px 12px}.el-carousel__indicator--vertical .el-carousel__button{width:2px;height:15px}.el-carousel__indicator.is-active button{opacity:1}.el-carousel__button{display:block;opacity:.48;width:30px;height:2px;background-color:#FFF;border:none;outline:0;padding:0;margin:0;cursor:pointer;-webkit-transition:.3s;transition:.3s}.el-carousel__item,.el-carousel__mask{height:100%;top:0;left:0;position:absolute}.carousel-arrow-left-enter,.carousel-arrow-left-leave-active{-webkit-transform:translateY(-50%) translateX(-10px);transform:translateY(-50%) translateX(-10px);opacity:0}.carousel-arrow-right-enter,.carousel-arrow-right-leave-active{-webkit-transform:translateY(-50%) translateX(10px);transform:translateY(-50%) translateX(10px);opacity:0}.el-carousel__item{width:100%;display:inline-block;overflow:hidden;z-index:0}.el-carousel__item.is-active{z-index:2}.el-carousel__item.is-animating{-webkit-transition:-webkit-transform .4s ease-in-out;transition:-webkit-transform .4s ease-in-out;transition:transform .4s ease-in-out;transition:transform .4s ease-in-out,-webkit-transform .4s ease-in-out}.el-carousel__item--card{width:50%;-webkit-transition:-webkit-transform .4s ease-in-out;transition:-webkit-transform .4s ease-in-out;transition:transform .4s ease-in-out;transition:transform .4s ease-in-out,-webkit-transform .4s ease-in-out}.el-carousel__item--card.is-in-stage{cursor:pointer;z-index:1}.el-carousel__item--card.is-in-stage.is-hover .el-carousel__mask,.el-carousel__item--card.is-in-stage:hover .el-carousel__mask{opacity:.12}.el-carousel__item--card.is-active{z-index:2}.el-carousel__mask{width:100%;background-color:#FFF;opacity:.24;-webkit-transition:.2s;transition:.2s}.el-fade-in-enter,.el-fade-in-leave-active,.el-fade-in-linear-enter,.el-fade-in-linear-leave,.el-fade-in-linear-leave-active,.fade-in-linear-enter,.fade-in-linear-leave,.fade-in-linear-leave-active{opacity:0}.fade-in-linear-enter-active,.fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.el-fade-in-enter-active,.el-fade-in-leave-active{-webkit-transition:all .3s cubic-bezier(.55,0,.1,1);transition:all .3s cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{-webkit-transition:all .3s cubic-bezier(.55,0,.1,1);transition:all .3s cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter,.el-zoom-in-center-leave-active{opacity:0;-webkit-transform:scaleX(0);transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-webkit-transform-origin:center top;transform-origin:center top}.el-zoom-in-top-enter,.el-zoom-in-top-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-webkit-transform-origin:center bottom;transform-origin:center bottom}.el-zoom-in-bottom-enter,.el-zoom-in-bottom-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;-webkit-transform:scale(1,1);transform:scale(1,1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-webkit-transform-origin:top left;transform-origin:top left}.el-zoom-in-left-enter,.el-zoom-in-left-leave-active{opacity:0;-webkit-transform:scale(.45,.45);transform:scale(.45,.45)}.collapse-transition{-webkit-transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out;transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out}.horizontal-collapse-transition{-webkit-transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out;transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{-webkit-transition:all 1s;transition:all 1s}.el-list-enter,.el-list-leave-active{opacity:0;-webkit-transform:translateY(-30px);transform:translateY(-30px)}.el-opacity-transition{-webkit-transition:opacity .3s cubic-bezier(.55,0,.1,1);transition:opacity .3s cubic-bezier(.55,0,.1,1)}.el-collapse{border-top:1px solid #EBEEF5;border-bottom:1px solid #EBEEF5}.el-collapse-item.is-disabled .el-collapse-item__header{color:#bbb;cursor:not-allowed}.el-collapse-item__header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:48px;line-height:48px;background-color:#FFF;color:#303133;cursor:pointer;border-bottom:1px solid #EBEEF5;font-size:13px;font-weight:500;-webkit-transition:border-bottom-color .3s;transition:border-bottom-color .3s;outline:0}.el-collapse-item__arrow{margin:0 8px 0 auto;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;font-weight:300}.el-collapse-item__arrow.is-active{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-collapse-item__header.focusing:focus:not(:hover){color:#409EFF}.el-collapse-item__header.is-active{border-bottom-color:transparent}.el-collapse-item__wrap{will-change:height;background-color:#FFF;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;border-bottom:1px solid #EBEEF5}.el-cascader__tags,.el-tag{-webkit-box-sizing:border-box}.el-collapse-item__content{padding-bottom:25px;font-size:13px;color:#303133;line-height:1.769230769230769}.el-collapse-item:last-child{margin-bottom:-1px}.el-popper .popper__arrow,.el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03));filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.el-popper .popper__arrow::after{content:" ";border-width:6px}.el-popper[x-placement^=top]{margin-bottom:12px}.el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#EBEEF5;border-bottom-width:0}.el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#FFF;border-bottom-width:0}.el-popper[x-placement^=bottom]{margin-top:12px}.el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#EBEEF5}.el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#FFF}.el-popper[x-placement^=right]{margin-left:12px}.el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#EBEEF5;border-left-width:0}.el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#FFF;border-left-width:0}.el-popper[x-placement^=left]{margin-right:12px}.el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#EBEEF5}.el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#FFF}.el-tag{background-color:#ecf5ff;border-color:#d9ecff;display:inline-block;height:32px;padding:0 10px;line-height:30px;font-size:12px;color:#409EFF;border-width:1px;border-style:solid;border-radius:4px;box-sizing:border-box;white-space:nowrap}.el-tag.is-hit{border-color:#409EFF}.el-tag .el-tag__close{color:#409eff}.el-tag .el-tag__close:hover{color:#FFF;background-color:#409eff}.el-tag.el-tag--info{background-color:#f4f4f5;border-color:#e9e9eb;color:#909399}.el-tag.el-tag--info.is-hit{border-color:#909399}.el-tag.el-tag--info .el-tag__close{color:#909399}.el-tag.el-tag--info .el-tag__close:hover{color:#FFF;background-color:#909399}.el-tag.el-tag--success{background-color:#f0f9eb;border-color:#e1f3d8;color:#67c23a}.el-tag.el-tag--success.is-hit{border-color:#67C23A}.el-tag.el-tag--success .el-tag__close{color:#67c23a}.el-tag.el-tag--success .el-tag__close:hover{color:#FFF;background-color:#67c23a}.el-tag.el-tag--warning{background-color:#fdf6ec;border-color:#faecd8;color:#e6a23c}.el-tag.el-tag--warning.is-hit{border-color:#E6A23C}.el-tag.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag.el-tag--warning .el-tag__close:hover{color:#FFF;background-color:#e6a23c}.el-tag.el-tag--danger{background-color:#fef0f0;border-color:#fde2e2;color:#f56c6c}.el-tag.el-tag--danger.is-hit{border-color:#F56C6C}.el-tag.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag.el-tag--danger .el-tag__close:hover{color:#FFF;background-color:#f56c6c}.el-tag .el-icon-close{border-radius:50%;text-align:center;position:relative;cursor:pointer;font-size:12px;height:16px;width:16px;line-height:16px;vertical-align:middle;top:-1px;right:-5px}.el-tag .el-icon-close::before{display:block}.el-tag--dark{background-color:#409eff;border-color:#409eff;color:#fff}.el-tag--dark.is-hit{border-color:#409EFF}.el-tag--dark .el-tag__close{color:#fff}.el-tag--dark .el-tag__close:hover{color:#FFF;background-color:#66b1ff}.el-tag--dark.el-tag--info{background-color:#909399;border-color:#909399;color:#fff}.el-tag--dark.el-tag--info.is-hit{border-color:#909399}.el-tag--dark.el-tag--info .el-tag__close{color:#fff}.el-tag--dark.el-tag--info .el-tag__close:hover{color:#FFF;background-color:#a6a9ad}.el-tag--dark.el-tag--success{background-color:#67c23a;border-color:#67c23a;color:#fff}.el-tag--dark.el-tag--success.is-hit{border-color:#67C23A}.el-tag--dark.el-tag--success .el-tag__close{color:#fff}.el-tag--dark.el-tag--success .el-tag__close:hover{color:#FFF;background-color:#85ce61}.el-tag--dark.el-tag--warning{background-color:#e6a23c;border-color:#e6a23c;color:#fff}.el-tag--dark.el-tag--warning.is-hit{border-color:#E6A23C}.el-tag--dark.el-tag--warning .el-tag__close{color:#fff}.el-tag--dark.el-tag--warning .el-tag__close:hover{color:#FFF;background-color:#ebb563}.el-tag--dark.el-tag--danger{background-color:#f56c6c;border-color:#f56c6c;color:#fff}.el-tag--dark.el-tag--danger.is-hit{border-color:#F56C6C}.el-tag--dark.el-tag--danger .el-tag__close{color:#fff}.el-tag--dark.el-tag--danger .el-tag__close:hover{color:#FFF;background-color:#f78989}.el-tag--plain{background-color:#fff;border-color:#b3d8ff;color:#409eff}.el-tag--plain.is-hit{border-color:#409EFF}.el-tag--plain .el-tag__close{color:#409eff}.el-tag--plain .el-tag__close:hover{color:#FFF;background-color:#409eff}.el-tag--plain.el-tag--info{background-color:#fff;border-color:#d3d4d6;color:#909399}.el-tag--plain.el-tag--info.is-hit{border-color:#909399}.el-tag--plain.el-tag--info .el-tag__close{color:#909399}.el-tag--plain.el-tag--info .el-tag__close:hover{color:#FFF;background-color:#909399}.el-tag--plain.el-tag--success{background-color:#fff;border-color:#c2e7b0;color:#67c23a}.el-tag--plain.el-tag--success.is-hit{border-color:#67C23A}.el-tag--plain.el-tag--success .el-tag__close{color:#67c23a}.el-tag--plain.el-tag--success .el-tag__close:hover{color:#FFF;background-color:#67c23a}.el-tag--plain.el-tag--warning{background-color:#fff;border-color:#f5dab1;color:#e6a23c}.el-tag--plain.el-tag--warning.is-hit{border-color:#E6A23C}.el-tag--plain.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag--plain.el-tag--warning .el-tag__close:hover{color:#FFF;background-color:#e6a23c}.el-tag--plain.el-tag--danger{background-color:#fff;border-color:#fbc4c4;color:#f56c6c}.el-tag--plain.el-tag--danger.is-hit{border-color:#F56C6C}.el-tag--plain.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag--plain.el-tag--danger .el-tag__close:hover{color:#FFF;background-color:#f56c6c}.el-tag--medium{height:28px;line-height:26px}.el-tag--medium .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--small{height:24px;padding:0 8px;line-height:22px}.el-tag--small .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--mini{height:20px;padding:0 5px;line-height:19px}.el-tag--mini .el-icon-close{margin-left:-3px;-webkit-transform:scale(.7);transform:scale(.7)}.el-cascader{display:inline-block;position:relative;font-size:14px;line-height:40px}.el-cascader:not(.is-disabled):hover .el-input__inner{cursor:pointer;border-color:#C0C4CC}.el-cascader .el-input .el-input__inner:focus,.el-cascader .el-input.is-focus .el-input__inner{border-color:#409EFF}.el-cascader .el-input{cursor:pointer}.el-cascader .el-input .el-input__inner{text-overflow:ellipsis}.el-cascader .el-input .el-icon-arrow-down{-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;font-size:14px}.el-cascader .el-input .el-icon-arrow-down.is-reverse{-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg)}.el-cascader .el-input .el-icon-circle-close:hover{color:#909399}.el-cascader--medium{font-size:14px;line-height:36px}.el-cascader--small{font-size:13px;line-height:32px}.el-cascader--mini{font-size:12px;line-height:28px}.el-cascader.is-disabled .el-cascader__label{z-index:2;color:#C0C4CC}.el-cascader__dropdown{margin:5px 0;font-size:14px;background:#FFF;border:1px solid #E4E7ED;border-radius:4px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-cascader__tags{position:absolute;left:0;right:30px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;line-height:normal;text-align:left;box-sizing:border-box}.el-cascader__tags .el-tag{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:100%;margin:2px 0 2px 6px;text-overflow:ellipsis;background:#f0f2f5}.el-cascader__tags .el-tag:not(.is-hit){border-color:transparent}.el-cascader__tags .el-tag>span{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;text-overflow:ellipsis}.el-cascader__tags .el-tag .el-icon-close{-webkit-box-flex:0;-ms-flex:none;flex:none;background-color:#C0C4CC;color:#FFF}.el-cascader__tags .el-tag .el-icon-close:hover{background-color:#909399}.el-cascader__suggestion-panel{border-radius:4px}.el-cascader__suggestion-list{max-height:204px;margin:0;padding:6px 0;font-size:14px;color:#606266;text-align:center}.el-cascader__suggestion-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:34px;padding:0 15px;text-align:left;outline:0;cursor:pointer}.el-cascader__suggestion-item:focus,.el-cascader__suggestion-item:hover{background:#F5F7FA}.el-cascader__suggestion-item.is-checked{color:#409EFF;font-weight:700}.el-cascader__suggestion-item>span{margin-right:10px}.el-cascader__empty-text{margin:10px 0;color:#C0C4CC}.el-cascader__search-input{-webkit-box-flex:1;-ms-flex:1;flex:1;height:24px;min-width:60px;margin:2px 0 2px 15px;padding:0;color:#606266;border:none;outline:0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-cascader__search-input::-webkit-input-placeholder{color:#C0C4CC}.el-cascader__search-input:-ms-input-placeholder{color:#C0C4CC}.el-cascader__search-input::-ms-input-placeholder{color:#C0C4CC}.el-cascader__search-input::placeholder{color:#C0C4CC}.el-color-predefine{display:-webkit-box;display:-ms-flexbox;display:flex;font-size:12px;margin-top:8px;width:280px}.el-color-predefine__colors{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-wrap:wrap;flex-wrap:wrap}.el-color-predefine__color-selector{margin:0 0 8px 8px;width:20px;height:20px;border-radius:4px;cursor:pointer}.el-color-predefine__color-selector:nth-child(10n+1){margin-left:0}.el-color-predefine__color-selector.selected{-webkit-box-shadow:0 0 3px 2px #409EFF;box-shadow:0 0 3px 2px #409EFF}.el-color-predefine__color-selector>div{display:-webkit-box;display:-ms-flexbox;display:flex;height:100%;border-radius:3px}.el-color-predefine__color-selector.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-hue-slider{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;width:280px;height:12px;background-color:red;padding:0 2px}.el-color-hue-slider__bar{position:relative;background:-webkit-gradient(linear,left top,right top,from(red),color-stop(17%,#ff0),color-stop(33%,#0f0),color-stop(50%,#0ff),color-stop(67%,#00f),color-stop(83%,#f0f),to(red));background:linear-gradient(to right,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%);height:100%}.el-color-hue-slider__thumb{position:absolute;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;-webkit-box-shadow:0 0 2px rgba(0,0,0,.6);box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-hue-slider.is-vertical{width:12px;height:180px;padding:2px 0}.el-color-hue-slider.is-vertical .el-color-hue-slider__bar{background:-webkit-gradient(linear,left top,left bottom,from(red),color-stop(17%,#ff0),color-stop(33%,#0f0),color-stop(50%,#0ff),color-stop(67%,#00f),color-stop(83%,#f0f),to(red));background:linear-gradient(to bottom,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%)}.el-color-hue-slider.is-vertical .el-color-hue-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-svpanel{position:relative;width:280px;height:180px}.el-color-svpanel__black,.el-color-svpanel__white{position:absolute;top:0;left:0;right:0;bottom:0}.el-color-svpanel__white{background:-webkit-gradient(linear,left top,right top,from(#fff),to(rgba(255,255,255,0)));background:linear-gradient(to right,#fff,rgba(255,255,255,0))}.el-color-svpanel__black{background:-webkit-gradient(linear,left bottom,left top,from(#000),to(rgba(0,0,0,0)));background:linear-gradient(to top,#000,rgba(0,0,0,0))}.el-color-svpanel__cursor{position:absolute}.el-color-svpanel__cursor>div{cursor:head;width:4px;height:4px;-webkit-box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);border-radius:50%;-webkit-transform:translate(-2px,-2px);transform:translate(-2px,-2px)}.el-color-alpha-slider{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;width:280px;height:12px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-alpha-slider__bar{position:relative;background:-webkit-gradient(linear,left top,right top,from(rgba(255,255,255,0)),to(white));background:linear-gradient(to right,rgba(255,255,255,0) 0,#fff 100%);height:100%}.el-color-alpha-slider__thumb{position:absolute;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;-webkit-box-shadow:0 0 2px rgba(0,0,0,.6);box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-alpha-slider.is-vertical{width:20px;height:180px}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__bar{background:-webkit-gradient(linear,left top,left bottom,from(rgba(255,255,255,0)),to(white));background:linear-gradient(to bottom,rgba(255,255,255,0) 0,#fff 100%)}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-dropdown{width:300px}.el-color-dropdown__main-wrapper{margin-bottom:6px}.el-color-dropdown__main-wrapper::after{content:"";display:table;clear:both}.el-color-dropdown__btns{margin-top:6px;text-align:right}.el-color-dropdown__value{float:left;line-height:26px;font-size:12px;color:#000;width:160px}.el-color-dropdown__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-color-dropdown__btn[disabled]{color:#ccc;cursor:not-allowed}.el-color-dropdown__btn:hover{color:#409EFF;border-color:#409EFF}.el-color-dropdown__link-btn{cursor:pointer;color:#409EFF;text-decoration:none;padding:15px;font-size:12px}.el-color-dropdown__link-btn:hover{color:tint(#409EFF,20%)}.el-color-picker{display:inline-block;position:relative;line-height:normal;height:40px}.el-color-picker.is-disabled .el-color-picker__trigger{cursor:not-allowed}.el-color-picker--medium{height:36px}.el-color-picker--medium .el-color-picker__trigger{height:36px;width:36px}.el-color-picker--medium .el-color-picker__mask{height:34px;width:34px}.el-color-picker--small{height:32px}.el-color-picker--small .el-color-picker__trigger{height:32px;width:32px}.el-color-picker--small .el-color-picker__mask{height:30px;width:30px}.el-color-picker--small .el-color-picker__empty,.el-color-picker--small .el-color-picker__icon{-webkit-transform:translate3d(-50%,-50%,0) scale(.8);transform:translate3d(-50%,-50%,0) scale(.8)}.el-color-picker--mini{height:28px}.el-color-picker--mini .el-color-picker__trigger{height:28px;width:28px}.el-color-picker--mini .el-color-picker__mask{height:26px;width:26px}.el-color-picker--mini .el-color-picker__empty,.el-color-picker--mini .el-color-picker__icon{-webkit-transform:translate3d(-50%,-50%,0) scale(.8);transform:translate3d(-50%,-50%,0) scale(.8)}.el-color-picker__mask{height:38px;width:38px;border-radius:4px;position:absolute;top:1px;left:1px;z-index:1;cursor:not-allowed;background-color:rgba(255,255,255,.7)}.el-color-picker__trigger{display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;height:40px;width:40px;padding:4px;border:1px solid #e6e6e6;border-radius:4px;font-size:0;position:relative;cursor:pointer}.el-color-picker__color{position:relative;display:block;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid #999;border-radius:2px;width:100%;height:100%;text-align:center}.el-color-picker__color.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-picker__color-inner{position:absolute;left:0;top:0;right:0;bottom:0}.el-color-picker__empty,.el-color-picker__icon{top:50%;left:50%;font-size:12px;position:absolute}.el-color-picker__empty{color:#999;-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0)}.el-color-picker__icon{display:inline-block;width:100%;-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0);color:#FFF;text-align:center}.el-color-picker__panel{position:absolute;z-index:10;padding:6px;-webkit-box-sizing:content-box;box-sizing:content-box;background-color:#FFF;border:1px solid #EBEEF5;border-radius:4px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-textarea{position:relative;display:inline-block;width:100%;vertical-align:bottom;font-size:14px}.el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:inherit;color:#606266;background-color:#FFF;background-image:none;border:1px solid #DCDFE6;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.el-textarea__inner::-webkit-input-placeholder{color:#C0C4CC}.el-textarea__inner:-ms-input-placeholder{color:#C0C4CC}.el-textarea__inner::-ms-input-placeholder{color:#C0C4CC}.el-textarea__inner::placeholder{color:#C0C4CC}.el-textarea__inner:hover{border-color:#C0C4CC}.el-textarea__inner:focus{outline:0;border-color:#409EFF}.el-textarea .el-input__count{color:#909399;background:#FFF;position:absolute;font-size:12px;bottom:5px;right:10px}.el-textarea.is-disabled .el-textarea__inner{background-color:#F5F7FA;border-color:#E4E7ED;color:#C0C4CC;cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#C0C4CC}.el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder{color:#C0C4CC}.el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#C0C4CC}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:#C0C4CC}.el-textarea.is-exceed .el-textarea__inner{border-color:#F56C6C}.el-textarea.is-exceed .el-input__count{color:#F56C6C}.el-input{position:relative;font-size:14px;display:inline-block;width:100%}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.el-input::-webkit-scrollbar-corner{background:#fff}.el-input::-webkit-scrollbar-track{background:#fff}.el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.el-input .el-input__clear{color:#C0C4CC;font-size:14px;cursor:pointer;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1)}.el-input .el-input__clear:hover{color:#909399}.el-input .el-input__count{height:100%;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#909399;font-size:12px}.el-input .el-input__count .el-input__count-inner{background:#FFF;line-height:initial;display:inline-block;padding:0 5px}.el-input__inner{-webkit-appearance:none;background-color:#FFF;background-image:none;border-radius:4px;border:1px solid #DCDFE6;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;display:inline-block;font-size:inherit;height:40px;line-height:40px;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%}.el-input__prefix,.el-input__suffix{position:absolute;top:0;-webkit-transition:all .3s;height:100%;color:#C0C4CC;text-align:center}.el-input__inner::-webkit-input-placeholder{color:#C0C4CC}.el-input__inner:-ms-input-placeholder{color:#C0C4CC}.el-input__inner::-ms-input-placeholder{color:#C0C4CC}.el-input__inner::placeholder{color:#C0C4CC}.el-input__inner:hover{border-color:#C0C4CC}.el-input.is-active .el-input__inner,.el-input__inner:focus{border-color:#409EFF;outline:0}.el-input__suffix{right:5px;transition:all .3s}.el-input__suffix-inner{pointer-events:all}.el-input__prefix{left:5px;transition:all .3s}.el-input__icon{height:100%;width:25px;text-align:center;-webkit-transition:all .3s;transition:all .3s;line-height:40px}.el-input__icon:after{content:'';height:100%;width:0;display:inline-block;vertical-align:middle}.el-input__validateIcon{pointer-events:none}.el-input.is-disabled .el-input__inner{background-color:#F5F7FA;border-color:#E4E7ED;color:#C0C4CC;cursor:not-allowed}.el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#C0C4CC}.el-input.is-disabled .el-input__inner:-ms-input-placeholder{color:#C0C4CC}.el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#C0C4CC}.el-input.is-disabled .el-input__inner::placeholder{color:#C0C4CC}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-link,.el-transfer-panel__filter .el-icon-circle-close{cursor:pointer}.el-input.is-exceed .el-input__inner{border-color:#F56C6C}.el-input.is-exceed .el-input__suffix .el-input__count{color:#F56C6C}.el-input--suffix .el-input__inner{padding-right:30px}.el-input--prefix .el-input__inner{padding-left:30px}.el-input--medium{font-size:14px}.el-input--medium .el-input__inner{height:36px;line-height:36px}.el-input--medium .el-input__icon{line-height:36px}.el-input--small{font-size:13px}.el-input--small .el-input__inner{height:32px;line-height:32px}.el-input--small .el-input__icon{line-height:32px}.el-input--mini{font-size:12px}.el-input--mini .el-input__inner{height:28px;line-height:28px}.el-input--mini .el-input__icon{line-height:28px}.el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate;border-spacing:0}.el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.el-input-group__append,.el-input-group__prepend{background-color:#F5F7FA;color:#909399;vertical-align:middle;display:table-cell;position:relative;border:1px solid #DCDFE6;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.el-input-group--prepend .el-input__inner,.el-input-group__append{border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--append .el-input__inner,.el-input-group__prepend{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:0}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:-10px -20px}.el-input-group__append button.el-button,.el-input-group__append div.el-select .el-input__inner,.el-input-group__append div.el-select:hover .el-input__inner,.el-input-group__prepend button.el-button,.el-input-group__prepend div.el-select .el-input__inner,.el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{border-right:0}.el-input-group__append{border-left:0}.el-input-group--append .el-select .el-input.is-focus .el-input__inner,.el-input-group--prepend .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input__inner::-ms-clear{display:none;width:0;height:0}.el-transfer{font-size:14px}.el-transfer__buttons{display:inline-block;vertical-align:middle;padding:0 30px}.el-transfer__button{display:block;margin:0 auto;padding:10px;border-radius:50%;color:#FFF;background-color:#409EFF;font-size:0}.el-transfer-panel__item+.el-transfer-panel__item,.el-transfer__button [class*=el-icon-]+span{margin-left:0}.el-transfer__button.is-with-texts{border-radius:4px}.el-transfer__button.is-disabled,.el-transfer__button.is-disabled:hover{border:1px solid #DCDFE6;background-color:#F5F7FA;color:#C0C4CC}.el-transfer__button:first-child{margin-bottom:10px}.el-transfer__button:nth-child(2){margin:0}.el-transfer__button i,.el-transfer__button span{font-size:14px}.el-transfer-panel{border:1px solid #EBEEF5;border-radius:4px;overflow:hidden;background:#FFF;display:inline-block;vertical-align:middle;width:200px;max-height:100%;-webkit-box-sizing:border-box;box-sizing:border-box;position:relative}.el-transfer-panel__body{height:246px}.el-transfer-panel__body.is-with-footer{padding-bottom:40px}.el-transfer-panel__list{margin:0;padding:6px 0;list-style:none;height:246px;overflow:auto;-webkit-box-sizing:border-box;box-sizing:border-box}.el-transfer-panel__list.is-filterable{height:194px;padding-top:0}.el-transfer-panel__item{height:30px;line-height:30px;padding-left:15px;display:block!important}.el-transfer-panel__item.el-checkbox{color:#606266}.el-transfer-panel__item:hover{color:#409EFF}.el-transfer-panel__item.el-checkbox .el-checkbox__label{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;-webkit-box-sizing:border-box;box-sizing:border-box;padding-left:24px;line-height:30px}.el-transfer-panel__item .el-checkbox__input{position:absolute;top:8px}.el-transfer-panel__filter{text-align:center;margin:15px;-webkit-box-sizing:border-box;box-sizing:border-box;display:block;width:auto}.el-transfer-panel__filter .el-input__inner{height:32px;width:100%;font-size:12px;display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:16px;padding-right:10px;padding-left:30px}.el-transfer-panel__filter .el-input__icon{margin-left:5px}.el-transfer-panel .el-transfer-panel__header{height:40px;line-height:40px;background:#F5F7FA;margin:0;padding-left:15px;border-bottom:1px solid #EBEEF5;-webkit-box-sizing:border-box;box-sizing:border-box;color:#000}.el-transfer-panel .el-transfer-panel__header .el-checkbox{display:block;line-height:40px}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label{font-size:16px;color:#303133;font-weight:400}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label span{position:absolute;right:15px;color:#909399;font-size:12px;font-weight:400}.el-divider__text,.el-link{font-weight:500;font-size:14px}.el-transfer-panel .el-transfer-panel__footer{height:40px;background:#FFF;margin:0;padding:0;border-top:1px solid #EBEEF5;position:absolute;bottom:0;left:0;width:100%;z-index:1}.el-transfer-panel .el-transfer-panel__footer::after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-container,.el-timeline-item__node{display:-webkit-box;display:-ms-flexbox}.el-transfer-panel .el-transfer-panel__footer .el-checkbox{padding-left:20px;color:#606266}.el-transfer-panel .el-transfer-panel__empty{margin:0;height:30px;line-height:30px;padding:6px 15px 0;color:#909399;text-align:center}.el-transfer-panel .el-checkbox__label{padding-left:8px}.el-transfer-panel .el-checkbox__inner{height:14px;width:14px;border-radius:3px}.el-transfer-panel .el-checkbox__inner::after{height:6px;width:3px;left:4px}.el-container{display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-preferred-size:auto;flex-basis:auto;-webkit-box-sizing:border-box;box-sizing:border-box;min-width:0}.el-container.is-vertical,.el-drawer{-webkit-box-orient:vertical;-webkit-box-direction:normal}.el-aside,.el-header{-webkit-box-sizing:border-box}.el-container.is-vertical{-ms-flex-direction:column;flex-direction:column}.el-header{padding:0 20px;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}.el-aside{overflow:auto;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}.el-footer,.el-main{-webkit-box-sizing:border-box}.el-main{display:block;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-preferred-size:auto;flex-basis:auto;overflow:auto;box-sizing:border-box;padding:20px}.el-footer{padding:0 20px;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}.el-timeline{margin:0;font-size:14px;list-style:none}.el-timeline .el-timeline-item:last-child .el-timeline-item__tail{display:none}.el-timeline-item{position:relative;padding-bottom:20px}.el-timeline-item__wrapper{position:relative;padding-left:28px;top:-3px}.el-timeline-item__tail{position:absolute;left:4px;height:100%;border-left:2px solid #E4E7ED}.el-timeline-item__icon{color:#FFF;font-size:13px}.el-timeline-item__node{position:absolute;background-color:#E4E7ED;border-radius:50%;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-image__error,.el-timeline-item__dot{display:-webkit-box;display:-ms-flexbox}.el-timeline-item__node--normal{left:-1px;width:12px;height:12px}.el-timeline-item__node--large{left:-2px;width:14px;height:14px}.el-timeline-item__node--primary{background-color:#409EFF}.el-timeline-item__node--success{background-color:#67C23A}.el-timeline-item__node--warning{background-color:#E6A23C}.el-timeline-item__node--danger{background-color:#F56C6C}.el-timeline-item__node--info{background-color:#909399}.el-timeline-item__dot{position:absolute;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-timeline-item__content{color:#303133}.el-timeline-item__timestamp{color:#909399;line-height:1;font-size:13px}.el-timeline-item__timestamp.is-top{margin-bottom:8px;padding-top:4px}.el-timeline-item__timestamp.is-bottom{margin-top:8px}.el-link{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;vertical-align:middle;position:relative;text-decoration:none;outline:0;padding:0}.el-link.is-underline:hover:after{content:"";position:absolute;left:0;right:0;height:0;bottom:0;border-bottom:1px solid #409EFF}.el-link.el-link--default:after,.el-link.el-link--primary.is-underline:hover:after,.el-link.el-link--primary:after{border-color:#409EFF}.el-link.is-disabled{cursor:not-allowed}.el-link [class*=el-icon-]+span{margin-left:5px}.el-link.el-link--default{color:#606266}.el-link.el-link--default:hover{color:#409EFF}.el-link.el-link--default.is-disabled{color:#C0C4CC}.el-link.el-link--primary{color:#409EFF}.el-link.el-link--primary:hover{color:#66b1ff}.el-link.el-link--primary.is-disabled{color:#a0cfff}.el-link.el-link--danger.is-underline:hover:after,.el-link.el-link--danger:after{border-color:#F56C6C}.el-link.el-link--danger{color:#F56C6C}.el-link.el-link--danger:hover{color:#f78989}.el-link.el-link--danger.is-disabled{color:#fab6b6}.el-link.el-link--success.is-underline:hover:after,.el-link.el-link--success:after{border-color:#67C23A}.el-link.el-link--success{color:#67C23A}.el-link.el-link--success:hover{color:#85ce61}.el-link.el-link--success.is-disabled{color:#b3e19d}.el-link.el-link--warning.is-underline:hover:after,.el-link.el-link--warning:after{border-color:#E6A23C}.el-link.el-link--warning{color:#E6A23C}.el-link.el-link--warning:hover{color:#ebb563}.el-link.el-link--warning.is-disabled{color:#f3d19e}.el-link.el-link--info.is-underline:hover:after,.el-link.el-link--info:after{border-color:#909399}.el-link.el-link--info{color:#909399}.el-link.el-link--info:hover{color:#a6a9ad}.el-link.el-link--info.is-disabled{color:#c8c9cc}.el-divider{background-color:#DCDFE6;position:relative}.el-divider--horizontal{display:block;height:1px;width:100%;margin:24px 0}.el-divider--vertical{display:inline-block;width:1px;height:1em;margin:0 8px;vertical-align:middle;position:relative}.el-divider__text{position:absolute;background-color:#FFF;padding:0 20px;color:#303133}.el-image__error,.el-image__placeholder{background:#F5F7FA}.el-divider__text.is-left{left:20px;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-divider__text.is-center{left:50%;-webkit-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.el-divider__text.is-right{right:20px;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-image__error,.el-image__inner,.el-image__placeholder{width:100%;height:100%}.el-image{position:relative;display:inline-block;overflow:hidden}.el-image__inner{vertical-align:top}.el-image__inner--center{position:relative;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);display:block}.el-image__error{display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:14px;color:#C0C4CC;vertical-align:middle}.el-image__preview{cursor:pointer}.el-image-viewer__wrapper{position:fixed;top:0;right:0;bottom:0;left:0}.el-image-viewer__btn{position:absolute;z-index:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:50%;opacity:.8;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;user-select:none}.el-button,.el-checkbox{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.el-image-viewer__close{top:40px;right:40px;width:40px;height:40px;font-size:24px;color:#fff;background-color:#606266}.el-image-viewer__canvas{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-image-viewer__actions{left:50%;bottom:30px;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:282px;height:44px;padding:0 23px;background-color:#606266;border-color:#fff;border-radius:22px}.el-image-viewer__actions__inner{width:100%;height:100%;text-align:justify;cursor:default;font-size:23px;color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-pack:distribute;justify-content:space-around}.el-image-viewer__next,.el-image-viewer__prev{top:50%;width:44px;height:44px;font-size:24px;color:#fff;background-color:#606266;border-color:#fff}.el-image-viewer__prev{-webkit-transform:translateY(-50%);transform:translateY(-50%);left:40px}.el-image-viewer__next{-webkit-transform:translateY(-50%);transform:translateY(-50%);right:40px;text-indent:2px}.el-image-viewer__mask{position:absolute;width:100%;height:100%;top:0;left:0;opacity:.5;background:#000}.viewer-fade-enter-active{-webkit-animation:viewer-fade-in .3s;animation:viewer-fade-in .3s}.viewer-fade-leave-active{-webkit-animation:viewer-fade-out .3s;animation:viewer-fade-out .3s}@-webkit-keyframes viewer-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes viewer-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes viewer-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes viewer-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}.el-button{display:inline-block;line-height:1;white-space:nowrap;cursor:pointer;background:#FFF;border:1px solid #DCDFE6;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;-webkit-transition:.1s;transition:.1s;font-weight:500;padding:12px 20px;font-size:14px;border-radius:4px}.el-button+.el-button{margin-left:10px}.el-button:focus,.el-button:hover{color:#409EFF;border-color:#c6e2ff;background-color:#ecf5ff}.el-button:active{color:#3a8ee6;border-color:#3a8ee6;outline:0}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon-]+span{margin-left:5px}.el-button.is-plain:focus,.el-button.is-plain:hover{background:#FFF;border-color:#409EFF;color:#409EFF}.el-button.is-active,.el-button.is-plain:active{color:#3a8ee6;border-color:#3a8ee6}.el-button.is-plain:active{background:#FFF;outline:0}.el-button.is-disabled,.el-button.is-disabled:focus,.el-button.is-disabled:hover{color:#C0C4CC;cursor:not-allowed;background-image:none;background-color:#FFF;border-color:#EBEEF5}.el-button.is-disabled.el-button--text{background-color:transparent}.el-button.is-disabled.is-plain,.el-button.is-disabled.is-plain:focus,.el-button.is-disabled.is-plain:hover{background-color:#FFF;border-color:#EBEEF5;color:#C0C4CC}.el-button.is-loading{position:relative;pointer-events:none}.el-button.is-loading:before{pointer-events:none;content:'';position:absolute;left:-1px;top:-1px;right:-1px;bottom:-1px;border-radius:inherit;background-color:rgba(255,255,255,.35)}.el-button.is-round{border-radius:20px;padding:12px 23px}.el-button.is-circle{border-radius:50%;padding:12px}.el-button--primary{color:#FFF;background-color:#409EFF;border-color:#409EFF}.el-button--primary:focus,.el-button--primary:hover{background:#66b1ff;border-color:#66b1ff;color:#FFF}.el-button--primary.is-active,.el-button--primary:active{background:#3a8ee6;border-color:#3a8ee6;color:#FFF}.el-button--primary:active{outline:0}.el-button--primary.is-disabled,.el-button--primary.is-disabled:active,.el-button--primary.is-disabled:focus,.el-button--primary.is-disabled:hover{color:#FFF;background-color:#a0cfff;border-color:#a0cfff}.el-button--primary.is-plain{color:#409EFF;background:#ecf5ff;border-color:#b3d8ff}.el-button--primary.is-plain:focus,.el-button--primary.is-plain:hover{background:#409EFF;border-color:#409EFF;color:#FFF}.el-button--primary.is-plain:active{background:#3a8ee6;border-color:#3a8ee6;color:#FFF;outline:0}.el-button--primary.is-plain.is-disabled,.el-button--primary.is-plain.is-disabled:active,.el-button--primary.is-plain.is-disabled:focus,.el-button--primary.is-plain.is-disabled:hover{color:#8cc5ff;background-color:#ecf5ff;border-color:#d9ecff}.el-button--success{color:#FFF;background-color:#67C23A;border-color:#67C23A}.el-button--success:focus,.el-button--success:hover{background:#85ce61;border-color:#85ce61;color:#FFF}.el-button--success.is-active,.el-button--success:active{background:#5daf34;border-color:#5daf34;color:#FFF}.el-button--success:active{outline:0}.el-button--success.is-disabled,.el-button--success.is-disabled:active,.el-button--success.is-disabled:focus,.el-button--success.is-disabled:hover{color:#FFF;background-color:#b3e19d;border-color:#b3e19d}.el-button--success.is-plain{color:#67C23A;background:#f0f9eb;border-color:#c2e7b0}.el-button--success.is-plain:focus,.el-button--success.is-plain:hover{background:#67C23A;border-color:#67C23A;color:#FFF}.el-button--success.is-plain:active{background:#5daf34;border-color:#5daf34;color:#FFF;outline:0}.el-button--success.is-plain.is-disabled,.el-button--success.is-plain.is-disabled:active,.el-button--success.is-plain.is-disabled:focus,.el-button--success.is-plain.is-disabled:hover{color:#a4da89;background-color:#f0f9eb;border-color:#e1f3d8}.el-button--warning{color:#FFF;background-color:#E6A23C;border-color:#E6A23C}.el-button--warning:focus,.el-button--warning:hover{background:#ebb563;border-color:#ebb563;color:#FFF}.el-button--warning.is-active,.el-button--warning:active{background:#cf9236;border-color:#cf9236;color:#FFF}.el-button--warning:active{outline:0}.el-button--warning.is-disabled,.el-button--warning.is-disabled:active,.el-button--warning.is-disabled:focus,.el-button--warning.is-disabled:hover{color:#FFF;background-color:#f3d19e;border-color:#f3d19e}.el-button--warning.is-plain{color:#E6A23C;background:#fdf6ec;border-color:#f5dab1}.el-button--warning.is-plain:focus,.el-button--warning.is-plain:hover{background:#E6A23C;border-color:#E6A23C;color:#FFF}.el-button--warning.is-plain:active{background:#cf9236;border-color:#cf9236;color:#FFF;outline:0}.el-button--warning.is-plain.is-disabled,.el-button--warning.is-plain.is-disabled:active,.el-button--warning.is-plain.is-disabled:focus,.el-button--warning.is-plain.is-disabled:hover{color:#f0c78a;background-color:#fdf6ec;border-color:#faecd8}.el-button--danger{color:#FFF;background-color:#F56C6C;border-color:#F56C6C}.el-button--danger:focus,.el-button--danger:hover{background:#f78989;border-color:#f78989;color:#FFF}.el-button--danger.is-active,.el-button--danger:active{background:#dd6161;border-color:#dd6161;color:#FFF}.el-button--danger:active{outline:0}.el-button--danger.is-disabled,.el-button--danger.is-disabled:active,.el-button--danger.is-disabled:focus,.el-button--danger.is-disabled:hover{color:#FFF;background-color:#fab6b6;border-color:#fab6b6}.el-button--danger.is-plain{color:#F56C6C;background:#fef0f0;border-color:#fbc4c4}.el-button--danger.is-plain:focus,.el-button--danger.is-plain:hover{background:#F56C6C;border-color:#F56C6C;color:#FFF}.el-button--danger.is-plain:active{background:#dd6161;border-color:#dd6161;color:#FFF;outline:0}.el-button--danger.is-plain.is-disabled,.el-button--danger.is-plain.is-disabled:active,.el-button--danger.is-plain.is-disabled:focus,.el-button--danger.is-plain.is-disabled:hover{color:#f9a7a7;background-color:#fef0f0;border-color:#fde2e2}.el-button--info{color:#FFF;background-color:#909399;border-color:#909399}.el-button--info:focus,.el-button--info:hover{background:#a6a9ad;border-color:#a6a9ad;color:#FFF}.el-button--info.is-active,.el-button--info:active{background:#82848a;border-color:#82848a;color:#FFF}.el-button--info:active{outline:0}.el-button--info.is-disabled,.el-button--info.is-disabled:active,.el-button--info.is-disabled:focus,.el-button--info.is-disabled:hover{color:#FFF;background-color:#c8c9cc;border-color:#c8c9cc}.el-button--info.is-plain{color:#909399;background:#f4f4f5;border-color:#d3d4d6}.el-button--info.is-plain:focus,.el-button--info.is-plain:hover{background:#909399;border-color:#909399;color:#FFF}.el-button--info.is-plain:active{background:#82848a;border-color:#82848a;color:#FFF;outline:0}.el-button--info.is-plain.is-disabled,.el-button--info.is-plain.is-disabled:active,.el-button--info.is-plain.is-disabled:focus,.el-button--info.is-plain.is-disabled:hover{color:#bcbec2;background-color:#f4f4f5;border-color:#e9e9eb}.el-button--text,.el-button--text.is-disabled,.el-button--text.is-disabled:focus,.el-button--text.is-disabled:hover,.el-button--text:active{border-color:transparent}.el-button--medium{padding:10px 20px;font-size:14px;border-radius:4px}.el-button--mini,.el-button--small{font-size:12px;border-radius:3px}.el-button--medium.is-round{padding:10px 20px}.el-button--medium.is-circle{padding:10px}.el-button--small,.el-button--small.is-round{padding:9px 15px}.el-button--small.is-circle{padding:9px}.el-button--mini,.el-button--mini.is-round{padding:7px 15px}.el-button--mini.is-circle{padding:7px}.el-button--text{color:#409EFF;background:0 0;padding-left:0;padding-right:0}.el-button--text:focus,.el-button--text:hover{color:#66b1ff;border-color:transparent;background-color:transparent}.el-button--text:active{color:#3a8ee6;background-color:transparent}.el-button-group{display:inline-block;vertical-align:middle}.el-button-group::after,.el-button-group::before{display:table;content:""}.el-button-group::after{clear:both}.el-button-group>.el-button{float:left;position:relative}.el-button-group>.el-button+.el-button{margin-left:0}.el-button-group>.el-button.is-disabled{z-index:1}.el-button-group>.el-button:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.el-button-group>.el-button:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.el-button-group>.el-button:first-child:last-child{border-radius:4px}.el-button-group>.el-button:first-child:last-child.is-round{border-radius:20px}.el-button-group>.el-button:first-child:last-child.is-circle{border-radius:50%}.el-button-group>.el-button:not(:first-child):not(:last-child){border-radius:0}.el-button-group>.el-button:not(:last-child){margin-right:-1px}.el-button-group>.el-button.is-active,.el-button-group>.el-button:active,.el-button-group>.el-button:focus,.el-button-group>.el-button:hover{z-index:1}.el-button-group>.el-dropdown>.el-button{border-top-left-radius:0;border-bottom-left-radius:0;border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-calendar{background-color:#fff}.el-calendar__header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:12px 20px;border-bottom:1px solid #EBEEF5}.el-backtop,.el-page-header{display:-webkit-box;display:-ms-flexbox}.el-calendar__title{color:#000;-ms-flex-item-align:center;align-self:center}.el-calendar__body{padding:12px 20px 35px}.el-calendar-table{table-layout:fixed;width:100%}.el-calendar-table thead th{padding:12px 0;color:#606266;font-weight:400}.el-calendar-table:not(.is-range) td.next,.el-calendar-table:not(.is-range) td.prev{color:#C0C4CC}.el-backtop,.el-calendar-table td.is-today{color:#409EFF}.el-calendar-table td{border-bottom:1px solid #EBEEF5;border-right:1px solid #EBEEF5;vertical-align:top;-webkit-transition:background-color .2s ease;transition:background-color .2s ease}.el-calendar-table td.is-selected{background-color:#F2F8FE}.el-calendar-table tr:first-child td{border-top:1px solid #EBEEF5}.el-calendar-table tr td:first-child{border-left:1px solid #EBEEF5}.el-calendar-table tr.el-calendar-table__row--hide-border td{border-top:none}.el-calendar-table .el-calendar-day{-webkit-box-sizing:border-box;box-sizing:border-box;padding:8px;height:85px}.el-calendar-table .el-calendar-day:hover{cursor:pointer;background-color:#F2F8FE}.el-backtop{position:fixed;background-color:#FFF;width:40px;height:40px;border-radius:50%;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:20px;-webkit-box-shadow:0 0 6px rgba(0,0,0,.12);box-shadow:0 0 6px rgba(0,0,0,.12);cursor:pointer;z-index:5}.el-backtop:hover{background-color:#F2F6FC}.el-page-header{display:flex;line-height:24px}.el-page-header__left{display:-webkit-box;display:-ms-flexbox;display:flex;cursor:pointer;margin-right:40px;position:relative}.el-page-header__left::after{content:"";position:absolute;width:1px;height:16px;right:-20px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);background-color:#DCDFE6}.el-checkbox,.el-checkbox__input{display:inline-block;position:relative;white-space:nowrap}.el-page-header__left .el-icon-back{font-size:18px;margin-right:6px;-ms-flex-item-align:center;align-self:center}.el-page-header__title{font-size:14px;font-weight:500}.el-page-header__content{font-size:18px;color:#303133}.el-checkbox{color:#606266;font-weight:500;font-size:14px;cursor:pointer;user-select:none;margin-right:30px}.el-checkbox-button__inner,.el-radio{font-weight:500;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.el-checkbox.is-bordered{padding:9px 20px 9px 10px;border-radius:4px;border:1px solid #DCDFE6;-webkit-box-sizing:border-box;box-sizing:border-box;line-height:normal;height:40px}.el-checkbox.is-bordered.is-checked{border-color:#409EFF}.el-checkbox.is-bordered.is-disabled{border-color:#EBEEF5;cursor:not-allowed}.el-checkbox.is-bordered+.el-checkbox.is-bordered{margin-left:10px}.el-checkbox.is-bordered.el-checkbox--medium{padding:7px 20px 7px 10px;border-radius:4px;height:36px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__label{line-height:17px;font-size:14px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__inner{height:14px;width:14px}.el-checkbox.is-bordered.el-checkbox--small{padding:5px 15px 5px 10px;border-radius:3px;height:32px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{line-height:15px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner::after{height:6px;width:2px}.el-checkbox.is-bordered.el-checkbox--mini{padding:3px 15px 3px 10px;border-radius:3px;height:28px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__label{line-height:12px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner::after{height:6px;width:2px}.el-checkbox__input{cursor:pointer;outline:0;line-height:1;vertical-align:middle}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:#edf2fc;border-color:#DCDFE6;cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner::after{cursor:not-allowed;border-color:#C0C4CC}.el-checkbox__input.is-disabled .el-checkbox__inner+.el-checkbox__label{cursor:not-allowed}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:#F2F6FC;border-color:#DCDFE6}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after{border-color:#C0C4CC}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:#F2F6FC;border-color:#DCDFE6}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner::before{background-color:#C0C4CC;border-color:#C0C4CC}.el-checkbox__input.is-checked .el-checkbox__inner,.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:#409EFF;border-color:#409EFF}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:#C0C4CC;cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner::after{-webkit-transform:rotate(45deg) scaleY(1);transform:rotate(45deg) scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:#409EFF}.el-checkbox__input.is-focus .el-checkbox__inner{border-color:#409EFF}.el-checkbox__input.is-indeterminate .el-checkbox__inner::before{content:'';position:absolute;display:block;background-color:#FFF;height:2px;-webkit-transform:scale(.5);transform:scale(.5);left:0;right:0;top:5px}.el-checkbox__input.is-indeterminate .el-checkbox__inner::after{display:none}.el-checkbox__inner{display:inline-block;position:relative;border:1px solid #DCDFE6;border-radius:2px;-webkit-box-sizing:border-box;box-sizing:border-box;width:14px;height:14px;background-color:#FFF;z-index:1;-webkit-transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46);transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46)}.el-checkbox__inner:hover{border-color:#409EFF}.el-checkbox__inner::after{-webkit-box-sizing:content-box;box-sizing:content-box;content:"";border:1px solid #FFF;border-left:0;border-top:0;height:7px;left:4px;position:absolute;top:1px;-webkit-transform:rotate(45deg) scaleY(0);transform:rotate(45deg) scaleY(0);width:3px;-webkit-transition:-webkit-transform .15s ease-in .05s;transition:-webkit-transform .15s ease-in .05s;transition:transform .15s ease-in .05s;transition:transform .15s ease-in .05s,-webkit-transform .15s ease-in .05s;-webkit-transform-origin:center;transform-origin:center}.el-checkbox__original{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;z-index:-1}.el-checkbox-button,.el-checkbox-button__inner{display:inline-block;position:relative}.el-checkbox__label{display:inline-block;padding-left:10px;line-height:19px;font-size:14px}.el-checkbox:last-of-type{margin-right:0}.el-checkbox-button__inner{line-height:1;white-space:nowrap;vertical-align:middle;cursor:pointer;background:#FFF;border:1px solid #DCDFE6;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);padding:12px 20px;font-size:14px;border-radius:0}.el-checkbox-button__inner.is-round{padding:12px 20px}.el-checkbox-button__inner:hover{color:#409EFF}.el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.el-radio,.el-radio__input{line-height:1;white-space:nowrap;outline:0}.el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.el-checkbox-button__original{opacity:0;outline:0;position:absolute;margin:0;z-index:-1}.el-radio,.el-radio__inner,.el-radio__input{position:relative;display:inline-block}.el-checkbox-button.is-checked .el-checkbox-button__inner{color:#FFF;background-color:#409EFF;border-color:#409EFF;-webkit-box-shadow:-1px 0 0 0 #8cc5ff;box-shadow:-1px 0 0 0 #8cc5ff}.el-checkbox-button.is-checked:first-child .el-checkbox-button__inner{border-left-color:#409EFF}.el-checkbox-button.is-disabled .el-checkbox-button__inner{color:#C0C4CC;cursor:not-allowed;background-image:none;background-color:#FFF;border-color:#EBEEF5;-webkit-box-shadow:none;box-shadow:none}.el-checkbox-button.is-disabled:first-child .el-checkbox-button__inner{border-left-color:#EBEEF5}.el-checkbox-button:first-child .el-checkbox-button__inner{border-left:1px solid #DCDFE6;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:#409EFF}.el-checkbox-button:last-child .el-checkbox-button__inner{border-radius:0 4px 4px 0}.el-checkbox-button--medium .el-checkbox-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-checkbox-button--medium .el-checkbox-button__inner.is-round{padding:10px 20px}.el-checkbox-button--small .el-checkbox-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:9px 15px}.el-checkbox-button--mini .el-checkbox-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-checkbox-button--mini .el-checkbox-button__inner.is-round{padding:7px 15px}.el-checkbox-group{font-size:0}.el-radio,.el-radio--medium.is-bordered .el-radio__label{font-size:14px}.el-radio{color:#606266;cursor:pointer;margin-right:30px}.el-cascader-node>.el-radio,.el-radio:last-child{margin-right:0}.el-radio.is-bordered{padding:12px 20px 0 10px;border-radius:4px;border:1px solid #DCDFE6;-webkit-box-sizing:border-box;box-sizing:border-box;height:40px}.el-radio.is-bordered.is-checked{border-color:#409EFF}.el-radio.is-bordered.is-disabled{cursor:not-allowed;border-color:#EBEEF5}.el-radio__input.is-disabled .el-radio__inner,.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:#F5F7FA;border-color:#E4E7ED}.el-radio.is-bordered+.el-radio.is-bordered{margin-left:10px}.el-radio--medium.is-bordered{padding:10px 20px 0 10px;border-radius:4px;height:36px}.el-radio--mini.is-bordered .el-radio__label,.el-radio--small.is-bordered .el-radio__label{font-size:12px}.el-radio--medium.is-bordered .el-radio__inner{height:14px;width:14px}.el-radio--small.is-bordered{padding:8px 15px 0 10px;border-radius:3px;height:32px}.el-radio--small.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio--mini.is-bordered{padding:6px 15px 0 10px;border-radius:3px;height:28px}.el-radio--mini.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio__input{cursor:pointer;vertical-align:middle}.el-radio__input.is-disabled .el-radio__inner{cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner::after{cursor:not-allowed;background-color:#F5F7FA}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner::after{background-color:#C0C4CC}.el-radio__input.is-disabled+span.el-radio__label{color:#C0C4CC;cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{border-color:#409EFF;background:#409EFF}.el-radio__input.is-checked .el-radio__inner::after{-webkit-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:#409EFF}.el-radio__input.is-focus .el-radio__inner{border-color:#409EFF}.el-radio__inner{border:1px solid #DCDFE6;border-radius:100%;width:14px;height:14px;background-color:#FFF;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box}.el-radio__inner:hover{border-color:#409EFF}.el-radio__inner::after{width:4px;height:4px;border-radius:100%;background-color:#FFF;content:"";position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%) scale(0);transform:translate(-50%,-50%) scale(0);-webkit-transition:-webkit-transform .15s ease-in;transition:-webkit-transform .15s ease-in;transition:transform .15s ease-in;transition:transform .15s ease-in,-webkit-transform .15s ease-in}.el-radio__original{opacity:0;outline:0;position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;margin:0}.el-radio:focus:not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{-webkit-box-shadow:0 0 2px 2px #409EFF;box-shadow:0 0 2px 2px #409EFF}.el-radio__label{font-size:14px;padding-left:10px}.el-scrollbar{overflow:hidden;position:relative}.el-scrollbar:active>.el-scrollbar__bar,.el-scrollbar:focus>.el-scrollbar__bar,.el-scrollbar:hover>.el-scrollbar__bar{opacity:1;-webkit-transition:opacity 340ms ease-out;transition:opacity 340ms ease-out}.el-scrollbar__wrap{overflow:scroll;height:100%}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(144,147,153,.3);-webkit-transition:.3s background-color;transition:.3s background-color}.el-scrollbar__thumb:hover{background-color:rgba(144,147,153,.5)}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;-webkit-transition:opacity 120ms ease-out;transition:opacity 120ms ease-out}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-cascader-panel{display:-webkit-box;display:-ms-flexbox;display:flex;border-radius:4px;font-size:14px}.el-cascader-panel.is-bordered{border:1px solid #E4E7ED;border-radius:4px}.el-cascader-menu{min-width:180px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;border-right:solid 1px #E4E7ED}.el-cascader-menu:last-child{border-right:none}.el-cascader-menu:last-child .el-cascader-node{padding-right:20px}.el-cascader-menu__wrap{height:204px}.el-cascader-menu__list{position:relative;min-height:100%;margin:0;padding:6px 0;list-style:none;-webkit-box-sizing:border-box;box-sizing:border-box}.el-avatar,.el-drawer{-webkit-box-sizing:border-box;overflow:hidden}.el-cascader-menu__hover-zone{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.el-cascader-menu__empty-text{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);text-align:center;color:#C0C4CC}.el-cascader-node{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 30px 0 20px;height:34px;line-height:34px;outline:0}.el-cascader-node.is-selectable.in-active-path{color:#606266}.el-cascader-node.in-active-path,.el-cascader-node.is-active,.el-cascader-node.is-selectable.in-checked-path{color:#409EFF;font-weight:700}.el-cascader-node:not(.is-disabled){cursor:pointer}.el-cascader-node:not(.is-disabled):focus,.el-cascader-node:not(.is-disabled):hover{background:#F5F7FA}.el-cascader-node.is-disabled{color:#C0C4CC;cursor:not-allowed}.el-cascader-node__prefix{position:absolute;left:10px}.el-cascader-node__postfix{position:absolute;right:10px}.el-cascader-node__label{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:0 10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-cascader-node>.el-radio .el-radio__label{padding-left:0}.el-avatar{display:inline-block;box-sizing:border-box;text-align:center;color:#fff;background:#C0C4CC;width:40px;height:40px;line-height:40px;font-size:14px}.el-avatar>img{display:block;height:100%;vertical-align:middle}.el-drawer,.el-drawer__header{display:-webkit-box;display:-ms-flexbox}.el-avatar--circle{border-radius:50%}.el-avatar--square{border-radius:4px}.el-avatar--icon{font-size:18px}.el-avatar--large{width:40px;height:40px;line-height:40px}.el-avatar--medium{width:36px;height:36px;line-height:36px}.el-avatar--small{width:28px;height:28px;line-height:28px}.el-drawer.btt,.el-drawer.ttb,.el-drawer__container{left:0;right:0;width:100%}.el-drawer.ltr,.el-drawer.rtl,.el-drawer__container{top:0;bottom:0;height:100%}@-webkit-keyframes el-drawer-fade-in{0%{opacity:0}100%{opacity:1}}@keyframes el-drawer-fade-in{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes rtl-drawer-in{0%{-webkit-transform:translate(100%,0);transform:translate(100%,0)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@keyframes rtl-drawer-in{0%{-webkit-transform:translate(100%,0);transform:translate(100%,0)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@-webkit-keyframes rtl-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(100%,0);transform:translate(100%,0)}}@keyframes rtl-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(100%,0);transform:translate(100%,0)}}@-webkit-keyframes ltr-drawer-in{0%{-webkit-transform:translate(-100%,0);transform:translate(-100%,0)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@keyframes ltr-drawer-in{0%{-webkit-transform:translate(-100%,0);transform:translate(-100%,0)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@-webkit-keyframes ltr-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(-100%,0);transform:translate(-100%,0)}}@keyframes ltr-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(-100%,0);transform:translate(-100%,0)}}@-webkit-keyframes ttb-drawer-in{0%{-webkit-transform:translate(0,-100%);transform:translate(0,-100%)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@keyframes ttb-drawer-in{0%{-webkit-transform:translate(0,-100%);transform:translate(0,-100%)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@-webkit-keyframes ttb-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(0,-100%);transform:translate(0,-100%)}}@keyframes ttb-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(0,-100%);transform:translate(0,-100%)}}@-webkit-keyframes btt-drawer-in{0%{-webkit-transform:translate(0,100%);transform:translate(0,100%)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@keyframes btt-drawer-in{0%{-webkit-transform:translate(0,100%);transform:translate(0,100%)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@-webkit-keyframes btt-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(0,100%);transform:translate(0,100%)}}@keyframes btt-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(0,100%);transform:translate(0,100%)}}.el-drawer{position:absolute;box-sizing:border-box;background-color:#FFF;display:flex;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12);box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12);outline:0}.el-drawer.rtl{-webkit-animation:rtl-drawer-out .3s;animation:rtl-drawer-out .3s;right:0}.el-drawer__open .el-drawer.rtl{-webkit-animation:rtl-drawer-in .3s 1ms;animation:rtl-drawer-in .3s 1ms}.el-drawer.ltr{-webkit-animation:ltr-drawer-out .3s;animation:ltr-drawer-out .3s;left:0}.el-drawer__open .el-drawer.ltr{-webkit-animation:ltr-drawer-in .3s 1ms;animation:ltr-drawer-in .3s 1ms}.el-drawer.ttb{-webkit-animation:ttb-drawer-out .3s;animation:ttb-drawer-out .3s;top:0}.el-drawer__open .el-drawer.ttb{-webkit-animation:ttb-drawer-in .3s 1ms;animation:ttb-drawer-in .3s 1ms}.el-drawer.btt{-webkit-animation:btt-drawer-out .3s;animation:btt-drawer-out .3s;bottom:0}.el-drawer__open .el-drawer.btt{-webkit-animation:btt-drawer-in .3s 1ms;animation:btt-drawer-in .3s 1ms}.el-drawer__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:hidden;margin:0}.el-drawer__header{-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#72767b;display:flex;margin-bottom:32px;padding:20px 20px 0}.el-drawer__header>:first-child{-webkit-box-flex:1;-ms-flex:1;flex:1}.el-drawer__title{margin:0;-webkit-box-flex:1;-ms-flex:1;flex:1;line-height:inherit;font-size:1rem}.el-drawer__close-btn{border:none;cursor:pointer;font-size:20px;color:inherit;background-color:transparent}.el-drawer__body{-webkit-box-flex:1;-ms-flex:1;flex:1}.el-drawer__body>*{-webkit-box-sizing:border-box;box-sizing:border-box}.el-drawer__container{position:relative}.el-drawer-fade-enter-active{-webkit-animation:el-drawer-fade-in .3s;animation:el-drawer-fade-in .3s}.el-drawer-fade-leave-active{animation:el-drawer-fade-in .3s reverse}.el-popconfirm__main{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-popconfirm__icon{margin-right:5px}.el-popconfirm__action{text-align:right;margin:0}
\ No newline at end of file
diff --git a/xcxMapWzzzz/css/fonts/element-icons.ttf b/xcxMapWzzzz/css/fonts/element-icons.ttf
deleted file mode 100644
index 91b74de..0000000
--- a/xcxMapWzzzz/css/fonts/element-icons.ttf
+++ /dev/null
Binary files differ
diff --git a/xcxMapWzzzz/css/fonts/element-icons.woff b/xcxMapWzzzz/css/fonts/element-icons.woff
deleted file mode 100644
index 02b9a25..0000000
--- a/xcxMapWzzzz/css/fonts/element-icons.woff
+++ /dev/null
Binary files differ
diff --git a/xcxMapWzzzz/img/alarm.png b/xcxMapWzzzz/img/alarm.png
deleted file mode 100644
index 3757de9..0000000
--- a/xcxMapWzzzz/img/alarm.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapWzzzz/img/alarm_time.png b/xcxMapWzzzz/img/alarm_time.png
deleted file mode 100644
index b7a3bf5..0000000
--- a/xcxMapWzzzz/img/alarm_time.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapWzzzz/img/alarm_type.png b/xcxMapWzzzz/img/alarm_type.png
deleted file mode 100644
index 5acd59b..0000000
--- a/xcxMapWzzzz/img/alarm_type.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapWzzzz/img/beizhu.png b/xcxMapWzzzz/img/beizhu.png
deleted file mode 100644
index 323a213..0000000
--- a/xcxMapWzzzz/img/beizhu.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapWzzzz/img/desc.png b/xcxMapWzzzz/img/desc.png
deleted file mode 100644
index 5f4d801..0000000
--- a/xcxMapWzzzz/img/desc.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapWzzzz/img/desc2.png b/xcxMapWzzzz/img/desc2.png
deleted file mode 100644
index c02da9d..0000000
--- a/xcxMapWzzzz/img/desc2.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapWzzzz/img/dianhua.png b/xcxMapWzzzz/img/dianhua.png
deleted file mode 100644
index f5941a6..0000000
--- a/xcxMapWzzzz/img/dianhua.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapWzzzz/img/dingw.gif b/xcxMapWzzzz/img/dingw.gif
deleted file mode 100644
index f50ef1f..0000000
--- a/xcxMapWzzzz/img/dingw.gif
+++ /dev/null
Binary files differ
diff --git a/xcxMapWzzzz/img/dingwei.png b/xcxMapWzzzz/img/dingwei.png
deleted file mode 100644
index 58a917e..0000000
--- a/xcxMapWzzzz/img/dingwei.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapWzzzz/img/gaunbi.png b/xcxMapWzzzz/img/gaunbi.png
deleted file mode 100644
index f3dfa18..0000000
--- a/xcxMapWzzzz/img/gaunbi.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapWzzzz/img/gray.png b/xcxMapWzzzz/img/gray.png
deleted file mode 100644
index 3d2024d..0000000
--- a/xcxMapWzzzz/img/gray.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapWzzzz/img/green.png b/xcxMapWzzzz/img/green.png
deleted file mode 100644
index f6db902..0000000
--- a/xcxMapWzzzz/img/green.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapWzzzz/img/huifang.png b/xcxMapWzzzz/img/huifang.png
deleted file mode 100644
index 0b8d52f..0000000
--- a/xcxMapWzzzz/img/huifang.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapWzzzz/img/leixing.png b/xcxMapWzzzz/img/leixing.png
deleted file mode 100644
index ba2bb3c..0000000
--- a/xcxMapWzzzz/img/leixing.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapWzzzz/img/people.png b/xcxMapWzzzz/img/people.png
deleted file mode 100644
index 5b94a7d..0000000
--- a/xcxMapWzzzz/img/people.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapWzzzz/img/people1.png b/xcxMapWzzzz/img/people1.png
deleted file mode 100644
index c9f756c..0000000
--- a/xcxMapWzzzz/img/people1.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapWzzzz/img/phone call.png b/xcxMapWzzzz/img/phone call.png
deleted file mode 100644
index d8061f8..0000000
--- a/xcxMapWzzzz/img/phone call.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapWzzzz/img/phone.png b/xcxMapWzzzz/img/phone.png
deleted file mode 100644
index 8c0d3cb..0000000
--- a/xcxMapWzzzz/img/phone.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapWzzzz/img/phone1.png b/xcxMapWzzzz/img/phone1.png
deleted file mode 100644
index 7fa6028..0000000
--- a/xcxMapWzzzz/img/phone1.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapWzzzz/img/red.png b/xcxMapWzzzz/img/red.png
deleted file mode 100644
index a4f0271..0000000
--- a/xcxMapWzzzz/img/red.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapWzzzz/img/ren.png b/xcxMapWzzzz/img/ren.png
deleted file mode 100644
index f6200a0..0000000
--- a/xcxMapWzzzz/img/ren.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapWzzzz/img/shijian.png b/xcxMapWzzzz/img/shijian.png
deleted file mode 100644
index da0a0ff..0000000
--- a/xcxMapWzzzz/img/shijian.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapWzzzz/img/shiping.png b/xcxMapWzzzz/img/shiping.png
deleted file mode 100644
index 3e32230..0000000
--- a/xcxMapWzzzz/img/shiping.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapWzzzz/img/shiping11.png b/xcxMapWzzzz/img/shiping11.png
deleted file mode 100644
index c94662f..0000000
--- a/xcxMapWzzzz/img/shiping11.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapWzzzz/img/shiyongren.png b/xcxMapWzzzz/img/shiyongren.png
deleted file mode 100644
index 424c1f4..0000000
--- a/xcxMapWzzzz/img/shiyongren.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapWzzzz/img/type.png b/xcxMapWzzzz/img/type.png
deleted file mode 100644
index 08cc039..0000000
--- a/xcxMapWzzzz/img/type.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapWzzzz/img/type1.png b/xcxMapWzzzz/img/type1.png
deleted file mode 100644
index d569695..0000000
--- a/xcxMapWzzzz/img/type1.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapWzzzz/img/wz.png b/xcxMapWzzzz/img/wz.png
deleted file mode 100644
index 440bf5e..0000000
--- a/xcxMapWzzzz/img/wz.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapWzzzz/img/xiangji.png b/xcxMapWzzzz/img/xiangji.png
deleted file mode 100644
index 6aa4b02..0000000
--- a/xcxMapWzzzz/img/xiangji.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapWzzzz/img/yellow.png b/xcxMapWzzzz/img/yellow.png
deleted file mode 100644
index bdedf67..0000000
--- a/xcxMapWzzzz/img/yellow.png
+++ /dev/null
Binary files differ
diff --git a/xcxMapWzzzz/js/geolocation.min.js b/xcxMapWzzzz/js/geolocation.min.js
deleted file mode 100644
index ea0811c..0000000
--- a/xcxMapWzzzz/js/geolocation.min.js
+++ /dev/null
@@ -1,94 +0,0 @@
-window.qq = window.qq || {}, qq.maps = qq.maps || {}, window.soso || (window.soso = qq), soso.maps || (soso.maps = qq
-	.maps), qq.maps.Geolocation = function() {
-	"use strict";
-	var e = [],
-		t = null,
-		o = 0,
-		n = "_geoIframe_" + Math.ceil(1e7 * Math.random()),
-		i = document.createElement("iframe"),
-		r = null,
-		s = null,
-		a = null,
-		c = null,
-		u = function(u, l) {
-			if (!u) return void alert("请输入key!");
-			if (!l) return void alert("请输入referer!");
-			var p = document.getElementById(n);
-			if (!p) {
-				i.setAttribute("id", n), i.setAttribute("allow", "geolocation");
-				var g = "https:";
-				i.setAttribute("src", g + "//web.byisf.com/txdw/tools/geolocation?key=" + u + "&referer=" + l), i
-					.setAttribute("style", "display: none; width: 100%; height: 30%"), document.body ? document.body
-					.appendChild(i) : document.write(i.outerHTML);
-				var m = this;
-				window.addEventListener("message", function(n) {
-					var i = n.data;
-					if (i && "geolocation" == i.module) {
-						if (clearTimeout(c), e.length > 0) {
-							var u = e.shift();
-							u.sucCb && u.sucCb(i)
-						}
-						o = 2, m.executeNextGeo(), t && t(i)
-					} else {
-						s = (new Date).getTime();
-						var l = s - r;
-						if (l >= a) {
-							if (e.length > 0 && "geo" === e[0].type) {
-								var u = e.shift(),
-									p = {
-										type: "fail",
-										code: 5,
-										message: "The request"
-									};
-								u.errCb && u.errCb(p)
-							}
-							clearTimeout(c), o = -1, m.executeNextGeo()
-						}
-						if (e.length > 0 && "ip" === e[0].type) {
-							var u = e.shift();
-							u.errCb && u.errCb(p)
-						}
-					}
-				}, !1)
-			}
-		};
-	return u.prototype.executeNextGeo = function() {
-		1 !== o && e.length > 0 && (o = 1, e[0].geoprocess())
-	}, u.prototype.getLocation = function(t, n, i) {
-		if (i && i.timeout) {
-			var r = new RegExp("^[0-9]*$");
-			if (!r.test(i.timeout)) return void alert("timeout 请输入数字")
-		}
-		if (e.length > 10) throw new Error("geolocation queue must be lass than 10");
-		e.push({
-			sucCb: t,
-			errCb: n,
-			option: i,
-			geoprocess: this.getOnceLocation,
-			type: "geo"
-		}), 1 !== o && (o = 1, this.getOnceLocation())
-	}, u.prototype.getOnceLocation = function() {
-		var t = e[0] && e[0].option;
-		r = (new Date).getTime(), a = t && t.timeout ? +t.timeout : 1e4, clearTimeout(c), c = setTimeout(
-			function() {
-				if (e.length > 0) {
-					var t = e.shift();
-					t.errCb && t.errCb()
-				}
-			}, a), document.getElementById(n).contentWindow.postMessage("getLocation", "*")
-	}, u.prototype.getIpLocation = function(t, n) {
-		if (e.length > 10) throw new Error("geolocation queue mast be lass than 10");
-		e.push({
-			sucCb: t,
-			errCb: n,
-			geoprocess: this.getOnceIpLocation,
-			type: "ip"
-		}), 1 !== o && (o = 1, this.getOnceIpLocation())
-	}, u.prototype.getOnceIpLocation = function() {
-		document.getElementById(n).contentWindow.postMessage("getLocation.robust", "*")
-	}, u.prototype.watchPosition = function(e) {
-		t = e, document.getElementById(n).contentWindow.postMessage("watchPosition", "*")
-	}, u.prototype.clearWatch = function() {
-		t = null, document.getElementById(n).contentWindow.postMessage("clearWatch", "*")
-	}, u
-}();
diff --git a/xcxMapWzzzz/js/move.js b/xcxMapWzzzz/js/move.js
deleted file mode 100644
index b2ac24c..0000000
--- a/xcxMapWzzzz/js/move.js
+++ /dev/null
@@ -1,132 +0,0 @@
-// 使用说明:(需要移动的dom,触摸块dom,跟随改变map dom)
-function myDomMove(dom, div, map) {
-    this.m = $(dom);
-    this.div = $(div);
-    this.mapId = $(map);
-    this.__xx = null; //鼠标实时位置
-    this.__yy = null;
-    this.__sx = null; //鼠标开始位置
-    this.__sy = null;
-    this.__dx = null; //dom位置
-    this.__dy = null;
-    this.mapH = null; //地图高度
-    this.__wy = null; //屏幕高度
-    this.state = "up"; //dom状态默认up
-
-    this.getMosePosition = (x, y) => { //获取鼠标位置
-        this.__sx = x;
-        this.__sy = y;
-        // console.log(this.__sy, '鼠标开始');
-
-    }
-    this.getDomPosition = () => { //获取dom位置
-        this.__dx = this.m.offset().left;
-        this.__dy = this.m.offset().top;
-        this.__wy = document.documentElement.clientHeight;
-        // console.log(this.__dy, 'dom');
-    }
-    this.getMapHeight = () => { //获取地图高度
-        var that = this;
-        this.mapId.css("height", (index, value) => {
-                that.mapH = parseFloat(value);
-            })
-            // console.log(that.mapH, 'map位置');
-    }
-    this.changeDomPosition = (x, y, dy) => { //改变dom位置
-        var that = this;
-        // this.mapId.css("height", (index, value) => {//改变地图高度
-        //     var h = this.mapH + y;
-        //     console.log(h);
-        //     return h ;
-        // })
-        this.m.animate({ top: dy + "px" }, 10);
-
-    }
-
-
-    //begin
-    this.followFinger = (map, state = 14) => { //(地图实例,dom状态判断是向上还是向下)
-        // console.log('开始跟随手指');
-        var that = this;
-        if (state != 14) {
-            that.state = state;
-            // console.log(that.state);
-        }
-        that.getDomPosition(); //获取dom位置
-        that.getMapHeight(); //获取地图高度
-        var once = true;
-        that.div.on('touchmove', function(e) { //获取鼠标位置
-            e = e || window.event;
-            that.__xx = e.touches[0].clientX;
-            that.__yy = e.touches[0].clientY;
-            if (once) { //获取第一次点击的位置
-                once = false;
-                that.getMosePosition(that.__xx, that.__yy);
-            }
-            // console.log(that.__yy, '鼠标');
-            var h = that.__yy - that.__sy //鼠标移动距离y
-
-            if (that.state == 'down') { //两种模式
-                // console.log(that.state);
-                if (h >= 0 && h + that.__dy <= that.__wy - 20) {
-                    that.changeDomPosition(0, h, h + that.__dy); //改变位置
-                    // console.log(that.state,h + that.__dy,112);
-                }
-            } else if (that.state == 'up') {
-                if (h >= -that.__dy && h <= that.__wy - 20) {
-                    that.changeDomPosition(0, h, h + that.__wy - 20); //改变位置
-                    // console.log(that.state,h + that.__wy - 20,112);
-                }
-            }
-
-        });
-        that.div.on('touchend', function() { //抬起重置
-            once = true; //抬起重置鼠标点击位置
-            var chous = null;
-            if (that.state == 'down') { //两种模式
-                // var chous = Math.abs(that.__yy - that.__sy) < that.__wy / 4;
-                chous = (that.__sy - that.__yy) < 0;
-            } else if (that.state == 'up') {
-                // var chous = Math.abs(that.__yy - that.__sy) > that.__wy / 4;
-                chous = (that.__sy - that.__yy) < 0;
-            }
-            if (!chous) {
-                //改变dom位置
-                that.changeDomPosition(0, 0, (parseFloat(that.__wy / 10) * 3.999));
-                // that.getDomPosition();//抬起获取dom位置/持续停留使用
-                that.state = 'down';
-                $('#map').css("height", (index, value) => { //改变地图高度
-                    return '50%';
-                })
-                map.invalidateSize(true); //应用地图高度
-            } else {
-                // that.changeDomPosition(0, 0, that.__wy - 50); //改变位置
-                that.changeDomPosition(0, 0, that.__wy); //改变位置
-                // that.getDomPosition();//抬起获取dom位置/持续停留使用
-                that.state = 'up';
-                $('#map').css("height", (index, value) => { //改变地图高度
-                    return '100%';
-                })
-                map.invalidateSize(true); //应用地图高度
-            }
-            that.getMapHeight(); //抬起获取map高度
-        });
-    }
-    this.destruction = () => { //初始化销毁
-        this.m = $(dom);
-        this.div = $(div);
-        this.mapId = $(map);
-        this.__xx = null; //鼠标实时位置
-        this.__yy = null;
-        this.__sx = null; //鼠标开始位置
-        this.__sy = null;
-        this.__dx = null; //dom位置
-        this.__dy = null;
-        this.mapH = null; //地图高度
-        this.__wy = null; //屏幕高度
-        this.state = "up"; //dom状态默认up
-        this.div.off();
-    }
-}
-
-// export default myDomMove;
\ No newline at end of file
diff --git a/xcxMapWzzzz/js/vueMain copy.js b/xcxMapWzzzz/js/vueMain copy.js
deleted file mode 100644
index bd8617a..0000000
--- a/xcxMapWzzzz/js/vueMain copy.js
+++ /dev/null
@@ -1,356 +0,0 @@
-var me = new Vue({
-	el: '#mapVue',
-	data: {
-		map: null, //map
-		getdata: null,
-		marker: null,
-		layuiLayer: null,
-		nowIndex: null,
-
-		LXdhStart: null,
-		LXdhEnd: null,
-		LxdhLine: null,
-
-		activeName: 'first',
-
-		move: null, //存放移动实例
-
-		//存放实时坐标
-		lat: "",
-		lng: "",
-		seedata: '',
-		nowPosition: '',
-		shipingPopupShow: false,
-		shipingM3u8Url: '',
-		resultFeedbackPopupShow: false,
-		popupDisplay: "none",
-	},
-	methods: {
-		getDataList() {
-			var that = this;
-			that.beginCome();
-		},
-		beginCome() {
-			var data = []
-			//url解码
-			var policeId = this.GetQueryString('id');
-            var that = this;
-			axios.get(this.$store.state.piAPI + '/blade-user/page?size=99999&jurisdiction=' + policeId).then((res) => {
-				res.data.data.records.forEach(item => {
-					if (item.longitude && item.latitude) {
-						data.push(item)
-					}
-				})
-
-                console.log(data, 8989)
-
-                that.map = that.beginMap(that.map, data); //创建并接受map
-                that.move = new myDomMove('#seedata', '.title', '#map');
-                that.map.invalidateSize(true); //应用地图高度
-                that.move.followFinger(that.map, 'down');
-			})
-
-
-			// this.getdata = this.getQueryVariable('data') || data;
-	
-		},
-		GetQueryString(name) {
-			var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
-			var r = window.location.search.substr(1).match(reg);
-			if (r != null) return unescape(r[2]);
-			return null;
-		},
-		//url解码
-		getQueryVariable(variable) {
-			var query = window.location.search.substring(1);
-			var vars = query.split("&");
-			for (var i = 0; i < vars.length; i++) {
-				var pair = vars[i].split("=");
-				if (pair[0] == variable) {
-					return JSON.parse(decodeURI(pair[1]));
-				} //解码url 和 JSON
-			}
-			return (false);
-		},
-		beginMap(map, data) {
-			var center = [Number(data[0].longitude), Number(data[0].latitude)];
-		
-			this.nowPosition = center;
-            console.log(this.nowPosition, 89898555555)
-		
-
-			var createMap = () => {
-				map = L.map('map', { //初始化地图
-					center: center,
-					zoom: 10,
-					minZoom: 2,
-					maxZoom: 17,
-					attributionControl: false, //去掉右下角
-					zoomControl: false, //去掉缩放
-				});
-				L.tileLayer( //添加切片图层
-					// "https://webmap-tile.sf-express.com/MapTileService/rt?x={x}&y={y}&z={z}", {//顺丰地图
-					"https://webmap-tile.sf-express.com/MapTileService/rt?fetchtype=static&x={x}&y={y}&z={z}&project=sfmap&pic_size=256&pic_type=png8&data_name=361100&data_format=merged-dat&data_type=normal", { //顺丰地图
-					}
-				).addTo(map);
-			}
-			createMap();
-			var markers = L.markerClusterGroup();
-
-			var transportIcon = L.Icon.extend({ //图标初始化
-				options: {
-					iconSize: [30, 30], // 图标尺寸
-				}
-			});
-			var carIcon = new transportIcon({ //引入图标
-					iconUrl: './img/gray.png'
-				}),
-				planeIcon = new transportIcon({
-					iconUrl: './img/green.png'
-				}),
-				busIcon = new transportIcon({
-					iconUrl: './img/red.png'
-				});
-			wzIcon = new transportIcon({
-				iconUrl: './img/wz.png'
-			});
-			var setData = (a) => { //定义图标
-				marker = L.marker([Number(a.longitude), Number(a.latitude)], {
-					icon: wzIcon,
-					// icon: a.dtype == 0 ? carIcon : a.dtype == 1 ? planeIcon : a.dtype == 2 ? busIcon : '',
-					// title: title,
-					myData: { //自定义数据
-						...a
-					}
-				});
-			}
-			for (var i = 0; i < data.length; i++) {
-				var a = data[i];
-				if (a.jd == '' || a.wd == '') {
-					console.log('没有坐标', i)
-				} else {
-					setData(a);
-					// that.getDHLine(a.jd, a.wd);
-				}
-                console.log(marker, 11111)
-				markers.addLayer(marker);
-			}
-			map.addLayer(markers);
-
-			// markers.on('click', function(a) {
-			//     // that.drawer = true;
-			//     that.seedata = a.layer.options.myData;
-			//     that.nowPosition = [that.seedata.wd, that.seedata.jd]
-			//     $('#seedata').css('top', '');
-			//     $('#map').css("height", (index, value) => { //改变地图高度
-			//         return '50%';
-			//     })
-			//     map.invalidateSize(true); //应用地图高度
-			//     that.move.destruction();
-			//     that.move.followFinger(map, 'down');
-
-			// });
-			this.nowPosition = center;
-			return map; //抛出map
-		},
-		getDHLine(x, y) {
-
-			var that = this;
-
-			//获取导航信息
-			axios({
-				method: "get",
-				url: `https://web.byisf.com/sf/rp/v2/api`,
-				params: {
-					ak: "1986afc8a5744263971b7f2482253dfc",
-					x1: that.lng,
-					y1: that.lat,
-					x2: x,
-					y2: y,
-					type: "1",
-					strategy: "0",
-					opt: "sf2"
-				},
-			}).then((res) => {
-				var resdata = res.data.result.coords;
-				var data = [];
-				for (var i = 0; i < resdata.length; i++) {
-					var xy = [];
-					xy.push(resdata[i][1]);
-					xy.push(resdata[i][0]);
-					data.push(xy);
-				}
-
-				if (that.LXdhEnd != null) {
-					that.map.removeLayer(that.LXdhEnd);
-				}
-				if (that.LxdhLine != null) {
-					that.map.removeLayer(that.LxdhLine);
-				}
-
-				//绘制起点和终点
-				that.LXdhEnd = L.markerClusterGroup();
-
-				var transportIcon = L.Icon.extend({ //图标初始化
-					options: {
-						iconSize: [56, 32], // 图标尺寸
-					}
-				});
-
-				var zd = new transportIcon({
-					iconUrl: './img/zd.png'
-				});
-				// var qd = new transportIcon({
-				// 	iconUrl: './img/qd.png'
-				// });
-
-				var qdzb = res.data.result.query;
-
-				var x = resdata[resdata.length - 1][0];
-				var y = resdata[resdata.length - 1][1];
-
-				that.LXdhEnd.addLayer(L.marker([y, x], {
-					icon: zd,
-				}));
-				// markers.addLayer(L.marker([qdzb.start.y, qdzb.start.x], {
-				// 	icon: qd,
-				// }));
-
-				that.map.addLayer(that.LXdhEnd);
-
-				that.showPolyLine(data);
-			});
-		},
-		showPolyLine(xy) {
-			var that = this;
-			that.LxdhLine = L.polyline(xy, {
-				color: 'red'
-			}).addTo(that.map);
-
-			// zoom the map to the polyline
-			that.map.fitBounds(that.LxdhLine.getBounds())
-		},
-		//定位警情位置
-		titleClick() {
-			this.map.setView(this.nowPosition, 20);
-		},
-		//定位当前位置
-		locationMap() {
-			this.map.setView([this.lat, this.lng], 20);
-		},
-		shipingClick(open) { //打开视频
-			if (open) {
-				this.openRealVideoBox(this.seedata.serialNumber, this.seedata.channelNumber, this.seedata
-					.deviceNumber, this.seedata.manufacturer);
-			} else {
-				this.shipingPopupShow = false;
-			}
-		},
-		resultFeedbackClick() { //结果反馈跳转小程序
-			uni.webView.navigateTo({
-				url: `../poput/workbench/policeDetails/policeDetails?id=${this.seedata.id}`
-			});
-		},
-		openRealVideoBox(serialNumber, channelNumber, deviceNumber, manufacturer) { //获取视频地址
-			var that = this;
-			if (manufacturer == "HK") {
-				axios
-					.get(
-						`/api/equipment/equipment/selectEquimentPlayInfo?number=${deviceNumber}&bmp=m3u8&manufacturer=${manufacturer}`
-					)
-					.then((result) => {
-						that.videoSource = result.data.data.address;
-						that.shipingM3u8Url = decodeURIComponent(that.videoSource);
-						that.shipingPopupShow = true;
-					})
-					.ce;
-			} else {
-				var newAxios = axios.create({
-					baseURL: "https://web.byisf.com:18000",
-					withCredentials: false,
-					headers: {
-						"Content-type": "application/x-www-form-urlencoded",
-					},
-				});
-				newAxios
-					.post(
-						"/api_control", {}, {
-							params: {
-								param: JSON.stringify({
-									PktType: "GetAccessToken"
-								}),
-							},
-						}
-					)
-					.then((res) => {
-						newAxios
-							.get(
-								`https://web.byisf.com:18000/GetPlayUrl?deviceCode=${serialNumber}&chl=${channelNumber}`
-							)
-							.then((result) => {
-								that.videoSource = result.data.data.m3u8;
-								that.shipingM3u8Url = decodeURIComponent(that.videoSource);
-								that.shipingPopupShow = true;
-							});
-					});
-			}
-		},
-		upData() {
-			console.log('上传信息成功')
-		},
-		getLocationData() {
-			var that = this;
-			var geolocation = new qq.maps.Geolocation("T7RBZ-62U3X-RSQ4P-ZZVCB-WE7JT-HRBOG", "mapqq");
-			var positionNum = 0;
-			var options = {
-				timeout: 8000
-			};
-
-			function showPosition(position) {
-				var adCode = position.adCode; //邮政编码
-				var nation = position.nation; //中国
-				var city = position.city; //城市
-				var addr = position.addr; //详细地址
-				that.lat = position.lat; //
-				that.lng = position.lng; //火星坐标 //TODO 实现业务代码逻辑 
-
-				if (that.LXdhStart != null) {
-					that.map.removeLayer(that.LXdhStart);
-				}
-
-				//绘制起点和终点
-				that.LXdhStart = L.markerClusterGroup();
-
-				var transportIcon = L.Icon.extend({ //图标初始化
-					options: {
-						iconSize: [50, 50], // 图标尺寸
-					}
-				});
-
-				var qd = new transportIcon({
-					iconUrl: './img/dingw.gif'
-				});
-
-				that.LXdhStart.addLayer(L.marker([that.lat, that.lng], {
-					icon: qd,
-				}));
-
-				that.map.addLayer(that.LXdhStart);
-
-			};
-
-			function showErr() {
-				//TODO 如果出错了调用此方法 
-			};
-
-			geolocation.getLocation(showPosition, showErr, options);
-		},
-
-	},
-	created() {},
-	mounted() {
-		this.getDataList();
-		this.getLocationData();
-	},
-	wacth: {}
-})
diff --git a/xcxMapWzzzz/js/vueMain.js b/xcxMapWzzzz/js/vueMain.js
deleted file mode 100644
index 201ebee..0000000
--- a/xcxMapWzzzz/js/vueMain.js
+++ /dev/null
@@ -1,369 +0,0 @@
-var me = new Vue({
-	el: '#mapVue',
-	data: {
-		map: null, //map
-		getdata: null,
-		marker: null,
-		layuiLayer: null,
-		nowIndex: null,
-
-		LXdhStart: null,
-		LXdhEnd: null,
-		LxdhLine: null,
-
-		activeName: 'first',
-
-		move: null, //存放移动实例
-
-		//存放实时坐标
-		lat: "",
-		lng: "",
-		seedata: '',
-		nowPosition: '',
-		shipingPopupShow: false,
-		shipingM3u8Url: '',
-		resultFeedbackPopupShow: false,
-		popupDisplay: "none",
-	},
-	methods: {
-		getDataList() {
-			var that = this;
-			that.beginCome();
-		},
-		beginCome() {
-			var data = []
-			//url解码
-			var policeId = this.GetQueryString('id');
-			console.log(policeId, 4654645)
-			axios.get(this.$store.state.piAPI + '/blade-user/page?size=99999').then((res) => {
-				console.log(res, 4848)
-				res.data.data.records.forEach(item => {
-					if (item.longitude && item.latitude) {
-						data.push(item)
-					}
-				})
-
-
-                this.map = this.beginMap(this.map, data); //创建并接受map
-                this.move = new myDomMove('#seedata', '.title', '#map');
-                this.map.invalidateSize(true); //应用地图高度
-                this.move.followFinger(this.map, 'down');
-			})
-
-
-			// this.getdata = this.getQueryVariable('data') || data;
-
-		},
-		GetQueryString(name) {
-			var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
-			var r = window.location.search.substr(1).match(reg);
-			if (r != null) return unescape(r[2]);
-			return null;
-		},
-		//url解码
-		getQueryVariable(variable) {
-			var query = window.location.search.substring(1);
-			var vars = query.split("&");
-			for (var i = 0; i < vars.length; i++) {
-				var pair = vars[i].split("=");
-				if (pair[0] == variable) {
-					return JSON.parse(decodeURI(pair[1]));
-				} //解码url 和 JSON
-			}
-			return (false);
-		},
-		beginMap(map, data) {
-			var that = this,
-				center = [Number(data[0].longitude), Number(data[0].latitude)];
-			// url = `http://s16s652780.51mypc.cn/api/alarm/alarm/APP-getAlarm?id=${data[0].id}`;
-			// url = `http://localhost:89/alarm/alarm/APP-getAlarm?id=${data[0].id}`;
-			this.nowPosition = center;
-			// axios.post(url).then((res) => {
-			//     if (res.data.data.length != 0) {
-			//         var dat = res.data.data[0];
-			//         for (var key in dat) {
-			//             if (dat[key] == null || dat[key] == '') {
-			//                 dat[key] = '暂无'
-			//             }
-			//         }
-			//         this.seedata = dat;
-
-			//     } else {
-			//         this.seedata = data[0];
-			//     }
-			// })
-
-			var createMap = () => {
-				map = L.map('map', { //初始化地图
-					center: center,
-					zoom: 10,
-					minZoom: 2,
-					maxZoom: 17,
-					attributionControl: false, //去掉右下角
-					zoomControl: false, //去掉缩放
-				});
-				L.tileLayer( //添加切片图层
-					// "https://webmap-tile.sf-express.com/MapTileService/rt?x={x}&y={y}&z={z}", {//顺丰地图
-					"https://webmap-tile.sf-express.com/MapTileService/rt?fetchtype=static&x={x}&y={y}&z={z}&project=sfmap&pic_size=256&pic_type=png8&data_name=361100&data_format=merged-dat&data_type=normal", { //顺丰地图
-					}
-				).addTo(map);
-			}
-			createMap();
-			var markers = L.markerClusterGroup();
-
-			var transportIcon = L.Icon.extend({ //图标初始化
-				options: {
-					iconSize: [30, 30], // 图标尺寸
-				}
-			});
-			var carIcon = new transportIcon({ //引入图标
-					iconUrl: './img/gray.png'
-				}),
-				planeIcon = new transportIcon({
-					iconUrl: './img/green.png'
-				}),
-				busIcon = new transportIcon({
-					iconUrl: './img/red.png'
-				});
-			wzIcon = new transportIcon({
-				iconUrl: './img/wz.png'
-			});
-			var setData = (a) => { //定义图标
-				marker = L.marker([Number(a.longitude), Number(a.latitude)], {
-					icon: wzIcon,
-					// icon: a.dtype == 0 ? carIcon : a.dtype == 1 ? planeIcon : a.dtype == 2 ? busIcon : '',
-					// title: title,
-					myData: { //自定义数据
-						...a
-					}
-				});
-			}
-			for (var i = 0; i < data.length; i++) {
-				var a = data[i];
-				if (a.jd == '' || a.wd == '') {
-					console.log('没有坐标', i)
-				} else {
-					setData(a);
-					// that.getDHLine(a.jd, a.wd);
-				}
-				markers.addLayer(marker);
-			}
-			map.addLayer(markers);
-
-			// markers.on('click', function(a) {
-			//     // that.drawer = true;
-			//     that.seedata = a.layer.options.myData;
-			//     that.nowPosition = [that.seedata.wd, that.seedata.jd]
-			//     $('#seedata').css('top', '');
-			//     $('#map').css("height", (index, value) => { //改变地图高度
-			//         return '50%';
-			//     })
-			//     map.invalidateSize(true); //应用地图高度
-			//     that.move.destruction();
-			//     that.move.followFinger(map, 'down');
-
-			// });
-			this.nowPosition = center;
-			return map; //抛出map
-		},
-		getDHLine(x, y) {
-
-			var that = this;
-
-			//获取导航信息
-			axios({
-				method: "get",
-				url: `https://web.byisf.com/sf/rp/v2/api`,
-				params: {
-					ak: "1986afc8a5744263971b7f2482253dfc",
-					x1: that.lng,
-					y1: that.lat,
-					x2: x,
-					y2: y,
-					type: "1",
-					strategy: "0",
-					opt: "sf2"
-				},
-			}).then((res) => {
-				var resdata = res.data.result.coords;
-				var data = [];
-				for (var i = 0; i < resdata.length; i++) {
-					var xy = [];
-					xy.push(resdata[i][1]);
-					xy.push(resdata[i][0]);
-					data.push(xy);
-				}
-
-				if (that.LXdhEnd != null) {
-					that.map.removeLayer(that.LXdhEnd);
-				}
-				if (that.LxdhLine != null) {
-					that.map.removeLayer(that.LxdhLine);
-				}
-
-				//绘制起点和终点
-				that.LXdhEnd = L.markerClusterGroup();
-
-				var transportIcon = L.Icon.extend({ //图标初始化
-					options: {
-						iconSize: [56, 32], // 图标尺寸
-					}
-				});
-
-				var zd = new transportIcon({
-					iconUrl: './img/zd.png'
-				});
-				// var qd = new transportIcon({
-				// 	iconUrl: './img/qd.png'
-				// });
-
-				var qdzb = res.data.result.query;
-
-				var x = resdata[resdata.length - 1][0];
-				var y = resdata[resdata.length - 1][1];
-
-				that.LXdhEnd.addLayer(L.marker([y, x], {
-					icon: zd,
-				}));
-				// markers.addLayer(L.marker([qdzb.start.y, qdzb.start.x], {
-				// 	icon: qd,
-				// }));
-
-				that.map.addLayer(that.LXdhEnd);
-
-				that.showPolyLine(data);
-			});
-		},
-		showPolyLine(xy) {
-			var that = this;
-			that.LxdhLine = L.polyline(xy, {
-				color: 'red'
-			}).addTo(that.map);
-
-			// zoom the map to the polyline
-			that.map.fitBounds(that.LxdhLine.getBounds())
-		},
-		//定位警情位置
-		titleClick() {
-			this.map.setView(this.nowPosition, 20);
-		},
-		//定位当前位置
-		locationMap() {
-			this.map.setView([this.lat, this.lng], 20);
-		},
-		shipingClick(open) { //打开视频
-			if (open) {
-				this.openRealVideoBox(this.seedata.serialNumber, this.seedata.channelNumber, this.seedata
-					.deviceNumber, this.seedata.manufacturer);
-			} else {
-				this.shipingPopupShow = false;
-			}
-		},
-		resultFeedbackClick() { //结果反馈跳转小程序
-			uni.webView.navigateTo({
-				url: `../poput/workbench/policeDetails/policeDetails?id=${this.seedata.id}`
-			});
-		},
-		openRealVideoBox(serialNumber, channelNumber, deviceNumber, manufacturer) { //获取视频地址
-			var that = this;
-			if (manufacturer == "HK") {
-				axios
-					.get(
-						`/api/equipment/equipment/selectEquimentPlayInfo?number=${deviceNumber}&bmp=m3u8&manufacturer=${manufacturer}`
-					)
-					.then((result) => {
-						that.videoSource = result.data.data.address;
-						that.shipingM3u8Url = decodeURIComponent(that.videoSource);
-						that.shipingPopupShow = true;
-					})
-					.ce;
-			} else {
-				var newAxios = axios.create({
-					baseURL: "https://web.byisf.com:18000",
-					withCredentials: false,
-					headers: {
-						"Content-type": "application/x-www-form-urlencoded",
-					},
-				});
-				newAxios
-					.post(
-						"/api_control", {}, {
-							params: {
-								param: JSON.stringify({
-									PktType: "GetAccessToken"
-								}),
-							},
-						}
-					)
-					.then((res) => {
-						newAxios
-							.get(
-								`https://web.byisf.com:18000/GetPlayUrl?deviceCode=${serialNumber}&chl=${channelNumber}`
-							)
-							.then((result) => {
-								that.videoSource = result.data.data.m3u8;
-								that.shipingM3u8Url = decodeURIComponent(that.videoSource);
-								that.shipingPopupShow = true;
-							});
-					});
-			}
-		},
-		upData() {
-			console.log('上传信息成功')
-		},
-		getLocationData() {
-			var that = this;
-			var geolocation = new qq.maps.Geolocation("T7RBZ-62U3X-RSQ4P-ZZVCB-WE7JT-HRBOG", "mapqq");
-			var positionNum = 0;
-			var options = {
-				timeout: 8000
-			};
-
-			function showPosition(position) {
-				var adCode = position.adCode; //邮政编码
-				var nation = position.nation; //中国
-				var city = position.city; //城市
-				var addr = position.addr; //详细地址
-				that.lat = position.lat; //
-				that.lng = position.lng; //火星坐标 //TODO 实现业务代码逻辑 
-
-				if (that.LXdhStart != null) {
-					that.map.removeLayer(that.LXdhStart);
-				}
-
-				//绘制起点和终点
-				that.LXdhStart = L.markerClusterGroup();
-
-				var transportIcon = L.Icon.extend({ //图标初始化
-					options: {
-						iconSize: [50, 50], // 图标尺寸
-					}
-				});
-
-				var qd = new transportIcon({
-					iconUrl: './img/dingw.gif'
-				});
-
-				that.LXdhStart.addLayer(L.marker([that.lat, that.lng], {
-					icon: qd,
-				}));
-
-				that.map.addLayer(that.LXdhStart);
-
-			};
-
-			function showErr() {
-				//TODO 如果出错了调用此方法 
-			};
-
-			geolocation.getLocation(showPosition, showErr, options);
-		},
-
-	},
-	created() {},
-	mounted() {
-		this.getDataList();
-		this.getLocationData();
-	},
-	wacth: {}
-})
diff --git a/xcxMapWzzzz/lid/MarkerCluster.Default.css b/xcxMapWzzzz/lid/MarkerCluster.Default.css
deleted file mode 100644
index bbc8c9f..0000000
--- a/xcxMapWzzzz/lid/MarkerCluster.Default.css
+++ /dev/null
@@ -1,60 +0,0 @@
-.marker-cluster-small {
-	background-color: rgba(181, 226, 140, 0.6);
-	}
-.marker-cluster-small div {
-	background-color: rgba(110, 204, 57, 0.6);
-	}
-
-.marker-cluster-medium {
-	background-color: rgba(241, 211, 87, 0.6);
-	}
-.marker-cluster-medium div {
-	background-color: rgba(240, 194, 12, 0.6);
-	}
-
-.marker-cluster-large {
-	background-color: rgba(253, 156, 115, 0.6);
-	}
-.marker-cluster-large div {
-	background-color: rgba(241, 128, 23, 0.6);
-	}
-
-	/* IE 6-8 fallback colors */
-.leaflet-oldie .marker-cluster-small {
-	background-color: rgb(181, 226, 140);
-	}
-.leaflet-oldie .marker-cluster-small div {
-	background-color: rgb(110, 204, 57);
-	}
-
-.leaflet-oldie .marker-cluster-medium {
-	background-color: rgb(241, 211, 87);
-	}
-.leaflet-oldie .marker-cluster-medium div {
-	background-color: rgb(240, 194, 12);
-	}
-
-.leaflet-oldie .marker-cluster-large {
-	background-color: rgb(253, 156, 115);
-	}
-.leaflet-oldie .marker-cluster-large div {
-	background-color: rgb(241, 128, 23);
-}
-
-.marker-cluster {
-	background-clip: padding-box;
-	border-radius: 20px;
-	}
-.marker-cluster div {
-	width: 30px;
-	height: 30px;
-	margin-left: 5px;
-	margin-top: 5px;
-
-	text-align: center;
-	border-radius: 15px;
-	font: 12px "Helvetica Neue", Arial, Helvetica, sans-serif;
-	}
-.marker-cluster span {
-	line-height: 30px;
-	}
\ No newline at end of file
diff --git a/xcxMapWzzzz/lid/MarkerCluster.css b/xcxMapWzzzz/lid/MarkerCluster.css
deleted file mode 100644
index c60d71b..0000000
--- a/xcxMapWzzzz/lid/MarkerCluster.css
+++ /dev/null
@@ -1,14 +0,0 @@
-.leaflet-cluster-anim .leaflet-marker-icon, .leaflet-cluster-anim .leaflet-marker-shadow {
-	-webkit-transition: -webkit-transform 0.3s ease-out, opacity 0.3s ease-in;
-	-moz-transition: -moz-transform 0.3s ease-out, opacity 0.3s ease-in;
-	-o-transition: -o-transform 0.3s ease-out, opacity 0.3s ease-in;
-	transition: transform 0.3s ease-out, opacity 0.3s ease-in;
-}
-
-.leaflet-cluster-spider-leg {
-	/* stroke-dashoffset (duration and function) should match with leaflet-marker-icon transform in order to track it exactly */
-	-webkit-transition: -webkit-stroke-dashoffset 0.3s ease-out, -webkit-stroke-opacity 0.3s ease-in;
-	-moz-transition: -moz-stroke-dashoffset 0.3s ease-out, -moz-stroke-opacity 0.3s ease-in;
-	-o-transition: -o-stroke-dashoffset 0.3s ease-out, -o-stroke-opacity 0.3s ease-in;
-	transition: stroke-dashoffset 0.3s ease-out, stroke-opacity 0.3s ease-in;
-}
diff --git a/xcxMapWzzzz/lid/leaflet.css b/xcxMapWzzzz/lid/leaflet.css
deleted file mode 100644
index 017fa0e..0000000
--- a/xcxMapWzzzz/lid/leaflet.css
+++ /dev/null
@@ -1,640 +0,0 @@
-/* required styles */
-
-.leaflet-pane,
-.leaflet-tile,
-.leaflet-marker-icon,
-.leaflet-marker-shadow,
-.leaflet-tile-container,
-.leaflet-pane > svg,
-.leaflet-pane > canvas,
-.leaflet-zoom-box,
-.leaflet-image-layer,
-.leaflet-layer {
-	position: absolute;
-	left: 0;
-	top: 0;
-	}
-.leaflet-container {
-	overflow: hidden;
-	}
-.leaflet-tile,
-.leaflet-marker-icon,
-.leaflet-marker-shadow {
-	-webkit-user-select: none;
-	   -moz-user-select: none;
-	        user-select: none;
-	  -webkit-user-drag: none;
-	}
-/* Prevents IE11 from highlighting tiles in blue */
-.leaflet-tile::selection {
-	background: transparent;
-}
-/* Safari renders non-retina tile on retina better with this, but Chrome is worse */
-.leaflet-safari .leaflet-tile {
-	image-rendering: -webkit-optimize-contrast;
-	}
-/* hack that prevents hw layers "stretching" when loading new tiles */
-.leaflet-safari .leaflet-tile-container {
-	width: 1600px;
-	height: 1600px;
-	-webkit-transform-origin: 0 0;
-	}
-.leaflet-marker-icon,
-.leaflet-marker-shadow {
-	display: block;
-	}
-/* .leaflet-container svg: reset svg max-width decleration shipped in Joomla! (joomla.org) 3.x */
-/* .leaflet-container img: map is broken in FF if you have max-width: 100% on tiles */
-.leaflet-container .leaflet-overlay-pane svg,
-.leaflet-container .leaflet-marker-pane img,
-.leaflet-container .leaflet-shadow-pane img,
-.leaflet-container .leaflet-tile-pane img,
-.leaflet-container img.leaflet-image-layer,
-.leaflet-container .leaflet-tile {
-	max-width: none !important;
-	max-height: none !important;
-	}
-
-.leaflet-container.leaflet-touch-zoom {
-	-ms-touch-action: pan-x pan-y;
-	touch-action: pan-x pan-y;
-	}
-.leaflet-container.leaflet-touch-drag {
-	-ms-touch-action: pinch-zoom;
-	/* Fallback for FF which doesn't support pinch-zoom */
-	touch-action: none;
-	touch-action: pinch-zoom;
-}
-.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom {
-	-ms-touch-action: none;
-	touch-action: none;
-}
-.leaflet-container {
-	-webkit-tap-highlight-color: transparent;
-}
-.leaflet-container a {
-	-webkit-tap-highlight-color: rgba(51, 181, 229, 0.4);
-}
-.leaflet-tile {
-	filter: inherit;
-	visibility: hidden;
-	}
-.leaflet-tile-loaded {
-	visibility: inherit;
-	}
-.leaflet-zoom-box {
-	width: 0;
-	height: 0;
-	-moz-box-sizing: border-box;
-	     box-sizing: border-box;
-	z-index: 800;
-	}
-/* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */
-.leaflet-overlay-pane svg {
-	-moz-user-select: none;
-	}
-
-.leaflet-pane         { z-index: 400; }
-
-.leaflet-tile-pane    { z-index: 200; }
-.leaflet-overlay-pane { z-index: 400; }
-.leaflet-shadow-pane  { z-index: 500; }
-.leaflet-marker-pane  { z-index: 600; }
-.leaflet-tooltip-pane   { z-index: 650; }
-.leaflet-popup-pane   { z-index: 700; }
-
-.leaflet-map-pane canvas { z-index: 100; }
-.leaflet-map-pane svg    { z-index: 200; }
-
-.leaflet-vml-shape {
-	width: 1px;
-	height: 1px;
-	}
-.lvml {
-	behavior: url(#default#VML);
-	display: inline-block;
-	position: absolute;
-	}
-
-
-/* control positioning */
-
-.leaflet-control {
-	position: relative;
-	z-index: 800;
-	pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */
-	pointer-events: auto;
-	}
-.leaflet-top,
-.leaflet-bottom {
-	position: absolute;
-	z-index: 1000;
-	pointer-events: none;
-	}
-.leaflet-top {
-	top: 0;
-	}
-.leaflet-right {
-	right: 0;
-	}
-.leaflet-bottom {
-	bottom: 0;
-	}
-.leaflet-left {
-	left: 0;
-	}
-.leaflet-control {
-	float: left;
-	clear: both;
-	}
-.leaflet-right .leaflet-control {
-	float: right;
-	}
-.leaflet-top .leaflet-control {
-	margin-top: 10px;
-	}
-.leaflet-bottom .leaflet-control {
-	margin-bottom: 10px;
-	}
-.leaflet-left .leaflet-control {
-	margin-left: 10px;
-	}
-.leaflet-right .leaflet-control {
-	margin-right: 10px;
-	}
-
-
-/* zoom and fade animations */
-
-.leaflet-fade-anim .leaflet-tile {
-	will-change: opacity;
-	}
-.leaflet-fade-anim .leaflet-popup {
-	opacity: 0;
-	-webkit-transition: opacity 0.2s linear;
-	   -moz-transition: opacity 0.2s linear;
-	        transition: opacity 0.2s linear;
-	}
-.leaflet-fade-anim .leaflet-map-pane .leaflet-popup {
-	opacity: 1;
-	}
-.leaflet-zoom-animated {
-	-webkit-transform-origin: 0 0;
-	    -ms-transform-origin: 0 0;
-	        transform-origin: 0 0;
-	}
-.leaflet-zoom-anim .leaflet-zoom-animated {
-	will-change: transform;
-	}
-.leaflet-zoom-anim .leaflet-zoom-animated {
-	-webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1);
-	   -moz-transition:    -moz-transform 0.25s cubic-bezier(0,0,0.25,1);
-	        transition:         transform 0.25s cubic-bezier(0,0,0.25,1);
-	}
-.leaflet-zoom-anim .leaflet-tile,
-.leaflet-pan-anim .leaflet-tile {
-	-webkit-transition: none;
-	   -moz-transition: none;
-	        transition: none;
-	}
-
-.leaflet-zoom-anim .leaflet-zoom-hide {
-	visibility: hidden;
-	}
-
-
-/* cursors */
-
-.leaflet-interactive {
-	cursor: pointer;
-	}
-.leaflet-grab {
-	cursor: -webkit-grab;
-	cursor:    -moz-grab;
-	cursor:         grab;
-	}
-.leaflet-crosshair,
-.leaflet-crosshair .leaflet-interactive {
-	cursor: crosshair;
-	}
-.leaflet-popup-pane,
-.leaflet-control {
-	cursor: auto;
-	}
-.leaflet-dragging .leaflet-grab,
-.leaflet-dragging .leaflet-grab .leaflet-interactive,
-.leaflet-dragging .leaflet-marker-draggable {
-	cursor: move;
-	cursor: -webkit-grabbing;
-	cursor:    -moz-grabbing;
-	cursor:         grabbing;
-	}
-
-/* marker & overlays interactivity */
-.leaflet-marker-icon,
-.leaflet-marker-shadow,
-.leaflet-image-layer,
-.leaflet-pane > svg path,
-.leaflet-tile-container {
-	pointer-events: none;
-	}
-
-.leaflet-marker-icon.leaflet-interactive,
-.leaflet-image-layer.leaflet-interactive,
-.leaflet-pane > svg path.leaflet-interactive,
-svg.leaflet-image-layer.leaflet-interactive path {
-	pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */
-	pointer-events: auto;
-	}
-
-/* visual tweaks */
-
-.leaflet-container {
-	background: #ddd;
-	outline: 0;
-	}
-.leaflet-container a {
-	color: #0078A8;
-	}
-.leaflet-container a.leaflet-active {
-	outline: 2px solid orange;
-	}
-.leaflet-zoom-box {
-	border: 2px dotted #38f;
-	background: rgba(255,255,255,0.5);
-	}
-
-
-/* general typography */
-.leaflet-container {
-	font: 12px/1.5 "Helvetica Neue", Arial, Helvetica, sans-serif;
-	}
-
-
-/* general toolbar styles */
-
-.leaflet-bar {
-	box-shadow: 0 1px 5px rgba(0,0,0,0.65);
-	border-radius: 4px;
-	}
-.leaflet-bar a,
-.leaflet-bar a:hover {
-	background-color: #fff;
-	border-bottom: 1px solid #ccc;
-	width: 26px;
-	height: 26px;
-	line-height: 26px;
-	display: block;
-	text-align: center;
-	text-decoration: none;
-	color: black;
-	}
-.leaflet-bar a,
-.leaflet-control-layers-toggle {
-	background-position: 50% 50%;
-	background-repeat: no-repeat;
-	display: block;
-	}
-.leaflet-bar a:hover {
-	background-color: #f4f4f4;
-	}
-.leaflet-bar a:first-child {
-	border-top-left-radius: 4px;
-	border-top-right-radius: 4px;
-	}
-.leaflet-bar a:last-child {
-	border-bottom-left-radius: 4px;
-	border-bottom-right-radius: 4px;
-	border-bottom: none;
-	}
-.leaflet-bar a.leaflet-disabled {
-	cursor: default;
-	background-color: #f4f4f4;
-	color: #bbb;
-	}
-
-.leaflet-touch .leaflet-bar a {
-	width: 30px;
-	height: 30px;
-	line-height: 30px;
-	}
-.leaflet-touch .leaflet-bar a:first-child {
-	border-top-left-radius: 2px;
-	border-top-right-radius: 2px;
-	}
-.leaflet-touch .leaflet-bar a:last-child {
-	border-bottom-left-radius: 2px;
-	border-bottom-right-radius: 2px;
-	}
-
-/* zoom control */
-
-.leaflet-control-zoom-in,
-.leaflet-control-zoom-out {
-	font: bold 18px 'Lucida Console', Monaco, monospace;
-	text-indent: 1px;
-	}
-
-.leaflet-touch .leaflet-control-zoom-in, .leaflet-touch .leaflet-control-zoom-out  {
-	font-size: 22px;
-	}
-
-
-/* layers control */
-
-.leaflet-control-layers {
-	box-shadow: 0 1px 5px rgba(0,0,0,0.4);
-	background: #fff;
-	border-radius: 5px;
-	}
-.leaflet-control-layers-toggle {
-	background-image: url(images/layers.png);
-	width: 36px;
-	height: 36px;
-	}
-.leaflet-retina .leaflet-control-layers-toggle {
-	background-image: url(images/layers-2x.png);
-	background-size: 26px 26px;
-	}
-.leaflet-touch .leaflet-control-layers-toggle {
-	width: 44px;
-	height: 44px;
-	}
-.leaflet-control-layers .leaflet-control-layers-list,
-.leaflet-control-layers-expanded .leaflet-control-layers-toggle {
-	display: none;
-	}
-.leaflet-control-layers-expanded .leaflet-control-layers-list {
-	display: block;
-	position: relative;
-	}
-.leaflet-control-layers-expanded {
-	padding: 6px 10px 6px 6px;
-	color: #333;
-	background: #fff;
-	}
-.leaflet-control-layers-scrollbar {
-	overflow-y: scroll;
-	overflow-x: hidden;
-	padding-right: 5px;
-	}
-.leaflet-control-layers-selector {
-	margin-top: 2px;
-	position: relative;
-	top: 1px;
-	}
-.leaflet-control-layers label {
-	display: block;
-	}
-.leaflet-control-layers-separator {
-	height: 0;
-	border-top: 1px solid #ddd;
-	margin: 5px -10px 5px -6px;
-	}
-
-/* Default icon URLs */
-.leaflet-default-icon-path {
-	background-image: url(images/marker-icon.png);
-	}
-
-
-/* attribution and scale controls */
-
-.leaflet-container .leaflet-control-attribution {
-	background: #fff;
-	background: rgba(255, 255, 255, 0.7);
-	margin: 0;
-	}
-.leaflet-control-attribution,
-.leaflet-control-scale-line {
-	padding: 0 5px;
-	color: #333;
-	}
-.leaflet-control-attribution a {
-	text-decoration: none;
-	}
-.leaflet-control-attribution a:hover {
-	text-decoration: underline;
-	}
-.leaflet-container .leaflet-control-attribution,
-.leaflet-container .leaflet-control-scale {
-	font-size: 11px;
-	}
-.leaflet-left .leaflet-control-scale {
-	margin-left: 5px;
-	}
-.leaflet-bottom .leaflet-control-scale {
-	margin-bottom: 5px;
-	}
-.leaflet-control-scale-line {
-	border: 2px solid #777;
-	border-top: none;
-	line-height: 1.1;
-	padding: 2px 5px 1px;
-	font-size: 11px;
-	white-space: nowrap;
-	overflow: hidden;
-	-moz-box-sizing: border-box;
-	     box-sizing: border-box;
-
-	background: #fff;
-	background: rgba(255, 255, 255, 0.5);
-	}
-.leaflet-control-scale-line:not(:first-child) {
-	border-top: 2px solid #777;
-	border-bottom: none;
-	margin-top: -2px;
-	}
-.leaflet-control-scale-line:not(:first-child):not(:last-child) {
-	border-bottom: 2px solid #777;
-	}
-
-.leaflet-touch .leaflet-control-attribution,
-.leaflet-touch .leaflet-control-layers,
-.leaflet-touch .leaflet-bar {
-	box-shadow: none;
-	}
-.leaflet-touch .leaflet-control-layers,
-.leaflet-touch .leaflet-bar {
-	border: 2px solid rgba(0,0,0,0.2);
-	background-clip: padding-box;
-	}
-
-
-/* popup */
-
-.leaflet-popup {
-	position: absolute;
-	text-align: center;
-	margin-bottom: 20px;
-	}
-.leaflet-popup-content-wrapper {
-	padding: 1px;
-	text-align: left;
-	border-radius: 12px;
-	}
-.leaflet-popup-content {
-	margin: 13px 19px;
-	line-height: 1.4;
-	}
-.leaflet-popup-content p {
-	margin: 18px 0;
-	}
-.leaflet-popup-tip-container {
-	width: 40px;
-	height: 20px;
-	position: absolute;
-	left: 50%;
-	margin-left: -20px;
-	overflow: hidden;
-	pointer-events: none;
-	}
-.leaflet-popup-tip {
-	width: 17px;
-	height: 17px;
-	padding: 1px;
-
-	margin: -10px auto 0;
-
-	-webkit-transform: rotate(45deg);
-	   -moz-transform: rotate(45deg);
-	    -ms-transform: rotate(45deg);
-	        transform: rotate(45deg);
-	}
-.leaflet-popup-content-wrapper,
-.leaflet-popup-tip {
-	background: white;
-	color: #333;
-	box-shadow: 0 3px 14px rgba(0,0,0,0.4);
-	}
-.leaflet-container a.leaflet-popup-close-button {
-	position: absolute;
-	top: 0;
-	right: 0;
-	padding: 4px 4px 0 0;
-	border: none;
-	text-align: center;
-	width: 18px;
-	height: 14px;
-	font: 16px/14px Tahoma, Verdana, sans-serif;
-	color: #c3c3c3;
-	text-decoration: none;
-	font-weight: bold;
-	background: transparent;
-	}
-.leaflet-container a.leaflet-popup-close-button:hover {
-	color: #999;
-	}
-.leaflet-popup-scrolled {
-	overflow: auto;
-	border-bottom: 1px solid #ddd;
-	border-top: 1px solid #ddd;
-	}
-
-.leaflet-oldie .leaflet-popup-content-wrapper {
-	-ms-zoom: 1;
-	}
-.leaflet-oldie .leaflet-popup-tip {
-	width: 24px;
-	margin: 0 auto;
-
-	-ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";
-	filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678);
-	}
-.leaflet-oldie .leaflet-popup-tip-container {
-	margin-top: -1px;
-	}
-
-.leaflet-oldie .leaflet-control-zoom,
-.leaflet-oldie .leaflet-control-layers,
-.leaflet-oldie .leaflet-popup-content-wrapper,
-.leaflet-oldie .leaflet-popup-tip {
-	border: 1px solid #999;
-	}
-
-
-/* div icon */
-
-.leaflet-div-icon {
-	background: #fff;
-	border: 1px solid #666;
-	}
-
-
-/* Tooltip */
-/* Base styles for the element that has a tooltip */
-.leaflet-tooltip {
-	position: absolute;
-	padding: 6px;
-	background-color: #fff;
-	border: 1px solid #fff;
-	border-radius: 3px;
-	color: #222;
-	white-space: nowrap;
-	-webkit-user-select: none;
-	-moz-user-select: none;
-	-ms-user-select: none;
-	user-select: none;
-	pointer-events: none;
-	box-shadow: 0 1px 3px rgba(0,0,0,0.4);
-	}
-.leaflet-tooltip.leaflet-clickable {
-	cursor: pointer;
-	pointer-events: auto;
-	}
-.leaflet-tooltip-top:before,
-.leaflet-tooltip-bottom:before,
-.leaflet-tooltip-left:before,
-.leaflet-tooltip-right:before {
-	position: absolute;
-	pointer-events: none;
-	border: 6px solid transparent;
-	background: transparent;
-	content: "";
-	}
-
-/* Directions */
-
-.leaflet-tooltip-bottom {
-	margin-top: 6px;
-}
-.leaflet-tooltip-top {
-	margin-top: -6px;
-}
-.leaflet-tooltip-bottom:before,
-.leaflet-tooltip-top:before {
-	left: 50%;
-	margin-left: -6px;
-	}
-.leaflet-tooltip-top:before {
-	bottom: 0;
-	margin-bottom: -12px;
-	border-top-color: #fff;
-	}
-.leaflet-tooltip-bottom:before {
-	top: 0;
-	margin-top: -12px;
-	margin-left: -6px;
-	border-bottom-color: #fff;
-	}
-.leaflet-tooltip-left {
-	margin-left: -6px;
-}
-.leaflet-tooltip-right {
-	margin-left: 6px;
-}
-.leaflet-tooltip-left:before,
-.leaflet-tooltip-right:before {
-	top: 50%;
-	margin-top: -6px;
-	}
-.leaflet-tooltip-left:before {
-	right: 0;
-	margin-right: -12px;
-	border-left-color: #fff;
-	}
-.leaflet-tooltip-right:before {
-	left: 0;
-	margin-left: -12px;
-	border-right-color: #fff;
-	}
diff --git a/xcxMapWzzzz/lid/leaflet.js b/xcxMapWzzzz/lid/leaflet.js
deleted file mode 100644
index 39fa241..0000000
--- a/xcxMapWzzzz/lid/leaflet.js
+++ /dev/null
@@ -1,5222 +0,0 @@
-/* @preserve
- * Leaflet 1.7.1, a JS library for interactive maps. http://leafletjs.com
- * (c) 2010-2019 Vladimir Agafonkin, (c) 2010-2011 CloudMade
- */
-! function(t, i) {
-	"object" == typeof exports && "undefined" != typeof module ? i(exports) : "function" == typeof define && define
-		.amd ? define(["exports"], i) : i(t.L = {})
-}(this, function(t) {
-	"use strict";
-
-	function h(t) {
-		for (var i, e, n = 1, o = arguments.length; n < o; n++)
-			for (i in e = arguments[n]) t[i] = e[i];
-		return t
-	}
-	var s = Object.create || function(t) {
-		return i.prototype = t, new i
-	};
-
-	function i() {}
-
-	function p(t, i) {
-		var e = Array.prototype.slice;
-		if (t.bind) return t.bind.apply(t, e.call(arguments, 1));
-		var n = e.call(arguments, 2);
-		return function() {
-			return t.apply(i, n.length ? n.concat(e.call(arguments)) : arguments)
-		}
-	}
-	var e = 0;
-
-	function m(t) {
-		return t._leaflet_id = t._leaflet_id || ++e, t._leaflet_id
-	}
-
-	function n(t, i, e) {
-		var n, o, s = function() {
-				n = !1, o && (r.apply(e, o), o = !1)
-			},
-			r = function() {
-				n ? o = arguments : (t.apply(e, arguments), setTimeout(s, i), n = !0)
-			};
-		return r
-	}
-
-	function o(t, i, e) {
-		var n = i[1],
-			o = i[0],
-			s = n - o;
-		return t === n && e ? t : ((t - o) % s + s) % s + o
-	}
-
-	function a() {
-		return !1
-	}
-
-	function r(t, i) {
-		var e = Math.pow(10, void 0 === i ? 6 : i);
-		return Math.round(t * e) / e
-	}
-
-	function u(t) {
-		return t.trim ? t.trim() : t.replace(/^\s+|\s+$/g, "")
-	}
-
-	function l(t) {
-		return u(t).split(/\s+/)
-	}
-
-	function c(t, i) {
-		for (var e in Object.prototype.hasOwnProperty.call(t, "options") || (t.options = t.options ? s(t.options) :
-			{}), i) t.options[e] = i[e];
-		return t.options
-	}
-
-	function _(t, i, e) {
-		var n = [];
-		for (var o in t) n.push(encodeURIComponent(e ? o.toUpperCase() : o) + "=" + encodeURIComponent(t[o]));
-		return (i && -1 !== i.indexOf("?") ? "&" : "?") + n.join("&")
-	}
-	var d = /\{ *([\w_-]+) *\}/g;
-
-	function f(t, n) {
-		return t.replace(d, function(t, i) {
-			var e = n[i];
-			if (void 0 === e) throw new Error("No value provided for variable " + t);
-			return "function" == typeof e && (e = e(n)), e
-		})
-	}
-	var g = Array.isArray || function(t) {
-		return "[object Array]" === Object.prototype.toString.call(t)
-	};
-
-	function v(t, i) {
-		for (var e = 0; e < t.length; e++)
-			if (t[e] === i) return e;
-		return -1
-	}
-	var y = "data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=";
-
-	function x(t) {
-		return window["webkit" + t] || window["moz" + t] || window["ms" + t]
-	}
-	var w = 0;
-
-	function P(t) {
-		var i = +new Date,
-			e = Math.max(0, 16 - (i - w));
-		return w = i + e, window.setTimeout(t, e)
-	}
-	var b = window.requestAnimationFrame || x("RequestAnimationFrame") || P,
-		T = window.cancelAnimationFrame || x("CancelAnimationFrame") || x("CancelRequestAnimationFrame") ||
-		function(t) {
-			window.clearTimeout(t)
-		};
-
-	function M(t, i, e) {
-		if (!e || b !== P) return b.call(window, p(t, i));
-		t.call(i)
-	}
-
-	function z(t) {
-		t && T.call(window, t)
-	}
-	var C = {
-		extend: h,
-		create: s,
-		bind: p,
-		lastId: e,
-		stamp: m,
-		throttle: n,
-		wrapNum: o,
-		falseFn: a,
-		formatNum: r,
-		trim: u,
-		splitWords: l,
-		setOptions: c,
-		getParamString: _,
-		template: f,
-		isArray: g,
-		indexOf: v,
-		emptyImageUrl: y,
-		requestFn: b,
-		cancelFn: T,
-		requestAnimFrame: M,
-		cancelAnimFrame: z
-	};
-
-	function S() {}
-	S.extend = function(t) {
-		function i() {
-			this.initialize && this.initialize.apply(this, arguments), this.callInitHooks()
-		}
-		var e = i.__super__ = this.prototype,
-			n = s(e);
-		for (var o in (n.constructor = i).prototype = n, this) Object.prototype.hasOwnProperty.call(this, o) &&
-			"prototype" !== o && "__super__" !== o && (i[o] = this[o]);
-		return t.statics && (h(i, t.statics), delete t.statics), t.includes && (function(t) {
-			if ("undefined" == typeof L || !L || !L.Mixin) return;
-			t = g(t) ? t : [t];
-			for (var i = 0; i < t.length; i++) t[i] === L.Mixin.Events && console.warn(
-				"Deprecated include of L.Mixin.Events: this property will be removed in future releases, please inherit from L.Evented instead.",
-				(new Error).stack)
-		}(t.includes), h.apply(null, [n].concat(t.includes)), delete t.includes), n.options && (t.options =
-			h(s(n.options), t.options)), h(n, t), n._initHooks = [], n.callInitHooks = function() {
-			if (!this._initHooksCalled) {
-				e.callInitHooks && e.callInitHooks.call(this), this._initHooksCalled = !0;
-				for (var t = 0, i = n._initHooks.length; t < i; t++) n._initHooks[t].call(this)
-			}
-		}, i
-	}, S.include = function(t) {
-		return h(this.prototype, t), this
-	}, S.mergeOptions = function(t) {
-		return h(this.prototype.options, t), this
-	}, S.addInitHook = function(t) {
-		var i = Array.prototype.slice.call(arguments, 1),
-			e = "function" == typeof t ? t : function() {
-				this[t].apply(this, i)
-			};
-		return this.prototype._initHooks = this.prototype._initHooks || [], this.prototype._initHooks.push(e),
-			this
-	};
-	var Z = {
-		on: function(t, i, e) {
-			if ("object" == typeof t)
-				for (var n in t) this._on(n, t[n], i);
-			else
-				for (var o = 0, s = (t = l(t)).length; o < s; o++) this._on(t[o], i, e);
-			return this
-		},
-		off: function(t, i, e) {
-			if (t)
-				if ("object" == typeof t)
-					for (var n in t) this._off(n, t[n], i);
-				else
-					for (var o = 0, s = (t = l(t)).length; o < s; o++) this._off(t[o], i, e);
-			else delete this._events;
-			return this
-		},
-		_on: function(t, i, e) {
-			this._events = this._events || {};
-			var n = this._events[t];
-			n || (n = [], this._events[t] = n), e === this && (e = void 0);
-			for (var o = {
-					fn: i,
-					ctx: e
-				}, s = n, r = 0, a = s.length; r < a; r++)
-				if (s[r].fn === i && s[r].ctx === e) return;
-			s.push(o)
-		},
-		_off: function(t, i, e) {
-			var n, o, s;
-			if (this._events && (n = this._events[t]))
-				if (i) {
-					if (e === this && (e = void 0), n)
-						for (o = 0, s = n.length; o < s; o++) {
-							var r = n[o];
-							if (r.ctx === e && r.fn === i) return r.fn = a, this._firingCount && (this
-								._events[t] = n = n.slice()), void n.splice(o, 1)
-						}
-				} else {
-					for (o = 0, s = n.length; o < s; o++) n[o].fn = a;
-					delete this._events[t]
-				}
-		},
-		fire: function(t, i, e) {
-			if (!this.listens(t, e)) return this;
-			var n = h({}, i, {
-				type: t,
-				target: this,
-				sourceTarget: i && i.sourceTarget || this
-			});
-			if (this._events) {
-				var o = this._events[t];
-				if (o) {
-					this._firingCount = this._firingCount + 1 || 1;
-					for (var s = 0, r = o.length; s < r; s++) {
-						var a = o[s];
-						a.fn.call(a.ctx || this, n)
-					}
-					this._firingCount--
-				}
-			}
-			return e && this._propagateEvent(n), this
-		},
-		listens: function(t, i) {
-			var e = this._events && this._events[t];
-			if (e && e.length) return !0;
-			if (i)
-				for (var n in this._eventParents)
-					if (this._eventParents[n].listens(t, i)) return !0;
-			return !1
-		},
-		once: function(t, i, e) {
-			if ("object" == typeof t) {
-				for (var n in t) this.once(n, t[n], i);
-				return this
-			}
-			var o = p(function() {
-				this.off(t, i, e).off(t, o, e)
-			}, this);
-			return this.on(t, i, e).on(t, o, e)
-		},
-		addEventParent: function(t) {
-			return this._eventParents = this._eventParents || {}, this._eventParents[m(t)] = t, this
-		},
-		removeEventParent: function(t) {
-			return this._eventParents && delete this._eventParents[m(t)], this
-		},
-		_propagateEvent: function(t) {
-			for (var i in this._eventParents) this._eventParents[i].fire(t.type, h({
-				layer: t.target,
-				propagatedFrom: t.target
-			}, t), !0)
-		}
-	};
-	Z.addEventListener = Z.on, Z.removeEventListener = Z.clearAllEventListeners = Z.off, Z.addOneTimeEventListener =
-		Z.once, Z.fireEvent = Z.fire, Z.hasEventListeners = Z.listens;
-	var E = S.extend(Z);
-
-	function k(t, i, e) {
-		this.x = e ? Math.round(t) : t, this.y = e ? Math.round(i) : i
-	}
-	var B = Math.trunc || function(t) {
-		return 0 < t ? Math.floor(t) : Math.ceil(t)
-	};
-
-	function A(t, i, e) {
-		return t instanceof k ? t : g(t) ? new k(t[0], t[1]) : null == t ? t : "object" == typeof t && "x" in t &&
-			"y" in t ? new k(t.x, t.y) : new k(t, i, e)
-	}
-
-	function I(t, i) {
-		if (t)
-			for (var e = i ? [t, i] : t, n = 0, o = e.length; n < o; n++) this.extend(e[n])
-	}
-
-	function O(t, i) {
-		return !t || t instanceof I ? t : new I(t, i)
-	}
-
-	function R(t, i) {
-		if (t)
-			for (var e = i ? [t, i] : t, n = 0, o = e.length; n < o; n++) this.extend(e[n])
-	}
-
-	function N(t, i) {
-		return t instanceof R ? t : new R(t, i)
-	}
-
-	function D(t, i, e) {
-		if (isNaN(t) || isNaN(i)) throw new Error("Invalid LatLng object: (" + t + ", " + i + ")");
-		this.lat = +t, this.lng = +i, void 0 !== e && (this.alt = +e)
-	}
-
-	function j(t, i, e) {
-		return t instanceof D ? t : g(t) && "object" != typeof t[0] ? 3 === t.length ? new D(t[0], t[1], t[2]) :
-			2 === t.length ? new D(t[0], t[1]) : null : null == t ? t : "object" == typeof t && "lat" in t ? new D(t
-				.lat, "lng" in t ? t.lng : t.lon, t.alt) : void 0 === i ? null : new D(t, i, e)
-	}
-	k.prototype = {
-		clone: function() {
-			return new k(this.x, this.y)
-		},
-		add: function(t) {
-			return this.clone()._add(A(t))
-		},
-		_add: function(t) {
-			return this.x += t.x, this.y += t.y, this
-		},
-		subtract: function(t) {
-			return this.clone()._subtract(A(t))
-		},
-		_subtract: function(t) {
-			return this.x -= t.x, this.y -= t.y, this
-		},
-		divideBy: function(t) {
-			return this.clone()._divideBy(t)
-		},
-		_divideBy: function(t) {
-			return this.x /= t, this.y /= t, this
-		},
-		multiplyBy: function(t) {
-			return this.clone()._multiplyBy(t)
-		},
-		_multiplyBy: function(t) {
-			return this.x *= t, this.y *= t, this
-		},
-		scaleBy: function(t) {
-			return new k(this.x * t.x, this.y * t.y)
-		},
-		unscaleBy: function(t) {
-			return new k(this.x / t.x, this.y / t.y)
-		},
-		round: function() {
-			return this.clone()._round()
-		},
-		_round: function() {
-			return this.x = Math.round(this.x), this.y = Math.round(this.y), this
-		},
-		floor: function() {
-			return this.clone()._floor()
-		},
-		_floor: function() {
-			return this.x = Math.floor(this.x), this.y = Math.floor(this.y), this
-		},
-		ceil: function() {
-			return this.clone()._ceil()
-		},
-		_ceil: function() {
-			return this.x = Math.ceil(this.x), this.y = Math.ceil(this.y), this
-		},
-		trunc: function() {
-			return this.clone()._trunc()
-		},
-		_trunc: function() {
-			return this.x = B(this.x), this.y = B(this.y), this
-		},
-		distanceTo: function(t) {
-			var i = (t = A(t)).x - this.x,
-				e = t.y - this.y;
-			return Math.sqrt(i * i + e * e)
-		},
-		equals: function(t) {
-			return (t = A(t)).x === this.x && t.y === this.y
-		},
-		contains: function(t) {
-			return t = A(t), Math.abs(t.x) <= Math.abs(this.x) && Math.abs(t.y) <= Math.abs(this.y)
-		},
-		toString: function() {
-			return "Point(" + r(this.x) + ", " + r(this.y) + ")"
-		}
-	}, I.prototype = {
-		extend: function(t) {
-			return t = A(t), this.min || this.max ? (this.min.x = Math.min(t.x, this.min.x), this.max.x =
-				Math.max(t.x, this.max.x), this.min.y = Math.min(t.y, this.min.y), this.max.y = Math
-				.max(t.y, this.max.y)) : (this.min = t.clone(), this.max = t.clone()), this
-		},
-		getCenter: function(t) {
-			return new k((this.min.x + this.max.x) / 2, (this.min.y + this.max.y) / 2, t)
-		},
-		getBottomLeft: function() {
-			return new k(this.min.x, this.max.y)
-		},
-		getTopRight: function() {
-			return new k(this.max.x, this.min.y)
-		},
-		getTopLeft: function() {
-			return this.min
-		},
-		getBottomRight: function() {
-			return this.max
-		},
-		getSize: function() {
-			return this.max.subtract(this.min)
-		},
-		contains: function(t) {
-			var i, e;
-			return (t = ("number" == typeof t[0] || t instanceof k ? A : O)(t)) instanceof I ? (i = t.min,
-					e = t.max) : i = e = t, i.x >= this.min.x && e.x <= this.max.x && i.y >= this.min.y && e
-				.y <= this.max.y
-		},
-		intersects: function(t) {
-			t = O(t);
-			var i = this.min,
-				e = this.max,
-				n = t.min,
-				o = t.max,
-				s = o.x >= i.x && n.x <= e.x,
-				r = o.y >= i.y && n.y <= e.y;
-			return s && r
-		},
-		overlaps: function(t) {
-			t = O(t);
-			var i = this.min,
-				e = this.max,
-				n = t.min,
-				o = t.max,
-				s = o.x > i.x && n.x < e.x,
-				r = o.y > i.y && n.y < e.y;
-			return s && r
-		},
-		isValid: function() {
-			return !(!this.min || !this.max)
-		}
-	}, R.prototype = {
-		extend: function(t) {
-			var i, e, n = this._southWest,
-				o = this._northEast;
-			if (t instanceof D) e = i = t;
-			else {
-				if (!(t instanceof R)) return t ? this.extend(j(t) || N(t)) : this;
-				if (i = t._southWest, e = t._northEast, !i || !e) return this
-			}
-			return n || o ? (n.lat = Math.min(i.lat, n.lat), n.lng = Math.min(i.lng, n.lng), o.lat = Math
-				.max(e.lat, o.lat), o.lng = Math.max(e.lng, o.lng)) : (this._southWest = new D(i.lat, i
-				.lng), this._northEast = new D(e.lat, e.lng)), this
-		},
-		pad: function(t) {
-			var i = this._southWest,
-				e = this._northEast,
-				n = Math.abs(i.lat - e.lat) * t,
-				o = Math.abs(i.lng - e.lng) * t;
-			return new R(new D(i.lat - n, i.lng - o), new D(e.lat + n, e.lng + o))
-		},
-		getCenter: function() {
-			return new D((this._southWest.lat + this._northEast.lat) / 2, (this._southWest.lng + this
-				._northEast.lng) / 2)
-		},
-		getSouthWest: function() {
-			return this._southWest
-		},
-		getNorthEast: function() {
-			return this._northEast
-		},
-		getNorthWest: function() {
-			return new D(this.getNorth(), this.getWest())
-		},
-		getSouthEast: function() {
-			return new D(this.getSouth(), this.getEast())
-		},
-		getWest: function() {
-			return this._southWest.lng
-		},
-		getSouth: function() {
-			return this._southWest.lat
-		},
-		getEast: function() {
-			return this._northEast.lng
-		},
-		getNorth: function() {
-			return this._northEast.lat
-		},
-		contains: function(t) {
-			t = ("number" == typeof t[0] || t instanceof D || "lat" in t ? j : N)(t);
-			var i, e, n = this._southWest,
-				o = this._northEast;
-			return t instanceof R ? (i = t.getSouthWest(), e = t.getNorthEast()) : i = e = t, i.lat >= n
-				.lat && e.lat <= o.lat && i.lng >= n.lng && e.lng <= o.lng
-		},
-		intersects: function(t) {
-			t = N(t);
-			var i = this._southWest,
-				e = this._northEast,
-				n = t.getSouthWest(),
-				o = t.getNorthEast(),
-				s = o.lat >= i.lat && n.lat <= e.lat,
-				r = o.lng >= i.lng && n.lng <= e.lng;
-			return s && r
-		},
-		overlaps: function(t) {
-			t = N(t);
-			var i = this._southWest,
-				e = this._northEast,
-				n = t.getSouthWest(),
-				o = t.getNorthEast(),
-				s = o.lat > i.lat && n.lat < e.lat,
-				r = o.lng > i.lng && n.lng < e.lng;
-			return s && r
-		},
-		toBBoxString: function() {
-			return [this.getWest(), this.getSouth(), this.getEast(), this.getNorth()].join(",")
-		},
-		equals: function(t, i) {
-			return !!t && (t = N(t), this._southWest.equals(t.getSouthWest(), i) && this._northEast.equals(t
-				.getNorthEast(), i))
-		},
-		isValid: function() {
-			return !(!this._southWest || !this._northEast)
-		}
-	};
-	var W, H = {
-			latLngToPoint: function(t, i) {
-				var e = this.projection.project(t),
-					n = this.scale(i);
-				return this.transformation._transform(e, n)
-			},
-			pointToLatLng: function(t, i) {
-				var e = this.scale(i),
-					n = this.transformation.untransform(t, e);
-				return this.projection.unproject(n)
-			},
-			project: function(t) {
-				return this.projection.project(t)
-			},
-			unproject: function(t) {
-				return this.projection.unproject(t)
-			},
-			scale: function(t) {
-				return 256 * Math.pow(2, t)
-			},
-			zoom: function(t) {
-				return Math.log(t / 256) / Math.LN2
-			},
-			getProjectedBounds: function(t) {
-				if (this.infinite) return null;
-				var i = this.projection.bounds,
-					e = this.scale(t);
-				return new I(this.transformation.transform(i.min, e), this.transformation.transform(i.max, e))
-			},
-			infinite: !(D.prototype = {
-				equals: function(t, i) {
-					return !!t && (t = j(t), Math.max(Math.abs(this.lat - t.lat), Math.abs(this.lng - t
-						.lng)) <= (void 0 === i ? 1e-9 : i))
-				},
-				toString: function(t) {
-					return "LatLng(" + r(this.lat, t) + ", " + r(this.lng, t) + ")"
-				},
-				distanceTo: function(t) {
-					return F.distance(this, j(t))
-				},
-				wrap: function() {
-					return F.wrapLatLng(this)
-				},
-				toBounds: function(t) {
-					var i = 180 * t / 40075017,
-						e = i / Math.cos(Math.PI / 180 * this.lat);
-					return N([this.lat - i, this.lng - e], [this.lat + i, this.lng + e])
-				},
-				clone: function() {
-					return new D(this.lat, this.lng, this.alt)
-				}
-			}),
-			wrapLatLng: function(t) {
-				var i = this.wrapLng ? o(t.lng, this.wrapLng, !0) : t.lng;
-				return new D(this.wrapLat ? o(t.lat, this.wrapLat, !0) : t.lat, i, t.alt)
-			},
-			wrapLatLngBounds: function(t) {
-				var i = t.getCenter(),
-					e = this.wrapLatLng(i),
-					n = i.lat - e.lat,
-					o = i.lng - e.lng;
-				if (0 == n && 0 == o) return t;
-				var s = t.getSouthWest(),
-					r = t.getNorthEast();
-				return new R(new D(s.lat - n, s.lng - o), new D(r.lat - n, r.lng - o))
-			}
-		},
-		F = h({}, H, {
-			wrapLng: [-180, 180],
-			R: 6371e3,
-			distance: function(t, i) {
-				var e = Math.PI / 180,
-					n = t.lat * e,
-					o = i.lat * e,
-					s = Math.sin((i.lat - t.lat) * e / 2),
-					r = Math.sin((i.lng - t.lng) * e / 2),
-					a = s * s + Math.cos(n) * Math.cos(o) * r * r,
-					h = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
-				return this.R * h
-			}
-		}),
-		U = 6378137,
-		V = {
-			R: U,
-			MAX_LATITUDE: 85.0511287798,
-			project: function(t) {
-				var i = Math.PI / 180,
-					e = this.MAX_LATITUDE,
-					n = Math.max(Math.min(e, t.lat), -e),
-					o = Math.sin(n * i);
-				return new k(this.R * t.lng * i, this.R * Math.log((1 + o) / (1 - o)) / 2)
-			},
-			unproject: function(t) {
-				var i = 180 / Math.PI;
-				return new D((2 * Math.atan(Math.exp(t.y / this.R)) - Math.PI / 2) * i, t.x * i / this.R)
-			},
-			bounds: new I([-(W = U * Math.PI), -W], [W, W])
-		};
-
-	function q(t, i, e, n) {
-		if (g(t)) return this._a = t[0], this._b = t[1], this._c = t[2], void(this._d = t[3]);
-		this._a = t, this._b = i, this._c = e, this._d = n
-	}
-
-	function G(t, i, e, n) {
-		return new q(t, i, e, n)
-	}
-	q.prototype = {
-		transform: function(t, i) {
-			return this._transform(t.clone(), i)
-		},
-		_transform: function(t, i) {
-			return i = i || 1, t.x = i * (this._a * t.x + this._b), t.y = i * (this._c * t.y + this._d), t
-		},
-		untransform: function(t, i) {
-			return i = i || 1, new k((t.x / i - this._b) / this._a, (t.y / i - this._d) / this._c)
-		}
-	};
-	var K, Y = h({}, F, {
-			code: "EPSG:3857",
-			projection: V,
-			transformation: G(K = .5 / (Math.PI * V.R), .5, -K, .5)
-		}),
-		X = h({}, Y, {
-			code: "EPSG:900913"
-		});
-
-	function J(t) {
-		return document.createElementNS("http://www.w3.org/2000/svg", t)
-	}
-
-	function $(t, i) {
-		for (var e, n, o, s, r = "", a = 0, h = t.length; a < h; a++) {
-			for (e = 0, n = (o = t[a]).length; e < n; e++) r += (e ? "L" : "M") + (s = o[e]).x + " " + s.y;
-			r += i ? Zt ? "z" : "x" : ""
-		}
-		return r || "M0 0"
-	}
-	var Q = document.documentElement.style,
-		tt = "ActiveXObject" in window,
-		it = tt && !document.addEventListener,
-		et = "msLaunchUri" in navigator && !("documentMode" in document),
-		nt = kt("webkit"),
-		ot = kt("android"),
-		st = kt("android 2") || kt("android 3"),
-		rt = parseInt(/WebKit\/([0-9]+)|$/.exec(navigator.userAgent)[1], 10),
-		at = ot && kt("Google") && rt < 537 && !("AudioNode" in window),
-		ht = !!window.opera,
-		ut = !et && kt("chrome"),
-		lt = kt("gecko") && !nt && !ht && !tt,
-		ct = !ut && kt("safari"),
-		_t = kt("phantom"),
-		dt = "OTransition" in Q,
-		pt = 0 === navigator.platform.indexOf("Win"),
-		mt = tt && "transition" in Q,
-		ft = "WebKitCSSMatrix" in window && "m11" in new window.WebKitCSSMatrix && !st,
-		gt = "MozPerspective" in Q,
-		vt = !window.L_DISABLE_3D && (mt || ft || gt) && !dt && !_t,
-		yt = "undefined" != typeof orientation || kt("mobile"),
-		xt = yt && nt,
-		wt = yt && ft,
-		Pt = !window.PointerEvent && window.MSPointerEvent,
-		Lt = !(!window.PointerEvent && !Pt),
-		bt = !window.L_NO_TOUCH && (Lt || "ontouchstart" in window || window.DocumentTouch &&
-			document instanceof window.DocumentTouch),
-		Tt = yt && ht,
-		Mt = yt && lt,
-		zt = 1 < (window.devicePixelRatio || window.screen.deviceXDPI / window.screen.logicalXDPI),
-		Ct = function() {
-			var t = !1;
-			try {
-				var i = Object.defineProperty({}, "passive", {
-					get: function() {
-						t = !0
-					}
-				});
-				window.addEventListener("testPassiveEventSupport", a, i), window.removeEventListener(
-					"testPassiveEventSupport", a, i)
-			} catch (t) {}
-			return t
-		}(),
-		St = !!document.createElement("canvas").getContext,
-		Zt = !(!document.createElementNS || !J("svg").createSVGRect),
-		Et = !Zt && function() {
-			try {
-				var t = document.createElement("div");
-				t.innerHTML = '<v:shape adj="1"/>';
-				var i = t.firstChild;
-				return i.style.behavior = "url(#default#VML)", i && "object" == typeof i.adj
-			} catch (t) {
-				return !1
-			}
-		}();
-
-	function kt(t) {
-		return 0 <= navigator.userAgent.toLowerCase().indexOf(t)
-	}
-	var Bt = {
-			ie: tt,
-			ielt9: it,
-			edge: et,
-			webkit: nt,
-			android: ot,
-			android23: st,
-			androidStock: at,
-			opera: ht,
-			chrome: ut,
-			gecko: lt,
-			safari: ct,
-			phantom: _t,
-			opera12: dt,
-			win: pt,
-			ie3d: mt,
-			webkit3d: ft,
-			gecko3d: gt,
-			any3d: vt,
-			mobile: yt,
-			mobileWebkit: xt,
-			mobileWebkit3d: wt,
-			msPointer: Pt,
-			pointer: Lt,
-			touch: bt,
-			mobileOpera: Tt,
-			mobileGecko: Mt,
-			retina: zt,
-			passiveEvents: Ct,
-			canvas: St,
-			svg: Zt,
-			vml: Et
-		},
-		At = Pt ? "MSPointerDown" : "pointerdown",
-		It = Pt ? "MSPointerMove" : "pointermove",
-		Ot = Pt ? "MSPointerUp" : "pointerup",
-		Rt = Pt ? "MSPointerCancel" : "pointercancel",
-		Nt = {},
-		Dt = !1;
-
-	function jt(t, i, e, n) {
-		function o(t) {
-			Ut(t, r)
-		}
-		var s, r, a, h, u, l, c, _;
-
-		function d(t) {
-			t.pointerType === (t.MSPOINTER_TYPE_MOUSE || "mouse") && 0 === t.buttons || Ut(t, h)
-		}
-		return "touchstart" === i ? (u = t, l = e, c = n, _ = p(function(t) {
-			t.MSPOINTER_TYPE_TOUCH && t.pointerType === t.MSPOINTER_TYPE_TOUCH && Ri(t), Ut(t, l)
-		}), u["_leaflet_touchstart" + c] = _, u.addEventListener(At, _, !1), Dt || (document
-			.addEventListener(At, Wt, !0), document.addEventListener(It, Ht, !0), document.addEventListener(
-				Ot, Ft, !0), document.addEventListener(Rt, Ft, !0), Dt = !0)) : "touchmove" === i ? (h = e, (a =
-			t)["_leaflet_touchmove" + n] = d, a.addEventListener(It, d, !1)) : "touchend" === i && (r = e, (s =
-			t)["_leaflet_touchend" + n] = o, s.addEventListener(Ot, o, !1), s.addEventListener(Rt, o, !1)), this
-	}
-
-	function Wt(t) {
-		Nt[t.pointerId] = t
-	}
-
-	function Ht(t) {
-		Nt[t.pointerId] && (Nt[t.pointerId] = t)
-	}
-
-	function Ft(t) {
-		delete Nt[t.pointerId]
-	}
-
-	function Ut(t, i) {
-		for (var e in t.touches = [], Nt) t.touches.push(Nt[e]);
-		t.changedTouches = [t], i(t)
-	}
-	var Vt = Pt ? "MSPointerDown" : Lt ? "pointerdown" : "touchstart",
-		qt = Pt ? "MSPointerUp" : Lt ? "pointerup" : "touchend",
-		Gt = "_leaflet_";
-	var Kt, Yt, Xt, Jt, $t, Qt, ti = fi(["transform", "webkitTransform", "OTransform", "MozTransform",
-			"msTransform"]),
-		ii = fi(["webkitTransition", "transition", "OTransition", "MozTransition", "msTransition"]),
-		ei = "webkitTransition" === ii || "OTransition" === ii ? ii + "End" : "transitionend";
-
-	function ni(t) {
-		return "string" == typeof t ? document.getElementById(t) : t
-	}
-
-	function oi(t, i) {
-		var e, n = t.style[i] || t.currentStyle && t.currentStyle[i];
-		return n && "auto" !== n || !document.defaultView || (n = (e = document.defaultView.getComputedStyle(t,
-			null)) ? e[i] : null), "auto" === n ? null : n
-	}
-
-	function si(t, i, e) {
-		var n = document.createElement(t);
-		return n.className = i || "", e && e.appendChild(n), n
-	}
-
-	function ri(t) {
-		var i = t.parentNode;
-		i && i.removeChild(t)
-	}
-
-	function ai(t) {
-		for (; t.firstChild;) t.removeChild(t.firstChild)
-	}
-
-	function hi(t) {
-		var i = t.parentNode;
-		i && i.lastChild !== t && i.appendChild(t)
-	}
-
-	function ui(t) {
-		var i = t.parentNode;
-		i && i.firstChild !== t && i.insertBefore(t, i.firstChild)
-	}
-
-	function li(t, i) {
-		if (void 0 !== t.classList) return t.classList.contains(i);
-		var e = pi(t);
-		return 0 < e.length && new RegExp("(^|\\s)" + i + "(\\s|$)").test(e)
-	}
-
-	function ci(t, i) {
-		var e;
-		if (void 0 !== t.classList)
-			for (var n = l(i), o = 0, s = n.length; o < s; o++) t.classList.add(n[o]);
-		else li(t, i) || di(t, ((e = pi(t)) ? e + " " : "") + i)
-	}
-
-	function _i(t, i) {
-		void 0 !== t.classList ? t.classList.remove(i) : di(t, u((" " + pi(t) + " ").replace(" " + i + " ", " ")))
-	}
-
-	function di(t, i) {
-		void 0 === t.className.baseVal ? t.className = i : t.className.baseVal = i
-	}
-
-	function pi(t) {
-		return t.correspondingElement && (t = t.correspondingElement), void 0 === t.className.baseVal ? t
-			.className : t.className.baseVal
-	}
-
-	function mi(t, i) {
-		"opacity" in t.style ? t.style.opacity = i : "filter" in t.style && function(t, i) {
-			var e = !1,
-				n = "DXImageTransform.Microsoft.Alpha";
-			try {
-				e = t.filters.item(n)
-			} catch (t) {
-				if (1 === i) return
-			}
-			i = Math.round(100 * i), e ? (e.Enabled = 100 !== i, e.Opacity = i) : t.style.filter += " progid:" +
-				n + "(opacity=" + i + ")"
-		}(t, i)
-	}
-
-	function fi(t) {
-		for (var i = document.documentElement.style, e = 0; e < t.length; e++)
-			if (t[e] in i) return t[e];
-		return !1
-	}
-
-	function gi(t, i, e) {
-		var n = i || new k(0, 0);
-		t.style[ti] = (mt ? "translate(" + n.x + "px," + n.y + "px)" : "translate3d(" + n.x + "px," + n.y +
-			"px,0)") + (e ? " scale(" + e + ")" : "")
-	}
-
-	function vi(t, i) {
-		t._leaflet_pos = i, vt ? gi(t, i) : (t.style.left = i.x + "px", t.style.top = i.y + "px")
-	}
-
-	function yi(t) {
-		return t._leaflet_pos || new k(0, 0)
-	}
-
-	function xi() {
-		zi(window, "dragstart", Ri)
-	}
-
-	function wi() {
-		Si(window, "dragstart", Ri)
-	}
-
-	function Pi(t) {
-		for (; - 1 === t.tabIndex;) t = t.parentNode;
-		t.style && (Li(), Qt = ($t = t).style.outline, t.style.outline = "none", zi(window, "keydown", Li))
-	}
-
-	function Li() {
-		$t && ($t.style.outline = Qt, Qt = $t = void 0, Si(window, "keydown", Li))
-	}
-
-	function bi(t) {
-		for (; !((t = t.parentNode).offsetWidth && t.offsetHeight || t === document.body););
-		return t
-	}
-
-	function Ti(t) {
-		var i = t.getBoundingClientRect();
-		return {
-			x: i.width / t.offsetWidth || 1,
-			y: i.height / t.offsetHeight || 1,
-			boundingClientRect: i
-		}
-	}
-	Jt = "onselectstart" in document ? (Xt = function() {
-		zi(window, "selectstart", Ri)
-	}, function() {
-		Si(window, "selectstart", Ri)
-	}) : (Yt = fi(["userSelect", "WebkitUserSelect", "OUserSelect", "MozUserSelect", "msUserSelect"]), Xt =
-		function() {
-			var t;
-			Yt && (t = document.documentElement.style, Kt = t[Yt], t[Yt] = "none")
-		},
-		function() {
-			Yt && (document.documentElement.style[Yt] = Kt, Kt = void 0)
-		});
-	var Mi = {
-		TRANSFORM: ti,
-		TRANSITION: ii,
-		TRANSITION_END: ei,
-		get: ni,
-		getStyle: oi,
-		create: si,
-		remove: ri,
-		empty: ai,
-		toFront: hi,
-		toBack: ui,
-		hasClass: li,
-		addClass: ci,
-		removeClass: _i,
-		setClass: di,
-		getClass: pi,
-		setOpacity: mi,
-		testProp: fi,
-		setTransform: gi,
-		setPosition: vi,
-		getPosition: yi,
-		disableTextSelection: Xt,
-		enableTextSelection: Jt,
-		disableImageDrag: xi,
-		enableImageDrag: wi,
-		preventOutline: Pi,
-		restoreOutline: Li,
-		getSizedParentNode: bi,
-		getScale: Ti
-	};
-
-	function zi(t, i, e, n) {
-		if ("object" == typeof i)
-			for (var o in i) ki(t, o, i[o], e);
-		else
-			for (var s = 0, r = (i = l(i)).length; s < r; s++) ki(t, i[s], e, n);
-		return this
-	}
-	var Ci = "_leaflet_events";
-
-	function Si(t, i, e, n) {
-		if ("object" == typeof i)
-			for (var o in i) Bi(t, o, i[o], e);
-		else if (i)
-			for (var s = 0, r = (i = l(i)).length; s < r; s++) Bi(t, i[s], e, n);
-		else {
-			for (var a in t[Ci]) Bi(t, a, t[Ci][a]);
-			delete t[Ci]
-		}
-		return this
-	}
-
-	function Zi() {
-		return Lt && (!et && !ct)
-	}
-	var Ei = {
-		mouseenter: "mouseover",
-		mouseleave: "mouseout",
-		wheel: !("onwheel" in window) && "mousewheel"
-	};
-
-	function ki(i, t, e, n) {
-		var o = t + m(e) + (n ? "_" + m(n) : "");
-		if (i[Ci] && i[Ci][o]) return this;
-		var s, r, a, h, u, l, c = function(t) {
-				return e.call(n || i, t || window.event)
-			},
-			_ = c;
-
-		function d(t) {
-			if (Lt) {
-				if (!t.isPrimary) return;
-				if ("mouse" === t.pointerType) return
-			} else if (1 < t.touches.length) return;
-			var i = Date.now(),
-				e = i - (h || i);
-			u = t.touches ? t.touches[0] : t, l = 0 < e && e <= 250, h = i
-		}
-
-		function p(t) {
-			if (l && !u.cancelBubble) {
-				if (Lt) {
-					if ("mouse" === t.pointerType) return;
-					var i, e, n = {};
-					for (e in u) i = u[e], n[e] = i && i.bind ? i.bind(u) : i;
-					u = n
-				}
-				u.type = "dblclick", u.button = 0, r(u), h = null
-			}
-		}
-		Lt && 0 === t.indexOf("touch") ? jt(i, t, c, o) : bt && "dblclick" === t && !Zi() ? (r = c, l = !1, (s = i)[
-				Gt + Vt + (a = o)] = d, s[Gt + qt + a] = p, s[Gt + "dblclick" + a] = r, s.addEventListener(Vt,
-				d, !!Ct && {
-					passive: !1
-				}), s.addEventListener(qt, p, !!Ct && {
-				passive: !1
-			}), s.addEventListener("dblclick", r, !1)) : "addEventListener" in i ? "touchstart" === t ||
-			"touchmove" === t || "wheel" === t || "mousewheel" === t ? i.addEventListener(Ei[t] || t, c, !!Ct && {
-				passive: !1
-			}) : "mouseenter" === t || "mouseleave" === t ? (c = function(t) {
-				t = t || window.event, Vi(i, t) && _(t)
-			}, i.addEventListener(Ei[t], c, !1)) : i.addEventListener(t, _, !1) : "attachEvent" in i && i
-			.attachEvent("on" + t, c), i[Ci] = i[Ci] || {}, i[Ci][o] = c
-	}
-
-	function Bi(t, i, e, n) {
-		var o, s, r, a, h, u, l, c, _ = i + m(e) + (n ? "_" + m(n) : ""),
-			d = t[Ci] && t[Ci][_];
-		if (!d) return this;
-		Lt && 0 === i.indexOf("touch") ? (c = (u = t)["_leaflet_" + (l = i) + _], "touchstart" === l ? u
-				.removeEventListener(At, c, !1) : "touchmove" === l ? u.removeEventListener(It, c, !1) :
-				"touchend" === l && (u.removeEventListener(Ot, c, !1), u.removeEventListener(Rt, c, !1))) : bt &&
-			"dblclick" === i && !Zi() ? (r = (o = t)[Gt + Vt + (s = _)], a = o[Gt + qt + s], h = o[Gt + "dblclick" +
-				s], o.removeEventListener(Vt, r, !!Ct && {
-				passive: !1
-			}), o.removeEventListener(qt, a, !!Ct && {
-				passive: !1
-			}), o.removeEventListener("dblclick", h, !1)) : "removeEventListener" in t ? t.removeEventListener(Ei[
-				i] || i, d, !1) : "detachEvent" in t && t.detachEvent("on" + i, d), t[Ci][_] = null
-	}
-
-	function Ai(t) {
-		return t.stopPropagation ? t.stopPropagation() : t.originalEvent ? t.originalEvent._stopped = !0 : t
-			.cancelBubble = !0, Ui(t), this
-	}
-
-	function Ii(t) {
-		return ki(t, "wheel", Ai), this
-	}
-
-	function Oi(t) {
-		return zi(t, "mousedown touchstart dblclick", Ai), ki(t, "click", Fi), this
-	}
-
-	function Ri(t) {
-		return t.preventDefault ? t.preventDefault() : t.returnValue = !1, this
-	}
-
-	function Ni(t) {
-		return Ri(t), Ai(t), this
-	}
-
-	function Di(t, i) {
-		if (!i) return new k(t.clientX, t.clientY);
-		var e = Ti(i),
-			n = e.boundingClientRect;
-		return new k((t.clientX - n.left) / e.x - i.clientLeft, (t.clientY - n.top) / e.y - i.clientTop)
-	}
-	var ji = pt && ut ? 2 * window.devicePixelRatio : lt ? window.devicePixelRatio : 1;
-
-	function Wi(t) {
-		return et ? t.wheelDeltaY / 2 : t.deltaY && 0 === t.deltaMode ? -t.deltaY / ji : t.deltaY && 1 === t
-			.deltaMode ? 20 * -t.deltaY : t.deltaY && 2 === t.deltaMode ? 60 * -t.deltaY : t.deltaX || t.deltaZ ?
-			0 : t.wheelDelta ? (t.wheelDeltaY || t.wheelDelta) / 2 : t.detail && Math.abs(t.detail) < 32765 ? 20 * -
-			t.detail : t.detail ? t.detail / -32765 * 60 : 0
-	}
-	var Hi = {};
-
-	function Fi(t) {
-		Hi[t.type] = !0
-	}
-
-	function Ui(t) {
-		var i = Hi[t.type];
-		return Hi[t.type] = !1, i
-	}
-
-	function Vi(t, i) {
-		var e = i.relatedTarget;
-		if (!e) return !0;
-		try {
-			for (; e && e !== t;) e = e.parentNode
-		} catch (t) {
-			return !1
-		}
-		return e !== t
-	}
-	var qi = {
-			on: zi,
-			off: Si,
-			stopPropagation: Ai,
-			disableScrollPropagation: Ii,
-			disableClickPropagation: Oi,
-			preventDefault: Ri,
-			stop: Ni,
-			getMousePosition: Di,
-			getWheelDelta: Wi,
-			fakeStop: Fi,
-			skipped: Ui,
-			isExternalTarget: Vi,
-			addListener: zi,
-			removeListener: Si
-		},
-		Gi = E.extend({
-			run: function(t, i, e, n) {
-				this.stop(), this._el = t, this._inProgress = !0, this._duration = e || .25, this
-					._easeOutPower = 1 / Math.max(n || .5, .2), this._startPos = yi(t), this._offset = i
-					.subtract(this._startPos), this._startTime = +new Date, this.fire("start"), this
-					._animate()
-			},
-			stop: function() {
-				this._inProgress && (this._step(!0), this._complete())
-			},
-			_animate: function() {
-				this._animId = M(this._animate, this), this._step()
-			},
-			_step: function(t) {
-				var i = new Date - this._startTime,
-					e = 1e3 * this._duration;
-				i < e ? this._runFrame(this._easeOut(i / e), t) : (this._runFrame(1), this._complete())
-			},
-			_runFrame: function(t, i) {
-				var e = this._startPos.add(this._offset.multiplyBy(t));
-				i && e._round(), vi(this._el, e), this.fire("step")
-			},
-			_complete: function() {
-				z(this._animId), this._inProgress = !1, this.fire("end")
-			},
-			_easeOut: function(t) {
-				return 1 - Math.pow(1 - t, this._easeOutPower)
-			}
-		}),
-		Ki = E.extend({
-			options: {
-				crs: Y,
-				center: void 0,
-				zoom: void 0,
-				minZoom: void 0,
-				maxZoom: void 0,
-				layers: [],
-				maxBounds: void 0,
-				renderer: void 0,
-				zoomAnimation: !0,
-				zoomAnimationThreshold: 4,
-				fadeAnimation: !0,
-				markerZoomAnimation: !0,
-				transform3DLimit: 8388608,
-				zoomSnap: 1,
-				zoomDelta: 1,
-				trackResize: !0
-			},
-			initialize: function(t, i) {
-				i = c(this, i), this._handlers = [], this._layers = {}, this._zoomBoundLayers = {}, this
-					._sizeChanged = !0, this._initContainer(t), this._initLayout(), this._onResize = p(this
-						._onResize, this), this._initEvents(), i.maxBounds && this.setMaxBounds(i
-					.maxBounds), void 0 !== i.zoom && (this._zoom = this._limitZoom(i.zoom)), i.center &&
-					void 0 !== i.zoom && this.setView(j(i.center), i.zoom, {
-						reset: !0
-					}), this.callInitHooks(), this._zoomAnimated = ii && vt && !Tt && this.options
-					.zoomAnimation, this._zoomAnimated && (this._createAnimProxy(), zi(this._proxy, ei, this
-						._catchTransitionEnd, this)), this._addLayers(this.options.layers)
-			},
-			setView: function(t, i, e) {
-				if ((i = void 0 === i ? this._zoom : this._limitZoom(i), t = this._limitCenter(j(t), i, this
-							.options.maxBounds), e = e || {}, this._stop(), this._loaded && !e.reset && !
-						0 !== e) && (void 0 !== e.animate && (e.zoom = h({
-						animate: e.animate
-					}, e.zoom), e.pan = h({
-						animate: e.animate,
-						duration: e.duration
-					}, e.pan)), this._zoom !== i ? this._tryAnimatedZoom && this._tryAnimatedZoom(t, i,
-						e.zoom) : this._tryAnimatedPan(t, e.pan))) return clearTimeout(this._sizeTimer),
-					this;
-				return this._resetView(t, i), this
-			},
-			setZoom: function(t, i) {
-				return this._loaded ? this.setView(this.getCenter(), t, {
-					zoom: i
-				}) : (this._zoom = t, this)
-			},
-			zoomIn: function(t, i) {
-				return t = t || (vt ? this.options.zoomDelta : 1), this.setZoom(this._zoom + t, i)
-			},
-			zoomOut: function(t, i) {
-				return t = t || (vt ? this.options.zoomDelta : 1), this.setZoom(this._zoom - t, i)
-			},
-			setZoomAround: function(t, i, e) {
-				var n = this.getZoomScale(i),
-					o = this.getSize().divideBy(2),
-					s = (t instanceof k ? t : this.latLngToContainerPoint(t)).subtract(o).multiplyBy(1 - 1 /
-						n),
-					r = this.containerPointToLatLng(o.add(s));
-				return this.setView(r, i, {
-					zoom: e
-				})
-			},
-			_getBoundsCenterZoom: function(t, i) {
-				i = i || {}, t = t.getBounds ? t.getBounds() : N(t);
-				var e = A(i.paddingTopLeft || i.padding || [0, 0]),
-					n = A(i.paddingBottomRight || i.padding || [0, 0]),
-					o = this.getBoundsZoom(t, !1, e.add(n));
-				if ((o = "number" == typeof i.maxZoom ? Math.min(i.maxZoom, o) : o) === 1 / 0) return {
-					center: t.getCenter(),
-					zoom: o
-				};
-				var s = n.subtract(e).divideBy(2),
-					r = this.project(t.getSouthWest(), o),
-					a = this.project(t.getNorthEast(), o);
-				return {
-					center: this.unproject(r.add(a).divideBy(2).add(s), o),
-					zoom: o
-				}
-			},
-			fitBounds: function(t, i) {
-				if (!(t = N(t)).isValid()) throw new Error("Bounds are not valid.");
-				var e = this._getBoundsCenterZoom(t, i);
-				return this.setView(e.center, e.zoom, i)
-			},
-			fitWorld: function(t) {
-				return this.fitBounds([
-					[-90, -180],
-					[90, 180]
-				], t)
-			},
-			panTo: function(t, i) {
-				return this.setView(t, this._zoom, {
-					pan: i
-				})
-			},
-			panBy: function(t, i) {
-				return i = i || {}, (t = A(t).round()).x || t.y ? (!0 === i.animate || this.getSize()
-					.contains(t) ? (this._panAnim || (this._panAnim = new Gi, this._panAnim.on({
-						step: this._onPanTransitionStep,
-						end: this._onPanTransitionEnd
-					}, this)), i.noMoveStart || this.fire("movestart"), !1 !== i.animate ? (ci(this
-							._mapPane, "leaflet-pan-anim"), e = this._getMapPanePos().subtract(t)
-						.round(), this._panAnim.run(this._mapPane, e, i.duration || .25, i
-							.easeLinearity)) : (this._rawPanBy(t), this.fire("move").fire(
-						"moveend"))) : this._resetView(this.unproject(this.project(this.getCenter())
-						.add(t)), this.getZoom()), this) : this.fire("moveend");
-				var e
-			},
-			flyTo: function(s, r, t) {
-				if (!1 === (t = t || {}).animate || !vt) return this.setView(s, r, t);
-				this._stop();
-				var a = this.project(this.getCenter()),
-					h = this.project(s),
-					i = this.getSize(),
-					u = this._zoom;
-				s = j(s), r = void 0 === r ? u : r;
-				var l = Math.max(i.x, i.y),
-					n = l * this.getZoomScale(u, r),
-					c = h.distanceTo(a) || 1,
-					_ = 1.42,
-					o = _ * _;
-
-				function e(t) {
-					var i = (n * n - l * l + (t ? -1 : 1) * o * o * c * c) / (2 * (t ? n : l) * o * c),
-						e = Math.sqrt(i * i + 1) - i;
-					return e < 1e-9 ? -18 : Math.log(e)
-				}
-
-				function d(t) {
-					return (Math.exp(t) - Math.exp(-t)) / 2
-				}
-
-				function p(t) {
-					return (Math.exp(t) + Math.exp(-t)) / 2
-				}
-				var m = e(0);
-
-				function f(t) {
-					return l * (p(m) * (d(i = m + _ * t) / p(i)) - d(m)) / o;
-					var i
-				}
-				var g = Date.now(),
-					v = (e(1) - m) / _,
-					y = t.duration ? 1e3 * t.duration : 1e3 * v * .8;
-				return this._moveStart(!0, t.noMoveStart),
-					function t() {
-						var i, e, n = (Date.now() - g) / y,
-							o = (i = n, (1 - Math.pow(1 - i, 1.5)) * v);
-						n <= 1 ? (this._flyToFrame = M(t, this), this._move(this.unproject(a.add(h.subtract(
-							a).multiplyBy(f(o) / c)), u), this.getScaleZoom(l / (e = o, l * (p(
-							m) / p(m + _ * e))), u), {
-							flyTo: !0
-						})) : this._move(s, r)._moveEnd(!0)
-					}.call(this), this
-			},
-			flyToBounds: function(t, i) {
-				var e = this._getBoundsCenterZoom(t, i);
-				return this.flyTo(e.center, e.zoom, i)
-			},
-			setMaxBounds: function(t) {
-				return (t = N(t)).isValid() ? (this.options.maxBounds && this.off("moveend", this
-						._panInsideMaxBounds), this.options.maxBounds = t, this._loaded && this
-					._panInsideMaxBounds(), this.on("moveend", this._panInsideMaxBounds)) : (this
-					.options.maxBounds = null, this.off("moveend", this._panInsideMaxBounds))
-			},
-			setMinZoom: function(t) {
-				var i = this.options.minZoom;
-				return this.options.minZoom = t, this._loaded && i !== t && (this.fire("zoomlevelschange"),
-					this.getZoom() < this.options.minZoom) ? this.setZoom(t) : this
-			},
-			setMaxZoom: function(t) {
-				var i = this.options.maxZoom;
-				return this.options.maxZoom = t, this._loaded && i !== t && (this.fire("zoomlevelschange"),
-					this.getZoom() > this.options.maxZoom) ? this.setZoom(t) : this
-			},
-			panInsideBounds: function(t, i) {
-				this._enforcingBounds = !0;
-				var e = this.getCenter(),
-					n = this._limitCenter(e, this._zoom, N(t));
-				return e.equals(n) || this.panTo(n, i), this._enforcingBounds = !1, this
-			},
-			panInside: function(t, i) {
-				var e, n, o = A((i = i || {}).paddingTopLeft || i.padding || [0, 0]),
-					s = A(i.paddingBottomRight || i.padding || [0, 0]),
-					r = this.getCenter(),
-					a = this.project(r),
-					h = this.project(t),
-					u = this.getPixelBounds(),
-					l = u.getSize().divideBy(2),
-					c = O([u.min.add(o), u.max.subtract(s)]);
-				return c.contains(h) || (this._enforcingBounds = !0, e = a.subtract(h), n = A(h.x + e.x, h
-					.y + e.y), (h.x < c.min.x || h.x > c.max.x) && (n.x = a.x - e.x, 0 < e.x ? n
-					.x += l.x - o.x : n.x -= l.x - s.x), (h.y < c.min.y || h.y > c.max.y) && (n.y =
-					a.y - e.y, 0 < e.y ? n.y += l.y - o.y : n.y -= l.y - s.y), this.panTo(this
-					.unproject(n), i), this._enforcingBounds = !1), this
-			},
-			invalidateSize: function(t) {
-				if (!this._loaded) return this;
-				t = h({
-					animate: !1,
-					pan: !0
-				}, !0 === t ? {
-					animate: !0
-				} : t);
-				var i = this.getSize();
-				this._sizeChanged = !0, this._lastCenter = null;
-				var e = this.getSize(),
-					n = i.divideBy(2).round(),
-					o = e.divideBy(2).round(),
-					s = n.subtract(o);
-				return s.x || s.y ? (t.animate && t.pan ? this.panBy(s) : (t.pan && this._rawPanBy(s), this
-					.fire("move"), t.debounceMoveend ? (clearTimeout(this._sizeTimer), this
-						._sizeTimer = setTimeout(p(this.fire, this, "moveend"), 200)) : this.fire(
-						"moveend")), this.fire("resize", {
-					oldSize: i,
-					newSize: e
-				})) : this
-			},
-			stop: function() {
-				return this.setZoom(this._limitZoom(this._zoom)), this.options.zoomSnap || this.fire(
-					"viewreset"), this._stop()
-			},
-			locate: function(t) {
-				if (t = this._locateOptions = h({
-						timeout: 1e4,
-						watch: !1
-					}, t), !("geolocation" in navigator)) return this._handleGeolocationError({
-					code: 0,
-					message: "Geolocation not supported."
-				}), this;
-				var i = p(this._handleGeolocationResponse, this),
-					e = p(this._handleGeolocationError, this);
-				return t.watch ? this._locationWatchId = navigator.geolocation.watchPosition(i, e, t) :
-					navigator.geolocation.getCurrentPosition(i, e, t), this
-			},
-			stopLocate: function() {
-				return navigator.geolocation && navigator.geolocation.clearWatch && navigator.geolocation
-					.clearWatch(this._locationWatchId), this._locateOptions && (this._locateOptions
-						.setView = !1), this
-			},
-			_handleGeolocationError: function(t) {
-				var i = t.code,
-					e = t.message || (1 === i ? "permission denied" : 2 === i ? "position unavailable" :
-						"timeout");
-				this._locateOptions.setView && !this._loaded && this.fitWorld(), this.fire(
-				"locationerror", {
-					code: i,
-					message: "Geolocation error: " + e + "."
-				})
-			},
-			_handleGeolocationResponse: function(t) {
-				var i, e = new D(t.coords.latitude, t.coords.longitude),
-					n = e.toBounds(2 * t.coords.accuracy),
-					o = this._locateOptions;
-				o.setView && (i = this.getBoundsZoom(n), this.setView(e, o.maxZoom ? Math.min(i, o
-					.maxZoom) : i));
-				var s = {
-					latlng: e,
-					bounds: n,
-					timestamp: t.timestamp
-				};
-				for (var r in t.coords) "number" == typeof t.coords[r] && (s[r] = t.coords[r]);
-				this.fire("locationfound", s)
-			},
-			addHandler: function(t, i) {
-				if (!i) return this;
-				var e = this[t] = new i(this);
-				return this._handlers.push(e), this.options[t] && e.enable(), this
-			},
-			remove: function() {
-				if (this._initEvents(!0), this.off("moveend", this._panInsideMaxBounds), this
-					._containerId !== this._container._leaflet_id) throw new Error(
-					"Map container is being reused by another instance");
-				try {
-					delete this._container._leaflet_id, delete this._containerId
-				} catch (t) {
-					this._container._leaflet_id = void 0, this._containerId = void 0
-				}
-				var t;
-				for (t in void 0 !== this._locationWatchId && this.stopLocate(), this._stop(), ri(this
-						._mapPane), this._clearControlPos && this._clearControlPos(), this._resizeRequest &&
-					(z(this._resizeRequest), this._resizeRequest = null), this._clearHandlers(), this
-					._loaded && this.fire("unload"), this._layers) this._layers[t].remove();
-				for (t in this._panes) ri(this._panes[t]);
-				return this._layers = [], this._panes = [], delete this._mapPane, delete this._renderer,
-					this
-			},
-			createPane: function(t, i) {
-				var e = si("div", "leaflet-pane" + (t ? " leaflet-" + t.replace("Pane", "") + "-pane" : ""),
-					i || this._mapPane);
-				return t && (this._panes[t] = e), e
-			},
-			getCenter: function() {
-				return this._checkIfLoaded(), this._lastCenter && !this._moved() ? this._lastCenter : this
-					.layerPointToLatLng(this._getCenterLayerPoint())
-			},
-			getZoom: function() {
-				return this._zoom
-			},
-			getBounds: function() {
-				var t = this.getPixelBounds();
-				return new R(this.unproject(t.getBottomLeft()), this.unproject(t.getTopRight()))
-			},
-			getMinZoom: function() {
-				return void 0 === this.options.minZoom ? this._layersMinZoom || 0 : this.options.minZoom
-			},
-			getMaxZoom: function() {
-				return void 0 === this.options.maxZoom ? void 0 === this._layersMaxZoom ? 1 / 0 : this
-					._layersMaxZoom : this.options.maxZoom
-			},
-			getBoundsZoom: function(t, i, e) {
-				t = N(t), e = A(e || [0, 0]);
-				var n = this.getZoom() || 0,
-					o = this.getMinZoom(),
-					s = this.getMaxZoom(),
-					r = t.getNorthWest(),
-					a = t.getSouthEast(),
-					h = this.getSize().subtract(e),
-					u = O(this.project(a, n), this.project(r, n)).getSize(),
-					l = vt ? this.options.zoomSnap : 1,
-					c = h.x / u.x,
-					_ = h.y / u.y,
-					d = i ? Math.max(c, _) : Math.min(c, _),
-					n = this.getScaleZoom(d, n);
-				return l && (n = Math.round(n / (l / 100)) * (l / 100), n = i ? Math.ceil(n / l) * l : Math
-					.floor(n / l) * l), Math.max(o, Math.min(s, n))
-			},
-			getSize: function() {
-				return this._size && !this._sizeChanged || (this._size = new k(this._container
-						.clientWidth || 0, this._container.clientHeight || 0), this._sizeChanged = !1), this
-					._size.clone()
-			},
-			getPixelBounds: function(t, i) {
-				var e = this._getTopLeftPoint(t, i);
-				return new I(e, e.add(this.getSize()))
-			},
-			getPixelOrigin: function() {
-				return this._checkIfLoaded(), this._pixelOrigin
-			},
-			getPixelWorldBounds: function(t) {
-				return this.options.crs.getProjectedBounds(void 0 === t ? this.getZoom() : t)
-			},
-			getPane: function(t) {
-				return "string" == typeof t ? this._panes[t] : t
-			},
-			getPanes: function() {
-				return this._panes
-			},
-			getContainer: function() {
-				return this._container
-			},
-			getZoomScale: function(t, i) {
-				var e = this.options.crs;
-				return i = void 0 === i ? this._zoom : i, e.scale(t) / e.scale(i)
-			},
-			getScaleZoom: function(t, i) {
-				var e = this.options.crs;
-				i = void 0 === i ? this._zoom : i;
-				var n = e.zoom(t * e.scale(i));
-				return isNaN(n) ? 1 / 0 : n
-			},
-			project: function(t, i) {
-				return i = void 0 === i ? this._zoom : i, this.options.crs.latLngToPoint(j(t), i)
-			},
-			unproject: function(t, i) {
-				return i = void 0 === i ? this._zoom : i, this.options.crs.pointToLatLng(A(t), i)
-			},
-			layerPointToLatLng: function(t) {
-				var i = A(t).add(this.getPixelOrigin());
-				return this.unproject(i)
-			},
-			latLngToLayerPoint: function(t) {
-				return this.project(j(t))._round()._subtract(this.getPixelOrigin())
-			},
-			wrapLatLng: function(t) {
-				return this.options.crs.wrapLatLng(j(t))
-			},
-			wrapLatLngBounds: function(t) {
-				return this.options.crs.wrapLatLngBounds(N(t))
-			},
-			distance: function(t, i) {
-				return this.options.crs.distance(j(t), j(i))
-			},
-			containerPointToLayerPoint: function(t) {
-				return A(t).subtract(this._getMapPanePos())
-			},
-			layerPointToContainerPoint: function(t) {
-				return A(t).add(this._getMapPanePos())
-			},
-			containerPointToLatLng: function(t) {
-				var i = this.containerPointToLayerPoint(A(t));
-				return this.layerPointToLatLng(i)
-			},
-			latLngToContainerPoint: function(t) {
-				return this.layerPointToContainerPoint(this.latLngToLayerPoint(j(t)))
-			},
-			mouseEventToContainerPoint: function(t) {
-				return Di(t, this._container)
-			},
-			mouseEventToLayerPoint: function(t) {
-				return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t))
-			},
-			mouseEventToLatLng: function(t) {
-				return this.layerPointToLatLng(this.mouseEventToLayerPoint(t))
-			},
-			_initContainer: function(t) {
-				var i = this._container = ni(t);
-				if (!i) throw new Error("Map container not found.");
-				if (i._leaflet_id) throw new Error("Map container is already initialized.");
-				zi(i, "scroll", this._onScroll, this), this._containerId = m(i)
-			},
-			_initLayout: function() {
-				var t = this._container;
-				this._fadeAnimated = this.options.fadeAnimation && vt, ci(t, "leaflet-container" + (bt ?
-					" leaflet-touch" : "") + (zt ? " leaflet-retina" : "") + (it ?
-					" leaflet-oldie" : "") + (ct ? " leaflet-safari" : "") + (this._fadeAnimated ?
-					" leaflet-fade-anim" : ""));
-				var i = oi(t, "position");
-				"absolute" !== i && "relative" !== i && "fixed" !== i && (t.style.position = "relative"),
-					this._initPanes(), this._initControlPos && this._initControlPos()
-			},
-			_initPanes: function() {
-				var t = this._panes = {};
-				this._paneRenderers = {}, this._mapPane = this.createPane("mapPane", this._container), vi(
-						this._mapPane, new k(0, 0)), this.createPane("tilePane"), this.createPane(
-						"shadowPane"), this.createPane("overlayPane"), this.createPane("markerPane"), this
-					.createPane("tooltipPane"), this.createPane("popupPane"), this.options
-					.markerZoomAnimation || (ci(t.markerPane, "leaflet-zoom-hide"), ci(t.shadowPane,
-						"leaflet-zoom-hide"))
-			},
-			_resetView: function(t, i) {
-				vi(this._mapPane, new k(0, 0));
-				var e = !this._loaded;
-				this._loaded = !0, i = this._limitZoom(i), this.fire("viewprereset");
-				var n = this._zoom !== i;
-				this._moveStart(n, !1)._move(t, i)._moveEnd(n), this.fire("viewreset"), e && this.fire(
-					"load")
-			},
-			_moveStart: function(t, i) {
-				return t && this.fire("zoomstart"), i || this.fire("movestart"), this
-			},
-			_move: function(t, i, e) {
-				void 0 === i && (i = this._zoom);
-				var n = this._zoom !== i;
-				return this._zoom = i, this._lastCenter = t, this._pixelOrigin = this._getNewPixelOrigin(t),
-					(n || e && e.pinch) && this.fire("zoom", e), this.fire("move", e)
-			},
-			_moveEnd: function(t) {
-				return t && this.fire("zoomend"), this.fire("moveend")
-			},
-			_stop: function() {
-				return z(this._flyToFrame), this._panAnim && this._panAnim.stop(), this
-			},
-			_rawPanBy: function(t) {
-				vi(this._mapPane, this._getMapPanePos().subtract(t))
-			},
-			_getZoomSpan: function() {
-				return this.getMaxZoom() - this.getMinZoom()
-			},
-			_panInsideMaxBounds: function() {
-				this._enforcingBounds || this.panInsideBounds(this.options.maxBounds)
-			},
-			_checkIfLoaded: function() {
-				if (!this._loaded) throw new Error("Set map center and zoom first.")
-			},
-			_initEvents: function(t) {
-				this._targets = {};
-				var i = t ? Si : zi;
-				i((this._targets[m(this._container)] = this)._container,
-						"click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress keydown keyup",
-						this._handleDOMEvent, this), this.options.trackResize && i(window, "resize", this
-						._onResize, this), vt && this.options.transform3DLimit && (t ? this.off : this.on)
-					.call(this, "moveend", this._onMoveEnd)
-			},
-			_onResize: function() {
-				z(this._resizeRequest), this._resizeRequest = M(function() {
-					this.invalidateSize({
-						debounceMoveend: !0
-					})
-				}, this)
-			},
-			_onScroll: function() {
-				this._container.scrollTop = 0, this._container.scrollLeft = 0
-			},
-			_onMoveEnd: function() {
-				var t = this._getMapPanePos();
-				Math.max(Math.abs(t.x), Math.abs(t.y)) >= this.options.transform3DLimit && this._resetView(
-					this.getCenter(), this.getZoom())
-			},
-			_findEventTargets: function(t, i) {
-				for (var e, n = [], o = "mouseout" === i || "mouseover" === i, s = t.target || t.srcElement,
-						r = !1; s;) {
-					if ((e = this._targets[m(s)]) && ("click" === i || "preclick" === i) && !t._simulated &&
-						this._draggableMoved(e)) {
-						r = !0;
-						break
-					}
-					if (e && e.listens(i, !0)) {
-						if (o && !Vi(s, t)) break;
-						if (n.push(e), o) break
-					}
-					if (s === this._container) break;
-					s = s.parentNode
-				}
-				return n.length || r || o || !Vi(s, t) || (n = [this]), n
-			},
-			_handleDOMEvent: function(t) {
-				var i;
-				this._loaded && !Ui(t) && ("mousedown" !== (i = t.type) && "keypress" !== i && "keyup" !==
-					i && "keydown" !== i || Pi(t.target || t.srcElement), this._fireDOMEvent(t, i))
-			},
-			_mouseEvents: ["click", "dblclick", "mouseover", "mouseout", "contextmenu"],
-			_fireDOMEvent: function(t, i, e) {
-				var n;
-				if ("click" === t.type && ((n = h({}, t)).type = "preclick", this._fireDOMEvent(n, n.type,
-						e)), !t._stopped && (e = (e || []).concat(this._findEventTargets(t, i))).length) {
-					var o = e[0];
-					"contextmenu" === i && o.listens(i, !0) && Ri(t);
-					var s, r = {
-						originalEvent: t
-					};
-					"keypress" !== t.type && "keydown" !== t.type && "keyup" !== t.type && (s = o
-						.getLatLng && (!o._radius || o._radius <= 10), r.containerPoint = s ? this
-						.latLngToContainerPoint(o.getLatLng()) : this.mouseEventToContainerPoint(t), r
-						.layerPoint = this.containerPointToLayerPoint(r.containerPoint), r.latlng = s ?
-						o.getLatLng() : this.layerPointToLatLng(r.layerPoint));
-					for (var a = 0; a < e.length; a++)
-						if (e[a].fire(i, r, !0), r.originalEvent._stopped || !1 === e[a].options
-							.bubblingMouseEvents && -1 !== v(this._mouseEvents, i)) return
-				}
-			},
-			_draggableMoved: function(t) {
-				return (t = t.dragging && t.dragging.enabled() ? t : this).dragging && t.dragging.moved() ||
-					this.boxZoom && this.boxZoom.moved()
-			},
-			_clearHandlers: function() {
-				for (var t = 0, i = this._handlers.length; t < i; t++) this._handlers[t].disable()
-			},
-			whenReady: function(t, i) {
-				return this._loaded ? t.call(i || this, {
-					target: this
-				}) : this.on("load", t, i), this
-			},
-			_getMapPanePos: function() {
-				return yi(this._mapPane) || new k(0, 0)
-			},
-			_moved: function() {
-				var t = this._getMapPanePos();
-				return t && !t.equals([0, 0])
-			},
-			_getTopLeftPoint: function(t, i) {
-				return (t && void 0 !== i ? this._getNewPixelOrigin(t, i) : this.getPixelOrigin()).subtract(
-					this._getMapPanePos())
-			},
-			_getNewPixelOrigin: function(t, i) {
-				var e = this.getSize()._divideBy(2);
-				return this.project(t, i)._subtract(e)._add(this._getMapPanePos())._round()
-			},
-			_latLngToNewLayerPoint: function(t, i, e) {
-				var n = this._getNewPixelOrigin(e, i);
-				return this.project(t, i)._subtract(n)
-			},
-			_latLngBoundsToNewLayerBounds: function(t, i, e) {
-				var n = this._getNewPixelOrigin(e, i);
-				return O([this.project(t.getSouthWest(), i)._subtract(n), this.project(t.getNorthWest(), i)
-					._subtract(n), this.project(t.getSouthEast(), i)._subtract(n), this.project(t
-						.getNorthEast(), i)._subtract(n)
-				])
-			},
-			_getCenterLayerPoint: function() {
-				return this.containerPointToLayerPoint(this.getSize()._divideBy(2))
-			},
-			_getCenterOffset: function(t) {
-				return this.latLngToLayerPoint(t).subtract(this._getCenterLayerPoint())
-			},
-			_limitCenter: function(t, i, e) {
-				if (!e) return t;
-				var n = this.project(t, i),
-					o = this.getSize().divideBy(2),
-					s = new I(n.subtract(o), n.add(o)),
-					r = this._getBoundsOffset(s, e, i);
-				return r.round().equals([0, 0]) ? t : this.unproject(n.add(r), i)
-			},
-			_limitOffset: function(t, i) {
-				if (!i) return t;
-				var e = this.getPixelBounds(),
-					n = new I(e.min.add(t), e.max.add(t));
-				return t.add(this._getBoundsOffset(n, i))
-			},
-			_getBoundsOffset: function(t, i, e) {
-				var n = O(this.project(i.getNorthEast(), e), this.project(i.getSouthWest(), e)),
-					o = n.min.subtract(t.min),
-					s = n.max.subtract(t.max);
-				return new k(this._rebound(o.x, -s.x), this._rebound(o.y, -s.y))
-			},
-			_rebound: function(t, i) {
-				return 0 < t + i ? Math.round(t - i) / 2 : Math.max(0, Math.ceil(t)) - Math.max(0, Math
-					.floor(i))
-			},
-			_limitZoom: function(t) {
-				var i = this.getMinZoom(),
-					e = this.getMaxZoom(),
-					n = vt ? this.options.zoomSnap : 1;
-				return n && (t = Math.round(t / n) * n), Math.max(i, Math.min(e, t))
-			},
-			_onPanTransitionStep: function() {
-				this.fire("move")
-			},
-			_onPanTransitionEnd: function() {
-				_i(this._mapPane, "leaflet-pan-anim"), this.fire("moveend")
-			},
-			_tryAnimatedPan: function(t, i) {
-				var e = this._getCenterOffset(t)._trunc();
-				return !(!0 !== (i && i.animate) && !this.getSize().contains(e)) && (this.panBy(e, i), !0)
-			},
-			_createAnimProxy: function() {
-				var t = this._proxy = si("div", "leaflet-proxy leaflet-zoom-animated");
-				this._panes.mapPane.appendChild(t), this.on("zoomanim", function(t) {
-					var i = ti,
-						e = this._proxy.style[i];
-					gi(this._proxy, this.project(t.center, t.zoom), this.getZoomScale(t.zoom, 1)),
-						e === this._proxy.style[i] && this._animatingZoom && this
-						._onZoomTransitionEnd()
-				}, this), this.on("load moveend", this._animMoveEnd, this), this._on("unload", this
-					._destroyAnimProxy, this)
-			},
-			_destroyAnimProxy: function() {
-				ri(this._proxy), this.off("load moveend", this._animMoveEnd, this), delete this._proxy
-			},
-			_animMoveEnd: function() {
-				var t = this.getCenter(),
-					i = this.getZoom();
-				gi(this._proxy, this.project(t, i), this.getZoomScale(i, 1))
-			},
-			_catchTransitionEnd: function(t) {
-				this._animatingZoom && 0 <= t.propertyName.indexOf("transform") && this
-					._onZoomTransitionEnd()
-			},
-			_nothingToAnimate: function() {
-				return !this._container.getElementsByClassName("leaflet-zoom-animated").length
-			},
-			_tryAnimatedZoom: function(t, i, e) {
-				if (this._animatingZoom) return !0;
-				if (e = e || {}, !this._zoomAnimated || !1 === e.animate || this._nothingToAnimate() || Math
-					.abs(i - this._zoom) > this.options.zoomAnimationThreshold) return !1;
-				var n = this.getZoomScale(i),
-					o = this._getCenterOffset(t)._divideBy(1 - 1 / n);
-				return !(!0 !== e.animate && !this.getSize().contains(o)) && (M(function() {
-					this._moveStart(!0, !1)._animateZoom(t, i, !0)
-				}, this), !0)
-			},
-			_animateZoom: function(t, i, e, n) {
-				this._mapPane && (e && (this._animatingZoom = !0, this._animateToCenter = t, this
-					._animateToZoom = i, ci(this._mapPane, "leaflet-zoom-anim")), this.fire(
-					"zoomanim", {
-						center: t,
-						zoom: i,
-						noUpdate: n
-					}), setTimeout(p(this._onZoomTransitionEnd, this), 250))
-			},
-			_onZoomTransitionEnd: function() {
-				this._animatingZoom && (this._mapPane && _i(this._mapPane, "leaflet-zoom-anim"), this
-					._animatingZoom = !1, this._move(this._animateToCenter, this._animateToZoom), M(
-						function() {
-							this._moveEnd(!0)
-						}, this))
-			}
-		});
-
-	function Yi(t) {
-		return new Xi(t)
-	}
-	var Xi = S.extend({
-		options: {
-			position: "topright"
-		},
-		initialize: function(t) {
-			c(this, t)
-		},
-		getPosition: function() {
-			return this.options.position
-		},
-		setPosition: function(t) {
-			var i = this._map;
-			return i && i.removeControl(this), this.options.position = t, i && i.addControl(this), this
-		},
-		getContainer: function() {
-			return this._container
-		},
-		addTo: function(t) {
-			this.remove(), this._map = t;
-			var i = this._container = this.onAdd(t),
-				e = this.getPosition(),
-				n = t._controlCorners[e];
-			return ci(i, "leaflet-control"), -1 !== e.indexOf("bottom") ? n.insertBefore(i, n
-				.firstChild) : n.appendChild(i), this._map.on("unload", this.remove, this), this
-		},
-		remove: function() {
-			return this._map && (ri(this._container), this.onRemove && this.onRemove(this._map), this
-				._map.off("unload", this.remove, this), this._map = null), this
-		},
-		_refocusOnMap: function(t) {
-			this._map && t && 0 < t.screenX && 0 < t.screenY && this._map.getContainer().focus()
-		}
-	});
-	Ki.include({
-		addControl: function(t) {
-			return t.addTo(this), this
-		},
-		removeControl: function(t) {
-			return t.remove(), this
-		},
-		_initControlPos: function() {
-			var n = this._controlCorners = {},
-				o = "leaflet-",
-				s = this._controlContainer = si("div", o + "control-container", this._container);
-
-			function t(t, i) {
-				var e = o + t + " " + o + i;
-				n[t + i] = si("div", e, s)
-			}
-			t("top", "left"), t("top", "right"), t("bottom", "left"), t("bottom", "right")
-		},
-		_clearControlPos: function() {
-			for (var t in this._controlCorners) ri(this._controlCorners[t]);
-			ri(this._controlContainer), delete this._controlCorners, delete this._controlContainer
-		}
-	});
-	var Ji = Xi.extend({
-			options: {
-				collapsed: !0,
-				position: "topright",
-				autoZIndex: !0,
-				hideSingleBase: !1,
-				sortLayers: !1,
-				sortFunction: function(t, i, e, n) {
-					return e < n ? -1 : n < e ? 1 : 0
-				}
-			},
-			initialize: function(t, i, e) {
-				for (var n in c(this, e), this._layerControlInputs = [], this._layers = [], this
-						._lastZIndex = 0, this._handlingClick = !1, t) this._addLayer(t[n], n);
-				for (n in i) this._addLayer(i[n], n, !0)
-			},
-			onAdd: function(t) {
-				this._initLayout(), this._update(), (this._map = t).on("zoomend", this._checkDisabledLayers,
-					this);
-				for (var i = 0; i < this._layers.length; i++) this._layers[i].layer.on("add remove", this
-					._onLayerChange, this);
-				return this._container
-			},
-			addTo: function(t) {
-				return Xi.prototype.addTo.call(this, t), this._expandIfNotCollapsed()
-			},
-			onRemove: function() {
-				this._map.off("zoomend", this._checkDisabledLayers, this);
-				for (var t = 0; t < this._layers.length; t++) this._layers[t].layer.off("add remove", this
-					._onLayerChange, this)
-			},
-			addBaseLayer: function(t, i) {
-				return this._addLayer(t, i), this._map ? this._update() : this
-			},
-			addOverlay: function(t, i) {
-				return this._addLayer(t, i, !0), this._map ? this._update() : this
-			},
-			removeLayer: function(t) {
-				t.off("add remove", this._onLayerChange, this);
-				var i = this._getLayer(m(t));
-				return i && this._layers.splice(this._layers.indexOf(i), 1), this._map ? this._update() :
-					this
-			},
-			expand: function() {
-				ci(this._container, "leaflet-control-layers-expanded"), this._section.style.height = null;
-				var t = this._map.getSize().y - (this._container.offsetTop + 50);
-				return t < this._section.clientHeight ? (ci(this._section,
-						"leaflet-control-layers-scrollbar"), this._section.style.height = t + "px") : _i(
-						this._section, "leaflet-control-layers-scrollbar"), this._checkDisabledLayers(),
-					this
-			},
-			collapse: function() {
-				return _i(this._container, "leaflet-control-layers-expanded"), this
-			},
-			_initLayout: function() {
-				var t = "leaflet-control-layers",
-					i = this._container = si("div", t),
-					e = this.options.collapsed;
-				i.setAttribute("aria-haspopup", !0), Oi(i), Ii(i);
-				var n = this._section = si("section", t + "-list");
-				e && (this._map.on("click", this.collapse, this), ot || zi(i, {
-					mouseenter: this.expand,
-					mouseleave: this.collapse
-				}, this));
-				var o = this._layersLink = si("a", t + "-toggle", i);
-				o.href = "#", o.title = "Layers", bt ? (zi(o, "click", Ni), zi(o, "click", this.expand,
-						this)) : zi(o, "focus", this.expand, this), e || this.expand(), this
-					._baseLayersList = si("div", t + "-base", n), this._separator = si("div", t +
-						"-separator", n), this._overlaysList = si("div", t + "-overlays", n), i.appendChild(
-						n)
-			},
-			_getLayer: function(t) {
-				for (var i = 0; i < this._layers.length; i++)
-					if (this._layers[i] && m(this._layers[i].layer) === t) return this._layers[i]
-			},
-			_addLayer: function(t, i, e) {
-				this._map && t.on("add remove", this._onLayerChange, this), this._layers.push({
-					layer: t,
-					name: i,
-					overlay: e
-				}), this.options.sortLayers && this._layers.sort(p(function(t, i) {
-					return this.options.sortFunction(t.layer, i.layer, t.name, i.name)
-				}, this)), this.options.autoZIndex && t.setZIndex && (this._lastZIndex++, t.setZIndex(
-					this._lastZIndex)), this._expandIfNotCollapsed()
-			},
-			_update: function() {
-				if (!this._container) return this;
-				ai(this._baseLayersList), ai(this._overlaysList), this._layerControlInputs = [];
-				for (var t, i, e, n = 0, o = 0; o < this._layers.length; o++) e = this._layers[o], this
-					._addItem(e), i = i || e.overlay, t = t || !e.overlay, n += e.overlay ? 0 : 1;
-				return this.options.hideSingleBase && (t = t && 1 < n, this._baseLayersList.style.display =
-					t ? "" : "none"), this._separator.style.display = i && t ? "" : "none", this
-			},
-			_onLayerChange: function(t) {
-				this._handlingClick || this._update();
-				var i = this._getLayer(m(t.target)),
-					e = i.overlay ? "add" === t.type ? "overlayadd" : "overlayremove" : "add" === t.type ?
-					"baselayerchange" : null;
-				e && this._map.fire(e, i)
-			},
-			_createRadioElement: function(t, i) {
-				var e = '<input type="radio" class="leaflet-control-layers-selector" name="' + t + '"' + (
-						i ? ' checked="checked"' : "") + "/>",
-					n = document.createElement("div");
-				return n.innerHTML = e, n.firstChild
-			},
-			_addItem: function(t) {
-				var i, e = document.createElement("label"),
-					n = this._map.hasLayer(t.layer);
-				t.overlay ? ((i = document.createElement("input")).type = "checkbox", i.className =
-						"leaflet-control-layers-selector", i.defaultChecked = n) : i = this
-					._createRadioElement("leaflet-base-layers_" + m(this), n), this._layerControlInputs
-					.push(i), i.layerId = m(t.layer), zi(i, "click", this._onInputClick, this);
-				var o = document.createElement("span");
-				o.innerHTML = " " + t.name;
-				var s = document.createElement("div");
-				return e.appendChild(s), s.appendChild(i), s.appendChild(o), (t.overlay ? this
-						._overlaysList : this._baseLayersList).appendChild(e), this._checkDisabledLayers(),
-					e
-			},
-			_onInputClick: function() {
-				var t, i, e = this._layerControlInputs,
-					n = [],
-					o = [];
-				this._handlingClick = !0;
-				for (var s = e.length - 1; 0 <= s; s--) t = e[s], i = this._getLayer(t.layerId).layer, t
-					.checked ? n.push(i) : t.checked || o.push(i);
-				for (s = 0; s < o.length; s++) this._map.hasLayer(o[s]) && this._map.removeLayer(o[s]);
-				for (s = 0; s < n.length; s++) this._map.hasLayer(n[s]) || this._map.addLayer(n[s]);
-				this._handlingClick = !1, this._refocusOnMap()
-			},
-			_checkDisabledLayers: function() {
-				for (var t, i, e = this._layerControlInputs, n = this._map.getZoom(), o = e.length - 1; 0 <=
-					o; o--) t = e[o], i = this._getLayer(t.layerId).layer, t.disabled = void 0 !== i.options
-					.minZoom && n < i.options.minZoom || void 0 !== i.options.maxZoom && n > i.options
-					.maxZoom
-			},
-			_expandIfNotCollapsed: function() {
-				return this._map && !this.options.collapsed && this.expand(), this
-			},
-			_expand: function() {
-				return this.expand()
-			},
-			_collapse: function() {
-				return this.collapse()
-			}
-		}),
-		$i = Xi.extend({
-			options: {
-				position: "topleft",
-				zoomInText: "+",
-				zoomInTitle: "Zoom in",
-				zoomOutText: "&#x2212;",
-				zoomOutTitle: "Zoom out"
-			},
-			onAdd: function(t) {
-				var i = "leaflet-control-zoom",
-					e = si("div", i + " leaflet-bar"),
-					n = this.options;
-				return this._zoomInButton = this._createButton(n.zoomInText, n.zoomInTitle, i + "-in", e,
-					this._zoomIn), this._zoomOutButton = this._createButton(n.zoomOutText, n
-					.zoomOutTitle, i + "-out", e, this._zoomOut), this._updateDisabled(), t.on(
-					"zoomend zoomlevelschange", this._updateDisabled, this), e
-			},
-			onRemove: function(t) {
-				t.off("zoomend zoomlevelschange", this._updateDisabled, this)
-			},
-			disable: function() {
-				return this._disabled = !0, this._updateDisabled(), this
-			},
-			enable: function() {
-				return this._disabled = !1, this._updateDisabled(), this
-			},
-			_zoomIn: function(t) {
-				!this._disabled && this._map._zoom < this._map.getMaxZoom() && this._map.zoomIn(this._map
-					.options.zoomDelta * (t.shiftKey ? 3 : 1))
-			},
-			_zoomOut: function(t) {
-				!this._disabled && this._map._zoom > this._map.getMinZoom() && this._map.zoomOut(this._map
-					.options.zoomDelta * (t.shiftKey ? 3 : 1))
-			},
-			_createButton: function(t, i, e, n, o) {
-				var s = si("a", e, n);
-				return s.innerHTML = t, s.href = "#", s.title = i, s.setAttribute("role", "button"), s
-					.setAttribute("aria-label", i), Oi(s), zi(s, "click", Ni), zi(s, "click", o, this), zi(
-						s, "click", this._refocusOnMap, this), s
-			},
-			_updateDisabled: function() {
-				var t = this._map,
-					i = "leaflet-disabled";
-				_i(this._zoomInButton, i), _i(this._zoomOutButton, i), !this._disabled && t._zoom !== t
-					.getMinZoom() || ci(this._zoomOutButton, i), !this._disabled && t._zoom !== t
-					.getMaxZoom() || ci(this._zoomInButton, i)
-			}
-		});
-	Ki.mergeOptions({
-		zoomControl: !0
-	}), Ki.addInitHook(function() {
-		this.options.zoomControl && (this.zoomControl = new $i, this.addControl(this.zoomControl))
-	});
-	var Qi = Xi.extend({
-			options: {
-				position: "bottomleft",
-				maxWidth: 100,
-				metric: !0,
-				imperial: !0
-			},
-			onAdd: function(t) {
-				var i = "leaflet-control-scale",
-					e = si("div", i),
-					n = this.options;
-				return this._addScales(n, i + "-line", e), t.on(n.updateWhenIdle ? "moveend" : "move", this
-					._update, this), t.whenReady(this._update, this), e
-			},
-			onRemove: function(t) {
-				t.off(this.options.updateWhenIdle ? "moveend" : "move", this._update, this)
-			},
-			_addScales: function(t, i, e) {
-				t.metric && (this._mScale = si("div", i, e)), t.imperial && (this._iScale = si("div", i, e))
-			},
-			_update: function() {
-				var t = this._map,
-					i = t.getSize().y / 2,
-					e = t.distance(t.containerPointToLatLng([0, i]), t.containerPointToLatLng([this.options
-						.maxWidth, i
-					]));
-				this._updateScales(e)
-			},
-			_updateScales: function(t) {
-				this.options.metric && t && this._updateMetric(t), this.options.imperial && t && this
-					._updateImperial(t)
-			},
-			_updateMetric: function(t) {
-				var i = this._getRoundNum(t),
-					e = i < 1e3 ? i + " m" : i / 1e3 + " km";
-				this._updateScale(this._mScale, e, i / t)
-			},
-			_updateImperial: function(t) {
-				var i, e, n, o = 3.2808399 * t;
-				5280 < o ? (i = o / 5280, e = this._getRoundNum(i), this._updateScale(this._iScale, e +
-					" mi", e / i)) : (n = this._getRoundNum(o), this._updateScale(this._iScale, n +
-					" ft", n / o))
-			},
-			_updateScale: function(t, i, e) {
-				t.style.width = Math.round(this.options.maxWidth * e) + "px", t.innerHTML = i
-			},
-			_getRoundNum: function(t) {
-				var i = Math.pow(10, (Math.floor(t) + "").length - 1),
-					e = t / i;
-				return i * (e = 10 <= e ? 10 : 5 <= e ? 5 : 3 <= e ? 3 : 2 <= e ? 2 : 1)
-			}
-		}),
-		te = Xi.extend({
-			options: {
-				position: "bottomright",
-				prefix: '<a href="https://leafletjs.com" title="A JS library for interactive maps">Leaflet</a>'
-			},
-			initialize: function(t) {
-				c(this, t), this._attributions = {}
-			},
-			onAdd: function(t) {
-				for (var i in (t.attributionControl = this)._container = si("div",
-						"leaflet-control-attribution"), Oi(this._container), t._layers) t._layers[i]
-					.getAttribution && this.addAttribution(t._layers[i].getAttribution());
-				return this._update(), this._container
-			},
-			setPrefix: function(t) {
-				return this.options.prefix = t, this._update(), this
-			},
-			addAttribution: function(t) {
-				return t && (this._attributions[t] || (this._attributions[t] = 0), this._attributions[t]++,
-					this._update()), this
-			},
-			removeAttribution: function(t) {
-				return t && this._attributions[t] && (this._attributions[t]--, this._update()), this
-			},
-			_update: function() {
-				if (this._map) {
-					var t = [];
-					for (var i in this._attributions) this._attributions[i] && t.push(i);
-					var e = [];
-					this.options.prefix && e.push(this.options.prefix), t.length && e.push(t.join(", ")),
-						this._container.innerHTML = e.join(" | ")
-				}
-			}
-		});
-	Ki.mergeOptions({
-		attributionControl: !0
-	}), Ki.addInitHook(function() {
-		this.options.attributionControl && (new te).addTo(this)
-	});
-	Xi.Layers = Ji, Xi.Zoom = $i, Xi.Scale = Qi, Xi.Attribution = te, Yi.layers = function(t, i, e) {
-		return new Ji(t, i, e)
-	}, Yi.zoom = function(t) {
-		return new $i(t)
-	}, Yi.scale = function(t) {
-		return new Qi(t)
-	}, Yi.attribution = function(t) {
-		return new te(t)
-	};
-	var ie = S.extend({
-		initialize: function(t) {
-			this._map = t
-		},
-		enable: function() {
-			return this._enabled || (this._enabled = !0, this.addHooks()), this
-		},
-		disable: function() {
-			return this._enabled && (this._enabled = !1, this.removeHooks()), this
-		},
-		enabled: function() {
-			return !!this._enabled
-		}
-	});
-	ie.addTo = function(t, i) {
-		return t.addHandler(i, this), this
-	};
-	var ee, ne = {
-			Events: Z
-		},
-		oe = bt ? "touchstart mousedown" : "mousedown",
-		se = {
-			mousedown: "mouseup",
-			touchstart: "touchend",
-			pointerdown: "touchend",
-			MSPointerDown: "touchend"
-		},
-		re = {
-			mousedown: "mousemove",
-			touchstart: "touchmove",
-			pointerdown: "touchmove",
-			MSPointerDown: "touchmove"
-		},
-		ae = E.extend({
-			options: {
-				clickTolerance: 3
-			},
-			initialize: function(t, i, e, n) {
-				c(this, n), this._element = t, this._dragStartTarget = i || t, this._preventOutline = e
-			},
-			enable: function() {
-				this._enabled || (zi(this._dragStartTarget, oe, this._onDown, this), this._enabled = !0)
-			},
-			disable: function() {
-				this._enabled && (ae._dragging === this && this.finishDrag(), Si(this._dragStartTarget, oe,
-					this._onDown, this), this._enabled = !1, this._moved = !1)
-			},
-			_onDown: function(t) {
-				var i, e;
-				!t._simulated && this._enabled && (this._moved = !1, li(this._element,
-					"leaflet-zoom-anim") || ae._dragging || t.shiftKey || 1 !== t.which && 1 !== t
-					.button && !t.touches || ((ae._dragging = this)._preventOutline && Pi(this
-						._element), xi(), Xt(), this._moving || (this.fire("down"), i = t.touches ? t
-							.touches[0] : t, e = bi(this._element), this._startPoint = new k(i.clientX,
-								i.clientY), this._parentScale = Ti(e), zi(document, re[t.type], this
-								._onMove, this), zi(document, se[t.type], this._onUp, this))))
-			},
-			_onMove: function(t) {
-				var i, e;
-				!t._simulated && this._enabled && (t.touches && 1 < t.touches.length ? this._moved = !0 : ((
-					e = new k((i = t.touches && 1 === t.touches.length ? t.touches[0] : t)
-						.clientX, i.clientY)._subtract(this._startPoint)).x || e.y) && (Math.abs(e
-					.x) + Math.abs(e.y) < this.options.clickTolerance || (e.x /= this
-					._parentScale.x, e.y /= this._parentScale.y, Ri(t), this._moved || (this
-						.fire("dragstart"), this._moved = !0, this._startPos = yi(this._element)
-						.subtract(e), ci(document.body, "leaflet-dragging"), this._lastTarget =
-						t.target || t.srcElement, window.SVGElementInstance && this
-						._lastTarget instanceof window.SVGElementInstance && (this._lastTarget =
-							this._lastTarget.correspondingUseElement), ci(this._lastTarget,
-							"leaflet-drag-target")), this._newPos = this._startPos.add(e), this
-					._moving = !0, z(this._animRequest), this._lastEvent = t, this
-					._animRequest = M(this._updatePosition, this, !0))))
-			},
-			_updatePosition: function() {
-				var t = {
-					originalEvent: this._lastEvent
-				};
-				this.fire("predrag", t), vi(this._element, this._newPos), this.fire("drag", t)
-			},
-			_onUp: function(t) {
-				!t._simulated && this._enabled && this.finishDrag()
-			},
-			finishDrag: function() {
-				for (var t in _i(document.body, "leaflet-dragging"), this._lastTarget && (_i(this
-						._lastTarget, "leaflet-drag-target"), this._lastTarget = null), re) Si(document, re[
-					t], this._onMove, this), Si(document, se[t], this._onUp, this);
-				wi(), Jt(), this._moved && this._moving && (z(this._animRequest), this.fire("dragend", {
-					distance: this._newPos.distanceTo(this._startPos)
-				})), this._moving = !1, ae._dragging = !1
-			}
-		});
-
-	function he(t, i) {
-		if (!i || !t.length) return t.slice();
-		var e = i * i;
-		return t = function(t, i) {
-			var e = t.length,
-				n = new(typeof Uint8Array != void 0 + "" ? Uint8Array : Array)(e);
-			n[0] = n[e - 1] = 1,
-				function t(i, e, n, o, s) {
-					var r, a, h, u = 0;
-					for (a = o + 1; a <= s - 1; a++) h = de(i[a], i[o], i[s], !0), u < h && (r = a, u = h);
-					n < u && (e[r] = 1, t(i, e, n, o, r), t(i, e, n, r, s))
-				}(t, n, i, 0, e - 1);
-			var o, s = [];
-			for (o = 0; o < e; o++) n[o] && s.push(t[o]);
-			return s
-		}(t = function(t, i) {
-			for (var e = [t[0]], n = 1, o = 0, s = t.length; n < s; n++)(function(t, i) {
-				var e = i.x - t.x,
-					n = i.y - t.y;
-				return e * e + n * n
-			})(t[n], t[o]) > i && (e.push(t[n]), o = n);
-			o < s - 1 && e.push(t[s - 1]);
-			return e
-		}(t, e), e)
-	}
-
-	function ue(t, i, e) {
-		return Math.sqrt(de(t, i, e, !0))
-	}
-
-	function le(t, i, e, n, o) {
-		var s, r, a, h = n ? ee : _e(t, e),
-			u = _e(i, e);
-		for (ee = u;;) {
-			if (!(h | u)) return [t, i];
-			if (h & u) return !1;
-			a = _e(r = ce(t, i, s = h || u, e, o), e), s === h ? (t = r, h = a) : (i = r, u = a)
-		}
-	}
-
-	function ce(t, i, e, n, o) {
-		var s, r, a = i.x - t.x,
-			h = i.y - t.y,
-			u = n.min,
-			l = n.max;
-		return 8 & e ? (s = t.x + a * (l.y - t.y) / h, r = l.y) : 4 & e ? (s = t.x + a * (u.y - t.y) / h, r = u.y) :
-			2 & e ? (s = l.x, r = t.y + h * (l.x - t.x) / a) : 1 & e && (s = u.x, r = t.y + h * (u.x - t.x) / a),
-			new k(s, r, o)
-	}
-
-	function _e(t, i) {
-		var e = 0;
-		return t.x < i.min.x ? e |= 1 : t.x > i.max.x && (e |= 2), t.y < i.min.y ? e |= 4 : t.y > i.max.y && (e |=
-			8), e
-	}
-
-	function de(t, i, e, n) {
-		var o, s = i.x,
-			r = i.y,
-			a = e.x - s,
-			h = e.y - r,
-			u = a * a + h * h;
-		return 0 < u && (1 < (o = ((t.x - s) * a + (t.y - r) * h) / u) ? (s = e.x, r = e.y) : 0 < o && (s += a * o,
-			r += h * o)), a = t.x - s, h = t.y - r, n ? a * a + h * h : new k(s, r)
-	}
-
-	function pe(t) {
-		return !g(t[0]) || "object" != typeof t[0][0] && void 0 !== t[0][0]
-	}
-
-	function me(t) {
-		return console.warn("Deprecated use of _flat, please use L.LineUtil.isFlat instead."), pe(t)
-	}
-	var fe = {
-		simplify: he,
-		pointToSegmentDistance: ue,
-		closestPointOnSegment: function(t, i, e) {
-			return de(t, i, e)
-		},
-		clipSegment: le,
-		_getEdgeIntersection: ce,
-		_getBitCode: _e,
-		_sqClosestPointOnSegment: de,
-		isFlat: pe,
-		_flat: me
-	};
-
-	function ge(t, i, e) {
-		for (var n, o, s, r, a, h, u, l = [1, 4, 2, 8], c = 0, _ = t.length; c < _; c++) t[c]._code = _e(t[c], i);
-		for (s = 0; s < 4; s++) {
-			for (h = l[s], n = [], c = 0, o = (_ = t.length) - 1; c < _; o = c++) r = t[c], a = t[o], r._code & h ?
-				a._code & h || ((u = ce(a, r, h, i, e))._code = _e(u, i), n.push(u)) : (a._code & h && ((u = ce(a,
-					r, h, i, e))._code = _e(u, i), n.push(u)), n.push(r));
-			t = n
-		}
-		return t
-	}
-	var ve, ye = {
-			clipPolygon: ge
-		},
-		xe = {
-			project: function(t) {
-				return new k(t.lng, t.lat)
-			},
-			unproject: function(t) {
-				return new D(t.y, t.x)
-			},
-			bounds: new I([-180, -90], [180, 90])
-		},
-		we = {
-			R: 6378137,
-			R_MINOR: 6356752.314245179,
-			bounds: new I([-20037508.34279, -15496570.73972], [20037508.34279, 18764656.23138]),
-			project: function(t) {
-				var i = Math.PI / 180,
-					e = this.R,
-					n = t.lat * i,
-					o = this.R_MINOR / e,
-					s = Math.sqrt(1 - o * o),
-					r = s * Math.sin(n),
-					a = Math.tan(Math.PI / 4 - n / 2) / Math.pow((1 - r) / (1 + r), s / 2),
-					n = -e * Math.log(Math.max(a, 1e-10));
-				return new k(t.lng * i * e, n)
-			},
-			unproject: function(t) {
-				for (var i, e = 180 / Math.PI, n = this.R, o = this.R_MINOR / n, s = Math.sqrt(1 - o * o), r =
-						Math.exp(-t.y / n), a = Math.PI / 2 - 2 * Math.atan(r), h = 0, u = .1; h < 15 && 1e-7 <
-					Math.abs(u); h++) i = s * Math.sin(a), i = Math.pow((1 - i) / (1 + i), s / 2), a += u = Math
-					.PI / 2 - 2 * Math.atan(r * i) - a;
-				return new D(a * e, t.x * e / n)
-			}
-		},
-		Pe = {
-			LonLat: xe,
-			Mercator: we,
-			SphericalMercator: V
-		},
-		Le = h({}, F, {
-			code: "EPSG:3395",
-			projection: we,
-			transformation: G(ve = .5 / (Math.PI * we.R), .5, -ve, .5)
-		}),
-		be = h({}, F, {
-			code: "EPSG:4326",
-			projection: xe,
-			transformation: G(1 / 180, 1, -1 / 180, .5)
-		}),
-		Te = h({}, H, {
-			projection: xe,
-			transformation: G(1, 0, -1, 0),
-			scale: function(t) {
-				return Math.pow(2, t)
-			},
-			zoom: function(t) {
-				return Math.log(t) / Math.LN2
-			},
-			distance: function(t, i) {
-				var e = i.lng - t.lng,
-					n = i.lat - t.lat;
-				return Math.sqrt(e * e + n * n)
-			},
-			infinite: !0
-		});
-	H.Earth = F, H.EPSG3395 = Le, H.EPSG3857 = Y, H.EPSG900913 = X, H.EPSG4326 = be, H.Simple = Te;
-	var Me = E.extend({
-		options: {
-			pane: "overlayPane",
-			attribution: null,
-			bubblingMouseEvents: !0
-		},
-		addTo: function(t) {
-			return t.addLayer(this), this
-		},
-		remove: function() {
-			return this.removeFrom(this._map || this._mapToAdd)
-		},
-		removeFrom: function(t) {
-			return t && t.removeLayer(this), this
-		},
-		getPane: function(t) {
-			return this._map.getPane(t ? this.options[t] || t : this.options.pane)
-		},
-		addInteractiveTarget: function(t) {
-			return this._map._targets[m(t)] = this
-		},
-		removeInteractiveTarget: function(t) {
-			return delete this._map._targets[m(t)], this
-		},
-		getAttribution: function() {
-			return this.options.attribution
-		},
-		_layerAdd: function(t) {
-			var i, e = t.target;
-			e.hasLayer(this) && (this._map = e, this._zoomAnimated = e._zoomAnimated, this.getEvents &&
-				(i = this.getEvents(), e.on(i, this), this.once("remove", function() {
-					e.off(i, this)
-				}, this)), this.onAdd(e), this.getAttribution && e.attributionControl && e
-				.attributionControl.addAttribution(this.getAttribution()), this.fire("add"), e.fire(
-					"layeradd", {
-						layer: this
-					}))
-		}
-	});
-	Ki.include({
-		addLayer: function(t) {
-			if (!t._layerAdd) throw new Error("The provided object is not a Layer.");
-			var i = m(t);
-			return this._layers[i] || ((this._layers[i] = t)._mapToAdd = this, t.beforeAdd && t
-				.beforeAdd(this), this.whenReady(t._layerAdd, t)), this
-		},
-		removeLayer: function(t) {
-			var i = m(t);
-			return this._layers[i] && (this._loaded && t.onRemove(this), t.getAttribution && this
-				.attributionControl && this.attributionControl.removeAttribution(t
-			.getAttribution()), delete this._layers[i], this._loaded && (this.fire("layerremove", {
-					layer: t
-				}), t.fire("remove")), t._map = t._mapToAdd = null), this
-		},
-		hasLayer: function(t) {
-			return !!t && m(t) in this._layers
-		},
-		eachLayer: function(t, i) {
-			for (var e in this._layers) t.call(i, this._layers[e]);
-			return this
-		},
-		_addLayers: function(t) {
-			for (var i = 0, e = (t = t ? g(t) ? t : [t] : []).length; i < e; i++) this.addLayer(t[i])
-		},
-		_addZoomLimit: function(t) {
-			!isNaN(t.options.maxZoom) && isNaN(t.options.minZoom) || (this._zoomBoundLayers[m(t)] = t,
-				this._updateZoomLevels())
-		},
-		_removeZoomLimit: function(t) {
-			var i = m(t);
-			this._zoomBoundLayers[i] && (delete this._zoomBoundLayers[i], this._updateZoomLevels())
-		},
-		_updateZoomLevels: function() {
-			var t = 1 / 0,
-				i = -1 / 0,
-				e = this._getZoomSpan();
-			for (var n in this._zoomBoundLayers) var o = this._zoomBoundLayers[n].options,
-				t = void 0 === o.minZoom ? t : Math.min(t, o.minZoom),
-				i = void 0 === o.maxZoom ? i : Math.max(i, o.maxZoom);
-			this._layersMaxZoom = i === -1 / 0 ? void 0 : i, this._layersMinZoom = t === 1 / 0 ?
-				void 0 : t, e !== this._getZoomSpan() && this.fire("zoomlevelschange"), void 0 === this
-				.options.maxZoom && this._layersMaxZoom && this.getZoom() > this._layersMaxZoom && this
-				.setZoom(this._layersMaxZoom), void 0 === this.options.minZoom && this._layersMinZoom &&
-				this.getZoom() < this._layersMinZoom && this.setZoom(this._layersMinZoom)
-		}
-	});
-	var ze = Me.extend({
-			initialize: function(t, i) {
-				var e, n;
-				if (c(this, i), this._layers = {}, t)
-					for (e = 0, n = t.length; e < n; e++) this.addLayer(t[e])
-			},
-			addLayer: function(t) {
-				var i = this.getLayerId(t);
-				return this._layers[i] = t, this._map && this._map.addLayer(t), this
-			},
-			removeLayer: function(t) {
-				var i = t in this._layers ? t : this.getLayerId(t);
-				return this._map && this._layers[i] && this._map.removeLayer(this._layers[i]), delete this
-					._layers[i], this
-			},
-			hasLayer: function(t) {
-				return !!t && ("number" == typeof t ? t : this.getLayerId(t)) in this._layers
-			},
-			clearLayers: function() {
-				return this.eachLayer(this.removeLayer, this)
-			},
-			invoke: function(t) {
-				var i, e, n = Array.prototype.slice.call(arguments, 1);
-				for (i in this._layers)(e = this._layers[i])[t] && e[t].apply(e, n);
-				return this
-			},
-			onAdd: function(t) {
-				this.eachLayer(t.addLayer, t)
-			},
-			onRemove: function(t) {
-				this.eachLayer(t.removeLayer, t)
-			},
-			eachLayer: function(t, i) {
-				for (var e in this._layers) t.call(i, this._layers[e]);
-				return this
-			},
-			getLayer: function(t) {
-				return this._layers[t]
-			},
-			getLayers: function() {
-				var t = [];
-				return this.eachLayer(t.push, t), t
-			},
-			setZIndex: function(t) {
-				return this.invoke("setZIndex", t)
-			},
-			getLayerId: m
-		}),
-		Ce = ze.extend({
-			addLayer: function(t) {
-				return this.hasLayer(t) ? this : (t.addEventParent(this), ze.prototype.addLayer.call(this,
-					t), this.fire("layeradd", {
-					layer: t
-				}))
-			},
-			removeLayer: function(t) {
-				return this.hasLayer(t) ? (t in this._layers && (t = this._layers[t]), t.removeEventParent(
-					this), ze.prototype.removeLayer.call(this, t), this.fire("layerremove", {
-					layer: t
-				})) : this
-			},
-			setStyle: function(t) {
-				return this.invoke("setStyle", t)
-			},
-			bringToFront: function() {
-				return this.invoke("bringToFront")
-			},
-			bringToBack: function() {
-				return this.invoke("bringToBack")
-			},
-			getBounds: function() {
-				var t = new R;
-				for (var i in this._layers) {
-					var e = this._layers[i];
-					t.extend(e.getBounds ? e.getBounds() : e.getLatLng())
-				}
-				return t
-			}
-		}),
-		Se = S.extend({
-			options: {
-				popupAnchor: [0, 0],
-				tooltipAnchor: [0, 0]
-			},
-			initialize: function(t) {
-				c(this, t)
-			},
-			createIcon: function(t) {
-				return this._createIcon("icon", t)
-			},
-			createShadow: function(t) {
-				return this._createIcon("shadow", t)
-			},
-			_createIcon: function(t, i) {
-				var e = this._getIconUrl(t);
-				if (!e) {
-					if ("icon" === t) throw new Error("iconUrl not set in Icon options (see the docs).");
-					return null
-				}
-				var n = this._createImg(e, i && "IMG" === i.tagName ? i : null);
-				return this._setIconStyles(n, t), n
-			},
-			_setIconStyles: function(t, i) {
-				var e = this.options,
-					n = e[i + "Size"];
-				"number" == typeof n && (n = [n, n]);
-				var o = A(n),
-					s = A("shadow" === i && e.shadowAnchor || e.iconAnchor || o && o.divideBy(2, !0));
-				t.className = "leaflet-marker-" + i + " " + (e.className || ""), s && (t.style
-					.marginLeft = -s.x + "px", t.style.marginTop = -s.y + "px"), o && (t.style.width = o
-					.x + "px", t.style.height = o.y + "px")
-			},
-			_createImg: function(t, i) {
-				return (i = i || document.createElement("img")).src = t, i
-			},
-			_getIconUrl: function(t) {
-				return zt && this.options[t + "RetinaUrl"] || this.options[t + "Url"]
-			}
-		});
-	var Ze = Se.extend({
-			options: {
-				iconUrl: "marker-icon.png",
-				iconRetinaUrl: "marker-icon-2x.png",
-				shadowUrl: "marker-shadow.png",
-				iconSize: [25, 41],
-				iconAnchor: [12, 41],
-				popupAnchor: [1, -34],
-				tooltipAnchor: [16, -28],
-				shadowSize: [41, 41]
-			},
-			_getIconUrl: function(t) {
-				return Ze.imagePath || (Ze.imagePath = this._detectIconPath()), (this.options.imagePath ||
-					Ze.imagePath) + Se.prototype._getIconUrl.call(this, t)
-			},
-			_detectIconPath: function() {
-				var t = si("div", "leaflet-default-icon-path", document.body),
-					i = oi(t, "background-image") || oi(t, "backgroundImage");
-				return document.body.removeChild(t), i = null === i || 0 !== i.indexOf("url") ? "" : i
-					.replace(/^url\(["']?/, "").replace(/marker-icon\.png["']?\)$/, "")
-			}
-		}),
-		Ee = ie.extend({
-			initialize: function(t) {
-				this._marker = t
-			},
-			addHooks: function() {
-				var t = this._marker._icon;
-				this._draggable || (this._draggable = new ae(t, t, !0)), this._draggable.on({
-					dragstart: this._onDragStart,
-					predrag: this._onPreDrag,
-					drag: this._onDrag,
-					dragend: this._onDragEnd
-				}, this).enable(), ci(t, "leaflet-marker-draggable")
-			},
-			removeHooks: function() {
-				this._draggable.off({
-					dragstart: this._onDragStart,
-					predrag: this._onPreDrag,
-					drag: this._onDrag,
-					dragend: this._onDragEnd
-				}, this).disable(), this._marker._icon && _i(this._marker._icon,
-					"leaflet-marker-draggable")
-			},
-			moved: function() {
-				return this._draggable && this._draggable._moved
-			},
-			_adjustPan: function(t) {
-				var i, e = this._marker,
-					n = e._map,
-					o = this._marker.options.autoPanSpeed,
-					s = this._marker.options.autoPanPadding,
-					r = yi(e._icon),
-					a = n.getPixelBounds(),
-					h = n.getPixelOrigin(),
-					u = O(a.min._subtract(h).add(s), a.max._subtract(h).subtract(s));
-				u.contains(r) || (i = A((Math.max(u.max.x, r.x) - u.max.x) / (a.max.x - u.max.x) - (Math
-						.min(u.min.x, r.x) - u.min.x) / (a.min.x - u.min.x), (Math.max(u.max.y, r
-						.y) - u.max.y) / (a.max.y - u.max.y) - (Math.min(u.min.y, r.y) - u.min.y) /
-					(a.min.y - u.min.y)).multiplyBy(o), n.panBy(i, {
-					animate: !1
-				}), this._draggable._newPos._add(i), this._draggable._startPos._add(i), vi(e._icon,
-					this._draggable._newPos), this._onDrag(t), this._panRequest = M(this._adjustPan
-					.bind(this, t)))
-			},
-			_onDragStart: function() {
-				this._oldLatLng = this._marker.getLatLng(), this._marker.closePopup && this._marker
-					.closePopup(), this._marker.fire("movestart").fire("dragstart")
-			},
-			_onPreDrag: function(t) {
-				this._marker.options.autoPan && (z(this._panRequest), this._panRequest = M(this._adjustPan
-					.bind(this, t)))
-			},
-			_onDrag: function(t) {
-				var i = this._marker,
-					e = i._shadow,
-					n = yi(i._icon),
-					o = i._map.layerPointToLatLng(n);
-				e && vi(e, n), i._latlng = o, t.latlng = o, t.oldLatLng = this._oldLatLng, i.fire("move", t)
-					.fire("drag", t)
-			},
-			_onDragEnd: function(t) {
-				z(this._panRequest), delete this._oldLatLng, this._marker.fire("moveend").fire("dragend", t)
-			}
-		}),
-		ke = Me.extend({
-			options: {
-				icon: new Ze,
-				interactive: !0,
-				keyboard: !0,
-				title: "",
-				alt: "",
-				zIndexOffset: 0,
-				opacity: 1,
-				riseOnHover: !1,
-				riseOffset: 250,
-				pane: "markerPane",
-				shadowPane: "shadowPane",
-				bubblingMouseEvents: !1,
-				draggable: !1,
-				autoPan: !1,
-				autoPanPadding: [50, 50],
-				autoPanSpeed: 10
-			},
-			initialize: function(t, i) {
-				c(this, i), this._latlng = j(t)
-			},
-			onAdd: function(t) {
-				this._zoomAnimated = this._zoomAnimated && t.options.markerZoomAnimation, this
-					._zoomAnimated && t.on("zoomanim", this._animateZoom, this), this._initIcon(), this
-					.update()
-			},
-			onRemove: function(t) {
-				this.dragging && this.dragging.enabled() && (this.options.draggable = !0, this.dragging
-					.removeHooks()), delete this.dragging, this._zoomAnimated && t.off("zoomanim", this
-					._animateZoom, this), this._removeIcon(), this._removeShadow()
-			},
-			getEvents: function() {
-				return {
-					zoom: this.update,
-					viewreset: this.update
-				}
-			},
-			getLatLng: function() {
-				return this._latlng
-			},
-			setLatLng: function(t) {
-				var i = this._latlng;
-				return this._latlng = j(t), this.update(), this.fire("move", {
-					oldLatLng: i,
-					latlng: this._latlng
-				})
-			},
-			setZIndexOffset: function(t) {
-				return this.options.zIndexOffset = t, this.update()
-			},
-			getIcon: function() {
-				return this.options.icon
-			},
-			setIcon: function(t) {
-				return this.options.icon = t, this._map && (this._initIcon(), this.update()), this._popup &&
-					this.bindPopup(this._popup, this._popup.options), this
-			},
-			getElement: function() {
-				return this._icon
-			},
-			update: function() {
-				var t;
-				return this._icon && this._map && (t = this._map.latLngToLayerPoint(this._latlng).round(),
-					this._setPos(t)), this
-			},
-			_initIcon: function() {
-				var t = this.options,
-					i = "leaflet-zoom-" + (this._zoomAnimated ? "animated" : "hide"),
-					e = t.icon.createIcon(this._icon),
-					n = !1;
-				e !== this._icon && (this._icon && this._removeIcon(), n = !0, t.title && (e.title = t
-					.title), "IMG" === e.tagName && (e.alt = t.alt || "")), ci(e, i), t.keyboard && (e
-					.tabIndex = "0"), this._icon = e, t.riseOnHover && this.on({
-					mouseover: this._bringToFront,
-					mouseout: this._resetZIndex
-				});
-				var o = t.icon.createShadow(this._shadow),
-					s = !1;
-				o !== this._shadow && (this._removeShadow(), s = !0), o && (ci(o, i), o.alt = ""), this
-					._shadow = o, t.opacity < 1 && this._updateOpacity(), n && this.getPane().appendChild(
-						this._icon), this._initInteraction(), o && s && this.getPane(t.shadowPane)
-					.appendChild(this._shadow)
-			},
-			_removeIcon: function() {
-				this.options.riseOnHover && this.off({
-					mouseover: this._bringToFront,
-					mouseout: this._resetZIndex
-				}), ri(this._icon), this.removeInteractiveTarget(this._icon), this._icon = null
-			},
-			_removeShadow: function() {
-				this._shadow && ri(this._shadow), this._shadow = null
-			},
-			_setPos: function(t) {
-				this._icon && vi(this._icon, t), this._shadow && vi(this._shadow, t), this._zIndex = t.y +
-					this.options.zIndexOffset, this._resetZIndex()
-			},
-			_updateZIndex: function(t) {
-				this._icon && (this._icon.style.zIndex = this._zIndex + t)
-			},
-			_animateZoom: function(t) {
-				var i = this._map._latLngToNewLayerPoint(this._latlng, t.zoom, t.center).round();
-				this._setPos(i)
-			},
-			_initInteraction: function() {
-				var t;
-				this.options.interactive && (ci(this._icon, "leaflet-interactive"), this
-					.addInteractiveTarget(this._icon), Ee && (t = this.options.draggable, this
-						.dragging && (t = this.dragging.enabled(), this.dragging.disable()), this
-						.dragging = new Ee(this), t && this.dragging.enable()))
-			},
-			setOpacity: function(t) {
-				return this.options.opacity = t, this._map && this._updateOpacity(), this
-			},
-			_updateOpacity: function() {
-				var t = this.options.opacity;
-				this._icon && mi(this._icon, t), this._shadow && mi(this._shadow, t)
-			},
-			_bringToFront: function() {
-				this._updateZIndex(this.options.riseOffset)
-			},
-			_resetZIndex: function() {
-				this._updateZIndex(0)
-			},
-			_getPopupAnchor: function() {
-				return this.options.icon.options.popupAnchor
-			},
-			_getTooltipAnchor: function() {
-				return this.options.icon.options.tooltipAnchor
-			}
-		});
-	var Be = Me.extend({
-			options: {
-				stroke: !0,
-				color: "#3388ff",
-				weight: 3,
-				opacity: 1,
-				lineCap: "round",
-				lineJoin: "round",
-				dashArray: null,
-				dashOffset: null,
-				fill: !1,
-				fillColor: null,
-				fillOpacity: .2,
-				fillRule: "evenodd",
-				interactive: !0,
-				bubblingMouseEvents: !0
-			},
-			beforeAdd: function(t) {
-				this._renderer = t.getRenderer(this)
-			},
-			onAdd: function() {
-				this._renderer._initPath(this), this._reset(), this._renderer._addPath(this)
-			},
-			onRemove: function() {
-				this._renderer._removePath(this)
-			},
-			redraw: function() {
-				return this._map && this._renderer._updatePath(this), this
-			},
-			setStyle: function(t) {
-				return c(this, t), this._renderer && (this._renderer._updateStyle(this), this.options
-					.stroke && t && Object.prototype.hasOwnProperty.call(t, "weight") && this
-					._updateBounds()), this
-			},
-			bringToFront: function() {
-				return this._renderer && this._renderer._bringToFront(this), this
-			},
-			bringToBack: function() {
-				return this._renderer && this._renderer._bringToBack(this), this
-			},
-			getElement: function() {
-				return this._path
-			},
-			_reset: function() {
-				this._project(), this._update()
-			},
-			_clickTolerance: function() {
-				return (this.options.stroke ? this.options.weight / 2 : 0) + this._renderer.options
-					.tolerance
-			}
-		}),
-		Ae = Be.extend({
-			options: {
-				fill: !0,
-				radius: 10
-			},
-			initialize: function(t, i) {
-				c(this, i), this._latlng = j(t), this._radius = this.options.radius
-			},
-			setLatLng: function(t) {
-				var i = this._latlng;
-				return this._latlng = j(t), this.redraw(), this.fire("move", {
-					oldLatLng: i,
-					latlng: this._latlng
-				})
-			},
-			getLatLng: function() {
-				return this._latlng
-			},
-			setRadius: function(t) {
-				return this.options.radius = this._radius = t, this.redraw()
-			},
-			getRadius: function() {
-				return this._radius
-			},
-			setStyle: function(t) {
-				var i = t && t.radius || this._radius;
-				return Be.prototype.setStyle.call(this, t), this.setRadius(i), this
-			},
-			_project: function() {
-				this._point = this._map.latLngToLayerPoint(this._latlng), this._updateBounds()
-			},
-			_updateBounds: function() {
-				var t = this._radius,
-					i = this._radiusY || t,
-					e = this._clickTolerance(),
-					n = [t + e, i + e];
-				this._pxBounds = new I(this._point.subtract(n), this._point.add(n))
-			},
-			_update: function() {
-				this._map && this._updatePath()
-			},
-			_updatePath: function() {
-				this._renderer._updateCircle(this)
-			},
-			_empty: function() {
-				return this._radius && !this._renderer._bounds.intersects(this._pxBounds)
-			},
-			_containsPoint: function(t) {
-				return t.distanceTo(this._point) <= this._radius + this._clickTolerance()
-			}
-		});
-	var Ie = Ae.extend({
-		initialize: function(t, i, e) {
-			if ("number" == typeof i && (i = h({}, e, {
-					radius: i
-				})), c(this, i), this._latlng = j(t), isNaN(this.options.radius)) throw new Error(
-				"Circle radius cannot be NaN");
-			this._mRadius = this.options.radius
-		},
-		setRadius: function(t) {
-			return this._mRadius = t, this.redraw()
-		},
-		getRadius: function() {
-			return this._mRadius
-		},
-		getBounds: function() {
-			var t = [this._radius, this._radiusY || this._radius];
-			return new R(this._map.layerPointToLatLng(this._point.subtract(t)), this._map
-				.layerPointToLatLng(this._point.add(t)))
-		},
-		setStyle: Be.prototype.setStyle,
-		_project: function() {
-			var t, i, e, n, o, s, r, a, h = this._latlng.lng,
-				u = this._latlng.lat,
-				l = this._map,
-				c = l.options.crs;
-			c.distance === F.distance ? (t = Math.PI / 180, i = this._mRadius / F.R / t, e = l.project([
-					u + i, h
-				]), n = l.project([u - i, h]), o = e.add(n).divideBy(2), s = l.unproject(o).lat, r =
-				Math.acos((Math.cos(i * t) - Math.sin(u * t) * Math.sin(s * t)) / (Math.cos(u * t) *
-					Math.cos(s * t))) / t, !isNaN(r) && 0 !== r || (r = i / Math.cos(Math.PI / 180 *
-					u)), this._point = o.subtract(l.getPixelOrigin()), this._radius = isNaN(r) ? 0 :
-				o.x - l.project([s, h - r]).x, this._radiusY = o.y - e.y) : (a = c.unproject(c
-					.project(this._latlng).subtract([this._mRadius, 0])), this._point = l
-				.latLngToLayerPoint(this._latlng), this._radius = this._point.x - l
-				.latLngToLayerPoint(a).x), this._updateBounds()
-		}
-	});
-	var Oe = Be.extend({
-		options: {
-			smoothFactor: 1,
-			noClip: !1
-		},
-		initialize: function(t, i) {
-			c(this, i), this._setLatLngs(t)
-		},
-		getLatLngs: function() {
-			return this._latlngs
-		},
-		setLatLngs: function(t) {
-			return this._setLatLngs(t), this.redraw()
-		},
-		isEmpty: function() {
-			return !this._latlngs.length
-		},
-		closestLayerPoint: function(t) {
-			for (var i, e, n = 1 / 0, o = null, s = de, r = 0, a = this._parts.length; r < a; r++)
-				for (var h = this._parts[r], u = 1, l = h.length; u < l; u++) {
-					var c = s(t, i = h[u - 1], e = h[u], !0);
-					c < n && (n = c, o = s(t, i, e))
-				}
-			return o && (o.distance = Math.sqrt(n)), o
-		},
-		getCenter: function() {
-			if (!this._map) throw new Error("Must add layer to map before using getCenter()");
-			var t, i, e, n, o, s, r, a = this._rings[0],
-				h = a.length;
-			if (!h) return null;
-			for (i = t = 0; t < h - 1; t++) i += a[t].distanceTo(a[t + 1]) / 2;
-			if (0 === i) return this._map.layerPointToLatLng(a[0]);
-			for (n = t = 0; t < h - 1; t++)
-				if (o = a[t], s = a[t + 1], i < (n += e = o.distanceTo(s))) return r = (n - i) / e, this
-					._map.layerPointToLatLng([s.x - r * (s.x - o.x), s.y - r * (s.y - o.y)])
-		},
-		getBounds: function() {
-			return this._bounds
-		},
-		addLatLng: function(t, i) {
-			return i = i || this._defaultShape(), t = j(t), i.push(t), this._bounds.extend(t), this
-				.redraw()
-		},
-		_setLatLngs: function(t) {
-			this._bounds = new R, this._latlngs = this._convertLatLngs(t)
-		},
-		_defaultShape: function() {
-			return pe(this._latlngs) ? this._latlngs : this._latlngs[0]
-		},
-		_convertLatLngs: function(t) {
-			for (var i = [], e = pe(t), n = 0, o = t.length; n < o; n++) e ? (i[n] = j(t[n]), this
-				._bounds.extend(i[n])) : i[n] = this._convertLatLngs(t[n]);
-			return i
-		},
-		_project: function() {
-			var t = new I;
-			this._rings = [], this._projectLatlngs(this._latlngs, this._rings, t), this._bounds
-			.isValid() && t.isValid() && (this._rawPxBounds = t, this._updateBounds())
-		},
-		_updateBounds: function() {
-			var t = this._clickTolerance(),
-				i = new k(t, t);
-			this._pxBounds = new I([this._rawPxBounds.min.subtract(i), this._rawPxBounds.max.add(i)])
-		},
-		_projectLatlngs: function(t, i, e) {
-			var n, o, s = t[0] instanceof D,
-				r = t.length;
-			if (s) {
-				for (o = [], n = 0; n < r; n++) o[n] = this._map.latLngToLayerPoint(t[n]), e.extend(o[
-					n]);
-				i.push(o)
-			} else
-				for (n = 0; n < r; n++) this._projectLatlngs(t[n], i, e)
-		},
-		_clipPoints: function() {
-			var t = this._renderer._bounds;
-			if (this._parts = [], this._pxBounds && this._pxBounds.intersects(t))
-				if (this.options.noClip) this._parts = this._rings;
-				else
-					for (var i, e, n, o, s = this._parts, r = 0, a = 0, h = this._rings.length; r <
-						h; r++)
-						for (i = 0, e = (o = this._rings[r]).length; i < e - 1; i++)(n = le(o[i], o[i +
-							1], t, i, !0)) && (s[a] = s[a] || [], s[a].push(n[0]), n[1] === o[i +
-							1] && i !== e - 2 || (s[a].push(n[1]), a++))
-		},
-		_simplifyPoints: function() {
-			for (var t = this._parts, i = this.options.smoothFactor, e = 0, n = t.length; e < n; e++) t[
-				e] = he(t[e], i)
-		},
-		_update: function() {
-			this._map && (this._clipPoints(), this._simplifyPoints(), this._updatePath())
-		},
-		_updatePath: function() {
-			this._renderer._updatePoly(this)
-		},
-		_containsPoint: function(t, i) {
-			var e, n, o, s, r, a, h = this._clickTolerance();
-			if (!this._pxBounds || !this._pxBounds.contains(t)) return !1;
-			for (e = 0, s = this._parts.length; e < s; e++)
-				for (n = 0, o = (r = (a = this._parts[e]).length) - 1; n < r; o = n++)
-					if ((i || 0 !== n) && ue(t, a[o], a[n]) <= h) return !0;
-			return !1
-		}
-	});
-	Oe._flat = me;
-	var Re = Oe.extend({
-		options: {
-			fill: !0
-		},
-		isEmpty: function() {
-			return !this._latlngs.length || !this._latlngs[0].length
-		},
-		getCenter: function() {
-			if (!this._map) throw new Error("Must add layer to map before using getCenter()");
-			var t, i, e, n, o, s, r, a, h, u = this._rings[0],
-				l = u.length;
-			if (!l) return null;
-			for (t = s = r = a = 0, i = l - 1; t < l; i = t++) e = u[t], n = u[i], o = e.y * n.x - n.y *
-				e.x, r += (e.x + n.x) * o, a += (e.y + n.y) * o, s += 3 * o;
-			return h = 0 === s ? u[0] : [r / s, a / s], this._map.layerPointToLatLng(h)
-		},
-		_convertLatLngs: function(t) {
-			var i = Oe.prototype._convertLatLngs.call(this, t),
-				e = i.length;
-			return 2 <= e && i[0] instanceof D && i[0].equals(i[e - 1]) && i.pop(), i
-		},
-		_setLatLngs: function(t) {
-			Oe.prototype._setLatLngs.call(this, t), pe(this._latlngs) && (this._latlngs = [this
-				._latlngs])
-		},
-		_defaultShape: function() {
-			return pe(this._latlngs[0]) ? this._latlngs[0] : this._latlngs[0][0]
-		},
-		_clipPoints: function() {
-			var t = this._renderer._bounds,
-				i = this.options.weight,
-				e = new k(i, i),
-				t = new I(t.min.subtract(e), t.max.add(e));
-			if (this._parts = [], this._pxBounds && this._pxBounds.intersects(t))
-				if (this.options.noClip) this._parts = this._rings;
-				else
-					for (var n, o = 0, s = this._rings.length; o < s; o++)(n = ge(this._rings[o], t, !
-						0)).length && this._parts.push(n)
-		},
-		_updatePath: function() {
-			this._renderer._updatePoly(this, !0)
-		},
-		_containsPoint: function(t) {
-			var i, e, n, o, s, r, a, h, u = !1;
-			if (!this._pxBounds || !this._pxBounds.contains(t)) return !1;
-			for (o = 0, a = this._parts.length; o < a; o++)
-				for (s = 0, r = (h = (i = this._parts[o]).length) - 1; s < h; r = s++) e = i[s], n = i[
-						r], e.y > t.y != n.y > t.y && t.x < (n.x - e.x) * (t.y - e.y) / (n.y - e.y) + e
-					.x && (u = !u);
-			return u || Oe.prototype._containsPoint.call(this, t, !0)
-		}
-	});
-	var Ne = Ce.extend({
-		initialize: function(t, i) {
-			c(this, i), this._layers = {}, t && this.addData(t)
-		},
-		addData: function(t) {
-			var i, e, n, o = g(t) ? t : t.features;
-			if (o) {
-				for (i = 0, e = o.length; i < e; i++)((n = o[i]).geometries || n.geometry || n
-					.features || n.coordinates) && this.addData(n);
-				return this
-			}
-			var s = this.options;
-			if (s.filter && !s.filter(t)) return this;
-			var r = De(t, s);
-			return r ? (r.feature = qe(t), r.defaultOptions = r.options, this.resetStyle(r), s
-				.onEachFeature && s.onEachFeature(t, r), this.addLayer(r)) : this
-		},
-		resetStyle: function(t) {
-			return void 0 === t ? this.eachLayer(this.resetStyle, this) : (t.options = h({}, t
-				.defaultOptions), this._setLayerStyle(t, this.options.style), this)
-		},
-		setStyle: function(i) {
-			return this.eachLayer(function(t) {
-				this._setLayerStyle(t, i)
-			}, this)
-		},
-		_setLayerStyle: function(t, i) {
-			t.setStyle && ("function" == typeof i && (i = i(t.feature)), t.setStyle(i))
-		}
-	});
-
-	function De(t, i) {
-		var e, n, o, s, r = "Feature" === t.type ? t.geometry : t,
-			a = r ? r.coordinates : null,
-			h = [],
-			u = i && i.pointToLayer,
-			l = i && i.coordsToLatLng || We;
-		if (!a && !r) return null;
-		switch (r.type) {
-			case "Point":
-				return je(u, t, e = l(a), i);
-			case "MultiPoint":
-				for (o = 0, s = a.length; o < s; o++) e = l(a[o]), h.push(je(u, t, e, i));
-				return new Ce(h);
-			case "LineString":
-			case "MultiLineString":
-				return n = He(a, "LineString" === r.type ? 0 : 1, l), new Oe(n, i);
-			case "Polygon":
-			case "MultiPolygon":
-				return n = He(a, "Polygon" === r.type ? 1 : 2, l), new Re(n, i);
-			case "GeometryCollection":
-				for (o = 0, s = r.geometries.length; o < s; o++) {
-					var c = De({
-						geometry: r.geometries[o],
-						type: "Feature",
-						properties: t.properties
-					}, i);
-					c && h.push(c)
-				}
-				return new Ce(h);
-			default:
-				throw new Error("Invalid GeoJSON object.")
-		}
-	}
-
-	function je(t, i, e, n) {
-		return t ? t(i, e) : new ke(e, n && n.markersInheritOptions && n)
-	}
-
-	function We(t) {
-		return new D(t[1], t[0], t[2])
-	}
-
-	function He(t, i, e) {
-		for (var n, o = [], s = 0, r = t.length; s < r; s++) n = i ? He(t[s], i - 1, e) : (e || We)(t[s]), o.push(
-		n);
-		return o
-	}
-
-	function Fe(t, i) {
-		return i = "number" == typeof i ? i : 6, void 0 !== t.alt ? [r(t.lng, i), r(t.lat, i), r(t.alt, i)] : [r(t
-			.lng, i), r(t.lat, i)]
-	}
-
-	function Ue(t, i, e, n) {
-		for (var o = [], s = 0, r = t.length; s < r; s++) o.push(i ? Ue(t[s], i - 1, e, n) : Fe(t[s], n));
-		return !i && e && o.push(o[0]), o
-	}
-
-	function Ve(t, i) {
-		return t.feature ? h({}, t.feature, {
-			geometry: i
-		}) : qe(i)
-	}
-
-	function qe(t) {
-		return "Feature" === t.type || "FeatureCollection" === t.type ? t : {
-			type: "Feature",
-			properties: {},
-			geometry: t
-		}
-	}
-	var Ge = {
-		toGeoJSON: function(t) {
-			return Ve(this, {
-				type: "Point",
-				coordinates: Fe(this.getLatLng(), t)
-			})
-		}
-	};
-
-	function Ke(t, i) {
-		return new Ne(t, i)
-	}
-	ke.include(Ge), Ie.include(Ge), Ae.include(Ge), Oe.include({
-		toGeoJSON: function(t) {
-			var i = !pe(this._latlngs);
-			return Ve(this, {
-				type: (i ? "Multi" : "") + "LineString",
-				coordinates: Ue(this._latlngs, i ? 1 : 0, !1, t)
-			})
-		}
-	}), Re.include({
-		toGeoJSON: function(t) {
-			var i = !pe(this._latlngs),
-				e = i && !pe(this._latlngs[0]),
-				n = Ue(this._latlngs, e ? 2 : i ? 1 : 0, !0, t);
-			return i || (n = [n]), Ve(this, {
-				type: (e ? "Multi" : "") + "Polygon",
-				coordinates: n
-			})
-		}
-	}), ze.include({
-		toMultiPoint: function(i) {
-			var e = [];
-			return this.eachLayer(function(t) {
-				e.push(t.toGeoJSON(i).geometry.coordinates)
-			}), Ve(this, {
-				type: "MultiPoint",
-				coordinates: e
-			})
-		},
-		toGeoJSON: function(n) {
-			var t = this.feature && this.feature.geometry && this.feature.geometry.type;
-			if ("MultiPoint" === t) return this.toMultiPoint(n);
-			var o = "GeometryCollection" === t,
-				s = [];
-			return this.eachLayer(function(t) {
-				var i, e;
-				t.toGeoJSON && (i = t.toGeoJSON(n), o ? s.push(i.geometry) :
-					"FeatureCollection" === (e = qe(i)).type ? s.push.apply(s, e.features) :
-					s.push(e))
-			}), o ? Ve(this, {
-				geometries: s,
-				type: "GeometryCollection"
-			}) : {
-				type: "FeatureCollection",
-				features: s
-			}
-		}
-	});
-	var Ye = Ke,
-		Xe = Me.extend({
-			options: {
-				opacity: 1,
-				alt: "",
-				interactive: !1,
-				crossOrigin: !1,
-				errorOverlayUrl: "",
-				zIndex: 1,
-				className: ""
-			},
-			initialize: function(t, i, e) {
-				this._url = t, this._bounds = N(i), c(this, e)
-			},
-			onAdd: function() {
-				this._image || (this._initImage(), this.options.opacity < 1 && this._updateOpacity()), this
-					.options.interactive && (ci(this._image, "leaflet-interactive"), this
-						.addInteractiveTarget(this._image)), this.getPane().appendChild(this._image), this
-					._reset()
-			},
-			onRemove: function() {
-				ri(this._image), this.options.interactive && this.removeInteractiveTarget(this._image)
-			},
-			setOpacity: function(t) {
-				return this.options.opacity = t, this._image && this._updateOpacity(), this
-			},
-			setStyle: function(t) {
-				return t.opacity && this.setOpacity(t.opacity), this
-			},
-			bringToFront: function() {
-				return this._map && hi(this._image), this
-			},
-			bringToBack: function() {
-				return this._map && ui(this._image), this
-			},
-			setUrl: function(t) {
-				return this._url = t, this._image && (this._image.src = t), this
-			},
-			setBounds: function(t) {
-				return this._bounds = N(t), this._map && this._reset(), this
-			},
-			getEvents: function() {
-				var t = {
-					zoom: this._reset,
-					viewreset: this._reset
-				};
-				return this._zoomAnimated && (t.zoomanim = this._animateZoom), t
-			},
-			setZIndex: function(t) {
-				return this.options.zIndex = t, this._updateZIndex(), this
-			},
-			getBounds: function() {
-				return this._bounds
-			},
-			getElement: function() {
-				return this._image
-			},
-			_initImage: function() {
-				var t = "IMG" === this._url.tagName,
-					i = this._image = t ? this._url : si("img");
-				ci(i, "leaflet-image-layer"), this._zoomAnimated && ci(i, "leaflet-zoom-animated"), this
-					.options.className && ci(i, this.options.className), i.onselectstart = a, i
-					.onmousemove = a, i.onload = p(this.fire, this, "load"), i.onerror = p(this
-						._overlayOnError, this, "error"), !this.options.crossOrigin && "" !== this.options
-					.crossOrigin || (i.crossOrigin = !0 === this.options.crossOrigin ? "" : this.options
-						.crossOrigin), this.options.zIndex && this._updateZIndex(), t ? this._url = i.src :
-					(i.src = this._url, i.alt = this.options.alt)
-			},
-			_animateZoom: function(t) {
-				var i = this._map.getZoomScale(t.zoom),
-					e = this._map._latLngBoundsToNewLayerBounds(this._bounds, t.zoom, t.center).min;
-				gi(this._image, e, i)
-			},
-			_reset: function() {
-				var t = this._image,
-					i = new I(this._map.latLngToLayerPoint(this._bounds.getNorthWest()), this._map
-						.latLngToLayerPoint(this._bounds.getSouthEast())),
-					e = i.getSize();
-				vi(t, i.min), t.style.width = e.x + "px", t.style.height = e.y + "px"
-			},
-			_updateOpacity: function() {
-				mi(this._image, this.options.opacity)
-			},
-			_updateZIndex: function() {
-				this._image && void 0 !== this.options.zIndex && null !== this.options.zIndex && (this
-					._image.style.zIndex = this.options.zIndex)
-			},
-			_overlayOnError: function() {
-				this.fire("error");
-				var t = this.options.errorOverlayUrl;
-				t && this._url !== t && (this._url = t, this._image.src = t)
-			}
-		}),
-		Je = Xe.extend({
-			options: {
-				autoplay: !0,
-				loop: !0,
-				keepAspectRatio: !0,
-				muted: !1
-			},
-			_initImage: function() {
-				var t = "VIDEO" === this._url.tagName,
-					i = this._image = t ? this._url : si("video");
-				if (ci(i, "leaflet-image-layer"), this._zoomAnimated && ci(i, "leaflet-zoom-animated"), this
-					.options.className && ci(i, this.options.className), i.onselectstart = a, i
-					.onmousemove = a, i.onloadeddata = p(this.fire, this, "load"), t) {
-					for (var e = i.getElementsByTagName("source"), n = [], o = 0; o < e.length; o++) n.push(
-						e[o].src);
-					this._url = 0 < e.length ? n : [i.src]
-				} else {
-					g(this._url) || (this._url = [this._url]), !this.options.keepAspectRatio && Object
-						.prototype.hasOwnProperty.call(i.style, "objectFit") && (i.style.objectFit =
-						"fill"), i.autoplay = !!this.options.autoplay, i.loop = !!this.options.loop, i
-						.muted = !!this.options.muted;
-					for (var s = 0; s < this._url.length; s++) {
-						var r = si("source");
-						r.src = this._url[s], i.appendChild(r)
-					}
-				}
-			}
-		});
-	var $e = Xe.extend({
-		_initImage: function() {
-			var t = this._image = this._url;
-			ci(t, "leaflet-image-layer"), this._zoomAnimated && ci(t, "leaflet-zoom-animated"), this
-				.options.className && ci(t, this.options.className), t.onselectstart = a, t
-				.onmousemove = a
-		}
-	});
-	var Qe = Me.extend({
-			options: {
-				offset: [0, 7],
-				className: "",
-				pane: "popupPane"
-			},
-			initialize: function(t, i) {
-				c(this, t), this._source = i
-			},
-			onAdd: function(t) {
-				this._zoomAnimated = t._zoomAnimated, this._container || this._initLayout(), t
-					._fadeAnimated && mi(this._container, 0), clearTimeout(this._removeTimeout), this
-					.getPane().appendChild(this._container), this.update(), t._fadeAnimated && mi(this
-						._container, 1), this.bringToFront()
-			},
-			onRemove: function(t) {
-				t._fadeAnimated ? (mi(this._container, 0), this._removeTimeout = setTimeout(p(ri, void 0,
-					this._container), 200)) : ri(this._container)
-			},
-			getLatLng: function() {
-				return this._latlng
-			},
-			setLatLng: function(t) {
-				return this._latlng = j(t), this._map && (this._updatePosition(), this._adjustPan()), this
-			},
-			getContent: function() {
-				return this._content
-			},
-			setContent: function(t) {
-				return this._content = t, this.update(), this
-			},
-			getElement: function() {
-				return this._container
-			},
-			update: function() {
-				this._map && (this._container.style.visibility = "hidden", this._updateContent(), this
-					._updateLayout(), this._updatePosition(), this._container.style.visibility = "",
-					this._adjustPan())
-			},
-			getEvents: function() {
-				var t = {
-					zoom: this._updatePosition,
-					viewreset: this._updatePosition
-				};
-				return this._zoomAnimated && (t.zoomanim = this._animateZoom), t
-			},
-			isOpen: function() {
-				return !!this._map && this._map.hasLayer(this)
-			},
-			bringToFront: function() {
-				return this._map && hi(this._container), this
-			},
-			bringToBack: function() {
-				return this._map && ui(this._container), this
-			},
-			_prepareOpen: function(t, i, e) {
-				if (i instanceof Me || (e = i, i = t), i instanceof Ce)
-					for (var n in t._layers) {
-						i = t._layers[n];
-						break
-					}
-				if (!e)
-					if (i.getCenter) e = i.getCenter();
-					else {
-						if (!i.getLatLng) throw new Error("Unable to get source layer LatLng.");
-						e = i.getLatLng()
-					} return this._source = i, this.update(), e
-			},
-			_updateContent: function() {
-				if (this._content) {
-					var t = this._contentNode,
-						i = "function" == typeof this._content ? this._content(this._source || this) : this
-						._content;
-					if ("string" == typeof i) t.innerHTML = i;
-					else {
-						for (; t.hasChildNodes();) t.removeChild(t.firstChild);
-						t.appendChild(i)
-					}
-					this.fire("contentupdate")
-				}
-			},
-			_updatePosition: function() {
-				var t, i, e, n, o;
-				this._map && (t = this._map.latLngToLayerPoint(this._latlng), i = A(this.options.offset),
-					e = this._getAnchor(), this._zoomAnimated ? vi(this._container, t.add(e)) : i = i
-					.add(t).add(e), n = this._containerBottom = -i.y, o = this._containerLeft = -Math
-					.round(this._containerWidth / 2) + i.x, this._container.style.bottom = n + "px",
-					this._container.style.left = o + "px")
-			},
-			_getAnchor: function() {
-				return [0, 0]
-			}
-		}),
-		tn = Qe.extend({
-			options: {
-				maxWidth: 300,
-				minWidth: 50,
-				maxHeight: null,
-				autoPan: !0,
-				autoPanPaddingTopLeft: null,
-				autoPanPaddingBottomRight: null,
-				autoPanPadding: [5, 5],
-				keepInView: !1,
-				closeButton: !0,
-				autoClose: !0,
-				closeOnEscapeKey: !0,
-				className: ""
-			},
-			openOn: function(t) {
-				return t.openPopup(this), this
-			},
-			onAdd: function(t) {
-				Qe.prototype.onAdd.call(this, t), t.fire("popupopen", {
-					popup: this
-				}), this._source && (this._source.fire("popupopen", {
-					popup: this
-				}, !0), this._source instanceof Be || this._source.on("preclick", Ai))
-			},
-			onRemove: function(t) {
-				Qe.prototype.onRemove.call(this, t), t.fire("popupclose", {
-					popup: this
-				}), this._source && (this._source.fire("popupclose", {
-					popup: this
-				}, !0), this._source instanceof Be || this._source.off("preclick", Ai))
-			},
-			getEvents: function() {
-				var t = Qe.prototype.getEvents.call(this);
-				return (void 0 !== this.options.closeOnClick ? this.options.closeOnClick : this._map.options
-					.closePopupOnClick) && (t.preclick = this._close), this.options.keepInView && (t
-					.moveend = this._adjustPan), t
-			},
-			_close: function() {
-				this._map && this._map.closePopup(this)
-			},
-			_initLayout: function() {
-				var t, i = "leaflet-popup",
-					e = this._container = si("div", i + " " + (this.options.className || "") +
-						" leaflet-zoom-animated"),
-					n = this._wrapper = si("div", i + "-content-wrapper", e);
-				this._contentNode = si("div", i + "-content", n), Oi(e), Ii(this._contentNode), zi(e,
-						"contextmenu", Ai), this._tipContainer = si("div", i + "-tip-container", e), this
-					._tip = si("div", i + "-tip", this._tipContainer), this.options.closeButton && ((t =
-							this._closeButton = si("a", i + "-close-button", e)).href = "#close", t
-						.innerHTML = "&#215;", zi(t, "click", this._onCloseButtonClick, this))
-			},
-			_updateLayout: function() {
-				var t = this._contentNode,
-					i = t.style;
-				i.width = "", i.whiteSpace = "nowrap";
-				var e = t.offsetWidth,
-					e = Math.min(e, this.options.maxWidth);
-				e = Math.max(e, this.options.minWidth), i.width = e + 1 + "px", i.whiteSpace = "", i
-					.height = "";
-				var n = t.offsetHeight,
-					o = this.options.maxHeight,
-					s = "leaflet-popup-scrolled";
-				o && o < n ? (i.height = o + "px", ci(t, s)) : _i(t, s), this._containerWidth = this
-					._container.offsetWidth
-			},
-			_animateZoom: function(t) {
-				var i = this._map._latLngToNewLayerPoint(this._latlng, t.zoom, t.center),
-					e = this._getAnchor();
-				vi(this._container, i.add(e))
-			},
-			_adjustPan: function() {
-				var t, i, e, n, o, s, r, a, h, u, l, c;
-				this.options.autoPan && (this._map._panAnim && this._map._panAnim.stop(), t = this._map, i =
-					parseInt(oi(this._container, "marginBottom"), 10) || 0, e = this._container
-					.offsetHeight + i, n = this._containerWidth, (o = new k(this._containerLeft, -e -
-						this._containerBottom))._add(yi(this._container)), s = t
-					.layerPointToContainerPoint(o), r = A(this.options.autoPanPadding), a = A(this
-						.options.autoPanPaddingTopLeft || r), h = A(this.options
-						.autoPanPaddingBottomRight || r), u = t.getSize(), c = l = 0, s.x + n + h.x > u
-					.x && (l = s.x + n - u.x + h.x), s.x - l - a.x < 0 && (l = s.x - a.x), s.y + e + h
-					.y > u.y && (c = s.y + e - u.y + h.y), s.y - c - a.y < 0 && (c = s.y - a.y), (l ||
-						c) && t.fire("autopanstart").panBy([l, c]))
-			},
-			_onCloseButtonClick: function(t) {
-				this._close(), Ni(t)
-			},
-			_getAnchor: function() {
-				return A(this._source && this._source._getPopupAnchor ? this._source._getPopupAnchor() : [0,
-					0
-				])
-			}
-		});
-	Ki.mergeOptions({
-		closePopupOnClick: !0
-	}), Ki.include({
-		openPopup: function(t, i, e) {
-			return t instanceof tn || (t = new tn(e).setContent(t)), i && t.setLatLng(i), this.hasLayer(
-				t) ? this : (this._popup && this._popup.options.autoClose && this.closePopup(), this
-				._popup = t, this.addLayer(t))
-		},
-		closePopup: function(t) {
-			return t && t !== this._popup || (t = this._popup, this._popup = null), t && this
-				.removeLayer(t), this
-		}
-	}), Me.include({
-		bindPopup: function(t, i) {
-			return t instanceof tn ? (c(t, i), (this._popup = t)._source = this) : (this._popup && !i ||
-					(this._popup = new tn(i, this)), this._popup.setContent(t)), this
-				._popupHandlersAdded || (this.on({
-					click: this._openPopup,
-					keypress: this._onKeyPress,
-					remove: this.closePopup,
-					move: this._movePopup
-				}), this._popupHandlersAdded = !0), this
-		},
-		unbindPopup: function() {
-			return this._popup && (this.off({
-				click: this._openPopup,
-				keypress: this._onKeyPress,
-				remove: this.closePopup,
-				move: this._movePopup
-			}), this._popupHandlersAdded = !1, this._popup = null), this
-		},
-		openPopup: function(t, i) {
-			return this._popup && this._map && (i = this._popup._prepareOpen(this, t, i), this._map
-				.openPopup(this._popup, i)), this
-		},
-		closePopup: function() {
-			return this._popup && this._popup._close(), this
-		},
-		togglePopup: function(t) {
-			return this._popup && (this._popup._map ? this.closePopup() : this.openPopup(t)), this
-		},
-		isPopupOpen: function() {
-			return !!this._popup && this._popup.isOpen()
-		},
-		setPopupContent: function(t) {
-			return this._popup && this._popup.setContent(t), this
-		},
-		getPopup: function() {
-			return this._popup
-		},
-		_openPopup: function(t) {
-			var i = t.layer || t.target;
-			this._popup && this._map && (Ni(t), i instanceof Be ? this.openPopup(t.layer || t.target, t
-					.latlng) : this._map.hasLayer(this._popup) && this._popup._source === i ? this
-				.closePopup() : this.openPopup(i, t.latlng))
-		},
-		_movePopup: function(t) {
-			this._popup.setLatLng(t.latlng)
-		},
-		_onKeyPress: function(t) {
-			13 === t.originalEvent.keyCode && this._openPopup(t)
-		}
-	});
-	var en = Qe.extend({
-		options: {
-			pane: "tooltipPane",
-			offset: [0, 0],
-			direction: "auto",
-			permanent: !1,
-			sticky: !1,
-			interactive: !1,
-			opacity: .9
-		},
-		onAdd: function(t) {
-			Qe.prototype.onAdd.call(this, t), this.setOpacity(this.options.opacity), t.fire(
-				"tooltipopen", {
-					tooltip: this
-				}), this._source && this._source.fire("tooltipopen", {
-				tooltip: this
-			}, !0)
-		},
-		onRemove: function(t) {
-			Qe.prototype.onRemove.call(this, t), t.fire("tooltipclose", {
-				tooltip: this
-			}), this._source && this._source.fire("tooltipclose", {
-				tooltip: this
-			}, !0)
-		},
-		getEvents: function() {
-			var t = Qe.prototype.getEvents.call(this);
-			return bt && !this.options.permanent && (t.preclick = this._close), t
-		},
-		_close: function() {
-			this._map && this._map.closeTooltip(this)
-		},
-		_initLayout: function() {
-			var t = "leaflet-tooltip " + (this.options.className || "") + " leaflet-zoom-" + (this
-				._zoomAnimated ? "animated" : "hide");
-			this._contentNode = this._container = si("div", t)
-		},
-		_updateLayout: function() {},
-		_adjustPan: function() {},
-		_setPosition: function(t) {
-			var i, e = this._map,
-				n = this._container,
-				o = e.latLngToContainerPoint(e.getCenter()),
-				s = e.layerPointToContainerPoint(t),
-				r = this.options.direction,
-				a = n.offsetWidth,
-				h = n.offsetHeight,
-				u = A(this.options.offset),
-				l = this._getAnchor(),
-				c = "top" === r ? (i = a / 2, h) : "bottom" === r ? (i = a / 2, 0) : (i = "center" ===
-					r ? a / 2 : "right" === r ? 0 : "left" === r ? a : s.x < o.x ? (r = "right", 0) : (
-						r = "left", a + 2 * (u.x + l.x)), h / 2);
-			t = t.subtract(A(i, c, !0)).add(u).add(l), _i(n, "leaflet-tooltip-right"), _i(n,
-				"leaflet-tooltip-left"), _i(n, "leaflet-tooltip-top"), _i(n,
-				"leaflet-tooltip-bottom"), ci(n, "leaflet-tooltip-" + r), vi(n, t)
-		},
-		_updatePosition: function() {
-			var t = this._map.latLngToLayerPoint(this._latlng);
-			this._setPosition(t)
-		},
-		setOpacity: function(t) {
-			this.options.opacity = t, this._container && mi(this._container, t)
-		},
-		_animateZoom: function(t) {
-			var i = this._map._latLngToNewLayerPoint(this._latlng, t.zoom, t.center);
-			this._setPosition(i)
-		},
-		_getAnchor: function() {
-			return A(this._source && this._source._getTooltipAnchor && !this.options.sticky ? this
-				._source._getTooltipAnchor() : [0, 0])
-		}
-	});
-	Ki.include({
-		openTooltip: function(t, i, e) {
-			return t instanceof en || (t = new en(e).setContent(t)), i && t.setLatLng(i), this.hasLayer(
-				t) ? this : this.addLayer(t)
-		},
-		closeTooltip: function(t) {
-			return t && this.removeLayer(t), this
-		}
-	}), Me.include({
-		bindTooltip: function(t, i) {
-			return t instanceof en ? (c(t, i), (this._tooltip = t)._source = this) : (this._tooltip && !
-					i || (this._tooltip = new en(i, this)), this._tooltip.setContent(t)), this
-				._initTooltipInteractions(), this._tooltip.options.permanent && this._map && this._map
-				.hasLayer(this) && this.openTooltip(), this
-		},
-		unbindTooltip: function() {
-			return this._tooltip && (this._initTooltipInteractions(!0), this.closeTooltip(), this
-				._tooltip = null), this
-		},
-		_initTooltipInteractions: function(t) {
-			var i, e;
-			!t && this._tooltipHandlersAdded || (i = t ? "off" : "on", e = {
-					remove: this.closeTooltip,
-					move: this._moveTooltip
-				}, this._tooltip.options.permanent ? e.add = this._openTooltip : (e.mouseover = this
-					._openTooltip, e.mouseout = this.closeTooltip, this._tooltip.options.sticky && (
-						e.mousemove = this._moveTooltip), bt && (e.click = this._openTooltip)),
-				this[i](e), this._tooltipHandlersAdded = !t)
-		},
-		openTooltip: function(t, i) {
-			return this._tooltip && this._map && (i = this._tooltip._prepareOpen(this, t, i), this._map
-				.openTooltip(this._tooltip, i), this._tooltip.options.interactive && this._tooltip
-				._container && (ci(this._tooltip._container, "leaflet-clickable"), this
-					.addInteractiveTarget(this._tooltip._container))), this
-		},
-		closeTooltip: function() {
-			return this._tooltip && (this._tooltip._close(), this._tooltip.options.interactive && this
-				._tooltip._container && (_i(this._tooltip._container, "leaflet-clickable"), this
-					.removeInteractiveTarget(this._tooltip._container))), this
-		},
-		toggleTooltip: function(t) {
-			return this._tooltip && (this._tooltip._map ? this.closeTooltip() : this.openTooltip(t)),
-				this
-		},
-		isTooltipOpen: function() {
-			return this._tooltip.isOpen()
-		},
-		setTooltipContent: function(t) {
-			return this._tooltip && this._tooltip.setContent(t), this
-		},
-		getTooltip: function() {
-			return this._tooltip
-		},
-		_openTooltip: function(t) {
-			var i = t.layer || t.target;
-			this._tooltip && this._map && this.openTooltip(i, this._tooltip.options.sticky ? t.latlng :
-				void 0)
-		},
-		_moveTooltip: function(t) {
-			var i, e, n = t.latlng;
-			this._tooltip.options.sticky && t.originalEvent && (i = this._map
-					.mouseEventToContainerPoint(t.originalEvent), e = this._map
-					.containerPointToLayerPoint(i), n = this._map.layerPointToLatLng(e)), this._tooltip
-				.setLatLng(n)
-		}
-	});
-	var nn = Se.extend({
-		options: {
-			iconSize: [12, 12],
-			html: !1,
-			bgPos: null,
-			className: "leaflet-div-icon"
-		},
-		createIcon: function(t) {
-			var i, e = t && "DIV" === t.tagName ? t : document.createElement("div"),
-				n = this.options;
-			return n.html instanceof Element ? (ai(e), e.appendChild(n.html)) : e.innerHTML = !1 !== n
-				.html ? n.html : "", n.bgPos && (i = A(n.bgPos), e.style.backgroundPosition = -i.x +
-					"px " + -i.y + "px"), this._setIconStyles(e, "icon"), e
-		},
-		createShadow: function() {
-			return null
-		}
-	});
-	Se.Default = Ze;
-	var on = Me.extend({
-		options: {
-			tileSize: 256,
-			opacity: 1,
-			updateWhenIdle: yt,
-			updateWhenZooming: !0,
-			updateInterval: 200,
-			zIndex: 1,
-			bounds: null,
-			minZoom: 0,
-			maxZoom: void 0,
-			maxNativeZoom: void 0,
-			minNativeZoom: void 0,
-			noWrap: !1,
-			pane: "tilePane",
-			className: "",
-			keepBuffer: 2
-		},
-		initialize: function(t) {
-			c(this, t)
-		},
-		onAdd: function() {
-			this._initContainer(), this._levels = {}, this._tiles = {}, this._resetView(), this
-			._update()
-		},
-		beforeAdd: function(t) {
-			t._addZoomLimit(this)
-		},
-		onRemove: function(t) {
-			this._removeAllTiles(), ri(this._container), t._removeZoomLimit(this), this._container =
-				null, this._tileZoom = void 0
-		},
-		bringToFront: function() {
-			return this._map && (hi(this._container), this._setAutoZIndex(Math.max)), this
-		},
-		bringToBack: function() {
-			return this._map && (ui(this._container), this._setAutoZIndex(Math.min)), this
-		},
-		getContainer: function() {
-			return this._container
-		},
-		setOpacity: function(t) {
-			return this.options.opacity = t, this._updateOpacity(), this
-		},
-		setZIndex: function(t) {
-			return this.options.zIndex = t, this._updateZIndex(), this
-		},
-		isLoading: function() {
-			return this._loading
-		},
-		redraw: function() {
-			return this._map && (this._removeAllTiles(), this._update()), this
-		},
-		getEvents: function() {
-			var t = {
-				viewprereset: this._invalidateAll,
-				viewreset: this._resetView,
-				zoom: this._resetView,
-				moveend: this._onMoveEnd
-			};
-			return this.options.updateWhenIdle || (this._onMove || (this._onMove = n(this._onMoveEnd,
-				this.options.updateInterval, this)), t.move = this._onMove), this._zoomAnimated && (
-				t.zoomanim = this._animateZoom), t
-		},
-		createTile: function() {
-			return document.createElement("div")
-		},
-		getTileSize: function() {
-			var t = this.options.tileSize;
-			return t instanceof k ? t : new k(t, t)
-		},
-		_updateZIndex: function() {
-			this._container && void 0 !== this.options.zIndex && null !== this.options.zIndex && (this
-				._container.style.zIndex = this.options.zIndex)
-		},
-		_setAutoZIndex: function(t) {
-			for (var i, e = this.getPane().children, n = -t(-1 / 0, 1 / 0), o = 0, s = e.length; o <
-				s; o++) i = e[o].style.zIndex, e[o] !== this._container && i && (n = t(n, +i));
-			isFinite(n) && (this.options.zIndex = n + t(-1, 1), this._updateZIndex())
-		},
-		_updateOpacity: function() {
-			if (this._map && !it) {
-				mi(this._container, this.options.opacity);
-				var t = +new Date,
-					i = !1,
-					e = !1;
-				for (var n in this._tiles) {
-					var o, s = this._tiles[n];
-					s.current && s.loaded && (o = Math.min(1, (t - s.loaded) / 200), mi(s.el, o), o <
-						1 ? i = !0 : (s.active ? e = !0 : this._onOpaqueTile(s), s.active = !0))
-				}
-				e && !this._noPrune && this._pruneTiles(), i && (z(this._fadeFrame), this._fadeFrame =
-					M(this._updateOpacity, this))
-			}
-		},
-		_onOpaqueTile: a,
-		_initContainer: function() {
-			this._container || (this._container = si("div", "leaflet-layer " + (this.options
-					.className || "")), this._updateZIndex(), this.options.opacity < 1 && this
-				._updateOpacity(), this.getPane().appendChild(this._container))
-		},
-		_updateLevels: function() {
-			var t = this._tileZoom,
-				i = this.options.maxZoom;
-			if (void 0 !== t) {
-				for (var e in this._levels) e = Number(e), this._levels[e].el.children.length || e ===
-					t ? (this._levels[e].el.style.zIndex = i - Math.abs(t - e), this._onUpdateLevel(
-					e)) : (ri(this._levels[e].el), this._removeTilesAtZoom(e), this._onRemoveLevel(e),
-						delete this._levels[e]);
-				var n = this._levels[t],
-					o = this._map;
-				return n || ((n = this._levels[t] = {}).el = si("div",
-						"leaflet-tile-container leaflet-zoom-animated", this._container), n.el.style
-					.zIndex = i, n.origin = o.project(o.unproject(o.getPixelOrigin()), t).round(), n
-					.zoom = t, this._setZoomTransform(n, o.getCenter(), o.getZoom()), a(n.el
-						.offsetWidth), this._onCreateLevel(n)), this._level = n
-			}
-		},
-		_onUpdateLevel: a,
-		_onRemoveLevel: a,
-		_onCreateLevel: a,
-		_pruneTiles: function() {
-			if (this._map) {
-				var t, i, e, n = this._map.getZoom();
-				if (n > this.options.maxZoom || n < this.options.minZoom) this._removeAllTiles();
-				else {
-					for (t in this._tiles)(e = this._tiles[t]).retain = e.current;
-					for (t in this._tiles) {
-						(e = this._tiles[t]).current && !e.active && (i = e.coords, this._retainParent(i
-							.x, i.y, i.z, i.z - 5) || this._retainChildren(i.x, i.y, i.z, i.z +
-							2))
-					}
-					for (t in this._tiles) this._tiles[t].retain || this._removeTile(t)
-				}
-			}
-		},
-		_removeTilesAtZoom: function(t) {
-			for (var i in this._tiles) this._tiles[i].coords.z === t && this._removeTile(i)
-		},
-		_removeAllTiles: function() {
-			for (var t in this._tiles) this._removeTile(t)
-		},
-		_invalidateAll: function() {
-			for (var t in this._levels) ri(this._levels[t].el), this._onRemoveLevel(Number(t)),
-				delete this._levels[t];
-			this._removeAllTiles(), this._tileZoom = void 0
-		},
-		_retainParent: function(t, i, e, n) {
-			var o = Math.floor(t / 2),
-				s = Math.floor(i / 2),
-				r = e - 1,
-				a = new k(+o, +s);
-			a.z = +r;
-			var h = this._tileCoordsToKey(a),
-				u = this._tiles[h];
-			return u && u.active ? u.retain = !0 : (u && u.loaded && (u.retain = !0), n < r && this
-				._retainParent(o, s, r, n))
-		},
-		_retainChildren: function(t, i, e, n) {
-			for (var o = 2 * t; o < 2 * t + 2; o++)
-				for (var s = 2 * i; s < 2 * i + 2; s++) {
-					var r = new k(o, s);
-					r.z = e + 1;
-					var a = this._tileCoordsToKey(r),
-						h = this._tiles[a];
-					h && h.active ? h.retain = !0 : (h && h.loaded && (h.retain = !0), e + 1 < n && this
-						._retainChildren(o, s, e + 1, n))
-				}
-		},
-		_resetView: function(t) {
-			var i = t && (t.pinch || t.flyTo);
-			this._setView(this._map.getCenter(), this._map.getZoom(), i, i)
-		},
-		_animateZoom: function(t) {
-			this._setView(t.center, t.zoom, !0, t.noUpdate)
-		},
-		_clampZoom: function(t) {
-			var i = this.options;
-			return void 0 !== i.minNativeZoom && t < i.minNativeZoom ? i.minNativeZoom : void 0 !== i
-				.maxNativeZoom && i.maxNativeZoom < t ? i.maxNativeZoom : t
-		},
-		_setView: function(t, i, e, n) {
-			var o = Math.round(i),
-				o = void 0 !== this.options.maxZoom && o > this.options.maxZoom || void 0 !== this
-				.options.minZoom && o < this.options.minZoom ? void 0 : this._clampZoom(o),
-				s = this.options.updateWhenZooming && o !== this._tileZoom;
-			n && !s || (this._tileZoom = o, this._abortLoading && this._abortLoading(), this
-				._updateLevels(), this._resetGrid(), void 0 !== o && this._update(t), e || this
-				._pruneTiles(), this._noPrune = !!e), this._setZoomTransforms(t, i)
-		},
-		_setZoomTransforms: function(t, i) {
-			for (var e in this._levels) this._setZoomTransform(this._levels[e], t, i)
-		},
-		_setZoomTransform: function(t, i, e) {
-			var n = this._map.getZoomScale(e, t.zoom),
-				o = t.origin.multiplyBy(n).subtract(this._map._getNewPixelOrigin(i, e)).round();
-			vt ? gi(t.el, o, n) : vi(t.el, o)
-		},
-		_resetGrid: function() {
-			var t = this._map,
-				i = t.options.crs,
-				e = this._tileSize = this.getTileSize(),
-				n = this._tileZoom,
-				o = this._map.getPixelWorldBounds(this._tileZoom);
-			o && (this._globalTileRange = this._pxBoundsToTileRange(o)), this._wrapX = i.wrapLng && !
-				this.options.noWrap && [Math.floor(t.project([0, i.wrapLng[0]], n).x / e.x), Math.ceil(t
-					.project([0, i.wrapLng[1]], n).x / e.y)], this._wrapY = i.wrapLat && !this.options
-				.noWrap && [Math.floor(t.project([i.wrapLat[0], 0], n).y / e.x), Math.ceil(t.project([i
-					.wrapLat[1], 0
-				], n).y / e.y)]
-		},
-		_onMoveEnd: function() {
-			this._map && !this._map._animatingZoom && this._update()
-		},
-		_getTiledPixelBounds: function(t) {
-			var i = this._map,
-				e = i._animatingZoom ? Math.max(i._animateToZoom, i.getZoom()) : i.getZoom(),
-				n = i.getZoomScale(e, this._tileZoom),
-				o = i.project(t, this._tileZoom).floor(),
-				s = i.getSize().divideBy(2 * n);
-			return new I(o.subtract(s), o.add(s))
-		},
-		_update: function(t) {
-			var i = this._map;
-			if (i) {
-				var e = this._clampZoom(i.getZoom());
-				if (void 0 === t && (t = i.getCenter()), void 0 !== this._tileZoom) {
-					var n = this._getTiledPixelBounds(t),
-						o = this._pxBoundsToTileRange(n),
-						s = o.getCenter(),
-						r = [],
-						a = this.options.keepBuffer,
-						h = new I(o.getBottomLeft().subtract([a, -a]), o.getTopRight().add([a, -a]));
-					if (!(isFinite(o.min.x) && isFinite(o.min.y) && isFinite(o.max.x) && isFinite(o.max
-							.y))) throw new Error("Attempted to load an infinite number of tiles");
-					for (var u in this._tiles) {
-						var l = this._tiles[u].coords;
-						l.z === this._tileZoom && h.contains(new k(l.x, l.y)) || (this._tiles[u]
-							.current = !1)
-					}
-					if (1 < Math.abs(e - this._tileZoom)) this._setView(t, e);
-					else {
-						for (var c = o.min.y; c <= o.max.y; c++)
-							for (var _ = o.min.x; _ <= o.max.x; _++) {
-								var d, p = new k(_, c);
-								p.z = this._tileZoom, this._isValidTile(p) && ((d = this._tiles[this
-									._tileCoordsToKey(p)]) ? d.current = !0 : r.push(p))
-							}
-						if (r.sort(function(t, i) {
-								return t.distanceTo(s) - i.distanceTo(s)
-							}), 0 !== r.length) {
-							this._loading || (this._loading = !0, this.fire("loading"));
-							for (var m = document.createDocumentFragment(), _ = 0; _ < r.length; _++)
-								this._addTile(r[_], m);
-							this._level.el.appendChild(m)
-						}
-					}
-				}
-			}
-		},
-		_isValidTile: function(t) {
-			var i = this._map.options.crs;
-			if (!i.infinite) {
-				var e = this._globalTileRange;
-				if (!i.wrapLng && (t.x < e.min.x || t.x > e.max.x) || !i.wrapLat && (t.y < e.min.y || t
-						.y > e.max.y)) return !1
-			}
-			if (!this.options.bounds) return !0;
-			var n = this._tileCoordsToBounds(t);
-			return N(this.options.bounds).overlaps(n)
-		},
-		_keyToBounds: function(t) {
-			return this._tileCoordsToBounds(this._keyToTileCoords(t))
-		},
-		_tileCoordsToNwSe: function(t) {
-			var i = this._map,
-				e = this.getTileSize(),
-				n = t.scaleBy(e),
-				o = n.add(e);
-			return [i.unproject(n, t.z), i.unproject(o, t.z)]
-		},
-		_tileCoordsToBounds: function(t) {
-			var i = this._tileCoordsToNwSe(t),
-				e = new R(i[0], i[1]);
-			return this.options.noWrap || (e = this._map.wrapLatLngBounds(e)), e
-		},
-		_tileCoordsToKey: function(t) {
-			return t.x + ":" + t.y + ":" + t.z
-		},
-		_keyToTileCoords: function(t) {
-			var i = t.split(":"),
-				e = new k(+i[0], +i[1]);
-			return e.z = +i[2], e
-		},
-		_removeTile: function(t) {
-			var i = this._tiles[t];
-			i && (ri(i.el), delete this._tiles[t], this.fire("tileunload", {
-				tile: i.el,
-				coords: this._keyToTileCoords(t)
-			}))
-		},
-		_initTile: function(t) {
-			ci(t, "leaflet-tile");
-			var i = this.getTileSize();
-			t.style.width = i.x + "px", t.style.height = i.y + "px", t.onselectstart = a, t
-				.onmousemove = a, it && this.options.opacity < 1 && mi(t, this.options.opacity), ot && !
-				st && (t.style.WebkitBackfaceVisibility = "hidden")
-		},
-		_addTile: function(t, i) {
-			var e = this._getTilePos(t),
-				n = this._tileCoordsToKey(t),
-				o = this.createTile(this._wrapCoords(t), p(this._tileReady, this, t));
-			this._initTile(o), this.createTile.length < 2 && M(p(this._tileReady, this, t, null, o)),
-				vi(o, e), this._tiles[n] = {
-					el: o,
-					coords: t,
-					current: !0
-				}, i.appendChild(o), this.fire("tileloadstart", {
-					tile: o,
-					coords: t
-				})
-		},
-		_tileReady: function(t, i, e) {
-			i && this.fire("tileerror", {
-				error: i,
-				tile: e,
-				coords: t
-			});
-			var n = this._tileCoordsToKey(t);
-			(e = this._tiles[n]) && (e.loaded = +new Date, this._map._fadeAnimated ? (mi(e.el, 0), z(
-				this._fadeFrame), this._fadeFrame = M(this._updateOpacity, this)) : (e.active = !0,
-				this._pruneTiles()), i || (ci(e.el, "leaflet-tile-loaded"), this.fire("tileload", {
-				tile: e.el,
-				coords: t
-			})), this._noTilesToLoad() && (this._loading = !1, this.fire("load"), it || !this._map
-				._fadeAnimated ? M(this._pruneTiles, this) : setTimeout(p(this._pruneTiles, this),
-					250)))
-		},
-		_getTilePos: function(t) {
-			return t.scaleBy(this.getTileSize()).subtract(this._level.origin)
-		},
-		_wrapCoords: function(t) {
-			var i = new k(this._wrapX ? o(t.x, this._wrapX) : t.x, this._wrapY ? o(t.y, this._wrapY) : t
-				.y);
-			return i.z = t.z, i
-		},
-		_pxBoundsToTileRange: function(t) {
-			var i = this.getTileSize();
-			return new I(t.min.unscaleBy(i).floor(), t.max.unscaleBy(i).ceil().subtract([1, 1]))
-		},
-		_noTilesToLoad: function() {
-			for (var t in this._tiles)
-				if (!this._tiles[t].loaded) return !1;
-			return !0
-		}
-	});
-	var sn = on.extend({
-		options: {
-			minZoom: 0,
-			maxZoom: 18,
-			subdomains: "abc",
-			errorTileUrl: "",
-			zoomOffset: 0,
-			tms: !1,
-			zoomReverse: !1,
-			detectRetina: !1,
-			crossOrigin: !1
-		},
-		initialize: function(t, i) {
-			this._url = t, (i = c(this, i)).detectRetina && zt && 0 < i.maxZoom && (i.tileSize = Math
-					.floor(i.tileSize / 2), i.zoomReverse ? (i.zoomOffset--, i.minZoom++) : (i
-						.zoomOffset++, i.maxZoom--), i.minZoom = Math.max(0, i.minZoom)), "string" ==
-				typeof i.subdomains && (i.subdomains = i.subdomains.split("")), ot || this.on(
-					"tileunload", this._onTileRemove)
-		},
-		setUrl: function(t, i) {
-			return this._url === t && void 0 === i && (i = !0), this._url = t, i || this.redraw(), this
-		},
-		createTile: function(t, i) {
-			var e = document.createElement("img");
-			return zi(e, "load", p(this._tileOnLoad, this, i, e)), zi(e, "error", p(this._tileOnError,
-					this, i, e)), !this.options.crossOrigin && "" !== this.options.crossOrigin || (e
-					.crossOrigin = !0 === this.options.crossOrigin ? "" : this.options.crossOrigin), e
-				.alt = "", e.setAttribute("role", "presentation"), e.src = this.getTileUrl(t), e
-		},
-		getTileUrl: function(t) {
-			var i, e = {
-				r: zt ? "@2x" : "",
-				s: this._getSubdomain(t),
-				x: t.x,
-				y: t.y,
-				z: this._getZoomForUrl()
-			};
-			return this._map && !this._map.options.crs.infinite && (i = this._globalTileRange.max.y - t
-				.y, this.options.tms && (e.y = i), e["-y"] = i), f(this._url, h(e, this.options))
-		},
-		_tileOnLoad: function(t, i) {
-			it ? setTimeout(p(t, this, null, i), 0) : t(null, i)
-		},
-		_tileOnError: function(t, i, e) {
-			var n = this.options.errorTileUrl;
-			n && i.getAttribute("src") !== n && (i.src = n), t(e, i)
-		},
-		_onTileRemove: function(t) {
-			t.tile.onload = null
-		},
-		_getZoomForUrl: function() {
-			var t = this._tileZoom,
-				i = this.options.maxZoom;
-			return this.options.zoomReverse && (t = i - t), t + this.options.zoomOffset
-		},
-		_getSubdomain: function(t) {
-			var i = Math.abs(t.x + t.y) % this.options.subdomains.length;
-			return this.options.subdomains[i]
-		},
-		_abortLoading: function() {
-			var t, i;
-			for (t in this._tiles) this._tiles[t].coords.z !== this._tileZoom && ((i = this._tiles[t]
-				.el).onload = a, i.onerror = a, i.complete || (i.src = y, ri(i), delete this
-				._tiles[t]))
-		},
-		_removeTile: function(t) {
-			var i = this._tiles[t];
-			if (i) return at || i.el.setAttribute("src", y), on.prototype._removeTile.call(this, t)
-		},
-		_tileReady: function(t, i, e) {
-			if (this._map && (!e || e.getAttribute("src") !== y)) return on.prototype._tileReady.call(
-				this, t, i, e)
-		}
-	});
-
-	function rn(t, i) {
-		return new sn(t, i)
-	}
-	var an = sn.extend({
-		defaultWmsParams: {
-			service: "WMS",
-			request: "GetMap",
-			layers: "",
-			styles: "",
-			format: "image/jpeg",
-			transparent: !1,
-			version: "1.1.1"
-		},
-		options: {
-			crs: null,
-			uppercase: !1
-		},
-		initialize: function(t, i) {
-			this._url = t;
-			var e = h({}, this.defaultWmsParams);
-			for (var n in i) n in this.options || (e[n] = i[n]);
-			var o = (i = c(this, i)).detectRetina && zt ? 2 : 1,
-				s = this.getTileSize();
-			e.width = s.x * o, e.height = s.y * o, this.wmsParams = e
-		},
-		onAdd: function(t) {
-			this._crs = this.options.crs || t.options.crs, this._wmsVersion = parseFloat(this.wmsParams
-				.version);
-			var i = 1.3 <= this._wmsVersion ? "crs" : "srs";
-			this.wmsParams[i] = this._crs.code, sn.prototype.onAdd.call(this, t)
-		},
-		getTileUrl: function(t) {
-			var i = this._tileCoordsToNwSe(t),
-				e = this._crs,
-				n = O(e.project(i[0]), e.project(i[1])),
-				o = n.min,
-				s = n.max,
-				r = (1.3 <= this._wmsVersion && this._crs === be ? [o.y, o.x, s.y, s.x] : [o.x, o.y, s
-					.x, s.y
-				]).join(","),
-				a = sn.prototype.getTileUrl.call(this, t);
-			return a + _(this.wmsParams, a, this.options.uppercase) + (this.options.uppercase ?
-				"&BBOX=" : "&bbox=") + r
-		},
-		setParams: function(t, i) {
-			return h(this.wmsParams, t), i || this.redraw(), this
-		}
-	});
-	sn.WMS = an, rn.wms = function(t, i) {
-		return new an(t, i)
-	};
-	var hn = Me.extend({
-			options: {
-				padding: .1,
-				tolerance: 0
-			},
-			initialize: function(t) {
-				c(this, t), m(this), this._layers = this._layers || {}
-			},
-			onAdd: function() {
-				this._container || (this._initContainer(), this._zoomAnimated && ci(this._container,
-						"leaflet-zoom-animated")), this.getPane().appendChild(this._container), this
-					._update(), this.on("update", this._updatePaths, this)
-			},
-			onRemove: function() {
-				this.off("update", this._updatePaths, this), this._destroyContainer()
-			},
-			getEvents: function() {
-				var t = {
-					viewreset: this._reset,
-					zoom: this._onZoom,
-					moveend: this._update,
-					zoomend: this._onZoomEnd
-				};
-				return this._zoomAnimated && (t.zoomanim = this._onAnimZoom), t
-			},
-			_onAnimZoom: function(t) {
-				this._updateTransform(t.center, t.zoom)
-			},
-			_onZoom: function() {
-				this._updateTransform(this._map.getCenter(), this._map.getZoom())
-			},
-			_updateTransform: function(t, i) {
-				var e = this._map.getZoomScale(i, this._zoom),
-					n = yi(this._container),
-					o = this._map.getSize().multiplyBy(.5 + this.options.padding),
-					s = this._map.project(this._center, i),
-					r = this._map.project(t, i).subtract(s),
-					a = o.multiplyBy(-e).add(n).add(o).subtract(r);
-				vt ? gi(this._container, a, e) : vi(this._container, a)
-			},
-			_reset: function() {
-				for (var t in this._update(), this._updateTransform(this._center, this._zoom), this._layers)
-					this._layers[t]._reset()
-			},
-			_onZoomEnd: function() {
-				for (var t in this._layers) this._layers[t]._project()
-			},
-			_updatePaths: function() {
-				for (var t in this._layers) this._layers[t]._update()
-			},
-			_update: function() {
-				var t = this.options.padding,
-					i = this._map.getSize(),
-					e = this._map.containerPointToLayerPoint(i.multiplyBy(-t)).round();
-				this._bounds = new I(e, e.add(i.multiplyBy(1 + 2 * t)).round()), this._center = this._map
-					.getCenter(), this._zoom = this._map.getZoom()
-			}
-		}),
-		un = hn.extend({
-			getEvents: function() {
-				var t = hn.prototype.getEvents.call(this);
-				return t.viewprereset = this._onViewPreReset, t
-			},
-			_onViewPreReset: function() {
-				this._postponeUpdatePaths = !0
-			},
-			onAdd: function() {
-				hn.prototype.onAdd.call(this), this._draw()
-			},
-			_initContainer: function() {
-				var t = this._container = document.createElement("canvas");
-				zi(t, "mousemove", this._onMouseMove, this), zi(t,
-					"click dblclick mousedown mouseup contextmenu", this._onClick, this), zi(t,
-					"mouseout", this._handleMouseOut, this), this._ctx = t.getContext("2d")
-			},
-			_destroyContainer: function() {
-				z(this._redrawRequest), delete this._ctx, ri(this._container), Si(this._container),
-					delete this._container
-			},
-			_updatePaths: function() {
-				if (!this._postponeUpdatePaths) {
-					for (var t in this._redrawBounds = null, this._layers) this._layers[t]._update();
-					this._redraw()
-				}
-			},
-			_update: function() {
-				var t, i, e, n;
-				this._map._animatingZoom && this._bounds || (hn.prototype._update.call(this), t = this
-					._bounds, i = this._container, e = t.getSize(), n = zt ? 2 : 1, vi(i, t.min), i
-					.width = n * e.x, i.height = n * e.y, i.style.width = e.x + "px", i.style.height = e
-					.y + "px", zt && this._ctx.scale(2, 2), this._ctx.translate(-t.min.x, -t.min.y),
-					this.fire("update"))
-			},
-			_reset: function() {
-				hn.prototype._reset.call(this), this._postponeUpdatePaths && (this._postponeUpdatePaths = !
-					1, this._updatePaths())
-			},
-			_initPath: function(t) {
-				this._updateDashArray(t);
-				var i = (this._layers[m(t)] = t)._order = {
-					layer: t,
-					prev: this._drawLast,
-					next: null
-				};
-				this._drawLast && (this._drawLast.next = i), this._drawLast = i, this._drawFirst = this
-					._drawFirst || this._drawLast
-			},
-			_addPath: function(t) {
-				this._requestRedraw(t)
-			},
-			_removePath: function(t) {
-				var i = t._order,
-					e = i.next,
-					n = i.prev;
-				e ? e.prev = n : this._drawLast = n, n ? n.next = e : this._drawFirst = e, delete t._order,
-					delete this._layers[m(t)], this._requestRedraw(t)
-			},
-			_updatePath: function(t) {
-				this._extendRedrawBounds(t), t._project(), t._update(), this._requestRedraw(t)
-			},
-			_updateStyle: function(t) {
-				this._updateDashArray(t), this._requestRedraw(t)
-			},
-			_updateDashArray: function(t) {
-				if ("string" == typeof t.options.dashArray) {
-					for (var i, e = t.options.dashArray.split(/[, ]+/), n = [], o = 0; o < e.length; o++) {
-						if (i = Number(e[o]), isNaN(i)) return;
-						n.push(i)
-					}
-					t.options._dashArray = n
-				} else t.options._dashArray = t.options.dashArray
-			},
-			_requestRedraw: function(t) {
-				this._map && (this._extendRedrawBounds(t), this._redrawRequest = this._redrawRequest || M(
-					this._redraw, this))
-			},
-			_extendRedrawBounds: function(t) {
-				var i;
-				t._pxBounds && (i = (t.options.weight || 0) + 1, this._redrawBounds = this._redrawBounds ||
-					new I, this._redrawBounds.extend(t._pxBounds.min.subtract([i, i])), this
-					._redrawBounds.extend(t._pxBounds.max.add([i, i])))
-			},
-			_redraw: function() {
-				this._redrawRequest = null, this._redrawBounds && (this._redrawBounds.min._floor(), this
-					._redrawBounds.max._ceil()), this._clear(), this._draw(), this._redrawBounds = null
-			},
-			_clear: function() {
-				var t, i = this._redrawBounds;
-				i ? (t = i.getSize(), this._ctx.clearRect(i.min.x, i.min.y, t.x, t.y)) : (this._ctx.save(),
-					this._ctx.setTransform(1, 0, 0, 1, 0, 0), this._ctx.clearRect(0, 0, this._container
-						.width, this._container.height), this._ctx.restore())
-			},
-			_draw: function() {
-				var t, i, e = this._redrawBounds;
-				this._ctx.save(), e && (i = e.getSize(), this._ctx.beginPath(), this._ctx.rect(e.min.x, e
-					.min.y, i.x, i.y), this._ctx.clip()), this._drawing = !0;
-				for (var n = this._drawFirst; n; n = n.next) t = n.layer, (!e || t._pxBounds && t._pxBounds
-					.intersects(e)) && t._updatePath();
-				this._drawing = !1, this._ctx.restore()
-			},
-			_updatePoly: function(t, i) {
-				if (this._drawing) {
-					var e, n, o, s, r = t._parts,
-						a = r.length,
-						h = this._ctx;
-					if (a) {
-						for (h.beginPath(), e = 0; e < a; e++) {
-							for (n = 0, o = r[e].length; n < o; n++) s = r[e][n], h[n ? "lineTo" : "moveTo"]
-								(s.x, s.y);
-							i && h.closePath()
-						}
-						this._fillStroke(h, t)
-					}
-				}
-			},
-			_updateCircle: function(t) {
-				var i, e, n, o;
-				this._drawing && !t._empty() && (i = t._point, e = this._ctx, n = Math.max(Math.round(t
-					._radius), 1), 1 != (o = (Math.max(Math.round(t._radiusY), 1) || n) / n) && (e
-					.save(), e.scale(1, o)), e.beginPath(), e.arc(i.x, i.y / o, n, 0, 2 * Math.PI, !
-					1), 1 != o && e.restore(), this._fillStroke(e, t))
-			},
-			_fillStroke: function(t, i) {
-				var e = i.options;
-				e.fill && (t.globalAlpha = e.fillOpacity, t.fillStyle = e.fillColor || e.color, t.fill(e
-					.fillRule || "evenodd")), e.stroke && 0 !== e.weight && (t.setLineDash && t
-					.setLineDash(i.options && i.options._dashArray || []), t.globalAlpha = e.opacity, t
-					.lineWidth = e.weight, t.strokeStyle = e.color, t.lineCap = e.lineCap, t.lineJoin =
-					e.lineJoin, t.stroke())
-			},
-			_onClick: function(t) {
-				for (var i, e, n = this._map.mouseEventToLayerPoint(t), o = this._drawFirst; o; o = o.next)(
-					i = o.layer).options.interactive && i._containsPoint(n) && (("click" === t.type ||
-					"preclick" !== t.type) && this._map._draggableMoved(i) || (e = i));
-				e && (Fi(t), this._fireEvent([e], t))
-			},
-			_onMouseMove: function(t) {
-				var i;
-				!this._map || this._map.dragging.moving() || this._map._animatingZoom || (i = this._map
-					.mouseEventToLayerPoint(t), this._handleMouseHover(t, i))
-			},
-			_handleMouseOut: function(t) {
-				var i = this._hoveredLayer;
-				i && (_i(this._container, "leaflet-interactive"), this._fireEvent([i], t, "mouseout"), this
-					._hoveredLayer = null, this._mouseHoverThrottled = !1)
-			},
-			_handleMouseHover: function(t, i) {
-				if (!this._mouseHoverThrottled) {
-					for (var e, n, o = this._drawFirst; o; o = o.next)(e = o.layer).options.interactive && e
-						._containsPoint(i) && (n = e);
-					n !== this._hoveredLayer && (this._handleMouseOut(t), n && (ci(this._container,
-							"leaflet-interactive"), this._fireEvent([n], t, "mouseover"), this
-						._hoveredLayer = n)), this._hoveredLayer && this._fireEvent([this
-						._hoveredLayer], t), this._mouseHoverThrottled = !0, setTimeout(p(function() {
-						this._mouseHoverThrottled = !1
-					}, this), 32)
-				}
-			},
-			_fireEvent: function(t, i, e) {
-				this._map._fireDOMEvent(i, e || i.type, t)
-			},
-			_bringToFront: function(t) {
-				var i, e, n = t._order;
-				n && (i = n.next, e = n.prev, i && ((i.prev = e) ? e.next = i : i && (this._drawFirst = i),
-					n.prev = this._drawLast, (this._drawLast.next = n).next = null, this._drawLast =
-					n, this._requestRedraw(t)))
-			},
-			_bringToBack: function(t) {
-				var i, e, n = t._order;
-				n && (i = n.next, (e = n.prev) && ((e.next = i) ? i.prev = e : e && (this._drawLast = e), n
-					.prev = null, n.next = this._drawFirst, this._drawFirst.prev = n, this
-					._drawFirst = n, this._requestRedraw(t)))
-			}
-		});
-
-	function ln(t) {
-		return St ? new un(t) : null
-	}
-	var cn = function() {
-			try {
-				return document.namespaces.add("lvml", "urn:schemas-microsoft-com:vml"),
-					function(t) {
-						return document.createElement("<lvml:" + t + ' class="lvml">')
-					}
-			} catch (t) {
-				return function(t) {
-					return document.createElement("<" + t +
-						' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')
-				}
-			}
-		}(),
-		_n = {
-			_initContainer: function() {
-				this._container = si("div", "leaflet-vml-container")
-			},
-			_update: function() {
-				this._map._animatingZoom || (hn.prototype._update.call(this), this.fire("update"))
-			},
-			_initPath: function(t) {
-				var i = t._container = cn("shape");
-				ci(i, "leaflet-vml-shape " + (this.options.className || "")), i.coordsize = "1 1", t._path = cn(
-					"path"), i.appendChild(t._path), this._updateStyle(t), this._layers[m(t)] = t
-			},
-			_addPath: function(t) {
-				var i = t._container;
-				this._container.appendChild(i), t.options.interactive && t.addInteractiveTarget(i)
-			},
-			_removePath: function(t) {
-				var i = t._container;
-				ri(i), t.removeInteractiveTarget(i), delete this._layers[m(t)]
-			},
-			_updateStyle: function(t) {
-				var i = t._stroke,
-					e = t._fill,
-					n = t.options,
-					o = t._container;
-				o.stroked = !!n.stroke, o.filled = !!n.fill, n.stroke ? (i = i || (t._stroke = cn("stroke")), o
-					.appendChild(i), i.weight = n.weight + "px", i.color = n.color, i.opacity = n.opacity, n
-					.dashArray ? i.dashStyle = g(n.dashArray) ? n.dashArray.join(" ") : n.dashArray.replace(
-						/( *, *)/g, " ") : i.dashStyle = "", i.endcap = n.lineCap.replace("butt", "flat"), i
-					.joinstyle = n.lineJoin) : i && (o.removeChild(i), t._stroke = null), n.fill ? (e = e ||
-					(t._fill = cn("fill")), o.appendChild(e), e.color = n.fillColor || n.color, e.opacity =
-					n.fillOpacity) : e && (o.removeChild(e), t._fill = null)
-			},
-			_updateCircle: function(t) {
-				var i = t._point.round(),
-					e = Math.round(t._radius),
-					n = Math.round(t._radiusY || e);
-				this._setPath(t, t._empty() ? "M0 0" : "AL " + i.x + "," + i.y + " " + e + "," + n +
-					" 0,23592600")
-			},
-			_setPath: function(t, i) {
-				t._path.v = i
-			},
-			_bringToFront: function(t) {
-				hi(t._container)
-			},
-			_bringToBack: function(t) {
-				ui(t._container)
-			}
-		},
-		dn = Et ? cn : J,
-		pn = hn.extend({
-			getEvents: function() {
-				var t = hn.prototype.getEvents.call(this);
-				return t.zoomstart = this._onZoomStart, t
-			},
-			_initContainer: function() {
-				this._container = dn("svg"), this._container.setAttribute("pointer-events", "none"), this
-					._rootGroup = dn("g"), this._container.appendChild(this._rootGroup)
-			},
-			_destroyContainer: function() {
-				ri(this._container), Si(this._container), delete this._container, delete this._rootGroup,
-					delete this._svgSize
-			},
-			_onZoomStart: function() {
-				this._update()
-			},
-			_update: function() {
-				var t, i, e;
-				this._map._animatingZoom && this._bounds || (hn.prototype._update.call(this), i = (t = this
-					._bounds).getSize(), e = this._container, this._svgSize && this._svgSize.equals(
-					i) || (this._svgSize = i, e.setAttribute("width", i.x), e.setAttribute("height",
-					i.y)), vi(e, t.min), e.setAttribute("viewBox", [t.min.x, t.min.y, i.x, i.y]
-					.join(" ")), this.fire("update"))
-			},
-			_initPath: function(t) {
-				var i = t._path = dn("path");
-				t.options.className && ci(i, t.options.className), t.options.interactive && ci(i,
-					"leaflet-interactive"), this._updateStyle(t), this._layers[m(t)] = t
-			},
-			_addPath: function(t) {
-				this._rootGroup || this._initContainer(), this._rootGroup.appendChild(t._path), t
-					.addInteractiveTarget(t._path)
-			},
-			_removePath: function(t) {
-				ri(t._path), t.removeInteractiveTarget(t._path), delete this._layers[m(t)]
-			},
-			_updatePath: function(t) {
-				t._project(), t._update()
-			},
-			_updateStyle: function(t) {
-				var i = t._path,
-					e = t.options;
-				i && (e.stroke ? (i.setAttribute("stroke", e.color), i.setAttribute("stroke-opacity", e
-							.opacity), i.setAttribute("stroke-width", e.weight), i.setAttribute(
-							"stroke-linecap", e.lineCap), i.setAttribute("stroke-linejoin", e.lineJoin),
-						e.dashArray ? i.setAttribute("stroke-dasharray", e.dashArray) : i
-						.removeAttribute("stroke-dasharray"), e.dashOffset ? i.setAttribute(
-							"stroke-dashoffset", e.dashOffset) : i.removeAttribute("stroke-dashoffset")
-						) : i.setAttribute("stroke", "none"), e.fill ? (i.setAttribute("fill", e
-							.fillColor || e.color), i.setAttribute("fill-opacity", e.fillOpacity), i
-						.setAttribute("fill-rule", e.fillRule || "evenodd")) : i.setAttribute("fill",
-						"none"))
-			},
-			_updatePoly: function(t, i) {
-				this._setPath(t, $(t._parts, i))
-			},
-			_updateCircle: function(t) {
-				var i = t._point,
-					e = Math.max(Math.round(t._radius), 1),
-					n = "a" + e + "," + (Math.max(Math.round(t._radiusY), 1) || e) + " 0 1,0 ",
-					o = t._empty() ? "M0 0" : "M" + (i.x - e) + "," + i.y + n + 2 * e + ",0 " + n + 2 * -e +
-					",0 ";
-				this._setPath(t, o)
-			},
-			_setPath: function(t, i) {
-				t._path.setAttribute("d", i)
-			},
-			_bringToFront: function(t) {
-				hi(t._path)
-			},
-			_bringToBack: function(t) {
-				ui(t._path)
-			}
-		});
-
-	function mn(t) {
-		return Zt || Et ? new pn(t) : null
-	}
-	Et && pn.include(_n), Ki.include({
-		getRenderer: function(t) {
-			var i = (i = t.options.renderer || this._getPaneRenderer(t.options.pane) || this.options
-				.renderer || this._renderer) || (this._renderer = this._createRenderer());
-			return this.hasLayer(i) || this.addLayer(i), i
-		},
-		_getPaneRenderer: function(t) {
-			if ("overlayPane" === t || void 0 === t) return !1;
-			var i = this._paneRenderers[t];
-			return void 0 === i && (i = this._createRenderer({
-				pane: t
-			}), this._paneRenderers[t] = i), i
-		},
-		_createRenderer: function(t) {
-			return this.options.preferCanvas && ln(t) || mn(t)
-		}
-	});
-	var fn = Re.extend({
-		initialize: function(t, i) {
-			Re.prototype.initialize.call(this, this._boundsToLatLngs(t), i)
-		},
-		setBounds: function(t) {
-			return this.setLatLngs(this._boundsToLatLngs(t))
-		},
-		_boundsToLatLngs: function(t) {
-			return [(t = N(t)).getSouthWest(), t.getNorthWest(), t.getNorthEast(), t.getSouthEast()]
-		}
-	});
-	pn.create = dn, pn.pointsToPath = $, Ne.geometryToLayer = De, Ne.coordsToLatLng = We, Ne.coordsToLatLngs = He,
-		Ne.latLngToCoords = Fe, Ne.latLngsToCoords = Ue, Ne.getFeature = Ve, Ne.asFeature = qe, Ki.mergeOptions({
-			boxZoom: !0
-		});
-	var gn = ie.extend({
-		initialize: function(t) {
-			this._map = t, this._container = t._container, this._pane = t._panes.overlayPane, this
-				._resetStateTimeout = 0, t.on("unload", this._destroy, this)
-		},
-		addHooks: function() {
-			zi(this._container, "mousedown", this._onMouseDown, this)
-		},
-		removeHooks: function() {
-			Si(this._container, "mousedown", this._onMouseDown, this)
-		},
-		moved: function() {
-			return this._moved
-		},
-		_destroy: function() {
-			ri(this._pane), delete this._pane
-		},
-		_resetState: function() {
-			this._resetStateTimeout = 0, this._moved = !1
-		},
-		_clearDeferredResetState: function() {
-			0 !== this._resetStateTimeout && (clearTimeout(this._resetStateTimeout), this
-				._resetStateTimeout = 0)
-		},
-		_onMouseDown: function(t) {
-			if (!t.shiftKey || 1 !== t.which && 1 !== t.button) return !1;
-			this._clearDeferredResetState(), this._resetState(), Xt(), xi(), this._startPoint = this
-				._map.mouseEventToContainerPoint(t), zi(document, {
-					contextmenu: Ni,
-					mousemove: this._onMouseMove,
-					mouseup: this._onMouseUp,
-					keydown: this._onKeyDown
-				}, this)
-		},
-		_onMouseMove: function(t) {
-			this._moved || (this._moved = !0, this._box = si("div", "leaflet-zoom-box", this
-				._container), ci(this._container, "leaflet-crosshair"), this._map.fire(
-					"boxzoomstart")), this._point = this._map.mouseEventToContainerPoint(t);
-			var i = new I(this._point, this._startPoint),
-				e = i.getSize();
-			vi(this._box, i.min), this._box.style.width = e.x + "px", this._box.style.height = e.y +
-				"px"
-		},
-		_finish: function() {
-			this._moved && (ri(this._box), _i(this._container, "leaflet-crosshair")), Jt(), wi(), Si(
-				document, {
-					contextmenu: Ni,
-					mousemove: this._onMouseMove,
-					mouseup: this._onMouseUp,
-					keydown: this._onKeyDown
-				}, this)
-		},
-		_onMouseUp: function(t) {
-			var i;
-			1 !== t.which && 1 !== t.button || (this._finish(), this._moved && (this
-				._clearDeferredResetState(), this._resetStateTimeout = setTimeout(p(this
-					._resetState, this), 0), i = new R(this._map.containerPointToLatLng(this
-					._startPoint), this._map.containerPointToLatLng(this._point)), this._map
-				.fitBounds(i).fire("boxzoomend", {
-					boxZoomBounds: i
-				})))
-		},
-		_onKeyDown: function(t) {
-			27 === t.keyCode && this._finish()
-		}
-	});
-	Ki.addInitHook("addHandler", "boxZoom", gn), Ki.mergeOptions({
-		doubleClickZoom: !0
-	});
-	var vn = ie.extend({
-		addHooks: function() {
-			this._map.on("dblclick", this._onDoubleClick, this)
-		},
-		removeHooks: function() {
-			this._map.off("dblclick", this._onDoubleClick, this)
-		},
-		_onDoubleClick: function(t) {
-			var i = this._map,
-				e = i.getZoom(),
-				n = i.options.zoomDelta,
-				o = t.originalEvent.shiftKey ? e - n : e + n;
-			"center" === i.options.doubleClickZoom ? i.setZoom(o) : i.setZoomAround(t.containerPoint, o)
-		}
-	});
-	Ki.addInitHook("addHandler", "doubleClickZoom", vn), Ki.mergeOptions({
-		dragging: !0,
-		inertia: !st,
-		inertiaDeceleration: 3400,
-		inertiaMaxSpeed: 1 / 0,
-		easeLinearity: .2,
-		worldCopyJump: !1,
-		maxBoundsViscosity: 0
-	});
-	var yn = ie.extend({
-		addHooks: function() {
-			var t;
-			this._draggable || (t = this._map, this._draggable = new ae(t._mapPane, t._container), this
-					._draggable.on({
-						dragstart: this._onDragStart,
-						drag: this._onDrag,
-						dragend: this._onDragEnd
-					}, this), this._draggable.on("predrag", this._onPreDragLimit, this), t.options
-					.worldCopyJump && (this._draggable.on("predrag", this._onPreDragWrap, this), t.on(
-						"zoomend", this._onZoomEnd, this), t.whenReady(this._onZoomEnd, this))), ci(this
-					._map._container, "leaflet-grab leaflet-touch-drag"), this._draggable.enable(), this
-				._positions = [], this._times = []
-		},
-		removeHooks: function() {
-			_i(this._map._container, "leaflet-grab"), _i(this._map._container, "leaflet-touch-drag"),
-				this._draggable.disable()
-		},
-		moved: function() {
-			return this._draggable && this._draggable._moved
-		},
-		moving: function() {
-			return this._draggable && this._draggable._moving
-		},
-		_onDragStart: function() {
-			var t, i = this._map;
-			i._stop(), this._map.options.maxBounds && this._map.options.maxBoundsViscosity ? (t = N(this
-				._map.options.maxBounds), this._offsetLimit = O(this._map
-				.latLngToContainerPoint(t.getNorthWest()).multiplyBy(-1), this._map
-				.latLngToContainerPoint(t.getSouthEast()).multiplyBy(-1).add(this._map
-				.getSize())), this._viscosity = Math.min(1, Math.max(0, this._map.options
-				.maxBoundsViscosity))) : this._offsetLimit = null, i.fire("movestart").fire(
-				"dragstart"), i.options.inertia && (this._positions = [], this._times = [])
-		},
-		_onDrag: function(t) {
-			var i, e;
-			this._map.options.inertia && (i = this._lastTime = +new Date, e = this._lastPos = this
-				._draggable._absPos || this._draggable._newPos, this._positions.push(e), this._times
-				.push(i), this._prunePositions(i)), this._map.fire("move", t).fire("drag", t)
-		},
-		_prunePositions: function(t) {
-			for (; 1 < this._positions.length && 50 < t - this._times[0];) this._positions.shift(), this
-				._times.shift()
-		},
-		_onZoomEnd: function() {
-			var t = this._map.getSize().divideBy(2),
-				i = this._map.latLngToLayerPoint([0, 0]);
-			this._initialWorldOffset = i.subtract(t).x, this._worldWidth = this._map
-				.getPixelWorldBounds().getSize().x
-		},
-		_viscousLimit: function(t, i) {
-			return t - (t - i) * this._viscosity
-		},
-		_onPreDragLimit: function() {
-			var t, i;
-			this._viscosity && this._offsetLimit && (t = this._draggable._newPos.subtract(this
-					._draggable._startPos), i = this._offsetLimit, t.x < i.min.x && (t.x = this
-					._viscousLimit(t.x, i.min.x)), t.y < i.min.y && (t.y = this._viscousLimit(t.y, i
-					.min.y)), t.x > i.max.x && (t.x = this._viscousLimit(t.x, i.max.x)), t.y > i.max
-				.y && (t.y = this._viscousLimit(t.y, i.max.y)), this._draggable._newPos = this
-				._draggable._startPos.add(t))
-		},
-		_onPreDragWrap: function() {
-			var t = this._worldWidth,
-				i = Math.round(t / 2),
-				e = this._initialWorldOffset,
-				n = this._draggable._newPos.x,
-				o = (n - i + e) % t + i - e,
-				s = (n + i + e) % t - i - e,
-				r = Math.abs(o + e) < Math.abs(s + e) ? o : s;
-			this._draggable._absPos = this._draggable._newPos.clone(), this._draggable._newPos.x = r
-		},
-		_onDragEnd: function(t) {
-			var i, e, n, o, s, r, a, h, u, l = this._map,
-				c = l.options,
-				_ = !c.inertia || this._times.length < 2;
-			l.fire("dragend", t), _ ? l.fire("moveend") : (this._prunePositions(+new Date), i = this
-				._lastPos.subtract(this._positions[0]), e = (this._lastTime - this._times[0]) / 1e3,
-				n = c.easeLinearity, s = (o = i.multiplyBy(n / e)).distanceTo([0, 0]), r = Math.min(
-					c.inertiaMaxSpeed, s), a = o.multiplyBy(r / s), h = r / (c.inertiaDeceleration *
-					n), (u = a.multiplyBy(-h / 2).round()).x || u.y ? (u = l._limitOffset(u, l
-					.options.maxBounds), M(function() {
-					l.panBy(u, {
-						duration: h,
-						easeLinearity: n,
-						noMoveStart: !0,
-						animate: !0
-					})
-				})) : l.fire("moveend"))
-		}
-	});
-	Ki.addInitHook("addHandler", "dragging", yn), Ki.mergeOptions({
-		keyboard: !0,
-		keyboardPanDelta: 80
-	});
-	var xn = ie.extend({
-		keyCodes: {
-			left: [37],
-			right: [39],
-			down: [40],
-			up: [38],
-			zoomIn: [187, 107, 61, 171],
-			zoomOut: [189, 109, 54, 173]
-		},
-		initialize: function(t) {
-			this._map = t, this._setPanDelta(t.options.keyboardPanDelta), this._setZoomDelta(t.options
-				.zoomDelta)
-		},
-		addHooks: function() {
-			var t = this._map._container;
-			t.tabIndex <= 0 && (t.tabIndex = "0"), zi(t, {
-				focus: this._onFocus,
-				blur: this._onBlur,
-				mousedown: this._onMouseDown
-			}, this), this._map.on({
-				focus: this._addHooks,
-				blur: this._removeHooks
-			}, this)
-		},
-		removeHooks: function() {
-			this._removeHooks(), Si(this._map._container, {
-				focus: this._onFocus,
-				blur: this._onBlur,
-				mousedown: this._onMouseDown
-			}, this), this._map.off({
-				focus: this._addHooks,
-				blur: this._removeHooks
-			}, this)
-		},
-		_onMouseDown: function() {
-			var t, i, e, n;
-			this._focused || (t = document.body, i = document.documentElement, e = t.scrollTop || i
-				.scrollTop, n = t.scrollLeft || i.scrollLeft, this._map._container.focus(), window
-				.scrollTo(n, e))
-		},
-		_onFocus: function() {
-			this._focused = !0, this._map.fire("focus")
-		},
-		_onBlur: function() {
-			this._focused = !1, this._map.fire("blur")
-		},
-		_setPanDelta: function(t) {
-			for (var i = this._panKeys = {}, e = this.keyCodes, n = 0, o = e.left.length; n < o; n++) i[
-				e.left[n]] = [-1 * t, 0];
-			for (n = 0, o = e.right.length; n < o; n++) i[e.right[n]] = [t, 0];
-			for (n = 0, o = e.down.length; n < o; n++) i[e.down[n]] = [0, t];
-			for (n = 0, o = e.up.length; n < o; n++) i[e.up[n]] = [0, -1 * t]
-		},
-		_setZoomDelta: function(t) {
-			for (var i = this._zoomKeys = {}, e = this.keyCodes, n = 0, o = e.zoomIn.length; n < o; n++)
-				i[e.zoomIn[n]] = t;
-			for (n = 0, o = e.zoomOut.length; n < o; n++) i[e.zoomOut[n]] = -t
-		},
-		_addHooks: function() {
-			zi(document, "keydown", this._onKeyDown, this)
-		},
-		_removeHooks: function() {
-			Si(document, "keydown", this._onKeyDown, this)
-		},
-		_onKeyDown: function(t) {
-			if (!(t.altKey || t.ctrlKey || t.metaKey)) {
-				var i, e = t.keyCode,
-					n = this._map;
-				if (e in this._panKeys) n._panAnim && n._panAnim._inProgress || (i = this._panKeys[e], t
-					.shiftKey && (i = A(i).multiplyBy(3)), n.panBy(i), n.options.maxBounds && n
-					.panInsideBounds(n.options.maxBounds));
-				else if (e in this._zoomKeys) n.setZoom(n.getZoom() + (t.shiftKey ? 3 : 1) * this
-					._zoomKeys[e]);
-				else {
-					if (27 !== e || !n._popup || !n._popup.options.closeOnEscapeKey) return;
-					n.closePopup()
-				}
-				Ni(t)
-			}
-		}
-	});
-	Ki.addInitHook("addHandler", "keyboard", xn), Ki.mergeOptions({
-		scrollWheelZoom: !0,
-		wheelDebounceTime: 40,
-		wheelPxPerZoomLevel: 60
-	});
-	var wn = ie.extend({
-		addHooks: function() {
-			zi(this._map._container, "wheel", this._onWheelScroll, this), this._delta = 0
-		},
-		removeHooks: function() {
-			Si(this._map._container, "wheel", this._onWheelScroll, this)
-		},
-		_onWheelScroll: function(t) {
-			var i = Wi(t),
-				e = this._map.options.wheelDebounceTime;
-			this._delta += i, this._lastMousePos = this._map.mouseEventToContainerPoint(t), this
-				._startTime || (this._startTime = +new Date);
-			var n = Math.max(e - (new Date - this._startTime), 0);
-			clearTimeout(this._timer), this._timer = setTimeout(p(this._performZoom, this), n), Ni(t)
-		},
-		_performZoom: function() {
-			var t = this._map,
-				i = t.getZoom(),
-				e = this._map.options.zoomSnap || 0;
-			t._stop();
-			var n = this._delta / (4 * this._map.options.wheelPxPerZoomLevel),
-				o = 4 * Math.log(2 / (1 + Math.exp(-Math.abs(n)))) / Math.LN2,
-				s = e ? Math.ceil(o / e) * e : o,
-				r = t._limitZoom(i + (0 < this._delta ? s : -s)) - i;
-			this._delta = 0, this._startTime = null, r && ("center" === t.options.scrollWheelZoom ? t
-				.setZoom(i + r) : t.setZoomAround(this._lastMousePos, i + r))
-		}
-	});
-	Ki.addInitHook("addHandler", "scrollWheelZoom", wn), Ki.mergeOptions({
-		tap: !0,
-		tapTolerance: 15
-	});
-	var Pn = ie.extend({
-		addHooks: function() {
-			zi(this._map._container, "touchstart", this._onDown, this)
-		},
-		removeHooks: function() {
-			Si(this._map._container, "touchstart", this._onDown, this)
-		},
-		_onDown: function(t) {
-			if (t.touches) {
-				if (Ri(t), this._fireClick = !0, 1 < t.touches.length) return this._fireClick = !1,
-					void clearTimeout(this._holdTimeout);
-				var i = t.touches[0],
-					e = i.target;
-				this._startPos = this._newPos = new k(i.clientX, i.clientY), e.tagName && "a" === e
-					.tagName.toLowerCase() && ci(e, "leaflet-active"), this._holdTimeout = setTimeout(p(
-						function() {
-							this._isTapValid() && (this._fireClick = !1, this._onUp(), this
-								._simulateEvent("contextmenu", i))
-						}, this), 1e3), this._simulateEvent("mousedown", i), zi(document, {
-						touchmove: this._onMove,
-						touchend: this._onUp
-					}, this)
-			}
-		},
-		_onUp: function(t) {
-			var i, e;
-			clearTimeout(this._holdTimeout), Si(document, {
-				touchmove: this._onMove,
-				touchend: this._onUp
-			}, this), this._fireClick && t && t.changedTouches && ((e = (i = t.changedTouches[0])
-					.target) && e.tagName && "a" === e.tagName.toLowerCase() && _i(e,
-					"leaflet-active"), this._simulateEvent("mouseup", i), this._isTapValid() && this
-				._simulateEvent("click", i))
-		},
-		_isTapValid: function() {
-			return this._newPos.distanceTo(this._startPos) <= this._map.options.tapTolerance
-		},
-		_onMove: function(t) {
-			var i = t.touches[0];
-			this._newPos = new k(i.clientX, i.clientY), this._simulateEvent("mousemove", i)
-		},
-		_simulateEvent: function(t, i) {
-			var e = document.createEvent("MouseEvents");
-			e._simulated = !0, i.target._simulatedClick = !0, e.initMouseEvent(t, !0, !0, window, 1, i
-					.screenX, i.screenY, i.clientX, i.clientY, !1, !1, !1, !1, 0, null), i.target
-				.dispatchEvent(e)
-		}
-	});
-	!bt || Lt && !ct || Ki.addInitHook("addHandler", "tap", Pn), Ki.mergeOptions({
-		touchZoom: bt && !st,
-		bounceAtZoomLimits: !0
-	});
-	var Ln = ie.extend({
-		addHooks: function() {
-			ci(this._map._container, "leaflet-touch-zoom"), zi(this._map._container, "touchstart", this
-				._onTouchStart, this)
-		},
-		removeHooks: function() {
-			_i(this._map._container, "leaflet-touch-zoom"), Si(this._map._container, "touchstart", this
-				._onTouchStart, this)
-		},
-		_onTouchStart: function(t) {
-			var i, e, n = this._map;
-			!t.touches || 2 !== t.touches.length || n._animatingZoom || this._zooming || (i = n
-				.mouseEventToContainerPoint(t.touches[0]), e = n.mouseEventToContainerPoint(t
-					.touches[1]), this._centerPoint = n.getSize()._divideBy(2), this._startLatLng =
-				n.containerPointToLatLng(this._centerPoint), "center" !== n.options.touchZoom && (
-					this._pinchStartLatLng = n.containerPointToLatLng(i.add(e)._divideBy(2))), this
-				._startDist = i.distanceTo(e), this._startZoom = n.getZoom(), this._moved = !1, this
-				._zooming = !0, n._stop(), zi(document, "touchmove", this._onTouchMove, this), zi(
-					document, "touchend", this._onTouchEnd, this), Ri(t))
-		},
-		_onTouchMove: function(t) {
-			if (t.touches && 2 === t.touches.length && this._zooming) {
-				var i = this._map,
-					e = i.mouseEventToContainerPoint(t.touches[0]),
-					n = i.mouseEventToContainerPoint(t.touches[1]),
-					o = e.distanceTo(n) / this._startDist;
-				if (this._zoom = i.getScaleZoom(o, this._startZoom), !i.options.bounceAtZoomLimits && (
-						this._zoom < i.getMinZoom() && o < 1 || this._zoom > i.getMaxZoom() && 1 < o) &&
-					(this._zoom = i._limitZoom(this._zoom)), "center" === i.options.touchZoom) {
-					if (this._center = this._startLatLng, 1 == o) return
-				} else {
-					var s = e._add(n)._divideBy(2)._subtract(this._centerPoint);
-					if (1 == o && 0 === s.x && 0 === s.y) return;
-					this._center = i.unproject(i.project(this._pinchStartLatLng, this._zoom).subtract(
-						s), this._zoom)
-				}
-				this._moved || (i._moveStart(!0, !1), this._moved = !0), z(this._animRequest);
-				var r = p(i._move, i, this._center, this._zoom, {
-					pinch: !0,
-					round: !1
-				});
-				this._animRequest = M(r, this, !0), Ri(t)
-			}
-		},
-		_onTouchEnd: function() {
-			this._moved && this._zooming ? (this._zooming = !1, z(this._animRequest), Si(document,
-						"touchmove", this._onTouchMove, this), Si(document, "touchend", this
-						._onTouchEnd, this), this._map.options.zoomAnimation ? this._map._animateZoom(
-						this._center, this._map._limitZoom(this._zoom), !0, this._map.options.zoomSnap
-						) : this._map._resetView(this._center, this._map._limitZoom(this._zoom))) : this
-				._zooming = !1
-		}
-	});
-	Ki.addInitHook("addHandler", "touchZoom", Ln), Ki.BoxZoom = gn, Ki.DoubleClickZoom = vn, Ki.Drag = yn, Ki
-		.Keyboard = xn, Ki.ScrollWheelZoom = wn, Ki.Tap = Pn, Ki.TouchZoom = Ln, t.version = "1.7.1", t.Control =
-		Xi, t.control = Yi, t.Browser = Bt, t.Evented = E, t.Mixin = ne, t.Util = C, t.Class = S, t.Handler = ie, t
-		.extend = h, t.bind = p, t.stamp = m, t.setOptions = c, t.DomEvent = qi, t.DomUtil = Mi, t.PosAnimation =
-		Gi, t.Draggable = ae, t.LineUtil = fe, t.PolyUtil = ye, t.Point = k, t.point = A, t.Bounds = I, t.bounds =
-		O, t.Transformation = q, t.transformation = G, t.Projection = Pe, t.LatLng = D, t.latLng = j, t
-		.LatLngBounds = R, t.latLngBounds = N, t.CRS = H, t.GeoJSON = Ne, t.geoJSON = Ke, t.geoJson = Ye, t.Layer =
-		Me, t.LayerGroup = ze, t.layerGroup = function(t, i) {
-			return new ze(t, i)
-		}, t.FeatureGroup = Ce, t.featureGroup = function(t, i) {
-			return new Ce(t, i)
-		}, t.ImageOverlay = Xe, t.imageOverlay = function(t, i, e) {
-			return new Xe(t, i, e)
-		}, t.VideoOverlay = Je, t.videoOverlay = function(t, i, e) {
-			return new Je(t, i, e)
-		}, t.SVGOverlay = $e, t.svgOverlay = function(t, i, e) {
-			return new $e(t, i, e)
-		}, t.DivOverlay = Qe, t.Popup = tn, t.popup = function(t, i) {
-			return new tn(t, i)
-		}, t.Tooltip = en, t.tooltip = function(t, i) {
-			return new en(t, i)
-		}, t.Icon = Se, t.icon = function(t) {
-			return new Se(t)
-		}, t.DivIcon = nn, t.divIcon = function(t) {
-			return new nn(t)
-		}, t.Marker = ke, t.marker = function(t, i) {
-			return new ke(t, i)
-		}, t.TileLayer = sn, t.tileLayer = rn, t.GridLayer = on, t.gridLayer = function(t) {
-			return new on(t)
-		}, t.SVG = pn, t.svg = mn, t.Renderer = hn, t.Canvas = un, t.canvas = ln, t.Path = Be, t.CircleMarker = Ae,
-		t.circleMarker = function(t, i) {
-			return new Ae(t, i)
-		}, t.Circle = Ie, t.circle = function(t, i, e) {
-			return new Ie(t, i, e)
-		}, t.Polyline = Oe, t.polyline = function(t, i) {
-			return new Oe(t, i)
-		}, t.Polygon = Re, t.polygon = function(t, i) {
-			return new Re(t, i)
-		}, t.Rectangle = fn, t.rectangle = function(t, i) {
-			return new fn(t, i)
-		}, t.Map = Ki, t.map = function(t, i) {
-			return new Ki(t, i)
-		};
-	var bn = window.L;
-	t.noConflict = function() {
-		return window.L = bn, this
-		
-	}, window.L = t
-});
-//# sourceMappingURL=leaflet.js.map
diff --git a/xcxMapWzzzz/lid/leaflet.markercluster-src.js b/xcxMapWzzzz/lid/leaflet.markercluster-src.js
deleted file mode 100644
index 67baa89..0000000
--- a/xcxMapWzzzz/lid/leaflet.markercluster-src.js
+++ /dev/null
@@ -1,2707 +0,0 @@
-/*
- * Leaflet.markercluster 1.5.0+master.499f71c,
- * Provides Beautiful Animated Marker Clustering functionality for Leaflet, a JS library for interactive maps.
- * https://github.com/Leaflet/Leaflet.markercluster
- * (c) 2012-2017, Dave Leaver, smartrak
- */
-(function (global, factory) {
-	typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
-	typeof define === 'function' && define.amd ? define(['exports'], factory) :
-	(global = global || self, factory((global.Leaflet = global.Leaflet || {}, global.Leaflet.markercluster = {})));
-}(this, function (exports) { 'use strict';
-
-	/*
-	 * L.MarkerClusterGroup extends L.FeatureGroup by clustering the markers contained within
-	 */
-
-	var MarkerClusterGroup = L.MarkerClusterGroup = L.FeatureGroup.extend({
-
-		options: {
-			maxClusterRadius: 80, //A cluster will cover at most this many pixels from its center
-			iconCreateFunction: null,
-			clusterPane: L.Marker.prototype.options.pane,
-
-			spiderfyOnMaxZoom: true,
-			showCoverageOnHover: true,
-			zoomToBoundsOnClick: true,
-			singleMarkerMode: false,
-
-			disableClusteringAtZoom: null,
-
-			// Setting this to false prevents the removal of any clusters outside of the viewpoint, which
-			// is the default behaviour for performance reasons.
-			removeOutsideVisibleBounds: true,
-
-			// Set to false to disable all animations (zoom and spiderfy).
-			// If false, option animateAddingMarkers below has no effect.
-			// If L.DomUtil.TRANSITION is falsy, this option has no effect.
-			animate: true,
-
-			//Whether to animate adding markers after adding the MarkerClusterGroup to the map
-			// If you are adding individual markers set to true, if adding bulk markers leave false for massive performance gains.
-			animateAddingMarkers: false,
-
-			// Make it possible to provide custom function to calculate spiderfy shape positions
-			spiderfyShapePositions: null,
-
-			//Increase to increase the distance away that spiderfied markers appear from the center
-			spiderfyDistanceMultiplier: 1,
-
-			// Make it possible to specify a polyline options on a spider leg
-			spiderLegPolylineOptions: { weight: 1.5, color: '#222', opacity: 0.5 },
-
-			// When bulk adding layers, adds markers in chunks. Means addLayers may not add all the layers in the call, others will be loaded during setTimeouts
-			chunkedLoading: false,
-			chunkInterval: 200, // process markers for a maximum of ~ n milliseconds (then trigger the chunkProgress callback)
-			chunkDelay: 50, // at the end of each interval, give n milliseconds back to system/browser
-			chunkProgress: null, // progress callback: function(processed, total, elapsed) (e.g. for a progress indicator)
-
-			//Options to pass to the L.Polygon constructor
-			polygonOptions: {}
-		},
-
-		initialize: function (options) {
-			L.Util.setOptions(this, options);
-			if (!this.options.iconCreateFunction) {
-				this.options.iconCreateFunction = this._defaultIconCreateFunction;
-			}
-
-			this._featureGroup = L.featureGroup();
-			this._featureGroup.addEventParent(this);
-
-			this._nonPointGroup = L.featureGroup();
-			this._nonPointGroup.addEventParent(this);
-
-			this._inZoomAnimation = 0;
-			this._needsClustering = [];
-			this._needsRemoving = []; //Markers removed while we aren't on the map need to be kept track of
-			//The bounds of the currently shown area (from _getExpandedVisibleBounds) Updated on zoom/move
-			this._currentShownBounds = null;
-
-			this._queue = [];
-
-			this._childMarkerEventHandlers = {
-				'dragstart': this._childMarkerDragStart,
-				'move': this._childMarkerMoved,
-				'dragend': this._childMarkerDragEnd,
-			};
-
-			// Hook the appropriate animation methods.
-			var animate = L.DomUtil.TRANSITION && this.options.animate;
-			L.extend(this, animate ? this._withAnimation : this._noAnimation);
-			// Remember which MarkerCluster class to instantiate (animated or not).
-			this._markerCluster = animate ? L.MarkerCluster : L.MarkerClusterNonAnimated;
-		},
-
-		addLayer: function (layer) {
-
-			if (layer instanceof L.LayerGroup) {
-				return this.addLayers([layer]);
-			}
-
-			//Don't cluster non point data
-			if (!layer.getLatLng) {
-				this._nonPointGroup.addLayer(layer);
-				this.fire('layeradd', { layer: layer });
-				return this;
-			}
-
-			if (!this._map) {
-				this._needsClustering.push(layer);
-				this.fire('layeradd', { layer: layer });
-				return this;
-			}
-
-			if (this.hasLayer(layer)) {
-				return this;
-			}
-
-
-			//If we have already clustered we'll need to add this one to a cluster
-
-			if (this._unspiderfy) {
-				this._unspiderfy();
-			}
-
-			this._addLayer(layer, this._maxZoom);
-			this.fire('layeradd', { layer: layer });
-
-			// Refresh bounds and weighted positions.
-			this._topClusterLevel._recalculateBounds();
-
-			this._refreshClustersIcons();
-
-			//Work out what is visible
-			var visibleLayer = layer,
-			    currentZoom = this._zoom;
-			if (layer.__parent) {
-				while (visibleLayer.__parent._zoom >= currentZoom) {
-					visibleLayer = visibleLayer.__parent;
-				}
-			}
-
-			if (this._currentShownBounds.contains(visibleLayer.getLatLng())) {
-				if (this.options.animateAddingMarkers) {
-					this._animationAddLayer(layer, visibleLayer);
-				} else {
-					this._animationAddLayerNonAnimated(layer, visibleLayer);
-				}
-			}
-			return this;
-		},
-
-		removeLayer: function (layer) {
-
-			if (layer instanceof L.LayerGroup) {
-				return this.removeLayers([layer]);
-			}
-
-			//Non point layers
-			if (!layer.getLatLng) {
-				this._nonPointGroup.removeLayer(layer);
-				this.fire('layerremove', { layer: layer });
-				return this;
-			}
-
-			if (!this._map) {
-				if (!this._arraySplice(this._needsClustering, layer) && this.hasLayer(layer)) {
-					this._needsRemoving.push({ layer: layer, latlng: layer._latlng });
-				}
-				this.fire('layerremove', { layer: layer });
-				return this;
-			}
-
-			if (!layer.__parent) {
-				return this;
-			}
-
-			if (this._unspiderfy) {
-				this._unspiderfy();
-				this._unspiderfyLayer(layer);
-			}
-
-			//Remove the marker from clusters
-			this._removeLayer(layer, true);
-			this.fire('layerremove', { layer: layer });
-
-			// Refresh bounds and weighted positions.
-			this._topClusterLevel._recalculateBounds();
-
-			this._refreshClustersIcons();
-
-			layer.off(this._childMarkerEventHandlers, this);
-
-			if (this._featureGroup.hasLayer(layer)) {
-				this._featureGroup.removeLayer(layer);
-				if (layer.clusterShow) {
-					layer.clusterShow();
-				}
-			}
-
-			return this;
-		},
-
-		//Takes an array of markers and adds them in bulk
-		addLayers: function (layersArray, skipLayerAddEvent) {
-			if (!L.Util.isArray(layersArray)) {
-				return this.addLayer(layersArray);
-			}
-
-			var fg = this._featureGroup,
-			    npg = this._nonPointGroup,
-			    chunked = this.options.chunkedLoading,
-			    chunkInterval = this.options.chunkInterval,
-			    chunkProgress = this.options.chunkProgress,
-			    l = layersArray.length,
-			    offset = 0,
-			    originalArray = true,
-			    m;
-
-			if (this._map) {
-				var started = (new Date()).getTime();
-				var process = L.bind(function () {
-					var start = (new Date()).getTime();
-
-					// Make sure to unspiderfy before starting to add some layers
-					if (this._map && this._unspiderfy) {
-						this._unspiderfy();
-					}
-
-					for (; offset < l; offset++) {
-						if (chunked && offset % 200 === 0) {
-							// every couple hundred markers, instrument the time elapsed since processing started:
-							var elapsed = (new Date()).getTime() - start;
-							if (elapsed > chunkInterval) {
-								break; // been working too hard, time to take a break :-)
-							}
-						}
-
-						m = layersArray[offset];
-
-						// Group of layers, append children to layersArray and skip.
-						// Side effects:
-						// - Total increases, so chunkProgress ratio jumps backward.
-						// - Groups are not included in this group, only their non-group child layers (hasLayer).
-						// Changing array length while looping does not affect performance in current browsers:
-						// http://jsperf.com/for-loop-changing-length/6
-						if (m instanceof L.LayerGroup) {
-							if (originalArray) {
-								layersArray = layersArray.slice();
-								originalArray = false;
-							}
-							this._extractNonGroupLayers(m, layersArray);
-							l = layersArray.length;
-							continue;
-						}
-
-						//Not point data, can't be clustered
-						if (!m.getLatLng) {
-							npg.addLayer(m);
-							if (!skipLayerAddEvent) {
-								this.fire('layeradd', { layer: m });
-							}
-							continue;
-						}
-
-						if (this.hasLayer(m)) {
-							continue;
-						}
-
-						this._addLayer(m, this._maxZoom);
-						if (!skipLayerAddEvent) {
-							this.fire('layeradd', { layer: m });
-						}
-
-						//If we just made a cluster of size 2 then we need to remove the other marker from the map (if it is) or we never will
-						if (m.__parent) {
-							if (m.__parent.getChildCount() === 2) {
-								var markers = m.__parent.getAllChildMarkers(),
-								    otherMarker = markers[0] === m ? markers[1] : markers[0];
-								fg.removeLayer(otherMarker);
-							}
-						}
-					}
-
-					if (chunkProgress) {
-						// report progress and time elapsed:
-						chunkProgress(offset, l, (new Date()).getTime() - started);
-					}
-
-					// Completed processing all markers.
-					if (offset === l) {
-
-						// Refresh bounds and weighted positions.
-						this._topClusterLevel._recalculateBounds();
-
-						this._refreshClustersIcons();
-
-						this._topClusterLevel._recursivelyAddChildrenToMap(null, this._zoom, this._currentShownBounds);
-					} else {
-						setTimeout(process, this.options.chunkDelay);
-					}
-				}, this);
-
-				process();
-			} else {
-				var needsClustering = this._needsClustering;
-
-				for (; offset < l; offset++) {
-					m = layersArray[offset];
-
-					// Group of layers, append children to layersArray and skip.
-					if (m instanceof L.LayerGroup) {
-						if (originalArray) {
-							layersArray = layersArray.slice();
-							originalArray = false;
-						}
-						this._extractNonGroupLayers(m, layersArray);
-						l = layersArray.length;
-						continue;
-					}
-
-					//Not point data, can't be clustered
-					if (!m.getLatLng) {
-						npg.addLayer(m);
-						continue;
-					}
-
-					if (this.hasLayer(m)) {
-						continue;
-					}
-
-					needsClustering.push(m);
-				}
-			}
-			return this;
-		},
-
-		//Takes an array of markers and removes them in bulk
-		removeLayers: function (layersArray) {
-			var i, m,
-			    l = layersArray.length,
-			    fg = this._featureGroup,
-			    npg = this._nonPointGroup,
-			    originalArray = true;
-
-			if (!this._map) {
-				for (i = 0; i < l; i++) {
-					m = layersArray[i];
-
-					// Group of layers, append children to layersArray and skip.
-					if (m instanceof L.LayerGroup) {
-						if (originalArray) {
-							layersArray = layersArray.slice();
-							originalArray = false;
-						}
-						this._extractNonGroupLayers(m, layersArray);
-						l = layersArray.length;
-						continue;
-					}
-
-					this._arraySplice(this._needsClustering, m);
-					npg.removeLayer(m);
-					if (this.hasLayer(m)) {
-						this._needsRemoving.push({ layer: m, latlng: m._latlng });
-					}
-					this.fire('layerremove', { layer: m });
-				}
-				return this;
-			}
-
-			if (this._unspiderfy) {
-				this._unspiderfy();
-
-				// Work on a copy of the array, so that next loop is not affected.
-				var layersArray2 = layersArray.slice(),
-				    l2 = l;
-				for (i = 0; i < l2; i++) {
-					m = layersArray2[i];
-
-					// Group of layers, append children to layersArray and skip.
-					if (m instanceof L.LayerGroup) {
-						this._extractNonGroupLayers(m, layersArray2);
-						l2 = layersArray2.length;
-						continue;
-					}
-
-					this._unspiderfyLayer(m);
-				}
-			}
-
-			for (i = 0; i < l; i++) {
-				m = layersArray[i];
-
-				// Group of layers, append children to layersArray and skip.
-				if (m instanceof L.LayerGroup) {
-					if (originalArray) {
-						layersArray = layersArray.slice();
-						originalArray = false;
-					}
-					this._extractNonGroupLayers(m, layersArray);
-					l = layersArray.length;
-					continue;
-				}
-
-				if (!m.__parent) {
-					npg.removeLayer(m);
-					this.fire('layerremove', { layer: m });
-					continue;
-				}
-
-				this._removeLayer(m, true, true);
-				this.fire('layerremove', { layer: m });
-
-				if (fg.hasLayer(m)) {
-					fg.removeLayer(m);
-					if (m.clusterShow) {
-						m.clusterShow();
-					}
-				}
-			}
-
-			// Refresh bounds and weighted positions.
-			this._topClusterLevel._recalculateBounds();
-
-			this._refreshClustersIcons();
-
-			//Fix up the clusters and markers on the map
-			this._topClusterLevel._recursivelyAddChildrenToMap(null, this._zoom, this._currentShownBounds);
-
-			return this;
-		},
-
-		//Removes all layers from the MarkerClusterGroup
-		clearLayers: function () {
-			//Need our own special implementation as the LayerGroup one doesn't work for us
-
-			//If we aren't on the map (yet), blow away the markers we know of
-			if (!this._map) {
-				this._needsClustering = [];
-				this._needsRemoving = [];
-				delete this._gridClusters;
-				delete this._gridUnclustered;
-			}
-
-			if (this._noanimationUnspiderfy) {
-				this._noanimationUnspiderfy();
-			}
-
-			//Remove all the visible layers
-			this._featureGroup.clearLayers();
-			this._nonPointGroup.clearLayers();
-
-			this.eachLayer(function (marker) {
-				marker.off(this._childMarkerEventHandlers, this);
-				delete marker.__parent;
-			}, this);
-
-			if (this._map) {
-				//Reset _topClusterLevel and the DistanceGrids
-				this._generateInitialClusters();
-			}
-
-			return this;
-		},
-
-		//Override FeatureGroup.getBounds as it doesn't work
-		getBounds: function () {
-			var bounds = new L.LatLngBounds();
-
-			if (this._topClusterLevel) {
-				bounds.extend(this._topClusterLevel._bounds);
-			}
-
-			for (var i = this._needsClustering.length - 1; i >= 0; i--) {
-				bounds.extend(this._needsClustering[i].getLatLng());
-			}
-
-			bounds.extend(this._nonPointGroup.getBounds());
-
-			return bounds;
-		},
-
-		//Overrides LayerGroup.eachLayer
-		eachLayer: function (method, context) {
-			var markers = this._needsClustering.slice(),
-				needsRemoving = this._needsRemoving,
-				thisNeedsRemoving, i, j;
-
-			if (this._topClusterLevel) {
-				this._topClusterLevel.getAllChildMarkers(markers);
-			}
-
-			for (i = markers.length - 1; i >= 0; i--) {
-				thisNeedsRemoving = true;
-
-				for (j = needsRemoving.length - 1; j >= 0; j--) {
-					if (needsRemoving[j].layer === markers[i]) {
-						thisNeedsRemoving = false;
-						break;
-					}
-				}
-
-				if (thisNeedsRemoving) {
-					method.call(context, markers[i]);
-				}
-			}
-
-			this._nonPointGroup.eachLayer(method, context);
-		},
-
-		//Overrides LayerGroup.getLayers
-		getLayers: function () {
-			var layers = [];
-			this.eachLayer(function (l) {
-				layers.push(l);
-			});
-			return layers;
-		},
-
-		//Overrides LayerGroup.getLayer, WARNING: Really bad performance
-		getLayer: function (id) {
-			var result = null;
-
-			id = parseInt(id, 10);
-
-			this.eachLayer(function (l) {
-				if (L.stamp(l) === id) {
-					result = l;
-				}
-			});
-
-			return result;
-		},
-
-		//Returns true if the given layer is in this MarkerClusterGroup
-		hasLayer: function (layer) {
-			if (!layer) {
-				return false;
-			}
-
-			var i, anArray = this._needsClustering;
-
-			for (i = anArray.length - 1; i >= 0; i--) {
-				if (anArray[i] === layer) {
-					return true;
-				}
-			}
-
-			anArray = this._needsRemoving;
-			for (i = anArray.length - 1; i >= 0; i--) {
-				if (anArray[i].layer === layer) {
-					return false;
-				}
-			}
-
-			return !!(layer.__parent && layer.__parent._group === this) || this._nonPointGroup.hasLayer(layer);
-		},
-
-		//Zoom down to show the given layer (spiderfying if necessary) then calls the callback
-		zoomToShowLayer: function (layer, callback) {
-
-			var map = this._map;
-
-			if (typeof callback !== 'function') {
-				callback = function () {};
-			}
-
-			var showMarker = function () {
-				// Assumes that map.hasLayer checks for direct appearance on map, not recursively calling
-				// hasLayer on Layer Groups that are on map (typically not calling this MarkerClusterGroup.hasLayer, which would always return true)
-				if ((map.hasLayer(layer) || map.hasLayer(layer.__parent)) && !this._inZoomAnimation) {
-					this._map.off('moveend', showMarker, this);
-					this.off('animationend', showMarker, this);
-
-					if (map.hasLayer(layer)) {
-						callback();
-					} else if (layer.__parent._icon) {
-						this.once('spiderfied', callback, this);
-						layer.__parent.spiderfy();
-					}
-				}
-			};
-
-			if (layer._icon && this._map.getBounds().contains(layer.getLatLng())) {
-				//Layer is visible ond on screen, immediate return
-				callback();
-			} else if (layer.__parent._zoom < Math.round(this._map._zoom)) {
-				//Layer should be visible at this zoom level. It must not be on screen so just pan over to it
-				this._map.on('moveend', showMarker, this);
-				this._map.panTo(layer.getLatLng());
-			} else {
-				this._map.on('moveend', showMarker, this);
-				this.on('animationend', showMarker, this);
-				layer.__parent.zoomToBounds();
-			}
-		},
-
-		//Overrides FeatureGroup.onAdd
-		onAdd: function (map) {
-			this._map = map;
-			var i, l, layer;
-
-			if (!isFinite(this._map.getMaxZoom())) {
-				throw "Map has no maxZoom specified";
-			}
-
-			this._featureGroup.addTo(map);
-			this._nonPointGroup.addTo(map);
-
-			if (!this._gridClusters) {
-				this._generateInitialClusters();
-			}
-
-			this._maxLat = map.options.crs.projection.MAX_LATITUDE;
-
-			//Restore all the positions as they are in the MCG before removing them
-			for (i = 0, l = this._needsRemoving.length; i < l; i++) {
-				layer = this._needsRemoving[i];
-				layer.newlatlng = layer.layer._latlng;
-				layer.layer._latlng = layer.latlng;
-			}
-			//Remove them, then restore their new positions
-			for (i = 0, l = this._needsRemoving.length; i < l; i++) {
-				layer = this._needsRemoving[i];
-				this._removeLayer(layer.layer, true);
-				layer.layer._latlng = layer.newlatlng;
-			}
-			this._needsRemoving = [];
-
-			//Remember the current zoom level and bounds
-			this._zoom = Math.round(this._map._zoom);
-			this._currentShownBounds = this._getExpandedVisibleBounds();
-
-			this._map.on('zoomend', this._zoomEnd, this);
-			this._map.on('moveend', this._moveEnd, this);
-
-			if (this._spiderfierOnAdd) { //TODO FIXME: Not sure how to have spiderfier add something on here nicely
-				this._spiderfierOnAdd();
-			}
-
-			this._bindEvents();
-
-			//Actually add our markers to the map:
-			l = this._needsClustering;
-			this._needsClustering = [];
-			this.addLayers(l, true);
-		},
-
-		//Overrides FeatureGroup.onRemove
-		onRemove: function (map) {
-			map.off('zoomend', this._zoomEnd, this);
-			map.off('moveend', this._moveEnd, this);
-
-			this._unbindEvents();
-
-			//In case we are in a cluster animation
-			this._map._mapPane.className = this._map._mapPane.className.replace(' leaflet-cluster-anim', '');
-
-			if (this._spiderfierOnRemove) { //TODO FIXME: Not sure how to have spiderfier add something on here nicely
-				this._spiderfierOnRemove();
-			}
-
-			delete this._maxLat;
-
-			//Clean up all the layers we added to the map
-			this._hideCoverage();
-			this._featureGroup.remove();
-			this._nonPointGroup.remove();
-
-			this._featureGroup.clearLayers();
-
-			this._map = null;
-		},
-
-		getVisibleParent: function (marker) {
-			var vMarker = marker;
-			while (vMarker && !vMarker._icon) {
-				vMarker = vMarker.__parent;
-			}
-			return vMarker || null;
-		},
-
-		//Remove the given object from the given array
-		_arraySplice: function (anArray, obj) {
-			for (var i = anArray.length - 1; i >= 0; i--) {
-				if (anArray[i] === obj) {
-					anArray.splice(i, 1);
-					return true;
-				}
-			}
-		},
-
-		/**
-		 * Removes a marker from all _gridUnclustered zoom levels, starting at the supplied zoom.
-		 * @param marker to be removed from _gridUnclustered.
-		 * @param z integer bottom start zoom level (included)
-		 * @private
-		 */
-		_removeFromGridUnclustered: function (marker, z) {
-			var map = this._map,
-			    gridUnclustered = this._gridUnclustered,
-				minZoom = Math.floor(this._map.getMinZoom());
-
-			for (; z >= minZoom; z--) {
-				if (!gridUnclustered[z].removeObject(marker, map.project(marker.getLatLng(), z))) {
-					break;
-				}
-			}
-		},
-
-		_childMarkerDragStart: function (e) {
-			e.target.__dragStart = e.target._latlng;
-		},
-
-		_childMarkerMoved: function (e) {
-			if (!this._ignoreMove && !e.target.__dragStart) {
-				var isPopupOpen = e.target._popup && e.target._popup.isOpen();
-
-				this._moveChild(e.target, e.oldLatLng, e.latlng);
-
-				if (isPopupOpen) {
-					e.target.openPopup();
-				}
-			}
-		},
-
-		_moveChild: function (layer, from, to) {
-			layer._latlng = from;
-			this.removeLayer(layer);
-
-			layer._latlng = to;
-			this.addLayer(layer);
-		},
-
-		_childMarkerDragEnd: function (e) {
-			var dragStart = e.target.__dragStart;
-			delete e.target.__dragStart;
-			if (dragStart) {
-				this._moveChild(e.target, dragStart, e.target._latlng);
-			}		
-		},
-
-
-		//Internal function for removing a marker from everything.
-		//dontUpdateMap: set to true if you will handle updating the map manually (for bulk functions)
-		_removeLayer: function (marker, removeFromDistanceGrid, dontUpdateMap) {
-			var gridClusters = this._gridClusters,
-				gridUnclustered = this._gridUnclustered,
-				fg = this._featureGroup,
-				map = this._map,
-				minZoom = Math.floor(this._map.getMinZoom());
-
-			//Remove the marker from distance clusters it might be in
-			if (removeFromDistanceGrid) {
-				this._removeFromGridUnclustered(marker, this._maxZoom);
-			}
-
-			//Work our way up the clusters removing them as we go if required
-			var cluster = marker.__parent,
-				markers = cluster._markers,
-				otherMarker;
-
-			//Remove the marker from the immediate parents marker list
-			this._arraySplice(markers, marker);
-
-			while (cluster) {
-				cluster._childCount--;
-				cluster._boundsNeedUpdate = true;
-
-				if (cluster._zoom < minZoom) {
-					//Top level, do nothing
-					break;
-				} else if (removeFromDistanceGrid && cluster._childCount <= 1) { //Cluster no longer required
-					//We need to push the other marker up to the parent
-					otherMarker = cluster._markers[0] === marker ? cluster._markers[1] : cluster._markers[0];
-
-					//Update distance grid
-					gridClusters[cluster._zoom].removeObject(cluster, map.project(cluster._cLatLng, cluster._zoom));
-					gridUnclustered[cluster._zoom].addObject(otherMarker, map.project(otherMarker.getLatLng(), cluster._zoom));
-
-					//Move otherMarker up to parent
-					this._arraySplice(cluster.__parent._childClusters, cluster);
-					cluster.__parent._markers.push(otherMarker);
-					otherMarker.__parent = cluster.__parent;
-
-					if (cluster._icon) {
-						//Cluster is currently on the map, need to put the marker on the map instead
-						fg.removeLayer(cluster);
-						if (!dontUpdateMap) {
-							fg.addLayer(otherMarker);
-						}
-					}
-				} else {
-					cluster._iconNeedsUpdate = true;
-				}
-
-				cluster = cluster.__parent;
-			}
-
-			delete marker.__parent;
-		},
-
-		_isOrIsParent: function (el, oel) {
-			while (oel) {
-				if (el === oel) {
-					return true;
-				}
-				oel = oel.parentNode;
-			}
-			return false;
-		},
-
-		//Override L.Evented.fire
-		fire: function (type, data, propagate) {
-			if (data && data.layer instanceof L.MarkerCluster) {
-				//Prevent multiple clustermouseover/off events if the icon is made up of stacked divs (Doesn't work in ie <= 8, no relatedTarget)
-				if (data.originalEvent && this._isOrIsParent(data.layer._icon, data.originalEvent.relatedTarget)) {
-					return;
-				}
-				type = 'cluster' + type;
-			}
-
-			L.FeatureGroup.prototype.fire.call(this, type, data, propagate);
-		},
-
-		//Override L.Evented.listens
-		listens: function (type, propagate) {
-			return L.FeatureGroup.prototype.listens.call(this, type, propagate) || L.FeatureGroup.prototype.listens.call(this, 'cluster' + type, propagate);
-		},
-
-		//Default functionality
-		_defaultIconCreateFunction: function (cluster) {
-			var childCount = cluster.getChildCount();
-
-			var c = ' marker-cluster-';
-			if (childCount < 10) {
-				c += 'small';
-			} else if (childCount < 100) {
-				c += 'medium';
-			} else {
-				c += 'large';
-			}
-
-			return new L.DivIcon({ html: '<div><span>' + childCount + '</span></div>', className: 'marker-cluster' + c, iconSize: new L.Point(40, 40) });
-		},
-
-		_bindEvents: function () {
-			var map = this._map,
-			    spiderfyOnMaxZoom = this.options.spiderfyOnMaxZoom,
-			    showCoverageOnHover = this.options.showCoverageOnHover,
-			    zoomToBoundsOnClick = this.options.zoomToBoundsOnClick;
-
-			//Zoom on cluster click or spiderfy if we are at the lowest level
-			if (spiderfyOnMaxZoom || zoomToBoundsOnClick) {
-				this.on('clusterclick', this._zoomOrSpiderfy, this);
-			}
-
-			//Show convex hull (boundary) polygon on mouse over
-			if (showCoverageOnHover) {
-				this.on('clustermouseover', this._showCoverage, this);
-				this.on('clustermouseout', this._hideCoverage, this);
-				map.on('zoomend', this._hideCoverage, this);
-			}
-		},
-
-		_zoomOrSpiderfy: function (e) {
-			var cluster = e.layer,
-			    bottomCluster = cluster;
-
-			while (bottomCluster._childClusters.length === 1) {
-				bottomCluster = bottomCluster._childClusters[0];
-			}
-
-			if (bottomCluster._zoom === this._maxZoom &&
-				bottomCluster._childCount === cluster._childCount &&
-				this.options.spiderfyOnMaxZoom) {
-
-				// All child markers are contained in a single cluster from this._maxZoom to this cluster.
-				cluster.spiderfy();
-			} else if (this.options.zoomToBoundsOnClick) {
-				cluster.zoomToBounds();
-			}
-
-			// Focus the map again for keyboard users.
-			if (e.originalEvent && e.originalEvent.keyCode === 13) {
-				this._map._container.focus();
-			}
-		},
-
-		_showCoverage: function (e) {
-			var map = this._map;
-			if (this._inZoomAnimation) {
-				return;
-			}
-			if (this._shownPolygon) {
-				map.removeLayer(this._shownPolygon);
-			}
-			if (e.layer.getChildCount() > 2 && e.layer !== this._spiderfied) {
-				this._shownPolygon = new L.Polygon(e.layer.getConvexHull(), this.options.polygonOptions);
-				map.addLayer(this._shownPolygon);
-			}
-		},
-
-		_hideCoverage: function () {
-			if (this._shownPolygon) {
-				this._map.removeLayer(this._shownPolygon);
-				this._shownPolygon = null;
-			}
-		},
-
-		_unbindEvents: function () {
-			var spiderfyOnMaxZoom = this.options.spiderfyOnMaxZoom,
-				showCoverageOnHover = this.options.showCoverageOnHover,
-				zoomToBoundsOnClick = this.options.zoomToBoundsOnClick,
-				map = this._map;
-
-			if (spiderfyOnMaxZoom || zoomToBoundsOnClick) {
-				this.off('clusterclick', this._zoomOrSpiderfy, this);
-			}
-			if (showCoverageOnHover) {
-				this.off('clustermouseover', this._showCoverage, this);
-				this.off('clustermouseout', this._hideCoverage, this);
-				map.off('zoomend', this._hideCoverage, this);
-			}
-		},
-
-		_zoomEnd: function () {
-			if (!this._map) { //May have been removed from the map by a zoomEnd handler
-				return;
-			}
-			this._mergeSplitClusters();
-
-			this._zoom = Math.round(this._map._zoom);
-			this._currentShownBounds = this._getExpandedVisibleBounds();
-		},
-
-		_moveEnd: function () {
-			if (this._inZoomAnimation) {
-				return;
-			}
-
-			var newBounds = this._getExpandedVisibleBounds();
-
-			this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), this._zoom, newBounds);
-			this._topClusterLevel._recursivelyAddChildrenToMap(null, Math.round(this._map._zoom), newBounds);
-
-			this._currentShownBounds = newBounds;
-			return;
-		},
-
-		_generateInitialClusters: function () {
-			var maxZoom = Math.ceil(this._map.getMaxZoom()),
-				minZoom = Math.floor(this._map.getMinZoom()),
-				radius = this.options.maxClusterRadius,
-				radiusFn = radius;
-
-			//If we just set maxClusterRadius to a single number, we need to create
-			//a simple function to return that number. Otherwise, we just have to
-			//use the function we've passed in.
-			if (typeof radius !== "function") {
-				radiusFn = function () { return radius; };
-			}
-
-			if (this.options.disableClusteringAtZoom !== null) {
-				maxZoom = this.options.disableClusteringAtZoom - 1;
-			}
-			this._maxZoom = maxZoom;
-			this._gridClusters = {};
-			this._gridUnclustered = {};
-
-			//Set up DistanceGrids for each zoom
-			for (var zoom = maxZoom; zoom >= minZoom; zoom--) {
-				this._gridClusters[zoom] = new L.DistanceGrid(radiusFn(zoom));
-				this._gridUnclustered[zoom] = new L.DistanceGrid(radiusFn(zoom));
-			}
-
-			// Instantiate the appropriate L.MarkerCluster class (animated or not).
-			this._topClusterLevel = new this._markerCluster(this, minZoom - 1);
-		},
-
-		//Zoom: Zoom to start adding at (Pass this._maxZoom to start at the bottom)
-		_addLayer: function (layer, zoom) {
-			var gridClusters = this._gridClusters,
-			    gridUnclustered = this._gridUnclustered,
-				minZoom = Math.floor(this._map.getMinZoom()),
-			    markerPoint, z;
-
-			if (this.options.singleMarkerMode) {
-				this._overrideMarkerIcon(layer);
-			}
-
-			layer.on(this._childMarkerEventHandlers, this);
-
-			//Find the lowest zoom level to slot this one in
-			for (; zoom >= minZoom; zoom--) {
-				markerPoint = this._map.project(layer.getLatLng(), zoom); // calculate pixel position
-
-				//Try find a cluster close by
-				var closest = gridClusters[zoom].getNearObject(markerPoint);
-				if (closest) {
-					closest._addChild(layer);
-					layer.__parent = closest;
-					return;
-				}
-
-				//Try find a marker close by to form a new cluster with
-				closest = gridUnclustered[zoom].getNearObject(markerPoint);
-				if (closest) {
-					var parent = closest.__parent;
-					if (parent) {
-						this._removeLayer(closest, false);
-					}
-
-					//Create new cluster with these 2 in it
-
-					var newCluster = new this._markerCluster(this, zoom, closest, layer);
-					gridClusters[zoom].addObject(newCluster, this._map.project(newCluster._cLatLng, zoom));
-					closest.__parent = newCluster;
-					layer.__parent = newCluster;
-
-					//First create any new intermediate parent clusters that don't exist
-					var lastParent = newCluster;
-					for (z = zoom - 1; z > parent._zoom; z--) {
-						lastParent = new this._markerCluster(this, z, lastParent);
-						gridClusters[z].addObject(lastParent, this._map.project(closest.getLatLng(), z));
-					}
-					parent._addChild(lastParent);
-
-					//Remove closest from this zoom level and any above that it is in, replace with newCluster
-					this._removeFromGridUnclustered(closest, zoom);
-
-					return;
-				}
-
-				//Didn't manage to cluster in at this zoom, record us as a marker here and continue upwards
-				gridUnclustered[zoom].addObject(layer, markerPoint);
-			}
-
-			//Didn't get in anything, add us to the top
-			this._topClusterLevel._addChild(layer);
-			layer.__parent = this._topClusterLevel;
-			return;
-		},
-
-		/**
-		 * Refreshes the icon of all "dirty" visible clusters.
-		 * Non-visible "dirty" clusters will be updated when they are added to the map.
-		 * @private
-		 */
-		_refreshClustersIcons: function () {
-			this._featureGroup.eachLayer(function (c) {
-				if (c instanceof L.MarkerCluster && c._iconNeedsUpdate) {
-					c._updateIcon();
-				}
-			});
-		},
-
-		//Enqueue code to fire after the marker expand/contract has happened
-		_enqueue: function (fn) {
-			this._queue.push(fn);
-			if (!this._queueTimeout) {
-				this._queueTimeout = setTimeout(L.bind(this._processQueue, this), 300);
-			}
-		},
-		_processQueue: function () {
-			for (var i = 0; i < this._queue.length; i++) {
-				this._queue[i].call(this);
-			}
-			this._queue.length = 0;
-			clearTimeout(this._queueTimeout);
-			this._queueTimeout = null;
-		},
-
-		//Merge and split any existing clusters that are too big or small
-		_mergeSplitClusters: function () {
-			var mapZoom = Math.round(this._map._zoom);
-
-			//In case we are starting to split before the animation finished
-			this._processQueue();
-
-			if (this._zoom < mapZoom && this._currentShownBounds.intersects(this._getExpandedVisibleBounds())) { //Zoom in, split
-				this._animationStart();
-				//Remove clusters now off screen
-				this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), this._zoom, this._getExpandedVisibleBounds());
-
-				this._animationZoomIn(this._zoom, mapZoom);
-
-			} else if (this._zoom > mapZoom) { //Zoom out, merge
-				this._animationStart();
-
-				this._animationZoomOut(this._zoom, mapZoom);
-			} else {
-				this._moveEnd();
-			}
-		},
-
-		//Gets the maps visible bounds expanded in each direction by the size of the screen (so the user cannot see an area we do not cover in one pan)
-		_getExpandedVisibleBounds: function () {
-			if (!this.options.removeOutsideVisibleBounds) {
-				return this._mapBoundsInfinite;
-			} else if (L.Browser.mobile) {
-				return this._checkBoundsMaxLat(this._map.getBounds());
-			}
-
-			return this._checkBoundsMaxLat(this._map.getBounds().pad(1)); // Padding expands the bounds by its own dimensions but scaled with the given factor.
-		},
-
-		/**
-		 * Expands the latitude to Infinity (or -Infinity) if the input bounds reach the map projection maximum defined latitude
-		 * (in the case of Web/Spherical Mercator, it is 85.0511287798 / see https://en.wikipedia.org/wiki/Web_Mercator#Formulas).
-		 * Otherwise, the removeOutsideVisibleBounds option will remove markers beyond that limit, whereas the same markers without
-		 * this option (or outside MCG) will have their position floored (ceiled) by the projection and rendered at that limit,
-		 * making the user think that MCG "eats" them and never displays them again.
-		 * @param bounds L.LatLngBounds
-		 * @returns {L.LatLngBounds}
-		 * @private
-		 */
-		_checkBoundsMaxLat: function (bounds) {
-			var maxLat = this._maxLat;
-
-			if (maxLat !== undefined) {
-				if (bounds.getNorth() >= maxLat) {
-					bounds._northEast.lat = Infinity;
-				}
-				if (bounds.getSouth() <= -maxLat) {
-					bounds._southWest.lat = -Infinity;
-				}
-			}
-
-			return bounds;
-		},
-
-		//Shared animation code
-		_animationAddLayerNonAnimated: function (layer, newCluster) {
-			if (newCluster === layer) {
-				this._featureGroup.addLayer(layer);
-			} else if (newCluster._childCount === 2) {
-				newCluster._addToMap();
-
-				var markers = newCluster.getAllChildMarkers();
-				this._featureGroup.removeLayer(markers[0]);
-				this._featureGroup.removeLayer(markers[1]);
-			} else {
-				newCluster._updateIcon();
-			}
-		},
-
-		/**
-		 * Extracts individual (i.e. non-group) layers from a Layer Group.
-		 * @param group to extract layers from.
-		 * @param output {Array} in which to store the extracted layers.
-		 * @returns {*|Array}
-		 * @private
-		 */
-		_extractNonGroupLayers: function (group, output) {
-			var layers = group.getLayers(),
-			    i = 0,
-			    layer;
-
-			output = output || [];
-
-			for (; i < layers.length; i++) {
-				layer = layers[i];
-
-				if (layer instanceof L.LayerGroup) {
-					this._extractNonGroupLayers(layer, output);
-					continue;
-				}
-
-				output.push(layer);
-			}
-
-			return output;
-		},
-
-		/**
-		 * Implements the singleMarkerMode option.
-		 * @param layer Marker to re-style using the Clusters iconCreateFunction.
-		 * @returns {L.Icon} The newly created icon.
-		 * @private
-		 */
-		_overrideMarkerIcon: function (layer) {
-			var icon = layer.options.icon = this.options.iconCreateFunction({
-				getChildCount: function () {
-					return 1;
-				},
-				getAllChildMarkers: function () {
-					return [layer];
-				}
-			});
-
-			return icon;
-		}
-	});
-
-	// Constant bounds used in case option "removeOutsideVisibleBounds" is set to false.
-	L.MarkerClusterGroup.include({
-		_mapBoundsInfinite: new L.LatLngBounds(new L.LatLng(-Infinity, -Infinity), new L.LatLng(Infinity, Infinity))
-	});
-
-	L.MarkerClusterGroup.include({
-		_noAnimation: {
-			//Non Animated versions of everything
-			_animationStart: function () {
-				//Do nothing...
-			},
-			_animationZoomIn: function (previousZoomLevel, newZoomLevel) {
-				this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), previousZoomLevel);
-				this._topClusterLevel._recursivelyAddChildrenToMap(null, newZoomLevel, this._getExpandedVisibleBounds());
-
-				//We didn't actually animate, but we use this event to mean "clustering animations have finished"
-				this.fire('animationend');
-			},
-			_animationZoomOut: function (previousZoomLevel, newZoomLevel) {
-				this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), previousZoomLevel);
-				this._topClusterLevel._recursivelyAddChildrenToMap(null, newZoomLevel, this._getExpandedVisibleBounds());
-
-				//We didn't actually animate, but we use this event to mean "clustering animations have finished"
-				this.fire('animationend');
-			},
-			_animationAddLayer: function (layer, newCluster) {
-				this._animationAddLayerNonAnimated(layer, newCluster);
-			}
-		},
-
-		_withAnimation: {
-			//Animated versions here
-			_animationStart: function () {
-				this._map._mapPane.className += ' leaflet-cluster-anim';
-				this._inZoomAnimation++;
-			},
-
-			_animationZoomIn: function (previousZoomLevel, newZoomLevel) {
-				var bounds = this._getExpandedVisibleBounds(),
-				    fg = this._featureGroup,
-					minZoom = Math.floor(this._map.getMinZoom()),
-				    i;
-
-				this._ignoreMove = true;
-
-				//Add all children of current clusters to map and remove those clusters from map
-				this._topClusterLevel._recursively(bounds, previousZoomLevel, minZoom, function (c) {
-					var startPos = c._latlng,
-					    markers  = c._markers,
-					    m;
-
-					if (!bounds.contains(startPos)) {
-						startPos = null;
-					}
-
-					if (c._isSingleParent() && previousZoomLevel + 1 === newZoomLevel) { //Immediately add the new child and remove us
-						fg.removeLayer(c);
-						c._recursivelyAddChildrenToMap(null, newZoomLevel, bounds);
-					} else {
-						//Fade out old cluster
-						c.clusterHide();
-						c._recursivelyAddChildrenToMap(startPos, newZoomLevel, bounds);
-					}
-
-					//Remove all markers that aren't visible any more
-					//TODO: Do we actually need to do this on the higher levels too?
-					for (i = markers.length - 1; i >= 0; i--) {
-						m = markers[i];
-						if (!bounds.contains(m._latlng)) {
-							fg.removeLayer(m);
-						}
-					}
-
-				});
-
-				this._forceLayout();
-
-				//Update opacities
-				this._topClusterLevel._recursivelyBecomeVisible(bounds, newZoomLevel);
-				//TODO Maybe? Update markers in _recursivelyBecomeVisible
-				fg.eachLayer(function (n) {
-					if (!(n instanceof L.MarkerCluster) && n._icon) {
-						n.clusterShow();
-					}
-				});
-
-				//update the positions of the just added clusters/markers
-				this._topClusterLevel._recursively(bounds, previousZoomLevel, newZoomLevel, function (c) {
-					c._recursivelyRestoreChildPositions(newZoomLevel);
-				});
-
-				this._ignoreMove = false;
-
-				//Remove the old clusters and close the zoom animation
-				this._enqueue(function () {
-					//update the positions of the just added clusters/markers
-					this._topClusterLevel._recursively(bounds, previousZoomLevel, minZoom, function (c) {
-						fg.removeLayer(c);
-						c.clusterShow();
-					});
-
-					this._animationEnd();
-				});
-			},
-
-			_animationZoomOut: function (previousZoomLevel, newZoomLevel) {
-				this._animationZoomOutSingle(this._topClusterLevel, previousZoomLevel - 1, newZoomLevel);
-
-				//Need to add markers for those that weren't on the map before but are now
-				this._topClusterLevel._recursivelyAddChildrenToMap(null, newZoomLevel, this._getExpandedVisibleBounds());
-				//Remove markers that were on the map before but won't be now
-				this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), previousZoomLevel, this._getExpandedVisibleBounds());
-			},
-
-			_animationAddLayer: function (layer, newCluster) {
-				var me = this,
-				    fg = this._featureGroup;
-
-				fg.addLayer(layer);
-				if (newCluster !== layer) {
-					if (newCluster._childCount > 2) { //Was already a cluster
-
-						newCluster._updateIcon();
-						this._forceLayout();
-						this._animationStart();
-
-						layer._setPos(this._map.latLngToLayerPoint(newCluster.getLatLng()));
-						layer.clusterHide();
-
-						this._enqueue(function () {
-							fg.removeLayer(layer);
-							layer.clusterShow();
-
-							me._animationEnd();
-						});
-
-					} else { //Just became a cluster
-						this._forceLayout();
-
-						me._animationStart();
-						me._animationZoomOutSingle(newCluster, this._map.getMaxZoom(), this._zoom);
-					}
-				}
-			}
-		},
-
-		// Private methods for animated versions.
-		_animationZoomOutSingle: function (cluster, previousZoomLevel, newZoomLevel) {
-			var bounds = this._getExpandedVisibleBounds(),
-				minZoom = Math.floor(this._map.getMinZoom());
-
-			//Animate all of the markers in the clusters to move to their cluster center point
-			cluster._recursivelyAnimateChildrenInAndAddSelfToMap(bounds, minZoom, previousZoomLevel + 1, newZoomLevel);
-
-			var me = this;
-
-			//Update the opacity (If we immediately set it they won't animate)
-			this._forceLayout();
-			cluster._recursivelyBecomeVisible(bounds, newZoomLevel);
-
-			//TODO: Maybe use the transition timing stuff to make this more reliable
-			//When the animations are done, tidy up
-			this._enqueue(function () {
-
-				//This cluster stopped being a cluster before the timeout fired
-				if (cluster._childCount === 1) {
-					var m = cluster._markers[0];
-					//If we were in a cluster animation at the time then the opacity and position of our child could be wrong now, so fix it
-					this._ignoreMove = true;
-					m.setLatLng(m.getLatLng());
-					this._ignoreMove = false;
-					if (m.clusterShow) {
-						m.clusterShow();
-					}
-				} else {
-					cluster._recursively(bounds, newZoomLevel, minZoom, function (c) {
-						c._recursivelyRemoveChildrenFromMap(bounds, minZoom, previousZoomLevel + 1);
-					});
-				}
-				me._animationEnd();
-			});
-		},
-
-		_animationEnd: function () {
-			if (this._map) {
-				this._map._mapPane.className = this._map._mapPane.className.replace(' leaflet-cluster-anim', '');
-			}
-			this._inZoomAnimation--;
-			this.fire('animationend');
-		},
-
-		//Force a browser layout of stuff in the map
-		// Should apply the current opacity and location to all elements so we can update them again for an animation
-		_forceLayout: function () {
-			//In my testing this works, infact offsetWidth of any element seems to work.
-			//Could loop all this._layers and do this for each _icon if it stops working
-
-			L.Util.falseFn(document.body.offsetWidth);
-		}
-	});
-
-	L.markerClusterGroup = function (options) {
-		return new L.MarkerClusterGroup(options);
-	};
-
-	var MarkerCluster = L.MarkerCluster = L.Marker.extend({
-		options: L.Icon.prototype.options,
-
-		initialize: function (group, zoom, a, b) {
-
-			L.Marker.prototype.initialize.call(this, a ? (a._cLatLng || a.getLatLng()) : new L.LatLng(0, 0),
-	            { icon: this, pane: group.options.clusterPane });
-
-			this._group = group;
-			this._zoom = zoom;
-
-			this._markers = [];
-			this._childClusters = [];
-			this._childCount = 0;
-			this._iconNeedsUpdate = true;
-			this._boundsNeedUpdate = true;
-
-			this._bounds = new L.LatLngBounds();
-
-			if (a) {
-				this._addChild(a);
-			}
-			if (b) {
-				this._addChild(b);
-			}
-		},
-
-		//Recursively retrieve all child markers of this cluster
-		getAllChildMarkers: function (storageArray, ignoreDraggedMarker) {
-			storageArray = storageArray || [];
-
-			for (var i = this._childClusters.length - 1; i >= 0; i--) {
-				this._childClusters[i].getAllChildMarkers(storageArray);
-			}
-
-			for (var j = this._markers.length - 1; j >= 0; j--) {
-				if (ignoreDraggedMarker && this._markers[j].__dragStart) {
-					continue;
-				}
-				storageArray.push(this._markers[j]);
-			}
-
-			return storageArray;
-		},
-
-		//Returns the count of how many child markers we have
-		getChildCount: function () {
-			return this._childCount;
-		},
-
-		//Zoom to the minimum of showing all of the child markers, or the extents of this cluster
-		zoomToBounds: function (fitBoundsOptions) {
-			var childClusters = this._childClusters.slice(),
-				map = this._group._map,
-				boundsZoom = map.getBoundsZoom(this._bounds),
-				zoom = this._zoom + 1,
-				mapZoom = map.getZoom(),
-				i;
-
-			//calculate how far we need to zoom down to see all of the markers
-			while (childClusters.length > 0 && boundsZoom > zoom) {
-				zoom++;
-				var newClusters = [];
-				for (i = 0; i < childClusters.length; i++) {
-					newClusters = newClusters.concat(childClusters[i]._childClusters);
-				}
-				childClusters = newClusters;
-			}
-
-			if (boundsZoom > zoom) {
-				this._group._map.setView(this._latlng, zoom);
-			} else if (boundsZoom <= mapZoom) { //If fitBounds wouldn't zoom us down, zoom us down instead
-				this._group._map.setView(this._latlng, mapZoom + 1);
-			} else {
-				this._group._map.fitBounds(this._bounds, fitBoundsOptions);
-			}
-		},
-
-		getBounds: function () {
-			var bounds = new L.LatLngBounds();
-			bounds.extend(this._bounds);
-			return bounds;
-		},
-
-		_updateIcon: function () {
-			this._iconNeedsUpdate = true;
-			if (this._icon) {
-				this.setIcon(this);
-			}
-		},
-
-		//Cludge for Icon, we pretend to be an icon for performance
-		createIcon: function () {
-			if (this._iconNeedsUpdate) {
-				this._iconObj = this._group.options.iconCreateFunction(this);
-				this._iconNeedsUpdate = false;
-			}
-			return this._iconObj.createIcon();
-		},
-		createShadow: function () {
-			return this._iconObj.createShadow();
-		},
-
-
-		_addChild: function (new1, isNotificationFromChild) {
-
-			this._iconNeedsUpdate = true;
-
-			this._boundsNeedUpdate = true;
-			this._setClusterCenter(new1);
-
-			if (new1 instanceof L.MarkerCluster) {
-				if (!isNotificationFromChild) {
-					this._childClusters.push(new1);
-					new1.__parent = this;
-				}
-				this._childCount += new1._childCount;
-			} else {
-				if (!isNotificationFromChild) {
-					this._markers.push(new1);
-				}
-				this._childCount++;
-			}
-
-			if (this.__parent) {
-				this.__parent._addChild(new1, true);
-			}
-		},
-
-		/**
-		 * Makes sure the cluster center is set. If not, uses the child center if it is a cluster, or the marker position.
-		 * @param child L.MarkerCluster|L.Marker that will be used as cluster center if not defined yet.
-		 * @private
-		 */
-		_setClusterCenter: function (child) {
-			if (!this._cLatLng) {
-				// when clustering, take position of the first point as the cluster center
-				this._cLatLng = child._cLatLng || child._latlng;
-			}
-		},
-
-		/**
-		 * Assigns impossible bounding values so that the next extend entirely determines the new bounds.
-		 * This method avoids having to trash the previous L.LatLngBounds object and to create a new one, which is much slower for this class.
-		 * As long as the bounds are not extended, most other methods would probably fail, as they would with bounds initialized but not extended.
-		 * @private
-		 */
-		_resetBounds: function () {
-			var bounds = this._bounds;
-
-			if (bounds._southWest) {
-				bounds._southWest.lat = Infinity;
-				bounds._southWest.lng = Infinity;
-			}
-			if (bounds._northEast) {
-				bounds._northEast.lat = -Infinity;
-				bounds._northEast.lng = -Infinity;
-			}
-		},
-
-		_recalculateBounds: function () {
-			var markers = this._markers,
-			    childClusters = this._childClusters,
-			    latSum = 0,
-			    lngSum = 0,
-			    totalCount = this._childCount,
-			    i, child, childLatLng, childCount;
-
-			// Case where all markers are removed from the map and we are left with just an empty _topClusterLevel.
-			if (totalCount === 0) {
-				return;
-			}
-
-			// Reset rather than creating a new object, for performance.
-			this._resetBounds();
-
-			// Child markers.
-			for (i = 0; i < markers.length; i++) {
-				childLatLng = markers[i]._latlng;
-
-				this._bounds.extend(childLatLng);
-
-				latSum += childLatLng.lat;
-				lngSum += childLatLng.lng;
-			}
-
-			// Child clusters.
-			for (i = 0; i < childClusters.length; i++) {
-				child = childClusters[i];
-
-				// Re-compute child bounds and weighted position first if necessary.
-				if (child._boundsNeedUpdate) {
-					child._recalculateBounds();
-				}
-
-				this._bounds.extend(child._bounds);
-
-				childLatLng = child._wLatLng;
-				childCount = child._childCount;
-
-				latSum += childLatLng.lat * childCount;
-				lngSum += childLatLng.lng * childCount;
-			}
-
-			this._latlng = this._wLatLng = new L.LatLng(latSum / totalCount, lngSum / totalCount);
-
-			// Reset dirty flag.
-			this._boundsNeedUpdate = false;
-		},
-
-		//Set our markers position as given and add it to the map
-		_addToMap: function (startPos) {
-			if (startPos) {
-				this._backupLatlng = this._latlng;
-				this.setLatLng(startPos);
-			}
-			this._group._featureGroup.addLayer(this);
-		},
-
-		_recursivelyAnimateChildrenIn: function (bounds, center, maxZoom) {
-			this._recursively(bounds, this._group._map.getMinZoom(), maxZoom - 1,
-				function (c) {
-					var markers = c._markers,
-						i, m;
-					for (i = markers.length - 1; i >= 0; i--) {
-						m = markers[i];
-
-						//Only do it if the icon is still on the map
-						if (m._icon) {
-							m._setPos(center);
-							m.clusterHide();
-						}
-					}
-				},
-				function (c) {
-					var childClusters = c._childClusters,
-						j, cm;
-					for (j = childClusters.length - 1; j >= 0; j--) {
-						cm = childClusters[j];
-						if (cm._icon) {
-							cm._setPos(center);
-							cm.clusterHide();
-						}
-					}
-				}
-			);
-		},
-
-		_recursivelyAnimateChildrenInAndAddSelfToMap: function (bounds, mapMinZoom, previousZoomLevel, newZoomLevel) {
-			this._recursively(bounds, newZoomLevel, mapMinZoom,
-				function (c) {
-					c._recursivelyAnimateChildrenIn(bounds, c._group._map.latLngToLayerPoint(c.getLatLng()).round(), previousZoomLevel);
-
-					//TODO: depthToAnimateIn affects _isSingleParent, if there is a multizoom we may/may not be.
-					//As a hack we only do a animation free zoom on a single level zoom, if someone does multiple levels then we always animate
-					if (c._isSingleParent() && previousZoomLevel - 1 === newZoomLevel) {
-						c.clusterShow();
-						c._recursivelyRemoveChildrenFromMap(bounds, mapMinZoom, previousZoomLevel); //Immediately remove our children as we are replacing them. TODO previousBounds not bounds
-					} else {
-						c.clusterHide();
-					}
-
-					c._addToMap();
-				}
-			);
-		},
-
-		_recursivelyBecomeVisible: function (bounds, zoomLevel) {
-			this._recursively(bounds, this._group._map.getMinZoom(), zoomLevel, null, function (c) {
-				c.clusterShow();
-			});
-		},
-
-		_recursivelyAddChildrenToMap: function (startPos, zoomLevel, bounds) {
-			this._recursively(bounds, this._group._map.getMinZoom() - 1, zoomLevel,
-				function (c) {
-					if (zoomLevel === c._zoom) {
-						return;
-					}
-
-					//Add our child markers at startPos (so they can be animated out)
-					for (var i = c._markers.length - 1; i >= 0; i--) {
-						var nm = c._markers[i];
-
-						if (!bounds.contains(nm._latlng)) {
-							continue;
-						}
-
-						if (startPos) {
-							nm._backupLatlng = nm.getLatLng();
-
-							nm.setLatLng(startPos);
-							if (nm.clusterHide) {
-								nm.clusterHide();
-							}
-						}
-
-						c._group._featureGroup.addLayer(nm);
-					}
-				},
-				function (c) {
-					c._addToMap(startPos);
-				}
-			);
-		},
-
-		_recursivelyRestoreChildPositions: function (zoomLevel) {
-			//Fix positions of child markers
-			for (var i = this._markers.length - 1; i >= 0; i--) {
-				var nm = this._markers[i];
-				if (nm._backupLatlng) {
-					nm.setLatLng(nm._backupLatlng);
-					delete nm._backupLatlng;
-				}
-			}
-
-			if (zoomLevel - 1 === this._zoom) {
-				//Reposition child clusters
-				for (var j = this._childClusters.length - 1; j >= 0; j--) {
-					this._childClusters[j]._restorePosition();
-				}
-			} else {
-				for (var k = this._childClusters.length - 1; k >= 0; k--) {
-					this._childClusters[k]._recursivelyRestoreChildPositions(zoomLevel);
-				}
-			}
-		},
-
-		_restorePosition: function () {
-			if (this._backupLatlng) {
-				this.setLatLng(this._backupLatlng);
-				delete this._backupLatlng;
-			}
-		},
-
-		//exceptBounds: If set, don't remove any markers/clusters in it
-		_recursivelyRemoveChildrenFromMap: function (previousBounds, mapMinZoom, zoomLevel, exceptBounds) {
-			var m, i;
-			this._recursively(previousBounds, mapMinZoom - 1, zoomLevel - 1,
-				function (c) {
-					//Remove markers at every level
-					for (i = c._markers.length - 1; i >= 0; i--) {
-						m = c._markers[i];
-						if (!exceptBounds || !exceptBounds.contains(m._latlng)) {
-							c._group._featureGroup.removeLayer(m);
-							if (m.clusterShow) {
-								m.clusterShow();
-							}
-						}
-					}
-				},
-				function (c) {
-					//Remove child clusters at just the bottom level
-					for (i = c._childClusters.length - 1; i >= 0; i--) {
-						m = c._childClusters[i];
-						if (!exceptBounds || !exceptBounds.contains(m._latlng)) {
-							c._group._featureGroup.removeLayer(m);
-							if (m.clusterShow) {
-								m.clusterShow();
-							}
-						}
-					}
-				}
-			);
-		},
-
-		//Run the given functions recursively to this and child clusters
-		// boundsToApplyTo: a L.LatLngBounds representing the bounds of what clusters to recurse in to
-		// zoomLevelToStart: zoom level to start running functions (inclusive)
-		// zoomLevelToStop: zoom level to stop running functions (inclusive)
-		// runAtEveryLevel: function that takes an L.MarkerCluster as an argument that should be applied on every level
-		// runAtBottomLevel: function that takes an L.MarkerCluster as an argument that should be applied at only the bottom level
-		_recursively: function (boundsToApplyTo, zoomLevelToStart, zoomLevelToStop, runAtEveryLevel, runAtBottomLevel) {
-			var childClusters = this._childClusters,
-			    zoom = this._zoom,
-			    i, c;
-
-			if (zoomLevelToStart <= zoom) {
-				if (runAtEveryLevel) {
-					runAtEveryLevel(this);
-				}
-				if (runAtBottomLevel && zoom === zoomLevelToStop) {
-					runAtBottomLevel(this);
-				}
-			}
-
-			if (zoom < zoomLevelToStart || zoom < zoomLevelToStop) {
-				for (i = childClusters.length - 1; i >= 0; i--) {
-					c = childClusters[i];
-					if (c._boundsNeedUpdate) {
-						c._recalculateBounds();
-					}
-					if (boundsToApplyTo.intersects(c._bounds)) {
-						c._recursively(boundsToApplyTo, zoomLevelToStart, zoomLevelToStop, runAtEveryLevel, runAtBottomLevel);
-					}
-				}
-			}
-		},
-
-		//Returns true if we are the parent of only one cluster and that cluster is the same as us
-		_isSingleParent: function () {
-			//Don't need to check this._markers as the rest won't work if there are any
-			return this._childClusters.length > 0 && this._childClusters[0]._childCount === this._childCount;
-		}
-	});
-
-	/*
-	* Extends L.Marker to include two extra methods: clusterHide and clusterShow.
-	* 
-	* They work as setOpacity(0) and setOpacity(1) respectively, but
-	* don't overwrite the options.opacity
-	* 
-	*/
-
-	L.Marker.include({
-		clusterHide: function () {
-			var backup = this.options.opacity;
-			this.setOpacity(0);
-			this.options.opacity = backup;
-			return this;
-		},
-		
-		clusterShow: function () {
-			return this.setOpacity(this.options.opacity);
-		}
-	});
-
-	L.DistanceGrid = function (cellSize) {
-		this._cellSize = cellSize;
-		this._sqCellSize = cellSize * cellSize;
-		this._grid = {};
-		this._objectPoint = { };
-	};
-
-	L.DistanceGrid.prototype = {
-
-		addObject: function (obj, point) {
-			var x = this._getCoord(point.x),
-			    y = this._getCoord(point.y),
-			    grid = this._grid,
-			    row = grid[y] = grid[y] || {},
-			    cell = row[x] = row[x] || [],
-			    stamp = L.Util.stamp(obj);
-
-			this._objectPoint[stamp] = point;
-
-			cell.push(obj);
-		},
-
-		updateObject: function (obj, point) {
-			this.removeObject(obj);
-			this.addObject(obj, point);
-		},
-
-		//Returns true if the object was found
-		removeObject: function (obj, point) {
-			var x = this._getCoord(point.x),
-			    y = this._getCoord(point.y),
-			    grid = this._grid,
-			    row = grid[y] = grid[y] || {},
-			    cell = row[x] = row[x] || [],
-			    i, len;
-
-			delete this._objectPoint[L.Util.stamp(obj)];
-
-			for (i = 0, len = cell.length; i < len; i++) {
-				if (cell[i] === obj) {
-
-					cell.splice(i, 1);
-
-					if (len === 1) {
-						delete row[x];
-					}
-
-					return true;
-				}
-			}
-
-		},
-
-		eachObject: function (fn, context) {
-			var i, j, k, len, row, cell, removed,
-			    grid = this._grid;
-
-			for (i in grid) {
-				row = grid[i];
-
-				for (j in row) {
-					cell = row[j];
-
-					for (k = 0, len = cell.length; k < len; k++) {
-						removed = fn.call(context, cell[k]);
-						if (removed) {
-							k--;
-							len--;
-						}
-					}
-				}
-			}
-		},
-
-		getNearObject: function (point) {
-			var x = this._getCoord(point.x),
-			    y = this._getCoord(point.y),
-			    i, j, k, row, cell, len, obj, dist,
-			    objectPoint = this._objectPoint,
-			    closestDistSq = this._sqCellSize,
-			    closest = null;
-
-			for (i = y - 1; i <= y + 1; i++) {
-				row = this._grid[i];
-				if (row) {
-
-					for (j = x - 1; j <= x + 1; j++) {
-						cell = row[j];
-						if (cell) {
-
-							for (k = 0, len = cell.length; k < len; k++) {
-								obj = cell[k];
-								dist = this._sqDist(objectPoint[L.Util.stamp(obj)], point);
-								if (dist < closestDistSq ||
-									dist <= closestDistSq && closest === null) {
-									closestDistSq = dist;
-									closest = obj;
-								}
-							}
-						}
-					}
-				}
-			}
-			return closest;
-		},
-
-		_getCoord: function (x) {
-			var coord = Math.floor(x / this._cellSize);
-			return isFinite(coord) ? coord : x;
-		},
-
-		_sqDist: function (p, p2) {
-			var dx = p2.x - p.x,
-			    dy = p2.y - p.y;
-			return dx * dx + dy * dy;
-		}
-	};
-
-	/* Copyright (c) 2012 the authors listed at the following URL, and/or
-	the authors of referenced articles or incorporated external code:
-	http://en.literateprograms.org/Quickhull_(Javascript)?action=history&offset=20120410175256
-
-	Permission is hereby granted, free of charge, to any person obtaining
-	a copy of this software and associated documentation files (the
-	"Software"), to deal in the Software without restriction, including
-	without limitation the rights to use, copy, modify, merge, publish,
-	distribute, sublicense, and/or sell copies of the Software, and to
-	permit persons to whom the Software is furnished to do so, subject to
-	the following conditions:
-
-	The above copyright notice and this permission notice shall be
-	included in all copies or substantial portions of the Software.
-
-	THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-	EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-	MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-	IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-	CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-	TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-	SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-	Retrieved from: http://en.literateprograms.org/Quickhull_(Javascript)?oldid=18434
-	*/
-
-	(function () {
-		L.QuickHull = {
-
-			/*
-			 * @param {Object} cpt a point to be measured from the baseline
-			 * @param {Array} bl the baseline, as represented by a two-element
-			 *   array of latlng objects.
-			 * @returns {Number} an approximate distance measure
-			 */
-			getDistant: function (cpt, bl) {
-				var vY = bl[1].lat - bl[0].lat,
-					vX = bl[0].lng - bl[1].lng;
-				return (vX * (cpt.lat - bl[0].lat) + vY * (cpt.lng - bl[0].lng));
-			},
-
-			/*
-			 * @param {Array} baseLine a two-element array of latlng objects
-			 *   representing the baseline to project from
-			 * @param {Array} latLngs an array of latlng objects
-			 * @returns {Object} the maximum point and all new points to stay
-			 *   in consideration for the hull.
-			 */
-			findMostDistantPointFromBaseLine: function (baseLine, latLngs) {
-				var maxD = 0,
-					maxPt = null,
-					newPoints = [],
-					i, pt, d;
-
-				for (i = latLngs.length - 1; i >= 0; i--) {
-					pt = latLngs[i];
-					d = this.getDistant(pt, baseLine);
-
-					if (d > 0) {
-						newPoints.push(pt);
-					} else {
-						continue;
-					}
-
-					if (d > maxD) {
-						maxD = d;
-						maxPt = pt;
-					}
-				}
-
-				return { maxPoint: maxPt, newPoints: newPoints };
-			},
-
-
-			/*
-			 * Given a baseline, compute the convex hull of latLngs as an array
-			 * of latLngs.
-			 *
-			 * @param {Array} latLngs
-			 * @returns {Array}
-			 */
-			buildConvexHull: function (baseLine, latLngs) {
-				var convexHullBaseLines = [],
-					t = this.findMostDistantPointFromBaseLine(baseLine, latLngs);
-
-				if (t.maxPoint) { // if there is still a point "outside" the base line
-					convexHullBaseLines =
-						convexHullBaseLines.concat(
-							this.buildConvexHull([baseLine[0], t.maxPoint], t.newPoints)
-						);
-					convexHullBaseLines =
-						convexHullBaseLines.concat(
-							this.buildConvexHull([t.maxPoint, baseLine[1]], t.newPoints)
-						);
-					return convexHullBaseLines;
-				} else {  // if there is no more point "outside" the base line, the current base line is part of the convex hull
-					return [baseLine[0]];
-				}
-			},
-
-			/*
-			 * Given an array of latlngs, compute a convex hull as an array
-			 * of latlngs
-			 *
-			 * @param {Array} latLngs
-			 * @returns {Array}
-			 */
-			getConvexHull: function (latLngs) {
-				// find first baseline
-				var maxLat = false, minLat = false,
-					maxLng = false, minLng = false,
-					maxLatPt = null, minLatPt = null,
-					maxLngPt = null, minLngPt = null,
-					maxPt = null, minPt = null,
-					i;
-
-				for (i = latLngs.length - 1; i >= 0; i--) {
-					var pt = latLngs[i];
-					if (maxLat === false || pt.lat > maxLat) {
-						maxLatPt = pt;
-						maxLat = pt.lat;
-					}
-					if (minLat === false || pt.lat < minLat) {
-						minLatPt = pt;
-						minLat = pt.lat;
-					}
-					if (maxLng === false || pt.lng > maxLng) {
-						maxLngPt = pt;
-						maxLng = pt.lng;
-					}
-					if (minLng === false || pt.lng < minLng) {
-						minLngPt = pt;
-						minLng = pt.lng;
-					}
-				}
-				
-				if (minLat !== maxLat) {
-					minPt = minLatPt;
-					maxPt = maxLatPt;
-				} else {
-					minPt = minLngPt;
-					maxPt = maxLngPt;
-				}
-
-				var ch = [].concat(this.buildConvexHull([minPt, maxPt], latLngs),
-									this.buildConvexHull([maxPt, minPt], latLngs));
-				return ch;
-			}
-		};
-	}());
-
-	L.MarkerCluster.include({
-		getConvexHull: function () {
-			var childMarkers = this.getAllChildMarkers(),
-				points = [],
-				p, i;
-
-			for (i = childMarkers.length - 1; i >= 0; i--) {
-				p = childMarkers[i].getLatLng();
-				points.push(p);
-			}
-
-			return L.QuickHull.getConvexHull(points);
-		}
-	});
-
-	//This code is 100% based on https://github.com/jawj/OverlappingMarkerSpiderfier-Leaflet
-	//Huge thanks to jawj for implementing it first to make my job easy :-)
-
-	L.MarkerCluster.include({
-
-		_2PI: Math.PI * 2,
-		_circleFootSeparation: 25, //related to circumference of circle
-		_circleStartAngle: 0,
-
-		_spiralFootSeparation:  28, //related to size of spiral (experiment!)
-		_spiralLengthStart: 11,
-		_spiralLengthFactor: 5,
-
-		_circleSpiralSwitchover: 9, //show spiral instead of circle from this marker count upwards.
-									// 0 -> always spiral; Infinity -> always circle
-
-		spiderfy: function () {
-			if (this._group._spiderfied === this || this._group._inZoomAnimation) {
-				return;
-			}
-
-			var childMarkers = this.getAllChildMarkers(null, true),
-				group = this._group,
-				map = group._map,
-				center = map.latLngToLayerPoint(this._latlng),
-				positions;
-
-			this._group._unspiderfy();
-			this._group._spiderfied = this;
-
-			//TODO Maybe: childMarkers order by distance to center
-
-			if (this._group.options.spiderfyShapePositions) {
-				positions = this._group.options.spiderfyShapePositions(childMarkers.length, center);
-			} else if (childMarkers.length >= this._circleSpiralSwitchover) {
-				positions = this._generatePointsSpiral(childMarkers.length, center);
-			} else {
-				center.y += 10; // Otherwise circles look wrong => hack for standard blue icon, renders differently for other icons.
-				positions = this._generatePointsCircle(childMarkers.length, center);
-			}
-
-			this._animationSpiderfy(childMarkers, positions);
-		},
-
-		unspiderfy: function (zoomDetails) {
-			/// <param Name="zoomDetails">Argument from zoomanim if being called in a zoom animation or null otherwise</param>
-			if (this._group._inZoomAnimation) {
-				return;
-			}
-			this._animationUnspiderfy(zoomDetails);
-
-			this._group._spiderfied = null;
-		},
-
-		_generatePointsCircle: function (count, centerPt) {
-			var circumference = this._group.options.spiderfyDistanceMultiplier * this._circleFootSeparation * (2 + count),
-				legLength = circumference / this._2PI,  //radius from circumference
-				angleStep = this._2PI / count,
-				res = [],
-				i, angle;
-
-			legLength = Math.max(legLength, 35); // Minimum distance to get outside the cluster icon.
-
-			res.length = count;
-
-			for (i = 0; i < count; i++) { // Clockwise, like spiral.
-				angle = this._circleStartAngle + i * angleStep;
-				res[i] = new L.Point(centerPt.x + legLength * Math.cos(angle), centerPt.y + legLength * Math.sin(angle))._round();
-			}
-
-			return res;
-		},
-
-		_generatePointsSpiral: function (count, centerPt) {
-			var spiderfyDistanceMultiplier = this._group.options.spiderfyDistanceMultiplier,
-				legLength = spiderfyDistanceMultiplier * this._spiralLengthStart,
-				separation = spiderfyDistanceMultiplier * this._spiralFootSeparation,
-				lengthFactor = spiderfyDistanceMultiplier * this._spiralLengthFactor * this._2PI,
-				angle = 0,
-				res = [],
-				i;
-
-			res.length = count;
-
-			// Higher index, closer position to cluster center.
-			for (i = count; i >= 0; i--) {
-				// Skip the first position, so that we are already farther from center and we avoid
-				// being under the default cluster icon (especially important for Circle Markers).
-				if (i < count) {
-					res[i] = new L.Point(centerPt.x + legLength * Math.cos(angle), centerPt.y + legLength * Math.sin(angle))._round();
-				}
-				angle += separation / legLength + i * 0.0005;
-				legLength += lengthFactor / angle;
-			}
-			return res;
-		},
-
-		_noanimationUnspiderfy: function () {
-			var group = this._group,
-				map = group._map,
-				fg = group._featureGroup,
-				childMarkers = this.getAllChildMarkers(null, true),
-				m, i;
-
-			group._ignoreMove = true;
-
-			this.setOpacity(1);
-			for (i = childMarkers.length - 1; i >= 0; i--) {
-				m = childMarkers[i];
-
-				fg.removeLayer(m);
-
-				if (m._preSpiderfyLatlng) {
-					m.setLatLng(m._preSpiderfyLatlng);
-					delete m._preSpiderfyLatlng;
-				}
-				if (m.setZIndexOffset) {
-					m.setZIndexOffset(0);
-				}
-
-				if (m._spiderLeg) {
-					map.removeLayer(m._spiderLeg);
-					delete m._spiderLeg;
-				}
-			}
-
-			group.fire('unspiderfied', {
-				cluster: this,
-				markers: childMarkers
-			});
-			group._ignoreMove = false;
-			group._spiderfied = null;
-		}
-	});
-
-	//Non Animated versions of everything
-	L.MarkerClusterNonAnimated = L.MarkerCluster.extend({
-		_animationSpiderfy: function (childMarkers, positions) {
-			var group = this._group,
-				map = group._map,
-				fg = group._featureGroup,
-				legOptions = this._group.options.spiderLegPolylineOptions,
-				i, m, leg, newPos;
-
-			group._ignoreMove = true;
-
-			// Traverse in ascending order to make sure that inner circleMarkers are on top of further legs. Normal markers are re-ordered by newPosition.
-			// The reverse order trick no longer improves performance on modern browsers.
-			for (i = 0; i < childMarkers.length; i++) {
-				newPos = map.layerPointToLatLng(positions[i]);
-				m = childMarkers[i];
-
-				// Add the leg before the marker, so that in case the latter is a circleMarker, the leg is behind it.
-				leg = new L.Polyline([this._latlng, newPos], legOptions);
-				map.addLayer(leg);
-				m._spiderLeg = leg;
-
-				// Now add the marker.
-				m._preSpiderfyLatlng = m._latlng;
-				m.setLatLng(newPos);
-				if (m.setZIndexOffset) {
-					m.setZIndexOffset(1000000); //Make these appear on top of EVERYTHING
-				}
-
-				fg.addLayer(m);
-			}
-			this.setOpacity(0.3);
-
-			group._ignoreMove = false;
-			group.fire('spiderfied', {
-				cluster: this,
-				markers: childMarkers
-			});
-		},
-
-		_animationUnspiderfy: function () {
-			this._noanimationUnspiderfy();
-		}
-	});
-
-	//Animated versions here
-	L.MarkerCluster.include({
-
-		_animationSpiderfy: function (childMarkers, positions) {
-			var me = this,
-				group = this._group,
-				map = group._map,
-				fg = group._featureGroup,
-				thisLayerLatLng = this._latlng,
-				thisLayerPos = map.latLngToLayerPoint(thisLayerLatLng),
-				svg = L.Path.SVG,
-				legOptions = L.extend({}, this._group.options.spiderLegPolylineOptions), // Copy the options so that we can modify them for animation.
-				finalLegOpacity = legOptions.opacity,
-				i, m, leg, legPath, legLength, newPos;
-
-			if (finalLegOpacity === undefined) {
-				finalLegOpacity = L.MarkerClusterGroup.prototype.options.spiderLegPolylineOptions.opacity;
-			}
-
-			if (svg) {
-				// If the initial opacity of the spider leg is not 0 then it appears before the animation starts.
-				legOptions.opacity = 0;
-
-				// Add the class for CSS transitions.
-				legOptions.className = (legOptions.className || '') + ' leaflet-cluster-spider-leg';
-			} else {
-				// Make sure we have a defined opacity.
-				legOptions.opacity = finalLegOpacity;
-			}
-
-			group._ignoreMove = true;
-
-			// Add markers and spider legs to map, hidden at our center point.
-			// Traverse in ascending order to make sure that inner circleMarkers are on top of further legs. Normal markers are re-ordered by newPosition.
-			// The reverse order trick no longer improves performance on modern browsers.
-			for (i = 0; i < childMarkers.length; i++) {
-				m = childMarkers[i];
-
-				newPos = map.layerPointToLatLng(positions[i]);
-
-				// Add the leg before the marker, so that in case the latter is a circleMarker, the leg is behind it.
-				leg = new L.Polyline([thisLayerLatLng, newPos], legOptions);
-				map.addLayer(leg);
-				m._spiderLeg = leg;
-
-				// Explanations: https://jakearchibald.com/2013/animated-line-drawing-svg/
-				// In our case the transition property is declared in the CSS file.
-				if (svg) {
-					legPath = leg._path;
-					legLength = legPath.getTotalLength() + 0.1; // Need a small extra length to avoid remaining dot in Firefox.
-					legPath.style.strokeDasharray = legLength; // Just 1 length is enough, it will be duplicated.
-					legPath.style.strokeDashoffset = legLength;
-				}
-
-				// If it is a marker, add it now and we'll animate it out
-				if (m.setZIndexOffset) {
-					m.setZIndexOffset(1000000); // Make normal markers appear on top of EVERYTHING
-				}
-				if (m.clusterHide) {
-					m.clusterHide();
-				}
-				
-				// Vectors just get immediately added
-				fg.addLayer(m);
-
-				if (m._setPos) {
-					m._setPos(thisLayerPos);
-				}
-			}
-
-			group._forceLayout();
-			group._animationStart();
-
-			// Reveal markers and spider legs.
-			for (i = childMarkers.length - 1; i >= 0; i--) {
-				newPos = map.layerPointToLatLng(positions[i]);
-				m = childMarkers[i];
-
-				//Move marker to new position
-				m._preSpiderfyLatlng = m._latlng;
-				m.setLatLng(newPos);
-				
-				if (m.clusterShow) {
-					m.clusterShow();
-				}
-
-				// Animate leg (animation is actually delegated to CSS transition).
-				if (svg) {
-					leg = m._spiderLeg;
-					legPath = leg._path;
-					legPath.style.strokeDashoffset = 0;
-					//legPath.style.strokeOpacity = finalLegOpacity;
-					leg.setStyle({opacity: finalLegOpacity});
-				}
-			}
-			this.setOpacity(0.3);
-
-			group._ignoreMove = false;
-
-			setTimeout(function () {
-				group._animationEnd();
-				group.fire('spiderfied', {
-					cluster: me,
-					markers: childMarkers
-				});
-			}, 200);
-		},
-
-		_animationUnspiderfy: function (zoomDetails) {
-			var me = this,
-				group = this._group,
-				map = group._map,
-				fg = group._featureGroup,
-				thisLayerPos = zoomDetails ? map._latLngToNewLayerPoint(this._latlng, zoomDetails.zoom, zoomDetails.center) : map.latLngToLayerPoint(this._latlng),
-				childMarkers = this.getAllChildMarkers(null, true),
-				svg = L.Path.SVG,
-				m, i, leg, legPath, legLength, nonAnimatable;
-
-			group._ignoreMove = true;
-			group._animationStart();
-
-			//Make us visible and bring the child markers back in
-			this.setOpacity(1);
-			for (i = childMarkers.length - 1; i >= 0; i--) {
-				m = childMarkers[i];
-
-				//Marker was added to us after we were spiderfied
-				if (!m._preSpiderfyLatlng) {
-					continue;
-				}
-
-				//Close any popup on the marker first, otherwise setting the location of the marker will make the map scroll
-				m.closePopup();
-
-				//Fix up the location to the real one
-				m.setLatLng(m._preSpiderfyLatlng);
-				delete m._preSpiderfyLatlng;
-
-				//Hack override the location to be our center
-				nonAnimatable = true;
-				if (m._setPos) {
-					m._setPos(thisLayerPos);
-					nonAnimatable = false;
-				}
-				if (m.clusterHide) {
-					m.clusterHide();
-					nonAnimatable = false;
-				}
-				if (nonAnimatable) {
-					fg.removeLayer(m);
-				}
-
-				// Animate the spider leg back in (animation is actually delegated to CSS transition).
-				if (svg) {
-					leg = m._spiderLeg;
-					legPath = leg._path;
-					legLength = legPath.getTotalLength() + 0.1;
-					legPath.style.strokeDashoffset = legLength;
-					leg.setStyle({opacity: 0});
-				}
-			}
-
-			group._ignoreMove = false;
-
-			setTimeout(function () {
-				//If we have only <= one child left then that marker will be shown on the map so don't remove it!
-				var stillThereChildCount = 0;
-				for (i = childMarkers.length - 1; i >= 0; i--) {
-					m = childMarkers[i];
-					if (m._spiderLeg) {
-						stillThereChildCount++;
-					}
-				}
-
-
-				for (i = childMarkers.length - 1; i >= 0; i--) {
-					m = childMarkers[i];
-
-					if (!m._spiderLeg) { //Has already been unspiderfied
-						continue;
-					}
-
-					if (m.clusterShow) {
-						m.clusterShow();
-					}
-					if (m.setZIndexOffset) {
-						m.setZIndexOffset(0);
-					}
-
-					if (stillThereChildCount > 1) {
-						fg.removeLayer(m);
-					}
-
-					map.removeLayer(m._spiderLeg);
-					delete m._spiderLeg;
-				}
-				group._animationEnd();
-				group.fire('unspiderfied', {
-					cluster: me,
-					markers: childMarkers
-				});
-			}, 200);
-		}
-	});
-
-
-	L.MarkerClusterGroup.include({
-		//The MarkerCluster currently spiderfied (if any)
-		_spiderfied: null,
-
-		unspiderfy: function () {
-			this._unspiderfy.apply(this, arguments);
-		},
-
-		_spiderfierOnAdd: function () {
-			this._map.on('click', this._unspiderfyWrapper, this);
-
-			if (this._map.options.zoomAnimation) {
-				this._map.on('zoomstart', this._unspiderfyZoomStart, this);
-			}
-			//Browsers without zoomAnimation or a big zoom don't fire zoomstart
-			this._map.on('zoomend', this._noanimationUnspiderfy, this);
-
-			if (!L.Browser.touch) {
-				this._map.getRenderer(this);
-				//Needs to happen in the pageload, not after, or animations don't work in webkit
-				//  http://stackoverflow.com/questions/8455200/svg-animate-with-dynamically-added-elements
-				//Disable on touch browsers as the animation messes up on a touch zoom and isn't very noticable
-			}
-		},
-
-		_spiderfierOnRemove: function () {
-			this._map.off('click', this._unspiderfyWrapper, this);
-			this._map.off('zoomstart', this._unspiderfyZoomStart, this);
-			this._map.off('zoomanim', this._unspiderfyZoomAnim, this);
-			this._map.off('zoomend', this._noanimationUnspiderfy, this);
-
-			//Ensure that markers are back where they should be
-			// Use no animation to avoid a sticky leaflet-cluster-anim class on mapPane
-			this._noanimationUnspiderfy();
-		},
-
-		//On zoom start we add a zoomanim handler so that we are guaranteed to be last (after markers are animated)
-		//This means we can define the animation they do rather than Markers doing an animation to their actual location
-		_unspiderfyZoomStart: function () {
-			if (!this._map) { //May have been removed from the map by a zoomEnd handler
-				return;
-			}
-
-			this._map.on('zoomanim', this._unspiderfyZoomAnim, this);
-		},
-
-		_unspiderfyZoomAnim: function (zoomDetails) {
-			//Wait until the first zoomanim after the user has finished touch-zooming before running the animation
-			if (L.DomUtil.hasClass(this._map._mapPane, 'leaflet-touching')) {
-				return;
-			}
-
-			this._map.off('zoomanim', this._unspiderfyZoomAnim, this);
-			this._unspiderfy(zoomDetails);
-		},
-
-		_unspiderfyWrapper: function () {
-			/// <summary>_unspiderfy but passes no arguments</summary>
-			this._unspiderfy();
-		},
-
-		_unspiderfy: function (zoomDetails) {
-			if (this._spiderfied) {
-				this._spiderfied.unspiderfy(zoomDetails);
-			}
-		},
-
-		_noanimationUnspiderfy: function () {
-			if (this._spiderfied) {
-				this._spiderfied._noanimationUnspiderfy();
-			}
-		},
-
-		//If the given layer is currently being spiderfied then we unspiderfy it so it isn't on the map anymore etc
-		_unspiderfyLayer: function (layer) {
-			if (layer._spiderLeg) {
-				this._featureGroup.removeLayer(layer);
-
-				if (layer.clusterShow) {
-					layer.clusterShow();
-				}
-					//Position will be fixed up immediately in _animationUnspiderfy
-				if (layer.setZIndexOffset) {
-					layer.setZIndexOffset(0);
-				}
-
-				this._map.removeLayer(layer._spiderLeg);
-				delete layer._spiderLeg;
-			}
-		}
-	});
-
-	/**
-	 * Adds 1 public method to MCG and 1 to L.Marker to facilitate changing
-	 * markers' icon options and refreshing their icon and their parent clusters
-	 * accordingly (case where their iconCreateFunction uses data of childMarkers
-	 * to make up the cluster icon).
-	 */
-
-
-	L.MarkerClusterGroup.include({
-		/**
-		 * Updates the icon of all clusters which are parents of the given marker(s).
-		 * In singleMarkerMode, also updates the given marker(s) icon.
-		 * @param layers L.MarkerClusterGroup|L.LayerGroup|Array(L.Marker)|Map(L.Marker)|
-		 * L.MarkerCluster|L.Marker (optional) list of markers (or single marker) whose parent
-		 * clusters need to be updated. If not provided, retrieves all child markers of this.
-		 * @returns {L.MarkerClusterGroup}
-		 */
-		refreshClusters: function (layers) {
-			if (!layers) {
-				layers = this._topClusterLevel.getAllChildMarkers();
-			} else if (layers instanceof L.MarkerClusterGroup) {
-				layers = layers._topClusterLevel.getAllChildMarkers();
-			} else if (layers instanceof L.LayerGroup) {
-				layers = layers._layers;
-			} else if (layers instanceof L.MarkerCluster) {
-				layers = layers.getAllChildMarkers();
-			} else if (layers instanceof L.Marker) {
-				layers = [layers];
-			} // else: must be an Array(L.Marker)|Map(L.Marker)
-			this._flagParentsIconsNeedUpdate(layers);
-			this._refreshClustersIcons();
-
-			// In case of singleMarkerMode, also re-draw the markers.
-			if (this.options.singleMarkerMode) {
-				this._refreshSingleMarkerModeMarkers(layers);
-			}
-
-			return this;
-		},
-
-		/**
-		 * Simply flags all parent clusters of the given markers as having a "dirty" icon.
-		 * @param layers Array(L.Marker)|Map(L.Marker) list of markers.
-		 * @private
-		 */
-		_flagParentsIconsNeedUpdate: function (layers) {
-			var id, parent;
-
-			// Assumes layers is an Array or an Object whose prototype is non-enumerable.
-			for (id in layers) {
-				// Flag parent clusters' icon as "dirty", all the way up.
-				// Dumb process that flags multiple times upper parents, but still
-				// much more efficient than trying to be smart and make short lists,
-				// at least in the case of a hierarchy following a power law:
-				// http://jsperf.com/flag-nodes-in-power-hierarchy/2
-				parent = layers[id].__parent;
-				while (parent) {
-					parent._iconNeedsUpdate = true;
-					parent = parent.__parent;
-				}
-			}
-		},
-
-		/**
-		 * Re-draws the icon of the supplied markers.
-		 * To be used in singleMarkerMode only.
-		 * @param layers Array(L.Marker)|Map(L.Marker) list of markers.
-		 * @private
-		 */
-		_refreshSingleMarkerModeMarkers: function (layers) {
-			var id, layer;
-
-			for (id in layers) {
-				layer = layers[id];
-
-				// Make sure we do not override markers that do not belong to THIS group.
-				if (this.hasLayer(layer)) {
-					// Need to re-create the icon first, then re-draw the marker.
-					layer.setIcon(this._overrideMarkerIcon(layer));
-				}
-			}
-		}
-	});
-
-	L.Marker.include({
-		/**
-		 * Updates the given options in the marker's icon and refreshes the marker.
-		 * @param options map object of icon options.
-		 * @param directlyRefreshClusters boolean (optional) true to trigger
-		 * MCG.refreshClustersOf() right away with this single marker.
-		 * @returns {L.Marker}
-		 */
-		refreshIconOptions: function (options, directlyRefreshClusters) {
-			var icon = this.options.icon;
-
-			L.setOptions(icon, options);
-
-			this.setIcon(icon);
-
-			// Shortcut to refresh the associated MCG clusters right away.
-			// To be used when refreshing a single marker.
-			// Otherwise, better use MCG.refreshClusters() once at the end with
-			// the list of modified markers.
-			if (directlyRefreshClusters && this.__parent) {
-				this.__parent._group.refreshClusters(this);
-			}
-
-			return this;
-		}
-	});
-
-	exports.MarkerClusterGroup = MarkerClusterGroup;
-	exports.MarkerCluster = MarkerCluster;
-
-	Object.defineProperty(exports, '__esModule', { value: true });
-
-}));
-//# sourceMappingURL=leaflet.markercluster-src.js.map
diff --git a/xcxMapWzzzz/lid/proj4.js b/xcxMapWzzzz/lid/proj4.js
deleted file mode 100644
index 0fdb880..0000000
--- a/xcxMapWzzzz/lid/proj4.js
+++ /dev/null
@@ -1,5485 +0,0 @@
-!function(e){if("object"==typeof exports)module.exports=e();else if("function"==typeof define&&define.amd)define(e);else{var f;"undefined"!=typeof window?f=window:"undefined"!=typeof global?f=global:"undefined"!=typeof self&&(f=self),f.proj4=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){
-var mgrs = _dereq_('mgrs');
-
-function Point(x, y, z) {
-  if (!(this instanceof Point)) {
-    return new Point(x, y, z);
-  }
-  if (Array.isArray(x)) {
-    this.x = x[0];
-    this.y = x[1];
-    this.z = x[2] || 0.0;
-  } else if(typeof x === 'object') {
-    this.x = x.x;
-    this.y = x.y;
-    this.z = x.z || 0.0;
-  } else if (typeof x === 'string' && typeof y === 'undefined') {
-    var coords = x.split(',');
-    this.x = parseFloat(coords[0], 10);
-    this.y = parseFloat(coords[1], 10);
-    this.z = parseFloat(coords[2], 10) || 0.0;
-  } else {
-    this.x = x;
-    this.y = y;
-    this.z = z || 0.0;
-  }
-  console.warn('proj4.Point will be removed in version 3, use proj4.toPoint');
-}
-
-Point.fromMGRS = function(mgrsStr) {
-  return new Point(mgrs.toPoint(mgrsStr));
-};
-Point.prototype.toMGRS = function(accuracy) {
-  return mgrs.forward([this.x, this.y], accuracy);
-};
-module.exports = Point;
-
-},{"mgrs":67}],2:[function(_dereq_,module,exports){
-var parseCode = _dereq_("./parseCode");
-var extend = _dereq_('./extend');
-var projections = _dereq_('./projections');
-var deriveConstants = _dereq_('./deriveConstants');
-
-function Projection(srsCode,callback) {
-  if (!(this instanceof Projection)) {
-    return new Projection(srsCode);
-  }
-  callback = callback || function(error){
-    if(error){
-      throw error;
-    }
-  };
-  var json = parseCode(srsCode);
-  if(typeof json !== 'object'){
-    callback(srsCode);
-    return;
-  }
-  var modifiedJSON = deriveConstants(json);
-  var ourProj = Projection.projections.get(modifiedJSON.projName);
-  if(ourProj){
-    extend(this, modifiedJSON);
-    extend(this, ourProj);
-    this.init();
-    callback(null, this);
-  }else{
-    callback(srsCode);
-  }
-}
-Projection.projections = projections;
-Projection.projections.start();
-module.exports = Projection;
-
-},{"./deriveConstants":33,"./extend":34,"./parseCode":37,"./projections":39}],3:[function(_dereq_,module,exports){
-module.exports = function(crs, denorm, point) {
-  var xin = point.x,
-    yin = point.y,
-    zin = point.z || 0.0;
-  var v, t, i;
-  for (i = 0; i < 3; i++) {
-    if (denorm && i === 2 && point.z === undefined) {
-      continue;
-    }
-    if (i === 0) {
-      v = xin;
-      t = 'x';
-    }
-    else if (i === 1) {
-      v = yin;
-      t = 'y';
-    }
-    else {
-      v = zin;
-      t = 'z';
-    }
-    switch (crs.axis[i]) {
-    case 'e':
-      point[t] = v;
-      break;
-    case 'w':
-      point[t] = -v;
-      break;
-    case 'n':
-      point[t] = v;
-      break;
-    case 's':
-      point[t] = -v;
-      break;
-    case 'u':
-      if (point[t] !== undefined) {
-        point.z = v;
-      }
-      break;
-    case 'd':
-      if (point[t] !== undefined) {
-        point.z = -v;
-      }
-      break;
-    default:
-      //console.log("ERROR: unknow axis ("+crs.axis[i]+") - check definition of "+crs.projName);
-      return null;
-    }
-  }
-  return point;
-};
-
-},{}],4:[function(_dereq_,module,exports){
-var HALF_PI = Math.PI/2;
-var sign = _dereq_('./sign');
-
-module.exports = function(x) {
-  return (Math.abs(x) < HALF_PI) ? x : (x - (sign(x) * Math.PI));
-};
-},{"./sign":21}],5:[function(_dereq_,module,exports){
-var TWO_PI = Math.PI * 2;
-// SPI is slightly greater than Math.PI, so values that exceed the -180..180
-// degree range by a tiny amount don't get wrapped. This prevents points that
-// have drifted from their original location along the 180th meridian (due to
-// floating point error) from changing their sign.
-var SPI = 3.14159265359;
-var sign = _dereq_('./sign');
-
-module.exports = function(x) {
-  return (Math.abs(x) <= SPI) ? x : (x - (sign(x) * TWO_PI));
-};
-},{"./sign":21}],6:[function(_dereq_,module,exports){
-module.exports = function(x) {
-  if (Math.abs(x) > 1) {
-    x = (x > 1) ? 1 : -1;
-  }
-  return Math.asin(x);
-};
-},{}],7:[function(_dereq_,module,exports){
-module.exports = function(x) {
-  return (1 - 0.25 * x * (1 + x / 16 * (3 + 1.25 * x)));
-};
-},{}],8:[function(_dereq_,module,exports){
-module.exports = function(x) {
-  return (0.375 * x * (1 + 0.25 * x * (1 + 0.46875 * x)));
-};
-},{}],9:[function(_dereq_,module,exports){
-module.exports = function(x) {
-  return (0.05859375 * x * x * (1 + 0.75 * x));
-};
-},{}],10:[function(_dereq_,module,exports){
-module.exports = function(x) {
-  return (x * x * x * (35 / 3072));
-};
-},{}],11:[function(_dereq_,module,exports){
-module.exports = function(a, e, sinphi) {
-  var temp = e * sinphi;
-  return a / Math.sqrt(1 - temp * temp);
-};
-},{}],12:[function(_dereq_,module,exports){
-module.exports = function(ml, e0, e1, e2, e3) {
-  var phi;
-  var dphi;
-
-  phi = ml / e0;
-  for (var i = 0; i < 15; i++) {
-    dphi = (ml - (e0 * phi - e1 * Math.sin(2 * phi) + e2 * Math.sin(4 * phi) - e3 * Math.sin(6 * phi))) / (e0 - 2 * e1 * Math.cos(2 * phi) + 4 * e2 * Math.cos(4 * phi) - 6 * e3 * Math.cos(6 * phi));
-    phi += dphi;
-    if (Math.abs(dphi) <= 0.0000000001) {
-      return phi;
-    }
-  }
-
-  //..reportError("IMLFN-CONV:Latitude failed to converge after 15 iterations");
-  return NaN;
-};
-},{}],13:[function(_dereq_,module,exports){
-var HALF_PI = Math.PI/2;
-
-module.exports = function(eccent, q) {
-  var temp = 1 - (1 - eccent * eccent) / (2 * eccent) * Math.log((1 - eccent) / (1 + eccent));
-  if (Math.abs(Math.abs(q) - temp) < 1.0E-6) {
-    if (q < 0) {
-      return (-1 * HALF_PI);
-    }
-    else {
-      return HALF_PI;
-    }
-  }
-  //var phi = 0.5* q/(1-eccent*eccent);
-  var phi = Math.asin(0.5 * q);
-  var dphi;
-  var sin_phi;
-  var cos_phi;
-  var con;
-  for (var i = 0; i < 30; i++) {
-    sin_phi = Math.sin(phi);
-    cos_phi = Math.cos(phi);
-    con = eccent * sin_phi;
-    dphi = Math.pow(1 - con * con, 2) / (2 * cos_phi) * (q / (1 - eccent * eccent) - sin_phi / (1 - con * con) + 0.5 / eccent * Math.log((1 - con) / (1 + con)));
-    phi += dphi;
-    if (Math.abs(dphi) <= 0.0000000001) {
-      return phi;
-    }
-  }
-
-  //console.log("IQSFN-CONV:Latitude failed to converge after 30 iterations");
-  return NaN;
-};
-},{}],14:[function(_dereq_,module,exports){
-module.exports = function(e0, e1, e2, e3, phi) {
-  return (e0 * phi - e1 * Math.sin(2 * phi) + e2 * Math.sin(4 * phi) - e3 * Math.sin(6 * phi));
-};
-},{}],15:[function(_dereq_,module,exports){
-module.exports = function(eccent, sinphi, cosphi) {
-  var con = eccent * sinphi;
-  return cosphi / (Math.sqrt(1 - con * con));
-};
-},{}],16:[function(_dereq_,module,exports){
-var HALF_PI = Math.PI/2;
-module.exports = function(eccent, ts) {
-  var eccnth = 0.5 * eccent;
-  var con, dphi;
-  var phi = HALF_PI - 2 * Math.atan(ts);
-  for (var i = 0; i <= 15; i++) {
-    con = eccent * Math.sin(phi);
-    dphi = HALF_PI - 2 * Math.atan(ts * (Math.pow(((1 - con) / (1 + con)), eccnth))) - phi;
-    phi += dphi;
-    if (Math.abs(dphi) <= 0.0000000001) {
-      return phi;
-    }
-  }
-  //console.log("phi2z has NoConvergence");
-  return -9999;
-};
-},{}],17:[function(_dereq_,module,exports){
-var C00 = 1;
-var C02 = 0.25;
-var C04 = 0.046875;
-var C06 = 0.01953125;
-var C08 = 0.01068115234375;
-var C22 = 0.75;
-var C44 = 0.46875;
-var C46 = 0.01302083333333333333;
-var C48 = 0.00712076822916666666;
-var C66 = 0.36458333333333333333;
-var C68 = 0.00569661458333333333;
-var C88 = 0.3076171875;
-
-module.exports = function(es) {
-  var en = [];
-  en[0] = C00 - es * (C02 + es * (C04 + es * (C06 + es * C08)));
-  en[1] = es * (C22 - es * (C04 + es * (C06 + es * C08)));
-  var t = es * es;
-  en[2] = t * (C44 - es * (C46 + es * C48));
-  t *= es;
-  en[3] = t * (C66 - es * C68);
-  en[4] = t * es * C88;
-  return en;
-};
-},{}],18:[function(_dereq_,module,exports){
-var pj_mlfn = _dereq_("./pj_mlfn");
-var EPSLN = 1.0e-10;
-var MAX_ITER = 20;
-module.exports = function(arg, es, en) {
-  var k = 1 / (1 - es);
-  var phi = arg;
-  for (var i = MAX_ITER; i; --i) { /* rarely goes over 2 iterations */
-    var s = Math.sin(phi);
-    var t = 1 - es * s * s;
-    //t = this.pj_mlfn(phi, s, Math.cos(phi), en) - arg;
-    //phi -= t * (t * Math.sqrt(t)) * k;
-    t = (pj_mlfn(phi, s, Math.cos(phi), en) - arg) * (t * Math.sqrt(t)) * k;
-    phi -= t;
-    if (Math.abs(t) < EPSLN) {
-      return phi;
-    }
-  }
-  //..reportError("cass:pj_inv_mlfn: Convergence error");
-  return phi;
-};
-},{"./pj_mlfn":19}],19:[function(_dereq_,module,exports){
-module.exports = function(phi, sphi, cphi, en) {
-  cphi *= sphi;
-  sphi *= sphi;
-  return (en[0] * phi - cphi * (en[1] + sphi * (en[2] + sphi * (en[3] + sphi * en[4]))));
-};
-},{}],20:[function(_dereq_,module,exports){
-module.exports = function(eccent, sinphi) {
-  var con;
-  if (eccent > 1.0e-7) {
-    con = eccent * sinphi;
-    return ((1 - eccent * eccent) * (sinphi / (1 - con * con) - (0.5 / eccent) * Math.log((1 - con) / (1 + con))));
-  }
-  else {
-    return (2 * sinphi);
-  }
-};
-},{}],21:[function(_dereq_,module,exports){
-module.exports = function(x) {
-  return x<0 ? -1 : 1;
-};
-},{}],22:[function(_dereq_,module,exports){
-module.exports = function(esinp, exp) {
-  return (Math.pow((1 - esinp) / (1 + esinp), exp));
-};
-},{}],23:[function(_dereq_,module,exports){
-module.exports = function (array){
-  var out = {
-    x: array[0],
-    y: array[1]
-  };
-  if (array.length>2) {
-    out.z = array[2];
-  }
-  if (array.length>3) {
-    out.m = array[3];
-  }
-  return out;
-};
-},{}],24:[function(_dereq_,module,exports){
-var HALF_PI = Math.PI/2;
-
-module.exports = function(eccent, phi, sinphi) {
-  var con = eccent * sinphi;
-  var com = 0.5 * eccent;
-  con = Math.pow(((1 - con) / (1 + con)), com);
-  return (Math.tan(0.5 * (HALF_PI - phi)) / con);
-};
-},{}],25:[function(_dereq_,module,exports){
-exports.wgs84 = {
-  towgs84: "0,0,0",
-  ellipse: "WGS84",
-  datumName: "WGS84"
-};
-exports.ch1903 = {
-  towgs84: "674.374,15.056,405.346",
-  ellipse: "bessel",
-  datumName: "swiss"
-};
-exports.ggrs87 = {
-  towgs84: "-199.87,74.79,246.62",
-  ellipse: "GRS80",
-  datumName: "Greek_Geodetic_Reference_System_1987"
-};
-exports.nad83 = {
-  towgs84: "0,0,0",
-  ellipse: "GRS80",
-  datumName: "North_American_Datum_1983"
-};
-exports.nad27 = {
-  nadgrids: "@conus,@alaska,@ntv2_0.gsb,@ntv1_can.dat",
-  ellipse: "clrk66",
-  datumName: "North_American_Datum_1927"
-};
-exports.potsdam = {
-  towgs84: "606.0,23.0,413.0",
-  ellipse: "bessel",
-  datumName: "Potsdam Rauenberg 1950 DHDN"
-};
-exports.carthage = {
-  towgs84: "-263.0,6.0,431.0",
-  ellipse: "clark80",
-  datumName: "Carthage 1934 Tunisia"
-};
-exports.hermannskogel = {
-  towgs84: "653.0,-212.0,449.0",
-  ellipse: "bessel",
-  datumName: "Hermannskogel"
-};
-exports.ire65 = {
-  towgs84: "482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15",
-  ellipse: "mod_airy",
-  datumName: "Ireland 1965"
-};
-exports.rassadiran = {
-  towgs84: "-133.63,-157.5,-158.62",
-  ellipse: "intl",
-  datumName: "Rassadiran"
-};
-exports.nzgd49 = {
-  towgs84: "59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993",
-  ellipse: "intl",
-  datumName: "New Zealand Geodetic Datum 1949"
-};
-exports.osgb36 = {
-  towgs84: "446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894",
-  ellipse: "airy",
-  datumName: "Airy 1830"
-};
-exports.s_jtsk = {
-  towgs84: "589,76,480",
-  ellipse: 'bessel',
-  datumName: 'S-JTSK (Ferro)'
-};
-exports.beduaram = {
-  towgs84: '-106,-87,188',
-  ellipse: 'clrk80',
-  datumName: 'Beduaram'
-};
-exports.gunung_segara = {
-  towgs84: '-403,684,41',
-  ellipse: 'bessel',
-  datumName: 'Gunung Segara Jakarta'
-};
-exports.rnb72 = {
-  towgs84: "106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1",
-  ellipse: "intl",
-  datumName: "Reseau National Belge 1972"
-};
-},{}],26:[function(_dereq_,module,exports){
-exports.MERIT = {
-  a: 6378137.0,
-  rf: 298.257,
-  ellipseName: "MERIT 1983"
-};
-exports.SGS85 = {
-  a: 6378136.0,
-  rf: 298.257,
-  ellipseName: "Soviet Geodetic System 85"
-};
-exports.GRS80 = {
-  a: 6378137.0,
-  rf: 298.257222101,
-  ellipseName: "GRS 1980(IUGG, 1980)"
-};
-exports.IAU76 = {
-  a: 6378140.0,
-  rf: 298.257,
-  ellipseName: "IAU 1976"
-};
-exports.airy = {
-  a: 6377563.396,
-  b: 6356256.910,
-  ellipseName: "Airy 1830"
-};
-exports.APL4 = {
-  a: 6378137,
-  rf: 298.25,
-  ellipseName: "Appl. Physics. 1965"
-};
-exports.NWL9D = {
-  a: 6378145.0,
-  rf: 298.25,
-  ellipseName: "Naval Weapons Lab., 1965"
-};
-exports.mod_airy = {
-  a: 6377340.189,
-  b: 6356034.446,
-  ellipseName: "Modified Airy"
-};
-exports.andrae = {
-  a: 6377104.43,
-  rf: 300.0,
-  ellipseName: "Andrae 1876 (Den., Iclnd.)"
-};
-exports.aust_SA = {
-  a: 6378160.0,
-  rf: 298.25,
-  ellipseName: "Australian Natl & S. Amer. 1969"
-};
-exports.GRS67 = {
-  a: 6378160.0,
-  rf: 298.2471674270,
-  ellipseName: "GRS 67(IUGG 1967)"
-};
-exports.bessel = {
-  a: 6377397.155,
-  rf: 299.1528128,
-  ellipseName: "Bessel 1841"
-};
-exports.bess_nam = {
-  a: 6377483.865,
-  rf: 299.1528128,
-  ellipseName: "Bessel 1841 (Namibia)"
-};
-exports.clrk66 = {
-  a: 6378206.4,
-  b: 6356583.8,
-  ellipseName: "Clarke 1866"
-};
-exports.clrk80 = {
-  a: 6378249.145,
-  rf: 293.4663,
-  ellipseName: "Clarke 1880 mod."
-};
-exports.clrk58 = {
-  a: 6378293.645208759,
-  rf: 294.2606763692654,
-  ellipseName: "Clarke 1858"
-};
-exports.CPM = {
-  a: 6375738.7,
-  rf: 334.29,
-  ellipseName: "Comm. des Poids et Mesures 1799"
-};
-exports.delmbr = {
-  a: 6376428.0,
-  rf: 311.5,
-  ellipseName: "Delambre 1810 (Belgium)"
-};
-exports.engelis = {
-  a: 6378136.05,
-  rf: 298.2566,
-  ellipseName: "Engelis 1985"
-};
-exports.evrst30 = {
-  a: 6377276.345,
-  rf: 300.8017,
-  ellipseName: "Everest 1830"
-};
-exports.evrst48 = {
-  a: 6377304.063,
-  rf: 300.8017,
-  ellipseName: "Everest 1948"
-};
-exports.evrst56 = {
-  a: 6377301.243,
-  rf: 300.8017,
-  ellipseName: "Everest 1956"
-};
-exports.evrst69 = {
-  a: 6377295.664,
-  rf: 300.8017,
-  ellipseName: "Everest 1969"
-};
-exports.evrstSS = {
-  a: 6377298.556,
-  rf: 300.8017,
-  ellipseName: "Everest (Sabah & Sarawak)"
-};
-exports.fschr60 = {
-  a: 6378166.0,
-  rf: 298.3,
-  ellipseName: "Fischer (Mercury Datum) 1960"
-};
-exports.fschr60m = {
-  a: 6378155.0,
-  rf: 298.3,
-  ellipseName: "Fischer 1960"
-};
-exports.fschr68 = {
-  a: 6378150.0,
-  rf: 298.3,
-  ellipseName: "Fischer 1968"
-};
-exports.helmert = {
-  a: 6378200.0,
-  rf: 298.3,
-  ellipseName: "Helmert 1906"
-};
-exports.hough = {
-  a: 6378270.0,
-  rf: 297.0,
-  ellipseName: "Hough"
-};
-exports.intl = {
-  a: 6378388.0,
-  rf: 297.0,
-  ellipseName: "International 1909 (Hayford)"
-};
-exports.kaula = {
-  a: 6378163.0,
-  rf: 298.24,
-  ellipseName: "Kaula 1961"
-};
-exports.lerch = {
-  a: 6378139.0,
-  rf: 298.257,
-  ellipseName: "Lerch 1979"
-};
-exports.mprts = {
-  a: 6397300.0,
-  rf: 191.0,
-  ellipseName: "Maupertius 1738"
-};
-exports.new_intl = {
-  a: 6378157.5,
-  b: 6356772.2,
-  ellipseName: "New International 1967"
-};
-exports.plessis = {
-  a: 6376523.0,
-  rf: 6355863.0,
-  ellipseName: "Plessis 1817 (France)"
-};
-exports.krass = {
-  a: 6378245.0,
-  rf: 298.3,
-  ellipseName: "Krassovsky, 1942"
-};
-exports.SEasia = {
-  a: 6378155.0,
-  b: 6356773.3205,
-  ellipseName: "Southeast Asia"
-};
-exports.walbeck = {
-  a: 6376896.0,
-  b: 6355834.8467,
-  ellipseName: "Walbeck"
-};
-exports.WGS60 = {
-  a: 6378165.0,
-  rf: 298.3,
-  ellipseName: "WGS 60"
-};
-exports.WGS66 = {
-  a: 6378145.0,
-  rf: 298.25,
-  ellipseName: "WGS 66"
-};
-exports.WGS7 = {
-  a: 6378135.0,
-  rf: 298.26,
-  ellipseName: "WGS 72"
-};
-exports.WGS84 = {
-  a: 6378137.0,
-  rf: 298.257223563,
-  ellipseName: "WGS 84"
-};
-exports.sphere = {
-  a: 6370997.0,
-  b: 6370997.0,
-  ellipseName: "Normal Sphere (r=6370997)"
-};
-},{}],27:[function(_dereq_,module,exports){
-exports.greenwich = 0.0; //"0dE",
-exports.lisbon = -9.131906111111; //"9d07'54.862\"W",
-exports.paris = 2.337229166667; //"2d20'14.025\"E",
-exports.bogota = -74.080916666667; //"74d04'51.3\"W",
-exports.madrid = -3.687938888889; //"3d41'16.58\"W",
-exports.rome = 12.452333333333; //"12d27'8.4\"E",
-exports.bern = 7.439583333333; //"7d26'22.5\"E",
-exports.jakarta = 106.807719444444; //"106d48'27.79\"E",
-exports.ferro = -17.666666666667; //"17d40'W",
-exports.brussels = 4.367975; //"4d22'4.71\"E",
-exports.stockholm = 18.058277777778; //"18d3'29.8\"E",
-exports.athens = 23.7163375; //"23d42'58.815\"E",
-exports.oslo = 10.722916666667; //"10d43'22.5\"E"
-},{}],28:[function(_dereq_,module,exports){
-exports.ft = {to_meter: 0.3048};
-exports['us-ft'] = {to_meter: 1200 / 3937};
-
-},{}],29:[function(_dereq_,module,exports){
-var proj = _dereq_('./Proj');
-var transform = _dereq_('./transform');
-var wgs84 = proj('WGS84');
-
-function transformer(from, to, coords) {
-  var transformedArray;
-  if (Array.isArray(coords)) {
-    transformedArray = transform(from, to, coords);
-    if (coords.length === 3) {
-      return [transformedArray.x, transformedArray.y, transformedArray.z];
-    }
-    else {
-      return [transformedArray.x, transformedArray.y];
-    }
-  }
-  else {
-    return transform(from, to, coords);
-  }
-}
-
-function checkProj(item) {
-  if (item instanceof proj) {
-    return item;
-  }
-  if (item.oProj) {
-    return item.oProj;
-  }
-  return proj(item);
-}
-function proj4(fromProj, toProj, coord) {
-  fromProj = checkProj(fromProj);
-  var single = false;
-  var obj;
-  if (typeof toProj === 'undefined') {
-    toProj = fromProj;
-    fromProj = wgs84;
-    single = true;
-  }
-  else if (typeof toProj.x !== 'undefined' || Array.isArray(toProj)) {
-    coord = toProj;
-    toProj = fromProj;
-    fromProj = wgs84;
-    single = true;
-  }
-  toProj = checkProj(toProj);
-  if (coord) {
-    return transformer(fromProj, toProj, coord);
-  }
-  else {
-    obj = {
-      forward: function(coords) {
-        return transformer(fromProj, toProj, coords);
-      },
-      inverse: function(coords) {
-        return transformer(toProj, fromProj, coords);
-      }
-    };
-    if (single) {
-      obj.oProj = toProj;
-    }
-    return obj;
-  }
-}
-module.exports = proj4;
-},{"./Proj":2,"./transform":65}],30:[function(_dereq_,module,exports){
-var HALF_PI = Math.PI/2;
-var PJD_3PARAM = 1;
-var PJD_7PARAM = 2;
-var PJD_GRIDSHIFT = 3;
-var PJD_WGS84 = 4; // WGS84 or equivalent
-var PJD_NODATUM = 5; // WGS84 or equivalent
-var SEC_TO_RAD = 4.84813681109535993589914102357e-6;
-var AD_C = 1.0026000;
-var COS_67P5 = 0.38268343236508977;
-var datum = function(proj) {
-  if (!(this instanceof datum)) {
-    return new datum(proj);
-  }
-  this.datum_type = PJD_WGS84; //default setting
-  if (!proj) {
-    return;
-  }
-  if (proj.datumCode && proj.datumCode === 'none') {
-    this.datum_type = PJD_NODATUM;
-  }
-
-  if (proj.datum_params) {
-    this.datum_params = proj.datum_params.map(parseFloat);
-    if (this.datum_params[0] !== 0 || this.datum_params[1] !== 0 || this.datum_params[2] !== 0) {
-      this.datum_type = PJD_3PARAM;
-    }
-    if (this.datum_params.length > 3) {
-      if (this.datum_params[3] !== 0 || this.datum_params[4] !== 0 || this.datum_params[5] !== 0 || this.datum_params[6] !== 0) {
-        this.datum_type = PJD_7PARAM;
-        this.datum_params[3] *= SEC_TO_RAD;
-        this.datum_params[4] *= SEC_TO_RAD;
-        this.datum_params[5] *= SEC_TO_RAD;
-        this.datum_params[6] = (this.datum_params[6] / 1000000.0) + 1.0;
-      }
-    }
-  }
-
-  // DGR 2011-03-21 : nadgrids support
-  this.datum_type = proj.grids ? PJD_GRIDSHIFT : this.datum_type;
-
-  this.a = proj.a; //datum object also uses these values
-  this.b = proj.b;
-  this.es = proj.es;
-  this.ep2 = proj.ep2;
-  if (this.datum_type === PJD_GRIDSHIFT) {
-    this.grids = proj.grids;
-  }
-};
-datum.prototype = {
-
-
-  /****************************************************************/
-  // cs_compare_datums()
-  //   Returns TRUE if the two datums match, otherwise FALSE.
-  compare_datums: function(dest) {
-    if (this.datum_type !== dest.datum_type) {
-      return false; // false, datums are not equal
-    }
-    else if (this.a !== dest.a || Math.abs(this.es - dest.es) > 0.000000000050) {
-      // the tolerence for es is to ensure that GRS80 and WGS84
-      // are considered identical
-      return false;
-    }
-    else if (this.datum_type === PJD_3PARAM) {
-      return (this.datum_params[0] === dest.datum_params[0] && this.datum_params[1] === dest.datum_params[1] && this.datum_params[2] === dest.datum_params[2]);
-    }
-    else if (this.datum_type === PJD_7PARAM) {
-      return (this.datum_params[0] === dest.datum_params[0] && this.datum_params[1] === dest.datum_params[1] && this.datum_params[2] === dest.datum_params[2] && this.datum_params[3] === dest.datum_params[3] && this.datum_params[4] === dest.datum_params[4] && this.datum_params[5] === dest.datum_params[5] && this.datum_params[6] === dest.datum_params[6]);
-    }
-    else if (this.datum_type === PJD_GRIDSHIFT || dest.datum_type === PJD_GRIDSHIFT) {
-      //alert("ERROR: Grid shift transformations are not implemented.");
-      //return false
-      //DGR 2012-07-29 lazy ...
-      return this.nadgrids === dest.nadgrids;
-    }
-    else {
-      return true; // datums are equal
-    }
-  }, // cs_compare_datums()
-
-  /*
-   * The function Convert_Geodetic_To_Geocentric converts geodetic coordinates
-   * (latitude, longitude, and height) to geocentric coordinates (X, Y, Z),
-   * according to the current ellipsoid parameters.
-   *
-   *    Latitude  : Geodetic latitude in radians                     (input)
-   *    Longitude : Geodetic longitude in radians                    (input)
-   *    Height    : Geodetic height, in meters                       (input)
-   *    X         : Calculated Geocentric X coordinate, in meters    (output)
-   *    Y         : Calculated Geocentric Y coordinate, in meters    (output)
-   *    Z         : Calculated Geocentric Z coordinate, in meters    (output)
-   *
-   */
-  geodetic_to_geocentric: function(p) {
-    var Longitude = p.x;
-    var Latitude = p.y;
-    var Height = p.z ? p.z : 0; //Z value not always supplied
-    var X; // output
-    var Y;
-    var Z;
-
-    var Error_Code = 0; //  GEOCENT_NO_ERROR;
-    var Rn; /*  Earth radius at location  */
-    var Sin_Lat; /*  Math.sin(Latitude)  */
-    var Sin2_Lat; /*  Square of Math.sin(Latitude)  */
-    var Cos_Lat; /*  Math.cos(Latitude)  */
-
-    /*
-     ** Don't blow up if Latitude is just a little out of the value
-     ** range as it may just be a rounding issue.  Also removed longitude
-     ** test, it should be wrapped by Math.cos() and Math.sin().  NFW for PROJ.4, Sep/2001.
-     */
-    if (Latitude < -HALF_PI && Latitude > -1.001 * HALF_PI) {
-      Latitude = -HALF_PI;
-    }
-    else if (Latitude > HALF_PI && Latitude < 1.001 * HALF_PI) {
-      Latitude = HALF_PI;
-    }
-    else if ((Latitude < -HALF_PI) || (Latitude > HALF_PI)) {
-      /* Latitude out of range */
-      //..reportError('geocent:lat out of range:' + Latitude);
-      return null;
-    }
-
-    if (Longitude > Math.PI) {
-      Longitude -= (2 * Math.PI);
-    }
-    Sin_Lat = Math.sin(Latitude);
-    Cos_Lat = Math.cos(Latitude);
-    Sin2_Lat = Sin_Lat * Sin_Lat;
-    Rn = this.a / (Math.sqrt(1.0e0 - this.es * Sin2_Lat));
-    X = (Rn + Height) * Cos_Lat * Math.cos(Longitude);
-    Y = (Rn + Height) * Cos_Lat * Math.sin(Longitude);
-    Z = ((Rn * (1 - this.es)) + Height) * Sin_Lat;
-
-    p.x = X;
-    p.y = Y;
-    p.z = Z;
-    return Error_Code;
-  }, // cs_geodetic_to_geocentric()
-
-
-  geocentric_to_geodetic: function(p) {
-    /* local defintions and variables */
-    /* end-criterium of loop, accuracy of sin(Latitude) */
-    var genau = 1e-12;
-    var genau2 = (genau * genau);
-    var maxiter = 30;
-
-    var P; /* distance between semi-minor axis and location */
-    var RR; /* distance between center and location */
-    var CT; /* sin of geocentric latitude */
-    var ST; /* cos of geocentric latitude */
-    var RX;
-    var RK;
-    var RN; /* Earth radius at location */
-    var CPHI0; /* cos of start or old geodetic latitude in iterations */
-    var SPHI0; /* sin of start or old geodetic latitude in iterations */
-    var CPHI; /* cos of searched geodetic latitude */
-    var SPHI; /* sin of searched geodetic latitude */
-    var SDPHI; /* end-criterium: addition-theorem of sin(Latitude(iter)-Latitude(iter-1)) */
-    var At_Pole; /* indicates location is in polar region */
-    var iter; /* # of continous iteration, max. 30 is always enough (s.a.) */
-
-    var X = p.x;
-    var Y = p.y;
-    var Z = p.z ? p.z : 0.0; //Z value not always supplied
-    var Longitude;
-    var Latitude;
-    var Height;
-
-    At_Pole = false;
-    P = Math.sqrt(X * X + Y * Y);
-    RR = Math.sqrt(X * X + Y * Y + Z * Z);
-
-    /*      special cases for latitude and longitude */
-    if (P / this.a < genau) {
-
-      /*  special case, if P=0. (X=0., Y=0.) */
-      At_Pole = true;
-      Longitude = 0.0;
-
-      /*  if (X,Y,Z)=(0.,0.,0.) then Height becomes semi-minor axis
-       *  of ellipsoid (=center of mass), Latitude becomes PI/2 */
-      if (RR / this.a < genau) {
-        Latitude = HALF_PI;
-        Height = -this.b;
-        return;
-      }
-    }
-    else {
-      /*  ellipsoidal (geodetic) longitude
-       *  interval: -PI < Longitude <= +PI */
-      Longitude = Math.atan2(Y, X);
-    }
-
-    /* --------------------------------------------------------------
-     * Following iterative algorithm was developped by
-     * "Institut for Erdmessung", University of Hannover, July 1988.
-     * Internet: www.ife.uni-hannover.de
-     * Iterative computation of CPHI,SPHI and Height.
-     * Iteration of CPHI and SPHI to 10**-12 radian resp.
-     * 2*10**-7 arcsec.
-     * --------------------------------------------------------------
-     */
-    CT = Z / RR;
-    ST = P / RR;
-    RX = 1.0 / Math.sqrt(1.0 - this.es * (2.0 - this.es) * ST * ST);
-    CPHI0 = ST * (1.0 - this.es) * RX;
-    SPHI0 = CT * RX;
-    iter = 0;
-
-    /* loop to find sin(Latitude) resp. Latitude
-     * until |sin(Latitude(iter)-Latitude(iter-1))| < genau */
-    do {
-      iter++;
-      RN = this.a / Math.sqrt(1.0 - this.es * SPHI0 * SPHI0);
-
-      /*  ellipsoidal (geodetic) height */
-      Height = P * CPHI0 + Z * SPHI0 - RN * (1.0 - this.es * SPHI0 * SPHI0);
-
-      RK = this.es * RN / (RN + Height);
-      RX = 1.0 / Math.sqrt(1.0 - RK * (2.0 - RK) * ST * ST);
-      CPHI = ST * (1.0 - RK) * RX;
-      SPHI = CT * RX;
-      SDPHI = SPHI * CPHI0 - CPHI * SPHI0;
-      CPHI0 = CPHI;
-      SPHI0 = SPHI;
-    }
-    while (SDPHI * SDPHI > genau2 && iter < maxiter);
-
-    /*      ellipsoidal (geodetic) latitude */
-    Latitude = Math.atan(SPHI / Math.abs(CPHI));
-
-    p.x = Longitude;
-    p.y = Latitude;
-    p.z = Height;
-    return p;
-  }, // cs_geocentric_to_geodetic()
-
-  /** Convert_Geocentric_To_Geodetic
-   * The method used here is derived from 'An Improved Algorithm for
-   * Geocentric to Geodetic Coordinate Conversion', by Ralph Toms, Feb 1996
-   */
-  geocentric_to_geodetic_noniter: function(p) {
-    var X = p.x;
-    var Y = p.y;
-    var Z = p.z ? p.z : 0; //Z value not always supplied
-    var Longitude;
-    var Latitude;
-    var Height;
-
-    var W; /* distance from Z axis */
-    var W2; /* square of distance from Z axis */
-    var T0; /* initial estimate of vertical component */
-    var T1; /* corrected estimate of vertical component */
-    var S0; /* initial estimate of horizontal component */
-    var S1; /* corrected estimate of horizontal component */
-    var Sin_B0; /* Math.sin(B0), B0 is estimate of Bowring aux variable */
-    var Sin3_B0; /* cube of Math.sin(B0) */
-    var Cos_B0; /* Math.cos(B0) */
-    var Sin_p1; /* Math.sin(phi1), phi1 is estimated latitude */
-    var Cos_p1; /* Math.cos(phi1) */
-    var Rn; /* Earth radius at location */
-    var Sum; /* numerator of Math.cos(phi1) */
-    var At_Pole; /* indicates location is in polar region */
-
-    X = parseFloat(X); // cast from string to float
-    Y = parseFloat(Y);
-    Z = parseFloat(Z);
-
-    At_Pole = false;
-    if (X !== 0.0) {
-      Longitude = Math.atan2(Y, X);
-    }
-    else {
-      if (Y > 0) {
-        Longitude = HALF_PI;
-      }
-      else if (Y < 0) {
-        Longitude = -HALF_PI;
-      }
-      else {
-        At_Pole = true;
-        Longitude = 0.0;
-        if (Z > 0.0) { /* north pole */
-          Latitude = HALF_PI;
-        }
-        else if (Z < 0.0) { /* south pole */
-          Latitude = -HALF_PI;
-        }
-        else { /* center of earth */
-          Latitude = HALF_PI;
-          Height = -this.b;
-          return;
-        }
-      }
-    }
-    W2 = X * X + Y * Y;
-    W = Math.sqrt(W2);
-    T0 = Z * AD_C;
-    S0 = Math.sqrt(T0 * T0 + W2);
-    Sin_B0 = T0 / S0;
-    Cos_B0 = W / S0;
-    Sin3_B0 = Sin_B0 * Sin_B0 * Sin_B0;
-    T1 = Z + this.b * this.ep2 * Sin3_B0;
-    Sum = W - this.a * this.es * Cos_B0 * Cos_B0 * Cos_B0;
-    S1 = Math.sqrt(T1 * T1 + Sum * Sum);
-    Sin_p1 = T1 / S1;
-    Cos_p1 = Sum / S1;
-    Rn = this.a / Math.sqrt(1.0 - this.es * Sin_p1 * Sin_p1);
-    if (Cos_p1 >= COS_67P5) {
-      Height = W / Cos_p1 - Rn;
-    }
-    else if (Cos_p1 <= -COS_67P5) {
-      Height = W / -Cos_p1 - Rn;
-    }
-    else {
-      Height = Z / Sin_p1 + Rn * (this.es - 1.0);
-    }
-    if (At_Pole === false) {
-      Latitude = Math.atan(Sin_p1 / Cos_p1);
-    }
-
-    p.x = Longitude;
-    p.y = Latitude;
-    p.z = Height;
-    return p;
-  }, // geocentric_to_geodetic_noniter()
-
-  /****************************************************************/
-  // pj_geocentic_to_wgs84( p )
-  //  p = point to transform in geocentric coordinates (x,y,z)
-  geocentric_to_wgs84: function(p) {
-
-    if (this.datum_type === PJD_3PARAM) {
-      // if( x[io] === HUGE_VAL )
-      //    continue;
-      p.x += this.datum_params[0];
-      p.y += this.datum_params[1];
-      p.z += this.datum_params[2];
-
-    }
-    else if (this.datum_type === PJD_7PARAM) {
-      var Dx_BF = this.datum_params[0];
-      var Dy_BF = this.datum_params[1];
-      var Dz_BF = this.datum_params[2];
-      var Rx_BF = this.datum_params[3];
-      var Ry_BF = this.datum_params[4];
-      var Rz_BF = this.datum_params[5];
-      var M_BF = this.datum_params[6];
-      // if( x[io] === HUGE_VAL )
-      //    continue;
-      var x_out = M_BF * (p.x - Rz_BF * p.y + Ry_BF * p.z) + Dx_BF;
-      var y_out = M_BF * (Rz_BF * p.x + p.y - Rx_BF * p.z) + Dy_BF;
-      var z_out = M_BF * (-Ry_BF * p.x + Rx_BF * p.y + p.z) + Dz_BF;
-      p.x = x_out;
-      p.y = y_out;
-      p.z = z_out;
-    }
-  }, // cs_geocentric_to_wgs84
-
-  /****************************************************************/
-  // pj_geocentic_from_wgs84()
-  //  coordinate system definition,
-  //  point to transform in geocentric coordinates (x,y,z)
-  geocentric_from_wgs84: function(p) {
-
-    if (this.datum_type === PJD_3PARAM) {
-      //if( x[io] === HUGE_VAL )
-      //    continue;
-      p.x -= this.datum_params[0];
-      p.y -= this.datum_params[1];
-      p.z -= this.datum_params[2];
-
-    }
-    else if (this.datum_type === PJD_7PARAM) {
-      var Dx_BF = this.datum_params[0];
-      var Dy_BF = this.datum_params[1];
-      var Dz_BF = this.datum_params[2];
-      var Rx_BF = this.datum_params[3];
-      var Ry_BF = this.datum_params[4];
-      var Rz_BF = this.datum_params[5];
-      var M_BF = this.datum_params[6];
-      var x_tmp = (p.x - Dx_BF) / M_BF;
-      var y_tmp = (p.y - Dy_BF) / M_BF;
-      var z_tmp = (p.z - Dz_BF) / M_BF;
-      //if( x[io] === HUGE_VAL )
-      //    continue;
-
-      p.x = x_tmp + Rz_BF * y_tmp - Ry_BF * z_tmp;
-      p.y = -Rz_BF * x_tmp + y_tmp + Rx_BF * z_tmp;
-      p.z = Ry_BF * x_tmp - Rx_BF * y_tmp + z_tmp;
-    } //cs_geocentric_from_wgs84()
-  }
-};
-
-/** point object, nothing fancy, just allows values to be
-    passed back and forth by reference rather than by value.
-    Other point classes may be used as long as they have
-    x and y properties, which will get modified in the transform method.
-*/
-module.exports = datum;
-
-},{}],31:[function(_dereq_,module,exports){
-var PJD_3PARAM = 1;
-var PJD_7PARAM = 2;
-var PJD_GRIDSHIFT = 3;
-var PJD_NODATUM = 5; // WGS84 or equivalent
-var SRS_WGS84_SEMIMAJOR = 6378137; // only used in grid shift transforms
-var SRS_WGS84_ESQUARED = 0.006694379990141316; //DGR: 2012-07-29
-module.exports = function(source, dest, point) {
-  var wp, i, l;
-
-  function checkParams(fallback) {
-    return (fallback === PJD_3PARAM || fallback === PJD_7PARAM);
-  }
-  // Short cut if the datums are identical.
-  if (source.compare_datums(dest)) {
-    return point; // in this case, zero is sucess,
-    // whereas cs_compare_datums returns 1 to indicate TRUE
-    // confusing, should fix this
-  }
-
-  // Explicitly skip datum transform by setting 'datum=none' as parameter for either source or dest
-  if (source.datum_type === PJD_NODATUM || dest.datum_type === PJD_NODATUM) {
-    return point;
-  }
-
-  //DGR: 2012-07-29 : add nadgrids support (begin)
-  var src_a = source.a;
-  var src_es = source.es;
-
-  var dst_a = dest.a;
-  var dst_es = dest.es;
-
-  var fallback = source.datum_type;
-  // If this datum requires grid shifts, then apply it to geodetic coordinates.
-  if (fallback === PJD_GRIDSHIFT) {
-    if (this.apply_gridshift(source, 0, point) === 0) {
-      source.a = SRS_WGS84_SEMIMAJOR;
-      source.es = SRS_WGS84_ESQUARED;
-    }
-    else {
-      // try 3 or 7 params transformation or nothing ?
-      if (!source.datum_params) {
-        source.a = src_a;
-        source.es = source.es;
-        return point;
-      }
-      wp = 1;
-      for (i = 0, l = source.datum_params.length; i < l; i++) {
-        wp *= source.datum_params[i];
-      }
-      if (wp === 0) {
-        source.a = src_a;
-        source.es = source.es;
-        return point;
-      }
-      if (source.datum_params.length > 3) {
-        fallback = PJD_7PARAM;
-      }
-      else {
-        fallback = PJD_3PARAM;
-      }
-    }
-  }
-  if (dest.datum_type === PJD_GRIDSHIFT) {
-    dest.a = SRS_WGS84_SEMIMAJOR;
-    dest.es = SRS_WGS84_ESQUARED;
-  }
-  // Do we need to go through geocentric coordinates?
-  if (source.es !== dest.es || source.a !== dest.a || checkParams(fallback) || checkParams(dest.datum_type)) {
-    //DGR: 2012-07-29 : add nadgrids support (end)
-    // Convert to geocentric coordinates.
-    source.geodetic_to_geocentric(point);
-    // CHECK_RETURN;
-    // Convert between datums
-    if (checkParams(source.datum_type)) {
-      source.geocentric_to_wgs84(point);
-      // CHECK_RETURN;
-    }
-    if (checkParams(dest.datum_type)) {
-      dest.geocentric_from_wgs84(point);
-      // CHECK_RETURN;
-    }
-    // Convert back to geodetic coordinates
-    dest.geocentric_to_geodetic(point);
-    // CHECK_RETURN;
-  }
-  // Apply grid shift to destination if required
-  if (dest.datum_type === PJD_GRIDSHIFT) {
-    this.apply_gridshift(dest, 1, point);
-    // CHECK_RETURN;
-  }
-
-  source.a = src_a;
-  source.es = src_es;
-  dest.a = dst_a;
-  dest.es = dst_es;
-
-  return point;
-};
-
-
-},{}],32:[function(_dereq_,module,exports){
-var globals = _dereq_('./global');
-var parseProj = _dereq_('./projString');
-var wkt = _dereq_('./wkt');
-
-function defs(name) {
-  /*global console*/
-  var that = this;
-  if (arguments.length === 2) {
-    var def = arguments[1];
-    if (typeof def === 'string') {
-      if (def.charAt(0) === '+') {
-        defs[name] = parseProj(arguments[1]);
-      }
-      else {
-        defs[name] = wkt(arguments[1]);
-      }
-    } else {
-      defs[name] = def;
-    }
-  }
-  else if (arguments.length === 1) {
-    if (Array.isArray(name)) {
-      return name.map(function(v) {
-        if (Array.isArray(v)) {
-          defs.apply(that, v);
-        }
-        else {
-          defs(v);
-        }
-      });
-    }
-    else if (typeof name === 'string') {
-      if (name in defs) {
-        return defs[name];
-      }
-    }
-    else if ('EPSG' in name) {
-      defs['EPSG:' + name.EPSG] = name;
-    }
-    else if ('ESRI' in name) {
-      defs['ESRI:' + name.ESRI] = name;
-    }
-    else if ('IAU2000' in name) {
-      defs['IAU2000:' + name.IAU2000] = name;
-    }
-    else {
-      console.log(name);
-    }
-    return;
-  }
-
-
-}
-globals(defs);
-module.exports = defs;
-
-},{"./global":35,"./projString":38,"./wkt":66}],33:[function(_dereq_,module,exports){
-var Datum = _dereq_('./constants/Datum');
-var Ellipsoid = _dereq_('./constants/Ellipsoid');
-var extend = _dereq_('./extend');
-var datum = _dereq_('./datum');
-var EPSLN = 1.0e-10;
-// ellipoid pj_set_ell.c
-var SIXTH = 0.1666666666666666667;
-/* 1/6 */
-var RA4 = 0.04722222222222222222;
-/* 17/360 */
-var RA6 = 0.02215608465608465608;
-module.exports = function(json) {
-  // DGR 2011-03-20 : nagrids -> nadgrids
-  if (json.datumCode && json.datumCode !== 'none') {
-    var datumDef = Datum[json.datumCode];
-    if (datumDef) {
-      json.datum_params = datumDef.towgs84 ? datumDef.towgs84.split(',') : null;
-      json.ellps = datumDef.ellipse;
-      json.datumName = datumDef.datumName ? datumDef.datumName : json.datumCode;
-    }
-  }
-  if (!json.a) { // do we have an ellipsoid?
-    var ellipse = Ellipsoid[json.ellps] ? Ellipsoid[json.ellps] : Ellipsoid.WGS84;
-    extend(json, ellipse);
-  }
-  if (json.rf && !json.b) {
-    json.b = (1.0 - 1.0 / json.rf) * json.a;
-  }
-  if (json.rf === 0 || Math.abs(json.a - json.b) < EPSLN) {
-    json.sphere = true;
-    json.b = json.a;
-  }
-  json.a2 = json.a * json.a; // used in geocentric
-  json.b2 = json.b * json.b; // used in geocentric
-  json.es = (json.a2 - json.b2) / json.a2; // e ^ 2
-  json.e = Math.sqrt(json.es); // eccentricity
-  if (json.R_A) {
-    json.a *= 1 - json.es * (SIXTH + json.es * (RA4 + json.es * RA6));
-    json.a2 = json.a * json.a;
-    json.b2 = json.b * json.b;
-    json.es = 0;
-  }
-  json.ep2 = (json.a2 - json.b2) / json.b2; // used in geocentric
-  if (!json.k0) {
-    json.k0 = 1.0; //default value
-  }
-  //DGR 2010-11-12: axis
-  if (!json.axis) {
-    json.axis = "enu";
-  }
-
-  if (!json.datum) {
-    json.datum = datum(json);
-  }
-  return json;
-};
-
-},{"./constants/Datum":25,"./constants/Ellipsoid":26,"./datum":30,"./extend":34}],34:[function(_dereq_,module,exports){
-module.exports = function(destination, source) {
-  destination = destination || {};
-  var value, property;
-  if (!source) {
-    return destination;
-  }
-  for (property in source) {
-    value = source[property];
-    if (value !== undefined) {
-      destination[property] = value;
-    }
-  }
-  return destination;
-};
-
-},{}],35:[function(_dereq_,module,exports){
-module.exports = function(defs) {
-  defs('EPSG:4326', "+title=WGS 84 (long/lat) +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees");
-  defs('EPSG:4269', "+title=NAD83 (long/lat) +proj=longlat +a=6378137.0 +b=6356752.31414036 +ellps=GRS80 +datum=NAD83 +units=degrees");
-  defs('EPSG:3857', "+title=WGS 84 / Pseudo-Mercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs");
-
-  defs.WGS84 = defs['EPSG:4326'];
-  defs['EPSG:3785'] = defs['EPSG:3857']; // maintain backward compat, official code is 3857
-  defs.GOOGLE = defs['EPSG:3857'];
-  defs['EPSG:900913'] = defs['EPSG:3857'];
-  defs['EPSG:102113'] = defs['EPSG:3857'];
-};
-
-},{}],36:[function(_dereq_,module,exports){
-var proj4 = _dereq_('./core');
-proj4.defaultDatum = 'WGS84'; //default datum
-proj4.Proj = _dereq_('./Proj');
-proj4.WGS84 = new proj4.Proj('WGS84');
-proj4.Point = _dereq_('./Point');
-proj4.toPoint = _dereq_("./common/toPoint");
-proj4.defs = _dereq_('./defs');
-proj4.transform = _dereq_('./transform');
-proj4.mgrs = _dereq_('mgrs');
-proj4.version = _dereq_('../package.json').version;
-_dereq_('./includedProjections')(proj4);
-module.exports = proj4;
-},{"../package.json":68,"./Point":1,"./Proj":2,"./common/toPoint":23,"./core":29,"./defs":32,"./includedProjections":"hTEDpn","./transform":65,"mgrs":67}],37:[function(_dereq_,module,exports){
-var defs = _dereq_('./defs');
-var wkt = _dereq_('./wkt');
-var projStr = _dereq_('./projString');
-function testObj(code){
-  return typeof code === 'string';
-}
-function testDef(code){
-  return code in defs;
-}
-function testWKT(code){
-  var codeWords = ['GEOGCS','GEOCCS','PROJCS','LOCAL_CS'];
-  return codeWords.reduce(function(a,b){
-    return a+1+code.indexOf(b);
-  },0);
-}
-function testProj(code){
-  return code[0] === '+';
-}
-function parse(code){
-  if (testObj(code)) {
-    //check to see if this is a WKT string
-    if (testDef(code)) {
-      return defs[code];
-    }
-    else if (testWKT(code)) {
-      return wkt(code);
-    }
-    else if (testProj(code)) {
-      return projStr(code);
-    }
-  }else{
-    return code;
-  }
-}
-
-module.exports = parse;
-},{"./defs":32,"./projString":38,"./wkt":66}],38:[function(_dereq_,module,exports){
-var D2R = 0.01745329251994329577;
-var PrimeMeridian = _dereq_('./constants/PrimeMeridian');
-var units = _dereq_('./constants/units');
-
-module.exports = function(defData) {
-  var self = {};
-  var paramObj = {};
-  defData.split("+").map(function(v) {
-    return v.trim();
-  }).filter(function(a) {
-    return a;
-  }).forEach(function(a) {
-    var split = a.split("=");
-    split.push(true);
-    paramObj[split[0].toLowerCase()] = split[1];
-  });
-  var paramName, paramVal, paramOutname;
-  var params = {
-    proj: 'projName',
-    datum: 'datumCode',
-    rf: function(v) {
-      self.rf = parseFloat(v);
-    },
-    lat_0: function(v) {
-      self.lat0 = v * D2R;
-    },
-    lat_1: function(v) {
-      self.lat1 = v * D2R;
-    },
-    lat_2: function(v) {
-      self.lat2 = v * D2R;
-    },
-    lat_ts: function(v) {
-      self.lat_ts = v * D2R;
-    },
-    lon_0: function(v) {
-      self.long0 = v * D2R;
-    },
-    lon_1: function(v) {
-      self.long1 = v * D2R;
-    },
-    lon_2: function(v) {
-      self.long2 = v * D2R;
-    },
-    alpha: function(v) {
-      self.alpha = parseFloat(v) * D2R;
-    },
-    lonc: function(v) {
-      self.longc = v * D2R;
-    },
-    x_0: function(v) {
-      self.x0 = parseFloat(v);
-    },
-    y_0: function(v) {
-      self.y0 = parseFloat(v);
-    },
-    k_0: function(v) {
-      self.k0 = parseFloat(v);
-    },
-    k: function(v) {
-      self.k0 = parseFloat(v);
-    },
-    a: function(v) {
-      self.a = parseFloat(v);
-    },
-    b: function(v) {
-      self.b = parseFloat(v);
-    },
-    r_a: function() {
-      self.R_A = true;
-    },
-    zone: function(v) {
-      self.zone = parseInt(v, 10);
-    },
-    south: function() {
-      self.utmSouth = true;
-    },
-    towgs84: function(v) {
-      self.datum_params = v.split(",").map(function(a) {
-        return parseFloat(a);
-      });
-    },
-    to_meter: function(v) {
-      self.to_meter = parseFloat(v);
-    },
-    units: function(v) {
-      self.units = v;
-      if (units[v]) {
-        self.to_meter = units[v].to_meter;
-      }
-    },
-    from_greenwich: function(v) {
-      self.from_greenwich = v * D2R;
-    },
-    pm: function(v) {
-      self.from_greenwich = (PrimeMeridian[v] ? PrimeMeridian[v] : parseFloat(v)) * D2R;
-    },
-    nadgrids: function(v) {
-      if (v === '@null') {
-        self.datumCode = 'none';
-      }
-      else {
-        self.nadgrids = v;
-      }
-    },
-    axis: function(v) {
-      var legalAxis = "ewnsud";
-      if (v.length === 3 && legalAxis.indexOf(v.substr(0, 1)) !== -1 && legalAxis.indexOf(v.substr(1, 1)) !== -1 && legalAxis.indexOf(v.substr(2, 1)) !== -1) {
-        self.axis = v;
-      }
-    }
-  };
-  for (paramName in paramObj) {
-    paramVal = paramObj[paramName];
-    if (paramName in params) {
-      paramOutname = params[paramName];
-      if (typeof paramOutname === 'function') {
-        paramOutname(paramVal);
-      }
-      else {
-        self[paramOutname] = paramVal;
-      }
-    }
-    else {
-      self[paramName] = paramVal;
-    }
-  }
-  if(typeof self.datumCode === 'string' && self.datumCode !== "WGS84"){
-    self.datumCode = self.datumCode.toLowerCase();
-  }
-  return self;
-};
-
-},{"./constants/PrimeMeridian":27,"./constants/units":28}],39:[function(_dereq_,module,exports){
-var projs = [
-  _dereq_('./projections/merc'),
-  _dereq_('./projections/longlat')
-];
-var names = {};
-var projStore = [];
-
-function add(proj, i) {
-  var len = projStore.length;
-  if (!proj.names) {
-    console.log(i);
-    return true;
-  }
-  projStore[len] = proj;
-  proj.names.forEach(function(n) {
-    names[n.toLowerCase()] = len;
-  });
-  return this;
-}
-
-exports.add = add;
-
-exports.get = function(name) {
-  if (!name) {
-    return false;
-  }
-  var n = name.toLowerCase();
-  if (typeof names[n] !== 'undefined' && projStore[names[n]]) {
-    return projStore[names[n]];
-  }
-};
-exports.start = function() {
-  projs.forEach(add);
-};
-
-},{"./projections/longlat":51,"./projections/merc":52}],40:[function(_dereq_,module,exports){
-var EPSLN = 1.0e-10;
-var msfnz = _dereq_('../common/msfnz');
-var qsfnz = _dereq_('../common/qsfnz');
-var adjust_lon = _dereq_('../common/adjust_lon');
-var asinz = _dereq_('../common/asinz');
-exports.init = function() {
-
-  if (Math.abs(this.lat1 + this.lat2) < EPSLN) {
-    return;
-  }
-  this.temp = this.b / this.a;
-  this.es = 1 - Math.pow(this.temp, 2);
-  this.e3 = Math.sqrt(this.es);
-
-  this.sin_po = Math.sin(this.lat1);
-  this.cos_po = Math.cos(this.lat1);
-  this.t1 = this.sin_po;
-  this.con = this.sin_po;
-  this.ms1 = msfnz(this.e3, this.sin_po, this.cos_po);
-  this.qs1 = qsfnz(this.e3, this.sin_po, this.cos_po);
-
-  this.sin_po = Math.sin(this.lat2);
-  this.cos_po = Math.cos(this.lat2);
-  this.t2 = this.sin_po;
-  this.ms2 = msfnz(this.e3, this.sin_po, this.cos_po);
-  this.qs2 = qsfnz(this.e3, this.sin_po, this.cos_po);
-
-  this.sin_po = Math.sin(this.lat0);
-  this.cos_po = Math.cos(this.lat0);
-  this.t3 = this.sin_po;
-  this.qs0 = qsfnz(this.e3, this.sin_po, this.cos_po);
-
-  if (Math.abs(this.lat1 - this.lat2) > EPSLN) {
-    this.ns0 = (this.ms1 * this.ms1 - this.ms2 * this.ms2) / (this.qs2 - this.qs1);
-  }
-  else {
-    this.ns0 = this.con;
-  }
-  this.c = this.ms1 * this.ms1 + this.ns0 * this.qs1;
-  this.rh = this.a * Math.sqrt(this.c - this.ns0 * this.qs0) / this.ns0;
-};
-
-/* Albers Conical Equal Area forward equations--mapping lat,long to x,y
-  -------------------------------------------------------------------*/
-exports.forward = function(p) {
-
-  var lon = p.x;
-  var lat = p.y;
-
-  this.sin_phi = Math.sin(lat);
-  this.cos_phi = Math.cos(lat);
-
-  var qs = qsfnz(this.e3, this.sin_phi, this.cos_phi);
-  var rh1 = this.a * Math.sqrt(this.c - this.ns0 * qs) / this.ns0;
-  var theta = this.ns0 * adjust_lon(lon - this.long0);
-  var x = rh1 * Math.sin(theta) + this.x0;
-  var y = this.rh - rh1 * Math.cos(theta) + this.y0;
-
-  p.x = x;
-  p.y = y;
-  return p;
-};
-
-
-exports.inverse = function(p) {
-  var rh1, qs, con, theta, lon, lat;
-
-  p.x -= this.x0;
-  p.y = this.rh - p.y + this.y0;
-  if (this.ns0 >= 0) {
-    rh1 = Math.sqrt(p.x * p.x + p.y * p.y);
-    con = 1;
-  }
-  else {
-    rh1 = -Math.sqrt(p.x * p.x + p.y * p.y);
-    con = -1;
-  }
-  theta = 0;
-  if (rh1 !== 0) {
-    theta = Math.atan2(con * p.x, con * p.y);
-  }
-  con = rh1 * this.ns0 / this.a;
-  if (this.sphere) {
-    lat = Math.asin((this.c - con * con) / (2 * this.ns0));
-  }
-  else {
-    qs = (this.c - con * con) / this.ns0;
-    lat = this.phi1z(this.e3, qs);
-  }
-
-  lon = adjust_lon(theta / this.ns0 + this.long0);
-  p.x = lon;
-  p.y = lat;
-  return p;
-};
-
-/* Function to compute phi1, the latitude for the inverse of the
-   Albers Conical Equal-Area projection.
--------------------------------------------*/
-exports.phi1z = function(eccent, qs) {
-  var sinphi, cosphi, con, com, dphi;
-  var phi = asinz(0.5 * qs);
-  if (eccent < EPSLN) {
-    return phi;
-  }
-
-  var eccnts = eccent * eccent;
-  for (var i = 1; i <= 25; i++) {
-    sinphi = Math.sin(phi);
-    cosphi = Math.cos(phi);
-    con = eccent * sinphi;
-    com = 1 - con * con;
-    dphi = 0.5 * com * com / cosphi * (qs / (1 - eccnts) - sinphi / com + 0.5 / eccent * Math.log((1 - con) / (1 + con)));
-    phi = phi + dphi;
-    if (Math.abs(dphi) <= 1e-7) {
-      return phi;
-    }
-  }
-  return null;
-};
-exports.names = ["Albers_Conic_Equal_Area", "Albers", "aea"];
-
-},{"../common/adjust_lon":5,"../common/asinz":6,"../common/msfnz":15,"../common/qsfnz":20}],41:[function(_dereq_,module,exports){
-var adjust_lon = _dereq_('../common/adjust_lon');
-var HALF_PI = Math.PI/2;
-var EPSLN = 1.0e-10;
-var mlfn = _dereq_('../common/mlfn');
-var e0fn = _dereq_('../common/e0fn');
-var e1fn = _dereq_('../common/e1fn');
-var e2fn = _dereq_('../common/e2fn');
-var e3fn = _dereq_('../common/e3fn');
-var gN = _dereq_('../common/gN');
-var asinz = _dereq_('../common/asinz');
-var imlfn = _dereq_('../common/imlfn');
-exports.init = function() {
-  this.sin_p12 = Math.sin(this.lat0);
-  this.cos_p12 = Math.cos(this.lat0);
-};
-
-exports.forward = function(p) {
-  var lon = p.x;
-  var lat = p.y;
-  var sinphi = Math.sin(p.y);
-  var cosphi = Math.cos(p.y);
-  var dlon = adjust_lon(lon - this.long0);
-  var e0, e1, e2, e3, Mlp, Ml, tanphi, Nl1, Nl, psi, Az, G, H, GH, Hs, c, kp, cos_c, s, s2, s3, s4, s5;
-  if (this.sphere) {
-    if (Math.abs(this.sin_p12 - 1) <= EPSLN) {
-      //North Pole case
-      p.x = this.x0 + this.a * (HALF_PI - lat) * Math.sin(dlon);
-      p.y = this.y0 - this.a * (HALF_PI - lat) * Math.cos(dlon);
-      return p;
-    }
-    else if (Math.abs(this.sin_p12 + 1) <= EPSLN) {
-      //South Pole case
-      p.x = this.x0 + this.a * (HALF_PI + lat) * Math.sin(dlon);
-      p.y = this.y0 + this.a * (HALF_PI + lat) * Math.cos(dlon);
-      return p;
-    }
-    else {
-      //default case
-      cos_c = this.sin_p12 * sinphi + this.cos_p12 * cosphi * Math.cos(dlon);
-      c = Math.acos(cos_c);
-      kp = c / Math.sin(c);
-      p.x = this.x0 + this.a * kp * cosphi * Math.sin(dlon);
-      p.y = this.y0 + this.a * kp * (this.cos_p12 * sinphi - this.sin_p12 * cosphi * Math.cos(dlon));
-      return p;
-    }
-  }
-  else {
-    e0 = e0fn(this.es);
-    e1 = e1fn(this.es);
-    e2 = e2fn(this.es);
-    e3 = e3fn(this.es);
-    if (Math.abs(this.sin_p12 - 1) <= EPSLN) {
-      //North Pole case
-      Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);
-      Ml = this.a * mlfn(e0, e1, e2, e3, lat);
-      p.x = this.x0 + (Mlp - Ml) * Math.sin(dlon);
-      p.y = this.y0 - (Mlp - Ml) * Math.cos(dlon);
-      return p;
-    }
-    else if (Math.abs(this.sin_p12 + 1) <= EPSLN) {
-      //South Pole case
-      Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);
-      Ml = this.a * mlfn(e0, e1, e2, e3, lat);
-      p.x = this.x0 + (Mlp + Ml) * Math.sin(dlon);
-      p.y = this.y0 + (Mlp + Ml) * Math.cos(dlon);
-      return p;
-    }
-    else {
-      //Default case
-      tanphi = sinphi / cosphi;
-      Nl1 = gN(this.a, this.e, this.sin_p12);
-      Nl = gN(this.a, this.e, sinphi);
-      psi = Math.atan((1 - this.es) * tanphi + this.es * Nl1 * this.sin_p12 / (Nl * cosphi));
-      Az = Math.atan2(Math.sin(dlon), this.cos_p12 * Math.tan(psi) - this.sin_p12 * Math.cos(dlon));
-      if (Az === 0) {
-        s = Math.asin(this.cos_p12 * Math.sin(psi) - this.sin_p12 * Math.cos(psi));
-      }
-      else if (Math.abs(Math.abs(Az) - Math.PI) <= EPSLN) {
-        s = -Math.asin(this.cos_p12 * Math.sin(psi) - this.sin_p12 * Math.cos(psi));
-      }
-      else {
-        s = Math.asin(Math.sin(dlon) * Math.cos(psi) / Math.sin(Az));
-      }
-      G = this.e * this.sin_p12 / Math.sqrt(1 - this.es);
-      H = this.e * this.cos_p12 * Math.cos(Az) / Math.sqrt(1 - this.es);
-      GH = G * H;
-      Hs = H * H;
-      s2 = s * s;
-      s3 = s2 * s;
-      s4 = s3 * s;
-      s5 = s4 * s;
-      c = Nl1 * s * (1 - s2 * Hs * (1 - Hs) / 6 + s3 / 8 * GH * (1 - 2 * Hs) + s4 / 120 * (Hs * (4 - 7 * Hs) - 3 * G * G * (1 - 7 * Hs)) - s5 / 48 * GH);
-      p.x = this.x0 + c * Math.sin(Az);
-      p.y = this.y0 + c * Math.cos(Az);
-      return p;
-    }
-  }
-
-
-};
-
-exports.inverse = function(p) {
-  p.x -= this.x0;
-  p.y -= this.y0;
-  var rh, z, sinz, cosz, lon, lat, con, e0, e1, e2, e3, Mlp, M, N1, psi, Az, cosAz, tmp, A, B, D, Ee, F;
-  if (this.sphere) {
-    rh = Math.sqrt(p.x * p.x + p.y * p.y);
-    if (rh > (2 * HALF_PI * this.a)) {
-      return;
-    }
-    z = rh / this.a;
-
-    sinz = Math.sin(z);
-    cosz = Math.cos(z);
-
-    lon = this.long0;
-    if (Math.abs(rh) <= EPSLN) {
-      lat = this.lat0;
-    }
-    else {
-      lat = asinz(cosz * this.sin_p12 + (p.y * sinz * this.cos_p12) / rh);
-      con = Math.abs(this.lat0) - HALF_PI;
-      if (Math.abs(con) <= EPSLN) {
-        if (this.lat0 >= 0) {
-          lon = adjust_lon(this.long0 + Math.atan2(p.x, - p.y));
-        }
-        else {
-          lon = adjust_lon(this.long0 - Math.atan2(-p.x, p.y));
-        }
-      }
-      else {
-        /*con = cosz - this.sin_p12 * Math.sin(lat);
-        if ((Math.abs(con) < EPSLN) && (Math.abs(p.x) < EPSLN)) {
-          //no-op, just keep the lon value as is
-        } else {
-          var temp = Math.atan2((p.x * sinz * this.cos_p12), (con * rh));
-          lon = adjust_lon(this.long0 + Math.atan2((p.x * sinz * this.cos_p12), (con * rh)));
-        }*/
-        lon = adjust_lon(this.long0 + Math.atan2(p.x * sinz, rh * this.cos_p12 * cosz - p.y * this.sin_p12 * sinz));
-      }
-    }
-
-    p.x = lon;
-    p.y = lat;
-    return p;
-  }
-  else {
-    e0 = e0fn(this.es);
-    e1 = e1fn(this.es);
-    e2 = e2fn(this.es);
-    e3 = e3fn(this.es);
-    if (Math.abs(this.sin_p12 - 1) <= EPSLN) {
-      //North pole case
-      Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);
-      rh = Math.sqrt(p.x * p.x + p.y * p.y);
-      M = Mlp - rh;
-      lat = imlfn(M / this.a, e0, e1, e2, e3);
-      lon = adjust_lon(this.long0 + Math.atan2(p.x, - 1 * p.y));
-      p.x = lon;
-      p.y = lat;
-      return p;
-    }
-    else if (Math.abs(this.sin_p12 + 1) <= EPSLN) {
-      //South pole case
-      Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);
-      rh = Math.sqrt(p.x * p.x + p.y * p.y);
-      M = rh - Mlp;
-
-      lat = imlfn(M / this.a, e0, e1, e2, e3);
-      lon = adjust_lon(this.long0 + Math.atan2(p.x, p.y));
-      p.x = lon;
-      p.y = lat;
-      return p;
-    }
-    else {
-      //default case
-      rh = Math.sqrt(p.x * p.x + p.y * p.y);
-      Az = Math.atan2(p.x, p.y);
-      N1 = gN(this.a, this.e, this.sin_p12);
-      cosAz = Math.cos(Az);
-      tmp = this.e * this.cos_p12 * cosAz;
-      A = -tmp * tmp / (1 - this.es);
-      B = 3 * this.es * (1 - A) * this.sin_p12 * this.cos_p12 * cosAz / (1 - this.es);
-      D = rh / N1;
-      Ee = D - A * (1 + A) * Math.pow(D, 3) / 6 - B * (1 + 3 * A) * Math.pow(D, 4) / 24;
-      F = 1 - A * Ee * Ee / 2 - D * Ee * Ee * Ee / 6;
-      psi = Math.asin(this.sin_p12 * Math.cos(Ee) + this.cos_p12 * Math.sin(Ee) * cosAz);
-      lon = adjust_lon(this.long0 + Math.asin(Math.sin(Az) * Math.sin(Ee) / Math.cos(psi)));
-      lat = Math.atan((1 - this.es * F * this.sin_p12 / Math.sin(psi)) * Math.tan(psi) / (1 - this.es));
-      p.x = lon;
-      p.y = lat;
-      return p;
-    }
-  }
-
-};
-exports.names = ["Azimuthal_Equidistant", "aeqd"];
-
-},{"../common/adjust_lon":5,"../common/asinz":6,"../common/e0fn":7,"../common/e1fn":8,"../common/e2fn":9,"../common/e3fn":10,"../common/gN":11,"../common/imlfn":12,"../common/mlfn":14}],42:[function(_dereq_,module,exports){
-var mlfn = _dereq_('../common/mlfn');
-var e0fn = _dereq_('../common/e0fn');
-var e1fn = _dereq_('../common/e1fn');
-var e2fn = _dereq_('../common/e2fn');
-var e3fn = _dereq_('../common/e3fn');
-var gN = _dereq_('../common/gN');
-var adjust_lon = _dereq_('../common/adjust_lon');
-var adjust_lat = _dereq_('../common/adjust_lat');
-var imlfn = _dereq_('../common/imlfn');
-var HALF_PI = Math.PI/2;
-var EPSLN = 1.0e-10;
-exports.init = function() {
-  if (!this.sphere) {
-    this.e0 = e0fn(this.es);
-    this.e1 = e1fn(this.es);
-    this.e2 = e2fn(this.es);
-    this.e3 = e3fn(this.es);
-    this.ml0 = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0);
-  }
-};
-
-
-
-/* Cassini forward equations--mapping lat,long to x,y
-  -----------------------------------------------------------------------*/
-exports.forward = function(p) {
-
-  /* Forward equations
-      -----------------*/
-  var x, y;
-  var lam = p.x;
-  var phi = p.y;
-  lam = adjust_lon(lam - this.long0);
-
-  if (this.sphere) {
-    x = this.a * Math.asin(Math.cos(phi) * Math.sin(lam));
-    y = this.a * (Math.atan2(Math.tan(phi), Math.cos(lam)) - this.lat0);
-  }
-  else {
-    //ellipsoid
-    var sinphi = Math.sin(phi);
-    var cosphi = Math.cos(phi);
-    var nl = gN(this.a, this.e, sinphi);
-    var tl = Math.tan(phi) * Math.tan(phi);
-    var al = lam * Math.cos(phi);
-    var asq = al * al;
-    var cl = this.es * cosphi * cosphi / (1 - this.es);
-    var ml = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, phi);
-
-    x = nl * al * (1 - asq * tl * (1 / 6 - (8 - tl + 8 * cl) * asq / 120));
-    y = ml - this.ml0 + nl * sinphi / cosphi * asq * (0.5 + (5 - tl + 6 * cl) * asq / 24);
-
-
-  }
-
-  p.x = x + this.x0;
-  p.y = y + this.y0;
-  return p;
-};
-
-/* Inverse equations
-  -----------------*/
-exports.inverse = function(p) {
-  p.x -= this.x0;
-  p.y -= this.y0;
-  var x = p.x / this.a;
-  var y = p.y / this.a;
-  var phi, lam;
-
-  if (this.sphere) {
-    var dd = y + this.lat0;
-    phi = Math.asin(Math.sin(dd) * Math.cos(x));
-    lam = Math.atan2(Math.tan(x), Math.cos(dd));
-  }
-  else {
-    /* ellipsoid */
-    var ml1 = this.ml0 / this.a + y;
-    var phi1 = imlfn(ml1, this.e0, this.e1, this.e2, this.e3);
-    if (Math.abs(Math.abs(phi1) - HALF_PI) <= EPSLN) {
-      p.x = this.long0;
-      p.y = HALF_PI;
-      if (y < 0) {
-        p.y *= -1;
-      }
-      return p;
-    }
-    var nl1 = gN(this.a, this.e, Math.sin(phi1));
-
-    var rl1 = nl1 * nl1 * nl1 / this.a / this.a * (1 - this.es);
-    var tl1 = Math.pow(Math.tan(phi1), 2);
-    var dl = x * this.a / nl1;
-    var dsq = dl * dl;
-    phi = phi1 - nl1 * Math.tan(phi1) / rl1 * dl * dl * (0.5 - (1 + 3 * tl1) * dl * dl / 24);
-    lam = dl * (1 - dsq * (tl1 / 3 + (1 + 3 * tl1) * tl1 * dsq / 15)) / Math.cos(phi1);
-
-  }
-
-  p.x = adjust_lon(lam + this.long0);
-  p.y = adjust_lat(phi);
-  return p;
-
-};
-exports.names = ["Cassini", "Cassini_Soldner", "cass"];
-},{"../common/adjust_lat":4,"../common/adjust_lon":5,"../common/e0fn":7,"../common/e1fn":8,"../common/e2fn":9,"../common/e3fn":10,"../common/gN":11,"../common/imlfn":12,"../common/mlfn":14}],43:[function(_dereq_,module,exports){
-var adjust_lon = _dereq_('../common/adjust_lon');
-var qsfnz = _dereq_('../common/qsfnz');
-var msfnz = _dereq_('../common/msfnz');
-var iqsfnz = _dereq_('../common/iqsfnz');
-/*
-  reference:  
-    "Cartographic Projection Procedures for the UNIX Environment-
-    A User's Manual" by Gerald I. Evenden,
-    USGS Open File Report 90-284and Release 4 Interim Reports (2003)
-*/
-exports.init = function() {
-  //no-op
-  if (!this.sphere) {
-    this.k0 = msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts));
-  }
-};
-
-
-/* Cylindrical Equal Area forward equations--mapping lat,long to x,y
-    ------------------------------------------------------------*/
-exports.forward = function(p) {
-  var lon = p.x;
-  var lat = p.y;
-  var x, y;
-  /* Forward equations
-      -----------------*/
-  var dlon = adjust_lon(lon - this.long0);
-  if (this.sphere) {
-    x = this.x0 + this.a * dlon * Math.cos(this.lat_ts);
-    y = this.y0 + this.a * Math.sin(lat) / Math.cos(this.lat_ts);
-  }
-  else {
-    var qs = qsfnz(this.e, Math.sin(lat));
-    x = this.x0 + this.a * this.k0 * dlon;
-    y = this.y0 + this.a * qs * 0.5 / this.k0;
-  }
-
-  p.x = x;
-  p.y = y;
-  return p;
-};
-
-/* Cylindrical Equal Area inverse equations--mapping x,y to lat/long
-    ------------------------------------------------------------*/
-exports.inverse = function(p) {
-  p.x -= this.x0;
-  p.y -= this.y0;
-  var lon, lat;
-
-  if (this.sphere) {
-    lon = adjust_lon(this.long0 + (p.x / this.a) / Math.cos(this.lat_ts));
-    lat = Math.asin((p.y / this.a) * Math.cos(this.lat_ts));
-  }
-  else {
-    lat = iqsfnz(this.e, 2 * p.y * this.k0 / this.a);
-    lon = adjust_lon(this.long0 + p.x / (this.a * this.k0));
-  }
-
-  p.x = lon;
-  p.y = lat;
-  return p;
-};
-exports.names = ["cea"];
-
-},{"../common/adjust_lon":5,"../common/iqsfnz":13,"../common/msfnz":15,"../common/qsfnz":20}],44:[function(_dereq_,module,exports){
-var adjust_lon = _dereq_('../common/adjust_lon');
-var adjust_lat = _dereq_('../common/adjust_lat');
-exports.init = function() {
-
-  this.x0 = this.x0 || 0;
-  this.y0 = this.y0 || 0;
-  this.lat0 = this.lat0 || 0;
-  this.long0 = this.long0 || 0;
-  this.lat_ts = this.lat_ts || 0;
-  this.title = this.title || "Equidistant Cylindrical (Plate Carre)";
-
-  this.rc = Math.cos(this.lat_ts);
-};
-
-
-// forward equations--mapping lat,long to x,y
-// -----------------------------------------------------------------
-exports.forward = function(p) {
-
-  var lon = p.x;
-  var lat = p.y;
-
-  var dlon = adjust_lon(lon - this.long0);
-  var dlat = adjust_lat(lat - this.lat0);
-  p.x = this.x0 + (this.a * dlon * this.rc);
-  p.y = this.y0 + (this.a * dlat);
-  return p;
-};
-
-// inverse equations--mapping x,y to lat/long
-// -----------------------------------------------------------------
-exports.inverse = function(p) {
-
-  var x = p.x;
-  var y = p.y;
-
-  p.x = adjust_lon(this.long0 + ((x - this.x0) / (this.a * this.rc)));
-  p.y = adjust_lat(this.lat0 + ((y - this.y0) / (this.a)));
-  return p;
-};
-exports.names = ["Equirectangular", "Equidistant_Cylindrical", "eqc"];
-
-},{"../common/adjust_lat":4,"../common/adjust_lon":5}],45:[function(_dereq_,module,exports){
-var e0fn = _dereq_('../common/e0fn');
-var e1fn = _dereq_('../common/e1fn');
-var e2fn = _dereq_('../common/e2fn');
-var e3fn = _dereq_('../common/e3fn');
-var msfnz = _dereq_('../common/msfnz');
-var mlfn = _dereq_('../common/mlfn');
-var adjust_lon = _dereq_('../common/adjust_lon');
-var adjust_lat = _dereq_('../common/adjust_lat');
-var imlfn = _dereq_('../common/imlfn');
-var EPSLN = 1.0e-10;
-exports.init = function() {
-
-  /* Place parameters in static storage for common use
-      -------------------------------------------------*/
-  // Standard Parallels cannot be equal and on opposite sides of the equator
-  if (Math.abs(this.lat1 + this.lat2) < EPSLN) {
-    return;
-  }
-  this.lat2 = this.lat2 || this.lat1;
-  this.temp = this.b / this.a;
-  this.es = 1 - Math.pow(this.temp, 2);
-  this.e = Math.sqrt(this.es);
-  this.e0 = e0fn(this.es);
-  this.e1 = e1fn(this.es);
-  this.e2 = e2fn(this.es);
-  this.e3 = e3fn(this.es);
-
-  this.sinphi = Math.sin(this.lat1);
-  this.cosphi = Math.cos(this.lat1);
-
-  this.ms1 = msfnz(this.e, this.sinphi, this.cosphi);
-  this.ml1 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat1);
-
-  if (Math.abs(this.lat1 - this.lat2) < EPSLN) {
-    this.ns = this.sinphi;
-  }
-  else {
-    this.sinphi = Math.sin(this.lat2);
-    this.cosphi = Math.cos(this.lat2);
-    this.ms2 = msfnz(this.e, this.sinphi, this.cosphi);
-    this.ml2 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat2);
-    this.ns = (this.ms1 - this.ms2) / (this.ml2 - this.ml1);
-  }
-  this.g = this.ml1 + this.ms1 / this.ns;
-  this.ml0 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0);
-  this.rh = this.a * (this.g - this.ml0);
-};
-
-
-/* Equidistant Conic forward equations--mapping lat,long to x,y
-  -----------------------------------------------------------*/
-exports.forward = function(p) {
-  var lon = p.x;
-  var lat = p.y;
-  var rh1;
-
-  /* Forward equations
-      -----------------*/
-  if (this.sphere) {
-    rh1 = this.a * (this.g - lat);
-  }
-  else {
-    var ml = mlfn(this.e0, this.e1, this.e2, this.e3, lat);
-    rh1 = this.a * (this.g - ml);
-  }
-  var theta = this.ns * adjust_lon(lon - this.long0);
-  var x = this.x0 + rh1 * Math.sin(theta);
-  var y = this.y0 + this.rh - rh1 * Math.cos(theta);
-  p.x = x;
-  p.y = y;
-  return p;
-};
-
-/* Inverse equations
-  -----------------*/
-exports.inverse = function(p) {
-  p.x -= this.x0;
-  p.y = this.rh - p.y + this.y0;
-  var con, rh1, lat, lon;
-  if (this.ns >= 0) {
-    rh1 = Math.sqrt(p.x * p.x + p.y * p.y);
-    con = 1;
-  }
-  else {
-    rh1 = -Math.sqrt(p.x * p.x + p.y * p.y);
-    con = -1;
-  }
-  var theta = 0;
-  if (rh1 !== 0) {
-    theta = Math.atan2(con * p.x, con * p.y);
-  }
-
-  if (this.sphere) {
-    lon = adjust_lon(this.long0 + theta / this.ns);
-    lat = adjust_lat(this.g - rh1 / this.a);
-    p.x = lon;
-    p.y = lat;
-    return p;
-  }
-  else {
-    var ml = this.g - rh1 / this.a;
-    lat = imlfn(ml, this.e0, this.e1, this.e2, this.e3);
-    lon = adjust_lon(this.long0 + theta / this.ns);
-    p.x = lon;
-    p.y = lat;
-    return p;
-  }
-
-};
-exports.names = ["Equidistant_Conic", "eqdc"];
-
-},{"../common/adjust_lat":4,"../common/adjust_lon":5,"../common/e0fn":7,"../common/e1fn":8,"../common/e2fn":9,"../common/e3fn":10,"../common/imlfn":12,"../common/mlfn":14,"../common/msfnz":15}],46:[function(_dereq_,module,exports){
-var FORTPI = Math.PI/4;
-var srat = _dereq_('../common/srat');
-var HALF_PI = Math.PI/2;
-var MAX_ITER = 20;
-exports.init = function() {
-  var sphi = Math.sin(this.lat0);
-  var cphi = Math.cos(this.lat0);
-  cphi *= cphi;
-  this.rc = Math.sqrt(1 - this.es) / (1 - this.es * sphi * sphi);
-  this.C = Math.sqrt(1 + this.es * cphi * cphi / (1 - this.es));
-  this.phic0 = Math.asin(sphi / this.C);
-  this.ratexp = 0.5 * this.C * this.e;
-  this.K = Math.tan(0.5 * this.phic0 + FORTPI) / (Math.pow(Math.tan(0.5 * this.lat0 + FORTPI), this.C) * srat(this.e * sphi, this.ratexp));
-};
-
-exports.forward = function(p) {
-  var lon = p.x;
-  var lat = p.y;
-
-  p.y = 2 * Math.atan(this.K * Math.pow(Math.tan(0.5 * lat + FORTPI), this.C) * srat(this.e * Math.sin(lat), this.ratexp)) - HALF_PI;
-  p.x = this.C * lon;
-  return p;
-};
-
-exports.inverse = function(p) {
-  var DEL_TOL = 1e-14;
-  var lon = p.x / this.C;
-  var lat = p.y;
-  var num = Math.pow(Math.tan(0.5 * lat + FORTPI) / this.K, 1 / this.C);
-  for (var i = MAX_ITER; i > 0; --i) {
-    lat = 2 * Math.atan(num * srat(this.e * Math.sin(p.y), - 0.5 * this.e)) - HALF_PI;
-    if (Math.abs(lat - p.y) < DEL_TOL) {
-      break;
-    }
-    p.y = lat;
-  }
-  /* convergence failed */
-  if (!i) {
-    return null;
-  }
-  p.x = lon;
-  p.y = lat;
-  return p;
-};
-exports.names = ["gauss"];
-
-},{"../common/srat":22}],47:[function(_dereq_,module,exports){
-var adjust_lon = _dereq_('../common/adjust_lon');
-var EPSLN = 1.0e-10;
-var asinz = _dereq_('../common/asinz');
-
-/*
-  reference:
-    Wolfram Mathworld "Gnomonic Projection"
-    http://mathworld.wolfram.com/GnomonicProjection.html
-    Accessed: 12th November 2009
-  */
-exports.init = function() {
-
-  /* Place parameters in static storage for common use
-      -------------------------------------------------*/
-  this.sin_p14 = Math.sin(this.lat0);
-  this.cos_p14 = Math.cos(this.lat0);
-  // Approximation for projecting points to the horizon (infinity)
-  this.infinity_dist = 1000 * this.a;
-  this.rc = 1;
-};
-
-
-/* Gnomonic forward equations--mapping lat,long to x,y
-    ---------------------------------------------------*/
-exports.forward = function(p) {
-  var sinphi, cosphi; /* sin and cos value        */
-  var dlon; /* delta longitude value      */
-  var coslon; /* cos of longitude        */
-  var ksp; /* scale factor          */
-  var g;
-  var x, y;
-  var lon = p.x;
-  var lat = p.y;
-  /* Forward equations
-      -----------------*/
-  dlon = adjust_lon(lon - this.long0);
-
-  sinphi = Math.sin(lat);
-  cosphi = Math.cos(lat);
-
-  coslon = Math.cos(dlon);
-  g = this.sin_p14 * sinphi + this.cos_p14 * cosphi * coslon;
-  ksp = 1;
-  if ((g > 0) || (Math.abs(g) <= EPSLN)) {
-    x = this.x0 + this.a * ksp * cosphi * Math.sin(dlon) / g;
-    y = this.y0 + this.a * ksp * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon) / g;
-  }
-  else {
-
-    // Point is in the opposing hemisphere and is unprojectable
-    // We still need to return a reasonable point, so we project 
-    // to infinity, on a bearing 
-    // equivalent to the northern hemisphere equivalent
-    // This is a reasonable approximation for short shapes and lines that 
-    // straddle the horizon.
-
-    x = this.x0 + this.infinity_dist * cosphi * Math.sin(dlon);
-    y = this.y0 + this.infinity_dist * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon);
-
-  }
-  p.x = x;
-  p.y = y;
-  return p;
-};
-
-
-exports.inverse = function(p) {
-  var rh; /* Rho */
-  var sinc, cosc;
-  var c;
-  var lon, lat;
-
-  /* Inverse equations
-      -----------------*/
-  p.x = (p.x - this.x0) / this.a;
-  p.y = (p.y - this.y0) / this.a;
-
-  p.x /= this.k0;
-  p.y /= this.k0;
-
-  if ((rh = Math.sqrt(p.x * p.x + p.y * p.y))) {
-    c = Math.atan2(rh, this.rc);
-    sinc = Math.sin(c);
-    cosc = Math.cos(c);
-
-    lat = asinz(cosc * this.sin_p14 + (p.y * sinc * this.cos_p14) / rh);
-    lon = Math.atan2(p.x * sinc, rh * this.cos_p14 * cosc - p.y * this.sin_p14 * sinc);
-    lon = adjust_lon(this.long0 + lon);
-  }
-  else {
-    lat = this.phic0;
-    lon = 0;
-  }
-
-  p.x = lon;
-  p.y = lat;
-  return p;
-};
-exports.names = ["gnom"];
-
-},{"../common/adjust_lon":5,"../common/asinz":6}],48:[function(_dereq_,module,exports){
-var adjust_lon = _dereq_('../common/adjust_lon');
-exports.init = function() {
-  this.a = 6377397.155;
-  this.es = 0.006674372230614;
-  this.e = Math.sqrt(this.es);
-  if (!this.lat0) {
-    this.lat0 = 0.863937979737193;
-  }
-  if (!this.long0) {
-    this.long0 = 0.7417649320975901 - 0.308341501185665;
-  }
-  /* if scale not set default to 0.9999 */
-  if (!this.k0) {
-    this.k0 = 0.9999;
-  }
-  this.s45 = 0.785398163397448; /* 45 */
-  this.s90 = 2 * this.s45;
-  this.fi0 = this.lat0;
-  this.e2 = this.es;
-  this.e = Math.sqrt(this.e2);
-  this.alfa = Math.sqrt(1 + (this.e2 * Math.pow(Math.cos(this.fi0), 4)) / (1 - this.e2));
-  this.uq = 1.04216856380474;
-  this.u0 = Math.asin(Math.sin(this.fi0) / this.alfa);
-  this.g = Math.pow((1 + this.e * Math.sin(this.fi0)) / (1 - this.e * Math.sin(this.fi0)), this.alfa * this.e / 2);
-  this.k = Math.tan(this.u0 / 2 + this.s45) / Math.pow(Math.tan(this.fi0 / 2 + this.s45), this.alfa) * this.g;
-  this.k1 = this.k0;
-  this.n0 = this.a * Math.sqrt(1 - this.e2) / (1 - this.e2 * Math.pow(Math.sin(this.fi0), 2));
-  this.s0 = 1.37008346281555;
-  this.n = Math.sin(this.s0);
-  this.ro0 = this.k1 * this.n0 / Math.tan(this.s0);
-  this.ad = this.s90 - this.uq;
-};
-
-/* ellipsoid */
-/* calculate xy from lat/lon */
-/* Constants, identical to inverse transform function */
-exports.forward = function(p) {
-  var gfi, u, deltav, s, d, eps, ro;
-  var lon = p.x;
-  var lat = p.y;
-  var delta_lon = adjust_lon(lon - this.long0);
-  /* Transformation */
-  gfi = Math.pow(((1 + this.e * Math.sin(lat)) / (1 - this.e * Math.sin(lat))), (this.alfa * this.e / 2));
-  u = 2 * (Math.atan(this.k * Math.pow(Math.tan(lat / 2 + this.s45), this.alfa) / gfi) - this.s45);
-  deltav = -delta_lon * this.alfa;
-  s = Math.asin(Math.cos(this.ad) * Math.sin(u) + Math.sin(this.ad) * Math.cos(u) * Math.cos(deltav));
-  d = Math.asin(Math.cos(u) * Math.sin(deltav) / Math.cos(s));
-  eps = this.n * d;
-  ro = this.ro0 * Math.pow(Math.tan(this.s0 / 2 + this.s45), this.n) / Math.pow(Math.tan(s / 2 + this.s45), this.n);
-  p.y = ro * Math.cos(eps) / 1;
-  p.x = ro * Math.sin(eps) / 1;
-
-  if (!this.czech) {
-    p.y *= -1;
-    p.x *= -1;
-  }
-  return (p);
-};
-
-/* calculate lat/lon from xy */
-exports.inverse = function(p) {
-  var u, deltav, s, d, eps, ro, fi1;
-  var ok;
-
-  /* Transformation */
-  /* revert y, x*/
-  var tmp = p.x;
-  p.x = p.y;
-  p.y = tmp;
-  if (!this.czech) {
-    p.y *= -1;
-    p.x *= -1;
-  }
-  ro = Math.sqrt(p.x * p.x + p.y * p.y);
-  eps = Math.atan2(p.y, p.x);
-  d = eps / Math.sin(this.s0);
-  s = 2 * (Math.atan(Math.pow(this.ro0 / ro, 1 / this.n) * Math.tan(this.s0 / 2 + this.s45)) - this.s45);
-  u = Math.asin(Math.cos(this.ad) * Math.sin(s) - Math.sin(this.ad) * Math.cos(s) * Math.cos(d));
-  deltav = Math.asin(Math.cos(s) * Math.sin(d) / Math.cos(u));
-  p.x = this.long0 - deltav / this.alfa;
-  fi1 = u;
-  ok = 0;
-  var iter = 0;
-  do {
-    p.y = 2 * (Math.atan(Math.pow(this.k, - 1 / this.alfa) * Math.pow(Math.tan(u / 2 + this.s45), 1 / this.alfa) * Math.pow((1 + this.e * Math.sin(fi1)) / (1 - this.e * Math.sin(fi1)), this.e / 2)) - this.s45);
-    if (Math.abs(fi1 - p.y) < 0.0000000001) {
-      ok = 1;
-    }
-    fi1 = p.y;
-    iter += 1;
-  } while (ok === 0 && iter < 15);
-  if (iter >= 15) {
-    return null;
-  }
-
-  return (p);
-};
-exports.names = ["Krovak", "krovak"];
-
-},{"../common/adjust_lon":5}],49:[function(_dereq_,module,exports){
-var HALF_PI = Math.PI/2;
-var FORTPI = Math.PI/4;
-var EPSLN = 1.0e-10;
-var qsfnz = _dereq_('../common/qsfnz');
-var adjust_lon = _dereq_('../common/adjust_lon');
-/*
-  reference
-    "New Equal-Area Map Projections for Noncircular Regions", John P. Snyder,
-    The American Cartographer, Vol 15, No. 4, October 1988, pp. 341-355.
-  */
-
-exports.S_POLE = 1;
-exports.N_POLE = 2;
-exports.EQUIT = 3;
-exports.OBLIQ = 4;
-
-
-/* Initialize the Lambert Azimuthal Equal Area projection
-  ------------------------------------------------------*/
-exports.init = function() {
-  var t = Math.abs(this.lat0);
-  if (Math.abs(t - HALF_PI) < EPSLN) {
-    this.mode = this.lat0 < 0 ? this.S_POLE : this.N_POLE;
-  }
-  else if (Math.abs(t) < EPSLN) {
-    this.mode = this.EQUIT;
-  }
-  else {
-    this.mode = this.OBLIQ;
-  }
-  if (this.es > 0) {
-    var sinphi;
-
-    this.qp = qsfnz(this.e, 1);
-    this.mmf = 0.5 / (1 - this.es);
-    this.apa = this.authset(this.es);
-    switch (this.mode) {
-    case this.N_POLE:
-      this.dd = 1;
-      break;
-    case this.S_POLE:
-      this.dd = 1;
-      break;
-    case this.EQUIT:
-      this.rq = Math.sqrt(0.5 * this.qp);
-      this.dd = 1 / this.rq;
-      this.xmf = 1;
-      this.ymf = 0.5 * this.qp;
-      break;
-    case this.OBLIQ:
-      this.rq = Math.sqrt(0.5 * this.qp);
-      sinphi = Math.sin(this.lat0);
-      this.sinb1 = qsfnz(this.e, sinphi) / this.qp;
-      this.cosb1 = Math.sqrt(1 - this.sinb1 * this.sinb1);
-      this.dd = Math.cos(this.lat0) / (Math.sqrt(1 - this.es * sinphi * sinphi) * this.rq * this.cosb1);
-      this.ymf = (this.xmf = this.rq) / this.dd;
-      this.xmf *= this.dd;
-      break;
-    }
-  }
-  else {
-    if (this.mode === this.OBLIQ) {
-      this.sinph0 = Math.sin(this.lat0);
-      this.cosph0 = Math.cos(this.lat0);
-    }
-  }
-};
-
-/* Lambert Azimuthal Equal Area forward equations--mapping lat,long to x,y
-  -----------------------------------------------------------------------*/
-exports.forward = function(p) {
-
-  /* Forward equations
-      -----------------*/
-  var x, y, coslam, sinlam, sinphi, q, sinb, cosb, b, cosphi;
-  var lam = p.x;
-  var phi = p.y;
-
-  lam = adjust_lon(lam - this.long0);
-
-  if (this.sphere) {
-    sinphi = Math.sin(phi);
-    cosphi = Math.cos(phi);
-    coslam = Math.cos(lam);
-    if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {
-      y = (this.mode === this.EQUIT) ? 1 + cosphi * coslam : 1 + this.sinph0 * sinphi + this.cosph0 * cosphi * coslam;
-      if (y <= EPSLN) {
-        return null;
-      }
-      y = Math.sqrt(2 / y);
-      x = y * cosphi * Math.sin(lam);
-      y *= (this.mode === this.EQUIT) ? sinphi : this.cosph0 * sinphi - this.sinph0 * cosphi * coslam;
-    }
-    else if (this.mode === this.N_POLE || this.mode === this.S_POLE) {
-      if (this.mode === this.N_POLE) {
-        coslam = -coslam;
-      }
-      if (Math.abs(phi + this.phi0) < EPSLN) {
-        return null;
-      }
-      y = FORTPI - phi * 0.5;
-      y = 2 * ((this.mode === this.S_POLE) ? Math.cos(y) : Math.sin(y));
-      x = y * Math.sin(lam);
-      y *= coslam;
-    }
-  }
-  else {
-    sinb = 0;
-    cosb = 0;
-    b = 0;
-    coslam = Math.cos(lam);
-    sinlam = Math.sin(lam);
-    sinphi = Math.sin(phi);
-    q = qsfnz(this.e, sinphi);
-    if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {
-      sinb = q / this.qp;
-      cosb = Math.sqrt(1 - sinb * sinb);
-    }
-    switch (this.mode) {
-    case this.OBLIQ:
-      b = 1 + this.sinb1 * sinb + this.cosb1 * cosb * coslam;
-      break;
-    case this.EQUIT:
-      b = 1 + cosb * coslam;
-      break;
-    case this.N_POLE:
-      b = HALF_PI + phi;
-      q = this.qp - q;
-      break;
-    case this.S_POLE:
-      b = phi - HALF_PI;
-      q = this.qp + q;
-      break;
-    }
-    if (Math.abs(b) < EPSLN) {
-      return null;
-    }
-    switch (this.mode) {
-    case this.OBLIQ:
-    case this.EQUIT:
-      b = Math.sqrt(2 / b);
-      if (this.mode === this.OBLIQ) {
-        y = this.ymf * b * (this.cosb1 * sinb - this.sinb1 * cosb * coslam);
-      }
-      else {
-        y = (b = Math.sqrt(2 / (1 + cosb * coslam))) * sinb * this.ymf;
-      }
-      x = this.xmf * b * cosb * sinlam;
-      break;
-    case this.N_POLE:
-    case this.S_POLE:
-      if (q >= 0) {
-        x = (b = Math.sqrt(q)) * sinlam;
-        y = coslam * ((this.mode === this.S_POLE) ? b : -b);
-      }
-      else {
-        x = y = 0;
-      }
-      break;
-    }
-  }
-
-  p.x = this.a * x + this.x0;
-  p.y = this.a * y + this.y0;
-  return p;
-};
-
-/* Inverse equations
-  -----------------*/
-exports.inverse = function(p) {
-  p.x -= this.x0;
-  p.y -= this.y0;
-  var x = p.x / this.a;
-  var y = p.y / this.a;
-  var lam, phi, cCe, sCe, q, rho, ab;
-
-  if (this.sphere) {
-    var cosz = 0,
-      rh, sinz = 0;
-
-    rh = Math.sqrt(x * x + y * y);
-    phi = rh * 0.5;
-    if (phi > 1) {
-      return null;
-    }
-    phi = 2 * Math.asin(phi);
-    if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {
-      sinz = Math.sin(phi);
-      cosz = Math.cos(phi);
-    }
-    switch (this.mode) {
-    case this.EQUIT:
-      phi = (Math.abs(rh) <= EPSLN) ? 0 : Math.asin(y * sinz / rh);
-      x *= sinz;
-      y = cosz * rh;
-      break;
-    case this.OBLIQ:
-      phi = (Math.abs(rh) <= EPSLN) ? this.phi0 : Math.asin(cosz * this.sinph0 + y * sinz * this.cosph0 / rh);
-      x *= sinz * this.cosph0;
-      y = (cosz - Math.sin(phi) * this.sinph0) * rh;
-      break;
-    case this.N_POLE:
-      y = -y;
-      phi = HALF_PI - phi;
-      break;
-    case this.S_POLE:
-      phi -= HALF_PI;
-      break;
-    }
-    lam = (y === 0 && (this.mode === this.EQUIT || this.mode === this.OBLIQ)) ? 0 : Math.atan2(x, y);
-  }
-  else {
-    ab = 0;
-    if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {
-      x /= this.dd;
-      y *= this.dd;
-      rho = Math.sqrt(x * x + y * y);
-      if (rho < EPSLN) {
-        p.x = 0;
-        p.y = this.phi0;
-        return p;
-      }
-      sCe = 2 * Math.asin(0.5 * rho / this.rq);
-      cCe = Math.cos(sCe);
-      x *= (sCe = Math.sin(sCe));
-      if (this.mode === this.OBLIQ) {
-        ab = cCe * this.sinb1 + y * sCe * this.cosb1 / rho;
-        q = this.qp * ab;
-        y = rho * this.cosb1 * cCe - y * this.sinb1 * sCe;
-      }
-      else {
-        ab = y * sCe / rho;
-        q = this.qp * ab;
-        y = rho * cCe;
-      }
-    }
-    else if (this.mode === this.N_POLE || this.mode === this.S_POLE) {
-      if (this.mode === this.N_POLE) {
-        y = -y;
-      }
-      q = (x * x + y * y);
-      if (!q) {
-        p.x = 0;
-        p.y = this.phi0;
-        return p;
-      }
-      ab = 1 - q / this.qp;
-      if (this.mode === this.S_POLE) {
-        ab = -ab;
-      }
-    }
-    lam = Math.atan2(x, y);
-    phi = this.authlat(Math.asin(ab), this.apa);
-  }
-
-
-  p.x = adjust_lon(this.long0 + lam);
-  p.y = phi;
-  return p;
-};
-
-/* determine latitude from authalic latitude */
-exports.P00 = 0.33333333333333333333;
-exports.P01 = 0.17222222222222222222;
-exports.P02 = 0.10257936507936507936;
-exports.P10 = 0.06388888888888888888;
-exports.P11 = 0.06640211640211640211;
-exports.P20 = 0.01641501294219154443;
-
-exports.authset = function(es) {
-  var t;
-  var APA = [];
-  APA[0] = es * this.P00;
-  t = es * es;
-  APA[0] += t * this.P01;
-  APA[1] = t * this.P10;
-  t *= es;
-  APA[0] += t * this.P02;
-  APA[1] += t * this.P11;
-  APA[2] = t * this.P20;
-  return APA;
-};
-
-exports.authlat = function(beta, APA) {
-  var t = beta + beta;
-  return (beta + APA[0] * Math.sin(t) + APA[1] * Math.sin(t + t) + APA[2] * Math.sin(t + t + t));
-};
-exports.names = ["Lambert Azimuthal Equal Area", "Lambert_Azimuthal_Equal_Area", "laea"];
-
-},{"../common/adjust_lon":5,"../common/qsfnz":20}],50:[function(_dereq_,module,exports){
-var EPSLN = 1.0e-10;
-var msfnz = _dereq_('../common/msfnz');
-var tsfnz = _dereq_('../common/tsfnz');
-var HALF_PI = Math.PI/2;
-var sign = _dereq_('../common/sign');
-var adjust_lon = _dereq_('../common/adjust_lon');
-var phi2z = _dereq_('../common/phi2z');
-exports.init = function() {
-
-  // array of:  r_maj,r_min,lat1,lat2,c_lon,c_lat,false_east,false_north
-  //double c_lat;                   /* center latitude                      */
-  //double c_lon;                   /* center longitude                     */
-  //double lat1;                    /* first standard parallel              */
-  //double lat2;                    /* second standard parallel             */
-  //double r_maj;                   /* major axis                           */
-  //double r_min;                   /* minor axis                           */
-  //double false_east;              /* x offset in meters                   */
-  //double false_north;             /* y offset in meters                   */
-
-  if (!this.lat2) {
-    this.lat2 = this.lat1;
-  } //if lat2 is not defined
-  if (!this.k0) {
-    this.k0 = 1;
-  }
-  this.x0 = this.x0 || 0;
-  this.y0 = this.y0 || 0;
-  // Standard Parallels cannot be equal and on opposite sides of the equator
-  if (Math.abs(this.lat1 + this.lat2) < EPSLN) {
-    return;
-  }
-
-  var temp = this.b / this.a;
-  this.e = Math.sqrt(1 - temp * temp);
-
-  var sin1 = Math.sin(this.lat1);
-  var cos1 = Math.cos(this.lat1);
-  var ms1 = msfnz(this.e, sin1, cos1);
-  var ts1 = tsfnz(this.e, this.lat1, sin1);
-
-  var sin2 = Math.sin(this.lat2);
-  var cos2 = Math.cos(this.lat2);
-  var ms2 = msfnz(this.e, sin2, cos2);
-  var ts2 = tsfnz(this.e, this.lat2, sin2);
-
-  var ts0 = tsfnz(this.e, this.lat0, Math.sin(this.lat0));
-
-  if (Math.abs(this.lat1 - this.lat2) > EPSLN) {
-    this.ns = Math.log(ms1 / ms2) / Math.log(ts1 / ts2);
-  }
-  else {
-    this.ns = sin1;
-  }
-  if (isNaN(this.ns)) {
-    this.ns = sin1;
-  }
-  this.f0 = ms1 / (this.ns * Math.pow(ts1, this.ns));
-  this.rh = this.a * this.f0 * Math.pow(ts0, this.ns);
-  if (!this.title) {
-    this.title = "Lambert Conformal Conic";
-  }
-};
-
-
-// Lambert Conformal conic forward equations--mapping lat,long to x,y
-// -----------------------------------------------------------------
-exports.forward = function(p) {
-
-  var lon = p.x;
-  var lat = p.y;
-
-  // singular cases :
-  if (Math.abs(2 * Math.abs(lat) - Math.PI) <= EPSLN) {
-    lat = sign(lat) * (HALF_PI - 2 * EPSLN);
-  }
-
-  var con = Math.abs(Math.abs(lat) - HALF_PI);
-  var ts, rh1;
-  if (con > EPSLN) {
-    ts = tsfnz(this.e, lat, Math.sin(lat));
-    rh1 = this.a * this.f0 * Math.pow(ts, this.ns);
-  }
-  else {
-    con = lat * this.ns;
-    if (con <= 0) {
-      return null;
-    }
-    rh1 = 0;
-  }
-  var theta = this.ns * adjust_lon(lon - this.long0);
-  p.x = this.k0 * (rh1 * Math.sin(theta)) + this.x0;
-  p.y = this.k0 * (this.rh - rh1 * Math.cos(theta)) + this.y0;
-
-  return p;
-};
-
-// Lambert Conformal Conic inverse equations--mapping x,y to lat/long
-// -----------------------------------------------------------------
-exports.inverse = function(p) {
-
-  var rh1, con, ts;
-  var lat, lon;
-  var x = (p.x - this.x0) / this.k0;
-  var y = (this.rh - (p.y - this.y0) / this.k0);
-  if (this.ns > 0) {
-    rh1 = Math.sqrt(x * x + y * y);
-    con = 1;
-  }
-  else {
-    rh1 = -Math.sqrt(x * x + y * y);
-    con = -1;
-  }
-  var theta = 0;
-  if (rh1 !== 0) {
-    theta = Math.atan2((con * x), (con * y));
-  }
-  if ((rh1 !== 0) || (this.ns > 0)) {
-    con = 1 / this.ns;
-    ts = Math.pow((rh1 / (this.a * this.f0)), con);
-    lat = phi2z(this.e, ts);
-    if (lat === -9999) {
-      return null;
-    }
-  }
-  else {
-    lat = -HALF_PI;
-  }
-  lon = adjust_lon(theta / this.ns + this.long0);
-
-  p.x = lon;
-  p.y = lat;
-  return p;
-};
-
-exports.names = ["Lambert Tangential Conformal Conic Projection", "Lambert_Conformal_Conic", "Lambert_Conformal_Conic_2SP", "lcc"];
-
-},{"../common/adjust_lon":5,"../common/msfnz":15,"../common/phi2z":16,"../common/sign":21,"../common/tsfnz":24}],51:[function(_dereq_,module,exports){
-exports.init = function() {
-  //no-op for longlat
-};
-
-function identity(pt) {
-  return pt;
-}
-exports.forward = identity;
-exports.inverse = identity;
-exports.names = ["longlat", "identity"];
-
-},{}],52:[function(_dereq_,module,exports){
-var msfnz = _dereq_('../common/msfnz');
-var HALF_PI = Math.PI/2;
-var EPSLN = 1.0e-10;
-var R2D = 57.29577951308232088;
-var adjust_lon = _dereq_('../common/adjust_lon');
-var FORTPI = Math.PI/4;
-var tsfnz = _dereq_('../common/tsfnz');
-var phi2z = _dereq_('../common/phi2z');
-exports.init = function() {
-  var con = this.b / this.a;
-  this.es = 1 - con * con;
-  if(!('x0' in this)){
-    this.x0 = 0;
-  }
-  if(!('y0' in this)){
-    this.y0 = 0;
-  }
-  this.e = Math.sqrt(this.es);
-  if (this.lat_ts) {
-    if (this.sphere) {
-      this.k0 = Math.cos(this.lat_ts);
-    }
-    else {
-      this.k0 = msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts));
-    }
-  }
-  else {
-    if (!this.k0) {
-      if (this.k) {
-        this.k0 = this.k;
-      }
-      else {
-        this.k0 = 1;
-      }
-    }
-  }
-};
-
-/* Mercator forward equations--mapping lat,long to x,y
-  --------------------------------------------------*/
-
-exports.forward = function(p) {
-  var lon = p.x;
-  var lat = p.y;
-  // convert to radians
-  if (lat * R2D > 90 && lat * R2D < -90 && lon * R2D > 180 && lon * R2D < -180) {
-    return null;
-  }
-
-  var x, y;
-  if (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN) {
-    return null;
-  }
-  else {
-    if (this.sphere) {
-      x = this.x0 + this.a * this.k0 * adjust_lon(lon - this.long0);
-      y = this.y0 + this.a * this.k0 * Math.log(Math.tan(FORTPI + 0.5 * lat));
-    }
-    else {
-      var sinphi = Math.sin(lat);
-      var ts = tsfnz(this.e, lat, sinphi);
-      x = this.x0 + this.a * this.k0 * adjust_lon(lon - this.long0);
-      y = this.y0 - this.a * this.k0 * Math.log(ts);
-    }
-    p.x = x;
-    p.y = y;
-    return p;
-  }
-};
-
-
-/* Mercator inverse equations--mapping x,y to lat/long
-  --------------------------------------------------*/
-exports.inverse = function(p) {
-
-  var x = p.x - this.x0;
-  var y = p.y - this.y0;
-  var lon, lat;
-
-  if (this.sphere) {
-    lat = HALF_PI - 2 * Math.atan(Math.exp(-y / (this.a * this.k0)));
-  }
-  else {
-    var ts = Math.exp(-y / (this.a * this.k0));
-    lat = phi2z(this.e, ts);
-    if (lat === -9999) {
-      return null;
-    }
-  }
-  lon = adjust_lon(this.long0 + x / (this.a * this.k0));
-
-  p.x = lon;
-  p.y = lat;
-  return p;
-};
-
-exports.names = ["Mercator", "Popular Visualisation Pseudo Mercator", "Mercator_1SP", "Mercator_Auxiliary_Sphere", "merc"];
-
-},{"../common/adjust_lon":5,"../common/msfnz":15,"../common/phi2z":16,"../common/tsfnz":24}],53:[function(_dereq_,module,exports){
-var adjust_lon = _dereq_('../common/adjust_lon');
-/*
-  reference
-    "New Equal-Area Map Projections for Noncircular Regions", John P. Snyder,
-    The American Cartographer, Vol 15, No. 4, October 1988, pp. 341-355.
-  */
-
-
-/* Initialize the Miller Cylindrical projection
-  -------------------------------------------*/
-exports.init = function() {
-  //no-op
-};
-
-
-/* Miller Cylindrical forward equations--mapping lat,long to x,y
-    ------------------------------------------------------------*/
-exports.forward = function(p) {
-  var lon = p.x;
-  var lat = p.y;
-  /* Forward equations
-      -----------------*/
-  var dlon = adjust_lon(lon - this.long0);
-  var x = this.x0 + this.a * dlon;
-  var y = this.y0 + this.a * Math.log(Math.tan((Math.PI / 4) + (lat / 2.5))) * 1.25;
-
-  p.x = x;
-  p.y = y;
-  return p;
-};
-
-/* Miller Cylindrical inverse equations--mapping x,y to lat/long
-    ------------------------------------------------------------*/
-exports.inverse = function(p) {
-  p.x -= this.x0;
-  p.y -= this.y0;
-
-  var lon = adjust_lon(this.long0 + p.x / this.a);
-  var lat = 2.5 * (Math.atan(Math.exp(0.8 * p.y / this.a)) - Math.PI / 4);
-
-  p.x = lon;
-  p.y = lat;
-  return p;
-};
-exports.names = ["Miller_Cylindrical", "mill"];
-
-},{"../common/adjust_lon":5}],54:[function(_dereq_,module,exports){
-var adjust_lon = _dereq_('../common/adjust_lon');
-var EPSLN = 1.0e-10;
-exports.init = function() {};
-
-/* Mollweide forward equations--mapping lat,long to x,y
-    ----------------------------------------------------*/
-exports.forward = function(p) {
-
-  /* Forward equations
-      -----------------*/
-  var lon = p.x;
-  var lat = p.y;
-
-  var delta_lon = adjust_lon(lon - this.long0);
-  var theta = lat;
-  var con = Math.PI * Math.sin(lat);
-
-  /* Iterate using the Newton-Raphson method to find theta
-      -----------------------------------------------------*/
-  for (var i = 0; true; i++) {
-    var delta_theta = -(theta + Math.sin(theta) - con) / (1 + Math.cos(theta));
-    theta += delta_theta;
-    if (Math.abs(delta_theta) < EPSLN) {
-      break;
-    }
-  }
-  theta /= 2;
-
-  /* If the latitude is 90 deg, force the x coordinate to be "0 + false easting"
-       this is done here because of precision problems with "cos(theta)"
-       --------------------------------------------------------------------------*/
-  if (Math.PI / 2 - Math.abs(lat) < EPSLN) {
-    delta_lon = 0;
-  }
-  var x = 0.900316316158 * this.a * delta_lon * Math.cos(theta) + this.x0;
-  var y = 1.4142135623731 * this.a * Math.sin(theta) + this.y0;
-
-  p.x = x;
-  p.y = y;
-  return p;
-};
-
-exports.inverse = function(p) {
-  var theta;
-  var arg;
-
-  /* Inverse equations
-      -----------------*/
-  p.x -= this.x0;
-  p.y -= this.y0;
-  arg = p.y / (1.4142135623731 * this.a);
-
-  /* Because of division by zero problems, 'arg' can not be 1.  Therefore
-       a number very close to one is used instead.
-       -------------------------------------------------------------------*/
-  if (Math.abs(arg) > 0.999999999999) {
-    arg = 0.999999999999;
-  }
-  theta = Math.asin(arg);
-  var lon = adjust_lon(this.long0 + (p.x / (0.900316316158 * this.a * Math.cos(theta))));
-  if (lon < (-Math.PI)) {
-    lon = -Math.PI;
-  }
-  if (lon > Math.PI) {
-    lon = Math.PI;
-  }
-  arg = (2 * theta + Math.sin(2 * theta)) / Math.PI;
-  if (Math.abs(arg) > 1) {
-    arg = 1;
-  }
-  var lat = Math.asin(arg);
-
-  p.x = lon;
-  p.y = lat;
-  return p;
-};
-exports.names = ["Mollweide", "moll"];
-
-},{"../common/adjust_lon":5}],55:[function(_dereq_,module,exports){
-var SEC_TO_RAD = 4.84813681109535993589914102357e-6;
-/*
-  reference
-    Department of Land and Survey Technical Circular 1973/32
-      http://www.linz.govt.nz/docs/miscellaneous/nz-map-definition.pdf
-    OSG Technical Report 4.1
-      http://www.linz.govt.nz/docs/miscellaneous/nzmg.pdf
-  */
-
-/**
- * iterations: Number of iterations to refine inverse transform.
- *     0 -> km accuracy
- *     1 -> m accuracy -- suitable for most mapping applications
- *     2 -> mm accuracy
- */
-exports.iterations = 1;
-
-exports.init = function() {
-  this.A = [];
-  this.A[1] = 0.6399175073;
-  this.A[2] = -0.1358797613;
-  this.A[3] = 0.063294409;
-  this.A[4] = -0.02526853;
-  this.A[5] = 0.0117879;
-  this.A[6] = -0.0055161;
-  this.A[7] = 0.0026906;
-  this.A[8] = -0.001333;
-  this.A[9] = 0.00067;
-  this.A[10] = -0.00034;
-
-  this.B_re = [];
-  this.B_im = [];
-  this.B_re[1] = 0.7557853228;
-  this.B_im[1] = 0;
-  this.B_re[2] = 0.249204646;
-  this.B_im[2] = 0.003371507;
-  this.B_re[3] = -0.001541739;
-  this.B_im[3] = 0.041058560;
-  this.B_re[4] = -0.10162907;
-  this.B_im[4] = 0.01727609;
-  this.B_re[5] = -0.26623489;
-  this.B_im[5] = -0.36249218;
-  this.B_re[6] = -0.6870983;
-  this.B_im[6] = -1.1651967;
-
-  this.C_re = [];
-  this.C_im = [];
-  this.C_re[1] = 1.3231270439;
-  this.C_im[1] = 0;
-  this.C_re[2] = -0.577245789;
-  this.C_im[2] = -0.007809598;
-  this.C_re[3] = 0.508307513;
-  this.C_im[3] = -0.112208952;
-  this.C_re[4] = -0.15094762;
-  this.C_im[4] = 0.18200602;
-  this.C_re[5] = 1.01418179;
-  this.C_im[5] = 1.64497696;
-  this.C_re[6] = 1.9660549;
-  this.C_im[6] = 2.5127645;
-
-  this.D = [];
-  this.D[1] = 1.5627014243;
-  this.D[2] = 0.5185406398;
-  this.D[3] = -0.03333098;
-  this.D[4] = -0.1052906;
-  this.D[5] = -0.0368594;
-  this.D[6] = 0.007317;
-  this.D[7] = 0.01220;
-  this.D[8] = 0.00394;
-  this.D[9] = -0.0013;
-};
-
-/**
-    New Zealand Map Grid Forward  - long/lat to x/y
-    long/lat in radians
-  */
-exports.forward = function(p) {
-  var n;
-  var lon = p.x;
-  var lat = p.y;
-
-  var delta_lat = lat - this.lat0;
-  var delta_lon = lon - this.long0;
-
-  // 1. Calculate d_phi and d_psi    ...                          // and d_lambda
-  // For this algorithm, delta_latitude is in seconds of arc x 10-5, so we need to scale to those units. Longitude is radians.
-  var d_phi = delta_lat / SEC_TO_RAD * 1E-5;
-  var d_lambda = delta_lon;
-  var d_phi_n = 1; // d_phi^0
-
-  var d_psi = 0;
-  for (n = 1; n <= 10; n++) {
-    d_phi_n = d_phi_n * d_phi;
-    d_psi = d_psi + this.A[n] * d_phi_n;
-  }
-
-  // 2. Calculate theta
-  var th_re = d_psi;
-  var th_im = d_lambda;
-
-  // 3. Calculate z
-  var th_n_re = 1;
-  var th_n_im = 0; // theta^0
-  var th_n_re1;
-  var th_n_im1;
-
-  var z_re = 0;
-  var z_im = 0;
-  for (n = 1; n <= 6; n++) {
-    th_n_re1 = th_n_re * th_re - th_n_im * th_im;
-    th_n_im1 = th_n_im * th_re + th_n_re * th_im;
-    th_n_re = th_n_re1;
-    th_n_im = th_n_im1;
-    z_re = z_re + this.B_re[n] * th_n_re - this.B_im[n] * th_n_im;
-    z_im = z_im + this.B_im[n] * th_n_re + this.B_re[n] * th_n_im;
-  }
-
-  // 4. Calculate easting and northing
-  p.x = (z_im * this.a) + this.x0;
-  p.y = (z_re * this.a) + this.y0;
-
-  return p;
-};
-
-
-/**
-    New Zealand Map Grid Inverse  -  x/y to long/lat
-  */
-exports.inverse = function(p) {
-  var n;
-  var x = p.x;
-  var y = p.y;
-
-  var delta_x = x - this.x0;
-  var delta_y = y - this.y0;
-
-  // 1. Calculate z
-  var z_re = delta_y / this.a;
-  var z_im = delta_x / this.a;
-
-  // 2a. Calculate theta - first approximation gives km accuracy
-  var z_n_re = 1;
-  var z_n_im = 0; // z^0
-  var z_n_re1;
-  var z_n_im1;
-
-  var th_re = 0;
-  var th_im = 0;
-  for (n = 1; n <= 6; n++) {
-    z_n_re1 = z_n_re * z_re - z_n_im * z_im;
-    z_n_im1 = z_n_im * z_re + z_n_re * z_im;
-    z_n_re = z_n_re1;
-    z_n_im = z_n_im1;
-    th_re = th_re + this.C_re[n] * z_n_re - this.C_im[n] * z_n_im;
-    th_im = th_im + this.C_im[n] * z_n_re + this.C_re[n] * z_n_im;
-  }
-
-  // 2b. Iterate to refine the accuracy of the calculation
-  //        0 iterations gives km accuracy
-  //        1 iteration gives m accuracy -- good enough for most mapping applications
-  //        2 iterations bives mm accuracy
-  for (var i = 0; i < this.iterations; i++) {
-    var th_n_re = th_re;
-    var th_n_im = th_im;
-    var th_n_re1;
-    var th_n_im1;
-
-    var num_re = z_re;
-    var num_im = z_im;
-    for (n = 2; n <= 6; n++) {
-      th_n_re1 = th_n_re * th_re - th_n_im * th_im;
-      th_n_im1 = th_n_im * th_re + th_n_re * th_im;
-      th_n_re = th_n_re1;
-      th_n_im = th_n_im1;
-      num_re = num_re + (n - 1) * (this.B_re[n] * th_n_re - this.B_im[n] * th_n_im);
-      num_im = num_im + (n - 1) * (this.B_im[n] * th_n_re + this.B_re[n] * th_n_im);
-    }
-
-    th_n_re = 1;
-    th_n_im = 0;
-    var den_re = this.B_re[1];
-    var den_im = this.B_im[1];
-    for (n = 2; n <= 6; n++) {
-      th_n_re1 = th_n_re * th_re - th_n_im * th_im;
-      th_n_im1 = th_n_im * th_re + th_n_re * th_im;
-      th_n_re = th_n_re1;
-      th_n_im = th_n_im1;
-      den_re = den_re + n * (this.B_re[n] * th_n_re - this.B_im[n] * th_n_im);
-      den_im = den_im + n * (this.B_im[n] * th_n_re + this.B_re[n] * th_n_im);
-    }
-
-    // Complex division
-    var den2 = den_re * den_re + den_im * den_im;
-    th_re = (num_re * den_re + num_im * den_im) / den2;
-    th_im = (num_im * den_re - num_re * den_im) / den2;
-  }
-
-  // 3. Calculate d_phi              ...                                    // and d_lambda
-  var d_psi = th_re;
-  var d_lambda = th_im;
-  var d_psi_n = 1; // d_psi^0
-
-  var d_phi = 0;
-  for (n = 1; n <= 9; n++) {
-    d_psi_n = d_psi_n * d_psi;
-    d_phi = d_phi + this.D[n] * d_psi_n;
-  }
-
-  // 4. Calculate latitude and longitude
-  // d_phi is calcuated in second of arc * 10^-5, so we need to scale back to radians. d_lambda is in radians.
-  var lat = this.lat0 + (d_phi * SEC_TO_RAD * 1E5);
-  var lon = this.long0 + d_lambda;
-
-  p.x = lon;
-  p.y = lat;
-
-  return p;
-};
-exports.names = ["New_Zealand_Map_Grid", "nzmg"];
-},{}],56:[function(_dereq_,module,exports){
-var tsfnz = _dereq_('../common/tsfnz');
-var adjust_lon = _dereq_('../common/adjust_lon');
-var phi2z = _dereq_('../common/phi2z');
-var HALF_PI = Math.PI/2;
-var FORTPI = Math.PI/4;
-var EPSLN = 1.0e-10;
-
-/* Initialize the Oblique Mercator  projection
-    ------------------------------------------*/
-exports.init = function() {
-  this.no_off = this.no_off || false;
-  this.no_rot = this.no_rot || false;
-
-  if (isNaN(this.k0)) {
-    this.k0 = 1;
-  }
-  var sinlat = Math.sin(this.lat0);
-  var coslat = Math.cos(this.lat0);
-  var con = this.e * sinlat;
-
-  this.bl = Math.sqrt(1 + this.es / (1 - this.es) * Math.pow(coslat, 4));
-  this.al = this.a * this.bl * this.k0 * Math.sqrt(1 - this.es) / (1 - con * con);
-  var t0 = tsfnz(this.e, this.lat0, sinlat);
-  var dl = this.bl / coslat * Math.sqrt((1 - this.es) / (1 - con * con));
-  if (dl * dl < 1) {
-    dl = 1;
-  }
-  var fl;
-  var gl;
-  if (!isNaN(this.longc)) {
-    //Central point and azimuth method
-
-    if (this.lat0 >= 0) {
-      fl = dl + Math.sqrt(dl * dl - 1);
-    }
-    else {
-      fl = dl - Math.sqrt(dl * dl - 1);
-    }
-    this.el = fl * Math.pow(t0, this.bl);
-    gl = 0.5 * (fl - 1 / fl);
-    this.gamma0 = Math.asin(Math.sin(this.alpha) / dl);
-    this.long0 = this.longc - Math.asin(gl * Math.tan(this.gamma0)) / this.bl;
-
-  }
-  else {
-    //2 points method
-    var t1 = tsfnz(this.e, this.lat1, Math.sin(this.lat1));
-    var t2 = tsfnz(this.e, this.lat2, Math.sin(this.lat2));
-    if (this.lat0 >= 0) {
-      this.el = (dl + Math.sqrt(dl * dl - 1)) * Math.pow(t0, this.bl);
-    }
-    else {
-      this.el = (dl - Math.sqrt(dl * dl - 1)) * Math.pow(t0, this.bl);
-    }
-    var hl = Math.pow(t1, this.bl);
-    var ll = Math.pow(t2, this.bl);
-    fl = this.el / hl;
-    gl = 0.5 * (fl - 1 / fl);
-    var jl = (this.el * this.el - ll * hl) / (this.el * this.el + ll * hl);
-    var pl = (ll - hl) / (ll + hl);
-    var dlon12 = adjust_lon(this.long1 - this.long2);
-    this.long0 = 0.5 * (this.long1 + this.long2) - Math.atan(jl * Math.tan(0.5 * this.bl * (dlon12)) / pl) / this.bl;
-    this.long0 = adjust_lon(this.long0);
-    var dlon10 = adjust_lon(this.long1 - this.long0);
-    this.gamma0 = Math.atan(Math.sin(this.bl * (dlon10)) / gl);
-    this.alpha = Math.asin(dl * Math.sin(this.gamma0));
-  }
-
-  if (this.no_off) {
-    this.uc = 0;
-  }
-  else {
-    if (this.lat0 >= 0) {
-      this.uc = this.al / this.bl * Math.atan2(Math.sqrt(dl * dl - 1), Math.cos(this.alpha));
-    }
-    else {
-      this.uc = -1 * this.al / this.bl * Math.atan2(Math.sqrt(dl * dl - 1), Math.cos(this.alpha));
-    }
-  }
-
-};
-
-
-/* Oblique Mercator forward equations--mapping lat,long to x,y
-    ----------------------------------------------------------*/
-exports.forward = function(p) {
-  var lon = p.x;
-  var lat = p.y;
-  var dlon = adjust_lon(lon - this.long0);
-  var us, vs;
-  var con;
-  if (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN) {
-    if (lat > 0) {
-      con = -1;
-    }
-    else {
-      con = 1;
-    }
-    vs = this.al / this.bl * Math.log(Math.tan(FORTPI + con * this.gamma0 * 0.5));
-    us = -1 * con * HALF_PI * this.al / this.bl;
-  }
-  else {
-    var t = tsfnz(this.e, lat, Math.sin(lat));
-    var ql = this.el / Math.pow(t, this.bl);
-    var sl = 0.5 * (ql - 1 / ql);
-    var tl = 0.5 * (ql + 1 / ql);
-    var vl = Math.sin(this.bl * (dlon));
-    var ul = (sl * Math.sin(this.gamma0) - vl * Math.cos(this.gamma0)) / tl;
-    if (Math.abs(Math.abs(ul) - 1) <= EPSLN) {
-      vs = Number.POSITIVE_INFINITY;
-    }
-    else {
-      vs = 0.5 * this.al * Math.log((1 - ul) / (1 + ul)) / this.bl;
-    }
-    if (Math.abs(Math.cos(this.bl * (dlon))) <= EPSLN) {
-      us = this.al * this.bl * (dlon);
-    }
-    else {
-      us = this.al * Math.atan2(sl * Math.cos(this.gamma0) + vl * Math.sin(this.gamma0), Math.cos(this.bl * dlon)) / this.bl;
-    }
-  }
-
-  if (this.no_rot) {
-    p.x = this.x0 + us;
-    p.y = this.y0 + vs;
-  }
-  else {
-
-    us -= this.uc;
-    p.x = this.x0 + vs * Math.cos(this.alpha) + us * Math.sin(this.alpha);
-    p.y = this.y0 + us * Math.cos(this.alpha) - vs * Math.sin(this.alpha);
-  }
-  return p;
-};
-
-exports.inverse = function(p) {
-  var us, vs;
-  if (this.no_rot) {
-    vs = p.y - this.y0;
-    us = p.x - this.x0;
-  }
-  else {
-    vs = (p.x - this.x0) * Math.cos(this.alpha) - (p.y - this.y0) * Math.sin(this.alpha);
-    us = (p.y - this.y0) * Math.cos(this.alpha) + (p.x - this.x0) * Math.sin(this.alpha);
-    us += this.uc;
-  }
-  var qp = Math.exp(-1 * this.bl * vs / this.al);
-  var sp = 0.5 * (qp - 1 / qp);
-  var tp = 0.5 * (qp + 1 / qp);
-  var vp = Math.sin(this.bl * us / this.al);
-  var up = (vp * Math.cos(this.gamma0) + sp * Math.sin(this.gamma0)) / tp;
-  var ts = Math.pow(this.el / Math.sqrt((1 + up) / (1 - up)), 1 / this.bl);
-  if (Math.abs(up - 1) < EPSLN) {
-    p.x = this.long0;
-    p.y = HALF_PI;
-  }
-  else if (Math.abs(up + 1) < EPSLN) {
-    p.x = this.long0;
-    p.y = -1 * HALF_PI;
-  }
-  else {
-    p.y = phi2z(this.e, ts);
-    p.x = adjust_lon(this.long0 - Math.atan2(sp * Math.cos(this.gamma0) - vp * Math.sin(this.gamma0), Math.cos(this.bl * us / this.al)) / this.bl);
-  }
-  return p;
-};
-
-exports.names = ["Hotine_Oblique_Mercator", "Hotine Oblique Mercator", "Hotine_Oblique_Mercator_Azimuth_Natural_Origin", "Hotine_Oblique_Mercator_Azimuth_Center", "omerc"];
-},{"../common/adjust_lon":5,"../common/phi2z":16,"../common/tsfnz":24}],57:[function(_dereq_,module,exports){
-var e0fn = _dereq_('../common/e0fn');
-var e1fn = _dereq_('../common/e1fn');
-var e2fn = _dereq_('../common/e2fn');
-var e3fn = _dereq_('../common/e3fn');
-var adjust_lon = _dereq_('../common/adjust_lon');
-var adjust_lat = _dereq_('../common/adjust_lat');
-var mlfn = _dereq_('../common/mlfn');
-var EPSLN = 1.0e-10;
-var gN = _dereq_('../common/gN');
-var MAX_ITER = 20;
-exports.init = function() {
-  /* Place parameters in static storage for common use
-      -------------------------------------------------*/
-  this.temp = this.b / this.a;
-  this.es = 1 - Math.pow(this.temp, 2); // devait etre dans tmerc.js mais n y est pas donc je commente sinon retour de valeurs nulles
-  this.e = Math.sqrt(this.es);
-  this.e0 = e0fn(this.es);
-  this.e1 = e1fn(this.es);
-  this.e2 = e2fn(this.es);
-  this.e3 = e3fn(this.es);
-  this.ml0 = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0); //si que des zeros le calcul ne se fait pas
-};
-
-
-/* Polyconic forward equations--mapping lat,long to x,y
-    ---------------------------------------------------*/
-exports.forward = function(p) {
-  var lon = p.x;
-  var lat = p.y;
-  var x, y, el;
-  var dlon = adjust_lon(lon - this.long0);
-  el = dlon * Math.sin(lat);
-  if (this.sphere) {
-    if (Math.abs(lat) <= EPSLN) {
-      x = this.a * dlon;
-      y = -1 * this.a * this.lat0;
-    }
-    else {
-      x = this.a * Math.sin(el) / Math.tan(lat);
-      y = this.a * (adjust_lat(lat - this.lat0) + (1 - Math.cos(el)) / Math.tan(lat));
-    }
-  }
-  else {
-    if (Math.abs(lat) <= EPSLN) {
-      x = this.a * dlon;
-      y = -1 * this.ml0;
-    }
-    else {
-      var nl = gN(this.a, this.e, Math.sin(lat)) / Math.tan(lat);
-      x = nl * Math.sin(el);
-      y = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, lat) - this.ml0 + nl * (1 - Math.cos(el));
-    }
-
-  }
-  p.x = x + this.x0;
-  p.y = y + this.y0;
-  return p;
-};
-
-
-/* Inverse equations
-  -----------------*/
-exports.inverse = function(p) {
-  var lon, lat, x, y, i;
-  var al, bl;
-  var phi, dphi;
-  x = p.x - this.x0;
-  y = p.y - this.y0;
-
-  if (this.sphere) {
-    if (Math.abs(y + this.a * this.lat0) <= EPSLN) {
-      lon = adjust_lon(x / this.a + this.long0);
-      lat = 0;
-    }
-    else {
-      al = this.lat0 + y / this.a;
-      bl = x * x / this.a / this.a + al * al;
-      phi = al;
-      var tanphi;
-      for (i = MAX_ITER; i; --i) {
-        tanphi = Math.tan(phi);
-        dphi = -1 * (al * (phi * tanphi + 1) - phi - 0.5 * (phi * phi + bl) * tanphi) / ((phi - al) / tanphi - 1);
-        phi += dphi;
-        if (Math.abs(dphi) <= EPSLN) {
-          lat = phi;
-          break;
-        }
-      }
-      lon = adjust_lon(this.long0 + (Math.asin(x * Math.tan(phi) / this.a)) / Math.sin(lat));
-    }
-  }
-  else {
-    if (Math.abs(y + this.ml0) <= EPSLN) {
-      lat = 0;
-      lon = adjust_lon(this.long0 + x / this.a);
-    }
-    else {
-
-      al = (this.ml0 + y) / this.a;
-      bl = x * x / this.a / this.a + al * al;
-      phi = al;
-      var cl, mln, mlnp, ma;
-      var con;
-      for (i = MAX_ITER; i; --i) {
-        con = this.e * Math.sin(phi);
-        cl = Math.sqrt(1 - con * con) * Math.tan(phi);
-        mln = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, phi);
-        mlnp = this.e0 - 2 * this.e1 * Math.cos(2 * phi) + 4 * this.e2 * Math.cos(4 * phi) - 6 * this.e3 * Math.cos(6 * phi);
-        ma = mln / this.a;
-        dphi = (al * (cl * ma + 1) - ma - 0.5 * cl * (ma * ma + bl)) / (this.es * Math.sin(2 * phi) * (ma * ma + bl - 2 * al * ma) / (4 * cl) + (al - ma) * (cl * mlnp - 2 / Math.sin(2 * phi)) - mlnp);
-        phi -= dphi;
-        if (Math.abs(dphi) <= EPSLN) {
-          lat = phi;
-          break;
-        }
-      }
-
-      //lat=phi4z(this.e,this.e0,this.e1,this.e2,this.e3,al,bl,0,0);
-      cl = Math.sqrt(1 - this.es * Math.pow(Math.sin(lat), 2)) * Math.tan(lat);
-      lon = adjust_lon(this.long0 + Math.asin(x * cl / this.a) / Math.sin(lat));
-    }
-  }
-
-  p.x = lon;
-  p.y = lat;
-  return p;
-};
-exports.names = ["Polyconic", "poly"];
-},{"../common/adjust_lat":4,"../common/adjust_lon":5,"../common/e0fn":7,"../common/e1fn":8,"../common/e2fn":9,"../common/e3fn":10,"../common/gN":11,"../common/mlfn":14}],58:[function(_dereq_,module,exports){
-var adjust_lon = _dereq_('../common/adjust_lon');
-var adjust_lat = _dereq_('../common/adjust_lat');
-var pj_enfn = _dereq_('../common/pj_enfn');
-var MAX_ITER = 20;
-var pj_mlfn = _dereq_('../common/pj_mlfn');
-var pj_inv_mlfn = _dereq_('../common/pj_inv_mlfn');
-var HALF_PI = Math.PI/2;
-var EPSLN = 1.0e-10;
-var asinz = _dereq_('../common/asinz');
-exports.init = function() {
-  /* Place parameters in static storage for common use
-    -------------------------------------------------*/
-
-
-  if (!this.sphere) {
-    this.en = pj_enfn(this.es);
-  }
-  else {
-    this.n = 1;
-    this.m = 0;
-    this.es = 0;
-    this.C_y = Math.sqrt((this.m + 1) / this.n);
-    this.C_x = this.C_y / (this.m + 1);
-  }
-
-};
-
-/* Sinusoidal forward equations--mapping lat,long to x,y
-  -----------------------------------------------------*/
-exports.forward = function(p) {
-  var x, y;
-  var lon = p.x;
-  var lat = p.y;
-  /* Forward equations
-    -----------------*/
-  lon = adjust_lon(lon - this.long0);
-
-  if (this.sphere) {
-    if (!this.m) {
-      lat = this.n !== 1 ? Math.asin(this.n * Math.sin(lat)) : lat;
-    }
-    else {
-      var k = this.n * Math.sin(lat);
-      for (var i = MAX_ITER; i; --i) {
-        var V = (this.m * lat + Math.sin(lat) - k) / (this.m + Math.cos(lat));
-        lat -= V;
-        if (Math.abs(V) < EPSLN) {
-          break;
-        }
-      }
-    }
-    x = this.a * this.C_x * lon * (this.m + Math.cos(lat));
-    y = this.a * this.C_y * lat;
-
-  }
-  else {
-
-    var s = Math.sin(lat);
-    var c = Math.cos(lat);
-    y = this.a * pj_mlfn(lat, s, c, this.en);
-    x = this.a * lon * c / Math.sqrt(1 - this.es * s * s);
-  }
-
-  p.x = x;
-  p.y = y;
-  return p;
-};
-
-exports.inverse = function(p) {
-  var lat, temp, lon, s;
-
-  p.x -= this.x0;
-  lon = p.x / this.a;
-  p.y -= this.y0;
-  lat = p.y / this.a;
-
-  if (this.sphere) {
-    lat /= this.C_y;
-    lon = lon / (this.C_x * (this.m + Math.cos(lat)));
-    if (this.m) {
-      lat = asinz((this.m * lat + Math.sin(lat)) / this.n);
-    }
-    else if (this.n !== 1) {
-      lat = asinz(Math.sin(lat) / this.n);
-    }
-    lon = adjust_lon(lon + this.long0);
-    lat = adjust_lat(lat);
-  }
-  else {
-    lat = pj_inv_mlfn(p.y / this.a, this.es, this.en);
-    s = Math.abs(lat);
-    if (s < HALF_PI) {
-      s = Math.sin(lat);
-      temp = this.long0 + p.x * Math.sqrt(1 - this.es * s * s) / (this.a * Math.cos(lat));
-      //temp = this.long0 + p.x / (this.a * Math.cos(lat));
-      lon = adjust_lon(temp);
-    }
-    else if ((s - EPSLN) < HALF_PI) {
-      lon = this.long0;
-    }
-  }
-  p.x = lon;
-  p.y = lat;
-  return p;
-};
-exports.names = ["Sinusoidal", "sinu"];
-},{"../common/adjust_lat":4,"../common/adjust_lon":5,"../common/asinz":6,"../common/pj_enfn":17,"../common/pj_inv_mlfn":18,"../common/pj_mlfn":19}],59:[function(_dereq_,module,exports){
-/*
-  references:
-    Formules et constantes pour le Calcul pour la
-    projection cylindrique conforme à axe oblique et pour la transformation entre
-    des systèmes de référence.
-    http://www.swisstopo.admin.ch/internet/swisstopo/fr/home/topics/survey/sys/refsys/switzerland.parsysrelated1.31216.downloadList.77004.DownloadFile.tmp/swissprojectionfr.pdf
-  */
-exports.init = function() {
-  var phy0 = this.lat0;
-  this.lambda0 = this.long0;
-  var sinPhy0 = Math.sin(phy0);
-  var semiMajorAxis = this.a;
-  var invF = this.rf;
-  var flattening = 1 / invF;
-  var e2 = 2 * flattening - Math.pow(flattening, 2);
-  var e = this.e = Math.sqrt(e2);
-  this.R = this.k0 * semiMajorAxis * Math.sqrt(1 - e2) / (1 - e2 * Math.pow(sinPhy0, 2));
-  this.alpha = Math.sqrt(1 + e2 / (1 - e2) * Math.pow(Math.cos(phy0), 4));
-  this.b0 = Math.asin(sinPhy0 / this.alpha);
-  var k1 = Math.log(Math.tan(Math.PI / 4 + this.b0 / 2));
-  var k2 = Math.log(Math.tan(Math.PI / 4 + phy0 / 2));
-  var k3 = Math.log((1 + e * sinPhy0) / (1 - e * sinPhy0));
-  this.K = k1 - this.alpha * k2 + this.alpha * e / 2 * k3;
-};
-
-
-exports.forward = function(p) {
-  var Sa1 = Math.log(Math.tan(Math.PI / 4 - p.y / 2));
-  var Sa2 = this.e / 2 * Math.log((1 + this.e * Math.sin(p.y)) / (1 - this.e * Math.sin(p.y)));
-  var S = -this.alpha * (Sa1 + Sa2) + this.K;
-
-  // spheric latitude
-  var b = 2 * (Math.atan(Math.exp(S)) - Math.PI / 4);
-
-  // spheric longitude
-  var I = this.alpha * (p.x - this.lambda0);
-
-  // psoeudo equatorial rotation
-  var rotI = Math.atan(Math.sin(I) / (Math.sin(this.b0) * Math.tan(b) + Math.cos(this.b0) * Math.cos(I)));
-
-  var rotB = Math.asin(Math.cos(this.b0) * Math.sin(b) - Math.sin(this.b0) * Math.cos(b) * Math.cos(I));
-
-  p.y = this.R / 2 * Math.log((1 + Math.sin(rotB)) / (1 - Math.sin(rotB))) + this.y0;
-  p.x = this.R * rotI + this.x0;
-  return p;
-};
-
-exports.inverse = function(p) {
-  var Y = p.x - this.x0;
-  var X = p.y - this.y0;
-
-  var rotI = Y / this.R;
-  var rotB = 2 * (Math.atan(Math.exp(X / this.R)) - Math.PI / 4);
-
-  var b = Math.asin(Math.cos(this.b0) * Math.sin(rotB) + Math.sin(this.b0) * Math.cos(rotB) * Math.cos(rotI));
-  var I = Math.atan(Math.sin(rotI) / (Math.cos(this.b0) * Math.cos(rotI) - Math.sin(this.b0) * Math.tan(rotB)));
-
-  var lambda = this.lambda0 + I / this.alpha;
-
-  var S = 0;
-  var phy = b;
-  var prevPhy = -1000;
-  var iteration = 0;
-  while (Math.abs(phy - prevPhy) > 0.0000001) {
-    if (++iteration > 20) {
-      //...reportError("omercFwdInfinity");
-      return;
-    }
-    //S = Math.log(Math.tan(Math.PI / 4 + phy / 2));
-    S = 1 / this.alpha * (Math.log(Math.tan(Math.PI / 4 + b / 2)) - this.K) + this.e * Math.log(Math.tan(Math.PI / 4 + Math.asin(this.e * Math.sin(phy)) / 2));
-    prevPhy = phy;
-    phy = 2 * Math.atan(Math.exp(S)) - Math.PI / 2;
-  }
-
-  p.x = lambda;
-  p.y = phy;
-  return p;
-};
-
-exports.names = ["somerc"];
-
-},{}],60:[function(_dereq_,module,exports){
-var HALF_PI = Math.PI/2;
-var EPSLN = 1.0e-10;
-var sign = _dereq_('../common/sign');
-var msfnz = _dereq_('../common/msfnz');
-var tsfnz = _dereq_('../common/tsfnz');
-var phi2z = _dereq_('../common/phi2z');
-var adjust_lon = _dereq_('../common/adjust_lon');
-exports.ssfn_ = function(phit, sinphi, eccen) {
-  sinphi *= eccen;
-  return (Math.tan(0.5 * (HALF_PI + phit)) * Math.pow((1 - sinphi) / (1 + sinphi), 0.5 * eccen));
-};
-
-exports.init = function() {
-  this.coslat0 = Math.cos(this.lat0);
-  this.sinlat0 = Math.sin(this.lat0);
-  if (this.sphere) {
-    if (this.k0 === 1 && !isNaN(this.lat_ts) && Math.abs(this.coslat0) <= EPSLN) {
-      this.k0 = 0.5 * (1 + sign(this.lat0) * Math.sin(this.lat_ts));
-    }
-  }
-  else {
-    if (Math.abs(this.coslat0) <= EPSLN) {
-      if (this.lat0 > 0) {
-        //North pole
-        //trace('stere:north pole');
-        this.con = 1;
-      }
-      else {
-        //South pole
-        //trace('stere:south pole');
-        this.con = -1;
-      }
-    }
-    this.cons = Math.sqrt(Math.pow(1 + this.e, 1 + this.e) * Math.pow(1 - this.e, 1 - this.e));
-    if (this.k0 === 1 && !isNaN(this.lat_ts) && Math.abs(this.coslat0) <= EPSLN) {
-      this.k0 = 0.5 * this.cons * msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts)) / tsfnz(this.e, this.con * this.lat_ts, this.con * Math.sin(this.lat_ts));
-    }
-    this.ms1 = msfnz(this.e, this.sinlat0, this.coslat0);
-    this.X0 = 2 * Math.atan(this.ssfn_(this.lat0, this.sinlat0, this.e)) - HALF_PI;
-    this.cosX0 = Math.cos(this.X0);
-    this.sinX0 = Math.sin(this.X0);
-  }
-};
-
-// Stereographic forward equations--mapping lat,long to x,y
-exports.forward = function(p) {
-  var lon = p.x;
-  var lat = p.y;
-  var sinlat = Math.sin(lat);
-  var coslat = Math.cos(lat);
-  var A, X, sinX, cosX, ts, rh;
-  var dlon = adjust_lon(lon - this.long0);
-
-  if (Math.abs(Math.abs(lon - this.long0) - Math.PI) <= EPSLN && Math.abs(lat + this.lat0) <= EPSLN) {
-    //case of the origine point
-    //trace('stere:this is the origin point');
-    p.x = NaN;
-    p.y = NaN;
-    return p;
-  }
-  if (this.sphere) {
-    //trace('stere:sphere case');
-    A = 2 * this.k0 / (1 + this.sinlat0 * sinlat + this.coslat0 * coslat * Math.cos(dlon));
-    p.x = this.a * A * coslat * Math.sin(dlon) + this.x0;
-    p.y = this.a * A * (this.coslat0 * sinlat - this.sinlat0 * coslat * Math.cos(dlon)) + this.y0;
-    return p;
-  }
-  else {
-    X = 2 * Math.atan(this.ssfn_(lat, sinlat, this.e)) - HALF_PI;
-    cosX = Math.cos(X);
-    sinX = Math.sin(X);
-    if (Math.abs(this.coslat0) <= EPSLN) {
-      ts = tsfnz(this.e, lat * this.con, this.con * sinlat);
-      rh = 2 * this.a * this.k0 * ts / this.cons;
-      p.x = this.x0 + rh * Math.sin(lon - this.long0);
-      p.y = this.y0 - this.con * rh * Math.cos(lon - this.long0);
-      //trace(p.toString());
-      return p;
-    }
-    else if (Math.abs(this.sinlat0) < EPSLN) {
-      //Eq
-      //trace('stere:equateur');
-      A = 2 * this.a * this.k0 / (1 + cosX * Math.cos(dlon));
-      p.y = A * sinX;
-    }
-    else {
-      //other case
-      //trace('stere:normal case');
-      A = 2 * this.a * this.k0 * this.ms1 / (this.cosX0 * (1 + this.sinX0 * sinX + this.cosX0 * cosX * Math.cos(dlon)));
-      p.y = A * (this.cosX0 * sinX - this.sinX0 * cosX * Math.cos(dlon)) + this.y0;
-    }
-    p.x = A * cosX * Math.sin(dlon) + this.x0;
-  }
-  //trace(p.toString());
-  return p;
-};
-
-
-//* Stereographic inverse equations--mapping x,y to lat/long
-exports.inverse = function(p) {
-  p.x -= this.x0;
-  p.y -= this.y0;
-  var lon, lat, ts, ce, Chi;
-  var rh = Math.sqrt(p.x * p.x + p.y * p.y);
-  if (this.sphere) {
-    var c = 2 * Math.atan(rh / (0.5 * this.a * this.k0));
-    lon = this.long0;
-    lat = this.lat0;
-    if (rh <= EPSLN) {
-      p.x = lon;
-      p.y = lat;
-      return p;
-    }
-    lat = Math.asin(Math.cos(c) * this.sinlat0 + p.y * Math.sin(c) * this.coslat0 / rh);
-    if (Math.abs(this.coslat0) < EPSLN) {
-      if (this.lat0 > 0) {
-        lon = adjust_lon(this.long0 + Math.atan2(p.x, - 1 * p.y));
-      }
-      else {
-        lon = adjust_lon(this.long0 + Math.atan2(p.x, p.y));
-      }
-    }
-    else {
-      lon = adjust_lon(this.long0 + Math.atan2(p.x * Math.sin(c), rh * this.coslat0 * Math.cos(c) - p.y * this.sinlat0 * Math.sin(c)));
-    }
-    p.x = lon;
-    p.y = lat;
-    return p;
-  }
-  else {
-    if (Math.abs(this.coslat0) <= EPSLN) {
-      if (rh <= EPSLN) {
-        lat = this.lat0;
-        lon = this.long0;
-        p.x = lon;
-        p.y = lat;
-        //trace(p.toString());
-        return p;
-      }
-      p.x *= this.con;
-      p.y *= this.con;
-      ts = rh * this.cons / (2 * this.a * this.k0);
-      lat = this.con * phi2z(this.e, ts);
-      lon = this.con * adjust_lon(this.con * this.long0 + Math.atan2(p.x, - 1 * p.y));
-    }
-    else {
-      ce = 2 * Math.atan(rh * this.cosX0 / (2 * this.a * this.k0 * this.ms1));
-      lon = this.long0;
-      if (rh <= EPSLN) {
-        Chi = this.X0;
-      }
-      else {
-        Chi = Math.asin(Math.cos(ce) * this.sinX0 + p.y * Math.sin(ce) * this.cosX0 / rh);
-        lon = adjust_lon(this.long0 + Math.atan2(p.x * Math.sin(ce), rh * this.cosX0 * Math.cos(ce) - p.y * this.sinX0 * Math.sin(ce)));
-      }
-      lat = -1 * phi2z(this.e, Math.tan(0.5 * (HALF_PI + Chi)));
-    }
-  }
-  p.x = lon;
-  p.y = lat;
-
-  //trace(p.toString());
-  return p;
-
-};
-exports.names = ["stere", "Stereographic_South_Pole", "Polar Stereographic (variant B)"];
-
-},{"../common/adjust_lon":5,"../common/msfnz":15,"../common/phi2z":16,"../common/sign":21,"../common/tsfnz":24}],61:[function(_dereq_,module,exports){
-var gauss = _dereq_('./gauss');
-var adjust_lon = _dereq_('../common/adjust_lon');
-exports.init = function() {
-  gauss.init.apply(this);
-  if (!this.rc) {
-    return;
-  }
-  this.sinc0 = Math.sin(this.phic0);
-  this.cosc0 = Math.cos(this.phic0);
-  this.R2 = 2 * this.rc;
-  if (!this.title) {
-    this.title = "Oblique Stereographic Alternative";
-  }
-};
-
-exports.forward = function(p) {
-  var sinc, cosc, cosl, k;
-  p.x = adjust_lon(p.x - this.long0);
-  gauss.forward.apply(this, [p]);
-  sinc = Math.sin(p.y);
-  cosc = Math.cos(p.y);
-  cosl = Math.cos(p.x);
-  k = this.k0 * this.R2 / (1 + this.sinc0 * sinc + this.cosc0 * cosc * cosl);
-  p.x = k * cosc * Math.sin(p.x);
-  p.y = k * (this.cosc0 * sinc - this.sinc0 * cosc * cosl);
-  p.x = this.a * p.x + this.x0;
-  p.y = this.a * p.y + this.y0;
-  return p;
-};
-
-exports.inverse = function(p) {
-  var sinc, cosc, lon, lat, rho;
-  p.x = (p.x - this.x0) / this.a;
-  p.y = (p.y - this.y0) / this.a;
-
-  p.x /= this.k0;
-  p.y /= this.k0;
-  if ((rho = Math.sqrt(p.x * p.x + p.y * p.y))) {
-    var c = 2 * Math.atan2(rho, this.R2);
-    sinc = Math.sin(c);
-    cosc = Math.cos(c);
-    lat = Math.asin(cosc * this.sinc0 + p.y * sinc * this.cosc0 / rho);
-    lon = Math.atan2(p.x * sinc, rho * this.cosc0 * cosc - p.y * this.sinc0 * sinc);
-  }
-  else {
-    lat = this.phic0;
-    lon = 0;
-  }
-
-  p.x = lon;
-  p.y = lat;
-  gauss.inverse.apply(this, [p]);
-  p.x = adjust_lon(p.x + this.long0);
-  return p;
-};
-
-exports.names = ["Stereographic_North_Pole", "Oblique_Stereographic", "Polar_Stereographic", "sterea","Oblique Stereographic Alternative"];
-
-},{"../common/adjust_lon":5,"./gauss":46}],62:[function(_dereq_,module,exports){
-var e0fn = _dereq_('../common/e0fn');
-var e1fn = _dereq_('../common/e1fn');
-var e2fn = _dereq_('../common/e2fn');
-var e3fn = _dereq_('../common/e3fn');
-var mlfn = _dereq_('../common/mlfn');
-var adjust_lon = _dereq_('../common/adjust_lon');
-var HALF_PI = Math.PI/2;
-var EPSLN = 1.0e-10;
-var sign = _dereq_('../common/sign');
-var asinz = _dereq_('../common/asinz');
-
-exports.init = function() {
-  this.e0 = e0fn(this.es);
-  this.e1 = e1fn(this.es);
-  this.e2 = e2fn(this.es);
-  this.e3 = e3fn(this.es);
-  this.ml0 = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0);
-};
-
-/**
-    Transverse Mercator Forward  - long/lat to x/y
-    long/lat in radians
-  */
-exports.forward = function(p) {
-  var lon = p.x;
-  var lat = p.y;
-
-  var delta_lon = adjust_lon(lon - this.long0);
-  var con;
-  var x, y;
-  var sin_phi = Math.sin(lat);
-  var cos_phi = Math.cos(lat);
-
-  if (this.sphere) {
-    var b = cos_phi * Math.sin(delta_lon);
-    if ((Math.abs(Math.abs(b) - 1)) < 0.0000000001) {
-      return (93);
-    }
-    else {
-      x = 0.5 * this.a * this.k0 * Math.log((1 + b) / (1 - b));
-      con = Math.acos(cos_phi * Math.cos(delta_lon) / Math.sqrt(1 - b * b));
-      if (lat < 0) {
-        con = -con;
-      }
-      y = this.a * this.k0 * (con - this.lat0);
-    }
-  }
-  else {
-    var al = cos_phi * delta_lon;
-    var als = Math.pow(al, 2);
-    var c = this.ep2 * Math.pow(cos_phi, 2);
-    var tq = Math.tan(lat);
-    var t = Math.pow(tq, 2);
-    con = 1 - this.es * Math.pow(sin_phi, 2);
-    var n = this.a / Math.sqrt(con);
-    var ml = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, lat);
-
-    x = this.k0 * n * al * (1 + als / 6 * (1 - t + c + als / 20 * (5 - 18 * t + Math.pow(t, 2) + 72 * c - 58 * this.ep2))) + this.x0;
-    y = this.k0 * (ml - this.ml0 + n * tq * (als * (0.5 + als / 24 * (5 - t + 9 * c + 4 * Math.pow(c, 2) + als / 30 * (61 - 58 * t + Math.pow(t, 2) + 600 * c - 330 * this.ep2))))) + this.y0;
-
-  }
-  p.x = x;
-  p.y = y;
-  return p;
-};
-
-/**
-    Transverse Mercator Inverse  -  x/y to long/lat
-  */
-exports.inverse = function(p) {
-  var con, phi;
-  var delta_phi;
-  var i;
-  var max_iter = 6;
-  var lat, lon;
-
-  if (this.sphere) {
-    var f = Math.exp(p.x / (this.a * this.k0));
-    var g = 0.5 * (f - 1 / f);
-    var temp = this.lat0 + p.y / (this.a * this.k0);
-    var h = Math.cos(temp);
-    con = Math.sqrt((1 - h * h) / (1 + g * g));
-    lat = asinz(con);
-    if (temp < 0) {
-      lat = -lat;
-    }
-    if ((g === 0) && (h === 0)) {
-      lon = this.long0;
-    }
-    else {
-      lon = adjust_lon(Math.atan2(g, h) + this.long0);
-    }
-  }
-  else { // ellipsoidal form
-    var x = p.x - this.x0;
-    var y = p.y - this.y0;
-
-    con = (this.ml0 + y / this.k0) / this.a;
-    phi = con;
-    for (i = 0; true; i++) {
-      delta_phi = ((con + this.e1 * Math.sin(2 * phi) - this.e2 * Math.sin(4 * phi) + this.e3 * Math.sin(6 * phi)) / this.e0) - phi;
-      phi += delta_phi;
-      if (Math.abs(delta_phi) <= EPSLN) {
-        break;
-      }
-      if (i >= max_iter) {
-        return (95);
-      }
-    } // for()
-    if (Math.abs(phi) < HALF_PI) {
-      var sin_phi = Math.sin(phi);
-      var cos_phi = Math.cos(phi);
-      var tan_phi = Math.tan(phi);
-      var c = this.ep2 * Math.pow(cos_phi, 2);
-      var cs = Math.pow(c, 2);
-      var t = Math.pow(tan_phi, 2);
-      var ts = Math.pow(t, 2);
-      con = 1 - this.es * Math.pow(sin_phi, 2);
-      var n = this.a / Math.sqrt(con);
-      var r = n * (1 - this.es) / con;
-      var d = x / (n * this.k0);
-      var ds = Math.pow(d, 2);
-      lat = phi - (n * tan_phi * ds / r) * (0.5 - ds / 24 * (5 + 3 * t + 10 * c - 4 * cs - 9 * this.ep2 - ds / 30 * (61 + 90 * t + 298 * c + 45 * ts - 252 * this.ep2 - 3 * cs)));
-      lon = adjust_lon(this.long0 + (d * (1 - ds / 6 * (1 + 2 * t + c - ds / 20 * (5 - 2 * c + 28 * t - 3 * cs + 8 * this.ep2 + 24 * ts))) / cos_phi));
-    }
-    else {
-      lat = HALF_PI * sign(y);
-      lon = this.long0;
-    }
-  }
-  p.x = lon;
-  p.y = lat;
-  return p;
-};
-exports.names = ["Transverse_Mercator", "Transverse Mercator", "tmerc"];
-
-},{"../common/adjust_lon":5,"../common/asinz":6,"../common/e0fn":7,"../common/e1fn":8,"../common/e2fn":9,"../common/e3fn":10,"../common/mlfn":14,"../common/sign":21}],63:[function(_dereq_,module,exports){
-var D2R = 0.01745329251994329577;
-var tmerc = _dereq_('./tmerc');
-exports.dependsOn = 'tmerc';
-exports.init = function() {
-  if (!this.zone) {
-    return;
-  }
-  this.lat0 = 0;
-  this.long0 = ((6 * Math.abs(this.zone)) - 183) * D2R;
-  this.x0 = 500000;
-  this.y0 = this.utmSouth ? 10000000 : 0;
-  this.k0 = 0.9996;
-
-  tmerc.init.apply(this);
-  this.forward = tmerc.forward;
-  this.inverse = tmerc.inverse;
-};
-exports.names = ["Universal Transverse Mercator System", "utm"];
-
-},{"./tmerc":62}],64:[function(_dereq_,module,exports){
-var adjust_lon = _dereq_('../common/adjust_lon');
-var HALF_PI = Math.PI/2;
-var EPSLN = 1.0e-10;
-var asinz = _dereq_('../common/asinz');
-/* Initialize the Van Der Grinten projection
-  ----------------------------------------*/
-exports.init = function() {
-  //this.R = 6370997; //Radius of earth
-  this.R = this.a;
-};
-
-exports.forward = function(p) {
-
-  var lon = p.x;
-  var lat = p.y;
-
-  /* Forward equations
-    -----------------*/
-  var dlon = adjust_lon(lon - this.long0);
-  var x, y;
-
-  if (Math.abs(lat) <= EPSLN) {
-    x = this.x0 + this.R * dlon;
-    y = this.y0;
-  }
-  var theta = asinz(2 * Math.abs(lat / Math.PI));
-  if ((Math.abs(dlon) <= EPSLN) || (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN)) {
-    x = this.x0;
-    if (lat >= 0) {
-      y = this.y0 + Math.PI * this.R * Math.tan(0.5 * theta);
-    }
-    else {
-      y = this.y0 + Math.PI * this.R * -Math.tan(0.5 * theta);
-    }
-    //  return(OK);
-  }
-  var al = 0.5 * Math.abs((Math.PI / dlon) - (dlon / Math.PI));
-  var asq = al * al;
-  var sinth = Math.sin(theta);
-  var costh = Math.cos(theta);
-
-  var g = costh / (sinth + costh - 1);
-  var gsq = g * g;
-  var m = g * (2 / sinth - 1);
-  var msq = m * m;
-  var con = Math.PI * this.R * (al * (g - msq) + Math.sqrt(asq * (g - msq) * (g - msq) - (msq + asq) * (gsq - msq))) / (msq + asq);
-  if (dlon < 0) {
-    con = -con;
-  }
-  x = this.x0 + con;
-  //con = Math.abs(con / (Math.PI * this.R));
-  var q = asq + g;
-  con = Math.PI * this.R * (m * q - al * Math.sqrt((msq + asq) * (asq + 1) - q * q)) / (msq + asq);
-  if (lat >= 0) {
-    //y = this.y0 + Math.PI * this.R * Math.sqrt(1 - con * con - 2 * al * con);
-    y = this.y0 + con;
-  }
-  else {
-    //y = this.y0 - Math.PI * this.R * Math.sqrt(1 - con * con - 2 * al * con);
-    y = this.y0 - con;
-  }
-  p.x = x;
-  p.y = y;
-  return p;
-};
-
-/* Van Der Grinten inverse equations--mapping x,y to lat/long
-  ---------------------------------------------------------*/
-exports.inverse = function(p) {
-  var lon, lat;
-  var xx, yy, xys, c1, c2, c3;
-  var a1;
-  var m1;
-  var con;
-  var th1;
-  var d;
-
-  /* inverse equations
-    -----------------*/
-  p.x -= this.x0;
-  p.y -= this.y0;
-  con = Math.PI * this.R;
-  xx = p.x / con;
-  yy = p.y / con;
-  xys = xx * xx + yy * yy;
-  c1 = -Math.abs(yy) * (1 + xys);
-  c2 = c1 - 2 * yy * yy + xx * xx;
-  c3 = -2 * c1 + 1 + 2 * yy * yy + xys * xys;
-  d = yy * yy / c3 + (2 * c2 * c2 * c2 / c3 / c3 / c3 - 9 * c1 * c2 / c3 / c3) / 27;
-  a1 = (c1 - c2 * c2 / 3 / c3) / c3;
-  m1 = 2 * Math.sqrt(-a1 / 3);
-  con = ((3 * d) / a1) / m1;
-  if (Math.abs(con) > 1) {
-    if (con >= 0) {
-      con = 1;
-    }
-    else {
-      con = -1;
-    }
-  }
-  th1 = Math.acos(con) / 3;
-  if (p.y >= 0) {
-    lat = (-m1 * Math.cos(th1 + Math.PI / 3) - c2 / 3 / c3) * Math.PI;
-  }
-  else {
-    lat = -(-m1 * Math.cos(th1 + Math.PI / 3) - c2 / 3 / c3) * Math.PI;
-  }
-
-  if (Math.abs(xx) < EPSLN) {
-    lon = this.long0;
-  }
-  else {
-    lon = adjust_lon(this.long0 + Math.PI * (xys - 1 + Math.sqrt(1 + 2 * (xx * xx - yy * yy) + xys * xys)) / 2 / xx);
-  }
-
-  p.x = lon;
-  p.y = lat;
-  return p;
-};
-exports.names = ["Van_der_Grinten_I", "VanDerGrinten", "vandg"];
-},{"../common/adjust_lon":5,"../common/asinz":6}],65:[function(_dereq_,module,exports){
-var D2R = 0.01745329251994329577;
-var R2D = 57.29577951308232088;
-var PJD_3PARAM = 1;
-var PJD_7PARAM = 2;
-var datum_transform = _dereq_('./datum_transform');
-var adjust_axis = _dereq_('./adjust_axis');
-var proj = _dereq_('./Proj');
-var toPoint = _dereq_('./common/toPoint');
-module.exports = function transform(source, dest, point) {
-  var wgs84;
-  if (Array.isArray(point)) {
-    point = toPoint(point);
-  }
-  function checkNotWGS(source, dest) {
-    return ((source.datum.datum_type === PJD_3PARAM || source.datum.datum_type === PJD_7PARAM) && dest.datumCode !== "WGS84");
-  }
-
-  // Workaround for datum shifts towgs84, if either source or destination projection is not wgs84
-  if (source.datum && dest.datum && (checkNotWGS(source, dest) || checkNotWGS(dest, source))) {
-    wgs84 = new proj('WGS84');
-    transform(source, wgs84, point);
-    source = wgs84;
-  }
-  // DGR, 2010/11/12
-  if (source.axis !== "enu") {
-    adjust_axis(source, false, point);
-  }
-  // Transform source points to long/lat, if they aren't already.
-  if (source.projName === "longlat") {
-    point.x *= D2R; // convert degrees to radians
-    point.y *= D2R;
-  }
-  else {
-    if (source.to_meter) {
-      point.x *= source.to_meter;
-      point.y *= source.to_meter;
-    }
-    source.inverse(point); // Convert Cartesian to longlat
-  }
-  // Adjust for the prime meridian if necessary
-  if (source.from_greenwich) {
-    point.x += source.from_greenwich;
-  }
-
-  // Convert datums if needed, and if possible.
-  point = datum_transform(source.datum, dest.datum, point);
-
-  // Adjust for the prime meridian if necessary
-  if (dest.from_greenwich) {
-    point.x -= dest.from_greenwich;
-  }
-
-  if (dest.projName === "longlat") {
-    // convert radians to decimal degrees
-    point.x *= R2D;
-    point.y *= R2D;
-  }
-  else { // else project
-    dest.forward(point);
-    if (dest.to_meter) {
-      point.x /= dest.to_meter;
-      point.y /= dest.to_meter;
-    }
-  }
-
-  // DGR, 2010/11/12
-  if (dest.axis !== "enu") {
-    adjust_axis(dest, true, point);
-  }
-
-  return point;
-};
-},{"./Proj":2,"./adjust_axis":3,"./common/toPoint":23,"./datum_transform":31}],66:[function(_dereq_,module,exports){
-var D2R = 0.01745329251994329577;
-var extend = _dereq_('./extend');
-
-function mapit(obj, key, v) {
-  obj[key] = v.map(function(aa) {
-    var o = {};
-    sExpr(aa, o);
-    return o;
-  }).reduce(function(a, b) {
-    return extend(a, b);
-  }, {});
-}
-
-function sExpr(v, obj) {
-  var key;
-  if (!Array.isArray(v)) {
-    obj[v] = true;
-    return;
-  }
-  else {
-    key = v.shift();
-    if (key === 'PARAMETER') {
-      key = v.shift();
-    }
-    if (v.length === 1) {
-      if (Array.isArray(v[0])) {
-        obj[key] = {};
-        sExpr(v[0], obj[key]);
-      }
-      else {
-        obj[key] = v[0];
-      }
-    }
-    else if (!v.length) {
-      obj[key] = true;
-    }
-    else if (key === 'TOWGS84') {
-      obj[key] = v;
-    }
-    else {
-      obj[key] = {};
-      if (['UNIT', 'PRIMEM', 'VERT_DATUM'].indexOf(key) > -1) {
-        obj[key] = {
-          name: v[0].toLowerCase(),
-          convert: v[1]
-        };
-        if (v.length === 3) {
-          obj[key].auth = v[2];
-        }
-      }
-      else if (key === 'SPHEROID') {
-        obj[key] = {
-          name: v[0],
-          a: v[1],
-          rf: v[2]
-        };
-        if (v.length === 4) {
-          obj[key].auth = v[3];
-        }
-      }
-      else if (['GEOGCS', 'GEOCCS', 'DATUM', 'VERT_CS', 'COMPD_CS', 'LOCAL_CS', 'FITTED_CS', 'LOCAL_DATUM'].indexOf(key) > -1) {
-        v[0] = ['name', v[0]];
-        mapit(obj, key, v);
-      }
-      else if (v.every(function(aa) {
-        return Array.isArray(aa);
-      })) {
-        mapit(obj, key, v);
-      }
-      else {
-        sExpr(v, obj[key]);
-      }
-    }
-  }
-}
-
-function rename(obj, params) {
-  var outName = params[0];
-  var inName = params[1];
-  if (!(outName in obj) && (inName in obj)) {
-    obj[outName] = obj[inName];
-    if (params.length === 3) {
-      obj[outName] = params[2](obj[outName]);
-    }
-  }
-}
-
-function d2r(input) {
-  return input * D2R;
-}
-
-function cleanWKT(wkt) {
-  if (wkt.type === 'GEOGCS') {
-    wkt.projName = 'longlat';
-  }
-  else if (wkt.type === 'LOCAL_CS') {
-    wkt.projName = 'identity';
-    wkt.local = true;
-  }
-  else {
-    if (typeof wkt.PROJECTION === "object") {
-      wkt.projName = Object.keys(wkt.PROJECTION)[0];
-    }
-    else {
-      wkt.projName = wkt.PROJECTION;
-    }
-  }
-  if (wkt.UNIT) {
-    wkt.units = wkt.UNIT.name.toLowerCase();
-    if (wkt.units === 'metre') {
-      wkt.units = 'meter';
-    }
-    if (wkt.UNIT.convert) {
-      if (wkt.type === 'GEOGCS') {
-        if (wkt.DATUM && wkt.DATUM.SPHEROID) {
-          wkt.to_meter = parseFloat(wkt.UNIT.convert, 10)*wkt.DATUM.SPHEROID.a;
-        }
-      } else {
-        wkt.to_meter = parseFloat(wkt.UNIT.convert, 10);
-      }
-    }
-  }
-
-  if (wkt.GEOGCS) {
-    //if(wkt.GEOGCS.PRIMEM&&wkt.GEOGCS.PRIMEM.convert){
-    //  wkt.from_greenwich=wkt.GEOGCS.PRIMEM.convert*D2R;
-    //}
-    if (wkt.GEOGCS.DATUM) {
-      wkt.datumCode = wkt.GEOGCS.DATUM.name.toLowerCase();
-    }
-    else {
-      wkt.datumCode = wkt.GEOGCS.name.toLowerCase();
-    }
-    if (wkt.datumCode.slice(0, 2) === 'd_') {
-      wkt.datumCode = wkt.datumCode.slice(2);
-    }
-    if (wkt.datumCode === 'new_zealand_geodetic_datum_1949' || wkt.datumCode === 'new_zealand_1949') {
-      wkt.datumCode = 'nzgd49';
-    }
-    if (wkt.datumCode === "wgs_1984") {
-      if (wkt.PROJECTION === 'Mercator_Auxiliary_Sphere') {
-        wkt.sphere = true;
-      }
-      wkt.datumCode = 'wgs84';
-    }
-    if (wkt.datumCode.slice(-6) === '_ferro') {
-      wkt.datumCode = wkt.datumCode.slice(0, - 6);
-    }
-    if (wkt.datumCode.slice(-8) === '_jakarta') {
-      wkt.datumCode = wkt.datumCode.slice(0, - 8);
-    }
-    if (~wkt.datumCode.indexOf('belge')) {
-      wkt.datumCode = "rnb72";
-    }
-    if (wkt.GEOGCS.DATUM && wkt.GEOGCS.DATUM.SPHEROID) {
-      wkt.ellps = wkt.GEOGCS.DATUM.SPHEROID.name.replace('_19', '').replace(/[Cc]larke\_18/, 'clrk');
-      if (wkt.ellps.toLowerCase().slice(0, 13) === "international") {
-        wkt.ellps = 'intl';
-      }
-
-      wkt.a = wkt.GEOGCS.DATUM.SPHEROID.a;
-      wkt.rf = parseFloat(wkt.GEOGCS.DATUM.SPHEROID.rf, 10);
-    }
-    if (~wkt.datumCode.indexOf('osgb_1936')) {
-      wkt.datumCode = "osgb36";
-    }
-  }
-  if (wkt.b && !isFinite(wkt.b)) {
-    wkt.b = wkt.a;
-  }
-
-  function toMeter(input) {
-    var ratio = wkt.to_meter || 1;
-    return parseFloat(input, 10) * ratio;
-  }
-  var renamer = function(a) {
-    return rename(wkt, a);
-  };
-  var list = [
-    ['standard_parallel_1', 'Standard_Parallel_1'],
-    ['standard_parallel_2', 'Standard_Parallel_2'],
-    ['false_easting', 'False_Easting'],
-    ['false_northing', 'False_Northing'],
-    ['central_meridian', 'Central_Meridian'],
-    ['latitude_of_origin', 'Latitude_Of_Origin'],
-    ['latitude_of_origin', 'Central_Parallel'],
-    ['scale_factor', 'Scale_Factor'],
-    ['k0', 'scale_factor'],
-    ['latitude_of_center', 'Latitude_of_center'],
-    ['lat0', 'latitude_of_center', d2r],
-    ['longitude_of_center', 'Longitude_Of_Center'],
-    ['longc', 'longitude_of_center', d2r],
-    ['x0', 'false_easting', toMeter],
-    ['y0', 'false_northing', toMeter],
-    ['long0', 'central_meridian', d2r],
-    ['lat0', 'latitude_of_origin', d2r],
-    ['lat0', 'standard_parallel_1', d2r],
-    ['lat1', 'standard_parallel_1', d2r],
-    ['lat2', 'standard_parallel_2', d2r],
-    ['alpha', 'azimuth', d2r],
-    ['srsCode', 'name']
-  ];
-  list.forEach(renamer);
-  if (!wkt.long0 && wkt.longc && (wkt.projName === 'Albers_Conic_Equal_Area' || wkt.projName === "Lambert_Azimuthal_Equal_Area")) {
-    wkt.long0 = wkt.longc;
-  }
-  if (!wkt.lat_ts && wkt.lat1 && (wkt.projName === 'Stereographic_South_Pole' || wkt.projName === 'Polar Stereographic (variant B)')) {
-    wkt.lat0 = d2r(wkt.lat1 > 0 ? 90 : -90);
-    wkt.lat_ts = wkt.lat1;
-  }
-}
-module.exports = function(wkt, self) {
-  var lisp = JSON.parse(("," + wkt).replace(/\s*\,\s*([A-Z_0-9]+?)(\[)/g, ',["$1",').slice(1).replace(/\s*\,\s*([A-Z_0-9]+?)\]/g, ',"$1"]').replace(/,\["VERTCS".+/,''));
-  var type = lisp.shift();
-  var name = lisp.shift();
-  lisp.unshift(['name', name]);
-  lisp.unshift(['type', type]);
-  lisp.unshift('output');
-  var obj = {};
-  sExpr(lisp, obj);
-  cleanWKT(obj.output);
-  return extend(self, obj.output);
-};
-
-},{"./extend":34}],67:[function(_dereq_,module,exports){
-
-
-
-/**
- * UTM zones are grouped, and assigned to one of a group of 6
- * sets.
- *
- * {int} @private
- */
-var NUM_100K_SETS = 6;
-
-/**
- * The column letters (for easting) of the lower left value, per
- * set.
- *
- * {string} @private
- */
-var SET_ORIGIN_COLUMN_LETTERS = 'AJSAJS';
-
-/**
- * The row letters (for northing) of the lower left value, per
- * set.
- *
- * {string} @private
- */
-var SET_ORIGIN_ROW_LETTERS = 'AFAFAF';
-
-var A = 65; // A
-var I = 73; // I
-var O = 79; // O
-var V = 86; // V
-var Z = 90; // Z
-
-/**
- * Conversion of lat/lon to MGRS.
- *
- * @param {object} ll Object literal with lat and lon properties on a
- *     WGS84 ellipsoid.
- * @param {int} accuracy Accuracy in digits (5 for 1 m, 4 for 10 m, 3 for
- *      100 m, 2 for 1000 m or 1 for 10000 m). Optional, default is 5.
- * @return {string} the MGRS string for the given location and accuracy.
- */
-exports.forward = function(ll, accuracy) {
-  accuracy = accuracy || 5; // default accuracy 1m
-  return encode(LLtoUTM({
-    lat: ll[1],
-    lon: ll[0]
-  }), accuracy);
-};
-
-/**
- * Conversion of MGRS to lat/lon.
- *
- * @param {string} mgrs MGRS string.
- * @return {array} An array with left (longitude), bottom (latitude), right
- *     (longitude) and top (latitude) values in WGS84, representing the
- *     bounding box for the provided MGRS reference.
- */
-exports.inverse = function(mgrs) {
-  var bbox = UTMtoLL(decode(mgrs.toUpperCase()));
-  if (bbox.lat && bbox.lon) {
-    return [bbox.lon, bbox.lat, bbox.lon, bbox.lat];
-  }
-  return [bbox.left, bbox.bottom, bbox.right, bbox.top];
-};
-
-exports.toPoint = function(mgrs) {
-  var bbox = UTMtoLL(decode(mgrs.toUpperCase()));
-  if (bbox.lat && bbox.lon) {
-    return [bbox.lon, bbox.lat];
-  }
-  return [(bbox.left + bbox.right) / 2, (bbox.top + bbox.bottom) / 2];
-};
-/**
- * Conversion from degrees to radians.
- *
- * @private
- * @param {number} deg the angle in degrees.
- * @return {number} the angle in radians.
- */
-function degToRad(deg) {
-  return (deg * (Math.PI / 180.0));
-}
-
-/**
- * Conversion from radians to degrees.
- *
- * @private
- * @param {number} rad the angle in radians.
- * @return {number} the angle in degrees.
- */
-function radToDeg(rad) {
-  return (180.0 * (rad / Math.PI));
-}
-
-/**
- * Converts a set of Longitude and Latitude co-ordinates to UTM
- * using the WGS84 ellipsoid.
- *
- * @private
- * @param {object} ll Object literal with lat and lon properties
- *     representing the WGS84 coordinate to be converted.
- * @return {object} Object literal containing the UTM value with easting,
- *     northing, zoneNumber and zoneLetter properties, and an optional
- *     accuracy property in digits. Returns null if the conversion failed.
- */
-function LLtoUTM(ll) {
-  var Lat = ll.lat;
-  var Long = ll.lon;
-  var a = 6378137.0; //ellip.radius;
-  var eccSquared = 0.00669438; //ellip.eccsq;
-  var k0 = 0.9996;
-  var LongOrigin;
-  var eccPrimeSquared;
-  var N, T, C, A, M;
-  var LatRad = degToRad(Lat);
-  var LongRad = degToRad(Long);
-  var LongOriginRad;
-  var ZoneNumber;
-  // (int)
-  ZoneNumber = Math.floor((Long + 180) / 6) + 1;
-
-  //Make sure the longitude 180.00 is in Zone 60
-  if (Long === 180) {
-    ZoneNumber = 60;
-  }
-
-  // Special zone for Norway
-  if (Lat >= 56.0 && Lat < 64.0 && Long >= 3.0 && Long < 12.0) {
-    ZoneNumber = 32;
-  }
-
-  // Special zones for Svalbard
-  if (Lat >= 72.0 && Lat < 84.0) {
-    if (Long >= 0.0 && Long < 9.0) {
-      ZoneNumber = 31;
-    }
-    else if (Long >= 9.0 && Long < 21.0) {
-      ZoneNumber = 33;
-    }
-    else if (Long >= 21.0 && Long < 33.0) {
-      ZoneNumber = 35;
-    }
-    else if (Long >= 33.0 && Long < 42.0) {
-      ZoneNumber = 37;
-    }
-  }
-
-  LongOrigin = (ZoneNumber - 1) * 6 - 180 + 3; //+3 puts origin
-  // in middle of
-  // zone
-  LongOriginRad = degToRad(LongOrigin);
-
-  eccPrimeSquared = (eccSquared) / (1 - eccSquared);
-
-  N = a / Math.sqrt(1 - eccSquared * Math.sin(LatRad) * Math.sin(LatRad));
-  T = Math.tan(LatRad) * Math.tan(LatRad);
-  C = eccPrimeSquared * Math.cos(LatRad) * Math.cos(LatRad);
-  A = Math.cos(LatRad) * (LongRad - LongOriginRad);
-
-  M = a * ((1 - eccSquared / 4 - 3 * eccSquared * eccSquared / 64 - 5 * eccSquared * eccSquared * eccSquared / 256) * LatRad - (3 * eccSquared / 8 + 3 * eccSquared * eccSquared / 32 + 45 * eccSquared * eccSquared * eccSquared / 1024) * Math.sin(2 * LatRad) + (15 * eccSquared * eccSquared / 256 + 45 * eccSquared * eccSquared * eccSquared / 1024) * Math.sin(4 * LatRad) - (35 * eccSquared * eccSquared * eccSquared / 3072) * Math.sin(6 * LatRad));
-
-  var UTMEasting = (k0 * N * (A + (1 - T + C) * A * A * A / 6.0 + (5 - 18 * T + T * T + 72 * C - 58 * eccPrimeSquared) * A * A * A * A * A / 120.0) + 500000.0);
-
-  var UTMNorthing = (k0 * (M + N * Math.tan(LatRad) * (A * A / 2 + (5 - T + 9 * C + 4 * C * C) * A * A * A * A / 24.0 + (61 - 58 * T + T * T + 600 * C - 330 * eccPrimeSquared) * A * A * A * A * A * A / 720.0)));
-  if (Lat < 0.0) {
-    UTMNorthing += 10000000.0; //10000000 meter offset for
-    // southern hemisphere
-  }
-
-  return {
-    northing: Math.round(UTMNorthing),
-    easting: Math.round(UTMEasting),
-    zoneNumber: ZoneNumber,
-    zoneLetter: getLetterDesignator(Lat)
-  };
-}
-
-/**
- * Converts UTM coords to lat/long, using the WGS84 ellipsoid. This is a convenience
- * class where the Zone can be specified as a single string eg."60N" which
- * is then broken down into the ZoneNumber and ZoneLetter.
- *
- * @private
- * @param {object} utm An object literal with northing, easting, zoneNumber
- *     and zoneLetter properties. If an optional accuracy property is
- *     provided (in meters), a bounding box will be returned instead of
- *     latitude and longitude.
- * @return {object} An object literal containing either lat and lon values
- *     (if no accuracy was provided), or top, right, bottom and left values
- *     for the bounding box calculated according to the provided accuracy.
- *     Returns null if the conversion failed.
- */
-function UTMtoLL(utm) {
-
-  var UTMNorthing = utm.northing;
-  var UTMEasting = utm.easting;
-  var zoneLetter = utm.zoneLetter;
-  var zoneNumber = utm.zoneNumber;
-  // check the ZoneNummber is valid
-  if (zoneNumber < 0 || zoneNumber > 60) {
-    return null;
-  }
-
-  var k0 = 0.9996;
-  var a = 6378137.0; //ellip.radius;
-  var eccSquared = 0.00669438; //ellip.eccsq;
-  var eccPrimeSquared;
-  var e1 = (1 - Math.sqrt(1 - eccSquared)) / (1 + Math.sqrt(1 - eccSquared));
-  var N1, T1, C1, R1, D, M;
-  var LongOrigin;
-  var mu, phi1Rad;
-
-  // remove 500,000 meter offset for longitude
-  var x = UTMEasting - 500000.0;
-  var y = UTMNorthing;
-
-  // We must know somehow if we are in the Northern or Southern
-  // hemisphere, this is the only time we use the letter So even
-  // if the Zone letter isn't exactly correct it should indicate
-  // the hemisphere correctly
-  if (zoneLetter < 'N') {
-    y -= 10000000.0; // remove 10,000,000 meter offset used
-    // for southern hemisphere
-  }
-
-  // There are 60 zones with zone 1 being at West -180 to -174
-  LongOrigin = (zoneNumber - 1) * 6 - 180 + 3; // +3 puts origin
-  // in middle of
-  // zone
-
-  eccPrimeSquared = (eccSquared) / (1 - eccSquared);
-
-  M = y / k0;
-  mu = M / (a * (1 - eccSquared / 4 - 3 * eccSquared * eccSquared / 64 - 5 * eccSquared * eccSquared * eccSquared / 256));
-
-  phi1Rad = mu + (3 * e1 / 2 - 27 * e1 * e1 * e1 / 32) * Math.sin(2 * mu) + (21 * e1 * e1 / 16 - 55 * e1 * e1 * e1 * e1 / 32) * Math.sin(4 * mu) + (151 * e1 * e1 * e1 / 96) * Math.sin(6 * mu);
-  // double phi1 = ProjMath.radToDeg(phi1Rad);
-
-  N1 = a / Math.sqrt(1 - eccSquared * Math.sin(phi1Rad) * Math.sin(phi1Rad));
-  T1 = Math.tan(phi1Rad) * Math.tan(phi1Rad);
-  C1 = eccPrimeSquared * Math.cos(phi1Rad) * Math.cos(phi1Rad);
-  R1 = a * (1 - eccSquared) / Math.pow(1 - eccSquared * Math.sin(phi1Rad) * Math.sin(phi1Rad), 1.5);
-  D = x / (N1 * k0);
-
-  var lat = phi1Rad - (N1 * Math.tan(phi1Rad) / R1) * (D * D / 2 - (5 + 3 * T1 + 10 * C1 - 4 * C1 * C1 - 9 * eccPrimeSquared) * D * D * D * D / 24 + (61 + 90 * T1 + 298 * C1 + 45 * T1 * T1 - 252 * eccPrimeSquared - 3 * C1 * C1) * D * D * D * D * D * D / 720);
-  lat = radToDeg(lat);
-
-  var lon = (D - (1 + 2 * T1 + C1) * D * D * D / 6 + (5 - 2 * C1 + 28 * T1 - 3 * C1 * C1 + 8 * eccPrimeSquared + 24 * T1 * T1) * D * D * D * D * D / 120) / Math.cos(phi1Rad);
-  lon = LongOrigin + radToDeg(lon);
-
-  var result;
-  if (utm.accuracy) {
-    var topRight = UTMtoLL({
-      northing: utm.northing + utm.accuracy,
-      easting: utm.easting + utm.accuracy,
-      zoneLetter: utm.zoneLetter,
-      zoneNumber: utm.zoneNumber
-    });
-    result = {
-      top: topRight.lat,
-      right: topRight.lon,
-      bottom: lat,
-      left: lon
-    };
-  }
-  else {
-    result = {
-      lat: lat,
-      lon: lon
-    };
-  }
-  return result;
-}
-
-/**
- * Calculates the MGRS letter designator for the given latitude.
- *
- * @private
- * @param {number} lat The latitude in WGS84 to get the letter designator
- *     for.
- * @return {char} The letter designator.
- */
-function getLetterDesignator(lat) {
-  //This is here as an error flag to show that the Latitude is
-  //outside MGRS limits
-  var LetterDesignator = 'Z';
-
-  if ((84 >= lat) && (lat >= 72)) {
-    LetterDesignator = 'X';
-  }
-  else if ((72 > lat) && (lat >= 64)) {
-    LetterDesignator = 'W';
-  }
-  else if ((64 > lat) && (lat >= 56)) {
-    LetterDesignator = 'V';
-  }
-  else if ((56 > lat) && (lat >= 48)) {
-    LetterDesignator = 'U';
-  }
-  else if ((48 > lat) && (lat >= 40)) {
-    LetterDesignator = 'T';
-  }
-  else if ((40 > lat) && (lat >= 32)) {
-    LetterDesignator = 'S';
-  }
-  else if ((32 > lat) && (lat >= 24)) {
-    LetterDesignator = 'R';
-  }
-  else if ((24 > lat) && (lat >= 16)) {
-    LetterDesignator = 'Q';
-  }
-  else if ((16 > lat) && (lat >= 8)) {
-    LetterDesignator = 'P';
-  }
-  else if ((8 > lat) && (lat >= 0)) {
-    LetterDesignator = 'N';
-  }
-  else if ((0 > lat) && (lat >= -8)) {
-    LetterDesignator = 'M';
-  }
-  else if ((-8 > lat) && (lat >= -16)) {
-    LetterDesignator = 'L';
-  }
-  else if ((-16 > lat) && (lat >= -24)) {
-    LetterDesignator = 'K';
-  }
-  else if ((-24 > lat) && (lat >= -32)) {
-    LetterDesignator = 'J';
-  }
-  else if ((-32 > lat) && (lat >= -40)) {
-    LetterDesignator = 'H';
-  }
-  else if ((-40 > lat) && (lat >= -48)) {
-    LetterDesignator = 'G';
-  }
-  else if ((-48 > lat) && (lat >= -56)) {
-    LetterDesignator = 'F';
-  }
-  else if ((-56 > lat) && (lat >= -64)) {
-    LetterDesignator = 'E';
-  }
-  else if ((-64 > lat) && (lat >= -72)) {
-    LetterDesignator = 'D';
-  }
-  else if ((-72 > lat) && (lat >= -80)) {
-    LetterDesignator = 'C';
-  }
-  return LetterDesignator;
-}
-
-/**
- * Encodes a UTM location as MGRS string.
- *
- * @private
- * @param {object} utm An object literal with easting, northing,
- *     zoneLetter, zoneNumber
- * @param {number} accuracy Accuracy in digits (1-5).
- * @return {string} MGRS string for the given UTM location.
- */
-function encode(utm, accuracy) {
-  // prepend with leading zeroes
-  var seasting = "00000" + utm.easting,
-    snorthing = "00000" + utm.northing;
-
-  return utm.zoneNumber + utm.zoneLetter + get100kID(utm.easting, utm.northing, utm.zoneNumber) + seasting.substr(seasting.length - 5, accuracy) + snorthing.substr(snorthing.length - 5, accuracy);
-}
-
-/**
- * Get the two letter 100k designator for a given UTM easting,
- * northing and zone number value.
- *
- * @private
- * @param {number} easting
- * @param {number} northing
- * @param {number} zoneNumber
- * @return the two letter 100k designator for the given UTM location.
- */
-function get100kID(easting, northing, zoneNumber) {
-  var setParm = get100kSetForZone(zoneNumber);
-  var setColumn = Math.floor(easting / 100000);
-  var setRow = Math.floor(northing / 100000) % 20;
-  return getLetter100kID(setColumn, setRow, setParm);
-}
-
-/**
- * Given a UTM zone number, figure out the MGRS 100K set it is in.
- *
- * @private
- * @param {number} i An UTM zone number.
- * @return {number} the 100k set the UTM zone is in.
- */
-function get100kSetForZone(i) {
-  var setParm = i % NUM_100K_SETS;
-  if (setParm === 0) {
-    setParm = NUM_100K_SETS;
-  }
-
-  return setParm;
-}
-
-/**
- * Get the two-letter MGRS 100k designator given information
- * translated from the UTM northing, easting and zone number.
- *
- * @private
- * @param {number} column the column index as it relates to the MGRS
- *        100k set spreadsheet, created from the UTM easting.
- *        Values are 1-8.
- * @param {number} row the row index as it relates to the MGRS 100k set
- *        spreadsheet, created from the UTM northing value. Values
- *        are from 0-19.
- * @param {number} parm the set block, as it relates to the MGRS 100k set
- *        spreadsheet, created from the UTM zone. Values are from
- *        1-60.
- * @return two letter MGRS 100k code.
- */
-function getLetter100kID(column, row, parm) {
-  // colOrigin and rowOrigin are the letters at the origin of the set
-  var index = parm - 1;
-  var colOrigin = SET_ORIGIN_COLUMN_LETTERS.charCodeAt(index);
-  var rowOrigin = SET_ORIGIN_ROW_LETTERS.charCodeAt(index);
-
-  // colInt and rowInt are the letters to build to return
-  var colInt = colOrigin + column - 1;
-  var rowInt = rowOrigin + row;
-  var rollover = false;
-
-  if (colInt > Z) {
-    colInt = colInt - Z + A - 1;
-    rollover = true;
-  }
-
-  if (colInt === I || (colOrigin < I && colInt > I) || ((colInt > I || colOrigin < I) && rollover)) {
-    colInt++;
-  }
-
-  if (colInt === O || (colOrigin < O && colInt > O) || ((colInt > O || colOrigin < O) && rollover)) {
-    colInt++;
-
-    if (colInt === I) {
-      colInt++;
-    }
-  }
-
-  if (colInt > Z) {
-    colInt = colInt - Z + A - 1;
-  }
-
-  if (rowInt > V) {
-    rowInt = rowInt - V + A - 1;
-    rollover = true;
-  }
-  else {
-    rollover = false;
-  }
-
-  if (((rowInt === I) || ((rowOrigin < I) && (rowInt > I))) || (((rowInt > I) || (rowOrigin < I)) && rollover)) {
-    rowInt++;
-  }
-
-  if (((rowInt === O) || ((rowOrigin < O) && (rowInt > O))) || (((rowInt > O) || (rowOrigin < O)) && rollover)) {
-    rowInt++;
-
-    if (rowInt === I) {
-      rowInt++;
-    }
-  }
-
-  if (rowInt > V) {
-    rowInt = rowInt - V + A - 1;
-  }
-
-  var twoLetter = String.fromCharCode(colInt) + String.fromCharCode(rowInt);
-  return twoLetter;
-}
-
-/**
- * Decode the UTM parameters from a MGRS string.
- *
- * @private
- * @param {string} mgrsString an UPPERCASE coordinate string is expected.
- * @return {object} An object literal with easting, northing, zoneLetter,
- *     zoneNumber and accuracy (in meters) properties.
- */
-function decode(mgrsString) {
-
-  if (mgrsString && mgrsString.length === 0) {
-    throw ("MGRSPoint coverting from nothing");
-  }
-
-  var length = mgrsString.length;
-
-  var hunK = null;
-  var sb = "";
-  var testChar;
-  var i = 0;
-
-  // get Zone number
-  while (!(/[A-Z]/).test(testChar = mgrsString.charAt(i))) {
-    if (i >= 2) {
-      throw ("MGRSPoint bad conversion from: " + mgrsString);
-    }
-    sb += testChar;
-    i++;
-  }
-
-  var zoneNumber = parseInt(sb, 10);
-
-  if (i === 0 || i + 3 > length) {
-    // A good MGRS string has to be 4-5 digits long,
-    // ##AAA/#AAA at least.
-    throw ("MGRSPoint bad conversion from: " + mgrsString);
-  }
-
-  var zoneLetter = mgrsString.charAt(i++);
-
-  // Should we check the zone letter here? Why not.
-  if (zoneLetter <= 'A' || zoneLetter === 'B' || zoneLetter === 'Y' || zoneLetter >= 'Z' || zoneLetter === 'I' || zoneLetter === 'O') {
-    throw ("MGRSPoint zone letter " + zoneLetter + " not handled: " + mgrsString);
-  }
-
-  hunK = mgrsString.substring(i, i += 2);
-
-  var set = get100kSetForZone(zoneNumber);
-
-  var east100k = getEastingFromChar(hunK.charAt(0), set);
-  var north100k = getNorthingFromChar(hunK.charAt(1), set);
-
-  // We have a bug where the northing may be 2000000 too low.
-  // How
-  // do we know when to roll over?
-
-  while (north100k < getMinNorthing(zoneLetter)) {
-    north100k += 2000000;
-  }
-
-  // calculate the char index for easting/northing separator
-  var remainder = length - i;
-
-  if (remainder % 2 !== 0) {
-    throw ("MGRSPoint has to have an even number \nof digits after the zone letter and two 100km letters - front \nhalf for easting meters, second half for \nnorthing meters" + mgrsString);
-  }
-
-  var sep = remainder / 2;
-
-  var sepEasting = 0.0;
-  var sepNorthing = 0.0;
-  var accuracyBonus, sepEastingString, sepNorthingString, easting, northing;
-  if (sep > 0) {
-    accuracyBonus = 100000.0 / Math.pow(10, sep);
-    sepEastingString = mgrsString.substring(i, i + sep);
-    sepEasting = parseFloat(sepEastingString) * accuracyBonus;
-    sepNorthingString = mgrsString.substring(i + sep);
-    sepNorthing = parseFloat(sepNorthingString) * accuracyBonus;
-  }
-
-  easting = sepEasting + east100k;
-  northing = sepNorthing + north100k;
-
-  return {
-    easting: easting,
-    northing: northing,
-    zoneLetter: zoneLetter,
-    zoneNumber: zoneNumber,
-    accuracy: accuracyBonus
-  };
-}
-
-/**
- * Given the first letter from a two-letter MGRS 100k zone, and given the
- * MGRS table set for the zone number, figure out the easting value that
- * should be added to the other, secondary easting value.
- *
- * @private
- * @param {char} e The first letter from a two-letter MGRS 100´k zone.
- * @param {number} set The MGRS table set for the zone number.
- * @return {number} The easting value for the given letter and set.
- */
-function getEastingFromChar(e, set) {
-  // colOrigin is the letter at the origin of the set for the
-  // column
-  var curCol = SET_ORIGIN_COLUMN_LETTERS.charCodeAt(set - 1);
-  var eastingValue = 100000.0;
-  var rewindMarker = false;
-
-  while (curCol !== e.charCodeAt(0)) {
-    curCol++;
-    if (curCol === I) {
-      curCol++;
-    }
-    if (curCol === O) {
-      curCol++;
-    }
-    if (curCol > Z) {
-      if (rewindMarker) {
-        throw ("Bad character: " + e);
-      }
-      curCol = A;
-      rewindMarker = true;
-    }
-    eastingValue += 100000.0;
-  }
-
-  return eastingValue;
-}
-
-/**
- * Given the second letter from a two-letter MGRS 100k zone, and given the
- * MGRS table set for the zone number, figure out the northing value that
- * should be added to the other, secondary northing value. You have to
- * remember that Northings are determined from the equator, and the vertical
- * cycle of letters mean a 2000000 additional northing meters. This happens
- * approx. every 18 degrees of latitude. This method does *NOT* count any
- * additional northings. You have to figure out how many 2000000 meters need
- * to be added for the zone letter of the MGRS coordinate.
- *
- * @private
- * @param {char} n Second letter of the MGRS 100k zone
- * @param {number} set The MGRS table set number, which is dependent on the
- *     UTM zone number.
- * @return {number} The northing value for the given letter and set.
- */
-function getNorthingFromChar(n, set) {
-
-  if (n > 'V') {
-    throw ("MGRSPoint given invalid Northing " + n);
-  }
-
-  // rowOrigin is the letter at the origin of the set for the
-  // column
-  var curRow = SET_ORIGIN_ROW_LETTERS.charCodeAt(set - 1);
-  var northingValue = 0.0;
-  var rewindMarker = false;
-
-  while (curRow !== n.charCodeAt(0)) {
-    curRow++;
-    if (curRow === I) {
-      curRow++;
-    }
-    if (curRow === O) {
-      curRow++;
-    }
-    // fixing a bug making whole application hang in this loop
-    // when 'n' is a wrong character
-    if (curRow > V) {
-      if (rewindMarker) { // making sure that this loop ends
-        throw ("Bad character: " + n);
-      }
-      curRow = A;
-      rewindMarker = true;
-    }
-    northingValue += 100000.0;
-  }
-
-  return northingValue;
-}
-
-/**
- * The function getMinNorthing returns the minimum northing value of a MGRS
- * zone.
- *
- * Ported from Geotrans' c Lattitude_Band_Value structure table.
- *
- * @private
- * @param {char} zoneLetter The MGRS zone to get the min northing for.
- * @return {number}
- */
-function getMinNorthing(zoneLetter) {
-  var northing;
-  switch (zoneLetter) {
-  case 'C':
-    northing = 1100000.0;
-    break;
-  case 'D':
-    northing = 2000000.0;
-    break;
-  case 'E':
-    northing = 2800000.0;
-    break;
-  case 'F':
-    northing = 3700000.0;
-    break;
-  case 'G':
-    northing = 4600000.0;
-    break;
-  case 'H':
-    northing = 5500000.0;
-    break;
-  case 'J':
-    northing = 6400000.0;
-    break;
-  case 'K':
-    northing = 7300000.0;
-    break;
-  case 'L':
-    northing = 8200000.0;
-    break;
-  case 'M':
-    northing = 9100000.0;
-    break;
-  case 'N':
-    northing = 0.0;
-    break;
-  case 'P':
-    northing = 800000.0;
-    break;
-  case 'Q':
-    northing = 1700000.0;
-    break;
-  case 'R':
-    northing = 2600000.0;
-    break;
-  case 'S':
-    northing = 3500000.0;
-    break;
-  case 'T':
-    northing = 4400000.0;
-    break;
-  case 'U':
-    northing = 5300000.0;
-    break;
-  case 'V':
-    northing = 6200000.0;
-    break;
-  case 'W':
-    northing = 7000000.0;
-    break;
-  case 'X':
-    northing = 7900000.0;
-    break;
-  default:
-    northing = -1.0;
-  }
-  if (northing >= 0.0) {
-    return northing;
-  }
-  else {
-    throw ("Invalid zone letter: " + zoneLetter);
-  }
-
-}
-
-},{}],68:[function(_dereq_,module,exports){
-module.exports={
-  "name": "proj4",
-  "version": "2.3.14",
-  "description": "Proj4js is a JavaScript library to transform point coordinates from one coordinate system to another, including datum transformations.",
-  "main": "lib/index.js",
-  "directories": {
-    "test": "test",
-    "doc": "docs"
-  },
-  "scripts": {
-    "test": "./node_modules/istanbul/lib/cli.js test ./node_modules/mocha/bin/_mocha test/test.js"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/proj4js/proj4js.git"
-  },
-  "author": "",
-  "license": "MIT",
-  "jam": {
-    "main": "dist/proj4.js",
-    "include": [
-      "dist/proj4.js",
-      "README.md",
-      "AUTHORS",
-      "LICENSE.md"
-    ]
-  },
-  "devDependencies": {
-    "grunt-cli": "~0.1.13",
-    "grunt": "~0.4.2",
-    "grunt-contrib-connect": "~0.6.0",
-    "grunt-contrib-jshint": "~0.8.0",
-    "chai": "~1.8.1",
-    "mocha": "~1.17.1",
-    "grunt-mocha-phantomjs": "~0.4.0",
-    "browserify": "~12.0.1",
-    "grunt-browserify": "~4.0.1",
-    "grunt-contrib-uglify": "~0.11.1",
-    "curl": "git://github.com/cujojs/curl.git",
-    "istanbul": "~0.2.4",
-    "tin": "~0.4.0"
-  },
-  "dependencies": {
-    "mgrs": "~0.0.2"
-  }
-}
-},{}],"./includedProjections":[function(_dereq_,module,exports){
-module.exports=_dereq_('hTEDpn');
-},{}],"hTEDpn":[function(_dereq_,module,exports){
-var projs = [
- _dereq_('./lib/projections/tmerc'),
-	_dereq_('./lib/projections/utm'),
-	_dereq_('./lib/projections/sterea'),
-	_dereq_('./lib/projections/stere'),
-	_dereq_('./lib/projections/somerc'),
-	_dereq_('./lib/projections/omerc'),
-	_dereq_('./lib/projections/lcc'),
-	_dereq_('./lib/projections/krovak'),
-	_dereq_('./lib/projections/cass'),
-	_dereq_('./lib/projections/laea'),
-	_dereq_('./lib/projections/aea'),
-	_dereq_('./lib/projections/gnom'),
-	_dereq_('./lib/projections/cea'),
-	_dereq_('./lib/projections/eqc'),
-	_dereq_('./lib/projections/poly'),
-	_dereq_('./lib/projections/nzmg'),
-	_dereq_('./lib/projections/mill'),
-	_dereq_('./lib/projections/sinu'),
-	_dereq_('./lib/projections/moll'),
-	_dereq_('./lib/projections/eqdc'),
-	_dereq_('./lib/projections/vandg'),
-	_dereq_('./lib/projections/aeqd')
-];
-module.exports = function(proj4){
- projs.forEach(function(proj){
-   proj4.Proj.projections.add(proj);
- });
-}
-},{"./lib/projections/aea":40,"./lib/projections/aeqd":41,"./lib/projections/cass":42,"./lib/projections/cea":43,"./lib/projections/eqc":44,"./lib/projections/eqdc":45,"./lib/projections/gnom":47,"./lib/projections/krovak":48,"./lib/projections/laea":49,"./lib/projections/lcc":50,"./lib/projections/mill":53,"./lib/projections/moll":54,"./lib/projections/nzmg":55,"./lib/projections/omerc":56,"./lib/projections/poly":57,"./lib/projections/sinu":58,"./lib/projections/somerc":59,"./lib/projections/stere":60,"./lib/projections/sterea":61,"./lib/projections/tmerc":62,"./lib/projections/utm":63,"./lib/projections/vandg":64}]},{},[36])
-(36)
-});
\ No newline at end of file
diff --git a/xcxMapWzzzz/lid/proj4leaflet.js b/xcxMapWzzzz/lid/proj4leaflet.js
deleted file mode 100644
index cb42921..0000000
--- a/xcxMapWzzzz/lid/proj4leaflet.js
+++ /dev/null
@@ -1,263 +0,0 @@
-(function (factory) {
-	var L, proj4;
-	if (typeof define === 'function' && define.amd) {
-		// AMD
-		define(['leaflet', 'proj4'], factory);
-	} else if (typeof module === 'object' && typeof module.exports === "object") {
-		// Node/CommonJS
-		L = require('leaflet');
-		proj4 = require('proj4');
-		module.exports = factory(L, proj4);
-	} else {
-		// Browser globals
-		if (typeof window.L === 'undefined' || typeof window.proj4 === 'undefined')
-			throw 'Leaflet and proj4 must be loaded first';
-		factory(window.L, window.proj4);
-	}
-}(function (L, proj4) {
-
-	L.Proj = {};
-
-	L.Proj._isProj4Obj = function(a) {
-		return (typeof a.inverse !== 'undefined' &&
-			typeof a.forward !== 'undefined');
-	};
-
-	L.Proj.Projection = L.Class.extend({
-		initialize: function(code, def, bounds) {
-			var isP4 = L.Proj._isProj4Obj(code);
-			this._proj = isP4 ? code : this._projFromCodeDef(code, def);
-			this.bounds = isP4 ? def : bounds;
-		},
-
-		project: function (latlng) {
-			var point = this._proj.forward([latlng.lng, latlng.lat]);
-			return new L.Point(point[0], point[1]);
-		},
-
-		unproject: function (point, unbounded) {
-			var point2 = this._proj.inverse([point.x, point.y]);
-			return new L.LatLng(point2[1], point2[0], unbounded);
-		},
-
-		_projFromCodeDef: function(code, def) {
-			if (def) {
-				proj4.defs(code, def);
-			} else if (proj4.defs[code] === undefined) {
-				var urn = code.split(':');
-				if (urn.length > 3) {
-					code = urn[urn.length - 3] + ':' + urn[urn.length - 1];
-				}
-				if (proj4.defs[code] === undefined) {
-					throw 'No projection definition for code ' + code;
-				}
-			}
-
-			return proj4(code);
-		}
-	});
-
-	L.Proj.CRS = L.Class.extend({
-		includes: L.CRS,
-
-		options: {
-			transformation: new L.Transformation(1, 0, -1, 0)
-		},
-
-		initialize: function(a, b, c) {
-			var code,
-			    proj,
-			    def,
-			    options;
-
-			if (L.Proj._isProj4Obj(a)) {
-				proj = a;
-				code = proj.srsCode;
-				options = b || {};
-
-				this.projection = new L.Proj.Projection(proj, options.bounds);
-			} else {
-				code = a;
-				def = b;
-				options = c || {};
-				this.projection = new L.Proj.Projection(code, def, options.bounds);
-			}
-
-			L.Util.setOptions(this, options);
-			this.code = code;
-			this.transformation = this.options.transformation;
-
-			if (this.options.origin) {
-				this.transformation =
-					new L.Transformation(1, -this.options.origin[0],
-						-1, this.options.origin[1]);
-			}
-
-			if (this.options.scales) {
-				this._scales = this.options.scales;
-			} else if (this.options.resolutions) {
-				this._scales = [];
-				for (var i = this.options.resolutions.length - 1; i >= 0; i--) {
-					if (this.options.resolutions[i]) {
-						this._scales[i] = 1 / this.options.resolutions[i];
-					}
-				}
-			}
-
-			this.infinite = !this.options.bounds;
-
-		},
-
-		scale: function(zoom) {
-			var iZoom = Math.floor(zoom),
-				baseScale,
-				nextScale,
-				scaleDiff,
-				zDiff;
-			if (zoom === iZoom) {
-				return this._scales[zoom];
-			} else {
-				// Non-integer zoom, interpolate
-				baseScale = this._scales[iZoom];
-				nextScale = this._scales[iZoom + 1];
-				scaleDiff = nextScale - baseScale;
-				zDiff = (zoom - iZoom);
-				return baseScale + scaleDiff * zDiff;
-			}
-		},
-
-		zoom: function(scale) {
-			// Find closest number in this._scales, down
-			var downScale = this._closestElement(this._scales, scale),
-				downZoom = this._scales.indexOf(downScale),
-				nextScale,
-				nextZoom,
-				scaleDiff;
-			// Check if scale is downScale => return array index
-			if (scale === downScale) {
-				return downZoom;
-			}
-			// Interpolate
-			nextZoom = downZoom + 1;
-			nextScale = this._scales[nextZoom];
-			if (nextScale === undefined) {
-				return Infinity;
-			}
-			scaleDiff = nextScale - downScale;
-			return (scale - downScale) / scaleDiff + downZoom;
-		},
-
-		distance: L.CRS.Earth.distance,
-
-		R: L.CRS.Earth.R,
-
-		/* Get the closest lowest element in an array */
-		_closestElement: function(array, element) {
-			var low;
-			for (var i = array.length; i--;) {
-				if (array[i] <= element && (low === undefined || low < array[i])) {
-					low = array[i];
-				}
-			}
-			return low;
-		}
-	});
-
-	L.Proj.GeoJSON = L.GeoJSON.extend({
-		initialize: function(geojson, options) {
-			this._callLevel = 0;
-			L.GeoJSON.prototype.initialize.call(this, geojson, options);
-		},
-
-		addData: function(geojson) {
-			var crs;
-
-			if (geojson) {
-				if (geojson.crs && geojson.crs.type === 'name') {
-					crs = new L.Proj.CRS(geojson.crs.properties.name);
-				} else if (geojson.crs && geojson.crs.type) {
-					crs = new L.Proj.CRS(geojson.crs.type + ':' + geojson.crs.properties.code);
-				}
-
-				if (crs !== undefined) {
-					this.options.coordsToLatLng = function(coords) {
-						var point = L.point(coords[0], coords[1]);
-						return crs.projection.unproject(point);
-					};
-				}
-			}
-
-			// Base class' addData might call us recursively, but
-			// CRS shouldn't be cleared in that case, since CRS applies
-			// to the whole GeoJSON, inluding sub-features.
-			this._callLevel++;
-			try {
-				L.GeoJSON.prototype.addData.call(this, geojson);
-			} finally {
-				this._callLevel--;
-				if (this._callLevel === 0) {
-					delete this.options.coordsToLatLng;
-				}
-			}
-		}
-	});
-
-	L.Proj.geoJson = function(geojson, options) {
-		return new L.Proj.GeoJSON(geojson, options);
-	};
-
-	L.Proj.ImageOverlay = L.ImageOverlay.extend({
-		initialize: function (url, bounds, options) {
-			L.ImageOverlay.prototype.initialize.call(this, url, null, options);
-			this._projectedBounds = bounds;
-		},
-
-		// Danger ahead: Overriding internal methods in Leaflet.
-		// Decided to do this rather than making a copy of L.ImageOverlay
-		// and doing very tiny modifications to it.
-		// Future will tell if this was wise or not.
-		_animateZoom: function (event) {
-			var scale = this._map.getZoomScale(event.zoom);
-			var northWest = L.point(this._projectedBounds.min.x, this._projectedBounds.max.y);
-			var offset = this._projectedToNewLayerPoint(northWest, event.zoom, event.center);
-
-			L.DomUtil.setTransform(this._image, offset, scale);
-		},
-
-		_reset: function () {
-			var zoom = this._map.getZoom();
-			var pixelOrigin = this._map.getPixelOrigin();
-			var bounds = L.bounds(
-				this._transform(this._projectedBounds.min, zoom)._subtract(pixelOrigin),
-				this._transform(this._projectedBounds.max, zoom)._subtract(pixelOrigin)
-			);
-			var size = bounds.getSize();
-
-			L.DomUtil.setPosition(this._image, bounds.min);
-			this._image.style.width = size.x + 'px';
-			this._image.style.height = size.y + 'px';
-		},
-
-		_projectedToNewLayerPoint: function (point, zoom, center) {
-			var viewHalf = this._map.getSize()._divideBy(2);
-			var newTopLeft = this._map.project(center, zoom)._subtract(viewHalf)._round();
-			var topLeft = newTopLeft.add(this._map._getMapPanePos());
-
-			return this._transform(point, zoom)._subtract(topLeft);
-		},
-
-		_transform: function (point, zoom) {
-			var crs = this._map.options.crs;
-			var transformation = crs.transformation;
-			var scale = crs.scale(zoom);
-
-			return transformation.transform(point, scale);
-		}
-	});
-
-	L.Proj.imageOverlay = function (url, bounds, options) {
-		return new L.Proj.ImageOverlay(url, bounds, options);
-	};
-
-	return L.Proj;
-}));
diff --git a/xcxMapWzzzz/popup/user.html b/xcxMapWzzzz/popup/user.html
deleted file mode 100644
index 5e131bc..0000000
--- a/xcxMapWzzzz/popup/user.html
+++ /dev/null
@@ -1,37 +0,0 @@
-<!DOCTYPE html>
-<html>
-
-<head>
-    <meta charset="utf-8" />
-    <title>popup</title>
-    <!-- Vue -->
-	<script src="https://cdn.jsdelivr.net/npm/vue@2.6.12"></script>
-</head>
-
-<body>
-    <div id="popup">
-        <!-- 从layui传值给iframe 的占位input -->
-        <input type="text" id="user" ref="user" style="display:none">
-        46476978--
-        -{{ourData.title}}
-    </div>
-    <script>
-        var me = new Vue({
-            el: '#popup',
-            data: {
-                ourData: '',
-                oldtime: '',
-            },
-            mounted() {
-                this.oldtime = setTimeout(() => {//需要同步数据处理,input中value在mounted中没有直接传值
-                    clearTimeout(this.oldtime);
-                    this.ourData = JSON.parse(this.$refs.user.value);//json对象转js对象
-                    console.log(this.ourData,2)
-                }, 100);
-            }
-        })
-
-    </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/xcxMapWzzzz/xcxmap.html b/xcxMapWzzzz/xcxmap.html
deleted file mode 100644
index fb640ea..0000000
--- a/xcxMapWzzzz/xcxmap.html
+++ /dev/null
@@ -1,136 +0,0 @@
-<!DOCTYPE html>
-<html>
-
-<head>
-    <meta charset="utf-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
-    <title>地图</title>
-    <!-- vue -->
-    <script src="https://cdn.jsdelivr.net/npm/vue@2.6.12"></script>
-
-    <!-- leaflet支持 -->
-    <script src="./lid/leaflet.js"></script>
-    <link rel="stylesheet" href="./lid/leaflet.css" />
-
-    <!-- leaflet聚合支持 -->
-    <link rel="stylesheet" href="./lid/MarkerCluster.css" />
-    <link rel="stylesheet" href="./lid/MarkerCluster.Default.css" />
-    <script src="./lid/leaflet.markercluster-src.js"></script>
-
-    <!-- layui支持 -->
-    <!-- <link rel="stylesheet" href="../map/lib/layui/css/layui.css" media="all"> -->
-    <!-- <script src="../map/lib/layui/layui.js" charset="utf-8"></script> -->
-
-    <!-- 百度地图api -->
-    <script type="text/javascript" src="https://mapapi.qq.com/web/mapComponents/geoLocation/v/geolocation.min.js"></script>
-
-    <!-- axios支持 -->
-    <script src="../map/lib/axios.js"></script>
-
-    <!-- elementui -->
-    <script src="../map/lib/elementUi.js"></script>
-    <!-- <link rel="stylesheet" href="../map/lib/elementUi.css"> -->
-    <link rel="stylesheet" href="./css/elementUI.css">
-    <!-- <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css"> -->
-
-    <!-- jqurey -->
-    <script src="../map/lib/jquery.js" charset="utf-8"></script>
-
-    <!-- 微信支持 -->
-    <script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.4.0.js"></script>
-    <!-- <script src="./js/wx.js"></script> -->
-
-    <!-- uni 的 SDK -->
-    <script type="text/javascript" src="https://js.cdn.aliyun.dcloud.net.cn/dev/uni-app/uni.webview.1.5.2.js"></script>
-
-    <!-- omyself支持 -->
-    <link rel="stylesheet" href="./css/body.css" />
-
-    <!-- myDomMove -->
-    <script src="./js/move.js"></script>
-    <!-- sha1加密 -->
-    <!-- <script src="./js/sha1.js"></script> -->
-    <script src="http://pv.sohu.com/cityjson?ie=utf-8"></script>
-</head>
-
-<body>
-    <div id="mapVue">
-        <div class="dingwei" @click="locationMap">
-            <img style="width: 80%;height: 80%;" src="./img/dingwei.png" alt="">
-        </div>
-        <div id="map">
-           
-        </div>
-        <div id="seedata" style='display: none'>
-            <div class="main">
-                <div class="div-alarm-people">
-                    <div class="f-m-once">
-                        <img class="f-m-o-t-img" src="./img/people1.png" alt="">
-                        <div class="f-m-o-title">接警人</div>
-                        <div class="f-m-o-center">{{seedata.alarmPeople}}</div>
-                    </div>
-                    <div class="f-m-once-phone-number">
-                        <img class="f-m-o-t-img" src="./img/phone.png" alt="">
-                        <div class="f-m-o-title">联系电话</div>
-                        <div class="f-m-o-center">{{seedata.phoneNumber}}</div>
-                    </div>
-                </div>
-
-                <div class="interval"></div>
-
-                <div class="div-alarm-people">
-                    <div class="f-m-once">
-                        <img class="f-m-o-t-img" src="./img/alarm.png" alt="">
-                        <div class="f-m-o-title">报警时间</div>
-                        <div class="f-m-o-center">{{seedata.alarmTime}}</div>
-                    </div>
-                    <div class="f-m-once-alarm-type">
-                        <img class="f-m-o-t-img" src="./img/type1.png" alt="">
-                        <div class="f-m-o-title">报警类型</div>
-                        <div class="f-m-o-center">{{seedata.alarmType}}</div>
-                    </div>
-                </div>
-                <div class="interval"></div>
-
-                <div class="div-alarm-people">
-                    <div class="f-m-once-desc">
-                        <img class="f-m-o-t-img-desc" src="./img/desc2.png" alt="">
-                        <div class="f-m-o-title-desc">备注</div>
-                        <div class="f-m-o-center-desc">{{seedata.bz}}</div>
-                    </div>
-                </div>
-
-                <div class="interval"></div>
-                <div class="but">
-                    <div class="buta" @click="shipingClick(true)">
-                        <img class="b-b-img" src="./img/shiping.png" alt="">
-                    </div>
-                    <!-- 加上display: none不会闪烁 -->
-                    <div class="shipingPopup" v-show="shipingPopupShow" style="display: none;">
-                        <div class="s-p-main">
-                            <div @click="shipingClick(false)">
-                                <img src="./img/gaunbi.png" alt="" class="s-p-gaunbi">
-                            </div>
-                            <!-- <video style="height: 550px; width: 100%" controls="controls"
-								id="real_video_shipingPopup" src=""></video> -->
-                            <video style="height: 550px; width: 100%" controls="controls" :src="shipingM3u8Url"></video>
-                        </div>
-                    </div>
-                    <div class="butb" @click="resultFeedbackClick">结果反馈</div>
-
-                    <div class="butc">
-                        <img class="b-b-img" src="./img/huifang.png" alt="">
-                        <!-- <div class="huifangPopup">
-							回放
-						</div> -->
-                    </div>
-                </div>
-            </div>
-        </div>
-    </div>
-    <!-- vue渲染 -->
-    <script src="./js/vueMain.js"></script>
-</body>
-
-</html>
\ No newline at end of file

--
Gitblit v1.9.3